1 drivers/scsi/Kconfig | 2
2 drivers/scsi/Makefile | 1
3 drivers/scsi/qla2xxx/Kconfig | 37
4 drivers/scsi/qla2xxx/Makefile | 56
5 drivers/scsi/qla2xxx/README.qla2x00 | 744 ++++
6 drivers/scsi/qla2xxx/exioct.h | 947 +++++
7 drivers/scsi/qla2xxx/exioctln.h | 255 +
8 drivers/scsi/qla2xxx/inioct.h | 129
9 drivers/scsi/qla2xxx/ql2100tp_fw.c | 4866 ++++++++++++++++++++++++++
10 drivers/scsi/qla2xxx/ql2200ip_fw.c | 5884 ++++++++++++++++++++++++++++++++
11 drivers/scsi/qla2xxx/ql2300tpx_fw.c | 6494 +++++++++++++++++++++++++++++++++++
12 drivers/scsi/qla2xxx/qla_cfg.c | 2780 +++++++++++++++
13 drivers/scsi/qla2xxx/qla_cfg.h | 181
14 drivers/scsi/qla2xxx/qla_cfgln.c | 726 +++
15 drivers/scsi/qla2xxx/qla_dbg.c | 1000 +++++
16 drivers/scsi/qla2xxx/qla_dbg.h | 138
17 drivers/scsi/qla2xxx/qla_def.h | 2484 +++++++++++++
18 drivers/scsi/qla2xxx/qla_fo.c | 1681 +++++++++
19 drivers/scsi/qla2xxx/qla_fo.cfg | 31
20 drivers/scsi/qla2xxx/qla_fo.h | 75
21 drivers/scsi/qla2xxx/qla_gbl.h | 395 ++
22 drivers/scsi/qla2xxx/qla_inioct.c | 495 ++
23 drivers/scsi/qla2xxx/qla_init.c | 5945 ++++++++++++++++++++++++++++++++
24 drivers/scsi/qla2xxx/qla_inline.h | 375 ++
25 drivers/scsi/qla2xxx/qla_iocb.c | 1276 ++++++
26 drivers/scsi/qla2xxx/qla_ip.c | 1769 +++++++++
27 drivers/scsi/qla2xxx/qla_ip.h | 420 ++
28 drivers/scsi/qla2xxx/qla_isr.c | 1474 ++++++++
29 drivers/scsi/qla2xxx/qla_listops.h | 397 ++
30 drivers/scsi/qla2xxx/qla_mbx.c | 2884 +++++++++++++++
31 drivers/scsi/qla2xxx/qla_os.c | 5879 ++++++++++++++++++++++++++++++++
32 drivers/scsi/qla2xxx/qla_os.h | 156
33 drivers/scsi/qla2xxx/qla_settings.h | 80
34 drivers/scsi/qla2xxx/qla_sup.c | 560 +++
35 drivers/scsi/qla2xxx/qla_vendor.c | 193 +
36 drivers/scsi/qla2xxx/qla_version.h | 31
37 drivers/scsi/qla2xxx/qla_xioct.c | 6589 ++++++++++++++++++++++++++++++++++++
38 drivers/scsi/qla2xxx/qlfo.h | 413 ++
39 drivers/scsi/qla2xxx/qlfolimits.h | 92
40 drivers/scsi/qla2xxx/qlfoln.h | 76
41 drivers/scsi/qla2xxx/release.txt | 22
42 drivers/scsi/qla2xxx/revision.notes | 167
43 42 files changed, 58199 insertions(+)
45 --- linux-2.5.73/drivers/scsi/Makefile~qla2xxx-v8.00.00b1-2.5.73 Sun Jun 22 11:33:08 2003
46 +++ linux-2.5.73-n9560/drivers/scsi/Makefile Thu Jul 3 15:34:28 2003
47 @@ -73,6 +73,7 @@ obj-$(CONFIG_SCSI_QLOGIC_FAS) += qlogicf
48 obj-$(CONFIG_SCSI_QLOGIC_ISP) += qlogicisp.o
49 obj-$(CONFIG_SCSI_QLOGIC_FC) += qlogicfc.o
50 obj-$(CONFIG_SCSI_QLOGIC_1280) += qla1280.o
51 +obj-$(CONFIG_SCSI_QLA2XXX) += qla2xxx/
52 obj-$(CONFIG_SCSI_PAS16) += pas16.o
53 obj-$(CONFIG_SCSI_SEAGATE) += seagate.o
54 obj-$(CONFIG_SCSI_FD_8xx) += seagate.o
55 --- linux-2.5.73/drivers/scsi/Kconfig~qla2xxx-v8.00.00b1-2.5.73 Sun Jun 22 11:33:16 2003
56 +++ linux-2.5.73-n9560/drivers/scsi/Kconfig Thu Jul 3 15:34:28 2003
57 @@ -1283,6 +1283,8 @@ config SCSI_QLOGIC_1280
58 The module will be called qla1280. If you want to compile it as
59 a module, say M here and read <file:Documentation/modules.txt>.
61 +source "drivers/scsi/qla2xxx/Kconfig"
64 tristate "PTI Qlogic, ISP Driver"
65 depends on SBUS && SCSI
66 --- /dev/null Thu Apr 11 07:25:15 2002
67 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/Kconfig Thu Jul 3 15:34:42 2003
70 + bool "QLogic QLA2XXX FC-SCSI support (v8)"
74 +config SCSI_QLA2XXX_QLA21XX
75 + tristate "QLogic QLA21xx FC-SCSI support (v8)"
76 + depends on SCSI_QLA2XXX
80 + If you want to compile the driver as a module ( = code which can be
81 + inserted in and removed from the running kernel whenever you want),
82 + say M here and read <file:Documentation/modules.txt>. The module
83 + will be called qla2100.
85 +config SCSI_QLA2XXX_QLA22XX
86 + tristate "QLogic QLA22xx FC-SCSI support (v8)"
87 + depends on SCSI_QLA2XXX
91 + If you want to compile the driver as a module ( = code which can be
92 + inserted in and removed from the running kernel whenever you want),
93 + say M here and read <file:Documentation/modules.txt>. The module
94 + will be called qla2200.
96 +config SCSI_QLA2XXX_QLA23XX
97 + tristate "QLogic QLA23xx FC-SCSI support (v8)"
98 + depends on SCSI_QLA2XXX
102 + If you want to compile the driver as a module ( = code which can be
103 + inserted in and removed from the running kernel whenever you want),
104 + say M here and read <file:Documentation/modules.txt>. The module
105 + will be called qla2300.
106 --- /dev/null Thu Apr 11 07:25:15 2002
107 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/Makefile Thu Jul 3 15:34:42 2003
109 +# Kernel makefile for 8.x series QLogic Fibre Channel driver.
111 +EXTRA_CFLAGS += -Idrivers/scsi -I$(obj) -DUNIQUE_FW_NAME
113 +ISPTYPES := qla2100 qla2200 qla2300
114 +ISPDIRS := $(foreach dir, $(ISPTYPES), $(addsuffix /, $(addprefix .,$(dir))))
116 +ISP2100_FW := ql2100tp_fw.o
117 +ISP2200_FW := ql2200ip_fw.o
118 +ISP2300_FW := ql2300tpx_fw.o #ql2322tpx_fw.o
120 +COMMON_SRCS := qla_os.c qla_init.c qla_mbx.c qla_iocb.c qla_isr.c qla_xioct.c qla_inioct.c \
121 + qla_dbg.c qla_sup.c qla_fo.c qla_cfg.c qla_cfgln.c qla_vendor.c
122 +COMMON_OBJS := $(foreach file, $(COMMON_SRCS), $(patsubst %.c, %.o, $(file)))
124 +ISP2100_DIR_SRCS := $(foreach file, $(COMMON_SRCS), $(addprefix .qla2100/,$(file)))
125 +ISP2100_DIR_OBJS := $(foreach file, $(COMMON_OBJS), $(addprefix .qla2100/,$(file)))
126 +ISP2200_DIR_SRCS := $(foreach file, $(COMMON_SRCS), $(addprefix .qla2200/,$(file)))
127 +ISP2200_DIR_OBJS := $(foreach file, $(COMMON_OBJS), $(addprefix .qla2200/,$(file)))
128 +ISP2300_DIR_SRCS := $(foreach file, $(COMMON_SRCS), $(addprefix .qla2300/,$(file)))
129 +ISP2300_DIR_OBJS := $(foreach file, $(COMMON_OBJS), $(addprefix .qla2300/,$(file)))
131 +PREPALL := $(shell for dir in $(ISPDIRS) ; \
133 + if [ ! -d $(obj)/$${dir} ] ; then \
134 + mkdir $(obj)/$${dir} ; \
136 + for link in $(foreach file, $(COMMON_OBJS), $(patsubst %.o, %.c, $(file))) ; \
138 + if [ ! -h $(obj)/$${dir}$${link} ] ; then \
139 + ln -sf ../$${link} $(obj)/$${dir}$${link} ; \
144 +obj-$(CONFIG_SCSI_QLA2XXX_QLA21XX) += qla2100.o
145 +obj-$(CONFIG_SCSI_QLA2XXX_QLA22XX) += qla2200.o
146 +obj-$(CONFIG_SCSI_QLA2XXX_QLA23XX) += qla2300.o
148 +$(obj)/qla2100.o: $(PREPALL)
149 +$(obj)/qla2100.o: ISPTYPE := qla21xx
150 +$(obj)/qla2100.o: EXTRA_CFLAGS += -D$(ISPTYPE)
152 +$(obj)/qla2200.o: $(PREPALL)
153 +$(obj)/qla2200.o: ISPTYPE := qla22xx
154 +$(obj)/qla2200.o: EXTRA_CFLAGS += -D$(ISPTYPE)
156 +$(obj)/qla2300.o: $(PREPALL)
157 +$(obj)/qla2300.o: ISPTYPE := qla23xx
158 +$(obj)/qla2300.o: EXTRA_CFLAGS += -D$(ISPTYPE) -DTPX -DEXTENDED_IDS
160 +qla2100-objs := $(ISP2100_DIR_OBJS) $(ISP2100_FW)
161 +qla2200-objs := $(ISP2200_DIR_OBJS) $(ISP2200_FW)
162 +qla2300-objs := $(ISP2300_DIR_OBJS) $(ISP2300_FW)
164 +clean-files := $(ISP2100_DIR_SRCS) $(ISP2200_DIR_SRCS) $(ISP2300_DIR_SRCS)
165 --- /dev/null Thu Apr 11 07:25:15 2002
166 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/README.qla2x00 Thu Jul 3 15:34:42 2003
168 + QLogic Fibre Channel Driver
169 + for Red Hat Linux 7.2, 7.3, and Advanced Server 2.1
170 + and Suse Linux 7.3, and Enterprise 7
172 +Products supported: QLA22XX, QLA23XX
181 +2. Supported Features
185 +4. Saving the Driver Source to Diskette
187 +5. Installing the Driver
189 + 5.1 Building the driver from the Source
190 + 5.1.1. Building a Uni-Processor (UP) version of the driver
191 + 5.1.2. Building a Symmetric Multi-Processor(SMP) version of the
193 + 5.2 Load the Driver Manually using INSMOD or MODPROBE
194 + 5.3 Making a RAMDISK Image to Load the Driver
196 +6. Driver Parameters
198 + 6.1 System Parameters
199 + 6.1.1 Multiple LUN Support
200 + 6.2 NVRAM Parameters
201 + 6.3 Driver Command Line Parameters
207 + 8.1 Proc Filesystem Support
208 + 8.2 Co-existence of QLogic 4.x and 6.x Linux Drivers
209 + 8.3 Failover Support
210 + 8.3.1 How to enable the Failover support in the Driver
211 + 8.3.2 Using SANsurfer with QLA2XXX Driver the First Time
212 + 8.3.3 Configuration Changes Made via SANsurfer
213 + 8.4 Persistent Binding
217 +10. Contacting QLogic
220 +**********************************************************************
226 +This driver works with Red Hat Linux 7.2, 7.3, and Advanced Server
227 +2.1 and Suse Linux 7.3 and Enterprise 7. Earlier or later versions
228 +of Linux may be supported but were not tested at the time of this
229 +release. Refer to the SUPPORTED_KERNEL_VERSION.txt file for a list
230 +of kernel versions tested with this release.
233 +**********************************************************************
236 +2. Supported Features
237 +---------------------
239 +* FCAL - direct attach loop
242 +* Initiator mode only
243 +* Fault recovery on down loops
244 +* Persistent binding
245 +* Extended LUN support up to 255 LUNs
248 +* Non Failover and Failover capability
251 +**********************************************************************
257 +Please refer to Release Notes (release.txt).
260 +**********************************************************************
263 +4. Saving the Driver Source to Diskette
264 +---------------------------------------
266 +1. Download the failover or non-failover qla2x00src-vx.yy-*.tgz file
267 + from QLogic's website.
269 + * Failover compressed file has suffix "fo" while non failover
272 +2. If prompted "What would you like to do with this file?" choose
273 + "Save this file to disk."
274 +3. Insert a blank diskette and download to the diskette directly.
277 +**********************************************************************
280 +5. Installing the Driver
281 +------------------------
283 +NOTE: Refer to the file BUILD_KERNEL.txt for instructions on how
284 + to build a custom kernel with the QLogic Driver embedded.
286 +5.1 Building a Driver from the Source Code
287 +-------------------------------------------
289 +From the source code, you can build a qla2200.o or qla2300.o for
290 +your UP or SMP system, and load the driver manually or automatically
291 +using a RAMDISK image during system boot time.
294 +5.1.1 Building a Uni-Processor (UP) Version of the Driver
295 +---------------------------------------------------------
297 +1. Extract the kernel-headers and kernel-sources RPM files from the
300 + # cd /mnt/cdrom/RedHat/RPMS
301 + # rpm -iv kernel-headers*.rpm (not required for Red Hat 7.3)
302 + # rpm -iv kernel-source*.rpm
304 +2. Using the diskette you created in Section 4, copy the
305 + qla2x00src-vx.yy-*.tgz file to /qla2x00. Follow these steps from
306 + the "/" (root) directory:
310 + # mount /mnt/floppy
311 + # cp /mnt/floppy/*.tgz . (the period at the end is required)
314 + # ./drvsetup (this will extract the source files in to the
317 +3. Build the Driver qla2200.o and qla2300.o from the source code by
322 + For SuSE Distribution:
324 + # make all OSVER=linux
326 +4. To load the driver manually, see section 5.2. To make a RAMDISK
327 + image to load the driver during system boot time, see section 5.3.
330 +5.1.2. Building a Symmetric Multi-Processor (SMP) Version of the Driver
331 +-----------------------------------------------------------------------
333 +1. Extract the kernel-headers and kernel-source RPM files from the
336 + # cd /mnt/cdrom/RedHat/RPMS
337 + # rpm -iv kernel-headers*.rpm (not required for Red Hat 7.3)
338 + # rpm -iv kernel-source*.rpm
340 +2. Using the diskette you created in Section 4, copy the
341 + qla2x00src-vx.yy-*.tgz file to /qla2x00. Follow these steps from
342 + the "/" (root) directory:
346 + # mount /mnt/floppy
347 + # cp /mnt/floppy/*.tgz . (the period at the end is required)
350 + # ./drvsetup (this will extract the source files in to the
353 +3. Build the Driver qla2200.o and qla2300.o from the source code by
358 + For SuSE Distribution:
360 + # make all SMP=1 OSVER=linux
362 +4. To load the driver manually, see section 5.2. To make a RAMDISK
363 + image to load the driver during system boot time, see section 5.3.
366 +5.2 Load the Driver Manually using INSMOD or MODPROBE
367 +------------------------------------------------------
369 +Before loading the driver manually, first build the driver binary from
370 +the driver source files as described in sections 5.1.1 and 5.1.2.
372 +- To load the driver directly from the local build directory, type
379 +- To load the driver using modprobe:
381 + 1. Build the driver qla2200.o and qla2300.o from the source
386 + For SuSE Distribution:
388 + # make all OSVER=linux install
390 + 2. To ensure that the older driver binary included in the
391 + original distribution does not interfere with the updated
392 + version, please rename the old driver binary as follows:
394 + # cd /lib/modules/<kernel_version>/kernel/drivers/addon/qla2200
395 + # mv qla2200.o qla2200_rh.o
396 + # mv qla2300.o qla2300_rh.o
398 + 3. Type the following to load the Driver:
405 +5.3 Making a RAMDISK Image to Load the Driver
406 +----------------------------------------------
408 +1. Build the Driver binary files (see 5.1.1 and 5.1.2).
410 +2. Copy the files to:
412 + /lib/modules/<kernel version>/kernel/drivers/scsi/
415 +NOTE: To ensure that the older Driver binary included in the original
416 + distribution does not interfere with the updated version,
417 + please rename the old Driver binary as follows:
419 + # cd /lib/modules/<kernel_version>/kernel/drivers/addon/qla2200
420 + # mv qla2200.o qla2200_rh.o
421 + # mv qla2300.o qla2300_rh.o
423 +3. Add the following line to /etc/modules.conf.
425 + alias scsi_hostadapter0 qla2200
427 + alias scsi_hostadapter0 qla2300
429 +NOTE: Must add one entry for each HBA in the system. For example,
430 + If two QLA2200 hbas are installed add the following:
432 + alias scsi_hostadapter0 qla2200
433 + alias scsi_hostadapter1 qla2200
435 +4. Type the following command:
437 + # mkinitrd -f <ramdisk image file name> <kernel version>
439 +NOTE: This step will overwrite the original ramdisk image file if
440 + executed within the /boot directory. Specify a unique ramdisk
441 + image name to preserve the original ramdisk image.
443 + - Copy the file to /boot.
445 + For SuSE Distribution:
447 + - Type the following command:
451 + NOTE: By default, the RAMDISK images created are:
456 +5. Configure the boot loader with the new RAMDISK image.
460 + Add "initrd=/boot/<ramdisk file name>" in
461 + /etc/lilo.conf under one of the kernel entries
462 + to use the RAMDISK image.
464 + Run "lilo" and reboot system. Select the kernel
465 + with the new RAMDISK image to come up.
469 + Add "initrd=/boot/<RAMDISK file name>" in
470 + /etc/grub.conf under one of the kernel entries
471 + to use the RAMDISK image.
473 +**********************************************************************
476 +6. Driver Parameters
477 +--------------------
479 +The Driver parameters are divided into System Parameters and NVRAM
480 +Parameters sections.
483 +6.1 System Parameters
484 +----------------------
486 +6.1.1 Multiple LUN Support
487 +--------------------------
489 +Support for multiple LUNs can be configured in one of three ways.
490 +Currently, the maximum number of LUNs that can be scanned for each
493 +The kernel must be configured to have multiple LUN support enabled
494 +in order for non-zero LUNs to be configured and accessible. Use
495 +"make menuconfig" (as described in step 6, section 5.1) to build a
496 +kernel which has the option under SCSI Support enabled to probe all
497 +LUNs on SCSI devices.
500 +NOTE: If you have multiple adapters, set max_scsi_luns to the
501 + largest number of LUNs supported by any one of these adapters.
503 +- To configure multiple LUN support during boot time, type the
504 +following at the boot prompt:
506 +boot: linux max_scsi_luns=128
508 +- If the SCSI Mid-Layer is compiled as a module, add the following
509 +line to the /etc/modules.conf file to scan for multiple LUNs at
512 +options scsi_mod max_scsi_luns=128
514 +- If the SCSI Mid-Layer is not compiled as a module, the boot loader
515 +can be configured to scan for multiple LUNs each time the system
518 +For LILO, perform the following steps:
520 +a) Add the following line to each of the kernel images listed in the
521 + /etc/lilo.conf file:
523 +append="max_scsi_luns=128"
525 +b) Run "lilo" and reboot the system.
527 +For GRUB, perform the following steps:
529 +a) Append the max_scsi_luns parameters to each of the kernel images
530 +listed in the /etc/grub.conf file. For example:
532 +kernel /vmlinux-2.4.7-10 ro root=/dev/hda2 max_scsi_luns=128
534 +b) Reboot the system.
537 +6.2 NVRAM Parameters
538 +---------------------
540 +The NVRAM features described below are hard-coded in the Driver. The
541 +changes made for the particular NVRAM feature in the Fast!Util do not
542 +take effect unless otherwise noted.
547 +6.3 Driver Command Line Parameters
548 +-----------------------------------
550 +'verbose' and 'quiet' are the available command line options.
552 + verbose - Verbose detail debug information
554 + quiet - Driver does not display:
555 + Waiting for LIP to complete....
556 + scsi%d: Topology - %s, Host Loop address 0x%x
557 + scsi(%d): LIP occurred
558 + scsi(%d): LIP reset occurred
562 + # insmod qla2200.o options = verbose
563 + # insmod qla2300.o options = verbose
564 + # insmod qla2200.o ql2xopts = quiet
565 + # insmod qla2300.o ql2xopts = quiet
568 +**********************************************************************
577 +**********************************************************************
581 +---------------------
584 +8.1 Proc Filesystem Support
585 +-----------------------------
587 +The /proc filesystem for the QLA2200 and QLA2300 driver can be found
588 +in the /proc/scsi/qla2200/ and /proc/scsi/qla2300/ directories. These
589 +directories contain a file for each QLogic Fibre Channel adapter
590 +in the system. Each file will present information about the adapter
591 +and transfer statistics for each discovered LUN.
594 +8.2 Co-existence of QLogic 4.x and 6.x Linux Drivers
595 +-----------------------------------------------------
597 +The 4.x driver provides support for QLA2100, QLA2200, and QLA23xx.
598 +The 6.x driver supports the QLA2200 and QLA23xx only. To make the
599 +drivers "co-exist", perform the following:
601 + Option 1. 4.x support for QLA2100
602 + 6.x support for QLA2200 and QLA23xx
604 + o Remove QLA2200/QLA2300/QLA2312 support from the 4.x series
607 + - Edit the qla2x00.c file
609 + - Look for the following line:
611 + {"QLA2300 ", QLA2300_DEVICE_ID, MAX_BUSES,
615 + {"QLA2312 ", QLA2312_DEVICE_ID, MAX_BUSES,
617 + - Above the found line, add this line:
621 + - The resulting lines should read as:
624 + {"QLA2300 ", QLA2300_DEVICE_ID, MAX_BUSES,
629 + {"QLA2312 ", QLA2312_DEVICE_ID, MAX_BUSES,
631 + - Look for the following line:
633 + {"QLA2100 ", QLA2100_DEVICE_ID, MAX_BUSES,
635 + - Above the found line, add this line:
639 + - The resulting lines should read as:
642 + {"QLA2100 ", QLA2100_DEVICE_ID, MAX_BUSES,
644 + Option 2. 4.x support for QLA2100 and QLA2200
645 + 6.x support for QLA23xx
647 + o Remove QLA2300/QLA2312 support from the 4.x series driver:
649 + - Edit the qla2x00.c file
651 + - Look for the following line:
653 + {"QLA2300 ", QLA2300_DEVICE_ID, MAX_BUSES,
657 + {"QLA2312 ", QLA2312_DEVICE_ID, MAX_BUSES,
659 + - Above the found line, add this line:
663 + - The resulting lines should read as:
666 + {"QLA2300 ", QLA2300_DEVICE_ID, MAX_BUSES,
671 + {"QLA2312 ", QLA2312_DEVICE_ID, MAX_BUSES,
673 + - Look for the following line:
675 + {"QLA2200 ", QLA2200_DEVICE_ID, MAX_BUSES,
677 + - Above the found line, add this line:
681 + - The resulting lines should read as:
684 + {"QLA2200 ", QLA2200_DEVICE_ID, MAX_BUSES,
687 +8.3 Failover Support
688 +---------------------
690 +8.3.1 How to enable the Failover support in the Driver
691 +-------------------------------------------------------
693 +Failover support can be enabled in the QLA2XXX driver by enabling the
694 +macro MPIO_SUPPORT in qla_settings.h file ie
696 +#define MPIO_SUPPORT 1
698 +Note: The failover distribution package, qla2x00src-vx.yy.zz-fo.tgz,
699 +has the above macro enabled by default.
702 +8.3.2 Using SANsurfer with QLA2XXX Driver the First Time
703 +________________________________________________________
705 +1. To work with SANsurfer, the driver should always be built
706 + with MPIO_SUPPORT set to 1 in qla_settings.h.
708 +2. Add the following parameter in modules.conf file:
710 + options qla2200 ConfigRequired=1 ql2xopts=
712 + options qla2300 ConfigRequired=1 ql2xopts=
714 +3. Now you can load the driver and SANsurfer.
717 +8.3.3 Configuration Changes Made via SANsurfer
718 +--------------------------------------------
722 + For the new LUN masking configuration to take effect, the
723 + driver must be reloaded. The following is an example of
724 + the sequence of actions to take:
730 + - Load the qlremote agent.
732 + - Start the GUI and connect it to the destination system.
734 + - Make LUN masking changes.
736 + - Disconnect the host from GUI and stop qlremote agent.
738 + - Unload the driver:
740 + modprobe -r <driver>
742 + - Reload the driver:
746 + - Load qlremote agent again.
748 + - Start the GUI and connect it to the destination system.
750 + Now you should see the updated LUN masking configuration.
752 +Please note that when using modprobe to load the driver, the
753 +length of the option line specified in /etc/modules.conf file
754 +has a limit of 2K characters. Any longer option line will cause
755 +a string overflow error from modprobe.
758 +8.4 Persistent Binding
759 +______________________
762 +The Persistent Binding information consists of some adapter parameter
763 +entries along with some target entries. However, the Linux entries
764 +have been shorten to save space on the command line. Currently, there
765 +is no limit on the size of the command line when using modprobe. But,
766 +if you embedded the driver in the kernel you are using lilo that has
767 +a string size limitation.
769 +Persistent Binding can be specified in two ways. Manually or using
770 +SANsurfer. We recommend using SANsurfer for ease of use. Reference
771 +section 8.3.3 for additonal information about SANsurfer. The
772 +following is the procedure to manually add persistent binding
775 +The driver displays the current configuration when the displayConfig
776 +command line option is specified. The persistent binding
777 +configuration is found in /var/log/messages file. It prints the
778 +configuration information in the format required by the driver.
779 +The best way to extract configuration messages is to use grep and
780 +direct the output to a file. You need to remove the Linux timestamp at
781 +the beginning of each message and combine them together on single line.
783 + #insmod qla2200 displayConfig=1
784 + #grep "scsi-qla" /var/log/messages > /tmp/info.cfg
786 +The format of the persistent binding commands is as follows:
790 +scsi-qla<#>-adapter-port=<adapter port name value>;
791 +The designated by qla<#>, where the <#> is the adapter instance number.
793 +The parameter specifies the FC port name to be used for the adapter.
794 +where <adapter port name value> is the FC port name value in hexa-
795 + decimal format. If this entry is not specified in the conf file,
796 + the default value is the adapter's port name as saved in the NVRAM.
798 +scsi-qla00-adapter-port=210000e08b01158d\;
800 +host adapter instance 0 has a portname of 210000e08b01158d
802 +scsi-qla<#1>-tgt-<#2>-di-<#3>-node=<device FC name>;
803 +This parameter associates the specified <device FC name> with the
804 +SCSI target ID value specified by <#2> and a device id value specified
805 +by <#3>. where <device FC name> type is the FC node name of the
806 +device, and <#2> is the SCSI target ID to be assigned to the device
807 +and <#3> is the device unique id.
809 + <#1> Specifies the adapter instance number
810 + <#2> Specifies the SCSI ID of Target
811 + <#3> Specifies the path/device id
813 +scsi-qla<#1>-tgt-<#2>-di-<#3>-port=<device FC name>;
814 +This parameter associates the specified <device FC name> with the
815 +SCSI target ID value specified by <#2> and a device id value specified
816 +by <#3>. where <device FC name> type is the FC port
818 + <#1> Specifies the adapter instance number
819 + <#2> Specifies the SCSI ID of Target
820 + <#3> Specifies the path/device id (always 0 for non-failover)
822 +name of the device, and <#2> is the SCSI target ID to be assigned to
823 +the device and <#3> is the device unique id.
825 +scsi-qla<#1>-tgt-<#2>-di-<#3>-disabled=<256 bit mask>;
826 +This parameter associates the specified <256 bit mask> with the
827 +SCSI target ID value specified by <#2> and a device id value specified
831 + <#1> Specifies the adapter instance number
832 + <#2> Specifies the SCSI ID of Target
833 + <#3> Specifies the path/device id
837 + 000000000000000000000000000000000000000000000000000000000000000F
839 +the mask above will make the first four luns, 3, 2, 1, and 0 of a
840 +given Target disabled on that target/path.
842 +This mask specification is heavily type checked to be a sequence of
845 +**********************************************************************
849 +--------------------
851 +The qla2x00src-vx.yy.zz-*.tgz files can be extracted into the
891 + revision.notes - Revision history
892 + release.txt - Release notes
893 + README.qla2x00 - This file
896 +**********************************************************************
899 +10. Contacting QLogic
900 +---------------------
902 +Please visit QLogic's website (www.qlogic.com). On this site you will
903 +find product information, our latest drivers, and links for technical
904 +assistance if needed.
907 +======================================================================
910 + Copyright (c) 2003 QLogic Corporation. All rights reserved
912 --- /dev/null Thu Apr 11 07:25:15 2002
913 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/exioct.h Thu Jul 3 15:34:42 2003
915 +/******************************************************************************
916 + * QLOGIC LINUX SOFTWARE
918 + * QLogic ISP2x00 device driver for Linux 2.5.x
919 + * Copyright (C) 2003 Qlogic Corporation
922 + * This program is free software; you can redistribute it and/or modify it
923 + * under the terms of the GNU General Public License as published by the
924 + * Free Software Foundation; either version 2, or (at your option) any
927 + * This program is distributed in the hope that it will be useful, but
928 + * WITHOUT ANY WARRANTY; without even the implied warranty of
929 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
930 + * General Public License for more details.
932 + ******************************************************************************/
935 + * File Name: exioct.h
937 + * San/Device Management Ioctl Header
938 + * File is created to adhere to Solaris requirement using 8-space tabs.
940 + * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
941 + * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
942 + * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
944 + * Revision History:
946 + * Rev. 0 March 1, 2000
949 + * Rev. 1 March 2, 2000
950 + * RLU - Updated with latest definitions. Added more comments.
952 + * Rev. 2 May 16, 2000
953 + * SP - Updated definitions and changed structures (March 27, 2000)
954 + * SP - Addded structures
956 + * Rev. 3 June 1, 2000
957 + * THL - Made major changes to include all changes talked in our meeting.
959 + * Rev. 4 June 5, 2000
960 + * RLU - Added new definitions/structures for SDM_GET_AEN and SDM_REG_AEN
962 + * - Major definition/structure name changes as discussed in meetings.
963 + * - Deleted duplicated command code and structure definitions.
965 + * Rev. 4.1 June 14, 2000
966 + * WTR - Moved Solaris specific defines to exioctso.h. This makes it
967 + * possible for application developers to include only exioct.h
968 + * in their Solaris application development.
970 + * Rev. 4.2 June 15, 2000
971 + * THL - Changed UINT16 and UINT32 back to WORD and DWORD for NT; otherwise,
972 + * NT will get a compilation error for redefining UINT16 and UINT32.
973 + * Added RISC_CODE/FLASH_RAM macros.
975 + * Rev. 4.3 June 22, 2000
976 + * THL - Changed SDM_FC_ADDR according to External Ioctls document.
977 + * Added SDM_DEF_TYPE macros.
979 + * Rev. 4.4 June 22, 2000
980 + * THL - Moved NT specific defines to exioctnt.h.
982 + * Rev. 4.5 August 15, 2000
983 + * SP - Rolled back some changes made by Todd R.
984 + * Kept new status code SDM_STATUS_NO_MEMORY
985 + * Port types fabric and tape device
987 + * Rev. 4.7 Sep 6, 2000
988 + * YPL - Replace SDM_ with EXT_, _ISP with _CHIP.
989 + * Add vendor specific statuses, device update, config defines.
991 + * Rev. 5.0 Sep 13, 2000
992 + * YPL - Update version to 5, remove max defines, make port type bit.
993 + * Change HBA_PORT_PROPERTY to have bus/target/lun defined as UINT16
995 + * Rev. 5.1 Sep 22, 2000
996 + * THL - Add destination address for specify scsi address or FC address.
997 + * Remove "not support" comment and add more macros.
999 + * Rev. 5.2 Sep 27, 2000
1000 + * THL - Add new macros and structure for add and swap target device.
1001 + * Create new data structure for get port database.
1002 + * TLE - Merge changes needed for FailOver
1004 + * Rev. 5.3 Sep 29, 2000
1005 + * THL - Add access mode for NVRAM.
1007 + * Rev. 5.4 Oct 03, 2000
1008 + * THL - Add EXT_SC_GET_FC_STATISTICS.
1010 + * Rev. 5.5 Oct 18, 2000
1011 + * THL - Remove duplicated EXT_DEF_ADDR_MODE_32 and EXT_DEF_ADDR_MODE_16.
1012 + * Reformat new data structures and defines.
1014 + * Rev. 5.6 Oct 19, 2000
1015 + * RLU - Changed file name from ExIoct.h to exioct.h.
1016 + * - Added definition of EXT_RNID_DATA for API implementation.
1017 + * - Reformat some lines to conform to the format agreed
1018 + * upon in IOCTL meeting (and mentioned at beginning of
1021 + * Rev. 5.7 Oct 25, 2000
1022 + * BN - Added LUN bitmask structure and macros
1024 + * Rev. 5.8 Oct 25, 2000
1025 + * BN - Added EXT_CC_DRIVER_PROP define
1027 + * Rev. 5.9 Oct 26, 2000
1028 + * BN - Sync with UnixApi project
1030 + * Rev. 5.10 Oct 30, 2000
1031 + * BN - Remove not needed #define for EXT_CC_DRIVER_PROP
1032 + * - Add EXT_ to IS_LUN_BIT_SET, SET_LUN_BIT, CLR_LUN_BIT
1034 + * Rev. 5.11 Nov 1, 2000
1035 + * BN - Increased [1] of EXT_DEVICEDATA to [EXT_MAX_TARGET]
1036 + * TLE - Decreased [EXT_MAX_TARGET] of EXT_DEVICEDATA to [1]
1038 + * Rev. 5.12 Nov 7, 2000
1039 + * RLU - Deleted EXT_DEF_MAX_LUNS define and changed all references
1040 + * to it to use EXT_MAX_LUN.
1041 + * - Changed the revision numbers for the last 2 revisions down
1044 + * Rev. 5.13 Nov 14, 2000
1045 + * WTR - Fixed pointer referencing problem in the LUN_BIT_MASK macros.
1046 + * Updated comment at bit mask definition.
1048 + * Rev. 5.14 Dec 6, 2000
1049 + * THL - Added Local and LoopID to discovered port/target property.
1051 + * Rev. 5.15 Dec 24, 2000
1052 + * YPL - Enhance port connection modes and driver attrib
1054 + * Rev. 5.16 Dec 27, 2000
1055 + * TLE - Add BufferHandle member to _EXT_ASYNC_EVENT data structure for
1058 + * Rev. 5.17 Jan 10, 2001
1059 + * YPL - Add edtov, ratov & fabric name in port property
1061 + * Rev. 5.18 Feb 28, 2001
1062 + * YPL - Remove SCTP fields and add fabric parameter flags in port property
1064 + * Rev. 5.19 Mar 08, 2001
1065 + * YPL - Remove SCTP fields from hba port prop
1067 + * Rev. 5.20 June 11, 2001
1068 + * YPL - Change to reserved fields and add fabric name field in port property
1070 + * Rev. 5.21 June 29, 2001
1071 + * YPL - Merge in changes decided long time ago (use _DEF_ for defines) &
1072 + * reserved some EXT_CC for legacy ioctls, plus add RNID dataformat
1073 + * values definition
1075 + * Rev. 5.21 Sep 18, 2001
1076 + * SP - Added New return status codes
1078 + * Rev. 5.22 Oct 23, 2001
1079 + * SP - Change reserve fields to add fields to EXT_HBA_PORT
1080 + * Added port speeds and FC4Types fields and related definitions
1082 + * Rev. 5.23 Dec 04, 2001
1083 + * RL - Added port speed value definition.
1085 + * Rev. 5.24 Jan 20, 2002
1086 + * JJ - Added PCI device function bits field in EXT_CHIP structure.
1088 + * Rev. 5.25 Feb 04, 2002
1089 + * JJ - Added 16 bytes CDB support. Also added SenseLength field
1090 + * in SCSI_PASSTHRU structure.
1092 + * Rev. 5.26 Feb 12, 2002
1093 + * AV - Changed type size used in SCSI_PASSTHRU structure definitions
1094 + * to re-enable gcc's automatic structure padding for backward
1097 + * Rev. 5.27 Mar 01, 2002
1098 + * RL - Added new SC value for SCSI3 command passthru.
1100 + * Rev. 5.28 Dec 09, 2002
1101 + * Sync up with NT version of exioct.h:
1102 + * TLE - Modify EXT_RNID_REQ data structure for IBM SendRNID workaround
1103 + * YPL - Add firmware state (online diagnostics)
1104 + * YPL - Add ELS PS
1105 + * YPL - Add els event, # of els buffers & size
1112 + * NOTE: the following version defines must be updated each time the
1113 + * changes made may affect the backward compatibility of the
1114 + * input/output relations of the SDM IOCTL functions.
1116 +#define EXT_VERSION 5
1120 + * OS independent General definitions
1122 +#define EXT_DEF_SIGNATURE_SIZE 8
1123 +#define EXT_DEF_WWN_NAME_SIZE 8
1124 +#define EXT_DEF_WWP_NAME_SIZE 8
1125 +#define EXT_DEF_SERIAL_NUM_SIZE 4
1126 +#define EXT_DEF_PORTID_SIZE 4
1127 +#define EXT_DEF_PORTID_SIZE_ACTUAL 3
1128 +#define EXT_DEF_MAX_STR_SIZE 128
1129 +#define EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH 16
1131 +#define EXT_DEF_ADDR_MODE_32 1
1132 +#define EXT_DEF_ADDR_MODE_64 2
1135 + * ***********************************************************************
1136 + * X OS type definitions
1137 + * ***********************************************************************
1139 +#ifdef _MSC_VER /* NT */
1142 +#include "ExIoctNT.h"
1144 +#elif defined(linux) /* Linux */
1146 +#include "exioctln.h"
1148 +#elif defined(sun) || defined(__sun) /* Solaris */
1150 +#include "exioctso.h"
1155 + * ***********************************************************************
1156 + * OS dependent General configuration defines
1157 + * ***********************************************************************
1159 +#define EXT_DEF_MAX_HBA EXT_DEF_MAX_HBA_OS
1160 +#define EXT_DEF_MAX_BUS EXT_DEF_MAX_BUS_OS
1161 +#define EXT_DEF_MAX_TARGET EXT_DEF_MAX_TARGET_OS
1162 +#define EXT_DEF_MAX_LUN EXT_DEF_MAX_LUN_OS
1165 + * ***********************************************************************
1166 + * Common header struct definitions for San/Device Mgmt
1167 + * ***********************************************************************
1170 + UINT64 Signature; /* 8 chars string */
1171 + UINT16 AddrMode; /* 2 */
1172 + UINT16 Version; /* 2 */
1173 + UINT16 SubCode; /* 2 */
1174 + UINT16 Instance; /* 2 */
1175 + UINT32 Status; /* 4 */
1176 + UINT32 DetailStatus; /* 4 */
1177 + UINT32 Reserved1; /* 4 */
1178 + UINT32 RequestLen; /* 4 */
1179 + UINT32 ResponseLen; /* 4 */
1180 + UINT64 RequestAdr; /* 8 */
1181 + UINT64 ResponseAdr; /* 8 */
1182 + UINT16 HbaSelect; /* 2 */
1183 + UINT16 VendorSpecificStatus[11]; /* 22 */
1184 + UINT64 VendorSpecificData; /* 8 chars string */
1185 +} EXT_IOCTL, *PEXT_IOCTL; /* 84 / 0x54 */
1188 + * Addressing mode used by the user application
1190 +#define EXT_ADDR_MODE EXT_ADDR_MODE_OS
1193 + * Status. These macros are being used for setting Status field in
1194 + * EXT_IOCTL structure.
1196 +#define EXT_STATUS_OK 0
1197 +#define EXT_STATUS_ERR 1
1198 +#define EXT_STATUS_BUSY 2
1199 +#define EXT_STATUS_PENDING 3
1200 +#define EXT_STATUS_SUSPENDED 4
1201 +#define EXT_STATUS_RETRY_PENDING 5
1202 +#define EXT_STATUS_INVALID_PARAM 6
1203 +#define EXT_STATUS_DATA_OVERRUN 7
1204 +#define EXT_STATUS_DATA_UNDERRUN 8
1205 +#define EXT_STATUS_DEV_NOT_FOUND 9
1206 +#define EXT_STATUS_COPY_ERR 10
1207 +#define EXT_STATUS_MAILBOX 11
1208 +#define EXT_STATUS_UNSUPPORTED_SUBCODE 12
1209 +#define EXT_STATUS_UNSUPPORTED_VERSION 13
1210 +#define EXT_STATUS_MS_NO_RESPONSE 14
1211 +#define EXT_STATUS_SCSI_STATUS 15
1212 +#define EXT_STATUS_BUFFER_TOO_SMALL 16
1213 +#define EXT_STATUS_NO_MEMORY 17
1214 +#define EXT_STATUS_UNKNOWN 18
1215 +#define EXT_STATUS_UNKNOWN_DSTATUS 19
1216 +#define EXT_STATUS_INVALID_REQUEST 20
1218 +#define EXT_STATUS_DEVICE_NOT_READY 21
1219 +#define EXT_STATUS_DEVICE_OFFLINE 22
1220 +#define EXT_STATUS_HBA_NOT_READY 23
1221 +#define EXT_STATUS_HBA_QUEUE_FULL 24
1224 + * Detail Status contains the SCSI bus status codes.
1227 +#define EXT_DSTATUS_GOOD 0x00
1228 +#define EXT_DSTATUS_CHECK_CONDITION 0x02
1229 +#define EXT_DSTATUS_CONDITION_MET 0x04
1230 +#define EXT_DSTATUS_BUSY 0x08
1231 +#define EXT_DSTATUS_INTERMEDIATE 0x10
1232 +#define EXT_DSTATUS_INTERMEDIATE_COND_MET 0x14
1233 +#define EXT_DSTATUS_RESERVATION_CONFLICT 0x18
1234 +#define EXT_DSTATUS_COMMAND_TERMINATED 0x22
1235 +#define EXT_DSTATUS_QUEUE_FULL 0x28
1238 + * Detail Status contains the needed Response buffer space(bytes)
1239 + * when Status = EXT_STATUS_BUFFER_TOO_SMALL
1244 + * Detail Status contains one of the following codes
1245 + * when Status = EXT_STATUS_INVALID_PARAM or
1246 + * = EXT_STATUS_DEV_NOT_FOUND
1248 +#define EXT_DSTATUS_NOADNL_INFO 0x00
1249 +#define EXT_DSTATUS_HBA_INST 0x01
1250 +#define EXT_DSTATUS_TARGET 0x02
1251 +#define EXT_DSTATUS_LUN 0x03
1252 +#define EXT_DSTATUS_REQUEST_LEN 0x04
1253 +#define EXT_DSTATUS_PATH_INDEX 0x05
1256 + * Currently supported DeviceControl / ioctl command codes
1258 +#define EXT_CC_QUERY EXT_CC_QUERY_OS
1259 +#define EXT_CC_SEND_FCCT_PASSTHRU EXT_CC_SEND_FCCT_PASSTHRU_OS
1260 +#define EXT_CC_REG_AEN EXT_CC_REG_AEN_OS
1261 +#define EXT_CC_GET_AEN EXT_CC_GET_AEN_OS
1262 +#define EXT_CC_SEND_ELS_RNID EXT_CC_SEND_ELS_RNID_OS
1263 +#define EXT_CC_SEND_SCSI_PASSTHRU EXT_CC_SCSI_PASSTHRU_OS
1264 +#define EXT_CC_SEND_ELS_PASSTHRU EXT_CC_SEND_ELS_PASSTHRU_OS
1267 + * HBA port operations
1269 +#define EXT_CC_GET_DATA EXT_CC_GET_DATA_OS
1270 +#define EXT_CC_SET_DATA EXT_CC_SET_DATA_OS
1273 +/* Reserved command codes. */
1274 +#define EXT_CC_RESERVED0A EXT_CC_RESERVED0A_OS
1275 +#define EXT_CC_RESERVED0B EXT_CC_RESERVED0B_OS
1276 +#define EXT_CC_RESERVED0C EXT_CC_RESERVED0C_OS
1277 +#define EXT_CC_RESERVED0D EXT_CC_RESERVED0D_OS
1278 +#define EXT_CC_RESERVED0E EXT_CC_RESERVED0E_OS
1279 +#define EXT_CC_RESERVED0F EXT_CC_RESERVED0F_OS
1280 +#define EXT_CC_RESERVED0G EXT_CC_RESERVED0G_OS
1281 +#define EXT_CC_RESERVED0H EXT_CC_RESERVED0H_OS
1282 +#define EXT_CC_RESERVED0I EXT_CC_RESERVED0I_OS
1283 +#define EXT_CC_RESERVED0J EXT_CC_RESERVED0J_OS
1284 +#define EXT_CC_RESERVED0Z EXT_CC_RESERVED0Z_OS
1288 + * ***********************************************************************
1289 + * EXT_IOCTL SubCode definition.
1290 + * These macros are being used for setting SubCode field in EXT_IOCTL
1292 + * ***********************************************************************
1297 + * Uses with EXT_QUERY as the ioctl code.
1299 +#define EXT_SC_QUERY_HBA_NODE 1
1300 +#define EXT_SC_QUERY_HBA_PORT 2
1301 +#define EXT_SC_QUERY_DISC_PORT 3
1302 +#define EXT_SC_QUERY_DISC_TGT 4
1303 +#define EXT_SC_QUERY_DISC_LUN 5 /* Currently Not Supported */
1304 +#define EXT_SC_QUERY_DRIVER 6
1305 +#define EXT_SC_QUERY_FW 7
1306 +#define EXT_SC_QUERY_CHIP 8
1309 + * Sub codes for Get Data.
1310 + * Use in combination with EXT_GET_DATA as the ioctl code
1312 +/* 1 - 99 Common */
1313 +#define EXT_SC_GET_SCSI_ADDR 1 /* Currently Not Supported */
1314 +#define EXT_SC_GET_ERR_DETECTIONS 2 /* Currently Not Supported */
1315 +#define EXT_SC_GET_STATISTICS 3
1316 +#define EXT_SC_GET_BUS_MODE 4 /* Currently Not Supported */
1317 +#define EXT_SC_GET_DR_DUMP_BUF 5 /* Currently Not Supported */
1318 +#define EXT_SC_GET_RISC_CODE 6 /* Currently Not Supported */
1319 +#define EXT_SC_GET_FLASH_RAM 7 /* for backward compatible */
1321 +/* 100 - 199 FC_INTF_TYPE */
1322 +#define EXT_SC_GET_LINK_STATUS 101 /* Currently Not Supported */
1323 +#define EXT_SC_GET_LOOP_ID 102 /* Currently Not Supported */
1324 +#define EXT_SC_GET_LUN_BITMASK 103
1325 +#define EXT_SC_GET_PORT_DATABASE 104 /* Currently Not Supported */
1326 +#define EXT_SC_GET_PORT_DATABASE_MEM 105 /* Currently Not Supported */
1327 +#define EXT_SC_GET_PORT_SUMMARY 106
1328 +#define EXT_SC_GET_POSITION_MAP 107
1329 +#define EXT_SC_GET_RETRY_CNT 108 /* Currently Not Supported */
1330 +#define EXT_SC_GET_RNID 109
1331 +#define EXT_SC_GET_RTIN 110 /* Currently Not Supported */
1332 +#define EXT_SC_GET_FC_LUN_BITMASK 111
1333 +#define EXT_SC_GET_FC_STATISTICS 112 /* for backward compatible */
1335 +/* 200 - 299 SCSI_INTF_TYPE */
1336 +#define EXT_SC_GET_SEL_TIMEOUT 201 /* Currently Not Supported */
1340 + * Sub codes for Set Data.
1341 + * Use in combination with EXT_SET_DATA as the ioctl code
1343 +/* 1 - 99 Common */
1344 +#define EXT_SC_RST_STATISTICS 3
1345 +#define EXT_SC_RESERVED_BC7 7
1347 +/* 100 - 199 FC_INTF_TYPE */
1348 +#define EXT_SC_SET_LUN_BITMASK 103
1349 +#define EXT_SC_SET_RNID 109
1350 +#define EXT_SC_SET_FC_LUN_BITMASK 111
1351 +#define EXT_SC_RESERVED_BC112 112
1352 +#define EXT_SC_RESERVED_BC113 113
1354 +/* 200 - 299 SCSI_INTF_TYPE */
1356 +/* SCSI passthrough */
1357 +#define EXT_SC_SEND_SCSI_PASSTHRU 0
1358 +#define EXT_SC_SEND_FC_SCSI_PASSTHRU 1
1359 +#define EXT_SC_SCSI3_PASSTHRU 2
1367 +/* Request struct */
1373 +typedef struct _EXT_HBA_NODE {
1374 + UINT8 WWNN [EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1375 + UINT8 Manufacturer [EXT_DEF_MAX_STR_SIZE]; /* 128; "QLOGIC" */
1376 + UINT8 Model [EXT_DEF_MAX_STR_SIZE]; /* 128; "QLA2200" */
1377 + UINT8 SerialNum [EXT_DEF_SERIAL_NUM_SIZE];/* 4; 123 */
1378 + UINT8 DriverVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "7.4.3" */
1379 + UINT8 FWVersion [EXT_DEF_MAX_STR_SIZE]; /* 128; "2.1.6" */
1381 + /* The following field is currently not supported */
1382 + UINT8 OptRomVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "1.44" */
1384 + UINT16 PortCount; /* 2; 1 */
1385 + UINT16 InterfaceType; /* 2; FC/SCSI */
1387 + /* The following two fields are not yet supported */
1388 + UINT32 DriverAttr; /* 4 */
1389 + UINT32 FWAttr; /* 4 */
1391 + UINT32 Reserved[8]; /* 32 */
1392 +} EXT_HBA_NODE, *PEXT_HBA_NODE; /* 696 */
1394 +/* HBA node query interface type */
1395 +#define EXT_DEF_FC_INTF_TYPE 1
1396 +#define EXT_DEF_SCSI_INTF_TYPE 2
1398 +typedef struct _EXT_HBA_PORT {
1399 + UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1400 + UINT8 Id [EXT_DEF_PORTID_SIZE]; /* 4; 3 bytes valid Port Id. */
1401 + UINT16 Type; /* 2; Port Type */
1402 + UINT16 State; /* 2; Port State */
1403 + UINT16 Mode; /* 2 */
1404 + UINT16 DiscPortCount; /* 2 */
1405 + UINT16 DiscPortNameType; /* 2; USE_NODE_NAME or */
1406 + /* USE_PORT_NAME */
1407 + UINT16 DiscTargetCount; /* 2 */
1408 + UINT16 Bus; /* 2 */
1409 + UINT16 Target; /* 2 */
1410 + UINT16 Lun; /* 2 */
1412 + UINT8 PortSupportedFC4Types;
1413 + UINT8 PortActiveFC4Types;
1414 + UINT8 FabricName[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1417 + UINT8 PortSupportedSpeed;
1419 + UINT16 Unused; /* 2 */
1420 + UINT32 Reserved[3]; /* 12 */
1421 +} EXT_HBA_PORT, *PEXT_HBA_PORT; /* 56 */
1424 +#define EXT_DEF_INITIATOR_DEV 1
1425 +#define EXT_DEF_TARGET_DEV 2
1426 +#define EXT_DEF_TAPE_DEV 4
1427 +#define EXT_DEF_FABRIC_DEV 8
1430 +/* HBA port state */
1431 +#define EXT_DEF_HBA_OK 0
1432 +#define EXT_DEF_HBA_SUSPENDED 1
1433 +#define EXT_DEF_HBA_LOOP_DOWN 2
1435 +/* Connection mode */
1436 +#define EXT_DEF_UNKNOWN_MODE 0
1437 +#define EXT_DEF_P2P_MODE 1
1438 +#define EXT_DEF_LOOP_MODE 2
1439 +#define EXT_DEF_FL_MODE 3
1440 +#define EXT_DEF_N_MODE 4
1442 +/* Valid name type for Disc. port/target */
1443 +#define EXT_DEF_USE_NODE_NAME 1
1444 +#define EXT_DEF_USE_PORT_NAME 2
1446 +/* FC4 type values */
1447 +#define EXT_DEF_FC4_TYPE_SCSI 0x1
1448 +#define EXT_DEF_FC4_TYPE_IP 0x2
1449 +#define EXT_DEF_FC4_TYPE_SCTP 0x4
1450 +#define EXT_DEF_FC4_TYPE_VI 0x8
1452 +/* Port Speed values */
1453 +#define EXT_DEF_PORTSPEED_1GBIT 1
1454 +#define EXT_DEF_PORTSPEED_2GBIT 2
1455 +#define EXT_DEF_PORTSPEED_10GBIT 4
1457 +typedef struct _EXT_DISC_PORT {
1458 + UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1459 + UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1460 + UINT8 Id [EXT_DEF_PORTID_SIZE];
1461 + /* 4; last 3 bytes used. big endian */
1463 + /* The following fields currently are not supported */
1464 + UINT16 Type; /* 2; Port Type */
1465 + UINT16 Status; /* 2; Port Status */
1466 + UINT16 Bus; /* 2; n/a for Solaris */
1468 + UINT16 TargetId; /* 2 */
1469 + UINT8 Local; /* 1; Local or Remote */
1470 + UINT8 ReservedByte[1]; /* 1 */
1472 + UINT16 LoopID; /* 2; Loop ID */
1474 + UINT32 Reserved[7]; /* 28 */
1475 +} EXT_DISC_PORT, *PEXT_DISC_PORT; /* 60 */
1477 +typedef struct _EXT_DISC_TARGET {
1478 + UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1479 + UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1480 + UINT8 Id [EXT_DEF_PORTID_SIZE];
1481 + /* 4; last 3 bytes used. big endian */
1483 + /* The following fields currently are not supported */
1484 + UINT16 Type; /* 2; Target Type */
1485 + UINT16 Status; /* 2; Target Status*/
1486 + UINT16 Bus; /* 2; n/a for Solaris */
1488 + UINT16 TargetId; /* 2 */
1490 + /* The following field is currently not supported */
1491 + UINT16 LunCount; /* 2; n/a for nt */
1493 + UINT8 Local; /* 1; Local or Remote */
1494 + UINT8 ReservedByte[1]; /* 1 */
1496 + UINT16 LoopID; /* 2; Loop ID */
1498 + UINT16 Reserved[13]; /* 26 */
1499 +} EXT_DISC_TARGET, *PEXT_DISC_TARGET; /* 60 */
1501 +/* The following command is not supported */
1502 +typedef struct _EXT_DISC_LUN { /* n/a for nt */
1503 + UINT16 Id; /* 2 */
1504 + UINT16 State; /* 2 */
1505 + UINT16 IoCount; /* 2 */
1506 + UINT16 Reserved[15]; /* 30 */
1507 +} EXT_DISC_LUN, *PEXT_DISC_LUN; /* 36 */
1511 +typedef struct _EXT_SCSI_ADDR {
1512 + UINT16 Bus; /* 2 */
1513 + UINT16 Target; /* 2 */
1514 + UINT16 Lun; /* 2 */
1515 + UINT16 Padding[5]; /* 10 */
1516 +} EXT_SCSI_ADDR, *PEXT_SCSI_ADDR; /* 16 */
1519 +/* Fibre Channel address */
1520 +typedef struct _EXT_FC_ADDR {
1522 + UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1523 + UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1524 + UINT8 Id[EXT_DEF_PORTID_SIZE]; /* 4 */
1526 + UINT16 Type; /* 2 */
1527 + UINT16 Padding[2]; /* 2 */
1528 +} EXT_FC_ADDR, *PEXT_FC_ADDR; /* 24 */
1530 +#define EXT_DEF_TYPE_WWNN 1
1531 +#define EXT_DEF_TYPE_WWPN 2
1532 +#define EXT_DEF_TYPE_PORTID 3
1533 +#define EXT_DEF_TYPE_FABRIC 4
1536 +/* Destination address */
1537 +typedef struct _EXT_DEST_ADDR {
1539 + UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1540 + UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1541 + UINT8 Id[EXT_DEF_PORTID_SIZE]; /* 4 */
1543 + UINT16 Bus; /* 2 */
1544 + UINT16 Target; /* 2 */
1547 + UINT16 DestType; /* 2 */
1548 + UINT16 Lun; /* 2 */
1549 + UINT16 Padding[2]; /* 4 */
1550 +} EXT_DEST_ADDR, *PEXT_DEST_ADDR; /* 16 */
1553 +#define EXT_DEF_DESTTYPE_WWNN 1
1554 +#define EXT_DEF_DESTTYPE_WWPN 2
1555 +#define EXT_DEF_DESTTYPE_PORTID 3
1556 +#define EXT_DEF_DESTTYPE_FABRIC 4
1557 +#define EXT_DEF_DESTTYPE_SCSI 5
1560 +typedef struct _EXT_HBA_PORT_STAT {
1561 + UINT32 ControllerErrorCount; /* 4 */
1562 + UINT32 DeviceErrorCount; /* 4 */
1563 + UINT32 TotalIoCount; /* 4 */
1564 + UINT32 TotalMBytes; /* 4; MB of data processed */
1565 + UINT32 TotalLipResets; /* 4; Total no. of LIP Reset */
1566 + UINT32 Reserved2; /* 4 */
1567 + UINT32 TotalLinkFailures; /* 4 */
1568 + UINT32 TotalLossOfSync; /* 4 */
1569 + UINT32 TotalLossOfSignals; /* 4 */
1570 + UINT32 PrimitiveSeqProtocolErrorCount;/* 4 */
1571 + UINT32 InvalidTransmissionWordCount; /* 4 */
1572 + UINT32 InvalidCRCCount; /* 4 */
1573 + UINT32 Reserved[16]; /* 64 */
1574 +} EXT_HBA_PORT_STAT, *PEXT_HBA_PORT_STAT; /* 112 */
1577 +/* Driver property */
1578 +typedef struct _EXT_DRIVER {
1579 + UINT8 Version[EXT_DEF_MAX_STR_SIZE];/* 128 */
1580 + UINT16 NumOfBus; /* 2; Port Type */
1581 + UINT16 TargetsPerBus; /* 2; Port Status */
1582 + UINT16 LunsPerTarget; /* 2 */
1583 + UINT32 MaxTransferLen; /* 4 */
1584 + UINT32 MaxDataSegments; /* 4 */
1585 + UINT16 DmaBitAddresses; /* 2 */
1586 + UINT16 IoMapType; /* 2 */
1587 + UINT32 Attrib; /* 4 */
1588 + UINT32 InternalFlags[4]; /* 16 */
1589 + UINT32 Reserved[8]; /* 32 */
1590 +} EXT_DRIVER, *PEXT_DRIVER; /* 198 */
1593 +/* Firmware property */
1594 +typedef struct _EXT_FW {
1595 + UINT8 Version[EXT_DEF_MAX_STR_SIZE];/* 128 */
1596 + UINT32 Attrib; /* 4 */
1597 + UINT16 Reserved[33]; /* 66 */
1598 +} EXT_FW, *PEXT_FW; /* 198 */
1601 +/* ISP/Chip property */
1602 +typedef struct _EXT_CHIP {
1603 + UINT16 VendorId; /* 2 */
1604 + UINT16 DeviceId; /* 2 */
1605 + UINT16 SubVendorId; /* 2 */
1606 + UINT16 SubSystemId; /* 2 */
1607 + UINT16 PciBusNumber; /* 2 */
1608 + UINT16 PciSlotNumber; /* 2 */
1609 + UINT32 IoAddr; /* 4 */
1610 + UINT32 IoAddrLen; /* 4 */
1611 + UINT32 MemAddr; /* 4 */
1612 + UINT32 MemAddrLen; /* 4 */
1613 + UINT16 ChipType; /* 2 */
1614 + UINT16 InterruptLevel; /* 2 */
1615 + UINT16 OutMbx[8]; /* 16 */
1616 + UINT16 PciDevFunc; /* 2 */
1617 + UINT16 Reserved[15]; /* 30 */
1618 +} EXT_CHIP, *PEXT_CHIP; /* 80 */
1621 +/* Request Buffer for RNID */
1622 +typedef struct _EXT_RNID_REQ {
1623 + EXT_FC_ADDR Addr; /* 14 */
1624 + UINT8 DataFormat; /* 1 */
1625 + UINT8 Pad; /* 1 */
1626 + UINT8 OptWWN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1627 + UINT8 OptPortId[EXT_DEF_PORTID_SIZE]; /* 4 */
1628 + UINT32 Reserved[12]; /* 48 */
1629 + UINT8 Pad1[3]; /* 3 */
1630 +} EXT_RNID_REQ, *PEXT_RNID_REQ; /* 79 */
1632 +#define EXT_DEF_RNID_DFORMAT_NONE 0
1633 +#define EXT_DEF_RNID_DFORMAT_TOPO_DISC 0xDF
1635 +/* Request Buffer for Set RNID */
1636 +typedef struct _EXT_SET_RNID_REQ {
1637 + UINT8 IPVersion[2];
1638 + UINT8 UDPPortNumber[2];
1639 + UINT8 IPAddress[16];
1640 + UINT32 Reserved[16];
1641 +} EXT_SET_RNID_REQ, *PEXT_SET_RNID_REQ;
1643 +/* RNID definition and data struct */
1644 +#define SEND_RNID_RSP_SIZE 72
1646 +typedef struct _RNID_DATA
1648 + UINT8 WWN[16]; /* 16 */
1649 + UINT32 UnitType; /* 4 */
1650 + UINT8 PortId[4]; /* 4 */
1651 + UINT32 NumOfAttachedNodes; /* 4 */
1652 + UINT8 IPVersion[2]; /* 2 */
1653 + UINT8 UDPPortNumber[2]; /* 2 */
1654 + UINT8 IPAddress[16]; /* 16 */
1655 + UINT16 Reserved; /* 2 */
1656 + UINT16 TopoDiscFlags; /* 2 */
1657 +} EXT_RNID_DATA, *PEXT_RNID_DATA; /* 52 */
1660 +/* SCSI pass-through */
1661 +typedef struct _EXT_SCSI_PASSTHRU {
1662 + EXT_SCSI_ADDR TargetAddr;
1665 + UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
1666 + UINT32 Reserved[14];
1668 + UINT16 SenseLength;
1669 + UINT8 SenseData[256];
1670 +} EXT_SCSI_PASSTHRU, *PEXT_SCSI_PASSTHRU;
1672 +/* FC SCSI pass-through */
1673 +typedef struct _EXT_FC_SCSI_PASSTHRU {
1674 + EXT_DEST_ADDR FCScsiAddr;
1677 + UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
1678 + UINT32 Reserved[14];
1680 + UINT16 SenseLength;
1681 + UINT8 SenseData[256];
1682 +} EXT_FC_SCSI_PASSTHRU, *PEXT_FC_SCSI_PASSTHRU;
1684 +/* SCSI pass-through direction */
1685 +#define EXT_DEF_SCSI_PASSTHRU_DATA_IN 1
1686 +#define EXT_DEF_SCSI_PASSTHRU_DATA_OUT 2
1689 +/* EXT_REG_AEN Request struct */
1690 +typedef struct _EXT_REG_AEN {
1691 + UINT32 Enable; /* 4; non-0 to enable, 0 to disable. */
1692 + UINT32 Reserved; /* 4 */
1693 +} EXT_REG_AEN, *PEXT_REG_AEN; /* 8 */
1695 +/* EXT_GET_AEN Response struct */
1696 +typedef struct _EXT_ASYNC_EVENT {
1697 + UINT32 AsyncEventCode; /* 4 */
1700 + UINT8 RSCNInfo[EXT_DEF_PORTID_SIZE_ACTUAL];/* 3, BE */
1701 + UINT8 AddrFormat; /* 1 */
1702 + UINT32 Rsvd_1[2]; /* 8 */
1705 + UINT32 Reserved[3]; /* 12 */
1707 +} EXT_ASYNC_EVENT, *PEXT_ASYNC_EVENT; /* 16 */
1710 +/* Asynchronous Event Codes */
1711 +#define EXT_DEF_LIP_OCCURRED 0x8010
1712 +#define EXT_DEF_LINK_UP 0x8011
1713 +#define EXT_DEF_LINK_DOWN 0x8012
1714 +#define EXT_DEF_LIP_RESET 0x8013
1715 +#define EXT_DEF_RSCN 0x8015
1716 +#define EXT_DEF_DEVICE_UPDATE 0x8014
1717 +#define EXT_DEF_ELS 0x8200
1719 +/* Required # of entries in the queue buffer allocated. */
1720 +#define EXT_DEF_MAX_AEN_QUEUE EXT_DEF_MAX_AEN_QUEUE_OS
1721 +#define EXT_DEF_MAX_ELS_BUFS EXT_DEF_MAX_ELS_BUFS_OS
1722 +#define EXT_DEF_SIZE_ELS_BUF EXT_DEF_SIZE_ELS_BUF_OS
1724 +/* Device type to get for EXT_SC_GET_PORT_SUMMARY */
1725 +#define EXT_DEF_GET_KNOWN_DEVICE 0x1
1726 +#define EXT_DEF_GET_VISIBLE_DEVICE 0x2
1727 +#define EXT_DEF_GET_HIDDEN_DEVICE 0x4
1728 +#define EXT_DEF_GET_FABRIC_DEVICE 0x8
1729 +#define EXT_DEF_GET_LOOP_DEVICE 0x10
1731 +/* Each entry in device database */
1732 +typedef struct _EXT_DEVICEDATAENTRY
1734 + UINT8 NodeWWN[8]; /* Node World Wide Name for device */
1735 + UINT8 PortWWN[8]; /* Port World Wide Name for device */
1736 + UINT8 PortID[3]; /* Current PortId for device */
1737 + UINT8 ControlFlags; /* Control flag */
1738 + EXT_SCSI_ADDR TargetAddress; /* scsi address */
1739 + UINT32 DeviceFlags; /* Flags for device */
1740 + UINT16 LoopID; /* Loop ID */
1741 + UINT16 BaseLunNumber;
1742 + UINT32 Reserved[32];
1743 +} EXT_DEVICEDATAENTRY, *PEXT_DEVICEDATAENTRY;
1745 +/* Device database information */
1746 +typedef struct _EXT_DEVICEDATA
1748 + UINT32 TotalDevices; /* Set to total number of device. */
1749 + UINT32 ReturnListEntryCount; /* Set to number of device entries */
1750 + /* returned in list. */
1752 + EXT_DEVICEDATAENTRY EntryList[1]; /* Variable length */
1753 +} EXT_DEVICEDATA, *PEXT_DEVICEDATA;
1756 +/* Swap Target Device Data structure */
1757 +typedef struct _EXT_SWAPTARGETDEVICE
1759 + EXT_DEVICEDATAENTRY CurrentExistDevice;
1760 + EXT_DEVICEDATAENTRY NewDevice;
1761 +} EXT_SWAPTARGETDEVICE, *PEXT_SWAPTARGETDEVICE;
1763 +/* LUN BitMask structure definition, array of 8bit bytes,
1764 + * 1 bit per lun. When bit == 1, the lun is masked.
1765 + * Most significant bit of mask[0] is lun 0.
1766 + * Least significant bit of mask[0] is lun 7.
1768 +typedef struct _EXT_LUN_BIT_MASK {
1769 +#if ((EXT_DEF_MAX_LUN & 0x7) == 0)
1770 + UINT8 mask[EXT_DEF_MAX_LUN >> 3];
1772 + UINT8 mask[(EXT_DEF_MAX_LUN + 8) >> 3 ];
1774 +} EXT_LUN_BIT_MASK, *PEXT_LUN_BIT_MASK;
1777 + * LUN mask bit manipulation macros
1779 + * P = Pointer to an EXT_LUN_BIT_MASK union.
1782 +#define EXT_IS_LUN_BIT_SET(P,L) \
1783 + (((P)->mask[L/8] & (0x80 >> (L%8)))?1:0)
1785 +#define EXT_SET_LUN_BIT(P,L) \
1786 + ((P)->mask[L/8] |= (0x80 >> (L%8)))
1788 +#define EXT_CLR_LUN_BIT(P,L) \
1789 + ((P)->mask[L/8] &= ~(0x80 >> (L%8)))
1791 +#define EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES 1
1792 +#define EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES 256
1795 +#define EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE 32
1797 +#define EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE \
1798 + offsetof(LUN_BITMASK_LIST_BUFFER, asBitmaskEntry)
1801 +#define EXT_DEF_LUN_COUNT 2048
1802 +#define EXT_DEF_LUN_BITMASK_BYTES (EXT_DEF_LUN_COUNT / 8)
1804 +typedef struct _EXT_LUN_BITMASK_ENTRY
1806 + UINT8 NodeName[EXT_DEF_WWN_NAME_SIZE];
1807 + UINT8 PortName[EXT_DEF_WWN_NAME_SIZE];
1812 + UINT32 Reserved5; /* Pad to 32-byte header.*/
1814 + UINT8 Bitmask[EXT_DEF_LUN_BITMASK_BYTES];
1815 +} EXT_LUN_BITMASK_ENTRY, *PEXT_LUN_BITMASK_ENTRY;
1817 +/* Structure as it is stored in the config file.*/
1818 +typedef struct _LUN_BITMASK_LIST
1820 + UINT16 Version; /* Should be LUN_BITMASK_REGISTRY_VERSION */
1821 + UINT16 EntryCount; /* Count of variable entries following.*/
1828 + UINT32 Reserved7; /* Pad to 32-byte header.*/
1830 + EXT_LUN_BITMASK_ENTRY BitmaskEntry[1]; /* Variable-length data.*/
1832 +} EXT_LUN_BITMASK_LIST, *PEXT_LUN_BITMASK_LIST;
1835 +#define EXT_DEF_LUN_BITMASK_LIST_MIN_SIZE \
1836 + (EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
1837 + (sizeof(EXT_DEF_LUN_BITMASK_ENTRY) * EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES))
1838 +#define EXT_DEF_LUN_BITMASK_LIST_MAX_SIZE \
1839 + (EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
1840 + (sizeof(EXT_DEF_LUN_BITMASK_ENTRY) * EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES))
1842 +/* Request Buffer for ELS PT*/
1843 +#define EXT_DEF_WWPN_VALID 1
1844 +#define EXT_DEF_WWNN_VALID 2
1845 +#define EXT_DEF_PID_VALID 4
1846 +typedef struct _EXT_ELS_PT_REQ {
1847 + UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1848 + UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
1849 + UINT8 Id[EXT_DEF_PORTID_SIZE]; /* 4 */
1850 + UINT16 ValidMask; /* 2 */
1851 + UINT16 Lid; /* 2 */
1852 + UINT16 Rxid; /* 2 */
1853 + UINT16 AccRjt; /* 2 */
1854 + UINT32 Reserved; /* 4 */
1855 +} EXT_ELS_PT_REQ, *PEXT_ELS_PT_REQ; /* 32 */
1861 +#endif /* _EXIOCT_H */
1862 --- /dev/null Thu Apr 11 07:25:15 2002
1863 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/exioctln.h Thu Jul 3 15:34:42 2003
1865 +/*****************************************************************************
1866 +* QLOGIC LINUX SOFTWARE
1868 +* QLogic ISP2x00 device driver for Linux 2.5.x
1869 +* Copyright (C) 2003 QLogic Corporation
1872 +* This program is free software; you can redistribute it and/or modify it
1873 +* under the terms of the GNU General Public License as published by the
1874 +* Free Software Foundation; either version 2, or (at your option) any
1877 +* This program is distributed in the hope that it will be useful, but
1878 +* WITHOUT ANY WARRANTY; without even the implied warranty of
1879 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1880 +* General Public License for more details.
1881 +****************************************************************************/
1884 + * File Name: exioctln.h
1886 + Rev 14 February 25, 2003 RL
1887 + - Added EXT_CC_DRIVER_SPECIFIC ioctl command to return
1888 + some driver specific data that can be used by API library
1889 + to determine how to maintain backward compatibility
1890 + of certain features.
1892 + Rev 13 January 31, 2003 RL
1893 + - Changed the value of EXT_DEF_USE_HBASELECT to avoid
1894 + conflicting with older implementation of FO API lib.
1896 + Rev 12 January 20, 2003 RL
1897 + - Added EXT_DEF_USE_HBASELECT definition for use by
1898 + the SETINSTANCE command.
1900 + Rev 11 December 10, 2002 RL
1901 + - Added EXT_CC_SEND_ELS_PASSTHRU_OS definition.
1903 + Rev 10 October 26, 2001 RL
1904 + - Corrected MAX_HBA, MAX_TARGET and MAX_LUN values to 255.
1906 + Rev 9 July 26, 2001 RL
1907 + - Added definition of signed types.
1909 + Rev 8 July 05, 2001 RL
1910 + - Redefined ioctl command values.
1912 + Rev 7 Nov 06, 2000 BN
1913 + - Added EXT_DEF_MAX_AEN_QUEUE_OS define
1914 + - Added define for handle_hba_t
1916 + Rev 6 Oct 25, 2000 BN
1917 + - Added EXT_CC_DRIVER_PROP_OS define
1919 + Rev 5 Oct 25, 2000 BN
1920 + - Redo the copyright header and add AEN details
1922 + Rev 4 Oct 23, 2000 BN
1923 + - Added definition for BOOLEAN
1925 + Rev 3 Oct 23, 2000 BN
1926 + - Added definitions for EXT_ADDR_MODE_OS
1927 + and also include of <linux/ioctl.h>
1929 + Rev 2 Oct 18, 2000 BN
1930 + - Enable API Exention support
1932 + Rev 1 Original version Sep 7, 2000 BN
1937 +#ifndef _EXIOCT_LN_H_
1938 +#define _EXIOCT_LN_H_
1940 +#include <linux/ioctl.h>
1943 +#include <stdint.h>
1947 +#define INT8 int8_t
1948 +#define INT16 int16_t
1949 +#define INT32 int32_t
1950 +#define UINT8 uint8_t
1951 +#define UINT16 uint16_t
1952 +#define UINT32 uint32_t
1953 +#define UINT64 void *
1954 +#define BOOLEAN uint8_t
1956 +typedef struct track_instance {
1958 +} track_instance_t;
1961 +#if BITS_PER_LONG <= 32
1962 +#define EXT_ADDR_MODE_OS EXT_DEF_ADDR_MODE_32
1964 +#define EXT_ADDR_MODE_OS EXT_DEF_ADDR_MODE_64
1968 +#define QLMULTIPATH_MAGIC 'y'
1970 +#define _QLBUILD /* for exioct.h to enable include of qinsdmgt.h */
1974 +#define EXT_DEF_MAX_HBA_OS 255 /* 0 - 0xFE */
1975 +#define EXT_DEF_MAX_BUS_OS 1
1976 +#define EXT_DEF_MAX_TARGET_OS 255 /* 0 - 0xFE */
1977 +#define EXT_DEF_MAX_LUN_OS 255 /* 0 - 0xFE */
1979 +#define EXT_DEF_MAX_AEN_QUEUE_OS 64
1981 +#define EXT_DEF_FC_HEADER_LEN 24
1982 +#define EXT_DEF_ELS_RJT_LENGTH 0x08 /* 8 */
1983 +#define EXT_DEF_ELS_RPS_ACC_LENGTH 0x40 /* 64 */
1984 +#define EXT_DEF_ELS_RLS_ACC_LENGTH 0x1C /* 28 */
1986 +#define EXT_DEF_USE_HBASELECT 0x02 /* bit 1: HbaSelect field now
1987 + * used to specify destination
1988 + * HBA of each command.
1989 + * SetInstance cmd is now
1990 + * issued only once during
1991 + * API initialization.
1995 +/*****************/
1996 +/* Command codes */
1997 +/*****************/
1999 +/*************************************************************/
2000 +/* These are regular/external command codes, starting from 0 */
2001 +/*************************************************************/
2002 +#define EXT_CC_QUERY_OS /* QUERY */ \
2003 + _IOWR(QLMULTIPATH_MAGIC, 0x00, sizeof(EXT_IOCTL))
2004 +#define EXT_CC_SEND_FCCT_PASSTHRU_OS /* FCCT_PASSTHRU */ \
2005 + _IOWR(QLMULTIPATH_MAGIC, 0x01, sizeof(EXT_IOCTL))
2006 +#define EXT_CC_REG_AEN_OS /* REG_AEN */ \
2007 + _IOWR(QLMULTIPATH_MAGIC, 0x02, sizeof(EXT_IOCTL))
2008 +#define EXT_CC_GET_AEN_OS /* GET_AEN */ \
2009 + _IOWR(QLMULTIPATH_MAGIC, 0x03, sizeof(EXT_IOCTL))
2010 +#define EXT_CC_SEND_ELS_RNID_OS /* SEND_ELS_RNID */ \
2011 + _IOWR(QLMULTIPATH_MAGIC, 0x04, sizeof(EXT_IOCTL))
2012 +#define EXT_CC_SCSI_PASSTHRU_OS /* SCSI_PASSTHRU */ \
2013 + _IOWR(QLMULTIPATH_MAGIC, 0x05, sizeof(EXT_IOCTL))
2015 +#define EXT_CC_GET_DATA_OS /* GET_DATA */ \
2016 + _IOWR(QLMULTIPATH_MAGIC, 0x06, sizeof(EXT_IOCTL))
2017 +#define EXT_CC_SET_DATA_OS /* SET_DATA */ \
2018 + _IOWR(QLMULTIPATH_MAGIC, 0x07, sizeof(EXT_IOCTL))
2020 +/*****************************************/
2021 +/* following are internal command codes. */
2022 +/*****************************************/
2023 +#define EXT_CC_RESERVED0A_OS \
2024 + _IOWR(QLMULTIPATH_MAGIC, 0x08, sizeof(EXT_IOCTL))
2025 +#define EXT_CC_RESERVED0B_OS \
2026 + _IOWR(QLMULTIPATH_MAGIC, 0x09, sizeof(EXT_IOCTL))
2028 +#define EXT_CC_RESERVED0C_OS \
2029 + _IOWR(QLMULTIPATH_MAGIC, 0x0a, sizeof(EXT_IOCTL))
2030 +#define EXT_CC_RESERVED0D_OS \
2031 + _IOWR(QLMULTIPATH_MAGIC, 0x0b, sizeof(EXT_IOCTL))
2033 +#define EXT_CC_RESERVED0E_OS \
2034 + _IOWR(QLMULTIPATH_MAGIC, 0x0c, sizeof(EXT_IOCTL))
2035 +#define EXT_CC_RESERVED0F_OS \
2036 + _IOWR(QLMULTIPATH_MAGIC, 0x0d, sizeof(EXT_IOCTL))
2038 +#define EXT_CC_RESERVED0G_OS \
2039 + _IOWR(QLMULTIPATH_MAGIC, 0x0e, sizeof(EXT_IOCTL))
2040 +#define EXT_CC_RESERVED0H_OS \
2041 + _IOWR(QLMULTIPATH_MAGIC, 0x0f, sizeof(EXT_IOCTL))
2043 +#define EXT_CC_RESERVED0I_OS \
2044 + _IOWR(QLMULTIPATH_MAGIC, 0x10, sizeof(EXT_IOCTL))
2045 +#define EXT_CC_RESERVED0J_OS \
2046 + _IOWR(QLMULTIPATH_MAGIC, 0x11, sizeof(EXT_IOCTL))
2048 +#define EXT_CC_RESERVED0Z_OS \
2049 + _IOWR(QLMULTIPATH_MAGIC, 0x21, sizeof(EXT_IOCTL))
2051 +/********************************************************/
2052 +/* These are additional regular/external command codes. */
2053 +/********************************************************/
2054 +#define EXT_CC_SEND_ELS_PASSTHRU_OS \
2055 + _IOWR(QLMULTIPATH_MAGIC, 0x30, sizeof(EXT_IOCTL))
2058 +/********************************************************/
2059 +/* Failover ioctl command codes range from 0xc0 to 0xdf */
2060 +/********************************************************/
2063 +/*******************************************************************/
2064 +/* These are Linux driver implementation specific commands. Values */
2065 +/* start from highest possible value and in decreasing order. */
2066 +/*******************************************************************/
2068 +#define EXT_CC_STARTIOCTL /* STARTIOCTL */ \
2069 + _IOWR(QLMULTIPATH_MAGIC, 0xff, sizeof(EXT_IOCTL))
2070 +#define EXT_CC_SETINSTANCE /* SETINSTANCE */ \
2071 + _IOWR(QLMULTIPATH_MAGIC, 0xfe, sizeof(EXT_IOCTL))
2072 +#define EXT_CC_WWPN_TO_SCSIADDR /* WWPN_TO_SCSIADDR */ \
2073 + _IOWR(QLMULTIPATH_MAGIC, 0xfd, sizeof(EXT_IOCTL))
2074 +#define EXT_CC_DRIVER_SPECIFIC /* DRIVER_SPECIFIC */ \
2075 + _IOWR(QLMULTIPATH_MAGIC, 0xfc, sizeof(EXT_IOCTL))
2079 + * Response struct definition
2081 +typedef struct _EXT_LN_DRV_VERSION {
2086 + UINT8 Reserved[4];
2087 +} EXT_LN_DRV_VERSION; /* 8 */
2089 +typedef struct _EXT_LN_DRIVER_DATA {
2090 + EXT_LN_DRV_VERSION DrvVer; /* 8 */
2091 + UINT32 Reserved[14]; /* 56 */
2092 +} EXT_LN_DRIVER_DATA, *PEXT_LN_DRIVER_DATA; /* 64 */
2100 + * Overrides for Emacs so that we almost follow Linus's tabbing style.
2101 + * Emacs will notice this stuff at the end of the file and automatically
2102 + * adjust the settings for this buffer only. This must remain at the end
2104 + * ---------------------------------------------------------------------------
2105 + * Local variables:
2106 + * c-indent-level: 2
2107 + * c-brace-imaginary-offset: 0
2108 + * c-brace-offset: -2
2109 + * c-argdecl-indent: 2
2110 + * c-label-offset: -2
2111 + * c-continued-statement-offset: 4
2112 + * c-continued-brace-offset: 0
2113 + * indent-tabs-mode: nil
2118 +#endif /* _EXIOCT_LN_H_ */
2120 --- /dev/null Thu Apr 11 07:25:15 2002
2121 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/inioct.h Thu Jul 3 15:34:42 2003
2123 +/******************************************************************************
2124 + * QLOGIC LINUX SOFTWARE
2126 + * QLogic ISP2x00 device driver for Linux 2.5.x
2127 + * Copyright (C) 2003 Qlogic Corporation
2128 + * (www.qlogic.com)
2130 + * This program is free software; you can redistribute it and/or modify it
2131 + * under the terms of the GNU General Public License as published by the
2132 + * Free Software Foundation; either version 2, or (at your option) any
2135 + * This program is distributed in the hope that it will be useful, but
2136 + * WITHOUT ANY WARRANTY; without even the implied warranty of
2137 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2138 + * General Public License for more details.
2140 + ******************************************************************************/
2143 + * File Name: inioct.h
2145 + * San/Device Management Ioctl Header
2146 + * File is created to adhere to Solaris requirement using 8-space tabs.
2148 + * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
2149 + * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
2150 + * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
2153 + * Revision History:
2155 + * Rev. 0 June 15, 2001
2158 + * Rev. 1 June 26, 2001
2159 + * YPL - Change the loop back structure and delete cc that is not used.
2161 + * Rev. 2 June 29, 2001
2162 + * YPL - Use new EXT_CC defines from exioct.h
2164 + * Rev. 3 July 12, 2001
2165 + * RL - Added definitions for loopback mbx command completion codes.
2167 + * Rev. 4 July 12, 2001
2168 + * RL - Added definitions for loopback mbx command completion codes.
2170 + * Rev. 5 October 9, 2002
2171 + * AV - Added definition for Read Option ROM IOCTL.
2179 + * ***********************************************************************
2180 + * X OS type definitions
2181 + * ***********************************************************************
2183 +#ifdef _MSC_VER /* NT */
2188 + * ***********************************************************************
2189 + * INT_IOCTL SubCode definition.
2190 + * These macros are being used for setting SubCode field in EXT_IOCTL
2192 + * ***********************************************************************
2196 + * Currently supported DeviceControl / ioctl command codes
2198 +#define INT_CC_GET_PORT_STAT_FC EXT_CC_RESERVED0A_OS
2199 +#define INT_CC_LOOPBACK EXT_CC_RESERVED0B_OS
2200 +#define INT_CC_UPDATE_OPTION_ROM EXT_CC_RESERVED0C_OS
2201 +#define INT_CC_ADD_TARGET_DEVICE EXT_CC_RESERVED0D_OS
2202 +#define INT_CC_READ_NVRAM EXT_CC_RESERVED0E_OS
2203 +#define INT_CC_UPDATE_NVRAM EXT_CC_RESERVED0F_OS
2204 +#define INT_CC_SWAP_TARGET_DEVICE EXT_CC_RESERVED0G_OS
2205 +#define INT_CC_READ_OPTION_ROM EXT_CC_RESERVED0H_OS
2206 +#define INT_CC_LEGACY_LOOPBACK EXT_CC_RESERVED0Z_OS
2211 +#define INT_SC_NVRAM_HARDWARE 0 /* Save */
2212 +#define INT_SC_NVRAM_DRIVER 1 /* Driver (Apply) */
2213 +#define INT_SC_NVRAM_ALL 2 /* NVRAM/Driver (Save+Apply) */
2216 +typedef struct _INT_LOOPBACK_REQ
2218 + UINT16 Options; /* 2 */
2219 + UINT32 TransferCount; /* 4 */
2220 + UINT32 IterationCount; /* 4 */
2221 + UINT64 BufferAddress; /* 8 */
2222 + UINT32 BufferLength; /* 4 */
2223 + UINT16 Reserved[9]; /* 18 */
2225 +INT_LOOPBACK_REQ, *PINT_LOOPBACK_REQ; /* 408 */
2227 +typedef struct _INT_LOOPBACK_RSP
2229 + UINT64 BufferAddress; /* 8 */
2230 + UINT32 BufferLength; /* 4 */
2231 + UINT16 CompletionStatus; /* 2 */
2232 + UINT16 CrcErrorCount; /* 2 */
2233 + UINT16 DisparityErrorCount; /* 2 */
2234 + UINT16 FrameLengthErrorCount; /* 2 */
2235 + UINT32 IterationCountLastError; /* 4 */
2236 + UINT16 Reserved[8]; /* 16 */
2238 +INT_LOOPBACK_RSP, *PINT_LOOPBACK_RSP; /* 40 */
2240 +/* definition for interpreting CompletionStatus values */
2241 +#define INT_DEF_LB_COMPLETE 0x4000
2242 +#define INT_DEF_LB_PARAM_ERR 0x4006
2243 +#define INT_DEF_LB_LOOP_DOWN 0x400b
2244 +#define INT_DEF_LB_CMD_ERROR 0x400c
2251 +#endif /* _INIOCT_H */
2252 --- /dev/null Thu Apr 11 07:25:15 2002
2253 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/ql2100tp_fw.c Thu Jul 3 15:34:42 2003
2255 +/******************************************************************************
2256 + * QLOGIC LINUX SOFTWARE
2258 + * QLogic ISP2x00 device driver for Linux 2.5.x
2259 + * Copyright (C) 2003 Qlogic Corporation
2260 + * (www.qlogic.com)
2262 + * This program is free software; you can redistribute it and/or modify it
2263 + * under the terms of the GNU General Public License as published by the
2264 + * Free Software Foundation; either version 2, or (at your option) any
2267 + * This program is distributed in the hope that it will be useful, but
2268 + * WITHOUT ANY WARRANTY; without even the implied warranty of
2269 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2270 + * General Public License for more details.
2272 + *************************************************************************/
2274 +/************************************************************************
2276 + * --- ISP2100 Fabric Initiator/Target Firmware --- *
2277 + * with expanded LUN addressing *
2278 + * and FcTape (FCP-2) support *
2281 + ************************************************************************/
2283 + * Firmware Version 1.19.24 (14:02 Jul 16, 2002)
2286 +#ifdef UNIQUE_FW_NAME
2287 +unsigned short fw2100tp_version = 1*1024+19;
2289 +unsigned short risc_code_version = 1*1024+19;
2292 +#ifdef UNIQUE_FW_NAME
2293 +unsigned char fw2100tp_version_str[] = {1,19,24};
2295 +unsigned char firmware_version[] = {1,19,24};
2298 +#ifdef UNIQUE_FW_NAME
2299 +#define fw2100tp_VERSION_STRING "1.19.24"
2301 +#define FW_VERSION_STRING "1.19.24"
2304 +#ifdef UNIQUE_FW_NAME
2305 +unsigned short fw2100tp_addr01 = 0x1000 ;
2307 +unsigned short risc_code_addr01 = 0x1000 ;
2310 +#ifdef UNIQUE_FW_NAME
2311 +unsigned short fw2100tp_code01[] = {
2313 +unsigned short risc_code01[] = {
2315 + 0x0078, 0x102d, 0x0000, 0x95f1, 0x0000, 0x0001, 0x0013, 0x0018,
2316 + 0x0017, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030,
2317 + 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241,
2318 + 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3231, 0x3030, 0x2046, 0x6972,
2319 + 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030,
2320 + 0x312e, 0x3139, 0x2020, 0x2020, 0x2400, 0x2091, 0x2000, 0x20c1,
2321 + 0x0021, 0x2039, 0xffff, 0x2019, 0xaaaa, 0x2760, 0x2069, 0x7fff,
2322 + 0x20c1, 0x0020, 0x2c2c, 0x2d34, 0x2762, 0x236a, 0x2c24, 0x2d04,
2323 + 0x266a, 0x2562, 0xa406, 0x00c0, 0x1052, 0x20c1, 0x0021, 0x2c2c,
2324 + 0x2362, 0x2c04, 0x2562, 0xa306, 0x0040, 0x1052, 0x20c1, 0x0020,
2325 + 0x2039, 0x8fff, 0x20a1, 0xad00, 0x2708, 0x810d, 0x810d, 0x810d,
2326 + 0x810d, 0xa18c, 0x000f, 0x2001, 0x000a, 0xa112, 0xa00e, 0x21a8,
2327 + 0x41a4, 0x3400, 0x8211, 0x00c0, 0x105f, 0x2708, 0x3400, 0xa102,
2328 + 0x0040, 0x106f, 0x0048, 0x106f, 0x20a8, 0xa00e, 0x41a4, 0x20a1,
2329 + 0xa5f1, 0x2009, 0x0000, 0x20a9, 0x070f, 0x41a4, 0x3400, 0x20c9,
2330 + 0xaaff, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x25c7,
2331 + 0x2051, 0xa600, 0x2a70, 0x7762, 0xa786, 0x8fff, 0x0040, 0x1092,
2332 + 0x705f, 0xcd00, 0x705b, 0xccf1, 0x7067, 0x0200, 0x706b, 0x0200,
2333 + 0x0078, 0x109a, 0x705b, 0xbd01, 0x7067, 0x0100, 0x706b, 0x0100,
2334 + 0x705f, 0xbd00, 0x1078, 0x12df, 0x1078, 0x13ca, 0x1078, 0x1577,
2335 + 0x1078, 0x1ce9, 0x1078, 0x42ec, 0x1078, 0x76bf, 0x1078, 0x1355,
2336 + 0x1078, 0x2ac0, 0x1078, 0x4e93, 0x1078, 0x49a3, 0x1078, 0x594a,
2337 + 0x1078, 0x2263, 0x1078, 0x5c43, 0x1078, 0x5485, 0x1078, 0x2162,
2338 + 0x1078, 0x2240, 0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x10cf,
2339 + 0x7820, 0xa086, 0x0002, 0x00c0, 0x10cf, 0x7823, 0x4000, 0x0068,
2340 + 0x10c7, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70,
2341 + 0x7003, 0x0000, 0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000,
2342 + 0xa08e, 0x0003, 0x00c0, 0x10ef, 0x1078, 0x365e, 0x1078, 0x2ae8,
2343 + 0x1078, 0x4ee3, 0x1078, 0x4b66, 0x2009, 0x0100, 0x2104, 0xa082,
2344 + 0x0002, 0x0048, 0x10f3, 0x1078, 0x5966, 0x0078, 0x10d6, 0x1079,
2345 + 0x10f7, 0x0078, 0x10dc, 0x1078, 0x7197, 0x0078, 0x10eb, 0x1101,
2346 + 0x1102, 0x11be, 0x10ff, 0x1246, 0x12dc, 0x12dd, 0x12de, 0x1078,
2347 + 0x1332, 0x007c, 0x127e, 0x0f7e, 0x2091, 0x8000, 0x7000, 0xa086,
2348 + 0x0001, 0x00c0, 0x1198, 0x1078, 0x3aec, 0x2079, 0x0100, 0x7844,
2349 + 0xa005, 0x00c0, 0x1198, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x1078,
2350 + 0x1adf, 0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011,
2351 + 0x8010, 0x73c4, 0x1078, 0x361b, 0x2001, 0xffff, 0x1078, 0x5ae6,
2352 + 0x723c, 0xc284, 0x723e, 0x2001, 0xa60c, 0x2014, 0xc2ac, 0x2202,
2353 + 0x1078, 0x6f9f, 0x2011, 0x0004, 0x1078, 0x8d1b, 0x1078, 0x489e,
2354 + 0x1078, 0x42d4, 0x0040, 0x1144, 0x7087, 0x0001, 0x70bf, 0x0000,
2355 + 0x1078, 0x3c9e, 0x0078, 0x1198, 0x1078, 0x4967, 0x0040, 0x114d,
2356 + 0x7a0c, 0xc2b4, 0x7a0e, 0x0078, 0x1159, 0x1078, 0x90a6, 0x70cc,
2357 + 0xd09c, 0x00c0, 0x1159, 0x7098, 0xa005, 0x0040, 0x1159, 0x1078,
2358 + 0x42b8, 0x70d7, 0x0000, 0x70d3, 0x0000, 0x72cc, 0x2079, 0xa652,
2359 + 0x7804, 0xd0ac, 0x0040, 0x1165, 0xc295, 0x72ce, 0xa296, 0x0004,
2360 + 0x0040, 0x1186, 0x2011, 0x0001, 0x1078, 0x8d1b, 0x7093, 0x0000,
2361 + 0x7097, 0xffff, 0x7003, 0x0002, 0x0f7f, 0x1078, 0x2677, 0x2011,
2362 + 0x0005, 0x1078, 0x70e0, 0x1078, 0x62d1, 0x0c7e, 0x2061, 0x0100,
2363 + 0x60e3, 0x0008, 0x0c7f, 0x127f, 0x0078, 0x119a, 0x7093, 0x0000,
2364 + 0x7097, 0xffff, 0x7003, 0x0002, 0x2011, 0x0005, 0x1078, 0x70e0,
2365 + 0x1078, 0x62d1, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f,
2366 + 0x0f7f, 0x127f, 0x007c, 0x0c7e, 0x20a9, 0x0082, 0x2009, 0x007e,
2367 + 0x017e, 0x027e, 0x037e, 0x2110, 0x027e, 0x2019, 0x0029, 0x1078,
2368 + 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f, 0x027f, 0x017f, 0x1078,
2369 + 0x298e, 0x8108, 0x00f0, 0x11a0, 0x0c7f, 0x706f, 0x0000, 0x7070,
2370 + 0xa084, 0x00ff, 0x7072, 0x709b, 0x0000, 0x007c, 0x127e, 0x2091,
2371 + 0x8000, 0x7000, 0xa086, 0x0002, 0x00c0, 0x1244, 0x7094, 0xa086,
2372 + 0xffff, 0x0040, 0x11d1, 0x1078, 0x2677, 0x1078, 0x62d1, 0x0078,
2373 + 0x1244, 0x70cc, 0xd09c, 0x0040, 0x11fd, 0xd084, 0x0040, 0x11fd,
2374 + 0x0f7e, 0x2079, 0x0100, 0x790c, 0xc1b5, 0x790e, 0x0f7f, 0xd08c,
2375 + 0x0040, 0x11fd, 0x70d0, 0xa086, 0xffff, 0x0040, 0x11f9, 0x1078,
2376 + 0x27f7, 0x1078, 0x62d1, 0x70cc, 0xd094, 0x00c0, 0x1244, 0x2011,
2377 + 0x0001, 0x2019, 0x0000, 0x1078, 0x282f, 0x1078, 0x62d1, 0x0078,
2378 + 0x1244, 0x70d4, 0xa005, 0x00c0, 0x1244, 0x7090, 0xa005, 0x00c0,
2379 + 0x1244, 0x1078, 0x4967, 0x00c0, 0x1244, 0x2001, 0xa653, 0x2004,
2380 + 0xd0ac, 0x0040, 0x1227, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009,
2381 + 0x0000, 0x017e, 0x1078, 0x45c4, 0x00c0, 0x121a, 0x6000, 0xd0ec,
2382 + 0x00c0, 0x1222, 0x017f, 0x8108, 0x00f0, 0x1211, 0x0c7f, 0x157f,
2383 + 0x0078, 0x1227, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x1244, 0x7003,
2384 + 0x0003, 0x7097, 0xffff, 0x2001, 0x0000, 0x1078, 0x24e8, 0x1078,
2385 + 0x3699, 0x2001, 0xa8b2, 0x2004, 0xa086, 0x0005, 0x00c0, 0x123c,
2386 + 0x2011, 0x0000, 0x1078, 0x70e0, 0x2011, 0x0000, 0x1078, 0x70ea,
2387 + 0x1078, 0x62d1, 0x1078, 0x639b, 0x127f, 0x007c, 0x017e, 0x0f7e,
2388 + 0x127e, 0x2091, 0x8000, 0x2079, 0x0100, 0x2009, 0x00f7, 0x1078,
2389 + 0x42a1, 0x7940, 0xa18c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0040,
2390 + 0x125b, 0x7827, 0x0040, 0xd19c, 0x0040, 0x1260, 0x7827, 0x0008,
2391 + 0x007e, 0x037e, 0x157e, 0xa006, 0x1078, 0x5ae6, 0x7900, 0xa18a,
2392 + 0x0003, 0x0050, 0x1289, 0x7954, 0xd1ac, 0x00c0, 0x1289, 0x2009,
2393 + 0x00f8, 0x1078, 0x42a1, 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9,
2394 + 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x1281, 0x7824, 0xd0ac, 0x00c0,
2395 + 0x12ca, 0x00f0, 0x1279, 0x2001, 0x0001, 0x1078, 0x24e8, 0x0078,
2396 + 0x12d5, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0050, 0x00e0,
2397 + 0x128f, 0x2091, 0x6000, 0x00f0, 0x128f, 0x7853, 0x0400, 0x782f,
2398 + 0x0000, 0x2009, 0x00f8, 0x1078, 0x42a1, 0x20a9, 0x000e, 0x0005,
2399 + 0x00f0, 0x129f, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843, 0x0010,
2400 + 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040, 0x12b4,
2401 + 0x7824, 0xd0ac, 0x00c0, 0x12ca, 0x8319, 0x00c0, 0x12aa, 0x2009,
2402 + 0xa632, 0x2104, 0x8000, 0x200a, 0xa084, 0xfff0, 0x0040, 0x12c4,
2403 + 0x200b, 0x0000, 0x1078, 0x2588, 0x2001, 0x0001, 0x1078, 0x24e8,
2404 + 0x0078, 0x12d3, 0x2001, 0xa632, 0x2003, 0x0000, 0x7828, 0xc09d,
2405 + 0x782a, 0x7827, 0x0048, 0x7853, 0x0400, 0x157f, 0x037f, 0x007f,
2406 + 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c, 0x007c, 0x2a70,
2407 + 0x2061, 0xa8ad, 0x2063, 0x0001, 0x6007, 0x0013, 0x600b, 0x0018,
2408 + 0x600f, 0x0017, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
2409 + 0x12f5, 0x7053, 0xffff, 0x0078, 0x12f7, 0x7053, 0x0000, 0x7057,
2410 + 0xffff, 0x706f, 0x0000, 0x7073, 0x0000, 0x1078, 0x90a6, 0x2061,
2411 + 0xa88d, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f,
2412 + 0x0200, 0x6013, 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f,
2413 + 0x07d0, 0x2061, 0xa895, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b,
2414 + 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b,
2415 + 0x0001, 0x601f, 0x0000, 0x2061, 0xa8a5, 0x6003, 0x514c, 0x6007,
2416 + 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001, 0xa626, 0x2003,
2417 + 0x0000, 0x007c, 0x2091, 0x8000, 0x0068, 0x1334, 0x007e, 0x017e,
2418 + 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, 0x133a, 0x017f, 0x792e,
2419 + 0x007f, 0x782a, 0x007f, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002,
2420 + 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2079, 0xa600,
2421 + 0x7803, 0x0005, 0x0078, 0x1352, 0x007c, 0x2071, 0xa600, 0x715c,
2422 + 0x712e, 0x2021, 0x0001, 0xa190, 0x002d, 0xa298, 0x002d, 0x0048,
2423 + 0x136b, 0x7060, 0xa302, 0x00c8, 0x136b, 0x220a, 0x2208, 0x2310,
2424 + 0x8420, 0x0078, 0x135d, 0x200b, 0x0000, 0x74aa, 0x74ae, 0x007c,
2425 + 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa600, 0x70ac, 0xa0ea,
2426 + 0x0010, 0x00c8, 0x137e, 0xa06e, 0x0078, 0x1388, 0x8001, 0x70ae,
2427 + 0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000,
2428 + 0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa600, 0x127e, 0x2091,
2429 + 0x8000, 0x70ac, 0x8001, 0x00c8, 0x1398, 0xa06e, 0x0078, 0x13a1,
2430 + 0x70ae, 0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807,
2431 + 0x0000, 0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000,
2432 + 0x2071, 0xa600, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70ac, 0x8000,
2433 + 0x70ae, 0x127f, 0x0e7f, 0x007c, 0x8dff, 0x0040, 0x13c0, 0x6804,
2434 + 0x6807, 0x0000, 0x007e, 0x1078, 0x13a4, 0x0d7f, 0x0078, 0x13b4,
2435 + 0x007c, 0x0e7e, 0x2071, 0xa600, 0x70ac, 0xa08a, 0x0010, 0xa00d,
2436 + 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa8d6, 0x7007, 0x0000, 0x701b,
2437 + 0x0000, 0x701f, 0x0000, 0x2071, 0x0000, 0x7010, 0xa085, 0x8004,
2438 + 0x7012, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x0e7e, 0x2270,
2439 + 0x700b, 0x0000, 0x2071, 0xa8d6, 0x7018, 0xa088, 0xa8df, 0x220a,
2440 + 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x00c0, 0x13f6,
2441 + 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1408, 0x0f7f, 0x0e7f, 0x127f,
2442 + 0x007c, 0x0e7e, 0x2071, 0xa8d6, 0x7004, 0xa005, 0x00c0, 0x1406,
2443 + 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1408, 0x0f7f, 0x0e7f, 0x007c,
2444 + 0x7000, 0x0079, 0x140b, 0x140f, 0x1479, 0x1496, 0x1496, 0x7018,
2445 + 0x711c, 0xa106, 0x00c0, 0x1417, 0x7007, 0x0000, 0x007c, 0x0d7e,
2446 + 0xa180, 0xa8df, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007,
2447 + 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c,
2448 + 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804,
2449 + 0x0d7f, 0xd084, 0x0040, 0x1439, 0x7007, 0x0001, 0x1078, 0x143e,
2450 + 0x007c, 0x7007, 0x0002, 0x1078, 0x1454, 0x007c, 0x017e, 0x027e,
2451 + 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1449, 0x2110,
2452 + 0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
2453 + 0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e, 0x147e,
2454 + 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c,
2455 + 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1468, 0x2110, 0xa006,
2456 + 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020, 0x3300,
2457 + 0x7016, 0x7803, 0x0001, 0x157f, 0x147f, 0x137f, 0x027f, 0x017f,
2458 + 0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0xa6fa, 0x20a1, 0x0018,
2459 + 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
2460 + 0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, 0x700b,
2461 + 0xa6f5, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e, 0x147e,
2462 + 0x157e, 0x2001, 0xa729, 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026,
2463 + 0x2001, 0xa72a, 0x20ac, 0x53a6, 0x2099, 0xa72b, 0x20a1, 0x0018,
2464 + 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
2465 + 0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b,
2466 + 0xa726, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0e7e,
2467 + 0x2071, 0xa8d6, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803, 0x0002,
2468 + 0xd1fc, 0x0040, 0x14d0, 0xa18c, 0x0700, 0x7004, 0x1079, 0x14d4,
2469 + 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x1408, 0x14dc, 0x1509, 0x1531,
2470 + 0x1564, 0x14da, 0x0078, 0x14da, 0xa18c, 0x0700, 0x00c0, 0x1502,
2471 + 0x137e, 0x147e, 0x157e, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803,
2472 + 0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f,
2473 + 0x137f, 0x700c, 0xa005, 0x0040, 0x151e, 0x1078, 0x143e, 0x007c,
2474 + 0x7008, 0xa080, 0x0002, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078,
2475 + 0x1408, 0x007c, 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x0078,
2476 + 0x14fd, 0xa18c, 0x0700, 0x00c0, 0x1514, 0x700c, 0xa005, 0x0040,
2477 + 0x151e, 0x1078, 0x1454, 0x007c, 0x7008, 0xa080, 0x0002, 0x2003,
2478 + 0x0200, 0x7007, 0x0000, 0x1078, 0x1408, 0x007c, 0x0d7e, 0x7008,
2479 + 0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e, 0x783c,
2480 + 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078, 0x1408,
2481 + 0x007c, 0xa18c, 0x0700, 0x00c0, 0x155e, 0x137e, 0x147e, 0x157e,
2482 + 0x2001, 0xa6f8, 0x2004, 0xa080, 0x000d, 0x20a0, 0x2099, 0x0014,
2483 + 0x7803, 0x0040, 0x20a9, 0x0020, 0x53a5, 0x2001, 0xa6fa, 0x2004,
2484 + 0xd0bc, 0x0040, 0x1554, 0x2001, 0xa703, 0x2004, 0xa080, 0x000d,
2485 + 0x20a0, 0x20a9, 0x0020, 0x53a5, 0x157f, 0x147f, 0x137f, 0x7007,
2486 + 0x0000, 0x1078, 0x4f8c, 0x1078, 0x1408, 0x007c, 0x2011, 0x8003,
2487 + 0x1078, 0x361b, 0x0078, 0x1562, 0xa18c, 0x0700, 0x00c0, 0x1571,
2488 + 0x2001, 0xa728, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x1408,
2489 + 0x007c, 0x2011, 0x8004, 0x1078, 0x361b, 0x0078, 0x1575, 0x127e,
2490 + 0x2091, 0x2100, 0x2079, 0x0030, 0x2071, 0xa8e7, 0x7803, 0x0004,
2491 + 0x7003, 0x0000, 0x700f, 0xa8ed, 0x7013, 0xa8ed, 0x780f, 0x0076,
2492 + 0x7803, 0x0004, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007, 0x0079,
2493 + 0x1591, 0x1599, 0x15df, 0x1599, 0x1599, 0x1599, 0x15c4, 0x15a8,
2494 + 0x159d, 0xa085, 0x0001, 0x0078, 0x15f9, 0x684c, 0xd0bc, 0x0040,
2495 + 0x1599, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078, 0x15e7,
2496 + 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0, 0x1599, 0x684c, 0xd0bc,
2497 + 0x0040, 0x1599, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804, 0x681a,
2498 + 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004,
2499 + 0x6832, 0x6858, 0x0078, 0x15ef, 0xa18c, 0x00ff, 0xa186, 0x0015,
2500 + 0x00c0, 0x1599, 0x684c, 0xd0ac, 0x0040, 0x1599, 0x6804, 0x681a,
2501 + 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004,
2502 + 0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0078, 0x15ef, 0x684c,
2503 + 0xd0ac, 0x0040, 0x1599, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c,
2504 + 0x000f, 0xa188, 0x206a, 0x210c, 0x6932, 0x2d08, 0x691a, 0x6826,
2505 + 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980,
2506 + 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a,
2507 + 0x2004, 0x82ff, 0x0040, 0x161c, 0xa280, 0x0004, 0x0d7e, 0x206c,
2508 + 0x684c, 0xd0dc, 0x00c0, 0x1618, 0x1078, 0x158c, 0x0040, 0x1618,
2509 + 0x0d7f, 0xa280, 0x0000, 0x2003, 0x0002, 0xa016, 0x0078, 0x161c,
2510 + 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e, 0x027e,
2511 + 0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005, 0x00c0,
2512 + 0x1630, 0x7206, 0x2001, 0x1651, 0x007e, 0x2260, 0x0078, 0x17e0,
2513 + 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108, 0xa182,
2514 + 0xa908, 0x0048, 0x163d, 0x2009, 0xa8ed, 0x710e, 0x7010, 0xa102,
2515 + 0xa082, 0x0009, 0x0040, 0x1648, 0xa080, 0x001b, 0x00c0, 0x164b,
2516 + 0x2009, 0x0138, 0x200a, 0x7000, 0xa005, 0x00c0, 0x1651, 0x1078,
2517 + 0x17c1, 0x127f, 0x007c, 0x127e, 0x027e, 0x037e, 0x0c7e, 0x007e,
2518 + 0x2091, 0x2100, 0x007f, 0x047f, 0x037f, 0x027f, 0x0d7e, 0x0c7e,
2519 + 0x2460, 0x6110, 0x2168, 0x6a62, 0x6b5e, 0xa005, 0x0040, 0x16dd,
2520 + 0x6808, 0xa005, 0x0040, 0x174a, 0x7000, 0xa005, 0x00c0, 0x1672,
2521 + 0x0078, 0x16d2, 0x700c, 0x7110, 0xa106, 0x00c0, 0x1753, 0x7004,
2522 + 0xa406, 0x00c0, 0x16d2, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040,
2523 + 0x168f, 0x047e, 0x1078, 0x1913, 0x047f, 0x2460, 0x6010, 0xa080,
2524 + 0x0002, 0x2004, 0xa005, 0x0040, 0x174a, 0x0078, 0x166c, 0x2001,
2525 + 0x0207, 0x2004, 0xd09c, 0x00c0, 0x167b, 0x7804, 0xa084, 0x6000,
2526 + 0x0040, 0x16a0, 0xa086, 0x6000, 0x0040, 0x16a0, 0x0078, 0x167b,
2527 + 0x7100, 0xa186, 0x0002, 0x00c0, 0x16c0, 0x0e7e, 0x2b68, 0x6818,
2528 + 0x2060, 0x1078, 0x203f, 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0,
2529 + 0x16b5, 0x7108, 0x720c, 0x0078, 0x16b7, 0x7110, 0x7214, 0x6810,
2530 + 0xa100, 0x6812, 0x6814, 0xa201, 0x6816, 0x0e7f, 0x0078, 0x16c4,
2531 + 0xa186, 0x0001, 0x00c0, 0x16cc, 0x7820, 0x6910, 0xa100, 0x6812,
2532 + 0x7824, 0x6914, 0xa101, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000,
2533 + 0x7004, 0x2060, 0x6100, 0xa18e, 0x0004, 0x00c0, 0x1753, 0x2009,
2534 + 0x0048, 0x1078, 0x775c, 0x0078, 0x1753, 0x6808, 0xa005, 0x0040,
2535 + 0x174a, 0x7000, 0xa005, 0x00c0, 0x16e7, 0x0078, 0x174a, 0x700c,
2536 + 0x7110, 0xa106, 0x00c0, 0x16f0, 0x7004, 0xa406, 0x00c0, 0x174a,
2537 + 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, 0x1704, 0x047e, 0x1078,
2538 + 0x1913, 0x047f, 0x2460, 0x6010, 0xa080, 0x0002, 0x2004, 0xa005,
2539 + 0x0040, 0x174a, 0x0078, 0x16e1, 0x2001, 0x0207, 0x2004, 0xd09c,
2540 + 0x00c0, 0x16f0, 0x2001, 0x0005, 0x2004, 0xd08c, 0x00c0, 0x16f6,
2541 + 0x7804, 0xa084, 0x6000, 0x0040, 0x171b, 0xa086, 0x6000, 0x0040,
2542 + 0x171b, 0x0078, 0x16f0, 0x7007, 0x0000, 0xa016, 0x2218, 0x7000,
2543 + 0xa08e, 0x0001, 0x0040, 0x173c, 0xa08e, 0x0002, 0x00c0, 0x174a,
2544 + 0x0c7e, 0x0e7e, 0x6818, 0x2060, 0x1078, 0x203f, 0x2804, 0xac70,
2545 + 0x6034, 0xd09c, 0x00c0, 0x1738, 0x7308, 0x720c, 0x0078, 0x173a,
2546 + 0x7310, 0x7214, 0x0e7f, 0x0c7f, 0x7820, 0xa318, 0x7824, 0xa211,
2547 + 0x6810, 0xa300, 0x6812, 0x6814, 0xa201, 0x6816, 0x7803, 0x0004,
2548 + 0x7003, 0x0000, 0x6100, 0xa18e, 0x0004, 0x00c0, 0x1753, 0x2009,
2549 + 0x0048, 0x1078, 0x775c, 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e,
2550 + 0x0e7e, 0x027e, 0x037e, 0x047e, 0x057e, 0x2071, 0xa8e7, 0x7000,
2551 + 0xa086, 0x0000, 0x0040, 0x17ba, 0x7004, 0xac06, 0x00c0, 0x17ab,
2552 + 0x2079, 0x0030, 0x7000, 0xa086, 0x0003, 0x0040, 0x17ab, 0x7804,
2553 + 0xd0fc, 0x00c0, 0x17a7, 0x20e1, 0x6000, 0x2011, 0x0032, 0x2001,
2554 + 0x0208, 0x200c, 0x2001, 0x0209, 0x2004, 0xa106, 0x00c0, 0x176f,
2555 + 0x8211, 0x00c0, 0x1777, 0x7804, 0xd0fc, 0x00c0, 0x17a7, 0x1078,
2556 + 0x1b22, 0x027e, 0x057e, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0,
2557 + 0x178d, 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007,
2558 + 0x0000, 0x057f, 0x027f, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001,
2559 + 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0078, 0x17ab, 0x1078,
2560 + 0x1913, 0x0078, 0x175f, 0x157e, 0x20a9, 0x0009, 0x2009, 0xa8ed,
2561 + 0x2104, 0xac06, 0x00c0, 0x17b5, 0x200a, 0xa188, 0x0003, 0x00f0,
2562 + 0x17b0, 0x157f, 0x057f, 0x047f, 0x037f, 0x027f, 0x0e7f, 0x0f7f,
2563 + 0x007c, 0x700c, 0x7110, 0xa106, 0x00c0, 0x17c9, 0x7003, 0x0000,
2564 + 0x007c, 0x2104, 0x7006, 0x2060, 0x8108, 0x211c, 0x8108, 0x2124,
2565 + 0x8108, 0xa182, 0xa908, 0x0048, 0x17d7, 0x2009, 0xa8ed, 0x7112,
2566 + 0x700c, 0xa106, 0x00c0, 0x17e0, 0x2001, 0x0138, 0x2003, 0x0008,
2567 + 0x8cff, 0x00c0, 0x17e7, 0x1078, 0x1b4d, 0x0078, 0x1854, 0x6010,
2568 + 0x2068, 0x2d58, 0x6828, 0xa406, 0x00c0, 0x17f2, 0x682c, 0xa306,
2569 + 0x0040, 0x182f, 0x601c, 0xa086, 0x0008, 0x0040, 0x182f, 0x6024,
2570 + 0xd0f4, 0x00c0, 0x181c, 0xd0d4, 0x0040, 0x1818, 0x6038, 0xa402,
2571 + 0x6034, 0xa303, 0x0040, 0x1806, 0x00c8, 0x1818, 0x643a, 0x6336,
2572 + 0x6c2a, 0x6b2e, 0x047e, 0x037e, 0x2400, 0x6c7c, 0xa402, 0x6812,
2573 + 0x2300, 0x6b80, 0xa303, 0x6816, 0x037f, 0x047f, 0x0078, 0x181c,
2574 + 0x1078, 0x9053, 0x0040, 0x17e3, 0x2001, 0xa674, 0x2004, 0xd0b4,
2575 + 0x00c0, 0x182b, 0x6018, 0x2004, 0xd0bc, 0x00c0, 0x182b, 0x6817,
2576 + 0x7fff, 0x6813, 0xffff, 0x1078, 0x208a, 0x00c0, 0x17e3, 0x0c7e,
2577 + 0x7004, 0x2060, 0x6024, 0xc0d4, 0x6026, 0x0c7f, 0x684c, 0xd0f4,
2578 + 0x0040, 0x1840, 0x6817, 0xffff, 0x6813, 0xffff, 0x0078, 0x17e3,
2579 + 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc,
2580 + 0x000f, 0x2009, 0x0011, 0x1078, 0x1855, 0x0040, 0x1853, 0x2009,
2581 + 0x0001, 0x1078, 0x1855, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x18ec,
2582 + 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1877, 0xd0f4, 0x00c0,
2583 + 0x1887, 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x1867, 0x18ce,
2584 + 0x188e, 0x188e, 0x18ce, 0x18ce, 0x18c6, 0x18ce, 0x188e, 0x18ce,
2585 + 0x1894, 0x1894, 0x18ce, 0x18ce, 0x18ce, 0x18bd, 0x1894, 0xc0fc,
2586 + 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0x0d7e, 0xd99c, 0x0040,
2587 + 0x18d1, 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x18d1, 0xc0f4,
2588 + 0x6852, 0x6b6c, 0x6a70, 0x0d7e, 0x0078, 0x18d8, 0x6b08, 0x6a0c,
2589 + 0x6d00, 0x6c04, 0x0078, 0x18d1, 0x7b0c, 0xd3bc, 0x0040, 0x18b5,
2590 + 0x7004, 0x0e7e, 0x2070, 0x701c, 0x0e7f, 0xa086, 0x0008, 0x00c0,
2591 + 0x18b5, 0x7b08, 0xa39c, 0x0fff, 0x2d20, 0x0d7f, 0x0d7e, 0x6a14,
2592 + 0x82ff, 0x00c0, 0x18b0, 0x6810, 0xa302, 0x0048, 0x18b0, 0x6b10,
2593 + 0x2011, 0x0000, 0x2468, 0x0078, 0x18b7, 0x6b10, 0x6a14, 0x6d00,
2594 + 0x6c04, 0x6f08, 0x6e0c, 0x0078, 0x18d1, 0x0d7f, 0x0d7e, 0x6834,
2595 + 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x18ce, 0x0d7f, 0x1078,
2596 + 0x2026, 0x00c0, 0x1855, 0xa00e, 0x0078, 0x18ec, 0x0d7f, 0x1078,
2597 + 0x1332, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902,
2598 + 0x7000, 0x8000, 0x7002, 0x0d7f, 0x6828, 0xa300, 0x682a, 0x682c,
2599 + 0xa201, 0x682e, 0x2300, 0x6b10, 0xa302, 0x6812, 0x2200, 0x6a14,
2600 + 0xa203, 0x6816, 0x1078, 0x2026, 0x007c, 0x1078, 0x1332, 0x1078,
2601 + 0x1c97, 0x7004, 0x2060, 0x0d7e, 0x6010, 0x2068, 0x7003, 0x0000,
2602 + 0x1078, 0x1af4, 0x1078, 0x8d06, 0x0040, 0x190c, 0x6808, 0x8001,
2603 + 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x682b, 0xffff, 0x682f,
2604 + 0xffff, 0x6850, 0xc0bd, 0x6852, 0x0d7f, 0x1078, 0x8a01, 0x0078,
2605 + 0x1adb, 0x1078, 0x1332, 0x127e, 0x2091, 0x2100, 0x007e, 0x017e,
2606 + 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700,
2607 + 0x00c0, 0x18ef, 0xa184, 0x0003, 0xa086, 0x0003, 0x0040, 0x1911,
2608 + 0x7000, 0x0079, 0x192b, 0x1933, 0x1935, 0x1a34, 0x1ab2, 0x1ac9,
2609 + 0x1933, 0x1933, 0x1933, 0x1078, 0x1332, 0x8001, 0x7002, 0xa184,
2610 + 0x0880, 0x00c0, 0x194a, 0x8aff, 0x0040, 0x19d4, 0x2009, 0x0001,
2611 + 0x1078, 0x1855, 0x0040, 0x1adb, 0x2009, 0x0001, 0x1078, 0x1855,
2612 + 0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x00c0,
2613 + 0x19b2, 0x027e, 0x037e, 0x017e, 0x7808, 0xd0ec, 0x00c0, 0x1962,
2614 + 0x7c20, 0x7d24, 0x7e30, 0x7f34, 0x7803, 0x0009, 0x7003, 0x0004,
2615 + 0x0078, 0x1964, 0x1078, 0x1bd7, 0x017f, 0xd194, 0x0040, 0x196b,
2616 + 0x8aff, 0x0040, 0x19a1, 0x6b28, 0x6a2c, 0x2400, 0x686e, 0xa31a,
2617 + 0x2500, 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x0c7e, 0x7004, 0x2060,
2618 + 0x6024, 0xd0f4, 0x00c0, 0x197e, 0x633a, 0x6236, 0x0c7f, 0x2400,
2619 + 0x6910, 0xa100, 0x6812, 0x2500, 0x6914, 0xa101, 0x6816, 0x037f,
2620 + 0x027f, 0x2600, 0x681e, 0x2700, 0x6822, 0x1078, 0x203f, 0x2a00,
2621 + 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x6850, 0xc0fd, 0x6852,
2622 + 0x6808, 0x8001, 0x680a, 0x00c0, 0x19a7, 0x684c, 0xd0e4, 0x0040,
2623 + 0x19a7, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x7000,
2624 + 0xa086, 0x0004, 0x0040, 0x1adb, 0x7003, 0x0000, 0x1078, 0x17c1,
2625 + 0x0078, 0x1adb, 0x057e, 0x7d0c, 0xd5bc, 0x00c0, 0x19b9, 0x1078,
2626 + 0xa57e, 0x057f, 0x1078, 0x1af4, 0x0f7e, 0x7004, 0x2078, 0x1078,
2627 + 0x4963, 0x0040, 0x19c6, 0x7824, 0xc0f5, 0x7826, 0x0f7f, 0x682b,
2628 + 0xffff, 0x682f, 0xffff, 0x6808, 0x8001, 0x680a, 0x697c, 0x6912,
2629 + 0x6980, 0x6916, 0x0078, 0x1adb, 0x7004, 0x0c7e, 0x2060, 0x6024,
2630 + 0x0c7f, 0xd0f4, 0x0040, 0x19e1, 0x6808, 0x8001, 0x680a, 0x0078,
2631 + 0x19f5, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005, 0x00c0, 0x19f9,
2632 + 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0, 0x19f5, 0x7004,
2633 + 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x1078, 0x17c1, 0x0078,
2634 + 0x1adb, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914, 0xa183, 0x0000,
2635 + 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa192, 0x0841, 0x00c8,
2636 + 0x18ef, 0xa188, 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104,
2637 + 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b, 0x810b, 0x1078, 0x1b5e,
2638 + 0x7803, 0x0004, 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc,
2639 + 0x0040, 0x1a1e, 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x0076,
2640 + 0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, 0x1078, 0x775c,
2641 + 0x1078, 0x1b92, 0x0040, 0x19f5, 0x8001, 0x7002, 0xd194, 0x0040,
2642 + 0x1a46, 0x7804, 0xd0fc, 0x00c0, 0x191b, 0x8aff, 0x0040, 0x1adb,
2643 + 0x2009, 0x0001, 0x1078, 0x1855, 0x0078, 0x1adb, 0xa184, 0x0880,
2644 + 0x00c0, 0x1a53, 0x8aff, 0x0040, 0x1adb, 0x2009, 0x0001, 0x1078,
2645 + 0x1855, 0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc,
2646 + 0x00c0, 0x1a93, 0x027e, 0x037e, 0x7808, 0xd0ec, 0x00c0, 0x1a66,
2647 + 0x7803, 0x0009, 0x7003, 0x0004, 0x0078, 0x1a68, 0x1078, 0x1bd7,
2648 + 0x6b28, 0x6a2c, 0x1078, 0x203f, 0x0d7e, 0x0f7e, 0x2d78, 0x2804,
2649 + 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1a83, 0x6808, 0x2008, 0xa31a,
2650 + 0x680c, 0xa213, 0x7810, 0xa100, 0x7812, 0x690c, 0x7814, 0xa101,
2651 + 0x7816, 0x0078, 0x1a8f, 0x6810, 0x2008, 0xa31a, 0x6814, 0xa213,
2652 + 0x7810, 0xa100, 0x7812, 0x6914, 0x7814, 0xa101, 0x7816, 0x0f7f,
2653 + 0x0d7f, 0x0078, 0x196d, 0x057e, 0x7d0c, 0x1078, 0xa57e, 0x057f,
2654 + 0x1078, 0x1af4, 0x0f7e, 0x7004, 0x2078, 0x1078, 0x4963, 0x0040,
2655 + 0x1aa4, 0x7824, 0xc0f5, 0x7826, 0x0f7f, 0x682b, 0xffff, 0x682f,
2656 + 0xffff, 0x6808, 0x8001, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916,
2657 + 0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d,
2658 + 0x0040, 0x1ac5, 0x6808, 0x8001, 0x680a, 0x00c0, 0x1ac5, 0x7004,
2659 + 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x1078, 0x17c1, 0x0078,
2660 + 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6010,
2661 + 0xa005, 0x0040, 0x1ac5, 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28,
2662 + 0x6b2c, 0x1078, 0x17e0, 0x017f, 0x007f, 0x127f, 0x007c, 0x127e,
2663 + 0x2091, 0x2100, 0x7000, 0xa086, 0x0003, 0x00c0, 0x1af2, 0x700c,
2664 + 0x7110, 0xa106, 0x0040, 0x1af2, 0x20e1, 0x9028, 0x700f, 0xa8ed,
2665 + 0x7013, 0xa8ed, 0x127f, 0x007c, 0x0c7e, 0x1078, 0x1b22, 0x20e1,
2666 + 0x9028, 0x700c, 0x7110, 0xa106, 0x0040, 0x1b19, 0x2104, 0xa005,
2667 + 0x0040, 0x1b08, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001, 0x600a,
2668 + 0xa188, 0x0003, 0xa182, 0xa908, 0x0048, 0x1b10, 0x2009, 0xa8ed,
2669 + 0x7112, 0x700c, 0xa106, 0x00c0, 0x1af9, 0x2011, 0x0008, 0x0078,
2670 + 0x1af9, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, 0x0138, 0x2202,
2671 + 0x0c7f, 0x007c, 0x2001, 0x0138, 0x2014, 0x2003, 0x0000, 0x2021,
2672 + 0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc, 0x00c0, 0x1b3f, 0x2001,
2673 + 0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0, 0x1b3f, 0x2001, 0x0111,
2674 + 0x201c, 0x83ff, 0x00c0, 0x1b3f, 0x8421, 0x00c0, 0x1b29, 0x007c,
2675 + 0x2011, 0x0201, 0x2009, 0x003c, 0x2204, 0xa005, 0x00c0, 0x1b4c,
2676 + 0x8109, 0x00c0, 0x1b44, 0x007c, 0x007c, 0x1078, 0x1b40, 0x0040,
2677 + 0x1b55, 0x780c, 0xd0a4, 0x0040, 0x1b5b, 0x1078, 0x1af4, 0xa085,
2678 + 0x0001, 0x0078, 0x1b5d, 0x1078, 0x1b92, 0x007c, 0x0e7e, 0x2071,
2679 + 0x0200, 0x7808, 0xa084, 0xf000, 0xa10d, 0x1078, 0x1b22, 0x2019,
2680 + 0x5000, 0x8319, 0x0040, 0x1b7c, 0x2001, 0xa908, 0x2004, 0xa086,
2681 + 0x0000, 0x0040, 0x1b7c, 0x2001, 0x0021, 0xd0fc, 0x0040, 0x1b69,
2682 + 0x1078, 0x1eaa, 0x0078, 0x1b67, 0x20e1, 0x7000, 0x7324, 0x7420,
2683 + 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e, 0x702f,
2684 + 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0138, 0x2202,
2685 + 0x0e7f, 0x007c, 0x027e, 0x2001, 0x015d, 0x2001, 0x0000, 0x7908,
2686 + 0xa18c, 0x0fff, 0xa182, 0x0ffd, 0x0048, 0x1ba0, 0x2009, 0x0000,
2687 + 0xa190, 0x0007, 0xa294, 0x1ff8, 0x8214, 0x8214, 0x8214, 0x2001,
2688 + 0x020a, 0x82ff, 0x0040, 0x1bb5, 0x20e1, 0x6000, 0x200c, 0x200c,
2689 + 0x200c, 0x200c, 0x8211, 0x00c0, 0x1bae, 0x20e1, 0x7000, 0x200c,
2690 + 0x200c, 0x7003, 0x0000, 0x20e1, 0x6000, 0x2001, 0x0208, 0x200c,
2691 + 0x2001, 0x0209, 0x2004, 0xa106, 0x0040, 0x1bd4, 0x1078, 0x1b40,
2692 + 0x0040, 0x1bd2, 0x7908, 0xd1ec, 0x00c0, 0x1bd4, 0x790c, 0xd1a4,
2693 + 0x0040, 0x1b97, 0x1078, 0x1af4, 0xa006, 0x027f, 0x007c, 0x7c20,
2694 + 0x7d24, 0x7e30, 0x7f34, 0x700c, 0x7110, 0xa106, 0x0040, 0x1c69,
2695 + 0x7004, 0x017e, 0x210c, 0xa106, 0x017f, 0x0040, 0x1c69, 0x0d7e,
2696 + 0x0c7e, 0x216c, 0x2d00, 0xa005, 0x0040, 0x1c67, 0x681c, 0xa086,
2697 + 0x0008, 0x0040, 0x1c67, 0x6824, 0xd0d4, 0x00c0, 0x1c67, 0x6810,
2698 + 0x2068, 0x6850, 0xd0fc, 0x0040, 0x1c29, 0x8108, 0x2104, 0x6b2c,
2699 + 0xa306, 0x00c0, 0x1c67, 0x8108, 0x2104, 0x6a28, 0xa206, 0x00c0,
2700 + 0x1c67, 0x6850, 0xc0fc, 0xc0f5, 0x6852, 0x686c, 0x7822, 0x6870,
2701 + 0x7826, 0x681c, 0x7832, 0x6820, 0x7836, 0x6818, 0x2060, 0x6034,
2702 + 0xd09c, 0x0040, 0x1c24, 0x6830, 0x2004, 0xac68, 0x6808, 0x783a,
2703 + 0x680c, 0x783e, 0x0078, 0x1c65, 0xa006, 0x783a, 0x783e, 0x0078,
2704 + 0x1c65, 0x8108, 0x2104, 0xa005, 0x00c0, 0x1c67, 0x6b2c, 0xa306,
2705 + 0x00c0, 0x1c67, 0x8108, 0x2104, 0xa005, 0x00c0, 0x1c67, 0x6a28,
2706 + 0xa206, 0x00c0, 0x1c67, 0x6850, 0xc0f5, 0x6852, 0x6830, 0x2004,
2707 + 0x6918, 0xa160, 0xa180, 0x000d, 0x2004, 0xd09c, 0x00c0, 0x1c57,
2708 + 0x6008, 0x7822, 0x686e, 0x600c, 0x7826, 0x6872, 0x6000, 0x7832,
2709 + 0x6004, 0x7836, 0xa006, 0x783a, 0x783e, 0x0078, 0x1c65, 0x6010,
2710 + 0x7822, 0x686e, 0x6014, 0x7826, 0x6872, 0x6000, 0x7832, 0x6004,
2711 + 0x7836, 0x6008, 0x783a, 0x600c, 0x783e, 0x7803, 0x0011, 0x0c7f,
2712 + 0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0x027e, 0x2071, 0xa8e7,
2713 + 0x2079, 0x0030, 0x2011, 0x0050, 0x7000, 0xa086, 0x0000, 0x0040,
2714 + 0x1c92, 0x8211, 0x0040, 0x1c90, 0x2001, 0x0005, 0x2004, 0xd08c,
2715 + 0x0040, 0x1c79, 0x7904, 0xa18c, 0x0780, 0x017e, 0x1078, 0x1913,
2716 + 0x017f, 0x81ff, 0x00c0, 0x1c90, 0x2011, 0x0050, 0x0078, 0x1c74,
2717 + 0xa085, 0x0001, 0x027f, 0x017f, 0x0e7f, 0x0f7f, 0x007c, 0x7803,
2718 + 0x0004, 0x2009, 0x0064, 0x7804, 0xd0ac, 0x0040, 0x1ce8, 0x8109,
2719 + 0x00c0, 0x1c9b, 0x2009, 0x0100, 0x210c, 0xa18a, 0x0003, 0x1048,
2720 + 0x1332, 0x1078, 0x1fca, 0x0e7e, 0x0f7e, 0x2071, 0xa8d6, 0x2079,
2721 + 0x0010, 0x7004, 0xa086, 0x0000, 0x0040, 0x1ce0, 0x7800, 0x007e,
2722 + 0x7820, 0x007e, 0x7830, 0x007e, 0x7834, 0x007e, 0x7838, 0x007e,
2723 + 0x783c, 0x007e, 0x7803, 0x0004, 0x7823, 0x0000, 0x0005, 0x0005,
2724 + 0x2079, 0x0030, 0x7804, 0xd0ac, 0x10c0, 0x1332, 0x2079, 0x0010,
2725 + 0x007f, 0x783e, 0x007f, 0x783a, 0x007f, 0x7836, 0x007f, 0x7832,
2726 + 0x007f, 0x7822, 0x007f, 0x7802, 0x0f7f, 0x0e7f, 0x0078, 0x1ce6,
2727 + 0x0f7f, 0x0e7f, 0x7804, 0xd0ac, 0x10c0, 0x1332, 0x1078, 0x639b,
2728 + 0x007c, 0x0e7e, 0x2071, 0xa908, 0x7003, 0x0000, 0x0e7f, 0x007c,
2729 + 0x0d7e, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1d6b,
2730 + 0x6934, 0xa184, 0x0007, 0x0079, 0x1cfd, 0x1d05, 0x1d56, 0x1d05,
2731 + 0x1d05, 0x1d05, 0x1d3b, 0x1d18, 0x1d07, 0x1078, 0x1332, 0x684c,
2732 + 0xd0b4, 0x0040, 0x1e79, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a,
2733 + 0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x1d5e,
2734 + 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1d05, 0x684c,
2735 + 0xd0b4, 0x0040, 0x1e79, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a,
2736 + 0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080,
2737 + 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832,
2738 + 0x6958, 0x0078, 0x1d67, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0,
2739 + 0x1d6b, 0x684c, 0xd0b4, 0x0040, 0x1e79, 0x6804, 0x681a, 0xa080,
2740 + 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832,
2741 + 0x6958, 0xa006, 0x682e, 0x682a, 0x0078, 0x1d67, 0x684c, 0xd0b4,
2742 + 0x0040, 0x18ed, 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a,
2743 + 0x6834, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832, 0x6926,
2744 + 0x684c, 0xc0dd, 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020,
2745 + 0x7804, 0xd0fc, 0x10c0, 0x1eaa, 0x0e7e, 0x0d7e, 0x2071, 0xa908,
2746 + 0x7000, 0xa005, 0x00c0, 0x1df0, 0x0c7e, 0x7206, 0xa280, 0x0004,
2747 + 0x205c, 0x7004, 0x2068, 0x7803, 0x0004, 0x6818, 0x0d7e, 0x2068,
2748 + 0x686c, 0x7812, 0x6890, 0x0f7e, 0x20e1, 0x9040, 0x2079, 0x0200,
2749 + 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x0f7f, 0x0d7f, 0x2b68,
2750 + 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc,
2751 + 0x000f, 0x6908, 0x2001, 0x04fd, 0x2004, 0xa086, 0x0007, 0x0040,
2752 + 0x1db2, 0xa184, 0x0007, 0x0040, 0x1db2, 0x017e, 0x2009, 0x0008,
2753 + 0xa102, 0x017f, 0xa108, 0x791a, 0x7116, 0x701e, 0x680c, 0xa081,
2754 + 0x0000, 0x781e, 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c,
2755 + 0x6814, 0xa106, 0x00c0, 0x1dc9, 0x6928, 0x6810, 0xa106, 0x0040,
2756 + 0x1dd6, 0x037e, 0x047e, 0x6b14, 0x6c10, 0x1078, 0x208a, 0x047f,
2757 + 0x037f, 0x0040, 0x1dd6, 0x0c7f, 0x0078, 0x1df0, 0x8aff, 0x00c0,
2758 + 0x1dde, 0x0c7f, 0xa085, 0x0001, 0x0078, 0x1df0, 0x127e, 0x2091,
2759 + 0x8000, 0x2079, 0x0020, 0x2009, 0x0001, 0x1078, 0x1df4, 0x0040,
2760 + 0x1ded, 0x2009, 0x0001, 0x1078, 0x1df4, 0x127f, 0x0c7f, 0xa006,
2761 + 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x077e, 0x067e, 0x057e, 0x047e,
2762 + 0x037e, 0x027e, 0x8aff, 0x0040, 0x1e72, 0x700c, 0x7214, 0xa23a,
2763 + 0x7010, 0x7218, 0xa203, 0x0048, 0x1e71, 0xa705, 0x0040, 0x1e71,
2764 + 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1e24, 0x0d7e, 0x2804,
2765 + 0xac68, 0x2900, 0x0079, 0x1e14, 0x1e53, 0x1e34, 0x1e34, 0x1e53,
2766 + 0x1e53, 0x1e4b, 0x1e53, 0x1e34, 0x1e53, 0x1e3a, 0x1e3a, 0x1e53,
2767 + 0x1e53, 0x1e53, 0x1e42, 0x1e3a, 0xc0fc, 0x6852, 0x6b6c, 0x6a70,
2768 + 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1e57, 0x0d7e, 0x2804, 0xac68,
2769 + 0x6f08, 0x6e0c, 0x0078, 0x1e56, 0x6b08, 0x6a0c, 0x6d00, 0x6c04,
2770 + 0x0078, 0x1e56, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
2771 + 0x0078, 0x1e56, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086,
2772 + 0x001e, 0x00c0, 0x1e53, 0x0d7f, 0x1078, 0x2026, 0x00c0, 0x1dfa,
2773 + 0xa00e, 0x0078, 0x1e72, 0x0d7f, 0x1078, 0x1332, 0x0d7f, 0x7b22,
2774 + 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000,
2775 + 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x700c,
2776 + 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x1078, 0x2026, 0x0078,
2777 + 0x1e72, 0xa006, 0x027f, 0x037f, 0x047f, 0x057f, 0x067f, 0x077f,
2778 + 0x007c, 0x1078, 0x1332, 0x027e, 0x2001, 0x0105, 0x2003, 0x0010,
2779 + 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060,
2780 + 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x1e92, 0x6850,
2781 + 0xc0bd, 0x6852, 0x0d7f, 0x0c7e, 0x1078, 0x8a01, 0x0c7f, 0x2001,
2782 + 0xa8c0, 0x2004, 0xac06, 0x00c0, 0x1ea7, 0x20e1, 0x9040, 0x1078,
2783 + 0x738a, 0x2011, 0x0000, 0x1078, 0x70ea, 0x1078, 0x639b, 0x027f,
2784 + 0x0078, 0x1f76, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e,
2785 + 0x0e7e, 0x0d7e, 0x0c7e, 0x2079, 0x0020, 0x2071, 0xa908, 0x2b68,
2786 + 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0,
2787 + 0x1e7b, 0x7000, 0x0079, 0x1ec4, 0x1f76, 0x1ec8, 0x1f43, 0x1f74,
2788 + 0x8001, 0x7002, 0xd19c, 0x00c0, 0x1edc, 0x8aff, 0x0040, 0x1efb,
2789 + 0x2009, 0x0001, 0x1078, 0x1df4, 0x0040, 0x1f76, 0x2009, 0x0001,
2790 + 0x1078, 0x1df4, 0x0078, 0x1f76, 0x7803, 0x0004, 0xd194, 0x0040,
2791 + 0x1eec, 0x6850, 0xc0fc, 0x6852, 0x8aff, 0x00c0, 0x1ef1, 0x684c,
2792 + 0xc0f5, 0x684e, 0x0078, 0x1ef1, 0x1078, 0x203f, 0x6850, 0xc0fd,
2793 + 0x6852, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003,
2794 + 0x0000, 0x0078, 0x1f76, 0x711c, 0x81ff, 0x0040, 0x1f11, 0x7918,
2795 + 0x7922, 0x7827, 0x0000, 0x7803, 0x0001, 0x7000, 0x8000, 0x7002,
2796 + 0x700c, 0xa100, 0x700e, 0x7010, 0xa081, 0x0000, 0x7012, 0x0078,
2797 + 0x1f76, 0x0f7e, 0x027e, 0x781c, 0x007e, 0x7818, 0x007e, 0x2079,
2798 + 0x0100, 0x7a14, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x037e,
2799 + 0x2019, 0x1000, 0x8319, 0x1040, 0x1332, 0x7820, 0xd0bc, 0x00c0,
2800 + 0x1f22, 0x037f, 0x79c8, 0x007f, 0xa102, 0x017f, 0x007e, 0x017e,
2801 + 0x79c4, 0x007f, 0xa103, 0x78c6, 0x007f, 0x78ca, 0xa284, 0x0004,
2802 + 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f, 0x7803, 0x0008, 0x7003,
2803 + 0x0000, 0x0078, 0x1f76, 0x8001, 0x7002, 0xd194, 0x0040, 0x1f58,
2804 + 0x7804, 0xd0fc, 0x00c0, 0x1eba, 0xd19c, 0x00c0, 0x1f72, 0x8aff,
2805 + 0x0040, 0x1f76, 0x2009, 0x0001, 0x1078, 0x1df4, 0x0078, 0x1f76,
2806 + 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x203f, 0x0d7e, 0x2804,
2807 + 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1f6b, 0x6808, 0xa31a, 0x680c,
2808 + 0xa213, 0x0078, 0x1f6f, 0x6810, 0xa31a, 0x6814, 0xa213, 0x0d7f,
2809 + 0x0078, 0x1eec, 0x0078, 0x1eec, 0x1078, 0x1332, 0x0c7f, 0x0d7f,
2810 + 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f, 0x007c, 0x0f7e, 0x0e7e,
2811 + 0x2071, 0xa908, 0x7000, 0xa086, 0x0000, 0x0040, 0x1fc7, 0x2079,
2812 + 0x0020, 0x017e, 0x2009, 0x0207, 0x210c, 0xd194, 0x0040, 0x1fa4,
2813 + 0x2009, 0x020c, 0x210c, 0xa184, 0x0003, 0x0040, 0x1fa4, 0x1078,
2814 + 0xa5d2, 0x2001, 0x0133, 0x2004, 0xa005, 0x1040, 0x1332, 0x20e1,
2815 + 0x9040, 0x2001, 0x020c, 0x2102, 0x2009, 0x0206, 0x2104, 0x2009,
2816 + 0x0203, 0x210c, 0xa106, 0x00c0, 0x1faf, 0x20e1, 0x9040, 0x7804,
2817 + 0xd0fc, 0x0040, 0x1f8a, 0x1078, 0x1eaa, 0x7000, 0xa086, 0x0000,
2818 + 0x00c0, 0x1f8a, 0x017f, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0,
2819 + 0x1fbd, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f,
2820 + 0x0f7f, 0x007c, 0x027e, 0x0c7e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2071,
2821 + 0xa908, 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0040, 0x2003,
2822 + 0x7004, 0x2060, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x1fed,
2823 + 0x6850, 0xc0b5, 0x6852, 0x680c, 0x7a1c, 0xa206, 0x00c0, 0x1fed,
2824 + 0x6808, 0x7a18, 0xa206, 0x0040, 0x2009, 0x2001, 0x0105, 0x2003,
2825 + 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004,
2826 + 0x2060, 0x1078, 0x8a01, 0x20e1, 0x9040, 0x1078, 0x738a, 0x2011,
2827 + 0x0000, 0x1078, 0x70ea, 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x027f,
2828 + 0x007c, 0x6810, 0x6a14, 0xa205, 0x00c0, 0x1fed, 0x684c, 0xc0dc,
2829 + 0x684e, 0x2c10, 0x1078, 0x1cf0, 0x2001, 0x0105, 0x2003, 0x0010,
2830 + 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x2069, 0xa8b1,
2831 + 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x2003, 0x8840, 0x2804,
2832 + 0xa005, 0x00c0, 0x203a, 0x6004, 0xa005, 0x0040, 0x203c, 0x681a,
2833 + 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x206a, 0x2044, 0x88ff,
2834 + 0x1040, 0x1332, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50,
2835 + 0x8841, 0x2804, 0xa005, 0x00c0, 0x2059, 0x2c00, 0xad06, 0x0040,
2836 + 0x204e, 0x6000, 0xa005, 0x00c0, 0x204e, 0x2d00, 0x2060, 0x681a,
2837 + 0x6034, 0xa084, 0x000f, 0xa080, 0x207a, 0x2044, 0x88ff, 0x1040,
2838 + 0x1332, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d, 0x0021,
2839 + 0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b, 0x0021, 0x0027,
2840 + 0x0000, 0x0000, 0x0000, 0x205f, 0x205b, 0x0000, 0x0000, 0x2069,
2841 + 0x0000, 0x205f, 0x0000, 0x2066, 0x2063, 0x0000, 0x0000, 0x0000,
2842 + 0x2069, 0x2066, 0x0000, 0x2061, 0x2061, 0x0000, 0x0000, 0x2069,
2843 + 0x0000, 0x2061, 0x0000, 0x2067, 0x2067, 0x0000, 0x0000, 0x0000,
2844 + 0x2069, 0x2067, 0x0a7e, 0x097e, 0x087e, 0x6b2e, 0x6c2a, 0x6858,
2845 + 0xa055, 0x0040, 0x212d, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0,
2846 + 0x206a, 0xa986, 0x0007, 0x0040, 0x20a5, 0xa986, 0x000e, 0x0040,
2847 + 0x20a5, 0xa986, 0x000f, 0x00c0, 0x20a9, 0x605c, 0xa422, 0x6060,
2848 + 0xa31a, 0x2804, 0xa045, 0x00c0, 0x20b7, 0x0050, 0x20b1, 0x0078,
2849 + 0x212d, 0x6004, 0xa065, 0x0040, 0x212d, 0x0078, 0x2094, 0x2804,
2850 + 0xa005, 0x0040, 0x20d5, 0xac68, 0xd99c, 0x00c0, 0x20c5, 0x6808,
2851 + 0xa422, 0x680c, 0xa31b, 0x0078, 0x20c9, 0x6810, 0xa422, 0x6814,
2852 + 0xa31b, 0x0048, 0x20f4, 0x2300, 0xa405, 0x0040, 0x20db, 0x8a51,
2853 + 0x0040, 0x212d, 0x8840, 0x0078, 0x20b7, 0x6004, 0xa065, 0x0040,
2854 + 0x212d, 0x0078, 0x2094, 0x8a51, 0x0040, 0x212d, 0x8840, 0x2804,
2855 + 0xa005, 0x00c0, 0x20ee, 0x6004, 0xa065, 0x0040, 0x212d, 0x6034,
2856 + 0xa0cc, 0x000f, 0xa9c0, 0x206a, 0x2804, 0x2040, 0x2b68, 0x6850,
2857 + 0xc0fc, 0x6852, 0x0078, 0x2121, 0x8422, 0x8420, 0x831a, 0xa399,
2858 + 0x0000, 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0,
2859 + 0x210f, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048,
2860 + 0x1332, 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x211b, 0x6910,
2861 + 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x1332, 0x6800,
2862 + 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd,
2863 + 0x6852, 0x2c00, 0x681a, 0x2800, 0x6832, 0x2a00, 0x6826, 0x007f,
2864 + 0x007f, 0x007f, 0xa006, 0x0078, 0x2132, 0x087f, 0x097f, 0x0a7f,
2865 + 0xa085, 0x0001, 0x007c, 0x2001, 0x0005, 0x2004, 0xa084, 0x0007,
2866 + 0x0079, 0x213a, 0x2142, 0x2143, 0x2146, 0x2149, 0x214e, 0x2151,
2867 + 0x2156, 0x215b, 0x007c, 0x1078, 0x1eaa, 0x007c, 0x1078, 0x1913,
2868 + 0x007c, 0x1078, 0x1913, 0x1078, 0x1eaa, 0x007c, 0x1078, 0x14be,
2869 + 0x007c, 0x1078, 0x1eaa, 0x1078, 0x14be, 0x007c, 0x1078, 0x1913,
2870 + 0x1078, 0x14be, 0x007c, 0x1078, 0x1913, 0x1078, 0x1eaa, 0x1078,
2871 + 0x14be, 0x007c, 0x127e, 0x2091, 0x2300, 0x2079, 0x0200, 0x2071,
2872 + 0xab80, 0x2069, 0xa600, 0x2009, 0x0004, 0x7912, 0x7817, 0x0004,
2873 + 0x1078, 0x251f, 0x781b, 0x0002, 0x20e1, 0x8700, 0x127f, 0x007c,
2874 + 0x127e, 0x2091, 0x2300, 0x781c, 0xa084, 0x0007, 0x0079, 0x2180,
2875 + 0x21a4, 0x2188, 0x218c, 0x2190, 0x2196, 0x219a, 0x219e, 0x21a2,
2876 + 0x1078, 0x548e, 0x0078, 0x21a4, 0x1078, 0x54da, 0x0078, 0x21a4,
2877 + 0x1078, 0x548e, 0x1078, 0x54da, 0x0078, 0x21a4, 0x1078, 0x21a6,
2878 + 0x0078, 0x21a4, 0x1078, 0x21a6, 0x0078, 0x21a4, 0x1078, 0x21a6,
2879 + 0x0078, 0x21a4, 0x1078, 0x21a6, 0x127f, 0x007c, 0x007e, 0x017e,
2880 + 0x027e, 0x1078, 0xa5d2, 0x7930, 0xa184, 0x0003, 0x0040, 0x21c9,
2881 + 0x2001, 0xa8c0, 0x2004, 0xa005, 0x0040, 0x21c5, 0x2001, 0x0133,
2882 + 0x2004, 0xa005, 0x1040, 0x1332, 0x0c7e, 0x2001, 0xa8c0, 0x2064,
2883 + 0x1078, 0x8a01, 0x0c7f, 0x0078, 0x21f2, 0x20e1, 0x9040, 0x0078,
2884 + 0x21f2, 0xa184, 0x0030, 0x0040, 0x21da, 0x6a00, 0xa286, 0x0003,
2885 + 0x00c0, 0x21d4, 0x0078, 0x21d6, 0x1078, 0x4224, 0x20e1, 0x9010,
2886 + 0x0078, 0x21f2, 0xa184, 0x00c0, 0x0040, 0x21ec, 0x0e7e, 0x037e,
2887 + 0x047e, 0x057e, 0x2071, 0xa8e7, 0x1078, 0x1af4, 0x057f, 0x047f,
2888 + 0x037f, 0x0e7f, 0x0078, 0x21f2, 0xa184, 0x0300, 0x0040, 0x21f2,
2889 + 0x20e1, 0x9020, 0x7932, 0x027f, 0x017f, 0x007f, 0x007c, 0x017e,
2890 + 0x0e7e, 0x0f7e, 0x2071, 0xa600, 0x7128, 0x2001, 0xa890, 0x2102,
2891 + 0x2001, 0xa898, 0x2102, 0xa182, 0x0211, 0x00c8, 0x220b, 0x2009,
2892 + 0x0008, 0x0078, 0x2235, 0xa182, 0x0259, 0x00c8, 0x2213, 0x2009,
2893 + 0x0007, 0x0078, 0x2235, 0xa182, 0x02c1, 0x00c8, 0x221b, 0x2009,
2894 + 0x0006, 0x0078, 0x2235, 0xa182, 0x0349, 0x00c8, 0x2223, 0x2009,
2895 + 0x0005, 0x0078, 0x2235, 0xa182, 0x0421, 0x00c8, 0x222b, 0x2009,
2896 + 0x0004, 0x0078, 0x2235, 0xa182, 0x0581, 0x00c8, 0x2233, 0x2009,
2897 + 0x0003, 0x0078, 0x2235, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912,
2898 + 0x7817, 0x0004, 0x1078, 0x251f, 0x0f7f, 0x0e7f, 0x017f, 0x007c,
2899 + 0x127e, 0x2091, 0x2200, 0x2061, 0x0100, 0x2071, 0xa600, 0x6024,
2900 + 0x6026, 0x6053, 0x0030, 0x6033, 0x00ef, 0x60e7, 0x0000, 0x60eb,
2901 + 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f,
2902 + 0x0080, 0x602f, 0x0000, 0x6007, 0x0eaf, 0x600f, 0x00ff, 0x602b,
2903 + 0x002f, 0x127f, 0x007c, 0x2001, 0xa630, 0x2003, 0x0000, 0x2001,
2904 + 0xa62f, 0x2003, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200, 0x007e,
2905 + 0x017e, 0x027e, 0x6124, 0xa184, 0x002c, 0x00c0, 0x227b, 0xa184,
2906 + 0x0007, 0x0079, 0x2281, 0xa195, 0x0004, 0xa284, 0x0007, 0x0079,
2907 + 0x2281, 0x22ad, 0x2289, 0x228d, 0x2291, 0x2297, 0x229b, 0x22a1,
2908 + 0x22a7, 0x1078, 0x5c56, 0x0078, 0x22ad, 0x1078, 0x5d45, 0x0078,
2909 + 0x22ad, 0x1078, 0x5d45, 0x1078, 0x5c56, 0x0078, 0x22ad, 0x1078,
2910 + 0x22b2, 0x0078, 0x22ad, 0x1078, 0x5c56, 0x1078, 0x22b2, 0x0078,
2911 + 0x22ad, 0x1078, 0x5d45, 0x1078, 0x22b2, 0x0078, 0x22ad, 0x1078,
2912 + 0x5d45, 0x1078, 0x5c56, 0x1078, 0x22b2, 0x027f, 0x017f, 0x007f,
2913 + 0x127f, 0x007c, 0x6124, 0xd1ac, 0x0040, 0x23ac, 0x017e, 0x047e,
2914 + 0x0c7e, 0x644c, 0xa486, 0xf0f0, 0x00c0, 0x22c5, 0x2061, 0x0100,
2915 + 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74c6, 0xa48c, 0xff00,
2916 + 0x7034, 0xd084, 0x0040, 0x22dd, 0xa186, 0xf800, 0x00c0, 0x22dd,
2917 + 0x703c, 0xd084, 0x00c0, 0x22dd, 0xc085, 0x703e, 0x037e, 0x2418,
2918 + 0x2011, 0x8016, 0x1078, 0x361b, 0x037f, 0xa196, 0xff00, 0x0040,
2919 + 0x231f, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116, 0x0040, 0x231f,
2920 + 0x7130, 0xd184, 0x00c0, 0x231f, 0x2011, 0xa653, 0x2214, 0xd2ec,
2921 + 0x0040, 0x22fa, 0xc18d, 0x7132, 0x2011, 0xa653, 0x2214, 0xd2ac,
2922 + 0x00c0, 0x231f, 0x6240, 0xa294, 0x0010, 0x0040, 0x2306, 0x6248,
2923 + 0xa294, 0xff00, 0xa296, 0xff00, 0x0040, 0x231f, 0x7030, 0xd08c,
2924 + 0x0040, 0x2371, 0x7034, 0xd08c, 0x00c0, 0x2316, 0x2001, 0xa60c,
2925 + 0x200c, 0xd1ac, 0x00c0, 0x2371, 0xc1ad, 0x2102, 0x037e, 0x73c4,
2926 + 0x2011, 0x8013, 0x1078, 0x361b, 0x037f, 0x0078, 0x2371, 0x7034,
2927 + 0xd08c, 0x00c0, 0x232b, 0x2001, 0xa60c, 0x200c, 0xd1ac, 0x00c0,
2928 + 0x2371, 0xc1ad, 0x2102, 0x037e, 0x73c4, 0x2011, 0x8013, 0x1078,
2929 + 0x361b, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011, 0xa653, 0x220c,
2930 + 0xd1a4, 0x0040, 0x2355, 0x017e, 0x2009, 0x0001, 0x2011, 0x0100,
2931 + 0x1078, 0x5bf1, 0x2019, 0x000e, 0x1078, 0xa195, 0xa484, 0x00ff,
2932 + 0xa080, 0x29c0, 0x200c, 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006,
2933 + 0x2009, 0x000e, 0x1078, 0xa21d, 0x017f, 0xd1ac, 0x00c0, 0x2362,
2934 + 0x017e, 0x2009, 0x0000, 0x2019, 0x0004, 0x1078, 0x284f, 0x017f,
2935 + 0x0078, 0x2371, 0x157e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x1078,
2936 + 0x45c4, 0x00c0, 0x236d, 0x1078, 0x42f8, 0x8108, 0x00f0, 0x2367,
2937 + 0x157f, 0x0c7f, 0x047f, 0x0f7e, 0x2079, 0xa8c4, 0x783c, 0xa086,
2938 + 0x0000, 0x0040, 0x2383, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079,
2939 + 0x0140, 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003, 0x1078, 0x70e0,
2940 + 0x2011, 0x0002, 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e, 0x2019,
2941 + 0x0000, 0x1078, 0x7058, 0x037f, 0x60e3, 0x0000, 0x017f, 0x2001,
2942 + 0xa600, 0x2014, 0xa296, 0x0004, 0x00c0, 0x23a4, 0xd19c, 0x00c0,
2943 + 0x23ac, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0xa622,
2944 + 0x2003, 0x0000, 0x6027, 0x0020, 0xd194, 0x0040, 0x2490, 0x0f7e,
2945 + 0x2079, 0xa8c4, 0x783c, 0xa086, 0x0001, 0x00c0, 0x23d0, 0x017e,
2946 + 0x6027, 0x0004, 0x783f, 0x0000, 0x2079, 0x0140, 0x7803, 0x1000,
2947 + 0x7803, 0x0000, 0x2079, 0xa8b1, 0x7807, 0x0000, 0x7833, 0x0000,
2948 + 0x1078, 0x62d1, 0x1078, 0x639b, 0x017f, 0x0f7f, 0x0078, 0x2490,
2949 + 0x0f7f, 0x017e, 0x3900, 0xa082, 0xa9e3, 0x00c8, 0x23db, 0x017e,
2950 + 0x1078, 0x747a, 0x017f, 0x6220, 0xd2b4, 0x0040, 0x2446, 0x1078,
2951 + 0x5acb, 0x1078, 0x6e0f, 0x6027, 0x0004, 0x0f7e, 0x2019, 0xa8ba,
2952 + 0x2304, 0xa07d, 0x0040, 0x241c, 0x7804, 0xa086, 0x0032, 0x00c0,
2953 + 0x241c, 0x0d7e, 0x0c7e, 0x0e7e, 0x2069, 0x0140, 0x618c, 0x6288,
2954 + 0x7818, 0x608e, 0x7808, 0x608a, 0x6043, 0x0002, 0x2001, 0x0003,
2955 + 0x8001, 0x00c0, 0x2400, 0x6043, 0x0000, 0x6803, 0x1000, 0x6803,
2956 + 0x0000, 0x618e, 0x628a, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x7810,
2957 + 0x2070, 0x7037, 0x0103, 0x2f60, 0x1078, 0x772d, 0x0e7f, 0x0c7f,
2958 + 0x0d7f, 0x0f7f, 0x017f, 0x007c, 0x0f7f, 0x0d7e, 0x2069, 0x0140,
2959 + 0x6804, 0xa084, 0x4000, 0x0040, 0x2429, 0x6803, 0x1000, 0x6803,
2960 + 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0xa8b1, 0x6028, 0xa09a, 0x00c8,
2961 + 0x00c8, 0x2439, 0x8000, 0x602a, 0x0c7f, 0x1078, 0x6e01, 0x0078,
2962 + 0x248f, 0x2019, 0xa8ba, 0x2304, 0xa065, 0x0040, 0x2443, 0x2009,
2963 + 0x0027, 0x1078, 0x775c, 0x0c7f, 0x0078, 0x248f, 0xd2bc, 0x0040,
2964 + 0x248f, 0x1078, 0x5ad8, 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e,
2965 + 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x245b, 0x6803,
2966 + 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0xa8b1, 0x6044,
2967 + 0xa09a, 0x00c8, 0x00c8, 0x247e, 0x8000, 0x6046, 0x603c, 0x0c7f,
2968 + 0xa005, 0x0040, 0x248f, 0x2009, 0x07d0, 0x1078, 0x5ad0, 0xa080,
2969 + 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0, 0x247a, 0x6017, 0x0012,
2970 + 0x0078, 0x248f, 0x6017, 0x0016, 0x0078, 0x248f, 0x037e, 0x2019,
2971 + 0x0001, 0x1078, 0x7058, 0x037f, 0x2019, 0xa8c0, 0x2304, 0xa065,
2972 + 0x0040, 0x248e, 0x2009, 0x004f, 0x1078, 0x775c, 0x0c7f, 0x017f,
2973 + 0xd19c, 0x0040, 0x24e4, 0x7034, 0xd0ac, 0x00c0, 0x24c1, 0x017e,
2974 + 0x157e, 0x6027, 0x0008, 0x602f, 0x0020, 0x20a9, 0x000a, 0x00f0,
2975 + 0x249f, 0x602f, 0x0000, 0x6150, 0xa185, 0x1400, 0x6052, 0x20a9,
2976 + 0x0320, 0x00e0, 0x24a9, 0x2091, 0x6000, 0x6020, 0xd09c, 0x00c0,
2977 + 0x24b8, 0x157f, 0x6152, 0x017f, 0x6027, 0x0008, 0x0078, 0x24e4,
2978 + 0x1078, 0x2577, 0x00f0, 0x24a9, 0x157f, 0x6152, 0x017f, 0x6027,
2979 + 0x0008, 0x017e, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078,
2980 + 0x70e0, 0x2011, 0x0002, 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e,
2981 + 0x2019, 0x0000, 0x1078, 0x7058, 0x037f, 0x60e3, 0x0000, 0x1078,
2982 + 0xa5ad, 0x1078, 0xa5cb, 0x2001, 0xa600, 0x2003, 0x0004, 0x6027,
2983 + 0x0008, 0x1078, 0x1246, 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c,
2984 + 0x007e, 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000,
2985 + 0x2071, 0xa600, 0x71bc, 0x70be, 0xa116, 0x0040, 0x2518, 0x81ff,
2986 + 0x0040, 0x2500, 0x2011, 0x8011, 0x1078, 0x361b, 0x0078, 0x2518,
2987 + 0x2011, 0x8012, 0x1078, 0x361b, 0x2001, 0xa672, 0x2004, 0xd0fc,
2988 + 0x00c0, 0x2518, 0x037e, 0x0c7e, 0x1078, 0x6f9f, 0x2061, 0x0100,
2989 + 0x2019, 0x0028, 0x2009, 0x0000, 0x1078, 0x284f, 0x0c7f, 0x037f,
2990 + 0x127f, 0x0f7f, 0x0e7f, 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e,
2991 + 0x0f7e, 0x007e, 0x027e, 0x2061, 0x0100, 0xa190, 0x253b, 0x2204,
2992 + 0x60f2, 0x2011, 0x2548, 0x6000, 0xa082, 0x0003, 0x00c8, 0x2534,
2993 + 0x2001, 0x00ff, 0x0078, 0x2535, 0x2204, 0x60ee, 0x027f, 0x007f,
2994 + 0x0f7f, 0x0c7f, 0x007c, 0x0840, 0x0840, 0x0840, 0x0580, 0x0420,
2995 + 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
2996 + 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028, 0xa18c, 0x00ff,
2997 + 0x2130, 0xa094, 0xff00, 0x00c0, 0x2558, 0x81ff, 0x0040, 0x255c,
2998 + 0x1078, 0x5761, 0x0078, 0x2563, 0xa080, 0x29c0, 0x200c, 0xa18c,
2999 + 0xff00, 0x810f, 0xa006, 0x007c, 0xa080, 0x29c0, 0x200c, 0xa18c,
3000 + 0x00ff, 0x007c, 0x0c7e, 0x2061, 0xa600, 0x6030, 0x0040, 0x2573,
3001 + 0xc09d, 0x0078, 0x2574, 0xc09c, 0x6032, 0x0c7f, 0x007c, 0x007e,
3002 + 0x157e, 0x0f7e, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd08c,
3003 + 0x00c0, 0x2584, 0x00f0, 0x257e, 0x0f7f, 0x157f, 0x007f, 0x007c,
3004 + 0x0c7e, 0x007e, 0x2061, 0x0100, 0x6030, 0x007e, 0x6048, 0x007e,
3005 + 0x60e4, 0x007e, 0x60e8, 0x007e, 0x6050, 0x007e, 0x60f0, 0x007e,
3006 + 0x60ec, 0x007e, 0x600c, 0x007e, 0x6004, 0x007e, 0x6028, 0x007e,
3007 + 0x60e0, 0x007e, 0x602f, 0x0100, 0x602f, 0x0000, 0x0005, 0x0005,
3008 + 0x0005, 0x0005, 0x602f, 0x0040, 0x602f, 0x0000, 0x007f, 0x60e2,
3009 + 0x007f, 0x602a, 0x007f, 0x6006, 0x007f, 0x600e, 0x007f, 0x60ee,
3010 + 0x007f, 0x60f2, 0x007f, 0x6052, 0x007f, 0x60ea, 0x007f, 0x60e6,
3011 + 0x007f, 0x604a, 0x007f, 0x6032, 0x007f, 0x0c7f, 0x007c, 0x25e7,
3012 + 0x25eb, 0x25ef, 0x25f5, 0x25fb, 0x2601, 0x2607, 0x260f, 0x2617,
3013 + 0x261d, 0x2623, 0x262b, 0x2633, 0x263b, 0x2643, 0x264d, 0x2657,
3014 + 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657,
3015 + 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x107e,
3016 + 0x007e, 0x0078, 0x2670, 0x107e, 0x007e, 0x0078, 0x2670, 0x107e,
3017 + 0x007e, 0x1078, 0x226c, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078,
3018 + 0x226c, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x0078,
3019 + 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e,
3020 + 0x007e, 0x1078, 0x226c, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e,
3021 + 0x007e, 0x1078, 0x226c, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e,
3022 + 0x007e, 0x1078, 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078,
3023 + 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078,
3024 + 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078,
3025 + 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x1078,
3026 + 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x1078,
3027 + 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078,
3028 + 0x2133, 0x1078, 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078,
3029 + 0x226c, 0x1078, 0x2133, 0x1078, 0x2178, 0x0078, 0x2670, 0x0005,
3030 + 0x0078, 0x2657, 0xb084, 0x003c, 0x8004, 0x8004, 0x0079, 0x2660,
3031 + 0x2670, 0x25ed, 0x25f1, 0x25f7, 0x25fd, 0x2603, 0x2609, 0x2611,
3032 + 0x2619, 0x261f, 0x2625, 0x262d, 0x2635, 0x263d, 0x2645, 0x264f,
3033 + 0x0008, 0x265a, 0x007f, 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e,
3034 + 0x027e, 0x047e, 0x2021, 0x0000, 0x1078, 0x4967, 0x00c0, 0x2772,
3035 + 0x70cc, 0xd09c, 0x0040, 0x268e, 0xd084, 0x00c0, 0x268e, 0xd0bc,
3036 + 0x00c0, 0x2772, 0x1078, 0x2776, 0x0078, 0x2772, 0xd0cc, 0x00c0,
3037 + 0x2772, 0xd094, 0x0040, 0x2698, 0x7097, 0xffff, 0x0078, 0x2772,
3038 + 0x2001, 0x010c, 0x203c, 0x7284, 0xd284, 0x0040, 0x2701, 0xd28c,
3039 + 0x00c0, 0x2701, 0x037e, 0x7394, 0xa38e, 0xffff, 0x0040, 0x26ab,
3040 + 0x83ff, 0x00c0, 0x26ad, 0x2019, 0x0001, 0x8314, 0xa2e0, 0xacc0,
3041 + 0x2c04, 0xa38c, 0x0001, 0x0040, 0x26ba, 0xa084, 0xff00, 0x8007,
3042 + 0x0078, 0x26bc, 0xa084, 0x00ff, 0xa70e, 0x0040, 0x26f6, 0xa08e,
3043 + 0x0000, 0x0040, 0x26f6, 0xa08e, 0x00ff, 0x00c0, 0x26d3, 0x7230,
3044 + 0xd284, 0x00c0, 0x26fc, 0x7284, 0xc28d, 0x7286, 0x7097, 0xffff,
3045 + 0x037f, 0x0078, 0x2701, 0x2009, 0x0000, 0x1078, 0x254d, 0x1078,
3046 + 0x455c, 0x00c0, 0x26f9, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
3047 + 0x00c0, 0x26f0, 0x7030, 0xd08c, 0x0040, 0x26ea, 0x6000, 0xd0bc,
3048 + 0x0040, 0x26f0, 0x1078, 0x278c, 0x0040, 0x26f9, 0x0078, 0x26f6,
3049 + 0x1078, 0x28c4, 0x1078, 0x27b9, 0x0040, 0x26f9, 0x8318, 0x0078,
3050 + 0x26ad, 0x7396, 0x0078, 0x26fe, 0x7097, 0xffff, 0x037f, 0x0078,
3051 + 0x2772, 0xa780, 0x29c0, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x2041,
3052 + 0x007e, 0x7094, 0xa096, 0xffff, 0x00c0, 0x2713, 0x2009, 0x0000,
3053 + 0x28a8, 0x0078, 0x271f, 0xa812, 0x0048, 0x271b, 0x2008, 0xa802,
3054 + 0x20a8, 0x0078, 0x271f, 0x7097, 0xffff, 0x0078, 0x2772, 0x2700,
3055 + 0x157e, 0x017e, 0xa106, 0x0040, 0x2766, 0xc484, 0x1078, 0x45c4,
3056 + 0x0040, 0x2730, 0x1078, 0x455c, 0x00c0, 0x276f, 0x0078, 0x2731,
3057 + 0xc485, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2740,
3058 + 0x7030, 0xd08c, 0x0040, 0x275e, 0x6000, 0xd0bc, 0x00c0, 0x275e,
3059 + 0x7284, 0xd28c, 0x0040, 0x2756, 0x6004, 0xa084, 0x00ff, 0xa082,
3060 + 0x0006, 0x0048, 0x2766, 0xd484, 0x00c0, 0x2752, 0x1078, 0x457f,
3061 + 0x0078, 0x2754, 0x1078, 0x298e, 0x0078, 0x2766, 0x1078, 0x28c4,
3062 + 0x1078, 0x27b9, 0x0040, 0x276f, 0x0078, 0x2766, 0x1078, 0x2959,
3063 + 0x0040, 0x2766, 0x1078, 0x278c, 0x0040, 0x276f, 0x017f, 0x8108,
3064 + 0x157f, 0x00f0, 0x271f, 0x7097, 0xffff, 0x0078, 0x2772, 0x017f,
3065 + 0x157f, 0x7196, 0x047f, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x017e,
3066 + 0x7097, 0x0001, 0x2009, 0x007e, 0x1078, 0x455c, 0x00c0, 0x2789,
3067 + 0x1078, 0x28c4, 0x1078, 0x27b9, 0x0040, 0x2789, 0x70cc, 0xc0bd,
3068 + 0x70ce, 0x017f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e,
3069 + 0x2c68, 0x2001, 0xa657, 0x2004, 0xa084, 0x00ff, 0x6842, 0x1078,
3070 + 0x76c7, 0x0040, 0x27b4, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001,
3071 + 0x0000, 0x1078, 0x44ee, 0x2001, 0x0000, 0x1078, 0x4502, 0x127e,
3072 + 0x2091, 0x8000, 0x7090, 0x8000, 0x7092, 0x127f, 0x2009, 0x0004,
3073 + 0x1078, 0x775c, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f,
3074 + 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x2001, 0xa657,
3075 + 0x2004, 0xa084, 0x00ff, 0x6842, 0x1078, 0x9187, 0x0040, 0x27f2,
3076 + 0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0, 0xa086, 0x007e,
3077 + 0x0040, 0x27db, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
3078 + 0x27db, 0x1078, 0x2880, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078,
3079 + 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x127e, 0x2091, 0x8000,
3080 + 0x7090, 0x8000, 0x7092, 0x127f, 0x2009, 0x0002, 0x1078, 0x775c,
3081 + 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e,
3082 + 0x027e, 0x2009, 0x0080, 0x1078, 0x455c, 0x00c0, 0x2805, 0x1078,
3083 + 0x2808, 0x0040, 0x2805, 0x70d3, 0xffff, 0x027f, 0x0c7f, 0x007c,
3084 + 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x76c7, 0x0040,
3085 + 0x282a, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078,
3086 + 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x127e, 0x2091, 0x8000,
3087 + 0x70d4, 0x8000, 0x70d6, 0x127f, 0x2009, 0x0002, 0x1078, 0x775c,
3088 + 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e,
3089 + 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2009, 0x007f, 0x1078, 0x455c,
3090 + 0x00c0, 0x284b, 0x2c68, 0x1078, 0x76c7, 0x0040, 0x284b, 0x2d00,
3091 + 0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x2009, 0x0022, 0x1078,
3092 + 0x775c, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x0c7f, 0x007c, 0x0e7e,
3093 + 0x0c7e, 0x067e, 0x037e, 0x027e, 0x1078, 0x5f0e, 0x1078, 0x5eae,
3094 + 0x1078, 0x8068, 0x2130, 0x81ff, 0x0040, 0x2864, 0x20a9, 0x007e,
3095 + 0x2009, 0x0000, 0x0078, 0x2868, 0x20a9, 0x007f, 0x2009, 0x0000,
3096 + 0x017e, 0x1078, 0x45c4, 0x00c0, 0x2871, 0x1078, 0x47e9, 0x1078,
3097 + 0x42f8, 0x017f, 0x8108, 0x00f0, 0x2868, 0x86ff, 0x00c0, 0x287a,
3098 + 0x1078, 0x119b, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c,
3099 + 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0,
3100 + 0x027e, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000,
3101 + 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f, 0x017f, 0x2e60,
3102 + 0x1078, 0x47e9, 0x6210, 0x6314, 0x1078, 0x42f8, 0x6212, 0x6316,
3103 + 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x007e,
3104 + 0x6018, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x00c0, 0x28ba, 0x2071,
3105 + 0xa600, 0x7090, 0xa005, 0x0040, 0x28b7, 0x8001, 0x7092, 0x007f,
3106 + 0x0e7f, 0x007c, 0x2071, 0xa600, 0x70d4, 0xa005, 0x0040, 0x28b7,
3107 + 0x8001, 0x70d6, 0x0078, 0x28b7, 0x6000, 0xc08c, 0x6002, 0x007c,
3108 + 0x0f7e, 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x157e, 0x2178,
3109 + 0x81ff, 0x00c0, 0x28d7, 0x20a9, 0x0001, 0x0078, 0x28f2, 0x2001,
3110 + 0xa653, 0x2004, 0xd0c4, 0x0040, 0x28ee, 0xd0a4, 0x0040, 0x28ee,
3111 + 0x047e, 0x6018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427,
3112 + 0xa006, 0x2009, 0x002d, 0x1078, 0xa21d, 0x047f, 0x20a9, 0x00ff,
3113 + 0x2011, 0x0000, 0x027e, 0xa28e, 0x007e, 0x0040, 0x2936, 0xa28e,
3114 + 0x007f, 0x0040, 0x2936, 0xa28e, 0x0080, 0x0040, 0x2936, 0xa288,
3115 + 0xa735, 0x210c, 0x81ff, 0x0040, 0x2936, 0x8fff, 0x1040, 0x2942,
3116 + 0x0c7e, 0x2160, 0x2001, 0x0001, 0x1078, 0x4972, 0x0c7f, 0x2019,
3117 + 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a,
3118 + 0x0c7e, 0x027e, 0x2160, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006,
3119 + 0x00c0, 0x2926, 0x6007, 0x0404, 0x0078, 0x292b, 0x2001, 0x0004,
3120 + 0x8007, 0xa215, 0x6206, 0x027f, 0x0c7f, 0x017e, 0x2c08, 0x1078,
3121 + 0x9f8b, 0x017f, 0x077f, 0x2160, 0x1078, 0x47e9, 0x027f, 0x8210,
3122 + 0x00f0, 0x28f2, 0x157f, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f,
3123 + 0x0f7f, 0x007c, 0x047e, 0x027e, 0x017e, 0x2001, 0xa653, 0x2004,
3124 + 0xd0c4, 0x0040, 0x2955, 0xd0a4, 0x0040, 0x2955, 0xa006, 0x2220,
3125 + 0x8427, 0x2009, 0x0029, 0x1078, 0xa21d, 0x017f, 0x027f, 0x047f,
3126 + 0x007c, 0x017e, 0x027e, 0x037e, 0x0c7e, 0x7284, 0x82ff, 0x0040,
3127 + 0x2987, 0xa290, 0xa653, 0x2214, 0xd2ac, 0x00c0, 0x2987, 0x2100,
3128 + 0x1078, 0x2564, 0x81ff, 0x0040, 0x2989, 0x2019, 0x0001, 0x8314,
3129 + 0xa2e0, 0xacc0, 0x2c04, 0xd384, 0x0040, 0x297b, 0xa084, 0xff00,
3130 + 0x8007, 0x0078, 0x297d, 0xa084, 0x00ff, 0xa116, 0x0040, 0x2989,
3131 + 0xa096, 0x00ff, 0x0040, 0x2987, 0x8318, 0x0078, 0x296f, 0xa085,
3132 + 0x0001, 0x0c7f, 0x037f, 0x027f, 0x017f, 0x007c, 0x017e, 0x0c7e,
3133 + 0x127e, 0x2091, 0x8000, 0x017e, 0x027e, 0x037e, 0x2110, 0x027e,
3134 + 0x2019, 0x0029, 0x1078, 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f,
3135 + 0x027f, 0x017f, 0xa180, 0xa735, 0x2004, 0xa065, 0x0040, 0x29b7,
3136 + 0x017e, 0x0c7e, 0x1078, 0x9187, 0x017f, 0x1040, 0x1332, 0x611a,
3137 + 0x1078, 0x2880, 0x1078, 0x772d, 0x017f, 0x1078, 0x457f, 0x127f,
3138 + 0x0c7f, 0x017f, 0x007c, 0x2001, 0xa633, 0x2004, 0xd0cc, 0x007c,
3139 + 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da,
3140 + 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce,
3141 + 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5,
3142 + 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3,
3143 + 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9,
3144 + 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b,
3145 + 0x8098, 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081,
3146 + 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073,
3147 + 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69,
3148 + 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056,
3149 + 0x8055, 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c,
3150 + 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c,
3151 + 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831,
3152 + 0x802e, 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026,
3153 + 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017,
3154 + 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000,
3155 + 0x3800, 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000,
3156 + 0x3400, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300,
3157 + 0x3200, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100,
3158 + 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00,
3159 + 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800,
3160 + 0x8000, 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000,
3161 + 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000,
3162 + 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000,
3163 + 0x8000, 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500,
3164 + 0x8000, 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000,
3165 + 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000,
3166 + 0x8000, 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000,
3167 + 0x0500, 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000,
3168 + 0x0100, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000,
3169 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
3170 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
3171 + 0x2071, 0xa682, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a,
3172 + 0x703e, 0x7033, 0xa692, 0x7037, 0xa692, 0x7007, 0x0001, 0x2061,
3173 + 0xa6d2, 0x6003, 0x0002, 0x007c, 0x0090, 0x2ae7, 0x0068, 0x2ae7,
3174 + 0x2071, 0xa682, 0x2b78, 0x7818, 0xd084, 0x00c0, 0x2ae7, 0x2a60,
3175 + 0x7820, 0xa08e, 0x0069, 0x00c0, 0x2bd7, 0x0079, 0x2b6b, 0x007c,
3176 + 0x2071, 0xa682, 0x7004, 0x0079, 0x2aed, 0x2af1, 0x2af2, 0x2afc,
3177 + 0x2b0e, 0x007c, 0x0090, 0x2afb, 0x0068, 0x2afb, 0x2b78, 0x7818,
3178 + 0xd084, 0x0040, 0x2b1a, 0x007c, 0x2b78, 0x2061, 0xa6d2, 0x6008,
3179 + 0xa08e, 0x0100, 0x0040, 0x2b09, 0xa086, 0x0200, 0x0040, 0x2bcf,
3180 + 0x007c, 0x7014, 0x2068, 0x2a60, 0x7018, 0x007a, 0x7010, 0x2068,
3181 + 0x6834, 0xa086, 0x0103, 0x0040, 0x2b16, 0x007c, 0x2a60, 0x2b78,
3182 + 0x7018, 0x007a, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x00c8, 0x2b23,
3183 + 0x61bc, 0x0079, 0x2b2b, 0x2100, 0xa08a, 0x003f, 0x00c8, 0x2bcb,
3184 + 0x61bc, 0x0079, 0x2b6b, 0x2bad, 0x2bdf, 0x2be7, 0x2beb, 0x2bf3,
3185 + 0x2bf9, 0x2bfd, 0x2c09, 0x2c0d, 0x2c17, 0x2c1b, 0x2bcb, 0x2bcb,
3186 + 0x2bcb, 0x2c1f, 0x2bcb, 0x2c2f, 0x2c46, 0x2c5d, 0x2cdd, 0x2ce2,
3187 + 0x2d0f, 0x2d69, 0x2d7a, 0x2d98, 0x2dd9, 0x2de3, 0x2df0, 0x2e03,
3188 + 0x2e22, 0x2e2b, 0x2e68, 0x2e6e, 0x2bcb, 0x2e8a, 0x2bcb, 0x2bcb,
3189 + 0x2bcb, 0x2bcb, 0x2bcb, 0x2e91, 0x2e9b, 0x2bcb, 0x2bcb, 0x2bcb,
3190 + 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2ea3, 0x2bcb, 0x2bcb,
3191 + 0x2bcb, 0x2bcb, 0x2bcb, 0x2eb5, 0x2ece, 0x2bcb, 0x2bcb, 0x2bcb,
3192 + 0x2bcb, 0x2bcb, 0x2bcb, 0x2ee0, 0x2f37, 0x2f95, 0x2fa9, 0x2bcb,
3193 + 0x2bcb, 0x2bcb, 0x398e, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb,
3194 + 0x2bcb, 0x2bcb, 0x2bcb, 0x2c17, 0x2c1b, 0x2fc0, 0x2bcb, 0x2fcd,
3195 + 0x3a26, 0x3a83, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb,
3196 + 0x2bcb, 0x2bcb, 0x2bcb, 0x301a, 0x314f, 0x316b, 0x3177, 0x31da,
3197 + 0x3233, 0x323e, 0x327d, 0x328c, 0x329b, 0x329e, 0x2fd1, 0x32c2,
3198 + 0x331e, 0x332b, 0x343c, 0x356f, 0x3599, 0x36a6, 0x2bcb, 0x36b6,
3199 + 0x36f0, 0x37bf, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x3827, 0x3843,
3200 + 0x38bd, 0x3977, 0x713c, 0x0078, 0x2bad, 0x2021, 0x4000, 0x1078,
3201 + 0x35f5, 0x127e, 0x2091, 0x8000, 0x0068, 0x2bba, 0x7818, 0xd084,
3202 + 0x0040, 0x2bbd, 0x127f, 0x0078, 0x2bb1, 0x7c22, 0x7926, 0x7a2a,
3203 + 0x7b2e, 0x781b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, 0x2091,
3204 + 0x5000, 0x127f, 0x007c, 0x2021, 0x4001, 0x0078, 0x2baf, 0x2021,
3205 + 0x4002, 0x0078, 0x2baf, 0x2021, 0x4003, 0x0078, 0x2baf, 0x2021,
3206 + 0x4005, 0x0078, 0x2baf, 0x2021, 0x4006, 0x0078, 0x2baf, 0xa02e,
3207 + 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078, 0x3604, 0x7823,
3208 + 0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824,
3209 + 0x7930, 0x0078, 0x3608, 0x7924, 0x7828, 0x2114, 0x200a, 0x0078,
3210 + 0x2bad, 0x7924, 0x2114, 0x0078, 0x2bad, 0x2099, 0x0009, 0x20a1,
3211 + 0x0009, 0x20a9, 0x0007, 0x53a3, 0x7924, 0x7a28, 0x7b2c, 0x0078,
3212 + 0x2bad, 0x7824, 0x2060, 0x0078, 0x2c21, 0x2009, 0x0001, 0x2011,
3213 + 0x0013, 0x2019, 0x0018, 0x783b, 0x0017, 0x0078, 0x2bad, 0x7d38,
3214 + 0x7c3c, 0x0078, 0x2be1, 0x7d38, 0x7c3c, 0x0078, 0x2bed, 0x2061,
3215 + 0x1000, 0x610c, 0xa006, 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0,
3216 + 0x2c23, 0x2010, 0xa005, 0x0040, 0x2bad, 0x0078, 0x2bd3, 0x2069,
3217 + 0xa652, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x2bdb, 0x8019, 0x0040,
3218 + 0x2bdb, 0x684a, 0x6942, 0x782c, 0x6852, 0x7828, 0x6856, 0xa006,
3219 + 0x685a, 0x685e, 0x1078, 0x4eae, 0x0078, 0x2bad, 0x2069, 0xa652,
3220 + 0x7824, 0x7934, 0xa11a, 0x00c8, 0x2bdb, 0x8019, 0x0040, 0x2bdb,
3221 + 0x684e, 0x6946, 0x782c, 0x6862, 0x7828, 0x6866, 0xa006, 0x686a,
3222 + 0x686e, 0x1078, 0x4a3e, 0x0078, 0x2bad, 0xa02e, 0x2520, 0x81ff,
3223 + 0x00c0, 0x2bd7, 0x7924, 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1,
3224 + 0xa689, 0x41a1, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x2009, 0x0020,
3225 + 0x1078, 0x3604, 0x701b, 0x2c75, 0x007c, 0x6834, 0x2008, 0xa084,
3226 + 0x00ff, 0xa096, 0x0011, 0x0040, 0x2c85, 0xa096, 0x0019, 0x0040,
3227 + 0x2c85, 0xa096, 0x0015, 0x00c0, 0x2bd7, 0x810f, 0xa18c, 0x00ff,
3228 + 0x0040, 0x2bd7, 0x710e, 0x700c, 0x8001, 0x0040, 0x2cb6, 0x700e,
3229 + 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x2009, 0x0020, 0x2061, 0xa6d2,
3230 + 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399, 0x0000,
3231 + 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x1078, 0x3604, 0x701b, 0x2ca9,
3232 + 0x007c, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040, 0x2cb4,
3233 + 0xa096, 0x000a, 0x00c0, 0x2bd7, 0x0078, 0x2c8b, 0x7010, 0x2068,
3234 + 0x6838, 0xc0fd, 0x683a, 0x1078, 0x4431, 0x00c0, 0x2cc4, 0x7007,
3235 + 0x0003, 0x701b, 0x2cc6, 0x007c, 0x1078, 0x4b51, 0x127e, 0x2091,
3236 + 0x8000, 0x20a9, 0x0005, 0x2099, 0xa689, 0x530a, 0x2100, 0xa210,
3237 + 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d,
3238 + 0x2009, 0x0020, 0x127f, 0x0078, 0x3608, 0x61a4, 0x7824, 0x60a6,
3239 + 0x0078, 0x2bad, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953,
3240 + 0x782b, 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832,
3241 + 0x3f00, 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c,
3242 + 0x8007, 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b,
3243 + 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1,
3244 + 0x00f0, 0xa08a, 0x0003, 0x00c8, 0x0427, 0x0078, 0x0423, 0x81ff,
3245 + 0x00c0, 0x2bd7, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x45c4,
3246 + 0x00c0, 0x2bdb, 0x7e38, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048,
3247 + 0x2d23, 0x0078, 0x2bdb, 0x7c28, 0x7d2c, 0x1078, 0x47a4, 0xd28c,
3248 + 0x00c0, 0x2d2e, 0x1078, 0x4736, 0x0078, 0x2d30, 0x1078, 0x4772,
3249 + 0x00c0, 0x2d5a, 0x2061, 0xad00, 0x127e, 0x2091, 0x8000, 0x6000,
3250 + 0xa086, 0x0000, 0x0040, 0x2d48, 0x6010, 0xa06d, 0x0040, 0x2d48,
3251 + 0x683c, 0xa406, 0x00c0, 0x2d48, 0x6840, 0xa506, 0x0040, 0x2d53,
3252 + 0x127f, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02, 0x00c8,
3253 + 0x2bd7, 0x0078, 0x2d34, 0x1078, 0x8a01, 0x127f, 0x0040, 0x2bd7,
3254 + 0x0078, 0x2bad, 0xa00e, 0x2001, 0x0005, 0x1078, 0x4b51, 0x127e,
3255 + 0x2091, 0x8000, 0x1078, 0x8f85, 0x1078, 0x4a73, 0x127f, 0x0078,
3256 + 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, 0x0040, 0x2bdb,
3257 + 0x1078, 0x4673, 0x0040, 0x2bd7, 0x1078, 0x47b2, 0x0040, 0x2bd7,
3258 + 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040,
3259 + 0x2bdb, 0x1078, 0x482f, 0x0040, 0x2bd7, 0x2019, 0x0005, 0x1078,
3260 + 0x47d3, 0x0040, 0x2bd7, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb,
3261 + 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x5a52, 0x0078, 0x2bad,
3262 + 0x127e, 0x2091, 0x8000, 0x81ff, 0x0040, 0x2da2, 0x2009, 0x0001,
3263 + 0x0078, 0x2dd3, 0x2029, 0x00ff, 0x6450, 0x2400, 0xa506, 0x0040,
3264 + 0x2dcd, 0x2508, 0x1078, 0x45c4, 0x00c0, 0x2dcd, 0x1078, 0x482f,
3265 + 0x00c0, 0x2db8, 0x2009, 0x0002, 0x62ac, 0x2518, 0x0078, 0x2dd3,
3266 + 0x2019, 0x0004, 0x1078, 0x47d3, 0x00c0, 0x2dc2, 0x2009, 0x0006,
3267 + 0x0078, 0x2dd3, 0x7824, 0xa08a, 0x1000, 0x00c8, 0x2dd6, 0x8003,
3268 + 0x800b, 0x810b, 0xa108, 0x1078, 0x5a52, 0x8529, 0x00c8, 0x2da5,
3269 + 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078, 0x2bd7, 0x127f, 0x0078,
3270 + 0x2bdb, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x46e7, 0x1078,
3271 + 0x47a4, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2,
3272 + 0x0040, 0x2bdb, 0x1078, 0x46d6, 0x1078, 0x47a4, 0x0078, 0x2bad,
3273 + 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078,
3274 + 0x4775, 0x0040, 0x2bd7, 0x1078, 0x4484, 0x1078, 0x472f, 0x1078,
3275 + 0x47a4, 0x0078, 0x2bad, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078,
3276 + 0x4673, 0x0040, 0x2bd7, 0x62a0, 0x2019, 0x0005, 0x0c7e, 0x1078,
3277 + 0x47e9, 0x0c7f, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078,
3278 + 0x5e0a, 0x2009, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x1078, 0x47a4,
3279 + 0x0078, 0x2bad, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x47a4,
3280 + 0x2208, 0x0078, 0x2bad, 0x157e, 0x0d7e, 0x0e7e, 0x2069, 0xa714,
3281 + 0x6810, 0x6914, 0xa10a, 0x00c8, 0x2e37, 0x2009, 0x0000, 0x6816,
3282 + 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x00ff, 0x2069, 0xa735,
3283 + 0x2d04, 0xa075, 0x0040, 0x2e4c, 0x704c, 0x1078, 0x2e56, 0xa210,
3284 + 0x7080, 0x1078, 0x2e56, 0xa318, 0x8d68, 0x00f0, 0x2e40, 0x2300,
3285 + 0xa218, 0x0e7f, 0x0d7f, 0x157f, 0x0078, 0x2bad, 0x0f7e, 0x017e,
3286 + 0xa07d, 0x0040, 0x2e65, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff,
3287 + 0x0040, 0x2e65, 0x2178, 0x0078, 0x2e5d, 0x017f, 0x0f7f, 0x007c,
3288 + 0x2069, 0xa714, 0x6910, 0x62a8, 0x0078, 0x2bad, 0x81ff, 0x00c0,
3289 + 0x2bd7, 0x6150, 0xa190, 0x29c0, 0x2214, 0xa294, 0x00ff, 0x6070,
3290 + 0xa084, 0xff00, 0xa215, 0x636c, 0x67cc, 0xd79c, 0x0040, 0x2e84,
3291 + 0x2031, 0x0001, 0x0078, 0x2e86, 0x2031, 0x0000, 0x7e3a, 0x7f3e,
3292 + 0x0078, 0x2bad, 0x6140, 0x6244, 0x2019, 0xa8a2, 0x231c, 0x0078,
3293 + 0x2bad, 0x127e, 0x2091, 0x8000, 0x6134, 0x6338, 0xa006, 0x2010,
3294 + 0x127f, 0x0078, 0x2bad, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x6244,
3295 + 0x6338, 0x0078, 0x2bad, 0x6140, 0x6244, 0x7824, 0x6042, 0x7b28,
3296 + 0x6346, 0x2069, 0xa652, 0x831f, 0xa305, 0x6816, 0x782c, 0x2069,
3297 + 0xa8a2, 0x2d1c, 0x206a, 0x0078, 0x2bad, 0x017e, 0x127e, 0x2091,
3298 + 0x8000, 0x7824, 0x6036, 0xd094, 0x0040, 0x2ec8, 0x7828, 0xa085,
3299 + 0x0001, 0x2009, 0xa8ab, 0x200a, 0x2001, 0xffff, 0x1078, 0x5ae6,
3300 + 0x782c, 0x603a, 0x127f, 0x017f, 0x0078, 0x2bad, 0x1078, 0x35e4,
3301 + 0x0040, 0x2bdb, 0x7828, 0xa00d, 0x0040, 0x2bdb, 0x782c, 0xa005,
3302 + 0x0040, 0x2bdb, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078, 0x2bad,
3303 + 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x0c7e,
3304 + 0x2061, 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff,
3305 + 0x00c0, 0x2ef7, 0x6030, 0xa085, 0xff00, 0x0078, 0x2f06, 0xa182,
3306 + 0x007f, 0x00c8, 0x2f30, 0xa188, 0x29c0, 0x210c, 0xa18c, 0x00ff,
3307 + 0x6030, 0xa116, 0x0040, 0x2f30, 0x810f, 0xa105, 0x127e, 0x2091,
3308 + 0x8000, 0x007e, 0x1078, 0x76c7, 0x007f, 0x0040, 0x2f2c, 0x601a,
3309 + 0x600b, 0xbc09, 0x601f, 0x0001, 0x1078, 0x35ba, 0x0040, 0x2f33,
3310 + 0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd,
3311 + 0x683a, 0x701b, 0x2f8e, 0x2d00, 0x6012, 0x2009, 0x0032, 0x1078,
3312 + 0x775c, 0x127f, 0x0c7f, 0x007c, 0x127f, 0x0c7f, 0x0078, 0x2bd7,
3313 + 0x0c7f, 0x0078, 0x2bdb, 0x1078, 0x772d, 0x0078, 0x2f2c, 0x2001,
3314 + 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x0c7e, 0x2061,
3315 + 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x00c0,
3316 + 0x2f4e, 0x6030, 0xa085, 0xff00, 0x0078, 0x2f5d, 0xa182, 0x007f,
3317 + 0x00c8, 0x2f87, 0xa188, 0x29c0, 0x210c, 0xa18c, 0x00ff, 0x6030,
3318 + 0xa116, 0x0040, 0x2f87, 0x810f, 0xa105, 0x127e, 0x2091, 0x8000,
3319 + 0x007e, 0x1078, 0x76c7, 0x007f, 0x0040, 0x2f83, 0x601a, 0x600b,
3320 + 0xbc05, 0x601f, 0x0001, 0x1078, 0x35ba, 0x0040, 0x2f8a, 0x6837,
3321 + 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a,
3322 + 0x701b, 0x2f8e, 0x2d00, 0x6012, 0x2009, 0x0032, 0x1078, 0x775c,
3323 + 0x127f, 0x0c7f, 0x007c, 0x127f, 0x0c7f, 0x0078, 0x2bd7, 0x0c7f,
3324 + 0x0078, 0x2bdb, 0x1078, 0x772d, 0x0078, 0x2f83, 0x6830, 0xa086,
3325 + 0x0100, 0x0040, 0x2bd7, 0x0078, 0x2bad, 0x2061, 0xa933, 0x127e,
3326 + 0x2091, 0x8000, 0x6000, 0xd084, 0x0040, 0x2fa6, 0x6104, 0x6208,
3327 + 0x2019, 0xa612, 0x231c, 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078,
3328 + 0x2bdb, 0x81ff, 0x00c0, 0x2bd7, 0x127e, 0x2091, 0x8000, 0x6248,
3329 + 0x6064, 0xa202, 0x0048, 0x2fbd, 0xa085, 0x0001, 0x1078, 0x256a,
3330 + 0x1078, 0x3c9e, 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078, 0x2bdb,
3331 + 0x127e, 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0xa640, 0x20a0,
3332 + 0xa006, 0x40a4, 0x127f, 0x0078, 0x2bad, 0x7d38, 0x7c3c, 0x0078,
3333 + 0x2c5f, 0x7824, 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x00c8, 0x2bd7,
3334 + 0x6250, 0xa084, 0xff00, 0x8007, 0xa206, 0x00c0, 0x2fe9, 0x2001,
3335 + 0xa640, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078,
3336 + 0x3608, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb,
3337 + 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2bd7, 0x0c7e,
3338 + 0x1078, 0x35ba, 0x0c7f, 0x0040, 0x2bd7, 0x6837, 0x0000, 0x6838,
3339 + 0xc0fd, 0x683a, 0x1078, 0x8e4a, 0x0040, 0x2bd7, 0x7007, 0x0003,
3340 + 0x701b, 0x300b, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7,
3341 + 0xad80, 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
3342 + 0x0078, 0x3608, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x1078, 0x42dd,
3343 + 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604,
3344 + 0x701b, 0x302b, 0x007c, 0xade8, 0x000d, 0x6800, 0xa005, 0x0040,
3345 + 0x2bdb, 0x6804, 0xd0ac, 0x0040, 0x3038, 0xd0a4, 0x0040, 0x2bdb,
3346 + 0xd094, 0x0040, 0x3043, 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18c,
3347 + 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x304e, 0x0c7e, 0x2061,
3348 + 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f, 0x2009, 0x0100,
3349 + 0x210c, 0xa18a, 0x0002, 0x0048, 0x3063, 0xd084, 0x0040, 0x3063,
3350 + 0x6a28, 0xa28a, 0x007f, 0x00c8, 0x2bdb, 0xa288, 0x29c0, 0x210c,
3351 + 0xa18c, 0x00ff, 0x6156, 0xd0dc, 0x0040, 0x306c, 0x6828, 0xa08a,
3352 + 0x007f, 0x00c8, 0x2bdb, 0x6052, 0x6808, 0xa08a, 0x0100, 0x0048,
3353 + 0x2bdb, 0xa08a, 0x0841, 0x00c8, 0x2bdb, 0xa084, 0x0007, 0x00c0,
3354 + 0x2bdb, 0x680c, 0xa005, 0x0040, 0x2bdb, 0x6810, 0xa005, 0x0040,
3355 + 0x2bdb, 0x6848, 0x6940, 0xa10a, 0x00c8, 0x2bdb, 0x8001, 0x0040,
3356 + 0x2bdb, 0x684c, 0x6944, 0xa10a, 0x00c8, 0x2bdb, 0x8001, 0x0040,
3357 + 0x2bdb, 0x6804, 0xd0fc, 0x0040, 0x30c2, 0x1078, 0x35ba, 0x0040,
3358 + 0x2bd7, 0x2009, 0x0014, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0xa290,
3359 + 0x0038, 0xa399, 0x0000, 0x1078, 0x3604, 0x701b, 0x30a8, 0x007c,
3360 + 0xade8, 0x000d, 0x20a9, 0x0014, 0x2d98, 0x2069, 0xa66e, 0x2da0,
3361 + 0x53a3, 0x7010, 0xa0e8, 0x000d, 0x2001, 0xa672, 0x200c, 0xd1e4,
3362 + 0x0040, 0x30c2, 0x0c7e, 0x2061, 0x0100, 0x6004, 0xa085, 0x0b00,
3363 + 0x6006, 0x0c7f, 0x20a9, 0x001c, 0x2d98, 0x2069, 0xa652, 0x2da0,
3364 + 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x6142, 0x8007, 0xa084, 0x00ff,
3365 + 0x6046, 0x1078, 0x4eae, 0x1078, 0x49ce, 0x1078, 0x4a3e, 0x6000,
3366 + 0xa086, 0x0000, 0x00c0, 0x314d, 0x6808, 0x602a, 0x1078, 0x21f7,
3367 + 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f,
3368 + 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040, 0x30fa,
3369 + 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f,
3370 + 0x0078, 0x30fc, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312,
3371 + 0x1078, 0x5b19, 0x6904, 0xd1fc, 0x0040, 0x312f, 0x0c7e, 0x2009,
3372 + 0x0000, 0x20a9, 0x0001, 0x6b70, 0xd384, 0x0040, 0x312c, 0x0078,
3373 + 0x3116, 0x839d, 0x00c8, 0x312c, 0x3508, 0x8109, 0x1078, 0x5480,
3374 + 0x6878, 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007, 0x600a,
3375 + 0xa184, 0x00ff, 0x6006, 0x8108, 0x00c0, 0x312a, 0x6003, 0x0003,
3376 + 0x0078, 0x312c, 0x6003, 0x0001, 0x00f0, 0x3111, 0x0c7f, 0x0c7e,
3377 + 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x0c7f, 0x1078,
3378 + 0x3819, 0x0040, 0x313d, 0x1078, 0x256a, 0x60c0, 0xa005, 0x0040,
3379 + 0x3149, 0x6003, 0x0001, 0x2091, 0x301d, 0x1078, 0x4224, 0x0078,
3380 + 0x314d, 0x6003, 0x0004, 0x2091, 0x301d, 0x0078, 0x2bad, 0x6000,
3381 + 0xa086, 0x0000, 0x0040, 0x2bd7, 0x2069, 0xa652, 0x7830, 0x6842,
3382 + 0x7834, 0x6846, 0x6804, 0xd0fc, 0x0040, 0x3162, 0x2009, 0x0030,
3383 + 0x0078, 0x3164, 0x2009, 0x001c, 0x2d00, 0x7a2c, 0x7b28, 0x7c3c,
3384 + 0x7d38, 0x0078, 0x3608, 0xa006, 0x1078, 0x256a, 0x81ff, 0x00c0,
3385 + 0x2bd7, 0x1078, 0x42dd, 0x1078, 0x4224, 0x0078, 0x2bad, 0x81ff,
3386 + 0x00c0, 0x2bd7, 0x6184, 0x81ff, 0x0040, 0x3191, 0x703f, 0x0000,
3387 + 0x2001, 0xacc0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
3388 + 0x127e, 0x2091, 0x8000, 0x1078, 0x3608, 0x701b, 0x2baa, 0x127f,
3389 + 0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0xacc0, 0x20a9, 0x0040,
3390 + 0x20a1, 0xacc0, 0x2019, 0xffff, 0x43a4, 0x6550, 0xa588, 0x29c0,
3391 + 0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100,
3392 + 0xa506, 0x0040, 0x31c3, 0x1078, 0x45c4, 0x00c0, 0x31c3, 0x6014,
3393 + 0x821c, 0x0048, 0x31bb, 0xa398, 0xacc0, 0xa085, 0xff00, 0x8007,
3394 + 0x201a, 0x0078, 0x31c2, 0xa398, 0xacc0, 0x2324, 0xa4a4, 0xff00,
3395 + 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x00c8, 0x31ca,
3396 + 0x0078, 0x31a7, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x0d7f,
3397 + 0x20a9, 0x0040, 0x20a1, 0xacc0, 0x2099, 0xacc0, 0x1078, 0x4281,
3398 + 0x0078, 0x3180, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x0c7e, 0x1078,
3399 + 0x35ba, 0x0c7f, 0x00c0, 0x31e8, 0x2009, 0x0002, 0x0078, 0x2bd7,
3400 + 0x2001, 0xa653, 0x2004, 0xd0b4, 0x0040, 0x320f, 0x6000, 0xd08c,
3401 + 0x00c0, 0x320f, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
3402 + 0x320f, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x8e9e,
3403 + 0x00c0, 0x3206, 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003,
3404 + 0x701b, 0x320b, 0x007c, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x20a9,
3405 + 0x002b, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004,
3406 + 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078, 0x4281,
3407 + 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0,
3408 + 0x1078, 0x4281, 0x2d00, 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c,
3409 + 0x7d38, 0x0078, 0x3608, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2,
3410 + 0x0040, 0x2bdb, 0x1078, 0x47bd, 0x0078, 0x2bad, 0x81ff, 0x00c0,
3411 + 0x2bd7, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb, 0x1078, 0x35e4,
3412 + 0x0040, 0x2bdb, 0x1078, 0x482f, 0x0040, 0x2bd7, 0x2019, 0x0004,
3413 + 0x1078, 0x47d3, 0x7924, 0x810f, 0x7a28, 0x1078, 0x3259, 0x0078,
3414 + 0x2bad, 0xa186, 0x00ff, 0x0040, 0x3261, 0x1078, 0x3271, 0x0078,
3415 + 0x3270, 0x2029, 0x007e, 0x2061, 0xa600, 0x6450, 0x2400, 0xa506,
3416 + 0x0040, 0x326d, 0x2508, 0x1078, 0x3271, 0x8529, 0x00c8, 0x3266,
3417 + 0x007c, 0x1078, 0x45c4, 0x00c0, 0x327c, 0x2200, 0x8003, 0x800b,
3418 + 0x810b, 0xa108, 0x1078, 0x5a52, 0x007c, 0x81ff, 0x00c0, 0x2bd7,
3419 + 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7,
3420 + 0x1078, 0x47c8, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078,
3421 + 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7, 0x1078,
3422 + 0x47b2, 0x0078, 0x2bad, 0x6100, 0x0078, 0x2bad, 0x1078, 0x35e4,
3423 + 0x0040, 0x2bdb, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0,
3424 + 0x2bd7, 0x0d7e, 0xace8, 0x000a, 0x7924, 0xd184, 0x0040, 0x32b2,
3425 + 0xace8, 0x0006, 0x680c, 0x8007, 0x783e, 0x6808, 0x8007, 0x783a,
3426 + 0x6b04, 0x831f, 0x6a00, 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200,
3427 + 0x0078, 0x2bad, 0xa006, 0x1078, 0x256a, 0x7824, 0xa084, 0x00ff,
3428 + 0xa086, 0x00ff, 0x0040, 0x32cf, 0x81ff, 0x00c0, 0x2bd7, 0x1078,
3429 + 0x42dd, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb, 0x7924, 0xa18c,
3430 + 0xff00, 0x810f, 0xa186, 0x00ff, 0x0040, 0x32e5, 0xa182, 0x007f,
3431 + 0x00c8, 0x2bdb, 0x2100, 0x1078, 0x2564, 0x027e, 0x0c7e, 0x127e,
3432 + 0x2091, 0x8000, 0x2061, 0xa8c4, 0x601b, 0x0000, 0x601f, 0x0000,
3433 + 0x2011, 0x0003, 0x1078, 0x70e0, 0x2011, 0x0002, 0x1078, 0x70ea,
3434 + 0x1078, 0x6fc4, 0x037e, 0x2019, 0x0000, 0x1078, 0x7058, 0x037f,
3435 + 0x2061, 0x0100, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a,
3436 + 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, 0x4259,
3437 + 0x1078, 0x5add, 0x7924, 0xa18c, 0xff00, 0x810f, 0x7a28, 0x1078,
3438 + 0x3259, 0x127f, 0x0c7f, 0x027f, 0x0078, 0x2bad, 0x7924, 0xa18c,
3439 + 0xff00, 0x810f, 0x0c7e, 0x1078, 0x455c, 0x2c08, 0x0c7f, 0x00c0,
3440 + 0x2bdb, 0x0078, 0x2bad, 0x81ff, 0x0040, 0x3332, 0x2009, 0x0001,
3441 + 0x0078, 0x2bd7, 0x60cc, 0xd09c, 0x00c0, 0x333a, 0x2009, 0x0005,
3442 + 0x0078, 0x2bd7, 0x1078, 0x35ba, 0x00c0, 0x3342, 0x2009, 0x0002,
3443 + 0x0078, 0x2bd7, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078,
3444 + 0x3604, 0x701b, 0x334c, 0x007c, 0x2009, 0x0080, 0x1078, 0x45c4,
3445 + 0x00c0, 0x3359, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0040,
3446 + 0x335d, 0x2021, 0x400a, 0x0078, 0x2baf, 0x0d7e, 0xade8, 0x000d,
3447 + 0x6900, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be,
3448 + 0x0100, 0x0040, 0x33d0, 0xa0be, 0x0112, 0x0040, 0x33d0, 0xa0be,
3449 + 0x0113, 0x0040, 0x33d0, 0xa0be, 0x0114, 0x0040, 0x33d0, 0xa0be,
3450 + 0x0117, 0x0040, 0x33d0, 0xa0be, 0x011a, 0x0040, 0x33d0, 0xa0be,
3451 + 0x0121, 0x0040, 0x33c6, 0xa0be, 0x0131, 0x0040, 0x33c6, 0xa0be,
3452 + 0x0171, 0x0040, 0x33d0, 0xa0be, 0x0173, 0x0040, 0x33d0, 0xa0be,
3453 + 0x01a1, 0x00c0, 0x3398, 0x6830, 0x8007, 0x6832, 0x0078, 0x33d6,
3454 + 0xa0be, 0x0212, 0x0040, 0x33cc, 0xa0be, 0x0213, 0x0040, 0x33cc,
3455 + 0xa0be, 0x0214, 0x0040, 0x33be, 0xa0be, 0x0217, 0x0040, 0x33b8,
3456 + 0xa0be, 0x021a, 0x00c0, 0x33b1, 0x6838, 0x8007, 0x683a, 0x0078,
3457 + 0x33d0, 0xa0be, 0x0300, 0x0040, 0x33d0, 0x0d7f, 0x0078, 0x2bdb,
3458 + 0xad80, 0x0010, 0x20a9, 0x0007, 0x1078, 0x3418, 0xad80, 0x000e,
3459 + 0x20a9, 0x0001, 0x1078, 0x3418, 0x0078, 0x33d0, 0xad80, 0x000c,
3460 + 0x1078, 0x3426, 0x0078, 0x33d6, 0xad80, 0x000e, 0x1078, 0x3426,
3461 + 0xad80, 0x000c, 0x20a9, 0x0001, 0x1078, 0x3418, 0x0c7e, 0x1078,
3462 + 0x35ba, 0x0040, 0x3409, 0x6838, 0xc0fd, 0x683a, 0x6837, 0x0119,
3463 + 0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001, 0x810b, 0x697e,
3464 + 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92, 0x6996, 0x689b,
3465 + 0x0000, 0x0c7f, 0x0d7f, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a,
3466 + 0x6823, 0x0000, 0x6804, 0x2068, 0x1078, 0x8e66, 0x00c0, 0x3404,
3467 + 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x340f,
3468 + 0x007c, 0x0c7f, 0x0d7f, 0x2009, 0x0002, 0x0078, 0x2bd7, 0x6820,
3469 + 0xa086, 0x8001, 0x00c0, 0x2bad, 0x2009, 0x0004, 0x0078, 0x2bd7,
3470 + 0x017e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, 0x8108,
3471 + 0x280a, 0x8108, 0x00f0, 0x341a, 0x017f, 0x007c, 0x017e, 0x0a7e,
3472 + 0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, 0x8000,
3473 + 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, 0x280a,
3474 + 0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x81ff, 0x0040, 0x3443, 0x2009,
3475 + 0x0001, 0x0078, 0x2bd7, 0x60cc, 0xd09c, 0x00c0, 0x344b, 0x2009,
3476 + 0x0005, 0x0078, 0x2bd7, 0x7924, 0x2140, 0xa18c, 0xff00, 0x810f,
3477 + 0xa182, 0x0080, 0x0048, 0x2bdb, 0xa182, 0x00ff, 0x00c8, 0x2bdb,
3478 + 0x7a2c, 0x7b28, 0x606c, 0xa306, 0x00c0, 0x3466, 0x6070, 0xa24e,
3479 + 0x0040, 0x2bdb, 0xa9cc, 0xff00, 0x0040, 0x2bdb, 0x0c7e, 0x1078,
3480 + 0x350f, 0x2c68, 0x0c7f, 0x0040, 0x349e, 0xa0c6, 0x4000, 0x00c0,
3481 + 0x3484, 0x0c7e, 0x007e, 0x2d60, 0x2009, 0x0000, 0x1078, 0x489b,
3482 + 0x00c0, 0x347b, 0xc185, 0x6000, 0xd0bc, 0x0040, 0x3480, 0xc18d,
3483 + 0x007f, 0x0c7f, 0x0078, 0x349b, 0xa0c6, 0x4007, 0x00c0, 0x348b,
3484 + 0x2408, 0x0078, 0x349b, 0xa0c6, 0x4008, 0x00c0, 0x3493, 0x2708,
3485 + 0x2610, 0x0078, 0x349b, 0xa0c6, 0x4009, 0x00c0, 0x3499, 0x0078,
3486 + 0x349b, 0x2001, 0x4006, 0x2020, 0x0078, 0x2baf, 0x2d00, 0x7022,
3487 + 0x017e, 0x0b7e, 0x0c7e, 0x0e7e, 0x2c70, 0x1078, 0x76c7, 0x0040,
3488 + 0x34e4, 0x2d00, 0x601a, 0x2001, 0xa657, 0x2004, 0xa084, 0x00ff,
3489 + 0x6842, 0x2e58, 0x0e7f, 0x0e7e, 0x0c7e, 0x1078, 0x35ba, 0x0c7f,
3490 + 0x2b70, 0x00c0, 0x34c5, 0x1078, 0x772d, 0x0e7f, 0x0c7f, 0x0b7f,
3491 + 0x017f, 0x2009, 0x0002, 0x0078, 0x2bd7, 0x6837, 0x0000, 0x2d00,
3492 + 0x6012, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x127e, 0x2091,
3493 + 0x8000, 0x1078, 0x2880, 0x127f, 0x601f, 0x0001, 0x2001, 0x0000,
3494 + 0x1078, 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x2009, 0x0002,
3495 + 0x1078, 0x775c, 0xa085, 0x0001, 0x0e7f, 0x0c7f, 0x0b7f, 0x017f,
3496 + 0x00c0, 0x34ee, 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003,
3497 + 0x701b, 0x34f3, 0x007c, 0x6830, 0xa086, 0x0100, 0x7020, 0x2060,
3498 + 0x00c0, 0x3501, 0x2009, 0x0004, 0x6204, 0xa294, 0x00ff, 0x0078,
3499 + 0x2bd7, 0x2009, 0x0000, 0x1078, 0x489b, 0x00c0, 0x3508, 0xc185,
3500 + 0x6000, 0xd0bc, 0x0040, 0x350d, 0xc18d, 0x0078, 0x2bad, 0x0e7e,
3501 + 0x0d7e, 0x2029, 0x0000, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071,
3502 + 0xa7b5, 0x2e04, 0xa005, 0x00c0, 0x3524, 0x2100, 0xa406, 0x00c0,
3503 + 0x3555, 0x2428, 0x0078, 0x3555, 0x2068, 0x6f10, 0x2700, 0xa306,
3504 + 0x00c0, 0x3546, 0x6e14, 0x2600, 0xa206, 0x00c0, 0x3546, 0x2400,
3505 + 0xa106, 0x00c0, 0x3542, 0x2d60, 0xd884, 0x0040, 0x356a, 0x6004,
3506 + 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x356a, 0x2001, 0x4000,
3507 + 0x0078, 0x356b, 0x2001, 0x4007, 0x0078, 0x356b, 0x2400, 0xa106,
3508 + 0x00c0, 0x3555, 0x6e14, 0x87ff, 0x00c0, 0x3551, 0x86ff, 0x0040,
3509 + 0x3521, 0x2001, 0x4008, 0x0078, 0x356b, 0x8420, 0x8e70, 0x00f0,
3510 + 0x3519, 0x85ff, 0x00c0, 0x3564, 0x2001, 0x4009, 0x0078, 0x356b,
3511 + 0x2001, 0x0001, 0x0078, 0x356b, 0x1078, 0x455c, 0x00c0, 0x3560,
3512 + 0x6312, 0x6216, 0xa006, 0xa005, 0x0d7f, 0x0e7f, 0x007c, 0x81ff,
3513 + 0x00c0, 0x2bd7, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x6837, 0x0000,
3514 + 0x6838, 0xc0fd, 0x683a, 0x7824, 0xa005, 0x0040, 0x2bdb, 0xa096,
3515 + 0x00ff, 0x0040, 0x3587, 0xa092, 0x0004, 0x00c8, 0x2bdb, 0x2010,
3516 + 0x2d18, 0x1078, 0x282f, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b,
3517 + 0x3592, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7, 0x0078,
3518 + 0x2bad, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0080, 0x0048,
3519 + 0x2bdb, 0xa182, 0x00ff, 0x00c8, 0x2bdb, 0x127e, 0x2091, 0x8000,
3520 + 0x1078, 0x8d4b, 0x00c0, 0x35b7, 0xa190, 0xa735, 0x2204, 0xa065,
3521 + 0x0040, 0x35b7, 0x1078, 0x42f8, 0x127f, 0x0078, 0x2bad, 0x127f,
3522 + 0x0078, 0x2bd7, 0x1078, 0x138b, 0x0040, 0x35d1, 0xa006, 0x6802,
3523 + 0x7010, 0xa005, 0x00c0, 0x35c9, 0x2d00, 0x7012, 0x7016, 0x0078,
3524 + 0x35cf, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80,
3525 + 0x000d, 0x007c, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x45c4,
3526 + 0x00c0, 0x35e1, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048,
3527 + 0x35e2, 0xa066, 0x8cff, 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff,
3528 + 0x1078, 0x45c4, 0x00c0, 0x35f2, 0xa6b4, 0x00ff, 0xa682, 0x4000,
3529 + 0x0048, 0x35f3, 0xa066, 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff,
3530 + 0x0040, 0x3600, 0x2168, 0x6904, 0x1078, 0x13a4, 0x0078, 0x35f7,
3531 + 0x7112, 0x7116, 0x017f, 0x007c, 0x2031, 0x0001, 0x0078, 0x360a,
3532 + 0x2031, 0x0000, 0x2061, 0xa6d2, 0x6606, 0x6112, 0x600e, 0x6226,
3533 + 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002,
3534 + 0x701b, 0x2bad, 0x007c, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079,
3535 + 0x0000, 0x2001, 0xa690, 0x2004, 0xa005, 0x00c0, 0x3636, 0x0068,
3536 + 0x3636, 0x7818, 0xd084, 0x00c0, 0x3636, 0x7a22, 0x7b26, 0x7c2a,
3537 + 0x781b, 0x0001, 0x2091, 0x4080, 0x0078, 0x365b, 0x017e, 0x0c7e,
3538 + 0x0e7e, 0x2071, 0xa682, 0x7138, 0xa182, 0x0008, 0x0048, 0x3644,
3539 + 0x7030, 0x2060, 0x0078, 0x3655, 0x7030, 0xa0e0, 0x0008, 0xac82,
3540 + 0xa6d2, 0x0048, 0x364d, 0x2061, 0xa692, 0x2c00, 0x7032, 0x81ff,
3541 + 0x00c0, 0x3653, 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x640a,
3542 + 0x0e7f, 0x0c7f, 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071,
3543 + 0xa682, 0x7038, 0xa005, 0x0040, 0x3697, 0x127e, 0x2091, 0x8000,
3544 + 0x0068, 0x3696, 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0,
3545 + 0x3695, 0x0c7e, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826,
3546 + 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038, 0x8001,
3547 + 0x703a, 0xa005, 0x00c0, 0x368b, 0x7033, 0xa692, 0x7037, 0xa692,
3548 + 0x0c7f, 0x0078, 0x3695, 0xac80, 0x0008, 0xa0fa, 0xa6d2, 0x0048,
3549 + 0x3693, 0x2001, 0xa692, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f,
3550 + 0x007c, 0x027e, 0x2001, 0xa653, 0x2004, 0xd0c4, 0x0040, 0x36a4,
3551 + 0x2011, 0x8014, 0x1078, 0x361b, 0x027f, 0x007c, 0x81ff, 0x00c0,
3552 + 0x2bd7, 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac,
3553 + 0x6032, 0x1078, 0x4224, 0x127f, 0x0078, 0x2bad, 0x81ff, 0x00c0,
3554 + 0x2bd7, 0x6000, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x2001, 0xa653,
3555 + 0x2004, 0xd0ac, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb,
3556 + 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x36d3, 0x7828,
3557 + 0xa005, 0x0040, 0x2bad, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, 0x0040,
3558 + 0x2bd7, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a,
3559 + 0x1078, 0x8f12, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x36e9,
3560 + 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7, 0x0078, 0x2bad,
3561 + 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x7f24,
3562 + 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x35ba, 0x0040, 0x2bd7,
3563 + 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000,
3564 + 0xad80, 0x0005, 0x7026, 0x20a0, 0x1078, 0x45c4, 0x00c0, 0x376d,
3565 + 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0040, 0x371d, 0xa0c4,
3566 + 0xff00, 0xa8c6, 0x0600, 0x00c0, 0x376d, 0x2001, 0xa653, 0x2004,
3567 + 0xd0ac, 0x00c0, 0x372a, 0x1078, 0x489b, 0x00c0, 0x372a, 0xd79c,
3568 + 0x0040, 0x376d, 0xd794, 0x00c0, 0x3730, 0xd784, 0x0040, 0x373c,
3569 + 0xac80, 0x0006, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078,
3570 + 0x3426, 0xd794, 0x0040, 0x3745, 0xac80, 0x000a, 0x2098, 0x3400,
3571 + 0x20a9, 0x0004, 0x53a3, 0x1078, 0x3426, 0x21a2, 0xd794, 0x0040,
3572 + 0x3765, 0xac80, 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3,
3573 + 0xac80, 0x0003, 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400,
3574 + 0x20a9, 0x0002, 0x53a3, 0x1078, 0x3418, 0xac80, 0x0026, 0x2098,
3575 + 0x20a9, 0x0002, 0x53a3, 0x0078, 0x3766, 0x94a0, 0xd794, 0x0040,
3576 + 0x376b, 0xa6b0, 0x000b, 0xa6b0, 0x0005, 0x8108, 0xd78c, 0x0040,
3577 + 0x3777, 0xa186, 0x0100, 0x0040, 0x3788, 0x0078, 0x377b, 0xa186,
3578 + 0x007e, 0x0040, 0x3788, 0xd794, 0x0040, 0x3782, 0xa686, 0x0020,
3579 + 0x0078, 0x3784, 0xa686, 0x0028, 0x0040, 0x3791, 0x0078, 0x370c,
3580 + 0x86ff, 0x00c0, 0x378f, 0x7120, 0x810b, 0x0078, 0x2bad, 0x702f,
3581 + 0x0001, 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, 0x2061, 0xa6d2,
3582 + 0x6007, 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, 0x632a, 0x642e,
3583 + 0x6532, 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002, 0x701b, 0x37a9,
3584 + 0x007c, 0x702c, 0xa005, 0x00c0, 0x37bb, 0x711c, 0x7024, 0x20a0,
3585 + 0x7728, 0x2031, 0x0000, 0x2061, 0xa6d2, 0x6224, 0x6328, 0x642c,
3586 + 0x6530, 0x0078, 0x370c, 0x7120, 0x810b, 0x0078, 0x2bad, 0x2029,
3587 + 0x007e, 0x7924, 0x7a28, 0x7b2c, 0x7c38, 0xa184, 0xff00, 0x8007,
3588 + 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa184,
3589 + 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb,
3590 + 0xa284, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502,
3591 + 0x0048, 0x2bdb, 0xa284, 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb,
3592 + 0xa502, 0x0048, 0x2bdb, 0xa384, 0xff00, 0x8007, 0xa0e2, 0x0020,
3593 + 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa384, 0x00ff, 0xa0e2,
3594 + 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa484, 0xff00,
3595 + 0x8007, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb,
3596 + 0xa484, 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048,
3597 + 0x2bdb, 0x2061, 0xa8a5, 0x6102, 0x6206, 0x630a, 0x640e, 0x0078,
3598 + 0x2bad, 0x007e, 0x2001, 0xa653, 0x2004, 0xd0cc, 0x007f, 0x007c,
3599 + 0x007e, 0x2001, 0xa672, 0x2004, 0xd0bc, 0x007f, 0x007c, 0x6164,
3600 + 0x7a24, 0x6300, 0x82ff, 0x00c0, 0x3830, 0x7926, 0x0078, 0x2bad,
3601 + 0x83ff, 0x00c0, 0x2bdb, 0x2001, 0xfff0, 0xa200, 0x00c8, 0x2bdb,
3602 + 0x2019, 0xffff, 0x6068, 0xa302, 0xa200, 0x0048, 0x2bdb, 0x7926,
3603 + 0x6266, 0x0078, 0x2bad, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003,
3604 + 0x00c0, 0x2bd7, 0x7c28, 0x7d24, 0x7e38, 0x7f2c, 0x1078, 0x35ba,
3605 + 0x0040, 0x2bd7, 0x2009, 0x0000, 0x2019, 0x0000, 0x7023, 0x0000,
3606 + 0x702f, 0x0000, 0xad80, 0x0003, 0x7026, 0x20a0, 0xa1e0, 0xa735,
3607 + 0x2c64, 0x8cff, 0x0040, 0x387d, 0x6004, 0xa084, 0x00ff, 0xa086,
3608 + 0x0006, 0x0040, 0x3872, 0x6004, 0xa084, 0xff00, 0xa086, 0x0600,
3609 + 0x00c0, 0x387d, 0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105,
3610 + 0x8007, 0x20a2, 0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff,
3611 + 0x0040, 0x3888, 0xa386, 0x002a, 0x0040, 0x3891, 0x0078, 0x385e,
3612 + 0x83ff, 0x00c0, 0x388f, 0x7120, 0x810c, 0x0078, 0x2bad, 0x702f,
3613 + 0x0001, 0x711e, 0x7020, 0xa300, 0x7022, 0x2061, 0xa6d2, 0x6007,
3614 + 0x0000, 0x6312, 0x7024, 0x600e, 0x6426, 0x652a, 0x662e, 0x6732,
3615 + 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002, 0x701b, 0x38a8, 0x007c,
3616 + 0x702c, 0xa005, 0x00c0, 0x38b9, 0x711c, 0x7024, 0x20a0, 0x2019,
3617 + 0x0000, 0x2061, 0xa6d2, 0x6424, 0x6528, 0x662c, 0x6730, 0x0078,
3618 + 0x385e, 0x7120, 0x810c, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7,
3619 + 0x60cc, 0xd09c, 0x0040, 0x2bd7, 0x1078, 0x35ba, 0x0040, 0x2bd7,
3620 + 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604, 0x701b,
3621 + 0x38d2, 0x007c, 0x0d7e, 0xade8, 0x000d, 0x6828, 0xa0be, 0x7000,
3622 + 0x0040, 0x38e5, 0xa0be, 0x7100, 0x0040, 0x38e5, 0xa0be, 0x7200,
3623 + 0x0040, 0x38e5, 0x0d7f, 0x0078, 0x2bdb, 0x6820, 0x6924, 0x1078,
3624 + 0x254d, 0x00c0, 0x3910, 0x1078, 0x455c, 0x00c0, 0x3910, 0x7122,
3625 + 0x6612, 0x6516, 0x6e18, 0x0c7e, 0x1078, 0x35ba, 0x0040, 0x3910,
3626 + 0x1078, 0x35ba, 0x0040, 0x3910, 0x0c7f, 0x0d7f, 0x6837, 0x0000,
3627 + 0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x1078,
3628 + 0x8e82, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x3913, 0x007c,
3629 + 0x0d7f, 0x0078, 0x2bd7, 0x7120, 0x1078, 0x298e, 0x6820, 0xa086,
3630 + 0x8001, 0x0040, 0x2bd7, 0x2d00, 0x701e, 0x6804, 0xa080, 0x0002,
3631 + 0x007e, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x1078, 0x4281, 0x007f,
3632 + 0xade8, 0x000d, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x2061, 0xa6d2,
3633 + 0x6007, 0x0000, 0x6e00, 0x6f28, 0xa7c6, 0x7000, 0x00c0, 0x393a,
3634 + 0x0078, 0x393e, 0xa7c6, 0x7100, 0x00c0, 0x3946, 0xa6c2, 0x0004,
3635 + 0x0048, 0x2bdb, 0x2009, 0x0004, 0x0078, 0x3608, 0xa7c6, 0x7200,
3636 + 0x00c0, 0x2bdb, 0xa6c2, 0x0054, 0x0048, 0x2bdb, 0x600e, 0x6013,
3637 + 0x002a, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x13db,
3638 + 0x7007, 0x0002, 0x701b, 0x395d, 0x007c, 0x701c, 0x2068, 0x6804,
3639 + 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x007e, 0x20a9, 0x002a,
3640 + 0x2098, 0x20a0, 0x1078, 0x4281, 0x007f, 0x2009, 0x002a, 0x2061,
3641 + 0xa6d2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0078, 0x3608, 0x81ff,
3642 + 0x00c0, 0x2bd7, 0x792c, 0x2001, 0xa89d, 0x2102, 0x1078, 0x35d2,
3643 + 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7, 0x127e, 0x2091,
3644 + 0x8000, 0x1078, 0x47de, 0x127f, 0x0078, 0x2bad, 0x7824, 0xd08c,
3645 + 0x00c0, 0x3995, 0xd084, 0x0040, 0x31da, 0x1078, 0x35e4, 0x0040,
3646 + 0x2bdb, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, 0x00c0, 0x39a3, 0x2009,
3647 + 0x0002, 0x0078, 0x2bd7, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
3648 + 0x0040, 0x39b0, 0xa08e, 0x0004, 0x0040, 0x39b0, 0xa08e, 0x0005,
3649 + 0x00c0, 0x39dd, 0x7824, 0xd08c, 0x0040, 0x39bb, 0x6000, 0xc08c,
3650 + 0x6002, 0x0078, 0x39c5, 0x2001, 0xa653, 0x2004, 0xd0b4, 0x0040,
3651 + 0x320f, 0x6000, 0xd08c, 0x00c0, 0x320f, 0x6837, 0x0000, 0x6838,
3652 + 0xc0fd, 0x683a, 0x1078, 0x8e9e, 0x00c0, 0x39d2, 0x2009, 0x0003,
3653 + 0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x39d7, 0x007c, 0x1078,
3654 + 0x35e4, 0x0040, 0x2bdb, 0x0078, 0x320f, 0x2009, 0xa62f, 0x210c,
3655 + 0x81ff, 0x0040, 0x39e7, 0x2009, 0x0001, 0x0078, 0x2bd7, 0x2001,
3656 + 0xa600, 0x2004, 0xa086, 0x0003, 0x0040, 0x39f2, 0x2009, 0x0007,
3657 + 0x0078, 0x2bd7, 0x2001, 0xa653, 0x2004, 0xd0ac, 0x0040, 0x39fc,
3658 + 0x2009, 0x0008, 0x0078, 0x2bd7, 0x609c, 0xd0a4, 0x00c0, 0x3a03,
3659 + 0xd0ac, 0x00c0, 0x320f, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838,
3660 + 0xc0fd, 0x683a, 0x1078, 0x8f12, 0x00c0, 0x3a12, 0x2009, 0x0003,
3661 + 0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x3a17, 0x007c, 0x6830,
3662 + 0xa086, 0x0100, 0x00c0, 0x3a20, 0x2009, 0x0004, 0x0078, 0x2bd7,
3663 + 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x0078, 0x39b2, 0x81ff, 0x2009,
3664 + 0x0001, 0x00c0, 0x2bd7, 0x6000, 0xa086, 0x0003, 0x2009, 0x0007,
3665 + 0x00c0, 0x2bd7, 0x2001, 0xa653, 0x2004, 0xd0ac, 0x2009, 0x0008,
3666 + 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x6004, 0xa084,
3667 + 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x00c0, 0x2bd7, 0x0c7e,
3668 + 0x1078, 0x35ba, 0x0c7f, 0x2009, 0x0002, 0x0040, 0x2bd7, 0x6837,
3669 + 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x7928, 0xa194,
3670 + 0xff00, 0xa18c, 0x00ff, 0xa006, 0x82ff, 0x00c0, 0x3a65, 0xc0ed,
3671 + 0x6952, 0x792c, 0x6956, 0x0078, 0x3a6e, 0xa28e, 0x0100, 0x00c0,
3672 + 0x2bdb, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, 0x683e, 0x1078,
3673 + 0x90bd, 0x2009, 0x0003, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b,
3674 + 0x3a7a, 0x007c, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0040,
3675 + 0x2bd7, 0x0078, 0x2bad, 0x81ff, 0x2009, 0x0001, 0x00c0, 0x2bd7,
3676 + 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x00c0, 0x2bd7, 0x1078,
3677 + 0x35e4, 0x0040, 0x2bdb, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
3678 + 0x2009, 0x0009, 0x00c0, 0x2bd7, 0x0c7e, 0x1078, 0x35ba, 0x0c7f,
3679 + 0x2009, 0x0002, 0x0040, 0x2bd7, 0xad80, 0x000f, 0x2009, 0x0008,
3680 + 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604, 0x701b, 0x3ab1,
3681 + 0x007c, 0x0d7e, 0xade8, 0x000f, 0x6800, 0xa086, 0x0500, 0x00c0,
3682 + 0x3ac4, 0x6804, 0xa005, 0x00c0, 0x3ac4, 0x6808, 0xa084, 0xff00,
3683 + 0x00c0, 0x3ac4, 0x0078, 0x3ac7, 0x0d7f, 0x00c0, 0x2bdb, 0x0d7f,
3684 + 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x0c7e,
3685 + 0x1078, 0x35e4, 0x00c0, 0x3ad7, 0x0c7f, 0x0078, 0x2bdb, 0x1078,
3686 + 0x9119, 0x2009, 0x0003, 0x0c7f, 0x0040, 0x2bd7, 0x7007, 0x0003,
3687 + 0x701b, 0x3ae3, 0x007c, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004,
3688 + 0x0040, 0x2bd7, 0x0078, 0x2bad, 0x127e, 0x0c7e, 0x0e7e, 0x2061,
3689 + 0x0100, 0x2071, 0xa600, 0x6044, 0xd0a4, 0x00c0, 0x3b15, 0xd084,
3690 + 0x0040, 0x3afe, 0x1078, 0x3c75, 0x0078, 0x3b11, 0xd08c, 0x0040,
3691 + 0x3b05, 0x1078, 0x3b8c, 0x0078, 0x3b11, 0xd094, 0x0040, 0x3b0c,
3692 + 0x1078, 0x3b60, 0x0078, 0x3b11, 0xd09c, 0x0040, 0x3b11, 0x1078,
3693 + 0x3b1f, 0x0e7f, 0x0c7f, 0x127f, 0x007c, 0x017e, 0x6128, 0xd19c,
3694 + 0x00c0, 0x3b1c, 0xc19d, 0x612a, 0x017f, 0x0078, 0x3b11, 0x624c,
3695 + 0xa286, 0xf0f0, 0x00c0, 0x3b30, 0x6048, 0xa086, 0xf0f0, 0x0040,
3696 + 0x3b30, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0078, 0x3b5f,
3697 + 0xa294, 0xff00, 0xa296, 0xf700, 0x0040, 0x3b45, 0x7134, 0xd1a4,
3698 + 0x00c0, 0x3b45, 0x6240, 0xa294, 0x0010, 0x0040, 0x3b45, 0x2009,
3699 + 0x00f7, 0x1078, 0x42a1, 0x0078, 0x3b5f, 0x6043, 0x0040, 0x6043,
3700 + 0x0000, 0x7077, 0x0000, 0x708f, 0x0001, 0x70b3, 0x0000, 0x70cf,
3701 + 0x0000, 0x2009, 0xacc0, 0x200b, 0x0000, 0x7087, 0x0000, 0x707b,
3702 + 0x000f, 0x2009, 0x000f, 0x2011, 0x41d5, 0x1078, 0x5add, 0x007c,
3703 + 0x157e, 0x7078, 0xa005, 0x00c0, 0x3b8a, 0x2011, 0x41d5, 0x1078,
3704 + 0x5a45, 0x6040, 0xa094, 0x0010, 0xa285, 0x0020, 0x6042, 0x20a9,
3705 + 0x00c8, 0x6044, 0xd08c, 0x00c0, 0x3b83, 0x00f0, 0x3b71, 0x6242,
3706 + 0x708b, 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, 0x0080, 0x6042,
3707 + 0x6242, 0x0078, 0x3b8a, 0x6242, 0x708b, 0x0000, 0x707f, 0x0000,
3708 + 0x0078, 0x3b8a, 0x157f, 0x007c, 0x707c, 0xa08a, 0x0003, 0x00c8,
3709 + 0x3b95, 0x1079, 0x3b98, 0x0078, 0x3b97, 0x1078, 0x1332, 0x007c,
3710 + 0x3b9b, 0x3bea, 0x3c74, 0x0f7e, 0x707f, 0x0001, 0x20e1, 0xa000,
3711 + 0x20e1, 0x8700, 0x1078, 0x21f7, 0x20e1, 0x9080, 0x20e1, 0x4000,
3712 + 0x2079, 0xab00, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000,
3713 + 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, 0x0000,
3714 + 0x781f, 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, 0x0000,
3715 + 0x782f, 0x0000, 0x2079, 0xab0c, 0x207b, 0x1101, 0x7807, 0x0000,
3716 + 0x2099, 0xa605, 0x20a1, 0xab0e, 0x20a9, 0x0004, 0x53a3, 0x2079,
3717 + 0xab12, 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0xab00, 0x20a1,
3718 + 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000,
3719 + 0x1078, 0x420b, 0x0f7f, 0x7083, 0x0000, 0x6043, 0x0008, 0x6043,
3720 + 0x0000, 0x007c, 0x0d7e, 0x7080, 0x7083, 0x0000, 0xa025, 0x0040,
3721 + 0x3c5e, 0x6020, 0xd0b4, 0x00c0, 0x3c5c, 0x718c, 0x81ff, 0x0040,
3722 + 0x3c4b, 0xa486, 0x000c, 0x00c0, 0x3c56, 0xa480, 0x0018, 0x8004,
3723 + 0x20a8, 0x2011, 0xab80, 0x2019, 0xab00, 0x220c, 0x2304, 0xa106,
3724 + 0x00c0, 0x3c22, 0x8210, 0x8318, 0x00f0, 0x3c05, 0x6043, 0x0004,
3725 + 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x707f, 0x0002,
3726 + 0x708b, 0x0002, 0x2009, 0x07d0, 0x2011, 0x41dc, 0x1078, 0x5add,
3727 + 0x0078, 0x3c5c, 0x2069, 0xab80, 0x6930, 0xa18e, 0x1101, 0x00c0,
3728 + 0x3c56, 0x6834, 0xa005, 0x00c0, 0x3c56, 0x6900, 0xa18c, 0x00ff,
3729 + 0x00c0, 0x3c36, 0x6804, 0xa005, 0x0040, 0x3c4b, 0x2011, 0xab8e,
3730 + 0x2019, 0xa605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0048,
3731 + 0x3c49, 0x00c0, 0x3c56, 0x8210, 0x8318, 0x00f0, 0x3c3c, 0x0078,
3732 + 0x3c56, 0x708f, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
3733 + 0xab80, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008,
3734 + 0x6043, 0x0000, 0x0078, 0x3c5e, 0x0d7f, 0x007c, 0x6020, 0xd0b4,
3735 + 0x00c0, 0x3c5c, 0x60c3, 0x000c, 0x2011, 0xa8bb, 0x2013, 0x0000,
3736 + 0x7083, 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
3737 + 0x1078, 0x6e06, 0x0078, 0x3c5c, 0x007c, 0x7088, 0xa08a, 0x001d,
3738 + 0x00c8, 0x3c7e, 0x1079, 0x3c81, 0x0078, 0x3c80, 0x1078, 0x1332,
3739 + 0x007c, 0x3cab, 0x3cba, 0x3ce9, 0x3d02, 0x3d2e, 0x3d5a, 0x3d86,
3740 + 0x3dbc, 0x3de8, 0x3e10, 0x3e53, 0x3e7d, 0x3e9f, 0x3eb5, 0x3edb,
3741 + 0x3eee, 0x3ef7, 0x3f2b, 0x3f57, 0x3f83, 0x3faf, 0x3fe5, 0x4030,
3742 + 0x405f, 0x4081, 0x40c3, 0x40e9, 0x4102, 0x4103, 0x0c7e, 0x2061,
3743 + 0xa600, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0xa084, 0xfff9,
3744 + 0x6006, 0x0c7f, 0x007c, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043,
3745 + 0x0002, 0x708b, 0x0001, 0x2009, 0x07d0, 0x2011, 0x41dc, 0x1078,
3746 + 0x5add, 0x007c, 0x0f7e, 0x7080, 0xa086, 0x0014, 0x00c0, 0x3ce7,
3747 + 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x3ce7, 0x2079, 0xab80,
3748 + 0x7a30, 0xa296, 0x1102, 0x00c0, 0x3ce5, 0x7834, 0xa005, 0x00c0,
3749 + 0x3ce5, 0x7a38, 0xd2fc, 0x0040, 0x3cdb, 0x70b0, 0xa005, 0x00c0,
3750 + 0x3cdb, 0x70b3, 0x0001, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x708b,
3751 + 0x0010, 0x1078, 0x3ef7, 0x0078, 0x3ce7, 0x1078, 0x4224, 0x0f7f,
3752 + 0x007c, 0x708b, 0x0003, 0x6043, 0x0004, 0x2011, 0x41dc, 0x1078,
3753 + 0x5a45, 0x1078, 0x4289, 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9,
3754 + 0x000a, 0x20a3, 0x0000, 0x00f0, 0x3cf9, 0x60c3, 0x0014, 0x1078,
3755 + 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3d2c, 0x2011,
3756 + 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3d2a, 0x2079,
3757 + 0xab80, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x3d2a, 0x7834, 0xa005,
3758 + 0x00c0, 0x3d2a, 0x7a38, 0xd2fc, 0x0040, 0x3d24, 0x70b0, 0xa005,
3759 + 0x00c0, 0x3d24, 0x70b3, 0x0001, 0x708b, 0x0004, 0x1078, 0x3d2e,
3760 + 0x0078, 0x3d2c, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, 0x0005,
3761 + 0x1078, 0x4289, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011,
3762 + 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3d4c, 0x7074, 0xa005, 0x00c0,
3763 + 0x3d4c, 0x7150, 0xa186, 0xffff, 0x0040, 0x3d4c, 0x1078, 0x419d,
3764 + 0x0040, 0x3d4c, 0x1078, 0x42b8, 0x20a9, 0x0008, 0x2298, 0x26a0,
3765 + 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078,
3766 + 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3d84, 0x2011,
3767 + 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3d82, 0x2079,
3768 + 0xab80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x3d82, 0x7834, 0xa005,
3769 + 0x00c0, 0x3d82, 0x7a38, 0xd2fc, 0x0040, 0x3d7c, 0x70b0, 0xa005,
3770 + 0x00c0, 0x3d7c, 0x70b3, 0x0001, 0x708b, 0x0006, 0x1078, 0x3d86,
3771 + 0x0078, 0x3d84, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, 0x0007,
3772 + 0x1078, 0x4289, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011,
3773 + 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3dae, 0x7074, 0xa005, 0x00c0,
3774 + 0x3dae, 0x7154, 0xa186, 0xffff, 0x0040, 0x3dae, 0xa180, 0x29c0,
3775 + 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x419d, 0x0040, 0x3dae,
3776 + 0x1078, 0x3820, 0x0040, 0x3dae, 0x1078, 0x256a, 0x20a9, 0x0008,
3777 + 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
3778 + 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040,
3779 + 0x3de6, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0,
3780 + 0x3de4, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3de4,
3781 + 0x7834, 0xa005, 0x00c0, 0x3de4, 0x7a38, 0xd2fc, 0x0040, 0x3dde,
3782 + 0x70b0, 0xa005, 0x00c0, 0x3dde, 0x70b3, 0x0001, 0x708b, 0x0008,
3783 + 0x1078, 0x3de8, 0x0078, 0x3de6, 0x1078, 0x4224, 0x0f7f, 0x007c,
3784 + 0x708b, 0x0009, 0x1078, 0x4289, 0x20a3, 0x1105, 0x20a3, 0x0100,
3785 + 0x3430, 0x1078, 0x42d4, 0x00c0, 0x3e01, 0x7074, 0xa005, 0x00c0,
3786 + 0x3e01, 0x1078, 0x4104, 0x00c0, 0x3e0b, 0xa085, 0x0001, 0x1078,
3787 + 0x256a, 0x20a9, 0x0008, 0x2099, 0xab8e, 0x26a0, 0x53a6, 0x20a3,
3788 + 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c,
3789 + 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3e51, 0x2011, 0x41dc, 0x1078,
3790 + 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3e4f, 0x2079, 0xab80, 0x7a30,
3791 + 0xa296, 0x1105, 0x00c0, 0x3e4f, 0x7834, 0x2011, 0x0100, 0xa21e,
3792 + 0x00c0, 0x3e3a, 0x7a38, 0xd2fc, 0x0040, 0x3e34, 0x70b0, 0xa005,
3793 + 0x00c0, 0x3e34, 0x70b3, 0x0001, 0x708b, 0x000a, 0x1078, 0x3e53,
3794 + 0x0078, 0x3e51, 0xa005, 0x00c0, 0x3e4f, 0x7a38, 0xd2fc, 0x0040,
3795 + 0x3e47, 0x70b0, 0xa005, 0x00c0, 0x3e47, 0x70b3, 0x0001, 0x7087,
3796 + 0x0000, 0x708b, 0x000e, 0x1078, 0x3edb, 0x0078, 0x3e51, 0x1078,
3797 + 0x4224, 0x0f7f, 0x007c, 0x708b, 0x000b, 0x2011, 0xab0e, 0x22a0,
3798 + 0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009,
3799 + 0x0000, 0x41a4, 0x1078, 0x4289, 0x20a3, 0x1106, 0x20a3, 0x0000,
3800 + 0x1078, 0x42d4, 0x0040, 0x3e70, 0x2013, 0x0000, 0x0078, 0x3e74,
3801 + 0x6030, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6,
3802 + 0x60c3, 0x0084, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005,
3803 + 0x0040, 0x3e9d, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084,
3804 + 0x00c0, 0x3e9b, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1106, 0x00c0,
3805 + 0x3e9b, 0x7834, 0xa005, 0x00c0, 0x3e9b, 0x708b, 0x000c, 0x1078,
3806 + 0x3e9f, 0x0078, 0x3e9d, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b,
3807 + 0x000d, 0x1078, 0x4289, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099,
3808 + 0xab8e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
3809 + 0x60c3, 0x0084, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005,
3810 + 0x0040, 0x3ed9, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084,
3811 + 0x00c0, 0x3ed7, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1107, 0x00c0,
3812 + 0x3ed7, 0x7834, 0xa005, 0x00c0, 0x3ed7, 0x7087, 0x0001, 0x1078,
3813 + 0x427b, 0x708b, 0x000e, 0x1078, 0x3edb, 0x0078, 0x3ed9, 0x1078,
3814 + 0x4224, 0x0f7f, 0x007c, 0x708b, 0x000f, 0x7083, 0x0000, 0x608b,
3815 + 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009,
3816 + 0x07d0, 0x2011, 0x41dc, 0x1078, 0x5a38, 0x007c, 0x7080, 0xa005,
3817 + 0x0040, 0x3ef6, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x007c, 0x708b,
3818 + 0x0011, 0x1078, 0x42d4, 0x00c0, 0x3f14, 0x716c, 0x81ff, 0x0040,
3819 + 0x3f14, 0x2009, 0x0000, 0x7070, 0xa084, 0x00ff, 0x1078, 0x254d,
3820 + 0xa186, 0x007e, 0x0040, 0x3f14, 0xa186, 0x0080, 0x0040, 0x3f14,
3821 + 0x2011, 0xab8e, 0x1078, 0x419d, 0x20e1, 0x9080, 0x20e1, 0x4000,
3822 + 0x2099, 0xab80, 0x20a1, 0x020b, 0x7480, 0xa480, 0x0018, 0xa080,
3823 + 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014,
3824 + 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3f55,
3825 + 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3f53,
3826 + 0x2079, 0xab80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x3f53, 0x7834,
3827 + 0xa005, 0x00c0, 0x3f53, 0x7a38, 0xd2fc, 0x0040, 0x3f4d, 0x70b0,
3828 + 0xa005, 0x00c0, 0x3f4d, 0x70b3, 0x0001, 0x708b, 0x0012, 0x1078,
3829 + 0x3f57, 0x0078, 0x3f55, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b,
3830 + 0x0013, 0x1078, 0x4295, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
3831 + 0x2011, 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3f75, 0x7074, 0xa005,
3832 + 0x00c0, 0x3f75, 0x7150, 0xa186, 0xffff, 0x0040, 0x3f75, 0x1078,
3833 + 0x419d, 0x0040, 0x3f75, 0x1078, 0x42b8, 0x20a9, 0x0008, 0x2298,
3834 + 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
3835 + 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3fad,
3836 + 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3fab,
3837 + 0x2079, 0xab80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3fab, 0x7834,
3838 + 0xa005, 0x00c0, 0x3fab, 0x7a38, 0xd2fc, 0x0040, 0x3fa5, 0x70b0,
3839 + 0xa005, 0x00c0, 0x3fa5, 0x70b3, 0x0001, 0x708b, 0x0014, 0x1078,
3840 + 0x3faf, 0x0078, 0x3fad, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b,
3841 + 0x0015, 0x1078, 0x4295, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430,
3842 + 0x2011, 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3fd7, 0x7074, 0xa005,
3843 + 0x00c0, 0x3fd7, 0x7154, 0xa186, 0xffff, 0x0040, 0x3fd7, 0xa180,
3844 + 0x29c0, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x419d, 0x0040,
3845 + 0x3fd7, 0x1078, 0x3820, 0x0040, 0x3fd7, 0x1078, 0x256a, 0x20a9,
3846 + 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
3847 + 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005,
3848 + 0x0040, 0x402e, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014,
3849 + 0x00c0, 0x402c, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1105, 0x00c0,
3850 + 0x402c, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0, 0x400b, 0x7a38,
3851 + 0xd2fc, 0x0040, 0x4009, 0x70b0, 0xa005, 0x00c0, 0x4009, 0x70b3,
3852 + 0x0001, 0x0078, 0x401a, 0xa005, 0x00c0, 0x402c, 0x7a38, 0xd2fc,
3853 + 0x0040, 0x4018, 0x70b0, 0xa005, 0x00c0, 0x4018, 0x70b3, 0x0001,
3854 + 0x7087, 0x0000, 0x7a38, 0xd2f4, 0x0040, 0x4026, 0x2001, 0xa674,
3855 + 0x2004, 0xd0a4, 0x00c0, 0x4026, 0x70cf, 0x0008, 0x708b, 0x0016,
3856 + 0x1078, 0x4030, 0x0078, 0x402e, 0x1078, 0x4224, 0x0f7f, 0x007c,
3857 + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xab80, 0x20a1, 0x020b,
3858 + 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0xab8e, 0x708b, 0x0017,
3859 + 0x1078, 0x42d4, 0x00c0, 0x4050, 0x7074, 0xa005, 0x00c0, 0x4050,
3860 + 0x1078, 0x4104, 0x00c0, 0x405a, 0xa085, 0x0001, 0x1078, 0x256a,
3861 + 0x20a9, 0x0008, 0x2099, 0xab8e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
3862 + 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e,
3863 + 0x7080, 0xa005, 0x0040, 0x407f, 0x2011, 0x41dc, 0x1078, 0x5a45,
3864 + 0xa086, 0x0084, 0x00c0, 0x407d, 0x2079, 0xab80, 0x7a30, 0xa296,
3865 + 0x1106, 0x00c0, 0x407d, 0x7834, 0xa005, 0x00c0, 0x407d, 0x708b,
3866 + 0x0018, 0x1078, 0x4081, 0x0078, 0x407f, 0x1078, 0x4224, 0x0f7f,
3867 + 0x007c, 0x708b, 0x0019, 0x1078, 0x4295, 0x20a3, 0x1106, 0x20a3,
3868 + 0x0000, 0x3430, 0x2099, 0xab8e, 0x2039, 0xab0e, 0x27a0, 0x20a9,
3869 + 0x0040, 0x53a3, 0x1078, 0x42d4, 0x00c0, 0x40b5, 0x2728, 0x2514,
3870 + 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007,
3871 + 0xa205, 0x202a, 0x6030, 0x2310, 0x8214, 0xa2a0, 0xab0e, 0x2414,
3872 + 0xa38c, 0x0001, 0x0040, 0x40b0, 0xa294, 0xff00, 0x0078, 0x40b3,
3873 + 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9,
3874 + 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084,
3875 + 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x40e7,
3876 + 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084, 0x00c0, 0x40e5,
3877 + 0x2079, 0xab80, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x40e5, 0x7834,
3878 + 0xa005, 0x00c0, 0x40e5, 0x7087, 0x0001, 0x1078, 0x427b, 0x708b,
3879 + 0x001a, 0x1078, 0x40e9, 0x0078, 0x40e7, 0x1078, 0x4224, 0x0f7f,
3880 + 0x007c, 0x708b, 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
3881 + 0xab80, 0x20a1, 0x020b, 0x7480, 0xa480, 0x0018, 0xa080, 0x0007,
3882 + 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x1078,
3883 + 0x420b, 0x007c, 0x007c, 0x007c, 0x087e, 0x097e, 0x2029, 0xa653,
3884 + 0x252c, 0x20a9, 0x0008, 0x2041, 0xab0e, 0x28a0, 0x2099, 0xab8e,
3885 + 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x411a,
3886 + 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0,
3887 + 0x412c, 0xd5d4, 0x0040, 0x4127, 0x8210, 0x0078, 0x4128, 0x8211,
3888 + 0x00f0, 0x411a, 0x0078, 0x4194, 0x82ff, 0x00c0, 0x413e, 0xd5d4,
3889 + 0x0040, 0x4138, 0xa1a6, 0x3fff, 0x0040, 0x4124, 0x0078, 0x413c,
3890 + 0xa1a6, 0x3fff, 0x0040, 0x4194, 0xa18d, 0xc000, 0x20a9, 0x0010,
3891 + 0x2019, 0x0001, 0xd5d4, 0x0040, 0x4147, 0x2019, 0x0010, 0x2120,
3892 + 0xd5d4, 0x0040, 0x414e, 0x8423, 0x0078, 0x414f, 0x8424, 0x00c8,
3893 + 0x415c, 0xd5d4, 0x0040, 0x4157, 0x8319, 0x0078, 0x4158, 0x8318,
3894 + 0x00f0, 0x4148, 0x0078, 0x4194, 0x23a8, 0x2021, 0x0001, 0x8426,
3895 + 0x8425, 0x00f0, 0x4160, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040,
3896 + 0x4174, 0x007e, 0x2039, 0x0007, 0x2200, 0xa73a, 0x007f, 0x27a8,
3897 + 0xa5a8, 0x0010, 0x00f0, 0x4170, 0x7552, 0xa5c8, 0x29c0, 0x292c,
3898 + 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0000,
3899 + 0x7572, 0x2018, 0x2304, 0xa405, 0x201a, 0x7077, 0x0001, 0x26a0,
3900 + 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
3901 + 0xa085, 0x0001, 0x0078, 0x419a, 0xa006, 0x0078, 0x419a, 0xa006,
3902 + 0x1078, 0x1332, 0x097f, 0x087f, 0x007c, 0x2118, 0x2021, 0x0000,
3903 + 0x2001, 0x0007, 0xa39a, 0x0010, 0x0048, 0x41aa, 0x8420, 0x8001,
3904 + 0x0078, 0x41a2, 0x2118, 0x84ff, 0x0040, 0x41b3, 0xa39a, 0x0010,
3905 + 0x8421, 0x00c0, 0x41ae, 0x2021, 0x0001, 0x83ff, 0x0040, 0x41bc,
3906 + 0x8423, 0x8319, 0x00c0, 0x41b8, 0xa238, 0x2704, 0xa42c, 0x00c0,
3907 + 0x41d4, 0xa405, 0x203a, 0x7152, 0xa1a0, 0x29c0, 0x242c, 0xa5ac,
3908 + 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0000, 0x7572,
3909 + 0x7077, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e, 0x2071, 0xa600,
3910 + 0x707b, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e, 0x2001, 0x0002,
3911 + 0x1078, 0x5ae6, 0x2079, 0x0100, 0x2071, 0x0140, 0x1078, 0x6e0f,
3912 + 0x7004, 0xa084, 0x4000, 0x0040, 0x41f1, 0x7003, 0x1000, 0x7003,
3913 + 0x0000, 0x127e, 0x2091, 0x8000, 0x2071, 0xa622, 0x2073, 0x0000,
3914 + 0x7840, 0x027e, 0x017e, 0x2009, 0x00f7, 0x1078, 0x42a1, 0x017f,
3915 + 0xa094, 0x0010, 0xa285, 0x0080, 0x7842, 0x7a42, 0x027f, 0x127f,
3916 + 0x0f7f, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x2011, 0xa8bb,
3917 + 0x2013, 0x0000, 0x7083, 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3,
3918 + 0x0056, 0x60a7, 0x9575, 0x1078, 0x6e06, 0x2009, 0x07d0, 0x2011,
3919 + 0x41dc, 0x1078, 0x5add, 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e,
3920 + 0x2091, 0x8000, 0x2011, 0x0003, 0x1078, 0x70e0, 0x2011, 0x0002,
3921 + 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e, 0x2019, 0x0000, 0x1078,
3922 + 0x7058, 0x037f, 0x2009, 0x00f7, 0x1078, 0x42a1, 0x2061, 0xa8c4,
3923 + 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, 0xa600, 0x6003, 0x0001,
3924 + 0x2061, 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d,
3925 + 0x2011, 0x4259, 0x1078, 0x5a38, 0x127f, 0x0c7f, 0x027f, 0x017f,
3926 + 0x007c, 0x0e7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2001, 0x0001,
3927 + 0x1078, 0x5ae6, 0x2071, 0x0100, 0x1078, 0x6e0f, 0x2071, 0x0140,
3928 + 0x7004, 0xa084, 0x4000, 0x0040, 0x4271, 0x7003, 0x1000, 0x7003,
3929 + 0x0000, 0x2001, 0x0001, 0x1078, 0x24e8, 0x1078, 0x4224, 0x127f,
3930 + 0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1, 0xacc0, 0x2099,
3931 + 0xab8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x00f0, 0x4281,
3932 + 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xab00, 0x20a1,
3933 + 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1, 0x9080, 0x20e1,
3934 + 0x4000, 0x2099, 0xab80, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6,
3935 + 0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f, 0x2001, 0xa62f,
3936 + 0x2004, 0xa005, 0x00c0, 0x42b2, 0x6030, 0xa084, 0x00ff, 0xa105,
3937 + 0x0078, 0x42b4, 0xa185, 0x00f7, 0x604a, 0x007f, 0x0c7f, 0x007c,
3938 + 0x017e, 0x047e, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x42cb,
3939 + 0xa006, 0x2020, 0x2009, 0x002a, 0x1078, 0xa21d, 0x2001, 0xa60c,
3940 + 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0000, 0x1078,
3941 + 0x284f, 0x047f, 0x017f, 0x007c, 0x007e, 0x2001, 0xa60c, 0x2004,
3942 + 0xd09c, 0x0040, 0x42db, 0x007f, 0x007c, 0x007e, 0x017e, 0x127e,
3943 + 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102,
3944 + 0x127f, 0x017f, 0x007f, 0x007c, 0x157e, 0x20a9, 0x00ff, 0x2009,
3945 + 0xa735, 0xa006, 0x200a, 0x8108, 0x00f0, 0x42f2, 0x157f, 0x007c,
3946 + 0x0d7e, 0x037e, 0x157e, 0x137e, 0x147e, 0x2069, 0xa652, 0xa006,
3947 + 0x6002, 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x29c0,
3948 + 0x231c, 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006,
3949 + 0x23a0, 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4,
3950 + 0x603e, 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062,
3951 + 0x6066, 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082,
3952 + 0x6086, 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60ae,
3953 + 0x61a2, 0x0d7e, 0x60a4, 0xa06d, 0x0040, 0x4338, 0x1078, 0x13a4,
3954 + 0x60a7, 0x0000, 0x60a8, 0xa06d, 0x0040, 0x4340, 0x1078, 0x13a4,
3955 + 0x60ab, 0x0000, 0x0d7f, 0xa006, 0x604a, 0x6810, 0x603a, 0x680c,
3956 + 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, 0x147f, 0x137f, 0x157f,
3957 + 0x037f, 0x0d7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x6944, 0x6e48,
3958 + 0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8, 0x4424, 0xa18c, 0xff00,
3959 + 0x810f, 0xa182, 0x00ff, 0x00c8, 0x442a, 0x2001, 0xa60c, 0x2004,
3960 + 0xa084, 0x0003, 0x0040, 0x4385, 0x2001, 0xa60c, 0x2004, 0xd084,
3961 + 0x00c0, 0x4405, 0xa188, 0xa735, 0x2104, 0xa065, 0x0040, 0x4405,
3962 + 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x4405, 0x6000,
3963 + 0xd0c4, 0x0040, 0x4405, 0x0078, 0x4392, 0xa188, 0xa735, 0x2104,
3964 + 0xa065, 0x0040, 0x43e9, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006,
3965 + 0x00c0, 0x43ef, 0x60a4, 0xa00d, 0x0040, 0x439a, 0x1078, 0x4817,
3966 + 0x0040, 0x43e3, 0x60a8, 0xa00d, 0x0040, 0x43b4, 0x1078, 0x486a,
3967 + 0x00c0, 0x43b4, 0x694c, 0xd1fc, 0x00c0, 0x43aa, 0x1078, 0x44df,
3968 + 0x0078, 0x43de, 0x1078, 0x4484, 0x694c, 0xd1ec, 0x00c0, 0x43de,
3969 + 0x1078, 0x46d6, 0x0078, 0x43de, 0x694c, 0xa184, 0xa000, 0x0040,
3970 + 0x43ce, 0xd1ec, 0x0040, 0x43c7, 0xd1fc, 0x0040, 0x43c3, 0x1078,
3971 + 0x46e7, 0x0078, 0x43ca, 0x1078, 0x46e7, 0x0078, 0x43ce, 0xd1fc,
3972 + 0x0040, 0x43ce, 0x1078, 0x4484, 0x0078, 0x43de, 0x6050, 0xa00d,
3973 + 0x0040, 0x43d9, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x0078,
3974 + 0x43de, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x1078, 0x5da9,
3975 + 0xa006, 0x127f, 0x007c, 0x2001, 0x0005, 0x2009, 0x0000, 0x0078,
3976 + 0x442e, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x442e, 0xa082,
3977 + 0x0006, 0x00c8, 0x4405, 0x60a0, 0xd0bc, 0x00c0, 0x4401, 0x6100,
3978 + 0xd1fc, 0x0040, 0x4392, 0x2001, 0x0029, 0x2009, 0x1000, 0x0078,
3979 + 0x442e, 0x2001, 0x0028, 0x0078, 0x4420, 0x2009, 0xa60c, 0x210c,
3980 + 0xd18c, 0x0040, 0x440f, 0x2001, 0x0004, 0x0078, 0x4420, 0xd184,
3981 + 0x0040, 0x4416, 0x2001, 0x0004, 0x0078, 0x4420, 0x2001, 0x0029,
3982 + 0x6100, 0xd1fc, 0x0040, 0x4420, 0x2009, 0x1000, 0x0078, 0x442e,
3983 + 0x2009, 0x0000, 0x0078, 0x442e, 0x2001, 0x0029, 0x2009, 0x0000,
3984 + 0x0078, 0x442e, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x127f,
3985 + 0x007c, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8,
3986 + 0x447e, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x00c8, 0x4464,
3987 + 0xa188, 0xa735, 0x2104, 0xa065, 0x0040, 0x4464, 0x6004, 0xa084,
3988 + 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x446a, 0x684c, 0xd0ec, 0x0040,
3989 + 0x4457, 0x1078, 0x46e7, 0x1078, 0x4484, 0x0078, 0x445f, 0x1078,
3990 + 0x4484, 0x684c, 0xd0fc, 0x0040, 0x445f, 0x1078, 0x46d6, 0x1078,
3991 + 0x472f, 0xa006, 0x0078, 0x4482, 0x2001, 0x0028, 0x2009, 0x0000,
3992 + 0x0078, 0x4482, 0xa082, 0x0006, 0x00c8, 0x4478, 0x6100, 0xd1fc,
3993 + 0x0040, 0x444d, 0x2001, 0x0029, 0x2009, 0x1000, 0x0078, 0x4482,
3994 + 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x4482, 0x2001, 0x0029,
3995 + 0x2009, 0x0000, 0xa005, 0x007c, 0x127e, 0x2091, 0x8000, 0x6050,
3996 + 0xa00d, 0x0040, 0x4492, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
3997 + 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078,
3998 + 0x4490, 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, 0x44af,
3999 + 0x0e7e, 0x2071, 0xa8b1, 0x7004, 0xa086, 0x0002, 0x0040, 0x44b6,
4000 + 0x0e7f, 0x604c, 0x6802, 0x2d00, 0x604e, 0x127f, 0x007c, 0x2d00,
4001 + 0x6052, 0x604e, 0x6803, 0x0000, 0x0078, 0x44ad, 0x701c, 0xac06,
4002 + 0x00c0, 0x44a8, 0x604c, 0x2070, 0x7000, 0x6802, 0x2d00, 0x7002,
4003 + 0x0e7f, 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x604c, 0xa06d,
4004 + 0x0040, 0x44d1, 0x6800, 0xa005, 0x00c0, 0x44cf, 0x6052, 0x604e,
4005 + 0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, 0x44de, 0x6800,
4006 + 0xa005, 0x00c0, 0x44dc, 0x6052, 0x604e, 0xad05, 0x007c, 0x6803,
4007 + 0x0000, 0x6084, 0xa00d, 0x0040, 0x44e9, 0x2d00, 0x200a, 0x6086,
4008 + 0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x44e8, 0x127e, 0x0c7e,
4009 + 0x027e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005, 0x0040,
4010 + 0x44fc, 0xc285, 0x0078, 0x44fd, 0xc284, 0x6202, 0x027f, 0x0c7f,
4011 + 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260,
4012 + 0x6204, 0x007e, 0xa086, 0x0006, 0x00c0, 0x4521, 0x609c, 0xd0ac,
4013 + 0x0040, 0x4521, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x4521,
4014 + 0xa284, 0xff00, 0x8007, 0xa086, 0x0007, 0x00c0, 0x4521, 0x2011,
4015 + 0x0600, 0x007f, 0xa294, 0xff00, 0xa215, 0x6206, 0x007e, 0xa086,
4016 + 0x0006, 0x00c0, 0x4531, 0x6290, 0x82ff, 0x00c0, 0x4531, 0x1078,
4017 + 0x1332, 0x007f, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091,
4018 + 0x8000, 0x6218, 0x2260, 0x6204, 0x007e, 0xa086, 0x0006, 0x00c0,
4019 + 0x4553, 0x609c, 0xd0a4, 0x0040, 0x4553, 0x2001, 0xa653, 0x2004,
4020 + 0xd0ac, 0x00c0, 0x4553, 0xa284, 0x00ff, 0xa086, 0x0007, 0x00c0,
4021 + 0x4553, 0x2011, 0x0006, 0x007f, 0xa294, 0x00ff, 0x8007, 0xa215,
4022 + 0x6206, 0x0c7f, 0x127f, 0x007c, 0x027e, 0xa182, 0x00ff, 0x0048,
4023 + 0x4565, 0xa085, 0x0001, 0x0078, 0x457d, 0xa190, 0xa735, 0x2204,
4024 + 0xa065, 0x00c0, 0x457c, 0x017e, 0x0d7e, 0x1078, 0x1370, 0x2d60,
4025 + 0x0d7f, 0x017f, 0x0040, 0x4561, 0x2c00, 0x2012, 0x60a7, 0x0000,
4026 + 0x60ab, 0x0000, 0x1078, 0x42f8, 0xa006, 0x027f, 0x007c, 0x127e,
4027 + 0x2091, 0x8000, 0x027e, 0xa182, 0x00ff, 0x0048, 0x458b, 0xa085,
4028 + 0x0001, 0x0078, 0x45c1, 0x0d7e, 0xa190, 0xa735, 0x2204, 0xa06d,
4029 + 0x0040, 0x45bf, 0x2013, 0x0000, 0x0d7e, 0x0c7e, 0x2d60, 0x60a4,
4030 + 0xa06d, 0x0040, 0x459d, 0x1078, 0x13a4, 0x60a8, 0xa06d, 0x0040,
4031 + 0x45a3, 0x1078, 0x13a4, 0x0c7f, 0x0d7f, 0x0d7e, 0x0c7e, 0x68ac,
4032 + 0x2060, 0x8cff, 0x0040, 0x45bb, 0x600c, 0x007e, 0x6010, 0x2068,
4033 + 0x1078, 0x8d06, 0x0040, 0x45b6, 0x1078, 0x13b4, 0x1078, 0x772d,
4034 + 0x0c7f, 0x0078, 0x45a9, 0x0c7f, 0x0d7f, 0x1078, 0x13a4, 0x0d7f,
4035 + 0xa006, 0x027f, 0x127f, 0x007c, 0x017e, 0xa182, 0x00ff, 0x0048,
4036 + 0x45cd, 0xa085, 0x0001, 0x0078, 0x45d4, 0xa188, 0xa735, 0x2104,
4037 + 0xa065, 0x0040, 0x45c9, 0xa006, 0x017f, 0x007c, 0x0d7e, 0x157e,
4038 + 0x137e, 0x147e, 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c,
4039 + 0x6002, 0x2069, 0xab8e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138,
4040 + 0xa10a, 0x0048, 0x45ec, 0x603a, 0x6814, 0x6066, 0x2099, 0xab96,
4041 + 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0xab9a,
4042 + 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0xabae,
4043 + 0x6808, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076,
4044 + 0x60a0, 0xa086, 0x007e, 0x00c0, 0x4611, 0x2069, 0xab8e, 0x690c,
4045 + 0x616e, 0xa182, 0x0211, 0x00c8, 0x4619, 0x2009, 0x0008, 0x0078,
4046 + 0x4643, 0xa182, 0x0259, 0x00c8, 0x4621, 0x2009, 0x0007, 0x0078,
4047 + 0x4643, 0xa182, 0x02c1, 0x00c8, 0x4629, 0x2009, 0x0006, 0x0078,
4048 + 0x4643, 0xa182, 0x0349, 0x00c8, 0x4631, 0x2009, 0x0005, 0x0078,
4049 + 0x4643, 0xa182, 0x0421, 0x00c8, 0x4639, 0x2009, 0x0004, 0x0078,
4050 + 0x4643, 0xa182, 0x0581, 0x00c8, 0x4641, 0x2009, 0x0003, 0x0078,
4051 + 0x4643, 0x2009, 0x0002, 0x6192, 0x147f, 0x137f, 0x157f, 0x0d7f,
4052 + 0x007c, 0x017e, 0x027e, 0x0e7e, 0x2071, 0xab8d, 0x2e04, 0x6896,
4053 + 0x2071, 0xab8e, 0x7004, 0x689a, 0x701c, 0x689e, 0x6a00, 0x2009,
4054 + 0xa672, 0x210c, 0xd0bc, 0x0040, 0x4663, 0xd1ec, 0x0040, 0x4663,
4055 + 0xc2ad, 0x0078, 0x4664, 0xc2ac, 0xd0c4, 0x0040, 0x466d, 0xd1e4,
4056 + 0x0040, 0x466d, 0xc2bd, 0x0078, 0x466e, 0xc2bc, 0x6a02, 0x0e7f,
4057 + 0x027f, 0x017f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4,
4058 + 0xa06d, 0x0040, 0x4697, 0x6900, 0x81ff, 0x00c0, 0x46ab, 0x6a04,
4059 + 0xa282, 0x0010, 0x00c8, 0x46b0, 0xad88, 0x0004, 0x20a9, 0x0010,
4060 + 0x2104, 0xa086, 0xffff, 0x0040, 0x4692, 0x8108, 0x00f0, 0x4688,
4061 + 0x1078, 0x1332, 0x260a, 0x8210, 0x6a06, 0x0078, 0x46ab, 0x1078,
4062 + 0x138b, 0x0040, 0x46b0, 0x2d00, 0x60a6, 0x6803, 0x0000, 0xad88,
4063 + 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x00f0, 0x46a3,
4064 + 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c,
4065 + 0xa006, 0x0078, 0x46ad, 0x127e, 0x2091, 0x8000, 0x0d7e, 0x60a4,
4066 + 0xa00d, 0x0040, 0x46d3, 0x2168, 0x6800, 0xa005, 0x00c0, 0x46cf,
4067 + 0x1078, 0x4817, 0x00c0, 0x46d3, 0x200b, 0xffff, 0x6804, 0xa08a,
4068 + 0x0002, 0x0048, 0x46cf, 0x8001, 0x6806, 0x0078, 0x46d3, 0x1078,
4069 + 0x13a4, 0x60a7, 0x0000, 0x0d7f, 0x127f, 0x007c, 0x127e, 0x2091,
4070 + 0x8000, 0x1078, 0x487f, 0x0078, 0x46df, 0x1078, 0x4484, 0x1078,
4071 + 0x4775, 0x00c0, 0x46dd, 0x1078, 0x472f, 0x127f, 0x007c, 0x0d7e,
4072 + 0x127e, 0x2091, 0x8000, 0x60a8, 0xa06d, 0x0040, 0x470b, 0x6950,
4073 + 0x81ff, 0x00c0, 0x471f, 0x6a54, 0xa282, 0x0010, 0x00c8, 0x472c,
4074 + 0xad88, 0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0040,
4075 + 0x4706, 0x8108, 0x00f0, 0x46fc, 0x1078, 0x1332, 0x260a, 0x8210,
4076 + 0x6a56, 0x0078, 0x471f, 0x1078, 0x138b, 0x0040, 0x472c, 0x2d00,
4077 + 0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, 0x20a9, 0x0010, 0x200b,
4078 + 0xffff, 0x8108, 0x00f0, 0x4717, 0x6857, 0x0001, 0x6e62, 0x0078,
4079 + 0x4723, 0x1078, 0x44df, 0x1078, 0x4739, 0x00c0, 0x4721, 0xa085,
4080 + 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x4729, 0x127e,
4081 + 0x2091, 0x8000, 0x1078, 0x5da9, 0x127f, 0x007c, 0xa01e, 0x0078,
4082 + 0x473b, 0x2019, 0x0001, 0xa00e, 0x127e, 0x2091, 0x8000, 0x604c,
4083 + 0x2068, 0x6000, 0xd0dc, 0x00c0, 0x4759, 0x8dff, 0x0040, 0x4770,
4084 + 0x83ff, 0x0040, 0x4751, 0x6848, 0xa606, 0x0040, 0x475e, 0x0078,
4085 + 0x4759, 0x683c, 0xa406, 0x00c0, 0x4759, 0x6840, 0xa506, 0x0040,
4086 + 0x475e, 0x2d08, 0x6800, 0x2068, 0x0078, 0x4745, 0x1078, 0x7233,
4087 + 0x6a00, 0x604c, 0xad06, 0x00c0, 0x4768, 0x624e, 0x0078, 0x476b,
4088 + 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x4770, 0x6152, 0x8dff,
4089 + 0x127f, 0x007c, 0xa01e, 0x0078, 0x4777, 0x2019, 0x0001, 0xa00e,
4090 + 0x6080, 0x2068, 0x8dff, 0x0040, 0x47a3, 0x83ff, 0x0040, 0x4786,
4091 + 0x6848, 0xa606, 0x0040, 0x4793, 0x0078, 0x478e, 0x683c, 0xa406,
4092 + 0x00c0, 0x478e, 0x6840, 0xa506, 0x0040, 0x4793, 0x2d08, 0x6800,
4093 + 0x2068, 0x0078, 0x477a, 0x6a00, 0x6080, 0xad06, 0x00c0, 0x479b,
4094 + 0x6282, 0x0078, 0x479e, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0,
4095 + 0x47a3, 0x6186, 0x8dff, 0x007c, 0xa016, 0x1078, 0x4810, 0x00c0,
4096 + 0x47ab, 0x2011, 0x0001, 0x1078, 0x4863, 0x00c0, 0x47b1, 0xa295,
4097 + 0x0002, 0x007c, 0x1078, 0x489b, 0x0040, 0x47ba, 0x1078, 0x8dca,
4098 + 0x0078, 0x47bc, 0xa085, 0x0001, 0x007c, 0x1078, 0x489b, 0x0040,
4099 + 0x47c5, 0x1078, 0x8d62, 0x0078, 0x47c7, 0xa085, 0x0001, 0x007c,
4100 + 0x1078, 0x489b, 0x0040, 0x47d0, 0x1078, 0x8dac, 0x0078, 0x47d2,
4101 + 0xa085, 0x0001, 0x007c, 0x1078, 0x489b, 0x0040, 0x47db, 0x1078,
4102 + 0x8d7e, 0x0078, 0x47dd, 0xa085, 0x0001, 0x007c, 0x1078, 0x489b,
4103 + 0x0040, 0x47e6, 0x1078, 0x8de8, 0x0078, 0x47e8, 0xa085, 0x0001,
4104 + 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091, 0x8000, 0x6080, 0xa06d,
4105 + 0x0040, 0x4808, 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847,
4106 + 0x0000, 0x1078, 0x8f7d, 0x007e, 0x6000, 0xd0fc, 0x0040, 0x4802,
4107 + 0x1078, 0xa4ed, 0x007f, 0x1078, 0x4a73, 0x007f, 0x0078, 0x47ef,
4108 + 0x6083, 0x0000, 0x6087, 0x0000, 0x0d7f, 0x007f, 0x127f, 0x007c,
4109 + 0x60a4, 0xa00d, 0x00c0, 0x4817, 0xa085, 0x0001, 0x007c, 0x0e7e,
4110 + 0x2170, 0x7000, 0xa005, 0x00c0, 0x482c, 0x20a9, 0x0010, 0xae88,
4111 + 0x0004, 0x2104, 0xa606, 0x0040, 0x482c, 0x8108, 0x00f0, 0x4821,
4112 + 0xa085, 0x0001, 0x0078, 0x482d, 0xa006, 0x0e7f, 0x007c, 0x0d7e,
4113 + 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x00c0, 0x483d, 0x1078,
4114 + 0x138b, 0x0040, 0x484f, 0x2d00, 0x60a6, 0x6803, 0x0001, 0x6807,
4115 + 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108,
4116 + 0x00f0, 0x4845, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006,
4117 + 0x0078, 0x484c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d,
4118 + 0x0040, 0x4860, 0x60a7, 0x0000, 0x1078, 0x13a4, 0xa085, 0x0001,
4119 + 0x127f, 0x0d7f, 0x007c, 0x60a8, 0xa00d, 0x00c0, 0x486a, 0xa085,
4120 + 0x0001, 0x007c, 0x0e7e, 0x2170, 0x7050, 0xa005, 0x00c0, 0x487d,
4121 + 0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0040, 0x487d,
4122 + 0x8108, 0x00f0, 0x4874, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x127e,
4123 + 0x2091, 0x8000, 0x1078, 0x4863, 0x00c0, 0x4899, 0x200b, 0xffff,
4124 + 0x0d7e, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, 0x0048, 0x4894,
4125 + 0x8001, 0x6856, 0x0078, 0x4898, 0x1078, 0x13a4, 0x60ab, 0x0000,
4126 + 0x0d7f, 0x127f, 0x007c, 0x609c, 0xd0a4, 0x007c, 0x0f7e, 0x71b0,
4127 + 0x81ff, 0x00c0, 0x48b9, 0x71cc, 0xd19c, 0x0040, 0x48b9, 0x2001,
4128 + 0x007e, 0xa080, 0xa735, 0x2004, 0xa07d, 0x0040, 0x48b9, 0x7804,
4129 + 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x48b9, 0x7800, 0xc0ed,
4130 + 0x7802, 0x2079, 0xa652, 0x7804, 0xd0a4, 0x0040, 0x48df, 0x157e,
4131 + 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x45c4,
4132 + 0x00c0, 0x48d9, 0x6004, 0xa084, 0xff00, 0x8007, 0xa096, 0x0004,
4133 + 0x0040, 0x48d6, 0xa086, 0x0006, 0x00c0, 0x48d9, 0x6000, 0xc0ed,
4134 + 0x6002, 0x017f, 0x8108, 0x00f0, 0x48c5, 0x0c7f, 0x157f, 0x1078,
4135 + 0x4967, 0x0040, 0x48e8, 0x2001, 0xa8a1, 0x200c, 0x0078, 0x48f0,
4136 + 0x2079, 0xa652, 0x7804, 0xd0a4, 0x0040, 0x48f4, 0x2009, 0x07d0,
4137 + 0x2011, 0x48f6, 0x1078, 0x5add, 0x0f7f, 0x007c, 0x2011, 0x48f6,
4138 + 0x1078, 0x5a45, 0x1078, 0x4967, 0x0040, 0x491e, 0x2001, 0xa7b3,
4139 + 0x2004, 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102, 0x2001, 0xa653,
4140 + 0x2004, 0xd0a4, 0x0040, 0x4912, 0x2009, 0x07d0, 0x2011, 0x48f6,
4141 + 0x1078, 0x5add, 0x0e7e, 0x2071, 0xa600, 0x706f, 0x0000, 0x7073,
4142 + 0x0000, 0x1078, 0x2677, 0x0e7f, 0x0078, 0x4956, 0x157e, 0x0c7e,
4143 + 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x45c4, 0x00c0,
4144 + 0x4950, 0x6000, 0xd0ec, 0x0040, 0x4950, 0x047e, 0x62a0, 0xa294,
4145 + 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, 0x1078, 0xa21d, 0x6000,
4146 + 0xc0e5, 0xc0ec, 0x6002, 0x6004, 0xa084, 0x00ff, 0xa085, 0x0700,
4147 + 0x6006, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000,
4148 + 0x1078, 0x5e0a, 0x2009, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x047f,
4149 + 0x017f, 0x8108, 0x00f0, 0x4924, 0x0c7f, 0x157f, 0x007c, 0x0c7e,
4150 + 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c, 0x7818,
4151 + 0x2004, 0xd0ac, 0x007c, 0x7818, 0x2004, 0xd0bc, 0x007c, 0x0f7e,
4152 + 0x2001, 0xa7b3, 0x2004, 0xa07d, 0x0040, 0x4970, 0x7800, 0xd0ec,
4153 + 0x0f7f, 0x007c, 0x127e, 0x027e, 0x2091, 0x8000, 0x007e, 0x62a0,
4154 + 0xa290, 0xa735, 0x2204, 0xac06, 0x10c0, 0x1332, 0x007f, 0x6200,
4155 + 0xa005, 0x0040, 0x4986, 0xc2fd, 0x0078, 0x4987, 0xc2fc, 0x6202,
4156 + 0x027f, 0x127f, 0x007c, 0x2011, 0xa633, 0x2204, 0xd0cc, 0x0040,
4157 + 0x4998, 0x2001, 0xa89f, 0x200c, 0x2011, 0x4999, 0x1078, 0x5add,
4158 + 0x007c, 0x2011, 0x4999, 0x1078, 0x5a45, 0x2011, 0xa633, 0x2204,
4159 + 0xc0cc, 0x2012, 0x007c, 0x2071, 0xa714, 0x7003, 0x0001, 0x7007,
4160 + 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f,
4161 + 0x0000, 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b,
4162 + 0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xa87d, 0x7003,
4163 + 0xa714, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xa85d, 0x7013,
4164 + 0x0020, 0x7017, 0x0040, 0x7037, 0x0000, 0x007c, 0x017e, 0x0e7e,
4165 + 0x2071, 0xa835, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001,
4166 + 0xa653, 0x2004, 0xd0fc, 0x00c0, 0x49e8, 0x2001, 0xa653, 0x2004,
4167 + 0xa00e, 0xd09c, 0x0040, 0x49e5, 0x8108, 0x7102, 0x0078, 0x4a3b,
4168 + 0x2001, 0xa672, 0x200c, 0xa184, 0x000f, 0x2009, 0xa673, 0x210c,
4169 + 0x0079, 0x49f2, 0x49dd, 0x4a13, 0x4a1b, 0x4a26, 0x4a2c, 0x49dd,
4170 + 0x49dd, 0x49dd, 0x4a02, 0x49dd, 0x49dd, 0x49dd, 0x49dd, 0x49dd,
4171 + 0x49dd, 0x49dd, 0x7003, 0x0004, 0x137e, 0x147e, 0x157e, 0x2099,
4172 + 0xa676, 0x20a1, 0xa886, 0x20a9, 0x0004, 0x53a3, 0x157f, 0x147f,
4173 + 0x137f, 0x0078, 0x4a3b, 0x708f, 0x0005, 0x7007, 0x0122, 0x2001,
4174 + 0x0002, 0x0078, 0x4a21, 0x708f, 0x0002, 0x7007, 0x0121, 0x2001,
4175 + 0x0003, 0x7002, 0x7097, 0x0001, 0x0078, 0x4a38, 0x7007, 0x0122,
4176 + 0x2001, 0x0002, 0x0078, 0x4a30, 0x7007, 0x0121, 0x2001, 0x0003,
4177 + 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007, 0x709a,
4178 + 0xa184, 0x00ff, 0x7092, 0x0e7f, 0x017f, 0x007c, 0x0e7e, 0x2071,
4179 + 0xa714, 0x684c, 0xa005, 0x00c0, 0x4a4c, 0x7028, 0xc085, 0x702a,
4180 + 0xa085, 0x0001, 0x0078, 0x4a71, 0x6a60, 0x7236, 0x6b64, 0x733a,
4181 + 0x6868, 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e,
4182 + 0x6844, 0x7032, 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007,
4183 + 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100,
4184 + 0xa319, 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001,
4185 + 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x027e, 0x6838, 0xd0fc, 0x00c0,
4186 + 0x4ac9, 0x6804, 0xa00d, 0x0040, 0x4a8f, 0x0d7e, 0x2071, 0xa600,
4187 + 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff,
4188 + 0x00c0, 0x4a82, 0x702e, 0x70ac, 0xa200, 0x70ae, 0x0d7f, 0x2071,
4189 + 0xa714, 0x701c, 0xa005, 0x00c0, 0x4adb, 0x0068, 0x4ad9, 0x2071,
4190 + 0xa835, 0x7200, 0x82ff, 0x0040, 0x4ad9, 0x6934, 0xa186, 0x0103,
4191 + 0x00c0, 0x4aec, 0x6948, 0x6844, 0xa105, 0x00c0, 0x4acc, 0x2009,
4192 + 0x8020, 0x2200, 0x0079, 0x4aac, 0x4ad9, 0x4ab1, 0x4b09, 0x4b17,
4193 + 0x4ad9, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4ad9, 0x7122,
4194 + 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080,
4195 + 0x2071, 0xa600, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70ac, 0x8000,
4196 + 0x70ae, 0x027f, 0x0e7f, 0x007c, 0x6844, 0xa086, 0x0100, 0x00c0,
4197 + 0x4ad9, 0x6868, 0xa005, 0x00c0, 0x4ad9, 0x2009, 0x8020, 0x0078,
4198 + 0x4aa9, 0x2071, 0xa714, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000,
4199 + 0x7012, 0x7018, 0xa06d, 0x711a, 0x0040, 0x4ae9, 0x6902, 0x0078,
4200 + 0x4aea, 0x711e, 0x0078, 0x4ac9, 0xa18c, 0x00ff, 0xa186, 0x0017,
4201 + 0x0040, 0x4afa, 0xa186, 0x001e, 0x0040, 0x4afa, 0xa18e, 0x001f,
4202 + 0x00c0, 0x4ad9, 0x684c, 0xd0cc, 0x0040, 0x4ad9, 0x6850, 0xa084,
4203 + 0x00ff, 0xa086, 0x0001, 0x00c0, 0x4ad9, 0x2009, 0x8021, 0x0078,
4204 + 0x4aa9, 0x7084, 0x8008, 0xa092, 0x001e, 0x00c8, 0x4ad9, 0x7186,
4205 + 0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x0078, 0x4b27, 0x7084,
4206 + 0x8008, 0xa092, 0x000f, 0x00c8, 0x4ad9, 0x7186, 0xae90, 0x0003,
4207 + 0x8003, 0xa210, 0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7088,
4208 + 0xa10a, 0x0048, 0x4ac0, 0x718c, 0x7084, 0xa10a, 0x0048, 0x4ac0,
4209 + 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4ac0, 0x2071, 0xa835,
4210 + 0x7000, 0xa086, 0x0002, 0x00c0, 0x4b47, 0x1078, 0x4dc3, 0x2071,
4211 + 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4ac0, 0x1078,
4212 + 0x4dee, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078,
4213 + 0x4ac0, 0x007e, 0x684c, 0x007e, 0x6837, 0x0103, 0x20a9, 0x001c,
4214 + 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x007f, 0xa084,
4215 + 0x00ff, 0x684e, 0x007f, 0x684a, 0x6952, 0x007c, 0x2071, 0xa714,
4216 + 0x7004, 0x0079, 0x4b6b, 0x4b75, 0x4b86, 0x4d94, 0x4d95, 0x4dbc,
4217 + 0x4dc2, 0x4b76, 0x4d82, 0x4d23, 0x4da5, 0x007c, 0x127e, 0x2091,
4218 + 0x8000, 0x0068, 0x4b85, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091,
4219 + 0x4080, 0x7007, 0x0001, 0x700b, 0x0000, 0x127f, 0x2069, 0xa8c4,
4220 + 0x6844, 0xa005, 0x0050, 0x4bae, 0x00c0, 0x4bae, 0x127e, 0x2091,
4221 + 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xa720, 0x2004, 0xa10a,
4222 + 0x0040, 0x4ba9, 0x0068, 0x4bad, 0x2069, 0x0000, 0x6818, 0xd084,
4223 + 0x00c0, 0x4bad, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091,
4224 + 0x4080, 0x2069, 0xa8c4, 0x6847, 0xffff, 0x127f, 0x2069, 0xa600,
4225 + 0x6848, 0x6964, 0xa102, 0x2069, 0xa835, 0x688a, 0x6984, 0x701c,
4226 + 0xa06d, 0x0040, 0x4bc0, 0x81ff, 0x0040, 0x4c08, 0x0078, 0x4bd6,
4227 + 0x81ff, 0x0040, 0x4cda, 0x2071, 0xa835, 0x7184, 0x7088, 0xa10a,
4228 + 0x00c8, 0x4bd6, 0x7190, 0x2071, 0xa8c4, 0x7040, 0xa005, 0x0040,
4229 + 0x4bd6, 0x00d0, 0x4cda, 0x7142, 0x0078, 0x4cda, 0x2071, 0xa835,
4230 + 0x718c, 0x127e, 0x2091, 0x8000, 0x7084, 0xa10a, 0x0048, 0x4cf7,
4231 + 0x0068, 0x4c8c, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4c8c,
4232 + 0x2001, 0xffff, 0x2071, 0xa8c4, 0x7042, 0x2071, 0xa835, 0x7000,
4233 + 0xa086, 0x0002, 0x00c0, 0x4bfe, 0x1078, 0x4dc3, 0x2071, 0x0000,
4234 + 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4c8c, 0x1078, 0x4dee,
4235 + 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4c8c,
4236 + 0x2071, 0xa835, 0x7000, 0xa005, 0x0040, 0x4cb9, 0x6934, 0xa186,
4237 + 0x0103, 0x00c0, 0x4c8f, 0x684c, 0xd0bc, 0x00c0, 0x4cb9, 0x6948,
4238 + 0x6844, 0xa105, 0x00c0, 0x4cac, 0x2009, 0x8020, 0x2071, 0xa835,
4239 + 0x7000, 0x0079, 0x4c23, 0x4cb9, 0x4c71, 0x4c49, 0x4c5b, 0x4c28,
4240 + 0x137e, 0x147e, 0x157e, 0x2099, 0xa676, 0x20a1, 0xa886, 0x20a9,
4241 + 0x0004, 0x53a3, 0x157f, 0x147f, 0x137f, 0x2071, 0xa87d, 0xad80,
4242 + 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002, 0x700b, 0x0000,
4243 + 0x2e10, 0x1078, 0x13db, 0x2071, 0xa714, 0x7007, 0x0009, 0x0078,
4244 + 0x4cda, 0x7084, 0x8008, 0xa092, 0x001e, 0x00c8, 0x4cda, 0xae90,
4245 + 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071, 0xa714, 0x1078,
4246 + 0x4e4c, 0x0078, 0x4cda, 0x7084, 0x8008, 0xa092, 0x000f, 0x00c8,
4247 + 0x4cda, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, 0x8210,
4248 + 0x6840, 0x2012, 0x7186, 0x2071, 0xa714, 0x1078, 0x4e4c, 0x0078,
4249 + 0x4cda, 0x127e, 0x2091, 0x8000, 0x0068, 0x4c8c, 0x2071, 0x0000,
4250 + 0x7018, 0xd084, 0x00c0, 0x4c8c, 0x7122, 0x683c, 0x7026, 0x6840,
4251 + 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x127f, 0x2071, 0xa714,
4252 + 0x1078, 0x4e4c, 0x0078, 0x4cda, 0x127f, 0x0078, 0x4cda, 0xa18c,
4253 + 0x00ff, 0xa186, 0x0017, 0x0040, 0x4c9d, 0xa186, 0x001e, 0x0040,
4254 + 0x4c9d, 0xa18e, 0x001f, 0x00c0, 0x4cb9, 0x684c, 0xd0cc, 0x0040,
4255 + 0x4cb9, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x4cb9,
4256 + 0x2009, 0x8021, 0x0078, 0x4c1e, 0x6844, 0xa086, 0x0100, 0x00c0,
4257 + 0x4cb9, 0x6868, 0xa005, 0x00c0, 0x4cb9, 0x2009, 0x8020, 0x0078,
4258 + 0x4c1e, 0x2071, 0xa714, 0x1078, 0x4e60, 0x0040, 0x4cda, 0x2071,
4259 + 0xa714, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003,
4260 + 0x00c0, 0x4cd1, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0040, 0x4cd1,
4261 + 0x710e, 0x7007, 0x0003, 0x1078, 0x4e80, 0x7050, 0xa086, 0x0100,
4262 + 0x0040, 0x4d95, 0x127e, 0x2091, 0x8000, 0x2071, 0xa714, 0x7008,
4263 + 0xa086, 0x0001, 0x00c0, 0x4cf5, 0x0068, 0x4cf5, 0x2009, 0x000d,
4264 + 0x7030, 0x200a, 0x2091, 0x4080, 0x700b, 0x0000, 0x7004, 0xa086,
4265 + 0x0006, 0x00c0, 0x4cf5, 0x7007, 0x0001, 0x127f, 0x007c, 0x2071,
4266 + 0xa714, 0x1078, 0x4e60, 0x0040, 0x4d20, 0x2071, 0xa835, 0x7084,
4267 + 0x700a, 0x20a9, 0x0020, 0x2099, 0xa836, 0x20a1, 0xa85d, 0x53a3,
4268 + 0x7087, 0x0000, 0x2071, 0xa714, 0x2069, 0xa87d, 0x706c, 0x6826,
4269 + 0x7070, 0x682a, 0x7074, 0x682e, 0x7078, 0x6832, 0x2d10, 0x1078,
4270 + 0x13db, 0x7007, 0x0008, 0x2001, 0xffff, 0x2071, 0xa8c4, 0x7042,
4271 + 0x127f, 0x0078, 0x4cda, 0x2069, 0xa87d, 0x6808, 0xa08e, 0x0000,
4272 + 0x0040, 0x4d81, 0xa08e, 0x0200, 0x0040, 0x4d7f, 0xa08e, 0x0100,
4273 + 0x00c0, 0x4d81, 0x127e, 0x2091, 0x8000, 0x0068, 0x4d7c, 0x2069,
4274 + 0x0000, 0x6818, 0xd084, 0x00c0, 0x4d7c, 0x702c, 0x7130, 0x8108,
4275 + 0xa102, 0x0048, 0x4d4a, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072,
4276 + 0x0078, 0x4d54, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, 0x4d54,
4277 + 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000,
4278 + 0x2001, 0xa85a, 0x2004, 0xa005, 0x00c0, 0x4d73, 0x6934, 0x2069,
4279 + 0xa835, 0x689c, 0x699e, 0x2069, 0xa8c4, 0xa102, 0x00c0, 0x4d6c,
4280 + 0x6844, 0xa005, 0x00d0, 0x4d7a, 0x2001, 0xa85b, 0x200c, 0x810d,
4281 + 0x6946, 0x0078, 0x4d7a, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001,
4282 + 0x2091, 0x4080, 0x7007, 0x0001, 0x127f, 0x0078, 0x4d81, 0x7007,
4283 + 0x0005, 0x007c, 0x701c, 0xa06d, 0x0040, 0x4d93, 0x1078, 0x4e60,
4284 + 0x0040, 0x4d93, 0x7007, 0x0003, 0x1078, 0x4e80, 0x7050, 0xa086,
4285 + 0x0100, 0x0040, 0x4d95, 0x007c, 0x007c, 0x7050, 0xa09e, 0x0100,
4286 + 0x00c0, 0x4d9e, 0x7007, 0x0004, 0x0078, 0x4dbc, 0xa086, 0x0200,
4287 + 0x00c0, 0x4da4, 0x7007, 0x0005, 0x007c, 0x2001, 0xa87f, 0x2004,
4288 + 0xa08e, 0x0100, 0x00c0, 0x4db1, 0x7007, 0x0001, 0x1078, 0x4e4c,
4289 + 0x007c, 0xa08e, 0x0000, 0x0040, 0x4db0, 0xa08e, 0x0200, 0x00c0,
4290 + 0x4db0, 0x7007, 0x0005, 0x007c, 0x1078, 0x4e16, 0x7006, 0x1078,
4291 + 0x4e4c, 0x007c, 0x007c, 0x0e7e, 0x157e, 0x2071, 0xa835, 0x7184,
4292 + 0x81ff, 0x0040, 0x4deb, 0xa006, 0x7086, 0xae80, 0x0003, 0x2071,
4293 + 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x0070, 0x4de8, 0x2014,
4294 + 0x722a, 0x8000, 0x0070, 0x4de8, 0x2014, 0x722e, 0x8000, 0x0070,
4295 + 0x4de8, 0x2014, 0x723a, 0x8000, 0x0070, 0x4de8, 0x2014, 0x723e,
4296 + 0xa180, 0x8030, 0x7022, 0x157f, 0x0e7f, 0x007c, 0x0e7e, 0x157e,
4297 + 0x2071, 0xa835, 0x7184, 0x81ff, 0x0040, 0x4e13, 0xa006, 0x7086,
4298 + 0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000,
4299 + 0x2014, 0x722a, 0x8000, 0x0070, 0x4e0c, 0x2014, 0x723a, 0x8000,
4300 + 0x2014, 0x723e, 0x0078, 0x4e10, 0x2001, 0x8020, 0x0078, 0x4e12,
4301 + 0x2001, 0x8042, 0x7022, 0x157f, 0x0e7f, 0x007c, 0x702c, 0x7130,
4302 + 0x8108, 0xa102, 0x0048, 0x4e23, 0xa00e, 0x7034, 0x706e, 0x7038,
4303 + 0x7072, 0x0078, 0x4e2d, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8,
4304 + 0x4e2d, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, 0x8001,
4305 + 0x700e, 0x00c0, 0x4e43, 0x127e, 0x2091, 0x8000, 0x0068, 0x4e46,
4306 + 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x700b,
4307 + 0x0000, 0x127f, 0x007c, 0x2001, 0x0007, 0x007c, 0x2001, 0x0006,
4308 + 0x700b, 0x0001, 0x127f, 0x007c, 0x701c, 0xa06d, 0x0040, 0x4e5f,
4309 + 0x127e, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e,
4310 + 0xa005, 0x00c0, 0x4e5c, 0x701a, 0x127f, 0x1078, 0x13a4, 0x007c,
4311 + 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0040, 0x4e6f, 0x2304,
4312 + 0x230c, 0xa10e, 0x0040, 0x4e6f, 0xa006, 0x0078, 0x4e7f, 0x732c,
4313 + 0x8319, 0x7130, 0xa102, 0x00c0, 0x4e79, 0x2300, 0xa005, 0x0078,
4314 + 0x4e7f, 0x0048, 0x4e7e, 0xa302, 0x0078, 0x4e7f, 0x8002, 0x007c,
4315 + 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000, 0x127e,
4316 + 0x2091, 0x8000, 0x2009, 0xa8d6, 0x2104, 0xc08d, 0x200a, 0x127f,
4317 + 0x1078, 0x13f9, 0x007c, 0x2071, 0xa6e2, 0x7003, 0x0000, 0x7007,
4318 + 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000, 0x7053,
4319 + 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000, 0x708b,
4320 + 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x007c, 0x0e7e, 0x2071,
4321 + 0xa6e2, 0x6848, 0xa005, 0x00c0, 0x4ebc, 0x7028, 0xc085, 0x702a,
4322 + 0xa085, 0x0001, 0x0078, 0x4ee1, 0x6a50, 0x7236, 0x6b54, 0x733a,
4323 + 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e,
4324 + 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006,
4325 + 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272,
4326 + 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000,
4327 + 0xa006, 0x0e7f, 0x007c, 0x2b78, 0x2071, 0xa6e2, 0x7004, 0x1079,
4328 + 0x4f41, 0x700c, 0x0079, 0x4eec, 0x4ef1, 0x4ee6, 0x4ee6, 0x4ee6,
4329 + 0x4ee6, 0x007c, 0x700c, 0x0079, 0x4ef5, 0x4efa, 0x4f3f, 0x4f3f,
4330 + 0x4f40, 0x4f40, 0x7830, 0x7930, 0xa106, 0x0040, 0x4f04, 0x7830,
4331 + 0x7930, 0xa106, 0x00c0, 0x4f2a, 0x7030, 0xa10a, 0x0040, 0x4f2a,
4332 + 0x00c8, 0x4f0c, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x00c8, 0x4f2b,
4333 + 0x1078, 0x1370, 0x0040, 0x4f2a, 0x2d00, 0x705a, 0x7063, 0x0040,
4334 + 0x2001, 0x0003, 0x7057, 0x0000, 0x127e, 0x007e, 0x2091, 0x8000,
4335 + 0x2009, 0xa8d6, 0x2104, 0xc085, 0x200a, 0x007f, 0x700e, 0x127f,
4336 + 0x1078, 0x13f9, 0x007c, 0x1078, 0x1370, 0x0040, 0x4f2a, 0x2d00,
4337 + 0x705a, 0x1078, 0x1370, 0x00c0, 0x4f37, 0x0078, 0x4f16, 0x2d00,
4338 + 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, 0x0078, 0x4f1a, 0x007c,
4339 + 0x007c, 0x4f52, 0x4f53, 0x4f8a, 0x4f8b, 0x4f3f, 0x4fc1, 0x4fc6,
4340 + 0x4ffd, 0x4ffe, 0x5019, 0x501a, 0x501b, 0x501c, 0x501d, 0x501e,
4341 + 0x509e, 0x50c8, 0x007c, 0x700c, 0x0079, 0x4f56, 0x4f5b, 0x4f5e,
4342 + 0x4f6e, 0x4f89, 0x4f89, 0x1078, 0x4ef2, 0x007c, 0x127e, 0x8001,
4343 + 0x700e, 0x7058, 0x007e, 0x1078, 0x5464, 0x0040, 0x4f6b, 0x2091,
4344 + 0x8000, 0x1078, 0x4ef2, 0x0d7f, 0x0078, 0x4f77, 0x127e, 0x8001,
4345 + 0x700e, 0x1078, 0x5464, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
4346 + 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x0020,
4347 + 0x00c8, 0x4f86, 0x1079, 0x4fa1, 0x127f, 0x007c, 0x127f, 0x1078,
4348 + 0x501f, 0x007c, 0x007c, 0x007c, 0x0e7e, 0x2071, 0xa6e2, 0x700c,
4349 + 0x0079, 0x4f92, 0x4f97, 0x4f97, 0x4f97, 0x4f99, 0x4f9d, 0x0e7f,
4350 + 0x007c, 0x700f, 0x0001, 0x0078, 0x4f9f, 0x700f, 0x0002, 0x0e7f,
4351 + 0x007c, 0x501f, 0x501f, 0x503b, 0x501f, 0x5171, 0x501f, 0x501f,
4352 + 0x501f, 0x501f, 0x501f, 0x503b, 0x51bb, 0x5208, 0x5261, 0x5277,
4353 + 0x501f, 0x501f, 0x5057, 0x503b, 0x501f, 0x501f, 0x5078, 0x5338,
4354 + 0x5356, 0x501f, 0x5057, 0x501f, 0x501f, 0x501f, 0x501f, 0x506d,
4355 + 0x5356, 0x7020, 0x2068, 0x1078, 0x13a4, 0x007c, 0x700c, 0x0079,
4356 + 0x4fc9, 0x4fce, 0x4fd1, 0x4fe1, 0x4ffc, 0x4ffc, 0x1078, 0x4ef2,
4357 + 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e, 0x1078, 0x5464,
4358 + 0x0040, 0x4fde, 0x2091, 0x8000, 0x1078, 0x4ef2, 0x0d7f, 0x0078,
4359 + 0x4fea, 0x127e, 0x8001, 0x700e, 0x1078, 0x5464, 0x7058, 0x2068,
4360 + 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084,
4361 + 0x00ff, 0xa08a, 0x001a, 0x00c8, 0x4ff9, 0x1079, 0x4fff, 0x127f,
4362 + 0x007c, 0x127f, 0x1078, 0x501f, 0x007c, 0x007c, 0x007c, 0x501f,
4363 + 0x503b, 0x515b, 0x501f, 0x503b, 0x501f, 0x503b, 0x503b, 0x501f,
4364 + 0x503b, 0x515b, 0x503b, 0x503b, 0x503b, 0x503b, 0x503b, 0x501f,
4365 + 0x503b, 0x515b, 0x501f, 0x501f, 0x503b, 0x501f, 0x501f, 0x501f,
4366 + 0x503b, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x7007,
4367 + 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x127e, 0x2091,
4368 + 0x8000, 0x1078, 0x4a73, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838,
4369 + 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078,
4370 + 0x4a73, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff,
4371 + 0xc0ed, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x4a73, 0x127f,
4372 + 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a,
4373 + 0x127e, 0x2091, 0x8000, 0x1078, 0x4a73, 0x127f, 0x007c, 0x6834,
4374 + 0x8007, 0xa084, 0x00ff, 0x0040, 0x502d, 0x8001, 0x00c0, 0x5064,
4375 + 0x7007, 0x0001, 0x0078, 0x513a, 0x7007, 0x0006, 0x7012, 0x2d00,
4376 + 0x7016, 0x701a, 0x704b, 0x513a, 0x007c, 0x684c, 0xa084, 0x00c0,
4377 + 0xa086, 0x00c0, 0x00c0, 0x5078, 0x7007, 0x0001, 0x0078, 0x5373,
4378 + 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098,
4379 + 0x20a1, 0xa70d, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x00c8,
4380 + 0x5049, 0x6884, 0xa08a, 0x0002, 0x00c8, 0x5049, 0x82ff, 0x00c0,
4381 + 0x509a, 0x6888, 0x698c, 0xa105, 0x0040, 0x509a, 0x2001, 0x510a,
4382 + 0x0078, 0x509d, 0xa280, 0x5100, 0x2004, 0x70c6, 0x7010, 0xa015,
4383 + 0x0040, 0x50e8, 0x1078, 0x1370, 0x00c0, 0x50a9, 0x7007, 0x000f,
4384 + 0x007c, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x6000, 0x6836, 0x6004,
4385 + 0xad00, 0x7096, 0x6008, 0xa20a, 0x00c8, 0x50b8, 0xa00e, 0x2200,
4386 + 0x7112, 0x620c, 0x8003, 0x800b, 0xa296, 0x0004, 0x0040, 0x50c1,
4387 + 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x1078, 0x13db,
4388 + 0x7090, 0xa08e, 0x0100, 0x0040, 0x50dc, 0xa086, 0x0200, 0x0040,
4389 + 0x50d4, 0x7007, 0x0010, 0x007c, 0x7020, 0x2068, 0x1078, 0x13a4,
4390 + 0x7014, 0x2068, 0x0078, 0x5049, 0x7020, 0x2068, 0x7018, 0x6802,
4391 + 0x6807, 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a, 0x0078, 0x509e,
4392 + 0x7014, 0x2068, 0x7007, 0x0001, 0x6884, 0xa005, 0x00c0, 0x50f7,
4393 + 0x6888, 0x698c, 0xa105, 0x0040, 0x50f7, 0x1078, 0x510e, 0x6834,
4394 + 0xa084, 0x00ff, 0xa086, 0x001e, 0x0040, 0x5373, 0x0078, 0x513a,
4395 + 0x5102, 0x5106, 0x0002, 0x0011, 0x0007, 0x0004, 0x000a, 0x000f,
4396 + 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, 0x0004, 0x0f7e, 0x0e7e,
4397 + 0x0c7e, 0x077e, 0x067e, 0x6f88, 0x6e8c, 0x6804, 0x2060, 0xacf0,
4398 + 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, 0x700c, 0x7816, 0x7008,
4399 + 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, 0x7e0e, 0x7f0a, 0x8109,
4400 + 0x0040, 0x5130, 0xaef2, 0x0004, 0xaffa, 0x0006, 0x0078, 0x511d,
4401 + 0x6004, 0xa065, 0x00c0, 0x5117, 0x067f, 0x077f, 0x0c7f, 0x0e7f,
4402 + 0x0f7f, 0x007c, 0x2009, 0xa62f, 0x210c, 0x81ff, 0x00c0, 0x5155,
4403 + 0x6838, 0xa084, 0x00ff, 0x683a, 0x1078, 0x4353, 0x00c0, 0x5149,
4404 + 0x007c, 0x1078, 0x4b51, 0x127e, 0x2091, 0x8000, 0x1078, 0x8f7d,
4405 + 0x1078, 0x4a73, 0x127f, 0x0078, 0x5148, 0x2001, 0x0028, 0x2009,
4406 + 0x0000, 0x0078, 0x5149, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906,
4407 + 0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x516a, 0x7007, 0x0006,
4408 + 0x0078, 0x5170, 0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x107a,
4409 + 0x007c, 0x7007, 0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848,
4410 + 0xa084, 0x00ff, 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x519a,
4411 + 0x2009, 0x0000, 0x20a9, 0x00ff, 0xa096, 0x0002, 0x0040, 0x519a,
4412 + 0xa005, 0x00c0, 0x51ad, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078,
4413 + 0x45c4, 0x00c0, 0x51ad, 0x067e, 0x6e50, 0x1078, 0x46b3, 0x067f,
4414 + 0x0078, 0x51ad, 0x047e, 0x2011, 0xa60c, 0x2224, 0xc484, 0xc48c,
4415 + 0x2412, 0x047f, 0x0c7e, 0x1078, 0x45c4, 0x00c0, 0x51a9, 0x1078,
4416 + 0x4852, 0x8108, 0x00f0, 0x51a3, 0x0c7f, 0x684c, 0xd084, 0x00c0,
4417 + 0x51b4, 0x1078, 0x13a4, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
4418 + 0x4a73, 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001,
4419 + 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x51ff, 0x2061, 0xa933,
4420 + 0x6100, 0xd184, 0x0040, 0x51df, 0x6858, 0xa084, 0x00ff, 0x00c0,
4421 + 0x5202, 0x6000, 0xd084, 0x0040, 0x51ff, 0x6004, 0xa005, 0x00c0,
4422 + 0x5205, 0x6003, 0x0000, 0x600b, 0x0000, 0x0078, 0x51fc, 0x2011,
4423 + 0x0001, 0x6860, 0xa005, 0x00c0, 0x51e7, 0x2001, 0x001e, 0x8000,
4424 + 0x6016, 0x6858, 0xa084, 0x00ff, 0x0040, 0x51ff, 0x6006, 0x6858,
4425 + 0x8007, 0xa084, 0x00ff, 0x0040, 0x51ff, 0x600a, 0x6858, 0x8000,
4426 + 0x00c0, 0x51fb, 0xc28d, 0x6202, 0x127f, 0x0078, 0x5453, 0x127f,
4427 + 0x0078, 0x544b, 0x127f, 0x0078, 0x5443, 0x127f, 0x0078, 0x5447,
4428 + 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xa653, 0x2004,
4429 + 0xd0a4, 0x0040, 0x525e, 0x2061, 0xa933, 0x6000, 0xd084, 0x0040,
4430 + 0x525e, 0x6204, 0x6308, 0xd08c, 0x00c0, 0x5250, 0x6c48, 0xa484,
4431 + 0x0003, 0x0040, 0x5236, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x00c0,
4432 + 0x522f, 0x2100, 0xa210, 0x0048, 0x525b, 0x0078, 0x5236, 0x8001,
4433 + 0x00c0, 0x525b, 0x2100, 0xa212, 0x0048, 0x525b, 0xa484, 0x000c,
4434 + 0x0040, 0x5250, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004,
4435 + 0x00c0, 0x5248, 0x2100, 0xa318, 0x0048, 0x525b, 0x0078, 0x5250,
4436 + 0xa082, 0x0004, 0x00c0, 0x525b, 0x2100, 0xa31a, 0x0048, 0x525b,
4437 + 0x6860, 0xa005, 0x0040, 0x5256, 0x8000, 0x6016, 0x6206, 0x630a,
4438 + 0x127f, 0x0078, 0x5453, 0x127f, 0x0078, 0x544f, 0x127f, 0x0078,
4439 + 0x544b, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0xa933,
4440 + 0x6300, 0xd38c, 0x00c0, 0x5271, 0x6308, 0x8318, 0x0048, 0x5274,
4441 + 0x630a, 0x127f, 0x0078, 0x5461, 0x127f, 0x0078, 0x544f, 0x127e,
4442 + 0x0c7e, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0040,
4443 + 0x528b, 0x0c7e, 0x2061, 0xa933, 0x6000, 0xa084, 0xfcff, 0x6002,
4444 + 0x0c7f, 0x0078, 0x52ba, 0x6858, 0xa005, 0x0040, 0x52d1, 0x685c,
4445 + 0xa065, 0x0040, 0x52cd, 0x2001, 0xa62f, 0x2004, 0xa005, 0x0040,
4446 + 0x529d, 0x1078, 0x8ec6, 0x0078, 0x52ab, 0x6013, 0x0400, 0x6037,
4447 + 0x0000, 0x694c, 0xd1a4, 0x0040, 0x52a7, 0x6950, 0x6136, 0x2009,
4448 + 0x0041, 0x1078, 0x775c, 0x6958, 0xa18c, 0xff00, 0xa186, 0x2000,
4449 + 0x00c0, 0x52ba, 0x027e, 0x2009, 0x0000, 0x2011, 0xfdff, 0x1078,
4450 + 0x5bf1, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x52c9, 0x2061, 0xa933,
4451 + 0x6000, 0xd08c, 0x00c0, 0x52c9, 0x6008, 0x8000, 0x0048, 0x52cd,
4452 + 0x600a, 0x0c7f, 0x127f, 0x0078, 0x5453, 0x0c7f, 0x127f, 0x0078,
4453 + 0x544b, 0x6954, 0xa186, 0x0045, 0x0040, 0x5306, 0xa186, 0x002a,
4454 + 0x00c0, 0x52e1, 0x2001, 0xa60c, 0x200c, 0xc194, 0x2102, 0x0078,
4455 + 0x52ba, 0xa186, 0x0020, 0x0040, 0x52fa, 0xa186, 0x0029, 0x0040,
4456 + 0x52ed, 0xa186, 0x002d, 0x00c0, 0x52cd, 0x6944, 0xa18c, 0xff00,
4457 + 0x810f, 0x1078, 0x45c4, 0x00c0, 0x52ba, 0x6000, 0xc0e4, 0x6002,
4458 + 0x0078, 0x52ba, 0x685c, 0xa065, 0x0040, 0x52cd, 0x6007, 0x0024,
4459 + 0x2001, 0xa8a3, 0x2004, 0x6016, 0x0078, 0x52ba, 0x685c, 0xa065,
4460 + 0x0040, 0x52cd, 0x0e7e, 0x6860, 0xa075, 0x2001, 0xa62f, 0x2004,
4461 + 0xa005, 0x0040, 0x531e, 0x1078, 0x8ec6, 0x8eff, 0x0040, 0x531b,
4462 + 0x2e60, 0x1078, 0x8ec6, 0x0e7f, 0x0078, 0x52ba, 0x6024, 0xc0dc,
4463 + 0xc0d5, 0x6026, 0x2e60, 0x6007, 0x003a, 0x6870, 0xa005, 0x0040,
4464 + 0x532f, 0x6007, 0x003b, 0x6874, 0x602a, 0x6878, 0x6012, 0x6003,
4465 + 0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0e7f, 0x0078, 0x52ba,
4466 + 0x2061, 0xa933, 0x6000, 0xd084, 0x0040, 0x5352, 0xd08c, 0x00c0,
4467 + 0x5461, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048, 0x534c, 0x6206,
4468 + 0x2091, 0x8001, 0x0078, 0x5461, 0x2091, 0x8001, 0x6853, 0x0016,
4469 + 0x0078, 0x545a, 0x6853, 0x0007, 0x0078, 0x545a, 0x6834, 0x8007,
4470 + 0xa084, 0x00ff, 0x00c0, 0x5360, 0x1078, 0x502d, 0x0078, 0x5372,
4471 + 0x2030, 0x8001, 0x00c0, 0x536a, 0x7007, 0x0001, 0x1078, 0x5373,
4472 + 0x0078, 0x5372, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a,
4473 + 0x704b, 0x5373, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, 0xa03e,
4474 + 0x2009, 0xa62f, 0x210c, 0x81ff, 0x00c0, 0x53ff, 0x2009, 0xa60c,
4475 + 0x210c, 0xd194, 0x00c0, 0x5431, 0x6848, 0x2070, 0xae82, 0xad00,
4476 + 0x0048, 0x53ef, 0x2001, 0xa616, 0x2004, 0xae02, 0x00c8, 0x53ef,
4477 + 0x2061, 0xa933, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001, 0x00c0,
4478 + 0x53d2, 0x711c, 0xa186, 0x0006, 0x00c0, 0x53da, 0x7018, 0xa005,
4479 + 0x0040, 0x53ff, 0x2004, 0xd0e4, 0x00c0, 0x542b, 0x7024, 0xd0dc,
4480 + 0x00c0, 0x5435, 0x6853, 0x0000, 0x6803, 0x0000, 0x2d08, 0x7010,
4481 + 0xa005, 0x00c0, 0x53be, 0x7112, 0x684c, 0xd0f4, 0x00c0, 0x5439,
4482 + 0x2e60, 0x1078, 0x5b27, 0x127f, 0x0e7f, 0x007c, 0x2068, 0x6800,
4483 + 0xa005, 0x00c0, 0x53be, 0x6902, 0x2168, 0x684c, 0xd0f4, 0x00c0,
4484 + 0x5439, 0x127f, 0x0e7f, 0x007c, 0x127f, 0x0e7f, 0x6853, 0x0006,
4485 + 0x0078, 0x545a, 0xd184, 0x0040, 0x53cc, 0xd1c4, 0x00c0, 0x53f3,
4486 + 0x0078, 0x53f7, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078, 0x45c4,
4487 + 0x00c0, 0x542b, 0x6000, 0xd0e4, 0x00c0, 0x542b, 0x711c, 0xa186,
4488 + 0x0007, 0x00c0, 0x53ef, 0x6853, 0x0002, 0x0078, 0x542d, 0x6853,
4489 + 0x0008, 0x0078, 0x542d, 0x6853, 0x000e, 0x0078, 0x542d, 0x6853,
4490 + 0x0017, 0x0078, 0x542d, 0x6853, 0x0035, 0x0078, 0x542d, 0x2001,
4491 + 0xa672, 0x2004, 0xd0fc, 0x0040, 0x5427, 0x6848, 0x2070, 0xae82,
4492 + 0xad00, 0x0048, 0x5427, 0x6058, 0xae02, 0x00c8, 0x5427, 0x711c,
4493 + 0xa186, 0x0006, 0x00c0, 0x5427, 0x7018, 0xa005, 0x0040, 0x5427,
4494 + 0x2004, 0xd0bc, 0x0040, 0x5427, 0x2039, 0x0001, 0x7000, 0xa086,
4495 + 0x0007, 0x00c0, 0x537e, 0x7003, 0x0002, 0x0078, 0x537e, 0x6853,
4496 + 0x0028, 0x0078, 0x542d, 0x6853, 0x0029, 0x127f, 0x0e7f, 0x0078,
4497 + 0x545a, 0x6853, 0x002a, 0x0078, 0x542d, 0x6853, 0x0045, 0x0078,
4498 + 0x542d, 0x2e60, 0x2019, 0x0002, 0x6017, 0x0014, 0x1078, 0x9dc7,
4499 + 0x127f, 0x0e7f, 0x007c, 0x2009, 0x003e, 0x0078, 0x5455, 0x2009,
4500 + 0x0004, 0x0078, 0x5455, 0x2009, 0x0006, 0x0078, 0x5455, 0x2009,
4501 + 0x0016, 0x0078, 0x5455, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00,
4502 + 0xa105, 0x6856, 0x2091, 0x8000, 0x1078, 0x4a73, 0x2091, 0x8001,
4503 + 0x007c, 0x1078, 0x13a4, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102,
4504 + 0x0048, 0x5471, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0078,
4505 + 0x547d, 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, 0x547d, 0x7074,
4506 + 0xa081, 0x0000, 0x7076, 0xa085, 0x0001, 0x7932, 0x7132, 0x007c,
4507 + 0x0d7e, 0x1078, 0x5b1e, 0x0d7f, 0x007c, 0x0d7e, 0x2011, 0x0004,
4508 + 0x2204, 0xa085, 0x8002, 0x2012, 0x0d7f, 0x007c, 0x20e1, 0x0002,
4509 + 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0040, 0x549c,
4510 + 0xa086, 0x1000, 0x00c0, 0x54d3, 0x20e1, 0x0000, 0x3d00, 0xa094,
4511 + 0xff00, 0x8217, 0xa084, 0xf000, 0xa086, 0x3000, 0x00c0, 0x54b7,
4512 + 0xa184, 0xff00, 0x8007, 0xa086, 0x0008, 0x00c0, 0x54d3, 0x1078,
4513 + 0x29bb, 0x00c0, 0x54d3, 0x1078, 0x56b2, 0x0078, 0x54ce, 0x20e1,
4514 + 0x0004, 0x3d60, 0xd1bc, 0x00c0, 0x54be, 0x3e60, 0xac84, 0x000f,
4515 + 0x00c0, 0x54d3, 0xac82, 0xad00, 0x0048, 0x54d3, 0x6858, 0xac02,
4516 + 0x00c8, 0x54d3, 0x2009, 0x0047, 0x1078, 0x775c, 0x7a1c, 0xd284,
4517 + 0x00c0, 0x548e, 0x007c, 0xa016, 0x1078, 0x15fa, 0x0078, 0x54ce,
4518 + 0x0078, 0x54d3, 0x781c, 0xd08c, 0x0040, 0x5502, 0x157e, 0x137e,
4519 + 0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0076, 0x00c0,
4520 + 0x5518, 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0, 0x5507, 0x1078,
4521 + 0x554e, 0x0040, 0x5518, 0x20e1, 0x3000, 0x7828, 0x7828, 0x1078,
4522 + 0x556c, 0x147f, 0x137f, 0x157f, 0x2009, 0xa8b9, 0x2104, 0xa005,
4523 + 0x00c0, 0x5503, 0x007c, 0x1078, 0x62d1, 0x0078, 0x5502, 0xa484,
4524 + 0x7000, 0x00c0, 0x5518, 0x1078, 0x554e, 0x0040, 0x552c, 0x7000,
4525 + 0xa084, 0xff00, 0xa086, 0x8100, 0x0040, 0x54f3, 0x0078, 0x552c,
4526 + 0x1078, 0xa54f, 0xd5a4, 0x0040, 0x5528, 0x047e, 0x1078, 0x1b22,
4527 + 0x047f, 0x20e1, 0x9010, 0x2001, 0x0138, 0x2202, 0x0078, 0x5530,
4528 + 0x1078, 0x554e, 0x6883, 0x0000, 0x20e1, 0x3000, 0x7828, 0x7828,
4529 + 0x1078, 0x5537, 0x147f, 0x137f, 0x157f, 0x0078, 0x5502, 0x2001,
4530 + 0xa60e, 0x2004, 0xd08c, 0x0040, 0x554d, 0x2001, 0xa600, 0x2004,
4531 + 0xa086, 0x0003, 0x00c0, 0x554d, 0x027e, 0x037e, 0x2011, 0x8048,
4532 + 0x2518, 0x1078, 0x361b, 0x037f, 0x027f, 0x007c, 0xa484, 0x01ff,
4533 + 0x6882, 0xa005, 0x0040, 0x5560, 0xa080, 0x001f, 0xa084, 0x03f8,
4534 + 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x007c,
4535 + 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5,
4536 + 0xa085, 0x0001, 0x0078, 0x555f, 0x7000, 0xa084, 0xff00, 0xa08c,
4537 + 0xf000, 0x8007, 0xa196, 0x0000, 0x00c0, 0x5579, 0x0078, 0x57ba,
4538 + 0x007c, 0xa196, 0x2000, 0x00c0, 0x558a, 0x6900, 0xa18e, 0x0001,
4539 + 0x00c0, 0x5586, 0x1078, 0x3aec, 0x0078, 0x5578, 0x1078, 0x5592,
4540 + 0x0078, 0x5578, 0xa196, 0x8000, 0x00c0, 0x5578, 0x1078, 0x5871,
4541 + 0x0078, 0x5578, 0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196,
4542 + 0x0001, 0x0040, 0x559f, 0xa196, 0x0023, 0x00c0, 0x56aa, 0xa08e,
4543 + 0x0023, 0x00c0, 0x55d4, 0x1078, 0x591d, 0x0040, 0x56aa, 0x7124,
4544 + 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x55b8, 0x7034, 0xa005,
4545 + 0x00c0, 0x56aa, 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x56aa,
4546 + 0xa08e, 0x0214, 0x0040, 0x55c0, 0xa08e, 0x0210, 0x00c0, 0x55c6,
4547 + 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x56aa, 0xa08e, 0x0100,
4548 + 0x00c0, 0x56aa, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x0016,
4549 + 0x1078, 0x775c, 0x0078, 0x56aa, 0xa08e, 0x0022, 0x00c0, 0x56aa,
4550 + 0x7030, 0xa08e, 0x0300, 0x00c0, 0x55e5, 0x7034, 0xa005, 0x00c0,
4551 + 0x56aa, 0x2009, 0x0017, 0x0078, 0x5676, 0xa08e, 0x0500, 0x00c0,
4552 + 0x55f1, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x0018, 0x0078,
4553 + 0x5676, 0xa08e, 0x2010, 0x00c0, 0x55f9, 0x2009, 0x0019, 0x0078,
4554 + 0x5676, 0xa08e, 0x2110, 0x00c0, 0x5601, 0x2009, 0x001a, 0x0078,
4555 + 0x5676, 0xa08e, 0x5200, 0x00c0, 0x560d, 0x7034, 0xa005, 0x00c0,
4556 + 0x56aa, 0x2009, 0x001b, 0x0078, 0x5676, 0xa08e, 0x5000, 0x00c0,
4557 + 0x5619, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x001c, 0x0078,
4558 + 0x5676, 0xa08e, 0x1300, 0x00c0, 0x5621, 0x2009, 0x0034, 0x0078,
4559 + 0x5676, 0xa08e, 0x1200, 0x00c0, 0x562d, 0x7034, 0xa005, 0x00c0,
4560 + 0x56aa, 0x2009, 0x0024, 0x0078, 0x5676, 0xa08c, 0xff00, 0xa18e,
4561 + 0x2400, 0x00c0, 0x5637, 0x2009, 0x002d, 0x0078, 0x5676, 0xa08c,
4562 + 0xff00, 0xa18e, 0x5300, 0x00c0, 0x5641, 0x2009, 0x002a, 0x0078,
4563 + 0x5676, 0xa08e, 0x0f00, 0x00c0, 0x5649, 0x2009, 0x0020, 0x0078,
4564 + 0x5676, 0xa08e, 0x5300, 0x00c0, 0x564f, 0x0078, 0x566c, 0xa08e,
4565 + 0x6104, 0x00c0, 0x566c, 0x2011, 0xab8d, 0x8208, 0x2204, 0xa082,
4566 + 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, 0x211c, 0x8108,
4567 + 0x047e, 0x2124, 0x1078, 0x361b, 0x047f, 0x8108, 0x00f0, 0x565c,
4568 + 0x2009, 0x0023, 0x0078, 0x5676, 0xa08e, 0x6000, 0x00c0, 0x5674,
4569 + 0x2009, 0x003f, 0x0078, 0x5676, 0x2009, 0x001d, 0x017e, 0x2011,
4570 + 0xab83, 0x2204, 0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x56ac,
4571 + 0x1078, 0x455c, 0x00c0, 0x56ac, 0x6612, 0x6516, 0x86ff, 0x0040,
4572 + 0x569c, 0x017f, 0x017e, 0xa186, 0x0017, 0x00c0, 0x569c, 0x686c,
4573 + 0xa606, 0x00c0, 0x569c, 0x6870, 0xa506, 0xa084, 0xff00, 0x00c0,
4574 + 0x569c, 0x6000, 0xc0f5, 0x6002, 0x0c7e, 0x1078, 0x76c7, 0x0040,
4575 + 0x56af, 0x017f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0x017f,
4576 + 0x1078, 0x775c, 0x0c7f, 0x007c, 0x017f, 0x0078, 0x56aa, 0x0c7f,
4577 + 0x0078, 0x56ac, 0x0c7e, 0x1078, 0x570f, 0x00c0, 0x570d, 0xa28e,
4578 + 0x0033, 0x00c0, 0x56de, 0x1078, 0x591d, 0x0040, 0x570d, 0x7124,
4579 + 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x56d0, 0x7034, 0xa005,
4580 + 0x00c0, 0x570d, 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x570d,
4581 + 0xa08e, 0x0100, 0x00c0, 0x570d, 0x7034, 0xa005, 0x00c0, 0x570d,
4582 + 0x2009, 0x0016, 0x1078, 0x775c, 0x0078, 0x570d, 0xa28e, 0x0032,
4583 + 0x00c0, 0x570d, 0x7030, 0xa08e, 0x1400, 0x00c0, 0x570d, 0x2009,
4584 + 0x0038, 0x017e, 0x2011, 0xab83, 0x2204, 0x8211, 0x220c, 0x1078,
4585 + 0x254d, 0x00c0, 0x570c, 0x1078, 0x455c, 0x00c0, 0x570c, 0x6612,
4586 + 0x6516, 0x0c7e, 0x1078, 0x76c7, 0x0040, 0x570b, 0x017f, 0x611a,
4587 + 0x601f, 0x0004, 0x7120, 0x610a, 0x017f, 0x1078, 0x775c, 0x1078,
4588 + 0x62d1, 0x0078, 0x570d, 0x0c7f, 0x017f, 0x0c7f, 0x007c, 0x0f7e,
4589 + 0x0d7e, 0x027e, 0x017e, 0x137e, 0x147e, 0x157e, 0x3c00, 0x007e,
4590 + 0x2079, 0x0030, 0x2069, 0x0200, 0x1078, 0x1c6a, 0x00c0, 0x5750,
4591 + 0x1078, 0x1b40, 0x0040, 0x575d, 0x7908, 0xa18c, 0x1fff, 0xa182,
4592 + 0x0011, 0x00c8, 0x575a, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0,
4593 + 0x2099, 0x020a, 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004,
4594 + 0x7a0c, 0x7808, 0xa080, 0x0007, 0xa084, 0x1ff8, 0xa08a, 0x0140,
4595 + 0x10c8, 0x1332, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, 0x53a5,
4596 + 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, 0x0070,
4597 + 0x007f, 0x20e0, 0x157f, 0x147f, 0x137f, 0x017f, 0x027f, 0x0d7f,
4598 + 0x0f7f, 0x007c, 0xa016, 0x1078, 0x15fa, 0xa085, 0x0001, 0x0078,
4599 + 0x5750, 0x047e, 0x0e7e, 0x0d7e, 0x2028, 0x2130, 0xa696, 0x00ff,
4600 + 0x00c0, 0x5782, 0xa596, 0xfffd, 0x00c0, 0x5772, 0x2009, 0x007f,
4601 + 0x0078, 0x57b5, 0xa596, 0xfffe, 0x00c0, 0x577a, 0x2009, 0x007e,
4602 + 0x0078, 0x57b5, 0xa596, 0xfffc, 0x00c0, 0x5782, 0x2009, 0x0080,
4603 + 0x0078, 0x57b5, 0x2011, 0x0000, 0x2021, 0x0081, 0x20a9, 0x007e,
4604 + 0x2071, 0xa7b6, 0x2e1c, 0x83ff, 0x00c0, 0x5794, 0x82ff, 0x00c0,
4605 + 0x57a9, 0x2410, 0x0078, 0x57a9, 0x2368, 0x6f10, 0x007e, 0x2100,
4606 + 0xa706, 0x007f, 0x6b14, 0x00c0, 0x57a3, 0xa346, 0x00c0, 0x57a3,
4607 + 0x2408, 0x0078, 0x57b5, 0x87ff, 0x00c0, 0x57a9, 0x83ff, 0x0040,
4608 + 0x578e, 0x8420, 0x8e70, 0x00f0, 0x578a, 0x82ff, 0x00c0, 0x57b4,
4609 + 0xa085, 0x0001, 0x0078, 0x57b6, 0x2208, 0xa006, 0x0d7f, 0x0e7f,
4610 + 0x047f, 0x007c, 0xa084, 0x0007, 0x0079, 0x57bf, 0x007c, 0x57c7,
4611 + 0x57c7, 0x57c7, 0x5933, 0x57c7, 0x57c8, 0x57e1, 0x5858, 0x007c,
4612 + 0x7110, 0xd1bc, 0x0040, 0x57e0, 0x7120, 0x2160, 0xac8c, 0x000f,
4613 + 0x00c0, 0x57e0, 0xac8a, 0xad00, 0x0048, 0x57e0, 0x6858, 0xac02,
4614 + 0x00c8, 0x57e0, 0x7124, 0x610a, 0x2009, 0x0046, 0x1078, 0x775c,
4615 + 0x007c, 0x0c7e, 0xa484, 0x01ff, 0x0040, 0x5833, 0x7110, 0xd1bc,
4616 + 0x00c0, 0x5833, 0x2011, 0xab83, 0x2204, 0x8211, 0x220c, 0x1078,
4617 + 0x254d, 0x00c0, 0x5833, 0x1078, 0x455c, 0x00c0, 0x5833, 0x6612,
4618 + 0x6516, 0x6000, 0xd0ec, 0x00c0, 0x5833, 0x6204, 0xa294, 0xff00,
4619 + 0x8217, 0xa286, 0x0006, 0x00c0, 0x5818, 0x0c7e, 0x1078, 0x76c7,
4620 + 0x017f, 0x0040, 0x5835, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a,
4621 + 0x7130, 0x6122, 0x2009, 0x0044, 0x1078, 0x775c, 0x0078, 0x5833,
4622 + 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x5833, 0x611a, 0x601f,
4623 + 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x582b, 0x6007,
4624 + 0x0005, 0x0078, 0x582d, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078,
4625 + 0x5dd7, 0x1078, 0x62d1, 0x0c7f, 0x007c, 0x2001, 0xa60d, 0x2004,
4626 + 0xd0ec, 0x0040, 0x583f, 0x2011, 0x8049, 0x1078, 0x361b, 0x0c7e,
4627 + 0x1078, 0x9187, 0x017f, 0x0040, 0x5833, 0x611a, 0x601f, 0x0006,
4628 + 0x7120, 0x610a, 0x7130, 0x6122, 0x6013, 0x0300, 0x6003, 0x0001,
4629 + 0x6007, 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x5833,
4630 + 0x7110, 0xd1bc, 0x0040, 0x5870, 0x7020, 0x2060, 0xac84, 0x000f,
4631 + 0x00c0, 0x5870, 0xac82, 0xad00, 0x0048, 0x5870, 0x6858, 0xac02,
4632 + 0x00c8, 0x5870, 0x7124, 0x610a, 0x2009, 0x0045, 0x1078, 0x775c,
4633 + 0x007c, 0x007e, 0x1078, 0x29bb, 0x007f, 0x00c0, 0x5887, 0x7110,
4634 + 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x00c0, 0x5887, 0xa084,
4635 + 0x000f, 0xa08a, 0x0006, 0x00c8, 0x5887, 0x1079, 0x5888, 0x007c,
4636 + 0x588e, 0x588f, 0x588e, 0x588e, 0x58ff, 0x590e, 0x007c, 0x7110,
4637 + 0xd1bc, 0x0040, 0x5897, 0x702c, 0xd084, 0x0040, 0x58fe, 0x700c,
4638 + 0x7108, 0x1078, 0x254d, 0x00c0, 0x58fe, 0x1078, 0x455c, 0x00c0,
4639 + 0x58fe, 0x6612, 0x6516, 0x6204, 0x7110, 0xd1bc, 0x0040, 0x58c9,
4640 + 0xa28c, 0x00ff, 0xa186, 0x0004, 0x0040, 0x58b2, 0xa186, 0x0006,
4641 + 0x00c0, 0x58ef, 0x0c7e, 0x1078, 0x591d, 0x0c7f, 0x0040, 0x58fe,
4642 + 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f,
4643 + 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x1078, 0x775c, 0x0078,
4644 + 0x58fe, 0xa28c, 0x00ff, 0xa186, 0x0006, 0x0040, 0x58de, 0xa186,
4645 + 0x0004, 0x0040, 0x58de, 0xa294, 0xff00, 0x8217, 0xa286, 0x0004,
4646 + 0x0040, 0x58de, 0xa286, 0x0006, 0x00c0, 0x58ef, 0x0c7e, 0x1078,
4647 + 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f, 0x0005, 0x7120,
4648 + 0x610a, 0x2009, 0x0088, 0x1078, 0x775c, 0x0078, 0x58fe, 0x0c7e,
4649 + 0x1078, 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f, 0x0004,
4650 + 0x7120, 0x610a, 0x2009, 0x0001, 0x1078, 0x775c, 0x007c, 0x7110,
4651 + 0xd1bc, 0x0040, 0x590d, 0x1078, 0x591d, 0x0040, 0x590d, 0x7124,
4652 + 0x610a, 0x2009, 0x0089, 0x1078, 0x775c, 0x007c, 0x7110, 0xd1bc,
4653 + 0x0040, 0x591c, 0x1078, 0x591d, 0x0040, 0x591c, 0x7124, 0x610a,
4654 + 0x2009, 0x008a, 0x1078, 0x775c, 0x007c, 0x7020, 0x2060, 0xac84,
4655 + 0x000f, 0x00c0, 0x5930, 0xac82, 0xad00, 0x0048, 0x5930, 0x2001,
4656 + 0xa616, 0x2004, 0xac02, 0x00c8, 0x5930, 0xa085, 0x0001, 0x007c,
4657 + 0xa006, 0x0078, 0x592f, 0x7110, 0xd1bc, 0x00c0, 0x5949, 0x7024,
4658 + 0x2060, 0xac84, 0x000f, 0x00c0, 0x5949, 0xac82, 0xad00, 0x0048,
4659 + 0x5949, 0x6858, 0xac02, 0x00c8, 0x5949, 0x2009, 0x0051, 0x1078,
4660 + 0x775c, 0x007c, 0x2071, 0xa8c4, 0x7003, 0x0003, 0x700f, 0x0361,
4661 + 0xa006, 0x701a, 0x7012, 0x7017, 0xad00, 0x7007, 0x0000, 0x7026,
4662 + 0x702b, 0x6e1c, 0x7032, 0x7037, 0x6e70, 0x703b, 0x0002, 0x703f,
4663 + 0x0000, 0x7043, 0xffff, 0x7047, 0xffff, 0x007c, 0x2071, 0xa8c4,
4664 + 0x00e0, 0x5a32, 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x00c0,
4665 + 0x59de, 0x700f, 0x0361, 0x7007, 0x0001, 0x127e, 0x2091, 0x8000,
4666 + 0x7138, 0x8109, 0x713a, 0x00c0, 0x59dc, 0x703b, 0x0002, 0x2009,
4667 + 0x0100, 0x2104, 0xa082, 0x0003, 0x00c8, 0x59dc, 0x703c, 0xa086,
4668 + 0x0001, 0x00c0, 0x59b9, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084,
4669 + 0x4000, 0x0040, 0x5997, 0x6803, 0x1000, 0x0078, 0x599e, 0x6804,
4670 + 0xa084, 0x1000, 0x0040, 0x599e, 0x6803, 0x0100, 0x6803, 0x0000,
4671 + 0x703f, 0x0000, 0x2069, 0xa8b1, 0x6804, 0xa082, 0x0006, 0x00c0,
4672 + 0x59ab, 0x6807, 0x0000, 0x6830, 0xa082, 0x0003, 0x00c0, 0x59b2,
4673 + 0x6833, 0x0000, 0x1078, 0x62d1, 0x1078, 0x639b, 0x0d7f, 0x0078,
4674 + 0x59dc, 0x0d7e, 0x2069, 0xa600, 0x6948, 0x6864, 0xa102, 0x00c8,
4675 + 0x59db, 0x2069, 0xa8b1, 0x6804, 0xa086, 0x0000, 0x00c0, 0x59db,
4676 + 0x6830, 0xa086, 0x0000, 0x00c0, 0x59db, 0x703f, 0x0001, 0x6807,
4677 + 0x0006, 0x6833, 0x0003, 0x2069, 0x0100, 0x6830, 0x689e, 0x2069,
4678 + 0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078, 0x59e1, 0x127e, 0x2091,
4679 + 0x8000, 0x7024, 0xa00d, 0x0040, 0x59f9, 0x7020, 0x8001, 0x7022,
4680 + 0x00c0, 0x59f9, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8,
4681 + 0x00c0, 0x59f4, 0x7028, 0x107a, 0x81ff, 0x00c0, 0x59f9, 0x7028,
4682 + 0x107a, 0x7030, 0xa00d, 0x0040, 0x5a10, 0x702c, 0x8001, 0x702e,
4683 + 0x00c0, 0x5a10, 0x702f, 0x0009, 0x8109, 0x7132, 0x0040, 0x5a0e,
4684 + 0xa184, 0x007f, 0x1040, 0x6ea2, 0x0078, 0x5a10, 0x7034, 0x107a,
4685 + 0x7040, 0xa005, 0x0040, 0x5a18, 0x0050, 0x5a18, 0x8001, 0x7042,
4686 + 0x7044, 0xa005, 0x0040, 0x5a20, 0x0050, 0x5a20, 0x8001, 0x7046,
4687 + 0x7018, 0xa00d, 0x0040, 0x5a31, 0x7008, 0x8001, 0x700a, 0x00c0,
4688 + 0x5a31, 0x700b, 0x0009, 0x8109, 0x711a, 0x00c0, 0x5a31, 0x701c,
4689 + 0x107a, 0x127f, 0x7004, 0x0079, 0x5a35, 0x5a5c, 0x5a5d, 0x5a79,
4690 + 0x0e7e, 0x2071, 0xa8c4, 0x7018, 0xa005, 0x00c0, 0x5a43, 0x711a,
4691 + 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071,
4692 + 0xa8c4, 0x701c, 0xa206, 0x00c0, 0x5a4f, 0x701a, 0x701e, 0x007f,
4693 + 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa8c4, 0x6088, 0xa102, 0x0048,
4694 + 0x5a5a, 0x618a, 0x0e7f, 0x007c, 0x007c, 0x7110, 0x1078, 0x45c4,
4695 + 0x00c0, 0x5a6f, 0x6088, 0x8001, 0x0048, 0x5a6f, 0x608a, 0x00c0,
4696 + 0x5a6f, 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x8108,
4697 + 0xa182, 0x00ff, 0x0048, 0x5a77, 0xa00e, 0x7007, 0x0002, 0x7112,
4698 + 0x007c, 0x7014, 0x2060, 0x127e, 0x2091, 0x8000, 0x603c, 0xa005,
4699 + 0x0040, 0x5a88, 0x8001, 0x603e, 0x00c0, 0x5a88, 0x1078, 0x8f9c,
4700 + 0x6014, 0xa005, 0x0040, 0x5ab2, 0x8001, 0x6016, 0x00c0, 0x5ab2,
4701 + 0x611c, 0xa186, 0x0003, 0x0040, 0x5a99, 0xa186, 0x0006, 0x00c0,
4702 + 0x5ab0, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0048, 0x5ab0,
4703 + 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048, 0x5aa9, 0x2001,
4704 + 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x0078, 0x5ab2,
4705 + 0x1078, 0x8abe, 0x127f, 0xac88, 0x0010, 0x7116, 0x2001, 0xcd00,
4706 + 0xa102, 0x0048, 0x5abf, 0x7017, 0xad00, 0x7007, 0x0000, 0x007c,
4707 + 0x0e7e, 0x2071, 0xa8c4, 0x7027, 0x07d0, 0x7023, 0x0009, 0x703b,
4708 + 0x0002, 0x0e7f, 0x007c, 0x2001, 0xa8cd, 0x2003, 0x0000, 0x007c,
4709 + 0x0e7e, 0x2071, 0xa8c4, 0x7132, 0x702f, 0x0009, 0x0e7f, 0x007c,
4710 + 0x2011, 0xa8d0, 0x2013, 0x0000, 0x007c, 0x0e7e, 0x2071, 0xa8c4,
4711 + 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x027e, 0x0e7e,
4712 + 0x0f7e, 0x2079, 0xa600, 0x7a34, 0xd294, 0x0040, 0x5b15, 0x2071,
4713 + 0xa8ac, 0x2e14, 0xa0fe, 0x0000, 0x0040, 0x5b02, 0xa0fe, 0x0001,
4714 + 0x0040, 0x5b06, 0xa0fe, 0x0002, 0x00c0, 0x5b11, 0xa292, 0x0085,
4715 + 0x0078, 0x5b08, 0xa292, 0x0005, 0x0078, 0x5b08, 0xa292, 0x0002,
4716 + 0x2272, 0x0040, 0x5b0d, 0x00c8, 0x5b15, 0x2011, 0x8037, 0x1078,
4717 + 0x361b, 0x2011, 0xa8ab, 0x2204, 0x2072, 0x0f7f, 0x0e7f, 0x027f,
4718 + 0x007c, 0x0c7e, 0x2061, 0xa933, 0x0c7f, 0x007c, 0xa184, 0x000f,
4719 + 0x8003, 0x8003, 0x8003, 0xa080, 0xa933, 0x2060, 0x007c, 0x6854,
4720 + 0xa08a, 0x199a, 0x0048, 0x5b2e, 0x2001, 0x1999, 0xa005, 0x00c0,
4721 + 0x5b3d, 0x0c7e, 0x2061, 0xa933, 0x6014, 0x0c7f, 0xa005, 0x00c0,
4722 + 0x5b42, 0x2001, 0x001e, 0x0078, 0x5b42, 0xa08e, 0xffff, 0x00c0,
4723 + 0x5b42, 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c,
4724 + 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x5b9e, 0xd0b4, 0x00c0,
4725 + 0x5b59, 0xd0bc, 0x00c0, 0x5b8b, 0x2009, 0x0006, 0x1078, 0x5bc3,
4726 + 0x007c, 0xd0fc, 0x0040, 0x5b64, 0xa084, 0x0003, 0x0040, 0x5b64,
4727 + 0xa086, 0x0003, 0x00c0, 0x5bbc, 0x6024, 0xd0d4, 0x0040, 0x5b6e,
4728 + 0xc0d4, 0x6026, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, 0xa674,
4729 + 0x2104, 0xd084, 0x0040, 0x5b83, 0x6118, 0xa188, 0x0027, 0x2104,
4730 + 0xd08c, 0x00c0, 0x5b83, 0x87ff, 0x00c0, 0x5b82, 0x2009, 0x0042,
4731 + 0x1078, 0x775c, 0x007c, 0x87ff, 0x00c0, 0x5b8a, 0x2009, 0x0043,
4732 + 0x1078, 0x775c, 0x007c, 0xd0fc, 0x0040, 0x5b96, 0xa084, 0x0003,
4733 + 0x0040, 0x5b96, 0xa086, 0x0003, 0x00c0, 0x5bbc, 0x87ff, 0x00c0,
4734 + 0x5b9d, 0x2009, 0x0042, 0x1078, 0x775c, 0x007c, 0xd0fc, 0x0040,
4735 + 0x5baf, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0040, 0x5bb3, 0x87ff,
4736 + 0x00c0, 0x5bae, 0x2009, 0x0041, 0x1078, 0x775c, 0x007c, 0x1078,
4737 + 0x5bc1, 0x0078, 0x5bae, 0x87ff, 0x00c0, 0x5bae, 0x2009, 0x0043,
4738 + 0x1078, 0x775c, 0x0078, 0x5bae, 0x2009, 0x0004, 0x1078, 0x5bc3,
4739 + 0x007c, 0x2009, 0x0001, 0x0d7e, 0x6010, 0xa0ec, 0xf000, 0x0040,
4740 + 0x5bef, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0,
4741 + 0x5be5, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x00c0, 0x5be5,
4742 + 0x0c7e, 0x2061, 0xa933, 0x6200, 0xd28c, 0x00c0, 0x5be4, 0x6204,
4743 + 0x8210, 0x0048, 0x5be4, 0x6206, 0x0c7f, 0x1078, 0x4a73, 0x6010,
4744 + 0xa06d, 0x077e, 0x2039, 0x0000, 0x10c0, 0x5b27, 0x077f, 0x0d7f,
4745 + 0x007c, 0x157e, 0x0c7e, 0x2061, 0xa933, 0x6000, 0x81ff, 0x0040,
4746 + 0x5bfc, 0xa205, 0x0078, 0x5bfd, 0xa204, 0x6002, 0x0c7f, 0x157f,
4747 + 0x007c, 0x6800, 0xd08c, 0x00c0, 0x5c0d, 0x6808, 0xa005, 0x0040,
4748 + 0x5c0d, 0x8001, 0x680a, 0xa085, 0x0001, 0x007c, 0x20a9, 0x0010,
4749 + 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x5c17, 0xa200, 0x00f0,
4750 + 0x5c12, 0x8086, 0x818e, 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005,
4751 + 0x0040, 0x5c3d, 0xa11a, 0x00c8, 0x5c3d, 0x8213, 0x818d, 0x0048,
4752 + 0x5c30, 0xa11a, 0x00c8, 0x5c31, 0x00f0, 0x5c25, 0x0078, 0x5c35,
4753 + 0xa11a, 0x2308, 0x8210, 0x00f0, 0x5c25, 0x007e, 0x3200, 0xa084,
4754 + 0xf7ff, 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085,
4755 + 0x0800, 0x0078, 0x5c39, 0x127e, 0x2091, 0x2200, 0x2079, 0xa8b1,
4756 + 0x127f, 0x0d7e, 0x2069, 0xa8b1, 0x6803, 0x0005, 0x2069, 0x0004,
4757 + 0x2d04, 0xa085, 0x8001, 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027,
4758 + 0x0001, 0x7804, 0xa084, 0x0007, 0x0079, 0x5c5e, 0x5c68, 0x5c8d,
4759 + 0x5ce8, 0x5c6e, 0x5c8d, 0x5c68, 0x5c66, 0x5c66, 0x1078, 0x1332,
4760 + 0x1078, 0x5acb, 0x1078, 0x62d1, 0x0c7f, 0x007c, 0x62c0, 0x82ff,
4761 + 0x00c0, 0x5c74, 0x0c7f, 0x007c, 0x2011, 0x41dc, 0x1078, 0x5a45,
4762 + 0x7828, 0xa092, 0x00c8, 0x00c8, 0x5c83, 0x8000, 0x782a, 0x1078,
4763 + 0x421b, 0x0078, 0x5c72, 0x1078, 0x41dc, 0x7807, 0x0003, 0x7827,
4764 + 0x0000, 0x782b, 0x0000, 0x0078, 0x5c72, 0x1078, 0x5acb, 0x3c00,
4765 + 0x007e, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x007f, 0x20e0,
4766 + 0x82ff, 0x0040, 0x5cab, 0x62c0, 0x82ff, 0x00c0, 0x5cab, 0x782b,
4767 + 0x0000, 0x7824, 0xa065, 0x1040, 0x1332, 0x2009, 0x0013, 0x1078,
4768 + 0x775c, 0x0c7f, 0x007c, 0x3900, 0xa082, 0xa9e3, 0x00c8, 0x5cb2,
4769 + 0x1078, 0x747a, 0x0c7e, 0x7824, 0xa065, 0x1040, 0x1332, 0x7804,
4770 + 0xa086, 0x0004, 0x0040, 0x5d2d, 0x7828, 0xa092, 0x2710, 0x00c8,
4771 + 0x5cc8, 0x8000, 0x782a, 0x0c7f, 0x1078, 0x6e01, 0x0078, 0x5ca9,
4772 + 0x6104, 0xa186, 0x0003, 0x00c0, 0x5cdf, 0x0e7e, 0x2071, 0xa600,
4773 + 0x70d8, 0x0e7f, 0xd08c, 0x0040, 0x5cdf, 0x0c7e, 0x0e7e, 0x2061,
4774 + 0x0100, 0x2071, 0xa600, 0x1078, 0x4224, 0x0e7f, 0x0c7f, 0x1078,
4775 + 0xa5c4, 0x2009, 0x0014, 0x1078, 0x775c, 0x0c7f, 0x0078, 0x5ca9,
4776 + 0x2001, 0xa8cd, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x00c0, 0x5cfc,
4777 + 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x1332, 0x2009, 0x0013,
4778 + 0x1078, 0x77b3, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x3900, 0xa082,
4779 + 0xa9e3, 0x00c8, 0x5d05, 0x1078, 0x747a, 0x7824, 0xa005, 0x1040,
4780 + 0x1332, 0x781c, 0xa06d, 0x1040, 0x1332, 0x6800, 0xc0dc, 0x6802,
4781 + 0x7924, 0x2160, 0x1078, 0x772d, 0x693c, 0x81ff, 0x1040, 0x1332,
4782 + 0x8109, 0x693e, 0x6854, 0xa015, 0x0040, 0x5d21, 0x7a1e, 0x0078,
4783 + 0x5d23, 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x0d7f,
4784 + 0x0c7f, 0x1078, 0x62d1, 0x0078, 0x5cfa, 0x6104, 0xa186, 0x0002,
4785 + 0x0040, 0x5d38, 0xa186, 0x0004, 0x0040, 0x5d38, 0x0078, 0x5cbc,
4786 + 0x7808, 0xac06, 0x0040, 0x5cbc, 0x1078, 0x61cd, 0x1078, 0x5dd7,
4787 + 0x0c7f, 0x1078, 0x62d1, 0x0078, 0x5ca9, 0x0c7e, 0x6027, 0x0002,
4788 + 0x62c8, 0x82ff, 0x00c0, 0x5d61, 0x62c4, 0x82ff, 0x00c0, 0x5d61,
4789 + 0x793c, 0xa1e5, 0x0000, 0x0040, 0x5d5b, 0x2009, 0x0049, 0x1078,
4790 + 0x775c, 0x0c7f, 0x007c, 0x2011, 0xa8d0, 0x2013, 0x0000, 0x0078,
4791 + 0x5d59, 0x3908, 0xa192, 0xa9e3, 0x00c8, 0x5d68, 0x1078, 0x747a,
4792 + 0x6017, 0x0010, 0x793c, 0x81ff, 0x0040, 0x5d5b, 0x7944, 0xa192,
4793 + 0x7530, 0x00c8, 0x5d85, 0x8108, 0x7946, 0x793c, 0xa188, 0x0007,
4794 + 0x210c, 0xa18e, 0x0006, 0x00c0, 0x5d81, 0x6017, 0x0012, 0x0078,
4795 + 0x5d59, 0x6017, 0x0016, 0x0078, 0x5d59, 0x7848, 0xc085, 0x784a,
4796 + 0x0078, 0x5d59, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000,
4797 + 0x600f, 0x0000, 0x2c08, 0x2061, 0xa8b1, 0x6020, 0x8000, 0x6022,
4798 + 0x6010, 0xa005, 0x0040, 0x5da5, 0xa080, 0x0003, 0x2102, 0x6112,
4799 + 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x6116, 0x6112, 0x0078,
4800 + 0x5da0, 0x0d7e, 0x2069, 0xa8b1, 0x6000, 0xd0d4, 0x0040, 0x5dbe,
4801 + 0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x00c0, 0x5db9, 0x2c00,
4802 + 0x681e, 0x6804, 0xa084, 0x0007, 0x0079, 0x62d9, 0xc0d5, 0x6002,
4803 + 0x6818, 0xa005, 0x0040, 0x5dd0, 0x6056, 0x605b, 0x0000, 0x007e,
4804 + 0x2c00, 0x681a, 0x0d7f, 0x685a, 0x2069, 0xa8b1, 0x0078, 0x5db0,
4805 + 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078, 0x5db0, 0x007e,
4806 + 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08,
4807 + 0x2061, 0xa8b1, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0040,
4808 + 0x5df2, 0xa080, 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f,
4809 + 0x007f, 0x007c, 0x610e, 0x610a, 0x0078, 0x5ded, 0x0c7e, 0x600f,
4810 + 0x0000, 0x2c08, 0x2061, 0xa8b1, 0x6034, 0xa005, 0x0040, 0x5e06,
4811 + 0xa080, 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136,
4812 + 0x0078, 0x5e04, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x057e,
4813 + 0x037e, 0x027e, 0x017e, 0x007e, 0x127e, 0xa02e, 0x2071, 0xa8b1,
4814 + 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x5e8c,
4815 + 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x5e87, 0x87ff,
4816 + 0x0040, 0x5e2e, 0x6020, 0xa106, 0x00c0, 0x5e87, 0x703c, 0xac06,
4817 + 0x00c0, 0x5e44, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x7033,
4818 + 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b,
4819 + 0x0000, 0x037f, 0x2029, 0x0001, 0x7038, 0xac36, 0x00c0, 0x5e4a,
4820 + 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5e58, 0x2c00, 0xaf36,
4821 + 0x0040, 0x5e56, 0x2f00, 0x7036, 0x0078, 0x5e58, 0x7037, 0x0000,
4822 + 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5e61, 0x7e0e, 0x0078,
4823 + 0x5e62, 0x2678, 0x600f, 0x0000, 0x1078, 0x8d06, 0x0040, 0x5e82,
4824 + 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5e9d, 0x6837,
4825 + 0x0103, 0x6b4a, 0x6847, 0x0000, 0x017e, 0x037e, 0x077e, 0x1078,
4826 + 0x8f7d, 0x1078, 0xa4e2, 0x1078, 0x4a73, 0x077f, 0x037f, 0x017f,
4827 + 0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x5e1d, 0x2c78,
4828 + 0x600c, 0x2060, 0x0078, 0x5e1d, 0x85ff, 0x0040, 0x5e91, 0x1078,
4829 + 0x639b, 0x127f, 0x007f, 0x017f, 0x027f, 0x037f, 0x057f, 0x067f,
4830 + 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006,
4831 + 0x00c0, 0x5e6f, 0x017e, 0x037e, 0x077e, 0x1078, 0xa4e2, 0x1078,
4832 + 0xa1ca, 0x077f, 0x037f, 0x017f, 0x0078, 0x5e82, 0x007e, 0x067e,
4833 + 0x0c7e, 0x0d7e, 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091, 0x8000,
4834 + 0x2079, 0xa8b1, 0x7838, 0xa065, 0x0040, 0x5eef, 0x600c, 0x007e,
4835 + 0x600f, 0x0000, 0x783c, 0xac06, 0x00c0, 0x5ed6, 0x037e, 0x2019,
4836 + 0x0001, 0x1078, 0x7058, 0x7833, 0x0000, 0x783f, 0x0000, 0x7843,
4837 + 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, 0x037f, 0x1078, 0x8d06,
4838 + 0x0040, 0x5eea, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0,
4839 + 0x5ef8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73,
4840 + 0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x007f, 0x0078, 0x5ebb, 0x7e3a,
4841 + 0x7e36, 0x127f, 0x0f7f, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c,
4842 + 0x601c, 0xa086, 0x0006, 0x00c0, 0x5ee1, 0x1078, 0xa1ca, 0x0078,
4843 + 0x5eea, 0x017e, 0x027e, 0x087e, 0x2041, 0x0000, 0x1078, 0x5f1b,
4844 + 0x1078, 0x5fdb, 0x087f, 0x027f, 0x017f, 0x007c, 0x0f7e, 0x127e,
4845 + 0x2079, 0xa8b1, 0x2091, 0x8000, 0x1078, 0x6076, 0x1078, 0x60ec,
4846 + 0x127f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e,
4847 + 0x017e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x7614,
4848 + 0x2660, 0x2678, 0x8cff, 0x0040, 0x5fb5, 0x6018, 0xa080, 0x0028,
4849 + 0x2004, 0xa206, 0x00c0, 0x5fb0, 0x88ff, 0x0040, 0x5f3b, 0x6020,
4850 + 0xa106, 0x00c0, 0x5fb0, 0x7024, 0xac06, 0x00c0, 0x5f6b, 0x2069,
4851 + 0x0100, 0x68c0, 0xa005, 0x0040, 0x5f66, 0x1078, 0x5acb, 0x1078,
4852 + 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7027, 0x0000, 0x037e,
4853 + 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x5f5b, 0x6803,
4854 + 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040,
4855 + 0x5f63, 0x6827, 0x0001, 0x037f, 0x0078, 0x5f6b, 0x6003, 0x0009,
4856 + 0x630a, 0x0078, 0x5fb0, 0x7014, 0xac36, 0x00c0, 0x5f71, 0x660c,
4857 + 0x7616, 0x7010, 0xac36, 0x00c0, 0x5f7f, 0x2c00, 0xaf36, 0x0040,
4858 + 0x5f7d, 0x2f00, 0x7012, 0x0078, 0x5f7f, 0x7013, 0x0000, 0x660c,
4859 + 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5f88, 0x7e0e, 0x0078, 0x5f89,
4860 + 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
4861 + 0x5fa9, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5fbe, 0x6837, 0x0103,
4862 + 0x6b4a, 0x6847, 0x0000, 0x017e, 0x037e, 0x087e, 0x1078, 0x8f7d,
4863 + 0x1078, 0xa4e2, 0x1078, 0x4a73, 0x087f, 0x037f, 0x017f, 0x1078,
4864 + 0x8eb9, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x0c7f, 0x0078, 0x5f2a,
4865 + 0x2c78, 0x600c, 0x2060, 0x0078, 0x5f2a, 0x127f, 0x007f, 0x017f,
4866 + 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086,
4867 + 0x0006, 0x00c0, 0x5fcf, 0x017e, 0x037e, 0x087e, 0x1078, 0xa4e2,
4868 + 0x1078, 0xa1ca, 0x087f, 0x037f, 0x017f, 0x0078, 0x5fa9, 0x601c,
4869 + 0xa086, 0x0002, 0x00c0, 0x5fa9, 0x6004, 0xa086, 0x0085, 0x0040,
4870 + 0x5f96, 0x0078, 0x5fa9, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000,
4871 + 0xa280, 0xa735, 0x2004, 0xa065, 0x0040, 0x6072, 0x0f7e, 0x0e7e,
4872 + 0x0d7e, 0x067e, 0x2071, 0xa8b1, 0x6654, 0x7018, 0xac06, 0x00c0,
4873 + 0x5ff2, 0x761a, 0x701c, 0xac06, 0x00c0, 0x5ffe, 0x86ff, 0x00c0,
4874 + 0x5ffd, 0x7018, 0x701e, 0x0078, 0x5ffe, 0x761e, 0x6058, 0xa07d,
4875 + 0x0040, 0x6003, 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x6009, 0x2f00,
4876 + 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc,
4877 + 0x6002, 0x1078, 0x44d3, 0x0040, 0x606e, 0x7624, 0x86ff, 0x0040,
4878 + 0x605c, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x605c, 0x0d7e,
4879 + 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x6053, 0x1078, 0x5acb,
4880 + 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7027, 0x0000,
4881 + 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x603c,
4882 + 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
4883 + 0x0040, 0x6044, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c,
4884 + 0xa005, 0x0040, 0x604d, 0x8001, 0x603e, 0x2660, 0x1078, 0x8ec6,
4885 + 0x0c7f, 0x0078, 0x605c, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009,
4886 + 0x630a, 0x0c7f, 0x0078, 0x6011, 0x8dff, 0x0040, 0x606a, 0x6837,
4887 + 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x8f7d, 0x1078, 0xa4e2,
4888 + 0x1078, 0x4a73, 0x1078, 0x7233, 0x0078, 0x6011, 0x067f, 0x0d7f,
4889 + 0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f, 0x007c, 0x007e, 0x067e,
4890 + 0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814, 0xa065, 0x0040, 0x60d0,
4891 + 0x600c, 0x007e, 0x600f, 0x0000, 0x7824, 0xac06, 0x00c0, 0x60b5,
4892 + 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x60af, 0x1078, 0x5acb,
4893 + 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7827, 0x0000,
4894 + 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x60a4,
4895 + 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
4896 + 0x0040, 0x60ac, 0x6827, 0x0001, 0x037f, 0x0078, 0x60b5, 0x6003,
4897 + 0x0009, 0x630a, 0x2c30, 0x0078, 0x60cd, 0x6010, 0x2068, 0x1078,
4898 + 0x8d06, 0x0040, 0x60c9, 0x601c, 0xa086, 0x0003, 0x00c0, 0x60d7,
4899 + 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078,
4900 + 0x8eb9, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x007f, 0x0078, 0x607d,
4901 + 0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c,
4902 + 0xa086, 0x0006, 0x00c0, 0x60e0, 0x1078, 0xa1ca, 0x0078, 0x60c9,
4903 + 0x601c, 0xa086, 0x0002, 0x00c0, 0x60c9, 0x6004, 0xa086, 0x0085,
4904 + 0x0040, 0x60c0, 0x0078, 0x60c9, 0x007e, 0x067e, 0x0c7e, 0x0d7e,
4905 + 0x7818, 0xa065, 0x0040, 0x615a, 0x6054, 0x007e, 0x6057, 0x0000,
4906 + 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x44d3,
4907 + 0x0040, 0x6157, 0x7e24, 0x86ff, 0x0040, 0x6149, 0xa680, 0x0004,
4908 + 0x2004, 0xad06, 0x00c0, 0x6149, 0x0d7e, 0x2069, 0x0100, 0x68c0,
4909 + 0xa005, 0x0040, 0x6140, 0x1078, 0x5acb, 0x1078, 0x6e0f, 0x68c3,
4910 + 0x0000, 0x1078, 0x7378, 0x7827, 0x0000, 0x037e, 0x2069, 0x0140,
4911 + 0x6b04, 0xa384, 0x1000, 0x0040, 0x6129, 0x6803, 0x0100, 0x6803,
4912 + 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x6131, 0x6827,
4913 + 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x613a,
4914 + 0x8001, 0x603e, 0x2660, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x6149,
4915 + 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078,
4916 + 0x60fe, 0x8dff, 0x0040, 0x6153, 0x6837, 0x0103, 0x6b4a, 0x6847,
4917 + 0x0000, 0x1078, 0x4a73, 0x1078, 0x7233, 0x0078, 0x60fe, 0x007f,
4918 + 0x0078, 0x60f1, 0x781e, 0x781a, 0x0d7f, 0x0c7f, 0x067f, 0x007f,
4919 + 0x007c, 0x0e7e, 0x0d7e, 0x067e, 0x6000, 0xd0dc, 0x0040, 0x6181,
4920 + 0x604c, 0xa06d, 0x0040, 0x6181, 0x6848, 0xa606, 0x00c0, 0x6181,
4921 + 0x2071, 0xa8b1, 0x7024, 0xa035, 0x0040, 0x6181, 0xa080, 0x0004,
4922 + 0x2004, 0xad06, 0x00c0, 0x6181, 0x6000, 0xc0dc, 0x6002, 0x1078,
4923 + 0x6185, 0x067f, 0x0d7f, 0x0e7f, 0x007c, 0x0f7e, 0x2079, 0x0100,
4924 + 0x78c0, 0xa005, 0x00c0, 0x6194, 0x0c7e, 0x2660, 0x6003, 0x0009,
4925 + 0x630a, 0x0c7f, 0x0078, 0x61cb, 0x1078, 0x6e0f, 0x78c3, 0x0000,
4926 + 0x1078, 0x7378, 0x7027, 0x0000, 0x037e, 0x2079, 0x0140, 0x7b04,
4927 + 0xa384, 0x1000, 0x0040, 0x61a8, 0x7803, 0x0100, 0x7803, 0x0000,
4928 + 0x2079, 0x0100, 0x7824, 0xd084, 0x0040, 0x61b0, 0x7827, 0x0001,
4929 + 0x1078, 0x7378, 0x037f, 0x1078, 0x44d3, 0x0c7e, 0x603c, 0xa005,
4930 + 0x0040, 0x61bc, 0x8001, 0x603e, 0x2660, 0x1078, 0x772d, 0x0c7f,
4931 + 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x8f7d, 0x1078,
4932 + 0x4a73, 0x1078, 0x7233, 0x0f7f, 0x007c, 0x0e7e, 0x0c7e, 0x2071,
4933 + 0xa8b1, 0x7004, 0xa084, 0x0007, 0x0079, 0x61d6, 0x61e0, 0x61e3,
4934 + 0x61fc, 0x6218, 0x6262, 0x61e0, 0x61e0, 0x61de, 0x1078, 0x1332,
4935 + 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x61f1, 0x7020,
4936 + 0x8001, 0x7022, 0x600c, 0xa015, 0x0040, 0x61f8, 0x7216, 0x600f,
4937 + 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c,
4938 + 0x7216, 0x7212, 0x0078, 0x61f1, 0x6018, 0x2060, 0x1078, 0x44d3,
4939 + 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0040, 0x620d,
4940 + 0x6054, 0xa015, 0x0040, 0x6214, 0x721e, 0x7007, 0x0000, 0x7027,
4941 + 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7218, 0x721e, 0x0078, 0x620d,
4942 + 0x7024, 0xa065, 0x0040, 0x625f, 0x700c, 0xac06, 0x00c0, 0x622f,
4943 + 0x1078, 0x7233, 0x600c, 0xa015, 0x0040, 0x622b, 0x720e, 0x600f,
4944 + 0x0000, 0x0078, 0x625d, 0x720e, 0x720a, 0x0078, 0x625d, 0x7014,
4945 + 0xac06, 0x00c0, 0x6242, 0x1078, 0x7233, 0x600c, 0xa015, 0x0040,
4946 + 0x623e, 0x7216, 0x600f, 0x0000, 0x0078, 0x625d, 0x7216, 0x7212,
4947 + 0x0078, 0x625d, 0x601c, 0xa086, 0x0003, 0x00c0, 0x625d, 0x6018,
4948 + 0x2060, 0x1078, 0x44d3, 0x6000, 0xc0dc, 0x6002, 0x1078, 0x7233,
4949 + 0x701c, 0xa065, 0x0040, 0x625d, 0x6054, 0xa015, 0x0040, 0x625b,
4950 + 0x721e, 0x0078, 0x625d, 0x7218, 0x721e, 0x7027, 0x0000, 0x0c7f,
4951 + 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x626f, 0x1078, 0x7233,
4952 + 0x600c, 0xa015, 0x0040, 0x6276, 0x720e, 0x600f, 0x0000, 0x1078,
4953 + 0x7378, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x720e, 0x720a,
4954 + 0x0078, 0x626f, 0x0d7e, 0x2069, 0xa8b1, 0x6830, 0xa084, 0x0003,
4955 + 0x0079, 0x6282, 0x6288, 0x628a, 0x62b4, 0x6288, 0x1078, 0x1332,
4956 + 0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001, 0x0040, 0x62aa,
4957 + 0x683c, 0xa065, 0x0040, 0x629b, 0x600c, 0xa015, 0x0040, 0x62a6,
4958 + 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011,
4959 + 0xa8d0, 0x2013, 0x0000, 0x0c7f, 0x0d7f, 0x007c, 0x683a, 0x6836,
4960 + 0x0078, 0x629b, 0x6843, 0x0000, 0x6838, 0xa065, 0x0040, 0x629b,
4961 + 0x6003, 0x0003, 0x0078, 0x629b, 0x0c7e, 0x6843, 0x0000, 0x6847,
4962 + 0x0000, 0x684b, 0x0000, 0x683c, 0xa065, 0x0040, 0x62ce, 0x600c,
4963 + 0xa015, 0x0040, 0x62ca, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000,
4964 + 0x0078, 0x62ce, 0x683f, 0x0000, 0x683a, 0x6836, 0x0c7f, 0x0d7f,
4965 + 0x007c, 0x0d7e, 0x2069, 0xa8b1, 0x6804, 0xa084, 0x0007, 0x0079,
4966 + 0x62d9, 0x62e3, 0x638a, 0x638a, 0x638a, 0x638a, 0x638c, 0x638a,
4967 + 0x62e1, 0x1078, 0x1332, 0x6820, 0xa005, 0x00c0, 0x62e9, 0x0d7f,
4968 + 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x62f8, 0x6807, 0x0004,
4969 + 0x6826, 0x682b, 0x0000, 0x1078, 0x63d4, 0x0c7f, 0x0d7f, 0x007c,
4970 + 0x6814, 0xa065, 0x0040, 0x6306, 0x6807, 0x0001, 0x6826, 0x682b,
4971 + 0x0000, 0x1078, 0x63d4, 0x0c7f, 0x0d7f, 0x007c, 0x0e7e, 0x037e,
4972 + 0x6a1c, 0xa2f5, 0x0000, 0x0040, 0x6385, 0x704c, 0xa00d, 0x0040,
4973 + 0x6315, 0x7088, 0xa005, 0x0040, 0x632d, 0x7054, 0xa075, 0x0040,
4974 + 0x631e, 0xa20e, 0x0040, 0x6385, 0x0078, 0x6323, 0x6818, 0xa20e,
4975 + 0x0040, 0x6385, 0x2070, 0x704c, 0xa00d, 0x0040, 0x6315, 0x7088,
4976 + 0xa005, 0x00c0, 0x6315, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302,
4977 + 0x00c8, 0x6315, 0x1078, 0x76fc, 0x0040, 0x6385, 0x8318, 0x733e,
4978 + 0x6112, 0x2e10, 0x621a, 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff,
4979 + 0x6032, 0xa180, 0x0014, 0x2003, 0x0000, 0xa180, 0x0015, 0x2004,
4980 + 0xa08a, 0x199a, 0x0048, 0x634e, 0x2001, 0x1999, 0x8003, 0x801b,
4981 + 0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78, 0x71a0, 0xd1bc,
4982 + 0x0040, 0x6367, 0x7100, 0xd1f4, 0x0040, 0x6363, 0x7114, 0xa18c,
4983 + 0x00ff, 0x0078, 0x636c, 0x2009, 0x0000, 0x0078, 0x636c, 0xa1e0,
4984 + 0x29c0, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x1078,
4985 + 0x6965, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26,
4986 + 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040,
4987 + 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, 0x037f, 0x0e7f, 0x0c7f,
4988 + 0x0078, 0x6383, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040,
4989 + 0x6398, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x63d4,
4990 + 0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, 0x2069, 0xa8b1, 0x6830,
4991 + 0xa086, 0x0000, 0x00c0, 0x63bb, 0x6838, 0xa07d, 0x0040, 0x63bb,
4992 + 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x127e,
4993 + 0x0f7e, 0x2091, 0x2200, 0x027f, 0x1078, 0x1d6d, 0x00c0, 0x63be,
4994 + 0x127f, 0x1078, 0x6cb3, 0x0d7f, 0x0f7f, 0x007c, 0x127f, 0x6843,
4995 + 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0040, 0x63d0, 0x6a3a,
4996 + 0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x63bb,
4997 + 0x683a, 0x6836, 0x0078, 0x63ca, 0x601c, 0xa084, 0x000f, 0x1079,
4998 + 0x63da, 0x007c, 0x63e3, 0x63e8, 0x6809, 0x6922, 0x63e8, 0x6809,
4999 + 0x6922, 0x63e3, 0x63e8, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x007c,
5000 + 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0044,
5001 + 0x10c8, 0x1332, 0x6118, 0x2178, 0x79a0, 0xd1bc, 0x0040, 0x6405,
5002 + 0x7900, 0xd1f4, 0x0040, 0x6401, 0x7914, 0xa18c, 0x00ff, 0x0078,
5003 + 0x640a, 0x2009, 0x0000, 0x0078, 0x640a, 0xa1f8, 0x29c0, 0x2f0c,
5004 + 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa08a, 0x0040,
5005 + 0x00c8, 0x645c, 0x1079, 0x641a, 0x0f7f, 0x0c7f, 0x147f, 0x137f,
5006 + 0x157f, 0x007c, 0x64c2, 0x650a, 0x6532, 0x65cd, 0x65fd, 0x6605,
5007 + 0x662c, 0x663d, 0x664e, 0x6656, 0x666e, 0x6656, 0x66d9, 0x663d,
5008 + 0x66fa, 0x6702, 0x664e, 0x6702, 0x6713, 0x645a, 0x645a, 0x645a,
5009 + 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a,
5010 + 0x6eef, 0x6f14, 0x6f29, 0x6f4c, 0x6f6d, 0x662c, 0x645a, 0x662c,
5011 + 0x6656, 0x645a, 0x6532, 0x65cd, 0x645a, 0x749c, 0x6656, 0x645a,
5012 + 0x74bc, 0x6656, 0x645a, 0x645a, 0x64bd, 0x646b, 0x645a, 0x74e1,
5013 + 0x7558, 0x7640, 0x645a, 0x7651, 0x6626, 0x766d, 0x645a, 0x6f82,
5014 + 0x645a, 0x645a, 0x1078, 0x1332, 0x2100, 0x1079, 0x6465, 0x0f7f,
5015 + 0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c, 0x6469, 0x6469, 0x6469,
5016 + 0x649f, 0x1078, 0x1332, 0x0d7e, 0x20a1, 0x020b, 0x1078, 0x6731,
5017 + 0x7810, 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, 0x0800,
5018 + 0x683c, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
5019 + 0x20a3, 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, 0x0000,
5020 + 0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x6dfb, 0x0d7f, 0x007c,
5021 + 0x0d7e, 0x7818, 0x2068, 0x68a0, 0xa082, 0x007e, 0x0048, 0x649c,
5022 + 0xa085, 0x0001, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x649a, 0x0d7e,
5023 + 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x0500, 0x20a3, 0x0000,
5024 + 0x7810, 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, 0x6810,
5025 + 0x20a2, 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, 0x60c3,
5026 + 0x0010, 0x1078, 0x6dfb, 0x0d7f, 0x007c, 0x6030, 0x609a, 0x1078,
5027 + 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x5200,
5028 + 0x20a3, 0x0000, 0x0d7e, 0x2069, 0xa652, 0x6804, 0xd084, 0x0040,
5029 + 0x64dc, 0x6828, 0x20a3, 0x0000, 0x017e, 0x1078, 0x2564, 0x21a2,
5030 + 0x017f, 0x0d7f, 0x0078, 0x64e1, 0x0d7f, 0x20a3, 0x0000, 0x20a3,
5031 + 0x0000, 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x20a9, 0x0004,
5032 + 0x2099, 0xa601, 0x53a6, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082,
5033 + 0x007f, 0x0048, 0x64fb, 0x2001, 0xa61b, 0x20a6, 0x2001, 0xa61c,
5034 + 0x20a6, 0x0078, 0x6501, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff,
5035 + 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078,
5036 + 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x0500,
5037 + 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f,
5038 + 0x0048, 0x6522, 0x2001, 0xa61b, 0x20a6, 0x2001, 0xa61c, 0x20a6,
5039 + 0x0078, 0x6528, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2,
5040 + 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x60c3, 0x0010, 0x1078,
5041 + 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x0c7e, 0x7818,
5042 + 0x2060, 0x2001, 0x0000, 0x1078, 0x4972, 0x0c7f, 0x7818, 0xa080,
5043 + 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, 0x654d, 0x20a3, 0x0400,
5044 + 0x620c, 0xc2b4, 0x620e, 0x0078, 0x654f, 0x20a3, 0x0300, 0x20a3,
5045 + 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0,
5046 + 0x659c, 0x2099, 0xa88d, 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304,
5047 + 0xa084, 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3,
5048 + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099,
5049 + 0xa605, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xa601, 0x53a6, 0x20a9,
5050 + 0x0010, 0x20a3, 0x0000, 0x00f0, 0x6579, 0x2099, 0xa895, 0x3304,
5051 + 0xc0dd, 0x20a2, 0x2001, 0xa672, 0x2004, 0xd0e4, 0x0040, 0x6594,
5052 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x9398, 0x9398, 0x9398, 0x33a6,
5053 + 0x20a9, 0x0004, 0x0078, 0x6596, 0x20a9, 0x0007, 0x20a3, 0x0000,
5054 + 0x00f0, 0x6596, 0x0078, 0x65bc, 0x2099, 0xa88d, 0x20a9, 0x0008,
5055 + 0x53a6, 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x20a9, 0x0004,
5056 + 0x2099, 0xa601, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0,
5057 + 0x65ad, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x65b3, 0x2099,
5058 + 0xa895, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000,
5059 + 0x00f0, 0x65be, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x65c4,
5060 + 0x60c3, 0x0074, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5061 + 0x6731, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3,
5062 + 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e,
5063 + 0x2079, 0xa652, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x65e9, 0xa085,
5064 + 0x0020, 0xd1a4, 0x0040, 0x65ee, 0xa085, 0x0010, 0xa085, 0x0002,
5065 + 0x0d7e, 0x0078, 0x66b7, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
5066 + 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5067 + 0x6731, 0x20a3, 0x5000, 0x0078, 0x654f, 0x20a1, 0x020b, 0x1078,
5068 + 0x6731, 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3,
5069 + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
5070 + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
5071 + 0x0000, 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b,
5072 + 0x1078, 0x67b9, 0x0078, 0x6630, 0x20a1, 0x020b, 0x1078, 0x67c2,
5073 + 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
5074 + 0x60c3, 0x0004, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5075 + 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3,
5076 + 0x2a00, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b,
5077 + 0x1078, 0x67c2, 0x20a3, 0x0200, 0x0078, 0x654f, 0x20a1, 0x020b,
5078 + 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0xa005,
5079 + 0x0040, 0x6665, 0x20a2, 0x0078, 0x6667, 0x20a3, 0x0003, 0x7810,
5080 + 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x0d7e, 0x20a1,
5081 + 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3,
5082 + 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0, 0x6694,
5083 + 0x6998, 0xa184, 0xc000, 0x00c0, 0x6690, 0xd1ec, 0x0040, 0x668c,
5084 + 0x20a3, 0x2100, 0x0078, 0x6696, 0x20a3, 0x0100, 0x0078, 0x6696,
5085 + 0x20a3, 0x0400, 0x0078, 0x6696, 0x20a3, 0x0700, 0xa006, 0x20a2,
5086 + 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0xa652, 0x7904,
5087 + 0x0f7f, 0xd1ac, 0x00c0, 0x66a6, 0xa085, 0x0020, 0xd1a4, 0x0040,
5088 + 0x66ab, 0xa085, 0x0010, 0x2009, 0xa674, 0x210c, 0xd184, 0x0040,
5089 + 0x66b5, 0x699c, 0xd18c, 0x0040, 0x66b7, 0xa085, 0x0002, 0x027e,
5090 + 0x2009, 0xa672, 0x210c, 0xd1e4, 0x0040, 0x66c5, 0xc0c5, 0xa094,
5091 + 0x0030, 0xa296, 0x0010, 0x0040, 0x66cf, 0xd1ec, 0x0040, 0x66cf,
5092 + 0xa094, 0x0030, 0xa296, 0x0010, 0x0040, 0x66cf, 0xc0bd, 0x027f,
5093 + 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x0d7f,
5094 + 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0210, 0x20a3,
5095 + 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3,
5096 + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
5097 + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078,
5098 + 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0200,
5099 + 0x0078, 0x64c8, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100,
5100 + 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008,
5101 + 0x1078, 0x6dfb, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1,
5102 + 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3,
5103 + 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c,
5104 + 0x027e, 0x037e, 0x047e, 0x2019, 0x3200, 0x2021, 0x0800, 0x0078,
5105 + 0x6738, 0x027e, 0x037e, 0x047e, 0x2019, 0x2200, 0x2021, 0x0100,
5106 + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014,
5107 + 0xa286, 0x007e, 0x00c0, 0x674b, 0xa385, 0x00ff, 0x20a2, 0x20a3,
5108 + 0xfffe, 0x0078, 0x6780, 0xa286, 0x007f, 0x00c0, 0x6757, 0x0d7e,
5109 + 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, 0x0078, 0x676e, 0xd2bc,
5110 + 0x0040, 0x6776, 0xa286, 0x0080, 0x0d7e, 0x00c0, 0x6766, 0xa385,
5111 + 0x00ff, 0x20a2, 0x20a3, 0xfffc, 0x0078, 0x676e, 0xa2e8, 0xa735,
5112 + 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5113 + 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6784, 0x0d7e, 0xa2e8,
5114 + 0xa735, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x0d7f,
5115 + 0x20a3, 0x0000, 0x6230, 0x22a2, 0xa485, 0x0029, 0x20a2, 0x047f,
5116 + 0x037f, 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000,
5117 + 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
5118 + 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff,
5119 + 0x2011, 0xfffc, 0x22a2, 0x0d7e, 0x2069, 0xa61b, 0x2da6, 0x8d68,
5120 + 0x2da6, 0x0d7f, 0x20a3, 0x2029, 0x20a3, 0x0000, 0x0078, 0x678b,
5121 + 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02, 0x20a3, 0x0000,
5122 + 0x007c, 0x027e, 0x037e, 0x047e, 0x2019, 0x3300, 0x2021, 0x0800,
5123 + 0x0078, 0x67c9, 0x027e, 0x037e, 0x047e, 0x2019, 0x2300, 0x2021,
5124 + 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
5125 + 0x2004, 0xa092, 0x007e, 0x0048, 0x67e6, 0x0d7e, 0xa0e8, 0xa735,
5126 + 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5127 + 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x67f4, 0x0d7e, 0xa0e8,
5128 + 0xa735, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x0d7f,
5129 + 0x20a3, 0x0000, 0x6230, 0x22a2, 0xa485, 0x0098, 0x20a2, 0x20a3,
5130 + 0x0000, 0x047f, 0x037f, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000,
5131 + 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
5132 + 0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085, 0x1048, 0x1332,
5133 + 0xa08a, 0x008c, 0x10c8, 0x1332, 0x6118, 0x2178, 0x79a0, 0xd1bc,
5134 + 0x0040, 0x6827, 0x7900, 0xd1f4, 0x0040, 0x6823, 0x7914, 0xa18c,
5135 + 0x00ff, 0x0078, 0x682c, 0x2009, 0x0000, 0x0078, 0x682c, 0xa1f8,
5136 + 0x29c0, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a,
5137 + 0xa082, 0x0085, 0x1079, 0x6837, 0x0f7f, 0x0c7f, 0x007c, 0x6840,
5138 + 0x684b, 0x6866, 0x683e, 0x683e, 0x683e, 0x6840, 0x1078, 0x1332,
5139 + 0x147e, 0x20a1, 0x020b, 0x1078, 0x6879, 0x60c3, 0x0000, 0x1078,
5140 + 0x6dfb, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, 0x68ad,
5141 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, 0x20a2,
5142 + 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000,
5143 + 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x147f, 0x007c, 0x147e, 0x20a1,
5144 + 0x020b, 0x1078, 0x68ee, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3,
5145 + 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x6dfb, 0x147f,
5146 + 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
5147 + 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x6898, 0x0d7e, 0xa0e8,
5148 + 0xa735, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2,
5149 + 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x68a7,
5150 + 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2,
5151 + 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
5152 + 0x0009, 0x20a3, 0x0000, 0x0078, 0x678b, 0x027e, 0x20e1, 0x9080,
5153 + 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e,
5154 + 0x0048, 0x68cc, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085,
5155 + 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68,
5156 + 0x2da6, 0x0d7f, 0x0078, 0x68db, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5157 + 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3,
5158 + 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0099, 0x20a3, 0x0000, 0x1078,
5159 + 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x7a10, 0x22a2,
5160 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x027e, 0x20e1,
5161 + 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092,
5162 + 0x007e, 0x0048, 0x690d, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810,
5163 + 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6,
5164 + 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x691c, 0x0d7e, 0xa0e8, 0xa735,
5165 + 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x0d7f,
5166 + 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0099, 0x20a3, 0x0000,
5167 + 0x0078, 0x68df, 0x0c7e, 0x0f7e, 0x2c78, 0x7804, 0xa08a, 0x0040,
5168 + 0x1048, 0x1332, 0xa08a, 0x0053, 0x10c8, 0x1332, 0x7918, 0x2160,
5169 + 0x61a0, 0xd1bc, 0x0040, 0x6941, 0x6100, 0xd1f4, 0x0040, 0x693d,
5170 + 0x6114, 0xa18c, 0x00ff, 0x0078, 0x6946, 0x2009, 0x0000, 0x0078,
5171 + 0x6946, 0xa1e0, 0x29c0, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100,
5172 + 0x619a, 0xa082, 0x0040, 0x1079, 0x6950, 0x0f7f, 0x0c7f, 0x007c,
5173 + 0x6965, 0x6a73, 0x6a14, 0x6c27, 0x6963, 0x6963, 0x6963, 0x6963,
5174 + 0x6963, 0x6963, 0x6963, 0x714c, 0x715d, 0x716e, 0x717f, 0x6963,
5175 + 0x767e, 0x6963, 0x713b, 0x1078, 0x1332, 0x0d7e, 0x157e, 0x147e,
5176 + 0x780b, 0xffff, 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7910, 0x2168,
5177 + 0x6948, 0x7922, 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c,
5178 + 0xa184, 0x000f, 0x00c0, 0x6980, 0x2001, 0x0005, 0x0078, 0x698a,
5179 + 0xd184, 0x0040, 0x6987, 0x2001, 0x0004, 0x0078, 0x698a, 0xa084,
5180 + 0x0006, 0x8004, 0x017e, 0x2008, 0x7830, 0xa084, 0x00ff, 0x8007,
5181 + 0xa105, 0x017f, 0x20a2, 0xd1ac, 0x0040, 0x699a, 0x20a3, 0x0002,
5182 + 0x0078, 0x69a6, 0xd1b4, 0x0040, 0x69a1, 0x20a3, 0x0001, 0x0078,
5183 + 0x69a6, 0x20a3, 0x0000, 0x2230, 0x0078, 0x69a8, 0x6a80, 0x6e7c,
5184 + 0x20a9, 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000,
5185 + 0x00f0, 0x69ac, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080,
5186 + 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0xa8cd,
5187 + 0x2003, 0x07d0, 0x2001, 0xa8cc, 0x2003, 0x0009, 0x2001, 0xa8d2,
5188 + 0x2003, 0x0002, 0x1078, 0x158c, 0x147f, 0x157f, 0x0d7f, 0x007c,
5189 + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014,
5190 + 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028,
5191 + 0x2004, 0xd0bc, 0x0040, 0x69f6, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5192 + 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5193 + 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6a05, 0x0d7e, 0xa0e8,
5194 + 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2,
5195 + 0x0d7f, 0x20a3, 0x0000, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a3,
5196 + 0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3,
5197 + 0x0000, 0x20a3, 0x0000, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e,
5198 + 0x20a1, 0x020b, 0x1078, 0x6a34, 0x7810, 0x2068, 0x6860, 0x20a2,
5199 + 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2,
5200 + 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x147f,
5201 + 0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1,
5202 + 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x6a52,
5203 + 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2,
5204 + 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f,
5205 + 0x0078, 0x6a61, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085,
5206 + 0x0500, 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230,
5207 + 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2,
5208 + 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
5209 + 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, 0x7810,
5210 + 0xa0ec, 0xf000, 0x0040, 0x6a8b, 0xa06d, 0x1078, 0x495f, 0x0040,
5211 + 0x6a8b, 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x00c0, 0x6a8b,
5212 + 0x7824, 0xc0cd, 0x7826, 0x20a1, 0x020b, 0x1078, 0x6be0, 0xa016,
5213 + 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000,
5214 + 0x00c0, 0x6aa2, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x6aaa,
5215 + 0x0078, 0x6aa5, 0xa006, 0x1079, 0x6aaa, 0x147f, 0x137f, 0x157f,
5216 + 0x0d7f, 0x007c, 0x6ab4, 0x6b4c, 0x6b57, 0x6b81, 0x6b95, 0x6bb1,
5217 + 0x6bbc, 0x6ab2, 0x1078, 0x1332, 0x017e, 0x037e, 0x694c, 0xa18c,
5218 + 0x0003, 0x0040, 0x6abf, 0xa186, 0x0003, 0x00c0, 0x6ace, 0x6b78,
5219 + 0x7824, 0xd0cc, 0x0040, 0x6ac5, 0xc3e5, 0x23a2, 0x6868, 0x20a2,
5220 + 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x6b8c, 0xa186, 0x0001,
5221 + 0x10c0, 0x1332, 0x6b78, 0x7824, 0xd0cc, 0x0040, 0x6ad8, 0xc3e5,
5222 + 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2,
5223 + 0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0040,
5224 + 0x6b46, 0xd3c4, 0x0040, 0x6aee, 0x687c, 0xa108, 0xd3cc, 0x0040,
5225 + 0x6af3, 0x6874, 0xa108, 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020,
5226 + 0x201c, 0x831f, 0x23a2, 0x8000, 0x00f0, 0x6af8, 0x157f, 0x22a2,
5227 + 0x22a2, 0x22a2, 0xa184, 0x0003, 0x0040, 0x6b46, 0x20a1, 0x020b,
5228 + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x007e, 0x7818, 0xa080, 0x0028,
5229 + 0x2004, 0xd0bc, 0x0040, 0x6b26, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5230 + 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5231 + 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6b35, 0x0d7e, 0xa0e8,
5232 + 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2,
5233 + 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x007f, 0x7b24, 0xd3cc,
5234 + 0x0040, 0x6b3e, 0x20a3, 0x0889, 0x0078, 0x6b40, 0x20a3, 0x0898,
5235 + 0x20a2, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x037f,
5236 + 0x017f, 0x1078, 0x6dfb, 0x007c, 0x2011, 0x0008, 0x7824, 0xd0cc,
5237 + 0x0040, 0x6b53, 0xc2e5, 0x22a2, 0xa016, 0x0078, 0x6b8a, 0x2011,
5238 + 0x0302, 0x7824, 0xd0cc, 0x0040, 0x6b5e, 0xc2e5, 0x22a2, 0xa016,
5239 + 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008,
5240 + 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500,
5241 + 0x22a2, 0x20a3, 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2,
5242 + 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x1078, 0x6dfb,
5243 + 0x007c, 0x2011, 0x0028, 0x7824, 0xd0cc, 0x0040, 0x6b88, 0xc2e5,
5244 + 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
5245 + 0x60c3, 0x0018, 0x1078, 0x6dfb, 0x007c, 0x2011, 0x0100, 0x7824,
5246 + 0xd0cc, 0x0040, 0x6b9c, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2,
5247 + 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x7834, 0xa084,
5248 + 0x00ff, 0x20a2, 0x22a2, 0x22a2, 0x60c3, 0x0020, 0x1078, 0x6dfb,
5249 + 0x007c, 0x2011, 0x0008, 0x7824, 0xd0cc, 0x0040, 0x6bb8, 0xc2e5,
5250 + 0x22a2, 0xa016, 0x0078, 0x6b8a, 0x037e, 0x7b10, 0xa384, 0xff00,
5251 + 0x7812, 0xa384, 0x00ff, 0x8001, 0x00c0, 0x6bcf, 0x7824, 0xd0cc,
5252 + 0x0040, 0x6bcb, 0xc2e5, 0x22a2, 0x037f, 0x0078, 0x6b8a, 0x047e,
5253 + 0x2021, 0x0800, 0x007e, 0x7824, 0xd0cc, 0x007f, 0x0040, 0x6bd9,
5254 + 0xc4e5, 0x24a2, 0x047f, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x6b8c,
5255 + 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
5256 + 0x2004, 0xd0bc, 0x0040, 0x6bfe, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5257 + 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5258 + 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6c0d, 0x0d7e, 0xa0e8,
5259 + 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2,
5260 + 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x7824, 0xd0cc, 0x0040,
5261 + 0x6c15, 0x20a3, 0x0889, 0x0078, 0x6c17, 0x20a3, 0x0898, 0x20a3,
5262 + 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2,
5263 + 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e,
5264 + 0x157e, 0x137e, 0x147e, 0x017e, 0x037e, 0x7810, 0xa084, 0x0700,
5265 + 0x8007, 0x1079, 0x6c3a, 0x037f, 0x017f, 0x147f, 0x137f, 0x157f,
5266 + 0x0d7f, 0x007c, 0x6c42, 0x6c42, 0x6c44, 0x6c42, 0x6c42, 0x6c42,
5267 + 0x6c69, 0x6c42, 0x1078, 0x1332, 0x7910, 0xa18c, 0xf8ff, 0xa18d,
5268 + 0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x6c73,
5269 + 0x0d7e, 0x2069, 0xa652, 0x6804, 0xd0bc, 0x0040, 0x6c5e, 0x682c,
5270 + 0xa084, 0x00ff, 0x8007, 0x20a2, 0x0078, 0x6c60, 0x20a3, 0x3f00,
5271 + 0x0d7f, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078, 0x6dfb,
5272 + 0x007c, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x6c73, 0x20a3,
5273 + 0x7f00, 0x0078, 0x6c61, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
5274 + 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x6c91, 0x0d7e,
5275 + 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814,
5276 + 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078,
5277 + 0x6ca0, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0100,
5278 + 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2,
5279 + 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x1078, 0x6dea, 0x22a2,
5280 + 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
5281 + 0x0000, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x057e, 0x047e,
5282 + 0x037e, 0x2061, 0x0100, 0x2071, 0xa600, 0x6130, 0x7818, 0x2068,
5283 + 0x68a0, 0x2028, 0xd0bc, 0x00c0, 0x6cca, 0x6910, 0x6a14, 0x6430,
5284 + 0x0078, 0x6cce, 0x6910, 0x6a14, 0x736c, 0x7470, 0x781c, 0xa086,
5285 + 0x0006, 0x0040, 0x6d2d, 0xd5bc, 0x0040, 0x6cde, 0xa185, 0x0100,
5286 + 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x6ce5, 0xa185, 0x0100,
5287 + 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x6073, 0x0809, 0x6077,
5288 + 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a,
5289 + 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070,
5290 + 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca,
5291 + 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000,
5292 + 0xa582, 0x0080, 0x0048, 0x6d17, 0x6a00, 0xd2f4, 0x0040, 0x6d15,
5293 + 0x6a14, 0xa294, 0x00ff, 0x0078, 0x6d17, 0x2011, 0x0000, 0x629e,
5294 + 0x6017, 0x0016, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005,
5295 + 0x0040, 0x6d24, 0x2009, 0x1b58, 0x1078, 0x5ad0, 0x037f, 0x047f,
5296 + 0x057f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c,
5297 + 0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x6d85, 0xd5bc, 0x0040,
5298 + 0x6d41, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078,
5299 + 0x6d48, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e,
5300 + 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff,
5301 + 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808,
5302 + 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c,
5303 + 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080, 0x7928, 0xa109,
5304 + 0x792a, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7,
5305 + 0x0000, 0xa582, 0x0080, 0x0048, 0x6d80, 0x6a00, 0xd2f4, 0x0040,
5306 + 0x6d7e, 0x6a14, 0xa294, 0x00ff, 0x0078, 0x6d80, 0x2011, 0x0000,
5307 + 0x629e, 0x6017, 0x0012, 0x0078, 0x6d1a, 0xd5bc, 0x0040, 0x6d90,
5308 + 0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x6d97,
5309 + 0xa185, 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x1078,
5310 + 0x495f, 0x0040, 0x6dad, 0x0d7e, 0x7810, 0xa06d, 0x684c, 0x0d7f,
5311 + 0xa084, 0x2020, 0xa086, 0x2020, 0x00c0, 0x6dad, 0x7824, 0xc0cd,
5312 + 0x7826, 0x6073, 0x0889, 0x0078, 0x6daf, 0x6073, 0x0898, 0x6077,
5313 + 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a,
5314 + 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a,
5315 + 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce,
5316 + 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080,
5317 + 0x0048, 0x6ddd, 0x6a00, 0xd2f4, 0x0040, 0x6ddb, 0x6a14, 0xa294,
5318 + 0x00ff, 0x0078, 0x6ddd, 0x2011, 0x0000, 0x629e, 0x7824, 0xd0cc,
5319 + 0x0040, 0x6de6, 0x6017, 0x0016, 0x0078, 0x6d1a, 0x6017, 0x0012,
5320 + 0x0078, 0x6d1a, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294,
5321 + 0x00ff, 0x2202, 0x8217, 0x007c, 0x0d7e, 0x2069, 0xa8b1, 0x6843,
5322 + 0x0001, 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7,
5323 + 0x9575, 0x1078, 0x6e06, 0x1078, 0x5ac0, 0x007c, 0x007e, 0x6014,
5324 + 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e,
5325 + 0x0c7e, 0x2061, 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008,
5326 + 0x6016, 0x0c7f, 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e,
5327 + 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040,
5328 + 0x6e59, 0x1078, 0x6e0f, 0x6803, 0x1000, 0x6803, 0x0000, 0x0c7e,
5329 + 0x2061, 0xa8b1, 0x6128, 0xa192, 0x00c8, 0x00c8, 0x6e44, 0x8108,
5330 + 0x612a, 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x6e54, 0x1078, 0x5ac0,
5331 + 0x1078, 0x6e06, 0x0078, 0x6e54, 0x6124, 0xa1e5, 0x0000, 0x0040,
5332 + 0x6e51, 0x1078, 0xa5c4, 0x1078, 0x5acb, 0x2009, 0x0014, 0x1078,
5333 + 0x775c, 0x0c7f, 0x0078, 0x6e54, 0x027f, 0x017f, 0x0d7f, 0x0c7f,
5334 + 0x007c, 0x2001, 0xa8cd, 0x2004, 0xa005, 0x00c0, 0x6e54, 0x0c7e,
5335 + 0x2061, 0xa8b1, 0x6128, 0xa192, 0x0003, 0x00c8, 0x6e44, 0x8108,
5336 + 0x612a, 0x0c7f, 0x1078, 0x5ac0, 0x1078, 0x4224, 0x0078, 0x6e54,
5337 + 0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x027e, 0x1078, 0x5ad8, 0x2071,
5338 + 0xa8b1, 0x713c, 0x81ff, 0x0040, 0x6e9a, 0x2061, 0x0100, 0x2069,
5339 + 0x0140, 0x6904, 0xa194, 0x4000, 0x0040, 0x6ea0, 0x6803, 0x1000,
5340 + 0x6803, 0x0000, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x037f,
5341 + 0x713c, 0x2160, 0x1078, 0xa5c4, 0x2009, 0x004a, 0x1078, 0x775c,
5342 + 0x0078, 0x6e9a, 0x027f, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c,
5343 + 0x0078, 0x6e8a, 0x0e7e, 0x2071, 0xa8b1, 0x7048, 0xd084, 0x0040,
5344 + 0x6ebc, 0x713c, 0x81ff, 0x0040, 0x6ebc, 0x2071, 0x0100, 0xa188,
5345 + 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x6eba, 0x7017, 0x0012,
5346 + 0x0078, 0x6ebc, 0x7017, 0x0016, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e,
5347 + 0x0c7e, 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091, 0x8000,
5348 + 0x6018, 0x2068, 0x6ca0, 0x2071, 0xa8b1, 0x7018, 0x2068, 0x8dff,
5349 + 0x0040, 0x6ee6, 0x68a0, 0xa406, 0x0040, 0x6eda, 0x6854, 0x2068,
5350 + 0x0078, 0x6ecf, 0x6010, 0x2060, 0x643c, 0x6540, 0x6648, 0x2d60,
5351 + 0x1078, 0x4736, 0x0040, 0x6ee6, 0xa085, 0x0001, 0x127f, 0x007f,
5352 + 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x20a1,
5353 + 0x020b, 0x1078, 0x6731, 0x20a3, 0x1200, 0x20a3, 0x0000, 0x20a3,
5354 + 0x0000, 0x781c, 0xa086, 0x0004, 0x00c0, 0x6f01, 0x6098, 0x0078,
5355 + 0x6f02, 0x6030, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a9,
5356 + 0x0010, 0xa006, 0x20a2, 0x00f0, 0x6f0a, 0x20a2, 0x20a2, 0x60c3,
5357 + 0x002c, 0x1078, 0x6dfb, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b,
5358 + 0x1078, 0x6731, 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000,
5359 + 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x147f, 0x157f,
5360 + 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3,
5361 + 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006, 0x2011, 0xa640, 0x2019,
5362 + 0xa641, 0x23a6, 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0,
5363 + 0x6f39, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078,
5364 + 0x6dfb, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e,
5365 + 0x20a1, 0x020b, 0x1078, 0x6799, 0x1078, 0x67b0, 0x7810, 0xa080,
5366 + 0x0000, 0x2004, 0xa080, 0x0015, 0x2098, 0x7808, 0xa088, 0x0002,
5367 + 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003, 0x60c2, 0x1078, 0x6dfb,
5368 + 0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1,
5369 + 0x020b, 0x1078, 0x6731, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3,
5370 + 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x147f,
5371 + 0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e, 0x20a1, 0x020b,
5372 + 0x1078, 0x6731, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0017,
5373 + 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0x8003, 0x60c2,
5374 + 0x1078, 0x6dfb, 0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x0e7e,
5375 + 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x700c,
5376 + 0x2060, 0x8cff, 0x0040, 0x6fbb, 0x1078, 0x8f00, 0x00c0, 0x6fb2,
5377 + 0x1078, 0x7c83, 0x600c, 0x007e, 0x1078, 0x772d, 0x1078, 0x7233,
5378 + 0x0c7f, 0x0078, 0x6fa9, 0x700f, 0x0000, 0x700b, 0x0000, 0x127f,
5379 + 0x007f, 0x0c7f, 0x0e7f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e,
5380 + 0x0d7e, 0x0c7e, 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069,
5381 + 0x0100, 0x2079, 0x0140, 0x2071, 0xa8b1, 0x7024, 0x2060, 0x8cff,
5382 + 0x0040, 0x7014, 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x5acb,
5383 + 0x2009, 0x0013, 0x1078, 0x775c, 0x20a9, 0x01f4, 0x6824, 0xd094,
5384 + 0x0040, 0x6ff7, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040,
5385 + 0x7009, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x7009, 0xd084,
5386 + 0x0040, 0x6ffe, 0x6827, 0x0001, 0x0078, 0x7000, 0x00f0, 0x6fe6,
5387 + 0x7804, 0xa084, 0x1000, 0x0040, 0x7009, 0x7803, 0x0100, 0x7803,
5388 + 0x0000, 0x6824, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f,
5389 + 0x0f7f, 0x157f, 0x127f, 0x007c, 0x2001, 0xa600, 0x2004, 0xa096,
5390 + 0x0001, 0x0040, 0x704e, 0xa096, 0x0004, 0x0040, 0x704e, 0x1078,
5391 + 0x5acb, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x41dc, 0x1078,
5392 + 0x5a45, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x703c, 0x6827,
5393 + 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x704e, 0x7803, 0x1000,
5394 + 0x7803, 0x0000, 0x0078, 0x704e, 0xd084, 0x0040, 0x7043, 0x6827,
5395 + 0x0001, 0x0078, 0x7045, 0x00f0, 0x702b, 0x7804, 0xa084, 0x1000,
5396 + 0x0040, 0x704e, 0x7803, 0x0100, 0x7803, 0x0000, 0x007f, 0x017f,
5397 + 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c,
5398 + 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e,
5399 + 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071,
5400 + 0xa8b1, 0x703c, 0x2060, 0x8cff, 0x0040, 0x70d6, 0x68af, 0x95f5,
5401 + 0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, 0x00c0, 0x7074, 0x68c7,
5402 + 0x0000, 0x68cb, 0x0008, 0x1078, 0x5ad8, 0x1078, 0x1f7e, 0x047e,
5403 + 0x057e, 0x2009, 0x017f, 0x212c, 0x200b, 0x00a5, 0x2021, 0x0169,
5404 + 0x2404, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x70a5, 0x68c7,
5405 + 0x0000, 0x68cb, 0x0008, 0x0e7e, 0x0f7e, 0x2079, 0x0020, 0x2071,
5406 + 0xa908, 0x6814, 0xa084, 0x0004, 0xa085, 0x0012, 0x6816, 0x7803,
5407 + 0x0008, 0x7003, 0x0000, 0x0f7f, 0x0e7f, 0x250a, 0x057f, 0x047f,
5408 + 0xa39d, 0x0000, 0x00c0, 0x70b0, 0x2009, 0x0049, 0x1078, 0x775c,
5409 + 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040, 0x70c3, 0x6827, 0x0004,
5410 + 0x7804, 0xa084, 0x4000, 0x0040, 0x70d5, 0x7803, 0x1000, 0x7803,
5411 + 0x0000, 0x0078, 0x70d5, 0xd08c, 0x0040, 0x70ca, 0x6827, 0x0002,
5412 + 0x0078, 0x70cc, 0x00f0, 0x70b2, 0x7804, 0xa084, 0x1000, 0x0040,
5413 + 0x70d5, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f,
5414 + 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c,
5415 + 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0xa8b1, 0x6a06, 0x127f,
5416 + 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0xa8b1,
5417 + 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e,
5418 + 0x007e, 0x127e, 0x2071, 0xa8b1, 0x7614, 0x2660, 0x2678, 0x2091,
5419 + 0x8000, 0x8cff, 0x0040, 0x7134, 0x601c, 0xa206, 0x00c0, 0x712f,
5420 + 0x7014, 0xac36, 0x00c0, 0x710e, 0x660c, 0x7616, 0x7010, 0xac36,
5421 + 0x00c0, 0x711c, 0x2c00, 0xaf36, 0x0040, 0x711a, 0x2f00, 0x7012,
5422 + 0x0078, 0x711c, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
5423 + 0x0040, 0x7125, 0x7e0e, 0x0078, 0x7126, 0x2678, 0x600f, 0x0000,
5424 + 0x1078, 0x8ec6, 0x1078, 0x7233, 0x0c7f, 0x0078, 0x7101, 0x2c78,
5425 + 0x600c, 0x2060, 0x0078, 0x7101, 0x127f, 0x007f, 0x067f, 0x0c7f,
5426 + 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078,
5427 + 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
5428 + 0x20a3, 0x1000, 0x0078, 0x718e, 0x157e, 0x147e, 0x20a1, 0x020b,
5429 + 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2,
5430 + 0x20a2, 0x20a3, 0x4000, 0x0078, 0x718e, 0x157e, 0x147e, 0x20a1,
5431 + 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2,
5432 + 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x718e, 0x157e, 0x147e,
5433 + 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2,
5434 + 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x718e, 0x157e,
5435 + 0x147e, 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006,
5436 + 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078, 0x723e,
5437 + 0x60c3, 0x0020, 0x1078, 0x6dfb, 0x147f, 0x157f, 0x007c, 0x127e,
5438 + 0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4, 0x00c0,
5439 + 0x71a6, 0xd1bc, 0x00c0, 0x71f0, 0x0078, 0x7230, 0x2009, 0x017f,
5440 + 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140, 0x20a9,
5441 + 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040, 0x71e7,
5442 + 0x6020, 0xd0b4, 0x0040, 0x71e7, 0x6024, 0xd094, 0x00c0, 0x71e7,
5443 + 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x71e7, 0x00f0,
5444 + 0x71b3, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c,
5445 + 0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91, 0x6043,
5446 + 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024, 0xd094, 0x00c0,
5447 + 0x71e6, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x71dd, 0x027f, 0x0d7f,
5448 + 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0078, 0x7230,
5449 + 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069,
5450 + 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000,
5451 + 0x0040, 0x7229, 0x6020, 0xd0bc, 0x0040, 0x7229, 0x2104, 0xa084,
5452 + 0x000f, 0xa086, 0x0004, 0x00c0, 0x7229, 0x00f0, 0x71fd, 0x027e,
5453 + 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff, 0xa10d,
5454 + 0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001, 0x6043,
5455 + 0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x7223,
5456 + 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000,
5457 + 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0xa8b1, 0x7020, 0xa005,
5458 + 0x0040, 0x723c, 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9, 0x0008,
5459 + 0x20a2, 0x00f0, 0x7240, 0x20a2, 0x20a2, 0x007c, 0x0f7e, 0x0e7e,
5460 + 0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000,
5461 + 0x2071, 0xa8b1, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff,
5462 + 0x0040, 0x72e2, 0x8cff, 0x0040, 0x72e2, 0x601c, 0xa086, 0x0006,
5463 + 0x00c0, 0x72dd, 0x88ff, 0x0040, 0x726d, 0x2800, 0xac06, 0x00c0,
5464 + 0x72dd, 0x2039, 0x0000, 0x0078, 0x7278, 0x6018, 0xa206, 0x00c0,
5465 + 0x72dd, 0x85ff, 0x0040, 0x7278, 0x6020, 0xa106, 0x00c0, 0x72dd,
5466 + 0x7024, 0xac06, 0x00c0, 0x72a8, 0x2069, 0x0100, 0x68c0, 0xa005,
5467 + 0x0040, 0x72a3, 0x1078, 0x5acb, 0x6817, 0x0008, 0x68c3, 0x0000,
5468 + 0x1078, 0x7378, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04,
5469 + 0xa384, 0x1000, 0x0040, 0x7298, 0x6803, 0x0100, 0x6803, 0x0000,
5470 + 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x72a0, 0x6827, 0x0001,
5471 + 0x037f, 0x0078, 0x72a8, 0x6003, 0x0009, 0x630a, 0x0078, 0x72dd,
5472 + 0x7014, 0xac36, 0x00c0, 0x72ae, 0x660c, 0x7616, 0x7010, 0xac36,
5473 + 0x00c0, 0x72bc, 0x2c00, 0xaf36, 0x0040, 0x72ba, 0x2f00, 0x7012,
5474 + 0x0078, 0x72bc, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
5475 + 0x0040, 0x72c5, 0x7e0e, 0x0078, 0x72c6, 0x2678, 0x89ff, 0x00c0,
5476 + 0x72d5, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
5477 + 0x72d3, 0x1078, 0xa1ca, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x88ff,
5478 + 0x00c0, 0x72ec, 0x0c7f, 0x0078, 0x7257, 0x2c78, 0x600c, 0x2060,
5479 + 0x0078, 0x7257, 0xa006, 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f,
5480 + 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5,
5481 + 0x0001, 0x0078, 0x72e3, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e,
5482 + 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x7638,
5483 + 0x2660, 0x2678, 0x8cff, 0x0040, 0x7367, 0x601c, 0xa086, 0x0006,
5484 + 0x00c0, 0x7362, 0x87ff, 0x0040, 0x7313, 0x2700, 0xac06, 0x00c0,
5485 + 0x7362, 0x0078, 0x731e, 0x6018, 0xa206, 0x00c0, 0x7362, 0x85ff,
5486 + 0x0040, 0x731e, 0x6020, 0xa106, 0x00c0, 0x7362, 0x703c, 0xac06,
5487 + 0x00c0, 0x7332, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x7033,
5488 + 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b,
5489 + 0x0000, 0x037f, 0x7038, 0xac36, 0x00c0, 0x7338, 0x660c, 0x763a,
5490 + 0x7034, 0xac36, 0x00c0, 0x7346, 0x2c00, 0xaf36, 0x0040, 0x7344,
5491 + 0x2f00, 0x7036, 0x0078, 0x7346, 0x7037, 0x0000, 0x660c, 0x067e,
5492 + 0x2c00, 0xaf06, 0x0040, 0x734f, 0x7e0e, 0x0078, 0x7350, 0x2678,
5493 + 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x735a,
5494 + 0x1078, 0xa1ca, 0x1078, 0x8ec6, 0x87ff, 0x00c0, 0x7371, 0x0c7f,
5495 + 0x0078, 0x7302, 0x2c78, 0x600c, 0x2060, 0x0078, 0x7302, 0xa006,
5496 + 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
5497 + 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa7bd, 0x0001, 0x0078, 0x7368,
5498 + 0x0e7e, 0x2071, 0xa8b1, 0x2001, 0xa600, 0x2004, 0xa086, 0x0002,
5499 + 0x00c0, 0x7386, 0x7007, 0x0005, 0x0078, 0x7388, 0x7007, 0x0000,
5500 + 0x0e7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, 0x027e, 0x007e,
5501 + 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x2c10, 0x7638, 0x2660,
5502 + 0x2678, 0x8cff, 0x0040, 0x73c8, 0x2200, 0xac06, 0x00c0, 0x73c3,
5503 + 0x7038, 0xac36, 0x00c0, 0x73a6, 0x660c, 0x763a, 0x7034, 0xac36,
5504 + 0x00c0, 0x73b4, 0x2c00, 0xaf36, 0x0040, 0x73b2, 0x2f00, 0x7036,
5505 + 0x0078, 0x73b4, 0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0040,
5506 + 0x73bc, 0x7e0e, 0x0078, 0x73bd, 0x2678, 0x600f, 0x0000, 0xa085,
5507 + 0x0001, 0x0078, 0x73c8, 0x2c78, 0x600c, 0x2060, 0x0078, 0x7399,
5508 + 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c,
5509 + 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091,
5510 + 0x8000, 0x2071, 0xa8b1, 0x760c, 0x2660, 0x2678, 0x8cff, 0x0040,
5511 + 0x7469, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x7464,
5512 + 0x7024, 0xac06, 0x00c0, 0x740f, 0x2069, 0x0100, 0x68c0, 0xa005,
5513 + 0x0040, 0x743d, 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378,
5514 + 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000,
5515 + 0x0040, 0x7406, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
5516 + 0x6824, 0xd084, 0x0040, 0x740e, 0x6827, 0x0001, 0x037f, 0x700c,
5517 + 0xac36, 0x00c0, 0x7415, 0x660c, 0x760e, 0x7008, 0xac36, 0x00c0,
5518 + 0x7423, 0x2c00, 0xaf36, 0x0040, 0x7421, 0x2f00, 0x700a, 0x0078,
5519 + 0x7423, 0x700b, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040,
5520 + 0x742c, 0x7e0e, 0x0078, 0x742d, 0x2678, 0x600f, 0x0000, 0x1078,
5521 + 0x8eec, 0x00c0, 0x7441, 0x1078, 0x28a6, 0x1078, 0x8f00, 0x00c0,
5522 + 0x745d, 0x1078, 0x7c83, 0x0078, 0x745d, 0x1078, 0x7378, 0x0078,
5523 + 0x740f, 0x1078, 0x8f00, 0x00c0, 0x7449, 0x1078, 0x7c83, 0x0078,
5524 + 0x745d, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x745d, 0x601c,
5525 + 0xa086, 0x0003, 0x00c0, 0x7471, 0x6837, 0x0103, 0x6b4a, 0x6847,
5526 + 0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x1078,
5527 + 0x7233, 0x0c7f, 0x0078, 0x73de, 0x2c78, 0x600c, 0x2060, 0x0078,
5528 + 0x73de, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
5529 + 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x745d, 0x1078, 0xa1ca,
5530 + 0x0078, 0x745d, 0x037e, 0x157e, 0x137e, 0x147e, 0x3908, 0xa006,
5531 + 0xa190, 0x0020, 0x221c, 0xa39e, 0x2676, 0x00c0, 0x748b, 0x8210,
5532 + 0x8000, 0x0078, 0x7482, 0xa005, 0x0040, 0x7497, 0x20a9, 0x0020,
5533 + 0x2198, 0x8211, 0xa282, 0x0020, 0x20c8, 0x20a0, 0x53a3, 0x147f,
5534 + 0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078,
5535 + 0x67c2, 0x20a3, 0x0200, 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3,
5536 + 0x0000, 0x20a3, 0x0000, 0x2099, 0xa8a5, 0x20a9, 0x0004, 0x53a6,
5537 + 0x20a3, 0x0004, 0x20a3, 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000,
5538 + 0x1078, 0x6dfb, 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2,
5539 + 0x20a3, 0x0214, 0x20a3, 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084,
5540 + 0xff00, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
5541 + 0x20a3, 0x0000, 0x7810, 0xa084, 0x00ff, 0x20a2, 0x7828, 0x20a2,
5542 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x6dfb,
5543 + 0x007c, 0x0d7e, 0x017e, 0x2f68, 0x2009, 0x0035, 0x1078, 0x91bc,
5544 + 0x00c0, 0x7551, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x1300,
5545 + 0x20a3, 0x0000, 0x7828, 0x2068, 0x681c, 0xa086, 0x0003, 0x0040,
5546 + 0x752d, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e, 0x00c0,
5547 + 0x7507, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0078, 0x7542, 0xa286,
5548 + 0x007f, 0x00c0, 0x7511, 0x20a3, 0x00ff, 0x20a3, 0xfffd, 0x0078,
5549 + 0x7542, 0xd2bc, 0x0040, 0x7527, 0xa286, 0x0080, 0x00c0, 0x751e,
5550 + 0x20a3, 0x00ff, 0x20a3, 0xfffc, 0x0078, 0x7542, 0xa2e8, 0xa735,
5551 + 0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x0078, 0x7542, 0x20a3,
5552 + 0x0000, 0x6098, 0x20a2, 0x0078, 0x7542, 0x7818, 0xa080, 0x0028,
5553 + 0x2004, 0xa082, 0x007e, 0x0048, 0x753e, 0x0d7e, 0x2069, 0xa61b,
5554 + 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x7542, 0x20a3, 0x0000,
5555 + 0x6030, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a3, 0x0000,
5556 + 0x20a3, 0x0000, 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x017f, 0x0d7f,
5557 + 0x007c, 0x7817, 0x0001, 0x7803, 0x0006, 0x017f, 0x0d7f, 0x007c,
5558 + 0x0d7e, 0x027e, 0x7928, 0x2168, 0x691c, 0xa186, 0x0006, 0x0040,
5559 + 0x757a, 0xa186, 0x0003, 0x0040, 0x75d5, 0xa186, 0x0005, 0x0040,
5560 + 0x75b8, 0xa186, 0x0004, 0x0040, 0x75a8, 0xa186, 0x0008, 0x0040,
5561 + 0x75c2, 0x7807, 0x0037, 0x7813, 0x1700, 0x1078, 0x7640, 0x027f,
5562 + 0x0d7f, 0x007c, 0x1078, 0x75fd, 0x2009, 0x4000, 0x6800, 0x0079,
5563 + 0x7581, 0x7594, 0x75a2, 0x7596, 0x75a2, 0x759d, 0x7594, 0x7594,
5564 + 0x75a2, 0x75a2, 0x75a2, 0x75a2, 0x7594, 0x7594, 0x7594, 0x7594,
5565 + 0x7594, 0x75a2, 0x7594, 0x75a2, 0x1078, 0x1332, 0x6824, 0xd0e4,
5566 + 0x0040, 0x759d, 0xd0cc, 0x0040, 0x75a0, 0xa00e, 0x0078, 0x75a2,
5567 + 0x2009, 0x2000, 0x6828, 0x20a2, 0x682c, 0x20a2, 0x0078, 0x75f3,
5568 + 0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000,
5569 + 0x6a00, 0xa286, 0x0002, 0x00c0, 0x75b6, 0xa00e, 0x0078, 0x75f3,
5570 + 0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000,
5571 + 0x0078, 0x75f3, 0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000,
5572 + 0x2009, 0x4000, 0xa286, 0x0005, 0x0040, 0x75d2, 0xa286, 0x0002,
5573 + 0x00c0, 0x75d3, 0xa00e, 0x0078, 0x75f3, 0x1078, 0x75fd, 0x6810,
5574 + 0x2068, 0x697c, 0x6810, 0xa112, 0x6980, 0x6814, 0xa103, 0x20a2,
5575 + 0x22a2, 0x7928, 0xa180, 0x0000, 0x2004, 0xa08e, 0x0002, 0x0040,
5576 + 0x75f1, 0xa08e, 0x0004, 0x0040, 0x75f1, 0x2009, 0x4000, 0x0078,
5577 + 0x75f3, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, 0x0018,
5578 + 0x1078, 0x6dfb, 0x027f, 0x0d7f, 0x007c, 0x037e, 0x047e, 0x057e,
5579 + 0x067e, 0x20a1, 0x020b, 0x1078, 0x67c2, 0xa006, 0x20a3, 0x0200,
5580 + 0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, 0x0028,
5581 + 0x2004, 0xa092, 0x007e, 0x0048, 0x7623, 0x0d7e, 0x2069, 0xa61b,
5582 + 0x2d2c, 0x8d68, 0x2d34, 0xa0e8, 0xa735, 0x2d6c, 0x6b10, 0x6c14,
5583 + 0x0d7f, 0x0078, 0x7629, 0x2019, 0x0000, 0x6498, 0x2029, 0x0000,
5584 + 0x6630, 0x7828, 0xa080, 0x0007, 0x2004, 0xa086, 0x0003, 0x00c0,
5585 + 0x7637, 0x25a2, 0x26a2, 0x23a2, 0x24a2, 0x0078, 0x763b, 0x23a2,
5586 + 0x24a2, 0x25a2, 0x26a2, 0x067f, 0x057f, 0x047f, 0x037f, 0x007c,
5587 + 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000,
5588 + 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb,
5589 + 0x007c, 0x20a1, 0x020b, 0x1078, 0x6728, 0x20a3, 0x1400, 0x20a3,
5590 + 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, 0x20a2, 0x782c,
5591 + 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, 0x20a3, 0x0000,
5592 + 0x60c3, 0x0010, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078,
5593 + 0x67b9, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0x20a2, 0x7810,
5594 + 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x147e, 0x20a1,
5595 + 0x020b, 0x1078, 0x7689, 0x60c3, 0x0000, 0x1078, 0x6dfb, 0x147f,
5596 + 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
5597 + 0x2004, 0xd0bc, 0x0040, 0x76a6, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c,
5598 + 0x6810, 0xa085, 0x0300, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b,
5599 + 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x76ae, 0x20a3, 0x0300,
5600 + 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0819,
5601 + 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x2fa2,
5602 + 0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x007c, 0x2061,
5603 + 0xad00, 0x2a70, 0x7064, 0x704a, 0x704f, 0xad00, 0x007c, 0x0e7e,
5604 + 0x127e, 0x2071, 0xa600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0010,
5605 + 0x0048, 0x76f9, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040,
5606 + 0x76e5, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8, 0x76e1, 0x0078,
5607 + 0x76d4, 0x2061, 0xad00, 0x0078, 0x76d4, 0x6003, 0x0008, 0x8529,
5608 + 0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8, 0x76f5, 0x754e,
5609 + 0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704f, 0xad00, 0x0078,
5610 + 0x76f0, 0xa006, 0x0078, 0x76f2, 0x0e7e, 0x2071, 0xa600, 0x7548,
5611 + 0xa582, 0x0010, 0x0048, 0x772a, 0x704c, 0x2060, 0x6000, 0xa086,
5612 + 0x0000, 0x0040, 0x7717, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8,
5613 + 0x7713, 0x0078, 0x7706, 0x2061, 0xad00, 0x0078, 0x7706, 0x6003,
5614 + 0x0008, 0x8529, 0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8,
5615 + 0x7726, 0x754e, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704f, 0xad00,
5616 + 0x0078, 0x7722, 0xa006, 0x0078, 0x7724, 0xac82, 0xad00, 0x1048,
5617 + 0x1332, 0x2001, 0xa616, 0x2004, 0xac02, 0x10c8, 0x1332, 0xa006,
5618 + 0x6006, 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000,
5619 + 0x6003, 0x0000, 0x6022, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036,
5620 + 0x603a, 0x603e, 0x2061, 0xa600, 0x6048, 0x8000, 0x604a, 0xa086,
5621 + 0x0001, 0x0040, 0x7754, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
5622 + 0x62d1, 0x127f, 0x0078, 0x7753, 0x601c, 0xa084, 0x000f, 0x0079,
5623 + 0x7761, 0x776a, 0x777b, 0x7797, 0x77b3, 0x920e, 0x922a, 0x9246,
5624 + 0x776a, 0x777b, 0xa186, 0x0013, 0x00c0, 0x7773, 0x1078, 0x61cd,
5625 + 0x1078, 0x62d1, 0x007c, 0xa18e, 0x0047, 0x00c0, 0x777a, 0xa016,
5626 + 0x1078, 0x15fa, 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8,
5627 + 0x1332, 0x1079, 0x7785, 0x067f, 0x007c, 0x7795, 0x7b00, 0x7cb2,
5628 + 0x7795, 0x7d36, 0x77cf, 0x7795, 0x7795, 0x7a92, 0x80f6, 0x7795,
5629 + 0x7795, 0x7795, 0x7795, 0x7795, 0x7795, 0x1078, 0x1332, 0x067e,
5630 + 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x77a1, 0x067f,
5631 + 0x007c, 0x77b1, 0x87c3, 0x77b1, 0x77b1, 0x77b1, 0x77b1, 0x77b1,
5632 + 0x77b1, 0x8766, 0x8951, 0x77b1, 0x87f3, 0x8879, 0x87f3, 0x8879,
5633 + 0x77b1, 0x1078, 0x1332, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8,
5634 + 0x1332, 0x1079, 0x77bd, 0x067f, 0x007c, 0x77cd, 0x813d, 0x820e,
5635 + 0x8368, 0x84e4, 0x77cd, 0x77cd, 0x77cd, 0x8116, 0x870e, 0x8712,
5636 + 0x77cd, 0x77cd, 0x77cd, 0x77cd, 0x8742, 0x1078, 0x1332, 0xa1b6,
5637 + 0x0015, 0x00c0, 0x77d7, 0x1078, 0x772d, 0x0078, 0x77dd, 0xa1b6,
5638 + 0x0016, 0x10c0, 0x1332, 0x1078, 0x772d, 0x007c, 0x20a9, 0x000e,
5639 + 0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420,
5640 + 0x9398, 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002,
5641 + 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x77ec,
5642 + 0x0e7e, 0x1078, 0x8d06, 0x0040, 0x7803, 0x6010, 0x2070, 0x7007,
5643 + 0x0000, 0x7037, 0x0103, 0x0e7f, 0x1078, 0x772d, 0x007c, 0x0d7e,
5644 + 0x037e, 0x7330, 0xa386, 0x0200, 0x00c0, 0x7814, 0x6018, 0x2068,
5645 + 0x6813, 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0040, 0x781e,
5646 + 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x1078, 0x772d,
5647 + 0x037f, 0x0d7f, 0x007c, 0x017e, 0x20a9, 0x002a, 0xae80, 0x000c,
5648 + 0x2098, 0x6010, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x20a9, 0x002a,
5649 + 0x6010, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x20a0, 0x53a3,
5650 + 0x0e7e, 0x6010, 0x2004, 0x2070, 0x7037, 0x0103, 0x0e7f, 0x1078,
5651 + 0x772d, 0x017f, 0x007c, 0x0e7e, 0x0d7e, 0x603f, 0x0000, 0x2c68,
5652 + 0x017e, 0x2009, 0x0035, 0x1078, 0x91bc, 0x017f, 0x00c0, 0x785f,
5653 + 0x027e, 0x6228, 0x2268, 0x027f, 0x2071, 0xab8c, 0x6b1c, 0xa386,
5654 + 0x0003, 0x0040, 0x7863, 0xa386, 0x0006, 0x0040, 0x7867, 0x1078,
5655 + 0x772d, 0x0078, 0x7869, 0x1078, 0x786c, 0x0078, 0x7869, 0x1078,
5656 + 0x7938, 0x0d7f, 0x0e7f, 0x007c, 0x0f7e, 0x6810, 0x2078, 0xa186,
5657 + 0x0015, 0x0040, 0x791d, 0xa18e, 0x0016, 0x00c0, 0x7936, 0x700c,
5658 + 0xa08c, 0xff00, 0xa186, 0x1700, 0x0040, 0x7882, 0xa186, 0x0300,
5659 + 0x00c0, 0x78f8, 0x8fff, 0x00c0, 0x788c, 0x6800, 0xa086, 0x000f,
5660 + 0x0040, 0x78db, 0x0078, 0x7934, 0x6808, 0xa086, 0xffff, 0x00c0,
5661 + 0x7921, 0x784c, 0xa084, 0x0060, 0xa086, 0x0020, 0x00c0, 0x78a2,
5662 + 0x797c, 0x7810, 0xa106, 0x00c0, 0x7921, 0x7980, 0x7814, 0xa106,
5663 + 0x00c0, 0x7921, 0x1078, 0x8eb9, 0x6830, 0x7852, 0x784c, 0xc0dc,
5664 + 0xc0f4, 0xc0d4, 0x784e, 0x027e, 0xa00e, 0x6a14, 0x2001, 0x000a,
5665 + 0x1078, 0x5c1c, 0x7854, 0xa20a, 0x0048, 0x78b7, 0x8011, 0x7a56,
5666 + 0x82ff, 0x027f, 0x00c0, 0x78c3, 0x0c7e, 0x2d60, 0x1078, 0x8ae0,
5667 + 0x0c7f, 0x0078, 0x7934, 0x0c7e, 0x0d7e, 0x2f68, 0x6838, 0xd0fc,
5668 + 0x00c0, 0x78ce, 0x1078, 0x4353, 0x0078, 0x78d0, 0x1078, 0x4431,
5669 + 0x0d7f, 0x0c7f, 0x00c0, 0x7921, 0x0c7e, 0x2d60, 0x1078, 0x772d,
5670 + 0x0c7f, 0x0078, 0x7934, 0x0c7e, 0x1078, 0x9187, 0x0040, 0x78f1,
5671 + 0x6013, 0x0000, 0x6818, 0x601a, 0x601f, 0x0003, 0x6904, 0x0c7e,
5672 + 0x2d60, 0x1078, 0x772d, 0x0c7f, 0x1078, 0x775c, 0x0c7f, 0x0078,
5673 + 0x7934, 0x2001, 0xa8a4, 0x2004, 0x683e, 0x0c7f, 0x0078, 0x7934,
5674 + 0x7008, 0xa086, 0x000b, 0x00c0, 0x7912, 0x6018, 0x200c, 0xc1bc,
5675 + 0x2102, 0x0c7e, 0x2d60, 0x7853, 0x0003, 0x6007, 0x0085, 0x6003,
5676 + 0x000b, 0x601f, 0x0002, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f,
5677 + 0x0078, 0x7934, 0x700c, 0xa086, 0x2a00, 0x00c0, 0x7921, 0x2001,
5678 + 0xa8a4, 0x2004, 0x683e, 0x0078, 0x7934, 0x1078, 0x7953, 0x0078,
5679 + 0x7936, 0x8fff, 0x1040, 0x1332, 0x0c7e, 0x0d7e, 0x2d60, 0x2f68,
5680 + 0x6837, 0x0103, 0x684b, 0x0003, 0x1078, 0x89cf, 0x1078, 0x8eb9,
5681 + 0x1078, 0x8ec6, 0x0d7f, 0x0c7f, 0x1078, 0x772d, 0x0f7f, 0x007c,
5682 + 0xa186, 0x0015, 0x00c0, 0x7942, 0x2001, 0xa8a4, 0x2004, 0x683e,
5683 + 0x0078, 0x7950, 0xa18e, 0x0016, 0x00c0, 0x7952, 0x0c7e, 0x2d00,
5684 + 0x2060, 0x1078, 0xa495, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x0c7f,
5685 + 0x1078, 0x772d, 0x007c, 0x027e, 0x037e, 0x047e, 0x7228, 0x7c80,
5686 + 0x7b7c, 0xd2f4, 0x0040, 0x7962, 0x2001, 0xa8a4, 0x2004, 0x683e,
5687 + 0x0078, 0x79c6, 0x0c7e, 0x2d60, 0x1078, 0x89f3, 0x0c7f, 0x6804,
5688 + 0xa086, 0x0050, 0x00c0, 0x797a, 0x0c7e, 0x2d00, 0x2060, 0x6003,
5689 + 0x0001, 0x6007, 0x0050, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f,
5690 + 0x0078, 0x79c6, 0x6800, 0xa086, 0x000f, 0x0040, 0x799c, 0x8fff,
5691 + 0x1040, 0x1332, 0x6824, 0xd0dc, 0x00c0, 0x799c, 0x6800, 0xa086,
5692 + 0x0004, 0x00c0, 0x79a1, 0x784c, 0xd0ac, 0x0040, 0x79a1, 0x784c,
5693 + 0xc0dc, 0xc0f4, 0x784e, 0x7850, 0xc0f4, 0xc0fc, 0x7852, 0x2001,
5694 + 0x0001, 0x682e, 0x0078, 0x79c0, 0x2001, 0x0007, 0x682e, 0x0078,
5695 + 0x79c0, 0x784c, 0xd0b4, 0x00c0, 0x79ae, 0xd0ac, 0x0040, 0x799c,
5696 + 0x784c, 0xd0f4, 0x00c0, 0x799c, 0x0078, 0x798f, 0xd2ec, 0x00c0,
5697 + 0x799c, 0x7024, 0xa306, 0x00c0, 0x79b9, 0x7020, 0xa406, 0x0040,
5698 + 0x799c, 0x7020, 0x6836, 0x7024, 0x683a, 0x2001, 0x0005, 0x682e,
5699 + 0x1078, 0x8ff0, 0x1078, 0x62d1, 0x0078, 0x79c8, 0x1078, 0x772d,
5700 + 0x047f, 0x037f, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x027e, 0x6034,
5701 + 0x2068, 0x6a1c, 0xa286, 0x0007, 0x0040, 0x7a35, 0xa286, 0x0002,
5702 + 0x0040, 0x7a35, 0xa286, 0x0000, 0x0040, 0x7a35, 0x6808, 0x6338,
5703 + 0xa306, 0x00c0, 0x7a35, 0x2071, 0xab8c, 0xa186, 0x0015, 0x0040,
5704 + 0x7a2f, 0xa18e, 0x0016, 0x00c0, 0x7a02, 0x6030, 0xa084, 0x00ff,
5705 + 0xa086, 0x0001, 0x00c0, 0x7a02, 0x700c, 0xa086, 0x2a00, 0x00c0,
5706 + 0x7a02, 0x6034, 0xa080, 0x0009, 0x200c, 0xc1dd, 0xc1f5, 0x2102,
5707 + 0x0078, 0x7a2f, 0x0c7e, 0x6034, 0x2060, 0x6104, 0xa186, 0x004b,
5708 + 0x0040, 0x7a22, 0xa186, 0x004c, 0x0040, 0x7a22, 0xa186, 0x004d,
5709 + 0x0040, 0x7a22, 0xa186, 0x004e, 0x0040, 0x7a22, 0xa186, 0x0052,
5710 + 0x0040, 0x7a22, 0x6010, 0x2068, 0x1078, 0x8d06, 0x1040, 0x1332,
5711 + 0x6853, 0x0003, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002,
5712 + 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f, 0x0078, 0x7a35, 0x6034,
5713 + 0x2068, 0x2001, 0xa8a4, 0x2004, 0x683e, 0x1078, 0x772d, 0x027f,
5714 + 0x0d7f, 0x0e7f, 0x007c, 0x0d7e, 0x20a9, 0x000e, 0x2e98, 0x6010,
5715 + 0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x00c0, 0x7a73, 0x6018, 0x2068,
5716 + 0x157e, 0x037e, 0x027e, 0xae90, 0x000c, 0xa290, 0x0004, 0x20a9,
5717 + 0x0004, 0xad98, 0x000a, 0x1078, 0x80de, 0x027f, 0x037f, 0x157f,
5718 + 0x00c0, 0x7a76, 0x157e, 0x037e, 0x027e, 0xae90, 0x000c, 0xa290,
5719 + 0x0008, 0x20a9, 0x0004, 0xad98, 0x0006, 0x1078, 0x80de, 0x027f,
5720 + 0x037f, 0x157f, 0x00c0, 0x7a76, 0x7038, 0x680a, 0x703c, 0x680e,
5721 + 0x6800, 0xc08d, 0x6802, 0x0d7f, 0x0078, 0x77f8, 0x1078, 0x2880,
5722 + 0x0c7e, 0x1078, 0x76c7, 0x2f00, 0x601a, 0x6013, 0x0000, 0x601f,
5723 + 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x1078,
5724 + 0x4502, 0x1078, 0x4535, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0c7f,
5725 + 0x0078, 0x7a73, 0x2100, 0xa1b2, 0x0044, 0x10c8, 0x1332, 0xa1b2,
5726 + 0x0040, 0x00c8, 0x7af7, 0x0079, 0x7a9d, 0x7aeb, 0x7adf, 0x7aeb,
5727 + 0x7aeb, 0x7aeb, 0x7aeb, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5728 + 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5729 + 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5730 + 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7aeb, 0x7aeb,
5731 + 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7add,
5732 + 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb,
5733 + 0x7aeb, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add,
5734 + 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7add, 0x1078, 0x1332, 0x6003,
5735 + 0x0001, 0x6106, 0x1078, 0x5dd7, 0x127e, 0x2091, 0x8000, 0x1078,
5736 + 0x62d1, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x5dd7,
5737 + 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x2600,
5738 + 0x0079, 0x7afa, 0x7afe, 0x7afe, 0x7afe, 0x7aeb, 0x1078, 0x1332,
5739 + 0x6004, 0xa0b2, 0x0044, 0x10c8, 0x1332, 0xa1b6, 0x0013, 0x00c0,
5740 + 0x7b10, 0xa0b2, 0x0040, 0x00c8, 0x7c79, 0x2008, 0x0079, 0x7bbf,
5741 + 0xa1b6, 0x0027, 0x00c0, 0x7b7c, 0x1078, 0x61cd, 0x6004, 0x1078,
5742 + 0x8eec, 0x0040, 0x7b2d, 0x1078, 0x8f00, 0x0040, 0x7b74, 0xa08e,
5743 + 0x0021, 0x0040, 0x7b78, 0xa08e, 0x0022, 0x0040, 0x7b74, 0xa08e,
5744 + 0x003d, 0x0040, 0x7b78, 0x0078, 0x7b6f, 0x1078, 0x28a6, 0x2001,
5745 + 0x0007, 0x1078, 0x4502, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078,
5746 + 0x7c83, 0xa186, 0x007e, 0x00c0, 0x7b42, 0x2001, 0xa633, 0x2014,
5747 + 0xc285, 0x2202, 0x017e, 0x027e, 0x037e, 0x2110, 0x027e, 0x2019,
5748 + 0x0028, 0x1078, 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f, 0x027f,
5749 + 0x017f, 0x017e, 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, 0x1078,
5750 + 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x0c7e, 0x6018,
5751 + 0xa065, 0x0040, 0x7b65, 0x1078, 0x47e9, 0x0c7f, 0x2c08, 0x1078,
5752 + 0x9f8b, 0x077f, 0x037f, 0x027f, 0x017f, 0x1078, 0x457f, 0x1078,
5753 + 0x772d, 0x1078, 0x62d1, 0x007c, 0x1078, 0x7c83, 0x0078, 0x7b6f,
5754 + 0x1078, 0x7ca6, 0x0078, 0x7b6f, 0xa186, 0x0014, 0x00c0, 0x7b73,
5755 + 0x1078, 0x61cd, 0x1078, 0x2880, 0x1078, 0x8eec, 0x00c0, 0x7b9b,
5756 + 0x1078, 0x28a6, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078, 0x7c83,
5757 + 0xa186, 0x007e, 0x00c0, 0x7b99, 0x2001, 0xa633, 0x200c, 0xc185,
5758 + 0x2102, 0x0078, 0x7b6f, 0x1078, 0x8f00, 0x00c0, 0x7ba3, 0x1078,
5759 + 0x7c83, 0x0078, 0x7b6f, 0x6004, 0xa08e, 0x0032, 0x00c0, 0x7bb4,
5760 + 0x0e7e, 0x0f7e, 0x2071, 0xa682, 0x2079, 0x0000, 0x1078, 0x2bd7,
5761 + 0x0f7f, 0x0e7f, 0x0078, 0x7b6f, 0x6004, 0xa08e, 0x0021, 0x0040,
5762 + 0x7b9f, 0xa08e, 0x0022, 0x1040, 0x7c83, 0x0078, 0x7b6f, 0x7c01,
5763 + 0x7c03, 0x7c07, 0x7c0b, 0x7c0f, 0x7c13, 0x7bff, 0x7bff, 0x7bff,
5764 + 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff,
5765 + 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff,
5766 + 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7c17, 0x7c29, 0x7bff,
5767 + 0x7c2b, 0x7c29, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7c29,
5768 + 0x7c29, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff,
5769 + 0x7bff, 0x7c5c, 0x7c29, 0x7bff, 0x7c23, 0x7bff, 0x7bff, 0x7bff,
5770 + 0x7c25, 0x7bff, 0x7bff, 0x7bff, 0x7c29, 0x7bff, 0x7bff, 0x1078,
5771 + 0x1332, 0x0078, 0x7c29, 0x2001, 0x000b, 0x0078, 0x7c36, 0x2001,
5772 + 0x0003, 0x0078, 0x7c36, 0x2001, 0x0005, 0x0078, 0x7c36, 0x2001,
5773 + 0x0001, 0x0078, 0x7c36, 0x2001, 0x0009, 0x0078, 0x7c36, 0x1078,
5774 + 0x61cd, 0x6003, 0x0005, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x1078,
5775 + 0x62d1, 0x0078, 0x7c35, 0x0078, 0x7c29, 0x0078, 0x7c29, 0x1078,
5776 + 0x4502, 0x0078, 0x7c6e, 0x1078, 0x61cd, 0x6003, 0x0004, 0x2001,
5777 + 0xa8a2, 0x2004, 0x6016, 0x1078, 0x62d1, 0x007c, 0x1078, 0x4502,
5778 + 0x1078, 0x61cd, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002,
5779 + 0x037e, 0x2019, 0xa65d, 0x2304, 0xa084, 0xff00, 0x00c0, 0x7c4d,
5780 + 0x2019, 0xa8a2, 0x231c, 0x0078, 0x7c56, 0x8007, 0xa09a, 0x0004,
5781 + 0x0048, 0x7c48, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f,
5782 + 0x1078, 0x62d1, 0x0078, 0x7c35, 0x0e7e, 0x0f7e, 0x2071, 0xa682,
5783 + 0x2079, 0x0000, 0x1078, 0x2bd7, 0x0f7f, 0x0e7f, 0x1078, 0x61cd,
5784 + 0x1078, 0x772d, 0x1078, 0x62d1, 0x0078, 0x7c35, 0x1078, 0x61cd,
5785 + 0x6003, 0x0002, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x1078, 0x62d1,
5786 + 0x007c, 0x2600, 0x2008, 0x0079, 0x7c7d, 0x7c81, 0x7c81, 0x7c81,
5787 + 0x7c6e, 0x1078, 0x1332, 0x0e7e, 0x1078, 0x8d06, 0x0040, 0x7c9f,
5788 + 0x6010, 0x2070, 0x7038, 0xd0fc, 0x0040, 0x7c9f, 0x7007, 0x0000,
5789 + 0x017e, 0x6004, 0xa08e, 0x0021, 0x0040, 0x7ca1, 0xa08e, 0x003d,
5790 + 0x0040, 0x7ca1, 0x017f, 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f,
5791 + 0x007c, 0x017f, 0x1078, 0x7ca6, 0x0078, 0x7c9f, 0x0e7e, 0xacf0,
5792 + 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x7023, 0x8001,
5793 + 0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0x00ff,
5794 + 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1332, 0x6604, 0xa6b6, 0x0043,
5795 + 0x00c0, 0x7cc6, 0x1078, 0x9134, 0x0078, 0x7d25, 0x6604, 0xa6b6,
5796 + 0x0033, 0x00c0, 0x7ccf, 0x1078, 0x90d8, 0x0078, 0x7d25, 0x6604,
5797 + 0xa6b6, 0x0028, 0x00c0, 0x7cd8, 0x1078, 0x8f2f, 0x0078, 0x7d25,
5798 + 0x6604, 0xa6b6, 0x0029, 0x00c0, 0x7ce1, 0x1078, 0x8f49, 0x0078,
5799 + 0x7d25, 0x6604, 0xa6b6, 0x001f, 0x00c0, 0x7cea, 0x1078, 0x77de,
5800 + 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0000, 0x00c0, 0x7cf3, 0x1078,
5801 + 0x7a3b, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0022, 0x00c0, 0x7cfc,
5802 + 0x1078, 0x7807, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0035, 0x00c0,
5803 + 0x7d05, 0x1078, 0x7843, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0039,
5804 + 0x00c0, 0x7d0e, 0x1078, 0x79cc, 0x0078, 0x7d25, 0x6604, 0xa6b6,
5805 + 0x003d, 0x00c0, 0x7d17, 0x1078, 0x7823, 0x0078, 0x7d25, 0xa1b6,
5806 + 0x0015, 0x00c0, 0x7d1f, 0x1079, 0x7d2a, 0x0078, 0x7d25, 0xa1b6,
5807 + 0x0016, 0x00c0, 0x7d26, 0x1079, 0x7e7f, 0x007c, 0x1078, 0x7773,
5808 + 0x0078, 0x7d25, 0x7d4e, 0x7d51, 0x7d4e, 0x7d9c, 0x7d4e, 0x7e13,
5809 + 0x7e8b, 0x7d4e, 0x7d4e, 0x7e57, 0x7d4e, 0x7e6d, 0xa1b6, 0x0048,
5810 + 0x0040, 0x7d42, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078,
5811 + 0x15fa, 0x007c, 0x0e7e, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070,
5812 + 0x7037, 0x0103, 0x0e7f, 0x1078, 0x772d, 0x007c, 0x0005, 0x0005,
5813 + 0x007c, 0x0e7e, 0x2071, 0xa600, 0x7080, 0xa086, 0x0074, 0x00c0,
5814 + 0x7d85, 0x1078, 0x9f5f, 0x00c0, 0x7d77, 0x0d7e, 0x6018, 0x2068,
5815 + 0x7030, 0xd08c, 0x0040, 0x7d6a, 0x6800, 0xd0bc, 0x0040, 0x7d6a,
5816 + 0xc0c5, 0x6802, 0x1078, 0x7d89, 0x0d7f, 0x2001, 0x0006, 0x1078,
5817 + 0x4502, 0x1078, 0x28a6, 0x1078, 0x772d, 0x0078, 0x7d87, 0x2001,
5818 + 0x000a, 0x1078, 0x4502, 0x1078, 0x28a6, 0x6003, 0x0001, 0x6007,
5819 + 0x0001, 0x1078, 0x5dd7, 0x0078, 0x7d87, 0x1078, 0x7dff, 0x0e7f,
5820 + 0x007c, 0x6800, 0xd084, 0x0040, 0x7d9b, 0x2001, 0x0000, 0x1078,
5821 + 0x44ee, 0x2069, 0xa652, 0x6804, 0xd0a4, 0x0040, 0x7d9b, 0x2001,
5822 + 0x0006, 0x1078, 0x4535, 0x007c, 0x0d7e, 0x2011, 0xa620, 0x2204,
5823 + 0xa086, 0x0074, 0x00c0, 0x7dfb, 0x6018, 0x2068, 0x6aa0, 0xa286,
5824 + 0x007e, 0x00c0, 0x7daf, 0x1078, 0x7f9b, 0x0078, 0x7dfd, 0x1078,
5825 + 0x7f91, 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, 0xa286, 0x0080,
5826 + 0x00c0, 0x7dd3, 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6010, 0xa005,
5827 + 0x0040, 0x7dc9, 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6833,
5828 + 0x0200, 0x2001, 0x0006, 0x1078, 0x4502, 0x1078, 0x28a6, 0x1078,
5829 + 0x772d, 0x0078, 0x7dfd, 0x0e7e, 0x2071, 0xa633, 0x2e04, 0xd09c,
5830 + 0x0040, 0x7dee, 0x2071, 0xab80, 0x7108, 0x720c, 0xa18c, 0x00ff,
5831 + 0x00c0, 0x7de6, 0xa284, 0xff00, 0x0040, 0x7dee, 0x6018, 0x2070,
5832 + 0x70a0, 0xd0bc, 0x00c0, 0x7dee, 0x7112, 0x7216, 0x0e7f, 0x2001,
5833 + 0x0004, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078,
5834 + 0x5dd7, 0x0078, 0x7dfd, 0x1078, 0x7dff, 0x0d7f, 0x007c, 0x2001,
5835 + 0x0007, 0x1078, 0x4502, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003,
5836 + 0x00c0, 0x7e0e, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078, 0x28a6,
5837 + 0x1078, 0x772d, 0x007c, 0x0e7e, 0x2071, 0xa600, 0x7080, 0xa086,
5838 + 0x0014, 0x00c0, 0x7e51, 0x7000, 0xa086, 0x0003, 0x00c0, 0x7e26,
5839 + 0x6010, 0xa005, 0x00c0, 0x7e26, 0x1078, 0x3699, 0x0d7e, 0x6018,
5840 + 0x2068, 0x1078, 0x4649, 0x1078, 0x7d89, 0x0d7f, 0x1078, 0x8043,
5841 + 0x00c0, 0x7e51, 0x0d7e, 0x6018, 0x2068, 0x6890, 0x0d7f, 0xa005,
5842 + 0x0040, 0x7e51, 0x2001, 0x0006, 0x1078, 0x4502, 0x0e7e, 0x6010,
5843 + 0xa005, 0x0040, 0x7e4a, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103,
5844 + 0x7033, 0x0200, 0x0e7f, 0x1078, 0x28a6, 0x1078, 0x772d, 0x0078,
5845 + 0x7e55, 0x1078, 0x7c83, 0x1078, 0x7dff, 0x0e7f, 0x007c, 0x2011,
5846 + 0xa620, 0x2204, 0xa086, 0x0014, 0x00c0, 0x7e6a, 0x2001, 0x0002,
5847 + 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x5dd7,
5848 + 0x0078, 0x7e6c, 0x1078, 0x7dff, 0x007c, 0x2011, 0xa620, 0x2204,
5849 + 0xa086, 0x0004, 0x00c0, 0x7e7c, 0x2001, 0x0007, 0x1078, 0x4502,
5850 + 0x1078, 0x772d, 0x0078, 0x7e7e, 0x1078, 0x7dff, 0x007c, 0x7d4e,
5851 + 0x7e97, 0x7d4e, 0x7ed2, 0x7d4e, 0x7f44, 0x7e8b, 0x7d4e, 0x7d4e,
5852 + 0x7f59, 0x7d4e, 0x7f6c, 0x6604, 0xa686, 0x0003, 0x0040, 0x7e13,
5853 + 0xa6b6, 0x001e, 0x00c0, 0x7e96, 0x1078, 0x772d, 0x007c, 0x0d7e,
5854 + 0x0c7e, 0x1078, 0x7f7f, 0x00c0, 0x7ead, 0x2001, 0x0000, 0x1078,
5855 + 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007,
5856 + 0x0002, 0x1078, 0x5dd7, 0x0078, 0x7ecf, 0x2009, 0xab8e, 0x2104,
5857 + 0xa086, 0x0009, 0x00c0, 0x7ec2, 0x6018, 0x2068, 0x6840, 0xa084,
5858 + 0x00ff, 0xa005, 0x0040, 0x7ecd, 0x8001, 0x6842, 0x6017, 0x000a,
5859 + 0x0078, 0x7ecf, 0x2009, 0xab8f, 0x2104, 0xa084, 0xff00, 0xa086,
5860 + 0x1900, 0x00c0, 0x7ecd, 0x0078, 0x7ea1, 0x1078, 0x7dff, 0x0c7f,
5861 + 0x0d7f, 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7ee6, 0x2001, 0x0000,
5862 + 0x1078, 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003, 0x0001,
5863 + 0x6007, 0x0002, 0x1078, 0x5dd7, 0x0078, 0x7f12, 0x1078, 0x7c83,
5864 + 0x2009, 0xab8e, 0x2134, 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0040,
5865 + 0x7f13, 0xa686, 0x000b, 0x0040, 0x7f10, 0x2009, 0xab8f, 0x2104,
5866 + 0xa084, 0xff00, 0x00c0, 0x7f00, 0xa686, 0x0009, 0x0040, 0x7f13,
5867 + 0xa086, 0x1900, 0x00c0, 0x7f10, 0xa686, 0x0009, 0x0040, 0x7f13,
5868 + 0x2001, 0x0004, 0x1078, 0x4502, 0x1078, 0x772d, 0x0078, 0x7f12,
5869 + 0x1078, 0x7dff, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06,
5870 + 0x0040, 0x7f21, 0x6838, 0xd0fc, 0x0040, 0x7f21, 0x0d7f, 0x0078,
5871 + 0x7f10, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040,
5872 + 0x7f32, 0x8001, 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f,
5873 + 0x0078, 0x7f12, 0x68a0, 0xa086, 0x007e, 0x00c0, 0x7f3f, 0x0e7e,
5874 + 0x2071, 0xa600, 0x1078, 0x42b8, 0x0e7f, 0x0078, 0x7f41, 0x1078,
5875 + 0x2880, 0x0d7f, 0x0078, 0x7f10, 0x1078, 0x7f8e, 0x00c0, 0x7f54,
5876 + 0x2001, 0x0004, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0003,
5877 + 0x1078, 0x5dd7, 0x0078, 0x7f58, 0x1078, 0x7c83, 0x1078, 0x7dff,
5878 + 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7f69, 0x2001, 0x0008, 0x1078,
5879 + 0x4502, 0x6003, 0x0001, 0x6007, 0x0005, 0x1078, 0x5dd7, 0x0078,
5880 + 0x7f6b, 0x1078, 0x7dff, 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7f7c,
5881 + 0x2001, 0x000a, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0001,
5882 + 0x1078, 0x5dd7, 0x0078, 0x7f7e, 0x1078, 0x7dff, 0x007c, 0x2009,
5883 + 0xab8e, 0x2104, 0xa086, 0x0003, 0x00c0, 0x7f8d, 0x2009, 0xab8f,
5884 + 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001,
5885 + 0x007c, 0x0c7e, 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x45d6,
5886 + 0x017f, 0x0c7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x037e, 0x017e,
5887 + 0x6018, 0x2068, 0x2071, 0xa633, 0x2e04, 0xa085, 0x0003, 0x2072,
5888 + 0x1078, 0x8014, 0x0040, 0x7fd9, 0x2009, 0xa633, 0x2104, 0xc0cd,
5889 + 0x200a, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x7fc2, 0xa006,
5890 + 0x2020, 0x2009, 0x002a, 0x1078, 0xa21d, 0x2001, 0xa60c, 0x200c,
5891 + 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x1078, 0x284f,
5892 + 0x2071, 0xa600, 0x1078, 0x2677, 0x0c7e, 0x157e, 0x20a9, 0x0081,
5893 + 0x2009, 0x007f, 0x1078, 0x298e, 0x8108, 0x00f0, 0x7fd2, 0x157f,
5894 + 0x0c7f, 0x1078, 0x7f91, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071,
5895 + 0xab80, 0x2079, 0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0xa61b,
5896 + 0x206a, 0x78e6, 0x007e, 0x8e70, 0x2e04, 0x2069, 0xa61c, 0x206a,
5897 + 0x78ea, 0xa084, 0xff00, 0x017f, 0xa105, 0x2009, 0xa626, 0x200a,
5898 + 0x2069, 0xab8e, 0x2071, 0xa89e, 0x6810, 0x2072, 0x6814, 0x7006,
5899 + 0x6818, 0x700a, 0x681c, 0x700e, 0x1078, 0x906e, 0x2001, 0x0006,
5900 + 0x1078, 0x4502, 0x1078, 0x28a6, 0x1078, 0x772d, 0x017f, 0x037f,
5901 + 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x027e, 0x037e, 0x0e7e, 0x157e,
5902 + 0x2019, 0xa626, 0x231c, 0x83ff, 0x0040, 0x803e, 0x2071, 0xab80,
5903 + 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, 0xff00, 0xa205, 0xa306,
5904 + 0x00c0, 0x803e, 0x2011, 0xab96, 0xad98, 0x000a, 0x20a9, 0x0004,
5905 + 0x1078, 0x80de, 0x00c0, 0x803e, 0x2011, 0xab9a, 0xad98, 0x0006,
5906 + 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x803e, 0x157f, 0x0e7f,
5907 + 0x037f, 0x027f, 0x007c, 0x0e7e, 0x2071, 0xab8c, 0x7004, 0xa086,
5908 + 0x0014, 0x00c0, 0x8066, 0x7008, 0xa086, 0x0800, 0x00c0, 0x8066,
5909 + 0x700c, 0xd0ec, 0x0040, 0x8064, 0xa084, 0x0f00, 0xa086, 0x0100,
5910 + 0x00c0, 0x8064, 0x7024, 0xd0a4, 0x00c0, 0x8061, 0xd0ac, 0x0040,
5911 + 0x8064, 0xa006, 0x0078, 0x8066, 0xa085, 0x0001, 0x0e7f, 0x007c,
5912 + 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e,
5913 + 0x127e, 0x2091, 0x8000, 0x2029, 0xa8ba, 0x252c, 0x2021, 0xa8c0,
5914 + 0x2424, 0x2061, 0xad00, 0x2071, 0xa600, 0x7248, 0x7064, 0xa202,
5915 + 0x00c8, 0x80cc, 0x1078, 0xa242, 0x0040, 0x80c4, 0x671c, 0xa786,
5916 + 0x0001, 0x0040, 0x80c4, 0xa786, 0x0007, 0x0040, 0x80c4, 0x2500,
5917 + 0xac06, 0x0040, 0x80c4, 0x2400, 0xac06, 0x0040, 0x80c4, 0x0c7e,
5918 + 0x6000, 0xa086, 0x0004, 0x00c0, 0x809f, 0x1078, 0x1757, 0xa786,
5919 + 0x0008, 0x00c0, 0x80ae, 0x1078, 0x8f00, 0x00c0, 0x80ae, 0x0c7f,
5920 + 0x1078, 0x7c83, 0x1078, 0x8ec6, 0x0078, 0x80c4, 0x6010, 0x2068,
5921 + 0x1078, 0x8d06, 0x0040, 0x80c1, 0xa786, 0x0003, 0x00c0, 0x80d6,
5922 + 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078,
5923 + 0x8eb9, 0x1078, 0x8ec6, 0x0c7f, 0xace0, 0x0010, 0x7058, 0xac02,
5924 + 0x00c8, 0x80cc, 0x0078, 0x807d, 0x127f, 0x007f, 0x027f, 0x047f,
5925 + 0x057f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006,
5926 + 0x00c0, 0x80b8, 0x1078, 0xa1ca, 0x0078, 0x80c1, 0x220c, 0x2304,
5927 + 0xa106, 0x00c0, 0x80e9, 0x8210, 0x8318, 0x00f0, 0x80de, 0xa006,
5928 + 0x007c, 0x2304, 0xa102, 0x0048, 0x80f1, 0x2001, 0x0001, 0x0078,
5929 + 0x80f3, 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a,
5930 + 0x0044, 0x10c8, 0x1332, 0x1078, 0x8eec, 0x0040, 0x8105, 0x1078,
5931 + 0x8f00, 0x0040, 0x8112, 0x0078, 0x810b, 0x1078, 0x28a6, 0x1078,
5932 + 0x8f00, 0x0040, 0x8112, 0x1078, 0x61cd, 0x1078, 0x772d, 0x1078,
5933 + 0x62d1, 0x007c, 0x1078, 0x7c83, 0x0078, 0x810b, 0xa182, 0x0040,
5934 + 0x0079, 0x811a, 0x812d, 0x812d, 0x812d, 0x812d, 0x812d, 0x812d,
5935 + 0x812d, 0x812d, 0x812d, 0x812d, 0x812d, 0x812f, 0x812f, 0x812f,
5936 + 0x812f, 0x812d, 0x812d, 0x812d, 0x812f, 0x1078, 0x1332, 0x600b,
5937 + 0xffff, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091,
5938 + 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0,
5939 + 0x8146, 0x6004, 0xa082, 0x0040, 0x0079, 0x81d1, 0xa186, 0x0027,
5940 + 0x00c0, 0x8168, 0x1078, 0x61cd, 0x1078, 0x2880, 0x0d7e, 0x6110,
5941 + 0x2168, 0x1078, 0x8d06, 0x0040, 0x8162, 0x6837, 0x0103, 0x684b,
5942 + 0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x1078, 0x4a73,
5943 + 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c,
5944 + 0xa186, 0x0014, 0x00c0, 0x8171, 0x6004, 0xa082, 0x0040, 0x0079,
5945 + 0x8199, 0xa186, 0x0046, 0x0040, 0x817d, 0xa186, 0x0045, 0x0040,
5946 + 0x817d, 0xa186, 0x0047, 0x10c0, 0x1332, 0x2001, 0x0109, 0x2004,
5947 + 0xd084, 0x0040, 0x8196, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e,
5948 + 0x027e, 0x1078, 0x5c56, 0x027f, 0x017f, 0x007f, 0x127f, 0x6000,
5949 + 0xa086, 0x0002, 0x00c0, 0x8196, 0x0078, 0x820e, 0x1078, 0x7773,
5950 + 0x007c, 0x81ae, 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ac,
5951 + 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ca, 0x81ca, 0x81ca, 0x81ca,
5952 + 0x81ac, 0x81ca, 0x81ac, 0x81ca, 0x1078, 0x1332, 0x1078, 0x61cd,
5953 + 0x0d7e, 0x6110, 0x2168, 0x1078, 0x8d06, 0x0040, 0x81c4, 0x6837,
5954 + 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ec, 0x6852,
5955 + 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d, 0x1078,
5956 + 0x62d1, 0x007c, 0x1078, 0x61cd, 0x1078, 0x772d, 0x1078, 0x62d1,
5957 + 0x007c, 0x81e6, 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81e4,
5958 + 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81f8, 0x81f8, 0x81f8, 0x81f8,
5959 + 0x81e4, 0x8207, 0x81e4, 0x81f8, 0x1078, 0x1332, 0x1078, 0x61cd,
5960 + 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002, 0x1078, 0x62d1,
5961 + 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x007c,
5962 + 0x1078, 0x61cd, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x2001, 0xa8a4,
5963 + 0x2004, 0x603e, 0x6003, 0x000f, 0x1078, 0x62d1, 0x007c, 0x1078,
5964 + 0x61cd, 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c, 0xa182, 0x0040,
5965 + 0x0079, 0x8212, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x8227,
5966 + 0x8327, 0x8359, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225,
5967 + 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x1078, 0x1332, 0x0e7e,
5968 + 0x0d7e, 0x603f, 0x0000, 0x2071, 0xab80, 0x7124, 0x610a, 0x2071,
5969 + 0xab8c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0040,
5970 + 0x82e9, 0xa68c, 0x0c00, 0x0040, 0x825e, 0x0f7e, 0x2c78, 0x1078,
5971 + 0x4963, 0x0f7f, 0x0040, 0x825a, 0x684c, 0xd0ac, 0x0040, 0x825a,
5972 + 0x6024, 0xd0dc, 0x00c0, 0x825a, 0x6850, 0xd0bc, 0x00c0, 0x825a,
5973 + 0x7318, 0x6814, 0xa306, 0x00c0, 0x8301, 0x731c, 0x6810, 0xa306,
5974 + 0x00c0, 0x8301, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff,
5975 + 0xa186, 0x0002, 0x0040, 0x8291, 0xa186, 0x0028, 0x00c0, 0x826e,
5976 + 0x1078, 0x8eda, 0x684b, 0x001c, 0x0078, 0x8293, 0xd6dc, 0x0040,
5977 + 0x828a, 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0040, 0x8288, 0x6914,
5978 + 0x6a10, 0x2100, 0xa205, 0x0040, 0x8288, 0x7018, 0xa106, 0x00c0,
5979 + 0x8285, 0x701c, 0xa206, 0x0040, 0x8288, 0x6962, 0x6a5e, 0xc6dc,
5980 + 0x0078, 0x8293, 0xd6d4, 0x0040, 0x8291, 0x684b, 0x0007, 0x0078,
5981 + 0x8293, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4,
5982 + 0x0040, 0x82bc, 0xa686, 0x0100, 0x00c0, 0x82a7, 0x2001, 0xab99,
5983 + 0x2004, 0xa005, 0x00c0, 0x82a7, 0xc6c4, 0x0078, 0x8236, 0x7328,
5984 + 0x732c, 0x6b56, 0x83ff, 0x0040, 0x82bc, 0xa38a, 0x0009, 0x0048,
5985 + 0x82b3, 0x2019, 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90,
5986 + 0x0019, 0x1078, 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x8317, 0x7124,
5987 + 0x695a, 0x81ff, 0x0040, 0x8317, 0xa192, 0x0021, 0x00c8, 0x82d5,
5988 + 0x2071, 0xab98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078,
5989 + 0x89e2, 0x1078, 0x91f4, 0x0078, 0x8317, 0x6838, 0xd0fc, 0x0040,
5990 + 0x82de, 0x2009, 0x0020, 0x695a, 0x0078, 0x82c8, 0x0f7e, 0x2d78,
5991 + 0x1078, 0x897a, 0x0f7f, 0x1078, 0x91f4, 0x1078, 0x89cf, 0x0078,
5992 + 0x8319, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x8307,
5993 + 0x684c, 0xd0ac, 0x0040, 0x8307, 0x6024, 0xd0dc, 0x00c0, 0x8307,
5994 + 0x6850, 0xd0bc, 0x00c0, 0x8307, 0x6810, 0x6914, 0xa105, 0x0040,
5995 + 0x8307, 0x1078, 0x8fbf, 0x0d7f, 0x0e7f, 0x0078, 0x8326, 0x684b,
5996 + 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x8317,
5997 + 0x6810, 0x6914, 0xa115, 0x0040, 0x8317, 0x1078, 0x84d5, 0x1078,
5998 + 0x4a73, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x1078, 0x8f89,
5999 + 0x0d7f, 0x0e7f, 0x00c0, 0x8326, 0x1078, 0x772d, 0x007c, 0x0f7e,
6000 + 0x6003, 0x0003, 0x2079, 0xab8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08,
6001 + 0x6010, 0x2078, 0x784c, 0xd0ac, 0x0040, 0x833e, 0x6003, 0x0002,
6002 + 0x0f7f, 0x007c, 0x2130, 0x2228, 0x0078, 0x834a, 0x2400, 0x797c,
6003 + 0xa10a, 0x2300, 0x7a80, 0xa213, 0x2600, 0xa102, 0x2500, 0xa203,
6004 + 0x0048, 0x833a, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x603f,
6005 + 0x0000, 0x2c10, 0x1078, 0x1cf0, 0x1078, 0x5df6, 0x1078, 0x639b,
6006 + 0x007c, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0004, 0x6110,
6007 + 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x15fa, 0x007c,
6008 + 0xa182, 0x0040, 0x0079, 0x836c, 0x837f, 0x837f, 0x837f, 0x837f,
6009 + 0x837f, 0x8381, 0x8424, 0x837f, 0x837f, 0x843a, 0x84ab, 0x837f,
6010 + 0x837f, 0x837f, 0x837f, 0x84ba, 0x837f, 0x837f, 0x837f, 0x1078,
6011 + 0x1332, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0xab8c, 0x6110,
6012 + 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e,
6013 + 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x841f,
6014 + 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x83a2, 0x7018, 0x7862,
6015 + 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x841f, 0x1078, 0x138b,
6016 + 0x1040, 0x1332, 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837,
6017 + 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46,
6018 + 0xa68c, 0x0c00, 0x0040, 0x83c0, 0x7318, 0x6b62, 0x731c, 0x6b5e,
6019 + 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x83dc, 0xa186, 0x0028,
6020 + 0x00c0, 0x83ce, 0x684b, 0x001c, 0x0078, 0x83de, 0xd6dc, 0x0040,
6021 + 0x83d5, 0x684b, 0x0015, 0x0078, 0x83de, 0xd6d4, 0x0040, 0x83dc,
6022 + 0x684b, 0x0007, 0x0078, 0x83de, 0x684b, 0x0000, 0x6f4e, 0x7850,
6023 + 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x83fc, 0x7328,
6024 + 0x732c, 0x6b56, 0x83ff, 0x0040, 0x83fc, 0xa38a, 0x0009, 0x0048,
6025 + 0x83f3, 0x2019, 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90,
6026 + 0x0019, 0x1078, 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x841f, 0x7124,
6027 + 0x695a, 0x81ff, 0x0040, 0x841f, 0xa192, 0x0021, 0x00c8, 0x8413,
6028 + 0x2071, 0xab98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078,
6029 + 0x89e2, 0x0078, 0x841f, 0x7838, 0xd0fc, 0x0040, 0x841c, 0x2009,
6030 + 0x0020, 0x695a, 0x0078, 0x8408, 0x2d78, 0x1078, 0x897a, 0x0d7f,
6031 + 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079,
6032 + 0xab8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12,
6033 + 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x1cf0, 0x1078,
6034 + 0x6df4, 0x007c, 0x0d7e, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f,
6035 + 0x0040, 0x8446, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002,
6036 + 0x1078, 0x627a, 0x1078, 0x639b, 0x6110, 0x2168, 0x694c, 0xd1e4,
6037 + 0x0040, 0x84a9, 0xd1cc, 0x0040, 0x8480, 0x6948, 0x6838, 0xd0fc,
6038 + 0x0040, 0x8478, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90,
6039 + 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304,
6040 + 0x2012, 0x8318, 0x8210, 0x00f0, 0x8467, 0x157f, 0x007f, 0x6852,
6041 + 0x007f, 0x684e, 0x017f, 0x2168, 0x1078, 0x13b4, 0x0078, 0x84a3,
6042 + 0x017e, 0x1078, 0x13b4, 0x0d7f, 0x1078, 0x89cf, 0x0078, 0x84a3,
6043 + 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0040,
6044 + 0x849f, 0xa086, 0x0028, 0x00c0, 0x8491, 0x684b, 0x001c, 0x0078,
6045 + 0x84a1, 0xd1dc, 0x0040, 0x8498, 0x684b, 0x0015, 0x0078, 0x84a1,
6046 + 0xd1d4, 0x0040, 0x849f, 0x684b, 0x0007, 0x0078, 0x84a1, 0x684b,
6047 + 0x0000, 0x1078, 0x4a73, 0x1078, 0x8f89, 0x00c0, 0x84a9, 0x1078,
6048 + 0x772d, 0x0d7f, 0x007c, 0x2019, 0x0001, 0x1078, 0x7058, 0x6003,
6049 + 0x0002, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x1078, 0x627a, 0x1078,
6050 + 0x639b, 0x007c, 0x1078, 0x627a, 0x1078, 0x2880, 0x0d7e, 0x6110,
6051 + 0x2168, 0x1078, 0x8d06, 0x0040, 0x84cf, 0x6837, 0x0103, 0x684b,
6052 + 0x0029, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f,
6053 + 0x1078, 0x772d, 0x1078, 0x639b, 0x007c, 0x684b, 0x0015, 0xd1fc,
6054 + 0x0040, 0x84e1, 0x684b, 0x0007, 0x8002, 0x8000, 0x810a, 0xa189,
6055 + 0x0000, 0x6962, 0x685e, 0x007c, 0xa182, 0x0040, 0x0079, 0x84e8,
6056 + 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fd, 0x84fb, 0x85d0,
6057 + 0x85dc, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb,
6058 + 0x84fb, 0x84fb, 0x84fb, 0x1078, 0x1332, 0x077e, 0x0f7e, 0x0e7e,
6059 + 0x0d7e, 0x2071, 0xab8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff,
6060 + 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x851b, 0xa684,
6061 + 0x00ff, 0x00c0, 0x851b, 0x6024, 0xd0f4, 0x0040, 0x851b, 0x1078,
6062 + 0x8fbf, 0x0078, 0x85cb, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218,
6063 + 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x85c0, 0xa694,
6064 + 0xff00, 0xa284, 0x0c00, 0x0040, 0x8531, 0x7018, 0x7862, 0x701c,
6065 + 0x785e, 0xa284, 0x0300, 0x0040, 0x85bd, 0xa686, 0x0100, 0x00c0,
6066 + 0x8543, 0x2001, 0xab99, 0x2004, 0xa005, 0x00c0, 0x8543, 0xc6c4,
6067 + 0x7e46, 0x0078, 0x8524, 0x1078, 0x138b, 0x1040, 0x1332, 0x2d00,
6068 + 0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838,
6069 + 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00,
6070 + 0x0040, 0x855e, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff,
6071 + 0xa186, 0x0002, 0x0040, 0x857a, 0xa186, 0x0028, 0x00c0, 0x856c,
6072 + 0x684b, 0x001c, 0x0078, 0x857c, 0xd6dc, 0x0040, 0x8573, 0x684b,
6073 + 0x0015, 0x0078, 0x857c, 0xd6d4, 0x0040, 0x857a, 0x684b, 0x0007,
6074 + 0x0078, 0x857c, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854,
6075 + 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x859a, 0x7328, 0x732c, 0x6b56,
6076 + 0x83ff, 0x0040, 0x859a, 0xa38a, 0x0009, 0x0048, 0x8591, 0x2019,
6077 + 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90, 0x0019, 0x1078,
6078 + 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x85bd, 0x7124, 0x695a, 0x81ff,
6079 + 0x0040, 0x85bd, 0xa192, 0x0021, 0x00c8, 0x85b1, 0x2071, 0xab98,
6080 + 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x89e2, 0x0078,
6081 + 0x85bd, 0x7838, 0xd0fc, 0x0040, 0x85ba, 0x2009, 0x0020, 0x695a,
6082 + 0x0078, 0x85a6, 0x2d78, 0x1078, 0x897a, 0xd6dc, 0x00c0, 0x85c3,
6083 + 0xa006, 0x0078, 0x85c9, 0x2001, 0x0001, 0x2071, 0xab8c, 0x7218,
6084 + 0x731c, 0x1078, 0x1653, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c,
6085 + 0x2001, 0xa8a4, 0x2004, 0x603e, 0x20e1, 0x0005, 0x3d18, 0x3e20,
6086 + 0x2c10, 0x1078, 0x15fa, 0x007c, 0x2001, 0xa8a4, 0x2004, 0x603e,
6087 + 0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040,
6088 + 0x870c, 0x603f, 0x0000, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f,
6089 + 0x0040, 0x8622, 0x6814, 0x6910, 0xa115, 0x0040, 0x8622, 0x6a60,
6090 + 0xa206, 0x00c0, 0x85ff, 0x685c, 0xa106, 0x0040, 0x8622, 0x684c,
6091 + 0xc0e4, 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, 0x0000,
6092 + 0x6024, 0xd0f4, 0x00c0, 0x8617, 0x697c, 0x6810, 0xa102, 0x603a,
6093 + 0x6980, 0x6814, 0xa103, 0x6036, 0x6024, 0xc0f5, 0x6026, 0x0d7e,
6094 + 0x6018, 0x2068, 0x683c, 0x8000, 0x683e, 0x0d7f, 0x1078, 0x8fbf,
6095 + 0x0078, 0x870c, 0x694c, 0xd1cc, 0x0040, 0x86d1, 0x6948, 0x6838,
6096 + 0xd0fc, 0x0040, 0x8689, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e,
6097 + 0x0f7e, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0040,
6098 + 0x865c, 0xa086, 0x0028, 0x00c0, 0x8643, 0x684b, 0x001c, 0x784b,
6099 + 0x001c, 0x0078, 0x8667, 0xd1dc, 0x0040, 0x8653, 0x684b, 0x0015,
6100 + 0x784b, 0x0015, 0x1078, 0x916c, 0x0040, 0x8651, 0x7944, 0xc1dc,
6101 + 0x7946, 0x0078, 0x8667, 0xd1d4, 0x0040, 0x865c, 0x684b, 0x0007,
6102 + 0x784b, 0x0007, 0x0078, 0x8667, 0x684c, 0xd0ac, 0x0040, 0x8667,
6103 + 0x6810, 0x6914, 0xa115, 0x0040, 0x8667, 0x1078, 0x84d5, 0x6848,
6104 + 0x784a, 0x6860, 0x7862, 0x685c, 0x785e, 0xad90, 0x000d, 0xaf98,
6105 + 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318,
6106 + 0x8210, 0x00f0, 0x8675, 0x157f, 0x0f7f, 0x007f, 0x6852, 0x007f,
6107 + 0x684e, 0x1078, 0x91f4, 0x017f, 0x2168, 0x1078, 0x13b4, 0x0078,
6108 + 0x8706, 0x017e, 0x0f7e, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6,
6109 + 0x0002, 0x0040, 0x86b6, 0xa086, 0x0028, 0x00c0, 0x869d, 0x684b,
6110 + 0x001c, 0x784b, 0x001c, 0x0078, 0x86c1, 0xd1dc, 0x0040, 0x86ad,
6111 + 0x684b, 0x0015, 0x784b, 0x0015, 0x1078, 0x916c, 0x0040, 0x86ab,
6112 + 0x7944, 0xc1dc, 0x7946, 0x0078, 0x86c1, 0xd1d4, 0x0040, 0x86b6,
6113 + 0x684b, 0x0007, 0x784b, 0x0007, 0x0078, 0x86c1, 0x684c, 0xd0ac,
6114 + 0x0040, 0x86c1, 0x6810, 0x6914, 0xa115, 0x0040, 0x86c1, 0x1078,
6115 + 0x84d5, 0x6860, 0x7862, 0x685c, 0x785e, 0x684c, 0x784e, 0x0f7f,
6116 + 0x1078, 0x13b4, 0x0d7f, 0x1078, 0x91f4, 0x1078, 0x89cf, 0x0078,
6117 + 0x8706, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002,
6118 + 0x0040, 0x86f7, 0xa086, 0x0028, 0x00c0, 0x86e2, 0x684b, 0x001c,
6119 + 0x0078, 0x8704, 0xd1dc, 0x0040, 0x86f0, 0x684b, 0x0015, 0x1078,
6120 + 0x916c, 0x0040, 0x86ee, 0x6944, 0xc1dc, 0x6946, 0x0078, 0x8704,
6121 + 0xd1d4, 0x0040, 0x86f7, 0x684b, 0x0007, 0x0078, 0x8704, 0x684b,
6122 + 0x0000, 0x684c, 0xd0ac, 0x0040, 0x8704, 0x6810, 0x6914, 0xa115,
6123 + 0x0040, 0x8704, 0x1078, 0x84d5, 0x1078, 0x4a73, 0x1078, 0x8f89,
6124 + 0x00c0, 0x870c, 0x1078, 0x772d, 0x0d7f, 0x007c, 0x1078, 0x61cd,
6125 + 0x0078, 0x8714, 0x1078, 0x627a, 0x1078, 0x8d06, 0x0040, 0x8733,
6126 + 0x0d7e, 0x6110, 0x2168, 0x6837, 0x0103, 0x2009, 0xa60c, 0x210c,
6127 + 0xd18c, 0x00c0, 0x873e, 0xd184, 0x00c0, 0x873a, 0x6108, 0x694a,
6128 + 0xa18e, 0x0029, 0x00c0, 0x872e, 0x1078, 0xa4e2, 0x6847, 0x0000,
6129 + 0x1078, 0x4a73, 0x0d7f, 0x1078, 0x772d, 0x1078, 0x62d1, 0x1078,
6130 + 0x639b, 0x007c, 0x684b, 0x0004, 0x0078, 0x872e, 0x684b, 0x0004,
6131 + 0x0078, 0x872e, 0xa182, 0x0040, 0x0079, 0x8746, 0x8759, 0x8759,
6132 + 0x8759, 0x8759, 0x8759, 0x875b, 0x8759, 0x875e, 0x8759, 0x8759,
6133 + 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759,
6134 + 0x8759, 0x1078, 0x1332, 0x1078, 0x772d, 0x007c, 0x007e, 0x027e,
6135 + 0xa016, 0x1078, 0x15fa, 0x027f, 0x007f, 0x007c, 0xa182, 0x0085,
6136 + 0x0079, 0x876a, 0x8773, 0x8771, 0x8771, 0x877f, 0x8771, 0x8771,
6137 + 0x8771, 0x1078, 0x1332, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a,
6138 + 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x027e,
6139 + 0x057e, 0x0d7e, 0x0e7e, 0x2071, 0xab80, 0x7224, 0x6212, 0x7220,
6140 + 0x1078, 0x8cf2, 0x0040, 0x87a4, 0x2268, 0x6800, 0xa086, 0x0000,
6141 + 0x0040, 0x87a4, 0x6018, 0x6d18, 0xa52e, 0x00c0, 0x87a4, 0x0c7e,
6142 + 0x2d60, 0x1078, 0x89f3, 0x0c7f, 0x0040, 0x87a4, 0x6803, 0x0002,
6143 + 0x6007, 0x0086, 0x0078, 0x87a6, 0x6007, 0x0087, 0x6003, 0x0001,
6144 + 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0f7e, 0x2278, 0x1078, 0x4963,
6145 + 0x0f7f, 0x0040, 0x87be, 0x6824, 0xd0ec, 0x0040, 0x87be, 0x0c7e,
6146 + 0x2260, 0x603f, 0x0000, 0x1078, 0x8fbf, 0x0c7f, 0x0e7f, 0x0d7f,
6147 + 0x057f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x87d4, 0x6004,
6148 + 0xa08a, 0x0085, 0x1048, 0x1332, 0xa08a, 0x008c, 0x10c8, 0x1332,
6149 + 0xa082, 0x0085, 0x0079, 0x87e3, 0xa186, 0x0027, 0x0040, 0x87dc,
6150 + 0xa186, 0x0014, 0x10c0, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6151 + 0x1078, 0x62d1, 0x007c, 0x87ea, 0x87ec, 0x87ec, 0x87ea, 0x87ea,
6152 + 0x87ea, 0x87ea, 0x1078, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6153 + 0x1078, 0x62d1, 0x007c, 0xa186, 0x0013, 0x00c0, 0x87fd, 0x6004,
6154 + 0xa082, 0x0085, 0x2008, 0x0078, 0x8838, 0xa186, 0x0027, 0x00c0,
6155 + 0x8820, 0x1078, 0x61cd, 0x1078, 0x2880, 0x0d7e, 0x6010, 0x2068,
6156 + 0x1078, 0x8d06, 0x0040, 0x8816, 0x6837, 0x0103, 0x6847, 0x0000,
6157 + 0x684b, 0x0029, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078,
6158 + 0x772d, 0x1078, 0x62d1, 0x007c, 0x1078, 0x7773, 0x0078, 0x881b,
6159 + 0xa186, 0x0014, 0x00c0, 0x881c, 0x1078, 0x61cd, 0x0d7e, 0x6010,
6160 + 0x2068, 0x1078, 0x8d06, 0x0040, 0x8816, 0x6837, 0x0103, 0x6847,
6161 + 0x0000, 0x684b, 0x0006, 0x6850, 0xc0ec, 0x6852, 0x0078, 0x8812,
6162 + 0x0079, 0x883a, 0x8843, 0x8841, 0x8841, 0x8841, 0x8841, 0x8841,
6163 + 0x885e, 0x1078, 0x1332, 0x1078, 0x61cd, 0x6030, 0xa08c, 0xff00,
6164 + 0x810f, 0xa186, 0x0039, 0x0040, 0x8851, 0xa186, 0x0035, 0x00c0,
6165 + 0x8855, 0x2001, 0xa8a2, 0x0078, 0x8857, 0x2001, 0xa8a3, 0x2004,
6166 + 0x6016, 0x6003, 0x000c, 0x1078, 0x62d1, 0x007c, 0x1078, 0x61cd,
6167 + 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x886c,
6168 + 0xa186, 0x0035, 0x00c0, 0x8870, 0x2001, 0xa8a2, 0x0078, 0x8872,
6169 + 0x2001, 0xa8a3, 0x2004, 0x6016, 0x6003, 0x000e, 0x1078, 0x62d1,
6170 + 0x007c, 0xa182, 0x008c, 0x00c8, 0x8883, 0xa182, 0x0085, 0x0048,
6171 + 0x8883, 0x0079, 0x8886, 0x1078, 0x7773, 0x007c, 0x888d, 0x888d,
6172 + 0x888d, 0x888d, 0x888f, 0x88ec, 0x888d, 0x1078, 0x1332, 0x0f7e,
6173 + 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x88a2, 0x6030, 0xa08c,
6174 + 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x8903, 0xa186, 0x0035,
6175 + 0x0040, 0x8903, 0x0d7e, 0x1078, 0x8d06, 0x00c0, 0x88ab, 0x1078,
6176 + 0x8eb9, 0x0078, 0x88ce, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x00c0,
6177 + 0x88b3, 0x1078, 0x8eb9, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040,
6178 + 0x88bf, 0x684b, 0x0006, 0xc0ec, 0x6852, 0x0078, 0x88ca, 0xd0bc,
6179 + 0x0040, 0x88c6, 0x684b, 0x0002, 0x0078, 0x88ca, 0x684b, 0x0005,
6180 + 0x1078, 0x8f85, 0x6847, 0x0000, 0x1078, 0x4a73, 0x2c68, 0x1078,
6181 + 0x76c7, 0x0040, 0x88e7, 0x6003, 0x0001, 0x6007, 0x001e, 0x2009,
6182 + 0xab8e, 0x210c, 0x6136, 0x2009, 0xab8f, 0x210c, 0x613a, 0x6918,
6183 + 0x611a, 0x6920, 0x6122, 0x601f, 0x0001, 0x1078, 0x5d8a, 0x2d60,
6184 + 0x1078, 0x772d, 0x0d7f, 0x007c, 0x0f7e, 0x2c78, 0x1078, 0x4963,
6185 + 0x0f7f, 0x0040, 0x8929, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186,
6186 + 0x0035, 0x0040, 0x8903, 0xa186, 0x001e, 0x0040, 0x8903, 0xa186,
6187 + 0x0039, 0x00c0, 0x8929, 0x0d7e, 0x2c68, 0x1078, 0x91bc, 0x00c0,
6188 + 0x894d, 0x1078, 0x76c7, 0x0040, 0x8926, 0x6106, 0x6003, 0x0001,
6189 + 0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, 0x692c, 0x612e,
6190 + 0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, 0x6938, 0x613a,
6191 + 0x6920, 0x6122, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x2d60, 0x0078,
6192 + 0x894d, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x894d,
6193 + 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x893c, 0xc0ec, 0x6852,
6194 + 0x684b, 0x0006, 0x0078, 0x8947, 0xd0bc, 0x0040, 0x8943, 0x684b,
6195 + 0x0002, 0x0078, 0x8947, 0x684b, 0x0005, 0x1078, 0x8f85, 0x6847,
6196 + 0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d,
6197 + 0x007c, 0x017e, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
6198 + 0x8961, 0x6837, 0x0103, 0x684b, 0x0028, 0x6847, 0x0000, 0x1078,
6199 + 0x4a73, 0x0d7f, 0x017f, 0xa186, 0x0013, 0x0040, 0x8973, 0xa186,
6200 + 0x0014, 0x0040, 0x8973, 0xa186, 0x0027, 0x0040, 0x8973, 0x1078,
6201 + 0x7773, 0x0078, 0x8979, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078,
6202 + 0x62d1, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001,
6203 + 0xa182, 0x0101, 0x00c8, 0x8986, 0x0078, 0x8988, 0x2009, 0x0100,
6204 + 0x2130, 0x2069, 0xab98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020,
6205 + 0xaf90, 0x001d, 0x1078, 0x89e2, 0xa6b2, 0x0020, 0x7804, 0xa06d,
6206 + 0x0040, 0x899c, 0x1078, 0x13b4, 0x1078, 0x138b, 0x0040, 0x89c6,
6207 + 0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a,
6208 + 0x003d, 0x00c8, 0x89b2, 0x2608, 0xad90, 0x000f, 0x1078, 0x89e2,
6209 + 0x0078, 0x89c6, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90,
6210 + 0x000f, 0x1078, 0x89e2, 0x0078, 0x899c, 0x0f7f, 0x852f, 0xa5ad,
6211 + 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x89cb, 0x0f7f, 0x852f,
6212 + 0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e,
6213 + 0x8dff, 0x0040, 0x89e0, 0x6804, 0xa07d, 0x0040, 0x89de, 0x6807,
6214 + 0x0000, 0x1078, 0x4a73, 0x2f68, 0x0078, 0x89d3, 0x1078, 0x4a73,
6215 + 0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040, 0x89e8, 0x8108,
6216 + 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0,
6217 + 0x89ea, 0x157f, 0x007c, 0x067e, 0x127e, 0x2091, 0x8000, 0x2031,
6218 + 0x0001, 0x601c, 0xa084, 0x000f, 0x1079, 0x8a0f, 0x127f, 0x067f,
6219 + 0x007c, 0x127e, 0x2091, 0x8000, 0x067e, 0x2031, 0x0000, 0x601c,
6220 + 0xa084, 0x000f, 0x1079, 0x8a0f, 0x067f, 0x127f, 0x007c, 0x8a29,
6221 + 0x8a17, 0x8a24, 0x8a45, 0x8a17, 0x8a24, 0x8a45, 0x8a24, 0x1078,
6222 + 0x1332, 0x037e, 0x2019, 0x0010, 0x1078, 0x9dc7, 0x601f, 0x0006,
6223 + 0x6003, 0x0007, 0x037f, 0x007c, 0xa006, 0x007c, 0xa085, 0x0001,
6224 + 0x007c, 0x0d7e, 0x86ff, 0x00c0, 0x8a40, 0x6010, 0x2068, 0x1078,
6225 + 0x8d06, 0x0040, 0x8a42, 0xa00e, 0x2001, 0x0005, 0x1078, 0x4b51,
6226 + 0x1078, 0x8f85, 0x1078, 0x4a73, 0x1078, 0x772d, 0xa085, 0x0001,
6227 + 0x0d7f, 0x007c, 0xa006, 0x0078, 0x8a40, 0x6000, 0xa08a, 0x0010,
6228 + 0x10c8, 0x1332, 0x1079, 0x8a4d, 0x007c, 0x8a5d, 0x8a82, 0x8a5f,
6229 + 0x8aa5, 0x8a7e, 0x8a5d, 0x8a24, 0x8a29, 0x8a29, 0x8a24, 0x8a24,
6230 + 0x8a24, 0x8a24, 0x8a24, 0x8a24, 0x8a24, 0x1078, 0x1332, 0x86ff,
6231 + 0x00c0, 0x8a7b, 0x601c, 0xa086, 0x0006, 0x0040, 0x8a7b, 0x0d7e,
6232 + 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x8a70, 0x1078, 0x8f85,
6233 + 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078,
6234 + 0x5d8a, 0x1078, 0x62d1, 0xa085, 0x0001, 0x007c, 0x1078, 0x1757,
6235 + 0x0078, 0x8a5f, 0x0e7e, 0x2071, 0xa8b1, 0x7024, 0xac06, 0x00c0,
6236 + 0x8a8b, 0x1078, 0x6fc4, 0x601c, 0xa084, 0x000f, 0xa086, 0x0006,
6237 + 0x00c0, 0x8a9d, 0x087e, 0x097e, 0x2049, 0x0001, 0x2c40, 0x1078,
6238 + 0x7246, 0x097f, 0x087f, 0x0078, 0x8a9f, 0x1078, 0x6ebe, 0x0e7f,
6239 + 0x00c0, 0x8a5f, 0x1078, 0x8a24, 0x007c, 0x037e, 0x0e7e, 0x2071,
6240 + 0xa8b1, 0x703c, 0xac06, 0x00c0, 0x8ab5, 0x2019, 0x0000, 0x1078,
6241 + 0x7058, 0x0e7f, 0x037f, 0x0078, 0x8a5f, 0x1078, 0x738a, 0x0e7f,
6242 + 0x037f, 0x00c0, 0x8a5f, 0x1078, 0x8a24, 0x007c, 0x0c7e, 0x601c,
6243 + 0xa084, 0x000f, 0x1079, 0x8ac6, 0x0c7f, 0x007c, 0x8ad5, 0x8b47,
6244 + 0x8c7f, 0x8ae0, 0x8ec6, 0x8ad5, 0x9db8, 0x772d, 0x8b47, 0x1078,
6245 + 0x8f00, 0x00c0, 0x8ad5, 0x1078, 0x7c83, 0x007c, 0x1078, 0x61cd,
6246 + 0x1078, 0x62d1, 0x1078, 0x772d, 0x007c, 0x6017, 0x0001, 0x007c,
6247 + 0x1078, 0x8d06, 0x0040, 0x8ae8, 0x6010, 0xa080, 0x0019, 0x2c02,
6248 + 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8af0, 0x007c,
6249 + 0x8b00, 0x8b02, 0x8b24, 0x8b36, 0x8b43, 0x8b00, 0x8ad5, 0x8ad5,
6250 + 0x8ad5, 0x8b36, 0x8b36, 0x8b00, 0x8b00, 0x8b00, 0x8b00, 0x8b40,
6251 + 0x1078, 0x1332, 0x0e7e, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052,
6252 + 0x2071, 0xa8b1, 0x7024, 0xac06, 0x0040, 0x8b20, 0x1078, 0x6ebe,
6253 + 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x2001, 0xa8a3,
6254 + 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0e7f, 0x007c,
6255 + 0x6017, 0x0001, 0x0078, 0x8b1e, 0x0d7e, 0x6010, 0x2068, 0x6850,
6256 + 0xc0b5, 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f,
6257 + 0x0002, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x007c, 0x0d7e, 0x6017,
6258 + 0x0001, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x007c,
6259 + 0x1078, 0x772d, 0x007c, 0x1078, 0x1757, 0x0078, 0x8b24, 0x6000,
6260 + 0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8b4f, 0x007c, 0x8b5f,
6261 + 0x8add, 0x8b61, 0x8b5f, 0x8b61, 0x8b61, 0x8ad6, 0x8b5f, 0x8acf,
6262 + 0x8acf, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x1078,
6263 + 0x1332, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff, 0x0d7f,
6264 + 0xa08a, 0x000c, 0x10c8, 0x1332, 0x1079, 0x8b6f, 0x007c, 0x8b7b,
6265 + 0x8c23, 0x8b7d, 0x8bbd, 0x8b7d, 0x8bbd, 0x8b7d, 0x8b8a, 0x8b7b,
6266 + 0x8bbd, 0x8b7b, 0x8ba7, 0x1078, 0x1332, 0x6004, 0xa08e, 0x0016,
6267 + 0x0040, 0x8bb8, 0xa08e, 0x0004, 0x0040, 0x8bb8, 0xa08e, 0x0002,
6268 + 0x0040, 0x8bb8, 0x6004, 0x1078, 0x8f00, 0x0040, 0x8c3e, 0xa08e,
6269 + 0x0021, 0x0040, 0x8c42, 0xa08e, 0x0022, 0x0040, 0x8c3e, 0xa08e,
6270 + 0x003d, 0x0040, 0x8c42, 0xa08e, 0x0039, 0x0040, 0x8c46, 0xa08e,
6271 + 0x0035, 0x0040, 0x8c46, 0xa08e, 0x001e, 0x0040, 0x8bba, 0xa08e,
6272 + 0x0001, 0x00c0, 0x8bb6, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084,
6273 + 0x00ff, 0x0d7f, 0xa086, 0x0006, 0x0040, 0x8bb8, 0x1078, 0x2880,
6274 + 0x1078, 0x7c83, 0x1078, 0x8ec6, 0x007c, 0x0c7e, 0x0d7e, 0x6104,
6275 + 0xa186, 0x0016, 0x0040, 0x8c13, 0xa186, 0x0002, 0x00c0, 0x8be6,
6276 + 0x6018, 0x2068, 0x68a0, 0xd0bc, 0x00c0, 0x8c6a, 0x6840, 0xa084,
6277 + 0x00ff, 0xa005, 0x0040, 0x8be6, 0x8001, 0x6842, 0x6013, 0x0000,
6278 + 0x601f, 0x0007, 0x6017, 0x0398, 0x1078, 0x76c7, 0x0040, 0x8be6,
6279 + 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078, 0x8c13, 0x0d7f, 0x0c7f,
6280 + 0x6004, 0xa08e, 0x0002, 0x00c0, 0x8c04, 0x6018, 0xa080, 0x0028,
6281 + 0x2004, 0xa086, 0x007e, 0x00c0, 0x8c04, 0x2009, 0xa633, 0x2104,
6282 + 0xc085, 0x200a, 0x0e7e, 0x2071, 0xa600, 0x1078, 0x42b8, 0x0e7f,
6283 + 0x1078, 0x7c83, 0x0078, 0x8c08, 0x1078, 0x7c83, 0x1078, 0x2880,
6284 + 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x28a6, 0x127f, 0x0e7f,
6285 + 0x1078, 0x8ec6, 0x007c, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003,
6286 + 0x0001, 0x6007, 0x0002, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0d7f,
6287 + 0x0c7f, 0x0078, 0x8c12, 0x0c7e, 0x0d7e, 0x6104, 0xa186, 0x0016,
6288 + 0x0040, 0x8c13, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005,
6289 + 0x0040, 0x8be6, 0x8001, 0x6842, 0x6003, 0x0001, 0x1078, 0x5dd7,
6290 + 0x1078, 0x62d1, 0x0d7f, 0x0c7f, 0x0078, 0x8c12, 0x1078, 0x7c83,
6291 + 0x0078, 0x8bba, 0x1078, 0x7ca6, 0x0078, 0x8bba, 0x0d7e, 0x2c68,
6292 + 0x6104, 0x1078, 0x91bc, 0x0d7f, 0x0040, 0x8c52, 0x1078, 0x772d,
6293 + 0x0078, 0x8c69, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105,
6294 + 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6038,
6295 + 0x600a, 0x2001, 0xa8a3, 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078,
6296 + 0x62d1, 0x007c, 0x0d7f, 0x0c7f, 0x1078, 0x7c83, 0x1078, 0x2880,
6297 + 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x28a6, 0x6013, 0x0000,
6298 + 0x601f, 0x0007, 0x6017, 0x0398, 0x127f, 0x0e7f, 0x007c, 0x6000,
6299 + 0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8c87, 0x007c, 0x8c97,
6300 + 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97,
6301 + 0x8ad5, 0x8c97, 0x8add, 0x8c99, 0x8add, 0x8ca7, 0x8c97, 0x1078,
6302 + 0x1332, 0x6004, 0xa086, 0x008b, 0x0040, 0x8ca7, 0x6007, 0x008b,
6303 + 0x6003, 0x000d, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x007c, 0x1078,
6304 + 0x8eb9, 0x1078, 0x8d06, 0x0040, 0x8cdf, 0x1078, 0x2880, 0x0d7e,
6305 + 0x1078, 0x8d06, 0x0040, 0x8cc1, 0x6010, 0x2068, 0x6837, 0x0103,
6306 + 0x684b, 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x1078,
6307 + 0x4a73, 0x2c68, 0x1078, 0x76c7, 0x0040, 0x8ccf, 0x6818, 0x601a,
6308 + 0x0c7e, 0x2d60, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x8cd0, 0x2d60,
6309 + 0x0d7f, 0x6013, 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003,
6310 + 0x0001, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0078, 0x8cf1, 0x6030,
6311 + 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x8ceb, 0xa186,
6312 + 0x0035, 0x00c0, 0x8cef, 0x1078, 0x2880, 0x0078, 0x8cc1, 0x1078,
6313 + 0x8ec6, 0x007c, 0xa284, 0x000f, 0x00c0, 0x8d03, 0xa282, 0xad00,
6314 + 0x0048, 0x8d03, 0x2001, 0xa616, 0x2004, 0xa202, 0x00c8, 0x8d03,
6315 + 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x8d02, 0x027e, 0x0e7e,
6316 + 0x2071, 0xa600, 0x6210, 0x705c, 0xa202, 0x0048, 0x8d18, 0x7060,
6317 + 0xa202, 0x00c8, 0x8d18, 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c,
6318 + 0xa006, 0x0078, 0x8d15, 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e,
6319 + 0x2091, 0x8000, 0x2061, 0xad00, 0x2071, 0xa600, 0x7348, 0x7064,
6320 + 0xa302, 0x00c8, 0x8d45, 0x601c, 0xa206, 0x00c0, 0x8d3d, 0x1078,
6321 + 0x902b, 0x0040, 0x8d3d, 0x1078, 0x8f00, 0x00c0, 0x8d39, 0x1078,
6322 + 0x7c83, 0x0c7e, 0x1078, 0x772d, 0x0c7f, 0xace0, 0x0010, 0x7058,
6323 + 0xac02, 0x00c8, 0x8d45, 0x0078, 0x8d26, 0x127f, 0x007f, 0x037f,
6324 + 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x017e, 0xa188, 0xa735,
6325 + 0x210c, 0x81ff, 0x0040, 0x8d59, 0x2061, 0xa9b3, 0x611a, 0x1078,
6326 + 0x2880, 0xa006, 0x0078, 0x8d5e, 0xa085, 0x0001, 0x017f, 0x0c7f,
6327 + 0x0e7f, 0x007c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e,
6328 + 0x1078, 0x76c7, 0x057f, 0x0040, 0x8d7b, 0x6612, 0x651a, 0x601f,
6329 + 0x0003, 0x2009, 0x004b, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f,
6330 + 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8d77, 0x0c7e, 0x057e,
6331 + 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x76c7, 0x057f,
6332 + 0x0040, 0x8da9, 0x6013, 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e,
6333 + 0x2560, 0x1078, 0x47e9, 0x0c7f, 0x1078, 0x5f01, 0x077e, 0x2039,
6334 + 0x0000, 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f, 0x2009,
6335 + 0x004c, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
6336 + 0x007c, 0xa006, 0x0078, 0x8da5, 0x0f7e, 0x0c7e, 0x047e, 0x0c7e,
6337 + 0x1078, 0x76c7, 0x2c78, 0x0c7f, 0x0040, 0x8dc6, 0x7e12, 0x2c00,
6338 + 0x781a, 0x781f, 0x0003, 0x2021, 0x0005, 0x1078, 0x8e11, 0x2f60,
6339 + 0x2009, 0x004d, 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f,
6340 + 0x0f7f, 0x007c, 0x0f7e, 0x0c7e, 0x047e, 0x0c7e, 0x1078, 0x76c7,
6341 + 0x2c78, 0x0c7f, 0x0040, 0x8de4, 0x7e12, 0x2c00, 0x781a, 0x781f,
6342 + 0x0003, 0x2021, 0x0005, 0x1078, 0x8e11, 0x2f60, 0x2009, 0x004e,
6343 + 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f, 0x0f7f, 0x007c,
6344 + 0x0f7e, 0x0c7e, 0x047e, 0x0c7e, 0x1078, 0x76c7, 0x2c78, 0x0c7f,
6345 + 0x0040, 0x8e0d, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021,
6346 + 0x0004, 0x1078, 0x8e11, 0x2001, 0xa89d, 0x2004, 0xd0fc, 0x0040,
6347 + 0x8e06, 0x2f60, 0x1078, 0x772d, 0x0078, 0x8e0b, 0x2f60, 0x2009,
6348 + 0x0052, 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f, 0x0f7f,
6349 + 0x007c, 0x097e, 0x077e, 0x127e, 0x2091, 0x8000, 0x1078, 0x4775,
6350 + 0x0040, 0x8e1e, 0x2001, 0x8e16, 0x0078, 0x8e24, 0x1078, 0x4739,
6351 + 0x0040, 0x8e2d, 0x2001, 0x8e1e, 0x007e, 0xa00e, 0x2400, 0x1078,
6352 + 0x4b51, 0x1078, 0x4a73, 0x007f, 0x007a, 0x2418, 0x1078, 0x6161,
6353 + 0x62a0, 0x087e, 0x2041, 0x0001, 0x2039, 0x0001, 0x2608, 0x1078,
6354 + 0x5f1b, 0x087f, 0x1078, 0x5e0a, 0x2f08, 0x2648, 0x1078, 0x9f8b,
6355 + 0x613c, 0x81ff, 0x1040, 0x5fdb, 0x1078, 0x62d1, 0x127f, 0x077f,
6356 + 0x097f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078,
6357 + 0x76c7, 0x017f, 0x0040, 0x8e63, 0x660a, 0x611a, 0x601f, 0x0001,
6358 + 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x775c, 0xa085, 0x0001,
6359 + 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8e60, 0x0c7e, 0x127e,
6360 + 0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x8e7f,
6361 + 0x660a, 0x611a, 0x601f, 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021,
6362 + 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006,
6363 + 0x0078, 0x8e7c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078,
6364 + 0x76c7, 0x017f, 0x0040, 0x8e9b, 0x660a, 0x611a, 0x601f, 0x0001,
6365 + 0x2d00, 0x6012, 0x2009, 0x003d, 0x1078, 0x775c, 0xa085, 0x0001,
6366 + 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8e98, 0x0c7e, 0x127e,
6367 + 0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x8eb6,
6368 + 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078,
6369 + 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078,
6370 + 0x8eb3, 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040,
6371 + 0x8ec3, 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x007e, 0x6000,
6372 + 0xa086, 0x0000, 0x0040, 0x8ed8, 0x6013, 0x0000, 0x601f, 0x0007,
6373 + 0x2001, 0xa8a3, 0x2004, 0x6016, 0x1078, 0xa495, 0x603f, 0x0000,
6374 + 0x007f, 0x007c, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0xa653, 0x2634,
6375 + 0xd6e4, 0x0040, 0x8ee8, 0x6618, 0x2660, 0x6e48, 0x1078, 0x46e7,
6376 + 0x0d7f, 0x0c7f, 0x067f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e,
6377 + 0x0002, 0x0040, 0x8efd, 0xa08e, 0x0003, 0x0040, 0x8efd, 0xa08e,
6378 + 0x0004, 0x0040, 0x8efd, 0xa085, 0x0001, 0x017f, 0x007f, 0x007c,
6379 + 0x007e, 0x0d7e, 0x6010, 0xa06d, 0x0040, 0x8f0d, 0x6838, 0xd0fc,
6380 + 0x0040, 0x8f0d, 0xa006, 0x0078, 0x8f0f, 0xa085, 0x0001, 0x0d7f,
6381 + 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078,
6382 + 0x76c7, 0x017f, 0x0040, 0x8f2c, 0x611a, 0x601f, 0x0001, 0x2d00,
6383 + 0x6012, 0x1078, 0x2880, 0x2009, 0x0028, 0x1078, 0x775c, 0xa085,
6384 + 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8f29, 0xa186,
6385 + 0x0015, 0x00c0, 0x8f44, 0x2011, 0xa620, 0x2204, 0xa086, 0x0074,
6386 + 0x00c0, 0x8f44, 0x1078, 0x7f91, 0x6003, 0x0001, 0x6007, 0x0029,
6387 + 0x1078, 0x5dd7, 0x0078, 0x8f48, 0x1078, 0x7c83, 0x1078, 0x772d,
6388 + 0x007c, 0xa186, 0x0016, 0x00c0, 0x8f53, 0x2001, 0x0004, 0x1078,
6389 + 0x4502, 0x0078, 0x8f74, 0xa186, 0x0015, 0x00c0, 0x8f78, 0x2011,
6390 + 0xa620, 0x2204, 0xa086, 0x0014, 0x00c0, 0x8f78, 0x0d7e, 0x6018,
6391 + 0x2068, 0x1078, 0x4649, 0x0d7f, 0x1078, 0x8043, 0x00c0, 0x8f78,
6392 + 0x0d7e, 0x6018, 0x2068, 0x6890, 0x0d7f, 0xa005, 0x0040, 0x8f78,
6393 + 0x2001, 0x0006, 0x1078, 0x4502, 0x1078, 0x77f8, 0x0078, 0x8f7c,
6394 + 0x1078, 0x7c83, 0x1078, 0x772d, 0x007c, 0x6848, 0xa086, 0x0005,
6395 + 0x00c0, 0x8f84, 0x1078, 0x8f85, 0x007c, 0x6850, 0xc0ad, 0x6852,
6396 + 0x007c, 0x0e7e, 0x2071, 0xab8c, 0x7014, 0xd0e4, 0x0040, 0x8f9a,
6397 + 0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x1078, 0x5d8a,
6398 + 0x1078, 0x62d1, 0x0e7f, 0x007c, 0x0c7e, 0x0f7e, 0x2c78, 0x1078,
6399 + 0x4963, 0x0f7f, 0x0040, 0x8fa9, 0x601c, 0xa084, 0x000f, 0x1079,
6400 + 0x8fab, 0x0c7f, 0x007c, 0x8ad5, 0x8fb6, 0x8fb9, 0x8fbc, 0xa25d,
6401 + 0xa279, 0xa27c, 0x8ad5, 0x8ad5, 0x1078, 0x1332, 0x0005, 0x0005,
6402 + 0x007c, 0x0005, 0x0005, 0x007c, 0x1078, 0x8fbf, 0x007c, 0x0f7e,
6403 + 0x2c78, 0x1078, 0x4963, 0x0040, 0x8fee, 0x1078, 0x76c7, 0x00c0,
6404 + 0x8fcf, 0x2001, 0xa8a4, 0x2004, 0x783e, 0x0078, 0x8fee, 0x7818,
6405 + 0x601a, 0x781c, 0xa086, 0x0003, 0x0040, 0x8fdc, 0x7808, 0x6036,
6406 + 0x2f00, 0x603a, 0x0078, 0x8fe0, 0x7808, 0x603a, 0x2f00, 0x6036,
6407 + 0x602a, 0x601f, 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x7920,
6408 + 0x6122, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x2f60, 0x0f7f, 0x007c,
6409 + 0x017e, 0x0f7e, 0x682c, 0x6032, 0xa08e, 0x0001, 0x0040, 0x9001,
6410 + 0xa086, 0x0005, 0x0040, 0x9005, 0xa006, 0x602a, 0x602e, 0x0078,
6411 + 0x9016, 0x6824, 0xc0f4, 0xc0d5, 0x6826, 0x6810, 0x2078, 0x787c,
6412 + 0x6938, 0xa102, 0x7880, 0x6934, 0xa103, 0x00c8, 0x8ffc, 0x6834,
6413 + 0x602a, 0x6838, 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036,
6414 + 0x6808, 0x603a, 0x6918, 0x611a, 0x6920, 0x6122, 0x601f, 0x0001,
6415 + 0x6007, 0x0039, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x6803, 0x0002,
6416 + 0x0f7f, 0x017f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0034,
6417 + 0x0040, 0x9050, 0xa08e, 0x0035, 0x0040, 0x9050, 0xa08e, 0x0036,
6418 + 0x0040, 0x9050, 0xa08e, 0x0037, 0x0040, 0x9050, 0xa08e, 0x0038,
6419 + 0x0040, 0x9050, 0xa08e, 0x0039, 0x0040, 0x9050, 0xa08e, 0x003a,
6420 + 0x0040, 0x9050, 0xa08e, 0x003b, 0x0040, 0x9050, 0xa085, 0x0001,
6421 + 0x017f, 0x007f, 0x007c, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x00c0,
6422 + 0x905d, 0xa085, 0x0001, 0x0078, 0x906c, 0x6024, 0xd0f4, 0x00c0,
6423 + 0x906b, 0xc0f5, 0x6026, 0x6010, 0x2078, 0x7828, 0x603a, 0x782c,
6424 + 0x6036, 0x1078, 0x1757, 0xa006, 0x0f7f, 0x007c, 0x007e, 0x017e,
6425 + 0x027e, 0x037e, 0x0e7e, 0x2001, 0xa89e, 0x200c, 0x8000, 0x2014,
6426 + 0x2001, 0x0032, 0x1078, 0x5c1c, 0x2001, 0xa8a2, 0x82ff, 0x00c0,
6427 + 0x9083, 0x2011, 0x0014, 0x2202, 0x2001, 0xa8a0, 0x200c, 0x8000,
6428 + 0x2014, 0x2071, 0xa88d, 0x711a, 0x721e, 0x2001, 0x0064, 0x1078,
6429 + 0x5c1c, 0x2001, 0xa8a3, 0x82ff, 0x00c0, 0x9098, 0x2011, 0x0014,
6430 + 0x2202, 0x2009, 0xa8a4, 0xa280, 0x000a, 0x200a, 0x1078, 0x498b,
6431 + 0x0e7f, 0x037f, 0x027f, 0x017f, 0x007f, 0x007c, 0x007e, 0x0e7e,
6432 + 0x2001, 0xa8a2, 0x2003, 0x0028, 0x2001, 0xa8a3, 0x2003, 0x0014,
6433 + 0x2071, 0xa88d, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001, 0xa8a4,
6434 + 0x2003, 0x001e, 0x0e7f, 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091,
6435 + 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x90d5, 0x611a,
6436 + 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0033, 0x1078, 0x775c,
6437 + 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x90d2,
6438 + 0x0d7e, 0x0e7e, 0x0f7e, 0x2071, 0xa600, 0xa186, 0x0015, 0x00c0,
6439 + 0x9107, 0x7080, 0xa086, 0x0018, 0x00c0, 0x9107, 0x6010, 0x2068,
6440 + 0x6a3c, 0xd2e4, 0x00c0, 0x90fb, 0x2c78, 0x1078, 0x6490, 0x0040,
6441 + 0x910f, 0x706c, 0x6a50, 0xa206, 0x00c0, 0x9103, 0x7070, 0x6a54,
6442 + 0xa206, 0x00c0, 0x9103, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009,
6443 + 0x0000, 0x1078, 0x28c8, 0x1078, 0x77f8, 0x0078, 0x910b, 0x1078,
6444 + 0x7c83, 0x1078, 0x772d, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x7050,
6445 + 0xa080, 0x29c0, 0x2004, 0x6a54, 0xa206, 0x0040, 0x90fb, 0x0078,
6446 + 0x9103, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7,
6447 + 0x017f, 0x0040, 0x9131, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012,
6448 + 0x2009, 0x0043, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f,
6449 + 0x007c, 0xa006, 0x0078, 0x912e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2071,
6450 + 0xa600, 0xa186, 0x0015, 0x00c0, 0x915a, 0x7080, 0xa086, 0x0004,
6451 + 0x00c0, 0x915a, 0x6010, 0xa0e8, 0x000f, 0x2c78, 0x1078, 0x6490,
6452 + 0x0040, 0x9162, 0x706c, 0x6a08, 0xa206, 0x00c0, 0x9156, 0x7070,
6453 + 0x6a0c, 0xa206, 0x00c0, 0x9156, 0x1078, 0x2880, 0x1078, 0x77f8,
6454 + 0x0078, 0x915e, 0x1078, 0x7c83, 0x1078, 0x772d, 0x0f7f, 0x0e7f,
6455 + 0x0d7f, 0x007c, 0x7050, 0xa080, 0x29c0, 0x2004, 0x6a0c, 0xa206,
6456 + 0x0040, 0x9154, 0x0078, 0x9156, 0x017e, 0x027e, 0x684c, 0xd0ac,
6457 + 0x0040, 0x9184, 0x6914, 0x6a10, 0x2100, 0xa205, 0x0040, 0x9184,
6458 + 0x6860, 0xa106, 0x00c0, 0x9180, 0x685c, 0xa206, 0x0040, 0x9184,
6459 + 0x6962, 0x6a5e, 0xa085, 0x0001, 0x027f, 0x017f, 0x007c, 0x0e7e,
6460 + 0x127e, 0x2071, 0xa600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001,
6461 + 0x0048, 0x91b9, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040,
6462 + 0x91a5, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8, 0x91a1, 0x0078,
6463 + 0x9194, 0x2061, 0xad00, 0x0078, 0x9194, 0x6003, 0x0008, 0x8529,
6464 + 0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8, 0x91b5, 0x754e,
6465 + 0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704f, 0xad00, 0x0078,
6466 + 0x91b0, 0xa006, 0x0078, 0x91b2, 0x0c7e, 0x027e, 0x017e, 0xa186,
6467 + 0x0035, 0x0040, 0x91c6, 0x6a34, 0x0078, 0x91c7, 0x6a28, 0x1078,
6468 + 0x8cf2, 0x0040, 0x91f0, 0x2260, 0x611c, 0xa186, 0x0003, 0x0040,
6469 + 0x91d5, 0xa186, 0x0006, 0x00c0, 0x91ec, 0x6834, 0xa206, 0x0040,
6470 + 0x91e4, 0x6838, 0xa206, 0x00c0, 0x91ec, 0x6108, 0x6834, 0xa106,
6471 + 0x00c0, 0x91ec, 0x0078, 0x91e9, 0x6008, 0x6938, 0xa106, 0x00c0,
6472 + 0x91ec, 0x6018, 0x6918, 0xa106, 0x017f, 0x027f, 0x0c7f, 0x007c,
6473 + 0xa085, 0x0001, 0x0078, 0x91ec, 0x6944, 0xd1cc, 0x0040, 0x920d,
6474 + 0xa18c, 0x00ff, 0xa18e, 0x0002, 0x00c0, 0x920d, 0xad88, 0x001e,
6475 + 0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, 0x00c0, 0x920d,
6476 + 0x6810, 0x6914, 0xa115, 0x10c0, 0x84d5, 0x007c, 0x067e, 0x6000,
6477 + 0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x9218, 0x067f, 0x007c,
6478 + 0x9228, 0x96df, 0x97fb, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228,
6479 + 0x9262, 0x988e, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228,
6480 + 0x1078, 0x1332, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1332,
6481 + 0x1079, 0x9234, 0x067f, 0x007c, 0x9244, 0x9d53, 0x9244, 0x9244,
6482 + 0x9244, 0x9244, 0x9244, 0x9244, 0x9d11, 0x9da1, 0x9244, 0xa3b0,
6483 + 0xa3e4, 0xa3b0, 0xa3e4, 0x9244, 0x1078, 0x1332, 0x067e, 0x6000,
6484 + 0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x9250, 0x067f, 0x007c,
6485 + 0x9260, 0x99eb, 0x9ac7, 0x9af5, 0x9b70, 0x9260, 0x9c76, 0x9c1e,
6486 + 0x989a, 0x9ce5, 0x9cfb, 0x9260, 0x9260, 0x9260, 0x9260, 0x9260,
6487 + 0x1078, 0x1332, 0xa1b2, 0x0044, 0x10c8, 0x1332, 0x2100, 0x0079,
6488 + 0x9269, 0x92a9, 0x9498, 0x92a9, 0x92a9, 0x92a9, 0x94a0, 0x92a9,
6489 + 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9,
6490 + 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9,
6491 + 0x92ab, 0x9311, 0x9320, 0x9377, 0x9396, 0x9415, 0x9485, 0x92a9,
6492 + 0x92a9, 0x94a4, 0x92a9, 0x92a9, 0x94b7, 0x94c2, 0x92a9, 0x92a9,
6493 + 0x92a9, 0x92a9, 0x92a9, 0x94fa, 0x92a9, 0x92a9, 0x9509, 0x92a9,
6494 + 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x9522, 0x92a9, 0x92a9,
6495 + 0x92a9, 0x95af, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9,
6496 + 0x9629, 0x1078, 0x1332, 0x1078, 0x4967, 0x00c0, 0x92bb, 0x2001,
6497 + 0xa633, 0x2004, 0xd0cc, 0x00c0, 0x92bb, 0xa084, 0x0009, 0xa086,
6498 + 0x0008, 0x00c0, 0x92c3, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013,
6499 + 0x0000, 0x0078, 0x9493, 0x1078, 0x4957, 0x0e7e, 0x0c7e, 0x037e,
6500 + 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e, 0x2019, 0x0029,
6501 + 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x2c08,
6502 + 0x1078, 0x9f8b, 0x077f, 0x017f, 0x2e60, 0x1078, 0x47e9, 0x017f,
6503 + 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x6618, 0x0c7e, 0x2660, 0x1078,
6504 + 0x45d6, 0x0c7f, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082,
6505 + 0x0006, 0x0048, 0x9303, 0x1078, 0x9ebf, 0x00c0, 0x9371, 0x1078,
6506 + 0x9e50, 0x00c0, 0x92ff, 0x6007, 0x0008, 0x0078, 0x9493, 0x6007,
6507 + 0x0009, 0x0078, 0x9493, 0x1078, 0xa09f, 0x0040, 0x930d, 0x1078,
6508 + 0x9ebf, 0x0040, 0x92f7, 0x0078, 0x9371, 0x6013, 0x1900, 0x0078,
6509 + 0x92ff, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6106, 0x1078, 0x9e05,
6510 + 0x6007, 0x0006, 0x0078, 0x9493, 0x6007, 0x0007, 0x0078, 0x9493,
6511 + 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0, 0x9664,
6512 + 0x0d7e, 0x6618, 0x2668, 0x6e04, 0xa684, 0x00ff, 0xa082, 0x0006,
6513 + 0x00c8, 0x9336, 0x2001, 0x0001, 0x1078, 0x44ee, 0xa6b4, 0xff00,
6514 + 0x8637, 0xa686, 0x0006, 0x0040, 0x9353, 0xa686, 0x0004, 0x0040,
6515 + 0x9353, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0040, 0x9353,
6516 + 0xa686, 0x0004, 0x0040, 0x9353, 0xa686, 0x0005, 0x0040, 0x9353,
6517 + 0x0d7f, 0x0078, 0x9371, 0x1078, 0x9f25, 0x00c0, 0x936c, 0xa686,
6518 + 0x0006, 0x00c0, 0x9365, 0x027e, 0x6218, 0xa290, 0x0028, 0x2214,
6519 + 0x2009, 0x0000, 0x1078, 0x28c8, 0x027f, 0x1078, 0x4649, 0x6007,
6520 + 0x000a, 0x0d7f, 0x0078, 0x9493, 0x6007, 0x000b, 0x0d7f, 0x0078,
6521 + 0x9493, 0x1078, 0x2880, 0x6007, 0x0001, 0x0078, 0x9493, 0x1078,
6522 + 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6618,
6523 + 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa686, 0x0707, 0x0040, 0x9371,
6524 + 0x027e, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x1078,
6525 + 0x28c8, 0x027f, 0x6007, 0x000c, 0x0078, 0x9493, 0x1078, 0x4967,
6526 + 0x00c0, 0x93a3, 0x2001, 0xa633, 0x2004, 0xa084, 0x0009, 0xa086,
6527 + 0x0008, 0x00c0, 0x93ab, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013,
6528 + 0x0000, 0x0078, 0x9493, 0x1078, 0x4957, 0x6618, 0xa6b0, 0x0001,
6529 + 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x93ef, 0xa6b4,
6530 + 0xff00, 0x8637, 0xa686, 0x0004, 0x0040, 0x93c2, 0xa686, 0x0006,
6531 + 0x00c0, 0x9371, 0x1078, 0x9f34, 0x00c0, 0x93ca, 0x6007, 0x000e,
6532 + 0x0078, 0x9493, 0x047e, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4,
6533 + 0x00ff, 0x8427, 0x047e, 0x1078, 0x2880, 0x047f, 0x017e, 0xa006,
6534 + 0x2009, 0xa653, 0x210c, 0xd1a4, 0x0040, 0x93e9, 0x2009, 0x0029,
6535 + 0x1078, 0xa21d, 0x6018, 0x0d7e, 0x2068, 0x6800, 0xc0e5, 0x6802,
6536 + 0x0d7f, 0x017f, 0x047f, 0x6007, 0x0001, 0x0078, 0x9493, 0x2001,
6537 + 0x0001, 0x1078, 0x44ee, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9,
6538 + 0x0004, 0x2019, 0xa605, 0x2011, 0xab90, 0x1078, 0x80de, 0x037f,
6539 + 0x027f, 0x017f, 0x157f, 0xa005, 0x0040, 0x940f, 0xa6b4, 0xff00,
6540 + 0x8637, 0xa686, 0x0006, 0x0040, 0x93c2, 0x0078, 0x9371, 0x6013,
6541 + 0x1900, 0x6007, 0x0009, 0x0078, 0x9493, 0x1078, 0x4967, 0x00c0,
6542 + 0x9422, 0x2001, 0xa633, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008,
6543 + 0x00c0, 0x942a, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, 0x0000,
6544 + 0x0078, 0x9493, 0x1078, 0x4957, 0x6618, 0xa6b0, 0x0001, 0x2634,
6545 + 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x9472, 0xa6b4, 0xff00,
6546 + 0x8637, 0xa686, 0x0004, 0x0040, 0x9441, 0xa686, 0x0006, 0x00c0,
6547 + 0x9371, 0x1078, 0x9f5f, 0x00c0, 0x944d, 0x1078, 0x9e50, 0x00c0,
6548 + 0x944d, 0x6007, 0x0010, 0x0078, 0x9493, 0x047e, 0x6418, 0xa4a0,
6549 + 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x047e, 0x1078, 0x2880,
6550 + 0x047f, 0x017e, 0xa006, 0x2009, 0xa653, 0x210c, 0xd1a4, 0x0040,
6551 + 0x946c, 0x2009, 0x0029, 0x1078, 0xa21d, 0x6018, 0x0d7e, 0x2068,
6552 + 0x6800, 0xc0e5, 0x6802, 0x0d7f, 0x017f, 0x047f, 0x6007, 0x0001,
6553 + 0x0078, 0x9493, 0x1078, 0xa09f, 0x0040, 0x947f, 0xa6b4, 0xff00,
6554 + 0x8637, 0xa686, 0x0006, 0x0040, 0x9441, 0x0078, 0x9371, 0x6013,
6555 + 0x1900, 0x6007, 0x0009, 0x0078, 0x9493, 0x1078, 0x29bb, 0x00c0,
6556 + 0x9664, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0,
6557 + 0x9371, 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x007c,
6558 + 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x0078, 0x9497,
6559 + 0x6007, 0x0005, 0x0078, 0x949a, 0x1078, 0xa41c, 0x00c0, 0x9664,
6560 + 0x1078, 0x29bb, 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371,
6561 + 0x6007, 0x0020, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x007c, 0x1078,
6562 + 0x29bb, 0x00c0, 0x9664, 0x6007, 0x0023, 0x6003, 0x0001, 0x1078,
6563 + 0x5dd7, 0x007c, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb,
6564 + 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371, 0x017e, 0x027e,
6565 + 0x2011, 0xab90, 0x2214, 0x2c08, 0xa006, 0x1078, 0xa1e6, 0x00c0,
6566 + 0x94e9, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x2011, 0xab89,
6567 + 0x2214, 0xa296, 0xffff, 0x00c0, 0x94f3, 0x6007, 0x0025, 0x0078,
6568 + 0x94f3, 0x6004, 0xa086, 0x0024, 0x00c0, 0x94f0, 0x1078, 0x772d,
6569 + 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x027f,
6570 + 0x017f, 0x007c, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6106, 0x1078,
6571 + 0x9687, 0x6007, 0x002b, 0x0078, 0x9493, 0x6007, 0x002c, 0x0078,
6572 + 0x9493, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0,
6573 + 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371, 0x6106, 0x1078, 0x968c,
6574 + 0x00c0, 0x951e, 0x6007, 0x002e, 0x0078, 0x9493, 0x6007, 0x002f,
6575 + 0x0078, 0x9493, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x0e7e, 0x0d7e,
6576 + 0x0c7e, 0x6018, 0xa080, 0x0001, 0x200c, 0xa184, 0x00ff, 0xa086,
6577 + 0x0006, 0x0040, 0x953f, 0xa184, 0xff00, 0x8007, 0xa086, 0x0006,
6578 + 0x0040, 0x953f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0078, 0x9498, 0x2001,
6579 + 0xa672, 0x2004, 0xd0e4, 0x0040, 0x95ab, 0x2071, 0xab8c, 0x7010,
6580 + 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, 0xa653, 0x2004,
6581 + 0xd0a4, 0x0040, 0x955d, 0x6018, 0x2068, 0x6810, 0xa106, 0x00c0,
6582 + 0x955d, 0x6814, 0xa206, 0x0040, 0x9581, 0x2001, 0xa653, 0x2004,
6583 + 0xd0ac, 0x00c0, 0x959f, 0x2069, 0xa600, 0x6870, 0xa206, 0x00c0,
6584 + 0x959f, 0x686c, 0xa106, 0x00c0, 0x959f, 0x7210, 0x1078, 0x8cf2,
6585 + 0x0040, 0x95a5, 0x1078, 0xa28e, 0x0040, 0x95a5, 0x622a, 0x6007,
6586 + 0x0036, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x0c7f, 0x0d7f, 0x0e7f,
6587 + 0x007c, 0x7214, 0xa286, 0xffff, 0x0040, 0x9593, 0x1078, 0x8cf2,
6588 + 0x0040, 0x95a5, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x00c0,
6589 + 0x95a5, 0x0078, 0x956e, 0x7210, 0x2c08, 0xa085, 0x0001, 0x1078,
6590 + 0xa1e6, 0x2c10, 0x2160, 0x0040, 0x95a5, 0x0078, 0x956e, 0x6007,
6591 + 0x0037, 0x6013, 0x1500, 0x0078, 0x9579, 0x6007, 0x0037, 0x6013,
6592 + 0x1700, 0x0078, 0x9579, 0x6007, 0x0012, 0x0078, 0x9579, 0x1078,
6593 + 0x29bb, 0x00c0, 0x9664, 0x6018, 0xa080, 0x0001, 0x2004, 0xa084,
6594 + 0xff00, 0x8007, 0xa086, 0x0006, 0x00c0, 0x9498, 0x0e7e, 0x0d7e,
6595 + 0x0c7e, 0x2001, 0xa672, 0x2004, 0xd0e4, 0x0040, 0x9621, 0x2069,
6596 + 0xa600, 0x2071, 0xab8c, 0x7008, 0x6036, 0x720c, 0x623a, 0xa286,
6597 + 0xffff, 0x00c0, 0x95de, 0x7208, 0x0c7e, 0x2c08, 0xa085, 0x0001,
6598 + 0x1078, 0xa1e6, 0x2c10, 0x0c7f, 0x0040, 0x9615, 0x1078, 0x8cf2,
6599 + 0x0040, 0x9615, 0x0c7e, 0x027e, 0x2260, 0x1078, 0x89f3, 0x027f,
6600 + 0x0c7f, 0x7118, 0xa18c, 0xff00, 0x810f, 0xa186, 0x0001, 0x0040,
6601 + 0x95ff, 0xa186, 0x0005, 0x0040, 0x95f9, 0xa186, 0x0007, 0x00c0,
6602 + 0x9609, 0xa280, 0x0004, 0x2004, 0xa005, 0x0040, 0x9609, 0x057e,
6603 + 0x7510, 0x7614, 0x1078, 0xa2a3, 0x057f, 0x0c7f, 0x0d7f, 0x0e7f,
6604 + 0x007c, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00, 0x6003,
6605 + 0x0001, 0x1078, 0x5d8a, 0x0078, 0x9605, 0x6007, 0x003b, 0x602b,
6606 + 0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x0078,
6607 + 0x9605, 0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0078,
6608 + 0x9579, 0x0e7e, 0x027e, 0x1078, 0x4967, 0x0040, 0x965e, 0x1078,
6609 + 0x4957, 0x1078, 0xa4a9, 0x00c0, 0x965c, 0x2071, 0xa600, 0x70cc,
6610 + 0xc085, 0x70ce, 0x0f7e, 0x2079, 0x0100, 0x7298, 0xa284, 0x00ff,
6611 + 0x706e, 0x78e6, 0xa284, 0xff00, 0x7270, 0xa205, 0x7072, 0x78ea,
6612 + 0x0f7f, 0x70d7, 0x0000, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040,
6613 + 0x9655, 0x2011, 0xa8ca, 0x2013, 0x07d0, 0xd0ac, 0x00c0, 0x965e,
6614 + 0x1078, 0x2677, 0x0078, 0x965e, 0x1078, 0xa4d9, 0x027f, 0x0e7f,
6615 + 0x1078, 0x772d, 0x0078, 0x9497, 0x1078, 0x772d, 0x007c, 0x0d7e,
6616 + 0x067e, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686,
6617 + 0x0006, 0x0040, 0x9684, 0xa686, 0x0004, 0x0040, 0x9684, 0x6e04,
6618 + 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0040, 0x9684, 0xa686, 0x0004,
6619 + 0x0040, 0x9684, 0xa085, 0x0001, 0x067f, 0x0d7f, 0x007c, 0x0d7e,
6620 + 0x1078, 0x96bb, 0x0d7f, 0x007c, 0x0d7e, 0x1078, 0x96ca, 0x00c0,
6621 + 0x96b4, 0x680c, 0xa08c, 0xff00, 0x6820, 0xa084, 0x00ff, 0xa115,
6622 + 0x6212, 0x6824, 0x602a, 0xd1e4, 0x0040, 0x96a2, 0x2009, 0x0001,
6623 + 0x0078, 0x96b0, 0xd1ec, 0x0040, 0x96b4, 0x6920, 0xa18c, 0x00ff,
6624 + 0x6824, 0x1078, 0x254d, 0x00c0, 0x96b4, 0x2110, 0x2009, 0x0000,
6625 + 0x1078, 0x28c8, 0x0078, 0x96b8, 0xa085, 0x0001, 0x0078, 0x96b9,
6626 + 0xa006, 0x0d7f, 0x007c, 0x2069, 0xab8d, 0x6800, 0xa082, 0x0010,
6627 + 0x00c8, 0x96c8, 0x6013, 0x0000, 0xa085, 0x0001, 0x0078, 0x96c9,
6628 + 0xa006, 0x007c, 0x6013, 0x0000, 0x2069, 0xab8c, 0x6808, 0xa084,
6629 + 0xff00, 0xa086, 0x0800, 0x00c0, 0x96de, 0x6800, 0xa084, 0x00ff,
6630 + 0xa08e, 0x0014, 0x0040, 0x96de, 0xa08e, 0x0010, 0x007c, 0x6004,
6631 + 0xa0b2, 0x0044, 0x10c8, 0x1332, 0xa1b6, 0x0013, 0x00c0, 0x96eb,
6632 + 0x2008, 0x0079, 0x96fe, 0xa1b6, 0x0027, 0x0040, 0x96f3, 0xa1b6,
6633 + 0x0014, 0x10c0, 0x1332, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078,
6634 + 0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c, 0x973e, 0x9740,
6635 + 0x973e, 0x973e, 0x973e, 0x9740, 0x974c, 0x97d6, 0x9799, 0x97d6,
6636 + 0x97ad, 0x97d6, 0x974c, 0x97d6, 0x97ce, 0x97d6, 0x97ce, 0x97d6,
6637 + 0x97d6, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e,
6638 + 0x973e, 0x973e, 0x973e, 0x973e, 0x9740, 0x973e, 0x97d6, 0x973e,
6639 + 0x973e, 0x97d6, 0x973e, 0x97d6, 0x97d6, 0x973e, 0x973e, 0x973e,
6640 + 0x973e, 0x97d6, 0x97d6, 0x973e, 0x97d6, 0x97d6, 0x973e, 0x973e,
6641 + 0x973e, 0x973e, 0x973e, 0x9740, 0x97d6, 0x97d6, 0x973e, 0x973e,
6642 + 0x97d6, 0x97d6, 0x973e, 0x973e, 0x973e, 0x973e, 0x1078, 0x1332,
6643 + 0x1078, 0x61cd, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x6003, 0x0002,
6644 + 0x1078, 0x62d1, 0x0078, 0x97dc, 0x0f7e, 0x2079, 0xa652, 0x7804,
6645 + 0x0f7f, 0xd0ac, 0x00c0, 0x97d6, 0x2001, 0x0000, 0x1078, 0x44ee,
6646 + 0x6018, 0xa080, 0x0004, 0x2004, 0xa086, 0x00ff, 0x0040, 0x97d6,
6647 + 0x0c7e, 0x6018, 0x2060, 0x6000, 0xd0f4, 0x00c0, 0x9770, 0x6010,
6648 + 0xa005, 0x0040, 0x9770, 0x0c7f, 0x1078, 0x3699, 0x0078, 0x97d6,
6649 + 0x0c7f, 0x2001, 0xa600, 0x2004, 0xa086, 0x0002, 0x00c0, 0x977f,
6650 + 0x0f7e, 0x2079, 0xa600, 0x7890, 0x8000, 0x7892, 0x0f7f, 0x2001,
6651 + 0x0002, 0x1078, 0x4502, 0x1078, 0x61cd, 0x601f, 0x0001, 0x6003,
6652 + 0x0001, 0x6007, 0x0002, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0c7e,
6653 + 0x6118, 0x2160, 0x2009, 0x0001, 0x1078, 0x5a52, 0x0c7f, 0x0078,
6654 + 0x97dc, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00,
6655 + 0x8637, 0xa686, 0x0006, 0x0040, 0x97d6, 0xa686, 0x0004, 0x0040,
6656 + 0x97d6, 0x2001, 0x0004, 0x0078, 0x97d4, 0x2001, 0xa600, 0x2004,
6657 + 0xa086, 0x0003, 0x00c0, 0x97b6, 0x1078, 0x3699, 0x2001, 0x0006,
6658 + 0x1078, 0x97dd, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4,
6659 + 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x97d6, 0x2001, 0x0006,
6660 + 0x0078, 0x97d4, 0x2001, 0x0004, 0x0078, 0x97d4, 0x2001, 0x0006,
6661 + 0x1078, 0x97dd, 0x0078, 0x97d6, 0x1078, 0x4535, 0x1078, 0x61cd,
6662 + 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c, 0x017e, 0x0d7e, 0x6118,
6663 + 0x2168, 0x6900, 0xd184, 0x0040, 0x97f8, 0x6104, 0xa18e, 0x000a,
6664 + 0x00c0, 0x97f0, 0x699c, 0xd1a4, 0x00c0, 0x97f0, 0x2001, 0x0007,
6665 + 0x1078, 0x4502, 0x2001, 0x0000, 0x1078, 0x44ee, 0x1078, 0x28a6,
6666 + 0x0d7f, 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084,
6667 + 0xff00, 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1332, 0xa1b6,
6668 + 0x0015, 0x00c0, 0x980f, 0x1079, 0x9816, 0x0078, 0x9815, 0xa1b6,
6669 + 0x0016, 0x10c0, 0x1332, 0x1079, 0x9822, 0x007c, 0x7d4e, 0x7d4e,
6670 + 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x9877, 0x982e, 0x7d4e, 0x7d4e,
6671 + 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e,
6672 + 0x9877, 0x987f, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x0f7e, 0x2079,
6673 + 0xa652, 0x7804, 0xd0ac, 0x00c0, 0x9855, 0x6018, 0xa07d, 0x0040,
6674 + 0x9855, 0x7800, 0xd0f4, 0x00c0, 0x9841, 0x7810, 0xa005, 0x00c0,
6675 + 0x9855, 0x2001, 0x0000, 0x1078, 0x44ee, 0x2001, 0x0002, 0x1078,
6676 + 0x4502, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078,
6677 + 0x5dd7, 0x1078, 0x62d1, 0x0078, 0x9875, 0x2011, 0xab83, 0x2204,
6678 + 0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x9875, 0x0c7e, 0x1078,
6679 + 0x45c4, 0x0040, 0x9868, 0x0c7f, 0x1078, 0x772d, 0x0078, 0x9875,
6680 + 0x6010, 0x007e, 0x6014, 0x007e, 0x1078, 0x42f8, 0x007f, 0x6016,
6681 + 0x007f, 0x6012, 0x0c7f, 0x1078, 0x772d, 0x0f7f, 0x007c, 0x6604,
6682 + 0xa6b6, 0x001e, 0x00c0, 0x987e, 0x1078, 0x772d, 0x007c, 0x1078,
6683 + 0x7f8e, 0x00c0, 0x988b, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078,
6684 + 0x5dd7, 0x0078, 0x988d, 0x1078, 0x772d, 0x007c, 0x6004, 0xa08a,
6685 + 0x0044, 0x10c8, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078,
6686 + 0x62d1, 0x007c, 0xa182, 0x0040, 0x0079, 0x989e, 0x98b1, 0x98b1,
6687 + 0x98b1, 0x98b1, 0x98b3, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1,
6688 + 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1,
6689 + 0x98b1, 0x1078, 0x1332, 0x0d7e, 0x0e7e, 0x0f7e, 0x157e, 0x047e,
6690 + 0x027e, 0x6218, 0xa280, 0x002b, 0x2004, 0xa005, 0x0040, 0x98c4,
6691 + 0x2021, 0x0000, 0x1078, 0xa472, 0x6106, 0x2071, 0xab80, 0x7444,
6692 + 0xa4a4, 0xff00, 0x0040, 0x991b, 0xa486, 0x2000, 0x00c0, 0x98d6,
6693 + 0x2009, 0x0001, 0x2011, 0x0200, 0x1078, 0x5bf1, 0x1078, 0x138b,
6694 + 0x1040, 0x1332, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803,
6695 + 0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6008, 0x68b2,
6696 + 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x694a, 0x017e, 0xa084,
6697 + 0xff00, 0x6846, 0x684f, 0x0000, 0x6857, 0x0036, 0x1078, 0x4a73,
6698 + 0x017f, 0xa486, 0x2000, 0x00c0, 0x9903, 0x2019, 0x0017, 0x1078,
6699 + 0xa195, 0x0078, 0x997d, 0xa486, 0x0400, 0x00c0, 0x990d, 0x2019,
6700 + 0x0002, 0x1078, 0xa146, 0x0078, 0x997d, 0xa486, 0x0200, 0x00c0,
6701 + 0x9913, 0x1078, 0xa12b, 0xa486, 0x1000, 0x00c0, 0x9919, 0x1078,
6702 + 0xa17a, 0x0078, 0x997d, 0x2069, 0xa933, 0x6a00, 0xd284, 0x0040,
6703 + 0x99e7, 0xa284, 0x0300, 0x00c0, 0x99df, 0x6804, 0xa005, 0x0040,
6704 + 0x99c5, 0x2d78, 0x6003, 0x0007, 0x1078, 0x1370, 0x0040, 0x9984,
6705 + 0x7800, 0xd08c, 0x00c0, 0x9937, 0x7804, 0x8001, 0x7806, 0x6013,
6706 + 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000, 0x6008,
6707 + 0x68b2, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130,
6708 + 0x6986, 0x6846, 0x7928, 0x698a, 0x792c, 0x698e, 0x7930, 0x6992,
6709 + 0x7934, 0x6996, 0x6853, 0x003d, 0x7244, 0xa294, 0x0003, 0xa286,
6710 + 0x0002, 0x00c0, 0x995f, 0x684f, 0x0040, 0x0078, 0x9969, 0xa286,
6711 + 0x0001, 0x00c0, 0x9967, 0x684f, 0x0080, 0x0078, 0x9969, 0x684f,
6712 + 0x0000, 0x20a9, 0x000a, 0x2001, 0xab90, 0xad90, 0x0015, 0x200c,
6713 + 0x810f, 0x2112, 0x8000, 0x8210, 0x00f0, 0x996f, 0x200c, 0x6982,
6714 + 0x8000, 0x200c, 0x697e, 0x1078, 0x4a73, 0x027f, 0x047f, 0x157f,
6715 + 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x2001, 0xa60e, 0x2004, 0xd084,
6716 + 0x0040, 0x998e, 0x1078, 0x138b, 0x00c0, 0x9930, 0x6013, 0x0100,
6717 + 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1,
6718 + 0x0078, 0x997d, 0x2069, 0xab92, 0x2d04, 0xa084, 0xff00, 0xa086,
6719 + 0x1200, 0x00c0, 0x99b9, 0x2069, 0xab80, 0x686c, 0xa084, 0x00ff,
6720 + 0x017e, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112, 0x017f, 0x6003,
6721 + 0x0001, 0x6007, 0x0043, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078,
6722 + 0x997d, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078,
6723 + 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x997d, 0x2001, 0xa60d, 0x2004,
6724 + 0xd0ec, 0x0040, 0x99cf, 0x2011, 0x8049, 0x1078, 0x361b, 0x6013,
6725 + 0x0300, 0x0078, 0x99d5, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007,
6726 + 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x997d, 0x6013,
6727 + 0x0500, 0x0078, 0x99d5, 0x6013, 0x0600, 0x0078, 0x999a, 0x6013,
6728 + 0x0200, 0x0078, 0x999a, 0xa186, 0x0013, 0x00c0, 0x99fd, 0x6004,
6729 + 0xa08a, 0x0040, 0x1048, 0x1332, 0xa08a, 0x0053, 0x10c8, 0x1332,
6730 + 0xa082, 0x0040, 0x2008, 0x0079, 0x9a82, 0xa186, 0x0051, 0x0040,
6731 + 0x9a0a, 0xa186, 0x0047, 0x00c0, 0x9a23, 0x6004, 0xa086, 0x0041,
6732 + 0x0040, 0x9a31, 0x2001, 0x0109, 0x2004, 0xd084, 0x0040, 0x9a31,
6733 + 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x1078, 0x5c56,
6734 + 0x027f, 0x017f, 0x007f, 0x127f, 0x6000, 0xa086, 0x0002, 0x00c0,
6735 + 0x9a31, 0x0078, 0x9ac7, 0xa186, 0x0027, 0x0040, 0x9a2b, 0xa186,
6736 + 0x0014, 0x10c0, 0x1332, 0x6004, 0xa082, 0x0040, 0x2008, 0x0079,
6737 + 0x9a34, 0x1078, 0x7773, 0x007c, 0x9a47, 0x9a49, 0x9a49, 0x9a71,
6738 + 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47,
6739 + 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x1078,
6740 + 0x1332, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x037e, 0x0d7e, 0x6010,
6741 + 0xa06d, 0x0040, 0x9a6e, 0xad84, 0xf000, 0x0040, 0x9a6e, 0x6003,
6742 + 0x0002, 0x6018, 0x2004, 0xd0bc, 0x00c0, 0x9a6e, 0x2019, 0x0004,
6743 + 0x1078, 0xa1ca, 0x6013, 0x0000, 0x6014, 0xa005, 0x00c0, 0x9a6c,
6744 + 0x2001, 0xa8a3, 0x2004, 0x6016, 0x6003, 0x0007, 0x0d7f, 0x037f,
6745 + 0x007c, 0x0d7e, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x1078, 0x8d06,
6746 + 0x0040, 0x9a7e, 0x6010, 0x2068, 0x1078, 0x13a4, 0x1078, 0x8ec6,
6747 + 0x0d7f, 0x007c, 0x9a95, 0x9ab4, 0x9a9e, 0x9ac1, 0x9a95, 0x9a95,
6748 + 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95,
6749 + 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x1078, 0x1332, 0x6010,
6750 + 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x1078, 0x61cd,
6751 + 0x6010, 0xa080, 0x0013, 0x2004, 0xd0b4, 0x0040, 0x9aaf, 0x6003,
6752 + 0x0007, 0x2009, 0x0043, 0x1078, 0x775c, 0x0078, 0x9ab1, 0x6003,
6753 + 0x0002, 0x1078, 0x62d1, 0x007c, 0x1078, 0x61cd, 0x1078, 0xa423,
6754 + 0x00c0, 0x9abe, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x1078, 0x62d1,
6755 + 0x007c, 0x1078, 0x61cd, 0x2009, 0x0041, 0x0078, 0x9c1e, 0xa182,
6756 + 0x0040, 0x0079, 0x9acb, 0x9ade, 0x9ae0, 0x9ade, 0x9ade, 0x9ade,
6757 + 0x9ade, 0x9ade, 0x9ae1, 0x9ade, 0x9ade, 0x9ade, 0x9ade, 0x9ade,
6758 + 0x9ade, 0x9ade, 0x9ade, 0x9ade, 0x9aec, 0x9ade, 0x1078, 0x1332,
6759 + 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20,
6760 + 0x2c10, 0x1078, 0x15fa, 0x007c, 0x0d7e, 0x1078, 0x5bc1, 0x0d7f,
6761 + 0x1078, 0xa495, 0x1078, 0x772d, 0x007c, 0xa182, 0x0040, 0x0079,
6762 + 0x9af9, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c,
6763 + 0x9b0e, 0x9b0c, 0x9b11, 0x9b3c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c,
6764 + 0x9b3c, 0x9b0c, 0x9b0c, 0x9b0c, 0x1078, 0x1332, 0x1078, 0x7773,
6765 + 0x007c, 0x1078, 0x627a, 0x1078, 0x639b, 0x6010, 0x0d7e, 0x2068,
6766 + 0x684c, 0xd0fc, 0x0040, 0x9b27, 0xa08c, 0x0003, 0xa18e, 0x0002,
6767 + 0x0040, 0x9b2f, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x9c1e, 0x6003,
6768 + 0x0007, 0x6017, 0x0000, 0x1078, 0x5bc1, 0x0d7f, 0x007c, 0x1078,
6769 + 0xa423, 0x0040, 0x9b35, 0x0d7f, 0x007c, 0x1078, 0x5bc1, 0x1078,
6770 + 0x772d, 0x0d7f, 0x0078, 0x9b2e, 0x037e, 0x1078, 0x627a, 0x1078,
6771 + 0x639b, 0x6010, 0x0d7e, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0040,
6772 + 0x9b5c, 0x684c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x9b58,
6773 + 0x687c, 0x632c, 0xa31a, 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a,
6774 + 0x6003, 0x0002, 0x0078, 0x9b6d, 0x2019, 0x0004, 0x1078, 0xa1ca,
6775 + 0x6014, 0xa005, 0x00c0, 0x9b69, 0x2001, 0xa8a3, 0x2004, 0x8003,
6776 + 0x6016, 0x6013, 0x0000, 0x6003, 0x0007, 0x0d7f, 0x037f, 0x007c,
6777 + 0xa186, 0x0013, 0x00c0, 0x9b7e, 0x6004, 0xa086, 0x0042, 0x10c0,
6778 + 0x1332, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x007c, 0xa186, 0x0027,
6779 + 0x0040, 0x9b86, 0xa186, 0x0014, 0x00c0, 0x9b96, 0x6004, 0xa086,
6780 + 0x0042, 0x10c0, 0x1332, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078,
6781 + 0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c, 0xa182, 0x0040,
6782 + 0x0079, 0x9b9a, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad,
6783 + 0x9bad, 0x9baf, 0x9bbb, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad,
6784 + 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x1078, 0x1332, 0x037e,
6785 + 0x047e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x15fa,
6786 + 0x047f, 0x037f, 0x007c, 0x6010, 0x0d7e, 0x2068, 0x6810, 0x6a14,
6787 + 0x6118, 0x210c, 0xd1bc, 0x0040, 0x9bda, 0x6124, 0xd1f4, 0x00c0,
6788 + 0x9bda, 0x007e, 0x047e, 0x057e, 0x6c7c, 0xa422, 0x6d80, 0x2200,
6789 + 0xa52b, 0x602c, 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x057f,
6790 + 0x047f, 0x007f, 0xa20d, 0x00c0, 0x9bee, 0x684c, 0xd0fc, 0x0040,
6791 + 0x9be6, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x9c1e, 0x6003, 0x0007,
6792 + 0x6017, 0x0000, 0x1078, 0x5bc1, 0x0d7f, 0x007c, 0x007e, 0x0f7e,
6793 + 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x007f, 0x0040, 0x9bfb, 0x6003,
6794 + 0x0002, 0x0d7f, 0x007c, 0x2009, 0xa60d, 0x210c, 0xd19c, 0x0040,
6795 + 0x9c05, 0x6003, 0x0007, 0x0078, 0x9c07, 0x6003, 0x0006, 0x1078,
6796 + 0x9c0d, 0x1078, 0x5bc3, 0x0d7f, 0x007c, 0xd2fc, 0x0040, 0x9c19,
6797 + 0x8002, 0x8000, 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0078,
6798 + 0x9c1b, 0x2009, 0x0015, 0x6a6a, 0x6866, 0x007c, 0xa182, 0x0040,
6799 + 0x0048, 0x9c24, 0x0079, 0x9c31, 0xa186, 0x0013, 0x0040, 0x9c2c,
6800 + 0xa186, 0x0014, 0x10c0, 0x1332, 0x6024, 0xd0dc, 0x1040, 0x1332,
6801 + 0x007c, 0x9c44, 0x9c4b, 0x9c57, 0x9c63, 0x9c44, 0x9c44, 0x9c44,
6802 + 0x9c72, 0x9c44, 0x9c46, 0x9c46, 0x9c44, 0x9c44, 0x9c44, 0x9c44,
6803 + 0x9c44, 0x9c44, 0x9c44, 0x9c44, 0x1078, 0x1332, 0x6024, 0xd0dc,
6804 + 0x1040, 0x1332, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a,
6805 + 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x6003,
6806 + 0x0001, 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091, 0x8000, 0x1078,
6807 + 0x62d1, 0x127f, 0x007c, 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078,
6808 + 0x1cf0, 0x127e, 0x2091, 0x8000, 0x1078, 0x5df6, 0x1078, 0x639b,
6809 + 0x127f, 0x007c, 0xa016, 0x1078, 0x15fa, 0x007c, 0x127e, 0x2091,
6810 + 0x8000, 0x037e, 0x0d7e, 0xa182, 0x0040, 0x1079, 0x9c83, 0x0d7f,
6811 + 0x037f, 0x127f, 0x007c, 0x9c93, 0x9c95, 0x9caa, 0x9cc9, 0x9c93,
6812 + 0x9c93, 0x9c93, 0x9ce1, 0x9c93, 0x9c93, 0x9c93, 0x9c93, 0x9c93,
6813 + 0x9c93, 0x9c93, 0x9c93, 0x1078, 0x1332, 0x6010, 0x2068, 0x684c,
6814 + 0xd0fc, 0x0040, 0x9cbf, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0040,
6815 + 0x9cbf, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, 0x1078, 0x62d1,
6816 + 0x0078, 0x9ce4, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x9cbf,
6817 + 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0040, 0x9cbf, 0x6003, 0x0001,
6818 + 0x6106, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x9ce4, 0x6013,
6819 + 0x0000, 0x6017, 0x0000, 0x2019, 0x0004, 0x1078, 0xa1ca, 0x0078,
6820 + 0x9ce4, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x9cbf, 0xa09c,
6821 + 0x0003, 0xa39e, 0x0003, 0x0040, 0x9cbf, 0x6003, 0x0003, 0x6106,
6822 + 0x2c10, 0x1078, 0x1cf0, 0x1078, 0x5df6, 0x1078, 0x639b, 0x0078,
6823 + 0x9ce4, 0xa016, 0x1078, 0x15fa, 0x007c, 0x1078, 0x61cd, 0x6110,
6824 + 0x81ff, 0x0040, 0x9cf6, 0x0d7e, 0x2168, 0x1078, 0xa4e2, 0x037e,
6825 + 0x2019, 0x0029, 0x1078, 0xa1ca, 0x037f, 0x0d7f, 0x1078, 0x8ec6,
6826 + 0x1078, 0x62d1, 0x007c, 0x1078, 0x627a, 0x6110, 0x81ff, 0x0040,
6827 + 0x9d0c, 0x0d7e, 0x2168, 0x1078, 0xa4e2, 0x037e, 0x2019, 0x0029,
6828 + 0x1078, 0xa1ca, 0x037f, 0x0d7f, 0x1078, 0x8ec6, 0x1078, 0x639b,
6829 + 0x007c, 0xa182, 0x0085, 0x0079, 0x9d15, 0x9d1e, 0x9d1c, 0x9d1c,
6830 + 0x9d2a, 0x9d1c, 0x9d1c, 0x9d1c, 0x1078, 0x1332, 0x6003, 0x000b,
6831 + 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1,
6832 + 0x127f, 0x007c, 0x027e, 0x0e7e, 0x1078, 0xa41c, 0x0040, 0x9d34,
6833 + 0x1078, 0x772d, 0x0078, 0x9d50, 0x2071, 0xab80, 0x7224, 0x6212,
6834 + 0x7220, 0x1078, 0xa069, 0x0040, 0x9d41, 0x6007, 0x0086, 0x0078,
6835 + 0x9d4a, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x00c0, 0x9d4a,
6836 + 0x6007, 0x0086, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1,
6837 + 0x0e7f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x9d64, 0x6004,
6838 + 0xa08a, 0x0085, 0x1048, 0x1332, 0xa08a, 0x008c, 0x10c8, 0x1332,
6839 + 0xa082, 0x0085, 0x0079, 0x9d7b, 0xa186, 0x0027, 0x0040, 0x9d70,
6840 + 0xa186, 0x0014, 0x0040, 0x9d70, 0x1078, 0x7773, 0x0078, 0x9d7a,
6841 + 0x2001, 0x0007, 0x1078, 0x4535, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6842 + 0x1078, 0x62d1, 0x007c, 0x9d82, 0x9d84, 0x9d84, 0x9d82, 0x9d82,
6843 + 0x9d82, 0x9d82, 0x1078, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6,
6844 + 0x1078, 0x62d1, 0x007c, 0xa182, 0x0085, 0x1048, 0x1332, 0xa182,
6845 + 0x008c, 0x10c8, 0x1332, 0xa182, 0x0085, 0x0079, 0x9d97, 0x9d9e,
6846 + 0x9d9e, 0x9d9e, 0x9da0, 0x9d9e, 0x9d9e, 0x9d9e, 0x1078, 0x1332,
6847 + 0x007c, 0xa186, 0x0013, 0x0040, 0x9db1, 0xa186, 0x0014, 0x0040,
6848 + 0x9db1, 0xa186, 0x0027, 0x0040, 0x9db1, 0x1078, 0x7773, 0x0078,
6849 + 0x9db7, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c,
6850 + 0x037e, 0x1078, 0xa495, 0x603f, 0x0000, 0x2019, 0x000b, 0x1078,
6851 + 0x9dc7, 0x601f, 0x0006, 0x6003, 0x0007, 0x037f, 0x007c, 0x127e,
6852 + 0x037e, 0x2091, 0x8000, 0x087e, 0x2c40, 0x097e, 0x2049, 0x0000,
6853 + 0x1078, 0x7246, 0x097f, 0x087f, 0x00c0, 0x9e02, 0x077e, 0x2c38,
6854 + 0x1078, 0x72f3, 0x077f, 0x00c0, 0x9e02, 0x6000, 0xa086, 0x0000,
6855 + 0x0040, 0x9e02, 0x601c, 0xa086, 0x0007, 0x0040, 0x9e02, 0x0d7e,
6856 + 0x6000, 0xa086, 0x0004, 0x00c0, 0x9df3, 0x1078, 0xa495, 0x601f,
6857 + 0x0007, 0x1078, 0x1757, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
6858 + 0x9dfb, 0x1078, 0xa1ca, 0x0d7f, 0x6013, 0x0000, 0x1078, 0xa495,
6859 + 0x601f, 0x0007, 0x037f, 0x127f, 0x007c, 0x0f7e, 0x0c7e, 0x037e,
6860 + 0x157e, 0x2079, 0xab80, 0x7938, 0x783c, 0x1078, 0x254d, 0x00c0,
6861 + 0x9e49, 0x017e, 0x0c7e, 0x1078, 0x45c4, 0x00c0, 0x9e49, 0x017f,
6862 + 0x027f, 0x027e, 0x017e, 0x2019, 0x0029, 0x1078, 0x73d0, 0x1078,
6863 + 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x077f, 0x017f,
6864 + 0x077e, 0x2039, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x1078, 0x47e9,
6865 + 0x027e, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040,
6866 + 0x9e3d, 0xa286, 0x0004, 0x00c0, 0x9e40, 0x62a0, 0x1078, 0x2942,
6867 + 0x027f, 0x017f, 0x1078, 0x42f8, 0x6612, 0x6516, 0xa006, 0x0078,
6868 + 0x9e4b, 0x0c7f, 0x017f, 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c,
6869 + 0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x2009, 0xa620, 0x2104, 0xa086,
6870 + 0x0074, 0x00c0, 0x9eb3, 0x2069, 0xab8e, 0x690c, 0xa182, 0x0100,
6871 + 0x0048, 0x9ea3, 0x6908, 0xa184, 0x8000, 0x0040, 0x9eaf, 0x6018,
6872 + 0x2070, 0x7010, 0xa084, 0x00ff, 0x0040, 0x9e72, 0x7000, 0xd0f4,
6873 + 0x0040, 0x9e76, 0xa184, 0x0800, 0x0040, 0x9eaf, 0x6910, 0xa18a,
6874 + 0x0001, 0x0048, 0x9ea7, 0x6914, 0x2069, 0xabae, 0x6904, 0x81ff,
6875 + 0x00c0, 0x9e9b, 0x690c, 0xa182, 0x0100, 0x0048, 0x9ea3, 0x6908,
6876 + 0x81ff, 0x00c0, 0x9e9f, 0x6910, 0xa18a, 0x0001, 0x0048, 0x9ea7,
6877 + 0x6918, 0xa18a, 0x0001, 0x0048, 0x9eaf, 0x0078, 0x9eb9, 0x6013,
6878 + 0x0100, 0x0078, 0x9eb5, 0x6013, 0x0300, 0x0078, 0x9eb5, 0x6013,
6879 + 0x0500, 0x0078, 0x9eb5, 0x6013, 0x0700, 0x0078, 0x9eb5, 0x6013,
6880 + 0x0900, 0x0078, 0x9eb5, 0x6013, 0x0b00, 0x0078, 0x9eb5, 0x6013,
6881 + 0x0f00, 0x0078, 0x9eb5, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0078,
6882 + 0x9eba, 0xa006, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x0c7e,
6883 + 0x0d7e, 0x027e, 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04, 0xa394,
6884 + 0x00ff, 0xa286, 0x0006, 0x0040, 0x9ee3, 0xa286, 0x0004, 0x0040,
6885 + 0x9ee3, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, 0x9ee3,
6886 + 0xa286, 0x0004, 0x0040, 0x9ee3, 0x0c7e, 0x2d60, 0x1078, 0x45d6,
6887 + 0x0c7f, 0x0078, 0x9f1e, 0x2011, 0xab96, 0xad98, 0x000a, 0x20a9,
6888 + 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f1f, 0x2011, 0xab9a, 0xad98,
6889 + 0x0006, 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f1f, 0x047e,
6890 + 0x017e, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0xa653,
6891 + 0x210c, 0xd1a4, 0x0040, 0x9f0b, 0x2009, 0x0029, 0x1078, 0xa21d,
6892 + 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e,
6893 + 0x2039, 0x0000, 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f,
6894 + 0x2001, 0x0007, 0x1078, 0x4535, 0x017f, 0x047f, 0xa006, 0x157f,
6895 + 0x037f, 0x027f, 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069, 0xab8e,
6896 + 0x6800, 0xa086, 0x0800, 0x0040, 0x9f31, 0x6013, 0x0000, 0x0078,
6897 + 0x9f32, 0xa006, 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e, 0x027e,
6898 + 0x037e, 0x157e, 0x2079, 0xab8c, 0x7930, 0x7834, 0x1078, 0x254d,
6899 + 0x00c0, 0x9f58, 0x1078, 0x45c4, 0x00c0, 0x9f58, 0x2011, 0xab90,
6900 + 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f58,
6901 + 0x2011, 0xab94, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x80de,
6902 + 0x157f, 0x037f, 0x027f, 0x017f, 0x0f7f, 0x0c7f, 0x007c, 0x0c7e,
6903 + 0x007e, 0x017e, 0x027e, 0x037e, 0x157e, 0x2011, 0xab83, 0x2204,
6904 + 0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x9f84, 0x1078, 0x45c4,
6905 + 0x00c0, 0x9f84, 0x2011, 0xab96, 0xac98, 0x000a, 0x20a9, 0x0004,
6906 + 0x1078, 0x80de, 0x00c0, 0x9f84, 0x2011, 0xab9a, 0xac98, 0x0006,
6907 + 0x20a9, 0x0004, 0x1078, 0x80de, 0x157f, 0x037f, 0x027f, 0x017f,
6908 + 0x007f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x087e, 0x077e, 0x067e,
6909 + 0x057e, 0x047e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2740, 0x2029,
6910 + 0xa8ba, 0x252c, 0x2021, 0xa8c0, 0x2424, 0x2061, 0xad00, 0x2071,
6911 + 0xa600, 0x7648, 0x7064, 0x81ff, 0x0040, 0x9fb2, 0x007e, 0xa186,
6912 + 0xa9b3, 0x007f, 0x0040, 0x9fb2, 0x8001, 0xa602, 0x00c8, 0xa01c,
6913 + 0x0078, 0x9fb5, 0xa606, 0x0040, 0xa01c, 0x2100, 0xac06, 0x0040,
6914 + 0xa012, 0x1078, 0xa242, 0x0040, 0xa012, 0x671c, 0xa786, 0x0001,
6915 + 0x0040, 0xa037, 0xa786, 0x0004, 0x0040, 0xa037, 0xa786, 0x0007,
6916 + 0x0040, 0xa012, 0x2500, 0xac06, 0x0040, 0xa012, 0x2400, 0xac06,
6917 + 0x0040, 0xa012, 0x1078, 0xa256, 0x00c0, 0xa012, 0x88ff, 0x0040,
6918 + 0x9fdd, 0x6020, 0xa906, 0x00c0, 0xa012, 0x0d7e, 0x6000, 0xa086,
6919 + 0x0004, 0x00c0, 0x9fe7, 0x017e, 0x1078, 0x1757, 0x017f, 0xa786,
6920 + 0x0008, 0x00c0, 0x9ff6, 0x1078, 0x8f00, 0x00c0, 0x9ff6, 0x1078,
6921 + 0x7c83, 0x0d7f, 0x1078, 0x8ec6, 0x0078, 0xa012, 0x6010, 0x2068,
6922 + 0x1078, 0x8d06, 0x0040, 0xa00f, 0xa786, 0x0003, 0x00c0, 0xa026,
6923 + 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0xa4e2, 0x017e,
6924 + 0x1078, 0x8f7d, 0x1078, 0x4a73, 0x017f, 0x1078, 0x8eb9, 0x0d7f,
6925 + 0x1078, 0x8ec6, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02,
6926 + 0x00c8, 0xa01c, 0x0078, 0x9f9f, 0x127f, 0x027f, 0x047f, 0x057f,
6927 + 0x067f, 0x077f, 0x087f, 0x0c7f, 0x0e7f, 0x007c, 0xa786, 0x0006,
6928 + 0x00c0, 0xa000, 0xa386, 0x0005, 0x0040, 0xa034, 0x1078, 0xa4e2,
6929 + 0x1078, 0xa1ca, 0x0078, 0xa00f, 0x0d7f, 0x0078, 0xa012, 0x1078,
6930 + 0xa256, 0x00c0, 0xa012, 0x81ff, 0x0040, 0xa012, 0xa180, 0x0001,
6931 + 0x2004, 0xa086, 0x0018, 0x0040, 0xa04c, 0xa180, 0x0001, 0x2004,
6932 + 0xa086, 0x002d, 0x00c0, 0xa012, 0x6000, 0xa086, 0x0002, 0x00c0,
6933 + 0xa012, 0x1078, 0x8eec, 0x0040, 0xa05d, 0x1078, 0x8f00, 0x00c0,
6934 + 0xa012, 0x1078, 0x7c83, 0x0078, 0xa065, 0x1078, 0x28a6, 0x1078,
6935 + 0x8f00, 0x00c0, 0xa065, 0x1078, 0x7c83, 0x1078, 0x8ec6, 0x0078,
6936 + 0xa012, 0x0c7e, 0x0e7e, 0x017e, 0x2c08, 0x2170, 0xa006, 0x1078,
6937 + 0xa1e6, 0x017f, 0x0040, 0xa079, 0x601c, 0xa084, 0x000f, 0x1079,
6938 + 0xa07c, 0x0e7f, 0x0c7f, 0x007c, 0xa084, 0xa084, 0xa084, 0xa084,
6939 + 0xa084, 0xa084, 0xa086, 0xa084, 0xa006, 0x007c, 0x047e, 0x017e,
6940 + 0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00,
6941 + 0x2009, 0x0020, 0x1078, 0xa21d, 0x017f, 0x047f, 0x037e, 0x2019,
6942 + 0x0002, 0x1078, 0x9dc7, 0x037f, 0xa085, 0x0001, 0x007c, 0x2001,
6943 + 0x0001, 0x1078, 0x44ee, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9,
6944 + 0x0004, 0x2019, 0xa605, 0x2011, 0xab96, 0x1078, 0x80de, 0x037f,
6945 + 0x027f, 0x017f, 0x157f, 0xa005, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e,
6946 + 0x087e, 0x077e, 0x067e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2740,
6947 + 0x2061, 0xad00, 0x2079, 0x0001, 0x8fff, 0x0040, 0xa11d, 0x2071,
6948 + 0xa600, 0x7648, 0x7064, 0x8001, 0xa602, 0x00c8, 0xa11d, 0x88ff,
6949 + 0x0040, 0xa0d8, 0x2800, 0xac06, 0x00c0, 0xa113, 0x2079, 0x0000,
6950 + 0x1078, 0xa242, 0x0040, 0xa113, 0x2400, 0xac06, 0x0040, 0xa113,
6951 + 0x671c, 0xa786, 0x0006, 0x00c0, 0xa113, 0xa786, 0x0007, 0x0040,
6952 + 0xa113, 0x88ff, 0x00c0, 0xa0f7, 0x6018, 0xa206, 0x00c0, 0xa113,
6953 + 0x85ff, 0x0040, 0xa0f7, 0x6020, 0xa106, 0x00c0, 0xa113, 0x0d7e,
6954 + 0x6000, 0xa086, 0x0004, 0x00c0, 0xa103, 0x1078, 0xa495, 0x601f,
6955 + 0x0007, 0x1078, 0x1757, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040,
6956 + 0xa10d, 0x047e, 0x1078, 0xa1ca, 0x047f, 0x0d7f, 0x1078, 0x8ec6,
6957 + 0x88ff, 0x00c0, 0xa127, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004,
6958 + 0xac02, 0x00c8, 0xa11d, 0x0078, 0xa0c4, 0xa006, 0x127f, 0x027f,
6959 + 0x067f, 0x077f, 0x087f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5,
6960 + 0x0001, 0x0078, 0xa11e, 0x077e, 0x057e, 0x087e, 0x2041, 0x0000,
6961 + 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6218, 0x097e, 0x2049,
6962 + 0x0000, 0x1078, 0x7246, 0x097f, 0x087f, 0x2039, 0x0000, 0x1078,
6963 + 0x72f3, 0x1078, 0xa0b5, 0x057f, 0x077f, 0x007c, 0x027e, 0x047e,
6964 + 0x057e, 0x077e, 0x0c7e, 0x157e, 0x2c20, 0x2128, 0x20a9, 0x007f,
6965 + 0x2009, 0x0000, 0x017e, 0x037e, 0x1078, 0x45c4, 0x00c0, 0xa16e,
6966 + 0x2c10, 0x057e, 0x087e, 0x2041, 0x0000, 0x2508, 0x2029, 0x0001,
6967 + 0x097e, 0x2049, 0x0000, 0x1078, 0x7246, 0x097f, 0x087f, 0x2039,
6968 + 0x0000, 0x1078, 0x72f3, 0x1078, 0xa0b5, 0x057f, 0x037f, 0x017f,
6969 + 0x8108, 0x00f0, 0xa152, 0x157f, 0x0c7f, 0x077f, 0x057f, 0x047f,
6970 + 0x027f, 0x007c, 0x077e, 0x057e, 0x6218, 0x087e, 0x2041, 0x0000,
6971 + 0x2029, 0x0001, 0x2019, 0x0048, 0x097e, 0x2049, 0x0000, 0x1078,
6972 + 0x7246, 0x097f, 0x087f, 0x2039, 0x0000, 0x1078, 0x72f3, 0x2c20,
6973 + 0x1078, 0xa0b5, 0x057f, 0x077f, 0x007c, 0x027e, 0x047e, 0x057e,
6974 + 0x077e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, 0x007f, 0x2009, 0x0000,
6975 + 0x017e, 0x037e, 0x1078, 0x45c4, 0x00c0, 0xa1be, 0x2c10, 0x087e,
6976 + 0x2041, 0x0000, 0x2828, 0x047e, 0x2021, 0x0001, 0x1078, 0xa472,
6977 + 0x047f, 0x097e, 0x2049, 0x0000, 0x1078, 0x7246, 0x097f, 0x087f,
6978 + 0x2039, 0x0000, 0x1078, 0x72f3, 0x1078, 0xa0b5, 0x037f, 0x017f,
6979 + 0x8108, 0x00f0, 0xa1a0, 0x157f, 0x0c7f, 0x077f, 0x057f, 0x047f,
6980 + 0x027f, 0x007c, 0x017e, 0x0f7e, 0xad82, 0xcd00, 0x0048, 0xa1e3,
6981 + 0xad82, 0xffff, 0x00c8, 0xa1e3, 0x6800, 0xa07d, 0x0040, 0xa1e0,
6982 + 0x6803, 0x0000, 0x6b52, 0x1078, 0x4a73, 0x2f68, 0x0078, 0xa1d4,
6983 + 0x6b52, 0x1078, 0x4a73, 0x0f7f, 0x017f, 0x007c, 0x0e7e, 0x047e,
6984 + 0x037e, 0x2061, 0xad00, 0xa005, 0x00c0, 0xa1f6, 0x2071, 0xa600,
6985 + 0x7448, 0x7064, 0x8001, 0xa402, 0x00c8, 0xa218, 0x2100, 0xac06,
6986 + 0x0040, 0xa20a, 0x6000, 0xa086, 0x0000, 0x0040, 0xa20a, 0x6008,
6987 + 0xa206, 0x00c0, 0xa20a, 0x6018, 0xa1a0, 0x0006, 0x2424, 0xa406,
6988 + 0x0040, 0xa214, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02,
6989 + 0x00c8, 0xa218, 0x0078, 0xa1f6, 0xa085, 0x0001, 0x0078, 0xa219,
6990 + 0xa006, 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e, 0x007e, 0x1078,
6991 + 0x138b, 0x007f, 0x1040, 0x1332, 0x6837, 0x010d, 0x685e, 0x027e,
6992 + 0x2010, 0x1078, 0x8cf2, 0x2001, 0x0000, 0x0040, 0xa233, 0x2200,
6993 + 0xa080, 0x0008, 0x2004, 0x027f, 0x684a, 0x6956, 0x6c46, 0x684f,
6994 + 0x0000, 0xa006, 0x68b2, 0x6802, 0x683a, 0x685a, 0x1078, 0x4a73,
6995 + 0x0d7f, 0x007c, 0x6700, 0xa786, 0x0000, 0x0040, 0xa255, 0xa786,
6996 + 0x0001, 0x0040, 0xa255, 0xa786, 0x000a, 0x0040, 0xa255, 0xa786,
6997 + 0x0009, 0x0040, 0xa255, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018,
6998 + 0x2070, 0x70a0, 0xa206, 0x0e7f, 0x007c, 0x017e, 0x6004, 0xa08e,
6999 + 0x001e, 0x00c0, 0xa277, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105,
7000 + 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0005, 0x2001,
7001 + 0xa8a3, 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x017f,
7002 + 0x007c, 0x0005, 0x0005, 0x007c, 0x6024, 0xd0e4, 0x0040, 0xa28d,
7003 + 0xd0cc, 0x0040, 0xa287, 0x1078, 0x8fbf, 0x0078, 0xa28d, 0x1078,
7004 + 0xa495, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x007c, 0xa280, 0x0007,
7005 + 0x2004, 0xa084, 0x000f, 0x0079, 0xa295, 0xa29e, 0xa29e, 0xa29e,
7006 + 0xa2a0, 0xa29e, 0xa2a0, 0xa2a0, 0xa29e, 0xa2a0, 0xa006, 0x007c,
7007 + 0xa085, 0x0001, 0x007c, 0xa280, 0x0007, 0x2004, 0xa084, 0x000f,
7008 + 0x0079, 0xa2aa, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3,
7009 + 0xa2be, 0xa2b3, 0xa2b3, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013,
7010 + 0x2a00, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x007c, 0x0c7e, 0x2260,
7011 + 0x1078, 0xa495, 0x603f, 0x0000, 0x6024, 0xc0f4, 0xc0cc, 0x6026,
7012 + 0x0c7f, 0x0d7e, 0x2268, 0xa186, 0x0007, 0x00c0, 0xa31f, 0x6810,
7013 + 0xa005, 0x0040, 0xa2dc, 0xa080, 0x0013, 0x2004, 0xd0fc, 0x00c0,
7014 + 0xa2dc, 0x0d7f, 0x0078, 0xa2b3, 0x6007, 0x003a, 0x6003, 0x0001,
7015 + 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7e, 0x2d60, 0x6100, 0xa186,
7016 + 0x0002, 0x00c0, 0xa3ad, 0x6010, 0xa005, 0x00c0, 0xa2f6, 0x6000,
7017 + 0xa086, 0x0007, 0x10c0, 0x1332, 0x0078, 0xa3ad, 0xa08c, 0xf000,
7018 + 0x00c0, 0xa302, 0x0078, 0xa302, 0x2068, 0x6800, 0xa005, 0x00c0,
7019 + 0xa2fc, 0x2d00, 0xa080, 0x0013, 0x2004, 0xa084, 0x0003, 0xa086,
7020 + 0x0002, 0x00c0, 0xa31b, 0x6010, 0x2068, 0x684c, 0xc0dc, 0xc0f4,
7021 + 0x684e, 0x6850, 0xc0f4, 0xc0fc, 0x6852, 0x2009, 0x0043, 0x1078,
7022 + 0x9c1e, 0x0078, 0xa3ad, 0x2009, 0x0041, 0x0078, 0xa3a7, 0xa186,
7023 + 0x0005, 0x00c0, 0xa366, 0x6810, 0xa080, 0x0013, 0x2004, 0xd0bc,
7024 + 0x00c0, 0xa32d, 0x0d7f, 0x0078, 0xa2b3, 0xd0b4, 0x0040, 0xa335,
7025 + 0xd0fc, 0x1040, 0x1332, 0x0078, 0xa2cf, 0x6007, 0x003a, 0x6003,
7026 + 0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7e, 0x2d60, 0x6100,
7027 + 0xa186, 0x0002, 0x0040, 0xa348, 0xa186, 0x0004, 0x00c0, 0xa3ad,
7028 + 0x2071, 0xa8e7, 0x7000, 0xa086, 0x0003, 0x00c0, 0xa355, 0x7004,
7029 + 0xac06, 0x00c0, 0xa355, 0x7003, 0x0000, 0x6810, 0xa080, 0x0013,
7030 + 0x200c, 0xc1f4, 0xc1dc, 0x2102, 0x8000, 0x200c, 0xc1f4, 0xc1fc,
7031 + 0xc1bc, 0x2102, 0x2009, 0x0042, 0x0078, 0xa3a7, 0x037e, 0x0d7e,
7032 + 0x0d7e, 0x1078, 0x138b, 0x037f, 0x1040, 0x1332, 0x6837, 0x010d,
7033 + 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x6b5e, 0x6857,
7034 + 0x0045, 0x2c00, 0x6862, 0x6034, 0x6872, 0x2360, 0x6024, 0xc0dd,
7035 + 0x6026, 0x6018, 0xa080, 0x0028, 0x2004, 0xa084, 0x00ff, 0x8007,
7036 + 0x6320, 0x6b4a, 0x6846, 0x684f, 0x0000, 0x6d6a, 0x6e66, 0x686f,
7037 + 0x0001, 0x1078, 0x4a73, 0x2019, 0x0045, 0x6008, 0x2068, 0x1078,
7038 + 0x9dc7, 0x2d00, 0x600a, 0x601f, 0x0006, 0x6003, 0x0007, 0x6017,
7039 + 0x0000, 0x603f, 0x0000, 0x0d7f, 0x037f, 0x0078, 0xa3ae, 0x603f,
7040 + 0x0000, 0x6003, 0x0007, 0x1078, 0x9c1e, 0x0c7f, 0x0d7f, 0x007c,
7041 + 0xa186, 0x0013, 0x00c0, 0xa3ba, 0x6004, 0xa082, 0x0085, 0x2008,
7042 + 0x0079, 0xa3d4, 0xa186, 0x0027, 0x00c0, 0xa3cd, 0x1078, 0x61cd,
7043 + 0x037e, 0x0d7e, 0x6010, 0x2068, 0x2019, 0x0004, 0x1078, 0xa1ca,
7044 + 0x0d7f, 0x037f, 0x1078, 0x62d1, 0x007c, 0xa186, 0x0014, 0x0040,
7045 + 0xa3be, 0x1078, 0x7773, 0x007c, 0xa3dd, 0xa3db, 0xa3db, 0xa3db,
7046 + 0xa3db, 0xa3db, 0xa3dd, 0x1078, 0x1332, 0x1078, 0x61cd, 0x6003,
7047 + 0x000c, 0x1078, 0x62d1, 0x007c, 0xa182, 0x008c, 0x00c8, 0xa3ee,
7048 + 0xa182, 0x0085, 0x0048, 0xa3ee, 0x0079, 0xa3f1, 0x1078, 0x7773,
7049 + 0x007c, 0xa3f8, 0xa3f8, 0xa3f8, 0xa3f8, 0xa3fa, 0xa419, 0xa3f8,
7050 + 0x1078, 0x1332, 0x0d7e, 0x2c68, 0x1078, 0x76c7, 0x0040, 0xa414,
7051 + 0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0xab8e, 0x210c, 0x6136,
7052 + 0x2009, 0xab8f, 0x210c, 0x613a, 0x600b, 0xffff, 0x6918, 0x611a,
7053 + 0x601f, 0x0004, 0x1078, 0x5d8a, 0x2d60, 0x1078, 0x772d, 0x0d7f,
7054 + 0x007c, 0x1078, 0x772d, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x7000,
7055 + 0xd0ec, 0x0e7f, 0x007c, 0x6010, 0xa08c, 0xf000, 0x0040, 0xa471,
7056 + 0xa080, 0x0013, 0x200c, 0xd1ec, 0x0040, 0xa471, 0x2001, 0xa672,
7057 + 0x2004, 0xd0ec, 0x0040, 0xa471, 0x6003, 0x0002, 0x6024, 0xc0e5,
7058 + 0x6026, 0xd1ac, 0x0040, 0xa44f, 0x0f7e, 0x2c78, 0x1078, 0x495f,
7059 + 0x0f7f, 0x0040, 0xa44f, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x2009,
7060 + 0xa672, 0x210c, 0xd1f4, 0x00c0, 0xa46f, 0x0078, 0xa461, 0x2009,
7061 + 0xa672, 0x210c, 0xd1f4, 0x0040, 0xa45b, 0x6024, 0xc0e4, 0x6026,
7062 + 0xa006, 0x0078, 0xa471, 0x2001, 0xa8a4, 0x200c, 0x8103, 0xa100,
7063 + 0x603e, 0x6018, 0xa088, 0x002b, 0x2104, 0xa005, 0x0040, 0xa46c,
7064 + 0xa088, 0x0003, 0x0078, 0xa464, 0x2c0a, 0x600f, 0x0000, 0xa085,
7065 + 0x0001, 0x007c, 0x017e, 0x0c7e, 0x0e7e, 0x6120, 0xa2f0, 0x002b,
7066 + 0x2e04, 0x2060, 0x8cff, 0x0040, 0xa491, 0x84ff, 0x00c0, 0xa484,
7067 + 0x6020, 0xa106, 0x00c0, 0xa48c, 0x600c, 0x2072, 0x1078, 0x5bc1,
7068 + 0x1078, 0x772d, 0x0078, 0xa48e, 0xacf0, 0x0003, 0x2e64, 0x0078,
7069 + 0xa47a, 0x0e7f, 0x0c7f, 0x017f, 0x007c, 0x0d7e, 0x6018, 0xa0e8,
7070 + 0x002b, 0x2d04, 0xa005, 0x0040, 0xa4a7, 0xac06, 0x0040, 0xa4a5,
7071 + 0x2d04, 0xa0e8, 0x0003, 0x0078, 0xa499, 0x600c, 0x206a, 0x0d7f,
7072 + 0x007c, 0x027e, 0x037e, 0x157e, 0x2011, 0xa626, 0x2204, 0xa084,
7073 + 0x00ff, 0x2019, 0xab8e, 0x2334, 0xa636, 0x00c0, 0xa4d5, 0x8318,
7074 + 0x2334, 0x2204, 0xa084, 0xff00, 0xa636, 0x00c0, 0xa4d5, 0x2011,
7075 + 0xab90, 0x6018, 0xa098, 0x000a, 0x20a9, 0x0004, 0x1078, 0x80de,
7076 + 0x00c0, 0xa4d5, 0x2011, 0xab94, 0x6018, 0xa098, 0x0006, 0x20a9,
7077 + 0x0004, 0x1078, 0x80de, 0x00c0, 0xa4d5, 0x157f, 0x037f, 0x027f,
7078 + 0x007c, 0x0e7e, 0x2071, 0xa600, 0x1078, 0x42b8, 0x1078, 0x2677,
7079 + 0x0e7f, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x7000, 0xd0fc, 0x0040,
7080 + 0xa4eb, 0x1078, 0xa4ed, 0x0e7f, 0x007c, 0x6850, 0xc0e5, 0x6852,
7081 + 0x007c, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x057e, 0x047e, 0x027e,
7082 + 0x017e, 0x127e, 0x2091, 0x8000, 0x2029, 0xa8ba, 0x252c, 0x2021,
7083 + 0xa8c0, 0x2424, 0x2061, 0xad00, 0x2071, 0xa600, 0x7648, 0x7064,
7084 + 0xa606, 0x0040, 0xa545, 0x671c, 0xa786, 0x0001, 0x0040, 0xa514,
7085 + 0xa786, 0x0008, 0x00c0, 0xa53b, 0x2500, 0xac06, 0x0040, 0xa53b,
7086 + 0x2400, 0xac06, 0x0040, 0xa53b, 0x1078, 0xa242, 0x0040, 0xa53b,
7087 + 0x1078, 0xa256, 0x00c0, 0xa53b, 0x6000, 0xa086, 0x0004, 0x00c0,
7088 + 0xa52d, 0x017e, 0x1078, 0x1757, 0x017f, 0x1078, 0x8eec, 0x00c0,
7089 + 0xa533, 0x1078, 0x28a6, 0x1078, 0x8f00, 0x00c0, 0xa539, 0x1078,
7090 + 0x7c83, 0x1078, 0x8ec6, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004,
7091 + 0xac02, 0x00c8, 0xa545, 0x0078, 0xa504, 0x127f, 0x017f, 0x027f,
7092 + 0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0x127e,
7093 + 0x007e, 0x0e7e, 0x017e, 0x2091, 0x8000, 0x2071, 0xa640, 0xd5a4,
7094 + 0x0040, 0xa55d, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0xa563,
7095 + 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0xa579, 0x2500, 0xa084,
7096 + 0x0007, 0xa08e, 0x0003, 0x0040, 0xa579, 0xa08e, 0x0004, 0x0040,
7097 + 0xa579, 0xa08e, 0x0005, 0x0040, 0xa579, 0x2071, 0xa64a, 0x1078,
7098 + 0xa5ba, 0x017f, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e,
7099 + 0x0e7e, 0x017e, 0x2091, 0x8000, 0x2071, 0xa640, 0xd5a4, 0x0040,
7100 + 0xa58c, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0xa592, 0x7030,
7101 + 0x8000, 0x7032, 0xd5ac, 0x0040, 0xa5a8, 0x2500, 0xa084, 0x0007,
7102 + 0xa08e, 0x0003, 0x0040, 0xa5a8, 0xa08e, 0x0004, 0x0040, 0xa5a8,
7103 + 0xa08e, 0x0005, 0x0040, 0xa5a8, 0x2071, 0xa64a, 0x1078, 0xa5ba,
7104 + 0x017f, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e,
7105 + 0x2091, 0x8000, 0x2071, 0xa642, 0x1078, 0xa5ba, 0x0e7f, 0x007f,
7106 + 0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, 0x00c8, 0xa5c3, 0x8e70,
7107 + 0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, 0x2071, 0xa640, 0x1078,
7108 + 0xa5ba, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa644, 0x1078, 0xa5ba,
7109 + 0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071,
7110 + 0xa640, 0x7044, 0x8000, 0x7046, 0x0e7f, 0x007f, 0x127f, 0x007c,
7111 + 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
7112 + 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000,
7115 +#ifdef UNIQUE_FW_NAME
7116 +unsigned short fw2100tp_length01 = 0x95f1;
7118 +unsigned short risc_code_length01 = 0x95f1;
7121 --- /dev/null Thu Apr 11 07:25:15 2002
7122 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/ql2200ip_fw.c Thu Jul 3 15:34:42 2003
7124 +/******************************************************************************
7125 + * QLOGIC LINUX SOFTWARE
7127 + * QLogic ISP2x00 device driver for Linux 2.5.x
7128 + * Copyright (C) 2003 Qlogic Corporation
7129 + * (www.qlogic.com)
7131 + * This program is free software; you can redistribute it and/or modify it
7132 + * under the terms of the GNU General Public License as published by the
7133 + * Free Software Foundation; either version 2, or (at your option) any
7136 + * This program is distributed in the hope that it will be useful, but
7137 + * WITHOUT ANY WARRANTY; without even the implied warranty of
7138 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7139 + * General Public License for more details.
7141 + *************************************************************************/
7143 +/************************************************************************
7145 + * -- ISP2200 Initiator/Target Firmware --- *
7146 + * IP and SCSI, Fabric (Public Loop), Point-point, and *
7147 + * expanded LUN addressing for FCTAPE *
7149 + ************************************************************************/
7152 + * Firmware Version 2.02.05 (13:47 Apr 25, 2003)
7155 +#ifdef UNIQUE_FW_NAME
7156 +unsigned short fw2200ip_version = 2*1024+2;
7158 +unsigned short risc_code_version = 2*1024+2;
7161 +#ifdef UNIQUE_FW_NAME
7162 +unsigned char fw2200ip_version_str[] = {2,2,5};
7164 +unsigned char firmware_version[] = {2,2,5};
7167 +#ifdef UNIQUE_FW_NAME
7168 +#define fw2200ip_VERSION_STRING "2.02.05"
7170 +#define FW_VERSION_STRING "2.02.05"
7173 +#ifdef UNIQUE_FW_NAME
7174 +unsigned short fw2200ip_addr01 = 0x1000 ;
7176 +unsigned short risc_code_addr01 = 0x1000 ;
7179 +#ifdef UNIQUE_FW_NAME
7180 +unsigned short fw2200ip_code01[] = {
7182 +unsigned short risc_code01[] = {
7184 + 0x0470, 0x0000, 0x0000, 0xb5c6, 0x0000, 0x0002, 0x0002, 0x0005,
7185 + 0x0037, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030,
7186 + 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241,
7187 + 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3232, 0x3030, 0x2046, 0x6972,
7188 + 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030,
7189 + 0x322e, 0x3032, 0x2e30, 0x3520, 0x2020, 0x2020, 0x2400, 0x20c1,
7190 + 0x0005, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9, 0xcbff, 0x2091,
7191 + 0x2000, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x2b14,
7192 + 0x2051, 0xc600, 0x2a70, 0x2029, 0xfe00, 0x2031, 0xffff, 0x2039,
7193 + 0xfde9, 0x2021, 0x0200, 0x0804, 0x146c, 0x20a1, 0xc5c6, 0xa00e,
7194 + 0x20a9, 0x083a, 0x41a4, 0x3400, 0x7562, 0x7666, 0x775e, 0x746a,
7195 + 0x746e, 0x20a1, 0xce00, 0x7164, 0x810d, 0x810d, 0x810d, 0x810d,
7196 + 0xa18c, 0x000f, 0x2001, 0x000c, 0xa112, 0xa00e, 0x21a8, 0x41a4,
7197 + 0x3400, 0x8211, 0x1dd8, 0x7164, 0x3400, 0xa102, 0x0120, 0x0218,
7198 + 0x20a8, 0xa00e, 0x41a4, 0x3800, 0xd08c, 0x01d8, 0x2009, 0xc600,
7199 + 0x810d, 0x810d, 0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0001,
7200 + 0xa112, 0x20a1, 0x1000, 0xa00e, 0x21a8, 0x41a4, 0x8211, 0x1de0,
7201 + 0x2009, 0xc600, 0x3400, 0xa102, 0x0120, 0x0218, 0x20a8, 0xa00e,
7202 + 0x41a4, 0x080c, 0x1415, 0x080c, 0x163c, 0x080c, 0x17de, 0x080c,
7203 + 0x2061, 0x080c, 0x4f3b, 0x080c, 0x9585, 0x080c, 0x15bf, 0x080c,
7204 + 0x306e, 0x080c, 0x61dd, 0x080c, 0x5743, 0x080c, 0x7147, 0x080c,
7205 + 0x6edf, 0x080c, 0x265b, 0x080c, 0x7860, 0x080c, 0x68c0, 0x080c,
7206 + 0x2515, 0x080c, 0x2629, 0x2091, 0x3009, 0x7823, 0x0000, 0x1004,
7207 + 0x10c7, 0x7820, 0xa086, 0x0002, 0x1150, 0x7823, 0x4000, 0x0e04,
7208 + 0x10bf, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70,
7209 + 0x7003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003, 0x1168, 0x080c,
7210 + 0x40b9, 0x080c, 0x3095, 0x080c, 0x622b, 0x080c, 0x5943, 0x080c,
7211 + 0x7184, 0x080c, 0x6f0a, 0x0c70, 0x000b, 0x0c88, 0x10e8, 0x10e9,
7212 + 0x1214, 0x10e6, 0x12e1, 0x1412, 0x1413, 0x1414, 0x080c, 0x1519,
7213 + 0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, 0xa086, 0x0001,
7214 + 0x1904, 0x11f1, 0x080c, 0x158c, 0x080c, 0x5f22, 0x0150, 0x080c,
7215 + 0x5f48, 0x15c0, 0x2079, 0x0100, 0x7828, 0xa085, 0x1800, 0x782a,
7216 + 0x0488, 0x080c, 0x5e5a, 0x7000, 0xa086, 0x0001, 0x1904, 0x11f1,
7217 + 0x708c, 0xa086, 0x0028, 0x1904, 0x11f1, 0x2001, 0x0161, 0x2003,
7218 + 0x0001, 0x2079, 0x0100, 0x7827, 0xffff, 0x7a28, 0xa295, 0x1e2f,
7219 + 0x7a2a, 0x2011, 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8, 0x080c,
7220 + 0x7070, 0x2011, 0x5e37, 0x080c, 0x6fad, 0x2011, 0x4e18, 0x080c,
7221 + 0x6fad, 0x2011, 0x8030, 0x2019, 0x0000, 0x708b, 0x0000, 0x080c,
7222 + 0x1eae, 0x00e8, 0x080c, 0x47cb, 0x2079, 0x0100, 0x7844, 0xa005,
7223 + 0x1904, 0x11f1, 0x2011, 0x4e18, 0x080c, 0x6fad, 0x2011, 0x5e37,
7224 + 0x080c, 0x6fad, 0x080c, 0x1eae, 0x2001, 0xc8d4, 0x2004, 0x780e,
7225 + 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010, 0x73cc, 0x080c,
7226 + 0x407d, 0x723c, 0xc284, 0x723e, 0x2001, 0xc60c, 0x200c, 0xc1ac,
7227 + 0x2102, 0x080c, 0x8dca, 0x2011, 0x0004, 0x080c, 0xac97, 0x080c,
7228 + 0x55e1, 0x080c, 0x5f22, 0x0158, 0x080c, 0x4f24, 0x0140, 0x708b,
7229 + 0x0001, 0x70c7, 0x0000, 0x080c, 0x4968, 0x0804, 0x11f1, 0x080c,
7230 + 0x570b, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, 0x0060, 0x7073, 0x0000,
7231 + 0x080c, 0xb03f, 0x70d4, 0xd09c, 0x1128, 0x70a0, 0xa005, 0x0110,
7232 + 0x080c, 0x4f02, 0x70df, 0x0000, 0x70db, 0x0000, 0x72d4, 0x080c,
7233 + 0x5f22, 0x1178, 0x2011, 0x0000, 0x0016, 0x080c, 0x2a95, 0x2019,
7234 + 0xc8d6, 0x211a, 0x001e, 0x7053, 0xffff, 0x7057, 0x00ef, 0x7077,
7235 + 0x0000, 0x2079, 0xc652, 0x7804, 0xd0ac, 0x0108, 0xc295, 0x72d6,
7236 + 0x080c, 0x5f22, 0x0118, 0xa296, 0x0004, 0x0548, 0x2011, 0x0001,
7237 + 0x080c, 0xac97, 0x709b, 0x0000, 0x709f, 0xffff, 0x7003, 0x0002,
7238 + 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0xa085, 0x0003, 0x782a,
7239 + 0x00fe, 0x080c, 0x2c62, 0x2011, 0x0005, 0x080c, 0x8f0e, 0x080c,
7240 + 0x7e94, 0x080c, 0x5f22, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016,
7241 + 0x080c, 0x2a95, 0x61e2, 0x001e, 0x00ce, 0x012e, 0x0420, 0x709b,
7242 + 0x0000, 0x709f, 0xffff, 0x7003, 0x0002, 0x00f6, 0x2079, 0x0100,
7243 + 0x7827, 0x0003, 0x7828, 0xa085, 0x0003, 0x782a, 0x00fe, 0x2011,
7244 + 0x0005, 0x080c, 0x8f0e, 0x080c, 0x7e94, 0x080c, 0x5f22, 0x0148,
7245 + 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, 0x2a95, 0x61e2, 0x001e,
7246 + 0x00ce, 0x00fe, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f22, 0x1118,
7247 + 0x20a9, 0x0100, 0x0010, 0x20a9, 0x0082, 0x080c, 0x5f22, 0x1118,
7248 + 0x2009, 0x0000, 0x0010, 0x2009, 0x007e, 0x080c, 0x2f41, 0x8108,
7249 + 0x1f04, 0x1205, 0x00ce, 0x7073, 0x0000, 0x7074, 0xa084, 0x00ff,
7250 + 0x7076, 0x70a3, 0x0000, 0x0005, 0x0126, 0x2091, 0x8000, 0x7000,
7251 + 0xa086, 0x0002, 0x1904, 0x12df, 0x709c, 0xa086, 0xffff, 0x0130,
7252 + 0x080c, 0x2c62, 0x080c, 0x7e94, 0x0804, 0x12df, 0x70d4, 0xd0ac,
7253 + 0x1110, 0xd09c, 0x0540, 0xd084, 0x0530, 0x0006, 0x0016, 0x2001,
7254 + 0x0103, 0x2009, 0xc8d4, 0x210c, 0x2102, 0x001e, 0x000e, 0xd08c,
7255 + 0x01d0, 0x70d8, 0xa086, 0xffff, 0x0190, 0x080c, 0x2dc1, 0x080c,
7256 + 0x7e94, 0x70d4, 0xd094, 0x1904, 0x12df, 0x2011, 0x0001, 0x2019,
7257 + 0x0000, 0x080c, 0x2df9, 0x080c, 0x7e94, 0x0804, 0x12df, 0x70dc,
7258 + 0xa005, 0x1904, 0x12df, 0x7098, 0xa005, 0x1904, 0x12df, 0x70d4,
7259 + 0xd0a4, 0x0118, 0xd0b4, 0x0904, 0x12df, 0x080c, 0x570b, 0x1904,
7260 + 0x12df, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x01c8, 0x0156, 0x00c6,
7261 + 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x533d, 0x1118,
7262 + 0x6000, 0xd0ec, 0x1138, 0x001e, 0x8108, 0x1f04, 0x126c, 0x00ce,
7263 + 0x015e, 0x0028, 0x001e, 0x00ce, 0x015e, 0x0804, 0x12df, 0x0006,
7264 + 0x0016, 0x2001, 0x0103, 0x2009, 0xc8d4, 0x210c, 0x2102, 0x001e,
7265 + 0x000e, 0x71a8, 0x81ff, 0x11b0, 0xa006, 0x2009, 0x0200, 0x20a9,
7266 + 0x0002, 0x20a1, 0xc925, 0x40a1, 0x2009, 0x0700, 0x20a9, 0x0002,
7267 + 0x20a1, 0xc915, 0x40a1, 0x7070, 0x8007, 0x7174, 0x810f, 0x20a9,
7268 + 0x0002, 0x40a1, 0x20a1, 0xc919, 0x2009, 0x0000, 0x080c, 0x14ff,
7269 + 0x2001, 0x0000, 0x810f, 0x20a9, 0x0002, 0x40a1, 0x7030, 0xc08c,
7270 + 0x7032, 0x7003, 0x0003, 0x709f, 0xffff, 0x080c, 0x1585, 0xa006,
7271 + 0x080c, 0x296d, 0x080c, 0x40ef, 0x00f6, 0x2079, 0x0100, 0x080c,
7272 + 0x5f48, 0x0150, 0x080c, 0x5f22, 0x7828, 0x0118, 0xa084, 0xe1ff,
7273 + 0x0010, 0xa084, 0xffdf, 0x782a, 0x00fe, 0x2001, 0xc928, 0x2004,
7274 + 0xa086, 0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x8f0e, 0x2011,
7275 + 0x0000, 0x080c, 0x8f18, 0x080c, 0x7e94, 0x080c, 0x7f6e, 0x012e,
7276 + 0x0005, 0x0016, 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079,
7277 + 0x0100, 0x2009, 0xc634, 0x2104, 0xa005, 0x1110, 0x080c, 0x2ac1,
7278 + 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x7940, 0xa18c, 0x0010, 0x7942,
7279 + 0x7924, 0xd1b4, 0x0110, 0x7827, 0x0040, 0xd19c, 0x0110, 0x7827,
7280 + 0x0008, 0x0006, 0x0036, 0x0156, 0x7954, 0xd1ac, 0x1904, 0x134f,
7281 + 0x080c, 0x5f34, 0x0158, 0x080c, 0x5f48, 0x1128, 0x2001, 0xc8e5,
7282 + 0x2003, 0x0000, 0x0070, 0x080c, 0x5f2a, 0x0dc0, 0x2001, 0xc8e5,
7283 + 0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e5a,
7284 + 0x0058, 0x080c, 0x5f22, 0x0140, 0x2009, 0x00f8, 0x080c, 0x4eeb,
7285 + 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c,
7286 + 0x1138, 0x080c, 0x5f22, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x13f9,
7287 + 0x1f04, 0x132e, 0x0070, 0x7824, 0x080c, 0x5f3e, 0x0118, 0xd0ac,
7288 + 0x1904, 0x13f9, 0xa084, 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804,
7289 + 0x13f9, 0x2001, 0x0001, 0x080c, 0x296d, 0x0804, 0x1408, 0x7850,
7290 + 0xa084, 0x0180, 0x7852, 0x782f, 0x0020, 0x20a9, 0x0046, 0x1d04,
7291 + 0x1357, 0x080c, 0x7058, 0x1f04, 0x1357, 0x7850, 0xa084, 0x0180,
7292 + 0xa085, 0x0400, 0x7852, 0x782f, 0x0000, 0x080c, 0x5f34, 0x0158,
7293 + 0x080c, 0x5f48, 0x1128, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x0070,
7294 + 0x080c, 0x5f2a, 0x0dc0, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x2001,
7295 + 0xc8e6, 0x2003, 0x0001, 0x080c, 0x5e5a, 0x0020, 0x2009, 0x00f8,
7296 + 0x080c, 0x4eeb, 0x20a9, 0x000e, 0xe000, 0x1f04, 0x1384, 0x7850,
7297 + 0xa084, 0x0180, 0xa085, 0x1400, 0x7852, 0x080c, 0x5f22, 0x0120,
7298 + 0x7843, 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, 0x2019, 0xea60,
7299 + 0x7820, 0xd09c, 0x1558, 0x080c, 0x5f22, 0x05d8, 0x7824, 0xd0ac,
7300 + 0x1904, 0x13f9, 0x080c, 0x5f48, 0x1508, 0x0046, 0x2021, 0x0190,
7301 + 0x8421, 0x1df0, 0x004e, 0x8421, 0x11c8, 0x7827, 0x0048, 0x20a9,
7302 + 0x01f4, 0x1d04, 0x13b1, 0x080c, 0x7058, 0x1f04, 0x13b1, 0x7824,
7303 + 0xa084, 0x0068, 0x15c8, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x2001,
7304 + 0xc8e6, 0x2003, 0x0001, 0x7003, 0x0001, 0x0498, 0x1d04, 0x13ca,
7305 + 0x080c, 0x7058, 0x8319, 0x1960, 0x2009, 0xc634, 0x2104, 0x8000,
7306 + 0x200a, 0xa084, 0xfff0, 0x0120, 0x200b, 0x0000, 0x080c, 0x2ac1,
7307 + 0x00d8, 0x080c, 0x5f34, 0x1140, 0xa4a2, 0x0064, 0x1128, 0x080c,
7308 + 0x5ef9, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800, 0xe000, 0xe000,
7309 + 0x7824, 0x080c, 0x5f3e, 0x0110, 0xd0ac, 0x1158, 0xa084, 0x1800,
7310 + 0x09a8, 0x7003, 0x0001, 0x0028, 0x2001, 0x0001, 0x080c, 0x296d,
7311 + 0x0048, 0x2001, 0xc634, 0x2003, 0x0000, 0x7827, 0x0048, 0x7828,
7312 + 0xc09d, 0x782a, 0x7850, 0xa084, 0x0180, 0xa085, 0x0400, 0x7852,
7313 + 0x015e, 0x003e, 0x000e, 0x080c, 0x155c, 0x012e, 0x00fe, 0x004e,
7314 + 0x001e, 0x0005, 0x0005, 0x0005, 0x0005, 0x2a70, 0x2061, 0xc908,
7315 + 0x2063, 0x0002, 0x6007, 0x0002, 0x600b, 0x0005, 0x600f, 0x0037,
7316 + 0x2001, 0xc8e5, 0x2003, 0x0000, 0x708b, 0x0000, 0x2009, 0x0100,
7317 + 0x2104, 0xa082, 0x0002, 0x0218, 0x7053, 0xffff, 0x0010, 0x7053,
7318 + 0x0000, 0x705b, 0xffff, 0x7073, 0x0000, 0x7077, 0x0000, 0x080c,
7319 + 0xb03f, 0x2061, 0xc8d5, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b,
7320 + 0x8800, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x001f, 0x601b,
7321 + 0x0000, 0x601f, 0x07d0, 0x2061, 0xc8dd, 0x6003, 0x8000, 0x6007,
7322 + 0x0000, 0x600b, 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017,
7323 + 0x0000, 0x601b, 0x0001, 0x601f, 0x0000, 0x2061, 0xc900, 0x6003,
7324 + 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001,
7325 + 0xc628, 0x2003, 0x0000, 0x0005, 0x04a0, 0x2011, 0x0000, 0x81ff,
7326 + 0x0570, 0xa186, 0x0001, 0x1148, 0x2031, 0x8fff, 0x2039, 0xe601,
7327 + 0x2021, 0x0100, 0x2029, 0xe600, 0x00e8, 0xa186, 0x0002, 0x1118,
7328 + 0x2011, 0x0000, 0x00b8, 0xa186, 0x0005, 0x1118, 0x2011, 0x0001,
7329 + 0x0088, 0xa186, 0x0009, 0x1118, 0x2011, 0x0002, 0x0058, 0xa186,
7330 + 0x000a, 0x1118, 0x2011, 0x0002, 0x0028, 0xa186, 0x0055, 0x1110,
7331 + 0x2011, 0x0003, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x0804,
7332 + 0x104d, 0xa00e, 0x2011, 0x0003, 0x2019, 0x14a8, 0x0804, 0x14f9,
7333 + 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2c14, 0x2362, 0xe000, 0xe000,
7334 + 0x2c04, 0xa306, 0x2262, 0x1110, 0xc1b5, 0xc1a5, 0x2011, 0x0000,
7335 + 0x2019, 0x14bb, 0x04f0, 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2c14,
7336 + 0x2362, 0xe000, 0xe000, 0x2c1c, 0x2061, 0x7fff, 0xe000, 0xe000,
7337 + 0x2c04, 0x2061, 0xffff, 0x2262, 0xa306, 0x0110, 0xc18d, 0x0008,
7338 + 0xc185, 0x2011, 0x0002, 0x2019, 0x14d6, 0x0418, 0x2061, 0xffff,
7339 + 0x2019, 0xaaaa, 0x2c14, 0x2362, 0xe000, 0xe000, 0x2c04, 0x2262,
7340 + 0xa306, 0x1180, 0x2c14, 0x2362, 0xe000, 0xe000, 0x2c1c, 0x2061,
7341 + 0x7fff, 0x2c04, 0x2061, 0xffff, 0x2262, 0xa306, 0x1110, 0xc195,
7342 + 0x0008, 0xc19d, 0x2011, 0x0001, 0x2019, 0x14f7, 0x0010, 0x0804,
7343 + 0x146d, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x0837, 0x2011,
7344 + 0x0000, 0x080c, 0x533d, 0x1178, 0x6004, 0xa0c4, 0x00ff, 0xa8c6,
7345 + 0x0006, 0x0128, 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x1120, 0xa186,
7346 + 0x0080, 0x0108, 0x8210, 0x8108, 0xa186, 0x0100, 0x1d50, 0x2208,
7347 + 0x0005, 0x2091, 0x8000, 0x0e04, 0x151b, 0x0006, 0x0016, 0x2079,
7348 + 0x0000, 0x7818, 0xd084, 0x1de8, 0x001e, 0x792e, 0x000e, 0x782a,
7349 + 0x000e, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002, 0x781b, 0x0001,
7350 + 0x2091, 0x5000, 0x0126, 0x0156, 0x0146, 0x20a9, 0x0010, 0x20a1,
7351 + 0xca54, 0x2091, 0x2000, 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2200,
7352 + 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2400, 0x40a1, 0x20a9, 0x0010,
7353 + 0x2091, 0x2600, 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2800, 0x40a1,
7354 + 0x014e, 0x015e, 0x012e, 0x2079, 0xc600, 0x7803, 0x0005, 0x2091,
7355 + 0x4080, 0x04c9, 0x0cf8, 0x0005, 0x0006, 0x080c, 0x15a7, 0x1518,
7356 + 0x00f6, 0x2079, 0xc624, 0x2f04, 0x8000, 0x207a, 0xa082, 0x000f,
7357 + 0x0258, 0xa006, 0x207a, 0x2079, 0xc626, 0x2f04, 0xa084, 0x0001,
7358 + 0xa086, 0x0001, 0x207a, 0x0070, 0x2079, 0xc626, 0x2f7c, 0x8fff,
7359 + 0x1128, 0x2001, 0x0c03, 0x2003, 0x0040, 0x0020, 0x2001, 0x0c03,
7360 + 0x2003, 0x00c0, 0x00fe, 0x000e, 0x0005, 0x0409, 0x1120, 0x2001,
7361 + 0x0c03, 0x2003, 0x0080, 0x0005, 0x00d1, 0x1120, 0x2001, 0x0c03,
7362 + 0x2003, 0x0040, 0x0005, 0x0006, 0x0091, 0x1178, 0x2001, 0x0c03,
7363 + 0x2003, 0x0040, 0x2009, 0x0fff, 0x00a1, 0x2001, 0x0c03, 0x2003,
7364 + 0x0080, 0x2009, 0x0fff, 0x0069, 0x0c88, 0x000e, 0x0005, 0x00c6,
7365 + 0x2061, 0x0c00, 0x2c04, 0xa084, 0x00ff, 0xa086, 0x00aa, 0x00ce,
7366 + 0x0005, 0x0156, 0x0126, 0xa18c, 0x0fff, 0x21a8, 0x1d04, 0x15b6,
7367 + 0x2091, 0x6000, 0x1f04, 0x15b6, 0x012e, 0x015e, 0x0005, 0x2071,
7368 + 0xc600, 0x7160, 0x712e, 0x2021, 0x0001, 0xa190, 0x0030, 0xa298,
7369 + 0x0030, 0x0240, 0x7064, 0xa302, 0x1228, 0x220a, 0x2208, 0x2310,
7370 + 0x8420, 0x0ca8, 0x3800, 0xd08c, 0x0148, 0x7064, 0xa086, 0xc600,
7371 + 0x0128, 0x7067, 0xc600, 0x2011, 0x1000, 0x0c48, 0x200b, 0x0000,
7372 + 0x74b2, 0x74b6, 0x70eb, 0x0010, 0x0005, 0x00e6, 0x0126, 0x2091,
7373 + 0x8000, 0x2071, 0xc600, 0x70b4, 0x0016, 0x2008, 0x70e8, 0xa16a,
7374 + 0x2100, 0x001e, 0x0268, 0x8001, 0x70b6, 0x702c, 0x2068, 0x2d04,
7375 + 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x012e, 0x00ee, 0x0005,
7376 + 0xa06e, 0x0cd8, 0x00e6, 0x2071, 0xc600, 0x0126, 0x2091, 0x8000,
7377 + 0x70b4, 0x8001, 0x0260, 0x70b6, 0x702c, 0x2068, 0x2d04, 0x702e,
7378 + 0x206b, 0x0000, 0x6807, 0x0000, 0x012e, 0x00ee, 0x0005, 0xa06e,
7379 + 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc600, 0x702c,
7380 + 0x206a, 0x2d00, 0x702e, 0x70b4, 0x8000, 0x70b6, 0x012e, 0x00ee,
7381 + 0x0005, 0x8dff, 0x0138, 0x6804, 0x6807, 0x0000, 0x0006, 0x0c49,
7382 + 0x00de, 0x0cb8, 0x0005, 0x00e6, 0x2071, 0xc600, 0x70b4, 0xa08a,
7383 + 0x0010, 0xa00d, 0x00ee, 0x0005, 0x00e6, 0x2071, 0xc959, 0x7007,
7384 + 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x2071, 0x0000, 0x7010,
7385 + 0xa085, 0x8004, 0x7012, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000,
7386 + 0x00e6, 0x2270, 0x700b, 0x0000, 0x2071, 0xc959, 0x7018, 0xa088,
7387 + 0xc962, 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005,
7388 + 0x1128, 0x00f6, 0x2079, 0x0010, 0x0089, 0x00fe, 0x00ee, 0x012e,
7389 + 0x0005, 0x00e6, 0x2071, 0xc959, 0x7004, 0xa005, 0x1128, 0x00f6,
7390 + 0x2079, 0x0010, 0x0019, 0x00fe, 0x00ee, 0x0005, 0x7000, 0x0002,
7391 + 0x1680, 0x16e4, 0x1701, 0x1701, 0x23e7, 0x16e4, 0x1701, 0x16e4,
7392 + 0x7018, 0x711c, 0xa106, 0x1118, 0x7007, 0x0000, 0x0005, 0x00d6,
7393 + 0xa180, 0xc962, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007,
7394 + 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c,
7395 + 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804,
7396 + 0x00de, 0xd084, 0x0120, 0x7007, 0x0001, 0x0029, 0x0005, 0x7007,
7397 + 0x0002, 0x00b1, 0x0005, 0x0016, 0x0026, 0x710c, 0x2011, 0x0040,
7398 + 0xa182, 0x0040, 0x1210, 0x2110, 0xa006, 0x700e, 0x7212, 0x8203,
7399 + 0x7822, 0x7803, 0x0020, 0x7803, 0x0041, 0x002e, 0x001e, 0x0005,
7400 + 0x0016, 0x0026, 0x0136, 0x0146, 0x0156, 0x7014, 0x2098, 0x20a1,
7401 + 0x0014, 0x7803, 0x0026, 0x710c, 0x2011, 0x0040, 0xa182, 0x0040,
7402 + 0x1210, 0x2110, 0xa006, 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822,
7403 + 0x7803, 0x0020, 0x3300, 0x7016, 0x7803, 0x0001, 0x015e, 0x014e,
7404 + 0x013e, 0x002e, 0x001e, 0x0005, 0x0136, 0x0146, 0x0156, 0x2099,
7405 + 0xc71a, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
7406 + 0x0126, 0x2091, 0x8000, 0x7803, 0x0041, 0x7007, 0x0003, 0x7000,
7407 + 0xc084, 0x7002, 0x700b, 0xc715, 0x012e, 0x015e, 0x014e, 0x013e,
7408 + 0x0005, 0x0136, 0x0146, 0x0156, 0x2001, 0xc749, 0x209c, 0x20a1,
7409 + 0x0014, 0x7803, 0x0026, 0x2001, 0xc74a, 0x20ac, 0x53a6, 0x2099,
7410 + 0xc74b, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
7411 + 0x0126, 0x2091, 0x8000, 0x7803, 0x0001, 0x7007, 0x0004, 0x7000,
7412 + 0xc08c, 0x7002, 0x700b, 0xc746, 0x012e, 0x015e, 0x014e, 0x013e,
7413 + 0x0005, 0x0016, 0x00e6, 0x2071, 0xc959, 0x00f6, 0x2079, 0x0010,
7414 + 0x7904, 0x7803, 0x0002, 0xd1fc, 0x0120, 0xa18c, 0x0700, 0x7004,
7415 + 0x0023, 0x00fe, 0x00ee, 0x001e, 0x0005, 0x1676, 0x1745, 0x1773,
7416 + 0x179d, 0x17cd, 0x2404, 0x1744, 0x0cf8, 0xa18c, 0x0700, 0x1528,
7417 + 0x0136, 0x0146, 0x0156, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803,
7418 + 0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x015e, 0x014e,
7419 + 0x013e, 0x700c, 0xa005, 0x0570, 0x7830, 0x7832, 0x7834, 0x7836,
7420 + 0x080c, 0x16ab, 0x0005, 0x7008, 0xa080, 0x0002, 0x2003, 0x0100,
7421 + 0x7007, 0x0000, 0x080c, 0x1676, 0x0005, 0x7008, 0xa080, 0x0002,
7422 + 0x2003, 0x0200, 0x0ca8, 0xa18c, 0x0700, 0x1150, 0x700c, 0xa005,
7423 + 0x0188, 0x7830, 0x7832, 0x7834, 0x7836, 0x080c, 0x16c0, 0x0005,
7424 + 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x7007, 0x0000, 0x080c,
7425 + 0x1676, 0x0005, 0x00d6, 0x7008, 0x2068, 0x7830, 0x6826, 0x7834,
7426 + 0x682a, 0x7838, 0x682e, 0x783c, 0x6832, 0x680b, 0x0100, 0x00de,
7427 + 0x7007, 0x0000, 0x080c, 0x1676, 0x0005, 0xa18c, 0x0700, 0x1540,
7428 + 0x0136, 0x0146, 0x0156, 0x2001, 0xc718, 0x2004, 0xa080, 0x000d,
7429 + 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020, 0x53a5,
7430 + 0x2001, 0xc71a, 0x2004, 0xd0bc, 0x0148, 0x2001, 0xc723, 0x2004,
7431 + 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5, 0x015e, 0x014e,
7432 + 0x013e, 0x7007, 0x0000, 0x080c, 0x62c2, 0x080c, 0x1676, 0x0005,
7433 + 0x2011, 0x8003, 0x080c, 0x407d, 0x0cf8, 0xa18c, 0x0700, 0x1148,
7434 + 0x2001, 0xc748, 0x2003, 0x0100, 0x7007, 0x0000, 0x080c, 0x1676,
7435 + 0x0005, 0x2011, 0x8004, 0x080c, 0x407d, 0x0cf8, 0x0126, 0x2091,
7436 + 0x2200, 0x2079, 0x0030, 0x2071, 0xc96a, 0x7003, 0x0000, 0x700f,
7437 + 0xc977, 0x7013, 0xc977, 0x780f, 0x00f6, 0x7803, 0x0004, 0x012e,
7438 + 0x0005, 0x6934, 0xa184, 0x0007, 0x0002, 0x17fd, 0x183e, 0x17fd,
7439 + 0x17fd, 0x1801, 0x1826, 0x180d, 0x1804, 0xa085, 0x0001, 0x0804,
7440 + 0x1858, 0x080c, 0x7684, 0x05d0, 0x684c, 0xd0bc, 0x0db0, 0x6860,
7441 + 0x682e, 0x685c, 0x682a, 0x6858, 0x04c8, 0xa18c, 0x00ff, 0xa186,
7442 + 0x001e, 0x1d58, 0x684c, 0xd0bc, 0x0d40, 0x6860, 0x682e, 0x685c,
7443 + 0x682a, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
7444 + 0xa080, 0x23c7, 0x2005, 0x6832, 0x6858, 0x0440, 0xa18c, 0x00ff,
7445 + 0xa186, 0x0015, 0x1990, 0x684c, 0xd0ac, 0x0978, 0x6804, 0x681a,
7446 + 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x23c7, 0x2005,
7447 + 0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0080, 0x684c, 0xd0ac,
7448 + 0x0904, 0x17fd, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c, 0x000f,
7449 + 0xa188, 0x23c7, 0x210d, 0x6932, 0x2d08, 0x691a, 0x6826, 0x684c,
7450 + 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916,
7451 + 0x0005, 0x684c, 0xd0ac, 0x090c, 0x1519, 0x6833, 0x23c4, 0x2d08,
7452 + 0x691a, 0x6858, 0x8001, 0x6826, 0x684c, 0xc0dd, 0x684e, 0xa006,
7453 + 0x680a, 0x682e, 0x682a, 0x697c, 0x6912, 0x6980, 0x6916, 0x0005,
7454 + 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x82ff,
7455 + 0x01e8, 0xa280, 0x0004, 0x00d6, 0x206c, 0x684c, 0xd0dc, 0x1190,
7456 + 0xa280, 0x0007, 0x2004, 0xa086, 0x000a, 0x1110, 0x0891, 0x0010,
7457 + 0x080c, 0x17f1, 0x0138, 0x00de, 0xa280, 0x0000, 0x2003, 0x0002,
7458 + 0xa016, 0x0020, 0x6808, 0x8000, 0x680a, 0x00de, 0x0126, 0x0046,
7459 + 0x0036, 0x0026, 0x2091, 0x2200, 0x002e, 0x003e, 0x004e, 0x7000,
7460 + 0xa005, 0x0178, 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a,
7461 + 0x8108, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977, 0x710e, 0x012e,
7462 + 0x0005, 0x7206, 0x2001, 0x18af, 0x0006, 0x2260, 0x0804, 0x19d3,
7463 + 0x0126, 0x0026, 0x0036, 0x00c6, 0x0006, 0x2091, 0x2200, 0x000e,
7464 + 0x004e, 0x003e, 0x002e, 0x00d6, 0x00c6, 0x2460, 0x6110, 0x2168,
7465 + 0x6a62, 0x6b5e, 0xa005, 0x0904, 0x1910, 0x6808, 0xa005, 0x0904,
7466 + 0x1947, 0x7000, 0xa005, 0x1108, 0x0488, 0x700c, 0x7110, 0xa106,
7467 + 0x1904, 0x194f, 0x7004, 0xa406, 0x1548, 0x2001, 0x0005, 0x2004,
7468 + 0xd08c, 0x0168, 0x0046, 0x080c, 0x1b83, 0x004e, 0x2460, 0x6010,
7469 + 0xa080, 0x0002, 0x2004, 0xa005, 0x0904, 0x1947, 0x0c10, 0x2001,
7470 + 0x0207, 0x2004, 0xd09c, 0x1d48, 0x7804, 0xa084, 0x6000, 0x0120,
7471 + 0xa086, 0x6000, 0x0108, 0x0c08, 0x7818, 0x6812, 0x781c, 0x6816,
7472 + 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6100, 0xa18e,
7473 + 0x0004, 0x1904, 0x194f, 0x2009, 0x0048, 0x080c, 0x9613, 0x04f8,
7474 + 0x6808, 0xa005, 0x05a0, 0x7000, 0xa005, 0x0588, 0x700c, 0x7110,
7475 + 0xa106, 0x1118, 0x7004, 0xa406, 0x1550, 0x2001, 0x0005, 0x2004,
7476 + 0xd08c, 0x0160, 0x0046, 0x080c, 0x1b83, 0x004e, 0x2460, 0x6010,
7477 + 0xa080, 0x0002, 0x2004, 0xa005, 0x01d0, 0x0c28, 0x2001, 0x0207,
7478 + 0x2004, 0xd09c, 0x1d50, 0x2001, 0x0005, 0x2004, 0xd08c, 0x1d50,
7479 + 0x7804, 0xa084, 0x6000, 0x0118, 0xa086, 0x6000, 0x19f0, 0x7818,
7480 + 0x6812, 0x781c, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x6100,
7481 + 0xa18e, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, 0x9613, 0x00ce,
7482 + 0x00de, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x0026, 0x0036, 0x0046,
7483 + 0x0056, 0x2071, 0xc96a, 0x7000, 0xa086, 0x0000, 0x0904, 0x19b9,
7484 + 0x7004, 0xac06, 0x1904, 0x19ab, 0x2079, 0x0030, 0x7000, 0xa086,
7485 + 0x0003, 0x0904, 0x19ab, 0x7804, 0xd0fc, 0x15c8, 0x20e1, 0x6000,
7486 + 0x2011, 0x0032, 0x2001, 0x0208, 0x200c, 0x2001, 0x0209, 0x2004,
7487 + 0xa106, 0x1d88, 0x8211, 0x1db0, 0x7804, 0xd0fc, 0x1540, 0x080c,
7488 + 0x1f2d, 0x0026, 0x0056, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x1de8,
7489 + 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, 0x0000,
7490 + 0x005e, 0x002e, 0x2001, 0x015d, 0x2003, 0x0000, 0x080c, 0x5f22,
7491 + 0x1138, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0058,
7492 + 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0020, 0x080c,
7493 + 0x1b83, 0x0804, 0x195b, 0x0156, 0x20a9, 0x0009, 0x2009, 0xc977,
7494 + 0x2104, 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, 0x19b0,
7495 + 0x015e, 0x005e, 0x004e, 0x003e, 0x002e, 0x00ee, 0x00fe, 0x0005,
7496 + 0x700c, 0x7110, 0xa106, 0x0904, 0x1a5c, 0x2104, 0x7006, 0x2060,
7497 + 0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0xc992, 0x0210,
7498 + 0x2009, 0xc977, 0x7112, 0x8cff, 0x05e8, 0x6010, 0x2068, 0x2d58,
7499 + 0x080c, 0x7824, 0x6828, 0xa406, 0x15e0, 0x682c, 0xa306, 0x15c8,
7500 + 0x7004, 0x2060, 0x6020, 0xc0d4, 0x6022, 0x684c, 0xd0f4, 0x0128,
7501 + 0x6817, 0xffff, 0x6813, 0xffff, 0x0428, 0x6850, 0xd0f4, 0x1130,
7502 + 0x7803, 0x0004, 0x6810, 0x781a, 0x6814, 0x781e, 0x6824, 0x2050,
7503 + 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x080c,
7504 + 0x7684, 0x1128, 0x2009, 0x0011, 0x080c, 0x1a5f, 0x0048, 0x2009,
7505 + 0x0011, 0x080c, 0x1a5f, 0x0120, 0x2009, 0x0001, 0x080c, 0x1a5f,
7506 + 0x2d58, 0x0005, 0x7803, 0x0004, 0x080c, 0x1ea2, 0x0904, 0x19c0,
7507 + 0x0cc0, 0x080c, 0x7684, 0x1128, 0x080c, 0x1953, 0x080c, 0x761a,
7508 + 0x0c88, 0x6020, 0xd0f4, 0x11e0, 0xd0d4, 0x01b8, 0x6038, 0xa402,
7509 + 0x6034, 0xa303, 0x0108, 0x1288, 0x643a, 0x6336, 0x6c2a, 0x6b2e,
7510 + 0x0046, 0x0036, 0x2400, 0x6c7c, 0xa402, 0x6812, 0x2300, 0x6b80,
7511 + 0xa303, 0x6816, 0x003e, 0x004e, 0x0018, 0x080c, 0xafd1, 0x0990,
7512 + 0x601c, 0xa08e, 0x0008, 0x0904, 0x19e0, 0xa08e, 0x000a, 0x0904,
7513 + 0x19e0, 0x2001, 0xc674, 0x2004, 0xd0b4, 0x1140, 0x6018, 0x2004,
7514 + 0xd0bc, 0x1120, 0x6817, 0x7fff, 0x6813, 0xffff, 0x080c, 0x241b,
7515 + 0x1904, 0x1a12, 0x0804, 0x19e0, 0x7003, 0x0000, 0x0005, 0x8aff,
7516 + 0x0904, 0x1b5d, 0xa03e, 0x2730, 0xc9fc, 0x6850, 0xd0fc, 0x11b8,
7517 + 0xd0f4, 0x1538, 0x00d6, 0x2805, 0xac68, 0x2900, 0x0002, 0x1acb,
7518 + 0x1a98, 0x1a98, 0x1acb, 0x1ace, 0x1ac3, 0x1acb, 0x1a98, 0x1acb,
7519 + 0x1aa9, 0x1aa9, 0x1acb, 0x1ace, 0x1acb, 0x1abb, 0x1aa9, 0x7803,
7520 + 0x0004, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0x00d6,
7521 + 0xd99c, 0x0904, 0x1b1e, 0x2805, 0xac68, 0x6f08, 0x6e0c, 0x0804,
7522 + 0x1b1f, 0xc0f4, 0x6852, 0x6b6c, 0x6a70, 0x00d6, 0x0804, 0x1b2c,
7523 + 0x2d10, 0x00de, 0x00d6, 0x6834, 0x2268, 0xa084, 0x00ff, 0xa096,
7524 + 0x0024, 0x0904, 0x1afe, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0804,
7525 + 0x1b1e, 0x2d10, 0x00de, 0x00d6, 0x6834, 0x2268, 0xa084, 0x00ff,
7526 + 0xa096, 0x002c, 0x0540, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08,
7527 + 0x6e0c, 0x0804, 0x1b1f, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff,
7528 + 0xa086, 0x001e, 0x1140, 0x00de, 0x080c, 0x2389, 0x1904, 0x1a5f,
7529 + 0xa00e, 0x0804, 0x1b5d, 0x00de, 0x080c, 0x1519, 0x2d10, 0x00de,
7530 + 0x00d6, 0x6834, 0x2268, 0xa084, 0x00ff, 0xa096, 0x0024, 0x0530,
7531 + 0xa096, 0x002c, 0x1d80, 0x6b10, 0xa3a6, 0xffff, 0x1130, 0x2d10,
7532 + 0x00de, 0x00d6, 0x080c, 0x72fa, 0x2268, 0x2d10, 0x00de, 0x00d6,
7533 + 0x7314, 0x685c, 0xa086, 0x0001, 0x1120, 0x6868, 0xa005, 0x0108,
7534 + 0x2018, 0x2268, 0x2011, 0x0000, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
7535 + 0x780f, 0x00f0, 0xe000, 0xe000, 0xe000, 0x0408, 0x6b08, 0xa3a6,
7536 + 0xffff, 0x1130, 0x2d10, 0x00de, 0x00d6, 0x080c, 0x72fa, 0x2268,
7537 + 0x2d10, 0x00de, 0x00d6, 0x7314, 0x685c, 0xa086, 0x0001, 0x1120,
7538 + 0x6868, 0xa005, 0x0108, 0x2018, 0x2268, 0x2011, 0x0000, 0x6d00,
7539 + 0x6c04, 0x780f, 0x00f0, 0xe000, 0xe000, 0xe000, 0xc9fd, 0x7b22,
7540 + 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x731a, 0x721e, 0x7522,
7541 + 0x7426, 0x772a, 0x762e, 0x7902, 0x7100, 0x8108, 0x7102, 0x00de,
7542 + 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x8109, 0x2d08,
7543 + 0x1500, 0xd9fc, 0x0160, 0xc9fc, 0x080c, 0x2389, 0x01e8, 0x2805,
7544 + 0xac68, 0x6800, 0xa506, 0x11c0, 0x6804, 0xa406, 0x00a8, 0xc9fc,
7545 + 0x080c, 0x2389, 0x0188, 0x2805, 0xac68, 0x6800, 0xa506, 0x1160,
7546 + 0x6804, 0xa406, 0x1148, 0x6808, 0xa706, 0x1130, 0x680c, 0xa606,
7547 + 0x0018, 0xc9fc, 0x080c, 0x2389, 0x2168, 0x0005, 0x080c, 0x1519,
7548 + 0x080c, 0x2014, 0x7004, 0x2060, 0x00d6, 0x6010, 0x2068, 0x7003,
7549 + 0x0000, 0x080c, 0x1ec3, 0x080c, 0xac91, 0x0170, 0x6808, 0x8001,
7550 + 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x682b, 0xffff, 0x682f,
7551 + 0xffff, 0x6850, 0xc0bd, 0x6852, 0x00de, 0x080c, 0xa961, 0x0804,
7552 + 0x1dec, 0x080c, 0x1519, 0x0126, 0x2091, 0x2200, 0x0006, 0x0016,
7553 + 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700,
7554 + 0x1978, 0xa184, 0x0003, 0xa086, 0x0003, 0x0d58, 0x7000, 0x0002,
7555 + 0x1ba0, 0x1ba6, 0x1cf5, 0x1dc1, 0x1ddb, 0x1ba0, 0x1ba0, 0x1ba0,
7556 + 0x7804, 0xd09c, 0x1904, 0x1dec, 0x080c, 0x1519, 0x8001, 0x7002,
7557 + 0xd1bc, 0x15c0, 0x080c, 0x7684, 0x1508, 0xd1dc, 0x1598, 0x6864,
7558 + 0x8000, 0x6866, 0xd19c, 0x0140, 0x7004, 0x2060, 0x2009, 0x0102,
7559 + 0x080c, 0x9613, 0x0804, 0x1cbc, 0x8aff, 0x0130, 0x2009, 0x0001,
7560 + 0x080c, 0x1a5f, 0x0804, 0x1dec, 0x7004, 0x2060, 0x080c, 0x24e0,
7561 + 0x080c, 0x761a, 0x7007, 0x0000, 0x0804, 0x1c45, 0xd19c, 0x1904,
7562 + 0x1c79, 0xd1dc, 0x1178, 0x8aff, 0x0904, 0x1c79, 0x2009, 0x0001,
7563 + 0x080c, 0x1a5f, 0x0904, 0x1dec, 0x2009, 0x0001, 0x080c, 0x1a5f,
7564 + 0x0804, 0x1dec, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x1904,
7565 + 0x1c4b, 0x080c, 0x7684, 0x1130, 0xd19c, 0x0120, 0x6864, 0x8000,
7566 + 0x6866, 0x0810, 0x0026, 0x0036, 0x7c20, 0x7d24, 0x7e30, 0x7f34,
7567 + 0x7818, 0x6812, 0x781c, 0x6816, 0x2001, 0x0201, 0x2004, 0xa005,
7568 + 0x0140, 0x7808, 0xd0ec, 0x1128, 0x7803, 0x0009, 0x7003, 0x0004,
7569 + 0x0028, 0x080c, 0x7684, 0x0110, 0x080c, 0x1df0, 0x6b28, 0x6a2c,
7570 + 0x2400, 0x686e, 0xa31a, 0x2500, 0x6872, 0xa213, 0x6b2a, 0x6a2e,
7571 + 0x00c6, 0x7004, 0x2060, 0x6020, 0xd0f4, 0x1110, 0x633a, 0x6236,
7572 + 0x00ce, 0x003e, 0x002e, 0x6e1e, 0x6f22, 0x2500, 0xa405, 0x0128,
7573 + 0x080c, 0x239f, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826, 0x2c00,
7574 + 0x681a, 0x2800, 0x6832, 0x6808, 0x8001, 0x680a, 0x1148, 0x684c,
7575 + 0xd0e4, 0x0130, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x9613,
7576 + 0x7000, 0xa086, 0x0004, 0x0904, 0x1dec, 0x7003, 0x0000, 0x080c,
7577 + 0x19c0, 0x0804, 0x1dec, 0x0056, 0x7d0c, 0xd5bc, 0x1110, 0x080c,
7578 + 0xc55e, 0x005e, 0x080c, 0x1ec3, 0x7004, 0x2060, 0x601c, 0xa086,
7579 + 0x0009, 0x1140, 0x2009, 0x0106, 0x080c, 0x9613, 0x7007, 0x0000,
7580 + 0x0804, 0x1dec, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56c3, 0x0118,
7581 + 0x7820, 0xc0f5, 0x7822, 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff,
7582 + 0x6808, 0x8001, 0x680a, 0x697c, 0x791a, 0x6980, 0x791e, 0x0804,
7583 + 0x1dec, 0x7004, 0x00c6, 0x2060, 0x6020, 0x00ce, 0xd0f4, 0x0120,
7584 + 0x6808, 0x8001, 0x680a, 0x04c0, 0x7818, 0x6812, 0x7a1c, 0x6a16,
7585 + 0xd19c, 0x0160, 0xa205, 0x0150, 0x7004, 0xa080, 0x0007, 0x2004,
7586 + 0xa084, 0xfffd, 0xa086, 0x0008, 0x1904, 0x1be2, 0x684c, 0xc0f5,
7587 + 0x684e, 0x7814, 0xa005, 0x1520, 0x7003, 0x0000, 0x6808, 0x8001,
7588 + 0x680a, 0x01a0, 0x7004, 0x2060, 0x601c, 0xa086, 0x000a, 0x11a0,
7589 + 0x0156, 0x20a9, 0x0009, 0x2009, 0xc977, 0x2104, 0xac06, 0x1108,
7590 + 0x200a, 0xa188, 0x0003, 0x1f04, 0x1cad, 0x015e, 0x7004, 0x2060,
7591 + 0x2009, 0x0048, 0x080c, 0x9613, 0x080c, 0x19c0, 0x0804, 0x1dec,
7592 + 0x7818, 0x6812, 0x781c, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff,
7593 + 0xa192, 0x0841, 0x1a04, 0x1b60, 0xa188, 0x0007, 0x8114, 0x8214,
7594 + 0x8214, 0xa10a, 0x8104, 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b,
7595 + 0x810b, 0x080c, 0x1f58, 0x7803, 0x0004, 0x780f, 0xffff, 0x7803,
7596 + 0x0001, 0x7804, 0xd0fc, 0x0de8, 0x7803, 0x0002, 0x7803, 0x0004,
7597 + 0x780f, 0x00f6, 0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048,
7598 + 0x080c, 0x9613, 0x080c, 0x1fae, 0x0838, 0x8001, 0x7002, 0xd194,
7599 + 0x01b0, 0x7804, 0xd0fc, 0x1904, 0x1d91, 0xd09c, 0x0138, 0x7804,
7600 + 0xd0fc, 0x1904, 0x1d91, 0xd09c, 0x1904, 0x1d95, 0x8aff, 0x0904,
7601 + 0x1dec, 0x2009, 0x0001, 0x080c, 0x1a5f, 0x0804, 0x1dec, 0xa184,
7602 + 0x0888, 0x1148, 0x8aff, 0x0904, 0x1dec, 0x2009, 0x0001, 0x080c,
7603 + 0x1a5f, 0x0804, 0x1dec, 0x7818, 0x6812, 0x7a1c, 0x6a16, 0xa205,
7604 + 0x0904, 0x1c96, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x1904,
7605 + 0x1d73, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0029, 0x1118, 0xd19c,
7606 + 0x1904, 0x1c96, 0x0026, 0x0036, 0x7c20, 0x7d24, 0x7e30, 0x7f34,
7607 + 0x7818, 0x6812, 0x781c, 0x6816, 0x2001, 0x0201, 0x2004, 0xa005,
7608 + 0x0140, 0x7808, 0xd0ec, 0x1128, 0x7803, 0x0009, 0x7003, 0x0004,
7609 + 0x0020, 0x0016, 0x080c, 0x1df0, 0x001e, 0x6b28, 0x6a2c, 0x080c,
7610 + 0x239f, 0x00d6, 0x2805, 0xac68, 0x6034, 0xd09c, 0x1128, 0x6808,
7611 + 0xa31a, 0x680c, 0xa213, 0x0020, 0x6810, 0xa31a, 0x6814, 0xa213,
7612 + 0x00de, 0xd194, 0x0904, 0x1c10, 0x2a00, 0x6826, 0x2c00, 0x681a,
7613 + 0x2800, 0x6832, 0x6808, 0x8001, 0x680a, 0x6b2a, 0x6a2e, 0x003e,
7614 + 0x002e, 0x0804, 0x1cbc, 0x0056, 0x7d0c, 0x080c, 0xc55e, 0x005e,
7615 + 0x080c, 0x1ec3, 0x00f6, 0x7004, 0x2078, 0x080c, 0x56c3, 0x0118,
7616 + 0x7820, 0xc0f5, 0x7822, 0x00fe, 0x682b, 0xffff, 0x682f, 0xffff,
7617 + 0x6808, 0x8001, 0x680a, 0x697c, 0x791a, 0x6980, 0x791e, 0x0804,
7618 + 0x1dec, 0x7804, 0xd09c, 0x0904, 0x1b8b, 0x7c20, 0x7824, 0xa405,
7619 + 0x1904, 0x1b8b, 0x7818, 0x6812, 0x7c1c, 0x6c16, 0xa405, 0x1120,
7620 + 0x7803, 0x0002, 0x0804, 0x1c96, 0x7520, 0x7424, 0x7728, 0x762c,
7621 + 0x7018, 0xa528, 0x701c, 0xa421, 0xa7b9, 0x0000, 0xa6b1, 0x0000,
7622 + 0x7830, 0xa506, 0x1150, 0x7834, 0xa406, 0x1138, 0x7838, 0xa706,
7623 + 0x1120, 0x783c, 0xa606, 0x0904, 0x1b8b, 0x7803, 0x0002, 0x0804,
7624 + 0x1d22, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, 0x0180,
7625 + 0x6808, 0x8001, 0x680a, 0x1160, 0x7004, 0x2060, 0x2009, 0x0048,
7626 + 0x601c, 0xa086, 0x0009, 0x1110, 0x080c, 0x1519, 0x080c, 0x9613,
7627 + 0x080c, 0x19c0, 0x0088, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004,
7628 + 0x2060, 0x6010, 0xa005, 0x0da0, 0x2068, 0x6808, 0x8000, 0x680a,
7629 + 0x6c28, 0x6b2c, 0x080c, 0x19d3, 0x001e, 0x000e, 0x012e, 0x0005,
7630 + 0x700c, 0x7110, 0xa106, 0x0904, 0x1e96, 0x7004, 0x0016, 0x210c,
7631 + 0xa106, 0x001e, 0x0904, 0x1e96, 0x00d6, 0x00c6, 0x216c, 0x2d00,
7632 + 0xa005, 0x0904, 0x1e94, 0x681c, 0xa086, 0x0008, 0x0904, 0x1e94,
7633 + 0x6820, 0xd0d4, 0x1904, 0x1e94, 0x6810, 0x2068, 0x080c, 0x7684,
7634 + 0x0904, 0x1e94, 0x6850, 0xd0fc, 0x05a8, 0x8108, 0x2104, 0x6b2c,
7635 + 0xa306, 0x1904, 0x1e94, 0x8108, 0x2104, 0x6a28, 0xa206, 0x1904,
7636 + 0x1e94, 0x6850, 0xc0fc, 0xc0f5, 0x6852, 0x686c, 0x7822, 0x701a,
7637 + 0x6870, 0x7826, 0x701e, 0x681c, 0x7832, 0x7022, 0x6820, 0x7836,
7638 + 0x7026, 0x6818, 0x2060, 0x6034, 0xd09c, 0x0168, 0x6830, 0x2005,
7639 + 0x00d6, 0xac68, 0x6808, 0x783a, 0x702a, 0x680c, 0x783e, 0x702e,
7640 + 0x00de, 0x0804, 0x1e8e, 0xa006, 0x783a, 0x783e, 0x702a, 0x702e,
7641 + 0x0804, 0x1e8e, 0x8108, 0x2104, 0xa005, 0x1904, 0x1e94, 0x6b2c,
7642 + 0xa306, 0x1904, 0x1e94, 0x8108, 0x2104, 0xa005, 0x15e8, 0x6a28,
7643 + 0xa206, 0x15d0, 0x6850, 0xc0f5, 0x6852, 0x6830, 0x2005, 0x6918,
7644 + 0xa160, 0xa180, 0x000d, 0x2004, 0xd09c, 0x11a0, 0x6008, 0x7822,
7645 + 0x701a, 0x686e, 0x600c, 0x7826, 0x701e, 0x6872, 0x6000, 0x7832,
7646 + 0x7022, 0x6004, 0x7836, 0x7026, 0xa006, 0x783a, 0x783e, 0x702a,
7647 + 0x702e, 0x00a0, 0x6010, 0x7822, 0x701a, 0x686e, 0x6014, 0x7826,
7648 + 0x701e, 0x6872, 0x6000, 0x7832, 0x7022, 0x6004, 0x7836, 0x7026,
7649 + 0x6008, 0x783a, 0x702a, 0x600c, 0x783e, 0x702e, 0x6810, 0x781a,
7650 + 0x6814, 0x781e, 0x7803, 0x0011, 0x00ce, 0x00de, 0x0005, 0x2011,
7651 + 0x0201, 0x2009, 0x003c, 0x2204, 0xa005, 0x1118, 0x8109, 0x1dd8,
7652 + 0x0005, 0x0005, 0x0ca1, 0x0118, 0x780c, 0xd0a4, 0x0120, 0x00d9,
7653 + 0xa085, 0x0001, 0x0010, 0x080c, 0x1fae, 0x0005, 0x0126, 0x2091,
7654 + 0x2200, 0x7000, 0xa086, 0x0003, 0x1160, 0x700c, 0x7110, 0xa106,
7655 + 0x0140, 0x080c, 0x2b06, 0x20e1, 0x9028, 0x700f, 0xc977, 0x7013,
7656 + 0xc977, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5f22, 0x11b8, 0x2001,
7657 + 0x0160, 0x2003, 0x0000, 0x2001, 0x0138, 0x2003, 0x0000, 0x2011,
7658 + 0x00c8, 0xe000, 0xe000, 0x8211, 0x1de0, 0x0481, 0x0066, 0x2031,
7659 + 0x0000, 0x080c, 0x5fa4, 0x006e, 0x00ce, 0x0005, 0x080c, 0x1f2d,
7660 + 0x080c, 0x2b06, 0x20e1, 0x9028, 0x700c, 0x7110, 0xa106, 0x0190,
7661 + 0x2104, 0xa005, 0x0130, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001,
7662 + 0x600a, 0xa188, 0x0003, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977,
7663 + 0x7112, 0x0c50, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, 0x0160,
7664 + 0x2502, 0x2001, 0x0138, 0x2202, 0x00ce, 0x0005, 0x080c, 0x2b06,
7665 + 0x20e1, 0x9028, 0x2001, 0x015d, 0x2003, 0x0000, 0x00e6, 0x00c6,
7666 + 0x0016, 0x2071, 0xc96a, 0x700c, 0x7110, 0xa106, 0x0190, 0x2104,
7667 + 0xa005, 0x0130, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001, 0x600a,
7668 + 0xa188, 0x0003, 0xa182, 0xc992, 0x0210, 0x2009, 0xc977, 0x7112,
7669 + 0x0c50, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x2001, 0x0138, 0x2014,
7670 + 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000, 0x080c,
7671 + 0x5f22, 0x1148, 0x2021, 0x0002, 0x1d04, 0x1f3c, 0x2091, 0x6000,
7672 + 0x8421, 0x1dd0, 0x0005, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c,
7673 + 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x1138,
7674 + 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70, 0x0005,
7675 + 0x00e6, 0x2071, 0x0200, 0x7808, 0xa084, 0xf000, 0xa10d, 0x0869,
7676 + 0x2001, 0x0105, 0x2004, 0xa084, 0x0003, 0x1130, 0x2001, 0xc992,
7677 + 0x2004, 0xa086, 0x0000, 0x0548, 0xa026, 0x2019, 0xf000, 0x8319,
7678 + 0x1148, 0x2001, 0x012b, 0x2003, 0x95f5, 0x2001, 0x0129, 0x2003,
7679 + 0x95f5, 0x00d8, 0x2001, 0x0105, 0x2004, 0xa084, 0x0003, 0x1130,
7680 + 0x2001, 0xc992, 0x2004, 0xa086, 0x0000, 0x0178, 0x2001, 0x0132,
7681 + 0x2004, 0xa436, 0x0110, 0x2020, 0x0c00, 0x2001, 0x0021, 0x2004,
7682 + 0xd0fc, 0x09e8, 0x080c, 0x222c, 0x08c0, 0x20e1, 0x7000, 0x7324,
7683 + 0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e,
7684 + 0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0160,
7685 + 0x2502, 0x2001, 0x0138, 0x2202, 0x00ee, 0x0005, 0x0026, 0x2001,
7686 + 0x015d, 0x2003, 0x0000, 0x7908, 0xa18c, 0x0fff, 0xa182, 0x0ffd,
7687 + 0x0210, 0x2009, 0x0000, 0xa190, 0x0007, 0xa294, 0x1ff8, 0x8214,
7688 + 0x8214, 0x8214, 0x2001, 0x020a, 0x82ff, 0x0140, 0x20e1, 0x6000,
7689 + 0x200c, 0x200c, 0x200c, 0x200c, 0x8211, 0x1dd0, 0x20e1, 0x7000,
7690 + 0x200c, 0x200c, 0x7003, 0x0000, 0x20e1, 0x6000, 0x2001, 0x0208,
7691 + 0x200c, 0x2001, 0x0209, 0x2004, 0xa106, 0x0158, 0x080c, 0x1e97,
7692 + 0x0130, 0x7908, 0xd1ec, 0x1128, 0x790c, 0xd1a4, 0x0960, 0x080c,
7693 + 0x1ec3, 0xa006, 0x002e, 0x0005, 0x00f6, 0x00e6, 0x0016, 0x0026,
7694 + 0x2071, 0xc96a, 0x2079, 0x0030, 0x2011, 0x0050, 0x7000, 0xa086,
7695 + 0x0000, 0x01a8, 0x8211, 0x0188, 0x2001, 0x0005, 0x2004, 0xd08c,
7696 + 0x0dc8, 0x7904, 0xa18c, 0x0780, 0x0016, 0x080c, 0x1b83, 0x001e,
7697 + 0x81ff, 0x1118, 0x2011, 0x0050, 0x0c48, 0xa085, 0x0001, 0x002e,
7698 + 0x001e, 0x00ee, 0x00fe, 0x0005, 0x7803, 0x0004, 0x2009, 0x0064,
7699 + 0x7804, 0xd0ac, 0x0904, 0x2060, 0x8109, 0x1dd0, 0x2009, 0x0100,
7700 + 0x210c, 0xa18a, 0x0003, 0x0a0c, 0x1519, 0x080c, 0x2333, 0x00e6,
7701 + 0x00f6, 0x2071, 0xc959, 0x2079, 0x0010, 0x7004, 0xa086, 0x0000,
7702 + 0x0538, 0x7800, 0x0006, 0x7820, 0x0006, 0x7830, 0x0006, 0x7834,
7703 + 0x0006, 0x7838, 0x0006, 0x783c, 0x0006, 0x7803, 0x0004, 0xe000,
7704 + 0xe000, 0x2079, 0x0030, 0x7804, 0xd0ac, 0x190c, 0x1519, 0x2079,
7705 + 0x0010, 0x000e, 0x783e, 0x000e, 0x783a, 0x000e, 0x7836, 0x000e,
7706 + 0x7832, 0x000e, 0x7822, 0x000e, 0x7802, 0x00fe, 0x00ee, 0x0030,
7707 + 0x00fe, 0x00ee, 0x7804, 0xd0ac, 0x190c, 0x1519, 0x080c, 0x7f6e,
7708 + 0x0005, 0x00e6, 0x2071, 0xc992, 0x7003, 0x0000, 0x00ee, 0x0005,
7709 + 0x00d6, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x1904, 0x20ed,
7710 + 0x6934, 0xa184, 0x0007, 0x0002, 0x207c, 0x20d8, 0x207c, 0x207e,
7711 + 0x207c, 0x20bf, 0x209e, 0x208d, 0x080c, 0x1519, 0x2100, 0xa084,
7712 + 0x00ff, 0xa086, 0x0013, 0x0904, 0x20d8, 0x2100, 0xa084, 0x00ff,
7713 + 0xa086, 0x001b, 0x0904, 0x20d8, 0x0c78, 0x684c, 0xd0b4, 0x0904,
7714 + 0x21e9, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c,
7715 + 0x680a, 0x6880, 0x680e, 0x6958, 0x0804, 0x20e0, 0x6834, 0xa084,
7716 + 0x00ff, 0xa086, 0x001e, 0x19c0, 0x684c, 0xd0b4, 0x0904, 0x21e9,
7717 + 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c, 0x680a,
7718 + 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084,
7719 + 0x000f, 0xa080, 0x23c7, 0x2005, 0x6832, 0x6958, 0x0450, 0xa18c,
7720 + 0x00ff, 0xa186, 0x0015, 0x1548, 0x684c, 0xd0b4, 0x0904, 0x21e9,
7721 + 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080,
7722 + 0x23c7, 0x2005, 0x6832, 0x6958, 0xa006, 0x682e, 0x682a, 0x0088,
7723 + 0x684c, 0xd0b4, 0x0904, 0x1b5e, 0x6958, 0xa006, 0x682e, 0x682a,
7724 + 0x2d00, 0x681a, 0x6834, 0xa084, 0x000f, 0xa080, 0x23c7, 0x2005,
7725 + 0x6832, 0x6926, 0x684c, 0xc0dd, 0x684e, 0x00de, 0x0005, 0x00f6,
7726 + 0x2079, 0x0020, 0x7804, 0xd0fc, 0x190c, 0x222c, 0x00e6, 0x00d6,
7727 + 0x2071, 0xc992, 0x7000, 0xa005, 0x1904, 0x2155, 0x00c6, 0x7206,
7728 + 0xa280, 0x0004, 0x205c, 0x7004, 0x2068, 0x7803, 0x0004, 0x6818,
7729 + 0x00d6, 0x2068, 0x686c, 0x7812, 0x6890, 0x00f6, 0x20e1, 0x9040,
7730 + 0x2079, 0x0200, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x00fe,
7731 + 0x00de, 0x2b68, 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040,
7732 + 0x6034, 0xa0cc, 0x000f, 0x6908, 0x791a, 0x7116, 0x680c, 0x781e,
7733 + 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, 0x6814, 0xa106,
7734 + 0x1120, 0x6928, 0x6810, 0xa106, 0x0158, 0x0036, 0x0046, 0x6b14,
7735 + 0x6c10, 0x080c, 0x241b, 0x004e, 0x003e, 0x0110, 0x00ce, 0x00a8,
7736 + 0x8aff, 0x1120, 0x00ce, 0xa085, 0x0001, 0x0078, 0x0126, 0x2091,
7737 + 0x8000, 0x2079, 0x0020, 0x2009, 0x0001, 0x0059, 0x0118, 0x2009,
7738 + 0x0001, 0x0039, 0x012e, 0x00ce, 0xa006, 0x00de, 0x00ee, 0x00fe,
7739 + 0x0005, 0x0076, 0x0066, 0x0056, 0x0046, 0x0036, 0x0026, 0x8aff,
7740 + 0x0904, 0x21e2, 0x700c, 0x7214, 0xa23a, 0x7010, 0x7218, 0xa203,
7741 + 0x0a04, 0x21e1, 0xa705, 0x0904, 0x21e1, 0xa03e, 0x2730, 0x6850,
7742 + 0xd0fc, 0x11a8, 0x00d6, 0x2805, 0xac68, 0x2900, 0x0002, 0x21b0,
7743 + 0x2195, 0x2195, 0x21b0, 0x21b0, 0x21a9, 0x21b0, 0x2195, 0x21b0,
7744 + 0x219a, 0x219a, 0x21b0, 0x21b0, 0x21b0, 0x21a1, 0x219a, 0xc0fc,
7745 + 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0xd99c, 0x05c8, 0x00d6,
7746 + 0x2805, 0xac68, 0x6f08, 0x6e0c, 0x0490, 0x6b08, 0x6a0c, 0x6d00,
7747 + 0x6c04, 0x0468, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
7748 + 0x0430, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e,
7749 + 0x1138, 0x00de, 0x080c, 0x2389, 0x1904, 0x215f, 0xa00e, 0x0490,
7750 + 0x2d10, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0013,
7751 + 0x2268, 0x09d8, 0x2d10, 0x00de, 0x00d6, 0x6834, 0xa084, 0x00ff,
7752 + 0xa086, 0x001b, 0x2268, 0x09b0, 0x00de, 0x080c, 0x1519, 0x00de,
7753 + 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000,
7754 + 0x8000, 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e,
7755 + 0x700c, 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x080c, 0x2389,
7756 + 0x0008, 0xa006, 0x002e, 0x003e, 0x004e, 0x005e, 0x006e, 0x007e,
7757 + 0x0005, 0x080c, 0x1519, 0x0026, 0x2001, 0x0105, 0x2003, 0x0010,
7758 + 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060,
7759 + 0x00d6, 0x6010, 0x2068, 0x080c, 0xac91, 0x0118, 0x6850, 0xc0bd,
7760 + 0x6852, 0x601c, 0xa086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8,
7761 + 0x2001, 0x00fa, 0x8001, 0x1df0, 0x60c8, 0xa206, 0x1dc0, 0x60c4,
7762 + 0x686a, 0x60c8, 0x6866, 0x7004, 0x2060, 0x00de, 0x00c6, 0x080c,
7763 + 0xa961, 0x00ce, 0x2001, 0xc936, 0x2004, 0xac06, 0x1150, 0x20e1,
7764 + 0x9040, 0x080c, 0x90f6, 0x2011, 0x0000, 0x080c, 0x8f18, 0x080c,
7765 + 0x7f6e, 0x002e, 0x0804, 0x22e6, 0x0126, 0x2091, 0x2400, 0x0006,
7766 + 0x0016, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x2079, 0x0020, 0x2071,
7767 + 0xc992, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184,
7768 + 0x0700, 0x1904, 0x21eb, 0x7000, 0x0002, 0x22e6, 0x2249, 0x22b9,
7769 + 0x22e4, 0x8001, 0x7002, 0xd19c, 0x1170, 0x8aff, 0x05d0, 0x2009,
7770 + 0x0001, 0x080c, 0x2159, 0x0904, 0x22e6, 0x2009, 0x0001, 0x080c,
7771 + 0x2159, 0x0804, 0x22e6, 0x7803, 0x0004, 0xd194, 0x0148, 0x6850,
7772 + 0xc0fc, 0x6852, 0x8aff, 0x11d8, 0x684c, 0xc0f5, 0x684e, 0x00b8,
7773 + 0x0026, 0x0036, 0x6b28, 0x6a2c, 0x7820, 0x686e, 0xa31a, 0x7824,
7774 + 0x6872, 0xa213, 0x7830, 0x681e, 0x7834, 0x6822, 0x6b2a, 0x6a2e,
7775 + 0x003e, 0x002e, 0x080c, 0x239f, 0x6850, 0xc0fd, 0x6852, 0x2a00,
7776 + 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0804,
7777 + 0x22e6, 0x00f6, 0x0026, 0x781c, 0x0006, 0x7818, 0x0006, 0x2079,
7778 + 0x0100, 0x7a14, 0xa284, 0x0184, 0xa085, 0x0012, 0x7816, 0x0036,
7779 + 0x2019, 0x1000, 0x8319, 0x090c, 0x1519, 0x7820, 0xd0bc, 0x1dd0,
7780 + 0x003e, 0x79c8, 0x000e, 0xa102, 0x001e, 0x0006, 0x0016, 0x79c4,
7781 + 0x000e, 0xa103, 0x78c6, 0x000e, 0x78ca, 0xa284, 0x0184, 0xa085,
7782 + 0x0012, 0x7816, 0x002e, 0x00fe, 0x7803, 0x0008, 0x7003, 0x0000,
7783 + 0x0468, 0x8001, 0x7002, 0xd194, 0x0168, 0x7804, 0xd0fc, 0x1904,
7784 + 0x223c, 0xd19c, 0x11f8, 0x8aff, 0x0508, 0x2009, 0x0001, 0x080c,
7785 + 0x2159, 0x00e0, 0x0026, 0x0036, 0x6b28, 0x6a2c, 0x080c, 0x239f,
7786 + 0x00d6, 0x2805, 0xac68, 0x6034, 0xd09c, 0x1128, 0x6808, 0xa31a,
7787 + 0x680c, 0xa213, 0x0020, 0x6810, 0xa31a, 0x6814, 0xa213, 0x00de,
7788 + 0x0804, 0x226c, 0x0804, 0x2268, 0x080c, 0x1519, 0x00ce, 0x00de,
7789 + 0x00ee, 0x00fe, 0x001e, 0x000e, 0x012e, 0x0005, 0x00f6, 0x00e6,
7790 + 0x2071, 0xc992, 0x7000, 0xa086, 0x0000, 0x05d0, 0x2079, 0x0020,
7791 + 0x0016, 0x2009, 0x0207, 0x210c, 0xd194, 0x0198, 0x2009, 0x020c,
7792 + 0x210c, 0xa184, 0x0003, 0x0168, 0x080c, 0xc5a7, 0x2001, 0x0133,
7793 + 0x2004, 0xa005, 0x090c, 0x1519, 0x20e1, 0x9040, 0x2001, 0x020c,
7794 + 0x2102, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0xa106,
7795 + 0x1110, 0x20e1, 0x9040, 0x7804, 0xd0fc, 0x09d8, 0x080c, 0x222c,
7796 + 0x7000, 0xa086, 0x0000, 0x19a8, 0x001e, 0x7803, 0x0004, 0x7804,
7797 + 0xd0ac, 0x1de8, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000,
7798 + 0x00ee, 0x00fe, 0x0005, 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6,
7799 + 0x2071, 0xc992, 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0540,
7800 + 0x7004, 0x2060, 0x6010, 0x2068, 0x080c, 0xac91, 0x0158, 0x6850,
7801 + 0xc0b5, 0x6852, 0x680c, 0x7a1c, 0xa206, 0x1120, 0x6808, 0x7a18,
7802 + 0xa206, 0x01e0, 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040,
7803 + 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x080c, 0xa961,
7804 + 0x20e1, 0x9040, 0x080c, 0x90f6, 0x2011, 0x0000, 0x080c, 0x8f18,
7805 + 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x0005, 0x6810, 0x6a14,
7806 + 0xa205, 0x1d00, 0x684c, 0xc0dc, 0x684e, 0x2c10, 0x080c, 0x2068,
7807 + 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004,
7808 + 0x7003, 0x0000, 0x2069, 0xc927, 0x6833, 0x0000, 0x683f, 0x0000,
7809 + 0x08f8, 0x8840, 0x2805, 0xa005, 0x1170, 0x6004, 0xa005, 0x0168,
7810 + 0x681a, 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x23c7, 0x2045,
7811 + 0x88ff, 0x090c, 0x1519, 0x8a51, 0x0005, 0x2050, 0x0005, 0x8a50,
7812 + 0x8841, 0x2805, 0xa005, 0x1190, 0x2c00, 0xad06, 0x0120, 0x6000,
7813 + 0xa005, 0x1108, 0x2d00, 0x2060, 0x681a, 0x6034, 0xa084, 0x000f,
7814 + 0xa080, 0x23d7, 0x2045, 0x88ff, 0x090c, 0x1519, 0x0005, 0x0000,
7815 + 0x0011, 0x0015, 0x0019, 0x001d, 0x0021, 0x0025, 0x0029, 0x0000,
7816 + 0x000f, 0x0015, 0x001b, 0x0021, 0x0027, 0x0000, 0x0000, 0x0000,
7817 + 0x23bc, 0x23b8, 0x23bc, 0x23bc, 0x23c6, 0x0000, 0x23bc, 0x0000,
7818 + 0x23c3, 0x23c0, 0x23c3, 0x23c3, 0x0000, 0x23c6, 0x23c3, 0x0000,
7819 + 0x23be, 0x23be, 0x0000, 0x23be, 0x23c6, 0x0000, 0x23be, 0x0000,
7820 + 0x23c4, 0x23c4, 0x0000, 0x23c4, 0x0000, 0x23c6, 0x23c4, 0x0136,
7821 + 0x0146, 0x0156, 0x2099, 0xc765, 0x20a1, 0x0018, 0x20a9, 0x0008,
7822 + 0x53a3, 0x7803, 0x0020, 0x0126, 0x2091, 0x8000, 0x7803, 0x0041,
7823 + 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, 0x700b, 0xc760, 0x012e,
7824 + 0x015e, 0x014e, 0x013e, 0x0005, 0x2099, 0x0014, 0x7803, 0x0040,
7825 + 0x2001, 0xc765, 0x2004, 0x2010, 0x080c, 0x72ad, 0x2009, 0xc699,
7826 + 0x2104, 0xa084, 0xfffc, 0x200a, 0x080c, 0x721f, 0x7007, 0x0000,
7827 + 0x080c, 0x1676, 0x0005, 0x00a6, 0x0096, 0x0086, 0x6b2e, 0x6c2a,
7828 + 0x6858, 0xa055, 0x0904, 0x24ac, 0x2d60, 0x6034, 0xa0cc, 0x000f,
7829 + 0xa9c0, 0x23c7, 0xa986, 0x0007, 0x0130, 0xa986, 0x000e, 0x0118,
7830 + 0xa986, 0x000f, 0x1120, 0x605c, 0xa422, 0x6060, 0xa31b, 0x2805,
7831 + 0xa045, 0x1140, 0x0310, 0x0804, 0x24ac, 0x6004, 0xa065, 0x0904,
7832 + 0x24ac, 0x0c18, 0x2805, 0xa005, 0x01a8, 0xac68, 0xd99c, 0x1128,
7833 + 0x6808, 0xa422, 0x680c, 0xa31b, 0x0020, 0x6810, 0xa422, 0x6814,
7834 + 0xa31b, 0x0620, 0x2300, 0xa405, 0x0150, 0x8a51, 0x0904, 0x24ac,
7835 + 0x8840, 0x0c40, 0x6004, 0xa065, 0x0904, 0x24ac, 0x0830, 0x8a51,
7836 + 0x0904, 0x24ac, 0x8840, 0x2805, 0xa005, 0x1158, 0x6004, 0xa065,
7837 + 0x0904, 0x24ac, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x23c7, 0x2805,
7838 + 0x2040, 0x2b68, 0x6850, 0xc0fc, 0x6852, 0x0458, 0x8422, 0x8420,
7839 + 0x831a, 0xa399, 0x0000, 0x00d6, 0x2b68, 0x6c6e, 0x6b72, 0x00de,
7840 + 0xd99c, 0x1168, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b,
7841 + 0x0a0c, 0x1519, 0x6800, 0xa420, 0x6804, 0xa319, 0x0060, 0x6910,
7842 + 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x0a0c, 0x1519, 0x6800,
7843 + 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd,
7844 + 0x6852, 0x2c00, 0x681a, 0x2800, 0x6832, 0x2a00, 0x6826, 0x000e,
7845 + 0x000e, 0x000e, 0xa006, 0x0028, 0x008e, 0x009e, 0x00ae, 0xa085,
7846 + 0x0001, 0x0005, 0x2001, 0x0005, 0x2004, 0xa084, 0x0007, 0x0002,
7847 + 0x24c0, 0x24c1, 0x24c4, 0x24c7, 0x24cc, 0x24cf, 0x24d4, 0x24d9,
7848 + 0x0005, 0x080c, 0x222c, 0x0005, 0x080c, 0x1b83, 0x0005, 0x080c,
7849 + 0x1b83, 0x080c, 0x222c, 0x0005, 0x080c, 0x1729, 0x0005, 0x080c,
7850 + 0x222c, 0x080c, 0x1729, 0x0005, 0x080c, 0x1b83, 0x080c, 0x1729,
7851 + 0x0005, 0x080c, 0x1b83, 0x080c, 0x222c, 0x080c, 0x1729, 0x0005,
7852 + 0x0006, 0x0016, 0x0156, 0x20a9, 0x0009, 0x2009, 0xc977, 0x2104,
7853 + 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, 0x24e7, 0x015e,
7854 + 0x001e, 0x000e, 0x0005, 0x00e6, 0x00d6, 0x2071, 0xc96a, 0x700c,
7855 + 0x7110, 0xa106, 0x01b8, 0x2104, 0xa005, 0x0138, 0xa080, 0x0004,
7856 + 0x2004, 0x2068, 0x080c, 0x7684, 0x0158, 0xa188, 0x0003, 0xa182,
7857 + 0xc992, 0x0210, 0x2009, 0xc977, 0x700c, 0xa106, 0x1d60, 0x0010,
7858 + 0xa085, 0x0001, 0x00de, 0x00ee, 0x0005, 0x0126, 0x2091, 0x2600,
7859 + 0x2079, 0x0200, 0x2071, 0xcc80, 0x2069, 0xc600, 0x080c, 0x260b,
7860 + 0x080c, 0x25fb, 0x2009, 0x0004, 0x7912, 0x7817, 0x0004, 0x080c,
7861 + 0x29a2, 0x781b, 0x0002, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a9,
7862 + 0x0080, 0x782f, 0x0000, 0x1f04, 0x2531, 0x20e1, 0x9080, 0x783b,
7863 + 0x001f, 0x20e1, 0x8700, 0x012e, 0x0005, 0x0126, 0x2091, 0x2600,
7864 + 0x781c, 0xd0a4, 0x190c, 0x25f8, 0xa084, 0x0007, 0x0002, 0x2561,
7865 + 0x254f, 0x2552, 0x2555, 0x255a, 0x255c, 0x255e, 0x2560, 0x080c,
7866 + 0x68c9, 0x0078, 0x080c, 0x6916, 0x0060, 0x080c, 0x68c9, 0x080c,
7867 + 0x6916, 0x0038, 0x0041, 0x0028, 0x0031, 0x0018, 0x0021, 0x0008,
7868 + 0x0011, 0x012e, 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xc5a7,
7869 + 0x7930, 0xa184, 0x0003, 0x01b0, 0x2001, 0xc936, 0x2004, 0xa005,
7870 + 0x0170, 0x2001, 0x0133, 0x2004, 0xa005, 0x090c, 0x1519, 0x00c6,
7871 + 0x2001, 0xc936, 0x2064, 0x080c, 0xa961, 0x00ce, 0x04b8, 0x20e1,
7872 + 0x9040, 0x04a0, 0xa184, 0x0030, 0x01e0, 0x6a00, 0xa286, 0x0003,
7873 + 0x1108, 0x00a0, 0x080c, 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003,
7874 + 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c,
7875 + 0x5f66, 0x080c, 0x5e5a, 0x0010, 0x080c, 0x4e5b, 0x080c, 0x25fb,
7876 + 0x00a8, 0xa184, 0x00c0, 0x0168, 0x00e6, 0x0036, 0x0046, 0x0056,
7877 + 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, 0x003e, 0x00ee,
7878 + 0x0028, 0xa184, 0x0300, 0x0110, 0x20e1, 0x9020, 0x7932, 0x002e,
7879 + 0x001e, 0x000e, 0x0005, 0x0016, 0x00e6, 0x00f6, 0x2071, 0xc600,
7880 + 0x7128, 0x2001, 0xc8d8, 0x2102, 0x2001, 0xc8e0, 0x2102, 0xa182,
7881 + 0x0211, 0x1218, 0x2009, 0x0008, 0x0400, 0xa182, 0x0259, 0x1218,
7882 + 0x2009, 0x0007, 0x00d0, 0xa182, 0x02c1, 0x1218, 0x2009, 0x0006,
7883 + 0x00a0, 0xa182, 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, 0xa182,
7884 + 0x0421, 0x1218, 0x2009, 0x0004, 0x0040, 0xa182, 0x0581, 0x1218,
7885 + 0x2009, 0x0003, 0x0010, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912,
7886 + 0x7817, 0x0004, 0x080c, 0x29a2, 0x00fe, 0x00ee, 0x001e, 0x0005,
7887 + 0x7938, 0x080c, 0x1519, 0x00e6, 0x0026, 0x2071, 0x0200, 0x20e1,
7888 + 0x1000, 0x7220, 0x7028, 0x7020, 0xa206, 0x0de0, 0x20e1, 0x9010,
7889 + 0x002e, 0x00ee, 0x0005, 0x20e1, 0xa000, 0x7837, 0x0001, 0x782f,
7890 + 0x0000, 0x782f, 0x0000, 0x782f, 0x0000, 0x782f, 0x0000, 0x7837,
7891 + 0x0005, 0x20a9, 0x0210, 0x7830, 0xd0bc, 0x1110, 0x1f04, 0x261b,
7892 + 0x7837, 0x0001, 0x7837, 0x0000, 0xe000, 0xe000, 0x20e1, 0xa000,
7893 + 0x0005, 0x0126, 0x2091, 0x2800, 0x2061, 0x0100, 0x2071, 0xc600,
7894 + 0x6024, 0x6026, 0x6053, 0x0030, 0x080c, 0x29e1, 0x6050, 0xa084,
7895 + 0xfe7f, 0x6052, 0x2009, 0x00ef, 0x6132, 0x6136, 0x080c, 0x29f1,
7896 + 0x60e7, 0x0000, 0x61ea, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043,
7897 + 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x0e9f, 0x601b,
7898 + 0x001e, 0x600f, 0x00ff, 0x2001, 0xc8d4, 0x2003, 0x00ff, 0x602b,
7899 + 0x002f, 0x012e, 0x0005, 0x2001, 0xc632, 0x2003, 0x0000, 0x2001,
7900 + 0xc631, 0x2003, 0x0001, 0x0005, 0x0126, 0x2091, 0x2800, 0x0006,
7901 + 0x0016, 0x0026, 0x6124, 0x0066, 0x2031, 0xc635, 0x2634, 0xa6b4,
7902 + 0x0028, 0x006e, 0x11c0, 0x6020, 0xd0bc, 0x01a8, 0xd1bc, 0x0198,
7903 + 0x783c, 0xa005, 0x0180, 0x00e6, 0x0006, 0x2070, 0x701c, 0xa086,
7904 + 0x0009, 0x000e, 0x00ee, 0x1138, 0x00e6, 0x783c, 0x2070, 0x7008,
7905 + 0xd0fc, 0x00ee, 0x1130, 0xa184, 0x1e2c, 0x1118, 0xa184, 0x0007,
7906 + 0x002a, 0xa195, 0x0004, 0xa284, 0x0007, 0x0002, 0x26b8, 0x269e,
7907 + 0x26a1, 0x26a4, 0x26a9, 0x26ab, 0x26af, 0x26b3, 0x080c, 0x7873,
7908 + 0x00b8, 0x080c, 0x794e, 0x00a0, 0x080c, 0x794e, 0x080c, 0x7873,
7909 + 0x0078, 0x0099, 0x0068, 0x080c, 0x7873, 0x0079, 0x0048, 0x080c,
7910 + 0x794e, 0x0059, 0x0028, 0x080c, 0x794e, 0x080c, 0x7873, 0x0029,
7911 + 0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x6124, 0x6028, 0xd09c,
7912 + 0x0118, 0xd19c, 0x1904, 0x2910, 0x080c, 0x5f22, 0x0578, 0x7000,
7913 + 0xa086, 0x0003, 0x0198, 0x6024, 0xa084, 0x1800, 0x0178, 0x080c,
7914 + 0x5f48, 0x0118, 0x080c, 0x5f34, 0x1148, 0x6027, 0x0020, 0x6043,
7915 + 0x0000, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0458, 0x080c, 0x5f48,
7916 + 0x15d0, 0x6024, 0xa084, 0x1800, 0x1108, 0x04a8, 0x2001, 0xc8e5,
7917 + 0x2003, 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600,
7918 + 0x2003, 0x0001, 0x080c, 0x5e5a, 0x0804, 0x2910, 0xd1ac, 0x1518,
7919 + 0x6024, 0xd0dc, 0x1170, 0xd0e4, 0x1188, 0xd0d4, 0x11a0, 0xd0cc,
7920 + 0x0130, 0x708c, 0xa086, 0x0028, 0x1110, 0x080c, 0x60b1, 0x0804,
7921 + 0x2910, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x0048, 0x2001, 0xc8e6,
7922 + 0x2003, 0x0002, 0x0020, 0x080c, 0x6024, 0x0804, 0x2910, 0x080c,
7923 + 0x6156, 0x0804, 0x2910, 0x6220, 0xd1bc, 0x0568, 0xd2bc, 0x0558,
7924 + 0x783c, 0xa005, 0x0540, 0x00e6, 0x2070, 0x7008, 0xd0fc, 0x00ee,
7925 + 0x0510, 0x6028, 0xc0bc, 0x602a, 0x0026, 0x0036, 0x6288, 0x638c,
7926 + 0x608b, 0xbc91, 0x608f, 0xffff, 0x6043, 0x0001, 0xe000, 0xe000,
7927 + 0x6027, 0x0080, 0x6017, 0x0000, 0x6043, 0x0000, 0x628a, 0x638e,
7928 + 0x003e, 0x002e, 0x0016, 0x2001, 0xc696, 0x200c, 0xc184, 0x2102,
7929 + 0x001e, 0x0804, 0x2969, 0xd1ac, 0x0904, 0x284c, 0x0036, 0x6328,
7930 + 0xc3bc, 0x632a, 0x003e, 0x080c, 0x5f22, 0x11d8, 0x6027, 0x0020,
7931 + 0x0006, 0x0026, 0x0036, 0x080c, 0x5f3e, 0x1170, 0x2001, 0xc8e6,
7932 + 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0x080c, 0x5e5a,
7933 + 0x003e, 0x002e, 0x000e, 0x0005, 0x003e, 0x002e, 0x000e, 0x080c,
7934 + 0x5ef9, 0x0016, 0x0046, 0x00c6, 0x644c, 0xa486, 0xf0f0, 0x1138,
7935 + 0x2061, 0x0100, 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74ce,
7936 + 0xa48c, 0xff00, 0x7034, 0xd084, 0x0178, 0xa186, 0xf800, 0x1160,
7937 + 0x703c, 0xd084, 0x1148, 0xc085, 0x703e, 0x0036, 0x2418, 0x2011,
7938 + 0x8016, 0x080c, 0x407d, 0x003e, 0xa196, 0xff00, 0x05b8, 0x7054,
7939 + 0xa084, 0x00ff, 0x810f, 0xa116, 0x0588, 0x7130, 0xd184, 0x1570,
7940 + 0x2011, 0xc653, 0x2214, 0xd2ec, 0x0138, 0xc18d, 0x7132, 0x2011,
7941 + 0xc653, 0x2214, 0xd2ac, 0x1510, 0x6240, 0xa294, 0x0010, 0x0130,
7942 + 0x6248, 0xa294, 0xff00, 0xa296, 0xff00, 0x01c0, 0x7030, 0xd08c,
7943 + 0x0904, 0x2819, 0x7034, 0xd08c, 0x1140, 0x2001, 0xc60c, 0x200c,
7944 + 0xd1ac, 0x1904, 0x2819, 0xc1ad, 0x2102, 0x0036, 0x73cc, 0x2011,
7945 + 0x8013, 0x080c, 0x407d, 0x003e, 0x0804, 0x2819, 0x7034, 0xd08c,
7946 + 0x1140, 0x2001, 0xc60c, 0x200c, 0xd1ac, 0x1904, 0x2819, 0xc1ad,
7947 + 0x2102, 0x0036, 0x73cc, 0x2011, 0x8013, 0x080c, 0x407d, 0x003e,
7948 + 0x7130, 0xc185, 0x7132, 0x2011, 0xc653, 0x220c, 0xd1a4, 0x01d0,
7949 + 0x0016, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, 0x712e, 0x2019,
7950 + 0x000e, 0x080c, 0xc10d, 0xa484, 0x00ff, 0xa080, 0x2f6e, 0x200d,
7951 + 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006, 0x2009, 0x000e, 0x080c,
7952 + 0xc190, 0x001e, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c,
7953 + 0x2e19, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000,
7954 + 0x080c, 0x533d, 0x1110, 0x080c, 0x4f47, 0x8108, 0x1f04, 0x2810,
7955 + 0x015e, 0x00ce, 0x004e, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011,
7956 + 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000,
7957 + 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x001e, 0x2001, 0xc600,
7958 + 0x2014, 0xa296, 0x0004, 0x1128, 0xd19c, 0x11b0, 0x6228, 0xc29d,
7959 + 0x622a, 0x2003, 0x0001, 0x2001, 0xc623, 0x2003, 0x0000, 0x6027,
7960 + 0x0020, 0x080c, 0x5f48, 0x1140, 0x0016, 0x2009, 0x07d0, 0x2011,
7961 + 0x5e37, 0x080c, 0x7036, 0x001e, 0xd194, 0x0904, 0x2910, 0x0016,
7962 + 0x6220, 0xd2b4, 0x0904, 0x28b5, 0x080c, 0x7024, 0x080c, 0x8bf5,
7963 + 0x6027, 0x0004, 0x00f6, 0x2019, 0xc930, 0x2304, 0xa07d, 0x0570,
7964 + 0x7804, 0xa086, 0x0032, 0x1550, 0x00d6, 0x00c6, 0x00e6, 0x2069,
7965 + 0x0140, 0x618c, 0x6288, 0x7818, 0x608e, 0x7808, 0x608a, 0x6043,
7966 + 0x0002, 0x2001, 0x0003, 0x8001, 0x1df0, 0x6043, 0x0000, 0x6803,
7967 + 0x1000, 0x6803, 0x0000, 0x618e, 0x628a, 0x080c, 0x7db1, 0x080c,
7968 + 0x7e94, 0x7810, 0x2070, 0x7037, 0x0103, 0x2f60, 0x080c, 0x95e3,
7969 + 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x0005, 0x00fe, 0x00d6,
7970 + 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0120, 0x6803, 0x1000,
7971 + 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061, 0xc927, 0x6028, 0xa09a,
7972 + 0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0x8be8, 0x0804,
7973 + 0x290f, 0x2019, 0xc930, 0x2304, 0xa065, 0x0120, 0x2009, 0x0027,
7974 + 0x080c, 0x9613, 0x00ce, 0x0804, 0x290f, 0xd2bc, 0x0904, 0x290f,
7975 + 0x080c, 0x7031, 0x6014, 0xa084, 0x0184, 0xa085, 0x0010, 0x6016,
7976 + 0x6027, 0x0004, 0x00d6, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000,
7977 + 0x0120, 0x6803, 0x1000, 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061,
7978 + 0xc927, 0x6044, 0xa09a, 0x00c8, 0x1620, 0x8000, 0x6046, 0x603c,
7979 + 0x00ce, 0xa005, 0x05a0, 0x2009, 0x07d0, 0x080c, 0x7029, 0xa080,
7980 + 0x0007, 0x2004, 0xa086, 0x0006, 0x1138, 0x6114, 0xa18c, 0x0184,
7981 + 0xa18d, 0x0012, 0x6116, 0x0418, 0xa080, 0x0007, 0x2004, 0xa086,
7982 + 0x0009, 0x0d98, 0x6114, 0xa18c, 0x0184, 0xa18d, 0x0016, 0x6116,
7983 + 0x00b0, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x003e, 0x2019,
7984 + 0xc936, 0x2304, 0xa065, 0x0150, 0x2009, 0x004f, 0x601c, 0xa086,
7985 + 0x0009, 0x1110, 0x2009, 0x0105, 0x080c, 0x9613, 0x00ce, 0x001e,
7986 + 0xd19c, 0x0904, 0x2969, 0x7034, 0xd0ac, 0x1560, 0x0016, 0x0156,
7987 + 0x6027, 0x0008, 0x602f, 0x0020, 0x20a9, 0x0006, 0x1d04, 0x291e,
7988 + 0x2091, 0x6000, 0x1f04, 0x291e, 0x602f, 0x0000, 0x6150, 0xa185,
7989 + 0x1400, 0x6052, 0x20a9, 0x0366, 0x1d04, 0x292c, 0x2091, 0x6000,
7990 + 0x6020, 0xd09c, 0x1130, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008,
7991 + 0x0480, 0x080c, 0x2ab1, 0x1f04, 0x292c, 0x015e, 0x6152, 0x001e,
7992 + 0x6027, 0x0008, 0x0016, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003,
7993 + 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee,
7994 + 0x0036, 0x2019, 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000,
7995 + 0x080c, 0xc586, 0x080c, 0xc5a1, 0xa085, 0x0001, 0x080c, 0x5f66,
7996 + 0x2001, 0xc600, 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, 0x12e1,
7997 + 0x001e, 0xa18c, 0xffd0, 0x6126, 0x0005, 0x0006, 0x0016, 0x0026,
7998 + 0x00e6, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc600, 0x71c4,
7999 + 0x70c6, 0xa116, 0x0500, 0x81ff, 0x0128, 0x2011, 0x8011, 0x080c,
8000 + 0x407d, 0x00c8, 0x2011, 0x8012, 0x080c, 0x407d, 0x2001, 0xc672,
8001 + 0x2004, 0xd0fc, 0x1180, 0x0036, 0x00c6, 0x080c, 0x2a3c, 0x080c,
8002 + 0x8dca, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, 0x0000, 0x080c,
8003 + 0x2e19, 0x00ce, 0x003e, 0x012e, 0x00fe, 0x00ee, 0x002e, 0x001e,
8004 + 0x000e, 0x0005, 0x00c6, 0x00f6, 0x0006, 0x0026, 0x2061, 0x0100,
8005 + 0xa190, 0x29b5, 0x2205, 0x60f2, 0x2011, 0x29c2, 0x2205, 0x60ee,
8006 + 0x002e, 0x000e, 0x00fe, 0x00ce, 0x0005, 0x0840, 0x0840, 0x0840,
8007 + 0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8,
8008 + 0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028,
8009 + 0xa18c, 0x00ff, 0x2130, 0xa094, 0xff00, 0x1110, 0x81ff, 0x0118,
8010 + 0x080c, 0x6be0, 0x0038, 0xa080, 0x2f6e, 0x200d, 0xa18c, 0xff00,
8011 + 0x810f, 0xa006, 0x0005, 0xa080, 0x2f6e, 0x200d, 0xa18c, 0x00ff,
8012 + 0x0005, 0x00d6, 0x2069, 0x0140, 0x2001, 0xc615, 0x2003, 0x00ef,
8013 + 0x20a9, 0x0010, 0xa006, 0x6852, 0x6856, 0x1f04, 0x29ec, 0x00de,
8014 + 0x0005, 0x0006, 0x00d6, 0x0026, 0x2069, 0x0140, 0x2001, 0xc615,
8015 + 0x2102, 0x8114, 0x8214, 0x8214, 0x8214, 0x20a9, 0x0010, 0x6853,
8016 + 0x0000, 0xa006, 0x82ff, 0x1128, 0xa184, 0x000f, 0xa080, 0xc5b5,
8017 + 0x2005, 0x6856, 0x8211, 0x1f04, 0x2a01, 0x002e, 0x00de, 0x000e,
8018 + 0x0005, 0x00c6, 0x2061, 0xc600, 0x6030, 0x0110, 0xc09d, 0x0008,
8019 + 0xc09c, 0x6032, 0x00ce, 0x0005, 0x0156, 0x00d6, 0x0026, 0x0016,
8020 + 0x0006, 0x2069, 0x0140, 0x6980, 0xa116, 0x0180, 0xa112, 0x1230,
8021 + 0x8212, 0x8210, 0x22a8, 0x2001, 0x0402, 0x0018, 0x22a8, 0x2001,
8022 + 0x0404, 0x680e, 0x1f04, 0x2a31, 0x680f, 0x0000, 0x000e, 0x001e,
8023 + 0x002e, 0x00de, 0x015e, 0x0005, 0x2001, 0xc653, 0x2004, 0xd0c4,
8024 + 0x0150, 0xd0a4, 0x0140, 0xa006, 0x0046, 0x2020, 0x2009, 0x002e,
8025 + 0x080c, 0xc190, 0x004e, 0x0005, 0x00f6, 0x0016, 0x0026, 0x2079,
8026 + 0x0140, 0x78c4, 0xd0dc, 0x0548, 0xa084, 0x0700, 0xa08e, 0x0300,
8027 + 0x1520, 0x2011, 0x0000, 0x2009, 0x0002, 0x2300, 0xa080, 0x0020,
8028 + 0x2018, 0x2300, 0x080c, 0x783f, 0x2011, 0x0030, 0x2200, 0x8007,
8029 + 0xa085, 0x004c, 0x78c2, 0x2009, 0x0204, 0x210c, 0x2200, 0xa100,
8030 + 0x2009, 0x0138, 0x200a, 0x080c, 0x5f22, 0x1118, 0x2009, 0xc8d6,
8031 + 0x200a, 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8,
8032 + 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170,
8033 + 0x200c, 0x8000, 0x2014, 0xa184, 0x0003, 0x0110, 0x0804, 0x1b81,
8034 + 0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x0006, 0x2001, 0x0100,
8035 + 0x2004, 0xa082, 0x0005, 0x000e, 0x0268, 0x2001, 0x0170, 0x200c,
8036 + 0xa18c, 0x00ff, 0xa18e, 0x004c, 0x1128, 0x200c, 0xa18c, 0xff00,
8037 + 0x810f, 0x0010, 0x2009, 0x0000, 0x2001, 0x0204, 0x2004, 0xa108,
8038 + 0x0005, 0x0006, 0x0156, 0x00f6, 0x2079, 0x0100, 0x20a9, 0x000a,
8039 + 0x7854, 0xd08c, 0x1110, 0x1f04, 0x2ab8, 0x00fe, 0x015e, 0x000e,
8040 + 0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, 0x6030, 0x0006,
8041 + 0x6048, 0x0006, 0x60e4, 0x0006, 0x60e8, 0x0006, 0x6050, 0x0006,
8042 + 0x60f0, 0x0006, 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006,
8043 + 0x6028, 0x0006, 0x60e0, 0x0006, 0x602f, 0x0100, 0x602f, 0x0000,
8044 + 0xe000, 0xe000, 0xe000, 0xe000, 0x602f, 0x0040, 0x602f, 0x0000,
8045 + 0x000e, 0x60e2, 0x000e, 0x602a, 0x000e, 0x6006, 0x000e, 0x600e,
8046 + 0x000e, 0x60ee, 0x000e, 0x60f2, 0x000e, 0x6052, 0x000e, 0x60ea,
8047 + 0x000e, 0x60e6, 0x000e, 0x604a, 0x000e, 0x6032, 0x6036, 0x2008,
8048 + 0x080c, 0x29f1, 0x000e, 0x00ce, 0x001e, 0x0005, 0x2009, 0x0171,
8049 + 0x2104, 0xd0dc, 0x0140, 0x2009, 0x0170, 0x2104, 0x200b, 0x0080,
8050 + 0xe000, 0xe000, 0x200a, 0x0005, 0x2ba4, 0x2ba8, 0x2bac, 0x2bb2,
8051 + 0x2bb8, 0x2bbe, 0x2bc4, 0x2bcc, 0x2bd4, 0x2bda, 0x2be0, 0x2be8,
8052 + 0x2bf0, 0x2bf8, 0x2c00, 0x2c0a, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8053 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8054 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8055 + 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8056 + 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8057 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8058 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c16, 0x2c16, 0x2c1c, 0x2c1c,
8059 + 0x2c23, 0x2c23, 0x2c2a, 0x2c2a, 0x2c33, 0x2c33, 0x2c3a, 0x2c3a,
8060 + 0x2c43, 0x2c43, 0x2c4c, 0x2c4c, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8061 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8062 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8063 + 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8064 + 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8065 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c57,
8066 + 0x2c57, 0x2c57, 0x2c57, 0x2c57, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8067 + 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x2c14,
8068 + 0x2c14, 0x2c14, 0x2c14, 0x2c14, 0x0106, 0x0006, 0x0804, 0x2c5f,
8069 + 0x0106, 0x0006, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664,
8070 + 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664, 0x0804, 0x2c5f,
8071 + 0x0106, 0x0006, 0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006,
8072 + 0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664,
8073 + 0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664,
8074 + 0x080c, 0x24b2, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x253d,
8075 + 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x253d, 0x0804, 0x2c5f,
8076 + 0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x253d, 0x0804, 0x2c5f,
8077 + 0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x253d, 0x0804, 0x2c5f,
8078 + 0x0106, 0x0006, 0x080c, 0x24b2, 0x080c, 0x253d, 0x0804, 0x2c5f,
8079 + 0x0106, 0x0006, 0x080c, 0x24b2, 0x080c, 0x253d, 0x0804, 0x2c5f,
8080 + 0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x24b2, 0x080c, 0x253d,
8081 + 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2664, 0x080c, 0x24b2,
8082 + 0x080c, 0x253d, 0x0804, 0x2c5f, 0xe000, 0x0cf0, 0x0106, 0x0006,
8083 + 0x080c, 0x2a80, 0x0804, 0x2c5f, 0x0106, 0x0006, 0x080c, 0x2a80,
8084 + 0x080c, 0x2664, 0x04e0, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c,
8085 + 0x24b2, 0x04a8, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c, 0x2664,
8086 + 0x080c, 0x24b2, 0x0460, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c,
8087 + 0x253d, 0x0428, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c, 0x2664,
8088 + 0x080c, 0x253d, 0x00e0, 0x0106, 0x0006, 0x080c, 0x2a80, 0x080c,
8089 + 0x24b2, 0x080c, 0x253d, 0x0098, 0x0106, 0x0006, 0x080c, 0x2a80,
8090 + 0x080c, 0x2664, 0x080c, 0x24b2, 0x080c, 0x253d, 0x0040, 0x20d1,
8091 + 0x0000, 0x20d1, 0x0001, 0x20d1, 0x0000, 0x080c, 0x1519, 0x000e,
8092 + 0x010e, 0x000d, 0x00c6, 0x0026, 0x0046, 0x2021, 0x0000, 0x080c,
8093 + 0x570b, 0x1904, 0x2d3f, 0x72d4, 0x2001, 0xc8e5, 0x2004, 0xa005,
8094 + 0x1110, 0xd29c, 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, 0x2d3f,
8095 + 0x080c, 0x2d43, 0x0804, 0x2d3f, 0xd2cc, 0x1904, 0x2d3f, 0x080c,
8096 + 0x5f22, 0x1120, 0x709f, 0xffff, 0x0804, 0x2d3f, 0xd294, 0x0120,
8097 + 0x709f, 0xffff, 0x0804, 0x2d3f, 0x2001, 0xc615, 0x203c, 0x7288,
8098 + 0xd284, 0x0904, 0x2ce1, 0xd28c, 0x1904, 0x2ce1, 0x0036, 0x739c,
8099 + 0xa38e, 0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0xa2e0, 0xcdc0,
8100 + 0x2c04, 0xa38c, 0x0001, 0x0120, 0xa084, 0xff00, 0x8007, 0x0010,
8101 + 0xa084, 0x00ff, 0xa70e, 0x0560, 0xa08e, 0x0000, 0x0548, 0xa08e,
8102 + 0x00ff, 0x1150, 0x7230, 0xd284, 0x1538, 0x7288, 0xc28d, 0x728a,
8103 + 0x709f, 0xffff, 0x003e, 0x0428, 0x2009, 0x0000, 0x080c, 0x29c7,
8104 + 0x080c, 0x52e1, 0x11b8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
8105 + 0x1150, 0x7030, 0xd08c, 0x0118, 0x6000, 0xd0bc, 0x0120, 0x080c,
8106 + 0x2d56, 0x0140, 0x0028, 0x080c, 0x2e87, 0x080c, 0x2d84, 0x0110,
8107 + 0x8318, 0x0818, 0x739e, 0x0010, 0x709f, 0xffff, 0x003e, 0x0804,
8108 + 0x2d3f, 0xa780, 0x2f6e, 0x203d, 0xa7bc, 0xff00, 0x873f, 0x2041,
8109 + 0x007e, 0x709c, 0xa096, 0xffff, 0x1120, 0x2009, 0x0000, 0x28a8,
8110 + 0x0050, 0xa812, 0x0220, 0x2008, 0xa802, 0x20a8, 0x0020, 0x709f,
8111 + 0xffff, 0x0804, 0x2d3f, 0x2700, 0x0156, 0x0016, 0xa106, 0x05a0,
8112 + 0xc484, 0x080c, 0x533d, 0x0120, 0x080c, 0x52e1, 0x15a8, 0x0008,
8113 + 0xc485, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1130, 0x7030,
8114 + 0xd08c, 0x01e8, 0x6000, 0xd0bc, 0x11d0, 0x7288, 0xd28c, 0x0188,
8115 + 0x6004, 0xa084, 0x00ff, 0xa082, 0x0006, 0x02b0, 0xd484, 0x1118,
8116 + 0x080c, 0x5300, 0x0028, 0x080c, 0x2f14, 0x0170, 0x080c, 0x2f41,
8117 + 0x0058, 0x080c, 0x2e87, 0x080c, 0x2d84, 0x0170, 0x0028, 0x080c,
8118 + 0x2f14, 0x0110, 0x0419, 0x0140, 0x001e, 0x8108, 0x015e, 0x1f04,
8119 + 0x2cfb, 0x709f, 0xffff, 0x0018, 0x001e, 0x015e, 0x719e, 0x004e,
8120 + 0x002e, 0x00ce, 0x0005, 0x00c6, 0x0016, 0x709f, 0x0001, 0x2009,
8121 + 0x007e, 0x080c, 0x52e1, 0x1138, 0x080c, 0x2e87, 0x04a9, 0x0118,
8122 + 0x70d4, 0xc0bd, 0x70d6, 0x001e, 0x00ce, 0x0005, 0x0016, 0x0076,
8123 + 0x00d6, 0x00c6, 0x2c68, 0x2001, 0xc657, 0x2004, 0xa084, 0x00ff,
8124 + 0x6842, 0x080c, 0xaf0d, 0x01d8, 0x2d00, 0x601a, 0x080c, 0xb05e,
8125 + 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x527f, 0x2001, 0x0000,
8126 + 0x080c, 0x5291, 0x0126, 0x2091, 0x8000, 0x7098, 0x8000, 0x709a,
8127 + 0x012e, 0x2009, 0x0004, 0x080c, 0x9613, 0xa085, 0x0001, 0x00ce,
8128 + 0x00de, 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6,
8129 + 0x2c68, 0x2001, 0xc657, 0x2004, 0xa084, 0x00ff, 0x6842, 0x080c,
8130 + 0xaf0d, 0x0550, 0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0,
8131 + 0xa086, 0x007e, 0x0140, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006,
8132 + 0x1110, 0x080c, 0x2e46, 0x080c, 0xb05e, 0x601f, 0x0001, 0x2001,
8133 + 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x0126,
8134 + 0x2091, 0x8000, 0x7098, 0x8000, 0x709a, 0x012e, 0x2009, 0x0002,
8135 + 0x080c, 0x9613, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e,
8136 + 0x0005, 0x00c6, 0x0026, 0x2009, 0x0080, 0x080c, 0x52e1, 0x1120,
8137 + 0x0031, 0x0110, 0x70db, 0xffff, 0x002e, 0x00ce, 0x0005, 0x0016,
8138 + 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x080c, 0x958d, 0x01e8, 0x2d00,
8139 + 0x601a, 0x080c, 0xb05e, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c,
8140 + 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x0126, 0x2091, 0x8000,
8141 + 0x080c, 0x2e46, 0x70dc, 0x8000, 0x70de, 0x012e, 0x2009, 0x0002,
8142 + 0x080c, 0x9613, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e,
8143 + 0x0005, 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f,
8144 + 0x080c, 0x52e1, 0x1190, 0x2c68, 0x080c, 0x958d, 0x0170, 0x2d00,
8145 + 0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x080c, 0xb05e, 0x2009,
8146 + 0x0022, 0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00de, 0x00ce,
8147 + 0x0005, 0x00e6, 0x00c6, 0x0066, 0x0036, 0x0026, 0x080c, 0x7b22,
8148 + 0x080c, 0x7abb, 0x080c, 0xa090, 0x2130, 0x81ff, 0x0128, 0x20a9,
8149 + 0x007e, 0x2009, 0x0000, 0x0020, 0x20a9, 0x007f, 0x2009, 0x0000,
8150 + 0x0016, 0x080c, 0x533d, 0x1120, 0x080c, 0x553e, 0x080c, 0x4f47,
8151 + 0x001e, 0x8108, 0x1f04, 0x2e30, 0x86ff, 0x1110, 0x080c, 0x11f4,
8152 + 0x002e, 0x003e, 0x006e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6,
8153 + 0x0036, 0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019,
8154 + 0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e,
8155 + 0x2c08, 0x080c, 0xbef7, 0x007e, 0x001e, 0x2e60, 0x080c, 0x553e,
8156 + 0x6210, 0x6314, 0x080c, 0x4f47, 0x6212, 0x6316, 0x001e, 0x002e,
8157 + 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x6018, 0xa080,
8158 + 0x0028, 0x2004, 0xa086, 0x0080, 0x0150, 0x2071, 0xc600, 0x7098,
8159 + 0xa005, 0x0110, 0x8001, 0x709a, 0x000e, 0x00ee, 0x0005, 0x2071,
8160 + 0xc600, 0x70dc, 0xa005, 0x0dc0, 0x8001, 0x70de, 0x0ca8, 0x6000,
8161 + 0xc08c, 0x6002, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0036, 0x0026,
8162 + 0x0016, 0x0156, 0x2178, 0x81ff, 0x1118, 0x20a9, 0x0001, 0x0098,
8163 + 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0xa006,
8164 + 0x0046, 0x2020, 0x2009, 0x002d, 0x080c, 0xc190, 0x004e, 0x20a9,
8165 + 0x00ff, 0x2011, 0x0000, 0x0026, 0xa28e, 0x007e, 0x0904, 0x2ef3,
8166 + 0xa28e, 0x007f, 0x0904, 0x2ef3, 0xa28e, 0x0080, 0x05e0, 0xa288,
8167 + 0xc77b, 0x210c, 0x81ff, 0x05b8, 0x8fff, 0x1148, 0x2001, 0xc905,
8168 + 0x0006, 0x2003, 0x0001, 0x04d9, 0x000e, 0x2003, 0x0000, 0x00c6,
8169 + 0x2160, 0x2001, 0x0001, 0x080c, 0x5715, 0x00ce, 0x2019, 0x0029,
8170 + 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, 0x00c6,
8171 + 0x0026, 0x2160, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x1118,
8172 + 0x6007, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, 0xa215, 0x6206,
8173 + 0x002e, 0x00ce, 0x0016, 0x2c08, 0x080c, 0xbef7, 0x001e, 0x007e,
8174 + 0x2160, 0x080c, 0x553e, 0x002e, 0x8210, 0x1f04, 0x2eab, 0x015e,
8175 + 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046,
8176 + 0x0026, 0x0016, 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0148, 0xd0a4,
8177 + 0x0138, 0xa006, 0x2220, 0x8427, 0x2009, 0x0029, 0x080c, 0xc190,
8178 + 0x001e, 0x002e, 0x004e, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6,
8179 + 0x7288, 0x82ff, 0x01f8, 0x2011, 0xc653, 0x2214, 0xd2ac, 0x11d0,
8180 + 0x2100, 0x080c, 0x29db, 0x81ff, 0x01b8, 0x2019, 0x0001, 0x8314,
8181 + 0xa2e0, 0xcdc0, 0x2c04, 0xd384, 0x0120, 0xa084, 0xff00, 0x8007,
8182 + 0x0010, 0xa084, 0x00ff, 0xa116, 0x0138, 0xa096, 0x00ff, 0x0110,
8183 + 0x8318, 0x0c68, 0xa085, 0x0001, 0x00ce, 0x003e, 0x002e, 0x001e,
8184 + 0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0016, 0x0026,
8185 + 0x0036, 0x2110, 0x0026, 0x2019, 0x0029, 0x080c, 0x9132, 0x002e,
8186 + 0x080c, 0xc4e4, 0x003e, 0x002e, 0x001e, 0xa180, 0xc77b, 0x2004,
8187 + 0xa065, 0x0158, 0x0016, 0x00c6, 0x2061, 0xca3c, 0x001e, 0x611a,
8188 + 0x080c, 0x2e46, 0x001e, 0x080c, 0x5300, 0x012e, 0x00ce, 0x001e,
8189 + 0x0005, 0x2001, 0xc635, 0x2004, 0xd0cc, 0x0005, 0x7eef, 0x7de8,
8190 + 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6,
8191 + 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc,
8192 + 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc,
8193 + 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1,
8194 + 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6,
8195 + 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797,
8196 + 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c,
8197 + 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071,
8198 + 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66,
8199 + 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454,
8200 + 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a,
8201 + 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039,
8202 + 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d,
8203 + 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123,
8204 + 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f,
8205 + 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700,
8206 + 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000,
8207 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000,
8208 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000,
8209 + 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000,
8210 + 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700,
8211 + 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100,
8212 + 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00,
8213 + 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
8214 + 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400,
8215 + 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00,
8216 + 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800,
8217 + 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400,
8218 + 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000,
8219 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x8000, 0x8000,
8220 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
8221 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x2071, 0xc6a2,
8222 + 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a, 0x703e, 0x7033,
8223 + 0xc6b2, 0x7037, 0xc6b2, 0x7007, 0x0001, 0x2061, 0xc6f2, 0x6003,
8224 + 0x0002, 0x0005, 0x1004, 0x3094, 0x0e04, 0x3094, 0x2071, 0xc6a2,
8225 + 0x2b78, 0x7818, 0xd084, 0x1140, 0x2a60, 0x7820, 0xa08e, 0x0069,
8226 + 0x1904, 0x3179, 0x0804, 0x3112, 0x0005, 0x2071, 0xc6a2, 0x7004,
8227 + 0x0002, 0x309d, 0x309e, 0x30a7, 0x30b8, 0x0005, 0x1004, 0x30a6,
8228 + 0x0e04, 0x30a6, 0x2b78, 0x7818, 0xd084, 0x01e8, 0x0005, 0x2b78,
8229 + 0x2061, 0xc6f2, 0x6008, 0xa08e, 0x0100, 0x0128, 0xa086, 0x0200,
8230 + 0x0904, 0x3173, 0x0005, 0x7014, 0x2068, 0x2a60, 0x7018, 0x0807,
8231 + 0x7010, 0x2068, 0x6834, 0xa086, 0x0103, 0x0108, 0x0005, 0x2a60,
8232 + 0x2b78, 0x7018, 0x0807, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x1210,
8233 + 0x61c4, 0x0042, 0x2100, 0xa08a, 0x003f, 0x1a04, 0x3170, 0x61c4,
8234 + 0x0804, 0x3112, 0x3154, 0x317f, 0x3187, 0x318b, 0x3193, 0x3199,
8235 + 0x319d, 0x31a9, 0x31ac, 0x31b6, 0x31b9, 0x3170, 0x3170, 0x3170,
8236 + 0x31bc, 0x3170, 0x31cb, 0x31e2, 0x31f9, 0x3273, 0x3278, 0x32a1,
8237 + 0x32f2, 0x3303, 0x3322, 0x335a, 0x3364, 0x3371, 0x3384, 0x33a5,
8238 + 0x33ae, 0x33e4, 0x33ea, 0x3170, 0x3413, 0x3170, 0x3170, 0x3170,
8239 + 0x3170, 0x3170, 0x341a, 0x3424, 0x3170, 0x3170, 0x3170, 0x3170,
8240 + 0x3170, 0x3170, 0x3170, 0x3170, 0x342c, 0x3170, 0x3170, 0x3170,
8241 + 0x3170, 0x3170, 0x343e, 0x3448, 0x3170, 0x3170, 0x3170, 0x3170,
8242 + 0x3170, 0x3170, 0x0002, 0x3472, 0x34c6, 0x3521, 0x353b, 0x3170,
8243 + 0x356c, 0x399f, 0x456f, 0x3170, 0x3170, 0x3170, 0x3170, 0x3170,
8244 + 0x3170, 0x3170, 0x3170, 0x31b6, 0x31b9, 0x39a1, 0x3170, 0x39ae,
8245 + 0x4608, 0x4663, 0x46c7, 0x3170, 0x472a, 0x4754, 0x4773, 0x47a5,
8246 + 0x3170, 0x3170, 0x3170, 0x39b2, 0x3b57, 0x3b71, 0x3b8f, 0x3bf0,
8247 + 0x3c50, 0x3c5b, 0x3c93, 0x3ca2, 0x3cb1, 0x3cb4, 0x3cd7, 0x3d21,
8248 + 0x3d97, 0x3da4, 0x3ea5, 0x3fd4, 0x3ffd, 0x40fb, 0x411d, 0x4129,
8249 + 0x4162, 0x4232, 0x428c, 0x4352, 0x43a4, 0x4404, 0x4419, 0x4434,
8250 + 0x44a6, 0x4558, 0x713c, 0x0000, 0x2021, 0x4000, 0x080c, 0x405a,
8251 + 0x0126, 0x2091, 0x8000, 0x0e04, 0x3160, 0x7818, 0xd084, 0x0110,
8252 + 0x012e, 0x0cb0, 0x7c22, 0x7926, 0x7a2a, 0x7b2e, 0x781b, 0x0001,
8253 + 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, 0x5000, 0x012e, 0x0005,
8254 + 0x2021, 0x4001, 0x0c18, 0x2021, 0x4002, 0x0c00, 0x2021, 0x4003,
8255 + 0x08e8, 0x2021, 0x4005, 0x08d0, 0x2021, 0x4006, 0x08b8, 0xa02e,
8256 + 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0804, 0x4067, 0x7823,
8257 + 0x0004, 0x7824, 0x0807, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824,
8258 + 0x7930, 0x0804, 0x406a, 0x7924, 0x7828, 0x2114, 0x200a, 0x0804,
8259 + 0x3154, 0x7924, 0x2114, 0x0804, 0x3154, 0x2099, 0x0009, 0x20a1,
8260 + 0x0009, 0x20a9, 0x0007, 0x53a3, 0x7924, 0x7a28, 0x7b2c, 0x0804,
8261 + 0x3154, 0x7824, 0x2060, 0x0090, 0x2009, 0x0002, 0x2011, 0x0002,
8262 + 0x2019, 0x0005, 0x783b, 0x0037, 0x0804, 0x3154, 0x7d38, 0x7c3c,
8263 + 0x0840, 0x7d38, 0x7c3c, 0x0888, 0x2061, 0x1000, 0xe10c, 0xa006,
8264 + 0x2c15, 0xa200, 0x8c60, 0x8109, 0x1dd8, 0x2010, 0xa005, 0x0904,
8265 + 0x3154, 0x0804, 0x3176, 0x2069, 0xc652, 0x7824, 0x7930, 0xa11a,
8266 + 0x1a04, 0x317c, 0x8019, 0x0904, 0x317c, 0x684a, 0x6942, 0x782c,
8267 + 0x6852, 0x7828, 0x6856, 0xa006, 0x685a, 0x685e, 0x080c, 0x61f8,
8268 + 0x0804, 0x3154, 0x2069, 0xc652, 0x7824, 0x7934, 0xa11a, 0x1a04,
8269 + 0x317c, 0x8019, 0x0904, 0x317c, 0x684e, 0x6946, 0x782c, 0x6862,
8270 + 0x7828, 0x6866, 0xa006, 0x686a, 0x686e, 0x080c, 0x57d7, 0x0804,
8271 + 0x3154, 0xa02e, 0x2520, 0x81ff, 0x1904, 0x3179, 0x7924, 0x7b28,
8272 + 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0xc6a9, 0x41a1, 0x080c, 0x4026,
8273 + 0x0904, 0x3179, 0x2009, 0x0020, 0x080c, 0x4067, 0x701b, 0x3211,
8274 + 0x0005, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011, 0x0138,
8275 + 0xa096, 0x0019, 0x0120, 0xa096, 0x0015, 0x1904, 0x3179, 0x810f,
8276 + 0xa18c, 0x00ff, 0x0904, 0x3179, 0x710e, 0x700c, 0x8001, 0x0528,
8277 + 0x700e, 0x080c, 0x4026, 0x0904, 0x3179, 0x2009, 0x0020, 0x2061,
8278 + 0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399,
8279 + 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x080c, 0x4067, 0x701b,
8280 + 0x3242, 0x0005, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0120,
8281 + 0xa096, 0x000a, 0x1904, 0x3179, 0x08c0, 0x7010, 0x2068, 0x6838,
8282 + 0xc0fd, 0x683a, 0x080c, 0x51dd, 0x1128, 0x7007, 0x0003, 0x701b,
8283 + 0x325c, 0x0005, 0x080c, 0x592e, 0x0126, 0x2091, 0x8000, 0x20a9,
8284 + 0x0005, 0x2099, 0xc6a9, 0x530a, 0x2100, 0xa210, 0xa399, 0x0000,
8285 + 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, 0x0020,
8286 + 0x012e, 0x0804, 0x406a, 0x61ac, 0x7824, 0x60ae, 0x0804, 0x3154,
8287 + 0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, 0x5020,
8288 + 0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, 0x7836,
8289 + 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0xa205,
8290 + 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, 0x2091,
8291 + 0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, 0x0804,
8292 + 0x0427, 0x81ff, 0x1904, 0x3179, 0x7924, 0x810f, 0xa18c, 0x00ff,
8293 + 0x080c, 0x533d, 0x1904, 0x317c, 0x7e38, 0xa684, 0x3fff, 0xa082,
8294 + 0x4000, 0x0210, 0x0804, 0x317c, 0x7c28, 0x7d2c, 0x080c, 0x5505,
8295 + 0xd28c, 0x1118, 0x080c, 0x54ae, 0x0010, 0x080c, 0x54de, 0x1518,
8296 + 0x2061, 0xce00, 0x0126, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000,
8297 + 0x0148, 0x6010, 0xa06d, 0x0130, 0x683c, 0xa406, 0x1118, 0x6840,
8298 + 0xa506, 0x0150, 0x012e, 0xace0, 0x0018, 0x2001, 0xc617, 0x2004,
8299 + 0xac02, 0x1a04, 0x3179, 0x0c30, 0x080c, 0xa961, 0x012e, 0x0904,
8300 + 0x3179, 0x0804, 0x3154, 0xa00e, 0x2001, 0x0005, 0x080c, 0x592e,
8301 + 0x0126, 0x2091, 0x8000, 0x080c, 0xaf09, 0x080c, 0x580a, 0x012e,
8302 + 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904,
8303 + 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5511, 0x0904,
8304 + 0x3179, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x404b,
8305 + 0x0904, 0x317c, 0x080c, 0x557d, 0x0904, 0x3179, 0x2019, 0x0005,
8306 + 0x7924, 0x080c, 0x552c, 0x0904, 0x3179, 0x7828, 0xa08a, 0x1000,
8307 + 0x1a04, 0x317c, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fb9,
8308 + 0x0804, 0x3154, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009,
8309 + 0x0001, 0x0450, 0x2029, 0x00ff, 0x6450, 0x2400, 0xa506, 0x01f8,
8310 + 0x2508, 0x080c, 0x533d, 0x11d8, 0x080c, 0x557d, 0x1128, 0x2009,
8311 + 0x0002, 0x62b4, 0x2518, 0x00c0, 0x2019, 0x0004, 0xa00e, 0x080c,
8312 + 0x552c, 0x1118, 0x2009, 0x0006, 0x0078, 0x7824, 0xa08a, 0x1000,
8313 + 0x1270, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, 0x6fb9, 0x8529,
8314 + 0x1ae0, 0x012e, 0x0804, 0x3154, 0x012e, 0x0804, 0x3179, 0x012e,
8315 + 0x0804, 0x317c, 0x080c, 0x403b, 0x0904, 0x317c, 0x080c, 0x5469,
8316 + 0x080c, 0x5505, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c,
8317 + 0x403b, 0x0904, 0x317c, 0x080c, 0x545a, 0x080c, 0x5505, 0x0804,
8318 + 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, 0x317c,
8319 + 0x080c, 0x54e0, 0x0904, 0x3179, 0x080c, 0x5221, 0x080c, 0x54a7,
8320 + 0x080c, 0x5505, 0x0804, 0x3154, 0x080c, 0x403b, 0x0904, 0x317c,
8321 + 0x080c, 0x5403, 0x0904, 0x3179, 0x62a0, 0x2019, 0x0005, 0x00c6,
8322 + 0x080c, 0x553e, 0x2061, 0x0000, 0x080c, 0x7b16, 0x0076, 0x2039,
8323 + 0x0000, 0x080c, 0x7a0e, 0x2009, 0x0000, 0x080c, 0xbef7, 0x007e,
8324 + 0x00ce, 0x080c, 0x5505, 0x0804, 0x3154, 0x080c, 0x403b, 0x0904,
8325 + 0x317c, 0x080c, 0x5505, 0x2208, 0x0804, 0x3154, 0x0156, 0x00d6,
8326 + 0x00e6, 0x2069, 0xc734, 0x6810, 0x6914, 0xa10a, 0x1210, 0x2009,
8327 + 0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x007e,
8328 + 0x2069, 0xc77b, 0x2d04, 0xa075, 0x0130, 0x704c, 0x0071, 0xa210,
8329 + 0x7080, 0x0059, 0xa318, 0x8d68, 0x1f04, 0x33c2, 0x2300, 0xa218,
8330 + 0x00ee, 0x00de, 0x015e, 0x0804, 0x3154, 0x00f6, 0x0016, 0xa07d,
8331 + 0x0140, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff, 0x0110, 0x2178,
8332 + 0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069, 0xc734, 0x6910, 0x62b0,
8333 + 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x6150, 0xa190, 0x2f6e,
8334 + 0x2215, 0xa294, 0x00ff, 0x6370, 0x83ff, 0x0108, 0x6274, 0x67d4,
8335 + 0xd79c, 0x0118, 0x2031, 0x0001, 0x0090, 0xd7ac, 0x0118, 0x2031,
8336 + 0x0003, 0x0068, 0xd7a4, 0x0118, 0x2031, 0x0002, 0x0040, 0x080c,
8337 + 0x5f22, 0x1118, 0x2031, 0x0004, 0x0010, 0x2031, 0x0000, 0x7e3a,
8338 + 0x7f3e, 0x0804, 0x3154, 0x6140, 0x6244, 0x2019, 0xc8fd, 0x231c,
8339 + 0x0804, 0x3154, 0x0126, 0x2091, 0x8000, 0x6134, 0xa006, 0x2010,
8340 + 0x6338, 0x012e, 0x0804, 0x3154, 0x080c, 0x404b, 0x0904, 0x317c,
8341 + 0x6244, 0x6338, 0x0804, 0x3154, 0x6140, 0x6244, 0x7824, 0x6042,
8342 + 0x7b28, 0x6346, 0x2069, 0xc652, 0x831f, 0xa305, 0x6816, 0x782c,
8343 + 0x2069, 0xc8fd, 0x2d1c, 0x206a, 0x0804, 0x3154, 0x0126, 0x2091,
8344 + 0x8000, 0x7824, 0x6036, 0x782c, 0x603a, 0x012e, 0x0804, 0x3154,
8345 + 0x7838, 0xa005, 0x01a8, 0x7828, 0xa025, 0x0904, 0x317c, 0x782c,
8346 + 0xa02d, 0x0904, 0x317c, 0xa00e, 0x080c, 0x533d, 0x1120, 0x6244,
8347 + 0x6338, 0x6446, 0x653a, 0xa186, 0x00ff, 0x0190, 0x8108, 0x0ca0,
8348 + 0x080c, 0x404b, 0x0904, 0x317c, 0x7828, 0xa00d, 0x0904, 0x317c,
8349 + 0x782c, 0xa005, 0x0904, 0x317c, 0x6244, 0x6146, 0x6338, 0x603a,
8350 + 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904,
8351 + 0x3179, 0x00c6, 0x2061, 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff,
8352 + 0xa196, 0x00ff, 0x1130, 0x2001, 0xc615, 0x2004, 0xa085, 0xff00,
8353 + 0x0078, 0xa182, 0x007f, 0x16a0, 0xa188, 0x2f6e, 0x210d, 0xa18c,
8354 + 0x00ff, 0x2001, 0xc615, 0x2004, 0xa116, 0x0550, 0x810f, 0xa105,
8355 + 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x958d, 0x000e, 0x01e0,
8356 + 0x601a, 0x600b, 0xbc09, 0x601f, 0x0001, 0x080c, 0x4026, 0x01d8,
8357 + 0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd,
8358 + 0x683a, 0x701b, 0x351a, 0x2d00, 0x6012, 0x2009, 0x0032, 0x080c,
8359 + 0x9613, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x3179,
8360 + 0x00ce, 0x0804, 0x317c, 0x080c, 0x95e3, 0x0cb0, 0x2001, 0xc600,
8361 + 0x2004, 0xa086, 0x0003, 0x1904, 0x3179, 0x00c6, 0x2061, 0x0100,
8362 + 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x1130, 0x2001,
8363 + 0xc615, 0x2004, 0xa085, 0xff00, 0x0078, 0xa182, 0x007f, 0x16a0,
8364 + 0xa188, 0x2f6e, 0x210d, 0xa18c, 0x00ff, 0x2001, 0xc615, 0x2004,
8365 + 0xa116, 0x0550, 0x810f, 0xa105, 0x0126, 0x2091, 0x8000, 0x0006,
8366 + 0x080c, 0x958d, 0x000e, 0x01e0, 0x601a, 0x600b, 0xbc05, 0x601f,
8367 + 0x0001, 0x080c, 0x4026, 0x01d8, 0x6837, 0x0000, 0x7007, 0x0003,
8368 + 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x701b, 0x351a, 0x2d00,
8369 + 0x6012, 0x2009, 0x0032, 0x080c, 0x9613, 0x012e, 0x00ce, 0x0005,
8370 + 0x012e, 0x00ce, 0x0804, 0x3179, 0x00ce, 0x0804, 0x317c, 0x080c,
8371 + 0x95e3, 0x0cb0, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, 0x0804,
8372 + 0x3154, 0x2061, 0xc9bc, 0x0126, 0x2091, 0x8000, 0x6000, 0xd084,
8373 + 0x0178, 0x6104, 0x6208, 0x2a60, 0x6068, 0x783a, 0x60b4, 0x783e,
8374 + 0x60b0, 0x2019, 0x0072, 0x201a, 0x6348, 0x012e, 0x0804, 0x3154,
8375 + 0xa00e, 0x2110, 0x0c80, 0x81ff, 0x1904, 0x3179, 0x080c, 0x5f22,
8376 + 0x0904, 0x3179, 0x0126, 0x2091, 0x8000, 0x6248, 0x6068, 0xa202,
8377 + 0x0248, 0xa085, 0x0001, 0x080c, 0x2a11, 0x080c, 0x4968, 0x012e,
8378 + 0x0804, 0x3154, 0x012e, 0x0804, 0x317c, 0x0006, 0x0016, 0x00c6,
8379 + 0x00e6, 0x2001, 0xc906, 0x2070, 0x2061, 0xc652, 0x6008, 0x2072,
8380 + 0x2009, 0x0000, 0x2011, 0x1000, 0x080c, 0x783f, 0x7206, 0x00ee,
8381 + 0x00ce, 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7824,
8382 + 0xa084, 0x0007, 0x0002, 0x357e, 0x3587, 0x358e, 0x357b, 0x357b,
8383 + 0x357b, 0x357b, 0x357b, 0x012e, 0x0804, 0x317c, 0x2009, 0x0114,
8384 + 0x2104, 0xa085, 0x0800, 0x200a, 0x080c, 0x36f9, 0x0070, 0x2009,
8385 + 0x010b, 0x200b, 0x0010, 0x080c, 0x36f9, 0x0038, 0x81ff, 0x0128,
8386 + 0x012e, 0x2021, 0x400b, 0x0804, 0x3156, 0x0086, 0x0096, 0x00a6,
8387 + 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3555, 0x2009,
8388 + 0x0101, 0x210c, 0x0016, 0x2001, 0x0138, 0x200c, 0x2003, 0x0001,
8389 + 0x0016, 0x2001, 0x007a, 0x2034, 0x2001, 0x007b, 0x202c, 0xa006,
8390 + 0x2048, 0x2050, 0x2058, 0x080c, 0x3944, 0x080c, 0x38a8, 0xa03e,
8391 + 0x2720, 0x00f6, 0x00e6, 0x00c6, 0x2d60, 0x2071, 0xc992, 0x2079,
8392 + 0x0020, 0x00d6, 0x2069, 0x0000, 0x6824, 0xd0b4, 0x0140, 0x2001,
8393 + 0x007d, 0x2004, 0x783e, 0x2001, 0x007c, 0x2004, 0x783a, 0x00de,
8394 + 0x2011, 0x0001, 0x080c, 0x3854, 0x080c, 0x3854, 0x00ce, 0x00ee,
8395 + 0x00fe, 0x080c, 0x379f, 0x080c, 0x387c, 0x080c, 0x37f9, 0x080c,
8396 + 0x375e, 0x080c, 0x378f, 0x00f6, 0x2079, 0x0100, 0x7824, 0xd094,
8397 + 0x0530, 0x7814, 0xa084, 0x0184, 0xa085, 0x0010, 0x7816, 0x2079,
8398 + 0x0140, 0x080c, 0x36d7, 0x1110, 0x00fe, 0x0430, 0x7804, 0xd0dc,
8399 + 0x0dc0, 0x2079, 0x0100, 0x7827, 0x0086, 0x7814, 0xa084, 0x0184,
8400 + 0xa085, 0x0032, 0x7816, 0x080c, 0x36d7, 0x1110, 0x00fe, 0x00a0,
8401 + 0x7824, 0xd0bc, 0x0dc0, 0x7827, 0x0080, 0xa026, 0x7c16, 0x7824,
8402 + 0xd0ac, 0x0130, 0x8b58, 0x080c, 0x36e1, 0x00fe, 0x0804, 0x36a1,
8403 + 0x00fe, 0x080c, 0x36d7, 0x1150, 0x8948, 0x2001, 0x007a, 0x2602,
8404 + 0x2001, 0x007b, 0x2502, 0x080c, 0x36e1, 0x0088, 0x87ff, 0x0140,
8405 + 0x2001, 0x0201, 0x2004, 0xa005, 0x1904, 0x35db, 0x8739, 0x0038,
8406 + 0x2001, 0xc96a, 0x2004, 0xa086, 0x0000, 0x1904, 0x35db, 0x2001,
8407 + 0x0033, 0x2003, 0x00f6, 0x8631, 0x1208, 0x8529, 0x2500, 0xa605,
8408 + 0x0904, 0x36a1, 0x7824, 0xd0bc, 0x0128, 0x2900, 0xaa05, 0xab05,
8409 + 0x1904, 0x36a1, 0x6033, 0x000d, 0x2001, 0x0030, 0x2003, 0x0004,
8410 + 0x7824, 0xd0ac, 0x1148, 0x2001, 0xc96a, 0x2003, 0x0003, 0x2001,
8411 + 0x0030, 0x2003, 0x0009, 0x0040, 0x6027, 0x0001, 0x2001, 0x0075,
8412 + 0x2004, 0xa005, 0x0108, 0x6026, 0x2c00, 0x601a, 0x20e1, 0x9040,
8413 + 0x2d00, 0x681a, 0x6833, 0x000d, 0x7824, 0xd0a4, 0x1180, 0x6827,
8414 + 0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, 0x0020, 0x6003, 0x0008,
8415 + 0x2001, 0x0203, 0x2004, 0x1f04, 0x3676, 0x00ce, 0x0040, 0x6827,
8416 + 0x0001, 0x2001, 0x0074, 0x2004, 0xa005, 0x0108, 0x6826, 0x00f6,
8417 + 0x00c6, 0x2079, 0x0100, 0x2061, 0x0020, 0x7827, 0x0002, 0x2001,
8418 + 0x0072, 0x2004, 0xa084, 0xfff8, 0x601a, 0x0006, 0x2001, 0x0073,
8419 + 0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x00ce, 0x00fe, 0x0804,
8420 + 0x35b9, 0x2061, 0x0100, 0x6027, 0x0002, 0x001e, 0x61e2, 0x001e,
8421 + 0x6106, 0x7824, 0xa084, 0x0003, 0xa086, 0x0002, 0x0188, 0x20e1,
8422 + 0x9028, 0x6050, 0xa084, 0xf7ef, 0x6052, 0x602f, 0x0000, 0x602c,
8423 + 0xc0ac, 0x602e, 0x604b, 0xf7f7, 0x6043, 0x0090, 0x6043, 0x0010,
8424 + 0x2908, 0x2a10, 0x2b18, 0x2b00, 0xaa05, 0xa905, 0x00fe, 0x00ee,
8425 + 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, 0x1118, 0x012e,
8426 + 0x0804, 0x3154, 0x012e, 0x2021, 0x400c, 0x0804, 0x3156, 0xa085,
8427 + 0x0001, 0x1d04, 0x36e0, 0x2091, 0x6000, 0x8420, 0xa486, 0x0064,
8428 + 0x0005, 0x2001, 0x0105, 0x2003, 0x0010, 0x2001, 0x0030, 0x2003,
8429 + 0x0004, 0x2001, 0x0020, 0x2003, 0x0004, 0x2001, 0xc96a, 0x2003,
8430 + 0x0000, 0x2001, 0xc992, 0x2003, 0x0000, 0x20e1, 0xf000, 0xa026,
8431 + 0x0005, 0x00f6, 0x2079, 0x0100, 0x2001, 0xc615, 0x200c, 0x7932,
8432 + 0x7936, 0x080c, 0x29f1, 0x7850, 0xa084, 0x0980, 0xa085, 0x0030,
8433 + 0x7852, 0x2019, 0x01f4, 0x8319, 0x1df0, 0xa084, 0x0980, 0x7852,
8434 + 0x782c, 0xc0ad, 0x782e, 0x20a9, 0x0046, 0x1d04, 0x3715, 0x2091,
8435 + 0x6000, 0x1f04, 0x3715, 0x7850, 0xa085, 0x0400, 0x7852, 0x2001,
8436 + 0x0009, 0x2004, 0xa084, 0x0003, 0xa086, 0x0001, 0x1118, 0x782c,
8437 + 0xc0ac, 0x782e, 0x784b, 0xf7f7, 0x7843, 0x0090, 0x7843, 0x0010,
8438 + 0x20a9, 0x000e, 0xe000, 0x1f04, 0x3732, 0x7850, 0xa085, 0x1400,
8439 + 0x7852, 0x2019, 0x61a8, 0x7854, 0xe000, 0xe000, 0xd08c, 0x1110,
8440 + 0x8319, 0x1dc8, 0x7827, 0x0048, 0x7850, 0xa085, 0x0400, 0x7852,
8441 + 0x7843, 0x0040, 0x2019, 0x01f4, 0xe000, 0xe000, 0x8319, 0x1de0,
8442 + 0x2001, 0x0140, 0x2003, 0x0100, 0x7827, 0x0020, 0x7843, 0x0000,
8443 + 0x2003, 0x0000, 0x7827, 0x0048, 0x00fe, 0x0005, 0x7824, 0xd0ac,
8444 + 0x11c8, 0x00f6, 0x00e6, 0x2071, 0xc96a, 0x2079, 0x0030, 0x2001,
8445 + 0x0201, 0x2004, 0xa005, 0x0160, 0x7000, 0xa086, 0x0000, 0x1140,
8446 + 0x0051, 0xd0bc, 0x0108, 0x8738, 0x7003, 0x0003, 0x7803, 0x0019,
8447 + 0x00ee, 0x00fe, 0x0005, 0x780c, 0xa08c, 0x0070, 0x0178, 0x2009,
8448 + 0x007a, 0x260a, 0x2009, 0x007b, 0x250a, 0xd0b4, 0x0108, 0x8a50,
8449 + 0xd0ac, 0x0108, 0x8948, 0xd0a4, 0x0108, 0x8b58, 0x0005, 0x00f6,
8450 + 0x2079, 0x0200, 0x781c, 0xd084, 0x0140, 0x20e1, 0x0007, 0x20e1,
8451 + 0x2000, 0x2001, 0x020a, 0x2004, 0x0ca8, 0x00fe, 0x0005, 0x00e6,
8452 + 0x2071, 0x0100, 0x2001, 0xc907, 0x2004, 0x70e2, 0x2009, 0xc615,
8453 + 0x210c, 0x716e, 0x7063, 0x0100, 0x7166, 0x719e, 0x706b, 0x0000,
8454 + 0x7073, 0x0809, 0x7077, 0x0008, 0x7078, 0xa080, 0x0100, 0x707a,
8455 + 0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, 0xa006, 0x708a, 0x708e,
8456 + 0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, 0x95d5, 0x7027, 0x0080,
8457 + 0x7014, 0xa084, 0x0184, 0xa085, 0x0032, 0x7016, 0x080c, 0x387c,
8458 + 0x080c, 0x36d7, 0x1110, 0x8421, 0x0028, 0x7024, 0xd0bc, 0x0db0,
8459 + 0x7027, 0x0080, 0x00f6, 0x00e6, 0x2071, 0xc96a, 0x2079, 0x0030,
8460 + 0x00d6, 0x2069, 0x0000, 0x6824, 0xd0b4, 0x0120, 0x683c, 0x783e,
8461 + 0x6838, 0x783a, 0x00de, 0x2011, 0x0011, 0x080c, 0x3854, 0x2011,
8462 + 0x0001, 0x080c, 0x3854, 0x00ee, 0x00fe, 0x7017, 0x0000, 0x00ee,
8463 + 0x0005, 0x00f6, 0x00e6, 0x2071, 0xc96a, 0x2079, 0x0030, 0x7904,
8464 + 0xd1fc, 0x0904, 0x3851, 0x7803, 0x0002, 0xa026, 0xd19c, 0x1904,
8465 + 0x384d, 0x7000, 0x0002, 0x3851, 0x380f, 0x3833, 0x384d, 0xd1bc,
8466 + 0x1150, 0xd1dc, 0x1150, 0x8001, 0x7002, 0x2011, 0x0001, 0x04e1,
8467 + 0x05c0, 0x04d1, 0x04b0, 0x780f, 0x0000, 0x7820, 0x7924, 0x7803,
8468 + 0x0004, 0x7822, 0x7926, 0x2001, 0x0201, 0x200c, 0x81ff, 0x0de8,
8469 + 0x080c, 0x377b, 0x2009, 0x0001, 0x7808, 0xd0ec, 0x0110, 0x2009,
8470 + 0x0011, 0x7902, 0x00f0, 0x8001, 0x7002, 0xa184, 0x0880, 0x1138,
8471 + 0x7804, 0xd0fc, 0x1940, 0x2011, 0x0001, 0x00b1, 0x0090, 0x6030,
8472 + 0xa092, 0x0004, 0xa086, 0x0009, 0x1120, 0x6000, 0x601a, 0x2011,
8473 + 0x0025, 0x6232, 0xd1dc, 0x1988, 0x0870, 0x7803, 0x0004, 0x7003,
8474 + 0x0000, 0x00ee, 0x00fe, 0x0005, 0x6024, 0xa005, 0x0520, 0x8001,
8475 + 0x6026, 0x6018, 0x6130, 0xa140, 0x2804, 0x7832, 0x8840, 0x2804,
8476 + 0x7836, 0x8840, 0x2804, 0x7822, 0x8840, 0x2804, 0x7826, 0x8840,
8477 + 0x7a02, 0x7000, 0x8000, 0x7002, 0x6018, 0xa802, 0xa08a, 0x0029,
8478 + 0x1138, 0x6018, 0xa080, 0x0001, 0x2004, 0x601a, 0x2001, 0x000d,
8479 + 0x6032, 0xa085, 0x0001, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x2071,
8480 + 0xc992, 0x2079, 0x0020, 0x7904, 0xd1fc, 0x01f0, 0x7803, 0x0002,
8481 + 0x2d60, 0xa026, 0x7000, 0x0002, 0x38a4, 0x388f, 0x389b, 0x8001,
8482 + 0x7002, 0xd19c, 0x1188, 0x2011, 0x0001, 0x080c, 0x3854, 0x0160,
8483 + 0x080c, 0x3854, 0x0048, 0x8001, 0x7002, 0x7804, 0xd0fc, 0x1d30,
8484 + 0x2011, 0x0001, 0x080c, 0x3854, 0x00ce, 0x00ee, 0x00fe, 0x0005,
8485 + 0x00f6, 0x00e6, 0x00c6, 0x2061, 0x0200, 0x2001, 0xc907, 0x2004,
8486 + 0x601a, 0x2061, 0x0100, 0x2001, 0xc906, 0x2004, 0x60ce, 0x6004,
8487 + 0xc0ac, 0xa085, 0x0200, 0x6006, 0x2001, 0x0074, 0x2004, 0xa005,
8488 + 0x01f8, 0x2038, 0x2001, 0x0076, 0x2024, 0x2001, 0x0077, 0x201c,
8489 + 0x080c, 0x4026, 0x6833, 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a,
8490 + 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0xa03e,
8491 + 0x6818, 0xa080, 0x000d, 0x04b1, 0x1d90, 0x2d00, 0x681a, 0x0088,
8492 + 0x080c, 0x4026, 0x6833, 0x000d, 0x2070, 0x6827, 0x0001, 0x2d00,
8493 + 0x681a, 0x2001, 0x0076, 0x2004, 0x2072, 0x2001, 0x0077, 0x2004,
8494 + 0x7006, 0x2061, 0x0020, 0x2079, 0x0100, 0x2001, 0xc906, 0x2004,
8495 + 0x6012, 0x20e1, 0x9040, 0x2001, 0x0072, 0x2004, 0xa084, 0xfff8,
8496 + 0x700a, 0x601a, 0x0006, 0x2001, 0x0073, 0x2004, 0x700e, 0x601e,
8497 + 0x78c6, 0x000e, 0x78ca, 0xa006, 0x603a, 0x603e, 0x00ce, 0x00ee,
8498 + 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0010, 0x20a0, 0x2099, 0x0014,
8499 + 0x7003, 0x0026, 0x7432, 0x7336, 0xa006, 0x703a, 0x703e, 0x810b,
8500 + 0x810b, 0x21a8, 0x810b, 0x7122, 0x7003, 0x0041, 0x7004, 0xd0fc,
8501 + 0x0de8, 0x7003, 0x0002, 0x7003, 0x0040, 0x53a5, 0x7430, 0x7334,
8502 + 0x87ff, 0x0180, 0x00c6, 0x00d6, 0x2d60, 0x00c6, 0x080c, 0x4026,
8503 + 0x00ce, 0x6018, 0x2070, 0x2d00, 0x7006, 0x601a, 0x00de, 0x00ce,
8504 + 0xa085, 0x0001, 0x00ee, 0x0005, 0x00e6, 0x2001, 0x0075, 0x2004,
8505 + 0xa005, 0x0508, 0x2038, 0x2001, 0x0078, 0x2024, 0x2001, 0x0079,
8506 + 0x201c, 0x080c, 0x4026, 0x2d60, 0x6833, 0x000d, 0x6f26, 0x2d00,
8507 + 0x681a, 0xa78a, 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010,
8508 + 0x2708, 0xa03e, 0x6818, 0xa080, 0x000d, 0x080c, 0x3912, 0x1d88,
8509 + 0x2d00, 0x681a, 0x00e0, 0x080c, 0x4026, 0x2d60, 0x6033, 0x000d,
8510 + 0x2070, 0x6027, 0x0001, 0x2c00, 0x601a, 0x2001, 0x0078, 0x2004,
8511 + 0x2072, 0x2001, 0x0079, 0x2004, 0x7006, 0x2001, 0x0072, 0x2004,
8512 + 0xa084, 0xfff8, 0x700a, 0x2001, 0x0073, 0x2004, 0x700e, 0x2001,
8513 + 0x0030, 0x2003, 0x0004, 0x7824, 0xd0ac, 0x1178, 0x2001, 0x0101,
8514 + 0x200c, 0xc1ed, 0x2102, 0x6027, 0x0000, 0x2001, 0xc96a, 0x2003,
8515 + 0x0003, 0x2001, 0x0030, 0x2003, 0x0009, 0x00ee, 0x0005, 0x0804,
8516 + 0x3154, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0xc640,
8517 + 0x20a0, 0xa006, 0x40a4, 0x012e, 0x0804, 0x3154, 0x7d38, 0x7c3c,
8518 + 0x0804, 0x31fb, 0x080c, 0x4026, 0x0904, 0x3179, 0x080c, 0x5f22,
8519 + 0x0110, 0x080c, 0x4f2c, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c,
8520 + 0x7d38, 0x080c, 0x4067, 0x701b, 0x39c6, 0x0005, 0xade8, 0x000d,
8521 + 0x6800, 0xa005, 0x0904, 0x317c, 0x6804, 0xd0ac, 0x0118, 0xd0a4,
8522 + 0x0904, 0x317c, 0xd094, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0138,
8523 + 0x6200, 0xa292, 0x0005, 0x0218, 0xa18c, 0xffdf, 0x0010, 0xa18d,
8524 + 0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, 0x2061, 0x0100, 0x6104,
8525 + 0x0118, 0xa18d, 0x0010, 0x0010, 0xa18c, 0xffef, 0x6106, 0x00ce,
8526 + 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0268, 0xd084, 0x0158,
8527 + 0x6a28, 0xa28a, 0x007f, 0x1a04, 0x317c, 0xa288, 0x2f6e, 0x210d,
8528 + 0xa18c, 0x00ff, 0x615a, 0xd0dc, 0x0130, 0x6828, 0xa08a, 0x007f,
8529 + 0x1a04, 0x317c, 0x6052, 0x6808, 0xa08a, 0x0100, 0x0a04, 0x317c,
8530 + 0xa08a, 0x0841, 0x1a04, 0x317c, 0xa084, 0x0007, 0x1904, 0x317c,
8531 + 0x680c, 0xa005, 0x0904, 0x317c, 0x6810, 0xa005, 0x0904, 0x317c,
8532 + 0x6848, 0x6940, 0xa10a, 0x1a04, 0x317c, 0x8001, 0x0904, 0x317c,
8533 + 0x684c, 0x6944, 0xa10a, 0x1a04, 0x317c, 0x8001, 0x0904, 0x317c,
8534 + 0x6804, 0xd0fc, 0x0560, 0x080c, 0x4026, 0x0904, 0x3179, 0x2009,
8535 + 0x0014, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0xa290, 0x0038, 0xa399,
8536 + 0x0000, 0x080c, 0x4067, 0x701b, 0x3a46, 0x0005, 0xade8, 0x000d,
8537 + 0x20a9, 0x0014, 0x2d98, 0x2069, 0xc66e, 0x2da0, 0x53a3, 0x7010,
8538 + 0xa0e8, 0x000d, 0x2001, 0xc672, 0x200c, 0xd1e4, 0x0140, 0x00c6,
8539 + 0x2061, 0x0100, 0x6004, 0xa085, 0x0b00, 0x6006, 0x00ce, 0x2009,
8540 + 0xc8f8, 0x200b, 0x0000, 0x2001, 0xc674, 0x2004, 0xd0ac, 0x0158,
8541 + 0x7824, 0x200a, 0x2009, 0x017f, 0x200a, 0x3200, 0xa084, 0x003f,
8542 + 0xa085, 0x3020, 0x2090, 0x20a9, 0x001c, 0x2d98, 0x2069, 0xc652,
8543 + 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x6142, 0x8007, 0xa084,
8544 + 0x00ff, 0x6046, 0x080c, 0x61f8, 0x080c, 0x576e, 0x080c, 0x57d7,
8545 + 0x6000, 0xa086, 0x0000, 0x1904, 0x3b41, 0x6808, 0x602a, 0x080c,
8546 + 0x25bb, 0x0006, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x000e,
8547 + 0x0268, 0x2009, 0x0170, 0x200b, 0x0080, 0xe000, 0xe000, 0x200b,
8548 + 0x0000, 0x0036, 0x6b08, 0x080c, 0x2a4c, 0x003e, 0x6818, 0x691c,
8549 + 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, 0x611a,
8550 + 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, 0x6a38,
8551 + 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0010, 0xa084, 0xf0ff,
8552 + 0x6006, 0x610a, 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, 0x831f,
8553 + 0x20a9, 0x0004, 0x20a1, 0xc90d, 0x40a1, 0x080c, 0x707c, 0x6904,
8554 + 0xd1fc, 0x0520, 0x00c6, 0x2009, 0x0000, 0x20a9, 0x0001, 0x6b70,
8555 + 0xd384, 0x01c8, 0x0020, 0x839d, 0x12b0, 0x3508, 0x8109, 0x080c,
8556 + 0x67ed, 0x6878, 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007,
8557 + 0x600a, 0xa184, 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003, 0x0003,
8558 + 0x0010, 0x6003, 0x0001, 0x1f04, 0x3adb, 0x00ce, 0x2069, 0xc652,
8559 + 0x2001, 0xc8e5, 0x6a80, 0xa294, 0x0030, 0xa28e, 0x0000, 0x0170,
8560 + 0xa28e, 0x0010, 0x0118, 0xa28e, 0x0020, 0x0140, 0x2003, 0xaaaa,
8561 + 0x080c, 0x2a95, 0x2001, 0xc8d6, 0x2102, 0x0008, 0x2102, 0x00c6,
8562 + 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c,
8563 + 0x5f22, 0x0128, 0x080c, 0x440b, 0x0110, 0x080c, 0x2a11, 0x60c8,
8564 + 0xa005, 0x01d0, 0x6003, 0x0001, 0x2009, 0x3b27, 0x00e0, 0x080c,
8565 + 0x5f22, 0x1178, 0x2011, 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8,
8566 + 0x080c, 0x7070, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x080c, 0x5e5a,
8567 + 0x0040, 0x080c, 0x4e5b, 0x0028, 0x6003, 0x0004, 0x2009, 0x3b41,
8568 + 0x0010, 0x0804, 0x3154, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005,
8569 + 0x0258, 0x2001, 0x0170, 0x2004, 0xa084, 0x00ff, 0xa086, 0x004c,
8570 + 0x1118, 0x2091, 0x309d, 0x0817, 0x2091, 0x301d, 0x0817, 0x6000,
8571 + 0xa086, 0x0000, 0x0904, 0x3179, 0x2069, 0xc652, 0x7830, 0x6842,
8572 + 0x7834, 0x6846, 0x6804, 0xd0fc, 0x0118, 0x2009, 0x0030, 0x0010,
8573 + 0x2009, 0x001c, 0x2d00, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804,
8574 + 0x406a, 0xa006, 0x080c, 0x2a11, 0x81ff, 0x1904, 0x3179, 0x080c,
8575 + 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600,
8576 + 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, 0x5e5a,
8577 + 0x0020, 0x080c, 0x4f2c, 0x080c, 0x4e5b, 0x0804, 0x3154, 0x81ff,
8578 + 0x1904, 0x3179, 0x080c, 0x5f22, 0x1110, 0x0804, 0x3179, 0x6188,
8579 + 0x81ff, 0x0198, 0x703f, 0x0000, 0x2001, 0xcdc0, 0x2009, 0x0040,
8580 + 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0126, 0x2091, 0x8000, 0x080c,
8581 + 0x406a, 0x701b, 0x3152, 0x012e, 0x0005, 0x703f, 0x0001, 0x00d6,
8582 + 0x2069, 0xcdc0, 0x20a9, 0x0040, 0x20a1, 0xcdc0, 0x2019, 0xffff,
8583 + 0x43a4, 0x6550, 0xa588, 0x2f6e, 0x210d, 0xa18c, 0x00ff, 0x216a,
8584 + 0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, 0x01a8, 0x080c, 0x533d,
8585 + 0x1190, 0x6014, 0x821c, 0x0238, 0xa398, 0xcdc0, 0xa085, 0xff00,
8586 + 0x8007, 0x201a, 0x0038, 0xa398, 0xcdc0, 0x2324, 0xa4a4, 0xff00,
8587 + 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x1208, 0x0c18,
8588 + 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x00de, 0x20a9, 0x0040,
8589 + 0x20a1, 0xcdc0, 0x2099, 0xcdc0, 0x080c, 0x4ecb, 0x0804, 0x3b9c,
8590 + 0x080c, 0x404b, 0x0904, 0x317c, 0x00c6, 0x080c, 0x4026, 0x00ce,
8591 + 0x1120, 0x2009, 0x0002, 0x0804, 0x3179, 0x2001, 0xc653, 0x2004,
8592 + 0xd0b4, 0x0550, 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00, 0x0520,
8593 + 0xa08e, 0x7f00, 0x0508, 0xa08e, 0x8000, 0x01f0, 0x6000, 0xd08c,
8594 + 0x11d8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x11a8, 0x6837,
8595 + 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae11, 0x1120, 0x2009,
8596 + 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x3c28, 0x0005,
8597 + 0x080c, 0x404b, 0x0904, 0x317c, 0x20a9, 0x002b, 0x2c98, 0xade8,
8598 + 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004, 0xac80, 0x0006, 0x2098,
8599 + 0xad80, 0x0006, 0x20a0, 0x080c, 0x4ecb, 0x20a9, 0x0004, 0xac80,
8600 + 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, 0x080c, 0x4ecb, 0x2d00,
8601 + 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x406a,
8602 + 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904, 0x317c, 0x080c,
8603 + 0x551a, 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x7828, 0xa08a,
8604 + 0x1000, 0x1a04, 0x317c, 0x080c, 0x404b, 0x0904, 0x317c, 0x080c,
8605 + 0x557d, 0x0904, 0x3179, 0x2019, 0x0004, 0xa00e, 0x080c, 0x552c,
8606 + 0x7924, 0x810f, 0x7a28, 0x0011, 0x0804, 0x3154, 0xa186, 0x00ff,
8607 + 0x0110, 0x0071, 0x0060, 0x2029, 0x007e, 0x2061, 0xc600, 0x6450,
8608 + 0x2400, 0xa506, 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005,
8609 + 0x080c, 0x533d, 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108,
8610 + 0x080c, 0x6fb9, 0x0005, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b,
8611 + 0x0904, 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5523,
8612 + 0x0804, 0x3154, 0x81ff, 0x1904, 0x3179, 0x080c, 0x403b, 0x0904,
8613 + 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x080c, 0x5511, 0x0804,
8614 + 0x3154, 0x6100, 0x0804, 0x3154, 0x080c, 0x404b, 0x0904, 0x317c,
8615 + 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904, 0x3179, 0x00d6,
8616 + 0xace8, 0x000a, 0x7924, 0xd184, 0x0110, 0xace8, 0x0006, 0x680c,
8617 + 0x8007, 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00,
8618 + 0x8217, 0x00de, 0x6100, 0xa18c, 0x0200, 0x0804, 0x3154, 0x7824,
8619 + 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x1a04, 0x3179, 0x6250, 0xa294,
8620 + 0x00ff, 0xa084, 0xff00, 0x8007, 0xa206, 0x1150, 0x2001, 0xc640,
8621 + 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, 0x406a,
8622 + 0x81ff, 0x1904, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c, 0x6004,
8623 + 0xa084, 0x00ff, 0xa086, 0x0006, 0x1904, 0x3179, 0x00c6, 0x080c,
8624 + 0x4026, 0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, 0x6838, 0xc0fd,
8625 + 0x683a, 0x080c, 0xadbd, 0x0904, 0x3179, 0x7007, 0x0003, 0x701b,
8626 + 0x3d12, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179, 0xad80,
8627 + 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804,
8628 + 0x406a, 0xa006, 0x080c, 0x2a11, 0x7824, 0xa084, 0x00ff, 0xa086,
8629 + 0x00ff, 0x0118, 0x81ff, 0x1904, 0x3179, 0x080c, 0x5f22, 0x0110,
8630 + 0x080c, 0x4f2c, 0x7828, 0xa08a, 0x1000, 0x1a04, 0x317c, 0x7924,
8631 + 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, 0x0138, 0xa182, 0x007f,
8632 + 0x1a04, 0x317c, 0x2100, 0x080c, 0x29db, 0x0026, 0x00c6, 0x0126,
8633 + 0x2091, 0x8000, 0x2061, 0xc93a, 0x601b, 0x0000, 0x601f, 0x0000,
8634 + 0x080c, 0x5f22, 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001,
8635 + 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c,
8636 + 0x5e5a, 0x0420, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002,
8637 + 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c,
8638 + 0x8e79, 0x003e, 0x2061, 0x0100, 0x2001, 0xc615, 0x2004, 0xa084,
8639 + 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010,
8640 + 0x2009, 0x002d, 0x2011, 0x4e90, 0x080c, 0x7036, 0x7924, 0xa18c,
8641 + 0xff00, 0x810f, 0x080c, 0x5f22, 0x1110, 0x2009, 0x00ff, 0x7a28,
8642 + 0x080c, 0x3c76, 0x012e, 0x00ce, 0x002e, 0x0804, 0x3154, 0x7924,
8643 + 0xa18c, 0xff00, 0x810f, 0x00c6, 0x080c, 0x52e1, 0x2c08, 0x00ce,
8644 + 0x1904, 0x317c, 0x0804, 0x3154, 0x81ff, 0x0120, 0x2009, 0x0001,
8645 + 0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009,
8646 + 0x0005, 0x0804, 0x3179, 0x080c, 0x4026, 0x1120, 0x2009, 0x0002,
8647 + 0x0804, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c,
8648 + 0x4067, 0x701b, 0x3dc4, 0x0005, 0x2009, 0x0080, 0x080c, 0x533d,
8649 + 0x1130, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120, 0x2021,
8650 + 0x400a, 0x0804, 0x3156, 0x00d6, 0xade8, 0x000d, 0x6900, 0x6a08,
8651 + 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0904,
8652 + 0x3e3b, 0xa0be, 0x0112, 0x0904, 0x3e3b, 0xa0be, 0x0113, 0x0904,
8653 + 0x3e3b, 0xa0be, 0x0114, 0x0904, 0x3e3b, 0xa0be, 0x0117, 0x0904,
8654 + 0x3e3b, 0xa0be, 0x011a, 0x0904, 0x3e3b, 0xa0be, 0x011c, 0x0904,
8655 + 0x3e3b, 0xa0be, 0x0121, 0x05b0, 0xa0be, 0x0131, 0x0598, 0xa0be,
8656 + 0x0171, 0x05c8, 0xa0be, 0x0173, 0x05b0, 0xa0be, 0x01a1, 0x1120,
8657 + 0x6830, 0x8007, 0x6832, 0x04a8, 0xa0be, 0x0212, 0x0540, 0xa0be,
8658 + 0x0213, 0x0528, 0xa0be, 0x0214, 0x01b0, 0xa0be, 0x0217, 0x0168,
8659 + 0xa0be, 0x021a, 0x1120, 0x6838, 0x8007, 0x683a, 0x00e0, 0xa0be,
8660 + 0x0300, 0x01c8, 0x00de, 0x0804, 0x317c, 0xad80, 0x0010, 0x20a9,
8661 + 0x0007, 0x080c, 0x3e81, 0xad80, 0x000e, 0x20a9, 0x0001, 0x080c,
8662 + 0x3e81, 0x0048, 0xad80, 0x000c, 0x080c, 0x3e8f, 0x0050, 0xad80,
8663 + 0x000e, 0x080c, 0x3e8f, 0xad80, 0x000c, 0x20a9, 0x0001, 0x080c,
8664 + 0x3e81, 0x00c6, 0x080c, 0x4026, 0x0568, 0x6838, 0xc0fd, 0x683a,
8665 + 0x6837, 0x0119, 0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001,
8666 + 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92,
8667 + 0x6996, 0x689b, 0x0000, 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838,
8668 + 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, 0xadd9,
8669 + 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b,
8670 + 0x3e78, 0x0005, 0x00ce, 0x00de, 0x2009, 0x0002, 0x0804, 0x3179,
8671 + 0x6820, 0xa086, 0x8001, 0x1904, 0x3154, 0x2009, 0x0004, 0x0804,
8672 + 0x3179, 0x0016, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a,
8673 + 0x8108, 0x280a, 0x8108, 0x1f04, 0x3e83, 0x001e, 0x0005, 0x0016,
8674 + 0x00a6, 0x00b6, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054,
8675 + 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108,
8676 + 0x280a, 0x00be, 0x00ae, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009,
8677 + 0x0001, 0x0804, 0x3179, 0x60d4, 0xd0ac, 0x1130, 0xd09c, 0x1120,
8678 + 0x2009, 0x0005, 0x0804, 0x3179, 0x7924, 0x2140, 0xa18c, 0xff00,
8679 + 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x317c,
8680 + 0xa182, 0x00ff, 0x1a04, 0x317c, 0x7a2c, 0x7b28, 0x6070, 0xa306,
8681 + 0x1140, 0x6074, 0xa24e, 0x0904, 0x317c, 0xa9cc, 0xff00, 0x0904,
8682 + 0x317c, 0x00c6, 0x080c, 0x3f6e, 0x2c68, 0x00ce, 0x0538, 0xa0c6,
8683 + 0x4000, 0x1180, 0x00c6, 0x0006, 0x2d60, 0x2009, 0x0000, 0x080c,
8684 + 0x55de, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x000e,
8685 + 0x00ce, 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6,
8686 + 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108,
8687 + 0x0010, 0x2001, 0x4006, 0x2020, 0x0804, 0x3156, 0x2d00, 0x7022,
8688 + 0x0016, 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x958d, 0x05d8,
8689 + 0x2d00, 0x601a, 0x080c, 0xb05e, 0x2e58, 0x00ee, 0x00e6, 0x00c6,
8690 + 0x080c, 0x4026, 0x00ce, 0x2b70, 0x1150, 0x080c, 0x95e3, 0x00ee,
8691 + 0x00ce, 0x00be, 0x001e, 0x2009, 0x0002, 0x0804, 0x3179, 0x6837,
8692 + 0x0000, 0x683b, 0x0000, 0x2d00, 0x6012, 0x6833, 0x0000, 0x6838,
8693 + 0xc0fd, 0xd88c, 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, 0x8000,
8694 + 0x080c, 0x2e46, 0x012e, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c,
8695 + 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x2009, 0x0002, 0x080c,
8696 + 0x9613, 0xa085, 0x0001, 0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120,
8697 + 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x3f51,
8698 + 0x0005, 0x6830, 0xa086, 0x0100, 0x7020, 0x2060, 0x1138, 0x2009,
8699 + 0x0004, 0x6204, 0xa294, 0x00ff, 0x0804, 0x3179, 0x2009, 0x0000,
8700 + 0x6838, 0xd0f4, 0x1904, 0x3154, 0x080c, 0x55de, 0x1108, 0xc185,
8701 + 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x3154, 0x00e6, 0x00d6,
8702 + 0x2029, 0x0000, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0138, 0x2021,
8703 + 0x0000, 0x20a9, 0x00ff, 0x2071, 0xc77b, 0x0030, 0x2021, 0x0080,
8704 + 0x20a9, 0x007f, 0x2071, 0xc7fb, 0x2e04, 0xa005, 0x1130, 0x2100,
8705 + 0xa406, 0x15a0, 0x2428, 0xc5fd, 0x0488, 0x2068, 0x6f10, 0x2700,
8706 + 0xa306, 0x11e0, 0x6e14, 0x2600, 0xa206, 0x11c0, 0x2400, 0xa106,
8707 + 0x1190, 0x2d60, 0xd884, 0x0598, 0x080c, 0x56ed, 0x1580, 0x2001,
8708 + 0x4000, 0x0470, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1538,
8709 + 0x2001, 0x4000, 0x0428, 0x2001, 0x4007, 0x0410, 0x2400, 0xa106,
8710 + 0x1168, 0x6e14, 0x87ff, 0x1138, 0x86ff, 0x09a0, 0x2001, 0xc635,
8711 + 0x2004, 0xd0ac, 0x1978, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70,
8712 + 0x1f04, 0x3f84, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001,
8713 + 0x0001, 0x0030, 0x080c, 0x52e1, 0x1dd0, 0x6312, 0x6216, 0xa006,
8714 + 0xa005, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x3179, 0x080c,
8715 + 0x4026, 0x0904, 0x3179, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a,
8716 + 0x7824, 0xa005, 0x0904, 0x317c, 0xa096, 0x00ff, 0x0120, 0xa092,
8717 + 0x0004, 0x1a04, 0x317c, 0x2010, 0x2d18, 0x080c, 0x2df9, 0x0904,
8718 + 0x3179, 0x7007, 0x0003, 0x701b, 0x3ff6, 0x0005, 0x6830, 0xa086,
8719 + 0x0100, 0x0904, 0x3179, 0x0804, 0x3154, 0x7924, 0xa18c, 0xff00,
8720 + 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, 0x0080, 0x0a04, 0x317c,
8721 + 0xa182, 0x00ff, 0x1a04, 0x317c, 0x0126, 0x2091, 0x8000, 0x080c,
8722 + 0xacc1, 0x1188, 0xa190, 0xc77b, 0x2204, 0xa065, 0x0160, 0x080c,
8723 + 0x4f47, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0110, 0x6017, 0x0000,
8724 + 0x012e, 0x0804, 0x3154, 0x012e, 0x0804, 0x3179, 0x080c, 0x1602,
8725 + 0x0188, 0xa006, 0x6802, 0x7010, 0xa005, 0x1120, 0x2d00, 0x7012,
8726 + 0x7016, 0x0030, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016,
8727 + 0xad80, 0x000d, 0x0005, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c,
8728 + 0x533d, 0x1130, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0208,
8729 + 0xa066, 0x8cff, 0x0005, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x080c,
8730 + 0x533d, 0x1128, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0208, 0xa066,
8731 + 0x8cff, 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2168, 0x6904,
8732 + 0x080c, 0x1619, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005, 0x2031,
8733 + 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0xc6f2, 0x6606, 0x6112,
8734 + 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x164d,
8735 + 0x7007, 0x0002, 0x701b, 0x3154, 0x0005, 0x00f6, 0x0126, 0x2091,
8736 + 0x8000, 0x2079, 0x0000, 0x2001, 0xc6b0, 0x2004, 0xa005, 0x1168,
8737 + 0x0e04, 0x4095, 0x7818, 0xd084, 0x1140, 0x7a22, 0x7b26, 0x7c2a,
8738 + 0x781b, 0x0001, 0x2091, 0x4080, 0x0408, 0x0016, 0x00c6, 0x00e6,
8739 + 0x2071, 0xc6a2, 0x7138, 0xa182, 0x0010, 0x0218, 0x7030, 0x2060,
8740 + 0x0078, 0x7030, 0xa0e0, 0x0004, 0xac82, 0xc6f2, 0x0210, 0x2061,
8741 + 0xc6b2, 0x2c00, 0x7032, 0x81ff, 0x1108, 0x7036, 0x8108, 0x713a,
8742 + 0x2262, 0x6306, 0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe,
8743 + 0x0005, 0x00e6, 0x2071, 0xc6a2, 0x7038, 0xa005, 0x0570, 0x0126,
8744 + 0x2091, 0x8000, 0x0e04, 0x40ec, 0x00f6, 0x2079, 0x0000, 0x7818,
8745 + 0xd084, 0x1508, 0x00c6, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004,
8746 + 0x7826, 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038,
8747 + 0x8001, 0x703a, 0xa005, 0x1130, 0x7033, 0xc6b2, 0x7037, 0xc6b2,
8748 + 0x00ce, 0x0048, 0xac80, 0x0004, 0xa0fa, 0xc6f2, 0x0210, 0x2001,
8749 + 0xc6b2, 0x7036, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, 0x0026,
8750 + 0x2001, 0xc653, 0x2004, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c,
8751 + 0x407d, 0x002e, 0x0005, 0x81ff, 0x1904, 0x3179, 0x0126, 0x2091,
8752 + 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x5f22,
8753 + 0x1178, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003,
8754 + 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c, 0x5e5a, 0x0010,
8755 + 0x080c, 0x4e5b, 0x012e, 0x0804, 0x3154, 0x7824, 0x2008, 0xa18c,
8756 + 0xfffd, 0x1128, 0x61e0, 0xa10d, 0x61e2, 0x0804, 0x3154, 0x0804,
8757 + 0x317c, 0x81ff, 0x1904, 0x3179, 0x6000, 0xa086, 0x0003, 0x1904,
8758 + 0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x1904, 0x3179, 0x080c,
8759 + 0x404b, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
8760 + 0x1120, 0x7828, 0xa005, 0x0904, 0x3154, 0x00c6, 0x080c, 0x4026,
8761 + 0x00ce, 0x0904, 0x3179, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838,
8762 + 0xc0fd, 0x683a, 0x080c, 0xaea2, 0x0904, 0x3179, 0x7007, 0x0003,
8763 + 0x701b, 0x415b, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x3179,
8764 + 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904,
8765 + 0x3179, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4026,
8766 + 0x0904, 0x3179, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000,
8767 + 0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x080c, 0x533d,
8768 + 0x1904, 0x41e1, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0148,
8769 + 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x0120, 0x080c, 0x56ed, 0x1904,
8770 + 0x41e1, 0xd794, 0x1110, 0xd784, 0x0158, 0xac80, 0x0006, 0x2098,
8771 + 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3e8f, 0xd794, 0x0148,
8772 + 0xac80, 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x080c,
8773 + 0x3e8f, 0xa186, 0x007e, 0x0178, 0xa186, 0x0080, 0x0160, 0x6004,
8774 + 0xa084, 0x00ff, 0xa0c2, 0x0006, 0x1210, 0xc1fd, 0x0020, 0x080c,
8775 + 0x55de, 0x1108, 0xc1fd, 0x21a2, 0xc1fc, 0xd794, 0x01d8, 0xac80,
8776 + 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3, 0xac80, 0x0003,
8777 + 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002,
8778 + 0x53a3, 0x080c, 0x3e81, 0xac80, 0x0026, 0x2098, 0x20a9, 0x0002,
8779 + 0x53a3, 0x0008, 0x94a0, 0xd794, 0x0110, 0xa6b0, 0x000b, 0xa6b0,
8780 + 0x0005, 0x8108, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x0118, 0xa186,
8781 + 0x0100, 0x0040, 0xd78c, 0x0120, 0xa186, 0x0100, 0x0170, 0x0018,
8782 + 0xa186, 0x007e, 0x0150, 0xd794, 0x0118, 0xa686, 0x0020, 0x0010,
8783 + 0xa686, 0x0028, 0x0150, 0x0804, 0x417e, 0x86ff, 0x1120, 0x7120,
8784 + 0x810b, 0x0804, 0x3154, 0x702f, 0x0001, 0x711e, 0x7020, 0xa600,
8785 + 0x7022, 0x772a, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6612, 0x7024,
8786 + 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, 0x164d,
8787 + 0x7007, 0x0002, 0x701b, 0x421d, 0x0005, 0x702c, 0xa005, 0x1170,
8788 + 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, 0xc6f2,
8789 + 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x417e, 0x7120, 0x810b,
8790 + 0x0804, 0x3154, 0x2029, 0x007e, 0x7924, 0x7a28, 0x7b2c, 0x7c38,
8791 + 0xa184, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502,
8792 + 0x0a04, 0x317c, 0xa184, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x317c,
8793 + 0xa502, 0x0a04, 0x317c, 0xa284, 0xff00, 0x8007, 0xa0e2, 0x0020,
8794 + 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa284, 0x00ff, 0xa0e2,
8795 + 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c, 0xa384, 0xff00,
8796 + 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04, 0x317c,
8797 + 0xa384, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x317c, 0xa502, 0x0a04,
8798 + 0x317c, 0xa484, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x317c,
8799 + 0xa502, 0x0a04, 0x317c, 0xa484, 0x00ff, 0xa0e2, 0x0020, 0x0a04,
8800 + 0x317c, 0xa502, 0x0a04, 0x317c, 0x2061, 0xc900, 0x6102, 0x6206,
8801 + 0x630a, 0x640e, 0x0804, 0x3154, 0x080c, 0x4026, 0x0904, 0x3179,
8802 + 0x2009, 0x0020, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4067,
8803 + 0x701b, 0x429b, 0x0005, 0x0126, 0xade8, 0x000d, 0x2001, 0x0138,
8804 + 0x2003, 0x0000, 0x00e6, 0x2071, 0xc96a, 0x700c, 0x7110, 0xa106,
8805 + 0x1de0, 0x00ee, 0x2091, 0x8000, 0x6800, 0xa005, 0x0904, 0x432f,
8806 + 0x6804, 0x2008, 0xa18c, 0xffe0, 0x1904, 0x432f, 0x680c, 0xa005,
8807 + 0x0904, 0x432f, 0xa082, 0xff01, 0x1a04, 0x432f, 0x6810, 0xa082,
8808 + 0x005c, 0x0a04, 0x432f, 0x6824, 0x2008, 0xa082, 0x0008, 0x0a04,
8809 + 0x432f, 0xa182, 0x0400, 0x1a04, 0x432f, 0x080c, 0x7394, 0x6820,
8810 + 0x8000, 0x6822, 0x6944, 0x6820, 0xa102, 0x0a04, 0x432f, 0x6828,
8811 + 0x6944, 0x810c, 0xa102, 0x0a04, 0x432f, 0x6840, 0xa082, 0x000f,
8812 + 0x1a04, 0x432f, 0x00d6, 0x6848, 0xa005, 0x0148, 0x2008, 0x2069,
8813 + 0xc600, 0x68e8, 0xa108, 0x68b0, 0xa102, 0x1208, 0x69ea, 0x00de,
8814 + 0x20a9, 0x0020, 0x2d98, 0x2069, 0xc682, 0x2da0, 0x53a3, 0x00d6,
8815 + 0x080c, 0x15e5, 0x2d00, 0x00de, 0x0904, 0x4346, 0x684e, 0x080c,
8816 + 0x725b, 0x05d8, 0x080c, 0x7158, 0x080c, 0x5695, 0x0580, 0x00c6,
8817 + 0x2061, 0x0100, 0x6104, 0xa18d, 0x8000, 0x6106, 0x610c, 0xa18d,
8818 + 0x0300, 0xa18c, 0xffbf, 0x610e, 0x2001, 0xc8d4, 0x200c, 0xa18d,
8819 + 0x0300, 0xa18c, 0xffbf, 0x2102, 0x6b10, 0x2061, 0xc96a, 0x6316,
8820 + 0x00ce, 0x685f, 0x0000, 0x2001, 0xc696, 0x2003, 0x0000, 0x080c,
8821 + 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x3154, 0x080c,
8822 + 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e, 0x0804, 0x317c, 0x080c,
8823 + 0x7475, 0x080c, 0x7484, 0x080c, 0x7147, 0x2001, 0xc695, 0x206c,
8824 + 0x080c, 0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, 0xc63a,
8825 + 0x2003, 0x0010, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x012e,
8826 + 0x0804, 0x3179, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, 0x0904,
8827 + 0x3179, 0x080c, 0x768f, 0x1904, 0x3179, 0x2001, 0xc8e5, 0x2004,
8828 + 0xa086, 0xaaaa, 0x0138, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028,
8829 + 0x0904, 0x3170, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1904,
8830 + 0x3179, 0x7924, 0x810c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c,
8831 + 0x4026, 0x0904, 0x3179, 0x080c, 0x4067, 0x701b, 0x4380, 0x0005,
8832 + 0x080c, 0x958d, 0x0904, 0x3179, 0x2001, 0xc8d3, 0x2004, 0x601a,
8833 + 0x0016, 0x0026, 0x2001, 0xc61c, 0x2004, 0x8007, 0x6934, 0xa105,
8834 + 0x6836, 0x2001, 0xc61d, 0x2004, 0x8007, 0x683a, 0x002e, 0x001e,
8835 + 0x2d00, 0x6012, 0x601f, 0x0001, 0x2009, 0x0040, 0x080c, 0x9613,
8836 + 0x0804, 0x3154, 0x0804, 0x3179, 0x2001, 0xc756, 0x200c, 0xa18e,
8837 + 0x0000, 0x0904, 0x4402, 0x2001, 0x0101, 0x200c, 0xa18c, 0x7fff,
8838 + 0x2102, 0x2001, 0x0103, 0x200c, 0xa18c, 0xfeff, 0xa18c, 0xfdff,
8839 + 0xa18d, 0x0040, 0x2102, 0x2001, 0xc8d4, 0x200c, 0xa18c, 0xfeff,
8840 + 0xa18c, 0xfdff, 0xa18d, 0x0040, 0x2102, 0x2001, 0x0138, 0x2003,
8841 + 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x24f3, 0x012e, 0x0128,
8842 + 0x20a9, 0x006e, 0x1f04, 0x43d2, 0x0ca0, 0x2001, 0xc756, 0x2003,
8843 + 0x0000, 0x080c, 0x2a95, 0x2001, 0x0138, 0x2102, 0x0126, 0x2091,
8844 + 0x8000, 0x2001, 0xc695, 0x200c, 0x81ff, 0x0138, 0x2168, 0x080c,
8845 + 0x1619, 0x2001, 0xc695, 0x2003, 0x0000, 0x2001, 0xc8d3, 0x200c,
8846 + 0x81ff, 0x0138, 0x2168, 0x080c, 0x1619, 0x2001, 0xc8d3, 0x2003,
8847 + 0x0000, 0x2001, 0xc63a, 0x2003, 0x0010, 0x080c, 0x7475, 0x080c,
8848 + 0x7484, 0x012e, 0x0804, 0x3154, 0x7824, 0x00e6, 0x2071, 0xc682,
8849 + 0x00ee, 0x0804, 0x3154, 0x0006, 0x2001, 0xc653, 0x2004, 0xd0cc,
8850 + 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xd0bc, 0x000e,
8851 + 0x0005, 0x6168, 0x7a24, 0x6300, 0x82ff, 0x1118, 0x7926, 0x0804,
8852 + 0x3154, 0x83ff, 0x1904, 0x317c, 0x2001, 0xfff0, 0xa200, 0x1a04,
8853 + 0x317c, 0x2019, 0xffff, 0x606c, 0xa302, 0xa200, 0x0a04, 0x317c,
8854 + 0x7926, 0x626a, 0x0804, 0x3154, 0x2001, 0xc600, 0x2004, 0xa086,
8855 + 0x0003, 0x1904, 0x3179, 0x7c28, 0x7d24, 0x7e38, 0x7f2c, 0x080c,
8856 + 0x4026, 0x0904, 0x3179, 0x2009, 0x0000, 0x2019, 0x0000, 0x7023,
8857 + 0x0000, 0x702f, 0x0000, 0xad80, 0x0003, 0x7026, 0x20a0, 0xa1e0,
8858 + 0xc77b, 0x2c64, 0x8cff, 0x01b8, 0x6004, 0xa084, 0x00ff, 0xa086,
8859 + 0x0006, 0x0130, 0x6004, 0xa084, 0xff00, 0xa086, 0x0600, 0x1158,
8860 + 0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105, 0x8007, 0x20a2,
8861 + 0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff, 0x0120, 0xa386,
8862 + 0x002a, 0x0148, 0x08e0, 0x83ff, 0x1120, 0x7120, 0x810c, 0x0804,
8863 + 0x3154, 0x702f, 0x0001, 0x711e, 0x7020, 0xa300, 0x7022, 0x2061,
8864 + 0xc6f2, 0x6007, 0x0000, 0x6312, 0x7024, 0x600e, 0x6426, 0x652a,
8865 + 0x662e, 0x6732, 0x2c10, 0x080c, 0x164d, 0x7007, 0x0002, 0x701b,
8866 + 0x4492, 0x0005, 0x702c, 0xa005, 0x1168, 0x711c, 0x7024, 0x20a0,
8867 + 0x2019, 0x0000, 0x2061, 0xc6f2, 0x6424, 0x6528, 0x662c, 0x6730,
8868 + 0x0804, 0x444f, 0x7120, 0x810c, 0x0804, 0x3154, 0x81ff, 0x1904,
8869 + 0x3179, 0x60d4, 0xd0ac, 0x1118, 0xd09c, 0x0904, 0x3179, 0x080c,
8870 + 0x4026, 0x0904, 0x3179, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
8871 + 0x080c, 0x4067, 0x701b, 0x44bd, 0x0005, 0x00d6, 0xade8, 0x000d,
8872 + 0x6828, 0xa0be, 0x7000, 0x0148, 0xa0be, 0x7100, 0x0130, 0xa0be,
8873 + 0x7200, 0x0118, 0x00de, 0x0804, 0x317c, 0x6820, 0x6924, 0x080c,
8874 + 0x29c7, 0x1510, 0x080c, 0x52e1, 0x11f8, 0x7122, 0x6612, 0x6516,
8875 + 0x6e18, 0x00c6, 0x080c, 0x4026, 0x01b8, 0x080c, 0x4026, 0x01a0,
8876 + 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x6823,
8877 + 0x0000, 0x6804, 0x2068, 0x080c, 0xadf5, 0x0904, 0x3179, 0x7007,
8878 + 0x0003, 0x701b, 0x44f7, 0x0005, 0x00de, 0x0804, 0x3179, 0x7120,
8879 + 0x080c, 0x2f41, 0x6820, 0xa086, 0x8001, 0x0904, 0x3179, 0x2d00,
8880 + 0x701e, 0x6804, 0xa080, 0x0002, 0x0006, 0x20a9, 0x002a, 0x2098,
8881 + 0x20a0, 0x080c, 0x4ecb, 0x000e, 0xade8, 0x000d, 0x6a08, 0x6b0c,
8882 + 0x6c10, 0x6d14, 0x2061, 0xc6f2, 0x6007, 0x0000, 0x6e00, 0x6f28,
8883 + 0xa7c6, 0x7000, 0x1108, 0x0018, 0xa7c6, 0x7100, 0x1140, 0xa6c2,
8884 + 0x0004, 0x0a04, 0x317c, 0x2009, 0x0004, 0x0804, 0x406a, 0xa7c6,
8885 + 0x7200, 0x1904, 0x317c, 0xa6c2, 0x0054, 0x0a04, 0x317c, 0x600e,
8886 + 0x6013, 0x002a, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c,
8887 + 0x164d, 0x7007, 0x0002, 0x701b, 0x453e, 0x0005, 0x701c, 0x2068,
8888 + 0x6804, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x0006, 0x20a9,
8889 + 0x002a, 0x2098, 0x20a0, 0x080c, 0x4ecb, 0x000e, 0x2009, 0x002a,
8890 + 0x2061, 0xc6f2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x406a,
8891 + 0x81ff, 0x1904, 0x3179, 0x792c, 0x2001, 0xc8e7, 0x2102, 0x080c,
8892 + 0x403b, 0x0904, 0x317c, 0x080c, 0x5403, 0x0904, 0x3179, 0x0126,
8893 + 0x2091, 0x8000, 0x080c, 0x5535, 0x012e, 0x0804, 0x3154, 0x7824,
8894 + 0xd08c, 0x1118, 0xd084, 0x0904, 0x3bf0, 0x080c, 0x404b, 0x0904,
8895 + 0x317c, 0x00c6, 0x080c, 0x4026, 0x00ce, 0x1120, 0x2009, 0x0002,
8896 + 0x0804, 0x3179, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0128,
8897 + 0xa08e, 0x0004, 0x0110, 0xa08e, 0x0005, 0x15b8, 0x7824, 0xd08c,
8898 + 0x0120, 0x6000, 0xc08c, 0x6002, 0x0030, 0x2001, 0xc653, 0x2004,
8899 + 0xd0b4, 0x0904, 0x3c2c, 0x7824, 0xa084, 0xff00, 0xa08e, 0x7e00,
8900 + 0x0904, 0x3c2c, 0xa08e, 0x7f00, 0x0904, 0x3c2c, 0xa08e, 0x8000,
8901 + 0x0904, 0x3c2c, 0x6000, 0xd08c, 0x1904, 0x3c2c, 0x6837, 0x0000,
8902 + 0x6838, 0xc0fd, 0x683a, 0x080c, 0xae11, 0x1120, 0x2009, 0x0003,
8903 + 0x0804, 0x3179, 0x7007, 0x0003, 0x701b, 0x45bf, 0x0005, 0x080c,
8904 + 0x404b, 0x0904, 0x317c, 0x0804, 0x3c2c, 0x2009, 0xc631, 0x210c,
8905 + 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x2001, 0xc600,
8906 + 0x2004, 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, 0x3179,
8907 + 0x2001, 0xc653, 0x2004, 0xd0ac, 0x0120, 0x2009, 0x0008, 0x0804,
8908 + 0x3179, 0x609c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x3c2c, 0x6837,
8909 + 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0xaea2,
8910 + 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b,
8911 + 0x45fa, 0x0005, 0x6830, 0xa086, 0x0100, 0x1120, 0x2009, 0x0004,
8912 + 0x0804, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c, 0x0804, 0x458e,
8913 + 0x81ff, 0x2009, 0x0001, 0x1904, 0x3179, 0x6000, 0xa086, 0x0003,
8914 + 0x2009, 0x0007, 0x1904, 0x3179, 0x2001, 0xc653, 0x2004, 0xd0ac,
8915 + 0x2009, 0x0008, 0x1904, 0x3179, 0x080c, 0x404b, 0x0904, 0x317c,
8916 + 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x1904,
8917 + 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce, 0x2009, 0x0002, 0x0904,
8918 + 0x3179, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a,
8919 + 0x7928, 0xa194, 0xff00, 0xa18c, 0x00ff, 0xa006, 0x82ff, 0x1128,
8920 + 0xc0ed, 0x6952, 0x792c, 0x6956, 0x0048, 0xa28e, 0x0100, 0x1904,
8921 + 0x317c, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, 0x683e, 0x080c,
8922 + 0xb05f, 0x2009, 0x0003, 0x0904, 0x3179, 0x7007, 0x0003, 0x701b,
8923 + 0x465a, 0x0005, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0904,
8924 + 0x3179, 0x0804, 0x3154, 0x81ff, 0x2009, 0x0001, 0x1904, 0x3179,
8925 + 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, 0x3179, 0x080c,
8926 + 0x404b, 0x0904, 0x317c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
8927 + 0x2009, 0x0009, 0x1904, 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce,
8928 + 0x2009, 0x0002, 0x0904, 0x3179, 0xad80, 0x000f, 0x2009, 0x0008,
8929 + 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x4067, 0x701b, 0x4691,
8930 + 0x0005, 0x00d6, 0xade8, 0x000f, 0x6800, 0xa086, 0x0500, 0x1140,
8931 + 0x6804, 0xa005, 0x1128, 0x6808, 0xa084, 0xff00, 0x1108, 0x0018,
8932 + 0x00de, 0x1904, 0x317c, 0x00de, 0x6837, 0x0000, 0x6833, 0x0000,
8933 + 0x6838, 0xc0fd, 0x683a, 0x00c6, 0x080c, 0x404b, 0x1118, 0x00ce,
8934 + 0x0804, 0x317c, 0x080c, 0xb0ae, 0x2009, 0x0003, 0x00ce, 0x0904,
8935 + 0x3179, 0x7007, 0x0003, 0x701b, 0x46be, 0x0005, 0x6830, 0xa086,
8936 + 0x0100, 0x2009, 0x0004, 0x0904, 0x3179, 0x0804, 0x3154, 0x81ff,
8937 + 0x0120, 0x2009, 0x0001, 0x0804, 0x3179, 0x6000, 0xa086, 0x0003,
8938 + 0x0120, 0x2009, 0x0007, 0x0804, 0x3179, 0x7e24, 0x860f, 0xa18c,
8939 + 0x00ff, 0xa6b4, 0x00ff, 0x080c, 0x533d, 0x1904, 0x317c, 0xa186,
8940 + 0x007f, 0x0150, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0120,
8941 + 0x2009, 0x0009, 0x0804, 0x3179, 0x00c6, 0x080c, 0x4026, 0x00ce,
8942 + 0x1120, 0x2009, 0x0002, 0x0804, 0x3179, 0x6837, 0x0000, 0x6838,
8943 + 0xc0fd, 0x683a, 0x2001, 0x0100, 0x8007, 0x680a, 0x080c, 0xae2c,
8944 + 0x1120, 0x2009, 0x0003, 0x0804, 0x3179, 0x7007, 0x0003, 0x701b,
8945 + 0x470a, 0x0005, 0x6808, 0x8007, 0xa086, 0x0100, 0x1120, 0x2009,
8946 + 0x0004, 0x0804, 0x3179, 0x68b0, 0x6836, 0x6810, 0x8007, 0xa084,
8947 + 0x00ff, 0x800c, 0x6814, 0x8007, 0xa084, 0x00ff, 0x8004, 0xa080,
8948 + 0x0002, 0xa108, 0xad80, 0x0004, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
8949 + 0x0804, 0x406a, 0x080c, 0x4026, 0x1120, 0x2009, 0x0002, 0x0804,
8950 + 0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, 0x8217, 0x82ff,
8951 + 0x0110, 0x0804, 0x317c, 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c,
8952 + 0x7d38, 0x080c, 0x4067, 0x701b, 0x4746, 0x0005, 0x2001, 0xc62a,
8953 + 0x2003, 0x0001, 0xad80, 0x000d, 0x2098, 0x20a9, 0x001a, 0x20a1,
8954 + 0xc90d, 0x53a3, 0x0804, 0x3154, 0x080c, 0x4026, 0x1120, 0x2009,
8955 + 0x0002, 0x0804, 0x3179, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff,
8956 + 0x8217, 0x82ff, 0x0110, 0x0804, 0x317c, 0x2099, 0xc90d, 0x20a0,
8957 + 0x20a9, 0x001a, 0x53a3, 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c,
8958 + 0x7d38, 0x0804, 0x406a, 0x7824, 0xa08a, 0x1000, 0x1a04, 0x317c,
8959 + 0x0126, 0x2091, 0x8000, 0x8003, 0x800b, 0x810b, 0xa108, 0x00c6,
8960 + 0x2061, 0xc93a, 0x6142, 0x00ce, 0x012e, 0x0804, 0x3154, 0x00c6,
8961 + 0x080c, 0x5f22, 0x1188, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001,
8962 + 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5f66, 0x080c,
8963 + 0x5e5a, 0x080c, 0x1519, 0x0038, 0x2061, 0xc600, 0x6030, 0xc09d,
8964 + 0x6032, 0x080c, 0x4e5b, 0x00ce, 0x0005, 0x0126, 0x2091, 0x8000,
8965 + 0x00c6, 0x2061, 0xc93a, 0x7924, 0x6152, 0x614e, 0x6057, 0x0000,
8966 + 0x604b, 0x0009, 0x7838, 0x606a, 0x783c, 0x6066, 0x7828, 0x6062,
8967 + 0x782c, 0x605e, 0x2061, 0xc8e8, 0x2001, 0xc94f, 0x600e, 0x6013,
8968 + 0x0001, 0x6017, 0x0002, 0x6007, 0x0000, 0x6037, 0x0000, 0x00ce,
8969 + 0x012e, 0x0804, 0x3154, 0x0126, 0x00c6, 0x00e6, 0x2061, 0x0100,
8970 + 0x2071, 0xc600, 0x6044, 0xd0a4, 0x11b0, 0xd084, 0x0118, 0x080c,
8971 + 0x4942, 0x0068, 0xd08c, 0x0118, 0x080c, 0x4863, 0x0040, 0xd094,
8972 + 0x0118, 0x080c, 0x4834, 0x0018, 0xd09c, 0x0108, 0x0061, 0x00ee,
8973 + 0x00ce, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d,
8974 + 0x612a, 0x001e, 0x0ca0, 0x624c, 0xa286, 0xf0f0, 0x1150, 0x6048,
8975 + 0xa086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010,
8976 + 0x0490, 0xa294, 0xff00, 0xa296, 0xf700, 0x0178, 0x7134, 0xd1a4,
8977 + 0x1160, 0x6240, 0xa295, 0x0100, 0x6242, 0xa294, 0x0010, 0x0128,
8978 + 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x00f0, 0x6040, 0xa084, 0x0010,
8979 + 0xa085, 0x0140, 0x6042, 0x6043, 0x0000, 0x707b, 0x0000, 0x7097,
8980 + 0x0001, 0x70bb, 0x0000, 0x70d7, 0x0000, 0x2009, 0xcdc0, 0x200b,
8981 + 0x0000, 0x708b, 0x0000, 0x707f, 0x000a, 0x2009, 0x000a, 0x2011,
8982 + 0x4e11, 0x080c, 0x7036, 0x0005, 0x0156, 0x2001, 0xc674, 0x2004,
8983 + 0xd08c, 0x0110, 0x7053, 0xffff, 0x707c, 0xa005, 0x1510, 0x2011,
8984 + 0x4e11, 0x080c, 0x6fad, 0x6040, 0xa094, 0x0010, 0xa285, 0x0020,
8985 + 0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04, 0x484b,
8986 + 0x6242, 0x708f, 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, 0x0080,
8987 + 0x6042, 0x6242, 0x0030, 0x6242, 0x708f, 0x0000, 0x7083, 0x0000,
8988 + 0x0000, 0x015e, 0x0005, 0x7080, 0xa08a, 0x0003, 0x1210, 0x0023,
8989 + 0x0010, 0x080c, 0x1519, 0x0005, 0x486f, 0x48bf, 0x4941, 0x00f6,
8990 + 0x7083, 0x0001, 0x20e1, 0xa000, 0xe000, 0x20e1, 0x8700, 0x080c,
8991 + 0x25bb, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079, 0xcc00, 0x207b,
8992 + 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813,
8993 + 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, 0x7823,
8994 + 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, 0x2079,
8995 + 0xcc0c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099, 0xc605, 0x20a1,
8996 + 0xcc0e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0xcc12, 0x207b, 0x0000,
8997 + 0x7807, 0x0000, 0x2099, 0xcc00, 0x20a1, 0x020b, 0x20a9, 0x0014,
8998 + 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, 0x4e42, 0x00fe,
8999 + 0x7087, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000, 0x0005, 0x00d6,
9000 + 0x7084, 0x7087, 0x0000, 0xa025, 0x0904, 0x4929, 0x6020, 0xd0b4,
9001 + 0x1904, 0x4927, 0x7194, 0x81ff, 0x0904, 0x4917, 0xa486, 0x000c,
9002 + 0x1904, 0x4922, 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0xcc80,
9003 + 0x2019, 0xcc00, 0x220c, 0x2304, 0xa106, 0x11b8, 0x8210, 0x8318,
9004 + 0x1f04, 0x48da, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f, 0xf0f0,
9005 + 0x6043, 0x0006, 0x7083, 0x0002, 0x708f, 0x0002, 0x2009, 0x07d0,
9006 + 0x2011, 0x4e18, 0x080c, 0x7036, 0x0490, 0x2069, 0xcc80, 0x6930,
9007 + 0xa18e, 0x1101, 0x1538, 0x6834, 0xa005, 0x1520, 0x6900, 0xa18c,
9008 + 0x00ff, 0x1118, 0x6804, 0xa005, 0x0190, 0x2011, 0xcc8e, 0x2019,
9009 + 0xc605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0230, 0x1190,
9010 + 0x8210, 0x8318, 0x1f04, 0x490b, 0x0068, 0x7097, 0x0000, 0x20e1,
9011 + 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9,
9012 + 0x0014, 0x53a6, 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, 0x00de,
9013 + 0x0005, 0x6040, 0xa085, 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8,
9014 + 0x60c3, 0x000c, 0x2011, 0xc931, 0x2013, 0x0000, 0x7087, 0x0000,
9015 + 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x8bec,
9016 + 0x0c30, 0x0005, 0x708c, 0xa08a, 0x001d, 0x1210, 0x0023, 0x0010,
9017 + 0x080c, 0x1519, 0x0005, 0x4975, 0x4984, 0x49ac, 0x49c5, 0x49e9,
9018 + 0x4a11, 0x4a35, 0x4a66, 0x4a8a, 0x4ab2, 0x4ae9, 0x4b11, 0x4b2d,
9019 + 0x4b43, 0x4b63, 0x4b76, 0x4b7e, 0x4bae, 0x4bd2, 0x4bfa, 0x4c1e,
9020 + 0x4c4f, 0x4c8c, 0x4cbb, 0x4cd7, 0x4d16, 0x4d36, 0x4d4f, 0x4d50,
9021 + 0x00c6, 0x2061, 0xc600, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004,
9022 + 0xa084, 0xfff9, 0x6006, 0x00ce, 0x0005, 0x608b, 0xbc94, 0x608f,
9023 + 0xf0f0, 0x6043, 0x0002, 0x708f, 0x0001, 0x2009, 0x07d0, 0x2011,
9024 + 0x4e18, 0x080c, 0x7036, 0x0005, 0x00f6, 0x7084, 0xa086, 0x0014,
9025 + 0x1508, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x11e0, 0x2079, 0xcc80,
9026 + 0x7a30, 0xa296, 0x1102, 0x11a0, 0x7834, 0xa005, 0x1188, 0x7a38,
9027 + 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x2011,
9028 + 0x4e18, 0x080c, 0x6fad, 0x708f, 0x0010, 0x080c, 0x4b7e, 0x0010,
9029 + 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0003, 0x6043, 0x0004,
9030 + 0x2011, 0x4e18, 0x080c, 0x6fad, 0x080c, 0x4ed3, 0x20a3, 0x1102,
9031 + 0x20a3, 0x0000, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x49bc,
9032 + 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005,
9033 + 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014, 0x11a8,
9034 + 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1102, 0x1178, 0x7834, 0xa005,
9035 + 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb,
9036 + 0x0001, 0x708f, 0x0004, 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe,
9037 + 0x0005, 0x708f, 0x0005, 0x080c, 0x4ed3, 0x20a3, 0x1103, 0x20a3,
9038 + 0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f24, 0x1160, 0x7078,
9039 + 0xa005, 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, 0x080c, 0x4ddc,
9040 + 0x0110, 0x080c, 0x4f02, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
9041 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42,
9042 + 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c,
9043 + 0x6fad, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296,
9044 + 0x1103, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128,
9045 + 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0006, 0x0029,
9046 + 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0007, 0x080c,
9047 + 0x4ed3, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e,
9048 + 0x080c, 0x4f24, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, 0xa186,
9049 + 0xffff, 0x0170, 0xa180, 0x2f6e, 0x200d, 0xa18c, 0xff00, 0x810f,
9050 + 0x080c, 0x4ddc, 0x0128, 0x080c, 0x4412, 0x0110, 0x080c, 0x2a11,
9051 + 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3,
9052 + 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084,
9053 + 0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014,
9054 + 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1104, 0x1178, 0x7834,
9055 + 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110,
9056 + 0x70bb, 0x0001, 0x708f, 0x0008, 0x0029, 0x0010, 0x080c, 0x4e5b,
9057 + 0x00fe, 0x0005, 0x708f, 0x0009, 0x080c, 0x4ed3, 0x20a3, 0x1105,
9058 + 0x20a3, 0x0100, 0x3430, 0x080c, 0x4f24, 0x1150, 0x7078, 0xa005,
9059 + 0x1138, 0x080c, 0x4d51, 0x1170, 0xa085, 0x0001, 0x080c, 0x2a11,
9060 + 0x20a9, 0x0008, 0x2099, 0xcc8e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
9061 + 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0010, 0x080c,
9062 + 0x4968, 0x0005, 0x00f6, 0x7084, 0xa005, 0x0588, 0x2011, 0x4e18,
9063 + 0x080c, 0x6fad, 0xa086, 0x0014, 0x1540, 0x2079, 0xcc80, 0x7a30,
9064 + 0xa296, 0x1105, 0x1510, 0x7834, 0x2011, 0x0100, 0xa21e, 0x1160,
9065 + 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001,
9066 + 0x708f, 0x000a, 0x00b1, 0x0098, 0xa005, 0x1178, 0x7a38, 0xd2fc,
9067 + 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000,
9068 + 0x708f, 0x000e, 0x080c, 0x4b63, 0x0010, 0x080c, 0x4e5b, 0x00fe,
9069 + 0x0005, 0x708f, 0x000b, 0x2011, 0xcc0e, 0x22a0, 0x20a9, 0x0040,
9070 + 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000, 0x41a4,
9071 + 0x080c, 0x4ed3, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x080c, 0x4f24,
9072 + 0x0118, 0x2013, 0x0000, 0x0020, 0x7054, 0xa085, 0x0100, 0x2012,
9073 + 0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4e42,
9074 + 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011, 0x4e18, 0x080c,
9075 + 0x6fad, 0xa086, 0x0084, 0x1168, 0x2079, 0xcc80, 0x7a30, 0xa296,
9076 + 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f, 0x000c, 0x0029,
9077 + 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x000d, 0x080c,
9078 + 0x4ed3, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099, 0xcc8e, 0x20a9,
9079 + 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084,
9080 + 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, 0x2011,
9081 + 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084, 0x1188, 0x2079, 0xcc80,
9082 + 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, 0x708b,
9083 + 0x0001, 0x080c, 0x4ec5, 0x708f, 0x000e, 0x0029, 0x0010, 0x080c,
9084 + 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x000f, 0x7087, 0x0000, 0x608b,
9085 + 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009,
9086 + 0x07d0, 0x2011, 0x4e18, 0x080c, 0x6fa1, 0x0005, 0x7084, 0xa005,
9087 + 0x0120, 0x2011, 0x4e18, 0x080c, 0x6fad, 0x0005, 0x708f, 0x0011,
9088 + 0x080c, 0x4f24, 0x11a0, 0x7170, 0x81ff, 0x0188, 0x2009, 0x0000,
9089 + 0x7074, 0xa084, 0x00ff, 0x080c, 0x29c7, 0xa186, 0x007e, 0x0138,
9090 + 0xa186, 0x0080, 0x0120, 0x2011, 0xcc8e, 0x080c, 0x4ddc, 0x20e1,
9091 + 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x7484,
9092 + 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8,
9093 + 0x53a6, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084,
9094 + 0xa005, 0x01f0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0014,
9095 + 0x11a8, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1103, 0x1178, 0x7834,
9096 + 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110,
9097 + 0x70bb, 0x0001, 0x708f, 0x0012, 0x0029, 0x0010, 0x080c, 0x4e5b,
9098 + 0x00fe, 0x0005, 0x708f, 0x0013, 0x080c, 0x4edf, 0x20a3, 0x1103,
9099 + 0x20a3, 0x0000, 0x3430, 0x2011, 0xcc8e, 0x080c, 0x4f24, 0x1160,
9100 + 0x7078, 0xa005, 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, 0x080c,
9101 + 0x4ddc, 0x0110, 0x080c, 0x4f02, 0x20a9, 0x0008, 0x2298, 0x26a0,
9102 + 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c,
9103 + 0x4e42, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4e18,
9104 + 0x080c, 0x6fad, 0xa086, 0x0014, 0x11a8, 0x2079, 0xcc80, 0x7a30,
9105 + 0xa296, 0x1104, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc,
9106 + 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0014,
9107 + 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x0015,
9108 + 0x080c, 0x4edf, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011,
9109 + 0xcc8e, 0x080c, 0x4f24, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158,
9110 + 0xa186, 0xffff, 0x0170, 0xa180, 0x2f6e, 0x200d, 0xa18c, 0xff00,
9111 + 0x810f, 0x080c, 0x4ddc, 0x0128, 0x080c, 0x4412, 0x0110, 0x080c,
9112 + 0x2a11, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
9113 + 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0005, 0x00f6,
9114 + 0x7084, 0xa005, 0x05b8, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086,
9115 + 0x0014, 0x1570, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1105, 0x1540,
9116 + 0x7834, 0x2011, 0x0100, 0xa21e, 0x1148, 0x7a38, 0xd2fc, 0x0128,
9117 + 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x0060, 0xa005, 0x11c0,
9118 + 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001,
9119 + 0x708b, 0x0000, 0x7a38, 0xd2f4, 0x0138, 0x2001, 0xc674, 0x2004,
9120 + 0xd0a4, 0x1110, 0x70d7, 0x0008, 0x708f, 0x0016, 0x0029, 0x0010,
9121 + 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000,
9122 + 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430,
9123 + 0x2011, 0xcc8e, 0x708f, 0x0017, 0x080c, 0x4f24, 0x1150, 0x7078,
9124 + 0xa005, 0x1138, 0x080c, 0x4d51, 0x1170, 0xa085, 0x0001, 0x080c,
9125 + 0x2a11, 0x20a9, 0x0008, 0x2099, 0xcc8e, 0x26a0, 0x53a6, 0x20a3,
9126 + 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4e42, 0x0010,
9127 + 0x080c, 0x4968, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011,
9128 + 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084, 0x1168, 0x2079, 0xcc80,
9129 + 0x7a30, 0xa296, 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f,
9130 + 0x0018, 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f,
9131 + 0x0019, 0x080c, 0x4edf, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430,
9132 + 0x2099, 0xcc8e, 0x2039, 0xcc0e, 0x27a0, 0x20a9, 0x0040, 0x53a3,
9133 + 0x080c, 0x4f24, 0x11e8, 0x2728, 0x2514, 0x8207, 0xa084, 0x00ff,
9134 + 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a, 0x7054,
9135 + 0x2310, 0x8214, 0xa2a0, 0xcc0e, 0x2414, 0xa38c, 0x0001, 0x0118,
9136 + 0xa294, 0xff00, 0x0018, 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222,
9137 + 0x2798, 0x26a0, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3,
9138 + 0x0000, 0x60c3, 0x0084, 0x080c, 0x4e42, 0x0005, 0x00f6, 0x7084,
9139 + 0xa005, 0x01d0, 0x2011, 0x4e18, 0x080c, 0x6fad, 0xa086, 0x0084,
9140 + 0x1188, 0x2079, 0xcc80, 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834,
9141 + 0xa005, 0x1140, 0x708b, 0x0001, 0x080c, 0x4ec5, 0x708f, 0x001a,
9142 + 0x0029, 0x0010, 0x080c, 0x4e5b, 0x00fe, 0x0005, 0x708f, 0x001b,
9143 + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b,
9144 + 0x7484, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004,
9145 + 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4e42, 0x0005, 0x0005,
9146 + 0x0005, 0x0086, 0x0096, 0x2029, 0xc653, 0x252c, 0x20a9, 0x0008,
9147 + 0x2041, 0xcc0e, 0x28a0, 0x2099, 0xcc8e, 0x53a3, 0x20a9, 0x0008,
9148 + 0x2011, 0x0007, 0xd5d4, 0x0110, 0x2011, 0x0000, 0x2800, 0xa200,
9149 + 0x200c, 0xa1a6, 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008,
9150 + 0x8211, 0x1f04, 0x4d66, 0x0804, 0x4dd4, 0x82ff, 0x1160, 0xd5d4,
9151 + 0x0120, 0xa1a6, 0x3fff, 0x0d90, 0x0020, 0xa1a6, 0x3fff, 0x0904,
9152 + 0x4dd4, 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4,
9153 + 0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008,
9154 + 0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04,
9155 + 0x4d8c, 0x04d0, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04,
9156 + 0x4d9e, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0158, 0x0006, 0x2039,
9157 + 0x0007, 0x2200, 0xa73a, 0x000e, 0x27a8, 0xa5a8, 0x0010, 0x1f04,
9158 + 0x4dad, 0x7552, 0xa5c8, 0x2f6e, 0x292d, 0xa5ac, 0x00ff, 0x7576,
9159 + 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x29f1, 0x001e, 0x60e7,
9160 + 0x0000, 0x65ea, 0x2018, 0x2304, 0xa405, 0x201a, 0x707b, 0x0001,
9161 + 0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3,
9162 + 0x0000, 0xa085, 0x0001, 0x0028, 0xa006, 0x0018, 0xa006, 0x080c,
9163 + 0x1519, 0x009e, 0x008e, 0x0005, 0x2118, 0x2021, 0x0000, 0x2001,
9164 + 0x0007, 0xa39a, 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118,
9165 + 0x84ff, 0x0120, 0xa39a, 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001,
9166 + 0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, 0xa238, 0x2704, 0xa42c,
9167 + 0x11b8, 0xa405, 0x203a, 0x7152, 0xa1a0, 0x2f6e, 0x242d, 0xa5ac,
9168 + 0x00ff, 0x7576, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x29f1,
9169 + 0x001e, 0x60e7, 0x0000, 0x65ea, 0x707b, 0x0001, 0xa084, 0x0000,
9170 + 0x0005, 0x00e6, 0x2071, 0xc600, 0x707f, 0x0000, 0x00ee, 0x0005,
9171 + 0x00e6, 0x00f6, 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, 0x8bf5,
9172 + 0x7004, 0xa084, 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, 0x0000,
9173 + 0x0126, 0x2091, 0x8000, 0x2071, 0xc623, 0x2073, 0x0000, 0x7840,
9174 + 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x001e, 0xa094,
9175 + 0x0010, 0xa285, 0x0080, 0x7842, 0x7a42, 0x002e, 0x012e, 0x00fe,
9176 + 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x2011, 0xc931, 0x2013,
9177 + 0x0000, 0x7087, 0x0000, 0x012e, 0x20e1, 0x9080, 0x60a3, 0x0056,
9178 + 0x60a7, 0x9575, 0x080c, 0x8bec, 0x2009, 0x07d0, 0x2011, 0x4e18,
9179 + 0x080c, 0x7036, 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091,
9180 + 0x8000, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c,
9181 + 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c, 0x8e79,
9182 + 0x003e, 0x2009, 0x00f7, 0x080c, 0x4eeb, 0x2061, 0xc93a, 0x601b,
9183 + 0x0000, 0x601f, 0x0000, 0x2061, 0xc600, 0x6003, 0x0001, 0x2061,
9184 + 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011,
9185 + 0x4e90, 0x080c, 0x6fa1, 0x012e, 0x00ce, 0x002e, 0x001e, 0x0005,
9186 + 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x0100, 0x080c,
9187 + 0x8bf5, 0x2071, 0x0140, 0x7004, 0xa084, 0x4000, 0x0120, 0x7003,
9188 + 0x1000, 0x7003, 0x0000, 0x080c, 0x5f2a, 0x01a8, 0x080c, 0x5f48,
9189 + 0x1190, 0x2001, 0xc8e5, 0x2003, 0xaaaa, 0x0016, 0x080c, 0x2a95,
9190 + 0x2001, 0xc8d6, 0x2102, 0x001e, 0x2001, 0xc8e6, 0x2003, 0x0000,
9191 + 0x080c, 0x5e5a, 0x0030, 0x2001, 0x0001, 0x080c, 0x296d, 0x080c,
9192 + 0x4e5b, 0x012e, 0x000e, 0x00ee, 0x0005, 0x20a9, 0x0040, 0x20a1,
9193 + 0xcdc0, 0x2099, 0xcc8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0,
9194 + 0x1f04, 0x4ecb, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
9195 + 0xcc00, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x0005, 0x20e1,
9196 + 0x9080, 0x20e1, 0x4000, 0x2099, 0xcc80, 0x20a1, 0x020b, 0x20a9,
9197 + 0x000c, 0x53a6, 0x0005, 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f,
9198 + 0x2001, 0xc631, 0x2004, 0xa005, 0x1138, 0x2001, 0xc615, 0x2004,
9199 + 0xa084, 0x00ff, 0xa105, 0x0010, 0xa185, 0x00f7, 0x604a, 0x000e,
9200 + 0x00ce, 0x0005, 0x0016, 0x0046, 0x2001, 0xc653, 0x2004, 0xd0a4,
9201 + 0x0158, 0xa006, 0x2020, 0x2009, 0x002a, 0x080c, 0xc190, 0x2001,
9202 + 0xc60c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0000,
9203 + 0x080c, 0x2e19, 0x004e, 0x001e, 0x0005, 0x080c, 0x4e5b, 0x708f,
9204 + 0x0000, 0x7087, 0x0000, 0x0005, 0x0006, 0x2001, 0xc60c, 0x2004,
9205 + 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016, 0x0126, 0x2091,
9206 + 0x8000, 0x2001, 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102, 0x012e,
9207 + 0x001e, 0x000e, 0x0005, 0x0156, 0x20a9, 0x00ff, 0x2009, 0xc77b,
9208 + 0xa006, 0x200a, 0x8108, 0x1f04, 0x4f41, 0x015e, 0x0005, 0x00d6,
9209 + 0x0036, 0x0156, 0x0136, 0x0146, 0x2069, 0xc652, 0xa006, 0x6002,
9210 + 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2f6e, 0x231d,
9211 + 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0,
9212 + 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e,
9213 + 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066,
9214 + 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086,
9215 + 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60be, 0x61a2,
9216 + 0x00d6, 0x60a4, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60a7, 0x0000,
9217 + 0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, 0x60ab, 0x0000, 0x00de,
9218 + 0xa006, 0x604a, 0x6810, 0x603a, 0x680c, 0x6046, 0xa006, 0x60b2,
9219 + 0x60ae, 0x60b6, 0x60bb, 0x0520, 0x6814, 0xa084, 0x00ff, 0x6042,
9220 + 0x014e, 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091,
9221 + 0x8000, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x1a04,
9222 + 0x505c, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x5061,
9223 + 0x2001, 0xc60c, 0x2004, 0xa084, 0x0003, 0x01c0, 0x2001, 0xc60c,
9224 + 0x2004, 0xd084, 0x1904, 0x5044, 0xa188, 0xc77b, 0x2104, 0xa065,
9225 + 0x0904, 0x5044, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x1904,
9226 + 0x5044, 0x6000, 0xd0c4, 0x0904, 0x5044, 0x0068, 0xa188, 0xc77b,
9227 + 0x2104, 0xa065, 0x0904, 0x5028, 0x6004, 0xa084, 0x00ff, 0xa08e,
9228 + 0x0006, 0x1904, 0x502d, 0x60a4, 0xa00d, 0x0118, 0x080c, 0x5568,
9229 + 0x05d0, 0x60a8, 0xa00d, 0x0188, 0x080c, 0x55b3, 0x1170, 0x694c,
9230 + 0xd1fc, 0x1118, 0x080c, 0x5272, 0x0448, 0x080c, 0x5221, 0x694c,
9231 + 0xd1ec, 0x1520, 0x080c, 0x545a, 0x0408, 0x694c, 0xa184, 0xa000,
9232 + 0x0178, 0xd1ec, 0x0140, 0xd1fc, 0x0118, 0x080c, 0x5469, 0x0028,
9233 + 0x080c, 0x5469, 0x0028, 0xd1fc, 0x0118, 0x080c, 0x5221, 0x0070,
9234 + 0x6050, 0xa00d, 0x0130, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
9235 + 0x0028, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x080c, 0x79b6,
9236 + 0xa006, 0x012e, 0x0005, 0x2001, 0x0005, 0x2009, 0x0000, 0x04e8,
9237 + 0x2001, 0x0028, 0x2009, 0x0000, 0x04c0, 0xa082, 0x0006, 0x12a0,
9238 + 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1160, 0x60a0, 0xd0bc, 0x1148,
9239 + 0x6100, 0xd1fc, 0x0904, 0x4fe3, 0x2001, 0x0029, 0x2009, 0x1000,
9240 + 0x0420, 0x2001, 0x0028, 0x00a8, 0x2009, 0xc60c, 0x210c, 0xd18c,
9241 + 0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004,
9242 + 0x0040, 0x2001, 0x0029, 0x6100, 0xd1fc, 0x0118, 0x2009, 0x1000,
9243 + 0x0060, 0x2009, 0x0000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000,
9244 + 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x012e, 0x0005,
9245 + 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0xa084, 0xff00, 0xa08e,
9246 + 0xff00, 0x1120, 0x2001, 0xc8d3, 0x2064, 0x0080, 0x6844, 0x8007,
9247 + 0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1698, 0xa188, 0xc77b,
9248 + 0x2104, 0xa065, 0x01d8, 0x080c, 0x56ed, 0x11d8, 0x2c70, 0x080c,
9249 + 0x958d, 0x0568, 0x2e00, 0x601a, 0x2d00, 0x6012, 0x601f, 0x0009,
9250 + 0x600b, 0x0000, 0x6844, 0xa08e, 0xff00, 0x1110, 0x600b, 0x8000,
9251 + 0x2009, 0x0100, 0x080c, 0x9613, 0xa006, 0x00b0, 0x2001, 0x0028,
9252 + 0x0090, 0x2009, 0xc60c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004,
9253 + 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029,
9254 + 0x0010, 0x2001, 0x0029, 0xa005, 0x012e, 0x00ee, 0x0005, 0x2001,
9255 + 0x002c, 0x0cc8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0x8007,
9256 + 0xa084, 0x00ff, 0x2008, 0xa182, 0x00ff, 0x1a04, 0x510d, 0xa188,
9257 + 0xc77b, 0x2104, 0xa065, 0x01c0, 0x6004, 0xa084, 0x00ff, 0xa08e,
9258 + 0x0006, 0x11a8, 0x2c70, 0x080c, 0x958d, 0x05e8, 0x2e00, 0x601a,
9259 + 0x2d00, 0x6012, 0x600b, 0xffff, 0x601f, 0x000a, 0x2009, 0x0003,
9260 + 0x080c, 0x9613, 0xa006, 0x0460, 0x2001, 0x0028, 0x0440, 0xa082,
9261 + 0x0006, 0x1298, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1158, 0x60a0,
9262 + 0xd0bc, 0x1140, 0x6100, 0xd1fc, 0x09e8, 0x2001, 0x0029, 0x2009,
9263 + 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009, 0xc60c, 0x210c,
9264 + 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184, 0x0118, 0x2001,
9265 + 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001, 0x0029, 0xa005,
9266 + 0x012e, 0x00ee, 0x0005, 0x2001, 0x002c, 0x0cc8, 0x00f6, 0x00e6,
9267 + 0x0126, 0x2091, 0x8000, 0x2011, 0x0000, 0x2079, 0xc600, 0x6944,
9268 + 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x51d8, 0x080c,
9269 + 0x533d, 0x11a0, 0x6004, 0xa084, 0x00ff, 0xa082, 0x0006, 0x1270,
9270 + 0x6864, 0xa0c6, 0x006f, 0x0150, 0x2001, 0xc635, 0x2004, 0xd0ac,
9271 + 0x1904, 0x51c1, 0x60a0, 0xd0bc, 0x1904, 0x51c1, 0x6864, 0xa0c6,
9272 + 0x006f, 0x0118, 0x2008, 0x0804, 0x518a, 0x6968, 0x2140, 0xa18c,
9273 + 0xff00, 0x810f, 0x78d4, 0xd0ac, 0x1118, 0xa182, 0x0080, 0x06d0,
9274 + 0xa182, 0x00ff, 0x16b8, 0x6a70, 0x6b6c, 0x7870, 0xa306, 0x1160,
9275 + 0x7874, 0xa24e, 0x1118, 0x2208, 0x2310, 0x0460, 0xa9cc, 0xff00,
9276 + 0x1118, 0x2208, 0x2310, 0x0430, 0x080c, 0x3f6e, 0x2c70, 0x0550,
9277 + 0x2009, 0x0000, 0x2011, 0x0000, 0xa0c6, 0x4000, 0x1160, 0x0006,
9278 + 0x2e60, 0x080c, 0x55de, 0x1108, 0xc185, 0x7000, 0xd0bc, 0x0108,
9279 + 0xc18d, 0x000e, 0x0088, 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060,
9280 + 0xa0c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009,
9281 + 0x1108, 0x0010, 0x2001, 0x4006, 0x6866, 0x696a, 0x6a6e, 0x2001,
9282 + 0x0030, 0x0450, 0x080c, 0x958d, 0x1138, 0x2001, 0x4005, 0x2009,
9283 + 0x0003, 0x2011, 0x0000, 0x0c80, 0x2e00, 0x601a, 0x080c, 0xb05e,
9284 + 0x2d00, 0x6012, 0x601f, 0x0001, 0x6838, 0xd88c, 0x0108, 0xc0f5,
9285 + 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e46, 0x012e, 0x2001,
9286 + 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x2009,
9287 + 0x0002, 0x080c, 0x9613, 0xa006, 0xa005, 0x012e, 0x00ee, 0x00fe,
9288 + 0x0005, 0x2001, 0x0028, 0x2009, 0x0000, 0x0cb0, 0x2009, 0xc60c,
9289 + 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118,
9290 + 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, 0x2009, 0x0000, 0x0c20,
9291 + 0x2001, 0x0029, 0x2009, 0x0000, 0x08f8, 0x6944, 0x6e48, 0xa684,
9292 + 0x3fff, 0xa082, 0x4000, 0x16b8, 0xa18c, 0xff00, 0x810f, 0xa182,
9293 + 0x00ff, 0x12e0, 0xa188, 0xc77b, 0x2104, 0xa065, 0x01b8, 0x6004,
9294 + 0xa084, 0x00ff, 0xa08e, 0x0006, 0x11b0, 0x684c, 0xd0ec, 0x0120,
9295 + 0x080c, 0x5469, 0x0431, 0x0030, 0x0421, 0x684c, 0xd0fc, 0x0110,
9296 + 0x080c, 0x545a, 0x080c, 0x54a7, 0xa006, 0x00c8, 0x2001, 0x0028,
9297 + 0x2009, 0x0000, 0x00a0, 0xa082, 0x0006, 0x1240, 0x6100, 0xd1fc,
9298 + 0x0d20, 0x2001, 0x0029, 0x2009, 0x1000, 0x0048, 0x2001, 0x0029,
9299 + 0x2009, 0x0000, 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005,
9300 + 0x0005, 0x0126, 0x2091, 0x8000, 0x6050, 0xa00d, 0x0138, 0x2d00,
9301 + 0x200a, 0x6803, 0x0000, 0x6052, 0x012e, 0x0005, 0x2d00, 0x6052,
9302 + 0x604e, 0x6803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000, 0x604c,
9303 + 0xa005, 0x0170, 0x00e6, 0x2071, 0xc927, 0x7004, 0xa086, 0x0002,
9304 + 0x0168, 0x00ee, 0x604c, 0x6802, 0x2d00, 0x604e, 0x012e, 0x0005,
9305 + 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0cc0, 0x701c, 0xac06,
9306 + 0x1d80, 0x604c, 0x2070, 0x7000, 0x6802, 0x2d00, 0x7002, 0x00ee,
9307 + 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x604c, 0xa06d, 0x0130,
9308 + 0x6800, 0xa005, 0x1108, 0x6052, 0x604e, 0xad05, 0x012e, 0x0005,
9309 + 0x604c, 0xa06d, 0x0130, 0x6800, 0xa005, 0x1108, 0x6052, 0x604e,
9310 + 0xad05, 0x0005, 0x6803, 0x0000, 0x6084, 0xa00d, 0x0120, 0x2d00,
9311 + 0x200a, 0x6086, 0x0005, 0x2d00, 0x6086, 0x6082, 0x0cd8, 0x0126,
9312 + 0x00c6, 0x0026, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005,
9313 + 0x0110, 0xc285, 0x0008, 0xc284, 0x6202, 0x002e, 0x00ce, 0x012e,
9314 + 0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204,
9315 + 0x0006, 0xa086, 0x0006, 0x1180, 0x609c, 0xd0ac, 0x0168, 0x2001,
9316 + 0xc653, 0x2004, 0xd0a4, 0x0140, 0xa284, 0xff00, 0x8007, 0xa086,
9317 + 0x0007, 0x1110, 0x2011, 0x0600, 0x000e, 0xa294, 0xff00, 0xa215,
9318 + 0x6206, 0x0006, 0xa086, 0x0006, 0x1128, 0x6290, 0x82ff, 0x1110,
9319 + 0x080c, 0x1519, 0x000e, 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6,
9320 + 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0x0006, 0xa086, 0x0006,
9321 + 0x1178, 0x609c, 0xd0a4, 0x0160, 0x2001, 0xc653, 0x2004, 0xd0ac,
9322 + 0x1138, 0xa284, 0x00ff, 0xa086, 0x0007, 0x1110, 0x2011, 0x0006,
9323 + 0x000e, 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206, 0x00ce, 0x012e,
9324 + 0x0005, 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, 0x00b0,
9325 + 0xa190, 0xc77b, 0x2204, 0xa065, 0x1180, 0x0016, 0x00d6, 0x080c,
9326 + 0x15e5, 0x2d60, 0x00de, 0x001e, 0x0d80, 0x2c00, 0x2012, 0x60a7,
9327 + 0x0000, 0x60ab, 0x0000, 0x080c, 0x4f47, 0xa006, 0x002e, 0x0005,
9328 + 0x0126, 0x2091, 0x8000, 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085,
9329 + 0x0001, 0x0480, 0x00d6, 0xa190, 0xc77b, 0x2204, 0xa06d, 0x0540,
9330 + 0x2013, 0x0000, 0x00d6, 0x00c6, 0x2d60, 0x60a4, 0xa06d, 0x0110,
9331 + 0x080c, 0x1619, 0x60a8, 0xa06d, 0x0110, 0x080c, 0x1619, 0x00ce,
9332 + 0x00de, 0x00d6, 0x00c6, 0x68bc, 0x2060, 0x8cff, 0x0168, 0x600c,
9333 + 0x0006, 0x6010, 0x2068, 0x080c, 0xac91, 0x0110, 0x080c, 0x1629,
9334 + 0x080c, 0x95e3, 0x00ce, 0x0c88, 0x00ce, 0x00de, 0x080c, 0x1619,
9335 + 0x00de, 0xa006, 0x002e, 0x012e, 0x0005, 0x0016, 0xa182, 0x00ff,
9336 + 0x0218, 0xa085, 0x0001, 0x0030, 0xa188, 0xc77b, 0x2104, 0xa065,
9337 + 0x0dc0, 0xa006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146,
9338 + 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, 0x6002, 0x080c,
9339 + 0x5f22, 0x1558, 0x60a0, 0xa086, 0x007e, 0x2069, 0xcc90, 0x0130,
9340 + 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1500, 0x0098, 0x2d04, 0xd0e4,
9341 + 0x01e0, 0x00d6, 0x2069, 0xcc8e, 0x00c6, 0x2061, 0xc8f9, 0x6810,
9342 + 0x2062, 0x6814, 0x6006, 0x6818, 0x600a, 0x681c, 0x600e, 0x00ce,
9343 + 0x00de, 0x8d69, 0x2d04, 0x2069, 0x0140, 0xa005, 0x1110, 0x2001,
9344 + 0x0001, 0x6886, 0x2069, 0xc600, 0x68a6, 0x2069, 0xcc8e, 0x6808,
9345 + 0x605e, 0x6810, 0x6062, 0x6138, 0xa10a, 0x0208, 0x603a, 0x6814,
9346 + 0x6066, 0x2099, 0xcc96, 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004,
9347 + 0x53a3, 0x2099, 0xcc9a, 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004,
9348 + 0x53a3, 0x2069, 0xccae, 0x6808, 0x606a, 0x690c, 0x616e, 0x6810,
9349 + 0x6072, 0x6818, 0x6076, 0x60a0, 0xa086, 0x007e, 0x1120, 0x2069,
9350 + 0xcc8e, 0x690c, 0x616e, 0xa182, 0x0211, 0x1218, 0x2009, 0x0008,
9351 + 0x0400, 0xa182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0, 0xa182,
9352 + 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0xa182, 0x0349, 0x1218,
9353 + 0x2009, 0x0005, 0x0070, 0xa182, 0x0421, 0x1218, 0x2009, 0x0004,
9354 + 0x0040, 0xa182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010, 0x2009,
9355 + 0x0002, 0x6192, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, 0x0016,
9356 + 0x0026, 0x00e6, 0x2071, 0xcc8d, 0x2e04, 0x6896, 0x2071, 0xcc8e,
9357 + 0x7004, 0x689a, 0x701c, 0x689e, 0x6a00, 0x2009, 0xc672, 0x210c,
9358 + 0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008, 0xc2ac, 0xd0c4,
9359 + 0x0120, 0xd1e4, 0x0110, 0xc2bd, 0x0008, 0xc2bc, 0x6a02, 0x00ee,
9360 + 0x002e, 0x001e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4,
9361 + 0xa06d, 0x01c0, 0x6900, 0x81ff, 0x1540, 0x6a04, 0xa282, 0x0010,
9362 + 0x1648, 0xad88, 0x0004, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff,
9363 + 0x0128, 0x8108, 0x1f04, 0x5415, 0x080c, 0x1519, 0x260a, 0x8210,
9364 + 0x6a06, 0x0098, 0x080c, 0x1602, 0x01a8, 0x2d00, 0x60a6, 0x6803,
9365 + 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108,
9366 + 0x1f04, 0x542d, 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x012e,
9367 + 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126, 0x2091, 0x8000, 0x00d6,
9368 + 0x60a4, 0xa00d, 0x01a0, 0x2168, 0x6800, 0xa005, 0x1160, 0x080c,
9369 + 0x5568, 0x1168, 0x200b, 0xffff, 0x6804, 0xa08a, 0x0002, 0x0218,
9370 + 0x8001, 0x6806, 0x0020, 0x080c, 0x1619, 0x60a7, 0x0000, 0x00de,
9371 + 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x55c6, 0x0010,
9372 + 0x080c, 0x5221, 0x080c, 0x54e0, 0x1dd8, 0x080c, 0x54a7, 0x012e,
9373 + 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a8, 0xa06d, 0x01c0,
9374 + 0x6950, 0x81ff, 0x1540, 0x6a54, 0xa282, 0x0010, 0x1670, 0xad88,
9375 + 0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0128, 0x8108,
9376 + 0x1f04, 0x547b, 0x080c, 0x1519, 0x260a, 0x8210, 0x6a56, 0x0098,
9377 + 0x080c, 0x1602, 0x01d0, 0x2d00, 0x60aa, 0x6853, 0x0000, 0xad88,
9378 + 0x0018, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x5493,
9379 + 0x6857, 0x0001, 0x6e62, 0x0010, 0x080c, 0x5272, 0x0089, 0x1de0,
9380 + 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126,
9381 + 0x2091, 0x8000, 0x080c, 0x79b6, 0x012e, 0x0005, 0xa01e, 0x0010,
9382 + 0x2019, 0x0001, 0xa00e, 0x0126, 0x2091, 0x8000, 0x604c, 0x2068,
9383 + 0x6000, 0xd0dc, 0x1170, 0x8dff, 0x01f8, 0x83ff, 0x0120, 0x6848,
9384 + 0xa606, 0x0158, 0x0030, 0x683c, 0xa406, 0x1118, 0x6840, 0xa506,
9385 + 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x080c, 0x8fb7, 0x6a00,
9386 + 0x604c, 0xad06, 0x1110, 0x624e, 0x0018, 0xa180, 0x0000, 0x2202,
9387 + 0x82ff, 0x1110, 0x6152, 0x8dff, 0x012e, 0x0005, 0xa01e, 0x0010,
9388 + 0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff, 0x01e8, 0x83ff,
9389 + 0x0120, 0x6848, 0xa606, 0x0158, 0x0030, 0x683c, 0xa406, 0x1118,
9390 + 0x6840, 0xa506, 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x6a00,
9391 + 0x6080, 0xad06, 0x1110, 0x6282, 0x0018, 0xa180, 0x0000, 0x2202,
9392 + 0x82ff, 0x1110, 0x6186, 0x8dff, 0x0005, 0xa016, 0x080c, 0x5562,
9393 + 0x1110, 0x2011, 0x0001, 0x080c, 0x55ad, 0x1110, 0xa295, 0x0002,
9394 + 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xad46, 0x0010, 0xa085,
9395 + 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xacd6, 0x0010,
9396 + 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c, 0xad29,
9397 + 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118, 0x080c,
9398 + 0xacf2, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, 0x55de, 0x0118,
9399 + 0x080c, 0xad62, 0x0010, 0xa085, 0x0001, 0x0005, 0x0126, 0x0006,
9400 + 0x00d6, 0x2091, 0x8000, 0x6080, 0xa06d, 0x01a0, 0x6800, 0x0006,
9401 + 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0xaf03, 0x0006,
9402 + 0x6000, 0xd0fc, 0x0110, 0x080c, 0xc4e0, 0x000e, 0x080c, 0x580a,
9403 + 0x000e, 0x0c50, 0x6083, 0x0000, 0x6087, 0x0000, 0x00de, 0x000e,
9404 + 0x012e, 0x0005, 0x60a4, 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005,
9405 + 0x00e6, 0x2170, 0x7000, 0xa005, 0x1168, 0x20a9, 0x0010, 0xae88,
9406 + 0x0004, 0x2104, 0xa606, 0x0130, 0x8108, 0x1f04, 0x5571, 0xa085,
9407 + 0x0001, 0x0008, 0xa006, 0x00ee, 0x0005, 0x00d6, 0x0126, 0x2091,
9408 + 0x8000, 0x60a4, 0xa06d, 0x1128, 0x080c, 0x1602, 0x01a0, 0x2d00,
9409 + 0x60a6, 0x6803, 0x0001, 0x6807, 0x0000, 0xad88, 0x0004, 0x20a9,
9410 + 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x5591, 0xa085, 0x0001,
9411 + 0x012e, 0x00de, 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x0126, 0x2091,
9412 + 0x8000, 0x60a4, 0xa06d, 0x0130, 0x60a7, 0x0000, 0x080c, 0x1619,
9413 + 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0x60a8, 0xa00d, 0x1118,
9414 + 0xa085, 0x0001, 0x0005, 0x00e6, 0x2170, 0x7050, 0xa005, 0x1160,
9415 + 0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0128, 0x8108,
9416 + 0x1f04, 0x55bc, 0xa085, 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091,
9417 + 0x8000, 0x0c19, 0x1188, 0x200b, 0xffff, 0x00d6, 0x60a8, 0x2068,
9418 + 0x6854, 0xa08a, 0x0002, 0x0218, 0x8001, 0x6856, 0x0020, 0x080c,
9419 + 0x1619, 0x60ab, 0x0000, 0x00de, 0x012e, 0x0005, 0x609c, 0xd0a4,
9420 + 0x0005, 0x00f6, 0x080c, 0x5f22, 0x01b0, 0x71b8, 0x81ff, 0x1198,
9421 + 0x71d4, 0xd19c, 0x0180, 0x2001, 0x007e, 0xa080, 0xc77b, 0x2004,
9422 + 0xa07d, 0x0148, 0x7804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1118,
9423 + 0x7800, 0xc0ed, 0x7802, 0x2079, 0xc652, 0x7804, 0xd0a4, 0x01e8,
9424 + 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c,
9425 + 0x533d, 0x1168, 0x6004, 0xa084, 0xff00, 0x8007, 0xa096, 0x0004,
9426 + 0x0118, 0xa086, 0x0006, 0x1118, 0x6000, 0xc0ed, 0x6002, 0x001e,
9427 + 0x8108, 0x1f04, 0x5606, 0x00ce, 0x015e, 0x080c, 0x570b, 0x0120,
9428 + 0x2001, 0xc8fc, 0x200c, 0x0038, 0x2079, 0xc652, 0x7804, 0xd0a4,
9429 + 0x0130, 0x2009, 0x07d0, 0x2011, 0x5631, 0x080c, 0x7036, 0x00fe,
9430 + 0x0005, 0x2011, 0x5631, 0x080c, 0x6fad, 0x080c, 0x570b, 0x01f0,
9431 + 0x2001, 0xc7f9, 0x2004, 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102,
9432 + 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011,
9433 + 0x5631, 0x080c, 0x7036, 0x00e6, 0x2071, 0xc600, 0x7073, 0x0000,
9434 + 0x7077, 0x0000, 0x080c, 0x2c62, 0x00ee, 0x04b0, 0x0156, 0x00c6,
9435 + 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x533d, 0x1530,
9436 + 0x6000, 0xd0ec, 0x0518, 0x0046, 0x62a0, 0xa294, 0x00ff, 0x8227,
9437 + 0xa006, 0x2009, 0x0029, 0x080c, 0xc190, 0x6000, 0xc0e5, 0xc0ec,
9438 + 0x6002, 0x6004, 0xa084, 0x00ff, 0xa085, 0x0700, 0x6006, 0x2019,
9439 + 0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e,
9440 + 0x2009, 0x0000, 0x080c, 0xbef7, 0x007e, 0x004e, 0x001e, 0x8108,
9441 + 0x1f04, 0x565c, 0x00ce, 0x015e, 0x0005, 0x00c6, 0x6018, 0x2060,
9442 + 0x6000, 0xc0ec, 0x6002, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x080c,
9443 + 0x15e5, 0x2d60, 0x0508, 0x2009, 0x00ff, 0x60a7, 0x0000, 0x60ab,
9444 + 0x0000, 0x080c, 0x4f47, 0x6007, 0x0006, 0x6013, 0x00ff, 0x6017,
9445 + 0xffff, 0x606f, 0x0200, 0x606c, 0x6093, 0x0002, 0x60bb, 0x0520,
9446 + 0x60a3, 0x00ff, 0x60b7, 0x0000, 0x60af, 0x0000, 0x2c08, 0x2001,
9447 + 0xc8d3, 0x2102, 0xa085, 0x0001, 0x00de, 0x00ce, 0x0005, 0x7818,
9448 + 0x2004, 0xd0ac, 0x0005, 0x7818, 0x2004, 0xd0bc, 0x0005, 0x0156,
9449 + 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x20a9, 0x00ff, 0x2009, 0x0000,
9450 + 0x0016, 0x080c, 0x533d, 0x1178, 0x2c70, 0x70ac, 0xa005, 0x0158,
9451 + 0x2060, 0x620c, 0x0026, 0x6010, 0x2068, 0x080c, 0x761a, 0x002e,
9452 + 0x2260, 0x82ff, 0x1db0, 0x001e, 0x8108, 0x1f04, 0x56d0, 0x002e,
9453 + 0x00ce, 0x00de, 0x00ee, 0x015e, 0x0005, 0x0006, 0x0016, 0x0026,
9454 + 0x6004, 0xa08c, 0x00ff, 0xa196, 0x0006, 0x0188, 0xa196, 0x0004,
9455 + 0x0170, 0xa196, 0x0005, 0x0158, 0xa08c, 0xff00, 0x810f, 0xa196,
9456 + 0x0006, 0x0128, 0xa196, 0x0004, 0x0110, 0xa196, 0x0005, 0x002e,
9457 + 0x001e, 0x000e, 0x0005, 0x00f6, 0x2001, 0xc7f9, 0x2004, 0xa07d,
9458 + 0x0110, 0x7800, 0xd0ec, 0x00fe, 0x0005, 0x0126, 0x0026, 0x2091,
9459 + 0x8000, 0x0006, 0x62a0, 0xa290, 0xc77b, 0x2204, 0xac06, 0x190c,
9460 + 0x1519, 0x000e, 0x6200, 0xa005, 0x0110, 0xc2fd, 0x0008, 0xc2fc,
9461 + 0x6202, 0x002e, 0x012e, 0x0005, 0x2011, 0xc635, 0x2204, 0xd0cc,
9462 + 0x0138, 0x2001, 0xc8fa, 0x200c, 0x2011, 0x5739, 0x080c, 0x7036,
9463 + 0x0005, 0x2011, 0x5739, 0x080c, 0x6fad, 0x2011, 0xc635, 0x2204,
9464 + 0xc0cc, 0x2012, 0x0005, 0x2071, 0xc734, 0x7003, 0x0001, 0x7007,
9465 + 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f,
9466 + 0x0000, 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b,
9467 + 0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xc8c3, 0x7003,
9468 + 0xc734, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xc8a3, 0x7013,
9469 + 0x0020, 0x7017, 0x0040, 0x7037, 0x0000, 0x0005, 0x0016, 0x00e6,
9470 + 0x2071, 0xc87b, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001,
9471 + 0xc653, 0x2004, 0xd0fc, 0x1150, 0x2001, 0xc653, 0x2004, 0xa00e,
9472 + 0xd09c, 0x0108, 0x8108, 0x7102, 0x0804, 0x57d4, 0x2001, 0xc672,
9473 + 0x200c, 0xa184, 0x000f, 0x2009, 0xc673, 0x210c, 0x0002, 0x577c,
9474 + 0x57af, 0x57b6, 0x57c0, 0x57c5, 0x577c, 0x577c, 0x577c, 0x579f,
9475 + 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x577c, 0x7003,
9476 + 0x0004, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, 0x20a1, 0xc8cc,
9477 + 0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x0428, 0x708f,
9478 + 0x0005, 0x7007, 0x0122, 0x2001, 0x0002, 0x0030, 0x708f, 0x0002,
9479 + 0x7007, 0x0121, 0x2001, 0x0003, 0x7002, 0x7097, 0x0001, 0x0088,
9480 + 0x7007, 0x0122, 0x2001, 0x0002, 0x0020, 0x7007, 0x0121, 0x2001,
9481 + 0x0003, 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007,
9482 + 0x709a, 0xa184, 0x00ff, 0x7092, 0x00ee, 0x001e, 0x0005, 0x00e6,
9483 + 0x2071, 0xc734, 0x684c, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a,
9484 + 0xa085, 0x0001, 0x0428, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868,
9485 + 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844,
9486 + 0x7032, 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, 0x8006,
9487 + 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319,
9488 + 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006,
9489 + 0x00ee, 0x0005, 0x0156, 0x00e6, 0x0026, 0x6838, 0xd0fc, 0x1904,
9490 + 0x5863, 0x6804, 0xa00d, 0x0188, 0x00d6, 0x2071, 0xc600, 0xa016,
9491 + 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8,
9492 + 0x702e, 0x70b4, 0xa200, 0x70b6, 0x00de, 0x2071, 0xc734, 0x701c,
9493 + 0xa005, 0x1904, 0x5873, 0x20a9, 0x0032, 0x0f04, 0x5871, 0x0e04,
9494 + 0x582d, 0x2071, 0xc87b, 0x7200, 0x82ff, 0x05d8, 0x6934, 0xa186,
9495 + 0x0103, 0x1904, 0x5881, 0x6948, 0x6844, 0xa105, 0x1540, 0x2009,
9496 + 0x8020, 0x2200, 0x0002, 0x5871, 0x5848, 0x58e8, 0x58f5, 0x5871,
9497 + 0x2071, 0x0000, 0x20a9, 0x0032, 0x0f04, 0x5871, 0x7018, 0xd084,
9498 + 0x1dd8, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001,
9499 + 0x2091, 0x4080, 0x2071, 0xc600, 0x702c, 0x206a, 0x2d00, 0x702e,
9500 + 0x70b4, 0x8000, 0x70b6, 0x002e, 0x00ee, 0x015e, 0x0005, 0x6844,
9501 + 0xa086, 0x0100, 0x1130, 0x6868, 0xa005, 0x1118, 0x2009, 0x8020,
9502 + 0x0880, 0x2071, 0xc734, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000,
9503 + 0x7012, 0x7018, 0xa06d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e,
9504 + 0x0c10, 0xa18c, 0x00ff, 0xa186, 0x0013, 0x01e0, 0xa186, 0x001b,
9505 + 0x01c8, 0xa186, 0x0023, 0x01e8, 0xa186, 0x0017, 0x0130, 0xa186,
9506 + 0x001e, 0x0118, 0xa18e, 0x001f, 0x19e0, 0x684c, 0xd0cc, 0x09c8,
9507 + 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x1998, 0x2009, 0x8021,
9508 + 0x0804, 0x5841, 0x6848, 0xa005, 0x1960, 0x2009, 0x8022, 0x0804,
9509 + 0x5841, 0x2071, 0x0000, 0x7018, 0xd084, 0x1918, 0x00e6, 0x2071,
9510 + 0xc682, 0x7140, 0x00ee, 0x6838, 0xa102, 0x0a04, 0x5871, 0x684c,
9511 + 0xa005, 0x1158, 0x00e6, 0x2071, 0xc682, 0x7004, 0x00ee, 0xd08c,
9512 + 0x1904, 0x5871, 0x2001, 0x8024, 0x0040, 0x6848, 0xd084, 0x1118,
9513 + 0x2001, 0x8023, 0x0010, 0x2001, 0x8027, 0x7022, 0x6840, 0x7026,
9514 + 0x683c, 0x702a, 0x6850, 0x702e, 0x0026, 0x0036, 0x6b38, 0x2e10,
9515 + 0xa290, 0x0072, 0x2d00, 0xa080, 0x0015, 0x200c, 0x2112, 0x8000,
9516 + 0x200c, 0x8210, 0x8319, 0x1dd0, 0x003e, 0x002e, 0x0804, 0x5856,
9517 + 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, 0x5871, 0x7186, 0xae90,
9518 + 0x0003, 0xa210, 0x683c, 0x2012, 0x0080, 0x7084, 0x8008, 0xa092,
9519 + 0x000f, 0x1a04, 0x5871, 0x7186, 0xae90, 0x0003, 0x8003, 0xa210,
9520 + 0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7088, 0xa10a, 0x0a04,
9521 + 0x585a, 0x718c, 0x7084, 0xa10a, 0x0a04, 0x585a, 0x2071, 0x0000,
9522 + 0x7018, 0xd084, 0x1904, 0x585a, 0x2071, 0xc87b, 0x7000, 0xa086,
9523 + 0x0002, 0x1150, 0x080c, 0x5b75, 0x2071, 0x0000, 0x701b, 0x0001,
9524 + 0x2091, 0x4080, 0x0804, 0x585a, 0x080c, 0x5b9f, 0x2071, 0x0000,
9525 + 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x585a, 0x0006, 0x684c,
9526 + 0x0006, 0x6837, 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0,
9527 + 0x2001, 0x0000, 0x40a4, 0x000e, 0xa084, 0x00ff, 0x684e, 0x000e,
9528 + 0x684a, 0x6952, 0x0005, 0x2071, 0xc734, 0x7004, 0x0002, 0x5951,
9529 + 0x5962, 0x5b60, 0x5b61, 0x5b6e, 0x5b74, 0x5952, 0x5b51, 0x5ae7,
9530 + 0x5b3d, 0x0005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x5961, 0x2009,
9531 + 0x000d, 0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x700b,
9532 + 0x0000, 0x012e, 0x2069, 0xc93a, 0x683c, 0xa005, 0x03f8, 0x11f0,
9533 + 0x0126, 0x2091, 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xc740,
9534 + 0x2004, 0xa10a, 0x0170, 0x0e04, 0x5985, 0x2069, 0x0000, 0x6818,
9535 + 0xd084, 0x1158, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091,
9536 + 0x4080, 0x2069, 0xc93a, 0x683f, 0xffff, 0x012e, 0x2069, 0xc600,
9537 + 0x6848, 0x6968, 0xa102, 0x2069, 0xc87b, 0x688a, 0x6984, 0x701c,
9538 + 0xa06d, 0x0120, 0x81ff, 0x0904, 0x59db, 0x00a0, 0x81ff, 0x0904,
9539 + 0x5aa1, 0x2071, 0xc87b, 0x7184, 0x7088, 0xa10a, 0x1258, 0x7190,
9540 + 0x2071, 0xc93a, 0x7038, 0xa005, 0x0128, 0x1b04, 0x5aa1, 0x713a,
9541 + 0x0804, 0x5aa1, 0x2071, 0xc87b, 0x718c, 0x0126, 0x2091, 0x8000,
9542 + 0x7084, 0xa10a, 0x0a04, 0x5abc, 0x0e04, 0x5a5d, 0x2071, 0x0000,
9543 + 0x7018, 0xd084, 0x1904, 0x5a5d, 0x2001, 0xffff, 0x2071, 0xc93a,
9544 + 0x703a, 0x2071, 0xc87b, 0x7000, 0xa086, 0x0002, 0x1150, 0x080c,
9545 + 0x5b75, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804,
9546 + 0x5a5d, 0x080c, 0x5b9f, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091,
9547 + 0x4080, 0x0804, 0x5a5d, 0x2071, 0xc87b, 0x7000, 0xa005, 0x0904,
9548 + 0x5a83, 0x6934, 0xa186, 0x0103, 0x1904, 0x5a60, 0x684c, 0xd0bc,
9549 + 0x1904, 0x5a83, 0x6948, 0x6844, 0xa105, 0x1904, 0x5a78, 0x2009,
9550 + 0x8020, 0x2071, 0xc87b, 0x7000, 0x0002, 0x5a83, 0x5a43, 0x5a1b,
9551 + 0x5a2d, 0x59fa, 0x0136, 0x0146, 0x0156, 0x2099, 0xc676, 0x20a1,
9552 + 0xc8cc, 0x20a9, 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x2071,
9553 + 0xc8c3, 0xad80, 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002,
9554 + 0x700b, 0x0000, 0x2e10, 0x080c, 0x164d, 0x2071, 0xc734, 0x7007,
9555 + 0x0009, 0x0804, 0x5aa1, 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04,
9556 + 0x5aa1, 0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071,
9557 + 0xc734, 0x080c, 0x5bf6, 0x0804, 0x5aa1, 0x7084, 0x8008, 0xa092,
9558 + 0x000f, 0x1a04, 0x5aa1, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c,
9559 + 0x2012, 0x8210, 0x6840, 0x2012, 0x7186, 0x2071, 0xc734, 0x080c,
9560 + 0x5bf6, 0x0804, 0x5aa1, 0x0126, 0x2091, 0x8000, 0x0e04, 0x5a5d,
9561 + 0x2071, 0x0000, 0x7018, 0xd084, 0x1180, 0x7122, 0x683c, 0x7026,
9562 + 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x012e, 0x2071,
9563 + 0xc734, 0x080c, 0x5bf6, 0x0804, 0x5aa1, 0x012e, 0x0804, 0x5aa1,
9564 + 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118,
9565 + 0xa18e, 0x001f, 0x11c0, 0x684c, 0xd0cc, 0x01a8, 0x6850, 0xa084,
9566 + 0x00ff, 0xa086, 0x0001, 0x1178, 0x2009, 0x8021, 0x0804, 0x59f1,
9567 + 0x6844, 0xa086, 0x0100, 0x1138, 0x6868, 0xa005, 0x1120, 0x2009,
9568 + 0x8020, 0x0804, 0x59f1, 0x2071, 0xc734, 0x080c, 0x5c08, 0x01c8,
9569 + 0x2071, 0xc734, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086,
9570 + 0x0003, 0x1130, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0108, 0x710e,
9571 + 0x7007, 0x0003, 0x080c, 0x5c21, 0x7050, 0xa086, 0x0100, 0x0904,
9572 + 0x5b61, 0x0126, 0x2091, 0x8000, 0x2071, 0xc734, 0x7008, 0xa086,
9573 + 0x0001, 0x1180, 0x0e04, 0x5aba, 0x2009, 0x000d, 0x7030, 0x200a,
9574 + 0x2091, 0x4080, 0x700b, 0x0000, 0x7004, 0xa086, 0x0006, 0x1110,
9575 + 0x7007, 0x0001, 0x012e, 0x0005, 0x2071, 0xc734, 0x080c, 0x5c08,
9576 + 0x0518, 0x2071, 0xc87b, 0x7084, 0x700a, 0x20a9, 0x0020, 0x2099,
9577 + 0xc87c, 0x20a1, 0xc8a3, 0x53a3, 0x7087, 0x0000, 0x2071, 0xc734,
9578 + 0x2069, 0xc8c3, 0x706c, 0x6826, 0x7070, 0x682a, 0x7074, 0x682e,
9579 + 0x7078, 0x6832, 0x2d10, 0x080c, 0x164d, 0x7007, 0x0008, 0x2001,
9580 + 0xffff, 0x2071, 0xc93a, 0x703a, 0x012e, 0x0804, 0x5aa1, 0x2069,
9581 + 0xc8c3, 0x6808, 0xa08e, 0x0000, 0x0904, 0x5b3c, 0xa08e, 0x0200,
9582 + 0x0904, 0x5b3a, 0xa08e, 0x0100, 0x1904, 0x5b3c, 0x0126, 0x2091,
9583 + 0x8000, 0x0e04, 0x5b38, 0x2069, 0x0000, 0x6818, 0xd084, 0x15c0,
9584 + 0x702c, 0x7130, 0x8108, 0xa102, 0x0230, 0xa00e, 0x7034, 0x706e,
9585 + 0x7038, 0x7072, 0x0048, 0x706c, 0xa080, 0x0040, 0x706e, 0x1220,
9586 + 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000,
9587 + 0x2001, 0xc8a0, 0x2004, 0xa005, 0x1190, 0x6934, 0x2069, 0xc87b,
9588 + 0x689c, 0x699e, 0x2069, 0xc93a, 0xa102, 0x1118, 0x683c, 0xa005,
9589 + 0x1368, 0x2001, 0xc8a1, 0x200c, 0x810d, 0x693e, 0x0038, 0x2009,
9590 + 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001,
9591 + 0x012e, 0x0010, 0x7007, 0x0005, 0x0005, 0x2001, 0xc8c5, 0x2004,
9592 + 0xa08e, 0x0100, 0x1128, 0x7007, 0x0001, 0x080c, 0x5bf6, 0x0005,
9593 + 0xa08e, 0x0000, 0x0de0, 0xa08e, 0x0200, 0x1dc8, 0x7007, 0x0005,
9594 + 0x0005, 0x701c, 0xa06d, 0x0158, 0x080c, 0x5c08, 0x0140, 0x7007,
9595 + 0x0003, 0x080c, 0x5c21, 0x7050, 0xa086, 0x0100, 0x0110, 0x0005,
9596 + 0x0005, 0x7050, 0xa09e, 0x0100, 0x1118, 0x7007, 0x0004, 0x0030,
9597 + 0xa086, 0x0200, 0x1110, 0x7007, 0x0005, 0x0005, 0x080c, 0x5bc4,
9598 + 0x7006, 0x080c, 0x5bf6, 0x0005, 0x0005, 0x00e6, 0x0156, 0x2071,
9599 + 0xc87b, 0x7184, 0x81ff, 0x0500, 0xa006, 0x7086, 0xae80, 0x0003,
9600 + 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x0f04, 0x5b99,
9601 + 0x2014, 0x722a, 0x8000, 0x0f04, 0x5b99, 0x2014, 0x722e, 0x8000,
9602 + 0x0f04, 0x5b99, 0x2014, 0x723a, 0x8000, 0x0f04, 0x5b99, 0x2014,
9603 + 0x723e, 0xa180, 0x8030, 0x7022, 0x015e, 0x00ee, 0x0005, 0x00e6,
9604 + 0x0156, 0x2071, 0xc87b, 0x7184, 0x81ff, 0x01d8, 0xa006, 0x7086,
9605 + 0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000,
9606 + 0x2014, 0x722a, 0x8000, 0x0f04, 0x5bbb, 0x2014, 0x723a, 0x8000,
9607 + 0x2014, 0x723e, 0x0018, 0x2001, 0x8020, 0x0010, 0x2001, 0x8042,
9608 + 0x7022, 0x015e, 0x00ee, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102,
9609 + 0x0230, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0048, 0x706c,
9610 + 0xa080, 0x0040, 0x706e, 0x1220, 0x7070, 0xa081, 0x0000, 0x7072,
9611 + 0x7132, 0x700c, 0x8001, 0x700e, 0x1180, 0x0126, 0x2091, 0x8000,
9612 + 0x0e04, 0x5bf0, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001,
9613 + 0x0001, 0x700b, 0x0000, 0x012e, 0x0005, 0x2001, 0x0007, 0x0005,
9614 + 0x2001, 0x0006, 0x700b, 0x0001, 0x012e, 0x0005, 0x701c, 0xa06d,
9615 + 0x0170, 0x0126, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04,
9616 + 0x701e, 0xa005, 0x1108, 0x701a, 0x012e, 0x080c, 0x1619, 0x0005,
9617 + 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0130, 0x2304, 0x230c,
9618 + 0xa10e, 0x0110, 0xa006, 0x0060, 0x732c, 0x8319, 0x7130, 0xa102,
9619 + 0x1118, 0x2300, 0xa005, 0x0020, 0x0210, 0xa302, 0x0008, 0x8002,
9620 + 0x0005, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000,
9621 + 0x0126, 0x2091, 0x8000, 0x2009, 0xc959, 0x2104, 0xc08d, 0x200a,
9622 + 0x012e, 0x080c, 0x1669, 0x0005, 0x708c, 0xa08a, 0x0029, 0x1220,
9623 + 0xa082, 0x001d, 0x0033, 0x0010, 0x080c, 0x1519, 0x6027, 0x1e00,
9624 + 0x0005, 0x5d2f, 0x5caa, 0x5cc2, 0x5cff, 0x5d20, 0x5d5a, 0x5d6c,
9625 + 0x5cc2, 0x5d46, 0x5c4e, 0x5c7c, 0x5c4d, 0x0005, 0x00d6, 0x2069,
9626 + 0x0200, 0x6804, 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f,
9627 + 0x0028, 0x2069, 0xc90c, 0x2d04, 0x7002, 0x080c, 0x6024, 0x6028,
9628 + 0xa085, 0x0600, 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xc90c,
9629 + 0x2d04, 0x7002, 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036,
9630 + 0x0046, 0x0056, 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e,
9631 + 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804,
9632 + 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069,
9633 + 0xc90c, 0x2d04, 0x7002, 0x080c, 0x60b1, 0x6028, 0xa085, 0x0600,
9634 + 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xc90c, 0x2d04, 0x7002,
9635 + 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056,
9636 + 0x2071, 0xc96a, 0x080c, 0x1ec3, 0x005e, 0x004e, 0x003e, 0x00ee,
9637 + 0x00de, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1e4, 0x1190, 0x080c,
9638 + 0x5dd7, 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x708f,
9639 + 0x0020, 0x080c, 0x5dd7, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f,
9640 + 0x001f, 0x0005, 0x6803, 0x0088, 0x6124, 0xd1cc, 0x1590, 0xd1dc,
9641 + 0x1568, 0xd1e4, 0x1540, 0xa184, 0x1e00, 0x1580, 0x60e3, 0x0001,
9642 + 0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f52, 0x080c, 0x25fb, 0x0156,
9643 + 0x6803, 0x0100, 0x20a9, 0x0014, 0x6804, 0xd0dc, 0x1118, 0x1f04,
9644 + 0x5cdc, 0x0048, 0x20a9, 0x0014, 0x6803, 0x0080, 0x6804, 0xd0d4,
9645 + 0x1130, 0x1f04, 0x5ce6, 0x080c, 0x5f73, 0x015e, 0x0078, 0x015e,
9646 + 0x708f, 0x0028, 0x0058, 0x708f, 0x001e, 0x0040, 0x708f, 0x001d,
9647 + 0x0028, 0x708f, 0x0020, 0x0010, 0x708f, 0x001f, 0x0005, 0x60e3,
9648 + 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x5f52, 0x080c, 0x25fb,
9649 + 0x6803, 0x0080, 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4,
9650 + 0x1130, 0xa184, 0x1e00, 0x1158, 0x708f, 0x0028, 0x0040, 0x708f,
9651 + 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005,
9652 + 0x6803, 0x00a0, 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c,
9653 + 0x1f06, 0x708f, 0x001e, 0x0010, 0x708f, 0x001d, 0x0005, 0x080c,
9654 + 0x5e49, 0x6124, 0xd1dc, 0x1188, 0x080c, 0x5dd7, 0x0016, 0x080c,
9655 + 0x1f06, 0x001e, 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x708f, 0x001e,
9656 + 0x0020, 0x708f, 0x001f, 0x080c, 0x5dd7, 0x0005, 0x6803, 0x00a0,
9657 + 0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4,
9658 + 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f,
9659 + 0x0021, 0x0005, 0x080c, 0x5e49, 0x6124, 0xd1d4, 0x1150, 0xd1dc,
9660 + 0x1128, 0xd1e4, 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d,
9661 + 0x0010, 0x708f, 0x001f, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1d4,
9662 + 0x1178, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x708f,
9663 + 0x001e, 0x0040, 0x708f, 0x001d, 0x0028, 0x708f, 0x0020, 0x0010,
9664 + 0x708f, 0x001f, 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126,
9665 + 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xc600, 0x2091, 0x8000,
9666 + 0x080c, 0x5f22, 0x11e8, 0x2001, 0xc60c, 0x200c, 0xd1b4, 0x01c0,
9667 + 0xc1b4, 0x2102, 0x6027, 0x0200, 0xe000, 0xe000, 0x6024, 0xd0cc,
9668 + 0x0158, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001,
9669 + 0xc600, 0x2003, 0x0001, 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408,
9670 + 0x080c, 0x5f3e, 0x0150, 0x080c, 0x5f34, 0x1138, 0x2001, 0x0001,
9671 + 0x080c, 0x296d, 0x080c, 0x5ef9, 0x00a0, 0x080c, 0x5e46, 0x0178,
9672 + 0x2001, 0x0001, 0x080c, 0x296d, 0x708c, 0xa086, 0x001e, 0x0120,
9673 + 0x708c, 0xa086, 0x0022, 0x1118, 0x708f, 0x0025, 0x0010, 0x708f,
9674 + 0x0021, 0x012e, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026,
9675 + 0x2011, 0x5de8, 0x080c, 0x7070, 0x002e, 0x0016, 0x0026, 0x2009,
9676 + 0x0064, 0x2011, 0x5de8, 0x080c, 0x7067, 0x002e, 0x001e, 0x0005,
9677 + 0x00e6, 0x00f6, 0x0016, 0x080c, 0x8bf5, 0x2071, 0xc600, 0x080c,
9678 + 0x5d83, 0x001e, 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036,
9679 + 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0126, 0x080c, 0x8bf5, 0x2061,
9680 + 0x0100, 0x2069, 0x0140, 0x2071, 0xc600, 0x2091, 0x8000, 0x6028,
9681 + 0xc09c, 0x602a, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002,
9682 + 0x080c, 0x8f18, 0x080c, 0x8dee, 0x080c, 0x7024, 0x0036, 0x2019,
9683 + 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x080c, 0xc586,
9684 + 0x080c, 0xc5a1, 0x2001, 0xc600, 0x2003, 0x0004, 0x6027, 0x0008,
9685 + 0x080c, 0x12e1, 0x2001, 0x0001, 0x080c, 0x296d, 0x012e, 0x00fe,
9686 + 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x2001,
9687 + 0xc600, 0x2004, 0xa086, 0x0004, 0x0140, 0x2001, 0xc8e5, 0x2003,
9688 + 0xaaaa, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x0005, 0x6020, 0xd09c,
9689 + 0x0005, 0x6800, 0xa086, 0x00c0, 0x0160, 0x6803, 0x00c0, 0x0156,
9690 + 0x20a9, 0x002d, 0x1d04, 0x5e52, 0x2091, 0x6000, 0x1f04, 0x5e52,
9691 + 0x015e, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069,
9692 + 0x0140, 0x2071, 0xc600, 0x2001, 0xc8e6, 0x200c, 0xa186, 0x0000,
9693 + 0x0158, 0xa186, 0x0001, 0x0158, 0xa186, 0x0002, 0x0158, 0xa186,
9694 + 0x0003, 0x0158, 0x0804, 0x5ee7, 0x708f, 0x0022, 0x0040, 0x708f,
9695 + 0x0021, 0x0028, 0x708f, 0x0023, 0x0020, 0x708f, 0x0024, 0x6043,
9696 + 0x0000, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c,
9697 + 0x2a1c, 0x0026, 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002,
9698 + 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036, 0x2019, 0x0000, 0x080c,
9699 + 0x8e79, 0x003e, 0x002e, 0x7000, 0xa08e, 0x0004, 0x0118, 0x602b,
9700 + 0x0028, 0x0010, 0x602b, 0x0020, 0x0156, 0x0126, 0x2091, 0x8000,
9701 + 0x20a9, 0x0005, 0x6024, 0xd0ac, 0x0120, 0x012e, 0x015e, 0x0804,
9702 + 0x5ef5, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6904, 0xd1d4,
9703 + 0x1130, 0x6803, 0x0100, 0x1f04, 0x5eaa, 0x080c, 0x5f73, 0x012e,
9704 + 0x015e, 0x080c, 0x5f34, 0x01a8, 0x6044, 0xa005, 0x0168, 0x6050,
9705 + 0x0006, 0xa085, 0x0020, 0x6052, 0x080c, 0x5f73, 0xa006, 0x8001,
9706 + 0x1df0, 0x000e, 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c,
9707 + 0x5f73, 0x0016, 0x0026, 0x2009, 0x00c8, 0x2011, 0x5df5, 0x080c,
9708 + 0x7036, 0x002e, 0x001e, 0x2001, 0xc8e6, 0x2003, 0x0004, 0x080c,
9709 + 0x5c34, 0x080c, 0x5f34, 0x0148, 0x6804, 0xd0d4, 0x1130, 0xd0dc,
9710 + 0x1100, 0x2001, 0xc8e6, 0x2003, 0x0000, 0x00ee, 0x00de, 0x00ce,
9711 + 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140,
9712 + 0x2071, 0xc600, 0x2001, 0xc8e5, 0x2003, 0x0000, 0x2001, 0xc8d6,
9713 + 0x2003, 0x0000, 0x708f, 0x0000, 0x60e3, 0x0000, 0x6887, 0x0000,
9714 + 0x2001, 0x0000, 0x080c, 0x2a1c, 0x6803, 0x0000, 0x6043, 0x0090,
9715 + 0x6043, 0x0010, 0x6027, 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de,
9716 + 0x00ce, 0x0005, 0x0006, 0x2001, 0xc8e5, 0x2004, 0xa086, 0xaaaa,
9717 + 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004, 0xa084, 0x0030,
9718 + 0xa086, 0x0000, 0x000e, 0x0005, 0x0006, 0x2001, 0xc672, 0x2004,
9719 + 0xa084, 0x0030, 0xa086, 0x0030, 0x000e, 0x0005, 0x0006, 0x2001,
9720 + 0xc672, 0x2004, 0xa084, 0x0030, 0xa086, 0x0010, 0x000e, 0x0005,
9721 + 0x0006, 0x2001, 0xc672, 0x2004, 0xa084, 0x0030, 0xa086, 0x0020,
9722 + 0x000e, 0x0005, 0x2001, 0xc60c, 0x2004, 0xd0a4, 0x0170, 0x080c,
9723 + 0x2a3c, 0x0036, 0x0016, 0x2009, 0x0000, 0x2019, 0x0028, 0x080c,
9724 + 0x2e19, 0x001e, 0x003e, 0xa006, 0x0009, 0x0005, 0x00e6, 0x2071,
9725 + 0xc60c, 0x2e04, 0x0118, 0xa085, 0x0010, 0x0010, 0xa084, 0xffef,
9726 + 0x2072, 0x00ee, 0x0005, 0x6050, 0x0006, 0x60f0, 0x0006, 0x60ec,
9727 + 0x0006, 0x600c, 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, 0x602f,
9728 + 0x0100, 0x602f, 0x0000, 0x602f, 0x0040, 0x602f, 0x0000, 0x000e,
9729 + 0x602a, 0x000e, 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, 0x000e,
9730 + 0x60f2, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c,
9731 + 0x2a1c, 0x6800, 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6803, 0x00a0,
9732 + 0x000e, 0x6052, 0x6050, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036,
9733 + 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071,
9734 + 0xc600, 0x6020, 0xa084, 0x0080, 0x0138, 0x2001, 0xc60c, 0x200c,
9735 + 0xc1bd, 0x2102, 0x0804, 0x601c, 0x2001, 0xc60c, 0x200c, 0xc1bc,
9736 + 0x2102, 0x6028, 0xa084, 0xe1ff, 0x602a, 0x6027, 0x0200, 0x6803,
9737 + 0x0090, 0x20a9, 0x0384, 0x6024, 0xd0cc, 0x1508, 0x1d04, 0x5fcb,
9738 + 0x2091, 0x6000, 0x1f04, 0x5fcb, 0x2011, 0x0003, 0x080c, 0x8f0e,
9739 + 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x2019, 0x0000,
9740 + 0x080c, 0x8e79, 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001,
9741 + 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001, 0x0468, 0x86ff,
9742 + 0x1120, 0x080c, 0x1f06, 0x080c, 0x25fb, 0x60e3, 0x0000, 0x2001,
9743 + 0xc8d6, 0x2004, 0x080c, 0x2a1c, 0x60e2, 0x6803, 0x0080, 0x20a9,
9744 + 0x0384, 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c,
9745 + 0x0138, 0x1d04, 0x6001, 0x2091, 0x6000, 0x1f04, 0x6001, 0x0820,
9746 + 0x6028, 0xa085, 0x1e00, 0x602a, 0x70a4, 0xa005, 0x1118, 0x6887,
9747 + 0x0001, 0x0008, 0x6886, 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e,
9748 + 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036,
9749 + 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xc600, 0x2069,
9750 + 0x0140, 0x6020, 0xa084, 0x00c0, 0x0120, 0x6884, 0xa005, 0x1904,
9751 + 0x6078, 0x6803, 0x0088, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001,
9752 + 0x0000, 0x080c, 0x2a1c, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118,
9753 + 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfbff, 0x602a, 0x6027,
9754 + 0x0400, 0x2069, 0xc90c, 0x7000, 0x206a, 0x708f, 0x0026, 0x7003,
9755 + 0x0001, 0x20a9, 0x0002, 0x1d04, 0x605b, 0x2091, 0x6000, 0x1f04,
9756 + 0x605b, 0x0804, 0x60a9, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027,
9757 + 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0520, 0xa084,
9758 + 0x1a00, 0x1508, 0x1d04, 0x6067, 0x2091, 0x6000, 0x1f04, 0x6067,
9759 + 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18,
9760 + 0x080c, 0x8dee, 0x2019, 0x0000, 0x080c, 0x8e79, 0x6803, 0x00a0,
9761 + 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001,
9762 + 0xa085, 0x0001, 0x00b0, 0x080c, 0x25fb, 0x6803, 0x0080, 0x2069,
9763 + 0x0140, 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001,
9764 + 0x0008, 0x6886, 0x2001, 0xc8d6, 0x2004, 0x080c, 0x2a1c, 0x60e2,
9765 + 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e,
9766 + 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6,
9767 + 0x2061, 0x0100, 0x2071, 0xc600, 0x6020, 0xa084, 0x00c0, 0x01e0,
9768 + 0x2011, 0x0003, 0x080c, 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18,
9769 + 0x080c, 0x8dee, 0x2019, 0x0000, 0x080c, 0x8e79, 0x2069, 0x0140,
9770 + 0x6803, 0x00a0, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600,
9771 + 0x2003, 0x0001, 0x0804, 0x614e, 0x2001, 0xc60c, 0x200c, 0xd1b4,
9772 + 0x1160, 0xc1b5, 0x2102, 0x080c, 0x5ddd, 0x2069, 0x0140, 0x080c,
9773 + 0x25fb, 0x6803, 0x0080, 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804,
9774 + 0xa005, 0x1118, 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfdff,
9775 + 0x602a, 0x6027, 0x0200, 0x2069, 0xc90c, 0x7000, 0x206a, 0x708f,
9776 + 0x0027, 0x7003, 0x0001, 0x20a9, 0x0002, 0x1d04, 0x6105, 0x2091,
9777 + 0x6000, 0x1f04, 0x6105, 0x0804, 0x614e, 0x6027, 0x1e00, 0x2009,
9778 + 0x1e00, 0xe000, 0x6024, 0xa10c, 0x01c8, 0xa084, 0x1c00, 0x11b0,
9779 + 0x1d04, 0x610d, 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c,
9780 + 0x6f0a, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071,
9781 + 0xc93a, 0x7018, 0x00ee, 0xa005, 0x1d00, 0x0500, 0x0026, 0x2011,
9782 + 0x5df5, 0x080c, 0x6fad, 0x2011, 0x5de8, 0x080c, 0x7070, 0x002e,
9783 + 0x2069, 0x0140, 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887,
9784 + 0x0001, 0x0008, 0x6886, 0x2001, 0xc8d6, 0x2004, 0x080c, 0x2a1c,
9785 + 0x60e2, 0x2001, 0xc60c, 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de,
9786 + 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016,
9787 + 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071,
9788 + 0xc600, 0x7130, 0xd184, 0x1180, 0x2011, 0xc653, 0x2214, 0xd2ec,
9789 + 0x0138, 0xc18d, 0x7132, 0x2011, 0xc653, 0x2214, 0xd2ac, 0x1120,
9790 + 0x7030, 0xd08c, 0x0904, 0x61bb, 0x7130, 0xc185, 0x7132, 0x2011,
9791 + 0xc653, 0x220c, 0xd1a4, 0x0530, 0x0016, 0x2019, 0x000e, 0x080c,
9792 + 0xc10d, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, 0xa186, 0x007e,
9793 + 0x01a0, 0xa186, 0x0080, 0x0188, 0x080c, 0x533d, 0x1170, 0x8127,
9794 + 0xa006, 0x0016, 0x2009, 0x000e, 0x080c, 0xc190, 0x2009, 0x0001,
9795 + 0x2011, 0x0100, 0x080c, 0x712e, 0x001e, 0x8108, 0x1f04, 0x6186,
9796 + 0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019,
9797 + 0x0004, 0x080c, 0x2e19, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f,
9798 + 0x2009, 0x0000, 0x080c, 0x533d, 0x1110, 0x080c, 0x4f47, 0x8108,
9799 + 0x1f04, 0x61b2, 0x015e, 0x080c, 0x1f06, 0x2011, 0x0003, 0x080c,
9800 + 0x8f0e, 0x2011, 0x0002, 0x080c, 0x8f18, 0x080c, 0x8dee, 0x0036,
9801 + 0x2019, 0x0000, 0x080c, 0x8e79, 0x003e, 0x60e3, 0x0000, 0x2001,
9802 + 0xc600, 0x2003, 0x0001, 0x080c, 0x5e5a, 0x00ee, 0x00ce, 0x004e,
9803 + 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x2071, 0xc702, 0x7003,
9804 + 0x0000, 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f,
9805 + 0x0000, 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083,
9806 + 0x0000, 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x0005,
9807 + 0x00e6, 0x2071, 0xc702, 0x6848, 0xa005, 0x1130, 0x7028, 0xc085,
9808 + 0x702a, 0xa085, 0x0001, 0x0428, 0x6a50, 0x7236, 0x6b54, 0x733a,
9809 + 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e,
9810 + 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006,
9811 + 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272,
9812 + 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000,
9813 + 0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc702, 0x7004, 0x0043,
9814 + 0x700c, 0x0002, 0x6237, 0x622e, 0x622e, 0x622e, 0x622e, 0x0005,
9815 + 0x628d, 0x628e, 0x62c0, 0x62c1, 0x628b, 0x630f, 0x6314, 0x6345,
9816 + 0x6346, 0x6361, 0x6362, 0x6363, 0x6364, 0x6365, 0x6366, 0x6431,
9817 + 0x6458, 0x700c, 0x0002, 0x6250, 0x628b, 0x628b, 0x628c, 0x628c,
9818 + 0x7830, 0x7930, 0xa106, 0x0120, 0x7830, 0x7930, 0xa106, 0x1510,
9819 + 0x7030, 0xa10a, 0x01f8, 0x1210, 0x712c, 0xa10a, 0xa18a, 0x0002,
9820 + 0x12d0, 0x080c, 0x15e5, 0x01b0, 0x2d00, 0x705a, 0x7063, 0x0040,
9821 + 0x2001, 0x0003, 0x7057, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000,
9822 + 0x2009, 0xc959, 0x2104, 0xc085, 0x200a, 0x000e, 0x700e, 0x012e,
9823 + 0x080c, 0x1669, 0x0005, 0x080c, 0x15e5, 0x0de0, 0x2d00, 0x705a,
9824 + 0x080c, 0x15e5, 0x1108, 0x0c10, 0x2d00, 0x7086, 0x7063, 0x0080,
9825 + 0x2001, 0x0004, 0x08f8, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002,
9826 + 0x6295, 0x6298, 0x62a6, 0x62bf, 0x62bf, 0x080c, 0x6249, 0x0005,
9827 + 0x0126, 0x8001, 0x700e, 0x7058, 0x0006, 0x080c, 0x67d4, 0x0120,
9828 + 0x2091, 0x8000, 0x080c, 0x6249, 0x00de, 0x0048, 0x0126, 0x8001,
9829 + 0x700e, 0x080c, 0x67d4, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
9830 + 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x003a,
9831 + 0x1218, 0x00db, 0x012e, 0x0005, 0x012e, 0x080c, 0x6367, 0x0005,
9832 + 0x0005, 0x0005, 0x00e6, 0x2071, 0xc702, 0x700c, 0x0002, 0x62cc,
9833 + 0x62cc, 0x62cc, 0x62ce, 0x62d1, 0x00ee, 0x0005, 0x700f, 0x0001,
9834 + 0x0010, 0x700f, 0x0002, 0x00ee, 0x0005, 0x6367, 0x6367, 0x6383,
9835 + 0x6367, 0x653e, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6383,
9836 + 0x6580, 0x65c3, 0x660c, 0x6620, 0x6367, 0x6367, 0x639f, 0x6383,
9837 + 0x63b3, 0x6367, 0x640e, 0x66cc, 0x66e7, 0x6367, 0x639f, 0x6367,
9838 + 0x63b3, 0x6367, 0x6367, 0x6404, 0x66e7, 0x6367, 0x6367, 0x6367,
9839 + 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x63c8, 0x6367,
9840 + 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367, 0x6367,
9841 + 0x6866, 0x6367, 0x67f2, 0x6367, 0x67f2, 0x6367, 0x63dd, 0x7020,
9842 + 0x2068, 0x080c, 0x1619, 0x0005, 0x700c, 0x0002, 0x631b, 0x631e,
9843 + 0x632c, 0x6344, 0x6344, 0x080c, 0x6249, 0x0005, 0x0126, 0x8001,
9844 + 0x700e, 0x7058, 0x0006, 0x080c, 0x67d4, 0x0120, 0x2091, 0x8000,
9845 + 0x080c, 0x6249, 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c,
9846 + 0x67d4, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807,
9847 + 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a, 0x1218, 0x003b,
9848 + 0x012e, 0x0005, 0x012e, 0x0419, 0x0005, 0x0005, 0x0005, 0x6367,
9849 + 0x6383, 0x652a, 0x6367, 0x6383, 0x6367, 0x6383, 0x6383, 0x6367,
9850 + 0x6383, 0x652a, 0x6383, 0x6383, 0x6383, 0x6383, 0x6383, 0x6367,
9851 + 0x6383, 0x652a, 0x6367, 0x6367, 0x6383, 0x6367, 0x6367, 0x6367,
9852 + 0x6383, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x7007,
9853 + 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x0126, 0x2091,
9854 + 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838,
9855 + 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c,
9856 + 0x580a, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff,
9857 + 0xc0ed, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e,
9858 + 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a,
9859 + 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x6834,
9860 + 0x8007, 0xa084, 0x00ff, 0x0988, 0x8001, 0x1120, 0x7007, 0x0001,
9861 + 0x0804, 0x64c1, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a,
9862 + 0x704b, 0x64c1, 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904,
9863 + 0x6375, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x64de, 0x7007,
9864 + 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x64de, 0x0005,
9865 + 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, 0x6375, 0x8001, 0x1120,
9866 + 0x7007, 0x0001, 0x0804, 0x6507, 0x7007, 0x0006, 0x7012, 0x2d00,
9867 + 0x7016, 0x701a, 0x704b, 0x6507, 0x0005, 0x6834, 0x8007, 0xa084,
9868 + 0x00ff, 0xa086, 0x0001, 0x1904, 0x6375, 0x7007, 0x0001, 0x2009,
9869 + 0xc631, 0x210c, 0x81ff, 0x11a8, 0x6838, 0xa084, 0x00ff, 0x683a,
9870 + 0x6853, 0x0000, 0x080c, 0x5116, 0x1108, 0x0005, 0x0126, 0x2091,
9871 + 0x8000, 0x6837, 0x0139, 0x684a, 0x6952, 0x080c, 0x580a, 0x012e,
9872 + 0x0ca0, 0x2001, 0x0028, 0x0c90, 0x684c, 0xa084, 0x00c0, 0xa086,
9873 + 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x66ff, 0x2d00, 0x7016,
9874 + 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, 0xc72d,
9875 + 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x1a04, 0x6391, 0x6a84,
9876 + 0xa28a, 0x0002, 0x1a04, 0x6391, 0x82ff, 0x1138, 0x6888, 0x698c,
9877 + 0xa105, 0x0118, 0x2001, 0x6494, 0x0018, 0xa280, 0x648a, 0x2005,
9878 + 0x70c6, 0x7010, 0xa015, 0x0904, 0x6476, 0x080c, 0x15e5, 0x1118,
9879 + 0x7007, 0x000f, 0x0005, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x2c05,
9880 + 0x6836, 0xe004, 0xad00, 0x7096, 0xe008, 0xa20a, 0x1210, 0xa00e,
9881 + 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0xa296, 0x0004, 0x0108,
9882 + 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x080c, 0x164d,
9883 + 0x7090, 0xa08e, 0x0100, 0x0170, 0xa086, 0x0200, 0x0118, 0x7007,
9884 + 0x0010, 0x0005, 0x7020, 0x2068, 0x080c, 0x1619, 0x7014, 0x2068,
9885 + 0x0804, 0x6391, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000,
9886 + 0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x6431, 0x7014, 0x2068,
9887 + 0x7007, 0x0001, 0x6884, 0xa005, 0x1128, 0x6888, 0x698c, 0xa105,
9888 + 0x0108, 0x00b1, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0904,
9889 + 0x66ff, 0x04b8, 0x648c, 0x6490, 0x0002, 0x0011, 0x0007, 0x0004,
9890 + 0x000a, 0x000f, 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, 0x0004,
9891 + 0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6f88, 0x6e8c, 0x6804,
9892 + 0x2060, 0xacf0, 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, 0x700c,
9893 + 0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, 0x7e0e,
9894 + 0x7f0a, 0x8109, 0x0128, 0xaef2, 0x0004, 0xaffa, 0x0006, 0x0c78,
9895 + 0x6004, 0xa065, 0x1d30, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x00fe,
9896 + 0x0005, 0x2009, 0xc631, 0x210c, 0x81ff, 0x1198, 0x6838, 0xa084,
9897 + 0x00ff, 0x683a, 0x080c, 0x4fa6, 0x1108, 0x0005, 0x080c, 0x592e,
9898 + 0x0126, 0x2091, 0x8000, 0x080c, 0xaf03, 0x080c, 0x580a, 0x012e,
9899 + 0x0ca0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c80, 0x2009, 0xc631,
9900 + 0x210c, 0x81ff, 0x11d8, 0x6858, 0xa005, 0x01d8, 0x2001, 0xc756,
9901 + 0x2004, 0xa086, 0x0000, 0x01c0, 0x6838, 0xa084, 0x00ff, 0x683a,
9902 + 0x6853, 0x0000, 0x080c, 0x5068, 0x1108, 0x0005, 0x684a, 0x0126,
9903 + 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0cb8, 0x2001, 0x0028,
9904 + 0x0ca8, 0x2001, 0x0000, 0x0c90, 0x2001, 0x002c, 0x0c78, 0x2009,
9905 + 0xc631, 0x210c, 0x81ff, 0x11b0, 0x6858, 0xa005, 0x01c0, 0x6838,
9906 + 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x080c, 0x50ba, 0x1108,
9907 + 0x0005, 0x0126, 0x2091, 0x8000, 0x684a, 0x6952, 0x080c, 0x580a,
9908 + 0x012e, 0x0cb0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c90, 0x2001,
9909 + 0x0000, 0x0c78, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a,
9910 + 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0006, 0x0030, 0x7014,
9911 + 0x2068, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, 0x0001,
9912 + 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9,
9913 + 0x0001, 0xa096, 0x0001, 0x01b0, 0x2009, 0x0000, 0x20a9, 0x00ff,
9914 + 0xa096, 0x0002, 0x0178, 0xa005, 0x11f0, 0x6944, 0x810f, 0xa18c,
9915 + 0x00ff, 0x080c, 0x533d, 0x11b8, 0x0066, 0x6e50, 0x080c, 0x543c,
9916 + 0x006e, 0x0088, 0x0046, 0x2011, 0xc60c, 0x2224, 0xc484, 0x2412,
9917 + 0x004e, 0x00c6, 0x080c, 0x533d, 0x1110, 0x080c, 0x559d, 0x8108,
9918 + 0x1f04, 0x656a, 0x00ce, 0x684c, 0xd084, 0x1118, 0x080c, 0x1619,
9919 + 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e, 0x0005,
9920 + 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xc653, 0x2004,
9921 + 0xd0a4, 0x0580, 0x2061, 0xc9bc, 0x6100, 0xd184, 0x0178, 0x6858,
9922 + 0xa084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0xa005,
9923 + 0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001,
9924 + 0x6860, 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858,
9925 + 0xa084, 0x00ff, 0x0178, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff,
9926 + 0x0148, 0x600a, 0x6858, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e,
9927 + 0x0804, 0x67c3, 0x012e, 0x0804, 0x67bd, 0x012e, 0x0804, 0x67b7,
9928 + 0x012e, 0x0804, 0x67ba, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001,
9929 + 0x2001, 0xc653, 0x2004, 0xd0a4, 0x05e0, 0x2061, 0xc9bc, 0x6000,
9930 + 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0x6c48, 0xa484,
9931 + 0x0003, 0x0170, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x1120, 0x2100,
9932 + 0xa210, 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0xa212, 0x02f0,
9933 + 0xa484, 0x000c, 0x0188, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082,
9934 + 0x0004, 0x1120, 0x2100, 0xa318, 0x0288, 0x0030, 0xa082, 0x0004,
9935 + 0x1168, 0x2100, 0xa31a, 0x0250, 0x6860, 0xa005, 0x0110, 0x8000,
9936 + 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, 0x67c3, 0x012e, 0x0804,
9937 + 0x67c0, 0x012e, 0x0804, 0x67bd, 0x0126, 0x2091, 0x8000, 0x7007,
9938 + 0x0001, 0x2061, 0xc9bc, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318,
9939 + 0x0220, 0x630a, 0x012e, 0x0804, 0x67d1, 0x012e, 0x0804, 0x67c0,
9940 + 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac,
9941 + 0x0148, 0x00c6, 0x2061, 0xc9bc, 0x6000, 0xa084, 0xfcff, 0x6002,
9942 + 0x00ce, 0x0448, 0x6858, 0xa005, 0x05d0, 0x685c, 0xa065, 0x0598,
9943 + 0x2001, 0xc631, 0x2004, 0xa005, 0x0118, 0x080c, 0xae54, 0x0068,
9944 + 0x6013, 0x0400, 0x6057, 0x0000, 0x694c, 0xd1a4, 0x0110, 0x6950,
9945 + 0x6156, 0x2009, 0x0041, 0x080c, 0x9613, 0x6958, 0xa18c, 0xff00,
9946 + 0xa186, 0x2000, 0x1140, 0x0026, 0x2009, 0x0000, 0x2011, 0xfdff,
9947 + 0x080c, 0x712e, 0x002e, 0x684c, 0xd0c4, 0x0148, 0x2061, 0xc9bc,
9948 + 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce,
9949 + 0x012e, 0x0804, 0x67c3, 0x00ce, 0x012e, 0x0804, 0x67bd, 0x6954,
9950 + 0xa186, 0x002e, 0x0d40, 0xa186, 0x002d, 0x0d28, 0xa186, 0x0045,
9951 + 0x0528, 0xa186, 0x002a, 0x1130, 0x2001, 0xc60c, 0x200c, 0xc194,
9952 + 0x2102, 0x08c8, 0xa186, 0x0020, 0x0170, 0xa186, 0x0029, 0x1d18,
9953 + 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x533d, 0x1960, 0x6000,
9954 + 0xc0e4, 0x6002, 0x0840, 0x685c, 0xa065, 0x09a8, 0x6007, 0x0024,
9955 + 0x2001, 0xc8fd, 0x2004, 0x6016, 0x0804, 0x665b, 0x685c, 0xa065,
9956 + 0x0950, 0x00e6, 0x6860, 0xa075, 0x2001, 0xc631, 0x2004, 0xa005,
9957 + 0x0150, 0x080c, 0xae54, 0x8eff, 0x0118, 0x2e60, 0x080c, 0xae54,
9958 + 0x00ee, 0x0804, 0x665b, 0x6020, 0xc0dc, 0xc0d5, 0x6022, 0x2e60,
9959 + 0x6007, 0x003a, 0x6870, 0xa005, 0x0130, 0x6007, 0x003b, 0x6874,
9960 + 0x602a, 0x6878, 0x6012, 0x6003, 0x0001, 0x080c, 0x7999, 0x080c,
9961 + 0x7e94, 0x00ee, 0x0804, 0x665b, 0x2061, 0xc9bc, 0x6000, 0xd084,
9962 + 0x0190, 0xd08c, 0x1904, 0x67d1, 0x0126, 0x2091, 0x8000, 0x6204,
9963 + 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x67d1, 0x012e, 0x6853,
9964 + 0x0016, 0x0804, 0x67ca, 0x6853, 0x0007, 0x0804, 0x67ca, 0x6834,
9965 + 0x8007, 0xa084, 0x00ff, 0x1118, 0x080c, 0x6375, 0x0078, 0x2030,
9966 + 0x8001, 0x1120, 0x7007, 0x0001, 0x0051, 0x0040, 0x7007, 0x0006,
9967 + 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x66ff, 0x0005, 0x00e6,
9968 + 0x0126, 0x2091, 0x8000, 0xa03e, 0x2009, 0xc631, 0x210c, 0x81ff,
9969 + 0x1904, 0x677d, 0x2009, 0xc60c, 0x210c, 0xd194, 0x1904, 0x67a7,
9970 + 0x6848, 0x2070, 0xae82, 0xce00, 0x0a04, 0x6771, 0x2001, 0xc617,
9971 + 0x2004, 0xae02, 0x1a04, 0x6771, 0x711c, 0xa186, 0x0006, 0x1904,
9972 + 0x6760, 0x7018, 0xa005, 0x0904, 0x677d, 0x2004, 0xd0e4, 0x1904,
9973 + 0x67a2, 0x2061, 0xc9bc, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001,
9974 + 0x1550, 0x7020, 0xd0dc, 0x1904, 0x67aa, 0x6853, 0x0000, 0x6803,
9975 + 0x0000, 0x2d08, 0x7010, 0xa005, 0x1158, 0x7112, 0x684c, 0xd0f4,
9976 + 0x1904, 0x67ad, 0x2e60, 0x080c, 0x708a, 0x012e, 0x00ee, 0x0005,
9977 + 0x2068, 0x6800, 0xa005, 0x1de0, 0x6902, 0x2168, 0x684c, 0xd0f4,
9978 + 0x1904, 0x67ad, 0x012e, 0x00ee, 0x0005, 0x012e, 0x00ee, 0x6853,
9979 + 0x0006, 0x0804, 0x67ca, 0xd184, 0x0dc0, 0xd1c4, 0x11a8, 0x00b8,
9980 + 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x533d, 0x15d8, 0x6000,
9981 + 0xd0e4, 0x15c0, 0x711c, 0xa186, 0x0007, 0x1118, 0x6853, 0x0002,
9982 + 0x0498, 0x6853, 0x0008, 0x0480, 0x6853, 0x000e, 0x0468, 0x6853,
9983 + 0x0017, 0x0450, 0x6853, 0x0035, 0x0438, 0x2001, 0xc672, 0x2004,
9984 + 0xd0fc, 0x01e8, 0x6848, 0x2070, 0xae82, 0xce00, 0x02c0, 0x605c,
9985 + 0xae02, 0x12a8, 0x711c, 0xa186, 0x0006, 0x1188, 0x7018, 0xa005,
9986 + 0x0170, 0x2004, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0xa086,
9987 + 0x0007, 0x1904, 0x670a, 0x7003, 0x0002, 0x0804, 0x670a, 0x6853,
9988 + 0x0028, 0x0010, 0x6853, 0x0029, 0x012e, 0x00ee, 0x0418, 0x6853,
9989 + 0x002a, 0x0cd0, 0x6853, 0x0045, 0x0cb8, 0x2e60, 0x2019, 0x0002,
9990 + 0x6017, 0x0014, 0x080c, 0xbd55, 0x012e, 0x00ee, 0x0005, 0x2009,
9991 + 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028,
9992 + 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00,
9993 + 0xa105, 0x6856, 0x0126, 0x2091, 0x8000, 0x080c, 0x580a, 0x012e,
9994 + 0x0005, 0x080c, 0x1619, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102,
9995 + 0x0230, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0058, 0x7070,
9996 + 0xa080, 0x0040, 0x7072, 0x1230, 0x7074, 0xa081, 0x0000, 0x7076,
9997 + 0xa085, 0x0001, 0x7932, 0x7132, 0x0005, 0x00d6, 0x080c, 0x7081,
9998 + 0x00de, 0x0005, 0x2001, 0xc756, 0x2004, 0xa086, 0x0000, 0x0904,
9999 + 0x684d, 0x080c, 0x768f, 0x0904, 0x6850, 0x6868, 0xa084, 0x0007,
10000 + 0x0904, 0x6844, 0x080c, 0x958d, 0x0904, 0x6847, 0x2d00, 0x6012,
10001 + 0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x1198, 0x2001, 0xc8e5,
10002 + 0x2004, 0xa086, 0xaaaa, 0x0130, 0x2001, 0xc635, 0x2004, 0xa084,
10003 + 0x0028, 0x05c8, 0x6008, 0xc0fd, 0x600a, 0x2001, 0xc8d3, 0x2004,
10004 + 0x0098, 0x6870, 0xa084, 0x00ff, 0x696c, 0xa18c, 0xff00, 0xa105,
10005 + 0x696c, 0xa18c, 0x00ff, 0x080c, 0x29c7, 0x11e0, 0x00c6, 0x080c,
10006 + 0x533d, 0x2c00, 0x00ce, 0x11b0, 0x601a, 0x601f, 0x0001, 0x2009,
10007 + 0x0040, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0035, 0x0110, 0x2009,
10008 + 0x0041, 0x080c, 0x9613, 0x0005, 0x684b, 0x0101, 0x0078, 0x684b,
10009 + 0x002c, 0x0060, 0x684b, 0x0028, 0x0080, 0x684b, 0x0104, 0x0030,
10010 + 0x684b, 0x0105, 0x0018, 0x684b, 0x0106, 0x0038, 0x0126, 0x2091,
10011 + 0x8000, 0x080c, 0x580a, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000,
10012 + 0x080c, 0x580a, 0x012e, 0x080c, 0x95e3, 0x0005, 0x00d6, 0x00c6,
10013 + 0x0036, 0x0026, 0x0016, 0x7007, 0x0001, 0x6a44, 0xa282, 0x0004,
10014 + 0x1a04, 0x68b1, 0xd284, 0x0170, 0x6a4c, 0xa290, 0xc77b, 0x2204,
10015 + 0xa065, 0x6004, 0x05e0, 0x8007, 0xa084, 0x00ff, 0xa084, 0x0006,
10016 + 0x1108, 0x04a8, 0x2c10, 0x080c, 0x958d, 0x1118, 0x080c, 0xaf0d,
10017 + 0x05a0, 0x621a, 0x6844, 0x0002, 0x6890, 0x6895, 0x6898, 0x689e,
10018 + 0x2019, 0x0002, 0x080c, 0xc10d, 0x0060, 0x080c, 0xc0a4, 0x0048,
10019 + 0x2019, 0x0002, 0x6950, 0x080c, 0xc0bf, 0x0018, 0x6950, 0x080c,
10020 + 0xc0a4, 0x080c, 0x95e3, 0x6857, 0x0000, 0x0126, 0x2091, 0x8000,
10021 + 0x080c, 0x580a, 0x012e, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00de,
10022 + 0x0005, 0x6857, 0x0006, 0x0c88, 0x6857, 0x0002, 0x0c70, 0x6857,
10023 + 0x0005, 0x0c58, 0x6857, 0x0004, 0x0c40, 0x6857, 0x0007, 0x0c28,
10024 + 0x00d6, 0x2011, 0x0004, 0x2204, 0xa085, 0x8002, 0x2012, 0x00de,
10025 + 0x0005, 0x20e1, 0x0002, 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084,
10026 + 0x7000, 0x0118, 0xa086, 0x1000, 0x15e0, 0x20e1, 0x0000, 0x3d00,
10027 + 0xa094, 0xff00, 0x8217, 0xa084, 0xf000, 0xa086, 0x3000, 0x1160,
10028 + 0xa184, 0xff00, 0x8007, 0xa086, 0x0008, 0x1558, 0x080c, 0x2f69,
10029 + 0x1540, 0x080c, 0x6b32, 0x0400, 0x20e1, 0x0004, 0x3d60, 0xd1bc,
10030 + 0x1170, 0x2100, 0xa084, 0xff00, 0xa086, 0x0500, 0x1138, 0x0026,
10031 + 0x2c10, 0x080c, 0x6d90, 0x002e, 0x01a0, 0x0070, 0x3e60, 0xac84,
10032 + 0x0007, 0x1178, 0xac82, 0xce00, 0x0260, 0x685c, 0xac02, 0x1248,
10033 + 0x2009, 0x0047, 0x080c, 0x9613, 0x7a1c, 0xd284, 0x1904, 0x68c9,
10034 + 0x0005, 0xa016, 0x080c, 0x1870, 0x0cb8, 0x0cd8, 0x781c, 0xd08c,
10035 + 0x0500, 0x0156, 0x0136, 0x0146, 0x20e1, 0x3000, 0x3d20, 0x3e28,
10036 + 0xa584, 0x0076, 0x1538, 0xa484, 0x7000, 0xa086, 0x1000, 0x11a8,
10037 + 0x080c, 0x6991, 0x01f8, 0x20e1, 0x3000, 0x7828, 0x7828, 0x080c,
10038 + 0x69ad, 0x014e, 0x013e, 0x015e, 0x2009, 0xc92f, 0x2104, 0xa005,
10039 + 0x1108, 0x0005, 0x080c, 0x7e94, 0x0ce0, 0xa484, 0x7000, 0x1548,
10040 + 0x080c, 0x6991, 0x01d8, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100,
10041 + 0x0d10, 0x00a0, 0xd5a4, 0x0178, 0x0056, 0x0046, 0x080c, 0x1f2d,
10042 + 0x080c, 0x25fb, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202,
10043 + 0x004e, 0x005e, 0x0048, 0x04a9, 0x6887, 0x0000, 0x080c, 0xc536,
10044 + 0x20e1, 0x3000, 0x7828, 0x7828, 0x00b9, 0x014e, 0x013e, 0x015e,
10045 + 0x0880, 0x0439, 0x1130, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100,
10046 + 0x1d68, 0x080c, 0xc536, 0x20e1, 0x3000, 0x7828, 0x7828, 0x0056,
10047 + 0x080c, 0x6e1f, 0x005e, 0x0c40, 0x2001, 0xc60e, 0x2004, 0xd08c,
10048 + 0x0178, 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1148, 0x0026,
10049 + 0x0036, 0x2011, 0x8048, 0x2518, 0x080c, 0x407d, 0x003e, 0x002e,
10050 + 0x0005, 0xa484, 0x01ff, 0x6886, 0xa005, 0x0160, 0xa080, 0x001f,
10051 + 0xa084, 0x03f8, 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a,
10052 + 0x53a5, 0x0005, 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099,
10053 + 0x020a, 0x53a5, 0xa085, 0x0001, 0x0ca0, 0x7000, 0xa084, 0xff00,
10054 + 0xa08c, 0xf000, 0x8007, 0xa196, 0x0000, 0x1118, 0x0804, 0x6c37,
10055 + 0x0005, 0xa196, 0x2000, 0x1148, 0x6900, 0xa18e, 0x0001, 0x1118,
10056 + 0x080c, 0x47cb, 0x0ca8, 0x0039, 0x0c98, 0xa196, 0x8000, 0x1d80,
10057 + 0x080c, 0x6ce3, 0x0c68, 0x00c6, 0x6a84, 0x82ff, 0x0904, 0x6b2c,
10058 + 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, 0x0001, 0x0120, 0xa196,
10059 + 0x0023, 0x1904, 0x6b2c, 0xa08e, 0x0023, 0x1570, 0x080c, 0x6d7e,
10060 + 0x0904, 0x6b2c, 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1150,
10061 + 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x0015, 0x080c, 0x9613,
10062 + 0x0804, 0x6b2c, 0xa08e, 0x0214, 0x0118, 0xa08e, 0x0210, 0x1130,
10063 + 0x2009, 0x0015, 0x080c, 0x9613, 0x0804, 0x6b2c, 0xa08e, 0x0100,
10064 + 0x1904, 0x6b2c, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x0016,
10065 + 0x080c, 0x9613, 0x0804, 0x6b2c, 0xa08e, 0x0022, 0x1904, 0x6b2c,
10066 + 0x7030, 0xa08e, 0x0300, 0x1580, 0x68d4, 0xd0a4, 0x0528, 0xc0b5,
10067 + 0x68d6, 0x7100, 0xa18c, 0x00ff, 0x6972, 0x7004, 0x6876, 0x00f6,
10068 + 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006, 0xa084, 0x00ff, 0x0016,
10069 + 0x2008, 0x080c, 0x29f1, 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe,
10070 + 0x080c, 0x29c7, 0x6952, 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086,
10071 + 0x2071, 0xc600, 0x70a6, 0x00ee, 0x7034, 0xa005, 0x1904, 0x6b2c,
10072 + 0x2009, 0x0017, 0x0804, 0x6af2, 0xa08e, 0x0400, 0x1158, 0x7034,
10073 + 0xa005, 0x1904, 0x6b2c, 0x68d4, 0xc0a5, 0x68d6, 0x2009, 0x0030,
10074 + 0x0804, 0x6af2, 0xa08e, 0x0500, 0x1140, 0x7034, 0xa005, 0x1904,
10075 + 0x6b2c, 0x2009, 0x0018, 0x0804, 0x6af2, 0xa08e, 0x2010, 0x1120,
10076 + 0x2009, 0x0019, 0x0804, 0x6af2, 0xa08e, 0x2110, 0x1120, 0x2009,
10077 + 0x001a, 0x0804, 0x6af2, 0xa08e, 0x5200, 0x1140, 0x7034, 0xa005,
10078 + 0x1904, 0x6b2c, 0x2009, 0x001b, 0x0804, 0x6af2, 0xa08e, 0x5000,
10079 + 0x1140, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009, 0x001c, 0x0804,
10080 + 0x6af2, 0xa08e, 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, 0x6af2,
10081 + 0xa08e, 0x1200, 0x1140, 0x7034, 0xa005, 0x1904, 0x6b2c, 0x2009,
10082 + 0x0024, 0x0804, 0x6af2, 0xa08c, 0xff00, 0xa18e, 0x2400, 0x1120,
10083 + 0x2009, 0x002d, 0x0804, 0x6af2, 0xa08c, 0xff00, 0xa18e, 0x5300,
10084 + 0x1120, 0x2009, 0x002a, 0x0804, 0x6af2, 0xa08e, 0x0f00, 0x1120,
10085 + 0x2009, 0x0020, 0x0804, 0x6af2, 0xa08e, 0x5300, 0x1108, 0x00d8,
10086 + 0xa08e, 0x6104, 0x11c0, 0x2011, 0xcc8d, 0x8208, 0x2204, 0xa082,
10087 + 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, 0x211c, 0x8108,
10088 + 0x0046, 0x2124, 0x080c, 0x407d, 0x004e, 0x8108, 0x1f04, 0x6abc,
10089 + 0x2009, 0x0023, 0x0438, 0xa08e, 0x6000, 0x1118, 0x2009, 0x003f,
10090 + 0x0408, 0xa08e, 0x5400, 0x1158, 0x080c, 0x6e79, 0x1904, 0x6b2c,
10091 + 0x2009, 0x0046, 0x0016, 0x2001, 0xc8d3, 0x2064, 0x0498, 0xa08e,
10092 + 0x5500, 0x1140, 0x080c, 0x6eac, 0x2009, 0x0041, 0x0158, 0x2009,
10093 + 0x0042, 0x0040, 0xa08e, 0x7800, 0x1118, 0x2009, 0x0045, 0x0010,
10094 + 0x2009, 0x001d, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c,
10095 + 0x080c, 0x29c7, 0x1598, 0x080c, 0x52e1, 0x1580, 0x6612, 0x6516,
10096 + 0x86ff, 0x01e8, 0x001e, 0x0016, 0xa186, 0x0017, 0x1158, 0x6870,
10097 + 0xa606, 0x11a8, 0x6874, 0xa506, 0xa084, 0xff00, 0x1180, 0x6000,
10098 + 0xc0f5, 0x6002, 0xa186, 0x0046, 0x1150, 0x6870, 0xa606, 0x1138,
10099 + 0x6874, 0xa506, 0xa084, 0xff00, 0x1110, 0x001e, 0x0068, 0x00c6,
10100 + 0x080c, 0x958d, 0x0168, 0x001e, 0x611a, 0x601f, 0x0004, 0x7120,
10101 + 0x610a, 0x001e, 0x080c, 0x9613, 0x00ce, 0x0005, 0x001e, 0x0ce0,
10102 + 0x00ce, 0x0ce0, 0x00c6, 0x0046, 0x080c, 0x6b86, 0x1904, 0x6b83,
10103 + 0xa28e, 0x0033, 0x11e8, 0x080c, 0x6d7e, 0x0904, 0x6b83, 0x7124,
10104 + 0x610a, 0x7030, 0xa08e, 0x0200, 0x1140, 0x7034, 0xa005, 0x15d8,
10105 + 0x2009, 0x0015, 0x080c, 0x9613, 0x04b0, 0xa08e, 0x0100, 0x1598,
10106 + 0x7034, 0xa005, 0x1580, 0x2009, 0x0016, 0x080c, 0x9613, 0x0458,
10107 + 0xa28e, 0x0032, 0x1540, 0x7030, 0xa08e, 0x1400, 0x1520, 0x2009,
10108 + 0x0038, 0x0016, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c,
10109 + 0x29c7, 0x11c0, 0x080c, 0x52e1, 0x11a8, 0x6612, 0x6516, 0x00c6,
10110 + 0x080c, 0x958d, 0x0170, 0x001e, 0x611a, 0x080c, 0xb05e, 0x601f,
10111 + 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x9613, 0x080c, 0x7e94,
10112 + 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x0005, 0x00f6, 0x00d6,
10113 + 0x0026, 0x0016, 0x0136, 0x0146, 0x0156, 0x3c00, 0x0006, 0x2079,
10114 + 0x0030, 0x2069, 0x0200, 0x080c, 0x1fec, 0x1590, 0x080c, 0x1e97,
10115 + 0x05e0, 0x04f1, 0x1130, 0x7908, 0xa18c, 0x1fff, 0xa182, 0x0011,
10116 + 0x1688, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, 0x2099, 0x020a,
10117 + 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x7a0c, 0x7808,
10118 + 0xa080, 0x0007, 0xa084, 0x1ff8, 0x0419, 0x1120, 0xa08a, 0x0140,
10119 + 0x1a0c, 0x1519, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, 0x53a5,
10120 + 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, 0x0070,
10121 + 0x000e, 0x20e0, 0x015e, 0x014e, 0x013e, 0x001e, 0x002e, 0x00de,
10122 + 0x00fe, 0x0005, 0xa016, 0x080c, 0x1870, 0xa085, 0x0001, 0x0c80,
10123 + 0x0006, 0x2001, 0x0111, 0x2004, 0xa084, 0x0003, 0x000e, 0x0005,
10124 + 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0xa696, 0x00ff, 0x1198,
10125 + 0xa596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, 0x6c32, 0xa596,
10126 + 0xfffe, 0x1118, 0x2009, 0x007e, 0x04e8, 0xa596, 0xfffc, 0x1118,
10127 + 0x2009, 0x0080, 0x04b8, 0x2011, 0x0000, 0x2019, 0xc635, 0x231c,
10128 + 0xd3ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, 0x2071, 0xc77b,
10129 + 0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, 0xc7fc, 0x2e1c,
10130 + 0x83ff, 0x1128, 0x82ff, 0x1198, 0x2410, 0xc2fd, 0x0080, 0x2368,
10131 + 0x6f10, 0x0006, 0x2100, 0xa706, 0x000e, 0x6b14, 0x1120, 0xa346,
10132 + 0x1110, 0x2408, 0x0078, 0x87ff, 0x1110, 0x83ff, 0x0d58, 0x8420,
10133 + 0x8e70, 0x1f04, 0x6c0f, 0x82ff, 0x1118, 0xa085, 0x0001, 0x0018,
10134 + 0xc2fc, 0x2208, 0xa006, 0x00de, 0x00ee, 0x004e, 0x0005, 0xa084,
10135 + 0x0007, 0x000a, 0x0005, 0x6c43, 0x6c43, 0x6c43, 0x6e0c, 0x6c43,
10136 + 0x6c44, 0x6c59, 0x6cce, 0x0005, 0x7110, 0xd1bc, 0x0188, 0x7120,
10137 + 0x2160, 0xac8c, 0x0007, 0x1160, 0xac8a, 0xce00, 0x0248, 0x685c,
10138 + 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0046, 0x080c, 0x9613,
10139 + 0x0005, 0x00c6, 0xa484, 0x01ff, 0x0904, 0x6cac, 0x7110, 0xd1bc,
10140 + 0x1904, 0x6cac, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c,
10141 + 0x29c7, 0x1904, 0x6cac, 0x080c, 0x52e1, 0x15f0, 0x6612, 0x6516,
10142 + 0x6000, 0xd0ec, 0x15c8, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286,
10143 + 0x0006, 0x0148, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x11a0,
10144 + 0xa295, 0x0600, 0x6206, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0530,
10145 + 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x7130, 0x6152, 0x2009,
10146 + 0x0044, 0x080c, 0x9613, 0x00c0, 0x00c6, 0x080c, 0x958d, 0x001e,
10147 + 0x0198, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004,
10148 + 0x1118, 0x6007, 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001,
10149 + 0x080c, 0x79df, 0x080c, 0x7e94, 0x00ce, 0x0005, 0x2001, 0xc60d,
10150 + 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x407d, 0x00c6,
10151 + 0x080c, 0xaf0d, 0x001e, 0x0d80, 0x611a, 0x601f, 0x0006, 0x7120,
10152 + 0x610a, 0x7130, 0x6152, 0x6013, 0x0300, 0x6003, 0x0001, 0x6007,
10153 + 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94, 0x08f0, 0x7110, 0xd1bc,
10154 + 0x0188, 0x7020, 0x2060, 0xac84, 0x0007, 0x1160, 0xac82, 0xce00,
10155 + 0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0045,
10156 + 0x080c, 0x9613, 0x0005, 0x0006, 0x080c, 0x2f69, 0x000e, 0x1168,
10157 + 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x1130, 0xa084,
10158 + 0x000f, 0xa08a, 0x0006, 0x1208, 0x000b, 0x0005, 0x6cfc, 0x6cfd,
10159 + 0x6cfc, 0x6cfc, 0x6d66, 0x6d72, 0x0005, 0x7110, 0xd1bc, 0x0120,
10160 + 0x702c, 0xd084, 0x0904, 0x6d65, 0x700c, 0x7108, 0x080c, 0x29c7,
10161 + 0x1904, 0x6d65, 0x080c, 0x52e1, 0x1904, 0x6d65, 0x6612, 0x6516,
10162 + 0x6204, 0x7110, 0xd1bc, 0x01f8, 0xa28c, 0x00ff, 0xa186, 0x0004,
10163 + 0x0118, 0xa186, 0x0006, 0x15c8, 0x00c6, 0x080c, 0x6d7e, 0x00ce,
10164 + 0x0904, 0x6d65, 0x00c6, 0x080c, 0x958d, 0x001e, 0x05f0, 0x611a,
10165 + 0x080c, 0xb05e, 0x601f, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088,
10166 + 0x080c, 0x9613, 0x0490, 0xa28c, 0x00ff, 0xa186, 0x0006, 0x0160,
10167 + 0xa186, 0x0004, 0x0148, 0xa294, 0xff00, 0x8217, 0xa286, 0x0004,
10168 + 0x0118, 0xa286, 0x0006, 0x1188, 0x00c6, 0x080c, 0x958d, 0x001e,
10169 + 0x01e0, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0005, 0x7120, 0x610a,
10170 + 0x2009, 0x0088, 0x080c, 0x9613, 0x0080, 0x00c6, 0x080c, 0x958d,
10171 + 0x001e, 0x0158, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0004, 0x7120,
10172 + 0x610a, 0x2009, 0x0001, 0x080c, 0x9613, 0x0005, 0x7110, 0xd1bc,
10173 + 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, 0x0089, 0x080c,
10174 + 0x9613, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130, 0x7124,
10175 + 0x610a, 0x2009, 0x008a, 0x080c, 0x9613, 0x0005, 0x7020, 0x2060,
10176 + 0xac84, 0x0007, 0x1158, 0xac82, 0xce00, 0x0240, 0x2001, 0xc617,
10177 + 0x2004, 0xac02, 0x1218, 0xa085, 0x0001, 0x0005, 0xa006, 0x0ce8,
10178 + 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x2f69, 0x1904, 0x6e07, 0x2001,
10179 + 0xc756, 0x2004, 0xa086, 0x0000, 0x0904, 0x6e07, 0x20e1, 0x0000,
10180 + 0x3d08, 0xa18c, 0x00ff, 0xa18e, 0x00ff, 0x1500, 0x3e00, 0xa086,
10181 + 0xffff, 0x11e0, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, 0x0006,
10182 + 0x0016, 0x2001, 0xc61d, 0x2004, 0x20e1, 0x0001, 0x3e08, 0xa106,
10183 + 0x1130, 0x2001, 0xc61c, 0x2004, 0x3d08, 0xa106, 0x0118, 0x001e,
10184 + 0x000e, 0x00a8, 0x001e, 0x000e, 0x0804, 0x6e07, 0x20e1, 0x0001,
10185 + 0x3d08, 0x3e00, 0x0156, 0x080c, 0x29c7, 0x015e, 0x15c0, 0x080c,
10186 + 0x533d, 0x0128, 0x2001, 0xc8d3, 0x2064, 0x2009, 0x00ff, 0x2138,
10187 + 0x873f, 0x2c00, 0x2070, 0x20e1, 0x0003, 0x3d18, 0x831f, 0xa39c,
10188 + 0x00ff, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0xa086, 0x1000,
10189 + 0x0120, 0x080c, 0x75ea, 0x11d8, 0x0080, 0x080c, 0x958d, 0x01b8,
10190 + 0x20e1, 0x0002, 0x3e08, 0xd19c, 0x0118, 0x6124, 0xc19d, 0x6126,
10191 + 0x2e00, 0x601a, 0x620a, 0x601f, 0x0009, 0x2009, 0x0101, 0x080c,
10192 + 0x9613, 0xa085, 0x0001, 0x00ee, 0x00de, 0x00ce, 0x0005, 0xa006,
10193 + 0x00ee, 0x00de, 0x00ce, 0x0005, 0x7110, 0xd1bc, 0x1178, 0x7024,
10194 + 0x2060, 0xac84, 0x0007, 0x1150, 0xac82, 0xce00, 0x0238, 0x685c,
10195 + 0xac02, 0x1220, 0x2009, 0x0051, 0x080c, 0x9613, 0x0005, 0x2031,
10196 + 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, 0x0005, 0x2031,
10197 + 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, 0x0005, 0x00c6,
10198 + 0x00d6, 0x00f6, 0x7000, 0xa084, 0xf000, 0xa086, 0xc000, 0x05b0,
10199 + 0x080c, 0x958d, 0x0598, 0x0066, 0x00c6, 0x0046, 0x2011, 0xcc83,
10200 + 0x2204, 0x8211, 0x220c, 0x080c, 0x29c7, 0x1580, 0x080c, 0x52e1,
10201 + 0x1568, 0x6612, 0x6516, 0x2c00, 0x004e, 0x00ce, 0x601a, 0x080c,
10202 + 0xb05e, 0x080c, 0x1602, 0x01f0, 0x2d00, 0x6056, 0x6803, 0x0000,
10203 + 0x6837, 0x0000, 0x6c3a, 0xadf8, 0x000f, 0x20a9, 0x000e, 0x2fa0,
10204 + 0x2e98, 0x53a3, 0x006e, 0x6612, 0x6007, 0x003e, 0x601f, 0x0001,
10205 + 0x6003, 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94, 0x00fe, 0x00de,
10206 + 0x00ce, 0x0005, 0x080c, 0x95e3, 0x006e, 0x0cc0, 0x004e, 0x00ce,
10207 + 0x0cc8, 0x0156, 0x0046, 0x2e00, 0xa0a0, 0x000e, 0x2404, 0x2020,
10208 + 0x8427, 0xa4a4, 0x0007, 0xd484, 0x0148, 0x20a9, 0x0003, 0x2019,
10209 + 0xc606, 0x2011, 0xcc9b, 0x080c, 0xa103, 0x11d8, 0xd48c, 0x0148,
10210 + 0x20a9, 0x0003, 0x2019, 0xc602, 0x2011, 0xcc9f, 0x080c, 0xa103,
10211 + 0x1180, 0xd494, 0x0170, 0x080c, 0x7694, 0x0148, 0x20a9, 0x0008,
10212 + 0x2019, 0xc69a, 0x2011, 0xccaa, 0x080c, 0xa118, 0x0010, 0xa085,
10213 + 0x0001, 0x004e, 0x015e, 0x0005, 0x0156, 0x0046, 0x2e00, 0xa0a0,
10214 + 0x000e, 0x2404, 0x2020, 0x8427, 0xa4a4, 0x0007, 0xd484, 0x0148,
10215 + 0x20a9, 0x0003, 0x2019, 0xc606, 0x2011, 0xcc93, 0x080c, 0xa103,
10216 + 0x11d8, 0xd48c, 0x0148, 0x20a9, 0x0003, 0x2019, 0xc602, 0x2011,
10217 + 0xcc97, 0x080c, 0xa103, 0x1180, 0xd494, 0x0170, 0x080c, 0x7694,
10218 + 0x0148, 0x20a9, 0x0008, 0x2019, 0xc69a, 0x2011, 0xcca2, 0x080c,
10219 + 0xa118, 0x0010, 0xa085, 0x0001, 0x004e, 0x015e, 0x0005, 0x2071,
10220 + 0xc93a, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7076,
10221 + 0x7012, 0x7017, 0xce00, 0x7007, 0x0000, 0x7026, 0x702b, 0x8c0c,
10222 + 0x7032, 0x7037, 0x8c6c, 0x703b, 0xffff, 0x703f, 0xffff, 0x7042,
10223 + 0x7047, 0x4787, 0x704a, 0x705b, 0x703f, 0x2001, 0xc8e8, 0x2003,
10224 + 0x0003, 0x2001, 0xc8ea, 0x2003, 0x0100, 0x3a00, 0xa084, 0x0005,
10225 + 0x706e, 0x0005, 0x2071, 0xc93a, 0x1d04, 0x6f9c, 0x2091, 0x6000,
10226 + 0x700c, 0x8001, 0x700e, 0x1518, 0x700f, 0x0361, 0x7007, 0x0001,
10227 + 0x0126, 0x2091, 0x8000, 0x7040, 0xa00d, 0x0128, 0x8109, 0x7142,
10228 + 0x1110, 0x7044, 0x080f, 0x00c6, 0x2061, 0xc600, 0x6034, 0x00ce,
10229 + 0xd0cc, 0x0180, 0x3a00, 0xa084, 0x0005, 0x726c, 0xa216, 0x0150,
10230 + 0x706e, 0x2011, 0x8043, 0x2018, 0x080c, 0x407d, 0x0018, 0x0126,
10231 + 0x2091, 0x8000, 0x7024, 0xa00d, 0x0188, 0x7020, 0x8001, 0x7022,
10232 + 0x1168, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8, 0x1110,
10233 + 0x7028, 0x080f, 0x81ff, 0x1110, 0x7028, 0x080f, 0x7030, 0xa00d,
10234 + 0x0180, 0x702c, 0x8001, 0x702e, 0x1160, 0x702f, 0x0009, 0x8109,
10235 + 0x7132, 0x0128, 0xa184, 0x007f, 0x090c, 0x8cc8, 0x0010, 0x7034,
10236 + 0x080f, 0x7038, 0xa005, 0x0118, 0x0310, 0x8001, 0x703a, 0x703c,
10237 + 0xa005, 0x0118, 0x0310, 0x8001, 0x703e, 0x704c, 0xa00d, 0x0168,
10238 + 0x7048, 0x8001, 0x704a, 0x1148, 0x704b, 0x0009, 0x8109, 0x714e,
10239 + 0x1120, 0x7150, 0x714e, 0x7058, 0x080f, 0x7018, 0xa00d, 0x01d8,
10240 + 0x0016, 0x7074, 0xa00d, 0x0158, 0x7070, 0x8001, 0x7072, 0x1138,
10241 + 0x7073, 0x0009, 0x8109, 0x7176, 0x1110, 0x7078, 0x080f, 0x001e,
10242 + 0x7008, 0x8001, 0x700a, 0x1138, 0x700b, 0x0009, 0x8109, 0x711a,
10243 + 0x1110, 0x701c, 0x080f, 0x012e, 0x7004, 0x0002, 0x6fc2, 0x6fc3,
10244 + 0x6fdb, 0x00e6, 0x2071, 0xc93a, 0x7018, 0xa005, 0x1120, 0x711a,
10245 + 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071,
10246 + 0xc93a, 0x701c, 0xa206, 0x1110, 0x701a, 0x701e, 0x000e, 0x00ee,
10247 + 0x0005, 0x00e6, 0x2071, 0xc93a, 0x6088, 0xa102, 0x0208, 0x618a,
10248 + 0x00ee, 0x0005, 0x0005, 0x7110, 0x080c, 0x533d, 0x1158, 0x6088,
10249 + 0x8001, 0x0240, 0x608a, 0x1130, 0x0126, 0x2091, 0x8000, 0x080c,
10250 + 0x7e94, 0x012e, 0x8108, 0xa182, 0x00ff, 0x0218, 0xa00e, 0x7007,
10251 + 0x0002, 0x7112, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000,
10252 + 0x603c, 0xa005, 0x0128, 0x8001, 0x603e, 0x1110, 0x080c, 0xaf4c,
10253 + 0x6014, 0xa005, 0x0518, 0x8001, 0x6016, 0x1500, 0x611c, 0xa186,
10254 + 0x0003, 0x0130, 0xa186, 0x0006, 0x0118, 0xa186, 0x0009, 0x11a0,
10255 + 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0270, 0xa082, 0x1999,
10256 + 0x6856, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x800b,
10257 + 0x810b, 0xa108, 0x6116, 0x0010, 0x080c, 0xaa1c, 0x012e, 0xac88,
10258 + 0x0018, 0x7116, 0x2001, 0xfe00, 0xa102, 0x0220, 0x7017, 0xce00,
10259 + 0x7007, 0x0000, 0x0005, 0x00e6, 0x2071, 0xc93a, 0x7027, 0x07d0,
10260 + 0x7023, 0x0009, 0x00ee, 0x0005, 0x2001, 0xc943, 0x2003, 0x0000,
10261 + 0x0005, 0x00e6, 0x2071, 0xc93a, 0x7132, 0x702f, 0x0009, 0x00ee,
10262 + 0x0005, 0x2011, 0xc946, 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071,
10263 + 0xc93a, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x00c6,
10264 + 0x0026, 0x7054, 0x8000, 0x7056, 0x2061, 0xc8e8, 0x6008, 0xa086,
10265 + 0x0000, 0x0158, 0x7068, 0x6032, 0x7064, 0x602e, 0x7060, 0x602a,
10266 + 0x705c, 0x6026, 0x2c10, 0x080c, 0x164d, 0x002e, 0x00ce, 0x0005,
10267 + 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x6f0a,
10268 + 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x0005, 0x00e6,
10269 + 0x2071, 0xc93a, 0x7176, 0x727a, 0x7073, 0x0009, 0x00ee, 0x0005,
10270 + 0x00e6, 0x0006, 0x2071, 0xc93a, 0x7078, 0xa206, 0x1110, 0x7076,
10271 + 0x707a, 0x000e, 0x00ee, 0x0005, 0x00c6, 0x2061, 0xc9bc, 0x00ce,
10272 + 0x0005, 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0xc9bc,
10273 + 0x2060, 0x0005, 0x6854, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999,
10274 + 0xa005, 0x1150, 0x00c6, 0x2061, 0xc9bc, 0x6014, 0x00ce, 0xa005,
10275 + 0x1138, 0x2001, 0x001e, 0x0020, 0xa08e, 0xffff, 0x1108, 0xa006,
10276 + 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c, 0x00c0,
10277 + 0xa18e, 0x00c0, 0x05e8, 0xd0b4, 0x1138, 0xd0bc, 0x1550, 0x2009,
10278 + 0x0006, 0x080c, 0x7105, 0x0005, 0xd0fc, 0x0138, 0xa084, 0x0003,
10279 + 0x0120, 0xa086, 0x0003, 0x1904, 0x70ff, 0x6020, 0xd0d4, 0x0130,
10280 + 0xc0d4, 0x6022, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, 0xc674,
10281 + 0x2104, 0xd084, 0x0138, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c,
10282 + 0x9613, 0x0005, 0x87ff, 0x1120, 0x2009, 0x0043, 0x080c, 0x9613,
10283 + 0x0005, 0xd0fc, 0x0130, 0xa084, 0x0003, 0x0118, 0xa086, 0x0003,
10284 + 0x11f0, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x9613, 0x0005,
10285 + 0xd0fc, 0x0160, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0148, 0x87ff,
10286 + 0x1120, 0x2009, 0x0041, 0x080c, 0x9613, 0x0005, 0x0061, 0x0ce8,
10287 + 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x9613, 0x0cb0, 0x2009,
10288 + 0x0004, 0x0019, 0x0005, 0x2009, 0x0001, 0x00d6, 0x6010, 0xa0ec,
10289 + 0xf000, 0x0510, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001,
10290 + 0x1188, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x1158, 0x00c6,
10291 + 0x2061, 0xc9bc, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, 0x0208,
10292 + 0x6206, 0x00ce, 0x080c, 0x580a, 0x6010, 0xa06d, 0x0076, 0x2039,
10293 + 0x0000, 0x190c, 0x708a, 0x007e, 0x00de, 0x0005, 0x0156, 0x00c6,
10294 + 0x2061, 0xc9bc, 0x6000, 0x81ff, 0x0110, 0xa205, 0x0008, 0xa204,
10295 + 0x6002, 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, 0x6808,
10296 + 0xa005, 0x0120, 0x8001, 0x680a, 0xa085, 0x0001, 0x0005, 0x2071,
10297 + 0xc755, 0x7003, 0x0006, 0x7007, 0x0000, 0x700f, 0x0000, 0x7013,
10298 + 0x0001, 0x702f, 0x0006, 0x7033, 0x0001, 0x7063, 0x0000, 0x0005,
10299 + 0x00e6, 0x2071, 0xc755, 0x6a2c, 0x721e, 0x6b30, 0x7322, 0x6834,
10300 + 0x7026, 0x705a, 0x6838, 0x702a, 0x705e, 0x6824, 0x7016, 0x683c,
10301 + 0x701a, 0x2009, 0x0070, 0x200a, 0xa005, 0x0150, 0x2009, 0x0000,
10302 + 0xa188, 0x000c, 0x8001, 0x1de0, 0x2100, 0xa210, 0x1208, 0x8318,
10303 + 0x7252, 0x7356, 0x7010, 0xc084, 0x7012, 0x7007, 0x0001, 0x700f,
10304 + 0x0000, 0xa006, 0x00ee, 0x0005, 0x2b78, 0x2071, 0xc755, 0x7004,
10305 + 0x004b, 0x700c, 0x0002, 0x718e, 0x7187, 0x7187, 0x0005, 0x7198,
10306 + 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ff, 0x7200, 0x700c, 0x0cba,
10307 + 0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, 0xa188, 0x0070, 0x210c,
10308 + 0xa106, 0x0150, 0x2f00, 0xa080, 0x0070, 0x2004, 0x2f08, 0xa188,
10309 + 0x0070, 0x210c, 0xa106, 0x15e0, 0x7018, 0xa10a, 0x1118, 0x080c,
10310 + 0x722d, 0x04b0, 0x1210, 0x7114, 0xa10a, 0xa192, 0x000a, 0x0210,
10311 + 0x2009, 0x000a, 0x00d6, 0x0016, 0x2001, 0xc682, 0xa080, 0x0011,
10312 + 0x2014, 0x2001, 0xc76f, 0xa080, 0x0005, 0x2004, 0xa100, 0xa202,
10313 + 0x001e, 0x00de, 0x0e20, 0x080c, 0x727c, 0x2200, 0xa102, 0x0208,
10314 + 0x2208, 0x713a, 0x080c, 0x7377, 0x2100, 0x7042, 0x2001, 0x0002,
10315 + 0x7037, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, 0x2009, 0xc959,
10316 + 0x2104, 0xc095, 0x200a, 0x000e, 0x700e, 0x012e, 0x080c, 0x1669,
10317 + 0x0005, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, 0x71f1, 0x71f4,
10318 + 0x71fe, 0x080c, 0x7196, 0x0005, 0x0126, 0x8001, 0x700e, 0x7138,
10319 + 0x0041, 0x2091, 0x8000, 0x080c, 0x7196, 0x012e, 0x0005, 0x0005,
10320 + 0x0005, 0x7018, 0xa100, 0x7214, 0xa21a, 0x1130, 0x701c, 0x7052,
10321 + 0x7020, 0x7056, 0xa006, 0x0068, 0x0006, 0x080c, 0x7377, 0x2100,
10322 + 0x7250, 0xa210, 0x7252, 0x1220, 0x7054, 0xa081, 0x0000, 0x7056,
10323 + 0x000e, 0x2f08, 0xa188, 0x0070, 0x200a, 0x701a, 0x0005, 0x00e6,
10324 + 0x2071, 0xc755, 0x700c, 0x0002, 0x7227, 0x7227, 0x7229, 0x00ee,
10325 + 0x0005, 0x700f, 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000,
10326 + 0x00d6, 0x00e6, 0x2071, 0xc76f, 0x702c, 0xa005, 0x0178, 0x2068,
10327 + 0x6964, 0x080c, 0x727c, 0x2100, 0x2208, 0xa102, 0x0238, 0x6800,
10328 + 0x702e, 0x080c, 0x75b9, 0x080c, 0x1629, 0x0c70, 0x00ee, 0x00de,
10329 + 0x012e, 0x0005, 0x00e6, 0x2071, 0xc76f, 0x702c, 0x6802, 0x2d00,
10330 + 0x702e, 0x6858, 0x7120, 0xa102, 0x0a0c, 0x1519, 0x7022, 0x685b,
10331 + 0x0000, 0x00ee, 0x0005, 0x00d6, 0x00e6, 0x2071, 0xc76f, 0xa006,
10332 + 0x7006, 0x700e, 0x701a, 0x701e, 0x7022, 0x7016, 0x702a, 0x7026,
10333 + 0x702f, 0x0000, 0x080c, 0x742b, 0x0168, 0x080c, 0x745d, 0x2d00,
10334 + 0x7002, 0x700a, 0x701a, 0x7013, 0x0001, 0x701f, 0x0007, 0x00ee,
10335 + 0x00de, 0x0005, 0xa00e, 0x0cd8, 0x00e6, 0x00d6, 0x00c6, 0x2071,
10336 + 0xc76f, 0x721c, 0x2100, 0xa202, 0x1618, 0x080c, 0x745d, 0x090c,
10337 + 0x1519, 0x7018, 0xa005, 0x1160, 0x2d00, 0x7002, 0x700a, 0x701a,
10338 + 0xa006, 0x7006, 0x700e, 0x6806, 0x6802, 0x7012, 0x701e, 0x0038,
10339 + 0x2060, 0x6806, 0x2d00, 0x6002, 0x701a, 0x6803, 0x0000, 0x7010,
10340 + 0x8000, 0x7012, 0x701c, 0xa080, 0x0007, 0x701e, 0x721c, 0x08d0,
10341 + 0x721c, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x0156, 0x0136, 0x0146,
10342 + 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0xc76f, 0x7300, 0xa398,
10343 + 0x0003, 0x7104, 0x080c, 0x7377, 0x810c, 0x2100, 0xa318, 0x8003,
10344 + 0x2228, 0x2021, 0x0054, 0xa402, 0xa532, 0x0208, 0x2028, 0x2500,
10345 + 0x8004, 0x20a8, 0x23a0, 0xe000, 0xe000, 0xe000, 0x53a5, 0x2508,
10346 + 0x080c, 0x7380, 0x2130, 0x7014, 0xa600, 0x7016, 0x2600, 0x711c,
10347 + 0xa102, 0x701e, 0x7004, 0xa600, 0x2008, 0xa082, 0x0007, 0x1180,
10348 + 0x7000, 0x2004, 0xa005, 0x1140, 0x2009, 0x0001, 0x0026, 0x080c,
10349 + 0x727c, 0x002e, 0x7000, 0x2004, 0x7002, 0x7007, 0x0000, 0x0008,
10350 + 0x7106, 0x2500, 0xa212, 0x1910, 0x012e, 0x00ee, 0x014e, 0x013e,
10351 + 0x015e, 0x0005, 0x0016, 0x0026, 0x00e6, 0x00d6, 0x080c, 0x7340,
10352 + 0x15e0, 0x2170, 0x2805, 0xac68, 0x2900, 0x0002, 0x7316, 0x7316,
10353 + 0x731a, 0x7316, 0x731a, 0x7316, 0x7316, 0x7316, 0x7316, 0x7316,
10354 + 0x7323, 0x7316, 0x7323, 0x7316, 0x7316, 0x7316, 0x080c, 0x1519,
10355 + 0xa005, 0x00f0, 0x7000, 0x6802, 0x7004, 0x6806, 0x7010, 0x680a,
10356 + 0x680f, 0x0000, 0x0060, 0x7010, 0x6812, 0x6817, 0x0000, 0x7000,
10357 + 0x6802, 0x7004, 0x6806, 0x7008, 0x680a, 0x700c, 0x680e, 0x00de,
10358 + 0x685c, 0x8000, 0x685e, 0x6858, 0x8001, 0x685a, 0x00d6, 0xa006,
10359 + 0x00de, 0x00ee, 0x002e, 0x001e, 0x0005, 0xa085, 0x0001, 0x0cc0,
10360 + 0x00e6, 0x0036, 0x2071, 0xc76f, 0x7014, 0xa005, 0x0568, 0x8001,
10361 + 0x7016, 0x7020, 0x8001, 0x7022, 0x7008, 0xa080, 0x0003, 0x710c,
10362 + 0x2110, 0x0429, 0x810c, 0xa118, 0x8210, 0xa282, 0x0007, 0x11b0,
10363 + 0x7008, 0x2004, 0xa005, 0x0178, 0x00d6, 0x0006, 0x7008, 0x2068,
10364 + 0x080c, 0x746c, 0x000e, 0x2068, 0x6807, 0x0000, 0x700a, 0x00de,
10365 + 0x7010, 0x8001, 0x7012, 0x700f, 0x0000, 0x0008, 0x720e, 0x2308,
10366 + 0xa006, 0x003e, 0x00ee, 0x0005, 0xa085, 0x0001, 0x0cd0, 0x0006,
10367 + 0x810b, 0x810b, 0x2100, 0x810b, 0xa100, 0x2008, 0x000e, 0x0005,
10368 + 0x0006, 0x0026, 0x2100, 0xa005, 0x0160, 0xa092, 0x000c, 0x0248,
10369 + 0x2009, 0x0000, 0x8108, 0xa082, 0x000c, 0x1de0, 0x002e, 0x000e,
10370 + 0x0005, 0x2009, 0x0000, 0x0cd0, 0x2d00, 0xa0b8, 0x0008, 0x690c,
10371 + 0x6810, 0x2019, 0x0001, 0x2031, 0x73c2, 0xa112, 0x0220, 0x0118,
10372 + 0x8318, 0x2208, 0x0cd0, 0x6808, 0xa005, 0x0108, 0x8318, 0x233a,
10373 + 0x6804, 0xd084, 0x2300, 0x2021, 0x0001, 0x1150, 0xa082, 0x0003,
10374 + 0x0967, 0x0a67, 0x8420, 0xa082, 0x0007, 0x0967, 0x0a67, 0x0cd0,
10375 + 0xa082, 0x0002, 0x0967, 0x0a67, 0x8420, 0xa082, 0x0005, 0x0967,
10376 + 0x0a67, 0x0cd0, 0x6c1a, 0x2d00, 0xa0b8, 0x0007, 0x00e6, 0x2071,
10377 + 0xc600, 0x7128, 0x6810, 0x2019, 0x0001, 0xa10a, 0x0118, 0x0210,
10378 + 0x8318, 0x0cd8, 0x2031, 0x73d5, 0x0870, 0x6c16, 0x00ee, 0x0005,
10379 + 0x00e6, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2e00, 0x2060, 0x2071,
10380 + 0xc76f, 0x2009, 0x0001, 0x0026, 0x080c, 0x727c, 0x002e, 0x7300,
10381 + 0xa398, 0x0003, 0x7104, 0x080c, 0x7377, 0x810c, 0x2100, 0xa318,
10382 + 0x6834, 0xa084, 0x00ff, 0xa086, 0x0024, 0x00d6, 0x2368, 0x1138,
10383 + 0x6000, 0x6802, 0x6004, 0x6806, 0x6008, 0x6812, 0x0050, 0x6000,
10384 + 0x6802, 0x6004, 0x6806, 0x6008, 0x680a, 0x600c, 0x680e, 0x6010,
10385 + 0x6812, 0x00de, 0x7014, 0x8000, 0x7016, 0x711c, 0x8109, 0x711e,
10386 + 0x7004, 0x8000, 0x2008, 0xa082, 0x0007, 0x1180, 0x7000, 0x2004,
10387 + 0xa005, 0x1140, 0x2009, 0x0001, 0x0026, 0x080c, 0x727c, 0x002e,
10388 + 0x7000, 0x2004, 0x7002, 0x7007, 0x0000, 0x0008, 0x7106, 0x012e,
10389 + 0x00ce, 0x00ee, 0x0005, 0x00d6, 0x0046, 0x0126, 0x2091, 0x8000,
10390 + 0x2001, 0xc682, 0xa080, 0x0011, 0x2004, 0x8003, 0x2020, 0x080c,
10391 + 0x15e5, 0x01d0, 0x2d00, 0x7026, 0x6803, 0x0000, 0x6807, 0x0000,
10392 + 0x080c, 0x15e5, 0x0188, 0x7024, 0x6802, 0x6807, 0x0000, 0x2d00,
10393 + 0x7026, 0xa4a2, 0x0007, 0x0110, 0x0208, 0x0c90, 0xa085, 0x0001,
10394 + 0x012e, 0x004e, 0x00de, 0x0005, 0x7024, 0xa005, 0x0dc8, 0x2068,
10395 + 0x2024, 0x080c, 0x1619, 0x2400, 0x0cc0, 0x0126, 0x2091, 0x8000,
10396 + 0x7024, 0x2068, 0xa005, 0x0130, 0x2004, 0x7026, 0x6803, 0x0000,
10397 + 0x6807, 0x0000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x7024,
10398 + 0x6802, 0x2d00, 0x7026, 0x012e, 0x0005, 0x00d6, 0x2001, 0xc778,
10399 + 0x2004, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, 0x1619,
10400 + 0x000e, 0x0cb8, 0x00de, 0x0005, 0x00d6, 0x00e6, 0x2071, 0xc76f,
10401 + 0x7008, 0xa005, 0x0138, 0x2068, 0x6800, 0x0006, 0x080c, 0x1619,
10402 + 0x000e, 0x0cb8, 0xa006, 0x7002, 0x700a, 0x7006, 0x700e, 0x701a,
10403 + 0x701e, 0x7022, 0x702a, 0x7026, 0x702e, 0x00ee, 0x00de, 0x0005,
10404 + 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0086, 0x0046, 0x0056, 0x0026,
10405 + 0x2031, 0x0000, 0x2001, 0xc756, 0x2004, 0xa005, 0x0904, 0x7532,
10406 + 0x2071, 0xc682, 0x20e1, 0x0002, 0x3d08, 0xd19c, 0x0140, 0x2069,
10407 + 0xc600, 0x6a28, 0x761c, 0x7114, 0x2041, 0x0000, 0x0028, 0x7118,
10408 + 0x720c, 0x7620, 0x7008, 0x2040, 0x080c, 0x7627, 0x0904, 0x7532,
10409 + 0x7004, 0xd084, 0x1128, 0x2021, 0x0024, 0x2029, 0x0002, 0x0020,
10410 + 0x2021, 0x002c, 0x2029, 0x000a, 0x080c, 0x1602, 0x0904, 0x752a,
10411 + 0x2d00, 0x2060, 0x6436, 0x0016, 0x20e1, 0x0001, 0x3d08, 0x3e00,
10412 + 0xa18c, 0x00ff, 0x6142, 0x603e, 0x001e, 0x6746, 0x2700, 0xa086,
10413 + 0xff00, 0x1118, 0x6063, 0x0000, 0x0010, 0x6063, 0x0003, 0xa006,
10414 + 0x6002, 0x602a, 0x602e, 0x6006, 0x603a, 0x604a, 0x6052, 0x6057,
10415 + 0x0005, 0x605e, 0x6066, 0x604e, 0x2800, 0x606a, 0x604c, 0xc0ad,
10416 + 0x604e, 0x665a, 0x2c00, 0x2078, 0x0479, 0x607f, 0xffff, 0x6083,
10417 + 0x0000, 0x8109, 0x0180, 0x080c, 0x1602, 0x01c0, 0x2d00, 0x7806,
10418 + 0x2f00, 0x6802, 0x6d36, 0xa006, 0x2d00, 0x2520, 0x00e9, 0x2d00,
10419 + 0x2078, 0x8109, 0x1d80, 0x2c00, 0xa005, 0x002e, 0x005e, 0x004e,
10420 + 0x008e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x2c00, 0x2068,
10421 + 0x080c, 0x1629, 0x2600, 0x2071, 0xc76f, 0x7120, 0xa102, 0x0a0c,
10422 + 0x1519, 0x7022, 0xa006, 0x0c48, 0x00d6, 0x00c6, 0x0136, 0x0146,
10423 + 0x0156, 0x0016, 0x2068, 0x2400, 0xa084, 0x000f, 0xa080, 0x23c7,
10424 + 0x2005, 0x2005, 0xad60, 0x2c00, 0x2d08, 0xa188, 0x0030, 0xa102,
10425 + 0x20a8, 0x2c00, 0x20a0, 0x2001, 0xffff, 0x40a4, 0x001e, 0x015e,
10426 + 0x014e, 0x013e, 0x00ce, 0x00de, 0x0005, 0x00c6, 0x00e6, 0x00f6,
10427 + 0x6858, 0x2071, 0xc76f, 0x7120, 0xa102, 0x0a0c, 0x1519, 0x7022,
10428 + 0x6960, 0x694e, 0x697c, 0x2009, 0xffff, 0x7818, 0xa102, 0xe000,
10429 + 0x6852, 0x684b, 0x0000, 0x6868, 0xa005, 0x0118, 0x6848, 0xc085,
10430 + 0x684a, 0x2d00, 0xa080, 0x0015, 0x2038, 0x2031, 0x0018, 0x6864,
10431 + 0x2020, 0x683a, 0x685c, 0xa08a, 0x00ff, 0x1a0c, 0x1519, 0x2028,
10432 + 0x2d00, 0x2060, 0x2078, 0x6934, 0xa18c, 0x000f, 0xa188, 0x23c7,
10433 + 0x2145, 0x685c, 0x2050, 0xa005, 0x0530, 0x2805, 0xac70, 0x6834,
10434 + 0xa084, 0x00ff, 0xa086, 0x0024, 0x1110, 0x7008, 0x0040, 0x6834,
10435 + 0xa084, 0x00ff, 0xa086, 0x002c, 0x190c, 0x1519, 0x7010, 0x0006,
10436 + 0x2400, 0xa005, 0x000e, 0x0168, 0x203a, 0x8738, 0x8631, 0x090c,
10437 + 0x1519, 0x8421, 0x8529, 0x0138, 0x080c, 0x2389, 0x090c, 0x1519,
10438 + 0x08e0, 0x080c, 0x73d8, 0x6837, 0x0023, 0x00fe, 0x00ee, 0x00ce,
10439 + 0x0005, 0x00e6, 0x00c6, 0x00a6, 0x0086, 0x0056, 0x2d00, 0x2060,
10440 + 0x6934, 0xa18c, 0x000f, 0xa188, 0x23c7, 0x2145, 0x685c, 0x2050,
10441 + 0xa005, 0x01d0, 0x2028, 0x2805, 0xac70, 0x6834, 0xa084, 0x00ff,
10442 + 0xa086, 0x0024, 0x1110, 0x7008, 0x0008, 0x7010, 0x0006, 0xa086,
10443 + 0xffff, 0x000e, 0x0110, 0x080c, 0x73d8, 0x8529, 0x0128, 0x080c,
10444 + 0x2389, 0x090c, 0x1519, 0x0c38, 0x005e, 0x008e, 0x00ae, 0x00ce,
10445 + 0x00ee, 0x0005, 0x70ac, 0xa005, 0x0120, 0x2060, 0x6008, 0xa306,
10446 + 0x0005, 0xa085, 0x0001, 0x0ce0, 0x70ac, 0x600e, 0x2c00, 0x70ae,
10447 + 0x0005, 0x00f6, 0x00d6, 0x0036, 0x70ac, 0xa005, 0x01b8, 0x2068,
10448 + 0x2079, 0x0000, 0x2c08, 0xa11e, 0x1118, 0x680c, 0x70ae, 0x0060,
10449 + 0xa106, 0x0140, 0x2d00, 0x2078, 0x680c, 0xa005, 0x090c, 0x1519,
10450 + 0x2068, 0x0cb0, 0x6b0c, 0x7b0e, 0x600f, 0x0000, 0x003e, 0x00de,
10451 + 0x00fe, 0x0005, 0x00e6, 0x080c, 0x724a, 0x6018, 0x2070, 0xa006,
10452 + 0x70b2, 0x70b6, 0x08b1, 0x080c, 0x95e3, 0x00ee, 0x0005, 0x00d6,
10453 + 0x0026, 0x0016, 0x2061, 0xc76f, 0x6020, 0x6414, 0xa600, 0xa42a,
10454 + 0x02f0, 0x6022, 0x2069, 0xc682, 0x6828, 0x6114, 0xa102, 0x1288,
10455 + 0x685c, 0xd08c, 0x1130, 0xc08d, 0x685e, 0x2011, 0x8025, 0x080c,
10456 + 0x407d, 0x2001, 0xc695, 0x2004, 0xa080, 0x0000, 0x200c, 0x8108,
10457 + 0x2102, 0xa085, 0x0001, 0x001e, 0x002e, 0x00de, 0x0005, 0x2069,
10458 + 0xc682, 0x6804, 0xd094, 0x0148, 0x685c, 0xd084, 0x1130, 0xc085,
10459 + 0x685e, 0x2011, 0x8026, 0x080c, 0x407d, 0x2001, 0xc695, 0x2004,
10460 + 0xa080, 0x0001, 0x200c, 0x8108, 0x2102, 0xa006, 0x2031, 0x0000,
10461 + 0x0c10, 0x0006, 0x0016, 0x00c6, 0x6018, 0x2060, 0x6010, 0xa005,
10462 + 0x0178, 0x2001, 0xc756, 0x2004, 0xa005, 0x0150, 0x2001, 0xc600,
10463 + 0x2004, 0xa086, 0x0003, 0x1120, 0x2011, 0x8014, 0x080c, 0x407d,
10464 + 0x00ce, 0x001e, 0x000e, 0x0005, 0x0016, 0x6834, 0xa08c, 0x00ff,
10465 + 0xa186, 0x0024, 0x0110, 0xa186, 0x002c, 0x001e, 0x0005, 0x2001,
10466 + 0xc683, 0x2004, 0xd09c, 0x0005, 0x2001, 0xc683, 0x2004, 0xd0a4,
10467 + 0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013,
10468 + 0x006e, 0x0005, 0x76b2, 0x76b2, 0x76b2, 0x76b4, 0x770f, 0x76b2,
10469 + 0x76b2, 0x76b2, 0x774d, 0x76b2, 0x77aa, 0x76b2, 0x76b2, 0x76b2,
10470 + 0x76b2, 0x76b2, 0x080c, 0x1519, 0xa182, 0x0100, 0x0002, 0x76c6,
10471 + 0x76c6, 0x76c6, 0x76c8, 0x76e1, 0x76fb, 0x76c6, 0x76c6, 0x76c6,
10472 + 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x76c6, 0x080c, 0x1519,
10473 + 0x00d6, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110, 0x2168, 0x684b,
10474 + 0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, 0x68bb, 0x0500,
10475 + 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c, 0x95e3, 0x00de,
10476 + 0x0005, 0x080c, 0x7e47, 0x00f6, 0x00d6, 0x6110, 0x2178, 0x080c,
10477 + 0xac91, 0x0150, 0x00e6, 0x6018, 0x2070, 0xa006, 0x70b2, 0x70b6,
10478 + 0x00ee, 0x2f68, 0x080c, 0x580a, 0x00de, 0x00fe, 0x080c, 0x95e3,
10479 + 0x080c, 0x7f6e, 0x0005, 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6,
10480 + 0x6110, 0x2168, 0x080c, 0xac91, 0x0120, 0x684b, 0x0029, 0x080c,
10481 + 0x580a, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7f6e, 0x0005, 0xa182,
10482 + 0x0100, 0x0002, 0x7721, 0x7723, 0x772b, 0x7721, 0x7721, 0x7721,
10483 + 0x7748, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721, 0x7721,
10484 + 0x7721, 0x080c, 0x1519, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
10485 + 0x080c, 0x1870, 0x0005, 0x00d6, 0x00e6, 0x2001, 0xc756, 0x2004,
10486 + 0xa086, 0x0000, 0x6110, 0x1118, 0x080c, 0x1629, 0x0028, 0x2168,
10487 + 0x080c, 0x7555, 0x080c, 0x580a, 0x6018, 0x2070, 0xa006, 0x70b2,
10488 + 0x70b6, 0x080c, 0x75f9, 0x00ee, 0x00de, 0x080c, 0x95e3, 0x0005,
10489 + 0x080c, 0x761a, 0x080c, 0x56c7, 0x0005, 0xa182, 0x0100, 0x0002,
10490 + 0x7762, 0x7788, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760,
10491 + 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760, 0x7760,
10492 + 0x080c, 0x1519, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, 0x2068,
10493 + 0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, 0x6817, 0x0000,
10494 + 0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x8013,
10495 + 0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, 0x2068, 0x080c,
10496 + 0x79fc, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f6e, 0x012e, 0x0005,
10497 + 0x6003, 0x0004, 0x630a, 0x080c, 0x74a0, 0x0168, 0x6012, 0x600f,
10498 + 0x0000, 0x080c, 0x75f4, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
10499 + 0x080c, 0x1870, 0x0005, 0x2011, 0x0000, 0x080c, 0x1870, 0x00e6,
10500 + 0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, 0x0000, 0x00ee, 0x080c,
10501 + 0x95e3, 0x0005, 0x00d6, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110,
10502 + 0x2168, 0x684b, 0x0000, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6,
10503 + 0x68bb, 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c,
10504 + 0x95e3, 0x00de, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519,
10505 + 0x000b, 0x0005, 0x77da, 0x77da, 0x77da, 0x77dc, 0x77f1, 0x77da,
10506 + 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da, 0x77da,
10507 + 0x77da, 0x77da, 0x080c, 0x1519, 0x080c, 0x90f6, 0x6110, 0x2168,
10508 + 0x684b, 0x0006, 0x00d6, 0x6018, 0x2068, 0x6008, 0x68b6, 0x68bb,
10509 + 0x0500, 0xa006, 0x68b2, 0x00de, 0x080c, 0x580a, 0x080c, 0x95e3,
10510 + 0x0005, 0x080c, 0x761a, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c,
10511 + 0x1519, 0x000b, 0x0005, 0x780b, 0x780b, 0x780b, 0x780d, 0x781d,
10512 + 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b, 0x780b,
10513 + 0x780b, 0x780b, 0x780b, 0x080c, 0x1519, 0x0036, 0x00e6, 0x2071,
10514 + 0xc927, 0x703c, 0xac06, 0x1120, 0x2019, 0x0000, 0x080c, 0x8e79,
10515 + 0x080c, 0x90f6, 0x00ee, 0x003e, 0x0005, 0x00d6, 0x6010, 0x2068,
10516 + 0x080c, 0x761a, 0x00de, 0x0005, 0x080c, 0x7684, 0x1150, 0x6024,
10517 + 0xd09c, 0x1138, 0x6810, 0x2009, 0xffff, 0xa102, 0x2020, 0x2019,
10518 + 0x0000, 0x0005, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e,
10519 + 0x1208, 0xa200, 0x1f04, 0x7836, 0x8086, 0x818e, 0x0005, 0x0156,
10520 + 0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, 0x12a8, 0x8213, 0x818d,
10521 + 0x0228, 0xa11a, 0x1220, 0x1f04, 0x7846, 0x0028, 0xa11a, 0x2308,
10522 + 0x8210, 0x1f04, 0x7846, 0x0006, 0x3200, 0xa084, 0xefff, 0x2080,
10523 + 0x000e, 0x015e, 0x0005, 0x0006, 0x3200, 0xa085, 0x1000, 0x0cb8,
10524 + 0x0126, 0x2091, 0x2800, 0x2079, 0xc927, 0x012e, 0x00d6, 0x2069,
10525 + 0xc927, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001,
10526 + 0x206a, 0x00de, 0x0005, 0x00c6, 0x6027, 0x0001, 0x7804, 0xa084,
10527 + 0x0007, 0x0002, 0x7884, 0x78a5, 0x78f8, 0x788a, 0x78a5, 0x7884,
10528 + 0x7882, 0x7882, 0x080c, 0x1519, 0x080c, 0x7024, 0x080c, 0x7e94,
10529 + 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, 0x0005, 0x2011,
10530 + 0x4e18, 0x080c, 0x6fad, 0x7828, 0xa092, 0x00c8, 0x1228, 0x8000,
10531 + 0x782a, 0x080c, 0x4e52, 0x0c88, 0x080c, 0x4e18, 0x7807, 0x0003,
10532 + 0x7827, 0x0000, 0x782b, 0x0000, 0x0c40, 0x080c, 0x7024, 0x3c00,
10533 + 0x0006, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x000e, 0x20e0,
10534 + 0x82ff, 0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824,
10535 + 0xa065, 0x090c, 0x1519, 0x2009, 0x0013, 0x080c, 0x9613, 0x00ce,
10536 + 0x0005, 0x3900, 0xa082, 0xca74, 0x1210, 0x080c, 0x91cb, 0x00c6,
10537 + 0x7824, 0xa065, 0x090c, 0x1519, 0x7804, 0xa086, 0x0004, 0x0904,
10538 + 0x7938, 0x7828, 0xa092, 0x2710, 0x1230, 0x8000, 0x782a, 0x00ce,
10539 + 0x080c, 0x8be8, 0x0c20, 0x6104, 0xa186, 0x0003, 0x1188, 0x00e6,
10540 + 0x2071, 0xc600, 0x70e0, 0x00ee, 0xd08c, 0x0150, 0x00c6, 0x00e6,
10541 + 0x2061, 0x0100, 0x2071, 0xc600, 0x080c, 0x4e5b, 0x00ee, 0x00ce,
10542 + 0x080c, 0xc59b, 0x2009, 0x0014, 0x080c, 0x9613, 0x00ce, 0x0838,
10543 + 0x2001, 0xc943, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, 0x782b,
10544 + 0x0000, 0x7824, 0xa065, 0x090c, 0x1519, 0x2009, 0x0013, 0x080c,
10545 + 0x9667, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x3900, 0xa082, 0xca74,
10546 + 0x1210, 0x080c, 0x91cb, 0x7824, 0xa005, 0x090c, 0x1519, 0x781c,
10547 + 0xa06d, 0x090c, 0x1519, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160,
10548 + 0x080c, 0x95e3, 0x693c, 0x81ff, 0x090c, 0x1519, 0x8109, 0x693e,
10549 + 0x6854, 0xa015, 0x0110, 0x7a1e, 0x0010, 0x7918, 0x791e, 0x7807,
10550 + 0x0000, 0x7827, 0x0000, 0x00de, 0x00ce, 0x080c, 0x7e94, 0x0888,
10551 + 0x6104, 0xa186, 0x0002, 0x0128, 0xa186, 0x0004, 0x0110, 0x0804,
10552 + 0x78d1, 0x7808, 0xac06, 0x0904, 0x78d1, 0x080c, 0x7db1, 0x080c,
10553 + 0x79df, 0x00ce, 0x080c, 0x7e94, 0x0804, 0x78bf, 0x00c6, 0x6027,
10554 + 0x0002, 0x62c8, 0x60c4, 0xa205, 0x11a8, 0x793c, 0xa1e5, 0x0000,
10555 + 0x0160, 0x2009, 0x0049, 0x601c, 0xa086, 0x0009, 0x1110, 0x2009,
10556 + 0x0103, 0x080c, 0x9613, 0x00ce, 0x0005, 0x2011, 0xc946, 0x2013,
10557 + 0x0000, 0x0cc8, 0x3908, 0xa192, 0xca74, 0x1210, 0x080c, 0x91cb,
10558 + 0x793c, 0x81ff, 0x0d90, 0x7944, 0xa192, 0x7530, 0x12f0, 0x8108,
10559 + 0x7946, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x1138,
10560 + 0x6014, 0xa084, 0x0184, 0xa085, 0x0012, 0x6016, 0x08e0, 0x793c,
10561 + 0xa188, 0x0007, 0x210c, 0xa18e, 0x0009, 0x0d90, 0x6014, 0xa084,
10562 + 0x0184, 0xa085, 0x0016, 0x6016, 0x0870, 0x7848, 0xc085, 0x784a,
10563 + 0x0850, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f,
10564 + 0x0000, 0x2c08, 0x2061, 0xc927, 0x6020, 0x8000, 0x6022, 0x6010,
10565 + 0xa005, 0x0148, 0xa080, 0x0003, 0x2102, 0x6112, 0x012e, 0x00ce,
10566 + 0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0, 0x00d6, 0x2069,
10567 + 0xc927, 0x6000, 0xd0d4, 0x0168, 0x6820, 0x8000, 0x6822, 0xa086,
10568 + 0x0001, 0x1110, 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007, 0x0804,
10569 + 0x7e9a, 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0158, 0x6056, 0x605b,
10570 + 0x0000, 0x0006, 0x2c00, 0x681a, 0x00de, 0x685a, 0x2069, 0xc927,
10571 + 0x0c18, 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x08e8, 0x0006,
10572 + 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08,
10573 + 0x2061, 0xc927, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0148,
10574 + 0xa080, 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, 0x000e,
10575 + 0x0005, 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, 0x2c08,
10576 + 0x2061, 0xc927, 0x6034, 0xa005, 0x0130, 0xa080, 0x0003, 0x2102,
10577 + 0x6136, 0x00ce, 0x0005, 0x613a, 0x6136, 0x0cd8, 0x00f6, 0x00e6,
10578 + 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026, 0x0016,
10579 + 0x0006, 0x0126, 0xa02e, 0x2071, 0xc927, 0x7638, 0x2660, 0x2678,
10580 + 0x2091, 0x8000, 0x8cff, 0x0904, 0x7a87, 0x6018, 0xa080, 0x0028,
10581 + 0x2004, 0xa206, 0x1904, 0x7a82, 0x87ff, 0x0120, 0x6050, 0xa106,
10582 + 0x1904, 0x7a82, 0x703c, 0xac06, 0x1190, 0x0036, 0x2019, 0x0001,
10583 + 0x080c, 0x8e79, 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, 0x0000,
10584 + 0x7047, 0x0000, 0x704b, 0x0000, 0x003e, 0x2029, 0x0001, 0x7038,
10585 + 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36, 0x1140, 0x2c00,
10586 + 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, 0x660c,
10587 + 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f,
10588 + 0x0000, 0x080c, 0xac91, 0x01c8, 0x6010, 0x2068, 0x601c, 0xa086,
10589 + 0x0003, 0x1580, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x0016,
10590 + 0x0036, 0x0076, 0x080c, 0xaf03, 0x080c, 0xc4d7, 0x080c, 0x580a,
10591 + 0x007e, 0x003e, 0x001e, 0x080c, 0xae48, 0x080c, 0xae54, 0x00ce,
10592 + 0x0804, 0x7a22, 0x2c78, 0x600c, 0x2060, 0x0804, 0x7a22, 0x85ff,
10593 + 0x0120, 0x0036, 0x080c, 0x7f6e, 0x003e, 0x012e, 0x000e, 0x001e,
10594 + 0x002e, 0x003e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee,
10595 + 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x0158, 0x601c, 0xa086,
10596 + 0x0009, 0x1190, 0x684b, 0x0006, 0x080c, 0x580a, 0x080c, 0x95e3,
10597 + 0x08b0, 0x0016, 0x0036, 0x0076, 0x080c, 0xc4d7, 0x080c, 0xc141,
10598 + 0x007e, 0x003e, 0x001e, 0x0848, 0x601c, 0xa086, 0x000a, 0x0904,
10599 + 0x7a6c, 0x0804, 0x7a6a, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x00f6,
10600 + 0x2031, 0x0000, 0x0126, 0x2091, 0x8000, 0x2079, 0xc927, 0x7838,
10601 + 0xa065, 0x0568, 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, 0xac06,
10602 + 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x7833, 0x0000,
10603 + 0x783f, 0x0000, 0x7843, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000,
10604 + 0x003e, 0x080c, 0xac91, 0x0178, 0x6010, 0x2068, 0x601c, 0xa086,
10605 + 0x0003, 0x11b0, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c,
10606 + 0x580a, 0x080c, 0xae48, 0x080c, 0xae54, 0x000e, 0x0888, 0x7e3a,
10607 + 0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005,
10608 + 0x601c, 0xa086, 0x0006, 0x0150, 0x601c, 0xa086, 0x0009, 0x1148,
10609 + 0x6b4a, 0x080c, 0x580a, 0x080c, 0x95e3, 0x0c38, 0x080c, 0xc141,
10610 + 0x0c10, 0x601c, 0xa086, 0x000a, 0x09b8, 0x08a0, 0x0016, 0x0026,
10611 + 0x0086, 0x2041, 0x0000, 0x0099, 0x080c, 0x7be4, 0x008e, 0x002e,
10612 + 0x001e, 0x0005, 0x00f6, 0x0126, 0x2079, 0xc927, 0x2091, 0x8000,
10613 + 0x080c, 0x7c71, 0x080c, 0x7ce3, 0x012e, 0x00fe, 0x0005, 0x00f6,
10614 + 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091,
10615 + 0x8000, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904,
10616 + 0x7bba, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x1904, 0x7bb5,
10617 + 0x88ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x7bb5, 0x7024, 0xac06,
10618 + 0x1538, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c, 0x7024,
10619 + 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7027, 0x0000,
10620 + 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803,
10621 + 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110,
10622 + 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x04e8,
10623 + 0x7014, 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140,
10624 + 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000,
10625 + 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678,
10626 + 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac91, 0x01b8, 0x601c,
10627 + 0xa086, 0x0003, 0x1540, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
10628 + 0x0016, 0x0036, 0x0086, 0x080c, 0xaf03, 0x080c, 0xc4d7, 0x080c,
10629 + 0x580a, 0x008e, 0x003e, 0x001e, 0x080c, 0xae48, 0x080c, 0xae54,
10630 + 0x080c, 0x8fb7, 0x00ce, 0x0804, 0x7b3e, 0x2c78, 0x600c, 0x2060,
10631 + 0x0804, 0x7b3e, 0x012e, 0x000e, 0x001e, 0x006e, 0x00ce, 0x00de,
10632 + 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1158, 0x0016,
10633 + 0x0036, 0x0086, 0x080c, 0xc4d7, 0x080c, 0xc141, 0x008e, 0x003e,
10634 + 0x001e, 0x08e0, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086,
10635 + 0x0085, 0x0908, 0x0898, 0x601c, 0xa086, 0x0005, 0x1978, 0x6004,
10636 + 0xa086, 0x0085, 0x0d20, 0x0850, 0x00c6, 0x0006, 0x0126, 0x2091,
10637 + 0x8000, 0xa280, 0xc77b, 0x2004, 0xa065, 0x0904, 0x7c6d, 0x00f6,
10638 + 0x00e6, 0x00d6, 0x0066, 0x2071, 0xc927, 0x6654, 0x7018, 0xac06,
10639 + 0x1108, 0x761a, 0x701c, 0xac06, 0x1130, 0x86ff, 0x1118, 0x7018,
10640 + 0x701e, 0x0008, 0x761e, 0x6058, 0xa07d, 0x0108, 0x7e56, 0xa6ed,
10641 + 0x0000, 0x0110, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, 0x0000,
10642 + 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5268, 0x0904, 0x7c69,
10643 + 0x7624, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06, 0x15c0,
10644 + 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c, 0x7024,
10645 + 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7027, 0x0000,
10646 + 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803,
10647 + 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110,
10648 + 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005, 0x0110,
10649 + 0x8001, 0x603e, 0x2660, 0x080c, 0xae54, 0x00ce, 0x0048, 0x00de,
10650 + 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x7c14,
10651 + 0x8dff, 0x0158, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c,
10652 + 0xaf03, 0x080c, 0xc4d7, 0x080c, 0x580a, 0x080c, 0x8fb7, 0x0804,
10653 + 0x7c14, 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce,
10654 + 0x0005, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x2031, 0x0000, 0x7814,
10655 + 0xa065, 0x0904, 0x7cc3, 0x600c, 0x0006, 0x600f, 0x0000, 0x7824,
10656 + 0xac06, 0x1540, 0x2069, 0x0100, 0x68c0, 0xa005, 0x01f0, 0x080c,
10657 + 0x7024, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7827,
10658 + 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120,
10659 + 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
10660 + 0x0110, 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, 0x0009, 0x630a,
10661 + 0x2c30, 0x00b0, 0x6010, 0x2068, 0x080c, 0xac91, 0x0168, 0x601c,
10662 + 0xa086, 0x0003, 0x11b8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
10663 + 0x080c, 0x580a, 0x080c, 0xae48, 0x080c, 0xae54, 0x080c, 0x8fb7,
10664 + 0x000e, 0x0804, 0x7c78, 0x7e16, 0x7e12, 0x00de, 0x00ce, 0x006e,
10665 + 0x000e, 0x0005, 0x601c, 0xa086, 0x0006, 0x1118, 0x080c, 0xc141,
10666 + 0x0c58, 0x601c, 0xa086, 0x0002, 0x1128, 0x6004, 0xa086, 0x0085,
10667 + 0x09d0, 0x0c10, 0x601c, 0xa086, 0x0005, 0x19f0, 0x6004, 0xa086,
10668 + 0x0085, 0x0d60, 0x08c8, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x7818,
10669 + 0xa065, 0x0904, 0x7d49, 0x6054, 0x0006, 0x6057, 0x0000, 0x605b,
10670 + 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x5268, 0x0904,
10671 + 0x7d46, 0x7e24, 0x86ff, 0x05e8, 0xa680, 0x0004, 0x2004, 0xad06,
10672 + 0x15c0, 0x00d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0548, 0x080c,
10673 + 0x7024, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c, 0x90e6, 0x7827,
10674 + 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120,
10675 + 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
10676 + 0x0110, 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0xa005,
10677 + 0x0110, 0x8001, 0x603e, 0x2660, 0x080c, 0xae54, 0x00ce, 0x0048,
10678 + 0x00de, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804,
10679 + 0x7cf5, 0x8dff, 0x0138, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
10680 + 0x080c, 0x580a, 0x080c, 0x8fb7, 0x0804, 0x7cf5, 0x000e, 0x0804,
10681 + 0x7ce8, 0x781e, 0x781a, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005,
10682 + 0x00e6, 0x00d6, 0x0066, 0x6000, 0xd0dc, 0x01a0, 0x604c, 0xa06d,
10683 + 0x0188, 0x6848, 0xa606, 0x1170, 0x2071, 0xc927, 0x7024, 0xa035,
10684 + 0x0148, 0xa080, 0x0004, 0x2004, 0xad06, 0x1120, 0x6000, 0xc0dc,
10685 + 0x6002, 0x0021, 0x006e, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x2079,
10686 + 0x0100, 0x78c0, 0xa005, 0x1138, 0x00c6, 0x2660, 0x6003, 0x0009,
10687 + 0x630a, 0x00ce, 0x04a0, 0x080c, 0x8bf5, 0x78c3, 0x0000, 0x080c,
10688 + 0x90e6, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, 0x7b04, 0xa384,
10689 + 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x2079, 0x0100,
10690 + 0x7824, 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, 0x90e6, 0x003e,
10691 + 0x080c, 0x5268, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, 0x603e,
10692 + 0x2660, 0x080c, 0x95e3, 0x00ce, 0x6837, 0x0103, 0x6b4a, 0x6847,
10693 + 0x0000, 0x080c, 0xaf03, 0x080c, 0x580a, 0x080c, 0x8fb7, 0x00fe,
10694 + 0x0005, 0x00e6, 0x00c6, 0x2071, 0xc927, 0x7004, 0xa084, 0x0007,
10695 + 0x0002, 0x7dc3, 0x7dc6, 0x7ddc, 0x7df5, 0x7e32, 0x7dc3, 0x7dc1,
10696 + 0x7dc1, 0x080c, 0x1519, 0x00ce, 0x00ee, 0x0005, 0x7024, 0xa065,
10697 + 0x0148, 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0150, 0x7216,
10698 + 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee,
10699 + 0x0005, 0x7216, 0x7212, 0x0cb0, 0x6018, 0x2060, 0x080c, 0x5268,
10700 + 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0120, 0x6054,
10701 + 0xa015, 0x0140, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce,
10702 + 0x00ee, 0x0005, 0x7218, 0x721e, 0x0cb0, 0x7024, 0xa065, 0x05b8,
10703 + 0x700c, 0xac06, 0x1160, 0x080c, 0x8fb7, 0x600c, 0xa015, 0x0120,
10704 + 0x720e, 0x600f, 0x0000, 0x0448, 0x720e, 0x720a, 0x0430, 0x7014,
10705 + 0xac06, 0x1160, 0x080c, 0x8fb7, 0x600c, 0xa015, 0x0120, 0x7216,
10706 + 0x600f, 0x0000, 0x00d0, 0x7216, 0x7212, 0x00b8, 0x601c, 0xa086,
10707 + 0x0003, 0x1198, 0x6018, 0x2060, 0x080c, 0x5268, 0x6000, 0xc0dc,
10708 + 0x6002, 0x080c, 0x8fb7, 0x701c, 0xa065, 0x0138, 0x6054, 0xa015,
10709 + 0x0110, 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce,
10710 + 0x00ee, 0x0005, 0x7024, 0xa065, 0x0140, 0x080c, 0x8fb7, 0x600c,
10711 + 0xa015, 0x0150, 0x720e, 0x600f, 0x0000, 0x080c, 0x90e6, 0x7027,
10712 + 0x0000, 0x00ce, 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, 0x00d6,
10713 + 0x2069, 0xc927, 0x6830, 0xa084, 0x0003, 0x0002, 0x7e54, 0x7e56,
10714 + 0x7e7a, 0x7e52, 0x080c, 0x1519, 0x00de, 0x0005, 0x00c6, 0x6840,
10715 + 0xa086, 0x0001, 0x01b8, 0x683c, 0xa065, 0x0130, 0x600c, 0xa015,
10716 + 0x0170, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000,
10717 + 0x2011, 0xc946, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a,
10718 + 0x6836, 0x0c90, 0x6843, 0x0000, 0x6838, 0xa065, 0x0d68, 0x6003,
10719 + 0x0003, 0x0c50, 0x00c6, 0x6843, 0x0000, 0x6847, 0x0000, 0x684b,
10720 + 0x0000, 0x683c, 0xa065, 0x0168, 0x600c, 0xa015, 0x0130, 0x6a3a,
10721 + 0x600f, 0x0000, 0x683f, 0x0000, 0x0020, 0x683f, 0x0000, 0x683a,
10722 + 0x6836, 0x00ce, 0x00de, 0x0005, 0x00d6, 0x2069, 0xc927, 0x6804,
10723 + 0xa084, 0x0007, 0x0006, 0xa005, 0x11c8, 0x2001, 0xc635, 0x2004,
10724 + 0xa084, 0x0028, 0x1198, 0x2001, 0xc8e5, 0x2004, 0xa086, 0xaaaa,
10725 + 0x0168, 0x2001, 0xc696, 0x2004, 0xd08c, 0x1118, 0xd084, 0x1118,
10726 + 0x0028, 0x080c, 0x7f6e, 0x000e, 0x00de, 0x0005, 0x000e, 0x0002,
10727 + 0x7ec2, 0x7f5e, 0x7f5e, 0x7f5e, 0x7f5e, 0x7f60, 0x7ec0, 0x7ec0,
10728 + 0x080c, 0x1519, 0x6820, 0xa005, 0x1110, 0x00de, 0x0005, 0x00c6,
10729 + 0x680c, 0xa065, 0x0150, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000,
10730 + 0x080c, 0x7ff0, 0x00ce, 0x00de, 0x0005, 0x6814, 0xa065, 0x0150,
10731 + 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x080c, 0x7ff0, 0x00ce,
10732 + 0x00de, 0x0005, 0x00e6, 0x0036, 0x6a1c, 0xa2f5, 0x0000, 0x0904,
10733 + 0x7f5a, 0x704c, 0xa00d, 0x0118, 0x7088, 0xa005, 0x01a0, 0x7054,
10734 + 0xa075, 0x0120, 0xa20e, 0x0904, 0x7f5a, 0x0028, 0x6818, 0xa20e,
10735 + 0x0904, 0x7f5a, 0x2070, 0x704c, 0xa00d, 0x0d88, 0x7088, 0xa005,
10736 + 0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, 0x1e40, 0x080c,
10737 + 0x95ba, 0x0904, 0x7f5a, 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a,
10738 + 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, 0x605a, 0xa180, 0x0014,
10739 + 0x2003, 0x0000, 0xa180, 0x0015, 0x2004, 0xa08a, 0x199a, 0x0210,
10740 + 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x003e,
10741 + 0x00f6, 0x2c78, 0x71a0, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110,
10742 + 0xd1bc, 0x0150, 0x7100, 0xd1f4, 0x0120, 0x7114, 0xa18c, 0x00ff,
10743 + 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, 0x2c0d, 0xa18c,
10744 + 0x00ff, 0x2061, 0x0100, 0x619a, 0x080c, 0x8620, 0x7300, 0xc3dd,
10745 + 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x781f,
10746 + 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x00fe, 0x00ee, 0x00ce,
10747 + 0x00de, 0x0005, 0x003e, 0x00ee, 0x00ce, 0x0cd0, 0x00de, 0x0005,
10748 + 0x00c6, 0x680c, 0xa065, 0x0138, 0x6807, 0x0004, 0x6826, 0x682b,
10749 + 0x0000, 0x080c, 0x7ff0, 0x00ce, 0x00de, 0x0005, 0x00f6, 0x00d6,
10750 + 0x2069, 0xc927, 0x6830, 0xa086, 0x0000, 0x1904, 0x7fcb, 0x2001,
10751 + 0xc60c, 0x200c, 0xd1bc, 0x1904, 0x7fe6, 0x6838, 0xa07d, 0x0904,
10752 + 0x7fcb, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x11f8, 0x2001,
10753 + 0xc8e5, 0x2004, 0xa086, 0xaaaa, 0x01c8, 0x781c, 0xa086, 0x0009,
10754 + 0x11a8, 0x7808, 0xd0fc, 0x0190, 0x2001, 0xc928, 0x2004, 0xa005,
10755 + 0x1138, 0x2001, 0xc696, 0x200c, 0xc185, 0xc18c, 0x2102, 0x0030,
10756 + 0x2011, 0xc696, 0x2204, 0xc08d, 0x2012, 0x0428, 0x2f00, 0x6833,
10757 + 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6,
10758 + 0x2091, 0x2400, 0x002e, 0x080c, 0x20ef, 0x11c0, 0x012e, 0xe000,
10759 + 0xe000, 0xe000, 0x6a3c, 0x2278, 0x781c, 0xa086, 0x0009, 0x1148,
10760 + 0x7808, 0xd0fc, 0x0118, 0x080c, 0x8969, 0x0028, 0x080c, 0x89e2,
10761 + 0x0010, 0x080c, 0x8a66, 0x00de, 0x00fe, 0x0005, 0x012e, 0xe000,
10762 + 0x6843, 0x0000, 0x781c, 0xa086, 0x0009, 0x0110, 0x7803, 0x0002,
10763 + 0x780c, 0xa015, 0x0140, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000,
10764 + 0x683f, 0x0000, 0x0c40, 0x683a, 0x6836, 0x0cc0, 0xc1bc, 0x2102,
10765 + 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0804, 0x7f7d,
10766 + 0x601c, 0xa084, 0x000f, 0x000b, 0x0005, 0x7ffe, 0x8003, 0x84c1,
10767 + 0x85dd, 0x8003, 0x84c1, 0x85dd, 0x7ffe, 0x8003, 0x080c, 0x7db1,
10768 + 0x080c, 0x7e94, 0x0005, 0x0156, 0x0136, 0x0146, 0x00c6, 0x00f6,
10769 + 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1519, 0x6118, 0x2178, 0x79a0,
10770 + 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x7900,
10771 + 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000,
10772 + 0x0028, 0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, 0x2061,
10773 + 0x0100, 0x619a, 0xa08a, 0x0040, 0x1a04, 0x8077, 0x0033, 0x00fe,
10774 + 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x8126, 0x8171, 0x819e,
10775 + 0x826b, 0x8299, 0x82a1, 0x82c7, 0x82d8, 0x82e9, 0x82f1, 0x8307,
10776 + 0x82f1, 0x8368, 0x82d8, 0x8389, 0x8391, 0x82e9, 0x8391, 0x83a2,
10777 + 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075, 0x8075,
10778 + 0x8075, 0x8075, 0x8075, 0x8d1a, 0x8d3f, 0x8d54, 0x8d77, 0x8d98,
10779 + 0x82c7, 0x8075, 0x82c7, 0x82f1, 0x8075, 0x819e, 0x826b, 0x8075,
10780 + 0x91e8, 0x82f1, 0x8075, 0x9208, 0x82f1, 0x8075, 0x82e9, 0x811f,
10781 + 0x808a, 0x8075, 0x922d, 0x92a2, 0x9379, 0x8075, 0x938a, 0x82c2,
10782 + 0x93a6, 0x8075, 0x8dad, 0x9401, 0x8075, 0x080c, 0x1519, 0x2100,
10783 + 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x9458,
10784 + 0x9507, 0x8088, 0x80be, 0x80dc, 0x80f2, 0x8088, 0x82c7, 0x8088,
10785 + 0x080c, 0x1519, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x7810,
10786 + 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, 0x0800, 0x683c,
10787 + 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10788 + 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, 0x0000, 0x20a3,
10789 + 0x0000, 0x60c3, 0x0018, 0x080c, 0x8be2, 0x00de, 0x0005, 0x00d6,
10790 + 0x7818, 0x2068, 0x68a0, 0x2069, 0xc600, 0x6ad4, 0xd2ac, 0x1110,
10791 + 0xd0bc, 0x0110, 0xa085, 0x0001, 0x00de, 0x0005, 0x00d6, 0x20a1,
10792 + 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0500, 0x20a3, 0x0000, 0x7810,
10793 + 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, 0x6810, 0x20a2,
10794 + 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, 0x60c3, 0x0010,
10795 + 0x080c, 0x8be2, 0x00de, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b,
10796 + 0x080c, 0x83bf, 0x20a3, 0x7800, 0x20a3, 0x0000, 0x7808, 0x8007,
10797 + 0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x014e,
10798 + 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x845b,
10799 + 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0xdf10, 0x20a3, 0x0034,
10800 + 0x2099, 0xc605, 0x20a9, 0x0004, 0x53a6, 0x2099, 0xc601, 0x20a9,
10801 + 0x0004, 0x53a6, 0x2099, 0xc90d, 0x20a9, 0x001a, 0x3304, 0x8007,
10802 + 0x20a2, 0x9398, 0x1f04, 0x810e, 0x20a3, 0x0000, 0x20a3, 0x0000,
10803 + 0x60c3, 0x004c, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x2001,
10804 + 0xc615, 0x2004, 0x609a, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b,
10805 + 0x080c, 0x83bf, 0x20a3, 0x5200, 0x20a3, 0x0000, 0x00d6, 0x2069,
10806 + 0xc652, 0x6804, 0xd084, 0x0150, 0x6828, 0x20a3, 0x0000, 0x0016,
10807 + 0x080c, 0x29db, 0x21a2, 0x001e, 0x00de, 0x0028, 0x00de, 0x20a3,
10808 + 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, 0x53a6,
10809 + 0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x2001, 0xc635, 0x2004,
10810 + 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f,
10811 + 0x0238, 0x2001, 0xc61c, 0x20a6, 0x2001, 0xc61d, 0x20a6, 0x0040,
10812 + 0x20a3, 0x0000, 0x2001, 0xc615, 0x2004, 0xa084, 0x00ff, 0x20a2,
10813 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x080c, 0x8be2,
10814 + 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0500, 0x20a3,
10815 + 0x0000, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080,
10816 + 0x0028, 0x2004, 0xa082, 0x007f, 0x0238, 0x2001, 0xc61c, 0x20a6,
10817 + 0x2001, 0xc61d, 0x20a6, 0x0040, 0x20a3, 0x0000, 0x2001, 0xc615,
10818 + 0x2004, 0xa084, 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099, 0xc605,
10819 + 0x53a6, 0x60c3, 0x0010, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b,
10820 + 0x080c, 0x83bf, 0x00c6, 0x7818, 0x2060, 0x2001, 0x0000, 0x080c,
10821 + 0x5715, 0x00ce, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e,
10822 + 0x1130, 0x20a3, 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0010, 0x20a3,
10823 + 0x0300, 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086,
10824 + 0x007e, 0x1904, 0x822d, 0x2001, 0xc635, 0x2004, 0xd0a4, 0x01c8,
10825 + 0x2099, 0xc8d5, 0x33a6, 0x9398, 0x20a3, 0x0000, 0x9398, 0x3304,
10826 + 0xa084, 0x2000, 0x20a2, 0x9398, 0x33a6, 0x9398, 0x20a3, 0x0000,
10827 + 0x9398, 0x2001, 0x2710, 0x20a2, 0x9398, 0x33a6, 0x9398, 0x33a6,
10828 + 0x00d0, 0x2099, 0xc8d5, 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304,
10829 + 0x080c, 0x5f22, 0x1118, 0xa084, 0x37ff, 0x0010, 0xa084, 0x3fff,
10830 + 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10831 + 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0xc605, 0x53a6,
10832 + 0x20a9, 0x0004, 0x2099, 0xc601, 0x53a6, 0x20a9, 0x0008, 0x20a3,
10833 + 0x0000, 0x1f04, 0x8207, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04,
10834 + 0x820d, 0x2099, 0xc8dd, 0x3304, 0xc0dd, 0x20a2, 0x2001, 0xc672,
10835 + 0x2004, 0xd0e4, 0x0158, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x9398,
10836 + 0x9398, 0x9398, 0x33a6, 0x20a9, 0x0004, 0x0010, 0x20a9, 0x0007,
10837 + 0x20a3, 0x0000, 0x1f04, 0x8228, 0x0468, 0x2001, 0xc635, 0x2004,
10838 + 0xd0a4, 0x0140, 0x2001, 0xc8d6, 0x2004, 0x60e3, 0x0000, 0x080c,
10839 + 0x2a1c, 0x60e2, 0x2099, 0xc8d5, 0x20a9, 0x0008, 0x53a6, 0x20a9,
10840 + 0x0004, 0x2099, 0xc605, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xc601,
10841 + 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x824b, 0x20a9,
10842 + 0x0008, 0x20a3, 0x0000, 0x1f04, 0x8251, 0x2099, 0xc8dd, 0x20a9,
10843 + 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x825c,
10844 + 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x8262, 0x60c3, 0x0074,
10845 + 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3,
10846 + 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, 0xa006,
10847 + 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, 0x2079, 0xc652,
10848 + 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, 0xd1a4, 0x0110,
10849 + 0xa085, 0x0010, 0xa085, 0x0002, 0x00d6, 0x0804, 0x834a, 0x20a2,
10850 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x8be2,
10851 + 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x5000, 0x0804,
10852 + 0x81b9, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x2110, 0x20a3,
10853 + 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10854 + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
10855 + 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c,
10856 + 0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x8453, 0x0020, 0x20a1,
10857 + 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3,
10858 + 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8be2, 0x0005,
10859 + 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, 0x0000,
10860 + 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x080c, 0x8be2,
10861 + 0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x0804,
10862 + 0x81b9, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3,
10863 + 0x0000, 0x7828, 0xa005, 0x0110, 0x20a2, 0x0010, 0x20a3, 0x0003,
10864 + 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x00d6,
10865 + 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0210, 0x20a3, 0x0014,
10866 + 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x1198,
10867 + 0x699c, 0xa184, 0x0030, 0x0190, 0x6998, 0xa184, 0xc000, 0x1140,
10868 + 0xd1ec, 0x0118, 0x20a3, 0x2100, 0x0058, 0x20a3, 0x0100, 0x0040,
10869 + 0x20a3, 0x0400, 0x0028, 0x20a3, 0x0700, 0x0010, 0x700f, 0x0800,
10870 + 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x00f6, 0x2079,
10871 + 0xc652, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, 0x0020, 0xd1a4,
10872 + 0x0110, 0xa085, 0x0010, 0x2009, 0xc674, 0x210c, 0xd184, 0x1110,
10873 + 0xa085, 0x0002, 0x0026, 0x2009, 0xc672, 0x210c, 0xd1e4, 0x0130,
10874 + 0xc0c5, 0xa094, 0x0030, 0xa296, 0x0010, 0x0140, 0xd1ec, 0x0130,
10875 + 0xa094, 0x0030, 0xa296, 0x0010, 0x0108, 0xc0bd, 0x002e, 0x20a2,
10876 + 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x080c, 0x8be2, 0x00de, 0x0005,
10877 + 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0210, 0x20a3, 0x0014,
10878 + 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0000,
10879 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
10880 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x8be2,
10881 + 0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x0804,
10882 + 0x812c, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3,
10883 + 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x080c,
10884 + 0x8be2, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, 0x020b,
10885 + 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x000b,
10886 + 0x20a3, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x0026,
10887 + 0x0036, 0x0046, 0x2019, 0x3200, 0x2021, 0x0800, 0x0038, 0x0026,
10888 + 0x0036, 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, 0x20e1, 0x9080,
10889 + 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e,
10890 + 0x11a0, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffe, 0x20a3, 0x0000,
10891 + 0x2011, 0xc615, 0x2214, 0x2001, 0xc8e5, 0x2004, 0xa005, 0x0118,
10892 + 0x2011, 0xc61d, 0x2214, 0x22a2, 0x04d0, 0xa286, 0x007f, 0x1138,
10893 + 0x00d6, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, 0x00c8, 0x2001,
10894 + 0xc635, 0x2004, 0xd0ac, 0x1110, 0xd2bc, 0x01c8, 0xa286, 0x0080,
10895 + 0x00d6, 0x1130, 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffc, 0x0040,
10896 + 0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2,
10897 + 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6,
10898 + 0xa2e8, 0xc77b, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2,
10899 + 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0xa485,
10900 + 0x0029, 0x20a2, 0x004e, 0x003e, 0x20a3, 0x0000, 0x080c, 0x8bd1,
10901 + 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000,
10902 + 0x20a3, 0x0000, 0x002e, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1,
10903 + 0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, 0x22a2, 0x00d6, 0x2069,
10904 + 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x20a3, 0x2029, 0x20a3,
10905 + 0x0000, 0x08e0, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02,
10906 + 0x20a3, 0x0000, 0x0005, 0x0026, 0x0036, 0x0046, 0x2019, 0x3300,
10907 + 0x2021, 0x0800, 0x0038, 0x0026, 0x0036, 0x0046, 0x2019, 0x2300,
10908 + 0x2021, 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
10909 + 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092,
10910 + 0x007e, 0x02d8, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa305,
10911 + 0x20a2, 0x6814, 0x20a2, 0x6810, 0xa005, 0x1140, 0x6814, 0xa005,
10912 + 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0028, 0x2069, 0xc61c,
10913 + 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0080, 0x00d6, 0xa0e8, 0xc77b,
10914 + 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3,
10915 + 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0xa485, 0x0098, 0x20a2,
10916 + 0x20a3, 0x0000, 0x004e, 0x003e, 0x080c, 0x8bd1, 0x22a2, 0x20a3,
10917 + 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000,
10918 + 0x002e, 0x0005, 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x7a08,
10919 + 0x22a2, 0x7810, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e,
10920 + 0x0005, 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0085, 0x0a0c, 0x1519,
10921 + 0xa08a, 0x008c, 0x1a0c, 0x1519, 0x6118, 0x2178, 0x79a0, 0x2011,
10922 + 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x7900, 0xd1f4,
10923 + 0x0120, 0x7914, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028,
10924 + 0xa1f8, 0x2f6e, 0x2f0d, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100,
10925 + 0x619a, 0xa082, 0x0085, 0x001b, 0x00fe, 0x00ce, 0x0005, 0x84f8,
10926 + 0x8502, 0x851d, 0x84f6, 0x84f6, 0x84f6, 0x84f8, 0x080c, 0x1519,
10927 + 0x0146, 0x20a1, 0x020b, 0x04a1, 0x60c3, 0x0000, 0x080c, 0x8be2,
10928 + 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8569, 0x20a3,
10929 + 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, 0x20a2, 0x20a3,
10930 + 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
10931 + 0x000c, 0x080c, 0x8be2, 0x014e, 0x0005, 0x0146, 0x20a1, 0x020b,
10932 + 0x080c, 0x85a3, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3, 0x0000,
10933 + 0x20a3, 0x0000, 0x60c3, 0x0004, 0x080c, 0x8be2, 0x014e, 0x0005,
10934 + 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
10935 + 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e,
10936 + 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x8100,
10937 + 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6,
10938 + 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085,
10939 + 0x8100, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011,
10940 + 0xc615, 0x2214, 0x22a2, 0x20a3, 0x0009, 0x20a3, 0x0000, 0x0804,
10941 + 0x8426, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
10942 + 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092,
10943 + 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085,
10944 + 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68,
10945 + 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810,
10946 + 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000,
10947 + 0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, 0x0099, 0x20a2, 0x20a3,
10948 + 0x0000, 0x0804, 0x84b2, 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000,
10949 + 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac,
10950 + 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
10951 + 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
10952 + 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
10953 + 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x00de,
10954 + 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x2001, 0x0099,
10955 + 0x20a2, 0x20a3, 0x0000, 0x0804, 0x84b2, 0x00c6, 0x00f6, 0x2c78,
10956 + 0x7804, 0xa08a, 0x0040, 0x0a0c, 0x1519, 0xa08a, 0x0053, 0x1a0c,
10957 + 0x1519, 0x7918, 0x2160, 0x61a0, 0x2011, 0xc635, 0x2214, 0xd2ac,
10958 + 0x1110, 0xd1bc, 0x0150, 0x6100, 0xd1f4, 0x0120, 0x6114, 0xa18c,
10959 + 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, 0x2f6e, 0x2c0d,
10960 + 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x001b,
10961 + 0x00fe, 0x00ce, 0x0005, 0x8620, 0x872c, 0x86c9, 0x88de, 0x861e,
10962 + 0x861e, 0x861e, 0x861e, 0x861e, 0x861e, 0x861e, 0x8f70, 0x8f80,
10963 + 0x8f90, 0x8fa0, 0x861e, 0x93b7, 0x861e, 0x8f5f, 0x080c, 0x1519,
10964 + 0x00d6, 0x0156, 0x0146, 0x780b, 0xffff, 0x20a1, 0x020b, 0x080c,
10965 + 0x8680, 0x7910, 0x2168, 0x6948, 0x7952, 0x21a2, 0xa016, 0x22a2,
10966 + 0x22a2, 0x22a2, 0x694c, 0xa184, 0x000f, 0x1118, 0x2001, 0x0005,
10967 + 0x0040, 0xd184, 0x0118, 0x2001, 0x0004, 0x0018, 0xa084, 0x0006,
10968 + 0x8004, 0x0016, 0x2008, 0x7858, 0xa084, 0x00ff, 0x8007, 0xa105,
10969 + 0x001e, 0x20a2, 0xd1ac, 0x0118, 0x20a3, 0x0002, 0x0048, 0xd1b4,
10970 + 0x0118, 0x20a3, 0x0001, 0x0020, 0x20a3, 0x0000, 0x2230, 0x0010,
10971 + 0x6a80, 0x6e7c, 0x20a9, 0x0008, 0x0136, 0xad88, 0x0017, 0x2198,
10972 + 0x20a1, 0x021b, 0x53a6, 0x013e, 0x20a1, 0x020b, 0x22a2, 0x26a2,
10973 + 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, 0xa084, 0x0004, 0xa085,
10974 + 0x0009, 0x6016, 0x2001, 0xc943, 0x2003, 0x07d0, 0x2001, 0xc942,
10975 + 0x2003, 0x0009, 0x080c, 0x17f1, 0x014e, 0x015e, 0x00de, 0x0005,
10976 + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014,
10977 + 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028,
10978 + 0x2004, 0x2019, 0xc635, 0x231c, 0xd3ac, 0x1110, 0xd0bc, 0x0188,
10979 + 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2,
10980 + 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de,
10981 + 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0600,
10982 + 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2009, 0xc615,
10983 + 0x210c, 0x21a2, 0x20a3, 0x0829, 0x20a3, 0x0000, 0x22a2, 0x20a3,
10984 + 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000,
10985 + 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x20a1, 0x020b, 0x00c1,
10986 + 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2,
10987 + 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3,
10988 + 0x000c, 0x080c, 0x8be2, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005,
10989 + 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
10990 + 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188,
10991 + 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2,
10992 + 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de,
10993 + 0x0088, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0500,
10994 + 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xc615,
10995 + 0x2214, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x080c, 0x8bd1,
10996 + 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000,
10997 + 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146,
10998 + 0x7810, 0xa0ec, 0xf000, 0x0168, 0xa06d, 0x080c, 0x56bf, 0x0148,
10999 + 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x1118, 0x7820, 0xc0cd,
11000 + 0x7822, 0x20a1, 0x020b, 0x080c, 0x8894, 0xa016, 0x22a2, 0x22a2,
11001 + 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, 0x1130, 0x7810,
11002 + 0xa084, 0x0700, 0x8007, 0x0043, 0x0010, 0xa006, 0x002b, 0x014e,
11003 + 0x013e, 0x015e, 0x00de, 0x0005, 0x8766, 0x87fb, 0x880b, 0x883d,
11004 + 0x8850, 0x886b, 0x8874, 0x8764, 0x080c, 0x1519, 0x0016, 0x0036,
11005 + 0x694c, 0xa18c, 0x0003, 0x0118, 0xa186, 0x0003, 0x1170, 0x6b78,
11006 + 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868, 0x20a2, 0x6864,
11007 + 0x20a2, 0x003e, 0x001e, 0x0804, 0x8847, 0xa186, 0x0001, 0x190c,
11008 + 0x1519, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, 0x23a2, 0x6868,
11009 + 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c,
11010 + 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0904, 0x87f5, 0xd3c4,
11011 + 0x0110, 0x687c, 0xa108, 0xd3cc, 0x0110, 0x6874, 0xa108, 0x0156,
11012 + 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2, 0x8000,
11013 + 0x1f04, 0x87a4, 0x015e, 0x22a2, 0x22a2, 0x22a2, 0xa184, 0x0003,
11014 + 0x0904, 0x87f5, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000,
11015 + 0x0006, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214,
11016 + 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
11017 + 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
11018 + 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
11019 + 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x00de,
11020 + 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x000e, 0x7b20,
11021 + 0xd3cc, 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, 0x20a2,
11022 + 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x003e, 0x001e,
11023 + 0x080c, 0x8be2, 0x0005, 0x2011, 0x0008, 0x2001, 0xc60d, 0x2004,
11024 + 0xd0f4, 0x0110, 0x2011, 0x0028, 0x7820, 0xd0cc, 0x0108, 0xc2e5,
11025 + 0x22a2, 0xa016, 0x04d0, 0x2011, 0x0302, 0x0016, 0x0036, 0x7828,
11026 + 0x792c, 0xa11d, 0x0108, 0xc2dd, 0x7b20, 0xd3cc, 0x0108, 0xc2e5,
11027 + 0x22a2, 0x20a2, 0x21a2, 0x003e, 0x001e, 0xa016, 0x22a2, 0x20a3,
11028 + 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
11029 + 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a, 0x22a2,
11030 + 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
11031 + 0x60c3, 0x0032, 0x080c, 0x8be2, 0x0005, 0x2011, 0x0028, 0x7820,
11032 + 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2,
11033 + 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x080c, 0x8be2, 0x0005,
11034 + 0x2011, 0x0100, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016,
11035 + 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2,
11036 + 0x7854, 0xa084, 0x00ff, 0x20a2, 0x22a2, 0x22a2, 0x60c3, 0x0020,
11037 + 0x080c, 0x8be2, 0x0005, 0x2011, 0x0008, 0x7820, 0xd0cc, 0x0108,
11038 + 0xc2e5, 0x22a2, 0xa016, 0x0888, 0x0036, 0x7b10, 0xa384, 0xff00,
11039 + 0x7812, 0xa384, 0x00ff, 0x8001, 0x1138, 0x7820, 0xd0cc, 0x0108,
11040 + 0xc2e5, 0x22a2, 0x003e, 0x0808, 0x0046, 0x2021, 0x0800, 0x0006,
11041 + 0x7820, 0xd0cc, 0x000e, 0x0108, 0xc4e5, 0x24a2, 0x004e, 0x22a2,
11042 + 0x20a2, 0x003e, 0x0804, 0x8847, 0x0026, 0x20e1, 0x9080, 0x20e1,
11043 + 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214,
11044 + 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
11045 + 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
11046 + 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
11047 + 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x00de,
11048 + 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x7820, 0xd0cc,
11049 + 0x0118, 0x20a3, 0x0889, 0x0010, 0x20a3, 0x0898, 0x20a3, 0x0000,
11050 + 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2,
11051 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00d6, 0x0156,
11052 + 0x0136, 0x0146, 0x0016, 0x0036, 0x7810, 0xa084, 0x0700, 0x8007,
11053 + 0x003b, 0x003e, 0x001e, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005,
11054 + 0x88f8, 0x88f8, 0x88fa, 0x88f8, 0x88f8, 0x88f8, 0x891c, 0x88f8,
11055 + 0x080c, 0x1519, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, 0x7912,
11056 + 0x20a1, 0x020b, 0x2009, 0x0003, 0x00f9, 0x00d6, 0x2069, 0xc652,
11057 + 0x6804, 0xd0bc, 0x0130, 0x682c, 0xa084, 0x00ff, 0x8007, 0x20a2,
11058 + 0x0010, 0x20a3, 0x3f00, 0x00de, 0x22a2, 0x22a2, 0x22a2, 0x60c3,
11059 + 0x0001, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b, 0x2009, 0x0003,
11060 + 0x0019, 0x20a3, 0x7f00, 0x0c80, 0x0026, 0x20e1, 0x9080, 0x20e1,
11061 + 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xc635, 0x2214,
11062 + 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c,
11063 + 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xc61c,
11064 + 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xc77b,
11065 + 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x00de,
11066 + 0x20a3, 0x0000, 0x2011, 0xc615, 0x2214, 0x22a2, 0x20a3, 0x0888,
11067 + 0xa18d, 0x0008, 0x21a2, 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000,
11068 + 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e,
11069 + 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0036,
11070 + 0x2061, 0x0100, 0x2071, 0xc600, 0x2009, 0xc615, 0x210c, 0x7818,
11071 + 0x2068, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, 0x0110, 0x7370,
11072 + 0x7474, 0x2500, 0x2031, 0xc635, 0x2634, 0xa6b4, 0x0028, 0x0140,
11073 + 0x2001, 0x04ff, 0x6062, 0x6067, 0xffff, 0x636a, 0x646e, 0x0050,
11074 + 0x2001, 0x00ff, 0xa085, 0x0400, 0x6062, 0x6067, 0xffff, 0x606b,
11075 + 0x0000, 0x616e, 0x68b8, 0x6073, 0x0530, 0x6077, 0x0008, 0x688c,
11076 + 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0xa085, 0x0020, 0x607a,
11077 + 0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, 0x6087, 0xffff, 0x7810,
11078 + 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008,
11079 + 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7,
11080 + 0x0000, 0x2001, 0xc635, 0x2004, 0xa084, 0x0028, 0x0128, 0x609f,
11081 + 0x0000, 0x2001, 0x0092, 0x0048, 0x6028, 0xc0bd, 0x602a, 0x609f,
11082 + 0x00ff, 0x6027, 0xffff, 0x2001, 0x00b2, 0x6016, 0x2009, 0x07d0,
11083 + 0x080c, 0x7029, 0x003e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de,
11084 + 0x00ee, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046,
11085 + 0x0036, 0x2061, 0x0100, 0x2071, 0xc600, 0x2009, 0xc615, 0x210c,
11086 + 0x7818, 0x2068, 0x68a0, 0x2028, 0x2031, 0xc635, 0x2634, 0xd6ac,
11087 + 0x1160, 0xa582, 0x007e, 0x1248, 0x2500, 0xd0bc, 0x1130, 0xa080,
11088 + 0x2f6e, 0x2015, 0xa294, 0x00ff, 0x0020, 0x6910, 0x6a14, 0x7370,
11089 + 0x7474, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1128, 0xa582, 0x007e,
11090 + 0x1210, 0xd5bc, 0x0138, 0xa185, 0x0400, 0x6062, 0x6266, 0x636a,
11091 + 0x646e, 0x0030, 0x6063, 0x0400, 0x6266, 0x606b, 0x0000, 0x616e,
11092 + 0x68b8, 0x6072, 0x6077, 0x0000, 0x6864, 0xd0a4, 0x0110, 0x6077,
11093 + 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0xa085,
11094 + 0x0020, 0x607a, 0x68b4, 0x607f, 0x0000, 0x2d00, 0x6082, 0x6087,
11095 + 0xffff, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
11096 + 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af,
11097 + 0x95d5, 0x60d7, 0x0000, 0xa582, 0x007e, 0x0210, 0x2011, 0x0000,
11098 + 0x629e, 0x00f6, 0x2079, 0x0140, 0x7803, 0x0000, 0x00fe, 0x2009,
11099 + 0x0092, 0x6116, 0x2009, 0x07d0, 0x080c, 0x7029, 0x003e, 0x004e,
11100 + 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x00e6, 0x00d6,
11101 + 0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0xc600,
11102 + 0x7154, 0x7818, 0x2068, 0x68a0, 0x2028, 0x76d4, 0xd6ac, 0x1130,
11103 + 0xd0bc, 0x1120, 0x6910, 0x6a14, 0x7454, 0x0020, 0x6910, 0x6a14,
11104 + 0x7370, 0x7474, 0x781c, 0xa0be, 0x0006, 0x0904, 0x8b1c, 0xa0be,
11105 + 0x000a, 0x15e8, 0xa185, 0x0200, 0x6062, 0x6266, 0x636a, 0x646e,
11106 + 0x6073, 0x2029, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff,
11107 + 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808,
11108 + 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
11109 + 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7,
11110 + 0x0000, 0x609f, 0x0000, 0x080c, 0x9452, 0x2009, 0x07d0, 0x60c4,
11111 + 0xa084, 0xfff0, 0xa005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7029,
11112 + 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x70d4,
11113 + 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266,
11114 + 0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b,
11115 + 0x0000, 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, 0x688c, 0x8000,
11116 + 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00,
11117 + 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010,
11118 + 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af,
11119 + 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4,
11120 + 0x0120, 0x6a14, 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e,
11121 + 0x080c, 0x9452, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005,
11122 + 0x0110, 0x2009, 0x1b58, 0x080c, 0x7029, 0x003e, 0x004e, 0x005e,
11123 + 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7810, 0x2070, 0x704c, 0xa084,
11124 + 0x0003, 0xa086, 0x0002, 0x0904, 0x8b72, 0x2001, 0xc635, 0x2004,
11125 + 0xd0ac, 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266,
11126 + 0x636a, 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b,
11127 + 0x0000, 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000,
11128 + 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x7834, 0x607e, 0x2f00,
11129 + 0x6086, 0x7808, 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080,
11130 + 0x60c6, 0x707c, 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080,
11131 + 0x7928, 0xa109, 0x792a, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7,
11132 + 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14,
11133 + 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, 0x944f,
11134 + 0x0804, 0x8b0a, 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1110, 0xd5bc,
11135 + 0x0138, 0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0038,
11136 + 0xa185, 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x080c,
11137 + 0x56bf, 0x0180, 0x00d6, 0x7810, 0xa06d, 0x684c, 0x00de, 0xa084,
11138 + 0x2020, 0xa086, 0x2020, 0x1130, 0x7820, 0xc0cd, 0x7822, 0x6073,
11139 + 0x0889, 0x0010, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, 0x8000,
11140 + 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00,
11141 + 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
11142 + 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7,
11143 + 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14,
11144 + 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x7820, 0xd0cc,
11145 + 0x0120, 0x080c, 0x9452, 0x0804, 0x8b0a, 0x080c, 0x944f, 0x0804,
11146 + 0x8b0a, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff,
11147 + 0x2202, 0x8217, 0x0005, 0x00d6, 0x2069, 0xc927, 0x6843, 0x0001,
11148 + 0x00de, 0x0005, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
11149 + 0x0019, 0x080c, 0x701b, 0x0005, 0x0006, 0x6014, 0xa084, 0x0004,
11150 + 0xa085, 0x0009, 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006,
11151 + 0x2061, 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x6014, 0xa084, 0x0004,
11152 + 0xa085, 0x0008, 0x6016, 0x000e, 0xe000, 0xe000, 0xe000, 0xe000,
11153 + 0x61a6, 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026,
11154 + 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f22, 0x1198, 0x2001,
11155 + 0xc943, 0x2004, 0xa005, 0x15b8, 0x0066, 0x2031, 0x0001, 0x080c,
11156 + 0x5fa4, 0x006e, 0x1118, 0x080c, 0x701b, 0x0468, 0x00c6, 0x2061,
11157 + 0xc927, 0x00d8, 0x6904, 0xa194, 0x4000, 0x0550, 0x0831, 0x6803,
11158 + 0x1000, 0x6803, 0x0000, 0x00c6, 0x2061, 0xc927, 0x6128, 0xa192,
11159 + 0x00c8, 0x1258, 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198,
11160 + 0x080c, 0x701b, 0x080c, 0x8bec, 0x0070, 0x6124, 0xa1e5, 0x0000,
11161 + 0x0140, 0x080c, 0xc59b, 0x080c, 0x7024, 0x2009, 0x0014, 0x080c,
11162 + 0x9613, 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005,
11163 + 0x2001, 0xc943, 0x2004, 0xa005, 0x1db0, 0x00c6, 0x2061, 0xc927,
11164 + 0x6128, 0xa192, 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c,
11165 + 0x701b, 0x080c, 0x4e5b, 0x0c38, 0x00c6, 0x00d6, 0x00e6, 0x0016,
11166 + 0x0026, 0x080c, 0x7031, 0x2071, 0xc927, 0x713c, 0x81ff, 0x0904,
11167 + 0x8cc1, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x5f22, 0x1500,
11168 + 0x0036, 0x2019, 0x0002, 0x080c, 0x8e79, 0x003e, 0x713c, 0x2160,
11169 + 0x080c, 0xc59b, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, 0x1138,
11170 + 0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, 0x080c,
11171 + 0x9613, 0x0066, 0x2031, 0x0001, 0x080c, 0x5fa4, 0x006e, 0x0408,
11172 + 0x6904, 0xa194, 0x4000, 0x0518, 0x6803, 0x1000, 0x6803, 0x0000,
11173 + 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x003e, 0x713c, 0x2160,
11174 + 0x080c, 0xc59b, 0x2009, 0x004a, 0x621c, 0xa296, 0x0009, 0x1138,
11175 + 0x6110, 0xa188, 0x0012, 0x200b, 0x0006, 0x2009, 0x0104, 0x080c,
11176 + 0x9613, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0c00,
11177 + 0x0026, 0x00e6, 0x2071, 0xc927, 0x7048, 0xd084, 0x01d8, 0x713c,
11178 + 0x81ff, 0x01c0, 0x2071, 0x0100, 0xa188, 0x0007, 0x2114, 0xa28e,
11179 + 0x0006, 0x1138, 0x7014, 0xa084, 0x0184, 0xa085, 0x0012, 0x7016,
11180 + 0x0048, 0xa28e, 0x0009, 0x0db0, 0x7014, 0xa084, 0x0184, 0xa085,
11181 + 0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6,
11182 + 0x0066, 0x0056, 0x0046, 0x0006, 0x0126, 0x2091, 0x8000, 0x6018,
11183 + 0x2068, 0x6ca0, 0x2071, 0xc927, 0x7018, 0x2068, 0x8dff, 0x0188,
11184 + 0x68a0, 0xa406, 0x0118, 0x6854, 0x2068, 0x0cc0, 0x6010, 0x2060,
11185 + 0x643c, 0x6540, 0x6648, 0x2d60, 0x080c, 0x54ae, 0x0110, 0xa085,
11186 + 0x0001, 0x012e, 0x000e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de,
11187 + 0x00ee, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x1200,
11188 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x781c, 0xa086, 0x0004, 0x1110,
11189 + 0x6098, 0x0018, 0x2001, 0xc615, 0x2004, 0x20a2, 0x7834, 0x20a2,
11190 + 0x7838, 0x20a2, 0x20a9, 0x0010, 0xa006, 0x20a2, 0x1f04, 0x8d35,
11191 + 0x20a2, 0x20a2, 0x60c3, 0x002c, 0x080c, 0x8be2, 0x0005, 0x0156,
11192 + 0x0146, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x0f00, 0x20a3,
11193 + 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x080c,
11194 + 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b,
11195 + 0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006,
11196 + 0x2011, 0xc640, 0x2019, 0xc641, 0x23a6, 0x22a6, 0xa398, 0x0002,
11197 + 0xa290, 0x0002, 0x1f04, 0x8d64, 0x20a3, 0x0000, 0x20a3, 0x0000,
11198 + 0x60c3, 0x001c, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156,
11199 + 0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, 0x080c, 0x8434, 0x080c,
11200 + 0x844a, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0015, 0x2098,
11201 + 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003,
11202 + 0x60c2, 0x080c, 0x8be2, 0x002e, 0x001e, 0x014e, 0x015e, 0x0005,
11203 + 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x20a3, 0x6200,
11204 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008,
11205 + 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x0016,
11206 + 0x0026, 0x20a1, 0x020b, 0x080c, 0x83bf, 0x7810, 0xa080, 0x0000,
11207 + 0x2004, 0xa080, 0x0017, 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8,
11208 + 0x53a6, 0x8003, 0x60c2, 0x080c, 0x8be2, 0x002e, 0x001e, 0x014e,
11209 + 0x015e, 0x0005, 0x00e6, 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000,
11210 + 0x2071, 0xc927, 0x700c, 0x2060, 0x8cff, 0x0178, 0x080c, 0xae8f,
11211 + 0x1110, 0x080c, 0x9c09, 0x600c, 0x0006, 0x080c, 0xb056, 0x080c,
11212 + 0x95e3, 0x080c, 0x8fb7, 0x00ce, 0x0c78, 0x700f, 0x0000, 0x700b,
11213 + 0x0000, 0x012e, 0x000e, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0156,
11214 + 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091,
11215 + 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0xc927, 0x7024,
11216 + 0x2060, 0x8cff, 0x05a0, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c,
11217 + 0x7024, 0x2009, 0x0013, 0x080c, 0x9613, 0x20a9, 0x01f4, 0x6824,
11218 + 0xd094, 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0,
11219 + 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0xd084, 0x0118, 0x6827,
11220 + 0x0001, 0x0010, 0x1f04, 0x8e0f, 0x7804, 0xa084, 0x1000, 0x0120,
11221 + 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e,
11222 + 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001,
11223 + 0xc600, 0x2004, 0xa096, 0x0001, 0x0590, 0xa096, 0x0004, 0x0578,
11224 + 0x080c, 0x7024, 0x6814, 0xa084, 0x0001, 0x0110, 0x68a7, 0x95f5,
11225 + 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x4e18, 0x080c, 0x6fad,
11226 + 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, 0x6827, 0x0004, 0x7804,
11227 + 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078,
11228 + 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x8e52, 0x7804,
11229 + 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, 0x0000, 0x000e,
11230 + 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e,
11231 + 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026,
11232 + 0x0016, 0x0006, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140,
11233 + 0x2071, 0xc927, 0x703c, 0x2060, 0x8cff, 0x0904, 0x8f04, 0xa386,
11234 + 0x0002, 0x1128, 0x6814, 0xa084, 0x0002, 0x0904, 0x8f04, 0x68af,
11235 + 0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, 0x1df0, 0x68c7,
11236 + 0x0000, 0x68cb, 0x0008, 0x080c, 0x7031, 0x080c, 0x22ee, 0x0046,
11237 + 0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, 0x0169, 0x2404, 0xa084,
11238 + 0x000f, 0xa086, 0x0004, 0x1500, 0x68af, 0x95f5, 0x68c7, 0x0000,
11239 + 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0020, 0x2071, 0xc992,
11240 + 0x6814, 0xa084, 0x0184, 0xa085, 0x0012, 0x6816, 0x7803, 0x0008,
11241 + 0x7003, 0x0000, 0x00fe, 0x00ee, 0xa386, 0x0002, 0x1128, 0x7884,
11242 + 0xa005, 0x1110, 0x7887, 0x0001, 0x2001, 0xc8f8, 0x2004, 0x200a,
11243 + 0x004e, 0xa39d, 0x0000, 0x1140, 0x2009, 0x0049, 0x601c, 0xa086,
11244 + 0x0009, 0x0110, 0x080c, 0x9613, 0x20a9, 0x03e8, 0x6824, 0xd094,
11245 + 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803,
11246 + 0x1000, 0x7803, 0x0000, 0x0078, 0xd08c, 0x0118, 0x6827, 0x0002,
11247 + 0x0010, 0x1f04, 0x8ee6, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803,
11248 + 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce,
11249 + 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, 0x0126,
11250 + 0x2091, 0x8000, 0x2069, 0xc927, 0x6a06, 0x012e, 0x00de, 0x0005,
11251 + 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0xc927, 0x6a32, 0x012e,
11252 + 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0006, 0x0126,
11253 + 0x2071, 0xc927, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff,
11254 + 0x0538, 0x601c, 0xa206, 0x1500, 0x7014, 0xac36, 0x1110, 0x660c,
11255 + 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00,
11256 + 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06,
11257 + 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xae54,
11258 + 0x080c, 0x8fb7, 0x00ce, 0x08d8, 0x2c78, 0x600c, 0x2060, 0x08b8,
11259 + 0x012e, 0x000e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0156,
11260 + 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2, 0xa006,
11261 + 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x1000, 0x0804, 0x8faf,
11262 + 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11263 + 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0478,
11264 + 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11265 + 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x00f8,
11266 + 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11267 + 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078,
11268 + 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x8680, 0x7810, 0x20a2,
11269 + 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x0089,
11270 + 0x60c3, 0x0020, 0x080c, 0x8be2, 0x014e, 0x015e, 0x0005, 0x00e6,
11271 + 0x2071, 0xc927, 0x7020, 0xa005, 0x0110, 0x8001, 0x7022, 0x00ee,
11272 + 0x0005, 0x20a9, 0x0008, 0x20a2, 0x1f04, 0x8fc3, 0x20a2, 0x20a2,
11273 + 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006,
11274 + 0x0126, 0x2091, 0x8000, 0x2071, 0xc927, 0x7614, 0x2660, 0x2678,
11275 + 0x2039, 0x0001, 0x87ff, 0x0904, 0x905f, 0x8cff, 0x0904, 0x905f,
11276 + 0x601c, 0xa086, 0x0006, 0x1904, 0x905a, 0x88ff, 0x0138, 0x2800,
11277 + 0xac06, 0x1904, 0x905a, 0x2039, 0x0000, 0x0050, 0x6018, 0xa206,
11278 + 0x1904, 0x905a, 0x85ff, 0x0120, 0x6050, 0xa106, 0x1904, 0x905a,
11279 + 0x7024, 0xac06, 0x1598, 0x2069, 0x0100, 0x68c0, 0xa005, 0x1160,
11280 + 0x6824, 0xd084, 0x0148, 0x6827, 0x0001, 0x080c, 0x7024, 0x080c,
11281 + 0x90e6, 0x7027, 0x0000, 0x0410, 0x080c, 0x7024, 0x6820, 0xd0b4,
11282 + 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000, 0x080c,
11283 + 0x90e6, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384,
11284 + 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
11285 + 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x7014, 0xac36,
11286 + 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36,
11287 + 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066,
11288 + 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff, 0x1158,
11289 + 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac91, 0x0110, 0x080c,
11290 + 0xc141, 0x080c, 0xae54, 0x080c, 0x8fb7, 0x88ff, 0x1190, 0x00ce,
11291 + 0x0804, 0x8fda, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8fda, 0xa006,
11292 + 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe,
11293 + 0x0005, 0x6017, 0x0000, 0x00ce, 0xa8c5, 0x0001, 0x0c88, 0x00f6,
11294 + 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091,
11295 + 0x8000, 0x2071, 0xc927, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0904,
11296 + 0x90d6, 0x601c, 0xa086, 0x0006, 0x1904, 0x90d1, 0x87ff, 0x0128,
11297 + 0x2700, 0xac06, 0x1904, 0x90d1, 0x0048, 0x6018, 0xa206, 0x1904,
11298 + 0x90d1, 0x85ff, 0x0118, 0x6050, 0xa106, 0x15d8, 0x703c, 0xac06,
11299 + 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x8e79, 0x7033, 0x0000,
11300 + 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, 0x0000,
11301 + 0x003e, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36,
11302 + 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037,
11303 + 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008,
11304 + 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0xac91, 0x0110,
11305 + 0x080c, 0xc141, 0x080c, 0xae54, 0x87ff, 0x1190, 0x00ce, 0x0804,
11306 + 0x907e, 0x2c78, 0x600c, 0x2060, 0x0804, 0x907e, 0xa006, 0x012e,
11307 + 0x000e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005,
11308 + 0x6017, 0x0000, 0x00ce, 0xa7bd, 0x0001, 0x0c88, 0x00e6, 0x2071,
11309 + 0xc927, 0x2001, 0xc600, 0x2004, 0xa086, 0x0002, 0x1118, 0x7007,
11310 + 0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6, 0x00e6,
11311 + 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071,
11312 + 0xc927, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518, 0x2200,
11313 + 0xac06, 0x11e0, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034,
11314 + 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010,
11315 + 0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008,
11316 + 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0020, 0x2c78, 0x600c,
11317 + 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00ee,
11318 + 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0006,
11319 + 0x0126, 0x2091, 0x8000, 0x2071, 0xc927, 0x760c, 0x2660, 0x2678,
11320 + 0x8cff, 0x0904, 0x91bc, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206,
11321 + 0x1904, 0x91b7, 0x7024, 0xac06, 0x1508, 0x2069, 0x0100, 0x68c0,
11322 + 0xa005, 0x0904, 0x9193, 0x080c, 0x8bf5, 0x68c3, 0x0000, 0x080c,
11323 + 0x90e6, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384,
11324 + 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
11325 + 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0xac36,
11326 + 0x1110, 0x660c, 0x760e, 0x7008, 0xac36, 0x1140, 0x2c00, 0xaf36,
11327 + 0x0118, 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066,
11328 + 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000,
11329 + 0x080c, 0xae7e, 0x1158, 0x080c, 0x2e6c, 0x080c, 0xae8f, 0x11f0,
11330 + 0x080c, 0x9c09, 0x00d8, 0x080c, 0x90e6, 0x08c0, 0x080c, 0xae8f,
11331 + 0x1118, 0x080c, 0x9c09, 0x0090, 0x6010, 0x2068, 0x080c, 0xac91,
11332 + 0x0168, 0x601c, 0xa086, 0x0003, 0x11f8, 0x6837, 0x0103, 0x6b4a,
11333 + 0x6847, 0x0000, 0x080c, 0x580a, 0x080c, 0xae48, 0x080c, 0xb056,
11334 + 0x080c, 0xae54, 0x080c, 0x8fb7, 0x00ce, 0x0804, 0x9140, 0x2c78,
11335 + 0x600c, 0x2060, 0x0804, 0x9140, 0x012e, 0x000e, 0x006e, 0x00ce,
11336 + 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1d30,
11337 + 0x080c, 0xc141, 0x0c18, 0x0036, 0x0156, 0x0136, 0x0146, 0x3908,
11338 + 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e, 0x2c61, 0x1118, 0x8210,
11339 + 0x8000, 0x0cc8, 0xa005, 0x0138, 0x20a9, 0x0020, 0x2198, 0xa110,
11340 + 0x22a0, 0x22c8, 0x53a3, 0x014e, 0x013e, 0x015e, 0x003e, 0x0005,
11341 + 0x00d6, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0200, 0x20a3,
11342 + 0x0014, 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2099,
11343 + 0xc900, 0x20a9, 0x0004, 0x53a6, 0x20a3, 0x0004, 0x20a3, 0x7878,
11344 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x080c, 0x8be2, 0x00de, 0x0005,
11345 + 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0214, 0x20a3, 0x0018,
11346 + 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3, 0x0000,
11347 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7810, 0xa084,
11348 + 0x00ff, 0x20a2, 0x7828, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
11349 + 0x60c3, 0x0018, 0x080c, 0x8be2, 0x0005, 0x00d6, 0x0016, 0x2f68,
11350 + 0x2009, 0x0035, 0x080c, 0xb141, 0x1904, 0x929b, 0x20a1, 0x020b,
11351 + 0x080c, 0x83bf, 0x20a3, 0x1300, 0x20a3, 0x0000, 0x7828, 0x2068,
11352 + 0x681c, 0xa086, 0x0003, 0x0580, 0x7818, 0xa080, 0x0028, 0x2014,
11353 + 0x2001, 0xc635, 0x2004, 0xd0ac, 0x11d0, 0xa286, 0x007e, 0x1128,
11354 + 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x04b8, 0xa286, 0x007f, 0x1128,
11355 + 0x20a3, 0x00ff, 0x20a3, 0xfffd, 0x0478, 0xd2bc, 0x0180, 0xa286,
11356 + 0x0080, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffc, 0x0428, 0xa2e8,
11357 + 0xc77b, 0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x00e8, 0x20a3,
11358 + 0x0000, 0x6098, 0x20a2, 0x00c0, 0x2001, 0xc635, 0x2004, 0xd0ac,
11359 + 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007e, 0x0240,
11360 + 0x00d6, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0020,
11361 + 0x20a3, 0x0000, 0x6034, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2,
11362 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, 0x080c, 0x8be2,
11363 + 0x001e, 0x00de, 0x0005, 0x7817, 0x0001, 0x7803, 0x0006, 0x001e,
11364 + 0x00de, 0x0005, 0x00d6, 0x0026, 0x7928, 0x2168, 0x691c, 0xa186,
11365 + 0x0006, 0x01c0, 0xa186, 0x0003, 0x0904, 0x9311, 0xa186, 0x0005,
11366 + 0x0904, 0x92fa, 0xa186, 0x0004, 0x05b8, 0xa186, 0x0008, 0x0904,
11367 + 0x9302, 0x7807, 0x0037, 0x7813, 0x1700, 0x080c, 0x9379, 0x002e,
11368 + 0x00de, 0x0005, 0x080c, 0x9335, 0x2009, 0x4000, 0x6800, 0x0002,
11369 + 0x92db, 0x92e6, 0x92dd, 0x92e6, 0x92e2, 0x92db, 0x92db, 0x92e6,
11370 + 0x92e6, 0x92e6, 0x92e6, 0x92db, 0x92db, 0x92db, 0x92db, 0x92db,
11371 + 0x92e6, 0x92db, 0x92e6, 0x080c, 0x1519, 0x6820, 0xd0e4, 0x0110,
11372 + 0xd0cc, 0x0110, 0xa00e, 0x0010, 0x2009, 0x2000, 0x6828, 0x20a2,
11373 + 0x682c, 0x20a2, 0x0804, 0x932b, 0x080c, 0x9335, 0x20a3, 0x0000,
11374 + 0x20a3, 0x0000, 0x2009, 0x4000, 0x6a00, 0xa286, 0x0002, 0x1108,
11375 + 0xa00e, 0x0488, 0x04d1, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009,
11376 + 0x4000, 0x0448, 0x0491, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009,
11377 + 0x4000, 0xa286, 0x0005, 0x0118, 0xa286, 0x0002, 0x1108, 0xa00e,
11378 + 0x00d0, 0x0419, 0x6810, 0x2068, 0x697c, 0x6810, 0xa112, 0x6980,
11379 + 0x6814, 0xa103, 0x20a2, 0x22a2, 0x7928, 0xa180, 0x0000, 0x2004,
11380 + 0xa08e, 0x0002, 0x0130, 0xa08e, 0x0004, 0x0118, 0x2009, 0x4000,
11381 + 0x0010, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, 0x0018,
11382 + 0x080c, 0x8be2, 0x002e, 0x00de, 0x0005, 0x0036, 0x0046, 0x0056,
11383 + 0x0066, 0x20a1, 0x020b, 0x080c, 0x845b, 0xa006, 0x20a3, 0x0200,
11384 + 0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, 0x0028,
11385 + 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e,
11386 + 0x0268, 0x00d6, 0x2069, 0xc61c, 0x2d2c, 0x8d68, 0x2d34, 0xa0e8,
11387 + 0xc77b, 0x2d6c, 0x6b10, 0x6c14, 0x00de, 0x0030, 0x2019, 0x0000,
11388 + 0x6498, 0x2029, 0x0000, 0x6634, 0x7828, 0xa080, 0x0007, 0x2004,
11389 + 0xa086, 0x0003, 0x1128, 0x25a2, 0x26a2, 0x23a2, 0x24a2, 0x0020,
11390 + 0x23a2, 0x24a2, 0x25a2, 0x26a2, 0x006e, 0x005e, 0x004e, 0x003e,
11391 + 0x0005, 0x20a1, 0x020b, 0x080c, 0x845b, 0x20a3, 0x0100, 0x20a3,
11392 + 0x0000, 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c,
11393 + 0x8be2, 0x0005, 0x20a1, 0x020b, 0x080c, 0x83b7, 0x20a3, 0x1400,
11394 + 0x20a3, 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, 0x20a2,
11395 + 0x782c, 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, 0x20a3,
11396 + 0x0000, 0x60c3, 0x0010, 0x080c, 0x8be2, 0x0005, 0x20a1, 0x020b,
11397 + 0x080c, 0x8453, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0x20a2,
11398 + 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x8be2, 0x0005, 0x0146,
11399 + 0x20a1, 0x020b, 0x0031, 0x60c3, 0x0000, 0x080c, 0x8be2, 0x014e,
11400 + 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
11401 + 0x2004, 0x2011, 0xc635, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188,
11402 + 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0300, 0x20a2,
11403 + 0x6814, 0x20a2, 0x2069, 0xc61c, 0x2da6, 0x8d68, 0x2da6, 0x00de,
11404 + 0x0078, 0x00d6, 0xa0e8, 0xc77b, 0x2d6c, 0x6810, 0xa085, 0x0300,
11405 + 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x6234, 0x22a2,
11406 + 0x20a3, 0x0819, 0x20a3, 0x0000, 0x080c, 0x8bd1, 0x22a2, 0x20a3,
11407 + 0x0000, 0x2fa2, 0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
11408 + 0x0005, 0x20a1, 0x020b, 0x0079, 0x7910, 0x21a2, 0x20a3, 0x0000,
11409 + 0x60c3, 0x0000, 0x20e1, 0x9080, 0x60a7, 0x9575, 0x080c, 0x8bec,
11410 + 0x080c, 0x701b, 0x0005, 0x0156, 0x0136, 0x0036, 0x00d6, 0x00e6,
11411 + 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7854, 0x2068, 0xadf0, 0x000f,
11412 + 0x7210, 0xa296, 0x00c0, 0xa294, 0xfffd, 0x7212, 0x7214, 0xa294,
11413 + 0x0300, 0x7216, 0x7100, 0xa194, 0x00ff, 0x7308, 0xa384, 0x00ff,
11414 + 0xa08d, 0xc200, 0x7102, 0xa384, 0xff00, 0xa215, 0x720a, 0x7004,
11415 + 0x720c, 0x700e, 0x7206, 0x20a9, 0x000a, 0x2e98, 0x53a6, 0x60a3,
11416 + 0x0035, 0x6a38, 0xa294, 0x7000, 0xa286, 0x3000, 0x0110, 0x60a3,
11417 + 0x0037, 0x00ee, 0x00de, 0x003e, 0x013e, 0x015e, 0x0005, 0x2009,
11418 + 0x0092, 0x0010, 0x2009, 0x0096, 0x60ab, 0x0036, 0x6116, 0x0005,
11419 + 0x609b, 0x0000, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000,
11420 + 0x20a3, 0x22ff, 0x20a3, 0xffff, 0x00d6, 0x2069, 0xc61c, 0x2da6,
11421 + 0x8d68, 0x2da6, 0x00de, 0x20a3, 0x0138, 0x20a3, 0x0000, 0x0026,
11422 + 0x080c, 0x8bd1, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff,
11423 + 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x20a3, 0x5400, 0x20a3,
11424 + 0x0000, 0x080c, 0x768f, 0x11b8, 0x0016, 0x7810, 0xa080, 0x000d,
11425 + 0x20a9, 0x0014, 0x200c, 0x810f, 0x21a2, 0x8000, 0x1f04, 0x948a,
11426 + 0x20a9, 0x0012, 0x2001, 0x0000, 0x20a3, 0x0000, 0x1f04, 0x9494,
11427 + 0x001e, 0x0804, 0x9502, 0x7810, 0x0016, 0x00c6, 0x00d6, 0x7810,
11428 + 0x2068, 0x2061, 0xc600, 0x6070, 0xa084, 0x00ff, 0x6968, 0x810f,
11429 + 0xa18c, 0xff00, 0xa105, 0x20a2, 0x6074, 0x20a2, 0x6968, 0xa18c,
11430 + 0xff00, 0x21a2, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2009, 0xc605,
11431 + 0x2104, 0x20a2, 0x8108, 0x1f04, 0x94b8, 0x20a9, 0x0004, 0x2009,
11432 + 0xc601, 0x2104, 0x20a2, 0x8108, 0x1f04, 0x94c1, 0x20a9, 0x0004,
11433 + 0x2d08, 0xa188, 0x001d, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04,
11434 + 0x94cb, 0x20a9, 0x0004, 0x2d08, 0xa188, 0x0021, 0x2104, 0x8007,
11435 + 0x20a2, 0x8108, 0x1f04, 0x94d6, 0x080c, 0x7694, 0x1138, 0x20a9,
11436 + 0x0008, 0x20a3, 0x0000, 0x1f04, 0x94e1, 0x0050, 0x20a9, 0x0008,
11437 + 0x2009, 0xc69a, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x94ea,
11438 + 0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, 0x2104, 0x8007, 0x20a2,
11439 + 0x8108, 0x1f04, 0x94f5, 0x00de, 0x00ce, 0x001e, 0x20a3, 0x0000,
11440 + 0x20a3, 0x0000, 0x60c3, 0x004c, 0x080c, 0x8be2, 0x0005, 0x20a1,
11441 + 0x020b, 0x080c, 0x83bf, 0x20a3, 0x5500, 0x20a3, 0x0000, 0x7810,
11442 + 0x0016, 0x00c6, 0x00d6, 0x7810, 0x2068, 0x686c, 0xa084, 0x00ff,
11443 + 0x6968, 0x810f, 0xa18c, 0xff00, 0xa105, 0x20a2, 0x696c, 0xa18c,
11444 + 0xff00, 0x6870, 0xa084, 0x00ff, 0xa105, 0x20a2, 0x6968, 0xa18c,
11445 + 0xff00, 0x2061, 0xc600, 0x6070, 0xa084, 0x00ff, 0xa10d, 0x21a2,
11446 + 0x6174, 0x21a2, 0x20a9, 0x0004, 0x2d08, 0xa188, 0x001d, 0x2104,
11447 + 0x8007, 0x20a2, 0x8108, 0x1f04, 0x9537, 0x20a9, 0x0004, 0x2d08,
11448 + 0xa188, 0x0021, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04, 0x9542,
11449 + 0x20a9, 0x0004, 0x2009, 0xc605, 0x2104, 0x20a2, 0x8108, 0x1f04,
11450 + 0x954c, 0x20a9, 0x0004, 0x2009, 0xc601, 0x2104, 0x20a2, 0x8108,
11451 + 0x1f04, 0x9555, 0x20a9, 0x0008, 0x2d08, 0xa188, 0x0025, 0x2104,
11452 + 0x8007, 0x20a2, 0x8108, 0x1f04, 0x955f, 0x080c, 0x7694, 0x1138,
11453 + 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x956a, 0x0050, 0x20a9,
11454 + 0x0008, 0x2009, 0xc69a, 0x2104, 0x8007, 0x20a2, 0x8108, 0x1f04,
11455 + 0x9573, 0x00de, 0x00ce, 0x001e, 0x20a3, 0x0000, 0x20a3, 0x0000,
11456 + 0x60c3, 0x004c, 0x080c, 0x8be2, 0x0005, 0x2061, 0xce00, 0x2a70,
11457 + 0x7068, 0x704a, 0x704f, 0xce00, 0x0005, 0x00e6, 0x0126, 0x2071,
11458 + 0xc600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0010, 0x0608, 0x704c,
11459 + 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, 0x705c,
11460 + 0xac02, 0x1208, 0x0cb0, 0x2061, 0xce00, 0x0c98, 0x6003, 0x0008,
11461 + 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, 0x1230, 0x754e,
11462 + 0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, 0xce00, 0x0cc0,
11463 + 0xa006, 0x0cc0, 0x00e6, 0x2071, 0xc600, 0x7548, 0xa582, 0x0010,
11464 + 0x0600, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0,
11465 + 0x0018, 0x705c, 0xac02, 0x1208, 0x0cb0, 0x2061, 0xce00, 0x0c98,
11466 + 0x6003, 0x0008, 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502,
11467 + 0x1228, 0x754e, 0xa085, 0x0001, 0x00ee, 0x0005, 0x704f, 0xce00,
11468 + 0x0cc8, 0xa006, 0x0cc8, 0xac82, 0xce00, 0x0a0c, 0x1519, 0x2001,
11469 + 0xc617, 0x2004, 0xac02, 0x1a0c, 0x1519, 0xa006, 0x6006, 0x600a,
11470 + 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, 0x6003, 0x0000,
11471 + 0x6052, 0x6056, 0x6022, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036,
11472 + 0x603a, 0x603e, 0x6026, 0x2061, 0xc600, 0x6048, 0x8000, 0x604a,
11473 + 0xa086, 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c,
11474 + 0x7e94, 0x012e, 0x0cc0, 0x601c, 0xa084, 0x000f, 0x0002, 0x9622,
11475 + 0x9631, 0x964c, 0x9667, 0xb189, 0xb1a4, 0xb1bf, 0x9622, 0x9631,
11476 + 0x7699, 0x9682, 0xa186, 0x0013, 0x1128, 0x080c, 0x7db1, 0x080c,
11477 + 0x7e94, 0x0005, 0xa18e, 0x0047, 0x1118, 0xa016, 0x080c, 0x1870,
11478 + 0x0005, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013,
11479 + 0x006e, 0x0005, 0x964a, 0x9a78, 0x9c43, 0x964a, 0x9cc0, 0x9740,
11480 + 0x964a, 0x964a, 0x9a0a, 0xa126, 0x964a, 0x964a, 0x964a, 0x964a,
11481 + 0x964a, 0x964a, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010,
11482 + 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0x9665, 0xa759, 0x9665,
11483 + 0x9665, 0x9665, 0x9665, 0x9665, 0x9665, 0xa704, 0xa8c5, 0x9665,
11484 + 0xa786, 0xa7fd, 0xa786, 0xa7fd, 0x9665, 0x080c, 0x1519, 0x0066,
11485 + 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005,
11486 + 0x9680, 0xa167, 0xa231, 0xa36c, 0xa4c8, 0x9680, 0x9680, 0x9680,
11487 + 0xa141, 0xa6b4, 0xa6b7, 0x9680, 0x9680, 0x9680, 0x9680, 0xa6e1,
11488 + 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519,
11489 + 0x0013, 0x006e, 0x0005, 0x969b, 0x969b, 0x969b, 0x96c9, 0x9716,
11490 + 0x969b, 0x969b, 0x969b, 0x969d, 0x969b, 0x969b, 0x969b, 0x969b,
11491 + 0x969b, 0x969b, 0x969b, 0x080c, 0x1519, 0xa186, 0x0003, 0x190c,
11492 + 0x1519, 0x00d6, 0x6003, 0x0003, 0x6106, 0x6010, 0x2068, 0x684f,
11493 + 0x0040, 0x687c, 0x680a, 0x6880, 0x680e, 0x6813, 0x0000, 0x6817,
11494 + 0x0000, 0x6854, 0xa092, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003,
11495 + 0x8013, 0x8213, 0xa210, 0x6216, 0x00de, 0x2c10, 0x080c, 0x2068,
11496 + 0x080c, 0x79fc, 0x0126, 0x2091, 0x8000, 0x080c, 0x7f6e, 0x012e,
11497 + 0x0005, 0xa182, 0x0047, 0x0002, 0x96d5, 0x96d5, 0x96d7, 0x96f0,
11498 + 0x96d5, 0x96d5, 0x96d5, 0x96d5, 0x9702, 0x080c, 0x1519, 0x00d6,
11499 + 0x0016, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6003, 0x0004, 0x6110,
11500 + 0x2168, 0x684f, 0x0020, 0x685c, 0x685a, 0x6874, 0x687e, 0x6878,
11501 + 0x6882, 0x6897, 0x0000, 0x689b, 0x0000, 0x001e, 0x00de, 0x0005,
11502 + 0x080c, 0x7e47, 0x00d6, 0x6110, 0x2168, 0x080c, 0xac91, 0x0120,
11503 + 0x684b, 0x0006, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x080c,
11504 + 0x7f6e, 0x0005, 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6, 0x6110,
11505 + 0x2168, 0x080c, 0xac91, 0x0120, 0x684b, 0x0029, 0x080c, 0x580a,
11506 + 0x00de, 0x080c, 0x95e3, 0x080c, 0x7f6e, 0x0005, 0xa182, 0x0047,
11507 + 0x0002, 0x9724, 0x9733, 0x9722, 0x9722, 0x9722, 0x9722, 0x9722,
11508 + 0x9722, 0x9722, 0x080c, 0x1519, 0x00d6, 0x6010, 0x2068, 0x684c,
11509 + 0xc0f4, 0x684e, 0x00de, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
11510 + 0x080c, 0x1870, 0x0005, 0x00d6, 0x6110, 0x2168, 0x684b, 0x0000,
11511 + 0x6853, 0x0000, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x0005,
11512 + 0xa1b6, 0x0015, 0x1118, 0x080c, 0x95e3, 0x0030, 0xa1b6, 0x0016,
11513 + 0x190c, 0x1519, 0x080c, 0x95e3, 0x0005, 0x20a9, 0x000e, 0x2e98,
11514 + 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398,
11515 + 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8,
11516 + 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x1f04, 0x975b, 0x00e6,
11517 + 0x080c, 0xac91, 0x0130, 0x6010, 0x2070, 0x7007, 0x0000, 0x7037,
11518 + 0x0103, 0x00ee, 0x080c, 0x95e3, 0x0005, 0x00d6, 0x0036, 0x7330,
11519 + 0xa386, 0x0200, 0x1130, 0x6018, 0x2068, 0x6813, 0x00ff, 0x6817,
11520 + 0xfffd, 0x6010, 0xa005, 0x0130, 0x2068, 0x6807, 0x0000, 0x6837,
11521 + 0x0103, 0x6b32, 0x080c, 0x95e3, 0x003e, 0x00de, 0x0005, 0x0016,
11522 + 0x20a9, 0x002a, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, 0x0002,
11523 + 0x20a0, 0x53a3, 0x20a9, 0x002a, 0x6010, 0xa080, 0x0001, 0x2004,
11524 + 0xa080, 0x0002, 0x20a0, 0x53a3, 0x00e6, 0x6010, 0x2004, 0x2070,
11525 + 0x7037, 0x0103, 0x00ee, 0x080c, 0x95e3, 0x001e, 0x0005, 0x0016,
11526 + 0x2009, 0x0000, 0x7030, 0xa086, 0x0100, 0x0140, 0x7038, 0xa084,
11527 + 0x00ff, 0x800c, 0x703c, 0xa084, 0x00ff, 0x8004, 0xa080, 0x0004,
11528 + 0xa108, 0x21a8, 0xae80, 0x000c, 0x2098, 0x6010, 0xa080, 0x0002,
11529 + 0x20a0, 0x080c, 0x4ecb, 0x00e6, 0x080c, 0xac91, 0x0140, 0x6010,
11530 + 0x2070, 0x7007, 0x0000, 0x7034, 0x70b2, 0x7037, 0x0103, 0x00ee,
11531 + 0x080c, 0x95e3, 0x001e, 0x0005, 0x0016, 0x2009, 0x0000, 0x7030,
11532 + 0xa086, 0x0200, 0x0110, 0x2009, 0x0001, 0x00d6, 0x6010, 0xa06d,
11533 + 0x090c, 0x1519, 0x694a, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3,
11534 + 0x001e, 0x0005, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2c68, 0x0016,
11535 + 0x2009, 0x0035, 0x080c, 0xb141, 0x001e, 0x1168, 0x0026, 0x6228,
11536 + 0x2268, 0x002e, 0x2071, 0xcc8c, 0x6b1c, 0xa386, 0x0003, 0x0130,
11537 + 0xa386, 0x0006, 0x0128, 0x080c, 0x95e3, 0x0020, 0x0031, 0x0010,
11538 + 0x080c, 0x98d3, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x6810, 0x2078,
11539 + 0xa186, 0x0015, 0x0904, 0x98ba, 0xa18e, 0x0016, 0x1904, 0x98d1,
11540 + 0x700c, 0xa08c, 0xff00, 0xa186, 0x1700, 0x0120, 0xa186, 0x0300,
11541 + 0x1904, 0x9899, 0x8fff, 0x1138, 0x6800, 0xa086, 0x000f, 0x0904,
11542 + 0x987d, 0x0804, 0x98cf, 0x6808, 0xa086, 0xffff, 0x1904, 0x98bc,
11543 + 0x784c, 0xa084, 0x0060, 0xa086, 0x0020, 0x1150, 0x797c, 0x7810,
11544 + 0xa106, 0x1904, 0x98bc, 0x7980, 0x7814, 0xa106, 0x1904, 0x98bc,
11545 + 0x080c, 0xae48, 0x6858, 0x7852, 0x784c, 0xc0dc, 0xc0f4, 0xc0d4,
11546 + 0x784e, 0x0026, 0xa00e, 0x6a14, 0x2001, 0x000a, 0x080c, 0x783f,
11547 + 0x7854, 0xa20a, 0x0208, 0x8011, 0x7a56, 0x82ff, 0x002e, 0x1138,
11548 + 0x00c6, 0x2d60, 0x080c, 0xaa40, 0x00ce, 0x0804, 0x98cf, 0x00c6,
11549 + 0x00d6, 0x2f68, 0x6838, 0xd0fc, 0x1118, 0x080c, 0x4fa6, 0x0010,
11550 + 0x080c, 0x51dd, 0x00de, 0x00ce, 0x1904, 0x98bc, 0x00c6, 0x2d60,
11551 + 0x080c, 0x95e3, 0x00ce, 0x0804, 0x98cf, 0x00c6, 0x080c, 0xaf0d,
11552 + 0x0190, 0x6013, 0x0000, 0x6818, 0x601a, 0x080c, 0xb05e, 0x601f,
11553 + 0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, 0x95e3, 0x00ce, 0x080c,
11554 + 0x9613, 0x00ce, 0x04e0, 0x2001, 0xc8ff, 0x2004, 0x683e, 0x00ce,
11555 + 0x04b0, 0x7008, 0xa086, 0x000b, 0x11a0, 0x6018, 0x200c, 0xc1bc,
11556 + 0x2102, 0x00c6, 0x2d60, 0x7853, 0x0003, 0x6007, 0x0085, 0x6003,
11557 + 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00ce,
11558 + 0x00f0, 0x700c, 0xa086, 0x2a00, 0x1138, 0x2001, 0xc8ff, 0x2004,
11559 + 0x683e, 0x00a8, 0x0481, 0x00a8, 0x8fff, 0x090c, 0x1519, 0x00c6,
11560 + 0x00d6, 0x2d60, 0x2f68, 0x6837, 0x0103, 0x684b, 0x0003, 0x080c,
11561 + 0xa934, 0x080c, 0xae48, 0x080c, 0xae54, 0x00de, 0x00ce, 0x080c,
11562 + 0x95e3, 0x00fe, 0x0005, 0xa186, 0x0015, 0x1128, 0x2001, 0xc8ff,
11563 + 0x2004, 0x683e, 0x0068, 0xa18e, 0x0016, 0x1160, 0x00c6, 0x2d00,
11564 + 0x2060, 0x080c, 0xc3e2, 0x080c, 0x7103, 0x080c, 0x95e3, 0x00ce,
11565 + 0x080c, 0x95e3, 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, 0x7c80,
11566 + 0x7b7c, 0xd2f4, 0x0130, 0x2001, 0xc8ff, 0x2004, 0x683e, 0x0804,
11567 + 0x994d, 0x00c6, 0x2d60, 0x080c, 0xa954, 0x00ce, 0x6804, 0xa086,
11568 + 0x0050, 0x1168, 0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, 0x6007,
11569 + 0x0050, 0x080c, 0x7999, 0x080c, 0x7e94, 0x00ce, 0x04f0, 0x6800,
11570 + 0xa086, 0x000f, 0x01c8, 0x8fff, 0x090c, 0x1519, 0x6820, 0xd0dc,
11571 + 0x1198, 0x6800, 0xa086, 0x0004, 0x1198, 0x784c, 0xd0ac, 0x0180,
11572 + 0x784c, 0xc0dc, 0xc0f4, 0x784e, 0x7850, 0xc0f4, 0xc0fc, 0x7852,
11573 + 0x2001, 0x0001, 0x682e, 0x00e0, 0x2001, 0x0007, 0x682e, 0x00c0,
11574 + 0x784c, 0xd0b4, 0x1130, 0xd0ac, 0x0db8, 0x784c, 0xd0f4, 0x1da0,
11575 + 0x0c38, 0xd2ec, 0x1d88, 0x7024, 0xa306, 0x1118, 0x7020, 0xa406,
11576 + 0x0d58, 0x7020, 0x6836, 0x7024, 0x683a, 0x2001, 0x0005, 0x682e,
11577 + 0x080c, 0xaf9a, 0x080c, 0x7e94, 0x0010, 0x080c, 0x95e3, 0x004e,
11578 + 0x003e, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x0026, 0x6034, 0x2068,
11579 + 0x6a1c, 0xa286, 0x0007, 0x0904, 0x99b1, 0xa286, 0x0002, 0x0904,
11580 + 0x99b1, 0xa286, 0x0000, 0x0904, 0x99b1, 0x6808, 0x6338, 0xa306,
11581 + 0x1904, 0x99b1, 0x2071, 0xcc8c, 0xa186, 0x0015, 0x05e0, 0xa18e,
11582 + 0x0016, 0x1190, 0x6030, 0xa084, 0x00ff, 0xa086, 0x0001, 0x1160,
11583 + 0x700c, 0xa086, 0x2a00, 0x1140, 0x6034, 0xa080, 0x0008, 0x200c,
11584 + 0xc1dd, 0xc1f5, 0x2102, 0x0438, 0x00c6, 0x6034, 0x2060, 0x6104,
11585 + 0xa186, 0x004b, 0x01a0, 0xa186, 0x004c, 0x0188, 0xa186, 0x004d,
11586 + 0x0170, 0xa186, 0x004e, 0x0158, 0xa186, 0x0052, 0x0140, 0x6010,
11587 + 0x2068, 0x080c, 0xac91, 0x090c, 0x1519, 0x6853, 0x0003, 0x6007,
11588 + 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c,
11589 + 0x7e94, 0x00ce, 0x0030, 0x6034, 0x2070, 0x2001, 0xc8ff, 0x2004,
11590 + 0x703e, 0x080c, 0x95e3, 0x002e, 0x00de, 0x00ee, 0x0005, 0x00d6,
11591 + 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0xa1b6, 0x0015,
11592 + 0x1558, 0x6018, 0x2068, 0x0156, 0x0036, 0x0026, 0xae90, 0x000c,
11593 + 0xa290, 0x0004, 0x20a9, 0x0004, 0xad98, 0x000a, 0x080c, 0xa103,
11594 + 0x002e, 0x003e, 0x015e, 0x11d8, 0x0156, 0x0036, 0x0026, 0xae90,
11595 + 0x000c, 0xa290, 0x0008, 0x20a9, 0x0004, 0xad98, 0x0006, 0x080c,
11596 + 0xa103, 0x002e, 0x003e, 0x015e, 0x1150, 0x7038, 0x680a, 0x703c,
11597 + 0x680e, 0x6800, 0xc08d, 0x6802, 0x00de, 0x0804, 0x9767, 0x080c,
11598 + 0x2e46, 0x00c6, 0x080c, 0x958d, 0x2f00, 0x601a, 0x6013, 0x0000,
11599 + 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007,
11600 + 0x080c, 0x5291, 0x080c, 0x52be, 0x080c, 0x79df, 0x080c, 0x7e94,
11601 + 0x00ce, 0x0c10, 0x2100, 0xa1b2, 0x0080, 0x1a0c, 0x1519, 0xa1b2,
11602 + 0x0040, 0x1a04, 0x9a6e, 0x0002, 0x9a62, 0x9a56, 0x9a62, 0x9a62,
11603 + 0x9a62, 0x9a62, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11604 + 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11605 + 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11606 + 0x9a54, 0x9a54, 0x9a54, 0x9a62, 0x9a54, 0x9a62, 0x9a62, 0x9a54,
11607 + 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a62, 0x9a54, 0x9a54, 0x9a54,
11608 + 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a62, 0x9a62,
11609 + 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54, 0x9a54,
11610 + 0x9a54, 0x9a62, 0x9a54, 0x9a54, 0x080c, 0x1519, 0x6003, 0x0001,
11611 + 0x6106, 0x080c, 0x79df, 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94,
11612 + 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x79df, 0x0126,
11613 + 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x2600, 0x0002,
11614 + 0x9a62, 0x9a62, 0x9a76, 0x9a62, 0x9a62, 0x9a76, 0x080c, 0x1519,
11615 + 0x6004, 0xa0b2, 0x0080, 0x1a0c, 0x1519, 0xa1b6, 0x0013, 0x0904,
11616 + 0x9b28, 0xa1b6, 0x0027, 0x1904, 0x9aee, 0x080c, 0x7db1, 0x6004,
11617 + 0x080c, 0xae7e, 0x0190, 0x080c, 0xae8f, 0x0904, 0x9ae8, 0xa08e,
11618 + 0x0021, 0x0904, 0x9aeb, 0xa08e, 0x0022, 0x0904, 0x9ae8, 0xa08e,
11619 + 0x003d, 0x0904, 0x9aeb, 0x0804, 0x9ae1, 0x080c, 0x2e6c, 0x2001,
11620 + 0x0007, 0x080c, 0x5291, 0x6018, 0xa080, 0x0028, 0x200c, 0x080c,
11621 + 0x9c09, 0xa186, 0x007e, 0x1148, 0x2001, 0xc635, 0x2014, 0xc285,
11622 + 0x080c, 0x5f22, 0x1108, 0xc2ad, 0x2202, 0x0016, 0x0026, 0x0036,
11623 + 0x2110, 0x0026, 0x2019, 0x0028, 0x080c, 0x9132, 0x002e, 0x080c,
11624 + 0xc4e4, 0x003e, 0x002e, 0x001e, 0x0016, 0x0026, 0x0036, 0x2110,
11625 + 0x2019, 0x0028, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c,
11626 + 0x7a0e, 0x00c6, 0x6018, 0xa065, 0x0110, 0x080c, 0x553e, 0x00ce,
11627 + 0x2c08, 0x080c, 0xbef7, 0x007e, 0x003e, 0x002e, 0x001e, 0x080c,
11628 + 0x5300, 0x080c, 0xb056, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005,
11629 + 0x080c, 0x9c09, 0x0cb0, 0x080c, 0x9c37, 0x0c98, 0xa186, 0x0014,
11630 + 0x1db0, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x080c, 0xae7e, 0x1188,
11631 + 0x080c, 0x2e6c, 0x6018, 0xa080, 0x0028, 0x200c, 0x080c, 0x9c09,
11632 + 0xa186, 0x007e, 0x1128, 0x2001, 0xc635, 0x200c, 0xc185, 0x2102,
11633 + 0x08c0, 0x080c, 0xae8f, 0x1118, 0x080c, 0x9c09, 0x0890, 0x6004,
11634 + 0xa08e, 0x0032, 0x1158, 0x00e6, 0x00f6, 0x2071, 0xc6a2, 0x2079,
11635 + 0x0000, 0x080c, 0x3179, 0x00fe, 0x00ee, 0x0818, 0x6004, 0xa08e,
11636 + 0x0021, 0x0d50, 0xa08e, 0x0022, 0x090c, 0x9c09, 0x0804, 0x9ae1,
11637 + 0xa0b2, 0x0040, 0x1a04, 0x9beb, 0x2008, 0x0002, 0x9b70, 0x9b71,
11638 + 0x9b74, 0x9b77, 0x9b7a, 0x9b7d, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11639 + 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11640 + 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11641 + 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b80, 0x9b8f, 0x9b6e, 0x9b91,
11642 + 0x9b8f, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b8f, 0x9b8f,
11643 + 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b6e,
11644 + 0x9bcb, 0x9b8f, 0x9b6e, 0x9b8b, 0x9b6e, 0x9b6e, 0x9b6e, 0x9b8c,
11645 + 0x9b6e, 0x9b6e, 0x9b6e, 0x9b8f, 0x9bc2, 0x9b6e, 0x080c, 0x1519,
11646 + 0x00f0, 0x2001, 0x000b, 0x0460, 0x2001, 0x0003, 0x0448, 0x2001,
11647 + 0x0005, 0x0430, 0x2001, 0x0001, 0x0418, 0x2001, 0x0009, 0x0400,
11648 + 0x080c, 0x7db1, 0x6003, 0x0005, 0x2001, 0xc8ff, 0x2004, 0x603e,
11649 + 0x080c, 0x7e94, 0x00a0, 0x0018, 0x0010, 0x080c, 0x5291, 0x0804,
11650 + 0x9bdc, 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x2001,
11651 + 0xc8ff, 0x2004, 0x603e, 0x6003, 0x0004, 0x080c, 0x7e94, 0x0005,
11652 + 0x080c, 0x5291, 0x080c, 0x7db1, 0x6003, 0x0002, 0x2001, 0xc8ff,
11653 + 0x2004, 0x603e, 0x0036, 0x2019, 0xc65d, 0x2304, 0xa084, 0xff00,
11654 + 0x1120, 0x2001, 0xc8fd, 0x201c, 0x0040, 0x8007, 0xa09a, 0x0004,
11655 + 0x0ec0, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x003e, 0x080c,
11656 + 0x7e94, 0x08e8, 0x080c, 0x7db1, 0x080c, 0xb056, 0x080c, 0x95e3,
11657 + 0x080c, 0x7e94, 0x08a0, 0x00e6, 0x00f6, 0x2071, 0xc6a2, 0x2079,
11658 + 0x0000, 0x080c, 0x3179, 0x00fe, 0x00ee, 0x080c, 0x7db1, 0x080c,
11659 + 0x95e3, 0x080c, 0x7e94, 0x0818, 0x080c, 0x7db1, 0x2001, 0xc8ff,
11660 + 0x2004, 0x603e, 0x6003, 0x0002, 0x2001, 0xc8fd, 0x2004, 0x6016,
11661 + 0x080c, 0x7e94, 0x0005, 0x2600, 0x2008, 0x0002, 0x9bf6, 0x9bdc,
11662 + 0x9bf4, 0x9bdc, 0x9bdc, 0x9bf4, 0x080c, 0x1519, 0x080c, 0x7db1,
11663 + 0x00d6, 0x6010, 0x2068, 0x080c, 0x768f, 0x1118, 0x080c, 0x1619,
11664 + 0x0010, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7e94,
11665 + 0x0005, 0x00e6, 0x0026, 0x0016, 0x080c, 0xac91, 0x0508, 0x6010,
11666 + 0x2070, 0x7034, 0xa086, 0x0139, 0x1148, 0x2001, 0x0030, 0x2009,
11667 + 0x0000, 0x2011, 0x4005, 0x080c, 0xb10d, 0x0090, 0x7038, 0xd0fc,
11668 + 0x0178, 0x7007, 0x0000, 0x0016, 0x6004, 0xa08e, 0x0021, 0x0160,
11669 + 0xa08e, 0x003d, 0x0148, 0x001e, 0x7037, 0x0103, 0x7033, 0x0100,
11670 + 0x001e, 0x002e, 0x00ee, 0x0005, 0x001e, 0x0009, 0x0cc8, 0x00e6,
11671 + 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x7023,
11672 + 0x8001, 0x00ee, 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, 0xa084,
11673 + 0x00ff, 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1519, 0x6604, 0xa6b6,
11674 + 0x0043, 0x1120, 0x080c, 0xb0c9, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11675 + 0x0033, 0x1120, 0x080c, 0xb079, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11676 + 0x0028, 0x1120, 0x080c, 0xaebf, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11677 + 0x0029, 0x1120, 0x080c, 0xaed6, 0x0804, 0x9cb0, 0x6604, 0xa6b6,
11678 + 0x001f, 0x1118, 0x080c, 0x974d, 0x04d8, 0x6604, 0xa6b6, 0x0000,
11679 + 0x1118, 0x080c, 0x99b7, 0x04a0, 0x6604, 0xa6b6, 0x0022, 0x1118,
11680 + 0x080c, 0x9775, 0x0468, 0x6604, 0xa6b6, 0x0035, 0x1118, 0x080c,
11681 + 0x97f2, 0x0430, 0x6604, 0xa6b6, 0x0039, 0x1118, 0x080c, 0x9953,
11682 + 0x00f8, 0x6604, 0xa6b6, 0x003d, 0x1118, 0x080c, 0x978f, 0x00c0,
11683 + 0x6604, 0xa6b6, 0x0044, 0x1118, 0x080c, 0x97af, 0x0088, 0x6604,
11684 + 0xa6b6, 0x0041, 0x1118, 0x080c, 0x97dc, 0x0050, 0xa1b6, 0x0015,
11685 + 0x1110, 0x0053, 0x0028, 0xa1b6, 0x0016, 0x1118, 0x0804, 0x9e93,
11686 + 0x0005, 0x080c, 0x962a, 0x0ce0, 0x9cda, 0x9cdd, 0x9cda, 0x9d21,
11687 + 0x9cda, 0x9e1a, 0x9ea1, 0x9cda, 0x9cda, 0x9e6b, 0x9cda, 0x9e81,
11688 + 0xa1b6, 0x0048, 0x0140, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
11689 + 0x080c, 0x1870, 0x0005, 0x00e6, 0xacf0, 0x0004, 0x2e74, 0x7000,
11690 + 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, 0x95e3, 0x0005, 0x080c,
11691 + 0x95e3, 0x0005, 0xe000, 0xe000, 0x0005, 0x00e6, 0x2071, 0xc600,
11692 + 0x7084, 0xa086, 0x0074, 0x1530, 0x080c, 0xbece, 0x11b0, 0x00d6,
11693 + 0x6018, 0x2068, 0x7030, 0xd08c, 0x0128, 0x6800, 0xd0bc, 0x0110,
11694 + 0xc0c5, 0x6802, 0x00e9, 0x00de, 0x2001, 0x0006, 0x080c, 0x5291,
11695 + 0x080c, 0x2e6c, 0x080c, 0x95e3, 0x0088, 0x2001, 0x000a, 0x080c,
11696 + 0x5291, 0x080c, 0x2e6c, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
11697 + 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x00ee, 0x0005,
11698 + 0x6800, 0xd084, 0x0168, 0x2001, 0x0000, 0x080c, 0x527f, 0x2069,
11699 + 0xc652, 0x6804, 0xd0a4, 0x0120, 0x2001, 0x0006, 0x080c, 0x52be,
11700 + 0x0005, 0x00d6, 0x2011, 0xc621, 0x2204, 0xa086, 0x0074, 0x1904,
11701 + 0x9df0, 0x6018, 0x2068, 0x6aa0, 0xa286, 0x007e, 0x1120, 0x080c,
11702 + 0x9fc3, 0x0804, 0x9d8f, 0x080c, 0x9fb9, 0x6018, 0x2068, 0xa080,
11703 + 0x0028, 0x2014, 0xa286, 0x0080, 0x11c0, 0x6813, 0x00ff, 0x6817,
11704 + 0xfffc, 0x6010, 0xa005, 0x0138, 0x2068, 0x6807, 0x0000, 0x6837,
11705 + 0x0103, 0x6833, 0x0200, 0x2001, 0x0006, 0x080c, 0x5291, 0x080c,
11706 + 0x2e6c, 0x080c, 0x95e3, 0x0804, 0x9df3, 0x00e6, 0x2071, 0xc635,
11707 + 0x2e04, 0xd09c, 0x0188, 0x2071, 0xcc80, 0x7108, 0x720c, 0xa18c,
11708 + 0x00ff, 0x1118, 0xa284, 0xff00, 0x0138, 0x6018, 0x2070, 0x70a0,
11709 + 0xd0bc, 0x1110, 0x7112, 0x7216, 0x00ee, 0x6010, 0xa005, 0x0198,
11710 + 0x2068, 0x6838, 0xd0f4, 0x0178, 0x6834, 0xa084, 0x00ff, 0xa086,
11711 + 0x0039, 0x1958, 0x2001, 0x0000, 0x2009, 0x0000, 0x2011, 0x4000,
11712 + 0x080c, 0xb10d, 0x0840, 0x2001, 0x0004, 0x080c, 0x5291, 0x6003,
11713 + 0x0001, 0x6007, 0x0003, 0x080c, 0x79df, 0x0804, 0x9df3, 0x685c,
11714 + 0xd0e4, 0x01d8, 0x080c, 0xb009, 0x080c, 0x5f22, 0x0118, 0xd0dc,
11715 + 0x1904, 0x9d4b, 0x2011, 0xc635, 0x2204, 0xc0ad, 0x2012, 0x2001,
11716 + 0xc8d6, 0x2004, 0x00f6, 0x2079, 0x0100, 0x78e3, 0x0000, 0x080c,
11717 + 0x2a1c, 0x78e2, 0x00fe, 0x0804, 0x9d4b, 0x080c, 0xb03f, 0x2011,
11718 + 0xc635, 0x2204, 0xc0a5, 0x2012, 0x0006, 0x080c, 0xc023, 0x000e,
11719 + 0x1904, 0x9d4b, 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, 0x5291,
11720 + 0x2001, 0x0000, 0x080c, 0x527f, 0x00c6, 0x2009, 0x00ef, 0x00f6,
11721 + 0x2079, 0x0100, 0x79ea, 0x7932, 0x7936, 0x00fe, 0x080c, 0x29f1,
11722 + 0x00f6, 0x2079, 0xc600, 0x7976, 0x2100, 0x2009, 0x0000, 0x080c,
11723 + 0x29c7, 0x7952, 0x00fe, 0x8108, 0x080c, 0x52e1, 0x2c00, 0x00ce,
11724 + 0x1904, 0x9d4b, 0x601a, 0x2001, 0x0002, 0x080c, 0x5291, 0x601f,
11725 + 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x0018,
11726 + 0x2001, 0x0001, 0x0011, 0x00de, 0x0005, 0x0066, 0x2030, 0xa005,
11727 + 0x0170, 0x2001, 0x0007, 0x080c, 0x5291, 0x2001, 0xc600, 0x2004,
11728 + 0xa086, 0x0003, 0x1120, 0x2001, 0x0007, 0x080c, 0x52be, 0x2600,
11729 + 0xa005, 0x1150, 0x6010, 0xa080, 0x000e, 0x2004, 0xd0fc, 0x1120,
11730 + 0x2011, 0x8014, 0x080c, 0x407d, 0x080c, 0x2e6c, 0x080c, 0x95e3,
11731 + 0x006e, 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, 0xc600, 0x7084,
11732 + 0xa086, 0x0014, 0x15f0, 0x7000, 0xa086, 0x0003, 0x1128, 0x6010,
11733 + 0xa005, 0x1110, 0x080c, 0x40ef, 0x00d6, 0x6018, 0x2068, 0x080c,
11734 + 0x53df, 0x080c, 0x9d10, 0x00de, 0x080c, 0xa072, 0x1550, 0x00d6,
11735 + 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0518, 0x2001, 0x0006,
11736 + 0x080c, 0x5291, 0x00e6, 0x6010, 0xa075, 0x01a8, 0x7034, 0xa084,
11737 + 0x00ff, 0xa086, 0x0039, 0x1148, 0x2001, 0x0000, 0x2009, 0x0000,
11738 + 0x2011, 0x4000, 0x080c, 0xb10d, 0x0030, 0x7007, 0x0000, 0x7037,
11739 + 0x0103, 0x7033, 0x0200, 0x00ee, 0x080c, 0x2e6c, 0x080c, 0x95e3,
11740 + 0x0030, 0x080c, 0x9c09, 0x2001, 0x0000, 0x080c, 0x9df5, 0x001e,
11741 + 0x002e, 0x00ee, 0x0005, 0x2011, 0xc621, 0x2204, 0xa086, 0x0014,
11742 + 0x1158, 0x2001, 0x0002, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007,
11743 + 0x0001, 0x080c, 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5,
11744 + 0x0005, 0x2011, 0xc621, 0x2204, 0xa086, 0x0004, 0x1138, 0x2001,
11745 + 0x0007, 0x080c, 0x5291, 0x080c, 0x95e3, 0x0020, 0x2001, 0x0001,
11746 + 0x080c, 0x9df5, 0x0005, 0x000b, 0x0005, 0x9cda, 0x9eac, 0x9cda,
11747 + 0x9ee2, 0x9cda, 0x9f6f, 0x9ea1, 0x9cd7, 0x9cda, 0x9f84, 0x9cda,
11748 + 0x9f96, 0x6604, 0xa686, 0x0003, 0x0904, 0x9e1a, 0xa6b6, 0x001e,
11749 + 0x1110, 0x080c, 0x95e3, 0x0005, 0x00d6, 0x00c6, 0x080c, 0x9fa8,
11750 + 0x1178, 0x2001, 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c,
11751 + 0x5291, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x00f8,
11752 + 0x2009, 0xcc8e, 0x2104, 0xa086, 0x0009, 0x1160, 0x6018, 0x2068,
11753 + 0x6840, 0xa084, 0x00ff, 0xa005, 0x0170, 0x8001, 0x6842, 0x6017,
11754 + 0x000a, 0x0068, 0x2009, 0xcc8f, 0x2104, 0xa084, 0xff00, 0xa086,
11755 + 0x1900, 0x1108, 0x08d0, 0x2001, 0x0001, 0x080c, 0x9df5, 0x00ce,
11756 + 0x00de, 0x0005, 0x0026, 0x2011, 0x0000, 0x080c, 0x9fb6, 0x00d6,
11757 + 0x2069, 0xc8e5, 0x2d04, 0xa005, 0x0168, 0x6018, 0x2068, 0x68a0,
11758 + 0xa086, 0x007e, 0x1138, 0x2069, 0xc61d, 0x2d04, 0x8000, 0x206a,
11759 + 0x00de, 0x0010, 0x00de, 0x0078, 0x2001, 0x0000, 0x080c, 0x527f,
11760 + 0x2001, 0x0002, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0002,
11761 + 0x080c, 0x79df, 0x0490, 0x00d6, 0x6010, 0x2068, 0x080c, 0xac91,
11762 + 0x00de, 0x0108, 0x6a34, 0x080c, 0x9c09, 0x2009, 0xcc8e, 0x2134,
11763 + 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0510, 0xa686, 0x000b, 0x01c8,
11764 + 0x2009, 0xcc8f, 0x2104, 0xa084, 0xff00, 0x1118, 0xa686, 0x0009,
11765 + 0x01b0, 0xa086, 0x1900, 0x1168, 0xa686, 0x0009, 0x0180, 0x2001,
11766 + 0x0004, 0x080c, 0x5291, 0x2001, 0x0028, 0x6016, 0x6007, 0x004b,
11767 + 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x002e, 0x0005, 0x00d6,
11768 + 0xa286, 0x0139, 0x0160, 0x6010, 0x2068, 0x080c, 0xac91, 0x0148,
11769 + 0x6834, 0xa086, 0x0139, 0x0118, 0x6838, 0xd0fc, 0x0110, 0x00de,
11770 + 0x0c40, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0140,
11771 + 0x8001, 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x00de, 0x08e8,
11772 + 0x68a0, 0xa086, 0x007e, 0x1138, 0x00e6, 0x2071, 0xc600, 0x080c,
11773 + 0x4f02, 0x00ee, 0x0010, 0x080c, 0x2e46, 0x00de, 0x0850, 0x080c,
11774 + 0x9fb6, 0x1158, 0x2001, 0x0004, 0x080c, 0x5291, 0x6003, 0x0001,
11775 + 0x6007, 0x0003, 0x080c, 0x79df, 0x0030, 0x080c, 0x9c09, 0x2001,
11776 + 0x0000, 0x080c, 0x9df5, 0x0005, 0x0489, 0x1158, 0x2001, 0x0008,
11777 + 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, 0x79df,
11778 + 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x0005, 0x00f9, 0x1158,
11779 + 0x2001, 0x000a, 0x080c, 0x5291, 0x6003, 0x0001, 0x6007, 0x0001,
11780 + 0x080c, 0x79df, 0x0020, 0x2001, 0x0001, 0x080c, 0x9df5, 0x0005,
11781 + 0x2009, 0xcc8e, 0x2104, 0xa086, 0x0003, 0x1138, 0x2009, 0xcc8f,
11782 + 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x0005, 0xa085, 0x0001,
11783 + 0x0005, 0x00c6, 0x0016, 0xac88, 0x0006, 0x2164, 0x080c, 0x534c,
11784 + 0x001e, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, 0x0016,
11785 + 0x6018, 0x2068, 0x2071, 0xc635, 0x2e04, 0xa085, 0x0003, 0x2072,
11786 + 0x080c, 0xa047, 0x0560, 0x2009, 0xc635, 0x2104, 0xc0cd, 0x200a,
11787 + 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, 0x2009,
11788 + 0x002a, 0x080c, 0xc190, 0x2001, 0xc60c, 0x200c, 0xc195, 0x2102,
11789 + 0x2019, 0x002a, 0x2009, 0x0001, 0x080c, 0x2e19, 0x2071, 0xc600,
11790 + 0x080c, 0x2c62, 0x00c6, 0x0156, 0x20a9, 0x0081, 0x2009, 0x007f,
11791 + 0x080c, 0x2f41, 0x8108, 0x1f04, 0x9ff8, 0x015e, 0x00ce, 0x080c,
11792 + 0x9fb9, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0xcc80, 0x2079,
11793 + 0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0xc61c, 0x206a, 0x78e6,
11794 + 0x0006, 0x8e70, 0x2e04, 0x2069, 0xc61d, 0x206a, 0x78ea, 0x7832,
11795 + 0x7836, 0x2010, 0xa084, 0xff00, 0x001e, 0xa105, 0x2009, 0xc628,
11796 + 0x200a, 0x2200, 0xa084, 0x00ff, 0x2008, 0x080c, 0x29f1, 0x080c,
11797 + 0x5f22, 0x0170, 0x2069, 0xcc8e, 0x2071, 0xc8f9, 0x6810, 0x2072,
11798 + 0x6814, 0x7006, 0x6818, 0x700a, 0x681c, 0x700e, 0x080c, 0xb009,
11799 + 0x0040, 0x2001, 0x0006, 0x080c, 0x5291, 0x080c, 0x2e6c, 0x080c,
11800 + 0x95e3, 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x0026,
11801 + 0x0036, 0x00e6, 0x0156, 0x2019, 0xc628, 0x231c, 0x83ff, 0x01e8,
11802 + 0x2071, 0xcc80, 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, 0xff00,
11803 + 0xa205, 0xa306, 0x1190, 0x2011, 0xcc96, 0xad98, 0x000a, 0x20a9,
11804 + 0x0004, 0x080c, 0xa103, 0x1148, 0x2011, 0xcc9a, 0xad98, 0x0006,
11805 + 0x20a9, 0x0004, 0x080c, 0xa103, 0x1100, 0x015e, 0x00ee, 0x003e,
11806 + 0x002e, 0x0005, 0x00e6, 0x2071, 0xcc8c, 0x7004, 0xa086, 0x0014,
11807 + 0x11a8, 0x7008, 0xa086, 0x0800, 0x1188, 0x700c, 0xd0ec, 0x0160,
11808 + 0xa084, 0x0f00, 0xa086, 0x0100, 0x1138, 0x7024, 0xd0a4, 0x1110,
11809 + 0xd0ac, 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, 0x00ee, 0x0005,
11810 + 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006,
11811 + 0x0126, 0x2091, 0x8000, 0x2029, 0xc930, 0x252c, 0x2021, 0xc936,
11812 + 0x2424, 0x2061, 0xce00, 0x2071, 0xc600, 0x7248, 0x7068, 0xa202,
11813 + 0x16f0, 0x080c, 0xc1b8, 0x05a0, 0x671c, 0xa786, 0x0001, 0x0580,
11814 + 0xa786, 0x0007, 0x0568, 0x2500, 0xac06, 0x0550, 0x2400, 0xac06,
11815 + 0x0538, 0x00c6, 0x6000, 0xa086, 0x0004, 0x1110, 0x080c, 0x1953,
11816 + 0xa786, 0x0008, 0x1148, 0x080c, 0xae8f, 0x1130, 0x00ce, 0x080c,
11817 + 0x9c09, 0x080c, 0xae54, 0x00a0, 0x6010, 0x2068, 0x080c, 0xac91,
11818 + 0x0160, 0xa786, 0x0003, 0x11e8, 0x6837, 0x0103, 0x6b4a, 0x6847,
11819 + 0x0000, 0x080c, 0x580a, 0x080c, 0xae48, 0x080c, 0xae54, 0x00ce,
11820 + 0xace0, 0x0018, 0x705c, 0xac02, 0x1210, 0x0804, 0xa0a5, 0x012e,
11821 + 0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x00de, 0x00ee,
11822 + 0x0005, 0xa786, 0x0006, 0x1118, 0x080c, 0xc141, 0x0c30, 0xa786,
11823 + 0x0009, 0x1128, 0x2009, 0x0106, 0x080c, 0x9613, 0x0c00, 0xa786,
11824 + 0x000a, 0x09a0, 0x0888, 0x220c, 0x2304, 0xa106, 0x1130, 0x8210,
11825 + 0x8318, 0x1f04, 0xa103, 0xa006, 0x0005, 0x2304, 0xa102, 0x0218,
11826 + 0x2001, 0x0001, 0x0010, 0x2001, 0x0000, 0xa18d, 0x0001, 0x0005,
11827 + 0x220c, 0x810f, 0x2304, 0xa106, 0x1130, 0x8210, 0x8318, 0x1f04,
11828 + 0xa118, 0xa006, 0x0005, 0xa18d, 0x0001, 0x0005, 0x6004, 0xa08a,
11829 + 0x0080, 0x1a0c, 0x1519, 0x080c, 0xae7e, 0x0120, 0x080c, 0xae8f,
11830 + 0x0168, 0x0028, 0x080c, 0x2e6c, 0x080c, 0xae8f, 0x0138, 0x080c,
11831 + 0x7db1, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005, 0x080c, 0x9c09,
11832 + 0x0cb0, 0xa182, 0x0040, 0x0002, 0xa157, 0xa157, 0xa157, 0xa157,
11833 + 0xa157, 0xa157, 0xa157, 0xa157, 0xa157, 0xa157, 0xa157, 0xa159,
11834 + 0xa159, 0xa159, 0xa159, 0xa157, 0xa157, 0xa157, 0xa159, 0x080c,
11835 + 0x1519, 0x600b, 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999,
11836 + 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0xa186,
11837 + 0x0013, 0x1128, 0x6004, 0xa082, 0x0040, 0x0804, 0xa1f3, 0xa186,
11838 + 0x0027, 0x11e8, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x00d6, 0x6110,
11839 + 0x2168, 0x080c, 0xac91, 0x0168, 0x6837, 0x0103, 0x684b, 0x0029,
11840 + 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x080c, 0x580a, 0x080c,
11841 + 0xae48, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005, 0xa186,
11842 + 0x0014, 0x1120, 0x6004, 0xa082, 0x0040, 0x0428, 0xa186, 0x0046,
11843 + 0x0138, 0xa186, 0x0045, 0x0120, 0xa186, 0x0047, 0x190c, 0x1519,
11844 + 0x2001, 0x0109, 0x2004, 0xd084, 0x0198, 0x0126, 0x2091, 0x2800,
11845 + 0x0006, 0x0016, 0x0026, 0x080c, 0x7873, 0x002e, 0x001e, 0x000e,
11846 + 0x012e, 0xe000, 0x6000, 0xa086, 0x0002, 0x1110, 0x0804, 0xa231,
11847 + 0x080c, 0x962a, 0x0005, 0x0002, 0xa1d1, 0xa1cf, 0xa1cf, 0xa1cf,
11848 + 0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1cf, 0xa1ec,
11849 + 0xa1ec, 0xa1ec, 0xa1ec, 0xa1cf, 0xa1ec, 0xa1cf, 0xa1ec, 0x080c,
11850 + 0x1519, 0x080c, 0x7db1, 0x00d6, 0x6110, 0x2168, 0x080c, 0xac91,
11851 + 0x0168, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, 0x6850,
11852 + 0xc0ec, 0x6852, 0x080c, 0x580a, 0x080c, 0xae48, 0x00de, 0x080c,
11853 + 0x95e3, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x080c, 0x95e3,
11854 + 0x080c, 0x7e94, 0x0005, 0x0002, 0xa209, 0xa207, 0xa207, 0xa207,
11855 + 0xa207, 0xa207, 0xa207, 0xa207, 0xa207, 0xa207, 0xa207, 0xa21b,
11856 + 0xa21b, 0xa21b, 0xa21b, 0xa207, 0xa22a, 0xa207, 0xa21b, 0x080c,
11857 + 0x1519, 0x080c, 0x7db1, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x6003,
11858 + 0x0002, 0x080c, 0x7e94, 0x6010, 0xa088, 0x0013, 0x2104, 0xa085,
11859 + 0x0400, 0x200a, 0x0005, 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004,
11860 + 0x6016, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x6003, 0x000f, 0x080c,
11861 + 0x7e94, 0x0005, 0x080c, 0x7db1, 0x080c, 0x95e3, 0x080c, 0x7e94,
11862 + 0x0005, 0xa182, 0x0040, 0x0002, 0xa247, 0xa247, 0xa247, 0xa247,
11863 + 0xa247, 0xa249, 0xa32e, 0xa35d, 0xa247, 0xa247, 0xa247, 0xa247,
11864 + 0xa247, 0xa247, 0xa247, 0xa247, 0xa247, 0xa247, 0xa247, 0x080c,
11865 + 0x1519, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2071, 0xcc80, 0x7124,
11866 + 0x610a, 0x2071, 0xcc8c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff,
11867 + 0x86ff, 0x0904, 0xa2f7, 0xa68c, 0x0c00, 0x0518, 0x00f6, 0x2c78,
11868 + 0x080c, 0x56c3, 0x00fe, 0x01c8, 0x684c, 0xd0ac, 0x01b0, 0x6020,
11869 + 0xd0dc, 0x1198, 0x6850, 0xd0bc, 0x1180, 0x7318, 0x6814, 0xa306,
11870 + 0x1904, 0xa30a, 0x731c, 0x6810, 0xa31e, 0x0138, 0xd6d4, 0x0904,
11871 + 0xa30a, 0x6b14, 0xa305, 0x1904, 0xa30a, 0x7318, 0x6b62, 0x731c,
11872 + 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0518, 0xa186, 0x0028,
11873 + 0x1128, 0x080c, 0xae6d, 0x684b, 0x001c, 0x00e8, 0xd6dc, 0x01a0,
11874 + 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0170, 0x6914, 0x6a10, 0x2100,
11875 + 0xa205, 0x0148, 0x7018, 0xa106, 0x1118, 0x701c, 0xa206, 0x0118,
11876 + 0x6962, 0x6a5e, 0xc6dc, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007,
11877 + 0x0010, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4,
11878 + 0x01f0, 0xa686, 0x0100, 0x1140, 0x2001, 0xcc99, 0x2004, 0xa005,
11879 + 0x1118, 0xc6c4, 0x0804, 0xa258, 0x7328, 0x732c, 0x6b56, 0x83ff,
11880 + 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308,
11881 + 0x2019, 0xcc98, 0xad90, 0x0019, 0x080c, 0xa944, 0x003e, 0xd6cc,
11882 + 0x0904, 0xa31d, 0x7124, 0x695a, 0x81ff, 0x0904, 0xa31d, 0xa192,
11883 + 0x0021, 0x1260, 0x2071, 0xcc98, 0x831c, 0x2300, 0xae18, 0xad90,
11884 + 0x001d, 0x080c, 0xa944, 0x080c, 0xb16e, 0x04b8, 0x6838, 0xd0fc,
11885 + 0x0120, 0x2009, 0x0020, 0x695a, 0x0c68, 0x00f6, 0x2d78, 0x080c,
11886 + 0xa8e9, 0x00fe, 0x080c, 0xb16e, 0x080c, 0xa934, 0x0440, 0x00f6,
11887 + 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0190, 0x684c, 0xd0ac, 0x0178,
11888 + 0x6020, 0xd0dc, 0x1160, 0x6850, 0xd0bc, 0x1148, 0x6810, 0x6914,
11889 + 0xa105, 0x0128, 0x080c, 0xaf6c, 0x00de, 0x00ee, 0x00f0, 0x684b,
11890 + 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0130, 0x6810,
11891 + 0x6914, 0xa115, 0x0110, 0x080c, 0xa4ba, 0x080c, 0x580a, 0x6218,
11892 + 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x080c, 0xaf3a,
11893 + 0x00de, 0x00ee, 0x1110, 0x080c, 0x95e3, 0x0005, 0x00f6, 0x6003,
11894 + 0x0003, 0x2079, 0xcc8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010,
11895 + 0x2078, 0x784c, 0xd0ac, 0x0138, 0x6003, 0x0002, 0x00fe, 0x0005,
11896 + 0x2130, 0x2228, 0x0058, 0x2400, 0x797c, 0xa10a, 0x2300, 0x7a80,
11897 + 0xa213, 0x2600, 0xa102, 0x2500, 0xa203, 0x0e90, 0x7c12, 0x7b16,
11898 + 0x7e0a, 0x7d0e, 0x00fe, 0x603f, 0x0000, 0x2c10, 0x080c, 0x2068,
11899 + 0x080c, 0x79fc, 0x080c, 0x7f6e, 0x0005, 0x2001, 0xc8ff, 0x2004,
11900 + 0x603e, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20,
11901 + 0x2c10, 0x080c, 0x1870, 0x0005, 0xa182, 0x0040, 0x0002, 0xa382,
11902 + 0xa382, 0xa382, 0xa382, 0xa382, 0xa384, 0xa417, 0xa382, 0xa382,
11903 + 0xa42d, 0xa491, 0xa382, 0xa382, 0xa382, 0xa382, 0xa4a0, 0xa382,
11904 + 0xa382, 0xa382, 0x080c, 0x1519, 0x0076, 0x00f6, 0x00e6, 0x00d6,
11905 + 0x2071, 0xcc8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46,
11906 + 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110,
11907 + 0x8211, 0x6a3e, 0x86ff, 0x0904, 0xa412, 0xa694, 0xff00, 0xa284,
11908 + 0x0c00, 0x0120, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300,
11909 + 0x0904, 0xa412, 0x080c, 0x1602, 0x090c, 0x1519, 0x2d00, 0x784a,
11910 + 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c,
11911 + 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, 0x0120, 0x7318,
11912 + 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0180,
11913 + 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd6dc, 0x0118,
11914 + 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007, 0x0010,
11915 + 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e,
11916 + 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, 0xa38a,
11917 + 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0xcc98,
11918 + 0xad90, 0x0019, 0x080c, 0xa944, 0x003e, 0xd6cc, 0x01d8, 0x7124,
11919 + 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, 0xcc98,
11920 + 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa944, 0x0050,
11921 + 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, 0x2d78,
11922 + 0x080c, 0xa8e9, 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, 0x00f6,
11923 + 0x6003, 0x0003, 0x2079, 0xcc8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08,
11924 + 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, 0x2c10,
11925 + 0x080c, 0x2068, 0x080c, 0x8bdb, 0x0005, 0x00d6, 0x00f6, 0x2c78,
11926 + 0x080c, 0x56c3, 0x00fe, 0x0120, 0x2001, 0xc8ff, 0x2004, 0x603e,
11927 + 0x6003, 0x0002, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x6110, 0x2168,
11928 + 0x694c, 0xd1e4, 0x0904, 0xa48f, 0xd1cc, 0x0540, 0x6948, 0x6838,
11929 + 0xd0fc, 0x01e8, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, 0xad90,
11930 + 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x0156, 0x21a8, 0x2304,
11931 + 0x2012, 0x8318, 0x8210, 0x1f04, 0xa457, 0x015e, 0x000e, 0x6852,
11932 + 0x000e, 0x684e, 0x001e, 0x2168, 0x080c, 0x1629, 0x0418, 0x0016,
11933 + 0x080c, 0x1629, 0x00de, 0x080c, 0xa934, 0x00e0, 0x6837, 0x0103,
11934 + 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0180, 0xa086, 0x0028,
11935 + 0x1118, 0x684b, 0x001c, 0x0060, 0xd1dc, 0x0118, 0x684b, 0x0015,
11936 + 0x0038, 0xd1d4, 0x0118, 0x684b, 0x0007, 0x0010, 0x684b, 0x0000,
11937 + 0x080c, 0x580a, 0x080c, 0xaf3a, 0x1110, 0x080c, 0x95e3, 0x00de,
11938 + 0x0005, 0x2019, 0x0001, 0x080c, 0x8e79, 0x6003, 0x0002, 0x2001,
11939 + 0xc8ff, 0x2004, 0x603e, 0x080c, 0x7e47, 0x080c, 0x7f6e, 0x0005,
11940 + 0x080c, 0x7e47, 0x080c, 0x2e46, 0x00d6, 0x6110, 0x2168, 0x080c,
11941 + 0xac91, 0x0150, 0x6837, 0x0103, 0x684b, 0x0029, 0x6847, 0x0000,
11942 + 0x080c, 0x580a, 0x080c, 0xae48, 0x00de, 0x080c, 0x95e3, 0x080c,
11943 + 0x7f6e, 0x0005, 0x684b, 0x0015, 0xd1fc, 0x0138, 0x684b, 0x0007,
11944 + 0x8002, 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, 0x685e, 0x0005,
11945 + 0xa182, 0x0040, 0x0002, 0xa4de, 0xa4de, 0xa4de, 0xa4de, 0xa4de,
11946 + 0xa4e0, 0xa4de, 0xa59b, 0xa5a7, 0xa4de, 0xa4de, 0xa4de, 0xa4de,
11947 + 0xa4de, 0xa4de, 0xa4de, 0xa4de, 0xa4de, 0xa4de, 0x080c, 0x1519,
11948 + 0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, 0xcc8c, 0x6110, 0x2178,
11949 + 0x7614, 0xa6b4, 0x0fff, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe,
11950 + 0x0150, 0xa684, 0x00ff, 0x1138, 0x6020, 0xd0f4, 0x0120, 0x080c,
11951 + 0xaf6c, 0x0804, 0xa596, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218,
11952 + 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x86ff, 0x0904,
11953 + 0xa58c, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0120, 0x7018, 0x7862,
11954 + 0x701c, 0x785e, 0xa284, 0x0300, 0x0904, 0xa58a, 0xa686, 0x0100,
11955 + 0x1140, 0x2001, 0xcc99, 0x2004, 0xa005, 0x1118, 0xc6c4, 0x7e46,
11956 + 0x0c28, 0x080c, 0x1602, 0x090c, 0x1519, 0x2d00, 0x784a, 0x7f4c,
11957 + 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c,
11958 + 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, 0x0120, 0x7318,
11959 + 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0180,
11960 + 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd6dc, 0x0118,
11961 + 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, 0x0007, 0x0010,
11962 + 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e,
11963 + 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, 0x0170, 0xa38a,
11964 + 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, 0x2019, 0xcc98,
11965 + 0xad90, 0x0019, 0x080c, 0xa944, 0x003e, 0xd6cc, 0x01d8, 0x7124,
11966 + 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, 0x2071, 0xcc98,
11967 + 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0xa944, 0x0050,
11968 + 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c78, 0x2d78,
11969 + 0x080c, 0xa8e9, 0xd6dc, 0x1110, 0xa006, 0x0030, 0x2001, 0x0001,
11970 + 0x2071, 0xcc8c, 0x7218, 0x731c, 0x080c, 0x18b8, 0x00de, 0x00ee,
11971 + 0x00fe, 0x007e, 0x0005, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x20e1,
11972 + 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x0005, 0x2001,
11973 + 0xc8ff, 0x2004, 0x603e, 0x00d6, 0x6003, 0x0002, 0x6110, 0x2168,
11974 + 0x694c, 0xd1e4, 0x0904, 0xa6b2, 0x603f, 0x0000, 0x00f6, 0x2c78,
11975 + 0x080c, 0x56c3, 0x00fe, 0x0560, 0x6814, 0x6910, 0xa115, 0x0540,
11976 + 0x6a60, 0xa206, 0x1118, 0x685c, 0xa106, 0x0510, 0x684c, 0xc0e4,
11977 + 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, 0x0000, 0x6020,
11978 + 0xd0f4, 0x1158, 0x697c, 0x6810, 0xa102, 0x603a, 0x6980, 0x6814,
11979 + 0xa103, 0x6036, 0x6020, 0xc0f5, 0x6022, 0x00d6, 0x6018, 0x2068,
11980 + 0x683c, 0x8000, 0x683e, 0x00de, 0x080c, 0xaf6c, 0x0804, 0xa6b2,
11981 + 0x694c, 0xd1cc, 0x0904, 0xa682, 0x6948, 0x6838, 0xd0fc, 0x0904,
11982 + 0xa645, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, 0x00f6, 0x2178,
11983 + 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, 0x0028,
11984 + 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, 0x0158,
11985 + 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb0f6, 0x0118, 0x7944,
11986 + 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, 0x784b,
11987 + 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, 0xa115,
11988 + 0x0110, 0x080c, 0xa4ba, 0x6848, 0x784a, 0x6860, 0x7862, 0x685c,
11989 + 0x785e, 0xad90, 0x000d, 0xaf98, 0x000d, 0x2009, 0x0020, 0x0156,
11990 + 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0xa631, 0x015e,
11991 + 0x00fe, 0x000e, 0x6852, 0x000e, 0x684e, 0x080c, 0xb16e, 0x001e,
11992 + 0x2168, 0x080c, 0x1629, 0x0804, 0xa6ad, 0x0016, 0x00f6, 0x2178,
11993 + 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, 0xa086, 0x0028,
11994 + 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, 0xd1dc, 0x0158,
11995 + 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xb0f6, 0x0118, 0x7944,
11996 + 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, 0x0007, 0x784b,
11997 + 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, 0xa115,
11998 + 0x0110, 0x080c, 0xa4ba, 0x6860, 0x7862, 0x685c, 0x785e, 0x684c,
11999 + 0x784e, 0x00fe, 0x080c, 0x1629, 0x00de, 0x080c, 0xb16e, 0x080c,
12000 + 0xa934, 0x0458, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6,
12001 + 0x0002, 0x01b0, 0xa086, 0x0028, 0x1118, 0x684b, 0x001c, 0x00d8,
12002 + 0xd1dc, 0x0148, 0x684b, 0x0015, 0x080c, 0xb0f6, 0x0118, 0x6944,
12003 + 0xc1dc, 0x6946, 0x0080, 0xd1d4, 0x0118, 0x684b, 0x0007, 0x0058,
12004 + 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0130, 0x6810, 0x6914, 0xa115,
12005 + 0x0110, 0x080c, 0xa4ba, 0x080c, 0x580a, 0x080c, 0xaf3a, 0x1110,
12006 + 0x080c, 0x95e3, 0x00de, 0x0005, 0x080c, 0x7db1, 0x0010, 0x080c,
12007 + 0x7e47, 0x080c, 0xac91, 0x01c0, 0x00d6, 0x6110, 0x2168, 0x6837,
12008 + 0x0103, 0x2009, 0xc60c, 0x210c, 0xd18c, 0x11c0, 0xd184, 0x1198,
12009 + 0x6108, 0x694a, 0xa18e, 0x0029, 0x1110, 0x080c, 0xc4d7, 0x6847,
12010 + 0x0000, 0x080c, 0x580a, 0x00de, 0x080c, 0x95e3, 0x080c, 0x7e94,
12011 + 0x080c, 0x7f6e, 0x0005, 0x684b, 0x0004, 0x0c88, 0x684b, 0x0004,
12012 + 0x0c70, 0xa182, 0x0040, 0x0002, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7,
12013 + 0xa6f7, 0xa6f9, 0xa6f7, 0xa6fc, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7,
12014 + 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0x080c,
12015 + 0x1519, 0x080c, 0x95e3, 0x0005, 0x0006, 0x0026, 0xa016, 0x080c,
12016 + 0x1870, 0x002e, 0x000e, 0x0005, 0xa182, 0x0085, 0x0002, 0xa710,
12017 + 0xa70e, 0xa70e, 0xa71c, 0xa70e, 0xa70e, 0xa70e, 0x080c, 0x1519,
12018 + 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x0126, 0x2091, 0x8000,
12019 + 0x080c, 0x7e94, 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, 0x00e6,
12020 + 0x2071, 0xcc80, 0x7224, 0x6212, 0x7220, 0x080c, 0xac81, 0x01a0,
12021 + 0x2268, 0x6800, 0xa086, 0x0000, 0x0178, 0x6018, 0x6d18, 0xa52e,
12022 + 0x1158, 0x00c6, 0x2d60, 0x080c, 0xa954, 0x00ce, 0x0128, 0x6803,
12023 + 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, 0x6003, 0x0001,
12024 + 0x080c, 0x7999, 0x080c, 0x7e94, 0x00f6, 0x2278, 0x080c, 0x56c3,
12025 + 0x00fe, 0x0150, 0x6820, 0xd0ec, 0x0138, 0x00c6, 0x2260, 0x603f,
12026 + 0x0000, 0x080c, 0xaf6c, 0x00ce, 0x00ee, 0x00de, 0x005e, 0x002e,
12027 + 0x0005, 0xa186, 0x0013, 0x1160, 0x6004, 0xa08a, 0x0085, 0x0a0c,
12028 + 0x1519, 0xa08a, 0x008c, 0x1a0c, 0x1519, 0xa082, 0x0085, 0x0072,
12029 + 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x080c,
12030 + 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa77d, 0xa77f,
12031 + 0xa77f, 0xa77d, 0xa77d, 0xa77d, 0xa77d, 0x080c, 0x1519, 0x080c,
12032 + 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa186, 0x0013,
12033 + 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x04a8, 0xa186, 0x0027,
12034 + 0x11e8, 0x080c, 0x7db1, 0x080c, 0x2e46, 0x00d6, 0x6010, 0x2068,
12035 + 0x080c, 0xac91, 0x0150, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b,
12036 + 0x0029, 0x080c, 0x580a, 0x080c, 0xae48, 0x00de, 0x080c, 0x95e3,
12037 + 0x080c, 0x7e94, 0x0005, 0x080c, 0x962a, 0x0ce0, 0xa186, 0x0014,
12038 + 0x1dd0, 0x080c, 0x7db1, 0x00d6, 0x6010, 0x2068, 0x080c, 0xac91,
12039 + 0x0d60, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b, 0x0006, 0x6850,
12040 + 0xc0ec, 0x6852, 0x08f0, 0x0002, 0xa7cd, 0xa7cb, 0xa7cb, 0xa7cb,
12041 + 0xa7cb, 0xa7cb, 0xa7e5, 0x080c, 0x1519, 0x080c, 0x7db1, 0x6030,
12042 + 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035,
12043 + 0x1118, 0x2001, 0xc8fd, 0x0010, 0x2001, 0xc8fe, 0x2004, 0x6016,
12044 + 0x6003, 0x000c, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x6030,
12045 + 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035,
12046 + 0x1118, 0x2001, 0xc8fd, 0x0010, 0x2001, 0xc8fe, 0x2004, 0x6016,
12047 + 0x6003, 0x000e, 0x080c, 0x7e94, 0x0005, 0xa182, 0x008c, 0x1220,
12048 + 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x962a, 0x0005, 0xa80e,
12049 + 0xa80e, 0xa80e, 0xa80e, 0xa810, 0xa869, 0xa80e, 0x080c, 0x1519,
12050 + 0x00d6, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0168, 0x6030,
12051 + 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035,
12052 + 0x1118, 0x00de, 0x0804, 0xa87c, 0x080c, 0xac91, 0x1118, 0x080c,
12053 + 0xae48, 0x00f0, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x1110, 0x080c,
12054 + 0xae48, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0x684b, 0x0006,
12055 + 0xc0ec, 0x6852, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, 0x0020,
12056 + 0x684b, 0x0005, 0x080c, 0xaf09, 0x6847, 0x0000, 0x080c, 0x580a,
12057 + 0x2c68, 0x080c, 0x958d, 0x01c0, 0x6003, 0x0001, 0x6007, 0x001e,
12058 + 0x600b, 0xffff, 0x2009, 0xcc8e, 0x210c, 0x6136, 0x2009, 0xcc8f,
12059 + 0x210c, 0x613a, 0x6918, 0x611a, 0x080c, 0xb05e, 0x6950, 0x6152,
12060 + 0x601f, 0x0001, 0x080c, 0x7999, 0x2d60, 0x080c, 0x95e3, 0x00de,
12061 + 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x0598, 0x6030,
12062 + 0xa08c, 0xff00, 0x810f, 0xa186, 0x0035, 0x0130, 0xa186, 0x001e,
12063 + 0x0118, 0xa186, 0x0039, 0x1530, 0x00d6, 0x2c68, 0x080c, 0xb141,
12064 + 0x1904, 0xa8c1, 0x080c, 0x958d, 0x01d8, 0x6106, 0x6003, 0x0001,
12065 + 0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, 0x692c, 0x612e,
12066 + 0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, 0x6938, 0x613a,
12067 + 0x6950, 0x6152, 0x080c, 0xb05e, 0x080c, 0x7999, 0x080c, 0x7e94,
12068 + 0x2d60, 0x00f8, 0x00d6, 0x6010, 0x2068, 0x080c, 0xac91, 0x01c8,
12069 + 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0xc0ec, 0x6852, 0x684b,
12070 + 0x0006, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, 0x0020, 0x684b,
12071 + 0x0005, 0x080c, 0xaf09, 0x6847, 0x0000, 0x080c, 0x580a, 0x080c,
12072 + 0xae48, 0x00de, 0x080c, 0x95e3, 0x0005, 0x0016, 0x00d6, 0x6010,
12073 + 0x2068, 0x080c, 0xac91, 0x0140, 0x6837, 0x0103, 0x684b, 0x0028,
12074 + 0x6847, 0x0000, 0x080c, 0x580a, 0x00de, 0x001e, 0xa186, 0x0013,
12075 + 0x0148, 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, 0x080c,
12076 + 0x962a, 0x0030, 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94,
12077 + 0x0005, 0x0056, 0x0066, 0x00d6, 0x00f6, 0x2029, 0x0001, 0xa182,
12078 + 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x2069, 0xcc98,
12079 + 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, 0x001d, 0x080c,
12080 + 0xa944, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0110, 0x080c, 0x1629,
12081 + 0x080c, 0x1602, 0x0500, 0x8528, 0x6837, 0x0110, 0x683b, 0x0000,
12082 + 0x2d20, 0x7c06, 0xa68a, 0x003d, 0x1228, 0x2608, 0xad90, 0x000f,
12083 + 0x0459, 0x0088, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90,
12084 + 0x000f, 0x0411, 0x0c28, 0x00fe, 0x852f, 0xa5ad, 0x0003, 0x7d36,
12085 + 0xa5ac, 0x0000, 0x0028, 0x00fe, 0x852f, 0xa5ad, 0x0003, 0x7d36,
12086 + 0x00de, 0x006e, 0x005e, 0x0005, 0x00f6, 0x8dff, 0x0158, 0x6804,
12087 + 0xa07d, 0x0130, 0x6807, 0x0000, 0x080c, 0x580a, 0x2f68, 0x0cb8,
12088 + 0x080c, 0x580a, 0x00fe, 0x0005, 0x0156, 0xa184, 0x0001, 0x0108,
12089 + 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210,
12090 + 0x1f04, 0xa94b, 0x015e, 0x0005, 0x0066, 0x0126, 0x2091, 0x8000,
12091 + 0x2031, 0x0001, 0x601c, 0xa084, 0x000f, 0x0083, 0x012e, 0x006e,
12092 + 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, 0x0000, 0x601c,
12093 + 0xa084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, 0xa98b, 0xa98b,
12094 + 0xa986, 0xa9ad, 0xa979, 0xa986, 0xa9ad, 0xa986, 0xa979, 0x77f4,
12095 + 0xa986, 0x080c, 0x1519, 0x0036, 0x2019, 0x0010, 0x080c, 0xbd55,
12096 + 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0xa006, 0x0005,
12097 + 0xa085, 0x0001, 0x0005, 0x00d6, 0x86ff, 0x11d8, 0x6010, 0x2068,
12098 + 0x080c, 0xac91, 0x01c0, 0x6834, 0xa086, 0x0139, 0x1128, 0x684b,
12099 + 0x0005, 0x6853, 0x0000, 0x0028, 0xa00e, 0x2001, 0x0005, 0x080c,
12100 + 0x592e, 0x080c, 0xaf09, 0x080c, 0x580a, 0x080c, 0x95e3, 0xa085,
12101 + 0x0001, 0x00de, 0x0005, 0xa006, 0x0ce0, 0x6000, 0xa08a, 0x0010,
12102 + 0x1a0c, 0x1519, 0x000b, 0x0005, 0xa9c4, 0xa9e5, 0xa9c6, 0xaa04,
12103 + 0xa9e2, 0xa9c4, 0xa986, 0xa98b, 0xa98b, 0xa986, 0xa986, 0xa986,
12104 + 0xa986, 0xa986, 0xa986, 0xa986, 0x080c, 0x1519, 0x86ff, 0x11b8,
12105 + 0x601c, 0xa086, 0x0006, 0x0198, 0x00d6, 0x6010, 0x2068, 0x080c,
12106 + 0xac91, 0x0110, 0x080c, 0xaf09, 0x00de, 0x6007, 0x0085, 0x6003,
12107 + 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c, 0x7e94, 0xa085,
12108 + 0x0001, 0x0005, 0x080c, 0x1953, 0x0c08, 0x00e6, 0x2071, 0xc927,
12109 + 0x7024, 0xac06, 0x1110, 0x080c, 0x8dee, 0x601c, 0xa084, 0x000f,
12110 + 0xa086, 0x0006, 0x1150, 0x0086, 0x0096, 0x2049, 0x0001, 0x2c40,
12111 + 0x080c, 0x8fc9, 0x009e, 0x008e, 0x0010, 0x080c, 0x8ced, 0x00ee,
12112 + 0x1928, 0x080c, 0xa986, 0x0005, 0x0036, 0x00e6, 0x2071, 0xc927,
12113 + 0x703c, 0xac06, 0x1140, 0x2019, 0x0000, 0x080c, 0x8e79, 0x00ee,
12114 + 0x003e, 0x0804, 0xa9c6, 0x080c, 0x90f6, 0x00ee, 0x003e, 0x1904,
12115 + 0xa9c6, 0x080c, 0xa986, 0x0005, 0x00c6, 0x601c, 0xa084, 0x000f,
12116 + 0x0013, 0x00ce, 0x0005, 0xaa35, 0xaaa2, 0xabf0, 0xaa40, 0xae54,
12117 + 0xaa35, 0xbd47, 0xb185, 0xaaa2, 0x77c3, 0xac5b, 0x080c, 0x1519,
12118 + 0x080c, 0xae8f, 0x1110, 0x080c, 0x9c09, 0x0005, 0x080c, 0x7db1,
12119 + 0x080c, 0x7e94, 0x080c, 0x95e3, 0x0005, 0x6017, 0x0001, 0x0005,
12120 + 0x080c, 0xac91, 0x0120, 0x6010, 0xa080, 0x0019, 0x2c02, 0x6000,
12121 + 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xaa5e, 0xaa60,
12122 + 0xaa80, 0xaa92, 0xaa9f, 0xaa5e, 0xaa35, 0xaa35, 0xaa35, 0xaa92,
12123 + 0xaa92, 0xaa5e, 0xaa5e, 0xaa5e, 0xaa5e, 0xaa9c, 0x080c, 0x1519,
12124 + 0x00e6, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052, 0x2071, 0xc927,
12125 + 0x7024, 0xac06, 0x0190, 0x080c, 0x8ced, 0x6007, 0x0085, 0x6003,
12126 + 0x000b, 0x601f, 0x0002, 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c,
12127 + 0x7999, 0x080c, 0x7e94, 0x00ee, 0x0005, 0x6017, 0x0001, 0x0cd8,
12128 + 0x00d6, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x00de, 0x6007,
12129 + 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x7999, 0x080c,
12130 + 0x7e94, 0x0005, 0x00d6, 0x6017, 0x0001, 0x6010, 0x2068, 0x6850,
12131 + 0xc0b5, 0x6852, 0x00de, 0x0005, 0x080c, 0x95e3, 0x0005, 0x080c,
12132 + 0x1953, 0x08f0, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b,
12133 + 0x0005, 0xaab9, 0xaa3d, 0xaabb, 0xaab9, 0xaabb, 0xaabb, 0xaa36,
12134 + 0xaab9, 0xaa30, 0xaa30, 0xaab9, 0xaab9, 0xaab9, 0xaab9, 0xaab9,
12135 + 0xaab9, 0x080c, 0x1519, 0x00d6, 0x6018, 0x2068, 0x6804, 0xa084,
12136 + 0x00ff, 0x00de, 0xa08a, 0x000c, 0x1a0c, 0x1519, 0x000b, 0x0005,
12137 + 0xaad4, 0xab96, 0xaad6, 0xab14, 0xaad6, 0xab14, 0xaad6, 0xaae4,
12138 + 0xaad4, 0xab14, 0xaad4, 0xab00, 0x080c, 0x1519, 0x6004, 0xa08e,
12139 + 0x0016, 0x05a8, 0xa08e, 0x0004, 0x0590, 0xa08e, 0x0002, 0x0578,
12140 + 0xa08e, 0x004b, 0x0904, 0xab92, 0x6004, 0x080c, 0xae8f, 0x0904,
12141 + 0xabaf, 0xa08e, 0x0021, 0x0904, 0xabb3, 0xa08e, 0x0022, 0x0904,
12142 + 0xabaf, 0xa08e, 0x003d, 0x0904, 0xabb3, 0xa08e, 0x0039, 0x0904,
12143 + 0xabb7, 0xa08e, 0x0035, 0x0904, 0xabb7, 0xa08e, 0x001e, 0x0188,
12144 + 0xa08e, 0x0001, 0x1150, 0x00d6, 0x6018, 0x2068, 0x6804, 0xa084,
12145 + 0x00ff, 0x00de, 0xa086, 0x0006, 0x0110, 0x080c, 0x2e46, 0x080c,
12146 + 0x9c09, 0x080c, 0xae54, 0x0005, 0x00c6, 0x00d6, 0x6104, 0xa186,
12147 + 0x0016, 0x0904, 0xab83, 0xa186, 0x0002, 0x15d8, 0x2001, 0xc635,
12148 + 0x2004, 0xd08c, 0x1198, 0x080c, 0x5f22, 0x1180, 0x2001, 0xc8e6,
12149 + 0x2003, 0x0001, 0x2001, 0xc600, 0x2003, 0x0001, 0xa085, 0x0001,
12150 + 0x080c, 0x5f66, 0x080c, 0x5e5a, 0x0804, 0xabd9, 0x6018, 0x2068,
12151 + 0x2001, 0xc635, 0x2004, 0xd0ac, 0x1904, 0xabd9, 0x68a0, 0xd0bc,
12152 + 0x1904, 0xabd9, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0190, 0x8001,
12153 + 0x6842, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x603f,
12154 + 0x0000, 0x080c, 0x958d, 0x0128, 0x2d00, 0x601a, 0x601f, 0x0001,
12155 + 0x0450, 0x00de, 0x00ce, 0x6004, 0xa08e, 0x0002, 0x11a8, 0x6018,
12156 + 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x1170, 0x2009, 0xc635,
12157 + 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0xc600, 0x080c, 0x4f02,
12158 + 0x00ee, 0x080c, 0x9c09, 0x0020, 0x080c, 0x9c09, 0x080c, 0x2e46,
12159 + 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2e6c, 0x012e, 0x00ee,
12160 + 0x080c, 0xae54, 0x0005, 0x2001, 0x0002, 0x080c, 0x5291, 0x6003,
12161 + 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x080c, 0x7e94, 0x00de,
12162 + 0x00ce, 0x0c80, 0x080c, 0x2e6c, 0x0804, 0xab0f, 0x00c6, 0x00d6,
12163 + 0x6104, 0xa186, 0x0016, 0x0d38, 0x6018, 0x2068, 0x6840, 0xa084,
12164 + 0x00ff, 0xa005, 0x0904, 0xab59, 0x8001, 0x6842, 0x6003, 0x0001,
12165 + 0x080c, 0x79df, 0x080c, 0x7e94, 0x00de, 0x00ce, 0x0898, 0x080c,
12166 + 0x9c09, 0x0804, 0xab11, 0x080c, 0x9c37, 0x0804, 0xab11, 0x00d6,
12167 + 0x2c68, 0x6104, 0x080c, 0xb141, 0x00de, 0x0118, 0x080c, 0x95e3,
12168 + 0x00b8, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, 0x6032,
12169 + 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6038, 0x600a,
12170 + 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, 0x7999, 0x080c, 0x7e94,
12171 + 0x0005, 0x00de, 0x00ce, 0x080c, 0x9c09, 0x080c, 0x2e46, 0x00e6,
12172 + 0x0126, 0x2091, 0x8000, 0x080c, 0x2e6c, 0x6013, 0x0000, 0x601f,
12173 + 0x0007, 0x6017, 0x0398, 0x603f, 0x0000, 0x012e, 0x00ee, 0x0005,
12174 + 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519, 0x000b, 0x0005, 0xac07,
12175 + 0xac07, 0xac07, 0xac07, 0xac07, 0xac07, 0xac07, 0xac07, 0xac07,
12176 + 0xaa35, 0xac07, 0xaa3d, 0xac09, 0xaa3d, 0xac16, 0xac07, 0x080c,
12177 + 0x1519, 0x6004, 0xa086, 0x008b, 0x0148, 0x6007, 0x008b, 0x6003,
12178 + 0x000d, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0005, 0x080c, 0xae48,
12179 + 0x080c, 0xac91, 0x0580, 0x080c, 0x2e46, 0x00d6, 0x080c, 0xac91,
12180 + 0x0168, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847,
12181 + 0x0000, 0x6850, 0xc0ed, 0x6852, 0x080c, 0x580a, 0x2c68, 0x080c,
12182 + 0x958d, 0x0150, 0x6818, 0x601a, 0x080c, 0xb05e, 0x00c6, 0x2d60,
12183 + 0x080c, 0xae54, 0x00ce, 0x0008, 0x2d60, 0x00de, 0x6013, 0x0000,
12184 + 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x79df,
12185 + 0x080c, 0x7e94, 0x0078, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186,
12186 + 0x0039, 0x0118, 0xa186, 0x0035, 0x1118, 0x080c, 0x2e46, 0x08b0,
12187 + 0x080c, 0xae54, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1519,
12188 + 0x000b, 0x0005, 0xac72, 0xac72, 0xac72, 0xac74, 0xac74, 0xac72,
12189 + 0xac72, 0xac72, 0xac72, 0xac72, 0xac72, 0xac72, 0xac72, 0xac72,
12190 + 0xac72, 0xac72, 0x080c, 0x1519, 0x080c, 0x90f6, 0x190c, 0x1519,
12191 + 0x6110, 0x2168, 0x684b, 0x0006, 0x080c, 0x580a, 0x080c, 0x95e3,
12192 + 0x0005, 0xa284, 0x0007, 0x1158, 0xa282, 0xce00, 0x0240, 0x2001,
12193 + 0xc617, 0x2004, 0xa202, 0x1218, 0xa085, 0x0001, 0x0005, 0xa006,
12194 + 0x0ce8, 0x0026, 0x6210, 0xa294, 0xf000, 0x002e, 0x0005, 0x00e6,
12195 + 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, 0xce00,
12196 + 0x2071, 0xc600, 0x7348, 0x7068, 0xa302, 0x12a8, 0x601c, 0xa206,
12197 + 0x1160, 0x080c, 0xafe9, 0x0148, 0x080c, 0xae8f, 0x1110, 0x080c,
12198 + 0x9c09, 0x00c6, 0x080c, 0x95e3, 0x00ce, 0xace0, 0x0018, 0x705c,
12199 + 0xac02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e, 0x00ce, 0x00ee,
12200 + 0x0005, 0x00e6, 0x00c6, 0x0016, 0xa188, 0xc77b, 0x210c, 0x81ff,
12201 + 0x0128, 0x2061, 0xca3c, 0x611a, 0x080c, 0x2e46, 0xa006, 0x0010,
12202 + 0xa085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x00c6, 0x0056,
12203 + 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x958d, 0x005e, 0x0180,
12204 + 0x6612, 0x651a, 0x080c, 0xb05e, 0x601f, 0x0003, 0x2009, 0x004b,
12205 + 0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005,
12206 + 0xa006, 0x0cd0, 0x00c6, 0x0056, 0x0126, 0x2091, 0x8000, 0x62a0,
12207 + 0x00c6, 0x080c, 0xaf0d, 0x005e, 0x0550, 0x6013, 0x0000, 0x651a,
12208 + 0x080c, 0xb05e, 0x601f, 0x0003, 0x0016, 0x00c6, 0x2560, 0x080c,
12209 + 0x553e, 0x00ce, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c,
12210 + 0x7a0e, 0x2c08, 0x080c, 0xbef7, 0x007e, 0x001e, 0xd184, 0x0128,
12211 + 0x080c, 0x95e3, 0xa085, 0x0001, 0x0030, 0x2009, 0x004c, 0x080c,
12212 + 0x9613, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005, 0xa006,
12213 + 0x0cd0, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x958d, 0x2c78,
12214 + 0x00ce, 0x0180, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021,
12215 + 0x0005, 0x080c, 0xad87, 0x2f60, 0x2009, 0x004d, 0x080c, 0x9613,
12216 + 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6,
12217 + 0x0046, 0x00c6, 0x080c, 0x958d, 0x2c78, 0x00ce, 0x0178, 0x7e12,
12218 + 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021, 0x0005, 0x0481, 0x2f60,
12219 + 0x2009, 0x004e, 0x080c, 0x9613, 0xa085, 0x0001, 0x004e, 0x00ce,
12220 + 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x958d,
12221 + 0x2c78, 0x00ce, 0x01c0, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003,
12222 + 0x2021, 0x0004, 0x00a1, 0x2001, 0xc8e7, 0x2004, 0xd0fc, 0x0120,
12223 + 0x2f60, 0x080c, 0x95e3, 0x0028, 0x2f60, 0x2009, 0x0052, 0x080c,
12224 + 0x9613, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x0096,
12225 + 0x0076, 0x0126, 0x2091, 0x8000, 0x080c, 0x54e0, 0x0118, 0x2001,
12226 + 0xad8c, 0x0028, 0x080c, 0x54b0, 0x0158, 0x2001, 0xad92, 0x0006,
12227 + 0xa00e, 0x2400, 0x080c, 0x592e, 0x080c, 0x580a, 0x000e, 0x0807,
12228 + 0x2418, 0x080c, 0x7d50, 0x62a0, 0x0086, 0x2041, 0x0001, 0x2039,
12229 + 0x0001, 0x2608, 0x080c, 0x7b2f, 0x008e, 0x080c, 0x7a0e, 0x2f08,
12230 + 0x2648, 0x080c, 0xbef7, 0x613c, 0x81ff, 0x090c, 0x7be4, 0x080c,
12231 + 0x7e94, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, 0x2091,
12232 + 0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0188, 0x660a, 0x611a,
12233 + 0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f,
12234 + 0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12235 + 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x958d,
12236 + 0x001e, 0x0188, 0x660a, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0008,
12237 + 0x2d00, 0x6012, 0x2009, 0x0021, 0x080c, 0x9613, 0xa085, 0x0001,
12238 + 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091,
12239 + 0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0188, 0x660a, 0x611a,
12240 + 0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x003d,
12241 + 0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12242 + 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0xaf0d,
12243 + 0x001e, 0x0180, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00,
12244 + 0x6012, 0x2009, 0x0000, 0x080c, 0x9613, 0xa085, 0x0001, 0x012e,
12245 + 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000,
12246 + 0x00c6, 0x080c, 0x958d, 0x001e, 0x0188, 0x660a, 0x611a, 0x080c,
12247 + 0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0044, 0x080c,
12248 + 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8,
12249 + 0x0026, 0x00d6, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211,
12250 + 0x6a3e, 0x00de, 0x002e, 0x0005, 0x0006, 0x6000, 0xa086, 0x0000,
12251 + 0x0190, 0x6013, 0x0000, 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004,
12252 + 0x0006, 0xa082, 0x0051, 0x000e, 0x0208, 0x8004, 0x6016, 0x080c,
12253 + 0xc3e2, 0x603f, 0x0000, 0x000e, 0x0005, 0x0066, 0x00c6, 0x00d6,
12254 + 0x2031, 0xc653, 0x2634, 0xd6e4, 0x0128, 0x6618, 0x2660, 0x6e48,
12255 + 0x080c, 0x5469, 0x00de, 0x00ce, 0x006e, 0x0005, 0x0006, 0x0016,
12256 + 0x6004, 0xa08e, 0x0002, 0x0140, 0xa08e, 0x0003, 0x0128, 0xa08e,
12257 + 0x0004, 0x0110, 0xa085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006,
12258 + 0x00d6, 0x6010, 0xa06d, 0x0148, 0x6834, 0xa086, 0x0139, 0x0138,
12259 + 0x6838, 0xd0fc, 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, 0x00de,
12260 + 0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c,
12261 + 0x958d, 0x001e, 0x0190, 0x611a, 0x080c, 0xb05e, 0x601f, 0x0001,
12262 + 0x2d00, 0x6012, 0x080c, 0x2e46, 0x2009, 0x0028, 0x080c, 0x9613,
12263 + 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0xa186,
12264 + 0x0015, 0x1178, 0x2011, 0xc621, 0x2204, 0xa086, 0x0074, 0x1148,
12265 + 0x080c, 0x9fb9, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c, 0x79df,
12266 + 0x0020, 0x080c, 0x9c09, 0x080c, 0x95e3, 0x0005, 0xa186, 0x0016,
12267 + 0x1128, 0x2001, 0x0004, 0x080c, 0x5291, 0x00e8, 0xa186, 0x0015,
12268 + 0x11e8, 0x2011, 0xc621, 0x2204, 0xa086, 0x0014, 0x11b8, 0x00d6,
12269 + 0x6018, 0x2068, 0x080c, 0x53df, 0x00de, 0x080c, 0xa072, 0x1170,
12270 + 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0138, 0x2001,
12271 + 0x0006, 0x080c, 0x5291, 0x080c, 0x9767, 0x0020, 0x080c, 0x9c09,
12272 + 0x080c, 0x95e3, 0x0005, 0x6848, 0xa086, 0x0005, 0x1108, 0x0009,
12273 + 0x0005, 0x6850, 0xc0ad, 0x6852, 0x0005, 0x00e6, 0x0126, 0x2071,
12274 + 0xc600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001, 0x0608, 0x704c,
12275 + 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, 0x705c,
12276 + 0xac02, 0x1208, 0x0cb0, 0x2061, 0xce00, 0x0c98, 0x6003, 0x0008,
12277 + 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, 0x1230, 0x754e,
12278 + 0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, 0xce00, 0x0cc0,
12279 + 0xa006, 0x0cc0, 0x00e6, 0x2071, 0xcc8c, 0x7014, 0xd0e4, 0x0150,
12280 + 0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x7999,
12281 + 0x080c, 0x7e94, 0x00ee, 0x0005, 0x00c6, 0x00f6, 0x2c78, 0x080c,
12282 + 0x56c3, 0x00fe, 0x0120, 0x601c, 0xa084, 0x000f, 0x0013, 0x00ce,
12283 + 0x0005, 0xaa35, 0xaf64, 0xaf67, 0xaf6a, 0xc1cf, 0xc1ea, 0xc1ed,
12284 + 0xaa35, 0xaa35, 0x080c, 0x1519, 0xe000, 0xe000, 0x0005, 0xe000,
12285 + 0xe000, 0x0005, 0x0009, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3,
12286 + 0x0538, 0x080c, 0x958d, 0x1128, 0x2001, 0xc8ff, 0x2004, 0x783e,
12287 + 0x00f8, 0x7818, 0x601a, 0x080c, 0xb05e, 0x781c, 0xa086, 0x0003,
12288 + 0x0128, 0x7808, 0x6036, 0x2f00, 0x603a, 0x0020, 0x7808, 0x603a,
12289 + 0x2f00, 0x6036, 0x602a, 0x601f, 0x0001, 0x6007, 0x0035, 0x6003,
12290 + 0x0001, 0x7950, 0x6152, 0x080c, 0x7999, 0x080c, 0x7e94, 0x2f60,
12291 + 0x00fe, 0x0005, 0x0016, 0x00f6, 0x682c, 0x6032, 0xa08e, 0x0001,
12292 + 0x0138, 0xa086, 0x0005, 0x0140, 0xa006, 0x602a, 0x602e, 0x00a0,
12293 + 0x6820, 0xc0f4, 0xc0d5, 0x6822, 0x6810, 0x2078, 0x787c, 0x6938,
12294 + 0xa102, 0x7880, 0x6934, 0xa103, 0x1e78, 0x6834, 0x602a, 0x6838,
12295 + 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036, 0x6808, 0x603a,
12296 + 0x6918, 0x611a, 0x6950, 0x6152, 0x601f, 0x0001, 0x6007, 0x0039,
12297 + 0x6003, 0x0001, 0x080c, 0x7999, 0x6803, 0x0002, 0x00fe, 0x001e,
12298 + 0x0005, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x1118, 0xa085, 0x0001,
12299 + 0x0070, 0x6020, 0xd0f4, 0x1150, 0xc0f5, 0x6022, 0x6010, 0x2078,
12300 + 0x7828, 0x603a, 0x782c, 0x6036, 0x080c, 0x1953, 0xa006, 0x00fe,
12301 + 0x0005, 0x0006, 0x0016, 0x6004, 0xa08e, 0x0034, 0x01b8, 0xa08e,
12302 + 0x0035, 0x01a0, 0xa08e, 0x0036, 0x0188, 0xa08e, 0x0037, 0x0170,
12303 + 0xa08e, 0x0038, 0x0158, 0xa08e, 0x0039, 0x0140, 0xa08e, 0x003a,
12304 + 0x0128, 0xa08e, 0x003b, 0x0110, 0xa085, 0x0001, 0x001e, 0x000e,
12305 + 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x2001, 0xc8f9,
12306 + 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x783f, 0x2001,
12307 + 0xc8fd, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, 0xc8fb,
12308 + 0x200c, 0x8000, 0x2014, 0x2071, 0xc8d5, 0x711a, 0x721e, 0x2001,
12309 + 0x0064, 0x080c, 0x783f, 0x2001, 0xc8fe, 0x82ff, 0x1110, 0x2011,
12310 + 0x0014, 0x2202, 0x2009, 0xc8ff, 0xa280, 0x000a, 0x200a, 0x080c,
12311 + 0x572c, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006,
12312 + 0x00e6, 0x2001, 0xc8fd, 0x2003, 0x0028, 0x2001, 0xc8fe, 0x2003,
12313 + 0x0014, 0x2071, 0xc8d5, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001,
12314 + 0xc8ff, 0x2003, 0x001e, 0x00ee, 0x000e, 0x0005, 0x00d6, 0x6054,
12315 + 0xa06d, 0x0110, 0x080c, 0x1619, 0x00de, 0x0005, 0x0005, 0x00c6,
12316 + 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0178,
12317 + 0x611a, 0x0ca1, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0033,
12318 + 0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12319 + 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xc600, 0xa186, 0x0015,
12320 + 0x1500, 0x7084, 0xa086, 0x0018, 0x11e0, 0x6010, 0x2068, 0x6a3c,
12321 + 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x80af, 0x01d8, 0x7070, 0x6a50,
12322 + 0xa206, 0x1160, 0x7074, 0x6a54, 0xa206, 0x1140, 0x6218, 0xa290,
12323 + 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2e8b, 0x080c, 0x9767,
12324 + 0x0020, 0x080c, 0x9c09, 0x080c, 0x95e3, 0x00fe, 0x00ee, 0x00de,
12325 + 0x0005, 0x7054, 0x6a54, 0xa206, 0x0d48, 0x0c80, 0x00c6, 0x0126,
12326 + 0x2091, 0x8000, 0x00c6, 0x080c, 0x958d, 0x001e, 0x0180, 0x611a,
12327 + 0x080c, 0xb05e, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0043,
12328 + 0x080c, 0x9613, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006,
12329 + 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xc600, 0xa186, 0x0015,
12330 + 0x11c0, 0x7084, 0xa086, 0x0004, 0x11a0, 0x6010, 0xa0e8, 0x000f,
12331 + 0x2c78, 0x080c, 0x80af, 0x01a8, 0x7070, 0x6a08, 0xa206, 0x1130,
12332 + 0x7074, 0x6a0c, 0xa206, 0x1110, 0x080c, 0x2e46, 0x080c, 0x9767,
12333 + 0x0020, 0x080c, 0x9c09, 0x080c, 0x95e3, 0x00fe, 0x00ee, 0x00de,
12334 + 0x0005, 0x7054, 0x6a0c, 0xa206, 0x0d78, 0x0c80, 0x0016, 0x0026,
12335 + 0x684c, 0xd0ac, 0x0178, 0x6914, 0x6a10, 0x2100, 0xa205, 0x0150,
12336 + 0x6860, 0xa106, 0x1118, 0x685c, 0xa206, 0x0120, 0x6962, 0x6a5e,
12337 + 0xa085, 0x0001, 0x002e, 0x001e, 0x0005, 0x00d6, 0x0036, 0x6310,
12338 + 0x2368, 0x684a, 0x6952, 0xa29e, 0x4000, 0x11a0, 0x00c6, 0x6318,
12339 + 0x2360, 0x2009, 0x0000, 0x6838, 0xd0f4, 0x1140, 0x080c, 0x55de,
12340 + 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x6a66, 0x696a,
12341 + 0x00ce, 0x0080, 0x6a66, 0x3918, 0xa398, 0x0006, 0x231c, 0x686b,
12342 + 0x0004, 0x6b72, 0x00c6, 0x6318, 0x2360, 0x6004, 0xa084, 0x00ff,
12343 + 0x686e, 0x00ce, 0x080c, 0x580a, 0x6013, 0x0000, 0x003e, 0x00de,
12344 + 0x0005, 0x00c6, 0x0026, 0x0016, 0xa186, 0x0035, 0x0110, 0x6a34,
12345 + 0x0008, 0x6a28, 0x080c, 0xac81, 0x01f0, 0x2260, 0x611c, 0xa186,
12346 + 0x0003, 0x0118, 0xa186, 0x0006, 0x1190, 0x6834, 0xa206, 0x0140,
12347 + 0x6838, 0xa206, 0x1160, 0x6108, 0x6834, 0xa106, 0x1140, 0x0020,
12348 + 0x6008, 0x6938, 0xa106, 0x1118, 0x6018, 0x6918, 0xa106, 0x001e,
12349 + 0x002e, 0x00ce, 0x0005, 0xa085, 0x0001, 0x0cc8, 0x6944, 0xd1cc,
12350 + 0x0198, 0xa18c, 0x00ff, 0xa18e, 0x0002, 0x1170, 0xad88, 0x001e,
12351 + 0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, 0x1128, 0x6810,
12352 + 0x6914, 0xa115, 0x190c, 0xa4ba, 0x0005, 0x080c, 0x95e3, 0x0804,
12353 + 0x7e94, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013,
12354 + 0x006e, 0x0005, 0xb1a2, 0xb6b9, 0xb7e1, 0xb1a2, 0xb1a2, 0xb1a2,
12355 + 0xb1a2, 0xb1a2, 0xb1da, 0xb865, 0xb1a2, 0xb1a2, 0xb1a2, 0xb1a2,
12356 + 0xb1a2, 0xb1a2, 0x080c, 0x1519, 0x0066, 0x6000, 0xa0b2, 0x0010,
12357 + 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005, 0xb1bd, 0xbcec, 0xb1bd,
12358 + 0xb1bd, 0xb1bd, 0xb1bd, 0xb1bd, 0xb1bd, 0xbcae, 0xbd34, 0xb1bd,
12359 + 0xc314, 0xc344, 0xc314, 0xc344, 0xb1bd, 0x080c, 0x1519, 0x0066,
12360 + 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1519, 0x0013, 0x006e, 0x0005,
12361 + 0xb1d8, 0xb9b5, 0xba82, 0xbaaf, 0xbb33, 0xb1d8, 0xbc20, 0xbbcb,
12362 + 0xb871, 0xbc84, 0xbc99, 0xb1d8, 0xb1d8, 0xb1d8, 0xb1d8, 0xb1d8,
12363 + 0x080c, 0x1519, 0xa1b2, 0x0080, 0x1a0c, 0x1519, 0x2100, 0xa1b2,
12364 + 0x0040, 0x1a04, 0xb5f1, 0x0002, 0xb224, 0xb3ef, 0xb224, 0xb224,
12365 + 0xb224, 0xb3f6, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224,
12366 + 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224,
12367 + 0xb224, 0xb224, 0xb224, 0xb226, 0xb284, 0xb293, 0xb2e1, 0xb2ff,
12368 + 0xb37d, 0xb3dc, 0xb224, 0xb224, 0xb3f9, 0xb224, 0xb224, 0xb40c,
12369 + 0xb417, 0xb224, 0xb224, 0xb224, 0xb224, 0xb224, 0xb4a2, 0xb224,
12370 + 0xb224, 0xb4b5, 0xb224, 0xb224, 0xb46d, 0xb224, 0xb224, 0xb224,
12371 + 0xb4cd, 0xb224, 0xb224, 0xb224, 0xb547, 0xb224, 0xb224, 0xb224,
12372 + 0xb224, 0xb224, 0xb224, 0xb5b8, 0x080c, 0x1519, 0x080c, 0x570b,
12373 + 0x1150, 0x2001, 0xc635, 0x2004, 0xd0cc, 0x1128, 0xa084, 0x0009,
12374 + 0xa086, 0x0008, 0x1140, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013,
12375 + 0x0000, 0x0804, 0xb3ea, 0x080c, 0x568d, 0x00e6, 0x00c6, 0x0036,
12376 + 0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029,
12377 + 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e, 0x2c08,
12378 + 0x080c, 0xbef7, 0x007e, 0x001e, 0x2e60, 0x080c, 0x553e, 0x001e,
12379 + 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6618, 0x00c6, 0x2660, 0x080c,
12380 + 0x534c, 0x00ce, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082,
12381 + 0x0006, 0x0278, 0x080c, 0xbe3b, 0x1904, 0xb2db, 0x080c, 0xbddb,
12382 + 0x1120, 0x6007, 0x0008, 0x0804, 0xb3ea, 0x6007, 0x0009, 0x0804,
12383 + 0xb3ea, 0x080c, 0xc023, 0x0128, 0x080c, 0xbe3b, 0x0d78, 0x0804,
12384 + 0xb2db, 0x6013, 0x1900, 0x0c88, 0x080c, 0x2f69, 0x1904, 0xb5ee,
12385 + 0x6106, 0x080c, 0xbd95, 0x6007, 0x0006, 0x0804, 0xb3ea, 0x6007,
12386 + 0x0007, 0x0804, 0xb3ea, 0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c,
12387 + 0x2f69, 0x1904, 0xb5ee, 0x00d6, 0x6618, 0x2668, 0x6e04, 0xa684,
12388 + 0x00ff, 0xa082, 0x0006, 0x1220, 0x2001, 0x0001, 0x080c, 0x527f,
12389 + 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0188, 0xa686, 0x0004,
12390 + 0x0170, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0140, 0xa686,
12391 + 0x0004, 0x0128, 0xa686, 0x0005, 0x0110, 0x00de, 0x00e0, 0x080c,
12392 + 0xbe99, 0x11a0, 0xa686, 0x0006, 0x1150, 0x0026, 0x6218, 0xa290,
12393 + 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2e8b, 0x002e, 0x080c,
12394 + 0x53df, 0x6007, 0x000a, 0x00de, 0x0804, 0xb3ea, 0x6007, 0x000b,
12395 + 0x00de, 0x0804, 0xb3ea, 0x080c, 0x2e46, 0x6007, 0x0001, 0x0804,
12396 + 0xb3ea, 0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c, 0x2f69, 0x1904,
12397 + 0xb5ee, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa686, 0x0707,
12398 + 0x0d50, 0x0026, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000,
12399 + 0x080c, 0x2e8b, 0x002e, 0x6007, 0x000c, 0x0804, 0xb3ea, 0x080c,
12400 + 0x570b, 0x1140, 0x2001, 0xc635, 0x2004, 0xa084, 0x0009, 0xa086,
12401 + 0x0008, 0x1110, 0x0804, 0xb233, 0x080c, 0x568d, 0x6618, 0xa6b0,
12402 + 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x06e8, 0x1138,
12403 + 0x0026, 0x2001, 0x0006, 0x080c, 0x52be, 0x002e, 0x0050, 0xa6b4,
12404 + 0xff00, 0x8637, 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904,
12405 + 0xb2db, 0x080c, 0xbea6, 0x1120, 0x6007, 0x000e, 0x0804, 0xb3ea,
12406 + 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427,
12407 + 0x0046, 0x080c, 0x2e46, 0x004e, 0x0016, 0xa006, 0x2009, 0xc653,
12408 + 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xc190, 0x6018,
12409 + 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e,
12410 + 0x6007, 0x0001, 0x0804, 0xb3ea, 0x2001, 0x0001, 0x080c, 0x527f,
12411 + 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xc605,
12412 + 0x2011, 0xcc90, 0x080c, 0xa103, 0x003e, 0x002e, 0x001e, 0x015e,
12413 + 0xa005, 0x0168, 0xa6b4, 0xff00, 0x8637, 0xa682, 0x0004, 0x0a04,
12414 + 0xb2db, 0xa682, 0x0007, 0x0a04, 0xb329, 0x0804, 0xb2db, 0x6013,
12415 + 0x1900, 0x6007, 0x0009, 0x0804, 0xb3ea, 0x080c, 0x570b, 0x1140,
12416 + 0x2001, 0xc635, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, 0x1110,
12417 + 0x0804, 0xb233, 0x080c, 0x568d, 0x6618, 0xa6b0, 0x0001, 0x2634,
12418 + 0xa684, 0x00ff, 0xa082, 0x0006, 0x06b8, 0xa6b4, 0xff00, 0x8637,
12419 + 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xb2db, 0x080c,
12420 + 0xbece, 0x1138, 0x080c, 0xbddb, 0x1120, 0x6007, 0x0010, 0x0804,
12421 + 0xb3ea, 0x0046, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff,
12422 + 0x8427, 0x0046, 0x080c, 0x2e46, 0x004e, 0x0016, 0xa006, 0x2009,
12423 + 0xc653, 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xc190,
12424 + 0x6018, 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e,
12425 + 0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, 0xc023, 0x0140, 0xa6b4,
12426 + 0xff00, 0x8637, 0xa686, 0x0006, 0x0950, 0x0804, 0xb2db, 0x6013,
12427 + 0x1900, 0x6007, 0x0009, 0x0070, 0x080c, 0x2f69, 0x1904, 0xb5ee,
12428 + 0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c, 0xb652, 0x1904, 0xb2db,
12429 + 0x6007, 0x0012, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x6007,
12430 + 0x0001, 0x6003, 0x0001, 0x080c, 0x79df, 0x0cc0, 0x6007, 0x0005,
12431 + 0x0cc0, 0x080c, 0xc378, 0x1904, 0xb5ee, 0x080c, 0x2f69, 0x1904,
12432 + 0xb5ee, 0x080c, 0xb652, 0x1904, 0xb2db, 0x6007, 0x0020, 0x6003,
12433 + 0x0001, 0x080c, 0x79df, 0x0005, 0x080c, 0x2f69, 0x1904, 0xb5ee,
12434 + 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x080c,
12435 + 0xc378, 0x1904, 0xb5ee, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x080c,
12436 + 0xb652, 0x1904, 0xb2db, 0x0016, 0x0026, 0x2011, 0xcc91, 0x2214,
12437 + 0xa286, 0xffff, 0x0190, 0x2c08, 0x080c, 0xac81, 0x01e0, 0x2260,
12438 + 0x2011, 0xcc90, 0x2214, 0x6008, 0xa206, 0x11a8, 0x6018, 0xa190,
12439 + 0x0006, 0x2214, 0xa206, 0x01e8, 0x0070, 0x2011, 0xcc90, 0x2214,
12440 + 0x2c08, 0xa006, 0x080c, 0xc162, 0x11a0, 0x2011, 0xcc91, 0x2214,
12441 + 0xa286, 0xffff, 0x01c0, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700,
12442 + 0x2011, 0xcc89, 0x2214, 0xa296, 0xffff, 0x1180, 0x6007, 0x0025,
12443 + 0x0068, 0x601c, 0xa086, 0x0007, 0x1d70, 0x6004, 0xa086, 0x0024,
12444 + 0x1110, 0x080c, 0x95e3, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001,
12445 + 0x080c, 0x79df, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c,
12446 + 0x527f, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019,
12447 + 0xc605, 0x2011, 0xcc96, 0x080c, 0xa103, 0x003e, 0x002e, 0x001e,
12448 + 0x015e, 0x0120, 0x6007, 0x0031, 0x0804, 0xb3ea, 0x080c, 0x9df5,
12449 + 0x080c, 0x5f22, 0x11b0, 0x0006, 0x0026, 0x0036, 0x080c, 0x5f3e,
12450 + 0x1158, 0x2001, 0xc8e6, 0x2003, 0x0001, 0x2001, 0xc600, 0x2003,
12451 + 0x0001, 0x080c, 0x5e5a, 0x0010, 0x080c, 0x5ef9, 0x003e, 0x002e,
12452 + 0x000e, 0x0005, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x080c, 0xb652,
12453 + 0x1904, 0xb2db, 0x6106, 0x080c, 0xb66e, 0x6007, 0x002b, 0x0804,
12454 + 0xb3ea, 0x6007, 0x002c, 0x0804, 0xb3ea, 0x080c, 0xc378, 0x1904,
12455 + 0xb5ee, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x080c, 0xb652, 0x1904,
12456 + 0xb2db, 0x6106, 0x080c, 0xb672, 0x1120, 0x6007, 0x002e, 0x0804,
12457 + 0xb3ea, 0x6007, 0x002f, 0x0804, 0xb3ea, 0x080c, 0x2f69, 0x1904,
12458 + 0xb5ee, 0x00e6, 0x00d6, 0x00c6, 0x6018, 0xa080, 0x0001, 0x200c,
12459 + 0xa184, 0x00ff, 0xa086, 0x0006, 0x0158, 0xa184, 0xff00, 0x8007,
12460 + 0xa086, 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee, 0x0804, 0xb3ef,
12461 + 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0904, 0xb544, 0x2071, 0xcc8c,
12462 + 0x7010, 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, 0xc653,
12463 + 0x2004, 0xd0a4, 0x0140, 0x6018, 0x2068, 0x6810, 0xa106, 0x1118,
12464 + 0x6814, 0xa206, 0x01f8, 0x2001, 0xc653, 0x2004, 0xd0ac, 0x1590,
12465 + 0x2069, 0xc600, 0x6874, 0xa206, 0x1568, 0x6870, 0xa106, 0x1550,
12466 + 0x7210, 0x080c, 0xac81, 0x0558, 0x080c, 0xc1fc, 0x0540, 0x622a,
12467 + 0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x7999, 0x00ce, 0x00de,
12468 + 0x00ee, 0x0005, 0x7214, 0xa286, 0xffff, 0x0150, 0x080c, 0xac81,
12469 + 0x01b0, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x1180, 0x0c08,
12470 + 0x7210, 0x2c08, 0xa085, 0x0001, 0x080c, 0xc162, 0x2c10, 0x2160,
12471 + 0x0130, 0x08b8, 0x6007, 0x0037, 0x6013, 0x1500, 0x08d8, 0x6007,
12472 + 0x0037, 0x6013, 0x1700, 0x08b0, 0x6007, 0x0012, 0x0898, 0x080c,
12473 + 0x2f69, 0x1904, 0xb5ee, 0x6018, 0xa080, 0x0001, 0x2004, 0xa084,
12474 + 0xff00, 0x8007, 0xa086, 0x0006, 0x1904, 0xb3ef, 0x00e6, 0x00d6,
12475 + 0x00c6, 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0904, 0xb5b0, 0x2069,
12476 + 0xc600, 0x2071, 0xcc8c, 0x7008, 0x6036, 0x720c, 0x623a, 0xa286,
12477 + 0xffff, 0x1150, 0x7208, 0x00c6, 0x2c08, 0xa085, 0x0001, 0x080c,
12478 + 0xc162, 0x2c10, 0x00ce, 0x0588, 0x080c, 0xac81, 0x0570, 0x00c6,
12479 + 0x0026, 0x2260, 0x080c, 0xa954, 0x002e, 0x00ce, 0x7118, 0xa18c,
12480 + 0xff00, 0x810f, 0xa186, 0x0001, 0x0158, 0xa186, 0x0005, 0x0118,
12481 + 0xa186, 0x0007, 0x1178, 0xa280, 0x0004, 0x2004, 0xa005, 0x0150,
12482 + 0x0056, 0x7510, 0x7614, 0x080c, 0xc213, 0x005e, 0x00ce, 0x00de,
12483 + 0x00ee, 0x0005, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00,
12484 + 0x6003, 0x0001, 0x080c, 0x7999, 0x0c88, 0x6007, 0x003b, 0x602b,
12485 + 0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x080c, 0x7999, 0x0c30,
12486 + 0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0804, 0xb51a,
12487 + 0x00e6, 0x0026, 0x080c, 0x570b, 0x0558, 0x080c, 0x568d, 0x080c,
12488 + 0xc3f3, 0x1520, 0x2071, 0xc600, 0x70d4, 0xc085, 0x70d6, 0x00f6,
12489 + 0x2079, 0x0100, 0x72a0, 0xa284, 0x00ff, 0x7072, 0x78e6, 0xa284,
12490 + 0xff00, 0x7274, 0xa205, 0x7076, 0x78ea, 0x00fe, 0x70df, 0x0000,
12491 + 0x2001, 0xc653, 0x2004, 0xd0a4, 0x0120, 0x2011, 0xc940, 0x2013,
12492 + 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2c62, 0x0010, 0x080c, 0xc41f,
12493 + 0x002e, 0x00ee, 0x080c, 0x95e3, 0x0804, 0xb3ee, 0x080c, 0x95e3,
12494 + 0x0005, 0x2600, 0x0002, 0xb5fc, 0xb630, 0xb641, 0xb5fc, 0xb5fc,
12495 + 0xb5fe, 0xb617, 0xb5fc, 0xb5fc, 0x080c, 0x1519, 0x080c, 0xc378,
12496 + 0x1d68, 0x080c, 0x2f69, 0x1d50, 0x080c, 0xb652, 0x1138, 0x6007,
12497 + 0x0045, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x080c, 0x2e46,
12498 + 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x79df, 0x0005, 0x080c,
12499 + 0x2f69, 0x19a0, 0x080c, 0x768f, 0x1160, 0x2e00, 0xa080, 0x0010,
12500 + 0x2004, 0x8007, 0xd084, 0x0110, 0x080c, 0xc428, 0x080c, 0x95e3,
12501 + 0x0005, 0x2009, 0x0046, 0x080c, 0xc44e, 0x080c, 0x95e3, 0x0005,
12502 + 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x2009, 0x0041, 0x080c, 0xc44e,
12503 + 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x79df, 0x080c, 0x7e94,
12504 + 0x0005, 0x080c, 0x2f69, 0x1904, 0xb5ee, 0x2009, 0x0042, 0x080c,
12505 + 0xc44e, 0x6007, 0x0047, 0x6003, 0x0001, 0x080c, 0x79df, 0x080c,
12506 + 0x7e94, 0x0005, 0x00d6, 0x0066, 0x6618, 0x2668, 0x6e04, 0xa6b4,
12507 + 0xff00, 0x8637, 0xa686, 0x0006, 0x0170, 0xa686, 0x0004, 0x0158,
12508 + 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0128, 0xa686, 0x0004,
12509 + 0x0110, 0xa085, 0x0001, 0x006e, 0x00de, 0x0005, 0x00d6, 0x0449,
12510 + 0x00de, 0x0005, 0x00d6, 0x0491, 0x11f0, 0x680c, 0xa08c, 0xff00,
12511 + 0x6820, 0xa084, 0x00ff, 0xa115, 0x6212, 0x6824, 0x602a, 0xd1e4,
12512 + 0x0118, 0x2009, 0x0001, 0x0060, 0xd1ec, 0x0168, 0x6920, 0xa18c,
12513 + 0x00ff, 0x6824, 0x080c, 0x29c7, 0x1130, 0x2110, 0x2009, 0x0000,
12514 + 0x080c, 0x2e8b, 0x0018, 0xa085, 0x0001, 0x0008, 0xa006, 0x00de,
12515 + 0x0005, 0x2069, 0xcc8d, 0x6800, 0xa082, 0x0010, 0x1228, 0x6013,
12516 + 0x0000, 0xa085, 0x0001, 0x0008, 0xa006, 0x0005, 0x6013, 0x0000,
12517 + 0x2069, 0xcc8c, 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, 0x1140,
12518 + 0x6800, 0xa084, 0x00ff, 0xa08e, 0x0014, 0x0110, 0xa08e, 0x0010,
12519 + 0x0005, 0x6004, 0xa0b2, 0x0080, 0x1a0c, 0x1519, 0xa1b6, 0x0013,
12520 + 0x1130, 0x2008, 0xa1b2, 0x0040, 0x1a04, 0xb7bb, 0x0092, 0xa1b6,
12521 + 0x0027, 0x0120, 0xa1b6, 0x0014, 0x190c, 0x1519, 0x2001, 0x0007,
12522 + 0x080c, 0x52be, 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94,
12523 + 0x0005, 0xb719, 0xb71b, 0xb719, 0xb719, 0xb719, 0xb71b, 0xb72d,
12524 + 0xb7b4, 0xb77d, 0xb7b4, 0xb790, 0xb7b4, 0xb72d, 0xb7b4, 0xb7ac,
12525 + 0xb7b4, 0xb7ac, 0xb7b4, 0xb7b4, 0xb719, 0xb719, 0xb719, 0xb719,
12526 + 0xb719, 0xb719, 0xb719, 0xb719, 0xb719, 0xb719, 0xb719, 0xb71b,
12527 + 0xb719, 0xb7b4, 0xb719, 0xb719, 0xb7b4, 0xb719, 0xb7b1, 0xb7b4,
12528 + 0xb719, 0xb719, 0xb719, 0xb719, 0xb7b4, 0xb7b4, 0xb719, 0xb7b4,
12529 + 0xb7b4, 0xb719, 0xb727, 0xb719, 0xb719, 0xb719, 0xb719, 0xb7b0,
12530 + 0xb7b4, 0xb719, 0xb719, 0xb7b4, 0xb7b4, 0xb719, 0xb719, 0xb719,
12531 + 0xb719, 0x080c, 0x1519, 0x080c, 0x7db1, 0x2001, 0xc8fd, 0x2004,
12532 + 0x6016, 0x6003, 0x0002, 0x080c, 0x7e94, 0x0804, 0xb7ba, 0x2001,
12533 + 0x0000, 0x080c, 0x527f, 0x0804, 0xb7b4, 0x00f6, 0x2079, 0xc652,
12534 + 0x7804, 0x00fe, 0xd0ac, 0x1904, 0xb7b4, 0x2001, 0x0000, 0x080c,
12535 + 0x527f, 0x6018, 0xa080, 0x0004, 0x2004, 0xa086, 0x00ff, 0x1140,
12536 + 0x00f6, 0x2079, 0xc600, 0x7898, 0x8000, 0x789a, 0x00fe, 0x00e0,
12537 + 0x00c6, 0x6018, 0x2060, 0x6000, 0xd0f4, 0x1140, 0x6010, 0xa005,
12538 + 0x0128, 0x00ce, 0x080c, 0x40ef, 0x0804, 0xb7b4, 0x00ce, 0x2001,
12539 + 0xc600, 0x2004, 0xa086, 0x0002, 0x1138, 0x00f6, 0x2079, 0xc600,
12540 + 0x7898, 0x8000, 0x789a, 0x00fe, 0x2001, 0x0002, 0x080c, 0x5291,
12541 + 0x080c, 0x7db1, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
12542 + 0x080c, 0x79df, 0x080c, 0x7e94, 0x00c6, 0x6118, 0x2160, 0x2009,
12543 + 0x0001, 0x080c, 0x6fb9, 0x00ce, 0x04e8, 0x6618, 0x00d6, 0x2668,
12544 + 0x6e04, 0x00de, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0560,
12545 + 0xa686, 0x0004, 0x0548, 0x080c, 0x7669, 0x2001, 0x0004, 0x0410,
12546 + 0x2001, 0xc600, 0x2004, 0xa086, 0x0003, 0x1110, 0x080c, 0x40ef,
12547 + 0x2001, 0x0006, 0x04a1, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de,
12548 + 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0170, 0x2001, 0x0006,
12549 + 0x0048, 0x2001, 0x0004, 0x0030, 0x2001, 0x0006, 0x0401, 0x0020,
12550 + 0x0018, 0x0010, 0x080c, 0x52be, 0x080c, 0x7db1, 0x080c, 0x95e3,
12551 + 0x080c, 0x7e94, 0x0005, 0x2600, 0x0002, 0xb7c6, 0xb7c6, 0xb7c6,
12552 + 0xb7c6, 0xb7c6, 0xb7c8, 0xb7c6, 0xb7c8, 0xb7c6, 0x080c, 0x1519,
12553 + 0x080c, 0x7db1, 0x080c, 0x95e3, 0x080c, 0x7e94, 0x0005, 0x0016,
12554 + 0x00d6, 0x6118, 0x2168, 0x6900, 0xd184, 0x0140, 0x080c, 0x5291,
12555 + 0x2001, 0x0000, 0x080c, 0x527f, 0x080c, 0x2e6c, 0x00de, 0x001e,
12556 + 0x0005, 0x00d6, 0x6618, 0x2668, 0x6804, 0xa084, 0xff00, 0x8007,
12557 + 0x00de, 0xa0b2, 0x000c, 0x1a0c, 0x1519, 0xa1b6, 0x0015, 0x1110,
12558 + 0x003b, 0x0028, 0xa1b6, 0x0016, 0x190c, 0x1519, 0x006b, 0x0005,
12559 + 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0xb851, 0xb810,
12560 + 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda, 0x9cda,
12561 + 0x9cda, 0x9cda, 0xb851, 0xb858, 0x9cda, 0x9cda, 0x9cda, 0x9cda,
12562 + 0x00f6, 0x2079, 0xc652, 0x7804, 0xd0ac, 0x11e0, 0x6018, 0xa07d,
12563 + 0x01c8, 0x7800, 0xd0f4, 0x1118, 0x7810, 0xa005, 0x1198, 0x2001,
12564 + 0x0000, 0x080c, 0x527f, 0x2001, 0x0002, 0x080c, 0x5291, 0x601f,
12565 + 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x79df, 0x080c,
12566 + 0x7e94, 0x00e8, 0x2011, 0xcc83, 0x2204, 0x8211, 0x220c, 0x080c,
12567 + 0x29c7, 0x11a8, 0x00c6, 0x080c, 0x533d, 0x0120, 0x00ce, 0x080c,
12568 + 0x95e3, 0x0068, 0x6010, 0x0006, 0x6014, 0x0006, 0x080c, 0x4f47,
12569 + 0x000e, 0x6016, 0x000e, 0x6012, 0x00ce, 0x080c, 0x95e3, 0x00fe,
12570 + 0x0005, 0x6604, 0xa6b6, 0x001e, 0x1110, 0x080c, 0x95e3, 0x0005,
12571 + 0x080c, 0x9fb6, 0x1138, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
12572 + 0x79df, 0x0010, 0x080c, 0x95e3, 0x0005, 0x6004, 0xa08a, 0x0080,
12573 + 0x1a0c, 0x1519, 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94,
12574 + 0x0005, 0xa182, 0x0040, 0x0002, 0xb887, 0xb887, 0xb887, 0xb887,
12575 + 0xb889, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887,
12576 + 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0xb887, 0x080c,
12577 + 0x1519, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x0046, 0x0026, 0x6218,
12578 + 0xa280, 0x002f, 0x2004, 0xa005, 0x0120, 0x2021, 0x0000, 0x080c,
12579 + 0xc3c4, 0x6106, 0x2071, 0xcc80, 0x7444, 0xa4a4, 0xff00, 0x0904,
12580 + 0xb8ed, 0xa486, 0x2000, 0x1130, 0x2009, 0x0001, 0x2011, 0x0200,
12581 + 0x080c, 0x712e, 0x080c, 0x1602, 0x090c, 0x1519, 0x6003, 0x0007,
12582 + 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x6c5a,
12583 + 0x2c00, 0x685e, 0x6008, 0x68b2, 0x6018, 0x2078, 0x78a0, 0x8007,
12584 + 0x7130, 0x694a, 0x0016, 0xa084, 0xff00, 0x6846, 0x684f, 0x0000,
12585 + 0x6853, 0x0000, 0x6857, 0x0036, 0x080c, 0x580a, 0x001e, 0xa486,
12586 + 0x2000, 0x1130, 0x2019, 0x0017, 0x080c, 0xc10d, 0x0804, 0xb94a,
12587 + 0xa486, 0x0400, 0x1130, 0x2019, 0x0002, 0x080c, 0xc0bf, 0x0804,
12588 + 0xb94a, 0xa486, 0x0200, 0x1110, 0x080c, 0xc0a4, 0xa486, 0x1000,
12589 + 0x1110, 0x080c, 0xc0f2, 0x0804, 0xb94a, 0x2069, 0xc9bc, 0x6a00,
12590 + 0xd284, 0x0904, 0xb9b1, 0xa284, 0x0300, 0x1904, 0xb9aa, 0x6804,
12591 + 0xa005, 0x0904, 0xb992, 0x2d78, 0x6003, 0x0007, 0x080c, 0x15e5,
12592 + 0x0904, 0xb951, 0x7800, 0xd08c, 0x1118, 0x7804, 0x8001, 0x7806,
12593 + 0x6013, 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000,
12594 + 0x6008, 0x68b2, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007,
12595 + 0x7130, 0x6986, 0x6846, 0x7928, 0x698a, 0x792c, 0x698e, 0x7930,
12596 + 0x6992, 0x7934, 0x6996, 0x6853, 0x003d, 0x7244, 0xa294, 0x0003,
12597 + 0xa286, 0x0002, 0x1118, 0x684f, 0x0040, 0x0040, 0xa286, 0x0001,
12598 + 0x1118, 0x684f, 0x0080, 0x0010, 0x684f, 0x0000, 0x20a9, 0x000a,
12599 + 0x2001, 0xcc90, 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, 0x8000,
12600 + 0x8210, 0x1f04, 0xb93c, 0x200c, 0x6982, 0x8000, 0x200c, 0x697e,
12601 + 0x080c, 0x580a, 0x002e, 0x004e, 0x015e, 0x00fe, 0x00ee, 0x00de,
12602 + 0x0005, 0x2001, 0xc60e, 0x2004, 0xd084, 0x0120, 0x080c, 0x1602,
12603 + 0x1904, 0xb902, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041,
12604 + 0x080c, 0x7999, 0x080c, 0x7e94, 0x0c28, 0x2069, 0xcc92, 0x2d04,
12605 + 0xa084, 0xff00, 0xa086, 0x1200, 0x11a8, 0x2069, 0xcc80, 0x686c,
12606 + 0xa084, 0x00ff, 0x0016, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112,
12607 + 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, 0x080c, 0x7999, 0x080c,
12608 + 0x7e94, 0x0840, 0x6868, 0x602a, 0x686c, 0x602e, 0x6013, 0x0200,
12609 + 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94,
12610 + 0x0804, 0xb94a, 0x2001, 0xc60d, 0x2004, 0xd0ec, 0x0120, 0x2011,
12611 + 0x8049, 0x080c, 0x407d, 0x6013, 0x0300, 0x0010, 0x6013, 0x0100,
12612 + 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x7999, 0x080c, 0x7e94,
12613 + 0x0804, 0xb94a, 0x6013, 0x0500, 0x0c98, 0x6013, 0x0600, 0x0804,
12614 + 0xb965, 0x6013, 0x0200, 0x0804, 0xb965, 0xa186, 0x0013, 0x1170,
12615 + 0x6004, 0xa08a, 0x0040, 0x0a0c, 0x1519, 0xa08a, 0x0053, 0x1a0c,
12616 + 0x1519, 0xa082, 0x0040, 0x2008, 0x0804, 0xba3f, 0xa186, 0x0051,
12617 + 0x0138, 0xa186, 0x0047, 0x11d8, 0x6004, 0xa086, 0x0041, 0x0518,
12618 + 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, 0x0126, 0x2091, 0x2800,
12619 + 0x0006, 0x0016, 0x0026, 0x080c, 0x7873, 0x002e, 0x001e, 0x000e,
12620 + 0x012e, 0x6000, 0xa086, 0x0002, 0x1170, 0x0804, 0xba82, 0xa186,
12621 + 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x6004, 0xa082,
12622 + 0x0040, 0x2008, 0x001a, 0x080c, 0x962a, 0x0005, 0xba09, 0xba0b,
12623 + 0xba0b, 0xba2f, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09,
12624 + 0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09, 0xba09,
12625 + 0xba09, 0x080c, 0x1519, 0x080c, 0x7db1, 0x080c, 0x7e94, 0x0036,
12626 + 0x00d6, 0x6010, 0xa06d, 0x01c0, 0xad84, 0xf000, 0x01a8, 0x6003,
12627 + 0x0002, 0x6018, 0x2004, 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c,
12628 + 0xc141, 0x6013, 0x0000, 0x6014, 0xa005, 0x1120, 0x2001, 0xc8fe,
12629 + 0x2004, 0x6016, 0x6003, 0x0007, 0x00de, 0x003e, 0x0005, 0x00d6,
12630 + 0x080c, 0x7db1, 0x080c, 0x7e94, 0x080c, 0xac91, 0x0120, 0x6010,
12631 + 0x2068, 0x080c, 0x1619, 0x080c, 0xae54, 0x00de, 0x0005, 0x0002,
12632 + 0xba53, 0xba70, 0xba5c, 0xba7c, 0xba53, 0xba53, 0xba53, 0xba53,
12633 + 0xba53, 0xba53, 0xba53, 0xba53, 0xba53, 0xba53, 0xba53, 0xba53,
12634 + 0xba53, 0xba53, 0xba53, 0x080c, 0x1519, 0x6010, 0xa088, 0x0013,
12635 + 0x2104, 0xa085, 0x0400, 0x200a, 0x080c, 0x7db1, 0x6010, 0xa080,
12636 + 0x0013, 0x2004, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043,
12637 + 0x080c, 0x9613, 0x0010, 0x6003, 0x0002, 0x080c, 0x7e94, 0x0005,
12638 + 0x080c, 0x7db1, 0x080c, 0xc37f, 0x1120, 0x080c, 0x7103, 0x080c,
12639 + 0x95e3, 0x080c, 0x7e94, 0x0005, 0x080c, 0x7db1, 0x2009, 0x0041,
12640 + 0x0804, 0xbbcb, 0xa182, 0x0040, 0x0002, 0xba98, 0xba9a, 0xba98,
12641 + 0xba98, 0xba98, 0xba98, 0xba98, 0xba9b, 0xba98, 0xba98, 0xba98,
12642 + 0xba98, 0xba98, 0xba98, 0xba98, 0xba98, 0xba98, 0xbaa6, 0xba98,
12643 + 0x080c, 0x1519, 0x0005, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005,
12644 + 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x0005, 0x00d6, 0x080c,
12645 + 0x7103, 0x00de, 0x080c, 0xc3e2, 0x080c, 0x95e3, 0x0005, 0xa182,
12646 + 0x0040, 0x0002, 0xbac5, 0xbac5, 0xbac5, 0xbac5, 0xbac5, 0xbac5,
12647 + 0xbac5, 0xbac7, 0xbac5, 0xbaca, 0xbb03, 0xbac5, 0xbac5, 0xbac5,
12648 + 0xbac5, 0xbb03, 0xbac5, 0xbac5, 0xbac5, 0x080c, 0x1519, 0x080c,
12649 + 0x962a, 0x0005, 0x2001, 0xc672, 0x2004, 0xd0e4, 0x0158, 0x2001,
12650 + 0x0100, 0x2004, 0xa082, 0x0005, 0x0228, 0x2001, 0x011f, 0x2004,
12651 + 0x6036, 0x0010, 0x6037, 0x0000, 0x080c, 0x7e47, 0x080c, 0x7f6e,
12652 + 0x6010, 0x00d6, 0x2068, 0x684c, 0xd0fc, 0x0150, 0xa08c, 0x0003,
12653 + 0xa18e, 0x0002, 0x0168, 0x2009, 0x0041, 0x00de, 0x0804, 0xbbcb,
12654 + 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x7103, 0x00de, 0x0005,
12655 + 0x080c, 0xc37f, 0x0110, 0x00de, 0x0005, 0x080c, 0x7103, 0x080c,
12656 + 0x95e3, 0x00de, 0x0ca0, 0x0036, 0x080c, 0x7e47, 0x080c, 0x7f6e,
12657 + 0x6010, 0x00d6, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0188, 0x684c,
12658 + 0xa084, 0x0003, 0xa086, 0x0002, 0x0140, 0x687c, 0x632c, 0xa31a,
12659 + 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a, 0x6003, 0x0002, 0x0080,
12660 + 0x2019, 0x0004, 0x080c, 0xc141, 0x6014, 0xa005, 0x1128, 0x2001,
12661 + 0xc8fe, 0x2004, 0x8003, 0x6016, 0x6013, 0x0000, 0x6003, 0x0007,
12662 + 0x00de, 0x003e, 0x0005, 0xa186, 0x0013, 0x1150, 0x6004, 0xa086,
12663 + 0x0042, 0x190c, 0x1519, 0x080c, 0x7db1, 0x080c, 0x7e94, 0x0005,
12664 + 0xa186, 0x0027, 0x0118, 0xa186, 0x0014, 0x1180, 0x6004, 0xa086,
12665 + 0x0042, 0x190c, 0x1519, 0x2001, 0x0007, 0x080c, 0x52be, 0x080c,
12666 + 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa182, 0x0040,
12667 + 0x0002, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c,
12668 + 0xbb6e, 0xbb7a, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c,
12669 + 0xbb6c, 0xbb6c, 0xbb6c, 0xbb6c, 0x080c, 0x1519, 0x0036, 0x0046,
12670 + 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1870, 0x004e,
12671 + 0x003e, 0x0005, 0x6010, 0x00d6, 0x2068, 0x6810, 0x6a14, 0x0006,
12672 + 0x0046, 0x0056, 0x6c7c, 0xa422, 0x6d80, 0x2200, 0xa52b, 0x602c,
12673 + 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x005e, 0x004e, 0x000e,
12674 + 0xa20d, 0x1178, 0x684c, 0xd0fc, 0x0120, 0x2009, 0x0041, 0x00de,
12675 + 0x0490, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x7103, 0x00de,
12676 + 0x0005, 0x0006, 0x00f6, 0x2c78, 0x080c, 0x56c3, 0x00fe, 0x000e,
12677 + 0x0120, 0x6003, 0x0002, 0x00de, 0x0005, 0x2009, 0xc60d, 0x210c,
12678 + 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, 0x0021,
12679 + 0x080c, 0x7105, 0x00de, 0x0005, 0xd2fc, 0x0140, 0x8002, 0x8000,
12680 + 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0010, 0x2009, 0x0015,
12681 + 0x6a6a, 0x6866, 0x0005, 0xa182, 0x0040, 0x0208, 0x0062, 0xa186,
12682 + 0x0013, 0x0120, 0xa186, 0x0014, 0x190c, 0x1519, 0x6020, 0xd0dc,
12683 + 0x090c, 0x1519, 0x0005, 0xbbee, 0xbbf5, 0xbc01, 0xbc0d, 0xbbee,
12684 + 0xbbee, 0xbbee, 0xbc1c, 0xbbee, 0xbbf0, 0xbbf0, 0xbbee, 0xbbee,
12685 + 0xbbee, 0xbbee, 0xbbf0, 0xbbee, 0xbbf0, 0xbbee, 0x080c, 0x1519,
12686 + 0x6020, 0xd0dc, 0x090c, 0x1519, 0x0005, 0x6003, 0x0001, 0x6106,
12687 + 0x080c, 0x7999, 0x0126, 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e,
12688 + 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x0126, 0x2091,
12689 + 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x6003, 0x0003, 0x6106,
12690 + 0x2c10, 0x080c, 0x2068, 0x0126, 0x2091, 0x8000, 0x080c, 0x79fc,
12691 + 0x080c, 0x7f6e, 0x012e, 0x0005, 0xa016, 0x080c, 0x1870, 0x0005,
12692 + 0x0126, 0x2091, 0x8000, 0x0036, 0x00d6, 0xa182, 0x0040, 0x0023,
12693 + 0x00de, 0x003e, 0x012e, 0x0005, 0xbc3c, 0xbc3e, 0xbc50, 0xbc6b,
12694 + 0xbc3c, 0xbc3c, 0xbc3c, 0xbc80, 0xbc3c, 0xbc3c, 0xbc3c, 0xbc3c,
12695 + 0xbc3c, 0xbc3c, 0xbc3c, 0xbc3c, 0x080c, 0x1519, 0x6010, 0x2068,
12696 + 0x684c, 0xd0fc, 0x01f8, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x01d0,
12697 + 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x080c, 0x7e94, 0x0498,
12698 + 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0168, 0xa09c, 0x0003, 0xa39e,
12699 + 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x7999, 0x080c,
12700 + 0x7e94, 0x0408, 0x6013, 0x0000, 0x6017, 0x0000, 0x2019, 0x0004,
12701 + 0x080c, 0xc141, 0x00c0, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0d90,
12702 + 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0d68, 0x6003, 0x0003, 0x6106,
12703 + 0x2c10, 0x080c, 0x2068, 0x080c, 0x79fc, 0x080c, 0x7f6e, 0x0018,
12704 + 0xa016, 0x080c, 0x1870, 0x0005, 0x080c, 0x7db1, 0x6110, 0x81ff,
12705 + 0x0158, 0x00d6, 0x2168, 0x080c, 0xc4d7, 0x0036, 0x2019, 0x0029,
12706 + 0x080c, 0xc141, 0x003e, 0x00de, 0x080c, 0xae54, 0x080c, 0x7e94,
12707 + 0x0005, 0x080c, 0x7e47, 0x6110, 0x81ff, 0x0158, 0x00d6, 0x2168,
12708 + 0x080c, 0xc4d7, 0x0036, 0x2019, 0x0029, 0x080c, 0xc141, 0x003e,
12709 + 0x00de, 0x080c, 0xae54, 0x080c, 0x7f6e, 0x0005, 0xa182, 0x0085,
12710 + 0x0002, 0xbcba, 0xbcb8, 0xbcb8, 0xbcc6, 0xbcb8, 0xbcb8, 0xbcb8,
12711 + 0x080c, 0x1519, 0x6003, 0x000b, 0x6106, 0x080c, 0x7999, 0x0126,
12712 + 0x2091, 0x8000, 0x080c, 0x7e94, 0x012e, 0x0005, 0x0026, 0x00e6,
12713 + 0x080c, 0xc378, 0x0118, 0x080c, 0x95e3, 0x00d8, 0x2071, 0xcc80,
12714 + 0x7224, 0x6212, 0x7220, 0x080c, 0xbfef, 0x0118, 0x6007, 0x0086,
12715 + 0x0040, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x1110, 0x6007,
12716 + 0x0086, 0x6003, 0x0001, 0x080c, 0x7999, 0x080c, 0x7e94, 0x080c,
12717 + 0x7f6e, 0x00ee, 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004,
12718 + 0xa08a, 0x0085, 0x0a0c, 0x1519, 0xa08a, 0x008c, 0x1a0c, 0x1519,
12719 + 0xa082, 0x0085, 0x00a2, 0xa186, 0x0027, 0x0130, 0xa186, 0x0014,
12720 + 0x0118, 0x080c, 0x962a, 0x0050, 0x2001, 0x0007, 0x080c, 0x52be,
12721 + 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xbd16,
12722 + 0xbd18, 0xbd18, 0xbd16, 0xbd16, 0xbd16, 0xbd16, 0x080c, 0x1519,
12723 + 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0xa182,
12724 + 0x0085, 0x0a0c, 0x1519, 0xa182, 0x008c, 0x1a0c, 0x1519, 0xa182,
12725 + 0x0085, 0x0002, 0xbd31, 0xbd31, 0xbd31, 0xbd33, 0xbd31, 0xbd31,
12726 + 0xbd31, 0x080c, 0x1519, 0x0005, 0xa186, 0x0013, 0x0148, 0xa186,
12727 + 0x0014, 0x0130, 0xa186, 0x0027, 0x0118, 0x080c, 0x962a, 0x0030,
12728 + 0x080c, 0x7db1, 0x080c, 0xae54, 0x080c, 0x7e94, 0x0005, 0x0036,
12729 + 0x080c, 0xc3e2, 0x603f, 0x0000, 0x2019, 0x000b, 0x0031, 0x601f,
12730 + 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091,
12731 + 0x8000, 0x0086, 0x2c40, 0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9,
12732 + 0x009e, 0x008e, 0x1578, 0x0076, 0x2c38, 0x080c, 0x906f, 0x007e,
12733 + 0x1548, 0x6000, 0xa086, 0x0000, 0x0528, 0x601c, 0xa086, 0x0007,
12734 + 0x0508, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, 0xc3e2,
12735 + 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x080c, 0x1953,
12736 + 0x6010, 0x2068, 0x080c, 0xac91, 0x0110, 0x080c, 0xc141, 0x00de,
12737 + 0x6013, 0x0000, 0x080c, 0xc3e2, 0x601f, 0x0007, 0x2001, 0xc8fd,
12738 + 0x2004, 0x6016, 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, 0x0036,
12739 + 0x0156, 0x2079, 0xcc80, 0x7938, 0x783c, 0x080c, 0x29c7, 0x15b0,
12740 + 0x0016, 0x00c6, 0x080c, 0x533d, 0x1578, 0x001e, 0x002e, 0x0026,
12741 + 0x0016, 0x2019, 0x0029, 0x080c, 0x9132, 0x080c, 0x7b16, 0x0076,
12742 + 0x2039, 0x0000, 0x080c, 0x7a0e, 0x007e, 0x001e, 0x0076, 0x2039,
12743 + 0x0000, 0x080c, 0xbef7, 0x007e, 0x080c, 0x553e, 0x0026, 0x6204,
12744 + 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x0118, 0xa286, 0x0004,
12745 + 0x1118, 0x62a0, 0x080c, 0x2eff, 0x002e, 0x001e, 0x080c, 0x4f47,
12746 + 0x6612, 0x6516, 0xa006, 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e,
12747 + 0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x2009,
12748 + 0xc621, 0x2104, 0xa086, 0x0074, 0x1904, 0xbe30, 0x2069, 0xcc8e,
12749 + 0x690c, 0xa182, 0x0100, 0x06c0, 0x6908, 0xa184, 0x8000, 0x05e8,
12750 + 0x2001, 0xc8e5, 0x2004, 0xa005, 0x1160, 0x6018, 0x2070, 0x7010,
12751 + 0xa084, 0x00ff, 0x0118, 0x7000, 0xd0f4, 0x0118, 0xa184, 0x0800,
12752 + 0x0560, 0x6910, 0xa18a, 0x0001, 0x0610, 0x6914, 0x2069, 0xccae,
12753 + 0x6904, 0x81ff, 0x1198, 0x690c, 0xa182, 0x0100, 0x02a8, 0x6908,
12754 + 0x81ff, 0x1178, 0x6910, 0xa18a, 0x0001, 0x0288, 0x6918, 0xa18a,
12755 + 0x0001, 0x0298, 0x00d0, 0x6013, 0x0100, 0x00a0, 0x6013, 0x0300,
12756 + 0x0088, 0x6013, 0x0500, 0x0070, 0x6013, 0x0700, 0x0058, 0x6013,
12757 + 0x0900, 0x0040, 0x6013, 0x0b00, 0x0028, 0x6013, 0x0f00, 0x0010,
12758 + 0x6013, 0x2d00, 0xa085, 0x0001, 0x0008, 0xa006, 0x001e, 0x00ee,
12759 + 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x0026, 0x0036, 0x0156,
12760 + 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, 0x0190,
12761 + 0xa286, 0x0004, 0x0178, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006,
12762 + 0x0148, 0xa286, 0x0004, 0x0130, 0x00c6, 0x2d60, 0x080c, 0x534c,
12763 + 0x00ce, 0x04c0, 0x2011, 0xcc96, 0xad98, 0x000a, 0x20a9, 0x0004,
12764 + 0x080c, 0xa103, 0x1580, 0x2011, 0xcc9a, 0xad98, 0x0006, 0x20a9,
12765 + 0x0004, 0x080c, 0xa103, 0x1538, 0x0046, 0x0016, 0x6aa0, 0xa294,
12766 + 0x00ff, 0x8227, 0xa006, 0x2009, 0xc653, 0x210c, 0xd1a4, 0x0138,
12767 + 0x2009, 0x0029, 0x080c, 0xc190, 0x6800, 0xc0e5, 0x6802, 0x2019,
12768 + 0x0029, 0x080c, 0x7b16, 0x0076, 0x2039, 0x0000, 0x080c, 0x7a0e,
12769 + 0x2c08, 0x080c, 0xbef7, 0x007e, 0x2001, 0x0007, 0x080c, 0x52be,
12770 + 0x001e, 0x004e, 0xa006, 0x015e, 0x003e, 0x002e, 0x00de, 0x00ce,
12771 + 0x0005, 0x00d6, 0x2069, 0xcc8e, 0x6800, 0xa086, 0x0800, 0x0118,
12772 + 0x6013, 0x0000, 0x0008, 0xa006, 0x00de, 0x0005, 0x00c6, 0x00f6,
12773 + 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, 0xcc8c, 0x7930, 0x7834,
12774 + 0x080c, 0x29c7, 0x11a0, 0x080c, 0x533d, 0x1188, 0x2011, 0xcc90,
12775 + 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa103, 0x1140, 0x2011,
12776 + 0xcc94, 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa103, 0x015e,
12777 + 0x003e, 0x002e, 0x001e, 0x00fe, 0x00ce, 0x0005, 0x00c6, 0x0006,
12778 + 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, 0xcc83, 0x2204, 0x8211,
12779 + 0x220c, 0x080c, 0x29c7, 0x11a0, 0x080c, 0x533d, 0x1188, 0x2011,
12780 + 0xcc96, 0xac98, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa103, 0x1140,
12781 + 0x2011, 0xcc9a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa103,
12782 + 0x015e, 0x003e, 0x002e, 0x001e, 0x000e, 0x00ce, 0x0005, 0x00e6,
12783 + 0x00c6, 0x0086, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0126,
12784 + 0x2091, 0x8000, 0x2740, 0x2029, 0xc930, 0x252c, 0x2021, 0xc936,
12785 + 0x2424, 0x2061, 0xce00, 0x2071, 0xc600, 0x7648, 0x7068, 0x81ff,
12786 + 0x0150, 0x0006, 0xa186, 0xca3c, 0x000e, 0x0128, 0x8001, 0xa602,
12787 + 0x1a04, 0xbf78, 0x0018, 0xa606, 0x0904, 0xbf78, 0x2100, 0xac06,
12788 + 0x0904, 0xbf6f, 0x080c, 0xc1b8, 0x0904, 0xbf6f, 0x671c, 0xa786,
12789 + 0x0001, 0x0904, 0xbfc1, 0xa786, 0x0004, 0x0904, 0xbfc1, 0xa786,
12790 + 0x0007, 0x05e8, 0x2500, 0xac06, 0x05d0, 0x2400, 0xac06, 0x05b8,
12791 + 0x080c, 0xc1c8, 0x15a0, 0x88ff, 0x0118, 0x6050, 0xa906, 0x1578,
12792 + 0x00d6, 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1953,
12793 + 0x001e, 0xa786, 0x0008, 0x1148, 0x080c, 0xae8f, 0x1130, 0x080c,
12794 + 0x9c09, 0x00de, 0x080c, 0xae54, 0x00d0, 0x6010, 0x2068, 0x080c,
12795 + 0xac91, 0x0190, 0xa786, 0x0003, 0x1528, 0x6837, 0x0103, 0x6b4a,
12796 + 0x6847, 0x0000, 0x080c, 0xc4d7, 0x0016, 0x080c, 0xaf03, 0x080c,
12797 + 0x580a, 0x001e, 0x080c, 0xae48, 0x00de, 0x080c, 0xae54, 0xace0,
12798 + 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1210, 0x0804, 0xbf0b,
12799 + 0x012e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, 0x00ce,
12800 + 0x00ee, 0x0005, 0xa786, 0x0006, 0x1150, 0xa386, 0x0005, 0x0128,
12801 + 0x080c, 0xc4d7, 0x080c, 0xc141, 0x08f8, 0x00de, 0x0c00, 0xa786,
12802 + 0x0009, 0x1548, 0x6000, 0xa086, 0x0004, 0x1128, 0x00c6, 0x080c,
12803 + 0x761a, 0x00ce, 0x00e8, 0x6000, 0xa086, 0x0003, 0x11c8, 0x080c,
12804 + 0x7e47, 0x00e6, 0x00d6, 0x6110, 0x2168, 0x080c, 0xac91, 0x0140,
12805 + 0x6018, 0x2070, 0x70b3, 0x0000, 0x70b7, 0x0000, 0x080c, 0x580a,
12806 + 0x00de, 0x00ee, 0x00c6, 0x080c, 0x95e3, 0x00ce, 0x080c, 0x7f6e,
12807 + 0x00de, 0x0804, 0xbf6f, 0xa786, 0x000a, 0x0904, 0xbf5f, 0x0804,
12808 + 0xbf5d, 0x080c, 0xc1c8, 0x1904, 0xbf6f, 0x81ff, 0x0904, 0xbf6f,
12809 + 0xa180, 0x0001, 0x2004, 0xa086, 0x0018, 0x0138, 0xa180, 0x0001,
12810 + 0x2004, 0xa086, 0x002d, 0x1904, 0xbf6f, 0x6000, 0xa086, 0x0002,
12811 + 0x1904, 0xbf6f, 0x080c, 0xae7e, 0x0138, 0x080c, 0xae8f, 0x1904,
12812 + 0xbf6f, 0x080c, 0x9c09, 0x0038, 0x080c, 0x2e6c, 0x080c, 0xae8f,
12813 + 0x1110, 0x080c, 0x9c09, 0x080c, 0xae54, 0x0804, 0xbf6f, 0x00c6,
12814 + 0x00e6, 0x0016, 0x2c08, 0x2170, 0xa006, 0x080c, 0xc162, 0x001e,
12815 + 0x0120, 0x601c, 0xa084, 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005,
12816 + 0xc008, 0xc008, 0xc008, 0xc008, 0xc008, 0xc008, 0xc00a, 0xc008,
12817 + 0xa006, 0x0005, 0x0046, 0x0016, 0x7018, 0xa080, 0x0028, 0x2024,
12818 + 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x080c, 0xc190,
12819 + 0x001e, 0x004e, 0x0036, 0x2019, 0x0002, 0x080c, 0xbd55, 0x003e,
12820 + 0xa085, 0x0001, 0x0005, 0x2001, 0x0001, 0x080c, 0x527f, 0x0156,
12821 + 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xc605, 0x2011,
12822 + 0xcc96, 0x080c, 0xa103, 0x003e, 0x002e, 0x001e, 0x015e, 0xa005,
12823 + 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0026,
12824 + 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, 0xce00, 0x2079, 0x0001,
12825 + 0x8fff, 0x0904, 0xc097, 0x2071, 0xc600, 0x7648, 0x7068, 0x8001,
12826 + 0xa602, 0x1a04, 0xc097, 0x88ff, 0x0128, 0x2800, 0xac06, 0x15b0,
12827 + 0x2079, 0x0000, 0x080c, 0xc1b8, 0x0588, 0x2400, 0xac06, 0x0570,
12828 + 0x671c, 0xa786, 0x0006, 0x1550, 0xa786, 0x0007, 0x0538, 0x88ff,
12829 + 0x1140, 0x6018, 0xa206, 0x1510, 0x85ff, 0x0118, 0x6050, 0xa106,
12830 + 0x11e8, 0x00d6, 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, 0xc3e2,
12831 + 0x601f, 0x0007, 0x2001, 0xc8fd, 0x2004, 0x6016, 0x080c, 0x1953,
12832 + 0x6010, 0x2068, 0x080c, 0xac91, 0x0120, 0x0046, 0x080c, 0xc141,
12833 + 0x004e, 0x00de, 0x080c, 0xae54, 0x88ff, 0x1198, 0xace0, 0x0018,
12834 + 0x2001, 0xc617, 0x2004, 0xac02, 0x1210, 0x0804, 0xc048, 0xa006,
12835 + 0x012e, 0x002e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x00fe,
12836 + 0x0005, 0xa8c5, 0x0001, 0x0ca0, 0x0076, 0x0056, 0x0086, 0x2041,
12837 + 0x0000, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6218, 0x0096,
12838 + 0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x2039, 0x0000,
12839 + 0x080c, 0x906f, 0x080c, 0xc039, 0x005e, 0x007e, 0x0005, 0x0026,
12840 + 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x2128, 0x20a9,
12841 + 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, 0x080c, 0x533d, 0x11b0,
12842 + 0x2c10, 0x0056, 0x0086, 0x2041, 0x0000, 0x2508, 0x2029, 0x0001,
12843 + 0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x2039,
12844 + 0x0000, 0x080c, 0x906f, 0x080c, 0xc039, 0x005e, 0x003e, 0x001e,
12845 + 0x8108, 0x1f04, 0xc0cb, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e,
12846 + 0x002e, 0x0005, 0x0076, 0x0056, 0x6218, 0x0086, 0x2041, 0x0000,
12847 + 0x2029, 0x0001, 0x2019, 0x0048, 0x0096, 0x2049, 0x0000, 0x080c,
12848 + 0x8fc9, 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x906f, 0x2c20,
12849 + 0x080c, 0xc039, 0x005e, 0x007e, 0x0005, 0x0026, 0x0046, 0x0056,
12850 + 0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, 0x007f, 0x2009, 0x0000,
12851 + 0x0016, 0x0036, 0x080c, 0x533d, 0x11c0, 0x2c10, 0x0086, 0x2041,
12852 + 0x0000, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, 0xc3c4, 0x004e,
12853 + 0x0096, 0x2049, 0x0000, 0x080c, 0x8fc9, 0x009e, 0x008e, 0x2039,
12854 + 0x0000, 0x080c, 0x906f, 0x080c, 0xc039, 0x003e, 0x001e, 0x8108,
12855 + 0x1f04, 0xc118, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x002e,
12856 + 0x0005, 0x0016, 0x00f6, 0x3800, 0xd08c, 0x0130, 0xad82, 0x1000,
12857 + 0x02b0, 0xad82, 0xc600, 0x0230, 0xad82, 0xfe00, 0x0280, 0xad82,
12858 + 0xffff, 0x1268, 0x6800, 0xa07d, 0x0138, 0x6803, 0x0000, 0x6b52,
12859 + 0x080c, 0x580a, 0x2f68, 0x0cb0, 0x6b52, 0x080c, 0x580a, 0x00fe,
12860 + 0x001e, 0x0005, 0x00e6, 0x0046, 0x0036, 0x2061, 0xce00, 0xa005,
12861 + 0x1138, 0x2071, 0xc600, 0x7448, 0x7068, 0x8001, 0xa402, 0x12d8,
12862 + 0x2100, 0xac06, 0x0168, 0x6000, 0xa086, 0x0000, 0x0148, 0x6008,
12863 + 0xa206, 0x1130, 0x6018, 0xa1a0, 0x0006, 0x2424, 0xa406, 0x0140,
12864 + 0xace0, 0x0018, 0x2001, 0xc617, 0x2004, 0xac02, 0x1220, 0x0c40,
12865 + 0xa085, 0x0001, 0x0008, 0xa006, 0x003e, 0x004e, 0x00ee, 0x0005,
12866 + 0x00d6, 0x0006, 0x080c, 0x1602, 0x000e, 0x090c, 0x1519, 0x6837,
12867 + 0x010d, 0x685e, 0x0026, 0x2010, 0x080c, 0xac81, 0x2001, 0x0000,
12868 + 0x0120, 0x2200, 0xa080, 0x0014, 0x2004, 0x002e, 0x684a, 0x6956,
12869 + 0x6c46, 0x684f, 0x0000, 0x2001, 0xc905, 0x2004, 0x6852, 0xa006,
12870 + 0x68b2, 0x6802, 0x683a, 0x685a, 0x080c, 0x580a, 0x00de, 0x0005,
12871 + 0x6700, 0xa786, 0x0000, 0x0158, 0xa786, 0x0001, 0x0140, 0xa786,
12872 + 0x000a, 0x0128, 0xa786, 0x0009, 0x0110, 0xa085, 0x0001, 0x0005,
12873 + 0x00e6, 0x6018, 0x2070, 0x70a0, 0xa206, 0x00ee, 0x0005, 0x0016,
12874 + 0x6004, 0xa08e, 0x001e, 0x11a0, 0x8007, 0x6130, 0xa18c, 0x00ff,
12875 + 0xa105, 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0005,
12876 + 0x2001, 0xc8fe, 0x2004, 0x6016, 0x080c, 0x7999, 0x080c, 0x7e94,
12877 + 0x001e, 0x0005, 0xe000, 0xe000, 0x0005, 0x6020, 0xd0e4, 0x0158,
12878 + 0xd0cc, 0x0118, 0x080c, 0xaf6c, 0x0030, 0x080c, 0xc3e2, 0x080c,
12879 + 0x7103, 0x080c, 0x95e3, 0x0005, 0xa280, 0x0007, 0x2004, 0xa084,
12880 + 0x000f, 0x0002, 0xc20b, 0xc20b, 0xc20b, 0xc210, 0xc20b, 0xc20d,
12881 + 0xc20d, 0xc20b, 0xc20d, 0xa006, 0x0005, 0x00c6, 0x2260, 0x00ce,
12882 + 0xa085, 0x0001, 0x0005, 0xa280, 0x0007, 0x2004, 0xa084, 0x000f,
12883 + 0x0002, 0xc222, 0xc222, 0xc222, 0xc222, 0xc222, 0xc222, 0xc22d,
12884 + 0xc222, 0xc222, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00,
12885 + 0x6003, 0x0001, 0x080c, 0x7999, 0x0005, 0x00c6, 0x2260, 0x080c,
12886 + 0xc3e2, 0x603f, 0x0000, 0x6020, 0xc0f4, 0xc0cc, 0x6022, 0x6037,
12887 + 0x0000, 0x00ce, 0x00d6, 0x2268, 0xa186, 0x0007, 0x1904, 0xc288,
12888 + 0x6810, 0xa005, 0x0138, 0xa080, 0x0013, 0x2004, 0xd0fc, 0x1110,
12889 + 0x00de, 0x08c0, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c, 0x7999,
12890 + 0x080c, 0x7e94, 0x00c6, 0x2d60, 0x6100, 0xa186, 0x0002, 0x1904,
12891 + 0xc311, 0x6010, 0xa005, 0x1138, 0x6000, 0xa086, 0x0007, 0x190c,
12892 + 0x1519, 0x0804, 0xc311, 0xa08c, 0xf000, 0x1130, 0x0028, 0x2068,
12893 + 0x6800, 0xa005, 0x1de0, 0x2d00, 0xa080, 0x0013, 0x2004, 0xa084,
12894 + 0x0003, 0xa086, 0x0002, 0x1180, 0x6010, 0x2068, 0x684c, 0xc0dc,
12895 + 0xc0f4, 0x684e, 0x6850, 0xc0f4, 0xc0fc, 0x6852, 0x2009, 0x0043,
12896 + 0x080c, 0xbbcb, 0x0804, 0xc311, 0x2009, 0x0041, 0x0804, 0xc30b,
12897 + 0xa186, 0x0005, 0x15f0, 0x6810, 0xa080, 0x0013, 0x2004, 0xd0bc,
12898 + 0x1118, 0x00de, 0x0804, 0xc222, 0xd0b4, 0x0128, 0xd0fc, 0x090c,
12899 + 0x1519, 0x0804, 0xc240, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c,
12900 + 0x7999, 0x080c, 0x7e94, 0x00c6, 0x2d60, 0x6100, 0xa186, 0x0002,
12901 + 0x0120, 0xa186, 0x0004, 0x1904, 0xc311, 0x2071, 0xc96a, 0x7000,
12902 + 0xa086, 0x0003, 0x1128, 0x7004, 0xac06, 0x1110, 0x7003, 0x0000,
12903 + 0x6810, 0xa080, 0x0013, 0x200c, 0xc1f4, 0xc1dc, 0x2102, 0x8000,
12904 + 0x200c, 0xc1f4, 0xc1fc, 0xc1bc, 0x2102, 0x2009, 0x0042, 0x0804,
12905 + 0xc30b, 0x0036, 0x00d6, 0x00d6, 0x080c, 0x1602, 0x003e, 0x090c,
12906 + 0x1519, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x685b,
12907 + 0x0000, 0x6b5e, 0x6857, 0x0045, 0x2c00, 0x6862, 0x6034, 0x6872,
12908 + 0x2360, 0x6020, 0xc0dd, 0x6022, 0x6018, 0xa080, 0x0028, 0x2004,
12909 + 0xa084, 0x00ff, 0x8007, 0x6350, 0x6b4a, 0x6846, 0x684f, 0x0000,
12910 + 0x6853, 0x0000, 0x6d6a, 0x6e66, 0x686f, 0x0001, 0x080c, 0x580a,
12911 + 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xbd55, 0x2d00, 0x600a,
12912 + 0x601f, 0x0006, 0x6003, 0x0007, 0x6017, 0x0000, 0x603f, 0x0000,
12913 + 0x00de, 0x003e, 0x0038, 0x603f, 0x0000, 0x6003, 0x0007, 0x080c,
12914 + 0xbbcb, 0x00ce, 0x00de, 0x0005, 0xa186, 0x0013, 0x1128, 0x6004,
12915 + 0xa082, 0x0085, 0x2008, 0x00c2, 0xa186, 0x0027, 0x1178, 0x080c,
12916 + 0x7db1, 0x0036, 0x00d6, 0x6010, 0x2068, 0x2019, 0x0004, 0x080c,
12917 + 0xc141, 0x00de, 0x003e, 0x080c, 0x7e94, 0x0005, 0xa186, 0x0014,
12918 + 0x0d70, 0x080c, 0x962a, 0x0005, 0xc33d, 0xc33b, 0xc33b, 0xc33b,
12919 + 0xc33b, 0xc33b, 0xc33d, 0x080c, 0x1519, 0x080c, 0x7db1, 0x6003,
12920 + 0x000c, 0x080c, 0x7e94, 0x0005, 0xa182, 0x008c, 0x1220, 0xa182,
12921 + 0x0085, 0x0208, 0x001a, 0x080c, 0x962a, 0x0005, 0xc355, 0xc355,
12922 + 0xc355, 0xc355, 0xc357, 0xc375, 0xc355, 0x080c, 0x1519, 0x00d6,
12923 + 0x2c68, 0x080c, 0x958d, 0x01a0, 0x6003, 0x0001, 0x6007, 0x001e,
12924 + 0x2009, 0xcc8e, 0x210c, 0x6136, 0x2009, 0xcc8f, 0x210c, 0x613a,
12925 + 0x600b, 0xffff, 0x6918, 0x611a, 0x601f, 0x0004, 0x080c, 0x7999,
12926 + 0x2d60, 0x080c, 0x95e3, 0x00de, 0x0005, 0x080c, 0x95e3, 0x0005,
12927 + 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0ec, 0x00ee, 0x0005, 0x6010,
12928 + 0xa08c, 0xf000, 0x0904, 0xc3c3, 0xa080, 0x0013, 0x200c, 0xd1ec,
12929 + 0x05d0, 0x2001, 0xc672, 0x2004, 0xd0ec, 0x05a8, 0x6003, 0x0002,
12930 + 0x6020, 0xc0e5, 0x6022, 0xd1ac, 0x0180, 0x00f6, 0x2c78, 0x080c,
12931 + 0x56bf, 0x00fe, 0x0150, 0x2001, 0xc8ff, 0x2004, 0x603e, 0x2009,
12932 + 0xc672, 0x210c, 0xd1f4, 0x11e8, 0x0080, 0x2009, 0xc672, 0x210c,
12933 + 0xd1f4, 0x0128, 0x6020, 0xc0e4, 0x6022, 0xa006, 0x00a0, 0x2001,
12934 + 0xc8ff, 0x200c, 0x8103, 0xa100, 0x603e, 0x6018, 0xa088, 0x002f,
12935 + 0x2104, 0xa005, 0x0118, 0xa088, 0x0003, 0x0cd0, 0x2c0a, 0x600f,
12936 + 0x0000, 0xa085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x6150,
12937 + 0xa2f0, 0x002f, 0x2e04, 0x2060, 0x8cff, 0x0180, 0x84ff, 0x1118,
12938 + 0x6050, 0xa106, 0x1138, 0x600c, 0x2072, 0x080c, 0x7103, 0x080c,
12939 + 0x95e3, 0x0010, 0xacf0, 0x0003, 0x2e64, 0x0c70, 0x00ee, 0x00ce,
12940 + 0x001e, 0x0005, 0x00d6, 0x6018, 0xa0e8, 0x002f, 0x2d04, 0xa005,
12941 + 0x0140, 0xac06, 0x0120, 0x2d04, 0xa0e8, 0x0003, 0x0cb8, 0x600c,
12942 + 0x206a, 0x00de, 0x0005, 0x0026, 0x0036, 0x0156, 0x2011, 0xc628,
12943 + 0x2204, 0xa084, 0x00ff, 0x2019, 0xcc8e, 0x2334, 0xa636, 0x11d8,
12944 + 0x8318, 0x2334, 0x2204, 0xa084, 0xff00, 0xa636, 0x11a0, 0x2011,
12945 + 0xcc90, 0x6018, 0xa098, 0x000a, 0x20a9, 0x0004, 0x080c, 0xa103,
12946 + 0x1150, 0x2011, 0xcc94, 0x6018, 0xa098, 0x0006, 0x20a9, 0x0004,
12947 + 0x080c, 0xa103, 0x1100, 0x015e, 0x003e, 0x002e, 0x0005, 0x00e6,
12948 + 0x2071, 0xc600, 0x080c, 0x4f02, 0x080c, 0x2c62, 0x00ee, 0x0005,
12949 + 0x00d6, 0x080c, 0x15e5, 0x0500, 0x2d10, 0xa290, 0x000d, 0x2013,
12950 + 0x0134, 0x8210, 0x2013, 0x0000, 0x8210, 0x703c, 0x2012, 0x8210,
12951 + 0x7038, 0x2012, 0x8210, 0x2218, 0x7048, 0x2012, 0x8210, 0x704c,
12952 + 0x2012, 0x8210, 0x7050, 0x2012, 0x8210, 0x7054, 0x2012, 0x2300,
12953 + 0x080c, 0x3e8f, 0x080c, 0x580a, 0x00de, 0x0005, 0x00d6, 0x0026,
12954 + 0x080c, 0x1602, 0x090c, 0x1519, 0xad90, 0x000e, 0x20a9, 0x000c,
12955 + 0x22a0, 0xa016, 0x42a4, 0xa186, 0x0046, 0x1118, 0x6837, 0x0136,
12956 + 0x0038, 0x6837, 0x0138, 0xa186, 0x0041, 0x0110, 0x684b, 0x0001,
12957 + 0x7038, 0xa084, 0xff00, 0x7240, 0xa294, 0xff00, 0x8007, 0xa215,
12958 + 0x6a6a, 0xa186, 0x0046, 0x1168, 0x7038, 0xa084, 0x00ff, 0x723c,
12959 + 0xa294, 0xff00, 0xa215, 0x6a6e, 0x723c, 0xa294, 0x00ff, 0x6a72,
12960 + 0x0060, 0x7040, 0xa084, 0x00ff, 0x7244, 0xa294, 0xff00, 0xa215,
12961 + 0x6a6e, 0x7244, 0xa294, 0x00ff, 0x6a72, 0xa186, 0x0046, 0x1118,
12962 + 0xae90, 0x0012, 0x0010, 0xae90, 0x001a, 0x2204, 0x8007, 0x6876,
12963 + 0x8210, 0x2204, 0x8007, 0x687a, 0x8210, 0x2204, 0x8007, 0x687e,
12964 + 0x8210, 0x2204, 0x8007, 0x6882, 0x8210, 0xa186, 0x0046, 0x1118,
12965 + 0xae90, 0x0016, 0x0010, 0xae90, 0x001e, 0x2204, 0x8007, 0x6886,
12966 + 0x8210, 0x2204, 0x8007, 0x688a, 0x8210, 0x2204, 0x8007, 0x688e,
12967 + 0x8210, 0x2204, 0x8007, 0x6892, 0x8210, 0xa186, 0x0046, 0x1118,
12968 + 0xae90, 0x0022, 0x0010, 0xae90, 0x002a, 0x00d6, 0xade8, 0x0025,
12969 + 0x20a9, 0x0008, 0x2204, 0x8007, 0x206a, 0x8210, 0x8d68, 0x1f04,
12970 + 0xc4ca, 0x00de, 0x002e, 0x080c, 0x580a, 0x00de, 0x0005, 0x00e6,
12971 + 0x6018, 0x2070, 0x7000, 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005,
12972 + 0x6850, 0xc0e5, 0x6852, 0x0005, 0x00e6, 0x00c6, 0x0076, 0x0066,
12973 + 0x0056, 0x0046, 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, 0x2029,
12974 + 0xc930, 0x252c, 0x2021, 0xc936, 0x2424, 0x2061, 0xce00, 0x2071,
12975 + 0xc600, 0x7648, 0x7068, 0xa606, 0x0578, 0x671c, 0xa786, 0x0001,
12976 + 0x0118, 0xa786, 0x0008, 0x1500, 0x2500, 0xac06, 0x01e8, 0x2400,
12977 + 0xac06, 0x01d0, 0x080c, 0xc1b8, 0x01b8, 0x080c, 0xc1c8, 0x11a0,
12978 + 0x6000, 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1953, 0x001e,
12979 + 0x080c, 0xae7e, 0x1110, 0x080c, 0x2e6c, 0x080c, 0xae8f, 0x1110,
12980 + 0x080c, 0x9c09, 0x080c, 0xae54, 0xace0, 0x0018, 0x2001, 0xc617,
12981 + 0x2004, 0xac02, 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, 0x004e,
12982 + 0x005e, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0006,
12983 + 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xc640, 0xd5a4, 0x0118,
12984 + 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032,
12985 + 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, 0x0148,
12986 + 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, 0xc64a,
12987 + 0x04c9, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, 0x0006,
12988 + 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0xc640, 0xd5a4, 0x0118,
12989 + 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032,
12990 + 0xd5ac, 0x0178, 0x2500, 0xa084, 0x0007, 0xa08e, 0x0003, 0x0148,
12991 + 0xa08e, 0x0004, 0x0130, 0xa08e, 0x0005, 0x0118, 0x2071, 0xc64a,
12992 + 0x0089, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, 0x0006,
12993 + 0x00e6, 0x2091, 0x8000, 0x2071, 0xc642, 0x0021, 0x00ee, 0x000e,
12994 + 0x012e, 0x0005, 0x2e04, 0x8000, 0x2072, 0x1220, 0x8e70, 0x2e04,
12995 + 0x8000, 0x2072, 0x0005, 0x00e6, 0x2071, 0xc640, 0x0c99, 0x00ee,
12996 + 0x0005, 0x00e6, 0x2071, 0xc644, 0x0c69, 0x00ee, 0x0005, 0x0126,
12997 + 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0xc640, 0x7044, 0x8000,
12998 + 0x7046, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0001, 0x0002, 0x0004,
12999 + 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400,
13000 + 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0xb0c4
13002 +#ifdef UNIQUE_FW_NAME
13003 +unsigned short fw2200ip_length01 = 0xb5c6;
13005 +unsigned short risc_code_length01 = 0xb5c6;
13008 --- /dev/null Thu Apr 11 07:25:15 2002
13009 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/ql2300tpx_fw.c Thu Jul 3 15:34:42 2003
13011 +/**************************************************************************
13012 + * QLOGIC LINUX SOFTWARE
13014 + * QLogic ISP2x00 device driver for Linux 2.5.x
13015 + * Copyright (C) 2003 Qlogic Corporation
13016 + * (www.qlogic.com)
13018 + * This program is free software; you can redistribute it and/or modify it
13019 + * under the terms of the GNU General Public License as published by the
13020 + * Free Software Foundation; either version 2, or (at your option) any
13023 + * This program is distributed in the hope that it will be useful, but
13024 + * WITHOUT ANY WARRANTY; without even the implied warranty of
13025 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13026 + * General Public License for more details.
13028 + *************************************************************************/
13030 + * Firmware Version 3.02.10 (14:20 Apr 17, 2003)
13033 +#ifdef UNIQUE_FW_NAME
13034 +unsigned short fw2300tpx_version = 3*1024+2;
13036 +unsigned short risc_code_version = 3*1024+2;
13039 +#ifdef UNIQUE_FW_NAME
13040 +unsigned char fw2300tpx_version_str[] = {3, 2,10};
13042 +unsigned char firmware_version[] = {3, 2,10};
13045 +#ifdef UNIQUE_FW_NAME
13046 +#define fw2300tpx_VERSION_STRING "3.02.10"
13048 +#define FW_VERSION_STRING "3.02.10"
13051 +#ifdef UNIQUE_FW_NAME
13052 +unsigned short fw2300tpx_addr01 = 0x0800 ;
13054 +unsigned short risc_code_addr01 = 0x0800 ;
13057 +#ifdef UNIQUE_FW_NAME
13058 +unsigned short fw2300tpx_code01[] = {
13060 +unsigned short risc_code01[] = {
13062 + 0x0470, 0x0000, 0x0000, 0xc920, 0x0000, 0x0003, 0x0002, 0x000a,
13063 + 0x0117, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030,
13064 + 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241,
13065 + 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3233, 0x3030, 0x2046, 0x6972,
13066 + 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030,
13067 + 0x332e, 0x3032, 0x2e31, 0x3020, 0x2020, 0x2020, 0x2400, 0x20a9,
13068 + 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2200, 0x20a9, 0x000f,
13069 + 0x2001, 0x0000, 0x400f, 0x2091, 0x2400, 0x20a9, 0x000f, 0x2001,
13070 + 0x0000, 0x400f, 0x2091, 0x2600, 0x20a9, 0x000f, 0x2001, 0x0000,
13071 + 0x400f, 0x2091, 0x2800, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f,
13072 + 0x2091, 0x2a00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091,
13073 + 0x2c00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2e00,
13074 + 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2000, 0x2001,
13075 + 0x0000, 0x20c1, 0x0004, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9,
13076 + 0x1bff, 0x2059, 0x0000, 0x2b78, 0x7883, 0x0004, 0x2089, 0x28b1,
13077 + 0x2051, 0x1800, 0x2a70, 0x20e1, 0x0001, 0x20e9, 0x0001, 0x2029,
13078 + 0x4d00, 0x2031, 0xffff, 0x2039, 0x4cd0, 0x2021, 0x0200, 0x20e9,
13079 + 0x0001, 0x20a1, 0x0000, 0x20a9, 0x0800, 0x900e, 0x4104, 0x20e9,
13080 + 0x0001, 0x20a1, 0x1000, 0x900e, 0x2001, 0x0cc0, 0x9084, 0x0fff,
13081 + 0x20a8, 0x4104, 0x2001, 0x0000, 0x9086, 0x0000, 0x0120, 0x21a8,
13082 + 0x4104, 0x8001, 0x1de0, 0x7566, 0x766a, 0x7762, 0x746e, 0x7472,
13083 + 0x00e6, 0x2071, 0x1a8a, 0x2472, 0x00ee, 0x20a1, 0x1cd0, 0x7168,
13084 + 0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x000f, 0x2001, 0x0001,
13085 + 0x9112, 0x900e, 0x21a8, 0x4104, 0x8211, 0x1de0, 0x7168, 0x3400,
13086 + 0x8001, 0x9102, 0x0120, 0x0218, 0x20a8, 0x900e, 0x4104, 0x2009,
13087 + 0x1800, 0x810d, 0x810d, 0x810d, 0x810d, 0x810d, 0x918c, 0x001f,
13088 + 0x2001, 0x0001, 0x9112, 0x20e9, 0x0001, 0x20a1, 0x0800, 0x900e,
13089 + 0x20a9, 0x0800, 0x4104, 0x8211, 0x1dd8, 0x080c, 0x0ec6, 0x080c,
13090 + 0x56e7, 0x080c, 0x94ea, 0x080c, 0x107b, 0x080c, 0x1245, 0x080c,
13091 + 0x18ae, 0x080c, 0x0d1d, 0x080c, 0x1000, 0x080c, 0x2f6e, 0x080c,
13092 + 0x6b54, 0x080c, 0x5f51, 0x080c, 0x774d, 0x080c, 0x20b6, 0x080c,
13093 + 0x7a7b, 0x080c, 0x7190, 0x080c, 0x1ef3, 0x080c, 0x2027, 0x080c,
13094 + 0x20ab, 0x2091, 0x3009, 0x7883, 0x0000, 0x1004, 0x091d, 0x7880,
13095 + 0x9086, 0x0002, 0x1190, 0x7883, 0x4000, 0x7837, 0x4000, 0x7833,
13096 + 0x0010, 0x0e04, 0x0911, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001,
13097 + 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2071, 0x1800, 0x7003,
13098 + 0x0000, 0x2071, 0x1800, 0x7000, 0x908e, 0x0003, 0x1168, 0x080c,
13099 + 0x44bf, 0x080c, 0x2f92, 0x080c, 0x6bc5, 0x080c, 0x63e8, 0x080c,
13100 + 0x7778, 0x080c, 0x2849, 0x0c68, 0x000b, 0x0c88, 0x0940, 0x0941,
13101 + 0x0ab2, 0x093e, 0x0b69, 0x0d14, 0x0d14, 0x0d14, 0x080c, 0x0d84,
13102 + 0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, 0x9086, 0x0001,
13103 + 0x1904, 0x0a90, 0x080c, 0x0e2c, 0x080c, 0x6877, 0x0150, 0x080c,
13104 + 0x689a, 0x1580, 0x2079, 0x0100, 0x7828, 0x9085, 0x1800, 0x782a,
13105 + 0x0448, 0x080c, 0x67be, 0x7000, 0x9086, 0x0001, 0x1904, 0x0a90,
13106 + 0x7090, 0x9086, 0x0028, 0x1904, 0x0a90, 0x2001, 0x0161, 0x2003,
13107 + 0x0001, 0x2079, 0x0100, 0x7827, 0xffff, 0x7a28, 0x9295, 0x5e2f,
13108 + 0x7a2a, 0x2011, 0x6739, 0x080c, 0x781a, 0x2011, 0x672c, 0x080c,
13109 + 0x78e7, 0x2011, 0x554d, 0x080c, 0x781a, 0x2011, 0x8030, 0x901e,
13110 + 0x738e, 0x0460, 0x080c, 0x4e04, 0x2079, 0x0100, 0x7844, 0x9005,
13111 + 0x1904, 0x0a90, 0x2011, 0x554d, 0x080c, 0x781a, 0x2001, 0x0265,
13112 + 0x2001, 0x0205, 0x2003, 0x0000, 0x7840, 0x9084, 0xfffb, 0x7842,
13113 + 0x2001, 0x1973, 0x2004, 0x9005, 0x1140, 0x00c6, 0x2061, 0x0100,
13114 + 0x080c, 0x568f, 0x00ce, 0x0804, 0x0a90, 0x780f, 0x006b, 0x7a28,
13115 + 0x9295, 0x5e2f, 0x7a2a, 0x2011, 0x8010, 0x73d4, 0x2001, 0x1974,
13116 + 0x2003, 0x0001, 0x080c, 0x2718, 0x080c, 0x447f, 0x7240, 0xc284,
13117 + 0x7242, 0x2001, 0x180c, 0x200c, 0xc1ac, 0xc1cc, 0x2102, 0x080c,
13118 + 0x8d36, 0x2011, 0x0004, 0x080c, 0xb0b9, 0x080c, 0x5e30, 0x080c,
13119 + 0x6877, 0x1120, 0x080c, 0x275c, 0x02e0, 0x0400, 0x080c, 0x5696,
13120 + 0x0140, 0x708f, 0x0001, 0x70cf, 0x0000, 0x080c, 0x4fc7, 0x0804,
13121 + 0x0a90, 0x080c, 0x4dea, 0xd094, 0x0188, 0x2011, 0x180c, 0x2204,
13122 + 0xc0cd, 0x2012, 0x080c, 0x4dee, 0xd0d4, 0x1118, 0x080c, 0x275c,
13123 + 0x1270, 0x2011, 0x180c, 0x2204, 0xc0bc, 0x00a8, 0x080c, 0x4dee,
13124 + 0xd0d4, 0x1db8, 0x2011, 0x180c, 0x2204, 0xc0bd, 0x0060, 0x2011,
13125 + 0x180c, 0x2204, 0xc0bd, 0x2012, 0x080c, 0x5f25, 0x1128, 0xd0a4,
13126 + 0x0118, 0x2204, 0xc0fd, 0x2012, 0x080c, 0x5eeb, 0x0120, 0x7a0c,
13127 + 0xc2b4, 0x7a0e, 0x00a8, 0x7077, 0x0000, 0x080c, 0x6877, 0x1130,
13128 + 0x70a8, 0x9005, 0x1168, 0x080c, 0xb4bd, 0x0050, 0x080c, 0xb4bd,
13129 + 0x70d8, 0xd09c, 0x1128, 0x70a8, 0x9005, 0x0110, 0x080c, 0x5677,
13130 + 0x70e3, 0x0000, 0x70df, 0x0000, 0x709f, 0x0000, 0x72d8, 0x080c,
13131 + 0x6877, 0x1170, 0x9016, 0x0016, 0x080c, 0x2515, 0x2019, 0x193c,
13132 + 0x211a, 0x001e, 0x7057, 0xffff, 0x705b, 0x00ef, 0x707b, 0x0000,
13133 + 0x2079, 0x1852, 0x7804, 0xd0ac, 0x0108, 0xc295, 0x72da, 0x080c,
13134 + 0x6877, 0x0118, 0x9296, 0x0004, 0x0548, 0x2011, 0x0001, 0x080c,
13135 + 0xb0b9, 0x70a3, 0x0000, 0x70a7, 0xffff, 0x7003, 0x0002, 0x2079,
13136 + 0x0100, 0x7827, 0x0003, 0x7828, 0x9085, 0x0003, 0x782a, 0x00fe,
13137 + 0x080c, 0x2b1e, 0x2011, 0x0005, 0x080c, 0x8e99, 0x080c, 0x8125,
13138 + 0x080c, 0x6877, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c,
13139 + 0x2515, 0x61e2, 0x001e, 0x00ce, 0x012e, 0x0420, 0x70a3, 0x0000,
13140 + 0x70a7, 0xffff, 0x7003, 0x0002, 0x00f6, 0x2079, 0x0100, 0x7827,
13141 + 0x0003, 0x7828, 0x9085, 0x0003, 0x782a, 0x00fe, 0x2011, 0x0005,
13142 + 0x080c, 0x8e99, 0x080c, 0x8125, 0x080c, 0x6877, 0x0148, 0x00c6,
13143 + 0x2061, 0x0100, 0x0016, 0x080c, 0x2515, 0x61e2, 0x001e, 0x00ce,
13144 + 0x00fe, 0x012e, 0x0005, 0x00c6, 0x080c, 0x6877, 0x1118, 0x20a9,
13145 + 0x0800, 0x0010, 0x20a9, 0x0782, 0x080c, 0x6877, 0x1110, 0x900e,
13146 + 0x0010, 0x2009, 0x007e, 0x080c, 0x2e11, 0x8108, 0x1f04, 0x0aa3,
13147 + 0x7077, 0x0000, 0x7078, 0x9084, 0x00ff, 0x707a, 0x70ab, 0x0000,
13148 + 0x00ce, 0x0005, 0x00b6, 0x0126, 0x2091, 0x8000, 0x7000, 0x9086,
13149 + 0x0002, 0x1904, 0x0b66, 0x70a4, 0x9086, 0xffff, 0x0130, 0x080c,
13150 + 0x2b1e, 0x080c, 0x8125, 0x0804, 0x0b66, 0x70d8, 0xd0ac, 0x1110,
13151 + 0xd09c, 0x0540, 0xd084, 0x0530, 0x0006, 0x2001, 0x0103, 0x2003,
13152 + 0x002b, 0x000e, 0xd08c, 0x01f0, 0x70dc, 0x9086, 0xffff, 0x01b0,
13153 + 0x080c, 0x2c86, 0x080c, 0x8125, 0x70d8, 0xd094, 0x1904, 0x0b66,
13154 + 0x2011, 0x0001, 0x080c, 0xb759, 0x0110, 0x2011, 0x0003, 0x901e,
13155 + 0x080c, 0x2cc0, 0x080c, 0x8125, 0x0804, 0x0b66, 0x70e0, 0x9005,
13156 + 0x1904, 0x0b66, 0x70a0, 0x9005, 0x1904, 0x0b66, 0x70d8, 0xd0a4,
13157 + 0x0118, 0xd0b4, 0x0904, 0x0b66, 0x080c, 0x5eeb, 0x1904, 0x0b66,
13158 + 0x080c, 0x5f3e, 0x1904, 0x0b66, 0x080c, 0x5f25, 0x01c0, 0x0156,
13159 + 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x5c0d, 0x1118,
13160 + 0xb800, 0xd0ec, 0x1138, 0x001e, 0x8108, 0x1f04, 0x0b0c, 0x00ce,
13161 + 0x015e, 0x0028, 0x001e, 0x00ce, 0x015e, 0x0804, 0x0b66, 0x0006,
13162 + 0x2001, 0x0103, 0x2003, 0x006b, 0x000e, 0x2011, 0x1980, 0x080c,
13163 + 0x0f36, 0x2011, 0x199a, 0x080c, 0x0f36, 0x7030, 0xc08c, 0x7032,
13164 + 0x7003, 0x0003, 0x70a7, 0xffff, 0x080c, 0x0e0e, 0x9006, 0x080c,
13165 + 0x23a6, 0x0036, 0x0046, 0x2019, 0xffff, 0x2021, 0x0006, 0x080c,
13166 + 0x44f9, 0x004e, 0x003e, 0x00f6, 0x2079, 0x0100, 0x080c, 0x689a,
13167 + 0x0150, 0x080c, 0x6877, 0x7828, 0x0118, 0x9084, 0xe1ff, 0x0010,
13168 + 0x9084, 0xffdf, 0x782a, 0x00fe, 0x2001, 0x19b5, 0x2004, 0x9086,
13169 + 0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x8e99, 0x2011, 0x0000,
13170 + 0x080c, 0x8ea3, 0x080c, 0x8125, 0x080c, 0x820b, 0x012e, 0x00be,
13171 + 0x0005, 0x0016, 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079,
13172 + 0x0100, 0x7904, 0x918c, 0xfffd, 0x7906, 0x2009, 0x00f7, 0x080c,
13173 + 0x5660, 0x7940, 0x918c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0110,
13174 + 0x7827, 0x0040, 0xd19c, 0x0110, 0x7827, 0x0008, 0x0006, 0x0036,
13175 + 0x0156, 0x7954, 0xd1ac, 0x1904, 0x0bf6, 0x2001, 0x1974, 0x2004,
13176 + 0x9005, 0x1518, 0x080c, 0x27d7, 0x1148, 0x2001, 0x0001, 0x080c,
13177 + 0x2747, 0x2001, 0x0001, 0x080c, 0x272a, 0x00b8, 0x080c, 0x27df,
13178 + 0x1138, 0x9006, 0x080c, 0x2747, 0x9006, 0x080c, 0x272a, 0x0068,
13179 + 0x080c, 0x27e7, 0x1d50, 0x2001, 0x1965, 0x2004, 0xd0fc, 0x0108,
13180 + 0x0020, 0x080c, 0x2541, 0x0804, 0x0cd6, 0x080c, 0x6888, 0x0148,
13181 + 0x080c, 0x689a, 0x1118, 0x080c, 0x6b4f, 0x0050, 0x080c, 0x687f,
13182 + 0x0dd0, 0x080c, 0x6b4a, 0x080c, 0x6b40, 0x080c, 0x67be, 0x0058,
13183 + 0x080c, 0x6877, 0x0140, 0x2009, 0x00f8, 0x080c, 0x5660, 0x7843,
13184 + 0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x1138,
13185 + 0x080c, 0x6877, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x0cdb, 0x1f04,
13186 + 0x0bd5, 0x0070, 0x7824, 0x080c, 0x6891, 0x0118, 0xd0ac, 0x1904,
13187 + 0x0cdb, 0x9084, 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804, 0x0cdb,
13188 + 0x2001, 0x0001, 0x080c, 0x23a6, 0x0804, 0x0cee, 0x2001, 0x1974,
13189 + 0x2004, 0x9005, 0x1518, 0x080c, 0x27d7, 0x1148, 0x2001, 0x0001,
13190 + 0x080c, 0x2747, 0x2001, 0x0001, 0x080c, 0x272a, 0x00b8, 0x080c,
13191 + 0x27df, 0x1138, 0x9006, 0x080c, 0x2747, 0x9006, 0x080c, 0x272a,
13192 + 0x0068, 0x080c, 0x27e7, 0x1d50, 0x2001, 0x1965, 0x2004, 0xd0fc,
13193 + 0x0108, 0x0020, 0x080c, 0x2541, 0x0804, 0x0cd6, 0x7850, 0x9085,
13194 + 0x0040, 0x7852, 0x7938, 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c,
13195 + 0x27ef, 0x9085, 0x2000, 0x7852, 0x793a, 0x20a9, 0x0046, 0x1d04,
13196 + 0x0c2f, 0x080c, 0x78c7, 0x1f04, 0x0c2f, 0x7850, 0x9085, 0x0400,
13197 + 0x9084, 0xdfbf, 0x7852, 0x793a, 0x080c, 0x6888, 0x0148, 0x080c,
13198 + 0x689a, 0x1118, 0x080c, 0x6b4f, 0x0050, 0x080c, 0x687f, 0x0dd0,
13199 + 0x080c, 0x6b4a, 0x080c, 0x6b40, 0x080c, 0x67be, 0x0020, 0x2009,
13200 + 0x00f8, 0x080c, 0x5660, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x0c55,
13201 + 0x7850, 0x9085, 0x1400, 0x7852, 0x080c, 0x6877, 0x0120, 0x7843,
13202 + 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, 0x2019, 0xea60, 0x080c,
13203 + 0x0d15, 0x7820, 0xd09c, 0x1588, 0x080c, 0x6877, 0x0904, 0x0cbb,
13204 + 0x7824, 0xd0ac, 0x1904, 0x0cdb, 0x080c, 0x689a, 0x1530, 0x0046,
13205 + 0x2021, 0x0320, 0x8421, 0x1df0, 0x004e, 0x7827, 0x1800, 0x080c,
13206 + 0x27ef, 0x7824, 0x9084, 0x1800, 0x1168, 0x9484, 0x0fff, 0x1140,
13207 + 0x2001, 0x180f, 0x2004, 0x9084, 0x9000, 0x0110, 0x080c, 0x0cfc,
13208 + 0x8421, 0x1158, 0x1d04, 0x0c96, 0x080c, 0x78c7, 0x080c, 0x6b4a,
13209 + 0x080c, 0x6b40, 0x7003, 0x0001, 0x04f0, 0x8319, 0x1940, 0x1d04,
13210 + 0x0ca3, 0x080c, 0x78c7, 0x2009, 0x1968, 0x2104, 0x9005, 0x0118,
13211 + 0x8001, 0x200a, 0x1178, 0x200b, 0x000a, 0x7827, 0x0048, 0x20a9,
13212 + 0x0002, 0x080c, 0x27d0, 0x7924, 0x080c, 0x27ef, 0xd19c, 0x0110,
13213 + 0x080c, 0x2718, 0x00d8, 0x080c, 0x6888, 0x1140, 0x94a2, 0x03e8,
13214 + 0x1128, 0x080c, 0x6853, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800,
13215 + 0x080c, 0x27ef, 0x7824, 0x080c, 0x6891, 0x0110, 0xd0ac, 0x1158,
13216 + 0x9084, 0x1800, 0x0950, 0x7003, 0x0001, 0x0028, 0x2001, 0x0001,
13217 + 0x080c, 0x23a6, 0x0078, 0x2009, 0x180c, 0x210c, 0xd19c, 0x1120,
13218 + 0x7904, 0x918d, 0x0002, 0x7906, 0x7827, 0x0048, 0x7828, 0x9085,
13219 + 0x0028, 0x782a, 0x7850, 0x9085, 0x0400, 0x7852, 0x2001, 0x1974,
13220 + 0x2003, 0x0000, 0x9006, 0x78f2, 0x015e, 0x003e, 0x000e, 0x012e,
13221 + 0x00fe, 0x004e, 0x001e, 0x0005, 0x0006, 0x0016, 0x0036, 0x0046,
13222 + 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x080c, 0x2f92,
13223 + 0x0061, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x004e,
13224 + 0x003e, 0x001e, 0x000e, 0x0005, 0x0005, 0x080c, 0xb759, 0x0120,
13225 + 0x1d04, 0x0d1c, 0x080c, 0x78c7, 0x0005, 0x2a70, 0x2061, 0x1978,
13226 + 0x2063, 0x0003, 0x6007, 0x0002, 0x600b, 0x000a, 0x600f, 0x0117,
13227 + 0x2001, 0x194b, 0x900e, 0x2102, 0x718e, 0x2001, 0x0100, 0x2004,
13228 + 0x9082, 0x0002, 0x0218, 0x7057, 0xffff, 0x0008, 0x7156, 0x705f,
13229 + 0xffff, 0x7176, 0x717a, 0x080c, 0xb4bd, 0x70ef, 0x00c0, 0x2061,
13230 + 0x193b, 0x6003, 0x0909, 0x6106, 0x600b, 0x8800, 0x600f, 0x0200,
13231 + 0x6013, 0x00ff, 0x6017, 0x000f, 0x611a, 0x601f, 0x07d0, 0x2061,
13232 + 0x1943, 0x6003, 0x8000, 0x6106, 0x610a, 0x600f, 0x0200, 0x6013,
13233 + 0x00ff, 0x6116, 0x601b, 0x0001, 0x611e, 0x2061, 0x1956, 0x6003,
13234 + 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001,
13235 + 0x182a, 0x2102, 0x0005, 0x9016, 0x080c, 0x5c0d, 0x1178, 0xb804,
13236 + 0x90c4, 0x00ff, 0x98c6, 0x0006, 0x0128, 0x90c4, 0xff00, 0x98c6,
13237 + 0x0600, 0x1120, 0x9186, 0x0080, 0x0108, 0x8210, 0x8108, 0x9186,
13238 + 0x0800, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, 0x0e04, 0x0d86,
13239 + 0x0006, 0x0016, 0x2001, 0x8002, 0x0006, 0x2079, 0x0000, 0x000e,
13240 + 0x7882, 0x7836, 0x001e, 0x798e, 0x000e, 0x788a, 0x000e, 0x7886,
13241 + 0x3900, 0x789a, 0x7833, 0x0012, 0x2091, 0x5000, 0x0156, 0x00d6,
13242 + 0x0036, 0x0026, 0x2079, 0x0300, 0x2069, 0x1a65, 0x7a18, 0x226a,
13243 + 0x8d68, 0x7a1c, 0x226a, 0x782c, 0x2019, 0x1a72, 0x201a, 0x2019,
13244 + 0x1a75, 0x9016, 0x7808, 0xd09c, 0x0168, 0x7820, 0x201a, 0x8210,
13245 + 0x8318, 0x9386, 0x1a8a, 0x0108, 0x0ca8, 0x7808, 0xd09c, 0x0110,
13246 + 0x2011, 0xdead, 0x2019, 0x1a73, 0x782c, 0x201a, 0x8318, 0x221a,
13247 + 0x7803, 0x0000, 0x2069, 0x1a45, 0x901e, 0x20a9, 0x0020, 0x7b26,
13248 + 0x7a28, 0x226a, 0x8d68, 0x8318, 0x1f04, 0x0dcf, 0x002e, 0x003e,
13249 + 0x00de, 0x015e, 0x2079, 0x1800, 0x7803, 0x0005, 0x2091, 0x4080,
13250 + 0x2001, 0x0089, 0x2004, 0xd084, 0x0180, 0x2001, 0x19e7, 0x2004,
13251 + 0x9005, 0x0128, 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001,
13252 + 0x008a, 0x2003, 0x0002, 0x2003, 0x1001, 0x080c, 0x4df9, 0x1108,
13253 + 0x0011, 0x0cd8, 0x0005, 0x0026, 0x0126, 0x2011, 0x0080, 0x080c,
13254 + 0x0e8d, 0x20a9, 0x0900, 0x080c, 0x0eae, 0x2011, 0x0040, 0x080c,
13255 + 0x0e8d, 0x20a9, 0x0900, 0x080c, 0x0eae, 0x0c78, 0x0026, 0x080c,
13256 + 0x0e9a, 0x1118, 0x2011, 0x0040, 0x0098, 0x2011, 0x010e, 0x2214,
13257 + 0x9294, 0x0007, 0x9296, 0x0007, 0x0118, 0x2011, 0xa880, 0x0010,
13258 + 0x2011, 0x6840, 0xd0e4, 0x70f3, 0x0000, 0x1128, 0x70f3, 0x0fa0,
13259 + 0x080c, 0x0e9f, 0x002e, 0x0005, 0x0026, 0x080c, 0x0e9a, 0x0128,
13260 + 0xd0a4, 0x1138, 0x2011, 0xcdd5, 0x0010, 0x2011, 0x0080, 0x080c,
13261 + 0x0e9f, 0x002e, 0x0005, 0x0026, 0x70f3, 0x0000, 0x080c, 0x0e9a,
13262 + 0x1148, 0x080c, 0x27e7, 0x1118, 0x2011, 0x8484, 0x0058, 0x2011,
13263 + 0x8282, 0x0040, 0x080c, 0x27e7, 0x1118, 0x2011, 0xcdc5, 0x0010,
13264 + 0x2011, 0xcac2, 0x080c, 0x0e9f, 0x002e, 0x0005, 0x00e6, 0x0006,
13265 + 0x2071, 0x1800, 0xd0b4, 0x70ec, 0x1148, 0xc0e4, 0x0080, 0x70ee,
13266 + 0x0026, 0x9094, 0x00c0, 0x0449, 0x002e, 0x0048, 0x0006, 0x3b00,
13267 + 0x9084, 0xff3f, 0x20d8, 0x000e, 0x70f3, 0x0000, 0xc0e5, 0x0079,
13268 + 0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800, 0xd0e4, 0x70ec,
13269 + 0x1110, 0xc0dc, 0x0008, 0xc0dd, 0x0011, 0x00ee, 0x0005, 0x70ee,
13270 + 0x7000, 0x9084, 0x0007, 0x000b, 0x0005, 0x0e55, 0x0e2c, 0x0e2c,
13271 + 0x0e0e, 0x0e3b, 0x0e2c, 0x0e2c, 0x0e3b, 0x0016, 0x3b08, 0x3a00,
13272 + 0x9104, 0x918d, 0x00c0, 0x21d8, 0x9084, 0xff3f, 0x9205, 0x20d0,
13273 + 0x001e, 0x0005, 0x2001, 0x183b, 0x2004, 0xd0dc, 0x0005, 0x9e86,
13274 + 0x1800, 0x190c, 0x0d84, 0x70ec, 0xd0e4, 0x0108, 0xc2e5, 0x72ee,
13275 + 0xd0e4, 0x1118, 0x9294, 0x00c0, 0x0c01, 0x0005, 0x1d04, 0x0eae,
13276 + 0x2091, 0x6000, 0x1f04, 0x0eae, 0x0005, 0x890e, 0x810e, 0x810f,
13277 + 0x9194, 0x003f, 0x918c, 0xffc0, 0x0005, 0x0006, 0x2200, 0x914d,
13278 + 0x894f, 0x894d, 0x894d, 0x000e, 0x000e, 0x0005, 0x01d6, 0x0146,
13279 + 0x0036, 0x0096, 0x2061, 0x1882, 0x600b, 0x0000, 0x600f, 0x0000,
13280 + 0x6003, 0x0000, 0x6007, 0x0000, 0x2009, 0xffc0, 0x2105, 0x0006,
13281 + 0x2001, 0xaaaa, 0x200f, 0x2019, 0x5555, 0x9016, 0x2049, 0x0bff,
13282 + 0xab02, 0xa001, 0xa001, 0xa800, 0x9306, 0x1138, 0x2105, 0x9306,
13283 + 0x0120, 0x8210, 0x99c8, 0x0400, 0x0c98, 0x000e, 0x200f, 0x2001,
13284 + 0x1892, 0x928a, 0x000e, 0x1638, 0x928a, 0x0006, 0x2011, 0x0006,
13285 + 0x1210, 0x2011, 0x0000, 0x2202, 0x9006, 0x2008, 0x82ff, 0x01b0,
13286 + 0x8200, 0x600a, 0x600f, 0xffff, 0x6003, 0x0002, 0x6007, 0x0000,
13287 + 0x0026, 0x2019, 0x0010, 0x9280, 0x0001, 0x20e8, 0x21a0, 0x21a8,
13288 + 0x4104, 0x8319, 0x1de0, 0x8211, 0x1da0, 0x002e, 0x009e, 0x003e,
13289 + 0x014e, 0x01de, 0x0005, 0x2011, 0x000e, 0x08e8, 0x0016, 0x0026,
13290 + 0x0096, 0x3348, 0x080c, 0x0eb5, 0x2100, 0x9300, 0x2098, 0x22e0,
13291 + 0x009e, 0x002e, 0x001e, 0x0036, 0x3518, 0x20a9, 0x0001, 0x4002,
13292 + 0x8007, 0x4004, 0x8319, 0x1dd8, 0x003e, 0x0005, 0x20e9, 0x0001,
13293 + 0x71b0, 0x81ff, 0x11c0, 0x9006, 0x2009, 0x0200, 0x20a9, 0x0002,
13294 + 0x9298, 0x0018, 0x23a0, 0x4001, 0x2009, 0x0700, 0x20a9, 0x0002,
13295 + 0x9298, 0x0008, 0x23a0, 0x4001, 0x7074, 0x8007, 0x7178, 0x810f,
13296 + 0x20a9, 0x0002, 0x4001, 0x9298, 0x000c, 0x23a0, 0x900e, 0x080c,
13297 + 0x0d6b, 0x2001, 0x0000, 0x810f, 0x20a9, 0x0002, 0x4001, 0x0005,
13298 + 0x89ff, 0x0140, 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x0fe0,
13299 + 0x009e, 0x0cb0, 0x0005, 0x00e6, 0x2071, 0x1800, 0x080c, 0x1057,
13300 + 0x090c, 0x0d84, 0x00ee, 0x0005, 0x0086, 0x00e6, 0x0006, 0x0026,
13301 + 0x0036, 0x0126, 0x2091, 0x8000, 0x00c9, 0x2071, 0x1800, 0x73bc,
13302 + 0x702c, 0x9016, 0x9045, 0x0158, 0x8210, 0x9906, 0x090c, 0x0d84,
13303 + 0x2300, 0x9202, 0x0120, 0x1a0c, 0x0d84, 0xa000, 0x0c98, 0x012e,
13304 + 0x003e, 0x002e, 0x000e, 0x00ee, 0x008e, 0x0005, 0x0086, 0x00e6,
13305 + 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x1904, 0x7010, 0x9005,
13306 + 0x0140, 0x7018, 0x9045, 0x0128, 0x9906, 0x090c, 0x0d84, 0xa000,
13307 + 0x0cc8, 0x012e, 0x000e, 0x00ee, 0x008e, 0x0005, 0x00e6, 0x2071,
13308 + 0x1800, 0x0126, 0x2091, 0x8000, 0x70bc, 0x8001, 0x0270, 0x70be,
13309 + 0x702c, 0x2048, 0x9085, 0x0001, 0xa800, 0x702e, 0xa803, 0x0000,
13310 + 0xa807, 0x0000, 0x012e, 0x00ee, 0x0005, 0x904e, 0x0cd8, 0x00e6,
13311 + 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x70bc, 0x90ca, 0x0040,
13312 + 0x0268, 0x8001, 0x70be, 0x702c, 0x2048, 0xa800, 0x702e, 0xa803,
13313 + 0x0000, 0xa807, 0x0000, 0x012e, 0x00ee, 0x0005, 0x904e, 0x0cd8,
13314 + 0x00e6, 0x0126, 0x2091, 0x8000, 0x0016, 0x890e, 0x810e, 0x810f,
13315 + 0x9184, 0x003f, 0xa862, 0x9184, 0xffc0, 0xa85e, 0x001e, 0x0020,
13316 + 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x702c, 0xa802,
13317 + 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x012e, 0x00ee, 0x0005,
13318 + 0x2071, 0x1800, 0x9026, 0x2009, 0x0000, 0x2049, 0x0400, 0x2900,
13319 + 0x702e, 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001, 0x8420,
13320 + 0x9886, 0x0440, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90, 0x2071,
13321 + 0x1882, 0x7000, 0x9005, 0x11a0, 0x2001, 0x0534, 0xa802, 0x2048,
13322 + 0x2009, 0x4d00, 0x8940, 0x2800, 0xa802, 0xa95e, 0xa863, 0x0001,
13323 + 0x8420, 0x9886, 0x0800, 0x0120, 0x2848, 0x9188, 0x0040, 0x0c90,
13324 + 0x2071, 0x1882, 0x7104, 0x7200, 0x82ff, 0x01d0, 0x7308, 0x8318,
13325 + 0x831f, 0x831b, 0x831b, 0x7312, 0x8319, 0x2001, 0x0800, 0xa802,
13326 + 0x2048, 0x8900, 0xa802, 0x2040, 0xa95e, 0xaa62, 0x8420, 0x2300,
13327 + 0x9906, 0x0130, 0x2848, 0x9188, 0x0040, 0x9291, 0x0000, 0x0c88,
13328 + 0xa803, 0x0000, 0x2071, 0x1800, 0x74ba, 0x74be, 0x0005, 0x00e6,
13329 + 0x0016, 0x9984, 0xfc00, 0x01e8, 0x908c, 0xf800, 0x1168, 0x9982,
13330 + 0x0400, 0x02b8, 0x9982, 0x0440, 0x0278, 0x9982, 0x0534, 0x0288,
13331 + 0x9982, 0x0800, 0x1270, 0x0040, 0x9982, 0x0800, 0x0250, 0x2071,
13332 + 0x1882, 0x7010, 0x9902, 0x1228, 0x9085, 0x0001, 0x001e, 0x00ee,
13333 + 0x0005, 0x9006, 0x0cd8, 0x00e6, 0x2071, 0x19e6, 0x7007, 0x0000,
13334 + 0x9006, 0x701e, 0x7022, 0x7002, 0x2071, 0x0000, 0x7010, 0x9085,
13335 + 0x8004, 0x7012, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6,
13336 + 0xa06f, 0x0000, 0x2071, 0x19e6, 0x701c, 0x9088, 0x19f0, 0x280a,
13337 + 0x8000, 0x9084, 0x003f, 0x701e, 0x7120, 0x9106, 0x090c, 0x0d84,
13338 + 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x00a9, 0x00fe,
13339 + 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, 0x2071,
13340 + 0x19e6, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x0021,
13341 + 0x00fe, 0x00ee, 0x012e, 0x0005, 0x7004, 0x9086, 0x0000, 0x1110,
13342 + 0x7007, 0x0006, 0x7000, 0x0002, 0x10ce, 0x10cc, 0x10cc, 0x10cc,
13343 + 0x1234, 0x1234, 0x1234, 0x1234, 0x080c, 0x0d84, 0x701c, 0x7120,
13344 + 0x9106, 0x1148, 0x792c, 0x9184, 0x0001, 0x1120, 0xd1fc, 0x1110,
13345 + 0x7007, 0x0000, 0x0005, 0x0096, 0x9180, 0x19f0, 0x2004, 0x700a,
13346 + 0x2048, 0x8108, 0x918c, 0x003f, 0x7122, 0x782b, 0x0026, 0xa88c,
13347 + 0x7802, 0xa890, 0x7806, 0xa894, 0x780a, 0xa898, 0x780e, 0xa878,
13348 + 0x700e, 0xa870, 0x7016, 0xa874, 0x701a, 0xa868, 0x009e, 0xd084,
13349 + 0x0120, 0x7007, 0x0001, 0x0029, 0x0005, 0x7007, 0x0002, 0x00b1,
13350 + 0x0005, 0x0016, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, 0x0040,
13351 + 0x1210, 0x2110, 0x9006, 0x700e, 0x7212, 0x8203, 0x7812, 0x782b,
13352 + 0x0020, 0x782b, 0x0041, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026,
13353 + 0x0136, 0x0146, 0x0156, 0x7014, 0x20e0, 0x7018, 0x2098, 0x20e9,
13354 + 0x0000, 0x20a1, 0x0088, 0x782b, 0x0026, 0x710c, 0x2011, 0x0040,
13355 + 0x9182, 0x0040, 0x1210, 0x2110, 0x9006, 0x700e, 0x22a8, 0x4006,
13356 + 0x8203, 0x7812, 0x782b, 0x0020, 0x3300, 0x701a, 0x782b, 0x0001,
13357 + 0x015e, 0x014e, 0x013e, 0x002e, 0x001e, 0x0005, 0x2009, 0x19e6,
13358 + 0x2104, 0xc095, 0x200a, 0x080c, 0x10ab, 0x0005, 0x0016, 0x00e6,
13359 + 0x2071, 0x19e6, 0x00f6, 0x2079, 0x0080, 0x792c, 0x782b, 0x0002,
13360 + 0xd1fc, 0x0120, 0x918c, 0x0700, 0x7004, 0x0023, 0x00fe, 0x00ee,
13361 + 0x001e, 0x0005, 0x10bc, 0x1161, 0x1195, 0x0d84, 0x0d84, 0x1240,
13362 + 0x0d84, 0x918c, 0x0700, 0x1550, 0x0136, 0x0146, 0x0156, 0x7014,
13363 + 0x20e8, 0x7018, 0x20a0, 0x20e1, 0x0000, 0x2099, 0x0088, 0x782b,
13364 + 0x0040, 0x7010, 0x20a8, 0x4005, 0x3400, 0x701a, 0x015e, 0x014e,
13365 + 0x013e, 0x700c, 0x9005, 0x0578, 0x7800, 0x7802, 0x7804, 0x7806,
13366 + 0x080c, 0x1101, 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0100,
13367 + 0x009e, 0x7007, 0x0000, 0x080c, 0x10bc, 0x0005, 0x7008, 0x0096,
13368 + 0x2048, 0xa86f, 0x0200, 0x009e, 0x0ca0, 0x918c, 0x0700, 0x1150,
13369 + 0x700c, 0x9005, 0x0180, 0x7800, 0x7802, 0x7804, 0x7806, 0x080c,
13370 + 0x1116, 0x0005, 0x7008, 0x0096, 0x2048, 0xa86f, 0x0200, 0x009e,
13371 + 0x7007, 0x0000, 0x0080, 0x0096, 0x7008, 0x2048, 0x7800, 0xa88e,
13372 + 0x7804, 0xa892, 0x7808, 0xa896, 0x780c, 0xa89a, 0xa86f, 0x0100,
13373 + 0x009e, 0x7007, 0x0000, 0x0096, 0x00d6, 0x7008, 0x2048, 0x2001,
13374 + 0x18ad, 0x2004, 0x9906, 0x1128, 0xa89c, 0x080f, 0x00de, 0x009e,
13375 + 0x00a0, 0x00de, 0x009e, 0x0096, 0x00d6, 0x7008, 0x2048, 0x0081,
13376 + 0x0150, 0xa89c, 0x0086, 0x2940, 0x080f, 0x008e, 0x00de, 0x009e,
13377 + 0x080c, 0x10ab, 0x0005, 0x00de, 0x009e, 0x080c, 0x10ab, 0x0005,
13378 + 0xa8a8, 0xd08c, 0x0005, 0x0096, 0xa0a0, 0x904d, 0x090c, 0x0d84,
13379 + 0xa06c, 0x908e, 0x0100, 0x0130, 0xa87b, 0x0030, 0xa883, 0x0000,
13380 + 0xa897, 0x4002, 0x080c, 0x619c, 0xa09f, 0x0000, 0xa0a3, 0x0000,
13381 + 0x2848, 0x080c, 0x0fe0, 0x009e, 0x0005, 0x00a6, 0xa0a0, 0x904d,
13382 + 0x090c, 0x0d84, 0xa06c, 0x908e, 0x0100, 0x0128, 0xa87b, 0x0001,
13383 + 0xa883, 0x0000, 0x00c0, 0xa80c, 0x2050, 0xb004, 0x9005, 0x0198,
13384 + 0xa80e, 0x2050, 0x8006, 0x8006, 0x8007, 0x908c, 0x003f, 0x9084,
13385 + 0xffc0, 0x9080, 0x0002, 0xa076, 0xa172, 0xb000, 0xa07a, 0x2810,
13386 + 0x080c, 0x108c, 0x0078, 0xa97c, 0xa894, 0x0016, 0x0006, 0x080c,
13387 + 0x619c, 0x000e, 0x001e, 0xd1f4, 0x0128, 0x00c6, 0x2060, 0x080c,
13388 + 0x9554, 0x00ce, 0x00ae, 0x0005, 0x0126, 0x2091, 0x8000, 0x782b,
13389 + 0x1001, 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, 0x012e, 0x0005,
13390 + 0x7007, 0x0000, 0x080c, 0x10bc, 0x0005, 0x0126, 0x2091, 0x2200,
13391 + 0x2079, 0x0300, 0x2071, 0x1a30, 0x7003, 0x0000, 0x78bf, 0x00f6,
13392 + 0x00c1, 0x7803, 0x0003, 0x780f, 0x0000, 0x20a9, 0x01ec, 0x2061,
13393 + 0xcd39, 0x2c0d, 0x7912, 0xe104, 0x9ce0, 0x0002, 0x7916, 0x1f04,
13394 + 0x1259, 0x7807, 0x0001, 0x7803, 0x0000, 0x7803, 0x0001, 0x012e,
13395 + 0x0005, 0x00c6, 0x7803, 0x0000, 0x7808, 0xd09c, 0x0110, 0x7820,
13396 + 0x0cd8, 0x2001, 0x1a31, 0x2003, 0x0000, 0x78ab, 0x0004, 0x78ac,
13397 + 0xd0ac, 0x1de8, 0x78ab, 0x0002, 0x7807, 0x0001, 0x7827, 0x0030,
13398 + 0x782b, 0x0400, 0x7827, 0x0031, 0x782b, 0x1a45, 0x781f, 0xff00,
13399 + 0x781b, 0xff00, 0x2001, 0x0200, 0x2004, 0xd0dc, 0x0110, 0x781f,
13400 + 0x0303, 0x2061, 0x1a45, 0x602f, 0x1cd0, 0x2001, 0x1818, 0x2004,
13401 + 0x9082, 0x1cd0, 0x6032, 0x603b, 0x1cdd, 0x00ce, 0x0005, 0x0126,
13402 + 0x2091, 0x2200, 0x7808, 0xd09c, 0x0158, 0x7820, 0x908c, 0xf000,
13403 + 0x1588, 0x908a, 0x0021, 0x1a0c, 0x0d84, 0x0043, 0x012e, 0x0005,
13404 + 0x9084, 0x0070, 0x190c, 0x0d84, 0x012e, 0x0005, 0x12d8, 0x12d8,
13405 + 0x12e1, 0x12e6, 0x12ea, 0x12ef, 0x1317, 0x131b, 0x1329, 0x132d,
13406 + 0x12d8, 0x13b6, 0x13ba, 0x141a, 0x12d8, 0x12d8, 0x12d8, 0x12d8,
13407 + 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8,
13408 + 0x12d8, 0x12f1, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8, 0x12d8,
13409 + 0x080c, 0x0d84, 0x2009, 0x0048, 0x2060, 0x080c, 0x95ce, 0x012e,
13410 + 0x0005, 0x7004, 0xc085, 0xc0b5, 0x7006, 0x0005, 0x7004, 0xc085,
13411 + 0x7006, 0x0005, 0x080c, 0x1421, 0x080c, 0x14c5, 0x0005, 0x080c,
13412 + 0x0d84, 0x080c, 0x1421, 0x2060, 0x6014, 0x0096, 0x2048, 0xa83b,
13413 + 0xffff, 0x009e, 0x2009, 0x0048, 0x080c, 0x95ce, 0x2001, 0x015d,
13414 + 0x2003, 0x0000, 0x2009, 0x03e8, 0x8109, 0x0160, 0x2001, 0x0201,
13415 + 0x2004, 0x9005, 0x0dc8, 0x2001, 0x0218, 0x2004, 0xd0ec, 0x1110,
13416 + 0x080c, 0x1426, 0x2001, 0x0307, 0x2003, 0x8000, 0x0005, 0x7004,
13417 + 0xc095, 0x7006, 0x0005, 0x080c, 0x1421, 0x2060, 0x6014, 0x0096,
13418 + 0x2048, 0xa83b, 0xffff, 0x009e, 0x2009, 0x0048, 0x080c, 0x95ce,
13419 + 0x0005, 0x080c, 0x1421, 0x080c, 0x0d84, 0x080c, 0x1421, 0x080c,
13420 + 0x13a1, 0x7827, 0x0018, 0x79ac, 0xd1dc, 0x0540, 0x7827, 0x0015,
13421 + 0x7828, 0x782b, 0x0000, 0x9065, 0x0138, 0x2001, 0x020d, 0x2003,
13422 + 0x0050, 0x2003, 0x0020, 0x0400, 0x7004, 0x9005, 0x1180, 0x78ab,
13423 + 0x0004, 0x7827, 0x0018, 0x782b, 0x0000, 0xd1bc, 0x090c, 0x0d84,
13424 + 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x0478, 0x78ab,
13425 + 0x0004, 0x7803, 0x0001, 0x080c, 0x13ba, 0x0005, 0x7828, 0x782b,
13426 + 0x0000, 0x9065, 0x090c, 0x0d84, 0x6014, 0x2048, 0x78ab, 0x0004,
13427 + 0x918c, 0x0700, 0x0198, 0x080c, 0x724d, 0x080c, 0x1827, 0x080c,
13428 + 0xb0ad, 0x0158, 0xa9ac, 0xa936, 0xa9b0, 0xa93a, 0xa83f, 0xffff,
13429 + 0xa843, 0xffff, 0xa880, 0xc0bd, 0xa882, 0x0005, 0x6010, 0x00b6,
13430 + 0x2058, 0xb800, 0x00be, 0xd0bc, 0x190c, 0xb456, 0x2029, 0x00c8,
13431 + 0x8529, 0x0128, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x7dbc,
13432 + 0x080c, 0xcce2, 0xd5a4, 0x1118, 0x080c, 0x1426, 0x0005, 0x080c,
13433 + 0x724d, 0x080c, 0x1827, 0x0005, 0x781f, 0x0300, 0x7803, 0x0001,
13434 + 0x0005, 0x0016, 0x0066, 0x0076, 0x00f6, 0x2079, 0x0300, 0x7908,
13435 + 0x918c, 0x0007, 0x9186, 0x0003, 0x0120, 0x2001, 0x0016, 0x080c,
13436 + 0x1492, 0x00fe, 0x007e, 0x006e, 0x001e, 0x0005, 0x7004, 0xc09d,
13437 + 0x7006, 0x0005, 0x7104, 0x9184, 0x0004, 0x190c, 0x0d84, 0xd184,
13438 + 0x1189, 0xd19c, 0x0158, 0xc19c, 0x7106, 0x2001, 0x020d, 0x2003,
13439 + 0x0050, 0x2003, 0x0020, 0x080c, 0x1426, 0x0005, 0x81ff, 0x190c,
13440 + 0x0d84, 0x0005, 0xc184, 0xd1b4, 0xc1b4, 0x7106, 0x0016, 0x00e6,
13441 + 0x15c8, 0x2071, 0x0200, 0x080c, 0x14b9, 0x6014, 0x9005, 0x0590,
13442 + 0x0096, 0x2048, 0xa864, 0x009e, 0x9084, 0x00ff, 0x908e, 0x0029,
13443 + 0x0148, 0x908e, 0x0048, 0x1530, 0x00f6, 0x2c78, 0x080c, 0x150d,
13444 + 0x00fe, 0x00a8, 0x00f6, 0x2c78, 0x080c, 0x163f, 0x00fe, 0x2009,
13445 + 0x01f4, 0x8109, 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8,
13446 + 0x2001, 0x0218, 0x2004, 0xd0ec, 0x1110, 0x0401, 0x0040, 0x2001,
13447 + 0x020d, 0x2003, 0x0020, 0x080c, 0x1269, 0x7803, 0x0001, 0x00ee,
13448 + 0x001e, 0x0005, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020,
13449 + 0x0069, 0x0ca8, 0x0031, 0x2060, 0x2009, 0x0053, 0x080c, 0x95ce,
13450 + 0x0005, 0x7808, 0xd09c, 0x0de8, 0x7820, 0x0005, 0x080c, 0x13a1,
13451 + 0x00d6, 0x2069, 0x0200, 0x2009, 0x01f4, 0x8109, 0x0508, 0x6804,
13452 + 0x9005, 0x0dd8, 0x2001, 0x015d, 0x2003, 0x0000, 0x79bc, 0xd1a4,
13453 + 0x1520, 0x79b8, 0x918c, 0x0fff, 0x0178, 0x9182, 0x0841, 0x1260,
13454 + 0x9188, 0x0007, 0x918c, 0x0ff8, 0x810c, 0x810c, 0x810c, 0x04e1,
13455 + 0x6827, 0x0001, 0x8109, 0x1dd8, 0x04b9, 0x6827, 0x0002, 0x04a1,
13456 + 0x6804, 0x9005, 0x1130, 0x682c, 0xd0e4, 0x11e0, 0x6804, 0x9005,
13457 + 0x0de8, 0x79b8, 0xd1ec, 0x1130, 0x08c8, 0x080c, 0x724d, 0x080c,
13458 + 0x1827, 0x0070, 0x7827, 0x0015, 0x782b, 0x0000, 0x2001, 0x020d,
13459 + 0x2003, 0x0020, 0x2001, 0x0307, 0x2003, 0x0300, 0x7803, 0x0001,
13460 + 0x00de, 0x0005, 0x682c, 0x9084, 0x5400, 0x9086, 0x5400, 0x0d50,
13461 + 0x7827, 0x0015, 0x782b, 0x0000, 0x7803, 0x0001, 0x6800, 0x9085,
13462 + 0x1800, 0x6802, 0x00de, 0x0005, 0x6824, 0x9084, 0x0003, 0x1de0,
13463 + 0x0005, 0x2001, 0x0030, 0x2c08, 0x621c, 0x0021, 0x7830, 0x9086,
13464 + 0x0041, 0x0005, 0x00f6, 0x2079, 0x0300, 0x0006, 0x7808, 0xd09c,
13465 + 0x0140, 0x0016, 0x0026, 0x00c6, 0x080c, 0x129f, 0x00ce, 0x002e,
13466 + 0x001e, 0x000e, 0x0006, 0x7832, 0x7936, 0x7a3a, 0x781b, 0x8080,
13467 + 0x2009, 0xff00, 0x8109, 0x0130, 0x7818, 0xd0bc, 0x1dd8, 0x000e,
13468 + 0x00fe, 0x0005, 0x000e, 0x792c, 0x3900, 0x8000, 0x2004, 0x080c,
13469 + 0x0d84, 0x7037, 0x0001, 0x7150, 0x7037, 0x0002, 0x7050, 0x2060,
13470 + 0xd1bc, 0x1110, 0x7054, 0x2060, 0x0005, 0x00e6, 0x0016, 0x2071,
13471 + 0x0200, 0x0c79, 0x7358, 0x745c, 0x6014, 0x905d, 0x0598, 0x2b48,
13472 + 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x190c, 0xb431,
13473 + 0xab42, 0xac3e, 0x2001, 0x1874, 0x2004, 0xd0b4, 0x1170, 0x601c,
13474 + 0xd0e4, 0x1158, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc,
13475 + 0x1120, 0xa83b, 0x7fff, 0xa837, 0xffff, 0x080c, 0x1cfd, 0x1190,
13476 + 0x080c, 0x168e, 0x2a00, 0xa816, 0x0130, 0x2800, 0xa80e, 0x2c05,
13477 + 0xa80a, 0x2c00, 0xa812, 0x7037, 0x0020, 0x781f, 0x0300, 0x001e,
13478 + 0x00ee, 0x0005, 0x7037, 0x0050, 0x7037, 0x0020, 0x001e, 0x00ee,
13479 + 0x080c, 0x1426, 0x0005, 0x080c, 0x0d84, 0x2ff0, 0x0126, 0x2091,
13480 + 0x2200, 0x3e60, 0x6014, 0x2048, 0x2940, 0x903e, 0x2730, 0xa864,
13481 + 0x2068, 0xa81a, 0x9d84, 0x000f, 0x9088, 0x1cdd, 0x2165, 0x0002,
13482 + 0x1537, 0x1584, 0x1537, 0x1537, 0x1537, 0x1566, 0x1537, 0x153b,
13483 + 0x1530, 0x157b, 0x1537, 0x1537, 0x1537, 0x1537, 0x154f, 0x1545,
13484 + 0xa964, 0x918c, 0x00ff, 0x918e, 0x0048, 0x0904, 0x157b, 0x9085,
13485 + 0x0001, 0x0804, 0x1637, 0xa87c, 0xd0bc, 0x0dc8, 0xa890, 0xa842,
13486 + 0xa88c, 0xa83e, 0xa888, 0x0804, 0x158b, 0xa87c, 0xd0bc, 0x0d78,
13487 + 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa888, 0x0804, 0x15da, 0xa87c,
13488 + 0xd0bc, 0x0d28, 0xa890, 0xa842, 0xa88c, 0xa83e, 0xa804, 0x9045,
13489 + 0x090c, 0x0d84, 0xa164, 0xa91a, 0x91ec, 0x000f, 0x9d80, 0x1cdd,
13490 + 0x2065, 0xa888, 0xd19c, 0x1904, 0x15da, 0x0428, 0xa87c, 0xd0ac,
13491 + 0x0970, 0xa804, 0x9045, 0x090c, 0x0d84, 0xa164, 0xa91a, 0x91ec,
13492 + 0x000f, 0x9d80, 0x1cdd, 0x2065, 0x9006, 0xa842, 0xa83e, 0xd19c,
13493 + 0x1904, 0x15da, 0x0080, 0xa87c, 0xd0ac, 0x0904, 0x1537, 0x9006,
13494 + 0xa842, 0xa83e, 0x0804, 0x15da, 0xa87c, 0xd0ac, 0x0904, 0x1537,
13495 + 0x9006, 0xa842, 0xa83e, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0d84,
13496 + 0x9082, 0x001b, 0x0002, 0x15ae, 0x15ae, 0x15b0, 0x15ae, 0x15ae,
13497 + 0x15ae, 0x15b6, 0x15ae, 0x15ae, 0x15ae, 0x15bc, 0x15ae, 0x15ae,
13498 + 0x15ae, 0x15c2, 0x15ae, 0x15ae, 0x15ae, 0x15c8, 0x15ae, 0x15ae,
13499 + 0x15ae, 0x15ce, 0x15ae, 0x15ae, 0x15ae, 0x15d4, 0x080c, 0x0d84,
13500 + 0xa574, 0xa478, 0xa37c, 0xa280, 0x0804, 0x161f, 0xa584, 0xa488,
13501 + 0xa38c, 0xa290, 0x0804, 0x161f, 0xa594, 0xa498, 0xa39c, 0xa2a0,
13502 + 0x0804, 0x161f, 0xa5a4, 0xa4a8, 0xa3ac, 0xa2b0, 0x0804, 0x161f,
13503 + 0xa5b4, 0xa4b8, 0xa3bc, 0xa2c0, 0x0804, 0x161f, 0xa5c4, 0xa4c8,
13504 + 0xa3cc, 0xa2d0, 0x0804, 0x161f, 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0,
13505 + 0x0804, 0x161f, 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082,
13506 + 0x001b, 0x0002, 0x15fd, 0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x15fb,
13507 + 0x1604, 0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x160b, 0x15fb,
13508 + 0x15fb, 0x15fb, 0x15fb, 0x15fb, 0x1612, 0x15fb, 0x15fb, 0x15fb,
13509 + 0x15fb, 0x15fb, 0x1619, 0x080c, 0x0d84, 0xa56c, 0xa470, 0xa774,
13510 + 0xa678, 0xa37c, 0xa280, 0x00d8, 0xa584, 0xa488, 0xa78c, 0xa690,
13511 + 0xa394, 0xa298, 0x00a0, 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac,
13512 + 0xa2b0, 0x0068, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8,
13513 + 0x0030, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0xab2e,
13514 + 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a, 0xa988, 0x8c60, 0x2c1d,
13515 + 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0x8109, 0xa916, 0x1150, 0x3e60,
13516 + 0x601c, 0xc085, 0x601e, 0xa87c, 0xc0dd, 0xa87e, 0x9006, 0x012e,
13517 + 0x0005, 0x2800, 0xa80e, 0xab0a, 0x2c00, 0xa812, 0x0c80, 0x2ff0,
13518 + 0x0126, 0x2091, 0x2200, 0x3e60, 0x6014, 0x2048, 0x2940, 0xa80e,
13519 + 0x2061, 0x1cd8, 0xa80b, 0x1cd8, 0x2c05, 0xa812, 0xa964, 0xa91a,
13520 + 0xa87c, 0xd0ac, 0x090c, 0x0d84, 0x9006, 0xa842, 0xa83e, 0x2c05,
13521 + 0x908a, 0x0034, 0x1a0c, 0x0d84, 0xadcc, 0xacd0, 0xafd4, 0xaed8,
13522 + 0xabdc, 0xaae0, 0xab2e, 0xaa32, 0xad1e, 0xac22, 0xaf26, 0xae2a,
13523 + 0xa8ac, 0xaab0, 0xa836, 0xaa3a, 0xa988, 0x918a, 0x0002, 0xa916,
13524 + 0x1150, 0x3e60, 0x601c, 0xc085, 0x601e, 0xa87c, 0xc0dd, 0xa87e,
13525 + 0x9006, 0x012e, 0x0005, 0xa804, 0x9045, 0x090c, 0x0d84, 0xa80e,
13526 + 0xa064, 0xa81a, 0x9084, 0x000f, 0x9080, 0x1cdd, 0x2015, 0x82ff,
13527 + 0x090c, 0x0d84, 0xaa0a, 0x2205, 0xa812, 0x0c18, 0x903e, 0x2730,
13528 + 0xa880, 0xd0fc, 0x1190, 0x2d00, 0x0002, 0x1783, 0x16e5, 0x16e5,
13529 + 0x1783, 0x1783, 0x177d, 0x1783, 0x16e5, 0x1783, 0x1734, 0x1734,
13530 + 0x1783, 0x1783, 0x1783, 0x177a, 0x1734, 0xc0fc, 0xa882, 0xab2c,
13531 + 0xaa30, 0xad1c, 0xac20, 0xdd9c, 0x0904, 0x1785, 0x2c05, 0x908a,
13532 + 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x16d1, 0x16cf,
13533 + 0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16d5, 0x16cf, 0x16cf, 0x16cf,
13534 + 0x16cf, 0x16cf, 0x16d9, 0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16cf,
13535 + 0x16dd, 0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16cf, 0x16e1, 0x080c,
13536 + 0x0d84, 0xa774, 0xa678, 0x0804, 0x1785, 0xa78c, 0xa690, 0x0804,
13537 + 0x1785, 0xa7a4, 0xa6a8, 0x0804, 0x1785, 0xa7bc, 0xa6c0, 0x0804,
13538 + 0x1785, 0xa7d4, 0xa6d8, 0x0804, 0x1785, 0x2c05, 0x908a, 0x0036,
13539 + 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1708, 0x1708, 0x170a,
13540 + 0x1708, 0x1708, 0x1708, 0x1710, 0x1708, 0x1708, 0x1708, 0x1716,
13541 + 0x1708, 0x1708, 0x1708, 0x171c, 0x1708, 0x1708, 0x1708, 0x1722,
13542 + 0x1708, 0x1708, 0x1708, 0x1728, 0x1708, 0x1708, 0x1708, 0x172e,
13543 + 0x080c, 0x0d84, 0xa574, 0xa478, 0xa37c, 0xa280, 0x0804, 0x1785,
13544 + 0xa584, 0xa488, 0xa38c, 0xa290, 0x0804, 0x1785, 0xa594, 0xa498,
13545 + 0xa39c, 0xa2a0, 0x0804, 0x1785, 0xa5a4, 0xa4a8, 0xa3ac, 0xa2b0,
13546 + 0x0804, 0x1785, 0xa5b4, 0xa4b8, 0xa3bc, 0xa2c0, 0x0804, 0x1785,
13547 + 0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, 0x0804, 0x1785, 0xa5d4, 0xa4d8,
13548 + 0xa3dc, 0xa2e0, 0x0804, 0x1785, 0x2c05, 0x908a, 0x0034, 0x1a0c,
13549 + 0x0d84, 0x9082, 0x001b, 0x0002, 0x1757, 0x1755, 0x1755, 0x1755,
13550 + 0x1755, 0x1755, 0x175e, 0x1755, 0x1755, 0x1755, 0x1755, 0x1755,
13551 + 0x1765, 0x1755, 0x1755, 0x1755, 0x1755, 0x1755, 0x176c, 0x1755,
13552 + 0x1755, 0x1755, 0x1755, 0x1755, 0x1773, 0x080c, 0x0d84, 0xa56c,
13553 + 0xa470, 0xa774, 0xa678, 0xa37c, 0xa280, 0x0438, 0xa584, 0xa488,
13554 + 0xa78c, 0xa690, 0xa394, 0xa298, 0x0400, 0xa59c, 0xa4a0, 0xa7a4,
13555 + 0xa6a8, 0xa3ac, 0xa2b0, 0x00c8, 0xa5b4, 0xa4b8, 0xa7bc, 0xa6c0,
13556 + 0xa3c4, 0xa2c8, 0x0090, 0xa5cc, 0xa4d0, 0xa7d4, 0xa6d8, 0xa3dc,
13557 + 0xa2e0, 0x0058, 0x9d86, 0x000e, 0x1130, 0x080c, 0x1c9b, 0x1904,
13558 + 0x168e, 0x900e, 0x0050, 0x080c, 0x0d84, 0xab2e, 0xaa32, 0xad1e,
13559 + 0xac22, 0xaf26, 0xae2a, 0x080c, 0x1c9b, 0x0005, 0x6014, 0x2048,
13560 + 0x6118, 0x810c, 0x810c, 0x810c, 0x81ff, 0x1118, 0xa887, 0x0001,
13561 + 0x0008, 0xa986, 0x601b, 0x0002, 0xa974, 0xd1dc, 0x1108, 0x0005,
13562 + 0xa934, 0xa88c, 0x9106, 0x1158, 0xa938, 0xa890, 0x9106, 0x1138,
13563 + 0x601c, 0xc084, 0x601e, 0x2009, 0x0048, 0x0804, 0x95ce, 0x0005,
13564 + 0x0126, 0x00c6, 0x2091, 0x2200, 0x00ce, 0x7908, 0x918c, 0x0007,
13565 + 0x9186, 0x0000, 0x0904, 0x181c, 0x9186, 0x0003, 0x0904, 0x181c,
13566 + 0x6020, 0x6023, 0x0000, 0x0006, 0x2031, 0x0190, 0x00c6, 0x7808,
13567 + 0xd09c, 0x190c, 0x129f, 0x00ce, 0x2001, 0x0038, 0x2c08, 0x621c,
13568 + 0x080c, 0x1492, 0x7930, 0x9186, 0x0040, 0x0904, 0x1818, 0x9186,
13569 + 0x0042, 0x190c, 0x0d84, 0x2001, 0x001e, 0x8001, 0x1df0, 0x8631,
13570 + 0x1d28, 0x080c, 0x1876, 0x0026, 0x0056, 0x2001, 0x00d2, 0x8001,
13571 + 0x1df0, 0x2031, 0x2000, 0x8631, 0x1148, 0x080c, 0x724d, 0x04b9,
13572 + 0x601c, 0xc084, 0x601e, 0x005e, 0x002e, 0x0410, 0x2001, 0x020b,
13573 + 0x2004, 0xd0e4, 0x0d80, 0x2001, 0x015d, 0x2003, 0x0000, 0x78ab,
13574 + 0x0004, 0x2001, 0x0200, 0x200c, 0x918d, 0x1800, 0x2102, 0x080c,
13575 + 0x1269, 0x601c, 0xc084, 0x601e, 0x7803, 0x0000, 0x7803, 0x0001,
13576 + 0x005e, 0x002e, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202,
13577 + 0x000e, 0x6022, 0x012e, 0x0005, 0x601c, 0xc084, 0x601e, 0x7827,
13578 + 0x0015, 0x7828, 0x9c06, 0x1db0, 0x782b, 0x0000, 0x0c98, 0x00f6,
13579 + 0x2079, 0x0300, 0x7803, 0x0000, 0x78ab, 0x0004, 0x00fe, 0x080c,
13580 + 0x6877, 0x11b0, 0x2001, 0x0138, 0x2003, 0x0000, 0x2001, 0x0160,
13581 + 0x2003, 0x0000, 0x2011, 0x012c, 0xa001, 0xa001, 0x8211, 0x1de0,
13582 + 0x0081, 0x0066, 0x2031, 0x0000, 0x080c, 0x691e, 0x006e, 0x0005,
13583 + 0x0469, 0x0039, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202,
13584 + 0x0005, 0x00e6, 0x2071, 0x0200, 0x080c, 0x27fb, 0x2009, 0x003c,
13585 + 0x080c, 0x2014, 0x2001, 0x015d, 0x2003, 0x0000, 0x7000, 0x9084,
13586 + 0x003c, 0x1de0, 0x70a0, 0x70a2, 0x7098, 0x709a, 0x709c, 0x709e,
13587 + 0x2001, 0x020d, 0x2003, 0x0020, 0x00f6, 0x2079, 0x0300, 0x080c,
13588 + 0x1269, 0x7803, 0x0001, 0x00fe, 0x00ee, 0x0005, 0x2001, 0x0138,
13589 + 0x2014, 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000,
13590 + 0x080c, 0x6877, 0x1108, 0x0005, 0x2021, 0x0260, 0x2001, 0x0141,
13591 + 0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0x939c, 0x0048,
13592 + 0x1160, 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70,
13593 + 0x2001, 0x015d, 0x2003, 0x0000, 0x0005, 0x0046, 0x2021, 0x0019,
13594 + 0x2003, 0x0048, 0xa001, 0xa001, 0x201c, 0x939c, 0x0048, 0x0120,
13595 + 0x8421, 0x1db0, 0x004e, 0x0c60, 0x004e, 0x0c40, 0x0126, 0x2091,
13596 + 0x2400, 0x2071, 0x1a33, 0x2079, 0x0090, 0x012e, 0x0005, 0x9280,
13597 + 0x0005, 0x2004, 0x2048, 0xa97c, 0xd1dc, 0x1904, 0x1932, 0xa964,
13598 + 0x9184, 0x0007, 0x0002, 0x18cb, 0x191d, 0x18d2, 0x18d2, 0x18d2,
13599 + 0x1905, 0x18e5, 0x18d4, 0x2100, 0x9084, 0x00ff, 0x9086, 0x0048,
13600 + 0x0904, 0x191d, 0x080c, 0x0d84, 0xa87c, 0xd0b4, 0x0904, 0x1ae4,
13601 + 0xa890, 0xa842, 0xa83a, 0xa88c, 0xa83e, 0xa836, 0xa8ac, 0xa846,
13602 + 0xa8b0, 0xa84a, 0xa988, 0x0804, 0x1925, 0xa864, 0x9084, 0x00ff,
13603 + 0x9086, 0x001e, 0x1d38, 0xa87c, 0xd0b4, 0x0904, 0x1ae4, 0xa890,
13604 + 0xa842, 0xa83a, 0xa88c, 0xa83e, 0xa836, 0xa8ac, 0xa846, 0xa8b0,
13605 + 0xa84a, 0xa804, 0xa85a, 0x2040, 0xa064, 0x9084, 0x000f, 0x9080,
13606 + 0x1cdd, 0x2005, 0xa812, 0xa988, 0x0448, 0x918c, 0x00ff, 0x9186,
13607 + 0x0015, 0x1540, 0xa87c, 0xd0b4, 0x0904, 0x1ae4, 0xa804, 0xa85a,
13608 + 0x2040, 0xa064, 0x9084, 0x000f, 0x9080, 0x1cdd, 0x2005, 0xa812,
13609 + 0xa988, 0x9006, 0xa842, 0xa83e, 0x0088, 0xa87c, 0xd0b4, 0x0904,
13610 + 0x1ae4, 0xa988, 0x9006, 0xa842, 0xa83e, 0x2900, 0xa85a, 0xa864,
13611 + 0x9084, 0x000f, 0x9080, 0x1cdd, 0x2005, 0xa812, 0xa916, 0xa87c,
13612 + 0xc0dd, 0xa87e, 0x0005, 0x00f6, 0x2079, 0x0090, 0x782c, 0xd0fc,
13613 + 0x190c, 0x1b25, 0x00e6, 0x2071, 0x1a33, 0x7000, 0x9005, 0x1904,
13614 + 0x198c, 0x7206, 0x9280, 0x0005, 0x204c, 0x9280, 0x0004, 0x2004,
13615 + 0x782b, 0x0004, 0x00f6, 0x2079, 0x0200, 0x7803, 0x0040, 0x00fe,
13616 + 0x00b6, 0x2058, 0xb86c, 0x7836, 0xb890, 0x00be, 0x00f6, 0x2079,
13617 + 0x0200, 0x7803, 0x0040, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001,
13618 + 0xa001, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x00fe, 0xa814,
13619 + 0x2050, 0xa858, 0x2040, 0xa810, 0x2060, 0xa064, 0x90ec, 0x000f,
13620 + 0xa944, 0x791a, 0x7116, 0xa848, 0x781e, 0x701a, 0x9006, 0x700e,
13621 + 0x7012, 0x7004, 0xa940, 0xa838, 0x9106, 0x1188, 0xa93c, 0xa834,
13622 + 0x9106, 0x1168, 0x8aff, 0x01a8, 0x0126, 0x2091, 0x8000, 0x00a1,
13623 + 0x0108, 0x0091, 0x012e, 0x9006, 0x00ee, 0x00fe, 0x0005, 0x0036,
13624 + 0x0046, 0xab38, 0xac34, 0x080c, 0x1cfd, 0x004e, 0x003e, 0x0d50,
13625 + 0x0c98, 0x9085, 0x0001, 0x0c80, 0x0076, 0x0066, 0x0056, 0x0046,
13626 + 0x0036, 0x0026, 0x8aff, 0x0904, 0x1add, 0x700c, 0x7214, 0x923a,
13627 + 0x7010, 0x7218, 0x9203, 0x0a04, 0x1adc, 0x9705, 0x0904, 0x1adc,
13628 + 0x903e, 0x2730, 0xa880, 0xd0fc, 0x1190, 0x2d00, 0x0002, 0x1ac0,
13629 + 0x1a07, 0x1a07, 0x1ac0, 0x1ac0, 0x1aa3, 0x1ac0, 0x1a07, 0x1aa9,
13630 + 0x1a56, 0x1a56, 0x1ac0, 0x1ac0, 0x1ac0, 0x1a9d, 0x1a56, 0xc0fc,
13631 + 0xa882, 0xab2c, 0xaa30, 0xad1c, 0xac20, 0xdd9c, 0x0904, 0x1ac2,
13632 + 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002,
13633 + 0x19f3, 0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19f7, 0x19f1,
13634 + 0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19fb, 0x19f1, 0x19f1, 0x19f1,
13635 + 0x19f1, 0x19f1, 0x19ff, 0x19f1, 0x19f1, 0x19f1, 0x19f1, 0x19f1,
13636 + 0x1a03, 0x080c, 0x0d84, 0xa774, 0xa678, 0x0804, 0x1ac2, 0xa78c,
13637 + 0xa690, 0x0804, 0x1ac2, 0xa7a4, 0xa6a8, 0x0804, 0x1ac2, 0xa7bc,
13638 + 0xa6c0, 0x0804, 0x1ac2, 0xa7d4, 0xa6d8, 0x0804, 0x1ac2, 0x2c05,
13639 + 0x908a, 0x0036, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1a2a,
13640 + 0x1a2a, 0x1a2c, 0x1a2a, 0x1a2a, 0x1a2a, 0x1a32, 0x1a2a, 0x1a2a,
13641 + 0x1a2a, 0x1a38, 0x1a2a, 0x1a2a, 0x1a2a, 0x1a3e, 0x1a2a, 0x1a2a,
13642 + 0x1a2a, 0x1a44, 0x1a2a, 0x1a2a, 0x1a2a, 0x1a4a, 0x1a2a, 0x1a2a,
13643 + 0x1a2a, 0x1a50, 0x080c, 0x0d84, 0xa574, 0xa478, 0xa37c, 0xa280,
13644 + 0x0804, 0x1ac2, 0xa584, 0xa488, 0xa38c, 0xa290, 0x0804, 0x1ac2,
13645 + 0xa594, 0xa498, 0xa39c, 0xa2a0, 0x0804, 0x1ac2, 0xa5a4, 0xa4a8,
13646 + 0xa3ac, 0xa2b0, 0x0804, 0x1ac2, 0xa5b4, 0xa4b8, 0xa3bc, 0xa2c0,
13647 + 0x0804, 0x1ac2, 0xa5c4, 0xa4c8, 0xa3cc, 0xa2d0, 0x0804, 0x1ac2,
13648 + 0xa5d4, 0xa4d8, 0xa3dc, 0xa2e0, 0x0804, 0x1ac2, 0x2c05, 0x908a,
13649 + 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1a79, 0x1a77,
13650 + 0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a81, 0x1a77, 0x1a77, 0x1a77,
13651 + 0x1a77, 0x1a77, 0x1a88, 0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a77,
13652 + 0x1a8f, 0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a77, 0x1a96, 0x080c,
13653 + 0x0d84, 0xa56c, 0xa470, 0xa774, 0xa678, 0xa37c, 0xa280, 0x0804,
13654 + 0x1ac2, 0xa584, 0xa488, 0xa78c, 0xa690, 0xa394, 0xa298, 0x04d0,
13655 + 0xa59c, 0xa4a0, 0xa7a4, 0xa6a8, 0xa3ac, 0xa2b0, 0x0498, 0xa5b4,
13656 + 0xa4b8, 0xa7bc, 0xa6c0, 0xa3c4, 0xa2c8, 0x0460, 0xa5cc, 0xa4d0,
13657 + 0xa7d4, 0xa6d8, 0xa3dc, 0xa2e0, 0x0428, 0xa864, 0x9084, 0x00ff,
13658 + 0x9086, 0x001e, 0x11e8, 0x080c, 0x1c9b, 0x1904, 0x19a2, 0x900e,
13659 + 0x04a0, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0048, 0x190c, 0x0d84,
13660 + 0x00c6, 0x7004, 0x2060, 0x6004, 0x9086, 0x0043, 0x00ce, 0x0904,
13661 + 0x1a56, 0xab9c, 0x9016, 0xad8c, 0xac90, 0xaf94, 0xae98, 0x0010,
13662 + 0x080c, 0x0d84, 0x7b12, 0x7a16, 0x7d02, 0x7c06, 0x7f0a, 0x7e0e,
13663 + 0x782b, 0x0001, 0x7000, 0x8000, 0x7002, 0xa83c, 0x9300, 0xa83e,
13664 + 0xa840, 0x9201, 0xa842, 0x700c, 0x9300, 0x700e, 0x7010, 0x9201,
13665 + 0x7012, 0x080c, 0x1c9b, 0x0008, 0x9006, 0x002e, 0x003e, 0x004e,
13666 + 0x005e, 0x006e, 0x007e, 0x0005, 0x080c, 0x0d84, 0x0026, 0x2001,
13667 + 0x0105, 0x2003, 0x0010, 0x782b, 0x0004, 0x7003, 0x0000, 0x7004,
13668 + 0x2060, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0118, 0xa880, 0xc0bd,
13669 + 0xa882, 0x6020, 0x9086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8,
13670 + 0x2001, 0x00fa, 0x8001, 0x1df0, 0x60c8, 0x9206, 0x1dc0, 0x60c4,
13671 + 0xa89a, 0x60c8, 0xa896, 0x7004, 0x2060, 0x00c6, 0x080c, 0xad1e,
13672 + 0x00ce, 0x2001, 0x19c3, 0x2004, 0x9c06, 0x1160, 0x2009, 0x0040,
13673 + 0x080c, 0x2014, 0x080c, 0x901f, 0x2011, 0x0000, 0x080c, 0x8ea3,
13674 + 0x080c, 0x820b, 0x002e, 0x0804, 0x1c4d, 0x0126, 0x2091, 0x2400,
13675 + 0xa858, 0x2040, 0x792c, 0x782b, 0x0002, 0x9184, 0x0700, 0x1904,
13676 + 0x1ae6, 0x7000, 0x0002, 0x1c4d, 0x1b37, 0x1ba0, 0x1c4b, 0x8001,
13677 + 0x7002, 0xd19c, 0x1150, 0x8aff, 0x0590, 0x080c, 0x199c, 0x0904,
13678 + 0x1c4d, 0x080c, 0x199c, 0x0804, 0x1c4d, 0x782b, 0x0004, 0xd194,
13679 + 0x0148, 0xa880, 0xc0fc, 0xa882, 0x8aff, 0x11b8, 0xa87c, 0xc0f5,
13680 + 0xa87e, 0x0098, 0xab3c, 0xaa40, 0x7810, 0xa82e, 0x931a, 0x7814,
13681 + 0xa832, 0x9213, 0x7800, 0xa81e, 0x7804, 0xa822, 0xab3e, 0xaa42,
13682 + 0x080c, 0x1cb3, 0xa880, 0xc0fd, 0xa882, 0x2a00, 0xa816, 0x2800,
13683 + 0xa85a, 0x2c00, 0xa812, 0x7003, 0x0000, 0x0804, 0x1c4d, 0x00f6,
13684 + 0x0026, 0x781c, 0x0006, 0x7818, 0x0006, 0x2079, 0x0100, 0x7a14,
13685 + 0x9284, 0x1984, 0x9085, 0x0012, 0x7816, 0x0036, 0x2019, 0x1000,
13686 + 0x8319, 0x090c, 0x0d84, 0x7820, 0xd0bc, 0x1dd0, 0x003e, 0x79c8,
13687 + 0x000e, 0x9102, 0x001e, 0x0006, 0x0016, 0x79c4, 0x000e, 0x9103,
13688 + 0x78c6, 0x000e, 0x78ca, 0x9284, 0x1984, 0x9085, 0x0012, 0x7816,
13689 + 0x002e, 0x00fe, 0x782b, 0x0008, 0x7003, 0x0000, 0x0804, 0x1c4d,
13690 + 0x8001, 0x7002, 0xd194, 0x0170, 0x782c, 0xd0fc, 0x1904, 0x1b2a,
13691 + 0xd19c, 0x1904, 0x1c49, 0x8aff, 0x0904, 0x1c4d, 0x080c, 0x199c,
13692 + 0x0804, 0x1c4d, 0xab3c, 0xaa40, 0x080c, 0x1cb3, 0xdd9c, 0x1904,
13693 + 0x1c08, 0x2c05, 0x908a, 0x0036, 0x1a0c, 0x0d84, 0x9082, 0x001b,
13694 + 0x0002, 0x1bdc, 0x1bdc, 0x1bde, 0x1bdc, 0x1bdc, 0x1bdc, 0x1be4,
13695 + 0x1bdc, 0x1bdc, 0x1bdc, 0x1bea, 0x1bdc, 0x1bdc, 0x1bdc, 0x1bf0,
13696 + 0x1bdc, 0x1bdc, 0x1bdc, 0x1bf6, 0x1bdc, 0x1bdc, 0x1bdc, 0x1bfc,
13697 + 0x1bdc, 0x1bdc, 0x1bdc, 0x1c02, 0x080c, 0x0d84, 0xa07c, 0x931a,
13698 + 0xa080, 0x9213, 0x0804, 0x1b54, 0xa08c, 0x931a, 0xa090, 0x9213,
13699 + 0x0804, 0x1b54, 0xa09c, 0x931a, 0xa0a0, 0x9213, 0x0804, 0x1b54,
13700 + 0xa0ac, 0x931a, 0xa0b0, 0x9213, 0x0804, 0x1b54, 0xa0bc, 0x931a,
13701 + 0xa0c0, 0x9213, 0x0804, 0x1b54, 0xa0cc, 0x931a, 0xa0d0, 0x9213,
13702 + 0x0804, 0x1b54, 0xa0dc, 0x931a, 0xa0e0, 0x9213, 0x0804, 0x1b54,
13703 + 0x2c05, 0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002,
13704 + 0x1c2b, 0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c31, 0x1c29,
13705 + 0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c37, 0x1c29, 0x1c29, 0x1c29,
13706 + 0x1c29, 0x1c29, 0x1c3d, 0x1c29, 0x1c29, 0x1c29, 0x1c29, 0x1c29,
13707 + 0x1c43, 0x080c, 0x0d84, 0xa07c, 0x931a, 0xa080, 0x9213, 0x0804,
13708 + 0x1b54, 0xa094, 0x931a, 0xa098, 0x9213, 0x0804, 0x1b54, 0xa0ac,
13709 + 0x931a, 0xa0b0, 0x9213, 0x0804, 0x1b54, 0xa0c4, 0x931a, 0xa0c8,
13710 + 0x9213, 0x0804, 0x1b54, 0xa0dc, 0x931a, 0xa0e0, 0x9213, 0x0804,
13711 + 0x1b54, 0x0804, 0x1b52, 0x080c, 0x0d84, 0x012e, 0x0005, 0x00f6,
13712 + 0x00e6, 0x2071, 0x1a33, 0x7000, 0x9086, 0x0000, 0x0904, 0x1c98,
13713 + 0x2079, 0x0090, 0x2009, 0x0207, 0x210c, 0xd194, 0x01b8, 0x2009,
13714 + 0x020c, 0x210c, 0x9184, 0x0003, 0x0188, 0x080c, 0xcd2b, 0x2001,
13715 + 0x0133, 0x2004, 0x9005, 0x090c, 0x0d84, 0x0016, 0x2009, 0x0040,
13716 + 0x080c, 0x2014, 0x001e, 0x2001, 0x020c, 0x2102, 0x2009, 0x0206,
13717 + 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, 0x1120, 0x2009, 0x0040,
13718 + 0x080c, 0x2014, 0x782c, 0xd0fc, 0x09a8, 0x080c, 0x1b25, 0x7000,
13719 + 0x9086, 0x0000, 0x1978, 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8,
13720 + 0x2009, 0x0040, 0x080c, 0x2014, 0x782b, 0x0002, 0x7003, 0x0000,
13721 + 0x00ee, 0x00fe, 0x0005, 0x8c60, 0x2c05, 0x9005, 0x0110, 0x8a51,
13722 + 0x0005, 0xa004, 0x9005, 0x0168, 0xa85a, 0x2040, 0xa064, 0x9084,
13723 + 0x000f, 0x9080, 0x1cdd, 0x2065, 0x8cff, 0x090c, 0x0d84, 0x8a51,
13724 + 0x0005, 0x2050, 0x0005, 0x8a50, 0x8c61, 0x2c05, 0x9005, 0x1190,
13725 + 0x2800, 0x9906, 0x0120, 0xa000, 0x9005, 0x1108, 0x2900, 0x2040,
13726 + 0xa85a, 0xa064, 0x9084, 0x000f, 0x9080, 0x1ced, 0x2065, 0x8cff,
13727 + 0x090c, 0x0d84, 0x0005, 0x0000, 0x001d, 0x0021, 0x0025, 0x0029,
13728 + 0x002d, 0x0031, 0x0035, 0x0000, 0x001b, 0x0021, 0x0027, 0x002d,
13729 + 0x0033, 0x0000, 0x0000, 0x0023, 0x0000, 0x0000, 0x1cd0, 0x1ccc,
13730 + 0x0000, 0x0000, 0x1cda, 0x0000, 0x1cd0, 0x1cd7, 0x1cd7, 0x1cd4,
13731 + 0x0000, 0x0000, 0x0000, 0x1cda, 0x1cd7, 0x0000, 0x1cd2, 0x1cd2,
13732 + 0x0000, 0x0000, 0x1cda, 0x0000, 0x1cd2, 0x1cd8, 0x1cd8, 0x1cd8,
13733 + 0x0000, 0x0000, 0x0000, 0x1cda, 0x1cd8, 0x00c6, 0x00d6, 0x0086,
13734 + 0xab42, 0xac3e, 0xa888, 0x9055, 0x0904, 0x1ed4, 0x2940, 0xa064,
13735 + 0x90ec, 0x000f, 0x9de0, 0x1cdd, 0x9d86, 0x0007, 0x0130, 0x9d86,
13736 + 0x000e, 0x0118, 0x9d86, 0x000f, 0x1120, 0xa08c, 0x9422, 0xa090,
13737 + 0x931b, 0x2c05, 0x9065, 0x1140, 0x0310, 0x0804, 0x1ed4, 0xa004,
13738 + 0x9045, 0x0904, 0x1ed4, 0x0c18, 0x2c05, 0x9005, 0x0904, 0x1dbc,
13739 + 0xdd9c, 0x1904, 0x1d78, 0x908a, 0x0036, 0x1a0c, 0x0d84, 0x9082,
13740 + 0x001b, 0x0002, 0x1d4d, 0x1d4d, 0x1d4f, 0x1d4d, 0x1d4d, 0x1d4d,
13741 + 0x1d55, 0x1d4d, 0x1d4d, 0x1d4d, 0x1d5b, 0x1d4d, 0x1d4d, 0x1d4d,
13742 + 0x1d61, 0x1d4d, 0x1d4d, 0x1d4d, 0x1d67, 0x1d4d, 0x1d4d, 0x1d4d,
13743 + 0x1d6d, 0x1d4d, 0x1d4d, 0x1d4d, 0x1d73, 0x080c, 0x0d84, 0xa07c,
13744 + 0x9422, 0xa080, 0x931b, 0x0804, 0x1db2, 0xa08c, 0x9422, 0xa090,
13745 + 0x931b, 0x0804, 0x1db2, 0xa09c, 0x9422, 0xa0a0, 0x931b, 0x0804,
13746 + 0x1db2, 0xa0ac, 0x9422, 0xa0b0, 0x931b, 0x0804, 0x1db2, 0xa0bc,
13747 + 0x9422, 0xa0c0, 0x931b, 0x0804, 0x1db2, 0xa0cc, 0x9422, 0xa0d0,
13748 + 0x931b, 0x0804, 0x1db2, 0xa0dc, 0x9422, 0xa0e0, 0x931b, 0x04d0,
13749 + 0x908a, 0x0034, 0x1a0c, 0x0d84, 0x9082, 0x001b, 0x0002, 0x1d9a,
13750 + 0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1d9f, 0x1d98, 0x1d98,
13751 + 0x1d98, 0x1d98, 0x1d98, 0x1da4, 0x1d98, 0x1d98, 0x1d98, 0x1d98,
13752 + 0x1d98, 0x1da9, 0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1d98, 0x1dae,
13753 + 0x080c, 0x0d84, 0xa07c, 0x9422, 0xa080, 0x931b, 0x0098, 0xa094,
13754 + 0x9422, 0xa098, 0x931b, 0x0070, 0xa0ac, 0x9422, 0xa0b0, 0x931b,
13755 + 0x0048, 0xa0c4, 0x9422, 0xa0c8, 0x931b, 0x0020, 0xa0dc, 0x9422,
13756 + 0xa0e0, 0x931b, 0x0630, 0x2300, 0x9405, 0x0160, 0x8a51, 0x0904,
13757 + 0x1ed4, 0x8c60, 0x0804, 0x1d24, 0xa004, 0x9045, 0x0904, 0x1ed4,
13758 + 0x0804, 0x1d07, 0x8a51, 0x0904, 0x1ed4, 0x8c60, 0x2c05, 0x9005,
13759 + 0x1158, 0xa004, 0x9045, 0x0904, 0x1ed4, 0xa064, 0x90ec, 0x000f,
13760 + 0x9de0, 0x1cdd, 0x2c05, 0x2060, 0xa880, 0xc0fc, 0xa882, 0x0804,
13761 + 0x1ec9, 0x2c05, 0x8422, 0x8420, 0x831a, 0x9399, 0x0000, 0xac2e,
13762 + 0xab32, 0xdd9c, 0x1904, 0x1e66, 0x9082, 0x001b, 0x0002, 0x1e02,
13763 + 0x1e02, 0x1e04, 0x1e02, 0x1e02, 0x1e02, 0x1e12, 0x1e02, 0x1e02,
13764 + 0x1e02, 0x1e20, 0x1e02, 0x1e02, 0x1e02, 0x1e2e, 0x1e02, 0x1e02,
13765 + 0x1e02, 0x1e3c, 0x1e02, 0x1e02, 0x1e02, 0x1e4a, 0x1e02, 0x1e02,
13766 + 0x1e02, 0x1e58, 0x080c, 0x0d84, 0xa17c, 0x2400, 0x9122, 0xa180,
13767 + 0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa074, 0x9420, 0xa078, 0x9319,
13768 + 0x0804, 0x1ec4, 0xa18c, 0x2400, 0x9122, 0xa190, 0x2300, 0x911b,
13769 + 0x0a0c, 0x0d84, 0xa084, 0x9420, 0xa088, 0x9319, 0x0804, 0x1ec4,
13770 + 0xa19c, 0x2400, 0x9122, 0xa1a0, 0x2300, 0x911b, 0x0a0c, 0x0d84,
13771 + 0xa094, 0x9420, 0xa098, 0x9319, 0x0804, 0x1ec4, 0xa1ac, 0x2400,
13772 + 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa0a4, 0x9420,
13773 + 0xa0a8, 0x9319, 0x0804, 0x1ec4, 0xa1bc, 0x2400, 0x9122, 0xa1c0,
13774 + 0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa0b4, 0x9420, 0xa0b8, 0x9319,
13775 + 0x0804, 0x1ec4, 0xa1cc, 0x2400, 0x9122, 0xa1d0, 0x2300, 0x911b,
13776 + 0x0a0c, 0x0d84, 0xa0c4, 0x9420, 0xa0c8, 0x9319, 0x0804, 0x1ec4,
13777 + 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, 0x0d84,
13778 + 0xa0d4, 0x9420, 0xa0d8, 0x9319, 0x0804, 0x1ec4, 0x9082, 0x001b,
13779 + 0x0002, 0x1e84, 0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e91,
13780 + 0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e82, 0x1e9e, 0x1e82, 0x1e82,
13781 + 0x1e82, 0x1e82, 0x1e82, 0x1eab, 0x1e82, 0x1e82, 0x1e82, 0x1e82,
13782 + 0x1e82, 0x1eb8, 0x080c, 0x0d84, 0xa17c, 0x2400, 0x9122, 0xa180,
13783 + 0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa06c, 0x9420, 0xa070, 0x9319,
13784 + 0x0498, 0xa194, 0x2400, 0x9122, 0xa198, 0x2300, 0x911b, 0x0a0c,
13785 + 0x0d84, 0xa084, 0x9420, 0xa088, 0x9319, 0x0430, 0xa1ac, 0x2400,
13786 + 0x9122, 0xa1b0, 0x2300, 0x911b, 0x0a0c, 0x0d84, 0xa09c, 0x9420,
13787 + 0xa0a0, 0x9319, 0x00c8, 0xa1c4, 0x2400, 0x9122, 0xa1c8, 0x2300,
13788 + 0x911b, 0x0a0c, 0x0d84, 0xa0b4, 0x9420, 0xa0b8, 0x9319, 0x0060,
13789 + 0xa1dc, 0x2400, 0x9122, 0xa1e0, 0x2300, 0x911b, 0x0a0c, 0x0d84,
13790 + 0xa0cc, 0x9420, 0xa0d0, 0x9319, 0xac1e, 0xab22, 0xa880, 0xc0fd,
13791 + 0xa882, 0x2800, 0xa85a, 0x2c00, 0xa812, 0x2a00, 0xa816, 0x000e,
13792 + 0x000e, 0x000e, 0x9006, 0x0028, 0x008e, 0x00de, 0x00ce, 0x9085,
13793 + 0x0001, 0x0005, 0x2001, 0x0005, 0x2004, 0x9084, 0x0007, 0x0002,
13794 + 0x1ef2, 0x1b25, 0x1ef2, 0x1ee8, 0x1eeb, 0x1eee, 0x1eeb, 0x1eee,
13795 + 0x080c, 0x1b25, 0x0005, 0x080c, 0x1146, 0x0005, 0x080c, 0x1b25,
13796 + 0x080c, 0x1146, 0x0005, 0x0126, 0x2091, 0x2600, 0x2079, 0x0200,
13797 + 0x2071, 0x0260, 0x2069, 0x1800, 0x7817, 0x0000, 0x789b, 0x0814,
13798 + 0x78a3, 0x0406, 0x789f, 0x0410, 0x2009, 0x013b, 0x200b, 0x0400,
13799 + 0x781b, 0x0002, 0x783b, 0x001f, 0x7837, 0x0020, 0x7803, 0x1600,
13800 + 0x012e, 0x0005, 0x2091, 0x2600, 0x781c, 0xd0a4, 0x190c, 0x2011,
13801 + 0x7900, 0xd1dc, 0x1118, 0x9084, 0x0006, 0x001a, 0x9084, 0x000e,
13802 + 0x0002, 0x1f39, 0x1f31, 0x71ab, 0x1f31, 0x1f33, 0x1f33, 0x1f33,
13803 + 0x1f33, 0x7191, 0x1f31, 0x1f35, 0x1f31, 0x1f33, 0x1f31, 0x1f33,
13804 + 0x1f31, 0x080c, 0x0d84, 0x0031, 0x0020, 0x080c, 0x7191, 0x080c,
13805 + 0x71ab, 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xcd2b, 0x7930,
13806 + 0x9184, 0x0003, 0x01c0, 0x2001, 0x19c3, 0x2004, 0x9005, 0x0170,
13807 + 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0d84, 0x00c6, 0x2001,
13808 + 0x19c3, 0x2064, 0x080c, 0xad1e, 0x00ce, 0x00f8, 0x2009, 0x0040,
13809 + 0x080c, 0x2014, 0x00d0, 0x9184, 0x0014, 0x01a0, 0x6a00, 0x9286,
13810 + 0x0003, 0x0160, 0x080c, 0x6877, 0x1138, 0x080c, 0x6b40, 0x080c,
13811 + 0x56d9, 0x080c, 0x67be, 0x0010, 0x080c, 0x55a0, 0x080c, 0x7243,
13812 + 0x0041, 0x0018, 0x9184, 0x9540, 0x1dc8, 0x002e, 0x001e, 0x000e,
13813 + 0x0005, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0x1a30, 0x080c,
13814 + 0x1827, 0x005e, 0x004e, 0x003e, 0x00ee, 0x0005, 0x0126, 0x2091,
13815 + 0x2e00, 0x2071, 0x1800, 0x7128, 0x2001, 0x193e, 0x2102, 0x2001,
13816 + 0x1946, 0x2102, 0x2001, 0x013b, 0x2102, 0x2079, 0x0200, 0x2001,
13817 + 0x0201, 0x789e, 0x78a3, 0x0200, 0x9198, 0x0007, 0x831c, 0x831c,
13818 + 0x831c, 0x9398, 0x0005, 0x2320, 0x9182, 0x0204, 0x1230, 0x2011,
13819 + 0x0008, 0x8423, 0x8423, 0x8423, 0x0488, 0x9182, 0x024c, 0x1240,
13820 + 0x2011, 0x0007, 0x8403, 0x8003, 0x9400, 0x9400, 0x9420, 0x0430,
13821 + 0x9182, 0x02bc, 0x1238, 0x2011, 0x0006, 0x8403, 0x8003, 0x9400,
13822 + 0x9420, 0x00e0, 0x9182, 0x034c, 0x1230, 0x2011, 0x0005, 0x8403,
13823 + 0x8003, 0x9420, 0x0098, 0x9182, 0x042c, 0x1228, 0x2011, 0x0004,
13824 + 0x8423, 0x8423, 0x0058, 0x9182, 0x059c, 0x1228, 0x2011, 0x0003,
13825 + 0x8403, 0x9420, 0x0018, 0x2011, 0x0002, 0x8423, 0x9482, 0x0228,
13826 + 0x8002, 0x8020, 0x8301, 0x9402, 0x0110, 0x0208, 0x8321, 0x8217,
13827 + 0x8203, 0x9405, 0x789a, 0x012e, 0x0005, 0x0006, 0x00d6, 0x2069,
13828 + 0x0200, 0x6814, 0x9084, 0xffc0, 0x910d, 0x6916, 0x00de, 0x000e,
13829 + 0x0005, 0x00d6, 0x2069, 0x0200, 0x9005, 0x6810, 0x0110, 0xc0a5,
13830 + 0x0008, 0xc0a4, 0x6812, 0x00de, 0x0005, 0x0006, 0x00d6, 0x2069,
13831 + 0x0200, 0x6810, 0x9084, 0xfff8, 0x910d, 0x6912, 0x00de, 0x000e,
13832 + 0x0005, 0x7938, 0x080c, 0x0d84, 0x00f6, 0x2079, 0x0200, 0x7902,
13833 + 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x7902, 0xa001,
13834 + 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x00fe, 0x0005, 0x0126,
13835 + 0x2091, 0x2800, 0x2061, 0x0100, 0x2071, 0x1800, 0x2009, 0x0000,
13836 + 0x080c, 0x27f5, 0x080c, 0x2718, 0x6054, 0x8004, 0x8004, 0x8004,
13837 + 0x8004, 0x9084, 0x000c, 0x6150, 0x918c, 0xfff3, 0x9105, 0x6052,
13838 + 0x6050, 0x9084, 0xfbff, 0x9085, 0x2000, 0x6052, 0x2009, 0x196a,
13839 + 0x2011, 0x196b, 0x6358, 0x939c, 0x38f0, 0x2320, 0x080c, 0x275c,
13840 + 0x1238, 0x939d, 0x4003, 0x94a5, 0x8603, 0x230a, 0x2412, 0x0030,
13841 + 0x939d, 0x0203, 0x94a5, 0x8603, 0x230a, 0x2412, 0x9006, 0x080c,
13842 + 0x2747, 0x9006, 0x080c, 0x272a, 0x20a9, 0x0012, 0x1d04, 0x2066,
13843 + 0x2091, 0x6000, 0x1f04, 0x2066, 0x602f, 0x0100, 0x602f, 0x0000,
13844 + 0x6050, 0x9085, 0x0400, 0x9084, 0xdfff, 0x6052, 0x6024, 0x6026,
13845 + 0x080c, 0x2436, 0x2009, 0x00ef, 0x6132, 0x6136, 0x080c, 0x2446,
13846 + 0x60e7, 0x0000, 0x61ea, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043,
13847 + 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x049f, 0x60bb,
13848 + 0x0000, 0x20a9, 0x0018, 0x60bf, 0x0000, 0x1f04, 0x2093, 0x60bb,
13849 + 0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, 0x60bf, 0x0320, 0x60bf,
13850 + 0x0018, 0x601b, 0x00f0, 0x601f, 0x001e, 0x600f, 0x006b, 0x602b,
13851 + 0x402f, 0x012e, 0x0005, 0x00f6, 0x2079, 0x0140, 0x78c3, 0x0080,
13852 + 0x78c3, 0x0083, 0x78c3, 0x0000, 0x00fe, 0x0005, 0x2001, 0x1834,
13853 + 0x2003, 0x0000, 0x2001, 0x1833, 0x2003, 0x0001, 0x0005, 0x0126,
13854 + 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x6124, 0x9184, 0x5e2c,
13855 + 0x1118, 0x9184, 0x0007, 0x002a, 0x9195, 0x0004, 0x9284, 0x0007,
13856 + 0x0002, 0x20f3, 0x20d9, 0x20dc, 0x20df, 0x20e4, 0x20e6, 0x20ea,
13857 + 0x20ee, 0x080c, 0x7ab7, 0x00b8, 0x080c, 0x7b8a, 0x00a0, 0x080c,
13858 + 0x7b8a, 0x080c, 0x7ab7, 0x0078, 0x0099, 0x0068, 0x080c, 0x7ab7,
13859 + 0x0079, 0x0048, 0x080c, 0x7b8a, 0x0059, 0x0028, 0x080c, 0x7b8a,
13860 + 0x080c, 0x7ab7, 0x0029, 0x002e, 0x001e, 0x000e, 0x012e, 0x0005,
13861 + 0x00a6, 0x6124, 0x6028, 0xd09c, 0x0118, 0xd19c, 0x1904, 0x232f,
13862 + 0xd1f4, 0x0110, 0x080c, 0x0d84, 0x080c, 0x6877, 0x05a0, 0x7000,
13863 + 0x9086, 0x0003, 0x01f0, 0x6024, 0x9084, 0x1800, 0x01d0, 0x080c,
13864 + 0x689a, 0x0118, 0x080c, 0x6888, 0x11a0, 0x6027, 0x0020, 0x6043,
13865 + 0x0000, 0x709c, 0x9005, 0x1150, 0x709f, 0x0001, 0x00d6, 0x2069,
13866 + 0x0140, 0x080c, 0x68d0, 0x00de, 0x1904, 0x2332, 0x080c, 0x6b4a,
13867 + 0x0428, 0x080c, 0x689a, 0x1590, 0x6024, 0x9084, 0x1800, 0x1108,
13868 + 0x0468, 0x080c, 0x6b4a, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x080c,
13869 + 0x67be, 0x0804, 0x232f, 0xd1ac, 0x1508, 0x6024, 0xd0dc, 0x1170,
13870 + 0xd0e4, 0x1178, 0xd0d4, 0x1190, 0xd0cc, 0x0130, 0x7090, 0x9086,
13871 + 0x0028, 0x1110, 0x080c, 0x6a2d, 0x0804, 0x232f, 0x080c, 0x6b45,
13872 + 0x0048, 0x2001, 0x194c, 0x2003, 0x0002, 0x0020, 0x080c, 0x69a3,
13873 + 0x0804, 0x232f, 0x080c, 0x6ac8, 0x0804, 0x232f, 0xd1ac, 0x0904,
13874 + 0x224f, 0x080c, 0x6877, 0x11c0, 0x6027, 0x0020, 0x0006, 0x0026,
13875 + 0x0036, 0x080c, 0x6891, 0x1158, 0x080c, 0x6b40, 0x080c, 0x56d9,
13876 + 0x080c, 0x67be, 0x003e, 0x002e, 0x000e, 0x00ae, 0x0005, 0x003e,
13877 + 0x002e, 0x000e, 0x080c, 0x6853, 0x0016, 0x0046, 0x00c6, 0x644c,
13878 + 0x9486, 0xf0f0, 0x1138, 0x2061, 0x0100, 0x644a, 0x6043, 0x0090,
13879 + 0x6043, 0x0010, 0x74d6, 0x948c, 0xff00, 0x7034, 0xd084, 0x0178,
13880 + 0x9186, 0xf800, 0x1160, 0x7040, 0xd084, 0x1148, 0xc085, 0x7042,
13881 + 0x0036, 0x2418, 0x2011, 0x8016, 0x080c, 0x447f, 0x003e, 0x080c,
13882 + 0xb752, 0x1904, 0x222c, 0x9196, 0xff00, 0x05a8, 0x7058, 0x9084,
13883 + 0x00ff, 0x810f, 0x81ff, 0x0110, 0x9116, 0x0568, 0x7130, 0xd184,
13884 + 0x1550, 0x080c, 0x2e69, 0x0128, 0xc18d, 0x7132, 0x080c, 0x5f25,
13885 + 0x1510, 0x6240, 0x9294, 0x0010, 0x0130, 0x6248, 0x9294, 0xff00,
13886 + 0x9296, 0xff00, 0x01c0, 0x7030, 0xd08c, 0x0904, 0x222c, 0x7034,
13887 + 0xd08c, 0x1140, 0x2001, 0x180c, 0x200c, 0xd1ac, 0x1904, 0x222c,
13888 + 0xc1ad, 0x2102, 0x0036, 0x73d4, 0x2011, 0x8013, 0x080c, 0x447f,
13889 + 0x003e, 0x0804, 0x222c, 0x7034, 0xd08c, 0x1140, 0x2001, 0x180c,
13890 + 0x200c, 0xd1ac, 0x1904, 0x222c, 0xc1ad, 0x2102, 0x0036, 0x73d4,
13891 + 0x2011, 0x8013, 0x080c, 0x447f, 0x003e, 0x7130, 0xc185, 0x7132,
13892 + 0x2011, 0x1853, 0x220c, 0xd1a4, 0x01f0, 0x0016, 0x2009, 0x0001,
13893 + 0x2011, 0x0100, 0x080c, 0x7a0a, 0x2019, 0x000e, 0x00c6, 0x2061,
13894 + 0x0000, 0x080c, 0xc941, 0x00ce, 0x9484, 0x00ff, 0x9080, 0x2e6e,
13895 + 0x200d, 0x918c, 0xff00, 0x810f, 0x2120, 0x9006, 0x2009, 0x000e,
13896 + 0x080c, 0xc9c5, 0x001e, 0xd1ac, 0x1140, 0x0016, 0x900e, 0x2019,
13897 + 0x0004, 0x080c, 0x2ce5, 0x001e, 0x0078, 0x0156, 0x00b6, 0x20a9,
13898 + 0x007f, 0x900e, 0x080c, 0x5c0d, 0x1110, 0x080c, 0x56f3, 0x8108,
13899 + 0x1f04, 0x2222, 0x00be, 0x015e, 0x00ce, 0x004e, 0x080c, 0x94da,
13900 + 0x60e3, 0x0000, 0x001e, 0x2001, 0x1800, 0x2014, 0x9296, 0x0004,
13901 + 0x1170, 0xd19c, 0x11a0, 0x2011, 0x180c, 0x2214, 0xd29c, 0x1120,
13902 + 0x6204, 0x9295, 0x0002, 0x6206, 0x6228, 0xc29d, 0x622a, 0x2003,
13903 + 0x0001, 0x2001, 0x1824, 0x2003, 0x0000, 0x6027, 0x0020, 0xd194,
13904 + 0x0904, 0x232f, 0x0016, 0x6220, 0xd2b4, 0x0904, 0x22db, 0x080c,
13905 + 0x7893, 0x080c, 0x8b50, 0x6027, 0x0004, 0x00f6, 0x2019, 0x19bd,
13906 + 0x2304, 0x907d, 0x0904, 0x22ac, 0x7804, 0x9086, 0x0032, 0x1904,
13907 + 0x22ac, 0x00d6, 0x00c6, 0x00e6, 0x0096, 0x2069, 0x0140, 0x7814,
13908 + 0x685e, 0x7808, 0x685a, 0x6043, 0x0002, 0x2001, 0x0003, 0x8001,
13909 + 0x1df0, 0x6043, 0x0000, 0x2001, 0x003c, 0x8001, 0x1df0, 0x2001,
13910 + 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2001, 0x001e,
13911 + 0x8001, 0x0240, 0x20a9, 0x0009, 0x080c, 0x27d0, 0x6904, 0xd1dc,
13912 + 0x1140, 0x0cb0, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c,
13913 + 0x28a5, 0x080c, 0x8026, 0x080c, 0x8125, 0x7814, 0x2048, 0xa867,
13914 + 0x0103, 0x2f60, 0x080c, 0x9554, 0x009e, 0x00ee, 0x00ce, 0x00de,
13915 + 0x00fe, 0x001e, 0x00ae, 0x0005, 0x00fe, 0x00d6, 0x2069, 0x0140,
13916 + 0x6804, 0x9084, 0x4000, 0x0138, 0x2001, 0x1000, 0x080c, 0x28a5,
13917 + 0x9006, 0x080c, 0x28a5, 0x00de, 0x00c6, 0x2061, 0x19b4, 0x6028,
13918 + 0x909a, 0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0x8b2c,
13919 + 0x0804, 0x232e, 0x2061, 0x0100, 0x62c0, 0x080c, 0x9367, 0x2019,
13920 + 0x19bd, 0x2304, 0x9065, 0x0120, 0x2009, 0x0027, 0x080c, 0x95ce,
13921 + 0x00ce, 0x0804, 0x232e, 0xd2bc, 0x05f0, 0x080c, 0x78a0, 0x6014,
13922 + 0x9084, 0x1984, 0x9085, 0x0010, 0x6016, 0x6027, 0x0004, 0x00d6,
13923 + 0x2069, 0x0140, 0x6804, 0x9084, 0x4000, 0x0138, 0x2001, 0x1000,
13924 + 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x00de, 0x00c6, 0x2061,
13925 + 0x19b4, 0x6044, 0x909a, 0x00c8, 0x1608, 0x8000, 0x6046, 0x603c,
13926 + 0x00ce, 0x9005, 0x0558, 0x2009, 0x07d0, 0x080c, 0x7898, 0x9080,
13927 + 0x0008, 0x2004, 0x9086, 0x0006, 0x1138, 0x6114, 0x918c, 0x1984,
13928 + 0x918d, 0x0012, 0x6116, 0x00d0, 0x6114, 0x918c, 0x1984, 0x918d,
13929 + 0x0016, 0x6116, 0x0098, 0x6027, 0x0004, 0x0080, 0x0036, 0x2019,
13930 + 0x0001, 0x080c, 0x8dfe, 0x003e, 0x2019, 0x19c3, 0x2304, 0x9065,
13931 + 0x0120, 0x2009, 0x004f, 0x080c, 0x95ce, 0x00ce, 0x001e, 0xd19c,
13932 + 0x0904, 0x23a1, 0x7034, 0xd0ac, 0x1904, 0x2376, 0x0016, 0x0156,
13933 + 0x6027, 0x0008, 0x6050, 0x9085, 0x0040, 0x6052, 0x6050, 0x9084,
13934 + 0xfbcf, 0x6052, 0x080c, 0x27ef, 0x9085, 0x2000, 0x6052, 0x20a9,
13935 + 0x0012, 0x1d04, 0x2349, 0x080c, 0x78c7, 0x1f04, 0x2349, 0x6050,
13936 + 0x9085, 0x0400, 0x9084, 0xdfbf, 0x6052, 0x20a9, 0x0028, 0xa001,
13937 + 0x1f04, 0x2357, 0x6150, 0x9185, 0x1400, 0x6052, 0x20a9, 0x0366,
13938 + 0x1d04, 0x2360, 0x080c, 0x78c7, 0x6020, 0xd09c, 0x1130, 0x015e,
13939 + 0x6152, 0x001e, 0x6027, 0x0008, 0x04a0, 0x080c, 0x27b7, 0x1f04,
13940 + 0x2360, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008, 0x0016, 0x6028,
13941 + 0xc09c, 0x602a, 0x080c, 0x94da, 0x60e3, 0x0000, 0x080c, 0xcd0a,
13942 + 0x080c, 0xcd25, 0x080c, 0x4dee, 0xd0fc, 0x1138, 0x080c, 0xb752,
13943 + 0x1120, 0x9085, 0x0001, 0x080c, 0x68c0, 0x9006, 0x080c, 0x28a5,
13944 + 0x2009, 0x0002, 0x080c, 0x27f5, 0x00e6, 0x2071, 0x1800, 0x7003,
13945 + 0x0004, 0x080c, 0x0e3b, 0x00ee, 0x6027, 0x0008, 0x080c, 0x0b69,
13946 + 0x001e, 0x918c, 0xffd0, 0x6126, 0x00ae, 0x0005, 0x0006, 0x0016,
13947 + 0x0026, 0x0036, 0x00e6, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2071,
13948 + 0x1800, 0x71cc, 0x70ce, 0x9116, 0x0904, 0x23f5, 0x81ff, 0x01a0,
13949 + 0x2009, 0x0000, 0x080c, 0x27f5, 0x2011, 0x8011, 0x2019, 0x010e,
13950 + 0x231c, 0x939e, 0x0007, 0x1118, 0x2019, 0x0001, 0x0010, 0x2019,
13951 + 0x0000, 0x080c, 0x447f, 0x0448, 0x2001, 0x1975, 0x200c, 0x81ff,
13952 + 0x1140, 0x2001, 0x0109, 0x2004, 0xd0b4, 0x0118, 0x2019, 0x0003,
13953 + 0x0008, 0x2118, 0x2011, 0x8012, 0x080c, 0x447f, 0x080c, 0x0e3b,
13954 + 0x080c, 0x4dee, 0xd0fc, 0x1188, 0x080c, 0xb752, 0x1170, 0x00c6,
13955 + 0x080c, 0x2491, 0x080c, 0x8d36, 0x2061, 0x0100, 0x2019, 0x0028,
13956 + 0x2009, 0x0002, 0x080c, 0x2ce5, 0x00ce, 0x012e, 0x00fe, 0x00ee,
13957 + 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x2028, 0x918c, 0x00ff,
13958 + 0x2130, 0x9094, 0xff00, 0x11f0, 0x2011, 0x1836, 0x2214, 0xd2ac,
13959 + 0x11c8, 0x81ff, 0x01e8, 0x2011, 0x181d, 0x2204, 0x9106, 0x1190,
13960 + 0x2011, 0x181e, 0x2214, 0x9294, 0xff00, 0x9584, 0xff00, 0x9206,
13961 + 0x1148, 0x2011, 0x181e, 0x2214, 0x9294, 0x00ff, 0x9584, 0x00ff,
13962 + 0x9206, 0x1120, 0x2500, 0x080c, 0x745f, 0x0048, 0x9584, 0x00ff,
13963 + 0x9080, 0x2e6e, 0x200d, 0x918c, 0xff00, 0x810f, 0x9006, 0x0005,
13964 + 0x9080, 0x2e6e, 0x200d, 0x918c, 0x00ff, 0x0005, 0x00d6, 0x2069,
13965 + 0x0140, 0x2001, 0x1816, 0x2003, 0x00ef, 0x20a9, 0x0010, 0x9006,
13966 + 0x6852, 0x6856, 0x1f04, 0x2441, 0x00de, 0x0005, 0x0006, 0x00d6,
13967 + 0x0026, 0x2069, 0x0140, 0x2001, 0x1816, 0x2102, 0x8114, 0x8214,
13968 + 0x8214, 0x8214, 0x20a9, 0x0010, 0x6853, 0x0000, 0x9006, 0x82ff,
13969 + 0x1128, 0x9184, 0x000f, 0x9080, 0xd10f, 0x2005, 0x6856, 0x8211,
13970 + 0x1f04, 0x2456, 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, 0x2061,
13971 + 0x1800, 0x6030, 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, 0x00ce,
13972 + 0x0005, 0x0156, 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, 0x0140,
13973 + 0x6980, 0x9116, 0x0180, 0x9112, 0x1230, 0x8212, 0x8210, 0x22a8,
13974 + 0x2001, 0x0402, 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, 0x1f04,
13975 + 0x2486, 0x680f, 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, 0x015e,
13976 + 0x0005, 0x080c, 0x4dea, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0x9006,
13977 + 0x0046, 0x2020, 0x2009, 0x002e, 0x080c, 0xc9c5, 0x004e, 0x0005,
13978 + 0x00f6, 0x0016, 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, 0x0904,
13979 + 0x24fd, 0x080c, 0x275c, 0x0660, 0x9084, 0x0700, 0x908e, 0x0600,
13980 + 0x1120, 0x2011, 0x4000, 0x900e, 0x0458, 0x908e, 0x0500, 0x1120,
13981 + 0x2011, 0x8000, 0x900e, 0x0420, 0x908e, 0x0400, 0x1120, 0x9016,
13982 + 0x2009, 0x0001, 0x00e8, 0x908e, 0x0300, 0x1120, 0x9016, 0x2009,
13983 + 0x0002, 0x00b0, 0x908e, 0x0200, 0x1120, 0x9016, 0x2009, 0x0004,
13984 + 0x0078, 0x908e, 0x0100, 0x1548, 0x9016, 0x2009, 0x0008, 0x0040,
13985 + 0x9084, 0x0700, 0x908e, 0x0300, 0x1500, 0x2011, 0x0030, 0x0058,
13986 + 0x2300, 0x9080, 0x0020, 0x2018, 0x080c, 0x7a4b, 0x928c, 0xff00,
13987 + 0x0110, 0x2011, 0x00ff, 0x2200, 0x8007, 0x9085, 0x004c, 0x78c2,
13988 + 0x2009, 0x0138, 0x220a, 0x080c, 0x6877, 0x1118, 0x2009, 0x193c,
13989 + 0x220a, 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8,
13990 + 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170,
13991 + 0x200c, 0x8000, 0x2014, 0x9184, 0x0003, 0x0110, 0x080c, 0x0d84,
13992 + 0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x2001, 0x0171, 0x2004,
13993 + 0xd0dc, 0x0168, 0x2001, 0x0170, 0x200c, 0x918c, 0x00ff, 0x918e,
13994 + 0x004c, 0x1128, 0x200c, 0x918c, 0xff00, 0x810f, 0x0005, 0x900e,
13995 + 0x2001, 0x0227, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108,
13996 + 0x2001, 0x0226, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108,
13997 + 0x0005, 0x0018, 0x000c, 0x0018, 0x0020, 0x1000, 0x0800, 0x1000,
13998 + 0x1800, 0x0156, 0x0006, 0x0016, 0x0026, 0x00e6, 0x2001, 0x195d,
13999 + 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d84, 0x0033, 0x00ee, 0x002e,
14000 + 0x001e, 0x000e, 0x015e, 0x0005, 0x255b, 0x2579, 0x259d, 0x259f,
14001 + 0x25c8, 0x25ca, 0x25cc, 0x2001, 0x0001, 0x080c, 0x23a6, 0x080c,
14002 + 0x27b2, 0x2001, 0x195f, 0x2003, 0x0000, 0x7828, 0x9084, 0xe1d7,
14003 + 0x782a, 0x9006, 0x20a9, 0x0009, 0x080c, 0x2770, 0x2001, 0x195d,
14004 + 0x2003, 0x0006, 0x2009, 0x001e, 0x2011, 0x25cd, 0x080c, 0x78a5,
14005 + 0x0005, 0x2009, 0x1962, 0x200b, 0x0000, 0x2001, 0x1967, 0x2003,
14006 + 0x0036, 0x2001, 0x1966, 0x2003, 0x002a, 0x2001, 0x195f, 0x2003,
14007 + 0x0001, 0x9006, 0x080c, 0x272a, 0x2001, 0xffff, 0x20a9, 0x0009,
14008 + 0x080c, 0x2770, 0x2001, 0x195d, 0x2003, 0x0006, 0x2009, 0x001e,
14009 + 0x2011, 0x25cd, 0x080c, 0x78a5, 0x0005, 0x080c, 0x0d84, 0x2001,
14010 + 0x1967, 0x2003, 0x0036, 0x2001, 0x195f, 0x2003, 0x0003, 0x7a38,
14011 + 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001,
14012 + 0x0001, 0x080c, 0x272a, 0x2001, 0x1963, 0x2003, 0x0000, 0x2001,
14013 + 0xffff, 0x20a9, 0x0009, 0x080c, 0x2770, 0x2001, 0x195d, 0x2003,
14014 + 0x0006, 0x2009, 0x001e, 0x2011, 0x25cd, 0x080c, 0x78a5, 0x0005,
14015 + 0x080c, 0x0d84, 0x080c, 0x0d84, 0x0005, 0x0006, 0x0016, 0x0026,
14016 + 0x00e6, 0x00f6, 0x0156, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100,
14017 + 0x2001, 0x195f, 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d84, 0x0043,
14018 + 0x012e, 0x015e, 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005,
14019 + 0x25ef, 0x260f, 0x264f, 0x267f, 0x26a3, 0x26b3, 0x26b5, 0x080c,
14020 + 0x2764, 0x11b0, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x1965,
14021 + 0x2104, 0x7a38, 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0xc08d,
14022 + 0x0008, 0xc085, 0x200a, 0x2001, 0x195d, 0x2003, 0x0001, 0x0030,
14023 + 0x080c, 0x26d9, 0x2001, 0xffff, 0x080c, 0x256a, 0x0005, 0x080c,
14024 + 0x26b7, 0x05e0, 0x2009, 0x1966, 0x2104, 0x8001, 0x200a, 0x080c,
14025 + 0x2764, 0x1178, 0x7850, 0x9084, 0xefff, 0x7852, 0x7a38, 0x9294,
14026 + 0x0005, 0x9296, 0x0005, 0x0518, 0x2009, 0x1965, 0x2104, 0xc085,
14027 + 0x200a, 0x2009, 0x1962, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005,
14028 + 0x0118, 0x080c, 0x26bf, 0x00c0, 0x200b, 0x0000, 0x7a38, 0x9294,
14029 + 0x0006, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001,
14030 + 0x080c, 0x2747, 0x2001, 0x195f, 0x2003, 0x0002, 0x0028, 0x2001,
14031 + 0x195d, 0x2003, 0x0003, 0x0010, 0x080c, 0x258c, 0x0005, 0x080c,
14032 + 0x26b7, 0x0560, 0x2009, 0x1966, 0x2104, 0x8001, 0x200a, 0x080c,
14033 + 0x2764, 0x1168, 0x7850, 0x9084, 0xefff, 0x7852, 0x2001, 0x195d,
14034 + 0x2003, 0x0003, 0x2001, 0x195e, 0x2003, 0x0000, 0x00b8, 0x2009,
14035 + 0x1966, 0x2104, 0x9005, 0x1118, 0x080c, 0x26fc, 0x0010, 0x080c,
14036 + 0x26cc, 0x080c, 0x26bf, 0x2009, 0x1962, 0x200b, 0x0000, 0x2001,
14037 + 0x195f, 0x2003, 0x0001, 0x080c, 0x258c, 0x0000, 0x0005, 0x04b9,
14038 + 0x0508, 0x080c, 0x2764, 0x11b8, 0x7850, 0x9084, 0xefff, 0x7852,
14039 + 0x2009, 0x1963, 0x2104, 0x8000, 0x200a, 0x9086, 0x0007, 0x0108,
14040 + 0x0078, 0x2001, 0x1968, 0x2003, 0x000a, 0x2009, 0x1965, 0x2104,
14041 + 0xc0fd, 0x200a, 0x0038, 0x0419, 0x2001, 0x195f, 0x2003, 0x0004,
14042 + 0x080c, 0x25b7, 0x0005, 0x0099, 0x0168, 0x080c, 0x2764, 0x1138,
14043 + 0x7850, 0x9084, 0xefff, 0x7852, 0x080c, 0x25a3, 0x0018, 0x0079,
14044 + 0x080c, 0x25b7, 0x0005, 0x080c, 0x0d84, 0x080c, 0x0d84, 0x2009,
14045 + 0x1967, 0x2104, 0x8001, 0x200a, 0x090c, 0x2718, 0x0005, 0x7a38,
14046 + 0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001,
14047 + 0x0001, 0x080c, 0x2747, 0x0005, 0x7a38, 0x9294, 0x0006, 0x9296,
14048 + 0x0006, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x272a,
14049 + 0x0005, 0x2009, 0x1962, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005,
14050 + 0x0108, 0x0068, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296,
14051 + 0x0006, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x04d9, 0x7a38,
14052 + 0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001,
14053 + 0x0001, 0x080c, 0x2747, 0x0005, 0x0086, 0x2001, 0x1965, 0x2004,
14054 + 0x9084, 0x7fff, 0x090c, 0x0d84, 0x2009, 0x1964, 0x2144, 0x8846,
14055 + 0x280a, 0x9844, 0x0dd8, 0xd08c, 0x1120, 0xd084, 0x1120, 0x080c,
14056 + 0x0d84, 0x9006, 0x0010, 0x2001, 0x0001, 0x00a1, 0x008e, 0x0005,
14057 + 0x0006, 0x0156, 0x2001, 0x195d, 0x20a9, 0x0009, 0x2003, 0x0000,
14058 + 0x8000, 0x1f04, 0x271e, 0x2001, 0x1964, 0x2003, 0x8000, 0x015e,
14059 + 0x000e, 0x0005, 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, 0x0158,
14060 + 0x7838, 0x9084, 0xfff9, 0x9085, 0x0004, 0x783a, 0x2009, 0x196a,
14061 + 0x210c, 0x795a, 0x0050, 0x7838, 0x9084, 0xfffb, 0x9085, 0x0006,
14062 + 0x783a, 0x2009, 0x196b, 0x210c, 0x795a, 0x00fe, 0x0005, 0x00f6,
14063 + 0x2079, 0x0100, 0x9085, 0x0000, 0x0138, 0x7838, 0x9084, 0xfffa,
14064 + 0x9085, 0x0004, 0x783a, 0x0030, 0x7838, 0x9084, 0xfffb, 0x9085,
14065 + 0x0005, 0x783a, 0x00fe, 0x0005, 0x0006, 0x2001, 0x0100, 0x2004,
14066 + 0x9082, 0x0007, 0x000e, 0x0005, 0x0156, 0x20a9, 0x0064, 0x7820,
14067 + 0x080c, 0x27ef, 0xd09c, 0x1110, 0x1f04, 0x2767, 0x015e, 0x0005,
14068 + 0x0126, 0x0016, 0x0006, 0x2091, 0x8000, 0x7850, 0x9085, 0x0040,
14069 + 0x7852, 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c, 0x27ef, 0x9085,
14070 + 0x2000, 0x7852, 0x000e, 0x2008, 0x9186, 0x0000, 0x1118, 0x783b,
14071 + 0x0007, 0x0090, 0x9186, 0x0001, 0x1118, 0x783b, 0x0006, 0x0060,
14072 + 0x9186, 0x0002, 0x1118, 0x783b, 0x0005, 0x0030, 0x9186, 0x0003,
14073 + 0x1118, 0x783b, 0x0004, 0x0000, 0x0006, 0x1d04, 0x279d, 0x080c,
14074 + 0x78c7, 0x1f04, 0x279d, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfbf,
14075 + 0x7852, 0x080c, 0x27ef, 0x9085, 0x1000, 0x7852, 0x000e, 0x001e,
14076 + 0x012e, 0x0005, 0x7850, 0x9084, 0xffcf, 0x7852, 0x0005, 0x0006,
14077 + 0x0156, 0x00f6, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd0ac,
14078 + 0x1130, 0x7820, 0xd0e4, 0x1140, 0x1f04, 0x27c1, 0x0028, 0x7854,
14079 + 0xd08c, 0x1110, 0x1f04, 0x27c7, 0x00fe, 0x015e, 0x000e, 0x0005,
14080 + 0x1d04, 0x27d0, 0x080c, 0x78c7, 0x1f04, 0x27d0, 0x0005, 0x0006,
14081 + 0x2001, 0x1969, 0x2004, 0x9086, 0x0000, 0x000e, 0x0005, 0x0006,
14082 + 0x2001, 0x1969, 0x2004, 0x9086, 0x0001, 0x000e, 0x0005, 0x0006,
14083 + 0x2001, 0x1969, 0x2004, 0x9086, 0x0002, 0x000e, 0x0005, 0xa001,
14084 + 0xa001, 0xa001, 0xa001, 0xa001, 0x0005, 0x0006, 0x2001, 0x1975,
14085 + 0x2102, 0x000e, 0x0005, 0x2009, 0x0171, 0x2104, 0xd0dc, 0x0140,
14086 + 0x2009, 0x0170, 0x2104, 0x200b, 0x0080, 0xa001, 0xa001, 0x200a,
14087 + 0x0005, 0x0036, 0x0046, 0x2001, 0x0141, 0x200c, 0x918c, 0xff00,
14088 + 0x9186, 0x2000, 0x0118, 0x9186, 0x0100, 0x1580, 0x2009, 0x017f,
14089 + 0x200b, 0x00a2, 0x2019, 0x0160, 0x2324, 0x2011, 0x0003, 0x2009,
14090 + 0x0169, 0x2104, 0xa001, 0x210c, 0x910e, 0x1dc8, 0x9084, 0x0007,
14091 + 0x9086, 0x0003, 0x11b8, 0x2304, 0x9402, 0x02a0, 0x1d68, 0x8211,
14092 + 0x1d70, 0x84ff, 0x0170, 0x2001, 0x0141, 0x200c, 0x918c, 0xff00,
14093 + 0x9186, 0x0100, 0x0130, 0x2009, 0x180c, 0x2104, 0xc0dd, 0x200a,
14094 + 0x0008, 0x0419, 0x2001, 0x017f, 0x2003, 0x0000, 0x004e, 0x003e,
14095 + 0x0005, 0x2001, 0x180c, 0x2004, 0xd0dc, 0x01b0, 0x2001, 0x0160,
14096 + 0x2004, 0x9005, 0x0140, 0x2001, 0x0141, 0x2004, 0x9084, 0xff00,
14097 + 0x9086, 0x0100, 0x1148, 0x0126, 0x2091, 0x8000, 0x0016, 0x0026,
14098 + 0x0021, 0x002e, 0x001e, 0x012e, 0x0005, 0x00c6, 0x2061, 0x0100,
14099 + 0x6014, 0x0006, 0x2001, 0x0161, 0x2003, 0x0000, 0x6017, 0x0018,
14100 + 0xa001, 0xa001, 0x602f, 0x0008, 0x6104, 0x918e, 0x0010, 0x6106,
14101 + 0x918e, 0x0010, 0x6106, 0x6017, 0x0040, 0x2001, 0x1000, 0x0429,
14102 + 0x9006, 0x0419, 0x001e, 0x9184, 0x0003, 0x01c0, 0x0036, 0x2019,
14103 + 0x0141, 0x2304, 0x9084, 0xff00, 0x9086, 0x0800, 0x1dd0, 0x919c,
14104 + 0xffe4, 0x9184, 0x0001, 0x0118, 0x9385, 0x0009, 0x6016, 0x9184,
14105 + 0x0002, 0x0118, 0x9385, 0x0012, 0x6016, 0x003e, 0x2001, 0x180c,
14106 + 0x200c, 0xc1dc, 0x2102, 0x00ce, 0x0005, 0x0016, 0x0026, 0x2009,
14107 + 0x0140, 0x2114, 0x9294, 0x0001, 0x9215, 0x220a, 0x002e, 0x001e,
14108 + 0x0005, 0x2b1d, 0x2b1d, 0x2941, 0x2941, 0x294d, 0x294d, 0x2959,
14109 + 0x2959, 0x2967, 0x2967, 0x2973, 0x2973, 0x2981, 0x2981, 0x298f,
14110 + 0x298f, 0x29a1, 0x29a1, 0x29ad, 0x29ad, 0x29bb, 0x29bb, 0x29d9,
14111 + 0x29d9, 0x29f9, 0x29f9, 0x29c9, 0x29c9, 0x29e9, 0x29e9, 0x2a07,
14112 + 0x2a07, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14113 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14114 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14115 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14116 + 0x299f, 0x2a19, 0x2a19, 0x2a25, 0x2a25, 0x2a33, 0x2a33, 0x2a41,
14117 + 0x2a41, 0x2a51, 0x2a51, 0x2a5f, 0x2a5f, 0x2a6f, 0x2a6f, 0x2a7f,
14118 + 0x2a7f, 0x2a91, 0x2a91, 0x2a9f, 0x2a9f, 0x2aaf, 0x2aaf, 0x2ad1,
14119 + 0x2ad1, 0x2af3, 0x2af3, 0x2abf, 0x2abf, 0x2ae2, 0x2ae2, 0x2b02,
14120 + 0x2b02, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14121 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14122 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14123 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14124 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14125 + 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f, 0x299f,
14126 + 0x299f, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14127 + 0x0156, 0x080c, 0x20bf, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126,
14128 + 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1eda, 0x0804,
14129 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14130 + 0x0156, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x0804, 0x2b15, 0x0106,
14131 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14132 + 0x1f12, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14133 + 0x0136, 0x0146, 0x0156, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804,
14134 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14135 + 0x0156, 0x080c, 0x1eda, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14136 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14137 + 0x1eda, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804, 0x2b15, 0xa001,
14138 + 0x0cf0, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14139 + 0x0156, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126,
14140 + 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x20bf, 0x080c,
14141 + 0x129f, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14142 + 0x0136, 0x0146, 0x0156, 0x080c, 0x1eda, 0x080c, 0x129f, 0x0804,
14143 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14144 + 0x0156, 0x080c, 0x20bf, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14145 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14146 + 0x0156, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x080c, 0x129f, 0x0804,
14147 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14148 + 0x0156, 0x080c, 0x1eda, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14149 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14150 + 0x0156, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14151 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14152 + 0x1eda, 0x080c, 0x20bf, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14153 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14154 + 0x0156, 0x080c, 0x2500, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126,
14155 + 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2500, 0x080c,
14156 + 0x20bf, 0x0804, 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14157 + 0x0136, 0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x0804,
14158 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14159 + 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x0804,
14160 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14161 + 0x0156, 0x080c, 0x2500, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14162 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14163 + 0x2500, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14164 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14165 + 0x2500, 0x080c, 0x1eda, 0x080c, 0x1f12, 0x0804, 0x2b15, 0x0106,
14166 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14167 + 0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x080c, 0x1f12, 0x0804,
14168 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14169 + 0x0156, 0x080c, 0x2500, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106,
14170 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14171 + 0x2500, 0x080c, 0x20bf, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106,
14172 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14173 + 0x2500, 0x080c, 0x1eda, 0x080c, 0x129f, 0x0804, 0x2b15, 0x0106,
14174 + 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c,
14175 + 0x2500, 0x080c, 0x20bf, 0x080c, 0x129f, 0x080c, 0x1f12, 0x0804,
14176 + 0x2b15, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146,
14177 + 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf, 0x080c,
14178 + 0x129f, 0x0498, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136,
14179 + 0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x129f,
14180 + 0x080c, 0x1f12, 0x0410, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6,
14181 + 0x0136, 0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x129f, 0x080c,
14182 + 0x1f12, 0x0098, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136,
14183 + 0x0146, 0x0156, 0x080c, 0x2500, 0x080c, 0x1eda, 0x080c, 0x20bf,
14184 + 0x080c, 0x129f, 0x080c, 0x1f12, 0x0000, 0x015e, 0x014e, 0x013e,
14185 + 0x01de, 0x01ce, 0x012e, 0x000e, 0x010e, 0x000d, 0x00b6, 0x00c6,
14186 + 0x0026, 0x0046, 0x9026, 0x080c, 0x5eeb, 0x1904, 0x2c03, 0x72d8,
14187 + 0x2001, 0x194b, 0x2004, 0x9005, 0x1110, 0xd29c, 0x0148, 0xd284,
14188 + 0x1138, 0xd2bc, 0x1904, 0x2c03, 0x080c, 0x2c08, 0x0804, 0x2c03,
14189 + 0xd2cc, 0x1904, 0x2c03, 0x080c, 0x6877, 0x1120, 0x70a7, 0xffff,
14190 + 0x0804, 0x2c03, 0xd294, 0x0120, 0x70a7, 0xffff, 0x0804, 0x2c03,
14191 + 0x080c, 0x2e64, 0x0140, 0x080c, 0xb759, 0x1904, 0x2ba4, 0x70a7,
14192 + 0xffff, 0x0804, 0x2c03, 0x2001, 0x1816, 0x203c, 0x728c, 0xd284,
14193 + 0x0904, 0x2ba4, 0xd28c, 0x1904, 0x2ba4, 0x0036, 0x73a4, 0x938e,
14194 + 0xffff, 0x1110, 0x2019, 0x0001, 0x8314, 0x92e0, 0x1c80, 0x2c04,
14195 + 0x938c, 0x0001, 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, 0x9084,
14196 + 0x00ff, 0x970e, 0x0540, 0x908e, 0x0000, 0x0528, 0x908e, 0x00ff,
14197 + 0x1150, 0x7230, 0xd284, 0x1518, 0x728c, 0xc28d, 0x728e, 0x70a7,
14198 + 0xffff, 0x003e, 0x0408, 0x900e, 0x080c, 0x23fd, 0x080c, 0x5bb0,
14199 + 0x11a0, 0x080c, 0x5f2d, 0x1150, 0x7030, 0xd08c, 0x0118, 0xb800,
14200 + 0xd0bc, 0x0120, 0x080c, 0x2c1f, 0x0140, 0x0028, 0x080c, 0x2d5b,
14201 + 0x080c, 0x2c4b, 0x0110, 0x8318, 0x0838, 0x73a6, 0x0010, 0x70a7,
14202 + 0xffff, 0x003e, 0x0804, 0x2c03, 0x9780, 0x2e6e, 0x203d, 0x97bc,
14203 + 0xff00, 0x873f, 0x2041, 0x007e, 0x70a4, 0x9096, 0xffff, 0x1118,
14204 + 0x900e, 0x28a8, 0x0050, 0x9812, 0x0220, 0x2008, 0x9802, 0x20a8,
14205 + 0x0020, 0x70a7, 0xffff, 0x0804, 0x2c03, 0x2700, 0x0156, 0x0016,
14206 + 0x9106, 0x05b0, 0xc484, 0x080c, 0x5c0d, 0x0138, 0x080c, 0xb759,
14207 + 0x1578, 0x080c, 0x5bb0, 0x15a0, 0x0008, 0xc485, 0x080c, 0x5f2d,
14208 + 0x1130, 0x7030, 0xd08c, 0x01f8, 0xb800, 0xd0bc, 0x11e0, 0x728c,
14209 + 0xd28c, 0x0180, 0x080c, 0x5f2d, 0x9082, 0x0006, 0x02c8, 0xd484,
14210 + 0x1118, 0x080c, 0x5bd1, 0x0028, 0x080c, 0x2de6, 0x0188, 0x080c,
14211 + 0x2e11, 0x0070, 0x080c, 0x2d5b, 0x080c, 0xb759, 0x1148, 0x080c,
14212 + 0x2c4b, 0x0170, 0x0028, 0x080c, 0x2de6, 0x0110, 0x0441, 0x0140,
14213 + 0x001e, 0x8108, 0x015e, 0x1f04, 0x2bbd, 0x70a7, 0xffff, 0x0018,
14214 + 0x001e, 0x015e, 0x71a6, 0x004e, 0x002e, 0x00ce, 0x00be, 0x0005,
14215 + 0x00c6, 0x0016, 0x70a7, 0x0001, 0x2009, 0x007e, 0x080c, 0x5bb0,
14216 + 0x1158, 0xb813, 0x00ff, 0xb817, 0xfffe, 0x080c, 0x2d5b, 0x0499,
14217 + 0x0118, 0x70d8, 0xc0bd, 0x70da, 0x001e, 0x00ce, 0x0005, 0x0016,
14218 + 0x0076, 0x00d6, 0x00c6, 0x2001, 0x1857, 0x2004, 0x9084, 0x00ff,
14219 + 0xb842, 0x080c, 0x95a1, 0x01d0, 0x2b00, 0x6012, 0x080c, 0xb4e6,
14220 + 0x6023, 0x0001, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0000, 0x080c,
14221 + 0x5b61, 0x0126, 0x2091, 0x8000, 0x70a0, 0x8000, 0x70a2, 0x012e,
14222 + 0x2009, 0x0004, 0x080c, 0x95ce, 0x9085, 0x0001, 0x00ce, 0x00de,
14223 + 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2001,
14224 + 0x1857, 0x2004, 0x9084, 0x00ff, 0xb842, 0x080c, 0x95a1, 0x0548,
14225 + 0x2b00, 0x6012, 0xb800, 0xc0c4, 0xb802, 0xb8a0, 0x9086, 0x007e,
14226 + 0x0140, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1110, 0x080c,
14227 + 0x2d1a, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x9006, 0x080c, 0x5b4d,
14228 + 0x2001, 0x0002, 0x080c, 0x5b61, 0x0126, 0x2091, 0x8000, 0x70a0,
14229 + 0x8000, 0x70a2, 0x012e, 0x2009, 0x0002, 0x080c, 0x95ce, 0x9085,
14230 + 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00b6, 0x00c6,
14231 + 0x0026, 0x2009, 0x0080, 0x080c, 0x5bb0, 0x1140, 0xb813, 0x00ff,
14232 + 0xb817, 0xfffc, 0x0039, 0x0110, 0x70df, 0xffff, 0x002e, 0x00ce,
14233 + 0x00be, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x080c, 0x94fe,
14234 + 0x01d0, 0x2b00, 0x6012, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x9006,
14235 + 0x080c, 0x5b4d, 0x2001, 0x0002, 0x080c, 0x5b61, 0x0126, 0x2091,
14236 + 0x8000, 0x70e0, 0x8000, 0x70e2, 0x012e, 0x2009, 0x0002, 0x080c,
14237 + 0x95ce, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005,
14238 + 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, 0x080c,
14239 + 0x5bb0, 0x11b8, 0xb813, 0x00ff, 0xb817, 0xfffd, 0xb8bf, 0x0004,
14240 + 0x080c, 0x94fe, 0x0170, 0x2b00, 0x6012, 0x6316, 0x6023, 0x0001,
14241 + 0x620a, 0x080c, 0xb4e6, 0x2009, 0x0022, 0x080c, 0x95ce, 0x9085,
14242 + 0x0001, 0x012e, 0x00de, 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0066,
14243 + 0x0036, 0x0026, 0x00b6, 0x21f0, 0x080c, 0x7d60, 0x080c, 0x7cef,
14244 + 0x080c, 0x93ac, 0x080c, 0xa3ab, 0x3e08, 0x2130, 0x81ff, 0x0120,
14245 + 0x20a9, 0x007e, 0x900e, 0x0018, 0x20a9, 0x007f, 0x900e, 0x0016,
14246 + 0x080c, 0x5c0d, 0x1140, 0x9686, 0x0002, 0x1118, 0xb800, 0xd0bc,
14247 + 0x1110, 0x080c, 0x56f3, 0x001e, 0x8108, 0x1f04, 0x2cff, 0x86ff,
14248 + 0x1110, 0x080c, 0x2e3e, 0x00be, 0x002e, 0x003e, 0x006e, 0x00ce,
14249 + 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x00b6,
14250 + 0x6210, 0x2258, 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, 0x7d55,
14251 + 0x0076, 0x2039, 0x0000, 0x080c, 0x7c4d, 0x2c08, 0x080c, 0xc73e,
14252 + 0x007e, 0x001e, 0xba10, 0xbb14, 0x080c, 0x56f3, 0xba12, 0xbb16,
14253 + 0x00be, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6,
14254 + 0x0006, 0x00b6, 0x6010, 0x2058, 0xb8a0, 0x00be, 0x9086, 0x0080,
14255 + 0x0150, 0x2071, 0x1800, 0x70a0, 0x9005, 0x0110, 0x8001, 0x70a2,
14256 + 0x000e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x70e0, 0x9005, 0x0dc0,
14257 + 0x8001, 0x70e2, 0x0ca8, 0xb800, 0xc08c, 0xb802, 0x0005, 0x00f6,
14258 + 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x0156, 0x2178, 0x81ff,
14259 + 0x1118, 0x20a9, 0x0001, 0x0088, 0x080c, 0x4dea, 0xd0c4, 0x0150,
14260 + 0xd0a4, 0x0140, 0x9006, 0x0046, 0x2020, 0x2009, 0x002d, 0x080c,
14261 + 0xc9c5, 0x004e, 0x20a9, 0x0800, 0x9016, 0x0026, 0x928e, 0x007e,
14262 + 0x0904, 0x2dc7, 0x928e, 0x007f, 0x0904, 0x2dc7, 0x928e, 0x0080,
14263 + 0x05f0, 0x9288, 0x1000, 0x210c, 0x81ff, 0x05c8, 0x8fff, 0x1148,
14264 + 0x2001, 0x195b, 0x0006, 0x2003, 0x0001, 0x04e9, 0x000e, 0x2003,
14265 + 0x0000, 0x00b6, 0x00c6, 0x2158, 0x2001, 0x0001, 0x080c, 0x5ef7,
14266 + 0x00ce, 0x00be, 0x2019, 0x0029, 0x080c, 0x7d55, 0x0076, 0x2039,
14267 + 0x0000, 0x080c, 0x7c4d, 0x00b6, 0x00c6, 0x0026, 0x2158, 0xba04,
14268 + 0x9294, 0x00ff, 0x9286, 0x0006, 0x1118, 0xb807, 0x0404, 0x0028,
14269 + 0x2001, 0x0004, 0x8007, 0x9215, 0xba06, 0x002e, 0x00ce, 0x00be,
14270 + 0x0016, 0x2c08, 0x080c, 0xc73e, 0x001e, 0x007e, 0x2160, 0x002e,
14271 + 0x8210, 0x1f04, 0x2d7d, 0x015e, 0x001e, 0x002e, 0x003e, 0x00ce,
14272 + 0x00ee, 0x00fe, 0x0005, 0x0046, 0x0026, 0x0016, 0x080c, 0x4dea,
14273 + 0xd0c4, 0x0140, 0xd0a4, 0x0130, 0x9006, 0x2220, 0x2009, 0x0029,
14274 + 0x080c, 0xc9c5, 0x001e, 0x002e, 0x004e, 0x0005, 0x0016, 0x0026,
14275 + 0x0036, 0x00c6, 0x728c, 0x82ff, 0x01e8, 0x080c, 0x5f25, 0x11d0,
14276 + 0x2100, 0x080c, 0x2430, 0x81ff, 0x01b8, 0x2019, 0x0001, 0x8314,
14277 + 0x92e0, 0x1c80, 0x2c04, 0xd384, 0x0120, 0x9084, 0xff00, 0x8007,
14278 + 0x0010, 0x9084, 0x00ff, 0x9116, 0x0138, 0x9096, 0x00ff, 0x0110,
14279 + 0x8318, 0x0c68, 0x9085, 0x0001, 0x00ce, 0x003e, 0x002e, 0x001e,
14280 + 0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0036, 0x2019,
14281 + 0x0029, 0x00a9, 0x003e, 0x9180, 0x1000, 0x2004, 0x9065, 0x0158,
14282 + 0x0016, 0x00c6, 0x2061, 0x1a72, 0x001e, 0x6112, 0x080c, 0x2d1a,
14283 + 0x001e, 0x080c, 0x5bd1, 0x012e, 0x00ce, 0x001e, 0x0005, 0x0016,
14284 + 0x0026, 0x2110, 0x080c, 0x905b, 0x080c, 0xcc7a, 0x002e, 0x001e,
14285 + 0x0005, 0x2001, 0x1836, 0x2004, 0xd0cc, 0x0005, 0x00c6, 0x080c,
14286 + 0x6877, 0x1118, 0x20a9, 0x0800, 0x0010, 0x20a9, 0x0782, 0x080c,
14287 + 0x6877, 0x1110, 0x900e, 0x0010, 0x2009, 0x007e, 0x9180, 0x1000,
14288 + 0x2004, 0x9065, 0x0110, 0x080c, 0x5bd1, 0x8108, 0x1f04, 0x2e4e,
14289 + 0x2061, 0x1800, 0x6077, 0x0000, 0x6078, 0x9084, 0x00ff, 0x607a,
14290 + 0x60ab, 0x0000, 0x00ce, 0x0005, 0x2001, 0x1874, 0x2004, 0xd0bc,
14291 + 0x0005, 0x2011, 0x1853, 0x2214, 0xd2ec, 0x0005, 0x7eef, 0x7de8,
14292 + 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6,
14293 + 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc,
14294 + 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc,
14295 + 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1,
14296 + 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6,
14297 + 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797,
14298 + 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c,
14299 + 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071,
14300 + 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66,
14301 + 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454,
14302 + 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a,
14303 + 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039,
14304 + 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d,
14305 + 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123,
14306 + 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f,
14307 + 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700,
14308 + 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000,
14309 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000,
14310 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000,
14311 + 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000,
14312 + 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700,
14313 + 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100,
14314 + 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00,
14315 + 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
14316 + 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400,
14317 + 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00,
14318 + 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800,
14319 + 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400,
14320 + 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000,
14321 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x8000, 0x8000,
14322 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
14323 + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x2071, 0x1893,
14324 + 0x7003, 0x0002, 0x9006, 0x7012, 0x7016, 0x7046, 0x704a, 0x7037,
14325 + 0x18ae, 0x703b, 0x18ae, 0x7007, 0x0001, 0x080c, 0x0fc7, 0x090c,
14326 + 0x0d84, 0x2900, 0x7066, 0xa867, 0x0002, 0xa8ab, 0xdcb0, 0x080c,
14327 + 0x0fc7, 0x090c, 0x0d84, 0x2900, 0x706a, 0xa867, 0x0002, 0xa8ab,
14328 + 0xdcb0, 0x0005, 0x2071, 0x1893, 0x7004, 0x0002, 0x2f9a, 0x2f9b,
14329 + 0x2fa3, 0x2fb7, 0x0005, 0x1004, 0x2fa2, 0x0e04, 0x2fa2, 0x2079,
14330 + 0x0000, 0x0458, 0x0005, 0x2079, 0x0000, 0x2061, 0x18ac, 0x2c4c,
14331 + 0xa86c, 0x908e, 0x0100, 0x0128, 0x9086, 0x0200, 0x0904, 0x3089,
14332 + 0x0005, 0x7014, 0x2048, 0x2061, 0x1800, 0x7018, 0x0807, 0x7010,
14333 + 0x2048, 0xa864, 0x9094, 0x00ff, 0x9296, 0x0029, 0x1120, 0xaa78,
14334 + 0xd2fc, 0x0128, 0x0005, 0x9086, 0x0103, 0x0108, 0x0005, 0x2079,
14335 + 0x0000, 0x2061, 0x1800, 0x7018, 0x0807, 0x2061, 0x1800, 0x7880,
14336 + 0x908a, 0x0040, 0x1210, 0x61cc, 0x0042, 0x2100, 0x908a, 0x003f,
14337 + 0x1a04, 0x3086, 0x61cc, 0x0804, 0x301d, 0x305f, 0x3095, 0x309f,
14338 + 0x30a3, 0x30ad, 0x30b3, 0x30b7, 0x30c7, 0x30ca, 0x30d4, 0x30d9,
14339 + 0x30de, 0x30e9, 0x30f4, 0x3103, 0x3112, 0x3120, 0x3137, 0x3152,
14340 + 0x31f2, 0x31f7, 0x3235, 0x32dd, 0x32ee, 0x3311, 0x3086, 0x3086,
14341 + 0x3086, 0x3349, 0x3367, 0x3370, 0x339f, 0x33a5, 0x3086, 0x33dd,
14342 + 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x33e8, 0x33f1, 0x33f9,
14343 + 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x33fb,
14344 + 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3418, 0x3475, 0x3086,
14345 + 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x0002, 0x349f, 0x34a2,
14346 + 0x3502, 0x351b, 0x354b, 0x37ed, 0x3086, 0x49c6, 0x3086, 0x3086,
14347 + 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x3086, 0x30d4, 0x30d9,
14348 + 0x3cbf, 0x3086, 0x3cd6, 0x4a55, 0x4aa5, 0x4ba8, 0x3086, 0x4c0a,
14349 + 0x4c46, 0x4c77, 0x4d79, 0x4ca4, 0x4cfb, 0x3086, 0x3cda, 0x3ea6,
14350 + 0x3ebc, 0x3ed8, 0x3f3d, 0x3fb1, 0x3fd1, 0x403b, 0x404c, 0x405d,
14351 + 0x4060, 0x4085, 0x40f9, 0x415b, 0x4163, 0x428b, 0x43b4, 0x43dd,
14352 + 0x4504, 0x4522, 0x452e, 0x45d0, 0x46a0, 0x3086, 0x3086, 0x3086,
14353 + 0x3086, 0x4706, 0x4721, 0x48ac, 0x4982, 0x7148, 0x0000, 0x2021,
14354 + 0x4000, 0x080c, 0x445b, 0x0126, 0x2091, 0x8000, 0x0e04, 0x3069,
14355 + 0x0010, 0x012e, 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833,
14356 + 0x0011, 0x0010, 0x7833, 0x0010, 0x7c82, 0x7986, 0x7a8a, 0x7b8e,
14357 + 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e,
14358 + 0x7007, 0x0001, 0x2091, 0x5000, 0x012e, 0x0005, 0x2021, 0x4001,
14359 + 0x08c0, 0x2021, 0x4002, 0x08a8, 0x2021, 0x4003, 0x0890, 0x2021,
14360 + 0x4005, 0x0878, 0x2021, 0x4006, 0x0860, 0x2039, 0x0001, 0x902e,
14361 + 0x2520, 0x7b88, 0x7a8c, 0x7884, 0x7990, 0x0804, 0x4468, 0x7883,
14362 + 0x0004, 0x7884, 0x0807, 0x2039, 0x0001, 0x902e, 0x2520, 0x7b88,
14363 + 0x7a8c, 0x7884, 0x7990, 0x0804, 0x446b, 0x7984, 0x7888, 0x2114,
14364 + 0x200a, 0x0804, 0x305f, 0x7984, 0x2114, 0x0804, 0x305f, 0x20e1,
14365 + 0x0000, 0x2099, 0x0021, 0x20e9, 0x0000, 0x20a1, 0x0021, 0x20a9,
14366 + 0x001f, 0x4003, 0x7984, 0x7a88, 0x7b8c, 0x0804, 0x305f, 0x7884,
14367 + 0x2060, 0x04d8, 0x2009, 0x0003, 0x2011, 0x0002, 0x2019, 0x000a,
14368 + 0x789b, 0x0117, 0x0804, 0x305f, 0x2039, 0x0001, 0x7d98, 0x7c9c,
14369 + 0x0800, 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0848, 0x79a0, 0x9182,
14370 + 0x0040, 0x0210, 0x0804, 0x3092, 0x2138, 0x7d98, 0x7c9c, 0x0804,
14371 + 0x3099, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x3092, 0x2138,
14372 + 0x7d98, 0x7c9c, 0x0804, 0x30a7, 0x79a0, 0x9182, 0x0040, 0x0210,
14373 + 0x0804, 0x3092, 0x21e8, 0x7984, 0x7888, 0x20a9, 0x0001, 0x21a0,
14374 + 0x4004, 0x0804, 0x305f, 0x2061, 0x0800, 0xe10c, 0x9006, 0x2c15,
14375 + 0x9200, 0x8c60, 0x8109, 0x1dd8, 0x2010, 0x9005, 0x0904, 0x305f,
14376 + 0x0804, 0x308c, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x3092,
14377 + 0x21e0, 0x20a9, 0x0001, 0x7984, 0x2198, 0x4012, 0x0804, 0x305f,
14378 + 0x2069, 0x1852, 0x7884, 0x7990, 0x911a, 0x1a04, 0x3092, 0x8019,
14379 + 0x0904, 0x3092, 0x684a, 0x6942, 0x788c, 0x6852, 0x7888, 0x6856,
14380 + 0x9006, 0x685a, 0x685e, 0x080c, 0x6b71, 0x0804, 0x305f, 0x2069,
14381 + 0x1852, 0x7884, 0x7994, 0x911a, 0x1a04, 0x3092, 0x8019, 0x0904,
14382 + 0x3092, 0x684e, 0x6946, 0x788c, 0x6862, 0x7888, 0x6866, 0x9006,
14383 + 0x686a, 0x686e, 0x0126, 0x2091, 0x8000, 0x080c, 0x5f97, 0x012e,
14384 + 0x0804, 0x305f, 0x902e, 0x2520, 0x81ff, 0x1904, 0x308f, 0x7984,
14385 + 0x7b88, 0x7a8c, 0x20a9, 0x0005, 0x20e9, 0x0001, 0x20a1, 0x189a,
14386 + 0x4101, 0x080c, 0x441f, 0x0904, 0x308f, 0x2009, 0x0020, 0xa85c,
14387 + 0x9080, 0x0019, 0xaf60, 0x080c, 0x4468, 0x701b, 0x3170, 0x0005,
14388 + 0xa864, 0x2008, 0x9084, 0x00ff, 0x9096, 0x0011, 0x0168, 0x9096,
14389 + 0x0019, 0x0150, 0x9096, 0x0015, 0x0138, 0x9096, 0x0048, 0x0120,
14390 + 0x9096, 0x0029, 0x1904, 0x308f, 0x810f, 0x918c, 0x00ff, 0x0904,
14391 + 0x308f, 0x710e, 0x700c, 0x8001, 0x0548, 0x700e, 0x080c, 0x441f,
14392 + 0x0904, 0x308f, 0x2009, 0x0020, 0x7064, 0x2040, 0xa28c, 0xa390,
14393 + 0xa494, 0xa598, 0x9290, 0x0040, 0x9399, 0x0000, 0x94a1, 0x0000,
14394 + 0x95a9, 0x0000, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4468,
14395 + 0x701b, 0x31ab, 0x0005, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0002,
14396 + 0x0120, 0x9096, 0x000a, 0x1904, 0x308f, 0x08a0, 0x7010, 0x2048,
14397 + 0xa868, 0xc0fd, 0xa86a, 0xa864, 0x9084, 0x00ff, 0x9096, 0x0029,
14398 + 0x1160, 0xc2fd, 0xaa7a, 0x080c, 0x57e4, 0x0150, 0x0126, 0x2091,
14399 + 0x8000, 0xa87a, 0xa982, 0x012e, 0x0050, 0x080c, 0x5ac6, 0x1128,
14400 + 0x7007, 0x0003, 0x701b, 0x31d7, 0x0005, 0x080c, 0x63d1, 0x0126,
14401 + 0x2091, 0x8000, 0x20a9, 0x0005, 0x20e1, 0x0001, 0x2099, 0x189a,
14402 + 0x400a, 0x2100, 0x9210, 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9,
14403 + 0x0000, 0xa85c, 0x9080, 0x0019, 0x2009, 0x0020, 0x012e, 0xaf60,
14404 + 0x0804, 0x446b, 0x61b4, 0x7884, 0x60b6, 0x0804, 0x305f, 0x2091,
14405 + 0x8000, 0x7837, 0x4000, 0x7833, 0x0010, 0x7883, 0x4000, 0x7887,
14406 + 0x4953, 0x788b, 0x5020, 0x788f, 0x2020, 0x2009, 0x017f, 0x2104,
14407 + 0x7892, 0x3f00, 0x7896, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200,
14408 + 0x603c, 0x8007, 0x9205, 0x789a, 0x2009, 0x04fd, 0x2104, 0x789e,
14409 + 0x2091, 0x5000, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084,
14410 + 0x0180, 0x2001, 0x19e7, 0x2004, 0x9005, 0x0128, 0x2001, 0x008b,
14411 + 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, 0x0002, 0x2003,
14412 + 0x1001, 0x2071, 0x0080, 0x0804, 0x0427, 0x81ff, 0x1904, 0x308f,
14413 + 0x7984, 0x080c, 0x5c0d, 0x1904, 0x3092, 0x7e98, 0x9684, 0x3fff,
14414 + 0x9082, 0x4000, 0x0210, 0x0804, 0x3092, 0x7c88, 0x7d8c, 0x080c,
14415 + 0x5d70, 0x080c, 0x5d3f, 0x0000, 0x1518, 0x2061, 0x1cd0, 0x0126,
14416 + 0x2091, 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d,
14417 + 0x0130, 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0150, 0x012e,
14418 + 0x9ce0, 0x0018, 0x2001, 0x1818, 0x2004, 0x9c02, 0x1a04, 0x308f,
14419 + 0x0c30, 0x080c, 0xad1e, 0x012e, 0x0904, 0x308f, 0x0804, 0x305f,
14420 + 0x900e, 0x2001, 0x0005, 0x080c, 0x63d1, 0x0126, 0x2091, 0x8000,
14421 + 0x080c, 0xb37a, 0x080c, 0x61a9, 0x012e, 0x0804, 0x305f, 0x00a6,
14422 + 0x2950, 0xb198, 0x080c, 0x5c0d, 0x1904, 0x32ca, 0xb6a4, 0x9684,
14423 + 0x3fff, 0x9082, 0x4000, 0x0208, 0x04e8, 0xb49c, 0xb5a0, 0x080c,
14424 + 0x5d70, 0x080c, 0x5d3f, 0x1520, 0x2061, 0x1cd0, 0x0126, 0x2091,
14425 + 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x904d, 0x0130,
14426 + 0xa86c, 0x9406, 0x1118, 0xa870, 0x9506, 0x0158, 0x012e, 0x9ce0,
14427 + 0x0018, 0x2001, 0x1818, 0x2004, 0x9c02, 0x2009, 0x000d, 0x12b0,
14428 + 0x0c28, 0x080c, 0xad1e, 0x012e, 0x2009, 0x0003, 0x0178, 0x00e0,
14429 + 0x900e, 0x2001, 0x0005, 0x080c, 0x63d1, 0x0126, 0x2091, 0x8000,
14430 + 0x080c, 0xb37a, 0x080c, 0x61a9, 0x012e, 0x0070, 0xb097, 0x4005,
14431 + 0xb19a, 0x0010, 0xb097, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001,
14432 + 0x0030, 0x2a48, 0x00ae, 0x0005, 0xb097, 0x4000, 0x9006, 0x918d,
14433 + 0x0001, 0x2008, 0x2a48, 0x00ae, 0x0005, 0x81ff, 0x1904, 0x308f,
14434 + 0x080c, 0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904, 0x308f,
14435 + 0x080c, 0x5d76, 0x0904, 0x308f, 0x0804, 0x3fc8, 0x81ff, 0x1904,
14436 + 0x308f, 0x080c, 0x4452, 0x0904, 0x3092, 0x080c, 0x5e04, 0x0904,
14437 + 0x308f, 0x2019, 0x0005, 0x79a8, 0x080c, 0x5d91, 0x0904, 0x308f,
14438 + 0x7888, 0x908a, 0x1000, 0x1a04, 0x3092, 0x8003, 0x800b, 0x810b,
14439 + 0x9108, 0x080c, 0x7826, 0x7984, 0xd184, 0x1904, 0x305f, 0x0804,
14440 + 0x3fc8, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0118, 0x2009, 0x0001,
14441 + 0x0450, 0x2029, 0x07ff, 0x6454, 0x2400, 0x9506, 0x01f8, 0x2508,
14442 + 0x080c, 0x5c0d, 0x11d8, 0x080c, 0x5e04, 0x1128, 0x2009, 0x0002,
14443 + 0x62bc, 0x2518, 0x00c0, 0x2019, 0x0004, 0x900e, 0x080c, 0x5d91,
14444 + 0x1118, 0x2009, 0x0006, 0x0078, 0x7884, 0x908a, 0x1000, 0x1270,
14445 + 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x7826, 0x8529, 0x1ae0,
14446 + 0x012e, 0x0804, 0x305f, 0x012e, 0x0804, 0x308f, 0x012e, 0x0804,
14447 + 0x3092, 0x080c, 0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904,
14448 + 0x308f, 0xbaa0, 0x2019, 0x0005, 0x00c6, 0x2061, 0x0000, 0x080c,
14449 + 0x7d55, 0x0076, 0x2039, 0x0000, 0x080c, 0x7c4d, 0x900e, 0x080c,
14450 + 0xc73e, 0x007e, 0x00ce, 0x080c, 0x5d70, 0x0804, 0x305f, 0x080c,
14451 + 0x4436, 0x0904, 0x3092, 0x080c, 0x5d70, 0x2208, 0x0804, 0x305f,
14452 + 0x0156, 0x00d6, 0x00e6, 0x2069, 0x1904, 0x6810, 0x6914, 0x910a,
14453 + 0x1208, 0x900e, 0x6816, 0x9016, 0x901e, 0x20a9, 0x007e, 0x2069,
14454 + 0x1000, 0x2d04, 0x905d, 0x0118, 0xb84c, 0x0059, 0x9210, 0x8d68,
14455 + 0x1f04, 0x3381, 0x2300, 0x9218, 0x00ee, 0x00de, 0x015e, 0x0804,
14456 + 0x305f, 0x00f6, 0x0016, 0x907d, 0x0138, 0x9006, 0x8000, 0x2f0c,
14457 + 0x81ff, 0x0110, 0x2178, 0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069,
14458 + 0x1904, 0x6910, 0x62b8, 0x0804, 0x305f, 0x81ff, 0x1904, 0x308f,
14459 + 0x6154, 0x9190, 0x2e6e, 0x2215, 0x9294, 0x00ff, 0x6374, 0x83ff,
14460 + 0x0108, 0x6278, 0x67d8, 0x97c4, 0x000a, 0x98c6, 0x000a, 0x1118,
14461 + 0x2031, 0x0001, 0x00f0, 0x97c4, 0x0022, 0x98c6, 0x0022, 0x1118,
14462 + 0x2031, 0x0003, 0x00b0, 0x97c4, 0x0012, 0x98c6, 0x0012, 0x1118,
14463 + 0x2031, 0x0002, 0x0070, 0x080c, 0x6877, 0x1118, 0x2031, 0x0004,
14464 + 0x0040, 0xd79c, 0x0120, 0x2009, 0x0005, 0x0804, 0x308f, 0x2031,
14465 + 0x0000, 0x7e9a, 0x7f9e, 0x0804, 0x305f, 0x6144, 0x6248, 0x2019,
14466 + 0x1953, 0x231c, 0x2001, 0x1954, 0x2004, 0x789a, 0x0804, 0x305f,
14467 + 0x0126, 0x2091, 0x8000, 0x6134, 0x6238, 0x633c, 0x012e, 0x0804,
14468 + 0x305f, 0x080c, 0x4452, 0x0904, 0x3092, 0xba44, 0xbb38, 0x0804,
14469 + 0x305f, 0x080c, 0x0d84, 0x6144, 0x6248, 0x7884, 0x6046, 0x7b88,
14470 + 0x634a, 0x2069, 0x1852, 0x831f, 0x9305, 0x6816, 0x788c, 0x2069,
14471 + 0x1953, 0x2d1c, 0x206a, 0x7e98, 0x9682, 0x0014, 0x1210, 0x2031,
14472 + 0x07d0, 0x2069, 0x1954, 0x2d04, 0x266a, 0x789a, 0x0804, 0x305f,
14473 + 0x0126, 0x2091, 0x8000, 0x6134, 0x7884, 0x6036, 0x910e, 0xd1b4,
14474 + 0x190c, 0x0e56, 0xd0c4, 0x01a8, 0x00d6, 0x78a8, 0x2009, 0x196a,
14475 + 0x200a, 0x78ac, 0x2011, 0x196b, 0x2012, 0x2069, 0x0100, 0x6838,
14476 + 0x9086, 0x0007, 0x1118, 0x2214, 0x6a5a, 0x0010, 0x210c, 0x695a,
14477 + 0x00de, 0x7884, 0x7888, 0x603a, 0x2011, 0x0114, 0x220c, 0x7888,
14478 + 0xd08c, 0x0118, 0x918d, 0x0080, 0x0010, 0x918c, 0xff7f, 0x2112,
14479 + 0x613c, 0x788c, 0x603e, 0x910e, 0xd1e4, 0x190c, 0x0e73, 0x603c,
14480 + 0xd0cc, 0x0120, 0x78b0, 0x2011, 0x0114, 0x2012, 0x012e, 0x0804,
14481 + 0x305f, 0x00f6, 0x2079, 0x1800, 0x7a34, 0xa898, 0x9084, 0xfebf,
14482 + 0x9215, 0xa89c, 0x9084, 0xfebf, 0x8002, 0x9214, 0x79ec, 0x7834,
14483 + 0x9084, 0x0140, 0x9215, 0x7a36, 0xa897, 0x4000, 0x900e, 0x9085,
14484 + 0x0001, 0x2001, 0x0000, 0x00fe, 0x0005, 0x7898, 0x9005, 0x01a8,
14485 + 0x7888, 0x9025, 0x0904, 0x3092, 0x788c, 0x902d, 0x0904, 0x3092,
14486 + 0x900e, 0x080c, 0x5c0d, 0x1120, 0xba44, 0xbb38, 0xbc46, 0xbd3a,
14487 + 0x9186, 0x07ff, 0x0190, 0x8108, 0x0ca0, 0x080c, 0x4452, 0x0904,
14488 + 0x3092, 0x7888, 0x900d, 0x0904, 0x3092, 0x788c, 0x9005, 0x0904,
14489 + 0x3092, 0xba44, 0xb946, 0xbb38, 0xb83a, 0x0804, 0x305f, 0x2011,
14490 + 0xbc09, 0x0010, 0x2011, 0xbc05, 0x080c, 0x4dfe, 0x1904, 0x308f,
14491 + 0x00c6, 0x2061, 0x0100, 0x7984, 0x9186, 0x00ff, 0x1130, 0x2001,
14492 + 0x1816, 0x2004, 0x9085, 0xff00, 0x0088, 0x9182, 0x007f, 0x16e8,
14493 + 0x9188, 0x2e6e, 0x210d, 0x918c, 0x00ff, 0x2001, 0x1816, 0x2004,
14494 + 0x0026, 0x9116, 0x002e, 0x0588, 0x810f, 0x9105, 0x0126, 0x2091,
14495 + 0x8000, 0x0006, 0x080c, 0x94fe, 0x000e, 0x0518, 0x6016, 0x600b,
14496 + 0xbc05, 0x7984, 0x00b6, 0x080c, 0x5bb0, 0x2b08, 0x00be, 0x1500,
14497 + 0x6112, 0x6023, 0x0001, 0x080c, 0x441f, 0x01d0, 0x9006, 0xa866,
14498 + 0x7007, 0x0003, 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x701b, 0x34fb,
14499 + 0x2900, 0x6016, 0x2009, 0x0032, 0x080c, 0x95ce, 0x012e, 0x00ce,
14500 + 0x0005, 0x012e, 0x00ce, 0x0804, 0x308f, 0x00ce, 0x0804, 0x3092,
14501 + 0x080c, 0x9554, 0x0cb0, 0xa830, 0x9086, 0x0100, 0x0904, 0x308f,
14502 + 0x0804, 0x305f, 0x2061, 0x1a3d, 0x0126, 0x2091, 0x8000, 0x6000,
14503 + 0xd084, 0x0170, 0x6104, 0x6208, 0x2061, 0x1800, 0x634c, 0x606c,
14504 + 0x789a, 0x60bc, 0x789e, 0x60b8, 0x78aa, 0x012e, 0x0804, 0x305f,
14505 + 0x900e, 0x2110, 0x0c88, 0x81ff, 0x1904, 0x308f, 0x080c, 0x6877,
14506 + 0x0904, 0x308f, 0x0126, 0x2091, 0x8000, 0x624c, 0x606c, 0x9202,
14507 + 0x0248, 0x9085, 0x0001, 0x080c, 0x2466, 0x080c, 0x4fc7, 0x012e,
14508 + 0x0804, 0x305f, 0x012e, 0x0804, 0x3092, 0x0006, 0x0016, 0x00c6,
14509 + 0x00e6, 0x2001, 0x1976, 0x2070, 0x2061, 0x1852, 0x6008, 0x2072,
14510 + 0x900e, 0x2011, 0x1400, 0x080c, 0x7a4b, 0x7206, 0x00ee, 0x00ce,
14511 + 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0128,
14512 + 0x012e, 0x2021, 0x400b, 0x0804, 0x3061, 0x7884, 0xd0fc, 0x0148,
14513 + 0x2001, 0x002a, 0x2004, 0x9082, 0x00e1, 0x02a8, 0x012e, 0x0804,
14514 + 0x3092, 0x2001, 0x002a, 0x2004, 0x2069, 0x1852, 0x6908, 0x9102,
14515 + 0x1218, 0x012e, 0x0804, 0x3092, 0x614c, 0x606c, 0x9106, 0x0118,
14516 + 0x012e, 0x0804, 0x308f, 0x080c, 0x94d3, 0x0dd0, 0x7884, 0xd0fc,
14517 + 0x0904, 0x35ca, 0x00c6, 0x080c, 0x441f, 0x00ce, 0x0d88, 0xa867,
14518 + 0x0000, 0x7884, 0xa80a, 0x7898, 0xa80e, 0x789c, 0xa812, 0x2001,
14519 + 0x002e, 0x2004, 0xa81a, 0x2001, 0x002f, 0x2004, 0xa81e, 0x2001,
14520 + 0x0030, 0x2004, 0xa822, 0x2001, 0x0031, 0x2004, 0xa826, 0x2001,
14521 + 0x0034, 0x2004, 0xa82a, 0x2001, 0x0035, 0x2004, 0xa82e, 0x2001,
14522 + 0x002a, 0x2004, 0x9080, 0x0003, 0x9084, 0x00fc, 0x8004, 0xa816,
14523 + 0x080c, 0x3750, 0x0928, 0x7010, 0x2048, 0xad2c, 0xac28, 0xab1c,
14524 + 0xaa18, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021,
14525 + 0x0000, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0,
14526 + 0x9080, 0x001b, 0x080c, 0x4468, 0x701b, 0x368d, 0x701f, 0x0001,
14527 + 0x012e, 0x0005, 0x0046, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6,
14528 + 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3535, 0x2001, 0x196c, 0x2003,
14529 + 0x0000, 0x2021, 0x000a, 0x2061, 0x0100, 0x6104, 0x0016, 0x60bb,
14530 + 0x0000, 0x60bf, 0x32e1, 0x60bf, 0x0012, 0x080c, 0x37bf, 0x080c,
14531 + 0x377e, 0x00f6, 0x00e6, 0x0086, 0x2940, 0x2071, 0x1a33, 0x2079,
14532 + 0x0090, 0x00d6, 0x2069, 0x0000, 0x6884, 0xd0b4, 0x0140, 0x2001,
14533 + 0x0035, 0x2004, 0x780e, 0x2001, 0x0034, 0x2004, 0x780a, 0x00de,
14534 + 0x2011, 0x0001, 0x080c, 0x3b2b, 0x008e, 0x00ee, 0x00fe, 0x080c,
14535 + 0x3a61, 0x080c, 0x396a, 0x05b8, 0x2001, 0x020b, 0x2004, 0x9084,
14536 + 0x0140, 0x1db8, 0x080c, 0x3b7f, 0x00f6, 0x2079, 0x0300, 0x78bc,
14537 + 0x00fe, 0x908c, 0x0070, 0x1560, 0x2071, 0x0200, 0x7037, 0x0000,
14538 + 0x7050, 0x9084, 0xff00, 0x9086, 0x3200, 0x1510, 0x7037, 0x0001,
14539 + 0x7050, 0x9084, 0xff00, 0x9086, 0xe100, 0x11d0, 0x7037, 0x0000,
14540 + 0x7054, 0x7037, 0x0000, 0x715c, 0x9106, 0x1190, 0x2001, 0x181e,
14541 + 0x2004, 0x9106, 0x1168, 0x00c6, 0x2061, 0x0100, 0x6024, 0x9084,
14542 + 0x1e00, 0x00ce, 0x0138, 0x080c, 0x3974, 0x080c, 0x3779, 0x0058,
14543 + 0x080c, 0x3779, 0x080c, 0x3ac3, 0x080c, 0x3a57, 0x2001, 0x020b,
14544 + 0x2004, 0xd0e4, 0x0dd8, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061,
14545 + 0x0100, 0x6027, 0x0002, 0x001e, 0x6106, 0x2011, 0x020d, 0x2013,
14546 + 0x0020, 0x60bb, 0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, 0x2001,
14547 + 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x1245, 0x2009,
14548 + 0x0028, 0x080c, 0x2014, 0x2001, 0x0227, 0x200c, 0x2102, 0x00fe,
14549 + 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, 0x008e, 0x004e,
14550 + 0x2001, 0x196c, 0x2004, 0x9005, 0x1118, 0x012e, 0x0804, 0x305f,
14551 + 0x012e, 0x2021, 0x400c, 0x0804, 0x3061, 0x0016, 0x0026, 0x0036,
14552 + 0x0046, 0x0056, 0x0076, 0x0086, 0x0096, 0x00d6, 0x0156, 0x7010,
14553 + 0x2048, 0x701c, 0x20a8, 0x8000, 0x701e, 0xa804, 0x9005, 0x0904,
14554 + 0x36e9, 0x2048, 0x1f04, 0x369d, 0x7064, 0x2040, 0xa28c, 0xa390,
14555 + 0xa494, 0xa598, 0xa930, 0xa808, 0xd0b4, 0x1120, 0x2029, 0x0000,
14556 + 0x2021, 0x0000, 0x0096, 0x7010, 0x2048, 0xa864, 0x009e, 0x9086,
14557 + 0x0103, 0x0170, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084,
14558 + 0xffc0, 0x9080, 0x001b, 0x080c, 0x4468, 0x701b, 0x368d, 0x00b0,
14559 + 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080,
14560 + 0x001b, 0x21a8, 0x27e0, 0x2098, 0x27e8, 0x20a0, 0x0006, 0x080c,
14561 + 0x0f2b, 0x000e, 0x080c, 0x446b, 0x701b, 0x368d, 0x015e, 0x00de,
14562 + 0x009e, 0x008e, 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e,
14563 + 0x0005, 0x7010, 0x2048, 0xa864, 0x9086, 0x0103, 0x1118, 0x701b,
14564 + 0x374e, 0x0450, 0x7010, 0x2048, 0xa868, 0xc0fd, 0xa86a, 0x2009,
14565 + 0x007f, 0x080c, 0x5bb0, 0x0110, 0x9006, 0x0030, 0xb813, 0x00ff,
14566 + 0xb817, 0xfffd, 0x080c, 0xb535, 0x015e, 0x00de, 0x009e, 0x008e,
14567 + 0x007e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, 0x0904, 0x308f,
14568 + 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, 0x0086, 0x0096,
14569 + 0x00d6, 0x0156, 0x701b, 0x3720, 0x7007, 0x0003, 0x0804, 0x36de,
14570 + 0x0076, 0xa830, 0x9086, 0x0100, 0x2021, 0x400c, 0x0904, 0x3061,
14571 + 0xad10, 0xac0c, 0xab24, 0xaa20, 0xa930, 0xa808, 0xd0b4, 0x1120,
14572 + 0x2029, 0x0000, 0x2021, 0x0000, 0x8906, 0x8006, 0x8007, 0x90bc,
14573 + 0x003f, 0x9084, 0xffc0, 0x9080, 0x001b, 0x21a8, 0x27e0, 0x2098,
14574 + 0x27e8, 0x20a0, 0x0006, 0x080c, 0x0f2b, 0x000e, 0x080c, 0x446b,
14575 + 0x007e, 0x701b, 0x368d, 0x701f, 0x0001, 0x0005, 0x0804, 0x305f,
14576 + 0x0156, 0x00c6, 0xa814, 0x908a, 0x001e, 0x0218, 0xa833, 0x001e,
14577 + 0x0010, 0xa832, 0x0078, 0x81ff, 0x0168, 0x0016, 0x080c, 0x441f,
14578 + 0x001e, 0x0130, 0xa800, 0x2040, 0xa008, 0xa80a, 0x2100, 0x0c58,
14579 + 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce, 0x015e, 0x0005, 0x0006,
14580 + 0x00f6, 0x2079, 0x0000, 0x7880, 0x9086, 0x0044, 0x00fe, 0x000e,
14581 + 0x0005, 0x2001, 0x196c, 0x2003, 0x0001, 0x0005, 0x00f6, 0x00e6,
14582 + 0x00c6, 0x2061, 0x0200, 0x2001, 0x1977, 0x2004, 0x601a, 0x2061,
14583 + 0x0100, 0x2001, 0x1976, 0x2004, 0x60ce, 0x6104, 0xc1ac, 0x6106,
14584 + 0x080c, 0x441f, 0xa813, 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a,
14585 + 0x2001, 0x002e, 0x2004, 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a,
14586 + 0x2061, 0x0090, 0x2079, 0x0100, 0x2001, 0x1976, 0x2004, 0x6036,
14587 + 0x2009, 0x0040, 0x080c, 0x2014, 0x2001, 0x002a, 0x2004, 0x9084,
14588 + 0xfff8, 0xa86e, 0x601a, 0xa873, 0x0000, 0x601f, 0x0000, 0x78ca,
14589 + 0x9006, 0x600a, 0x600e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6,
14590 + 0x080c, 0x441f, 0x2940, 0xa013, 0x0019, 0xa017, 0x0001, 0x2800,
14591 + 0xa05a, 0x2001, 0x0030, 0x2004, 0xa866, 0x2001, 0x0031, 0x2004,
14592 + 0xa86a, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e, 0xa873,
14593 + 0x0000, 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x0300, 0x2003,
14594 + 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001, 0x0004, 0x200c,
14595 + 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000,
14596 + 0x81ff, 0x0148, 0x080c, 0x27e7, 0x1130, 0x9006, 0x080c, 0x2747,
14597 + 0x9006, 0x080c, 0x272a, 0x7884, 0x9084, 0x0007, 0x0002, 0x380a,
14598 + 0x3813, 0x381c, 0x3807, 0x3807, 0x3807, 0x3807, 0x3807, 0x012e,
14599 + 0x0804, 0x3092, 0x2009, 0x0114, 0x2104, 0x9085, 0x0800, 0x200a,
14600 + 0x080c, 0x39ba, 0x00c0, 0x2009, 0x0114, 0x2104, 0x9085, 0x4000,
14601 + 0x200a, 0x080c, 0x39ba, 0x0078, 0x080c, 0x6877, 0x1128, 0x012e,
14602 + 0x2009, 0x0016, 0x0804, 0x308f, 0x81ff, 0x0128, 0x012e, 0x2021,
14603 + 0x400b, 0x0804, 0x3061, 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6,
14604 + 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x3535, 0x2009, 0x0101, 0x210c,
14605 + 0x0016, 0x7ec8, 0x7dcc, 0x9006, 0x2068, 0x2060, 0x2058, 0x080c,
14606 + 0x3c52, 0x080c, 0x3bab, 0x903e, 0x2720, 0x00f6, 0x00e6, 0x0086,
14607 + 0x2940, 0x2071, 0x1a33, 0x2079, 0x0090, 0x00d6, 0x2069, 0x0000,
14608 + 0x6884, 0xd0b4, 0x0120, 0x68d4, 0x780e, 0x68d0, 0x780a, 0x00de,
14609 + 0x2011, 0x0001, 0x080c, 0x3b2b, 0x080c, 0x27ef, 0x080c, 0x27ef,
14610 + 0x080c, 0x27ef, 0x080c, 0x27ef, 0x080c, 0x3b2b, 0x008e, 0x00ee,
14611 + 0x00fe, 0x080c, 0x3a61, 0x2001, 0x020b, 0x2004, 0x9084, 0x0140,
14612 + 0x1dd0, 0x00f6, 0x2079, 0x0000, 0x7884, 0x00fe, 0xd0bc, 0x0178,
14613 + 0x2001, 0x0201, 0x200c, 0x81ff, 0x0150, 0x080c, 0x3a3f, 0x2d00,
14614 + 0x9c05, 0x9b05, 0x0120, 0x080c, 0x3974, 0x0804, 0x3921, 0x080c,
14615 + 0x3b7f, 0x080c, 0x3ac3, 0x080c, 0x3a22, 0x080c, 0x3a57, 0x00f6,
14616 + 0x2079, 0x0100, 0x7824, 0xd0ac, 0x0130, 0x8b58, 0x080c, 0x3974,
14617 + 0x00fe, 0x0804, 0x3921, 0x00fe, 0x080c, 0x396a, 0x1150, 0x8d68,
14618 + 0x2001, 0x0032, 0x2602, 0x2001, 0x0033, 0x2502, 0x080c, 0x3974,
14619 + 0x0080, 0x87ff, 0x0138, 0x2001, 0x0201, 0x2004, 0x9005, 0x1908,
14620 + 0x8739, 0x0038, 0x2001, 0x1a30, 0x2004, 0x9086, 0x0000, 0x1904,
14621 + 0x3871, 0x2001, 0x032f, 0x2003, 0x00f6, 0x8631, 0x1208, 0x8529,
14622 + 0x2500, 0x9605, 0x0904, 0x3921, 0x7884, 0xd0bc, 0x0128, 0x2d00,
14623 + 0x9c05, 0x9b05, 0x1904, 0x3921, 0xa013, 0x0019, 0x2001, 0x032a,
14624 + 0x2003, 0x0004, 0x7884, 0xd0ac, 0x1148, 0x2001, 0x1a30, 0x2003,
14625 + 0x0003, 0x2001, 0x032a, 0x2003, 0x0009, 0x0030, 0xa017, 0x0001,
14626 + 0x78b4, 0x9005, 0x0108, 0xa016, 0x2800, 0xa05a, 0x2009, 0x0040,
14627 + 0x080c, 0x2014, 0x2900, 0xa85a, 0xa813, 0x0019, 0x7884, 0xd0a4,
14628 + 0x1180, 0xa817, 0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, 0x0090,
14629 + 0x602b, 0x0008, 0x2001, 0x0203, 0x2004, 0x1f04, 0x38f8, 0x00ce,
14630 + 0x0030, 0xa817, 0x0001, 0x78b0, 0x9005, 0x0108, 0xa816, 0x00f6,
14631 + 0x00c6, 0x2079, 0x0100, 0x2061, 0x0090, 0x7827, 0x0002, 0x2001,
14632 + 0x002a, 0x2004, 0x9084, 0xfff8, 0x601a, 0x0006, 0x2001, 0x002b,
14633 + 0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x00ce, 0x00fe, 0x0804,
14634 + 0x3845, 0x001e, 0x00c6, 0x2001, 0x032a, 0x2003, 0x0004, 0x2061,
14635 + 0x0100, 0x6027, 0x0002, 0x6106, 0x2011, 0x020d, 0x2013, 0x0020,
14636 + 0x2001, 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, 0x1245,
14637 + 0x7884, 0x9084, 0x0003, 0x9086, 0x0002, 0x01a0, 0x2009, 0x0028,
14638 + 0x080c, 0x2014, 0x2001, 0x0227, 0x200c, 0x2102, 0x6050, 0x9084,
14639 + 0xb7ef, 0x6052, 0x602f, 0x0000, 0x604b, 0xf7f7, 0x6043, 0x0090,
14640 + 0x6043, 0x0010, 0x00ce, 0x2d08, 0x2c10, 0x2b18, 0x2b00, 0x9c05,
14641 + 0x9d05, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e,
14642 + 0x008e, 0x1118, 0x012e, 0x0804, 0x305f, 0x012e, 0x2021, 0x400c,
14643 + 0x0804, 0x3061, 0x9085, 0x0001, 0x1d04, 0x3973, 0x2091, 0x6000,
14644 + 0x8420, 0x9486, 0x0064, 0x0005, 0x2001, 0x0105, 0x2003, 0x0010,
14645 + 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x1a30, 0x2003, 0x0000,
14646 + 0x0051, 0x2009, 0x0048, 0x080c, 0x2014, 0x2001, 0x0227, 0x2024,
14647 + 0x2402, 0x9026, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a33, 0x7000,
14648 + 0x9086, 0x0000, 0x0520, 0x2079, 0x0090, 0x2009, 0x0206, 0x2104,
14649 + 0x2009, 0x0203, 0x210c, 0x9106, 0x1120, 0x2009, 0x0040, 0x080c,
14650 + 0x2014, 0x782c, 0xd0fc, 0x0d88, 0x080c, 0x3b7f, 0x7000, 0x9086,
14651 + 0x0000, 0x1d58, 0x782b, 0x0004, 0x782c, 0xd0ac, 0x1de8, 0x2009,
14652 + 0x0040, 0x080c, 0x2014, 0x782b, 0x0002, 0x7003, 0x0000, 0x00ee,
14653 + 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0100, 0x2001, 0x1816, 0x200c,
14654 + 0x7932, 0x7936, 0x080c, 0x2446, 0x7850, 0x9084, 0xfbff, 0x9085,
14655 + 0x0030, 0x7852, 0x2019, 0x01f4, 0x8319, 0x1df0, 0x9084, 0xffcf,
14656 + 0x9085, 0x2000, 0x7852, 0x20a9, 0x0046, 0x1d04, 0x39d5, 0x2091,
14657 + 0x6000, 0x1f04, 0x39d5, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfff,
14658 + 0x7852, 0x2001, 0x0021, 0x2004, 0x9084, 0x0003, 0x9086, 0x0001,
14659 + 0x1120, 0x7850, 0x9084, 0xdfff, 0x7852, 0x784b, 0xf7f7, 0x7843,
14660 + 0x0090, 0x7843, 0x0010, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x39f5,
14661 + 0x7850, 0x9085, 0x1400, 0x7852, 0x2019, 0x61a8, 0x7854, 0xa001,
14662 + 0xa001, 0xd08c, 0x1110, 0x8319, 0x1dc8, 0x7827, 0x0048, 0x7850,
14663 + 0x9085, 0x0400, 0x7852, 0x7843, 0x0040, 0x2019, 0x01f4, 0xa001,
14664 + 0xa001, 0x8319, 0x1de0, 0x2001, 0x0100, 0x080c, 0x28a5, 0x7827,
14665 + 0x0020, 0x7843, 0x0000, 0x9006, 0x080c, 0x28a5, 0x7827, 0x0048,
14666 + 0x00fe, 0x0005, 0x7884, 0xd0ac, 0x11c8, 0x00f6, 0x00e6, 0x2071,
14667 + 0x1a30, 0x2079, 0x0320, 0x2001, 0x0201, 0x2004, 0x9005, 0x0160,
14668 + 0x7000, 0x9086, 0x0000, 0x1140, 0x0051, 0xd0bc, 0x0108, 0x8738,
14669 + 0x7003, 0x0003, 0x782b, 0x0019, 0x00ee, 0x00fe, 0x0005, 0x00f6,
14670 + 0x2079, 0x0300, 0x78bc, 0x00fe, 0x908c, 0x0070, 0x0178, 0x2009,
14671 + 0x0032, 0x260a, 0x2009, 0x0033, 0x250a, 0xd0b4, 0x0108, 0x8c60,
14672 + 0xd0ac, 0x0108, 0x8d68, 0xd0a4, 0x0108, 0x8b58, 0x0005, 0x00f6,
14673 + 0x2079, 0x0200, 0x781c, 0xd084, 0x0110, 0x7837, 0x0050, 0x00fe,
14674 + 0x0005, 0x00e6, 0x2071, 0x0100, 0x2001, 0x1977, 0x2004, 0x70e2,
14675 + 0x080c, 0x376f, 0x1188, 0x2001, 0x181e, 0x2004, 0x2009, 0x181d,
14676 + 0x210c, 0x918c, 0x00ff, 0x706e, 0x716a, 0x7066, 0x918d, 0x3200,
14677 + 0x7162, 0x7073, 0xe109, 0x0080, 0x702c, 0x9085, 0x0002, 0x702e,
14678 + 0x2009, 0x1816, 0x210c, 0x716e, 0x7063, 0x0100, 0x7166, 0x719e,
14679 + 0x706b, 0x0000, 0x7073, 0x0809, 0x7077, 0x0008, 0x7078, 0x9080,
14680 + 0x0100, 0x707a, 0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, 0x9006,
14681 + 0x708a, 0x708e, 0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, 0x95d5,
14682 + 0x7014, 0x9084, 0x1984, 0x9085, 0x0012, 0x7016, 0x080c, 0x3b7f,
14683 + 0x00f6, 0x2071, 0x1a30, 0x2079, 0x0320, 0x00d6, 0x2069, 0x0000,
14684 + 0x6884, 0xd0b4, 0x0120, 0x689c, 0x780e, 0x6898, 0x780a, 0x00de,
14685 + 0x2011, 0x0011, 0x080c, 0x3b2b, 0x2011, 0x0001, 0x080c, 0x3b2b,
14686 + 0x00fe, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1a30, 0x2079,
14687 + 0x0320, 0x792c, 0xd1fc, 0x0904, 0x3b28, 0x782b, 0x0002, 0x9026,
14688 + 0xd19c, 0x1904, 0x3b24, 0x7000, 0x0002, 0x3b28, 0x3ad9, 0x3b09,
14689 + 0x3b24, 0xd1bc, 0x1170, 0xd1dc, 0x1190, 0x8001, 0x7002, 0x2011,
14690 + 0x0001, 0x080c, 0x3b2b, 0x0904, 0x3b28, 0x080c, 0x3b2b, 0x0804,
14691 + 0x3b28, 0x00f6, 0x2079, 0x0300, 0x78bf, 0x0000, 0x00fe, 0x7810,
14692 + 0x7914, 0x782b, 0x0004, 0x7812, 0x7916, 0x2001, 0x0201, 0x200c,
14693 + 0x81ff, 0x0de8, 0x080c, 0x3a3f, 0x2009, 0x0001, 0x00f6, 0x2079,
14694 + 0x0300, 0x78b8, 0x00fe, 0xd0ec, 0x0110, 0x2009, 0x0011, 0x792a,
14695 + 0x00f8, 0x8001, 0x7002, 0x9184, 0x0880, 0x1140, 0x782c, 0xd0fc,
14696 + 0x1904, 0x3acd, 0x2011, 0x0001, 0x00b1, 0x0090, 0xa010, 0x9092,
14697 + 0x0004, 0x9086, 0x0015, 0x1120, 0xa000, 0xa05a, 0x2011, 0x0031,
14698 + 0xa212, 0xd1dc, 0x1960, 0x0828, 0x782b, 0x0004, 0x7003, 0x0000,
14699 + 0x00ee, 0x00fe, 0x0005, 0xa014, 0x9005, 0x0540, 0x8001, 0x0036,
14700 + 0x0096, 0xa016, 0xa058, 0x2048, 0xa010, 0x2009, 0x0025, 0x911a,
14701 + 0x831c, 0x831c, 0x938a, 0x0004, 0x1a0c, 0x0d84, 0x9398, 0x3b57,
14702 + 0x231d, 0x083f, 0x9080, 0x0004, 0x7a2a, 0x7100, 0x8108, 0x7102,
14703 + 0x009e, 0x003e, 0x908a, 0x0029, 0x1130, 0xa058, 0x2048, 0xa804,
14704 + 0xa05a, 0x2001, 0x0019, 0xa012, 0x9085, 0x0001, 0x0005, 0x3b76,
14705 + 0x3b6d, 0x3b64, 0x3b5b, 0xa964, 0x7902, 0xa968, 0x7906, 0xa96c,
14706 + 0x7912, 0xa970, 0x7916, 0x0005, 0xa974, 0x7902, 0xa978, 0x7906,
14707 + 0xa97c, 0x7912, 0xa980, 0x7916, 0x0005, 0xa984, 0x7902, 0xa988,
14708 + 0x7906, 0xa98c, 0x7912, 0xa990, 0x7916, 0x0005, 0xa994, 0x7902,
14709 + 0xa998, 0x7906, 0xa99c, 0x7912, 0xa9a0, 0x7916, 0x0005, 0x00f6,
14710 + 0x00e6, 0x0086, 0x2071, 0x1a33, 0x2079, 0x0090, 0x792c, 0xd1fc,
14711 + 0x01f0, 0x782b, 0x0002, 0x2940, 0x9026, 0x7000, 0x0002, 0x3ba7,
14712 + 0x3b92, 0x3b9e, 0x8001, 0x7002, 0xd19c, 0x1188, 0x2011, 0x0001,
14713 + 0x080c, 0x3b2b, 0x0160, 0x080c, 0x3b2b, 0x0048, 0x8001, 0x7002,
14714 + 0x782c, 0xd0fc, 0x1d30, 0x2011, 0x0001, 0x080c, 0x3b2b, 0x008e,
14715 + 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x2061,
14716 + 0x0200, 0x2001, 0x1977, 0x2004, 0x601a, 0x2061, 0x0100, 0x2001,
14717 + 0x1976, 0x2004, 0x60ce, 0x6104, 0xc1ac, 0x6106, 0x2001, 0x002c,
14718 + 0x2004, 0x9005, 0x0518, 0x2038, 0x2001, 0x002e, 0x2024, 0x2001,
14719 + 0x002f, 0x201c, 0x080c, 0x441f, 0xa813, 0x0019, 0xaf16, 0x2900,
14720 + 0xa85a, 0x978a, 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010,
14721 + 0x2708, 0x903e, 0x0096, 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019,
14722 + 0x009e, 0x04c1, 0x1d70, 0x2900, 0xa85a, 0x0080, 0x080c, 0x441f,
14723 + 0xa813, 0x0019, 0xa817, 0x0001, 0x2900, 0xa85a, 0x2001, 0x002e,
14724 + 0x2004, 0xa866, 0x2001, 0x002f, 0x2004, 0xa86a, 0x2061, 0x0090,
14725 + 0x2079, 0x0100, 0x2001, 0x1976, 0x2004, 0x6036, 0x2009, 0x0040,
14726 + 0x080c, 0x2014, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0xa86e,
14727 + 0x601a, 0x0006, 0x2001, 0x002b, 0x2004, 0xa872, 0x601e, 0x78c6,
14728 + 0x000e, 0x78ca, 0x9006, 0x600a, 0x600e, 0x008e, 0x00ce, 0x00ee,
14729 + 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0080, 0xaa60, 0x22e8, 0x20a0,
14730 + 0x20e1, 0x0000, 0x2099, 0x0088, 0x702b, 0x0026, 0x7402, 0x7306,
14731 + 0x9006, 0x700a, 0x700e, 0x810b, 0x810b, 0x21a8, 0x810b, 0x7112,
14732 + 0x702b, 0x0041, 0x702c, 0xd0fc, 0x0de8, 0x702b, 0x0002, 0x702b,
14733 + 0x0040, 0x4005, 0x7400, 0x7304, 0x87ff, 0x0190, 0x0086, 0x0096,
14734 + 0x2940, 0x0086, 0x080c, 0x441f, 0x008e, 0xa058, 0x00a6, 0x2050,
14735 + 0x2900, 0xb006, 0xa05a, 0x00ae, 0x009e, 0x008e, 0x9085, 0x0001,
14736 + 0x00ee, 0x0005, 0x00e6, 0x2001, 0x002d, 0x2004, 0x9005, 0x0528,
14737 + 0x2038, 0x2001, 0x0030, 0x2024, 0x2001, 0x0031, 0x201c, 0x080c,
14738 + 0x441f, 0x2940, 0xa813, 0x0019, 0xaf16, 0x2900, 0xa85a, 0x978a,
14739 + 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e,
14740 + 0x0096, 0xa858, 0x2048, 0xa85c, 0x9080, 0x0019, 0x009e, 0x080c,
14741 + 0x3c1a, 0x1d68, 0x2900, 0xa85a, 0x00d8, 0x080c, 0x441f, 0x2940,
14742 + 0xa013, 0x0019, 0xa017, 0x0001, 0x2800, 0xa05a, 0x2001, 0x0030,
14743 + 0x2004, 0xa066, 0x2001, 0x0031, 0x2004, 0xa06a, 0x2001, 0x002a,
14744 + 0x2004, 0x9084, 0xfff8, 0xa06e, 0x2001, 0x002b, 0x2004, 0xa072,
14745 + 0x2001, 0x032a, 0x2003, 0x0004, 0x7884, 0xd0ac, 0x1180, 0x2001,
14746 + 0x0101, 0x200c, 0x918d, 0x0200, 0x2102, 0xa017, 0x0000, 0x2001,
14747 + 0x1a30, 0x2003, 0x0003, 0x2001, 0x032a, 0x2003, 0x0009, 0x2001,
14748 + 0x0300, 0x2003, 0x0000, 0x2001, 0x020d, 0x2003, 0x0000, 0x2001,
14749 + 0x0004, 0x200c, 0x918d, 0x0002, 0x2102, 0x00ee, 0x0005, 0x0126,
14750 + 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0x1840, 0x20e9, 0x0001,
14751 + 0x20a0, 0x9006, 0x4004, 0x2009, 0x013c, 0x200a, 0x012e, 0x7880,
14752 + 0x9086, 0x0052, 0x0108, 0x0005, 0x0804, 0x305f, 0x7d98, 0x7c9c,
14753 + 0x0804, 0x3154, 0x080c, 0x6877, 0x0110, 0x080c, 0x569e, 0x2069,
14754 + 0x1852, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98,
14755 + 0x2039, 0x0001, 0x080c, 0x4468, 0x701b, 0x3cef, 0x0005, 0x080c,
14756 + 0x4df9, 0x1130, 0x3b00, 0x3a08, 0xc194, 0xc095, 0x20d8, 0x21d0,
14757 + 0x2069, 0x1852, 0x6800, 0x9005, 0x0904, 0x3092, 0x6804, 0xd0ac,
14758 + 0x0118, 0xd0a4, 0x0904, 0x3092, 0xd094, 0x00c6, 0x2061, 0x0100,
14759 + 0x6104, 0x0138, 0x6200, 0x9292, 0x0005, 0x0218, 0x918c, 0xffdf,
14760 + 0x0010, 0x918d, 0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, 0x2061,
14761 + 0x0100, 0x6104, 0x0118, 0x918d, 0x0010, 0x0010, 0x918c, 0xffef,
14762 + 0x6106, 0x00ce, 0xd084, 0x0158, 0x6a28, 0x928a, 0x007f, 0x1a04,
14763 + 0x3092, 0x9288, 0x2e6e, 0x210d, 0x918c, 0x00ff, 0x615e, 0xd0dc,
14764 + 0x0130, 0x6828, 0x908a, 0x007f, 0x1a04, 0x3092, 0x6056, 0x6888,
14765 + 0x9084, 0x0030, 0x8004, 0x8004, 0x8004, 0x8004, 0x0006, 0x2009,
14766 + 0x197e, 0x9080, 0x2539, 0x2005, 0x200a, 0x000e, 0x2009, 0x197f,
14767 + 0x9080, 0x253d, 0x2005, 0x200a, 0x6808, 0x908a, 0x0100, 0x0a04,
14768 + 0x3092, 0x908a, 0x0841, 0x1a04, 0x3092, 0x9084, 0x0007, 0x1904,
14769 + 0x3092, 0x680c, 0x9005, 0x0904, 0x3092, 0x6810, 0x9005, 0x0904,
14770 + 0x3092, 0x6848, 0x6940, 0x910a, 0x1a04, 0x3092, 0x8001, 0x0904,
14771 + 0x3092, 0x684c, 0x6944, 0x910a, 0x1a04, 0x3092, 0x8001, 0x0904,
14772 + 0x3092, 0x6980, 0xd1e4, 0x0140, 0x00c6, 0x2061, 0x0100, 0x6004,
14773 + 0x9085, 0x0100, 0x6006, 0x00ce, 0x2009, 0x194e, 0x200b, 0x0000,
14774 + 0x2001, 0x1874, 0x2004, 0xd0c4, 0x0140, 0x7884, 0x200a, 0x2009,
14775 + 0x017f, 0x200a, 0x3b00, 0xc085, 0x20d8, 0x6814, 0x908c, 0x00ff,
14776 + 0x6146, 0x8007, 0x9084, 0x00ff, 0x604a, 0x080c, 0x6b71, 0x080c,
14777 + 0x5f63, 0x080c, 0x5f97, 0x6808, 0x602a, 0x080c, 0x1f86, 0x2009,
14778 + 0x0170, 0x200b, 0x0080, 0xa001, 0xa001, 0x200b, 0x0000, 0x0036,
14779 + 0x6b08, 0x080c, 0x24a0, 0x003e, 0x6000, 0x9086, 0x0000, 0x1904,
14780 + 0x3e96, 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217,
14781 + 0x831f, 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148,
14782 + 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f,
14783 + 0x0010, 0x9084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x8007,
14784 + 0x810f, 0x8217, 0x831f, 0x20a9, 0x0004, 0x20a1, 0x1980, 0x20e9,
14785 + 0x0001, 0x4001, 0x20a9, 0x0004, 0x20a1, 0x199a, 0x20e9, 0x0001,
14786 + 0x4001, 0x080c, 0x791c, 0x00c6, 0x900e, 0x20a9, 0x0001, 0x6b70,
14787 + 0xd384, 0x0510, 0x0068, 0x2009, 0x0100, 0x210c, 0x918e, 0x0008,
14788 + 0x1110, 0x839d, 0x0010, 0x83f5, 0x3e18, 0x12b0, 0x3508, 0x8109,
14789 + 0x080c, 0x70f4, 0x6878, 0x6016, 0x6874, 0x2008, 0x9084, 0xff00,
14790 + 0x8007, 0x600a, 0x9184, 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003,
14791 + 0x0003, 0x0010, 0x6003, 0x0001, 0x1f04, 0x3deb, 0x00ce, 0x00c6,
14792 + 0x2061, 0x1969, 0x6a88, 0x9284, 0xc000, 0x2010, 0x9286, 0x0000,
14793 + 0x1158, 0x2063, 0x0000, 0x2001, 0x0001, 0x080c, 0x2747, 0x2001,
14794 + 0x0001, 0x080c, 0x272a, 0x0088, 0x9286, 0x4000, 0x1148, 0x2063,
14795 + 0x0001, 0x9006, 0x080c, 0x2747, 0x9006, 0x080c, 0x272a, 0x0028,
14796 + 0x9286, 0x8000, 0x1d30, 0x2063, 0x0002, 0x00ce, 0x00e6, 0x2c70,
14797 + 0x080c, 0x0e3b, 0x00ee, 0x6888, 0xd0ec, 0x0130, 0x2011, 0x0114,
14798 + 0x2204, 0x9085, 0x0100, 0x2012, 0x6a80, 0x9284, 0x0030, 0x9086,
14799 + 0x0030, 0x1128, 0x9294, 0xffcf, 0x9295, 0x0020, 0x6a82, 0x2001,
14800 + 0x194b, 0x6a80, 0x9294, 0x0030, 0x928e, 0x0000, 0x0170, 0x928e,
14801 + 0x0010, 0x0118, 0x928e, 0x0020, 0x0140, 0x2003, 0xaaaa, 0x080c,
14802 + 0x2515, 0x2001, 0x193c, 0x2102, 0x0008, 0x2102, 0x00c6, 0x2061,
14803 + 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, 0x080c, 0x6877,
14804 + 0x0128, 0x080c, 0x46fa, 0x0110, 0x080c, 0x2466, 0x60d0, 0x9005,
14805 + 0x01c0, 0x6003, 0x0001, 0x2009, 0x3e7e, 0x00d0, 0x080c, 0x6877,
14806 + 0x1168, 0x2011, 0x6739, 0x080c, 0x781a, 0x2011, 0x672c, 0x080c,
14807 + 0x78e7, 0x080c, 0x6b45, 0x080c, 0x67be, 0x0040, 0x080c, 0x55a0,
14808 + 0x0028, 0x6003, 0x0004, 0x2009, 0x3e96, 0x0010, 0x0804, 0x305f,
14809 + 0x2001, 0x0170, 0x2004, 0x9084, 0x00ff, 0x9086, 0x004c, 0x1118,
14810 + 0x2091, 0x30bd, 0x0817, 0x2091, 0x303d, 0x0817, 0x6000, 0x9086,
14811 + 0x0000, 0x0904, 0x308f, 0x2069, 0x1852, 0x7890, 0x6842, 0x7894,
14812 + 0x6846, 0x2d00, 0x2009, 0x0030, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98,
14813 + 0x2039, 0x0001, 0x0804, 0x446b, 0x9006, 0x080c, 0x2466, 0x81ff,
14814 + 0x1904, 0x308f, 0x080c, 0x6877, 0x1168, 0x080c, 0x6b40, 0x080c,
14815 + 0x56d9, 0x080c, 0x2e69, 0x0118, 0x6130, 0xc18d, 0x6132, 0x080c,
14816 + 0x67be, 0x0020, 0x080c, 0x569e, 0x080c, 0x55a0, 0x0804, 0x305f,
14817 + 0x81ff, 0x1904, 0x308f, 0x080c, 0x6877, 0x1110, 0x0804, 0x308f,
14818 + 0x618c, 0x81ff, 0x01a8, 0x704b, 0x0000, 0x2001, 0x1c80, 0x2009,
14819 + 0x0040, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0126, 0x2091, 0x8000,
14820 + 0x2039, 0x0001, 0x080c, 0x446b, 0x701b, 0x305d, 0x012e, 0x0005,
14821 + 0x704b, 0x0001, 0x00d6, 0x2069, 0x1c80, 0x20a9, 0x0040, 0x20e9,
14822 + 0x0001, 0x20a1, 0x1c80, 0x2019, 0xffff, 0x4304, 0x6554, 0x9588,
14823 + 0x2e6e, 0x210d, 0x918c, 0x00ff, 0x216a, 0x900e, 0x2011, 0x0002,
14824 + 0x2100, 0x9506, 0x01a8, 0x080c, 0x5c0d, 0x1190, 0xb814, 0x821c,
14825 + 0x0238, 0x9398, 0x1c80, 0x9085, 0xff00, 0x8007, 0x201a, 0x0038,
14826 + 0x9398, 0x1c80, 0x2324, 0x94a4, 0xff00, 0x9405, 0x201a, 0x8210,
14827 + 0x8108, 0x9182, 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, 0x2d0c,
14828 + 0x9105, 0x206a, 0x00de, 0x20a9, 0x0040, 0x20a1, 0x1c80, 0x2099,
14829 + 0x1c80, 0x080c, 0x5634, 0x0804, 0x3ee5, 0x080c, 0x4452, 0x0904,
14830 + 0x3092, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804, 0x308f,
14831 + 0x080c, 0x4dea, 0xd0b4, 0x0558, 0x7884, 0x908e, 0x007e, 0x0538,
14832 + 0x908e, 0x007f, 0x0520, 0x908e, 0x0080, 0x0508, 0x080c, 0x2e64,
14833 + 0x1148, 0xb800, 0xd08c, 0x11d8, 0xb804, 0x9084, 0x00ff, 0x9086,
14834 + 0x0006, 0x11a8, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c,
14835 + 0xb258, 0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003,
14836 + 0x701b, 0x3f73, 0x0005, 0x080c, 0x4452, 0x0904, 0x3092, 0x20a9,
14837 + 0x002b, 0xb8b4, 0x20e0, 0xb8b8, 0x2098, 0xa860, 0x20e8, 0xa85c,
14838 + 0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008, 0x9080, 0x0006,
14839 + 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c,
14840 + 0x0f2b, 0x0070, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x000a, 0x20a0,
14841 + 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0f2b,
14842 + 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080,
14843 + 0x0002, 0x2009, 0x002b, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804,
14844 + 0x446b, 0x81ff, 0x1904, 0x308f, 0x080c, 0x4436, 0x0904, 0x3092,
14845 + 0x080c, 0x5d7f, 0x0904, 0x308f, 0x0058, 0xa878, 0x9005, 0x0120,
14846 + 0x2009, 0x0004, 0x0804, 0x308f, 0xa974, 0xaa94, 0x0804, 0x305f,
14847 + 0x080c, 0x4df2, 0x0904, 0x305f, 0x701b, 0x3fbd, 0x7007, 0x0003,
14848 + 0x0005, 0x81ff, 0x1904, 0x308f, 0x7888, 0x908a, 0x1000, 0x1a04,
14849 + 0x3092, 0x080c, 0x4452, 0x0904, 0x3092, 0x080c, 0x5e04, 0x0904,
14850 + 0x308f, 0x2019, 0x0004, 0x900e, 0x080c, 0x5d91, 0x0904, 0x308f,
14851 + 0x7984, 0x7a88, 0x0499, 0x08e0, 0xa89c, 0x908a, 0x1000, 0x12c8,
14852 + 0x080c, 0x4450, 0x01b0, 0x080c, 0x5e04, 0x2009, 0x0002, 0x0168,
14853 + 0x2009, 0x0002, 0x2019, 0x0004, 0x080c, 0x5d91, 0x2009, 0x0003,
14854 + 0x0120, 0xa998, 0xaa9c, 0x00d1, 0x0060, 0xa897, 0x4005, 0xa99a,
14855 + 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030,
14856 + 0x0005, 0xa897, 0x4000, 0x080c, 0x4df2, 0x0110, 0x9006, 0x0018,
14857 + 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x9186, 0x00ff,
14858 + 0x0110, 0x0071, 0x0060, 0x2029, 0x007e, 0x2061, 0x1800, 0x6454,
14859 + 0x2400, 0x9506, 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005,
14860 + 0x080c, 0x5c0d, 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0x9108,
14861 + 0x080c, 0x7826, 0x0005, 0x81ff, 0x1904, 0x308f, 0x080c, 0x4436,
14862 + 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904, 0x308f, 0x080c, 0x5d88,
14863 + 0x0904, 0x308f, 0x0804, 0x3fc8, 0x81ff, 0x1904, 0x308f, 0x080c,
14864 + 0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904, 0x308f, 0x080c,
14865 + 0x5d76, 0x0904, 0x308f, 0x0804, 0x3fc8, 0x6100, 0x0804, 0x305f,
14866 + 0x080c, 0x4452, 0x0904, 0x3092, 0x080c, 0x4dfe, 0x1904, 0x308f,
14867 + 0x79a8, 0xd184, 0x1158, 0xb834, 0x8007, 0x789e, 0xb830, 0x8007,
14868 + 0x789a, 0xbb2c, 0x831f, 0xba28, 0x8217, 0x0050, 0xb824, 0x8007,
14869 + 0x789e, 0xb820, 0x8007, 0x789a, 0xbb1c, 0x831f, 0xba18, 0x8217,
14870 + 0xb900, 0x918c, 0x0200, 0x0804, 0x305f, 0x78a8, 0x909c, 0x0003,
14871 + 0xd0b4, 0x1150, 0x939a, 0x0003, 0x1a04, 0x308f, 0x6254, 0x9294,
14872 + 0x00ff, 0x7884, 0x9206, 0x1560, 0x2031, 0x1848, 0x2009, 0x013c,
14873 + 0x2136, 0x2001, 0x1840, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c,
14874 + 0x7d98, 0x2039, 0x0001, 0x0006, 0x78a8, 0x9084, 0x0080, 0x1118,
14875 + 0x000e, 0x0804, 0x446b, 0x000e, 0x2031, 0x0000, 0x2061, 0x18ac,
14876 + 0x2c44, 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, 0xa496,
14877 + 0xa59a, 0x080c, 0x108c, 0x7007, 0x0002, 0x701b, 0x40df, 0x0005,
14878 + 0x81ff, 0x1904, 0x308f, 0x080c, 0x4452, 0x0904, 0x3092, 0x080c,
14879 + 0x5f2d, 0x1904, 0x308f, 0x00c6, 0x080c, 0x441f, 0x00ce, 0x0904,
14880 + 0x308f, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb1fe,
14881 + 0x0904, 0x308f, 0x7007, 0x0003, 0x701b, 0x40e3, 0x0005, 0x080c,
14882 + 0x3cbf, 0x0804, 0x305f, 0xa830, 0x9086, 0x0100, 0x0904, 0x308f,
14883 + 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080,
14884 + 0x001b, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804,
14885 + 0x446b, 0x9006, 0x080c, 0x2466, 0x78a8, 0x9084, 0x00ff, 0x9086,
14886 + 0x00ff, 0x0118, 0x81ff, 0x1904, 0x308f, 0x080c, 0x6877, 0x0110,
14887 + 0x080c, 0x569e, 0x7888, 0x908a, 0x1000, 0x1a04, 0x3092, 0x7984,
14888 + 0x9186, 0x00ff, 0x0138, 0x9182, 0x007f, 0x1a04, 0x3092, 0x2100,
14889 + 0x080c, 0x2430, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2061,
14890 + 0x19c7, 0x601b, 0x0000, 0x601f, 0x0000, 0x080c, 0x6877, 0x1158,
14891 + 0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x080c, 0x68c0,
14892 + 0x080c, 0x67be, 0x00d0, 0x080c, 0x94da, 0x2061, 0x0100, 0x2001,
14893 + 0x1816, 0x2004, 0x9084, 0x00ff, 0x810f, 0x9105, 0x604a, 0x6043,
14894 + 0x0090, 0x6043, 0x0010, 0x2009, 0x1966, 0x200b, 0x0000, 0x2009,
14895 + 0x002d, 0x2011, 0x55ca, 0x080c, 0x78a5, 0x7984, 0x080c, 0x6877,
14896 + 0x1110, 0x2009, 0x00ff, 0x7a88, 0x080c, 0x401e, 0x012e, 0x00ce,
14897 + 0x002e, 0x0804, 0x305f, 0x7984, 0x080c, 0x5bb0, 0x2b08, 0x1904,
14898 + 0x3092, 0x0804, 0x305f, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
14899 + 0x308f, 0x60d8, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005,
14900 + 0x0804, 0x308f, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804,
14901 + 0x308f, 0x7984, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080,
14902 + 0x0019, 0x7026, 0xaf60, 0x7732, 0x080c, 0x4468, 0x701b, 0x4189,
14903 + 0x0005, 0x2009, 0x0080, 0x080c, 0x5c0d, 0x1118, 0x080c, 0x5f2d,
14904 + 0x0120, 0x2021, 0x400a, 0x0804, 0x3061, 0x00d6, 0x0096, 0xa964,
14905 + 0xaa6c, 0xab70, 0xac74, 0xad78, 0xae7c, 0xa884, 0x90be, 0x0100,
14906 + 0x0904, 0x4222, 0x90be, 0x0112, 0x0904, 0x4222, 0x90be, 0x0113,
14907 + 0x0904, 0x4222, 0x90be, 0x0114, 0x0904, 0x4222, 0x90be, 0x0117,
14908 + 0x0904, 0x4222, 0x90be, 0x011a, 0x0904, 0x4222, 0x90be, 0x011c,
14909 + 0x0904, 0x4222, 0x90be, 0x0121, 0x0904, 0x4209, 0x90be, 0x0131,
14910 + 0x0904, 0x4209, 0x90be, 0x0171, 0x0904, 0x4222, 0x90be, 0x0173,
14911 + 0x0904, 0x4222, 0x90be, 0x01a1, 0x1128, 0xa894, 0x8007, 0xa896,
14912 + 0x0804, 0x422d, 0x90be, 0x0212, 0x0904, 0x4216, 0x90be, 0x0213,
14913 + 0x05e8, 0x90be, 0x0214, 0x0500, 0x90be, 0x0217, 0x0188, 0x90be,
14914 + 0x021a, 0x1120, 0xa89c, 0x8007, 0xa89e, 0x04e0, 0x90be, 0x021f,
14915 + 0x05c8, 0x90be, 0x0300, 0x05b0, 0x009e, 0x00de, 0x0804, 0x3092,
14916 + 0x7024, 0x9080, 0x0010, 0x2098, 0x20a0, 0x7030, 0x20e0, 0x20e8,
14917 + 0x20a9, 0x0007, 0x080c, 0x426b, 0x7024, 0x9080, 0x000e, 0x2098,
14918 + 0x20a0, 0x7030, 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x080c, 0x426b,
14919 + 0x00c8, 0x7024, 0x9080, 0x000c, 0x2098, 0x20a0, 0x7030, 0x20e0,
14920 + 0x20e8, 0x20a9, 0x0001, 0x080c, 0x4278, 0x00b8, 0x7024, 0x9080,
14921 + 0x000e, 0x2098, 0x20a0, 0x7030, 0x20e0, 0x20e8, 0x20a9, 0x0001,
14922 + 0x080c, 0x4278, 0x7024, 0x9080, 0x000c, 0x2098, 0x20a0, 0x7030,
14923 + 0x20e0, 0x20e8, 0x20a9, 0x0001, 0x04f1, 0x00c6, 0x080c, 0x441f,
14924 + 0x0550, 0xa868, 0xc0fd, 0xa86a, 0xa867, 0x0119, 0x9006, 0xa882,
14925 + 0xa87f, 0x0020, 0xa88b, 0x0001, 0x810b, 0xa9ae, 0xa8b2, 0xaab6,
14926 + 0xabba, 0xacbe, 0xadc2, 0xa9c6, 0xa8ca, 0x00ce, 0x009e, 0x00de,
14927 + 0xa866, 0xa822, 0xa868, 0xc0fd, 0xa86a, 0xa804, 0x2048, 0x080c,
14928 + 0xb219, 0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003,
14929 + 0x701b, 0x4262, 0x0005, 0x00ce, 0x009e, 0x00de, 0x2009, 0x0002,
14930 + 0x0804, 0x308f, 0xa820, 0x9086, 0x8001, 0x1904, 0x305f, 0x2009,
14931 + 0x0004, 0x0804, 0x308f, 0x0016, 0x0026, 0x3510, 0x20a9, 0x0002,
14932 + 0x4002, 0x4104, 0x4004, 0x8211, 0x1dc8, 0x002e, 0x001e, 0x0005,
14933 + 0x0016, 0x0026, 0x0036, 0x0046, 0x3520, 0x20a9, 0x0004, 0x4002,
14934 + 0x4304, 0x4204, 0x4104, 0x4004, 0x8421, 0x1db8, 0x004e, 0x003e,
14935 + 0x002e, 0x001e, 0x0005, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
14936 + 0x308f, 0x60d8, 0xd0ac, 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005,
14937 + 0x0804, 0x308f, 0x7984, 0x78a8, 0x2040, 0x080c, 0x94d3, 0x1120,
14938 + 0x9182, 0x007f, 0x0a04, 0x3092, 0x9186, 0x00ff, 0x0904, 0x3092,
14939 + 0x9182, 0x0800, 0x1a04, 0x3092, 0x7a8c, 0x7b88, 0x6074, 0x9306,
14940 + 0x1140, 0x6078, 0x924e, 0x0904, 0x3092, 0x99cc, 0xff00, 0x0904,
14941 + 0x3092, 0x080c, 0x435a, 0x0538, 0x90c6, 0x4000, 0x1170, 0x00c6,
14942 + 0x0006, 0x900e, 0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc,
14943 + 0x0108, 0xc18d, 0x000e, 0x00ce, 0x0098, 0x90c6, 0x4007, 0x1110,
14944 + 0x2408, 0x0070, 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0040,
14945 + 0x90c6, 0x4009, 0x1108, 0x0020, 0x2001, 0x4005, 0x2009, 0x000a,
14946 + 0x2020, 0x0804, 0x3061, 0x2b00, 0x7022, 0x0016, 0x00b6, 0x00c6,
14947 + 0x00e6, 0x2c70, 0x080c, 0x95a1, 0x0904, 0x4330, 0x2b00, 0x6012,
14948 + 0x080c, 0xb4e6, 0x2e58, 0x00ee, 0x00e6, 0x00c6, 0x080c, 0x441f,
14949 + 0x00ce, 0x2b70, 0x1150, 0x080c, 0x9554, 0x00ee, 0x00ce, 0x00be,
14950 + 0x001e, 0x2009, 0x0002, 0x0804, 0x308f, 0x900e, 0xa966, 0xa96a,
14951 + 0x2900, 0x6016, 0xa932, 0xa868, 0xc0fd, 0xd88c, 0x0108, 0xc0f5,
14952 + 0xa86a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2d1a, 0x012e, 0x6023,
14953 + 0x0001, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002, 0x080c, 0x5b61,
14954 + 0x2009, 0x0002, 0x080c, 0x95ce, 0x78a8, 0xd094, 0x0138, 0x00ee,
14955 + 0x7020, 0x00e6, 0x2058, 0xb8bc, 0xc08d, 0xb8be, 0x9085, 0x0001,
14956 + 0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120, 0x2009, 0x0003, 0x0804,
14957 + 0x308f, 0x7007, 0x0003, 0x701b, 0x433e, 0x0005, 0xa830, 0x9086,
14958 + 0x0100, 0x7020, 0x2058, 0x1138, 0x2009, 0x0004, 0xba04, 0x9294,
14959 + 0x00ff, 0x0804, 0x4d49, 0x900e, 0xa868, 0xd0f4, 0x1904, 0x305f,
14960 + 0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d,
14961 + 0x0804, 0x305f, 0x00e6, 0x00d6, 0x2029, 0x0000, 0x080c, 0x94d3,
14962 + 0x0138, 0x2021, 0x0000, 0x20a9, 0x0800, 0x2071, 0x1000, 0x0030,
14963 + 0x2021, 0x0080, 0x20a9, 0x0780, 0x2071, 0x1080, 0x2e04, 0x9005,
14964 + 0x1130, 0x2100, 0x9406, 0x1550, 0x2428, 0xc5fd, 0x0438, 0x2058,
14965 + 0xbf10, 0x2700, 0x9306, 0x11a0, 0xbe14, 0x2600, 0x9206, 0x1180,
14966 + 0x2400, 0x9106, 0x1150, 0xd884, 0x0550, 0xd894, 0x1540, 0x080c,
14967 + 0x5f2d, 0x1528, 0x2001, 0x4000, 0x0418, 0x2001, 0x4007, 0x0400,
14968 + 0x2400, 0x9106, 0x1158, 0xbe14, 0x87ff, 0x1128, 0x86ff, 0x09e0,
14969 + 0x080c, 0x94d3, 0x19c8, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70,
14970 + 0x1f04, 0x436e, 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001,
14971 + 0x0001, 0x0030, 0x080c, 0x5bb0, 0x1dd0, 0xbb12, 0xba16, 0x9006,
14972 + 0x9005, 0x00de, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x308f, 0x080c,
14973 + 0x441f, 0x0904, 0x308f, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a,
14974 + 0x7884, 0x9005, 0x0904, 0x3092, 0x9096, 0x00ff, 0x0120, 0x9092,
14975 + 0x0004, 0x1a04, 0x3092, 0x2010, 0x2918, 0x080c, 0x2cc0, 0x0904,
14976 + 0x308f, 0x7007, 0x0003, 0x701b, 0x43d6, 0x0005, 0xa830, 0x9086,
14977 + 0x0100, 0x0904, 0x308f, 0x0804, 0x305f, 0x7984, 0x080c, 0x94d3,
14978 + 0x1120, 0x9182, 0x0080, 0x0a04, 0x3092, 0x9186, 0x00ff, 0x0904,
14979 + 0x3092, 0x9182, 0x0800, 0x1a04, 0x3092, 0x2001, 0x9000, 0x080c,
14980 + 0x4da2, 0x1904, 0x308f, 0x0804, 0x305f, 0xa998, 0x080c, 0x94d3,
14981 + 0x1118, 0x9182, 0x0080, 0x0280, 0x9186, 0x00ff, 0x0168, 0x9182,
14982 + 0x0800, 0x1250, 0x2001, 0x9000, 0x080c, 0x4da2, 0x11a8, 0x0060,
14983 + 0xa897, 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085,
14984 + 0x0001, 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0x900e, 0x9085,
14985 + 0x0001, 0x2001, 0x0000, 0x0005, 0x2009, 0x000a, 0x0c48, 0x080c,
14986 + 0x0fae, 0x0198, 0x9006, 0xa802, 0x7010, 0x9005, 0x1120, 0x2900,
14987 + 0x7012, 0x7016, 0x0040, 0x7014, 0xa802, 0x0086, 0x2040, 0x2900,
14988 + 0xa006, 0x7016, 0x008e, 0x9085, 0x0001, 0x0005, 0x7984, 0x080c,
14989 + 0x5c0d, 0x1130, 0x7e88, 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208,
14990 + 0x905e, 0x8bff, 0x0005, 0xa998, 0x080c, 0x5c0d, 0x1130, 0xae9c,
14991 + 0x9684, 0x3fff, 0x9082, 0x4000, 0x0208, 0x905e, 0x8bff, 0x0005,
14992 + 0xae98, 0x0008, 0x7e84, 0x2608, 0x080c, 0x5c0d, 0x1108, 0x0008,
14993 + 0x905e, 0x8bff, 0x0005, 0x0016, 0x7110, 0x81ff, 0x0128, 0x2148,
14994 + 0xa904, 0x080c, 0x0fe0, 0x0cc8, 0x7112, 0x7116, 0x001e, 0x0005,
14995 + 0x2031, 0x0001, 0x0010, 0x2031, 0x0000, 0x2061, 0x18ac, 0x2c44,
14996 + 0xa66a, 0xa17a, 0xa772, 0xa076, 0xa28e, 0xa392, 0xa496, 0xa59a,
14997 + 0x080c, 0x108c, 0x7007, 0x0002, 0x701b, 0x305f, 0x0005, 0x00f6,
14998 + 0x0126, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x18a4, 0x2004,
14999 + 0x9005, 0x1188, 0x0e04, 0x449b, 0x7a36, 0x7833, 0x0012, 0x7a82,
15000 + 0x7b86, 0x7c8a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084,
15001 + 0x190c, 0x113e, 0x0408, 0x0016, 0x00c6, 0x00e6, 0x2071, 0x1893,
15002 + 0x7144, 0x9182, 0x0010, 0x0218, 0x7034, 0x2060, 0x0078, 0x7034,
15003 + 0x90e0, 0x0004, 0x9c82, 0x18ee, 0x0210, 0x2061, 0x18ae, 0x2c00,
15004 + 0x7036, 0x81ff, 0x1108, 0x703a, 0x8108, 0x7146, 0x2262, 0x6306,
15005 + 0x640a, 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe, 0x0005, 0x00e6,
15006 + 0x2071, 0x1893, 0x7044, 0x9005, 0x0590, 0x0126, 0x2091, 0x8000,
15007 + 0x0e04, 0x44f6, 0x00f6, 0x2079, 0x0000, 0x00c6, 0x7038, 0x2060,
15008 + 0x2c04, 0x7836, 0x7833, 0x0012, 0x7882, 0x6004, 0x7886, 0x6008,
15009 + 0x788a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c,
15010 + 0x113e, 0x7044, 0x8001, 0x7046, 0x9005, 0x1130, 0x7037, 0x18ae,
15011 + 0x703b, 0x18ae, 0x00ce, 0x0048, 0x9c80, 0x0004, 0x90fa, 0x18ee,
15012 + 0x0210, 0x2001, 0x18ae, 0x703a, 0x00ce, 0x00fe, 0x012e, 0x00ee,
15013 + 0x0005, 0x0026, 0x080c, 0x4dea, 0xd0c4, 0x0120, 0x2011, 0x8014,
15014 + 0x080c, 0x447f, 0x002e, 0x0005, 0x81ff, 0x1904, 0x308f, 0x0126,
15015 + 0x2091, 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c,
15016 + 0x6877, 0x1158, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001,
15017 + 0x080c, 0x68c0, 0x080c, 0x67be, 0x0010, 0x080c, 0x55a0, 0x012e,
15018 + 0x0804, 0x305f, 0x7884, 0x2008, 0x918c, 0xfffd, 0x1128, 0x61e4,
15019 + 0x910d, 0x61e6, 0x0804, 0x305f, 0x0804, 0x3092, 0x81ff, 0x1904,
15020 + 0x308f, 0x080c, 0x4dfe, 0x1904, 0x308f, 0x080c, 0x5f25, 0x1904,
15021 + 0x308f, 0x080c, 0x2e64, 0x0128, 0x7984, 0x080c, 0x5bb0, 0x1904,
15022 + 0x3092, 0x080c, 0x4452, 0x0904, 0x3092, 0x2b00, 0x7022, 0x080c,
15023 + 0x5f2d, 0x7888, 0x1170, 0x9084, 0x0005, 0x1158, 0x900e, 0x080c,
15024 + 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804,
15025 + 0x305f, 0x080c, 0x441f, 0x0904, 0x308f, 0x9006, 0xa866, 0xa832,
15026 + 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb2a8, 0x0904, 0x308f, 0x7888,
15027 + 0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x7007, 0x0003, 0x701b,
15028 + 0x45bd, 0x0005, 0x2061, 0x1800, 0x080c, 0x4dfe, 0x2009, 0x0007,
15029 + 0x1570, 0x080c, 0x5f25, 0x2009, 0x0008, 0x1548, 0x080c, 0x2e64,
15030 + 0x0120, 0xa998, 0x080c, 0x5bb0, 0x1530, 0x080c, 0x4450, 0x0518,
15031 + 0x080c, 0x5f2d, 0xa89c, 0x1168, 0x9084, 0x0005, 0x1150, 0x900e,
15032 + 0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d,
15033 + 0x00d0, 0xa868, 0xc0fc, 0xa86a, 0x080c, 0xb2a8, 0x11e0, 0xa89c,
15034 + 0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x2009, 0x0003, 0xa897,
15035 + 0x4005, 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001,
15036 + 0x2001, 0x0030, 0x0005, 0xa897, 0x4000, 0xa99a, 0x9006, 0x918d,
15037 + 0x0001, 0x2008, 0x0005, 0x9006, 0x0005, 0xa830, 0x9086, 0x0100,
15038 + 0x7020, 0x2058, 0x1110, 0x0804, 0x4d49, 0x900e, 0x080c, 0x5e2d,
15039 + 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x0804, 0x305f,
15040 + 0x080c, 0x4dfe, 0x1904, 0x308f, 0x7f84, 0x7a8c, 0x7b88, 0x7c9c,
15041 + 0x7d98, 0x080c, 0x441f, 0x0904, 0x308f, 0x900e, 0x2130, 0x7122,
15042 + 0x712e, 0xa860, 0x20e8, 0x7032, 0xa85c, 0x9080, 0x0005, 0x7026,
15043 + 0x20a0, 0x080c, 0x5c0d, 0x1904, 0x464d, 0x080c, 0x5f2d, 0x0120,
15044 + 0x080c, 0x5f35, 0x1904, 0x464d, 0x080c, 0x5f25, 0x1130, 0x080c,
15045 + 0x5e2d, 0x1118, 0xd79c, 0x0904, 0x464d, 0xd794, 0x1110, 0xd784,
15046 + 0x01a8, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x3400,
15047 + 0xd794, 0x0160, 0x20a9, 0x0008, 0x4003, 0x2098, 0x20a0, 0x3d00,
15048 + 0x20e0, 0x20a9, 0x0002, 0x080c, 0x4278, 0x0048, 0x20a9, 0x0004,
15049 + 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x4278, 0x4104,
15050 + 0xd794, 0x0528, 0xb8b4, 0x20e0, 0xb8b8, 0x2060, 0x9c80, 0x0000,
15051 + 0x2098, 0x20a9, 0x0002, 0x4003, 0x9c80, 0x0003, 0x2098, 0x20a9,
15052 + 0x0001, 0x4005, 0x9c80, 0x0004, 0x2098, 0x3400, 0x20a9, 0x0002,
15053 + 0x4003, 0x2098, 0x20a0, 0x3d00, 0x20e0, 0x080c, 0x426b, 0x9c80,
15054 + 0x0026, 0x2098, 0xb8b4, 0x20e0, 0x20a9, 0x0002, 0x4003, 0xd794,
15055 + 0x0110, 0x96b0, 0x000b, 0x96b0, 0x0005, 0x8108, 0x080c, 0x94d3,
15056 + 0x0118, 0x9186, 0x0800, 0x0040, 0xd78c, 0x0120, 0x9186, 0x0800,
15057 + 0x0170, 0x0018, 0x9186, 0x007e, 0x0150, 0xd794, 0x0118, 0x9686,
15058 + 0x0020, 0x0010, 0x9686, 0x0028, 0x0150, 0x0804, 0x45e9, 0x86ff,
15059 + 0x1120, 0x7120, 0x810b, 0x0804, 0x305f, 0x702f, 0x0001, 0x711e,
15060 + 0x7020, 0x9600, 0x7022, 0x772a, 0x2061, 0x18ac, 0x2c44, 0xa06b,
15061 + 0x0000, 0xa67a, 0x7030, 0xa072, 0x7024, 0xa076, 0xa28e, 0xa392,
15062 + 0xa496, 0xa59a, 0x080c, 0x108c, 0x7007, 0x0002, 0x701b, 0x4689,
15063 + 0x0005, 0x702c, 0x9005, 0x1180, 0x711c, 0x7024, 0x20a0, 0x7728,
15064 + 0x9036, 0x7030, 0x20e8, 0x2061, 0x18ac, 0x2c44, 0xa28c, 0xa390,
15065 + 0xa494, 0xa598, 0x0804, 0x45e9, 0x7120, 0x810b, 0x0804, 0x305f,
15066 + 0x2029, 0x007e, 0x7984, 0x7a88, 0x7b8c, 0x7c98, 0x9184, 0xff00,
15067 + 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04, 0x3092,
15068 + 0x9184, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04,
15069 + 0x3092, 0x9284, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3092,
15070 + 0x9502, 0x0a04, 0x3092, 0x9284, 0x00ff, 0x90e2, 0x0020, 0x0a04,
15071 + 0x3092, 0x9502, 0x0a04, 0x3092, 0x9384, 0xff00, 0x8007, 0x90e2,
15072 + 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04, 0x3092, 0x9384, 0x00ff,
15073 + 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04, 0x3092, 0x9484,
15074 + 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502, 0x0a04,
15075 + 0x3092, 0x9484, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x3092, 0x9502,
15076 + 0x0a04, 0x3092, 0x2061, 0x1956, 0x6102, 0x6206, 0x630a, 0x640e,
15077 + 0x0804, 0x305f, 0x0006, 0x080c, 0x4dea, 0xd0cc, 0x000e, 0x0005,
15078 + 0x0006, 0x080c, 0x4dee, 0xd0bc, 0x000e, 0x0005, 0x616c, 0x7a84,
15079 + 0x6300, 0x82ff, 0x1118, 0x7986, 0x0804, 0x305f, 0x83ff, 0x1904,
15080 + 0x3092, 0x2001, 0xfff0, 0x9200, 0x1a04, 0x3092, 0x2019, 0xffff,
15081 + 0x6070, 0x9302, 0x9200, 0x0a04, 0x3092, 0x7986, 0x626e, 0x0804,
15082 + 0x305f, 0x080c, 0x4dfe, 0x1904, 0x308f, 0x7c88, 0x7d84, 0x7e98,
15083 + 0x7f8c, 0x080c, 0x441f, 0x0904, 0x308f, 0x900e, 0x901e, 0x7322,
15084 + 0x732e, 0xa860, 0x20e8, 0x7032, 0xa85c, 0x9080, 0x0003, 0x7026,
15085 + 0x20a0, 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x5f2d,
15086 + 0x0118, 0x080c, 0x5f35, 0x1148, 0x20a9, 0x0001, 0xb814, 0x4004,
15087 + 0xb810, 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800,
15088 + 0x0120, 0x9386, 0x003c, 0x0170, 0x0c20, 0x83ff, 0x1148, 0x7220,
15089 + 0x900e, 0x2001, 0x0003, 0x080c, 0x7a4b, 0x2208, 0x0804, 0x305f,
15090 + 0x702f, 0x0001, 0x711e, 0x7020, 0x9300, 0x7022, 0x2061, 0x18ac,
15091 + 0x2c44, 0xa06b, 0x0000, 0xa37a, 0x7024, 0xa076, 0x7030, 0xa072,
15092 + 0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c, 0x108c, 0x7007, 0x0002,
15093 + 0x701b, 0x477b, 0x0005, 0x702c, 0x9005, 0x1178, 0x711c, 0x7024,
15094 + 0x20a0, 0x901e, 0x7030, 0x20e8, 0x2061, 0x18ac, 0x2c44, 0xa48c,
15095 + 0xa590, 0xa694, 0xa798, 0x0804, 0x4739, 0x7220, 0x900e, 0x2001,
15096 + 0x0003, 0x080c, 0x7a4b, 0x2208, 0x0804, 0x305f, 0x00f6, 0x00e6,
15097 + 0x080c, 0x4dfe, 0x2009, 0x0007, 0x1904, 0x480e, 0x2071, 0x1893,
15098 + 0x7458, 0x84ff, 0x2009, 0x000e, 0x1904, 0x480e, 0xac9c, 0xad98,
15099 + 0xaea4, 0xafa0, 0x0096, 0x080c, 0x0fc7, 0x2009, 0x0002, 0x0904,
15100 + 0x480e, 0x2900, 0x705a, 0x900e, 0x901e, 0x7352, 0x735e, 0xa860,
15101 + 0x7062, 0xa85c, 0x9080, 0x0003, 0x7056, 0x20a0, 0x91d8, 0x1000,
15102 + 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x5f2d, 0x0118, 0x080c, 0x5f35,
15103 + 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810, 0x4004, 0x4104,
15104 + 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120, 0x9386, 0x003c,
15105 + 0x01e8, 0x0c20, 0x83ff, 0x11c0, 0x7250, 0x900e, 0x2001, 0x0003,
15106 + 0x080c, 0x7a4b, 0x2208, 0x009e, 0xa897, 0x4000, 0xa99a, 0x7158,
15107 + 0x81ff, 0x090c, 0x0d84, 0x2148, 0x080c, 0x0fe0, 0x9006, 0x705a,
15108 + 0x918d, 0x0001, 0x2008, 0x0418, 0x705f, 0x0001, 0x714e, 0x7050,
15109 + 0x9300, 0x7052, 0x2061, 0x18ad, 0x2c44, 0xa37a, 0x7054, 0xa076,
15110 + 0x7060, 0xa072, 0xa48e, 0xa592, 0xa696, 0xa79a, 0xa09f, 0x481a,
15111 + 0x000e, 0xa0a2, 0x080c, 0x108c, 0x9006, 0x0048, 0x009e, 0xa897,
15112 + 0x4005, 0xa99a, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x00ee,
15113 + 0x00fe, 0x0005, 0x00f6, 0xa0a0, 0x904d, 0x090c, 0x0d84, 0x00e6,
15114 + 0x2071, 0x1893, 0xa06c, 0x908e, 0x0100, 0x0138, 0xa87b, 0x0030,
15115 + 0xa883, 0x0000, 0xa897, 0x4002, 0x00d8, 0x705c, 0x9005, 0x1158,
15116 + 0x714c, 0x7054, 0x20a0, 0x901e, 0x7060, 0x20e8, 0xa48c, 0xa590,
15117 + 0xa694, 0xa798, 0x0428, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897,
15118 + 0x4000, 0x7250, 0x900e, 0x2001, 0x0003, 0x080c, 0x7a4b, 0xaa9a,
15119 + 0x7158, 0x81ff, 0x090c, 0x0d84, 0x2148, 0x080c, 0x0fe0, 0x705b,
15120 + 0x0000, 0xa0a0, 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9,
15121 + 0x012e, 0xa09f, 0x0000, 0xa0a3, 0x0000, 0x00ee, 0x00fe, 0x0005,
15122 + 0x91d8, 0x1000, 0x2b5c, 0x8bff, 0x0178, 0x080c, 0x5f2d, 0x0118,
15123 + 0x080c, 0x5f35, 0x1148, 0xb814, 0x20a9, 0x0001, 0x4004, 0xb810,
15124 + 0x4004, 0x4104, 0x9398, 0x0003, 0x8108, 0x9182, 0x0800, 0x0120,
15125 + 0x9386, 0x003c, 0x0518, 0x0c20, 0x83ff, 0x11f0, 0x7150, 0x810c,
15126 + 0xa99a, 0xa897, 0x4000, 0x7158, 0x81ff, 0x090c, 0x0d84, 0x2148,
15127 + 0x080c, 0x0fe0, 0x9006, 0x705a, 0x918d, 0x0001, 0x2008, 0xa0a0,
15128 + 0x2048, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0xa09f,
15129 + 0x0000, 0xa0a3, 0x0000, 0x0070, 0x705f, 0x0001, 0x714e, 0x7050,
15130 + 0x9300, 0x7052, 0xa37a, 0xa48e, 0xa592, 0xa696, 0xa79a, 0x080c,
15131 + 0x108c, 0x9006, 0x00ee, 0x0005, 0x81ff, 0x1904, 0x308f, 0x60d8,
15132 + 0xd0ac, 0x1118, 0xd09c, 0x0904, 0x308f, 0x080c, 0x441f, 0x0904,
15133 + 0x308f, 0x7984, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xa85c, 0x9080,
15134 + 0x0019, 0xaf60, 0x080c, 0x4468, 0x701b, 0x48c7, 0x0005, 0x0096,
15135 + 0xa88c, 0x90be, 0x7000, 0x0148, 0x90be, 0x7100, 0x0130, 0x90be,
15136 + 0x7200, 0x0118, 0x009e, 0x0804, 0x3092, 0xa884, 0xa988, 0x080c,
15137 + 0x23fd, 0x1500, 0x080c, 0x5bb0, 0x11e8, 0x7122, 0xbe12, 0xbd16,
15138 + 0xae7c, 0x080c, 0x441f, 0x01b0, 0x080c, 0x441f, 0x0198, 0x009e,
15139 + 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0xa887, 0x0000, 0xa804,
15140 + 0x2048, 0x080c, 0xb239, 0x0904, 0x308f, 0x7007, 0x0003, 0x701b,
15141 + 0x48fd, 0x0005, 0x009e, 0x0804, 0x308f, 0x7120, 0x080c, 0x2e11,
15142 + 0xa884, 0x9086, 0x8001, 0x0904, 0x308f, 0x2900, 0x701e, 0xa804,
15143 + 0x2040, 0x0086, 0xa05c, 0x9080, 0x0002, 0x2098, 0x20a0, 0xa060,
15144 + 0x20e0, 0x20e8, 0x20a9, 0x002a, 0x080c, 0x0f2b, 0xaa6c, 0xab70,
15145 + 0xac74, 0xad78, 0x2061, 0x18ac, 0x2c44, 0xa06b, 0x0000, 0xae64,
15146 + 0xaf8c, 0x97c6, 0x7000, 0x1108, 0x0018, 0x97c6, 0x7100, 0x1190,
15147 + 0x96c2, 0x0004, 0x0a04, 0x3092, 0x2009, 0x0004, 0x009e, 0x8906,
15148 + 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002,
15149 + 0x0804, 0x446b, 0x97c6, 0x7200, 0x1904, 0x3092, 0x96c2, 0x0054,
15150 + 0x0a04, 0x3092, 0x009e, 0x2061, 0x18ac, 0x2c44, 0x8906, 0x8006,
15151 + 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0xa076,
15152 + 0xa772, 0xa07b, 0x002a, 0xa28e, 0xa392, 0xa496, 0xa59a, 0x080c,
15153 + 0x108c, 0x7007, 0x0002, 0x701b, 0x495e, 0x0005, 0x701c, 0x2048,
15154 + 0xa804, 0x2048, 0xa804, 0x2048, 0x8906, 0x8006, 0x8007, 0x90bc,
15155 + 0x003f, 0x9084, 0xffc0, 0x9080, 0x0002, 0x2098, 0x20a0, 0x27e0,
15156 + 0x27e8, 0x20a9, 0x002a, 0x080c, 0x0f2b, 0x2100, 0x2238, 0x2061,
15157 + 0x18ac, 0x2c44, 0xa28c, 0xa390, 0xa494, 0xa598, 0x2009, 0x002a,
15158 + 0x0804, 0x446b, 0x81ff, 0x1904, 0x308f, 0x798c, 0x2001, 0x194d,
15159 + 0x2102, 0x080c, 0x4436, 0x0904, 0x3092, 0x080c, 0x5cd4, 0x0904,
15160 + 0x308f, 0x0126, 0x2091, 0x8000, 0x080c, 0x5d9a, 0x012e, 0x0904,
15161 + 0x308f, 0x0804, 0x3fc8, 0xa9a0, 0x2001, 0x194d, 0xc18d, 0x2102,
15162 + 0x080c, 0x4443, 0x0170, 0x080c, 0x5cd4, 0x2009, 0x0002, 0x0128,
15163 + 0x080c, 0x5d9a, 0x1170, 0x2009, 0x0003, 0xa897, 0x4005, 0xa99a,
15164 + 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030,
15165 + 0x0005, 0xa897, 0x4000, 0x080c, 0x4df2, 0x0110, 0x9006, 0x0018,
15166 + 0x900e, 0x9085, 0x0001, 0x2001, 0x0000, 0x0005, 0x78a8, 0xd08c,
15167 + 0x1118, 0xd084, 0x0904, 0x3f3d, 0x080c, 0x4452, 0x0904, 0x3092,
15168 + 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804, 0x308f, 0x080c,
15169 + 0x5f2d, 0x0130, 0x908e, 0x0004, 0x0118, 0x908e, 0x0005, 0x15a0,
15170 + 0x78a8, 0xd08c, 0x0120, 0xb800, 0xc08c, 0xb802, 0x0028, 0x080c,
15171 + 0x4dea, 0xd0b4, 0x0904, 0x3f77, 0x7884, 0x908e, 0x007e, 0x0904,
15172 + 0x3f77, 0x908e, 0x007f, 0x0904, 0x3f77, 0x908e, 0x0080, 0x0904,
15173 + 0x3f77, 0xb800, 0xd08c, 0x1904, 0x3f77, 0xa867, 0x0000, 0xa868,
15174 + 0xc0fd, 0xa86a, 0x080c, 0xb258, 0x1120, 0x2009, 0x0003, 0x0804,
15175 + 0x308f, 0x7007, 0x0003, 0x701b, 0x4a0e, 0x0005, 0x080c, 0x4452,
15176 + 0x0904, 0x3092, 0x0804, 0x3f77, 0x080c, 0x2e64, 0x0108, 0x0005,
15177 + 0x2009, 0x1833, 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
15178 + 0x308f, 0x080c, 0x4dfe, 0x0120, 0x2009, 0x0007, 0x0804, 0x308f,
15179 + 0x080c, 0x5f25, 0x0120, 0x2009, 0x0008, 0x0804, 0x308f, 0xb89c,
15180 + 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x3f77, 0x9006, 0xa866, 0xa832,
15181 + 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb2a8, 0x1120, 0x2009, 0x0003,
15182 + 0x0804, 0x308f, 0x7007, 0x0003, 0x701b, 0x4a47, 0x0005, 0xa830,
15183 + 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x4d49, 0x080c,
15184 + 0x4452, 0x0904, 0x3092, 0x0804, 0x49e0, 0x81ff, 0x2009, 0x0001,
15185 + 0x1904, 0x308f, 0x080c, 0x4dfe, 0x2009, 0x0007, 0x1904, 0x308f,
15186 + 0x080c, 0x5f25, 0x2009, 0x0008, 0x1904, 0x308f, 0x080c, 0x4452,
15187 + 0x0904, 0x3092, 0x080c, 0x5f2d, 0x2009, 0x0009, 0x1904, 0x308f,
15188 + 0x080c, 0x441f, 0x2009, 0x0002, 0x0904, 0x308f, 0x9006, 0xa866,
15189 + 0xa832, 0xa868, 0xc0fd, 0xa86a, 0x7988, 0x9194, 0xff00, 0x918c,
15190 + 0x00ff, 0x9006, 0x82ff, 0x1128, 0xc0ed, 0xa952, 0x798c, 0xa956,
15191 + 0x0038, 0x928e, 0x0100, 0x1904, 0x3092, 0xc0e5, 0xa952, 0xa956,
15192 + 0xa83e, 0x080c, 0xb4e7, 0x2009, 0x0003, 0x0904, 0x308f, 0x7007,
15193 + 0x0003, 0x701b, 0x4a9c, 0x0005, 0xa830, 0x9086, 0x0100, 0x2009,
15194 + 0x0004, 0x0904, 0x308f, 0x0804, 0x305f, 0x7aa8, 0x9284, 0xc000,
15195 + 0x0148, 0xd2ec, 0x01a0, 0x080c, 0x4dfe, 0x1188, 0x2009, 0x0014,
15196 + 0x0804, 0x308f, 0xd2dc, 0x1568, 0x81ff, 0x2009, 0x0001, 0x1904,
15197 + 0x308f, 0x080c, 0x4dfe, 0x2009, 0x0007, 0x1904, 0x308f, 0xd2f4,
15198 + 0x0130, 0x9284, 0x5000, 0x080c, 0x4dc5, 0x0804, 0x305f, 0xd2fc,
15199 + 0x0158, 0x080c, 0x4452, 0x0904, 0x3092, 0x7984, 0x9284, 0x9000,
15200 + 0x080c, 0x4da2, 0x0804, 0x305f, 0x080c, 0x4452, 0x0904, 0x3092,
15201 + 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x2009, 0x0009, 0x1904,
15202 + 0x4b85, 0x080c, 0x441f, 0x2009, 0x0002, 0x0904, 0x4b85, 0xa85c,
15203 + 0x9080, 0x001b, 0xaf60, 0x2009, 0x0008, 0x7a8c, 0x7b88, 0x7c9c,
15204 + 0x7d98, 0x080c, 0x4468, 0x701b, 0x4af6, 0x0005, 0xa86c, 0x9086,
15205 + 0x0500, 0x1138, 0xa870, 0x9005, 0x1120, 0xa874, 0x9084, 0xff00,
15206 + 0x0110, 0x1904, 0x3092, 0xa866, 0xa832, 0xa868, 0xc0fd, 0xa86a,
15207 + 0x080c, 0x4452, 0x1110, 0x0804, 0x3092, 0x2009, 0x0043, 0x080c,
15208 + 0xb54f, 0x2009, 0x0003, 0x0904, 0x4b85, 0x7007, 0x0003, 0x701b,
15209 + 0x4b1a, 0x0005, 0xa830, 0x9086, 0x0100, 0x2009, 0x0004, 0x0904,
15210 + 0x4b85, 0x7984, 0x7aa8, 0x9284, 0x1000, 0x080c, 0x4da2, 0x0804,
15211 + 0x305f, 0x00c6, 0xaab0, 0x9284, 0xc000, 0x0140, 0xd2ec, 0x0168,
15212 + 0x080c, 0x4dfe, 0x1150, 0x2009, 0x0014, 0x04f0, 0x2061, 0x1800,
15213 + 0x080c, 0x4dfe, 0x2009, 0x0007, 0x15b8, 0xd2f4, 0x0128, 0x9284,
15214 + 0x5000, 0x080c, 0x4dc5, 0x0050, 0xd2fc, 0x0178, 0x080c, 0x4450,
15215 + 0x0588, 0xa998, 0x9284, 0x9000, 0x080c, 0x4da2, 0xa87b, 0x0000,
15216 + 0xa883, 0x0000, 0xa897, 0x4000, 0x0438, 0x080c, 0x4450, 0x0510,
15217 + 0x080c, 0x5f2d, 0x2009, 0x0009, 0x11b8, 0xa8c4, 0x9086, 0x0500,
15218 + 0x11c8, 0xa8c8, 0x9005, 0x11b0, 0xa8cc, 0x9084, 0xff00, 0x1190,
15219 + 0x080c, 0x4450, 0x1108, 0x0070, 0x2009, 0x004b, 0x080c, 0xb54f,
15220 + 0x2009, 0x0003, 0x0108, 0x0078, 0x0429, 0x19c0, 0xa897, 0x4005,
15221 + 0xa99a, 0x0010, 0xa897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001,
15222 + 0x0030, 0x00ce, 0x0005, 0x9006, 0x0ce0, 0x7aa8, 0xd2dc, 0x0904,
15223 + 0x308f, 0x0016, 0x7984, 0x9284, 0x1000, 0xc0fd, 0x080c, 0x4da2,
15224 + 0x001e, 0x1904, 0x308f, 0x0804, 0x305f, 0x00f6, 0x2d78, 0x0011,
15225 + 0x00fe, 0x0005, 0xaab0, 0xd2dc, 0x0150, 0x0016, 0xa998, 0x9284,
15226 + 0x1000, 0xc0fd, 0x080c, 0x4da2, 0x001e, 0x9085, 0x0001, 0x0005,
15227 + 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x308f, 0x080c, 0x4dfe,
15228 + 0x0120, 0x2009, 0x0007, 0x0804, 0x308f, 0x7984, 0x7ea8, 0x96b4,
15229 + 0x00ff, 0x080c, 0x5c0d, 0x1904, 0x3092, 0x9186, 0x007f, 0x0138,
15230 + 0x080c, 0x5f2d, 0x0120, 0x2009, 0x0009, 0x0804, 0x308f, 0x080c,
15231 + 0x441f, 0x1120, 0x2009, 0x0002, 0x0804, 0x308f, 0xa867, 0x0000,
15232 + 0xa868, 0xc0fd, 0xa86a, 0x2001, 0x0100, 0x8007, 0xa80a, 0x080c,
15233 + 0xb272, 0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003,
15234 + 0x701b, 0x4be3, 0x0005, 0xa808, 0x8007, 0x9086, 0x0100, 0x1120,
15235 + 0x2009, 0x0004, 0x0804, 0x308f, 0xa8e0, 0xa866, 0xa810, 0x8007,
15236 + 0x9084, 0x00ff, 0x800c, 0xa814, 0x8007, 0x9084, 0x00ff, 0x8004,
15237 + 0x9080, 0x0002, 0x9108, 0x8906, 0x8006, 0x8007, 0x90bc, 0x003f,
15238 + 0x9084, 0xffc0, 0x9080, 0x0004, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98,
15239 + 0x0804, 0x446b, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804,
15240 + 0x308f, 0x7984, 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff,
15241 + 0x1118, 0x701f, 0x1980, 0x0040, 0x92c6, 0x0001, 0x1118, 0x701f,
15242 + 0x199a, 0x0010, 0x0804, 0x3092, 0x2009, 0x001a, 0x7a8c, 0x7b88,
15243 + 0x7c9c, 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x080c, 0x4468,
15244 + 0x701b, 0x4c33, 0x0005, 0x2001, 0x182c, 0x2003, 0x0001, 0xa85c,
15245 + 0x9080, 0x0019, 0x2098, 0xa860, 0x20e0, 0x20a9, 0x001a, 0x701c,
15246 + 0x20a0, 0x20e9, 0x0001, 0x4003, 0x0804, 0x305f, 0x080c, 0x441f,
15247 + 0x1120, 0x2009, 0x0002, 0x0804, 0x308f, 0x7984, 0x9194, 0xff00,
15248 + 0x918c, 0x00ff, 0x8217, 0x82ff, 0x1118, 0x2099, 0x1980, 0x0040,
15249 + 0x92c6, 0x0001, 0x1118, 0x2099, 0x199a, 0x0010, 0x0804, 0x3092,
15250 + 0xa85c, 0x9080, 0x0019, 0x20a0, 0xa860, 0x20e8, 0x20a9, 0x001a,
15251 + 0x20e1, 0x0001, 0x4003, 0x2009, 0x001a, 0x7a8c, 0x7b88, 0x7c9c,
15252 + 0x7d98, 0xa85c, 0x9080, 0x0019, 0xaf60, 0x0804, 0x446b, 0x7884,
15253 + 0x908a, 0x1000, 0x1a04, 0x3092, 0x0126, 0x2091, 0x8000, 0x8003,
15254 + 0x800b, 0x810b, 0x9108, 0x00c6, 0x2061, 0x19c7, 0x6146, 0x00ce,
15255 + 0x012e, 0x0804, 0x305f, 0x00c6, 0x080c, 0x6877, 0x1160, 0x080c,
15256 + 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x080c, 0x68c0, 0x080c,
15257 + 0x67be, 0x080c, 0x0d84, 0x2061, 0x1800, 0x6030, 0xc09d, 0x6032,
15258 + 0x080c, 0x55a0, 0x00ce, 0x0005, 0x00c6, 0x2001, 0x1800, 0x2004,
15259 + 0x908e, 0x0000, 0x0904, 0x308f, 0x7884, 0x9005, 0x0188, 0x7888,
15260 + 0x2061, 0x1969, 0x2c0c, 0x2062, 0x080c, 0x27d7, 0x01a0, 0x080c,
15261 + 0x27df, 0x0188, 0x080c, 0x27e7, 0x0170, 0x2162, 0x0804, 0x3092,
15262 + 0x2061, 0x0100, 0x6038, 0x9086, 0x0007, 0x1118, 0x2009, 0x0001,
15263 + 0x0010, 0x2009, 0x0000, 0x7884, 0x9086, 0x0002, 0x1548, 0x2061,
15264 + 0x0100, 0x6028, 0xc09c, 0x602a, 0x0026, 0x2011, 0x0003, 0x080c,
15265 + 0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3, 0x002e, 0x080c, 0x8d59,
15266 + 0x0036, 0x901e, 0x080c, 0x8dfe, 0x003e, 0x60e3, 0x0000, 0x080c,
15267 + 0xcd0a, 0x080c, 0xcd25, 0x9085, 0x0001, 0x080c, 0x68c0, 0x9006,
15268 + 0x080c, 0x28a5, 0x2001, 0x1800, 0x2003, 0x0004, 0x6027, 0x0008,
15269 + 0x00ce, 0x0804, 0x305f, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804,
15270 + 0x308f, 0x080c, 0x4dfe, 0x0120, 0x2009, 0x0007, 0x0804, 0x308f,
15271 + 0x7984, 0x7ea8, 0x96b4, 0x00ff, 0x080c, 0x5c0d, 0x1904, 0x3092,
15272 + 0x9186, 0x007f, 0x0138, 0x080c, 0x5f2d, 0x0120, 0x2009, 0x0009,
15273 + 0x0804, 0x308f, 0x080c, 0x441f, 0x1120, 0x2009, 0x0002, 0x0804,
15274 + 0x308f, 0xa867, 0x0000, 0xa868, 0xc0fd, 0xa86a, 0x080c, 0xb275,
15275 + 0x1120, 0x2009, 0x0003, 0x0804, 0x308f, 0x7007, 0x0003, 0x701b,
15276 + 0x4d32, 0x0005, 0xa830, 0x9086, 0x0100, 0x1120, 0x2009, 0x0004,
15277 + 0x0804, 0x308f, 0xa8e0, 0xa866, 0xa834, 0x8007, 0x800c, 0xa85c,
15278 + 0x9080, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0xaf60, 0x0804,
15279 + 0x446b, 0xa898, 0x9086, 0x000d, 0x1904, 0x308f, 0x2021, 0x4005,
15280 + 0x0126, 0x2091, 0x8000, 0x0e04, 0x4d56, 0x0010, 0x012e, 0x0cc0,
15281 + 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, 0x0011, 0x0010, 0x7833,
15282 + 0x0010, 0x7883, 0x4005, 0xa998, 0x7986, 0xa9a4, 0x799a, 0xa9a8,
15283 + 0x799e, 0x080c, 0x445b, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004,
15284 + 0xd084, 0x190c, 0x113e, 0x7007, 0x0001, 0x2091, 0x5000, 0x012e,
15285 + 0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, 0x2061, 0x19c7, 0x7984,
15286 + 0x6156, 0x6152, 0x605b, 0x0000, 0x604f, 0x0009, 0x7898, 0x606e,
15287 + 0x789c, 0x606a, 0x7888, 0x6066, 0x788c, 0x6062, 0x2001, 0x19d5,
15288 + 0x2044, 0x2001, 0x19dd, 0xa076, 0xa060, 0xa072, 0xa07b, 0x0001,
15289 + 0xa07f, 0x0002, 0xa06b, 0x0000, 0xa09f, 0x0000, 0x00ce, 0x012e,
15290 + 0x0804, 0x305f, 0x0126, 0x2091, 0x8000, 0x00b6, 0x00c6, 0x90e4,
15291 + 0xc000, 0x0128, 0x0006, 0x080c, 0xb0e3, 0x000e, 0x1198, 0xd0e4,
15292 + 0x0160, 0x9180, 0x1000, 0x2004, 0x905d, 0x0160, 0x080c, 0x56f3,
15293 + 0x080c, 0x94d3, 0x0110, 0xb817, 0x0000, 0x9006, 0x00ce, 0x00be,
15294 + 0x012e, 0x0005, 0x9085, 0x0001, 0x0cc8, 0x0126, 0x2091, 0x8000,
15295 + 0x0156, 0x2010, 0x900e, 0x20a9, 0x0800, 0x0016, 0x9180, 0x1000,
15296 + 0x2004, 0x9005, 0x0180, 0x9186, 0x007e, 0x0168, 0x9186, 0x007f,
15297 + 0x0150, 0x9186, 0x0080, 0x0138, 0x9186, 0x00ff, 0x0120, 0x0026,
15298 + 0x2200, 0x0801, 0x002e, 0x001e, 0x8108, 0x1f04, 0x4dcd, 0x015e,
15299 + 0x012e, 0x0005, 0x2001, 0x1853, 0x2004, 0x0005, 0x2001, 0x1872,
15300 + 0x2004, 0x0005, 0x0006, 0x2001, 0x180f, 0x2004, 0xd0d4, 0x000e,
15301 + 0x0005, 0x2001, 0x180d, 0x2004, 0xd0b4, 0x0005, 0x2001, 0x1800,
15302 + 0x2004, 0x9086, 0x0003, 0x0005, 0x0126, 0x0156, 0x0136, 0x0146,
15303 + 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2061, 0x0100,
15304 + 0x2069, 0x0200, 0x2071, 0x1800, 0x6044, 0xd0a4, 0x11e8, 0xd084,
15305 + 0x0118, 0x080c, 0x4fa3, 0x0068, 0xd08c, 0x0118, 0x080c, 0x4eb6,
15306 + 0x0040, 0xd094, 0x0118, 0x080c, 0x4e86, 0x0018, 0xd09c, 0x0108,
15307 + 0x0099, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e,
15308 + 0x013e, 0x015e, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110,
15309 + 0xc19d, 0x612a, 0x001e, 0x0c68, 0x0006, 0x7090, 0x9005, 0x000e,
15310 + 0x0120, 0x7093, 0x0000, 0x708b, 0x0000, 0x624c, 0x9286, 0xf0f0,
15311 + 0x1150, 0x6048, 0x9086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090,
15312 + 0x6043, 0x0010, 0x0490, 0x9294, 0xff00, 0x9296, 0xf700, 0x0178,
15313 + 0x7134, 0xd1a4, 0x1160, 0x6240, 0x9295, 0x0100, 0x6242, 0x9294,
15314 + 0x0010, 0x0128, 0x2009, 0x00f7, 0x080c, 0x5660, 0x00f0, 0x6040,
15315 + 0x9084, 0x0010, 0x9085, 0x0140, 0x6042, 0x6043, 0x0000, 0x707f,
15316 + 0x0000, 0x709b, 0x0001, 0x70c3, 0x0000, 0x70db, 0x0000, 0x2009,
15317 + 0x1c80, 0x200b, 0x0000, 0x708f, 0x0000, 0x7083, 0x000f, 0x2009,
15318 + 0x000f, 0x2011, 0x5546, 0x080c, 0x78a5, 0x0005, 0x2001, 0x1874,
15319 + 0x2004, 0xd08c, 0x0110, 0x7057, 0xffff, 0x7080, 0x9005, 0x1528,
15320 + 0x2011, 0x5546, 0x080c, 0x781a, 0x6040, 0x9094, 0x0010, 0x9285,
15321 + 0x0020, 0x6042, 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04,
15322 + 0x4e9c, 0x6242, 0x7093, 0x0000, 0x6040, 0x9094, 0x0010, 0x9285,
15323 + 0x0080, 0x6042, 0x6242, 0x0048, 0x6242, 0x7093, 0x0000, 0x7087,
15324 + 0x0000, 0x9006, 0x080c, 0x56de, 0x0000, 0x0005, 0x7084, 0x908a,
15325 + 0x0003, 0x1a0c, 0x0d84, 0x000b, 0x0005, 0x4ec0, 0x4f07, 0x4fa2,
15326 + 0x00f6, 0x7087, 0x0001, 0x6803, 0x00fc, 0x20a9, 0x0004, 0x6800,
15327 + 0x9084, 0x00fc, 0x0120, 0x1f04, 0x4ec7, 0x080c, 0x0d84, 0x68a0,
15328 + 0x68a2, 0x689c, 0x689e, 0x6898, 0x689a, 0xa001, 0x6803, 0x1600,
15329 + 0x6837, 0x0020, 0x080c, 0x56ba, 0x2079, 0x1c00, 0x7833, 0x1101,
15330 + 0x7837, 0x0000, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0001,
15331 + 0x20a1, 0x1c0e, 0x20a9, 0x0004, 0x4003, 0x080c, 0x9363, 0x20e1,
15332 + 0x0001, 0x2099, 0x1c00, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9,
15333 + 0x0014, 0x4003, 0x60c3, 0x000c, 0x600f, 0x0000, 0x080c, 0x557c,
15334 + 0x00fe, 0x9006, 0x708a, 0x6043, 0x0008, 0x6042, 0x0005, 0x00f6,
15335 + 0x7088, 0x708b, 0x0000, 0x9025, 0x0904, 0x4f7f, 0x6020, 0xd0b4,
15336 + 0x1904, 0x4f7d, 0x7198, 0x81ff, 0x0904, 0x4f6b, 0x9486, 0x000c,
15337 + 0x1904, 0x4f78, 0x9480, 0x0018, 0x8004, 0x20a8, 0x080c, 0x56b3,
15338 + 0x2011, 0x0260, 0x2019, 0x1c00, 0x220c, 0x2304, 0x9106, 0x11e8,
15339 + 0x8210, 0x8318, 0x1f04, 0x4f24, 0x6043, 0x0004, 0x2061, 0x0140,
15340 + 0x605b, 0xbc94, 0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, 0x0006,
15341 + 0x7087, 0x0002, 0x7093, 0x0002, 0x2009, 0x07d0, 0x2011, 0x554d,
15342 + 0x080c, 0x78a5, 0x080c, 0x56ba, 0x04c0, 0x080c, 0x56b3, 0x2079,
15343 + 0x0260, 0x7930, 0x918e, 0x1101, 0x1558, 0x7834, 0x9005, 0x1540,
15344 + 0x7900, 0x918c, 0x00ff, 0x1118, 0x7804, 0x9005, 0x0190, 0x080c,
15345 + 0x56b3, 0x2011, 0x026e, 0x2019, 0x1805, 0x20a9, 0x0004, 0x220c,
15346 + 0x2304, 0x9102, 0x0230, 0x11a0, 0x8210, 0x8318, 0x1f04, 0x4f5f,
15347 + 0x0078, 0x709b, 0x0000, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099,
15348 + 0x0260, 0x20e9, 0x0001, 0x20a1, 0x1c00, 0x20a9, 0x0014, 0x4003,
15349 + 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, 0x00fe, 0x0005, 0x6040,
15350 + 0x9085, 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8, 0x080c, 0x9363,
15351 + 0x20e1, 0x0001, 0x2099, 0x1c00, 0x20e9, 0x0000, 0x20a1, 0x0240,
15352 + 0x20a9, 0x0014, 0x4003, 0x60c3, 0x000c, 0x2011, 0x19be, 0x2013,
15353 + 0x0000, 0x708b, 0x0000, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c,
15354 + 0x8b47, 0x08d8, 0x0005, 0x7090, 0x908a, 0x001d, 0x1a0c, 0x0d84,
15355 + 0x000b, 0x0005, 0x4fd4, 0x4fe7, 0x5010, 0x5030, 0x5056, 0x5085,
15356 + 0x50ab, 0x50e3, 0x5109, 0x5137, 0x5172, 0x51aa, 0x51c8, 0x51f3,
15357 + 0x5215, 0x5230, 0x523a, 0x526e, 0x5294, 0x52c3, 0x52e9, 0x5321,
15358 + 0x5365, 0x53a2, 0x53c3, 0x541c, 0x543e, 0x546c, 0x546c, 0x00c6,
15359 + 0x2061, 0x1800, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0x9084,
15360 + 0xfff9, 0x6006, 0x00ce, 0x0005, 0x2061, 0x0140, 0x605b, 0xbc94,
15361 + 0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, 0x0002, 0x7093, 0x0001,
15362 + 0x2009, 0x07d0, 0x2011, 0x554d, 0x080c, 0x78a5, 0x0005, 0x00f6,
15363 + 0x7088, 0x9086, 0x0014, 0x1510, 0x6042, 0x6020, 0xd0b4, 0x11f0,
15364 + 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, 0x11a0,
15365 + 0x7834, 0x9005, 0x1188, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005,
15366 + 0x1110, 0x70c3, 0x0001, 0x2011, 0x554d, 0x080c, 0x781a, 0x7093,
15367 + 0x0010, 0x080c, 0x523a, 0x0010, 0x708b, 0x0000, 0x00fe, 0x0005,
15368 + 0x00f6, 0x7093, 0x0003, 0x6043, 0x0004, 0x2011, 0x554d, 0x080c,
15369 + 0x781a, 0x080c, 0x5642, 0x2079, 0x0240, 0x7833, 0x1102, 0x7837,
15370 + 0x0000, 0x20a9, 0x0008, 0x9f88, 0x000e, 0x200b, 0x0000, 0x8108,
15371 + 0x1f04, 0x5025, 0x60c3, 0x0014, 0x080c, 0x557c, 0x00fe, 0x0005,
15372 + 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011, 0x554d, 0x080c, 0x781a,
15373 + 0x9086, 0x0014, 0x11b8, 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30,
15374 + 0x9296, 0x1102, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc,
15375 + 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0004,
15376 + 0x0029, 0x0010, 0x080c, 0x568f, 0x00fe, 0x0005, 0x00f6, 0x7093,
15377 + 0x0005, 0x080c, 0x5642, 0x2079, 0x0240, 0x7833, 0x1103, 0x7837,
15378 + 0x0000, 0x080c, 0x56b3, 0x080c, 0x5696, 0x1170, 0x707c, 0x9005,
15379 + 0x1158, 0x7154, 0x9186, 0xffff, 0x0138, 0x2011, 0x0008, 0x080c,
15380 + 0x54fa, 0x0168, 0x080c, 0x5677, 0x20a9, 0x0008, 0x20e1, 0x0000,
15381 + 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3,
15382 + 0x0014, 0x080c, 0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005,
15383 + 0x0500, 0x2011, 0x554d, 0x080c, 0x781a, 0x9086, 0x0014, 0x11b8,
15384 + 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103, 0x1178,
15385 + 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005,
15386 + 0x1110, 0x70c3, 0x0001, 0x7093, 0x0006, 0x0029, 0x0010, 0x080c,
15387 + 0x568f, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0007, 0x080c, 0x5642,
15388 + 0x2079, 0x0240, 0x7833, 0x1104, 0x7837, 0x0000, 0x080c, 0x56b3,
15389 + 0x080c, 0x5696, 0x11b8, 0x707c, 0x9005, 0x11a0, 0x715c, 0x9186,
15390 + 0xffff, 0x0180, 0x9180, 0x2e6e, 0x200d, 0x918c, 0xff00, 0x810f,
15391 + 0x2011, 0x0008, 0x080c, 0x54fa, 0x0180, 0x080c, 0x4700, 0x0110,
15392 + 0x080c, 0x2466, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e,
15393 + 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c,
15394 + 0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011,
15395 + 0x554d, 0x080c, 0x781a, 0x9086, 0x0014, 0x11b8, 0x080c, 0x56b3,
15396 + 0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, 0x9005,
15397 + 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3,
15398 + 0x0001, 0x7093, 0x0008, 0x0029, 0x0010, 0x080c, 0x568f, 0x00fe,
15399 + 0x0005, 0x00f6, 0x7093, 0x0009, 0x080c, 0x5642, 0x2079, 0x0240,
15400 + 0x7833, 0x1105, 0x7837, 0x0100, 0x080c, 0x5696, 0x1150, 0x707c,
15401 + 0x9005, 0x1138, 0x080c, 0x546d, 0x1188, 0x9085, 0x0001, 0x080c,
15402 + 0x2466, 0x20a9, 0x0008, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099,
15403 + 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014,
15404 + 0x080c, 0x557c, 0x0010, 0x080c, 0x4fc7, 0x00fe, 0x0005, 0x00f6,
15405 + 0x7088, 0x9005, 0x05a8, 0x2011, 0x554d, 0x080c, 0x781a, 0x9086,
15406 + 0x0014, 0x1560, 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296,
15407 + 0x1105, 0x1520, 0x7834, 0x9084, 0x0100, 0x2011, 0x0100, 0x921e,
15408 + 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3,
15409 + 0x0001, 0x7093, 0x000a, 0x00b1, 0x0098, 0x9005, 0x1178, 0x7a38,
15410 + 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x708f,
15411 + 0x0000, 0x7093, 0x000e, 0x080c, 0x5215, 0x0010, 0x080c, 0x568f,
15412 + 0x00fe, 0x0005, 0x00f6, 0x7093, 0x000b, 0x2011, 0x1c0e, 0x20e9,
15413 + 0x0001, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x4304, 0x080c,
15414 + 0x5642, 0x2079, 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, 0x080c,
15415 + 0x5696, 0x0118, 0x2013, 0x0000, 0x0020, 0x7058, 0x9085, 0x0100,
15416 + 0x2012, 0x20a9, 0x0040, 0x2009, 0x024e, 0x2011, 0x1c0e, 0x220e,
15417 + 0x8210, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, 0x6812,
15418 + 0x2009, 0x0240, 0x1f04, 0x5197, 0x60c3, 0x0084, 0x080c, 0x557c,
15419 + 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01c0, 0x2011, 0x554d,
15420 + 0x080c, 0x781a, 0x9086, 0x0084, 0x1178, 0x080c, 0x56b3, 0x2079,
15421 + 0x0260, 0x7a30, 0x9296, 0x1106, 0x1138, 0x7834, 0x9005, 0x1120,
15422 + 0x7093, 0x000c, 0x0029, 0x0010, 0x080c, 0x568f, 0x00fe, 0x0005,
15423 + 0x00f6, 0x7093, 0x000d, 0x080c, 0x5642, 0x2079, 0x0240, 0x7833,
15424 + 0x1107, 0x7837, 0x0000, 0x080c, 0x56b3, 0x20a9, 0x0040, 0x2011,
15425 + 0x026e, 0x2009, 0x024e, 0x220e, 0x8210, 0x8108, 0x9186, 0x0260,
15426 + 0x1150, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, 0x8000,
15427 + 0x6816, 0x2011, 0x0260, 0x1f04, 0x51db, 0x60c3, 0x0084, 0x080c,
15428 + 0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01e0, 0x2011,
15429 + 0x554d, 0x080c, 0x781a, 0x9086, 0x0084, 0x1198, 0x080c, 0x56b3,
15430 + 0x2079, 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, 0x9005,
15431 + 0x1140, 0x708f, 0x0001, 0x080c, 0x5614, 0x7093, 0x000e, 0x0029,
15432 + 0x0010, 0x080c, 0x568f, 0x00fe, 0x0005, 0x918d, 0x0001, 0x080c,
15433 + 0x56de, 0x7093, 0x000f, 0x708b, 0x0000, 0x2061, 0x0140, 0x605b,
15434 + 0xbc85, 0x605f, 0xb5b5, 0x2061, 0x0100, 0x6043, 0x0005, 0x6043,
15435 + 0x0004, 0x2009, 0x07d0, 0x2011, 0x554d, 0x080c, 0x780e, 0x0005,
15436 + 0x7088, 0x9005, 0x0130, 0x2011, 0x554d, 0x080c, 0x781a, 0x7093,
15437 + 0x0000, 0x0005, 0x7093, 0x0011, 0x080c, 0x9363, 0x080c, 0x56b3,
15438 + 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240,
15439 + 0x7488, 0x9480, 0x0018, 0x9080, 0x0007, 0x9084, 0x03f8, 0x8004,
15440 + 0x20a8, 0x4003, 0x080c, 0x5696, 0x11a0, 0x7174, 0x81ff, 0x0188,
15441 + 0x900e, 0x7078, 0x9084, 0x00ff, 0x0160, 0x080c, 0x23fd, 0x9186,
15442 + 0x007e, 0x0138, 0x9186, 0x0080, 0x0120, 0x2011, 0x0008, 0x080c,
15443 + 0x54fa, 0x60c3, 0x0014, 0x080c, 0x557c, 0x0005, 0x00f6, 0x7088,
15444 + 0x9005, 0x0500, 0x2011, 0x554d, 0x080c, 0x781a, 0x9086, 0x0014,
15445 + 0x11b8, 0x080c, 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1103,
15446 + 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0,
15447 + 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0012, 0x0029, 0x0010,
15448 + 0x708b, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0013, 0x080c,
15449 + 0x5650, 0x2079, 0x0240, 0x7833, 0x1103, 0x7837, 0x0000, 0x080c,
15450 + 0x56b3, 0x080c, 0x5696, 0x1170, 0x707c, 0x9005, 0x1158, 0x7154,
15451 + 0x9186, 0xffff, 0x0138, 0x2011, 0x0008, 0x080c, 0x54fa, 0x0168,
15452 + 0x080c, 0x5677, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e,
15453 + 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c,
15454 + 0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011,
15455 + 0x554d, 0x080c, 0x781a, 0x9086, 0x0014, 0x11b8, 0x080c, 0x56b3,
15456 + 0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, 0x1178, 0x7834, 0x9005,
15457 + 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3,
15458 + 0x0001, 0x7093, 0x0014, 0x0029, 0x0010, 0x708b, 0x0000, 0x00fe,
15459 + 0x0005, 0x00f6, 0x7093, 0x0015, 0x080c, 0x5650, 0x2079, 0x0240,
15460 + 0x7833, 0x1104, 0x7837, 0x0000, 0x080c, 0x56b3, 0x080c, 0x5696,
15461 + 0x11b8, 0x707c, 0x9005, 0x11a0, 0x715c, 0x9186, 0xffff, 0x0180,
15462 + 0x9180, 0x2e6e, 0x200d, 0x918c, 0xff00, 0x810f, 0x2011, 0x0008,
15463 + 0x080c, 0x54fa, 0x0180, 0x080c, 0x4700, 0x0110, 0x080c, 0x2466,
15464 + 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000,
15465 + 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x557c, 0x00fe,
15466 + 0x0005, 0x00f6, 0x7088, 0x9005, 0x05f0, 0x2011, 0x554d, 0x080c,
15467 + 0x781a, 0x9086, 0x0014, 0x15a8, 0x080c, 0x56b3, 0x2079, 0x0260,
15468 + 0x7a30, 0x9296, 0x1105, 0x1568, 0x7834, 0x9084, 0x0100, 0x2011,
15469 + 0x0100, 0x921e, 0x1168, 0x9085, 0x0001, 0x080c, 0x56de, 0x7a38,
15470 + 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x0080,
15471 + 0x9005, 0x11b8, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110,
15472 + 0x70c3, 0x0001, 0x9085, 0x0001, 0x080c, 0x56de, 0x708f, 0x0000,
15473 + 0x7a38, 0xd2f4, 0x0110, 0x70db, 0x0008, 0x7093, 0x0016, 0x0029,
15474 + 0x0010, 0x708b, 0x0000, 0x00fe, 0x0005, 0x080c, 0x9363, 0x080c,
15475 + 0x56b3, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1,
15476 + 0x0240, 0x20a9, 0x000e, 0x4003, 0x2011, 0x026d, 0x2204, 0x9084,
15477 + 0x0100, 0x2011, 0x024d, 0x2012, 0x2011, 0x026e, 0x7093, 0x0017,
15478 + 0x080c, 0x5696, 0x1150, 0x707c, 0x9005, 0x1138, 0x080c, 0x546d,
15479 + 0x1188, 0x9085, 0x0001, 0x080c, 0x2466, 0x20a9, 0x0008, 0x080c,
15480 + 0x56b3, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1,
15481 + 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x557c, 0x0010, 0x080c,
15482 + 0x4fc7, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01d8, 0x2011, 0x554d,
15483 + 0x080c, 0x781a, 0x9086, 0x0084, 0x1190, 0x080c, 0x56b3, 0x2079,
15484 + 0x0260, 0x7a30, 0x9296, 0x1106, 0x1150, 0x7834, 0x9005, 0x1138,
15485 + 0x9006, 0x080c, 0x56de, 0x7093, 0x0018, 0x0029, 0x0010, 0x708b,
15486 + 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0019, 0x080c, 0x5650,
15487 + 0x2079, 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, 0x080c, 0x56b3,
15488 + 0x2009, 0x026e, 0x2039, 0x1c0e, 0x20a9, 0x0040, 0x213e, 0x8738,
15489 + 0x8108, 0x9186, 0x0280, 0x1128, 0x6814, 0x8000, 0x6816, 0x2009,
15490 + 0x0260, 0x1f04, 0x53d6, 0x2039, 0x1c0e, 0x080c, 0x5696, 0x11e8,
15491 + 0x2728, 0x2514, 0x8207, 0x9084, 0x00ff, 0x8000, 0x2018, 0x9294,
15492 + 0x00ff, 0x8007, 0x9205, 0x202a, 0x7058, 0x2310, 0x8214, 0x92a0,
15493 + 0x1c0e, 0x2414, 0x938c, 0x0001, 0x0118, 0x9294, 0xff00, 0x0018,
15494 + 0x9294, 0x00ff, 0x8007, 0x9215, 0x2222, 0x20a9, 0x0040, 0x2009,
15495 + 0x024e, 0x270e, 0x8738, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810,
15496 + 0x8000, 0x6812, 0x2009, 0x0240, 0x1f04, 0x5409, 0x60c3, 0x0084,
15497 + 0x080c, 0x557c, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01e0,
15498 + 0x2011, 0x554d, 0x080c, 0x781a, 0x9086, 0x0084, 0x1198, 0x080c,
15499 + 0x56b3, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834,
15500 + 0x9005, 0x1140, 0x708f, 0x0001, 0x080c, 0x5614, 0x7093, 0x001a,
15501 + 0x0029, 0x0010, 0x708b, 0x0000, 0x00fe, 0x0005, 0x9085, 0x0001,
15502 + 0x080c, 0x56de, 0x7093, 0x001b, 0x080c, 0x9363, 0x080c, 0x56b3,
15503 + 0x2011, 0x0260, 0x2009, 0x0240, 0x7488, 0x9480, 0x0018, 0x9080,
15504 + 0x0007, 0x9084, 0x03f8, 0x8004, 0x20a8, 0x220e, 0x8210, 0x8108,
15505 + 0x9186, 0x0260, 0x1150, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240,
15506 + 0x6814, 0x8000, 0x6816, 0x2011, 0x0260, 0x1f04, 0x5455, 0x60c3,
15507 + 0x0084, 0x080c, 0x557c, 0x0005, 0x0005, 0x0086, 0x0096, 0x2029,
15508 + 0x1853, 0x252c, 0x20a9, 0x0008, 0x2041, 0x1c0e, 0x20e9, 0x0001,
15509 + 0x28a0, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099, 0x026e, 0x4003,
15510 + 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0108, 0x9016, 0x2800,
15511 + 0x9200, 0x200c, 0x91a6, 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210,
15512 + 0x0008, 0x8211, 0x1f04, 0x5487, 0x0804, 0x54f6, 0x82ff, 0x1160,
15513 + 0xd5d4, 0x0120, 0x91a6, 0x3fff, 0x0d90, 0x0020, 0x91a6, 0x3fff,
15514 + 0x0904, 0x54f6, 0x918d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001,
15515 + 0xd5d4, 0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423,
15516 + 0x0008, 0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318,
15517 + 0x1f04, 0x54ad, 0x04d8, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425,
15518 + 0x1f04, 0x54bf, 0x2328, 0x8529, 0x92be, 0x0007, 0x0158, 0x0006,
15519 + 0x2039, 0x0007, 0x2200, 0x973a, 0x000e, 0x27a8, 0x95a8, 0x0010,
15520 + 0x1f04, 0x54ce, 0x7556, 0x95c8, 0x2e6e, 0x292d, 0x95ac, 0x00ff,
15521 + 0x757a, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x2446, 0x001e,
15522 + 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, 0x9405, 0x201a, 0x707f,
15523 + 0x0001, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x20e1, 0x0001, 0x2898,
15524 + 0x20a9, 0x0008, 0x4003, 0x9085, 0x0001, 0x0008, 0x9006, 0x009e,
15525 + 0x008e, 0x0005, 0x0156, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x22a8,
15526 + 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x2011, 0x024e,
15527 + 0x22a0, 0x4003, 0x014e, 0x013e, 0x01de, 0x01ce, 0x015e, 0x2118,
15528 + 0x9026, 0x2001, 0x0007, 0x939a, 0x0010, 0x0218, 0x8420, 0x8001,
15529 + 0x0cd0, 0x2118, 0x84ff, 0x0120, 0x939a, 0x0010, 0x8421, 0x1de0,
15530 + 0x2021, 0x0001, 0x83ff, 0x0118, 0x8423, 0x8319, 0x1de8, 0x9238,
15531 + 0x2029, 0x026e, 0x9528, 0x2504, 0x942c, 0x11b8, 0x9405, 0x203a,
15532 + 0x7156, 0x91a0, 0x2e6e, 0x242d, 0x95ac, 0x00ff, 0x757a, 0x6532,
15533 + 0x6536, 0x0016, 0x2508, 0x080c, 0x2446, 0x001e, 0x60e7, 0x0000,
15534 + 0x65ea, 0x707f, 0x0001, 0x9084, 0x0000, 0x0005, 0x00e6, 0x2071,
15535 + 0x1800, 0x7083, 0x0000, 0x00ee, 0x0005, 0x00e6, 0x00f6, 0x2079,
15536 + 0x0100, 0x2071, 0x0140, 0x080c, 0x5603, 0x080c, 0x8b50, 0x7004,
15537 + 0x9084, 0x4000, 0x0138, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006,
15538 + 0x080c, 0x28a5, 0x0126, 0x2091, 0x8000, 0x2071, 0x1824, 0x2073,
15539 + 0x0000, 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, 0x080c, 0x5660,
15540 + 0x001e, 0x9094, 0x0010, 0x9285, 0x0080, 0x7842, 0x7a42, 0x002e,
15541 + 0x012e, 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x2011,
15542 + 0x19be, 0x2013, 0x0000, 0x708b, 0x0000, 0x012e, 0x60a3, 0x0056,
15543 + 0x60a7, 0x9575, 0x080c, 0x8b47, 0x6144, 0xd184, 0x0120, 0x7190,
15544 + 0x918d, 0x2000, 0x0018, 0x7184, 0x918d, 0x1000, 0x2011, 0x1966,
15545 + 0x2112, 0x2009, 0x07d0, 0x2011, 0x554d, 0x080c, 0x78a5, 0x0005,
15546 + 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x94da,
15547 + 0x2009, 0x00f7, 0x080c, 0x5660, 0x2061, 0x19c7, 0x900e, 0x611a,
15548 + 0x611e, 0x2061, 0x1800, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043,
15549 + 0x0090, 0x6043, 0x0010, 0x2009, 0x1966, 0x200b, 0x0000, 0x2009,
15550 + 0x002d, 0x2011, 0x55ca, 0x080c, 0x780e, 0x012e, 0x00ce, 0x002e,
15551 + 0x001e, 0x0005, 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x0499,
15552 + 0x2071, 0x0100, 0x080c, 0x8b50, 0x2071, 0x0140, 0x7004, 0x9084,
15553 + 0x4000, 0x0138, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c,
15554 + 0x28a5, 0x080c, 0x687f, 0x0188, 0x080c, 0x689a, 0x1170, 0x080c,
15555 + 0x6b4a, 0x0016, 0x080c, 0x2515, 0x2001, 0x193c, 0x2102, 0x001e,
15556 + 0x080c, 0x6b45, 0x080c, 0x67be, 0x0050, 0x2009, 0x0001, 0x080c,
15557 + 0x27f5, 0x2001, 0x0001, 0x080c, 0x23a6, 0x080c, 0x55a0, 0x012e,
15558 + 0x000e, 0x00ee, 0x0005, 0x2001, 0x180d, 0x2004, 0xd0bc, 0x0158,
15559 + 0x0026, 0x0036, 0x2011, 0x8017, 0x2001, 0x1966, 0x201c, 0x080c,
15560 + 0x447f, 0x003e, 0x002e, 0x0005, 0x20a9, 0x0012, 0x20e9, 0x0001,
15561 + 0x20a1, 0x1c80, 0x080c, 0x56b3, 0x20e9, 0x0000, 0x2099, 0x026e,
15562 + 0x0099, 0x20a9, 0x0020, 0x080c, 0x56ad, 0x2099, 0x0260, 0x20a1,
15563 + 0x1c92, 0x0051, 0x20a9, 0x000e, 0x080c, 0x56b0, 0x2099, 0x0260,
15564 + 0x20a1, 0x1cb2, 0x0009, 0x0005, 0x0016, 0x0026, 0x3410, 0x3308,
15565 + 0x2104, 0x8007, 0x2012, 0x8108, 0x8210, 0x1f04, 0x5638, 0x002e,
15566 + 0x001e, 0x0005, 0x080c, 0x9363, 0x20e1, 0x0001, 0x2099, 0x1c00,
15567 + 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005,
15568 + 0x080c, 0x9363, 0x080c, 0x56b3, 0x20e1, 0x0000, 0x2099, 0x0260,
15569 + 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000c, 0x4003, 0x0005,
15570 + 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f, 0x2001, 0x1833, 0x2004,
15571 + 0x9005, 0x1138, 0x2001, 0x1816, 0x2004, 0x9084, 0x00ff, 0x9105,
15572 + 0x0010, 0x9185, 0x00f7, 0x604a, 0x000e, 0x00ce, 0x0005, 0x0016,
15573 + 0x0046, 0x080c, 0x5f29, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a,
15574 + 0x080c, 0xc9c5, 0x2001, 0x180c, 0x200c, 0xc195, 0x2102, 0x2019,
15575 + 0x002a, 0x900e, 0x080c, 0x2ce5, 0x004e, 0x001e, 0x0005, 0x080c,
15576 + 0x55a0, 0x7093, 0x0000, 0x708b, 0x0000, 0x0005, 0x0006, 0x2001,
15577 + 0x180c, 0x2004, 0xd09c, 0x0100, 0x000e, 0x0005, 0x0006, 0x0016,
15578 + 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0x918d, 0x0006,
15579 + 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, 0x2009, 0x0001, 0x0020,
15580 + 0x2009, 0x0002, 0x0008, 0x900e, 0x6814, 0x9084, 0xffc0, 0x910d,
15581 + 0x6916, 0x0005, 0x00f6, 0x0156, 0x0146, 0x01d6, 0x9006, 0x20a9,
15582 + 0x0080, 0x20e9, 0x0001, 0x20a1, 0x1c00, 0x4004, 0x2079, 0x1c00,
15583 + 0x7803, 0x2200, 0x7807, 0x00ef, 0x780f, 0x00ef, 0x7813, 0x0138,
15584 + 0x7823, 0xffff, 0x7827, 0xffff, 0x01de, 0x014e, 0x015e, 0x00fe,
15585 + 0x0005, 0x2001, 0x1800, 0x2003, 0x0001, 0x0005, 0x2001, 0x1973,
15586 + 0x0118, 0x2003, 0x0001, 0x0010, 0x2003, 0x0000, 0x0005, 0x0156,
15587 + 0x20a9, 0x0800, 0x2009, 0x1000, 0x9006, 0x200a, 0x8108, 0x1f04,
15588 + 0x56ed, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, 0x0136, 0x0146,
15589 + 0x2069, 0x1852, 0x9006, 0xb802, 0xb8be, 0xb807, 0x0707, 0xb80a,
15590 + 0xb80e, 0xb812, 0x9198, 0x2e6e, 0x231d, 0x939c, 0x00ff, 0xbb16,
15591 + 0x0016, 0x0026, 0xb8b2, 0x080c, 0x94d3, 0x1120, 0x9192, 0x007e,
15592 + 0x1208, 0xbbb2, 0x20a9, 0x0004, 0xb8b4, 0x20e8, 0xb9b8, 0x9198,
15593 + 0x0006, 0x9006, 0x23a0, 0x4004, 0x20a9, 0x0004, 0x9198, 0x000a,
15594 + 0x23a0, 0x4004, 0x002e, 0x001e, 0xb83e, 0xb842, 0xb84e, 0xb852,
15595 + 0xb856, 0xb85a, 0xb85e, 0xb862, 0xb866, 0xb86a, 0xb86f, 0x0100,
15596 + 0xb872, 0xb876, 0xb87a, 0xb88a, 0xb88e, 0xb893, 0x0008, 0xb896,
15597 + 0xb89a, 0xb89e, 0xb8ae, 0xb9a2, 0x0096, 0xb8a4, 0x904d, 0x0110,
15598 + 0x080c, 0x0fe0, 0xb8a7, 0x0000, 0x009e, 0x9006, 0xb84a, 0x6810,
15599 + 0xb83a, 0x680c, 0xb846, 0x6814, 0x9084, 0x00ff, 0xb842, 0x014e,
15600 + 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, 0x8000,
15601 + 0xa974, 0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1a04, 0x57c2,
15602 + 0x9182, 0x0800, 0x1a04, 0x57c6, 0x2001, 0x180c, 0x2004, 0x9084,
15603 + 0x0003, 0x1904, 0x57cc, 0x9188, 0x1000, 0x2104, 0x905d, 0x0518,
15604 + 0xb804, 0x9084, 0x00ff, 0x908e, 0x0006, 0x1508, 0xb8a4, 0x900d,
15605 + 0x1904, 0x57de, 0xb850, 0x900d, 0x1148, 0xa802, 0x2900, 0xb852,
15606 + 0xb84e, 0x080c, 0x7be8, 0x9006, 0x012e, 0x0005, 0x00a6, 0x2150,
15607 + 0x2900, 0xb002, 0xa803, 0x0000, 0x00ae, 0xb852, 0x0c90, 0x2001,
15608 + 0x0005, 0x900e, 0x04b0, 0x2001, 0x0028, 0x900e, 0x0490, 0x9082,
15609 + 0x0006, 0x1288, 0x080c, 0x94d3, 0x1158, 0xb8a0, 0xd0bc, 0x1140,
15610 + 0xb900, 0xd1fc, 0x0998, 0x2001, 0x0029, 0x2009, 0x1000, 0x0408,
15611 + 0x2001, 0x0028, 0x00a8, 0x2009, 0x180c, 0x210c, 0xd18c, 0x0118,
15612 + 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, 0x0040,
15613 + 0x2001, 0x0029, 0xb900, 0xd1fc, 0x0118, 0x2009, 0x1000, 0x0048,
15614 + 0x900e, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, 0x0029,
15615 + 0x900e, 0x9005, 0x012e, 0x0005, 0x2001, 0x180c, 0x2004, 0xd084,
15616 + 0x19d0, 0x9188, 0x1000, 0x2104, 0x905d, 0x09a8, 0x080c, 0x5f2d,
15617 + 0x1990, 0xb800, 0xd0c4, 0x0978, 0x0804, 0x5776, 0x080c, 0x5da9,
15618 + 0x0904, 0x578f, 0x0804, 0x577a, 0x00b6, 0x00e6, 0x0126, 0x2091,
15619 + 0x8000, 0xa974, 0x9182, 0x0800, 0x1a04, 0x583f, 0x9188, 0x1000,
15620 + 0x2104, 0x905d, 0x0528, 0xb8a0, 0x9086, 0x007f, 0x0130, 0x080c,
15621 + 0x5f35, 0x0118, 0x080c, 0x5f2d, 0x11f0, 0xa87c, 0xd0fc, 0x0138,
15622 + 0xa894, 0x9005, 0x0120, 0x2060, 0x2900, 0x6016, 0x0058, 0x080c,
15623 + 0x94fe, 0x05e0, 0x2b00, 0x6012, 0x2900, 0x6016, 0x600b, 0xffff,
15624 + 0x6023, 0x000a, 0x2009, 0x0003, 0x080c, 0x95ce, 0x9006, 0x0450,
15625 + 0x2001, 0x0028, 0x0430, 0x9082, 0x0006, 0x1288, 0x080c, 0x94d3,
15626 + 0x1158, 0xb8a0, 0xd0bc, 0x1140, 0xb900, 0xd1fc, 0x09b0, 0x2001,
15627 + 0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009,
15628 + 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184,
15629 + 0x0118, 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001,
15630 + 0x0029, 0x9005, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2001, 0x002c,
15631 + 0x0cc0, 0x00f6, 0x00b6, 0x0126, 0x2091, 0x8000, 0xa8e0, 0x9005,
15632 + 0x1550, 0xa8dc, 0x9082, 0x0101, 0x1630, 0xa8c8, 0x9005, 0x1518,
15633 + 0xa8c4, 0x9082, 0x0101, 0x12f8, 0xa974, 0x2079, 0x1800, 0x9182,
15634 + 0x0800, 0x12e8, 0x7830, 0x9084, 0x0003, 0x1130, 0xaa98, 0xab94,
15635 + 0xa878, 0x9084, 0x0007, 0x00ea, 0x7930, 0xd18c, 0x0118, 0x2001,
15636 + 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, 0x2001,
15637 + 0x0029, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001,
15638 + 0x0029, 0x900e, 0x9006, 0x0008, 0x9005, 0x012e, 0x00be, 0x00fe,
15639 + 0x0005, 0x58d5, 0x5891, 0x58a7, 0x58d5, 0x58d5, 0x58d5, 0x58d5,
15640 + 0x58d5, 0x2100, 0x9082, 0x007e, 0x1270, 0x080c, 0x5bb0, 0x0140,
15641 + 0xb810, 0x9306, 0x1904, 0x58dd, 0xb814, 0x9206, 0x15f0, 0x0028,
15642 + 0xbb12, 0xba16, 0x0010, 0x080c, 0x435a, 0x0150, 0x04b0, 0x080c,
15643 + 0x5c0d, 0x1598, 0xb810, 0x9306, 0x1580, 0xb814, 0x9206, 0x1568,
15644 + 0x080c, 0x94fe, 0x0530, 0x2b00, 0x6012, 0x080c, 0xb4e6, 0x2900,
15645 + 0x6016, 0x600b, 0xffff, 0x6023, 0x000a, 0xa878, 0x9086, 0x0001,
15646 + 0x1170, 0x080c, 0x2d1a, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002,
15647 + 0x080c, 0x5b61, 0x2001, 0x0200, 0xb86e, 0xb893, 0x0002, 0x2009,
15648 + 0x0003, 0x080c, 0x95ce, 0x9006, 0x0068, 0x2001, 0x0001, 0x900e,
15649 + 0x0038, 0x2001, 0x002c, 0x900e, 0x0018, 0x2001, 0x0028, 0x900e,
15650 + 0x9005, 0x0000, 0x012e, 0x00be, 0x00fe, 0x0005, 0x00b6, 0x00f6,
15651 + 0x00e6, 0x0126, 0x2091, 0x8000, 0xa894, 0x90c6, 0x0015, 0x0904,
15652 + 0x5aa6, 0x90c6, 0x0056, 0x0904, 0x5aaa, 0x90c6, 0x0066, 0x0904,
15653 + 0x5aae, 0x90c6, 0x0071, 0x0904, 0x5ab2, 0x90c6, 0x0074, 0x0904,
15654 + 0x5ab6, 0x90c6, 0x007c, 0x0904, 0x5aba, 0x90c6, 0x007e, 0x0904,
15655 + 0x5abe, 0x90c6, 0x0037, 0x0904, 0x5ac2, 0x9016, 0x2079, 0x1800,
15656 + 0xa974, 0x9186, 0x00ff, 0x0904, 0x5aa1, 0x9182, 0x0800, 0x1a04,
15657 + 0x5aa1, 0x080c, 0x5c0d, 0x1190, 0xb804, 0x9084, 0x00ff, 0x9082,
15658 + 0x0006, 0x1260, 0xa894, 0x90c6, 0x006f, 0x0140, 0x080c, 0x94d3,
15659 + 0x1904, 0x5a8a, 0xb8a0, 0xd0bc, 0x1904, 0x5a8a, 0xa894, 0x90c6,
15660 + 0x006f, 0x0158, 0x90c6, 0x005e, 0x0904, 0x59e6, 0x90c6, 0x0064,
15661 + 0x0904, 0x5a12, 0x2008, 0x0804, 0x59a8, 0xa998, 0xa8b0, 0x2040,
15662 + 0x080c, 0x94d3, 0x1120, 0x9182, 0x007f, 0x0a04, 0x59a8, 0x9186,
15663 + 0x00ff, 0x0904, 0x59a8, 0x9182, 0x0800, 0x1a04, 0x59a8, 0xaaa0,
15664 + 0xab9c, 0x7874, 0x9306, 0x1188, 0x7878, 0x0096, 0x924e, 0x1128,
15665 + 0x2208, 0x2310, 0x009e, 0x0804, 0x59a8, 0x99cc, 0xff00, 0x009e,
15666 + 0x1120, 0x2208, 0x2310, 0x0804, 0x59a8, 0x080c, 0x435a, 0x0904,
15667 + 0x59b2, 0x900e, 0x9016, 0x90c6, 0x4000, 0x1558, 0x0006, 0x080c,
15668 + 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0x20a9,
15669 + 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031, 0x20a0, 0xb8b4,
15670 + 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c, 0x0f2b, 0x20a9,
15671 + 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0035, 0x20a0, 0xb8b4,
15672 + 0x20e0, 0xb8b8, 0x9080, 0x000a, 0x2098, 0x080c, 0x0f2b, 0x000e,
15673 + 0x0098, 0x90c6, 0x4007, 0x1110, 0x2408, 0x0070, 0x90c6, 0x4008,
15674 + 0x1118, 0x2708, 0x2610, 0x0040, 0x90c6, 0x4009, 0x1108, 0x0020,
15675 + 0x2001, 0x4005, 0x2009, 0x000a, 0xa896, 0xa99a, 0xaa9e, 0x2001,
15676 + 0x0030, 0x0470, 0x080c, 0x94fe, 0x1130, 0x2001, 0x4005, 0x2009,
15677 + 0x0003, 0x9016, 0x0c88, 0x2b00, 0x6012, 0x080c, 0xb4e6, 0x2900,
15678 + 0x6016, 0x6023, 0x0001, 0xa868, 0xd88c, 0x0108, 0xc0f5, 0xa86a,
15679 + 0x0126, 0x2091, 0x8000, 0x080c, 0x2d1a, 0x012e, 0x9006, 0x080c,
15680 + 0x5b4d, 0x2001, 0x0002, 0x080c, 0x5b61, 0x2009, 0x0002, 0x080c,
15681 + 0x95ce, 0xa8b0, 0xd094, 0x0118, 0xb8bc, 0xc08d, 0xb8be, 0x9006,
15682 + 0x9005, 0x012e, 0x00ee, 0x00fe, 0x00be, 0x0005, 0x080c, 0x4dfe,
15683 + 0x0118, 0x2009, 0x0007, 0x0410, 0xa998, 0xaeb0, 0x080c, 0x5c0d,
15684 + 0x0120, 0x2009, 0x000a, 0x0804, 0x59a8, 0x9186, 0x007f, 0x0130,
15685 + 0x080c, 0x5f2d, 0x0118, 0x2009, 0x0009, 0x0080, 0x0096, 0x080c,
15686 + 0x0fae, 0x1120, 0x009e, 0x2009, 0x0002, 0x0040, 0x2900, 0x009e,
15687 + 0xa806, 0x080c, 0xb275, 0x1998, 0x2009, 0x0003, 0x2001, 0x4005,
15688 + 0x0804, 0x59ac, 0xa998, 0xaeb0, 0x080c, 0x5c0d, 0x0120, 0x2009,
15689 + 0x000a, 0x0804, 0x59a8, 0x0096, 0x080c, 0x0fae, 0x1128, 0x009e,
15690 + 0x2009, 0x0002, 0x0804, 0x5a69, 0x2900, 0x009e, 0xa806, 0x0096,
15691 + 0x2048, 0x20a9, 0x002b, 0xb8b4, 0x20e0, 0xb8b8, 0x2098, 0xa860,
15692 + 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x20a9, 0x0008,
15693 + 0x9080, 0x0006, 0x20a0, 0xbbb8, 0x9398, 0x0006, 0x2398, 0x080c,
15694 + 0x0f2b, 0x009e, 0xa87b, 0x0000, 0xa883, 0x0000, 0xa897, 0x4000,
15695 + 0xd684, 0x1168, 0x080c, 0x4dea, 0xd0b4, 0x1118, 0xa89b, 0x000b,
15696 + 0x00e0, 0xb800, 0xd08c, 0x0118, 0xa89b, 0x000c, 0x00b0, 0x080c,
15697 + 0x5f2d, 0x0118, 0xa89b, 0x0009, 0x0080, 0x080c, 0x4dfe, 0x0118,
15698 + 0xa89b, 0x0007, 0x0050, 0x080c, 0xb258, 0x1904, 0x59df, 0x2009,
15699 + 0x0003, 0x2001, 0x4005, 0x0804, 0x59ac, 0xa87b, 0x0030, 0xa897,
15700 + 0x4005, 0xa804, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084,
15701 + 0xffc0, 0x2009, 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031,
15702 + 0x0000, 0x2041, 0x11e3, 0x080c, 0x9a1f, 0x1904, 0x59df, 0x2009,
15703 + 0x0002, 0x08f8, 0x2001, 0x0028, 0x900e, 0x0804, 0x59e0, 0x2009,
15704 + 0x180c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0038, 0xd184,
15705 + 0x0118, 0x2001, 0x0004, 0x0010, 0x2001, 0x0029, 0x900e, 0x0804,
15706 + 0x59e0, 0x2001, 0x0029, 0x900e, 0x0804, 0x59e0, 0x080c, 0x327f,
15707 + 0x0804, 0x59e1, 0x080c, 0x4b29, 0x0804, 0x59e1, 0x080c, 0x3fec,
15708 + 0x0804, 0x59e1, 0x080c, 0x43f5, 0x0804, 0x59e1, 0x080c, 0x4572,
15709 + 0x0804, 0x59e1, 0x080c, 0x4796, 0x0804, 0x59e1, 0x080c, 0x499b,
15710 + 0x0804, 0x59e1, 0x080c, 0x3459, 0x0804, 0x59e1, 0x00b6, 0xa974,
15711 + 0xae78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1618, 0x9182, 0x0800,
15712 + 0x1268, 0x9188, 0x1000, 0x2104, 0x905d, 0x0140, 0x080c, 0x5f2d,
15713 + 0x1148, 0x00e9, 0x080c, 0x5d38, 0x9006, 0x00b0, 0x2001, 0x0028,
15714 + 0x900e, 0x0090, 0x9082, 0x0006, 0x1240, 0xb900, 0xd1fc, 0x0d88,
15715 + 0x2001, 0x0029, 0x2009, 0x1000, 0x0038, 0x2001, 0x0029, 0x900e,
15716 + 0x0018, 0x2001, 0x0029, 0x900e, 0x9005, 0x00be, 0x0005, 0x0126,
15717 + 0x2091, 0x8000, 0xb850, 0x900d, 0x0150, 0x2900, 0x0096, 0x2148,
15718 + 0xa802, 0x009e, 0xa803, 0x0000, 0xb852, 0x012e, 0x0005, 0x2900,
15719 + 0xb852, 0xb84e, 0xa803, 0x0000, 0x0cc0, 0x0126, 0x2091, 0x8000,
15720 + 0xb84c, 0x9005, 0x0170, 0x00e6, 0x2071, 0x19b4, 0x7004, 0x9086,
15721 + 0x0002, 0x0168, 0x00ee, 0xb84c, 0xa802, 0x2900, 0xb84e, 0x012e,
15722 + 0x0005, 0x2900, 0xb852, 0xb84e, 0xa803, 0x0000, 0x0cc0, 0x701c,
15723 + 0x9b06, 0x1d80, 0xb84c, 0x00a6, 0x2050, 0xb000, 0xa802, 0x2900,
15724 + 0xb002, 0x00ae, 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000,
15725 + 0xb84c, 0x904d, 0x0130, 0xa800, 0x9005, 0x1108, 0xb852, 0xb84e,
15726 + 0x9905, 0x012e, 0x0005, 0xb84c, 0x904d, 0x0130, 0xa800, 0x9005,
15727 + 0x1108, 0xb852, 0xb84e, 0x9905, 0x0005, 0x00b6, 0x0126, 0x00c6,
15728 + 0x0026, 0x2091, 0x8000, 0x6210, 0x2258, 0xba00, 0x9005, 0x0110,
15729 + 0xc285, 0x0008, 0xc284, 0xba02, 0x002e, 0x00ce, 0x012e, 0x00be,
15730 + 0x0005, 0x00b6, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2258,
15731 + 0xba04, 0x0006, 0x9086, 0x0006, 0x1170, 0xb89c, 0xd0ac, 0x0158,
15732 + 0x080c, 0x5f29, 0x0140, 0x9284, 0xff00, 0x8007, 0x9086, 0x0007,
15733 + 0x1110, 0x2011, 0x0600, 0x000e, 0x9294, 0xff00, 0x9215, 0xba06,
15734 + 0x0006, 0x9086, 0x0006, 0x1120, 0xba90, 0x82ff, 0x090c, 0x0d84,
15735 + 0x000e, 0x00ce, 0x012e, 0x00be, 0x0005, 0x00b6, 0x0126, 0x00c6,
15736 + 0x2091, 0x8000, 0x6210, 0x2258, 0xba04, 0x0006, 0x9086, 0x0006,
15737 + 0x1168, 0xb89c, 0xd0a4, 0x0150, 0x080c, 0x5f25, 0x1138, 0x9284,
15738 + 0x00ff, 0x9086, 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0x9294,
15739 + 0x00ff, 0x8007, 0x9215, 0xba06, 0x00ce, 0x012e, 0x00be, 0x0005,
15740 + 0x00d6, 0x0026, 0x9182, 0x0800, 0x0218, 0x9085, 0x0001, 0x00b0,
15741 + 0x9190, 0x1000, 0x2204, 0x905d, 0x1180, 0x0096, 0x080c, 0x0fae,
15742 + 0x2958, 0x009e, 0x0d90, 0x2b00, 0x2012, 0xb85c, 0xb8ba, 0xb860,
15743 + 0xb8b6, 0x9006, 0xb8a6, 0x080c, 0x56f3, 0x9006, 0x002e, 0x00de,
15744 + 0x0005, 0x00b6, 0x0096, 0x0126, 0x2091, 0x8000, 0x0026, 0x9182,
15745 + 0x0800, 0x0218, 0x9085, 0x0001, 0x0458, 0x00d6, 0x9190, 0x1000,
15746 + 0x2204, 0x905d, 0x0518, 0x2013, 0x0000, 0xb8a4, 0x904d, 0x0110,
15747 + 0x080c, 0x0fe0, 0x00d6, 0x00c6, 0xb8ac, 0x2060, 0x8cff, 0x0168,
15748 + 0x600c, 0x0006, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0110, 0x080c,
15749 + 0x0f60, 0x080c, 0x9554, 0x00ce, 0x0c88, 0x00ce, 0x00de, 0x2b48,
15750 + 0xb8b8, 0xb85e, 0xb8b4, 0xb862, 0x080c, 0x0ff0, 0x00de, 0x9006,
15751 + 0x002e, 0x012e, 0x009e, 0x00be, 0x0005, 0x0016, 0x9182, 0x0800,
15752 + 0x0218, 0x9085, 0x0001, 0x0030, 0x9188, 0x1000, 0x2104, 0x905d,
15753 + 0x0dc0, 0x9006, 0x001e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146,
15754 + 0x9006, 0xb80a, 0xb80e, 0xb800, 0xc08c, 0xb802, 0x080c, 0x6877,
15755 + 0x1510, 0xb8a0, 0x9086, 0x007e, 0x0120, 0x080c, 0x94d3, 0x11d8,
15756 + 0x0078, 0x7040, 0xd0e4, 0x01b8, 0x00c6, 0x2061, 0x194f, 0x7048,
15757 + 0x2062, 0x704c, 0x6006, 0x7050, 0x600a, 0x7054, 0x600e, 0x00ce,
15758 + 0x703c, 0x2069, 0x0140, 0x9005, 0x1110, 0x2001, 0x0001, 0x6886,
15759 + 0x2069, 0x1800, 0x68ae, 0x7040, 0xb85e, 0x7048, 0xb862, 0x704c,
15760 + 0xb866, 0x20e1, 0x0000, 0x2099, 0x0276, 0xb8b4, 0x20e8, 0xb8b8,
15761 + 0x9088, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2099, 0x027a,
15762 + 0x9088, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2069, 0x0200,
15763 + 0x6817, 0x0001, 0x7040, 0xb86a, 0x7144, 0xb96e, 0x7048, 0xb872,
15764 + 0x7050, 0xb876, 0x2069, 0x0200, 0x6817, 0x0000, 0xb8a0, 0x9086,
15765 + 0x007e, 0x1110, 0x7144, 0xb96e, 0x9182, 0x0211, 0x1218, 0x2009,
15766 + 0x0008, 0x0400, 0x9182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0,
15767 + 0x9182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0x9182, 0x0349,
15768 + 0x1218, 0x2009, 0x0005, 0x0070, 0x9182, 0x0421, 0x1218, 0x2009,
15769 + 0x0004, 0x0040, 0x9182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010,
15770 + 0x2009, 0x0002, 0xb992, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005,
15771 + 0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, 0x7034, 0xb896, 0x703c,
15772 + 0xb89a, 0x7054, 0xb89e, 0x0036, 0xbbbc, 0xc384, 0xba00, 0x2009,
15773 + 0x1872, 0x210c, 0xd0bc, 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008,
15774 + 0xc2ac, 0xd0c4, 0x0148, 0xd1e4, 0x0138, 0xc2bd, 0xd0cc, 0x0128,
15775 + 0xd38c, 0x1108, 0xc385, 0x0008, 0xc2bc, 0xba02, 0xbbbe, 0x003e,
15776 + 0x00ee, 0x002e, 0x001e, 0x0005, 0x0096, 0x0126, 0x2091, 0x8000,
15777 + 0xb8a4, 0x904d, 0x0578, 0xa900, 0x81ff, 0x15c0, 0xaa04, 0x9282,
15778 + 0x0010, 0x16c8, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x8906, 0x8006,
15779 + 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, 0x9080, 0x0004,
15780 + 0x2098, 0x2009, 0x0010, 0x20a9, 0x0001, 0x4002, 0x9086, 0xffff,
15781 + 0x0120, 0x8109, 0x1dd0, 0x080c, 0x0d84, 0x3c00, 0x20e8, 0x3300,
15782 + 0x8001, 0x20a0, 0x4604, 0x8210, 0xaa06, 0x01de, 0x01ce, 0x014e,
15783 + 0x013e, 0x0060, 0x080c, 0x0fae, 0x0170, 0x2900, 0xb8a6, 0xa803,
15784 + 0x0000, 0x080c, 0x5dc9, 0xa807, 0x0001, 0xae12, 0x9085, 0x0001,
15785 + 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0126, 0x2091, 0x8000,
15786 + 0x0096, 0xb8a4, 0x904d, 0x0188, 0xa800, 0x9005, 0x1150, 0x080c,
15787 + 0x5dd8, 0x1158, 0xa804, 0x908a, 0x0002, 0x0218, 0x8001, 0xa806,
15788 + 0x0020, 0x080c, 0x0fe0, 0xb8a7, 0x0000, 0x009e, 0x012e, 0x0005,
15789 + 0x0126, 0x2091, 0x8000, 0x080c, 0x7be8, 0x012e, 0x0005, 0x901e,
15790 + 0x0010, 0x2019, 0x0001, 0x900e, 0x0126, 0x2091, 0x8000, 0xb84c,
15791 + 0x2048, 0xb800, 0xd0dc, 0x1170, 0x89ff, 0x0500, 0x83ff, 0x0120,
15792 + 0xa878, 0x9606, 0x0158, 0x0030, 0xa86c, 0x9406, 0x1118, 0xa870,
15793 + 0x9506, 0x0120, 0x2908, 0xa800, 0x2048, 0x0c70, 0x080c, 0x8eec,
15794 + 0xaa00, 0xb84c, 0x9906, 0x1110, 0xba4e, 0x0020, 0x00a6, 0x2150,
15795 + 0xb202, 0x00ae, 0x82ff, 0x1110, 0xb952, 0x89ff, 0x012e, 0x0005,
15796 + 0x9016, 0x0489, 0x1110, 0x2011, 0x0001, 0x0005, 0x080c, 0x5e2d,
15797 + 0x0118, 0x080c, 0xb15e, 0x0010, 0x9085, 0x0001, 0x0005, 0x080c,
15798 + 0x5e2d, 0x0118, 0x080c, 0xb0f8, 0x0010, 0x9085, 0x0001, 0x0005,
15799 + 0x080c, 0x5e2d, 0x0118, 0x080c, 0xb15b, 0x0010, 0x9085, 0x0001,
15800 + 0x0005, 0x080c, 0x5e2d, 0x0118, 0x080c, 0xb11c, 0x0010, 0x9085,
15801 + 0x0001, 0x0005, 0x080c, 0x5e2d, 0x0118, 0x080c, 0xb188, 0x0010,
15802 + 0x9085, 0x0001, 0x0005, 0xb8a4, 0x900d, 0x1118, 0x9085, 0x0001,
15803 + 0x0005, 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, 0x810e,
15804 + 0x810f, 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0004,
15805 + 0x2098, 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, 0x0128,
15806 + 0x8109, 0x1dd8, 0x9085, 0x0001, 0x0008, 0x9006, 0x01ce, 0x013e,
15807 + 0x0005, 0x0146, 0x01d6, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0004,
15808 + 0x20a0, 0x20a9, 0x0010, 0x2009, 0xffff, 0x4104, 0x01de, 0x014e,
15809 + 0x0136, 0x01c6, 0xa800, 0x9005, 0x11b8, 0x890e, 0x810e, 0x810f,
15810 + 0x9184, 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0004, 0x2098,
15811 + 0x20a9, 0x0001, 0x2009, 0x0010, 0x4002, 0x9606, 0x0128, 0x8109,
15812 + 0x1dd8, 0x9085, 0x0001, 0x0068, 0x0146, 0x01d6, 0x3300, 0x8001,
15813 + 0x20a0, 0x3c00, 0x20e8, 0x2001, 0xffff, 0x4004, 0x01de, 0x014e,
15814 + 0x9006, 0x01ce, 0x013e, 0x0005, 0x0096, 0x0126, 0x2091, 0x8000,
15815 + 0xb8a4, 0x904d, 0x1128, 0x080c, 0x0fae, 0x0168, 0x2900, 0xb8a6,
15816 + 0x080c, 0x5dc9, 0xa803, 0x0001, 0xa807, 0x0000, 0x9085, 0x0001,
15817 + 0x012e, 0x009e, 0x0005, 0x9006, 0x0cd8, 0x0096, 0x0126, 0x2091,
15818 + 0x8000, 0xb8a4, 0x904d, 0x0130, 0xb8a7, 0x0000, 0x080c, 0x0fe0,
15819 + 0x9085, 0x0001, 0x012e, 0x009e, 0x0005, 0xb89c, 0xd0a4, 0x0005,
15820 + 0x00b6, 0x00f6, 0x080c, 0x6877, 0x01b0, 0x71c0, 0x81ff, 0x1198,
15821 + 0x71d8, 0xd19c, 0x0180, 0x2001, 0x007e, 0x9080, 0x1000, 0x2004,
15822 + 0x905d, 0x0148, 0xb804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1118,
15823 + 0xb800, 0xc0ed, 0xb802, 0x2079, 0x1852, 0x7804, 0xd0a4, 0x01d0,
15824 + 0x0156, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x5c0d, 0x1168,
15825 + 0xb804, 0x9084, 0xff00, 0x8007, 0x9096, 0x0004, 0x0118, 0x9086,
15826 + 0x0006, 0x1118, 0xb800, 0xc0ed, 0xb802, 0x001e, 0x8108, 0x1f04,
15827 + 0x5e54, 0x015e, 0x080c, 0x5eeb, 0x0120, 0x2001, 0x1952, 0x200c,
15828 + 0x0038, 0x2079, 0x1852, 0x7804, 0xd0a4, 0x0130, 0x2009, 0x07d0,
15829 + 0x2011, 0x5e7f, 0x080c, 0x78a5, 0x00fe, 0x00be, 0x0005, 0x00b6,
15830 + 0x2011, 0x5e7f, 0x080c, 0x781a, 0x080c, 0x5eeb, 0x01d8, 0x2001,
15831 + 0x107e, 0x2004, 0x2058, 0xb900, 0xc1ec, 0xb902, 0x080c, 0x5f29,
15832 + 0x0130, 0x2009, 0x07d0, 0x2011, 0x5e7f, 0x080c, 0x78a5, 0x00e6,
15833 + 0x2071, 0x1800, 0x9006, 0x7076, 0x7058, 0x707a, 0x080c, 0x2b1e,
15834 + 0x00ee, 0x0488, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016,
15835 + 0x080c, 0x5c0d, 0x1510, 0xb800, 0xd0ec, 0x01f8, 0x0046, 0xbaa0,
15836 + 0x2220, 0x9006, 0x2009, 0x0029, 0x080c, 0xc9c5, 0xb800, 0xc0e5,
15837 + 0xc0ec, 0xb802, 0xb804, 0x9084, 0x00ff, 0x9085, 0x0700, 0xb806,
15838 + 0x2019, 0x0029, 0x080c, 0x7d55, 0x0076, 0x903e, 0x080c, 0x7c4d,
15839 + 0x900e, 0x080c, 0xc73e, 0x007e, 0x004e, 0x001e, 0x8108, 0x1f04,
15840 + 0x5ea7, 0x00ce, 0x015e, 0x00be, 0x0005, 0x00b6, 0x6010, 0x2058,
15841 + 0xb800, 0xc0ec, 0xb802, 0x00be, 0x0005, 0x7810, 0x00b6, 0x2058,
15842 + 0xb800, 0x00be, 0xd0ac, 0x0005, 0x7810, 0x00b6, 0x2058, 0xb800,
15843 + 0x00be, 0xd0bc, 0x0005, 0x00b6, 0x00f6, 0x2001, 0x107e, 0x2004,
15844 + 0x905d, 0x0110, 0xb800, 0xd0ec, 0x00fe, 0x00be, 0x0005, 0x0126,
15845 + 0x0026, 0x2091, 0x8000, 0x0006, 0xbaa0, 0x9290, 0x1000, 0x2204,
15846 + 0x9b06, 0x190c, 0x0d84, 0x000e, 0xba00, 0x9005, 0x0110, 0xc2fd,
15847 + 0x0008, 0xc2fc, 0xba02, 0x002e, 0x012e, 0x0005, 0x2011, 0x1836,
15848 + 0x2204, 0xd0cc, 0x0138, 0x2001, 0x1950, 0x200c, 0x2011, 0x5f1b,
15849 + 0x080c, 0x78a5, 0x0005, 0x2011, 0x5f1b, 0x080c, 0x781a, 0x2011,
15850 + 0x1836, 0x2204, 0xc0cc, 0x2012, 0x0005, 0x080c, 0x4dea, 0xd0ac,
15851 + 0x0005, 0x080c, 0x4dea, 0xd0a4, 0x0005, 0x0016, 0xb904, 0x9184,
15852 + 0x00ff, 0x908e, 0x0006, 0x001e, 0x0005, 0x0016, 0xb904, 0x9184,
15853 + 0xff00, 0x8007, 0x908e, 0x0006, 0x001e, 0x0005, 0x00b6, 0x00f6,
15854 + 0x080c, 0xb759, 0x0158, 0x70d8, 0x9084, 0x0028, 0x0138, 0x2001,
15855 + 0x107f, 0x2004, 0x905d, 0x0110, 0xb8bc, 0xd094, 0x00fe, 0x00be,
15856 + 0x0005, 0x2071, 0x1904, 0x7003, 0x0001, 0x7007, 0x0000, 0x9006,
15857 + 0x7012, 0x7016, 0x701a, 0x701e, 0x700a, 0x7046, 0x2001, 0x1917,
15858 + 0x2003, 0x0000, 0x0005, 0x0016, 0x00e6, 0x2071, 0x1918, 0x900e,
15859 + 0x710a, 0x080c, 0x4dea, 0xd0fc, 0x1140, 0x080c, 0x4dea, 0x900e,
15860 + 0xd09c, 0x0108, 0x8108, 0x7102, 0x00f8, 0x2001, 0x1872, 0x200c,
15861 + 0x9184, 0x0007, 0x0002, 0x5f6d, 0x5f6d, 0x5f6d, 0x5f6d, 0x5f6d,
15862 + 0x5f83, 0x5f91, 0x5f6d, 0x7003, 0x0003, 0x2009, 0x1873, 0x210c,
15863 + 0x9184, 0xff00, 0x8007, 0x9005, 0x1110, 0x2001, 0x0002, 0x7006,
15864 + 0x0018, 0x7003, 0x0005, 0x0c88, 0x00ee, 0x001e, 0x0005, 0x00e6,
15865 + 0x2071, 0x0050, 0x684c, 0x9005, 0x1150, 0x00e6, 0x2071, 0x1904,
15866 + 0x7028, 0xc085, 0x702a, 0x00ee, 0x9085, 0x0001, 0x0488, 0x6844,
15867 + 0x9005, 0x0158, 0x080c, 0x6bb2, 0x6a60, 0x9200, 0x7002, 0x6864,
15868 + 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6860, 0x7002, 0x6864,
15869 + 0x7006, 0x6868, 0x700a, 0x686c, 0x700e, 0x6844, 0x9005, 0x1110,
15870 + 0x7012, 0x7016, 0x684c, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e,
15871 + 0x7037, 0x0019, 0x702b, 0x0001, 0x00e6, 0x2071, 0x1904, 0x7028,
15872 + 0xc084, 0x702a, 0x7007, 0x0001, 0x700b, 0x0000, 0x00ee, 0x9006,
15873 + 0x00ee, 0x0005, 0xa868, 0xd0fc, 0x11c8, 0x00e6, 0x0026, 0x2001,
15874 + 0x1918, 0x2004, 0x9005, 0x0904, 0x61ae, 0xa87c, 0xd0bc, 0x1904,
15875 + 0x61ae, 0xa978, 0xa874, 0x9105, 0x1904, 0x61ae, 0x2001, 0x1918,
15876 + 0x2004, 0x0002, 0x61ae, 0x6017, 0x6051, 0x6051, 0x0005, 0xa868,
15877 + 0xd0fc, 0x11e0, 0x00e6, 0x0026, 0x2009, 0x1918, 0x210c, 0x81ff,
15878 + 0x0904, 0x61ae, 0xa87c, 0xd0cc, 0x0904, 0x61ae, 0xa880, 0x9084,
15879 + 0x00ff, 0x9086, 0x0001, 0x1904, 0x61ae, 0x9186, 0x0003, 0x0904,
15880 + 0x6051, 0xa84f, 0x8021, 0xa853, 0x0017, 0x0028, 0x0005, 0xa84f,
15881 + 0x8020, 0xa853, 0x0016, 0x2071, 0x1904, 0x701c, 0x9005, 0x1904,
15882 + 0x6360, 0x0e04, 0x63a9, 0x2071, 0x0000, 0xa84c, 0x7082, 0xa850,
15883 + 0x7032, 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, 0x4080,
15884 + 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2071, 0x1800,
15885 + 0x2011, 0x0001, 0xa804, 0x900d, 0x702c, 0x1148, 0xa802, 0x2900,
15886 + 0x702e, 0x70bc, 0x9200, 0x70be, 0x002e, 0x00ee, 0x0005, 0x0096,
15887 + 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x009e,
15888 + 0x0c68, 0xa84f, 0x0000, 0x00f6, 0x2079, 0x0050, 0x2071, 0x1904,
15889 + 0xa803, 0x0000, 0x7010, 0x9005, 0x1904, 0x6136, 0x782c, 0x908c,
15890 + 0x0780, 0x190c, 0x64ce, 0x8004, 0x8004, 0x8004, 0x9084, 0x0003,
15891 + 0x0002, 0x606f, 0x6136, 0x6092, 0x60d5, 0x080c, 0x0d84, 0x2071,
15892 + 0x1800, 0x2900, 0x7822, 0xa804, 0x900d, 0x1170, 0x2071, 0x19c7,
15893 + 0x7040, 0x9005, 0x1328, 0x2001, 0x1919, 0x2004, 0x8005, 0x7042,
15894 + 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, 0x2148, 0xa904,
15895 + 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200,
15896 + 0x70be, 0x0c20, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804, 0x900d,
15897 + 0x1570, 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148,
15898 + 0x2009, 0x182f, 0x210c, 0x918a, 0x0040, 0x0218, 0x7022, 0x00ee,
15899 + 0x0048, 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc,
15900 + 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4,
15901 + 0x1d00, 0x2071, 0x19c7, 0x7040, 0x9005, 0x1328, 0x2001, 0x1919,
15902 + 0x2004, 0x8005, 0x7042, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016,
15903 + 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8,
15904 + 0x702e, 0x70bc, 0x9200, 0x70be, 0x0820, 0x0096, 0x00e6, 0x7824,
15905 + 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc,
15906 + 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4,
15907 + 0x1d70, 0x00ee, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd09c,
15908 + 0x11a0, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, 0x1560, 0x2071,
15909 + 0x19c7, 0x7040, 0x9005, 0x1328, 0x2001, 0x1919, 0x2004, 0x8005,
15910 + 0x7042, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x009e, 0x2908, 0x7010,
15911 + 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008,
15912 + 0x711e, 0x2148, 0xa804, 0x900d, 0x1170, 0x2071, 0x19c7, 0x7040,
15913 + 0x9005, 0x1328, 0x2001, 0x1919, 0x2004, 0x8005, 0x7042, 0x00fe,
15914 + 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148,
15915 + 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc,
15916 + 0x9200, 0x70be, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2908, 0x7010,
15917 + 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008,
15918 + 0x711e, 0x2148, 0xa804, 0x900d, 0x1904, 0x6189, 0x782c, 0x9094,
15919 + 0x0780, 0x190c, 0x64ce, 0xd09c, 0x1198, 0x701c, 0x904d, 0x0180,
15920 + 0x7010, 0x8001, 0x7012, 0x1108, 0x701a, 0xa800, 0x701e, 0x2900,
15921 + 0x7822, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd09c, 0x0d68,
15922 + 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x01a0, 0x00e6,
15923 + 0x7824, 0x2048, 0x2071, 0x1800, 0x702c, 0xa802, 0x2900, 0x702e,
15924 + 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce,
15925 + 0xd0a4, 0x1d70, 0x00ee, 0x2071, 0x19c7, 0x7040, 0x9005, 0x1328,
15926 + 0x2001, 0x1919, 0x2004, 0x8005, 0x7042, 0x00fe, 0x002e, 0x00ee,
15927 + 0x0005, 0x00e6, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904,
15928 + 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200,
15929 + 0x70be, 0x00ee, 0x0804, 0x6146, 0xa868, 0xd0fc, 0x1904, 0x61ea,
15930 + 0x0096, 0xa804, 0xa807, 0x0000, 0x904d, 0x190c, 0x0f60, 0x009e,
15931 + 0x0018, 0xa868, 0xd0fc, 0x15f0, 0x00e6, 0x0026, 0xa84f, 0x0000,
15932 + 0x00f6, 0x2079, 0x0050, 0x2071, 0x1800, 0x70f0, 0x8001, 0x01d0,
15933 + 0x1678, 0x2071, 0x1904, 0xa803, 0x0000, 0x7010, 0x9005, 0x1904,
15934 + 0x62de, 0x782c, 0x908c, 0x0780, 0x190c, 0x64ce, 0x8004, 0x8004,
15935 + 0x8004, 0x9084, 0x0003, 0x0002, 0x61eb, 0x62de, 0x6204, 0x6271,
15936 + 0x080c, 0x0d84, 0x70f3, 0x0fa0, 0x71ec, 0x8107, 0x9106, 0x9094,
15937 + 0x00c0, 0x9184, 0xff3f, 0x9205, 0x70ee, 0x3b08, 0x3a00, 0x9104,
15938 + 0x918d, 0x00c0, 0x21d8, 0x9084, 0xff3f, 0x9205, 0x20d0, 0x0888,
15939 + 0x70f2, 0x0878, 0x0005, 0x2071, 0x1800, 0x2900, 0x7822, 0xa804,
15940 + 0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c,
15941 + 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e,
15942 + 0x70bc, 0x9200, 0x70be, 0x0c70, 0x2071, 0x1800, 0x2900, 0x7822,
15943 + 0xa804, 0x900d, 0x1904, 0x6262, 0x7830, 0x8007, 0x9084, 0x001f,
15944 + 0x9082, 0x0005, 0x1220, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7824,
15945 + 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, 0x2009, 0x182f,
15946 + 0x210c, 0x918a, 0x0040, 0x0218, 0x7022, 0x00ee, 0x0048, 0x00ee,
15947 + 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be,
15948 + 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d00, 0x0e04,
15949 + 0x6259, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000,
15950 + 0x6836, 0x6833, 0x0013, 0x00de, 0x2001, 0x1915, 0x200c, 0xc184,
15951 + 0x2102, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c,
15952 + 0x113e, 0x2009, 0x1917, 0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee,
15953 + 0x0005, 0x2001, 0x1915, 0x200c, 0xc185, 0x2102, 0x00fe, 0x002e,
15954 + 0x00ee, 0x0005, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210,
15955 + 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x0804,
15956 + 0x6217, 0x0096, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c,
15957 + 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094,
15958 + 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d70, 0x00ee, 0x0e04, 0x62b3,
15959 + 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836,
15960 + 0x6833, 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080,
15961 + 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2009, 0x1917,
15962 + 0x200b, 0x0000, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd09c,
15963 + 0x1170, 0x009e, 0x2900, 0x7822, 0xa804, 0x900d, 0x11e0, 0x00fe,
15964 + 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, 0x0c58, 0x009e,
15965 + 0x2908, 0x7010, 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110,
15966 + 0xa902, 0x0008, 0x711e, 0x2148, 0xa804, 0x900d, 0x1120, 0x00fe,
15967 + 0x002e, 0x00ee, 0x0005, 0x2071, 0x1800, 0x9016, 0x702c, 0x2148,
15968 + 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc,
15969 + 0x9200, 0x70be, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2908, 0x7010,
15970 + 0x8000, 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008,
15971 + 0x711e, 0x2148, 0xa804, 0x900d, 0x1904, 0x634d, 0x782c, 0x9094,
15972 + 0x0780, 0x190c, 0x64ce, 0xd09c, 0x11b0, 0x701c, 0x904d, 0x0198,
15973 + 0xa84c, 0x9005, 0x1180, 0x7010, 0x8001, 0x7012, 0x1108, 0x701a,
15974 + 0xa800, 0x701e, 0x2900, 0x7822, 0x782c, 0x9094, 0x0780, 0x190c,
15975 + 0x64ce, 0xd09c, 0x0d50, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce,
15976 + 0xd0a4, 0x05b8, 0x00e6, 0x7824, 0x2048, 0x2071, 0x1800, 0x702c,
15977 + 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094,
15978 + 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d70, 0x00ee, 0x0e04, 0x6346,
15979 + 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836,
15980 + 0x6833, 0x0013, 0x00de, 0x7044, 0xc084, 0x7046, 0x2091, 0x4080,
15981 + 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2009, 0x1917,
15982 + 0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7044, 0xc085,
15983 + 0x7046, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1800,
15984 + 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900, 0x81ff,
15985 + 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x00ee, 0x0804, 0x62ee,
15986 + 0x2071, 0x1904, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000, 0x7012,
15987 + 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e, 0x2148,
15988 + 0xa804, 0x900d, 0x1128, 0x1e04, 0x6389, 0x002e, 0x00ee, 0x0005,
15989 + 0x2071, 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210,
15990 + 0x2900, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x0e04,
15991 + 0x6375, 0x2071, 0x1904, 0x701c, 0x2048, 0xa84c, 0x900d, 0x0d28,
15992 + 0x2071, 0x0000, 0x7182, 0xa850, 0x7032, 0xa86c, 0x7086, 0x7036,
15993 + 0xa870, 0x708a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084,
15994 + 0x190c, 0x113e, 0x2071, 0x1904, 0x080c, 0x64ba, 0x002e, 0x00ee,
15995 + 0x0005, 0x2071, 0x1904, 0xa803, 0x0000, 0x2908, 0x7010, 0x8000,
15996 + 0x7012, 0x7018, 0x904d, 0x711a, 0x0110, 0xa902, 0x0008, 0x711e,
15997 + 0x2148, 0xa804, 0x900d, 0x1118, 0x002e, 0x00ee, 0x0005, 0x2071,
15998 + 0x1800, 0x9016, 0x702c, 0x2148, 0xa904, 0xa802, 0x8210, 0x2900,
15999 + 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x002e, 0x00ee,
16000 + 0x0005, 0x0006, 0xa87c, 0x0006, 0xa867, 0x0103, 0x20a9, 0x001c,
16001 + 0xa860, 0x20e8, 0xa85c, 0x9080, 0x001d, 0x20a0, 0x9006, 0x4004,
16002 + 0x000e, 0x9084, 0x00ff, 0xa87e, 0x000e, 0xa87a, 0xa982, 0x0005,
16003 + 0x2071, 0x1904, 0x7004, 0x0002, 0x63f2, 0x63f3, 0x64b9, 0x63f3,
16004 + 0x0d84, 0x64b9, 0x0005, 0x2001, 0x1918, 0x2004, 0x0002, 0x63fd,
16005 + 0x63fd, 0x6452, 0x6453, 0x63fd, 0x6453, 0x0126, 0x2091, 0x8000,
16006 + 0x1e0c, 0x64d9, 0x701c, 0x904d, 0x01e0, 0xa84c, 0x9005, 0x01d8,
16007 + 0x0e04, 0x6421, 0xa94c, 0x2071, 0x0000, 0x7182, 0xa850, 0x7032,
16008 + 0xa86c, 0x7086, 0x7036, 0xa870, 0x708a, 0x2091, 0x4080, 0x2001,
16009 + 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2071, 0x1904, 0x080c,
16010 + 0x64ba, 0x012e, 0x0470, 0x2001, 0x005b, 0x2004, 0x9094, 0x0780,
16011 + 0x190c, 0x64ce, 0xd09c, 0x2071, 0x1904, 0x1510, 0x2071, 0x1904,
16012 + 0x700f, 0x0001, 0xa964, 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130,
16013 + 0x810f, 0x918c, 0x00ff, 0x8101, 0x0108, 0x710e, 0x2900, 0x00d6,
16014 + 0x2069, 0x0050, 0x6822, 0x00de, 0x2071, 0x1904, 0x701c, 0x2048,
16015 + 0x7010, 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, 0x1108, 0x701a,
16016 + 0x012e, 0x0005, 0x0005, 0x00d6, 0x2008, 0x2069, 0x19c7, 0x6840,
16017 + 0x9005, 0x0760, 0x0158, 0x9186, 0x0003, 0x0540, 0x2001, 0x1813,
16018 + 0x2004, 0x2009, 0x1a8a, 0x210c, 0x9102, 0x1500, 0x0126, 0x2091,
16019 + 0x8000, 0x2069, 0x0050, 0x693c, 0x6838, 0x9106, 0x0190, 0x0e04,
16020 + 0x6485, 0x2069, 0x0000, 0x6837, 0x8040, 0x6833, 0x0012, 0x6883,
16021 + 0x8040, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c,
16022 + 0x113e, 0x2069, 0x19c7, 0x6843, 0xffff, 0x012e, 0x00de, 0x0126,
16023 + 0x2091, 0x8000, 0x1e0c, 0x654b, 0x701c, 0x904d, 0x0540, 0x2001,
16024 + 0x005b, 0x2004, 0x9094, 0x0780, 0x15c9, 0xd09c, 0x1500, 0x2071,
16025 + 0x1904, 0x700f, 0x0001, 0xa964, 0x9184, 0x00ff, 0x9086, 0x0003,
16026 + 0x1130, 0x810f, 0x918c, 0x00ff, 0x8101, 0x0108, 0x710e, 0x2900,
16027 + 0x00d6, 0x2069, 0x0050, 0x6822, 0x00de, 0x701c, 0x2048, 0x7010,
16028 + 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, 0x1108, 0x701a, 0x012e,
16029 + 0x0005, 0x0005, 0x0126, 0x2091, 0x8000, 0x701c, 0x904d, 0x0160,
16030 + 0x7010, 0x8001, 0x7012, 0xa800, 0x701e, 0x9005, 0x1108, 0x701a,
16031 + 0x012e, 0x080c, 0x0fe0, 0x0005, 0x012e, 0x0005, 0x2091, 0x8000,
16032 + 0x0e04, 0x64d0, 0x0006, 0x0016, 0x2001, 0x8004, 0x0006, 0x0804,
16033 + 0x0d8d, 0x0096, 0x00f6, 0x2079, 0x0050, 0x7044, 0xd084, 0x01e0,
16034 + 0xc084, 0x7046, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069,
16035 + 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, 0x2001,
16036 + 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x2009, 0x1917, 0x200b,
16037 + 0x0000, 0x00fe, 0x009e, 0x0005, 0x782c, 0x9094, 0x0780, 0x1971,
16038 + 0xd0a4, 0x0db8, 0x2001, 0x1918, 0x2004, 0x2009, 0x1917, 0x2104,
16039 + 0x8000, 0x200a, 0x9082, 0x000f, 0x0e60, 0x00e6, 0x2071, 0x1800,
16040 + 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, 0x2009,
16041 + 0x182f, 0x210c, 0x918a, 0x0040, 0x0218, 0x7022, 0x00ee, 0x0048,
16042 + 0x00ee, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e, 0x70bc, 0x8000,
16043 + 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x1d00,
16044 + 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836,
16045 + 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004,
16046 + 0xd084, 0x190c, 0x113e, 0x2009, 0x1917, 0x200b, 0x0000, 0x00ee,
16047 + 0x00fe, 0x009e, 0x0005, 0x00f6, 0x2079, 0x0050, 0x7044, 0xd084,
16048 + 0x01b8, 0xc084, 0x7046, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6,
16049 + 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080,
16050 + 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x113e, 0x00fe, 0x0005,
16051 + 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce, 0xd0a4, 0x0db8, 0x00e6,
16052 + 0x2071, 0x1800, 0x7824, 0x2048, 0x702c, 0xa802, 0x2900, 0x702e,
16053 + 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x64ce,
16054 + 0xd0a4, 0x1d80, 0x00d6, 0x2069, 0x0050, 0x693c, 0x2069, 0x1918,
16055 + 0x6808, 0x690a, 0x2069, 0x19c7, 0x9102, 0x1118, 0x6840, 0x9005,
16056 + 0x1328, 0x2001, 0x1919, 0x200c, 0x810d, 0x6942, 0x00de, 0x00ee,
16057 + 0x00fe, 0x0005, 0x7090, 0x908a, 0x0029, 0x1a0c, 0x0d84, 0x9082,
16058 + 0x001d, 0x001b, 0x6027, 0x1e00, 0x0005, 0x666d, 0x65f7, 0x6613,
16059 + 0x663b, 0x665c, 0x669c, 0x66ae, 0x6613, 0x6684, 0x65b2, 0x65e0,
16060 + 0x65b1, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, 0x9005, 0x1180,
16061 + 0x6808, 0x9005, 0x1518, 0x7093, 0x0028, 0x2069, 0x195c, 0x2d04,
16062 + 0x7002, 0x080c, 0x69a3, 0x6028, 0x9085, 0x0600, 0x602a, 0x00b0,
16063 + 0x7093, 0x0028, 0x2069, 0x195c, 0x2d04, 0x7002, 0x6028, 0x9085,
16064 + 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0x1a30,
16065 + 0x080c, 0x1827, 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005,
16066 + 0x00d6, 0x2069, 0x0200, 0x6804, 0x9005, 0x1178, 0x6808, 0x9005,
16067 + 0x1160, 0x7093, 0x0028, 0x2069, 0x195c, 0x2d04, 0x7002, 0x080c,
16068 + 0x6a2d, 0x6028, 0x9085, 0x0600, 0x602a, 0x00de, 0x0005, 0x0006,
16069 + 0x2001, 0x0090, 0x080c, 0x28a5, 0x000e, 0x6124, 0xd1e4, 0x1190,
16070 + 0x080c, 0x671b, 0xd1d4, 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150,
16071 + 0x7093, 0x0020, 0x080c, 0x671b, 0x0028, 0x7093, 0x001d, 0x0010,
16072 + 0x7093, 0x001f, 0x0005, 0x2001, 0x0088, 0x080c, 0x28a5, 0x6124,
16073 + 0xd1cc, 0x11d8, 0xd1dc, 0x11b0, 0xd1e4, 0x1188, 0x9184, 0x1e00,
16074 + 0x11c8, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x68a3,
16075 + 0x2001, 0x0080, 0x080c, 0x28a5, 0x7093, 0x0028, 0x0058, 0x7093,
16076 + 0x001e, 0x0040, 0x7093, 0x001d, 0x0028, 0x7093, 0x0020, 0x0010,
16077 + 0x7093, 0x001f, 0x0005, 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e,
16078 + 0x080c, 0x68a3, 0x2001, 0x0080, 0x080c, 0x28a5, 0x6124, 0xd1d4,
16079 + 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0x9184, 0x1e00, 0x1158,
16080 + 0x7093, 0x0028, 0x0040, 0x7093, 0x001e, 0x0028, 0x7093, 0x001d,
16081 + 0x0010, 0x7093, 0x001f, 0x0005, 0x2001, 0x00a0, 0x080c, 0x28a5,
16082 + 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, 0x1851, 0x7093,
16083 + 0x001e, 0x0010, 0x7093, 0x001d, 0x0005, 0x080c, 0x6794, 0x6124,
16084 + 0xd1dc, 0x1188, 0x080c, 0x671b, 0x0016, 0x080c, 0x1851, 0x001e,
16085 + 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x7093, 0x001e, 0x0020, 0x7093,
16086 + 0x001f, 0x080c, 0x671b, 0x0005, 0x0006, 0x2001, 0x00a0, 0x080c,
16087 + 0x28a5, 0x000e, 0x6124, 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc,
16088 + 0x1128, 0xd1e4, 0x0140, 0x7093, 0x001e, 0x0028, 0x7093, 0x001d,
16089 + 0x0010, 0x7093, 0x0021, 0x0005, 0x080c, 0x6794, 0x6124, 0xd1d4,
16090 + 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x7093, 0x001e, 0x0028,
16091 + 0x7093, 0x001d, 0x0010, 0x7093, 0x001f, 0x0005, 0x0006, 0x2001,
16092 + 0x0090, 0x080c, 0x28a5, 0x000e, 0x6124, 0xd1d4, 0x1178, 0xd1cc,
16093 + 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x7093, 0x001e, 0x0040,
16094 + 0x7093, 0x001d, 0x0028, 0x7093, 0x0020, 0x0010, 0x7093, 0x001f,
16095 + 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, 0x2061, 0x0100,
16096 + 0x2069, 0x0140, 0x2071, 0x1800, 0x2091, 0x8000, 0x080c, 0x6877,
16097 + 0x11d8, 0x2001, 0x180c, 0x200c, 0xd1b4, 0x01b0, 0xc1b4, 0x2102,
16098 + 0x6027, 0x0200, 0x080c, 0x27ef, 0x6024, 0xd0cc, 0x0148, 0x2001,
16099 + 0x00a0, 0x080c, 0x28a5, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x0428,
16100 + 0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x6891, 0x0150, 0x080c,
16101 + 0x6888, 0x1138, 0x2001, 0x0001, 0x080c, 0x23a6, 0x080c, 0x6853,
16102 + 0x00a0, 0x080c, 0x6791, 0x0178, 0x2001, 0x0001, 0x080c, 0x23a6,
16103 + 0x7090, 0x9086, 0x001e, 0x0120, 0x7090, 0x9086, 0x0022, 0x1118,
16104 + 0x7093, 0x0025, 0x0010, 0x7093, 0x0021, 0x012e, 0x00ee, 0x00de,
16105 + 0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x672c, 0x080c, 0x78e7,
16106 + 0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, 0x672c, 0x080c,
16107 + 0x78de, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, 0x0016, 0x080c,
16108 + 0x8b50, 0x2071, 0x1800, 0x080c, 0x66c9, 0x001e, 0x00fe, 0x00ee,
16109 + 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x00f6,
16110 + 0x0126, 0x080c, 0x8b50, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071,
16111 + 0x1800, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003,
16112 + 0x080c, 0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3, 0x080c, 0x8d59,
16113 + 0x080c, 0x7893, 0x0036, 0x901e, 0x080c, 0x8dfe, 0x003e, 0x60e3,
16114 + 0x0000, 0x080c, 0xcd0a, 0x080c, 0xcd25, 0x2009, 0x0004, 0x080c,
16115 + 0x27f5, 0x080c, 0x2718, 0x2001, 0x1800, 0x2003, 0x0004, 0x6027,
16116 + 0x0008, 0x080c, 0x0b69, 0x2001, 0x0001, 0x080c, 0x23a6, 0x012e,
16117 + 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005,
16118 + 0x0026, 0x00e6, 0x2011, 0x6739, 0x2071, 0x19c7, 0x701c, 0x9206,
16119 + 0x1118, 0x7018, 0x9005, 0x0110, 0x9085, 0x0001, 0x00ee, 0x002e,
16120 + 0x0005, 0x6020, 0xd09c, 0x0005, 0x6800, 0x9084, 0xfffe, 0x9086,
16121 + 0x00c0, 0x01b8, 0x2001, 0x00c0, 0x080c, 0x28a5, 0x0156, 0x20a9,
16122 + 0x002d, 0x1d04, 0x67a1, 0x2091, 0x6000, 0x1f04, 0x67a1, 0x015e,
16123 + 0x00d6, 0x2069, 0x1800, 0x6894, 0x8001, 0x0220, 0x0118, 0x6896,
16124 + 0x00de, 0x0005, 0x6897, 0x0014, 0x68ec, 0xd0dc, 0x0dc8, 0x6800,
16125 + 0x9086, 0x0001, 0x1da8, 0x080c, 0x78f3, 0x0c90, 0x00c6, 0x00d6,
16126 + 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1800, 0x2001,
16127 + 0x194c, 0x200c, 0x9186, 0x0000, 0x0158, 0x9186, 0x0001, 0x0158,
16128 + 0x9186, 0x0002, 0x0158, 0x9186, 0x0003, 0x0158, 0x0804, 0x6843,
16129 + 0x7093, 0x0022, 0x0040, 0x7093, 0x0021, 0x0028, 0x7093, 0x0023,
16130 + 0x0010, 0x7093, 0x0024, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001,
16131 + 0x0001, 0x080c, 0x2471, 0x0026, 0x080c, 0x94da, 0x002e, 0x7000,
16132 + 0x908e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, 0x0020,
16133 + 0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, 0xd0ac,
16134 + 0x0120, 0x012e, 0x015e, 0x0804, 0x684f, 0x6800, 0x9084, 0x00a1,
16135 + 0xc0bd, 0x6802, 0x080c, 0x27ef, 0x6904, 0xd1d4, 0x1140, 0x2001,
16136 + 0x0100, 0x080c, 0x28a5, 0x1f04, 0x67fe, 0x080c, 0x68d0, 0x012e,
16137 + 0x015e, 0x080c, 0x6888, 0x01a8, 0x6044, 0x9005, 0x0168, 0x6050,
16138 + 0x0006, 0x9085, 0x0020, 0x6052, 0x080c, 0x68d0, 0x9006, 0x8001,
16139 + 0x1df0, 0x000e, 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c,
16140 + 0x68d0, 0x0016, 0x0026, 0x7000, 0x908e, 0x0004, 0x0130, 0x2009,
16141 + 0x00c8, 0x2011, 0x6739, 0x080c, 0x78a5, 0x002e, 0x001e, 0x2001,
16142 + 0x194c, 0x2003, 0x0004, 0x080c, 0x659a, 0x080c, 0x6888, 0x0138,
16143 + 0x6804, 0xd0d4, 0x1120, 0xd0dc, 0x1100, 0x080c, 0x6b45, 0x00ee,
16144 + 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100,
16145 + 0x2069, 0x0140, 0x2071, 0x1800, 0x080c, 0x6b4f, 0x2001, 0x193c,
16146 + 0x2003, 0x0000, 0x9006, 0x7092, 0x60e2, 0x6886, 0x080c, 0x2471,
16147 + 0x9006, 0x080c, 0x28a5, 0x6043, 0x0090, 0x6043, 0x0010, 0x6027,
16148 + 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0006,
16149 + 0x2001, 0x194b, 0x2004, 0x9086, 0xaaaa, 0x000e, 0x0005, 0x0006,
16150 + 0x080c, 0x4dee, 0x9084, 0x0030, 0x9086, 0x0000, 0x000e, 0x0005,
16151 + 0x0006, 0x080c, 0x4dee, 0x9084, 0x0030, 0x9086, 0x0030, 0x000e,
16152 + 0x0005, 0x0006, 0x080c, 0x4dee, 0x9084, 0x0030, 0x9086, 0x0010,
16153 + 0x000e, 0x0005, 0x0006, 0x080c, 0x4dee, 0x9084, 0x0030, 0x9086,
16154 + 0x0020, 0x000e, 0x0005, 0x0036, 0x0016, 0x2001, 0x180c, 0x2004,
16155 + 0x908c, 0x0013, 0x0190, 0x9084, 0x0011, 0x0120, 0x080c, 0x2491,
16156 + 0x900e, 0x0028, 0x080c, 0x5f25, 0x1dc8, 0x2009, 0x0002, 0x2019,
16157 + 0x0028, 0x080c, 0x2ce5, 0x9006, 0x0019, 0x001e, 0x003e, 0x0005,
16158 + 0x00e6, 0x2071, 0x180c, 0x2e04, 0x0130, 0x080c, 0xb752, 0x1128,
16159 + 0x9085, 0x0010, 0x0010, 0x9084, 0xffef, 0x2072, 0x00ee, 0x0005,
16160 + 0x6050, 0x0006, 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006,
16161 + 0x6028, 0x0006, 0x0016, 0x6138, 0x6050, 0x9084, 0xfbff, 0x9085,
16162 + 0x2000, 0x6052, 0x613a, 0x20a9, 0x0012, 0x1d04, 0x68e5, 0x2091,
16163 + 0x6000, 0x1f04, 0x68e5, 0x602f, 0x0100, 0x602f, 0x0000, 0x6050,
16164 + 0x9085, 0x0400, 0x9084, 0xdfff, 0x6052, 0x613a, 0x001e, 0x602f,
16165 + 0x0040, 0x602f, 0x0000, 0x000e, 0x602a, 0x000e, 0x6006, 0x000e,
16166 + 0x600e, 0x000e, 0x60ee, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001,
16167 + 0x0001, 0x080c, 0x2471, 0x2001, 0x00a0, 0x080c, 0x28a5, 0x000e,
16168 + 0x6052, 0x6058, 0x0006, 0xc0e5, 0x605a, 0x00f6, 0x2079, 0x0100,
16169 + 0x080c, 0x2764, 0x00fe, 0x000e, 0x605a, 0x0005, 0x0156, 0x0016,
16170 + 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069,
16171 + 0x0140, 0x2071, 0x1800, 0x6020, 0x9084, 0x0080, 0x0138, 0x2001,
16172 + 0x180c, 0x200c, 0xc1c5, 0x2102, 0x0804, 0x6996, 0x2001, 0x180c,
16173 + 0x200c, 0xc1c4, 0x2102, 0x6028, 0x9084, 0xe1ff, 0x602a, 0x6027,
16174 + 0x0200, 0x2001, 0x0090, 0x080c, 0x28a5, 0x20a9, 0x0366, 0x6024,
16175 + 0xd0cc, 0x11f0, 0x1d04, 0x6947, 0x2091, 0x6000, 0x1f04, 0x6947,
16176 + 0x2011, 0x0003, 0x080c, 0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3,
16177 + 0x080c, 0x8d59, 0x901e, 0x080c, 0x8dfe, 0x2001, 0x00a0, 0x080c,
16178 + 0x28a5, 0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x0470,
16179 + 0x86ff, 0x1110, 0x080c, 0x1851, 0x60e3, 0x0000, 0x2001, 0x193c,
16180 + 0x2004, 0x080c, 0x2471, 0x60e2, 0x2001, 0x0080, 0x080c, 0x28a5,
16181 + 0x20a9, 0x0366, 0x6027, 0x1e00, 0x2009, 0x1e00, 0x080c, 0x27ef,
16182 + 0x6024, 0x910c, 0x0138, 0x1d04, 0x697a, 0x2091, 0x6000, 0x1f04,
16183 + 0x697a, 0x0830, 0x6028, 0x9085, 0x1e00, 0x602a, 0x70ac, 0x9005,
16184 + 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x9006, 0x080c, 0xb759,
16185 + 0x0110, 0x080c, 0x0cfc, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e,
16186 + 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6,
16187 + 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800, 0x2069, 0x0140,
16188 + 0x6020, 0x9084, 0x00c0, 0x0120, 0x6884, 0x9005, 0x1904, 0x69f7,
16189 + 0x2001, 0x0088, 0x080c, 0x28a5, 0x9006, 0x60e2, 0x6886, 0x080c,
16190 + 0x2471, 0x2069, 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, 0x9005,
16191 + 0x01c0, 0x6028, 0x9084, 0xfbff, 0x602a, 0x6027, 0x0400, 0x2069,
16192 + 0x195c, 0x7000, 0x206a, 0x7093, 0x0026, 0x7003, 0x0001, 0x20a9,
16193 + 0x0002, 0x1d04, 0x69d9, 0x2091, 0x6000, 0x1f04, 0x69d9, 0x0804,
16194 + 0x6a25, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, 0x1e00, 0x2009,
16195 + 0x1e00, 0x080c, 0x27ef, 0x6024, 0x910c, 0x0508, 0x9084, 0x1a00,
16196 + 0x11f0, 0x1d04, 0x69e5, 0x2091, 0x6000, 0x1f04, 0x69e5, 0x2011,
16197 + 0x0003, 0x080c, 0x8e99, 0x2011, 0x0002, 0x080c, 0x8ea3, 0x080c,
16198 + 0x8d59, 0x901e, 0x080c, 0x8dfe, 0x2001, 0x00a0, 0x080c, 0x28a5,
16199 + 0x080c, 0x6b40, 0x080c, 0x56d9, 0x9085, 0x0001, 0x00b0, 0x2001,
16200 + 0x0080, 0x080c, 0x28a5, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70ac,
16201 + 0x9005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x193c,
16202 + 0x2004, 0x080c, 0x2471, 0x60e2, 0x9006, 0x00ee, 0x00de, 0x00ce,
16203 + 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026,
16204 + 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1800,
16205 + 0x6020, 0x9084, 0x00c0, 0x01c8, 0x2011, 0x0003, 0x080c, 0x8e99,
16206 + 0x2011, 0x0002, 0x080c, 0x8ea3, 0x080c, 0x8d59, 0x901e, 0x080c,
16207 + 0x8dfe, 0x2069, 0x0140, 0x2001, 0x00a0, 0x080c, 0x28a5, 0x080c,
16208 + 0x6b40, 0x080c, 0x56d9, 0x0804, 0x6ac0, 0x2001, 0x180c, 0x200c,
16209 + 0xd1b4, 0x1160, 0xc1b5, 0x2102, 0x080c, 0x6721, 0x2069, 0x0140,
16210 + 0x2001, 0x0080, 0x080c, 0x28a5, 0x60e3, 0x0000, 0x2069, 0x0200,
16211 + 0x6804, 0x9005, 0x1118, 0x6808, 0x9005, 0x0180, 0x6028, 0x9084,
16212 + 0xfdff, 0x602a, 0x6027, 0x0200, 0x2069, 0x195c, 0x7000, 0x206a,
16213 + 0x7093, 0x0027, 0x7003, 0x0001, 0x0804, 0x6ac0, 0x6027, 0x1e00,
16214 + 0x2009, 0x1e00, 0x080c, 0x27ef, 0x6024, 0x910c, 0x01c8, 0x9084,
16215 + 0x1c00, 0x11b0, 0x1d04, 0x6a7e, 0x0006, 0x0016, 0x00c6, 0x00d6,
16216 + 0x00e6, 0x080c, 0x7778, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e,
16217 + 0x00e6, 0x2071, 0x19c7, 0x7018, 0x00ee, 0x9005, 0x19f8, 0x0500,
16218 + 0x0026, 0x2011, 0x6739, 0x080c, 0x781a, 0x2011, 0x672c, 0x080c,
16219 + 0x78e7, 0x002e, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70ac, 0x9005,
16220 + 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x193c, 0x2004,
16221 + 0x080c, 0x2471, 0x60e2, 0x2001, 0x180c, 0x200c, 0xc1b4, 0x2102,
16222 + 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005,
16223 + 0x0156, 0x0016, 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, 0x2061,
16224 + 0x0100, 0x2071, 0x1800, 0x080c, 0xb752, 0x1904, 0x6b2e, 0x7130,
16225 + 0xd184, 0x1170, 0x080c, 0x2e69, 0x0138, 0xc18d, 0x7132, 0x2011,
16226 + 0x1853, 0x2214, 0xd2ac, 0x1120, 0x7030, 0xd08c, 0x0904, 0x6b2e,
16227 + 0x2011, 0x1853, 0x220c, 0xd1a4, 0x0538, 0x0016, 0x2019, 0x000e,
16228 + 0x080c, 0xc941, 0x0156, 0x00b6, 0x20a9, 0x007f, 0x900e, 0x9186,
16229 + 0x007e, 0x01a0, 0x9186, 0x0080, 0x0188, 0x080c, 0x5c0d, 0x1170,
16230 + 0x2120, 0x9006, 0x0016, 0x2009, 0x000e, 0x080c, 0xc9c5, 0x2009,
16231 + 0x0001, 0x2011, 0x0100, 0x080c, 0x7a0a, 0x001e, 0x8108, 0x1f04,
16232 + 0x6af7, 0x00be, 0x015e, 0x001e, 0xd1ac, 0x1148, 0x0016, 0x2009,
16233 + 0x0002, 0x2019, 0x0004, 0x080c, 0x2ce5, 0x001e, 0x0078, 0x0156,
16234 + 0x00b6, 0x20a9, 0x007f, 0x900e, 0x080c, 0x5c0d, 0x1110, 0x080c,
16235 + 0x56f3, 0x8108, 0x1f04, 0x6b24, 0x00be, 0x015e, 0x080c, 0x1851,
16236 + 0x080c, 0x94da, 0x60e3, 0x0000, 0x080c, 0x56d9, 0x080c, 0x67be,
16237 + 0x00ee, 0x00ce, 0x004e, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005,
16238 + 0x2001, 0x194c, 0x2003, 0x0001, 0x0005, 0x2001, 0x194c, 0x2003,
16239 + 0x0000, 0x0005, 0x2001, 0x194b, 0x2003, 0xaaaa, 0x0005, 0x2001,
16240 + 0x194b, 0x2003, 0x0000, 0x0005, 0x2071, 0x18ee, 0x7003, 0x0000,
16241 + 0x7007, 0x0000, 0x080c, 0x0fc7, 0x090c, 0x0d84, 0xa8ab, 0xdcb0,
16242 + 0x2900, 0x704e, 0x080c, 0x0fc7, 0x090c, 0x0d84, 0xa8ab, 0xdcb0,
16243 + 0x2900, 0x7052, 0xa867, 0x0000, 0xa86b, 0x0001, 0xa89f, 0x0000,
16244 + 0x0005, 0x00e6, 0x2071, 0x0040, 0x6848, 0x9005, 0x1118, 0x9085,
16245 + 0x0001, 0x04b0, 0x6840, 0x9005, 0x0150, 0x04a1, 0x6a50, 0x9200,
16246 + 0x7002, 0x6854, 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6850,
16247 + 0x7002, 0x6854, 0x7006, 0x6858, 0x700a, 0x685c, 0x700e, 0x6840,
16248 + 0x9005, 0x1110, 0x7012, 0x7016, 0x6848, 0x701a, 0x701c, 0x9085,
16249 + 0x0040, 0x701e, 0x2001, 0x0019, 0x7036, 0x702b, 0x0001, 0x2001,
16250 + 0x0004, 0x200c, 0x918c, 0xfff7, 0x918d, 0x8000, 0x2102, 0x00d6,
16251 + 0x2069, 0x18ee, 0x6807, 0x0001, 0x00de, 0x080c, 0x70f9, 0x9006,
16252 + 0x00ee, 0x0005, 0x900e, 0x0156, 0x20a9, 0x0006, 0x8003, 0x2011,
16253 + 0x0100, 0x2214, 0x9296, 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5,
16254 + 0x3e08, 0x1f04, 0x6bb6, 0x015e, 0x0005, 0x2079, 0x0040, 0x2071,
16255 + 0x18ee, 0x7004, 0x0002, 0x6bd5, 0x6bd6, 0x6c0b, 0x6c66, 0x6d61,
16256 + 0x6bd3, 0x6bd3, 0x6d8b, 0x080c, 0x0d84, 0x0005, 0x2079, 0x0040,
16257 + 0x782c, 0x908c, 0x0780, 0x190c, 0x7185, 0xd0a4, 0x01f0, 0x7824,
16258 + 0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084, 0x00ff, 0x908a,
16259 + 0x0040, 0x12c0, 0x04db, 0x2001, 0x1800, 0x200c, 0x9186, 0x0003,
16260 + 0x1160, 0x7104, 0x9186, 0x0004, 0x0140, 0x9186, 0x0007, 0x0128,
16261 + 0x9186, 0x0003, 0x19e8, 0x080c, 0x6c66, 0x782c, 0xd09c, 0x090c,
16262 + 0x70f9, 0x0005, 0x9082, 0x005a, 0x1218, 0x2100, 0x002b, 0x0c18,
16263 + 0x080c, 0x6c9c, 0x0c90, 0x0005, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16264 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6cbe, 0x6c9c, 0x6c9c, 0x6c9c,
16265 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16266 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16267 + 0x6ca8, 0x6c9c, 0x6e60, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16268 + 0x6ca8, 0x6ea1, 0x6ee2, 0x6f29, 0x6f3d, 0x6c9c, 0x6c9c, 0x6cbe,
16269 + 0x6ca8, 0x6c9c, 0x6c9c, 0x6d35, 0x6fe8, 0x7003, 0x6c9c, 0x6cbe,
16270 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6d2b, 0x7003, 0x6c9c, 0x6c9c,
16271 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6cd2,
16272 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c,
16273 + 0x6c9c, 0x7129, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6ce6,
16274 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x6c9c, 0x2079, 0x0040,
16275 + 0x7004, 0x9086, 0x0003, 0x1198, 0x782c, 0x080c, 0x7122, 0xd0a4,
16276 + 0x0170, 0x7824, 0x2048, 0x9006, 0xa802, 0xa806, 0xa864, 0x9084,
16277 + 0x00ff, 0x908a, 0x001a, 0x1210, 0x002b, 0x0c50, 0x00e9, 0x080c,
16278 + 0x70f9, 0x0005, 0x6c9c, 0x6ca8, 0x6e4c, 0x6c9c, 0x6ca8, 0x6c9c,
16279 + 0x6ca8, 0x6ca8, 0x6c9c, 0x6ca8, 0x6e4c, 0x6ca8, 0x6ca8, 0x6ca8,
16280 + 0x6ca8, 0x6ca8, 0x6c9c, 0x6ca8, 0x6e4c, 0x6c9c, 0x6c9c, 0x6ca8,
16281 + 0x6c9c, 0x6c9c, 0x6c9c, 0x6ca8, 0x00e6, 0x2071, 0x18ee, 0x2009,
16282 + 0x0400, 0x0071, 0x00ee, 0x0005, 0x2009, 0x1000, 0x0049, 0x0005,
16283 + 0x2009, 0x2000, 0x0029, 0x0005, 0x2009, 0x0800, 0x0009, 0x0005,
16284 + 0x7007, 0x0001, 0xa868, 0x9084, 0x00ff, 0x9105, 0xa86a, 0x0126,
16285 + 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x0005, 0xa864, 0x8007,
16286 + 0x9084, 0x00ff, 0x0d08, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804,
16287 + 0x6e0a, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b,
16288 + 0x6e0a, 0x0005, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0968, 0x8001,
16289 + 0x1120, 0x7007, 0x0001, 0x0804, 0x6e25, 0x7007, 0x0003, 0x7012,
16290 + 0x2900, 0x7016, 0x701a, 0x704b, 0x6e25, 0x0005, 0xa864, 0x8007,
16291 + 0x9084, 0x00ff, 0x9086, 0x0001, 0x1904, 0x6ca4, 0x7007, 0x0001,
16292 + 0x2009, 0x1833, 0x210c, 0x81ff, 0x11a8, 0xa868, 0x9084, 0x00ff,
16293 + 0xa86a, 0xa883, 0x0000, 0x080c, 0x58e6, 0x1108, 0x0005, 0x0126,
16294 + 0x2091, 0x8000, 0xa867, 0x0139, 0xa87a, 0xa982, 0x080c, 0x61a9,
16295 + 0x012e, 0x0ca0, 0xa994, 0x9186, 0x0071, 0x0d38, 0x9186, 0x0064,
16296 + 0x0d20, 0x9186, 0x007c, 0x0d08, 0x9186, 0x0028, 0x09f0, 0x9186,
16297 + 0x0038, 0x09d8, 0x9186, 0x0078, 0x09c0, 0x9186, 0x005f, 0x09a8,
16298 + 0x9186, 0x0056, 0x0990, 0xa897, 0x4005, 0xa89b, 0x0001, 0x2001,
16299 + 0x0030, 0x900e, 0x08a0, 0xa87c, 0x9084, 0x00c0, 0x9086, 0x00c0,
16300 + 0x1120, 0x7007, 0x0001, 0x0804, 0x701a, 0x2900, 0x7016, 0x701a,
16301 + 0x20a9, 0x0004, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0030, 0x2098,
16302 + 0x7050, 0x2040, 0xa060, 0x20e8, 0xa05c, 0x9080, 0x0023, 0x20a0,
16303 + 0x4003, 0xa888, 0x7012, 0x9082, 0x0401, 0x1a04, 0x6cac, 0xaab4,
16304 + 0x928a, 0x0002, 0x1a04, 0x6cac, 0x82ff, 0x1138, 0xa8b8, 0xa9bc,
16305 + 0x9105, 0x0118, 0x2001, 0x6dc8, 0x0018, 0x9280, 0x6dbe, 0x2005,
16306 + 0x7056, 0x7010, 0x9015, 0x0904, 0x6da9, 0x080c, 0x0fc7, 0x1118,
16307 + 0x7007, 0x0004, 0x0005, 0x2900, 0x7022, 0x7054, 0x2060, 0xe000,
16308 + 0xa866, 0xe004, 0x7050, 0x2040, 0xa95c, 0x9100, 0xa076, 0xa860,
16309 + 0xa072, 0xe008, 0x920a, 0x1210, 0x900e, 0x2200, 0x7112, 0xe20c,
16310 + 0x8003, 0x800b, 0x9296, 0x0004, 0x0108, 0x9108, 0xa17a, 0x810b,
16311 + 0xa17e, 0x080c, 0x108c, 0xa06c, 0x908e, 0x0100, 0x0170, 0x9086,
16312 + 0x0200, 0x0118, 0x7007, 0x0007, 0x0005, 0x7020, 0x2048, 0x080c,
16313 + 0x0fe0, 0x7014, 0x2048, 0x0804, 0x6cac, 0x7020, 0x2048, 0x7018,
16314 + 0xa802, 0xa807, 0x0000, 0x2908, 0x2048, 0xa906, 0x711a, 0x0804,
16315 + 0x6d61, 0x7014, 0x2048, 0x7007, 0x0001, 0xa8b4, 0x9005, 0x1128,
16316 + 0xa8b8, 0xa9bc, 0x9105, 0x0108, 0x00b9, 0xa864, 0x9084, 0x00ff,
16317 + 0x9086, 0x001e, 0x0904, 0x701a, 0x0804, 0x6e0a, 0x6dc0, 0x6dc4,
16318 + 0x0002, 0x001d, 0x0007, 0x0004, 0x000a, 0x001b, 0x0005, 0x0006,
16319 + 0x000a, 0x001d, 0x0005, 0x0004, 0x0076, 0x0066, 0xafb8, 0xaebc,
16320 + 0xa804, 0x2050, 0xb0c0, 0xb0e2, 0xb0bc, 0xb0de, 0xb0b8, 0xb0d2,
16321 + 0xb0b4, 0xb0ce, 0xb6da, 0xb7d6, 0xb0b0, 0xb0ca, 0xb0ac, 0xb0c6,
16322 + 0xb0a8, 0xb0ba, 0xb0a4, 0xb0b6, 0xb6c2, 0xb7be, 0xb0a0, 0xb0b2,
16323 + 0xb09c, 0xb0ae, 0xb098, 0xb0a2, 0xb094, 0xb09e, 0xb6aa, 0xb7a6,
16324 + 0xb090, 0xb09a, 0xb08c, 0xb096, 0xb088, 0xb08a, 0xb084, 0xb086,
16325 + 0xb692, 0xb78e, 0xb080, 0xb082, 0xb07c, 0xb07e, 0xb078, 0xb072,
16326 + 0xb074, 0xb06e, 0xb67a, 0xb776, 0xb004, 0x9055, 0x1958, 0x006e,
16327 + 0x007e, 0x0005, 0x2009, 0x1833, 0x210c, 0x81ff, 0x1178, 0x080c,
16328 + 0x5755, 0x1108, 0x0005, 0x080c, 0x63d1, 0x0126, 0x2091, 0x8000,
16329 + 0x080c, 0xb374, 0x080c, 0x61a9, 0x012e, 0x0ca0, 0x080c, 0xb752,
16330 + 0x1d70, 0x2001, 0x0028, 0x900e, 0x0c70, 0x2009, 0x1833, 0x210c,
16331 + 0x81ff, 0x11d8, 0xa888, 0x9005, 0x01e0, 0xa883, 0x0000, 0xa87c,
16332 + 0xd0f4, 0x0120, 0x080c, 0x5849, 0x1138, 0x0005, 0x9006, 0xa87a,
16333 + 0x080c, 0x57e4, 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, 0xa87a,
16334 + 0xa982, 0x080c, 0x61a9, 0x012e, 0x0cb0, 0x2001, 0x0028, 0x900e,
16335 + 0x0c98, 0x2001, 0x0000, 0x0c80, 0x7018, 0xa802, 0x2908, 0x2048,
16336 + 0xa906, 0x711a, 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0003,
16337 + 0x0030, 0x7014, 0x2048, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005,
16338 + 0x00b6, 0x7007, 0x0001, 0xa974, 0xa878, 0x9084, 0x00ff, 0x9096,
16339 + 0x0004, 0x0540, 0x20a9, 0x0001, 0x9096, 0x0001, 0x0190, 0x900e,
16340 + 0x20a9, 0x0800, 0x9096, 0x0002, 0x0160, 0x9005, 0x11d8, 0xa974,
16341 + 0x080c, 0x5c0d, 0x11b8, 0x0066, 0xae80, 0x080c, 0x5d1d, 0x006e,
16342 + 0x0088, 0x0046, 0x2011, 0x180c, 0x2224, 0xc484, 0x2412, 0x004e,
16343 + 0x00c6, 0x080c, 0x5c0d, 0x1110, 0x080c, 0x5e1d, 0x8108, 0x1f04,
16344 + 0x6e89, 0x00ce, 0xa87c, 0xd084, 0x1120, 0x080c, 0x0fe0, 0x00be,
16345 + 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x00be,
16346 + 0x0005, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x5f29,
16347 + 0x0580, 0x2061, 0x1a3d, 0x6100, 0xd184, 0x0178, 0xa888, 0x9084,
16348 + 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0x9005, 0x1538,
16349 + 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, 0xa890,
16350 + 0x9005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0xa888, 0x9084,
16351 + 0x00ff, 0x0178, 0x6006, 0xa888, 0x8007, 0x9084, 0x00ff, 0x0148,
16352 + 0x600a, 0xa888, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, 0x0804,
16353 + 0x70e3, 0x012e, 0x0804, 0x70dd, 0x012e, 0x0804, 0x70d7, 0x012e,
16354 + 0x0804, 0x70da, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c,
16355 + 0x5f29, 0x05e0, 0x2061, 0x1a3d, 0x6000, 0xd084, 0x05b8, 0x6204,
16356 + 0x6308, 0xd08c, 0x1530, 0xac78, 0x9484, 0x0003, 0x0170, 0xa988,
16357 + 0x918c, 0x00ff, 0x8001, 0x1120, 0x2100, 0x9210, 0x0620, 0x0028,
16358 + 0x8001, 0x1508, 0x2100, 0x9212, 0x02f0, 0x9484, 0x000c, 0x0188,
16359 + 0xa988, 0x810f, 0x918c, 0x00ff, 0x9082, 0x0004, 0x1120, 0x2100,
16360 + 0x9318, 0x0288, 0x0030, 0x9082, 0x0004, 0x1168, 0x2100, 0x931a,
16361 + 0x0250, 0xa890, 0x9005, 0x0110, 0x8000, 0x6016, 0x6206, 0x630a,
16362 + 0x012e, 0x0804, 0x70e3, 0x012e, 0x0804, 0x70e0, 0x012e, 0x0804,
16363 + 0x70dd, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0x1a3d,
16364 + 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, 0x0220, 0x630a, 0x012e,
16365 + 0x0804, 0x70f1, 0x012e, 0x0804, 0x70e0, 0x00b6, 0x0126, 0x00c6,
16366 + 0x2091, 0x8000, 0x7007, 0x0001, 0xa87c, 0xd0ac, 0x0148, 0x00c6,
16367 + 0x2061, 0x1a3d, 0x6000, 0x9084, 0xfcff, 0x6002, 0x00ce, 0x0440,
16368 + 0xa888, 0x9005, 0x05d8, 0xa88c, 0x9065, 0x0598, 0x2001, 0x1833,
16369 + 0x2004, 0x9005, 0x0118, 0x080c, 0x9584, 0x0068, 0x6017, 0xf400,
16370 + 0x605b, 0x0000, 0xa97c, 0xd1a4, 0x0110, 0xa980, 0x615a, 0x2009,
16371 + 0x0041, 0x080c, 0x95ce, 0xa988, 0x918c, 0xff00, 0x9186, 0x2000,
16372 + 0x1138, 0x0026, 0x900e, 0x2011, 0xfdff, 0x080c, 0x7a0a, 0x002e,
16373 + 0xa87c, 0xd0c4, 0x0148, 0x2061, 0x1a3d, 0x6000, 0xd08c, 0x1120,
16374 + 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, 0x012e, 0x00be, 0x0804,
16375 + 0x70e3, 0x00ce, 0x012e, 0x00be, 0x0804, 0x70dd, 0xa984, 0x9186,
16376 + 0x002e, 0x0d30, 0x9186, 0x002d, 0x0d18, 0x9186, 0x0045, 0x0510,
16377 + 0x9186, 0x002a, 0x1130, 0x2001, 0x180c, 0x200c, 0xc194, 0x2102,
16378 + 0x08b8, 0x9186, 0x0020, 0x0158, 0x9186, 0x0029, 0x1d10, 0xa974,
16379 + 0x080c, 0x5c0d, 0x1968, 0xb800, 0xc0e4, 0xb802, 0x0848, 0xa88c,
16380 + 0x9065, 0x09b8, 0x6007, 0x0024, 0x2001, 0x1953, 0x2004, 0x601a,
16381 + 0x0804, 0x6f78, 0xa88c, 0x9065, 0x0960, 0x00e6, 0xa890, 0x9075,
16382 + 0x2001, 0x1833, 0x2004, 0x9005, 0x0150, 0x080c, 0x9584, 0x8eff,
16383 + 0x0118, 0x2e60, 0x080c, 0x9584, 0x00ee, 0x0804, 0x6f78, 0x6024,
16384 + 0xc0dc, 0xc0d5, 0x6026, 0x2e60, 0x6007, 0x003a, 0xa8a0, 0x9005,
16385 + 0x0130, 0x6007, 0x003b, 0xa8a4, 0x602e, 0xa8a8, 0x6016, 0x6003,
16386 + 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ee, 0x0804, 0x6f78,
16387 + 0x2061, 0x1a3d, 0x6000, 0xd084, 0x0190, 0xd08c, 0x1904, 0x70f1,
16388 + 0x0126, 0x2091, 0x8000, 0x6204, 0x8210, 0x0220, 0x6206, 0x012e,
16389 + 0x0804, 0x70f1, 0x012e, 0xa883, 0x0016, 0x0804, 0x70ea, 0xa883,
16390 + 0x0007, 0x0804, 0x70ea, 0xa864, 0x8007, 0x9084, 0x00ff, 0x0130,
16391 + 0x8001, 0x1138, 0x7007, 0x0001, 0x0069, 0x0005, 0x080c, 0x6ca4,
16392 + 0x0040, 0x7007, 0x0003, 0x7012, 0x2900, 0x7016, 0x701a, 0x704b,
16393 + 0x701a, 0x0005, 0x00b6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x903e,
16394 + 0x2061, 0x1800, 0x61cc, 0x81ff, 0x1904, 0x709c, 0x6130, 0xd194,
16395 + 0x1904, 0x70c6, 0xa878, 0x2070, 0x9e82, 0x1cd0, 0x0a04, 0x7090,
16396 + 0x6060, 0x9e02, 0x1a04, 0x7090, 0x7120, 0x9186, 0x0006, 0x1904,
16397 + 0x7082, 0x7010, 0x905d, 0x0904, 0x709c, 0xb800, 0xd0e4, 0x1904,
16398 + 0x70c0, 0x2061, 0x1a3d, 0x6100, 0x9184, 0x0301, 0x9086, 0x0001,
16399 + 0x15a0, 0x7024, 0xd0dc, 0x1904, 0x70c9, 0xa883, 0x0000, 0xa803,
16400 + 0x0000, 0x2908, 0x7014, 0x9005, 0x1198, 0x7116, 0xa87c, 0xd0f4,
16401 + 0x1904, 0x70cc, 0x080c, 0x4dea, 0xd09c, 0x1118, 0xa87c, 0xc0cc,
16402 + 0xa87e, 0x2e60, 0x080c, 0x792a, 0x012e, 0x00ee, 0x00be, 0x0005,
16403 + 0x2048, 0xa800, 0x9005, 0x1de0, 0xa902, 0x2148, 0xa87c, 0xd0f4,
16404 + 0x1904, 0x70cc, 0x012e, 0x00ee, 0x00be, 0x0005, 0x012e, 0x00ee,
16405 + 0xa883, 0x0006, 0x00be, 0x0804, 0x70ea, 0xd184, 0x0db8, 0xd1c4,
16406 + 0x1190, 0x00a0, 0xa974, 0x080c, 0x5c0d, 0x15d0, 0xb800, 0xd0e4,
16407 + 0x15b8, 0x7120, 0x9186, 0x0007, 0x1118, 0xa883, 0x0002, 0x0490,
16408 + 0xa883, 0x0008, 0x0478, 0xa883, 0x000e, 0x0460, 0xa883, 0x0017,
16409 + 0x0448, 0xa883, 0x0035, 0x0430, 0x080c, 0x4dee, 0xd0fc, 0x01e8,
16410 + 0xa878, 0x2070, 0x9e82, 0x1cd0, 0x02c0, 0x6060, 0x9e02, 0x12a8,
16411 + 0x7120, 0x9186, 0x0006, 0x1188, 0x7010, 0x905d, 0x0170, 0xb800,
16412 + 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0x9086, 0x0007, 0x1904,
16413 + 0x7026, 0x7003, 0x0002, 0x0804, 0x7026, 0xa883, 0x0028, 0x0010,
16414 + 0xa883, 0x0029, 0x012e, 0x00ee, 0x00be, 0x0420, 0xa883, 0x002a,
16415 + 0x0cc8, 0xa883, 0x0045, 0x0cb0, 0x2e60, 0x2019, 0x0002, 0x601b,
16416 + 0x0014, 0x080c, 0xc58e, 0x012e, 0x00ee, 0x00be, 0x0005, 0x2009,
16417 + 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028,
16418 + 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0xa884, 0x9084, 0xff00,
16419 + 0x9105, 0xa886, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e,
16420 + 0x0005, 0x080c, 0x0fe0, 0x0005, 0x00d6, 0x080c, 0x7921, 0x00de,
16421 + 0x0005, 0x00d6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, 0x0040,
16422 + 0x702c, 0xd084, 0x01d8, 0x908c, 0x0780, 0x190c, 0x7185, 0xd09c,
16423 + 0x11a8, 0x2071, 0x1800, 0x70bc, 0x90ea, 0x0040, 0x0278, 0x8001,
16424 + 0x70be, 0x702c, 0x2048, 0xa800, 0x702e, 0x9006, 0xa802, 0xa806,
16425 + 0x2071, 0x0040, 0x2900, 0x7022, 0x702c, 0x0c28, 0x012e, 0x00ee,
16426 + 0x00de, 0x0005, 0x0006, 0x9084, 0x0780, 0x190c, 0x7185, 0x000e,
16427 + 0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x00b6, 0x7007,
16428 + 0x0001, 0xaa74, 0x9282, 0x0004, 0x1a04, 0x7176, 0xa97c, 0x9188,
16429 + 0x1000, 0x2104, 0x905d, 0xb804, 0xd284, 0x0140, 0x05e8, 0x8007,
16430 + 0x9084, 0x00ff, 0x9084, 0x0006, 0x1108, 0x04b0, 0x2b10, 0x080c,
16431 + 0x94fe, 0x1118, 0x080c, 0x95a1, 0x05a8, 0x6212, 0xa874, 0x0002,
16432 + 0x7154, 0x7159, 0x715c, 0x7162, 0x2019, 0x0002, 0x080c, 0xc941,
16433 + 0x0060, 0x080c, 0xc8dd, 0x0048, 0x2019, 0x0002, 0xa980, 0x080c,
16434 + 0xc8f8, 0x0018, 0xa980, 0x080c, 0xc8dd, 0x080c, 0x9554, 0xa887,
16435 + 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x00be,
16436 + 0x001e, 0x002e, 0x003e, 0x00ce, 0x00de, 0x0005, 0xa887, 0x0006,
16437 + 0x0c80, 0xa887, 0x0002, 0x0c68, 0xa887, 0x0005, 0x0c50, 0xa887,
16438 + 0x0004, 0x0c38, 0xa887, 0x0007, 0x0c20, 0x2091, 0x8000, 0x0e04,
16439 + 0x7187, 0x0006, 0x0016, 0x2001, 0x8003, 0x0006, 0x0804, 0x0d8d,
16440 + 0x0005, 0x00f6, 0x2079, 0x0300, 0x2001, 0x0200, 0x200c, 0xc1e5,
16441 + 0xc1dc, 0x2102, 0x2009, 0x0218, 0x210c, 0xd1ec, 0x1120, 0x080c,
16442 + 0x1426, 0x00fe, 0x0005, 0x2001, 0x020d, 0x2003, 0x0020, 0x781f,
16443 + 0x0300, 0x00fe, 0x0005, 0x781c, 0xd08c, 0x05e8, 0x7d44, 0x7c40,
16444 + 0x9584, 0x00f6, 0x1508, 0x9484, 0x7000, 0x0138, 0x908a, 0x2000,
16445 + 0x1258, 0x9584, 0x0700, 0x8007, 0x04a8, 0x7000, 0x9084, 0xff00,
16446 + 0x9086, 0x8100, 0x0db0, 0x00b0, 0x9484, 0x0fff, 0x1130, 0x7000,
16447 + 0x9084, 0xff00, 0x9086, 0x8100, 0x11c0, 0x080c, 0xcce2, 0x080c,
16448 + 0x7692, 0x7817, 0x0140, 0x00a8, 0x9584, 0x0076, 0x1118, 0x080c,
16449 + 0x76f0, 0x19c8, 0xd5a4, 0x0148, 0x0046, 0x0056, 0x080c, 0x724d,
16450 + 0x080c, 0x1f79, 0x005e, 0x004e, 0x0020, 0x080c, 0xcce2, 0x7817,
16451 + 0x0140, 0x080c, 0x722e, 0x2001, 0x19bd, 0x2004, 0x9005, 0x090c,
16452 + 0x8125, 0x0005, 0x0002, 0x7204, 0x74c3, 0x71fb, 0x71fb, 0x71fb,
16453 + 0x71fb, 0x71fb, 0x71fb, 0x7817, 0x0140, 0x2001, 0x19bd, 0x2004,
16454 + 0x9005, 0x090c, 0x8125, 0x0005, 0x7000, 0x908c, 0xff00, 0x9194,
16455 + 0xf000, 0x810f, 0x9484, 0x0fff, 0x688a, 0x9286, 0x2000, 0x1150,
16456 + 0x6800, 0x9086, 0x0001, 0x1118, 0x080c, 0x4e04, 0x0070, 0x080c,
16457 + 0x726d, 0x0058, 0x9286, 0x3000, 0x1118, 0x080c, 0x73fe, 0x0028,
16458 + 0x9286, 0x8000, 0x1110, 0x080c, 0x75c8, 0x7817, 0x0140, 0x2001,
16459 + 0x19bd, 0x2004, 0x9005, 0x090c, 0x8125, 0x0005, 0x2001, 0x180f,
16460 + 0x2004, 0xd08c, 0x0178, 0x2001, 0x1800, 0x2004, 0x9086, 0x0003,
16461 + 0x1148, 0x0026, 0x0036, 0x2011, 0x8048, 0x2518, 0x080c, 0x447f,
16462 + 0x003e, 0x002e, 0x0005, 0x0036, 0x0046, 0x0056, 0x00f6, 0x2079,
16463 + 0x0200, 0x2019, 0xfffe, 0x7c30, 0x0050, 0x0036, 0x0046, 0x0056,
16464 + 0x00f6, 0x2079, 0x0200, 0x7d44, 0x7c40, 0x2019, 0xffff, 0x2001,
16465 + 0x180f, 0x2004, 0xd08c, 0x0160, 0x2001, 0x1800, 0x2004, 0x9086,
16466 + 0x0003, 0x1130, 0x0026, 0x2011, 0x8048, 0x080c, 0x447f, 0x002e,
16467 + 0x00fe, 0x005e, 0x004e, 0x003e, 0x0005, 0x00b6, 0x00c6, 0x7010,
16468 + 0x9084, 0xff00, 0x8007, 0x9096, 0x0001, 0x0120, 0x9096, 0x0023,
16469 + 0x1904, 0x73cf, 0x9186, 0x0023, 0x1550, 0x080c, 0x7657, 0x0904,
16470 + 0x73cf, 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1130, 0x2009,
16471 + 0x0015, 0x080c, 0x95ce, 0x0804, 0x73cf, 0x908e, 0x0214, 0x0118,
16472 + 0x908e, 0x0210, 0x1130, 0x2009, 0x0015, 0x080c, 0x95ce, 0x0804,
16473 + 0x73cf, 0x908e, 0x0100, 0x1904, 0x73cf, 0x7034, 0x9005, 0x1904,
16474 + 0x73cf, 0x2009, 0x0016, 0x080c, 0x95ce, 0x0804, 0x73cf, 0x9186,
16475 + 0x0022, 0x1904, 0x73cf, 0x7030, 0x908e, 0x0300, 0x1580, 0x68d8,
16476 + 0xd0a4, 0x0528, 0xc0b5, 0x68da, 0x7100, 0x918c, 0x00ff, 0x6976,
16477 + 0x7004, 0x687a, 0x00f6, 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006,
16478 + 0x9084, 0x00ff, 0x0016, 0x2008, 0x080c, 0x2446, 0x7932, 0x7936,
16479 + 0x001e, 0x000e, 0x00fe, 0x080c, 0x23fd, 0x6956, 0x703c, 0x00e6,
16480 + 0x2071, 0x0140, 0x7086, 0x2071, 0x1800, 0x70ae, 0x00ee, 0x7034,
16481 + 0x9005, 0x1904, 0x73cf, 0x2009, 0x0017, 0x0804, 0x739c, 0x908e,
16482 + 0x0400, 0x1190, 0x7034, 0x9005, 0x1904, 0x73cf, 0x080c, 0x6877,
16483 + 0x0120, 0x2009, 0x001d, 0x0804, 0x739c, 0x68d8, 0xc0a5, 0x68da,
16484 + 0x2009, 0x0030, 0x0804, 0x739c, 0x908e, 0x0500, 0x1140, 0x7034,
16485 + 0x9005, 0x1904, 0x73cf, 0x2009, 0x0018, 0x0804, 0x739c, 0x908e,
16486 + 0x2010, 0x1120, 0x2009, 0x0019, 0x0804, 0x739c, 0x908e, 0x2110,
16487 + 0x1120, 0x2009, 0x001a, 0x0804, 0x739c, 0x908e, 0x5200, 0x1140,
16488 + 0x7034, 0x9005, 0x1904, 0x73cf, 0x2009, 0x001b, 0x0804, 0x739c,
16489 + 0x908e, 0x5000, 0x1140, 0x7034, 0x9005, 0x1904, 0x73cf, 0x2009,
16490 + 0x001c, 0x0804, 0x739c, 0x908e, 0x1300, 0x1120, 0x2009, 0x0034,
16491 + 0x0804, 0x739c, 0x908e, 0x1200, 0x1140, 0x7034, 0x9005, 0x1904,
16492 + 0x73cf, 0x2009, 0x0024, 0x0804, 0x739c, 0x908c, 0xff00, 0x918e,
16493 + 0x2400, 0x1120, 0x2009, 0x002d, 0x0804, 0x739c, 0x908c, 0xff00,
16494 + 0x918e, 0x5300, 0x1120, 0x2009, 0x002a, 0x0804, 0x739c, 0x908e,
16495 + 0x0f00, 0x1120, 0x2009, 0x0020, 0x0804, 0x739c, 0x908e, 0x5300,
16496 + 0x1108, 0x00d8, 0x908e, 0x6104, 0x11c0, 0x2011, 0x026d, 0x8208,
16497 + 0x2204, 0x9082, 0x0004, 0x8004, 0x8004, 0x20a8, 0x2011, 0x8015,
16498 + 0x211c, 0x8108, 0x0046, 0x2124, 0x080c, 0x447f, 0x004e, 0x8108,
16499 + 0x1f04, 0x735e, 0x2009, 0x0023, 0x0478, 0x908e, 0x6000, 0x1118,
16500 + 0x2009, 0x003f, 0x0448, 0x908e, 0x7800, 0x1118, 0x2009, 0x0045,
16501 + 0x0418, 0x908e, 0x1000, 0x1118, 0x2009, 0x004e, 0x00e8, 0x908e,
16502 + 0x6300, 0x1118, 0x2009, 0x004a, 0x00b8, 0x908c, 0xff00, 0x918e,
16503 + 0x5600, 0x1118, 0x2009, 0x004f, 0x0078, 0x908c, 0xff00, 0x918e,
16504 + 0x5700, 0x1118, 0x2009, 0x0050, 0x0038, 0x2009, 0x001d, 0x6834,
16505 + 0xd0d4, 0x0110, 0x2009, 0x004c, 0x0016, 0x2011, 0x0263, 0x2204,
16506 + 0x8211, 0x220c, 0x080c, 0x23fd, 0x1568, 0x080c, 0x5bb0, 0x1550,
16507 + 0xbe12, 0xbd16, 0x001e, 0x0016, 0xb8b0, 0x9005, 0x1168, 0x9186,
16508 + 0x0046, 0x1150, 0x6874, 0x9606, 0x1138, 0x6878, 0x9506, 0x9084,
16509 + 0xff00, 0x1110, 0x001e, 0x0098, 0x080c, 0x94fe, 0x01a8, 0x2b08,
16510 + 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x9186, 0x004c,
16511 + 0x1110, 0x6023, 0x000a, 0x0016, 0x001e, 0x080c, 0x95ce, 0x00ce,
16512 + 0x00be, 0x0005, 0x001e, 0x0cd8, 0x2001, 0x180d, 0x2004, 0xd0ec,
16513 + 0x0120, 0x2011, 0x8049, 0x080c, 0x447f, 0x080c, 0x95a1, 0x0d90,
16514 + 0x2b08, 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, 0x0016,
16515 + 0x9186, 0x0017, 0x0118, 0x9186, 0x0030, 0x1128, 0x6007, 0x0009,
16516 + 0x6017, 0x2900, 0x0020, 0x6007, 0x0051, 0x6017, 0x0000, 0x602f,
16517 + 0x0009, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x08a0, 0x080c, 0x2e39,
16518 + 0x1140, 0x7010, 0x9084, 0xff00, 0x8007, 0x908e, 0x0008, 0x1108,
16519 + 0x0009, 0x0005, 0x00b6, 0x00c6, 0x0046, 0x7000, 0x908c, 0xff00,
16520 + 0x810f, 0x9186, 0x0033, 0x11e8, 0x080c, 0x7657, 0x0904, 0x745b,
16521 + 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, 0x1140, 0x7034, 0x9005,
16522 + 0x15d0, 0x2009, 0x0015, 0x080c, 0x95ce, 0x04a8, 0x908e, 0x0100,
16523 + 0x1590, 0x7034, 0x9005, 0x1578, 0x2009, 0x0016, 0x080c, 0x95ce,
16524 + 0x0450, 0x9186, 0x0032, 0x1538, 0x7030, 0x908e, 0x1400, 0x1518,
16525 + 0x2009, 0x0038, 0x0016, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c,
16526 + 0x080c, 0x23fd, 0x11b8, 0x080c, 0x5bb0, 0x11a0, 0xbe12, 0xbd16,
16527 + 0x080c, 0x94fe, 0x0178, 0x2b08, 0x6112, 0x080c, 0xb4e6, 0x6023,
16528 + 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x95ce, 0x080c, 0x8125,
16529 + 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x00be, 0x0005, 0x00b6,
16530 + 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0x9696, 0x00ff, 0x11b8,
16531 + 0x9592, 0xfffc, 0x02a0, 0x9596, 0xfffd, 0x1120, 0x2009, 0x007f,
16532 + 0x0804, 0x74bd, 0x9596, 0xfffe, 0x1120, 0x2009, 0x007e, 0x0804,
16533 + 0x74bd, 0x9596, 0xfffc, 0x1118, 0x2009, 0x0080, 0x04f0, 0x2011,
16534 + 0x0000, 0x2019, 0x1836, 0x231c, 0xd3ac, 0x0130, 0x9026, 0x20a9,
16535 + 0x0800, 0x2071, 0x1000, 0x0030, 0x2021, 0x0081, 0x20a9, 0x077f,
16536 + 0x2071, 0x1081, 0x2e1c, 0x93dd, 0x0000, 0x1140, 0x82ff, 0x11d0,
16537 + 0x9496, 0x00ff, 0x01b8, 0x2410, 0xc2fd, 0x00a0, 0xbf10, 0x2600,
16538 + 0x9706, 0xb814, 0x1120, 0x9546, 0x1110, 0x2408, 0x00b0, 0x9745,
16539 + 0x1148, 0x94c6, 0x007e, 0x0130, 0x94c6, 0x007f, 0x0118, 0x94c6,
16540 + 0x0080, 0x1d20, 0x8420, 0x8e70, 0x1f04, 0x7492, 0x82ff, 0x1118,
16541 + 0x9085, 0x0001, 0x0018, 0xc2fc, 0x2208, 0x9006, 0x00de, 0x00ee,
16542 + 0x004e, 0x00be, 0x0005, 0x7000, 0x908c, 0xff00, 0x810f, 0x9184,
16543 + 0x000f, 0x0002, 0x74da, 0x74da, 0x74da, 0x7669, 0x74da, 0x74e3,
16544 + 0x750e, 0x759d, 0x74da, 0x74da, 0x74da, 0x74da, 0x74da, 0x74da,
16545 + 0x74da, 0x74da, 0x7817, 0x0140, 0x2001, 0x19bd, 0x2004, 0x9005,
16546 + 0x090c, 0x8125, 0x0005, 0x00b6, 0x7110, 0xd1bc, 0x01e8, 0x7120,
16547 + 0x2160, 0x9c8c, 0x0007, 0x11c0, 0x9c8a, 0x1cd0, 0x02a8, 0x6860,
16548 + 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910,
16549 + 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130, 0x7124, 0x610a,
16550 + 0x2009, 0x0046, 0x080c, 0x95ce, 0x7817, 0x0140, 0x2001, 0x19bd,
16551 + 0x2004, 0x9005, 0x090c, 0x8125, 0x00be, 0x0005, 0x00b6, 0x00c6,
16552 + 0x9484, 0x0fff, 0x0904, 0x7573, 0x7110, 0xd1bc, 0x1904, 0x7573,
16553 + 0x7108, 0x700c, 0x2028, 0x918c, 0x00ff, 0x2130, 0x9094, 0xff00,
16554 + 0x15b8, 0x81ff, 0x15a8, 0x9080, 0x2e6e, 0x200d, 0x918c, 0xff00,
16555 + 0x810f, 0x2001, 0x0080, 0x9106, 0x0904, 0x7573, 0x080c, 0x5bb0,
16556 + 0x1904, 0x7573, 0xbe12, 0xbd16, 0xb800, 0xd0ec, 0x15e0, 0xba04,
16557 + 0x9294, 0xff00, 0x9286, 0x0600, 0x11a0, 0x080c, 0x94fe, 0x05f0,
16558 + 0x2b08, 0x7028, 0x604a, 0x702c, 0x6046, 0x6112, 0x6023, 0x0006,
16559 + 0x7120, 0x610a, 0x7130, 0x6156, 0x2009, 0x0044, 0x080c, 0xbfdb,
16560 + 0x0410, 0x080c, 0x5f2d, 0x2010, 0x1138, 0xb807, 0x0606, 0x0c28,
16561 + 0x190c, 0x745f, 0x11c0, 0x0890, 0x080c, 0x94fe, 0x2b08, 0x0198,
16562 + 0x6112, 0x6023, 0x0004, 0x7120, 0x610a, 0x9286, 0x0004, 0x1118,
16563 + 0x6007, 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c,
16564 + 0x7c1d, 0x080c, 0x8125, 0x7817, 0x0140, 0x2001, 0x19bd, 0x2004,
16565 + 0x9005, 0x090c, 0x8125, 0x00ce, 0x00be, 0x0005, 0x2001, 0x180d,
16566 + 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x447f, 0x080c,
16567 + 0x95a1, 0x0d48, 0x2b08, 0x6112, 0x6023, 0x0006, 0x7120, 0x610a,
16568 + 0x7130, 0x6156, 0x6017, 0xf300, 0x6003, 0x0001, 0x6007, 0x0041,
16569 + 0x080c, 0x7bcb, 0x080c, 0x8125, 0x08b0, 0x00b6, 0x7110, 0xd1bc,
16570 + 0x01e8, 0x7020, 0x2060, 0x9c84, 0x0007, 0x11c0, 0x9c82, 0x1cd0,
16571 + 0x02a8, 0x6860, 0x9c02, 0x1290, 0x7008, 0x9084, 0x00ff, 0x6110,
16572 + 0x2158, 0xb910, 0x9106, 0x1150, 0x700c, 0xb914, 0x9106, 0x1130,
16573 + 0x7124, 0x610a, 0x2009, 0x0045, 0x080c, 0x95ce, 0x7817, 0x0140,
16574 + 0x2001, 0x19bd, 0x2004, 0x9005, 0x090c, 0x8125, 0x00be, 0x0005,
16575 + 0x080c, 0x2e39, 0x1168, 0x7010, 0x9084, 0xff00, 0x8007, 0x9086,
16576 + 0x0000, 0x1130, 0x9184, 0x000f, 0x908a, 0x0006, 0x1208, 0x000b,
16577 + 0x0005, 0x75df, 0x75e0, 0x75df, 0x75df, 0x763f, 0x764b, 0x0005,
16578 + 0x00b6, 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, 0x763d,
16579 + 0x700c, 0x7108, 0x080c, 0x23fd, 0x1904, 0x763d, 0x080c, 0x5bb0,
16580 + 0x1904, 0x763d, 0xbe12, 0xbd16, 0x7110, 0xd1bc, 0x01d8, 0x080c,
16581 + 0x5f2d, 0x0118, 0x9086, 0x0004, 0x1588, 0x00c6, 0x080c, 0x7657,
16582 + 0x00ce, 0x05d8, 0x080c, 0x94fe, 0x2b08, 0x05b8, 0x6112, 0x080c,
16583 + 0xb4e6, 0x6023, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x080c,
16584 + 0x95ce, 0x0458, 0x080c, 0x5f2d, 0x0148, 0x9086, 0x0004, 0x0130,
16585 + 0x080c, 0x5f35, 0x0118, 0x9086, 0x0004, 0x1180, 0x080c, 0x94fe,
16586 + 0x2b08, 0x01d8, 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0005, 0x7120,
16587 + 0x610a, 0x2009, 0x0088, 0x080c, 0x95ce, 0x0078, 0x080c, 0x94fe,
16588 + 0x2b08, 0x0158, 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0004, 0x7120,
16589 + 0x610a, 0x2009, 0x0001, 0x080c, 0x95ce, 0x00be, 0x0005, 0x7110,
16590 + 0xd1bc, 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, 0x2009, 0x0089,
16591 + 0x080c, 0x95ce, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130,
16592 + 0x7124, 0x610a, 0x2009, 0x008a, 0x080c, 0x95ce, 0x0005, 0x7020,
16593 + 0x2060, 0x9c84, 0x0007, 0x1158, 0x9c82, 0x1cd0, 0x0240, 0x2001,
16594 + 0x1818, 0x2004, 0x9c02, 0x1218, 0x9085, 0x0001, 0x0005, 0x9006,
16595 + 0x0ce8, 0x00b6, 0x7110, 0xd1bc, 0x11d8, 0x7024, 0x2060, 0x9c84,
16596 + 0x0007, 0x11b0, 0x9c82, 0x1cd0, 0x0298, 0x6860, 0x9c02, 0x1280,
16597 + 0x7008, 0x9084, 0x00ff, 0x6110, 0x2158, 0xb910, 0x9106, 0x1140,
16598 + 0x700c, 0xb914, 0x9106, 0x1120, 0x2009, 0x0051, 0x080c, 0x95ce,
16599 + 0x7817, 0x0140, 0x2001, 0x19bd, 0x2004, 0x9005, 0x090c, 0x8125,
16600 + 0x00be, 0x0005, 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206,
16601 + 0x0049, 0x0005, 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213,
16602 + 0x0009, 0x0005, 0x00c6, 0x0096, 0x00f6, 0x7000, 0x9084, 0xf000,
16603 + 0x9086, 0xc000, 0x05d0, 0x080c, 0x94fe, 0x05b8, 0x0066, 0x00c6,
16604 + 0x0046, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x23fd,
16605 + 0x15a0, 0x080c, 0x5bb0, 0x1588, 0xbe12, 0xbd16, 0x2b00, 0x004e,
16606 + 0x00ce, 0x6012, 0x080c, 0xb4e6, 0x080c, 0x0fae, 0x0510, 0x2900,
16607 + 0x605a, 0x9006, 0xa802, 0xa866, 0xac6a, 0xa85c, 0x90f8, 0x001b,
16608 + 0x20a9, 0x000e, 0xa860, 0x20e8, 0x20e1, 0x0000, 0x2fa0, 0x2e98,
16609 + 0x4003, 0x006e, 0x6616, 0x6007, 0x003e, 0x6023, 0x0001, 0x6003,
16610 + 0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00fe, 0x009e, 0x00ce,
16611 + 0x0005, 0x080c, 0x9554, 0x006e, 0x0cc0, 0x004e, 0x00ce, 0x0cc8,
16612 + 0x00c6, 0x7000, 0x908c, 0xff00, 0x9184, 0xf000, 0x810f, 0x9086,
16613 + 0x2000, 0x1904, 0x7747, 0x9186, 0x0022, 0x15f0, 0x2001, 0x0111,
16614 + 0x2004, 0x9005, 0x1904, 0x7749, 0x7030, 0x908e, 0x0400, 0x0904,
16615 + 0x7749, 0x908e, 0x6000, 0x05e8, 0x908e, 0x5400, 0x05d0, 0x908e,
16616 + 0x0300, 0x11d8, 0x2009, 0x1836, 0x210c, 0xd18c, 0x1590, 0xd1a4,
16617 + 0x1580, 0x080c, 0x5eeb, 0x0558, 0x68a8, 0x9084, 0x00ff, 0x7100,
16618 + 0x918c, 0x00ff, 0x9106, 0x1518, 0x6878, 0x69a8, 0x918c, 0xff00,
16619 + 0x9105, 0x7104, 0x9106, 0x11d8, 0x00e0, 0x2009, 0x0103, 0x210c,
16620 + 0xd1b4, 0x11a8, 0x908e, 0x5200, 0x09e8, 0x908e, 0x0500, 0x09d0,
16621 + 0x908e, 0x5000, 0x09b8, 0x0058, 0x9186, 0x0023, 0x1140, 0x080c,
16622 + 0x7657, 0x0128, 0x6004, 0x9086, 0x0002, 0x0118, 0x0000, 0x9006,
16623 + 0x0010, 0x9085, 0x0001, 0x00ce, 0x0005, 0x2071, 0x19c7, 0x7003,
16624 + 0x0003, 0x700f, 0x0361, 0x9006, 0x701a, 0x7076, 0x7012, 0x7017,
16625 + 0x1cd0, 0x7007, 0x0000, 0x7026, 0x702b, 0x8b66, 0x7032, 0x7037,
16626 + 0x8bc9, 0x703f, 0xffff, 0x7043, 0xffff, 0x7046, 0x704b, 0x4c8b,
16627 + 0x704e, 0x705f, 0x78ae, 0x080c, 0x0fc7, 0x090c, 0x0d84, 0x2900,
16628 + 0x703a, 0xa867, 0x0003, 0xa86f, 0x0100, 0xa8ab, 0xdcb0, 0x0005,
16629 + 0x2071, 0x19c7, 0x1d04, 0x7809, 0x2091, 0x6000, 0x700c, 0x8001,
16630 + 0x700e, 0x1510, 0x2001, 0x1874, 0x2004, 0xd0c4, 0x0158, 0x3a00,
16631 + 0xd08c, 0x1140, 0x20d1, 0x0000, 0x20d1, 0x0001, 0x20d1, 0x0000,
16632 + 0x080c, 0x0d84, 0x700f, 0x0361, 0x7007, 0x0001, 0x0126, 0x2091,
16633 + 0x8000, 0x080c, 0x78f3, 0x7044, 0x900d, 0x0148, 0x8109, 0x7146,
16634 + 0x1130, 0x7048, 0x080f, 0x0018, 0x0126, 0x2091, 0x8000, 0x7024,
16635 + 0x900d, 0x0188, 0x7020, 0x8001, 0x7022, 0x1168, 0x7023, 0x0009,
16636 + 0x8109, 0x7126, 0x9186, 0x03e8, 0x1110, 0x7028, 0x080f, 0x81ff,
16637 + 0x1110, 0x7028, 0x080f, 0x7030, 0x900d, 0x0180, 0x702c, 0x8001,
16638 + 0x702e, 0x1160, 0x702f, 0x0009, 0x8109, 0x7132, 0x0128, 0x9184,
16639 + 0x007f, 0x090c, 0x8c48, 0x0010, 0x7034, 0x080f, 0x703c, 0x9005,
16640 + 0x0118, 0x0310, 0x8001, 0x703e, 0x7040, 0x9005, 0x0118, 0x0310,
16641 + 0x8001, 0x7042, 0x7050, 0x900d, 0x0168, 0x704c, 0x8001, 0x704e,
16642 + 0x1148, 0x704f, 0x0009, 0x8109, 0x7152, 0x1120, 0x7154, 0x7152,
16643 + 0x705c, 0x080f, 0x7018, 0x900d, 0x01d8, 0x0016, 0x7074, 0x900d,
16644 + 0x0158, 0x7070, 0x8001, 0x7072, 0x1138, 0x7073, 0x0009, 0x8109,
16645 + 0x7176, 0x1110, 0x7078, 0x080f, 0x001e, 0x7008, 0x8001, 0x700a,
16646 + 0x1138, 0x700b, 0x0009, 0x8109, 0x711a, 0x1110, 0x701c, 0x080f,
16647 + 0x012e, 0x7004, 0x0002, 0x782f, 0x7830, 0x784a, 0x00e6, 0x2071,
16648 + 0x19c7, 0x7018, 0x9005, 0x1120, 0x711a, 0x721e, 0x700b, 0x0009,
16649 + 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0x19c7, 0x701c, 0x9206,
16650 + 0x1110, 0x701a, 0x701e, 0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071,
16651 + 0x19c7, 0xb888, 0x9102, 0x0208, 0xb98a, 0x00ee, 0x0005, 0x0005,
16652 + 0x00b6, 0x7110, 0x080c, 0x5c0d, 0x1158, 0xb888, 0x8001, 0x0240,
16653 + 0xb88a, 0x1130, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125, 0x012e,
16654 + 0x8108, 0x9182, 0x0800, 0x0218, 0x900e, 0x7007, 0x0002, 0x7112,
16655 + 0x00be, 0x0005, 0x7014, 0x2060, 0x0126, 0x2091, 0x8000, 0x6040,
16656 + 0x9005, 0x0128, 0x8001, 0x6042, 0x1110, 0x080c, 0xb38b, 0x6018,
16657 + 0x9005, 0x0510, 0x8001, 0x601a, 0x11f8, 0x6120, 0x9186, 0x0003,
16658 + 0x0118, 0x9186, 0x0006, 0x11b0, 0x6014, 0x2048, 0xa884, 0x908a,
16659 + 0x199a, 0x0280, 0x9082, 0x1999, 0xa886, 0x908a, 0x199a, 0x0210,
16660 + 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0xa87c,
16661 + 0xd0e4, 0x0110, 0x080c, 0xaddd, 0x012e, 0x9c88, 0x0018, 0x7116,
16662 + 0x2001, 0x1818, 0x2004, 0x9102, 0x0220, 0x7017, 0x1cd0, 0x7007,
16663 + 0x0000, 0x0005, 0x00e6, 0x2071, 0x19c7, 0x7027, 0x07d0, 0x7023,
16664 + 0x0009, 0x00ee, 0x0005, 0x2001, 0x19d0, 0x2003, 0x0000, 0x0005,
16665 + 0x00e6, 0x2071, 0x19c7, 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005,
16666 + 0x2011, 0x19d3, 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071, 0x19c7,
16667 + 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, 0x0086, 0x0026,
16668 + 0x7058, 0x8000, 0x705a, 0x2001, 0x19d5, 0x2044, 0xa06c, 0x9086,
16669 + 0x0000, 0x0150, 0x706c, 0xa09a, 0x7068, 0xa096, 0x7064, 0xa092,
16670 + 0x7060, 0xa08e, 0x080c, 0x108c, 0x002e, 0x008e, 0x0005, 0x0006,
16671 + 0x0016, 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6,
16672 + 0x0156, 0x080c, 0x7778, 0x015e, 0x00fe, 0x00ee, 0x00de, 0x00ce,
16673 + 0x00be, 0x00ae, 0x009e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071,
16674 + 0x19c7, 0x7176, 0x727a, 0x7073, 0x0009, 0x00ee, 0x0005, 0x00e6,
16675 + 0x0006, 0x2071, 0x19c7, 0x7078, 0x9206, 0x1110, 0x7076, 0x707a,
16676 + 0x000e, 0x00ee, 0x0005, 0x2069, 0x1800, 0x69ec, 0xd1e4, 0x1518,
16677 + 0x0026, 0xd1ec, 0x0140, 0x684c, 0x9082, 0x0200, 0x0288, 0x8117,
16678 + 0x9294, 0x00c0, 0x0088, 0x9184, 0x0007, 0x01a0, 0x8109, 0x9184,
16679 + 0x0007, 0x0110, 0x69ee, 0x0070, 0x8107, 0x9084, 0x0007, 0x910d,
16680 + 0x8107, 0x9106, 0x9094, 0x00c0, 0x9184, 0xff3f, 0x9205, 0x68ee,
16681 + 0x080c, 0x0e8d, 0x002e, 0x0005, 0x00c6, 0x2061, 0x1a3d, 0x00ce,
16682 + 0x0005, 0x9184, 0x000f, 0x8003, 0x8003, 0x8003, 0x9080, 0x1a3d,
16683 + 0x2060, 0x0005, 0xa884, 0x908a, 0x199a, 0x1638, 0x9005, 0x1150,
16684 + 0x00c6, 0x2061, 0x1a3d, 0x6014, 0x00ce, 0x9005, 0x1130, 0x2001,
16685 + 0x001e, 0x0018, 0x908e, 0xffff, 0x01b0, 0x8003, 0x800b, 0x810b,
16686 + 0x9108, 0x611a, 0xa87c, 0x908c, 0x00c0, 0x918e, 0x00c0, 0x0904,
16687 + 0x79b4, 0xd0b4, 0x1168, 0xd0bc, 0x1904, 0x798d, 0x2009, 0x0006,
16688 + 0x080c, 0x79e1, 0x0005, 0x900e, 0x0c60, 0x2001, 0x1999, 0x08b0,
16689 + 0xd0fc, 0x0160, 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, 0x1904,
16690 + 0x79db, 0x908c, 0x2020, 0x918e, 0x2020, 0x01a8, 0x6024, 0xd0d4,
16691 + 0x11e8, 0x2009, 0x1874, 0x2104, 0xd084, 0x1138, 0x87ff, 0x1120,
16692 + 0x2009, 0x0043, 0x0804, 0x95ce, 0x0005, 0x87ff, 0x1de8, 0x2009,
16693 + 0x0042, 0x0804, 0x95ce, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be,
16694 + 0xd1ac, 0x0d20, 0x6024, 0xc0cd, 0x6026, 0x0c00, 0xc0d4, 0x6026,
16695 + 0xa890, 0x602e, 0xa88c, 0x6032, 0x08e0, 0xd0fc, 0x0160, 0x908c,
16696 + 0x0003, 0x0120, 0x918e, 0x0003, 0x1904, 0x79db, 0x908c, 0x2020,
16697 + 0x918e, 0x2020, 0x0170, 0x0076, 0x00f6, 0x2c78, 0x080c, 0x150d,
16698 + 0x00fe, 0x007e, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x95ce,
16699 + 0x0005, 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d58,
16700 + 0x6124, 0xc1cd, 0x6126, 0x0c38, 0xd0fc, 0x0188, 0x908c, 0x2020,
16701 + 0x918e, 0x2020, 0x01a8, 0x9084, 0x0003, 0x908e, 0x0002, 0x0148,
16702 + 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, 0x95ce, 0x0005, 0x00b9,
16703 + 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x95ce, 0x0cb0,
16704 + 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1ac, 0x0d20, 0x6124,
16705 + 0xc1cd, 0x6126, 0x0c00, 0x2009, 0x0004, 0x0019, 0x0005, 0x2009,
16706 + 0x0001, 0x0096, 0x080c, 0xb0ad, 0x0518, 0x6014, 0x2048, 0xa982,
16707 + 0xa800, 0x6016, 0x9186, 0x0001, 0x1188, 0xa97c, 0x918c, 0x8100,
16708 + 0x918e, 0x8100, 0x1158, 0x00c6, 0x2061, 0x1a3d, 0x6200, 0xd28c,
16709 + 0x1120, 0x6204, 0x8210, 0x0208, 0x6206, 0x00ce, 0x080c, 0x5ff7,
16710 + 0x6014, 0x904d, 0x0076, 0x2039, 0x0000, 0x190c, 0x792a, 0x007e,
16711 + 0x009e, 0x0005, 0x0156, 0x00c6, 0x2061, 0x1a3d, 0x6000, 0x81ff,
16712 + 0x0110, 0x9205, 0x0008, 0x9204, 0x6002, 0x00ce, 0x015e, 0x0005,
16713 + 0x6800, 0xd08c, 0x1138, 0x6808, 0x9005, 0x0120, 0x8001, 0x680a,
16714 + 0x9085, 0x0001, 0x0005, 0x0126, 0x2091, 0x8000, 0x0036, 0x0046,
16715 + 0x20a9, 0x0010, 0x9006, 0x8004, 0x2019, 0x0100, 0x231c, 0x93a6,
16716 + 0x0008, 0x1118, 0x8086, 0x818e, 0x0020, 0x80f6, 0x3e00, 0x81f6,
16717 + 0x3e08, 0x1208, 0x9200, 0x1f04, 0x7a2c, 0x93a6, 0x0008, 0x1118,
16718 + 0x8086, 0x818e, 0x0020, 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x004e,
16719 + 0x003e, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0076, 0x0156,
16720 + 0x20a9, 0x0010, 0x9005, 0x0510, 0x911a, 0x1600, 0x8213, 0x2039,
16721 + 0x0100, 0x273c, 0x97be, 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5,
16722 + 0x3e08, 0x0228, 0x911a, 0x1220, 0x1f04, 0x7a56, 0x0028, 0x911a,
16723 + 0x2308, 0x8210, 0x1f04, 0x7a56, 0x0006, 0x3200, 0x9084, 0xefff,
16724 + 0x2080, 0x000e, 0x015e, 0x007e, 0x012e, 0x0005, 0x0006, 0x3200,
16725 + 0x9085, 0x1000, 0x0ca8, 0x0126, 0x2091, 0x2800, 0x2079, 0x19b4,
16726 + 0x012e, 0x00d6, 0x2069, 0x19b4, 0x6803, 0x0005, 0x0156, 0x0146,
16727 + 0x01d6, 0x20e9, 0x0000, 0x2069, 0x0200, 0x080c, 0x9363, 0x0401,
16728 + 0x080c, 0x934e, 0x00e9, 0x080c, 0x9351, 0x00d1, 0x080c, 0x9354,
16729 + 0x00b9, 0x080c, 0x9357, 0x00a1, 0x080c, 0x935a, 0x0089, 0x080c,
16730 + 0x935d, 0x0071, 0x080c, 0x9360, 0x0059, 0x01de, 0x014e, 0x015e,
16731 + 0x2069, 0x0004, 0x2d04, 0x9085, 0x8001, 0x206a, 0x00de, 0x0005,
16732 + 0x20a9, 0x0020, 0x20a1, 0x0240, 0x9006, 0x4004, 0x0005, 0x00c6,
16733 + 0x6027, 0x0001, 0x7804, 0x9084, 0x0007, 0x0002, 0x7ac8, 0x7aec,
16734 + 0x7b36, 0x7ace, 0x7aec, 0x7ac8, 0x7ac6, 0x7ac6, 0x080c, 0x0d84,
16735 + 0x080c, 0x7893, 0x080c, 0x8125, 0x00ce, 0x0005, 0x62c0, 0x82ff,
16736 + 0x1110, 0x00ce, 0x0005, 0x2011, 0x554d, 0x080c, 0x781a, 0x7828,
16737 + 0x9092, 0x00c8, 0x1228, 0x8000, 0x782a, 0x080c, 0x558a, 0x0c88,
16738 + 0x62c0, 0x080c, 0x9367, 0x080c, 0x554d, 0x7807, 0x0003, 0x7827,
16739 + 0x0000, 0x782b, 0x0000, 0x0c28, 0x080c, 0x7893, 0x6220, 0xd2a4,
16740 + 0x0178, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824, 0x9065,
16741 + 0x090c, 0x0d84, 0x2009, 0x0013, 0x080c, 0x95ce, 0x00ce, 0x0005,
16742 + 0x00c6, 0x7824, 0x9065, 0x090c, 0x0d84, 0x7804, 0x9086, 0x0004,
16743 + 0x0904, 0x7b74, 0x7828, 0x9092, 0xc350, 0x1230, 0x8000, 0x782a,
16744 + 0x00ce, 0x080c, 0x8b2c, 0x0c50, 0x2011, 0x0130, 0x2214, 0x080c,
16745 + 0x9367, 0x6104, 0x9186, 0x0003, 0x1188, 0x00e6, 0x2071, 0x1800,
16746 + 0x70e4, 0x00ee, 0xd08c, 0x0150, 0x00c6, 0x00e6, 0x2061, 0x0100,
16747 + 0x2071, 0x1800, 0x080c, 0x55a0, 0x00ee, 0x00ce, 0x080c, 0xcd1f,
16748 + 0x2009, 0x0014, 0x080c, 0x95ce, 0x00ce, 0x0840, 0x2001, 0x19d0,
16749 + 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824,
16750 + 0x9065, 0x090c, 0x0d84, 0x2009, 0x0013, 0x080c, 0x9620, 0x00ce,
16751 + 0x0005, 0x00b6, 0x00c6, 0x00d6, 0x7824, 0x9005, 0x090c, 0x0d84,
16752 + 0x781c, 0x905d, 0x090c, 0x0d84, 0x080c, 0x9367, 0xb800, 0xc0dc,
16753 + 0xb802, 0x7924, 0x2160, 0x080c, 0x9554, 0xb93c, 0x81ff, 0x090c,
16754 + 0x0d84, 0x8109, 0xb93e, 0xb854, 0x9015, 0x0110, 0x7a1e, 0x0010,
16755 + 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x00de, 0x00ce,
16756 + 0x00be, 0x080c, 0x8125, 0x0898, 0x6104, 0x9186, 0x0002, 0x0128,
16757 + 0x9186, 0x0004, 0x0110, 0x0804, 0x7b0a, 0x7808, 0x9c06, 0x0904,
16758 + 0x7b0a, 0x080c, 0x8026, 0x080c, 0x7c1d, 0x00ce, 0x080c, 0x8125,
16759 + 0x0804, 0x7afe, 0x00c6, 0x6024, 0x6027, 0x0002, 0xd0f4, 0x1580,
16760 + 0x62c8, 0x60c4, 0x9205, 0x1170, 0x783c, 0x9065, 0x0130, 0x2009,
16761 + 0x0049, 0x080c, 0x95ce, 0x00ce, 0x0005, 0x2011, 0x19d3, 0x2013,
16762 + 0x0000, 0x0cc8, 0x793c, 0x81ff, 0x0dc0, 0x7944, 0x9192, 0x7530,
16763 + 0x12f0, 0x8108, 0x7946, 0x793c, 0x9188, 0x0008, 0x210c, 0x918e,
16764 + 0x0006, 0x1138, 0x6014, 0x9084, 0x1984, 0x9085, 0x0012, 0x6016,
16765 + 0x0c10, 0x6014, 0x9084, 0x1984, 0x9085, 0x0016, 0x6016, 0x08d8,
16766 + 0x793c, 0x2160, 0x2009, 0x004a, 0x080c, 0x95ce, 0x08a0, 0x7848,
16767 + 0xc085, 0x784a, 0x0880, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091,
16768 + 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x19b4, 0x6020, 0x8000,
16769 + 0x6022, 0x6010, 0x9005, 0x0148, 0x9080, 0x0003, 0x2102, 0x6112,
16770 + 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0,
16771 + 0x00d6, 0x2069, 0x19b4, 0xb800, 0xd0d4, 0x01b8, 0x6820, 0x8000,
16772 + 0x6822, 0x9086, 0x0001, 0x1110, 0x2b00, 0x681e, 0x2001, 0x180c,
16773 + 0x2004, 0xd0fc, 0x0118, 0x00de, 0x0804, 0x8125, 0x6804, 0x9084,
16774 + 0x0007, 0x0804, 0x813c, 0x00de, 0x0005, 0xc0d5, 0xb802, 0x6818,
16775 + 0x9005, 0x0168, 0xb856, 0xb85b, 0x0000, 0x0086, 0x0006, 0x2b00,
16776 + 0x681a, 0x008e, 0xa05a, 0x008e, 0x2069, 0x19b4, 0x08b8, 0xb856,
16777 + 0xb85a, 0x2b00, 0x681a, 0x681e, 0x0888, 0x0006, 0x0016, 0x00c6,
16778 + 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x19b4,
16779 + 0x6020, 0x8000, 0x6022, 0x6008, 0x9005, 0x0148, 0x9080, 0x0003,
16780 + 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, 0x610e,
16781 + 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, 0x2c08, 0x2061, 0x19b4,
16782 + 0x6034, 0x9005, 0x0130, 0x9080, 0x0003, 0x2102, 0x6136, 0x00ce,
16783 + 0x0005, 0x613a, 0x6136, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6,
16784 + 0x00c6, 0x00b6, 0x0096, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026,
16785 + 0x0016, 0x0006, 0x0126, 0x902e, 0x2071, 0x19b4, 0x7638, 0x2660,
16786 + 0x2678, 0x2091, 0x8000, 0x8cff, 0x0904, 0x7cc4, 0x6010, 0x2058,
16787 + 0xb8a0, 0x9206, 0x1904, 0x7cbf, 0x87ff, 0x0120, 0x6054, 0x9106,
16788 + 0x1904, 0x7cbf, 0x703c, 0x9c06, 0x1178, 0x0036, 0x2019, 0x0001,
16789 + 0x080c, 0x8dfe, 0x7033, 0x0000, 0x9006, 0x703e, 0x7042, 0x7046,
16790 + 0x704a, 0x003e, 0x2029, 0x0001, 0x7038, 0x9c36, 0x1110, 0x660c,
16791 + 0x763a, 0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00,
16792 + 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06,
16793 + 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xb0ad,
16794 + 0x01c8, 0x6014, 0x2048, 0x6020, 0x9086, 0x0003, 0x1590, 0xa867,
16795 + 0x0103, 0xab7a, 0xa877, 0x0000, 0x0016, 0x0036, 0x0076, 0x080c,
16796 + 0xb374, 0x080c, 0xcc6b, 0x080c, 0x61a9, 0x007e, 0x003e, 0x001e,
16797 + 0x080c, 0xb278, 0x080c, 0x9584, 0x00ce, 0x0804, 0x7c63, 0x2c78,
16798 + 0x600c, 0x2060, 0x0804, 0x7c63, 0x85ff, 0x0120, 0x0036, 0x080c,
16799 + 0x820b, 0x003e, 0x012e, 0x000e, 0x001e, 0x002e, 0x003e, 0x005e,
16800 + 0x006e, 0x007e, 0x009e, 0x00be, 0x00ce, 0x00de, 0x00ee, 0x00fe,
16801 + 0x0005, 0x6020, 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0076,
16802 + 0x080c, 0xcc6b, 0x080c, 0xc970, 0x007e, 0x003e, 0x001e, 0x0890,
16803 + 0x6020, 0x9086, 0x000a, 0x0904, 0x7ca9, 0x0804, 0x7ca7, 0x0006,
16804 + 0x0066, 0x0096, 0x00c6, 0x00d6, 0x00f6, 0x9036, 0x0126, 0x2091,
16805 + 0x8000, 0x2079, 0x19b4, 0x7838, 0x9065, 0x0904, 0x7d3f, 0x600c,
16806 + 0x0006, 0x600f, 0x0000, 0x783c, 0x9c06, 0x1168, 0x0036, 0x2019,
16807 + 0x0001, 0x080c, 0x8dfe, 0x7833, 0x0000, 0x901e, 0x7b3e, 0x7b42,
16808 + 0x7b46, 0x7b4a, 0x003e, 0x080c, 0xb0ad, 0x0520, 0x6014, 0x2048,
16809 + 0x6020, 0x9086, 0x0003, 0x1568, 0x3e08, 0x918e, 0x0002, 0x1188,
16810 + 0x6010, 0x9005, 0x0170, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc,
16811 + 0x0140, 0x6040, 0x9005, 0x1180, 0x2001, 0x1955, 0x2004, 0x6042,
16812 + 0x0058, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x61a9,
16813 + 0x080c, 0xb278, 0x080c, 0x9584, 0x000e, 0x0804, 0x7cfc, 0x7e3a,
16814 + 0x7e36, 0x012e, 0x00fe, 0x00de, 0x00ce, 0x009e, 0x006e, 0x000e,
16815 + 0x0005, 0x6020, 0x9086, 0x0006, 0x1118, 0x080c, 0xc970, 0x0c50,
16816 + 0x6020, 0x9086, 0x000a, 0x09f8, 0x08e0, 0x0016, 0x0026, 0x0086,
16817 + 0x9046, 0x0099, 0x080c, 0x7e2b, 0x008e, 0x002e, 0x001e, 0x0005,
16818 + 0x00f6, 0x0126, 0x2079, 0x19b4, 0x2091, 0x8000, 0x080c, 0x7ec2,
16819 + 0x080c, 0x7f3a, 0x012e, 0x00fe, 0x0005, 0x00b6, 0x0096, 0x00f6,
16820 + 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, 0x2091,
16821 + 0x8000, 0x2071, 0x19b4, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0904,
16822 + 0x7dfc, 0x6010, 0x2058, 0xb8a0, 0x9206, 0x1904, 0x7df7, 0x88ff,
16823 + 0x0120, 0x6054, 0x9106, 0x1904, 0x7df7, 0x7024, 0x9c06, 0x1550,
16824 + 0x2069, 0x0100, 0x68c0, 0x9005, 0x0508, 0x080c, 0x7893, 0x080c,
16825 + 0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036,
16826 + 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100,
16827 + 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2069, 0x0100, 0x6824,
16828 + 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009,
16829 + 0x630a, 0x04e8, 0x7014, 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010,
16830 + 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010,
16831 + 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e,
16832 + 0x0008, 0x2678, 0x600f, 0x0000, 0x6014, 0x2048, 0x080c, 0xb0ad,
16833 + 0x01b8, 0x6020, 0x9086, 0x0003, 0x1550, 0xa867, 0x0103, 0xab7a,
16834 + 0xa877, 0x0000, 0x0016, 0x0036, 0x0086, 0x080c, 0xb374, 0x080c,
16835 + 0xcc6b, 0x080c, 0x61a9, 0x008e, 0x003e, 0x001e, 0x080c, 0xb278,
16836 + 0x080c, 0x9584, 0x080c, 0x8eec, 0x00ce, 0x0804, 0x7d7e, 0x2c78,
16837 + 0x600c, 0x2060, 0x0804, 0x7d7e, 0x012e, 0x000e, 0x001e, 0x006e,
16838 + 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x009e, 0x00be, 0x0005, 0x6020,
16839 + 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0086, 0x080c, 0xcc6b,
16840 + 0x080c, 0xc970, 0x008e, 0x003e, 0x001e, 0x08d0, 0x080c, 0x9e99,
16841 + 0x6020, 0x9086, 0x0002, 0x1130, 0x6004, 0x9086, 0x0085, 0x0904,
16842 + 0x7ddd, 0x0870, 0x6020, 0x9086, 0x0005, 0x1950, 0x6004, 0x9086,
16843 + 0x0085, 0x0d08, 0x0828, 0x00b6, 0x00a6, 0x0096, 0x00c6, 0x0006,
16844 + 0x0126, 0x2091, 0x8000, 0x9280, 0x1000, 0x2004, 0x905d, 0x0904,
16845 + 0x7ebb, 0x00f6, 0x00e6, 0x00d6, 0x0066, 0x2071, 0x19b4, 0xbe54,
16846 + 0x7018, 0x9b06, 0x1108, 0x761a, 0x701c, 0x9b06, 0x1130, 0x86ff,
16847 + 0x1118, 0x7018, 0x701e, 0x0008, 0x761e, 0xb858, 0x904d, 0x0108,
16848 + 0xae56, 0x96d5, 0x0000, 0x0110, 0x2900, 0xb05a, 0xb857, 0x0000,
16849 + 0xb85b, 0x0000, 0xb800, 0xc0d4, 0xc0dc, 0xb802, 0x080c, 0x5b43,
16850 + 0x0904, 0x7eb7, 0x7624, 0x86ff, 0x0904, 0x7ea6, 0x9680, 0x0005,
16851 + 0x2004, 0x9906, 0x15d8, 0x00d6, 0x2069, 0x0100, 0x68c0, 0x9005,
16852 + 0x0560, 0x080c, 0x7893, 0x080c, 0x8b50, 0x68c3, 0x0000, 0x080c,
16853 + 0x900f, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384,
16854 + 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c,
16855 + 0x28a5, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001,
16856 + 0x003e, 0x00de, 0x00c6, 0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e,
16857 + 0x2660, 0x080c, 0x9584, 0x00ce, 0x0048, 0x00de, 0x00c6, 0x2660,
16858 + 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x7e5e, 0x89ff, 0x0158,
16859 + 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xb374, 0x080c,
16860 + 0xcc6b, 0x080c, 0x61a9, 0x080c, 0x8eec, 0x0804, 0x7e5e, 0x006e,
16861 + 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, 0x009e, 0x00ae,
16862 + 0x00be, 0x0005, 0x0096, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x9036,
16863 + 0x7814, 0x9065, 0x0904, 0x7f17, 0x600c, 0x0006, 0x600f, 0x0000,
16864 + 0x7824, 0x9c06, 0x1558, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0508,
16865 + 0x080c, 0x7893, 0x080c, 0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f,
16866 + 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000,
16867 + 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5,
16868 + 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e,
16869 + 0x0028, 0x6003, 0x0009, 0x630a, 0x2c30, 0x00b0, 0x6014, 0x2048,
16870 + 0x080c, 0xb0ab, 0x0168, 0x6020, 0x9086, 0x0003, 0x11c0, 0xa867,
16871 + 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x61a9, 0x080c, 0xb278,
16872 + 0x080c, 0x9584, 0x080c, 0x8eec, 0x000e, 0x0804, 0x7ec9, 0x7e16,
16873 + 0x7e12, 0x00de, 0x00ce, 0x006e, 0x000e, 0x009e, 0x0005, 0x6020,
16874 + 0x9086, 0x0006, 0x1118, 0x080c, 0xc970, 0x0c50, 0x080c, 0x9e99,
16875 + 0x6020, 0x9086, 0x0002, 0x1128, 0x6004, 0x9086, 0x0085, 0x09b8,
16876 + 0x08f8, 0x6020, 0x9086, 0x0005, 0x19d8, 0x6004, 0x9086, 0x0085,
16877 + 0x0d50, 0x08b0, 0x0006, 0x0066, 0x0096, 0x00b6, 0x00c6, 0x00d6,
16878 + 0x7818, 0x905d, 0x0904, 0x7fb7, 0xb854, 0x0006, 0x9006, 0xb856,
16879 + 0xb85a, 0xb800, 0xc0d4, 0xc0dc, 0xb802, 0x080c, 0x5b43, 0x0904,
16880 + 0x7fb4, 0x7e24, 0x86ff, 0x0904, 0x7fa7, 0x9680, 0x0005, 0x2004,
16881 + 0x9906, 0x1904, 0x7fa7, 0x00d6, 0x2069, 0x0100, 0x68c0, 0x9005,
16882 + 0x05e8, 0x080c, 0x7893, 0x080c, 0x8b50, 0x68c3, 0x0000, 0x080c,
16883 + 0x900f, 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384,
16884 + 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c,
16885 + 0x28a5, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001,
16886 + 0x003e, 0x00de, 0x00c6, 0x3e08, 0x918e, 0x0002, 0x1168, 0xb800,
16887 + 0xd0bc, 0x0150, 0x9680, 0x0010, 0x200c, 0x81ff, 0x1508, 0x2009,
16888 + 0x1955, 0x210c, 0x2102, 0x00e0, 0xb83c, 0x9005, 0x0110, 0x8001,
16889 + 0xb83e, 0x2660, 0x080c, 0x9584, 0x00ce, 0x0048, 0x00de, 0x00c6,
16890 + 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x7f4d, 0x89ff,
16891 + 0x0138, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0x61a9,
16892 + 0x080c, 0x8eec, 0x0804, 0x7f4d, 0x000e, 0x0804, 0x7f41, 0x781e,
16893 + 0x781a, 0x00de, 0x00ce, 0x00be, 0x009e, 0x006e, 0x000e, 0x0005,
16894 + 0x00e6, 0x00d6, 0x0096, 0x0066, 0xb800, 0xd0dc, 0x01a0, 0xb84c,
16895 + 0x904d, 0x0188, 0xa878, 0x9606, 0x1170, 0x2071, 0x19b4, 0x7024,
16896 + 0x9035, 0x0148, 0x9080, 0x0005, 0x2004, 0x9906, 0x1120, 0xb800,
16897 + 0xc0dc, 0xb802, 0x0029, 0x006e, 0x009e, 0x00de, 0x00ee, 0x0005,
16898 + 0x00f6, 0x2079, 0x0100, 0x78c0, 0x9005, 0x1138, 0x00c6, 0x2660,
16899 + 0x6003, 0x0009, 0x630a, 0x00ce, 0x04b8, 0x080c, 0x8b50, 0x78c3,
16900 + 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036, 0x2079, 0x0140,
16901 + 0x7b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5,
16902 + 0x9006, 0x080c, 0x28a5, 0x2079, 0x0100, 0x7824, 0xd084, 0x0110,
16903 + 0x7827, 0x0001, 0x080c, 0x900f, 0x003e, 0x080c, 0x5b43, 0x00c6,
16904 + 0xb83c, 0x9005, 0x0110, 0x8001, 0xb83e, 0x2660, 0x080c, 0x9554,
16905 + 0x00ce, 0xa867, 0x0103, 0xab7a, 0xa877, 0x0000, 0x080c, 0xb374,
16906 + 0x080c, 0x61a9, 0x080c, 0x8eec, 0x00fe, 0x0005, 0x00b6, 0x00e6,
16907 + 0x00c6, 0x2001, 0x180c, 0x2014, 0xc2e4, 0x2202, 0x2071, 0x19b4,
16908 + 0x7004, 0x9084, 0x0007, 0x0002, 0x803e, 0x8042, 0x8059, 0x8082,
16909 + 0x80c0, 0x803e, 0x8059, 0x803c, 0x080c, 0x0d84, 0x00ce, 0x00ee,
16910 + 0x00be, 0x0005, 0x7024, 0x9065, 0x0148, 0x7020, 0x8001, 0x7022,
16911 + 0x600c, 0x9015, 0x0158, 0x7216, 0x600f, 0x0000, 0x7007, 0x0000,
16912 + 0x7027, 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005, 0x7216, 0x7212,
16913 + 0x0ca8, 0x6010, 0x2058, 0x080c, 0x5b43, 0xb800, 0xc0dc, 0xb802,
16914 + 0x7007, 0x0000, 0x7027, 0x0000, 0x7020, 0x8001, 0x7022, 0x1148,
16915 + 0x2001, 0x180c, 0x2014, 0xd2ec, 0x1180, 0x00ce, 0x00ee, 0x00be,
16916 + 0x0005, 0xb854, 0x9015, 0x0120, 0x721e, 0x080c, 0x8125, 0x0ca8,
16917 + 0x7218, 0x721e, 0x080c, 0x8125, 0x0c80, 0xc2ec, 0x2202, 0x080c,
16918 + 0x820b, 0x0c58, 0x7024, 0x9065, 0x05b8, 0x700c, 0x9c06, 0x1160,
16919 + 0x080c, 0x8eec, 0x600c, 0x9015, 0x0120, 0x720e, 0x600f, 0x0000,
16920 + 0x0448, 0x720e, 0x720a, 0x0430, 0x7014, 0x9c06, 0x1160, 0x080c,
16921 + 0x8eec, 0x600c, 0x9015, 0x0120, 0x7216, 0x600f, 0x0000, 0x00d0,
16922 + 0x7216, 0x7212, 0x00b8, 0x6020, 0x9086, 0x0003, 0x1198, 0x6010,
16923 + 0x2058, 0x080c, 0x5b43, 0xb800, 0xc0dc, 0xb802, 0x080c, 0x8eec,
16924 + 0x701c, 0x9065, 0x0138, 0xb854, 0x9015, 0x0110, 0x721e, 0x0010,
16925 + 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x00be, 0x0005,
16926 + 0x7024, 0x9065, 0x0140, 0x080c, 0x8eec, 0x600c, 0x9015, 0x0158,
16927 + 0x720e, 0x600f, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x00ce,
16928 + 0x00ee, 0x00be, 0x0005, 0x720e, 0x720a, 0x0ca8, 0x00d6, 0x2069,
16929 + 0x19b4, 0x6830, 0x9084, 0x0003, 0x0002, 0x80e3, 0x80e5, 0x8109,
16930 + 0x80e1, 0x080c, 0x0d84, 0x00de, 0x0005, 0x00c6, 0x6840, 0x9086,
16931 + 0x0001, 0x01b8, 0x683c, 0x9065, 0x0130, 0x600c, 0x9015, 0x0170,
16932 + 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011,
16933 + 0x19d3, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, 0x6836,
16934 + 0x0c90, 0x6843, 0x0000, 0x6838, 0x9065, 0x0d68, 0x6003, 0x0003,
16935 + 0x0c50, 0x00c6, 0x9006, 0x6842, 0x6846, 0x684a, 0x683c, 0x9065,
16936 + 0x0160, 0x600c, 0x9015, 0x0130, 0x6a3a, 0x600f, 0x0000, 0x683f,
16937 + 0x0000, 0x0018, 0x683e, 0x683a, 0x6836, 0x00ce, 0x00de, 0x0005,
16938 + 0xc1e5, 0x2001, 0x180c, 0x2102, 0x0005, 0x2001, 0x180c, 0x200c,
16939 + 0xd1ec, 0x0138, 0xc1ec, 0x2102, 0x080c, 0x820b, 0x2001, 0x180c,
16940 + 0x200c, 0x9184, 0x0600, 0x9086, 0x0600, 0x0d50, 0x00d6, 0x2069,
16941 + 0x19b4, 0x6804, 0x9084, 0x0007, 0x0002, 0x8147, 0x81ea, 0x81ea,
16942 + 0x81ea, 0x81ea, 0x81ec, 0x81ea, 0x8145, 0x080c, 0x0d84, 0x6820,
16943 + 0x9005, 0x1110, 0x00de, 0x0005, 0x00c6, 0x680c, 0x9065, 0x0150,
16944 + 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x8256, 0x00ce,
16945 + 0x00de, 0x0005, 0x6814, 0x9065, 0x0150, 0x6807, 0x0001, 0x6826,
16946 + 0x682b, 0x0000, 0x080c, 0x8256, 0x00ce, 0x00de, 0x0005, 0x00b6,
16947 + 0x00e6, 0x6a1c, 0x92dd, 0x0000, 0x0904, 0x81d6, 0xb84c, 0x900d,
16948 + 0x0118, 0xb888, 0x9005, 0x01a0, 0xb854, 0x905d, 0x0120, 0x920e,
16949 + 0x0904, 0x81d6, 0x0028, 0x6818, 0x920e, 0x0904, 0x81d6, 0x2058,
16950 + 0xb84c, 0x900d, 0x0d88, 0xb888, 0x9005, 0x1d70, 0x2b00, 0x681e,
16951 + 0xbb3c, 0xb838, 0x9302, 0x1e40, 0x080c, 0x952b, 0x0904, 0x81d6,
16952 + 0x8318, 0xbb3e, 0x6116, 0x2b10, 0x6212, 0x0096, 0x2148, 0xa880,
16953 + 0x9084, 0x00ff, 0x605e, 0xa883, 0x0000, 0xa884, 0x009e, 0x908a,
16954 + 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0x9318,
16955 + 0x631a, 0x6114, 0x0096, 0x2148, 0xa964, 0x009e, 0x918c, 0x00ff,
16956 + 0x918e, 0x0048, 0x0538, 0x00f6, 0x2c78, 0x2061, 0x0100, 0xbab0,
16957 + 0x629a, 0x2069, 0x0200, 0x2071, 0x0240, 0x080c, 0x8786, 0x2069,
16958 + 0x19b4, 0xbb00, 0xc3dd, 0xbb02, 0x6807, 0x0002, 0x2f18, 0x6b26,
16959 + 0x682b, 0x0000, 0x7823, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040,
16960 + 0x00fe, 0x00ee, 0x00be, 0x00ce, 0x00de, 0x0005, 0x00ee, 0x00be,
16961 + 0x00ce, 0x0cd0, 0xbb00, 0xc3dd, 0xbb02, 0x6807, 0x0006, 0x2f18,
16962 + 0x6b26, 0x682b, 0x0000, 0x080c, 0x9387, 0x00ee, 0x00be, 0x00ce,
16963 + 0x00de, 0x0005, 0x00de, 0x0005, 0x00c6, 0x680c, 0x9065, 0x0138,
16964 + 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x8256, 0x00ce,
16965 + 0x00de, 0x0005, 0x2001, 0x180c, 0x2014, 0xc2ed, 0x2202, 0x00de,
16966 + 0x00fe, 0x0005, 0x2001, 0x180c, 0x2014, 0xd2e4, 0x0120, 0xc2e4,
16967 + 0x2202, 0x080c, 0x8136, 0x00f6, 0x00d6, 0x2069, 0x19b4, 0x6830,
16968 + 0x9086, 0x0000, 0x11f0, 0x2001, 0x180c, 0x200c, 0xd1c4, 0x11e0,
16969 + 0x6838, 0x907d, 0x01b0, 0x6a04, 0x9296, 0x0000, 0x1588, 0x6833,
16970 + 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6,
16971 + 0x2091, 0x2400, 0x002e, 0x080c, 0x1933, 0x1178, 0x012e, 0x080c,
16972 + 0x899e, 0x00de, 0x00fe, 0x0005, 0xc1c4, 0x2102, 0x0066, 0x2031,
16973 + 0x0001, 0x080c, 0x691e, 0x006e, 0x08d8, 0x012e, 0x6843, 0x0000,
16974 + 0x7803, 0x0002, 0x780c, 0x9015, 0x0140, 0x6a3a, 0x780f, 0x0000,
16975 + 0x6833, 0x0000, 0x683f, 0x0000, 0x0c20, 0x683a, 0x6836, 0x0cc0,
16976 + 0x6a04, 0x9296, 0x0006, 0x0958, 0x0804, 0x81fa, 0x6020, 0x9084,
16977 + 0x000f, 0x000b, 0x0005, 0x826a, 0x826f, 0x86ca, 0x874f, 0x826f,
16978 + 0x86ca, 0x874f, 0x826a, 0x826f, 0x826a, 0x826a, 0x826a, 0x826a,
16979 + 0x826a, 0x826a, 0x080c, 0x8026, 0x080c, 0x8125, 0x0005, 0x00b6,
16980 + 0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6,
16981 + 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, 0x6004, 0x908a, 0x0053,
16982 + 0x1a0c, 0x0d84, 0x6110, 0x2158, 0xb9b0, 0x2c78, 0x2061, 0x0100,
16983 + 0x619a, 0x908a, 0x0040, 0x1a04, 0x82db, 0x005b, 0x00fe, 0x00ee,
16984 + 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be,
16985 + 0x0005, 0x8451, 0x848c, 0x84b5, 0x8559, 0x857b, 0x8581, 0x858e,
16986 + 0x8596, 0x85a2, 0x85a8, 0x85b9, 0x85a8, 0x8611, 0x8596, 0x861d,
16987 + 0x8623, 0x85a2, 0x8623, 0x862f, 0x82d9, 0x82d9, 0x82d9, 0x82d9,
16988 + 0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x82d9, 0x8c9a,
16989 + 0x8cb0, 0x8cba, 0x8cda, 0x8d0c, 0x858e, 0x82d9, 0x858e, 0x85a8,
16990 + 0x82d9, 0x84b5, 0x8559, 0x82d9, 0x90fc, 0x85a8, 0x82d9, 0x9118,
16991 + 0x85a8, 0x82d9, 0x85a2, 0x844b, 0x82fc, 0x82d9, 0x912e, 0x919a,
16992 + 0x9271, 0x82d9, 0x927e, 0x858b, 0x92a9, 0x82d9, 0x8d16, 0x92d6,
16993 + 0x82d9, 0x080c, 0x0d84, 0x2100, 0x005b, 0x00fe, 0x00ee, 0x00de,
16994 + 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, 0x015e, 0x00be, 0x0005,
16995 + 0x82fa, 0x82fa, 0x82fa, 0x8322, 0x83ce, 0x83d9, 0x82fa, 0x82fa,
16996 + 0x82fa, 0x8420, 0x842c, 0x833d, 0x82fa, 0x8358, 0x838c, 0x9447,
16997 + 0x948c, 0x85a8, 0x080c, 0x0d84, 0x00d6, 0x0096, 0x080c, 0x8642,
16998 + 0x7003, 0x2414, 0x7007, 0x0018, 0x700b, 0x0800, 0x7814, 0x2048,
16999 + 0xa83c, 0x700e, 0xa850, 0x7022, 0xa854, 0x7026, 0x60c3, 0x0018,
17000 + 0x080c, 0x8b24, 0x009e, 0x00de, 0x0005, 0x7810, 0x00b6, 0x2058,
17001 + 0xb8a0, 0x00be, 0x080c, 0x94d3, 0x1110, 0xd0bc, 0x0110, 0x9085,
17002 + 0x0001, 0x0005, 0x00d6, 0x0096, 0x080c, 0x8642, 0x7003, 0x0500,
17003 + 0x7814, 0x2048, 0xa874, 0x700a, 0xa878, 0x700e, 0xa87c, 0x7012,
17004 + 0xa880, 0x7016, 0xa884, 0x701a, 0xa888, 0x701e, 0x60c3, 0x0010,
17005 + 0x080c, 0x8b24, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x080c,
17006 + 0x8642, 0x7003, 0x0500, 0x7814, 0x2048, 0xa8cc, 0x700a, 0xa8d0,
17007 + 0x700e, 0xa8d4, 0x7012, 0xa8d8, 0x7016, 0xa8dc, 0x701a, 0xa8e0,
17008 + 0x701e, 0x60c3, 0x0010, 0x080c, 0x8b24, 0x009e, 0x00de, 0x0005,
17009 + 0x00d6, 0x0096, 0x0126, 0x2091, 0x8000, 0x080c, 0x8642, 0x20e9,
17010 + 0x0000, 0x2001, 0x1970, 0x2003, 0x0000, 0x7814, 0x2048, 0xa814,
17011 + 0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080,
17012 + 0x001b, 0x2098, 0x2001, 0x1970, 0x0016, 0x200c, 0x2001, 0x0001,
17013 + 0x080c, 0x1ff9, 0x080c, 0xbd44, 0x9006, 0x080c, 0x1ff9, 0x001e,
17014 + 0xa804, 0x9005, 0x0110, 0x2048, 0x0c28, 0x04d9, 0x080c, 0x8b24,
17015 + 0x012e, 0x009e, 0x00de, 0x0005, 0x00d6, 0x0096, 0x0126, 0x2091,
17016 + 0x8000, 0x080c, 0x868d, 0x20e9, 0x0000, 0x2001, 0x1970, 0x2003,
17017 + 0x0000, 0x7814, 0x2048, 0xa86f, 0x0200, 0xa873, 0x0000, 0xa814,
17018 + 0x8003, 0x60c2, 0xa830, 0x20a8, 0xa860, 0x20e0, 0xa85c, 0x9080,
17019 + 0x001b, 0x2098, 0x2001, 0x1970, 0x0016, 0x200c, 0x080c, 0xbd44,
17020 + 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c60, 0x0051, 0x7814,
17021 + 0x2048, 0x080c, 0x0f60, 0x080c, 0x8b24, 0x012e, 0x009e, 0x00de,
17022 + 0x0005, 0x60c0, 0x8004, 0x9084, 0x0003, 0x9005, 0x0130, 0x9082,
17023 + 0x0004, 0x20a3, 0x0000, 0x8000, 0x1de0, 0x0005, 0x080c, 0x8642,
17024 + 0x7003, 0x7800, 0x7808, 0x8007, 0x700a, 0x60c3, 0x0008, 0x0804,
17025 + 0x8b24, 0x00d6, 0x00e6, 0x080c, 0x868d, 0x7814, 0x9084, 0xff00,
17026 + 0x2073, 0x0200, 0x8e70, 0x8e70, 0x9095, 0x0010, 0x2272, 0x8e70,
17027 + 0x2073, 0x0034, 0x8e70, 0x2069, 0x1805, 0x20a9, 0x0004, 0x2d76,
17028 + 0x8d68, 0x8e70, 0x1f04, 0x83ef, 0x2069, 0x1801, 0x20a9, 0x0004,
17029 + 0x2d76, 0x8d68, 0x8e70, 0x1f04, 0x83f8, 0x2069, 0x1980, 0x9086,
17030 + 0xdf00, 0x0110, 0x2069, 0x199a, 0x20a9, 0x001a, 0x9e86, 0x0260,
17031 + 0x1148, 0x00c6, 0x2061, 0x0200, 0x6010, 0x8000, 0x6012, 0x00ce,
17032 + 0x2071, 0x0240, 0x2d04, 0x8007, 0x2072, 0x8d68, 0x8e70, 0x1f04,
17033 + 0x8406, 0x60c3, 0x004c, 0x080c, 0x8b24, 0x00ee, 0x00de, 0x0005,
17034 + 0x080c, 0x8642, 0x7003, 0x6300, 0x7007, 0x0028, 0x7808, 0x700e,
17035 + 0x60c3, 0x0008, 0x0804, 0x8b24, 0x00d6, 0x0026, 0x0016, 0x080c,
17036 + 0x868d, 0x7003, 0x0200, 0x7814, 0x700e, 0x00e6, 0x9ef0, 0x0004,
17037 + 0x2009, 0x0001, 0x2011, 0x000c, 0x2073, 0x0800, 0x8e70, 0x2073,
17038 + 0x0000, 0x00ee, 0x7206, 0x710a, 0x62c2, 0x080c, 0x8b24, 0x001e,
17039 + 0x002e, 0x00de, 0x0005, 0x2001, 0x1816, 0x2004, 0x609a, 0x0804,
17040 + 0x8b24, 0x080c, 0x8642, 0x7003, 0x5200, 0x2069, 0x1852, 0x6804,
17041 + 0xd084, 0x0130, 0x6828, 0x0016, 0x080c, 0x2430, 0x710e, 0x001e,
17042 + 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000,
17043 + 0x20a1, 0x0250, 0x4003, 0x20a9, 0x0004, 0x2099, 0x1801, 0x20a1,
17044 + 0x0254, 0x4003, 0x080c, 0x94d3, 0x1120, 0xb8a0, 0x9082, 0x007f,
17045 + 0x0248, 0x2001, 0x181d, 0x2004, 0x7032, 0x2001, 0x181e, 0x2004,
17046 + 0x7036, 0x0030, 0x2001, 0x1816, 0x2004, 0x9084, 0x00ff, 0x7036,
17047 + 0x60c3, 0x001c, 0x0804, 0x8b24, 0x080c, 0x8642, 0x7003, 0x0500,
17048 + 0x080c, 0x94d3, 0x1120, 0xb8a0, 0x9082, 0x007f, 0x0248, 0x2001,
17049 + 0x181d, 0x2004, 0x700a, 0x2001, 0x181e, 0x2004, 0x700e, 0x0030,
17050 + 0x2001, 0x1816, 0x2004, 0x9084, 0x00ff, 0x700e, 0x20a9, 0x0004,
17051 + 0x20e1, 0x0001, 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0250,
17052 + 0x4003, 0x60c3, 0x0010, 0x0804, 0x8b24, 0x080c, 0x8642, 0x9006,
17053 + 0x080c, 0x5ef7, 0xb8a0, 0x9086, 0x007e, 0x1130, 0x7003, 0x0400,
17054 + 0x620c, 0xc2b4, 0x620e, 0x0058, 0x7814, 0x0096, 0x904d, 0x0120,
17055 + 0x9006, 0xa89a, 0xa8a6, 0xa8aa, 0x009e, 0x7003, 0x0300, 0xb8a0,
17056 + 0x9086, 0x007e, 0x1904, 0x8520, 0x00d6, 0x2069, 0x193b, 0x2001,
17057 + 0x1836, 0x2004, 0xd0a4, 0x0178, 0x6800, 0x700a, 0x6808, 0x9084,
17058 + 0x2000, 0x7012, 0x680c, 0x7016, 0x701f, 0x2710, 0x6818, 0x7022,
17059 + 0x681c, 0x7026, 0x0080, 0x6800, 0x700a, 0x6804, 0x700e, 0x6808,
17060 + 0x080c, 0x6877, 0x1118, 0x9084, 0x37ff, 0x0010, 0x9084, 0x3fff,
17061 + 0x7012, 0x680c, 0x7016, 0x00de, 0x20a9, 0x0004, 0x20e1, 0x0001,
17062 + 0x2099, 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, 0x20a9,
17063 + 0x0004, 0x2099, 0x1801, 0x20a1, 0x025a, 0x4003, 0x00d6, 0x080c,
17064 + 0x934e, 0x2069, 0x1943, 0x2071, 0x024e, 0x6800, 0xc0dd, 0x7002,
17065 + 0x080c, 0x4dee, 0xd0e4, 0x0110, 0x680c, 0x700e, 0x00de, 0x04a8,
17066 + 0x2001, 0x1836, 0x2004, 0xd0a4, 0x0170, 0x0016, 0x2001, 0x193c,
17067 + 0x200c, 0x60e0, 0x9106, 0x0130, 0x2100, 0x60e3, 0x0000, 0x080c,
17068 + 0x2471, 0x61e2, 0x001e, 0x20e1, 0x0001, 0x2099, 0x193b, 0x20e9,
17069 + 0x0000, 0x20a1, 0x024e, 0x20a9, 0x0008, 0x4003, 0x20a9, 0x0004,
17070 + 0x2099, 0x1805, 0x20a1, 0x0256, 0x4003, 0x20a9, 0x0004, 0x2099,
17071 + 0x1801, 0x20a1, 0x025a, 0x4003, 0x080c, 0x934e, 0x20a1, 0x024e,
17072 + 0x20a9, 0x0008, 0x2099, 0x1943, 0x4003, 0x60c3, 0x0074, 0x0804,
17073 + 0x8b24, 0x080c, 0x8642, 0x7003, 0x2010, 0x7007, 0x0014, 0x700b,
17074 + 0x0800, 0x700f, 0x2000, 0x9006, 0x00f6, 0x2079, 0x1852, 0x7904,
17075 + 0x00fe, 0xd1ac, 0x1110, 0x9085, 0x0020, 0xd1a4, 0x0110, 0x9085,
17076 + 0x0010, 0x9085, 0x0002, 0x00d6, 0x0804, 0x85f2, 0x7026, 0x60c3,
17077 + 0x0014, 0x0804, 0x8b24, 0x080c, 0x8642, 0x7003, 0x5000, 0x0804,
17078 + 0x84cf, 0x080c, 0x8642, 0x7003, 0x2110, 0x7007, 0x0014, 0x60c3,
17079 + 0x0014, 0x0804, 0x8b24, 0x080c, 0x8684, 0x0010, 0x080c, 0x868d,
17080 + 0x7003, 0x0200, 0x60c3, 0x0004, 0x0804, 0x8b24, 0x080c, 0x868d,
17081 + 0x7003, 0x0100, 0x700b, 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008,
17082 + 0x0804, 0x8b24, 0x080c, 0x868d, 0x7003, 0x0200, 0x0804, 0x84cf,
17083 + 0x080c, 0x868d, 0x7003, 0x0100, 0x782c, 0x9005, 0x0110, 0x700a,
17084 + 0x0010, 0x700b, 0x0003, 0x7814, 0x700e, 0x60c3, 0x0008, 0x0804,
17085 + 0x8b24, 0x00d6, 0x080c, 0x868d, 0x7003, 0x0210, 0x7007, 0x0014,
17086 + 0x700b, 0x0800, 0xb894, 0x9086, 0x0014, 0x1198, 0xb99c, 0x9184,
17087 + 0x0030, 0x0190, 0xb998, 0x9184, 0xc000, 0x1140, 0xd1ec, 0x0118,
17088 + 0x700f, 0x2100, 0x0058, 0x700f, 0x0100, 0x0040, 0x700f, 0x0400,
17089 + 0x0028, 0x700f, 0x0700, 0x0010, 0x700f, 0x0800, 0x00f6, 0x2079,
17090 + 0x1852, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0x9085, 0x0020, 0xd1a4,
17091 + 0x0110, 0x9085, 0x0010, 0x2009, 0x1874, 0x210c, 0xd184, 0x1110,
17092 + 0x9085, 0x0002, 0x0026, 0x2009, 0x1872, 0x210c, 0xd1e4, 0x0150,
17093 + 0xc0c5, 0xbabc, 0xd28c, 0x1108, 0xc0cd, 0x9094, 0x0030, 0x9296,
17094 + 0x0010, 0x0140, 0xd1ec, 0x0130, 0x9094, 0x0030, 0x9296, 0x0010,
17095 + 0x0108, 0xc0bd, 0x002e, 0x7026, 0x60c3, 0x0014, 0x00de, 0x0804,
17096 + 0x8b24, 0x080c, 0x868d, 0x7003, 0x0210, 0x7007, 0x0014, 0x700f,
17097 + 0x0100, 0x60c3, 0x0014, 0x0804, 0x8b24, 0x080c, 0x868d, 0x7003,
17098 + 0x0200, 0x0804, 0x8455, 0x080c, 0x868d, 0x7003, 0x0100, 0x700b,
17099 + 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x080c,
17100 + 0x868d, 0x7003, 0x0100, 0x700b, 0x000b, 0x60c3, 0x0008, 0x0804,
17101 + 0x8b24, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x3200, 0x2021,
17102 + 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x2200,
17103 + 0x2021, 0x0100, 0x080c, 0x9363, 0xb810, 0x9305, 0x7002, 0xb814,
17104 + 0x7006, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878, 0x700e, 0x9485,
17105 + 0x0029, 0x7012, 0x004e, 0x003e, 0x00de, 0x080c, 0x8b12, 0x721a,
17106 + 0x9f95, 0x0000, 0x7222, 0x7027, 0xffff, 0x2071, 0x024c, 0x002e,
17107 + 0x0005, 0x0026, 0x080c, 0x9363, 0x7003, 0x02ff, 0x7007, 0xfffc,
17108 + 0x00d6, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878, 0x700e, 0x00de,
17109 + 0x7013, 0x2029, 0x0c10, 0x7003, 0x0100, 0x7007, 0x0000, 0x700b,
17110 + 0xfc02, 0x700f, 0x0000, 0x0005, 0x0026, 0x00d6, 0x0036, 0x0046,
17111 + 0x2019, 0x3300, 0x2021, 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036,
17112 + 0x0046, 0x2019, 0x2300, 0x2021, 0x0100, 0x080c, 0x9363, 0xb810,
17113 + 0x9305, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0xb810, 0x9005,
17114 + 0x1140, 0xb814, 0x9005, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe,
17115 + 0x0020, 0x6874, 0x700a, 0x6878, 0x700e, 0x0000, 0x9485, 0x0098,
17116 + 0x7012, 0x004e, 0x003e, 0x00de, 0x080c, 0x8b12, 0x721a, 0x7a08,
17117 + 0x7222, 0x2f10, 0x7226, 0x2071, 0x024c, 0x002e, 0x0005, 0x080c,
17118 + 0x8b12, 0x721a, 0x7a08, 0x7222, 0x7814, 0x7026, 0x2071, 0x024c,
17119 + 0x002e, 0x0005, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2069,
17120 + 0x0200, 0x2071, 0x0240, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d84,
17121 + 0x908a, 0x0092, 0x1a0c, 0x0d84, 0x6110, 0x2158, 0xb9b0, 0x2c78,
17122 + 0x2061, 0x0100, 0x619a, 0x9082, 0x0085, 0x0033, 0x00fe, 0x00ee,
17123 + 0x00de, 0x00ce, 0x00be, 0x0005, 0x86fb, 0x8700, 0x870b, 0x86f9,
17124 + 0x86f9, 0x86f9, 0x86fb, 0x86f9, 0x86f9, 0x86f9, 0x86f9, 0x86f9,
17125 + 0x86f9, 0x080c, 0x0d84, 0x00c1, 0x60c3, 0x0000, 0x0804, 0x8b24,
17126 + 0x0431, 0x7808, 0x700a, 0x7814, 0x700e, 0x7017, 0xffff, 0x60c3,
17127 + 0x000c, 0x0804, 0x8b24, 0x0479, 0x7003, 0x0003, 0x7007, 0x0300,
17128 + 0x60c3, 0x0004, 0x0804, 0x8b24, 0x0026, 0x080c, 0x9363, 0xb810,
17129 + 0x9085, 0x8100, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874,
17130 + 0x700a, 0x6878, 0x700e, 0x7013, 0x0009, 0x0804, 0x865d, 0x0026,
17131 + 0x080c, 0x9363, 0xb810, 0x9085, 0x8400, 0x7002, 0xb814, 0x7006,
17132 + 0x2069, 0x1800, 0x6874, 0x700a, 0x6878, 0x700e, 0x2001, 0x0099,
17133 + 0x7012, 0x0804, 0x86bf, 0x0026, 0x080c, 0x9363, 0xb810, 0x9085,
17134 + 0x8500, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874, 0x700a,
17135 + 0x6878, 0x700e, 0x2001, 0x0099, 0x7012, 0x0804, 0x86bf, 0x00b6,
17136 + 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2c78, 0x2069, 0x0200, 0x2071,
17137 + 0x0240, 0x7804, 0x908a, 0x0040, 0x0a0c, 0x0d84, 0x908a, 0x0054,
17138 + 0x1a0c, 0x0d84, 0x7910, 0x2158, 0xb9b0, 0x2061, 0x0100, 0x619a,
17139 + 0x9082, 0x0040, 0x0033, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be,
17140 + 0x0005, 0x8786, 0x882d, 0x8800, 0x894f, 0x8784, 0x8784, 0x8784,
17141 + 0x8784, 0x8784, 0x8784, 0x8784, 0x8eb9, 0x8ec5, 0x8ed1, 0x8edd,
17142 + 0x8784, 0x92b5, 0x8784, 0x8ead, 0x080c, 0x0d84, 0x0096, 0x780b,
17143 + 0xffff, 0x080c, 0x87dc, 0x7914, 0x2148, 0xa978, 0x7956, 0x7132,
17144 + 0xa97c, 0x9184, 0x000f, 0x1118, 0x2001, 0x0005, 0x0040, 0xd184,
17145 + 0x0118, 0x2001, 0x0004, 0x0018, 0x9084, 0x0006, 0x8004, 0x2010,
17146 + 0x785c, 0x9084, 0x00ff, 0x8007, 0x9205, 0x7042, 0xd1ac, 0x0128,
17147 + 0x7047, 0x0002, 0x080c, 0x150d, 0x0050, 0xd1b4, 0x0118, 0x7047,
17148 + 0x0001, 0x0028, 0x7047, 0x0000, 0x9016, 0x2230, 0x0010, 0xaab0,
17149 + 0xaeac, 0x726a, 0x766e, 0x20a9, 0x0008, 0x20e9, 0x0000, 0xa860,
17150 + 0x20e0, 0xa85c, 0x9080, 0x0023, 0x2098, 0x20a1, 0x0252, 0x2069,
17151 + 0x0200, 0x6813, 0x0018, 0x4003, 0x6813, 0x0008, 0x60c3, 0x0020,
17152 + 0x6017, 0x0009, 0x2001, 0x19d0, 0x2003, 0x07d0, 0x2001, 0x19cf,
17153 + 0x2003, 0x0009, 0x009e, 0x0005, 0x6813, 0x0008, 0xba8c, 0x8210,
17154 + 0xb8bc, 0xd084, 0x0128, 0x7a46, 0x7b14, 0x7b4a, 0x722e, 0x732a,
17155 + 0x9294, 0x00ff, 0xba8e, 0x8217, 0x721a, 0xba10, 0x9295, 0x0600,
17156 + 0x7202, 0xba14, 0x7206, 0x2069, 0x1800, 0x6a74, 0x720a, 0x6a78,
17157 + 0x720e, 0x7013, 0x0829, 0x2f10, 0x7222, 0x7027, 0xffff, 0x0005,
17158 + 0x00d6, 0x0096, 0x0081, 0x7814, 0x2048, 0xa890, 0x7002, 0xa88c,
17159 + 0x7006, 0xa8b0, 0x700a, 0xa8ac, 0x700e, 0x60c3, 0x000c, 0x009e,
17160 + 0x00de, 0x0804, 0x8b24, 0x6813, 0x0008, 0xb810, 0x9085, 0x0500,
17161 + 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878,
17162 + 0x700e, 0x7013, 0x0889, 0x080c, 0x8b12, 0x721a, 0x7a08, 0x7222,
17163 + 0x2f10, 0x7226, 0x2071, 0x024c, 0x0005, 0x00d6, 0x0096, 0x080c,
17164 + 0x892d, 0x7814, 0x2048, 0x080c, 0xb0ab, 0x1130, 0x7814, 0x9084,
17165 + 0x0700, 0x8007, 0x0033, 0x0010, 0x9006, 0x001b, 0x009e, 0x00de,
17166 + 0x0005, 0x884b, 0x88b4, 0x88c4, 0x88ea, 0x88f6, 0x8907, 0x890f,
17167 + 0x8849, 0x080c, 0x0d84, 0x0016, 0x0036, 0xa97c, 0x918c, 0x0003,
17168 + 0x0118, 0x9186, 0x0003, 0x1198, 0xaba8, 0x7824, 0xd0cc, 0x1168,
17169 + 0x7316, 0xa898, 0x701a, 0xa894, 0x701e, 0x003e, 0x001e, 0x2001,
17170 + 0x197e, 0x2004, 0x60c2, 0x0804, 0x8b24, 0xc3e5, 0x0c88, 0x9186,
17171 + 0x0001, 0x190c, 0x0d84, 0xaba8, 0x7824, 0xd0cc, 0x1904, 0x88b1,
17172 + 0x7316, 0xa898, 0x701a, 0xa894, 0x701e, 0xa8a4, 0x7026, 0xa8ac,
17173 + 0x702e, 0x2009, 0x0018, 0x9384, 0x0300, 0x0570, 0xd3c4, 0x0110,
17174 + 0xa8ac, 0x9108, 0xd3cc, 0x0110, 0xa8a4, 0x9108, 0x6810, 0x9085,
17175 + 0x0010, 0x6812, 0x2011, 0x0258, 0x20e9, 0x0000, 0x22a0, 0x0156,
17176 + 0x20a9, 0x0008, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x002c, 0x2098,
17177 + 0x4003, 0x6810, 0x8000, 0x6812, 0x2011, 0x0240, 0x22a0, 0x20a9,
17178 + 0x0005, 0x4003, 0x6810, 0xc084, 0x6812, 0x015e, 0x9184, 0x0003,
17179 + 0x0118, 0x2019, 0x0245, 0x201a, 0x61c2, 0x003e, 0x001e, 0x0804,
17180 + 0x8b24, 0xc3e5, 0x0804, 0x8870, 0x2011, 0x0008, 0x2001, 0x180e,
17181 + 0x2004, 0xd0a4, 0x0110, 0x2011, 0x0028, 0x7824, 0xd0cc, 0x1110,
17182 + 0x7216, 0x0470, 0x0ce8, 0xc2e5, 0x2011, 0x0302, 0x0016, 0x782c,
17183 + 0x701a, 0x7930, 0x711e, 0x9105, 0x0108, 0xc2dd, 0x001e, 0x7824,
17184 + 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x7027, 0x0012, 0x702f, 0x0008,
17185 + 0x7043, 0x7000, 0x7047, 0x0500, 0x704f, 0x000a, 0x2069, 0x0200,
17186 + 0x6813, 0x0009, 0x2071, 0x0240, 0x700b, 0x2500, 0x60c3, 0x0032,
17187 + 0x0804, 0x8b24, 0x2011, 0x0028, 0x7824, 0xd0cc, 0x1128, 0x7216,
17188 + 0x60c3, 0x0018, 0x0804, 0x8b24, 0x0cd0, 0xc2e5, 0x2011, 0x0100,
17189 + 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x702f, 0x0008, 0x7858,
17190 + 0x9084, 0x00ff, 0x7036, 0x60c3, 0x0020, 0x0804, 0x8b24, 0x2011,
17191 + 0x0008, 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x0c08, 0x0036,
17192 + 0x7b14, 0x9384, 0xff00, 0x7816, 0x9384, 0x00ff, 0x8001, 0x1138,
17193 + 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x003e, 0x0888, 0x0046,
17194 + 0x2021, 0x0800, 0x0006, 0x7824, 0xd0cc, 0x000e, 0x0108, 0xc4e5,
17195 + 0x7416, 0x004e, 0x701e, 0x003e, 0x0818, 0x00d6, 0x6813, 0x0008,
17196 + 0xb810, 0x9085, 0x0700, 0x7002, 0xb814, 0x7006, 0x2069, 0x1800,
17197 + 0x6874, 0x700a, 0x6878, 0x700e, 0x7824, 0xd0cc, 0x1168, 0x7013,
17198 + 0x0898, 0x080c, 0x8b12, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226,
17199 + 0x2071, 0x024c, 0x00de, 0x0005, 0x7013, 0x0889, 0x0c90, 0x0016,
17200 + 0x7814, 0x9084, 0x0700, 0x8007, 0x0013, 0x001e, 0x0005, 0x895f,
17201 + 0x895f, 0x8961, 0x895f, 0x895f, 0x895f, 0x897b, 0x895f, 0x080c,
17202 + 0x0d84, 0x7914, 0x918c, 0x08ff, 0x918d, 0xf600, 0x7916, 0x2009,
17203 + 0x0003, 0x00b9, 0x2069, 0x1852, 0x6804, 0xd0bc, 0x0130, 0x682c,
17204 + 0x9084, 0x00ff, 0x8007, 0x7032, 0x0010, 0x7033, 0x3f00, 0x60c3,
17205 + 0x0001, 0x0804, 0x8b24, 0x2009, 0x0003, 0x0019, 0x7033, 0x7f00,
17206 + 0x0cb0, 0x0016, 0x080c, 0x9363, 0x001e, 0xb810, 0x9085, 0x0100,
17207 + 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6a74, 0x720a, 0x6a78,
17208 + 0x720e, 0x7013, 0x0888, 0x918d, 0x0008, 0x7116, 0x080c, 0x8b12,
17209 + 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x0005, 0x00b6, 0x0096,
17210 + 0x00e6, 0x00d6, 0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100,
17211 + 0x2071, 0x1800, 0x7158, 0x7810, 0x2058, 0xb8a0, 0x2028, 0xb910,
17212 + 0xba14, 0x7374, 0x7478, 0x7820, 0x90be, 0x0006, 0x0904, 0x8a81,
17213 + 0x90be, 0x000a, 0x1904, 0x8a3d, 0x609f, 0x0000, 0x7814, 0x2048,
17214 + 0xa87c, 0xd0fc, 0x05c8, 0xaf90, 0x9784, 0xff00, 0x9105, 0x6062,
17215 + 0x873f, 0x9784, 0xff00, 0x0006, 0x7814, 0x2048, 0xa878, 0x9005,
17216 + 0x000e, 0x1160, 0xaf94, 0x87ff, 0x0510, 0x2039, 0x0098, 0x9705,
17217 + 0x6072, 0x7808, 0x6082, 0x2f00, 0x6086, 0x0038, 0x9185, 0x2200,
17218 + 0x6062, 0x6073, 0x0129, 0x6077, 0x0000, 0x609f, 0x0000, 0x2001,
17219 + 0x1836, 0x2004, 0xd0ac, 0x11a8, 0xd09c, 0x0130, 0x7814, 0x2048,
17220 + 0xa874, 0x9082, 0x0080, 0x1268, 0xb814, 0x609e, 0x0050, 0x2039,
17221 + 0x0029, 0x9705, 0x6072, 0x0c48, 0x9185, 0x0200, 0x6062, 0x6073,
17222 + 0x2029, 0xa87c, 0xd0fc, 0x0118, 0xaf94, 0x87ff, 0x1120, 0x2f00,
17223 + 0x6082, 0x7808, 0x6086, 0x6266, 0x636a, 0x646e, 0x6077, 0x0000,
17224 + 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x607f,
17225 + 0x0000, 0xa838, 0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844,
17226 + 0x60ca, 0xb86c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x080c,
17227 + 0x9348, 0x2009, 0x07d0, 0x60c4, 0x9084, 0xfff0, 0x9005, 0x0110,
17228 + 0x2009, 0x1b58, 0x080c, 0x7898, 0x003e, 0x004e, 0x005e, 0x00ce,
17229 + 0x00de, 0x00ee, 0x009e, 0x00be, 0x0005, 0x7804, 0x9086, 0x0040,
17230 + 0x0904, 0x8abd, 0x9185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e,
17231 + 0x6073, 0x0809, 0x6077, 0x0008, 0x60af, 0x95d5, 0x60d7, 0x0000,
17232 + 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007, 0x607a, 0x607f,
17233 + 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7814, 0x2048, 0xa838,
17234 + 0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844, 0x60ca, 0xb86c,
17235 + 0x60ce, 0xbab0, 0x629e, 0x080c, 0x9348, 0x2009, 0x07d0, 0x60c4,
17236 + 0x9084, 0xfff0, 0x9005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7898,
17237 + 0x003e, 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x009e, 0x00be,
17238 + 0x0005, 0x7814, 0x2048, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002,
17239 + 0x0904, 0x8ad9, 0x9185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e,
17240 + 0x6073, 0x0880, 0x6077, 0x0008, 0xb88c, 0x8000, 0x9084, 0x00ff,
17241 + 0xb88e, 0x8007, 0x607a, 0x7838, 0x607e, 0x2f00, 0x6086, 0x7808,
17242 + 0x6082, 0xa890, 0x608a, 0xa88c, 0x608e, 0xa8b0, 0x60c6, 0xa8ac,
17243 + 0x60ca, 0xa8ac, 0x7930, 0x9108, 0x7932, 0xa8b0, 0x792c, 0x9109,
17244 + 0x792e, 0xb86c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xbab0,
17245 + 0x629e, 0x080c, 0x9325, 0x0804, 0x8a6d, 0xb8bc, 0xd084, 0x0148,
17246 + 0xb88c, 0x7814, 0x2048, 0xb88c, 0x7846, 0xa836, 0x2900, 0xa83a,
17247 + 0xb04a, 0x9185, 0x0600, 0x6062, 0x6266, 0x636a, 0x646e, 0x6073,
17248 + 0x0829, 0x6077, 0x0000, 0x60af, 0x9575, 0x60d7, 0x0000, 0x0804,
17249 + 0x8a50, 0x9185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x7824,
17250 + 0xd0cc, 0x7826, 0x0118, 0x6073, 0x0889, 0x0010, 0x6073, 0x0898,
17251 + 0x6077, 0x0000, 0xb88c, 0x8000, 0x9084, 0x00ff, 0xb88e, 0x8007,
17252 + 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0xa838,
17253 + 0x608a, 0xa834, 0x608e, 0xa848, 0x60c6, 0xa844, 0x60ca, 0xb86c,
17254 + 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xbab0, 0x629e, 0x7824,
17255 + 0xd0cc, 0x0120, 0x080c, 0x9348, 0x0804, 0x8a6d, 0x080c, 0x9325,
17256 + 0x0804, 0x8a6d, 0x7a10, 0x00b6, 0x2258, 0xba8c, 0x8210, 0x9294,
17257 + 0x00ff, 0xba8e, 0x00be, 0x8217, 0x0005, 0x00d6, 0x2069, 0x19b4,
17258 + 0x6843, 0x0001, 0x00de, 0x0005, 0x60a3, 0x0056, 0x60a7, 0x9575,
17259 + 0x00f1, 0x080c, 0x788a, 0x0005, 0x0016, 0x2001, 0x180c, 0x200c,
17260 + 0x9184, 0x0600, 0x9086, 0x0600, 0x0128, 0x0089, 0x080c, 0x788a,
17261 + 0x001e, 0x0005, 0xc1e5, 0x2001, 0x180c, 0x2102, 0x2001, 0x19b5,
17262 + 0x2003, 0x0000, 0x2001, 0x19bd, 0x2003, 0x0000, 0x0c88, 0x0006,
17263 + 0x6014, 0x9084, 0x1804, 0x9085, 0x0009, 0x6016, 0x000e, 0x0005,
17264 + 0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, 0x61a4, 0x60a7, 0x95f5,
17265 + 0x6014, 0x9084, 0x1804, 0x9085, 0x0008, 0x6016, 0x000e, 0xa001,
17266 + 0xa001, 0xa001, 0x61a6, 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6,
17267 + 0x0016, 0x0026, 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x6877,
17268 + 0x1198, 0x2001, 0x19d0, 0x2004, 0x9005, 0x15d0, 0x0066, 0x2031,
17269 + 0x0001, 0x080c, 0x691e, 0x006e, 0x1118, 0x080c, 0x788a, 0x0480,
17270 + 0x00c6, 0x2061, 0x19b4, 0x00f0, 0x6904, 0x9194, 0x4000, 0x0568,
17271 + 0x0839, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5,
17272 + 0x00c6, 0x2061, 0x19b4, 0x6128, 0x9192, 0x00c8, 0x1258, 0x8108,
17273 + 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, 0x788a, 0x080c,
17274 + 0x8b47, 0x0070, 0x6124, 0x91e5, 0x0000, 0x0140, 0x080c, 0xcd1f,
17275 + 0x080c, 0x7893, 0x2009, 0x0014, 0x080c, 0x95ce, 0x00ce, 0x0000,
17276 + 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, 0x19d0, 0x2004,
17277 + 0x9005, 0x1db0, 0x00c6, 0x2061, 0x19b4, 0x6128, 0x9192, 0x0003,
17278 + 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x788a, 0x080c, 0x55a0,
17279 + 0x0c38, 0x0096, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, 0x080c,
17280 + 0x78a0, 0x2071, 0x19b4, 0x713c, 0x81ff, 0x0904, 0x8c3c, 0x2061,
17281 + 0x0100, 0x2069, 0x0140, 0x080c, 0x6877, 0x11b0, 0x0036, 0x2019,
17282 + 0x0002, 0x080c, 0x8dfe, 0x003e, 0x713c, 0x2160, 0x080c, 0xcd1f,
17283 + 0x2009, 0x004a, 0x080c, 0x95ce, 0x0066, 0x2031, 0x0001, 0x080c,
17284 + 0x691e, 0x006e, 0x0804, 0x8c3c, 0x6904, 0xd1f4, 0x0904, 0x8c43,
17285 + 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x00c6,
17286 + 0x703c, 0x9065, 0x090c, 0x0d84, 0x6020, 0x00ce, 0x9086, 0x0006,
17287 + 0x1528, 0x61c8, 0x60c4, 0x9105, 0x1508, 0x2009, 0x180c, 0x2104,
17288 + 0xd0d4, 0x01e0, 0x6214, 0x9294, 0x1800, 0x1128, 0x6224, 0x9294,
17289 + 0x0002, 0x1510, 0x0030, 0xc0d4, 0x200a, 0xd0cc, 0x0110, 0x080c,
17290 + 0x2809, 0x6014, 0x9084, 0xe7fd, 0x9085, 0x0010, 0x6016, 0x703c,
17291 + 0x2060, 0x2009, 0x0049, 0x080c, 0x95ce, 0x0070, 0x0036, 0x2019,
17292 + 0x0001, 0x080c, 0x8dfe, 0x003e, 0x713c, 0x2160, 0x080c, 0xcd1f,
17293 + 0x2009, 0x004a, 0x080c, 0x95ce, 0x002e, 0x001e, 0x00ee, 0x00de,
17294 + 0x00ce, 0x009e, 0x0005, 0xd1ec, 0x1904, 0x8bf8, 0x0804, 0x8bff,
17295 + 0x0026, 0x00e6, 0x2071, 0x19b4, 0x7048, 0xd084, 0x01c0, 0x713c,
17296 + 0x81ff, 0x01a8, 0x2071, 0x0100, 0x9188, 0x0008, 0x2114, 0x928e,
17297 + 0x0006, 0x1138, 0x7014, 0x9084, 0x1984, 0x9085, 0x0012, 0x7016,
17298 + 0x0030, 0x7014, 0x9084, 0x1984, 0x9085, 0x0016, 0x7016, 0x00ee,
17299 + 0x002e, 0x0005, 0x00b6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056,
17300 + 0x0046, 0x0006, 0x0126, 0x2091, 0x8000, 0x6010, 0x2058, 0xbca0,
17301 + 0x2071, 0x19b4, 0x7018, 0x2058, 0x8bff, 0x0190, 0xb8a0, 0x9406,
17302 + 0x0118, 0xb854, 0x2058, 0x0cc0, 0x6014, 0x0096, 0x2048, 0xac6c,
17303 + 0xad70, 0xae78, 0x009e, 0x080c, 0x5d3f, 0x0110, 0x9085, 0x0001,
17304 + 0x012e, 0x000e, 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee,
17305 + 0x00be, 0x0005, 0x080c, 0x8642, 0x7003, 0x1200, 0x7820, 0x9086,
17306 + 0x0004, 0x1110, 0x6098, 0x0018, 0x2001, 0x1816, 0x2004, 0x700e,
17307 + 0x7838, 0x7012, 0x783c, 0x7016, 0x60c3, 0x002c, 0x0804, 0x8b24,
17308 + 0x080c, 0x8642, 0x7003, 0x0f00, 0x7808, 0x700e, 0x60c3, 0x0008,
17309 + 0x0804, 0x8b24, 0x0156, 0x080c, 0x868d, 0x7003, 0x0200, 0x2011,
17310 + 0x1848, 0x63f0, 0x2312, 0x20a9, 0x0006, 0x2011, 0x1840, 0x2019,
17311 + 0x1841, 0x9ef0, 0x0002, 0x2376, 0x8e70, 0x2276, 0x8e70, 0x9398,
17312 + 0x0002, 0x9290, 0x0002, 0x1f04, 0x8ccb, 0x60c3, 0x001c, 0x015e,
17313 + 0x0804, 0x8b24, 0x0016, 0x0026, 0x080c, 0x8669, 0x080c, 0x867b,
17314 + 0x9e80, 0x0004, 0x20e9, 0x0000, 0x20a0, 0x7814, 0x0096, 0x2048,
17315 + 0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021, 0x2098,
17316 + 0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, 0x9192, 0x0010, 0x1250,
17317 + 0x4003, 0x9080, 0x0004, 0x8003, 0x60c2, 0x080c, 0x8b24, 0x002e,
17318 + 0x001e, 0x0005, 0x20a9, 0x0010, 0x4003, 0x080c, 0x934e, 0x20a1,
17319 + 0x0240, 0x22a8, 0x4003, 0x0c68, 0x080c, 0x8642, 0x7003, 0x6200,
17320 + 0x7808, 0x700e, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x0016, 0x0026,
17321 + 0x080c, 0x8642, 0x20e9, 0x0000, 0x20a1, 0x024c, 0x7814, 0x0096,
17322 + 0x2048, 0xa800, 0x2048, 0xa860, 0x20e0, 0xa85c, 0x9080, 0x0021,
17323 + 0x2098, 0x009e, 0x7808, 0x9088, 0x0002, 0x21a8, 0x4003, 0x8003,
17324 + 0x60c2, 0x080c, 0x8b24, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00c6,
17325 + 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4, 0x700c, 0x2060,
17326 + 0x8cff, 0x0178, 0x080c, 0xb295, 0x1110, 0x080c, 0x9e99, 0x600c,
17327 + 0x0006, 0x080c, 0xb4de, 0x080c, 0x9554, 0x080c, 0x8eec, 0x00ce,
17328 + 0x0c78, 0x2c00, 0x700e, 0x700a, 0x012e, 0x000e, 0x00ce, 0x00ee,
17329 + 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026,
17330 + 0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x180c, 0x200c, 0x918c,
17331 + 0xe7ff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x19b4,
17332 + 0x7024, 0x2060, 0x8cff, 0x0904, 0x8db6, 0x080c, 0x8b50, 0x6ac0,
17333 + 0x68c3, 0x0000, 0x080c, 0x7893, 0x00c6, 0x2061, 0x0100, 0x080c,
17334 + 0x9367, 0x00ce, 0x2009, 0x0013, 0x080c, 0x95ce, 0x20a9, 0x01f4,
17335 + 0x6824, 0xd094, 0x0170, 0x6827, 0x0004, 0x7804, 0x9084, 0x4000,
17336 + 0x01d0, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5,
17337 + 0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, 0x8d88,
17338 + 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5,
17339 + 0x9006, 0x080c, 0x28a5, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce,
17340 + 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001, 0x1800,
17341 + 0x2004, 0x9096, 0x0001, 0x05c0, 0x9096, 0x0004, 0x05a8, 0x080c,
17342 + 0x7893, 0x6814, 0x9084, 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817,
17343 + 0x0008, 0x68c3, 0x0000, 0x2011, 0x554d, 0x080c, 0x781a, 0x20a9,
17344 + 0x01f4, 0x6824, 0xd094, 0x0170, 0x6827, 0x0004, 0x7804, 0x9084,
17345 + 0x4000, 0x01d0, 0x2001, 0x1000, 0x080c, 0x28a5, 0x9006, 0x080c,
17346 + 0x28a5, 0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04,
17347 + 0x8dd1, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c,
17348 + 0x28a5, 0x9006, 0x080c, 0x28a5, 0x000e, 0x001e, 0x002e, 0x00ce,
17349 + 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x0126, 0x0156,
17350 + 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091,
17351 + 0x8000, 0x2001, 0x180c, 0x200c, 0x918c, 0xdbff, 0x2102, 0x2069,
17352 + 0x0100, 0x2079, 0x0140, 0x2071, 0x19b4, 0x703c, 0x2060, 0x8cff,
17353 + 0x0904, 0x8e8f, 0x9386, 0x0002, 0x1128, 0x6814, 0x9084, 0x0002,
17354 + 0x0904, 0x8e8f, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, 0x00fa,
17355 + 0x8109, 0x1df0, 0x69c6, 0x68cb, 0x0008, 0x080c, 0x78a0, 0x080c,
17356 + 0x1c4f, 0x0046, 0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, 0x0169,
17357 + 0x2404, 0x9084, 0x000f, 0x9086, 0x0004, 0x11f8, 0x68af, 0x95f5,
17358 + 0x68c6, 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0090, 0x2071,
17359 + 0x1a33, 0x6814, 0x9084, 0x1984, 0x9085, 0x0012, 0x6816, 0x782b,
17360 + 0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, 0x9386, 0x0002, 0x1128,
17361 + 0x7884, 0x9005, 0x1110, 0x7887, 0x0001, 0x2001, 0x194e, 0x2004,
17362 + 0x200a, 0x004e, 0x939d, 0x0000, 0x1120, 0x2009, 0x0049, 0x080c,
17363 + 0x95ce, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0170, 0x6827, 0x0004,
17364 + 0x7804, 0x9084, 0x4000, 0x01d0, 0x2001, 0x1000, 0x080c, 0x28a5,
17365 + 0x9006, 0x080c, 0x28a5, 0x0090, 0xd08c, 0x0118, 0x6827, 0x0002,
17366 + 0x0010, 0x1f04, 0x8e6b, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001,
17367 + 0x0100, 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x6824, 0x000e,
17368 + 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e,
17369 + 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0x19b4, 0x6a06,
17370 + 0x012e, 0x00de, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069,
17371 + 0x19b4, 0x6a32, 0x012e, 0x00de, 0x0005, 0x080c, 0x87dc, 0x7814,
17372 + 0x080c, 0x4df2, 0x0108, 0x782c, 0x7032, 0x7042, 0x7047, 0x1000,
17373 + 0x0478, 0x080c, 0x87dc, 0x7814, 0x080c, 0x4df2, 0x0108, 0x782c,
17374 + 0x7032, 0x7042, 0x7047, 0x4000, 0x0418, 0x080c, 0x87dc, 0x7814,
17375 + 0x080c, 0x4df2, 0x0108, 0x782c, 0x7032, 0x7042, 0x7047, 0x2000,
17376 + 0x00b8, 0x080c, 0x87dc, 0x7814, 0x080c, 0x4df2, 0x0108, 0x782c,
17377 + 0x7032, 0x7042, 0x7047, 0x0400, 0x0058, 0x080c, 0x87dc, 0x7814,
17378 + 0x080c, 0x4df2, 0x0108, 0x782c, 0x7032, 0x7042, 0x7047, 0x0200,
17379 + 0x60c3, 0x0020, 0x0804, 0x8b24, 0x00e6, 0x2071, 0x19b4, 0x7020,
17380 + 0x9005, 0x0110, 0x8001, 0x7022, 0x00ee, 0x0005, 0x00f6, 0x00e6,
17381 + 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006, 0x0126, 0x2091, 0x8000,
17382 + 0x2071, 0x19b4, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff,
17383 + 0x0904, 0x8f8a, 0x8cff, 0x0904, 0x8f8a, 0x6020, 0x9086, 0x0006,
17384 + 0x1904, 0x8f85, 0x88ff, 0x0138, 0x2800, 0x9c06, 0x1904, 0x8f85,
17385 + 0x2039, 0x0000, 0x0050, 0x6010, 0x9b06, 0x1904, 0x8f85, 0x85ff,
17386 + 0x0120, 0x6054, 0x9106, 0x1904, 0x8f85, 0x7024, 0x9c06, 0x1578,
17387 + 0x2069, 0x0100, 0x68c0, 0x9005, 0x0530, 0x080c, 0x7893, 0x6820,
17388 + 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, 0x0000,
17389 + 0x080c, 0x900f, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04,
17390 + 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x28a5, 0x9006,
17391 + 0x080c, 0x28a5, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827,
17392 + 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x0470, 0x7014,
17393 + 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010, 0x9c36, 0x1140, 0x2c00,
17394 + 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c,
17395 + 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x89ff,
17396 + 0x1168, 0x600f, 0x0000, 0x6014, 0x0096, 0x2048, 0x080c, 0xb0ab,
17397 + 0x0110, 0x080c, 0xc970, 0x009e, 0x080c, 0x9584, 0x080c, 0x8eec,
17398 + 0x88ff, 0x1190, 0x00ce, 0x0804, 0x8f07, 0x2c78, 0x600c, 0x2060,
17399 + 0x0804, 0x8f07, 0x9006, 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce,
17400 + 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, 0x0000, 0x00ce, 0x98c5,
17401 + 0x0001, 0x0c88, 0x00f6, 0x00e6, 0x00d6, 0x0096, 0x00c6, 0x0066,
17402 + 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4, 0x7638,
17403 + 0x2660, 0x2678, 0x8cff, 0x0904, 0x8ffe, 0x6020, 0x9086, 0x0006,
17404 + 0x1904, 0x8ff9, 0x87ff, 0x0128, 0x2700, 0x9c06, 0x1904, 0x8ff9,
17405 + 0x0040, 0x6010, 0x9b06, 0x15e8, 0x85ff, 0x0118, 0x6054, 0x9106,
17406 + 0x15c0, 0x703c, 0x9c06, 0x1168, 0x0036, 0x2019, 0x0001, 0x080c,
17407 + 0x8dfe, 0x7033, 0x0000, 0x9006, 0x703e, 0x7042, 0x7046, 0x704a,
17408 + 0x003e, 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36,
17409 + 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037,
17410 + 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008,
17411 + 0x2678, 0x600f, 0x0000, 0x6014, 0x2048, 0x080c, 0xb0ab, 0x0110,
17412 + 0x080c, 0xc970, 0x080c, 0x9584, 0x87ff, 0x1198, 0x00ce, 0x0804,
17413 + 0x8faa, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8faa, 0x9006, 0x012e,
17414 + 0x000e, 0x002e, 0x006e, 0x00ce, 0x009e, 0x00de, 0x00ee, 0x00fe,
17415 + 0x0005, 0x601b, 0x0000, 0x00ce, 0x97bd, 0x0001, 0x0c80, 0x00e6,
17416 + 0x2071, 0x19b4, 0x2001, 0x1800, 0x2004, 0x9086, 0x0002, 0x1118,
17417 + 0x7007, 0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6,
17418 + 0x00e6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000,
17419 + 0x2071, 0x19b4, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518,
17420 + 0x2200, 0x9c06, 0x11e0, 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a,
17421 + 0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036,
17422 + 0x0010, 0x7037, 0x0000, 0x660c, 0x2c00, 0x9f06, 0x0110, 0x7e0e,
17423 + 0x0008, 0x2678, 0x600f, 0x0000, 0x9085, 0x0001, 0x0020, 0x2c78,
17424 + 0x600c, 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce,
17425 + 0x00ee, 0x00fe, 0x0005, 0x0096, 0x00f6, 0x00e6, 0x00d6, 0x00c6,
17426 + 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4,
17427 + 0x760c, 0x2660, 0x2678, 0x8cff, 0x0904, 0x90eb, 0x6010, 0x00b6,
17428 + 0x2058, 0xb8a0, 0x00be, 0x9206, 0x1904, 0x90e6, 0x7024, 0x9c06,
17429 + 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0x90c2, 0x080c,
17430 + 0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036,
17431 + 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100,
17432 + 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2069, 0x0100, 0x6824,
17433 + 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0x9c36, 0x1110,
17434 + 0x660c, 0x760e, 0x7008, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118,
17435 + 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00,
17436 + 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c,
17437 + 0xb284, 0x1158, 0x080c, 0x2d3f, 0x080c, 0xb295, 0x11f0, 0x080c,
17438 + 0x9e99, 0x00d8, 0x080c, 0x900f, 0x08c0, 0x080c, 0xb295, 0x1118,
17439 + 0x080c, 0x9e99, 0x0090, 0x6014, 0x2048, 0x080c, 0xb0ab, 0x0168,
17440 + 0x6020, 0x9086, 0x0003, 0x1508, 0xa867, 0x0103, 0xab7a, 0xa877,
17441 + 0x0000, 0x080c, 0x61a9, 0x080c, 0xb278, 0x080c, 0xb4de, 0x080c,
17442 + 0x9584, 0x080c, 0x8eec, 0x00ce, 0x0804, 0x906b, 0x2c78, 0x600c,
17443 + 0x2060, 0x0804, 0x906b, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce,
17444 + 0x00de, 0x00ee, 0x00fe, 0x009e, 0x0005, 0x6020, 0x9086, 0x0006,
17445 + 0x1d20, 0x080c, 0xc970, 0x0c08, 0x00d6, 0x080c, 0x868d, 0x7003,
17446 + 0x0200, 0x7007, 0x0014, 0x60c3, 0x0014, 0x20e1, 0x0001, 0x2099,
17447 + 0x1956, 0x20e9, 0x0000, 0x20a1, 0x0250, 0x20a9, 0x0004, 0x4003,
17448 + 0x7023, 0x0004, 0x7027, 0x7878, 0x080c, 0x8b24, 0x00de, 0x0005,
17449 + 0x080c, 0x868d, 0x7003, 0x0214, 0x7007, 0x0018, 0x700b, 0x0800,
17450 + 0x7814, 0x9084, 0xff00, 0x700e, 0x7814, 0x9084, 0x00ff, 0x7022,
17451 + 0x782c, 0x7026, 0x60c3, 0x0018, 0x0804, 0x8b24, 0x00b6, 0x00d6,
17452 + 0x0016, 0x00d6, 0x2f68, 0x2009, 0x0035, 0x080c, 0xb6d9, 0x00de,
17453 + 0x1904, 0x9192, 0x080c, 0x8642, 0x7003, 0x1300, 0x782c, 0x080c,
17454 + 0x9294, 0x2068, 0x6820, 0x9086, 0x0003, 0x0558, 0x7810, 0x2058,
17455 + 0xbaa0, 0x080c, 0x94d3, 0x11d0, 0x9286, 0x007e, 0x1128, 0x700b,
17456 + 0x00ff, 0x700f, 0xfffe, 0x0490, 0x9286, 0x007f, 0x1128, 0x700b,
17457 + 0x00ff, 0x700f, 0xfffd, 0x0450, 0xd2bc, 0x0180, 0x9286, 0x0080,
17458 + 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffc, 0x0400, 0x92d8, 0x1000,
17459 + 0x2b5c, 0xb810, 0x700a, 0xb814, 0x700e, 0x00c0, 0x6098, 0x700e,
17460 + 0x00a8, 0x080c, 0x94d3, 0x1130, 0x7810, 0x2058, 0xb8a0, 0x9082,
17461 + 0x007e, 0x0250, 0x00d6, 0x2069, 0x181d, 0x2d04, 0x700a, 0x8d68,
17462 + 0x2d04, 0x700e, 0x00de, 0x0010, 0x6034, 0x700e, 0x7838, 0x7012,
17463 + 0x783c, 0x7016, 0x60c3, 0x000c, 0x001e, 0x00de, 0x080c, 0x8b24,
17464 + 0x00be, 0x0005, 0x781b, 0x0001, 0x7803, 0x0006, 0x001e, 0x00de,
17465 + 0x00be, 0x0005, 0x792c, 0x9180, 0x0008, 0x200c, 0x9186, 0x0006,
17466 + 0x01c0, 0x9186, 0x0003, 0x0904, 0x920c, 0x9186, 0x0005, 0x0904,
17467 + 0x91f5, 0x9186, 0x0004, 0x05d8, 0x9186, 0x0008, 0x0904, 0x91fd,
17468 + 0x7807, 0x0037, 0x782f, 0x0003, 0x7817, 0x1700, 0x080c, 0x9271,
17469 + 0x0005, 0x080c, 0x9232, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009,
17470 + 0x4000, 0x6800, 0x0002, 0x91d6, 0x91e1, 0x91d8, 0x91e1, 0x91dd,
17471 + 0x91d6, 0x91d6, 0x91e1, 0x91e1, 0x91e1, 0x91e1, 0x91d6, 0x91d6,
17472 + 0x91d6, 0x91d6, 0x91d6, 0x91e1, 0x91d6, 0x91e1, 0x080c, 0x0d84,
17473 + 0x6824, 0xd0e4, 0x0110, 0xd0cc, 0x0110, 0x900e, 0x0010, 0x2009,
17474 + 0x2000, 0x682c, 0x7022, 0x6830, 0x7026, 0x0804, 0x922b, 0x080c,
17475 + 0x9232, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x6a00,
17476 + 0x9286, 0x0002, 0x1108, 0x900e, 0x04b0, 0x04e1, 0x00d6, 0x0026,
17477 + 0x792c, 0x2168, 0x2009, 0x4000, 0x0470, 0x04a1, 0x00d6, 0x0026,
17478 + 0x792c, 0x2168, 0x2009, 0x4000, 0x9286, 0x0005, 0x0118, 0x9286,
17479 + 0x0002, 0x1108, 0x900e, 0x00f8, 0x0429, 0x00d6, 0x0026, 0x792c,
17480 + 0x2168, 0x6814, 0x0096, 0x2048, 0xa9ac, 0xa834, 0x9112, 0xa9b0,
17481 + 0xa838, 0x009e, 0x9103, 0x7022, 0x7226, 0x792c, 0x9180, 0x0000,
17482 + 0x2004, 0x908e, 0x0002, 0x0130, 0x908e, 0x0004, 0x0118, 0x2009,
17483 + 0x4000, 0x0008, 0x900e, 0x712a, 0x60c3, 0x0018, 0x002e, 0x00de,
17484 + 0x0804, 0x8b24, 0x00b6, 0x0036, 0x0046, 0x0056, 0x0066, 0x080c,
17485 + 0x868d, 0x9006, 0x7003, 0x0200, 0x7938, 0x710a, 0x793c, 0x710e,
17486 + 0x7810, 0x2058, 0xb8a0, 0x080c, 0x94d3, 0x1118, 0x9092, 0x007e,
17487 + 0x0268, 0x00d6, 0x2069, 0x181d, 0x2d2c, 0x8d68, 0x2d34, 0x90d8,
17488 + 0x1000, 0x2b5c, 0xbb10, 0xbc14, 0x00de, 0x0028, 0x901e, 0x6498,
17489 + 0x2029, 0x0000, 0x6634, 0x782c, 0x9080, 0x0008, 0x2004, 0x9086,
17490 + 0x0003, 0x1128, 0x7512, 0x7616, 0x731a, 0x741e, 0x0020, 0x7312,
17491 + 0x7416, 0x751a, 0x761e, 0x006e, 0x005e, 0x004e, 0x003e, 0x00be,
17492 + 0x0005, 0x080c, 0x868d, 0x7003, 0x0100, 0x782c, 0x700a, 0x7814,
17493 + 0x700e, 0x700e, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x080c, 0x8639,
17494 + 0x7003, 0x1400, 0x7838, 0x700a, 0x0079, 0x783c, 0x700e, 0x782c,
17495 + 0x7012, 0x7830, 0x7016, 0x7834, 0x9084, 0x00ff, 0x8007, 0x701a,
17496 + 0x60c3, 0x0010, 0x0804, 0x8b24, 0x00e6, 0x2071, 0x0240, 0x0006,
17497 + 0x00f6, 0x2078, 0x7810, 0x00b6, 0x2058, 0xb8bc, 0xd084, 0x0120,
17498 + 0x7848, 0x702a, 0x7844, 0x702e, 0x00be, 0x00fe, 0x000e, 0x00ee,
17499 + 0x0005, 0x080c, 0x8684, 0x7003, 0x0100, 0x782c, 0x700a, 0x7814,
17500 + 0x700e, 0x60c3, 0x0008, 0x0804, 0x8b24, 0x0021, 0x60c3, 0x0000,
17501 + 0x0804, 0x8b24, 0x00d6, 0x080c, 0x9363, 0xb810, 0x9085, 0x0300,
17502 + 0x7002, 0xb814, 0x7006, 0x2069, 0x1800, 0x6874, 0x700a, 0x6878,
17503 + 0x700e, 0x7013, 0x0819, 0x080c, 0x8b12, 0x721a, 0x2f10, 0x7222,
17504 + 0x7a08, 0x7226, 0x2071, 0x024c, 0x00de, 0x0005, 0x0059, 0x7914,
17505 + 0x712a, 0x60c3, 0x0000, 0x60a7, 0x9575, 0x080c, 0x8b47, 0x080c,
17506 + 0x788a, 0x0005, 0x0036, 0x0096, 0x00d6, 0x00e6, 0x7858, 0x2048,
17507 + 0xaa7c, 0x9296, 0x00c0, 0x9294, 0xfffd, 0xaa7e, 0xaa80, 0x9294,
17508 + 0x0300, 0xaa82, 0xa96c, 0x9194, 0x00ff, 0xab74, 0x9384, 0x00ff,
17509 + 0x908d, 0xc200, 0xa96e, 0x9384, 0xff00, 0x9215, 0xaa76, 0xa870,
17510 + 0xaa78, 0xa87a, 0xaa72, 0x00d6, 0x2069, 0x0200, 0x080c, 0x9363,
17511 + 0x00de, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, 0x000a, 0xa860,
17512 + 0x20e0, 0xa85c, 0x9080, 0x001b, 0x2098, 0x4003, 0x60a3, 0x0035,
17513 + 0xaa68, 0x9294, 0x7000, 0x9286, 0x3000, 0x0110, 0x60a3, 0x0037,
17514 + 0x00ee, 0x00de, 0x009e, 0x003e, 0x0005, 0x900e, 0x7814, 0x0096,
17515 + 0x2048, 0xa87c, 0xd0fc, 0x01c0, 0x9084, 0x0003, 0x11a8, 0x2001,
17516 + 0x180c, 0x2004, 0xd0bc, 0x0180, 0x7824, 0xd0cc, 0x1168, 0xd0c4,
17517 + 0x1158, 0xa8a8, 0x9005, 0x1140, 0x2001, 0x180c, 0x200c, 0xc1d5,
17518 + 0x2102, 0x2009, 0x197f, 0x210c, 0x009e, 0x918d, 0x0092, 0x0010,
17519 + 0x2009, 0x0096, 0x60ab, 0x0036, 0x6116, 0x0005, 0x2009, 0x0009,
17520 + 0x00a0, 0x2009, 0x000a, 0x0088, 0x2009, 0x000b, 0x0070, 0x2009,
17521 + 0x000c, 0x0058, 0x2009, 0x000d, 0x0040, 0x2009, 0x000e, 0x0028,
17522 + 0x2009, 0x000f, 0x0010, 0x2009, 0x0008, 0x6912, 0x0005, 0x00d6,
17523 + 0x9290, 0x0018, 0x8214, 0x20e9, 0x0000, 0x2069, 0x0200, 0x6813,
17524 + 0x0000, 0x22a8, 0x9284, 0x00e0, 0x0128, 0x20a9, 0x0020, 0x9292,
17525 + 0x0020, 0x0008, 0x9016, 0x20a1, 0x0240, 0x9006, 0x4004, 0x82ff,
17526 + 0x0120, 0x6810, 0x8000, 0x6812, 0x0c60, 0x00de, 0x0005, 0x00d6,
17527 + 0x0096, 0x6014, 0x2048, 0x9006, 0xa836, 0xa83a, 0xa99c, 0xa946,
17528 + 0xa84a, 0x6023, 0x0003, 0x6007, 0x0040, 0x6003, 0x0003, 0x600b,
17529 + 0xffff, 0xa817, 0x0001, 0xa842, 0xa83e, 0x2900, 0xa85a, 0xa813,
17530 + 0x1cdb, 0x080c, 0x7c3a, 0x0126, 0x2091, 0x8000, 0x080c, 0x820b,
17531 + 0x012e, 0x009e, 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6,
17532 + 0x00a6, 0x0096, 0x0066, 0x0126, 0x2091, 0x8000, 0x2071, 0x19b4,
17533 + 0x760c, 0x2660, 0x2678, 0x8cff, 0x0904, 0x9433, 0x7024, 0x9c06,
17534 + 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0904, 0x940a, 0x080c,
17535 + 0x8b50, 0x68c3, 0x0000, 0x080c, 0x900f, 0x7027, 0x0000, 0x0036,
17536 + 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100,
17537 + 0x080c, 0x28a5, 0x9006, 0x080c, 0x28a5, 0x2069, 0x0100, 0x6824,
17538 + 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x700c, 0x9c36, 0x1110,
17539 + 0x660c, 0x760e, 0x7008, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118,
17540 + 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, 0x660c, 0x0066, 0x2c00,
17541 + 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c,
17542 + 0xb284, 0x1158, 0x080c, 0x2d3f, 0x080c, 0xb295, 0x11f0, 0x080c,
17543 + 0x9e99, 0x00d8, 0x080c, 0x900f, 0x08c0, 0x080c, 0xb295, 0x1118,
17544 + 0x080c, 0x9e99, 0x0090, 0x6014, 0x2048, 0x080c, 0xb0ab, 0x0168,
17545 + 0x6020, 0x9086, 0x0003, 0x1520, 0xa867, 0x0103, 0xab7a, 0xa877,
17546 + 0x0000, 0x080c, 0x61a9, 0x080c, 0xb278, 0x080c, 0xb4de, 0x080c,
17547 + 0x9584, 0x080c, 0x8eec, 0x00ce, 0x0804, 0x93bb, 0x2c78, 0x600c,
17548 + 0x2060, 0x0804, 0x93bb, 0x700f, 0x0000, 0x700b, 0x0000, 0x012e,
17549 + 0x006e, 0x009e, 0x00ae, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005,
17550 + 0x6020, 0x9086, 0x0006, 0x1d08, 0x080c, 0xc970, 0x08f0, 0x00d6,
17551 + 0x0156, 0x080c, 0x868d, 0x7a14, 0x82ff, 0x0138, 0x7003, 0x0100,
17552 + 0x700b, 0x0003, 0x60c3, 0x0008, 0x0490, 0x7003, 0x0200, 0x7007,
17553 + 0x0000, 0x2069, 0x1800, 0x901e, 0x6800, 0x9086, 0x0004, 0x1110,
17554 + 0xc38d, 0x0060, 0x080c, 0x6877, 0x1110, 0xc3ad, 0x0008, 0xc3a5,
17555 + 0x6ad8, 0xd29c, 0x1110, 0xd2ac, 0x0108, 0xc39d, 0x730e, 0x2011,
17556 + 0x1848, 0x63f0, 0x2312, 0x20a9, 0x0006, 0x2011, 0x1840, 0x2019,
17557 + 0x1841, 0x2071, 0x0250, 0x2376, 0x8e70, 0x2276, 0x8e70, 0x9398,
17558 + 0x0002, 0x9290, 0x0002, 0x1f04, 0x947b, 0x60c3, 0x0040, 0x080c,
17559 + 0x8b24, 0x015e, 0x00de, 0x0005, 0x0156, 0x080c, 0x868d, 0x7a14,
17560 + 0x82ff, 0x0168, 0x9286, 0xffff, 0x0118, 0x9282, 0x000e, 0x1238,
17561 + 0x7003, 0x0100, 0x700b, 0x0003, 0x60c3, 0x0008, 0x0488, 0x7003,
17562 + 0x0200, 0x7007, 0x001c, 0x700f, 0x0001, 0x2011, 0x198a, 0x2204,
17563 + 0x8007, 0x701a, 0x8210, 0x2204, 0x8007, 0x701e, 0x0421, 0x1120,
17564 + 0xb8a0, 0x9082, 0x007f, 0x0248, 0x2001, 0x181d, 0x2004, 0x7022,
17565 + 0x2001, 0x181e, 0x2004, 0x7026, 0x0030, 0x2001, 0x1816, 0x2004,
17566 + 0x9084, 0x00ff, 0x7026, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099,
17567 + 0x1805, 0x20e9, 0x0000, 0x20a1, 0x0256, 0x4003, 0x60c3, 0x001c,
17568 + 0x015e, 0x0804, 0x8b24, 0x0006, 0x2001, 0x1836, 0x2004, 0xd0ac,
17569 + 0x000e, 0x0005, 0x2011, 0x0003, 0x080c, 0x8e99, 0x2011, 0x0002,
17570 + 0x080c, 0x8ea3, 0x080c, 0x8d59, 0x0036, 0x901e, 0x080c, 0x8dfe,
17571 + 0x003e, 0x0005, 0x2071, 0x1882, 0x7000, 0x9005, 0x0140, 0x2001,
17572 + 0x0976, 0x2071, 0x1800, 0x706e, 0x7072, 0x7063, 0xffe0, 0x2071,
17573 + 0x1800, 0x706c, 0x704e, 0x7053, 0x1cd0, 0x0005, 0x00e6, 0x0126,
17574 + 0x2071, 0x1800, 0x2091, 0x8000, 0x754c, 0x9582, 0x0010, 0x0608,
17575 + 0x7050, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018,
17576 + 0x7060, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0, 0x0c98, 0x6003,
17577 + 0x0008, 0x8529, 0x754e, 0x9ca8, 0x0018, 0x7060, 0x9502, 0x1230,
17578 + 0x7552, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x7053, 0x1cd0,
17579 + 0x0cc0, 0x9006, 0x0cc0, 0x00e6, 0x2071, 0x1800, 0x754c, 0x9582,
17580 + 0x0010, 0x0600, 0x7050, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148,
17581 + 0x9ce0, 0x0018, 0x7060, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x1cd0,
17582 + 0x0c98, 0x6003, 0x0008, 0x8529, 0x754e, 0x9ca8, 0x0018, 0x7060,
17583 + 0x9502, 0x1228, 0x7552, 0x9085, 0x0001, 0x00ee, 0x0005, 0x7053,
17584 + 0x1cd0, 0x0cc8, 0x9006, 0x0cc8, 0x9c82, 0x1cd0, 0x0a0c, 0x0d84,
17585 + 0x2001, 0x1818, 0x2004, 0x9c02, 0x1a0c, 0x0d84, 0x9006, 0x6006,
17586 + 0x600a, 0x600e, 0x6016, 0x601a, 0x6012, 0x6023, 0x0000, 0x6003,
17587 + 0x0000, 0x601e, 0x6056, 0x605a, 0x6026, 0x602a, 0x602e, 0x6032,
17588 + 0x6036, 0x603a, 0x603e, 0x6042, 0x2061, 0x1800, 0x604c, 0x8000,
17589 + 0x604e, 0x9086, 0x0001, 0x0108, 0x0005, 0x0126, 0x2091, 0x8000,
17590 + 0x080c, 0x8125, 0x012e, 0x0cc0, 0x0006, 0x6000, 0x9086, 0x0000,
17591 + 0x01b0, 0x601c, 0xd084, 0x190c, 0x17b0, 0x6017, 0x0000, 0x6023,
17592 + 0x0007, 0x2001, 0x1953, 0x2004, 0x0006, 0x9082, 0x0051, 0x000e,
17593 + 0x0208, 0x8004, 0x601a, 0x080c, 0xcc1f, 0x6043, 0x0000, 0x000e,
17594 + 0x0005, 0x00e6, 0x0126, 0x2071, 0x1800, 0x2091, 0x8000, 0x754c,
17595 + 0x9582, 0x0001, 0x0608, 0x7050, 0x2060, 0x6000, 0x9086, 0x0000,
17596 + 0x0148, 0x9ce0, 0x0018, 0x7060, 0x9c02, 0x1208, 0x0cb0, 0x2061,
17597 + 0x1cd0, 0x0c98, 0x6003, 0x0008, 0x8529, 0x754e, 0x9ca8, 0x0018,
17598 + 0x7060, 0x9502, 0x1230, 0x7552, 0x9085, 0x0001, 0x012e, 0x00ee,
17599 + 0x0005, 0x7053, 0x1cd0, 0x0cc0, 0x9006, 0x0cc0, 0x6020, 0x9084,
17600 + 0x000f, 0x0002, 0x95e1, 0x95ea, 0x9605, 0x9620, 0xb77d, 0xb79a,
17601 + 0xb7b5, 0x95e1, 0x95ea, 0x95e1, 0x963c, 0x95e1, 0x95e1, 0x95e1,
17602 + 0x95e1, 0x9186, 0x0013, 0x1128, 0x080c, 0x8026, 0x080c, 0x8125,
17603 + 0x0005, 0x0005, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d84,
17604 + 0x0013, 0x006e, 0x0005, 0x9603, 0x9d1f, 0x9ee0, 0x9603, 0x9f6e,
17605 + 0x98e8, 0x9603, 0x9603, 0x9ca1, 0xa463, 0x9603, 0x9603, 0x9603,
17606 + 0x9603, 0x9603, 0x9603, 0x080c, 0x0d84, 0x0066, 0x6000, 0x90b2,
17607 + 0x0016, 0x1a0c, 0x0d84, 0x0013, 0x006e, 0x0005, 0x961e, 0xaaef,
17608 + 0x961e, 0x961e, 0x961e, 0x961e, 0x961e, 0x961e, 0xaa94, 0xac61,
17609 + 0x961e, 0xab21, 0xaba0, 0xab21, 0xaba0, 0x961e, 0x080c, 0x0d84,
17610 + 0x6000, 0x9082, 0x0016, 0x1a0c, 0x0d84, 0x6000, 0x0002, 0x963a,
17611 + 0xa4a5, 0xa574, 0xa69f, 0xa838, 0x963a, 0x963a, 0x963a, 0xa47e,
17612 + 0xaa2b, 0xaa2e, 0x963a, 0x963a, 0x963a, 0x963a, 0xaa57, 0x963a,
17613 + 0x963a, 0x963a, 0x080c, 0x0d84, 0x0066, 0x6000, 0x90b2, 0x0016,
17614 + 0x1a0c, 0x0d84, 0x0013, 0x006e, 0x0005, 0x9655, 0x9655, 0x9694,
17615 + 0x972f, 0x979c, 0x9655, 0x9655, 0x9655, 0x9657, 0x9655, 0x9655,
17616 + 0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x080c, 0x0d84, 0x9186,
17617 + 0x004c, 0x0588, 0x9186, 0x0003, 0x190c, 0x0d84, 0x0096, 0x601c,
17618 + 0xc0ed, 0x601e, 0x6003, 0x0003, 0x6106, 0x6014, 0x2048, 0xa87c,
17619 + 0x9084, 0x8000, 0xc0b5, 0xa87e, 0xa8ac, 0xa846, 0xa8b0, 0xa84a,
17620 + 0x9006, 0xa836, 0xa83a, 0xa884, 0x9092, 0x199a, 0x0210, 0x2001,
17621 + 0x1999, 0x8003, 0x8013, 0x8213, 0x9210, 0x621a, 0x009e, 0x2c10,
17622 + 0x080c, 0x18b7, 0x080c, 0x7c3a, 0x0126, 0x2091, 0x8000, 0x080c,
17623 + 0x820b, 0x012e, 0x0005, 0x6010, 0x00b6, 0x2058, 0xbca0, 0x00be,
17624 + 0x2c00, 0x080c, 0x97be, 0x0005, 0x00d6, 0x0096, 0x00f6, 0x2079,
17625 + 0x1800, 0x7a88, 0x9290, 0x0018, 0x6014, 0x2048, 0xac78, 0x0046,
17626 + 0xa8e0, 0x9005, 0x1140, 0xa8dc, 0x921a, 0x0140, 0x0220, 0xa87b,
17627 + 0x0007, 0x2010, 0x0028, 0xa87b, 0x0015, 0x0010, 0xa87b, 0x0000,
17628 + 0x8214, 0xa883, 0x0000, 0xaa02, 0x0006, 0x0016, 0x0026, 0x00c6,
17629 + 0x00d6, 0x00e6, 0x00f6, 0x2400, 0x9005, 0x1108, 0x009a, 0x2100,
17630 + 0x9086, 0x0015, 0x1118, 0x2001, 0x0001, 0x0038, 0x2100, 0x9086,
17631 + 0x0016, 0x0118, 0x2001, 0x0001, 0x002a, 0x94a4, 0x0007, 0x8423,
17632 + 0x9405, 0x0002, 0x96f7, 0x96f7, 0x96f2, 0x96f5, 0x96f7, 0x96ef,
17633 + 0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2, 0x96e2,
17634 + 0x96e2, 0x96e2, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x002e, 0x001e,
17635 + 0x000e, 0x004e, 0x00fe, 0x009e, 0x00de, 0x080c, 0x0d84, 0x080c,
17636 + 0xa0f1, 0x0028, 0x080c, 0xa1cf, 0x0010, 0x080c, 0xa2bc, 0x00fe,
17637 + 0x00ee, 0x00de, 0x00ce, 0x002e, 0x001e, 0x2c00, 0xa896, 0x000e,
17638 + 0x080c, 0x987c, 0x0530, 0xa804, 0xa80e, 0x00a6, 0x2050, 0xb100,
17639 + 0x00ae, 0x8006, 0x8006, 0x8007, 0x97bc, 0x003f, 0x9084, 0xffc0,
17640 + 0x9080, 0x0002, 0xaacc, 0xabd0, 0xacd4, 0xadd8, 0x2031, 0x0000,
17641 + 0x2041, 0x11fd, 0x080c, 0x9a1f, 0x0160, 0x000e, 0x9005, 0x0120,
17642 + 0x00fe, 0x009e, 0x00de, 0x0005, 0x00fe, 0x009e, 0x00de, 0x0804,
17643 + 0x9554, 0x2001, 0x002c, 0x900e, 0x080c, 0x98db, 0x0c70, 0x9182,
17644 + 0x0047, 0x0002, 0x973b, 0x973b, 0x973d, 0x9772, 0x973b, 0x973b,
17645 + 0x973b, 0x973b, 0x9785, 0x080c, 0x0d84, 0x00d6, 0x0016, 0x0096,
17646 + 0x080c, 0x80d6, 0x080c, 0x820b, 0x6003, 0x0004, 0x6114, 0x2148,
17647 + 0xa87c, 0xd0fc, 0x01b8, 0xa878, 0x9005, 0x1158, 0xa894, 0x9005,
17648 + 0x0140, 0x2001, 0x0000, 0x900e, 0x080c, 0x98db, 0x080c, 0x9554,
17649 + 0x00a8, 0x6003, 0x0002, 0xa8a4, 0xa9a8, 0x9105, 0x1178, 0xa8ae,
17650 + 0xa8b2, 0x0c78, 0xa87f, 0x0020, 0xa88c, 0xa88a, 0xa8a4, 0xa8ae,
17651 + 0xa8a8, 0xa8b2, 0xa8c7, 0x0000, 0xa8cb, 0x0000, 0x009e, 0x001e,
17652 + 0x00de, 0x0005, 0x080c, 0x80d6, 0x00d6, 0x0096, 0x6114, 0x2148,
17653 + 0x080c, 0xb0ad, 0x0120, 0xa87b, 0x0006, 0x080c, 0x61a9, 0x009e,
17654 + 0x00de, 0x080c, 0x9554, 0x0804, 0x820b, 0x080c, 0x80d6, 0x080c,
17655 + 0x2d1a, 0x080c, 0xb76c, 0x00d6, 0x0096, 0x6114, 0x2148, 0x080c,
17656 + 0xb0ad, 0x0120, 0xa87b, 0x0029, 0x080c, 0x61a9, 0x009e, 0x00de,
17657 + 0x080c, 0x9554, 0x0804, 0x820b, 0x9182, 0x0047, 0x0002, 0x97ac,
17658 + 0x97ae, 0x97ac, 0x97ac, 0x97ac, 0x97ac, 0x97ac, 0x97ac, 0x97ac,
17659 + 0x97ac, 0x97ac, 0x97ac, 0x97ae, 0x080c, 0x0d84, 0x00d6, 0x0096,
17660 + 0x080c, 0x1489, 0x6114, 0x2148, 0xa87b, 0x0000, 0xa883, 0x0000,
17661 + 0x080c, 0x61a9, 0x009e, 0x00de, 0x0804, 0x9554, 0x0026, 0x0036,
17662 + 0x0056, 0x0066, 0x0096, 0x00a6, 0x00f6, 0x0006, 0x080c, 0x0fae,
17663 + 0x000e, 0x090c, 0x0d84, 0xa960, 0x21e8, 0xa95c, 0x9188, 0x0019,
17664 + 0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xa87a, 0x2079, 0x1800,
17665 + 0x7988, 0x9188, 0x0018, 0x918c, 0x0fff, 0xa972, 0xac76, 0x2950,
17666 + 0x00a6, 0x2001, 0x0205, 0x2003, 0x0000, 0x901e, 0x2029, 0x0001,
17667 + 0x9182, 0x0034, 0x1228, 0x2011, 0x001f, 0x080c, 0xace6, 0x04c0,
17668 + 0x2130, 0x2009, 0x0034, 0x2011, 0x001f, 0x080c, 0xace6, 0x96b2,
17669 + 0x0034, 0xb004, 0x904d, 0x0110, 0x080c, 0x0f60, 0x080c, 0x0fae,
17670 + 0x01d0, 0x8528, 0xa867, 0x0110, 0xa86b, 0x0000, 0x2920, 0xb406,
17671 + 0x968a, 0x003d, 0x1230, 0x2608, 0x2011, 0x001b, 0x080c, 0xace6,
17672 + 0x00b8, 0x96b2, 0x003c, 0x2009, 0x003c, 0x2950, 0x2011, 0x001b,
17673 + 0x080c, 0xace6, 0x0c18, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae,
17674 + 0x852f, 0x95ad, 0x0050, 0xb566, 0xb070, 0xc0fd, 0xb072, 0x0048,
17675 + 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0050,
17676 + 0xb566, 0x2a48, 0xa804, 0xa807, 0x0000, 0x0006, 0x080c, 0x61a9,
17677 + 0x000e, 0x2048, 0x9005, 0x1db0, 0x00fe, 0x00ae, 0x009e, 0x006e,
17678 + 0x005e, 0x003e, 0x002e, 0x0005, 0x00d6, 0x00f6, 0x0096, 0x0006,
17679 + 0x080c, 0x0fae, 0x000e, 0x090c, 0x0d84, 0xa960, 0x21e8, 0xa95c,
17680 + 0x9188, 0x0019, 0x21a0, 0x900e, 0x20a9, 0x0020, 0x4104, 0xaa66,
17681 + 0xa87a, 0x2079, 0x1800, 0x7988, 0x810c, 0x9188, 0x000c, 0x9182,
17682 + 0x001a, 0x0210, 0x2009, 0x001a, 0x21a8, 0x810b, 0xa972, 0xac76,
17683 + 0x2e98, 0xa85c, 0x9080, 0x001f, 0x20a0, 0x2001, 0x0205, 0x200c,
17684 + 0x918d, 0x0080, 0x2102, 0x4003, 0x2003, 0x0000, 0x080c, 0x61a9,
17685 + 0x009e, 0x00fe, 0x00de, 0x0005, 0x0016, 0x00d6, 0x00f6, 0x0096,
17686 + 0x0016, 0x2001, 0x0205, 0x200c, 0x918d, 0x0080, 0x2102, 0x001e,
17687 + 0x2079, 0x0200, 0x2e98, 0x2021, 0x003e, 0x901e, 0x9282, 0x0020,
17688 + 0x0218, 0x2011, 0x0020, 0x2018, 0x9486, 0x003e, 0x1170, 0x0096,
17689 + 0x080c, 0x0fae, 0x2900, 0x009e, 0x05b8, 0xa806, 0x2048, 0xa860,
17690 + 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x3300, 0x908e, 0x0260,
17691 + 0x0140, 0x2009, 0x0280, 0x9102, 0x920a, 0x0218, 0x2010, 0x2100,
17692 + 0x9318, 0x2200, 0x9402, 0x1220, 0x2410, 0x9006, 0x9398, 0x0002,
17693 + 0x2020, 0x22a8, 0xa800, 0x9200, 0xa802, 0x20e1, 0x0000, 0x4003,
17694 + 0x83ff, 0x0180, 0x3300, 0x9086, 0x0280, 0x1130, 0x7814, 0x8000,
17695 + 0x9085, 0x0080, 0x7816, 0x2e98, 0x2310, 0x84ff, 0x0904, 0x988b,
17696 + 0x0804, 0x988d, 0x9085, 0x0001, 0x7817, 0x0000, 0x009e, 0x00fe,
17697 + 0x00de, 0x001e, 0x0005, 0x00d6, 0x0036, 0x0096, 0x6314, 0x2348,
17698 + 0xa87a, 0xa982, 0x080c, 0x619c, 0x009e, 0x003e, 0x00de, 0x0005,
17699 + 0x91b6, 0x0015, 0x1118, 0x080c, 0x9554, 0x0030, 0x91b6, 0x0016,
17700 + 0x190c, 0x0d84, 0x080c, 0x9554, 0x0005, 0x20a9, 0x000e, 0x20e1,
17701 + 0x0000, 0x2e98, 0x6014, 0x0096, 0x2048, 0xa860, 0x20e8, 0xa85c,
17702 + 0x20a0, 0x009e, 0x4003, 0x0136, 0x9080, 0x001b, 0x2011, 0x0006,
17703 + 0x20a9, 0x0001, 0x3418, 0x8318, 0x23a0, 0x4003, 0x3318, 0x8318,
17704 + 0x2398, 0x8211, 0x1db8, 0x2011, 0x0006, 0x013e, 0x20a0, 0x3318,
17705 + 0x8318, 0x2398, 0x4003, 0x3418, 0x8318, 0x23a0, 0x8211, 0x1db8,
17706 + 0x0096, 0x080c, 0xb0ad, 0x0130, 0x6014, 0x2048, 0xa807, 0x0000,
17707 + 0xa867, 0x0103, 0x009e, 0x0804, 0x9554, 0x0096, 0x00d6, 0x0036,
17708 + 0x7330, 0x9386, 0x0200, 0x11a8, 0x6010, 0x00b6, 0x2058, 0xb8bf,
17709 + 0x0000, 0x00be, 0x6014, 0x9005, 0x0130, 0x2048, 0xa807, 0x0000,
17710 + 0xa867, 0x0103, 0xab32, 0x080c, 0x9554, 0x003e, 0x00de, 0x009e,
17711 + 0x0005, 0x0011, 0x1d48, 0x0cc8, 0x0006, 0x0016, 0x080c, 0xb759,
17712 + 0x0188, 0x6014, 0x9005, 0x1170, 0x600b, 0x0003, 0x601b, 0x0000,
17713 + 0x6043, 0x0000, 0x2009, 0x0022, 0x080c, 0x9cf7, 0x9006, 0x001e,
17714 + 0x000e, 0x0005, 0x9085, 0x0001, 0x0cd0, 0x0096, 0x0016, 0x20a9,
17715 + 0x0014, 0x9e80, 0x000c, 0x20e1, 0x0000, 0x2098, 0x6014, 0x2048,
17716 + 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0002, 0x20a0, 0x4003, 0x2001,
17717 + 0x0205, 0x2003, 0x0001, 0x2099, 0x0260, 0x20a9, 0x0016, 0x4003,
17718 + 0x20a9, 0x000a, 0xa804, 0x2048, 0xa860, 0x20e8, 0xa85c, 0x9080,
17719 + 0x0002, 0x20a0, 0x4003, 0x2001, 0x0205, 0x2003, 0x0002, 0x2099,
17720 + 0x0260, 0x20a9, 0x0020, 0x4003, 0x2003, 0x0000, 0x6014, 0x2048,
17721 + 0xa800, 0x2048, 0xa867, 0x0103, 0x080c, 0x9554, 0x001e, 0x009e,
17722 + 0x0005, 0x0096, 0x0016, 0x900e, 0x7030, 0x9086, 0x0100, 0x0140,
17723 + 0x7038, 0x9084, 0x00ff, 0x800c, 0x703c, 0x9084, 0x00ff, 0x8004,
17724 + 0x9080, 0x0004, 0x9108, 0x810b, 0x2011, 0x0002, 0x2019, 0x000c,
17725 + 0x6014, 0x2048, 0x080c, 0xace6, 0x080c, 0xb0ad, 0x0140, 0x6014,
17726 + 0x2048, 0xa807, 0x0000, 0xa864, 0xa8e2, 0xa867, 0x0103, 0x080c,
17727 + 0x9554, 0x001e, 0x009e, 0x0005, 0x0016, 0x0096, 0x7030, 0x9086,
17728 + 0x0100, 0x1118, 0x2009, 0x0004, 0x0010, 0x7034, 0x800c, 0x810b,
17729 + 0x2011, 0x000c, 0x2019, 0x000c, 0x6014, 0x2048, 0xa804, 0x0096,
17730 + 0x9005, 0x0108, 0x2048, 0x080c, 0xace6, 0x009e, 0x080c, 0xb0ad,
17731 + 0x0148, 0xa804, 0x9005, 0x1158, 0xa807, 0x0000, 0xa864, 0xa8e2,
17732 + 0xa867, 0x0103, 0x080c, 0x9554, 0x009e, 0x001e, 0x0005, 0x0086,
17733 + 0x2040, 0xa030, 0x8007, 0x9086, 0x0100, 0x1118, 0x080c, 0x9e99,
17734 + 0x00e0, 0xa034, 0x8007, 0x800c, 0x8806, 0x8006, 0x8007, 0x90bc,
17735 + 0x003f, 0x9084, 0xffc0, 0x9080, 0x000c, 0xa87b, 0x0000, 0xa883,
17736 + 0x0000, 0xa897, 0x4000, 0xaaa0, 0xab9c, 0xaca8, 0xada4, 0x2031,
17737 + 0x0000, 0x2041, 0x11e3, 0x0019, 0x0d08, 0x008e, 0x0898, 0x0096,
17738 + 0x0006, 0x080c, 0x0fae, 0x000e, 0x01b0, 0xa8ab, 0x0dcb, 0xa876,
17739 + 0x000e, 0xa8a2, 0x0006, 0xae6a, 0x2800, 0xa89e, 0xa97a, 0xaf72,
17740 + 0xaa8e, 0xab92, 0xac96, 0xad9a, 0x0086, 0x2940, 0x080c, 0x108c,
17741 + 0x008e, 0x9085, 0x0001, 0x009e, 0x0005, 0x00e6, 0x00d6, 0x0026,
17742 + 0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, 0x2258, 0xba10, 0x00be,
17743 + 0x9206, 0x1520, 0x700c, 0x6210, 0x00b6, 0x2258, 0xba14, 0x00be,
17744 + 0x9206, 0x11e0, 0x6043, 0x0000, 0x2c68, 0x0016, 0x2009, 0x0035,
17745 + 0x080c, 0xb6d9, 0x001e, 0x1158, 0x622c, 0x2268, 0x2071, 0x026c,
17746 + 0x6b20, 0x9386, 0x0003, 0x0130, 0x9386, 0x0006, 0x0128, 0x080c,
17747 + 0x9554, 0x0020, 0x0039, 0x0010, 0x080c, 0x9b31, 0x002e, 0x00de,
17748 + 0x00ee, 0x0005, 0x0096, 0x6814, 0x2048, 0x9186, 0x0015, 0x0904,
17749 + 0x9b19, 0x918e, 0x0016, 0x1904, 0x9b2f, 0x700c, 0x908c, 0xff00,
17750 + 0x9186, 0x1700, 0x0120, 0x9186, 0x0300, 0x1904, 0x9af3, 0x89ff,
17751 + 0x1138, 0x6800, 0x9086, 0x000f, 0x0904, 0x9ad6, 0x0804, 0x9b2d,
17752 + 0x6808, 0x9086, 0xffff, 0x1904, 0x9b1b, 0xa87c, 0x9084, 0x0060,
17753 + 0x9086, 0x0020, 0x1128, 0xa83c, 0xa940, 0x9105, 0x1904, 0x9b1b,
17754 + 0x6824, 0xd0b4, 0x1904, 0x9b1b, 0x080c, 0xb278, 0x685c, 0xa882,
17755 + 0xa87c, 0xc0dc, 0xc0f4, 0xc0d4, 0xa87e, 0x0026, 0x900e, 0x6a18,
17756 + 0x2001, 0x000a, 0x080c, 0x7a4b, 0xa884, 0x920a, 0x0208, 0x8011,
17757 + 0xaa86, 0x82ff, 0x002e, 0x1138, 0x00c6, 0x2d60, 0x080c, 0xae04,
17758 + 0x00ce, 0x0804, 0x9b2d, 0x00c6, 0xa868, 0xd0fc, 0x1118, 0x080c,
17759 + 0x5755, 0x0010, 0x080c, 0x5ac6, 0x00ce, 0x1904, 0x9b1b, 0x00c6,
17760 + 0x2d60, 0x080c, 0x9554, 0x00ce, 0x0804, 0x9b2d, 0x00c6, 0x080c,
17761 + 0x95a1, 0x0198, 0x6017, 0x0000, 0x6810, 0x6012, 0x080c, 0xb4e6,
17762 + 0x6023, 0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, 0x9554, 0x00ce,
17763 + 0x080c, 0x95ce, 0x00ce, 0x0804, 0x9b2d, 0x2001, 0x1955, 0x2004,
17764 + 0x6842, 0x00ce, 0x04d0, 0x7008, 0x9086, 0x000b, 0x11c8, 0x6010,
17765 + 0x00b6, 0x2058, 0xb900, 0xc1bc, 0xb902, 0x00be, 0x00c6, 0x2d60,
17766 + 0xa883, 0x0003, 0x080c, 0xb71f, 0x6007, 0x0085, 0x6003, 0x000b,
17767 + 0x6023, 0x0002, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ce, 0x00e8,
17768 + 0x700c, 0x9086, 0x2a00, 0x1138, 0x2001, 0x1955, 0x2004, 0x6842,
17769 + 0x00a0, 0x0479, 0x00a0, 0x89ff, 0x090c, 0x0d84, 0x00c6, 0x00d6,
17770 + 0x2d60, 0xa867, 0x0103, 0xa87b, 0x0003, 0x080c, 0xacd6, 0x080c,
17771 + 0xb278, 0x080c, 0x9584, 0x00de, 0x00ce, 0x080c, 0x9554, 0x009e,
17772 + 0x0005, 0x9186, 0x0015, 0x1128, 0x2001, 0x1955, 0x2004, 0x6842,
17773 + 0x0068, 0x918e, 0x0016, 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c,
17774 + 0xcc1f, 0x080c, 0x79df, 0x080c, 0x9554, 0x00ce, 0x080c, 0x9554,
17775 + 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, 0xacb0, 0xabac, 0xd2f4,
17776 + 0x0130, 0x2001, 0x1955, 0x2004, 0x6842, 0x0804, 0x9ba9, 0x00c6,
17777 + 0x2d60, 0x080c, 0xad11, 0x00ce, 0x6804, 0x9086, 0x0050, 0x1168,
17778 + 0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c,
17779 + 0x7bcb, 0x080c, 0x8125, 0x00ce, 0x04e0, 0x6800, 0x9086, 0x000f,
17780 + 0x01b0, 0x89ff, 0x090c, 0x0d84, 0x6800, 0x9086, 0x0004, 0x1198,
17781 + 0xa87c, 0xd0ac, 0x0180, 0xa843, 0x0fff, 0xa83f, 0x0fff, 0xa880,
17782 + 0xc0f4, 0xc0fc, 0xa882, 0x2001, 0x0001, 0x6832, 0x00e8, 0x2001,
17783 + 0x0007, 0x6832, 0x00c8, 0xa87c, 0xd0b4, 0x1138, 0xd0ac, 0x0db8,
17784 + 0xa838, 0xa934, 0x9105, 0x0d98, 0x0c30, 0xd2ec, 0x1d80, 0x7024,
17785 + 0x9306, 0x1118, 0x7020, 0x9406, 0x0d50, 0x7020, 0x683e, 0x7024,
17786 + 0x683a, 0x2001, 0x0005, 0x6832, 0x080c, 0xb3e0, 0x080c, 0x8125,
17787 + 0x0010, 0x080c, 0x9554, 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6,
17788 + 0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, 0x00b6, 0x2258,
17789 + 0xba10, 0x00be, 0x9206, 0x1904, 0x9c11, 0x700c, 0x6210, 0x00b6,
17790 + 0x2258, 0xba14, 0x00be, 0x9206, 0x1904, 0x9c11, 0x6038, 0x2068,
17791 + 0x6a20, 0x9286, 0x0007, 0x0904, 0x9c11, 0x9286, 0x0002, 0x0904,
17792 + 0x9c11, 0x9286, 0x0000, 0x05e8, 0x6808, 0x633c, 0x9306, 0x15c8,
17793 + 0x2071, 0x026c, 0x9186, 0x0015, 0x0570, 0x918e, 0x0016, 0x1100,
17794 + 0x00c6, 0x6038, 0x2060, 0x6104, 0x9186, 0x004b, 0x01c0, 0x9186,
17795 + 0x004c, 0x01a8, 0x9186, 0x004d, 0x0190, 0x9186, 0x004e, 0x0178,
17796 + 0x9186, 0x0052, 0x0160, 0x6014, 0x0096, 0x2048, 0x080c, 0xb0ad,
17797 + 0x090c, 0x0d84, 0xa883, 0x0003, 0x009e, 0x080c, 0xb71f, 0x6007,
17798 + 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x7bcb, 0x080c,
17799 + 0x8125, 0x00ce, 0x0030, 0x6038, 0x2070, 0x2001, 0x1955, 0x2004,
17800 + 0x7042, 0x080c, 0x9554, 0x002e, 0x00de, 0x00ee, 0x0005, 0x00b6,
17801 + 0x0096, 0x00f6, 0x6014, 0x2048, 0x6010, 0x2058, 0x91b6, 0x0015,
17802 + 0x0130, 0xba08, 0xbb0c, 0xbc00, 0xc48c, 0xbc02, 0x0460, 0x0096,
17803 + 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90, 0x0010, 0x2019, 0x000a,
17804 + 0x20a9, 0x0004, 0x080c, 0xa439, 0x002e, 0x003e, 0x015e, 0x009e,
17805 + 0x1904, 0x9c80, 0x0096, 0x0156, 0x0036, 0x0026, 0x2b48, 0x9e90,
17806 + 0x0014, 0x2019, 0x0006, 0x20a9, 0x0004, 0x080c, 0xa439, 0x002e,
17807 + 0x003e, 0x015e, 0x009e, 0x15a0, 0x7238, 0xba0a, 0x733c, 0xbb0e,
17808 + 0xbc00, 0xc48d, 0xbc02, 0xa804, 0x9005, 0x1128, 0x00fe, 0x009e,
17809 + 0x00be, 0x0804, 0x9920, 0x0096, 0x2048, 0xaa12, 0xab16, 0xac0a,
17810 + 0x009e, 0x8006, 0x8006, 0x8007, 0x90bc, 0x003f, 0x9084, 0xffc0,
17811 + 0x9080, 0x0002, 0x2009, 0x002b, 0xaaa0, 0xab9c, 0xaca8, 0xada4,
17812 + 0x2031, 0x0000, 0x2041, 0x11e3, 0x080c, 0x9a1f, 0x0130, 0x00fe,
17813 + 0x009e, 0x080c, 0x9554, 0x00be, 0x0005, 0x080c, 0x9e99, 0x0cb8,
17814 + 0x2b78, 0x00f6, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x00fe, 0x00c6,
17815 + 0x080c, 0x94fe, 0x2f00, 0x6012, 0x6017, 0x0000, 0x6023, 0x0001,
17816 + 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x080c, 0x5b61,
17817 + 0x080c, 0x5b8d, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00ce, 0x0804,
17818 + 0x9c53, 0x2100, 0x91b2, 0x0053, 0x1a0c, 0x0d84, 0x91b2, 0x0040,
17819 + 0x1a04, 0x9d09, 0x0002, 0x9cf7, 0x9cf7, 0x9ced, 0x9cf7, 0x9cf7,
17820 + 0x9cf7, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17821 + 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17822 + 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17823 + 0x9ceb, 0x9ceb, 0x9cf7, 0x9ceb, 0x9cf7, 0x9cf7, 0x9ceb, 0x9ceb,
17824 + 0x9ceb, 0x9ceb, 0x9ceb, 0x9ced, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17825 + 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9cf7, 0x9cf7, 0x9ceb,
17826 + 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb, 0x9ceb,
17827 + 0x9cf7, 0x9ceb, 0x9ceb, 0x080c, 0x0d84, 0x0066, 0x00b6, 0x6610,
17828 + 0x2658, 0xb8bc, 0xc08c, 0xb8be, 0x00be, 0x006e, 0x0000, 0x6003,
17829 + 0x0001, 0x6106, 0x9186, 0x0032, 0x0118, 0x080c, 0x7c1d, 0x0010,
17830 + 0x080c, 0x7bcb, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125, 0x012e,
17831 + 0x0005, 0x2600, 0x0002, 0x9d1d, 0x9d1d, 0x9d1d, 0x9cf7, 0x9cf7,
17832 + 0x9d1d, 0x9d1d, 0x9d1d, 0x9d1d, 0x9cf7, 0x9d1d, 0x9cf7, 0x9d1d,
17833 + 0x9cf7, 0x9d1d, 0x9d1d, 0x9d1d, 0x9d1d, 0x080c, 0x0d84, 0x6004,
17834 + 0x90b2, 0x0053, 0x1a0c, 0x0d84, 0x91b6, 0x0013, 0x0904, 0x9dd4,
17835 + 0x91b6, 0x0027, 0x1904, 0x9d8f, 0x080c, 0x8026, 0x6004, 0x080c,
17836 + 0xb284, 0x01a8, 0x080c, 0xb295, 0x01a0, 0x908e, 0x0021, 0x0904,
17837 + 0x9d8c, 0x908e, 0x0022, 0x1130, 0x080c, 0x994c, 0x0904, 0x9d88,
17838 + 0x0804, 0x9d89, 0x908e, 0x003d, 0x0904, 0x9d8c, 0x04d8, 0x080c,
17839 + 0x2d3f, 0x2001, 0x0007, 0x080c, 0x5b61, 0x6010, 0x00b6, 0x2058,
17840 + 0xb9a0, 0x00be, 0x080c, 0x9e99, 0x9186, 0x007e, 0x1148, 0x2001,
17841 + 0x1836, 0x2014, 0xc285, 0x080c, 0x6877, 0x1108, 0xc2ad, 0x2202,
17842 + 0x0036, 0x2019, 0x0028, 0x080c, 0x2e2f, 0x003e, 0x0016, 0x0026,
17843 + 0x0036, 0x2110, 0x2019, 0x0028, 0x080c, 0x7d55, 0x0076, 0x903e,
17844 + 0x080c, 0x7c4d, 0x6010, 0x00b6, 0x905d, 0x0100, 0x00be, 0x2c08,
17845 + 0x080c, 0xc73e, 0x007e, 0x003e, 0x002e, 0x001e, 0x080c, 0xb76c,
17846 + 0x080c, 0x5bd1, 0x080c, 0xb4de, 0x080c, 0x9554, 0x080c, 0x8125,
17847 + 0x0005, 0x080c, 0x9e99, 0x0cb0, 0x080c, 0x9ed5, 0x0c98, 0x9186,
17848 + 0x0014, 0x1db0, 0x080c, 0x8026, 0x6004, 0x908e, 0x0022, 0x1118,
17849 + 0x080c, 0x994c, 0x0d68, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x080c,
17850 + 0xb284, 0x1190, 0x080c, 0x2d3f, 0x6010, 0x00b6, 0x2058, 0xb9a0,
17851 + 0x00be, 0x080c, 0x9e99, 0x9186, 0x007e, 0x1128, 0x2001, 0x1836,
17852 + 0x200c, 0xc185, 0x2102, 0x0870, 0x080c, 0xb295, 0x1118, 0x080c,
17853 + 0x9e99, 0x0840, 0x6004, 0x908e, 0x0032, 0x1160, 0x00e6, 0x00f6,
17854 + 0x2071, 0x1893, 0x2079, 0x0000, 0x080c, 0x308f, 0x00fe, 0x00ee,
17855 + 0x0804, 0x9d82, 0x6004, 0x908e, 0x0021, 0x0d48, 0x908e, 0x0022,
17856 + 0x090c, 0x9e99, 0x0804, 0x9d82, 0x90b2, 0x0040, 0x1a04, 0x9e82,
17857 + 0x2008, 0x0002, 0x9e1c, 0x9e1d, 0x9e20, 0x9e23, 0x9e26, 0x9e29,
17858 + 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17859 + 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17860 + 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17861 + 0x9e2c, 0x9e37, 0x9e1a, 0x9e39, 0x9e37, 0x9e1a, 0x9e1a, 0x9e1a,
17862 + 0x9e1a, 0x9e1a, 0x9e37, 0x9e37, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a,
17863 + 0x9e1a, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e69, 0x9e37, 0x9e1a, 0x9e33,
17864 + 0x9e1a, 0x9e1a, 0x9e1a, 0x9e34, 0x9e1a, 0x9e1a, 0x9e1a, 0x9e37,
17865 + 0x9e60, 0x9e1a, 0x080c, 0x0d84, 0x00d0, 0x2001, 0x000b, 0x0410,
17866 + 0x2001, 0x0003, 0x00f8, 0x2001, 0x0005, 0x00e0, 0x2001, 0x0001,
17867 + 0x00c8, 0x2001, 0x0009, 0x00b0, 0x080c, 0x8026, 0x6003, 0x0005,
17868 + 0x080c, 0x8125, 0x0070, 0x0018, 0x0010, 0x080c, 0x5b61, 0x0804,
17869 + 0x9e7a, 0x080c, 0x8026, 0x080c, 0xb76f, 0x6003, 0x0004, 0x080c,
17870 + 0x8125, 0x0005, 0x080c, 0x5b61, 0x080c, 0x8026, 0x6003, 0x0002,
17871 + 0x0036, 0x2019, 0x185d, 0x2304, 0x9084, 0xff00, 0x1120, 0x2001,
17872 + 0x1953, 0x201c, 0x0040, 0x8007, 0x909a, 0x0004, 0x0ec0, 0x8003,
17873 + 0x801b, 0x831b, 0x9318, 0x631a, 0x003e, 0x080c, 0x8125, 0x0c08,
17874 + 0x080c, 0x8026, 0x080c, 0xb4de, 0x080c, 0x9554, 0x080c, 0x8125,
17875 + 0x08c0, 0x00e6, 0x00f6, 0x2071, 0x1893, 0x2079, 0x0000, 0x080c,
17876 + 0x308f, 0x00fe, 0x00ee, 0x080c, 0x8026, 0x080c, 0x9554, 0x080c,
17877 + 0x8125, 0x0838, 0x080c, 0x8026, 0x6003, 0x0002, 0x080c, 0xb76f,
17878 + 0x0804, 0x8125, 0x2600, 0x2008, 0x0002, 0x9e97, 0x9e97, 0x9e97,
17879 + 0x9e7a, 0x9e7a, 0x9e97, 0x9e97, 0x9e97, 0x9e97, 0x9e7a, 0x9e97,
17880 + 0x9e7a, 0x9e97, 0x9e7a, 0x9e97, 0x9e97, 0x9e97, 0x9e97, 0x080c,
17881 + 0x0d84, 0x00e6, 0x0096, 0x0026, 0x0016, 0x080c, 0xb0ad, 0x0568,
17882 + 0x6014, 0x2048, 0xa864, 0x9086, 0x0139, 0x11a8, 0xa894, 0x9086,
17883 + 0x0056, 0x1148, 0x080c, 0x4b95, 0x0130, 0x2001, 0x0000, 0x900e,
17884 + 0x2011, 0x4000, 0x0028, 0x2001, 0x0030, 0x900e, 0x2011, 0x4005,
17885 + 0x080c, 0xb644, 0x0090, 0xa868, 0xd0fc, 0x0178, 0xa807, 0x0000,
17886 + 0x0016, 0x6004, 0x908e, 0x0021, 0x0168, 0x908e, 0x003d, 0x0150,
17887 + 0x001e, 0xa867, 0x0103, 0xa833, 0x0100, 0x001e, 0x002e, 0x009e,
17888 + 0x00ee, 0x0005, 0x001e, 0x0009, 0x0cc0, 0x0096, 0x6014, 0x2048,
17889 + 0xa800, 0x2048, 0xa867, 0x0103, 0xa823, 0x8001, 0x009e, 0x0005,
17890 + 0x00b6, 0x6610, 0x2658, 0xb804, 0x9084, 0x00ff, 0x90b2, 0x000c,
17891 + 0x1a0c, 0x0d84, 0x6604, 0x96b6, 0x004d, 0x1120, 0x080c, 0xb56a,
17892 + 0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0043, 0x1120, 0x080c, 0xb5b3,
17893 + 0x0804, 0x9f5d, 0x6604, 0x96b6, 0x004b, 0x1120, 0x080c, 0xb5df,
17894 + 0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0033, 0x1120, 0x080c, 0xb500,
17895 + 0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0028, 0x1120, 0x080c, 0xb2c4,
17896 + 0x0804, 0x9f5d, 0x6604, 0x96b6, 0x0029, 0x1120, 0x080c, 0xb305,
17897 + 0x0804, 0x9f5d, 0x6604, 0x96b6, 0x001f, 0x1118, 0x080c, 0x98f5,
17898 + 0x04e0, 0x6604, 0x96b6, 0x0000, 0x1118, 0x080c, 0x9c17, 0x04a8,
17899 + 0x6604, 0x96b6, 0x0022, 0x1118, 0x080c, 0x992d, 0x0470, 0x6604,
17900 + 0x96b6, 0x0035, 0x1118, 0x080c, 0x9a3d, 0x0438, 0x6604, 0x96b6,
17901 + 0x0039, 0x1118, 0x080c, 0x9baf, 0x0400, 0x6604, 0x96b6, 0x003d,
17902 + 0x1118, 0x080c, 0x9965, 0x00c8, 0x6604, 0x96b6, 0x0044, 0x1118,
17903 + 0x080c, 0x99a1, 0x0090, 0x6604, 0x96b6, 0x0049, 0x1118, 0x080c,
17904 + 0x99cc, 0x0058, 0x91b6, 0x0015, 0x1110, 0x0063, 0x0030, 0x91b6,
17905 + 0x0016, 0x1128, 0x00be, 0x0804, 0xa178, 0x00be, 0x0005, 0x080c,
17906 + 0x95e9, 0x0cd8, 0x9f7a, 0x9f7d, 0x9f7a, 0x9fc2, 0x9f7a, 0xa0f1,
17907 + 0xa185, 0x9f7a, 0x9f7a, 0xa152, 0x9f7a, 0xa166, 0x0096, 0x080c,
17908 + 0x1489, 0x6014, 0x2048, 0xa800, 0x2048, 0xa867, 0x0103, 0x009e,
17909 + 0x0804, 0x9554, 0xa001, 0xa001, 0x0005, 0x00e6, 0x2071, 0x1800,
17910 + 0x7088, 0x9086, 0x0074, 0x1540, 0x080c, 0xc70f, 0x11b0, 0x6010,
17911 + 0x00b6, 0x2058, 0x7030, 0xd08c, 0x0128, 0xb800, 0xd0bc, 0x0110,
17912 + 0xc0c5, 0xb802, 0x00e9, 0x00be, 0x2001, 0x0006, 0x080c, 0x5b61,
17913 + 0x080c, 0x2d3f, 0x080c, 0x9554, 0x0088, 0x2001, 0x000a, 0x080c,
17914 + 0x5b61, 0x080c, 0x2d3f, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
17915 + 0x7c1d, 0x080c, 0x8125, 0x0010, 0x080c, 0xa0dc, 0x00ee, 0x0005,
17916 + 0x00d6, 0xb800, 0xd084, 0x0160, 0x9006, 0x080c, 0x5b4d, 0x2069,
17917 + 0x1852, 0x6804, 0xd0a4, 0x0120, 0x2001, 0x0006, 0x080c, 0x5b8d,
17918 + 0x00de, 0x0005, 0x00b6, 0x0096, 0x00d6, 0x2011, 0x1822, 0x2204,
17919 + 0x9086, 0x0074, 0x1904, 0xa0c0, 0x6010, 0x2058, 0xbaa0, 0x9286,
17920 + 0x007e, 0x1120, 0x080c, 0xa2c7, 0x0804, 0xa025, 0x080c, 0xa2bc,
17921 + 0x6010, 0x2058, 0xbaa0, 0x9286, 0x0080, 0x1510, 0x6014, 0x9005,
17922 + 0x01a8, 0x2048, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140,
17923 + 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xb644, 0x0030,
17924 + 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0x0200, 0x2001, 0x0006,
17925 + 0x080c, 0x5b61, 0x080c, 0x2d3f, 0x080c, 0x9554, 0x0804, 0xa0c1,
17926 + 0x080c, 0xa0c5, 0x6014, 0x9005, 0x0190, 0x2048, 0xa868, 0xd0f4,
17927 + 0x0170, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1d08, 0x2001,
17928 + 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xb644, 0x08f8, 0x2001,
17929 + 0x0004, 0x080c, 0x5b61, 0x6003, 0x0001, 0x6007, 0x0003, 0x080c,
17930 + 0x7c1d, 0x080c, 0x8125, 0x0804, 0xa0c1, 0xb85c, 0xd0e4, 0x01d0,
17931 + 0x080c, 0xb480, 0x080c, 0x6877, 0x0110, 0xd0dc, 0x1938, 0x2011,
17932 + 0x1836, 0x2204, 0xc0ad, 0x2012, 0x2001, 0x193c, 0x2004, 0x00f6,
17933 + 0x2079, 0x0100, 0x78e3, 0x0000, 0x080c, 0x2471, 0x78e2, 0x00fe,
17934 + 0x0804, 0x9ff6, 0x080c, 0xb4bd, 0x2011, 0x1836, 0x2204, 0xc0a5,
17935 + 0x2012, 0x0006, 0x080c, 0xc860, 0x000e, 0x1904, 0x9ff6, 0xc0b5,
17936 + 0x2012, 0x2001, 0x0006, 0x080c, 0x5b61, 0x9006, 0x080c, 0x5b4d,
17937 + 0x00c6, 0x2001, 0x180e, 0x2004, 0xd09c, 0x0520, 0x00f6, 0x2079,
17938 + 0x0100, 0x00e6, 0x2071, 0x1800, 0x700c, 0x9084, 0x00ff, 0x78e6,
17939 + 0x7076, 0x7010, 0x78ea, 0x707a, 0x908c, 0x00ff, 0x00ee, 0x780c,
17940 + 0xc0b5, 0x780e, 0x00fe, 0x080c, 0x2446, 0x00f6, 0x2100, 0x900e,
17941 + 0x080c, 0x23fd, 0x7956, 0x00fe, 0x9186, 0x0081, 0x01d8, 0x2009,
17942 + 0x0081, 0x00c8, 0x2009, 0x00ef, 0x00f6, 0x2079, 0x0100, 0x79ea,
17943 + 0x7932, 0x7936, 0x780c, 0xc0b5, 0x780e, 0x00fe, 0x080c, 0x2446,
17944 + 0x00f6, 0x2079, 0x1800, 0x797a, 0x2100, 0x900e, 0x080c, 0x23fd,
17945 + 0x7956, 0x00fe, 0x8108, 0x080c, 0x5bb0, 0x2b00, 0x00ce, 0x1904,
17946 + 0x9ff6, 0x6012, 0x2009, 0x180e, 0x210c, 0xd19c, 0x0150, 0x2009,
17947 + 0x027c, 0x210c, 0x918c, 0x00ff, 0xb912, 0x2009, 0x027d, 0x210c,
17948 + 0xb916, 0x2001, 0x0002, 0x080c, 0x5b61, 0x6023, 0x0001, 0x6003,
17949 + 0x0001, 0x6007, 0x0002, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x0008,
17950 + 0x00d9, 0x00de, 0x009e, 0x00be, 0x0005, 0x00e6, 0x080c, 0xccd1,
17951 + 0x0188, 0x2071, 0x0260, 0x7108, 0x720c, 0x918c, 0x00ff, 0x1118,
17952 + 0x9284, 0xff00, 0x0138, 0x6010, 0x2058, 0xb8a0, 0xd0bc, 0x1110,
17953 + 0xb912, 0xba16, 0x00ee, 0x0005, 0x2030, 0x2001, 0x0007, 0x080c,
17954 + 0x5b61, 0x080c, 0x4dfe, 0x1120, 0x2001, 0x0007, 0x080c, 0x5b8d,
17955 + 0x080c, 0x2d3f, 0x6020, 0x9086, 0x000a, 0x1108, 0x0005, 0x0804,
17956 + 0x9554, 0x00b6, 0x00e6, 0x0026, 0x0016, 0x2071, 0x1800, 0x7088,
17957 + 0x9086, 0x0014, 0x1904, 0xa149, 0x080c, 0x4dfe, 0x1170, 0x6014,
17958 + 0x9005, 0x1158, 0x0036, 0x0046, 0x6010, 0x2058, 0xbba0, 0x2021,
17959 + 0x0006, 0x080c, 0x44f9, 0x004e, 0x003e, 0x00d6, 0x6010, 0x2058,
17960 + 0x080c, 0x5ca8, 0x080c, 0x9fb0, 0x00de, 0x080c, 0xa38d, 0x1588,
17961 + 0x6010, 0x2058, 0xb890, 0x9005, 0x0560, 0x2001, 0x0006, 0x080c,
17962 + 0x5b61, 0x0096, 0x6014, 0x904d, 0x01d0, 0xa864, 0x9084, 0x00ff,
17963 + 0x9086, 0x0039, 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000,
17964 + 0x080c, 0xb644, 0x0060, 0xa864, 0x9084, 0x00ff, 0x9086, 0x0029,
17965 + 0x0130, 0xa807, 0x0000, 0xa867, 0x0103, 0xa833, 0x0200, 0x009e,
17966 + 0x080c, 0x2d3f, 0x6020, 0x9086, 0x000a, 0x0138, 0x080c, 0x9554,
17967 + 0x0020, 0x080c, 0x9e99, 0x080c, 0xa0dc, 0x001e, 0x002e, 0x00ee,
17968 + 0x00be, 0x0005, 0x2011, 0x1822, 0x2204, 0x9086, 0x0014, 0x1160,
17969 + 0x2001, 0x0002, 0x080c, 0x5b61, 0x6003, 0x0001, 0x6007, 0x0001,
17970 + 0x080c, 0x7c1d, 0x0804, 0x8125, 0x0804, 0xa0dc, 0x2030, 0x2011,
17971 + 0x1822, 0x2204, 0x9086, 0x0004, 0x1148, 0x96b6, 0x000b, 0x1120,
17972 + 0x2001, 0x0007, 0x080c, 0x5b61, 0x0804, 0x9554, 0x0804, 0xa0dc,
17973 + 0x0002, 0x9f7a, 0xa190, 0x9f7a, 0xa1cf, 0x9f7a, 0xa278, 0xa185,
17974 + 0x9f7a, 0x9f7a, 0xa28b, 0x9f7a, 0xa29b, 0x6604, 0x9686, 0x0003,
17975 + 0x0904, 0xa0f1, 0x96b6, 0x001e, 0x1110, 0x080c, 0x9554, 0x0005,
17976 + 0x00b6, 0x00d6, 0x00c6, 0x080c, 0xa2ab, 0x11a0, 0x9006, 0x080c,
17977 + 0x5b4d, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x2001, 0x0002, 0x080c,
17978 + 0x5b61, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x7c1d, 0x080c,
17979 + 0x8125, 0x0408, 0x2009, 0x026e, 0x2104, 0x9086, 0x0009, 0x1160,
17980 + 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0170, 0x8001,
17981 + 0xb842, 0x601b, 0x000a, 0x0078, 0x2009, 0x026f, 0x2104, 0x9084,
17982 + 0xff00, 0x9086, 0x1900, 0x1108, 0x08a0, 0x080c, 0x2d1a, 0x080c,
17983 + 0xb76c, 0x080c, 0xa0dc, 0x00ce, 0x00de, 0x00be, 0x0005, 0x0096,
17984 + 0x00b6, 0x0026, 0x9016, 0x080c, 0xa2b9, 0x00d6, 0x2069, 0x194b,
17985 + 0x2d04, 0x9005, 0x0168, 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e,
17986 + 0x1138, 0x2069, 0x181e, 0x2d04, 0x8000, 0x206a, 0x00de, 0x0010,
17987 + 0x00de, 0x0088, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002, 0x080c,
17988 + 0x5b61, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x7c1d, 0x080c,
17989 + 0x8125, 0x0804, 0xa248, 0x080c, 0xb0ad, 0x01a0, 0x6014, 0x2048,
17990 + 0xa864, 0x2010, 0x9086, 0x0139, 0x1128, 0x2001, 0x0002, 0x080c,
17991 + 0xb69a, 0x00b0, 0x6014, 0x2048, 0xa864, 0xd0fc, 0x0118, 0x2001,
17992 + 0x0001, 0x0ca8, 0x2001, 0x180d, 0x2004, 0xd0dc, 0x0148, 0x6010,
17993 + 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x1110, 0x9006, 0x0c38,
17994 + 0x080c, 0x9e99, 0x2009, 0x026e, 0x2134, 0x96b4, 0x00ff, 0x9686,
17995 + 0x0005, 0x0510, 0x9686, 0x000b, 0x01c8, 0x2009, 0x026f, 0x2104,
17996 + 0x9084, 0xff00, 0x1118, 0x9686, 0x0009, 0x01b0, 0x9086, 0x1900,
17997 + 0x1168, 0x9686, 0x0009, 0x0180, 0x2001, 0x0004, 0x080c, 0x5b61,
17998 + 0x2001, 0x0028, 0x601a, 0x6007, 0x0052, 0x0010, 0x080c, 0xa0dc,
17999 + 0x002e, 0x00be, 0x009e, 0x0005, 0x9286, 0x0139, 0x0160, 0x6014,
18000 + 0x2048, 0x080c, 0xb0ad, 0x0140, 0xa864, 0x9086, 0x0139, 0x0118,
18001 + 0xa868, 0xd0fc, 0x0108, 0x0c50, 0x6010, 0x2058, 0xb840, 0x9084,
18002 + 0x00ff, 0x9005, 0x0138, 0x8001, 0xb842, 0x601b, 0x000a, 0x6007,
18003 + 0x0016, 0x08f0, 0xb8a0, 0x9086, 0x007e, 0x1138, 0x00e6, 0x2071,
18004 + 0x1800, 0x080c, 0x5677, 0x00ee, 0x0010, 0x080c, 0x2d1a, 0x0870,
18005 + 0x080c, 0xa2b9, 0x1160, 0x2001, 0x0004, 0x080c, 0x5b61, 0x6003,
18006 + 0x0001, 0x6007, 0x0003, 0x080c, 0x7c1d, 0x0804, 0x8125, 0x080c,
18007 + 0x9e99, 0x0804, 0xa0dc, 0x0469, 0x1160, 0x2001, 0x0008, 0x080c,
18008 + 0x5b61, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, 0x7c1d, 0x0804,
18009 + 0x8125, 0x0804, 0xa0dc, 0x00e9, 0x1160, 0x2001, 0x000a, 0x080c,
18010 + 0x5b61, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x7c1d, 0x0804,
18011 + 0x8125, 0x0804, 0xa0dc, 0x2009, 0x026e, 0x2104, 0x9086, 0x0003,
18012 + 0x1138, 0x2009, 0x026f, 0x2104, 0x9084, 0xff00, 0x9086, 0x2a00,
18013 + 0x0005, 0x9085, 0x0001, 0x0005, 0x00b6, 0x00c6, 0x0016, 0x6110,
18014 + 0x2158, 0x080c, 0x5c1c, 0x001e, 0x00ce, 0x00be, 0x0005, 0x00b6,
18015 + 0x00f6, 0x00e6, 0x00d6, 0x0036, 0x0016, 0x6010, 0x2058, 0x2009,
18016 + 0x1836, 0x2104, 0x9085, 0x0003, 0x200a, 0x080c, 0xa35f, 0x0560,
18017 + 0x2009, 0x1836, 0x2104, 0xc0cd, 0x200a, 0x080c, 0x5f29, 0x0158,
18018 + 0x9006, 0x2020, 0x2009, 0x002a, 0x080c, 0xc9c5, 0x2001, 0x180c,
18019 + 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x080c,
18020 + 0x2ce5, 0x00e6, 0x2071, 0x1800, 0x080c, 0x2b1e, 0x00ee, 0x00c6,
18021 + 0x0156, 0x20a9, 0x0781, 0x2009, 0x007f, 0x080c, 0x2e11, 0x8108,
18022 + 0x1f04, 0xa2fd, 0x015e, 0x00ce, 0x080c, 0xa2bc, 0x2071, 0x0260,
18023 + 0x2079, 0x0200, 0x7817, 0x0001, 0x2001, 0x1836, 0x200c, 0xc1c5,
18024 + 0x7018, 0xd0fc, 0x0110, 0xd0dc, 0x0118, 0x7038, 0xd0dc, 0x1108,
18025 + 0xc1c4, 0x7817, 0x0000, 0x2001, 0x1836, 0x2102, 0x2079, 0x0100,
18026 + 0x2e04, 0x9084, 0x00ff, 0x2069, 0x181d, 0x206a, 0x78e6, 0x0006,
18027 + 0x8e70, 0x2e04, 0x2069, 0x181e, 0x206a, 0x78ea, 0x7832, 0x7836,
18028 + 0x2010, 0x9084, 0xff00, 0x001e, 0x9105, 0x2009, 0x182a, 0x200a,
18029 + 0x2200, 0x9084, 0x00ff, 0x2008, 0x080c, 0x2446, 0x080c, 0x6877,
18030 + 0x0170, 0x2071, 0x0260, 0x2069, 0x194f, 0x7048, 0x206a, 0x704c,
18031 + 0x6806, 0x7050, 0x680a, 0x7054, 0x680e, 0x080c, 0xb480, 0x0040,
18032 + 0x2001, 0x0006, 0x080c, 0x5b61, 0x080c, 0x2d3f, 0x080c, 0x9554,
18033 + 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x00be, 0x0005, 0x0096,
18034 + 0x0026, 0x0036, 0x00e6, 0x0156, 0x2019, 0x182a, 0x231c, 0x83ff,
18035 + 0x01f0, 0x2071, 0x0260, 0x7200, 0x9294, 0x00ff, 0x7004, 0x9084,
18036 + 0xff00, 0x9205, 0x9306, 0x1198, 0x2011, 0x0276, 0x20a9, 0x0004,
18037 + 0x2b48, 0x2019, 0x000a, 0x080c, 0xa439, 0x1148, 0x2011, 0x027a,
18038 + 0x20a9, 0x0004, 0x2019, 0x0006, 0x080c, 0xa439, 0x1100, 0x015e,
18039 + 0x00ee, 0x003e, 0x002e, 0x009e, 0x0005, 0x00e6, 0x2071, 0x0260,
18040 + 0x7034, 0x9086, 0x0014, 0x11a8, 0x7038, 0x9086, 0x0800, 0x1188,
18041 + 0x703c, 0xd0ec, 0x0160, 0x9084, 0x0f00, 0x9086, 0x0100, 0x1138,
18042 + 0x7054, 0xd0a4, 0x1110, 0xd0ac, 0x0110, 0x9006, 0x0010, 0x9085,
18043 + 0x0001, 0x00ee, 0x0005, 0x00e6, 0x0096, 0x00c6, 0x0076, 0x0056,
18044 + 0x0046, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2029, 0x19bd,
18045 + 0x252c, 0x2021, 0x19c3, 0x2424, 0x2061, 0x1cd0, 0x2071, 0x1800,
18046 + 0x724c, 0x706c, 0x9202, 0x1a04, 0xa411, 0x080c, 0xc9f1, 0x0904,
18047 + 0xa40a, 0x6720, 0x9786, 0x0007, 0x05e8, 0x2500, 0x9c06, 0x05d0,
18048 + 0x2400, 0x9c06, 0x05b8, 0x3e08, 0x9186, 0x0002, 0x1148, 0x6010,
18049 + 0x9005, 0x0130, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x1550,
18050 + 0x00c6, 0x6000, 0x9086, 0x0004, 0x1110, 0x080c, 0x17b0, 0x9786,
18051 + 0x0008, 0x1148, 0x080c, 0xb295, 0x1130, 0x00ce, 0x080c, 0x9e99,
18052 + 0x080c, 0x9584, 0x00b8, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0178,
18053 + 0x9786, 0x0003, 0x1500, 0x080c, 0xc810, 0x0110, 0xa867, 0x0103,
18054 + 0xab7a, 0xa877, 0x0000, 0x080c, 0x619c, 0x080c, 0xb278, 0x080c,
18055 + 0x9584, 0x00ce, 0x9ce0, 0x0018, 0x7060, 0x9c02, 0x1210, 0x0804,
18056 + 0xa3c0, 0x012e, 0x000e, 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce,
18057 + 0x009e, 0x00ee, 0x0005, 0x9786, 0x0006, 0x1118, 0x080c, 0xc970,
18058 + 0x0c30, 0x9786, 0x000a, 0x09e0, 0x08b0, 0x220c, 0x2304, 0x9106,
18059 + 0x1130, 0x8210, 0x8318, 0x1f04, 0xa425, 0x9006, 0x0005, 0x2304,
18060 + 0x9102, 0x0218, 0x2001, 0x0001, 0x0008, 0x9006, 0x918d, 0x0001,
18061 + 0x0005, 0x0136, 0x01c6, 0x0016, 0x8906, 0x8006, 0x8007, 0x908c,
18062 + 0x003f, 0x21e0, 0x9084, 0xffc0, 0x9300, 0x2098, 0x3518, 0x20a9,
18063 + 0x0001, 0x220c, 0x4002, 0x910e, 0x1140, 0x8210, 0x8319, 0x1dc8,
18064 + 0x9006, 0x001e, 0x01ce, 0x013e, 0x0005, 0x220c, 0x9102, 0x0218,
18065 + 0x2001, 0x0001, 0x0010, 0x2001, 0x0000, 0x918d, 0x0001, 0x001e,
18066 + 0x01ce, 0x013e, 0x0005, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0d84,
18067 + 0x080c, 0xb284, 0x0120, 0x080c, 0xb295, 0x0168, 0x0028, 0x080c,
18068 + 0x2d3f, 0x080c, 0xb295, 0x0138, 0x080c, 0x8026, 0x080c, 0x9554,
18069 + 0x080c, 0x8125, 0x0005, 0x080c, 0x9e99, 0x0cb0, 0x9182, 0x0040,
18070 + 0x0002, 0xa495, 0xa495, 0xa495, 0xa495, 0xa495, 0xa495, 0xa495,
18071 + 0xa495, 0xa495, 0xa495, 0xa495, 0xa497, 0xa497, 0xa497, 0xa497,
18072 + 0xa495, 0xa495, 0xa495, 0xa497, 0xa495, 0x080c, 0x0d84, 0x600b,
18073 + 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, 0x7bcb, 0x0126, 0x2091,
18074 + 0x8000, 0x080c, 0x8125, 0x012e, 0x0005, 0x9186, 0x0013, 0x1128,
18075 + 0x6004, 0x9082, 0x0040, 0x0804, 0xa536, 0x9186, 0x0027, 0x11f0,
18076 + 0x080c, 0x8026, 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x0096, 0x6114,
18077 + 0x2148, 0x080c, 0xb0ad, 0x0168, 0xa867, 0x0103, 0xa87b, 0x0029,
18078 + 0xa877, 0x0000, 0xa97c, 0xc1c5, 0xa97e, 0x080c, 0x61a9, 0x080c,
18079 + 0xb278, 0x009e, 0x080c, 0x9554, 0x0804, 0x8125, 0x9186, 0x0014,
18080 + 0x1120, 0x6004, 0x9082, 0x0040, 0x0440, 0x9186, 0x0046, 0x0150,
18081 + 0x9186, 0x0045, 0x0138, 0x9186, 0x0053, 0x0120, 0x9186, 0x0048,
18082 + 0x190c, 0x0d84, 0x2001, 0x0109, 0x2004, 0xd084, 0x01a8, 0x0126,
18083 + 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x0036, 0x080c, 0x7ab7,
18084 + 0x003e, 0x002e, 0x001e, 0x000e, 0x012e, 0xa001, 0x6000, 0x9086,
18085 + 0x0002, 0x1110, 0x0804, 0xa574, 0x0005, 0x0002, 0xa514, 0xa512,
18086 + 0xa512, 0xa512, 0xa512, 0xa512, 0xa512, 0xa512, 0xa512, 0xa512,
18087 + 0xa512, 0xa52f, 0xa52f, 0xa52f, 0xa52f, 0xa512, 0xa52f, 0xa512,
18088 + 0xa52f, 0xa512, 0x080c, 0x0d84, 0x080c, 0x8026, 0x0096, 0x6114,
18089 + 0x2148, 0x080c, 0xb0ad, 0x0168, 0xa867, 0x0103, 0xa87b, 0x0006,
18090 + 0xa877, 0x0000, 0xa880, 0xc0ec, 0xa882, 0x080c, 0x61a9, 0x080c,
18091 + 0xb278, 0x009e, 0x080c, 0x9554, 0x080c, 0x8125, 0x0005, 0x080c,
18092 + 0x8026, 0x080c, 0x9554, 0x080c, 0x8125, 0x0005, 0x0002, 0xa54d,
18093 + 0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b, 0xa54b,
18094 + 0xa54b, 0xa54b, 0xa564, 0xa564, 0xa564, 0xa564, 0xa54b, 0xa56e,
18095 + 0xa54b, 0xa564, 0xa54b, 0x080c, 0x0d84, 0x0096, 0x080c, 0x8026,
18096 + 0x6014, 0x2048, 0x2001, 0x1955, 0x2004, 0x6042, 0xa97c, 0xd1ac,
18097 + 0x0140, 0x6003, 0x0004, 0xa87c, 0x9085, 0x0400, 0xa87e, 0x009e,
18098 + 0x0005, 0x6003, 0x0002, 0x0cb8, 0x080c, 0x8026, 0x080c, 0xb76f,
18099 + 0x080c, 0xb774, 0x6003, 0x000f, 0x0804, 0x8125, 0x080c, 0x8026,
18100 + 0x080c, 0x9554, 0x0804, 0x8125, 0x9182, 0x0040, 0x0002, 0xa58b,
18101 + 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58d, 0xa66a, 0xa58b, 0xa58b,
18102 + 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b, 0xa58b,
18103 + 0xa58b, 0xa58b, 0xa69e, 0x080c, 0x0d84, 0x00b6, 0x0096, 0x6114,
18104 + 0x2148, 0x7644, 0x96b4, 0x0fff, 0x86ff, 0x1528, 0x6010, 0x2058,
18105 + 0xb800, 0xd0bc, 0x1904, 0xa659, 0xa87b, 0x0000, 0xa867, 0x0103,
18106 + 0xae76, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, 0x9115, 0x190c,
18107 + 0xa82a, 0x080c, 0x5fda, 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0110,
18108 + 0x8211, 0xba3e, 0x7044, 0xd0e4, 0x1904, 0xa63d, 0x080c, 0x9554,
18109 + 0x009e, 0x00be, 0x0005, 0x968c, 0x0c00, 0x0150, 0x6010, 0x2058,
18110 + 0xb800, 0xd0bc, 0x1904, 0xa641, 0x7348, 0xab92, 0x734c, 0xab8e,
18111 + 0x968c, 0x00ff, 0x9186, 0x0002, 0x0508, 0x9186, 0x0028, 0x1118,
18112 + 0xa87b, 0x001c, 0x00e8, 0xd6dc, 0x01a0, 0xa87b, 0x0015, 0xa87c,
18113 + 0xd0ac, 0x0170, 0xa938, 0xaa34, 0x2100, 0x9205, 0x0148, 0x7048,
18114 + 0x9106, 0x1118, 0x704c, 0x9206, 0x0118, 0xa992, 0xaa8e, 0xc6dc,
18115 + 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000,
18116 + 0xa867, 0x0103, 0xae76, 0x901e, 0xd6c4, 0x01d8, 0x9686, 0x0100,
18117 + 0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4, 0x0804, 0xa594, 0x735c,
18118 + 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008,
18119 + 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xace6,
18120 + 0x003e, 0xd6cc, 0x0904, 0xa5a9, 0x7154, 0xa98a, 0x81ff, 0x0904,
18121 + 0xa5a9, 0x9192, 0x0021, 0x1278, 0x8304, 0x9098, 0x0018, 0x2011,
18122 + 0x0029, 0x080c, 0xace6, 0x2011, 0x0205, 0x2013, 0x0000, 0x080c,
18123 + 0xb706, 0x0804, 0xa5a9, 0xa868, 0xd0fc, 0x0120, 0x2009, 0x0020,
18124 + 0xa98a, 0x0c50, 0x00a6, 0x2950, 0x080c, 0xac85, 0x00ae, 0x080c,
18125 + 0xb706, 0x080c, 0xacd6, 0x0804, 0xa5ab, 0x080c, 0xb37e, 0x0804,
18126 + 0xa5b8, 0xa87c, 0xd0ac, 0x0904, 0xa5c4, 0xa880, 0xd0bc, 0x1904,
18127 + 0xa5c4, 0x7348, 0xa838, 0x9306, 0x11c8, 0x734c, 0xa834, 0x931e,
18128 + 0x0904, 0xa5c4, 0xd6d4, 0x0190, 0xab38, 0x9305, 0x0904, 0xa5c4,
18129 + 0x0068, 0xa87c, 0xd0ac, 0x0904, 0xa59c, 0xa838, 0xa934, 0x9105,
18130 + 0x0904, 0xa59c, 0xa880, 0xd0bc, 0x1904, 0xa59c, 0x080c, 0xb3ae,
18131 + 0x0804, 0xa5b8, 0x0096, 0x00f6, 0x6003, 0x0003, 0x6007, 0x0043,
18132 + 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6014, 0x2048,
18133 + 0xa87c, 0xd0ac, 0x0140, 0x6003, 0x0002, 0x00fe, 0x009e, 0x0005,
18134 + 0x2130, 0x2228, 0x0058, 0x2400, 0xa9ac, 0x910a, 0x2300, 0xaab0,
18135 + 0x9213, 0x2600, 0x9102, 0x2500, 0x9203, 0x0e90, 0xac36, 0xab3a,
18136 + 0xae46, 0xad4a, 0x00fe, 0x6043, 0x0000, 0x2c10, 0x080c, 0x18b7,
18137 + 0x080c, 0x7c3a, 0x080c, 0x820b, 0x009e, 0x0005, 0x0005, 0x9182,
18138 + 0x0040, 0x0002, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b8,
18139 + 0xa74e, 0xa6b6, 0xa6b6, 0xa765, 0xa7f1, 0xa6b6, 0xa6b6, 0xa6b6,
18140 + 0xa6b6, 0xa806, 0xa6b6, 0xa6b6, 0xa6b6, 0xa6b6, 0x080c, 0x0d84,
18141 + 0x0076, 0x00a6, 0x00e6, 0x0096, 0x2071, 0x0260, 0x6114, 0x2150,
18142 + 0x7644, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, 0xb77e, 0x6210,
18143 + 0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e, 0x00be,
18144 + 0x86ff, 0x0904, 0xa749, 0x9694, 0xff00, 0x9284, 0x0c00, 0x0120,
18145 + 0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, 0x0904, 0xa749,
18146 + 0x080c, 0x0fae, 0x090c, 0x0d84, 0x2900, 0xb07a, 0xb77c, 0xc7cd,
18147 + 0xb77e, 0xa867, 0x0103, 0xb068, 0xa86a, 0xb06c, 0xa86e, 0xb070,
18148 + 0xa872, 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c,
18149 + 0xab8e, 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028,
18150 + 0x1118, 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015,
18151 + 0x0038, 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000,
18152 + 0xaf7e, 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190,
18153 + 0x735c, 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019,
18154 + 0x0008, 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c,
18155 + 0xace6, 0x003e, 0xd6cc, 0x01e8, 0x7154, 0xa98a, 0x81ff, 0x01c8,
18156 + 0x9192, 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029,
18157 + 0x080c, 0xace6, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0xb068,
18158 + 0xd0fc, 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x2950, 0x080c,
18159 + 0xac85, 0x009e, 0x00ee, 0x00ae, 0x007e, 0x0005, 0x00f6, 0x00a6,
18160 + 0x6003, 0x0003, 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08,
18161 + 0x6014, 0x2050, 0xb436, 0xb33a, 0xb646, 0xb54a, 0x00ae, 0x00fe,
18162 + 0x2c10, 0x080c, 0x18b7, 0x0804, 0x8b1d, 0x6003, 0x0002, 0x6004,
18163 + 0x9086, 0x0040, 0x11c8, 0x0096, 0x6014, 0x2048, 0xa87c, 0xd0ac,
18164 + 0x0160, 0x601c, 0xd084, 0x1130, 0x00f6, 0x2c00, 0x2078, 0x080c,
18165 + 0x150d, 0x00fe, 0x6003, 0x0004, 0x0010, 0x6003, 0x0002, 0x009e,
18166 + 0x080c, 0x8026, 0x080c, 0x8125, 0x0096, 0x2001, 0x1955, 0x2004,
18167 + 0x6042, 0x080c, 0x80d6, 0x080c, 0x820b, 0x6114, 0x2148, 0xa97c,
18168 + 0xd1e4, 0x0904, 0xa7ec, 0xd1cc, 0x05a8, 0xa978, 0xa868, 0xd0fc,
18169 + 0x0538, 0x0016, 0xa87c, 0x0006, 0xa880, 0x0006, 0xa860, 0x20e8,
18170 + 0xa85c, 0x9080, 0x0019, 0x20a0, 0x810e, 0x810e, 0x810f, 0x9184,
18171 + 0x003f, 0x20e0, 0x9184, 0xffc0, 0x9080, 0x0019, 0x2098, 0x0156,
18172 + 0x20a9, 0x0020, 0x4003, 0x015e, 0x000e, 0xa882, 0x000e, 0xa87e,
18173 + 0x001e, 0xa874, 0x0006, 0x2148, 0x080c, 0x0f60, 0x001e, 0x0440,
18174 + 0x0016, 0x080c, 0x0f60, 0x009e, 0xa974, 0x0016, 0x080c, 0xacd6,
18175 + 0x001e, 0x00f0, 0xa867, 0x0103, 0xa974, 0x9184, 0x00ff, 0x90b6,
18176 + 0x0002, 0x0180, 0x9086, 0x0028, 0x1118, 0xa87b, 0x001c, 0x0060,
18177 + 0xd1dc, 0x0118, 0xa87b, 0x0015, 0x0038, 0xd1d4, 0x0118, 0xa87b,
18178 + 0x0007, 0x0010, 0xa87b, 0x0000, 0x0016, 0x080c, 0x5fda, 0x001e,
18179 + 0xd1e4, 0x1120, 0x080c, 0x9554, 0x009e, 0x0005, 0x080c, 0xb37e,
18180 + 0x0cd8, 0x6004, 0x9086, 0x0040, 0x1120, 0x080c, 0x8026, 0x080c,
18181 + 0x8125, 0x2019, 0x0001, 0x080c, 0x8dfe, 0x6003, 0x0002, 0x080c,
18182 + 0xb774, 0x080c, 0x80d6, 0x080c, 0x820b, 0x0005, 0x6004, 0x9086,
18183 + 0x0040, 0x1120, 0x080c, 0x8026, 0x080c, 0x8125, 0x080c, 0x80d6,
18184 + 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x0096, 0x6114, 0x2148, 0x080c,
18185 + 0xb0ad, 0x0150, 0xa867, 0x0103, 0xa87b, 0x0029, 0xa877, 0x0000,
18186 + 0x080c, 0x61a9, 0x080c, 0xb278, 0x009e, 0x080c, 0x9554, 0x080c,
18187 + 0x820b, 0x0005, 0xa87b, 0x0015, 0xd1fc, 0x0138, 0xa87b, 0x0007,
18188 + 0x8002, 0x8000, 0x810a, 0x9189, 0x0000, 0xa992, 0xa88e, 0x0005,
18189 + 0x9182, 0x0040, 0x0002, 0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xa84f,
18190 + 0xa851, 0xa84f, 0xa84f, 0xa8f4, 0xa84f, 0xa84f, 0xa84f, 0xa84f,
18191 + 0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xa84f, 0xaa22, 0x080c,
18192 + 0x0d84, 0x0076, 0x00a6, 0x00e6, 0x0096, 0x2071, 0x0260, 0x6114,
18193 + 0x2150, 0x7644, 0xb676, 0x96b4, 0x0fff, 0xb77c, 0xc7e5, 0xb77e,
18194 + 0x6210, 0x00b6, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211, 0xba3e,
18195 + 0x00be, 0x86ff, 0x0904, 0xa8ed, 0x9694, 0xff00, 0x9284, 0x0c00,
18196 + 0x0120, 0x7048, 0xb092, 0x704c, 0xb08e, 0x9284, 0x0300, 0x0904,
18197 + 0xa8ed, 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4,
18198 + 0xb676, 0x0c38, 0x080c, 0x0fae, 0x090c, 0x0d84, 0x2900, 0xb07a,
18199 + 0xb77c, 0x97bd, 0x0200, 0xb77e, 0xa867, 0x0103, 0xb068, 0xa86a,
18200 + 0xb06c, 0xa86e, 0xb070, 0xa872, 0x7044, 0x9084, 0xf000, 0x9635,
18201 + 0xae76, 0x968c, 0x0c00, 0x0120, 0x7348, 0xab92, 0x734c, 0xab8e,
18202 + 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, 0x1118,
18203 + 0xa87b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0xa87b, 0x0015, 0x0038,
18204 + 0xd6d4, 0x0118, 0xa87b, 0x0007, 0x0010, 0xa87b, 0x0000, 0xaf7e,
18205 + 0xb080, 0xa882, 0xb084, 0xa886, 0x901e, 0xd6c4, 0x0190, 0x735c,
18206 + 0xab86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008,
18207 + 0x0036, 0x2308, 0x2019, 0x0018, 0x2011, 0x0025, 0x080c, 0xace6,
18208 + 0x003e, 0xd6cc, 0x01d0, 0x7154, 0xa98a, 0x81ff, 0x01b0, 0x9192,
18209 + 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x2011, 0x0029, 0x080c,
18210 + 0xace6, 0x2011, 0x0205, 0x2013, 0x0000, 0x0038, 0xb068, 0xd0fc,
18211 + 0x0120, 0x2009, 0x0020, 0xa98a, 0x0c68, 0x080c, 0x178e, 0x009e,
18212 + 0x00ee, 0x00ae, 0x007e, 0x0005, 0x2001, 0x1955, 0x2004, 0x6042,
18213 + 0x0096, 0x6114, 0x2148, 0xa83c, 0xa940, 0x9105, 0x1118, 0xa87c,
18214 + 0xc0dc, 0xa87e, 0x6003, 0x0002, 0xa97c, 0xd1e4, 0x0904, 0xaa1d,
18215 + 0x6043, 0x0000, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc,
18216 + 0x11f8, 0xd1cc, 0x0904, 0xa9ec, 0xa978, 0xa868, 0xd0fc, 0x0904,
18217 + 0xa9ad, 0x0016, 0xa87c, 0x0006, 0xa880, 0x0006, 0x00a6, 0x2150,
18218 + 0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x0904, 0xa97b, 0x9086,
18219 + 0x0028, 0x15e8, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x0804, 0xa983,
18220 + 0x6024, 0xd0f4, 0x11d0, 0xa838, 0xaa34, 0x9205, 0x09d0, 0xa838,
18221 + 0xaa90, 0x9206, 0x1120, 0xa88c, 0xaa34, 0x9206, 0x0990, 0x6024,
18222 + 0xd0d4, 0x1148, 0xa9ac, 0xa834, 0x9102, 0x603a, 0xa9b0, 0xa838,
18223 + 0x9103, 0x603e, 0x6024, 0xc0f5, 0x6026, 0x6010, 0x00b6, 0x2058,
18224 + 0xb83c, 0x8000, 0xb83e, 0x00be, 0x9006, 0xa876, 0xa892, 0xa88e,
18225 + 0xa87c, 0xc0e4, 0xa87e, 0xd0cc, 0x0130, 0x0096, 0xa878, 0x2048,
18226 + 0x080c, 0x0f60, 0x009e, 0x080c, 0xb3ae, 0x0804, 0xaa1d, 0xd1dc,
18227 + 0x0158, 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xb62d, 0x0118,
18228 + 0xb174, 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007,
18229 + 0xb07b, 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938,
18230 + 0x9115, 0x190c, 0xa82a, 0xa87c, 0xb07e, 0xa890, 0xb092, 0xa88c,
18231 + 0xb08e, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0019, 0x20a0, 0x20a9,
18232 + 0x0020, 0x8a06, 0x8006, 0x8007, 0x9094, 0x003f, 0x22e0, 0x9084,
18233 + 0xffc0, 0x9080, 0x0019, 0x2098, 0x4003, 0x00ae, 0x000e, 0xa882,
18234 + 0x000e, 0xa87e, 0x080c, 0xb706, 0x001e, 0xa874, 0x0006, 0x2148,
18235 + 0x080c, 0x0f60, 0x001e, 0x0804, 0xaa19, 0x0016, 0x00a6, 0x2150,
18236 + 0xb174, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01e0, 0x9086, 0x0028,
18237 + 0x1128, 0xa87b, 0x001c, 0xb07b, 0x001c, 0x00e0, 0xd1dc, 0x0158,
18238 + 0xa87b, 0x0015, 0xb07b, 0x0015, 0x080c, 0xb62d, 0x0118, 0xb174,
18239 + 0xc1dc, 0xb176, 0x0078, 0xd1d4, 0x0128, 0xa87b, 0x0007, 0xb07b,
18240 + 0x0007, 0x0040, 0xa87c, 0xd0ac, 0x0128, 0xa834, 0xa938, 0x9115,
18241 + 0x190c, 0xa82a, 0xa890, 0xb092, 0xa88c, 0xb08e, 0xa87c, 0xb07e,
18242 + 0x00ae, 0x080c, 0x0f60, 0x009e, 0x080c, 0xb706, 0xa974, 0x0016,
18243 + 0x080c, 0xacd6, 0x001e, 0x0468, 0xa867, 0x0103, 0xa974, 0x9184,
18244 + 0x00ff, 0x90b6, 0x0002, 0x01b0, 0x9086, 0x0028, 0x1118, 0xa87b,
18245 + 0x001c, 0x00d0, 0xd1dc, 0x0148, 0xa87b, 0x0015, 0x080c, 0xb62d,
18246 + 0x0118, 0xa974, 0xc1dc, 0xa976, 0x0078, 0xd1d4, 0x0118, 0xa87b,
18247 + 0x0007, 0x0050, 0xa87b, 0x0000, 0xa87c, 0xd0ac, 0x0128, 0xa834,
18248 + 0xa938, 0x9115, 0x190c, 0xa82a, 0xa974, 0x0016, 0x080c, 0x5fda,
18249 + 0x001e, 0xd1e4, 0x1120, 0x080c, 0x9554, 0x009e, 0x0005, 0x080c,
18250 + 0xb37e, 0x0cd8, 0x6114, 0x0096, 0x2148, 0xa97c, 0xd1e4, 0x190c,
18251 + 0x179c, 0x009e, 0x0005, 0x080c, 0x8026, 0x0010, 0x080c, 0x80d6,
18252 + 0x080c, 0xb0ad, 0x01c0, 0x0096, 0x6114, 0x2148, 0xa867, 0x0103,
18253 + 0x2009, 0x180c, 0x210c, 0xd18c, 0x11b8, 0xd184, 0x1190, 0x6108,
18254 + 0xa97a, 0x918e, 0x0029, 0x1110, 0x080c, 0xcc6b, 0xa877, 0x0000,
18255 + 0x080c, 0x61a9, 0x009e, 0x080c, 0x9554, 0x080c, 0x8125, 0x0804,
18256 + 0x820b, 0xa87b, 0x0004, 0x0c90, 0xa87b, 0x0004, 0x0c78, 0x9182,
18257 + 0x0040, 0x0002, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa70,
18258 + 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e,
18259 + 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0xaa6e, 0x080c, 0x0d84,
18260 + 0x080c, 0x4df2, 0x01f8, 0x6014, 0x7144, 0x918c, 0x0fff, 0x9016,
18261 + 0xd1c4, 0x0118, 0x7264, 0x9294, 0x00ff, 0x0096, 0x904d, 0x0188,
18262 + 0xa87b, 0x0000, 0xa864, 0x9086, 0x0139, 0x0128, 0xa867, 0x0103,
18263 + 0xa976, 0xaa96, 0x0030, 0xa897, 0x4000, 0xa99a, 0xaa9e, 0x080c,
18264 + 0x61a9, 0x009e, 0x0804, 0x9554, 0x9182, 0x0085, 0x0002, 0xaaa6,
18265 + 0xaaa4, 0xaaa4, 0xaab2, 0xaaa4, 0xaaa4, 0xaaa4, 0xaaa4, 0xaaa4,
18266 + 0xaaa4, 0xaaa4, 0xaaa4, 0xaaa4, 0x080c, 0x0d84, 0x6003, 0x0001,
18267 + 0x6106, 0x080c, 0x7bcb, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125,
18268 + 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, 0x00e6, 0x2071, 0x0260,
18269 + 0x7224, 0x6216, 0x7220, 0x080c, 0xb09b, 0x01a0, 0x2268, 0x6800,
18270 + 0x9086, 0x0000, 0x0178, 0x6010, 0x6d10, 0x952e, 0x1158, 0x00c6,
18271 + 0x2d60, 0x080c, 0xad11, 0x00ce, 0x0128, 0x6803, 0x0002, 0x6007,
18272 + 0x0086, 0x0010, 0x6007, 0x0087, 0x6003, 0x0001, 0x080c, 0x7bcb,
18273 + 0x080c, 0x8125, 0x9280, 0x0004, 0x00b6, 0x2058, 0xb800, 0x00be,
18274 + 0xd0bc, 0x0140, 0x6824, 0xd0ec, 0x0128, 0x00c6, 0x2260, 0x080c,
18275 + 0xb3ae, 0x00ce, 0x00ee, 0x00de, 0x005e, 0x002e, 0x0005, 0x9186,
18276 + 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d84, 0x908a,
18277 + 0x0092, 0x1a0c, 0x0d84, 0x9082, 0x0085, 0x006a, 0x9186, 0x0027,
18278 + 0x0120, 0x9186, 0x0014, 0x190c, 0x0d84, 0x080c, 0x8026, 0x080c,
18279 + 0x9584, 0x0804, 0x8125, 0xab18, 0xab1a, 0xab1a, 0xab18, 0xab18,
18280 + 0xab18, 0xab18, 0xab18, 0xab18, 0xab18, 0xab18, 0xab18, 0xab18,
18281 + 0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c, 0x8125,
18282 + 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, 0x9082, 0x0085, 0x2008,
18283 + 0x04b8, 0x9186, 0x0027, 0x11f8, 0x080c, 0x8026, 0x080c, 0x2d1a,
18284 + 0x080c, 0xb76c, 0x0096, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0150,
18285 + 0xa867, 0x0103, 0xa877, 0x0000, 0xa87b, 0x0029, 0x080c, 0x61a9,
18286 + 0x080c, 0xb278, 0x009e, 0x080c, 0x9554, 0x080c, 0x8125, 0x0005,
18287 + 0x080c, 0x95e9, 0x0ce0, 0x9186, 0x0014, 0x1dd0, 0x080c, 0x8026,
18288 + 0x0096, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0d60, 0xa867, 0x0103,
18289 + 0xa877, 0x0000, 0xa87b, 0x0006, 0xa880, 0xc0ec, 0xa882, 0x08f0,
18290 + 0x0002, 0xab70, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab88,
18291 + 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0xab6e, 0x080c, 0x0d84,
18292 + 0x080c, 0x8026, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039,
18293 + 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x1953, 0x0010, 0x2001,
18294 + 0x1954, 0x2004, 0x601a, 0x6003, 0x000c, 0x080c, 0x8125, 0x0005,
18295 + 0x080c, 0x8026, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039,
18296 + 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x1953, 0x0010, 0x2001,
18297 + 0x1954, 0x2004, 0x601a, 0x6003, 0x000e, 0x080c, 0x8125, 0x0005,
18298 + 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208, 0x0012, 0x0804,
18299 + 0x95e9, 0xabb6, 0xabb6, 0xabb6, 0xabb6, 0xabb8, 0xac05, 0xabb6,
18300 + 0xabb6, 0xabb6, 0xabb6, 0xabb6, 0xabb6, 0xabb6, 0x080c, 0x0d84,
18301 + 0x0096, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0168,
18302 + 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186,
18303 + 0x0035, 0x1118, 0x009e, 0x0804, 0xac19, 0x080c, 0xb0ad, 0x1118,
18304 + 0x080c, 0xb278, 0x0068, 0x6014, 0x2048, 0xa87c, 0xd0e4, 0x1110,
18305 + 0x080c, 0xb278, 0xa867, 0x0103, 0x080c, 0xb739, 0x080c, 0x61a9,
18306 + 0x00d6, 0x2c68, 0x080c, 0x94fe, 0x01d0, 0x6003, 0x0001, 0x6007,
18307 + 0x001e, 0x600b, 0xffff, 0x2009, 0x026e, 0x210c, 0x613a, 0x2009,
18308 + 0x026f, 0x210c, 0x613e, 0x6910, 0x6112, 0x080c, 0xb4e6, 0x6954,
18309 + 0x6156, 0x6023, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2d60,
18310 + 0x00de, 0x080c, 0x9554, 0x009e, 0x0005, 0x6010, 0x00b6, 0x2058,
18311 + 0xb800, 0x00be, 0xd0bc, 0x0598, 0x6034, 0x908c, 0xff00, 0x810f,
18312 + 0x9186, 0x0035, 0x0130, 0x9186, 0x001e, 0x0118, 0x9186, 0x0039,
18313 + 0x1530, 0x00d6, 0x2c68, 0x080c, 0xb6d9, 0x1904, 0xac5e, 0x080c,
18314 + 0x94fe, 0x01d8, 0x6106, 0x6003, 0x0001, 0x6023, 0x0001, 0x6910,
18315 + 0x6112, 0x692c, 0x612e, 0x6930, 0x6132, 0x6934, 0x918c, 0x00ff,
18316 + 0x6136, 0x6938, 0x613a, 0x693c, 0x613e, 0x6954, 0x6156, 0x080c,
18317 + 0xb4e6, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2d60, 0x00f8, 0x0096,
18318 + 0x6014, 0x2048, 0x080c, 0xb0ad, 0x01c8, 0xa867, 0x0103, 0xa880,
18319 + 0xd0b4, 0x0128, 0xc0ec, 0xa882, 0xa87b, 0x0006, 0x0048, 0xd0bc,
18320 + 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005, 0x080c, 0xb37a,
18321 + 0xa877, 0x0000, 0x080c, 0x61a9, 0x080c, 0xb278, 0x009e, 0x0804,
18322 + 0x9554, 0x0016, 0x0096, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0140,
18323 + 0xa867, 0x0103, 0xa87b, 0x0028, 0xa877, 0x0000, 0x080c, 0x61a9,
18324 + 0x009e, 0x001e, 0x9186, 0x0013, 0x0148, 0x9186, 0x0014, 0x0130,
18325 + 0x9186, 0x0027, 0x0118, 0x080c, 0x95e9, 0x0030, 0x080c, 0x8026,
18326 + 0x080c, 0x9584, 0x080c, 0x8125, 0x0005, 0x0056, 0x0066, 0x0096,
18327 + 0x00a6, 0x2029, 0x0001, 0x9182, 0x0101, 0x1208, 0x0010, 0x2009,
18328 + 0x0100, 0x2130, 0x8304, 0x9098, 0x0018, 0x2009, 0x0020, 0x2011,
18329 + 0x0029, 0x080c, 0xace6, 0x96b2, 0x0020, 0xb004, 0x904d, 0x0110,
18330 + 0x080c, 0x0f60, 0x080c, 0x0fae, 0x0520, 0x8528, 0xa867, 0x0110,
18331 + 0xa86b, 0x0000, 0x2920, 0xb406, 0x968a, 0x003d, 0x1228, 0x2608,
18332 + 0x2011, 0x001b, 0x0499, 0x00a8, 0x96b2, 0x003c, 0x2009, 0x003c,
18333 + 0x2950, 0x2011, 0x001b, 0x0451, 0x0c28, 0x2001, 0x0205, 0x2003,
18334 + 0x0000, 0x00ae, 0x852f, 0x95ad, 0x0003, 0xb566, 0x95ac, 0x0000,
18335 + 0x0048, 0x2001, 0x0205, 0x2003, 0x0000, 0x00ae, 0x852f, 0x95ad,
18336 + 0x0003, 0xb566, 0x009e, 0x006e, 0x005e, 0x0005, 0x00a6, 0x89ff,
18337 + 0x0158, 0xa804, 0x9055, 0x0130, 0xa807, 0x0000, 0x080c, 0x61a9,
18338 + 0x2a48, 0x0cb8, 0x080c, 0x61a9, 0x00ae, 0x0005, 0x00f6, 0x2079,
18339 + 0x0200, 0x7814, 0x9085, 0x0080, 0x7816, 0xd184, 0x0108, 0x8108,
18340 + 0x810c, 0x20a9, 0x0001, 0xa860, 0x20e8, 0xa85c, 0x9200, 0x20a0,
18341 + 0x20e1, 0x0000, 0x2300, 0x9e00, 0x2098, 0x4003, 0x8318, 0x9386,
18342 + 0x0020, 0x1148, 0x2018, 0x2300, 0x9e00, 0x2098, 0x7814, 0x8000,
18343 + 0x9085, 0x0080, 0x7816, 0x8109, 0x1d80, 0x7817, 0x0000, 0x00fe,
18344 + 0x0005, 0x0066, 0x0126, 0x2091, 0x8000, 0x2031, 0x0001, 0x6020,
18345 + 0x9084, 0x000f, 0x0083, 0x012e, 0x006e, 0x0005, 0x0126, 0x2091,
18346 + 0x8000, 0x0066, 0x2031, 0x0000, 0x6020, 0x9084, 0x000f, 0x001b,
18347 + 0x006e, 0x012e, 0x0005, 0xad4c, 0xad4c, 0xad47, 0xad6e, 0xad3a,
18348 + 0xad47, 0xad6e, 0xad47, 0xad3a, 0xad3a, 0xad47, 0xad47, 0xad47,
18349 + 0xad3a, 0xad3a, 0x080c, 0x0d84, 0x0036, 0x2019, 0x0010, 0x080c,
18350 + 0xc58e, 0x6023, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x9006,
18351 + 0x0005, 0x9085, 0x0001, 0x0005, 0x0096, 0x86ff, 0x11d8, 0x6014,
18352 + 0x2048, 0x080c, 0xb0ad, 0x01c0, 0xa864, 0x9086, 0x0139, 0x1128,
18353 + 0xa87b, 0x0005, 0xa883, 0x0000, 0x0028, 0x900e, 0x2001, 0x0005,
18354 + 0x080c, 0x63d1, 0x080c, 0xb37a, 0x080c, 0x61a9, 0x080c, 0x9584,
18355 + 0x9085, 0x0001, 0x009e, 0x0005, 0x9006, 0x0ce0, 0x6000, 0x908a,
18356 + 0x0016, 0x1a0c, 0x0d84, 0x0002, 0xad84, 0xada9, 0xad86, 0xadc7,
18357 + 0xada4, 0xad84, 0xad47, 0xad4c, 0xad4c, 0xad47, 0xad47, 0xad47,
18358 + 0xad47, 0xad47, 0xad47, 0xad47, 0x080c, 0x0d84, 0x86ff, 0x11c8,
18359 + 0x6020, 0x9086, 0x0006, 0x01a8, 0x0096, 0x6014, 0x2048, 0x080c,
18360 + 0xb0ad, 0x0110, 0x080c, 0xb37a, 0x009e, 0x080c, 0xb71b, 0x6007,
18361 + 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x7bcb, 0x080c,
18362 + 0x8125, 0x9085, 0x0001, 0x0005, 0x0066, 0x080c, 0x17b0, 0x006e,
18363 + 0x08e8, 0x00e6, 0x2071, 0x19b4, 0x7024, 0x9c06, 0x1110, 0x080c,
18364 + 0x8d59, 0x6020, 0x9084, 0x000f, 0x9086, 0x0006, 0x1150, 0x0086,
18365 + 0x0096, 0x2049, 0x0001, 0x2c40, 0x080c, 0x8ef6, 0x009e, 0x008e,
18366 + 0x0010, 0x080c, 0x8c6a, 0x00ee, 0x1908, 0x0804, 0xad47, 0x0036,
18367 + 0x00e6, 0x2071, 0x19b4, 0x703c, 0x9c06, 0x1138, 0x901e, 0x080c,
18368 + 0x8dfe, 0x00ee, 0x003e, 0x0804, 0xad86, 0x080c, 0x901f, 0x00ee,
18369 + 0x003e, 0x1904, 0xad86, 0x0804, 0xad47, 0x00c6, 0x6020, 0x9084,
18370 + 0x000f, 0x0013, 0x00ce, 0x0005, 0xadfa, 0xaea2, 0xaff8, 0xae04,
18371 + 0x9584, 0xadfa, 0xc580, 0xb779, 0xaea2, 0xadf3, 0xb077, 0xadf3,
18372 + 0xadf3, 0xadf3, 0xadf3, 0x080c, 0x0d84, 0x080c, 0xb295, 0x1110,
18373 + 0x080c, 0x9e99, 0x0005, 0x080c, 0x8026, 0x080c, 0x8125, 0x0804,
18374 + 0x9554, 0x601b, 0x0001, 0x0005, 0x080c, 0xb0ad, 0x0130, 0x6014,
18375 + 0x0096, 0x2048, 0x2c00, 0xa896, 0x009e, 0x6000, 0x908a, 0x0016,
18376 + 0x1a0c, 0x0d84, 0x0002, 0xae23, 0xae25, 0xae49, 0xae5d, 0xae81,
18377 + 0xae23, 0xadfa, 0xadfa, 0xadfa, 0xae5d, 0xae5d, 0xae23, 0xae23,
18378 + 0xae23, 0xae23, 0xae67, 0x080c, 0x0d84, 0x00e6, 0x6014, 0x0096,
18379 + 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x2071, 0x19b4, 0x7024,
18380 + 0x9c06, 0x01a0, 0x080c, 0x8c6a, 0x080c, 0xb71b, 0x6007, 0x0085,
18381 + 0x6003, 0x000b, 0x6023, 0x0002, 0x2001, 0x1954, 0x2004, 0x601a,
18382 + 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ee, 0x0005, 0x601b, 0x0001,
18383 + 0x0cd8, 0x0096, 0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e,
18384 + 0x080c, 0xb71b, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002,
18385 + 0x080c, 0x7bcb, 0x080c, 0x8125, 0x0005, 0x0096, 0x601b, 0x0001,
18386 + 0x6014, 0x2048, 0xa880, 0xc0b5, 0xa882, 0x009e, 0x0005, 0x080c,
18387 + 0x4df2, 0x01a8, 0x6014, 0x0096, 0x904d, 0x0180, 0xa864, 0xa867,
18388 + 0x0103, 0xa87b, 0x0006, 0x9086, 0x0139, 0x1140, 0xa867, 0x0139,
18389 + 0xa897, 0x4005, 0xa89b, 0x0004, 0x080c, 0x61a9, 0x009e, 0x0804,
18390 + 0x9554, 0x6014, 0x0096, 0x904d, 0x01c0, 0xa97c, 0xd1e4, 0x01a8,
18391 + 0xa884, 0x009e, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0x2001,
18392 + 0x0037, 0x2c08, 0x080c, 0x1492, 0x6000, 0x9086, 0x0004, 0x1120,
18393 + 0x2009, 0x0048, 0x080c, 0x95ce, 0x0005, 0x009e, 0x080c, 0x17b0,
18394 + 0x0804, 0xae49, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d84, 0x000b,
18395 + 0x0005, 0xaeb9, 0xae01, 0xaebb, 0xaeb9, 0xaebb, 0xaebb, 0xadfb,
18396 + 0xaeb9, 0xadf5, 0xadf5, 0xaeb9, 0xaeb9, 0xaeb9, 0xaeb9, 0xaeb9,
18397 + 0xaeb9, 0x080c, 0x0d84, 0x6010, 0x00b6, 0x2058, 0xb804, 0x9084,
18398 + 0x00ff, 0x00be, 0x908a, 0x000c, 0x1a0c, 0x0d84, 0x00b6, 0x0013,
18399 + 0x00be, 0x0005, 0xaed6, 0xaf92, 0xaed8, 0xaf13, 0xaed8, 0xaf13,
18400 + 0xaed8, 0xaee6, 0xaed6, 0xaf13, 0xaed6, 0xaf02, 0x080c, 0x0d84,
18401 + 0x6004, 0x908e, 0x0016, 0x0598, 0x908e, 0x0004, 0x0580, 0x908e,
18402 + 0x0002, 0x0568, 0x908e, 0x0052, 0x0904, 0xaf8e, 0x6004, 0x080c,
18403 + 0xb295, 0x0904, 0xafab, 0x908e, 0x0021, 0x0904, 0xafaf, 0x908e,
18404 + 0x0022, 0x0904, 0xaff3, 0x908e, 0x003d, 0x0904, 0xafaf, 0x908e,
18405 + 0x0039, 0x0904, 0xafb3, 0x908e, 0x0035, 0x0904, 0xafb3, 0x908e,
18406 + 0x001e, 0x0178, 0x908e, 0x0001, 0x1140, 0x6010, 0x2058, 0xb804,
18407 + 0x9084, 0x00ff, 0x9086, 0x0006, 0x0110, 0x080c, 0x2d1a, 0x080c,
18408 + 0x9e99, 0x0804, 0x9584, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016,
18409 + 0x0904, 0xaf7f, 0x9186, 0x0002, 0x15b8, 0x2001, 0x1836, 0x2004,
18410 + 0xd08c, 0x1178, 0x080c, 0x6877, 0x1160, 0x2001, 0x194c, 0x2003,
18411 + 0x0001, 0x2001, 0x1800, 0x2003, 0x0001, 0x080c, 0x67be, 0x0804,
18412 + 0xafdc, 0x6010, 0x2058, 0x2001, 0x1836, 0x2004, 0xd0ac, 0x1904,
18413 + 0xafdc, 0xb8a0, 0xd0bc, 0x1904, 0xafdc, 0xb840, 0x9084, 0x00ff,
18414 + 0x9005, 0x0190, 0x8001, 0xb842, 0x6017, 0x0000, 0x6023, 0x0007,
18415 + 0x601b, 0x0398, 0x6043, 0x0000, 0x080c, 0x94fe, 0x0128, 0x2b00,
18416 + 0x6012, 0x6023, 0x0001, 0x0458, 0x00de, 0x00ce, 0x6004, 0x908e,
18417 + 0x0002, 0x11a0, 0x6010, 0x2058, 0xb8a0, 0x9086, 0x007e, 0x1170,
18418 + 0x2009, 0x1836, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, 0x1800,
18419 + 0x080c, 0x5677, 0x00ee, 0x080c, 0x9e99, 0x0030, 0x080c, 0x9e99,
18420 + 0x080c, 0x2d1a, 0x080c, 0xb76c, 0x00e6, 0x0126, 0x2091, 0x8000,
18421 + 0x080c, 0x2d3f, 0x012e, 0x00ee, 0x080c, 0x9584, 0x0005, 0x2001,
18422 + 0x0002, 0x080c, 0x5b61, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c,
18423 + 0x7c1d, 0x080c, 0x8125, 0x00de, 0x00ce, 0x0c80, 0x080c, 0x2d3f,
18424 + 0x0804, 0xaf0f, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, 0x0d38,
18425 + 0x6010, 0x2058, 0xb840, 0x9084, 0x00ff, 0x9005, 0x0904, 0xaf54,
18426 + 0x8001, 0xb842, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125,
18427 + 0x00de, 0x00ce, 0x0898, 0x080c, 0x9e99, 0x0804, 0xaf11, 0x080c,
18428 + 0x9ed5, 0x0804, 0xaf11, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xb6d9,
18429 + 0x00de, 0x0118, 0x080c, 0x9554, 0x00f0, 0x6004, 0x8007, 0x6134,
18430 + 0x918c, 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b,
18431 + 0x6023, 0x0002, 0x603c, 0x600a, 0x2001, 0x1954, 0x2004, 0x601a,
18432 + 0x602c, 0x2c08, 0x2060, 0x6024, 0xc0b5, 0x6026, 0x2160, 0x080c,
18433 + 0x7bcb, 0x080c, 0x8125, 0x0005, 0x00de, 0x00ce, 0x080c, 0x9e99,
18434 + 0x080c, 0x2d1a, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2d3f,
18435 + 0x6017, 0x0000, 0x6023, 0x0007, 0x601b, 0x0398, 0x6043, 0x0000,
18436 + 0x012e, 0x00ee, 0x0005, 0x080c, 0x994c, 0x1904, 0xafab, 0x0005,
18437 + 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d84, 0x0096, 0x00d6, 0x001b,
18438 + 0x00de, 0x009e, 0x0005, 0xb013, 0xb013, 0xb013, 0xb013, 0xb013,
18439 + 0xb013, 0xb013, 0xb013, 0xb013, 0xadfa, 0xb013, 0xae01, 0xb015,
18440 + 0xae01, 0xb022, 0xb013, 0x080c, 0x0d84, 0x6004, 0x9086, 0x008b,
18441 + 0x0148, 0x6007, 0x008b, 0x6003, 0x000d, 0x080c, 0x7bcb, 0x080c,
18442 + 0x8125, 0x0005, 0x080c, 0xb74d, 0x0118, 0x080c, 0xb75e, 0x0010,
18443 + 0x080c, 0xb76c, 0x080c, 0xb278, 0x080c, 0xb0ad, 0x0570, 0x080c,
18444 + 0x2d1a, 0x080c, 0xb0ad, 0x0168, 0x6014, 0x2048, 0xa867, 0x0103,
18445 + 0xa87b, 0x0006, 0xa877, 0x0000, 0xa880, 0xc0ed, 0xa882, 0x080c,
18446 + 0x61a9, 0x2c68, 0x080c, 0x94fe, 0x0150, 0x6810, 0x6012, 0x080c,
18447 + 0xb4e6, 0x00c6, 0x2d60, 0x080c, 0x9584, 0x00ce, 0x0008, 0x2d60,
18448 + 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001,
18449 + 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00c8, 0x080c, 0xb74d, 0x0138,
18450 + 0x6034, 0x9086, 0x4000, 0x1118, 0x080c, 0x2d1a, 0x08d0, 0x6034,
18451 + 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035,
18452 + 0x1118, 0x080c, 0x2d1a, 0x0868, 0x080c, 0x9584, 0x0005, 0x6000,
18453 + 0x908a, 0x0016, 0x1a0c, 0x0d84, 0x0002, 0xb08d, 0xb08d, 0xb08f,
18454 + 0xb08f, 0xb08f, 0xb08d, 0xb08d, 0xb08d, 0xb08d, 0xb08d, 0xb08d,
18455 + 0xb08d, 0xb08d, 0xb08d, 0xb08d, 0xb08d, 0x080c, 0x0d84, 0x080c,
18456 + 0x901f, 0x6114, 0x0096, 0x2148, 0xa87b, 0x0006, 0x080c, 0x61a9,
18457 + 0x009e, 0x0804, 0x9554, 0x9284, 0x0007, 0x1158, 0x9282, 0x1cd0,
18458 + 0x0240, 0x2001, 0x1818, 0x2004, 0x9202, 0x1218, 0x9085, 0x0001,
18459 + 0x0005, 0x9006, 0x0ce8, 0x0096, 0x0018, 0x0096, 0x6014, 0x2048,
18460 + 0x9984, 0xf000, 0x9086, 0xf000, 0x0110, 0x080c, 0x1057, 0x009e,
18461 + 0x0005, 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000,
18462 + 0x2061, 0x1cd0, 0x2071, 0x1800, 0x734c, 0x706c, 0x9302, 0x12a8,
18463 + 0x6020, 0x9206, 0x1160, 0x080c, 0xb460, 0x0148, 0x080c, 0xb295,
18464 + 0x1110, 0x080c, 0x9e99, 0x00c6, 0x080c, 0x9554, 0x00ce, 0x9ce0,
18465 + 0x0018, 0x7060, 0x9c02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e,
18466 + 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0x9188, 0x1000,
18467 + 0x210c, 0x81ff, 0x0128, 0x2061, 0x1a72, 0x6112, 0x080c, 0x2d1a,
18468 + 0x9006, 0x0010, 0x9085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005,
18469 + 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x94fe, 0x01d8, 0x080c,
18470 + 0x4df2, 0x0110, 0x662e, 0x0008, 0x6616, 0x2b00, 0x6012, 0x080c,
18471 + 0x4df2, 0x0118, 0x080c, 0xb1bc, 0x0168, 0x080c, 0xb4e6, 0x6023,
18472 + 0x0003, 0x2009, 0x004b, 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e,
18473 + 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000,
18474 + 0xbaa0, 0x080c, 0x95a1, 0x0590, 0x080c, 0x4df2, 0x0118, 0x602f,
18475 + 0x0000, 0x0010, 0x6017, 0x0000, 0x2b00, 0x6012, 0x080c, 0xb4e6,
18476 + 0x6023, 0x0003, 0x0016, 0x080c, 0x7d55, 0x0076, 0x903e, 0x080c,
18477 + 0x7c4d, 0x2c08, 0x080c, 0xc73e, 0x007e, 0x001e, 0xd184, 0x0128,
18478 + 0x080c, 0x9554, 0x9085, 0x0001, 0x0070, 0x080c, 0x4df2, 0x0128,
18479 + 0xd18c, 0x1170, 0x080c, 0xb1bc, 0x0148, 0x2009, 0x004c, 0x080c,
18480 + 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8,
18481 + 0x2900, 0x6016, 0x0c90, 0x2009, 0x004d, 0x0010, 0x2009, 0x004e,
18482 + 0x00f6, 0x00c6, 0x0046, 0x0016, 0x080c, 0x94fe, 0x2c78, 0x01d8,
18483 + 0x080c, 0x4df2, 0x0110, 0x7e2e, 0x0008, 0x7e16, 0x2b00, 0x7812,
18484 + 0x7823, 0x0003, 0x2021, 0x0005, 0x080c, 0xb1ce, 0x2f60, 0x080c,
18485 + 0x4df2, 0x0118, 0x080c, 0xb1bc, 0x0130, 0x001e, 0x0016, 0x080c,
18486 + 0x95ce, 0x9085, 0x0001, 0x001e, 0x004e, 0x00ce, 0x00fe, 0x0005,
18487 + 0x00f6, 0x00c6, 0x0046, 0x080c, 0x94fe, 0x2c78, 0x0530, 0x080c,
18488 + 0x4df2, 0x0110, 0x7e2e, 0x0008, 0x7e16, 0x2b00, 0x7812, 0x7823,
18489 + 0x0003, 0x0096, 0x2021, 0x0004, 0x0489, 0x009e, 0x2001, 0x194d,
18490 + 0x200c, 0xd1fc, 0x0120, 0x2f60, 0x080c, 0x9554, 0x0060, 0x2f60,
18491 + 0x080c, 0x4df2, 0x0120, 0xd18c, 0x1160, 0x0071, 0x0130, 0x2009,
18492 + 0x0052, 0x080c, 0x95ce, 0x9085, 0x0001, 0x004e, 0x00ce, 0x00fe,
18493 + 0x0005, 0x2900, 0x7816, 0x0c98, 0x00c6, 0x080c, 0x441f, 0x00ce,
18494 + 0x1120, 0x080c, 0x9554, 0x9006, 0x0005, 0xa867, 0x0000, 0xa86b,
18495 + 0x8000, 0x2900, 0x6016, 0x9085, 0x0001, 0x0005, 0x0096, 0x0076,
18496 + 0x0126, 0x2091, 0x8000, 0x080c, 0x5d41, 0x0158, 0x2001, 0xb1d3,
18497 + 0x0006, 0x900e, 0x2400, 0x080c, 0x63d1, 0x080c, 0x61a9, 0x000e,
18498 + 0x0807, 0x2418, 0x080c, 0x7fc0, 0xbaa0, 0x0086, 0x2041, 0x0001,
18499 + 0x2039, 0x0001, 0x2608, 0x080c, 0x7d6d, 0x008e, 0x080c, 0x7c4d,
18500 + 0x2f08, 0x2648, 0x080c, 0xc73e, 0xb93c, 0x81ff, 0x090c, 0x7e2b,
18501 + 0x080c, 0x8125, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126,
18502 + 0x2091, 0x8000, 0x080c, 0x94fe, 0x0190, 0x660a, 0x2b08, 0x6112,
18503 + 0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x001f,
18504 + 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006,
18505 + 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x95a1, 0x01b8,
18506 + 0x660a, 0x2b08, 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0008, 0x2900,
18507 + 0x6016, 0x00f6, 0x2c78, 0x080c, 0x150d, 0x00fe, 0x2009, 0x0021,
18508 + 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006,
18509 + 0x0cd8, 0x2009, 0x003d, 0x00c6, 0x0126, 0x0016, 0x2091, 0x8000,
18510 + 0x080c, 0x94fe, 0x0198, 0x660a, 0x2b08, 0x6112, 0x080c, 0xb4e6,
18511 + 0x6023, 0x0001, 0x2900, 0x6016, 0x001e, 0x0016, 0x080c, 0x95ce,
18512 + 0x9085, 0x0001, 0x001e, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd0,
18513 + 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x95a1, 0x0188, 0x2b08,
18514 + 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009,
18515 + 0x0000, 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005,
18516 + 0x9006, 0x0cd8, 0x2009, 0x0044, 0x0830, 0x2009, 0x0049, 0x0818,
18517 + 0x0026, 0x00b6, 0x6210, 0x2258, 0xba3c, 0x82ff, 0x0110, 0x8211,
18518 + 0xba3e, 0x00be, 0x002e, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e,
18519 + 0x0002, 0x0140, 0x908e, 0x0003, 0x0128, 0x908e, 0x0004, 0x0110,
18520 + 0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x0096, 0x6014,
18521 + 0x904d, 0x0148, 0xa864, 0x9086, 0x0139, 0x0138, 0xa868, 0xd0fc,
18522 + 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x009e, 0x000e, 0x0005,
18523 + 0x00c6, 0x0126, 0x2091, 0x8000, 0x080c, 0x94fe, 0x0198, 0x2b08,
18524 + 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x080c,
18525 + 0x2d1a, 0x2009, 0x0028, 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e,
18526 + 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x9186, 0x0015, 0x11a8, 0x2011,
18527 + 0x1822, 0x2204, 0x9086, 0x0074, 0x1178, 0x00b6, 0x080c, 0xa0c5,
18528 + 0x00be, 0x080c, 0xa2bc, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c,
18529 + 0x7c1d, 0x080c, 0x8125, 0x0078, 0x6014, 0x0096, 0x2048, 0xa868,
18530 + 0x009e, 0xd0fc, 0x0148, 0x2001, 0x0001, 0x080c, 0xb69a, 0x080c,
18531 + 0x9e99, 0x080c, 0x9554, 0x0005, 0x0096, 0x6014, 0x904d, 0x090c,
18532 + 0x0d84, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b,
18533 + 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9,
18534 + 0x012e, 0x009e, 0x080c, 0x9554, 0x0c30, 0x0096, 0x9186, 0x0016,
18535 + 0x1128, 0x2001, 0x0004, 0x080c, 0x5b61, 0x00e8, 0x9186, 0x0015,
18536 + 0x1510, 0x2011, 0x1822, 0x2204, 0x9086, 0x0014, 0x11e0, 0x6010,
18537 + 0x00b6, 0x2058, 0x080c, 0x5ca8, 0x00be, 0x080c, 0xa38d, 0x1198,
18538 + 0x6010, 0x00b6, 0x2058, 0xb890, 0x00be, 0x9005, 0x0160, 0x2001,
18539 + 0x0006, 0x080c, 0x5b61, 0x6014, 0x2048, 0xa868, 0xd0fc, 0x0170,
18540 + 0x080c, 0x9920, 0x0048, 0x6014, 0x2048, 0xa868, 0xd0fc, 0x0528,
18541 + 0x080c, 0x9e99, 0x080c, 0x9554, 0x009e, 0x0005, 0x6014, 0x6310,
18542 + 0x2358, 0x904d, 0x090c, 0x0d84, 0xa87b, 0x0000, 0xa883, 0x0000,
18543 + 0xa897, 0x4000, 0x900e, 0x080c, 0x5e2d, 0x1108, 0xc185, 0xb800,
18544 + 0xd0bc, 0x0108, 0xc18d, 0xa99a, 0x0126, 0x2091, 0x8000, 0x080c,
18545 + 0x61a9, 0x012e, 0x080c, 0x9554, 0x08f8, 0x6014, 0x904d, 0x090c,
18546 + 0x0d84, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005, 0xa89b,
18547 + 0x0004, 0xa867, 0x0139, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9,
18548 + 0x012e, 0x080c, 0x9554, 0x0840, 0xa878, 0x9086, 0x0005, 0x1108,
18549 + 0x0009, 0x0005, 0xa880, 0xc0ad, 0xa882, 0x0005, 0x6043, 0x0000,
18550 + 0x6017, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, 0x7bcb,
18551 + 0x080c, 0x8125, 0x0005, 0x00c6, 0x6010, 0x00b6, 0x2058, 0xb800,
18552 + 0x00be, 0xd0bc, 0x0120, 0x6020, 0x9084, 0x000f, 0x0013, 0x00ce,
18553 + 0x0005, 0xadfa, 0xb3aa, 0xb3aa, 0xb3ad, 0xca0f, 0xca2a, 0xca2d,
18554 + 0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa, 0xadfa,
18555 + 0x080c, 0x0d84, 0xa001, 0xa001, 0x0005, 0x0000, 0x6010, 0x00b6,
18556 + 0x2058, 0xb800, 0x00be, 0xd0bc, 0x0550, 0x00f6, 0x2c78, 0x080c,
18557 + 0x94fe, 0x1128, 0x2001, 0x1955, 0x2004, 0x7842, 0x00f8, 0x7810,
18558 + 0x6012, 0x080c, 0xb4e6, 0x7820, 0x9086, 0x0003, 0x0128, 0x7808,
18559 + 0x603a, 0x2f00, 0x603e, 0x0020, 0x7808, 0x603e, 0x2f00, 0x603a,
18560 + 0x602e, 0x6023, 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x7954,
18561 + 0x6156, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2f60, 0x00fe, 0x0005,
18562 + 0x0016, 0x0096, 0x6814, 0x2048, 0xa87c, 0xd0e4, 0x0170, 0xc0e4,
18563 + 0xa87e, 0xa877, 0x0000, 0xa893, 0x0000, 0xa88f, 0x0000, 0xd0cc,
18564 + 0x0120, 0xa878, 0x2048, 0x080c, 0x0f60, 0x6830, 0x6036, 0x908e,
18565 + 0x0001, 0x0148, 0x6803, 0x0002, 0x9086, 0x0005, 0x0168, 0x9006,
18566 + 0x602e, 0x6032, 0x00c8, 0x681c, 0xc085, 0x681e, 0x6803, 0x0004,
18567 + 0x6824, 0xc0f4, 0xc0d5, 0x6826, 0x6814, 0x2048, 0xa8ac, 0x6938,
18568 + 0x9102, 0xa8b0, 0x693c, 0x9103, 0x1e50, 0x683c, 0x602e, 0x6838,
18569 + 0x9084, 0xfffc, 0x683a, 0x6032, 0x2d00, 0x603a, 0x6808, 0x603e,
18570 + 0x6910, 0x6112, 0x6954, 0x6156, 0x6023, 0x0001, 0x6007, 0x0039,
18571 + 0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x009e, 0x001e,
18572 + 0x0005, 0x6024, 0xd0d4, 0x0510, 0xd0f4, 0x11f8, 0x6038, 0x940a,
18573 + 0x603c, 0x9303, 0x0230, 0x9105, 0x0120, 0x6024, 0xc0d4, 0xc0f5,
18574 + 0x0098, 0x643a, 0x633e, 0xac3e, 0xab42, 0x0046, 0x0036, 0x2400,
18575 + 0xacac, 0x9402, 0xa836, 0x2300, 0xabb0, 0x9303, 0xa83a, 0x003e,
18576 + 0x004e, 0x6024, 0xc0d4, 0x0000, 0x6026, 0x0005, 0xd0f4, 0x1138,
18577 + 0xa83c, 0x603a, 0xa840, 0x603e, 0x6024, 0xc0f5, 0x6026, 0x0005,
18578 + 0x0006, 0x0016, 0x6004, 0x908e, 0x0034, 0x01b8, 0x908e, 0x0035,
18579 + 0x01a0, 0x908e, 0x0036, 0x0188, 0x908e, 0x0037, 0x0170, 0x908e,
18580 + 0x0038, 0x0158, 0x908e, 0x0039, 0x0140, 0x908e, 0x003a, 0x0128,
18581 + 0x908e, 0x003b, 0x0110, 0x9085, 0x0001, 0x001e, 0x000e, 0x0005,
18582 + 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x2001, 0x194f, 0x200c,
18583 + 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x7a4b, 0x2001, 0x1953,
18584 + 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, 0x1951, 0x200c,
18585 + 0x8000, 0x2014, 0x2071, 0x193b, 0x711a, 0x721e, 0x2001, 0x0064,
18586 + 0x080c, 0x7a4b, 0x2001, 0x1954, 0x82ff, 0x1110, 0x2011, 0x0014,
18587 + 0x2202, 0x2001, 0x1955, 0x9288, 0x000a, 0x2102, 0x2001, 0x1a54,
18588 + 0x2102, 0x2001, 0x0032, 0x080c, 0x1492, 0x080c, 0x5f0e, 0x00ee,
18589 + 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x00e6,
18590 + 0x2001, 0x1953, 0x2003, 0x0028, 0x2001, 0x1954, 0x2003, 0x0014,
18591 + 0x2071, 0x193b, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001, 0x1955,
18592 + 0x2009, 0x001e, 0x2102, 0x2001, 0x1a54, 0x2102, 0x2001, 0x0032,
18593 + 0x080c, 0x1492, 0x00ee, 0x001e, 0x000e, 0x0005, 0x0096, 0x6058,
18594 + 0x904d, 0x0110, 0x080c, 0x0fe0, 0x009e, 0x0005, 0x0005, 0x00c6,
18595 + 0x0126, 0x2091, 0x8000, 0x080c, 0x94fe, 0x0180, 0x2b08, 0x6112,
18596 + 0x0ca9, 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x0033, 0x080c,
18597 + 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8,
18598 + 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1500,
18599 + 0x7088, 0x9086, 0x0018, 0x11e0, 0x6014, 0x2048, 0xaa3c, 0xd2e4,
18600 + 0x1160, 0x2c78, 0x080c, 0x8315, 0x01d8, 0x7074, 0xaa50, 0x9206,
18601 + 0x1160, 0x7078, 0xaa54, 0x9206, 0x1140, 0x6210, 0x00b6, 0x2258,
18602 + 0xbaa0, 0x00be, 0x900e, 0x080c, 0x2d5f, 0x080c, 0x9920, 0x0020,
18603 + 0x080c, 0x9e99, 0x080c, 0x9554, 0x00fe, 0x00ee, 0x009e, 0x0005,
18604 + 0x7058, 0xaa54, 0x9206, 0x0d48, 0x0c80, 0x00c6, 0x0126, 0x2091,
18605 + 0x8000, 0x080c, 0x94fe, 0x0188, 0x2b08, 0x6112, 0x080c, 0xb4e6,
18606 + 0x6023, 0x0001, 0x2900, 0x6016, 0x2009, 0x004d, 0x080c, 0x95ce,
18607 + 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6,
18608 + 0x0126, 0x2091, 0x8000, 0x0016, 0x080c, 0x94fe, 0x0180, 0x2b08,
18609 + 0x6112, 0x080c, 0xb4e6, 0x6023, 0x0001, 0x2900, 0x6016, 0x001e,
18610 + 0x080c, 0x95ce, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x001e,
18611 + 0x9006, 0x0cd0, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066,
18612 + 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1568,
18613 + 0x7188, 0x6014, 0x2048, 0xa814, 0x8003, 0x9106, 0x1530, 0x20e1,
18614 + 0x0000, 0x2001, 0x196d, 0x2003, 0x0000, 0x6014, 0x2048, 0xa830,
18615 + 0x20a8, 0x8906, 0x8006, 0x8007, 0x9094, 0x003f, 0x22e8, 0x9084,
18616 + 0xffc0, 0x9080, 0x001b, 0x20a0, 0x2001, 0x196d, 0x0016, 0x200c,
18617 + 0x080c, 0xbcf8, 0x001e, 0xa804, 0x9005, 0x0110, 0x2048, 0x0c38,
18618 + 0x6014, 0x2048, 0xa867, 0x0103, 0x0010, 0x080c, 0x9e99, 0x080c,
18619 + 0x9554, 0x00fe, 0x00ee, 0x009e, 0x006e, 0x005e, 0x004e, 0x003e,
18620 + 0x002e, 0x001e, 0x0005, 0x0096, 0x00e6, 0x00f6, 0x2071, 0x1800,
18621 + 0x9186, 0x0015, 0x11b8, 0x7088, 0x9086, 0x0004, 0x1198, 0x6014,
18622 + 0x2048, 0x2c78, 0x080c, 0x8315, 0x01a8, 0x7074, 0xaa74, 0x9206,
18623 + 0x1130, 0x7078, 0xaa78, 0x9206, 0x1110, 0x080c, 0x2d1a, 0x080c,
18624 + 0x9920, 0x0020, 0x080c, 0x9e99, 0x080c, 0x9554, 0x00fe, 0x00ee,
18625 + 0x009e, 0x0005, 0x7058, 0xaa78, 0x9206, 0x0d78, 0x0c80, 0x0096,
18626 + 0x00e6, 0x00f6, 0x2071, 0x1800, 0x9186, 0x0015, 0x1538, 0x7088,
18627 + 0x9086, 0x0004, 0x1518, 0x6014, 0x2048, 0x2c78, 0x080c, 0x8315,
18628 + 0x05b8, 0x7074, 0xaacc, 0x9206, 0x1180, 0x7078, 0xaad0, 0x9206,
18629 + 0x1160, 0x080c, 0x2d1a, 0x0016, 0xa998, 0xaab0, 0x9284, 0x1000,
18630 + 0xc0fd, 0x080c, 0x4da2, 0x001e, 0x0010, 0x080c, 0x4b95, 0xa87b,
18631 + 0x0000, 0xa883, 0x0000, 0xa897, 0x4000, 0x0060, 0x080c, 0x4b95,
18632 + 0x6014, 0x2048, 0xa87b, 0x0030, 0xa883, 0x0000, 0xa897, 0x4005,
18633 + 0xa89b, 0x0004, 0x0126, 0x2091, 0x8000, 0xa867, 0x0139, 0x080c,
18634 + 0x61a9, 0x012e, 0x080c, 0x9554, 0x00fe, 0x00ee, 0x009e, 0x0005,
18635 + 0x7058, 0xaad0, 0x9206, 0x0968, 0x08c0, 0x0016, 0x0026, 0xa87c,
18636 + 0xd0ac, 0x0178, 0xa938, 0xaa34, 0x2100, 0x9205, 0x0150, 0xa890,
18637 + 0x9106, 0x1118, 0xa88c, 0x9206, 0x0120, 0xa992, 0xaa8e, 0x9085,
18638 + 0x0001, 0x002e, 0x001e, 0x0005, 0x00b6, 0x00d6, 0x0036, 0x0096,
18639 + 0x6314, 0x2348, 0xa87a, 0xa982, 0x929e, 0x4000, 0x1580, 0x6310,
18640 + 0x00c6, 0x2358, 0x2009, 0x0000, 0xa868, 0xd0f4, 0x1140, 0x080c,
18641 + 0x5e2d, 0x1108, 0xc185, 0xb800, 0xd0bc, 0x0108, 0xc18d, 0xaa96,
18642 + 0xa99a, 0x20a9, 0x0004, 0xa860, 0x20e8, 0xa85c, 0x9080, 0x0031,
18643 + 0x20a0, 0xb8b4, 0x20e0, 0xb8b8, 0x9080, 0x0006, 0x2098, 0x080c,
18644 + 0x0f2b, 0x20a9, 0x0004, 0xa85c, 0x9080, 0x0035, 0x20a0, 0xb8b8,
18645 + 0x9080, 0x000a, 0x2098, 0x080c, 0x0f2b, 0x00ce, 0x0090, 0xaa96,
18646 + 0x3918, 0x9398, 0x0007, 0x231c, 0x6004, 0x9086, 0x0016, 0x0110,
18647 + 0xa89b, 0x0004, 0xaba2, 0x6310, 0x2358, 0xb804, 0x9084, 0x00ff,
18648 + 0xa89e, 0x080c, 0x619c, 0x6017, 0x0000, 0x009e, 0x003e, 0x00de,
18649 + 0x00be, 0x0005, 0x0026, 0x0036, 0x0046, 0x00b6, 0x0096, 0x00f6,
18650 + 0x6214, 0x2248, 0x6210, 0x2258, 0x2079, 0x0260, 0x9096, 0x0000,
18651 + 0x11a0, 0xb814, 0x9084, 0x00ff, 0x900e, 0x080c, 0x23fd, 0x2118,
18652 + 0x831f, 0x939c, 0xff00, 0x7838, 0x9084, 0x00ff, 0x931d, 0x7c3c,
18653 + 0x2011, 0x8018, 0x080c, 0x447f, 0x00a8, 0x9096, 0x0001, 0x1148,
18654 + 0x89ff, 0x0180, 0xa89b, 0x000d, 0x7838, 0xa8a6, 0x783c, 0xa8aa,
18655 + 0x0048, 0x9096, 0x0002, 0x1130, 0xa89b, 0x000d, 0x7838, 0xa8a6,
18656 + 0x783c, 0xa8aa, 0x00fe, 0x009e, 0x00be, 0x004e, 0x003e, 0x002e,
18657 + 0x0005, 0x00c6, 0x0026, 0x0016, 0x9186, 0x0035, 0x0110, 0x6a38,
18658 + 0x0008, 0x6a2c, 0x080c, 0xb09b, 0x01f0, 0x2260, 0x6120, 0x9186,
18659 + 0x0003, 0x0118, 0x9186, 0x0006, 0x1190, 0x6838, 0x9206, 0x0140,
18660 + 0x683c, 0x9206, 0x1160, 0x6108, 0x6838, 0x9106, 0x1140, 0x0020,
18661 + 0x6008, 0x693c, 0x9106, 0x1118, 0x6010, 0x6910, 0x9106, 0x001e,
18662 + 0x002e, 0x00ce, 0x0005, 0x9085, 0x0001, 0x0cc8, 0xa974, 0xd1cc,
18663 + 0x0188, 0x918c, 0x00ff, 0x918e, 0x0002, 0x1160, 0xa9a8, 0x918c,
18664 + 0x0f00, 0x810f, 0x918e, 0x0001, 0x1128, 0xa834, 0xa938, 0x9115,
18665 + 0x190c, 0xa82a, 0x0005, 0x0036, 0x2019, 0x0001, 0x0010, 0x0036,
18666 + 0x901e, 0x0459, 0x01a0, 0x080c, 0xb0ad, 0x0188, 0x6037, 0x4000,
18667 + 0x6014, 0x6017, 0x0000, 0x0096, 0x2048, 0xa87c, 0xa867, 0x0103,
18668 + 0xa877, 0x0000, 0x83ff, 0x1129, 0x080c, 0x61a9, 0x009e, 0x003e,
18669 + 0x0005, 0xa880, 0xd0b4, 0x0128, 0xa87b, 0x0006, 0xc0ec, 0xa882,
18670 + 0x0048, 0xd0bc, 0x0118, 0xa87b, 0x0002, 0x0020, 0xa87b, 0x0005,
18671 + 0x080c, 0xb37a, 0xa877, 0x0000, 0x0005, 0x2001, 0x180f, 0x2004,
18672 + 0xd0ec, 0x0005, 0x0006, 0x2001, 0x180f, 0x2004, 0xd0f4, 0x000e,
18673 + 0x0005, 0x2001, 0x180f, 0x2004, 0xd0e4, 0x0005, 0x0036, 0x0046,
18674 + 0x6010, 0x00b6, 0x2058, 0xbba0, 0x00be, 0x2021, 0x0007, 0x080c,
18675 + 0x44f9, 0x004e, 0x003e, 0x0005, 0x0c61, 0x1d81, 0x0005, 0x2001,
18676 + 0x1953, 0x2004, 0x601a, 0x0005, 0x2001, 0x1955, 0x2004, 0x6042,
18677 + 0x0005, 0x080c, 0x9554, 0x0804, 0x8125, 0x00b6, 0x0066, 0x6000,
18678 + 0x90b2, 0x0016, 0x1a0c, 0x0d84, 0x001b, 0x006e, 0x00be, 0x0005,
18679 + 0xb798, 0xbdf9, 0xbf54, 0xb798, 0xb798, 0xb798, 0xb798, 0xb798,
18680 + 0xb7cf, 0xbfcf, 0xb798, 0xb798, 0xb798, 0xb798, 0xb798, 0xb798,
18681 + 0x080c, 0x0d84, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d84,
18682 + 0x0013, 0x006e, 0x0005, 0xb7b3, 0xc519, 0xb7b3, 0xb7b3, 0xb7b3,
18683 + 0xb7b3, 0xb7b3, 0xb7b3, 0xc4c8, 0xc56d, 0xb7b3, 0xcb4c, 0xcb82,
18684 + 0xcb4c, 0xcb82, 0xb7b3, 0x080c, 0x0d84, 0x6000, 0x9082, 0x0016,
18685 + 0x1a0c, 0x0d84, 0x6000, 0x000a, 0x0005, 0xb7cd, 0xc1ad, 0xc29d,
18686 + 0xc2bf, 0xc366, 0xb7cd, 0xc43f, 0xc3ee, 0xbfdb, 0xc49e, 0xc4b3,
18687 + 0xb7cd, 0xb7cd, 0xb7cd, 0xb7cd, 0xb7cd, 0x080c, 0x0d84, 0x91b2,
18688 + 0x0053, 0x1a0c, 0x0d84, 0x2100, 0x91b2, 0x0040, 0x1a04, 0xbbfa,
18689 + 0x0002, 0xb819, 0xb9eb, 0xb819, 0xb819, 0xb819, 0xb9f4, 0xb819,
18690 + 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819,
18691 + 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819,
18692 + 0xb81b, 0xb871, 0xb880, 0xb8e1, 0xb908, 0xb97f, 0xb9d6, 0xb819,
18693 + 0xb819, 0xb9f7, 0xb819, 0xb819, 0xba0c, 0xba19, 0xb819, 0xb819,
18694 + 0xb819, 0xb819, 0xb819, 0xba9c, 0xb819, 0xb819, 0xbab0, 0xb819,
18695 + 0xb819, 0xba6b, 0xb819, 0xb819, 0xb819, 0xbac8, 0xb819, 0xb819,
18696 + 0xb819, 0xbb45, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819, 0xb819,
18697 + 0xbbc2, 0x080c, 0x0d84, 0x080c, 0x5eeb, 0x1150, 0x2001, 0x1836,
18698 + 0x2004, 0xd0cc, 0x1128, 0x9084, 0x0009, 0x9086, 0x0008, 0x1140,
18699 + 0x6007, 0x0009, 0x602f, 0x0009, 0x6017, 0x0000, 0x0804, 0xb9e4,
18700 + 0x080c, 0x5ed5, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x6210,
18701 + 0x2258, 0xbaa0, 0x0026, 0x2019, 0x0029, 0x080c, 0x7d55, 0x0076,
18702 + 0x903e, 0x080c, 0x7c4d, 0x2c08, 0x080c, 0xc73e, 0x007e, 0x001e,
18703 + 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6610, 0x2658, 0x080c,
18704 + 0x5c1c, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x0278, 0x080c,
18705 + 0xc675, 0x1904, 0xb8db, 0x080c, 0xc611, 0x1120, 0x6007, 0x0008,
18706 + 0x0804, 0xb9e4, 0x6007, 0x0009, 0x0804, 0xb9e4, 0x080c, 0xc860,
18707 + 0x0128, 0x080c, 0xc675, 0x0d78, 0x0804, 0xb8db, 0x6017, 0x1900,
18708 + 0x0c88, 0x080c, 0x2e39, 0x1904, 0xbbf7, 0x6106, 0x080c, 0xc5c8,
18709 + 0x6007, 0x0006, 0x0804, 0xb9e4, 0x6007, 0x0007, 0x0804, 0xb9e4,
18710 + 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18711 + 0x00d6, 0x6610, 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006,
18712 + 0x1220, 0x2001, 0x0001, 0x080c, 0x5b4d, 0x96b4, 0xff00, 0x8637,
18713 + 0x9686, 0x0006, 0x0188, 0x9686, 0x0004, 0x0170, 0xbe04, 0x96b4,
18714 + 0x00ff, 0x9686, 0x0006, 0x0140, 0x9686, 0x0004, 0x0128, 0x9686,
18715 + 0x0005, 0x0110, 0x00de, 0x0478, 0x00e6, 0x2071, 0x0260, 0x7034,
18716 + 0x90b4, 0x0003, 0x1138, 0x90b2, 0x0014, 0x0220, 0x7030, 0x9084,
18717 + 0x0003, 0x0130, 0x00ee, 0x6017, 0x0000, 0x602f, 0x0007, 0x00b0,
18718 + 0x00ee, 0x080c, 0xc6d4, 0x1190, 0x9686, 0x0006, 0x1140, 0x0026,
18719 + 0x6210, 0x2258, 0xbaa0, 0x900e, 0x080c, 0x2d5f, 0x002e, 0x080c,
18720 + 0x5ca8, 0x6007, 0x000a, 0x00de, 0x0804, 0xb9e4, 0x6007, 0x000b,
18721 + 0x00de, 0x0804, 0xb9e4, 0x080c, 0x2d1a, 0x6007, 0x0001, 0x0804,
18722 + 0xb9e4, 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904,
18723 + 0xbbf7, 0x2071, 0x0260, 0x7034, 0x90b4, 0x0003, 0x1958, 0x90b2,
18724 + 0x0014, 0x0a40, 0x7030, 0x9084, 0x0003, 0x1920, 0x6610, 0x2658,
18725 + 0xbe04, 0x9686, 0x0707, 0x09f8, 0x0026, 0x6210, 0x2258, 0xbaa0,
18726 + 0x900e, 0x080c, 0x2d5f, 0x002e, 0x6007, 0x000c, 0x0804, 0xb9e4,
18727 + 0x080c, 0x5eeb, 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009,
18728 + 0x9086, 0x0008, 0x1110, 0x0804, 0xb828, 0x080c, 0x5ed5, 0x6610,
18729 + 0x2658, 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x06b8, 0x1138,
18730 + 0x0026, 0x2001, 0x0006, 0x080c, 0x5b8d, 0x002e, 0x0050, 0x96b4,
18731 + 0xff00, 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904,
18732 + 0xb8db, 0x080c, 0xc6e1, 0x1120, 0x6007, 0x000e, 0x0804, 0xb9e4,
18733 + 0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x2d1a, 0x004e,
18734 + 0x0016, 0x9006, 0x2009, 0x1853, 0x210c, 0xd1a4, 0x0148, 0x2009,
18735 + 0x0029, 0x080c, 0xc9c5, 0x6010, 0x2058, 0xb800, 0xc0e5, 0xb802,
18736 + 0x001e, 0x004e, 0x6007, 0x0001, 0x0804, 0xb9e4, 0x2001, 0x0001,
18737 + 0x080c, 0x5b4d, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004,
18738 + 0x2019, 0x1805, 0x2011, 0x0270, 0x080c, 0xa425, 0x003e, 0x002e,
18739 + 0x001e, 0x015e, 0x9005, 0x0168, 0x96b4, 0xff00, 0x8637, 0x9682,
18740 + 0x0004, 0x0a04, 0xb8db, 0x9682, 0x0007, 0x0a04, 0xb931, 0x0804,
18741 + 0xb8db, 0x6017, 0x1900, 0x6007, 0x0009, 0x0804, 0xb9e4, 0x080c,
18742 + 0x5eeb, 0x1140, 0x2001, 0x1836, 0x2004, 0x9084, 0x0009, 0x9086,
18743 + 0x0008, 0x1110, 0x0804, 0xb828, 0x080c, 0x5ed5, 0x6610, 0x2658,
18744 + 0xbe04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x0680, 0x96b4, 0xff00,
18745 + 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, 0x1904, 0xb8db,
18746 + 0x080c, 0xc70f, 0x1130, 0x080c, 0xc611, 0x1118, 0x6007, 0x0010,
18747 + 0x04d8, 0x0046, 0x6410, 0x2458, 0xbca0, 0x0046, 0x080c, 0x2d1a,
18748 + 0x004e, 0x0016, 0x9006, 0x2009, 0x1853, 0x210c, 0xd1a4, 0x0148,
18749 + 0x2009, 0x0029, 0x080c, 0xc9c5, 0x6010, 0x2058, 0xb800, 0xc0e5,
18750 + 0xb802, 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, 0xc860,
18751 + 0x0140, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0988, 0x0804,
18752 + 0xb8db, 0x6017, 0x1900, 0x6007, 0x0009, 0x0070, 0x080c, 0x2e39,
18753 + 0x1904, 0xbbf7, 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0xbd93,
18754 + 0x1904, 0xb8db, 0x6007, 0x0012, 0x6003, 0x0001, 0x080c, 0x7c1d,
18755 + 0x080c, 0x8125, 0x0005, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c,
18756 + 0x7c1d, 0x080c, 0x8125, 0x0cb0, 0x6007, 0x0005, 0x0c68, 0x080c,
18757 + 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904, 0xbbf7, 0x080c,
18758 + 0xbd93, 0x1904, 0xb8db, 0x6007, 0x0020, 0x6003, 0x0001, 0x080c,
18759 + 0x7c1d, 0x080c, 0x8125, 0x0005, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18760 + 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125,
18761 + 0x0005, 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904,
18762 + 0xbbf7, 0x080c, 0xbd93, 0x1904, 0xb8db, 0x0016, 0x0026, 0x00e6,
18763 + 0x2071, 0x0260, 0x7244, 0x9286, 0xffff, 0x0180, 0x2c08, 0x080c,
18764 + 0xb09b, 0x01b0, 0x2260, 0x7240, 0x6008, 0x9206, 0x1188, 0x6010,
18765 + 0x9190, 0x0004, 0x2214, 0x9206, 0x01b8, 0x0050, 0x7240, 0x2c08,
18766 + 0x9006, 0x080c, 0xc997, 0x1180, 0x7244, 0x9286, 0xffff, 0x01b0,
18767 + 0x2160, 0x6007, 0x0026, 0x6017, 0x1700, 0x7214, 0x9296, 0xffff,
18768 + 0x1180, 0x6007, 0x0025, 0x0068, 0x6020, 0x9086, 0x0007, 0x1d80,
18769 + 0x6004, 0x9086, 0x0024, 0x1110, 0x080c, 0x9554, 0x2160, 0x6007,
18770 + 0x0025, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00ee,
18771 + 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, 0x5b4d, 0x0156,
18772 + 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0x1805, 0x2011,
18773 + 0x0276, 0x080c, 0xa425, 0x003e, 0x002e, 0x001e, 0x015e, 0x0120,
18774 + 0x6007, 0x0031, 0x0804, 0xb9e4, 0x080c, 0xa0dc, 0x080c, 0x6877,
18775 + 0x1190, 0x0006, 0x0026, 0x0036, 0x080c, 0x6891, 0x1138, 0x080c,
18776 + 0x6b40, 0x080c, 0x56d9, 0x080c, 0x67be, 0x0010, 0x080c, 0x6853,
18777 + 0x003e, 0x002e, 0x000e, 0x0005, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18778 + 0x080c, 0xbd93, 0x1904, 0xb8db, 0x6106, 0x080c, 0xbdaf, 0x1120,
18779 + 0x6007, 0x002b, 0x0804, 0xb9e4, 0x6007, 0x002c, 0x0804, 0xb9e4,
18780 + 0x080c, 0xcbbe, 0x1904, 0xbbf7, 0x080c, 0x2e39, 0x1904, 0xbbf7,
18781 + 0x080c, 0xbd93, 0x1904, 0xb8db, 0x6106, 0x080c, 0xbdb3, 0x1120,
18782 + 0x6007, 0x002e, 0x0804, 0xb9e4, 0x6007, 0x002f, 0x0804, 0xb9e4,
18783 + 0x080c, 0x2e39, 0x1904, 0xbbf7, 0x00e6, 0x00d6, 0x00c6, 0x6010,
18784 + 0x2058, 0xb804, 0x9184, 0x00ff, 0x9086, 0x0006, 0x0158, 0x9184,
18785 + 0xff00, 0x8007, 0x9086, 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee,
18786 + 0x0804, 0xb9eb, 0x080c, 0x4dee, 0xd0e4, 0x0904, 0xbb42, 0x2071,
18787 + 0x026c, 0x7010, 0x603a, 0x7014, 0x603e, 0x7108, 0x720c, 0x080c,
18788 + 0x5f29, 0x0140, 0x6010, 0x2058, 0xb810, 0x9106, 0x1118, 0xb814,
18789 + 0x9206, 0x0510, 0x080c, 0x5f25, 0x15b8, 0x2069, 0x1800, 0x6878,
18790 + 0x9206, 0x1590, 0x6874, 0x9106, 0x1578, 0x7210, 0x080c, 0xb09b,
18791 + 0x0590, 0x080c, 0xbc80, 0x0578, 0x080c, 0xca3c, 0x0560, 0x622e,
18792 + 0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125,
18793 + 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7214, 0x9286, 0xffff, 0x0150,
18794 + 0x080c, 0xb09b, 0x01c0, 0x9280, 0x0002, 0x2004, 0x7110, 0x9106,
18795 + 0x1190, 0x08e0, 0x7210, 0x2c08, 0x9085, 0x0001, 0x080c, 0xc997,
18796 + 0x2c10, 0x2160, 0x0140, 0x0890, 0x6007, 0x0037, 0x602f, 0x0009,
18797 + 0x6017, 0x1500, 0x08b8, 0x6007, 0x0037, 0x602f, 0x0003, 0x6017,
18798 + 0x1700, 0x0880, 0x6007, 0x0012, 0x0868, 0x080c, 0x2e39, 0x1904,
18799 + 0xbbf7, 0x6010, 0x2058, 0xb804, 0x9084, 0xff00, 0x8007, 0x9086,
18800 + 0x0006, 0x1904, 0xb9eb, 0x00e6, 0x00d6, 0x00c6, 0x080c, 0x4dee,
18801 + 0xd0e4, 0x0904, 0xbbba, 0x2069, 0x1800, 0x2071, 0x026c, 0x7008,
18802 + 0x603a, 0x720c, 0x623e, 0x9286, 0xffff, 0x1150, 0x7208, 0x00c6,
18803 + 0x2c08, 0x9085, 0x0001, 0x080c, 0xc997, 0x2c10, 0x00ce, 0x05e8,
18804 + 0x080c, 0xb09b, 0x05d0, 0x7108, 0x9280, 0x0002, 0x2004, 0x9106,
18805 + 0x15a0, 0x00c6, 0x0026, 0x2260, 0x080c, 0xad11, 0x002e, 0x00ce,
18806 + 0x7118, 0x918c, 0xff00, 0x810f, 0x9186, 0x0001, 0x0178, 0x9186,
18807 + 0x0005, 0x0118, 0x9186, 0x0007, 0x1198, 0x9280, 0x0005, 0x2004,
18808 + 0x9005, 0x0170, 0x080c, 0xbc80, 0x0904, 0xbb3b, 0x0056, 0x7510,
18809 + 0x7614, 0x080c, 0xca55, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005,
18810 + 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, 0x6003, 0x0001,
18811 + 0x080c, 0x7bcb, 0x080c, 0x8125, 0x0c78, 0x6007, 0x003b, 0x602f,
18812 + 0x0003, 0x6017, 0x0300, 0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c,
18813 + 0x8125, 0x0c10, 0x6007, 0x003b, 0x602f, 0x000b, 0x6017, 0x0000,
18814 + 0x0804, 0xbb12, 0x00e6, 0x0026, 0x080c, 0x5eeb, 0x0550, 0x080c,
18815 + 0x5ed5, 0x080c, 0xcc30, 0x1518, 0x2071, 0x1800, 0x70d8, 0x9085,
18816 + 0x0003, 0x70da, 0x00f6, 0x2079, 0x0100, 0x72a8, 0x9284, 0x00ff,
18817 + 0x7076, 0x78e6, 0x9284, 0xff00, 0x7278, 0x9205, 0x707a, 0x78ea,
18818 + 0x00fe, 0x70e3, 0x0000, 0x080c, 0x5f29, 0x0120, 0x2011, 0x19cd,
18819 + 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2b1e, 0x0010, 0x080c,
18820 + 0xcc62, 0x002e, 0x00ee, 0x080c, 0x9554, 0x0804, 0xb9ea, 0x080c,
18821 + 0x9554, 0x0005, 0x2600, 0x0002, 0xbc0e, 0xbc0e, 0xbc0e, 0xbc0e,
18822 + 0xbc0e, 0xbc10, 0xbc0e, 0xbc0e, 0xbc0e, 0xbc0e, 0xbc2b, 0xbc0e,
18823 + 0xbc0e, 0xbc0e, 0xbc3d, 0xbc4a, 0xbc7b, 0xbc0e, 0x080c, 0x0d84,
18824 + 0x080c, 0xcbbe, 0x1d20, 0x080c, 0x2e39, 0x1d08, 0x080c, 0xbd93,
18825 + 0x1148, 0x7038, 0x6016, 0x6007, 0x0045, 0x6003, 0x0001, 0x080c,
18826 + 0x7c1d, 0x0005, 0x080c, 0x2d1a, 0x6007, 0x0001, 0x6003, 0x0001,
18827 + 0x080c, 0x7c1d, 0x0005, 0x080c, 0xcbbe, 0x1948, 0x080c, 0x2e39,
18828 + 0x1930, 0x080c, 0xbd93, 0x1d70, 0x703c, 0x6016, 0x6007, 0x004a,
18829 + 0x6003, 0x0001, 0x080c, 0x7c1d, 0x0005, 0x080c, 0xbc9b, 0x0904,
18830 + 0xbbf7, 0x6007, 0x004e, 0x6003, 0x0001, 0x080c, 0x7c1d, 0x080c,
18831 + 0x8125, 0x0005, 0x6007, 0x004f, 0x6017, 0x0000, 0x7134, 0x918c,
18832 + 0x00ff, 0x81ff, 0x0508, 0x9186, 0x0001, 0x1160, 0x7140, 0x2001,
18833 + 0x198a, 0x2004, 0x9106, 0x11b0, 0x7144, 0x2001, 0x198b, 0x2004,
18834 + 0x9106, 0x0190, 0x9186, 0x0002, 0x1168, 0x2011, 0x0276, 0x20a9,
18835 + 0x0004, 0x6010, 0x0096, 0x2048, 0x2019, 0x000a, 0x080c, 0xa439,
18836 + 0x009e, 0x0110, 0x6017, 0x0001, 0x6003, 0x0001, 0x080c, 0x7c1d,
18837 + 0x080c, 0x8125, 0x0005, 0x6007, 0x0050, 0x703c, 0x6016, 0x0ca0,
18838 + 0x00e6, 0x2071, 0x0260, 0x00b6, 0x00c6, 0x2260, 0x6010, 0x2058,
18839 + 0xb8bc, 0xd084, 0x0150, 0x7128, 0x6048, 0x9106, 0x1120, 0x712c,
18840 + 0x6044, 0x9106, 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce,
18841 + 0x00be, 0x00ee, 0x0005, 0x0016, 0x0096, 0x0086, 0x00e6, 0x01c6,
18842 + 0x01d6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1800, 0x7088, 0x908a,
18843 + 0x00f9, 0x16e8, 0x20e1, 0x0000, 0x2001, 0x196d, 0x2003, 0x0000,
18844 + 0x080c, 0x0fc7, 0x05a0, 0x2900, 0x6016, 0x7088, 0x8004, 0xa816,
18845 + 0x908a, 0x001e, 0x02d0, 0xa833, 0x001e, 0x20a9, 0x001e, 0xa860,
18846 + 0x20e8, 0xa85c, 0x9080, 0x001b, 0x20a0, 0x2001, 0x196d, 0x0016,
18847 + 0x200c, 0x0471, 0x001e, 0x2940, 0x080c, 0x0fc7, 0x01c0, 0x2900,
18848 + 0xa006, 0x2100, 0x81ff, 0x0180, 0x0c18, 0xa832, 0x20a8, 0xa860,
18849 + 0x20e8, 0xa85c, 0x9080, 0x001b, 0x20a0, 0x2001, 0x196d, 0x0016,
18850 + 0x200c, 0x00b1, 0x001e, 0x0000, 0x9085, 0x0001, 0x0048, 0x2071,
18851 + 0x1800, 0x708b, 0x0000, 0x6014, 0x2048, 0x080c, 0x0f60, 0x9006,
18852 + 0x012e, 0x01de, 0x01ce, 0x00ee, 0x008e, 0x009e, 0x001e, 0x0005,
18853 + 0x0006, 0x0016, 0x0026, 0x0036, 0x00c6, 0x918c, 0xffff, 0x11a8,
18854 + 0x080c, 0x1fed, 0x2099, 0x026c, 0x2001, 0x0014, 0x3518, 0x9312,
18855 + 0x1218, 0x23a8, 0x4003, 0x00f8, 0x20a8, 0x4003, 0x22a8, 0x8108,
18856 + 0x080c, 0x1fed, 0x2099, 0x0260, 0x0ca8, 0x080c, 0x1fed, 0x2061,
18857 + 0x196d, 0x6004, 0x2098, 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8,
18858 + 0x4003, 0x0048, 0x20a8, 0x4003, 0x22a8, 0x8108, 0x080c, 0x1fed,
18859 + 0x2099, 0x0260, 0x0ca8, 0x2061, 0x196d, 0x2019, 0x0280, 0x3300,
18860 + 0x931e, 0x0110, 0x6006, 0x0020, 0x2001, 0x0260, 0x6006, 0x8108,
18861 + 0x2162, 0x9292, 0x0021, 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e,
18862 + 0x002e, 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036,
18863 + 0x00c6, 0x81ff, 0x11b8, 0x080c, 0x2005, 0x20a1, 0x024c, 0x2001,
18864 + 0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0418, 0x20a8,
18865 + 0x4003, 0x82ff, 0x01f8, 0x22a8, 0x8108, 0x080c, 0x2005, 0x20a1,
18866 + 0x0240, 0x0c98, 0x080c, 0x2005, 0x2061, 0x1970, 0x6004, 0x20a0,
18867 + 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0058, 0x20a8,
18868 + 0x4003, 0x82ff, 0x0138, 0x22a8, 0x8108, 0x080c, 0x2005, 0x20a1,
18869 + 0x0240, 0x0c98, 0x2061, 0x1970, 0x2019, 0x0260, 0x3400, 0x931e,
18870 + 0x0110, 0x6006, 0x0020, 0x2001, 0x0240, 0x6006, 0x8108, 0x2162,
18871 + 0x9292, 0x0021, 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e,
18872 + 0x001e, 0x000e, 0x0005, 0x00b6, 0x0066, 0x6610, 0x2658, 0xbe04,
18873 + 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0170, 0x9686, 0x0004,
18874 + 0x0158, 0xbe04, 0x96b4, 0x00ff, 0x9686, 0x0006, 0x0128, 0x9686,
18875 + 0x0004, 0x0110, 0x9085, 0x0001, 0x006e, 0x00be, 0x0005, 0x00d6,
18876 + 0x0441, 0x00de, 0x0005, 0x00d6, 0x0489, 0x11e8, 0x680c, 0x908c,
18877 + 0xff00, 0x6820, 0x9084, 0x00ff, 0x9115, 0x6216, 0x6824, 0x602e,
18878 + 0xd1e4, 0x0118, 0x2009, 0x0001, 0x0058, 0xd1ec, 0x0160, 0x6920,
18879 + 0x918c, 0x00ff, 0x6824, 0x080c, 0x23fd, 0x1128, 0x2110, 0x900e,
18880 + 0x080c, 0x2d5f, 0x0018, 0x9085, 0x0001, 0x0008, 0x9006, 0x00de,
18881 + 0x0005, 0x2069, 0x026d, 0x6800, 0x9082, 0x0010, 0x1228, 0x6017,
18882 + 0x0000, 0x9085, 0x0001, 0x0008, 0x9006, 0x0005, 0x6017, 0x0000,
18883 + 0x2069, 0x026c, 0x6808, 0x9084, 0xff00, 0x9086, 0x0800, 0x1140,
18884 + 0x6800, 0x9084, 0x00ff, 0x908e, 0x0014, 0x0110, 0x908e, 0x0010,
18885 + 0x0005, 0x6004, 0x90b2, 0x0053, 0x1a0c, 0x0d84, 0x91b6, 0x0013,
18886 + 0x1130, 0x2008, 0x91b2, 0x0040, 0x1a04, 0xbf24, 0x0092, 0x91b6,
18887 + 0x0027, 0x0120, 0x91b6, 0x0014, 0x190c, 0x0d84, 0x2001, 0x0007,
18888 + 0x080c, 0x5b8d, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c, 0x8125,
18889 + 0x0005, 0xbe59, 0xbe5b, 0xbe59, 0xbe59, 0xbe59, 0xbe5b, 0xbe6a,
18890 + 0xbf1d, 0xbebc, 0xbf1d, 0xbece, 0xbf1d, 0xbe6a, 0xbf1d, 0xbf15,
18891 + 0xbf1d, 0xbf15, 0xbf1d, 0xbf1d, 0xbe59, 0xbe59, 0xbe59, 0xbe59,
18892 + 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbe5b,
18893 + 0xbe59, 0xbf1d, 0xbe59, 0xbe59, 0xbf1d, 0xbe59, 0xbf1a, 0xbf1d,
18894 + 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbf1d, 0xbf1d, 0xbe59, 0xbf1d,
18895 + 0xbf1d, 0xbe59, 0xbe65, 0xbe59, 0xbe59, 0xbe59, 0xbe59, 0xbf19,
18896 + 0xbf1d, 0xbe59, 0xbe59, 0xbf1d, 0xbf1d, 0xbe59, 0xbe59, 0xbe59,
18897 + 0xbe59, 0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0xb76f, 0x6003,
18898 + 0x0002, 0x080c, 0x8125, 0x0804, 0xbf23, 0x9006, 0x080c, 0x5b4d,
18899 + 0x0804, 0xbf1d, 0x080c, 0x5f25, 0x1904, 0xbf1d, 0x9006, 0x080c,
18900 + 0x5b4d, 0x6010, 0x2058, 0xb810, 0x9086, 0x00ff, 0x1140, 0x00f6,
18901 + 0x2079, 0x1800, 0x78a0, 0x8000, 0x78a2, 0x00fe, 0x0428, 0x6010,
18902 + 0x2058, 0xb8b0, 0x9005, 0x1178, 0x080c, 0xb759, 0x1904, 0xbf1d,
18903 + 0x0036, 0x0046, 0xbba0, 0x2021, 0x0007, 0x080c, 0x44f9, 0x004e,
18904 + 0x003e, 0x0804, 0xbf1d, 0x080c, 0x2e64, 0x1904, 0xbf1d, 0x2001,
18905 + 0x1800, 0x2004, 0x9086, 0x0002, 0x1138, 0x00f6, 0x2079, 0x1800,
18906 + 0x78a0, 0x8000, 0x78a2, 0x00fe, 0x2001, 0x0002, 0x080c, 0x5b61,
18907 + 0x080c, 0x8026, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
18908 + 0x080c, 0x7c1d, 0x080c, 0x8125, 0x6110, 0x2158, 0x2009, 0x0001,
18909 + 0x080c, 0x7826, 0x0804, 0xbf23, 0x6610, 0x2658, 0xbe04, 0x96b4,
18910 + 0xff00, 0x8637, 0x9686, 0x0006, 0x0904, 0xbf1d, 0x9686, 0x0004,
18911 + 0x0904, 0xbf1d, 0x2001, 0x0004, 0x0804, 0xbf1b, 0x2001, 0x1800,
18912 + 0x2004, 0x9086, 0x0003, 0x1158, 0x0036, 0x0046, 0x6010, 0x2058,
18913 + 0xbba0, 0x2021, 0x0006, 0x080c, 0x44f9, 0x004e, 0x003e, 0x2001,
18914 + 0x0006, 0x080c, 0xbf41, 0x6610, 0x2658, 0xbe04, 0x0066, 0x96b4,
18915 + 0xff00, 0x8637, 0x9686, 0x0006, 0x006e, 0x0168, 0x2001, 0x0006,
18916 + 0x080c, 0x5b8d, 0x9284, 0x00ff, 0x908e, 0x0007, 0x1120, 0x2001,
18917 + 0x0006, 0x080c, 0x5b61, 0x080c, 0x5f25, 0x11f8, 0x2001, 0x1836,
18918 + 0x2004, 0xd0a4, 0x01d0, 0xbe04, 0x96b4, 0x00ff, 0x9686, 0x0006,
18919 + 0x01a0, 0x00f6, 0x2079, 0x1800, 0x78a0, 0x8000, 0x78a2, 0x00fe,
18920 + 0x0804, 0xbea4, 0x2001, 0x0004, 0x0030, 0x2001, 0x0006, 0x0449,
18921 + 0x0020, 0x0018, 0x0010, 0x080c, 0x5b8d, 0x080c, 0x8026, 0x080c,
18922 + 0x9554, 0x080c, 0x8125, 0x0005, 0x2600, 0x0002, 0xbf38, 0xbf38,
18923 + 0xbf38, 0xbf38, 0xbf38, 0xbf3a, 0xbf38, 0xbf38, 0xbf38, 0xbf38,
18924 + 0xbf3a, 0xbf38, 0xbf38, 0xbf38, 0xbf3a, 0xbf3a, 0xbf3a, 0xbf3a,
18925 + 0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9554, 0x080c, 0x8125,
18926 + 0x0005, 0x0016, 0x00b6, 0x00d6, 0x6110, 0x2158, 0xb900, 0xd184,
18927 + 0x0138, 0x080c, 0x5b61, 0x9006, 0x080c, 0x5b4d, 0x080c, 0x2d3f,
18928 + 0x00de, 0x00be, 0x001e, 0x0005, 0x6610, 0x2658, 0xb804, 0x9084,
18929 + 0xff00, 0x8007, 0x90b2, 0x000c, 0x1a0c, 0x0d84, 0x91b6, 0x0015,
18930 + 0x1110, 0x003b, 0x0028, 0x91b6, 0x0016, 0x190c, 0x0d84, 0x006b,
18931 + 0x0005, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0xbfb9,
18932 + 0xbf81, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a, 0x9f7a,
18933 + 0x9f7a, 0x9f7a, 0x9f7a, 0xbfb9, 0xbfc0, 0x9f7a, 0x9f7a, 0x9f7a,
18934 + 0x9f7a, 0x00f6, 0x080c, 0x5f25, 0x11c0, 0x6010, 0x905d, 0x01a8,
18935 + 0xb8b0, 0x9005, 0x0190, 0x9006, 0x080c, 0x5b4d, 0x2001, 0x0002,
18936 + 0x080c, 0x5b61, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
18937 + 0x080c, 0x7c1d, 0x080c, 0x8125, 0x00d0, 0x2011, 0x0263, 0x2204,
18938 + 0x8211, 0x220c, 0x080c, 0x23fd, 0x1190, 0x080c, 0x5c0d, 0x0118,
18939 + 0x080c, 0x9554, 0x0060, 0xb810, 0x0006, 0xb814, 0x0006, 0x080c,
18940 + 0x56f3, 0x000e, 0xb816, 0x000e, 0xb812, 0x080c, 0x9554, 0x00fe,
18941 + 0x0005, 0x6604, 0x96b6, 0x001e, 0x1110, 0x080c, 0x9554, 0x0005,
18942 + 0x080c, 0xa2b9, 0x1148, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c,
18943 + 0x7c1d, 0x080c, 0x8125, 0x0010, 0x080c, 0x9554, 0x0005, 0x6004,
18944 + 0x908a, 0x0053, 0x1a0c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9584,
18945 + 0x080c, 0x8125, 0x0005, 0x9182, 0x0040, 0x0002, 0xbff1, 0xbff1,
18946 + 0xbff1, 0xbff1, 0xbff3, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1,
18947 + 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1, 0xbff1,
18948 + 0xbff1, 0x080c, 0x0d84, 0x0096, 0x00b6, 0x00d6, 0x00e6, 0x00f6,
18949 + 0x0046, 0x0026, 0x6210, 0x2258, 0xb8ac, 0x9005, 0x11a8, 0x6106,
18950 + 0x2071, 0x0260, 0x7444, 0x94a4, 0xff00, 0x0904, 0xc05a, 0x080c,
18951 + 0xcccc, 0x1170, 0x9486, 0x2000, 0x1158, 0x2009, 0x0001, 0x2011,
18952 + 0x0200, 0x080c, 0x7a0a, 0x0020, 0x9026, 0x080c, 0xcc03, 0x0c38,
18953 + 0x080c, 0x0fae, 0x090c, 0x0d84, 0x6003, 0x0007, 0xa867, 0x010d,
18954 + 0x9006, 0xa802, 0xa86a, 0xac8a, 0x2c00, 0xa88e, 0x6008, 0xa8e2,
18955 + 0x6010, 0x2058, 0xb8a0, 0x7130, 0xa97a, 0x0016, 0xa876, 0xa87f,
18956 + 0x0000, 0xa883, 0x0000, 0xa887, 0x0036, 0x080c, 0x61a9, 0x001e,
18957 + 0x080c, 0xcccc, 0x1904, 0xc0ba, 0x9486, 0x2000, 0x1130, 0x2019,
18958 + 0x0017, 0x080c, 0xc941, 0x0804, 0xc0ba, 0x9486, 0x0400, 0x1130,
18959 + 0x2019, 0x0002, 0x080c, 0xc8f8, 0x0804, 0xc0ba, 0x9486, 0x0200,
18960 + 0x1110, 0x080c, 0xc8dd, 0x9486, 0x1000, 0x1110, 0x080c, 0xc926,
18961 + 0x0804, 0xc0ba, 0x2069, 0x1a3d, 0x6a00, 0xd284, 0x0904, 0xc124,
18962 + 0x9284, 0x0300, 0x1904, 0xc11d, 0x6804, 0x9005, 0x0904, 0xc105,
18963 + 0x2d78, 0x6003, 0x0007, 0x080c, 0x0fc7, 0x0904, 0xc0c6, 0x7800,
18964 + 0xd08c, 0x1118, 0x7804, 0x8001, 0x7806, 0x6017, 0x0000, 0x2001,
18965 + 0x180e, 0x2004, 0xd084, 0x1904, 0xc128, 0x9006, 0xa802, 0xa867,
18966 + 0x0116, 0xa86a, 0x6008, 0xa8e2, 0x2c00, 0xa87a, 0x6010, 0x2058,
18967 + 0xb8a0, 0x7130, 0xa9b6, 0xa876, 0xb928, 0xa9ba, 0xb92c, 0xa9be,
18968 + 0xb930, 0xa9c2, 0xb934, 0xa9c6, 0xa883, 0x003d, 0x7044, 0x9084,
18969 + 0x0003, 0x9080, 0xc0c2, 0x2005, 0xa87e, 0x20a9, 0x000a, 0x2001,
18970 + 0x0270, 0xaa5c, 0x9290, 0x0021, 0x2009, 0x0205, 0x200b, 0x0080,
18971 + 0x20e1, 0x0000, 0xab60, 0x23e8, 0x2098, 0x22a0, 0x4003, 0x200b,
18972 + 0x0000, 0x2001, 0x027a, 0x200c, 0xa9b2, 0x8000, 0x200c, 0xa9ae,
18973 + 0x080c, 0x61a9, 0x002e, 0x004e, 0x00fe, 0x00ee, 0x00de, 0x00be,
18974 + 0x009e, 0x0005, 0x0000, 0x0080, 0x0040, 0x0000, 0x2001, 0x180f,
18975 + 0x2004, 0xd084, 0x0120, 0x080c, 0x0fae, 0x1904, 0xc06f, 0x6017,
18976 + 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x7bcb, 0x080c,
18977 + 0x8125, 0x0c00, 0x2069, 0x0260, 0x6848, 0x9084, 0xff00, 0x9086,
18978 + 0x1200, 0x1198, 0x686c, 0x9084, 0x00ff, 0x0016, 0x6114, 0x918c,
18979 + 0xf700, 0x910d, 0x6116, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043,
18980 + 0x080c, 0x7bcb, 0x080c, 0x8125, 0x0828, 0x6868, 0x602e, 0x686c,
18981 + 0x6032, 0x6017, 0xf200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c,
18982 + 0x7bcb, 0x080c, 0x8125, 0x0804, 0xc0ba, 0x2001, 0x180d, 0x2004,
18983 + 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x447f, 0x6017, 0xf300,
18984 + 0x0010, 0x6017, 0xf100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c,
18985 + 0x7bcb, 0x080c, 0x8125, 0x0804, 0xc0ba, 0x6017, 0xf500, 0x0c98,
18986 + 0x6017, 0xf600, 0x0804, 0xc0da, 0x6017, 0xf200, 0x0804, 0xc0da,
18987 + 0xa867, 0x0146, 0xa86b, 0x0000, 0x6008, 0xa886, 0x2c00, 0xa87a,
18988 + 0x7044, 0x9084, 0x0003, 0x9080, 0xc0c2, 0x2005, 0xa87e, 0x2928,
18989 + 0x6010, 0x2058, 0xb8a0, 0xa876, 0xb828, 0xa88a, 0xb82c, 0xa88e,
18990 + 0xb830, 0xa892, 0xb834, 0xa896, 0xa883, 0x003d, 0x2009, 0x0205,
18991 + 0x2104, 0x9085, 0x0080, 0x200a, 0x20e1, 0x0000, 0x2011, 0x0210,
18992 + 0x2214, 0x9294, 0x0fff, 0xaaa2, 0x9282, 0x0111, 0x1a0c, 0x0d84,
18993 + 0x8210, 0x821c, 0x2001, 0x026c, 0x2098, 0xa860, 0x20e8, 0xa85c,
18994 + 0x9080, 0x0029, 0x20a0, 0x2011, 0xc1a4, 0x2041, 0x0001, 0x223d,
18995 + 0x9784, 0x00ff, 0x9322, 0x1208, 0x2300, 0x20a8, 0x4003, 0x931a,
18996 + 0x0530, 0x8210, 0xd7fc, 0x1130, 0x8d68, 0x2d0a, 0x2001, 0x0260,
18997 + 0x2098, 0x0c68, 0x2950, 0x080c, 0x0fc7, 0x0170, 0x2900, 0xb002,
18998 + 0xa867, 0x0147, 0xa86b, 0x0000, 0xa860, 0x20e8, 0xa85c, 0x9080,
18999 + 0x001b, 0x20a0, 0x8840, 0x08d8, 0x2548, 0xa800, 0x902d, 0x0118,
19000 + 0x080c, 0x0fe0, 0x0cc8, 0x080c, 0x0fe0, 0x0804, 0xc0c6, 0x2548,
19001 + 0x8847, 0x9885, 0x0046, 0xa866, 0x2009, 0x0205, 0x200b, 0x0000,
19002 + 0x080c, 0xc970, 0x0804, 0xc0ba, 0x8010, 0x0004, 0x801a, 0x0006,
19003 + 0x8018, 0x0008, 0x8016, 0x000a, 0x8014, 0x9186, 0x0013, 0x1160,
19004 + 0x6004, 0x908a, 0x0054, 0x1a0c, 0x0d84, 0x9082, 0x0040, 0x0a0c,
19005 + 0x0d84, 0x2008, 0x0804, 0xc255, 0x9186, 0x0051, 0x0108, 0x00c0,
19006 + 0x2001, 0x0109, 0x2004, 0xd084, 0x0904, 0xc206, 0x0126, 0x2091,
19007 + 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x7ab7, 0x002e, 0x001e,
19008 + 0x000e, 0x012e, 0x6000, 0x9086, 0x0002, 0x1580, 0x0804, 0xc29d,
19009 + 0x9186, 0x0027, 0x0530, 0x9186, 0x0048, 0x0128, 0x9186, 0x0014,
19010 + 0x0500, 0x190c, 0x0d84, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0,
19011 + 0x00c6, 0x0126, 0x2091, 0x2800, 0x00c6, 0x2061, 0x0100, 0x0006,
19012 + 0x0016, 0x0026, 0x080c, 0x7ab7, 0x002e, 0x001e, 0x000e, 0x00ce,
19013 + 0x012e, 0x00ce, 0x6000, 0x9086, 0x0004, 0x190c, 0x0d84, 0x0804,
19014 + 0xc366, 0x6004, 0x9082, 0x0040, 0x2008, 0x001a, 0x080c, 0x95e9,
19015 + 0x0005, 0xc21c, 0xc21e, 0xc21e, 0xc245, 0xc21c, 0xc21c, 0xc21c,
19016 + 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0xc21c,
19017 + 0xc21c, 0xc21c, 0xc21c, 0xc21c, 0x080c, 0x0d84, 0x080c, 0x8026,
19018 + 0x080c, 0x8125, 0x0036, 0x0096, 0x6014, 0x904d, 0x01d8, 0x080c,
19019 + 0xb0ad, 0x01c0, 0x6003, 0x0002, 0x6010, 0x00b6, 0x2058, 0xb800,
19020 + 0x00be, 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c, 0xc970, 0x6017,
19021 + 0x0000, 0x6018, 0x9005, 0x1120, 0x2001, 0x1954, 0x2004, 0x601a,
19022 + 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x0096, 0x080c, 0x8026,
19023 + 0x080c, 0x8125, 0x080c, 0xb0ad, 0x0120, 0x6014, 0x2048, 0x080c,
19024 + 0x0fe0, 0x080c, 0x9584, 0x009e, 0x0005, 0x0002, 0xc269, 0xc280,
19025 + 0xc26b, 0xc297, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269,
19026 + 0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269, 0xc269,
19027 + 0xc269, 0x080c, 0x0d84, 0x0096, 0x080c, 0x8026, 0x6014, 0x2048,
19028 + 0xa87c, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043, 0x080c,
19029 + 0x95ce, 0x0010, 0x6003, 0x0004, 0x080c, 0x8125, 0x009e, 0x0005,
19030 + 0x080c, 0x8026, 0x080c, 0xb0ad, 0x0138, 0x6114, 0x0096, 0x2148,
19031 + 0xa97c, 0x009e, 0xd1ec, 0x1138, 0x080c, 0x79df, 0x080c, 0x9554,
19032 + 0x080c, 0x8125, 0x0005, 0x080c, 0xcbc7, 0x0db0, 0x0cc8, 0x080c,
19033 + 0x8026, 0x2009, 0x0041, 0x0804, 0xc3ee, 0x9182, 0x0040, 0x0002,
19034 + 0xc2b3, 0xc2b5, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3,
19035 + 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3, 0xc2b3,
19036 + 0xc2b3, 0xc2b6, 0xc2b3, 0x080c, 0x0d84, 0x0005, 0x00d6, 0x080c,
19037 + 0x79df, 0x00de, 0x080c, 0xcc1f, 0x080c, 0x9554, 0x0005, 0x9182,
19038 + 0x0040, 0x0002, 0xc2d5, 0xc2d5, 0xc2d5, 0xc2d5, 0xc2d5, 0xc2d5,
19039 + 0xc2d5, 0xc2d5, 0xc2d5, 0xc2d7, 0xc32e, 0xc2d5, 0xc2d5, 0xc2d5,
19040 + 0xc2d5, 0xc32e, 0xc2d5, 0xc2d5, 0xc2d5, 0x080c, 0x0d84, 0x2001,
19041 + 0x0105, 0x2004, 0x9084, 0x1800, 0x1904, 0xc32e, 0x2001, 0x1872,
19042 + 0x2004, 0xd0e4, 0x1528, 0x603b, 0x0000, 0x080c, 0x80d6, 0x6014,
19043 + 0x0096, 0x2048, 0xa87c, 0xd0fc, 0x0188, 0x908c, 0x0003, 0x918e,
19044 + 0x0002, 0x0508, 0x2001, 0x180c, 0x2004, 0xd0d4, 0x11e0, 0x080c,
19045 + 0x8202, 0x2009, 0x0041, 0x009e, 0x0804, 0xc3ee, 0x080c, 0x8202,
19046 + 0x6003, 0x0007, 0x601b, 0x0000, 0x080c, 0x79df, 0x009e, 0x0005,
19047 + 0x2001, 0x0100, 0x2004, 0x9082, 0x0005, 0x0aa8, 0x2001, 0x011f,
19048 + 0x2004, 0x603a, 0x0890, 0x2001, 0x180c, 0x200c, 0xc1d4, 0x2102,
19049 + 0xd1cc, 0x0110, 0x080c, 0x2809, 0x080c, 0x8202, 0x6014, 0x2048,
19050 + 0xa97c, 0xd1ec, 0x1130, 0x080c, 0x79df, 0x080c, 0x9554, 0x009e,
19051 + 0x0005, 0x080c, 0xcbc7, 0x0db8, 0x009e, 0x0005, 0x2001, 0x180c,
19052 + 0x200c, 0xc1d4, 0x2102, 0x0036, 0x080c, 0x80d6, 0x080c, 0x8202,
19053 + 0x6014, 0x0096, 0x2048, 0x6010, 0x00b6, 0x2058, 0xb800, 0x00be,
19054 + 0xd0bc, 0x0188, 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x0140,
19055 + 0xa8ac, 0x6330, 0x931a, 0x6332, 0xa8b0, 0x632c, 0x931b, 0x632e,
19056 + 0x6003, 0x0002, 0x0080, 0x2019, 0x0004, 0x080c, 0xc970, 0x6018,
19057 + 0x9005, 0x1128, 0x2001, 0x1954, 0x2004, 0x8003, 0x601a, 0x6017,
19058 + 0x0000, 0x6003, 0x0007, 0x009e, 0x003e, 0x0005, 0x9182, 0x0040,
19059 + 0x0002, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d,
19060 + 0xc37d, 0xc37f, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc37d,
19061 + 0xc37d, 0xc37d, 0xc37d, 0xc37d, 0xc3ca, 0x080c, 0x0d84, 0x6014,
19062 + 0x0096, 0x2048, 0xa834, 0xaa38, 0x6110, 0x00b6, 0x2058, 0xb900,
19063 + 0x00be, 0xd1bc, 0x1190, 0x920d, 0x1518, 0xa87c, 0xd0fc, 0x0128,
19064 + 0x2009, 0x0041, 0x00de, 0x0804, 0xc3ee, 0x6003, 0x0007, 0x601b,
19065 + 0x0000, 0x080c, 0x79df, 0x009e, 0x0005, 0x6124, 0xd1f4, 0x1d58,
19066 + 0x0006, 0x0046, 0xacac, 0x9422, 0xa9b0, 0x2200, 0x910b, 0x6030,
19067 + 0x9420, 0x6432, 0x602c, 0x9109, 0x612e, 0x004e, 0x000e, 0x08d8,
19068 + 0x6110, 0x00b6, 0x2158, 0xb900, 0x00be, 0xd1bc, 0x1178, 0x2009,
19069 + 0x180d, 0x210c, 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003,
19070 + 0x0006, 0x00e9, 0x080c, 0x79e1, 0x009e, 0x0005, 0x6003, 0x0002,
19071 + 0x009e, 0x0005, 0x6024, 0xd0f4, 0x0128, 0x080c, 0x1489, 0x1904,
19072 + 0xc37f, 0x0005, 0x6014, 0x0096, 0x2048, 0xa834, 0xa938, 0x009e,
19073 + 0x9105, 0x1120, 0x080c, 0x1489, 0x1904, 0xc37f, 0x0005, 0xd2fc,
19074 + 0x0140, 0x8002, 0x8000, 0x8212, 0x9291, 0x0000, 0x2009, 0x0009,
19075 + 0x0010, 0x2009, 0x0015, 0xaa9a, 0xa896, 0x0005, 0x9182, 0x0040,
19076 + 0x0208, 0x0062, 0x9186, 0x0013, 0x0120, 0x9186, 0x0014, 0x190c,
19077 + 0x0d84, 0x6024, 0xd0dc, 0x090c, 0x0d84, 0x0005, 0xc411, 0xc418,
19078 + 0xc424, 0xc430, 0xc411, 0xc411, 0xc411, 0xc411, 0xc411, 0xc413,
19079 + 0xc413, 0xc411, 0xc411, 0xc411, 0xc411, 0xc413, 0xc411, 0xc413,
19080 + 0xc411, 0x080c, 0x0d84, 0x6024, 0xd0dc, 0x090c, 0x0d84, 0x0005,
19081 + 0x6003, 0x0001, 0x6106, 0x080c, 0x7bcb, 0x0126, 0x2091, 0x8000,
19082 + 0x080c, 0x8125, 0x012e, 0x0005, 0x6003, 0x0001, 0x6106, 0x080c,
19083 + 0x7bcb, 0x0126, 0x2091, 0x8000, 0x080c, 0x8125, 0x012e, 0x0005,
19084 + 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c, 0x18b7, 0x0126, 0x2091,
19085 + 0x8000, 0x080c, 0x7c3a, 0x080c, 0x820b, 0x012e, 0x0005, 0x0126,
19086 + 0x2091, 0x8000, 0x0036, 0x0096, 0x9182, 0x0040, 0x0023, 0x009e,
19087 + 0x003e, 0x012e, 0x0005, 0xc45b, 0xc45d, 0xc46f, 0xc489, 0xc45b,
19088 + 0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b, 0xc45b,
19089 + 0xc45b, 0xc45b, 0xc45b, 0x080c, 0x0d84, 0x6014, 0x2048, 0xa87c,
19090 + 0xd0fc, 0x01f8, 0x909c, 0x0003, 0x939e, 0x0003, 0x01d0, 0x6003,
19091 + 0x0001, 0x6106, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x0470, 0x6014,
19092 + 0x2048, 0xa87c, 0xd0fc, 0x0168, 0x909c, 0x0003, 0x939e, 0x0003,
19093 + 0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x7bcb, 0x080c, 0x8125,
19094 + 0x00e0, 0x901e, 0x6316, 0x631a, 0x2019, 0x0004, 0x080c, 0xc970,
19095 + 0x00a0, 0x6014, 0x2048, 0xa87c, 0xd0fc, 0x0d98, 0x909c, 0x0003,
19096 + 0x939e, 0x0003, 0x0d70, 0x6003, 0x0003, 0x6106, 0x2c10, 0x080c,
19097 + 0x18b7, 0x080c, 0x7c3a, 0x080c, 0x820b, 0x0005, 0x080c, 0x8026,
19098 + 0x6114, 0x81ff, 0x0158, 0x0096, 0x2148, 0x080c, 0xcc6b, 0x0036,
19099 + 0x2019, 0x0029, 0x080c, 0xc970, 0x003e, 0x009e, 0x080c, 0x9584,
19100 + 0x080c, 0x8125, 0x0005, 0x080c, 0x80d6, 0x6114, 0x81ff, 0x0158,
19101 + 0x0096, 0x2148, 0x080c, 0xcc6b, 0x0036, 0x2019, 0x0029, 0x080c,
19102 + 0xc970, 0x003e, 0x009e, 0x080c, 0x9584, 0x080c, 0x820b, 0x0005,
19103 + 0x9182, 0x0085, 0x0002, 0xc4da, 0xc4d8, 0xc4d8, 0xc4e6, 0xc4d8,
19104 + 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8, 0xc4d8,
19105 + 0x080c, 0x0d84, 0x6003, 0x000b, 0x6106, 0x080c, 0x7bcb, 0x0126,
19106 + 0x2091, 0x8000, 0x080c, 0x8125, 0x012e, 0x0005, 0x0026, 0x00e6,
19107 + 0x080c, 0xcbbe, 0x0118, 0x080c, 0x9554, 0x0440, 0x2071, 0x0260,
19108 + 0x7224, 0x6216, 0x2001, 0x180d, 0x2004, 0xd0e4, 0x0150, 0x6010,
19109 + 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00, 0x2011, 0x014e, 0x080c,
19110 + 0x9844, 0x7220, 0x080c, 0xc816, 0x0118, 0x6007, 0x0086, 0x0040,
19111 + 0x6007, 0x0087, 0x7224, 0x9296, 0xffff, 0x1110, 0x6007, 0x0086,
19112 + 0x6003, 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00ee, 0x002e,
19113 + 0x0005, 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c,
19114 + 0x0d84, 0x908a, 0x0092, 0x1a0c, 0x0d84, 0x9082, 0x0085, 0x00a2,
19115 + 0x9186, 0x0027, 0x0130, 0x9186, 0x0014, 0x0118, 0x080c, 0x95e9,
19116 + 0x0050, 0x2001, 0x0007, 0x080c, 0x5b8d, 0x080c, 0x8026, 0x080c,
19117 + 0x9584, 0x080c, 0x8125, 0x0005, 0xc549, 0xc54b, 0xc54b, 0xc549,
19118 + 0xc549, 0xc549, 0xc549, 0xc549, 0xc549, 0xc549, 0xc549, 0xc549,
19119 + 0xc549, 0x080c, 0x0d84, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c,
19120 + 0x8125, 0x0005, 0x9182, 0x0085, 0x0a0c, 0x0d84, 0x9182, 0x0092,
19121 + 0x1a0c, 0x0d84, 0x9182, 0x0085, 0x0002, 0xc56a, 0xc56a, 0xc56a,
19122 + 0xc56c, 0xc56a, 0xc56a, 0xc56a, 0xc56a, 0xc56a, 0xc56a, 0xc56a,
19123 + 0xc56a, 0xc56a, 0x080c, 0x0d84, 0x0005, 0x9186, 0x0013, 0x0148,
19124 + 0x9186, 0x0014, 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, 0x95e9,
19125 + 0x0030, 0x080c, 0x8026, 0x080c, 0x9584, 0x080c, 0x8125, 0x0005,
19126 + 0x0036, 0x080c, 0xcc1f, 0x6043, 0x0000, 0x2019, 0x000b, 0x0031,
19127 + 0x6023, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, 0x0126, 0x0036,
19128 + 0x2091, 0x8000, 0x0086, 0x2c40, 0x0096, 0x904e, 0x080c, 0x8ef6,
19129 + 0x009e, 0x008e, 0x1550, 0x0076, 0x2c38, 0x080c, 0x8f9a, 0x007e,
19130 + 0x1520, 0x6000, 0x9086, 0x0000, 0x0500, 0x6020, 0x9086, 0x0007,
19131 + 0x01e0, 0x0096, 0x601c, 0xd084, 0x0140, 0x080c, 0xcc1f, 0x080c,
19132 + 0xb76f, 0x080c, 0x17b0, 0x6023, 0x0007, 0x6014, 0x2048, 0x080c,
19133 + 0xb0ad, 0x0110, 0x080c, 0xc970, 0x009e, 0x6017, 0x0000, 0x080c,
19134 + 0xcc1f, 0x6023, 0x0007, 0x080c, 0xb76f, 0x003e, 0x012e, 0x0005,
19135 + 0x00f6, 0x00c6, 0x00b6, 0x0036, 0x0156, 0x2079, 0x0260, 0x7938,
19136 + 0x783c, 0x080c, 0x23fd, 0x15b8, 0x0016, 0x00c6, 0x080c, 0x5c0d,
19137 + 0x1580, 0x001e, 0x00c6, 0x2160, 0x080c, 0xb76c, 0x00ce, 0x002e,
19138 + 0x0026, 0x0016, 0x2019, 0x0029, 0x080c, 0x905b, 0x080c, 0x7d55,
19139 + 0x0076, 0x903e, 0x080c, 0x7c4d, 0x007e, 0x001e, 0x0076, 0x903e,
19140 + 0x080c, 0xc73e, 0x007e, 0x0026, 0xba04, 0x9294, 0xff00, 0x8217,
19141 + 0x9286, 0x0006, 0x0118, 0x9286, 0x0004, 0x1118, 0xbaa0, 0x080c,
19142 + 0x2dd3, 0x002e, 0x001e, 0x080c, 0x56f3, 0xbe12, 0xbd16, 0x9006,
19143 + 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, 0x00be, 0x00ce, 0x00fe,
19144 + 0x0005, 0x00c6, 0x00d6, 0x00b6, 0x0016, 0x2009, 0x1822, 0x2104,
19145 + 0x9086, 0x0074, 0x1904, 0xc66a, 0x2069, 0x0260, 0x6944, 0x9182,
19146 + 0x0100, 0x06e0, 0x6940, 0x9184, 0x8000, 0x0904, 0xc667, 0x2001,
19147 + 0x194b, 0x2004, 0x9005, 0x1140, 0x6010, 0x2058, 0xb8b0, 0x9005,
19148 + 0x0118, 0x9184, 0x0800, 0x0598, 0x6948, 0x918a, 0x0001, 0x0648,
19149 + 0x080c, 0xccd1, 0x0118, 0x6978, 0xd1fc, 0x11b8, 0x2009, 0x0205,
19150 + 0x200b, 0x0001, 0x693c, 0x81ff, 0x1198, 0x6944, 0x9182, 0x0100,
19151 + 0x02a8, 0x6940, 0x81ff, 0x1178, 0x6948, 0x918a, 0x0001, 0x0288,
19152 + 0x6950, 0x918a, 0x0001, 0x0298, 0x00d0, 0x6017, 0x0100, 0x00a0,
19153 + 0x6017, 0x0300, 0x0088, 0x6017, 0x0500, 0x0070, 0x6017, 0x0700,
19154 + 0x0058, 0x6017, 0x0900, 0x0040, 0x6017, 0x0b00, 0x0028, 0x6017,
19155 + 0x0f00, 0x0010, 0x6017, 0x2d00, 0x9085, 0x0001, 0x0008, 0x9006,
19156 + 0x001e, 0x00be, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00b6, 0x0026,
19157 + 0x0036, 0x0156, 0x6210, 0x2258, 0xbb04, 0x9394, 0x00ff, 0x9286,
19158 + 0x0006, 0x0178, 0x9286, 0x0004, 0x0160, 0x9394, 0xff00, 0x8217,
19159 + 0x9286, 0x0006, 0x0130, 0x9286, 0x0004, 0x0118, 0x080c, 0x5c1c,
19160 + 0x04e0, 0x2011, 0x0276, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019,
19161 + 0x000a, 0x080c, 0xa439, 0x009e, 0x1588, 0x2011, 0x027a, 0x20a9,
19162 + 0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xa439, 0x009e,
19163 + 0x1528, 0x0046, 0x0016, 0xbaa0, 0x2220, 0x9006, 0x2009, 0x1853,
19164 + 0x210c, 0xd1a4, 0x0138, 0x2009, 0x0029, 0x080c, 0xc9c5, 0xb800,
19165 + 0xc0e5, 0xb802, 0x2019, 0x0029, 0x080c, 0x7d55, 0x0076, 0x2039,
19166 + 0x0000, 0x080c, 0x7c4d, 0x2c08, 0x080c, 0xc73e, 0x007e, 0x2001,
19167 + 0x0007, 0x080c, 0x5b8d, 0x001e, 0x004e, 0x9006, 0x015e, 0x003e,
19168 + 0x002e, 0x00be, 0x00ce, 0x0005, 0x00d6, 0x2069, 0x026e, 0x6800,
19169 + 0x9086, 0x0800, 0x0118, 0x6017, 0x0000, 0x0008, 0x9006, 0x00de,
19170 + 0x0005, 0x00b6, 0x00f6, 0x0016, 0x0026, 0x0036, 0x0156, 0x2079,
19171 + 0x026c, 0x7930, 0x7834, 0x080c, 0x23fd, 0x11d0, 0x080c, 0x5c0d,
19172 + 0x11b8, 0x2011, 0x0270, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019,
19173 + 0x000a, 0x080c, 0xa439, 0x009e, 0x1158, 0x2011, 0x0274, 0x20a9,
19174 + 0x0004, 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xa439, 0x009e,
19175 + 0x015e, 0x003e, 0x002e, 0x001e, 0x00fe, 0x00be, 0x0005, 0x00b6,
19176 + 0x0006, 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, 0x0263, 0x2204,
19177 + 0x8211, 0x220c, 0x080c, 0x23fd, 0x11d0, 0x080c, 0x5c0d, 0x11b8,
19178 + 0x2011, 0x0276, 0x20a9, 0x0004, 0x0096, 0x2b48, 0x2019, 0x000a,
19179 + 0x080c, 0xa439, 0x009e, 0x1158, 0x2011, 0x027a, 0x20a9, 0x0004,
19180 + 0x0096, 0x2b48, 0x2019, 0x0006, 0x080c, 0xa439, 0x009e, 0x015e,
19181 + 0x003e, 0x002e, 0x001e, 0x000e, 0x00be, 0x0005, 0x00e6, 0x00c6,
19182 + 0x0086, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0126, 0x2091,
19183 + 0x8000, 0x2740, 0x2029, 0x19bd, 0x252c, 0x2021, 0x19c3, 0x2424,
19184 + 0x2061, 0x1cd0, 0x2071, 0x1800, 0x764c, 0x706c, 0x81ff, 0x0150,
19185 + 0x0006, 0x9186, 0x1a72, 0x000e, 0x0128, 0x8001, 0x9602, 0x1a04,
19186 + 0xc7cf, 0x0018, 0x9606, 0x0904, 0xc7cf, 0x2100, 0x9c06, 0x0904,
19187 + 0xc7c6, 0x080c, 0xca01, 0x1904, 0xc7c6, 0x080c, 0xccd8, 0x0904,
19188 + 0xc7c6, 0x080c, 0xc9f1, 0x0904, 0xc7c6, 0x6720, 0x9786, 0x0001,
19189 + 0x1148, 0x080c, 0x2e64, 0x0904, 0xc7ea, 0x6004, 0x9086, 0x0000,
19190 + 0x1904, 0xc7ea, 0x9786, 0x0004, 0x0904, 0xc7ea, 0x9786, 0x0007,
19191 + 0x05e8, 0x2500, 0x9c06, 0x05d0, 0x2400, 0x9c06, 0x05b8, 0x88ff,
19192 + 0x0118, 0x6054, 0x9906, 0x1590, 0x0096, 0x6000, 0x9086, 0x0004,
19193 + 0x1120, 0x0016, 0x080c, 0x17b0, 0x001e, 0x9786, 0x0008, 0x1148,
19194 + 0x080c, 0xb295, 0x1130, 0x080c, 0x9e99, 0x009e, 0x080c, 0x9584,
19195 + 0x00e8, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x01a8, 0x9786, 0x0003,
19196 + 0x1540, 0x080c, 0xc810, 0x0110, 0xa867, 0x0103, 0xab7a, 0xa877,
19197 + 0x0000, 0x080c, 0xcc6b, 0x0016, 0x080c, 0xb374, 0x080c, 0x619c,
19198 + 0x001e, 0x080c, 0xb278, 0x009e, 0x080c, 0x9584, 0x9ce0, 0x0018,
19199 + 0x2001, 0x1818, 0x2004, 0x9c02, 0x1210, 0x0804, 0xc752, 0x012e,
19200 + 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee,
19201 + 0x0005, 0x9786, 0x0006, 0x1150, 0x9386, 0x0005, 0x0128, 0x080c,
19202 + 0xcc6b, 0x080c, 0xc970, 0x08f8, 0x009e, 0x0c00, 0x9786, 0x000a,
19203 + 0x0968, 0x0838, 0x81ff, 0x09d0, 0x9180, 0x0001, 0x2004, 0x9086,
19204 + 0x0018, 0x0130, 0x9180, 0x0001, 0x2004, 0x9086, 0x002d, 0x1970,
19205 + 0x6000, 0x9086, 0x0002, 0x1950, 0x080c, 0xb284, 0x0130, 0x080c,
19206 + 0xb295, 0x1920, 0x080c, 0x9e99, 0x0038, 0x080c, 0x2d3f, 0x080c,
19207 + 0xb295, 0x1110, 0x080c, 0x9e99, 0x080c, 0x9584, 0x0804, 0xc7c6,
19208 + 0xa864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x0005, 0x00c6, 0x00e6,
19209 + 0x0016, 0x2c08, 0x2170, 0x9006, 0x080c, 0xc997, 0x001e, 0x0120,
19210 + 0x6020, 0x9084, 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005, 0xc835,
19211 + 0xc835, 0xc835, 0xc835, 0xc835, 0xc835, 0xc837, 0xc835, 0xc835,
19212 + 0xc835, 0xc835, 0x9584, 0x9584, 0xc835, 0x9006, 0x0005, 0x0036,
19213 + 0x0046, 0x0016, 0x7010, 0x00b6, 0x2058, 0xbca0, 0x00be, 0x2c00,
19214 + 0x2009, 0x0020, 0x080c, 0xc9c5, 0x001e, 0x004e, 0x2019, 0x0002,
19215 + 0x080c, 0xc58e, 0x003e, 0x9085, 0x0001, 0x0005, 0x0096, 0x080c,
19216 + 0xb0ad, 0x0140, 0x6014, 0x904d, 0x080c, 0xad1e, 0x687b, 0x0005,
19217 + 0x080c, 0x61a9, 0x009e, 0x080c, 0x9584, 0x9085, 0x0001, 0x0005,
19218 + 0x2001, 0x0001, 0x080c, 0x5b4d, 0x0156, 0x0016, 0x0026, 0x0036,
19219 + 0x20a9, 0x0004, 0x2019, 0x1805, 0x2011, 0x0276, 0x080c, 0xa425,
19220 + 0x003e, 0x002e, 0x001e, 0x015e, 0x9005, 0x0005, 0x00f6, 0x00e6,
19221 + 0x00c6, 0x0086, 0x0076, 0x0066, 0x00b6, 0x0126, 0x2091, 0x8000,
19222 + 0x2740, 0x2061, 0x1cd0, 0x2079, 0x0001, 0x8fff, 0x0904, 0xc8d0,
19223 + 0x2071, 0x1800, 0x764c, 0x706c, 0x8001, 0x9602, 0x1a04, 0xc8d0,
19224 + 0x88ff, 0x0120, 0x2800, 0x9c06, 0x1590, 0x2078, 0x080c, 0xc9f1,
19225 + 0x0570, 0x2400, 0x9c06, 0x0558, 0x6720, 0x9786, 0x0006, 0x1538,
19226 + 0x9786, 0x0007, 0x0520, 0x88ff, 0x1140, 0x6010, 0x9b06, 0x11f8,
19227 + 0x85ff, 0x0118, 0x6054, 0x9106, 0x11d0, 0x0096, 0x601c, 0xd084,
19228 + 0x0140, 0x080c, 0xcc1f, 0x080c, 0xb76f, 0x080c, 0x17b0, 0x6023,
19229 + 0x0007, 0x6014, 0x2048, 0x080c, 0xb0ad, 0x0120, 0x0046, 0x080c,
19230 + 0xc970, 0x004e, 0x009e, 0x080c, 0x9584, 0x88ff, 0x1198, 0x9ce0,
19231 + 0x0018, 0x2001, 0x1818, 0x2004, 0x9c02, 0x1210, 0x0804, 0xc885,
19232 + 0x9006, 0x012e, 0x00be, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee,
19233 + 0x00fe, 0x0005, 0x98c5, 0x0001, 0x0ca0, 0x00b6, 0x0076, 0x0056,
19234 + 0x0086, 0x9046, 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6210,
19235 + 0x2258, 0x0096, 0x904e, 0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e,
19236 + 0x080c, 0x8f9a, 0x080c, 0xc876, 0x005e, 0x007e, 0x00be, 0x0005,
19237 + 0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x2128,
19238 + 0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, 0x5c0d, 0x1190,
19239 + 0x0056, 0x0086, 0x9046, 0x2508, 0x2029, 0x0001, 0x0096, 0x904e,
19240 + 0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e, 0x080c, 0x8f9a, 0x080c,
19241 + 0xc876, 0x005e, 0x003e, 0x001e, 0x8108, 0x1f04, 0xc903, 0x015e,
19242 + 0x00ce, 0x007e, 0x005e, 0x004e, 0x00be, 0x0005, 0x00b6, 0x0076,
19243 + 0x0056, 0x6210, 0x2258, 0x0086, 0x9046, 0x2029, 0x0001, 0x2019,
19244 + 0x0048, 0x0096, 0x904e, 0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e,
19245 + 0x080c, 0x8f9a, 0x2c20, 0x080c, 0xc876, 0x005e, 0x007e, 0x00be,
19246 + 0x0005, 0x00b6, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20,
19247 + 0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, 0x5c0d, 0x11a0,
19248 + 0x0086, 0x9046, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, 0xcc03,
19249 + 0x004e, 0x0096, 0x904e, 0x080c, 0x8ef6, 0x009e, 0x008e, 0x903e,
19250 + 0x080c, 0x8f9a, 0x080c, 0xc876, 0x003e, 0x001e, 0x8108, 0x1f04,
19251 + 0xc94b, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x00be, 0x0005,
19252 + 0x0016, 0x00f6, 0x080c, 0xb0ab, 0x0198, 0xa864, 0x9084, 0x00ff,
19253 + 0x9086, 0x0046, 0x0180, 0xa800, 0x907d, 0x0138, 0xa803, 0x0000,
19254 + 0xab82, 0x080c, 0x61a9, 0x2f48, 0x0cb0, 0xab82, 0x080c, 0x61a9,
19255 + 0x00fe, 0x001e, 0x0005, 0xa800, 0x907d, 0x0130, 0xa803, 0x0000,
19256 + 0x080c, 0x61a9, 0x2f48, 0x0cb8, 0x080c, 0x61a9, 0x0c88, 0x00e6,
19257 + 0x0046, 0x0036, 0x2061, 0x1cd0, 0x9005, 0x1138, 0x2071, 0x1800,
19258 + 0x744c, 0x706c, 0x8001, 0x9402, 0x12d8, 0x2100, 0x9c06, 0x0168,
19259 + 0x6000, 0x9086, 0x0000, 0x0148, 0x6008, 0x9206, 0x1130, 0x6010,
19260 + 0x91a0, 0x0004, 0x2424, 0x9406, 0x0140, 0x9ce0, 0x0018, 0x2001,
19261 + 0x1818, 0x2004, 0x9c02, 0x1220, 0x0c40, 0x9085, 0x0001, 0x0008,
19262 + 0x9006, 0x003e, 0x004e, 0x00ee, 0x0005, 0x0096, 0x0006, 0x080c,
19263 + 0x0fae, 0x000e, 0x090c, 0x0d84, 0xa867, 0x010d, 0xa88e, 0x0026,
19264 + 0x2010, 0x080c, 0xb09b, 0x2001, 0x0000, 0x0120, 0x2200, 0x9080,
19265 + 0x0015, 0x2004, 0x002e, 0xa87a, 0xa986, 0xac76, 0xa87f, 0x0000,
19266 + 0x2001, 0x195b, 0x2004, 0xa882, 0x9006, 0xa8e2, 0xa802, 0xa86a,
19267 + 0xa88a, 0x0126, 0x2091, 0x8000, 0x080c, 0x61a9, 0x012e, 0x009e,
19268 + 0x0005, 0x6700, 0x9786, 0x0000, 0x0158, 0x9786, 0x0001, 0x0140,
19269 + 0x9786, 0x000a, 0x0128, 0x9786, 0x0009, 0x0110, 0x9085, 0x0001,
19270 + 0x0005, 0x00e6, 0x6010, 0x9075, 0x0138, 0x00b6, 0x2058, 0xb8a0,
19271 + 0x00be, 0x9206, 0x00ee, 0x0005, 0x9085, 0x0001, 0x0cd8, 0x0016,
19272 + 0x6004, 0x908e, 0x001e, 0x11a0, 0x8007, 0x6134, 0x918c, 0x00ff,
19273 + 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0005,
19274 + 0x2001, 0x1954, 0x2004, 0x601a, 0x080c, 0x7bcb, 0x080c, 0x8125,
19275 + 0x001e, 0x0005, 0xa001, 0xa001, 0x0005, 0x6024, 0xd0e4, 0x0158,
19276 + 0xd0cc, 0x0118, 0x080c, 0xb3ae, 0x0030, 0x080c, 0xcc1f, 0x080c,
19277 + 0x79df, 0x080c, 0x9554, 0x0005, 0x9280, 0x0008, 0x2004, 0x9084,
19278 + 0x000f, 0x0002, 0xca50, 0xca50, 0xca50, 0xca52, 0xca50, 0xca52,
19279 + 0xca52, 0xca50, 0xca52, 0xca50, 0xca50, 0xca50, 0xca50, 0xca50,
19280 + 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, 0x9280, 0x0008, 0x2004,
19281 + 0x9084, 0x000f, 0x0002, 0xca69, 0xca69, 0xca69, 0xca69, 0xca69,
19282 + 0xca69, 0xca76, 0xca69, 0xca69, 0xca69, 0xca69, 0xca69, 0xca69,
19283 + 0xca69, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x2a00, 0x6003,
19284 + 0x0001, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x0005, 0x0096, 0x00c6,
19285 + 0x2260, 0x080c, 0xcc1f, 0x6043, 0x0000, 0x6024, 0xc0f4, 0xc0e4,
19286 + 0x6026, 0x603b, 0x0000, 0x00ce, 0x00d6, 0x2268, 0x9186, 0x0007,
19287 + 0x1904, 0xcad0, 0x6814, 0x9005, 0x0138, 0x2048, 0xa87c, 0xd0fc,
19288 + 0x1118, 0x00de, 0x009e, 0x08a8, 0x6007, 0x003a, 0x6003, 0x0001,
19289 + 0x080c, 0x7bcb, 0x080c, 0x8125, 0x00c6, 0x2d60, 0x6100, 0x9186,
19290 + 0x0002, 0x1904, 0xcb48, 0x6014, 0x9005, 0x1138, 0x6000, 0x9086,
19291 + 0x0007, 0x190c, 0x0d84, 0x0804, 0xcb48, 0x2048, 0x080c, 0xb0ad,
19292 + 0x1130, 0x0028, 0x2048, 0xa800, 0x9005, 0x1de0, 0x2900, 0x2048,
19293 + 0xa87c, 0x9084, 0x0003, 0x9086, 0x0002, 0x1170, 0xa87c, 0xc0dc,
19294 + 0xc0f4, 0xa87e, 0xa880, 0xc0f4, 0xc0fc, 0xa882, 0x2009, 0x0043,
19295 + 0x080c, 0xc3ee, 0x0804, 0xcb48, 0x2009, 0x0041, 0x0804, 0xcb42,
19296 + 0x9186, 0x0005, 0x15a8, 0x6814, 0x2048, 0xa87c, 0xd0bc, 0x1120,
19297 + 0x00de, 0x009e, 0x0804, 0xca69, 0xd0b4, 0x0128, 0xd0fc, 0x090c,
19298 + 0x0d84, 0x0804, 0xca8a, 0x6007, 0x003a, 0x6003, 0x0001, 0x080c,
19299 + 0x7bcb, 0x080c, 0x8125, 0x00c6, 0x2d60, 0x6100, 0x9186, 0x0002,
19300 + 0x0120, 0x9186, 0x0004, 0x1904, 0xcb48, 0x6814, 0x2048, 0xa97c,
19301 + 0xc1f4, 0xc1dc, 0xa97e, 0xa980, 0xc1f4, 0xc1fc, 0xc1bc, 0xa982,
19302 + 0x00f6, 0x2c78, 0x080c, 0x150d, 0x00fe, 0x2009, 0x0042, 0x04d0,
19303 + 0x0036, 0x080c, 0x0fae, 0x090c, 0x0d84, 0xa867, 0x010d, 0x9006,
19304 + 0xa802, 0xa86a, 0xa88a, 0x2d18, 0xab8e, 0xa887, 0x0045, 0x2c00,
19305 + 0xa892, 0x6038, 0xa8a2, 0x2360, 0x6024, 0xc0dd, 0x6026, 0x6010,
19306 + 0x00b6, 0x2058, 0xb8a0, 0x00be, 0x2004, 0x6354, 0xab7a, 0xa876,
19307 + 0x9006, 0xa87e, 0xa882, 0xad9a, 0xae96, 0xa89f, 0x0001, 0x080c,
19308 + 0x61a9, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xc58e, 0x2d00,
19309 + 0x600a, 0x6023, 0x0006, 0x6003, 0x0007, 0x901e, 0x631a, 0x6342,
19310 + 0x003e, 0x0038, 0x6043, 0x0000, 0x6003, 0x0007, 0x080c, 0xc3ee,
19311 + 0x00ce, 0x00de, 0x009e, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004,
19312 + 0x9082, 0x0085, 0x2008, 0x00c2, 0x9186, 0x0027, 0x1178, 0x080c,
19313 + 0x8026, 0x0036, 0x0096, 0x6014, 0x2048, 0x2019, 0x0004, 0x080c,
19314 + 0xc970, 0x009e, 0x003e, 0x080c, 0x8125, 0x0005, 0x9186, 0x0014,
19315 + 0x0d70, 0x080c, 0x95e9, 0x0005, 0xcb7b, 0xcb79, 0xcb79, 0xcb79,
19316 + 0xcb79, 0xcb79, 0xcb7b, 0xcb79, 0xcb79, 0xcb79, 0xcb79, 0xcb79,
19317 + 0xcb79, 0x080c, 0x0d84, 0x080c, 0x8026, 0x6003, 0x000c, 0x080c,
19318 + 0x8125, 0x0005, 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208,
19319 + 0x001a, 0x080c, 0x95e9, 0x0005, 0xcb99, 0xcb99, 0xcb99, 0xcb99,
19320 + 0xcb9b, 0xcbbb, 0xcb99, 0xcb99, 0xcb99, 0xcb99, 0xcb99, 0xcb99,
19321 + 0xcb99, 0x080c, 0x0d84, 0x00d6, 0x2c68, 0x080c, 0x94fe, 0x01b0,
19322 + 0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0x026e, 0x210c, 0x613a,
19323 + 0x2009, 0x026f, 0x210c, 0x613e, 0x600b, 0xffff, 0x6910, 0x6112,
19324 + 0x6023, 0x0004, 0x080c, 0x7bcb, 0x080c, 0x8125, 0x2d60, 0x080c,
19325 + 0x9554, 0x00de, 0x0005, 0x080c, 0x9554, 0x0005, 0x00e6, 0x6010,
19326 + 0x00b6, 0x2058, 0xb800, 0x00be, 0xd0ec, 0x00ee, 0x0005, 0x2009,
19327 + 0x1872, 0x210c, 0xd1ec, 0x05b0, 0x6003, 0x0002, 0x6024, 0xc0e5,
19328 + 0x6026, 0xd0cc, 0x0150, 0x2001, 0x1955, 0x2004, 0x6042, 0x2009,
19329 + 0x1872, 0x210c, 0xd1f4, 0x1520, 0x00a0, 0x2009, 0x1872, 0x210c,
19330 + 0xd1f4, 0x0128, 0x6024, 0xc0e4, 0x6026, 0x9006, 0x00d8, 0x2001,
19331 + 0x1955, 0x200c, 0x2001, 0x1953, 0x2004, 0x9100, 0x9080, 0x000a,
19332 + 0x6042, 0x6010, 0x00b6, 0x2058, 0xb8ac, 0x00be, 0x0008, 0x2104,
19333 + 0x9005, 0x0118, 0x9088, 0x0003, 0x0cd0, 0x2c0a, 0x600f, 0x0000,
19334 + 0x9085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x6154, 0xb8ac,
19335 + 0x2060, 0x8cff, 0x0180, 0x84ff, 0x1118, 0x6054, 0x9106, 0x1138,
19336 + 0x600c, 0x2072, 0x080c, 0x79df, 0x080c, 0x9554, 0x0010, 0x9cf0,
19337 + 0x0003, 0x2e64, 0x0c70, 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6,
19338 + 0x00b6, 0x6010, 0x2058, 0xb8ac, 0x2068, 0x9005, 0x0130, 0x9c06,
19339 + 0x0110, 0x680c, 0x0cd0, 0x600c, 0x680e, 0x00be, 0x00de, 0x0005,
19340 + 0x0026, 0x0036, 0x0156, 0x2011, 0x182a, 0x2204, 0x9084, 0x00ff,
19341 + 0x2019, 0x026e, 0x2334, 0x9636, 0x1508, 0x8318, 0x2334, 0x2204,
19342 + 0x9084, 0xff00, 0x9636, 0x11d0, 0x2011, 0x0270, 0x20a9, 0x0004,
19343 + 0x6010, 0x0096, 0x2048, 0x2019, 0x000a, 0x080c, 0xa439, 0x009e,
19344 + 0x1168, 0x2011, 0x0274, 0x20a9, 0x0004, 0x6010, 0x0096, 0x2048,
19345 + 0x2019, 0x0006, 0x080c, 0xa439, 0x009e, 0x1100, 0x015e, 0x003e,
19346 + 0x002e, 0x0005, 0x00e6, 0x2071, 0x1800, 0x080c, 0x5677, 0x080c,
19347 + 0x2b1e, 0x00ee, 0x0005, 0x00e6, 0x6010, 0x00b6, 0x2058, 0xb800,
19348 + 0x00be, 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005, 0xa880, 0xc0e5,
19349 + 0xa882, 0x0005, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046,
19350 + 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, 0x2029, 0x19bd, 0x252c,
19351 + 0x2021, 0x19c3, 0x2424, 0x2061, 0x1cd0, 0x2071, 0x1800, 0x764c,
19352 + 0x706c, 0x9606, 0x0578, 0x6720, 0x9786, 0x0001, 0x0118, 0x9786,
19353 + 0x0008, 0x1500, 0x2500, 0x9c06, 0x01e8, 0x2400, 0x9c06, 0x01d0,
19354 + 0x080c, 0xc9f1, 0x01b8, 0x080c, 0xca01, 0x11a0, 0x6000, 0x9086,
19355 + 0x0004, 0x1120, 0x0016, 0x080c, 0x17b0, 0x001e, 0x080c, 0xb284,
19356 + 0x1110, 0x080c, 0x2d3f, 0x080c, 0xb295, 0x1110, 0x080c, 0x9e99,
19357 + 0x080c, 0x9584, 0x9ce0, 0x0018, 0x2001, 0x1818, 0x2004, 0x9c02,
19358 + 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, 0x006e,
19359 + 0x007e, 0x00ce, 0x00ee, 0x0005, 0x2001, 0x180f, 0x2004, 0xd0dc,
19360 + 0x0005, 0x0006, 0x2001, 0x1836, 0x2004, 0xd09c, 0x000e, 0x0005,
19361 + 0x6004, 0x9086, 0x0001, 0x1128, 0x080c, 0x905b, 0x080c, 0x9584,
19362 + 0x9006, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000,
19363 + 0x2071, 0x1840, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4,
19364 + 0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, 0x9084,
19365 + 0x0007, 0x908e, 0x0003, 0x0148, 0x908e, 0x0004, 0x0130, 0x908e,
19366 + 0x0005, 0x0118, 0x2071, 0x184a, 0x0089, 0x001e, 0x00ee, 0x000e,
19367 + 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071,
19368 + 0x1842, 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e04, 0x8000,
19369 + 0x2072, 0x1220, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x0005, 0x00e6,
19370 + 0x2071, 0x1840, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1844,
19371 + 0x0c69, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000,
19372 + 0x2071, 0x1840, 0x7044, 0x8000, 0x7046, 0x00ee, 0x000e, 0x012e,
19373 + 0x0005, 0x0002, 0x0003, 0x03d6, 0x0000, 0x8064, 0x0008, 0x0010,
19374 + 0x0000, 0x8066, 0x0000, 0x0101, 0x0008, 0x4406, 0x000b, 0x8060,
19375 + 0x0000, 0x0400, 0x0000, 0x580c, 0x0003, 0x7934, 0x000b, 0x5090,
19376 + 0x000b, 0x4c09, 0x0003, 0xbac0, 0x0009, 0x0082, 0x0008, 0x0c09,
19377 + 0x000b, 0x15fe, 0x0008, 0x3409, 0x0003, 0x808c, 0x0008, 0x0001,
19378 + 0x0000, 0x0000, 0x0007, 0x4047, 0x000a, 0x808c, 0x0008, 0x0002,
19379 + 0x0000, 0x081b, 0x0003, 0x4022, 0x0000, 0x001c, 0x0003, 0x4122,
19380 + 0x0008, 0x4447, 0x0002, 0x0de7, 0x0003, 0x0bfe, 0x0008, 0x11a0,
19381 + 0x0001, 0x11c9, 0x000b, 0x0ca0, 0x0001, 0x11c9, 0x000b, 0x9180,
19382 + 0x0001, 0x0004, 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62,
19383 + 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x442a, 0x0003, 0x808c,
19384 + 0x0008, 0x0000, 0x0008, 0x0060, 0x0008, 0x8062, 0x0008, 0x0004,
19385 + 0x0000, 0x8066, 0x0000, 0x0411, 0x0000, 0x4432, 0x0003, 0x03fe,
19386 + 0x0000, 0x43e0, 0x0001, 0x0dc6, 0x0003, 0xc2c0, 0x0009, 0x00ff,
19387 + 0x0008, 0x02e0, 0x0001, 0x0dc6, 0x0003, 0x9180, 0x0001, 0x0005,
19388 + 0x0008, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066,
19389 + 0x0000, 0x0019, 0x0000, 0x4441, 0x000b, 0x0240, 0x0002, 0x09c3,
19390 + 0x000b, 0x00fe, 0x0000, 0x31c6, 0x0003, 0x112a, 0x0000, 0x002e,
19391 + 0x0008, 0x022c, 0x0008, 0x3a44, 0x0002, 0x0c09, 0x000b, 0x808c,
19392 + 0x0008, 0x0002, 0x0000, 0x1760, 0x0008, 0x8062, 0x0008, 0x000f,
19393 + 0x0008, 0x8066, 0x0000, 0x0011, 0x0008, 0x4452, 0x0003, 0x01fe,
19394 + 0x0008, 0x42e0, 0x0009, 0x0db9, 0x000b, 0x00fe, 0x0000, 0x43e0,
19395 + 0x0001, 0x0db9, 0x000b, 0x1734, 0x0000, 0x1530, 0x0000, 0x1632,
19396 + 0x0008, 0x0d2a, 0x0008, 0x9880, 0x0001, 0x0010, 0x0000, 0x8060,
19397 + 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x1e0a,
19398 + 0x0008, 0x4464, 0x0003, 0x808a, 0x0008, 0x0003, 0x0008, 0x1a60,
19399 + 0x0000, 0x8062, 0x0008, 0x0002, 0x0000, 0x586a, 0x0003, 0x8066,
19400 + 0x0000, 0x3679, 0x0000, 0x446d, 0x0003, 0x586e, 0x000b, 0x8054,
19401 + 0x0008, 0x0011, 0x0008, 0x8074, 0x0000, 0x1010, 0x0008, 0x1efe,
19402 + 0x0000, 0x3009, 0x000b, 0x0077, 0x0004, 0x0009, 0x000b, 0x1c60,
19403 + 0x0000, 0x1b62, 0x0000, 0x8066, 0x0000, 0x0231, 0x0008, 0x447b,
19404 + 0x000b, 0x587c, 0x000b, 0x0140, 0x0008, 0x0242, 0x0000, 0x1f43,
19405 + 0x0002, 0x0c86, 0x0003, 0x0d44, 0x0000, 0x0d46, 0x0008, 0x0348,
19406 + 0x0008, 0x044a, 0x0008, 0x008a, 0x0003, 0x0344, 0x0008, 0x0446,
19407 + 0x0008, 0x0548, 0x0008, 0x064a, 0x0000, 0x588a, 0x000b, 0x8054,
19408 + 0x0008, 0x0001, 0x0000, 0x8074, 0x0000, 0x2020, 0x0008, 0x4000,
19409 + 0x000f, 0x3a40, 0x000a, 0x0c0c, 0x000b, 0x2b24, 0x0008, 0x2b24,
19410 + 0x0008, 0x5894, 0x000b, 0x8054, 0x0008, 0x0002, 0x0000, 0x1242,
19411 + 0x0002, 0x08d8, 0x0003, 0x3a45, 0x000a, 0x08c9, 0x0003, 0x1e10,
19412 + 0x000a, 0x7f3c, 0x0000, 0x08c6, 0x0003, 0x1d00, 0x0002, 0x7f3a,
19413 + 0x0000, 0x0d60, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009,
19414 + 0x0008, 0x44a4, 0x0003, 0x00fe, 0x0000, 0x34c3, 0x0003, 0x1c60,
19415 + 0x0000, 0x8062, 0x0008, 0x0001, 0x0000, 0x8066, 0x0000, 0x0009,
19416 + 0x0008, 0x44ac, 0x000b, 0x00fe, 0x0000, 0x31a2, 0x000b, 0x0038,
19417 + 0x0000, 0x0060, 0x0008, 0x8062, 0x0008, 0x0019, 0x0000, 0x8066,
19418 + 0x0000, 0x0009, 0x0008, 0x44b5, 0x0003, 0x80c0, 0x0009, 0x00ff,
19419 + 0x0008, 0x7f3e, 0x0008, 0x0d60, 0x0000, 0x0efe, 0x0008, 0x1f80,
19420 + 0x0001, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x44bf,
19421 + 0x0003, 0x003a, 0x0008, 0x1dfe, 0x0000, 0x00a0, 0x000b, 0x0036,
19422 + 0x0008, 0x0077, 0x0004, 0x00d8, 0x000b, 0x8074, 0x0000, 0x2000,
19423 + 0x0000, 0x00d8, 0x000b, 0x3a44, 0x0002, 0x09cc, 0x000b, 0x8074,
19424 + 0x0000, 0x1000, 0x0000, 0x2d0e, 0x0000, 0x2d0e, 0x0000, 0x35a2,
19425 + 0x0003, 0x26fe, 0x0008, 0x26fe, 0x0008, 0x2700, 0x0008, 0x2700,
19426 + 0x0008, 0x00d0, 0x0009, 0x0ce6, 0x0003, 0x8074, 0x0000, 0x4040,
19427 + 0x0008, 0x58d8, 0x0003, 0x5090, 0x000b, 0x3a46, 0x000a, 0x0ce6,
19428 + 0x0003, 0x3a47, 0x0002, 0x08e3, 0x000b, 0x8054, 0x0008, 0x0004,
19429 + 0x0000, 0x8074, 0x0000, 0x8000, 0x0000, 0x0127, 0x0003, 0x92c0,
19430 + 0x0009, 0x0f88, 0x0008, 0x0809, 0x0003, 0x1a60, 0x0000, 0x8062,
19431 + 0x0008, 0x0002, 0x0000, 0x8066, 0x0000, 0x362a, 0x0000, 0x44eb,
19432 + 0x000b, 0x2000, 0x0000, 0x2000, 0x0000, 0x2102, 0x0000, 0x2102,
19433 + 0x0000, 0x2204, 0x0000, 0x2204, 0x0000, 0x2306, 0x0000, 0x2306,
19434 + 0x0000, 0x2408, 0x0000, 0x2408, 0x0000, 0x250a, 0x0000, 0x250a,
19435 + 0x0000, 0x260c, 0x0000, 0x260c, 0x0000, 0x270e, 0x0000, 0x270e,
19436 + 0x0000, 0x2810, 0x0000, 0x2810, 0x0000, 0x2912, 0x0000, 0x2912,
19437 + 0x0000, 0x1a60, 0x0000, 0x8062, 0x0008, 0x0007, 0x0000, 0x8066,
19438 + 0x0000, 0x0052, 0x0000, 0x4505, 0x0003, 0x92c0, 0x0009, 0x0780,
19439 + 0x0008, 0x0db3, 0x000b, 0x124b, 0x0002, 0x090e, 0x0003, 0x2e4d,
19440 + 0x0002, 0x2e4d, 0x0002, 0x09a2, 0x0003, 0x3a46, 0x000a, 0x0d1b,
19441 + 0x0003, 0x5910, 0x0003, 0x8054, 0x0008, 0x0004, 0x0000, 0x1243,
19442 + 0x000a, 0x0925, 0x0003, 0x8010, 0x0008, 0x000d, 0x0000, 0x0193,
19443 + 0x000c, 0x1810, 0x0000, 0x0193, 0x000c, 0x0125, 0x000b, 0x194d,
19444 + 0x000a, 0x091f, 0x0003, 0x1243, 0x000a, 0x09a9, 0x000b, 0x591f,
19445 + 0x0003, 0x8054, 0x0008, 0x0004, 0x0000, 0x0188, 0x000c, 0x1810,
19446 + 0x0000, 0x0193, 0x000c, 0x8074, 0x0000, 0xf000, 0x0008, 0x3a42,
19447 + 0x0002, 0x0d2d, 0x0003, 0x15fe, 0x0008, 0x344b, 0x0003, 0x0d30,
19448 + 0x0000, 0x0009, 0x000b, 0x0d30, 0x0000, 0x8074, 0x0000, 0x0501,
19449 + 0x0000, 0x8010, 0x0008, 0x000c, 0x0008, 0x0193, 0x000c, 0x0009,
19450 + 0x000b, 0xbbe0, 0x0009, 0x0030, 0x0008, 0x0d44, 0x0003, 0x18fe,
19451 + 0x0000, 0x3ce0, 0x0009, 0x0941, 0x000b, 0x15fe, 0x0008, 0x3ce0,
19452 + 0x0009, 0x0941, 0x000b, 0x0183, 0x0004, 0x8076, 0x0008, 0x0040,
19453 + 0x0000, 0x0180, 0x000b, 0x8076, 0x0008, 0x0041, 0x0008, 0x0180,
19454 + 0x000b, 0xbbe0, 0x0009, 0x0032, 0x0000, 0x0d49, 0x000b, 0x3c1e,
19455 + 0x0008, 0x0180, 0x000b, 0xbbe0, 0x0009, 0x0037, 0x0000, 0x0d65,
19456 + 0x0003, 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x0d41, 0x0003, 0x1a60,
19457 + 0x0000, 0x8062, 0x0008, 0x000d, 0x0000, 0x2604, 0x0008, 0x2604,
19458 + 0x0008, 0x2706, 0x0008, 0x2706, 0x0008, 0x2808, 0x0000, 0x2808,
19459 + 0x0000, 0x290a, 0x0000, 0x290a, 0x0000, 0x8066, 0x0000, 0x0422,
19460 + 0x0000, 0x455c, 0x0003, 0x0188, 0x000c, 0x8054, 0x0008, 0x0004,
19461 + 0x0000, 0x8074, 0x0000, 0xf000, 0x0008, 0x8072, 0x0000, 0x8000,
19462 + 0x0000, 0x0127, 0x0003, 0xbbe0, 0x0009, 0x0038, 0x0000, 0x0d77,
19463 + 0x0003, 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x0974, 0x000b, 0x15fe,
19464 + 0x0008, 0x3ce0, 0x0009, 0x0d3d, 0x000b, 0x0183, 0x0004, 0x8076,
19465 + 0x0008, 0x0040, 0x0000, 0x8072, 0x0000, 0x8000, 0x0000, 0x01c3,
19466 + 0x0003, 0x8076, 0x0008, 0x0042, 0x0008, 0x0180, 0x000b, 0xbbe0,
19467 + 0x0009, 0x0016, 0x0000, 0x0d80, 0x000b, 0x3a44, 0x0002, 0x0c0b,
19468 + 0x0003, 0x8072, 0x0000, 0x8000, 0x0000, 0x8000, 0x000f, 0x0009,
19469 + 0x000b, 0x8072, 0x0000, 0x8000, 0x0000, 0x0009, 0x000b, 0x3d30,
19470 + 0x000a, 0x7f00, 0x0000, 0xbc80, 0x0001, 0x0007, 0x0000, 0x018c,
19471 + 0x000b, 0x1930, 0x000a, 0x7f00, 0x0000, 0x9880, 0x0001, 0x0007,
19472 + 0x0000, 0x8060, 0x0000, 0x0400, 0x0000, 0x7f62, 0x0008, 0x8066,
19473 + 0x0000, 0x000a, 0x0008, 0x4591, 0x000b, 0x4000, 0x000f, 0x2193,
19474 + 0x000b, 0x0870, 0x0008, 0x4000, 0x000f, 0xbac0, 0x0009, 0x0090,
19475 + 0x0008, 0x099c, 0x000b, 0x8074, 0x0000, 0x0706, 0x0000, 0x019e,
19476 + 0x000b, 0x8074, 0x0000, 0x0703, 0x0000, 0x4000, 0x000f, 0x8010,
19477 + 0x0008, 0x0008, 0x0000, 0x01d1, 0x0003, 0x0188, 0x000c, 0x8010,
19478 + 0x0008, 0x0007, 0x0000, 0x0193, 0x000c, 0x1810, 0x0000, 0x0193,
19479 + 0x000c, 0x01db, 0x0003, 0x0188, 0x000c, 0x8010, 0x0008, 0x001b,
19480 + 0x0008, 0x0193, 0x000c, 0x1810, 0x0000, 0x0193, 0x000c, 0x8074,
19481 + 0x0000, 0xf080, 0x0000, 0x0d30, 0x0000, 0x0009, 0x000b, 0x8010,
19482 + 0x0008, 0x0009, 0x0008, 0x01d1, 0x0003, 0x8010, 0x0008, 0x0005,
19483 + 0x0008, 0x01d1, 0x0003, 0x808c, 0x0008, 0x0001, 0x0000, 0x8010,
19484 + 0x0008, 0x0004, 0x0000, 0x4143, 0x000a, 0x0859, 0x0003, 0x3a44,
19485 + 0x0002, 0x0c09, 0x000b, 0x0d2a, 0x0008, 0x01d1, 0x0003, 0x8010,
19486 + 0x0008, 0x0003, 0x0008, 0x01d3, 0x000b, 0x8010, 0x0008, 0x000b,
19487 + 0x0000, 0x01d3, 0x000b, 0x8010, 0x0008, 0x0002, 0x0000, 0x01d3,
19488 + 0x000b, 0x3a47, 0x0002, 0x0cd8, 0x000b, 0x8010, 0x0008, 0x0006,
19489 + 0x0008, 0x01d3, 0x000b, 0x8074, 0x0000, 0xf000, 0x0008, 0x0193,
19490 + 0x000c, 0x0196, 0x000c, 0x3a40, 0x000a, 0x0809, 0x0003, 0x8010,
19491 + 0x0008, 0x000c, 0x0008, 0x0193, 0x000c, 0x0009, 0x000b, 0x8074,
19492 + 0x0000, 0xf080, 0x0000, 0x0d30, 0x0000, 0x2e4d, 0x0002, 0x2e4d,
19493 + 0x0002, 0x09e4, 0x000b, 0x8054, 0x0008, 0x0019, 0x0000, 0x0009,
19494 + 0x000b, 0x8054, 0x0008, 0x0009, 0x0008, 0x0009, 0x000b, 0x3a44,
19495 + 0x0002, 0x0c09, 0x000b, 0x01c6, 0x0003, 0xc993, 0xf609, 0x0001,
19496 + 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100,
19497 + 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0xd29e
19499 +#ifdef UNIQUE_FW_NAME
19500 +unsigned short fw2300tpx_length01 = 0xc920;
19502 +unsigned short risc_code_length01 = 0xc920;
19505 --- /dev/null Thu Apr 11 07:25:15 2002
19506 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_cfg.c Thu Jul 3 15:34:42 2003
19508 +/******************************************************************************
19509 + * QLOGIC LINUX SOFTWARE
19511 + * QLogic ISP2x00 device driver for Linux 2.5.x
19512 + * Copyright (C) 2003 Qlogic Corporation
19513 + * (www.qlogic.com)
19515 + * This program is free software; you can redistribute it and/or modify it
19516 + * under the terms of the GNU General Public License as published by the
19517 + * Free Software Foundation; either version 2, or (at your option) any
19520 + * This program is distributed in the hope that it will be useful, but
19521 + * WITHOUT ANY WARRANTY; without even the implied warranty of
19522 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19523 + * General Public License for more details.
19525 + ******************************************************************************/
19528 + * QLogic ISP2x00 Multi-path LUN Support Driver
19532 +#include "qla_os.h"
19533 +#include "qla_def.h"
19538 + * Local Function Prototypes.
19541 +static uint32_t qla2x00_add_portname_to_mp_dev(mp_device_t *, uint8_t *);
19543 +static mp_device_t * qla2x00_allocate_mp_dev(uint8_t *, uint8_t *);
19544 +static mp_path_t * qla2x00_allocate_path(mp_host_t *, uint16_t, fc_port_t *,
19546 +static mp_path_list_t * qla2x00_allocate_path_list(void);
19548 +static mp_host_t * qla2x00_find_host_by_name(uint8_t *);
19550 +static mp_device_t * qla2x00_find_or_allocate_mp_dev (mp_host_t *, uint16_t,
19552 +static mp_path_t * qla2x00_find_or_allocate_path(mp_host_t *, mp_device_t *,
19553 + uint16_t, fc_port_t *);
19555 +static uint32_t qla2x00_cfg_register_failover_lun(mp_device_t *,srb_t *,
19557 +static uint32_t qla2x00_send_failover_notify(mp_device_t *, uint8_t,
19558 + mp_path_t *, mp_path_t *);
19559 +static mp_path_t * qla2x00_select_next_path(mp_host_t *, mp_device_t *,
19562 +static uint8_t qla2x00_update_mp_host(mp_host_t *);
19563 +static uint32_t qla2x00_update_mp_tree (void);
19565 +static fc_lun_t *qla2x00_find_matching_lun(uint8_t , mp_path_t *);
19566 +static mp_path_t *qla2x00_find_path_by_id(mp_device_t *, uint8_t);
19567 +static mp_device_t *qla2x00_find_mp_dev_by_id(mp_host_t *, uint8_t);
19568 +static mp_device_t *qla2x00_find_mp_dev_by_name(mp_host_t *, uint8_t *);
19570 +static mp_path_t *qla2x00_get_visible_path(mp_device_t *dp);
19571 +static void qla2x00_map_os_targets(mp_host_t *);
19572 +static void qla2x00_map_os_luns(mp_host_t *, mp_device_t *, uint16_t);
19573 +static uint8_t qla2x00_map_a_oslun(mp_host_t *, mp_device_t *, uint16_t, uint16_t);
19575 +static uint8_t qla2x00_is_ww_name_zero(uint8_t *);
19576 +static void qla2x00_add_path(mp_path_list_t *, mp_path_t *);
19577 +static void qla2x00_failback_single_lun(mp_device_t *, uint8_t, uint8_t);
19578 +static void qla2x00_failback_luns(mp_host_t *);
19579 +static void qla2x00_setup_new_path(mp_device_t *, mp_path_t *);
19582 + * Global data items
19584 +mp_host_t *mp_hosts_base = NULL;
19585 +uint8_t mp_config_required = FALSE;
19586 +static int mp_num_hosts = 0;
19587 +static uint8_t mp_initialized = FALSE;
19595 + * qla2x00_cfg_init
19596 + * Initialize configuration structures to handle an instance of
19597 + * an HBA, QLA2x000 card.
19600 + * ha = adapter state pointer.
19603 + * qla2x00 local function return status code.
19606 + * Kernel context.
19609 +qla2x00_cfg_init(scsi_qla_host_t *ha)
19613 + ENTER("qla2x00_cfg_init");
19614 + set_bit(CFG_ACTIVE, &ha->cfg_flags);
19615 + if (!mp_initialized) {
19616 + /* First HBA, initialize the failover global properties */
19617 + qla2x00_fo_init_params(ha);
19619 + /* If the user specified a device configuration then
19620 + * it is use as the configuration. Otherwise, we wait
19621 + * for path discovery.
19623 + if ( mp_config_required )
19624 + qla2x00_cfg_build_path_tree(ha);
19626 + rval = qla2x00_cfg_path_discovery(ha);
19627 + clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19628 + LEAVE("qla2x00_cfg_init");
19633 + * qla2x00_cfg_path_discovery
19634 + * Discover the path configuration from the device configuration
19635 + * for the specified host adapter and build the path search tree.
19636 + * This function is called after the lower level driver has
19637 + * completed its port and lun discovery.
19640 + * ha = adapter state pointer.
19643 + * qla2x00 local function return status code.
19646 + * Kernel context.
19649 +qla2x00_cfg_path_discovery(scsi_qla_host_t *ha)
19651 + int rval = QLA2X00_SUCCESS;
19655 + ENTER("qla2x00_cfg_path_discovery");
19657 + name = &ha->init_cb->node_name[0];
19659 + set_bit(CFG_ACTIVE, &ha->cfg_flags);
19660 + /* Initialize the path tree for this adapter */
19661 + host = qla2x00_find_host_by_name(name);
19662 + if ( mp_config_required ) {
19663 + if (host == NULL ) {
19664 + DEBUG4(printk("cfg_path_discovery: host not found, "
19666 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
19667 + name[0], name[1], name[2], name[3],
19668 + name[4], name[5], name[6], name[7]);)
19669 + rval = QLA2X00_FUNCTION_FAILED;
19670 + } else if (ha->instance != host->instance) {
19671 + DEBUG4(printk("cfg_path_discovery: host instance "
19672 + "don't match - instance=%ld.\n",
19674 + rval = QLA2X00_FUNCTION_FAILED;
19676 + } else if ( host == NULL ) {
19677 + /* New host adapter so allocate it */
19678 + if ( (host = qla2x00_alloc_host(ha)) == NULL ) {
19680 + "qla2x00(%d): Couldn't allocate "
19681 + "host - ha = %p.\n",
19682 + (int)ha->instance, ha);
19683 + rval = QLA2X00_FUNCTION_FAILED;
19687 + /* Fill in information about host */
19688 + if (host != NULL ) {
19689 + host->flags |= MP_HOST_FLAG_NEEDS_UPDATE;
19690 + host->flags |= MP_HOST_FLAG_LUN_FO_ENABLED;
19691 + host->fcports = &ha->fcports;
19693 + /* Check if multipath is enabled */
19694 + if (!qla2x00_update_mp_host(host)) {
19695 + rval = QLA2X00_FUNCTION_FAILED;
19697 + host->flags &= ~MP_HOST_FLAG_LUN_FO_ENABLED;
19700 + if (rval != QLA2X00_SUCCESS) {
19702 + DEBUG4(printk("qla2x00_path_discovery: Exiting FAILED\n");)
19704 + LEAVE("qla2x00_cfg_path_discovery");
19706 + clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19712 + * qla2x00_cfg_event_notifiy
19713 + * Callback for host driver to notify us of configuration changes.
19716 + * ha = adapter state pointer.
19717 + * i_type = event type
19722 + * Kernel context.
19725 +qla2x00_cfg_event_notify(scsi_qla_host_t *ha, uint32_t i_type)
19727 + mp_host_t *host; /* host adapter pointer */
19729 + ENTER("qla2x00_cfg_event_notify");
19731 + set_bit(CFG_ACTIVE, &ha->cfg_flags);
19732 + switch (i_type) {
19733 + case MP_NOTIFY_RESET_DETECTED:
19734 + DEBUG(printk("scsi%ld: MP_NOTIFY_RESET_DETECTED "
19738 + case MP_NOTIFY_PWR_LOSS:
19739 + DEBUG(printk("scsi%ld: MP_NOTIFY_PWR_LOSS - "
19743 + * Update our path tree in case we are
19744 + * losing the adapter
19746 + qla2x00_update_mp_tree();
19747 + /* Free our resources for adapter */
19749 + case MP_NOTIFY_LOOP_UP:
19750 + DEBUG(printk("scsi%ld: MP_NOTIFY_LOOP_UP - "
19751 + "update host tree\n",
19753 + /* Adapter is back up with new configuration */
19754 + if ((host = qla2x00_cfg_find_host(ha)) != NULL) {
19755 + host->flags |= MP_HOST_FLAG_NEEDS_UPDATE;
19756 + host->fcports = &ha->fcports;
19757 + qla2x00_update_mp_tree();
19760 + case MP_NOTIFY_LOOP_DOWN:
19761 + case MP_NOTIFY_BUS_RESET:
19762 + DEBUG(printk("scsi%ld: MP_NOTIFY_OTHERS - "
19770 + clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19772 + LEAVE("qla2x00_cfg_event_notify");
19774 + return QLA2X00_SUCCESS;
19778 + * qla2x00_cfg_failover
19779 + * A problem has been detected with the current path for this
19780 + * lun. Select the next available path as the current path
19781 + * for this device.
19784 + * ha = pointer to host adapter
19785 + * fp - pointer to failed fc_lun (failback lun)
19786 + * tgt - pointer to target
19789 + * pointer to new fc_lun_t, or NULL if failover fails.
19792 +qla2x00_cfg_failover(scsi_qla_host_t *ha, fc_lun_t *fp,
19793 + os_tgt_t *tgt, srb_t *sp)
19795 + mp_host_t *host; /* host adapter pointer */
19796 + mp_device_t *dp; /* virtual device pointer */
19797 + mp_path_t *new_path; /* new path pointer */
19798 + fc_lun_t *new_fp = NULL;
19800 + ENTER("qla2x00_cfg_failover");
19801 + set_bit(CFG_ACTIVE, &ha->cfg_flags);
19802 + if ((host = qla2x00_cfg_find_host(ha)) != NULL) {
19803 + if ((dp = qla2x00_find_mp_dev_by_name(
19804 + host, tgt->node_name)) != NULL ) {
19806 + DEBUG3(printk("qla2x00_cfg_failover: dp = %p\n", dp);)
19808 + * Point at the next path in the path list if there is
19809 + * one, and if it hasn't already been failed over by
19810 + * another I/O. If there is only one path continuer
19811 + * to point at it.
19813 + new_path = qla2x00_select_next_path(host, dp, fp->lun);
19814 + DEBUG3(printk("cfg_failover: new path @ %p\n",
19816 + new_fp = qla2x00_find_matching_lun(fp->lun, new_path);
19817 + DEBUG3(printk("cfg_failover: new fp lun @ %p\n",
19820 + qla2x00_cfg_register_failover_lun(dp, sp, new_fp);
19823 + "qla2x00(%d): Couldn't find device "
19828 + clear_bit(CFG_ACTIVE, &ha->cfg_flags);
19830 + LEAVE("qla2x00_cfg_failover");
19839 +#if defined(CFG_IOCTL)
19841 + * qla2x00_cfg_get_paths
19842 + * Get list of paths EXT_FO_GET_PATHS.
19845 + * ha = pointer to adapter
19846 + * bp = pointer to buffer
19847 + * cmd = Pointer to kernel copy of EXT_IOCTL.
19850 + * 0 on success or errno.
19851 + * driver ioctl errors are returned via cmd->Status.
19854 + * Kernel context.
19857 +qla2x00_cfg_get_paths(EXT_IOCTL *cmd, FO_GET_PATHS *bp, int mode)
19859 + FO_PATHS_INFO *paths, *u_paths;
19860 + FO_PATH_ENTRY *entry;
19861 + EXT_DEST_ADDR *sap = &bp->HbaAddr;
19862 + mp_host_t *host = NULL; /* host adapter pointer */
19863 + mp_device_t *dp; /* virtual device pointer */
19864 + mp_path_t *path; /* path pointer */
19865 + mp_path_list_t *path_list; /* path list pointer */
19868 + scsi_qla_host_t *ha;
19870 + DEBUG9(printk("%s: entered.\n", __func__);)
19872 + u_paths = (FO_PATHS_INFO *) cmd->ResponseAdr;
19873 + ha = qla2x00_get_hba((int)bp->HbaInstance);
19876 + DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
19877 + __func__, bp->HbaInstance);)
19879 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
19883 + if (ha->flags.failover_enabled)
19884 + if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
19885 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
19886 + cmd->DetailStatus = EXT_DSTATUS_HBA_INST;
19887 + DEBUG4(printk("%s: cannot find target (%ld)\n",
19888 + __func__, ha->instance);)
19889 + DEBUG9_10(printk("%s: cannot find host inst(%ld).\n",
19890 + __func__, ha->instance);)
19895 + paths = (FO_PATHS_INFO *)qla2x00_kmem_zalloc(
19896 + sizeof(FO_PATHS_INFO), GFP_ATOMIC, 20);
19897 + if (paths == NULL) {
19898 + DEBUG4(printk("%s: failed to allocate memory of size (%d)\n",
19899 + __func__, (int)sizeof(FO_PATHS_INFO));)
19900 + DEBUG9_10(printk("%s: failed allocate memory size(%d).\n",
19901 + __func__, (int)sizeof(FO_PATHS_INFO));)
19903 + cmd->Status = EXT_STATUS_NO_MEMORY;
19908 + if (!ha->flags.failover_enabled) {
19909 + /* non-fo case. There's only one path. */
19911 + mp_path_list_t *ptmp_plist;
19912 +#define STD_MAX_PATH_CNT 1
19913 +#define STD_VISIBLE_INDEX 0
19915 + struct list_head *fcpl;
19916 + fc_port_t *fcport;
19918 + DEBUG9(printk("%s: non-fo case.\n", __func__);)
19920 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_plist,
19921 + sizeof(mp_path_list_t))) {
19922 + /* not enough memory */
19923 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
19924 + "lun_mask requested=%d.\n",
19925 + __func__, ha->host_no, ha->instance,
19926 + sizeof(mp_path_list_t));)
19927 + cmd->Status = EXT_STATUS_NO_MEMORY;
19934 + list_for_each(fcpl, &ha->fcports) {
19935 + fcport = list_entry(fcpl, fc_port_t, list);
19937 + if (memcmp(fcport->node_name, sap->DestAddr.WWNN,
19938 + EXT_DEF_WWN_NAME_SIZE) == 0) {
19945 + DEBUG9(printk("%s: found fcport:"
19946 + "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
19948 + sap->DestAddr.WWNN[0],
19949 + sap->DestAddr.WWNN[1],
19950 + sap->DestAddr.WWNN[2],
19951 + sap->DestAddr.WWNN[3],
19952 + sap->DestAddr.WWNN[4],
19953 + sap->DestAddr.WWNN[5],
19954 + sap->DestAddr.WWNN[6],
19955 + sap->DestAddr.WWNN[7]);)
19957 + paths->HbaInstance = bp->HbaInstance;
19958 + paths->PathCount = STD_MAX_PATH_CNT;
19959 + paths->VisiblePathIndex = STD_VISIBLE_INDEX;
19961 + /* Copy current path, which is the first one (0). */
19962 + memcpy(paths->CurrentPathIndex, ptmp_plist->current_path,
19963 + sizeof(paths->CurrentPathIndex));
19965 + entry = &(paths->PathEntry[STD_VISIBLE_INDEX]);
19967 + entry->Visible = TRUE;
19968 + entry->HbaInstance = bp->HbaInstance;
19970 + memcpy(entry->PortName, fcport->port_name,
19971 + EXT_DEF_WWP_NAME_SIZE);
19973 + rval = verify_area(VERIFY_WRITE, (void *)u_paths,
19974 + cmd->ResponseLen);
19977 + DEBUG9_10(printk("%s: u_paths %p verify write"
19978 + " error. paths->PathCount=%d.\n",
19979 + __func__, u_paths, paths->PathCount);)
19982 + /* Copy data to user */
19984 + rval = copy_to_user(&u_paths->PathCount,
19985 + &paths->PathCount, 4);
19987 + rval = copy_to_user(&u_paths->CurrentPathIndex,
19988 + &paths->CurrentPathIndex,
19989 + sizeof(paths->CurrentPathIndex));
19991 + rval = copy_to_user(&u_paths->PathEntry,
19992 + &paths->PathEntry,
19993 + sizeof(paths->PathEntry));
19995 + if (rval) { /* if any of the above failed */
19996 + DEBUG9_10(printk("%s: data copy failed.\n",
19999 + cmd->Status = EXT_STATUS_COPY_ERR;
20002 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20003 + cmd->DetailStatus = EXT_DSTATUS_TARGET;
20005 + DEBUG10(printk("%s: cannot find fcport "
20006 + "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20008 + sap->DestAddr.WWNN[0],
20009 + sap->DestAddr.WWNN[1],
20010 + sap->DestAddr.WWNN[2],
20011 + sap->DestAddr.WWNN[3],
20012 + sap->DestAddr.WWNN[4],
20013 + sap->DestAddr.WWNN[5],
20014 + sap->DestAddr.WWNN[6],
20015 + sap->DestAddr.WWNN[7]);)
20016 + DEBUG4(printk("%s: cannot find fcport "
20017 + "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20019 + sap->DestAddr.WWNN[0],
20020 + sap->DestAddr.WWNN[1],
20021 + sap->DestAddr.WWNN[2],
20022 + sap->DestAddr.WWNN[3],
20023 + sap->DestAddr.WWNN[4],
20024 + sap->DestAddr.WWNN[5],
20025 + sap->DestAddr.WWNN[6],
20026 + sap->DestAddr.WWNN[7]);)
20029 + qla2x00_free_ioctl_scrap_mem(ha);
20030 + /* end of non-fo case. */
20032 + } else if (sap->DestType != EXT_DEF_DESTTYPE_WWNN) {
20033 + /* Scan for mp_dev by nodename *ONLY* */
20035 + cmd->Status = EXT_STATUS_INVALID_PARAM;
20036 + cmd->DetailStatus = EXT_DSTATUS_TARGET;
20038 + DEBUG4(printk("%s: target can be accessed by NodeName only.",
20040 + DEBUG10(printk("%s: target can be accessed by NodeName only. "
20041 + "got type %d.\n",
20042 + __func__, sap->DestType);)
20044 + } else if ((dp = qla2x00_find_mp_dev_by_name(host,
20045 + sap->DestAddr.WWNN)) != NULL) {
20046 + DEBUG9(printk("%s: Found mp_dev:"
20047 + "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20049 + sap->DestAddr.WWNN[0],
20050 + sap->DestAddr.WWNN[1],
20051 + sap->DestAddr.WWNN[2],
20052 + sap->DestAddr.WWNN[3],
20053 + sap->DestAddr.WWNN[4],
20054 + sap->DestAddr.WWNN[5],
20055 + sap->DestAddr.WWNN[6],
20056 + sap->DestAddr.WWNN[7]);)
20058 + path_list = dp->path_list;
20060 + paths->HbaInstance = bp->HbaInstance;
20061 + paths->PathCount = path_list->path_cnt;
20062 + paths->VisiblePathIndex = path_list->visible;
20064 + /* copy current paths */
20065 + memcpy(paths->CurrentPathIndex,
20066 + path_list->current_path,
20067 + sizeof(paths->CurrentPathIndex));
20069 + path = path_list->last;
20070 + for (cnt = 0; cnt < path_list->path_cnt; cnt++) {
20071 + entry = &(paths->PathEntry[path->id]);
20073 + entry->Visible = (path->id == path_list->visible);
20074 + entry->HbaInstance = path->host->instance;
20076 + memcpy(entry->PortName,
20078 + EXT_DEF_WWP_NAME_SIZE);
20080 + path = path->next;
20083 + rval = verify_area(VERIFY_WRITE, (void *)u_paths,
20084 + cmd->ResponseLen);
20087 + DEBUG9_10(printk("%s: u_paths %p verify write"
20088 + " error. paths->PathCount=%d.\n",
20089 + __func__, u_paths, paths->PathCount);)
20092 + /* copy data to user */
20094 + rval = copy_to_user(&u_paths->PathCount,
20095 + &paths->PathCount, 4);
20097 + rval = copy_to_user(&u_paths->CurrentPathIndex,
20098 + &paths->CurrentPathIndex,
20099 + sizeof(paths->CurrentPathIndex));
20101 + rval = copy_to_user(&u_paths->PathEntry,
20102 + &paths->PathEntry,
20103 + sizeof(paths->PathEntry));
20105 + if (rval != 0) { /* if any of the above failed */
20106 + DEBUG9_10(printk("%s: u_paths %p copy"
20107 + " error. paths->PathCount=%d.\n",
20108 + __func__, u_paths, paths->PathCount);)
20109 + cmd->Status = EXT_STATUS_COPY_ERR;
20114 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20115 + cmd->DetailStatus = EXT_DSTATUS_TARGET;
20117 + DEBUG4(printk("%s: cannot find device "
20118 + "(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x)\n.",
20120 + sap->DestAddr.WWNN[0],
20121 + sap->DestAddr.WWNN[1],
20122 + sap->DestAddr.WWNN[2],
20123 + sap->DestAddr.WWNN[3],
20124 + sap->DestAddr.WWNN[4],
20125 + sap->DestAddr.WWNN[5],
20126 + sap->DestAddr.WWNN[6],
20127 + sap->DestAddr.WWNN[7]);)
20130 + KMEM_FREE(paths, sizeof(FO_PATHS_INFO));
20132 + DEBUG9(printk("%s: exiting. rval=%d.\n", __func__, rval);)
20136 +} /* qla2x00_cfg_get_paths */
20139 + * qla2x00_cfg_set_current_path
20140 + * Set the current failover path EXT_FO_GET_PATHS IOCTL call.
20143 + * ha = pointer to adapter
20144 + * bp = pointer to buffer
20145 + * cmd = Pointer to kernel copy of EXT_IOCTL.
20148 + * 0 on success or errno.
20151 + * Kernel context.
20154 +qla2x00_cfg_set_current_path(EXT_IOCTL *cmd, FO_SET_CURRENT_PATH *bp, int mode )
20156 + uint8_t orig_id, new_id;
20157 + mp_host_t *host, *new_host;
20159 + mp_path_list_t *path_list;
20160 + EXT_DEST_ADDR *sap = &bp->HbaAddr;
20161 + uint32_t rval = 0;
20162 + scsi_qla_host_t *ha;
20163 + mp_path_t *new_path, *old_path;
20165 + DEBUG9(printk("%s: entered.\n", __func__);)
20167 + /* First find the adapter with the instance number. */
20168 + ha = qla2x00_get_hba((int)bp->HbaInstance);
20170 + DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
20171 + __func__, bp->HbaInstance);)
20173 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20177 + if (!ha->flags.failover_enabled)
20178 + /* non-failover mode. nothing to be done. */
20181 + if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
20182 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20183 + cmd->DetailStatus = EXT_DSTATUS_HBA_INST;
20184 + DEBUG4(printk("%s: cannot find adapter.\n",
20189 + set_bit(CFG_ACTIVE, &ha->cfg_flags);
20190 + sap = &bp->HbaAddr;
20191 + /* Scan for mp_dev by nodename *ONLY* */
20192 + if (sap->DestType != EXT_DEF_DESTTYPE_WWNN) {
20193 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20194 + cmd->DetailStatus = EXT_DSTATUS_TARGET;
20195 + DEBUG4(printk("%s: target can be accessed by NodeName only.",
20197 + DEBUG9_10(printk("%s: target can be accessed by NodeName only.",
20199 + } else if ((dp = qla2x00_find_mp_dev_by_name(
20200 + host, sap->DestAddr.WWNN)) != NULL) {
20202 + path_list = dp->path_list;
20204 + if (bp->NewCurrentPathIndex < MAX_PATHS_PER_DEVICE &&
20205 + sap->Lun < MAX_LUNS &&
20206 + bp->NewCurrentPathIndex < path_list->path_cnt) {
20208 + orig_id = path_list->current_path[sap->Lun];
20210 + DEBUG(printk("%s: dev no %d, lun %d, "
20211 + "newindex %d, oldindex %d "
20212 + "nn=%02x%02x%02x%02x%02x%02x%02x%02x\n",
20213 + __func__, dp->dev_id, sap->Lun,
20214 + bp->NewCurrentPathIndex, orig_id,
20215 + host->nodename[0], host->nodename[1],
20216 + host->nodename[2], host->nodename[3],
20217 + host->nodename[4], host->nodename[5],
20218 + host->nodename[6], host->nodename[7]);)
20220 + if (bp->NewCurrentPathIndex != orig_id) {
20221 + /* Acquire the update spinlock. */
20223 + /* Set the new current path. */
20224 + new_id = path_list-> current_path[sap->Lun] =
20225 + bp->NewCurrentPathIndex;
20227 + /* Release the update spinlock. */
20228 + old_path = qla2x00_find_path_by_id(
20230 + new_path = qla2x00_find_path_by_id(dp, new_id);
20231 + new_host = new_path->host;
20233 + /* remap the lun */
20234 + qla2x00_map_a_oslun(new_host, dp,
20235 + dp->dev_id, sap->Lun);
20237 + qla2x00_send_failover_notify(dp,
20238 + sap->Lun, old_path, new_path);
20241 + DEBUG4(printk("%s: path index not changed.\n",
20245 + cmd->Status = EXT_STATUS_INVALID_PARAM;
20246 + cmd->DetailStatus = EXT_DSTATUS_PATH_INDEX;
20247 + DEBUG4(printk("%s: invalid index for device.\n",
20249 + DEBUG9_10(printk("%s: invalid index for device.\n",
20253 + cmd->Status = EXT_STATUS_DEV_NOT_FOUND;
20254 + cmd->DetailStatus = EXT_DSTATUS_TARGET;
20255 + DEBUG4(printk("%s: cannot find device.\n",
20257 + DEBUG9_10(printk("%s: cannot find device.\n",
20260 + clear_bit(CFG_ACTIVE, &ha->cfg_flags);
20262 + DEBUG9(printk("%s: exiting. rval = %d.\n", __func__, rval);)
20269 + * MP SUPPORT ROUTINES
20273 + * qla2x00_add_mp_host
20274 + * Add the specified host the host list.
20277 + * node_name = pointer to node name
20282 + * Kernel context.
20285 +qla2x00_add_mp_host(uint8_t *node_name)
20287 + mp_host_t *host, *temp;
20289 + host = (mp_host_t *) KMEM_ZALLOC(sizeof(mp_host_t), 1);
20290 + if (host != NULL) {
20291 + memcpy(host->nodename, node_name, WWN_SIZE);
20292 + host->next = NULL;
20293 + /* add to list */
20294 + if (mp_hosts_base == NULL) {
20295 + mp_hosts_base = host;
20297 + temp = mp_hosts_base;
20298 + while (temp->next != NULL)
20299 + temp = temp->next;
20300 + temp->next = host;
20308 + * qla2x00_alloc_host
20309 + * Allocate and initialize an mp host structure.
20312 + * ha = pointer to base driver's adapter structure.
20315 + * Pointer to host structure or null on error.
20318 + * Kernel context.
20321 +qla2x00_alloc_host(scsi_qla_host_t *ha)
20323 + mp_host_t *host, *temp;
20324 + uint8_t *name, *portname;
20326 + name = &ha->init_cb->node_name[0];
20327 + portname = &ha->init_cb->port_name[0];
20329 + ENTER("qla2x00_alloc_host");
20331 + host = (mp_host_t *) KMEM_ZALLOC(sizeof(mp_host_t), 2);
20333 + if (host != NULL) {
20335 + memcpy(host->nodename, name, WWN_SIZE);
20336 + memcpy(host->portname, portname, WWN_SIZE);
20337 + host->next = NULL;
20338 + host->flags = MP_HOST_FLAG_NEEDS_UPDATE;
20339 + host->instance = ha->instance;
20340 + /* host->MaxLunsPerTarget = qla_fo_params.MaxLunsPerTarget; */
20342 + if (qla2x00_fo_enabled(host->ha, host->instance)) {
20343 + host->flags |= MP_HOST_FLAG_FO_ENABLED;
20344 + DEBUG4(printk("%s: Failover enabled.\n",
20348 + DEBUG4(printk("%s: Failover disabled.\n",
20351 + /* add to list */
20352 + if (mp_hosts_base == NULL) {
20353 + mp_hosts_base = host;
20355 + temp = mp_hosts_base;
20356 + while (temp->next != NULL)
20357 + temp = temp->next;
20358 + temp->next = host;
20362 + DEBUG4(printk("%s: Alloc host @ %p\n", __func__, host);)
20365 + DEBUG4(printk("%s: Failed\n", __func__);)
20372 + * qla2x00_add_portname_to_mp_dev
20373 + * Add the specific port name to the list of port names for a
20374 + * multi-path device.
20377 + * dp = pointer ti virtual device
20378 + * portname = Port name to add to device
20381 + * qla2x00 local function return status code.
20384 + * Kernel context.
20387 +qla2x00_add_portname_to_mp_dev(mp_device_t *dp, uint8_t *portname)
20390 + uint32_t rval = QLA2X00_SUCCESS;
20392 + ENTER("qla2x00_add_portname_to_mp_dev");
20394 + /* Look for an empty slot and add the specified portname. */
20395 + for (index = 0; index < MAX_NUMBER_PATHS; index++) {
20396 + if (qla2x00_is_ww_name_zero(&dp->portnames[index][0])) {
20397 + DEBUG4(printk("%s: adding portname to dp = "
20398 + "%p at index = %d\n",
20399 + __func__, dp, index);)
20400 + memcpy(&dp->portnames[index][0], portname, WWN_SIZE);
20404 + if (index == MAX_NUMBER_PATHS) {
20405 + rval = QLA2X00_FUNCTION_FAILED;
20406 + DEBUG4(printk("%s: Fail no room\n", __func__);)
20409 + DEBUG4(printk("%s: Exit OK\n", __func__);)
20412 + LEAVE("qla2x00_add_portname_to_mp_dev");
20419 + * qla2x00_allocate_mp_dev
20420 + * Allocate an fc_mp_dev, clear the memory, and log a system
20421 + * error if the allocation fails. After fc_mp_dev is allocated
20424 + * nodename = pointer to nodename of new device
20425 + * portname = pointer to portname of new device
20428 + * Pointer to new mp_device_t, or NULL if the allocation fails.
20431 + * Kernel context.
20433 +static mp_device_t *
20434 +qla2x00_allocate_mp_dev(uint8_t *nodename, uint8_t *portname)
20436 + mp_device_t *dp; /* Virtual device pointer */
20438 + ENTER("qla2x00_allocate_mp_dev");
20440 + dp = (mp_device_t *)KMEM_ZALLOC(sizeof(mp_device_t), 3);
20442 + if (dp != NULL) {
20443 + DEBUG3(printk("%s: mp_device_t allocated at %p\n",
20447 + * Copy node name into the mp_device_t.
20450 + memcpy(dp->nodename, nodename, WWN_SIZE);
20453 + * Since this is the first port, it goes at
20457 + memcpy(&dp->portnames[0][0], portname, PORT_NAME_SIZE);
20459 + /* Allocate an PATH_LIST for the fc_mp_dev. */
20460 + if ((dp->path_list = qla2x00_allocate_path_list()) == NULL) {
20461 + DEBUG4(printk("%s: allocate path_list Failed.\n",
20463 + KMEM_FREE(dp, sizeof(mp_device_t));
20466 + DEBUG4(printk("%s: mp_path_list_t allocated at %p\n",
20467 + __func__, dp->path_list);)
20469 + DEBUG4(printk("qla2x00_allocate_mp_dev: Exit Okay\n");)
20473 + DEBUG4(printk("%s: Allocate failed.\n", __func__);)
20476 + LEAVE("qla2x00_allocate_mp_dev");
20482 + * qla2x00_allocate_path
20483 + * Allocate a PATH.
20486 + * host Host adapter for the device.
20487 + * path_id path number
20488 + * port port for device.
20489 + * dev_id device number
20492 + * Pointer to new PATH, or NULL if the allocation failed.
20495 + * Kernel context.
20497 +static mp_path_t *
20498 +qla2x00_allocate_path(mp_host_t *host, uint16_t path_id,
20499 + fc_port_t *port, uint16_t dev_id)
20504 + ENTER("qla2x00_allocate_path");
20506 + path = (mp_path_t *) KMEM_ZALLOC(sizeof(mp_path_t), 4);
20507 + if (path != NULL) {
20508 + DEBUG3(printk("%s: mp_path_t allocated at %p\n",
20509 + __func__, path); )
20511 + /* Copy the supplied information into the MP_PATH. */
20512 + path->host = host;
20513 + if (!(port->flags & FC_CONFIG) ||
20514 + port->loop_id != FC_NO_LOOP_ID) {
20516 + path->port = port;
20518 + path->id = path_id;
20519 + port->cur_path = path->id;
20520 + path->mp_byte = port->mp_byte;
20521 + path->next = NULL;
20522 + memcpy(path->portname, port->port_name, WWN_SIZE);
20523 + for (lun = 0; lun < MAX_LUNS; lun++) {
20524 + path->lun_data.data[lun] |= LUN_DATA_ENABLED;
20528 + DEBUG4(printk("%s: Failed\n", __func__);)
20536 + * qla2x00_allocate_path_list
20537 + * Allocate a PATH_LIST
20543 + * Pointer to new PATH_LIST, or NULL if the allocation fails.
20546 + * Kernel context.
20548 +static mp_path_list_t *
20549 +qla2x00_allocate_path_list( void )
20551 + mp_path_list_t *path_list;
20555 + path_list = (mp_path_list_t *) KMEM_ZALLOC(sizeof(mp_path_list_t), 5);
20557 + if (path_list != NULL) {
20558 + DEBUG4(printk("%s: allocated at %p\n",
20559 + __func__, path_list);)
20561 + path_list->visible = PATH_INDEX_INVALID;
20562 + /* Initialized current path */
20563 + for (i = 0; i < MAX_LUNS_PER_DEVICE; i++) {
20564 + l = (uint8_t)(i & 0xFF);
20565 + path_list->current_path[l] = PATH_INDEX_INVALID;
20567 + path_list->last = NULL;
20571 + DEBUG4(printk("%s: Alloc pool failed for MP_PATH_LIST.\n",
20575 + return path_list;
20579 + * qla2x00_cfg_find_host
20580 + * Look through the existing multipath tree, and find
20581 + * a host adapter to match the specified ha.
20584 + * ha = pointer to host adapter
20587 + * Pointer to new host, or NULL if no match found.
20590 + * Kernel context.
20593 +qla2x00_cfg_find_host(scsi_qla_host_t *ha)
20595 + mp_host_t *host = NULL; /* Host found and null if not */
20596 + mp_host_t *tmp_host;
20598 + ENTER("qla2x00_cfg_find_host");
20600 + for (tmp_host = mp_hosts_base; (tmp_host); tmp_host = tmp_host->next) {
20601 + if (tmp_host->ha == ha) {
20603 + DEBUG3(printk("%s: Found host =%p, instance %d\n",
20604 + __func__, host, host->instance);)
20609 + LEAVE("qla2x00_cfg_find_host");
20615 + * qla2x00_find_host_by_name
20616 + * Look through the existing multipath tree, and find
20617 + * a host adapter to match the specified name.
20620 + * name = node name to match.
20623 + * Pointer to new host, or NULL if no match found.
20626 + * Kernel context.
20629 +qla2x00_find_host_by_name(uint8_t *name)
20631 + mp_host_t *host; /* Host found and null if not */
20633 + for (host = mp_hosts_base; (host); host = host->next) {
20634 + if (memcmp(host->nodename, name, WWN_SIZE) == 0)
20642 + * qla2x00_find_or_allocate_mp_dev
20643 + * Look through the existing multipath control tree, and find
20644 + * an mp_device_t with the supplied world-wide node name. If
20645 + * one cannot be found, allocate one.
20648 + * host Adapter to add device to.
20649 + * dev_id Index of device on adapter.
20650 + * port port database information.
20653 + * Pointer to new mp_device_t, or NULL if the allocation fails.
20656 + * If the MP HOST does not already point to the mp_device_t,
20657 + * a pointer is added at the proper port offset.
20660 + * Kernel context.
20662 +static mp_device_t *
20663 +qla2x00_find_or_allocate_mp_dev(mp_host_t *host, uint16_t dev_id,
20666 + mp_device_t *dp = NULL; /* pointer to multi-path device */
20667 + uint8_t node_found; /* Found matching node name. */
20668 + uint8_t port_found; /* Found matching port name. */
20669 + uint8_t names_valid; /* Node name and port name are not zero */
20670 + mp_host_t *temp_host; /* pointer to temporary host */
20673 + mp_device_t *temp_dp;
20675 + ENTER("qla2x00_find_or_allocate_mp_dev");
20677 + DEBUG3(printk("%s: host =%p, port =%p, id = %d\n",
20678 + __func__, host, port, dev_id);)
20680 + temp_dp = qla2x00_find_mp_dev_by_id(host,dev_id);
20682 + DEBUG3(printk("%s: temp dp =%p\n", __func__, temp_dp);)
20683 + /* if Device already known at this port. */
20684 + if (temp_dp != NULL) {
20685 + node_found = qla2x00_is_nodename_equal(temp_dp->nodename,
20686 + port->node_name);
20687 + port_found = qla2x00_is_portname_in_device(temp_dp,
20688 + port->port_name);
20690 + if (node_found && port_found) {
20691 + DEBUG3(printk("%s: port exists in device %p\n",
20692 + __func__, temp_dp);)
20696 + * Copy the LUN configuration data
20697 + * into the mp_device_t.
20703 + /* Sanity check the port information */
20704 + names_valid = (!qla2x00_is_ww_name_zero(port->node_name) &&
20705 + !qla2x00_is_ww_name_zero(port->port_name));
20708 + * If the optimized check failed, loop through each known
20709 + * device on each known adapter looking for the node name.
20711 + if (dp == NULL && names_valid) {
20712 + DEBUG3(printk("%s: Searching each adapter for the device...\n",
20715 + for (temp_host = mp_hosts_base; (temp_host);
20716 + temp_host = temp_host->next) {
20718 + /* Loop through each potential device on adapter. */
20719 + for (j = 0; j < MAX_MP_DEVICES; j++) {
20720 + temp_dp = temp_host->mp_devs[j];
20722 + if (temp_dp == NULL)
20725 + node_found = qla2x00_is_nodename_equal(
20726 + temp_dp->nodename,
20727 + port->node_name);
20728 + port_found = qla2x00_is_portname_in_device(
20730 + port->port_name);
20732 + if (node_found || port_found) {
20733 + DEBUG3(printk("%s: Matching device "
20734 + "found at %p @ %d\n",
20735 + __func__, temp_dp, j);)
20737 + * If the node name matches but
20738 + * the port name was not found,
20739 + * add the port name to the list
20742 + if (!port_found) {
20743 + qla2x00_add_portname_to_mp_dev(
20745 + port->port_name);
20749 + * Set the flag that we have
20750 + * found the device.
20753 + host->mp_devs[j] = dp;
20757 + * Copy the LUN info into
20758 + * the mp_device_t
20764 + /* Break outer loop if inner loop succeeded. */
20771 + /* If we couldn't find one, allocate one. */
20772 + if (dp == NULL &&
20773 + ((port->flags & FC_CONFIG) || !mp_config_required ) ) {
20775 + dp = qla2x00_allocate_mp_dev(port->node_name, port->port_name);
20776 + host->mp_devs[dev_id] = dp;
20777 + dp->dev_id = dev_id;
20781 + LEAVE("qla2x00_allocate_mp_dev");
20788 + * qla2x00_find_or_allocate_path
20789 + * Look through the path list for the supplied device, and either
20790 + * find the supplied adapter (path) for the adapter, or create
20791 + * a new one and add it to the path list.
20794 + * host Adapter (path) for the device.
20795 + * dp Device and path list for the device.
20796 + * dev_id Index of device on adapter.
20797 + * port Device data from port database.
20800 + * Pointer to new PATH, or NULL if the allocation fails.
20803 + * 1. If the PATH_LIST does not already point to the PATH,
20804 + * a new PATH is added to the PATH_LIST.
20805 + * 2. If the new path is found to be a second visible path, it is
20806 + * marked as hidden, and the device database is updated to be
20807 + * hidden as well, to keep the miniport synchronized.
20810 + * Kernel context.
20813 +static mp_path_t *
20814 +qla2x00_find_or_allocate_path(mp_host_t *host, mp_device_t *dp,
20815 + uint16_t dev_id, fc_port_t *port)
20817 + mp_path_list_t *path_list = dp->path_list;
20822 + ENTER("qla2x00_find_or_allocate_path");
20824 + DEBUG4(printk("%s: host =%p, port =%p, dp=%p, dev id = %d\n",
20825 + __func__, host, port, dp, dev_id);)
20827 + * Loop through each known path in the path list. Look for
20828 + * a PATH that matches both the adapter and the port name.
20830 + path = qla2x00_find_path_by_name(host, path_list, port->port_name);
20833 + if (path != NULL ) {
20834 + DEBUG3(printk("%s: Found an existing "
20835 + "path - host =%p, port =%p, path id = %d\n",
20836 + __func__, host, path->port, path->id);)
20837 + DEBUG3(printk("%s: Luns for path_id %d, instance %d\n",
20838 + __func__, path->id, host->instance);)
20839 + DEBUG3(qla2x00_dump_buffer(
20840 + (char *)&path->lun_data.data[0], 64);)
20842 + /* If we found an existing path, look for any changes to it. */
20843 + if (path->port == NULL) {
20844 + DEBUG3(printk("%s: update path %p, path id= %d, "
20845 + "mp_byte=0x%x port=%p\n",
20846 + __func__, path, path->id,
20847 + path->mp_byte, path->port);)
20848 + path->port = port;
20849 + port->mp_byte = path->mp_byte;
20851 + if ((path->mp_byte & MP_MASK_HIDDEN) &&
20852 + !(port->mp_byte & MP_MASK_HIDDEN)) {
20854 + DEBUG3(printk("%s: Adapter(%p) "
20855 + "Device (%p) Path (%d) "
20856 + "has become visible.\n",
20857 + __func__, host, dp, path->id);)
20859 + path->mp_byte &= ~MP_MASK_HIDDEN;
20862 + if (!(path->mp_byte & MP_MASK_HIDDEN) &&
20863 + (port->mp_byte & MP_MASK_HIDDEN)) {
20865 + DEBUG3(printk("%s: Adapter(%p) "
20866 + "Device (%p) Path (%d) "
20867 + "has become hidden.\n",
20868 + __func__, host, dp, path->id);)
20870 + path->mp_byte |= MP_MASK_HIDDEN;
20876 + * If we couldn't find an existing path, and there is still
20877 + * room to add one, allocate one and put it in the list.
20879 + if (path_list->path_cnt < MAX_PATHS_PER_DEVICE &&
20880 + path_list->path_cnt < qla_fo_params.MaxPathsPerDevice) {
20882 + id = path_list->path_cnt;
20884 + /* Update port with bitmask info */
20885 + path = qla2x00_allocate_path(host, id, port, dev_id);
20886 + DEBUG3(printk("%s: new path %p, path id= %d, "
20887 + "mp_byte=0x%x port=%p\n",
20888 + __func__, path, id,
20889 + path->mp_byte, path->port);)
20890 + qla2x00_add_path(path_list, path);
20892 + /* Reconcile the new path against the existing ones. */
20893 + qla2x00_setup_new_path(dp, path);
20896 + DEBUG4(printk("%s: Err exit, no space to add path.\n",
20902 + LEAVE("qla2x00_find_or_allocate_path");
20908 +qla2x00_cfg_register_failover_lun(mp_device_t *dp, srb_t *sp, fc_lun_t *new_lp)
20910 + uint32_t status = QLA2X00_SUCCESS;
20913 + fc_lun_t *old_lp;
20915 + DEBUG2(printk("%s: NEW fclun = %p, sp = %p\n",
20916 + __func__, new_lp, sp);)
20919 + * Fix lun descriptors to point to new fclun which is a new fcport.
20921 + if (new_lp == NULL) {
20922 + DEBUG2(printk("%s: Failed new lun %p\n",
20923 + __func__, new_lp);)
20924 + return QLA2X00_FUNCTION_FAILED;
20927 + tq = sp->tgt_queue;
20928 + lq = sp->lun_queue;
20929 + if (tq == NULL) {
20930 + DEBUG2(printk("%s: Failed to get old tq %p\n",
20932 + return QLA2X00_FUNCTION_FAILED;
20934 + if (lq == NULL) {
20935 + DEBUG2(printk("%s: Failed to get old lq %p\n",
20937 + return QLA2X00_FUNCTION_FAILED;
20939 + old_lp = lq->fclun;
20940 + lq->fclun = new_lp;
20942 + /* Log the failover to console */
20944 + "qla2x00: FAILOVER device %d from "
20945 + "%02x%02x%02x%02x%02x%02x%02x%02x -> "
20946 + "%02x%02x%02x%02x%02x%02x%02x%02x - "
20947 + "LUN %02x, reason=0x%x\n",
20949 + old_lp->fcport->port_name[0], old_lp->fcport->port_name[1],
20950 + old_lp->fcport->port_name[2], old_lp->fcport->port_name[3],
20951 + old_lp->fcport->port_name[4], old_lp->fcport->port_name[5],
20952 + old_lp->fcport->port_name[6], old_lp->fcport->port_name[7],
20953 + new_lp->fcport->port_name[0], new_lp->fcport->port_name[1],
20954 + new_lp->fcport->port_name[2], new_lp->fcport->port_name[3],
20955 + new_lp->fcport->port_name[4], new_lp->fcport->port_name[5],
20956 + new_lp->fcport->port_name[6], new_lp->fcport->port_name[7],
20957 + new_lp->lun, sp->err_id);
20959 + "qla2x00: FROM HBA %d to HBA %d\n",
20960 + (int)old_lp->fcport->ha->instance,
20961 + (int)new_lp->fcport->ha->instance);
20963 + DEBUG3(printk("%s: NEW fclun = %p , port =%p, "
20964 + "loop_id =0x%x, instance %ld\n",
20966 + new_lp, new_lp->fcport,
20967 + new_lp->fcport->loop_id,
20968 + new_lp->fcport->ha->instance);)
20975 + * qla2x00_send_failover_notify
20976 + * A failover operation has just been done from an old path
20977 + * index to a new index. Call lower level driver
20978 + * to perform the failover notification.
20981 + * device Device being failed over.
20982 + * lun LUN being failed over.
20983 + * newpath path that was failed over too.
20984 + * oldpath path that was failed over from.
20987 + * Local function status code.
20990 + * Kernel context.
20994 +qla2x00_send_failover_notify(mp_device_t *dp,
20995 + uint8_t lun, mp_path_t *newpath, mp_path_t *oldpath)
20997 + fc_lun_t *old_lp, *new_lp;
20998 + uint32_t status = QLA2X00_SUCCESS;
21000 + ENTER("qla2x00_send_failover_notify");
21002 + old_lp = qla2x00_find_matching_lun(lun, oldpath);
21003 + new_lp = qla2x00_find_matching_lun(lun, newpath);
21006 + * If the target is the same target, but a new HBA has been selected,
21007 + * send a third party logout if required.
21009 + if ((qla_fo_params.FailoverNotifyType &
21010 + FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET ||
21011 + qla_fo_params.FailoverNotifyType &
21012 + FO_NOTIFY_TYPE_LOGOUT_OR_CDB) &&
21013 + qla2x00_is_portname_equal(
21014 + oldpath->portname, newpath->portname)) {
21016 + status = qla2x00_send_fo_notification(old_lp, new_lp);
21017 + if (status == QLA2X00_SUCCESS) {
21019 + DEBUG4(printk("%s: Logout succeded\n",
21023 + DEBUG4(printk("%s: Logout Failed\n",
21026 + } else if ((qla_fo_params.FailoverNotifyType &
21027 + FO_NOTIFY_TYPE_LUN_RESET) ||
21028 + (qla_fo_params.FailoverNotifyType &
21029 + FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET)) {
21032 + * If desired, send a LUN reset as the
21033 + * failover notification type.
21035 + if (newpath->lun_data.data[lun] & LUN_DATA_ENABLED) {
21036 + status = qla2x00_send_fo_notification(old_lp, new_lp);
21037 + if (status == QLA2X00_SUCCESS) {
21039 + DEBUG4(printk("%s: LUN reset succeeded.\n",
21043 + DEBUG4(printk("%s: Failed reset LUN.\n",
21048 + } else if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_CDB ||
21049 + qla_fo_params.FailoverNotifyType ==
21050 + FO_NOTIFY_TYPE_LOGOUT_OR_CDB) {
21052 + if (newpath->lun_data.data[lun] & LUN_DATA_ENABLED) {
21053 + status = qla2x00_send_fo_notification(old_lp, new_lp);
21054 + if (status == QLA2X00_SUCCESS) {
21056 + DEBUG4(printk("%s: Send CDB succeeded.\n",
21060 + DEBUG4(printk("%s: Send CDB Error "
21061 + "lun=(%d).\n", __func__, lun);)
21066 + DEBUG4(printk("%s: failover disabled or no notify routine "
21067 + "defined.\n", __func__);)
21074 + * qla2x00_select_next_path
21075 + * A problem has been detected with the current path for this
21076 + * device. Try to select the next available path as the current
21077 + * path for this device. If there are no more paths, the same
21078 + * path will still be selected.
21081 + * dp pointer of device structure.
21082 + * lun LUN to failover.
21085 + * new path or same path
21088 + * Kernel context.
21090 +static mp_path_t *
21091 +qla2x00_select_next_path(mp_host_t *host, mp_device_t *dp, uint8_t lun)
21093 + mp_path_t *path = NULL;
21094 + mp_path_list_t *path_list;
21095 + mp_path_t *orig_path;
21098 + mp_host_t *new_host;
21100 + ENTER("qla2x00_select_next_path:");
21102 + path_list = dp->path_list;
21103 + if (path_list == NULL)
21106 + /* Get current path */
21107 + id = path_list->current_path[lun];
21109 + /* Get path for current path id */
21110 + if ((orig_path = qla2x00_find_path_by_id(dp, id)) != NULL) {
21112 + /* select next path */
21113 + path = orig_path->next;
21114 + new_host = path->host;
21116 + /* FIXME may need to check for HBA being reset */
21117 + DEBUG3(printk("%s: orig path = %p new path = %p "
21118 + "curr idx = %d, new idx = %d\n",
21119 + __func__, orig_path, path, orig_path->id, path->id);)
21120 + DEBUG3(printk(" FAILOVER: device nodename: "
21121 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21122 + dp->nodename[0], dp->nodename[1],
21123 + dp->nodename[2], dp->nodename[3],
21124 + dp->nodename[4], dp->nodename[5],
21125 + dp->nodename[6], dp->nodename[7]);)
21126 + DEBUG3(printk(" Original - host nodename: "
21127 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21128 + orig_path->host->nodename[0],
21129 + orig_path->host->nodename[1],
21130 + orig_path->host->nodename[2],
21131 + orig_path->host->nodename[3],
21132 + orig_path->host->nodename[4],
21133 + orig_path->host->nodename[5],
21134 + orig_path->host->nodename[6],
21135 + orig_path->host->nodename[7]);)
21136 + DEBUG3(printk(" portname: "
21137 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21138 + orig_path->port->port_name[0],
21139 + orig_path->port->port_name[1],
21140 + orig_path->port->port_name[2],
21141 + orig_path->port->port_name[3],
21142 + orig_path->port->port_name[4],
21143 + orig_path->port->port_name[5],
21144 + orig_path->port->port_name[6],
21145 + orig_path->port->port_name[7]);)
21146 + DEBUG3(printk(" New - host nodename: "
21147 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21148 + new_host->nodename[0], new_host->nodename[1],
21149 + new_host->nodename[2], new_host->nodename[3],
21150 + new_host->nodename[4], new_host->nodename[5],
21151 + new_host->nodename[6], new_host->nodename[7]);)
21152 + DEBUG3(printk(" portname: "
21153 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
21154 + path->port->port_name[0],
21155 + path->port->port_name[1],
21156 + path->port->port_name[2],
21157 + path->port->port_name[3],
21158 + path->port->port_name[4],
21159 + path->port->port_name[5],
21160 + path->port->port_name[6],
21161 + path->port->port_name[7]);)
21163 + path_list->current_path[lun] = path->id;
21165 + /* If we selected a new path, do failover notification. */
21166 + if (path != orig_path) {
21167 + status = qla2x00_send_failover_notify(
21168 + dp, lun, path, orig_path);
21171 + * Currently we ignore the returned status from
21172 + * the notify. however, if failover notify fails
21177 + LEAVE("qla2x00_select_next_path:");
21185 + * qla2x00_update_mp_host
21186 + * Update the multipath control information from the port
21187 + * database for that adapter.
21190 + * host Adapter to update. Devices that are new are
21191 + * known to be attached to this adapter.
21194 + * TRUE if updated successfully; FALSE if error.
21198 +qla2x00_update_mp_host(mp_host_t *host)
21200 + uint8_t success = TRUE;
21202 + struct list_head *fcpl;
21203 + fc_port_t *fcport;
21204 + scsi_qla_host_t *ha = host->ha;
21206 + ENTER("qla2x00_update_mp_host");
21209 + * We make sure each port is attached to some virtual device.
21213 + list_for_each(fcpl, &ha->fcports) {
21214 + fcport = list_entry(fcpl, fc_port_t, list);
21216 + success |= qla2x00_update_mp_device(host, fcport, dev_id);
21221 + DEBUG2(printk("%s: Exit OK\n", __func__);)
21222 + qla2x00_map_os_targets(host);
21225 + DEBUG2(printk("%s: Exit FAILED\n", __func__);)
21228 + LEAVE("qla2x00_update_mp_host");
21234 + * qla2x00_update_mp_device
21235 + * Update the multipath control information from the port
21236 + * database for that adapter.
21239 + * host Host adapter structure
21240 + * port Device to add to the path tree.
21241 + * dev_id Device id
21243 + * Synchronization:
21244 + * The Adapter Lock should have already been acquired
21245 + * before calling this routine.
21248 + * TRUE if updated successfully; FALSE if error.
21252 +qla2x00_update_mp_device(mp_host_t *host, fc_port_t *port, uint16_t dev_id)
21254 + uint8_t success = TRUE;
21258 + ENTER("qla2x00_update_mp_device");
21260 + DEBUG3(printk("%s: host =%p, port =%p, id = %d\n",
21261 + __func__, host, port, dev_id);)
21263 + if (!qla2x00_is_ww_name_zero(port->port_name)) {
21266 + * Search for a device with a matching node name,
21269 + dp = qla2x00_find_or_allocate_mp_dev(host, dev_id, port);
21272 + * We either have found or created a path list. Find this
21273 + * host's path in the path list or allocate a new one
21274 + * and add it to the list.
21276 + if (dp == NULL) {
21277 + DEBUG4(printk("%s: Device NOT found or created at.\n",
21283 + * Find the path in the current path list, or allocate
21284 + * a new one and put it in the list if it doesn't exist.
21285 + * Note that we do NOT set bSuccess to FALSE in the case
21286 + * of failure here. We must tolerate the situation where
21287 + * the customer has more paths to a device than he can
21288 + * get into a PATH_LIST.
21291 + path = qla2x00_find_or_allocate_path(host, dp, dev_id, port);
21292 + if (path == NULL) {
21293 + DEBUG4(printk("%s:Path NOT found or created.\n",
21298 + /* Set the PATH flag to match the device flag
21299 + * of whether this device needs a relogin. If any
21300 + * device needs relogin, set the relogin countdown.
21302 + if (port->flags & FC_CONFIG)
21303 + path->config = TRUE;
21305 + if (atomic_read(&port->state) != FC_ONLINE) {
21306 + path->relogin = TRUE;
21307 + if (host->relogin_countdown == 0)
21308 + host->relogin_countdown = 30;
21310 + path->relogin = FALSE;
21315 + DEBUG4(printk("%s: Failed portname empty.\n",
21319 + LEAVE("qla2x00_update_mp_device");
21325 + * qla2x00_update_mp_tree
21326 + * Get port information from each adapter, and build or rebuild
21327 + * the multipath control tree from this data. This is called
21328 + * from init and during port database notification.
21334 + * Local function return code.
21338 +qla2x00_update_mp_tree(void)
21341 + uint32_t rval = QLA2X00_SUCCESS;
21343 + ENTER("qla2x00_update_mp_tree:");
21345 + /* Loop through each adapter and see what needs updating. */
21346 + for (host = mp_hosts_base; (host) ; host = host->next) {
21348 + DEBUG4(printk("%s: hba(%d) flags (%x)\n",
21349 + __func__, host->instance, host->flags);)
21350 + /* Clear the countdown; it may be reset in the update. */
21351 + host->relogin_countdown = 0;
21353 + /* Override the NEEDS_UPDATE flag if disabled. */
21354 + if (host->flags & MP_HOST_FLAG_DISABLE ||
21355 + list_empty(host->fcports))
21356 + host->flags &= ~MP_HOST_FLAG_NEEDS_UPDATE;
21358 + if (host->flags & MP_HOST_FLAG_NEEDS_UPDATE) {
21361 + * Perform the actual updates. If this succeeds, clear
21362 + * the flag that an update is needed, and failback all
21363 + * devices that are visible on this path to use this
21364 + * path. If the update fails, leave set the flag that
21365 + * an update is needed, and it will be picked back up
21366 + * during the next timer routine.
21368 + if (qla2x00_update_mp_host(host)) {
21369 + host->flags &= ~MP_HOST_FLAG_NEEDS_UPDATE;
21371 + qla2x00_failback_luns(host);
21373 + rval = QLA2X00_FUNCTION_FAILED;
21379 + if (rval != QLA2X00_SUCCESS) {
21381 + DEBUG4(printk("%s: Exit FAILED.\n", __func__);)
21385 + DEBUG4(printk("%s: Exit OK.\n", __func__);)
21393 + * qla2x00_find_matching_lun
21394 + * Find the lun in the path that matches the
21395 + * specified lun number.
21398 + * lun = lun number
21399 + * newpath = path to search for lun
21402 + * NULL or pointer to lun
21405 + * Kernel context.
21409 +qla2x00_find_matching_lun(uint8_t lun, mp_path_t *newpath)
21411 + fc_lun_t *lp = NULL; /* lun ptr */
21412 + struct list_head *fcll;
21413 + fc_lun_t *nlp; /* Next lun ptr */
21414 + fc_port_t *fcport; /* port ptr */
21416 + if ((fcport = newpath->port) != NULL) {
21417 + list_for_each(fcll, &fcport->fcluns) {
21418 + nlp = list_entry(fcll, fc_lun_t, list);
21420 + if (lun == nlp->lun) {
21430 + * qla2x00_find_path_by_name
21431 + * Find the path specified portname from the pathlist
21434 + * host = host adapter pointer.
21435 + * pathlist = multi-path path list
21436 + * portname portname to search for
21439 + * pointer to the path or NULL
21442 + * Kernel context.
21445 +qla2x00_find_path_by_name(mp_host_t *host, mp_path_list_t *plp,
21446 + uint8_t *portname)
21448 + mp_path_t *path = NULL; /* match if not NULL */
21449 + mp_path_t *tmp_path;
21452 + if ((tmp_path = plp->last) != NULL) {
21453 + for (cnt = 0; cnt < plp->path_cnt; cnt++) {
21454 + if (tmp_path->host == host &&
21455 + qla2x00_is_portname_equal(
21456 + tmp_path->portname, portname)) {
21461 + tmp_path = tmp_path->next;
21468 + * qla2x00_find_path_by_id
21469 + * Find the path for the specified path id.
21472 + * dp multi-path device
21476 + * pointer to the path or NULL
21479 + * Kernel context.
21481 +static mp_path_t *
21482 +qla2x00_find_path_by_id(mp_device_t *dp, uint8_t id)
21484 + mp_path_t *path = NULL;
21485 + mp_path_t *tmp_path;
21486 + mp_path_list_t *path_list;
21489 + path_list = dp->path_list;
21490 + tmp_path = path_list->last;
21491 + for (cnt = 0; (tmp_path) && cnt < path_list->path_cnt; cnt++) {
21492 + if (tmp_path->id == id) {
21496 + tmp_path = tmp_path->next;
21502 + * qla2x00_find_mp_dev_by_id
21503 + * Find the mp_dev for the specified target id.
21506 + * host = host adapter pointer.
21507 + * tgt = Target id
21512 + * Kernel context.
21514 +static mp_device_t *
21515 +qla2x00_find_mp_dev_by_id(mp_host_t *host, uint8_t id )
21517 + if (id < MAX_MP_DEVICES)
21518 + return host->mp_devs[id];
21524 + * qla2x00_find_mp_dev_by_name
21525 + * Find the mp_dev for the specified target name.
21528 + * host = host adapter pointer.
21529 + * name = Target name
21534 + * Kernel context.
21536 +static mp_device_t *
21537 +qla2x00_find_mp_dev_by_name(mp_host_t *host, uint8_t *name )
21542 + ENTER("qla2x00_find_mp_dev_by_name");
21544 + for (id= 0; id < MAX_MP_DEVICES; id++) {
21545 + if ((dp = host->mp_devs[id] ) == NULL)
21548 + if (qla2x00_is_nodename_equal(dp->nodename, name)) {
21549 + DEBUG3(printk("%s: Found matching device @ index %d:\n",
21555 + LEAVE("qla2x00_find_mp_dev_by_name");
21561 + * qla2x00_get_visible_path
21562 + * Find the the visible path for the specified device.
21565 + * dp = device pointer
21571 + * Kernel context.
21573 +static mp_path_t *
21574 +qla2x00_get_visible_path(mp_device_t *dp)
21577 + mp_path_list_t *path_list;
21580 + path_list = dp->path_list;
21581 + /* if we don't have a visible path skip it */
21582 + if ((id = path_list->visible) == PATH_INDEX_INVALID) {
21586 + if ((path = qla2x00_find_path_by_id(dp,id))== NULL)
21593 + * qla2x00_map_os_targets
21594 + * Allocate the luns and setup the OS target.
21597 + * host = host adapter pointer.
21603 + * Kernel context.
21606 +qla2x00_map_os_targets(mp_host_t *host)
21608 + scsi_qla_host_t *ha = host->ha;
21614 + ENTER("qla2x00_map_os_targets ");
21616 + for (t = 0; t < MAX_TARGETS; t++ ) {
21617 + dp = host->mp_devs[t];
21618 + if (dp != NULL) {
21619 + DEBUG3(printk("%s: (%d) found a dp=%p, "
21620 + "host=%p, ha=%p\n",
21621 + __func__, t, dp, host,ha);)
21623 + if ((path = qla2x00_get_visible_path(dp)) == NULL) {
21625 + "qla_cfg(%d): No visible path "
21626 + "for target %d, dp = %p\n",
21627 + host->instance, t, dp);
21631 + /* if not the visible path skip it */
21632 + if (path->host == host) {
21633 + if (TGT_Q(ha, t) == NULL) {
21634 + tgt = qla2x00_tgt_alloc(ha, t);
21635 + memcpy(tgt->node_name,
21638 + tgt->vis_port = path->port;
21640 + DEBUG3(printk("%s(%ld): host=%d, "
21641 + "device= %p has VISIBLE "
21642 + "path=%p, path id=%d\n",
21643 + __func__, ha->host_no,
21645 + dp, path, path->id);)
21648 + DEBUG3(printk("%s(%ld): host=%d, "
21649 + "device= %p has HIDDEN "
21650 + "path=%p, path id=%d\n",
21651 + __func__, ha->host_no,
21652 + host->instance, dp, path,path->id);)
21654 + qla2x00_map_os_luns(host, dp, t);
21656 + if ((tgt= TGT_Q(ha,t)) != NULL) {
21657 + qla2x00_tgt_free(ha,t);
21662 + LEAVE("qla2x00_map_os_targets ");
21666 + * qla2x00_map_os_luns
21667 + * Allocate the luns for the OS target.
21670 + * dp = pointer to device
21671 + * t = OS target number.
21677 + * Kernel context.
21680 +qla2x00_map_os_luns(mp_host_t *host, mp_device_t *dp, uint16_t t)
21685 + for (lun = 0; lun < MAX_LUNS; lun++ ) {
21686 + if ( qla2x00_map_a_oslun(host, dp, t, lun) &&
21687 + (host->flags & MP_HOST_FLAG_LUN_FO_ENABLED) ){
21688 + /* find a path for us to use */
21689 + for ( i = 0; i < dp->path_list->path_cnt; i++ ){
21690 + qla2x00_select_next_path(host, dp, lun);
21691 + if( !qla2x00_map_a_oslun(host, dp, t, lun))
21699 + * qla2x00_map_a_osluns
21700 + * Map the OS lun to the current path
21703 + * host = pointer to host
21704 + * dp = pointer to device
21705 + * lun = OS lun number.
21711 + * Kernel context.
21715 +qla2x00_map_a_oslun(mp_host_t *host, mp_device_t *dp, uint16_t t, uint16_t lun)
21717 + fc_port_t *fcport;
21721 + mp_path_t *path, *vis_path;
21722 + mp_host_t *vis_host;
21723 + uint8_t status = FALSE;
21725 + if ((id = dp->path_list->current_path[lun]) != PATH_INDEX_INVALID) {
21726 + path = qla2x00_find_path_by_id(dp,id);
21728 + fcport = path->port;
21730 + /* dg 04/26/02 */
21731 + fcport->cur_path = id;
21732 + fclun = qla2x00_find_matching_lun(lun,path);
21734 + /* Always map all luns if they are enabled */
21736 + (path->lun_data.data[lun] &
21737 + LUN_DATA_ENABLED) ) {
21740 + * Mapped lun on the visible path
21743 + qla2x00_get_visible_path(dp)) ==
21747 + "qla2x00(%d): No visible "
21748 + "path for target %d, "
21756 + vis_host = vis_path->host;
21758 + /* ra 11/30/01 */
21760 + * Always alloc LUN 0 so kernel
21761 + * will scan past LUN 0.
21764 + (EXT_IS_LUN_BIT_SET(
21765 + &(fcport->lun_mask), lun))) {
21767 + /* mask this LUN */
21771 + if ((lq = qla2x00_lun_alloc(
21773 + t, lun)) != NULL) {
21775 + lq->fclun = fclun;
21787 + * qla2x00_is_ww_name_zero
21790 + * ww_name = Pointer to WW name to check
21793 + * TRUE if name is 0 else FALSE
21796 + * Kernel context.
21799 +qla2x00_is_ww_name_zero(uint8_t *nn)
21803 + /* Check for zero node name */
21804 + for (cnt = 0; cnt < WWN_SIZE ; cnt++, nn++) {
21808 + /* if zero return TRUE */
21809 + if (cnt == WWN_SIZE)
21816 + * qla2x00_add_path
21817 + * Add a path to the pathlist
21820 + * pathlist -- path list of paths
21821 + * path -- path to be added to list
21827 + * Kernel context.
21830 +qla2x00_add_path( mp_path_list_t *pathlist, mp_path_t *path )
21832 + mp_path_t *last = pathlist->last;
21834 + ENTER("qla2x00_add_path");
21836 + DEBUG3(printk("%s: pathlist =%p, path =%p, cnt = %d\n",
21837 + __func__, pathlist, path, pathlist->path_cnt);)
21838 + if (last == NULL) {
21841 + path->next = last->next;
21844 + last->next = path;
21845 + pathlist->last = path;
21846 + pathlist->path_cnt++;
21848 + LEAVE("qla2x00_add_path");
21853 + * qla2x00_is_portname_in_device
21854 + * Search for the specified "portname" in the device list.
21857 + * dp = device pointer
21858 + * portname = portname to searched for in device
21861 + * qla2x00 local function return status code.
21864 + * Kernel context.
21867 +qla2x00_is_portname_in_device(mp_device_t *dp, uint8_t *portname)
21871 + for (idx = 0; idx < MAX_PATHS_PER_DEVICE; idx++) {
21872 + if (memcmp(&dp->portnames[idx][0], portname, WWN_SIZE) == 0)
21880 + * qla2x00_set_lun_data_from_bitmask
21881 + * Set or clear the LUN_DATA_ENABLED bits in the LUN_DATA from
21882 + * a LUN bitmask provided from the miniport driver.
21885 + * lun_data = Extended LUN_DATA buffer to set.
21886 + * lun_mask = Pointer to lun bit mask union.
21888 + * Return Value: none.
21891 +qla2x00_set_lun_data_from_bitmask(mp_lun_data_t *lun_data,
21892 + lun_bit_mask_t *lun_mask)
21896 + ENTER("qla2x00_set_lun_data_from_bitmask");
21898 + for (lun = 0; lun < MAX_LUNS; lun++) {
21899 + /* our bit mask is inverted */
21900 + if (!(EXT_IS_LUN_BIT_SET(lun_mask,lun)))
21901 + lun_data->data[lun] |= LUN_DATA_ENABLED;
21903 + lun_data->data[lun] &= ~LUN_DATA_ENABLED;
21905 + DEBUG5(printk("%s: lun data[%d] = 0x%x\n",
21906 + __func__, lun, lun_data->data[lun]);)
21909 + LEAVE("qla2x00_set_lun_data_from_bitmask");
21915 +qla2x00_failback_single_lun(mp_device_t *dp, uint8_t lun, uint8_t new)
21917 + mp_path_list_t *pathlist;
21918 + mp_path_t *new_path, *old_path;
21922 + mp_path_t *vis_path;
21923 + mp_host_t *vis_host;
21925 + /* Failback and update statistics. */
21926 + if ((pathlist = dp->path_list) == NULL)
21929 + old = pathlist->current_path[lun];
21930 + pathlist->current_path[lun] = new;
21932 + if ((new_path = qla2x00_find_path_by_id(dp, new)) == NULL)
21934 + if ((old_path = qla2x00_find_path_by_id(dp, old)) == NULL)
21937 + /* An fclun should exist for the failbacked lun */
21938 + if (qla2x00_find_matching_lun(lun, new_path) == NULL)
21940 + if (qla2x00_find_matching_lun(lun, old_path) == NULL)
21943 + /* Log to console and to event log. */
21945 + "qla2x00: FAILBACK device %d -> "
21946 + "%02x%02x%02x%02x%02x%02x%02x%02x LUN %02x\n",
21948 + dp->nodename[0], dp->nodename[1],
21949 + dp->nodename[2], dp->nodename[3],
21950 + dp->nodename[4], dp->nodename[5],
21951 + dp->nodename[6], dp->nodename[7],
21955 + "qla2x00: FROM HBA %d to HBA %d \n",
21956 + old_path->host->instance,
21957 + new_path->host->instance);
21960 + /* Send a failover notification. */
21962 + qla2x00_send_failover_notify(dp, lun, new_path, old_path);
21965 + host = new_path->host;
21967 + /* remap the lun */
21968 + qla2x00_map_a_oslun(host, dp, dp->dev_id, lun);
21971 + * Reset counts on the visible path
21973 + if ((vis_path = qla2x00_get_visible_path(dp)) == NULL) {
21975 + "qla2x00(%d): No visible path for "
21976 + "target %d, dp = %p\n",
21982 + vis_host = vis_path->host;
21983 + if ((lq = qla2x00_lun_alloc(vis_host->ha, dp->dev_id, lun)) != NULL) {
21984 + qla2x00_delay_lun(vis_host->ha, lq, recoveryTime);
21985 + qla2x00_flush_failover_q(vis_host->ha, lq);
21986 + qla2x00_reset_lun_fo_counts(vis_host->ha, lq);
21991 +* qla2x00_failback_luns
21992 +* This routine looks through the devices on an adapter, and
21993 +* for each device that has this adapter as the visible path,
21994 +* it forces that path to be the current path. This allows us
21995 +* to keep some semblance of static load balancing even after
21996 +* an adapter goes away and comes back.
21999 +* host Adapter that has just come back online.
22005 +qla2x00_failback_luns( mp_host_t *host)
22012 + mp_path_list_t *path_list;
22014 + fc_lun_t *new_fp;
22016 + ENTER("qla2x00_failback_luns");
22018 + for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
22019 + dp = host->mp_devs[dev_no];
22024 + path_list = dp->path_list;
22025 + for (path = path_list->last, i= 0;
22026 + i < path_list->path_cnt;
22027 + i++, path = path->next) {
22029 + if (path->host != host )
22032 + if (path->port == NULL)
22035 + if (atomic_read(&path->port->state) == FC_DEVICE_DEAD)
22039 + * Failback all the paths for this host,
22040 + * the luns could be preferred across all paths
22042 + DEBUG2(printk("%s(%d): Lun Data for device %p, "
22043 + "id=%d, path id=%d\n",
22044 + __func__, host->instance, dp, dp->dev_id,
22046 + DEBUG4(qla2x00_dump_buffer(
22047 + (char *)&path->lun_data.data[0], 64);)
22048 + DEBUG4(printk("%s(%d): Perferrred Path data:\n",
22049 + __func__, host->instance);)
22050 + DEBUG4(qla2x00_dump_buffer(
22051 + (char *)&path_list->current_path[0], 64);)
22053 + for (lun = 0; lun < MAX_LUNS_PER_DEVICE; lun++) {
22054 + l = (uint8_t)(lun & 0xFF);
22057 + * if this is the preferred lun and not
22058 + * the current path then failback lun.
22060 + DEBUG4(printk("%s: target=%d, cur path id =%d, "
22061 + "lun data[%d] = %d)\n",
22062 + __func__, dp->dev_id, path->id,
22063 + lun, path->lun_data.data[lun]);)
22065 + if ((path->lun_data.data[l] &
22066 + LUN_DATA_PREFERRED_PATH) &&
22067 + /* !path->relogin && */
22068 + path_list->current_path[l] !=
22070 + /* No point in failing back a
22071 + disconnected lun */
22072 + new_fp = qla2x00_find_matching_lun(
22075 + if (new_fp == NULL)
22077 + if (new_fp->flags & FC_DISCON_LUN)
22080 + qla2x00_failback_single_lun(
22081 + dp, l, path->id);
22088 + LEAVE("qla2x00_failback_luns");
22094 + * qla2x00_setup_new_path
22095 + * Checks the path against the existing paths to see if there
22096 + * are any incompatibilities. It then checks and sets up the
22097 + * current path indices.
22100 + * dp = pointer to device
22101 + * path = new path
22107 +qla2x00_setup_new_path( mp_device_t *dp, mp_path_t *path)
22109 + mp_path_list_t *path_list = dp->path_list;
22110 + mp_path_t *tmp_path, *first_path;
22111 + mp_host_t *first_host;
22112 + mp_host_t *tmp_host;
22118 + ENTER("qla2x00_setup_new_path");
22120 + /* If this is a visible path, and there is not already a
22121 + * visible path, save it as the visible path. If there
22122 + * is already a visible path, log an error and make this
22123 + * path invisible.
22125 + if (!(path->mp_byte & (MP_MASK_HIDDEN | MP_MASK_UNCONFIGURED))) {
22127 + /* No known visible path */
22128 + if (path_list->visible == PATH_INDEX_INVALID) {
22129 + DEBUG3(printk("%s: No know visible path - make this "
22130 + "path visible\n",
22133 + path_list->visible = path->id;
22134 + path->mp_byte &= ~MP_MASK_HIDDEN;
22136 + DEBUG3(printk("%s: Second visible path found- make "
22137 + "this one hidden\n",
22140 + path->mp_byte |= MP_MASK_HIDDEN;
22145 + * If this is not the first path added, and the setting for
22146 + * MaxLunsPerTarget does not match that of the first path
22147 + * then disable qla_cfg for all adapters.
22149 + first_path = qla2x00_find_path_by_id(dp, 0);
22151 + if (first_path != NULL) {
22152 + first_host = first_path->host;
22153 + if ((path->id != 0) &&
22154 + (first_host->MaxLunsPerTarget !=
22155 + path->host->MaxLunsPerTarget)) {
22157 + for (tmp_path = path_list->last, i = 0;
22158 + (tmp_path) && i <= path->id; i++) {
22160 + tmp_host = tmp_path->host;
22161 + if (!(tmp_host->flags &
22162 + MP_HOST_FLAG_DISABLE)) {
22164 + DEBUG4(printk("%s: 2nd visible "
22166 + __func__, tmp_host);)
22168 + tmp_host->flags |= MP_HOST_FLAG_DISABLE;
22175 + * For each LUN, evaluate whether the new path that is added
22176 + * is better than the existing path. If it is, make it the
22177 + * current path for the LUN.
22179 + for (lun = 0; lun < MAX_LUNS_PER_DEVICE; lun++) {
22180 + l = (uint8_t)(lun & 0xFF);
22182 + /* If this is the first path added, it is the only
22183 + * available path, so make it the current path.
22186 + DEBUG4(printk("%s: lun_data 0x%x, LUN %d\n",
22187 + __func__, path->lun_data.data[l], lun);)
22189 + if (first_path == path) {
22190 + path_list->current_path[l] = 0;
22191 + path->lun_data.data[l] |= LUN_DATA_PREFERRED_PATH;
22192 + } else if (path->lun_data.data[l] & LUN_DATA_PREFERRED_PATH) {
22194 + * If this is not the first path added, if this is
22195 + * the preferred path, make it the current path.
22197 + path_list->current_path[l] = path->id;
22201 + LEAVE("qla2x00_setup_new_path");
22207 + * qla2x00_cfg_mem_free
22208 + * Free all configuration structures.
22211 + * ha = adapter state pointer.
22214 + * Kernel context.
22217 +qla2x00_cfg_mem_free(scsi_qla_host_t *ha)
22220 + mp_path_list_t *path_list;
22221 + mp_path_t *tmp_path, *path;
22222 + mp_host_t *host, *temp;
22225 + if ((host = qla2x00_cfg_find_host(ha)) != NULL) {
22226 + if( mp_num_hosts == 0 )
22229 + for (id= 0; id < MAX_MP_DEVICES; id++) {
22230 + if ((dp = host->mp_devs[id]) == NULL)
22232 + if ((path_list = dp->path_list) == NULL)
22234 + if ((tmp_path = path_list->last) == NULL)
22236 + for (cnt = 0; cnt < path_list->path_cnt; cnt++) {
22238 + tmp_path = tmp_path->next;
22239 + DEBUG(printk(KERN_INFO
22240 + "host%d - Removing path[%d] "
22244 + KMEM_FREE(path,sizeof(mp_path_t));
22246 + KMEM_FREE(path_list, sizeof(mp_path_list_t));
22247 + host->mp_devs[id] = NULL;
22248 + /* remove dp from other hosts */
22249 + for (temp = mp_hosts_base; (temp); temp = temp->next) {
22250 + if (temp->mp_devs[id] == dp) {
22251 + DEBUG(printk(KERN_INFO
22252 + "host%d - Removing host[%d] = "
22255 + temp->instance,temp);)
22256 + temp->mp_devs[id] = NULL;
22259 + KMEM_FREE(dp, sizeof(mp_device_t));
22262 + /* remove this host from host list */
22263 + temp = mp_hosts_base;
22264 + if (temp != NULL) {
22265 + /* Remove from top of queue */
22266 + if (temp == host) {
22267 + mp_hosts_base = host->next;
22270 + * Remove from middle of queue
22271 + * or bottom of queue
22273 + for (temp = mp_hosts_base;
22275 + temp = temp->next) {
22277 + if (temp->next == host) {
22278 + temp->next = host->next;
22284 + KMEM_FREE(host, sizeof(mp_host_t));
22288 --- /dev/null Thu Apr 11 07:25:15 2002
22289 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_cfg.h Thu Jul 3 15:34:42 2003
22291 +/******************************************************************************
22292 + * QLOGIC LINUX SOFTWARE
22294 + * QLogic ISP2x00 device driver for Linux 2.5.x
22295 + * Copyright (C) 2003 Qlogic Corporation
22296 + * (www.qlogic.com)
22298 + * This program is free software; you can redistribute it and/or modify it
22299 + * under the terms of the GNU General Public License as published by the
22300 + * Free Software Foundation; either version 2, or (at your option) any
22303 + * This program is distributed in the hope that it will be useful, but
22304 + * WITHOUT ANY WARRANTY; without even the implied warranty of
22305 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22306 + * General Public License for more details.
22308 + ******************************************************************************/
22311 + * QLogic ISP2x00 Multi-path LUN Support
22312 + * Multi-path include file.
22315 +#if !defined(_QLA_CFG_H)
22316 +#define _QLA_CFG_H
22318 +#if defined(__cplusplus)
22324 + * Failover definitions
22326 +#define FAILOVER_TYPE_COUNT 4
22327 +#define MP_NOTIFY_RESET_DETECTED 1
22328 +#define MP_NOTIFY_PWR_LOSS 2
22329 +#define MP_NOTIFY_LOOP_UP 3
22330 +#define MP_NOTIFY_LOOP_DOWN 4
22331 +#define MP_NOTIFY_BUS_RESET 5
22332 +#define FAILOVER_TYPE_ERROR_RETRY 1
22333 +#define MAX_NUMBER_PATHS FO_MAX_PATHS
22334 +#define PORT_NAME_SIZE WWN_SIZE
22335 +#define FAILOVER_NOTIFY_STATUS_ERROR QLA2X00_SUCCESS
22336 +#define FAILOVER_NOTIFY_STATUS_SUCCESS QLA2X00_SUCCESS
22337 +#define FAILOVER_NOTIFY_CDB_LENGTH_MAX FO_NOTIFY_CDB_LENGTH_MAX
22338 +#define MAX_TARGETS_PER_DEVICE SDM_DEF_MAX_TARGETS_PER_DEVICE
22341 + * Limits definitions.
22343 +#define MAX_LUNS_PER_DEVICE MAX_LUNS /* Maximum # of luns */
22344 +#define MAX_MP_DEVICES MAX_TARGETS /* Maximum # of virtual devs */
22345 +#define MAX_PATHS_PER_DEVICE 8 /* Maximum # of paths */
22346 +#if !defined(MAX_LUNS)
22347 +#define MAX_LUNS 256
22349 +#define MAX_HOSTS MAX_HOST_COUNT
22351 +/* Async notification types */
22352 +#define NOTIFY_EVENT_LINK_DOWN 1 /* Link went down */
22353 +#define NOTIFY_EVENT_LINK_UP 2 /* Link is back up */
22354 +#define NOTIFY_EVENT_RESET_DETECTED 3 /* Reset detected */
22357 +#define qla2x00_is_portname_equal(N1,N2) \
22358 + ((memcmp((N1),(N2),WWN_SIZE)==0?TRUE:FALSE))
22359 +#define qla2x00_is_nodename_equal(N1,N2) \
22360 + ((memcmp((N1),(N2),WWN_SIZE)==0?TRUE:FALSE))
22362 +#define qla2x00_allocate_path_list() \
22363 + ((mp_path_list_t *)KMEM_ZALLOC(sizeof(mp_path_list_t)))
22367 + * Per-multipath driver parameters
22369 +typedef struct _mp_lun_data {
22370 + uint8_t data[MAX_LUNS];
22371 +#define LUN_DATA_ENABLED BIT_7
22372 +#define LUN_DATA_PREFERRED_PATH BIT_6
22377 +#define PATH_INDEX_INVALID 0xff
22380 + * Per-device collection of all paths.
22382 +typedef struct _mp_path_list {
22383 + struct _mp_path *last; /* ptrs to end of circular list of paths */
22384 + uint8_t path_cnt; /* number of paths */
22385 + uint8_t visible; /* visible path */
22386 + uint16_t reserved1; /* Memory alignment */
22387 + uint32_t reserved2; /* Memory alignment */
22388 + uint8_t current_path[ MAX_LUNS_PER_DEVICE ]; /* current path for a given lun */
22389 + uint16_t failover_cnt[ FAILOVER_TYPE_COUNT ];
22394 + * Definitions for failover notify SRBs. These SRBs contain failover notify
22395 + * CDBs to notify a target that a failover has occurred.
22398 +typedef struct _failover_notify_srb {
22401 + uint16_t reserved;
22403 +failover_notify_srb_t;
22406 + * Per-device multipath control data.
22408 +typedef struct _mp_device {
22409 + mp_path_list_t *path_list; /* Path list for device. */
22411 + int use_cnt; /* number of users */
22412 + uint8_t nodename[WWN_SIZE]; /* World-wide node name. */
22413 + /* World-wide port names. */
22414 + uint8_t portnames[MAX_PATHS_PER_DEVICE][WWN_SIZE];
22419 + * Per-adapter multipath Host
22421 +typedef struct _mp_host {
22422 + struct _mp_host *next; /* ptr to next host adapter in list */
22423 + scsi_qla_host_t *ha; /* ptr to lower-level driver adapter struct */
22424 + int instance; /* OS instance number */
22425 + struct list_head *fcports; /* Port chain for this adapter */
22426 + mp_device_t *mp_devs[MAX_MP_DEVICES]; /* Multipath devices */
22429 +#define MP_HOST_FLAG_NEEDS_UPDATE BIT_0 /* Need to update device data. */
22430 +#define MP_HOST_FLAG_FO_ENABLED BIT_1 /* Failover enabled for this host */
22431 +#define MP_HOST_FLAG_DISABLE BIT_2 /* Bypass qla_cfg. */
22432 +#define MP_HOST_FLAG_LUN_FO_ENABLED BIT_3 /* lun Failover enabled */
22434 + uint8_t nodename[WWN_SIZE];
22435 + uint8_t portname[WWN_SIZE];
22436 + uint16_t MaxLunsPerTarget;
22438 + uint16_t relogin_countdown;
22443 + * Describes path a single.
22445 +typedef struct _mp_path {
22446 + struct _mp_path *next; /* next path in list */
22447 + struct _mp_host *host; /* Pointer to adapter */
22448 + fc_port_t *port; /* FC port info */
22449 + uint16_t id; /* Path id (index) */
22450 + uint8_t mp_byte; /* Multipath control byte */
22451 +#define MP_MASK_HIDDEN 0x80
22452 +#define MP_MASK_UNCONFIGURED 0x40
22453 +#define MP_MASK_PRIORITY 0x07
22455 + uint8_t relogin; /* Need to relogin to port */
22456 + uint8_t config; /* User configured path */
22457 + uint8_t reserved[3];
22458 + mp_lun_data_t lun_data; /* Lun data information */
22459 + uint8_t portname[WWN_SIZE]; /* Port name of this target. */
22464 + * Failover notification requests from host driver.
22466 +typedef struct failover_notify_entry {
22467 + struct scsi_address *os_addr;
22469 +failover_notify_t;
22471 +#endif /* _QLA_CFG_H */
22472 --- /dev/null Thu Apr 11 07:25:15 2002
22473 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_cfgln.c Thu Jul 3 15:34:42 2003
22475 +/******************************************************************************
22476 + * QLOGIC LINUX SOFTWARE
22478 + * QLogic ISP2x00 device driver for Linux 2.5.x
22479 + * Copyright (C) 2003 Qlogic Corporation
22480 + * (www.qlogic.com)
22482 + * This program is free software; you can redistribute it and/or modify it
22483 + * under the terms of the GNU General Public License as published by the
22484 + * Free Software Foundation; either version 2, or (at your option) any
22487 + * This program is distributed in the hope that it will be useful, but
22488 + * WITHOUT ANY WARRANTY; without even the implied warranty of
22489 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22490 + * General Public License for more details.
22492 + ******************************************************************************/
22495 + * QLogic ISP2x00 Multi-path LUN Support Driver
22496 + * Solaris specific functions
22500 +#include "qla_os.h"
22501 +#include "qla_def.h"
22505 +#define MAX_SEARCH_STR_SIZE 512
22508 + * qla2x00_set_lun_data_from_config
22509 + * Set lun_data byte from the configuration parameters.
22512 + * host -- pointer to host adapter structure.
22513 + * port -- pointer to port
22514 + * tgt -- target number
22515 + * dev_no -- device number
22518 +qla2x00_set_lun_data_from_config(mp_host_t *host, fc_port_t *port,
22519 + uint16_t tgt, uint16_t dev_no)
22521 + char *propbuf; /* As big as largest search string */
22524 + scsi_qla_host_t *ha = host->ha;
22526 + lun_bit_mask_t *plun_mask;
22527 + lun_bit_mask_t *mask_ptr;
22528 + mp_path_list_t *pathlist;
22530 + uint8_t control_byte;
22535 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&propbuf,
22536 + MAX_SEARCH_STR_SIZE)) {
22537 + /* not enough memory */
22538 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
22539 + "propbuf requested=%d.\n",
22540 + __func__, ha->host_no, ha->instance,
22541 + MAX_SEARCH_STR_SIZE);)
22545 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&plun_mask,
22546 + sizeof(lun_bit_mask_t))) {
22547 + /* not enough memory */
22548 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
22549 + "lun_mask requested=%d.\n",
22550 + __func__, ha->host_no, ha->instance,
22551 + sizeof(lun_bit_mask_t));)
22552 + qla2x00_free_ioctl_scrap_mem(ha);
22555 + mask_ptr = plun_mask;
22557 + dp = host->mp_devs[tgt];
22558 + if (dp == NULL) {
22559 + printk("qla2x00_set_lun_data_from_config: Target %d "
22560 + "not found for hba %d\n",tgt, host->instance);
22561 + qla2x00_free_ioctl_scrap_mem(ha);
22564 + if ( (pathlist = dp->path_list) == NULL ) {
22565 + printk("qla2x00_set_lun_data_from_config: path list "
22566 + "not found for target %d\n", tgt);
22567 + qla2x00_free_ioctl_scrap_mem(ha);
22571 + if ((path = qla2x00_find_path_by_name(host, pathlist,
22572 + port->port_name)) == NULL ) {
22573 + printk("qla2x00_set_lun_data_from_config: No path found "
22574 + "for target %d\n", tgt);
22575 + qla2x00_free_ioctl_scrap_mem(ha);
22579 + /* clear port information */
22580 + path->port = NULL;
22583 + /* 02/06/01 - move to build path tree */
22585 + * Get "target-N-device-N-control" if property is present then all
22586 + * luns are visible.
22588 + sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-control",
22589 + host->instance, tgt, dev_no);
22590 + DEBUG3(printk("build_tree: %s\n",propbuf);)
22591 + rval = qla2x00_get_prop_xstr(ha, propbuf,
22592 + (uint8_t *)(&control_byte), sizeof(control_byte));
22593 + if (rval != -1) {
22594 + if (!((control_byte & MP_MASK_HIDDEN) ||
22595 + (control_byte & MP_MASK_UNCONFIGURED))) {
22596 + pathlist->visible = path->id;
22597 + DEBUG(printk("qla2x00_set_lun_data_from_config: "
22598 + "found visible path id %d hba %d\n",
22599 + path->id, host->instance);)
22601 + pathlist->visible = PATH_INDEX_INVALID; /* 01/30 */
22602 + DEBUG(printk("qla2x00_set_lun_data_from_config: "
22603 + "found hidden path id %d hba %d\n",
22604 + path->id, host->instance);)
22606 + path->mp_byte = control_byte;
22607 + DEBUG(printk("qla2x00_set_lun_data_from_config: "
22608 + "control byte 0x%x for path id %d hba %d\n",
22609 + path->mp_byte, path->id, host->instance);)
22613 + /* Get "target-N-device-N-preferred" as a 256 bit lun_mask*/
22614 + sprintf(propbuf, "scsi-qla%ld-tgt-%d-di-%d-preferred",
22615 + ha->instance, tgt, dev_no);
22616 + DEBUG2(printk("build_tree: %s\n",propbuf);)
22618 + rval = qla2x00_get_prop_xstr(ha, propbuf,
22619 + (uint8_t *)(plun_mask), sizeof(lun_bit_mask_t));
22621 + if (rval == -1) {
22623 + DEBUG2(printk("qla2x00_set_lun_data_from_config: "
22624 + "NO Preferred mask - ret %d\n", rval);)
22626 + if (rval != sizeof(lun_bit_mask_t)) {
22628 + printk("qla2x00_set_lun_data_from_config: "
22629 + "Preferred mask len %d is incorrect.\n", rval);
22632 + DEBUG3(printk("qla2x00_set_lun_data_from_config: "
22633 + "Preferred mask read:\n");)
22634 + DEBUG3(qla2x00_dump_buffer((char *)plun_mask,
22635 + sizeof(lun_bit_mask_t));)
22637 + for (lun = MAX_LUNS-1, l =0; lun >= 0; lun--, l++ ) {
22638 + if (EXT_IS_LUN_BIT_SET(mask_ptr, lun)) {
22639 + path->lun_data.data[l] |=
22640 + LUN_DATA_PREFERRED_PATH;
22641 + pathlist->current_path[l] = path->id;
22643 + path->lun_data.data[l] &=
22644 + ~LUN_DATA_PREFERRED_PATH;
22650 + /* Get "target-N-device-N-lun-disable" as a 256 bit lun_mask*/
22651 + sprintf(propbuf, "scsi-qla%ld-tgt-%d-di-%d-lun-disabled",
22652 + ha->instance, tgt, dev_no);
22653 + DEBUG3(printk("build_tree: %s\n",propbuf);)
22655 + rval = qla2x00_get_prop_xstr(ha, propbuf,
22656 + (uint8_t *)plun_mask, sizeof(lun_bit_mask_t));
22657 + if (rval == -1) {
22658 + /* default: all luns enabled */
22659 + for (lun = 0; lun < MAX_LUNS; lun++) {
22660 + path->lun_data.data[lun] |= LUN_DATA_ENABLED;
22663 + if (rval != sizeof(lun_bit_mask_t)) {
22664 + printk("qla2x00_set_lun_data_from_config: Enable "
22665 + "mask has wrong size %d != %d\n",
22666 + rval, (int)sizeof(lun_bit_mask_t));
22668 + for (lun = MAX_LUNS-1, l =0; lun >= 0; lun--, l++) {
22669 + /* our bit mask is inverted */
22670 + if (!EXT_IS_LUN_BIT_SET(mask_ptr,lun))
22671 + path->lun_data.data[l] |=
22672 + LUN_DATA_ENABLED;
22674 + path->lun_data.data[l] &=
22675 + ~LUN_DATA_ENABLED;
22680 + DEBUG3(printk("qla2x00_set_lun_data_from_config: Luns data for "
22681 + "device %p, instance %d, path id=%d\n",
22682 + dp,host->instance,path->id);)
22683 + DEBUG3(qla2x00_dump_buffer((char *)&path->lun_data.data[0], 64);)
22685 + qla2x00_free_ioctl_scrap_mem(ha);
22686 + LEAVE("qla2x00_set_lun_data_from_config");
22692 + * qla2x00_cfg_build_path_tree
22693 + * Find all path properties and build a path tree. The
22694 + * resulting tree has no actual port assigned to it
22695 + * until the port discovery is done by the lower level.
22698 + * ha = adapter block pointer.
22701 + * Kernel context.
22704 +qla2x00_cfg_build_path_tree(scsi_qla_host_t *ha)
22707 + uint8_t node_name[WWN_SIZE];
22708 + uint8_t port_name[WWN_SIZE];
22710 + uint16_t dev_no = 0, tgt_no;
22711 + int instance, rval;
22712 + mp_host_t *host = NULL;
22715 + uint8_t control_byte;
22718 + ENTER("qla2x00_cfg_build_path_tree");
22721 + "qla02%d: ConfigRequired is set. \n", (int)ha->instance);
22722 + DEBUG(printk("qla2x00_cfg_build_path_tree: hba =%d",
22723 + (int)ha->instance);)
22725 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&propbuf,
22726 + MAX_SEARCH_STR_SIZE)) {
22727 + /* not enough memory */
22728 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
22729 + "propbuf requested=%d.\n",
22730 + __func__, ha->host_no, ha->instance,
22731 + MAX_SEARCH_STR_SIZE);)
22735 + /* Look for adapter nodename in properties */
22736 + sprintf(propbuf, "scsi-qla%ld-adapter-port", ha->instance);
22737 + DEBUG(printk("build_tree: %s\n",propbuf);)
22739 + rval = qla2x00_get_prop_xstr(ha, propbuf, port_name, WWN_SIZE);
22740 + if (rval != WWN_SIZE) {
22741 + qla2x00_free_ioctl_scrap_mem(ha);
22745 + /* Does nodename match the host adapter nodename? */
22746 + name = &ha->init_cb->port_name[0];
22747 + if (!qla2x00_is_nodename_equal(name, port_name)) {
22749 + "scsi(%d): Adapter nodenames don't match - ha = %p.\n",
22750 + (int)ha->instance,ha);
22751 + DEBUG(printk("qla(%d): Adapter nodenames don't match - "
22753 + (int)ha->instance,ha);)
22754 + qla2x00_free_ioctl_scrap_mem(ha);
22758 + instance = ha->instance;
22759 + if ((host = qla2x00_alloc_host(ha)) == NULL) {
22761 + "scsi(%d): Couldn't allocate host - ha = %p.\n",
22762 + (int)instance,ha);
22764 + /* create a dummy port */
22765 + port = (fc_port_t *)KMEM_ZALLOC(sizeof (fc_port_t),9);
22766 + if (port == NULL) {
22768 + "scsi(%d): Couldn't allocate port.\n",
22770 + DEBUG(printk("qla(%d): Couldn't allocate port.\n",
22771 + (int)host->instance);)
22772 + /* remove host */
22773 + qla2x00_free_ioctl_scrap_mem(ha);
22779 + /* For each target on the host bus adapter */
22780 + for (tgt_no = 0; tgt_no < MAX_MP_DEVICES &&
22781 + !done; tgt_no++) {
22783 + /* get all paths for this target */
22784 + for (dev_no = 0; dev_no < MAX_PATHS_PER_DEVICE &&
22785 + !done ; dev_no++) {
22788 + * O(N*M) scan, should ideally check if there
22789 + * are any tgt entries present, if not, then
22792 + * sprintf(propbuf,
22793 + * "scsi-qla%d-tgt-%d-",
22794 + * instance, tgt_no);
22795 + * if (strstr(ha->cmdline, propbuf) == NULL)
22799 + memset(port, 0, sizeof (fc_port_t));
22802 + * Get "target-N-device-N-node" is a 16-chars
22805 + sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-node",
22806 + instance, tgt_no, dev_no);
22807 + DEBUG(printk("build_tree: %s\n",propbuf);)
22809 + rval = qla2x00_get_prop_xstr(ha, propbuf,
22810 + node_name, WWN_SIZE);
22811 + if (rval != WWN_SIZE)
22814 + memcpy(port->node_name, node_name, WWN_SIZE);
22817 + * Get "target-N-device-N-port" is a 16-chars
22820 + sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-port",
22821 + instance, tgt_no, dev_no);
22822 + DEBUG(printk("build_tree: %s\n",propbuf);)
22824 + rval = qla2x00_get_prop_xstr(ha, propbuf,
22825 + port_name, WWN_SIZE);
22826 + if (rval != WWN_SIZE)
22829 + memcpy(port->node_name, node_name, WWN_SIZE);
22830 + memcpy(port->port_name, port_name, WWN_SIZE);
22831 + port->flags |= FC_CONFIG;
22834 + * Get "target-N-device-N-control" if property
22835 + * is present then all luns are visible.
22838 + "scsi-qla%d-tgt-%d-di-%d-control",
22839 + instance, tgt_no, dev_no);
22840 + DEBUG3(printk("build_tree: %s\n",propbuf);)
22842 + rval = qla2x00_get_prop_xstr(ha, propbuf,
22843 + (uint8_t *)(&control_byte),
22844 + sizeof(control_byte));
22845 + if (rval == -1) {
22846 + /* error getting string. go to next. */
22850 + DEBUG(printk("build_tree: control byte 0x%x\n",
22853 + port->mp_byte = control_byte;
22854 + DEBUG(printk("build_tree: update_mp_device "
22855 + "host=%p, port=%p, tgt_no=%d\n",
22856 + host, port, tgt_no);)
22858 + qla2x00_update_mp_device(host, port, tgt_no);
22859 + qla2x00_set_lun_data_from_config(host,
22860 + port, tgt_no, dev_no);
22863 + KMEM_FREE(port, sizeof (fc_port_t));
22866 + qla2x00_free_ioctl_scrap_mem(ha);
22868 + LEAVE("qla2x00_cfg_build_path_tree");
22869 + DEBUG(printk("Leaving: qla2x00_cfg_build_path_tree\n");)
22873 + * qla2x00_cfg_display_devices
22874 + * This routine will the node names of the different devices found
22875 + * after port inquiry.
22882 +void qla2x00_cfg_display_devices(void)
22888 + mp_path_list_t *path_list;
22889 + int cnt, i, dev_no;
22891 + lun_bit_mask_t lun_mask;
22895 + printk("qla2x00_cfg_display_devices\n");
22896 + for (host = mp_hosts_base; (host); host = host->next) {
22898 + instance = (int) host->instance;
22899 + /* Display the node name for adapter */
22901 + "scsi-qla%d-adapter-port="
22902 + "%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
22904 + host->portname[0],
22905 + host->portname[1],
22906 + host->portname[2],
22907 + host->portname[3],
22908 + host->portname[4],
22909 + host->portname[5],
22910 + host->portname[6],
22911 + host->portname[7]);
22913 + for (id = 0; id < MAX_MP_DEVICES; id++) {
22914 + if( (dp = host->mp_devs[id] ) == NULL )
22917 + path_list = dp->path_list;
22920 + if( (path = path_list->last) != NULL ) {
22921 + /* Print out device port names */
22922 + path = path->next; /* first path */
22923 + for (dev_no = 0, cnt = 0;
22924 + cnt < path_list->path_cnt;
22925 + path = path->next, cnt++) {
22927 + /* skip others if not our host */
22928 + if (host != path->host)
22931 + "scsi-qla%d-tgt-%d-di-%d-node="
22932 + "%02x%02x%02x%02x"
22933 + "%02x%02x%02x%02x\\;\n",
22934 + instance, id, path->id,
22942 + dp->nodename[7]);
22946 + "scsi-qla%d-tgt-%d-di-%d-port="
22947 + "%02x%02x%02x%02x"
22948 + "%02x%02x%02x%02x\\;\n",
22949 + instance, id, path->id,
22950 + path->portname[0],
22951 + path->portname[1],
22952 + path->portname[2],
22953 + path->portname[3],
22954 + path->portname[4],
22955 + path->portname[5],
22956 + path->portname[6],
22957 + path->portname[7]);
22959 + /* control byte */
22961 + "scsi-qla%d-tgt-%d-di-%d-"
22962 + "control=%02x\\;\n",
22963 + instance, id, path->id,
22967 + * Build preferred bit mask for this
22969 + memset(&lun_mask, 0, sizeof(lun_mask));
22971 + for (i = 0; i < MAX_LUNS; i++) {
22972 + l = (uint8_t)(i & 0xFF);
22973 + if (path_list->current_path[l] == path->id ) {
22974 + EXT_SET_LUN_BIT((&lun_mask),l);
22980 + "scsi-qla%d-tgt-%d-di-%d-preferred=%08x%08x%08x%08x%08x%08x%08x%08x\\;\n",
22981 + instance, id, path->id,
22982 + *((uint32_t *) &lun_mask.mask[28]),
22983 + *((uint32_t *) &lun_mask.mask[24]),
22984 + *((uint32_t *) &lun_mask.mask[20]),
22985 + *((uint32_t *) &lun_mask.mask[16]),
22986 + *((uint32_t *) &lun_mask.mask[12]),
22987 + *((uint32_t *) &lun_mask.mask[8]),
22988 + *((uint32_t *) &lun_mask.mask[4]),
22989 + *((uint32_t *) &lun_mask.mask[0]) );
22992 + * Build disable bit mask for this path
22995 + for (i = 0; i < MAX_LUNS; i++) {
22996 + l = (uint8_t)(i & 0xFF);
22997 + if (!(path->lun_data.data[l] &
22998 + LUN_DATA_ENABLED) ) {
23005 + "scsi-qla%d-tgt-%d-di-%d-lun-disable=%08x%08x%08x%08x%08x%08x%08x%08x\\;\n",
23006 + instance, id, path->id,
23007 + *((uint32_t *) &lun_mask.mask[28]),
23008 + *((uint32_t *) &lun_mask.mask[24]),
23009 + *((uint32_t *) &lun_mask.mask[20]),
23010 + *((uint32_t *) &lun_mask.mask[16]),
23011 + *((uint32_t *) &lun_mask.mask[12]),
23012 + *((uint32_t *) &lun_mask.mask[8]),
23013 + *((uint32_t *) &lun_mask.mask[4]),
23014 + *((uint32_t *) &lun_mask.mask[0]) );
23025 +int qla2x00_cfg_build_range( mp_path_t *path, uint8_t *buf, int siz, uint8_t mask )
23029 + int colonflg = FALSE;
23034 + for (i = 0; i < MAX_LUNS; i++) {
23035 + if( (path->lun_data.data[i] & mask) ) {
23038 + if( colonflg && max >= min ) {
23039 + len += sprintf(&buf[len],":");
23042 + colonflg = FALSE;
23044 + if (max > min ) {
23045 + len += sprintf(&buf[len],"%02x-%02x",min,max);
23049 + } else if ( max == min ) {
23050 + len += sprintf(&buf[len],"%02x",max);
23059 + DEBUG4(printk("build_range: return len =%d\n",len);)
23066 + * qla2x00_cfg_proc_display_devices
23067 + * This routine will the node names of the different devices found
23068 + * after port inquiry.
23075 +int qla2x00_cfg_proc_display_devices(scsi_qla_host_t *ha)
23081 + mp_path_list_t *path_list;
23084 + lun_bit_mask_t lun_mask;
23090 + for (host = mp_hosts_base; (host); host = host->next) {
23092 + if( host->ha != ha )
23095 + instance = (int) host->instance;
23097 + /* Display the node name for adapter */
23098 + len += sprintf(PROC_BUF,
23099 + "scsi-qla%d-adapter-node="
23100 + "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
23102 + host->nodename[0],
23103 + host->nodename[1],
23104 + host->nodename[2],
23105 + host->nodename[3],
23106 + host->nodename[4],
23107 + host->nodename[5],
23108 + host->nodename[6],
23109 + host->nodename[7]);
23112 + for (id = 0; id < MAX_MP_DEVICES; id++) {
23113 + if( (dp = host->mp_devs[id] ) == NULL )
23116 + path_list = dp->path_list;
23118 + if( (path = path_list->last) != NULL ) {
23119 + /* Print out device port names */
23120 + path = path->next; /* first path */
23121 + for (cnt = 0; cnt < path_list->path_cnt; path = path->next, cnt++) {
23122 + /* skip others if not our host */
23123 + if (host != path->host)
23125 + len += sprintf(PROC_BUF,
23126 + "scsi-qla%d-target-%d-path-%d-node=%02x%02x%02x%02x%02x%02x%02x%02x;\n",
23127 + instance, id, path->id,
23135 + dp->nodename[7]);
23138 + len += sprintf(PROC_BUF,
23139 + "scsi-qla%d-target-%d-path-%d-port=%02x%02x%02x%02x%02x%02x%02x%02x;\n",
23140 + instance, id, path->id,
23141 + path->portname[0],
23142 + path->portname[1],
23143 + path->portname[2],
23144 + path->portname[3],
23145 + path->portname[4],
23146 + path->portname[5],
23147 + path->portname[6],
23148 + path->portname[7]);
23150 + if( path_list->visible == path->id ) {
23151 + len += sprintf(PROC_BUF, "scsi-qla%d-target-%d-path-%d-visible=%02x;\n",
23152 + instance, id, path->id, path->id);
23155 + len +=sprintf(PROC_BUF, "scsi-qla%d-target-%d-path-%d-control=%02x;\n",
23156 + instance, id, path->id, path->mp_byte);
23158 + /* Build preferred bit mask for this path */
23159 + memset(&lun_mask, 0, sizeof(lun_mask));
23161 + for (i = 0; i < MAX_LUNS_PER_DEVICE; i++) {
23162 + l = (uint8_t)(i & 0xFF);
23163 + if( path_list->current_path[l] == path->id ) {
23164 + EXT_SET_LUN_BIT((&lun_mask),l);
23168 + if( mask_set && EXT_DEF_MAX_LUNS <= 256 ) {
23169 + len += sprintf(PROC_BUF,
23170 + "scsi-qla%d-target-%d-path-%d-preferred=%08x%08x%08x%08x%08x%08x%08x%08x;\n",
23171 + instance, id, path->id,
23172 + *((uint32_t *) &lun_mask.mask[0]),
23173 + *((uint32_t *) &lun_mask.mask[4]),
23174 + *((uint32_t *) &lun_mask.mask[8]),
23175 + *((uint32_t *) &lun_mask.mask[12]),
23176 + *((uint32_t *) &lun_mask.mask[16]),
23177 + *((uint32_t *) &lun_mask.mask[20]),
23178 + *((uint32_t *) &lun_mask.mask[24]),
23179 + *((uint32_t *) &lun_mask.mask[28]) );
23182 + len += sprintf(PROC_BUF,
23183 + "scsi-qla%d-target-%d-path-%d-lun-enable=%08x%08x%08x%08x%08x%08x%08x%08x;\n",
23184 + instance, id, path->id,
23185 + *((uint32_t *) &path->lun_data.data[0]),
23186 + *((uint32_t *) &path->lun_data.data[4]),
23187 + *((uint32_t *) &path->lun_data.data[8]),
23188 + *((uint32_t *) &path->lun_data.data[12]),
23189 + *((uint32_t *) &path->lun_data.data[16]),
23190 + *((uint32_t *) &path->lun_data.data[20]),
23191 + *((uint32_t *) &path->lun_data.data[24]),
23192 + *((uint32_t *) &path->lun_data.data[28]) );
23201 --- /dev/null Thu Apr 11 07:25:15 2002
23202 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_dbg.c Thu Jul 3 15:34:42 2003
23205 + * QLOGIC LINUX SOFTWARE
23207 + * QLogic ISP2x00 device driver for Linux 2.5.x
23208 + * Copyright (C) 2003 Qlogic Corporation
23209 + * (www.qlogic.com)
23211 + * This program is free software; you can redistribute it and/or modify it
23212 + * under the terms of the GNU General Public License as published by the
23213 + * Free Software Foundation; either version 2, or (at your option) any
23216 + * This program is distributed in the hope that it will be useful, but
23217 + * WITHOUT ANY WARRANTY; without even the implied warranty of
23218 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23219 + * General Public License for more details.
23222 +#include "qla_os.h"
23224 +#include "qla_def.h"
23227 +#if defined(ISP2300)
23229 + * qla2x00_fw_dump() - Dumps binary data from the 2300 firmware.
23230 + * @ha: SCSI driver HA context
23231 + * @hardware_locked: Called with the hardware_lock
23234 +qla2x00_dump_isp(scsi_qla_host_t *ha, int hardware_locked)
23238 + uint32_t cnt, timer;
23239 + uint32_t risc_address;
23240 + uint16_t risc_code_size;
23241 + uint16_t mb0, mb2;
23243 + uint16_t data, stat;
23244 + device_reg_t *reg;
23245 + uint16_t *dmp_reg;
23246 + unsigned long flags;
23249 + reg = ha->iobase;
23252 + if (!hardware_locked)
23253 + spin_lock_irqsave(&ha->hardware_lock, flags);
23255 + printk("\n\n[==>BEG]\n");
23257 + printk("HCCR Register:\n");
23258 + printk("%04x\n\n", RD_REG_WORD(®->hccr));
23260 + WRT_REG_WORD(®->hccr, HCCR_PAUSE_RISC);
23263 + printk("PBIU Registers:\n");
23264 + dmp_reg = (uint16_t *)(reg + 0);
23265 + for (i = 0; i < 8; i++)
23266 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23270 + printk("ReqQ-RspQ-Risc2Host Status registers:\n");
23271 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x10);
23272 + for (i = 0; i < 8; i++)
23273 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23277 + printk("Mailbox Registers:");
23278 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x40);
23279 + for (i = 0; i < 32; i++) {
23280 + if ((i % 8) == 0)
23282 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23287 + WRT_REG_WORD(®->ctrl_status, 0x40);
23288 + printk("Auto Request Response DMA Registers:");
23289 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23290 + for (i = 0; i < 32; i++) {
23291 + if ((i % 8) == 0)
23293 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23298 + WRT_REG_WORD(®->ctrl_status, 0x50);
23299 + printk("DMA Registers:");
23300 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23301 + for (i = 0; i < 48; i++) {
23302 + if ((i % 8) == 0)
23304 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23309 + WRT_REG_WORD(®->ctrl_status, 0x00);
23310 + printk("RISC Hardware Registers:");
23311 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0xA0);
23312 + for (i = 0; i < 16; i++) {
23313 + if ((i % 8) == 0)
23315 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23320 + WRT_REG_WORD(®->pcr, 0x2000);
23321 + printk("RISC GP0 Registers:");
23322 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23323 + for (i = 0; i < 16; i++) {
23324 + if ((i % 8) == 0)
23326 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23331 + WRT_REG_WORD(®->pcr, 0x2200);
23332 + printk("RISC GP1 Registers:");
23333 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23334 + for (i = 0; i < 16; i++) {
23335 + if ((i % 8) == 0)
23337 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23342 + WRT_REG_WORD(®->pcr, 0x2400);
23343 + printk("RISC GP2 Registers:");
23344 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23345 + for (i = 0; i < 16; i++) {
23346 + if ((i % 8) == 0)
23348 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23353 + WRT_REG_WORD(®->pcr, 0x2600);
23354 + printk("RISC GP3 Registers:");
23355 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23356 + for (i = 0; i < 16; i++) {
23357 + if ((i % 8) == 0)
23359 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23364 + WRT_REG_WORD(®->pcr, 0x2800);
23365 + printk("RISC GP4 Registers:");
23366 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23367 + for (i = 0; i < 16; i++) {
23368 + if ((i % 8) == 0)
23370 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23375 + WRT_REG_WORD(®->pcr, 0x2A00);
23376 + printk("RISC GP5 Registers:");
23377 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23378 + for (i = 0; i < 16; i++) {
23379 + if ((i % 8) == 0)
23381 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23386 + WRT_REG_WORD(®->pcr, 0x2C00);
23387 + printk("RISC GP6 Registers:");
23388 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23389 + for (i = 0; i < 16; i++) {
23390 + if ((i % 8) == 0)
23392 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23397 + WRT_REG_WORD(®->pcr, 0x2E00);
23398 + printk("RISC GP7 Registers:");
23399 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23400 + for (i = 0; i < 16; i++) {
23401 + if ((i % 8) == 0)
23403 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23408 + WRT_REG_WORD(®->ctrl_status, 0x10);
23409 + printk("Frame Buffer Hardware Registers:");
23410 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23411 + for (i = 0; i < 64; i++) {
23412 + if ((i % 8) == 0)
23414 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23419 + WRT_REG_WORD(®->ctrl_status, 0x20);
23420 + printk("FPM B0 Registers:");
23421 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23422 + for (i = 0; i < 64; i++) {
23423 + if ((i % 8) == 0)
23425 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23430 + WRT_REG_WORD(®->ctrl_status, 0x30);
23431 + printk("FPM B1 Registers:");
23432 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23433 + for (i = 0; i < 64; i++) {
23434 + if ((i % 8) == 0)
23436 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23441 + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET);
23443 + data = RD_REG_WORD(®->ctrl_status);
23444 + for (i = 6000000; i && data & CSR_ISP_SOFT_RESET; i--) {
23446 + data = RD_REG_WORD(®->ctrl_status);
23448 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
23449 + ha->pdev->device == QLA2322_DEVICE_ID) {
23452 + data = RD_REG_WORD(®->mailbox0);
23453 + for (i = 6000000; i && data == MBS_BUSY; i--) {
23455 + data = RD_REG_WORD(®->mailbox0);
23459 + rval = QLA2X00_SUCCESS;
23461 + printk("Code RAM Dump:");
23462 + risc_address = 0x800;
23463 + risc_code_size = 0xffff - 0x800 + 1;
23464 + WRT_REG_WORD(®->mailbox0, MBC_READ_RAM_WORD);
23465 + clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23466 + for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23467 + if ((cnt % 8) == 0)
23468 + printk("\n%04x: ", cnt + 0x0800);
23469 + WRT_REG_WORD(®->mailbox1, (uint16_t)risc_address++);
23470 + WRT_REG_WORD(®->hccr, HCCR_SET_HOST_INT);
23472 + for (timer = 6000000; timer != 0; timer--) {
23473 + /* Check for pending interrupts. */
23474 + if ((stat = RD_REG_WORD(®->host_status_lo)) & HSR_INT) {
23477 + if (stat == 0x1 || stat == 0x2) {
23478 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23480 + mb0 = RD_REG_WORD(®->mailbox0);
23481 + mb2 = RD_REG_WORD(®->mailbox2);
23483 + /* Release mailbox registers. */
23484 + WRT_REG_WORD(®->semaphore, 0);
23485 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23487 + } else if (stat == 0x10 || stat == 0x11) {
23488 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23490 + mb0 = RD_REG_WORD(®->mailbox0);
23491 + mb2 = RD_REG_WORD(®->mailbox2);
23493 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23497 + /* clear this intr; it wasn't a mailbox intr */
23498 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23504 + if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23505 + rval = mb0 & MBS_MASK;
23506 + printk("%04x ", mb2);
23508 + rval = QLA2X00_FUNCTION_FAILED;
23515 + printk("Stack RAM Dump:");
23516 + risc_address = 0x10000;
23517 + risc_code_size = 0x107ff - 0x10000 + 1;
23518 + WRT_REG_WORD(®->mailbox0, 0xf /* MBC_READ_RAM_EXTENDED */);
23519 + clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23521 + for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23522 + if ((cnt % 8) == 0)
23523 + printk("\n%05x: ", cnt + 0x10000);
23524 + WRT_REG_WORD(®->mailbox1, LSW(risc_address));
23525 + WRT_REG_WORD(®->mailbox8, MSW(risc_address++));
23526 + WRT_REG_WORD(®->hccr, HCCR_SET_HOST_INT);
23528 + for (timer = 6000000; timer != 0; timer--) {
23529 + /* Check for pending interrupts. */
23530 + if ((stat = RD_REG_WORD(®->host_status_lo)) & HSR_INT) {
23533 + if (stat == 0x1 || stat == 0x2) {
23534 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23536 + mb0 = RD_REG_WORD(®->mailbox0);
23537 + mb2 = RD_REG_WORD(®->mailbox2);
23539 + /* Release mailbox registers. */
23540 + WRT_REG_WORD(®->semaphore, 0);
23541 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23543 + } else if (stat == 0x10 || stat == 0x11) {
23544 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23546 + mb0 = RD_REG_WORD(®->mailbox0);
23547 + mb2 = RD_REG_WORD(®->mailbox2);
23549 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23553 + /* clear this intr; it wasn't a mailbox intr */
23554 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23560 + if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23561 + rval = mb0 & MBS_MASK;
23562 + printk("%04x ", mb2);
23564 + rval = QLA2X00_FUNCTION_FAILED;
23571 + printk("Data RAM Dump:");
23572 + risc_address = 0x10800;
23573 + risc_code_size = 0x1ffff - 0x10800 + 1;
23574 + WRT_REG_WORD(®->mailbox0, 0xf /* MBC_READ_RAM_EXTENDED */);
23575 + clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23577 + for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23578 + if ((cnt % 8) == 0)
23579 + printk("\n%05x: ", cnt + 0x10800);
23580 + WRT_REG_WORD(®->mailbox1, LSW(risc_address));
23581 + WRT_REG_WORD(®->mailbox8, MSW(risc_address++));
23582 + WRT_REG_WORD(®->hccr, HCCR_SET_HOST_INT);
23584 + for (timer = 6000000; timer != 0; timer--) {
23585 + /* Check for pending interrupts. */
23586 + if ((stat = RD_REG_WORD(®->host_status_lo)) & HSR_INT) {
23589 + if (stat == 0x1 || stat == 0x2) {
23590 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23592 + mb0 = RD_REG_WORD(®->mailbox0);
23593 + mb2 = RD_REG_WORD(®->mailbox2);
23595 + /* Release mailbox registers. */
23596 + WRT_REG_WORD(®->semaphore, 0);
23597 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23599 + } else if (stat == 0x10 || stat == 0x11) {
23600 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23602 + mb0 = RD_REG_WORD(®->mailbox0);
23603 + mb2 = RD_REG_WORD(®->mailbox2);
23605 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23609 + /* clear this intr; it wasn't a mailbox intr */
23610 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23616 + if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23617 + rval = mb0 & MBS_MASK;
23618 + printk("%04x ", mb2);
23620 + rval = QLA2X00_FUNCTION_FAILED;
23624 + printk("\n[<==END] ISP DEBUG DUMP\n");
23626 + if (!hardware_locked)
23627 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
23630 +#elif defined(ISP2200)
23633 + * qla2x00_fw_dump() - Dumps binary data from the 2200 firmware.
23634 + * @ha: SCSI driver HA context
23635 + * @hardware_locked: Called with the hardware_lock
23638 +qla2x00_dump_isp(scsi_qla_host_t *ha, int hardware_locked)
23642 + uint32_t cnt, timer;
23643 + uint32_t risc_address;
23644 + uint16_t risc_code_size;
23645 + uint16_t mb0, mb2;
23647 + uint16_t data, stat;
23648 + device_reg_t *reg;
23649 + uint16_t *dmp_reg;
23650 + unsigned long flags;
23653 + reg = ha->iobase;
23656 + if (!hardware_locked)
23657 + spin_lock_irqsave(&ha->hardware_lock, flags);
23659 + printk("\n\n[==>BEG]\n");
23661 + printk("HCCR Register:\n");
23662 + printk("%04x\n\n", RD_REG_WORD(®->hccr));
23664 + /* Pause RISC. */
23665 + WRT_REG_WORD(®->hccr, HCCR_PAUSE_RISC);
23666 + for (cnt = 30000; cnt; cnt--) {
23667 + if ((RD_REG_WORD(®->hccr) & HCCR_RISC_PAUSE) != 0)
23674 + printk("PBIU Registers:\n");
23675 + dmp_reg = (uint16_t *)(reg + 0);
23676 + for (i = 0; i < 8; i++)
23677 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23681 + printk("Mailbox Registers:");
23682 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x10);
23683 + for (i = 0; i < 32; i++) {
23685 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0xe0);
23687 + if ((i % 8) == 0)
23689 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23694 + printk("DMA Registers:");
23695 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x20);
23696 + for (i = 0; i < 48; i++) {
23697 + if ((i % 8) == 0)
23699 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23704 + WRT_REG_WORD(®->ctrl_status, 0x00);
23705 + printk("RISC Hardware Registers:");
23706 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0xA0);
23707 + for (i = 0; i < 16; i++) {
23708 + if ((i % 8) == 0)
23710 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23715 + WRT_REG_WORD(®->pcr, 0x2000);
23716 + printk("RISC GP0 Registers:");
23717 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23718 + for (i = 0; i < 16; i++) {
23719 + if ((i % 8) == 0)
23721 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23726 + WRT_REG_WORD(®->pcr, 0x2100);
23727 + printk("RISC GP1 Registers:");
23728 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23729 + for (i = 0; i < 16; i++) {
23730 + if ((i % 8) == 0)
23732 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23737 + WRT_REG_WORD(®->pcr, 0x2200);
23738 + printk("RISC GP2 Registers:");
23739 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23740 + for (i = 0; i < 16; i++) {
23741 + if ((i % 8) == 0)
23743 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23748 + WRT_REG_WORD(®->pcr, 0x2300);
23749 + printk("RISC GP3 Registers:");
23750 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23751 + for (i = 0; i < 16; i++) {
23752 + if ((i % 8) == 0)
23754 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23759 + WRT_REG_WORD(®->pcr, 0x2400);
23760 + printk("RISC GP4 Registers:");
23761 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23762 + for (i = 0; i < 16; i++) {
23763 + if ((i % 8) == 0)
23765 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23770 + WRT_REG_WORD(®->pcr, 0x2500);
23771 + printk("RISC GP5 Registers:");
23772 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23773 + for (i = 0; i < 16; i++) {
23774 + if ((i % 8) == 0)
23776 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23781 + WRT_REG_WORD(®->pcr, 0x2600);
23782 + printk("RISC GP6 Registers:");
23783 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23784 + for (i = 0; i < 16; i++) {
23785 + if ((i % 8) == 0)
23787 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23792 + WRT_REG_WORD(®->pcr, 0x2700);
23793 + printk("RISC GP7 Registers:");
23794 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23795 + for (i = 0; i < 16; i++) {
23796 + if ((i % 8) == 0)
23798 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23803 + WRT_REG_WORD(®->ctrl_status, 0x10);
23804 + printk("Frame Buffer Hardware Registers:");
23805 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23806 + for (i = 0; i < 16; i++) {
23807 + if ((i % 8) == 0)
23809 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23814 + WRT_REG_WORD(®->ctrl_status, 0x20);
23815 + printk("FPM B0 Registers:");
23816 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23817 + for (i = 0; i < 64; i++) {
23818 + if ((i % 8) == 0)
23820 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23825 + WRT_REG_WORD(®->ctrl_status, 0x30);
23826 + printk("FPM B1 Registers:");
23827 + dmp_reg = (uint16_t *)((uint8_t *)reg + 0x80);
23828 + for (i = 0; i < 64; i++) {
23829 + if ((i % 8) == 0)
23831 + printk("%04x ", RD_REG_WORD(dmp_reg++));
23836 + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET);
23838 + data = RD_REG_WORD(®->ctrl_status);
23839 + for (i = 6000000; i && data & CSR_ISP_SOFT_RESET; i--) {
23841 + data = RD_REG_WORD(®->ctrl_status);
23843 + data = RD_REG_WORD(®->mailbox0);
23844 + for (i = 6000000; i && data == MBS_BUSY; i--) {
23846 + data = RD_REG_WORD(®->mailbox0);
23849 + /* Pause RISC. */
23850 + WRT_REG_WORD(®->hccr, HCCR_PAUSE_RISC);
23851 + for (cnt = 30000; cnt; cnt--) {
23852 + if ((RD_REG_WORD(®->hccr) & HCCR_RISC_PAUSE) != 0)
23859 + rval = QLA2X00_SUCCESS;
23861 + printk("RISC SRAM:");
23862 + risc_address = 0x1000;
23863 + risc_code_size = 0xffff - 0x1000 + 1;
23864 + WRT_REG_WORD(®->mailbox0, MBC_READ_RAM_WORD);
23865 + clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23866 + for (cnt = 0; cnt < risc_code_size && rval == QLA2X00_SUCCESS; cnt++) {
23867 + if ((cnt % 8) == 0)
23868 + printk("\n%04x: ", cnt + 0x1000);
23869 + WRT_REG_WORD(®->mailbox1, (uint16_t)risc_address++);
23870 + WRT_REG_WORD(®->hccr, HCCR_SET_HOST_INT);
23872 + for (timer = 6000000; timer != 0; timer--) {
23873 + /* Check for pending interrupts. */
23874 + if ((stat = RD_REG_WORD(®->host_status_lo)) & HSR_INT) {
23877 + if (stat == 0x1 || stat == 0x2) {
23878 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23880 + mb0 = RD_REG_WORD(®->mailbox0);
23881 + mb2 = RD_REG_WORD(®->mailbox2);
23883 + /* Release mailbox registers. */
23884 + WRT_REG_WORD(®->semaphore, 0);
23885 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23887 + } else if (stat == 0x10 || stat == 0x11) {
23888 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
23890 + mb0 = RD_REG_WORD(®->mailbox0);
23891 + mb2 = RD_REG_WORD(®->mailbox2);
23893 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23897 + /* clear this intr; it wasn't a mailbox intr */
23898 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
23904 + if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
23905 + rval = mb0 & MBS_MASK;
23906 + printk("%04x ", mb2);
23908 + rval = QLA2X00_FUNCTION_FAILED;
23912 + printk("\n[<==END] ISP DEBUG DUMP\n");
23915 + if (!hardware_locked)
23916 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
23918 +#else /* if defined(ISP2100) */
23921 + * qla2x00_fw_dump() - Dumps binary data from the 2100 firmware.
23922 + * @ha: SCSI driver HA context
23923 + * @hardware_locked: Called with the hardware_lock
23925 + * NOTE: On the ISP2100, this function will not be implemented.
23928 +qla2x00_dump_isp(scsi_qla_host_t *ha, int hardware_locked)
23931 + printk("\n\n[==>BEG]\n");
23932 + printk("\n[<==END] ISP DEBUG DUMP\n");
23935 +#endif /* if defined(ISP2300) */
23939 +/****************************************************************************/
23940 +/* Driver Debug Functions. */
23941 +/****************************************************************************/
23944 +qla2x00_dump_regs(struct Scsi_Host *host)
23946 + /* Assumes non-memory mapped I/O */
23947 + printk("Mailbox registers:\n");
23948 + printk("scsi(%d): mbox 0 0x%04x \n",
23949 + host->host_no, inw(host->io_port + 0x10));
23950 + printk("scsi(%d): mbox 1 0x%04x \n",
23951 + host->host_no, inw(host->io_port + 0x12));
23952 + printk("scsi(%d): mbox 2 0x%04x \n",
23953 + host->host_no, inw(host->io_port + 0x14));
23954 + printk("scsi(%d): mbox 3 0x%04x \n",
23955 + host->host_no, inw(host->io_port + 0x16));
23956 + printk("scsi(%d): mbox 4 0x%04x \n",
23957 + host->host_no, inw(host->io_port + 0x18));
23958 + printk("scsi(%d): mbox 5 0x%04x \n",
23959 + host->host_no, inw(host->io_port + 0x1a));
23964 +qla2x00_dump_buffer(uint8_t * b, uint32_t size)
23969 + printk(" 0 1 2 3 4 5 6 7 8 9 "
23970 + "Ah Bh Ch Dh Eh Fh\n");
23971 + printk("-----------------------------------------"
23972 + "----------------------\n");
23974 + for (cnt = 0; cnt < size;) {
23976 + printk("%02x",(uint32_t) c);
23987 +/**************************************************************************
23988 + * qla2x00_print_scsi_cmd
23989 + * Dumps out info about the scsi cmd and srb.
23991 + * cmd : Scsi_Cmnd
23992 + **************************************************************************/
23994 +qla2x00_print_scsi_cmd(Scsi_Cmnd * cmd)
23996 + struct scsi_qla_host *ha;
23997 + struct Scsi_Host *host;
23999 + struct os_lun *lq;
24000 + fc_port_t *fcport;
24004 + host = cmd->device->host;
24005 + ha = (struct scsi_qla_host *) host->hostdata;
24007 + sp = (srb_t *) CMD_SP(cmd);
24008 + printk("SCSI Command @= 0x%p, Handle=0x%08lx\n",
24009 + cmd, (u_long) CMD_HANDLE(cmd));
24010 + printk(" chan=%d, target = 0x%02x, lun = 0x%02x, cmd_len = 0x%02x\n",
24011 + SCSI_BUS_32(cmd), SCSI_TCN_32(cmd), SCSI_LUN_32(cmd),
24013 + printk(" CDB = ");
24014 + for (i = 0; i < cmd->cmd_len; i++) {
24015 + printk("0x%02x ", cmd->cmnd[i]);
24017 + printk("\n seg_cnt =%d, retries=%d, serial_number_at_timeout=0x%lx\n",
24019 + cmd->retries, cmd->serial_number_at_timeout);
24020 + printk(" request buffer=0x%p, request buffer len=0x%x\n",
24021 + cmd->request_buffer,
24022 + cmd->request_bufflen);
24023 + printk(" tag=%d, flags=0x%x, transfersize=0x%x \n",
24024 + cmd->tag, cmd->flags, cmd->transfersize);
24025 + printk(" serial_number=%d, SP=%p\n", (int) cmd->serial_number,sp);
24026 + printk(" data direction=%d\n", cmd->sc_data_direction);
24028 + printk(" sp flags=0x%x\n", sp->flags);
24029 + printk(" r_start=0x%lx, u_start=0x%lx, "
24030 + "f_start=0x%lx, state=%d\n",
24031 + sp->r_start, sp->u_start,
24032 + sp->f_start, sp->state);
24034 + lq = sp->lun_queue;
24035 + fcport = lq->fclun->fcport;
24036 + printk(" e_start= 0x%lx, ext_history= %d, "
24037 + "fo retry=%d, loopid =%x, port path=%d\n",
24038 + sp->e_start, sp->ext_history,
24039 + sp->fo_retry_cnt,
24041 + fcport->cur_path);
24046 + * qla2x00_print_q_info
24047 + * Prints queue info
24052 +qla2x00_print_q_info(struct os_lun *q)
24054 + printk("Queue info: flags=0x%lx\n", q->q_flag);
24057 +#if defined(QL_DEBUG_ROUTINES)
24059 + * qla2x00_formatted_dump_buffer
24060 + * Prints string plus buffer.
24063 + * string = Null terminated string (no newline at end).
24064 + * buffer = buffer address.
24065 + * wd_size = word size 8, 16, 32 or 64 bits
24066 + * count = number of words.
24069 +qla2x00_formatted_dump_buffer(char *string, uint8_t * buffer,
24070 + uint8_t wd_size, uint32_t count)
24076 + if (strcmp(string, "") != 0)
24077 + printk("%s\n",string);
24079 + switch (wd_size) {
24081 + printk(" 0 1 2 3 4 5 6 7 "
24082 + "8 9 Ah Bh Ch Dh Eh Fh\n");
24083 + printk("-----------------------------------------"
24084 + "-------------------------------------\n");
24086 + for (cnt = 1; cnt <= count; cnt++, buffer++) {
24087 + printk("%02x",*buffer);
24088 + if (cnt % 16 == 0)
24093 + if (cnt % 16 != 0)
24097 + printk(" 0 2 4 6 8 Ah "
24099 + printk("-----------------------------------------"
24100 + "-------------\n");
24102 + buf16 = (uint16_t *) buffer;
24103 + for (cnt = 1; cnt <= count; cnt++, buf16++) {
24104 + printk("%4x",*buf16);
24106 + if (cnt % 8 == 0)
24108 + else if (*buf16 < 10)
24113 + if (cnt % 8 != 0)
24117 + printk(" 0 4 8 Ch\n");
24118 + printk("------------------------------------------\n");
24120 + buf32 = (uint32_t *) buffer;
24121 + for (cnt = 1; cnt <= count; cnt++, buf32++) {
24122 + printk("%8x", *buf32);
24124 + if (cnt % 4 == 0)
24126 + else if (*buf32 < 10)
24131 + if (cnt % 4 != 0)
24143 +/**************************************************************************
24146 +**************************************************************************/
24148 +qla2x00_panic(char *cp, struct Scsi_Host *host)
24150 + struct scsi_qla_host *ha;
24153 + ha = (struct scsi_qla_host *) host->hostdata;
24154 + DEBUG2(ql2x_debug_print = 1;);
24155 + printk("qla2100 - PANIC: %s\n", cp);
24156 + printk("Current time=0x%lx\n", jiffies);
24157 + printk("Number of pending commands =0x%lx\n", ha->actthreads);
24158 + printk("Number of queued commands =0x%lx\n", ha->qthreads);
24159 + printk("Number of free entries = (%d)\n", ha->req_q_cnt);
24160 + printk("Request Queue @ 0x%lx, Response Queue @ 0x%lx\n",
24161 + ha->request_dma, ha->response_dma);
24162 + printk("Request In Ptr %d\n", ha->req_ring_index);
24163 + fp = (long *) &ha->flags;
24164 + printk("HA flags =0x%lx\n", *fp);
24165 + qla2x00_dump_requests(ha);
24166 + qla2x00_dump_regs(host);
24171 + /* cpu_relax();*/
24178 +/**************************************************************************
24179 +* qla2x00_dump_requests
24181 +**************************************************************************/
24183 +qla2x00_dump_requests(scsi_qla_host_t *ha)
24190 + printk("Outstanding Commands on controller:\n");
24192 + for (i = 1; i < MAX_OUTSTANDING_COMMANDS; i++) {
24193 + if ((sp = ha->outstanding_cmds[i]) == NULL)
24195 + if ((cp = sp->cmd) == NULL)
24198 + printk("(%d): Pid=%d, sp flags=0x%lx, cmd=0x%p\n",
24200 + (int)sp->cmd->serial_number,
24201 + (long)sp->flags,CMD_SP(sp->cmd));
24204 --- /dev/null Thu Apr 11 07:25:15 2002
24205 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_dbg.h Thu Jul 3 15:34:42 2003
24207 +/******************************************************************************
24208 + * QLOGIC LINUX SOFTWARE
24210 + * QLogic ISP2x00 device driver for Linux 2.5.x
24211 + * Copyright (C) 2003 Qlogic Corporation
24212 + * (www.qlogic.com)
24214 + * This program is free software; you can redistribute it and/or modify it
24215 + * under the terms of the GNU General Public License as published by the
24216 + * Free Software Foundation; either version 2, or (at your option) any
24219 + * This program is distributed in the hope that it will be useful, but
24220 + * WITHOUT ANY WARRANTY; without even the implied warranty of
24221 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24222 + * General Public License for more details.
24224 + ******************************************************************************/
24226 +#undef ENTER_TRACE
24228 +* Macros use for debugging the driver.
24230 +#if defined(ENTER_TRACE)
24231 +#define ENTER(x) do { printk("qla2100 : Entering %s()\n", x); } while (0)
24232 +#define LEAVE(x) do { printk("qla2100 : Leaving %s()\n", x); } while (0)
24233 +#define ENTER_INTR(x) do { printk("qla2100 : Entering %s()\n", x); } while (0)
24234 +#define LEAVE_INTR(x) do { printk("qla2100 : Leaving %s()\n", x); } while (0)
24236 +#define ENTER(x) do {} while (0)
24237 +#define LEAVE(x) do {} while (0)
24238 +#define ENTER_INTR(x) do {} while (0)
24239 +#define LEAVE_INTR(x) do {} while (0)
24243 +#define DEBUG(x) do {x;} while (0);
24245 +#define DEBUG(x) do {} while (0);
24248 +#if defined(QL_DEBUG_LEVEL_1)
24249 +#define DEBUG1(x) do {x;} while (0);
24251 +#define DEBUG1(x) do {} while (0);
24254 +#if defined(QL_DEBUG_LEVEL_2)
24255 +#define DEBUG2(x) do {x;} while (0);
24256 +#define DEBUG2_3(x) do {x;} while (0);
24257 +#define DEBUG2_3_11(x) do {x;} while (0);
24258 +#define DEBUG2_9_10(x) do {x;} while (0);
24259 +#define DEBUG2_11(x) do {x;} while (0);
24261 +#define DEBUG2(x) do {} while (0);
24264 +#if defined(QL_DEBUG_LEVEL_3)
24265 +#define DEBUG3(x) do {x;} while (0);
24266 +#define DEBUG2_3(x) do {x;} while (0);
24267 +#define DEBUG2_3_11(x) do {x;} while (0);
24268 +#define DEBUG3_11(x) do {x;} while (0);
24270 +#define DEBUG3(x) do {} while (0);
24271 + #if !defined(QL_DEBUG_LEVEL_2)
24272 + #define DEBUG2_3(x) do {} while (0);
24276 +#if defined(QL_DEBUG_LEVEL_4)
24277 +#define DEBUG4(x) do {x;} while (0);
24279 +#define DEBUG4(x) do {} while (0);
24282 +#if defined(QL_DEBUG_LEVEL_5)
24283 +#define DEBUG5(x) do {x;} while (0);
24285 +#define DEBUG5(x) do {} while (0);
24288 +#if defined(QL_DEBUG_LEVEL_7)
24289 +#define DEBUG7(x) do {x;} while (0);
24291 +#define DEBUG7(x) do {} while (0);
24294 +#if defined(QL_DEBUG_LEVEL_9)
24295 +#define DEBUG9(x) do {x;} while (0);
24296 +#define DEBUG9_10(x) do {x;} while (0);
24297 +#define DEBUG2_9_10(x) do {x;} while (0);
24299 +#define DEBUG9(x) do {} while (0);
24302 +#if defined(QL_DEBUG_LEVEL_10)
24303 +#define DEBUG10(x) do {x;} while (0);
24304 +#define DEBUG2_9_10(x) do {x;} while (0);
24305 +#define DEBUG9_10(x) do {x;} while (0);
24307 +#define DEBUG10(x) do {} while (0);
24308 + #if !defined(DEBUG2_9_10)
24309 + #define DEBUG2_9_10(x) do {} while (0);
24311 + #if !defined(DEBUG9_10)
24312 + #define DEBUG9_10(x) do {} while (0);
24316 +#if defined(QL_DEBUG_LEVEL_11)
24317 +#define DEBUG11(x) do{x;} while(0);
24318 +#if !defined(DEBUG2_11)
24319 +#define DEBUG2_11(x) do{x;} while(0);
24321 +#if !defined(DEBUG2_3_11)
24322 +#define DEBUG2_3_11(x) do{x;} while(0);
24324 +#if !defined(DEBUG3_11)
24325 +#define DEBUG3_11(x) do{x;} while(0);
24328 +#define DEBUG11(x) do{} while(0);
24329 + #if !defined(QL_DEBUG_LEVEL_2)
24330 + #define DEBUG2_11(x) do{} while(0);
24331 + #if !defined(QL_DEBUG_LEVEL_3)
24332 + #define DEBUG2_3_11(x) do{} while(0);
24335 + #if !defined(QL_DEBUG_LEVEL_3)
24336 + #define DEBUG3_11(x) do{} while(0);
24340 +#if defined(QL_DEBUG_LEVEL_12)
24341 +#define DEBUG12(x) do {x;} while (0);
24343 +#define DEBUG12(x) do {} while (0);
24345 --- /dev/null Thu Apr 11 07:25:15 2002
24346 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_def.h Thu Jul 3 15:34:42 2003
24348 +/********************************************************************************
24349 +* QLOGIC LINUX SOFTWARE
24351 +* QLogic ISP2x00 device driver for Linux 2.5.x
24352 +* Copyright (C) 2003 Qlogic Corporation
24353 +* (www.qlogic.com)
24355 +* This program is free software; you can redistribute it and/or modify it
24356 +* under the terms of the GNU General Public License as published by the
24357 +* Free Software Foundation; either version 2, or (at your option) any
24360 +* This program is distributed in the hope that it will be useful, but
24361 +* WITHOUT ANY WARRANTY; without even the implied warranty of
24362 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24363 +* General Public License for more details.
24365 +******************************************************************************/
24367 +#ifndef __QLA_DEF_H
24368 +#define __QLA_DEF_H
24370 +#if defined(qla23xx)
24371 + #define MAILBOX_REGISTER_COUNT 32
24372 + #define ISP_NAME "23xx"
24373 + #define DRIVER_NAME "qla2300"
24376 +#elif defined(qla22xx)
24377 + #define MAILBOX_REGISTER_COUNT 32
24378 + #define ISP_NAME "22xx"
24379 + #define DRIVER_NAME "qla2200"
24381 +#else /* qla21xx */
24382 + #define MAILBOX_REGISTER_COUNT 8
24383 + #define ISP_NAME "21xx"
24384 + #define DRIVER_NAME "qla2100"
24388 +/*****************************************/
24389 +/* ISP Boards supported by this driver */
24390 +/*****************************************/
24391 +#define QLA2X00_VENDOR_ID 0x1077
24393 +#define QLA2100_DEVICE_ID 0x2100
24395 +#define QLA2200_DEVICE_ID 0x2200
24396 +#define QLA2200A_RISC_ROM_VER 4
24398 +#define QLA2300_DEVICE_ID 0x2300
24399 +#define QLA2312_DEVICE_ID 0x2312
24400 +#define QLA2322_DEVICE_ID 0x2322
24401 +#define FPM_2300 6
24402 +#define FPM_2310 7
24404 +#include "qla_settings.h"
24405 +#include "exioct.h"
24406 +#include "inioct.h"
24409 + * Data bit definitions
24415 +#define BIT_4 0x10
24416 +#define BIT_5 0x20
24417 +#define BIT_6 0x40
24418 +#define BIT_7 0x80
24419 +#define BIT_8 0x100
24420 +#define BIT_9 0x200
24421 +#define BIT_10 0x400
24422 +#define BIT_11 0x800
24423 +#define BIT_12 0x1000
24424 +#define BIT_13 0x2000
24425 +#define BIT_14 0x4000
24426 +#define BIT_15 0x8000
24427 +#define BIT_16 0x10000
24428 +#define BIT_17 0x20000
24429 +#define BIT_18 0x40000
24430 +#define BIT_19 0x80000
24431 +#define BIT_20 0x100000
24432 +#define BIT_21 0x200000
24433 +#define BIT_22 0x400000
24434 +#define BIT_23 0x800000
24435 +#define BIT_24 0x1000000
24436 +#define BIT_25 0x2000000
24437 +#define BIT_26 0x4000000
24438 +#define BIT_27 0x8000000
24439 +#define BIT_28 0x10000000
24440 +#define BIT_29 0x20000000
24441 +#define BIT_30 0x40000000
24442 +#define BIT_31 0x80000000
24444 +#define LSB(x) ((uint8_t)(x))
24445 +#define MSB(x) ((uint8_t)((uint16_t)(x) >> 8))
24447 +#define LSW(x) ((uint16_t)(x))
24448 +#define MSW(x) ((uint16_t)((uint32_t)(x) >> 16))
24450 +#define LSD(x) ((uint32_t)((uint64_t)(x)))
24451 +#define MSD(x) ((uint32_t)((uint64_t)(x) >> 32))
24457 +/* #define MEMORY_MAPPED_IO */ /* Enable memory mapped I/O */
24458 +#undef MEMORY_MAPPED_IO /* Disable memory mapped I/O */
24460 +#if defined(MEMORY_MAPPED_IO)
24461 +#define RD_REG_BYTE(addr) readb(addr)
24462 +#define RD_REG_WORD(addr) readw(addr)
24463 +#define RD_REG_DWORD(addr) readl(addr)
24464 +#define WRT_REG_BYTE(addr, data) writeb(data,addr)
24465 +#define WRT_REG_WORD(addr, data) writew(data,addr)
24466 +#define WRT_REG_DWORD(addr, data) writel(data,addr)
24467 +#else /* MEMORY_MAPPED_IO */
24468 +#define RD_REG_BYTE(addr) (inb((unsigned long)addr))
24469 +#define RD_REG_WORD(addr) (inw((unsigned long)addr))
24470 +#define RD_REG_DWORD(addr) (inl((unsigned long)addr))
24471 +#define WRT_REG_BYTE(addr, data) (outb(data,(unsigned long)addr))
24472 +#define WRT_REG_WORD(addr, data) (outw(data,(unsigned long)addr))
24473 +#define WRT_REG_DWORD(addr, data) (outl(data,(unsigned long)addr))
24474 +#endif /* MEMORY_MAPPED_IO */
24477 + * Fibre Channel device definitions.
24479 +#define WWN_SIZE 8 /* Size of WWPN, WWN & WWNN */
24480 +#define MAX_FIBRE_DEVICES 256
24481 +#define MAX_FIBRE_LUNS 256
24482 +#define MAX_RSCN_COUNT 10
24483 +#define MAX_HOST_COUNT 16
24486 + * Host adapter default definitions.
24488 +#define MAX_BUSES 1 /* We only have one bus today */
24489 +#define MAX_TARGETS_2100 MAX_FIBRE_DEVICES
24490 +#define MAX_TARGETS_2200 MAX_FIBRE_DEVICES
24491 +#define MAX_TARGETS MAX_FIBRE_DEVICES
24492 +#define MIN_LUNS 8
24493 +#define MAX_LUNS MAX_FIBRE_LUNS
24494 +#define MAX_CMDS_PER_LUN 255
24495 +#define MAX_SRBS 4096
24498 + * Fibre Channel device definitions.
24500 +#define LAST_LOCAL_LOOP_ID 0x7d
24501 +#define SNS_FL_PORT 0x7e
24502 +#define FABRIC_CONTROLLER 0x7f
24503 +#define SIMPLE_NAME_SERVER 0x80
24504 +#define SNS_FIRST_LOOP_ID 0x81
24505 +#define LAST_SNS_LOOP_ID 0xfe
24506 +#define MANAGEMENT_SERVER 0xfe
24507 +#define BROADCAST 0xff
24508 +#define SNS_ACCEPT 0x0280 /* 8002 swapped */
24509 +#define SNS_REJECT 0x0180 /* 8001 swapped */
24511 +/* Loop ID's used as database flags, must be higher than any valid Loop ID */
24512 +#define PORT_UNUSED 0x100 /* Port never been used. */
24513 +#define PORT_AVAILABLE 0x101 /* Device does not exist on port. */
24514 +#define PORT_NEED_MAP 0x102
24515 +#define PORT_LOST_ID 0x200
24516 +#define PORT_LOGIN_NEEDED 0x400
24519 + * Timeout timer counts in seconds
24521 +#define QLA2100_WDG_TIME_QUANTUM 5 /* In seconds */
24522 +#define PORT_RETRY_TIME 2
24523 +#define LOOP_DOWN_TIMEOUT 60
24524 +#define LOOP_DOWN_TIME 120 /* 240 */
24525 +#define LOOP_DOWN_RESET (LOOP_DOWN_TIME - 30)
24527 +/* Maximum outstanding commands in ISP queues (1-65535) */
24528 +#define MAX_OUTSTANDING_COMMANDS 1024
24530 +/* ISP request and response entry counts (37-65535) */
24531 +#define REQUEST_ENTRY_CNT 1024 /* Number of request entries. */
24532 +#if defined(ISP2100) || defined(ISP2200)
24533 +#define RESPONSE_ENTRY_CNT 64 /* Number of response entries.*/
24535 +#define RESPONSE_ENTRY_CNT 512 /* Number of response entries.*/
24538 +/* Number of segments 1 - 65535 */
24539 +#define SG_SEGMENTS 32 /* Cmd entry + 6 continuations */
24542 + * SCSI Request Block
24544 +typedef struct srb {
24545 + struct list_head list;
24547 + Scsi_Cmnd *cmd; /* Linux SCSI command pkt */
24548 + struct scsi_qla_host *ha; /* ha this SP is queued on */
24550 + uint8_t dir; /* direction of transfer */
24553 + uint16_t flags; /* Status flags - defined below */
24556 +#define SRB_FREE_STATE 0 /* Request returned back */
24557 +#define SRB_PENDING_STATE 1 /* Request being queued in LUN Q */
24558 +#define SRB_ACTIVE_STATE 2 /* Request in Active Array */
24559 +#define SRB_DONE_STATE 3 /* Request Queued in Done Queue */
24560 +#define SRB_RETRY_STATE 4 /* Request in Retry Queue */
24561 +#define SRB_SUSPENDED_STATE 5 /* Request in suspended state */
24562 +#define SRB_NO_QUEUE_STATE 6 /* Request is in between states */
24563 +#define SRB_ACTIVE_TIMEOUT_STATE 7 /* Request in Active Array but timed out */
24564 +#define SRB_FAILOVER_STATE 8 /* Request in Failover Queue */
24565 +#define SRB_SCSI_RETRY_STATE 9 /* Request in Scsi Retry Queue */
24567 + uint8_t used; /* used by allocation code */
24568 + uint8_t ref_num; /* reference SRB number */
24569 + uint16_t magic; /* qlogic magic number */
24570 +#define SRB_MAGIC 0x10CB
24572 + u_long host_no; /* Host number of allocating host */
24573 + struct timer_list timer; /* used to timeout command */
24574 + dma_addr_t saved_dma_handle; /* for unmap of single transfers */
24576 + atomic_t ref_count; /* reference count for this structure */
24578 + /* Target/LUN queue pointers. */
24579 + struct os_tgt *tgt_queue; /* ptr to visible ha's target */
24580 + struct os_lun *lun_queue; /* ptr to visible ha's lun */
24581 + struct fc_lun *fclun; /* FC LUN context pointer. */
24583 + /* Raw completion info for use by failover ? */
24584 + uint8_t fo_retry_cnt; /* Retry count this request */
24585 + uint8_t err_id; /* error id */
24586 + uint8_t cmd_length; /* command length */
24589 + int delay; /* delay in seconds */
24590 + int ext_history; /* */
24592 + u_long e_start; /* jiffies at start of extend timeout */
24593 + u_long r_start; /* jiffies at start of request */
24594 + u_long u_start; /* jiffies when sent to F/W */
24595 + u_long f_start; /* ra 10/29/01*/
24596 + /*jiffies when put in failover queue*/
24598 + uint32_t resid; /* Residual transfer length */
24599 + uint16_t sense_len; /* Sense data length */
24600 + uint32_t request_sense_length;
24601 + void *request_sense_ptr;
24603 +#if defined(IOCB_THROLLE_USAGE)
24604 + uint32_t iocb_cnt;
24609 + * SRB flag definitions
24611 +#define SRB_TIMEOUT BIT_0 /* Command timed out */
24612 +#define SRB_DMA_VALID BIT_1 /* Command sent to ISP */
24613 +#define SRB_WATCHDOG BIT_2 /* Command on watchdog list */
24614 +#define SRB_ABORT_PENDING BIT_3 /* Command abort sent to device */
24616 +#define SRB_ABORTED BIT_4 /* Command aborted command already */
24617 +#define SRB_RETRY BIT_5 /* Command needs retrying */
24618 +#define SRB_GOT_SENSE BIT_6 /* Command has sense data */
24619 +#define SRB_FAILOVER BIT_7 /* Command in failover state */
24621 +#define SRB_BUSY BIT_8 /* Command is in busy retry state */
24622 +#define SRB_FO_CANCEL BIT_9 /* Command don't need to do failover */
24623 +#define SRB_IOCTL BIT_10 /* IOCTL command. */
24624 +#define SRB_ISP_STARTED BIT_11 /* Command sent to ISP. */
24626 +#define SRB_ISP_COMPLETED BIT_12 /* ISP finished with command */
24630 + * ISP PCI Configuration Register Set
24632 +typedef volatile struct {
24633 + uint16_t vendor_id; /* 0x0 */
24634 + uint16_t device_id; /* 0x2 */
24635 + uint16_t command; /* 0x4 */
24636 + uint16_t status; /* 0x6 */
24637 + uint8_t revision_id; /* 0x8 */
24638 + uint8_t programming_interface; /* 0x9 */
24639 + uint8_t sub_class; /* 0xa */
24640 + uint8_t base_class; /* 0xb */
24641 + uint8_t cache_line; /* 0xc */
24642 + uint8_t latency_timer; /* 0xd */
24643 + uint8_t header_type; /* 0xe */
24644 + uint8_t bist; /* 0xf */
24645 + uint32_t base_port; /* 0x10 */
24646 + uint32_t mem_base_addr; /* 0x14 */
24647 + uint32_t base_addr[4]; /* 0x18-0x24 */
24648 + uint32_t reserved_1[2]; /* 0x28-0x2c */
24649 + uint16_t expansion_rom; /* 0x30 */
24650 + uint32_t reserved_2[2]; /* 0x34-0x38 */
24651 + uint8_t interrupt_line; /* 0x3c */
24652 + uint8_t interrupt_pin; /* 0x3d */
24653 + uint8_t min_grant; /* 0x3e */
24654 + uint8_t max_latency; /* 0x3f */
24655 +} config_reg_t __attribute__((packed));
24659 + * ISP I/O Register Set structure definitions.
24661 +typedef volatile struct {
24662 + volatile uint16_t flash_address; /* Flash BIOS address */
24663 + volatile uint16_t flash_data; /* Flash BIOS data */
24664 + uint16_t unused_1[1]; /* Gap */
24665 + volatile uint16_t ctrl_status; /* Control/Status */
24666 +#define CSR_FLASH_64K_BANK BIT_3 /* Flash upper 64K bank select */
24667 +#define CSR_FLASH_ENABLE BIT_1 /* Flash BIOS Read/Write enable */
24668 +#define CSR_ISP_SOFT_RESET BIT_0 /* ISP soft reset */
24670 + volatile uint16_t ictrl; /* Interrupt control */
24671 +#define ICR_EN_INT BIT_15 /* ISP enable interrupts. */
24672 +#define ICR_EN_RISC BIT_3 /* ISP enable RISC interrupts. */
24674 + volatile uint16_t istatus; /* Interrupt status */
24675 +#define ISR_RISC_INT BIT_3 /* RISC interrupt */
24677 + volatile uint16_t semaphore; /* Semaphore */
24678 + volatile uint16_t nvram; /* NVRAM register. */
24679 +#define NVR_DESELECT 0
24680 +#define NVR_CLOCK BIT_0
24681 +#define NVR_SELECT BIT_1
24682 +#define NVR_DATA_OUT BIT_2
24683 +#define NVR_DATA_IN BIT_3
24684 +#define NVR_BUSY BIT_15
24686 +#if defined(ISP2100) || defined(ISP2200)
24687 + volatile uint16_t mailbox0;
24688 + volatile uint16_t mailbox1;
24689 + volatile uint16_t mailbox2;
24690 + volatile uint16_t mailbox3;
24691 + volatile uint16_t mailbox4;
24692 +#define ISP_REQ_Q_IN(reg) (&(reg)->mailbox4)
24693 +#define ISP_REQ_Q_OUT(reg) (&(reg)->mailbox4)
24694 + volatile uint16_t mailbox5;
24695 +#define ISP_RSP_Q_IN(reg) (&(reg)->mailbox5)
24696 +#define ISP_RSP_Q_OUT(reg) (&(reg)->mailbox5)
24697 + volatile uint16_t mailbox6;
24698 + volatile uint16_t mailbox7;
24699 + uint16_t unused_2[0x3b]; /* Gap */
24700 +#else /* defined(ISP2300) */
24701 + volatile uint16_t req_q_in; /* Request Queue In-Pointer */
24702 +#define ISP_REQ_Q_IN(reg) (&(reg)->req_q_in)
24703 + volatile uint16_t req_q_out; /* Request Queue Out-Pointer */
24704 +#define ISP_REQ_Q_OUT(reg) (&(reg)->req_q_out)
24705 + volatile uint16_t rsp_q_in; /* Response Queue In-Pointer */
24706 +#define ISP_RSP_Q_IN(reg) (&(reg)->rsp_q_in)
24707 + volatile uint16_t rsp_q_out; /* Response Queue Out-Pointer */
24708 +#define ISP_RSP_Q_OUT(reg) (&(reg)->rsp_q_out)
24710 + volatile uint16_t host_status_lo; /* RISC to Host Status Low */
24711 +#define HSR_INT BIT_15 /* RISC int */
24712 +#define HSR_RISC_PAUSED BIT_8 /* RISC Paused */
24713 + volatile uint16_t host_status_hi; /* RISC to Host Status High */
24714 +#define HSR_ROM_MB_CMD_COMP 0x01 /* ROM mailbox cmd complete */
24715 +#define HSR_ROM_MB_CMD_ERROR 0x02 /*ROM mailbox cmd unsuccessful*/
24716 +#define HSR_MB_CMD_COMP 0x10 /* Mailbox cmd complete */
24717 +#define HSR_MB_CMD_ERROR 0x11 /* Mailbox cmd unsuccessful */
24718 +#define HSR_ASYNC_EVENT 0x12 /* Asynchronous event */
24719 +#define HSR_RESPONSE_QUEUE_UP 0x13 /* Response Queue update */
24720 +#define HSR_RIO_ONE 0x15 /* RIO one 16 bit handle */
24721 +#define HSR_FAST_SCSI_COMP 0x16 /* Fast Post SCSI complete */
24723 + volatile uint16_t host_semaphore; /* Host to Host Semaphore */
24724 + uint16_t unused_3[0x11]; /* Gap */
24725 + volatile uint16_t mailbox0;
24726 + volatile uint16_t mailbox1;
24727 + volatile uint16_t mailbox2;
24728 + volatile uint16_t mailbox3;
24729 + volatile uint16_t mailbox4;
24730 + volatile uint16_t mailbox5;
24731 + volatile uint16_t mailbox6;
24732 + volatile uint16_t mailbox7;
24733 + volatile uint16_t mailbox8;
24734 + volatile uint16_t mailbox9;
24735 + volatile uint16_t mailbox10;
24736 + volatile uint16_t mailbox11;
24737 + volatile uint16_t mailbox12;
24738 + volatile uint16_t mailbox13;
24739 + volatile uint16_t mailbox14;
24740 + volatile uint16_t mailbox15;
24741 + volatile uint16_t mailbox16;
24742 + volatile uint16_t mailbox17;
24743 + volatile uint16_t mailbox18;
24744 + volatile uint16_t mailbox19;
24745 + volatile uint16_t mailbox20;
24746 + volatile uint16_t mailbox21;
24747 + volatile uint16_t mailbox22;
24748 + volatile uint16_t mailbox23;
24749 + volatile uint16_t mailbox24;
24750 + volatile uint16_t mailbox25;
24751 + volatile uint16_t mailbox26;
24752 + volatile uint16_t mailbox27;
24753 + volatile uint16_t mailbox28;
24754 + volatile uint16_t mailbox29;
24755 + volatile uint16_t mailbox30;
24756 + volatile uint16_t mailbox31;
24757 + volatile uint16_t fb_cmd;
24758 + uint16_t unused_4[0xa]; /* Gap */
24759 +#endif /* defined(ISP2100) || defined(ISP2200) */
24760 + volatile uint16_t fpm_diag_config;
24761 + uint16_t unused_5[0x6]; /* Gap */
24762 + volatile uint16_t pcr; /* Processor Control Register. */
24763 + uint16_t unused_6[0x5]; /* Gap */
24764 + volatile uint16_t mctr; /* Memory Configuration and Timing. */
24765 + uint16_t unused_7[0x3]; /* Gap */
24766 +#if defined(ISP2100) || defined(ISP2200)
24767 + volatile uint16_t fb_cmd;
24768 +#else /* defined(ISP2300) */
24769 + uint16_t unused_11;
24770 +#endif /* defined(ISP2100) || defined(ISP2200) */
24771 + uint16_t unused_8[0x3]; /* Gap */
24772 + volatile uint16_t hccr; /* Host command & control register. */
24773 +#define HCCR_HOST_INT BIT_7 /* Host interrupt bit */
24774 +#define HCCR_RISC_PAUSE BIT_5 /* Pause mode bit */
24775 + /* HCCR commands */
24776 +#define HCCR_RESET_RISC 0x1000 /* Reset RISC */
24777 +#define HCCR_PAUSE_RISC 0x2000 /* Pause RISC */
24778 +#define HCCR_RELEASE_RISC 0x3000 /* Release RISC from reset. */
24779 +#define HCCR_SET_HOST_INT 0x5000 /* Set host interrupt */
24780 +#define HCCR_CLR_HOST_INT 0x6000 /* Clear HOST interrupt */
24781 +#define HCCR_CLR_RISC_INT 0x7000 /* Clear RISC interrupt */
24782 +#define HCCR_DISABLE_PARITY_PAUSE 0x4001 /* Disable parity error RISC pause. */
24783 +#define HCCR_ENABLE_PARITY 0xA000 /* Enable PARITY interrupt */
24785 + uint16_t unused_9[5]; /* Gap */
24786 + volatile uint16_t gpiod; /* GPIO Data register. */
24787 + volatile uint16_t gpioe; /* GPIO Enable register. */
24788 +#if defined(ISP2200)
24789 + uint16_t unused_10[8]; /* Gap */
24790 + volatile uint16_t mailbox8;
24791 + volatile uint16_t mailbox9;
24792 + volatile uint16_t mailbox10;
24793 + volatile uint16_t mailbox11;
24794 + volatile uint16_t mailbox12;
24795 + volatile uint16_t mailbox13;
24796 + volatile uint16_t mailbox14;
24797 + volatile uint16_t mailbox15;
24798 + volatile uint16_t mailbox16;
24799 + volatile uint16_t mailbox17;
24800 + volatile uint16_t mailbox18;
24801 + volatile uint16_t mailbox19;
24802 + volatile uint16_t mailbox20;
24803 + volatile uint16_t mailbox21;
24804 + volatile uint16_t mailbox22;
24805 + volatile uint16_t mailbox23; /* Also probe reg. */
24806 +#endif /* defined(ISP2200) */
24810 + uint32_t out_mb; /* outbound from driver */
24811 + uint32_t in_mb; /* Incoming from RISC */
24812 + uint16_t mb[MAILBOX_REGISTER_COUNT];
24817 +#define MBX_DMA_IN BIT_0
24818 +#define MBX_DMA_OUT BIT_1
24819 +#define IOCTL_CMD BIT_2
24822 +#define MBX_TOV_SECONDS 30
24825 + * ISP product identification definitions in mailboxes after reset.
24827 +#define PROD_ID_1 0x4953
24828 +#define PROD_ID_2 0x0000
24829 +#define PROD_ID_2a 0x5020
24830 +#define PROD_ID_3 0x2020
24831 +#define PROD_ID_4 0x1
24832 +#define PROD_ID_4a 0x2
24835 + * ISP mailbox Self-Test status codes
24837 +#define MBS_FRM_ALIVE 0 /* Firmware Alive. */
24838 +#define MBS_CHKSUM_ERR 1 /* Checksum Error. */
24839 +#define MBS_BUSY 4 /* Busy. */
24842 + * ISP mailbox command complete status codes
24844 +#define MBS_CMD_CMP 0x4000 /* Command Complete. */
24845 +#define MBS_INV_CMD 0x4001 /* Invalid Command. */
24846 +#define MBS_HOST_INF_ERR 0x4002 /* Host Interface Error. */
24847 +#define MBS_TEST_FAILED 0x4003 /* Test Failed. */
24848 +#define MBS_CMD_ERR 0x4005 /* Command Error. */
24849 +#define MBS_CMD_PARAM_ERR 0x4006 /* Command Parameter Error. */
24850 +#define MBS_FATAL_ERROR 0xF000 /* Command Fatal Error. */
24851 +//TODO consolidate these definitions
24852 +#define MBS_FIRMWARE_ALIVE 0x0000
24853 +#define MBS_COMMAND_COMPLETE 0x4000
24854 +#define MBS_INVALID_COMMAND 0x4001
24856 +/* QLogic subroutine status definitions */
24857 +#define QL_STATUS_SUCCESS 0
24858 +#define QL_STATUS_ERROR 1
24859 +#define QL_STATUS_FATAL_ERROR 2
24860 +#define QL_STATUS_RESOURCE_ERROR 3
24861 +#define QL_STATUS_LOOP_ID_IN_USE 4
24862 +#define QL_STATUS_NO_DATA 5
24863 +#define QL_STATUS_TIMEOUT 6
24865 + * ISP mailbox asynchronous event status codes
24867 +#define MBA_ASYNC_EVENT 0x8000 /* Asynchronous event. */
24868 +#define MBA_RESET 0x8001 /* Reset Detected. */
24869 +#define MBA_SYSTEM_ERR 0x8002 /* System Error. */
24870 +#define MBA_REQ_TRANSFER_ERR 0x8003 /* Request Transfer Error. */
24871 +#define MBA_RSP_TRANSFER_ERR 0x8004 /* Response Transfer Error. */
24872 +#define MBA_WAKEUP_THRES 0x8005 /* Request Queue Wake-up. */
24873 +#define MBA_LIP_OCCURRED 0x8010 /* Loop Initialization Procedure */
24875 +#define MBA_LOOP_UP 0x8011 /* FC Loop UP. */
24876 +#define MBA_LOOP_DOWN 0x8012 /* FC Loop Down. */
24877 +#define MBA_LIP_RESET 0x8013 /* LIP reset occurred. */
24878 +#define MBA_PORT_UPDATE 0x8014 /* Port Database update. */
24879 +#define MBA_SCR_UPDATE 0x8015 /* State Change Registration. */
24880 +#define MBA_RSCN_UPDATE MBA_SCR_UPDATE
24881 +#define MBA_SCSI_COMPLETION 0x8020 /* SCSI Command Complete. */
24882 +#define MBA_CTIO_COMPLETION 0x8021 /* CTIO Complete. */
24883 +#if !defined(ISP2100)
24884 +#define MBA_LINK_MODE_UP 0x8030 /* FC Link Mode UP. */
24885 +#define MBA_UPDATE_CONFIG 0x8036 /* FC Update Configuration. */
24889 + * ISP mailbox commands
24891 +#define MBC_LOAD_RAM 1 /* Load RAM. */
24892 +#define MBC_EXECUTE_FIRMWARE 2 /* Execute firmware. */
24893 +#define MBC_WRITE_RAM_WORD 4 /* Write RAM word. */
24894 +#define MBC_READ_RAM_WORD 5 /* Read RAM word. */
24895 +#define MBC_MAILBOX_REGISTER_TEST 6 /* Wrap incoming mailboxes */
24896 +#define MBC_VERIFY_CHECKSUM 7 /* Verify checksum. */
24897 +#define MBC_ABOUT_FIRMWARE 8 /* Get firmware revision. */
24898 +#define MBC_LOAD_RAM_A64 9 /* Load RAM by 64-bit address. */
24899 +#define MBC_DUMP_RAM 0xA /* READ BACK FW */
24900 +#define MBC_LOAD_RAM_EXTENDED 0xB /* Load Extended RAM */
24901 +#define MBC_DUMP_SRAM 0xC /* Dump SRAM */
24902 +#define MBC_WRITE_RAM_WORD_EXTENDED 0xD /* Write RAM word extended */
24903 +#define MBC_IOCB_EXECUTE 0x12 /* Execute an IOCB command */
24904 +#define MBC_ABORT_COMMAND 0x15 /* Abort IOCB command. */
24905 +#define MBC_ABORT_DEVICE 0x16 /* Abort device (ID/LUN). */
24906 +#define MBC_ABORT_TARGET 0x17 /* Abort target (ID). */
24907 +#define MBC_TARGET_RESET_ALL 0x18 /* Reset all local targets. */
24908 +#define MBC_GET_ADAPTER_LOOP_ID 0x20 /* Get loop id of ISP2100. */
24909 +#define MBC_GET_RETRY_COUNT 0x22 /* GET RATOV & retry count */
24910 +#define MBC_GET_FIRMWARE_OPTIONS 0x28 /* Get firmware options. */
24911 +#define MBC_SET_RETRY_COUNT 0x32 /* SET RATOV & retry count. */
24912 +#define MBC_SET_FIRMWARE_OPTIONS 0x38 /* Set firmware options. */
24913 +#define MBC_GET_RESOURCE_COUNTS 0x42 /* GET Resource counts */
24914 +#define MBC_DIAGNOSTIC_LOOP_BACK 0x45 /* Perform LoopBack diagnostic */
24915 +#define MBC_ENHANCED_GET_PORT_DATABASE 0x47 /* Get port database. */
24916 +#define MBC_IOCB_EXECUTE_A64 0x54 /* Execute an IOCB command (64bit) */
24917 +#define MBC_SEND_RNID_ELS 0x57 /* Send RNID ELS request */
24918 +#define MBC_SET_RNID_PARAMS 0x59 /* Set RNID parameters */
24919 +#define MBC_GET_RNID_PARAMS 0x5a /* Get RNID parameters */
24920 +#define MBC_INITIALIZE_FIRMWARE 0x60 /* Initialize firmware */
24921 +#define MBC_INITIATE_LIP 0x62 /* Initiate Loop Initialization */
24923 +#define MBC_GET_FCAL_MAP 0x63 /* Get FC/AL position map */
24924 +#define MBC_GET_PORT_DATABASE 0x64 /* Get port database. */
24925 +#define MBC_TARGET_RESET 0x66 /* Target reset. */
24926 +#define MBC_GET_FIRMWARE_STATE 0x69 /* Get firmware state. */
24927 +#define MBC_GET_PORT_NAME 0x6a /* Get port name. */
24928 +#define MBC_GET_LINK_STATUS 0x6b /* Get link status. */
24929 +#define MBC_LIP_RESET 0x6c /* LIP reset. */
24930 +#define MBC_SEND_SNS_COMMAND 0x6e /* Send Simple Name Server command. */
24931 +#define MBC_LOGIN_FABRIC_PORT 0x6f /* Login fabric port. */
24932 +#define MBC_LOGOUT_FABRIC_PORT 0x71 /* Logout fabric port. */
24933 +#define MBC_LIP_FULL_LOGIN 0x72 /* Full login LIP. */
24934 +#define MBC_LOGIN_LOOP_PORT 0x74 /* Login Loop Port. */
24935 +#define MBC_GET_PORT_LIST 0x75 /* Get port list. */
24936 +#define MBC_INITIALIZE_RECEIVE_QUEUE 0x77 /* Initialize receive queue */
24937 +#define MBC_SEND_FARP_REQ_COMMAND 0x78 /* FARP request. */
24938 +#define MBC_SEND_FARP_REPLY_COMMAND 0x79 /* FARP reply. */
24939 +#define MBC_PORT_LOOP_NAME_LIST 0x7C /* Get port/node name list. */
24940 +#define MBC_SEND_LFA_COMMAND 0x7D /* Send Loop Fabric Address */
24941 +#define MBC_LUN_RESET 0x7E /* Send LUN reset */
24943 +/* Firmware return data sizes */
24944 +#define FCAL_MAP_SIZE 128
24946 +/* Mailbox bit definitions for out_mb and in_mb */
24947 +#define MBX_31 BIT_31
24948 +#define MBX_30 BIT_30
24949 +#define MBX_29 BIT_29
24950 +#define MBX_28 BIT_28
24951 +#define MBX_27 BIT_27
24952 +#define MBX_26 BIT_26
24953 +#define MBX_25 BIT_25
24954 +#define MBX_24 BIT_24
24955 +#define MBX_23 BIT_23
24956 +#define MBX_22 BIT_22
24957 +#define MBX_21 BIT_21
24958 +#define MBX_20 BIT_20
24959 +#define MBX_19 BIT_19
24960 +#define MBX_18 BIT_18
24961 +#define MBX_17 BIT_17
24962 +#define MBX_16 BIT_16
24963 +#define MBX_15 BIT_15
24964 +#define MBX_14 BIT_14
24965 +#define MBX_13 BIT_13
24966 +#define MBX_12 BIT_12
24967 +#define MBX_11 BIT_11
24968 +#define MBX_10 BIT_10
24969 +#define MBX_9 BIT_9
24970 +#define MBX_8 BIT_8
24971 +#define MBX_7 BIT_7
24972 +#define MBX_6 BIT_6
24973 +#define MBX_5 BIT_5
24974 +#define MBX_4 BIT_4
24975 +#define MBX_3 BIT_3
24976 +#define MBX_2 BIT_2
24977 +#define MBX_1 BIT_1
24978 +#define MBX_0 BIT_0
24981 + * Firmware state codes from get firmware state mailbox command
24983 +#define FSTATE_CONFIG_WAIT 0
24984 +#define FSTATE_WAIT_AL_PA 1
24985 +#define FSTATE_WAIT_LOGIN 2
24986 +#define FSTATE_READY 3
24987 +#define FSTATE_LOSS_OF_SYNC 4
24988 +#define FSTATE_ERROR 5
24989 +#define FSTATE_REINIT 6
24990 +#define FSTATE_NON_PART 7
24992 +#define FSTATE_CONFIG_CORRECT 0
24993 +#define FSTATE_P2P_RCV_LIP 1
24994 +#define FSTATE_P2P_CHOOSE_LOOP 2
24995 +#define FSTATE_P2P_RCV_UNIDEN_LIP 3
24996 +#define FSTATE_FATAL_ERROR 4
24997 +#define FSTATE_LOOP_BACK_CONN 5
25000 + * Port Database structure definition
25001 + * Little endian except where noted.
25003 +#define PORT_DATABASE_SIZE 128 /* bytes */
25007 + uint8_t master_state;
25008 + uint8_t slave_state;
25009 +#define PD_STATE_DISCOVERY 0
25010 +#define PD_STATE_WAIT_DISCOVERY_ACK 1
25011 +#define PD_STATE_PORT_LOGIN 2
25012 +#define PD_STATE_WAIT_PORT_LOGIN_ACK 3
25013 +#define PD_STATE_PROCESS_LOGIN 4
25014 +#define PD_STATE_WAIT_PROCESS_LOGIN_ACK 5
25015 +#define PD_STATE_PORT_LOGGED_IN 6
25016 +#define PD_STATE_PORT_UNAVAILABLE 7
25017 +#define PD_STATE_PROCESS_LOGOUT 8
25018 +#define PD_STATE_WAIT_PROCESS_LOGOUT_ACK 9
25019 +#define PD_STATE_PORT_LOGOUT 10
25020 +#define PD_STATE_WAIT_PORT_LOGOUT_ACK 11
25021 + uint8_t reserved[2];
25022 + uint8_t hard_address;
25023 + uint8_t reserved_1;
25024 + uint8_t port_id[4];
25025 + uint8_t node_name[8]; /* Big endian. */
25026 + uint8_t port_name[8]; /* Big endian. */
25027 + uint16_t execution_throttle;
25028 + uint16_t execution_count;
25029 + uint8_t reset_count;
25030 + uint8_t reserved_2;
25031 + uint16_t resource_allocation;
25032 + uint16_t current_allocation;
25033 + uint16_t queue_head;
25034 + uint16_t queue_tail;
25035 + uint16_t transmit_execution_list_next;
25036 + uint16_t transmit_execution_list_previous;
25037 + uint16_t common_features;
25038 + uint16_t total_concurrent_sequences;
25039 + uint16_t RO_by_information_category;
25040 + uint8_t recipient;
25041 + uint8_t initiator;
25042 + uint16_t receive_data_size;
25043 + uint16_t concurrent_sequences;
25044 + uint16_t open_sequences_per_exchange;
25045 + uint16_t lun_abort_flags;
25046 + uint16_t lun_stop_flags;
25047 + uint16_t stop_queue_head;
25048 + uint16_t stop_queue_tail;
25049 + uint16_t port_retry_timer;
25050 + uint16_t next_sequence_id;
25051 + uint16_t frame_count;
25052 + uint16_t PRLI_payload_length;
25053 + uint8_t prli_svc_param_word_0[2]; /* Big endian */
25054 + /* Bits 15-0 of word 0 */
25055 + uint8_t prli_svc_param_word_3[2]; /* Big endian */
25056 + /* Bits 15-0 of word 3 */
25057 + uint16_t loop_id;
25058 + uint16_t extended_lun_info_list_pointer;
25059 + uint16_t extended_lun_stop_list_pointer;
25060 +} port_database_t;
25063 + * ISP Initialization Control Block.
25066 +#define SO_DATA_RATE_1GB 0
25067 +#define SO_DATA_RATE_2GB 1
25068 +#define SO_DATA_RATE_AUTO 2
25071 + * ISP Initialization Control Block.
25072 + * Little endian except where noted.
25074 +#define ICB_VERSION 1
25077 + uint8_t reserved_1;
25080 + * LSB BIT 0 = Enable Hard Loop Id
25081 + * LSB BIT 1 = Enable Fairness
25082 + * LSB BIT 2 = Enable Full-Duplex
25083 + * LSB BIT 3 = Enable Fast Posting
25084 + * LSB BIT 4 = Enable Target Mode
25085 + * LSB BIT 5 = Disable Initiator Mode
25086 + * LSB BIT 6 = Enable ADISC
25087 + * LSB BIT 7 = Enable Target Inquiry Data
25089 + * MSB BIT 0 = Enable PDBC Notify
25090 + * MSB BIT 1 = Non Participating LIP
25091 + * MSB BIT 2 = Descending Loop ID Search
25092 + * MSB BIT 3 = Acquire Loop ID in LIPA
25093 + * MSB BIT 4 = Stop PortQ on Full Status
25094 + * MSB BIT 5 = Full Login after LIP
25095 + * MSB BIT 6 = Node Name Option
25096 + * MSB BIT 7 = Ext IFWCB enable bit
25098 + uint8_t firmware_options[2];
25100 + uint16_t frame_payload_size;
25101 + uint16_t max_iocb_allocation;
25102 + uint16_t execution_throttle;
25103 + uint8_t retry_count;
25104 + uint8_t retry_delay; /* unused */
25105 + uint8_t port_name[WWN_SIZE]; /* Big endian. */
25106 + uint16_t hard_address;
25107 + uint8_t inquiry_data;
25108 + uint8_t login_timeout;
25109 + uint8_t node_name[WWN_SIZE]; /* Big endian. */
25111 + uint16_t request_q_outpointer;
25112 + uint16_t response_q_inpointer;
25113 + uint16_t request_q_length;
25114 + uint16_t response_q_length;
25115 + uint32_t request_q_address[2];
25116 + uint32_t response_q_address[2];
25118 + uint16_t lun_enables;
25119 + uint8_t command_resource_count;
25120 + uint8_t immediate_notify_resource_count;
25121 + uint16_t timeout;
25122 + uint8_t reserved_2[2];
25125 + * LSB BIT 0 = Timer Operation mode bit 0
25126 + * LSB BIT 1 = Timer Operation mode bit 1
25127 + * LSB BIT 2 = Timer Operation mode bit 2
25128 + * LSB BIT 3 = Timer Operation mode bit 3
25129 + * LSB BIT 4 = Init Config Mode bit 0
25130 + * LSB BIT 5 = Init Config Mode bit 1
25131 + * LSB BIT 6 = Init Config Mode bit 2
25132 + * LSB BIT 7 = Enable Non part on LIHA failure
25134 + * MSB BIT 0 = Enable class 2
25135 + * MSB BIT 1 = Enable ACK0
25138 + * MSB BIT 4 = FC Tape Enable
25139 + * MSB BIT 5 = Enable FC Confirm
25140 + * MSB BIT 6 = Enable command queuing in target mode
25141 + * MSB BIT 7 = No Logo On Link Down
25143 + uint8_t add_firmware_options[2];
25145 + uint8_t response_accumulation_timer;
25146 + uint8_t interrupt_delay_timer;
25149 + * LSB BIT 0 = Enable Read xfr_rdy
25150 + * LSB BIT 1 = Soft ID only
25153 + * LSB BIT 4 = FCP RSP Payload [0]
25154 + * LSB BIT 5 = FCP RSP Payload [1] / Sbus enable - 2200
25155 + * LSB BIT 6 = Enable Out-of-Order frame handling
25156 + * LSB BIT 7 = Disable Automatic PLOGI on Local Loop
25158 + * MSB BIT 0 = Sbus enable - 2300
25163 + * MSB BIT 5 = enable 50 ohm termination
25164 + * MSB BIT 6 = Data Rate (2300 only)
25165 + * MSB BIT 7 = Data Rate (2300 only)
25167 + uint8_t special_options[2];
25169 + uint8_t reserved_3[26];
25173 + * ISP Get/Set Target Parameters mailbox command control flags.
25177 + * Get Link Status mailbox command return buffer.
25180 + uint32_t link_fail_cnt;
25181 + uint32_t loss_sync_cnt;
25182 + uint32_t loss_sig_cnt;
25183 + uint32_t prim_seq_err_cnt;
25184 + uint32_t inval_xmit_word_cnt;
25185 + uint32_t inval_crc_cnt;
25189 + * NVRAM Command values.
25191 +#define NV_START_BIT BIT_2
25192 +#define NV_WRITE_OP (BIT_26+BIT_24)
25193 +#define NV_READ_OP (BIT_26+BIT_25)
25194 +#define NV_ERASE_OP (BIT_26+BIT_25+BIT_24)
25195 +#define NV_MASK_OP (BIT_26+BIT_25+BIT_24)
25196 +#define NV_DELAY_COUNT 10
25199 + * QLogic ISP2100, ISP2200 and ISP2300 NVRAM structure definition.
25206 + uint8_t nvram_version;
25207 + uint8_t reserved_0;
25210 + * NVRAM RISC parameter block
25212 + uint8_t parameter_block_version;
25213 + uint8_t reserved_1;
25216 + * LSB BIT 0 = Enable Hard Loop Id
25217 + * LSB BIT 1 = Enable Fairness
25218 + * LSB BIT 2 = Enable Full-Duplex
25219 + * LSB BIT 3 = Enable Fast Posting
25220 + * LSB BIT 4 = Enable Target Mode
25221 + * LSB BIT 5 = Disable Initiator Mode
25222 + * LSB BIT 6 = Enable ADISC
25223 + * LSB BIT 7 = Enable Target Inquiry Data
25225 + * MSB BIT 0 = Enable PDBC Notify
25226 + * MSB BIT 1 = Non Participating LIP
25227 + * MSB BIT 2 = Descending Loop ID Search
25228 + * MSB BIT 3 = Acquire Loop ID in LIPA
25229 + * MSB BIT 4 = Stop PortQ on Full Status
25230 + * MSB BIT 5 = Full Login after LIP
25231 + * MSB BIT 6 = Node Name Option
25232 + * MSB BIT 7 = Ext IFWCB enable bit
25234 + uint8_t firmware_options[2];
25236 + uint16_t frame_payload_size;
25237 + uint16_t max_iocb_allocation;
25238 + uint16_t execution_throttle;
25239 + uint8_t retry_count;
25240 + uint8_t retry_delay; /* unused */
25241 + uint8_t port_name[WWN_SIZE]; /* Big endian. */
25242 + uint16_t hard_address;
25243 + uint8_t inquiry_data;
25244 + uint8_t login_timeout;
25245 + uint8_t node_name[WWN_SIZE]; /* Big endian. */
25248 + * LSB BIT 0 = Timer Operation mode bit 0
25249 + * LSB BIT 1 = Timer Operation mode bit 1
25250 + * LSB BIT 2 = Timer Operation mode bit 2
25251 + * LSB BIT 3 = Timer Operation mode bit 3
25252 + * LSB BIT 4 = Init Config Mode bit 0
25253 + * LSB BIT 5 = Init Config Mode bit 1
25254 + * LSB BIT 6 = Init Config Mode bit 2
25255 + * LSB BIT 7 = Enable Non part on LIHA failure
25257 + * MSB BIT 0 = Enable class 2
25258 + * MSB BIT 1 = Enable ACK0
25261 + * MSB BIT 4 = FC Tape Enable
25262 + * MSB BIT 5 = Enable FC Confirm
25263 + * MSB BIT 6 = Enable command queuing in target mode
25264 + * MSB BIT 7 = No Logo On Link Down
25266 + uint8_t add_firmware_options[2];
25268 + uint8_t response_accumulation_timer;
25269 + uint8_t interrupt_delay_timer;
25272 + * LSB BIT 0 = Enable Read xfr_rdy
25273 + * LSB BIT 1 = Soft ID only
25276 + * LSB BIT 4 = FCP RSP Payload [0]
25277 + * LSB BIT 5 = FCP RSP Payload [1] / Sbus enable - 2200
25278 + * LSB BIT 6 = Enable Out-of-Order frame handling
25279 + * LSB BIT 7 = Disable Automatic PLOGI on Local Loop
25281 + * MSB BIT 0 = Sbus enable - 2300
25286 + * MSB BIT 5 = enable 50 ohm termination
25287 + * MSB BIT 6 = Data Rate (2300 only)
25288 + * MSB BIT 7 = Data Rate (2300 only)
25290 + uint8_t special_options[2];
25292 + /* Reserved for expanded RISC parameter block */
25293 + uint8_t reserved_2[24];
25296 + * LSB BIT 0 = Output Swing 1G bit 0
25297 + * LSB BIT 1 = Output Swing 1G bit 1
25298 + * LSB BIT 2 = Output Swing 1G bit 2
25299 + * LSB BIT 3 = Output Emphasis 1G bit 0
25300 + * LSB BIT 4 = Output Emphasis 1G bit 1
25301 + * LSB BIT 5 = Output Swing 2G bit 0
25302 + * LSB BIT 6 = Output Swing 2G bit 1
25303 + * LSB BIT 7 = Output Swing 2G bit 2
25305 + * MSB BIT 0 = Output Emphasis 2G bit 0
25306 + * MSB BIT 1 = Output Emphasis 2G bit 1
25307 + * MSB BIT 2 = Output Enable
25314 + uint8_t seriallink_options[2];
25317 + * NVRAM host parameter block
25319 + * LSB BIT 0 = Enable spinup delay
25320 + * LSB BIT 1 = Disable BIOS
25321 + * LSB BIT 2 = Enable Memory Map BIOS
25322 + * LSB BIT 3 = Enable Selectable Boot
25323 + * LSB BIT 4 = Disable RISC code load
25324 + * LSB BIT 5 = Set cache line size 1
25325 + * LSB BIT 6 = PCI Parity Disable
25326 + * LSB BIT 7 = Enable extended logging
25328 + * MSB BIT 0 = Enable 64bit addressing
25329 + * MSB BIT 1 = Enable lip reset
25330 + * MSB BIT 2 = Enable lip full login
25331 + * MSB BIT 3 = Enable target reset
25332 + * MSB BIT 4 = Enable database storage
25333 + * MSB BIT 5 = Enable cache flush read
25334 + * MSB BIT 6 = Enable database load
25335 + * MSB BIT 7 = Enable alternate WWN
25337 + uint8_t host_p[2];
25339 + uint8_t boot_node_name[WWN_SIZE];
25340 + uint8_t boot_lun_number;
25341 + uint8_t reset_delay;
25342 + uint8_t port_down_retry_count;
25343 + uint8_t boot_id_number;
25344 + uint16_t max_luns_per_target;
25345 + uint8_t fcode_boot_port_name[WWN_SIZE];
25346 + uint8_t alternate_port_name[WWN_SIZE];
25347 + uint8_t alternate_node_name[WWN_SIZE];
25350 + * BIT 0 = Boot Zoning
25351 + * BIT 1 = Alt-Boot Enable
25352 + * BIT 2 = Report SCSI Path
25359 + uint8_t efi_parameters;
25361 + uint8_t link_down_timeout;
25363 + uint8_t adapter_id_0[4];
25364 + uint8_t adapter_id_1[4];
25365 + uint8_t adapter_id_2[4];
25366 + uint8_t adapter_id_3[4];
25368 + uint8_t alt1_boot_node_name[WWN_SIZE];
25369 + uint16_t alt1_boot_lun_number;
25370 + uint8_t alt2_boot_node_name[WWN_SIZE];
25371 + uint16_t alt2_boot_lun_number;
25372 + uint8_t alt3_boot_node_name[WWN_SIZE];
25373 + uint16_t alt3_boot_lun_number;
25374 + uint8_t alt4_boot_node_name[WWN_SIZE];
25375 + uint16_t alt4_boot_lun_number;
25376 + uint8_t alt5_boot_node_name[WWN_SIZE];
25377 + uint16_t alt5_boot_lun_number;
25378 + uint8_t alt6_boot_node_name[WWN_SIZE];
25379 + uint16_t alt6_boot_lun_number;
25380 + uint8_t alt7_boot_node_name[WWN_SIZE];
25381 + uint16_t alt7_boot_lun_number;
25383 + uint8_t reserved_3[2];
25386 + uint8_t oem_specific[31];
25389 + * NVRAM Adapter Features offset 232-239
25391 + * LSB BIT 0 = External GBIC
25392 + * LSB BIT 1 = Risc RAM parity
25393 + * LSB BIT 2 = Buffer Plus Module
25394 + * LSB BIT 3 = Multi Chip Adapter
25395 + * LSB BIT 4 = Internal connector
25409 + uint8_t adapter_features[2];
25411 + uint8_t reserved_4[16];
25413 + /* Subsystem vendor ID for ISP2200 */
25414 + uint16_t subsystem_vendor_id_2200;
25416 + /* Subsystem device ID for ISP2200 */
25417 + uint16_t subsystem_device_id_2200;
25419 + uint8_t reserved_5;
25420 + uint8_t checksum;
25425 + * ISP queue - command entry structure definition.
25427 +#define MAX_CMDSZ 16 /* SCSI maximum CDB size. */
25429 + uint8_t entry_type; /* Entry type. */
25430 +#define COMMAND_TYPE 0x11 /* Command entry */
25431 + uint8_t entry_count; /* Entry count. */
25432 + uint8_t sys_define; /* System defined. */
25433 + uint8_t entry_status; /* Entry Status. */
25434 + uint32_t handle; /* System handle. */
25435 +#if defined(EXTENDED_IDS)
25436 + uint16_t target; /* SCSI ID */
25438 + uint8_t reserved;
25439 + uint8_t target; /* SCSI ID */
25441 + uint16_t lun; /* SCSI LUN */
25442 + uint16_t control_flags; /* Control flags. */
25443 +#define CF_HEAD_TAG BIT_1
25444 +#define CF_ORDERED_TAG BIT_2
25445 +#define CF_SIMPLE_TAG BIT_3
25446 +#define CF_READ BIT_5
25447 +#define CF_WRITE BIT_6
25448 + uint16_t reserved_1;
25449 + uint16_t timeout; /* Command timeout. */
25450 + uint16_t dseg_count; /* Data segment count. */
25451 + uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command words. */
25452 + uint32_t byte_count; /* Total byte count. */
25453 + uint32_t dseg_0_address; /* Data segment 0 address. */
25454 + uint32_t dseg_0_length; /* Data segment 0 length. */
25455 + uint32_t dseg_1_address; /* Data segment 1 address. */
25456 + uint32_t dseg_1_length; /* Data segment 1 length. */
25457 + uint32_t dseg_2_address; /* Data segment 2 address. */
25458 + uint32_t dseg_2_length; /* Data segment 2 length. */
25462 + * ISP queue - 64-Bit addressing, command entry structure definition.
25464 +#define COMMAND_A64_TYPE 0x19 /* Command A64 entry */
25466 + uint8_t entry_type; /* Entry type. */
25467 + uint8_t entry_count; /* Entry count. */
25468 + uint8_t sys_define; /* System defined. */
25469 + uint8_t entry_status; /* Entry Status. */
25470 + uint32_t handle; /* System handle. */
25471 +#if defined(EXTENDED_IDS)
25472 + uint16_t target; /* SCSI ID */
25474 + uint8_t reserved;
25475 + uint8_t target; /* SCSI ID */
25477 + uint16_t lun; /* SCSI LUN */
25478 + uint16_t control_flags; /* Control flags. */
25479 + uint16_t reserved_1;
25480 + uint16_t timeout; /* Command timeout. */
25481 + uint16_t dseg_count; /* Data segment count. */
25482 + uint8_t scsi_cdb[MAX_CMDSZ]; /* SCSI command words. */
25483 + uint32_t byte_count; /* Total byte count. */
25484 + uint32_t dseg_0_address[2]; /* Data segment 0 address. */
25485 + uint32_t dseg_0_length; /* Data segment 0 length. */
25486 + uint32_t dseg_1_address[2]; /* Data segment 1 address. */
25487 + uint32_t dseg_1_length; /* Data segment 1 length. */
25488 +} cmd_a64_entry_t, request_t;
25491 + * ISP queue - continuation entry structure definition.
25493 +#define CONTINUE_TYPE 0x02 /* Continuation entry. */
25495 + uint8_t entry_type; /* Entry type. */
25496 + uint8_t entry_count; /* Entry count. */
25497 + uint8_t sys_define; /* System defined. */
25498 + uint8_t entry_status; /* Entry Status. */
25499 + uint32_t reserved;
25500 + uint32_t dseg_0_address; /* Data segment 0 address. */
25501 + uint32_t dseg_0_length; /* Data segment 0 length. */
25502 + uint32_t dseg_1_address; /* Data segment 1 address. */
25503 + uint32_t dseg_1_length; /* Data segment 1 length. */
25504 + uint32_t dseg_2_address; /* Data segment 2 address. */
25505 + uint32_t dseg_2_length; /* Data segment 2 length. */
25506 + uint32_t dseg_3_address; /* Data segment 3 address. */
25507 + uint32_t dseg_3_length; /* Data segment 3 length. */
25508 + uint32_t dseg_4_address; /* Data segment 4 address. */
25509 + uint32_t dseg_4_length; /* Data segment 4 length. */
25510 + uint32_t dseg_5_address; /* Data segment 5 address. */
25511 + uint32_t dseg_5_length; /* Data segment 5 length. */
25512 + uint32_t dseg_6_address; /* Data segment 6 address. */
25513 + uint32_t dseg_6_length; /* Data segment 6 length. */
25517 + * ISP queue - 64-Bit addressing, continuation entry structure definition.
25519 +#define CONTINUE_A64_TYPE 0x0A /* Continuation A64 entry. */
25521 + uint8_t entry_type; /* Entry type. */
25522 + uint8_t entry_count; /* Entry count. */
25523 + uint8_t sys_define; /* System defined. */
25524 + uint8_t entry_status; /* Entry Status. */
25525 + uint32_t dseg_0_address[2]; /* Data segment 0 address. */
25526 + uint32_t dseg_0_length; /* Data segment 0 length. */
25527 + uint32_t dseg_1_address[2]; /* Data segment 1 address. */
25528 + uint32_t dseg_1_length; /* Data segment 1 length. */
25529 + uint32_t dseg_2_address[2]; /* Data segment 2 address. */
25530 + uint32_t dseg_2_length; /* Data segment 2 length. */
25531 + uint32_t dseg_3_address[2]; /* Data segment 3 address. */
25532 + uint32_t dseg_3_length; /* Data segment 3 length. */
25533 + uint32_t dseg_4_address[2]; /* Data segment 4 address. */
25534 + uint32_t dseg_4_length; /* Data segment 4 length. */
25535 +} cont_a64_entry_t;
25538 + * ISP queue - status entry structure definition.
25540 +#define STATUS_TYPE 0x03 /* Status entry. */
25541 +#define STS_SENSE_BUF_LEN 32
25543 + uint8_t entry_type; /* Entry type. */
25544 + uint8_t entry_count; /* Entry count. */
25545 + uint8_t sys_define; /* System defined. */
25546 + uint8_t entry_status; /* Entry Status. */
25547 +#define RF_INV_E_ORDER BIT_5 /* Invalid entry order. */
25548 +#define RF_INV_E_COUNT BIT_4 /* Invalid entry count. */
25549 +#define RF_INV_E_PARAM BIT_3 /* Invalid entry parameter. */
25550 +#define RF_INV_E_TYPE BIT_2 /* Invalid entry type. */
25551 +#define RF_BUSY BIT_1 /* Busy */
25552 + uint32_t handle; /* System handle. */
25553 + uint16_t scsi_status; /* SCSI status. */
25554 + uint16_t comp_status; /* Completion status. */
25555 + uint16_t state_flags; /* State flags. */
25556 + uint16_t status_flags; /* Status flags. */
25557 +#define IOCBSTAT_SF_LOGO BIT_13 /* Logo after 2 abts w/no */
25558 + /* response (2 sec) */
25559 + uint16_t rsp_info_len; /* Response Info Length. */
25560 + uint16_t req_sense_length; /* Request sense data length. */
25561 + uint32_t residual_length; /* Residual transfer length. */
25562 + uint8_t rsp_info[8]; /* FCP response information. */
25563 + /* Request sense data. */
25564 + uint8_t req_sense_data[STS_SENSE_BUF_LEN];
25565 +} sts_entry_t, response_t;
25568 + * ISP queue - marker entry structure definition.
25570 +#define MARKER_TYPE 0x04 /* Marker entry. */
25572 + uint8_t entry_type; /* Entry type. */
25573 + uint8_t entry_count; /* Entry count. */
25574 + uint8_t sys_define; /* System defined. */
25575 + uint8_t entry_status; /* Entry Status. */
25576 + uint32_t sys_define_2; /* System defined. */
25577 +#if defined(EXTENDED_IDS)
25578 + uint16_t target; /* SCSI ID */
25580 + uint8_t reserved;
25581 + uint8_t target; /* SCSI ID */
25583 + uint8_t modifier; /* Modifier (7-0). */
25584 +#define MK_SYNC_ID_LUN 0 /* Synchronize ID/LUN */
25585 +#define MK_SYNC_ID 1 /* Synchronize ID */
25586 +#define MK_SYNC_ALL 2 /* Synchronize all ID/LUN */
25587 +#define MK_SYNC_LIP 3 /* Synchronize all ID/LUN, */
25588 + /* clear port changed, */
25589 + /* use sequence number. */
25590 + uint8_t reserved_1;
25591 + uint16_t sequence_number; /* Sequence number of event */
25592 + uint16_t lun; /* SCSI LUN */
25593 + uint8_t reserved_2[48];
25597 + * ISP queue - Status Contination entry structure definition.
25599 +#define STATUS_CONT_TYPE 0x10 /* Status contination entry */
25600 +#define EXT_STS_SENSE_BUF_LEN 60
25602 + uint8_t entry_type; /* Entry type. */
25603 + uint8_t entry_count; /* Entry count. */
25604 + uint8_t reserved;
25605 + uint8_t entry_status; /* Entry Status. */
25606 + /* Extended sense data. */
25607 + uint8_t req_sense_data[EXT_STS_SENSE_BUF_LEN];
25608 +} sts_cont_entry_t;
25611 + * ISP queue - Management Server entry structure definition.
25613 +#define MS_IOCB_TYPE 0x29 /* Management Server IOCB entry */
25615 + uint8_t entry_type; /* Entry type. */
25616 + uint8_t entry_count; /* Entry count. */
25617 + uint8_t sys_define; /* System defined. */
25618 + uint8_t entry_status; /* Entry Status. */
25619 + uint32_t handle1; /* System handle. */
25620 +#if defined(EXTENDED_IDS)
25621 + uint16_t loop_id;
25623 + uint8_t reserved;
25627 + uint16_t control_flags; /* Control flags. */
25628 + uint16_t reserved2;
25629 + uint16_t timeout;
25630 + uint16_t cmd_dsd_count;
25631 + uint16_t total_dsd_count;
25635 + uint16_t reserved3;
25636 + uint32_t handle2;
25637 + uint32_t rsp_bytecount;
25638 + uint32_t req_bytecount;
25639 + uint32_t dseg_req_address[2]; /* Data segment 0 address. */
25640 + uint32_t dseg_req_length; /* Data segment 0 length. */
25641 + uint32_t dseg_rsp_address[2]; /* Data segment 1 address. */
25642 + uint32_t dseg_rsp_length; /* Data segment 1 length. */
25643 +} ms_iocb_entry_t;
25647 + * ISP queue - Mailbox Command entry structure definition.
25649 +#define ET_MAILBOX_COMMAND 0x39
25650 +struct mbx_entry {
25651 + uint8_t entry_type;
25653 + uint8_t entry_count;
25654 + uint8_t sys_define1;
25655 + /* Use sys_define1 for source type */
25656 +#define SOURCE_SCSI 0x00
25657 +#define SOURCE_IP 0x01
25658 +#define SOURCE_VI 0x02
25659 +#define SOURCE_SCTP 0x03
25660 +#define SOURCE_MP 0x04
25661 +#define SOURCE_MPIOCTL 0x05
25663 + uint8_t entry_status;
25666 +#if defined(EXTENDED_IDS)
25667 + uint16_t loop_id;
25669 + uint8_t reserved_1;
25674 + uint16_t state_flags;
25675 + uint16_t status_flags;
25676 + uint16_t sys_define2[4];
25678 + /* Mailbox command completion status */
25679 +#define MBS_PORT_ID_IN_USE 0x4007
25680 +#define MBS_LOOP_ID_IN_USE 0x4008
25681 +#define MBS_ALL_LOOP_IDS_IN_USE 0x4009
25682 +#define MBS_NAME_SERVER_NOT_LOGGED_IN 0x400A
25685 + /* Fabric login mailbox command option bits */
25686 +#define MBC_NO_PLOGI_IF_LOGGED_IN 0x01
25687 +#define MBC_NO_PROCESS_LOGIN 0x02
25693 +#if defined(EXTENDED_IDS)
25696 + uint32_t reserved_2[6];
25698 + uint32_t reserved_2[7];
25703 + * ISP request and response queue entry sizes
25705 +#define RESPONSE_ENTRY_SIZE (sizeof(response_t))
25706 +#define REQUEST_ENTRY_SIZE (sizeof(request_t))
25709 + * ISP status entry - completion status definitions.
25711 +#define CS_COMPLETE 0x0 /* No errors */
25712 +#define CS_INCOMPLETE 0x1 /* Incomplete transfer of cmd. */
25713 +#define CS_DMA 0x2 /* A DMA direction error. */
25714 +#define CS_TRANSPORT 0x3 /* Transport error. */
25715 +#define CS_RESET 0x4 /* SCSI bus reset occurred */
25716 +#define CS_ABORTED 0x5 /* System aborted command. */
25717 +#define CS_TIMEOUT 0x6 /* Timeout error. */
25718 +#define CS_DATA_OVERRUN 0x7 /* Data overrun. */
25719 +#define CS_DATA_UNDERRUN 0x15 /* Data Underrun. */
25720 +#define CS_ABORT_MSG 0xE /* Target rejected abort msg. */
25721 +#define CS_DEV_RESET_MSG 0x12 /* Target rejected dev rst msg. */
25722 +#define CS_PORT_UNAVAILABLE 0x28 /* Port unavailable (selection timeout) */
25723 +#define CS_PORT_LOGGED_OUT 0x29 /* Port Logged Out */
25724 +#define CS_PORT_CONFIG_CHG 0x2A /* Port Configuration Changed */
25725 +#define CS_PORT_BUSY 0x2B /* Port Busy */
25726 +#define CS_BAD_PAYLOAD 0x80 /* Driver defined */
25727 +#define CS_UNKNOWN 0x81 /* Driver defined */
25728 +#define CS_RETRY 0x82 /* Driver defined */
25729 +#define CS_QUEUE_FULL 0x1c /* Target queue full*/
25732 + * ISP status entry - SCSI status byte bit definitions.
25734 +#define SS_MASK 0xfff /* Mask off reserved bits BIT_12-BIT_15*/
25735 +#define SS_RESIDUAL_UNDER BIT_11
25736 +#define SS_RESIDUAL_OVER BIT_10
25737 +#define SS_SENSE_LEN_VALID BIT_9
25738 +#if defined(ISP2100)
25739 +#define SS_RESIDUAL_LEN_VALID BIT_8
25741 +#define SS_RESPONSE_INFO_LEN_VALID BIT_8
25744 +#define SS_RESERVE_CONFLICT (BIT_4 | BIT_3)
25745 +#define SS_BUSY_CONDITION BIT_3
25746 +#define SS_CONDITION_MET BIT_2
25747 +#define SS_CHECK_CONDITION BIT_1
25750 + * 24 bit port ID type definition.
25753 + uint32_t b24 : 24;
25769 + * Switch info gathering structure.
25773 + uint8_t node_name[WWN_SIZE];
25774 + uint8_t port_name[WWN_SIZE];
25776 +#define SW_TYPE_SCSI BIT_0
25777 +#define SW_TYPE_IP BIT_1
25780 +//TODO This should be removed (simplified fcport list)
25784 + uint8_t name[WWN_SIZE];
25785 + uint8_t wwn[WWN_SIZE]; /* port name */
25786 + uint16_t loop_id;
25788 + /* flags bits defined as follows */
25789 +#define DEV_PUBLIC BIT_0
25790 +#define DEV_LUNMASK_SET BIT_1 /* some LUNs masked for this device */
25791 +#define DEV_TAPE_DEVICE BIT_2
25792 +#define DEV_RELOGIN BIT_3
25793 +#define DEV_PORT_DOWN BIT_4
25794 +#define DEV_CONFIGURED BIT_5
25795 +#define DEV_ABSENCE BIT_6
25796 +#define DEV_RETURN BIT_7
25797 +#define DEV_INITIATOR BIT_8
25798 +#define DEV_FLAG_VSA BIT_9
25799 + int port_login_retry_count;
25800 + uint8_t port_timer;
25803 +/* New device name list struct; used in configure_fabric. */
25806 + uint8_t name[WWN_SIZE];
25807 + uint8_t wwn[WWN_SIZE]; /* port name */
25809 +#define LOGOUT_PERFORMED 0x01
25813 + * Inquiry command structure.
25815 +#define INQ_SCSI_OPCODE 0x12
25816 +#define INQ_DATA_SIZE 36
25819 + * Inquiry mailbox IOCB packet definition.
25823 + cmd_a64_entry_t cmd;
25826 + uint8_t inq[INQ_DATA_SIZE];
25830 + * Report LUN command structure.
25832 +#define RPT_LUN_SCSI_OPCODE 0xA0
25833 +#define CHAR_TO_SHORT(a, b) (uint16_t)((uint8_t)b << 8 | (uint8_t)a)
25843 + uint8_t address_method : 2;
25846 + uint8_t unused[6];
25851 + rpt_lun_t lst[MAX_LUNS];
25855 + * Report Lun mailbox IOCB packet definition.
25859 + cmd_a64_entry_t cmd;
25862 + rpt_lun_lst_t list;
25863 +} rpt_lun_cmd_rsp_t;
25865 +//TODO Continue formatting
25867 + * SCSI Target Queue structure
25869 +typedef struct os_tgt {
25870 + struct os_lun *olun[MAX_LUNS]; /* LUN context pointer. */
25871 + uint8_t port_down_retry_count;
25872 + struct scsi_qla_host *ha;
25873 + uint32_t down_timer;
25875 + /* Persistent binding information */
25877 + uint8_t node_name[WWN_SIZE];
25878 + uint8_t port_name[WWN_SIZE];
25879 + struct fc_port *vis_port;
25882 +#define TGT_BUSY BIT_0 /* Reached hi-water mark */
25883 +#define TGT_TAGGED_QUEUE BIT_1 /* Tagged queuing. */
25887 + * SCSI LUN Queue structure
25889 +typedef struct os_lun {
25890 + struct fc_lun *fclun; /* FC LUN context pointer. */
25891 + spinlock_t q_lock; /* Lun Lock */
25893 + u_long io_cnt; /* total xfer count since boot */
25894 + u_long out_cnt; /* total outstanding IO count */
25895 + u_long w_cnt; /* total writes */
25896 + u_long r_cnt; /* total reads */
25897 + u_long avg_time; /* */
25899 + unsigned long q_flag;
25900 +#define LUN_MPIO_BUSY 2 /* Lun is changing paths */
25901 +#define LUN_SCSI_SCAN_DONE BIT_3 /* indicates the scsi scan is done */
25902 +#define LUN_EXEC_DELAYED 7 /* Lun execution is delayed */
25904 + u_long q_timeout; /* total command timeouts */
25905 + atomic_t q_timer; /* suspend timer */
25906 + uint32_t q_count; /* current count */
25907 + uint32_t q_max; /* maxmum count lun can be suspended */
25908 + uint8_t q_state; /* lun State */
25909 +#define LUN_STATE_READY 1 /* indicates the lun is ready for i/o */
25910 +#define LUN_STATE_RUN 2 /* indicates the lun has a timer running */
25911 +#define LUN_STATE_WAIT 3 /* indicates the lun is suspended */
25912 +#define LUN_STATE_TIMEOUT 4 /* indicates the lun has timed out */
25917 +/* LUN BitMask structure definition, array of 32bit words,
25918 + * 1 bit per lun. When bit == 1, the lun is masked.
25919 + * Most significant bit of mask[0] is lun 0, bit 24 is lun 7.
25921 +typedef struct lun_bit_mask {
25922 + /* Must allocate at least enough bits to accomodate all LUNs */
25923 +#if ((MAX_FIBRE_LUNS & 0x7) == 0)
25924 + UINT8 mask[MAX_FIBRE_LUNS >> 3];
25926 + uint8_t mask[(MAX_FIBRE_LUNS + 8) >> 3];
25931 + * Fibre channel port structure.
25933 +typedef struct fc_port {
25934 + struct list_head list;
25936 + struct list_head fcluns;
25938 + struct scsi_qla_host *ha;
25939 + struct scsi_qla_host *vis_ha; /* only used when suspending lun */
25941 + uint16_t loop_id;
25942 + uint16_t old_loop_id;
25944 + int16_t dev_id; /* index in fc_dev table */
25945 +#define FC_NO_LOOP_ID 0x100
25946 + uint8_t node_name[WWN_SIZE]; /* Big Endian. */
25947 + uint8_t port_name[WWN_SIZE]; /* Big Endian. */
25948 + uint8_t mp_byte; /* multi-path byte (not used) */
25949 + uint8_t cur_path; /* current path id */
25950 + int port_login_retry_count;
25952 + atomic_t state; /* port state */
25953 +#define FC_DEVICE_DEAD 1
25954 +#define FC_DEVICE_LOST 2
25955 +#define FC_ONLINE 3
25956 +#define FC_LOGIN_NEEDED 4
25959 +#define FC_FABRIC_DEVICE BIT_0
25960 +#define FC_TAPE_DEVICE BIT_1
25961 +#define FC_INITIATOR_DEVICE BIT_2
25962 +#define FC_CONFIG BIT_3
25963 +#define FC_VSA BIT_4
25964 +#define FC_HD_DEVICE BIT_5
25965 +#define FC_SUPPORT_RPT_LUNS BIT_6
25966 + atomic_t port_down_timer;
25967 + lun_bit_mask_t lun_mask;
25971 + * Fibre channel LUN structure.
25973 +typedef struct fc_lun {
25974 + struct list_head list;
25976 + fc_port_t *fcport;
25978 + uint8_t max_path_retries;
25980 +#define FC_DISCON_LUN BIT_0
25989 + struct list_head list;
25991 + uint8_t node_name[WWN_SIZE];
25992 + uint8_t port_name[WWN_SIZE];
25994 + uint16_t loop_id;
25998 + * Registered State Change Notification structures.
26006 + * Flash Database structures.
26008 +#define FLASH_DATABASE_0 0x1c000
26009 +#define FLASH_DATABASE_1 0x18000
26010 +#define FLASH_DATABASE_VERSION 1
26016 + uint8_t checksum;
26018 + uint8_t spares[8];
26023 + uint8_t name[WWN_SIZE];
26024 + uint8_t spares[8];
26030 + flash_node_t node[MAX_FIBRE_DEVICES];
26031 +}flash_database_t;
26032 +//TODO End formatting
26035 + * FC-CT interface
26037 + * NOTE: All structures are in big-endian in form.
26040 +#define CT_REJECT_RESPONSE 0x8001
26041 +#define CT_ACCEPT_RESPONSE 0x8002
26043 +#define NS_N_PORT_TYPE 0x01
26044 +#define NS_NL_PORT_TYPE 0x02
26045 +#define NS_NX_PORT_TYPE 0x7F
26047 +#define GA_NXT_CMD 0x100
26048 +#define GA_NXT_REQ_SIZE (16 + 4)
26049 +#define GA_NXT_RSP_SIZE (16 + 620)
26051 +#define GID_PT_CMD 0x1A1
26052 +#define GID_PT_REQ_SIZE (16 + 4)
26053 +#define GID_PT_RSP_SIZE (16 + (MAX_FIBRE_DEVICES * 4))
26055 +#define GPN_ID_CMD 0x112
26056 +#define GPN_ID_REQ_SIZE (16 + 4)
26057 +#define GPN_ID_RSP_SIZE (16 + 8)
26059 +#define GNN_ID_CMD 0x113
26060 +#define GNN_ID_REQ_SIZE (16 + 4)
26061 +#define GNN_ID_RSP_SIZE (16 + 8)
26063 +#define GFT_ID_CMD 0x117
26064 +#define GFT_ID_REQ_SIZE (16 + 4)
26065 +#define GFT_ID_RSP_SIZE (16 + 32)
26067 +#define RFT_ID_CMD 0x217
26068 +#define RFT_ID_REQ_SIZE (16 + 4 + 32)
26069 +#define RFT_ID_RSP_SIZE 16
26071 +#define RFF_ID_CMD 0x21F
26072 +#define RFF_ID_REQ_SIZE (16 + 4 + 2 + 1 + 1)
26073 +#define RFF_ID_RSP_SIZE 16
26075 +#define RNN_ID_CMD 0x213
26076 +#define RNN_ID_REQ_SIZE (16 + 4 + 8)
26077 +#define RNN_ID_RSP_SIZE 16
26079 +#define RSNN_NN_CMD 0x239
26080 +#define RSNN_NN_REQ_SIZE (16 + 8 + 1 + 255)
26081 +#define RSNN_NN_RSP_SIZE 16
26083 +/* CT command header -- request/response common fields */
26084 +struct ct_cmd_hdr {
26085 + uint8_t revision;
26086 + uint8_t in_id[3];
26088 + uint8_t gs_subtype;
26090 + uint8_t reserved;
26093 +/* CT command request */
26094 +struct ct_sns_req {
26095 + struct ct_cmd_hdr header;
26096 + uint16_t command;
26097 + uint16_t max_rsp_size;
26098 + uint32_t reserved;
26101 + /* GA_NXT, GPN_ID, GNN_ID, GFT_ID */
26103 + uint8_t reserved;
26104 + uint8_t port_id[3];
26108 + uint8_t port_type;
26111 + uint8_t reserved;
26115 + uint8_t reserved;
26116 + uint8_t port_id[3];
26117 + uint8_t fc4_types[32];
26121 + uint8_t reserved;
26122 + uint8_t port_id[3];
26123 + uint16_t reserved2;
26124 + uint8_t fc4_feature;
26125 + uint8_t fc4_type;
26129 + uint8_t reserved;
26130 + uint8_t port_id[3];
26131 + uint8_t node_name[8];
26135 + uint8_t node_name[8];
26136 + uint8_t name_len;
26137 + uint8_t sym_node_name[255];
26142 +/* CT command response header */
26143 +struct ct_rsp_hdr {
26144 + struct ct_cmd_hdr header;
26145 + uint16_t response;
26146 + uint16_t residual;
26147 + uint8_t reserved;
26148 + uint8_t reason_code;
26149 + uint8_t explanation_code;
26150 + uint8_t vendor_unique;
26153 +struct ct_sns_gid_pt_data {
26154 + uint8_t control_byte;
26155 + uint8_t port_id[3];
26158 +struct ct_sns_rsp {
26159 + struct ct_rsp_hdr header;
26163 + uint8_t port_type;
26164 + uint8_t port_id[3];
26165 + uint8_t port_name[8];
26166 + uint8_t sym_port_name_len;
26167 + uint8_t sym_port_name[255];
26168 + uint8_t node_name[8];
26169 + uint8_t sym_node_name_len;
26170 + uint8_t sym_node_name[255];
26171 + uint8_t init_proc_assoc[8];
26172 + uint8_t node_ip_addr[16];
26173 + uint8_t class_of_service[4];
26174 + uint8_t fc4_types[32];
26175 + uint8_t ip_address[16];
26176 + uint8_t fabric_port_name[8];
26177 + uint8_t reserved;
26178 + uint8_t hard_address[3];
26182 + struct ct_sns_gid_pt_data entries[MAX_FIBRE_DEVICES];
26186 + uint8_t port_name[8];
26190 + uint8_t node_name[8];
26194 + uint8_t fc4_types[32];
26199 +struct ct_sns_pkt {
26201 + struct ct_sns_req req;
26202 + struct ct_sns_rsp rsp;
26206 +#if defined(ISP2100)
26207 +#define GN_LIST_LENGTH 126 * sizeof(port_list_entry_t)
26209 +#define GN_LIST_LENGTH 256 * sizeof(port_list_entry_t)
26213 + * Structure used in Get Port List mailbox command (0x75).
26216 + uint8_t name[WWN_SIZE];
26217 + uint16_t loop_id;
26218 +} port_list_entry_t;
26221 + * Structure used for device info.
26224 + uint8_t name[WWN_SIZE];
26225 + uint8_t wwn[WWN_SIZE];
26226 + uint16_t loop_id;
26227 + uint8_t port_id[3];
26230 +//TODO Complete Formatting...
26232 +/* Mailbox command completion status */
26233 +#define MBS_PORT_ID_IN_USE 0x4007
26234 +#define MBS_LOOP_ID_IN_USE 0x4008
26235 +#define MBS_ALL_LOOP_IDS_IN_USE 0x4009
26236 +#define MBS_NAME_SERVER_NOT_LOGGED_IN 0x400A
26239 +#define MAX_IOCTL_WAIT_THREADS 32
26240 +typedef struct _wait_q_t {
26242 +#define WQ_IN_USE 0x1
26244 + struct semaphore wait_q_sem;
26245 + struct _wait_q_t *pnext;
26248 +typedef struct hba_ioctl{
26250 + /* Ioctl cmd serialization */
26251 + uint16_t access_bits; /* bits should be used atomically */
26252 +#define IOCTL_ACTIVE 1 /* first bit */
26253 +#define IOCTL_WANT 2 /* 2nd bit */
26255 + spinlock_t wait_q_lock; /* IOCTL wait_q Queue Lock */
26256 + wait_q_t wait_q_arr[MAX_IOCTL_WAIT_THREADS];
26257 + wait_q_t *wait_q_head;
26258 + wait_q_t *wait_q_tail;
26260 + /* Passthru cmd/completion */
26261 + struct semaphore cmpl_sem;
26262 + struct timer_list cmpl_timer;
26263 + uint8_t ioctl_tov;
26264 + uint8_t SCSIPT_InProgress;
26265 + uint8_t MSIOCB_InProgress;
26267 + os_tgt_t *ioctl_tq;
26268 + os_lun_t *ioctl_lq;
26271 + void *aen_tracking_queue;/* points to async events buffer */
26272 + uint8_t aen_q_head; /* index to the current head of q */
26273 + uint8_t aen_q_tail; /* index to the current tail of q */
26277 +#define IOCTL_OPEN BIT_0
26278 +#define IOCTL_AEN_TRACKING_ENABLE BIT_1
26279 + uint8_t *scrap_mem; /* per ha scrap buf for ioctl usage */
26280 + uint32_t scrap_mem_size; /* total size */
26281 + uint32_t scrap_mem_used; /* portion used */
26283 +} hba_ioctl_context;
26285 +/* Mailbox command semaphore queue for command serialization */
26286 +typedef struct _mbx_cmdq_t {
26287 + struct semaphore cmd_sem;
26288 + struct _mbx_cmdq_t *pnext;
26292 + * Linux Host Adapter structure
26294 +typedef struct scsi_qla_host
26296 + struct list_head list;
26298 + /* Linux adapter configuration data */
26299 + struct Scsi_Host *host; /* pointer to host data */
26300 + struct pci_dev *pdev;
26305 + device_reg_t *iobase; /* Base Memory-mapped I/O address */
26306 + volatile unsigned char *mmpbase; /* memory mapped address */
26308 + struct qla_board_info *brd_info;
26309 + uint16_t fw_major_version;
26310 + uint16_t fw_minor_version;
26311 + uint16_t fw_subminor_version;
26312 + uint16_t fw_attributes;
26313 + uint32_t fw_transfer_size;
26315 + uint16_t fw_options1;
26316 + uint16_t fw_options2;
26317 + uint16_t fw_options3;
26318 + uint8_t fw_seriallink_options[2];
26320 + ms_iocb_entry_t *ms_iocb;
26321 + dma_addr_t ms_iocb_dma;
26322 + struct ct_sns_pkt *ct_sns;
26323 + dma_addr_t ct_sns_dma;
26325 + uint16_t isp_ctrl_status;
26327 + uint16_t revision;
26329 + u_long actthreads;
26330 + u_long ipreq_cnt;
26332 + u_long spurious_int;
26333 + uint32_t total_isr_cnt; /* Interrupt count */
26334 + uint32_t total_isp_aborts; /* controller err cnt */
26335 + uint32_t total_lip_cnt; /* LIP cnt */
26336 + uint32_t total_dev_errs; /* device error cnt */
26337 + uint32_t total_ios; /* IO cnt */
26338 + uint64_t total_bytes; /* xfr byte cnt */
26340 + /* Adapter I/O statistics for failover */
26341 + uint64_t IosRequested;
26342 + uint64_t BytesRequested;
26343 + uint64_t IosExecuted;
26344 + uint64_t BytesExecuted;
26346 + /* ISP connection configuration data */
26347 + uint16_t max_public_loop_ids;
26348 + uint16_t min_external_loopid; /* First external loop Id */
26349 + uint8_t current_topology; /* Current ISP configuration */
26350 + uint8_t prev_topology; /* Previous ISP configuration */
26351 + #define ISP_CFG_NL 1
26352 + #define ISP_CFG_N 2
26353 + #define ISP_CFG_FL 4
26354 + #define ISP_CFG_F 8
26355 + uint8_t id; /* Host adapter SCSI id */
26356 + uint16_t loop_id; /* Host adapter loop id */
26357 + port_id_t d_id; /* Host adapter port id */
26359 + uint8_t operating_mode; /* current F/W operating mode */
26362 + #define LOOP_P2P 2
26363 + #define P2P_LOOP 3
26365 + uint8_t active_fc4_types;/* active fc4 types */
26366 + uint8_t current_speed; /* current F/W operating speed */
26368 + /* NVRAM configuration data */
26369 + uint16_t loop_reset_delay; /* Loop reset delay. */
26370 + uint16_t hiwat; /* High water mark per device. */
26371 + uint16_t execution_throttle; /* queue depth */
26372 + uint16_t minimum_timeout; /* Minimum timeout. */
26373 + uint8_t retry_count;
26374 + uint8_t login_timeout;
26375 + int port_down_retry_count;
26376 + uint8_t loop_down_timeout;
26377 + uint16_t max_probe_luns;
26378 + uint16_t max_luns;
26379 + uint16_t max_targets;
26381 + /* Fibre Channel Device List. */
26382 + struct list_head fcports;
26384 + /* OS target queue pointers. */
26385 + os_tgt_t *otgt[MAX_FIBRE_DEVICES];
26387 + /* Fibre Channel Device Database and LIP sequence. */
26388 + fcdev_t fc_db[MAX_FIBRE_DEVICES]; /* Driver database. */
26389 + uint32_t flash_db; /* Flash database address in use. */
26390 + fabricid_t fabricid[MAX_FIBRE_DEVICES]; /* Fabric ids table . */
26391 + uint32_t flash_seq; /* Flash database seq # in use. */
26392 + volatile uint16_t lip_seq; /* LIP sequence number. */
26394 + /* Tracks host adapters we find */
26395 + struct list_head fcinitiators; /* Initiator database */
26397 + /* RSCN queue. */
26398 + rscn_t rscn_queue[MAX_RSCN_COUNT];
26399 + uint8_t rscn_in_ptr;
26400 + uint8_t rscn_out_ptr;
26402 + /* Doneq bottom half handler */
26403 + struct work_struct run_qla_task;
26405 + /* __get_free_pages() srb_t pool */
26407 + int srb_pool_order;
26410 + * Need to hold the list_lock with irq's disabled in order to
26411 + * access the following list.
26412 + * This list_lock is of lower priority than the io_request_lock.
26414 + /*********************************************************/
26415 + spinlock_t list_lock; /* lock to guard lists which
26417 + struct list_head retry_queue; /* watchdog queue */
26418 + struct list_head done_queue; /* job on done queue */
26419 + struct list_head failover_queue; /* failover list link. */
26420 + struct list_head free_queue; /* SRB free queue */
26421 + struct list_head scsi_retry_queue; /* SCSI retry queue */
26423 + struct list_head pending_queue; /* SCSI command pending queue */
26425 + /*********************************************************/
26427 + /* This spinlock is used to protect "io transactions", you must
26428 + * aquire it before doing any IO to the card, eg with RD_REG*() and
26429 + * WRT_REG*() for the duration of your entire commandtransaction.
26431 + * This spinlock is of lower priority than the io request lock.
26434 + spinlock_t hardware_lock;
26436 + /* Linux kernel thread */
26438 + struct task_struct *dpc_handler; /* kernel thread */
26439 + struct semaphore *dpc_notify; /* requester waits for DPC on this semaphore */
26440 + struct semaphore dpc_sem; /* DPC's semaphore */
26443 + int dpc_should_die;
26444 + struct completion dpc_inited;
26445 + struct completion dpc_exited;
26446 + struct semaphore *dpc_wait;
26448 + uint8_t dpc_active; /* DPC routine is active */
26450 + /* Received ISP mailbox data. */
26451 + volatile uint16_t mailbox_out[MAILBOX_REGISTER_COUNT];
26453 + /* Outstandings ISP commands. */
26454 + srb_t *outstanding_cmds[MAX_OUTSTANDING_COMMANDS];
26455 + uint32_t current_outstanding_cmd;
26457 + /* ISP ring lock, rings, and indexes */
26458 + dma_addr_t request_dma; /* Physical address. */
26459 + request_t *request_ring; /* Base virtual address */
26460 + request_t *request_ring_ptr; /* Current address. */
26461 + uint16_t req_ring_index; /* Current index. */
26462 + uint16_t req_q_cnt; /* Number of available entries. */
26464 + dma_addr_t response_dma; /* Physical address. */
26465 + response_t *response_ring; /* Base virtual address */
26466 + response_t *response_ring_ptr; /* Current address. */
26467 + uint16_t rsp_ring_index; /* Current index. */
26469 +#if defined(FC_IP_SUPPORT)
26470 + /* Data for IP support */
26471 + uint8_t ip_port_name[WWN_SIZE];
26473 + struct risc_rec_entry *risc_rec_q; /* RISC receive queue */
26474 + dma_addr_t risc_rec_q_dma; /* physical address */
26475 + uint16_t rec_entries_in;
26476 + uint16_t rec_entries_out;
26478 + struct send_cb *active_scb_q[MAX_SEND_PACKETS];
26479 + uint32_t current_scb_q_idx;
26482 + uint16_t header_size;
26483 + uint16_t max_receive_buffers;
26484 + struct buffer_cb *receive_buffers;
26485 + uint32_t receive_buff_data_size;
26487 + void (*send_completion_routine)
26488 + (struct send_cb *scb);
26489 + void *receive_packets_context;
26490 + void (*receive_packets_routine)
26491 + (void *context, struct buffer_cb *bcb);
26492 + void *notify_context;
26493 + void (*notify_routine)
26494 + (void *context, uint32_t type);
26496 + struct ip_device ipdev_db[QLLAN_MAX_IP_DEVICES];
26497 + struct ip_device *ipdev_db_next_free;
26498 + struct ip_device *ipdev_db_top;
26499 + struct ip_device *ipdev_db_bottom;
26502 + /* Firmware Initialization Control Block data */
26503 + dma_addr_t init_cb_dma; /* Physical address. */
26504 + init_cb_t *init_cb;
26506 + /* Timeout timers. */
26507 + uint8_t queue_restart_timer;
26508 + atomic_t loop_down_timer; /* loop down timer */
26509 + uint8_t loop_down_abort_time; /* port down timer */
26510 + uint32_t timer_active;
26511 + uint32_t forceLip;
26512 + struct timer_list timer;
26514 + /* These are used by mailbox operations. */
26516 + unsigned long mbx_cmd_flags;
26517 +#define MBX_CMD_ACTIVE 1 /* first bit */
26518 +#define MBX_CMD_WANT 2 /* 2nd bit */
26519 +#define MBX_INTERRUPT 3 /* 3rd bit */
26520 +#define MBX_INTR_WAIT 4 /* 4rd bit */
26522 + spinlock_t mbx_reg_lock; /* Mbx Cmd Register Lock */
26523 + spinlock_t mbx_q_lock; /* Mbx Active Cmd Queue Lock */
26524 + spinlock_t mbx_bits_lock; /* Mailbox access bits Lock */
26526 + uint32_t mbx_lock_bits; /* controlled by mbx_bits_lock */
26527 +#define MBX_CMD_LOCK 1 /* first bit */
26528 +#define MBX_CMD_WANT 2 /* 2nd bit */
26530 + struct semaphore mbx_intr_sem; /* Used for completion notification */
26532 + mbx_cmdq_t *mbx_sem_pool_head; /* Head Pointer to a list of
26533 + * recyclable mbx semaphore pool
26534 + * to be used during run time.
26536 + mbx_cmdq_t *mbx_sem_pool_tail; /* Tail Pointer to semaphore pool*/
26537 +#define MBQ_INIT_LEN 16 /* initial mbx sem pool q len. actual len may vary */
26539 + mbx_cmdq_t *mbx_q_head; /* Head Pointer to sem q for active cmds */
26540 + mbx_cmdq_t *mbx_q_tail; /* Tail Pointer to sem q for active cmds */
26543 + uint32_t retry_q_cnt;
26544 + uint32_t scsi_retry_q_cnt;
26545 + uint32_t failover_cnt;
26547 + uint8_t *cmdline;
26549 + uint32_t login_retry_count;
26553 + uint32_t online :1; /* 0 */
26554 + uint32_t enable_64bit_addressing :1; /* 1 */
26555 + uint32_t mbox_int :1; /* 2 */
26556 + uint32_t mbox_busy :1; /* 3 */
26557 + // UNUSED and UNASSIGNED
26558 + uint32_t port_name_used :1; /* 4 */
26559 + uint32_t failover_enabled :1; /* 5 */
26560 + uint32_t watchdog_enabled :1; /* 6 */
26561 + uint32_t cfg_suspended :1; /* 7 */
26563 + uint32_t disable_host_adapter :1; /* 8 */
26564 + uint32_t rscn_queue_overflow :1; /* 9 */
26565 + uint32_t reset_active :1; /* 10 */
26566 + uint32_t link_down_error_enable :1; /* 11 */
26568 + uint32_t disable_risc_code_load :1; /* 12 */
26569 + uint32_t set_cache_line_size_1 :1; /* 13 */
26570 + uint32_t enable_target_mode :1; /* 14 */
26571 + uint32_t disable_luns :1; /* 15 */
26573 + uint32_t enable_lip_reset :1; /* 16 */
26574 + uint32_t enable_lip_full_login :1; /* 17 */
26575 + uint32_t enable_target_reset :1; /* 18 */
26576 + uint32_t updated_fc_db :1; /* 19 */
26578 + uint32_t enable_flash_db_update :1; /* 20 */
26579 + uint32_t in_isr :1; /* 21 */
26580 + uint32_t dpc_sched :1; /* 23 */
26582 + uint32_t nvram_config_done :1; /* 24 */
26583 + uint32_t update_config_needed :1; /* 25 */
26584 + uint32_t management_server_logged_in :1; /* 26 */
26585 +#if defined(FC_IP_SUPPORT)
26586 + uint32_t enable_ip :1; /* 27 */
26591 + uint32_t device_flags;
26592 +#define DFLG_LOCAL_DEVICES BIT_0
26593 +#define DFLG_RETRY_LOCAL_DEVICES BIT_1
26594 +#define DFLG_FABRIC_DEVICES BIT_2
26595 +#define SWITCH_FOUND BIT_3
26596 +#define DFLG_NO_CABLE BIT_4
26598 + unsigned long cpu_flags;
26600 + uint8_t marker_needed;
26601 + uint8_t missing_targets;
26602 + uint8_t sns_retry_cnt;
26603 + uint8_t cmd_wait_cnt;
26606 + unsigned long dpc_flags;
26607 +#define RESET_MARKER_NEEDED 0 /* initiate sending a marker to ISP */
26608 +#define RESET_ACTIVE 1
26609 +#define ISP_ABORT_NEEDED 2 /* initiate ISP Abort */
26610 +#define ABORT_ISP_ACTIVE 3 /* isp abort in progress */
26612 +#define LOOP_RESYNC_NEEDED 4 /* initiate a configure fabric sequence */
26613 +#define LOOP_RESYNC_ACTIVE 5
26614 +#define COMMAND_WAIT_NEEDED 6
26615 +#define COMMAND_WAIT_ACTIVE 7
26617 +#define LOCAL_LOOP_UPDATE 8 /* Perform a local loop update */
26618 +#define RSCN_UPDATE 9 /* Perform a RSCN update */
26619 +#define MAILBOX_RETRY 10
26620 +#define ISP_RESET_NEEDED 11 /* Initiate a ISP reset ??? */
26622 +#define FAILOVER_EVENT_NEEDED 12
26623 +#define FAILOVER_EVENT 13
26624 +#define FAILOVER_NEEDED 14
26625 +#define LOOP_RESET_NEEDED 15
26627 +#define DEVICE_RESET_NEEDED 16
26628 +#define DEVICE_ABORT_NEEDED 17
26629 +#define SCSI_RESTART_NEEDED 18 /* Processes any requests in scsi retry queue */
26630 +#define PORT_RESTART_NEEDED 19 /* Processes any requests in retry queue */
26632 +#define RESTART_QUEUES_NEEDED 20 /* Restarts requeusts in the lun queue */
26633 +#define ABORT_QUEUES_NEEDED 21
26634 +#define RELOGIN_NEEDED 22
26635 +#define LOGIN_RETRY_NEEDED 23 /* initiates any fabric logins that are required */
26636 +#define REGISTER_FC4_NEEDED 24 /* set when need to register again.*/
26638 +#define TASKLET_SCHED 25 /* Tasklet is scheduled. */
26639 +#define DONE_RUNNING 26 /* Done task is running. */
26640 +#define ISP_ABORT_RETRY 27 /* ISP aborted. */
26643 +/* macro for timer to start dpc for handling mailbox commands */
26644 +#define MAILBOX_CMD_NEEDED (LOOP_RESET_NEEDED|DEVICE_RESET_NEEDED| \
26645 + DEVICE_ABORT_NEEDED|ISP_ABORT_NEEDED)
26647 + /* These 3 fields are used by the reset done in dpc thread */
26648 + uint16_t reset_bus_id;
26649 + uint16_t reset_tgt_id;
26650 + uint16_t reset_lun;
26652 + uint8_t interrupts_on;
26653 + uint8_t init_done;
26655 + volatile uint16_t loop_state;
26656 +#define LOOP_TIMEOUT 0x01
26657 +#define LOOP_DOWN 0x02
26658 +#define LOOP_UP 0x04
26659 +#define LOOP_UPDATE 0x08
26660 +#define LOOP_READY 0x10
26663 + uint32_t mbx_flags;
26664 +#define MBX_IN_PROGRESS BIT_0
26665 +#define MBX_BUSY BIT_1 /* Got the Access */
26666 +#define MBX_SLEEPING_ON_SEM BIT_2
26667 +#define MBX_POLLING_FOR_COMP BIT_3
26668 +#define MBX_COMPLETED BIT_4
26669 +#define MBX_TIMEDOUT BIT_5
26670 +#define MBX_ACCESS_TIMEDOUT BIT_6
26672 +/* following are new and needed for IOCTL support */
26673 + hba_ioctl_context *ioctl;
26674 + uint8_t node_name[WWN_SIZE];
26676 + uint8_t optrom_major;
26677 + uint8_t optrom_minor;
26679 + uint8_t nvram_version;
26682 + dma_addr_t ioctl_mem_phys;
26683 + uint32_t ioctl_mem_size;
26684 + uint32_t isp_abort_cnt;
26686 + /* HBA serial number */
26691 + /* oem related items */
26693 + uint8_t oem_specific[31];
26695 + uint32_t dump_done;
26696 + unsigned long done_q_cnt;
26697 + unsigned long pending_in_q;
26699 + uint32_t failover_type;
26700 + uint32_t failback_delay;
26701 + unsigned long cfg_flags;
26702 +#define CFG_ACTIVE 0 /* CFG during a failover, event update, or ioctl */
26703 + /* uint8_t cfg_active; */
26706 +#if defined(IOCB_THROLLE_USAGE)
26707 + uint32_t iocb_hiwat;
26708 + uint32_t iocb_cnt;
26709 + uint32_t iocb_overflow_cnt;
26713 + int srb_alloc_cnt; /*Number of allocated SRBs */
26715 + uint32_t mbox_trace;
26717 + uint32_t binding_type;
26718 +#define BIND_BY_PORT_NAME 0
26719 +#define BIND_BY_PORT_ID 1
26720 +#define BIND_BY_NODE_NAME 2
26722 + srb_t *status_srb; /* Keep track of Status Continuation Entries */
26724 + uint32_t dropped_frame_error_cnt;
26725 +} scsi_qla_host_t;
26727 +#if defined(__BIG_ENDIAN)
26728 +/* Big endian machine correction defines. */
26729 +#define LITTLE_ENDIAN_16(x) qla2x00_chg_endian((uint8_t *)&(x), 2)
26730 +#define LITTLE_ENDIAN_24(x) qla2x00_chg_endian((uint8_t *)&(x), 3)
26731 +#define LITTLE_ENDIAN_32(x) qla2x00_chg_endian((uint8_t *)&(x), 4)
26732 +#define LITTLE_ENDIAN_64(x) qla2x00_chg_endian((uint8_t *)&(x), 8)
26733 +#define BIG_ENDIAN_16(x)
26734 +#define BIG_ENDIAN_24(x)
26735 +#define BIG_ENDIAN_32(x)
26736 +#define BIG_ENDIAN_64(x)
26739 +/* Little endian machine correction defines. */
26740 +#define LITTLE_ENDIAN_16(x)
26741 +#define LITTLE_ENDIAN_24(x)
26742 +#define LITTLE_ENDIAN_32(x)
26743 +#define LITTLE_ENDIAN_64(x)
26744 +#define BIG_ENDIAN_16(x) qla2x00_chg_endian((uint8_t *)&(x), 2)
26745 +#define BIG_ENDIAN_24(x) qla2x00_chg_endian((uint8_t *)&(x), 3)
26746 +#define BIG_ENDIAN_32(x) qla2x00_chg_endian((uint8_t *)&(x), 4)
26747 +#define BIG_ENDIAN_64(x) qla2x00_chg_endian((uint8_t *)&(x), 8)
26752 + * Macros to help code, maintain, etc.
26754 +#define LOOP_TRANSITION(ha) ( test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || \
26755 + test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) )
26757 +#define LOOP_NOT_READY(ha) ( (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || \
26758 + test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags) || \
26759 + test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || \
26760 + test_bit(LOOP_RESYNC_ACTIVE, &ha->dpc_flags) || \
26761 + test_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags) || \
26762 + test_bit(COMMAND_WAIT_ACTIVE, &ha->dpc_flags)) || \
26763 + ha->loop_state == LOOP_DOWN)
26765 +#define LOOP_RDY(ha) ( !LOOP_NOT_READY(ha) )
26767 +#define TGT_Q(ha, t) (ha->otgt[t])
26768 +#define LUN_Q(ha, t, l) (TGT_Q(ha, t)->olun[l])
26769 +#define GET_LU_Q(ha, t, l) ( (TGT_Q(ha,t) != NULL)? TGT_Q(ha, t)->olun[l] : NULL)
26770 +#define PORT_DOWN_TIMER(ha, t) ((ha)->fc_db[(t)].port_timer)
26771 +#define PORT(ha, t) ((ha)->fc_db[(t)])
26772 +#define PORT_LOGIN_RETRY(fcport) ((fcport)->port_login_retry_count)
26774 +#define MBOX_TRACE(ha,b) {(ha)->mbox_trace |= (b);}
26776 +#define MBS_MASK 0x3fff
26777 +#define MBS_END 0x100
26778 +#define QLA2X00_SUCCESS (MBS_COMMAND_COMPLETE & MBS_MASK)
26779 +#define QLA2X00_FAILED (MBS_END + 2)
26780 +#define QLA2X00_FUNCTION_FAILED (MBS_END + 2)
26782 +#define KMEM_ZALLOC(siz,id) qla2x00_kmem_zalloc((siz), GFP_ATOMIC, (id))
26783 +#define KMEM_FREE(ip,siz) kfree((ip))
26788 +#define QLA_MBX_REG_LOCK(ha) \
26789 + spin_lock_irqsave(&(ha)->mbx_reg_lock, mbx_flags);
26790 +#define QLA_MBX_REG_UNLOCK(ha) \
26791 + spin_unlock_irqrestore(&(ha)->mbx_reg_lock, mbx_flags);
26794 +* Stat info for all adpaters
26796 +struct _qla2x00stats {
26797 + unsigned long mboxtout; /* mailbox timeouts */
26798 + unsigned long mboxerr; /* mailbox errors */
26799 + unsigned long ispAbort; /* ISP aborts */
26800 + unsigned long debugNo;
26801 + unsigned long loop_resync;
26802 + unsigned long outarray_full;
26803 + unsigned long retry_q_cnt;
26806 +#define SYS_DELAY(x) udelay(x);barrier()
26807 +#define QLA2100_DELAY(sec) mdelay(sec * HZ)
26808 +#define NVRAM_DELAY() udelay(10)
26809 +#define UDELAY(x) udelay(x)
26811 +#define CACHE_FLUSH(a) (RD_REG_WORD(a))
26812 +#define INVALID_HANDLE (MAX_OUTSTANDING_COMMANDS+1)
26814 +#define ABORTS_ACTIVE ((test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) || \
26815 + (test_bit(DEVICE_RESET_NEEDED, &ha->dpc_flags)) || \
26816 + (test_bit(DEVICE_ABORT_NEEDED, &ha->dpc_flags)) || \
26817 + (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)))
26820 + * Flash support definitions
26822 +#define FLASH_IMAGE_SIZE 131072
26824 +#include "qla_fo.h"
26825 +#include "qla_cfg.h"
26826 +#include "qla_gbl.h"
26827 +#include "qla_dbg.h"
26828 +#include "qla_inline.h"
26829 +#include "qla_listops.h"
26832 --- /dev/null Thu Apr 11 07:25:15 2002
26833 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_fo.c Thu Jul 3 15:34:42 2003
26835 +/********************************************************************************
26836 +* QLOGIC LINUX SOFTWARE
26838 +* QLogic ISP2x00 device driver for Linux 2.5.x
26839 +* Copyright (C) 2003 Qlogic Corporation
26840 +* (www.qlogic.com)
26842 +* This program is free software; you can redistribute it and/or modify it
26843 +* under the terms of the GNU General Public License as published by the
26844 +* Free Software Foundation; either version 2, or (at your option) any
26847 +* This program is distributed in the hope that it will be useful, but
26848 +* WITHOUT ANY WARRANTY; without even the implied warranty of
26849 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26850 +* General Public License for more details.
26852 +******************************************************************************
26853 +* Failover include file
26854 +******************************************************************************/
26856 +#include "qla_os.h"
26857 +#include "qla_def.h"
26860 +#include "qlfolimits.h"
26863 +#include "qla_fo.cfg"
26866 + * Global variables
26868 +SysFoParams_t qla_fo_params;
26873 +#if !defined(linux)
26874 +static int qla2x00_sdm_setup(EXT_IOCTL *cmd_stp, void *arg, int mode);
26876 +static uint32_t qla2x00_fo_get_params(PFO_PARAMS pp);
26877 +static uint32_t qla2x00_fo_set_params(PFO_PARAMS pp);
26878 +static uint8_t qla2x00_fo_count_retries(scsi_qla_host_t *ha, srb_t *sp);
26879 +static int qla2x00_fo_get_lun_data(EXT_IOCTL *pext,
26880 + FO_LUN_DATA_INPUT *bp, int mode);
26881 +static int qla2x00_fo_set_lun_data(EXT_IOCTL *pext,
26882 + FO_LUN_DATA_INPUT *bp, int mode);
26883 +static uint32_t qla2x00_fo_stats(FO_HBA_STAT *stat_p, uint8_t reset);
26884 +static int qla2x00_fo_set_target_data(EXT_IOCTL *pext,
26885 + FO_TARGET_DATA_INPUT *bp, int mode);
26886 +static int qla2x00_fo_get_target_data(EXT_IOCTL *pext,
26887 + FO_TARGET_DATA_INPUT *bp, int mode);
26890 + * qla2x00_get_hba
26891 + * Searches the hba structure chain for the requested instance
26892 + * aquires the mutex and returns a pointer to the hba structure.
26895 + * inst = adapter instance number.
26898 + * Return value is a pointer to the adapter structure or
26899 + * NULL if instance not found.
26902 + * Kernel context.
26905 +qla2x00_get_hba(int instance)
26908 + struct list_head *hal;
26909 + scsi_qla_host_t *ha;
26913 + read_lock(&qla_hostlist_lock);
26914 + list_for_each(hal, &qla_hostlist) {
26915 + ha = list_entry(hal, scsi_qla_host_t, list);
26917 + if (ha->instance == instance) {
26922 + read_unlock(&qla_hostlist_lock);
26924 + return (found ? ha : NULL);
26928 + * qla2x00_fo_stats
26929 + * Searches the hba structure chan for the requested instance
26930 + * aquires the mutex and returns a pointer to the hba structure.
26933 + * stat_p = Pointer to FO_HBA_STAT union.
26934 + * reset = Flag, TRUE = reset statistics.
26935 + * FALSE = return statistics values.
26941 + * Kernel context.
26944 +qla2x00_fo_stats(FO_HBA_STAT *stat_p, uint8_t reset)
26946 + int32_t inst, idx;
26947 + uint32_t rval = 0;
26948 + struct list_head *hal;
26949 + scsi_qla_host_t *ha;
26951 + DEBUG9(printk("%s: entered.\n", __func__);)
26953 + inst = stat_p->input.HbaInstance;
26954 + stat_p->info.HbaCount = 0;
26958 + read_lock(&qla_hostlist_lock);
26959 + list_for_each(hal, &qla_hostlist) {
26960 + ha = list_entry(hal, scsi_qla_host_t, list);
26962 + if (inst == FO_ADAPTER_ALL) {
26963 + stat_p->info.HbaCount++;
26964 + idx = ha->instance;
26965 + } else if (ha->instance == inst) {
26966 + stat_p->info.HbaCount = 1;
26969 + if (reset == TRUE) {
26970 + DEBUG9(printk("%s: reset stats.\n", __func__);)
26971 + ha->IosRequested = 0;
26972 + ha->BytesRequested = 0;
26973 + ha->IosExecuted = 0;
26974 + ha->BytesExecuted = 0;
26976 + DEBUG9(printk("%s: get stats for inst %d.\n",
26977 + __func__, inst);)
26980 + stat_p->info.StatEntry[idx].IosRequested =
26981 + ha->IosRequested;
26982 + stat_p->info.StatEntry[idx].BytesRequested =
26983 + ha->BytesRequested;
26984 + stat_p->info.StatEntry[idx].IosExecuted =
26986 + stat_p->info.StatEntry[idx].BytesExecuted =
26987 + ha->BytesExecuted;
26990 + if (inst != FO_ADAPTER_ALL)
26993 + read_unlock(&qla_hostlist_lock);
26995 + DEBUG9(printk("%s: exiting.\n", __func__);)
27001 + * qla2x00_fo_get_lun_data
27002 + * Get lun data from all devices attached to a HBA (FO_GET_LUN_DATA).
27003 + * Gets lun mask if failover not enabled.
27006 + * ha = pointer to adapter
27007 + * bp = pointer to buffer
27010 + * 0 on success or errno.
27013 + * Kernel context.
27016 +qla2x00_fo_get_lun_data(EXT_IOCTL *pext, FO_LUN_DATA_INPUT *bp, int mode)
27018 + scsi_qla_host_t *ha;
27019 + struct list_head *fcports, *fcpl;
27020 + fc_port_t *fcport;
27022 + mp_host_t *host = NULL;
27025 + mp_path_list_t *pathlist;
27031 + FO_EXTERNAL_LUN_DATA_ENTRY *u_entry, *entry;
27032 + FO_LUN_DATA_LIST *u_list, *list;
27035 + DEBUG9(printk("%s: entered.\n", __func__);)
27037 + ha = qla2x00_get_hba((int)bp->HbaInstance);
27040 + DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27041 + __func__, bp->HbaInstance);)
27043 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27047 + DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27048 + __func__, ha->instance, bp);)
27049 + DEBUG4(printk("%s: hba %p, buff %p bp->HbaInstance(%x).\n",
27050 + __func__, ha, bp, (int)bp->HbaInstance));
27052 + if (ha->flags.failover_enabled)
27053 + if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27054 + DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27055 + __func__, ha->instance);)
27056 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27060 + list = (FO_LUN_DATA_LIST *)qla2x00_kmem_zalloc(
27061 + sizeof(FO_LUN_DATA_LIST), GFP_ATOMIC, 12);
27062 + if (list == NULL) {
27063 + DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27064 + __func__, (int)sizeof(FO_LUN_DATA_LIST));)
27065 + pext->Status = EXT_STATUS_NO_MEMORY;
27066 + return (-ENOMEM);
27069 + entry = &list->DataEntry[0];
27071 + u_list = (FO_LUN_DATA_LIST *)pext->ResponseAdr;
27072 + u_entry = &u_list->DataEntry[0];
27074 + /* find the correct fcport list */
27075 + if (!ha->flags.failover_enabled)
27076 + fcports = &ha->fcports;
27078 + fcports = host->fcports;
27080 + /* Check thru this adapter's fcport list */
27082 + list_for_each(fcpl, fcports) {
27083 + fcport = list_entry(fcpl, fc_port_t, list);
27085 + memcpy(entry->NodeName,
27086 + fcport->node_name, EXT_DEF_WWN_NAME_SIZE);
27087 + memcpy(entry->PortName,
27088 + fcport->port_name, EXT_DEF_WWN_NAME_SIZE);
27090 + if (!ha->flags.failover_enabled) {
27092 + * Failover disabled. Just return LUN mask info
27093 + * in lun data entry of this port.
27095 + entry->TargetId = 0;
27096 + for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
27097 + if (!(ostgt = ha->otgt[cnt])) {
27101 + if (ostgt->vis_port == fcport) {
27102 + entry->TargetId = cnt;
27106 + if (cnt == MAX_FIBRE_DEVICES) {
27107 + /* Not found? For now just go to next port. */
27108 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_10)
27109 + uint8_t *tmp_name;
27111 + tmp_name = fcport->port_name;
27113 + printk("%s(%ld): ERROR - port "
27114 + "%02x%02x%02x%02x%02x%02x%02x%02x "
27115 + "not configured.\n",
27116 + __func__, ha->host_no,
27117 + tmp_name[0], tmp_name[1], tmp_name[2],
27118 + tmp_name[3], tmp_name[4], tmp_name[5],
27119 + tmp_name[6], tmp_name[7]);
27120 +#endif /* DEBUG */
27125 + /* Got a valid port */
27126 + list->EntryCount++;
27128 + for (lun = 0; lun < MAX_LUNS; lun++) {
27129 + /* set MSB if masked */
27130 + entry->Data[lun] = LUN_DATA_PREFERRED_PATH;
27131 + if (!EXT_IS_LUN_BIT_SET(&(fcport->lun_mask),
27133 + entry->Data[lun] |= LUN_DATA_ENABLED;
27137 + DEBUG9(printk("%s: got lun_mask for tgt %d\n",
27139 + DEBUG9(qla2x00_dump_buffer((char *)&(fcport->lun_mask),
27140 + sizeof(lun_bit_mask_t));)
27142 + ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27143 + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27146 + DEBUG9_10(printk("%s: u_entry %p verify write"
27147 + " error. list->EntryCount=%d.\n",
27148 + __func__, u_entry, list->EntryCount);)
27149 + pext->Status = EXT_STATUS_COPY_ERR;
27153 + ret = copy_to_user(u_entry, entry,
27154 + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27158 + DEBUG9_10(printk("%s: u_entry %p copy "
27159 + "error. list->EntryCount=%d.\n",
27160 + __func__, u_entry, list->EntryCount);)
27161 + pext->Status = EXT_STATUS_COPY_ERR;
27165 + copy_to_user(u_entry, entry,
27166 + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27168 + /* Go to next port */
27174 + * Failover is enabled. Go through the mp_devs list and return
27175 + * lun data in configured path.
27177 + for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27178 + dp = host->mp_devs[dev_no];
27183 + /* Lookup entry name */
27184 + if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27187 + if ((pathlist = dp->path_list) == NULL)
27190 + path = pathlist->last;
27191 + for (path_id = 0; path_id < pathlist->path_cnt;
27192 + path_id++, path = path->next) {
27194 + if (path->host != host)
27197 + if (!qla2x00_is_portname_equal(path->portname,
27198 + entry->PortName))
27201 + /* Got an entry */
27202 + entry->TargetId = dp->dev_id;
27203 + entry->Dev_No = path->id;
27204 + list->EntryCount++;
27206 + for (lun = 0; lun < MAX_LUNS; lun++) {
27207 + entry->Data[lun] =
27208 + path->lun_data.data[lun];
27211 + ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27212 + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27215 + DEBUG2_9_10(printk("%s: u_entry %p "
27216 + "verify wrt err. EntryCount=%d.\n",
27217 + __func__, u_entry, list->EntryCount);)
27218 + pext->Status = EXT_STATUS_COPY_ERR;
27222 + ret = copy_to_user(u_entry, entry,
27223 + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27226 + DEBUG2_9_10(printk("%s: u_entry %p "
27227 + "copy out err. EntryCount=%d.\n",
27228 + __func__, u_entry, list->EntryCount);)
27229 + pext->Status = EXT_STATUS_COPY_ERR;
27235 + DEBUG9(printk("%s: (output) get_lun_data - "
27236 + "u_entry(%p) - lun entry[%d] :\n",
27237 + __func__, u_entry,list->EntryCount - 1);)
27239 + DEBUG9(qla2x00_dump_buffer((void *)entry, 64);)
27242 + * We found the right path for this port.
27243 + * Continue with next port.
27248 + /* Continue with next port. */
27253 + DEBUG9(printk("%s: get_lun_data - entry count = [%d]\n",
27254 + __func__, list->EntryCount);)
27255 + DEBUG4(printk("%s: get_lun_data - entry count = [%d]\n",
27256 + __func__, list->EntryCount);)
27259 + ret = verify_area(VERIFY_WRITE, (void *)&u_list->EntryCount,
27260 + sizeof(list->EntryCount));
27263 + DEBUG2_9_10(printk("%s: u_list->EntryCount %p verify "
27264 + " write error. list->EntryCount=%d.\n",
27265 + __func__, u_entry, list->EntryCount);)
27266 + pext->Status = EXT_STATUS_COPY_ERR;
27268 + /* copy number of entries */
27269 + ret = copy_to_user(&u_list->EntryCount, &list->EntryCount,
27270 + sizeof(list->EntryCount));
27271 + pext->ResponseLen = FO_LUN_DATA_LIST_MAX_SIZE;
27275 + KMEM_FREE(list, sizeof(FO_LUN_DATA_LIST));
27277 + DEBUG9(printk("%s: exiting. ret=%d.\n", __func__, ret);)
27283 + * qla2x00_fo_set_lun_data
27284 + * Set lun data for the specified device on the attached hba
27285 + * (FO_SET_LUN_DATA).
27286 + * Sets lun mask if failover not enabled.
27289 + * bp = pointer to buffer
27292 + * 0 on success or errno.
27295 + * Kernel context.
27298 +qla2x00_fo_set_lun_data(EXT_IOCTL *pext, FO_LUN_DATA_INPUT *bp, int mode)
27300 + scsi_qla_host_t *ha;
27301 + fc_port_t *fcport;
27304 + mp_host_t *host = NULL;
27307 + mp_path_list_t *pathlist;
27312 + FO_LUN_DATA_LIST *u_list, *list;
27313 + FO_EXTERNAL_LUN_DATA_ENTRY *u_entry, *entry;
27315 + typedef struct _tagStruct {
27316 + FO_LUN_DATA_INPUT foLunDataInput;
27317 + FO_LUN_DATA_LIST foLunDataList;
27320 + com_struc *com_iter;
27323 + DEBUG9(printk("%s: entered.\n", __func__);)
27325 + ha = qla2x00_get_hba((int)bp->HbaInstance);
27328 + DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27329 + __func__, bp->HbaInstance);)
27331 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27335 + DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27336 + __func__, ha->instance, bp);)
27338 + if (ha->flags.failover_enabled)
27339 + if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27340 + DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27341 + __func__, ha->instance);)
27342 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27346 + list = (FO_LUN_DATA_LIST *)qla2x00_kmem_zalloc(
27347 + sizeof(FO_LUN_DATA_LIST), GFP_ATOMIC, 13);
27348 + if (list == NULL) {
27349 + DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27350 + __func__, (int)sizeof(FO_LUN_DATA_LIST));)
27351 + pext->Status = EXT_STATUS_NO_MEMORY;
27352 + return (-ENOMEM);
27355 + entry = &list->DataEntry[0];
27357 + /* get lun data list from user */
27358 + com_iter = (com_struc *)pext->RequestAdr;
27359 + u_list = &(com_iter->foLunDataList);
27360 + u_entry = &u_list->DataEntry[0];
27362 + ret = verify_area(VERIFY_READ, (void *)u_list,
27363 + sizeof(FO_LUN_DATA_LIST));
27366 + DEBUG2_9_10(printk("%s: u_list %p verify read error.\n",
27367 + __func__, u_list);)
27368 + pext->Status = EXT_STATUS_COPY_ERR;
27369 + KMEM_FREE(list, FO_LUN_DATA_LIST);
27373 + ret = copy_from_user(list, u_list, sizeof(FO_LUN_DATA_LIST));
27376 + DEBUG2_9_10(printk("%s: u_list %p copy error.\n",
27377 + __func__, u_list);)
27378 + pext->Status = EXT_STATUS_COPY_ERR;
27379 + KMEM_FREE(list, FO_LUN_DATA_LIST);
27383 + DEBUG2(printk("qla_fo_set_lun_data: pext->RequestAdr(%p) u_list (%p) "
27384 + "sizeof(FO_LUN_DATA_INPUT) =(%d) and 64 bytes...\n",
27385 + pext->RequestAdr, u_list,
27386 + (int)sizeof(FO_LUN_DATA_INPUT));)
27387 + DEBUG2(qla2x00_dump_buffer((void *)u_list, 64);)
27389 + for (i = 0; i < list->EntryCount; i++, u_entry++) {
27391 + ret = verify_area(VERIFY_READ, (void *)u_entry,
27392 + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27395 + DEBUG2_9_10(printk("%s: u_entry %p verify "
27396 + " read error.\n",
27397 + __func__, u_entry);)
27398 + pext->Status = EXT_STATUS_COPY_ERR;
27401 + ret = copy_from_user(entry, u_entry,
27402 + sizeof(FO_EXTERNAL_LUN_DATA_ENTRY));
27405 + DEBUG2_9_10(printk("%s: u_entry %p copy error.\n",
27406 + __func__, u_entry);)
27407 + pext->Status = EXT_STATUS_COPY_ERR;
27411 + if (!ha->flags.failover_enabled) {
27413 + * Failover disabled. Just find the port and set
27414 + * LUN mask values in lun_mask field of this port.
27417 + if (entry->TargetId >= MAX_FIBRE_DEVICES)
27421 + if (!(ostgt = ha->otgt[entry->TargetId]))
27425 + if (!(fcport = ostgt->vis_port))
27429 + for (lun = 0; lun < MAX_LUNS; lun++) {
27430 + /* set MSB if masked */
27431 + if (entry->Data[lun] | LUN_DATA_ENABLED) {
27432 + EXT_CLR_LUN_BIT(&(fcport->lun_mask),
27435 + EXT_SET_LUN_BIT(&(fcport->lun_mask),
27440 + /* Go to next entry */
27445 + * Failover is enabled. Go through the mp_devs list and set lun
27446 + * data in configured path.
27448 + for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27449 + dp = host->mp_devs[dev_no];
27454 + /* Lookup entry name */
27455 + if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27458 + if ((pathlist = dp->path_list) == NULL)
27461 + path = pathlist->last;
27462 + for (path_id = 0; path_id < pathlist->path_cnt;
27463 + path_id++, path = path->next) {
27465 + if (path->host != host)
27468 + if (!qla2x00_is_portname_equal(path->portname,
27469 + entry->PortName))
27472 + for (lun = 0; lun < MAX_LUNS; lun++) {
27473 + path->lun_data.data[lun] =
27474 + entry->Data[lun];
27475 + DEBUG4(printk("cfg_set_lun_data: lun "
27476 + "data[%d] = 0x%x \n", lun,
27477 + path->lun_data.data[lun]);)
27486 + KMEM_FREE(list, FO_LUN_DATA_LIST);
27488 + DEBUG9(printk("%s: exiting. ret = %d.\n", __func__, ret);)
27494 + * qla2x00_fo_get_target_data
27495 + * Get the target control byte for all devices attached to a HBA.
27498 + * bp = pointer to buffer
27501 + * 0 on success or errno.
27504 + * Kernel context.
27507 +qla2x00_fo_get_target_data(EXT_IOCTL *pext, FO_TARGET_DATA_INPUT *bp, int mode)
27509 + scsi_qla_host_t *ha;
27510 + struct list_head *fcports, *fcpl;
27511 + fc_port_t *fcport;
27513 + mp_host_t *host = NULL;
27516 + mp_path_list_t *pathlist;
27521 + FO_DEVICE_DATA *entry, *u_entry;
27525 + DEBUG9(printk("%s: entered.\n", __func__);)
27527 + ha = qla2x00_get_hba((int)bp->HbaInstance);
27530 + DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27531 + __func__, bp->HbaInstance);)
27533 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27537 + DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27538 + __func__, ha->instance, bp);)
27540 + if (ha->flags.failover_enabled)
27541 + if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27542 + DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27543 + __func__, ha->instance);)
27544 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27548 + entry = (FO_DEVICE_DATA *)qla2x00_kmem_zalloc(
27549 + sizeof(FO_DEVICE_DATA), GFP_ATOMIC, 14);
27550 + if (entry == NULL) {
27551 + DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27552 + __func__, (int)sizeof(FO_DEVICE_DATA));)
27553 + pext->Status = EXT_STATUS_NO_MEMORY;
27554 + return (-ENOMEM);
27557 + u_entry = (FO_DEVICE_DATA *) pext->ResponseAdr;
27559 + /* find the correct fcport list */
27560 + if (!ha->flags.failover_enabled)
27561 + fcports = &ha->fcports;
27563 + fcports = host->fcports;
27565 + /* Check thru this adapter's fcport list */
27568 + list_for_each(fcpl, fcports) {
27569 + fcport = list_entry(fcpl, fc_port_t, list);
27571 + if (i >= MAX_TARGETS)
27574 + memcpy(entry->WorldWideName,
27575 + fcport->node_name, EXT_DEF_WWN_NAME_SIZE);
27576 + memcpy(entry->PortName,
27577 + fcport->port_name, EXT_DEF_WWN_NAME_SIZE);
27579 + for (b = 0; b < 3 ; b++)
27580 + entry->PortId[b] = fcport->d_id.r.d_id[2-b];
27582 + if (!ha->flags.failover_enabled) {
27584 + * Failover disabled. Just find the port and return
27587 + for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
27588 + if (!(ostgt = ha->otgt[cnt])) {
27592 + if (ostgt->vis_port == fcport) {
27593 + entry->TargetId = cnt;
27597 + if (cnt == MAX_FIBRE_DEVICES) {
27598 + /* Not found? For now just go to next port. */
27599 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_10)
27600 + uint8_t *tmp_name;
27602 + tmp_name = fcport->port_name;
27604 + printk("fo_get_target_data(%ld): ERROR "
27605 + "port %02x%02x%02x%02x%02x%02x%02x%02x "
27606 + "not configured.\n", ha->host_no,
27607 + tmp_name[0], tmp_name[1], tmp_name[2],
27608 + tmp_name[3], tmp_name[4], tmp_name[5],
27609 + tmp_name[6], tmp_name[7]);
27610 +#endif /* DEBUG */
27615 + entry->MultipathControl = 0; /* always configured */
27617 + ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27618 + sizeof(FO_DEVICE_DATA));
27621 + DEBUG2_9_10(printk("%s: u_entry %p verify "
27622 + " wrt err. tgt id=%d.\n",
27623 + __func__, u_entry, cnt);)
27624 + pext->Status = EXT_STATUS_COPY_ERR;
27628 + ret = copy_to_user(u_entry, entry,
27629 + sizeof(FO_DEVICE_DATA));
27632 + DEBUG2_9_10(printk("%s: u_entry %p copy "
27633 + "out err. tgt id=%d.\n",
27634 + __func__, u_entry, cnt);)
27635 + pext->Status = EXT_STATUS_COPY_ERR;
27646 + * Failover is enabled. Go through the mp_devs list and
27647 + * get target data in configured path.
27649 + for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27650 + dp = host->mp_devs[dev_no];
27655 + /* Lookup entry name */
27656 + if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27659 + if ((pathlist = dp->path_list) == NULL)
27662 + path = pathlist->last;
27663 + for (path_id = 0; path_id < pathlist->path_cnt;
27664 + path_id++, path= path->next) {
27666 + if (path->host != host)
27669 + if (!qla2x00_is_portname_equal(path->portname,
27670 + entry->PortName))
27673 + entry->TargetId = dp->dev_id;
27674 + entry->Dev_No = path->id;
27675 + entry->MultipathControl = path->mp_byte;
27677 + DEBUG9(printk("cfg_get_target_data: path->id "
27678 + "= %d, target data = 0x%x \n",
27679 + path->id, path->mp_byte);)
27681 + ret = verify_area(VERIFY_WRITE, (void *)u_entry,
27682 + sizeof(FO_DEVICE_DATA));
27685 + DEBUG2_9_10(printk("%s: u_entry %p "
27686 + "verify wrt err. tgt id=%d.\n",
27687 + __func__, u_entry, dp->dev_id);)
27688 + pext->Status = EXT_STATUS_COPY_ERR;
27692 + ret = copy_to_user(u_entry, entry,
27693 + sizeof(FO_DEVICE_DATA));
27696 + DEBUG2_9_10(printk("%s: u_entry %p "
27697 + "copy out err. tgt id=%d.\n",
27698 + __func__, u_entry, dp->dev_id);)
27699 + pext->Status = EXT_STATUS_COPY_ERR;
27705 + /* Path found. Continue with next fcport */
27714 + pext->ResponseLen = sizeof(FO_DEVICE_DATABASE);
27717 + KMEM_FREE(entry, sizeof(FO_DEVICE_DATA));
27719 + DEBUG9(printk("%s: exiting. ret = %d.\n", __func__, ret);)
27725 + * qla2x00_fo_set_target_data
27726 + * Set multipath control byte for all devices on the attached hba
27729 + * bp = pointer to buffer
27732 + * 0 on success or errno.
27735 + * Kernel context.
27738 +qla2x00_fo_set_target_data(EXT_IOCTL *pext, FO_TARGET_DATA_INPUT *bp, int mode)
27740 + scsi_qla_host_t *ha;
27746 + mp_path_list_t *pathlist;
27749 + FO_DEVICE_DATA *entry, *u_entry;
27751 + DEBUG9(printk("%s: entered.\n", __func__);)
27753 + ha = qla2x00_get_hba((int)bp->HbaInstance);
27756 + DEBUG2_9_10(printk("%s: no ha matching inst %d.\n",
27757 + __func__, bp->HbaInstance);)
27759 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27763 + DEBUG9(printk("%s: ha inst %ld, buff %p.\n",
27764 + __func__, ha->instance, bp);)
27766 + if (!ha->flags.failover_enabled)
27767 + /* non-failover mode. nothing to be done. */
27770 + if ((host = qla2x00_cfg_find_host(ha)) == NULL) {
27771 + DEBUG2_9_10(printk("%s: no HOST for ha inst %ld.\n",
27772 + __func__, ha->instance);)
27773 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
27777 + entry = (FO_DEVICE_DATA *)qla2x00_kmem_zalloc(
27778 + sizeof(FO_DEVICE_DATA), GFP_ATOMIC, 15);
27779 + if (entry == NULL) {
27780 + DEBUG2_9_10(printk("%s: failed to alloc memory of size (%d)\n",
27781 + __func__, (int)sizeof(FO_DEVICE_DATA));)
27782 + pext->Status = EXT_STATUS_NO_MEMORY;
27783 + return (-ENOMEM);
27786 + u_entry = (FO_DEVICE_DATA *)(pext->RequestAdr +
27787 + sizeof(FO_TARGET_DATA_INPUT));
27789 + for (i = 0; i < MAX_TARGETS; i++, u_entry++) {
27790 + ret = verify_area(VERIFY_READ, (void *)u_entry,
27791 + sizeof(FO_DEVICE_DATA));
27794 + DEBUG2_9_10(printk("%s: u_entry %p verify read err.\n",
27795 + __func__, u_entry);)
27796 + pext->Status = EXT_STATUS_COPY_ERR;
27800 + ret = copy_from_user(entry, u_entry, sizeof(FO_DEVICE_DATA));
27804 + DEBUG2_9_10(printk("%s: u_entry %p copy error.\n",
27805 + __func__, u_entry);)
27806 + pext->Status = EXT_STATUS_COPY_ERR;
27810 + for (dev_no = 0; dev_no < MAX_MP_DEVICES; dev_no++) {
27811 + dp = host->mp_devs[dev_no];
27816 + /* Lookup entry name */
27817 + if (!qla2x00_is_portname_in_device(dp, entry->PortName))
27820 + if ((pathlist = dp->path_list) == NULL)
27823 + path = pathlist->last;
27824 + for (path_id = 0; path_id < pathlist->path_cnt;
27825 + path_id++, path= path->next) {
27827 + if (path->host != host)
27830 + if (!qla2x00_is_portname_equal(path->portname,
27831 + entry->PortName))
27834 + path->mp_byte = entry->MultipathControl;
27836 + DEBUG9(printk("cfg_set_target_data: %d target "
27837 + "data = 0x%x \n",
27838 + path->id,path->mp_byte);)
27841 + * If this is the visible path, then make it
27842 + * available on next reboot.
27844 + if (!((path->mp_byte & MP_MASK_HIDDEN) ||
27845 + (path->mp_byte & MP_MASK_UNCONFIGURED))) {
27846 + pathlist->visible = path->id;
27849 + /* Found path. Go to next entry. */
27856 + KMEM_FREE(entry, sizeof(FO_DEVICE_DATA));
27858 + DEBUG9(printk("%s: exiting. ret = %d.\n", __func__, ret);)
27865 + * qla2x00_fo_ioctl
27866 + * Provides functions for failover ioctl() calls.
27869 + * ha = adapter state pointer.
27870 + * ioctl_code = ioctl function to perform
27871 + * arg = Address of application EXT_IOCTL cmd data
27875 + * Return value is the ioctl rval_p return value.
27879 + * Kernel context.
27883 +qla2x00_fo_ioctl(scsi_qla_host_t *ha, int ioctl_code, void *ret_arg, int mode)
27885 + static EXT_IOCTL cmd_struct;
27887 + size_t in_size, out_size;
27889 + FO_PARAMS params;
27890 + FO_GET_PATHS path;
27891 + FO_SET_CURRENT_PATH set_path;
27892 + /* FO_HBA_STAT_INPUT stat; */
27893 + FO_HBA_STAT stat;
27894 + FO_LUN_DATA_INPUT lun_data;
27895 + FO_TARGET_DATA_INPUT target_data;
27899 + ENTER("qla2x00_fo_ioctl");
27900 + DEBUG9(printk("%s: entered. arg (%p):\n", __func__, ret_arg);)
27902 + memcpy(&cmd_struct, ret_arg, sizeof(cmd_struct));
27905 + * default case for this switch not needed,
27906 + * ioctl_code validated by caller.
27908 + in_size = out_size = 0;
27909 + switch (ioctl_code) {
27910 + case FO_CC_GET_PARAMS:
27911 + out_size = sizeof(FO_PARAMS);
27913 + case FO_CC_SET_PARAMS:
27914 + in_size = sizeof(FO_PARAMS);
27916 + case FO_CC_GET_PATHS:
27917 + in_size = sizeof(FO_GET_PATHS);
27919 + case FO_CC_SET_CURRENT_PATH:
27920 + in_size = sizeof(FO_SET_CURRENT_PATH);
27922 + case FO_CC_GET_HBA_STAT:
27923 + case FO_CC_RESET_HBA_STAT:
27924 + in_size = sizeof(FO_HBA_STAT_INPUT);
27926 + case FO_CC_GET_LUN_DATA:
27927 + in_size = sizeof(FO_LUN_DATA_INPUT);
27929 + case FO_CC_SET_LUN_DATA:
27930 + in_size = sizeof(FO_LUN_DATA_INPUT);
27932 + case FO_CC_GET_TARGET_DATA:
27933 + in_size = sizeof(FO_TARGET_DATA_INPUT);
27935 + case FO_CC_SET_TARGET_DATA:
27936 + in_size = sizeof(FO_TARGET_DATA_INPUT);
27940 + if (in_size != 0) {
27941 + if ((int)cmd_struct.RequestLen < in_size) {
27942 + cmd_struct.Status = EXT_STATUS_INVALID_PARAM;
27943 + cmd_struct.DetailStatus = EXT_DSTATUS_REQUEST_LEN;
27944 + DEBUG10(printk("%s: got invalie req len (%d).\n",
27945 + __func__, cmd_struct.RequestLen);)
27949 + rval = verify_area(VERIFY_READ,
27950 + (void *)cmd_struct.RequestAdr, in_size);
27953 + DEBUG2_9_10(printk("%s: req buf verify read "
27954 + "error. size=%d.\n",
27955 + __func__, in_size);)
27956 + cmd_struct.Status = EXT_STATUS_COPY_ERR;
27958 + rval = copy_from_user(&buff,
27959 + (void *)cmd_struct.RequestAdr, in_size);
27962 + DEBUG2_9_10(printk("%s: req buf copy error. "
27964 + __func__, in_size);)
27966 + cmd_struct.Status = EXT_STATUS_COPY_ERR;
27968 + DEBUG9(printk("qla2x00_fo_ioctl: req buf "
27969 + "copied ok.\n"));
27972 + } else if (out_size != 0 && (int)cmd_struct.ResponseLen < out_size) {
27973 + cmd_struct.Status = EXT_STATUS_BUFFER_TOO_SMALL;
27974 + cmd_struct.DetailStatus = out_size;
27975 + DEBUG10(printk("%s: got invalie resp len (%d).\n",
27976 + __func__, cmd_struct.ResponseLen);)
27979 + if (rval != 0 || cmd_struct.Status != 0)
27980 + goto done_fo_ioctl;
27982 + cmd_struct.Status = EXT_STATUS_OK;
27983 + cmd_struct.DetailStatus = EXT_STATUS_OK;
27985 + switch (ioctl_code) {
27986 + case FO_CC_GET_PARAMS:
27987 + rval = qla2x00_fo_get_params(&buff.params);
27989 + case FO_CC_SET_PARAMS:
27990 + rval = qla2x00_fo_set_params(&buff.params);
27992 + case FO_CC_GET_PATHS:
27993 + rval = qla2x00_cfg_get_paths(&cmd_struct,
27994 + &buff.path,mode);
27998 + case FO_CC_SET_CURRENT_PATH:
27999 + rval = qla2x00_cfg_set_current_path(&cmd_struct,
28000 + &buff.set_path,mode);
28002 + case FO_CC_RESET_HBA_STAT:
28003 + rval = qla2x00_fo_stats(&buff.stat, TRUE);
28005 + case FO_CC_GET_HBA_STAT:
28006 + rval = qla2x00_fo_stats(&buff.stat, FALSE);
28008 + case FO_CC_GET_LUN_DATA:
28010 + DEBUG4(printk("calling qla2x00_fo_get_lun_data\n");)
28011 + DEBUG4(printk("cmd_struct.RequestAdr (%p):\n",
28012 + cmd_struct.RequestAdr);)
28014 + rval = qla2x00_fo_get_lun_data(&cmd_struct,
28015 + &buff.lun_data, mode);
28020 + case FO_CC_SET_LUN_DATA:
28022 + DEBUG4(printk("calling qla2x00_fo_set_lun_data\n");)
28023 + DEBUG4(printk(" cmd_struct.RequestAdr (%p):\n",
28024 + cmd_struct.RequestAdr);)
28026 + rval = qla2x00_fo_set_lun_data(&cmd_struct,
28027 + &buff.lun_data, mode);
28029 + case FO_CC_GET_TARGET_DATA:
28030 + DEBUG4(printk("calling qla2x00_fo_get_target_data\n");)
28031 + DEBUG4(printk("cmd_struct.RequestAdr (%p):\n",
28032 + cmd_struct.RequestAdr);)
28034 + rval = qla2x00_fo_get_target_data(&cmd_struct,
28035 + &buff.target_data, mode);
28041 + case FO_CC_SET_TARGET_DATA:
28042 + DEBUG4(printk("calling qla2x00_fo_set_target_data\n");)
28043 + DEBUG4(printk(" cmd_struct.RequestAdr (%p):\n",
28044 + cmd_struct.RequestAdr);)
28045 + rval = qla2x00_fo_set_target_data(&cmd_struct,
28046 + &buff.target_data, mode);
28051 + if (rval == 0 && (cmd_struct.ResponseLen = out_size) != 0) {
28052 + rval = verify_area(VERIFY_WRITE, (void *)cmd_struct.ResponseAdr,
28055 + DEBUG10(printk("%s: resp buf very write error.\n",
28057 + cmd_struct.Status = EXT_STATUS_COPY_ERR;
28062 + rval = copy_to_user((void *)cmd_struct.ResponseAdr,
28063 + &buff, out_size);
28066 + DEBUG10(printk("%s: resp buf copy error. size=%d.\n",
28067 + __func__, out_size);)
28068 + cmd_struct.Status = EXT_STATUS_COPY_ERR;
28074 + /* Set Status and DetailStatus fields in application EXT_IOCTL */
28075 + (((EXT_IOCTL*)ret_arg)->Status) = cmd_struct.Status;
28076 + (((EXT_IOCTL*)ret_arg)->DetailStatus) = cmd_struct.DetailStatus;
28077 + (((EXT_IOCTL*)ret_arg)->ResponseLen) = cmd_struct.ResponseLen;
28081 + DEBUG10(printk("%s: **** FAILED ****\n", __func__);)
28084 + DEBUG9(printk("%s: exiting normally\n", __func__);)
28092 + * qla2x00_fo_count_retries
28093 + * Increment the retry counter for the command.
28094 + * Set or reset the SRB_RETRY flag.
28097 + * sp = Pointer to command.
28101 + * FALSE -- don't retry
28104 + * Kernel context.
28107 +qla2x00_fo_count_retries(scsi_qla_host_t *ha, srb_t *sp)
28109 + uint8_t retry = TRUE;
28113 + DEBUG9(printk("%s: entered.\n", __func__);)
28115 + if (++sp->fo_retry_cnt > qla_fo_params.MaxRetriesPerIo) {
28116 + /* no more failovers for this request */
28118 + sp->fo_retry_cnt = 0;
28120 + "qla2x00: no more failovers for request - "
28121 + "pid= %ld\n", sp->cmd->serial_number);
28124 + * We haven't exceeded the max retries for this request, check
28125 + * max retries this path
28127 + if ((sp->fo_retry_cnt % qla_fo_params.MaxRetriesPerPath) == 0) {
28128 + DEBUG(printk(" qla2x00_fo_count_retries: FAILOVER - "
28129 + "queuing ha=%ld, sp=%p, pid =%ld, "
28130 + "fo retry= %d \n",
28132 + sp, sp->cmd->serial_number,
28133 + sp->fo_retry_cnt);)
28136 + * Note: we don't want it to timeout, so it is
28137 + * recycling on the retry queue and the fialover queue.
28139 + lq = sp->lun_queue;
28140 + tq = sp->tgt_queue;
28141 + set_bit(LUN_MPIO_BUSY, &lq->q_flag);
28144 + * ??? We can get a path error on any ha, but always
28145 + * queue failover on originating ha. This will allow us
28146 + * to syncronized the requests for a given lun.
28148 + sp->f_start=jiffies;/*ra 10/29/01*/
28149 + /* Now queue it on to be failover */
28151 + add_to_failover_queue(ha,sp);
28155 + DEBUG9(printk("%s: exiting. retry = %d.\n", __func__, retry);)
28162 + * qla2x00_fo_check
28163 + * This function is called from the done routine to see if
28164 + * the SRB requires a failover.
28166 + * This function examines the available os returned status and
28167 + * if meets condition, the command(srb) is placed ont the failover
28168 + * queue for processing.
28171 + * sp = Pointer to the SCSI Request Block
28174 + * sp->flags SRB_RETRY bit id command is to
28175 + * be retried otherwise bit is reset.
28181 + * Kernel/Interrupt context.
28184 +qla2x00_fo_check(scsi_qla_host_t *ha, srb_t *sp)
28186 + uint8_t retry = FALSE;
28189 + static char *reason[] = {
28191 + "DID_NO_CONNECT",
28194 + "DID_BAD_TARGET",
28203 + DEBUG9(printk("%s: entered.\n", __func__);)
28205 + /* we failover on selction timeouts only */
28206 + host_status = CMD_RESULT(sp->cmd) >>16;
28207 + if( host_status == DID_NO_CONNECT) {
28208 + if( qla2x00_fo_count_retries(ha,sp) ) {
28209 + /* Force a retry on this request, it will
28210 + * cause the LINUX timer to get reset, while we
28211 + * we are processing the failover.
28213 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
28216 + DEBUG(printk("qla2x00_fo_check: pid= %ld sp %p "
28217 + "retry count=%d, retry flag = %d, "
28218 + "host status (%s)\n\r",
28219 + sp->cmd->serial_number,
28220 + sp, sp->fo_retry_cnt,
28221 + retry, reason[host_status]);)
28224 + DEBUG9(printk("%s: exiting. retry = %d.\n", __func__, retry);)
28230 + * qla2x00_fo_path_change
28231 + * This function is called from configuration mgr to notify
28232 + * of a path change.
28235 + * type = Failover notify type, FO_NOTIFY_LUN_RESET or FO_NOTIFY_LOGOUT
28236 + * newlunp = Pointer to the fc_lun struct for current path.
28237 + * oldlunp = Pointer to fc_lun struct for previous path.
28242 + * Kernel context.
28245 +qla2x00_fo_path_change(uint32_t type, fc_lun_t *newlunp, fc_lun_t *oldlunp)
28247 + uint32_t ret = QLA2X00_SUCCESS;
28249 + newlunp->max_path_retries = 0;
28254 + * qla2x00_fo_get_params
28255 + * Process an ioctl request to get system wide failover parameters.
28258 + * pp = Pointer to FO_PARAMS structure.
28261 + * EXT_STATUS code.
28264 + * Kernel context.
28267 +qla2x00_fo_get_params(PFO_PARAMS pp)
28269 + DEBUG9(printk("%s: entered.\n", __func__);)
28271 + pp->MaxPathsPerDevice = qla_fo_params.MaxPathsPerDevice;
28272 + pp->MaxRetriesPerPath = qla_fo_params.MaxRetriesPerPath;
28273 + pp->MaxRetriesPerIo = qla_fo_params.MaxRetriesPerIo;
28274 + pp->Flags = qla_fo_params.Flags;
28275 + pp->FailoverNotifyType = qla_fo_params.FailoverNotifyType;
28276 + pp->FailoverNotifyCdbLength = qla_fo_params.FailoverNotifyCdbLength;
28277 + memset(pp->FailoverNotifyCdb, 0, sizeof(pp->FailoverNotifyCdb));
28278 + memcpy(pp->FailoverNotifyCdb,
28279 + &qla_fo_params.FailoverNotifyCdb[0], sizeof(pp->FailoverNotifyCdb));
28281 + DEBUG9(printk("%s: exiting.\n", __func__);)
28283 + return EXT_STATUS_OK;
28287 + * qla2x00_fo_set_params
28288 + * Process an ioctl request to set system wide failover parameters.
28291 + * pp = Pointer to FO_PARAMS structure.
28294 + * EXT_STATUS code.
28297 + * Kernel context.
28300 +qla2x00_fo_set_params(PFO_PARAMS pp)
28302 + DEBUG9(printk("%s: entered.\n", __func__);)
28304 + /* Check values for defined MIN and MAX */
28305 + if ((pp->MaxPathsPerDevice > SDM_DEF_MAX_PATHS_PER_DEVICE) ||
28306 + (pp->MaxRetriesPerPath < FO_MAX_RETRIES_PER_PATH_MIN) ||
28307 + (pp->MaxRetriesPerPath > FO_MAX_RETRIES_PER_PATH_MAX) ||
28308 + (pp->MaxRetriesPerIo < FO_MAX_RETRIES_PER_IO_MIN) ||
28309 + (pp->MaxRetriesPerPath > FO_MAX_RETRIES_PER_IO_MAX)) {
28310 + DEBUG2_9_10(printk("%s: got invalid params.\n", __func__);)
28311 + return EXT_STATUS_INVALID_PARAM;
28314 + /* Update the global structure. */
28315 + qla_fo_params.MaxPathsPerDevice = pp->MaxPathsPerDevice;
28316 + qla_fo_params.MaxRetriesPerPath = pp->MaxRetriesPerPath;
28317 + qla_fo_params.MaxRetriesPerIo = pp->MaxRetriesPerIo;
28318 + qla_fo_params.Flags = pp->Flags;
28319 + qla_fo_params.FailoverNotifyType = pp->FailoverNotifyType;
28320 + qla_fo_params.FailoverNotifyCdbLength = pp->FailoverNotifyCdbLength;
28321 + if (pp->FailoverNotifyType & FO_NOTIFY_TYPE_CDB) {
28322 + if (pp->FailoverNotifyCdbLength >
28323 + sizeof(qla_fo_params.FailoverNotifyCdb)) {
28324 + DEBUG2_9_10(printk("%s: got invalid cdb length.\n",
28326 + return EXT_STATUS_INVALID_PARAM;
28329 + memcpy(qla_fo_params.FailoverNotifyCdb,
28330 + pp->FailoverNotifyCdb,
28331 + sizeof(qla_fo_params.FailoverNotifyCdb));
28334 + DEBUG9(printk("%s: exiting.\n", __func__);)
28336 + return EXT_STATUS_OK;
28341 + * qla2x00_fo_init_params
28342 + * Gets driver configuration file failover properties to initalize
28343 + * the global failover parameters structure.
28346 + * ha = adapter block pointer.
28349 + * Kernel context.
28352 +qla2x00_fo_init_params(scsi_qla_host_t *ha)
28354 + DEBUG3(printk("%s: entered.\n", __func__);)
28356 + /* For parameters that are not completely implemented yet, */
28358 + memset(&qla_fo_params, 0, sizeof(qla_fo_params));
28360 + if(MaxPathsPerDevice) {
28361 + qla_fo_params.MaxPathsPerDevice = MaxPathsPerDevice;
28363 + qla_fo_params.MaxPathsPerDevice =FO_MAX_PATHS_PER_DEVICE_DEF ;
28364 + if(MaxRetriesPerPath) {
28365 + qla_fo_params.MaxRetriesPerPath = MaxRetriesPerPath;
28367 + qla_fo_params.MaxRetriesPerPath =FO_MAX_RETRIES_PER_PATH_DEF;
28368 + if(MaxRetriesPerIo) {
28369 + qla_fo_params.MaxRetriesPerIo =MaxRetriesPerIo;
28371 + qla_fo_params.MaxRetriesPerIo =FO_MAX_RETRIES_PER_IO_DEF;
28373 + qla_fo_params.Flags = 0;
28374 + qla_fo_params.FailoverNotifyType = FO_NOTIFY_TYPE_NONE;
28376 + DEBUG3(printk("%s: exiting.\n", __func__);)
28381 + * qla2x00_send_fo_notification
28382 + * Sends failover notification if needed. Change the fc_lun pointer
28383 + * in the old path lun queue.
28386 + * old_lp = Pointer to old fc_lun.
28387 + * new_lp = Pointer to new fc_lun.
28390 + * Local function status code.
28393 + * Kernel context.
28396 +qla2x00_send_fo_notification(fc_lun_t *old_lp, fc_lun_t *new_lp)
28398 + scsi_qla_host_t *old_ha = old_lp->fcport->ha;
28399 + int rval = QLA2X00_SUCCESS;
28400 + inq_cmd_rsp_t *pkt;
28401 + uint16_t loop_id, lun;
28402 + dma_addr_t phys_address;
28405 + ENTER("qla2x00_send_fo_notification");
28406 + DEBUG3(printk("%s: entered.\n", __func__);)
28408 + loop_id = old_lp->fcport->loop_id;
28409 + lun = old_lp->lun;
28411 + if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_LUN_RESET) {
28412 + rval = qla2x00_lun_reset(old_ha, loop_id, lun);
28413 + if (rval == QLA2X00_SUCCESS) {
28414 + DEBUG4(printk("qla2x00_send_fo_notification: LUN "
28415 + "reset succeded\n");)
28417 + DEBUG4(printk("qla2x00_send_fo_notification: LUN "
28418 + "reset failed\n");)
28422 + if ( (qla_fo_params.FailoverNotifyType ==
28423 + FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET) ||
28424 + (qla_fo_params.FailoverNotifyType ==
28425 + FO_NOTIFY_TYPE_LOGOUT_OR_CDB) ) {
28427 + rval = qla2x00_fabric_logout(old_ha, loop_id);
28428 + if (rval == QLA2X00_SUCCESS) {
28429 + DEBUG4(printk("qla2x00_send_fo_failover_notify: "
28430 + "logout succeded\n");)
28432 + DEBUG4(printk("qla2x00_send_fo_failover_notify: "
28433 + "logout failed\n");)
28438 + if (qla_fo_params.FailoverNotifyType == FO_NOTIFY_TYPE_CDB) {
28439 + pkt = pci_alloc_consistent(old_ha->pdev,
28440 + sizeof(inq_cmd_rsp_t), &phys_address);
28441 + if (pkt == NULL) {
28442 + DEBUG4(printk("qla2x00_send_fo_failover_notify: "
28443 + "memory allocation failed\n");)
28445 + return(QLA2X00_FUNCTION_FAILED);
28448 + memset(pkt,0, sizeof(inq_cmd_rsp_t));
28449 + pkt->p.cmd.entry_type = COMMAND_A64_TYPE;
28450 + pkt->p.cmd.entry_count = 1;
28451 + pkt->p.cmd.lun = lun;
28452 + pkt->p.cmd.target = (uint8_t)loop_id;
28453 + pkt->p.cmd.control_flags = CF_SIMPLE_TAG;
28454 + memcpy(pkt->p.cmd.scsi_cdb,
28455 + qla_fo_params.FailoverNotifyCdb,
28456 + qla_fo_params.FailoverNotifyCdbLength);
28457 + /* FIXME This setup needs to be verified with Dennis. */
28458 + pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1);
28459 + pkt->p.cmd.byte_count = __constant_cpu_to_le32(0);
28460 + pkt->p.cmd.dseg_0_address[0] = cpu_to_le32(
28461 + LSD(phys_address + sizeof (sts_entry_t)));
28462 + pkt->p.cmd.dseg_0_address[1] = cpu_to_le32(
28463 + MSD(phys_address + sizeof (sts_entry_t)));
28464 + pkt->p.cmd.dseg_0_length = __constant_cpu_to_le32(0);
28466 + rval = qla2x00_issue_iocb(old_ha,
28467 + pkt, phys_address, sizeof (inq_cmd_rsp_t));
28469 + if (rval != QLA2X00_SUCCESS ||
28470 + pkt->p.rsp.comp_status != CS_COMPLETE ||
28471 + pkt->p.rsp.scsi_status & SS_CHECK_CONDITION ||
28472 + pkt->inq[0] == 0x7f) {
28474 + DEBUG4(printk("qla2x00_fo_notification: send CDB "
28475 + "failed: comp_status = %x"
28476 + "scsi_status = %x inq[0] = %x\n",
28477 + pkt->p.rsp.comp_status,
28478 + pkt->p.rsp.scsi_status,
28482 + pci_free_consistent(old_ha->pdev,
28483 + sizeof(inq_cmd_rsp_t), pkt, phys_address);
28486 + DEBUG3(printk("%s: exiting. rval = %d.\n", __func__, rval);)
28493 + * qla2100_fo_enabled
28494 + * Reads and validates the failover enabled property.
28497 + * ha = adapter state pointer.
28498 + * instance = HBA number.
28501 + * TRUE when failover is authorized else FALSE
28504 + * Kernel context.
28507 +qla2x00_fo_enabled(scsi_qla_host_t *ha, int instance)
28509 + uint8_t enable = FALSE;
28511 + if (ha->flags.failover_enabled)
28516 --- /dev/null Thu Apr 11 07:25:15 2002
28517 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_fo.cfg Thu Jul 3 15:34:42 2003
28519 +/******************************************************************************
28520 + * QLOGIC LINUX SOFTWARE
28522 + * QLogic ISP2x00 device driver for Linux 2.4.x
28523 + * Copyright (C) 2003 Qlogic Corporation
28524 + * (www.qlogic.com)
28526 + * This program is free software; you can redistribute it and/or modify it
28527 + * under the terms of the GNU General Public License as published by the
28528 + * Free Software Foundation; either version 2, or (at your option) any
28531 + * This program is distributed in the hope that it will be useful, but
28532 + * WITHOUT ANY WARRANTY; without even the implied warranty of
28533 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28534 + * General Public License for more details.
28536 + ******************************************************************************/
28539 + * QLogic ISP2x00 Multi-path LUN Support Driver
28541 +int MaxPathsPerDevice = 0;
28542 +int MaxRetriesPerPath =0 ;
28543 +int MaxRetriesPerIo =0;
28544 +#if defined(MODULE)
28545 +/* insmod qla2100 <options> ql2xopts=<string> */
28546 +MODULE_PARM(MaxPathsPerDevice, "i");
28547 +MODULE_PARM(MaxRetriesPerPath, "i");
28548 +MODULE_PARM(MaxRetriesPerIo, "i");
28550 --- /dev/null Thu Apr 11 07:25:15 2002
28551 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_fo.h Thu Jul 3 15:34:42 2003
28553 +/******************************************************************************
28554 + * QLOGIC LINUX SOFTWARE
28556 + * QLogic ISP2x00 device driver for Linux 2.5.x
28557 + * Copyright (C) 2003 Qlogic Corporation
28558 + * (www.qlogic.com)
28560 + * This program is free software; you can redistribute it and/or modify it
28561 + * under the terms of the GNU General Public License as published by the
28562 + * Free Software Foundation; either version 2, or (at your option) any
28565 + * This program is distributed in the hope that it will be useful, but
28566 + * WITHOUT ANY WARRANTY; without even the implied warranty of
28567 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28568 + * General Public License for more details.
28570 + ******************************************************************************/
28573 + * QLogic ISP2x00 Failover Header
28579 +#if defined(__cplusplus)
28586 + * This structure definition is for a scsi I/O request NOT subject to
28587 + * failover re-routing. It is for the use of configuration operations
28588 + * and diagnostics functions as definted in ExIoct.h
28590 + typedef struct scsi_cdb_request {
28591 + struct adapter_state *ha;
28594 + uint8_t *cdb_ptr; /* Pointer to cdb to be sent */
28595 + uint8_t cdb_len; /* cdb length */
28596 + uint8_t direction; /* Direction of I/O for buffer */
28597 + uint8_t scb_len; /* Scsi completion block length */
28598 + uint8_t *scb_ptr; /* Scsi completion block pointer */
28599 + uint8_t *buf_ptr; /* Pointer to I/O buffer */
28600 + uint16_t buf_len; /* Buffer size */
28602 + SCSI_REQ_t, *SCSI_REQ_p;
28606 + * Special defines
28608 + typedef union _FO_HBA_STAT {
28609 + FO_HBA_STAT_INPUT input;
28610 + FO_HBA_STAT_INFO info;
28613 + typedef union _FO_LUN_DATA {
28614 + FO_LUN_DATA_INPUT input;
28615 + FO_LUN_DATA_LIST list;
28618 + typedef union _FO_TARGET_DATA {
28619 + FO_TARGET_DATA_INPUT input;
28620 + FO_DEVICE_DATABASE list;
28621 + } FO_TARGET_DATA;
28623 +#if defined(__cplusplus)
28627 +#endif /* ifndef _QLA_FO_H */
28628 --- /dev/null Thu Apr 11 07:25:15 2002
28629 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_gbl.h Thu Jul 3 15:34:42 2003
28631 +/********************************************************************************
28632 +* QLOGIC LINUX SOFTWARE
28634 +* QLogic ISP2x00 device driver for Linux 2.5.x
28635 +* Copyright (C) 2003 Qlogic Corporation
28636 +* (www.qlogic.com)
28638 +* This program is free software; you can redistribute it and/or modify it
28639 +* under the terms of the GNU General Public License as published by the
28640 +* Free Software Foundation; either version 2, or (at your option) any
28643 +* This program is distributed in the hope that it will be useful, but
28644 +* WITHOUT ANY WARRANTY; without even the implied warranty of
28645 +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28646 +* General Public License for more details.
28648 +******************************************************************************
28649 +* Global include file.
28650 +******************************************************************************/
28653 +#ifndef __QLA_GBL_H
28654 +#define __QLA_GBL_H
28657 + * Global Data in FW files.
28659 +extern unsigned char fw2100tp_version[];
28660 +extern unsigned char fw2100tp_version_str[];
28661 +extern unsigned short fw2100tp_addr01;
28662 +extern unsigned short fw2100tp_code01[];
28663 +extern unsigned short fw2100tp_length01;
28665 +extern unsigned char fw2200ip_version[];
28666 +extern unsigned char fw2200ip_version_str[];
28667 +extern unsigned short fw2200ip_addr01;
28668 +extern unsigned short fw2200ip_code01[];
28669 +extern unsigned short fw2200ip_length01;
28671 +extern unsigned char fw2300tpx_version[];
28672 +extern unsigned char fw2300tpx_version_str[];
28673 +extern unsigned short fw2300tpx_addr01;
28674 +extern unsigned short fw2300tpx_code01[];
28675 +extern unsigned short fw2300tpx_length01;
28677 +extern unsigned char fw2300ipx_version[];
28678 +extern unsigned char fw2300ipx_version_str[];
28679 +extern unsigned short fw2300ipx_addr01;
28680 +extern unsigned short fw2300ipx_code01[];
28681 +extern unsigned short fw2300ipx_length01;
28683 +#if defined(ISP2322)
28684 +extern unsigned char fw2322tpx_version[];
28685 +extern unsigned char fw2322tpx_version_str[];
28686 +extern unsigned short fw2322tpx_addr01;
28687 +extern unsigned short fw2322tpx_code01[];
28688 +extern unsigned short fw2322tpx_length01;
28689 +extern unsigned long rseqtpx_code_addr01;
28690 +extern unsigned short rseqtpx_code01[];
28691 +extern unsigned short rseqtpx_code_length01;
28692 +extern unsigned long xseqtpx_code_addr01;
28693 +extern unsigned short xseqtpx_code01[];
28694 +extern unsigned short xseqtpx_code_length01;
28696 +extern unsigned char fw2322ipx_version[];
28697 +extern unsigned char fw2322ipx_version_str[];
28698 +extern unsigned short fw2322ipx_addr01;
28699 +extern unsigned short fw2322ipx_code01[];
28700 +extern unsigned short fw2322ipx_length01;
28701 +extern unsigned long rseqipx_code_addr01;
28702 +extern unsigned short rseqipx_code01[];
28703 +extern unsigned short rseqipx_code_length01;
28704 +extern unsigned long xseqipx_code_addr01;
28705 +extern unsigned short xseqipx_code01[];
28706 +extern unsigned short xseqipx_code_length01;
28710 + * Global Function Prototypes in qla_init.c source file.
28712 +extern uint8_t qla2x00_initialize_adapter(scsi_qla_host_t *);
28713 +extern uint8_t qla2x00_loop_resync(scsi_qla_host_t *);
28714 +extern void qla2x00_tgt_free(scsi_qla_host_t *ha, uint16_t t);
28715 +extern uint8_t qla2x00_fabric_login(scsi_qla_host_t *, fcdev_t *);
28716 +extern uint8_t qla2x00_local_device_login(scsi_qla_host_t *, uint16_t);
28718 +extern void qla2x00_restart_queues(scsi_qla_host_t *, uint8_t);
28720 +extern os_tgt_t *qla2x00_tgt_alloc(scsi_qla_host_t *, uint16_t);
28721 +extern os_lun_t * qla2x00_lun_alloc(scsi_qla_host_t *, uint16_t, uint16_t);
28723 +extern uint8_t qla2x00_abort_isp(scsi_qla_host_t *, uint8_t);
28727 + * Global Data in qla_os.c source file.
28729 +extern char qla2x00_version_str[];
28730 +extern unsigned long qla2x00_verbose;
28731 +extern unsigned long qla2x00_quiet;
28732 +extern unsigned long qla2x00_reinit;
28733 +extern unsigned long qla2x00_req_dmp;
28735 +extern int num_hosts;
28736 +extern int apiHBAInstance;
28738 +extern struct _qla2x00stats qla2x00_stats;
28739 +extern char *ql2xdevconf;
28740 +extern int ql2xretrycount;
28741 +extern int qla2xenbinq;
28742 +extern int max_srbs;
28743 +#if defined(ISP2200) || defined(ISP2300)
28744 +extern int ql2xlogintimeout;
28745 +extern int qlport_down_retry;
28747 +extern int ql2xmaxqdepth;
28748 +extern int displayConfig;
28750 +extern int ql2xfailover;
28752 +extern int ConfigRequired;
28753 +extern int recoveryTime;
28754 +extern int failbackTime;
28757 +extern int ql2xsuspendcount;
28758 +extern int qla2x00_retryq_dmp;
28759 +#if defined(MODULE)
28760 +extern char *ql2xopts;
28762 +extern struct list_head qla_hostlist;
28763 +extern rwlock_t qla_hostlist_lock;
28765 +extern int qla2x00_queuecommand(Scsi_Cmnd *, void (*)(Scsi_Cmnd *));
28768 +__qla2x00_suspend_lun(scsi_qla_host_t *, os_lun_t *, int, int, int);
28770 +extern int qla2x00_done(scsi_qla_host_t *);
28771 +extern void qla2x00_next(scsi_qla_host_t *);
28772 +extern void qla2x00_flush_failover_q(scsi_qla_host_t *, os_lun_t *);
28773 +extern void qla2x00_reset_lun_fo_counts(scsi_qla_host_t *, os_lun_t *);
28775 +extern uint8_t qla2x00_check_tgt_status(scsi_qla_host_t *, Scsi_Cmnd *);
28776 +extern uint8_t qla2x00_check_port_status(scsi_qla_host_t *, fc_port_t *);
28778 +extern void qla2x00_extend_timeout(Scsi_Cmnd *, int);
28779 +extern srb_t * qla2x00_get_new_sp (scsi_qla_host_t *ha);
28781 +extern void qla2x00_mark_device_lost(scsi_qla_host_t *, fc_port_t *);
28782 +extern void qla2x00_mark_all_devices_lost(scsi_qla_host_t *);
28784 +extern int qla2x00_get_prop_xstr(scsi_qla_host_t *, char *, uint8_t *, int);
28786 +extern void qla2x00_abort_queues(scsi_qla_host_t *, uint8_t);
28789 + * Global Function Prototypes in qla_iocb.c source file.
28791 +extern request_t *qla2x00_req_pkt(scsi_qla_host_t *);
28792 +extern request_t *qla2x00_ms_req_pkt(scsi_qla_host_t *, srb_t *);
28793 +extern void qla2x00_isp_cmd(scsi_qla_host_t *);
28794 +extern int qla2x00_start_scsi(srb_t *sp);
28795 +int qla2x00_marker(scsi_qla_host_t *, uint16_t, uint16_t, uint8_t);
28796 +int __qla2x00_marker(scsi_qla_host_t *, uint16_t, uint16_t, uint8_t);
28799 + * Global Function Prototypes in qla_mbx.c source file.
28802 +qla2x00_mailbox_command(scsi_qla_host_t *, mbx_cmd_t *);
28805 +qla2x00_load_ram(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t);
28808 +qla2x00_load_ram_ext(scsi_qla_host_t *, dma_addr_t, uint32_t, uint16_t);
28811 +qla2x00_execute_fw(scsi_qla_host_t *);
28814 +qla2x00_get_fw_version(scsi_qla_host_t *, uint16_t *,
28815 + uint16_t *, uint16_t *, uint16_t *);
28818 +qla2x00_get_fw_options(scsi_qla_host_t *, uint16_t *, uint16_t *, uint16_t *);
28821 +qla2x00_set_fw_options(scsi_qla_host_t *,
28822 + uint16_t, uint16_t, uint16_t, uint16_t, uint16_t);
28825 +qla2x00_read_ram_word(scsi_qla_host_t *, uint16_t, uint16_t *);
28827 +qla2x00_write_ram_word(scsi_qla_host_t *, uint16_t, uint16_t);
28829 +qla2x00_write_ram_word_ext(scsi_qla_host_t *, uint32_t, uint16_t);
28832 +qla2x00_mbx_reg_test(scsi_qla_host_t *);
28835 +qla2x00_verify_checksum(scsi_qla_host_t *);
28838 +qla2x00_issue_iocb(scsi_qla_host_t *, void *, dma_addr_t, size_t);
28841 +qla2x00_abort_command(scsi_qla_host_t *, srb_t *);
28844 +qla2x00_abort_device(scsi_qla_host_t *, uint16_t, uint16_t);
28848 +qla2x00_abort_target(fc_port_t *fcport);
28852 +qla2x00_target_reset(scsi_qla_host_t *, uint16_t, uint16_t);
28855 +qla2x00_get_adapter_id(scsi_qla_host_t *, uint16_t *, uint8_t *, uint8_t *,
28856 + uint8_t *, uint16_t *);
28859 +qla2x00_get_retry_cnt(scsi_qla_host_t *, uint8_t *, uint8_t *);
28862 +qla2x00_loopback_test(scsi_qla_host_t *, INT_LOOPBACK_REQ *, uint16_t *);
28865 +qla2x00_init_firmware(scsi_qla_host_t *, uint16_t);
28868 +qla2x00_get_port_database(scsi_qla_host_t *, fcdev_t *, uint8_t);
28871 +qla2x00_get_firmware_state(scsi_qla_host_t *, uint16_t *);
28874 +qla2x00_get_port_name(scsi_qla_host_t *, uint16_t, uint8_t *, uint8_t);
28877 +qla2x00_get_link_status(scsi_qla_host_t *, uint8_t, void *, uint16_t *);
28880 +qla2x00_lip_reset(scsi_qla_host_t *);
28883 +qla2x00_send_sns(scsi_qla_host_t *, dma_addr_t, uint16_t, size_t);
28886 +qla2x00_login_fabric(scsi_qla_host_t *, uint16_t, uint8_t, uint8_t, uint8_t,
28887 + uint16_t *, uint8_t);
28890 +qla2x00_login_local_device(scsi_qla_host_t *, uint16_t, uint16_t *, uint8_t);
28893 +qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id);
28896 +qla2x00_full_login_lip(scsi_qla_host_t *ha);
28899 +qla2x00_get_port_list(scsi_qla_host_t *, port_list_entry_t *, dma_addr_t,
28900 + uint16_t, uint16_t *);
28902 +#if 0 /* not yet needed */
28904 +qla2x00_dump_ram(scsi_qla_host_t *, uint32_t, dma_addr_t, uint32_t);
28908 +qla2x00_lun_reset(scsi_qla_host_t *, uint16_t, uint16_t);
28911 +qla2x00_send_rnid_mbx(scsi_qla_host_t *, uint16_t, uint8_t, dma_addr_t,
28912 + size_t, uint16_t *);
28915 +qla2x00_set_rnid_params_mbx(scsi_qla_host_t *, dma_addr_t, size_t, uint16_t *);
28918 +qla2x00_get_rnid_params_mbx(scsi_qla_host_t *, dma_addr_t, size_t, uint16_t *);
28920 +#if defined(QL_DEBUG_LEVEL_3)
28922 +qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map);
28926 + * Global Data in qla_fo.c source file.
28928 +extern SysFoParams_t qla_fo_params;
28931 + * Global Function Prototypes in qla_fo.c source file.
28933 +extern scsi_qla_host_t *qla2x00_get_hba(int);
28934 +extern uint32_t qla2x00_send_fo_notification(fc_lun_t *fclun_p, fc_lun_t *olun_p);
28935 +extern void qla2x00_fo_init_params(scsi_qla_host_t *ha);
28936 +extern uint8_t qla2x00_fo_enabled(scsi_qla_host_t *ha, int instance);
28939 + * Global Data in qla_cfg.c source file.
28941 +extern mp_host_t *mp_hosts_base;
28942 +extern uint8_t mp_config_required;
28944 + * Global Function Prototypes in qla_cfg.c source file.
28946 +extern mp_host_t * qla2x00_cfg_find_host(scsi_qla_host_t *);
28947 +extern uint8_t qla2x00_is_portname_in_device(mp_device_t *, uint8_t *);
28948 +extern int qla2x00_cfg_init (scsi_qla_host_t *ha);
28949 +extern int qla2x00_cfg_path_discovery(scsi_qla_host_t *ha);
28950 +extern int qla2x00_cfg_event_notify(scsi_qla_host_t *ha, uint32_t i_type);
28951 +extern fc_lun_t *qla2x00_cfg_failover(scsi_qla_host_t *ha, fc_lun_t *fp,
28952 + os_tgt_t *tgt, srb_t *sp);
28953 +extern int qla2x00_cfg_get_paths( EXT_IOCTL *, FO_GET_PATHS *, int);
28954 +extern int qla2x00_cfg_set_current_path( EXT_IOCTL *,
28955 + FO_SET_CURRENT_PATH *, int);
28956 +extern void qla2x00_fo_properties(scsi_qla_host_t *ha);
28957 +extern mp_host_t * qla2x00_add_mp_host(uint8_t *);
28958 +extern void qla2x00_cfg_mem_free(scsi_qla_host_t *ha);
28959 +extern mp_host_t * qla2x00_alloc_host(scsi_qla_host_t *);
28960 +extern uint8_t qla2x00_fo_check(scsi_qla_host_t *ha, srb_t *sp);
28961 +extern mp_path_t *qla2x00_find_path_by_name(mp_host_t *, mp_path_list_t *,
28965 + * Global Function Prototypes in qla_cfgln.c source file.
28967 +extern void qla2x00_cfg_build_path_tree( scsi_qla_host_t *ha);
28968 +extern uint8_t qla2x00_update_mp_device(mp_host_t *,
28969 + fc_port_t *, uint16_t );
28970 +extern void qla2x00_cfg_display_devices(void);
28973 + * Global Function Prototypes in qla_xioctl.c source file.
28975 +extern void qla2x00_enqueue_aen(scsi_qla_host_t *, uint16_t, void *);
28976 +extern int qla2x00_fo_ioctl(scsi_qla_host_t *, int, void *, int);
28977 +extern int qla2x00_alloc_ioctl_mem(scsi_qla_host_t *);
28978 +extern void qla2x00_free_ioctl_mem(scsi_qla_host_t *);
28979 +extern int qla2x00_get_ioctl_scrap_mem(scsi_qla_host_t *, void **, uint32_t);
28980 +extern void qla2x00_free_ioctl_scrap_mem(scsi_qla_host_t *);
28983 + * Global Function Prototypes in qla_inioctl.c source file.
28985 +extern int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
28986 +extern int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
28987 +extern int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t);
28988 +extern int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int);
28989 +extern int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
28990 +extern int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
28994 + * Global Function Prototypes in qla_isr.c source file.
28996 +extern irqreturn_t qla2x00_intr_handler(int, void *, struct pt_regs *);
29000 + * Global Function Prototypes in qla_sup.c source file.
29002 +extern uint16_t qla2x00_get_nvram_word(scsi_qla_host_t *, uint32_t);
29003 +extern void qla2x00_nv_write(scsi_qla_host_t *, uint16_t);
29004 +extern void qla2x00_nv_deselect(scsi_qla_host_t *);
29005 +extern uint8_t qla2x00_read_flash_byte(scsi_qla_host_t *, uint32_t);
29006 +extern uint8_t qla2x00_get_flash_manufacturer(scsi_qla_host_t *);
29007 +extern uint16_t qla2x00_get_flash_version(scsi_qla_host_t *);
29008 +extern uint16_t qla2x00_get_flash_image(scsi_qla_host_t *, uint8_t *);
29009 +extern uint16_t qla2x00_set_flash_image(scsi_qla_host_t *, uint8_t *);
29012 + * Global Function Prototypes in qla_vendor.c source file.
29014 +void qla2x00_set_vend_direction(scsi_qla_host_t *, Scsi_Cmnd *, cmd_entry_t *);
29017 + * Global Function Prototypes in qla_dbg.c source file.
29019 +extern void qla2x00_dump_isp(scsi_qla_host_t *, int);
29020 +extern void qla2x00_dump_regs(struct Scsi_Host *);
29021 +extern void qla2x00_dump_buffer(uint8_t *, uint32_t);
29022 +extern void qla2x00_print_scsi_cmd(Scsi_Cmnd *);
29023 +extern void qla2x00_print_q_info(struct os_lun *);
29025 +#endif /* _QLA_GBL_H */
29026 --- /dev/null Thu Apr 11 07:25:15 2002
29027 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_inioct.c Thu Jul 3 15:34:42 2003
29029 +/******************************************************************************
29030 + * QLOGIC LINUX SOFTWARE
29032 + * QLogic ISP2x00 device driver for Linux 2.5.x
29033 + * Copyright (C) 2003 Qlogic Corporation
29034 + * (www.qlogic.com)
29036 + * This program is free software; you can redistribute it and/or modify it
29037 + * under the terms of the GNU General Public License as published by the
29038 + * Free Software Foundation; either version 2, or (at your option) any
29041 + * This program is distributed in the hope that it will be useful, but
29042 + * WITHOUT ANY WARRANTY; without even the implied warranty of
29043 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29044 + * General Public License for more details.
29046 + ******************************************************************************/
29048 +#include "qla_os.h"
29049 +#include "qla_def.h"
29051 +#include "inioct.h"
29053 +extern int qla2x00_loopback_test(scsi_qla_host_t *ha, INT_LOOPBACK_REQ *req,
29054 + uint16_t *ret_mb);
29056 +int qla2x00_read_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
29057 +int qla2x00_update_nvram(scsi_qla_host_t *, EXT_IOCTL *, int);
29058 +int qla2x00_write_nvram_word(scsi_qla_host_t *, uint8_t, uint16_t);
29059 +int qla2x00_send_loopback(scsi_qla_host_t *, EXT_IOCTL *, int);
29060 +int qla2x00_read_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
29061 +int qla2x00_update_option_rom(scsi_qla_host_t *, EXT_IOCTL *, int);
29064 +qla2x00_read_nvram(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29066 + uint8_t *usr_temp, *kernel_tmp;
29069 + uint32_t transfer_size;
29071 + DEBUG9(printk("qla2x00_read_nvram: entered.\n");)
29073 + if (pext->ResponseLen < sizeof(nvram_t))
29074 + transfer_size = pext->ResponseLen / 2;
29076 + transfer_size = sizeof(nvram_t) / 2;
29078 + /* Dump NVRAM. */
29079 + usr_temp = (uint8_t *)pext->ResponseAdr;
29080 + for (i = 0, cnt = 0; cnt < transfer_size; cnt++, i++) {
29081 + data = cpu_to_le16(qla2x00_get_nvram_word(ha, cnt));
29083 + kernel_tmp = (uint8_t *)&data;
29085 + __put_user(*kernel_tmp, usr_temp);
29091 + __put_user(*kernel_tmp, usr_temp);
29096 + pext->Status = EXT_STATUS_OK;
29097 + pext->DetailStatus = EXT_STATUS_OK;
29099 + DEBUG9(printk("qla2x00_read_nvram: exiting.\n");)
29105 + * qla2x00_update_nvram
29106 + * Write data to NVRAM.
29109 + * ha = adapter block pointer.
29110 + * pext = pointer to driver internal IOCTL structure.
29115 + * Kernel context.
29118 +qla2x00_update_nvram(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29121 + uint8_t *usr_tmp, *kernel_tmp;
29122 + nvram_t *pnew_nv;
29125 + uint32_t transfer_size;
29126 + uint8_t chksum = 0;
29129 + // FIXME: Endianess?
29130 + DEBUG9(printk("qla2x00_update_nvram: entered.\n");)
29132 + if (pext->RequestLen < sizeof(nvram_t))
29133 + transfer_size = pext->RequestLen;
29135 + transfer_size = sizeof(nvram_t);
29137 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pnew_nv,
29138 + sizeof(nvram_t))) {
29139 + /* not enough memory */
29140 + pext->Status = EXT_STATUS_NO_MEMORY;
29141 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
29142 + "size requested=%d.\n",
29143 + __func__, ha->host_no, ha->instance,
29144 + sizeof(nvram_t));)
29148 + /* Read from user buffer */
29149 + kernel_tmp = (uint8_t *)pnew_nv;
29150 + usr_tmp = (uint8_t *)pext->RequestAdr;
29152 + ret = verify_area(VERIFY_READ, (void *)usr_tmp, transfer_size);
29154 + DEBUG9_10(printk(
29155 + "qla2x00_update_nvram: ERROR in buffer verify READ. "
29156 + "RequestAdr=%p\n", pext->RequestAdr);)
29157 + qla2x00_free_ioctl_scrap_mem(ha);
29161 + copy_from_user(kernel_tmp, usr_tmp, transfer_size);
29163 + kernel_tmp = (uint8_t *)pnew_nv;
29165 + /* we need to checksum the nvram */
29166 + for (i = 0; i < sizeof(nvram_t) - 1; i++) {
29167 + chksum += *kernel_tmp;
29171 + chksum = ~chksum + 1;
29173 + *kernel_tmp = chksum;
29175 + /* Write to NVRAM */
29176 + wptr = (uint16_t *)pnew_nv;
29177 + for (cnt = 0; cnt < transfer_size / 2; cnt++) {
29179 + qla2x00_write_nvram_word(ha, cnt, data);
29182 + pext->Status = EXT_STATUS_OK;
29183 + pext->DetailStatus = EXT_STATUS_OK;
29185 + DEBUG9(printk("qla2x00_update_nvram: exiting.\n");)
29187 + qla2x00_free_ioctl_scrap_mem(ha);
29192 +qla2x00_write_nvram_word(scsi_qla_host_t *ha, uint8_t addr, uint16_t data)
29197 + device_reg_t *reg = ha->iobase;
29199 + qla2x00_nv_write(ha, NVR_DATA_OUT);
29200 + qla2x00_nv_write(ha, 0);
29201 + qla2x00_nv_write(ha, 0);
29203 + for (word = 0; word < 8; word++)
29204 + qla2x00_nv_write(ha, NVR_DATA_OUT);
29206 + qla2x00_nv_deselect(ha);
29208 + /* Erase Location */
29209 + nv_cmd = (addr << 16) | NV_ERASE_OP;
29211 + for (count = 0; count < 11; count++) {
29212 + if (nv_cmd & BIT_31)
29213 + qla2x00_nv_write(ha, NVR_DATA_OUT);
29215 + qla2x00_nv_write(ha, 0);
29220 + qla2x00_nv_deselect(ha);
29222 + /* Wait for Erase to Finish */
29223 + WRT_REG_WORD(®->nvram, NVR_SELECT);
29226 + word = RD_REG_WORD(®->nvram);
29227 + } while ((word & NVR_DATA_IN) == 0);
29229 + qla2x00_nv_deselect(ha);
29232 + nv_cmd = (addr << 16) | NV_WRITE_OP;
29235 + for (count = 0; count < 27; count++) {
29236 + if (nv_cmd & BIT_31)
29237 + qla2x00_nv_write(ha, NVR_DATA_OUT);
29239 + qla2x00_nv_write(ha, 0);
29244 + qla2x00_nv_deselect(ha);
29246 + /* Wait for NVRAM to become ready */
29247 + WRT_REG_WORD(®->nvram, NVR_SELECT);
29250 + word = RD_REG_WORD(®->nvram);
29251 + } while ((word & NVR_DATA_IN) == 0);
29253 + qla2x00_nv_deselect(ha);
29255 + /* Disable writes */
29256 + qla2x00_nv_write(ha, NVR_DATA_OUT);
29257 + for (count = 0; count < 10; count++)
29258 + qla2x00_nv_write(ha, 0);
29260 + qla2x00_nv_deselect(ha);
29262 + DEBUG9(printk("qla2x00_write_nvram_word: exiting.\n");)
29268 +qla2x00_send_loopback(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29271 + uint16_t ret_mb[MAILBOX_REGISTER_COUNT];
29272 + INT_LOOPBACK_REQ req;
29273 + INT_LOOPBACK_RSP rsp;
29275 + DEBUG9(printk("qla2x00_send_loopback: entered.\n");)
29278 + if (pext->RequestLen != sizeof(INT_LOOPBACK_REQ)) {
29279 + pext->Status = EXT_STATUS_INVALID_PARAM;
29280 + DEBUG9_10(printk(
29281 + "qla2x00_send_loopback: invalid RequestLen =%d.\n",
29282 + pext->RequestLen);)
29283 + return pext->Status;
29286 + if (pext->ResponseLen != sizeof(INT_LOOPBACK_RSP)) {
29287 + pext->Status = EXT_STATUS_INVALID_PARAM;
29288 + DEBUG9_10(printk(
29289 + "qla2x00_send_loopback: invalid ResponseLen =%d.\n",
29290 + pext->ResponseLen);)
29291 + return pext->Status;
29294 + status = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
29295 + pext->RequestLen);
29297 + pext->Status = EXT_STATUS_COPY_ERR;
29298 + DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of "
29299 + "request buffer.\n");)
29300 + return pext->Status;
29303 + copy_from_user((uint8_t *)&req, (uint8_t *)pext->RequestAdr,
29304 + pext->RequestLen);
29306 + status = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
29307 + pext->ResponseLen);
29309 + pext->Status = EXT_STATUS_COPY_ERR;
29310 + DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of "
29311 + "response buffer.\n");)
29312 + return pext->Status;
29315 + copy_from_user((uint8_t *)&rsp, (uint8_t *)pext->ResponseAdr,
29316 + pext->ResponseLen);
29318 + if (req.TransferCount > req.BufferLength ||
29319 + req.TransferCount > rsp.BufferLength) {
29321 + /* Buffer lengths not large enough. */
29322 + pext->Status = EXT_STATUS_INVALID_PARAM;
29324 + DEBUG9_10(printk(
29325 + "qla2x00_send_loopback: invalid TransferCount =%d. "
29326 + "req BufferLength =%d rspBufferLength =%d.\n",
29327 + req.TransferCount, req.BufferLength, rsp.BufferLength);)
29329 + return pext->Status;
29332 + status = verify_area(VERIFY_READ, (void *)req.BufferAddress,
29333 + req.TransferCount);
29335 + pext->Status = EXT_STATUS_COPY_ERR;
29336 + DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify read of "
29337 + "user loopback data buffer.\n");)
29338 + return pext->Status;
29341 + copy_from_user((uint8_t *)ha->ioctl_mem, (uint8_t *)req.BufferAddress,
29342 + req.TransferCount);
29344 + DEBUG9(printk("qla2x00_send_loopback: req -- bufadr=%p, buflen=%x, "
29345 + "xfrcnt=%x, rsp -- bufadr=%p, buflen=%x.\n",
29346 + req.BufferAddress, req.BufferLength, req.TransferCount,
29347 + rsp.BufferAddress, rsp.BufferLength);)
29350 + * AV - the caller of this IOCTL expects the FW to handle
29351 + * a loopdown situation and return a good status for the
29352 + * call function and a LOOPDOWN status for the test operations
29354 + /*if (ha->loop_state != LOOP_READY || */
29356 + (test_bit(CFG_ACTIVE, &ha->cfg_flags)) ||
29357 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
29358 + ABORTS_ACTIVE || ha->dpc_active) {
29360 + pext->Status = EXT_STATUS_BUSY;
29361 + DEBUG9_10(printk("qla2x00_send_loopback(%ld): "
29362 + "loop not ready.\n", ha->host_no);)
29363 + return pext->Status;
29366 + status = qla2x00_loopback_test(ha, &req, ret_mb);
29369 + if (status == QL_STATUS_TIMEOUT ) {
29370 + pext->Status = EXT_STATUS_BUSY;
29371 + DEBUG9_10(printk("qla2x00_send_loopback: ERROR "
29372 + "command timed out.\n");)
29373 + return pext->Status;
29375 + /* EMPTY. Just proceed to copy back mailbox reg
29376 + * values for users to interpret.
29378 + DEBUG10(printk("qla2x00_send_loopback: ERROR "
29379 + "loopback command failed 0x%x.\n", ret_mb[0]);)
29383 + status = verify_area(VERIFY_WRITE, (void *)rsp.BufferAddress,
29384 + req.TransferCount);
29386 + pext->Status = EXT_STATUS_COPY_ERR;
29387 + DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify "
29388 + "write of return data buffer.\n");)
29389 + return pext->Status;
29392 + DEBUG9(printk("qla2x00_send_loopback: loopback mbx cmd ok. "
29393 + "copying data.\n");)
29395 + /* put loopback return data in user buffer */
29396 + copy_to_user((uint8_t *)rsp.BufferAddress,
29397 + (uint8_t *)ha->ioctl_mem, req.TransferCount);
29399 + rsp.CompletionStatus = ret_mb[0];
29400 + if (rsp.CompletionStatus == INT_DEF_LB_COMPLETE) {
29401 + rsp.CrcErrorCount = ret_mb[1];
29402 + rsp.DisparityErrorCount = ret_mb[2];
29403 + rsp.FrameLengthErrorCount = ret_mb[3];
29404 + rsp.IterationCountLastError = (ret_mb[19] << 16) | ret_mb[18];
29407 + status = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
29408 + pext->ResponseLen);
29410 + pext->Status = EXT_STATUS_COPY_ERR;
29411 + DEBUG9_10(printk("qla2x00_send_loopback: ERROR verify "
29412 + "write of response buffer.\n");)
29413 + return pext->Status;
29416 + copy_to_user((uint8_t *)pext->ResponseAdr, (uint8_t *)&rsp,
29417 + pext->ResponseLen);
29419 + pext->Status = EXT_STATUS_OK;
29420 + pext->DetailStatus = EXT_STATUS_OK;
29422 + DEBUG9(printk("qla2x00_send_loopback: exiting.\n");)
29424 + return pext->Status;
29427 +int qla2x00_read_option_rom(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29429 + uint8_t *usr_tmp;
29431 + uint32_t midpoint;
29432 + uint32_t transfer_size;
29434 + device_reg_t *reg = ha->iobase;
29435 + unsigned long cpu_flags;
29437 + DEBUG9(printk("%s: entered.\n", __func__);)
29439 + if (pext->ResponseLen != FLASH_IMAGE_SIZE) {
29440 + pext->Status = EXT_STATUS_BUFFER_TOO_SMALL;
29444 + transfer_size = FLASH_IMAGE_SIZE;
29446 + midpoint = FLASH_IMAGE_SIZE / 2;
29447 + usr_tmp = (uint8_t *)pext->ResponseAdr;
29449 + /* Dump FLASH. */
29450 + spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
29451 + WRT_REG_WORD(®->nvram, 0);
29452 + for (addr = 0; addr < transfer_size; addr++, usr_tmp++) {
29453 + if (addr == midpoint)
29454 + WRT_REG_WORD(®->nvram, NVR_SELECT);
29456 + data = qla2x00_read_flash_byte(ha, addr);
29457 + __put_user(data, usr_tmp);
29459 + spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
29461 + pext->Status = EXT_STATUS_OK;
29462 + pext->DetailStatus = EXT_STATUS_OK;
29464 + DEBUG9(printk("%s: exiting.\n", __func__);)
29469 +int qla2x00_update_option_rom(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
29472 + uint8_t *usr_tmp;
29473 + uint8_t *kern_tmp;
29475 + unsigned long cpu_flags;
29477 + DEBUG9(printk("%s: entered.\n", __func__);)
29479 + if (pext->RequestLen != FLASH_IMAGE_SIZE) {
29480 + pext->Status = EXT_STATUS_COPY_ERR;
29484 + pext->Status = EXT_STATUS_OK;
29485 + pext->DetailStatus = EXT_STATUS_OK;
29487 + /* Read from user buffer */
29488 + usr_tmp = (uint8_t *)pext->RequestAdr;
29489 + ret = verify_area(VERIFY_READ, (void *)usr_tmp, FLASH_IMAGE_SIZE);
29491 + pext->Status = EXT_STATUS_COPY_ERR;
29492 + DEBUG9_10(printk("%s: ERROR in buffer verify READ. "
29493 + "RequestAdr=%p\n",
29494 + __func__, pext->RequestAdr);)
29498 + kern_tmp = (uint8_t *)KMEM_ZALLOC(FLASH_IMAGE_SIZE, 30);
29499 + if (kern_tmp == NULL) {
29500 + pext->Status = EXT_STATUS_COPY_ERR;
29501 + printk(KERN_WARNING
29502 + "%s: ERROR in flash allocation.\n", __func__);
29505 + copy_from_user(kern_tmp, usr_tmp, FLASH_IMAGE_SIZE);
29507 + /* Go with update */
29508 + spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
29509 + status = qla2x00_set_flash_image(ha, kern_tmp);
29510 + spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
29512 + KMEM_FREE(kern_tmp, FLASH_IMAGE_SIZE);
29516 + pext->Status = EXT_STATUS_COPY_ERR;
29517 + DEBUG9_10(printk("%s: ERROR updating flash.\n", __func__);)
29520 + DEBUG9(printk("%s: exiting.\n", __func__);)
29524 --- /dev/null Thu Apr 11 07:25:15 2002
29525 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_init.c Thu Jul 3 15:34:42 2003
29528 + * QLOGIC LINUX SOFTWARE
29530 + * QLogic ISP2x00 device driver for Linux 2.5.x
29531 + * Copyright (C) 2003 Qlogic Corporation
29532 + * (www.qlogic.com)
29534 + * This program is free software; you can redistribute it and/or modify it
29535 + * under the terms of the GNU General Public License as published by the
29536 + * Free Software Foundation; either version 2, or (at your option) any
29539 + * This program is distributed in the hope that it will be useful, but
29540 + * WITHOUT ANY WARRANTY; without even the implied warranty of
29541 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29542 + * General Public License for more details.
29545 +#include "qla_os.h"
29547 +#include "qla_def.h"
29550 +* QLogic ISP2x00 Hardware Support Function Prototypes.
29552 +uint8_t qla2x00_initialize_adapter(scsi_qla_host_t *);
29554 +static uint8_t qla2x00_isp_firmware(scsi_qla_host_t *);
29555 +static void qla2x00_reset_chip(scsi_qla_host_t *);
29556 +static uint8_t qla2x00_pci_config(scsi_qla_host_t *);
29557 +static uint8_t qla2x00_set_cache_line(scsi_qla_host_t *);
29558 +static uint8_t qla2x00_chip_diag(scsi_qla_host_t *);
29559 +static uint8_t qla2x00_setup_chip(scsi_qla_host_t *ha);
29560 +static uint8_t qla2x00_init_rings(scsi_qla_host_t *ha);
29561 +static uint8_t qla2x00_fw_ready(scsi_qla_host_t *ha);
29562 +static uint8_t qla2x00_nvram_config(scsi_qla_host_t *);
29564 +static void qla2x00_init_fc_db(scsi_qla_host_t *);
29565 +static void qla2x00_init_tgt_map(scsi_qla_host_t *);
29567 +static uint8_t qla2x00_configure_loop(scsi_qla_host_t *);
29568 +static uint8_t qla2x00_configure_local_loop(scsi_qla_host_t *, uint8_t );
29569 +static uint8_t qla2x00_configure_fabric(scsi_qla_host_t *, uint8_t );
29570 +static uint8_t qla2x00_find_all_fabric_devs(scsi_qla_host_t *,
29571 + struct new_dev *, uint16_t *, uint8_t *);
29572 +static void qla2x00_device_resync(scsi_qla_host_t *);
29573 +static int qla2x00_ga_nxt(scsi_qla_host_t *, sw_info_t *);
29574 +static int qla2x00_gid_pt(scsi_qla_host_t *, sw_info_t *);
29575 +static int qla2x00_gpn_id(scsi_qla_host_t *, sw_info_t *);
29576 +static int qla2x00_gnn_id(scsi_qla_host_t *, sw_info_t *);
29577 +static int qla2x00_gft_id(scsi_qla_host_t *, sw_info_t *);
29578 +static int qla2x00_rft_id(scsi_qla_host_t *);
29579 +static int qla2x00_rff_id(scsi_qla_host_t *);
29580 +static int qla2x00_rnn_id(scsi_qla_host_t *);
29581 +static int qla2x00_rsnn_nn(scsi_qla_host_t *);
29583 +static int qla2x00_add_initiator_device(scsi_qla_host_t *, fcdev_t *);
29585 +uint8_t qla2x00_fabric_login(scsi_qla_host_t *, fcdev_t *);
29586 +uint8_t qla2x00_local_device_login(scsi_qla_host_t *, uint16_t);
29588 +static uint8_t qla2x00_update_fc_database(scsi_qla_host_t *,
29589 + fcdev_t *, uint8_t);
29590 +static int qla2x00_build_fcport_list(scsi_qla_host_t *ha);
29591 +static void qla2x00_config_os(scsi_qla_host_t *ha);
29592 +static uint16_t qla2x00_fcport_bind(scsi_qla_host_t *ha, fc_port_t *fcport);
29593 +static int qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport, int);
29594 +static int qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport, int);
29595 +static int qla2x00_rpt_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport);
29596 +static void qla2x00_cfg_lun(fc_port_t *fcport, uint16_t lun);
29598 +static void qla2x00_lun_free(scsi_qla_host_t *, uint16_t, uint16_t);
29600 +static void qla2x00_get_lun_mask_from_config(scsi_qla_host_t *,
29601 + fc_port_t *, uint16_t, uint16_t);
29602 +static int qla2x00_bstr_to_hex(char *, uint8_t *, int);
29604 +static uint8_t qla2x00_find_propname(scsi_qla_host_t *,
29605 + char *, char *, char *, int);
29606 +static int qla2x00_get_prop_16chars(scsi_qla_host_t *,
29607 + char *, char *, char *);
29608 +static void qla2x00_get_properties(scsi_qla_host_t *, char *);
29610 +static void qla2x00_cfg_persistent_binding(scsi_qla_host_t *);
29612 +static int qla2x00_restart_isp(scsi_qla_host_t *);
29613 +static void qla2x00_reset_adapter(scsi_qla_host_t *);
29615 +#define MAX_LOCAL_LOOP_IDS 127
29616 +static uint8_t alpa_table[MAX_LOCAL_LOOP_IDS] = {
29617 + 0xEF, 0xE8, 0xE4, 0xE2, 0xE1, 0xE0, 0xDC, 0xDA,
29618 + 0xD9, 0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0xD1, 0xCE,
29619 + 0xCD, 0xCC, 0xCB, 0xCA, 0xC9, 0xC7, 0xC6, 0xC5,
29620 + 0xC3, 0xBC, 0xBA, 0xB9, 0xB6, 0xB5, 0xB4, 0xB3,
29621 + 0xB2, 0xB1, 0xAE, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9,
29622 + 0xA7, 0xA6, 0xA5, 0xA3, 0x9F, 0x9E, 0x9D, 0x9B,
29623 + 0x98, 0x97, 0x90, 0x8F, 0x88, 0x84, 0x82, 0x81,
29624 + 0x80, 0x7C, 0x7A, 0x79, 0x76, 0x75, 0x74, 0x73,
29625 + 0x72, 0x71, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69,
29626 + 0x67, 0x66, 0x65, 0x63, 0x5C, 0x5A, 0x59, 0x56,
29627 + 0x55, 0x54, 0x53, 0x52, 0x51, 0x4E, 0x4D, 0x4C,
29628 + 0x4B, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x43, 0x3C,
29629 + 0x3A, 0x39, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
29630 + 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x27, 0x26,
29631 + 0x25, 0x23, 0x1F, 0x1E, 0x1D, 0x1B, 0x18, 0x17,
29632 + 0x10, 0x0F, 0x08, 0x04, 0x02, 0x01, 0x00
29635 +/****************************************************************************/
29636 +/* QLogic ISP2x00 Hardware Support Functions. */
29637 +/****************************************************************************/
29640 +* qla2x00_initialize_adapter
29641 +* Initialize board.
29644 +* ha = adapter block pointer.
29650 +qla2x00_initialize_adapter(scsi_qla_host_t *ha)
29653 + uint8_t isp_init = 0;
29654 + uint8_t restart_risc = 0;
29656 + unsigned long wait_device = 0;
29660 + /* Clear adapter flags. */
29661 + ha->forceLip = 0;
29662 + ha->flags.online = FALSE;
29663 + ha->flags.disable_host_adapter = FALSE;
29664 + ha->flags.reset_active = FALSE;
29665 + ha->flags.watchdog_enabled = FALSE;
29666 + atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
29667 + ha->loop_state = LOOP_DOWN;
29668 + ha->device_flags = 0;
29669 + ha->sns_retry_cnt = 0;
29670 + ha->device_flags = 0;
29671 + ha->dpc_flags = 0;
29672 + ha->sns_retry_cnt = 0;
29673 + ha->failback_delay = 0;
29674 +#if defined(IOCB_THROLLE_USAGE)
29675 + ha->iocb_cnt = 0;
29676 + ha->iocb_overflow_cnt = 0;
29678 + ha->flags.management_server_logged_in = 0;
29679 + ha->marker_needed = 0;
29680 + ha->mbx_flags = 0;
29681 + ha->isp_abort_cnt = 0;
29683 + if (!(status = qla2x00_pci_config(ha))) {
29685 + qla2x00_reset_chip(ha);
29687 + /* Initialize Fibre Channel database. */
29688 + qla2x00_init_fc_db(ha);
29690 + /* Initialize target map database. */
29691 + qla2x00_init_tgt_map(ha);
29693 + /* Get Flash Version */
29694 + qla2x00_get_flash_version(ha);
29696 + if (qla2x00_verbose)
29697 + printk("scsi(%ld): Configure NVRAM parameters...\n",
29700 + qla2x00_nvram_config(ha);
29702 + ha->retry_count = ql2xretrycount;
29704 + if (qla2x00_verbose)
29705 + printk("scsi(%ld): Verifying loaded RISC code...\n",
29708 + qla2x00_set_cache_line(ha);
29711 + * If the user specified a device configuration on the command
29712 + * line then use it as the configuration. Otherwise, we scan
29713 + * for all devices.
29715 + if (ql2xdevconf) {
29716 + ha->cmdline = ql2xdevconf;
29717 + if (!ha->flags.failover_enabled)
29718 + qla2x00_get_properties(ha, ql2xdevconf);
29723 + * Try an configure the loop.
29726 + restart_risc = 0;
29729 + /* If firmware needs to be loaded */
29730 + if (qla2x00_isp_firmware(ha)) {
29731 + if (qla2x00_verbose)
29732 + printk("scsi(%ld): Verifying chip...\n",
29735 + if (!(status = qla2x00_chip_diag(ha)))
29736 + status = qla2x00_setup_chip(ha);
29739 + DEBUG(printk("scsi(%ld): Chip verified "
29740 + "and RISC loaded...\n",
29745 + /* Retrieve firmware information */
29746 + qla2x00_get_fw_version(ha, &ha->fw_major_version,
29747 + &ha->fw_minor_version, &ha->fw_subminor_version,
29748 + &ha->fw_attributes);
29750 + if (!status && !(status = qla2x00_init_rings(ha))) {
29753 + * Wait for a successful LIP up to a maximum
29754 + * of (in seconds): RISC login timeout value,
29755 + * RISC retry count value, and port down retry
29756 + * value OR a minimum of 4 seconds OR If no
29757 + * cable, only 5 seconds.
29759 + DEBUG(printk("scsi(%ld): Init rings OK..."
29760 + "calling qla2x00_fw_ready()...\n",
29763 + if (!qla2x00_fw_ready(ha)) {
29764 + clear_bit(RESET_MARKER_NEEDED,
29766 + clear_bit(COMMAND_WAIT_NEEDED,
29770 + * Go setup flash database devices
29771 + * with proper Loop ID's.
29774 + clear_bit(LOOP_RESYNC_NEEDED,
29776 + status = qla2x00_configure_loop(ha);
29779 + * Temp code: delay a while for certain
29780 + * slower devices to become ready.
29782 + for ((wait_device = jiffies + HZ);
29783 + !time_after_eq(jiffies,wait_device);) {
29784 + qla2x00_check_fabric_devices(ha);
29786 + set_current_state(TASK_INTERRUPTIBLE);
29787 + schedule_timeout(5);
29790 + } while (!atomic_read(&ha->loop_down_timer) &&
29791 + !(test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) &&
29792 + (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) );
29795 + if (ha->flags.update_config_needed) {
29796 + ha->init_cb->add_firmware_options[0] |=
29797 + ((ha->operating_mode << 4) &
29798 + (BIT_6 | BIT_5 | BIT_4));
29800 + restart_risc = 1;
29803 + if (ha->mem_err) {
29804 + restart_risc = 1;
29809 + } while (restart_risc && retry--);
29812 + clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
29813 + ha->marker_needed = 1;
29814 + qla2x00_marker(ha, 0, 0, MK_SYNC_ALL);
29815 + ha->marker_needed = 0;
29817 + ha->flags.online = TRUE;
29822 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3)
29824 + printk("%s(): **** FAILED ****\n", __func__);
29833 + * qla2x00_isp_firmware() - Choose firmware image.
29834 + * @ha: HA context
29836 + * Returns 0 on success.
29839 +qla2x00_isp_firmware(scsi_qla_host_t *ha)
29846 + /* Assume loading risc code */
29849 + if (ha->flags.disable_risc_code_load) {
29850 + DEBUG2(printk("scsi(%ld): RISC CODE NOT loaded\n",
29853 + "scsi(%ld): RISC CODE NOT loaded\n", ha->host_no);
29855 + /* Verify checksum of loaded RISC code. */
29856 + status = qla2x00_verify_checksum(ha);
29860 + DEBUG2_3(printk("scsi(%ld): **** Load RISC code ****\n",
29870 + * qla2x00_reset_chip() - Reset ISP chip.
29871 + * @ha: HA context
29873 + * Returns 0 on success.
29876 +qla2x00_reset_chip(scsi_qla_host_t *ha)
29878 + unsigned long flags = 0;
29879 + device_reg_t *reg = ha->iobase;
29881 + unsigned long mbx_flags = 0;
29886 + /* Disable ISP interrupts. */
29887 + qla2x00_disable_intrs(ha);
29889 + spin_lock_irqsave(&ha->hardware_lock, flags);
29891 + /* Turn off master enable */
29893 + pci_read_config_word(ha->pdev, PCI_COMMAND, &cmd);
29894 + cmd &= ~PCI_COMMAND_MASTER;
29895 + pci_write_config_word(ha->pdev, PCI_COMMAND, cmd);
29897 +#if defined(ISP2200) || defined(ISP2300)
29898 + /* Pause RISC. */
29899 + WRT_REG_WORD(®->hccr, HCCR_PAUSE_RISC);
29900 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
29901 + ha->pdev->device == QLA2322_DEVICE_ID) {
29902 + for (cnt = 0; cnt < 30000; cnt++) {
29903 + if ((RD_REG_WORD(®->hccr) & HCCR_RISC_PAUSE) != 0)
29911 + /* Select FPM registers. */
29912 + WRT_REG_WORD(®->ctrl_status, 0x20);
29914 + /* FPM Soft Reset. */
29915 + WRT_REG_WORD(®->fpm_diag_config, 0x100);
29917 +#if defined(ISP2300)
29918 + /* Toggle Fpm Reset. */
29919 + WRT_REG_WORD(®->fpm_diag_config, 0x0);
29922 + /* Select frame buffer registers. */
29923 + WRT_REG_WORD(®->ctrl_status, 0x10);
29925 + /* Reset frame buffer FIFOs. */
29926 +#if defined(ISP2200)
29927 + WRT_REG_WORD(®->fb_cmd, 0xa000);
29929 + WRT_REG_WORD(®->fb_cmd, 0x00fc);
29931 + /* Read back fb_cmd until zero or 3 seconds max */
29932 + for (cnt = 0; cnt < 3000; cnt++) {
29933 + if ((RD_REG_WORD(®->fb_cmd) & 0xff) == 0)
29937 +#endif /* defined(ISP2200) */
29939 + /* Select RISC module registers. */
29940 + WRT_REG_WORD(®->ctrl_status, 0);
29942 + /* Reset RISC processor. */
29943 + WRT_REG_WORD(®->hccr, HCCR_RESET_RISC);
29945 + /* Release RISC processor. */
29946 + WRT_REG_WORD(®->hccr, HCCR_RELEASE_RISC);
29948 +#endif /* defined(ISP2200) || defined(ISP2300) */
29950 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
29951 + WRT_REG_WORD(®->hccr, HCCR_CLR_HOST_INT);
29953 + /* Reset ISP chip. */
29954 + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET);
29956 + /* Wait for RISC to recover from reset. */
29957 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
29958 + ha->pdev->device == QLA2322_DEVICE_ID) {
29961 + for (cnt = 30000; cnt; cnt--) {
29962 + if ((RD_REG_WORD(®->ctrl_status) &
29963 + CSR_ISP_SOFT_RESET) == 0)
29969 + /* Reset RISC processor. */
29970 + WRT_REG_WORD(®->hccr, HCCR_RESET_RISC);
29972 + WRT_REG_WORD(®->semaphore, 0);
29974 + /* Release RISC processor. */
29975 + WRT_REG_WORD(®->hccr, HCCR_RELEASE_RISC);
29977 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
29978 + ha->pdev->device == QLA2322_DEVICE_ID) {
29981 + for (cnt = 0; cnt < 30000; cnt++) {
29982 + if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)))
29983 + QLA_MBX_REG_LOCK(ha);
29985 + if (RD_REG_WORD(®->mailbox0) != MBS_BUSY) {
29986 + if (!(test_bit(ABORT_ISP_ACTIVE,
29987 + &ha->dpc_flags)))
29988 + QLA_MBX_REG_UNLOCK(ha);
29992 + if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)))
29993 + QLA_MBX_REG_UNLOCK(ha);
29999 + /* Turn on master enable */
30000 + cmd |= PCI_COMMAND_MASTER;
30001 + pci_write_config_word(ha->pdev, PCI_COMMAND, cmd);
30003 +#if defined(ISP2200) || defined(ISP2300)
30004 + /* Disable RISC pause on FPM parity error. */
30005 + WRT_REG_WORD(®->hccr, HCCR_DISABLE_PARITY_PAUSE);
30008 + /* Save PCI information. */
30009 + ha->isp_ctrl_status = RD_REG_WORD(®->ctrl_status);
30011 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
30017 + * qla2x00_pci_config() - Setup device PCI configuration registers.
30018 + * @ha: HA context
30020 + * Returns 0 on success.
30023 +qla2x00_pci_config(scsi_qla_host_t *ha)
30027 +#if defined(ISP2300)
30029 + unsigned long flags = 0;
30031 +#if MEMORY_MAPPED_IO
30032 + uint32_t mmapbase;
30033 + uint32_t page_offset, base;
30038 + if (qla2x00_verbose)
30039 + printk("scsi(%ld): Configuring PCI space...\n",
30043 + * Turn on PCI master; for system BIOSes that don't turn it on by
30046 + pci_set_master(ha->pdev);
30047 + pci_read_config_word(ha->pdev, PCI_REVISION_ID, &ha->revision);
30053 + * We want to respect framework's setting of PCI configuration space
30054 + * command register and also want to make sure that all bits of
30055 + * interest to us are properly set in command register.
30057 + pci_read_config_word(ha->pdev, PCI_COMMAND, &w);
30058 + w |= (PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER |
30059 + PCI_COMMAND_INVALIDATE | PCI_COMMAND_PARITY | PCI_COMMAND_SERR);
30061 +#if MEMORY_MAPPED_IO
30062 + DEBUG(printk("scsi(%ld): I/O SPACE and MEMORY MAPPED I/O enabled.\n",
30065 + DEBUG(printk("scsi(%ld): I/O SPACE enabled and MEMORY MAPPED I/O "
30066 + "disabled.\n", ha->host_no));
30068 + w &= ~PCI_COMMAND_MEMORY;
30071 +#if defined(ISP2300)
30072 + /* PCI Specification Revision 2.3 changes */
30073 + if (ha->pdev->device == QLA2322_DEVICE_ID) {
30074 + /* Command Register -- Reset Interrupt Disable -- BIT_10 */
30079 + * If this is a 2300 card and not 2312, reset the COMMAND_INVALIDATE
30080 + * due to a bug in the 2300. Unfortunately, the 2310 also reports
30081 + * itself as a 2300 so we need to get the fb revision level -- a 6
30082 + * indicates it really is a 2300 and not a 2310.
30084 + if (ha->pdev->device == QLA2300_DEVICE_ID) {
30085 + spin_lock_irqsave(&ha->hardware_lock, flags);
30087 + /* Pause RISC. */
30088 + WRT_REG_WORD(&ha->iobase->hccr, HCCR_PAUSE_RISC);
30089 + for (cnt = 0; cnt < 30000; cnt++) {
30090 + if ((RD_REG_WORD(&ha->iobase->hccr) &
30091 + HCCR_RISC_PAUSE) != 0)
30097 + /* Select FPM registers. */
30098 + WRT_REG_WORD(&ha->iobase->ctrl_status, 0x20);
30100 + /* Get the fb rev level */
30101 + if (RD_REG_WORD(&ha->iobase->fb_cmd) == FPM_2300)
30102 + w &= ~PCI_COMMAND_INVALIDATE;
30104 + /* Deselect FPM registers. */
30105 + WRT_REG_WORD(&ha->iobase->ctrl_status, 0x0);
30107 + /* Release RISC module. */
30108 + WRT_REG_WORD(&ha->iobase->hccr, HCCR_RELEASE_RISC);
30109 + for (cnt = 0; cnt < 30000; cnt++) {
30110 + if ((RD_REG_WORD(&ha->iobase->hccr) &
30111 + HCCR_RISC_PAUSE) == 0)
30117 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
30121 + pci_write_config_word(ha->pdev, PCI_COMMAND, w);
30123 + /* Reset expansion ROM address decode enable */
30124 + pci_read_config_word(ha->pdev, PCI_ROM_ADDRESS, &w);
30125 + w &= ~PCI_ROM_ADDRESS_ENABLE;
30126 + pci_write_config_word(ha->pdev, PCI_ROM_ADDRESS, w);
30129 +#if MEMORY_MAPPED_IO
30130 + /* Get memory mapped I/O address */
30131 + pci_read_config_dword(ha->pdev, PCI_BASE_ADDRESS_1, &mmapbase);
30132 + mmapbase &= PCI_BASE_ADDRESS_MEM_MASK;
30134 + /* Find proper memory chunk for memory map I/O reg */
30135 + base = mmapbase & PAGE_MASK;
30136 + page_offset = mmapbase - base;
30138 + /* Get virtual address for I/O registers */
30139 + ha->mmpbase = ioremap(base, page_offset + 256);
30140 + if (ha->mmpbase) {
30141 + ha->mmpbase += page_offset;
30142 + ha->iobase = ha->mmpbase;
30153 + * qla2x00_set_cache_line() - Sets PCI cache line parameter.
30154 + * @ha: HA context
30156 + * Returns 0 on success.
30159 +qla2x00_set_cache_line(struct scsi_qla_host * ha)
30161 + unsigned char cache_size;
30165 + /* Set the cache line. */
30166 + if (!ha->flags.set_cache_line_size_1) {
30172 + /* Taken from drivers/net/acenic.c */
30173 + pci_read_config_byte(ha->pdev, PCI_CACHE_LINE_SIZE, &cache_size);
30174 + cache_size <<= 2;
30175 + if (cache_size != SMP_CACHE_BYTES) {
30177 + "scsi(%ld): PCI cache line size set incorrectly "
30178 + "(%d bytes) by BIOS/FW, ",
30179 + ha->host_no, cache_size);
30181 + if (cache_size > SMP_CACHE_BYTES) {
30182 + printk(KERN_INFO "expecting %d.\n", SMP_CACHE_BYTES);
30185 + "correcting to %d.\n", SMP_CACHE_BYTES);
30186 + pci_write_config_byte(ha->pdev,
30187 + PCI_CACHE_LINE_SIZE, SMP_CACHE_BYTES >> 2);
30197 + * qla2x00_chip_diag() - Test chip for proper operation.
30198 + * @ha: HA context
30200 + * Returns 0 on success.
30203 +qla2x00_chip_diag(scsi_qla_host_t *ha)
30206 + device_reg_t *reg = ha->iobase;
30207 + unsigned long flags = 0;
30214 + /* Assume a failed state */
30217 + DEBUG3(printk("scsi(%ld): Testing device at %lx.\n",
30218 + ha->host_no, (u_long)®->flash_address));
30220 + spin_lock_irqsave(&ha->hardware_lock, flags);
30222 + /* Reset ISP chip. */
30223 + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET);
30224 + data = qla2x00_debounce_register(®->ctrl_status);
30225 + for (cnt = 6000000 ; cnt && (data & CSR_ISP_SOFT_RESET); cnt--) {
30227 + data = RD_REG_WORD(®->ctrl_status);
30232 + goto chip_diag_failed;
30234 + DEBUG3(printk("scsi(%ld): Reset register cleared by chip reset\n",
30237 + /* Reset RISC processor. */
30238 + WRT_REG_WORD(®->hccr, HCCR_RESET_RISC);
30239 + WRT_REG_WORD(®->hccr, HCCR_RELEASE_RISC);
30241 +#if defined(ISP2300)
30242 + /* Workaround for QLA2312 PCI parity error */
30243 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
30244 + ha->pdev->device == QLA2322_DEVICE_ID) {
30247 + data = qla2x00_debounce_register(®->mailbox0);
30248 + for (cnt = 6000000; cnt && (data == MBS_BUSY); cnt--) {
30250 + data = RD_REG_WORD(®->mailbox0);
30255 + data = qla2x00_debounce_register(®->mailbox0);
30256 + for (cnt = 6000000; cnt && (data == MBS_BUSY); cnt--) {
30258 + data = RD_REG_WORD(®->mailbox0);
30263 + goto chip_diag_failed;
30265 + /* Check product ID of chip */
30266 + DEBUG3(printk("scsi(%ld): Checking product ID of chip\n",
30269 + mb[1] = RD_REG_WORD(®->mailbox1);
30270 + mb[2] = RD_REG_WORD(®->mailbox2);
30271 + mb[3] = RD_REG_WORD(®->mailbox3);
30272 + mb[4] = qla2x00_debounce_register(®->mailbox4);
30274 + if (mb[1] != PROD_ID_1 ||
30275 + (mb[2] != PROD_ID_2 && mb[2] != PROD_ID_2a) ||
30276 + mb[3] != PROD_ID_3 ||
30277 + (mb[4] != PROD_ID_4 && mb[4] != PROD_ID_4a)) {
30279 + printk(KERN_WARNING
30280 + "scsi(%ld): Wrong product ID = 0x%x,0x%x,0x%x,0x%x\n",
30281 + ha->host_no, mb[1], mb[2], mb[3], mb[4]);
30283 + goto chip_diag_failed;
30286 + /* Adjust fw RISC transfer size */
30287 + ha->fw_transfer_size = REQUEST_ENTRY_SIZE * REQUEST_ENTRY_CNT;
30288 +#if defined(ISP2200)
30289 + if (ha->pdev->device == QLA2200_DEVICE_ID &&
30290 + RD_REG_WORD(®->mailbox7) == QLA2200A_RISC_ROM_VER) {
30292 + /* Limit firmware transfer size with a 2200A */
30293 + DEBUG3(printk("scsi(%ld): Found QLA2200A chip.\n",
30296 + ha->fw_transfer_size = 128;
30300 + /* Wrap Incoming Mailboxes Test. */
30301 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
30303 + DEBUG3(printk("scsi(%ld): Checking mailboxes.\n", ha->host_no));
30304 + status = qla2x00_mbx_reg_test(ha);
30306 + DEBUG(printk("scsi(%ld): Failed mailbox send register test\n",
30308 + printk(KERN_WARNING
30309 + "scsi(%ld): Failed mailbox send register test\n",
30313 + /* Flag a successful status */
30316 + spin_lock_irqsave(&ha->hardware_lock, flags);
30320 + DEBUG2_3(printk("scsi(%ld): Chip diagnostics **** FAILED "
30321 + "****\n", ha->host_no));
30323 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
30331 + * qla2x00_setup_chip() - Load and start RISC firmware.
30332 + * @ha: HA context
30334 + * Returns 0 on success.
30337 +qla2x00_setup_chip(scsi_qla_host_t *ha)
30339 + uint8_t status = 0;
30341 + uint16_t *risc_code;
30342 + unsigned long risc_address;
30343 + unsigned long risc_code_size;
30346 + uint16_t *req_ring;
30347 + struct qla_fw_info *fw_iter;
30351 + /* Load firmware sequences */
30352 + fw_iter = ha->brd_info->fwinfo;
30353 + while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
30354 + risc_code = fw_iter->fwcode;
30355 + risc_code_size = *fw_iter->fwlen;
30357 + if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) {
30358 + risc_address = *fw_iter->fwstart;
30360 + /* Extended address */
30361 + risc_address = *fw_iter->lfwstart;
30366 + while (risc_code_size > 0 && !status) {
30367 + cnt = (uint16_t)(ha->fw_transfer_size >> 1);
30368 + if (cnt > risc_code_size)
30369 + cnt = risc_code_size;
30371 + DEBUG7(printk("scsi(%ld): Loading risc segment@ "
30372 + "addr %p, number of bytes 0x%x, offset 0x%lx.\n",
30373 + ha->host_no, risc_code, cnt, risc_address));
30375 + req_ring = (uint16_t *)ha->request_ring;
30376 + for (i = 0; i < cnt; i++)
30377 + req_ring[i] = cpu_to_le16(risc_code[i]);
30380 + * Flush written firmware to the ha->request_ring buffer
30383 + flush_cache_all();
30385 + if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) {
30386 + status = qla2x00_load_ram(ha,
30387 + ha->request_dma, risc_address, cnt);
30389 + status = qla2x00_load_ram_ext(ha,
30390 + ha->request_dma, risc_address, cnt);
30393 + DEBUG(printk("scsi(%ld): [ERROR] Failed to "
30394 + "load segment %d of firmware\n",
30395 + ha->host_no, num));
30396 + printk(KERN_WARNING
30397 + "scsi(%ld): [ERROR] Failed to load "
30398 + "segment %d of firmware\n",
30399 + ha->host_no, num);
30401 + qla2x00_dump_regs(ha->host);
30405 + risc_code += cnt;
30406 + risc_address += cnt;
30407 + risc_code_size -= cnt;
30411 + /* Next firmware sequence */
30415 + /* Verify checksum of loaded RISC code. */
30417 + DEBUG(printk("scsi(%ld): Verifying Checksum of loaded RISC "
30418 + "code.\n", ha->host_no));
30420 + status = qla2x00_verify_checksum(ha);
30421 + if (status == QL_STATUS_SUCCESS) {
30422 + /* Start firmware execution. */
30423 + DEBUG(printk("scsi(%ld): Checksum OK, start "
30424 + "firmware.\n", ha->host_no));
30426 + status = qla2x00_execute_fw(ha);
30429 + DEBUG2(printk(KERN_INFO
30430 + "scsi(%ld): ISP Firmware failed checksum.\n",
30436 + DEBUG2_3(printk("scsi(%ld): Setup chip **** FAILED ****.\n",
30444 + * qla2x00_init_rings() - Initializes firmware.
30445 + * @ha: HA context
30447 + * Beginning of request ring has initialization control block already built
30448 + * by nvram config routine.
30450 + * Returns 0 on success.
30453 +qla2x00_init_rings(scsi_qla_host_t *ha)
30455 + unsigned long flags = 0;
30458 + device_reg_t *reg = ha->iobase;
30461 + spin_lock_irqsave(&ha->hardware_lock, flags);
30463 + /* Clear outstanding commands array. */
30464 + for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS; cnt++)
30465 + ha->outstanding_cmds[cnt] = 0;
30467 + ha->current_outstanding_cmd = 0;
30469 + /* Clear RSCN queue. */
30470 + ha->rscn_in_ptr = 0;
30471 + ha->rscn_out_ptr = 0;
30473 + /* Initialize firmware. */
30474 + ha->request_ring_ptr = ha->request_ring;
30475 + ha->req_ring_index = 0;
30476 + ha->req_q_cnt = REQUEST_ENTRY_CNT;
30477 + ha->response_ring_ptr = ha->response_ring;
30478 + ha->rsp_ring_index = 0;
30480 + WRT_REG_WORD(ISP_REQ_Q_IN(reg), 0);
30481 + WRT_REG_WORD(ISP_REQ_Q_OUT(reg), 0);
30482 + WRT_REG_WORD(ISP_RSP_Q_IN(reg), 0);
30483 + WRT_REG_WORD(ISP_RSP_Q_OUT(reg), 0);
30485 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
30487 + DEBUG(printk("scsi(%ld): Issue init firmware.\n", ha->host_no));
30488 + status = qla2x00_init_firmware(ha, sizeof(init_cb_t));
30490 + DEBUG2_3(printk("scsi(%ld): Init firmware **** FAILED ****.\n",
30493 + /* Setup seriallink options */
30494 + uint16_t swing, emphasis;
30495 + uint16_t opt10, opt11;
30497 + DEBUG3(printk("scsi(%ld): Serial link options:\n",
30499 + DEBUG3(qla2x00_dump_buffer(
30500 + (uint8_t *)&ha->fw_seriallink_options,
30501 + sizeof(ha->fw_seriallink_options)));
30503 + qla2x00_get_fw_options(ha,
30504 + &ha->fw_options1, &ha->fw_options2, &ha->fw_options3);
30506 + ha->fw_options1 &= ~BIT_8;
30507 + if (ha->fw_seriallink_options[1] & BIT_2)
30508 + ha->fw_options1 |= BIT_8;
30510 + /* 1G settings */
30511 + swing = ha->fw_seriallink_options[0] & (BIT_2 | BIT_1 | BIT_0);
30512 + emphasis = ha->fw_seriallink_options[0] & (BIT_4 | BIT_3);
30514 + opt10 = (emphasis << 14) | (swing << 8) | 0x3;
30516 + /* 2G settings */
30517 + swing = ha->fw_seriallink_options[0] & (BIT_7 | BIT_6 | BIT_5);
30519 + emphasis = ha->fw_seriallink_options[1] & (BIT_1 | BIT_0);
30520 + opt11 = (emphasis << 14) | (swing << 8) | 0x3;
30522 + qla2x00_set_fw_options(ha, ha->fw_options1,
30523 + ha->fw_options2, ha->fw_options3, opt10, opt11);
30525 + DEBUG3(printk("scsi(%ld): Init firmware -- success.\n",
30533 + * qla2x00_fw_ready() - Waits for firmware ready.
30534 + * @ha: HA context
30536 + * Returns 0 on success.
30539 +qla2x00_fw_ready(scsi_qla_host_t *ha)
30541 + uint8_t status = 0;
30542 + unsigned long wtime, mtime;
30543 + uint16_t min_wait; /* Minimum wait time if loop is down */
30544 + uint16_t wait_time; /* Wait time if loop is coming ready */
30545 + uint16_t pause_time;
30546 + uint16_t fw_state;
30548 + /* 20 seconds for loop down. */
30550 + ha->device_flags &= ~DFLG_NO_CABLE;
30553 + * Firmware should take at most one RATOV to login, plus 5 seconds for
30554 + * our own processing.
30556 + if ((wait_time = (ha->retry_count*ha->login_timeout) + 5) < min_wait) {
30557 + wait_time = min_wait;
30560 + pause_time = 1000; /* 1000 usec */
30562 + /* Min wait time if loop down */
30563 + mtime = jiffies + (min_wait * HZ);
30565 + /* wait time before firmware ready */
30566 + wtime = jiffies + (wait_time * HZ);
30568 + /* Wait for ISP to finish LIP */
30569 + if (!qla2x00_quiet)
30571 + "scsi(%ld): Waiting for LIP to complete...\n", ha->host_no);
30573 + DEBUG3(printk("scsi(%ld): Waiting for LIP to complete...\n",
30577 + status = qla2x00_get_firmware_state(ha, &fw_state);
30579 + if (status == QL_STATUS_SUCCESS) {
30580 + if (fw_state == FSTATE_READY) {
30581 + DEBUG(printk("scsi(%ld): F/W Ready - OK \n",
30584 + qla2x00_get_retry_cnt(ha,
30585 + &ha->retry_count, &ha->login_timeout);
30587 + status = QL_STATUS_SUCCESS;
30591 + status = QL_STATUS_ERROR;
30593 + if (atomic_read(&ha->loop_down_timer) ||
30594 + fw_state == FSTATE_LOSS_OF_SYNC) {
30596 + /* Loop down. Timeout on min_wait */
30597 + if (time_after_eq(jiffies, mtime)) {
30599 + "scsi(%ld): Cable is "
30600 + "unplugged...\n",
30603 + ha->device_flags |= DFLG_NO_CABLE;
30608 + /* Mailbox cmd failed. Timeout on min_wait. */
30609 + if (time_after_eq(jiffies, mtime))
30613 + if (time_after_eq(jiffies, wtime))
30616 + /* Delay for a while */
30617 + set_current_state(TASK_INTERRUPTIBLE);
30618 + schedule_timeout(HZ / 2);
30620 + DEBUG3(printk("scsi(%ld): fw_state=%x curr time=%lx.\n",
30621 + ha->host_no, fw_state, jiffies));
30624 + DEBUG(printk("scsi(%ld): fw_state=%x curr time=%lx.\n",
30625 + ha->host_no, fw_state, jiffies));
30628 + DEBUG2_3(printk("scsi(%ld): Firmware ready **** FAILED ****.\n",
30636 +* qla2x00_configure_hba
30637 +* Setup adapter context.
30640 +* ha = adapter state pointer.
30649 +qla2x00_configure_hba(scsi_qla_host_t *ha)
30652 + uint16_t loop_id;
30657 + char connect_type[22];
30661 + /* Get host addresses. */
30662 + rval = qla2x00_get_adapter_id(ha,
30663 + &loop_id, &al_pa, &area, &domain, &topo);
30664 + if (rval != QL_STATUS_SUCCESS) {
30665 + printk(KERN_WARNING
30666 + "scsi(%ld): ERROR -- Unable to get host loop ID.\n",
30673 + "scsi(%ld): Cannot get topology - retrying.\n",
30675 + return (QL_STATUS_ERROR);
30678 + ha->loop_id = loop_id;
30680 +#if defined(ISP2100)
30681 + /* Make sure 2100 only has loop, in case of any firmware bug. */
30686 + ha->min_external_loopid = SNS_FIRST_LOOP_ID;
30687 + ha->operating_mode = LOOP;
30691 + DEBUG3(printk("scsi(%ld): HBA in NL topology.\n",
30693 + ha->current_topology = ISP_CFG_NL;
30694 + strcpy(connect_type, "(Loop)");
30698 + DEBUG3(printk("scsi(%ld): HBA in FL topology.\n",
30700 + ha->current_topology = ISP_CFG_FL;
30701 + strcpy(connect_type, "(FL_Port)");
30705 + DEBUG3(printk("scsi(%ld): HBA in N P2P topology.\n",
30707 + ha->operating_mode = P2P;
30708 + ha->current_topology = ISP_CFG_N;
30709 + strcpy(connect_type, "(N_Port-to-N_Port)");
30713 + DEBUG3(printk("scsi(%ld): HBA in F P2P topology.\n",
30715 + ha->operating_mode = P2P;
30716 + ha->current_topology = ISP_CFG_F;
30717 + strcpy(connect_type, "(F_Port)");
30721 + DEBUG3(printk("scsi(%ld): HBA in unknown topology %x. "
30723 + ha->host_no, topo));
30724 + ha->current_topology = ISP_CFG_NL;
30725 + strcpy(connect_type, "(Loop)");
30729 + /* Save Host port and loop ID. */
30730 + /* byte order - Big Endian */
30731 + ha->d_id.b.domain = domain;
30732 + ha->d_id.b.area = area;
30733 + ha->d_id.b.al_pa = al_pa;
30735 + if (!qla2x00_quiet)
30737 + "scsi(%ld): Topology - %s, Host Loop address 0x%x\n",
30738 + ha->host_no, connect_type, ha->loop_id);
30741 + DEBUG2_3(printk("scsi(%ld): FAILED.\n", ha->host_no));
30743 + DEBUG3(printk("scsi(%ld): exiting normally.\n", ha->host_no));
30750 +* NVRAM configuration for ISP 2xxx
30753 +* ha = adapter block pointer.
30756 +* initialization control block in response_ring
30757 +* host adapters parameters in host adapter block
30763 +qla2x00_nvram_config(scsi_qla_host_t *ha)
30765 + uint8_t status = 0;
30766 + uint8_t chksum = 0;
30767 + uint16_t cnt, base;
30768 + uint8_t *dptr1, *dptr2;
30769 + init_cb_t *icb = ha->init_cb;
30770 + nvram_t *nv = (nvram_t *)ha->request_ring;
30771 + uint16_t *wptr = (uint16_t *)ha->request_ring;
30772 +#if defined(ISP2300)
30773 + device_reg_t *reg = ha->iobase;
30777 + if (ha->flags.nvram_config_done)
30782 + /* Determine NVRAM starting address. */
30784 +#if defined(ISP2300)
30785 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
30786 + ha->pdev->device == QLA2322_DEVICE_ID) {
30787 + data = RD_REG_WORD(®->ctrl_status);
30788 + if ((data >> 14) == 1)
30791 + data = RD_REG_WORD(®->nvram);
30792 + while (data & NVR_BUSY) {
30794 + data = RD_REG_WORD(®->nvram);
30797 + /* Lock resource */
30798 + WRT_REG_WORD(®->host_semaphore, 0x1);
30800 + data = RD_REG_WORD(®->host_semaphore);
30801 + while ((data & BIT_0) == 0) {
30802 + /* Lock failed */
30804 + WRT_REG_WORD(®->host_semaphore, 0x1);
30806 + data = RD_REG_WORD(®->host_semaphore);
30811 + /* Get NVRAM data and calculate checksum. */
30812 + for (cnt = 0; cnt < sizeof(nvram_t)/2; cnt++) {
30813 + *wptr = cpu_to_le16(qla2x00_get_nvram_word(ha, (cnt+base)));
30814 + chksum += (uint8_t)*wptr;
30815 + chksum += (uint8_t)(*wptr >> 8);
30819 +#if defined(ISP2300)
30820 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
30821 + ha->pdev->device == QLA2322_DEVICE_ID) {
30822 + /* Unlock resource */
30823 + WRT_REG_WORD(®->host_semaphore, 0);
30827 + DEBUG5(printk("scsi(%ld): Contents of NVRAM\n", ha->host_no));
30828 + DEBUG5(qla2x00_dump_buffer(
30829 + (uint8_t *)ha->request_ring, sizeof(nvram_t)));
30831 + /* Bad NVRAM data, set defaults parameters. */
30832 + if (chksum || nv->id[0] != 'I' || nv->id[1] != 'S' ||
30833 + nv->id[2] != 'P' || nv->id[3] != ' ' || nv->nvram_version < 1) {
30835 + /* Reset NVRAM data. */
30836 + DEBUG(printk("scsi(%ld): Using defaults for NVRAM - "
30837 + "checksum=0x%x, Id=%c, version=0x%x\n",
30839 + chksum, nv->id[0], nv->nvram_version));
30841 + memset(nv, 0, sizeof(nvram_t));
30844 + * Set default initialization control block.
30846 + nv->parameter_block_version = ICB_VERSION;
30848 +#if defined(ISP2300)
30849 + nv->firmware_options[0] = BIT_2 | BIT_1;
30850 + nv->firmware_options[1] = BIT_7 | BIT_5;
30851 + nv->add_firmware_options[0] = BIT_5;
30852 + nv->add_firmware_options[1] = BIT_5 | BIT_4;
30853 + nv->frame_payload_size = __constant_cpu_to_le16(2048);
30854 +#elif defined(ISP2200)
30855 + nv->firmware_options[0] = BIT_3 | BIT_2 | BIT_1;
30856 + nv->firmware_options[1] = BIT_7 | BIT_5;
30857 + nv->add_firmware_options[0] = BIT_5 | BIT_4;
30858 + nv->add_firmware_options[1] = BIT_5 | BIT_4;
30859 + nv->frame_payload_size = __constant_cpu_to_le16(1024);
30860 +#else /* defined(ISP2100) */
30861 + nv->firmware_options[0] = BIT_3 | BIT_1;
30862 + nv->firmware_options[1] = BIT_5;
30863 + nv->frame_payload_size = __constant_cpu_to_le16(1024);
30866 + nv->max_iocb_allocation = __constant_cpu_to_le16(256);
30867 + nv->execution_throttle = __constant_cpu_to_le16(16);
30868 + nv->retry_count = 8;
30869 + nv->retry_delay = 1;
30871 + nv->port_name[0] = 33;
30872 + nv->port_name[3] = 224;
30873 + nv->port_name[4] = 139;
30875 + nv->login_timeout = 4;
30878 + * Set default host adapter parameters
30880 + nv->host_p[1] = BIT_2;
30881 + nv->reset_delay = 5;
30882 + nv->port_down_retry_count = 8;
30883 + nv->max_luns_per_target = __constant_cpu_to_le16(8);
30888 + /* Reset Initialization control block */
30889 + memset(icb, 0, sizeof(init_cb_t));
30892 + * Setup driver NVRAM options.
30894 + nv->firmware_options[0] |= (BIT_6 | BIT_1);
30895 + nv->firmware_options[0] &= ~(BIT_5 | BIT_4);
30896 + nv->firmware_options[1] |= (BIT_5 | BIT_0);
30897 + nv->firmware_options[1] &= ~BIT_4;
30898 +#if defined(ISP2300)
30899 + nv->firmware_options[0] |= BIT_2;
30900 + nv->firmware_options[0] &= ~BIT_3;
30901 +#elif defined(ISP2200)
30902 + nv->firmware_options[0] |= BIT_2;
30905 +#if !defined(FC_IP_SUPPORT)
30906 + /* Enable FC-Tape support */
30907 + nv->firmware_options[1] |= BIT_7;
30908 + nv->add_firmware_options[1] |= (BIT_5 | BIT_4);
30912 + * Copy over NVRAM RISC parameter block to initialization control block.
30914 + dptr1 = (uint8_t *)icb;
30915 + dptr2 = (uint8_t *)&nv->parameter_block_version;
30916 + cnt = (uint8_t *)&icb->request_q_outpointer - (uint8_t *)&icb->version;
30918 + *dptr1++ = *dptr2++;
30920 + /* Copy 2nd half. */
30921 + dptr1 = (uint8_t *)icb->add_firmware_options;
30922 + cnt = (uint8_t *)icb->reserved_3 - (uint8_t *)icb->add_firmware_options;
30924 + *dptr1++ = *dptr2++;
30926 + /* Prepare nodename */
30927 + if ((icb->firmware_options[1] & BIT_6) == 0) {
30929 + * Firmware will apply the following mask if the nodename was
30932 + memcpy(icb->node_name, icb->port_name, WWN_SIZE);
30933 + icb->node_name[0] &= 0xF0;
30937 + * Set host adapter parameters.
30939 + ha->nvram_version = nv->nvram_version;
30941 + ha->flags.disable_luns = ((nv->host_p[0] & BIT_2) ? 1 : 0);
30942 + ha->flags.disable_risc_code_load = ((nv->host_p[0] & BIT_4) ? 1 : 0);
30943 + ha->flags.set_cache_line_size_1 = ((nv->host_p[0] & BIT_5) ? 1 : 0);
30944 + ha->flags.enable_64bit_addressing = ((nv->host_p[1] & BIT_0) ? 1 : 0);
30945 + ha->flags.enable_lip_reset = ((nv->host_p[1] & BIT_1) ? 1 : 0);
30946 + ha->flags.enable_lip_full_login = ((nv->host_p[1] & BIT_2) ? 1 : 0);
30947 + ha->flags.enable_target_reset = ((nv->host_p[1] & BIT_3) ? 1 : 0);
30948 + ha->flags.enable_flash_db_update = ((nv->host_p[1] & BIT_4) ? 1 : 0);
30950 + ha->flags.link_down_error_enable = 1;
30952 + ha->flags.enable_target_mode =
30953 + ((icb->firmware_options[0] & BIT_4) ? 1 : 0);
30954 + ha->operating_mode =
30955 + (icb->add_firmware_options[0] & (BIT_6 | BIT_5 | BIT_4)) >> 4;
30957 + qla2x00_config_dma_addressing(ha);
30959 + ha->fw_seriallink_options[0] = nv->seriallink_options[0];
30960 + ha->fw_seriallink_options[1] = nv->seriallink_options[1];
30962 + /* save HBA serial number */
30963 + ha->serial0 = icb->port_name[5];
30964 + ha->serial1 = icb->port_name[6];
30965 + ha->serial2 = icb->port_name[7];
30966 + memcpy(ha->node_name, icb->node_name, WWN_SIZE);
30967 +#if defined(FC_IP_SUPPORT)
30968 + memcpy(ha->ip_port_name, icb->port_name, WWN_SIZE);
30971 + ha->hiwat = le16_to_cpu(icb->max_iocb_allocation);
30972 + ha->execution_throttle = 0xFFFF;
30973 + icb->execution_throttle = __constant_cpu_to_le16(0xFFFF);
30975 + ha->retry_count = nv->retry_count;
30977 + /* Set minimum login_timeout to 4 seconds. */
30978 + if (nv->login_timeout < ql2xlogintimeout)
30979 + nv->login_timeout = ql2xlogintimeout;
30980 + if (nv->login_timeout < 4)
30981 + nv->login_timeout = 4;
30982 + ha->login_timeout = nv->login_timeout;
30983 + icb->login_timeout = nv->login_timeout;
30987 + * port_down_retry_count updated twice
30990 + ha->port_down_retry_count = nv->port_down_retry_count;
30991 + ha->minimum_timeout =
30992 + (ha->login_timeout * ha->retry_count) + ha->port_down_retry_count;
30993 + ha->loop_reset_delay = nv->reset_delay;
30995 + /* Will get the value from NVRAM. */
30996 + ha->loop_down_timeout = LOOP_DOWN_TIMEOUT;
30997 + ha->loop_down_abort_time = LOOP_DOWN_TIME - ha->loop_down_timeout;
30999 + /* save OEM related items for QLA2200s and QLA2300s */
31000 + ha->oem_id = nv->oem_id;
31001 + memcpy(ha->oem_specific, nv->oem_specific, sizeof(ha->oem_specific));
31003 + ha->max_probe_luns = le16_to_cpu(nv->max_luns_per_target);
31004 + if (ha->max_probe_luns == 0)
31005 + ha->max_probe_luns = MIN_LUNS;
31007 +#if defined(IOCB_THROLLE_USAGE)
31008 + /* High-water mark of IOCBs */
31009 + ha->iocb_hiwat = MAX_IOCBS_AVAILBALE;
31012 +#if USE_BIOS_MAX_LUNS
31013 + ha->max_luns = le16_to_cpu(nv->max_luns_per_target);
31014 + if (ha->max_luns == 0)
31015 + ha->max_luns = MAX_LUNS;
31016 + else if (ha->max_luns > MAX_LUNS)
31017 + ha->max_luns = MAX_LUNS;
31019 + ha->max_luns = MAX_LUNS;
31024 + * port_down_retry_count updated twice
31028 + * Need enough time to try and get the port back.
31030 + if (qlport_down_retry)
31031 + ha->port_down_retry_count = qlport_down_retry;
31032 + /* Set login_retry_count */
31033 + ha->login_retry_count = nv->retry_count;
31034 + if (ha->port_down_retry_count == nv->port_down_retry_count &&
31035 + ha->port_down_retry_count > 3)
31036 + ha->login_retry_count = ha->port_down_retry_count;
31037 + else if (ha->port_down_retry_count > ha->login_retry_count)
31038 + ha->login_retry_count = ha->port_down_retry_count;
31040 + ha->binding_type = Bind;
31041 + if ((ha->binding_type != BIND_BY_PORT_NAME) &&
31042 + (ha->binding_type != BIND_BY_PORT_ID) &&
31043 + (ha->binding_type != BIND_BY_NODE_NAME)) {
31045 + printk(KERN_WARNING
31046 + "scsi(%ld): Invalid binding type specified (%d), "
31047 + "defaulting to BIND_BY_PORT_NAME!!!\n",
31048 + ha->host_no, ha->binding_type);
31050 + ha->binding_type = BIND_BY_PORT_NAME;
31054 + * Setup ring parameters in initialization control block
31056 + icb->request_q_outpointer = __constant_cpu_to_le16(0);
31057 + icb->response_q_inpointer = __constant_cpu_to_le16(0);
31058 + icb->request_q_length = __constant_cpu_to_le16(REQUEST_ENTRY_CNT);
31059 + icb->response_q_length = __constant_cpu_to_le16(RESPONSE_ENTRY_CNT);
31060 + icb->request_q_address[0] = cpu_to_le32(LSD(ha->request_dma));
31061 + icb->request_q_address[1] = cpu_to_le32(MSD(ha->request_dma));
31062 + icb->response_q_address[0] = cpu_to_le32(LSD(ha->response_dma));
31063 + icb->response_q_address[1] = cpu_to_le32(MSD(ha->response_dma));
31065 + icb->lun_enables = __constant_cpu_to_le16(0);
31066 + icb->command_resource_count = 0;
31067 + icb->immediate_notify_resource_count = 0;
31068 + icb->timeout = __constant_cpu_to_le16(0);
31070 + ha->flags.nvram_config_done = 1;
31073 + DEBUG2_3(printk(KERN_WARNING
31074 + "scsi(%ld): NVRAM configuration failed!\n", ha->host_no));
31083 +* qla2x00_init_fc_db
31084 +* Initializes Fibre Channel Device Database.
31087 +* ha = adapter block pointer.
31090 +* ha->fc_db = initialized
31093 +qla2x00_init_fc_db(scsi_qla_host_t *ha)
31099 + /* Initialize fc database if it is not initialized. */
31100 + if (!ha->fc_db[0].loop_id && !ha->fc_db[1].loop_id) {
31101 + ha->flags.updated_fc_db = FALSE;
31103 + /* Initialize target database. */
31104 + for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
31105 + ha->fc_db[cnt].name[0] = 0L;
31106 + ha->fc_db[cnt].name[1] = 0L;
31107 + ha->fc_db[cnt].loop_id = PORT_UNUSED;
31108 + ha->fc_db[cnt].port_login_retry_count =
31109 + ha->port_down_retry_count * PORT_RETRY_TIME;
31110 + ha->fc_db[cnt].flag = 0; /* v2.19.5b3 */
31119 +* qla2x00_init_tgt_map
31120 +* Initializes target map.
31123 +* ha = adapter block pointer.
31126 +* TGT_Q initialized
31129 +qla2x00_init_tgt_map(scsi_qla_host_t *ha)
31135 + for (t = 0; t < MAX_TARGETS; t++)
31136 + TGT_Q(ha, t) = (os_tgt_t *)NULL;
31142 + * qla2x00_configure_loop
31143 + * Updates Fibre Channel Device Database with what is actually on loop.
31146 + * ha = adapter block pointer.
31149 + * ha->fc_db = updated
31154 + * 2 = database was full and device was not configured.
31157 +qla2x00_configure_loop(scsi_qla_host_t *ha)
31159 + uint8_t rval = 0;
31160 + uint8_t rval1 = 0;
31161 + uint8_t enable_slot_reuse = FALSE;
31163 + static unsigned long flags, save_flags;
31164 +#if defined(FC_IP_SUPPORT)
31165 + struct ip_device *ipdev;
31170 + DEBUG(printk("scsi(%ld): Begin configure loop.\n", ha->host_no));
31172 + /* Get Initiator ID */
31173 + if (qla2x00_configure_hba(ha)) {
31174 + DEBUG(printk("scsi(%ld): Unable to configure HBA.\n",
31179 +#if defined(FC_IP_SUPPORT)
31180 + /* Disable all IP devices in linked list */
31181 + for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next)
31182 + ipdev->flags &= ~IP_DEV_FLAG_PRESENT;
31183 +#endif /* FC_IP_SUPPORT */
31185 + save_flags = flags = ha->dpc_flags;
31186 + DEBUG(printk("scsi(%ld): Configure loop -- dpc flags =0x%lx\n",
31187 + ha->host_no, flags));
31189 + /* dg 02/26/02 ha->dpc_flags &= ~(LOCAL_LOOP_UPDATE | RSCN_UPDATE); */
31192 + * If we have both an RSCN and PORT UPDATE pending then handle them
31193 + * both at the same time.
31195 + clear_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
31196 + clear_bit(RSCN_UPDATE, &ha->dpc_flags);
31197 + ha->mem_err = 0 ;
31199 + /* Determine what we need to do */
31200 + if (ha->current_topology == ISP_CFG_FL &&
31201 + (test_bit(LOCAL_LOOP_UPDATE, &flags))) {
31203 + ha->flags.rscn_queue_overflow = TRUE;
31204 + set_bit(RSCN_UPDATE, &flags);
31206 + } else if (ha->current_topology == ISP_CFG_F &&
31207 + (test_bit(LOCAL_LOOP_UPDATE, &flags))) {
31209 + ha->flags.rscn_queue_overflow = TRUE;
31210 + set_bit(RSCN_UPDATE, &flags);
31211 + clear_bit(LOCAL_LOOP_UPDATE, &flags);
31213 + } else if (!ha->flags.online ||
31214 + (test_bit(ABORT_ISP_ACTIVE, &flags))) {
31216 + ha->flags.rscn_queue_overflow = TRUE;
31217 + set_bit(RSCN_UPDATE, &flags);
31218 + set_bit(LOCAL_LOOP_UPDATE, &flags);
31222 + if (test_bit(LOCAL_LOOP_UPDATE, &flags)) {
31224 + qla2x00_configure_local_loop(ha, enable_slot_reuse);
31227 + if (test_bit(RSCN_UPDATE, &flags)) {
31228 + rval1 = qla2x00_configure_fabric(ha, enable_slot_reuse);
31229 + if ((rval1 & BIT_0) && ha->sns_retry_cnt < 8) {
31230 + ha->sns_retry_cnt++;
31231 + set_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags);
31235 + /* If devices not configured first time try reusing slots.*/
31236 + if (enable_slot_reuse == FALSE && (rval & BIT_1))
31237 + enable_slot_reuse = TRUE;
31239 + enable_slot_reuse = FALSE;
31241 + /* Isolate error status. */
31242 + if (rval & BIT_0) {
31248 + } while (enable_slot_reuse == TRUE && rval == 0);
31250 + if (!atomic_read(&ha->loop_down_timer) &&
31251 + !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))) {
31253 + /* Mark devices that are not present as DEV_ABSENCE */
31254 + for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
31255 + if (ha->fc_db[cnt].loop_id & PORT_LOST_ID) {
31256 + ha->fc_db[cnt].flag |= DEV_ABSENCE;
31258 + /* device returned */
31259 + if (ha->fc_db[cnt].loop_id <
31260 + LAST_SNS_LOOP_ID &&
31261 + ha->fc_db[cnt].flag & DEV_ABSENCE) {
31262 + ha->fc_db[cnt].flag &= ~DEV_ABSENCE;
31263 + ha->fc_db[cnt].flag |= DEV_RETURN;
31264 + ha->fc_db[cnt].port_login_retry_count =
31265 + ha->port_down_retry_count *
31271 + rval1 = qla2x00_build_fcport_list(ha);
31272 + if (((rval1 & BIT_0) || ha->mem_err != 0) &&
31273 + ha->sns_retry_cnt < 8) {
31275 + ha->sns_retry_cnt++;
31276 + set_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags);
31279 + if (!ha->flags.failover_enabled)
31280 + qla2x00_config_os(ha);
31282 + /* If we found all devices then go ready */
31283 + if (!(test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags))) {
31284 + ha->loop_state = LOOP_READY;
31286 + if (ha->flags.failover_enabled) {
31287 + DEBUG(printk("scsi(%ld): schedule FAILBACK "
31288 + "EVENT\n", ha->host_no));
31289 + if (!(test_and_set_bit(FAILOVER_EVENT_NEEDED,
31290 + &ha->dpc_flags))) {
31291 + ha->failback_delay = failbackTime;
31293 + set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
31294 + ha->failover_type = MP_NOTIFY_LOOP_UP;
31297 + DEBUG(printk("scsi(%ld): LOOP READY\n", ha->host_no));
31299 + if (test_bit(LOCAL_LOOP_UPDATE, &save_flags))
31300 + set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
31301 + if (test_bit(RSCN_UPDATE, &save_flags))
31302 + set_bit(RSCN_UPDATE, &ha->dpc_flags);
31305 + DEBUG(printk("scsi(%ld): Loop down counter running= %d or "
31306 + "Resync needed- dpc flags= %ld\n",
31308 + atomic_read(&ha->loop_down_timer), ha->dpc_flags));
31309 + /* ???? dg 02/26/02 rval = 1; */
31313 + DEBUG2_3(printk("%s(%ld): *** FAILED ***\n",
31314 + __func__, ha->host_no));
31316 + DEBUG3(printk("%s: exiting normally\n", __func__));
31323 + * qla2x00_configure_local_loop
31324 + * Updates Fibre Channel Device Database with local loop devices.
31327 + * ha = adapter block pointer.
31328 + * enable_slot_reuse = allows the use of PORT_AVAILABLE slots.
31333 + * BIT_1 = database was full and a device was not configured.
31336 +qla2x00_configure_local_loop(scsi_qla_host_t *ha, uint8_t enable_slot_reuse)
31338 + uint8_t status = 0;
31340 + uint8_t port_name[8];
31341 + uint8_t update_status = 0;
31342 + uint16_t index, size;
31343 + dma_addr_t phys_address = 0;
31345 + port_list_entry_t *gn_list, *port_entry;
31346 + uint16_t localdevices = 0;
31347 +#if defined(FC_IP_SUPPORT)
31348 + uint16_t list_entry_loop_id;
31354 + * No point in continuing if the loop is in a volatile state --
31355 + * reschedule LOCAL_LOOP_UPDATE for later processing
31357 + if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) {
31358 + set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
31362 + gn_list = pci_alloc_consistent(ha->pdev,
31363 + sizeof(GN_LIST_LENGTH), &phys_address);
31364 + if (gn_list == NULL) {
31365 + DEBUG2(printk("scsi(%ld): Failed to allocate memory, No local "
31369 + printk(KERN_WARNING
31370 + "scsi(%ld): Memory Allocation failed - port_list",
31376 + memset(gn_list, 0, sizeof(GN_LIST_LENGTH));
31378 + /* Mark all local devices PORT_LOST_ID first */
31379 + for (index = 0; index < MAX_FIBRE_DEVICES; index++) {
31380 + if (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID &&
31381 + !(ha->fc_db[index].flag & DEV_PUBLIC)) {
31383 + DEBUG(printk("scsi(%ld): Marking port lost @ slot "
31384 + "%d %02x%02x%02x\n",
31387 + ha->fc_db[index].d_id.b.domain,
31388 + ha->fc_db[index].d_id.b.area,
31389 + ha->fc_db[index].d_id.b.al_pa));
31391 + ha->fc_db[index].loop_id |= PORT_LOST_ID;
31395 + DEBUG3(printk("scsi(%ld): Getting FCAL position map\n", ha->host_no));
31396 + DEBUG3(qla2x00_get_fcal_position_map(ha, NULL));
31398 + /* Get port name list
31400 + * Via qla2x00_get_port_list:
31402 + * Bit 0 - return node names,
31403 + * Bit 1 - loop IDs 0-255
31405 +#if defined(FC_IP_SUPPORT)
31406 + if (ha->flags.enable_ip == FALSE)
31407 + rval = qla2x00_get_port_list(ha,
31408 + gn_list, phys_address, BIT_0, &size);
31410 + rval = qla2x00_get_port_list(ha,
31411 + gn_list, phys_address, BIT_0|BIT_1, &size);
31413 + rval = qla2x00_get_port_list(ha, gn_list, phys_address, BIT_0, &size);
31417 + goto cleanup_allocation;
31420 + DEBUG3(printk("scsi(%ld): Port list size (%d)\n", ha->host_no, size));
31421 + DEBUG3(qla2x00_dump_buffer((uint8_t *)gn_list, size));
31423 + /* Any valid entries returned? */
31424 + if (size / sizeof(port_list_entry_t) == 0)
31425 + goto cleanup_allocation;
31427 + port_entry = gn_list;
31428 + for ( ; size >= sizeof(port_list_entry_t);
31429 + size -= sizeof(port_list_entry_t), port_entry++) {
31431 + device.loop_id = le16_to_cpu(port_entry->loop_id);
31433 +#if defined(FC_IP_SUPPORT)
31434 + list_entry_loop_id = device.loop_id;
31435 + device.loop_id &= LOOP_ID_MASK;
31438 + /* Skip any non-local loop-ids - this includes 'known ports' */
31439 + if (device.loop_id > LAST_LOCAL_LOOP_ID)
31442 + /* Skip the known ports. */
31443 + if ((device.loop_id == SNS_FL_PORT) ||
31444 + (device.loop_id == FABRIC_CONTROLLER) ||
31445 + (device.loop_id == SIMPLE_NAME_SERVER))
31451 + /* Prep node name -- big-endian format */
31452 + *((u64 *)device.name) = __swab64p((u64 *)port_entry->name);
31454 + /* Retrieve port name */
31455 + rval = qla2x00_get_port_name(ha, device.loop_id, port_name, 0);
31456 + if (rval || qla2x00_is_wwn_zero(port_name)) {
31457 + DEBUG2(printk("scsi(%ld): Loop -- error retrieving "
31464 + memcpy(device.wwn, port_name, WWN_SIZE);
31466 + /* Derive portid from alpa table */
31467 + device.d_id.b24 = 0;
31468 + device.d_id.b.al_pa = alpa_table[device.loop_id];
31470 + DEBUG2_3(printk("scsi(%ld): Loop scan found device - "
31471 + "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
31472 + "portname %02x%02x%02x%02x%02x%02x%02x%02x "
31473 + "portid %02x%02x%02x.\n",
31475 + device.name[0], device.name[1],
31476 + device.name[2], device.name[3],
31477 + device.name[4], device.name[5],
31478 + device.name[6], device.name[7],
31479 + device.wwn[0], device.wwn[1], device.wwn[2], device.wwn[3],
31480 + device.wwn[4], device.wwn[5], device.wwn[6], device.wwn[7],
31481 + device.d_id.b.domain,
31482 + device.d_id.b.area,
31483 + device.d_id.b.al_pa));
31485 +#if !defined(FC_IP_SUPPORT)
31486 + /* SCSI type device */
31487 + update_status = qla2x00_update_fc_database(ha,
31488 + &device, enable_slot_reuse);
31489 + if (update_status)
31490 + status |= update_status;
31494 + if (!(list_entry_loop_id & PLE_NOT_SCSI_DEVICE)) {
31495 + /* SCSI type device */
31496 + update_status = qla2x00_update_fc_database(ha,
31497 + &device, enable_slot_reuse);
31499 + if (update_status)
31500 + status |= update_status;
31503 + } else if (ha->flags.enable_ip == TRUE) {
31504 + /* SCSI login failed, assume it is IP device */
31505 + DEBUG12(printk("scsi(%ld): Loop scan found IP device "
31506 + "WWNN:%02x%02x%02x%02x%02x%02x%02x%02x "
31507 + "DID:%02x%02x%02x.\n",
31509 + device.name[0], device.name[1],
31510 + device.name[2], device.name[3],
31511 + device.name[4], device.name[5],
31512 + device.name[6], device.name[7],
31513 + device.d_id.b.domain,
31514 + device.d_id.b.area,
31515 + device.d_id.b.al_pa));
31518 + qla2x00_update_ip_device_data(ha, &device);
31519 + if (update_status == QL_STATUS_SUCCESS)
31521 + else if (update_status == QL_STATUS_RESOURCE_ERROR)
31527 + } /* for each port entry */
31529 +cleanup_allocation:
31530 + pci_free_consistent(ha->pdev,
31531 + sizeof(GN_LIST_LENGTH), gn_list, phys_address);
31533 + if (status & BIT_0) {
31534 + DEBUG2(printk("scsi(%ld): Configure local loop error exit: "
31535 + "rval=%x\n", ha->host_no, rval));
31538 + if (localdevices > 0) {
31539 + ha->device_flags |= DFLG_LOCAL_DEVICES;
31540 + ha->device_flags &= ~DFLG_RETRY_LOCAL_DEVICES;
31549 + * qla2x00_configure_fabric
31550 + * Setup SNS devices with loop ID's.
31553 + * ha = adapter block pointer.
31558 + * BIT_1 = database was full and device was not configured.
31560 +#define MAX_PUBLIC_LOOP_IDS LAST_SNS_LOOP_ID + 1
31563 +qla2x00_configure_fabric(scsi_qla_host_t *ha, uint8_t enable_slot_reuse)
31565 + uint8_t rval = 0;
31567 + uint8_t local_flags = 0;
31568 + uint8_t tmp_name[8];
31570 + uint16_t i, index, found_cnt;
31571 + uint16_t new_dev_cnt;
31572 + uint16_t tmp_loop_id;
31573 + uint16_t tmp_topo;
31574 + struct new_dev *new_dev_list;
31575 + struct list_head *fcil, *fcitemp;
31576 + fc_initiator_t *fcinitiator;
31580 + DEBUG2(printk("scsi(%ld): Begin configure fabric -- hba=%p\n",
31581 + ha->host_no, ha));
31583 + /* If FL port exists, then SNS is present */
31584 + rval1 = qla2x00_get_port_name(ha, SNS_FL_PORT, tmp_name, 0);
31585 + if (rval1 || qla2x00_is_wwn_zero(tmp_name)) {
31586 + DEBUG2(printk("scsi(%ld): MBC_GET_PORT_NAME Failed, No FL "
31587 + "Port\n", ha->host_no));
31589 + ha->device_flags &= ~SWITCH_FOUND;
31593 + new_dev_list = kmalloc(sizeof(struct new_dev) * MAX_FIBRE_DEVICES,
31595 + if (new_dev_list == NULL) {
31596 + DEBUG2(printk("scsi(%ld): Configure Fabric allocation failed, "
31597 + "device list\n", ha->host_no));
31602 + /* Get adapter port ID. */
31603 + rval = qla2x00_get_adapter_id(ha, &tmp_loop_id,
31604 + &ha->d_id.b.al_pa, &ha->d_id.b.area, &ha->d_id.b.domain, &tmp_topo);
31606 + /* Mark devices that need re-synchronization. */
31607 + qla2x00_device_resync(ha);
31610 + if (test_and_clear_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags)) {
31611 + if (qla2x00_rft_id(ha)) {
31613 + DEBUG2(printk("scsi(%ld): Register FC-4 "
31614 + "TYPE failed.\n", ha->host_no));
31616 + if (qla2x00_rff_id(ha)) {
31618 + DEBUG2(printk("scsi(%ld): Register FC-4 "
31619 + "Features failed.\n", ha->host_no));
31621 + if (qla2x00_rnn_id(ha)) {
31623 + DEBUG2(printk("scsi(%ld): Register Node Name "
31624 + "failed.\n", ha->host_no));
31626 + if (qla2x00_rsnn_nn(ha)) {
31628 + DEBUG2(printk("scsi(%ld): Register Symbolic "
31629 + "Node Name failed.\n", ha->host_no));
31633 + rval = qla2x00_find_all_fabric_devs(ha,
31634 + new_dev_list, &new_dev_cnt, &local_flags);
31639 + * Logout all previous fabric devices marked lost, except
31642 + for (index = 0; index < MAX_FIBRE_DEVICES &&
31643 + !atomic_read(&ha->loop_down_timer) &&
31644 + !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); index++) {
31646 + if (ha->fc_db[index].loop_id & PORT_LOST_ID &&
31647 + (ha->fc_db[index].flag & DEV_PUBLIC) &&
31648 + !(ha->fc_db[index].flag & DEV_TAPE_DEVICE)) {
31650 + qla2x00_fabric_logout(ha,
31651 + ha->fc_db[index].loop_id & 0xff);
31652 + local_flags |= LOGOUT_PERFORMED;
31656 + /* Logout and remove any lost initiator devices */
31657 + list_for_each_safe(fcil, fcitemp, &ha->fcinitiators) {
31658 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
31660 + if ((fcinitiator->loop_id & PORT_LOST_ID) == 0)
31663 + qla2x00_fabric_logout(ha, fcinitiator->loop_id & 0xff);
31664 + ha->fabricid[fcinitiator->loop_id &0xFF].in_use = FALSE;
31666 + list_del(&fcinitiator->list);
31667 + kfree(fcinitiator);
31671 + * Scan through our database and login entries already in our
31674 + for (index = 0; index < MAX_FIBRE_DEVICES &&
31675 + !atomic_read(&ha->loop_down_timer) &&
31676 + !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); index++) {
31678 + if (!(ha->fc_db[index].loop_id & PORT_LOGIN_NEEDED))
31681 + ha->fc_db[index].loop_id &= ~PORT_LOGIN_NEEDED;
31682 + if (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID) {
31683 + /* loop_id reusable */
31684 + dev.loop_id = ha->fc_db[index].loop_id & 0xff;
31686 + for (i = ha->min_external_loopid;
31687 + i < MAX_PUBLIC_LOOP_IDS; i++) {
31689 + if (!ha->fabricid[i].in_use) {
31690 + ha->fabricid[i].in_use = TRUE;
31696 + if (i == MAX_PUBLIC_LOOP_IDS)
31700 + dev.d_id.b24 = ha->fc_db[index].d_id.b24;
31702 + /* login and update database */
31703 + if (qla2x00_fabric_login(ha, &dev) == 0) {
31704 + ha->fc_db[index].loop_id = dev.loop_id;
31710 + * Scan through new device list and login and add to our
31713 + for (index = 0; index < new_dev_cnt &&
31714 + !atomic_read(&ha->loop_down_timer) &&
31715 + !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); index++) {
31718 + &new_dev_list[index], sizeof(struct new_dev));
31720 + dev.flag = DEV_PUBLIC;
31722 + for (i = ha->min_external_loopid;
31723 + i < MAX_PUBLIC_LOOP_IDS; i++) {
31725 + if (!ha->fabricid[i].in_use) {
31726 + ha->fabricid[i].in_use = TRUE;
31732 + if (i == MAX_PUBLIC_LOOP_IDS)
31735 + if (qla2x00_fabric_login(ha, &dev) == 0) {
31737 + rval = qla2x00_update_fc_database(ha,
31738 + &dev, enable_slot_reuse);
31741 + qla2x00_fabric_logout(ha, dev.loop_id);
31742 + ha->fabricid[i].in_use = FALSE;
31749 + kfree(new_dev_list);
31752 + DEBUG2(printk("scsi(%ld): Configure fabric error exit: "
31753 + "rval=%d\n", ha->host_no, rval));
31756 + DEBUG2(if (found_cnt))
31757 + DEBUG2(printk("scsi(%ld) Found (%d) ports\n",
31758 + ha->host_no, found_cnt));
31768 + * qla2x00_find_all_fabric_devs
31769 + * Go through GAN list to find all fabric devices. Will perform
31770 + * necessary logout of previously existed devices that have changed
31771 + * and save new devices in a new device list.
31774 + * ha = adapter block pointer.
31775 + * dev = database device entry pointer.
31782 + * Kernel context.
31785 +qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha,
31786 + struct new_dev *new_dev_list, uint16_t *new_dev_cnt, uint8_t *flags)
31789 + uint8_t rval = 0;
31793 + uint16_t new_cnt;
31794 + uint16_t public_count;
31795 + uint16_t initiator;
31796 + struct list_head *fcil;
31797 + fc_initiator_t *fcinitiator;
31800 + sw_info_t swl_entry;
31802 + int first_dev, last_dev;
31808 + /* Try GID_PT to get device list, else GAN. */
31809 + swl = kmalloc(sizeof(sw_info_t) * MAX_FIBRE_DEVICES, GFP_ATOMIC);
31810 + if (swl == NULL) {
31812 + DEBUG2(printk("scsi(%ld): GID_PT allocations failed, fallback "
31813 + "on GAN\n", ha->host_no));
31814 + } else if (qla2x00_gid_pt(ha, swl) != QL_STATUS_SUCCESS) {
31817 + } else if (qla2x00_gpn_id(ha, swl) != QL_STATUS_SUCCESS) {
31820 + } else if (qla2x00_gnn_id(ha, swl) != QL_STATUS_SUCCESS) {
31823 + } else if (qla2x00_gft_id(ha, swl) != QL_STATUS_SUCCESS) {
31830 + * Loop getting devices from switch. Logout the devices that were in
31831 + * our database but changed port ID.
31833 +#if defined(ISP2100)
31834 + ha->max_public_loop_ids = LAST_SNS_LOOP_ID - SNS_FIRST_LOOP_ID + 1;
31835 + public_count = ha->max_public_loop_ids;
31837 + ha->max_public_loop_ids = MAX_PUBLIC_LOOP_IDS;
31838 + public_count = ha->max_public_loop_ids - ha->min_external_loopid + 2;
31841 + /* Set start port ID scan at adapter ID. */
31842 + swl_entry.d_id.b24 = ha->d_id.b24;
31846 + new_cnt = 0; /* new device count */
31849 + i < public_count && !atomic_read(&ha->loop_down_timer) &&
31850 + !(test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)); i++) {
31852 + if (swl != NULL) {
31854 + wrap.b24 = dev.d_id.b24;
31856 + dev.flag = DEV_PUBLIC;
31857 + dev.d_id.b24 = swl[swl_idx].d_id.b24;
31859 + swl[swl_idx].node_name, WWN_SIZE);
31861 + swl[swl_idx].port_name, WWN_SIZE);
31863 + /* IP capable device */
31865 + if (swl[swl_idx].type & SW_TYPE_IP)
31868 + if (swl[swl_idx].d_id.b.rsvd_1 != 0) {
31874 + /* Send GAN to the switch */
31876 + if (qla2x00_ga_nxt(ha, &swl_entry) !=
31877 + QL_STATUS_SUCCESS) {
31882 + dev.flag = DEV_PUBLIC;
31883 + dev.d_id.b24 = swl_entry.d_id.b24;
31884 + memcpy(dev.name, swl_entry.node_name, WWN_SIZE);
31885 + memcpy(dev.wwn, swl_entry.port_name, WWN_SIZE);
31887 + /* IP capable device */
31889 + if (swl_entry.type & SW_TYPE_IP)
31893 + /* If wrap on switch device list, exit. */
31895 + wrap.b24 = dev.d_id.b24;
31897 + } else if (dev.d_id.b24 == wrap.b24) {
31898 + DEBUG2(printk("scsi(%ld): device wrap (%02x%02x%02x)\n",
31900 + dev.d_id.b.domain,
31902 + dev.d_id.b.al_pa));
31906 + DEBUG(printk("scsi(%ld): Fabric scan found device(%d) - port "
31907 + "Id=%02x%02x%02x\n",
31909 + dev.d_id.b.domain, dev.d_id.b.area, dev.d_id.b.al_pa));
31911 + /* Bypass if host adapter. */
31912 + if (dev.d_id.b24 == ha->d_id.b24)
31915 + /* Bypass reserved domain fields. */
31916 + if ((dev.d_id.b.domain & 0xf0) == 0xf0)
31919 + /* Bypass if same domain and area of adapter. */
31920 + if ((dev.d_id.b24 & 0xffff00) == (ha->d_id.b24 & 0xffff00))
31923 +#if defined(FC_IP_SUPPORT)
31924 + /* Check for IP device */
31926 + /* Found IP device */
31927 + DEBUG12(printk("scsi(%ld): IP fabric "
31928 + "WWN: %02x%02x%02x%02x%02x%02x%02x%02x "
31929 + "DID: %02x%02x%02x.\n",
31931 + dev.name[0], dev.name[1], dev.name[2], dev.name[3],
31932 + dev.name[4], dev.name[5], dev.name[6], dev.name[7],
31933 + dev.d_id.b.domain,
31935 + dev.d_id.b.al_pa));
31937 + qla2x00_update_ip_device_data(ha, &dev);
31942 + /* Bypass if initiator */
31943 + initiator = FALSE;
31944 + list_for_each(fcil, &ha->fcinitiators) {
31945 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
31947 + if (memcmp(dev.wwn, fcinitiator->port_name, 8) != 0)
31950 + initiator = TRUE;
31951 + DEBUG(printk("scsi(%ld): found host "
31952 + "%02x%02x%02x%02x%02x%02x%02x%02x, "
31953 + "portid=%02x%02x%02x.\n",
31955 + dev.name[0], dev.name[1], dev.name[2], dev.name[3],
31956 + dev.name[4], dev.name[5], dev.name[6], dev.name[7],
31957 + dev.d_id.b.domain,
31959 + dev.d_id.b.al_pa));
31962 + * If the initiator was marked as lost, perform the
31963 + * required logout and relogin the initiator by
31964 + * assuming a new device.
31966 + if ((fcinitiator->loop_id & PORT_LOST_ID) == 0)
31969 + initiator = FALSE;
31973 + /* Bypass if initiator */
31977 + /* Locate matching device in database. */
31978 + for (index = 0; index < MAX_FIBRE_DEVICES; index++) {
31979 + if (ha->fc_db[index].loop_id == PORT_UNUSED)
31983 + switch (ha->binding_type) {
31984 + case BIND_BY_PORT_NAME:
31985 + status = memcmp(dev.wwn,
31986 + ha->fc_db[index].wwn, WWN_SIZE);
31989 + case BIND_BY_PORT_ID:
31990 + status = (dev.d_id.b24 !=
31991 + ha->fc_db[index].d_id.b24);
31994 + case BIND_BY_NODE_NAME:
31995 + status = memcmp(dev.name,
31996 + ha->fc_db[index].name, WWN_SIZE);
32003 + * Update volatile unbound fields for PortID binding
32006 + if (ha->binding_type == BIND_BY_PORT_ID) {
32007 + memcpy(ha->fc_db[index].name,
32008 + dev.name, WWN_SIZE);
32009 + memcpy(ha->fc_db[index].wwn,
32010 + dev.wwn, WWN_SIZE);
32013 + /* Now we found a matching device name */
32014 + DEBUG(printk("scsi(%ld): Found fabric dev %d in "
32015 + "tgt %d db, flags= 0x%x, loop_id=0x%04x, port="
32017 + "name=%02x%02x%02x%02x%02x%02x%02x%02x.\n",
32018 + ha->host_no, i, index,
32019 + ha->fc_db[index].flag,
32020 + ha->fc_db[index].loop_id,
32021 + ha->fc_db[index].d_id.b.domain,
32022 + ha->fc_db[index].d_id.b.area,
32023 + ha->fc_db[index].d_id.b.al_pa,
32024 + dev.wwn[0], dev.wwn[1], dev.wwn[2], dev.wwn[3],
32025 + dev.wwn[4], dev.wwn[5], dev.wwn[6], dev.wwn[7]));
32027 + if (!(ha->fc_db[index].flag & DEV_PUBLIC)) {
32029 + * This was in our database as a local device.
32030 + * Here we assume this device either has
32031 + * changed location so configure_local_loop has
32032 + * already done necessary clean up, or it's
32033 + * saved here due to persistent name binding.
32034 + * We'll just add it in as a fabric device.
32036 + /* Copy port id and name fields. */
32037 + ha->fc_db[index].flag |= DEV_PUBLIC;
32038 + ha->fc_db[index].d_id.b24 = dev.d_id.b24;
32039 + ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED;
32044 + /* This was in our database as a fabric device. */
32045 + if ((ha->fc_db[index].d_id.b24 == dev.d_id.b24) &&
32046 + (ha->fc_db[index].loop_id <= LAST_SNS_LOOP_ID))
32047 + /* Device didn't change */
32050 + if (ha->fc_db[index].loop_id == PORT_AVAILABLE) {
32051 + ha->fc_db[index].flag |= DEV_PUBLIC;
32052 + ha->fc_db[index].d_id.b24 = dev.d_id.b24;
32053 + ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED;
32058 + * Port ID changed or device was marked to be updated;
32059 + * logout and mark it for relogin later.
32061 + qla2x00_fabric_logout(ha,
32062 + ha->fc_db[index].loop_id & 0xff);
32063 + ha->fc_db[index].flag |= DEV_PUBLIC;
32064 + ha->fc_db[index].d_id.b24 = dev.d_id.b24;
32066 + ha->fc_db[index].loop_id |= PORT_LOGIN_NEEDED;
32067 + ha->fc_db[index].loop_id &= ~PORT_LOST_ID;
32069 + *flags |= LOGOUT_PERFORMED;
32074 + if (index == MAX_FIBRE_DEVICES) {
32076 + * Did not find a match in our database. This is a new
32079 + DEBUG3(printk("scsi(%ld): Found new device "
32080 + "%02x%02x%02x%02x%02x%02x%02x%02x.\n",
32082 + dev.wwn[0], dev.wwn[1], dev.wwn[2], dev.wwn[3],
32083 + dev.wwn[4], dev.wwn[5], dev.wwn[6], dev.wwn[7]));
32085 + memcpy(&new_dev_list[new_cnt],
32086 + &dev, sizeof(struct new_dev));
32094 + *new_dev_cnt = new_cnt;
32097 + ha->device_flags |= DFLG_FABRIC_DEVICES;
32105 + * qla2x00_device_resync
32106 + * Marks devices in the database that needs resynchronization.
32109 + * ha = adapter block pointer.
32112 + * Kernel context.
32115 +qla2x00_device_resync(scsi_qla_host_t *ha)
32120 + struct list_head *fcil;
32121 + fc_initiator_t *fcinitiator;
32125 + while (ha->rscn_out_ptr != ha->rscn_in_ptr ||
32126 + ha->flags.rscn_queue_overflow) {
32128 + memcpy(&dev, &ha->rscn_queue[ha->rscn_out_ptr], sizeof(rscn_t));
32130 + DEBUG(printk("scsi(%ld): device_resync: rscn_queue[%d], "
32131 + "portID=%02x%02x%02x.\n",
32133 + ha->rscn_out_ptr,
32134 + ha->rscn_queue[ha->rscn_out_ptr].d_id.b.domain,
32135 + ha->rscn_queue[ha->rscn_out_ptr].d_id.b.area,
32136 + ha->rscn_queue[ha->rscn_out_ptr].d_id.b.al_pa));
32138 + ha->rscn_out_ptr++;
32139 + if (ha->rscn_out_ptr == MAX_RSCN_COUNT)
32140 + ha->rscn_out_ptr = 0;
32142 + /* Queue overflow, set switch default case. */
32143 + if (ha->flags.rscn_queue_overflow) {
32144 + DEBUG(printk("scsi(%ld): device_resync: rscn "
32145 + "overflow.\n", ha->host_no));
32148 + ha->flags.rscn_queue_overflow = 0;
32151 + switch (dev.format) {
32163 + dev.d_id.b24 = 0;
32164 + ha->rscn_out_ptr = ha->rscn_in_ptr;
32168 + /* Mark target devices indicated by RSCN for later processing */
32169 + for (index = 0; index < MAX_FIBRE_DEVICES; index++) {
32170 + if ((ha->fc_db[index].flag & DEV_PUBLIC) &&
32171 + (ha->fc_db[index].d_id.b24 & mask) ==
32174 + /* fabric device */
32175 + if (ha->fc_db[index].loop_id != PORT_UNUSED) {
32176 + ha->fc_db[index].loop_id |=
32179 + DEBUG(printk("scsi(%ld): RSCN port @ "
32180 + "slot %d port_id=%02x%02x%02x.\n",
32183 + ha->fc_db[index].d_id.b.domain,
32184 + ha->fc_db[index].d_id.b.area,
32185 + ha->fc_db[index].d_id.b.al_pa));
32190 + if (dev.format == 3)
32194 + * Invalidate initiator devices indicated by RSCN so we know
32195 + * they are no longer logged in.
32197 + list_for_each(fcil, &ha->fcinitiators) {
32198 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
32200 + if ((fcinitiator->d_id.b24 & mask) != dev.d_id.b24)
32202 + if (fcinitiator->loop_id & PORT_LOST_ID ||
32203 + fcinitiator->loop_id & PORT_LOGIN_NEEDED)
32206 + fcinitiator->loop_id |= PORT_LOST_ID;
32207 + fcinitiator->d_id.b24 = 0;
32216 + * qla2x00_loop_resync
32217 + * Resync with fibre channel devices.
32220 + * ha = adapter block pointer.
32226 +qla2x00_loop_resync(scsi_qla_host_t *ha)
32232 + ha->loop_state = LOOP_UPDATE;
32233 + qla2x00_stats.loop_resync++;
32234 + clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
32235 + if (ha->flags.online) {
32236 + if (!(status = qla2x00_fw_ready(ha))) {
32239 + ha->loop_state = LOOP_UPDATE;
32242 + * Issue marker command only when we are going
32243 + * to start the I/O .
32245 + ha->marker_needed = 1;
32247 + /* Remap devices on Loop. */
32248 + clear_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
32250 + qla2x00_configure_loop(ha);
32252 + } while (!atomic_read(&ha->loop_down_timer) &&
32253 + !(test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) &&
32254 + (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)));
32256 + qla2x00_restart_queues(ha,TRUE);
32260 + if (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) {
32265 + DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
32274 + * qla2x00_fabric_login
32275 + * Issue fabric login command.
32278 + * ha = adapter block pointer.
32279 + * device = pointer to FC device type structure.
32282 + * 0 - Login successfully
32283 + * 1 - Login failed
32284 + * 2 - Initiator device
32285 + * 3 - Fatal error
32288 +qla2x00_fabric_login(scsi_qla_host_t *ha, fcdev_t *device)
32290 + uint16_t status[3];
32293 + DEBUG(printk("scsi(%ld): Trying Fabric Login w/loop id 0x%04x "
32294 + "for port %02x%02x%02x.\n",
32295 + ha->host_no, device->loop_id,
32296 + device->d_id.b.domain,
32297 + device->d_id.b.area,
32298 + device->d_id.b.al_pa));
32300 + /* Login device on switch. */
32301 + qla2x00_login_fabric(ha,
32302 + device->loop_id, device->d_id.b.domain,
32303 + device->d_id.b.area, device->d_id.b.al_pa,
32304 + &status[0], BIT_0);
32306 + if (status[0] == 0x4007) {
32307 + ha->fabricid[device->loop_id].in_use = FALSE;
32308 + device->loop_id = status[1];
32310 + DEBUG(printk("Fabric Login: port in use - next "
32311 + "loop id=0x%04x, port Id=%02x%02x%02x.\n",
32313 + device->d_id.b.domain,
32314 + device->d_id.b.area,
32315 + device->d_id.b.al_pa));
32317 + if (device->loop_id <= LAST_SNS_LOOP_ID)
32318 + ha->fabricid[device->loop_id].in_use = TRUE;
32322 + } else if (status[0] == 0x4000) {
32323 + if (status[1] & 0x0001) {
32324 + /* Initiator only device */
32325 + qla2x00_add_initiator_device(ha, device);
32330 + /* This is target capable device */
32331 + qla2x00_get_port_database(ha, device, 0);
32333 + DEBUG(printk("scsi(%ld): Fabric Login OK. loop "
32334 + "id=0x%04x, port Id=%02x%02x%02x.\n",
32337 + device->d_id.b.domain,
32338 + device->d_id.b.area,
32339 + device->d_id.b.al_pa));
32342 + } else if (status[0] == 0x4008) {
32343 + if (device->loop_id++ <= LAST_SNS_LOOP_ID)
32344 + ha->fabricid[device->loop_id].in_use = TRUE;
32348 + } else if (status[0] == 0x4006) {
32349 + /* No more retry needed. */
32352 + DEBUG2(printk("%s(%ld): failed=%x port_id=%02x%02x%02x "
32353 + "loop_id=%x jiffies=%lx.\n",
32354 + __func__, ha->host_no, status[0],
32355 + device->d_id.b.domain,
32356 + device->d_id.b.area,
32357 + device->d_id.b.al_pa,
32358 + device->loop_id, jiffies));
32365 + * qla2x00_local_device_login
32366 + * Issue local device login command.
32369 + * ha = adapter block pointer.
32370 + * loop_id = loop id of device to login to.
32372 + * Returns (Where's the #define!!!!):
32373 + * 0 - Login successfully
32374 + * 1 - Login failed
32375 + * 3 - Fatal error
32378 +qla2x00_local_device_login(scsi_qla_host_t *ha, uint16_t loop_id)
32381 + uint16_t mb[MAILBOX_REGISTER_COUNT];
32383 + memset(mb, 0, sizeof(mb));
32384 + rval = qla2x00_login_local_device(ha, loop_id, mb, BIT_0);
32385 + if (rval == QL_STATUS_SUCCESS) {
32386 + /* Interrogate mailbox registers for any errors */
32387 + if (mb[0] == 0x4005)
32389 + else if (mb[0] == 0x4006)
32390 + /* device not in PCB table */
32398 + * qla2x00_ga_nxt() - SNS scan for fabric devices via GA_NXT command.
32399 + * @ha: HA context
32400 + * @swl_entry: switch info entry to updated
32402 + * NOTE: Non-Nx_Ports are skipped.
32404 + * Returns 0 on success.
32407 +qla2x00_ga_nxt(scsi_qla_host_t *ha, sw_info_t *swl_entry)
32411 + ms_iocb_entry_t *ms_pkt;
32412 + struct ct_sns_req *ct_req;
32413 + struct ct_sns_rsp *ct_rsp;
32418 + /* Issue GA_NXT */
32419 + /* Prepare common MS IOCB */
32420 + ms_pkt = qla2x00_prep_ms_iocb(ha, GA_NXT_REQ_SIZE, GA_NXT_RSP_SIZE);
32422 + /* Prepare CT request */
32423 + ct_req = &ha->ct_sns->p.req;
32424 + ct_rsp = &ha->ct_sns->p.rsp;
32425 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32427 + ct_req->header.revision = 0x01;
32428 + ct_req->header.gs_type = 0xFC;
32429 + ct_req->header.gs_subtype = 0x02;
32430 + ct_req->command = __constant_cpu_to_be16(GA_NXT_CMD);
32431 + ct_req->max_rsp_size =
32432 + __constant_cpu_to_be16((GA_NXT_RSP_SIZE - 16) / 4);
32434 + /* Prepare CT arguments -- port_id */
32435 + ct_req->req.port_id.port_id[0] = swl_entry->d_id.b.domain;
32436 + ct_req->req.port_id.port_id[1] = swl_entry->d_id.b.area;
32437 + ct_req->req.port_id.port_id[2] = swl_entry->d_id.b.al_pa;
32439 + /* Execute MS IOCB */
32440 + rval = qla2x00_issue_iocb(ha,
32441 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32442 + if (rval != QL_STATUS_SUCCESS) {
32444 + DEBUG2_3(printk("scsi(%ld): GA_NXT issue IOCB failed (%d).\n",
32445 + ha->host_no, rval));
32446 + } else if (ct_rsp->header.response !=
32447 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32448 + DEBUG2_3(printk("scsi(%ld): GA_NXT failed, rejected request, "
32449 + "ga_nxt_rsp:\n", ha->host_no));
32450 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32451 + sizeof(struct ct_rsp_hdr)));
32452 + rval = QL_STATUS_ERROR;
32453 + } else if (ct_rsp->rsp.ga_nxt.port_type != NS_N_PORT_TYPE &&
32454 + ct_rsp->rsp.ga_nxt.port_type != NS_NL_PORT_TYPE) {
32455 + /* We're only interested in Nx ports */
32456 + DEBUG2_3(printk("scsi(%ld): GA_NXT skipping *NON* Nx_Port - "
32457 + "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
32458 + "portname %02x%02x%02x%02x%02x%02x%02x%02x "
32459 + "portid=%02x%02x%02x port_type=%x.\n",
32461 + ct_rsp->rsp.ga_nxt.node_name[0],
32462 + ct_rsp->rsp.ga_nxt.node_name[1],
32463 + ct_rsp->rsp.ga_nxt.node_name[2],
32464 + ct_rsp->rsp.ga_nxt.node_name[3],
32465 + ct_rsp->rsp.ga_nxt.node_name[4],
32466 + ct_rsp->rsp.ga_nxt.node_name[5],
32467 + ct_rsp->rsp.ga_nxt.node_name[6],
32468 + ct_rsp->rsp.ga_nxt.node_name[7],
32469 + ct_rsp->rsp.ga_nxt.port_name[0],
32470 + ct_rsp->rsp.ga_nxt.port_name[1],
32471 + ct_rsp->rsp.ga_nxt.port_name[2],
32472 + ct_rsp->rsp.ga_nxt.port_name[3],
32473 + ct_rsp->rsp.ga_nxt.port_name[4],
32474 + ct_rsp->rsp.ga_nxt.port_name[5],
32475 + ct_rsp->rsp.ga_nxt.port_name[6],
32476 + ct_rsp->rsp.ga_nxt.port_name[7],
32477 + ct_rsp->rsp.ga_nxt.port_id[0],
32478 + ct_rsp->rsp.ga_nxt.port_id[1],
32479 + ct_rsp->rsp.ga_nxt.port_id[2],
32480 + ct_rsp->rsp.ga_nxt.port_type));
32481 + goto retry_ga_nxt;
32483 + /* Populate switch info entry. */
32484 + swl_entry->d_id.b.domain = ct_rsp->rsp.ga_nxt.port_id[0];
32485 + swl_entry->d_id.b.area = ct_rsp->rsp.ga_nxt.port_id[1];
32486 + swl_entry->d_id.b.al_pa = ct_rsp->rsp.ga_nxt.port_id[2];
32488 + memcpy(swl_entry->node_name,
32489 + ct_rsp->rsp.ga_nxt.node_name, WWN_SIZE);
32490 + memcpy(swl_entry->port_name,
32491 + ct_rsp->rsp.ga_nxt.port_name, WWN_SIZE);
32493 + swl_entry->type = SW_TYPE_SCSI;
32494 + if (ct_rsp->rsp.ga_nxt.fc4_types[3] & 0x20)
32495 + swl_entry->type |= SW_TYPE_IP;
32497 + DEBUG2_3(printk("scsi(%ld): GA_NXT entry - "
32498 + "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
32499 + "portname %02x%02x%02x%02x%02x%02x%02x%02x "
32500 + "portid=%02x%02x%02x type=%02x.\n",
32502 + swl_entry->node_name[0], swl_entry->node_name[1],
32503 + swl_entry->node_name[2], swl_entry->node_name[3],
32504 + swl_entry->node_name[4], swl_entry->node_name[5],
32505 + swl_entry->node_name[6], swl_entry->node_name[7],
32506 + swl_entry->port_name[0], swl_entry->port_name[1],
32507 + swl_entry->port_name[2], swl_entry->port_name[3],
32508 + swl_entry->port_name[4], swl_entry->port_name[5],
32509 + swl_entry->port_name[6], swl_entry->port_name[7],
32510 + swl_entry->d_id.b.domain,
32511 + swl_entry->d_id.b.area,
32512 + swl_entry->d_id.b.al_pa,
32513 + swl_entry->type));
32522 + * qla2x00_gid_pt() - SNS scan for fabric devices via GID_PT command.
32523 + * @ha: HA context
32524 + * @list: switch info entries to populate
32526 + * NOTE: Non-Nx_Ports are not requested.
32528 + * Returns 0 on success.
32531 +qla2x00_gid_pt(scsi_qla_host_t *ha, sw_info_t *list)
32536 + ms_iocb_entry_t *ms_pkt;
32537 + struct ct_sns_req *ct_req;
32538 + struct ct_sns_rsp *ct_rsp;
32540 + struct ct_sns_gid_pt_data *gid_data;
32546 + /* Issue GID_PT */
32547 + /* Prepare common MS IOCB */
32548 + ms_pkt = qla2x00_prep_ms_iocb(ha, GID_PT_REQ_SIZE, GID_PT_RSP_SIZE);
32550 + /* Prepare CT request */
32551 + ct_req = &ha->ct_sns->p.req;
32552 + ct_rsp = &ha->ct_sns->p.rsp;
32553 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32555 + ct_req->header.revision = 0x01;
32556 + ct_req->header.gs_type = 0xFC;
32557 + ct_req->header.gs_subtype = 0x02;
32558 + ct_req->command = __constant_cpu_to_be16(GID_PT_CMD);
32559 + ct_req->max_rsp_size =
32560 + __constant_cpu_to_be16((GID_PT_RSP_SIZE - 16) / 4);
32562 + /* Prepare CT arguments -- port_type */
32563 + ct_req->req.gid_pt.port_type = NS_NX_PORT_TYPE;
32565 + /* Execute MS IOCB */
32566 + rval = qla2x00_issue_iocb(ha,
32567 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32568 + if (rval != QL_STATUS_SUCCESS) {
32570 + DEBUG2_3(printk("scsi(%ld): GID_PT issue IOCB failed (%d).\n",
32571 + ha->host_no, rval));
32572 + } else if (ct_rsp->header.response !=
32573 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32574 + DEBUG2_3(printk("scsi(%ld): GID_PT failed, rejected request, "
32575 + "gid_pt_rsp:\n", ha->host_no));
32576 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32577 + sizeof(struct ct_rsp_hdr)));
32578 + rval = QL_STATUS_ERROR;
32580 + /* Set port IDs in switch info list. */
32581 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32582 + memset(&list[i], 0, sizeof(sw_info_t));
32583 + gid_data = &ct_rsp->rsp.gid_pt.entries[i];
32584 + list[i].d_id.b.domain = gid_data->port_id[0];
32585 + list[i].d_id.b.area = gid_data->port_id[1];
32586 + list[i].d_id.b.al_pa = gid_data->port_id[2];
32588 + /* Last one exit. */
32589 + if (gid_data->control_byte & BIT_7) {
32590 + list[i].d_id.b.rsvd_1 = gid_data->control_byte;
32602 + * qla2x00_gpn_id() - SNS Get Port Name (GPN_ID) query.
32603 + * @ha: HA context
32604 + * @list: switch info entries to populate
32606 + * Returns 0 on success.
32609 +qla2x00_gpn_id(scsi_qla_host_t *ha, sw_info_t *list)
32614 + ms_iocb_entry_t *ms_pkt;
32615 + struct ct_sns_req *ct_req;
32616 + struct ct_sns_rsp *ct_rsp;
32620 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32621 + /* Issue GPN_ID */
32622 + /* Prepare common MS IOCB */
32623 + ms_pkt = qla2x00_prep_ms_iocb(ha,
32624 + GPN_ID_REQ_SIZE, GPN_ID_RSP_SIZE);
32626 + /* Prepare CT request */
32627 + ct_req = &ha->ct_sns->p.req;
32628 + ct_rsp = &ha->ct_sns->p.rsp;
32629 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32631 + ct_req->header.revision = 0x01;
32632 + ct_req->header.gs_type = 0xFC;
32633 + ct_req->header.gs_subtype = 0x02;
32634 + ct_req->command = __constant_cpu_to_be16(GPN_ID_CMD);
32635 + ct_req->max_rsp_size =
32636 + __constant_cpu_to_be16((GPN_ID_RSP_SIZE - 16) / 4);
32638 + /* Prepare CT arguments -- port_id */
32639 + ct_req->req.port_id.port_id[0] = list[i].d_id.b.domain;
32640 + ct_req->req.port_id.port_id[1] = list[i].d_id.b.area;
32641 + ct_req->req.port_id.port_id[2] = list[i].d_id.b.al_pa;
32643 + /* Execute MS IOCB */
32644 + rval = qla2x00_issue_iocb(ha,
32645 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32646 + if (rval != QL_STATUS_SUCCESS) {
32648 + DEBUG2_3(printk("scsi(%ld): GPN_ID issue IOCB failed "
32650 + ha->host_no, rval));
32651 + } else if (ct_rsp->header.response !=
32652 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32653 + DEBUG2_3(printk("scsi(%ld): GPN_ID failed, rejected "
32654 + "request, gpn_id_rsp:\n", ha->host_no));
32655 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32656 + sizeof(struct ct_rsp_hdr)));
32657 + rval = QL_STATUS_ERROR;
32659 + /* Save portname */
32660 + memcpy(list[i].port_name,
32661 + ct_rsp->rsp.gpn_id.port_name, WWN_SIZE);
32664 + /* Last device exit. */
32665 + if (list[i].d_id.b.rsvd_1 != 0)
32675 + * qla2x00_gnn_id() - SNS Get Node Name (GPN_ID) query.
32676 + * @ha: HA context
32677 + * @list: switch info entries to populate
32679 + * Returns 0 on success.
32682 +qla2x00_gnn_id(scsi_qla_host_t *ha, sw_info_t *list)
32687 + ms_iocb_entry_t *ms_pkt;
32688 + struct ct_sns_req *ct_req;
32689 + struct ct_sns_rsp *ct_rsp;
32693 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32694 + /* Issue GNN_ID */
32695 + /* Prepare common MS IOCB */
32696 + ms_pkt = qla2x00_prep_ms_iocb(ha,
32697 + GNN_ID_REQ_SIZE, GNN_ID_RSP_SIZE);
32699 + /* Prepare CT request */
32700 + ct_req = &ha->ct_sns->p.req;
32701 + ct_rsp = &ha->ct_sns->p.rsp;
32702 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32704 + ct_req->header.revision = 0x01;
32705 + ct_req->header.gs_type = 0xFC;
32706 + ct_req->header.gs_subtype = 0x02;
32707 + ct_req->command = __constant_cpu_to_be16(GNN_ID_CMD);
32708 + ct_req->max_rsp_size =
32709 + __constant_cpu_to_be16((GNN_ID_RSP_SIZE - 16) / 4);
32711 + /* Prepare CT arguments -- port_id */
32712 + ct_req->req.port_id.port_id[0] = list[i].d_id.b.domain;
32713 + ct_req->req.port_id.port_id[1] = list[i].d_id.b.area;
32714 + ct_req->req.port_id.port_id[2] = list[i].d_id.b.al_pa;
32716 + /* Execute MS IOCB */
32717 + rval = qla2x00_issue_iocb(ha,
32718 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32719 + if (rval != QL_STATUS_SUCCESS) {
32721 + DEBUG2_3(printk("scsi(%ld): GNN_ID issue IOCB failed "
32723 + ha->host_no, rval));
32724 + } else if (ct_rsp->header.response !=
32725 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32726 + DEBUG2_3(printk("scsi(%ld): GNN_ID failed, rejected "
32727 + "request, gnn_id_rsp:\n", ha->host_no));
32728 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32729 + sizeof(struct ct_rsp_hdr)));
32730 + rval = QL_STATUS_ERROR;
32732 + /* Save nodename */
32733 + memcpy(list[i].node_name,
32734 + ct_rsp->rsp.gnn_id.node_name, WWN_SIZE);
32737 + /* Last device exit. */
32738 + if (list[i].d_id.b.rsvd_1 != 0)
32748 + * qla2x00_gft_id() - SNS Get FC-4 TYPEs (GFT_ID) query.
32749 + * @ha: HA context
32750 + * @list: switch info entries to populate
32752 + * Returns 0 on success.
32755 +qla2x00_gft_id(scsi_qla_host_t *ha, sw_info_t *list)
32760 + ms_iocb_entry_t *ms_pkt;
32761 + struct ct_sns_req *ct_req;
32762 + struct ct_sns_rsp *ct_rsp;
32766 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
32767 + /* Issue GFT_ID */
32768 + /* Prepare common MS IOCB */
32769 + ms_pkt = qla2x00_prep_ms_iocb(ha,
32770 + GFT_ID_REQ_SIZE, GFT_ID_RSP_SIZE);
32772 + /* Prepare CT request */
32773 + ct_req = &ha->ct_sns->p.req;
32774 + ct_rsp = &ha->ct_sns->p.rsp;
32775 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32777 + ct_req->header.revision = 0x01;
32778 + ct_req->header.gs_type = 0xFC;
32779 + ct_req->header.gs_subtype = 0x02;
32780 + ct_req->command = __constant_cpu_to_be16(GFT_ID_CMD);
32781 + ct_req->max_rsp_size =
32782 + __constant_cpu_to_be16((GFT_ID_RSP_SIZE - 16) / 4);
32784 + /* Prepare CT arguments -- port_id */
32785 + ct_req->req.port_id.port_id[0] = list[i].d_id.b.domain;
32786 + ct_req->req.port_id.port_id[1] = list[i].d_id.b.area;
32787 + ct_req->req.port_id.port_id[2] = list[i].d_id.b.al_pa;
32789 + /* Execute MS IOCB */
32790 + rval = qla2x00_issue_iocb(ha,
32791 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32792 + if (rval != QL_STATUS_SUCCESS) {
32794 + DEBUG2_3(printk("scsi(%ld): GFT_ID issue IOCB failed "
32796 + ha->host_no, rval));
32797 + } else if (ct_rsp->header.response !=
32798 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32799 + DEBUG2_3(printk("scsi(%ld): GFT_ID failed, rejected "
32800 + "request, gft_id_rsp:\n", ha->host_no));
32801 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32802 + sizeof(struct ct_rsp_hdr)));
32803 + rval = QL_STATUS_ERROR;
32805 + /* FCP-3 check necessary? No, assume FCP-3 */
32806 + /*if (ct_rsp->rsp.gft_id.fc4_types[2] & 0x01)*/
32807 + list[i].type = SW_TYPE_SCSI;
32808 + if (ct_rsp->rsp.gft_id.fc4_types[3] & 0x20)
32809 + list[i].type |= SW_TYPE_IP;
32811 + DEBUG2_3(printk("scsi(%ld): GID_PT entry - "
32812 + "nodename %02x%02x%02x%02x%02x%02x%02x%02x "
32813 + "portname %02x%02x%02x%02x%02x%02x%02x%02x "
32814 + "portid=%02x%02x%02x type=%02x.\n",
32816 + list[i].node_name[0], list[i].node_name[1],
32817 + list[i].node_name[2], list[i].node_name[3],
32818 + list[i].node_name[4], list[i].node_name[5],
32819 + list[i].node_name[6], list[i].node_name[7],
32820 + list[i].port_name[0], list[i].port_name[1],
32821 + list[i].port_name[2], list[i].port_name[3],
32822 + list[i].port_name[4], list[i].port_name[5],
32823 + list[i].port_name[6], list[i].port_name[7],
32824 + list[i].d_id.b.domain,
32825 + list[i].d_id.b.area,
32826 + list[i].d_id.b.al_pa,
32830 + /* Last device exit. */
32831 + if (list[i].d_id.b.rsvd_1 != 0)
32841 + * qla2x00_rft_id() - SNS Register FC-4 TYPEs (RFT_ID) supported by the HBA.
32842 + * @ha: HA context
32844 + * Returns 0 on success.
32847 +qla2x00_rft_id(scsi_qla_host_t *ha)
32851 + ms_iocb_entry_t *ms_pkt;
32852 + struct ct_sns_req *ct_req;
32853 + struct ct_sns_rsp *ct_rsp;
32857 + /* Issue RFT_ID */
32858 + /* Prepare common MS IOCB */
32859 + ms_pkt = qla2x00_prep_ms_iocb(ha, RFT_ID_REQ_SIZE, RFT_ID_RSP_SIZE);
32861 + /* Prepare CT request */
32862 + ct_req = &ha->ct_sns->p.req;
32863 + ct_rsp = &ha->ct_sns->p.rsp;
32864 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32866 + ct_req->header.revision = 0x01;
32867 + ct_req->header.gs_type = 0xFC;
32868 + ct_req->header.gs_subtype = 0x02;
32869 + ct_req->command = __constant_cpu_to_be16(RFT_ID_CMD);
32870 + ct_req->max_rsp_size =
32871 + __constant_cpu_to_be16((RFT_ID_RSP_SIZE - 16) / 4);
32873 + /* Prepare CT arguments -- port_id, FC-4 types */
32874 + ct_req->req.rft_id.port_id[0] = ha->d_id.b.domain;
32875 + ct_req->req.rft_id.port_id[1] = ha->d_id.b.area;
32876 + ct_req->req.rft_id.port_id[2] = ha->d_id.b.al_pa;
32878 + ct_req->req.rft_id.fc4_types[2] = 0x01; /* FCP-3 */
32879 + ha->active_fc4_types = EXT_DEF_FC4_TYPE_SCSI;
32881 +#if defined(FC_IP_SUPPORT)
32882 + if (ha->flags.enable_ip) {
32883 + ct_req->req.rft_id.fc4_types[3] = 0x20; /* IP over FC */
32884 + ha->active_fc4_types |= EXT_DEF_FC4_TYPE_IP;
32887 +#if defined(FC_VI_SUPPORT)
32888 + ct_req->req.rft_id.fc4_types[8] = 0x01; /* FC-VI */
32889 + ha->active_fc4_types |= EXT_DEF_FC4_TYPE_VI;
32892 + /* Execute MS IOCB */
32893 + rval = qla2x00_issue_iocb(ha,
32894 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32895 + if (rval != QL_STATUS_SUCCESS) {
32897 + DEBUG2_3(printk("scsi(%ld): RFT_ID issue IOCB failed (%d).\n",
32898 + ha->host_no, rval));
32899 + } else if (ct_rsp->header.response !=
32900 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32901 + DEBUG2_3(printk("scsi(%ld): RFT_ID failed, rejected "
32902 + "request, rft_id_rsp:\n", ha->host_no));
32903 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32904 + sizeof(struct ct_rsp_hdr)));
32905 + rval = QL_STATUS_ERROR;
32907 + DEBUG2(printk("scsi(%ld): RFT_ID exiting normally.\n",
32917 + * qla2x00_rff_id() - SNS Register FC-4 Features (RFF_ID) supported by the HBA.
32918 + * @ha: HA context
32920 + * Returns 0 on success.
32923 +qla2x00_rff_id(scsi_qla_host_t *ha)
32927 + ms_iocb_entry_t *ms_pkt;
32928 + struct ct_sns_req *ct_req;
32929 + struct ct_sns_rsp *ct_rsp;
32933 + /* Issue RFF_ID */
32934 + /* Prepare common MS IOCB */
32935 + ms_pkt = qla2x00_prep_ms_iocb(ha, RFF_ID_REQ_SIZE, RFF_ID_RSP_SIZE);
32937 + /* Prepare CT request */
32938 + ct_req = &ha->ct_sns->p.req;
32939 + ct_rsp = &ha->ct_sns->p.rsp;
32940 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
32942 + ct_req->header.revision = 0x01;
32943 + ct_req->header.gs_type = 0xFC;
32944 + ct_req->header.gs_subtype = 0x02;
32945 + ct_req->command = __constant_cpu_to_be16(RFF_ID_CMD);
32946 + ct_req->max_rsp_size =
32947 + __constant_cpu_to_be16((RFF_ID_RSP_SIZE - 16) / 4);
32949 + /* Prepare CT arguments -- port_id, FC-4 feature, FC-4 type */
32950 + ct_req->req.rff_id.port_id[0] = ha->d_id.b.domain;
32951 + ct_req->req.rff_id.port_id[1] = ha->d_id.b.area;
32952 + ct_req->req.rff_id.port_id[2] = ha->d_id.b.al_pa;
32954 + if (!ha->flags.enable_target_mode)
32955 + ct_req->req.rff_id.fc4_feature = 0x02; /* SCSI Initiator */
32957 + ct_req->req.rff_id.fc4_type = 0x08; /* SCSI - FCP */
32959 + /* Execute MS IOCB */
32960 + rval = qla2x00_issue_iocb(ha,
32961 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
32962 + if (rval != QL_STATUS_SUCCESS) {
32964 + DEBUG2_3(printk("scsi(%ld): RFF_ID issue IOCB failed (%d).\n",
32965 + ha->host_no, rval));
32966 + } else if (ct_rsp->header.response !=
32967 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
32968 + DEBUG2_3(printk("scsi(%ld): RFF_ID failed, rejected "
32969 + "request, rff_id_rsp:\n", ha->host_no));
32970 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
32971 + sizeof(struct ct_rsp_hdr)));
32972 + rval = QL_STATUS_ERROR;
32974 + DEBUG2(printk("scsi(%ld): RFF_ID exiting normally.\n",
32984 + * qla2x00_rnn_id() - SNS Register Node Name (RNN_ID) of the HBA.
32985 + * @ha: HA context
32987 + * Returns 0 on success.
32990 +qla2x00_rnn_id(scsi_qla_host_t *ha)
32994 + ms_iocb_entry_t *ms_pkt;
32995 + struct ct_sns_req *ct_req;
32996 + struct ct_sns_rsp *ct_rsp;
33000 + /* Issue RNN_ID */
33001 + /* Prepare common MS IOCB */
33002 + ms_pkt = qla2x00_prep_ms_iocb(ha, RNN_ID_REQ_SIZE, RNN_ID_RSP_SIZE);
33004 + /* Prepare CT request */
33005 + ct_req = &ha->ct_sns->p.req;
33006 + ct_rsp = &ha->ct_sns->p.rsp;
33007 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
33009 + ct_req->header.revision = 0x01;
33010 + ct_req->header.gs_type = 0xFC;
33011 + ct_req->header.gs_subtype = 0x02;
33012 + ct_req->command = __constant_cpu_to_be16(RNN_ID_CMD);
33013 + ct_req->max_rsp_size =
33014 + __constant_cpu_to_be16((RNN_ID_RSP_SIZE - 16) / 4);
33016 + /* Prepare CT arguments -- port_id, node_name */
33017 + ct_req->req.rnn_id.port_id[0] = ha->d_id.b.domain;
33018 + ct_req->req.rnn_id.port_id[1] = ha->d_id.b.area;
33019 + ct_req->req.rnn_id.port_id[2] = ha->d_id.b.al_pa;
33021 + memcpy(ct_req->req.rnn_id.node_name, ha->init_cb->node_name, WWN_SIZE);
33023 + /* Execute MS IOCB */
33024 + rval = qla2x00_issue_iocb(ha,
33025 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
33026 + if (rval != QL_STATUS_SUCCESS) {
33028 + DEBUG2_3(printk("scsi(%ld): RNN_ID issue IOCB failed (%d).\n",
33029 + ha->host_no, rval));
33030 + } else if (ct_rsp->header.response !=
33031 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
33032 + DEBUG2_3(printk("scsi(%ld): RNN_ID failed, rejected "
33033 + "request, rnn_id_rsp:\n", ha->host_no));
33034 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
33035 + sizeof(struct ct_rsp_hdr)));
33036 + rval = QL_STATUS_ERROR;
33038 + DEBUG2(printk("scsi(%ld): RNN_ID exiting normally.\n",
33048 + * qla2x00_rsnn_nn() - SNS Register Symbolic Node Name (RSNN_NN) of the HBA.
33049 + * @ha: HA context
33051 + * Returns 0 on success.
33054 +qla2x00_rsnn_nn(scsi_qla_host_t *ha)
33058 + uint8_t version[20];
33060 + ms_iocb_entry_t *ms_pkt;
33061 + struct ct_sns_req *ct_req;
33062 + struct ct_sns_rsp *ct_rsp;
33066 + /* Issue RSNN_NN */
33067 + /* Prepare common MS IOCB */
33068 + /* Request size adjusted after CT preparation */
33069 + ms_pkt = qla2x00_prep_ms_iocb(ha, 0, RSNN_NN_RSP_SIZE);
33071 + /* Prepare CT request */
33072 + ct_req = &ha->ct_sns->p.req;
33073 + ct_rsp = &ha->ct_sns->p.rsp;
33074 + memset(ct_req, 0, sizeof(struct ct_sns_pkt));
33076 + ct_req->header.revision = 0x01;
33077 + ct_req->header.gs_type = 0xFC;
33078 + ct_req->header.gs_subtype = 0x02;
33079 + ct_req->command = __constant_cpu_to_be16(RSNN_NN_CMD);
33080 + ct_req->max_rsp_size =
33081 + __constant_cpu_to_be16((RSNN_NN_RSP_SIZE - 16) / 4);
33083 + /* Prepare CT arguments -- node_name, symbolic node_name, size */
33084 + memcpy(ct_req->req.rsnn_nn.node_name, ha->init_cb->node_name, WWN_SIZE);
33086 + /* Prepare the Symbolic Node Name */
33088 + snn = ct_req->req.rsnn_nn.sym_node_name;
33089 +#if defined(ISP2300)
33090 + if (ha->pdev->device == QLA2312_DEVICE_ID) {
33091 + switch (ha->pdev->subsystem_device) {
33093 + strcpy(snn , "QLA2340");
33097 + strcpy(snn , "QLA2342");
33101 + strcpy(snn , "QLA2312");
33105 + strcpy(snn , "QLA2312");
33109 + strcpy(snn ,"QLA23xx");
33112 + sprintf(snn, "QLA%04x", ha->pdev->device);
33115 + /* Firmware version */
33116 + strcat(snn, " FW:v");
33117 + sprintf(version, "%d.%02d.%02d", ha->fw_major_version,
33118 + ha->fw_minor_version, ha->fw_subminor_version);
33119 + strcat(snn, version);
33121 + /* Driver version */
33122 + strcat(snn, " DVR:v");
33123 + strcat(snn, qla2x00_version_str);
33125 + /* Calculate SNN length */
33126 + ct_req->req.rsnn_nn.name_len = (uint8_t)strlen(snn);
33128 + /* Update MS IOCB request */
33129 + ms_pkt->req_bytecount =
33130 + cpu_to_le32(24 + 1 + ct_req->req.rsnn_nn.name_len);
33131 + ms_pkt->dseg_req_length = ms_pkt->req_bytecount;
33133 + /* Execute MS IOCB */
33134 + rval = qla2x00_issue_iocb(ha,
33135 + ha->ms_iocb, ha->ms_iocb_dma, sizeof(ms_iocb_entry_t));
33136 + if (rval != QL_STATUS_SUCCESS) {
33138 + DEBUG2_3(printk("scsi(%ld): RSNN_NN issue IOCB failed (%d).\n",
33139 + ha->host_no, rval));
33140 + } else if (ct_rsp->header.response !=
33141 + __constant_cpu_to_be16(CT_ACCEPT_RESPONSE)) {
33142 + DEBUG2_3(printk("scsi(%ld): RSNN_NN failed, rejected "
33143 + "request, rsnn_id_rsp:\n", ha->host_no));
33144 + DEBUG2_3(qla2x00_dump_buffer((uint8_t *)&ct_rsp->header,
33145 + sizeof(struct ct_rsp_hdr)));
33146 + rval = QL_STATUS_ERROR;
33148 + DEBUG2(printk("scsi(%ld): RSNN_NN exiting normally.\n",
33158 +qla2x00_add_initiator_device(scsi_qla_host_t *ha, fcdev_t *device)
33161 + fc_initiator_t *fcinitiator;
33164 + fcinitiator = kmalloc(sizeof(fc_initiator_t), GFP_ATOMIC);
33165 + if (fcinitiator != NULL) {
33166 + /* Setup initiator structure. */
33167 + memset(fcinitiator, 0, sizeof(fc_initiator_t));
33169 + memcpy(fcinitiator->node_name, device->name, WWN_SIZE);
33170 + memcpy(fcinitiator->port_name, device->wwn, WWN_SIZE);
33171 + fcinitiator->d_id.b24 = device->d_id.b24;
33172 + fcinitiator->loop_id = device->loop_id;
33173 + list_add_tail(&fcinitiator->list, &ha->fcinitiators);
33176 + printk(KERN_WARNING
33177 + "%s(): Memory Allocation failed - FCINITIATOR\n",
33185 + * qla2x00_restart_queues
33186 + * Restart device queues.
33189 + * ha = adapter block pointer.
33192 + * Kernel/Interrupt context.
33195 +qla2x00_restart_queues(scsi_qla_host_t *ha, uint8_t flush)
33198 + int retry_q_cnt = 0;
33199 + int pending_q_cnt = 0;
33200 + struct list_head *list, *temp;
33201 + unsigned long flags = 0;
33202 + struct list_head *hal;
33203 + scsi_qla_host_t *vis_ha;
33208 + clear_bit(RESTART_QUEUES_NEEDED, &ha->dpc_flags);
33211 + * start pending queue
33213 + pending_q_cnt = ha->qthreads;
33215 + spin_lock_irqsave(&ha->list_lock,flags);
33216 + list_for_each_safe(list, temp, &ha->pending_queue) {
33217 + sp = list_entry(list, srb_t, list);
33219 + * When time expire return request back to OS as BUSY
33221 + __del_from_pending_queue(ha, sp);
33222 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
33223 + CMD_HANDLE(sp->cmd) = (unsigned char *)NULL;
33224 + __add_to_done_queue(ha, sp);
33226 + spin_unlock_irqrestore(&ha->list_lock, flags);
33228 + if (!list_empty(&ha->pending_queue))
33229 + qla2x00_next(ha);
33233 + * Clear out our retry queue
33236 + spin_lock_irqsave(&ha->list_lock, flags);
33237 + retry_q_cnt = ha->retry_q_cnt;
33238 + list_for_each_safe(list, temp, &ha->retry_queue) {
33239 + sp = list_entry(list, srb_t, list);
33240 + /* when time expire return request back to OS as BUSY */
33241 + __del_from_retry_queue(ha, sp);
33242 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
33243 + CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
33244 + __add_to_done_queue(ha, sp);
33246 + spin_unlock_irqrestore(&ha->list_lock, flags);
33248 + DEBUG2(printk("%s(%ld): callback %d commands.\n",
33254 + DEBUG2(printk("%s(%ld): active=%ld, retry=%d, pending=%d, "
33255 + "done=%ld, failover=%d, scsi retry=%d commands.\n",
33262 + ha->failover_cnt,
33263 + ha->scsi_retry_q_cnt);)
33265 + if (ha->flags.failover_enabled) {
33266 + /* Try and start all visible adapters */
33267 + read_lock(&qla_hostlist_lock);
33268 + list_for_each(hal, &qla_hostlist) {
33269 + vis_ha = list_entry(hal, scsi_qla_host_t, list);
33271 + if (!list_empty(&vis_ha->pending_queue))
33272 + qla2x00_next(vis_ha);
33274 + DEBUG2(printk("host(%ld):Commands busy=%d "
33275 + "failed=%d\nin_recovery=%d "
33276 + "eh_active=%d\n ",
33278 + vis_ha->host->host_busy,
33279 + vis_ha->host->host_failed,
33280 + vis_ha->host->in_recovery,
33281 + vis_ha->host->eh_active);)
33283 + read_unlock(&qla_hostlist_lock);
33286 + if (!list_empty(&ha->done_queue))
33287 + schedule_work(&ha->run_qla_task);
33293 + * qla2x00_update_fc_database
33294 + * This routine updates the device data in the database.
33297 + * ha = adapter block pointer.
33298 + * device = device data pointer.
33301 + * 0 = success, if device found or added to database.
33303 + * BIT_1 = database was full and device was not configured.
33306 +qla2x00_update_fc_database(scsi_qla_host_t *ha,
33307 + fcdev_t *device, uint8_t enable_slot_reuse)
33312 + DEBUG(printk("scsi(%ld): Found device - "
33313 + "nodename=%02x%02x%02x%02x%02x%02x%02x%02x, "
33314 + "portname=%02x%02x%02x%02x%02x%02x%02x%02x, "
33315 + "port Id=%02x%02x%02x, loop id=%04x\n",
33317 + device->name[0], device->name[1],
33318 + device->name[2], device->name[3],
33319 + device->name[4], device->name[5],
33320 + device->name[6], device->name[7],
33321 + device->wwn[0], device->wwn[1],
33322 + device->wwn[2], device->wwn[3],
33323 + device->wwn[4], device->wwn[5],
33324 + device->wwn[6], device->wwn[7],
33325 + device->d_id.b.domain, device->d_id.b.area, device->d_id.b.al_pa,
33326 + device->loop_id));
33328 + /* Look for device in database. */
33329 + for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
33330 + if (ha->fc_db[cnt].loop_id == PORT_UNUSED)
33334 + switch (ha->binding_type) {
33335 + case BIND_BY_PORT_NAME:
33336 + rval = memcmp(device->wwn,
33337 + ha->fc_db[cnt].wwn, WWN_SIZE);
33340 + case BIND_BY_PORT_ID:
33341 + rval = (device->d_id.b24 != ha->fc_db[cnt].d_id.b24);
33344 + case BIND_BY_NODE_NAME:
33345 + rval = memcmp(device->name,
33346 + ha->fc_db[cnt].name, WWN_SIZE);
33352 + DEBUG(printk("scsi(%ld): Reusing slot %d for device "
33353 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
33354 + ha->host_no, cnt,
33362 + device->wwn[7]));
33364 + if (device->flag & DEV_PUBLIC) {
33365 + ha->fc_db[cnt].flag |= DEV_PUBLIC;
33367 + if (ha->fc_db[cnt].flag & DEV_PUBLIC) {
33368 + ha->fc_db[cnt].flag &= ~DEV_PUBLIC;
33369 + ha->fabricid[ha->fc_db[cnt].loop_id].in_use
33374 + ha->fc_db[cnt].loop_id = device->loop_id;
33375 + ha->fc_db[cnt].d_id.b24 = device->d_id.b24;
33377 + /* Update volatile unbound fields for PortID binding only */
33378 + if (ha->binding_type == BIND_BY_PORT_ID) {
33379 + memcpy(ha->fc_db[cnt].name, device->name, WWN_SIZE);
33380 + memcpy(ha->fc_db[cnt].wwn, device->wwn, WWN_SIZE);
33386 + /* Find a empty slot and add device into database. */
33387 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
33389 +/* FlexServ Patch */
33390 +#if QLA2XXX_HOTSWAP_ENUMERATION
33392 + * Enumerate upon the actual ID so add-single-device works
33394 + if (i != device->loop_id) {
33399 + if ((ha->fc_db[i].loop_id == PORT_UNUSED) ||
33400 + (ha->fc_db[i].loop_id == PORT_NEED_MAP)) {
33402 + DEBUG(printk("scsi(%ld): New slot %d for device "
33403 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
33412 + device->wwn[7]));
33414 + memcpy(ha->fc_db[i].name, device->name, WWN_SIZE);
33415 + memcpy(ha->fc_db[i].wwn, device->wwn, WWN_SIZE);
33416 + ha->fc_db[i].loop_id = device->loop_id;
33417 + ha->fc_db[i].d_id.b24 = device->d_id.b24;
33419 + if (device->flag & DEV_PUBLIC)
33420 + ha->fc_db[i].flag |= DEV_PUBLIC;
33422 + ha->flags.updated_fc_db = TRUE;
33428 + if (enable_slot_reuse) {
33429 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
33430 + if (ha->fc_db[i].loop_id == PORT_AVAILABLE) {
33431 + DEBUG(printk("scsi(%ld): Assigned slot %d "
33432 + "reuse for device "
33433 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
33442 + device->wwn[7]));
33444 + memcpy(ha->fc_db[i].name,
33445 + device->name, WWN_SIZE);
33446 + memcpy(ha->fc_db[i].wwn,
33447 + device->wwn, WWN_SIZE);
33448 + ha->fc_db[i].loop_id = device->loop_id;
33449 + ha->fc_db[i].d_id.b24 = device->d_id.b24;
33451 + if (device->flag & DEV_PUBLIC)
33452 + ha->fc_db[i].flag |= DEV_PUBLIC;
33454 + ha->flags.updated_fc_db = TRUE;
33465 + * qla2x00_build_fcport_list
33466 + * Updates device on list.
33469 + * ha = adapter block pointer.
33470 + * fcport = port structure pointer.
33477 + * Kernel context.
33480 +qla2x00_build_fcport_list(scsi_qla_host_t *ha)
33482 +// FIXME: FIX THIS C*!P!!!
33487 + struct list_head *fcpl;
33488 + fc_port_t *fcport;
33492 + for (cnt = 0; cnt < MAX_FIBRE_DEVICES; cnt++) {
33493 + dev = &ha->fc_db[cnt];
33495 + /* Skip if zero port name */
33496 + if (qla2x00_is_wwn_zero(dev->wwn)) {
33500 + DEBUG3(printk("scsi(%ld): found tgt %d in fc_db.\n",
33501 + ha->host_no, cnt));
33503 + /* Check for matching device in port list. */
33507 + list_for_each(fcpl, &ha->fcports) {
33508 + fcport = list_entry(fcpl, fc_port_t, list);
33511 + switch (ha->binding_type) {
33512 + case BIND_BY_PORT_NAME:
33513 + rval = memcmp(dev->wwn,
33514 + fcport->port_name,
33518 + case BIND_BY_PORT_ID:
33519 + rval = (dev->d_id.b24 !=
33520 + fcport->d_id.b24);
33523 + case BIND_BY_NODE_NAME:
33524 + rval = memcmp(dev->name,
33525 + fcport->node_name,
33535 + * Update volatile unbound fields for PortID binding
33538 + if (ha->binding_type == BIND_BY_PORT_ID) {
33539 + memcpy(fcport->node_name, dev->name, WWN_SIZE);
33540 + memcpy(fcport->port_name, dev->wwn, WWN_SIZE);
33543 + DEBUG(printk("%s(): Found matching port %02x%02x%02x, "
33544 + "device flags= 0x%x\n",
33546 + dev->d_id.b.domain,
33547 + dev->d_id.b.area,
33548 + dev->d_id.b.al_pa,
33551 + /* if device found is missing then mark it */
33552 + if (dev->flag & DEV_ABSENCE) {
33553 + DEBUG(printk("%s(): Port missing --- "
33554 + "(port_name) -> "
33555 + "%02x%02x%02x%02x%02x"
33557 + "loop id = 0x%04x\n",
33559 + fcport->port_name[0],
33560 + fcport->port_name[1],
33561 + fcport->port_name[2],
33562 + fcport->port_name[3],
33563 + fcport->port_name[4],
33564 + fcport->port_name[5],
33565 + fcport->port_name[6],
33566 + fcport->port_name[7],
33567 + fcport->loop_id);)
33569 + fcport->loop_id = FC_NO_LOOP_ID;
33571 + qla2x00_mark_device_lost(ha, fcport);
33577 + /* if device was missing but returned */
33578 + if (fcport->loop_id == FC_NO_LOOP_ID ||
33579 + !(dev->flag & DEV_PUBLIC) ||
33580 + atomic_read(&fcport->state) != FC_ONLINE) {
33582 + DEBUG(printk("%s(): Port returned +++ "
33583 + "(port_name) -> "
33584 + "%02x%02x%02x%02x%02x"
33586 + "loop id = 0x%04x\n",
33588 + fcport->port_name[0],
33589 + fcport->port_name[1],
33590 + fcport->port_name[2],
33591 + fcport->port_name[3],
33592 + fcport->port_name[4],
33593 + fcport->port_name[5],
33594 + fcport->port_name[6],
33595 + fcport->port_name[7],
33596 + fcport->loop_id);)
33598 + fcport->loop_id = dev->loop_id;
33599 + fcport->old_loop_id = dev->loop_id;
33600 + fcport->d_id.b24 = dev->d_id.b24;
33602 + if (qla2x00_update_fcport(ha, fcport, cnt)) {
33603 + DEBUG2(printk("%s(%ld): update_fcport "
33615 + DEBUG(printk("%s(): Match - fcport[%d] = fc_db[%d] "
33617 + "%02x%02x%02x%02x%02x%02x%02x%02x, "
33618 + "loop id = 0x%04x\n",
33622 + fcport->port_name[0],
33623 + fcport->port_name[1],
33624 + fcport->port_name[2],
33625 + fcport->port_name[3],
33626 + fcport->port_name[4],
33627 + fcport->port_name[5],
33628 + fcport->port_name[6],
33629 + fcport->port_name[7],
33630 + fcport->loop_id);)
33632 + fcport->loop_id = dev->loop_id;
33633 + fcport->old_loop_id = dev->loop_id;
33641 + /* Add device to port list. */
33642 + DEBUG3(printk("%s(%ld): adding new device to list.\n",
33646 + fcport = kmalloc(sizeof(fc_port_t), GFP_ATOMIC);
33647 + if (fcport == NULL)
33650 + memset(fcport, 0, sizeof(fc_port_t));
33652 + INIT_LIST_HEAD(&fcport->fcluns);
33654 + /* copy fields into fcport */
33655 + memcpy(fcport->port_name, dev->wwn, WWN_SIZE);
33656 + memcpy(fcport->node_name, dev->name, WWN_SIZE);
33658 + fcport->dev_id = cnt;
33660 + if (dev->flag & DEV_ABSENCE) {
33661 + DEBUG(printk("%s(): Port missing --- "
33662 + "(port_name) -> "
33663 + "%02x%02x%02x%02x"
33664 + "%02x%02x%02x%02x, "
33665 + "loop id = 0x%04x\n",
33667 + fcport->port_name[0],
33668 + fcport->port_name[1],
33669 + fcport->port_name[2],
33670 + fcport->port_name[3],
33671 + fcport->port_name[4],
33672 + fcport->port_name[5],
33673 + fcport->port_name[6],
33674 + fcport->port_name[7],
33675 + fcport->loop_id);)
33677 + fcport->loop_id = FC_NO_LOOP_ID;
33679 + qla2x00_mark_device_lost(ha, fcport);
33681 + fcport->loop_id = dev->loop_id;
33682 + fcport->old_loop_id = dev->loop_id;
33685 + fcport->d_id.b24 = dev->d_id.b24;
33687 + DEBUG(printk("%s(): New Device +++ (port_name) -> "
33688 + "%02x%02x%02x%02x%02x%02x%02x%02x, "
33689 + "loop id = 0x%04x\n",
33691 + fcport->port_name[0],
33692 + fcport->port_name[1],
33693 + fcport->port_name[2],
33694 + fcport->port_name[3],
33695 + fcport->port_name[4],
33696 + fcport->port_name[5],
33697 + fcport->port_name[6],
33698 + fcport->port_name[7],
33699 + fcport->loop_id);)
33702 + if (dev->flag & DEV_PUBLIC)
33703 + fcport->flags |= FC_FABRIC_DEVICE;
33705 + if (dev->flag & DEV_INITIATOR)
33706 + fcport->flags |= FC_INITIATOR_DEVICE;
33708 + /* Assume the device supports RLC */
33709 + fcport->flags |= FC_SUPPORT_RPT_LUNS;
33711 + if (!ha->flags.failover_enabled)
33712 + qla2x00_get_lun_mask_from_config(ha, fcport, cnt, 0);
33714 + /* Add to our list */
33715 + list_add_tail(&fcport->list, &ha->fcports);
33717 + if (qla2x00_update_fcport(ha, fcport, cnt)) {
33718 + DEBUG2(printk("%s(%ld): update_fcport failed.\n",
33732 + * qla2x00_config_os
33733 + * Setup OS target and LUN structures.
33736 + * ha = adapter state pointer.
33739 + * Kernel context.
33742 +qla2x00_config_os(scsi_qla_host_t *ha)
33744 + struct list_head *fcpl;
33745 + fc_port_t *fcport;
33746 + struct list_head *fcll;
33752 + DEBUG3(printk("%s(%ld): entered.\n", __func__, ha->host_no);)
33754 + list_for_each(fcpl, &ha->fcports) {
33755 + fcport = list_entry(fcpl, fc_port_t, list);
33757 + /* Allocate target */
33759 + if (fcport->loop_id == FC_NO_LOOP_ID)
33763 + /* Bind fcport to target number. */
33764 + DEBUG5(printk("%s(%ld): fcport bind= %p\n",
33766 + ha->host_no, fcport);)
33768 + if ((t = qla2x00_fcport_bind(ha, fcport)) == MAX_TARGETS)
33772 + if ((ha->fc_db[t].flag & DEV_FLAG_VSA))
33773 + fcport->flags |= FC_VSA;
33775 + DEBUG5(printk("%s(%ld): going to alloc lun for tgt %d. mask="
33776 + "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
33777 + "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
33778 + "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
33783 + fcport->lun_mask.mask[0],
33784 + fcport->lun_mask.mask[1],
33785 + fcport->lun_mask.mask[2],
33786 + fcport->lun_mask.mask[3],
33787 + fcport->lun_mask.mask[4],
33788 + fcport->lun_mask.mask[5],
33789 + fcport->lun_mask.mask[6],
33790 + fcport->lun_mask.mask[7],
33791 + fcport->lun_mask.mask[8],
33792 + fcport->lun_mask.mask[9],
33793 + fcport->lun_mask.mask[10],
33794 + fcport->lun_mask.mask[11],
33795 + fcport->lun_mask.mask[12],
33796 + fcport->lun_mask.mask[13],
33797 + fcport->lun_mask.mask[14],
33798 + fcport->lun_mask.mask[15],
33799 + fcport->lun_mask.mask[16],
33800 + fcport->lun_mask.mask[17],
33801 + fcport->lun_mask.mask[18],
33802 + fcport->lun_mask.mask[19],
33803 + fcport->lun_mask.mask[20],
33804 + fcport->lun_mask.mask[21],
33805 + fcport->lun_mask.mask[22],
33806 + fcport->lun_mask.mask[23],
33807 + fcport->lun_mask.mask[24],
33808 + fcport->lun_mask.mask[25],
33809 + fcport->lun_mask.mask[26],
33810 + fcport->lun_mask.mask[27],
33811 + fcport->lun_mask.mask[28],
33812 + fcport->lun_mask.mask[29],
33813 + fcport->lun_mask.mask[30],
33814 + fcport->lun_mask.mask[31]);)
33816 + /* Allocate LUNs */
33817 + list_for_each(fcll, &fcport->fcluns) {
33818 + fclun = list_entry(fcll, fc_lun_t, list);
33820 + l = fclun->lun; /* Must not exceed MAX_LUN */
33823 + * Always alloc LUN 0 so kernel will scan past LUN 0.
33826 + (EXT_IS_LUN_BIT_SET(&(fcport->lun_mask), l))) {
33828 + /* mask this LUN */
33832 + if ((lq = qla2x00_lun_alloc(ha, t, l)) == NULL)
33835 + lq->fclun = fclun;
33839 + DEBUG3(printk("%s(%ld): exiting normally.\n", __func__, ha->host_no);)
33843 + * qla2x00_fcport_bind
33844 + * Locates a target number for FC port.
33847 + * ha = adapter state pointer.
33848 + * fcport = FC port structure pointer.
33854 + * Kernel context.
33857 +qla2x00_fcport_bind(scsi_qla_host_t *ha, fc_port_t *fcport)
33865 + /* Check for tgt already allocated for persistent binding. */
33866 + for (t = 0; t < MAX_TARGETS; t++) {
33867 + if ((tq = TGT_Q(ha, t)) == NULL)
33871 + switch (ha->binding_type) {
33872 + case BIND_BY_PORT_NAME:
33873 + rval = memcmp(fcport->port_name,
33874 + tq->port_name, WWN_SIZE);
33877 + case BIND_BY_PORT_ID:
33878 + rval = (fcport->d_id.b24 != tq->d_id.b24);
33881 + case BIND_BY_NODE_NAME:
33882 + rval = memcmp(fcport->node_name,
33883 + tq->node_name, WWN_SIZE);
33886 + /* Found a persistently bound match */
33891 + if (fcport->loop_id == FC_NO_LOOP_ID) {
33892 + DEBUG(tq = TGT_Q(ha, t);)
33893 + DEBUG(printk("scsi%ld: Missing target ID %02x @ %p to "
33894 + "loop id: %04x, port state=0x%x, "
33895 + "port down retry=%d\n",
33900 + atomic_read(&fcport->state),
33901 + atomic_read(&fcport->port_down_timer));)
33902 + return (MAX_TARGETS);
33905 + if (t != MAX_TARGETS) {
33906 + tq = TGT_Q(ha, t);
33907 + tq->vis_port = fcport;
33909 + DEBUG(printk("scsi%ld: Assigning target ID %02x @ %p to "
33910 + "loop id: %04x, port state=0x%x, "
33911 + "port down retry=%d\n",
33916 + atomic_read(&fcport->state),
33917 + atomic_read(&fcport->port_down_timer));)
33921 + /* Check for persistent binding not yet configured. */
33922 + for (t = 0; t < MAX_TARGETS; t++) {
33924 + switch (ha->binding_type) {
33925 + case BIND_BY_PORT_NAME:
33926 + rval = memcmp(fcport->port_name,
33927 + ha->fc_db[t].wwn, WWN_SIZE);
33930 + case BIND_BY_PORT_ID:
33931 + rval = (fcport->d_id.b24 !=
33932 + ha->fc_db[t].d_id.b24);
33935 + case BIND_BY_NODE_NAME:
33936 + rval = memcmp(fcport->node_name,
33937 + ha->fc_db[t].name, WWN_SIZE);
33940 + /* Found not-yet-allocated target at t */
33945 + if (t == MAX_TARGETS) {
33946 + /* Check if slot at loop ID is available. */
33947 + t = fcport->loop_id;
33948 + if (TGT_Q(ha, t) != NULL) {
33949 + /* Locate first free target id in db for device. */
33950 + for (t = 0; t < MAX_TARGETS; t++) {
33951 + if (TGT_Q(ha, t) == NULL)
33957 + if (t != MAX_TARGETS) {
33958 + tq = qla2x00_tgt_alloc(ha, t);
33959 + if (tq != NULL) {
33960 + memcpy(tq->port_name, fcport->port_name, WWN_SIZE);
33961 + tq->d_id.b24 = fcport->d_id.b24;
33962 + memcpy(tq->node_name, fcport->node_name, WWN_SIZE);
33968 + if (t == MAX_TARGETS) {
33969 + DEBUG2(printk("%s(): **** FAILED ****", __func__);)
33970 + printk(KERN_WARNING
33971 + "%s(): **** FAILED ****", __func__);
33973 + if (!ha->flags.failover_enabled) {
33974 + /* fcport IS the visible port in non-failover mode */
33975 + tq = TGT_Q(ha, t);
33976 + tq->vis_port = fcport;
33979 + DEBUG(tq = TGT_Q(ha, t);)
33980 + DEBUG(printk("scsi%ld: Assigning target ID %02x @ %p to "
33981 + "loop id: %04x, port state=0x%x, "
33982 + "port down retry=%d\n",
33987 + atomic_read(&fcport->state),
33988 + atomic_read(&fcport->port_down_timer));)
33997 + * qla2x00_update_fcport
33998 + * Updates device on list.
34001 + * ha = adapter block pointer.
34002 + * fcport = port structure pointer.
34009 + * Kernel context.
34012 +qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport, int index)
34014 + DEBUG4(printk("%s(): entered, loop_id = %d\n",
34016 + fcport->loop_id);)
34018 + fcport->port_login_retry_count =
34019 + ha->port_down_retry_count * PORT_RETRY_TIME;
34020 + atomic_set(&fcport->state, FC_ONLINE);
34021 + fcport->login_retry = 0;
34023 + atomic_set(&fcport->port_down_timer,
34024 + ha->port_down_retry_count * PORT_RETRY_TIME);
34026 + /* Do LUN discovery. */
34027 + return (qla2x00_lun_discovery(ha, fcport, index));
34031 + * qla2x00_lun_discovery
34032 + * Issue SCSI inquiry command for LUN discovery.
34035 + * ha = adapter block pointer.
34036 + * fcport = FC port structure pointer.
34043 + * Kernel context.
34046 +qla2x00_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport, int index)
34048 + inq_cmd_rsp_t *pkt;
34051 + struct list_head *fcll;
34054 + dma_addr_t phys_address = 0;
34055 + int disconnected;
34058 + int rlc_succeeded;
34059 + uint16_t comp_status;
34060 + uint16_t scsi_status;
34065 + * Immediately issue a RLC to the fcport
34067 + rlc_succeeded = 0;
34068 + if (qla2x00_rpt_lun_discovery(ha, fcport) == QLA2X00_SUCCESS) {
34070 + * We always need at least LUN 0 to be present in our fclun
34071 + * list if RLC succeeds.
34073 + qla2x00_cfg_lun(fcport, 0);
34075 + * At least do an inquiry on LUN 0 to determine peripheral
34076 + * qualifier type.
34078 + rlc_succeeded = 1;
34082 + * RLC failed for some reason, try basic inquiries
34084 + pkt = pci_alloc_consistent(ha->pdev,
34085 + sizeof(inq_cmd_rsp_t), &phys_address);
34086 + if (pkt == NULL) {
34087 + printk(KERN_WARNING
34088 + "scsi(%ld): Memory Allocation failed - INQ\n",
34095 + for (lun = 0; lun < ha->max_probe_luns; lun++) {
34098 + memset(pkt, 0, sizeof(inq_cmd_rsp_t));
34099 + pkt->p.cmd.entry_type = COMMAND_A64_TYPE;
34100 + pkt->p.cmd.entry_count = 1;
34101 + pkt->p.cmd.lun = cpu_to_le16(lun);
34102 +#if defined(EXTENDED_IDS)
34103 + pkt->p.cmd.target = cpu_to_le16(fcport->loop_id & 0xFF);
34105 + pkt->p.cmd.target = (uint8_t)fcport->loop_id;
34107 + pkt->p.cmd.control_flags =
34108 + __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG);
34109 + pkt->p.cmd.scsi_cdb[0] = INQ_SCSI_OPCODE;
34110 + pkt->p.cmd.scsi_cdb[4] = INQ_DATA_SIZE;
34111 + pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1);
34112 + pkt->p.cmd.timeout = __constant_cpu_to_le16(10);
34113 + pkt->p.cmd.byte_count =
34114 + __constant_cpu_to_le32(INQ_DATA_SIZE);
34115 + pkt->p.cmd.dseg_0_address[0] = cpu_to_le32(
34116 + LSD(phys_address + sizeof(sts_entry_t)));
34117 + pkt->p.cmd.dseg_0_address[1] = cpu_to_le32(
34118 + MSD(phys_address + sizeof(sts_entry_t)));
34119 + pkt->p.cmd.dseg_0_length =
34120 + __constant_cpu_to_le32(INQ_DATA_SIZE);
34122 + DEBUG5(printk("scsi(%ld): Lun Inquiry - fcport=%p,"
34124 + ha->host_no, fcport, lun));
34126 + rval = qla2x00_issue_iocb(ha,
34127 + pkt, phys_address, sizeof(inq_cmd_rsp_t));
34129 + comp_status = le16_to_cpu(pkt->p.rsp.comp_status);
34130 + scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status);
34132 + DEBUG5(printk("scsi(%ld): lun (%d) inquiry - "
34133 + "inq[0]= 0x%x, comp status 0x%x, scsi status 0x%x, "
34136 + lun, pkt->inq[0],
34137 + comp_status, scsi_status, rval));
34139 + /* if port not logged in then try and login */
34140 + if (lun == 0 && comp_status == CS_PORT_LOGGED_OUT) {
34141 + memset(&dev, 0, sizeof (dev));
34142 + dev.d_id.b24 = ha->fc_db[index].d_id.b24;
34144 + /* login and update database */
34145 + if (qla2x00_fabric_login(ha, &dev) == 0)
34146 + ha->fc_db[index].loop_id = dev.loop_id;
34148 + } while ((rval != QLA2X00_SUCCESS ||
34149 + comp_status != CS_COMPLETE) && retry--);
34151 + if (rval != QLA2X00_SUCCESS ||
34152 + comp_status != CS_COMPLETE ||
34153 + (scsi_status & SS_CHECK_CONDITION)) {
34155 + DEBUG(printk("scsi(%ld): Failed lun inquiry - "
34156 + "inq[0]= 0x%x, comp status 0x%x, scsi status 0x%x. "
34160 + comp_status, scsi_status,
34161 + fcport->loop_id));
34166 + disconnected = 0;
34169 + * We only need to issue an inquiry on LUN 0 to determine the
34170 + * port's peripheral qualifier type
34172 + if (rlc_succeeded == 1) {
34173 + if (pkt->inq[0] == 0 || pkt->inq[0] == 0xc) {
34174 + fcport->flags &= ~(FC_TAPE_DEVICE);
34175 + ha->fc_db[index].flag &= ~DEV_TAPE_DEVICE;
34176 + } else if (pkt->inq[0] == 1 || pkt->inq[0] == 8) {
34177 + fcport->flags |= FC_TAPE_DEVICE;
34178 + ha->fc_db[index].flag |= DEV_TAPE_DEVICE;
34181 + /* Stop the scan */
34186 + * 0x0- Hard Disk.
34187 + * 0xc- is a processor device.
34188 + * 0x1- is a Tape Device.
34189 + * 0x8- is a medium changer device
34190 + * which is basically a Tape device.
34192 + if (pkt->inq[0] == 0 || pkt->inq[0] == 0xc) {
34193 + fcport->flags &= ~(FC_TAPE_DEVICE);
34194 + ha->fc_db[index].flag &= ~DEV_TAPE_DEVICE;
34195 + } else if (pkt->inq[0] == 1 || pkt->inq[0] == 8) {
34196 + fcport->flags |= FC_TAPE_DEVICE;
34197 + ha->fc_db[index].flag |= DEV_TAPE_DEVICE;
34198 + } else if (pkt->inq[0] == 0x20 || pkt->inq[0] == 0x7f) {
34204 + /* Allocate LUN if not already allocated. */
34206 + list_for_each(fcll, &fcport->fcluns) {
34207 + fclun = list_entry(fcll, fc_lun_t, list);
34209 + if (fclun->lun == lun) {
34217 + /* Add this lun to our list */
34218 + fclun = kmalloc(sizeof(fc_lun_t), GFP_ATOMIC);
34219 + if (fclun != NULL) {
34220 + fcport->lun_cnt++;
34221 + /* Setup LUN structure. */
34222 + memset(fclun, 0, sizeof(fc_lun_t));
34224 + fclun->fcport = fcport;
34225 + fclun->lun = lun;
34227 + if (disconnected)
34228 + fclun->flags |= FC_DISCON_LUN;
34230 + list_add_tail(&fclun->list, &fcport->fcluns);
34232 + DEBUG5(printk("scsi(%ld): Allocated fclun %p, lun=%d"
34233 + "disconnected=%d\n",
34239 + printk(KERN_WARNING
34240 + "scsi(%ld): Memory Allocation failed - fclun\n",
34244 + pci_free_consistent(ha->pdev,
34245 + sizeof(inq_cmd_rsp_t), pkt, phys_address);
34252 + DEBUG(printk("scsi(%ld): fcport lun count=%d, fcport= %p\n",
34253 + ha->host_no, fcport->lun_cnt, fcport));
34255 + pci_free_consistent(ha->pdev, sizeof(inq_cmd_rsp_t), pkt, phys_address);
34263 + * qla2x00_rpt_lun_discovery
34264 + * Issue SCSI report LUN command for LUN discovery.
34267 + * ha: adapter state pointer.
34268 + * fcport: FC port structure pointer.
34271 + * qla2x00 local function return status code.
34274 + * Kernel context.
34277 +qla2x00_rpt_lun_discovery(scsi_qla_host_t *ha, fc_port_t *fcport)
34279 + rpt_lun_cmd_rsp_t *pkt;
34280 + dma_addr_t phys_address = 0;
34282 + uint32_t len, cnt;
34285 + uint16_t comp_status;
34286 + uint16_t scsi_status;
34290 + /* Assume a failed status */
34291 + rval = QLA2X00_FAILED;
34293 + /* No point in continuing if the device doesn't support RLC */
34294 + if (!(fcport->flags & FC_SUPPORT_RPT_LUNS))
34297 + pkt = pci_alloc_consistent(ha->pdev,
34298 + sizeof(rpt_lun_cmd_rsp_t), &phys_address);
34299 + if (pkt == NULL) {
34300 + printk(KERN_WARNING
34301 + "scsi(%ld): Memory Allocation failed - RLC",
34308 + for (retries = 4; retries; retries--) {
34309 + memset(pkt, 0, sizeof(rpt_lun_cmd_rsp_t));
34310 + pkt->p.cmd.entry_type = COMMAND_A64_TYPE;
34311 + pkt->p.cmd.entry_count = 1;
34312 +#if defined(EXTENDED_IDS)
34313 + pkt->p.cmd.target = cpu_to_le16(fcport->loop_id & 0xFF);
34315 + pkt->p.cmd.target = (uint8_t)fcport->loop_id;
34317 + pkt->p.cmd.control_flags =
34318 + __constant_cpu_to_le16(CF_READ | CF_SIMPLE_TAG);
34319 + pkt->p.cmd.scsi_cdb[0] = RPT_LUN_SCSI_OPCODE;
34320 + pkt->p.cmd.scsi_cdb[8] = MSB(sizeof(rpt_lun_lst_t));
34321 + pkt->p.cmd.scsi_cdb[9] = LSB(sizeof(rpt_lun_lst_t));
34322 + pkt->p.cmd.dseg_count = __constant_cpu_to_le16(1);
34323 + pkt->p.cmd.timeout = __constant_cpu_to_le16(10);
34324 + pkt->p.cmd.byte_count =
34325 + __constant_cpu_to_le32(sizeof(rpt_lun_lst_t));
34326 + pkt->p.cmd.dseg_0_address[0] = cpu_to_le32(
34327 + LSD(phys_address + sizeof(sts_entry_t)));
34328 + pkt->p.cmd.dseg_0_address[1] = cpu_to_le32(
34329 + MSD(phys_address + sizeof(sts_entry_t)));
34330 + pkt->p.cmd.dseg_0_length =
34331 + __constant_cpu_to_le32(sizeof(rpt_lun_lst_t));
34333 + rval = qla2x00_issue_iocb(ha,
34334 + pkt, phys_address, sizeof(rpt_lun_cmd_rsp_t));
34336 + comp_status = le16_to_cpu(pkt->p.rsp.comp_status);
34337 + scsi_status = le16_to_cpu(pkt->p.rsp.scsi_status);
34339 + if (rval != QLA2X00_SUCCESS ||
34340 + comp_status != CS_COMPLETE ||
34341 + scsi_status & SS_CHECK_CONDITION) {
34343 + /* Device underrun, treat as OK. */
34344 + if (comp_status == CS_DATA_UNDERRUN &&
34345 + scsi_status & SS_RESIDUAL_UNDER) {
34347 + rval = QLA2X00_SUCCESS;
34351 + DEBUG(printk("scsi(%ld): RLC failed to issue iocb! "
34352 + "fcport = %p rval = %x cs = %x ss = %x\n",
34355 + rval, comp_status, scsi_status));
34357 + rval = QLA2X00_FAILED;
34358 + if (scsi_status & SS_CHECK_CONDITION) {
34359 + DEBUG2(printk("scsi(%ld): RLC "
34360 + "SS_CHECK_CONDITION Sense Data "
34361 + "%02x %02x %02x %02x %02x %02x %02x %02x\n",
34363 + pkt->p.rsp.req_sense_data[0],
34364 + pkt->p.rsp.req_sense_data[1],
34365 + pkt->p.rsp.req_sense_data[2],
34366 + pkt->p.rsp.req_sense_data[3],
34367 + pkt->p.rsp.req_sense_data[4],
34368 + pkt->p.rsp.req_sense_data[5],
34369 + pkt->p.rsp.req_sense_data[6],
34370 + pkt->p.rsp.req_sense_data[7]));
34371 + /* No point in retrying if ILLEGAL REQUEST */
34372 + if (pkt->p.rsp.req_sense_data[2] ==
34373 + ILLEGAL_REQUEST) {
34374 + /* Clear RLC support flag */
34375 + fcport->flags &= ~(FC_SUPPORT_RPT_LUNS);
34384 + /* Test for report LUN failure. */
34385 + if (rval == QLA2X00_SUCCESS) {
34386 + /* Configure LUN list. */
34387 + len = be32_to_cpu(pkt->list.hdr.len);
34390 + rval = QLA2X00_FAILED;
34392 + for (cnt = 0; cnt < len; cnt++) {
34393 + lun = CHAR_TO_SHORT(pkt->list.lst[cnt].lsb,
34394 + pkt->list.lst[cnt].msb.b);
34396 + DEBUG3(printk("scsi(%ld): RLC lun = (%d)\n",
34397 + ha->host_no, lun));
34399 + /* We only support 0 through MAX_LUNS-1 range */
34400 + if (lun < MAX_LUNS) {
34401 + qla2x00_cfg_lun(fcport, lun);
34404 + rval = QLA2X00_SUCCESS;
34407 + rval = QLA2X00_FAILED;
34410 + pci_free_consistent(ha->pdev,
34411 + sizeof(rpt_lun_cmd_rsp_t), pkt, phys_address);
34420 + * qla2x00_cfg_lun
34421 + * Configures LUN into fcport LUN list.
34424 + * fcport: FC port structure pointer.
34425 + * lun: LUN number.
34428 + * Kernel context.
34431 +qla2x00_cfg_lun(fc_port_t *fcport, uint16_t lun)
34434 + struct list_head *fcll;
34437 + /* Allocate LUN if not already allocated. */
34439 + list_for_each(fcll, &fcport->fcluns) {
34440 + fclun = list_entry(fcll, fc_lun_t, list);
34442 + if (fclun->lun == lun) {
34448 + fclun = kmalloc(sizeof(fc_lun_t), GFP_ATOMIC);
34449 + if (fclun != NULL) {
34450 + fcport->lun_cnt++;
34451 + /* Setup LUN structure. */
34452 + memset(fclun, 0, sizeof(fc_lun_t));
34453 + fclun->fcport = fcport;
34454 + fclun->lun = lun;
34455 + /* How dow we assign the following */
34456 + /* fclun->state = FCS_ONLINE; */
34458 + list_add_tail(&fclun->list, &fcport->fcluns);
34460 + printk(KERN_WARNING
34461 + "%s(): Memory Allocation failed - FCLUN\n",
34468 + * qla2x00_tgt_alloc
34469 + * Allocate and pre-initialize target queue.
34472 + * ha = adapter block pointer.
34473 + * t = SCSI target number.
34479 + * Kernel context.
34482 +qla2x00_tgt_alloc(scsi_qla_host_t *ha, uint16_t t)
34489 + * If SCSI addressing OK, allocate TGT queue and lock.
34491 + if (t >= MAX_TARGETS) {
34492 + DEBUG2(printk("%s(%ld): *** Invalid target number, exiting ***",
34498 + tq = TGT_Q(ha, t);
34499 + if (tq == NULL) {
34500 + tq = kmalloc(sizeof(os_tgt_t), GFP_ATOMIC);
34501 + if (tq != NULL) {
34502 + DEBUG(printk("Alloc Target %d @ %p\n", t, tq);)
34504 + memset(tq, 0, sizeof(os_tgt_t));
34505 + tq->flags = TGT_TAGGED_QUEUE;
34508 + TGT_Q(ha, t) = tq;
34511 + if (tq != NULL) {
34512 + tq->port_down_retry_count = ha->port_down_retry_count;
34514 + printk(KERN_WARNING
34515 + "%s(%ld): Failed to allocate target\n",
34527 + * qla2x00_tgt_free
34528 + * Frees target and LUN queues.
34531 + * ha = adapter block pointer.
34532 + * t = SCSI target number.
34535 + * Kernel context.
34538 +qla2x00_tgt_free(scsi_qla_host_t *ha, uint16_t t)
34546 + * If SCSI addressing OK, allocate TGT queue and lock.
34548 + if (t >= MAX_TARGETS) {
34549 + DEBUG2(printk("%s(): **** FAILED exiting ****", __func__);)
34554 + tq = TGT_Q(ha, t);
34555 + if (tq != NULL) {
34556 + TGT_Q(ha, t) = NULL;
34557 + DEBUG(printk("Dealloc target @ %p -- deleted\n", tq);)
34559 + /* Free LUN structures. */
34560 + for (l = 0; l < MAX_LUNS; l++)
34561 + qla2x00_lun_free(ha, t, l);
34572 + * qla2x00_lun_alloc
34573 + * Allocate and initialize LUN queue.
34576 + * ha = adapter block pointer.
34577 + * t = SCSI target number.
34578 + * l = LUN number.
34584 + * Kernel context.
34587 +qla2x00_lun_alloc(scsi_qla_host_t *ha, uint16_t t, uint16_t l)
34594 + * If SCSI addressing OK, allocate LUN queue.
34596 + if (t >= MAX_TARGETS ||
34598 + TGT_Q(ha, t) == NULL) {
34600 + DEBUG2(printk("%s(): tgt=%d, tgt_q= %p, lun=%d, "
34601 + "instance=%ld **** FAILED exiting ****\n",
34611 + lq = LUN_Q(ha, t, l);
34612 + if (lq == NULL) {
34613 + lq = kmalloc(sizeof(os_lun_t), GFP_ATOMIC);
34614 + if (lq != NULL) {
34616 + DEBUG5(printk("Alloc Lun %d @ %p \n",l,lq);)
34618 + memset(lq, 0, sizeof (os_lun_t));
34619 + LUN_Q(ha, t, l) = lq;
34621 + * The following lun queue initialization code
34622 + * must be duplicated in alloc_ioctl_mem function
34625 + lq->q_state = LUN_STATE_READY;
34626 + spin_lock_init(&lq->q_lock);
34629 + DEBUG2(printk("%s(): Failed to allocate lun %d ***\n",
34632 + printk(KERN_WARNING
34633 + "scsi(%ld): Memory Allocation failed - FCLUN\n",
34639 + if (lq == NULL) {
34640 + DEBUG2(printk("%s(): **** FAILED exiting ****\n", __func__);)
34649 + * qla2x00_lun_free
34650 + * Frees LUN queue.
34653 + * ha = adapter block pointer.
34654 + * t = SCSI target number.
34657 + * Kernel context.
34660 +qla2x00_lun_free(scsi_qla_host_t *ha, uint16_t t, uint16_t l)
34667 + * If SCSI addressing OK, allocate TGT queue and lock.
34669 + if (t >= MAX_TARGETS || l >= MAX_LUNS) {
34670 + DEBUG2(printk("%s(): **** FAILED exiting ****", __func__);)
34675 + if (TGT_Q(ha, t) != NULL &&
34676 + (lq = LUN_Q(ha, t, l)) != NULL) {
34678 + LUN_Q(ha, t, l) = NULL;
34681 + DEBUG3(printk("Dealloc lun @ %p -- deleted\n", lq);)
34691 + * qla2x00_get_lun_mask_from_config
34692 + * Get lun mask from the configuration parameters.
34693 + * Bit order is little endian.
34696 + * ha -- Host adapter
34697 + * tgt -- target/device number
34698 + * port -- pointer to port
34701 +qla2x00_get_lun_mask_from_config(scsi_qla_host_t *ha,
34702 + fc_port_t *port, uint16_t tgt, uint16_t dev_no)
34704 + char propbuf[60]; /* size of search string */
34705 + int rval, lun, l;
34706 + lun_bit_mask_t lun_mask, *mask_ptr = &lun_mask;
34708 + /* Get "target-N-device-N-lun-mask" as a 256 bit lun_mask*/
34709 + sprintf(propbuf, "scsi-qla%ld-tgt-%d-di-%d-lun-disabled",
34710 + ha->instance, tgt, dev_no);
34712 + rval = qla2x00_get_prop_xstr(ha, propbuf, (uint8_t *)&lun_mask,
34713 + sizeof(lun_bit_mask_t));
34714 + if (rval != -1 &&
34715 + (rval == sizeof(lun_bit_mask_t))) {
34717 + DEBUG3(printk("%s(%ld): lun mask for port %p from file:\n",
34721 + DEBUG3(qla2x00_dump_buffer((uint8_t *)&port->lun_mask,
34722 + sizeof(lun_bit_mask_t));)
34724 + for (lun = 8 * sizeof(lun_bit_mask_t) - 1, l = 0;
34728 + if (EXT_IS_LUN_BIT_SET(mask_ptr, lun))
34729 + EXT_SET_LUN_BIT((&port->lun_mask),l);
34731 + EXT_CLR_LUN_BIT((&port->lun_mask),l);
34734 + DEBUG3(printk("%s(%ld): returning lun mask for port "
34735 + "%02x%02x%02x%02x%02x%02x%02x%02x:\n",
34738 + port->port_name[0], port->port_name[1],
34739 + port->port_name[2], port->port_name[3],
34740 + port->port_name[4], port->port_name[5],
34741 + port->port_name[6], port->port_name[7]);)
34742 + DEBUG3(qla2x00_dump_buffer((uint8_t *)&port->lun_mask,
34743 + sizeof(lun_bit_mask_t));)
34748 + * qla2x00_bstr_to_hex
34749 + * Convert hex byte string to number.
34752 + * s = byte string pointer.
34753 + * bp = byte pointer for number.
34754 + * size = number of bytes.
34757 + * Kernel/Interrupt context.
34760 +qla2x00_bstr_to_hex(char *s, uint8_t *bp, int size)
34767 + for (cnt = 0; *s != '\0' && cnt / 2 < size; cnt++) {
34768 + if (*s >= 'A' && *s <= 'F') {
34769 + n = (*s++ - 'A') + 10;
34770 + } else if (*s >= 'a' && *s <= 'f') {
34771 + n = (*s++ - 'a') + 10;
34772 + } else if (*s >= '0' && *s <= '9') {
34784 + /* fixme(dg) Need to swap data little endian */
34788 + return (cnt / 2);
34792 + * qla2x00_get_prop_xstr
34793 + * Get a string property value for the specified property name and
34794 + * convert from the property string found in the configuration file,
34795 + * which are ASCII characters representing nibbles, 2 characters represent
34796 + * the hexdecimal value for a byte in the byte array.
34797 + * The byte array is initialized to zero.
34798 + * The resulting converted value is in big endian format (MSB at byte0).
34801 + * ha = adapter state pointer.
34802 + * propname = property name pointer.
34803 + * propval = pointer where to store converted property val.
34804 + * size = max or expected size of 'propval' array.
34807 + * 0 = empty value string or invalid character in string
34808 + * >0 = count of characters converted
34809 + * -1 = property not found
34812 + * Kernel context.
34815 +qla2x00_get_prop_xstr(scsi_qla_host_t *ha,
34816 + char *propname, uint8_t *propval, int size)
34820 + static char buf[LINESIZE];
34824 + /* Get the requested property string */
34825 + rval = qla2x00_find_propname(ha, propname, buf, ha->cmdline, size*2);
34826 + DEBUG3(printk("%s(): Ret rval from find propname = %d\n",
34830 + propstr = &buf[0];
34831 + if (*propstr == '=')
34832 + propstr++; /* ignore equal sign */
34834 + if (rval == 0) { /* not found */
34839 + rval = qla2x00_bstr_to_hex(propstr, (uint8_t *)propval, size);
34841 + /* Invalid character in value string */
34843 + "%s(): %s Invalid hex string for property\n",
34847 + " Invalid string - %s\n",
34857 + * qla2x00_find_propname
34858 + * Get property in database.
34861 + * ha = adapter structure pointer.
34862 + * db = pointer to database
34863 + * propstr = pointer to dest array for string
34864 + * propname = name of property to search for.
34865 + * siz = size of property
34868 + * 0 = no property
34869 + * size = index of property
34872 + * Kernel context.
34875 +qla2x00_find_propname(scsi_qla_host_t *ha,
34876 + char *propname, char *propstr,
34877 + char *db, int siz)
34881 + /* find the specified string */
34883 + /* find the property name */
34884 + if ((cp = strstr(db,propname)) != NULL) {
34885 + while ((*cp) && *cp != '=')
34888 + strncpy(propstr, cp, siz+1);
34889 + propstr[siz+1] = '\0';
34890 + DEBUG(printk("qla2x00_find_propname: found "
34891 + "property = {%s}\n",
34893 + return (siz); /* match */
34903 + * qla2x00_get_prop_16chars
34904 + * Get an 8-byte property value for the specified property name by
34905 + * converting from the property string found in the configuration file.
34906 + * The resulting converted value is in big endian format (MSB at byte0).
34909 + * ha = adapter state pointer.
34910 + * propname = property name pointer.
34911 + * propval = pointer to location for the converted property val.
34912 + * db = pointer to database
34915 + * 0 = value returned successfully.
34918 + * Kernel context.
34921 +qla2x00_get_prop_16chars(scsi_qla_host_t *ha,
34922 + char *propname, char *propval, char *db)
34929 + uint8_t *ret_byte;
34930 + uint8_t *tmp_byte;
34931 + uint8_t *retval = (uint8_t*)propval;
34932 + uint8_t tmpval[8] = {0, 0, 0, 0, 0, 0, 0, 0};
34933 + uint16_t max_byte_cnt = 8; /* 16 chars = 8 bytes */
34934 + uint16_t max_strlen = 16;
34935 + static char buf[LINESIZE];
34937 + rval = qla2x00_find_propname(ha, propname, buf, db, max_strlen);
34939 + propstr = &buf[0];
34940 + if (*propstr == '=')
34941 + propstr++; /* ignore equal sign */
34947 + /* Convert string to numbers. */
34948 + pchar = (uint8_t *)propstr;
34949 + tmp_byte = (uint8_t *)tmpval;
34952 + for (i = 0; i < max_strlen; i++) {
34954 + * Check for invalid character, two at a time,
34955 + * then convert them starting with first byte.
34958 + if ((pchar[i] >= '0') && (pchar[i] <= '9')) {
34959 + nval = pchar[i] - '0';
34960 + } else if ((pchar[i] >= 'A') && (pchar[i] <= 'F')) {
34961 + nval = pchar[i] - 'A' + 10;
34962 + } else if ((pchar[i] >= 'a') && (pchar[i] <= 'f')) {
34963 + nval = pchar[i] - 'a' + 10;
34965 + /* invalid character */
34971 + *tmp_byte = *tmp_byte | nval;
34974 + *tmp_byte = *tmp_byte | nval << 4;
34979 + /* Encountered invalid character. */
34983 + /* Copy over the converted value. */
34984 + ret_byte = retval;
34985 + tmp_byte = tmpval;
34987 + i = max_byte_cnt;
34990 + *ret_byte++ = *tmp_byte++;
34993 + /* big endian retval[0]; */
34998 +* qla2x00_get_properties
34999 +* Find all properties for the specified adapeter in
35003 +* ha = adapter block pointer.
35004 +* cmdline = pointer to command line string
35010 +qla2x00_get_properties(scsi_qla_host_t *ha, char *cmdline)
35012 + static char propbuf[LINESIZE];
35013 + uint8_t tmp_name[8];
35015 + /* Adapter FC node names. */
35016 + sprintf(propbuf, "scsi-qla%d-adapter-node", (int) ha->instance);
35017 + qla2x00_get_prop_16chars (ha,
35019 + (uint8_t *)(&ha->init_cb->node_name),
35022 + sprintf(propbuf, "scsi-qla%d-adapter-port", (int) ha->instance);
35024 + /* DG 04/07 check portname of adapter */
35025 + qla2x00_get_prop_16chars (ha,
35029 + if (memcmp(ha->init_cb->port_name, tmp_name, 8) != 0) {
35031 + * Adapter port name is WWN, and cannot be changed.
35032 + * Inform users of the mismatch, then just continue driver
35033 + * loading using the original adapter port name in NVRAM.
35035 + printk(KERN_WARNING
35036 + "qla2x00: qla%ld found mismatch in "
35037 + "adapter port names.\n",
35040 + " qla%ld port name found in NVRAM "
35041 + "-> %02x%02x%02x%02x%02x%02x%02x%02x\n",
35043 + ha->init_cb->port_name[0],
35044 + ha->init_cb->port_name[1],
35045 + ha->init_cb->port_name[2],
35046 + ha->init_cb->port_name[3],
35047 + ha->init_cb->port_name[4],
35048 + ha->init_cb->port_name[5],
35049 + ha->init_cb->port_name[6],
35050 + ha->init_cb->port_name[7]);
35052 + " qla%ld port name found on command line "
35053 + "-> %02x%02x%02x%02x%02x%02x%02x%02x\n",
35064 + " Using port name from NVRAM.\n");
35067 + qla2x00_cfg_persistent_binding(ha);
35071 + * qla2x00_cfg_persistent_binding
35072 + * Get driver configuration file target persistent binding entries.
35075 + * ha = adapter block pointer.
35078 + * Kernel context.
35081 +qla2x00_cfg_persistent_binding(scsi_qla_host_t *ha)
35084 + static char propbuf[LINESIZE];
35086 + uint16_t dev_no = 0; /* not used */
35087 + char *cmdline = ha->cmdline;
35088 + port_id_t d_id, *pd_id;
35089 + uint8_t portid[3];
35090 + uint8_t node_name[8], *pnn;
35091 + uint8_t port_name[8], *ppn;
35096 + /* FC name for devices */
35097 + for (tgt = 0; tgt < MAX_FIBRE_DEVICES; tgt++) {
35100 + * Retrive as much information as possible (PN/PID/NN).
35102 + * Based on binding type, skip incomplete entries.
35105 + sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-port",
35106 + (int)ha->instance, tgt, dev_no);
35107 + rval = qla2x00_get_prop_16chars(ha, propbuf, ppn, cmdline);
35110 + if (ha->binding_type == BIND_BY_PORT_NAME && rval != 0)
35114 + sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-pid",
35115 + (int)ha->instance, tgt, dev_no);
35116 + rval = qla2x00_get_prop_xstr(ha,
35117 + propbuf, portid, sizeof(portid));
35118 + if (rval == -1 || rval != sizeof(portid))
35120 + if (ha->binding_type == BIND_BY_PORT_ID &&
35121 + (rval == -1 || rval != sizeof(portid)))
35125 + sprintf(propbuf, "scsi-qla%d-tgt-%d-di-%d-node",
35126 + (int)ha->instance, tgt, dev_no);
35127 + rval = qla2x00_get_prop_16chars(ha, propbuf, pnn, cmdline);
35130 + if (ha->binding_type == BIND_BY_NODE_NAME && rval != 0)
35133 + tq = qla2x00_tgt_alloc(ha, tgt);
35134 + if (tq == NULL) {
35135 + printk(KERN_WARNING
35136 + "%s(): Unable to allocate memory for target\n",
35141 + ha->fc_db[tgt].loop_id = PORT_AVAILABLE;
35142 + ha->fc_db[tgt].flag = 0; /* v2.19.05b3 */
35143 + ha->fc_db[tgt].flag |= DEV_CONFIGURED;
35145 + if (ppn != NULL) {
35146 + memcpy(tq->port_name, ppn, WWN_SIZE);
35147 + memcpy(ha->fc_db[tgt].wwn, ppn, WWN_SIZE);
35149 + if (pd_id != NULL) {
35151 + * The portid is read in big-endian format, convert
35152 + * before updating information
35154 + pd_id->r.d_id[0] = portid[2];
35155 + pd_id->r.d_id[1] = portid[1];
35156 + pd_id->r.d_id[2] = portid[0];
35157 + tq->d_id.b24 = pd_id->b24;
35158 + ha->fc_db[tgt].d_id.b24 = pd_id->b24;
35160 + if (pnn != NULL) {
35161 + memcpy(tq->node_name, pnn, WWN_SIZE);
35162 + memcpy(ha->fc_db[tgt].name, pnn, WWN_SIZE);
35165 + DEBUG(printk("Target %03d - configured by user: ",tgt);)
35166 + switch (ha->binding_type) {
35167 + case BIND_BY_PORT_NAME:
35168 + DEBUG(printk("tgt-%03d="
35169 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
35171 + ppn[0], ppn[1], ppn[2], ppn[3],
35172 + ppn[4], ppn[5], ppn[6], ppn[7]);)
35175 + case BIND_BY_PORT_ID:
35176 + DEBUG(printk("tgt-%03d=%02x%02x%02x\n",
35180 + pd_id->b.al_pa));
35183 + case BIND_BY_NODE_NAME:
35184 + DEBUG(printk("tgt-%03d="
35185 + "%02x%02x%02x%02x%02x%02x%02x%02x\n",
35187 + pnn[0], pnn[1], pnn[2], pnn[3],
35188 + pnn[4], pnn[5], pnn[6], pnn[7]);)
35191 + /* look for VSA */
35193 + qla2x00_get_vsa_opt_from_config(ha, tgt, dev_no);
35202 +* qla2x00_abort_isp
35203 +* Resets ISP and aborts all outstanding commands.
35206 +* ha = adapter block pointer.
35212 +qla2x00_abort_isp(scsi_qla_host_t *ha, uint8_t flag)
35214 + unsigned long flags = 0;
35217 + uint8_t status = 0;
35219 + ENTER("qla2x00_abort_isp");
35221 + if (ha->flags.online) {
35222 + ha->flags.online = FALSE;
35223 + clear_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
35224 + clear_bit(COMMAND_WAIT_ACTIVE, &ha->dpc_flags);
35225 + clear_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
35226 + qla2x00_stats.ispAbort++;
35227 + ha->total_isp_aborts++; /* used by ioctl */
35228 + ha->sns_retry_cnt = 0;
35231 + "scsi(%ld): Performing ISP error recovery - ha= %p.\n",
35232 + ha->host_no, ha);
35233 + qla2x00_reset_chip(ha);
35235 + if (ha->loop_state != LOOP_DOWN) {
35236 + ha->loop_state = LOOP_DOWN;
35237 + atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
35238 + qla2x00_mark_all_devices_lost(ha);
35241 +#if defined(FC_IP_SUPPORT)
35242 + /* Return all IP send packets */
35243 + for (cnt = 0; cnt < MAX_SEND_PACKETS; cnt++) {
35244 + if (ha->active_scb_q[cnt] != NULL) {
35245 + /* Via IP callback */
35246 + (*ha->send_completion_routine)
35247 + (ha->active_scb_q[cnt]);
35249 + ha->active_scb_q[cnt] = NULL;
35254 + spin_lock_irqsave(&ha->hardware_lock, flags);
35255 + /* Requeue all commands in outstanding command list. */
35256 + for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
35257 + sp = ha->outstanding_cmds[cnt];
35259 + ha->outstanding_cmds[cnt] = 0;
35260 + if( ha->actthreads )
35261 + ha->actthreads--;
35262 + sp->lun_queue->out_cnt--;
35263 +#if defined(IOCB_THROLLE_USAGE)
35264 + ha->iocb_cnt -= sp->iocb_cnt;
35270 + * We need to send the command back to OS now
35271 + * if returning RESET status for kernel's
35272 + * error handling.
35275 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
35277 + CMD_RESULT(sp->cmd) = DID_RESET << 16;
35279 + CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
35280 + add_to_done_queue(ha, sp);
35284 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
35286 +#if defined(ISP2100)
35287 + qla2100_nvram_config(ha);
35289 + qla2x00_nvram_config(ha);
35292 + if (!qla2x00_restart_isp(ha)) {
35293 + clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
35295 + if (!atomic_read(&ha->loop_down_timer)) {
35297 + * Issue marker command only when we are going
35298 + * to start the I/O .
35300 + ha->marker_needed = 1;
35303 + ha->flags.online = TRUE;
35305 +#if defined(FC_IP_SUPPORT)
35306 + /* Reenable IP support */
35307 + if (ha->flags.enable_ip) {
35308 + set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
35309 + qla2x00_ip_initialize(ha);
35312 + /* Enable ISP interrupts. */
35313 + qla2x00_enable_intrs(ha);
35315 + /* v2.19.5b6 Return all commands */
35316 + qla2x00_abort_queues(ha, TRUE);
35318 + /* Restart queues that may have been stopped. */
35319 + qla2x00_restart_queues(ha,TRUE);
35320 + ha->isp_abort_cnt = 0;
35321 + clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
35322 + } else { /* failed the ISP abort */
35323 + ha->flags.online = TRUE;
35324 + if( test_bit(ISP_ABORT_RETRY, &ha->dpc_flags) ){
35325 + if( ha->isp_abort_cnt == 0 ){
35326 + printk(KERN_WARNING
35327 + "qla2x00(%ld): ISP error recovery failed - "
35328 + "board disabled\n",ha->host_no);
35330 + * The next call disables the board
35333 + qla2x00_reset_adapter(ha);
35334 + qla2x00_abort_queues(ha, FALSE);
35335 + ha->flags.online = TRUE;
35336 + clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
35338 + } else { /* schedule another ISP abort */
35339 + ha->isp_abort_cnt--;
35340 + DEBUG(printk("qla%ld: ISP abort - retry remainning %d\n",
35342 + ha->isp_abort_cnt);)
35346 + ha->isp_abort_cnt = MAX_RETRIES_OF_ISP_ABORT;
35347 + DEBUG(printk( "qla2x00(%ld): ISP error recovery - "
35348 + "retrying (%d) more times\n",ha->host_no,
35349 + ha->isp_abort_cnt);)
35350 + set_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
35359 + "qla2x00_abort_isp(%ld): **** FAILED ****\n",
35362 + DEBUG(printk(KERN_INFO
35363 + "qla2x00_abort_isp(%ld): exiting.\n",
35371 +* qla2x00_restart_isp
35372 +* restarts the ISP after a reset
35375 +* ha = adapter block pointer.
35381 +qla2x00_restart_isp(scsi_qla_host_t *ha)
35383 + uint8_t status = 0;
35384 +#if defined(ISP2300)
35385 + device_reg_t *reg;
35386 + unsigned long flags = 0;
35389 + /* If firmware needs to be loaded */
35390 + if (qla2x00_isp_firmware(ha)) {
35391 + ha->flags.online = FALSE;
35392 + if (!(status = qla2x00_chip_diag(ha))) {
35393 +#if defined(ISP2300)
35394 + reg = ha->iobase;
35395 + spin_lock_irqsave(&ha->hardware_lock, flags);
35396 + /* Disable SRAM, Instruction RAM and GP RAM parity. */
35397 + WRT_REG_WORD(®->hccr, (HCCR_ENABLE_PARITY + 0x0));
35398 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
35400 + status = qla2x00_setup_chip(ha);
35401 +#if defined(ISP2300)
35402 + spin_lock_irqsave(&ha->hardware_lock, flags);
35404 + /* Enable proper parity */
35405 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
35406 + ha->pdev->device == QLA2322_DEVICE_ID)
35407 + /* SRAM, Instruction RAM and GP RAM parity */
35408 + WRT_REG_WORD(®->hccr,
35409 + (HCCR_ENABLE_PARITY + 0x7));
35411 + /* SRAM parity */
35412 + WRT_REG_WORD(®->hccr,
35413 + (HCCR_ENABLE_PARITY + 0x1));
35415 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
35419 + if (!status && !(status = qla2x00_init_rings(ha))) {
35420 + clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
35421 + clear_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
35422 + if (!(status = qla2x00_fw_ready(ha))) {
35423 + DEBUG(printk("%s(): Start configure loop, "
35427 + ha->flags.online = TRUE;
35429 + clear_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
35430 + qla2x00_configure_loop(ha);
35431 + } while (!atomic_read(&ha->loop_down_timer) &&
35432 + !(test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) &&
35433 + (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)));
35436 + /* if no cable then assume it's good */
35437 + if ((ha->device_flags & DFLG_NO_CABLE))
35440 + DEBUG(printk("%s(): Configure loop done, status = 0x%x\n",
35448 +* qla2x00_reset_adapter
35452 +* ha = adapter block pointer.
35455 +qla2x00_reset_adapter(scsi_qla_host_t *ha)
35457 + unsigned long flags = 0;
35458 + device_reg_t *reg = ha->iobase;
35462 + ha->flags.online = FALSE;
35463 + qla2x00_disable_intrs(ha);
35464 + /* Reset RISC processor. */
35465 + spin_lock_irqsave(&ha->hardware_lock, flags);
35466 + WRT_REG_WORD(®->hccr, HCCR_RESET_RISC);
35467 + WRT_REG_WORD(®->hccr, HCCR_RELEASE_RISC);
35468 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
35472 --- /dev/null Thu Apr 11 07:25:15 2002
35473 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_inline.h Thu Jul 3 15:34:42 2003
35476 + * QLOGIC LINUX SOFTWARE
35478 + * QLogic ISP2x00 device driver for Linux 2.5.x
35479 + * Copyright (C) 2003 Qlogic Corporation
35480 + * (www.qlogic.com)
35482 + * This program is free software; you can redistribute it and/or modify it
35483 + * under the terms of the GNU General Public License as published by the
35484 + * Free Software Foundation; either version 2, or (at your option) any
35487 + * This program is distributed in the hope that it will be useful, but
35488 + * WITHOUT ANY WARRANTY; without even the implied warranty of
35489 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
35490 + * General Public License for more details.
35495 +static __inline__ uint16_t qla2x00_debounce_register(volatile uint16_t *);
35497 + * qla2x00_debounce_register
35498 + * Debounce register.
35501 + * port = register address.
35504 + * register value.
35506 +static __inline__ uint16_t
35507 +qla2x00_debounce_register(volatile uint16_t *addr)
35509 + volatile uint16_t first;
35510 + volatile uint16_t second;
35513 + first = RD_REG_WORD(addr);
35515 + second = RD_REG_WORD(addr);
35516 + } while (first != second);
35521 +static __inline__ void qla2x00_config_dma_addressing(scsi_qla_host_t *ha);
35524 + * qla2x00_config_dma_addressing() - Configure OS DMA addressing method.
35525 + * @ha: HA context
35527 + * At exit, the @ha's flags.enable_64bit_addressing set to indicated
35528 + * supported addressing method.
35530 +static __inline__ void
35531 +qla2x00_config_dma_addressing(scsi_qla_host_t *ha)
35534 + * Given the two variants pci_set_dma_mask(), allow the compiler to
35535 + * assist in setting the proper dma mask.
35537 + if (sizeof(dma_addr_t) > 4) {
35538 + ha->flags.enable_64bit_addressing = 1;
35539 + /* Update our PCI device dma_mask for full 64 bits */
35540 + if (pci_set_dma_mask(ha->pdev, 0xffffffffffffffffULL)) {
35541 + printk("scsi(%ld): Failed to set 64 bit PCI DMA mask, "
35542 + "using 32 bits\n",
35544 + ha->flags.enable_64bit_addressing = 0;
35545 + pci_set_dma_mask(ha->pdev, 0xffffffff);
35549 + ha->flags.enable_64bit_addressing = 0;
35550 + pci_set_dma_mask(ha->pdev, 0xffffffff);
35553 + "scsi(%ld): %d Bit DMA Addressing Enabled.\n",
35555 + (ha->flags.enable_64bit_addressing ? 64 : 32));
35559 +static __inline__ int qla2x00_normalize_dma_addr(
35560 + dma_addr_t *e_addr, uint32_t *e_len,
35561 + dma_addr_t *ne_addr, uint32_t *ne_len);
35564 + * qla2x00_normalize_dma_addr() - Normalize an DMA address.
35565 + * @e_addr: Raw DMA address
35566 + * @e_len: Raw DMA length
35567 + * @ne_addr: Normalized second DMA address
35568 + * @ne_len: Normalized second DMA length
35570 + * If the address does not span a 4GB page boundary, the contents of @ne_addr
35571 + * and @ne_len are undefined. @e_len is updated to reflect a normalization.
35575 + * ffffabc0ffffeeee (e_addr) start of DMA address
35576 + * 0000000020000000 (e_len) length of DMA transfer
35577 + * ffffabc11fffeeed end of DMA transfer
35579 + * Is the 4GB boundary crossed?
35581 + * ffffabc0ffffeeee (e_addr)
35582 + * ffffabc11fffeeed (e_addr + e_len - 1)
35583 + * 00000001e0000003 ((e_addr ^ (e_addr + e_len - 1))
35584 + * 0000000100000000 ((e_addr ^ (e_addr + e_len - 1)) & ~(0xffffffff)
35586 + * Compute start of second DMA segment:
35588 + * ffffabc0ffffeeee (e_addr)
35589 + * ffffabc1ffffeeee (0x100000000 + e_addr)
35590 + * ffffabc100000000 (0x100000000 + e_addr) & ~(0xffffffff)
35591 + * ffffabc100000000 (ne_addr)
35593 + * Compute length of second DMA segment:
35595 + * 00000000ffffeeee (e_addr & 0xffffffff)
35596 + * 0000000000001112 (0x100000000 - (e_addr & 0xffffffff))
35597 + * 000000001fffeeee (e_len - (0x100000000 - (e_addr & 0xffffffff))
35598 + * 000000001fffeeee (ne_len)
35600 + * Adjust length of first DMA segment
35602 + * 0000000020000000 (e_len)
35603 + * 0000000000001112 (e_len - ne_len)
35604 + * 0000000000001112 (e_len)
35606 + * Returns non-zero if the specified address was normalized, else zero.
35608 +static __inline__ int
35609 +qla2x00_normalize_dma_addr(
35610 + dma_addr_t *e_addr, uint32_t *e_len,
35611 + dma_addr_t *ne_addr, uint32_t *ne_len)
35616 + if ((*e_addr ^ (*e_addr + *e_len - 1)) & ~(0xFFFFFFFFULL)) {
35617 + /* Compute normalized crossed address and len */
35618 + *ne_addr = (0x100000000ULL + *e_addr) & ~(0xFFFFFFFFULL);
35619 + *ne_len = *e_len - (0x100000000ULL - (*e_addr & 0xFFFFFFFFULL));
35620 + *e_len -= *ne_len;
35624 + return (normalized);
35627 +static __inline__ void qla2x00_poll(scsi_qla_host_t *);
35628 +static inline void
35629 +qla2x00_poll(scsi_qla_host_t *ha)
35631 + qla2x00_intr_handler(0, ha, NULL);
35635 +static __inline__ void qla2x00_enable_intrs(scsi_qla_host_t *);
35636 +static __inline__ void qla2x00_disable_intrs(scsi_qla_host_t *);
35638 +static inline void
35639 +qla2x00_enable_intrs(scsi_qla_host_t *ha)
35641 + unsigned long flags = 0;
35642 + device_reg_t *reg;
35644 + spin_lock_irqsave(&ha->hardware_lock, flags);
35645 + reg = ha->iobase;
35646 + ha->interrupts_on = 1;
35647 + /* enable risc and host interrupts */
35648 + WRT_REG_WORD(®->ictrl, ICR_EN_INT | ICR_EN_RISC);
35649 + CACHE_FLUSH(®->ictrl);
35650 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
35654 +static inline void
35655 +qla2x00_disable_intrs(scsi_qla_host_t *ha)
35657 + unsigned long flags = 0;
35658 + device_reg_t *reg;
35660 + spin_lock_irqsave(&ha->hardware_lock, flags);
35661 + reg = ha->iobase;
35662 + ha->interrupts_on = 0;
35663 + /* disable risc and host interrupts */
35664 + WRT_REG_WORD(®->ictrl, 0);
35665 + CACHE_FLUSH(®->ictrl);
35666 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
35670 +static __inline__ int qla2x00_is_wwn_zero(uint8_t *);
35673 + * qla2x00_is_wwn_zero - Check for zero node name
35676 + * wwn = Pointer to WW name to check
35679 + * TRUE if name is 0 else FALSE
35682 + * Kernel context.
35684 +static __inline__ int
35685 +qla2x00_is_wwn_zero(uint8_t *wwn)
35689 + for (cnt = 0; cnt < WWN_SIZE ; cnt++, wwn++) {
35693 + /* if zero return TRUE */
35694 + if (cnt == WWN_SIZE)
35700 +static __inline__ uint8_t
35701 +qla2x00_suspend_lun(scsi_qla_host_t *, os_lun_t *, int, int);
35702 +static __inline__ uint8_t
35703 +qla2x00_delay_lun(scsi_qla_host_t *, os_lun_t *, int);
35705 +static __inline__ uint8_t
35706 +qla2x00_suspend_lun(scsi_qla_host_t *ha, os_lun_t *lq, int time, int count)
35708 + return (__qla2x00_suspend_lun(ha, lq, time, count, 0));
35711 +static __inline__ uint8_t
35712 +qla2x00_delay_lun(scsi_qla_host_t *ha, os_lun_t *lq, int time)
35714 + return (__qla2x00_suspend_lun(ha, lq, time, 1, 1));
35719 +static __inline__ void qla2x00_chg_endian(uint8_t *, size_t);
35721 + * qla2x00_chg_endian
35722 + * Change endianess of byte array.
35725 + * buf = array pointer.
35726 + * size = size of array in bytes.
35729 + * Kernel context.
35731 +static __inline__ void
35732 +qla2x00_chg_endian(uint8_t *buf, size_t size)
35739 + for (cnt = 0; cnt < size / 2; cnt++) {
35740 + byte = buf[cnt1];
35741 + buf[cnt1] = buf[cnt];
35747 +static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *);
35749 + * This routine will wait for fabric devices for
35750 + * the reset delay.
35752 +static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *ha)
35754 + uint16_t fw_state;
35756 + qla2x00_get_firmware_state(ha, &fw_state);
35759 +static inline void qla2x00_filter_command(scsi_qla_host_t *ha, srb_t *sp);
35760 +static inline void
35761 +qla2x00_filter_command(scsi_qla_host_t *ha, srb_t *sp)
35763 + Scsi_Cmnd *cp = sp->cmd;
35767 + * Special case considertaion on an Inquiry command (0x12) for Lun 0,
35768 + * device responds with no devices (0x7F), then Linux will not scan
35769 + * further Luns. While reporting that some device exists on Lun 0 Linux
35770 + * will scan all devices on this target.
35772 + if (qla2xenbinq && (cp->cmnd[0] == INQUIRY) && (SCSI_LUN_32(cp) == 0)) {
35773 + strp = (uint8_t *)cp->request_buffer;
35774 + if (*strp == 0x7f) {
35775 + /* Make lun unassigned and processor type */
35781 +static __inline__ void * qla2x00_kmem_zalloc(int, int, int);
35783 + * qla2x00_kmem_zalloc
35784 + * Allocate and zero out the block of memory
35786 +static __inline__ void *
35787 +qla2x00_kmem_zalloc(int siz, int code, int id)
35791 + if ((bp = kmalloc(siz, code)) != NULL) {
35792 + memset(bp, 0, siz);
35794 +#if QL_TRACE_MEMORY
35795 + if (mem_trace_ptr == 1000)
35796 + mem_trace_ptr = 0;
35797 + mem_trace[mem_trace_ptr] = (u_long ) bp;
35798 + mem_id[mem_trace_ptr++] = (u_long ) id;
35801 + return ((void *)bp);
35805 +static __inline__ ms_iocb_entry_t *
35806 +qla2x00_prep_ms_iocb(scsi_qla_host_t *, uint32_t, uint32_t);
35808 + * qla2x00_prep_ms_iocb() - Prepare common MS IOCB fields for SNS CT query.
35809 + * @ha: HA context
35810 + * @req_size: request size in bytes
35811 + * @rsp_size: response size in bytes
35813 + * Returns a pointer to the @ha's ms_iocb.
35815 +static __inline__ ms_iocb_entry_t *
35816 +qla2x00_prep_ms_iocb(scsi_qla_host_t *ha, uint32_t req_size, uint32_t rsp_size)
35818 + ms_iocb_entry_t *ms_pkt;
35820 + ms_pkt = ha->ms_iocb;
35821 + memset(ms_pkt, 0, sizeof(ms_iocb_entry_t));
35823 + ms_pkt->entry_type = MS_IOCB_TYPE;
35824 + ms_pkt->entry_count = 1;
35825 +#if defined(EXTENDED_IDS)
35826 + ms_pkt->loop_id = __constant_cpu_to_le16(SIMPLE_NAME_SERVER);
35828 + ms_pkt->loop_id = SIMPLE_NAME_SERVER;
35830 + ms_pkt->control_flags =
35831 + __constant_cpu_to_le16(CF_READ | CF_HEAD_TAG);
35832 + ms_pkt->timeout = __constant_cpu_to_le16(25);
35833 + ms_pkt->cmd_dsd_count = __constant_cpu_to_le16(1);
35834 + ms_pkt->total_dsd_count = __constant_cpu_to_le16(2);
35835 + ms_pkt->rsp_bytecount = cpu_to_le32(rsp_size);
35836 + ms_pkt->req_bytecount = cpu_to_le32(req_size);
35838 + ms_pkt->dseg_req_address[0] = cpu_to_le32(LSD(ha->ct_sns_dma));
35839 + ms_pkt->dseg_req_address[1] = cpu_to_le32(MSD(ha->ct_sns_dma));
35840 + ms_pkt->dseg_req_length = ms_pkt->req_bytecount;
35842 + ms_pkt->dseg_rsp_address[0] = cpu_to_le32(LSD(ha->ct_sns_dma));
35843 + ms_pkt->dseg_rsp_address[1] = cpu_to_le32(MSD(ha->ct_sns_dma));
35844 + ms_pkt->dseg_rsp_length = ms_pkt->rsp_bytecount;
35850 --- /dev/null Thu Apr 11 07:25:15 2002
35851 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_iocb.c Thu Jul 3 15:34:42 2003
35853 +/******************************************************************************
35854 + * QLOGIC LINUX SOFTWARE
35856 + * QLogic ISP2x00 device driver for Linux 2.5.x
35857 + * Copyright (C) 2003 Qlogic Corporation
35858 + * (www.qlogic.com)
35860 + * This program is free software; you can redistribute it and/or modify it
35861 + * under the terms of the GNU General Public License as published by the
35862 + * Free Software Foundation; either version 2, or (at your option) any
35865 + * This program is distributed in the hope that it will be useful, but
35866 + * WITHOUT ANY WARRANTY; without even the implied warranty of
35867 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
35868 + * General Public License for more details.
35870 + ******************************************************************************/
35872 +#include "qla_os.h"
35873 +#include "qla_def.h"
35875 +static inline uint16_t qla2x00_get_cmd_direction(Scsi_Cmnd *cmd);
35877 +static inline int qla2x00_cmd_build_iocb(scsi_qla_host_t *ha,
35878 + srb_t *sp, cmd_entry_t *cmd_pkt, uint16_t *req_q_cnt,
35879 + uint16_t *req_ring_index, request_t **request_ring_ptr,
35880 + uint16_t *tot_iocbs, uint16_t *tot_dsds);
35882 +static inline int qla2x00_cmd_build_64bit_iocbs(scsi_qla_host_t *ha,
35883 + srb_t *sp, cmd_entry_t *cmd_pkt, uint16_t *req_q_cnt,
35884 + uint16_t *req_ring_index, request_t **request_ring_ptr,
35885 + uint16_t *tot_iocbs, uint16_t *tot_dsds);
35887 +static inline int qla2x00_cmd_build_32bit_iocbs(scsi_qla_host_t *ha,
35888 + srb_t *sp, cmd_entry_t *cmd_pkt, uint16_t *req_q_cnt,
35889 + uint16_t *req_ring_index, request_t **request_ring_ptr,
35890 + uint16_t *tot_iocbs, uint16_t *tot_dsds);
35892 +static inline int qla2x00_check_request_ring(scsi_qla_host_t *ha,
35893 + uint16_t tot_iocbs, uint16_t req_ring_index, uint16_t *req_q_cnt);
35895 +static inline cont_a64_entry_t *qla2x00_prep_a64_cont_packet(
35896 + scsi_qla_host_t *ha,
35897 + uint16_t *req_ring_index, request_t **request_ring_ptr);
35899 +static inline cont_entry_t *qla2x00_prep_cont_packet(scsi_qla_host_t *ha,
35900 + uint16_t *req_ring_index, request_t **request_ring_ptr);
35903 +/* Command queuing function */
35906 + * qla2x00_get_cmd_direction() - Determine control_flag data direction.
35907 + * @cmd: SCSI command
35909 + * This is ridiculous, the mid-layer applications should perform this step for
35910 + * all commands sent down through the SCSI layers. The following is a terrible
35913 + * Returns the proper CF_* direction based on CDB.
35915 +static inline uint16_t
35916 +qla2x00_get_cmd_direction(Scsi_Cmnd *cmd)
35922 +#if defined(SANE_USAGE_OF_CMD_DIRECTION)
35923 + /* Set transfer direction */
35924 + if (cmd->sc_data_direction == SCSI_DATA_WRITE)
35925 + cflags = CF_WRITE;
35926 + else if (cmd->sc_data_direction == SCSI_DATA_READ)
35927 + cflags = CF_READ;
35929 + switch (cmd->data_cmnd[0]) {
35933 + case WRITE_BUFFER:
35936 + case WRITE_VERIFY:
35937 + case WRITE_VERIFY_12:
35938 + case FORMAT_UNIT:
35939 + case SEND_VOLUME_TAG:
35940 + case MODE_SELECT:
35941 + case SEND_DIAGNOSTIC:
35942 + case MODE_SELECT_10:
35943 + cflags = CF_WRITE;
35946 + cflags = CF_READ;
35951 + switch (cmd->data_cmnd[0]) {
35955 + case WRITE_BUFFER:
35958 + case WRITE_VERIFY:
35959 + case WRITE_VERIFY_12:
35960 + case FORMAT_UNIT:
35961 + case SEND_VOLUME_TAG:
35962 + case MODE_SELECT:
35963 + case SEND_DIAGNOSTIC:
35964 + case MODE_SELECT_10:
35965 + cflags = CF_WRITE;
35968 + if (cmd->sc_data_direction == SCSI_DATA_WRITE)
35969 + cflags = CF_WRITE;
35971 + cflags = CF_READ;
35980 + * qla2x00_check_request_ring() - Checks request ring for additional IOCB space.
35981 + * @ha: HA context
35982 + * @tot_iocbs: Number of IOCBs required
35983 + * @req_ring_index: Current index to request ring
35984 + * @req_q_cnt: Number of free request entries
35986 + * Returns non-zero if no additional room available on request ring, else zero.
35989 +qla2x00_check_request_ring(scsi_qla_host_t *ha,
35990 + uint16_t tot_iocbs, uint16_t req_ring_index, uint16_t *req_q_cnt)
35994 + device_reg_t *reg;
35996 + reg = ha->iobase;
35998 + /* If room for request in request ring for at least N IOCB */
36000 + if ((tot_iocbs + 2) >= *req_q_cnt) {
36002 + * Calculate number of free request entries.
36004 + cnt = RD_REG_WORD(ISP_REQ_Q_OUT(reg));
36005 + if (req_ring_index < cnt)
36006 + *req_q_cnt = cnt - req_ring_index;
36008 + *req_q_cnt = REQUEST_ENTRY_CNT - (req_ring_index - cnt);
36010 + if ((tot_iocbs + 2) >= *req_q_cnt) {
36011 + DEBUG5(printk("scsi(%ld): in-ptr=%x req_q_cnt=%x "
36012 + "tot_iocbs=%x.\n",
36013 + ha->host_no, req_ring_index, *req_q_cnt, tot_iocbs));
36017 +#if defined(IOCB_THROLLE_USAGE)
36018 + if ((ha->iocb_cnt + tot_iocbs) >= ha->iocb_hiwat) {
36019 + DEBUG5(printk("%s(): Not Enough IOCBS for request. "
36020 + "iocb_cnt=%x, tot_iocbs=%x, hiwat=%x.\n",
36021 + __func__, ha->iocb_cnt, tot_iocbs, ha->iocb_hiwat));
36022 +#if defined(IOCB_HIT_RATE)
36023 + ha->iocb_overflow_cnt++;
36033 + * qla2x00_prep_a64_cont_packet() - Initialize an A64 continuation packet.
36034 + * @ha: HA context
36035 + * @req_ring_index: Current index to request ring
36036 + * @req_ring_ptr: Current pointer to request ring
36038 + * Returns a pointer to the continuation packet.
36040 +static inline cont_a64_entry_t *
36041 +qla2x00_prep_a64_cont_packet(scsi_qla_host_t *ha,
36042 + uint16_t *req_ring_index, request_t **request_ring_ptr)
36044 + cont_a64_entry_t *cont_pkt;
36046 + /* Adjust ring index. */
36047 + *req_ring_index += 1;
36048 + if (*req_ring_index == REQUEST_ENTRY_CNT) {
36049 + *req_ring_index = 0;
36050 + *request_ring_ptr = ha->request_ring;
36052 + *request_ring_ptr += 1;
36054 + cont_pkt = (cont_a64_entry_t *)(*request_ring_ptr);
36056 + /* Load packet defaults. */
36057 + *((uint32_t *)(&cont_pkt->entry_type)) =
36058 + __constant_cpu_to_le32(CONTINUE_A64_TYPE);
36059 + //cont_pkt->entry_type = CONTINUE_A64_TYPE;
36060 + //cont_pkt->entry_count = 0;
36061 + //cont_pkt->sys_define = (uint8_t)req_ring_index;
36063 + return (cont_pkt);
36067 + * qla2x00_prep_cont_packet() - Initialize a continuation packet.
36068 + * @ha: HA context
36069 + * @req_ring_index: Current index to request ring
36070 + * @req_ring_ptr: Current pointer to request ring
36072 + * Returns a pointer to the continuation packet.
36074 +static inline cont_entry_t *
36075 +qla2x00_prep_cont_packet(scsi_qla_host_t *ha,
36076 + uint16_t *req_ring_index, request_t **request_ring_ptr)
36078 + cont_entry_t *cont_pkt;
36080 + /* Adjust ring index. */
36081 + *req_ring_index += 1;
36082 + if (*req_ring_index == REQUEST_ENTRY_CNT) {
36083 + *req_ring_index = 0;
36084 + *request_ring_ptr = ha->request_ring;
36086 + *request_ring_ptr += 1;
36088 + cont_pkt = (cont_entry_t *)(*request_ring_ptr);
36090 + /* Load packet defaults. */
36091 + *((uint32_t *)(&cont_pkt->entry_type)) =
36092 + __constant_cpu_to_le32(CONTINUE_TYPE);
36093 + //cont_pkt->entry_type = CONTINUE_TYPE;
36094 + //cont_pkt->entry_count = 0;
36095 + //cont_pkt->sys_define = (uint8_t)req_ring_index;
36097 + return (cont_pkt);
36101 +qla2x00_cmd_build_64bit_iocbs(scsi_qla_host_t *ha,
36103 + cmd_entry_t *cmd_pkt,
36104 + uint16_t *req_q_cnt,
36105 + uint16_t *req_ring_index, request_t **request_ring_ptr,
36106 + uint16_t *tot_iocbs, uint16_t *tot_dsds)
36108 + uint16_t avail_dsds;
36109 + uint32_t *cur_dsd;
36114 + /* No data transfer */
36115 + if (cmd->request_bufflen == 0 ||
36116 + cmd->sc_data_direction == SCSI_DATA_NONE) {
36117 + cmd_pkt->byte_count = __constant_cpu_to_le32(0);
36118 + return (QL_STATUS_SUCCESS);
36121 + cmd_pkt->control_flags |= cpu_to_le16(qla2x00_get_cmd_direction(cmd));
36122 + sp->dir = cmd_pkt->control_flags &
36123 + __constant_cpu_to_le16(CF_READ | CF_WRITE);
36125 + /* Two DSDs are available in the command 64 IOCB */
36127 + cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address;
36129 + /* Load data segments */
36130 + if (cmd->use_sg != 0) {
36131 + struct scatterlist *cur_seg;
36132 + struct scatterlist *end_seg;
36135 + cur_seg = (struct scatterlist *)cmd->request_buffer;
36136 + nseg = pci_map_sg(ha->pdev, cur_seg, cmd->use_sg,
36137 + scsi_to_pci_dma_dir(cmd->sc_data_direction));
36138 + end_seg = cur_seg + nseg;
36139 + while (cur_seg < end_seg) {
36141 + dma_addr_t sle_dma;
36142 + uint32_t sle_len;
36143 + dma_addr_t nml_dma;
36144 + uint32_t nml_len;
36145 + uint32_t normalized;
36146 + cont_a64_entry_t *cont_pkt;
36148 + /* Allocate additional continuation packets? */
36149 + if (avail_dsds == 0) {
36151 + failed = qla2x00_check_request_ring(ha,
36156 + goto mapped_queuing_error_64;
36159 + cont_pkt = qla2x00_prep_a64_cont_packet(ha,
36161 + request_ring_ptr);
36163 + cur_dsd = (uint32_t *)&cont_pkt->dseg_0_address;
36167 + sle_dma = sg_dma_address(cur_seg);
36168 + sle_len = sg_dma_len(cur_seg);
36170 + normalized = qla2x00_normalize_dma_addr(
36171 + &sle_dma, &sle_len,
36172 + &nml_dma, &nml_len);
36174 + /* One entry always consumed */
36175 + *cur_dsd++ = cpu_to_le32(LSD(sle_dma));
36176 + *cur_dsd++ = cpu_to_le32(MSD(sle_dma));
36177 + *cur_dsd++ = cpu_to_le32(sle_len);
36186 + * Allocate additional continuation packets?
36188 + if (avail_dsds == 0) {
36190 + failed = qla2x00_check_request_ring(ha,
36195 + goto mapped_queuing_error_64;
36197 + cont_pkt = qla2x00_prep_a64_cont_packet(ha,
36199 + request_ring_ptr);
36201 + cur_dsd = (uint32_t *)&cont_pkt->dseg_0_address;
36205 + *cur_dsd++ = cpu_to_le32(LSD(nml_dma));
36206 + *cur_dsd++ = cpu_to_le32(MSD(nml_dma));
36207 + *cur_dsd++ = cpu_to_le32(nml_len);
36214 + * No more than 1 (one) IOCB is needed for this type of
36215 + * request, even if the DMA address spans the 4GB page
36218 + * @tot_dsds == 1 if non-spanning, else 2
36220 + dma_addr_t req_dma;
36221 + uint32_t req_len;
36222 + dma_addr_t nml_dma;
36223 + uint32_t nml_len;
36224 + uint32_t normalized;
36225 + struct page *page;
36226 + unsigned long offset;
36228 + page = virt_to_page(cmd->request_buffer);
36229 + offset = ((unsigned long)cmd->request_buffer & ~PAGE_MASK);
36230 + req_dma = pci_map_page(ha->pdev,
36233 + cmd->request_bufflen,
36234 + scsi_to_pci_dma_dir(cmd->sc_data_direction));
36235 + req_len = cmd->request_bufflen;
36237 + sp->saved_dma_handle = req_dma;
36239 + normalized = qla2x00_normalize_dma_addr(
36240 + &req_dma, &req_len,
36241 + &nml_dma, &nml_len);
36243 + /* One entry always consumed */
36244 + *cur_dsd++ = cpu_to_le32(LSD(req_dma));
36245 + *cur_dsd++ = cpu_to_le32(MSD(req_dma));
36246 + *cur_dsd++ = cpu_to_le32(req_len);
36249 + if (normalized) {
36250 + *cur_dsd++ = cpu_to_le32(LSD(nml_dma));
36251 + *cur_dsd++ = cpu_to_le32(MSD(nml_dma));
36252 + *cur_dsd++ = cpu_to_le32(nml_len);
36257 + return (QL_STATUS_SUCCESS);
36259 +mapped_queuing_error_64:
36260 + pci_unmap_sg(ha->pdev, (struct scatterlist *)cmd->request_buffer,
36261 + cmd->use_sg, scsi_to_pci_dma_dir(cmd->sc_data_direction));
36262 + return (QL_STATUS_ERROR);
36266 +qla2x00_cmd_build_32bit_iocbs(scsi_qla_host_t *ha,
36268 + cmd_entry_t *cmd_pkt,
36269 + uint16_t *req_q_cnt,
36270 + uint16_t *req_ring_index, request_t **request_ring_ptr,
36271 + uint16_t *tot_iocbs, uint16_t *tot_dsds)
36273 + uint16_t avail_dsds;
36274 + uint32_t *cur_dsd;
36279 + /* No data transfer */
36280 + if (cmd->request_bufflen == 0 ||
36281 + cmd->sc_data_direction == SCSI_DATA_NONE) {
36282 + cmd_pkt->byte_count = __constant_cpu_to_le32(0);
36283 + return (QL_STATUS_SUCCESS);
36286 + cmd_pkt->control_flags |= cpu_to_le16(qla2x00_get_cmd_direction(cmd));
36287 + sp->dir = cmd_pkt->control_flags &
36288 + __constant_cpu_to_le16(CF_READ | CF_WRITE);
36290 + /* Three DSDs are available in the command IOCB */
36292 + cur_dsd = (uint32_t *)&cmd_pkt->dseg_0_address;
36294 + /* Load data segments */
36295 + if (cmd->use_sg != 0) {
36296 + struct scatterlist *cur_seg;
36297 + struct scatterlist *end_seg;
36300 + cur_seg = (struct scatterlist *)cmd->request_buffer;
36301 + nseg = pci_map_sg(ha->pdev, cur_seg, cmd->use_sg,
36302 + scsi_to_pci_dma_dir(cmd->sc_data_direction));
36303 + end_seg = cur_seg + nseg;
36305 + while (cur_seg < end_seg) {
36307 + dma_addr_t sle_dma;
36308 + uint32_t sle_len;
36309 + cont_entry_t *cont_pkt;
36311 + /* Allocate additional continuation packets? */
36312 + if (avail_dsds == 0) {
36314 + failed = qla2x00_check_request_ring(ha,
36319 + goto mapped_queuing_error_32;
36322 + cont_pkt = qla2x00_prep_cont_packet(ha,
36324 + request_ring_ptr);
36326 + cur_dsd = (uint32_t *)&cont_pkt->dseg_0_address;
36330 + sle_dma = sg_dma_address(cur_seg);
36331 + sle_len = sg_dma_len(cur_seg);
36333 + /* One entry always consumed */
36334 + *cur_dsd++ = cpu_to_le32(sle_dma);
36335 + *cur_dsd++ = cpu_to_le32(sle_len);
36344 + * No more than 1 (one) IOCB is needed for this type of request.
36346 + dma_addr_t req_dma;
36347 + uint32_t req_len;
36348 + struct page *page;
36349 + unsigned long offset;
36351 + page = virt_to_page(cmd->request_buffer);
36352 + offset = ((unsigned long)cmd->request_buffer & ~PAGE_MASK);
36353 + req_dma = pci_map_page(ha->pdev,
36356 + cmd->request_bufflen,
36357 + scsi_to_pci_dma_dir(cmd->sc_data_direction));
36358 + req_len = cmd->request_bufflen;
36360 + sp->saved_dma_handle = req_dma;
36362 + /* One entry always consumed */
36363 + *cur_dsd++ = cpu_to_le32(req_dma);
36364 + *cur_dsd++ = cpu_to_le32(req_len);
36368 + return (QL_STATUS_SUCCESS);
36370 +mapped_queuing_error_32:
36371 + pci_unmap_sg(ha->pdev, (struct scatterlist *)cmd->request_buffer,
36372 + cmd->use_sg, scsi_to_pci_dma_dir(cmd->sc_data_direction));
36373 + return (QL_STATUS_ERROR);
36377 +qla2x00_cmd_build_iocb(scsi_qla_host_t *ha,
36379 + cmd_entry_t *cmd_pkt,
36380 + uint16_t *req_q_cnt,
36381 + uint16_t *req_ring_index, request_t **request_ring_ptr,
36382 + uint16_t *tot_iocbs, uint16_t *tot_dsds)
36386 + ret = QL_STATUS_ERROR;
36388 + if (ha->flags.enable_64bit_addressing) {
36389 + *((uint32_t *)(&cmd_pkt->entry_type)) =
36390 + __constant_cpu_to_le32(COMMAND_A64_TYPE);
36391 + //cmd_pkt->entry_type = COMMAND_A64_TYPE;
36392 + //cmd_pkt->entry_count = (uint8_t)tot_iocbs;
36393 + //cmd_pkt->sys_define = (uint8_t)ha->req_ring_index;
36394 + //cmd_pkt->entry_status = 0;
36396 + ret = qla2x00_cmd_build_64bit_iocbs(ha,
36397 + sp, cmd_pkt, req_q_cnt, req_ring_index, request_ring_ptr,
36398 + tot_iocbs, tot_dsds);
36401 + *((uint32_t *)(&cmd_pkt->entry_type)) =
36402 + __constant_cpu_to_le32(COMMAND_TYPE);
36403 + //cmd_pkt->entry_type = COMMAND_TYPE;
36404 + //cmd_pkt->entry_count = (uint8_t)tot_iocbs;
36405 + //cmd_pkt->sys_define = (uint8_t)ha->req_ring_index;
36406 + //cmd_pkt->entry_status = 0;
36408 + ret = qla2x00_cmd_build_32bit_iocbs(ha,
36409 + sp, cmd_pkt, req_q_cnt, req_ring_index, request_ring_ptr,
36410 + tot_iocbs, tot_dsds);
36417 + * qla2x00_start_scsi() - Send a SCSI command to the ISP
36418 + * @sp: command to send to the ISP
36420 + * Returns non-zero if a failure occured, else zero.
36423 +qla2x00_start_scsi(srb_t *sp)
36426 + unsigned long flags;
36428 + scsi_qla_host_t *ha;
36431 + uint16_t req_q_cnt;
36432 + uint16_t req_ring_index;
36433 + request_t *request_ring_ptr;
36434 + uint32_t *clr_ptr;
36438 + uint16_t tot_iocbs;
36439 + uint16_t tot_dsds;
36440 + cmd_entry_t *cmd_pkt;
36441 + uint32_t timeout;
36443 + device_reg_t *reg;
36444 + uint16_t reg_flushed;
36448 + /* Setup device pointers. */
36450 + fclun = sp->lun_queue->fclun;
36451 + ha = fclun->fcport->ha;
36454 + reg = ha->iobase;
36456 + DEBUG3(printk("scsi(%ld): cmd=%p sp=%p CDB=%x\n",
36458 + cmd, sp, cmd->cmnd[0]));
36460 + /* Send marker if required */
36461 + if (ha->marker_needed != 0) {
36462 + if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS) {
36463 + return (QL_STATUS_ERROR);
36465 + ha->marker_needed = 0;
36468 + /* Acquire ring specific lock */
36469 + spin_lock_irqsave(&ha->hardware_lock, flags);
36471 + /* Save ha fields for post-update */
36472 + req_ring_index = ha->req_ring_index;
36473 + request_ring_ptr = ha->request_ring_ptr;
36474 + req_q_cnt = ha->req_q_cnt;
36479 + /* Allocate space for an additional IOCB */
36480 + failed = qla2x00_check_request_ring(ha,
36481 + tot_iocbs, req_ring_index, &req_q_cnt);
36483 + goto queuing_error;
36485 + /* Check for room in outstanding command list. */
36487 + handle = ha->current_outstanding_cmd;
36488 + for (index = 1; index < MAX_OUTSTANDING_COMMANDS; index++) {
36490 + if (handle == MAX_OUTSTANDING_COMMANDS)
36492 + if (ha->outstanding_cmds[handle] == 0) {
36494 + ha->current_outstanding_cmd = handle;
36499 + DEBUG5(printk("scsi(%ld): Unable to queue command -- NO ROOM "
36500 + "IN OUTSTANDING ARRAY (req_q_cnt=%lx).\n",
36502 + (u_long)ha->req_q_cnt));
36503 + goto queuing_error;
36507 + * Build command packet.
36509 + cmd_pkt = (cmd_entry_t *)request_ring_ptr;
36511 + cmd_pkt->handle = handle;
36513 + /* Zero out remaining portion of packet. */
36514 + clr_ptr = (uint32_t *)cmd_pkt + 2;
36515 + for (index = 2; index < REQUEST_ENTRY_SIZE / 4; index++)
36518 + /* Set target ID */
36519 +#if defined(EXTENDED_IDS)
36520 + cmd_pkt->target = cpu_to_le16(fclun->fcport->loop_id & 0xFF);
36522 + cmd_pkt->target = (uint8_t)fclun->fcport->loop_id;
36525 + /* Set LUN number*/
36527 + if ((cmd->data_cmnd[0] == 0x26) ||
36528 + (cmd->data_cmnd[0] == 0xA0) ||
36529 + (cmd->data_cmnd[0] == 0xCB) ) {
36530 + cmd_pkt->lun = cpu_to_le16(fclun->lun);
36531 + } else if ((fclun->fcport->flags & FC_VSA))
36532 + cmd_pkt->lun = cpu_to_le16(fclun->lun | 0x4000);
36534 + cmd_pkt->lun = cpu_to_le16(fclun->lun);
36536 + cmd_pkt->lun = cpu_to_le16(fclun->lun);
36539 + /* Update tagged queuing modifier */
36540 + cmd_pkt->control_flags = __constant_cpu_to_le16(CF_SIMPLE_TAG);
36541 + if (cmd->device->tagged_queue) {
36542 + switch (cmd->tag) {
36543 + case HEAD_OF_QUEUE_TAG:
36544 + cmd_pkt->control_flags =
36545 + __constant_cpu_to_le16(CF_HEAD_TAG);
36547 + case ORDERED_QUEUE_TAG:
36548 + cmd_pkt->control_flags =
36549 + __constant_cpu_to_le16(CF_ORDERED_TAG);
36555 + * Allocate at least 5 (+ QLA_CMD_TIMER_DELTA) seconds for RISC timeout.
36557 + timeout = (uint32_t) CMD_TIMEOUT(cmd)/HZ;
36558 + if (timeout > 65535)
36559 + cmd_pkt->timeout = __constant_cpu_to_le16(0);
36560 + if (timeout > 25)
36561 + cmd_pkt->timeout = cpu_to_le16((uint16_t)timeout -
36562 + (5 + QLA_CMD_TIMER_DELTA));
36564 + cmd_pkt->timeout = cpu_to_le16((uint16_t)timeout);
36566 + /* Load SCSI command packet. */
36567 + memcpy(cmd_pkt->scsi_cdb, cmd->cmnd, cmd->cmd_len);
36569 + cmd_pkt->byte_count = cpu_to_le32((uint32_t)cmd->request_bufflen);
36571 + /* Load IOCB segments */
36572 + ret = qla2x00_cmd_build_iocb(ha,
36575 + &req_q_cnt, &req_ring_index, &request_ring_ptr,
36576 + &tot_iocbs, &tot_dsds);
36578 + goto queuing_error;
36580 + /* Set total data segment count. */
36581 + cmd_pkt->dseg_count = cpu_to_le16(tot_dsds);
36582 + cmd_pkt->entry_count = (uint8_t)tot_iocbs;
36584 + /* Update ha fields */
36585 + ha->req_ring_index = req_ring_index;
36586 + ha->request_ring_ptr = request_ring_ptr;
36587 + ha->req_q_cnt = req_q_cnt;
36588 + ha->req_q_cnt -= tot_iocbs;
36589 +#if defined(IOCB_THROLLE_USAGE)
36590 + ha->iocb_cnt += tot_iocbs;
36592 + sp->iocb_cnt = tot_iocbs;
36595 + /* Add command to the active array */
36596 + ha->outstanding_cmds[handle] = sp;
36597 + CMD_HANDLE(sp->cmd) = (unsigned char *)(u_long)handle;
36599 + /* Adjust ring index. */
36600 + ha->req_ring_index++;
36601 + if (ha->req_ring_index == REQUEST_ENTRY_CNT) {
36602 + ha->req_ring_index = 0;
36603 + ha->request_ring_ptr = ha->request_ring;
36605 + ha->request_ring_ptr++;
36607 + ha->actthreads++;
36610 + sp->lun_queue->out_cnt++;
36611 + sp->flags |= SRB_DMA_VALID;
36612 + sp->state = SRB_ACTIVE_STATE;
36613 + sp->u_start = jiffies;
36615 + /* Set chip new ring index. */
36616 + reg_flushed = CACHE_FLUSH(ISP_REQ_Q_IN(reg));
36617 + WRT_REG_WORD(ISP_REQ_Q_IN(reg), ha->req_ring_index);
36619 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
36620 + return (QL_STATUS_SUCCESS);
36623 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
36624 + return (QL_STATUS_ERROR);
36629 + * qla2x00_marker() - Send a marker IOCB to the firmware.
36630 + * @ha: HA context
36631 + * @loop_id: loop ID
36633 + * @type: marker modifier
36635 + * Can be called from both normal and interrupt context.
36637 + * Returns non-zero if a failure occured, else zero.
36640 +__qla2x00_marker(scsi_qla_host_t *ha,
36641 + uint16_t loop_id,
36645 + mrk_entry_t *pkt;
36649 + pkt = (mrk_entry_t *)qla2x00_req_pkt(ha);
36650 + if (pkt == NULL) {
36651 + DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
36653 + return (QL_STATUS_ERROR);
36656 + pkt->entry_type = MARKER_TYPE;
36657 + pkt->modifier = type;
36659 + if (type != MK_SYNC_ALL) {
36660 + pkt->lun = cpu_to_le16(lun);
36661 +#if defined(EXTENDED_IDS)
36662 + pkt->target = cpu_to_le16(loop_id & 0xFF);
36664 + pkt->target = (uint8_t)loop_id;
36668 + /* Issue command to ISP */
36669 + qla2x00_isp_cmd(ha);
36673 + return (QL_STATUS_SUCCESS);
36677 +qla2x00_marker(scsi_qla_host_t *ha,
36678 + uint16_t loop_id,
36683 + unsigned long flags = 0;
36685 + spin_lock_irqsave(&ha->hardware_lock, flags);
36686 + ret = __qla2x00_marker(ha, loop_id, lun, type);
36687 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
36693 + * qla2x00_req_pkt() - Retrieve a request packet from the request ring.
36694 + * @ha: HA context
36696 + * Note: The caller must hold the hardware lock before calling this routine.
36698 + * Returns NULL if function failed, else, a pointer to the request packet.
36701 +qla2x00_req_pkt(scsi_qla_host_t *ha)
36703 + device_reg_t *reg = ha->iobase;
36704 + request_t *pkt = NULL;
36706 + uint32_t *dword_ptr;
36708 + uint16_t req_cnt = 1;
36712 + /* Wait 1 second for slot. */
36713 + for (timer = HZ; timer; timer--) {
36714 + if ((req_cnt + 2) >= ha->req_q_cnt) {
36715 + /* Calculate number of free request entries. */
36716 + cnt = qla2x00_debounce_register(ISP_REQ_Q_OUT(reg));
36717 + if (ha->req_ring_index < cnt)
36718 + ha->req_q_cnt = cnt - ha->req_ring_index;
36720 + ha->req_q_cnt = REQUEST_ENTRY_CNT -
36721 + (ha->req_ring_index - cnt);
36723 + /* If room for request in request ring. */
36724 + if ((req_cnt + 2) < ha->req_q_cnt) {
36726 + pkt = ha->request_ring_ptr;
36728 + /* Zero out packet. */
36729 + dword_ptr = (uint32_t *)pkt;
36730 + for (cnt = 0; cnt < REQUEST_ENTRY_SIZE / 4; cnt++)
36731 + *dword_ptr++ = 0;
36733 + /* Set system defined field. */
36734 + pkt->sys_define = (uint8_t)ha->req_ring_index;
36736 + /* Set entry count. */
36737 + pkt->entry_count = 1;
36742 + /* Release ring specific lock */
36743 + spin_unlock(&ha->hardware_lock);
36745 + udelay(2); /* 2 us */
36747 + /* Check for pending interrupts. */
36748 + /* During init we issue marker directly */
36749 + if (!ha->marker_needed)
36750 + qla2x00_poll(ha);
36752 + spin_lock_irq(&ha->hardware_lock);
36755 + DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
36764 + * qla2x00_ms_req_pkt() - Retrieve a Management Server request packet from
36765 + * the request ring.
36766 + * @ha: HA context
36767 + * @sp: pointer to handle post function call
36769 + * Note: The caller must hold the hardware lock before calling this routine.
36771 + * Returns NULL if function failed, else, a pointer to the request packet.
36774 +qla2x00_ms_req_pkt(scsi_qla_host_t *ha, srb_t *sp)
36776 + device_reg_t *reg = ha->iobase;
36777 + request_t *pkt = NULL;
36778 + uint16_t cnt, i, index;
36779 + uint32_t *dword_ptr;
36781 + uint8_t found = 0;
36782 + uint16_t req_cnt = 1;
36786 + /* Wait 1 second for slot. */
36787 + for (timer = HZ; timer; timer--) {
36788 + if ((req_cnt + 2) >= ha->req_q_cnt) {
36789 + /* Calculate number of free request entries. */
36790 + cnt = qla2x00_debounce_register(ISP_REQ_Q_OUT(reg));
36791 + if (ha->req_ring_index < cnt) {
36792 + ha->req_q_cnt = cnt - ha->req_ring_index;
36794 + ha->req_q_cnt = REQUEST_ENTRY_CNT -
36795 + (ha->req_ring_index - cnt);
36799 + /* Check for room in outstanding command list. */
36800 + cnt = ha->current_outstanding_cmd;
36801 + for (index = 1; index < MAX_OUTSTANDING_COMMANDS; index++) {
36803 + if (cnt == MAX_OUTSTANDING_COMMANDS)
36806 + if (ha->outstanding_cmds[cnt] == 0) {
36808 + ha->current_outstanding_cmd = cnt;
36813 + /* If room for request in request ring. */
36814 + if (found && (req_cnt + 2) < ha->req_q_cnt) {
36815 + pkt = ha->request_ring_ptr;
36817 + /* Zero out packet. */
36818 + dword_ptr = (uint32_t *)pkt;
36819 + for (i = 0; i < REQUEST_ENTRY_SIZE / 4; i++ )
36820 + *dword_ptr++ = 0;
36822 + DEBUG5(printk("%s(): putting sp=%p in "
36823 + "outstanding_cmds[%x]\n",
36827 + ha->outstanding_cmds[cnt] = sp;
36829 + /* save the handle */
36830 + CMD_HANDLE(sp->cmd) = (unsigned char *) (u_long) cnt;
36831 + CMD_SP(sp->cmd) = (void *)sp;
36834 + pkt->handle = (uint32_t)cnt;
36836 + /* Set system defined field. */
36837 + pkt->sys_define = (uint8_t)ha->req_ring_index;
36838 + pkt->entry_status = 0;
36843 + /* Release ring specific lock */
36844 + spin_unlock(&ha->hardware_lock);
36847 + /* Check for pending interrupts. */
36848 + qla2x00_poll(ha);
36850 + spin_lock_irq(&ha->hardware_lock);
36853 + DEBUG2_3(printk("%s(): **** FAILED ****\n", __func__));
36862 + * qla2x00_isp_cmd() - Modify the request ring pointer.
36863 + * @ha: HA context
36865 + * Note: The caller must hold the hardware lock before calling this routine.
36868 +qla2x00_isp_cmd(scsi_qla_host_t *ha)
36870 + device_reg_t *reg = ha->iobase;
36874 + DEBUG5(printk("%s(): IOCB data:\n", __func__));
36875 + DEBUG5(qla2x00_dump_buffer(
36876 + (uint8_t *)ha->request_ring_ptr, REQUEST_ENTRY_SIZE));
36878 + /* Adjust ring index. */
36879 + ha->req_ring_index++;
36880 + if (ha->req_ring_index == REQUEST_ENTRY_CNT) {
36881 + ha->req_ring_index = 0;
36882 + ha->request_ring_ptr = ha->request_ring;
36884 + ha->request_ring_ptr++;
36886 + /* Set chip new ring index. */
36887 + WRT_REG_WORD(ISP_REQ_Q_IN(reg), ha->req_ring_index);
36892 +// TODO: Complete implementation.
36893 +// TODO: Add support for EXTENDED_IDS.
36894 +#ifdef COMPLETE_IMPLEMENTATION
36896 +/* MAILBOX IOCB stuff */
36899 + * qla2x00_send_login_port_iocb() - Login to a device.
36900 + * @ha: SCSI driver HA context
36901 + * @ipdev: IP device to login to
36903 + * This routine will build and send a mailbox IOCB to login to a fabric port.
36905 + * The qla2x00_mailbox_iocb_done() routine will be called upon IOCB
36906 + * completion, where further processing is performed.
36908 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
36911 +qla2x00_send_login_port_iocb(scsi_qla_host_t *ha, fcdev_t *device)
36913 + unsigned long flags = 0;
36914 + struct mbx_entry *mbxentry;
36916 + DEBUG2(printk("%s(): port ID: %x\n",
36918 + device->port_id[2]<<16 |
36919 + device->port_id[1]<<8 |
36920 + device->port_id[0]);)
36922 + /* Send marker if required */
36923 + if (ha->marker_needed != 0) {
36924 + if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
36925 + return (QL_STATUS_ERROR);
36926 + ha->marker_needed = 0;
36929 + spin_lock_irqsave(&ha->hardware_lock, flags);
36931 + mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
36932 + if (mbxentry == NULL) {
36933 + DEBUG2(printk("%s(): failed\n", __func__);)
36935 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
36937 + return (QL_STATUS_ERROR);
36940 + /* Build fabric login MBX IOCB */
36941 + mbxentry->entry_type = ET_MAILBOX_COMMAND;
36942 + mbxentry->entry_count = 1;
36943 + mbxentry->sys_define1 = SOURCE_SCSI;
36944 + mbxentry->entry_status = 0;
36945 + mbxentry->handle = cpu_to_le32(device->dev_id |
36946 + (MBC_LOGIN_FABRIC_PORT << 16));
36947 + mbxentry->loop_id = device->loop_id;
36948 + mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGIN_FABRIC_PORT);
36949 + mbxentry->mb1 = cpu_to_le16((device->loop_id << 8) |
36950 + (MBC_NO_PROCESS_LOGIN |
36951 + MBC_NO_PLOGI_IF_LOGGED_IN));
36952 + mbxentry->mb2 = cpu_to_le16(device->port_id[2]);
36953 + mbxentry->mb3 = cpu_to_le16((device->port_id[1] << 8) |
36954 + device->port_id[0]);
36955 + mbxentry->mb6 = __constant_cpu_to_le16(0);
36956 + mbxentry->mb7 = __constant_cpu_to_le16(0);
36958 + /* Issue command to ISP */
36959 + qla2x00_isp_cmd(ha);
36961 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
36963 + return (QL_STATUS_SUCCESS);
36967 + * qla2x00_send_logout_port_iocb() - Logout an FC device.
36968 + * @ha: SCSI driver HA context
36969 + * @device: FC device to logout
36971 + * This routine will build and send a mailbox IOCB to logout a fabric port.
36973 + * The qla2x00_mailbox_iocb_done() routine will be called upon IOCB
36974 + * completion, where further processing is performed.
36976 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
36979 +qla2x00_send_logout_port_iocb(scsi_qla_host_t *ha, fcdev_t *device)
36981 + unsigned long flags = 0;
36982 + struct mbx_entry *mbxentry;
36984 + DEBUG2(printk("%s(): port ID: %x\n",
36986 + device->port_id[2]<<16 |
36987 + device->port_id[1]<<8 |
36988 + device->port_id[0]);)
36990 + /* Send marker if required */
36991 + if (ha->marker_needed != 0) {
36992 + if (qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
36993 + return (QL_STATUS_ERROR);
36994 + ha->marker_needed = 0;
36997 + spin_lock_irqsave(&ha->hardware_lock, flags);
36999 + mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
37000 + if (mbxentry == NULL) {
37001 + DEBUG3(printk("%s(): failed\n", __func__);)
37003 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
37005 + return (QL_STATUS_ERROR);
37008 + /* Build fabric logout MBX IOCB */
37009 + mbxentry->entry_type = ET_MAILBOX_COMMAND;
37010 + mbxentry->entry_count = 1;
37011 + mbxentry->sys_define1 = SOURCE_SCSI;
37012 + mbxentry->entry_status = 0;
37013 + mbxentry->handle = cpu_to_le32(device->dev_id |
37014 + (MBC_LOGOUT_FABRIC_PORT << 16));
37015 + mbxentry->loop_id = device->loop_id;
37016 + mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGOUT_FABRIC_PORT);
37017 + mbxentry->mb1 = cpu_to_le16(device->loop_id << 8);
37018 + mbxentry->mb2 = __constant_cpu_to_le16(0);
37019 + mbxentry->mb3 = __constant_cpu_to_le16(0);
37020 + mbxentry->mb6 = __constant_cpu_to_le16(0);
37021 + mbxentry->mb7 = __constant_cpu_to_le16(0);
37023 + /* Issue command to ISP */
37024 + qla2x00_isp_cmd(ha);
37026 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
37028 + return (QL_STATUS_SUCCESS);
37032 + * qla2x00_mailbox_iocb_done() - Process an mailbox IOCB completion.
37033 + * @ha: SCSI driver HA context
37034 + * @mbxentry: completed mailbox IOCB entry
37036 + * This routine is currently used for fabric login and logouts only.
37039 +qla2x00_mailbox_iocb_done(scsi_qla_host_t *ha, struct mbx_entry *mbxentry)
37046 +// FIXME: endianess?
37047 + /* Parse-out originating mailbox command */
37048 + cmd = MSW(mbxentry->handle);
37050 + DEBUG2(printk("%s: cmd %x, status %x, mb0 %x, mb1 %x, mb2 %x\n",
37053 + mbxentry->status,
37058 + /* Get device block pointer */
37059 + index = LSW(mbxentry->handle);
37060 + if (index >= QLLAN_MAX_IP_DEVICES) {
37061 + /* Bad handle from ISP */
37062 + DEBUG3(printk("%s: bad handle from isp\n", __func__);)
37064 + /* TODO: Cleanup??? */
37068 +// FIXME FROM HERE!!!
37069 + ipdev = &ha->ipdev_db[index];
37071 + if (cmd == MBC_LOGOUT_FABRIC_PORT) {
37072 + /* Check fabric logout completion status */
37073 + if (/*mbxentry->status == CS_COMPLETE && */
37074 + mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
37076 + /* Logout successful -- do nothing */
37079 + DEBUG12(printk("%s: fabric logout failed\n", __func__);)
37083 + /* Check fabric login completion status */
37084 + /* Note: sometimes ISP returns Status=0x30 and MB0=0x4000 */
37085 + /* Therefore, only check mb0 for now */
37086 + if (/* mbxentry->status == CS_COMPLETE && */
37087 + mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
37089 + /* Login successful */
37090 + ipdev->flags |= IP_DEV_FLAG_PRESENT;
37092 + else if (mbxentry->mb0 == MBS_PORT_ID_IN_USE) {
37093 + /* Different loop ID already assigned to port ID */
37094 + /* Use the one that is already assigned */
37095 + qla2x00_free_loopid(ha, ipdev->loop_id);
37096 + ipdev->loop_id = mbxentry->mb1;
37098 + /* Do logout first and then relogin */
37099 + qla2x00_ip_send_logout_port_iocb(ha, ipdev, 1);
37100 + qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
37102 + else if (mbxentry->mb0 == MBS_LOOP_ID_IN_USE) {
37103 + /* Loop ID already used for different port ID */
37104 + /* Get a new loop ID and reissue login request */
37105 + status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
37106 + if (status == QL_STATUS_SUCCESS) {
37107 + qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
37110 + DEBUG12(printk("%s: out of loop IDs\n",
37113 + qla2x00_free_ip_block(ha, ipdev);
37117 + /* Login failed, return resources */
37118 + DEBUG12(printk("%s: fabric login failed\n", __func__);)
37120 + qla2x00_free_loopid(ha, ipdev->loop_id);
37121 + qla2x00_free_ip_block(ha, ipdev);
37129 --- /dev/null Thu Apr 11 07:25:15 2002
37130 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_ip.c Thu Jul 3 15:34:42 2003
37132 +/******************************************************************************
37133 + * QLOGIC LINUX SOFTWARE
37135 + * QLogic ISP2x00 device driver for Linux 2.5.x
37136 + * Copyright (C) 2003 Qlogic Corporation
37137 + * (www.qlogic.com)
37139 + * This program is free software; you can redistribute it and/or modify it
37140 + * under the terms of the GNU General Public License as published by the
37141 + * Free Software Foundation; either version 2, or (at your option) any
37144 + * This program is distributed in the hope that it will be useful, but
37145 + * WITHOUT ANY WARRANTY; without even the implied warranty of
37146 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
37147 + * General Public License for more details.
37149 + ******************************************************************************/
37151 +/****************************************************************************
37152 + Please see revision.notes for revision history.
37153 +*****************************************************************************/
37155 +static __u8 hwbroadcast_addr[ETH_ALEN] = { [0 ... ETH_ALEN-1] = 0xFF };
37159 + * qla2x00_ip_initialize() - Initialize RISC IP support.
37160 + * @ha: SCSI driver HA context
37162 + * Prior to RISC IP initialization, this routine, if necessary, will reset all
37163 + * buffers in the receive buffer ring.
37165 + * Returns TRUE if the RISC IP initialization succeeds.
37168 +qla2x00_ip_initialize(scsi_qla_host_t *ha)
37172 + unsigned long flags;
37173 + device_reg_t *reg;
37174 + static mbx_cmd_t mc;
37175 + mbx_cmd_t *mcp = &mc;
37176 + struct ip_init_cb *ipinit_cb;
37177 + dma_addr_t ipinit_cb_dma;
37179 + DEBUG12(printk("%s: enter\n", __func__);)
37183 + /* Initialize IP data in ha */
37184 + ha->ipdev_db_top = NULL;
37185 + ha->ipdev_db_bottom = NULL;
37186 + ha->ipdev_db_next_free = &ha->ipdev_db[0];
37187 + for (i = 0; i < QLLAN_MAX_IP_DEVICES; i++) {
37188 + ha->ipdev_db[i].index = i;
37189 + ha->ipdev_db[i].next = &ha->ipdev_db[i+1];
37191 + ha->ipdev_db[QLLAN_MAX_IP_DEVICES-1].next = NULL;
37193 + /* Reset/pack buffers owned by RISC in receive buffer ring */
37194 + if (ha->rec_entries_in != ha->rec_entries_out) {
37195 + struct buffer_cb *bcb;
37196 + uint16_t rec_out;
37197 + struct risc_rec_entry *rec_entry;
37199 + bcb = ha->receive_buffers;
37200 + rec_out = ha->rec_entries_out;
37203 + * Must locate all RISC owned buffers and pack them in the
37206 + /* between IpBufferOut and IpBufferIN */
37207 + for (i = 0; i < ha->max_receive_buffers; i++, bcb++) {
37208 + if (test_bit(BCB_RISC_OWNS_BUFFER, &bcb->state)) {
37210 + * Set RISC owned buffer into receive buffer
37213 + rec_entry = &ha->risc_rec_q[rec_out];
37214 + rec_entry->handle = bcb->handle;
37215 + rec_entry->data_addr_low =
37216 + LSD(bcb->skb_data_dma);
37217 + rec_entry->data_addr_high =
37218 + MSD(bcb->skb_data_dma);
37219 + if (rec_out < IP_BUFFER_QUEUE_DEPTH - 1)
37226 + /* Verify correct number of RISC owned buffers were found */
37227 + if (rec_out != ha->rec_entries_in) {
37228 + /* Incorrect number of RISC owned buffers?? */
37229 + DEBUG12(printk("%s: incorrect number of RISC "
37230 + "owned buffers, disable IP\n",
37232 + ha->flags.enable_ip = FALSE;
37237 + /* Init RISC buffer pointer */
37238 + spin_lock_irqsave(&ha->hardware_lock, flags);
37239 + reg = ha->iobase;
37240 + WRT_REG_WORD(®->mailbox8, ha->rec_entries_in);
37241 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
37243 + /* Wait for a ready state from the adapter */
37244 + while (!ha->init_done || ha->dpc_active) {
37245 + set_current_state(TASK_INTERRUPTIBLE);
37246 + schedule_timeout(HZ);
37249 + /* Setup IP initialization control block */
37250 + ipinit_cb = pci_alloc_consistent(ha->pdev,
37251 + sizeof(struct ip_init_cb),
37254 + memset(ipinit_cb, 0, sizeof(struct ip_init_cb));
37255 + ipinit_cb->version = IPICB_VERSION;
37256 + ipinit_cb->firmware_options =
37257 + __constant_cpu_to_le16(
37258 + IPICB_OPTION_NO_BROADCAST_FASTPOST |
37259 + IPICB_OPTION_64BIT_ADDRESSING);
37260 + ipinit_cb->header_size = cpu_to_le16(ha->header_size);
37261 + ipinit_cb->mtu = cpu_to_le16((uint16_t)ha->mtu);
37262 + ipinit_cb->receive_buffer_size =
37263 + cpu_to_le16((uint16_t)ha->receive_buff_data_size);
37264 + ipinit_cb->receive_queue_size =
37265 + __constant_cpu_to_le16(IP_BUFFER_QUEUE_DEPTH);
37266 + ipinit_cb->low_water_mark =
37267 + __constant_cpu_to_le16(IPICB_LOW_WATER_MARK);
37268 + ipinit_cb->receive_queue_addr[0] =
37269 + cpu_to_le16(LSW(ha->risc_rec_q_dma));
37270 + ipinit_cb->receive_queue_addr[1] =
37271 + cpu_to_le16(MSW(ha->risc_rec_q_dma));
37272 + ipinit_cb->receive_queue_addr[2] =
37273 + cpu_to_le16(LSW(MSD(ha->risc_rec_q_dma)));
37274 + ipinit_cb->receive_queue_addr[3] =
37275 + cpu_to_le16(MSW(MSD(ha->risc_rec_q_dma)));
37276 + ipinit_cb->receive_queue_in = cpu_to_le16(ha->rec_entries_out);
37277 + ipinit_cb->fast_post_count =
37278 + __constant_cpu_to_le16(IPICB_FAST_POST_COUNT);
37279 + ipinit_cb->container_count =
37280 + __constant_cpu_to_le16(IPICB_BUFFER_CONTAINER_COUNT);
37281 + ipinit_cb->resource_allocation =
37282 + __constant_cpu_to_le16(IPICB_IOCB_RESERVE_COUNT);
37284 + /* Issue mailbox command to initialize IP firmware */
37285 + mcp->mb[0] = MBC_INITIALIZE_IP;
37286 + mcp->mb[2] = MSW(ipinit_cb_dma);
37287 + mcp->mb[3] = LSW(ipinit_cb_dma);
37288 + mcp->mb[6] = MSW(MSD(ipinit_cb_dma));
37289 + mcp->mb[7] = LSW(MSD(ipinit_cb_dma));
37290 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
37291 + mcp->in_mb = MBX_0;
37293 + mcp->buf_size = sizeof(struct ip_init_cb);
37294 + mcp->flags = MBX_DMA_OUT;
37296 + status = qla2x00_mailbox_command(ha, mcp);
37297 + if (status == QL_STATUS_SUCCESS) {
37298 + /* IP initialization successful */
37299 + DEBUG12(printk("%s: successful\n", __func__);)
37301 + ha->flags.enable_ip = TRUE;
37303 + /* Force database update */
37304 + set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
37305 + set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
37306 + set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
37308 + /* qla2x00_loop_resync(ha); */
37309 + if (ha->dpc_wait && !ha->dpc_active) {
37310 + up(ha->dpc_wait);
37315 + DEBUG12(printk("%s: MBC_INITIALIZE_IP "
37316 + "failed %x MB0 %x\n",
37322 + pci_free_consistent(ha->pdev, sizeof(struct ip_init_cb),
37323 + ipinit_cb, ipinit_cb_dma);
37327 + DEBUG12(printk("%s: memory allocation error\n", __func__);)
37334 + * qla2x00_ip_send_complete() - Handle IP send completion.
37335 + * @ha: SCSI driver HA context
37336 + * @handle: handle to completed send_cb
37337 + * @comp_status: Firmware completion status of send_cb
37339 + * Upon cleanup of the internal active-scb queue, the IP driver is notified of
37340 + * the completion.
37343 +qla2x00_ip_send_complete(scsi_qla_host_t *ha,
37344 + uint32_t handle, uint16_t comp_status)
37346 + struct send_cb *scb;
37348 + /* Set packet pointer from queue entry handle */
37349 + if (handle < MAX_SEND_PACKETS) {
37350 + scb = ha->active_scb_q[handle];
37353 + ha->active_scb_q[handle] = NULL;
37355 + scb->comp_status = comp_status;
37356 + pci_unmap_single(ha->pdev,
37357 + scb->skb_data_dma,
37359 + PCI_DMA_TODEVICE);
37361 + /* Return send packet to IP driver */
37362 + (*ha->send_completion_routine)(scb);
37367 + /* Invalid handle from RISC, reset RISC firmware */
37368 + printk(KERN_WARNING
37369 + "%s: Bad IP send handle %x - aborting ISP\n",
37370 + __func__, handle);
37372 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37376 + * qla2x00_ip_receive() - Handle IP receive IOCB.
37377 + * @ha: SCSI driver HA context
37378 + * @pkt: RISC IP receive packet
37380 + * Upon preparation of one or more buffer_cbs, the IP driver is notified of
37381 + * the received packet.
37384 +qla2x00_ip_receive(scsi_qla_host_t *ha, response_t *pkt)
37387 + uint32_t packet_size;
37388 + uint16_t linked_bcb_cnt;
37389 + uint32_t rec_data_size;
37390 + uint16_t comp_status;
37391 + struct buffer_cb *bcb;
37392 + struct buffer_cb *nbcb;
37393 + struct ip_rec_entry *iprec_entry;
37395 + DEBUG12(printk("%s: enter\n", __func__);)
37397 + iprec_entry = (struct ip_rec_entry *)pkt;
37398 + comp_status = le16_to_cpu(iprec_entry->comp_status);
37400 + /* If split buffer, set header size for 1st buffer */
37401 + if (comp_status & IPREC_STATUS_SPLIT_BUFFER)
37402 + rec_data_size = ha->header_size;
37404 + rec_data_size = ha->receive_buff_data_size;
37406 + handle = iprec_entry->buffer_handles[0];
37407 + if (handle >= ha->max_receive_buffers) {
37408 + /* Invalid handle from RISC, reset RISC firmware */
37409 + printk(KERN_WARNING
37410 + "%s: Bad IP buffer handle %x (> buffer_count)...Post "
37414 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37418 + bcb = &ha->receive_buffers[handle];
37420 + if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER, &bcb->state)) {
37421 + /* Invalid handle from RISC, reset RISC firmware */
37422 + printk(KERN_WARNING
37423 + "%s: Bad IP buffer handle %x (!RISC_owned)...Post "
37427 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37431 + packet_size = le16_to_cpu(iprec_entry->sequence_length);
37432 + bcb->comp_status = comp_status;
37433 + bcb->packet_size = packet_size;
37436 + /* Prepare any linked buffers */
37437 + for (linked_bcb_cnt = 1; ; linked_bcb_cnt++) {
37438 + if (packet_size > rec_data_size) {
37439 + nbcb->rec_data_size = rec_data_size;
37440 + packet_size -= rec_data_size;
37443 + * If split buffer, only use header size on 1st buffer
37445 + rec_data_size = ha->receive_buff_data_size;
37447 + handle = iprec_entry->buffer_handles[linked_bcb_cnt];
37448 + if (handle >= ha->max_receive_buffers) {
37450 + * Invalid handle from RISC reset RISC firmware
37452 + printk(KERN_WARNING
37453 + "%s: Bad IP buffer handle %x (> "
37454 + "buffer_count - PS)...Post ISP Abort\n",
37457 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37460 + nbcb->next_bcb = &ha->receive_buffers[handle];
37461 + nbcb = nbcb->next_bcb;
37463 + if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER,
37466 + * Invalid handle from RISC reset RISC firmware
37468 + printk(KERN_WARNING
37469 + "%s: Bad IP buffer handle %x "
37470 + "(!RISC_owned - PS)...Post ISP Abort\n",
37473 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37478 + /* Single buffer_cb */
37479 + nbcb->rec_data_size = packet_size;
37480 + nbcb->next_bcb = NULL;
37485 + /* Check for incoming ARP packet with matching IP address */
37486 + if (le16_to_cpu(iprec_entry->service_class) == 0) {
37487 + uint8_t port_id[3];
37488 + struct ip_device *ipdev;
37489 + struct packet_header *packethdr;
37491 + packethdr = (struct packet_header *)bcb->skb_data;
37493 + /* Scan list of IP devices to see if login needed */
37494 + for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next) {
37495 + if (!memcmp(&ipdev->port_name[2],
37496 + packethdr->networkh.s.na.addr, ETH_ALEN)) {
37497 + /* Device already in IP list, skip login */
37498 + goto skip_device_login;
37502 + /* Device not in list, need to do login */
37503 + port_id[2] = iprec_entry->s_idhigh;
37504 +// FIXME: endianess?
37505 + port_id[1] = MSB(iprec_entry->s_idlow);
37506 + port_id[0] = LSB(iprec_entry->s_idlow);
37508 + /* Make sure its not a local device */
37509 + if (port_id[2] == ha->d_id.b.domain &&
37510 + port_id[1] == ha->d_id.b.area) {
37512 + goto skip_device_login;
37515 + if (qla2x00_add_new_ip_device(ha,
37516 + PUBLIC_LOOP_DEVICE,
37518 + packethdr->networkh.s.fcaddr,
37520 + 1) == QL_STATUS_FATAL_ERROR) {
37522 + /* Fatal error, reinitialize */
37523 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37528 +skip_device_login:
37530 + /* Pass received packet to IP driver */
37531 + bcb->linked_bcb_cnt = linked_bcb_cnt;
37532 + (*ha->receive_packets_routine)(ha->receive_packets_context, bcb);
37534 + /* Keep track of RISC buffer pointer (for IP reinit) */
37535 + ha->rec_entries_out += linked_bcb_cnt;
37536 + if (ha->rec_entries_out >= IP_BUFFER_QUEUE_DEPTH)
37537 + ha->rec_entries_out -= IP_BUFFER_QUEUE_DEPTH;
37541 + * qla2x00_ip_receive_fastpost() - Handle IP receive fastpost.
37542 + * @ha: SCSI driver HA context
37543 + * @type: RISC fastpost type
37545 + * Upon preparation of one or more buffer_cbs, the IP driver is notified of
37546 + * the received packet.
37549 +qla2x00_ip_receive_fastpost(scsi_qla_host_t *ha, uint16_t type)
37552 + uint32_t packet_size;
37553 + uint16_t linked_bcb_cnt;
37554 + uint32_t rec_data_size;
37555 + volatile uint16_t *next_mb;
37556 + device_reg_t *reg = ha->iobase;
37557 + struct buffer_cb *bcb;
37558 + struct buffer_cb *nbcb;
37560 + DEBUG12(printk("%s: enter\n", __func__);)
37562 + next_mb = ®->mailbox10;
37564 + /* If split buffer, set header size for 1st buffer */
37565 + if (type == MBA_IP_RECEIVE_COMPLETE_SPLIT)
37566 + rec_data_size = ha->header_size;
37568 + rec_data_size = ha->receive_buff_data_size;
37570 + handle = RD_REG_WORD(next_mb);
37571 + if (handle >= ha->max_receive_buffers) {
37572 + goto invalid_handle;
37575 + bcb = &ha->receive_buffers[handle];
37577 + if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER, &bcb->state)) {
37578 + goto invalid_handle;
37581 + packet_size = RD_REG_WORD(®->mailbox3);
37582 + /* Fastpost entries are always successfully transferred */
37583 + bcb->comp_status = CS_COMPLETE;
37584 + bcb->packet_size = packet_size;
37587 + /* Prepare any linked buffers */
37588 + for (linked_bcb_cnt = 1; ; linked_bcb_cnt++) {
37589 + if (packet_size > rec_data_size) {
37590 + nbcb->rec_data_size = rec_data_size;
37591 + packet_size -= rec_data_size;
37593 + * If split buffer, only use header size on 1st buffer
37595 + rec_data_size = ha->receive_buff_data_size;
37598 + handle = RD_REG_WORD(next_mb);
37599 + if (handle >= ha->max_receive_buffers) {
37601 + printk(KERN_WARNING
37602 + "%s: bad IP receive fast post handle "
37606 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
37610 + nbcb->next_bcb = &ha->receive_buffers[handle];
37611 + nbcb = nbcb->next_bcb;
37613 + if (!test_and_clear_bit(BCB_RISC_OWNS_BUFFER,
37615 + goto invalid_handle;
37619 + /* Single buffer_cb */
37620 + nbcb->rec_data_size = packet_size;
37621 + nbcb->next_bcb = NULL;
37626 + /* Pass received packet to IP driver */
37627 + bcb->linked_bcb_cnt = linked_bcb_cnt;
37628 + (*ha->receive_packets_routine)(ha->receive_packets_context, bcb);
37630 + /* Keep track of RISC buffer pointer (for IP reinit) */
37631 + ha->rec_entries_out += linked_bcb_cnt;
37632 + if (ha->rec_entries_out >= IP_BUFFER_QUEUE_DEPTH)
37633 + ha->rec_entries_out -= IP_BUFFER_QUEUE_DEPTH;
37637 + * qla2x00_convert_to_arp() - Convert an IP send packet to an ARP packet
37638 + * @ha: SCSI driver HA context
37639 + * @scb: The send_cb structure to convert
37641 + * Returns TRUE if conversion successful.
37644 +qla2x00_convert_to_arp(scsi_qla_host_t *ha, struct send_cb *scb)
37646 + struct sk_buff *skb;
37647 + struct packet_header *packethdr;
37648 + struct arp_header *arphdr;
37649 + struct ip_header *iphdr;
37651 + DEBUG12(printk("%s: convert packet to ARP\n", __func__);)
37654 + packethdr = scb->header;
37655 + arphdr = (struct arp_header *)skb->data;
37656 + iphdr = (struct ip_header *)skb->data;
37658 + if (packethdr->snaph.ethertype == __constant_htons(ETH_P_IP)) {
37659 + /* Convert IP packet to ARP packet */
37660 + packethdr->networkh.d.na.naa = NAA_IEEE_MAC_TYPE;
37661 + packethdr->networkh.d.na.unused = 0;
37662 + memcpy(packethdr->networkh.d.na.addr,
37663 + hwbroadcast_addr, ETH_ALEN);
37664 + packethdr->snaph.ethertype = __constant_htons(ETH_P_ARP);
37666 + arphdr->ar_tip = iphdr->iph.daddr;
37667 + arphdr->ar_sip = iphdr->iph.saddr;
37668 + arphdr->arph.ar_hrd = __constant_htons(ARPHRD_IEEE802);
37669 + arphdr->arph.ar_pro = __constant_htons(ETH_P_IP);
37670 + arphdr->arph.ar_hln = ETH_ALEN;
37671 + arphdr->arph.ar_pln = sizeof(iphdr->iph.daddr); /* 4 */
37672 + arphdr->arph.ar_op = __constant_htons(ARPOP_REQUEST);
37673 + memcpy(arphdr->ar_sha, packethdr->networkh.s.na.addr, ETH_ALEN);
37674 + memset(arphdr->ar_tha, 0, ETH_ALEN);
37676 + skb->len = sizeof(struct arp_header);
37686 + * qla2x00_get_ip_loopid() - Retrieve loop id of an IP device.
37687 + * @ha: SCSI driver HA context
37688 + * @packethdr: IP device to remove
37689 + * @loop_id: loop id of discovered device
37691 + * This routine will interrogate the packet header to determine if the sender is
37692 + * in the list of active IP devices. The first two bytes of the destination
37693 + * address will be modified to match the port name stored in the active IP
37696 + * Returns TRUE if a valid loop id is returned.
37699 +qla2x00_get_ip_loopid(scsi_qla_host_t *ha,
37700 + struct packet_header *packethdr, uint8_t *loop_id)
37702 + struct ip_device *ipdev;
37704 + /* Scan list of logged in IP devices for match */
37705 + for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next) {
37706 + if (memcmp(&ipdev->port_name[2],
37707 + &(packethdr->networkh.d.fcaddr[2]), ETH_ALEN))
37710 + /* Found match, return loop ID */
37711 + *loop_id = (uint8_t)ipdev->loop_id;
37713 + /* Update first 2 bytes of port name */
37714 + packethdr->networkh.d.fcaddr[0] = ipdev->port_name[0];
37715 + packethdr->networkh.d.fcaddr[1] = ipdev->port_name[1];
37717 + if (ipdev != ha->ipdev_db_top) {
37718 + /* Device not at top, move it to top of list */
37719 + /* Unhook it first */
37720 + if (ipdev == ha->ipdev_db_bottom) {
37721 + ha->ipdev_db_bottom = ipdev->last;
37722 + ipdev->last->next = NULL;
37725 + ipdev->last->next = ipdev->next;
37726 + ipdev->next->last = ipdev->last;
37729 + /* Now put it at top of list */
37730 + ipdev->next = ha->ipdev_db_top;
37731 + ipdev->last = NULL;
37732 + ha->ipdev_db_top->last = ipdev;
37733 + ha->ipdev_db_top = ipdev;
37738 + /* Check for broadcast packet */
37739 + if (!memcmp(packethdr->networkh.d.na.addr,
37740 + hwbroadcast_addr, ETH_ALEN)) {
37741 + /* Broadcast packet, return broadcast loop ID */
37742 + *loop_id = BROADCAST;
37744 + /* Update destination NAA of header */
37745 + packethdr->networkh.d.na.naa = NAA_IEEE_MAC_TYPE;
37746 + packethdr->networkh.d.na.unused = 0;
37751 + /* Check for multicast packet */
37752 + if (packethdr->networkh.d.na.addr[0] & 0x01) {
37753 + /* Use broadcast loop ID for multicast packets */
37754 + *loop_id = BROADCAST;
37756 + /* Update destination NAA of header */
37757 + packethdr->networkh.d.na.naa = NAA_IEEE_MAC_TYPE;
37758 + packethdr->networkh.d.na.unused = 0;
37764 + /* Try sending FARP IOCB to request login */
37766 + DEBUG12(printk("%s: ID not found for "
37767 + "XX XX %02x %02x %02x %02x %02x %02x\n",
37769 + packethdr->networkh.d.na.addr[0],
37770 + packethdr->networkh.d.na.addr[1],
37771 + packethdr->networkh.d.na.addr[2],
37772 + packethdr->networkh.d.na.addr[3],
37773 + packethdr->networkh.d.na.addr[4],
37774 + packethdr->networkh.d.na.addr[5]);)
37780 + * qla2x00_reserve_loopid() - Reserve an unused public loop id.
37781 + * @ha: SCSI driver HA context
37782 + * @loop_id: loop id reserved
37784 + * Returns QL_STATUS_SUCCESS if a valid loop id is returned.
37787 +qla2x00_reserve_loopid(scsi_qla_host_t *ha, uint16_t *loop_id)
37791 + /* Look for unused loop ID */
37792 + for (i = ha->min_external_loopid; i < ha->max_public_loop_ids; i++) {
37793 + if (ha->fabricid[i].in_use)
37796 + /* Found free loop ID */
37797 + ha->fabricid[i].in_use = TRUE;
37800 + DEBUG12(printk("%s: assigned loop ID %x\n",
37804 + return (QL_STATUS_SUCCESS);
37807 + /* Out of loop IDs */
37808 + *loop_id = ha->max_public_loop_ids + 1; /* Set out of range */
37810 + DEBUG12(printk("%s: out of loop IDs\n", __func__);)
37812 + return (QL_STATUS_RESOURCE_ERROR);
37816 + * qla2x00_free_loopid() - Free a public loop id.
37817 + * @ha: SCSI driver HA context
37818 + * @loop_id: loop id to free
37821 +qla2x00_free_loopid(scsi_qla_host_t *ha, uint16_t loop_id)
37823 + if (loop_id < ha->max_public_loop_ids) {
37824 + ha->fabricid[loop_id].in_use = FALSE;
37825 + DEBUG12(printk("%s: free loop ID %x\n",
37830 + DEBUG12(printk("%s: loop ID %x out of range\n",
37838 + * qla2x00_add_new_ip_device() - Add a new IP capable device to the list.
37839 + * @ha: SCSI driver HA context
37840 + * @loop_id: loop id, if a private loop, of the new device
37841 + * @port_id: port id of the new device
37842 + * @port_name: port name of the new device
37843 + * @force_add: should the function force the addition of the device
37844 + * @ha_locked: Flag indicating if the function is called with the hardware lock
37846 + * Prior to RISC IP initialization, this routine, if necessary, will reset all
37847 + * buffers in the receive buffer ring.
37849 + * Returns QL_STATUS_SUCCESS if there were no errors adding the device.
37852 +qla2x00_add_new_ip_device(scsi_qla_host_t *ha,
37853 + uint16_t loop_id,
37854 + uint8_t *port_id,
37855 + uint8_t *port_name,
37857 + uint32_t ha_locked)
37860 + struct ip_device *ipdev;
37862 + /* Get free IP device block */
37863 + status = qla2x00_reserve_ip_block(ha, &ipdev);
37864 + if (status == QL_STATUS_RESOURCE_ERROR) {
37869 + * Out of IP blocks, bump public device at bottom of list
37871 + DEBUG12(printk("%s: bump device from IP list\n", __func__);)
37873 + for (ipdev = ha->ipdev_db_bottom; ipdev; ipdev = ipdev->last) {
37874 + if (!(ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE))
37877 + /* Do fabric logout and free loop ID */
37878 + qla2x00_ip_send_logout_port_iocb(ha, ipdev, ha_locked);
37879 + qla2x00_free_loopid(ha, ipdev->loop_id);
37881 + /* Move device to top of list */
37882 + qla2x00_free_ip_block(ha, ipdev);
37883 + status = qla2x00_reserve_ip_block(ha, &ipdev);
37886 + if (status != QL_STATUS_SUCCESS)
37890 + /* Save IP port name */
37891 + memcpy(ipdev->port_name, port_name, WWN_SIZE);
37893 + if (loop_id != PUBLIC_LOOP_DEVICE) {
37894 + /* Private loop device */
37895 + ipdev->loop_id = loop_id;
37896 + ipdev->flags = IP_DEV_FLAG_PRESENT;
37898 + DEBUG12(printk("%s: WWN:%02x%02x%02x%02x%02x%02x%02x%02x, "
37901 + ipdev->port_name[0],
37902 + ipdev->port_name[1],
37903 + ipdev->port_name[2],
37904 + ipdev->port_name[3],
37905 + ipdev->port_name[4],
37906 + ipdev->port_name[5],
37907 + ipdev->port_name[6],
37908 + ipdev->port_name[7],
37909 + ipdev->loop_id);)
37912 + /* Public device */
37913 + /* Reserve public loop ID, save it in database */
37914 + status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
37915 + if (status == QL_STATUS_RESOURCE_ERROR) {
37916 + struct ip_device *ipdev_bump;
37918 + if (!force_add) {
37919 + /* Failed to get loop ID */
37920 + DEBUG12(printk("%s: failed to get loop ID\n",
37922 + qla2x00_free_ip_block(ha, ipdev);
37928 + * Out of loop IDs, bump public device at bottom of
37931 + DEBUG12(printk("%s: bump device from IP list\n",
37934 + for (ipdev_bump = ha->ipdev_db_bottom;
37936 + ipdev_bump = ipdev_bump->last) {
37938 + if (!(ipdev_bump->flags &
37939 + IP_DEV_FLAG_PUBLIC_DEVICE))
37943 + * Do fabric logout, steal loop ID, free bumped
37946 + qla2x00_ip_send_logout_port_iocb(ha,
37947 + ipdev_bump, ha_locked);
37948 + ipdev->loop_id = ipdev_bump->loop_id;
37949 + qla2x00_free_ip_block(ha, ipdev_bump);
37951 + status = QL_STATUS_SUCCESS;
37955 + if (status != QL_STATUS_SUCCESS) {
37956 + /* Failed to get loop ID */
37957 + DEBUG12(printk("%s: failed to get loop ID\n",
37959 + qla2x00_free_ip_block(ha, ipdev);
37965 + /* Save device data */
37966 + ipdev->port_id[0] = port_id[0];
37967 + ipdev->port_id[1] = port_id[1];
37968 + ipdev->port_id[2] = port_id[2];
37969 + ipdev->flags = IP_DEV_FLAG_PUBLIC_DEVICE;
37971 + /* Login public device */
37972 + status = qla2x00_ip_send_login_port_iocb(ha, ipdev, ha_locked);
37973 + if (status == QL_STATUS_SUCCESS) {
37974 + DEBUG12(printk("%s: "
37975 + "WWN:%02x%02x%02x%02x%02x%02x%02x%02x, "
37976 + "LoopID:%x, PortID:%x\n",
37978 + ipdev->port_name[0],
37979 + ipdev->port_name[1],
37980 + ipdev->port_name[2],
37981 + ipdev->port_name[3],
37982 + ipdev->port_name[4],
37983 + ipdev->port_name[5],
37984 + ipdev->port_name[6],
37985 + ipdev->port_name[7],
37987 + ipdev->port_id[2]<<16 |
37988 + ipdev->port_id[1]<<8 |
37989 + ipdev->port_id[0]);)
37992 + /* Login failed, return resources */
37993 + qla2x00_free_loopid(ha, ipdev->loop_id);
37994 + qla2x00_free_ip_block(ha, ipdev);
38002 + * qla2x00_free_ip_block() - Remove an IP device from the active IP list.
38003 + * @ha: SCSI driver HA context
38004 + * @ipdev: IP device to remove
38007 +qla2x00_free_ip_block(scsi_qla_host_t *ha, struct ip_device *ipdev)
38009 + /* Unhook IP device block from active list */
38010 + if (ipdev->last == NULL)
38011 + ha->ipdev_db_top = ipdev->next;
38013 + ipdev->last->next = ipdev->next;
38015 + if (ipdev->next == NULL)
38016 + ha->ipdev_db_bottom = ipdev->last;
38018 + ipdev->next->last = ipdev->last;
38020 + /* Add IP device block to free list */
38021 + ipdev->next = ha->ipdev_db_next_free;
38022 + ha->ipdev_db_next_free = ipdev;
38026 + * qla2x00_reserve_ip_block() - Move an IP device to the IP device list.
38027 + * @ha: SCSI driver HA context
38028 + * @ipdevblk: reserved IP device to add
38030 + * This routine will move the unused @ipdevblk from the free list to the top of
38031 + * the active IP device list.
38033 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38036 +qla2x00_reserve_ip_block(scsi_qla_host_t *ha, struct ip_device **ipdevblk)
38038 + struct ip_device *ipdev;
38040 + /* Get free IP device block */
38041 + ipdev = ha->ipdev_db_next_free;
38043 + /* Remove IP device block from free list */
38044 + ha->ipdev_db_next_free = ipdev->next;
38046 + /* Add IP device block to top of IP device list */
38047 + ipdev->next = ha->ipdev_db_top;
38048 + ipdev->last = NULL;
38049 + if (ha->ipdev_db_top == NULL)
38050 + ha->ipdev_db_bottom = ipdev;
38052 + ha->ipdev_db_top->last = ipdev;
38053 + ha->ipdev_db_top = ipdev;
38055 + *ipdevblk = ipdev;
38057 + return (QL_STATUS_SUCCESS);
38060 + /* Out of IP blocks */
38061 + DEBUG12(printk("%s: out of IP blocks\n", __func__);)
38063 + return (QL_STATUS_RESOURCE_ERROR);
38067 + * qla2x00_update_ip_device_data() - Update IP device list with driver data.
38068 + * @ha: SCSI driver HA context
38069 + * @fcdev: SCSI driver FC device list
38071 + * This routine searchs for the device port name in the current IP database and
38072 + * updates the IP device list.
38074 + * If device found:
38075 + * - Handle device movement between public and private loops
38076 + * - Mark device present
38077 + * - Log in device if necessary
38078 + * If device not found and private loop device:
38079 + * - Insert the new entry in database
38080 + * If device not found and public IP device:
38081 + * - Ignore device until packet received from device
38083 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38086 +qla2x00_update_ip_device_data(scsi_qla_host_t *ha, fcdev_t *fcdev)
38089 + struct ip_device *ipdev;
38093 + if (!ha->flags.enable_ip) {
38094 + /* IP not enabled, just return */
38095 + return (QL_STATUS_SUCCESS);
38098 + /* Scan list of IP devices for match */
38099 + for (ipdev = ha->ipdev_db_top; ipdev; ipdev = ipdev->next) {
38100 + if (memcmp(fcdev->wwn, ipdev->port_name, WWN_SIZE))
38103 + /* Found device in IP device list */
38104 + DEBUG12(printk("%s: already in IP list, port ID: %x\n",
38106 + ipdev->port_id[2] << 16 |
38107 + ipdev->port_id[1] << 8 |
38108 + ipdev->port_id[0]);)
38110 + if (fcdev->flag != DEV_PUBLIC &&
38111 + !(ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE)) {
38113 + * Device on private loop now, was on private loop
38116 + DEBUG12(printk("%s: was private loop, now "
38117 + "private loop\n",
38120 + /* Update private loop ID in database */
38121 + ipdev->loop_id = fcdev->loop_id;
38122 + ipdev->flags |= IP_DEV_FLAG_PRESENT;
38124 + else if (fcdev->flag != DEV_PUBLIC &&
38125 + (ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE)) {
38127 + * Device on private loop now, was public device before.
38129 + DEBUG12(printk("%s: was public, now private loop\n",
38133 + * If loop ID changed, logout device and free loop ID.
38135 + if (fcdev->loop_id != ipdev->loop_id) {
38136 + qla2x00_ip_send_logout_port_iocb(ha, ipdev, 0);
38137 + qla2x00_free_loopid(ha, ipdev->loop_id);
38140 + * Clear public device flag and save private
38141 + * loop ID in database.
38143 + ipdev->flags &= ~IP_DEV_FLAG_PUBLIC_DEVICE;
38144 + ipdev->loop_id = fcdev->loop_id;
38146 + ipdev->flags |= IP_DEV_FLAG_PRESENT;
38148 + else if (fcdev->flag == DEV_PUBLIC &&
38149 + !(ipdev->flags & IP_DEV_FLAG_PUBLIC_DEVICE)) {
38151 + * Device public now, was on private loop before.
38153 + DEBUG12(printk("%s: was private loop, now public\n",
38157 + * Reserve public loop ID, save it in database.
38159 + status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
38160 + if (status == QL_STATUS_SUCCESS) {
38162 + * Save port ID and set public device flag.
38164 + ipdev->port_id[0] = fcdev->d_id.r.d_id[0];
38165 + ipdev->port_id[1] = fcdev->d_id.r.d_id[1];
38166 + ipdev->port_id[2] = fcdev->d_id.r.d_id[2];
38167 + ipdev->flags |= IP_DEV_FLAG_PUBLIC_DEVICE;
38169 + /* Login public device */
38170 + status = qla2x00_ip_send_login_port_iocb(ha,
38173 + if (status == QL_STATUS_RESOURCE_ERROR) {
38174 + /* Out of loop IDs */
38175 + ipdev->flags &= ~IP_DEV_FLAG_PUBLIC_DEVICE;
38180 + * Device public now, was public device before.
38182 + DEBUG12(printk("%s: was public, now public\n",
38185 + /* Check if port ID changed */
38186 + if (ipdev->port_id[0] != fcdev->d_id.r.d_id[0] ||
38187 + ipdev->port_id[1] != fcdev->d_id.r.d_id[1] ||
38188 + ipdev->port_id[2] != fcdev->d_id.r.d_id[2]) {
38190 + /* Save new port ID */
38191 + ipdev->port_id[0] = fcdev->d_id.r.d_id[0];
38192 + ipdev->port_id[1] = fcdev->d_id.r.d_id[1];
38193 + ipdev->port_id[2] = fcdev->d_id.r.d_id[2];
38195 + DEBUG12(printk("%s: Port ID changed\n",
38198 + /* Logout public device */
38199 + qla2x00_ip_send_logout_port_iocb(ha, ipdev, 0);
38202 + /* Login public device */
38203 + status = qla2x00_ip_send_login_port_iocb(ha, ipdev, 0);
38204 + if (status == QL_STATUS_RESOURCE_ERROR) {
38205 + /* Out of loop IDs */
38206 + ipdev->flags &= ~IP_DEV_FLAG_PUBLIC_DEVICE;
38212 + /* Device not found in database */
38213 + DEBUG12(printk("%s: device NOT in list\n", __func__);)
38215 + /* If private loop device, add device to IP list */
38216 + /* Public devices will be added as needed when packet received */
38217 + if (fcdev->flag != DEV_PUBLIC) {
38218 + /* Add (force) new private loop device to IP list */
38219 + status = qla2x00_add_new_ip_device(ha,
38227 + /* The following code is temporary, until FARP supported */
38228 + /* Login all IP public devices for now */
38229 + if (fcdev->flag == DEV_PUBLIC) {
38230 + /* Add (don't force) new public device to IP list */
38231 + status = qla2x00_add_new_ip_device(ha,
38232 + PUBLIC_LOOP_DEVICE,
38233 + (uint8_t *)&fcdev->d_id,
38243 + * qla2x00_ip_send_login_port_iocb() - Login to an IP device.
38244 + * @ha: SCSI driver HA context
38245 + * @ipdev: IP device to login to
38246 + * @ha_locked: Flag indicating if the function is called with the hardware lock
38248 + * This routine will build and send a mailbox IOCB to login to a fabric port.
38250 + * The qla2x00_ip_mailbox_iocb_done() routine will be called upon IOCB
38251 + * completion, where further processing is performed.
38253 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38256 +qla2x00_ip_send_login_port_iocb(scsi_qla_host_t *ha,
38257 + struct ip_device *ipdev, uint32_t ha_locked)
38259 + unsigned long flags = 0;
38260 + struct mbx_entry *mbxentry;
38262 + DEBUG12(printk("%s: port ID: %x\n",
38264 + ipdev->port_id[2]<<16 |
38265 + ipdev->port_id[1]<<8 |
38266 + ipdev->port_id[0]);)
38268 + /* Send marker if required */
38269 + if (ha->marker_needed != 0) {
38271 + if(__qla2x00_marker(ha,
38272 + 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38273 + return (QL_STATUS_ERROR);
38276 + if(qla2x00_marker(ha,
38277 + 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38278 + return (QL_STATUS_ERROR);
38280 + ha->marker_needed = 0;
38284 + spin_lock_irqsave(&ha->hardware_lock, flags);
38286 + mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
38287 + if (mbxentry == NULL) {
38288 + DEBUG12(printk("%s: failed\n", __func__);)
38291 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38293 + return (QL_STATUS_ERROR);
38296 + /* Build fabric login MBX IOCB */
38297 + mbxentry->entry_type = ET_MAILBOX_COMMAND;
38298 + mbxentry->entry_count = 1;
38299 + mbxentry->sys_define1 = SOURCE_IP;
38300 + mbxentry->entry_status = 0;
38301 + mbxentry->handle = cpu_to_le32(ipdev->index |
38302 + (MBC_LOGIN_FABRIC_PORT << 16));
38303 + mbxentry->loop_id = ipdev->loop_id;
38304 + mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGIN_FABRIC_PORT);
38305 + mbxentry->mb1 = cpu_to_le16((ipdev->loop_id << 8) |
38306 + (MBC_NO_PROCESS_LOGIN |
38307 + MBC_NO_PLOGI_IF_LOGGED_IN));
38308 + mbxentry->mb2 = cpu_to_le16(ipdev->port_id[2]);
38309 + mbxentry->mb3 = cpu_to_le16((ipdev->port_id[1] << 8) |
38310 + ipdev->port_id[0]);
38311 + mbxentry->mb6 = __constant_cpu_to_le16(0);
38312 + mbxentry->mb7 = __constant_cpu_to_le16(0);
38314 + /* Issue command to ISP */
38315 + qla2x00_isp_cmd(ha);
38318 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38320 + return (QL_STATUS_SUCCESS);
38324 + * qla2x00_ip_send_logout_port_iocb() - Logout an IP device.
38325 + * @ha: SCSI driver HA context
38326 + * @ipdev: IP device to logout
38327 + * @ha_locked: Flag indicating if the function is called with the hardware lock
38329 + * This routine will build and send a mailbox IOCB to logout a fabric port.
38331 + * The qla2x00_ip_mailbox_iocb_done() routine will be called upon IOCB
38332 + * completion, where further processing is performed.
38334 + * Returns QL_STATUS_SUCCESS if the operation succeeded.
38337 +qla2x00_ip_send_logout_port_iocb(scsi_qla_host_t *ha,
38338 + struct ip_device *ipdev, uint32_t ha_locked)
38340 + unsigned long flags = 0;
38341 + struct mbx_entry *mbxentry;
38343 + DEBUG12(printk("%s: port ID: %x\n",
38345 + ipdev->port_id[2]<<16 |
38346 + ipdev->port_id[1]<<8 |
38347 + ipdev->port_id[0]);)
38349 + /* Send marker if required */
38350 + if (ha->marker_needed != 0) {
38352 + if(__qla2x00_marker(ha,
38353 + 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38354 + return (QL_STATUS_ERROR);
38357 + if(qla2x00_marker(ha,
38358 + 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS)
38359 + return (QL_STATUS_ERROR);
38361 + ha->marker_needed = 0;
38365 + spin_lock_irqsave(&ha->hardware_lock, flags);
38367 + mbxentry = (struct mbx_entry *)qla2x00_req_pkt(ha);
38368 + if (mbxentry == NULL) {
38369 + DEBUG12(printk("%s: failed\n", __func__);)
38372 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38374 + return (QL_STATUS_ERROR);
38377 + /* Build fabric logout MBX IOCB */
38378 + mbxentry->entry_type = ET_MAILBOX_COMMAND;
38379 + mbxentry->entry_count = 1;
38380 + mbxentry->sys_define1 = SOURCE_IP;
38381 + mbxentry->entry_status = 0;
38382 + mbxentry->handle = cpu_to_le32(ipdev->index |
38383 + (MBC_LOGOUT_FABRIC_PORT << 16));
38384 + mbxentry->loop_id = ipdev->loop_id;
38385 + mbxentry->mb0 = __constant_cpu_to_le16(MBC_LOGOUT_FABRIC_PORT);
38386 + mbxentry->mb1 = cpu_to_le16(ipdev->loop_id << 8);
38387 + mbxentry->mb2 = __constant_cpu_to_le16(0);
38388 + mbxentry->mb3 = __constant_cpu_to_le16(0);
38389 + mbxentry->mb6 = __constant_cpu_to_le16(0);
38390 + mbxentry->mb7 = __constant_cpu_to_le16(0);
38392 + /* Issue command to ISP */
38393 + qla2x00_isp_cmd(ha);
38396 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38398 + return (QL_STATUS_SUCCESS);
38402 + * qla2x00_ip_mailbox_iocb_done() - Process an mailbox IOCB completion.
38403 + * @ha: SCSI driver HA context
38404 + * @mbxentry: completed mailbox IOCB entry
38406 + * This routine is currently used for fabric login and logouts only.
38409 +qla2x00_ip_mailbox_iocb_done(scsi_qla_host_t *ha, struct mbx_entry *mbxentry)
38414 + struct ip_device *ipdev;
38415 +// FIXME: endianess?
38416 + /* Parse-out originating mailbox command */
38417 + cmd = MSW(mbxentry->handle);
38419 + DEBUG12(printk("%s: cmd %x, status %x, mb0 %x, mb1 %x, mb2 %x\n",
38422 + mbxentry->status,
38427 + /* Get device block pointer */
38428 + index = LSW(mbxentry->handle);
38429 + if (index >= QLLAN_MAX_IP_DEVICES) {
38430 + /* Bad handle from ISP */
38431 + DEBUG12(printk("%s: bad handle from isp\n", __func__);)
38433 + /* TODO: Cleanup??? */
38438 + ipdev = &ha->ipdev_db[index];
38440 + if (cmd == MBC_LOGOUT_FABRIC_PORT) {
38441 + /* Check fabric logout completion status */
38442 + if (/*mbxentry->status == CS_COMPLETE && */
38443 + mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
38445 + /* Logout successful -- do nothing */
38448 + DEBUG12(printk("%s: fabric logout failed\n", __func__);)
38452 + /* Check fabric login completion status */
38453 + /* Note: sometimes ISP returns Status=0x30 and MB0=0x4000 */
38454 + /* Therefore, only check mb0 for now */
38455 + if (/* mbxentry->status == CS_COMPLETE && */
38456 + mbxentry->mb0 == MBS_COMMAND_COMPLETE) {
38458 + /* Login successful */
38459 + ipdev->flags |= IP_DEV_FLAG_PRESENT;
38461 + else if (mbxentry->mb0 == MBS_PORT_ID_IN_USE) {
38462 + /* Different loop ID already assigned to port ID */
38463 + /* Use the one that is already assigned */
38464 + qla2x00_free_loopid(ha, ipdev->loop_id);
38465 + ipdev->loop_id = mbxentry->mb1;
38467 + /* Do logout first and then relogin */
38468 + qla2x00_ip_send_logout_port_iocb(ha, ipdev, 1);
38469 + qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
38471 + else if (mbxentry->mb0 == MBS_LOOP_ID_IN_USE) {
38472 + /* Loop ID already used for different port ID */
38473 + /* Get a new loop ID and reissue login request */
38474 + status = qla2x00_reserve_loopid(ha, &ipdev->loop_id);
38475 + if (status == QL_STATUS_SUCCESS) {
38476 + qla2x00_ip_send_login_port_iocb(ha, ipdev, 1);
38479 + DEBUG12(printk("%s: out of loop IDs\n",
38482 + qla2x00_free_ip_block(ha, ipdev);
38486 + /* Login failed, return resources */
38487 + DEBUG12(printk("%s: fabric login failed\n", __func__);)
38489 + qla2x00_free_loopid(ha, ipdev->loop_id);
38490 + qla2x00_free_ip_block(ha, ipdev);
38497 + * qla2x00_ip_inquiry() - Discover IP-capable adapters.
38498 + * @adapter_num: adapter number to check (instance)
38499 + * @inq_data: return bd_inquiry data of the discovered adapter
38501 + * This routine is called by the IP driver to discover adapters that support IP
38502 + * and to get adapter parameters from the SCSI driver.
38504 + * Returns TRUE if the specified adapter supports IP.
38506 +#if defined (ISP2200)
38508 +qla2200_ip_inquiry(uint16_t adapter_num, struct bd_inquiry *inq_data)
38509 +#elif defined(ISP2300)
38511 +qla2300_ip_inquiry(uint16_t adapter_num, struct bd_inquiry *inq_data)
38515 + struct list_head *hal;
38516 + scsi_qla_host_t *ha;
38518 + /* Verify structure size and version */
38519 + if ((inq_data->length != BDI_LENGTH) ||
38520 + (inq_data->version != BDI_VERSION)) {
38522 + DEBUG12(printk("%s: incompatable structure\n", __func__);)
38526 + /* Find the specified host adapter */
38529 + read_lock(&qla_hostlist_lock);
38530 + list_for_each(hal, &qla_hostlist) {
38531 + ha = list_entry(hal, scsi_qla_host_t, list);
38533 + if (ha->instance == adapter_num) {
38538 + read_unlock(&qla_hostlist_lock);
38541 + if (!ha->flags.online)
38544 + DEBUG12(printk("%s: found adapter %d\n",
38548 + /* Return inquiry data to backdoor IP driver */
38549 + set_bit(BDI_IP_SUPPORT, &inq_data->options);
38550 + if (ha->flags.enable_64bit_addressing)
38551 + set_bit(BDI_64BIT_ADDRESSING, &inq_data->options);
38552 + inq_data->ha = ha;
38553 + inq_data->risc_rec_q = ha->risc_rec_q;
38554 + inq_data->risc_rec_q_size = IP_BUFFER_QUEUE_DEPTH;
38555 + inq_data->link_speed = ha->current_speed;
38556 + memcpy(inq_data->port_name, ha->ip_port_name, WWN_SIZE);
38557 + inq_data->pdev = ha->pdev;
38558 + inq_data->ip_enable_routine = qla2x00_ip_enable;
38559 + inq_data->ip_disable_routine = qla2x00_ip_disable;
38560 + inq_data->ip_add_buffers_routine = qla2x00_add_buffers;
38561 + inq_data->ip_send_packet_routine = qla2x00_send_packet;
38562 + inq_data->ip_tx_timeout_routine = qla2x00_tx_timeout;
38569 + * qla2x00_ip_enable() - Create IP-driver/SCSI-driver IP connection.
38570 + * @ha: SCSI driver HA context
38571 + * @enable_data: bd_enable data describing the IP connection
38573 + * This routine is called by the IP driver to enable an IP connection to the
38574 + * SCSI driver and to pass in IP driver parameters.
38576 + * The HA context is propagated with the specified @enable_data and the
38577 + * Firmware is initialized for IP support.
38579 + * Returns TRUE if the IP connection was successfully enabled.
38582 +qla2x00_ip_enable(scsi_qla_host_t *ha, struct bd_enable *enable_data)
38586 + DEBUG12(printk("%s: enable adapter %d\n", __func__, (int)ha->host_no);)
38590 + /* Verify structure size and version and adapter online */
38591 + if (!(ha->flags.online) ||
38592 + (enable_data->length != BDE_LENGTH) ||
38593 + (enable_data->version != BDE_VERSION)) {
38595 + DEBUG12(printk("%s: incompatable structure or offline\n",
38600 + /* Save parameters from IP driver */
38601 + ha->mtu = enable_data->mtu;
38602 + ha->header_size = enable_data->header_size;
38603 + ha->receive_buffers = enable_data->receive_buffers;
38604 + ha->max_receive_buffers = enable_data->max_receive_buffers;
38605 + ha->receive_buff_data_size = enable_data->receive_buff_data_size;
38606 + if (test_bit(BDE_NOTIFY_ROUTINE, &enable_data->options)) {
38607 + ha->notify_routine = enable_data->notify_routine;
38608 + ha->notify_context = enable_data->notify_context;
38610 + ha->send_completion_routine = enable_data->send_completion_routine;
38611 + ha->receive_packets_routine = enable_data->receive_packets_routine;
38612 + ha->receive_packets_context = enable_data->receive_packets_context;
38614 + /* Enable RISC IP support */
38615 + status = qla2x00_ip_initialize(ha);
38617 + DEBUG12(printk("%s: IP initialization failed", __func__);)
38618 + ha->notify_routine = NULL;
38624 + * qla2x00_ip_disable() - Remove IP-driver/SCSI-driver IP connection.
38625 + * @ha: SCSI driver HA context
38627 + * This routine is called by the IP driver to disable a previously created IP
38630 + * A Firmware call to disable IP support is issued.
38633 +qla2x00_ip_disable(scsi_qla_host_t *ha)
38636 + static mbx_cmd_t mc;
38637 + mbx_cmd_t *mcp = &mc;
38639 + DEBUG12(printk("%s: disable adapter %d\n", __func__, (int)ha->host_no);)
38641 + /* Wait for a ready state from the adapter */
38642 + while (!ha->init_done || ha->dpc_active) {
38643 + set_current_state(TASK_INTERRUPTIBLE);
38644 + schedule_timeout(HZ);
38647 + /* Disable IP support */
38648 + ha->flags.enable_ip = FALSE;
38650 + mcp->mb[0] = MBC_DISABLE_IP;
38651 + mcp->out_mb = MBX_0;
38652 + mcp->in_mb = MBX_0;
38655 + rval = qla2x00_mailbox_command(ha, mcp);
38656 + if (rval == QL_STATUS_SUCCESS) {
38657 + /* IP disabled successful */
38658 + DEBUG12(printk(KERN_INFO
38659 + "%s: successful\n", __func__);)
38662 + DEBUG12(printk(KERN_WARNING
38663 + "%s: MBC_DISABLE_IP failed\n", __func__);)
38666 + /* Reset IP parameters */
38667 + ha->rec_entries_in = 0;
38668 + ha->rec_entries_out = 0;
38669 + ha->notify_routine = NULL;
38673 + * qla2x00_add_buffers() - Adds buffers to the receive buffer queue.
38674 + * @ha: SCSI driver HA context
38675 + * @rec_count: The number of receive buffers to add to the queue
38676 + * @ha_locked: Flag indicating if the function is called with the hardware lock
38678 + * This routine is called by the IP driver to pass new buffers to the receive
38682 +qla2x00_add_buffers(scsi_qla_host_t *ha, uint16_t rec_count, int ha_locked)
38687 + unsigned long flags = 0;
38688 + device_reg_t *reg;
38689 + struct risc_rec_entry *risc_rec_q;
38690 + struct buffer_cb *bcbs;
38693 + risc_rec_q = ha->risc_rec_q;
38694 + rec_in = ha->rec_entries_in;
38695 + bcbs = ha->receive_buffers;
38697 + /* Set RISC owns buffer flag on new entries */
38698 + for (i = 0; i < rec_count; i++) {
38699 + handle = risc_rec_q[rec_in].handle;
38700 + set_bit(BCB_RISC_OWNS_BUFFER, &(bcbs[handle].state));
38701 + if (rec_in < IP_BUFFER_QUEUE_DEPTH - 1)
38707 + /* Update RISC buffer pointer */
38709 + spin_lock_irqsave(&ha->hardware_lock, flags);
38711 + reg = ha->iobase;
38712 + WRT_REG_WORD(®->mailbox8, rec_in);
38713 + ha->rec_entries_in = rec_in;
38716 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38720 + * qla2x00_send_packet() - Transmit a send_cb.
38721 + * @ha: SCSI driver HA context
38722 + * @scb: The send_cb structure to send
38724 + * This routine is called by the IP driver to pass @scb (IP packet) to the ISP
38725 + * for transmission.
38727 + * Returns QL_STATUS_SUCCESS if @scb was sent, QL_STATUS_RESOURCE_ERROR if the
38728 + * RISC was too busy to send, or QL_STATUS_ERROR.
38731 +qla2x00_send_packet(scsi_qla_host_t *ha, struct send_cb *scb)
38737 + unsigned long flags;
38738 + struct ip_cmd_entry *ipcmd_entry;
38739 + struct sk_buff *skb;
38740 + device_reg_t *reg;
38742 + DEBUG12(printk("%s: enter\n", __func__);)
38745 + reg = ha->iobase;
38747 + /* Check adapter state */
38748 + if (!ha->flags.online) {
38749 + return (QL_STATUS_ERROR);
38752 + /* Send marker if required */
38753 + if (ha->marker_needed != 0) {
38754 + if(qla2x00_marker(ha, 0, 0, MK_SYNC_ALL) != QLA2X00_SUCCESS) {
38755 + printk(KERN_WARNING
38756 + "%s: Unable to issue marker.\n",
38758 + return (QL_STATUS_ERROR);
38760 + ha->marker_needed = 0;
38763 + /* Acquire ring specific lock */
38764 + spin_lock_irqsave(&ha->hardware_lock, flags);
38766 + if (ha->req_q_cnt < 4) {
38767 + /* Update number of free request entries */
38768 + cnt = qla2x00_debounce_register(ISP_REQ_Q_OUT(reg));
38769 + if (ha->req_ring_index < cnt)
38770 + ha->req_q_cnt = cnt - ha->req_ring_index;
38772 + ha->req_q_cnt = REQUEST_ENTRY_CNT -
38773 + (ha->req_ring_index - cnt);
38776 + if (ha->req_q_cnt >= 4) {
38777 + /* Get tag handle for command */
38778 + handle = ha->current_scb_q_idx;
38779 + for (i = 0; i < MAX_SEND_PACKETS; i++) {
38781 + if (handle == MAX_SEND_PACKETS)
38783 + if (ha->active_scb_q[handle] == NULL) {
38784 + ha->current_scb_q_idx = handle;
38785 + goto found_handle;
38790 + /* Low on resources, try again later */
38791 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38792 + printk(KERN_WARNING
38793 + "%s: Low on resources, try again later...\n",
38796 + return (QL_STATUS_RESOURCE_ERROR);
38800 + /* Build ISP command packet */
38801 + ipcmd_entry = (struct ip_cmd_entry *)ha->request_ring_ptr;
38803 + /* OPTIMIZATION ??? */
38804 + /* Throughput increases an additional 10 Mbps with the following code */
38805 + *((uint32_t *)(&ipcmd_entry->entry_type)) =
38806 + __constant_cpu_to_le32(ET_IP_COMMAND_64 | (1 << 8));
38807 + //ipcmd_entry->entry_type = ET_IP_COMMAND_64;
38808 + //ipcmd_entry->entry_count = 1;
38809 + //ipcmd_entry->sys_define = 0;
38810 + //ipcmd_entry->entry_status = 0;
38812 + ipcmd_entry->handle = handle;
38813 + ipcmd_entry->reserved_1 = 0;
38815 + /* Get destination loop ID for packet */
38816 + if (!qla2x00_get_ip_loopid(ha, scb->header, &ipcmd_entry->loop_id)) {
38817 + /* Failed to get loop ID, convert packet to ARP */
38818 + if (qla2x00_convert_to_arp(ha, scb)) {
38819 + /* Broadcast ARP */
38820 + ipcmd_entry->loop_id = BROADCAST;
38823 + /* Return packet */
38824 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38825 + printk(KERN_WARNING
38826 + "%s: Unable to determine loop id for "
38827 + "destination.\n",
38829 + return (QL_STATUS_ERROR);
38833 + /* Default five second firmware timeout */
38834 + ipcmd_entry->timeout = __constant_cpu_to_le16(5);
38835 + ipcmd_entry->control_flags = __constant_cpu_to_le16(CF_WRITE);
38836 + ipcmd_entry->reserved_2 = 0;
38837 + ipcmd_entry->service_class = __constant_cpu_to_le16(0);
38839 + ipcmd_entry->data_seg_count = __constant_cpu_to_le16(2);
38840 + ipcmd_entry->ds.data_segs64[0].address[0] =
38841 + cpu_to_le32(LSD(scb->header_dma));
38842 + ipcmd_entry->ds.data_segs64[0].address[1] =
38843 + cpu_to_le32(MSD(scb->header_dma));
38844 + ipcmd_entry->ds.data_segs64[0].length =
38845 + __constant_cpu_to_le32(sizeof(struct packet_header));
38846 + scb->skb_data_dma = pci_map_single(ha->pdev,
38847 + skb->data, skb->len,
38848 + PCI_DMA_TODEVICE);
38849 + ipcmd_entry->ds.data_segs64[1].address[0] =
38850 + cpu_to_le32(LSD(scb->skb_data_dma));
38851 + ipcmd_entry->ds.data_segs64[1].address[1] =
38852 + cpu_to_le32(MSD(scb->skb_data_dma));
38853 + ipcmd_entry->ds.data_segs64[1].length = cpu_to_le32(skb->len);
38855 + ipcmd_entry->byte_count =
38856 + cpu_to_le32(skb->len + sizeof(struct packet_header));
38858 + /* Adjust ring index. */
38859 + ha->req_ring_index++;
38860 + if (ha->req_ring_index == REQUEST_ENTRY_CNT) {
38861 + ha->req_ring_index = 0;
38862 + ha->request_ring_ptr = ha->request_ring;
38864 + ha->request_ring_ptr++;
38868 + ha->active_scb_q[handle] = scb;
38870 + /* Set chip new ring index. */
38871 + temp = CACHE_FLUSH(ISP_REQ_Q_IN(reg));
38872 + WRT_REG_WORD(ISP_REQ_Q_IN(reg), ha->req_ring_index);
38874 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
38876 + return (QL_STATUS_SUCCESS);
38880 + * qla2x00_tx_timeout() - Handle transmission timeout.
38881 + * @ha: SCSI driver HA context
38883 + * This routine is called by the IP driver to handle packet transmission
38886 + * Returns QL_STATUS_SUCCESS if timeout handling completed successfully.
38889 +qla2x00_tx_timeout(scsi_qla_host_t *ha)
38891 + /* TODO: complete interface */
38893 + /* Reset RISC firmware for basic recovery */
38894 + printk(KERN_WARNING
38895 + "%s: A transmission timeout occured - aborting ISP\n",
38897 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
38899 + return (QL_STATUS_SUCCESS);
38901 --- /dev/null Thu Apr 11 07:25:15 2002
38902 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_ip.h Thu Jul 3 15:34:42 2003
38904 +/******************************************************************************
38905 + * QLOGIC LINUX SOFTWARE
38907 + * QLogic ISP2x00 IP network driver for Linux 2.5.x
38908 + * Copyright (C) 2003 Qlogic Corporation
38909 + * (www.qlogic.com)
38911 + * This program is free software; you can redistribute it and/or modify it
38912 + * under the terms of the GNU General Public License as published by the
38913 + * Free Software Foundation; either version 2, or (at your option) any
38916 + * This program is distributed in the hope that it will be useful, but
38917 + * WITHOUT ANY WARRANTY; without even the implied warranty of
38918 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
38919 + * General Public License for more details.
38921 + ******************************************************************************/
38923 +/****************************************************************************
38924 + Please see revision.notes for revision history.
38925 +*****************************************************************************/
38927 +#if !defined(_QLA_IP_H_)
38928 +#define _QLA_IP_H_
38930 +#define MAX_SEND_PACKETS 32 /* Maximum # send packets */
38931 +#define MAX_RECEIVE_BUFFERS 64 /* Maximum # receive buffers */
38932 +#define MIN_RECEIVE_BUFFERS 8 /* Minimum # receive buffers */
38933 +#define IP_BUFFER_QUEUE_DEPTH (MAX_RECEIVE_BUFFERS+1)
38935 +/* Async notification types */
38936 +#define NOTIFY_EVENT_LINK_DOWN 1 /* Link went down */
38937 +#define NOTIFY_EVENT_LINK_UP 2 /* Link is back up */
38938 +#define NOTIFY_EVENT_RESET_DETECTED 3 /* Reset detected */
38940 +/* QLogic subroutine status definitions */
38941 +#define QL_STATUS_SUCCESS 0
38942 +#define QL_STATUS_ERROR 1
38943 +#define QL_STATUS_FATAL_ERROR 2
38944 +#define QL_STATUS_RESOURCE_ERROR 3
38945 +#define QL_STATUS_LOOP_ID_IN_USE 4
38946 +#define QL_STATUS_NO_DATA 5
38948 +/************************************************************************/
38949 +/* RFC 2625 -- networking structure definitions */
38950 +/************************************************************************/
38952 +/* Network header definitions */
38953 +struct network_address
38955 +#if defined(__LITTLE_ENDIAN_BITFIELD)
38958 +#elif defined (__BIG_ENDIAN_BITFIELD)
38962 +#error "Please fix <asm/byteorder.h>"
38965 +#define NAA_IEEE_MAC_TYPE 1 /* NAA code - IEEE MAC addr */
38970 +struct network_header
38974 + struct network_address na;
38980 + struct network_address na;
38985 +/* SNAP header definitions */
38986 +/* from linux/if_fc.h */
38987 +struct snap_header
38989 + __u8 dsap; /* destination SAP */
38990 + __u8 ssap; /* source SAP */
38991 +#define LLC_SAP_IEEE_802DOT2 0xAA /* LLC SAP code - IEEE 802.2 */
38993 + __u8 llc; /* LLC control field */
38994 +#define LLC_CONTROL 0x03 /* LLC control code */
38996 + __u8 protid[3]; /* protocol id */
38997 +#define SNAP_OUI 0x00 /* SNAP OUI code */
38999 + __u16 ethertype; /* ether type field */
39002 +/* Packet header definitions */
39003 +struct packet_header
39005 + struct network_header networkh;
39006 + struct snap_header snaph;
39009 +/* ARP header definitions */
39010 +/* from linux/if_arp.h */
39013 + struct arphdr arph;
39014 + __u8 ar_sha[ETH_ALEN]; /* sender hardware address */
39015 + __u32 ar_sip; /* sender IP address */
39016 + __u8 ar_tha[ETH_ALEN]; /* target hardware address */
39017 + __u32 ar_tip; /* target IP address */
39020 +/* IP header definitions */
39023 + struct iphdr iph;
39024 + __u32 options; /* IP packet options */
39028 +/************************************************************************/
39029 +/* Support structures. */
39030 +/************************************************************************/
39032 +/* Definitions for IP support */
39033 +#define LOOP_ID_MASK 0x00FF
39034 +#define PLE_NOT_SCSI_DEVICE 0x8000 /* Upper bit of loop ID set */
39035 + /* if not SCSI */
39037 +/* Receive buffer control block definitions */
39040 + uint16_t handle; /* ISP buffer handle */
39041 + uint16_t comp_status; /* completion status from FW */
39043 + uint32_t state; /* Buffer CB state */
39044 +#define BCB_RISC_OWNS_BUFFER 1
39046 + struct sk_buff *skb; /* Socket buffer */
39047 + uint8_t *skb_data; /* Socket buffer data */
39048 + dma_addr_t skb_data_dma; /* SKB data physical address */
39049 + uint32_t rec_data_size; /* Size of received data */
39050 + uint32_t packet_size; /* Size of packet received */
39052 + uint16_t linked_bcb_cnt; /* # of linked CBs for packet */
39053 + uint16_t unused2;
39054 + struct buffer_cb *next_bcb; /* Next buffer CB */
39057 +/* Send control block definitions */
39060 + uint16_t comp_status; /* completion status from FW */
39061 +#define SCB_CS_COMPLETE 0x0
39062 +#define SCB_CS_INCOMPLETE 0x1
39063 +#define SCB_CS_RESET 0x4
39064 +#define SCB_CS_ABORTED 0x5
39065 +#define SCB_CS_TIMEOUT 0x6
39066 +#define SCB_CS_PORT_UNAVAILABLE 0x28
39067 +#define SCB_CS_PORT_LOGGED_OUT 0x29
39068 +#define SCB_CS_PORT_CONFIG_CHG 0x2A
39069 +#define SCB_CS_FW_RESOURCE_UNAVAILABLE 0x2C
39071 + uint16_t unused1;
39073 + void *qdev; /* netdev private structure */
39075 + struct packet_header *header; /* Network and SNAP headers */
39076 + dma_addr_t header_dma; /* Header physical address */
39078 + struct sk_buff *skb; /* socket buffer to send */
39079 + dma_addr_t skb_data_dma; /* skb data physical address */
39082 +/* IP device data structure */
39083 +#define QLLAN_MAX_IP_DEVICES 64 /* Maximum number of IP devices */
39088 + uint16_t unused1;
39091 +#define IP_DEV_FLAG_PRESENT 0x00000001
39092 +#define IP_DEV_FLAG_PUBLIC_DEVICE 0x00000002
39094 + uint16_t loop_id;
39095 +#define PUBLIC_LOOP_DEVICE ((uint16_t)-1)
39097 + uint16_t unused2;
39098 + uint8_t port_id[3];
39100 + uint8_t port_name[8];
39102 + struct ip_device *next;
39103 + struct ip_device *last;
39106 +/************************************************************************/
39107 +/* Definitions for Backdoor Inquiry. */
39108 +/************************************************************************/
39112 + uint16_t length; /* Length of structure */
39113 +#define BDI_LENGTH sizeof(struct bd_inquiry)
39115 + uint16_t version; /* Structure version number */
39116 +/* NOTE: Update this value anytime the structure changes */
39117 +#define BDI_VERSION 2
39120 + uint32_t options; /* supported options */
39121 +#define BDI_IP_SUPPORT 1 /* IP supported */
39122 +#define BDI_64BIT_ADDRESSING 2 /* 64bit address supported */
39124 + void *ha; /* Driver ha pointer */
39125 + void *risc_rec_q; /* RISC receive queue */
39126 + uint16_t risc_rec_q_size; /* size */
39128 + uint16_t link_speed; /* Current link speed */
39129 +#define BDI_1GBIT_PORTSPEED 1 /* operating at 1GBIT */
39130 +#define BDI_2GBIT_PORTSPEED 2 /* operating at 2GBIT */
39131 +#define BDI_10GBIT_PORTSPEED 4 /* operating at 10GBIT */
39133 + uint8_t port_name[8]; /* Adapter port name */
39135 + struct pci_dev *pdev; /* PCI device information */
39137 + /* Pointers to SCSI-backdoor callbacks */
39138 + void *ip_enable_routine;
39139 + void *ip_disable_routine;
39140 + void *ip_add_buffers_routine;
39141 + void *ip_send_packet_routine;
39142 + void *ip_tx_timeout_routine;
39144 + uint32_t unused2[9];
39147 +/************************************************************************/
39148 +/* Definitions for Backdoor Enable. */
39149 +/************************************************************************/
39153 + uint16_t length; /* Length of structure */
39154 +#define BDE_LENGTH sizeof(struct bd_enable)
39156 + uint16_t version; /* Structure version number */
39157 +/* NOTE: Update this value anytime the structure changes */
39158 +#define BDE_VERSION 2
39161 + uint32_t options; /* supported options */
39162 +#define BDE_NOTIFY_ROUTINE 1 /* notify routine imported */
39164 + uint32_t mtu; /* maximum transfer size */
39165 + uint16_t header_size; /* split header size */
39166 + uint16_t unused1;
39168 + void *receive_buffers; /* receive buffers array */
39169 + uint16_t max_receive_buffers; /* max # receive buffers */
39170 + uint16_t unused2;
39171 + uint32_t receive_buff_data_size; /* buffer size */
39173 + /* Pointers to IP-backdoor callbacks */
39174 + void *notify_routine;
39175 + void *notify_context;
39176 + void *send_completion_routine;
39177 + void *receive_packets_routine;
39178 + void *receive_packets_context;
39180 + uint32_t unused3[9];
39184 +/************************************************************************/
39185 +/* RISC interface structures */
39186 +/************************************************************************/
39188 +/* IP mailbox commands */
39189 +#define MBC_INITIALIZE_IP 0x0077
39190 +#define MBC_DISABLE_IP 0x0079
39192 +/* IP async events */
39193 +#define MBA_IP_TRANSMIT_COMPLETE 0x8022
39194 +#define MBA_IP_RECEIVE_COMPLETE 0x8023
39195 +#define MBA_IP_BROADCAST_RECEIVED 0x8024
39196 +#define MBA_IP_RECEIVE_BUFFERS_LOW 0x8025
39197 +#define MBA_IP_OUT_OF_BUFFERS 0x8026
39198 +#define MBA_IP_RECEIVE_COMPLETE_SPLIT 0x8027
39200 +/* IP fast post completions for 2300 */
39201 +#define RHS_IP_SEND_COMPLETE 0x18
39202 +#define RHS_IP_RECV_COMPLETE 0x19
39203 +#define RHS_IP_RECV_DA_COMPLETE 0x1B
39205 +/* RISC IP receive buffer queue entry structure */
39206 +struct risc_rec_entry
39208 + uint32_t data_addr_low;
39209 + uint32_t data_addr_high;
39214 +/* Firmware IP initialization control block definitions */
39218 +#define IPICB_VERSION 0x01
39220 + uint8_t reserved_1;
39222 + uint16_t firmware_options;
39223 +#define IPICB_OPTION_64BIT_ADDRESSING 0x0001
39224 +#define IPICB_OPTION_NO_BROADCAST_FASTPOST 0x0002
39225 +#define IPICB_OPTION_OUT_OF_BUFFERS_EVENT 0x0004
39227 + uint16_t header_size;
39229 + uint16_t receive_buffer_size;
39230 + uint16_t reserved_2;
39231 + uint16_t reserved_3;
39232 + uint16_t reserved_4;
39233 + uint16_t reserved_5;
39235 + uint16_t receive_queue_size;
39236 + uint16_t low_water_mark;
39237 +#define IPICB_LOW_WATER_MARK 0
39239 + uint16_t receive_queue_addr[4];
39240 + uint16_t receive_queue_in;
39241 + uint16_t fast_post_count;
39242 +#define IPICB_FAST_POST_COUNT 4
39244 + uint16_t container_count;
39245 +#define IPICB_BUFFER_CONTAINER_COUNT 64
39247 + uint16_t resource_allocation;
39248 +#define IPICB_IOCB_RESERVE_COUNT 250
39252 +/* IP IOCB types */
39254 +/* Data segment descriptor structures */
39257 + uint32_t address;
39261 +struct data_seg_a64
39263 + uint32_t address[2];
39267 +/* IP Command IOCB structure */
39268 +struct ip_cmd_entry
39270 + uint8_t entry_type;
39271 +#define ET_IP_COMMAND_32 0x13
39272 +#define ET_IP_COMMAND_64 0x1B
39274 + uint8_t entry_count;
39275 + uint8_t sys_define;
39276 + uint8_t entry_status;
39279 + uint8_t reserved_1;
39281 + uint16_t comp_status;
39282 + uint16_t control_flags;
39283 + uint16_t reserved_2;
39284 + uint16_t timeout;
39285 + uint16_t data_seg_count;
39286 + uint16_t service_class;
39287 + uint16_t reserved_3[7];
39288 + uint32_t byte_count;
39291 + struct data_seg data_segs[3];
39292 + struct data_seg_a64 data_segs64[2];
39296 +/* IP Receive IOCB structure */
39297 +#define ET_IP_RECEIVE_CONTINUATION 0x2B
39299 +struct ip_rec_entry
39301 + uint8_t entry_type;
39302 +#define ET_IP_RECEIVE 0x23
39304 + uint8_t entry_count;
39305 + uint8_t segment_count;
39306 + uint8_t entry_status;
39308 + uint16_t s_idlow;
39309 + uint8_t s_idhigh;
39310 + uint8_t reserved_1;
39311 + uint8_t reserved_2;
39313 + uint16_t comp_status;
39314 +#define IPREC_STATUS_SPLIT_BUFFER 0x0001
39316 + uint16_t service_class;
39317 + uint16_t sequence_length;
39319 +#define IPREC_MAX_HANDLES 24
39320 + uint16_t buffer_handles[IPREC_MAX_HANDLES];
39323 +#endif /* _QLA_IP_H_ */
39324 --- /dev/null Thu Apr 11 07:25:15 2002
39325 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_isr.c Thu Jul 3 15:34:42 2003
39328 + * QLOGIC LINUX SOFTWARE
39330 + * QLogic ISP2x00 device driver for Linux 2.5.x
39331 + * Copyright (C) 2003 Qlogic Corporation
39332 + * (www.qlogic.com)
39334 + * This program is free software; you can redistribute it and/or modify it
39335 + * under the terms of the GNU General Public License as published by the
39336 + * Free Software Foundation; either version 2, or (at your option) any
39339 + * This program is distributed in the hope that it will be useful, but
39340 + * WITHOUT ANY WARRANTY; without even the implied warranty of
39341 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
39342 + * General Public License for more details.
39346 +#include "qla_os.h"
39348 +#include "qla_def.h"
39350 +static void qla2x00_mbx_completion(scsi_qla_host_t *, uint16_t);
39351 +static void qla2x00_async_event(scsi_qla_host_t *, uint32_t);
39352 +static void qla2x00_process_completed_request(struct scsi_qla_host *, int);
39353 +static void qla2x00_response_pkt(scsi_qla_host_t *, uint16_t);
39354 +static void qla2x00_status_entry(scsi_qla_host_t *, sts_entry_t *);
39355 +static void qla2x00_status_cont_entry(scsi_qla_host_t *, sts_cont_entry_t *);
39356 +static void qla2x00_error_entry(scsi_qla_host_t *, response_t *);
39357 +static void qla2x00_ms_entry(scsi_qla_host_t *, ms_iocb_entry_t *);
39359 +static int qla2x00_check_sense(Scsi_Cmnd *cp, os_lun_t *);
39362 + * qla2x00_intr_handler() - Process interrupts for the ISP.
39364 + * @dev_id: SCSI driver HA context
39367 + * Called by system whenever the host adapter generates an interrupt.
39369 + * Returns handled flag.
39372 +qla2x00_intr_handler(int irq, void *dev_id, struct pt_regs *regs)
39374 + scsi_qla_host_t *ha;
39375 + device_reg_t *reg;
39379 + unsigned long flags = 0;
39380 + unsigned long mbx_flags = 0;
39381 + unsigned long intr_iter;
39383 + /* Don't loop forever, interrupt are OFF */
39386 + ha = (scsi_qla_host_t *) dev_id;
39389 + "%s(): NULL host pointer\n", __func__);
39390 + return (IRQ_NONE);
39393 + reg = ha->iobase;
39395 + spin_lock_irqsave(&ha->hardware_lock, flags);
39399 + if (!(intr_iter--))
39402 +#if defined(ISP2100) || defined(ISP2200)
39403 + if ((RD_REG_WORD(®->istatus) & ISR_RISC_INT) == 0) {
39407 + if (RD_REG_WORD(®->semaphore) & BIT_0) {
39408 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
39410 + /* Get mailbox data. */
39411 + mbx = RD_REG_WORD(®->mailbox0);
39412 + if (mbx > 0x3fff && mbx < 0x8000) {
39413 + qla2x00_mbx_completion(ha, (uint16_t)mbx);
39414 + status |= MBX_INTERRUPT;
39415 + } else if (mbx > 0x7fff && mbx < 0xc000) {
39416 + qla2x00_async_event(ha, mbx);
39419 + DEBUG2(printk("scsi(%ld): Unrecognized "
39420 + "interrupt type (%d)\n",
39421 + ha->host_no, mbx));
39423 + /* Release mailbox registers. */
39424 + WRT_REG_WORD(®->semaphore, 0);
39426 + stat = RD_REG_WORD(®->mailbox5);
39427 + qla2x00_response_pkt(ha, stat);
39429 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
39432 +#else /* ISP2300 */
39433 + if ((ha->pdev->device == QLA2312_DEVICE_ID ||
39434 + ha->pdev->device == QLA2322_DEVICE_ID) &&
39435 + (RD_REG_WORD(®->istatus) & ISR_RISC_INT) == 0) {
39439 + stat = RD_REG_WORD(®->host_status_lo);
39440 + if ((stat & HSR_INT) == 0) {
39443 + if (stat & HSR_RISC_PAUSED) {
39446 + hccr = RD_REG_WORD(®->hccr);
39448 + "scsi(%ld): RISC paused, dumping HCCR (%x)\n",
39453 + * Issue a "HARD" reset in order for the RISC interrupt
39454 + * bit to be cleared. Schedule a big hammmer to get
39455 + * out of the RISC PAUSED state.
39457 + WRT_REG_WORD(®->hccr, HCCR_RESET_RISC);
39458 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39461 + mbx = RD_REG_WORD(®->host_status_hi);
39462 + switch (stat & 0xff) {
39467 + qla2x00_mbx_completion(ha, (uint16_t)mbx);
39468 + status |= MBX_INTERRUPT;
39470 + /* Release mailbox registers. */
39471 + WRT_REG_WORD(®->semaphore, 0);
39474 + qla2x00_async_event(ha, mbx);
39477 + qla2x00_response_pkt(ha, (uint16_t)mbx);
39480 + mbx = mbx << 16 | MBA_SCSI_COMPLETION;
39481 + qla2x00_async_event(ha, mbx);
39483 +#if defined(FC_IP_SUPPORT)
39485 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
39486 + qla2x00_ip_send_complete(ha, mbx, CS_COMPLETE);
39490 + qla2x00_ip_receive_fastpost(ha,
39491 + MBA_IP_RECEIVE_COMPLETE);
39494 + qla2x00_ip_receive_fastpost(ha,
39495 + MBA_IP_RECEIVE_COMPLETE_SPLIT);
39499 + DEBUG2(printk("scsi(%ld): Unrecognized interrupt type "
39501 + ha->host_no, stat & 0xff));
39505 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
39509 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
39511 + ha->total_isr_cnt++;
39513 + if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags) &&
39514 + (status & MBX_INTERRUPT) && ha->flags.mbox_int) {
39516 + /* There was a mailbox completion */
39517 + DEBUG3(printk("%s(%ld): Going to get mbx reg lock.\n",
39518 + __func__, ha->host_no));
39520 + QLA_MBX_REG_LOCK(ha);
39522 + MBOX_TRACE(ha, BIT_5);
39523 + if (ha->mcp == NULL) {
39524 + DEBUG3(printk("%s(%ld): Error mbx pointer.\n",
39525 + __func__, ha->host_no));
39527 + DEBUG3(printk("%s(%ld): Going to set mbx intr flags. "
39529 + __func__, ha->host_no, ha->mcp->mb[0]));
39531 + set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
39533 + DEBUG3(printk("%s(%ld): Going to wake up mbx function for "
39535 + __func__, ha->host_no));
39537 + MBOX_TRACE(ha,BIT_6);
39538 + up(&ha->mbx_intr_sem);
39540 + DEBUG3(printk("%s(%ld): Going to release mbx reg lock.\n",
39541 + __func__, ha->host_no));
39542 + QLA_MBX_REG_UNLOCK(ha);
39545 + if (!list_empty(&ha->done_queue))
39546 + schedule_work(&ha->run_qla_task);
39548 + /* Wakeup the DPC routine */
39549 + if ((!ha->flags.mbox_busy &&
39550 + (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) ||
39551 + test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) ||
39552 + test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))) &&
39553 + ha->dpc_wait && !ha->dpc_active) {
39555 + up(ha->dpc_wait);
39558 + return (IRQ_HANDLED);
39562 + * qla2x00_mbx_completion() - Process mailbox command completions.
39563 + * @ha: SCSI driver HA context
39564 + * @mb0: Mailbox0 register
39567 +qla2x00_mbx_completion(scsi_qla_host_t *ha, uint16_t mb0)
39571 + device_reg_t *reg = ha->iobase;
39575 + /* Load return mailbox registers. */
39576 + ha->flags.mbox_int = TRUE;
39577 + ha->mailbox_out[0] = mb0;
39578 + wptr = (uint16_t *)®->mailbox1;
39580 + for (cnt = 1; cnt < MAILBOX_REGISTER_COUNT; cnt++) {
39581 +#if defined(ISP2200)
39583 + wptr = (uint16_t *)®->mailbox8;
39585 + if (cnt == 4 || cnt == 5)
39586 + ha->mailbox_out[cnt] = qla2x00_debounce_register(wptr);
39588 + ha->mailbox_out[cnt] = RD_REG_WORD(wptr);
39594 + DEBUG3(printk("%s(%ld): Got mailbox completion. cmd=%x.\n",
39595 + __func__, ha->host_no, ha->mcp->mb[0]));
39597 + DEBUG2_3(printk("%s(%ld): MBX pointer ERROR!\n",
39598 + __func__, ha->host_no));
39605 + * qla2x00_async_event() - Process aynchronous events.
39606 + * @ha: SCSI driver HA context
39607 + * @mb0: Mailbox0 register
39610 +qla2x00_async_event(scsi_qla_host_t *ha, uint32_t mbx)
39614 + device_reg_t *reg = ha->iobase;
39615 + uint8_t rscn_queue_index;
39619 + /* Setup to process completions */
39620 + mb[0] = LSW(mbx);
39622 + case MBA_SCSI_COMPLETION: /* Fast Post */
39623 +#if defined(ISP2100) || defined(ISP2200)
39624 + mb[1] = RD_REG_WORD(®->mailbox1);
39626 + mb[1] = MSW(mbx);
39628 + mb[2] = RD_REG_WORD(®->mailbox2);
39630 + DEBUG5(printk("%s(): mailbox response completion.\n",
39633 + if (!ha->flags.online)
39636 + /* Get outstanding command index */
39637 + index = (uint32_t)(mb[2] << 16 | mb[1]);
39638 + qla2x00_process_completed_request(ha, index);
39641 +#if defined(FC_IP_SUPPORT)
39642 + case MBA_IP_TRANSMIT_COMPLETE: /* IP Completion */
39643 + mb[1] = RD_REG_WORD(®->mailbox1);
39645 + qla2x00_ip_send_complete(ha, mb[1], CS_COMPLETE);
39648 + case MBA_IP__RECEIVE_COMPLETE:
39649 + case MBA_IP_RECEIVE_COMPLETE_SPLIT:
39650 + qla2x00_ip_receive_fastpost(ha, mb[0]);
39652 +#endif /* FC_IP_SUPPORT */
39654 + case MBA_RESET: /* Reset */
39655 + DEBUG2(printk("scsi(%ld): Asynchronous RESET.\n", ha->host_no));
39657 + set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
39660 + case MBA_SYSTEM_ERR: /* System Error */
39661 + mb[1] = RD_REG_WORD(®->mailbox1);
39662 + mb[2] = RD_REG_WORD(®->mailbox2);
39663 + mb[3] = RD_REG_WORD(®->mailbox3);
39666 + "scsi(%ld): ISP System Error - mbx1=%xh mbx2=%xh "
39668 + ha->host_no, mb[1], mb[2], mb[3]);
39670 + qla2x00_dump_isp(ha, 1);
39672 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39675 + case MBA_REQ_TRANSFER_ERR: /* Request Transfer Error */
39676 + DEBUG2(printk("scsi(%ld): ISP Request Transfer Error.\n",
39678 + printk(KERN_WARNING
39679 + "scsi(%ld): ISP Request Transfer Error.\n", ha->host_no);
39681 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39684 + case MBA_RSP_TRANSFER_ERR: /* Response Transfer Error */
39685 + DEBUG2(printk("scsi(%ld): ISP Response Transfer Error.\n",
39687 + printk(KERN_WARNING
39688 + "scsi(%ld): ISP Response Transfer Error.\n", ha->host_no);
39690 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39693 + case MBA_WAKEUP_THRES: /* Request Queue Wake-up */
39694 + DEBUG2(printk("scsi(%ld): Asynchronous WAKEUP_THRES.\n",
39698 + case MBA_LIP_OCCURRED: /* Loop Initialization Procedure */
39699 + mb[1] = RD_REG_WORD(®->mailbox1);
39701 + DEBUG2(printk("scsi(%ld): Asynchronous LIP Occured.\n",
39704 + "scsi(%ld): Asynchronous LIP Occured.\n", ha->host_no);
39706 + /* Save LIP sequence. */
39707 + ha->lip_seq = mb[1];
39708 + if (ha->loop_state != LOOP_DOWN) {
39709 + ha->loop_state = LOOP_DOWN;
39710 + atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
39711 + qla2x00_mark_all_devices_lost(ha);
39714 + set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
39715 + set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
39717 + ha->flags.management_server_logged_in = 0;
39719 + /* Update AEN queue. */
39720 + if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39721 + qla2x00_enqueue_aen(ha, MBA_LIP_OCCURRED, NULL);
39724 + ha->total_lip_cnt++;
39727 + case MBA_LOOP_UP: /* Loop Up Event */
39728 + mb[1] = RD_REG_WORD(®->mailbox1);
39730 + DEBUG2(printk("scsi(%ld): Asynchronous LOOP UP.\n",
39733 + "scsi(%ld): LOOP UP detected.\n", ha->host_no);
39735 + ha->flags.management_server_logged_in = 0;
39737 + /* Update AEN queue. */
39738 + if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39739 + qla2x00_enqueue_aen(ha, MBA_LOOP_UP, NULL);
39742 + /* Save the current speed for use by ioctl and IP driver */
39743 + ha->current_speed = EXT_DEF_PORTSPEED_1GBIT;
39744 +#if defined(ISP2300)
39746 + ha->current_speed = EXT_DEF_PORTSPEED_2GBIT;
39750 + case MBA_LOOP_DOWN: /* Loop Down Event */
39751 + DEBUG2(printk("scsi(%ld): Asynchronous LOOP DOWN.\n",
39754 + "scsi(%ld): LOOP DOWN detected.\n", ha->host_no);
39756 + if (ha->loop_state != LOOP_DOWN) {
39757 + ha->loop_state = LOOP_DOWN;
39758 + atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
39759 + qla2x00_mark_all_devices_lost(ha);
39762 + ha->flags.management_server_logged_in = 0;
39763 + ha->current_speed = 0; /* reset value */
39765 + /* Update AEN queue. */
39766 + if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39767 + qla2x00_enqueue_aen(ha, MBA_LOOP_DOWN, NULL);
39771 + case MBA_LIP_RESET: /* LIP reset occurred */
39772 + DEBUG2(printk("scsi(%ld): Asynchronous LIP RESET.\n",
39775 + "scsi(%ld): LIP reset occured.\n", ha->host_no);
39777 + if (ha->loop_state != LOOP_DOWN) {
39778 + ha->loop_state = LOOP_DOWN;
39779 + atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
39780 + qla2x00_mark_all_devices_lost(ha);
39783 + set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
39784 + set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
39786 + ha->operating_mode = LOOP;
39787 + ha->flags.management_server_logged_in = 0;
39789 + /* Update AEN queue. */
39790 + if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39791 + qla2x00_enqueue_aen(ha, MBA_LIP_RESET, NULL);
39794 + ha->total_lip_cnt++;
39797 +#if !defined(ISP2100)
39798 + case MBA_LINK_MODE_UP: /* Link mode up. */
39799 + DEBUG2(printk("scsi(%ld): Asynchronous LINK MODE UP.\n",
39802 + "scsi(%ld): Link mode is up.\n",
39806 + * Until there's a transition from loop down to loop up, treat
39807 + * this as loop down only.
39809 + if (ha->loop_state != LOOP_DOWN) {
39810 + ha->loop_state = LOOP_DOWN;
39811 + if (!atomic_read(&ha->loop_down_timer))
39812 + atomic_set(&ha->loop_down_timer,
39814 + qla2x00_mark_all_devices_lost(ha);
39817 + if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags))) {
39818 + set_bit(COMMAND_WAIT_NEEDED, &ha->dpc_flags);
39819 + set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
39821 + set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
39824 + case MBA_UPDATE_CONFIG: /* Update Configuration. */
39825 + mb[1] = RD_REG_WORD(®->mailbox1);
39827 + DEBUG2(printk("scsi(%ld): Asynchronous UPDATE CONFIG.\n",
39830 + "scsi(%ld): Configuration change detected: value=%x.\n",
39831 + ha->host_no, mb[1]);
39833 + if (ha->loop_state != LOOP_DOWN) {
39834 + ha->loop_state = LOOP_DOWN;
39835 + if (!atomic_read(&ha->loop_down_timer))
39836 + atomic_set(&ha->loop_down_timer,
39838 + qla2x00_mark_all_devices_lost(ha);
39841 + set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
39842 + set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
39844 +#endif /* #if !defined(ISP2100) */
39846 + case MBA_PORT_UPDATE: /* Port database update */
39848 + * If PORT UPDATE is global (recieved LIP_OCCURED/LIP_RESET
39849 + * event etc. earlier indicating loop is down) then process
39850 + * it. Otherwise ignore it and Wait for RSCN to come in.
39852 + if (ha->loop_state != LOOP_DOWN) {
39853 + DEBUG2(printk("scsi(%ld): Asynchronous PORT UPDATE "
39854 + "ignored.\n", ha->host_no));
39856 + "scsi(%ld): Asynchronous PORT UPDATE ignored.\n",
39861 + DEBUG2(printk("scsi(%ld): Asynchronous PORT UPDATE.\n",
39864 + "scsi(%ld): Port database changed.\n", ha->host_no);
39867 + * Mark all devices as missing so we will login again.
39869 + ha->loop_state = LOOP_UP;
39871 + atomic_set(&ha->loop_down_timer, 0);
39872 + qla2x00_mark_all_devices_lost(ha);
39874 + ha->flags.rscn_queue_overflow = 1;
39876 + set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
39877 + set_bit(LOCAL_LOOP_UPDATE, &ha->dpc_flags);
39879 + /* Update AEN queue. */
39880 + if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39881 + qla2x00_enqueue_aen(ha, MBA_PORT_UPDATE, NULL);
39885 + case MBA_SCR_UPDATE: /* State Change Registration */
39886 + mb[1] = RD_REG_WORD(®->mailbox1);
39887 + mb[2] = RD_REG_WORD(®->mailbox2);
39889 + DEBUG2(printk("scsi(%ld): Asynchronous RSCR UPDATE.\n",
39891 + DEBUG(printk(KERN_INFO
39892 + "scsi(%ld): RSCN database changed - 0x%x, 0x%x.\n",
39893 + ha->host_no, mb[1], mb[2]));
39895 + rscn_queue_index = ha->rscn_in_ptr + 1;
39896 + if (rscn_queue_index == MAX_RSCN_COUNT)
39897 + rscn_queue_index = 0;
39898 + if (rscn_queue_index != ha->rscn_out_ptr) {
39899 + ha->rscn_queue[ha->rscn_in_ptr].format =
39901 + ha->rscn_queue[ha->rscn_in_ptr].d_id.b.domain =
39903 + ha->rscn_queue[ha->rscn_in_ptr].d_id.b.area =
39905 + ha->rscn_queue[ha->rscn_in_ptr].d_id.b.al_pa =
39907 + ha->rscn_in_ptr = rscn_queue_index;
39909 + ha->flags.rscn_queue_overflow = 1;
39912 + ha->loop_state = LOOP_UPDATE;
39913 + atomic_set(&ha->loop_down_timer, 0);
39914 + ha->flags.management_server_logged_in = 0;
39916 + set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
39917 + set_bit(RSCN_UPDATE, &ha->dpc_flags);
39919 + /* Update AEN queue. */
39920 + if (ha->ioctl->flags & IOCTL_AEN_TRACKING_ENABLE) {
39921 + qla2x00_enqueue_aen(ha, MBA_RSCN_UPDATE, &mb[0]);
39928 + * qla2x00_process_completed_request() - Process a Fast Post response.
39929 + * @ha: SCSI driver HA context
39930 + * @index: SRB index
39933 +qla2x00_process_completed_request(struct scsi_qla_host *ha, int index)
39936 + struct scsi_qla_host *vis_ha;
39940 + /* Validate handle. */
39941 + if (index >= MAX_OUTSTANDING_COMMANDS) {
39942 + DEBUG2(printk("scsi(%ld): Invalid SCSI completion handle %d.\n",
39943 + ha->host_no, index));
39944 + printk(KERN_WARNING
39945 + "scsi(%ld): Invalid SCSI completion handle %d.\n",
39946 + ha->host_no, index);
39948 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39952 + sp = ha->outstanding_cmds[index];
39954 + /* Free outstanding command slot. */
39955 + ha->outstanding_cmds[index] = 0;
39956 +#if defined(IOCB_THROLLE_USAGE)
39957 + ha->iocb_cnt -= sp->iocb_cnt;
39959 + vis_ha = (scsi_qla_host_t *)sp->cmd->device->host->hostdata;
39960 + if (ha->actthreads)
39961 + ha->actthreads--;
39962 + sp->lun_queue->out_cnt--;
39963 + sp->flags |= SRB_ISP_COMPLETED;
39964 + CMD_COMPL_STATUS(sp->cmd) = 0L;
39965 + CMD_SCSI_STATUS(sp->cmd) = 0L;
39967 + /* Save ISP completion status */
39968 + CMD_RESULT(sp->cmd) = DID_OK << 16;
39969 + sp->fo_retry_cnt = 0;
39970 + add_to_done_queue(ha, sp);
39972 + DEBUG2(printk("scsi(%ld): Invalid ISP SCSI completion handle\n",
39974 + printk(KERN_WARNING
39975 + "scsi(%ld): Invalid ISP SCSI completion handle\n",
39978 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
39985 + * qla2x00_response_pkt() - Process response queue entries.
39986 + * @ha: SCSI driver HA context
39987 + * @index: Response queue out pointer
39990 +qla2x00_response_pkt(scsi_qla_host_t *ha, uint16_t index)
39992 + device_reg_t *reg = ha->iobase;
39997 + if (!ha->flags.online)
40000 + if (index >= RESPONSE_ENTRY_CNT) {
40001 + /* Invalid response pointer value. */
40002 + DEBUG(printk("scsi(%ld): Response Pointer Error - index=%x.\n",
40003 + ha->host_no, index));
40005 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40009 + while (ha->rsp_ring_index != index) {
40010 + pkt = ha->response_ring_ptr;
40012 + DEBUG5(printk("%s(%ld): ha->rsp_ring_index=%ld index=%ld.\n",
40013 + __func__, ha->host_no,
40014 + (u_long)ha->rsp_ring_index, (u_long)index));
40015 + DEBUG5(printk("%s(%ld): response packet data:",
40016 + __func__, ha->host_no));
40017 + DEBUG5(qla2x00_dump_buffer((uint8_t *)pkt,
40018 + RESPONSE_ENTRY_SIZE));
40020 + ha->rsp_ring_index++;
40021 + if (ha->rsp_ring_index == RESPONSE_ENTRY_CNT) {
40022 + ha->rsp_ring_index = 0;
40023 + ha->response_ring_ptr = ha->response_ring;
40025 + ha->response_ring_ptr++;
40028 +#if defined(FC_IP_SUPPORT)
40030 + * This code is temporary until FW is fixed. FW is mistakenly
40031 + * setting bit 6 on Mailbox IOCB response
40033 + pkt->entry_status &= 0x3f;
40036 + if (pkt->entry_status != 0) {
40037 + DEBUG3(printk(KERN_INFO
40038 + "scsi(%ld): Process error entry.\n", ha->host_no));
40040 + qla2x00_error_entry(ha, pkt);
40044 + switch (pkt->entry_type) {
40045 + case STATUS_TYPE:
40046 + qla2x00_status_entry(ha, (sts_entry_t *)pkt);
40049 + case STATUS_CONT_TYPE:
40050 + qla2x00_status_cont_entry(ha, (sts_cont_entry_t *)pkt);
40053 + case MS_IOCB_TYPE:
40054 + qla2x00_ms_entry(ha, (ms_iocb_entry_t *)pkt);
40057 +#if defined(FC_IP_SUPPORT)
40058 + case ET_IP_COMMAND_64:
40059 + /* Handle IP send completion */
40060 + qla2x00_ip_send_complete(ha,
40061 + pkt->handle, le16_to_cpu(pkt->comp_status));
40064 + case ET_IP_RECEIVE:
40065 + /* Handle IP receive packet */
40066 + qla2x00_ip_receive(ha, pkt);
40069 + case ET_MAILBOX_COMMAND:
40070 + if (pkt->sys_define == SOURCE_IP) {
40071 + qla2x00_ip_mailbox_iocb_done(ha,
40072 + (struct mbx_entry *)pkt);
40075 +#endif /* FC_IP_SUPPORT */
40078 + /* Type Not Supported. */
40079 + DEBUG4(printk(KERN_WARNING
40080 + "scsi(%ld): Received unknown response pkt type %x "
40081 + "entry status=%x.\n",
40082 + ha->host_no, pkt->entry_type, pkt->entry_status));
40087 + /* Adjust ring index */
40088 + WRT_REG_WORD(ISP_RSP_Q_OUT(reg), ha->rsp_ring_index);
40094 + * qla2x00_status_entry() - Process a Status IOCB entry.
40095 + * @ha: SCSI driver HA context
40096 + * @pkt: Entry pointer
40099 +qla2x00_status_entry(scsi_qla_host_t *ha, sts_entry_t *pkt )
40101 + uint32_t b, t, l;
40102 + scsi_qla_host_t *vis_ha;
40106 + fc_port_t *fcport;
40108 + uint16_t comp_status;
40109 + uint16_t scsi_status;
40110 + uint8_t lscsi_status;
40112 + uint8_t sense_sz = 0;
40117 + /* Validate handle. */
40118 + if (pkt->handle < MAX_OUTSTANDING_COMMANDS) {
40119 + sp = ha->outstanding_cmds[pkt->handle];
40120 + /* Free outstanding command slot. */
40121 + ha->outstanding_cmds[pkt->handle] = 0;
40125 + if (sp == NULL) {
40126 + DEBUG2(printk("scsi(%ld): Status Entry invalid handle.\n",
40128 + printk(KERN_WARNING
40129 + "scsi(%ld): Status Entry invalid handle.\n", ha->host_no);
40131 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40132 + if (ha->dpc_wait && !ha->dpc_active)
40133 + up(ha->dpc_wait);
40138 + if (cp == NULL) {
40139 + DEBUG2(printk("scsi(%ld): Cmd already returned back to OS "
40140 + "pkt->handle: %d sp=%p sp->state:%d\n",
40141 + ha->host_no, pkt->handle, sp, sp->state));
40142 + printk(KERN_WARNING
40143 + "scsi(%ld): Cmd is NULL: already returned to OS (sp=%p)\n",
40144 + ha->host_no, sp);
40149 + * Set the visible adapter for lun Q access.
40151 + vis_ha = (scsi_qla_host_t *)cp->device->host->hostdata;
40152 + if (ha->actthreads)
40153 + ha->actthreads--;
40155 + if (sp->lun_queue == NULL) {
40156 + DEBUG2(printk("scsi(%ld): Status Entry invalid lun "
40157 + "pointer.\n", ha->host_no));
40158 + printk(KERN_WARNING
40159 + "scsi(%ld): Status Entry invalid lun pointer.\n",
40162 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40163 + if (ha->dpc_wait && !ha->dpc_active)
40164 + up(ha->dpc_wait);
40168 + sp->lun_queue->out_cnt--;
40169 +#if defined(IOCB_THROLLE_USAGE)
40170 + ha->iocb_cnt -= sp->iocb_cnt;
40173 + comp_status = le16_to_cpu(pkt->comp_status);
40174 + /* Mask of reserved bits 12-15. Before we examine the scsi status */
40175 + scsi_status = le16_to_cpu(pkt->scsi_status) & SS_MASK;
40176 + lscsi_status = scsi_status & STATUS_MASK;
40178 + CMD_ENTRY_STATUS(cp) = pkt->entry_status;
40179 + CMD_COMPL_STATUS(cp) = comp_status;
40180 + CMD_SCSI_STATUS(cp) = scsi_status;
40183 + sp->flags |= SRB_ISP_COMPLETED;
40185 + /* Generate LU queue on cntrl, target, LUN */
40186 + b = SCSI_BUS_32(cp);
40187 + t = SCSI_TCN_32(cp);
40188 + l = SCSI_LUN_32(cp);
40190 + tq = sp->tgt_queue;
40191 + lq = sp->lun_queue;
40194 + * If loop is in transient state Report DID_BUS_BUSY
40196 + if (!(sp->flags & SRB_IOCTL) &&
40197 + (atomic_read(&ha->loop_down_timer) ||
40198 + ha->loop_state != LOOP_READY) &&
40199 + (comp_status != CS_COMPLETE || scsi_status != 0)) {
40201 + DEBUG2(printk("scsi(%ld:%d:%d:%d): Loop Not Ready - "
40204 + b, t, l, sp->cmd->serial_number));
40206 + qla2x00_extend_timeout(sp->cmd, EXTEND_CMD_TIMEOUT);
40207 + add_to_retry_queue(ha, sp);
40212 + * Based on Host and scsi status generate status code for Linux
40214 + switch (comp_status) {
40215 + case CS_COMPLETE:
40217 + * Host complted command OK. Check SCSI Status to determine
40218 + * the correct Host status.
40220 + if (scsi_status == 0) {
40221 + CMD_RESULT(cp) = DID_OK << 16;
40223 + /* Perform any post command processing */
40224 + qla2x00_filter_command(ha, sp);
40225 + } else { /* Check for non zero scsi status */
40226 + if (lscsi_status == SS_BUSY_CONDITION) {
40228 + DID_BUS_BUSY << 16 | lscsi_status;
40231 + DID_OK << 16 | lscsi_status;
40233 + if (lscsi_status != SS_CHECK_CONDITION)
40237 + * Copy Sense Data into sense buffer
40239 + memset(cp->sense_buffer,
40240 + 0, sizeof(cp->sense_buffer));
40242 + if (!(scsi_status & SS_SENSE_LEN_VALID))
40245 + if (le16_to_cpu(pkt->req_sense_length) <
40248 + le16_to_cpu(pkt->req_sense_length);
40250 + sense_sz = CMD_SNSLEN(cp) - 1;
40252 + CMD_ACTUAL_SNSLEN(cp) = sense_sz;
40253 + sp->request_sense_length = sense_sz;
40254 + sp->request_sense_ptr =
40255 + (void *)cp->sense_buffer;
40257 + if (sp->request_sense_length > 32)
40260 + memcpy(cp->sense_buffer,
40261 + pkt->req_sense_data, sense_sz);
40263 + sp->request_sense_ptr += sense_sz;
40264 + sp->request_sense_length -= sense_sz;
40265 + if (sp->request_sense_length != 0)
40266 + ha->status_srb = sp;
40268 + if (!(sp->flags & SRB_IOCTL) &&
40269 + qla2x00_check_sense(cp, lq) ==
40270 + QL_STATUS_SUCCESS) {
40272 + * Throw away status_cont if any
40274 + ha->status_srb = NULL;
40275 + add_to_scsi_retry_queue(ha, sp);
40279 + DEBUG5(printk("%s(): Check condition Sense "
40280 + "data, scsi(%ld:%d:%d:%d) cmd=%p "
40285 + cp, cp->serial_number));
40287 + DEBUG5(qla2x00_dump_buffer(
40288 + cp->sense_buffer,
40289 + CMD_ACTUAL_SNSLEN(cp)));
40294 + case CS_DATA_UNDERRUN:
40295 + DEBUG2(printk(KERN_INFO
40296 + "scsi(%ld:%d:%d) UNDERRUN status detected 0x%x-0x%x.\n",
40298 + t, l, comp_status, scsi_status));
40300 + resid = le32_to_cpu(pkt->residual_length);
40301 + CMD_RESID_LEN(cp) = resid;
40304 + * Check to see if SCSI Status is non zero. If so report SCSI
40307 + if (lscsi_status != 0) {
40308 + if (lscsi_status == SS_BUSY_CONDITION) {
40310 + DID_BUS_BUSY << 16 | lscsi_status;
40313 + DID_OK << 16 | lscsi_status;
40315 + if (lscsi_status != SS_CHECK_CONDITION)
40319 + * Copy Sense Data into sense buffer
40321 + memset(cp->sense_buffer,
40322 + 0, sizeof(cp->sense_buffer));
40324 + if (!(scsi_status & SS_SENSE_LEN_VALID))
40327 + if (le16_to_cpu(pkt->req_sense_length) <
40330 + le16_to_cpu(pkt->req_sense_length);
40332 + sense_sz = CMD_SNSLEN(cp) - 1;
40334 + CMD_ACTUAL_SNSLEN(cp) = sense_sz;
40335 + sp->request_sense_length = sense_sz;
40336 + sp->request_sense_ptr =
40337 + (void *)cp->sense_buffer;
40339 + if (sp->request_sense_length > 32)
40342 + memcpy(cp->sense_buffer,
40343 + pkt->req_sense_data, sense_sz);
40345 + sp->request_sense_ptr += sense_sz;
40346 + sp->request_sense_length -= sense_sz;
40347 + if (sp->request_sense_length != 0)
40348 + ha->status_srb = sp;
40350 + if (!(sp->flags & SRB_IOCTL) &&
40351 + (qla2x00_check_sense(cp, lq) ==
40352 + QL_STATUS_SUCCESS)) {
40353 + ha->status_srb = NULL;
40354 + add_to_scsi_retry_queue(ha,sp);
40358 + DEBUG5(printk("%s(): Check condition Sense "
40359 + "data, scsi(%ld:%d:%d:%d) cmd=%p "
40364 + cp, cp->serial_number));
40366 + DEBUG5(qla2x00_dump_buffer(
40367 + cp->sense_buffer,
40368 + CMD_ACTUAL_SNSLEN(cp)));
40372 + * If RISC reports underrun and target does not report
40373 + * it then we must have a lost frame, so tell upper
40374 + * layer to retry it by reporting a bus busy.
40376 + if (!(scsi_status & SS_RESIDUAL_UNDER)) {
40377 + DEBUG2(printk("scsi(%ld:%d:%d:%d) Dropped "
40378 + "frame(s) detected (%x of %x bytes)..."
40379 + "retrying command.\n",
40381 + b, t, l, resid, CMD_XFRLEN(cp)));
40383 + CMD_RESULT(cp) = DID_BUS_BUSY << 16;
40384 + ha->dropped_frame_error_cnt++;
40389 + * Handle mid-layer underflow???
40391 + * For kernels less than 2.4, the driver must return
40392 + * an error if an underflow is detected. For kernels
40393 + * equal-to and above 2.4, the mid-layer will
40394 + * appearantly handle the underflow by detecting the
40395 + * residual count -- unfortunately, we do not see
40396 + * where this is actually being done. In the interim,
40397 + * we will return DID_ERROR.
40399 + cp->resid = resid;
40402 + * Determine if this is a valid check for 2.5
40404 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
40405 + if ((unsigned)(CMD_XFRLEN(cp) - resid) <
40408 + "scsi(%ld): Mid-layer underflow detected "
40409 + "(%x of %x bytes) wanted %x bytes..."
40410 + "returning DID_ERROR status!\n",
40412 + resid, CMD_XFRLEN(cp), cp->underflow);
40414 + CMD_RESULT(cp) = DID_ERROR << 16;
40418 + /* Everybody online, looking good... */
40419 + CMD_RESULT(cp) = DID_OK << 16;
40421 + /* Perform any post command processing */
40422 + qla2x00_filter_command(ha, sp);
40426 + case CS_PORT_LOGGED_OUT:
40427 + case CS_PORT_CONFIG_CHG:
40428 + case CS_PORT_BUSY:
40429 + case CS_INCOMPLETE:
40430 + case CS_PORT_UNAVAILABLE:
40432 + * If the port is in Target Down state, return all IOs for this
40433 + * Target with DID_NO_CONNECT ELSE Queue the IOs in the
40436 + fcport = lq->fclun->fcport;
40437 + DEBUG2(printk("scsi(%ld:%d:%d): status_entry: Port Down "
40438 + "pid=%ld, compl status=0x%x, port state=0x%x\n",
40441 + sp->cmd->serial_number,
40443 + atomic_read(&fcport->state)));
40445 + if ((sp->flags & SRB_IOCTL) ||
40446 + (atomic_read(&fcport->state) == FC_DEVICE_DEAD)) {
40447 + CMD_RESULT(cp) = DID_NO_CONNECT << 16;
40448 + add_to_done_queue(ha, sp);
40450 + qla2x00_extend_timeout(cp, EXTEND_CMD_TIMEOUT);
40451 + add_to_retry_queue(ha, sp);
40454 + if (atomic_read(&fcport->state) == FC_ONLINE) {
40455 + qla2x00_mark_device_lost(ha, fcport);
40462 + DEBUG2(printk(KERN_INFO
40463 + "scsi(%ld): RESET status detected 0x%x-0x%x.\n",
40464 + ha->host_no, comp_status, scsi_status));
40466 + if (sp->flags & SRB_IOCTL) {
40467 + CMD_RESULT(cp) = DID_RESET << 16;
40470 + qla2x00_extend_timeout(cp, EXTEND_CMD_TIMEOUT);
40471 + add_to_retry_queue(ha, sp);
40478 + * hv2.19.12 - DID_ABORT does not retry the request if we
40479 + * aborted this request then abort otherwise it must be a
40482 + DEBUG2(printk(KERN_INFO
40483 + "scsi(%ld): ABORT status detected 0x%x-0x%x.\n",
40484 + ha->host_no, comp_status, scsi_status));
40486 + CMD_RESULT(cp) = DID_RESET << 16;
40490 + DEBUG2(printk(KERN_INFO
40491 + "scsi(%ld:%d:%d:%d): TIMEOUT status detected 0x%x-0x%x.\n",
40494 + comp_status, scsi_status));
40496 + CMD_RESULT(cp) = DID_BUS_BUSY << 16;
40498 + fcport = lq->fclun->fcport;
40500 +printk("***TIMEOUT cmd=(%lx) cdb=(%x)\n\n", cp->serial_number, cp->cmnd[0]);
40501 +//qla2x00_dump_isp(ha, 1);
40504 + * Check to see if logout occurred
40506 + t = SCSI_TCN_32(cp);
40507 + if ((le16_to_cpu(pkt->status_flags) & IOCBSTAT_SF_LOGO)) {
40508 + DEBUG2(printk("scsi: Timeout occurred with Logo, "
40509 + "status flag (%x) with public device loop id "
40510 + "(%x), attempt new recovery\n",
40511 + le16_to_cpu(pkt->status_flags),
40512 + ha->fc_db[t].loop_id));
40514 + ha->fc_db[t].flag |= DEV_RELOGIN;
40515 + fcport->login_retry = ha->login_retry_count;
40516 + set_bit(RELOGIN_NEEDED, &ha->dpc_flags);
40520 + case CS_QUEUE_FULL:
40521 + DEBUG2(printk(KERN_INFO
40522 + "scsi(%ld): QUEUE FULL status detected 0x%x-0x%x.\n",
40523 + ha->host_no, comp_status, scsi_status));
40526 + * SCSI Mid-Layer handles device queue full.
40528 + CMD_RESULT(cp) = DID_OK << 16 | lscsi_status;
40530 +/* Adjust queue depth */
40534 +ret = scsi_track_queue_full(cp->device, sp->lun_queue->out_cnt-1);
40535 +printk("scsi(%ld:%d:%d:%d): QUEUE FULL adjustments -- "
40536 + "outstanding/adjusted (%ld/%d) -- qd/lqfd/lqfc (%d/%d/%d).\n",
40538 + cp->device->channel, cp->device->id, cp->device->lun,
40539 + sp->lun_queue->out_cnt-1, ret,
40540 + cp->device->queue_depth,
40541 + cp->device->last_queue_full_count,
40542 + cp->device->last_queue_full_depth);
40549 + DEBUG3(printk("scsi(%ld): Error detected (unknown status) "
40551 + ha->host_no, comp_status, scsi_status));
40553 + "scsi(%ld): Unknown status detected 0x%x-0x%x.\n",
40554 + ha->host_no, comp_status, scsi_status);
40556 + CMD_RESULT(cp) = DID_ERROR << 16;
40560 + /* Place command on done queue. */
40561 + if (ha->status_srb == NULL)
40562 + add_to_done_queue(ha, sp);
40568 + * qla2x00_status_cont_entry() - Process a Status Continuations entry.
40569 + * @ha: SCSI driver HA context
40570 + * @pkt: Entry pointer
40572 + * Extended sense data.
40575 +qla2x00_status_cont_entry(scsi_qla_host_t *ha, sts_cont_entry_t *pkt)
40577 + uint8_t sense_sz = 0;
40578 + srb_t *sp = ha->status_srb;
40583 + if (sp != NULL && sp->request_sense_length != 0) {
40585 + if (cp == NULL) {
40586 + DEBUG2(printk("%s(): Cmd already returned back to OS "
40587 + "sp=%p sp->state:%d\n",
40588 + __func__, sp, sp->state));
40590 + "%s(): cmd is NULL: already returned to OS "
40594 + ha->status_srb = NULL;
40598 + if (sp->request_sense_length > sizeof (pkt->req_sense_data)) {
40599 + sense_sz = sizeof(pkt->req_sense_data);
40601 + sense_sz = sp->request_sense_length;
40604 + /* Move sense data. */
40605 + memcpy(sp->request_sense_ptr, pkt->req_sense_data, sense_sz);
40606 + DEBUG5(qla2x00_dump_buffer(sp->request_sense_ptr, sense_sz));
40608 + sp->request_sense_ptr += sense_sz;
40609 + sp->request_sense_length -= sense_sz;
40611 + /* Place command on done queue. */
40612 + if (sp->request_sense_length == 0) {
40613 + add_to_done_queue(ha, sp);
40614 + ha->status_srb = NULL;
40622 + * qla2x00_error_entry() - Process an error entry.
40623 + * @ha: SCSI driver HA context
40624 + * @pkt: Entry pointer
40627 +qla2x00_error_entry(scsi_qla_host_t *ha, response_t *pkt)
40633 +#if defined(QL_DEBUG_LEVEL_2)
40634 + if (pkt->entry_status & RF_INV_E_ORDER)
40635 + printk("%s(%ld): Invalid Entry Order\n",
40636 + __func__, ha->host_no);
40637 + else if (pkt->entry_status & RF_INV_E_COUNT)
40638 + printk("%s(%ld): Invalid Entry Count\n",
40639 + __func__, ha->host_no);
40640 + else if (pkt->entry_status & RF_INV_E_PARAM)
40641 + printk("%s(%ld): Invalid Entry Parameter\n",
40642 + __func__, ha->host_no);
40643 + else if (pkt->entry_status & RF_INV_E_TYPE)
40644 + printk("%s(%ld): Invalid Entry Type\n",
40645 + __func__, ha->host_no);
40646 + else if (pkt->entry_status & RF_BUSY)
40647 + printk("%s(%ld): Busy\n",
40648 + __func__, ha->host_no);
40650 + printk("%s(%ld): UNKNOWN flag error\n",
40651 + __func__, ha->host_no);
40654 + /* Validate handle. */
40655 + if (pkt->handle < MAX_OUTSTANDING_COMMANDS)
40656 + sp = ha->outstanding_cmds[pkt->handle];
40661 + /* Free outstanding command slot. */
40662 + ha->outstanding_cmds[pkt->handle] = 0;
40663 + if (ha->actthreads)
40664 + ha->actthreads--;
40665 + sp->lun_queue->out_cnt--;
40666 +#if defined(IOCB_THROLLE_USAGE)
40667 + ha->iocb_cnt -= sp->iocb_cnt;
40670 + sp->flags |= SRB_ISP_COMPLETED;
40672 + /* Bad payload or header */
40673 + if (pkt->entry_status &
40674 + (RF_INV_E_ORDER | RF_INV_E_COUNT |
40675 + RF_INV_E_PARAM | RF_INV_E_TYPE)) {
40676 + CMD_RESULT(sp->cmd) = DID_ERROR << 16;
40677 + } else if (pkt->entry_status & RF_BUSY) {
40678 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
40680 + CMD_RESULT(sp->cmd) = DID_ERROR << 16;
40682 + /* Place command on done queue. */
40683 + add_to_done_queue(ha, sp);
40685 + } else if (pkt->entry_type == COMMAND_A64_TYPE ||
40686 + pkt->entry_type == COMMAND_TYPE) {
40687 + DEBUG2(printk("scsi(%ld): Error entry - invalid handle\n",
40689 + printk(KERN_WARNING
40690 + "scsi(%ld): Error entry - invalid handle\n",
40693 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40694 + if (ha->dpc_wait && !ha->dpc_active)
40695 + up(ha->dpc_wait);
40702 + * qla2x00_ms_entry() - Process a Management Server entry.
40703 + * @ha: SCSI driver HA context
40704 + * @index: Response queue out pointer
40707 +qla2x00_ms_entry(scsi_qla_host_t *ha, ms_iocb_entry_t *pkt)
40713 + DEBUG3(printk("%s(%ld): pkt=%p pkthandle=%d.\n",
40714 + __func__, ha->host_no, pkt, pkt->handle1));
40716 + /* Validate handle. */
40717 + if (pkt->handle1 < MAX_OUTSTANDING_COMMANDS)
40718 + sp = ha->outstanding_cmds[pkt->handle1];
40722 + if (sp == NULL) {
40723 + DEBUG2(printk("scsi(%ld): MS entry - invalid handle\n",
40725 + printk(KERN_WARNING
40726 + "scsi(%ld): MS entry - invalid handle\n",
40729 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
40733 + CMD_COMPL_STATUS(sp->cmd) = le16_to_cpu(pkt->status);
40734 + CMD_ENTRY_STATUS(sp->cmd) = pkt->entry_status;
40736 + /* Free outstanding command slot. */
40737 + ha->outstanding_cmds[pkt->handle1] = 0;
40738 + sp->flags |= SRB_ISP_COMPLETED;
40740 + add_to_done_queue(ha, sp);
40746 + * qla2x00_check_sense() - Perform any sense data interrogation.
40747 + * @cp: SCSI Command
40750 + * Returns QL_STATUS_SUCCESS if the lun queue is suspended, else
40751 + * QL_STATUS_ERROR (lun queue not suspended).
40754 +qla2x00_check_sense(Scsi_Cmnd *cp, os_lun_t *lq)
40756 + scsi_qla_host_t *ha;
40758 + fc_port_t *fcport;
40760 + ha = (scsi_qla_host_t *) cp->device->host->hostdata;
40761 + if (((cp->sense_buffer[0] & 0x70) >> 4) != 7) {
40762 + return (QL_STATUS_ERROR);
40765 + sp = (srb_t * )CMD_SP(cp);
40766 + sp->flags |= SRB_GOT_SENSE;
40768 + switch (cp->sense_buffer[2] & 0xf) {
40769 + case RECOVERED_ERROR:
40770 + CMD_RESULT(cp) = DID_OK << 16;
40771 + cp->sense_buffer[0] = 0;
40775 + fcport = lq->fclun->fcport;
40778 + * Suspend the lun only for hard disk device type.
40780 + if (!(fcport->flags & FC_TAPE_DEVICE) &&
40781 + lq->q_state != LUN_STATE_TIMEOUT) {
40783 + * If target is in process of being ready then suspend
40784 + * lun for 6 secs and retry all the commands.
40786 + if (cp->sense_buffer[12] == 0x4 &&
40787 + cp->sense_buffer[13] == 0x1) {
40789 + /* Suspend the lun for 6 secs */
40790 + qla2x00_suspend_lun(ha,
40791 + lq, 6, ql2xsuspendcount);
40793 + return (QL_STATUS_SUCCESS);
40799 + return (QL_STATUS_ERROR);
40801 --- /dev/null Thu Apr 11 07:25:15 2002
40802 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_listops.h Thu Jul 3 15:34:42 2003
40804 +/******************************************************************************
40805 + * QLOGIC LINUX SOFTWARE
40807 + * QLogic ISP2x00 device driver for Linux 2.5.x
40808 + * Copyright (C) 2003 Qlogic Corporation
40809 + * (www.qlogic.com)
40811 + * This program is free software; you can redistribute it and/or modify it
40812 + * under the terms of the GNU General Public License as published by the
40813 + * Free Software Foundation; either version 2, or (at your option) any
40816 + * This program is distributed in the hope that it will be useful, but
40817 + * WITHOUT ANY WARRANTY; without even the implied warranty of
40818 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
40819 + * General Public License for more details.
40821 + ******************************************************************************/
40823 +/* Management functions for various lists */
40826 + * Found in kernel 2.4.9 and higher in include/linux/lists.h
40828 + * Iterate over a list safe against removal of list.
40831 +#if !defined(list_for_each_safe)
40832 +#define list_for_each_safe(pos, n, head) \
40833 + for( pos= (head)->next, n = pos->next; pos != (head); \
40834 + pos = n, n = pos->next )
40837 +/* __add_to_done_queue()
40839 + * Place SRB command on done queue.
40842 + * ha = host pointer
40843 + * sp = srb pointer.
40845 + * this function assumes the ha->list_lock is already taken
40847 +static inline void
40848 +__add_to_done_queue(struct scsi_qla_host * ha, srb_t * sp)
40851 + if (sp->state != SRB_NO_QUEUE_STATE &&
40852 + sp->state != SRB_ACTIVE_STATE)
40856 + /* Place block on done queue */
40857 + sp->cmd->host_scribble = (unsigned char *) NULL;
40858 + sp->state = SRB_DONE_STATE;
40859 + list_add_tail(&sp->list,&ha->done_queue);
40860 + ha->done_q_cnt++;
40864 +/* __add_to_free_queue()
40866 + * Place SRB command on free queue.
40869 + * ha = host pointer
40870 + * sp = srb pointer.
40872 + * this function assumes the ha->list_lock is already taken
40874 +static inline void
40875 +__add_to_free_queue(struct scsi_qla_host * ha, srb_t * sp)
40878 + if (atomic_read(&sp->ref_count) != 0)
40883 + /* Place block on free queue */
40884 + sp->state = SRB_FREE_STATE;
40885 + list_add_tail(&sp->list,&ha->free_queue);
40889 +static inline void
40890 +__add_to_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40893 + if( sp->state != SRB_NO_QUEUE_STATE &&
40894 + sp->state != SRB_ACTIVE_STATE)
40898 + /* Place block on retry queue */
40899 + list_add_tail(&sp->list,&ha->retry_queue);
40900 + ha->retry_q_cnt++;
40901 + sp->flags |= SRB_WATCHDOG;
40902 + ha->flags.watchdog_enabled = TRUE;
40903 + sp->state = SRB_RETRY_STATE;
40907 +static inline void
40908 +__add_to_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40911 + if( sp->state != SRB_NO_QUEUE_STATE &&
40912 + sp->state != SRB_ACTIVE_STATE)
40916 + /* Place block on retry queue */
40917 + list_add_tail(&sp->list,&ha->scsi_retry_queue);
40918 + ha->scsi_retry_q_cnt++;
40919 + sp->state = SRB_SCSI_RETRY_STATE;
40923 +static inline void
40924 +add_to_done_queue(struct scsi_qla_host * ha, srb_t * sp)
40926 + unsigned long flags;
40928 + spin_lock_irqsave(&ha->list_lock, flags);
40929 + __add_to_done_queue(ha,sp);
40930 + spin_unlock_irqrestore(&ha->list_lock, flags);
40933 +static inline void
40934 +add_to_free_queue(struct scsi_qla_host * ha, srb_t * sp)
40936 + unsigned long flags;
40938 + spin_lock_irqsave(&ha->list_lock, flags);
40939 + __add_to_free_queue(ha,sp);
40940 + spin_unlock_irqrestore(&ha->list_lock, flags);
40943 +static inline void
40944 +add_to_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40946 + unsigned long flags;
40948 + spin_lock_irqsave(&ha->list_lock, flags);
40949 + __add_to_retry_queue(ha,sp);
40950 + spin_unlock_irqrestore(&ha->list_lock, flags);
40953 +static inline void
40954 +add_to_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40956 + unsigned long flags;
40958 + spin_lock_irqsave(&ha->list_lock, flags);
40959 + __add_to_scsi_retry_queue(ha,sp);
40960 + spin_unlock_irqrestore(&ha->list_lock, flags);
40964 + * __del_from_retry_queue
40965 + * Function used to remove a command block from the
40966 + * watchdog timer queue.
40968 + * Note: Must insure that command is on watchdog
40969 + * list before calling del_from_retry_queue
40970 + * if (sp->flags & SRB_WATCHDOG)
40973 + * ha = adapter block pointer.
40974 + * sp = srb pointer.
40976 + * this function assumes the list_lock is already taken
40978 +static inline void
40979 +__del_from_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
40981 + list_del_init(&sp->list);
40983 + if (list_empty(&ha->retry_queue))
40984 + ha->flags.watchdog_enabled = FALSE;
40985 + sp->flags &= ~(SRB_WATCHDOG | SRB_BUSY);
40986 + sp->state = SRB_NO_QUEUE_STATE;
40987 + ha->retry_q_cnt--;
40991 + * __del_from_scsi_retry_queue
40992 + * Function used to remove a command block from the
40993 + * scsi retry queue.
40996 + * ha = adapter block pointer.
40997 + * sp = srb pointer.
40999 + * this function assumes the list_lock is already taken
41001 +static inline void
41002 +__del_from_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
41004 + list_del_init(&sp->list);
41006 + ha->scsi_retry_q_cnt--;
41007 + sp->state = SRB_NO_QUEUE_STATE;
41011 + * del_from_retry_queue
41012 + * Function used to remove a command block from the
41013 + * watchdog timer queue.
41015 + * Note: Must insure that command is on watchdog
41016 + * list before calling del_from_retry_queue
41017 + * if (sp->flags & SRB_WATCHDOG)
41020 + * ha = adapter block pointer.
41021 + * sp = srb pointer.
41023 + * this function takes and releases the list_lock
41025 +static inline void
41026 +del_from_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
41028 + unsigned long flags;
41030 + /* if (unlikely(!(sp->flags & SRB_WATCHDOG)))
41032 + spin_lock_irqsave(&ha->list_lock, flags);
41034 + /* if (unlikely(list_empty(&ha->retry_queue)))
41037 + __del_from_retry_queue(ha,sp);
41039 + spin_unlock_irqrestore(&ha->list_lock, flags);
41042 + * del_from_scsi_retry_queue
41043 + * Function used to remove a command block from the
41044 + * scsi retry queue.
41047 + * ha = adapter block pointer.
41048 + * sp = srb pointer.
41050 + * this function takes and releases the list_lock
41052 +static inline void
41053 +del_from_scsi_retry_queue(struct scsi_qla_host * ha, srb_t * sp)
41055 + unsigned long flags;
41057 + spin_lock_irqsave(&ha->list_lock, flags);
41059 + /* if (unlikely(list_empty(&ha->scsi_retry_queue)))
41062 + __del_from_scsi_retry_queue(ha,sp);
41064 + spin_unlock_irqrestore(&ha->list_lock, flags);
41067 +static inline void
41068 +__del_from_free_queue(struct scsi_qla_host * ha, srb_t * sp)
41071 + list_del_init(&sp->list);
41072 + sp->state = SRB_NO_QUEUE_STATE;
41076 + * __add_to_pending_queue
41077 + * Add the standard SCB job to the bottom of standard SCB commands.
41081 + * q = SCSI LU pointer.
41082 + * sp = srb pointer.
41083 + * SCSI_LU_Q lock must be already obtained.
41085 +static inline void
41086 +__add_to_pending_queue(struct scsi_qla_host *ha, srb_t * sp)
41089 + if( sp->state != SRB_NO_QUEUE_STATE &&
41090 + sp->state != SRB_FREE_STATE &&
41091 + sp->state != SRB_ACTIVE_STATE)
41095 + list_add_tail(&sp->list, &ha->pending_queue);
41097 + sp->state = SRB_PENDING_STATE;
41100 +static inline void
41101 +__add_to_pending_queue_head(struct scsi_qla_host *ha, srb_t * sp)
41104 + if( sp->state != SRB_NO_QUEUE_STATE &&
41105 + sp->state != SRB_FREE_STATE &&
41106 + sp->state != SRB_ACTIVE_STATE)
41110 + list_add(&sp->list, &ha->pending_queue);
41112 + sp->state = SRB_PENDING_STATE;
41115 +static inline void
41116 +add_to_pending_queue(struct scsi_qla_host *ha, srb_t *sp)
41118 + unsigned long flags;
41120 + spin_lock_irqsave(&ha->list_lock, flags);
41121 + __add_to_pending_queue(ha, sp);
41122 + spin_unlock_irqrestore(&ha->list_lock, flags);
41124 +static inline void
41125 +add_to_pending_queue_head(struct scsi_qla_host *ha, srb_t *sp)
41127 + unsigned long flags;
41129 + spin_lock_irqsave(&ha->list_lock, flags);
41130 + __add_to_pending_queue_head(ha, sp);
41131 + spin_unlock_irqrestore(&ha->list_lock, flags);
41134 +static inline void
41135 +__del_from_pending_queue(struct scsi_qla_host *ha, srb_t *sp)
41137 + list_del_init(&sp->list);
41139 + sp->state = SRB_NO_QUEUE_STATE;
41143 + * Failover Stuff.
41145 +static inline void
41146 +__add_to_failover_queue(struct scsi_qla_host * ha, srb_t * sp)
41149 + if( sp->state != SRB_NO_QUEUE_STATE &&
41150 + sp->state != SRB_ACTIVE_STATE)
41154 + list_add_tail(&sp->list,&ha->failover_queue);
41155 + ha->failover_cnt++;
41156 + sp->state = SRB_FAILOVER_STATE;
41160 +static inline void add_to_failover_queue(struct scsi_qla_host * ha, srb_t * sp)
41162 + unsigned long flags;
41164 + spin_lock_irqsave(&ha->list_lock, flags);
41166 + __add_to_failover_queue(ha,sp);
41168 + spin_unlock_irqrestore(&ha->list_lock, flags);
41170 +static inline void __del_from_failover_queue(struct scsi_qla_host * ha, srb_t *
41173 + ha->failover_cnt--;
41174 + list_del_init(&sp->list);
41175 + sp->state = SRB_NO_QUEUE_STATE;
41178 +static inline void del_from_failover_queue(struct scsi_qla_host * ha, srb_t * sp)
41180 + unsigned long flags;
41182 + spin_lock_irqsave(&ha->list_lock, flags);
41184 + __del_from_failover_queue(ha,sp);
41186 + spin_unlock_irqrestore(&ha->list_lock, flags);
41189 +static inline void
41190 +del_from_pending_queue(struct scsi_qla_host * ha, srb_t * sp)
41192 + unsigned long flags;
41194 + spin_lock_irqsave(&ha->list_lock, flags);
41196 + __del_from_pending_queue(ha,sp);
41198 + spin_unlock_irqrestore(&ha->list_lock, flags);
41201 --- /dev/null Thu Apr 11 07:25:15 2002
41202 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_mbx.c Thu Jul 3 15:34:42 2003
41205 + * QLOGIC LINUX SOFTWARE
41207 + * QLogic ISP2x00 device driver for Linux 2.5.x
41208 + * Copyright (C) 2003 Qlogic Corporation
41209 + * (www.qlogic.com)
41211 + * This program is free software; you can redistribute it and/or modify it
41212 + * under the terms of the GNU General Public License as published by the
41213 + * Free Software Foundation; either version 2, or (at your option) any
41216 + * This program is distributed in the hope that it will be useful, but
41217 + * WITHOUT ANY WARRANTY; without even the implied warranty of
41218 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41219 + * General Public License for more details.
41223 +#include "qla_os.h"
41225 +#include "qla_def.h"
41228 + * Local Function Prototypes.
41231 +qla2x00_mbx_sem_timeout(unsigned long);
41234 +qla2x00_get_mbx_access(scsi_qla_host_t *, uint32_t);
41237 +qla2x00_release_mbx_access(scsi_qla_host_t *, uint32_t);
41240 +qla2x00_mbx_q_add(scsi_qla_host_t *, mbx_cmdq_t **);
41243 +qla2x00_mbx_q_get(scsi_qla_host_t *, mbx_cmdq_t **);
41246 +qla2x00_mbx_q_memb_alloc(scsi_qla_host_t *, mbx_cmdq_t **);
41249 +qla2x00_mbx_q_memb_free(scsi_qla_host_t *, mbx_cmdq_t *);
41251 +/***************************/
41252 +/* Function implementation */
41253 +/***************************/
41256 +qla2x00_mbx_sem_timeout(unsigned long data)
41258 + struct semaphore *sem_ptr = (struct semaphore *)data;
41260 + DEBUG11(printk("qla2x00_sem_timeout: entered.\n");)
41262 + if (sem_ptr != NULL) {
41266 + DEBUG11(printk("qla2x00_mbx_sem_timeout: exiting.\n");)
41270 + * tov = timeout value in seconds
41273 +qla2x00_get_mbx_access(scsi_qla_host_t *ha, uint32_t tov)
41276 + int prev_val = 1; /* assume no access yet */
41277 + mbx_cmdq_t *ptmp_mbq;
41278 + struct timer_list tmp_cmd_timer;
41279 + unsigned long cpu_flags;
41282 + DEBUG11(printk("qla2x00_get_mbx_access(%ld): entered.\n",
41286 + if (test_bit(MBX_CMD_WANT, &ha->mbx_cmd_flags) == 0) {
41288 + DEBUG11(printk("qla2x00_get_mbx_access(%ld): going "
41289 + " to test access flags.\n", ha->host_no);)
41291 + /* No one else is waiting. Go ahead and try to
41294 + if ((prev_val = test_and_set_bit(MBX_CMD_ACTIVE,
41295 + &ha->mbx_cmd_flags)) == 0) {
41300 + /* wait for previous command to finish */
41301 + DEBUG(printk("qla2x00_get_mbx_access(%ld): access "
41302 + "flags=%lx. busy. Waiting for access. curr time=0x%lx.\n",
41303 + ha->host_no, ha->mbx_cmd_flags, jiffies);)
41305 + DEBUG11(printk("qla2x00_get_mbx_access(%ld): access "
41306 + "flags=%lx. busy. Waiting for access. curr time=0x%lx.\n",
41307 + ha->host_no, ha->mbx_cmd_flags, jiffies);)
41310 + * Init timer and get semaphore from mbx q. After we got valid
41311 + * semaphore pointer the MBX_CMD_WANT flag would also had
41314 + qla2x00_mbx_q_add(ha, &ptmp_mbq);
41316 + if (ptmp_mbq == NULL) {
41317 + /* queue full? problem? can't proceed. */
41318 + DEBUG2_3_11(printk("qla2x00_get_mbx_access(%ld): ERROR "
41319 + "no more mbx_q allowed. exiting.\n", ha->host_no);)
41324 + /* init timer and semaphore */
41325 + init_timer(&tmp_cmd_timer);
41326 + tmp_cmd_timer.data = (unsigned long)&ptmp_mbq->cmd_sem;
41327 + tmp_cmd_timer.function =
41328 + (void (*)(unsigned long))qla2x00_mbx_sem_timeout;
41329 + tmp_cmd_timer.expires = jiffies + tov * HZ;
41331 + DEBUG11(printk("get_mbx_access(%ld): adding timer. "
41332 + "curr time=0x%lx timeoutval=0x%lx.\n",
41333 + ha->host_no, jiffies, tmp_cmd_timer.expires);)
41336 +/* add_timer(&tmp_cmd_timer);*/
41337 + DEBUG11(printk("get_mbx_access(%ld): going to sleep. "
41338 + "current time=0x%lx.\n", ha->host_no, jiffies);)
41340 + down_interruptible(&ptmp_mbq->cmd_sem);
41342 + DEBUG11(printk("get_mbx_access(%ld): woke up. current "
41344 + ha->host_no, jiffies);)
41346 +/* del_timer(&tmp_cmd_timer);*/
41348 + /* try to get lock again. we'll test later to see
41349 + * if we actually got the lock.
41351 + prev_val = test_and_set_bit(MBX_CMD_ACTIVE,
41352 + &ha->mbx_cmd_flags);
41355 + * After we tried to get access then we check to see
41356 + * if we need to clear the MBX_CMD_WANT flag. Don't clear
41357 + * this flag before trying to get access or else another
41358 + * new thread might grab it before we did.
41360 + spin_lock_irqsave(&ha->mbx_q_lock, cpu_flags);
41361 + if (ha->mbx_q_head == NULL) {
41362 + /* We're the last thread in queue. */
41363 + clear_bit(MBX_CMD_WANT, &ha->mbx_cmd_flags);
41365 + qla2x00_mbx_q_memb_free(ha, ptmp_mbq);
41366 + spin_unlock_irqrestore(&ha->mbx_q_lock, cpu_flags);
41371 + if (prev_val == 0) {
41372 + /* We got the lock */
41373 + DEBUG11(printk("qla2x00_get_mbx_access(%ld): success.\n",
41376 + ret = QL_STATUS_SUCCESS;
41378 + /* Timeout or resource error. */
41379 + DEBUG2_3_11(printk("qla2x00_get_mbx_access(%ld): timed out.\n",
41382 + ret = QL_STATUS_TIMEOUT;
41389 +qla2x00_release_mbx_access(scsi_qla_host_t *ha, uint32_t tov)
41391 + mbx_cmdq_t *next_thread;
41393 + DEBUG11(printk("qla2x00_release_mbx_access:(%ld): entered.\n",
41396 + clear_bit(MBX_CMD_ACTIVE, &ha->mbx_cmd_flags);
41398 + /* Wake up one pending mailbox cmd thread in queue. */
41399 + qla2x00_mbx_q_get(ha, &next_thread);
41400 + if (next_thread) {
41401 + DEBUG11(printk("qla2x00_release_mbx_access: found pending "
41402 + "mbx cmd. Waking up sem in %p.\n", &next_thread);)
41403 + up(&next_thread->cmd_sem);
41406 + DEBUG11(printk("qla2x00_release_mbx_access:(%ld): exiting.\n",
41409 + return QL_STATUS_SUCCESS;
41412 +/* Allocates a mbx_cmdq_t struct and add to the mbx_q list. */
41414 +qla2x00_mbx_q_add(scsi_qla_host_t *ha, mbx_cmdq_t **ret_mbq)
41417 + unsigned long cpu_flags;
41418 + mbx_cmdq_t *ptmp = NULL;
41420 + spin_lock_irqsave(&ha->mbx_q_lock, cpu_flags);
41422 + DEBUG11(printk("qla2x00_mbx_q_add: got mbx_q spinlock. "
41423 + "Inst=%d.\n", apiHBAInstance);)
41425 + qla2x00_mbx_q_memb_alloc(ha, &ptmp);
41426 + if (ptmp == NULL) {
41427 + /* can't add any more threads */
41428 + DEBUG2_3_11(printk("qla2x00_mbx_q_add: ERROR no more "
41429 + "ioctl threads allowed. Inst=%d.\n", apiHBAInstance);)
41431 + ret = QL_STATUS_RESOURCE_ERROR;
41433 + if (ha->mbx_q_tail == NULL) {
41434 + /* First thread to queue. */
41435 + set_bit(IOCTL_WANT, &ha->mbx_cmd_flags);
41437 + ha->mbx_q_head = ptmp;
41439 + ha->mbx_q_tail->pnext = ptmp;
41441 + ha->mbx_q_tail = ptmp;
41443 + /* Now init the semaphore */
41444 + init_MUTEX_LOCKED(&ptmp->cmd_sem);
41445 + ret = QL_STATUS_SUCCESS;
41450 + DEBUG11(printk("qla2x00_mbx_q_add: going to release spinlock. "
41451 + "ret_mbq=%p, ret=%d. Inst=%d.\n", *ret_mbq, ret, apiHBAInstance);)
41453 + spin_unlock_irqrestore(&ha->mbx_q_lock, cpu_flags);
41458 +/* Just remove and return first member from mbx_cmdq. Don't free anything. */
41460 +qla2x00_mbx_q_get(scsi_qla_host_t *ha, mbx_cmdq_t **ret_mbq)
41462 + unsigned long cpu_flags;
41464 + spin_lock_irqsave(&ha->mbx_q_lock, cpu_flags);
41466 + DEBUG11(printk("qla2x00_mbx_q_get: got mbx_q spinlock. "
41467 + "Inst=%d.\n", apiHBAInstance);)
41469 + /* Remove from head */
41470 + *ret_mbq = ha->mbx_q_head;
41471 + if (ha->mbx_q_head != NULL) {
41472 + ha->mbx_q_head = ha->mbx_q_head->pnext;
41473 + if (ha->mbx_q_head == NULL) {
41474 + /* That's the last one in queue. */
41475 + ha->mbx_q_tail = NULL;
41477 + (*ret_mbq)->pnext = NULL;
41480 + DEBUG11(printk("qla2x00_mbx_q_remove: return ret_mbq=%p. Going to "
41481 + "release spinlock. Inst=%d.\n", *ret_mbq, apiHBAInstance);)
41483 + spin_unlock_irqrestore(&ha->mbx_q_lock, cpu_flags);
41486 +/* Find a free mbx_q member from the array. Must already got the
41487 + * mbx_q_lock spinlock.
41490 +qla2x00_mbx_q_memb_alloc(scsi_qla_host_t *ha, mbx_cmdq_t **ret_mbx_q_memb)
41492 + mbx_cmdq_t *ptmp = NULL;
41494 + DEBUG11(printk("qla2x00_mbx_q_memb_alloc: entered. "
41495 + "Inst=%d.\n", apiHBAInstance);)
41497 + ptmp = ha->mbx_sem_pool_head;
41498 + if (ptmp != NULL) {
41499 + ha->mbx_sem_pool_head = ptmp->pnext;
41500 + ptmp->pnext = NULL;
41501 + if (ha->mbx_sem_pool_head == NULL) {
41502 + ha->mbx_sem_pool_tail = NULL;
41505 + /* We ran out of pre-allocated semaphores. Try to allocate
41508 + ptmp = (void *)KMEM_ZALLOC(sizeof(mbx_cmdq_t), 40);
41511 + *ret_mbx_q_memb = ptmp;
41513 + DEBUG11(printk("qla2x00_mbx_q_memb_alloc: return waitq_memb=%p. "
41514 + "Inst=%d.\n", *ret_mbx_q_memb, apiHBAInstance);)
41517 +/* Add the specified mbx_q member back to the free semaphore pool. Must
41518 + * already got the mbx_q_lock spinlock.
41521 +qla2x00_mbx_q_memb_free(scsi_qla_host_t *ha, mbx_cmdq_t *pfree_mbx_q_memb)
41523 + DEBUG11(printk("qla2x00_mbx_q_memb_free: entered. Inst=%d.\n",
41524 + apiHBAInstance);)
41526 + if (pfree_mbx_q_memb != NULL) {
41527 + if (ha->mbx_sem_pool_tail != NULL) {
41528 + /* Add to tail */
41529 + ha->mbx_sem_pool_tail->pnext = pfree_mbx_q_memb;
41531 + ha->mbx_sem_pool_head = pfree_mbx_q_memb;
41533 + ha->mbx_sem_pool_tail = pfree_mbx_q_memb;
41536 + /* put it back to the free pool. */
41538 + DEBUG11(printk("qla2x00_mbx_q_memb_free: exiting. "
41539 + "Inst=%d.\n", apiHBAInstance);)
41543 + * qla2x00_mailbox_command
41544 + * Issue mailbox command and waits for completion.
41547 + * ha = adapter block pointer.
41548 + * mcp = driver internal mbx struct pointer.
41551 + * mb[MAX_MAILBOX_REGISTER_COUNT] = returned mailbox data.
41554 + * 0 : QL_STATUS_SUCCESS = cmd performed success
41555 + * 1 : QL_STATUS_ERROR (error encountered)
41556 + * 6 : QL_STATUS_TIMEOUT (timeout condition encountered)
41559 + * Kernel context.
41562 +qla2x00_mailbox_command(scsi_qla_host_t *ha, mbx_cmd_t *mcp)
41564 + unsigned long flags = 0;
41565 + device_reg_t *reg = ha->iobase;
41566 + struct timer_list tmp_intr_timer;
41567 + uint8_t abort_active = test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
41568 + uint8_t io_lock_on = ha->init_done;
41569 + uint8_t mbx_count;
41570 + uint8_t status = 0;
41571 + uint8_t tmp_stat = 0;
41572 + uint16_t command;
41573 + uint16_t *iptr, *optr;
41576 + unsigned long mbx_flags = 0;
41577 + unsigned long wait_time;
41579 + DEBUG11(printk("qla2x00_mailbox_command(%ld): entered.\n",
41582 + * Wait for active mailbox commands to finish by waiting at most
41583 + * tov seconds. This is to serialize actual issuing of mailbox cmds
41584 + * during non ISP abort time.
41586 + if (!abort_active) {
41587 + tmp_stat = qla2x00_get_mbx_access(ha, mcp->tov);
41588 + if (tmp_stat != QL_STATUS_SUCCESS) {
41589 + /* Timeout occurred. Return error. */
41590 + DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): cmd "
41591 + "access timeout. Exiting.\n", ha->host_no);)
41592 + return QL_STATUS_TIMEOUT;
41596 + ha->flags.mbox_busy = TRUE;
41597 + /* Save mailbox command for debug */
41600 + /* Try to get mailbox register access */
41601 + if (!abort_active)
41602 + QLA_MBX_REG_LOCK(ha);
41604 + DEBUG11(printk("scsi%d: prepare to issue mbox cmd=0x%x.\n",
41605 + (int)ha->host_no, mcp->mb[0]);)
41607 + ha->mbox_trace = 0;
41609 + spin_lock_irqsave(&ha->hardware_lock, flags);
41611 + /* Load mailbox registers. */
41612 + optr = (uint16_t *)®->mailbox0;
41613 + mbx_count = MAILBOX_REGISTER_COUNT;
41616 + command = mcp->mb[0];
41617 + mboxes = mcp->out_mb;
41619 + for (cnt = 0; cnt < mbx_count; cnt++) {
41620 +#if defined(ISP2200)
41622 + optr = (uint16_t *)®->mailbox8;
41625 + if (mboxes & BIT_0) {
41626 + WRT_REG_WORD(optr, *iptr);
41634 +#if defined(QL_DEBUG_LEVEL_1)
41635 + printk("qla2x00_mailbox_command: Loaded MBX registers "
41636 + "(displayed in bytes) = \n");
41637 + qla2x00_dump_buffer((uint8_t *)mcp->mb, 16);
41639 + qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x10), 16);
41641 + qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x20), 8);
41643 + printk("qla2x00_mailbox_command: I/O address = %lx.\n",
41645 + qla2x00_dump_regs(ha->host);
41648 + /* Issue set host interrupt command to send cmd out. */
41649 + ha->flags.mbox_int = FALSE;
41650 + clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
41652 + /* Unlock mbx registers and wait for interrupt */
41654 + DEBUG11(printk("qla2x00_mailbox_command: going to unlock irq & "
41655 + "waiting for interrupt. jiffies=%lx.\n", jiffies);)
41657 + /* Wait for mbx cmd completion until timeout */
41659 + if (!abort_active && io_lock_on) {
41660 + /* sleep on completion semaphore */
41661 + DEBUG11(printk("qla2x00_mailbox_command(%ld): "
41662 + "INTERRUPT MODE. Initializing timer.\n",
41665 + init_timer(&tmp_intr_timer);
41666 + tmp_intr_timer.data = (unsigned long)&ha->mbx_intr_sem;
41667 + tmp_intr_timer.expires = jiffies + mcp->tov * HZ;
41668 + tmp_intr_timer.function =
41669 + (void (*)(unsigned long))qla2x00_mbx_sem_timeout;
41671 + DEBUG11(printk("qla2x00_mailbox_command(%ld): "
41672 + "Adding timer.\n", ha->host_no);)
41673 + add_timer(&tmp_intr_timer);
41675 + DEBUG11(printk("qla2x00_mailbox_command: going to "
41676 + "unlock & sleep. time=0x%lx.\n", jiffies);)
41678 + MBOX_TRACE(ha,BIT_0);
41679 + set_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
41681 + WRT_REG_WORD(®->hccr, HCCR_SET_HOST_INT);
41682 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
41684 + if (!abort_active)
41685 + QLA_MBX_REG_UNLOCK(ha);
41687 + MBOX_TRACE(ha,BIT_1);
41689 + /* Wait for either the timer to expire
41690 + * or the mbox completion interrupt
41692 + down_interruptible(&ha->mbx_intr_sem);
41694 + DEBUG11(printk("qla2x00_mailbox_command:"
41696 + "time=0x%lx\n", jiffies);)
41697 + clear_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
41699 + /* delete the timer */
41700 + del_timer(&tmp_intr_timer);
41701 +#if QLA2100_LIPTEST
41702 + if (mbxtimeout) {
41703 + DEBUG(printk("qla2x00_mailbox_command(%ld): "
41704 + "INTERRUPT MODE - testing timeout handling.\n",
41706 + ha->flags.mbox_int= FALSE;
41713 + DEBUG3_11(printk("qla2x00_mailbox_command(%ld): cmd=%x "
41714 + "POLLING MODE.\n", ha->host_no, command);)
41716 + WRT_REG_WORD(®->hccr, HCCR_SET_HOST_INT);
41717 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
41718 + if (!abort_active)
41719 + QLA_MBX_REG_UNLOCK(ha);
41722 + wait_time = jiffies + mcp->tov * HZ; /* wait at most tov secs */
41723 + while (!ha->flags.mbox_int) {
41724 + if (time_after(jiffies, wait_time))
41727 + /* Check for pending interrupts. */
41728 + qla2x00_poll(ha);
41730 + udelay(10); /* v4.27 */
41734 + if (!abort_active)
41735 + QLA_MBX_REG_LOCK(ha);
41737 + /* Check whether we timed out */
41738 + if (ha->flags.mbox_int) {
41740 + DEBUG3_11(printk("qla2x00_mailbox_cmd: cmd %x completed.\n",
41743 + /* Got interrupt. Clear the flag. */
41744 + ha->flags.mbox_int = FALSE;
41745 + clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags);
41747 + if( ha->mailbox_out[0] != MBS_CMD_CMP ) {
41748 + qla2x00_stats.mboxerr++;
41749 + status = QL_STATUS_ERROR;
41752 + /* Load return mailbox registers. */
41754 + iptr = (uint16_t *)&ha->mailbox_out[0];
41755 + mboxes = mcp->in_mb;
41756 + for (cnt = 0; cnt < mbx_count; cnt++) {
41758 + if (mboxes & BIT_0)
41767 +#if defined(QL_DEBUG_LEVEL_2) || defined(QL_DEBUG_LEVEL_3) || \
41768 + defined(QL_DEBUG_LEVEL_11)
41769 + printk("qla2x00_mailbox_command(%ld): **** MB Command Timeout "
41770 + "for cmd %x ****\n", ha->host_no, command);
41771 + printk("qla2x00_mailbox_command: icontrol=%x jiffies=%lx\n",
41772 + RD_REG_WORD(®->ictrl), jiffies);
41773 + printk("qla2x00_mailbox_command: *** mailbox[0] = 0x%x ***\n",
41774 + RD_REG_WORD(optr));
41775 + qla2x00_dump_regs(ha->host);
41778 + qla2x00_stats.mboxtout++;
41779 + status = QL_STATUS_TIMEOUT;
41782 + if (!abort_active)
41783 + QLA_MBX_REG_UNLOCK(ha);
41785 + ha->flags.mbox_busy = FALSE;
41790 + if (!abort_active) {
41791 + DEBUG11(printk("qla2x00_mailbox_cmd: checking for additional "
41792 + "resp interrupt.\n");)
41794 + /* polling mode for non isp_abort commands. */
41795 + qla2x00_poll(ha);
41798 + if (status == QL_STATUS_TIMEOUT ) {
41799 + if (!io_lock_on || (mcp->flags & IOCTL_CMD)) {
41800 + /* not in dpc. schedule it for dpc to take over. */
41801 + DEBUG(printk("qla2x00_mailbox_command(%ld): timeout "
41802 + "schedule isp_abort_needed.\n",
41804 + DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): "
41805 + "timeout schedule isp_abort_needed.\n",
41807 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
41808 + if (ha->dpc_wait && !ha->dpc_active)
41809 + up(ha->dpc_wait);
41811 + } else if (!abort_active) {
41813 + /* call abort directly since we are in the DPC thread */
41814 + DEBUG(printk("qla2x00_mailbox_command(%ld): timeout "
41815 + "calling abort_isp\n", ha->host_no);)
41816 + DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): "
41817 + "timeout calling abort_isp\n", ha->host_no);)
41819 + set_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
41820 + clear_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
41821 + if (qla2x00_abort_isp(ha, 0)) {
41822 + /* failed. retry later. */
41823 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
41825 + clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
41827 + DEBUG(printk("qla2x00_mailbox_command: finished "
41829 + DEBUG2_3_11(printk("qla2x00_mailbox_command: finished "
41834 + /* Allow next mbx cmd to come in. */
41835 + if (!abort_active) {
41836 + tmp_stat = qla2x00_release_mbx_access(ha, mcp->tov);
41839 + status = tmp_stat;
41843 + DEBUG2_3_11(printk("qla2x00_mailbox_command(%ld): **** FAILED. "
41844 + "mbx0=%x, mbx1=%x, mbx2=%x, cmd=%x ****\n",
41845 + ha->host_no, mcp->mb[0], mcp->mb[1], mcp->mb[2], command);)
41847 + DEBUG11(printk("qla2x00_mailbox_command(%ld): done.\n",
41851 + DEBUG11(printk("qla2x00_mailbox_command(%ld): exiting.\n",
41858 + * qla2x00_load_ram
41859 + * Load adapter RAM using DMA.
41862 + * ha = adapter block pointer.
41865 + * qla2x00 local function return status code.
41868 + * Kernel context.
41871 +qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma,
41872 + uint16_t risc_addr, uint16_t risc_code_size)
41876 + mbx_cmd_t *mcp = &mc;
41877 + uint32_t req_len;
41878 + dma_addr_t nml_dma;
41879 + uint32_t nml_len;
41880 + uint32_t normalized;
41882 + DEBUG11(printk("qla2x00_load_ram(%ld): entered.\n",
41885 + req_len = risc_code_size;
41889 + normalized = qla2x00_normalize_dma_addr(
41890 + &req_dma, &req_len,
41891 + &nml_dma, &nml_len);
41893 + /* Load first segment */
41894 + mcp->mb[0] = MBC_LOAD_RAM_A64;
41895 + mcp->mb[1] = risc_addr;
41896 + mcp->mb[2] = MSW(req_dma);
41897 + mcp->mb[3] = LSW(req_dma);
41898 + mcp->mb[4] = (uint16_t)req_len;
41899 + mcp->mb[6] = MSW(MSD(req_dma));
41900 + mcp->mb[7] = LSW(MSD(req_dma));
41902 + mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
41903 + mcp->in_mb = MBX_0;
41906 + rval = (int)qla2x00_mailbox_command(ha, mcp);
41908 + /* Load second segment - if necessary */
41909 + if (normalized && (rval == QL_STATUS_SUCCESS)) {
41910 + mcp->mb[0] = MBC_LOAD_RAM_A64;
41911 + mcp->mb[1] = risc_addr + (uint16_t)req_len;
41912 + mcp->mb[2] = MSW(nml_dma);
41913 + mcp->mb[3] = LSW(nml_dma);
41914 + mcp->mb[4] = (uint16_t)nml_len;
41915 + mcp->mb[6] = MSW(MSD(nml_dma));
41916 + mcp->mb[7] = LSW(MSD(nml_dma));
41918 + mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
41919 + mcp->in_mb = MBX_0;
41922 + rval = (int)qla2x00_mailbox_command(ha, mcp);
41925 + if (rval == QL_STATUS_SUCCESS) {
41927 + DEBUG11(printk("qla2x00_load_ram(%ld): done.\n",
41931 + DEBUG2_3_11(printk("qla2x00_load_ram(%ld): failed. rval=%x "
41933 + ha->host_no, rval, mcp->mb[0]);)
41939 + * qla2x00_load_ram_ext
41940 + * Load adapter extended RAM using DMA.
41943 + * ha = adapter block pointer.
41946 + * qla2x00 local function return status code.
41949 + * Kernel context.
41952 +qla2x00_load_ram_ext(scsi_qla_host_t *ha,
41953 + dma_addr_t req_dma, uint32_t risc_addr, uint16_t risc_code_size)
41957 + mbx_cmd_t *mcp = &mc;
41958 + uint32_t req_len;
41959 + dma_addr_t nml_dma;
41960 + uint32_t nml_len;
41961 + uint32_t normalized;
41963 + DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
41965 + req_len = risc_code_size;
41969 + normalized = qla2x00_normalize_dma_addr(
41970 + &req_dma, &req_len,
41971 + &nml_dma, &nml_len);
41973 + /* Load first segment */
41974 + mcp->mb[0] = MBC_LOAD_RAM_EXTENDED;
41975 + mcp->mb[1] = LSW(risc_addr);
41976 + mcp->mb[2] = MSW(req_dma);
41977 + mcp->mb[3] = LSW(req_dma);
41978 + mcp->mb[4] = (uint16_t)req_len;
41979 + mcp->mb[6] = MSW(MSD(req_dma));
41980 + mcp->mb[7] = LSW(MSD(req_dma));
41981 + mcp->mb[8] = MSW(risc_addr);
41983 + mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
41984 + mcp->in_mb = MBX_0;
41987 + rval = (int)qla2x00_mailbox_command(ha, mcp);
41989 + /* Load second segment - if necessary */
41990 + if (normalized && (rval == QL_STATUS_SUCCESS)) {
41991 + risc_addr += req_len;
41992 + mcp->mb[0] = MBC_LOAD_RAM_EXTENDED;
41993 + mcp->mb[1] = LSW(risc_addr);
41994 + mcp->mb[2] = MSW(nml_dma);
41995 + mcp->mb[3] = LSW(nml_dma);
41996 + mcp->mb[4] = (uint16_t)nml_len;
41997 + mcp->mb[6] = MSW(MSD(nml_dma));
41998 + mcp->mb[7] = LSW(MSD(nml_dma));
41999 + mcp->mb[8] = MSW(risc_addr);
42001 + mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
42002 + mcp->in_mb = MBX_0;
42005 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42008 + if (rval != QL_STATUS_SUCCESS) {
42010 + DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n",
42011 + __func__, ha->host_no, rval, mcp->mb[0]));
42014 + DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42021 + * qla2x00_execute_fw
42022 + * Start adapter firmware.
42025 + * ha = adapter block pointer.
42026 + * TARGET_QUEUE_LOCK must be released.
42027 + * ADAPTER_STATE_LOCK must be released.
42030 + * qla2x00 local function return status code.
42033 + * Kernel context.
42036 +qla2x00_execute_fw(scsi_qla_host_t *ha)
42040 + mbx_cmd_t *mcp = &mc;
42042 + DEBUG11(printk("qla2x00_execute_fw(%ld): entered.\n",
42045 + mcp->mb[0] = MBC_EXECUTE_FIRMWARE;
42046 + mcp->mb[1] = *ha->brd_info->fwinfo[0].fwstart;
42047 + mcp->out_mb = MBX_1|MBX_0;
42048 + if (ha->pdev->device == QLA2322_DEVICE_ID) {
42050 + mcp->out_mb |= MBX_2;
42052 + mcp->in_mb = MBX_0;
42055 + rval = qla2x00_mailbox_command(ha, mcp);
42057 + DEBUG11(printk("qla2x00_execute_fw(%ld): done.\n",
42064 + * qla2x00_get_fw_version
42065 + * Get firmware version.
42068 + * ha: adapter state pointer.
42069 + * major: pointer for major number.
42070 + * minor: pointer for minor number.
42071 + * subminor: pointer for subminor number.
42074 + * qla2x00 local function return status code.
42077 + * Kernel context.
42080 +qla2x00_get_fw_version(scsi_qla_host_t *ha, uint16_t *major,
42081 + uint16_t *minor, uint16_t *subminor, uint16_t *attributes)
42085 + mbx_cmd_t *mcp = &mc;
42087 + DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42089 + mcp->mb[0] = MBC_ABOUT_FIRMWARE;
42090 + mcp->out_mb = MBX_0;
42091 + mcp->in_mb = MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42094 + rval = qla2x00_mailbox_command(ha, mcp);
42096 + /* Return mailbox data. */
42097 + *major = mcp->mb[1];
42098 + *minor = mcp->mb[2];
42099 + *subminor = mcp->mb[3];
42100 + *attributes = mcp->mb[6];
42102 + if (rval != QL_STATUS_SUCCESS) {
42104 + DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42105 + __func__, ha->host_no, rval));
42108 + DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42113 + * qla2x00_get_fw_options
42114 + * Set firmware options.
42117 + * ha = adapter block pointer.
42118 + * fwopt = pointer for firmware options.
42121 + * qla2x00 local function return status code.
42124 + * Kernel context.
42127 +qla2x00_get_fw_options(scsi_qla_host_t *ha,
42128 + uint16_t *fwopts1, uint16_t *fwopts2, uint16_t *fwopts3)
42132 + mbx_cmd_t *mcp = &mc;
42134 + DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42136 + mcp->mb[0] = MBC_GET_FIRMWARE_OPTIONS;
42137 + mcp->out_mb = MBX_0;
42138 + mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
42141 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42143 + if (rval != QL_STATUS_SUCCESS) {
42145 + DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42146 + __func__, ha->host_no, rval));
42148 + *fwopts1 = mcp->mb[1];
42149 + *fwopts2 = mcp->mb[2];
42150 + *fwopts3 = mcp->mb[3];
42152 + DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42160 + * qla2x00_set_fw_options
42161 + * Set firmware options.
42164 + * ha = adapter block pointer.
42165 + * fwopt = pointer for firmware options.
42168 + * qla2x00 local function return status code.
42171 + * Kernel context.
42174 +qla2x00_set_fw_options(scsi_qla_host_t *ha,
42175 + uint16_t fwopts1, uint16_t fwopts2, uint16_t fwopts3,
42176 + uint16_t fwopts10, uint16_t fwopts11)
42180 + mbx_cmd_t *mcp = &mc;
42182 + DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42184 + mcp->mb[0] = MBC_SET_FIRMWARE_OPTIONS;
42185 + mcp->mb[1] = fwopts1;
42186 + mcp->mb[2] = fwopts2;
42187 + mcp->mb[3] = fwopts3;
42188 + mcp->mb[10] = fwopts10;
42189 + mcp->mb[11] = fwopts11;
42190 + mcp->mb[12] = 0; /* Undocumented, but used */
42191 + mcp->out_mb = MBX_12|MBX_11|MBX_10|MBX_3|MBX_2|MBX_1|MBX_0;
42192 + mcp->in_mb = MBX_0;
42196 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42198 + if (rval != QL_STATUS_SUCCESS) {
42200 + DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42201 + __func__, ha->host_no, rval));
42204 + DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42211 + * qla2x00_read_ram_word
42214 + * ha = adapter block pointer.
42217 + * qla2x00 local function return status code.
42220 + * Kernel context.
42223 +qla2x00_read_ram_word(scsi_qla_host_t *ha, uint16_t addr, uint16_t *data)
42227 + mbx_cmd_t *mcp = &mc;
42229 + DEBUG11(printk("qla2x00_read_ram_word(%ld): entered.\n",
42232 + mcp->mb[0] = MBC_READ_RAM_WORD;
42233 + mcp->mb[1] = addr;
42235 + mcp->out_mb = MBX_1|MBX_0;
42236 + mcp->in_mb = MBX_0|MBX_2;
42240 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42242 + if (rval != QL_STATUS_SUCCESS) {
42244 + DEBUG2_3_11(printk("qla2x00_read_ram_word(%ld): failed=%x.\n",
42245 + ha->host_no, rval);)
42247 + *data = mcp->mb[2];
42248 + DEBUG11(printk("qla2x00_read_ram_word(%ld): done.\n",
42256 + * qla2x00_write_ram_word
42259 + * ha = adapter block pointer.
42262 + * qla2x00 local function return status code.
42265 + * Kernel context.
42268 +qla2x00_write_ram_word(scsi_qla_host_t *ha, uint16_t addr, uint16_t data)
42272 + mbx_cmd_t *mcp = &mc;
42274 + DEBUG11(printk("qla2x00_write_ram_word(%ld): entered.\n",
42277 + mcp->mb[0] = MBC_WRITE_RAM_WORD;
42278 + mcp->mb[1] = addr;
42279 + mcp->mb[2] = data;
42280 + mcp->out_mb = MBX_2|MBX_1|MBX_0;
42281 + mcp->in_mb = MBX_0;
42285 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42287 + if (rval != QL_STATUS_SUCCESS) {
42289 + DEBUG2_3_11(printk("qla2x00_write_ram_word(%ld): failed=%x.\n",
42290 + ha->host_no, rval);)
42293 + DEBUG11(printk("qla2x00_write_ram_word(%ld): done.\n",
42301 + * qla2x00_write_ram_word_ext
42304 + * ha = adapter block pointer.
42307 + * qla2x00 local function return status code.
42310 + * Kernel context.
42313 +qla2x00_write_ram_word_ext(scsi_qla_host_t *ha, uint32_t addr, uint16_t data)
42317 + mbx_cmd_t *mcp = &mc;
42319 + DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no));
42321 + mcp->mb[0] = MBC_WRITE_RAM_WORD_EXTENDED;
42322 + mcp->mb[1] = LSW(addr);
42323 + mcp->mb[2] = data;
42324 + mcp->mb[8] = MSW(addr);
42325 + mcp->out_mb = MBX_8|MBX_2|MBX_1|MBX_0;
42326 + mcp->in_mb = MBX_0;
42330 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42332 + if (rval != QL_STATUS_SUCCESS) {
42334 + DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
42335 + __func__, ha->host_no, rval));
42338 + DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no));
42345 + * qla2x00_mbx_reg_test
42346 + * Mailbox register wrap test.
42349 + * ha = adapter block pointer.
42350 + * TARGET_QUEUE_LOCK must be released.
42351 + * ADAPTER_STATE_LOCK must be released.
42354 + * qla2x00 local function return status code.
42357 + * Kernel context.
42360 +qla2x00_mbx_reg_test(scsi_qla_host_t *ha)
42364 + mbx_cmd_t *mcp = &mc;
42366 + DEBUG11(printk("qla2x00_mbx_reg_test(%ld): entered.\n",
42369 + mcp->mb[0] = MBC_MAILBOX_REGISTER_TEST;
42370 + mcp->mb[1] = 0xAAAA;
42371 + mcp->mb[2] = 0x5555;
42372 + mcp->mb[3] = 0xAA55;
42373 + mcp->mb[4] = 0x55AA;
42374 + mcp->mb[5] = 0xA5A5;
42375 + mcp->mb[6] = 0x5A5A;
42376 + mcp->mb[7] = 0x2525;
42377 + mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
42378 + mcp->in_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
42381 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42383 + if (rval == QL_STATUS_SUCCESS) {
42384 + if (mcp->mb[1] != 0xAAAA || mcp->mb[2] != 0x5555 ||
42385 + mcp->mb[3] != 0xAA55 || mcp->mb[4] != 0x55AA)
42386 + rval = QL_STATUS_ERROR;
42387 + if (mcp->mb[5] != 0xA5A5 || mcp->mb[6] != 0x5A5A ||
42388 + mcp->mb[7] != 0x2525)
42389 + rval = QL_STATUS_ERROR;
42392 + if (rval != QL_STATUS_SUCCESS) {
42394 + DEBUG2_3_11(printk("qla2x00_mbx_reg_test(%ld): failed=%x.\n",
42395 + ha->host_no, rval);)
42398 + DEBUG11(printk("qla2x00_mbx_reg_test(%ld): done.\n",
42406 + * qla2x00_verify_checksum
42407 + * Verify firmware checksum.
42410 + * ha = adapter block pointer.
42411 + * TARGET_QUEUE_LOCK must be released.
42412 + * ADAPTER_STATE_LOCK must be released.
42415 + * qla2x00 local function return status code.
42418 + * Kernel context.
42421 +qla2x00_verify_checksum(scsi_qla_host_t *ha)
42425 + mbx_cmd_t *mcp = &mc;
42427 + DEBUG11(printk("qla2x00_verify_checksum(%ld): entered.\n",
42430 + mcp->mb[0] = MBC_VERIFY_CHECKSUM;
42431 + mcp->mb[1] = *ha->brd_info->fwinfo[0].fwstart;
42432 + mcp->out_mb = MBX_1|MBX_0;
42433 + mcp->in_mb = MBX_2|MBX_0;
42436 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42438 + if (rval != QL_STATUS_SUCCESS) {
42440 + DEBUG2_3_11(printk("qla2x00_verify_checksum(%ld): failed=%x.\n",
42441 + ha->host_no, rval);)
42444 + DEBUG11(printk("qla2x00_verify_checksum(%ld): done.\n",
42452 + * qla2x00_issue_iocb
42453 + * Issue IOCB using mailbox command
42456 + * ha = adapter state pointer.
42457 + * buffer = buffer pointer.
42458 + * phys_addr = physical address of buffer.
42459 + * size = size of buffer.
42460 + * TARGET_QUEUE_LOCK must be released.
42461 + * ADAPTER_STATE_LOCK must be released.
42464 + * qla2x00 local function return status code.
42467 + * Kernel context.
42470 +qla2x00_issue_iocb(scsi_qla_host_t *ha, void* buffer, dma_addr_t phys_addr,
42475 + mbx_cmd_t *mcp = &mc;
42477 + ENTER("qla2x00_issue_iocb: started");
42479 + mcp->mb[0] = MBC_IOCB_EXECUTE_A64;
42481 + mcp->mb[2] = MSW(phys_addr);
42482 + mcp->mb[3] = LSW(phys_addr);
42483 + mcp->mb[6] = MSW(MSD(phys_addr));
42484 + mcp->mb[7] = LSW(MSD(phys_addr));
42485 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42486 + mcp->in_mb = MBX_2|MBX_0;
42489 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42491 + if (rval != QLA2X00_SUCCESS) {
42493 + DEBUG(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x",
42494 + ha->host_no,rval);)
42495 + DEBUG2(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x",
42496 + ha->host_no,rval);)
42499 + LEAVE("qla2x00_issue_iocb: exiting normally");
42506 + * qla2x00_abort_command
42507 + * Abort command aborts a specified IOCB.
42510 + * ha = adapter block pointer.
42511 + * sp = SB structure pointer.
42514 + * qla2x00 local function return status code.
42517 + * Kernel context.
42520 +qla2x00_abort_command(scsi_qla_host_t *ha, srb_t *sp)
42522 + unsigned long flags = 0;
42523 + scsi_qla_host_t *curr_ha;
42524 + fc_port_t *fcport;
42529 + mbx_cmd_t *mcp = &mc;
42530 + os_lun_t *lq = sp->lun_queue;
42532 + DEBUG11(printk("qla2x00_abort_command(%ld): entered.\n",
42535 + curr_ha = lq->fclun->fcport->ha;
42536 + t = SCSI_TCN_32(sp->cmd);
42537 + fcport = lq->fclun->fcport;
42538 + if (curr_ha->loop_state == LOOP_DOWN ||
42539 + atomic_read(&fcport->state) == FC_DEVICE_LOST) {
42540 + /* v2.19.8 Ignore abort request if port is down */
42544 + spin_lock_irqsave(&ha->hardware_lock, flags);
42545 + for (handle = 1; handle < MAX_OUTSTANDING_COMMANDS; handle++) {
42546 + if( ha->outstanding_cmds[handle] == sp )
42549 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
42551 + if (handle == MAX_OUTSTANDING_COMMANDS) {
42552 + /* command not found */
42553 + return QL_STATUS_ERROR;
42556 + mcp->mb[0] = MBC_ABORT_COMMAND;
42557 +#if defined(EXTENDED_IDS)
42558 + mcp->mb[1] = fcport->loop_id & 0xFF;
42560 + mcp->mb[1] = fcport->loop_id << 8;
42562 + mcp->mb[2] = (uint16_t)handle;
42563 + mcp->mb[3] = (uint16_t)(handle >> 16);
42564 + mcp->mb[6] = (uint16_t)lq->fclun->lun;
42565 + mcp->out_mb = MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42566 + mcp->in_mb = MBX_0;
42570 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42572 + if (rval != QL_STATUS_SUCCESS) {
42573 + DEBUG2_3_11(printk("qla2x00_abort_command(%ld): failed=%x.\n",
42574 + ha->host_no, rval);)
42576 + sp->flags |= SRB_ABORT_PENDING;
42577 + DEBUG11(printk("qla2x00_abort_command(%ld): done.\n",
42585 + * qla2x00_abort_device
42588 + * ha = adapter block pointer.
42589 + * loop_id = FC loop ID
42590 + * lun = SCSI LUN.
42593 + * qla2x00 local function return status code.
42596 + * Kernel context.
42599 +qla2x00_abort_device(scsi_qla_host_t *ha, uint16_t loop_id, uint16_t lun)
42603 + mbx_cmd_t *mcp = &mc;
42605 + DEBUG11(printk("qla2x00_abort_device(%ld): entered.\n",
42608 + mcp->mb[0] = MBC_ABORT_DEVICE;
42609 +#if defined(EXTENDED_IDS)
42610 + mcp->mb[1] = loop_id & 0xFF;
42612 + mcp->mb[1] = loop_id << 8;
42614 + mcp->mb[2] = lun;
42615 + mcp->out_mb = MBX_2|MBX_1|MBX_0;
42616 + mcp->in_mb = MBX_0;
42619 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42621 + /* Issue marker command. */
42622 + qla2x00_marker(ha, loop_id, lun, MK_SYNC_ID_LUN);
42624 + if (rval != QL_STATUS_SUCCESS) {
42625 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
42626 + if (ha->dpc_wait && !ha->dpc_active)
42627 + up(ha->dpc_wait);
42628 + DEBUG2_3_11(printk("qla2x00_abort_device(%ld): failed=%x.\n",
42629 + ha->host_no, rval);)
42632 + DEBUG11(printk("qla2x00_abort_device(%ld): done.\n",
42641 + * qla2x00_abort_target
42642 + * Issue abort target mailbox command.
42645 + * ha = adapter block pointer.
42648 + * TARGET_QUEUE_LOCK must be released.
42649 + * ADAPTER_STATE_LOCK must be released.
42652 + * qla2x00 local function return status code.
42655 + * Kernel context.
42658 +qla2x00_abort_target(fc_port_t *fcport)
42661 + uint16_t loop_id;
42663 + mbx_cmd_t *mcp = &mc;
42665 + DEBUG11(printk("qla2x00_abort_target(%ld): entered.\n",
42666 + fcport->ha->host_no);)
42668 + if (fcport == NULL) {
42669 + /* no target to abort */
42673 + loop_id = fcport->loop_id;
42675 + mcp->mb[0] = MBC_ABORT_TARGET;
42676 +#if defined(EXTENDED_IDS)
42677 + mcp->mb[1] = loop_id & 0xFF;
42679 + mcp->mb[1] = loop_id << 8;
42681 + mcp->mb[2] = fcport->ha->loop_reset_delay;
42682 + mcp->out_mb = MBX_2|MBX_1|MBX_0;
42683 +#if defined(EXTENDED_IDS)
42685 + mcp->out_mb |= MBX_10;
42687 + mcp->in_mb = MBX_0;
42690 + rval = (int)qla2x00_mailbox_command(fcport->ha, mcp);
42692 + /* Issue marker command. */
42693 +/* qla2x00_marker(fcport->ha, loop_id, 0, MK_SYNC_ID);*/
42694 + fcport->ha->marker_needed = 1;
42696 + if (rval != QL_STATUS_SUCCESS) {
42697 +/* set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
42698 + if (ha->dpc_wait && !ha->dpc_active)
42699 + up(ha->dpc_wait); */
42700 + DEBUG2_3_11(printk("qla2x00_abort_target(%ld): failed=%x.\n",
42701 + fcport->ha->host_no, rval);)
42704 + DEBUG11(printk("qla2x00_abort_target(%ld): done.\n",
42705 + fcport->ha->host_no);)
42713 + * qla2x00_target_reset
42714 + * Issue target reset mailbox command.
42717 + * ha = adapter block pointer.
42718 + * TARGET_QUEUE_LOCK must be released.
42719 + * ADAPTER_STATE_LOCK must be released.
42722 + * qla2x00 local function return status code.
42725 + * Kernel context.
42728 +qla2x00_target_reset(scsi_qla_host_t *ha, uint16_t b, uint16_t t)
42732 + mbx_cmd_t *mcp = &mc;
42735 + DEBUG11(printk("qla2x00_target_reset(%ld): entered.\n", ha->host_no);)
42737 + tgt = TGT_Q(ha, t);
42738 + if (tgt->vis_port == NULL) {
42739 + /* no target to abort */
42742 + if (atomic_read(&tgt->vis_port->state) != FC_ONLINE) {
42743 + /* target not online */
42747 + mcp->mb[0] = MBC_TARGET_RESET;
42748 +#if defined(EXTENDED_IDS)
42749 + mcp->mb[1] = tgt->vis_port->loop_id & 0xFF;
42751 + mcp->mb[1] = tgt->vis_port->loop_id << 8;
42753 + mcp->mb[2] = ha->loop_reset_delay;
42754 + mcp->out_mb = MBX_2|MBX_1|MBX_0;
42755 + mcp->in_mb = MBX_0;
42758 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42760 + if (rval != QL_STATUS_SUCCESS) {
42762 + DEBUG2_3_11(printk("qla2x00_target_reset(%ld): failed=%x.\n",
42763 + ha->host_no, rval);)
42766 + DEBUG11(printk("qla2x00_target_reset(%ld): done.\n",
42774 + * qla2x00_get_adapter_id
42775 + * Get adapter ID and topology.
42778 + * ha = adapter block pointer.
42779 + * id = pointer for loop ID.
42780 + * al_pa = pointer for AL_PA.
42781 + * area = pointer for area.
42782 + * domain = pointer for domain.
42783 + * top = pointer for topology.
42784 + * TARGET_QUEUE_LOCK must be released.
42785 + * ADAPTER_STATE_LOCK must be released.
42788 + * qla2x00 local function return status code.
42791 + * Kernel context.
42794 +qla2x00_get_adapter_id(scsi_qla_host_t *ha, uint16_t *id, uint8_t *al_pa,
42795 + uint8_t *area, uint8_t *domain, uint16_t *top)
42799 + mbx_cmd_t *mcp = &mc;
42801 + DEBUG11(printk("qla2x00_get_adapter_id(%ld): entered.\n",
42804 + mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID;
42805 + mcp->out_mb = MBX_0;
42806 + mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
42809 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42811 + /* Return data. */
42812 + *id = mcp->mb[1];
42813 + *al_pa = LSB(mcp->mb[2]);
42814 + *area = MSB(mcp->mb[2]);
42815 + *domain = LSB(mcp->mb[3]);
42816 + *top = mcp->mb[6];
42818 + if (rval != QL_STATUS_SUCCESS) {
42820 + DEBUG2_3_11(printk("qla2x00_get_adapter_id(%ld): failed=%x.\n",
42821 + ha->host_no, rval);)
42824 + DEBUG11(printk("qla2x00_get_adapter_id(%ld): done.\n",
42832 + * qla2x00_get_retry_cnt
42833 + * Get current firmware login retry count and delay.
42836 + * ha = adapter block pointer.
42837 + * retry_cnt = pointer to login retry count.
42838 + * tov = pointer to login timeout value.
42841 + * qla2x00 local function return status code.
42844 + * Kernel context.
42847 +qla2x00_get_retry_cnt(scsi_qla_host_t *ha, uint8_t *retry_cnt, uint8_t *tov)
42852 + mbx_cmd_t *mcp = &mc;
42854 + DEBUG11(printk("qla2x00_get_retry_cnt(%ld): entered.\n",
42857 + mcp->mb[0] = MBC_GET_RETRY_COUNT;
42858 + mcp->out_mb = MBX_0;
42859 + mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
42862 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42864 + if (rval != QL_STATUS_SUCCESS) {
42866 + DEBUG2_3_11(printk("qla2x00_get_retry_cnt(%ld): failed = %x.\n",
42867 + ha->host_no, mcp->mb[0]);)
42869 + /* Convert returned data and check our values. */
42870 + ratov = (mcp->mb[3]/2) / 10; /* mb[3] value is in 100ms */
42871 + if (mcp->mb[1] * ratov > (*retry_cnt) * (*tov)) {
42872 + /* Update to the larger values */
42873 + *retry_cnt = (uint8_t)mcp->mb[1];
42877 + DEBUG11(printk("qla2x00_get_retry_cnt(%ld): done. mb3=%d "
42878 + "ratov=%d.\n", ha->host_no, mcp->mb[3], ratov);)
42885 + * qla2x00_loopback_test
42886 + * Send out a LOOPBACK mailbox command.
42889 + * ha = adapter block pointer.
42890 + * retry_cnt = pointer to login retry count.
42891 + * tov = pointer to login timeout value.
42894 + * qla2x00 local function return status code.
42897 + * Kernel context.
42900 +qla2x00_loopback_test(scsi_qla_host_t *ha, INT_LOOPBACK_REQ *req,
42901 + uint16_t *ret_mb)
42905 + mbx_cmd_t *mcp = &mc;
42907 + memset(mcp->mb, 0 , sizeof(mcp->mb));
42909 + mcp->mb[0] = MBC_DIAGNOSTIC_LOOP_BACK;
42910 + mcp->mb[1] = req->Options;
42911 + mcp->mb[10] = LSW(req->TransferCount);
42912 + mcp->mb[11] = MSW(req->TransferCount);
42914 + mcp->mb[14] = LSW(ha->ioctl_mem_phys); /* send data address */
42915 + mcp->mb[15] = MSW(ha->ioctl_mem_phys);
42916 + mcp->mb[20] = LSW(MSD(ha->ioctl_mem_phys));
42917 + mcp->mb[21] = MSW(MSD(ha->ioctl_mem_phys));
42919 + mcp->mb[16] = LSW(ha->ioctl_mem_phys); /* rcv data address */
42920 + mcp->mb[17] = MSW(ha->ioctl_mem_phys);
42921 + mcp->mb[6] = LSW(MSD(ha->ioctl_mem_phys));
42922 + mcp->mb[7] = MSW(MSD(ha->ioctl_mem_phys));
42924 + mcp->mb[18] = LSW(req->IterationCount); /* iteration count lsb */
42925 + mcp->mb[19] = MSW(req->IterationCount); /* iteration count msb */
42927 + mcp->out_mb = MBX_21|MBX_20|MBX_19|MBX_18|MBX_17|MBX_16|MBX_15|
42928 + MBX_14|MBX_13|MBX_12|MBX_11|MBX_10|MBX_7|MBX_6|MBX_1|MBX_0;
42929 + mcp->in_mb = MBX_19|MBX_18|MBX_3|MBX_2|MBX_1|MBX_0;
42930 + mcp->buf_size = req->TransferCount;
42931 + mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
42934 + DEBUG11(printk("qla2x00_send_loopback: req.Options=%x iterations=%x "
42935 + "MAILBOX_CNT=%d.\n", req->Options, req->IterationCount,
42936 + MAILBOX_REGISTER_COUNT);)
42938 + rval = qla2x00_mailbox_command(ha, mcp);
42940 + /* Always copy back return mailbox values. */
42941 + memcpy((void *)ret_mb, (void *)mcp->mb, sizeof(mcp->mb));
42943 + if (rval != QL_STATUS_SUCCESS) {
42945 + DEBUG2_3_11(printk(
42946 + "qla2x00_loopback_test(%ld): mailbox command FAILED=%x.\n",
42947 + ha->host_no, mcp->mb[0]);)
42951 + "qla2x00_loopback_test(%ld): done.\n", ha->host_no);)
42958 + * qla2x00_init_firmware
42959 + * Initialize adapter firmware.
42962 + * ha = adapter block pointer.
42963 + * dptr = Initialization control block pointer.
42964 + * size = size of initialization control block.
42965 + * TARGET_QUEUE_LOCK must be released.
42966 + * ADAPTER_STATE_LOCK must be released.
42969 + * qla2x00 local function return status code.
42972 + * Kernel context.
42975 +qla2x00_init_firmware(scsi_qla_host_t *ha, uint16_t size)
42979 + mbx_cmd_t *mcp = &mc;
42981 + DEBUG11(printk("qla2x00_init_firmware(%ld): entered.\n",
42984 + mcp->mb[0] = MBC_INITIALIZE_FIRMWARE;
42985 + mcp->mb[2] = MSW(ha->init_cb_dma);
42986 + mcp->mb[3] = LSW(ha->init_cb_dma);
42989 + mcp->mb[6] = MSW(MSD(ha->init_cb_dma));
42990 + mcp->mb[7] = LSW(MSD(ha->init_cb_dma));
42991 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
42992 + mcp->in_mb = MBX_5|MBX_4|MBX_0;
42993 + mcp->buf_size = size;
42994 + mcp->flags = MBX_DMA_OUT;
42996 + rval = (int)qla2x00_mailbox_command(ha, mcp);
42998 + if (rval != QL_STATUS_SUCCESS) {
43000 + DEBUG2_3_11(printk("qla2x00_init_firmware(%ld): failed=%x "
43002 + ha->host_no, rval, mcp->mb[0]);)
43005 + DEBUG11(printk("qla2x00_init_firmware(%ld): done.\n",
43013 + * qla2x00_get_port_database
43014 + * Issue normal/enhanced get port database mailbox command
43015 + * and copy device name as necessary.
43018 + * ha = adapter state pointer.
43019 + * dev = structure pointer.
43020 + * opt = enhanced cmd option byte.
43023 + * qla2x00 local function return status code.
43026 + * Kernel context.
43029 +qla2x00_get_port_database(scsi_qla_host_t *ha, fcdev_t *dev, uint8_t opt)
43033 + mbx_cmd_t *mcp = &mc;
43034 + port_database_t *pd;
43035 + dma_addr_t phys_address = 0;
43037 + DEBUG11(printk("qla2x00_get_port_database(%ld): entered.\n",
43040 + pd = pci_alloc_consistent(ha->pdev, PORT_DATABASE_SIZE, &phys_address);
43041 + if (pd == NULL) {
43042 + DEBUG2_3_11(printk("qla2x00_get_port_database(%ld): **** "
43043 + "Mem Alloc Failed ****",
43045 + return QL_STATUS_RESOURCE_ERROR;
43048 + memset(pd, 0, PORT_DATABASE_SIZE);
43051 + mcp->mb[0] = MBC_ENHANCED_GET_PORT_DATABASE;
43053 + mcp->mb[0] = MBC_GET_PORT_DATABASE;
43055 +#if defined(EXTENDED_IDS)
43056 + mcp->mb[1] = dev->loop_id & 0xFF;
43058 + mcp->mb[1] = dev->loop_id << 8 | opt;
43060 + mcp->mb[2] = MSW(phys_address);
43061 + mcp->mb[3] = LSW(phys_address);
43062 + mcp->mb[6] = MSW(MSD(phys_address));
43063 + mcp->mb[7] = LSW(MSD(phys_address));
43064 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43065 +#if defined(EXTENDED_IDS)
43066 + mcp->mb[10] = opt;
43067 + mcp->out_mb |= MBX_10;
43069 + mcp->in_mb = MBX_0;
43070 + mcp->buf_size = PORT_DATABASE_SIZE;
43071 + mcp->flags = MBX_DMA_IN;
43072 + /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/
43073 + mcp->tov = ha->login_timeout * 2;
43074 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43076 + if (rval == QL_STATUS_SUCCESS) {
43077 + /* Save some data */
43078 + /* Names are big endian. */
43079 + memcpy((void *)&dev->name[0],(void *)&pd->node_name[0], 8);
43080 + memcpy((void *)&dev->wwn[0], (void *)&pd->port_name[0], 8);
43082 + /* Get port_id of device. */
43083 + dev->d_id.b.al_pa = pd->port_id[2];
43084 + dev->d_id.b.area = pd->port_id[3];
43085 + dev->d_id.b.domain = pd->port_id[0];
43086 + dev->d_id.b.rsvd_1 = 0;
43088 + /* Get initiator status of device. */
43089 + pd->prli_svc_param_word_3[0] & BIT_5 ?
43090 + (dev->flag = dev->flag | DEV_INITIATOR) :
43091 + (dev->flag = dev->flag & ~DEV_INITIATOR);
43093 + /* Check for logged in and whether target device. */
43094 + if (pd->master_state != PD_STATE_PORT_LOGGED_IN &&
43095 + pd->slave_state != PD_STATE_PORT_LOGGED_IN) {
43096 + rval = QL_STATUS_ERROR;
43097 + } else if (pd->master_state == PD_STATE_PORT_UNAVAILABLE) {
43098 + rval = QL_STATUS_ERROR;
43102 + pci_free_consistent(ha->pdev, PORT_DATABASE_SIZE, pd, phys_address);
43104 + if (rval != QL_STATUS_SUCCESS) {
43106 + DEBUG2_3_11(printk("qla2x00_get_port_database(%ld): "
43107 + "failed=%x.\n", ha->host_no, rval);)
43110 + DEBUG11(printk("qla2x00_get_port_database(%ld): done.\n",
43118 + * qla2x00_get_firmware_state
43119 + * Get adapter firmware state.
43122 + * ha = adapter block pointer.
43123 + * dptr = pointer for firmware state.
43124 + * TARGET_QUEUE_LOCK must be released.
43125 + * ADAPTER_STATE_LOCK must be released.
43128 + * qla2x00 local function return status code.
43131 + * Kernel context.
43134 +qla2x00_get_firmware_state(scsi_qla_host_t *ha, uint16_t *dptr)
43138 + mbx_cmd_t *mcp = &mc;
43140 + DEBUG11(printk("qla2x00_get_firmware_state(%ld): entered.\n",
43143 + mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
43144 + mcp->out_mb = MBX_0;
43145 + mcp->in_mb = MBX_2|MBX_1|MBX_0;
43148 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43150 + /* Return firmware state. */
43151 + *dptr = mcp->mb[1];
43153 + if (rval != QL_STATUS_SUCCESS) {
43155 + DEBUG2_3_11(printk("qla2x00_get_firmware_state(%ld): "
43156 + "failed=%x.\n", ha->host_no, rval);)
43159 + DEBUG11(printk("qla2x00_get_firmware_state(%ld): done.\n",
43167 + * qla2x00_get_port_name
43168 + * Issue get port name mailbox command.
43169 + * Returned name is in big endian format.
43172 + * ha = adapter block pointer.
43173 + * loop_id = loop ID of device.
43174 + * name = pointer for name.
43175 + * TARGET_QUEUE_LOCK must be released.
43176 + * ADAPTER_STATE_LOCK must be released.
43179 + * qla2x00 local function return status code.
43182 + * Kernel context.
43185 +qla2x00_get_port_name(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t *name,
43190 + mbx_cmd_t *mcp = &mc;
43192 + DEBUG11(printk("qla2x00_get_port_name(%ld): entered.\n",
43195 + mcp->mb[0] = MBC_GET_PORT_NAME;
43196 +#if defined(EXTENDED_IDS)
43197 + mcp->mb[1] = loop_id & 0xFF;
43199 + mcp->mb[1] = loop_id << 8 | opt;
43201 + mcp->out_mb = MBX_1|MBX_0;
43202 +#if defined(EXTENDED_IDS)
43203 + mcp->mb[10] = opt;
43204 + mcp->out_mb |= MBX_10;
43206 + mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43209 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43211 + if (rval != QL_STATUS_SUCCESS) {
43213 + DEBUG2_3_11(printk("qla2x00_get_port_name(%ld): failed=%x.\n",
43214 + ha->host_no, rval);)
43216 + if (name != NULL) {
43217 + /* This function returns name in big endian. */
43218 + name[0] = LSB(mcp->mb[2]);
43219 + name[1] = MSB(mcp->mb[2]);
43220 + name[2] = LSB(mcp->mb[3]);
43221 + name[3] = MSB(mcp->mb[3]);
43222 + name[4] = LSB(mcp->mb[6]);
43223 + name[5] = MSB(mcp->mb[6]);
43224 + name[6] = LSB(mcp->mb[7]);
43225 + name[7] = MSB(mcp->mb[7]);
43228 + DEBUG11(printk("qla2x00_get_port_name(%ld): done.\n",
43236 + * qla2x00_get_link_status
43239 + * ha = adapter block pointer.
43240 + * loop_id = device loop ID.
43241 + * ret_buf = pointer to link status return buffer.
43245 + * BIT_0 = mem alloc error.
43246 + * BIT_1 = mailbox error.
43249 +qla2x00_get_link_status(scsi_qla_host_t *ha, uint8_t loop_id, void *ret_buf,
43250 + uint16_t *status)
43254 + mbx_cmd_t *mcp = &mc;
43255 + link_stat_t *stat_buf;
43256 + dma_addr_t phys_address = 0;
43259 + DEBUG11(printk("qla2x00_get_link_status(%ld): entered.\n",
43262 + stat_buf = pci_alloc_consistent(ha->pdev, sizeof(link_stat_t),
43264 + if (stat_buf == NULL) {
43265 + DEBUG2_3_11(printk("qla2x00_get_link_status(%ld): Failed to "
43266 + "allocate memory.\n", ha->host_no));
43270 + memset(stat_buf, 0, sizeof(link_stat_t));
43272 + mcp->mb[0] = MBC_GET_LINK_STATUS;
43273 +#if defined(EXTENDED_IDS)
43274 + mcp->mb[1] = loop_id & 0xFF;
43276 + mcp->mb[1] = loop_id << 8;
43278 + mcp->mb[2] = MSW(phys_address);
43279 + mcp->mb[3] = LSW(phys_address);
43280 + mcp->mb[6] = MSW(MSD(phys_address));
43281 + mcp->mb[7] = LSW(MSD(phys_address));
43282 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43283 +#if defined(EXTENDED_IDS)
43285 + mcp->out_mb |= MBX_10;
43287 + mcp->in_mb = MBX_0;
43289 + mcp->flags = IOCTL_CMD;
43290 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43292 + if (rval == QL_STATUS_SUCCESS) {
43294 + if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
43295 + DEBUG2_3_11(printk("qla2x00_get_link_status(%ld): cmd "
43296 + "failed. mbx0=%x.\n", ha->host_no, mcp->mb[0]);)
43297 + status[0] = mcp->mb[0];
43300 + /* copy over data */
43301 + memcpy(ret_buf, stat_buf,sizeof(link_stat_t));
43302 + DEBUG(printk("qla2x00_get_link_status(%ld): stat dump: "
43303 + "fail_cnt=%d loss_sync=%d loss_sig=%d seq_err=%d "
43304 + "inval_xmt_word=%d inval_crc=%d.\n",
43306 + stat_buf->link_fail_cnt, stat_buf->loss_sync_cnt,
43307 + stat_buf->loss_sig_cnt, stat_buf->prim_seq_err_cnt,
43308 + stat_buf->inval_xmit_word_cnt,
43309 + stat_buf->inval_crc_cnt);)
43310 + DEBUG11(printk("qla2x00_get_link_status(%ld): stat "
43311 + "dump: fail_cnt=%d loss_sync=%d loss_sig=%d "
43312 + "seq_err=%d inval_xmt_word=%d inval_crc=%d.\n",
43314 + stat_buf->link_fail_cnt, stat_buf->loss_sync_cnt,
43315 + stat_buf->loss_sig_cnt, stat_buf->prim_seq_err_cnt,
43316 + stat_buf->inval_xmit_word_cnt,
43317 + stat_buf->inval_crc_cnt);)
43321 + DEBUG2_3_11(printk("qla2x00_get_link_status(%ld): failed=%x.\n",
43322 + ha->host_no, rval);)
43326 + pci_free_consistent(ha->pdev, sizeof(link_stat_t),
43327 + stat_buf, phys_address);
43333 + * qla2x00_lip_reset
43334 + * Issue LIP reset mailbox command.
43337 + * ha = adapter block pointer.
43338 + * TARGET_QUEUE_LOCK must be released.
43339 + * ADAPTER_STATE_LOCK must be released.
43342 + * qla2x00 local function return status code.
43345 + * Kernel context.
43348 +qla2x00_lip_reset(scsi_qla_host_t *ha)
43352 + mbx_cmd_t *mcp = &mc;
43354 + DEBUG11(printk("qla2x00_lip_reset(%ld): entered.\n",
43357 + mcp->mb[0] = MBC_LIP_RESET;
43358 +#if defined(EXTENDED_IDS)
43359 + mcp->mb[1] = 0x00ff;
43361 + mcp->mb[1] = 0xff00;
43363 + mcp->mb[2] = ha->loop_reset_delay;
43365 + mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
43366 +#if defined(EXTENDED_IDS)
43368 + mcp->out_mb |= MBX_10;
43370 + mcp->in_mb = MBX_0;
43373 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43375 + if (rval != QL_STATUS_SUCCESS) {
43377 + DEBUG2_3_11(printk("qla2x00_lip_reset(%ld): failed=%x.\n",
43378 + ha->host_no, rval);)
43381 + DEBUG11(printk("qla2x00_lip_reset(%ld): done.\n",
43389 + * qla2x00_send_sns
43390 + * Send SNS command.
43393 + * ha = adapter block pointer.
43394 + * sns = pointer for command.
43395 + * cmd_size = command size.
43396 + * buf_size = response/command size.
43397 + * TARGET_QUEUE_LOCK must be released.
43398 + * ADAPTER_STATE_LOCK must be released.
43401 + * qla2x00 local function return status code.
43404 + * Kernel context.
43407 +qla2x00_send_sns(scsi_qla_host_t *ha, dma_addr_t sns_phys_address,
43408 + uint16_t cmd_size, size_t buf_size)
43412 + mbx_cmd_t *mcp = &mc;
43414 + DEBUG11(printk("qla2x00_send_sns(%ld): entered.\n",
43417 + mcp->mb[0] = MBC_SEND_SNS_COMMAND;
43418 + mcp->mb[1] = cmd_size;
43419 + mcp->mb[2] = MSW(sns_phys_address);
43420 + mcp->mb[3] = LSW(sns_phys_address);
43421 + mcp->mb[6] = MSW(MSD(sns_phys_address));
43422 + mcp->mb[7] = LSW(MSD(sns_phys_address));
43423 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43424 + mcp->in_mb = MBX_0|MBX_1;
43425 + mcp->buf_size = buf_size;
43426 + mcp->flags = MBX_DMA_OUT|MBX_DMA_IN;
43427 + /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/
43428 + mcp->tov = ha->login_timeout * 2;
43430 + DEBUG11(printk("qla2x00_send_sns: retry cnt=%d ratov=%d total "
43431 + "tov=%d.\n", ha->retry_count, ha->login_timeout, mcp->tov);)
43433 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43435 + if (rval != QL_STATUS_SUCCESS) {
43437 + DEBUG(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x "
43439 + ha->host_no, rval, mcp->mb[0], mcp->mb[1]);)
43440 + DEBUG2_3_11(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x "
43442 + ha->host_no, rval, mcp->mb[0], mcp->mb[1]);)
43445 + DEBUG11(printk("qla2x00_send_sns(%ld): done.\n",
43453 + * qla2x00_login_fabric
43454 + * Issue login fabric port mailbox command.
43457 + * ha = adapter block pointer.
43458 + * loop_id = device loop ID.
43459 + * domain = device domain.
43460 + * area = device area.
43461 + * al_pa = device AL_PA.
43462 + * status = pointer for return status.
43463 + * opt = command options.
43464 + * TARGET_QUEUE_LOCK must be released.
43465 + * ADAPTER_STATE_LOCK must be released.
43468 + * qla2x00 local function return status code.
43471 + * Kernel context.
43474 +qla2x00_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
43475 + uint8_t area, uint8_t al_pa, uint16_t *status, uint8_t opt)
43479 + mbx_cmd_t *mcp = &mc;
43481 + DEBUG11(printk("qla2x00_login_fabric(%ld): entered.\n",
43484 + mcp->mb[0] = MBC_LOGIN_FABRIC_PORT;
43485 +#if defined(EXTENDED_IDS)
43486 + mcp->mb[1] = loop_id & 0xFF;
43488 + mcp->mb[1] = (loop_id << 8) | opt;
43490 + mcp->mb[2] = domain;
43491 + mcp->mb[3] = area << 8 | al_pa;
43492 + mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
43493 +#if defined(EXTENDED_IDS)
43494 + mcp->mb[10] = opt;
43495 + mcp->out_mb |= MBX_10;
43497 + mcp->in_mb = MBX_2|MBX_1|MBX_0;
43498 + /*mcp->tov = ha->retry_count * ha->login_timeout * 2;*/
43499 + mcp->tov = ha->login_timeout * 2;
43501 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43503 + /* Return mailbox statuses. */
43504 + if (status != NULL) {
43505 + *status++ = mcp->mb[0];
43506 + *status++ = mcp->mb[1];
43507 + *status = mcp->mb[2];
43510 + if (rval != QL_STATUS_SUCCESS) {
43511 + /* RLU tmp code: need to change main mailbox_command function to
43512 + * return ok even when the mailbox completion value is not
43513 + * SUCCESS. The caller needs to be responsible to interpret
43514 + * the return values of this mailbox command if we're not
43515 + * to change too much of the existing code.
43517 + if (mcp->mb[0] == 0x4001 || mcp->mb[0] == 0x4002 ||
43518 + mcp->mb[0] == 0x4003 || mcp->mb[0] == 0x4005 ||
43519 + mcp->mb[0] == 0x4006)
43520 + rval = QL_STATUS_SUCCESS;
43523 + DEBUG2_3_11(printk("qla2x00_login_fabric(%ld): failed=%x "
43524 + "mb[1]=%x mb[2]=%x.\n",
43525 + ha->host_no, rval, mcp->mb[1], mcp->mb[2]);)
43528 + DEBUG11(printk("qla2x00_login_fabric(%ld): done.\n",
43536 + * qla2x00_login_local_device
43537 + * Issue login loop port mailbox command.
43540 + * ha = adapter block pointer.
43541 + * loop_id = device loop ID.
43542 + * opt = command options.
43545 + * Return status code.
43548 + * Kernel context.
43552 +qla2x00_login_local_device(scsi_qla_host_t *ha,
43553 + uint16_t loop_id, uint16_t *mb_ret, uint8_t opt)
43557 + mbx_cmd_t *mcp = &mc;
43559 + DEBUG3(printk("%s(%ld): entered.\n", __func__, ha->host_no);)
43561 + mcp->mb[0] = MBC_LOGIN_LOOP_PORT;
43562 +#if defined(EXTENDED_IDS)
43563 + mcp->mb[1] = loop_id & 0xFF;
43565 + mcp->mb[1] = (loop_id << 8);
43567 + mcp->mb[2] = opt;
43568 + mcp->out_mb = MBX_2|MBX_1|MBX_0;
43569 + mcp->in_mb = MBX_7|MBX_6|MBX_1|MBX_0;
43570 + mcp->tov = ha->login_timeout * 2;
43572 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43574 + /* Return mailbox statuses. */
43575 + if (mb_ret != NULL) {
43576 + mb_ret[0] = mcp->mb[0];
43577 + mb_ret[1] = mcp->mb[1];
43578 + mb_ret[6] = mcp->mb[6];
43579 + mb_ret[7] = mcp->mb[7];
43582 + if (rval != QL_STATUS_SUCCESS) {
43583 + /* AV tmp code: need to change main mailbox_command function to
43584 + * return ok even when the mailbox completion value is not
43585 + * SUCCESS. The caller needs to be responsible to interpret
43586 + * the return values of this mailbox command if we're not
43587 + * to change too much of the existing code.
43589 + if (mcp->mb[0] == 0x4005 || mcp->mb[0] == 0x4006)
43590 + rval = QL_STATUS_SUCCESS;
43592 + DEBUG(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x "
43593 + "mb[6]=%x mb[7]=%x.\n",
43594 + __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1],
43595 + mcp->mb[6], mcp->mb[7]);)
43596 + DEBUG2_3(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x "
43597 + "mb[6]=%x mb[7]=%x.\n",
43598 + __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1],
43599 + mcp->mb[6], mcp->mb[7]);)
43602 + DEBUG3(printk("%s(%ld): done.\n", __func__, ha->host_no);)
43609 + * qla2x00_fabric_logout
43610 + * Issue logout fabric port mailbox command.
43613 + * ha = adapter block pointer.
43614 + * loop_id = device loop ID.
43615 + * TARGET_QUEUE_LOCK must be released.
43616 + * ADAPTER_STATE_LOCK must be released.
43619 + * qla2x00 local function return status code.
43622 + * Kernel context.
43625 +qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id)
43629 + mbx_cmd_t *mcp = &mc;
43631 + DEBUG11(printk("qla2x00_fabric_logout(%ld): entered.\n",
43634 + mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT;
43635 +#if defined(EXTENDED_IDS)
43636 + mcp->mb[1] = loop_id & 0xFF;
43638 + mcp->mb[1] = loop_id << 8;
43640 + mcp->out_mb = MBX_1|MBX_0;
43641 +#if defined(EXTENDED_IDS)
43643 + mcp->out_mb |= MBX_10;
43645 + mcp->in_mb = MBX_1|MBX_0;
43648 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43650 + if (rval != QL_STATUS_SUCCESS) {
43652 + DEBUG2_3_11(printk("qla2x00_fabric_logout(%ld): failed=%x "
43654 + ha->host_no, rval, mcp->mb[1]);)
43657 + DEBUG11(printk("qla2x00_fabric_logout(%ld): done.\n",
43665 + * qla2x00_full_login_lip
43666 + * Issue full login LIP mailbox command.
43669 + * ha = adapter block pointer.
43670 + * TARGET_QUEUE_LOCK must be released.
43671 + * ADAPTER_STATE_LOCK must be released.
43674 + * qla2x00 local function return status code.
43677 + * Kernel context.
43680 +qla2x00_full_login_lip(scsi_qla_host_t *ha)
43684 + mbx_cmd_t *mcp = &mc;
43686 + DEBUG11(printk("qla2x00_full_login_lip(%ld): entered.\n",
43689 + mcp->mb[0] = MBC_LIP_FULL_LOGIN;
43693 + mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
43694 + mcp->in_mb = MBX_0;
43697 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43699 + if (rval != QL_STATUS_SUCCESS) {
43701 + DEBUG2_3_11(printk("qla2x00_full_login_lip(%ld): failed=%x.\n",
43702 + ha->instance, rval);)
43705 + DEBUG11(printk("qla2x00_full_login_lip(%ld): done.\n",
43713 + * qla2x00_get_port_list
43716 + * ha = adapter block pointer.
43717 + * TARGET_QUEUE_LOCK must be released.
43718 + * ADAPTER_STATE_LOCK must be released.
43721 + * qla2x00 local function return status code.
43724 + * Kernel context.
43727 +qla2x00_get_port_list(scsi_qla_host_t *ha, port_list_entry_t *gp_list,
43728 + dma_addr_t gpl_phys_address, uint16_t opt, uint16_t *size)
43732 + mbx_cmd_t *mcp = &mc;
43734 + DEBUG11(printk("qla2x00_get_port_list(%ld): entered.\n",
43737 + if( gp_list == NULL ) {
43738 + return QL_STATUS_ERROR;
43741 + mcp->mb[0] = MBC_GET_PORT_LIST;
43742 + mcp->mb[1] = opt;
43743 + mcp->mb[2] = MSW(gpl_phys_address);
43744 + mcp->mb[3] = LSW(gpl_phys_address);
43745 + mcp->mb[6] = MSW(MSD(gpl_phys_address));
43746 + mcp->mb[7] = LSW(MSD(gpl_phys_address));
43748 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43749 + mcp->in_mb = MBX_1|MBX_0;
43752 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43754 + if (rval != QL_STATUS_SUCCESS) {
43756 + DEBUG2_3_11(printk("qla2x00_get_port_list(%ld): failed=%x.\n",
43757 + ha->host_no, rval);)
43759 + *size = mcp->mb[1];
43760 + DEBUG11(printk("qla2x00_get_port_list(%ld): done.\n",
43767 +#if 0 /* not yet needed */
43769 +qla2x00_dump_ram(scsi_qla_host_t *ha, uint32_t risc_address,
43770 + dma_addr_t ispdump_dma, uint32_t size)
43774 + mbx_cmd_t *mcp = &mc;
43776 + mcp->mb[0] = MBC_DUMP_RAM;
43777 + mcp->mb[1] = risc_address & 0xffff;
43778 + mcp->mb[2] = MSW(ispdump_dma);
43779 + mcp->mb[3] = LSW(ispdump_dma);
43781 + mcp->mb[6] = MSW(MSD(ispdump_dma));
43782 + mcp->mb[7] = LSW(MSD(ispdump_dma));
43784 + mcp->out_mb = MBX_7|MBX_6|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
43785 + mcp->in_mb = MBX_0;
43788 + rval = qla2x00_mailbox_command(ha, mcp);
43795 + * qla2x00_lun_reset
43796 + * Issue lun reset mailbox command.
43799 + * ha = adapter block pointer.
43800 + * loop_id = device loop ID.
43801 + * lun = lun to be reset.
43802 + * TARGET_QUEUE_LOCK must be released.
43803 + * ADAPTER_STATE_LOCK must be released.
43806 + * qla2x00 local function return status code.
43809 + * Kernel context.
43812 +qla2x00_lun_reset(scsi_qla_host_t *ha, uint16_t loop_id, uint16_t lun)
43816 + mbx_cmd_t *mcp = &mc;
43818 + ENTER("qla2x00_lun_reset");
43820 + mcp->mb[0] = MBC_LUN_RESET;
43821 +#if defined(EXTENDED_IDS)
43822 + mcp->mb[1] = loop_id & 0xFF;
43824 + mcp->mb[1] = loop_id << 8;
43826 + mcp->mb[2] = lun;
43827 + mcp->out_mb = MBX_2|MBX_1|MBX_0;
43828 + mcp->in_mb = MBX_0;
43831 + rval = qla2x00_mailbox_command(ha, mcp);
43833 + if (rval != QLA2X00_SUCCESS) {
43835 + printk(KERN_WARNING "qla2x00_lun_reset(%d): failed = %d",
43836 + (int)ha->instance, rval);
43839 + LEAVE("qla2x00_lun_reset: exiting normally");
43846 + * qla2x00_send_rnid_mbx
43847 + * Issue RNID ELS using mailbox command
43850 + * ha = adapter state pointer.
43851 + * loop_id = loop ID of the target device.
43852 + * data_fmt = currently supports only 0xDF.
43853 + * buffer = buffer pointer.
43854 + * buf_size = size of buffer.
43855 + * mb_reg = pointer to return mailbox registers.
43858 + * qla2x00 local function return status code.
43861 + * Kernel context.
43864 +qla2x00_send_rnid_mbx(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t data_fmt,
43865 + dma_addr_t buf_phys_addr, size_t buf_size, uint16_t *mb_reg)
43869 + mbx_cmd_t *mcp = &mc;
43871 + DEBUG11(printk("qla2x00_send_rnid_mbx(%ld): entered.\n",
43874 + mcp->mb[0] = MBC_SEND_RNID_ELS;
43875 +#if defined(EXTENDED_IDS)
43876 + mcp->mb[1] = loop_id & 0xFF;
43878 + mcp->mb[1] = (loop_id << 8 ) | data_fmt;
43880 + mcp->mb[2] = MSW(buf_phys_addr);
43881 + mcp->mb[3] = LSW(buf_phys_addr);
43882 + mcp->mb[6] = MSW(MSD(buf_phys_addr));
43883 + mcp->mb[7] = LSW(MSD(buf_phys_addr));
43884 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43885 +#if defined(EXTENDED_IDS)
43886 + mcp->mb[10] = data_fmt;
43887 + mcp->out_mb |= MBX_10;
43889 + mcp->in_mb = MBX_1|MBX_0;
43890 + mcp->buf_size = buf_size;
43891 + mcp->flags = MBX_DMA_IN;
43893 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43895 + if (rval != QL_STATUS_SUCCESS) {
43896 + memcpy(mb_reg, mcp->mb, 2 * 2); /* 2 status regs */
43898 + DEBUG2_3_11(printk("qla2x00_send_rnid_mbx(%ld): failed=%x "
43900 + ha->host_no, mcp->mb[0], mcp->mb[1]);)
43903 + DEBUG11(printk("qla2x00_send_rnid_mbx(%ld): done.\n",
43911 + * qla2x00_set_rnid_params_mbx
43912 + * Set RNID parameters using mailbox command
43915 + * ha = adapter state pointer.
43916 + * buffer = buffer pointer.
43917 + * buf_size = size of buffer.
43918 + * mb_reg = pointer to return mailbox registers.
43921 + * qla2x00 local function return status code.
43924 + * Kernel context.
43927 +qla2x00_set_rnid_params_mbx(scsi_qla_host_t *ha, dma_addr_t buf_phys_addr,
43928 + size_t buf_size, uint16_t *mb_reg)
43932 + mbx_cmd_t *mcp = &mc;
43934 + DEBUG11(printk("qla2x00_set_rnid_params_mbx(%ld): entered.\n",
43937 + mcp->mb[0] = MBC_SET_RNID_PARAMS;
43939 + mcp->mb[2] = MSW(buf_phys_addr);
43940 + mcp->mb[3] = LSW(buf_phys_addr);
43941 + mcp->mb[6] = MSW(MSD(buf_phys_addr));
43942 + mcp->mb[7] = LSW(MSD(buf_phys_addr));
43943 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43944 + mcp->in_mb = MBX_1|MBX_0;
43945 + mcp->buf_size = buf_size;
43946 + mcp->flags = MBX_DMA_OUT;
43948 + rval = (int)qla2x00_mailbox_command(ha, mcp);
43950 + if (rval != QLA2X00_SUCCESS) {
43951 + memcpy(mb_reg, mcp->mb, 2 * 2); /* 2 status regs */
43953 + DEBUG2_3_11(printk("qla2x00_set_rnid_params_mbx(%ld): "
43954 + "failed=%x mb[1]=%x.\n",
43955 + ha->host_no, mcp->mb[0], mcp->mb[1]);)
43958 + DEBUG11(printk("qla2x00_set_rnid_params_mbx(%ld): done.\n",
43966 + * qla2x00_get_rnid_params_mbx
43967 + * Get RNID parameters using mailbox command
43970 + * ha = adapter state pointer.
43971 + * buffer = buffer pointer.
43972 + * buf_size = size of buffer.
43973 + * mb_reg = pointer to return mailbox registers.
43976 + * qla2x00 local function return status code.
43979 + * Kernel context.
43982 +qla2x00_get_rnid_params_mbx(scsi_qla_host_t *ha, dma_addr_t buf_phys_addr,
43983 + size_t buf_size, uint16_t *mb_reg)
43987 + mbx_cmd_t *mcp = &mc;
43989 + DEBUG11(printk("qla2x00_get_rnid_params_mbx(%ld): entered.\n",
43992 + mcp->mb[0] = MBC_GET_RNID_PARAMS;
43994 + mcp->mb[2] = MSW(buf_phys_addr);
43995 + mcp->mb[3] = LSW(buf_phys_addr);
43996 + mcp->mb[6] = MSW(MSD(buf_phys_addr));
43997 + mcp->mb[7] = LSW(MSD(buf_phys_addr));
43998 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
43999 + mcp->in_mb = MBX_1|MBX_0;
44000 + mcp->buf_size = buf_size;
44001 + mcp->flags = MBX_DMA_IN;
44003 + rval = (int)qla2x00_mailbox_command(ha, mcp);
44005 + if (rval != QLA2X00_SUCCESS) {
44006 + memcpy(mb_reg, mcp->mb, 2 * 2); /* 2 status regs */
44008 + DEBUG2_3_11(printk("qla2x00_get_rnid_params_mbx(%ld): "
44009 + "failed=%x mb[1]=%x.\n",
44010 + ha->host_no, mcp->mb[0], mcp->mb[1]);)
44013 + DEBUG11(printk("qla2x00_get_rnid_params_mbx(%ld): done.\n",
44020 +#if defined(QL_DEBUG_LEVEL_3)
44022 + * qla2x00_get_fcal_position_map
44023 + * Get FCAL (LILP) position map using mailbox command
44026 + * ha = adapter state pointer.
44027 + * pos_map = buffer pointer (can be NULL).
44030 + * qla2x00 local function return status code.
44033 + * Kernel context.
44036 +qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map)
44040 + mbx_cmd_t *mcp = &mc;
44042 + dma_addr_t pmap_dma;
44044 + pmap = pci_alloc_consistent(ha->pdev, FCAL_MAP_SIZE, &pmap_dma);
44045 + if (pmap == NULL) {
44046 + DEBUG2_3_11(printk("%s(%ld): **** Mem Alloc Failed ****",
44047 + __func__, ha->host_no));
44048 + return QL_STATUS_RESOURCE_ERROR;
44051 + memset(pmap, 0, FCAL_MAP_SIZE);
44053 + mcp->mb[0] = MBC_GET_FCAL_MAP;
44054 + mcp->mb[2] = MSW(pmap_dma);
44055 + mcp->mb[3] = LSW(pmap_dma);
44056 + mcp->mb[6] = MSW(MSD(pmap_dma));
44057 + mcp->mb[7] = LSW(MSD(pmap_dma));
44058 + mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
44059 + mcp->in_mb = MBX_1|MBX_0;
44060 + mcp->buf_size = FCAL_MAP_SIZE;
44061 + mcp->flags = MBX_DMA_IN;
44062 + mcp->tov = ha->login_timeout * 2;
44063 + rval = (int)qla2x00_mailbox_command(ha, mcp);
44065 + if (rval == QL_STATUS_SUCCESS) {
44066 + DEBUG11(printk("%s(%ld): (mb0=%x/mb1=%x) FC/AL Position Map "
44068 + __func__, ha->host_no,
44069 + mcp->mb[0], mcp->mb[1], (unsigned)pmap[0]));
44070 + DEBUG11(qla2x00_dump_buffer(pmap, pmap[0] + 1));
44073 + memcpy(pos_map, pmap, FCAL_MAP_SIZE);
44075 + pci_free_consistent(ha->pdev, FCAL_MAP_SIZE, pmap, pmap_dma);
44077 + if (rval != QL_STATUS_SUCCESS) {
44078 + DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
44079 + __func__, ha->host_no, rval));
44081 + DEBUG11(printk("%s(%ld): done.\n",
44082 + __func__, ha->host_no));
44088 --- /dev/null Thu Apr 11 07:25:15 2002
44089 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_os.c Thu Jul 3 15:34:42 2003
44092 + * QLOGIC LINUX SOFTWARE
44094 + * QLogic ISP2x00 device driver for Linux 2.5.x
44095 + * Copyright (C) 2003 Qlogic Corporation
44096 + * (www.qlogic.com)
44098 + * This program is free software; you can redistribute it and/or modify it
44099 + * under the terms of the GNU General Public License as published by the
44100 + * Free Software Foundation; either version 2, or (at your option) any
44103 + * This program is distributed in the hope that it will be useful, but
44104 + * WITHOUT ANY WARRANTY; without even the implied warranty of
44105 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
44106 + * General Public License for more details.
44109 +#define QLA_MODVERSION
44110 +#include "qla_os.h"
44112 +#include "qla_def.h"
44117 +char qla2x00_version_str[40] = { 0 };
44120 +* Command line options.
44122 +unsigned long qla2x00_verbose = 1L;
44123 +unsigned long qla2x00_quiet = 0L;
44124 +unsigned long qla2x00_reinit = 1L;
44125 +unsigned long qla2x00_req_dmp = 0L;
44128 + * Stats for all adpaters.
44130 +struct _qla2x00stats qla2x00_stats;
44133 + * Ioctl related information.
44135 +int num_hosts = 0;
44136 +int apiHBAInstance = 0;
44139 + * Module parameter information and variables
44142 +char *ql2xdevconf = NULL;
44144 +int ql2xretrycount = 30;
44146 +int ql2xretrycount = 20;
44148 +int qla2xenbinq = 1;
44149 +int max_srbs = MAX_SRBS;
44150 +#if defined(ISP2200) || defined(ISP2300)
44151 +int ql2xlogintimeout = 20;
44152 +int qlport_down_retry = 0;
44154 +int ql2xmaxqdepth = 0;
44155 +int displayConfig = 0;
44157 +/* Enable for failover */
44159 +int ql2xfailover = 1;
44161 +int ql2xfailover = 0;
44164 +int ConfigRequired = 0;
44165 +int recoveryTime = MAX_RECOVERYTIME;
44166 +int failbackTime = MAX_FAILBACKTIME;
44168 +/* Persistent binding type */
44169 +int Bind = BIND_BY_PORT_NAME;
44171 +int ql2xsuspendcount = SUSPEND_COUNT;
44173 +int qla2x00_retryq_dmp = 0;
44175 +#if defined(MODULE)
44176 +char *ql2xopts = NULL;
44178 +static char dummy_buffer[60] =
44179 + "Please don't add commas in your insmod command!!\n";
44181 +/* insmod qla2100 ql2xopts=verbose" */
44182 +MODULE_PARM(ql2xopts, "s");
44183 +MODULE_PARM_DESC(ql2xopts,
44184 + "Additional driver options.");
44186 +MODULE_PARM(ql2xfailover, "i");
44187 +MODULE_PARM_DESC(ql2xfailover,
44188 + "Driver failover support: 0 to disable; 1 to enable. "
44189 + "Default behaviour based on compile-time option "
44190 + "MPIO_SUPPORT.");
44192 +MODULE_PARM(ql2xmaxqdepth, "i");
44193 +MODULE_PARM_DESC(ql2xmaxqdepth,
44194 + "Maximum queue depth to report for target devices.");
44196 +#if defined(ISP2200) || defined(ISP2300)
44197 +MODULE_PARM(ql2xlogintimeout,"i");
44198 +MODULE_PARM_DESC(ql2xlogintimeout,
44199 + "Login timeout value in seconds.");
44201 +MODULE_PARM(qlport_down_retry,"i");
44202 +MODULE_PARM_DESC(qlport_down_retry,
44203 + "Maximum number of command retries to a port that returns"
44204 + "a PORT-DOWN status.");
44207 +MODULE_PARM(ql2xretrycount,"i");
44208 +MODULE_PARM_DESC(ql2xretrycount,
44209 + "Maximum number of mid-layer retries allowed for a command. "
44210 + "Default value in non-failover mode is 20, "
44211 + "in failover mode, 30.");
44213 +MODULE_PARM(max_srbs,"i");
44214 +MODULE_PARM_DESC(max_srbs,
44215 + "Maximum number of simultaneous commands allowed for an HBA.");
44217 +MODULE_PARM(displayConfig, "i");
44218 +MODULE_PARM_DESC(displayConfig,
44219 + "If 1 then display the configuration used in "
44220 + "/etc/modules.conf.");
44222 +MODULE_PARM(ConfigRequired, "i");
44223 +MODULE_PARM_DESC(ConfigRequired,
44224 + "If 1, then only configured devices passed in through the"
44225 + "ql2xopts parameter will be presented to the OS");
44227 +MODULE_PARM(recoveryTime, "i");
44228 +MODULE_PARM_DESC(recoveryTime,
44229 + "Recovery time in seconds before a target device is sent I/O "
44230 + "after a failback is performed.");
44232 +MODULE_PARM(failbackTime, "i");
44233 +MODULE_PARM_DESC(failbackTime,
44234 + "Delay in seconds before a failback is performed.");
44236 +MODULE_PARM(Bind, "i");
44237 +MODULE_PARM_DESC(Bind,
44238 + "Target persistent binding method: "
44239 + "0 by Portname (default); 1 by PortID; 2 by Nodename. ");
44241 +MODULE_PARM(ql2xsuspendcount,"i");
44242 +MODULE_PARM_DESC(ql2xsuspendcount,
44243 + "Number of 6-second suspend iterations to perform while a "
44244 + "target returns a <NOT READY> status. Default is 10 "
44248 +MODULE_AUTHOR("QLogic Corporation");
44249 +MODULE_DESCRIPTION("QLogic " ISP_NAME " FC-SCSI Host Bus Adapter driver");
44250 +MODULE_LICENSE("GPL");
44254 + * Proc structures and functions
44263 +static void copy_mem_info(struct info_str *, char *, int);
44264 +static int copy_info(struct info_str *, char *, ...);
44268 + * List of host adapters
44270 +struct list_head qla_hostlist;
44271 +rwlock_t qla_hostlist_lock;
44275 + * PCI driver interface definitions
44277 +#define ISP21XX_FW_INDEX 0
44278 +#define ISP22XX_FW_INDEX 0
44279 +#define ISP23XX_FW_INDEX 0
44280 +#define ISP232X_FW_INDEX 2
44282 +static struct qla_fw_info qla_fw_tbl[] = {
44283 +#if defined(ISP2100)
44284 + /* Start of 21xx firmware list */
44286 + .addressing = FW_INFO_ADDR_NORMAL,
44287 + .fwcode = &fw2100tp_code01[0],
44288 + .fwlen = &fw2100tp_length01,
44289 + .fwstart = &fw2100tp_addr01,
44293 +#if defined(ISP2200)
44294 + /* Start of 22xx firmware list */
44296 + .addressing = FW_INFO_ADDR_NORMAL,
44297 + .fwcode = &fw2200ip_code01[0],
44298 + .fwlen = &fw2200ip_length01,
44299 + .fwstart = &fw2200ip_addr01,
44303 +#if defined(ISP2300)
44304 + /* Start of 23xx firmware list */
44307 + .addressing = FW_INFO_ADDR_NORMAL,
44308 + .fwcode = &fw2300tpx_code01[0],
44309 + .fwlen = &fw2300tpx_length01,
44310 + .fwstart = &fw2300tpx_addr01,
44314 + .addressing = FW_INFO_ADDR_NORMAL,
44315 + .fwcode = &fw2300ipx_code01[0],
44316 + .fwlen = &fw2300ipx_length01,
44317 + .fwstart = &fw2300ipx_addr01,
44321 +#if defined(ISP2322)
44322 + /* End of 23xx firmware list */
44323 + { FW_INFO_ADDR_NOMORE, },
44325 + /* Start of 232x firmware list */
44328 + .addressing = FW_INFO_ADDR_NORMAL,
44329 + .fwcode = &fw2322tpx_code01[0],
44330 + .fwlen = &fw2322tpx_length01,
44331 + .fwstart = &fw2322tpx_addr01,
44334 + .addressing = FW_INFO_ADDR_EXTENDED,
44335 + .fwcode = &rseqtpx_code01[0],
44336 + .fwlen = &rseqtpx_code_length01,
44337 + .lfwstart = &rseqtpx_code_addr01,
44340 + .addressing = FW_INFO_ADDR_EXTENDED,
44341 + .fwcode = &xseqtpx_code01[0],
44342 + .fwlen = &xseqtpx_code_length01,
44343 + .lfwstart = &xseqtpx_code_addr01,
44347 + .addressing = FW_INFO_ADDR_NORMAL,
44348 + .fwcode = &fw2322ipx_code01[0],
44349 + .fwlen = &fw2322ipx_length01,
44350 + .fwstart = &fw2322ipx_addr01,
44353 + .addressing = FW_INFO_ADDR_EXTENDED,
44354 + .fwcode = &rseqipx_code01[0],
44355 + .fwlen = &rseqipx_code_length01,
44356 + .lfwstart = &rseqipx_code_addr01,
44359 + .addressing = FW_INFO_ADDR_EXTENDED,
44360 + .fwcode = &xseqipx_code01[0],
44361 + .fwlen = &xseqipx_code_length01,
44362 + .lfwstart = &xseqipx_code_addr01,
44370 + /* End of firmware list */
44371 + { FW_INFO_ADDR_NOMORE, },
44374 +#define ISP21XX_BRD_INDEX 0
44375 +#define ISP22XX_BRD_INDEX 0
44376 +#define ISP23XX_BRD_INDEX 0
44377 +#define ISP2312_BRD_INDEX 1
44378 +#define ISP2322_BRD_INDEX 2
44380 +static struct qla_board_info qla_board_tbl[] = {
44381 +#if defined(ISP2100)
44383 + .name = "QLA2100 ",
44384 + .fwinfo = &qla_fw_tbl[ISP21XX_FW_INDEX],
44388 +#if defined(ISP2200)
44390 + .name = "QLA2200 ",
44391 + .fwinfo = &qla_fw_tbl[ISP22XX_FW_INDEX],
44395 +#if defined(ISP2300)
44397 + .name = "QLA2300 ",
44398 + .fwinfo = &qla_fw_tbl[ISP23XX_FW_INDEX],
44402 + .name = "QLA2312 ",
44403 + .fwinfo = &qla_fw_tbl[ISP23XX_FW_INDEX],
44406 +#if defined(ISP2322)
44408 + .name = "QLA2322 ",
44409 + .fwinfo = &qla_fw_tbl[ISP232X_FW_INDEX],
44415 +static struct pci_device_id qla_pci_tbl[] __devinitdata = {
44416 +#if defined(ISP2100)
44418 + .vendor = QLA2X00_VENDOR_ID,
44419 + .device = QLA2100_DEVICE_ID,
44420 + .subvendor = PCI_ANY_ID,
44421 + .subdevice = PCI_ANY_ID,
44423 + = (unsigned long)&qla_board_tbl[ISP21XX_BRD_INDEX],
44427 +#if defined(ISP2200)
44429 + .vendor = QLA2X00_VENDOR_ID,
44430 + .device = QLA2200_DEVICE_ID,
44431 + .subvendor = PCI_ANY_ID,
44432 + .subdevice = PCI_ANY_ID,
44434 + = (unsigned long)&qla_board_tbl[ISP22XX_BRD_INDEX],
44438 +#if defined(ISP2300)
44440 + .vendor = QLA2X00_VENDOR_ID,
44441 + .device = QLA2300_DEVICE_ID,
44442 + .subvendor = PCI_ANY_ID,
44443 + .subdevice = PCI_ANY_ID,
44445 + = (unsigned long)&qla_board_tbl[ISP23XX_BRD_INDEX],
44449 + .vendor = QLA2X00_VENDOR_ID,
44450 + .device = QLA2312_DEVICE_ID,
44451 + .subvendor = PCI_ANY_ID,
44452 + .subdevice = PCI_ANY_ID,
44454 + = (unsigned long)&qla_board_tbl[ISP2312_BRD_INDEX],
44457 +#if defined(ISP2322)
44459 + .vendor = QLA2X00_VENDOR_ID,
44460 + .device = QLA2322_DEVICE_ID,
44461 + .subvendor = PCI_ANY_ID,
44462 + .subdevice = PCI_ANY_ID,
44464 + = (unsigned long)&qla_board_tbl[ISP2322_BRD_INDEX],
44470 +MODULE_DEVICE_TABLE(pci, qla_pci_tbl);
44472 +static int __devinit qla_probe_device(struct pci_dev *,
44473 + const struct pci_device_id *);
44474 +static void __devexit qla_remove_device(struct pci_dev *);
44475 +static void qla2x00_free_device(scsi_qla_host_t *);
44477 +struct pci_driver qla_pci_driver = {
44478 + .name = DRIVER_NAME,
44479 + .id_table = qla_pci_tbl,
44481 + .probe = qla_probe_device,
44482 + .remove = __devexit_p(qla_remove_device),
44487 + * SCSI host template entry points
44489 +static int qla2x00_detect(Scsi_Host_Template *);
44490 +static int qla2x00_release(struct Scsi_Host *);
44491 +static const char *qla2x00_info(struct Scsi_Host *);
44492 +static int qla2xxx_slave_configure(Scsi_Device * device);
44493 +static int qla2x00_biosparam(struct scsi_device *,
44494 + struct block_device *, sector_t, int[]);
44495 +extern int qla2x00_ioctl(Scsi_Device *, int , void *);
44496 +static int qla2xxx_eh_abort(Scsi_Cmnd *);
44497 +static int qla2xxx_eh_device_reset(Scsi_Cmnd *);
44498 +static int qla2xxx_eh_bus_reset(Scsi_Cmnd *);
44499 +static int qla2xxx_eh_host_reset(Scsi_Cmnd *);
44500 +static uint8_t qla2x00_loop_reset(scsi_qla_host_t *ha);
44501 +static int qla2x00_device_reset(scsi_qla_host_t *, uint16_t, uint16_t);
44503 +static int qla2x00_proc_info(char *, char **, off_t, int, int, int);
44505 +static uint8_t qla2x00_register_with_Linux(scsi_qla_host_t *, uint8_t);
44507 +#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP)
44508 +int qla2x00_get_scsi_info_from_wwn(int mode, unsigned long long wwn, int *host, int *channel, int *lun, int *id);
44509 +int qla2x00_get_wwn_from_scsi_info(int host, int id, unsigned long long *wwn);
44510 +#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */
44512 +#if !defined(MODULE)
44513 +static int __init qla2x00_setup(char *);
44515 +static void qla2x00_setup(char *);
44517 +static char *qla2x00_get_line(char *, char *);
44518 +static int qla2x00_get_tokens(char *, char **, int);
44521 +static Scsi_Host_Template qla2x00_driver_template = {
44522 + .module = THIS_MODULE,
44523 + .name = DRIVER_NAME,
44524 + .proc_name = DRIVER_NAME,
44525 + .proc_info = qla2x00_proc_info,
44526 + .detect = qla2x00_detect,
44527 + .release = qla2x00_release,
44528 + .info = qla2x00_info,
44529 + .ioctl = qla2x00_ioctl,
44530 + .queuecommand = qla2x00_queuecommand,
44532 + .eh_abort_handler = qla2xxx_eh_abort,
44533 + .eh_device_reset_handler = qla2xxx_eh_device_reset,
44534 + .eh_bus_reset_handler = qla2xxx_eh_bus_reset,
44535 + .eh_host_reset_handler = qla2xxx_eh_host_reset,
44536 + .bios_param = qla2x00_biosparam,
44538 + .slave_configure = qla2xxx_slave_configure,
44541 + .can_queue = 255,
44542 + .cmd_per_lun = 3,
44543 + .sg_tablesize = SG_ALL,
44544 + .use_clustering = ENABLE_CLUSTERING,
44545 + .unchecked_isa_dma = 0,
44546 + .max_sectors = 8192,
44550 +static void qla2x00_display_fc_names(scsi_qla_host_t *);
44552 +/* TODO Convert to inlines
44556 +#define WATCH_INTERVAL 1 /* number of seconds */
44558 +static void qla2x00_timer(scsi_qla_host_t *);
44560 +static __inline__ void qla2x00_start_timer(scsi_qla_host_t *,
44561 + void *, unsigned long);
44562 +static __inline__ void qla2x00_restart_timer(scsi_qla_host_t *, unsigned long);
44563 +static __inline__ void qla2x00_stop_timer(scsi_qla_host_t *);
44565 +static inline void
44566 +qla2x00_start_timer(scsi_qla_host_t *ha, void *func, unsigned long interval)
44568 + init_timer(&ha->timer);
44569 + ha->timer.expires = jiffies + interval * HZ;
44570 + ha->timer.data = (unsigned long)ha;
44571 + ha->timer.function = (void (*)(unsigned long))func;
44572 + add_timer(&ha->timer);
44573 + ha->timer_active = 1;
44576 +static inline void
44577 +qla2x00_restart_timer(scsi_qla_host_t *ha, unsigned long interval)
44579 + mod_timer(&ha->timer, jiffies + interval * HZ);
44582 +static __inline__ void
44583 +qla2x00_stop_timer(scsi_qla_host_t *ha)
44585 + del_timer_sync(&ha->timer);
44586 + ha->timer_active = 0;
44590 +static void qla2x00_cmd_timeout(srb_t *sp);
44591 +static __inline__ void qla2x00_add_timer_to_cmd(srb_t *sp, int timeout);
44592 +static __inline__ void qla2x00_delete_timer_from_cmd(srb_t *sp);
44594 +/**************************************************************************
44595 +* qla2x00_add_timer_to_cmd
44598 +* Creates a timer for the specified command. The timeout is usually
44599 +* the command time from kernel minus 2 secs.
44602 +* sp - pointer to validate
44606 +**************************************************************************/
44607 +static inline void
44608 +qla2x00_add_timer_to_cmd(srb_t *sp, int timeout)
44610 + init_timer(&sp->timer);
44611 + sp->timer.expires = jiffies + timeout * HZ;
44612 + sp->timer.data = (unsigned long) sp;
44613 + sp->timer.function = (void (*) (unsigned long))qla2x00_cmd_timeout;
44614 + add_timer(&sp->timer);
44617 +/**************************************************************************
44618 +* qla2x00_delete_timer_from_cmd
44621 +* Delete the timer for the specified command.
44624 +* sp - pointer to validate
44628 +**************************************************************************/
44629 +static inline void
44630 +qla2x00_delete_timer_from_cmd(srb_t *sp)
44632 + if (sp->timer.function != NULL) {
44633 + del_timer(&sp->timer);
44634 + sp->timer.function = NULL;
44635 + sp->timer.data = (unsigned long) NULL;
44639 +static __inline__ void qla2x00_callback(scsi_qla_host_t *, Scsi_Cmnd *);
44640 +static __inline__ void sp_put(struct scsi_qla_host * ha, srb_t *sp);
44641 +static __inline__ void sp_get(struct scsi_qla_host * ha, srb_t *sp);
44642 +static __inline__ void __sp_put(struct scsi_qla_host * ha, srb_t *sp);
44643 +static __inline__ void
44644 +qla2x00_delete_from_done_queue(scsi_qla_host_t *, srb_t *);
44646 +/**************************************************************************
44650 +* Decrement reference count and call the callback if we're the last
44651 +* owner of the specified sp. Will get io_request_lock before calling
44655 +* ha - pointer to the scsi_qla_host_t where the callback is to occur.
44656 +* sp - pointer to srb_t structure to use.
44660 +**************************************************************************/
44661 +static inline void
44662 +sp_put(struct scsi_qla_host * ha, srb_t *sp)
44664 + unsigned long flags;
44666 + if (atomic_read(&sp->ref_count) == 0) {
44668 + "%s(): **** SP->ref_count not zero\n",
44675 + if (!atomic_dec_and_test(&sp->ref_count))
44680 + spin_lock_irqsave(ha->host->host_lock, flags);
44682 + qla2x00_callback(ha, sp->cmd);
44684 + spin_unlock_irqrestore(ha->host->host_lock, flags);
44687 +/**************************************************************************
44691 +* Increment reference count of the specified sp.
44694 +* sp - pointer to srb_t structure to use.
44698 +**************************************************************************/
44699 +static inline void
44700 +sp_get(struct scsi_qla_host * ha, srb_t *sp)
44702 + atomic_inc(&sp->ref_count);
44704 + if (atomic_read(&sp->ref_count) > 2) {
44706 + "%s(): **** SP->ref_count greater than two\n",
44714 +/**************************************************************************
44718 +* Decrement reference count and call the callback if we're the last
44719 +* owner of the specified sp. Will NOT get io_request_lock before calling
44723 +* ha - pointer to the scsi_qla_host_t where the callback is to occur.
44724 +* sp - pointer to srb_t structure to use.
44728 +**************************************************************************/
44729 +static inline void
44730 +__sp_put(struct scsi_qla_host * ha, srb_t *sp)
44732 + if (atomic_read(&sp->ref_count) == 0) {
44734 + "%s(): **** SP->ref_count not zero\n",
44741 + if (!atomic_dec_and_test(&sp->ref_count))
44746 + qla2x00_callback(ha, sp->cmd);
44751 +* qla2x00_callback
44752 +* Returns the completed SCSI command to LINUX.
44755 +* ha -- Host adapter structure
44756 +* cmd -- SCSI mid-level command structure.
44759 +* Note:From failover point of view we always get the sp
44760 +* from vis_ha pool in queuecommand.So when we put it
44761 +* back to the pool it has to be the vis_ha.
44762 +* So rely on Scsi_Cmnd to get the vis_ha and not on sp.
44764 +static inline void
44765 +qla2x00_callback(scsi_qla_host_t *ha, Scsi_Cmnd *cmd)
44767 + srb_t *sp = (srb_t *) CMD_SP(cmd);
44768 + scsi_qla_host_t *vis_ha;
44771 + unsigned long cpu_flags = 0;
44775 + CMD_HANDLE(cmd) = (unsigned char *) NULL;
44776 + vis_ha = (scsi_qla_host_t *) cmd->device->host->hostdata;
44778 + if (sp == NULL) {
44780 + "%s(): **** CMD derives a NULL SP\n",
44787 + * If command status is not DID_BUS_BUSY then go ahead and freed sp.
44790 + * Cancel command timeout
44792 + qla2x00_delete_timer_from_cmd(sp);
44795 + * Put SP back in the free queue
44798 + CMD_SP(cmd) = NULL;
44799 + lq = sp->lun_queue;
44800 + got_sense = (sp->flags & SRB_GOT_SENSE)? 1: 0;
44801 + add_to_free_queue(vis_ha, sp);
44803 + if ((CMD_RESULT(cmd)>>16) == DID_OK) {
44805 + ha->total_bytes += cmd->bufflen;
44806 + if (!got_sense) {
44807 + /* If lun was suspended then clear retry count */
44808 + spin_lock_irqsave(&lq->q_lock, cpu_flags);
44809 + if (!test_bit(LUN_EXEC_DELAYED, &lq->q_flag))
44810 + lq->q_state = LUN_STATE_READY;
44811 + spin_unlock_irqrestore(&lq->q_lock, cpu_flags);
44813 + } else if ((CMD_RESULT(cmd)>>16) == DID_ERROR) {
44814 + /* device error */
44815 + ha->total_dev_errs++;
44818 + if (cmd->flags & IS_RESETTING) {
44819 + CMD_RESULT(cmd) = (int)DID_RESET << 16;
44822 + /* Call the mid-level driver interrupt handler */
44823 + (*(cmd)->scsi_done)(cmd);
44828 +static inline void
44829 +qla2x00_delete_from_done_queue(scsi_qla_host_t *dest_ha, srb_t *sp)
44831 + /* remove command from done list */
44832 + list_del_init(&sp->list);
44833 + dest_ha->done_q_cnt--;
44834 + sp->state = SRB_NO_QUEUE_STATE;
44836 + if (sp->flags & SRB_DMA_VALID) {
44837 + sp->flags &= ~SRB_DMA_VALID;
44839 + /* Release memory used for this I/O */
44840 + if (sp->cmd->use_sg) {
44841 + pci_unmap_sg(dest_ha->pdev,
44842 + sp->cmd->request_buffer,
44844 + scsi_to_pci_dma_dir(
44845 + sp->cmd->sc_data_direction));
44846 + } else if (sp->cmd->request_bufflen) {
44847 + pci_unmap_page(dest_ha->pdev,
44848 + sp->saved_dma_handle,
44849 + sp->cmd->request_bufflen,
44850 + scsi_to_pci_dma_dir(
44851 + sp->cmd->sc_data_direction));
44856 +static int qla2x00_do_dpc(void *data);
44857 +static uint8_t qla2x00_check_for_devices_online(scsi_qla_host_t *);
44859 +static void qla2x00_rst_aen(scsi_qla_host_t *);
44860 +static void qla2x00_done_work(void *);
44862 +static void qla2x00_process_failover(scsi_qla_host_t *);
44864 +static uint8_t qla2x00_mem_alloc(scsi_qla_host_t *);
44865 +static void qla2x00_mem_free(scsi_qla_host_t *ha);
44866 +uint8_t qla2x00_allocate_sp_pool( scsi_qla_host_t *ha);
44867 +void qla2x00_free_sp_pool(scsi_qla_host_t *ha);
44870 +static int apidev_init(struct Scsi_Host *);
44871 +static int apidev_cleanup(void);
44872 +static int apidev_open(struct inode *, struct file *);
44873 +static int apidev_close(struct inode *, struct file *);
44874 +static int apidev_ioctl(struct inode *,
44875 + struct file *, unsigned int, unsigned long arg);
44877 +/*************************************************************************
44878 +* qla2x00_set_info
44881 +* Set parameters for the driver from the /proc filesystem.
44884 +*************************************************************************/
44886 +qla2x00_set_info(char *buffer, int length, struct Scsi_Host *shost)
44888 + return (-ENOSYS); /* Currently this is a no-op */
44891 +/**************************************************************************
44895 +* This routine will probe for Qlogic FC SCSI host adapters.
44896 +* It returns the number of host adapters of a particular
44897 +* type that were found. It also initialize all data necessary for
44898 +* the driver. It is passed-in the host number, so that it
44899 +* knows where its first entry is in the scsi_hosts[] array.
44902 +* template - pointer to SCSI template
44905 +* num - number of host adapters found.
44906 +**************************************************************************/
44908 +qla2x00_detect(Scsi_Host_Template *template)
44910 +#if defined(MODULE)
44911 + DEBUG2(printk("DEBUG: qla2x00_set_info() starts at address = %p\n",
44912 + qla2x00_set_info));
44914 + "qla2x00_set_info() starts at address = %p\n",
44915 + qla2x00_set_info);
44918 + * If we are called as a module, the qla2100 pointer may not be null
44919 + * and it would point to our bootup string, just like on the lilo
44920 + * command line. IF not NULL, then process this config string with
44923 + * Boot time Options To add options at boot time add a line to your
44924 + * lilo.conf file like:
44925 + * append="qla2100=verbose,tag_info:{{32,32,32,32},{32,32,32,32}}"
44926 + * which will result in the first four devices on the first two
44927 + * controllers being set to a tagged queue depth of 32.
44930 + qla2x00_setup(ql2xopts);
44931 + if (dummy_buffer[0] != 'P')
44932 + printk(KERN_WARNING
44933 + "qla2x00: Please read the file "
44934 + "/usr/src/linux/drivers/scsi/README.qla2x00\n"
44935 + "qla2x00: to see the proper way to specify options to "
44936 + "the qla2x00 module\n"
44937 + "qla2x00: Specifically, don't use any commas when passing "
44939 + "qla2x00: insmod or else it might trash certain memory "
44943 + rwlock_init(&qla_hostlist_lock);
44944 + INIT_LIST_HEAD(&qla_hostlist);
44946 + pci_module_init(&qla_pci_driver);
44948 + return (num_hosts);
44951 +/**************************************************************************
44952 +* qla2x00_register_with_Linux
44955 +* Free the passed in Scsi_Host memory structures prior to unloading the
44959 +* ha - pointer to host adapter structure
44960 +* maxchannels - MAX number of channels.
44963 +* 0 - Sucessfully reserved resources.
44964 +* 1 - Failed to reserved a resource.
44965 +**************************************************************************/
44967 +qla2x00_register_with_Linux(scsi_qla_host_t *ha, uint8_t maxchannels)
44969 + struct Scsi_Host *host = ha->host;
44971 + host->can_queue = max_srbs; /* default value:-MAX_SRBS(4096) */
44972 + host->cmd_per_lun = 3;
44973 + host->max_cmd_len = MAX_CMDSZ;
44975 +#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP)
44976 + host->hostt->get_scsi_info_from_wwn = qla2x00_get_scsi_info_from_wwn;
44977 + host->hostt->get_wwn_from_scsi_info = qla2x00_get_wwn_from_scsi_info;
44978 +#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */
44980 + host->n_io_port = 0xFF;
44982 +#if MEMORY_MAPPED_IO
44983 + host->base = (unsigned long)ha->mmpbase;
44988 + host->max_channel = maxchannels;
44989 + host->max_lun = ha->max_luns;
44990 + host->unique_id = ha->instance;
44991 + host->max_id = ha->max_targets;
44993 + /* set our host ID (need to do something about our two IDs) */
44994 + host->this_id = 255;
44996 +#if defined(CONFIG_MD_MULTIHOST_FC)
45002 + __u64 identifier;
45003 + char wwn[WWN_SIZE];
45006 + for (i = 0, j = WWN_SIZE-1; i < WWN_SIZE; i++, j--) {
45007 + foo.wwn[i] = ha->init_cb->port_name[j];
45010 + host->fc_wwn = foo.identifier;
45012 +#endif /* CONFIG_MD_MULTIHOST_FC */
45014 + /* Register the I/O space with Linux */
45015 + if (request_region(host->io_port, 0xff, DRIVER_NAME) == 0) {
45016 + printk(KERN_WARNING
45017 + "scsi(%ld): Failed to reserved i/o base region "
45018 + "0x%04lx-0x%04lx already in use\n",
45020 + host->io_port, host->io_port + 0xff);
45024 + /* Register the IRQ with Linux (sharable) */
45025 + if (request_irq(host->irq, qla2x00_intr_handler,
45026 + SA_INTERRUPT|SA_SHIRQ, DRIVER_NAME, ha)) {
45027 + printk(KERN_WARNING
45028 + "scsi(%ld): Failed to reserve interrupt %d already in "
45030 + ha->host_no, host->irq);
45031 + release_region(host->io_port, 0xff);
45035 + /* Initialized the timer */
45036 + qla2x00_start_timer(ha, qla2x00_timer, WATCH_INTERVAL);
45042 +/**************************************************************************
45046 +* Free the passed in Scsi_Host memory structures prior to unloading the
45050 +* ha - pointer to host adapter structure
45053 +* 0 - Always returns good status
45054 +**************************************************************************/
45056 +qla2x00_release(struct Scsi_Host *host)
45058 + scsi_qla_host_t *ha;
45060 + if (host != NULL) {
45061 + ha = (scsi_qla_host_t *)host->hostdata;
45062 + list_del(&ha->list);
45063 + qla2x00_free_device(ha);
45066 + if (list_empty(&qla_hostlist))
45067 + pci_unregister_driver(&qla_pci_driver);
45072 +/**************************************************************************
45078 +* host - pointer to Scsi host adapter structure
45081 +* Return a text string describing the driver.
45082 +**************************************************************************/
45084 +qla2x00_info(struct Scsi_Host *host)
45086 + static char qla2x00_buffer[255];
45088 + scsi_qla_host_t *ha;
45091 + * We must create the api node here instead of qla2x00_detect since we
45092 + * want the api node to be subdirectory of /proc/scsi/qla2x00 which
45093 + * will not have been created when qla2x00_detect exits, but which will
45094 + * have been created by this point.
45096 + apidev_init(host);
45098 + bp = &qla2x00_buffer[0];
45099 + ha = (scsi_qla_host_t *)host->hostdata;
45100 + memset(bp, 0, sizeof(qla2x00_buffer));
45103 + "QLogic %sPCI to Fibre Channel Host Adapter: bus %d device %d "
45104 + "irq %d\n Firmware version: %2d.%02d.%02d, "
45105 + "Driver version %s\n",
45106 + ha->brd_info->name,
45107 + ha->pdev->bus->number,
45108 + PCI_SLOT(ha->pdev->devfn),
45110 + ha->fw_major_version,
45111 + ha->fw_minor_version,
45112 + ha->fw_subminor_version,
45113 + qla2x00_version_str);
45118 +/**************************************************************************
45119 +* qla2x00_queuecommand
45122 +* Queue a command to the controller.
45125 +* cmd - pointer to Scsi cmd structure
45126 +* fn - pointer to Scsi done function
45132 +* The mid-level driver tries to ensures that queuecommand never gets invoked
45133 +* concurrently with itself or the interrupt handler (although the
45134 +* interrupt handler may call this routine as part of request-completion
45136 +**************************************************************************/
45138 +qla2x00_queuecommand(Scsi_Cmnd *cmd, void (*fn)(Scsi_Cmnd *))
45140 + fc_port_t *fcport;
45143 + scsi_qla_host_t *ha, *ha2;
45145 + struct Scsi_Host *host;
45146 + uint32_t b, t, l;
45147 +#if BITS_PER_LONG <= 32
45155 + host = cmd->device->host;
45156 + ha = (scsi_qla_host_t *) host->hostdata;
45158 + cmd->scsi_done = fn;
45160 + spin_unlock(ha->host->host_lock);
45163 + * Allocate a command packet from the "sp" pool. If we cant get back
45164 + * one then let scsi layer come back later.
45166 + if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
45167 + printk(KERN_WARNING
45168 + "scsi(%ld): Couldn't allocate memory for sp - retried.\n",
45171 + spin_lock_irq(ha->host->host_lock);
45178 + CMD_SP(cmd) = (void *)sp;
45181 + if (CMD_RESID_LEN(cmd) & SRB_IOCTL) {
45182 + /* Need to set sp->flags */
45183 + sp->flags |= SRB_IOCTL;
45184 + CMD_RESID_LEN(cmd) = 0; /* Clear it since no more use. */
45187 + sp->fo_retry_cnt = 0;
45188 +#if defined(IOCB_THROLLE_USAGE)
45189 + sp->iocb_cnt = 0;
45192 + if (cmd->allowed < ql2xretrycount) {
45193 + cmd->allowed = ql2xretrycount;
45196 + /* Generate LU queue on bus, target, LUN */
45197 + b = SCSI_BUS_32(cmd);
45198 + t = SCSI_TCN_32(cmd);
45199 + l = SCSI_LUN_32(cmd);
45202 + * Start Command Timer. Typically it will be 2 seconds less than what
45203 + * is requested by the Host such that we can return the IO before
45204 + * aborts are called.
45206 + if ((CMD_TIMEOUT(cmd)/HZ) > QLA_CMD_TIMER_DELTA)
45207 + qla2x00_add_timer_to_cmd(sp,
45208 + (CMD_TIMEOUT(cmd)/HZ) - QLA_CMD_TIMER_DELTA);
45210 + qla2x00_add_timer_to_cmd(sp, (CMD_TIMEOUT(cmd)/HZ));
45212 + if (l >= ha->max_luns) {
45213 + CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
45215 + spin_lock_irq(ha->host->host_lock);
45217 + __sp_put(ha, sp);
45223 + if ((tq = (os_tgt_t *) TGT_Q(ha, t)) != NULL &&
45224 + (lq = (os_lun_t *) LUN_Q(ha, t, l)) != NULL ) {
45226 + fcport = lq->fclun->fcport;
45227 + ha2 = fcport->ha;
45234 + /* Set an invalid handle until we issue the command to ISP */
45235 + /* then we will set the real handle value. */
45236 + handle = INVALID_HANDLE;
45237 + CMD_HANDLE(cmd) = (unsigned char *)handle;
45239 + /* Bookkeeping information */
45240 + sp->r_start = jiffies; /* time the request was recieved */
45243 + /* Setup device queue pointers. */
45244 + sp->tgt_queue = tq;
45245 + sp->lun_queue = lq;
45248 + * NOTE : q is NULL
45250 + * 1. When device is added from persistent binding but has not been
45251 + * discovered yet.The state of loopid == PORT_AVAIL.
45252 + * 2. When device is never found on the bus.(loopid == UNUSED)
45254 + * IF Device Queue is not created, or device is not in a valid state
45255 + * and link down error reporting is enabled, reject IO.
45257 + if (fcport == NULL) {
45258 + DEBUG3(printk("scsi(%ld:%2d:%2d): port unavailable\n",
45259 + ha->host_no,t,l));
45261 + CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
45263 + spin_lock_irq(ha->host->host_lock);
45265 + __sp_put(ha, sp);
45270 + DEBUG5(printk("scsi(%ld:%2d:%2d): (queuecmd) queue sp = %p, "
45271 + "flags=0x%x fo retry=%d, pid=%ld, cmd flags= 0x%x\n",
45274 + sp, sp->flags, sp->fo_retry_cnt,
45275 + cmd->serial_number,cmd->flags));
45276 + DEBUG5(qla2x00_print_scsi_cmd(cmd));
45278 + sp->flags &= ~SRB_ISP_COMPLETED;
45280 + sp->fclun = lq->fclun;
45283 + sp->cmd_length = CMD_CDBLEN(cmd);
45285 + if (cmd->sc_data_direction == SCSI_DATA_UNKNOWN &&
45286 + cmd->request_bufflen != 0) {
45288 + DEBUG2(printk(KERN_WARNING
45289 + "scsi(%ld): Incorrect data direction - transfer "
45290 + "length=%d, direction=%d, pid=%ld, opcode=%x\n",
45292 + cmd->request_bufflen,
45293 + cmd->sc_data_direction,
45294 + cmd->serial_number,
45298 + /* Final pre-check */
45299 + if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) {
45301 + * Add the command to the done-queue for later failover
45304 + CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
45305 + add_to_done_queue(ha, sp);
45306 + schedule_work(&ha->run_qla_task);
45308 + spin_lock_irq(ha->host->host_lock);
45312 + add_to_pending_queue(ha, sp);
45314 + /* First start cmds for this lun if possible */
45315 + qla2x00_next(ha);
45317 + spin_lock_irq(ha->host->host_lock);
45324 + * qla2x00_eh_wait_on_command
45325 + * Waits for the command to be returned by the Firmware for some
45329 + * ha = actual ha whose done queue will contain the command
45330 + * returned by firmware.
45331 + * cmd = Scsi Command to wait on.
45332 + * flag = Abort/Reset(Bus or Device Reset)
45339 +qla2x00_eh_wait_on_command(scsi_qla_host_t *ha, Scsi_Cmnd *cmd)
45341 +#define ABORT_WAIT_TIME 10 /* seconds */
45342 +#define EH_ACTIVE 1 /* Error Handler Active */
45347 + struct list_head *list, *temp;
45348 + u_long cpu_flags = 0;
45349 + u_long max_wait_time = ABORT_WAIT_TIME;
45354 + /* Check on done queue */
45356 + spin_lock_irqsave(&ha->list_lock, cpu_flags);
45357 + list_for_each_safe(list, temp, &ha->done_queue) {
45358 + rp = list_entry(list, srb_t, list);
45361 + * Found command. Just exit and wait for the
45362 + * cmd sent to OS.
45364 + if (cmd == rp->cmd) {
45366 + DEBUG3(printk("%s: found in done "
45367 + "queue.\n", __func__);)
45371 + spin_unlock_irqrestore(&ha->list_lock, cpu_flags);
45374 + /* Checking to see if its returned to OS */
45375 + rp = (srb_t *) CMD_SP(cmd);
45376 + if (rp == NULL ) {
45381 + spin_unlock_irq(ha->host->host_lock);
45383 + set_current_state(TASK_INTERRUPTIBLE);
45384 + schedule_timeout(2*HZ);
45386 + spin_lock_irq(ha->host->host_lock);
45388 + } while ((max_wait_time--));
45390 + DEBUG2(if (done))
45391 + DEBUG2(printk("%s: found cmd=%p.\n", __func__, cmd);)
45398 +/**************************************************************************
45399 +* qla2xxx_eh_abort
45402 +* The abort function will abort the specified command.
45405 +* cmd = Linux SCSI command packet to be aborted.
45408 +* Either SUCCESS or FAILED.
45411 +**************************************************************************/
45413 +qla2xxx_eh_abort(Scsi_Cmnd *cmd)
45416 + int return_status = FAILED;
45418 + scsi_qla_host_t *ha;
45419 + scsi_qla_host_t *vis_ha;
45422 + struct list_head *list, *temp;
45423 + struct Scsi_Host *host;
45424 + uint8_t found = 0;
45425 + uint32_t b, t, l;
45426 + unsigned long flags;
45429 + ENTER("qla2xxx_eh_abort");
45431 + /* Get the SCSI request ptr */
45432 + sp = (srb_t *) CMD_SP(cmd);
45435 + * If sp is NULL, command is already returned.
45436 + * sp is NULLed just before we call back scsi_done
45439 + if ((sp == NULL)) {
45440 + /* no action - we don't have command */
45441 + DEBUG(printk("qla2xxx_eh_abort: cmd already done sp=%p\n",sp);)
45445 + DEBUG(printk("qla2xxx_eh_abort: refcount %i \n",
45446 + atomic_read(&sp->ref_count));)
45449 + vis_ha = (scsi_qla_host_t *) cmd->device->host->hostdata;
45450 + vis_ha->eh_start=0;
45451 + if (vis_ha->flags.failover_enabled)
45452 + /* Get Actual HA pointer */
45453 + ha = (scsi_qla_host_t *)sp->ha;
45455 + ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
45459 + /* Generate LU queue on bus, target, LUN */
45460 + b = SCSI_BUS_32(cmd);
45461 + t = SCSI_TCN_32(cmd);
45462 + l = SCSI_LUN_32(cmd);
45463 + q = GET_LU_Q(vis_ha, t, l);
45466 + * if no LUN queue then something is very wrong!!!
45469 + printk(KERN_WARNING
45470 + "qla2x00: (%x:%x:%x) No LUN queue.\n", b, t, l);
45472 + /* no action - we don't have command */
45476 + DEBUG2(printk("scsi(%ld): ABORTing cmd=%p sp=%p jiffies = 0x%lx, "
45477 + "timeout=%x, dpc_flags=%lx, vis_ha->dpc_flags=%lx\n",
45482 + CMD_TIMEOUT(cmd)/HZ,
45484 + vis_ha->dpc_flags);)
45485 + DEBUG2(qla2x00_print_scsi_cmd(cmd));
45486 + DEBUG2(qla2x00_print_q_info(q);)
45488 + /* Search done queue */
45489 + spin_lock_irqsave(&ha->list_lock,flags);
45490 + list_for_each_safe(list, temp, &ha->done_queue) {
45491 + rp = list_entry(list, srb_t, list);
45493 + if (cmd != rp->cmd)
45497 + * Found command. No need to remove command from done list.
45498 + * Just proceed to call done.
45500 + return_status = SUCCESS;
45502 + qla2x00_delete_from_done_queue(ha, sp);
45505 + } /* list_for_each_safe() */
45506 + spin_unlock_irqrestore(&ha->list_lock, flags);
45509 + * Return immediately if the aborted command was already in the done
45513 + printk(KERN_INFO "qla2xxx_eh_abort: Returning completed "
45514 + "command=%p sp=%p\n", cmd, sp);
45515 + __sp_put(ha, sp);
45516 + return (return_status);
45521 + * See if this command is in the retry queue
45524 + DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45525 + "in retry queue.\n", sp);)
45527 + spin_lock_irqsave(&ha->list_lock, flags);
45528 + list_for_each_safe(list, temp, &ha->retry_queue) {
45529 + rp = list_entry(list, srb_t, list);
45531 + if (cmd != rp->cmd)
45535 + DEBUG2(printk("qla2xxx_eh_abort: found "
45536 + "in retry queue. SP=%p\n", sp);)
45538 + __del_from_retry_queue(ha, rp);
45539 + CMD_RESULT(rp->cmd) = DID_ABORT << 16;
45540 + __add_to_done_queue(ha, rp);
45542 + return_status = SUCCESS;
45547 + } /* list_for_each_safe() */
45548 + spin_unlock_irqrestore(&ha->list_lock, flags);
45552 + * Search failover queue
45554 + if (ha->flags.failover_enabled) {
45556 + DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45557 + "in failover queue.\n", sp);)
45559 + spin_lock_irqsave(&ha->list_lock, flags);
45560 + list_for_each_safe(list, temp, &ha->failover_queue) {
45561 + rp = list_entry(list, srb_t, list);
45563 + if (cmd != rp->cmd)
45566 + DEBUG2(printk(KERN_WARNING
45567 + "qla2xxx_eh_abort: found "
45568 + "in failover queue. SP=%p\n",
45571 + /* Remove srb from failover queue. */
45572 + __del_from_failover_queue(ha, rp);
45573 + CMD_RESULT(rp->cmd) = DID_ABORT << 16;
45574 + __add_to_done_queue(ha, rp);
45576 + return_status = SUCCESS;
45581 + } /* list_for_each_safe() */
45582 + spin_unlock_irqrestore(&ha->list_lock, flags);
45583 + } /*End of if !found */
45587 + * Our SP pointer points at the command we want to remove from the
45588 + * pending queue providing we haven't already sent it to the adapter.
45591 + DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45592 + "in pending queue.\n", sp);)
45594 + spin_lock_irqsave(&vis_ha->list_lock, flags);
45595 + list_for_each_safe(list, temp, &vis_ha->pending_queue) {
45596 + rp = list_entry(list, srb_t, list);
45597 + if (rp->cmd != cmd)
45600 + /* Remove srb from LUN queue. */
45601 + rp->flags |= SRB_ABORTED;
45603 + DEBUG2(printk("qla2xxx_eh_abort: Cmd in pending queue."
45604 + " serial_number %ld.\n",
45605 + sp->cmd->serial_number);)
45607 + __del_from_pending_queue(vis_ha, rp);
45608 + CMD_RESULT(cmd) = DID_ABORT << 16;
45610 + __add_to_done_queue(vis_ha, rp);
45612 + return_status = SUCCESS;
45616 + } /* list_for_each_safe() */
45617 + spin_unlock_irqrestore(&vis_ha->list_lock, flags);
45618 + } /*End of if !found */
45620 + if (!found) { /* find the command in our active list */
45621 + DEBUG3(printk("qla2xxx_eh_abort: searching sp %p "
45622 + "in outstanding queue.\n", sp);)
45624 + spin_lock_irqsave(&ha->hardware_lock, flags);
45625 + for (i = 1; i < MAX_OUTSTANDING_COMMANDS; i++) {
45626 + sp = ha->outstanding_cmds[i];
45631 + if (sp->cmd != cmd)
45635 + DEBUG2(printk("qla2xxx_eh_abort(%ld): aborting sp %p "
45636 + "from RISC. pid=%d sp->state=%x\n",
45639 + (int)sp->cmd->serial_number,
45641 + DEBUG(qla2x00_print_scsi_cmd(cmd);)
45642 + DEBUG(qla2x00_print_q_info(q);)
45644 + /* Get a reference to the sp and drop the lock.*/
45647 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
45648 + spin_unlock(ha->host->host_lock);
45650 + if (qla2x00_abort_command(ha, sp)) {
45651 + DEBUG2(printk("qla2xxx_eh_abort: abort_command "
45652 + "mbx failed.\n");)
45653 + return_status = FAILED;
45655 + DEBUG3(printk("qla2xxx_eh_abort: abort_command "
45656 + " mbx success.\n");)
45657 + return_status = SUCCESS;
45662 + spin_lock_irq(ha->host->host_lock);
45663 + spin_lock_irqsave(&ha->hardware_lock, flags);
45666 + * Regardless of mailbox command status, go check on
45667 + * done queue just in case the sp is already done.
45671 + }/*End of for loop */
45672 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
45674 + } /*End of if !found */
45676 + /*Waiting for our command in done_queue to be returned to OS.*/
45677 + if (qla2x00_eh_wait_on_command(ha, cmd) != 0) {
45678 + DEBUG2(printk("qla2xxx_eh_abort: cmd returned back to OS.\n");)
45679 + return_status = SUCCESS;
45682 + if (return_status == FAILED) {
45683 + printk(KERN_INFO "qla2xxx_eh_abort Exiting: status=Failed\n");
45687 + DEBUG(printk("qla2xxx_eh_abort: Exiting. return_status=0x%x.\n",
45690 + LEAVE("qla2xxx_eh_abort");
45692 + return(return_status);
45695 +/**************************************************************************
45696 +* qla2x00_eh_wait_for_pending_target_commands
45699 +* Waits for all the commands to come back from the specified target.
45702 +* ha - pointer to scsi_qla_host structure.
45705 +* Either SUCCESS or FAILED.
45708 +**************************************************************************/
45710 +qla2x00_eh_wait_for_pending_target_commands(scsi_qla_host_t *ha, int t)
45714 + unsigned long flags;
45721 + * Waiting for all commands for the designated target in the active
45724 + for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
45725 + spin_lock_irqsave(&ha->hardware_lock, flags);
45726 + sp = ha->outstanding_cmds[cnt];
45729 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
45730 + if (SCSI_TCN_32(cmd) == t) {
45731 + qla2x00_eh_wait_on_command(ha, cmd);
45735 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
45742 +/**************************************************************************
45743 +* qla2xxx_eh_device_reset
45746 +* The device reset function will reset the target and abort any
45747 +* executing commands.
45749 +* NOTE: The use of SP is undefined within this context. Do *NOT*
45750 +* attempt to use this value, even if you determine it is
45754 +* cmd = Linux SCSI command packet of the command that cause the
45755 +* bus device reset.
45758 +* SUCCESS/FAILURE (defined as macro in scsi.h).
45760 +**************************************************************************/
45762 +qla2xxx_eh_device_reset(Scsi_Cmnd *cmd)
45764 + int return_status = SUCCESS;
45765 + uint32_t b, t, l;
45766 + scsi_qla_host_t *ha;
45768 +#if defined(LOGOUT_AFTER_DEVICE_RESET)
45770 + fc_port_t *fcport;
45775 + if (cmd == NULL) {
45777 + "%s(): **** SCSI mid-layer passing in NULL cmd\n",
45784 + /* Verify the device exists. */
45785 + ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
45786 + ha->eh_start = 0;
45787 + b = SCSI_BUS_32(cmd);
45788 + t = SCSI_TCN_32(cmd);
45789 + l = SCSI_LUN_32(cmd);
45790 + if (TGT_Q(ha, t) == NULL) {
45792 + "%s(): **** CMD derives a NULL TGT_Q\n",
45799 + ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
45802 + printk(debug_buff,"Resetting Device= 0x%x\n", (int)cmd);
45803 +/* WE SHOULD NOT call this function, since it dereferences SP */
45804 + //qla2x00_print_scsi_cmd(cmd);
45805 + qla2x00_panic(__func__, ha->host);
45808 + if (qla2x00_verbose)
45810 + "scsi(%ld:%d:%d:%d): DEVICE RESET ISSUED.\n",
45811 + ha->host_no, (int)b, (int)t, (int)l);
45813 + DEBUG2(printk("scsi(%ld): DEVICE_RESET cmd=%p jiffies = 0x%lx, "
45814 + "timeout=%x, dpc_flags=%lx, status=%x allowed=%d "
45815 + "cmd.state=%x\n",
45819 + CMD_TIMEOUT(cmd)/HZ,
45824 +/* WE SHOULD NOT call this function, since it dereferences SP */
45825 + //qla2x00_print_scsi_cmd(cmd);
45827 + if (!((test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
45828 + (test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) ||
45829 + (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) ||
45830 + (!atomic_read(&ha->loop_down_timer) &&
45831 + ha->loop_state == LOOP_DOWN)||
45832 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
45833 + ha->loop_state != LOOP_READY)) {
45835 + clear_bit(DEVICE_RESET_NEEDED, &ha->dpc_flags);
45837 + spin_unlock_irq(ha->host->host_lock);
45839 + if (qla2x00_device_reset(ha, t, l) != 0) {
45840 + return_status = FAILED;
45843 +#if defined(LOGOUT_AFTER_DEVICE_RESET)
45844 + if (return_status == SUCCESS) {
45845 + lq = (os_lun_t *)LUN_Q(ha, t, l);
45846 + fcport = lq->fclun->fcport;
45848 + if (fcport->flags & FC_FABRIC_DEVICE) {
45849 + qla2x00_fabric_logout(ha,
45850 + ha->fc_db[t].loop_id & 0xff);
45851 + ha->fc_db[t].flag |= DEV_RELOGIN;
45852 + qla2x00_mark_device_lost(ha, fcport);
45857 + spin_lock_irq(ha->host->host_lock);
45860 + * Wait a while for the loop to come back. Return SUCCESS
45861 + * for the kernel to try again.
45863 + spin_unlock_irq(ha->host->host_lock);
45865 + set_current_state(TASK_INTERRUPTIBLE);
45866 + schedule_timeout(5 * HZ);
45868 + spin_lock_irq(ha->host->host_lock);
45870 + return_status = SUCCESS;
45873 + if (return_status == FAILED) {
45874 + DEBUG2(printk("%s() Exiting: Reset Failed\n", __func__);)
45878 + /* Waiting for all commands to complete for the device */
45879 + if (qla2x00_eh_wait_for_pending_target_commands(ha, t))
45880 + return_status = FAILED;
45882 + if (return_status == FAILED) {
45883 + printk(KERN_INFO "%s() Exiting: status = Failed\n", __func__);
45889 + return (return_status);
45892 +/**************************************************************************
45893 +* qla2x00_eh_wait_for_pending_commands
45896 +* Waits for all the commands to come back from the specified host.
45899 +* ha - pointer to scsi_qla_host structure.
45906 +**************************************************************************/
45908 +qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *ha)
45912 + unsigned long flags;
45919 + * Waiting for all commands for the designated target in the active
45922 + for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
45923 + spin_lock_irqsave(&ha->hardware_lock, flags);
45924 + sp = ha->outstanding_cmds[cnt];
45927 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
45928 + status = qla2x00_eh_wait_on_command(ha, cmd);
45931 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
45938 +/**************************************************************************
45939 +* qla2xxx_eh_bus_reset
45942 +* The bus reset function will reset the bus and abort any executing
45946 +* cmd = Linux SCSI command packet of the command that cause the
45950 +* SUCCESS/FAILURE (defined as macro in scsi.h).
45952 +**************************************************************************/
45954 +qla2xxx_eh_bus_reset(Scsi_Cmnd *cmd)
45956 + int return_status = SUCCESS;
45957 + uint32_t b, t, l;
45960 + struct list_head *hal;
45961 + scsi_qla_host_t *ha, *search_ha;
45964 + ENTER("qla2xxx_eh_bus_reset");
45966 + if (cmd == NULL) {
45968 + "%s(): **** SCSI mid-layer passing in NULL cmd\n",
45975 + b = SCSI_BUS_32(cmd);
45976 + t = SCSI_TCN_32(cmd);
45977 + l = SCSI_LUN_32(cmd);
45979 + ha = (scsi_qla_host_t *) cmd->device->host->hostdata;
45981 + sp = (srb_t *) CMD_SP(cmd);
45983 + if (ha == NULL) {
45985 + "%s(): **** CMD derives a NULL HA\n",
45993 + read_lock(&qla_hostlist_lock);
45994 + list_for_each(hal, &qla_hostlist) {
45995 + search_ha = list_entry(hal, scsi_qla_host_t, list);
45997 + if (search_ha == ha) {
46002 + read_unlock(&qla_hostlist_lock);
46006 + "%s(): **** CMD derives a NULL search HA\n",
46014 + printk("Resetting the Bus= 0x%x\n", (int)cmd);
46015 + qla2x00_print_scsi_cmd(cmd);
46016 + qla2x00_panic("qla2100_reset", ha->host);
46019 + if (qla2x00_verbose)
46021 + "scsi(%ld:%d:%d:%d): LOOP RESET ISSUED.\n",
46022 + ha->host_no, (int)b, (int)t, (int)l);
46024 + if (!((test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
46025 + (test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) ||
46026 + (!atomic_read(&ha->loop_down_timer) &&
46027 + ha->loop_state == LOOP_DOWN)||
46028 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
46029 + ha->loop_state != LOOP_READY)) {
46031 + clear_bit(LOOP_RESET_NEEDED, &ha->dpc_flags);
46032 + spin_unlock_irq(ha->host->host_lock);
46034 + if (qla2x00_loop_reset(ha) != 0) {
46035 + return_status = FAILED;
46037 + spin_lock_irq(ha->host->host_lock);
46040 + * Wait a while for the loop to come back. Return SUCCESS
46041 + * for the kernel to try again.
46043 + spin_unlock_irq(ha->host->host_lock);
46045 + set_current_state(TASK_INTERRUPTIBLE);
46046 + schedule_timeout(5 * HZ);
46048 + spin_lock_irq(ha->host->host_lock);
46050 + return_status = SUCCESS;
46053 + if (return_status == FAILED) {
46054 + DEBUG2(printk("qla2xxx_eh_bus_reset Exiting: Reset Failed\n");)
46055 + printk("qla2xxx_eh_bus_reset Exiting: Reset Failed\n");
46059 + /* Blocking Call. It goes to sleep waiting for cmd to get to done q */
46060 + /* Waiting for our command in done_queue to be returned to OS.*/
46062 + if ( qla2x00_eh_wait_for_pending_commands(ha) == 0) {
46063 + return_status = FAILED;
46066 + if(return_status == FAILED) {
46067 + printk(KERN_INFO "qla2xxx_eh_bus_reset Exiting: status=Failed\n");
46070 + printk(KERN_INFO "qla2xxx_eh_bus_reset Exiting: status=SUCCESS\n");
46072 + LEAVE("qla2xxx_eh_bus_reset");
46074 + return (return_status);
46077 +/**************************************************************************
46078 +* qla2xxx_eh_host_reset
46081 +* The reset function will reset the Adapter.
46084 +* cmd = Linux SCSI command packet of the command that cause the
46088 +* Either SUCCESS or FAILED.
46091 +**************************************************************************/
46093 +qla2xxx_eh_host_reset(Scsi_Cmnd *cmd)
46095 + int return_status = SUCCESS;
46097 + uint32_t b, t, l;
46099 + struct list_head *hal;
46100 + scsi_qla_host_t *ha, *search_ha;
46102 + ENTER("qla2xxx_eh_host_reset");
46104 + if (cmd == NULL) {
46106 + "%s(): **** SCSI mid-layer passing in NULL cmd\n",
46113 + ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
46115 + /* Find actual ha */
46116 + sp = (srb_t *)CMD_SP(cmd);
46117 + if (ha->flags.failover_enabled && sp != NULL)
46120 + ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
46122 + if (ha == NULL) {
46124 + "%s(): **** CMD derives a NULL HA\n",
46132 + read_lock(&qla_hostlist_lock);
46133 + list_for_each(hal, &qla_hostlist) {
46134 + search_ha = list_entry(hal, scsi_qla_host_t, list);
46136 + if (search_ha == ha) {
46141 + read_unlock(&qla_hostlist_lock);
46145 + "%s(): **** CMD derives a NULL search HA\n",
46152 + /* Display which one we're actually resetting for debug. */
46153 + DEBUG(printk("qla2xxx_eh_host_reset: entered for scsi%ld. "
46154 + "Resetting host_no %ld.\n",
46155 + ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46159 + printk("Host Reset... Command=\n");
46160 + qla2x00_print_scsi_cmd(cmd);
46161 + qla2x00_panic("qla2xxx_eh_host_reset", ha->host);
46165 + * Now issue reset.
46167 + b = SCSI_BUS_32(cmd);
46168 + t = SCSI_TCN_32(cmd);
46169 + l = SCSI_LUN_32(cmd);
46171 + if (qla2x00_verbose) {
46173 + "scsi(%ld:%d:%d:%d): now issue ADAPTER RESET.\n",
46174 + ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46180 + DEBUG2(printk(KERN_INFO
46181 + "scsi(%ld:%d:%d:%d): now issue ADAPTER RESET.\n",
46182 + ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46183 + (int)b, (int)t, (int)l));
46185 + if (!(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags))) {
46186 + set_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
46188 + spin_unlock_irq(ha->host->host_lock);
46190 + if (qla2x00_abort_isp(ha, 1)) {
46191 + /* failed. try later */
46192 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
46193 + return_status = FAILED;
46195 + DEBUG2(printk(KERN_WARNING
46196 + "scsi(%ld:%d:%d:%d): ha %ld ADAPTER RESET "
46197 + "failed. Scheduled retry later.\n",
46198 + ((scsi_qla_host_t *)cmd->device->host->hostdata)->host_no,
46199 + (int)b, (int)t, (int)l, ha->host_no);)
46201 + return_status = SUCCESS;
46204 + spin_lock_irq(ha->host->host_lock);
46206 + clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
46209 + * Already active. Sleep a while then return SUCCESS for kernel
46210 + * to retry the IO.
46212 + spin_unlock_irq(ha->host->host_lock);
46214 + set_current_state(TASK_INTERRUPTIBLE);
46215 + schedule_timeout(5 * HZ);
46217 + spin_lock_irq(ha->host->host_lock);
46219 + return_status = SUCCESS;
46221 + if ( return_status == FAILED) {
46222 + DEBUG2(printk("qla2xxx_eh_host_reset Exiting: Reset Failed\n");)
46226 + /* Waiting for our command in done_queue to be returned to OS.*/
46227 + if ( qla2x00_eh_wait_for_pending_commands(ha) == 0) {
46228 + return_status = FAILED;
46231 + if(return_status == FAILED) {
46232 + printk(KERN_INFO "qla2xxx_eh_host_reset Exiting: status=Failed\n");
46235 + printk(KERN_INFO "qla2xxx_eh_host_reset Exiting: status=SUCCESS\n");
46237 + LEAVE("qla2xxx_eh_host_reset");
46239 + return(return_status);
46244 +* qla2x00_loop_reset
46245 +* Issue loop reset.
46248 +* ha = adapter block pointer.
46254 +qla2x00_loop_reset(scsi_qla_host_t *ha)
46256 + uint8_t status = QL_STATUS_SUCCESS;
46262 + if (ha->flags.enable_lip_reset) {
46263 + status = qla2x00_lip_reset(ha);
46266 + if (status == QL_STATUS_SUCCESS && ha->flags.enable_target_reset) {
46267 + for (t = 0; t < MAX_FIBRE_DEVICES; t++) {
46268 + if ((tq = TGT_Q(ha, t)) == NULL)
46271 + if (tq->vis_port == NULL)
46274 + status = qla2x00_target_reset(ha, 0, t);
46275 + if (status != QL_STATUS_SUCCESS) {
46281 + if (status == QL_STATUS_SUCCESS &&
46282 + ((!ha->flags.enable_target_reset &&
46283 + !ha->flags.enable_lip_reset) ||
46284 + ha->flags.enable_lip_full_login)) {
46286 + status = qla2x00_full_login_lip(ha);
46289 + /* Issue marker command only when we are going to start the I/O */
46290 + ha->marker_needed = 1;
46294 + DEBUG2_3(printk("%s(%ld): **** FAILED ****\n",
46299 + DEBUG3(printk("%s(%ld): exiting normally.\n",
46310 + * qla2x00_device_reset
46311 + * Issue bus device reset message to the target.
46314 + * ha = adapter block pointer.
46316 + * TARGET_QUEUE_LOCK must be released.
46317 + * ADAPTER_STATE_LOCK must be released.
46320 + * Kernel context.
46323 +qla2x00_device_reset(scsi_qla_host_t *vis_ha, uint16_t tgt, uint16_t lun)
46325 +#if !USE_ABORT_TGT
46327 + fc_port_t *fcport;
46330 + uint8_t status = 0;
46335 + /* Abort Target command will clear Reservation */
46336 + lq = GET_LU_Q(vis_ha, tgt, lun);
46337 + if (lq && lq->fclun)
46338 + status = qla2x00_abort_target(lq->fclun->fcport);
46340 + /* Abort Device command will not clear Reservation */
46341 + for (l = 0; l < MAX_LUNS; l++) {
46342 + lq = GET_LU_Q(vis_ha, tgt, l);
46346 + fcport = lq->fclun->fcport;
46347 + if (LOOP_RDY(fcport->ha)) {
46348 + qla2x00_abort_device(fcport->ha,
46357 + return( status );
46360 +/**************************************************************************
46361 +* qla1200_biosparam
46364 +* Return the disk geometry for the given SCSI device.
46365 +**************************************************************************/
46367 +qla2x00_biosparam(struct scsi_device *sdev,
46368 + struct block_device *bdev, sector_t capacity, int geom[])
46370 + int heads, sectors, cylinders;
46374 + cylinders = (unsigned long)capacity / (heads * sectors);
46375 + if (cylinders > 1024) {
46378 + cylinders = (unsigned long)capacity / (heads * sectors);
46382 + geom[1] = sectors;
46383 + geom[2] = cylinders;
46388 +/**************************************************************************
46389 + * qla2x00_slave_configure
46390 + * Determines the queue depth for a given device. There are two ways
46391 + * a queue depth can be obtained for a tagged queueing device. One
46392 + * way is the default queue depth which is determined by whether
46393 + * If it is defined, then it is used
46394 + * as the default queue depth. Otherwise, we use either 4 or 8 as the
46395 + * default queue depth (dependent on the number of hardware SCBs).
46396 + **************************************************************************/
46398 +qla2xxx_slave_configure(Scsi_Device * device)
46400 + int queue_depth = 64;
46402 + if (device->tagged_supported) {
46403 +#if defined(MODULE)
46404 + if (!(ql2xmaxqdepth == 0 || ql2xmaxqdepth > 256))
46405 + queue_depth = ql2xmaxqdepth;
46407 + ql2xmaxqdepth = queue_depth;
46409 + scsi_adjust_queue_depth(device, MSG_ORDERED_TAG, queue_depth);
46412 + "scsi(%d:%d:%d:%d): Enabled tagged queuing, queue "
46414 + device->host->host_no,
46415 + device->channel, device->id, device->lun,
46416 + device->queue_depth);
46418 + scsi_adjust_queue_depth(device, 0 /* TCQ off */,
46419 + device->host->hostt->cmd_per_lun /* 3 */);
46426 + * PCI driver interface
46428 +static int __devinit
46429 +qla_probe_device(struct pci_dev *pdev, const struct pci_device_id *ent)
46431 + device_reg_t *reg;
46432 + struct Scsi_Host *host;
46433 + scsi_qla_host_t *ha;
46434 + unsigned long flags = 0;
46435 + unsigned long wait_switch = 0;
46437 + if (pci_enable_device(pdev))
46441 + "qla2x00: Found VID=%x DID=%x SSVID=%x SSDID=%x\n",
46442 + pdev->vendor, pdev->device,
46443 + pdev->subsystem_vendor, pdev->subsystem_device);
46445 + if (ql2xfailover) {
46446 + sprintf(qla2x00_version_str, "%s-fo", QLA2100_VERSION);
46448 + sprintf(qla2x00_version_str, "%s", QLA2100_VERSION);
46451 + host = scsi_register(&qla2x00_driver_template, sizeof(scsi_qla_host_t));
46452 + if (host == NULL) {
46453 + printk(KERN_WARNING
46454 + "qla2x00: Couldn't register with scsi layer!\n");
46458 + /* Clear our data area */
46459 + ha = (scsi_qla_host_t *)host->hostdata;
46460 + memset(ha, 0, sizeof(scsi_qla_host_t));
46462 + ha->host_no = host->host_no;
46465 + /* Sanitize the information from PCI BIOS. */
46466 + host->irq = pdev->irq;
46467 + host->io_port = pci_resource_start(pdev, 0);
46469 + scsi_set_device(host, &pdev->dev);
46471 + ha->brd_info = (struct qla_board_info *)ent->driver_data;
46473 + if (qla2x00_verbose) {
46475 + "scsi(%d): Found a %s @ bus %d, device 0x%x, irq %d, "
46476 + "iobase 0x%lx\n",
46478 + ha->brd_info->name,
46479 + ha->pdev->bus->number,
46480 + PCI_SLOT(ha->pdev->devfn),
46481 + host->irq, host->io_port);
46484 + ha->iobase = (device_reg_t *) host->io_port;
46486 + spin_lock_init(&ha->hardware_lock);
46488 + /* 4.23 Initialize /proc/scsi/qla2x00 counters */
46489 + ha->actthreads = 0;
46490 + ha->qthreads = 0;
46491 + ha->dump_done = 0;
46492 + ha->total_isr_cnt = 0;
46493 + ha->total_isp_aborts = 0;
46494 + ha->total_lip_cnt = 0;
46495 + ha->total_dev_errs = 0;
46496 + ha->total_ios = 0;
46497 + ha->total_bytes = 0;
46499 + if (qla2x00_mem_alloc(ha)) {
46500 + printk(KERN_WARNING
46501 + "scsi(%d): [ERROR] Failed to allocate memory for adapter\n",
46504 + qla2x00_mem_free(ha);
46506 + scsi_unregister(host);
46511 + ha->prev_topology = 0;
46512 + ha->ports = MAX_BUSES;
46514 +#if defined(ISP2100)
46515 + ha->max_targets = MAX_TARGETS_2100;
46517 + ha->max_targets = MAX_TARGETS_2200;
46520 + /* load the F/W, read paramaters, and init the H/W */
46521 + ha->instance = num_hosts;
46523 + init_MUTEX_LOCKED(&ha->mbx_intr_sem);
46525 + INIT_LIST_HEAD(&ha->list);
46526 + INIT_LIST_HEAD(&ha->fcports);
46527 + INIT_LIST_HEAD(&ha->fcinitiators);
46528 + INIT_LIST_HEAD(&ha->done_queue);
46529 + INIT_LIST_HEAD(&ha->retry_queue);
46530 + INIT_LIST_HEAD(&ha->scsi_retry_queue);
46531 + INIT_LIST_HEAD(&ha->failover_queue);
46532 + INIT_LIST_HEAD(&ha->pending_queue);
46534 + if (ql2xfailover)
46535 + ha->flags.failover_enabled = 1;
46537 + ha->flags.failover_enabled = 0;
46539 + INIT_WORK(&ha->run_qla_task, qla2x00_done_work, (void *) ha);
46542 + * These locks are used to prevent more than one CPU
46543 + * from modifying the queue at the same time. The
46544 + * higher level "io_request_lock" will reduce most
46545 + * contention for these locks.
46547 + spin_lock_init(&ha->mbx_bits_lock);
46548 + spin_lock_init(&ha->mbx_reg_lock);
46549 + spin_lock_init(&ha->mbx_q_lock);
46550 + spin_lock_init(&ha->list_lock);
46552 + if (qla2x00_initialize_adapter(ha) &&
46553 + !(ha->device_flags & DFLG_NO_CABLE)) {
46555 + printk(KERN_WARNING
46556 + "scsi(%ld): Failed to initialize adapter\n", ha->host_no);
46558 + DEBUG2(printk("scsi(%ld): Failed to initialize adapter - "
46559 + "Adapter flags %x.\n",
46560 + ha->host_no, ha->device_flags));
46562 + qla2x00_mem_free(ha);
46564 + scsi_unregister(host);
46570 + * Startup the kernel thread for this host adapter
46572 + init_completion(&ha->dpc_inited);
46573 + init_completion(&ha->dpc_exited);
46575 + ha->dpc_should_die = 0;
46576 + ha->dpc_pid = kernel_thread(qla2x00_do_dpc, ha, 0);
46577 + if (ha->dpc_pid < 0) {
46578 + printk(KERN_WARNING
46579 + "scsi(%ld): Unable to start DPC thread!\n", ha->host_no);
46581 + qla2x00_mem_free(ha);
46583 + scsi_unregister(host);
46587 + wait_for_completion(&ha->dpc_inited);
46589 + /* Mark preallocated Loop IDs in use. */
46590 + ha->fabricid[SNS_FL_PORT].in_use = TRUE;
46591 + ha->fabricid[FABRIC_CONTROLLER].in_use = TRUE;
46592 + ha->fabricid[SIMPLE_NAME_SERVER].in_use = TRUE;
46594 + /* Register our resources with Linux */
46595 + if (qla2x00_register_with_Linux(ha, ha->ports - 1)) {
46596 + printk(KERN_WARNING
46597 + "scsi(%ld): Failed to register resources.\n",
46600 + qla2x00_mem_free(ha);
46602 + scsi_unregister(host);
46607 + DEBUG2(printk("DEBUG: detect hba %ld at address = %p\n",
46608 + ha->host_no, ha));
46610 + reg = ha->iobase;
46612 + /* Disable ISP interrupts. */
46613 + qla2x00_disable_intrs(ha);
46615 + /* Ensure mailbox registers are free. */
46616 + spin_lock_irqsave(&ha->hardware_lock, flags);
46617 + WRT_REG_WORD(®->semaphore, 0);
46618 + WRT_REG_WORD(®->hccr, HCCR_CLR_RISC_INT);
46619 + WRT_REG_WORD(®->hccr, HCCR_CLR_HOST_INT);
46621 + /* Enable proper parity */
46622 +#if defined(ISP2300)
46623 + if (ha->pdev->device == QLA2312_DEVICE_ID ||
46624 + ha->pdev->device == QLA2322_DEVICE_ID)
46625 + /* SRAM, Instruction RAM and GP RAM parity */
46626 + WRT_REG_WORD(®->hccr, (HCCR_ENABLE_PARITY + 0x7));
46628 + /* SRAM parity */
46629 + WRT_REG_WORD(®->hccr, (HCCR_ENABLE_PARITY + 0x1));
46631 + spin_unlock_irqrestore(&ha->hardware_lock, flags);
46634 + * if failover is enabled read the user configuration
46636 + if (ha->flags.failover_enabled) {
46637 + if (ConfigRequired > 0)
46638 + mp_config_required = 1;
46640 + mp_config_required = 0;
46642 + DEBUG(printk("qla2x00_detect: qla2x00_cfg_init for hba %ld\n",
46645 + qla2x00_cfg_init(ha);
46648 + /* Enable chip interrupts. */
46649 + qla2x00_enable_intrs(ha);
46651 + /* Insert new entry into the list of adapters */
46652 + write_lock(&qla_hostlist_lock);
46653 + list_add_tail(&ha->list, &qla_hostlist);
46654 + write_unlock(&qla_hostlist_lock);
46658 + * Wait around max loop_reset_delay secs for the devices to come
46659 + * on-line. We don't want Linux scanning before we are ready.
46662 + for (wait_switch = jiffies + (ha->loop_reset_delay * HZ);
46663 + time_before(jiffies,wait_switch) &&
46664 + !(ha->device_flags & (DFLG_NO_CABLE | DFLG_FABRIC_DEVICES))
46665 + && (ha->device_flags & SWITCH_FOUND) ;) {
46667 + qla2x00_check_fabric_devices(ha);
46669 + set_current_state(TASK_INTERRUPTIBLE);
46670 + schedule_timeout(5);
46673 + /* List the target we have found */
46674 + if (displayConfig && (!ha->flags.failover_enabled))
46675 + qla2x00_display_fc_names(ha);
46677 + pci_set_drvdata(pdev, ha);
46678 + ha->init_done = 1;
46681 + if (displayConfig && ha->flags.failover_enabled)
46682 + qla2x00_cfg_display_devices();
46687 +static void __devexit
46688 +qla_remove_device(struct pci_dev *pdev)
46690 + struct list_head *hal, *temp;
46691 + scsi_qla_host_t *ha, *iter_ha;
46693 + ha = pci_get_drvdata(pdev);
46695 + /* Sanity check -- make sure the entry is in our list */
46696 + write_lock(&qla_hostlist_lock);
46697 + list_for_each_safe(hal, temp, &qla_hostlist) {
46698 + iter_ha = list_entry(hal, scsi_qla_host_t, list);
46700 + if (iter_ha == ha) {
46701 + list_del(&ha->list);
46702 + qla2x00_free_device(ha);
46706 + write_unlock(&qla_hostlist_lock);
46710 +qla2x00_free_device(scsi_qla_host_t *ha)
46713 + struct Scsi_Host *host;
46717 + /* turn-off interrupts on the card */
46718 + if (ha->interrupts_on)
46719 + qla2x00_disable_intrs(ha);
46721 + /* Detach interrupts */
46723 + free_irq(host->irq, ha);
46725 + /* release io space registers */
46726 + if (host->io_port)
46727 + release_region(host->io_port, 0xff);
46729 + /* Disable timer */
46730 + if (ha->timer_active)
46731 + qla2x00_stop_timer(ha);
46733 + /* Kill the kernel thread for this host */
46734 + if (ha->dpc_pid >= 0) {
46735 + ha->dpc_should_die = 1;
46737 + ret = kill_proc(ha->dpc_pid, SIGTERM, 1);
46740 + "scsi(%ld): Unable to signal DPC thread -- (%d)\n",
46741 + ha->host_no, ret);
46743 + /* TODO: SOMETHING MORE??? */
46745 + wait_for_completion(&ha->dpc_exited);
46749 +#if MEMORY_MAPPED_IO
46750 + if (ha->mmpbase) {
46751 + iounmap((void *) (((unsigned long) ha->mmpbase) & PAGE_MASK));
46755 + apidev_cleanup();
46757 + qla2x00_mem_free(ha);
46759 + if (ha->flags.failover_enabled)
46760 + qla2x00_cfg_mem_free(ha);
46762 + ha->flags.online = FALSE;
46764 + scsi_unregister(host);
46769 + * The following support functions are adopted to handle
46770 + * the re-entrant qla2x00_proc_info correctly.
46773 +copy_mem_info(struct info_str *info, char *data, int len)
46775 + if (info->pos + len > info->offset + info->length)
46776 + len = info->offset + info->length - info->pos;
46778 + if (info->pos + len < info->offset) {
46779 + info->pos += len;
46783 + if (info->pos < info->offset) {
46786 + partial = info->offset - info->pos;
46788 + info->pos += partial;
46793 + memcpy(info->buffer, data, len);
46794 + info->pos += len;
46795 + info->buffer += len;
46800 +copy_info(struct info_str *info, char *fmt, ...)
46806 + va_start(args, fmt);
46807 + len = vsprintf(buf, fmt, args);
46810 + copy_mem_info(info, buf, len);
46815 +/*************************************************************************
46816 +* qla2x00_proc_info
46819 +* Return information to handle /proc support for the driver.
46821 +* inout : decides the direction of the dataflow and the meaning of the
46823 +* buffer: If inout==FALSE data is being written to it else read from it
46824 +* (ptr to a page buffer)
46825 +* *start: If inout==FALSE start of the valid data in the buffer
46826 +* offset: If inout==FALSE starting offset from the beginning of all
46827 +* possible data to return.
46828 +* length: If inout==FALSE max number of bytes to be written into the buffer
46829 +* else number of bytes in "buffer"
46831 +* < 0: error. errno value.
46832 +* >= 0: sizeof data returned.
46833 +*************************************************************************/
46835 +qla2x00_proc_info(char *buffer,
46836 + char **start, off_t offset, int length, int hostno, int inout)
46838 + struct Scsi_Host *host;
46839 + struct info_str info;
46841 + int retval = -EINVAL;
46845 + unsigned long *flags;
46846 + struct list_head *list, *temp;
46847 + unsigned long cpu_flags;
46848 + uint8_t *loop_state;
46854 + struct list_head *hal;
46855 + scsi_qla_host_t *ha;
46857 + DEBUG3(printk(KERN_INFO
46858 + "Entering proc_info buff_in=%p, offset=0x%lx, length=0x%x, "
46859 + "hostno=%d\n", buffer, offset, length, hostno);)
46864 + /* Find the host that was specified */
46866 + read_lock(&qla_hostlist_lock);
46867 + list_for_each(hal, &qla_hostlist) {
46868 + ha = list_entry(hal, scsi_qla_host_t, list);
46870 + if (ha->host->host_no == hostno) {
46875 + read_unlock(&qla_hostlist_lock);
46877 + /* if host wasn't found then exit */
46879 + DEBUG2_3(printk(KERN_WARNING
46880 + "%s: Can't find adapter for host number %d\n",
46881 + __func__, hostno);)
46888 + if (inout == TRUE) {
46889 + /* Has data been written to the file? */
46891 + "%s: has data been written to the file. \n",
46893 + return (qla2x00_set_info(buffer, length, host));
46900 + info.buffer = buffer;
46901 + info.length = length;
46902 + info.offset = offset;
46905 + /* start building the print buffer */
46907 + "QLogic PCI to Fibre Channel Host Adapter for " ISP_NAME ":\n"
46908 + " Firmware version: %2d.%02d.%02d ",
46909 + ha->fw_major_version,
46910 + ha->fw_minor_version,
46911 + ha->fw_subminor_version);
46913 + switch (ha->fw_attributes & 0xFF) {
46915 + copy_info(&info, "EF");
46918 + copy_info(&info, "TP");
46921 + copy_info(&info, "IP");
46924 + copy_info(&info, "VI");
46927 + copy_info(&info, "(%x)", ha->fw_attributes);
46930 + if (ha->fw_attributes & 0x100)
46931 + copy_info(&info, "X");
46932 + copy_info(&info, ", ");
46934 + copy_info(&info, "Driver version %s\n", qla2x00_version_str);
46936 + copy_info(&info, "Entry address = %p\n", qla2x00_set_info);
46938 + tmp_sn = ((ha->serial0 & 0x1f) << 16) | (ha->serial2 << 8) |
46940 + copy_info(&info, "HBA: %s, Serial# %c%05d\n",
46941 + ha->brd_info->name, ('A' + tmp_sn/100000), (tmp_sn%100000));
46944 + "Request Queue = 0x%lx, Response Queue = 0x%lx\n",
46945 + (long unsigned int)ha->request_dma,
46946 + (long unsigned int)ha->response_dma);
46949 + "Request Queue count= %ld, Response Queue count= %ld\n",
46950 + (long)REQUEST_ENTRY_CNT, (long)RESPONSE_ENTRY_CNT);
46953 + "Total number of active commands = %ld\n",
46957 + "Total number of interrupts = %ld\n",
46958 + (long)ha->total_isr_cnt);
46960 +#if defined(FC_IP_SUPPORT)
46962 + "Total number of active IP commands = %ld\n",
46966 +#if defined(IOCB_THROLLE_USAGE)
46967 +#if defined(IOCB_HIT_RATE)
46969 + "Total number of IOCBs (used/max/#hit) "
46970 + "= (%d/%d/%d)\n",
46971 + (int)ha->iocb_cnt,
46972 + (int)ha->iocb_hiwat,
46973 + (int)ha->iocb_overflow_cnt);
46976 + "Total number of IOCBs (used/max) "
46978 + (int)ha->iocb_cnt, (int)ha->iocb_hiwat);
46984 + "Total number of queued commands = %d\n",
46985 + (max_srbs - ha->srb_cnt));
46988 + " Device queue depth = 0x%x\n",
46989 + (ql2xmaxqdepth == 0) ? 16 : ql2xmaxqdepth);
46992 + "Number of free request entries = %d\n", ha->req_q_cnt);
46995 + "Number of mailbox timeouts = %ld\n",
46996 + qla2x00_stats.mboxtout);
46999 + "Number of ISP aborts = %ld\n",qla2x00_stats.ispAbort);
47002 + "Number of loop resyncs = %ld\n",
47003 + qla2x00_stats.loop_resync);
47006 + "Number of retries for empty slots = %ld\n",
47007 + qla2x00_stats.outarray_full);
47010 + "Number of reqs in pending_q= %ld, retry_q= %d, "
47011 + "done_q= %ld, scsi_retry_q= %d\n",
47012 + ha->qthreads, ha->retry_q_cnt,
47013 + ha->done_q_cnt, ha->scsi_retry_q_cnt);
47015 + if (ha->flags.failover_enabled) {
47017 + "Number of reqs in failover_q= %d\n",
47018 + ha->failover_cnt);
47021 + flags = (unsigned long *) &ha->flags;
47023 + if (ha->loop_state == LOOP_DOWN) {
47024 + loop_state = "DOWN";
47025 + } else if (ha->loop_state ==LOOP_UP) {
47026 + loop_state = "UP";
47027 + } else if (ha->loop_state ==LOOP_READY) {
47028 + loop_state = "READY";
47029 + } else if (ha->loop_state ==LOOP_TIMEOUT) {
47030 + loop_state = "TIMEOUT";
47031 + } else if (ha->loop_state ==LOOP_UPDATE) {
47032 + loop_state = "UPDATE";
47034 + loop_state = "UNKNOWN";
47038 + "Host adapter:loop state= <%s>, flags= 0x%lx\n",
47039 + loop_state , *flags);
47041 + copy_info(&info, "Dpc flags = 0x%lx\n", ha->dpc_flags);
47043 + copy_info(&info, "MBX flags = 0x%x\n", ha->mbx_flags);
47045 + copy_info(&info, "SRB Free Count = %d\n", ha->srb_cnt);
47047 + copy_info(&info, "Port down retry = %3.3d\n",
47048 + ha->port_down_retry_count);
47050 + copy_info(&info, "Login retry count = %3.3d\n",
47051 + ha->login_retry_count);
47054 + "Commands retried with dropped frame(s) = %d\n",
47055 + ha->dropped_frame_error_cnt);
47057 + copy_info(&info, "\n");
47060 + if (qla2x00_req_dmp) {
47062 + "Outstanding Commands on controller:\n");
47064 + for (i = 1; i < MAX_OUTSTANDING_COMMANDS; i++) {
47065 + if ((sp = ha->outstanding_cmds[i]) == NULL) {
47069 + if ((cp = sp->cmd) == NULL) {
47073 + copy_info(&info, "(%d): Pid=%d, sp flags=0x%lx"
47074 + ", cmd=0x%p, state=%d\n",
47076 + (int)sp->cmd->serial_number,
47081 + if (info.pos >= info.offset + info.length) {
47082 + /* No need to continue */
47083 + goto profile_stop;
47087 +#endif /* REQ_TRACE */
47089 + if (qla2x00_retryq_dmp) {
47090 + if (!list_empty(&ha->retry_queue)) {
47092 + "qla%ld: Retry queue requests:\n",
47095 + spin_lock_irqsave(&ha->list_lock, cpu_flags);
47098 + list_for_each_safe(list, temp, &ha->retry_queue) {
47099 + sp = list_entry(list, srb_t, list);
47100 + t = SCSI_TCN_32(sp->cmd);
47101 + l = SCSI_LUN_32(sp->cmd);
47104 + "%d: target=%d, lun=%d, "
47105 + "pid=%ld sp=%p, sp->flags=0x%x,"
47106 + "sp->state= %d\n",
47108 + sp->cmd->serial_number, sp,
47109 + sp->flags, sp->state );
47113 + if (info.pos >= info.offset + info.length) {
47114 + /* No need to continue */
47115 + goto profile_stop;
47119 + spin_unlock_irqrestore(&ha->list_lock, cpu_flags);
47121 + } /* if (!list_empty(&ha->retry_queue))*/
47122 + } /* if ( qla2x00_retryq_dmp ) */
47124 + /* 2.25 node/port display to proc */
47125 + /* Display the node name for adapter */
47126 + copy_info(&info, "\nSCSI Device Information:\n");
47128 + "scsi-qla%d-adapter-node="
47129 + "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47130 + (int)ha->instance,
47131 + ha->init_cb->node_name[0],
47132 + ha->init_cb->node_name[1],
47133 + ha->init_cb->node_name[2],
47134 + ha->init_cb->node_name[3],
47135 + ha->init_cb->node_name[4],
47136 + ha->init_cb->node_name[5],
47137 + ha->init_cb->node_name[6],
47138 + ha->init_cb->node_name[7]);
47140 + /* display the port name for adapter */
47142 + "scsi-qla%d-adapter-port="
47143 + "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47144 + (int)ha->instance,
47145 + ha->init_cb->port_name[0],
47146 + ha->init_cb->port_name[1],
47147 + ha->init_cb->port_name[2],
47148 + ha->init_cb->port_name[3],
47149 + ha->init_cb->port_name[4],
47150 + ha->init_cb->port_name[5],
47151 + ha->init_cb->port_name[6],
47152 + ha->init_cb->port_name[7]);
47154 + /* Print out device port names */
47155 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
47156 + if (ha->fc_db[i].loop_id == PORT_UNUSED) {
47160 + if (ha->flags.failover_enabled) {
47162 + "scsi-qla%d-port-%d="
47163 + "%02x%02x%02x%02x%02x%02x%02x%02x:"
47164 + "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47165 + (int)ha->instance, i,
47166 + ha->fc_db[i].name[0],
47167 + ha->fc_db[i].name[1],
47168 + ha->fc_db[i].name[2],
47169 + ha->fc_db[i].name[3],
47170 + ha->fc_db[i].name[4],
47171 + ha->fc_db[i].name[5],
47172 + ha->fc_db[i].name[6],
47173 + ha->fc_db[i].name[7],
47174 + ha->fc_db[i].wwn[0],
47175 + ha->fc_db[i].wwn[1],
47176 + ha->fc_db[i].wwn[2],
47177 + ha->fc_db[i].wwn[3],
47178 + ha->fc_db[i].wwn[4],
47179 + ha->fc_db[i].wwn[5],
47180 + ha->fc_db[i].wwn[6],
47181 + ha->fc_db[i].wwn[7]);
47184 + "scsi-qla%d-target-%d="
47185 + "%02x%02x%02x%02x%02x%02x%02x%02x;\n",
47186 + (int)ha->instance, i,
47187 + ha->fc_db[i].wwn[0],
47188 + ha->fc_db[i].wwn[1],
47189 + ha->fc_db[i].wwn[2],
47190 + ha->fc_db[i].wwn[3],
47191 + ha->fc_db[i].wwn[4],
47192 + ha->fc_db[i].wwn[5],
47193 + ha->fc_db[i].wwn[6],
47194 + ha->fc_db[i].wwn[7]);
47197 + } /* 2.25 node/port display to proc */
47199 + copy_info(&info, "\nSCSI LUN Information:\n");
47201 + copy_info(&info, "(Id:Lun)\n");
47203 + /* scan for all equipment stats */
47204 + for (t = 0; t < MAX_FIBRE_DEVICES; t++) {
47205 + /* scan all luns */
47206 + for (l = 0; l < ha->max_luns; l++) {
47207 + up = (os_lun_t *) GET_LU_Q(ha, t, l);
47209 + if (up == NULL) {
47212 + if (up->fclun == NULL) {
47215 + if (up->fclun->flags & FC_DISCON_LUN) {
47220 + "(%2d:%2d): Total reqs %ld,",
47224 + " Pending reqs %ld,",
47227 + if (up->io_cnt < 3) {
47230 + (int)up->q_flag);
47234 + (int)up->q_flag);
47239 + up->fclun->fcport->ha->instance,
47240 + up->fclun->fcport->cur_path,
47241 + up->fclun->fcport->loop_id);
47243 + copy_info(&info, "\n");
47245 + if (info.pos >= info.offset + info.length) {
47246 + /* No need to continue */
47247 + goto profile_stop;
47251 + if (info.pos >= info.offset + info.length) {
47252 + /* No need to continue */
47259 + retval = info.pos > info.offset ? info.pos - info.offset : 0;
47261 + DEBUG3(printk(KERN_INFO
47262 + "Exiting proc_info: info.pos=%d, offset=0x%lx, "
47263 + "length=0x%x\n", info.pos, offset, length);)
47265 +#if QLA2100_LIPTEST
47272 +#if defined (CONFIG_SCSIFCHOTSWAP) || defined(CONFIG_GAMAP)
47274 + unsigned long long wwn;
47275 + unsigned char wwn_u8[8];
47278 +int qla2x00_get_scsi_info_from_wwn (int mode,
47279 + unsigned long long wwn,
47285 +scsi_qla_host_t *list;
47286 +Scsi_Device *scsi_device;
47287 +union wwnmap wwncompare;
47288 +union wwnmap wwncompare2;
47292 + * Retrieve big endian version of world wide name
47294 + wwncompare2.wwn = wwn;
47295 + for (j = 0, k=7; j < 8; j++, k--) {
47296 + wwncompare.wwn_u8[j] = wwncompare2.wwn_u8[k];
47300 + * query all hosts searching for WWN
47302 + for (list = qla2x00_hostlist; list; list = list->next) {
47303 + for (i = 0; i < MAX_FIBRE_DEVICES; i++) {
47305 + * Scan all devices in FibreChannel database
47306 + * if WWN match found, return SCSI device information
47308 + if (memcmp (wwncompare.wwn_u8, list->fc_db[i].name, 8) == 0) {
47310 + * If inserting, avoid scan for channel and lun information
47315 + *host = list->host->host_no;
47322 + * WWN matches, find channel and lun information from scsi
47325 + for (scsi_device = list->host->host_queue; scsi_device; scsi_device = scsi_device->next) {
47326 + if (scsi_device->id == i) {
47327 + *channel = scsi_device->channel;
47328 + *lun = scsi_device->lun;
47332 + if (scsi_device == 0) {
47333 + return (-ENOENT);
47336 + * Device found, return all data
47338 + *host = list->host->host_no;
47342 + } /* i < MAXFIBREDEVICES */
47344 + return (-ENOENT);
47347 +int qla2x00_get_wwn_from_scsi_info (int host, int id, unsigned long long *wwn) {
47348 +scsi_qla_host_t *list;
47349 +union wwnmap wwnendian;
47350 +union wwnmap wwnendian2;
47354 + * Examine all QLogic hosts
47356 + for (list = qla2x00_hostlist; list; list = list->next) {
47357 + if (host == list->host->host_no) {
47359 + * Get endian corrected 64 bit WWN
47362 + memcpy (&wwnendian2.wwn, list->fc_db[id].name, 8);
47363 + for (j = 0, k=7; j < 8; j++, k--) {
47364 + wwnendian.wwn_u8[j] = wwnendian2.wwn_u8[k];
47366 + *wwn = wwnendian.wwn;
47370 + return (-ENOENT);
47372 +#endif /* CONFIG_SCSIFCHOTSWAP || CONFIG_GAMAP */
47374 +/**************************************************************************
47377 +* Handle Linux boot parameters. This routine allows for assigning a value
47378 +* to a parameter with a ';' between the parameter and the value.
47379 +* ie. qla2x00=arg0;arg1;...;argN;<properties .... properties> OR
47380 +* via the command line.
47381 +* ie. qla2x00 ql2xopts=arg0;arg1;...;argN;<properties .... properties>
47382 +**************************************************************************/
47383 +#if !defined(MODULE)
47385 +qla2x00_setup(char *s)
47388 +qla2x00_setup(char *s)
47392 + char *slots[MAXARGS];
47393 + char **argv = &slots[0];
47394 + static char buf[LINESIZE];
47397 +#if !defined(MODULE)
47398 + if (s == NULL || *s == '\0')
47403 + * Determine if we have any properties.
47407 + while (*cp && (np = qla2x00_get_line(cp, buf)) != NULL) {
47408 + if (strncmp("scsi-qla",buf,8) == 0) {
47409 + DEBUG(printk("qla2100: devconf=%s\n",cp);)
47411 + ql2xdevconf = cp;
47412 + (opts > 0)? opts-- : 0;
47420 + * Parse the args before the properties
47423 + opts = (opts > MAXARGS-1)? MAXARGS-1: opts;
47424 + argc = qla2x00_get_tokens(s, argv, opts);
47425 + while (argc > 0) {
47427 + DEBUG(printk("scsi: found cmd arg =[%s]\n", cp));
47429 + if (strcmp(cp, "verbose") == 0) {
47430 + DEBUG(printk("qla2100: verbose\n"));
47431 + qla2x00_verbose++;
47432 + } else if (strcmp(cp, "quiet") == 0) {
47433 + qla2x00_quiet = 1;
47434 + } else if (strcmp(cp, "reinit_on_loopdown") == 0) {
47435 + qla2x00_reinit++;
47436 + DEBUG(printk("qla2100: reinit_on_loopdown\n"));
47442 +#if !defined(MODULE)
47450 +#if !defined(MODULE)
47451 +__setup("ql2xopts=", qla2x00_setup);
47454 +/********************** qla2x00_get_line *********************
47455 +* qla2x00_get_line
47456 +* Copy a substring from the specified string. The substring
47457 +* consists of any number of chars seperated by white spaces (i.e. spaces)
47458 +* and ending with a newline '\n' or a semicolon ';'.
47461 +* str - orig string
47462 +* line - substring
47465 +* cp - pointer to next string
47467 +* null - End of string
47468 +*************************************************************/
47470 +qla2x00_get_line(char *str, char *line)
47472 + register char *cp = str;
47473 + register char *sp = line;
47475 + /* skip preceeding spaces */
47476 + while (*cp && *cp == ' ')
47478 + while ((*cp) && *cp != '\n' && *cp != ';') /* end of line */
47483 + DEBUG5(printk("%s(): %s\n", __func__, line));
47494 +/**************************** get_tokens *********************
47495 +* Parse command line into argv1, argv2, ... argvX
47496 +* Arguments are seperated by white spaces and colons and end
47498 +*************************************************************/
47500 +qla2x00_get_tokens(char *line, char **argv, int maxargs)
47502 + register char *cp = line;
47505 + while (*cp && count < maxargs) {
47506 + /* skip preceeding spaces */
47507 + while ((*cp) && *cp == ' ')
47509 + /* symbol starts here */
47510 + argv[count++] = cp;
47511 + /* skip symbols */
47512 + while ((*cp) && !(*cp == ' ' || *cp == ';' || *cp == ':'))
47514 + /* replace comma or space with a null */
47515 + if((*cp) && (*cp ==' ' ) && argv[count-1] != cp)
47522 +* qla2x00_display_fc_names
47523 +* This routine will the node names of the different devices found
47524 +* after port inquiry.
47527 +* cmd = SCSI command structure
47533 +qla2x00_display_fc_names(scsi_qla_host_t *ha)
47538 + /* Display the node name for adapter */
47540 + "scsi-qla%d-adapter-node=%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47541 + (int)ha->instance,
47542 + ha->init_cb->node_name[0],
47543 + ha->init_cb->node_name[1],
47544 + ha->init_cb->node_name[2],
47545 + ha->init_cb->node_name[3],
47546 + ha->init_cb->node_name[4],
47547 + ha->init_cb->node_name[5],
47548 + ha->init_cb->node_name[6],
47549 + ha->init_cb->node_name[7]);
47551 + /* display the port name for adapter */
47553 + "scsi-qla%d-adapter-port=%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47554 + (int)ha->instance,
47555 + ha->init_cb->port_name[0],
47556 + ha->init_cb->port_name[1],
47557 + ha->init_cb->port_name[2],
47558 + ha->init_cb->port_name[3],
47559 + ha->init_cb->port_name[4],
47560 + ha->init_cb->port_name[5],
47561 + ha->init_cb->port_name[6],
47562 + ha->init_cb->port_name[7]);
47564 + /* Print out device port names */
47565 + for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
47566 + if ((tq = ha->otgt[tgt]) == NULL)
47569 + if (tq->vis_port == NULL)
47572 + switch (ha->binding_type) {
47573 + case BIND_BY_PORT_NAME:
47575 + "scsi-qla%d-tgt-%d-di-0-port="
47576 + "%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47577 + (int)ha->instance,
47579 + tq->port_name[0],
47580 + tq->port_name[1],
47581 + tq->port_name[2],
47582 + tq->port_name[3],
47583 + tq->port_name[4],
47584 + tq->port_name[5],
47585 + tq->port_name[6],
47586 + tq->port_name[7]);
47590 + case BIND_BY_PORT_ID:
47592 + "scsi-qla%d-tgt-%d-di-0-pid="
47593 + "%02x%02x%02x\\;\n",
47594 + (int)ha->instance,
47596 + tq->d_id.b.domain,
47598 + tq->d_id.b.al_pa);
47601 + case BIND_BY_NODE_NAME:
47603 + "scsi-qla%d-tgt-%d-di-0-node="
47604 + "%02x%02x%02x%02x%02x%02x%02x%02x\\;\n",
47605 + (int)ha->instance,
47607 + tq->node_name[0],
47608 + tq->node_name[1],
47609 + tq->node_name[2],
47610 + tq->node_name[3],
47611 + tq->node_name[4],
47612 + tq->node_name[5],
47613 + tq->node_name[6],
47614 + tq->node_name[7]);
47620 + "scsi-qla%d-target-%d-vsa=01;\n", (int)ha->instance, tgt);
47626 + * qla2x00_suspend_lun
47627 + * Suspend lun and start port down timer
47630 + * ha = visable adapter block pointer.
47632 + * cp = Scsi command pointer
47633 + * time = time in seconds
47634 + * count = number of times to let time expire
47635 + * delay_lun = non-zero, if lun should be delayed rather than suspended
47638 + * QL_STATUS_SUCCESS -- suspended lun
47639 + * QL_STATUS_ERROR -- Didn't suspend lun
47642 + * Interrupt context.
47645 +__qla2x00_suspend_lun(scsi_qla_host_t *ha,
47646 + os_lun_t *lq, int time, int count, int delay_lun)
47649 + struct list_head *list, *temp;
47650 + unsigned long flags;
47653 + /* if the lun_q is already suspended then don't do it again */
47654 + if (lq->q_state == LUN_STATE_READY ||lq->q_state == LUN_STATE_RUN) {
47656 + spin_lock_irqsave(&lq->q_lock, flags);
47657 + if (lq->q_state == LUN_STATE_READY) {
47658 + lq->q_max = count;
47661 + /* Set the suspend time usually 6 secs */
47662 + atomic_set(&lq->q_timer, time);
47664 + /* now suspend the lun */
47665 + lq->q_state = LUN_STATE_WAIT;
47668 + set_bit(LUN_EXEC_DELAYED, &lq->q_flag);
47669 + DEBUG(printk(KERN_INFO
47670 + "scsi(%ld): Delay lun execution for %d secs, "
47671 + "count=%d, max count=%d, state=%d\n",
47674 + lq->q_count, lq->q_max, lq->q_state));
47676 + DEBUG(printk(KERN_INFO
47677 + "scsi(%ld): Suspend lun for %d secs, count=%d, "
47678 + "max count=%d, state=%d\n",
47681 + lq->q_count, lq->q_max, lq->q_state));
47683 + spin_unlock_irqrestore(&lq->q_lock, flags);
47686 + * Remove all pending commands from request queue and put them
47687 + * in the scsi_retry queue.
47689 + spin_lock_irqsave(&ha->list_lock, flags);
47690 + list_for_each_safe(list, temp, &ha->pending_queue) {
47691 + sp = list_entry(list, srb_t, list);
47692 + if (sp->lun_queue != lq)
47695 + __del_from_pending_queue(ha, sp);
47697 + if (sp->cmd->allowed < count)
47698 + sp->cmd->allowed = count;
47699 + __add_to_scsi_retry_queue(ha,sp);
47701 + } /* list_for_each_safe */
47702 + spin_unlock_irqrestore(&ha->list_lock, flags);
47703 + status = QL_STATUS_SUCCESS;
47705 + status = QL_STATUS_ERROR;
47713 + * qla2x00_mark_device_lost Updates fcport state when device goes offline.
47715 + * Input: ha = adapter block pointer. fcport = port structure pointer.
47721 +void qla2x00_mark_device_lost(scsi_qla_host_t *ha, fc_port_t *fcport)
47724 + * We may need to retry the login, so don't change the state of the
47725 + * port but do the retries.
47727 + if (atomic_read(&fcport->state) != FC_DEVICE_DEAD)
47728 + atomic_set(&fcport->state, FC_DEVICE_LOST);
47730 + if (fcport->login_retry == 0) {
47731 + fcport->login_retry = ha->login_retry_count;
47732 + set_bit(RELOGIN_NEEDED, &ha->dpc_flags);
47734 + DEBUG(printk("scsi(%ld): Port login retry: "
47735 + "%02x%02x%02x%02x%02x%02x%02x%02x, "
47736 + "id = 0x%04x retry cnt=%d\n",
47738 + fcport->port_name[0],
47739 + fcport->port_name[1],
47740 + fcport->port_name[2],
47741 + fcport->port_name[3],
47742 + fcport->port_name[4],
47743 + fcport->port_name[5],
47744 + fcport->port_name[6],
47745 + fcport->port_name[7],
47747 + fcport->login_retry));
47752 + * qla2x00_mark_all_devices_lost
47753 + * Updates fcport state when device goes offline.
47756 + * ha = adapter block pointer.
47757 + * fcport = port structure pointer.
47765 +qla2x00_mark_all_devices_lost(scsi_qla_host_t *ha)
47767 + struct list_head *fcpl;
47768 + fc_port_t *fcport;
47770 + list_for_each(fcpl, &ha->fcports) {
47771 + fcport = list_entry(fcpl, fc_port_t, list);
47774 + * No point in marking the device as lost, if the device is
47777 + if (atomic_read(&fcport->state) == FC_DEVICE_DEAD)
47780 + atomic_set(&fcport->state, FC_DEVICE_LOST);
47785 +* qla2x00_mem_alloc
47786 +* Allocates adapter memory.
47793 +qla2x00_mem_alloc(scsi_qla_host_t *ha)
47795 + uint8_t status = 1;
47798 + mbx_cmdq_t *ptmp;
47799 + mbx_cmdq_t *tmp_q_head;
47800 + mbx_cmdq_t *tmp_q_tail;
47806 + * This will loop only once if everything goes well, else some
47807 + * number of retries will be performed to get around a kernel
47808 + * bug where available mem is not allocated until after a
47809 + * little delay and a retry.
47812 +#if defined(FC_IP_SUPPORT)
47813 + ha->risc_rec_q = pci_alloc_consistent(ha->pdev,
47814 + ((IP_BUFFER_QUEUE_DEPTH) * (sizeof(struct risc_rec_entry))),
47815 + &ha->risc_rec_q_dma);
47816 + if (ha->risc_rec_q == NULL) {
47817 + printk(KERN_WARNING
47818 + "scsi(%ld): Memory Allocation failed - "
47822 + set_current_state(TASK_INTERRUPTIBLE);
47823 + schedule_timeout(HZ/10);
47827 +#endif /* #if defined(FC_IP_SUPPORT) */
47829 + ha->request_ring = pci_alloc_consistent(ha->pdev,
47830 + ((REQUEST_ENTRY_CNT + 1) * (sizeof(request_t))),
47831 + &ha->request_dma);
47832 + if (ha->request_ring == NULL) {
47833 + printk(KERN_WARNING
47834 + "scsi(%ld): Memory Allocation failed - "
47835 + "request_ring\n",
47838 + qla2x00_mem_free(ha);
47839 + set_current_state(TASK_INTERRUPTIBLE);
47840 + schedule_timeout(HZ/10);
47845 + ha->response_ring = pci_alloc_consistent(ha->pdev,
47846 + ((RESPONSE_ENTRY_CNT + 1) * (sizeof(response_t))),
47847 + &ha->response_dma);
47848 + if (ha->response_ring == NULL) {
47849 + printk(KERN_WARNING
47850 + "scsi(%ld): Memory Allocation failed - "
47851 + "response_ring\n",
47854 + qla2x00_mem_free(ha);
47855 + set_current_state(TASK_INTERRUPTIBLE);
47856 + schedule_timeout(HZ/10);
47861 + /* get consistent memory allocated for init control block */
47862 + ha->init_cb = pci_alloc_consistent(ha->pdev,
47863 + sizeof(init_cb_t), &ha->init_cb_dma);
47864 + if (ha->init_cb == NULL) {
47865 + printk(KERN_WARNING
47866 + "scsi(%ld): Memory Allocation failed - "
47870 + qla2x00_mem_free(ha);
47871 + set_current_state(TASK_INTERRUPTIBLE);
47872 + schedule_timeout(HZ/10);
47876 + memset(ha->init_cb, 0, sizeof(init_cb_t));
47878 + /* Allocate ioctl related memory. */
47879 + if (qla2x00_alloc_ioctl_mem(ha)) {
47880 + printk(KERN_WARNING
47881 + "scsi(%ld): Memory Allocation failed - "
47885 + qla2x00_mem_free(ha);
47886 + set_current_state(TASK_INTERRUPTIBLE);
47887 + schedule_timeout(HZ/10);
47892 + if (qla2x00_allocate_sp_pool(ha)) {
47893 + printk(KERN_WARNING
47894 + "scsi(%ld): Memory Allocation failed - "
47895 + "qla2x00_allocate_sp_pool()\n",
47898 + qla2x00_mem_free(ha);
47899 + set_current_state(TASK_INTERRUPTIBLE);
47900 + schedule_timeout(HZ/10);
47906 + * Allocate an initial list of mailbox semaphore queue to be
47907 + * used for serialization of the mailbox commands.
47909 + tmp_q_head = (void *)KMEM_ZALLOC(sizeof(mbx_cmdq_t), 20);
47910 + if (tmp_q_head == NULL) {
47912 + printk(KERN_WARNING
47913 + "scsi(%ld): Memory Allocation failed - "
47917 + qla2x00_mem_free(ha);
47918 + set_current_state(TASK_INTERRUPTIBLE);
47919 + schedule_timeout(HZ/10);
47923 + ha->mbx_sem_pool_head = tmp_q_head;
47924 + tmp_q_tail = tmp_q_head;
47926 + /* Now try to allocate more */
47927 + for (i = 1; i < MBQ_INIT_LEN; i++) {
47928 + ptmp = (void *)KMEM_ZALLOC(sizeof(mbx_cmdq_t), 20 + i);
47929 + if (ptmp == NULL) {
47931 + * Error. Just exit. If more is needed later
47932 + * they will be allocated at that time.
47936 + tmp_q_tail->pnext = ptmp;
47937 + tmp_q_tail = ptmp;
47939 + ha->mbx_sem_pool_tail = tmp_q_tail;
47941 + /* Get consistent memory allocated for MS IOCB */
47942 + ha->ms_iocb = pci_alloc_consistent(ha->pdev,
47943 + sizeof(ms_iocb_entry_t), &ha->ms_iocb_dma);
47944 + if (ha->ms_iocb == NULL) {
47946 + printk(KERN_WARNING
47947 + "scsi(%ld): Memory Allocation failed - ms_iocb\n",
47950 + qla2x00_mem_free(ha);
47951 + set_current_state(TASK_INTERRUPTIBLE);
47952 + schedule_timeout(HZ/10);
47956 + memset(ha->ms_iocb, 0, sizeof(ms_iocb_entry_t));
47958 + /* Get consistent memory allocated for CT SNS commands */
47959 + ha->ct_sns = pci_alloc_consistent(ha->pdev,
47960 + sizeof(struct ct_sns_pkt), &ha->ct_sns_dma);
47961 + if (ha->ct_sns == NULL) {
47963 + printk(KERN_WARNING
47964 + "scsi(%ld): Memory Allocation failed - ct_sns\n",
47967 + qla2x00_mem_free(ha);
47968 + set_current_state(TASK_INTERRUPTIBLE);
47969 + schedule_timeout(HZ/10);
47973 + memset(ha->ct_sns, 0, sizeof(struct ct_sns_pkt));
47975 + /* Done all allocations without any error. */
47978 + } while (retry-- && status != 0);
47981 + printk(KERN_WARNING
47982 + "%s(): **** FAILED ****\n", __func__);
47991 +* qla2x00_mem_free
47992 +* Frees all adapter allocated memory.
47995 +* ha = adapter block pointer.
47998 +qla2x00_mem_free(scsi_qla_host_t *ha)
48001 + struct list_head *fcpl, *fcptemp;
48002 + fc_port_t *fcport;
48003 + struct list_head *fcll, *fcltemp;
48005 + mbx_cmdq_t *ptmp;
48006 + mbx_cmdq_t *tmp_q_head;
48007 + unsigned long wtime;/* max wait time if mbx cmd is busy. */
48008 + struct list_head *fcil, *fcitemp;
48009 + fc_initiator_t *fcinitiator;
48013 + if (ha == NULL) {
48015 + DEBUG2(printk("%s(): ERROR invalid ha pointer.\n", __func__));
48019 + /* Free the target queues */
48020 + for (t = 0; t < MAX_TARGETS; t++) {
48021 + qla2x00_tgt_free(ha, t);
48024 + /* Make sure all other threads are stopped. */
48026 + while ((ha->dpc_wait != NULL || ha->mbx_q_head != NULL) && wtime) {
48027 + set_current_state(TASK_INTERRUPTIBLE);
48028 + wtime = schedule_timeout(wtime);
48031 + /* Now free the mbx sem pool */
48032 + tmp_q_head = ha->mbx_sem_pool_head;
48033 + while (tmp_q_head != NULL) {
48034 + ptmp = tmp_q_head->pnext;
48035 + KMEM_FREE(tmp_q_head, sizeof(mbx_cmdq_t));
48036 + tmp_q_head = ptmp;
48038 + ha->mbx_sem_pool_head = NULL;
48040 + /* free ioctl memory */
48041 + qla2x00_free_ioctl_mem(ha);
48043 + /* Free host database. */
48044 + list_for_each_safe(fcil, fcitemp, &ha->fcinitiators) {
48045 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
48047 + list_del(&fcinitiator->list);
48048 + kfree(fcinitiator);
48050 + INIT_LIST_HEAD(&ha->fcinitiators);
48052 + /* free sp pool */
48053 + qla2x00_free_sp_pool(ha);
48055 + if (ha->ct_sns) {
48056 + pci_free_consistent(ha->pdev,
48057 + sizeof(struct ct_sns_pkt), ha->ct_sns, ha->ct_sns_dma);
48059 + if (ha->ms_iocb) {
48060 + pci_free_consistent(ha->pdev,
48061 + sizeof(ms_iocb_entry_t), ha->ms_iocb, ha->ms_iocb_dma);
48064 + if (ha->init_cb) {
48065 + pci_free_consistent(ha->pdev,
48066 + sizeof(init_cb_t), ha->init_cb, ha->init_cb_dma);
48069 + if (ha->request_ring) {
48070 + pci_free_consistent(ha->pdev,
48071 + ((REQUEST_ENTRY_CNT + 1) * (sizeof(request_t))),
48072 + ha->request_ring, ha->request_dma);
48075 + if (ha->response_ring) {
48076 + pci_free_consistent(ha->pdev,
48077 + ((RESPONSE_ENTRY_CNT + 1) * (sizeof(response_t))),
48078 + ha->response_ring, ha->response_dma);
48081 +#if defined(FC_IP_SUPPORT)
48082 + if (ha->risc_rec_q) {
48083 + pci_free_consistent(ha->pdev,
48084 + ((IP_BUFFER_QUEUE_DEPTH) * (sizeof(struct risc_rec_entry))),
48085 + ha->risc_rec_q, ha->risc_rec_q_dma);
48087 + ha->risc_rec_q = NULL;
48088 + ha->risc_rec_q_dma = 0;
48091 + ha->ct_sns = NULL;
48092 + ha->ms_iocb = NULL;
48094 + ha->init_cb = NULL;
48095 + ha->request_ring = NULL;
48096 + ha->request_dma = 0;
48097 + ha->response_ring = NULL;
48098 + ha->response_dma = 0;
48100 + list_for_each_safe(fcpl, fcptemp, &ha->fcports) {
48101 + fcport = list_entry(fcpl, fc_port_t, list);
48104 + list_for_each_safe(fcll, fcltemp, &fcport->fcluns) {
48105 + fclun = list_entry(fcll, fc_lun_t, list);
48107 + list_del_init(&fclun->list);
48112 + list_del_init(&fcport->list);
48115 + INIT_LIST_HEAD(&ha->fcports);
48121 + * qla2x00_allocate_sp_pool
48122 + * This routine is called during initialization to allocate
48123 + * memory for local srb_t.
48126 + * ha = adapter block pointer.
48129 + * Kernel context.
48131 + * Note: Sets the ref_count for non Null sp to one.
48134 +qla2x00_allocate_sp_pool(scsi_qla_host_t *ha)
48138 + uint8_t status = QL_STATUS_SUCCESS;
48142 + INIT_LIST_HEAD(&ha->free_queue);
48143 + ha->srb_alloc_cnt = 0;
48145 + ha->srb_pool_order = get_order(max_srbs * sizeof(srb_t));
48147 + (srb_t *) __get_free_pages(GFP_KERNEL, ha->srb_pool_order);
48148 + if (ha->srb_pool != NULL) {
48149 + for (i = 0, sp = ha->srb_pool; i < max_srbs; i++, sp++) {
48150 + memset(sp, 0, sizeof(srb_t));
48151 + __add_to_free_queue (ha, sp);
48152 + sp->magic = SRB_MAGIC;
48153 + sp->ref_num = ha->srb_alloc_cnt;
48154 + sp->host_no = ha->host_no;
48155 + atomic_set(&sp->ref_count, 0);
48157 + ha->srb_alloc_cnt++;
48162 + * If we fail to allocte memory return an error
48164 + if (ha->srb_alloc_cnt == 0)
48165 + status = QL_STATUS_ERROR;
48168 + "scsi(%ld): Allocated %d SRB(s).\n",
48169 + ha->host_no, ha->srb_alloc_cnt);
48177 + * This routine frees all adapter allocated memory.
48181 +qla2x00_free_sp_pool( scsi_qla_host_t *ha)
48183 + int cnt_free_srbs = 0;
48185 + struct list_head *list, *temp;
48188 + * Count the number of entries, remove the entries from the list, then
48191 + list_for_each_safe(list, temp, &ha->free_queue) {
48192 + sp = list_entry(list, srb_t, list);
48194 + __del_from_free_queue(ha, sp);
48197 + free_pages((unsigned long)ha->srb_pool, ha->srb_pool_order);
48199 + if (cnt_free_srbs != ha->srb_alloc_cnt) {
48200 + DEBUG(printk("scsi(%ld): Did not free all srbs, Free count = "
48201 + "%d, Alloc Count = %d\n",
48202 + ha->host_no, cnt_free_srbs, ha->srb_alloc_cnt));
48204 + "scsi(%ld): Did not free all srbs, Free count = %d, "
48205 + "Alloc Count = %d\n",
48206 + ha->host_no, cnt_free_srbs, ha->srb_alloc_cnt);
48212 +/**************************************************************************
48214 +* This kernel thread is a task that is schedule by the interrupt handler
48215 +* to perform the background processing for interrupts.
48218 +* This task always run in the context of a kernel thread. It
48219 +* is kick-off by the driver's detect code and starts up
48220 +* up one per adapter. It immediately goes to sleep and waits for
48221 +* some fibre event. When either the interrupt handler or
48222 +* the timer routine detects a event it will one of the task
48223 +* bits then wake us up.
48224 +**************************************************************************/
48226 +qla2x00_do_dpc(void *data)
48228 + DECLARE_MUTEX_LOCKED(sem);
48229 + scsi_qla_host_t *ha;
48231 + struct list_head *fcpl;
48232 + fc_port_t *fcport;
48237 + unsigned long flags = 0;
48238 + struct list_head *list, *templist;
48239 + int dead_cnt, online_cnt;
48241 + ha = (scsi_qla_host_t *)data;
48245 + daemonize("%s_dpc%ld", DRIVER_NAME, ha->host_no);
48246 + allow_signal(SIGTERM);
48248 + ha->dpc_wait = &sem;
48252 + complete(&ha->dpc_inited);
48256 + * If we get a signal, it means we are supposed to go
48257 + * away and die. This typically happens if the user is
48258 + * trying to unload a module.
48260 + DEBUG3(printk("qla2x00: DPC handler sleeping\n"));
48262 + down_interruptible(&sem);
48264 + if (signal_pending(current))
48265 + break; /* get out */
48267 + if (ha->dpc_should_die)
48270 + if (!list_empty(&ha->done_queue))
48271 + schedule_work(&ha->run_qla_task);
48273 + DEBUG3(printk("qla2x00: DPC handler waking up\n"));
48275 + /* Initialization not yet finished. Don't do anything yet. */
48276 + if (!ha->init_done || ha->dpc_active)
48279 + DEBUG3(printk("scsi(%ld): DPC handler\n", ha->host_no));
48281 + /* spin_lock_irqsave(&io_request_lock, ha->cpu_flags);*/
48282 + ha->dpc_active = 1;
48284 + /* Determine what action is necessary */
48286 + /* Process commands in retry queue */
48287 + if (test_and_clear_bit(PORT_RESTART_NEEDED, &ha->dpc_flags)) {
48288 + DEBUG(printk("scsi(%ld): DPC checking retry_q. "
48290 + ha->host_no, ha->retry_q_cnt));
48292 + spin_lock_irqsave(&ha->list_lock, flags);
48293 + dead_cnt = online_cnt = 0;
48294 + list_for_each_safe(list, templist, &ha->retry_queue) {
48295 + sp = list_entry(list, srb_t, list);
48296 + q = sp->lun_queue;
48297 + DEBUG3(printk("scsi(%ld): pid=%ld sp=%p, "
48298 + "spflags=0x%x, q_flag= 0x%lx\n",
48300 + sp->cmd->serial_number,
48301 + sp, sp->flags, q->q_flag));
48305 + fcport = q->fclun->fcport;
48307 + if (atomic_read(&fcport->state) ==
48308 + FC_DEVICE_DEAD) {
48310 + __del_from_retry_queue(ha, sp);
48311 + CMD_RESULT(sp->cmd) =
48312 + DID_NO_CONNECT << 16;
48313 + CMD_HANDLE(sp->cmd) =
48314 + (unsigned char *) NULL;
48315 + __add_to_done_queue(ha, sp);
48317 + } else if (atomic_read(&fcport->state) !=
48318 + FC_DEVICE_LOST) {
48320 + __del_from_retry_queue(ha, sp);
48321 + CMD_RESULT(sp->cmd) =
48322 + DID_BUS_BUSY << 16;
48323 + CMD_HANDLE(sp->cmd) =
48324 + (unsigned char *) NULL;
48325 + __add_to_done_queue(ha, sp);
48328 + } /* list_for_each_safe() */
48329 + spin_unlock_irqrestore(&ha->list_lock, flags);
48331 + DEBUG(printk("scsi(%ld): done processing retry queue "
48332 + "- dead=%d, online=%d\n ",
48333 + ha->host_no, dead_cnt, online_cnt));
48336 + /* Process commands in scsi retry queue */
48337 + if (test_and_clear_bit(SCSI_RESTART_NEEDED, &ha->dpc_flags)) {
48339 + * Any requests we want to delay for some period is put
48340 + * in the scsi retry queue with a delay added. The
48341 + * timer will schedule a "scsi_restart_needed" every
48342 + * second as long as there are requests in the scsi
48345 + DEBUG(printk("scsi(%ld): DPC checking scsi "
48346 + "retry_q.total=%d\n",
48347 + ha->host_no, ha->scsi_retry_q_cnt));
48350 + spin_lock_irqsave(&ha->list_lock, flags);
48351 + list_for_each_safe(list,
48353 + &ha->scsi_retry_queue) {
48355 + sp = list_entry(list, srb_t, list);
48356 + q = sp->lun_queue;
48358 + DEBUG3(printk("scsi(%ld): scsi_retry_q: "
48359 + "pid=%ld sp=%p, spflags=0x%x, "
48360 + "q_flag= 0x%lx,q_state=%d\n",
48362 + sp->cmd->serial_number,
48363 + sp, sp->flags, q->q_flag, q->q_state));
48365 + /* Was this lun suspended */
48366 + if (q->q_state != LUN_STATE_WAIT) {
48368 + __del_from_scsi_retry_queue(ha, sp);
48369 + __add_to_retry_queue(ha,sp);
48372 + /* Was this command suspended for N secs */
48373 + if (sp->delay != 0) {
48375 + if (sp->delay == 0) {
48377 + __del_from_scsi_retry_queue(
48379 + __add_to_retry_queue(ha,sp);
48383 + spin_unlock_irqrestore(&ha->list_lock, flags);
48385 + DEBUG(if (online_cnt > 0))
48386 + DEBUG(printk("scsi(%ld): dpc() found scsi reqs to "
48388 + ha->host_no, online_cnt));
48391 + if (ha->flags.mbox_busy) {
48392 + if (!list_empty(&ha->done_queue))
48393 + schedule_work(&ha->run_qla_task);
48395 + ha->dpc_active = 0;
48399 + if (test_and_clear_bit(ISP_ABORT_NEEDED, &ha->dpc_flags)) {
48401 + DEBUG(printk("scsi(%ld): dpc: sched "
48402 + "qla2x00_abort_isp ha = %p\n",
48403 + ha->host_no, ha));
48404 + if (!(test_and_set_bit(ABORT_ISP_ACTIVE,
48405 + &ha->dpc_flags))) {
48407 + if (qla2x00_abort_isp(ha, 0)) {
48408 + /* failed. retry later */
48409 + set_bit(ISP_ABORT_NEEDED,
48412 + clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags);
48414 + DEBUG(printk("scsi(%ld): dpc: qla2x00_abort_isp end\n",
48418 + if (test_and_clear_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) {
48420 + DEBUG(printk("scsi(%ld): Loop Reset Needed -- "
48421 + "calling qla2x00_loop_reset().\n",
48424 + qla2x00_loop_reset(ha);
48427 + if (test_and_clear_bit(DEVICE_ABORT_NEEDED, &ha->dpc_flags)) {
48429 + DEBUG(printk("scsi(%ld): Device Abort Needed -- "
48430 + "calling qla2x00_abort_device().\n",
48433 + t = ha->reset_tgt_id;
48434 + if (ha->otgt[t] && ha->otgt[t]->vis_port)
48435 + qla2x00_abort_device(ha,
48436 + ha->otgt[t]->vis_port->loop_id,
48440 + if (test_and_clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) &&
48441 + (!(test_and_set_bit(RESET_ACTIVE, &ha->dpc_flags)))) {
48443 + DEBUG(printk("scsi(%ld): qla2x00_reset_marker()\n",
48446 + qla2x00_rst_aen(ha);
48447 + clear_bit(RESET_ACTIVE, &ha->dpc_flags);
48450 + /* Retry each device up to login retry count */
48451 + if ((test_and_clear_bit(RELOGIN_NEEDED, &ha->dpc_flags)) &&
48452 + !test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) &&
48453 + ha->loop_state != LOOP_DOWN) {
48455 + DEBUG(printk("scsi(%ld): qla2x00_port_login()\n",
48458 + list_for_each(fcpl, &ha->fcports) {
48459 + fcport = list_entry(fcpl, fc_port_t, list);
48462 + * If the port is not ONLINE then try to login
48463 + * to it if we haven't run out of retries.
48465 + if (atomic_read(&fcport->state) != FC_ONLINE &&
48466 + fcport->login_retry) {
48468 + fcport->login_retry--;
48469 + memset(&dev, 0, sizeof(fcdev_t));
48470 + dev.loop_id = fcport->old_loop_id;
48471 + dev.d_id.b24 = fcport->d_id.b24;
48472 + if (ha->fc_db[fcport->dev_id].flag &
48474 + status = qla2x00_fabric_login(
48478 + qla2x00_local_device_login(
48480 + (dev.loop_id & 0xff));
48482 + if (status == QL_STATUS_SUCCESS) {
48483 + ha->fc_db[fcport->dev_id].loop_id = dev.loop_id;
48484 + fcport->loop_id = dev.loop_id;
48485 + fcport->old_loop_id = dev.loop_id;
48487 + DEBUG(printk("scsi(%ld): port login OK: logged in ID 0x%x\n",
48488 + ha->host_no, fcport->loop_id));
48490 + fcport->port_login_retry_count =
48491 + ha->port_down_retry_count * PORT_RETRY_TIME;
48492 + atomic_set(&fcport->state, FC_ONLINE);
48493 + atomic_set(&fcport->port_down_timer,
48494 + ha->port_down_retry_count * PORT_RETRY_TIME);
48496 + fcport->login_retry = 0;
48497 + } else if (status == 1) {
48498 + if (dev.loop_id != fcport->old_loop_id) {
48499 + fcport->old_loop_id = dev.loop_id;
48500 + ha->fc_db[fcport->dev_id].loop_id = dev.loop_id;
48503 + set_bit(RELOGIN_NEEDED, &ha->dpc_flags);
48504 + /* retry the login again */
48505 + DEBUG(printk("scsi(%ld): Retrying %d login again loop_id 0x%x\n",
48507 + fcport->login_retry, fcport->loop_id));
48509 + fcport->login_retry = 0;
48512 + if (test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags))
48515 + DEBUG(printk("scsi(%ld): qla2x00_port_login - end\n",
48519 + if ((test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags)) &&
48520 + ha->loop_state != LOOP_DOWN ) {
48522 + clear_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags);
48523 + DEBUG(printk("scsi(%ld): qla2x00_login_retry()\n",
48526 + set_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags);
48528 + DEBUG(printk("scsi(%ld): qla2x00_login_retry - end\n",
48532 + if (test_and_clear_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags)) {
48534 + DEBUG(printk("scsi(%ld): qla2x00_loop_resync()\n",
48537 + if (!(test_and_set_bit(LOOP_RESYNC_ACTIVE,
48538 + &ha->dpc_flags))) {
48540 + qla2x00_loop_resync(ha);
48542 + clear_bit(LOOP_RESYNC_ACTIVE, &ha->dpc_flags);
48545 + DEBUG(printk("scsi(%ld): qla2x00_loop_resync - end\n",
48549 + if (ha->flags.failover_enabled) {
48551 + * If we are not processing a ioctl or one of
48552 + * the ports are still MISSING or need a resync
48553 + * then process the failover event.
48555 + if (!test_bit(CFG_ACTIVE, &ha->cfg_flags)) {
48556 + if (qla2x00_check_for_devices_online(ha)) {
48557 + if (test_and_clear_bit(FAILOVER_EVENT, &ha->dpc_flags)) {
48559 + DEBUG(printk("scsi(%ld): qla2x00_cfg_event_notify()\n",
48562 + if (ha->flags.online) {
48563 + qla2x00_cfg_event_notify(ha, ha->failover_type);
48566 + DEBUG(printk("scsi(%ld): qla2x00_cfg_event_notify - end\n",
48571 + if (test_and_clear_bit(FAILOVER_NEEDED, &ha->dpc_flags)) {
48573 + * Get any requests from failover queue
48575 + DEBUG(printk("scsi(%ld): qla2x00_process_failover()\n",
48578 + qla2x00_process_failover(ha);
48580 + DEBUG(printk("scsi(%ld): qla2x00_process_failover - end\n",
48586 + if (test_bit(RESTART_QUEUES_NEEDED, &ha->dpc_flags)) {
48587 + DEBUG(printk("scsi(%ld): qla2x00_restart_queues()\n",
48590 + qla2x00_restart_queues(ha,FALSE);
48592 + DEBUG(printk("scsi(%ld): qla2x00_restart_queues - end\n",
48596 + if (test_bit(ABORT_QUEUES_NEEDED, &ha->dpc_flags)) {
48598 + DEBUG(printk("scsi(%ld): qla2x00_abort_queues()\n",
48601 + qla2x00_abort_queues(ha, FALSE);
48603 + DEBUG(printk("scsi(%ld): qla2x00_abort_queues - end\n",
48607 + if (!ha->interrupts_on)
48608 + qla2x00_enable_intrs(ha);
48610 + if (!list_empty(&ha->done_queue))
48611 + schedule_work(&ha->run_qla_task);
48613 + ha->dpc_active = 0;
48614 + } /* End of while(1) */
48616 + DEBUG(printk("scsi(%ld): DPC handler exiting\n", ha->host_no));
48619 + * Make sure that nobody tries to wake us up again.
48621 + ha->dpc_wait = NULL;
48622 + ha->dpc_active = 0;
48624 + complete_and_exit(&ha->dpc_exited, 0);
48628 + * qla2x00_abort_queues
48629 + * Abort all commands on queues on device
48632 + * ha = adapter block pointer.
48635 + * Interrupt context.
48638 +qla2x00_abort_queues(scsi_qla_host_t *ha, uint8_t doneqflg)
48642 + struct list_head *list, *temp;
48643 + unsigned long flags;
48647 + clear_bit(ABORT_QUEUES_NEEDED, &ha->dpc_flags);
48649 + /* Return all commands device queues. */
48650 + spin_lock_irqsave(&ha->list_lock,flags);
48651 + list_for_each_safe(list, temp, &ha->pending_queue) {
48652 + sp = list_entry(list, srb_t, list);
48654 + if (sp->flags & SRB_ABORTED)
48657 + /* Remove srb from LUN queue. */
48658 + __del_from_pending_queue(ha, sp);
48660 + /* Set ending status. */
48661 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
48663 + __add_to_done_queue(ha, sp);
48665 + spin_unlock_irqrestore(&ha->list_lock, flags);
48671 + * qla2x00_check_for_devices_online
48673 + * Check fcport state of all devices to make sure online.
48676 + * ha = adapter block pointer.
48684 +qla2x00_check_for_devices_online(scsi_qla_host_t *ha)
48686 + struct list_head *fcpl;
48687 + fc_port_t *fcport;
48693 + list_for_each(fcpl, &ha->fcports) {
48694 + fcport = list_entry(fcpl, fc_port_t, list);
48696 + if ((atomic_read(&fcport->state) == FC_ONLINE) ||
48697 + (atomic_read(&fcport->state) == FC_DEVICE_DEAD))
48702 + if (cnt == found) {
48703 + DEBUG5(printk("%s(%ld): all online\n",
48713 +* Processes asynchronous reset.
48716 +* ha = adapter block pointer.
48719 +qla2x00_rst_aen(scsi_qla_host_t *ha)
48723 + if (ha->flags.online && !ha->flags.reset_active &&
48724 + !atomic_read(&ha->loop_down_timer) &&
48725 + !(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags))) {
48727 + /* 10/15 ha->flags.reset_active = TRUE; */
48729 + clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
48732 + * Issue marker command only when we are going to start
48735 + ha->marker_needed = 1;
48736 + } while (!atomic_read(&ha->loop_down_timer) &&
48737 + (test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags)));
48739 + /* 10/15 ha->flags.reset_active = FALSE; */
48747 + * This routine will alloacte SP from the free queue
48749 + * scsi_qla_host_t *
48751 + * srb_t * or NULL
48754 +qla2x00_get_new_sp(scsi_qla_host_t *ha)
48756 + srb_t * sp = NULL;
48759 + spin_lock_irqsave(&ha->list_lock, flags);
48760 + if (!list_empty(&ha->free_queue)) {
48761 + sp = list_entry(ha->free_queue.next, srb_t, list);
48762 + __del_from_free_queue(ha, sp);
48764 + spin_unlock_irqrestore(&ha->list_lock, flags);
48767 +#if defined(QL_DEBUG_LEVEL_4)
48768 + if ((int)atomic_read(&sp->ref_count) != 0) {
48769 + printk(KERN_WARNING
48770 + "scsi(%ld): WARNING ref_count not zero!\n",
48781 +/**************************************************************************
48785 +* One second timer
48787 +* Context: Interrupt
48788 +***************************************************************************/
48790 +qla2x00_timer(scsi_qla_host_t *ha)
48793 + unsigned long cpu_flags = 0;
48794 + struct list_head *fcpl;
48795 + fc_port_t *fcport;
48798 + int start_dpc = 0;
48801 + * We try and restart any request in the retry queue every second.
48803 + if (!list_empty(&ha->retry_queue)) {
48804 + set_bit(PORT_RESTART_NEEDED, &ha->dpc_flags);
48809 + * We try and restart any request in the scsi_retry queue every second.
48811 + if (!list_empty(&ha->scsi_retry_queue)) {
48812 + set_bit(SCSI_RESTART_NEEDED, &ha->dpc_flags);
48817 + * We try and failover any request in the failover queue every second.
48819 + if (!list_empty(&ha->failover_queue)) {
48820 + set_bit(FAILOVER_NEEDED, &ha->dpc_flags);
48825 + * Ports - Port down timer.
48827 + * Whenever, a port is in the LOST state we start decrementing its port
48828 + * down timer every second until it reaches zero. Once it reaches zero
48829 + * the port it marked DEAD.
48832 + list_for_each(fcpl, &ha->fcports) {
48833 + fcport = list_entry(fcpl, fc_port_t, list);
48835 + if (atomic_read(&fcport->state) == FC_DEVICE_LOST) {
48837 + if (atomic_read(&fcport->port_down_timer) == 0)
48840 + if (atomic_dec_and_test(&fcport->port_down_timer) != 0)
48841 + atomic_set(&fcport->state, FC_DEVICE_DEAD);
48843 + DEBUG(printk("scsi(%ld): fcport-%d - port retry count: "
48844 + "%d remainning\n",
48846 + t, atomic_read(&fcport->port_down_timer)));
48849 + } /* End of for fcport */
48852 + * LUNS - lun suspend timer.
48854 + * Whenever, a lun is suspended the timer starts decrementing its
48855 + * suspend timer every second until it reaches zero. Once it reaches
48856 + * zero the lun retry count is decremented.
48860 + * FIXME(dg) - Need to convert this linear search of luns into a search
48861 + * of a list of suspended luns.
48863 + for (t = 0; t < ha->max_targets; t++) {
48864 + if ((tq = ha->otgt[t]) == NULL)
48867 + for (l = 0; l < ha->max_luns; l++) {
48868 + if ((lq = (os_lun_t *) tq->olun[l]) == NULL)
48871 + spin_lock_irqsave(&lq->q_lock, cpu_flags);
48872 + if (lq->q_state == LUN_STATE_WAIT &&
48873 + atomic_read(&lq->q_timer) != 0) {
48875 + if (atomic_dec_and_test(&lq->q_timer) != 0) {
48877 + * A delay should immediately
48878 + * transition to a READY state
48880 + if (test_and_clear_bit(LUN_EXEC_DELAYED,
48882 + lq->q_state = LUN_STATE_READY;
48886 + if (lq->q_count == lq->q_max)
48888 + LUN_STATE_TIMEOUT;
48894 + DEBUG3(printk("scsi(%ld): lun%d - timer %d, "
48895 + "count=%d, max=%d, state=%d\n",
48898 + atomic_read(&lq->q_timer),
48899 + lq->q_count, lq->q_max, lq->q_state));
48901 + spin_unlock_irqrestore(&lq->q_lock, cpu_flags);
48902 + } /* End of for luns */
48903 + } /* End of for targets */
48905 + /* Loop down handler. */
48906 + if (atomic_read(&ha->loop_down_timer) > 0 &&
48907 + !(test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) && ha->flags.online) {
48909 + /* dg 10/30 if (atomic_read(&ha->loop_down_timer) == LOOP_DOWN_TIME) { */
48910 + if (atomic_read(&ha->loop_down_timer) ==
48911 + ha->loop_down_abort_time ) {
48913 + DEBUG(printk("scsi(%ld): Loop Down - aborting the "
48914 + "queues before time expire\n",
48917 + set_bit(ABORT_QUEUES_NEEDED, &ha->dpc_flags);
48921 + /* if the loop has been down for 4 minutes, reinit adapter */
48922 + if (atomic_dec_and_test(&ha->loop_down_timer) != 0) {
48923 + DEBUG(printk("scsi(%ld): Loop down exceed 4 mins - "
48924 + "restarting queues.\n",
48927 + set_bit(RESTART_QUEUES_NEEDED, &ha->dpc_flags);
48929 + if (!(ha->device_flags & DFLG_NO_CABLE) &&
48930 + qla2x00_reinit && !ha->flags.failover_enabled) {
48932 + DEBUG(printk("scsi(%ld): Loop down - "
48933 + "aborting ISP.\n",
48936 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
48939 + DEBUG3(printk("scsi(%ld): Loop Down - seconds remainning %d\n",
48941 + atomic_read(&ha->loop_down_timer)));
48945 + * Done Q Handler -- dgFIXME This handler will kick off doneq if we
48946 + * haven't process it in 2 seconds.
48948 + if (!list_empty(&ha->done_queue))
48949 + schedule_work(&ha->run_qla_task);
48951 +#if QLA2100_LIPTEST
48953 + * This block is used to periodically schedule isp abort after
48954 + * qla2x00_lip flag is set.
48958 + if (qla2x00_lip && (ha->forceLip++) == (60*2)) {
48959 + printk("timer: schedule isp abort.\n");
48960 + set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
48961 + ha->forceLip = 0;
48966 + * This block is used to periodically schedule mailbox cmd timeout
48969 + if (qla2x00_lip && (ha->forceLip++) == (60*6)) {
48970 + printk("qla2x00_timer: Going to force mbx timeout\n");
48972 + ha->forceLip = 0;
48977 + if (test_bit(FAILOVER_EVENT_NEEDED, &ha->dpc_flags)) {
48978 + if (ha->failback_delay) {
48979 + ha->failback_delay--;
48980 + if (ha->failback_delay == 0) {
48981 + set_bit(FAILOVER_EVENT, &ha->dpc_flags);
48982 + clear_bit(FAILOVER_EVENT_NEEDED,
48986 + set_bit(FAILOVER_EVENT, &ha->dpc_flags);
48987 + clear_bit(FAILOVER_EVENT_NEEDED, &ha->dpc_flags);
48991 + /* Schedule the DPC routine if needed */
48992 + if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) ||
48993 + test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) ||
48995 + test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) ||
48996 + test_bit(FAILOVER_EVENT, &ha->dpc_flags) ||
48997 + test_bit(FAILOVER_NEEDED, &ha->dpc_flags) ||
48998 + test_bit(MAILBOX_CMD_NEEDED, &ha->dpc_flags)) &&
48999 + ha->dpc_wait && !ha->dpc_active ) {
49001 + up(ha->dpc_wait);
49004 + qla2x00_restart_timer(ha, WATCH_INTERVAL);
49008 + * qla2x00_extend_timeout
49009 + * This routine will extend the timeout to the specified value.
49012 + * cmd = SCSI command structure
49018 +qla2x00_extend_timeout(Scsi_Cmnd *cmd, int timeout)
49020 + srb_t *sp = (srb_t *) CMD_SP(cmd);
49021 + u_long our_jiffies = (timeout * HZ) + jiffies;
49023 + sp->ext_history= 0;
49024 + sp->e_start = jiffies;
49025 + if (cmd->eh_timeout.function) {
49026 + mod_timer(&cmd->eh_timeout,our_jiffies);
49027 + sp->ext_history |= 1;
49029 + if (sp->timer.function != NULL) {
49031 + * Our internal timer should timeout before the midlayer has a
49032 + * chance begin the abort process
49034 + mod_timer(&sp->timer,our_jiffies - (QLA_CMD_TIMER_DELTA * HZ));
49036 + sp->ext_history |= 2;
49040 +/**************************************************************************
49041 +* qla2x00_cmd_timeout
49044 +* Handles the command if it times out in any state.
49047 +* sp - pointer to validate
49051 +* Note:Need to add the support for if( sp->state == SRB_FAILOVER_STATE).
49052 +**************************************************************************/
49054 +qla2x00_cmd_timeout(srb_t *sp)
49058 + scsi_qla_host_t *vis_ha, *dest_ha;
49061 +#if defined(QL_DEBUG_LEVEL_3)
49064 + fc_port_t *fcport;
49067 + vis_ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
49069 + DEBUG3(printk("cmd_timeout: Entering sp->state = %x\n", sp->state));
49071 + t = SCSI_TCN_32(cmd);
49072 + l = SCSI_LUN_32(cmd);
49073 + fcport = sp->fclun->fcport;
49074 + dest_ha = sp->ha;
49077 + * If IO is found either in retry Queue
49078 + * OR in Lun Queue
49079 + * Return this IO back to host
49081 + spin_lock_irqsave(&vis_ha->list_lock, flags);
49083 + if (sp->state == SRB_PENDING_STATE) {
49084 + __del_from_pending_queue(vis_ha, sp);
49085 + DEBUG2(printk("scsi(%ld): Found in Pending queue pid %ld, "
49086 + "State = %x., fcport state=%d jiffies=%lx\n",
49088 + sp->cmd->serial_number, sp->state,
49089 + atomic_read(&fcport->state), jiffies));
49092 + * If FC_DEVICE is marked as dead return the cmd with
49093 + * DID_NO_CONNECT status. Otherwise set the host_byte to
49094 + * DID_BUS_BUSY to let the OS retry this cmd.
49096 + if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) {
49097 + cmd->result = DID_NO_CONNECT << 16;
49099 + cmd->result = DID_BUS_BUSY << 16;
49101 + __add_to_done_queue(vis_ha, sp);
49104 + spin_unlock_irqrestore(&vis_ha->list_lock, flags);
49107 + schedule_work(&vis_ha->run_qla_task);
49112 + spin_lock_irqsave(&dest_ha->list_lock, flags);
49113 + if ((sp->state == SRB_RETRY_STATE) ||
49114 + (sp->state == SRB_SCSI_RETRY_STATE) ||
49115 + (sp->state == SRB_FAILOVER_STATE)) {
49117 + DEBUG2(printk("scsi(%ld): Found in (Scsi) Retry queue or "
49118 + "failover Q pid %ld, State = %x., fcport state=%d "
49119 + "jiffies=%lx retried=%d\n",
49120 + dest_ha->host_no,
49121 + sp->cmd->serial_number, sp->state,
49122 + atomic_read(&fcport->state),
49123 + jiffies, sp->cmd->retries));
49125 + if ((sp->state == SRB_RETRY_STATE)) {
49126 + __del_from_retry_queue(dest_ha, sp);
49127 + } else if ((sp->state == SRB_SCSI_RETRY_STATE)) {
49128 + __del_from_scsi_retry_queue(dest_ha, sp);
49129 + } else if ((sp->state == SRB_FAILOVER_STATE)) {
49130 + __del_from_failover_queue(dest_ha, sp);
49134 + * If FC_DEVICE is marked as dead return the cmd with
49135 + * DID_NO_CONNECT status. Otherwise set the host_byte to
49136 + * DID_BUS_BUSY to let the OS retry this cmd.
49138 + if (dest_ha->flags.failover_enabled) {
49139 + cmd->result = DID_BUS_BUSY << 16;
49141 + if (atomic_read(&fcport->state) == FC_DEVICE_DEAD) {
49142 + cmd->result = DID_NO_CONNECT << 16;
49143 + qla2x00_extend_timeout(cmd, EXTEND_CMD_TIMEOUT);
49145 + cmd->result = DID_BUS_BUSY << 16;
49149 + __add_to_done_queue(dest_ha, sp);
49152 + spin_unlock_irqrestore(&dest_ha->list_lock, flags);
49155 + schedule_work(&dest_ha->run_qla_task);
49159 +/* TODO: Remove this code!!! */
49160 +#if defined(QL_DEBUG_LEVEL_3)
49161 + spin_lock_irqsave(&dest_ha->list_lock, cpu_flags);
49162 + if (sp->state == SRB_DONE_STATE) {
49163 + /* IO in done_q -- leave it */
49164 + DEBUG(printk("scsi(%ld): Found in Done queue pid %ld sp=%p.\n",
49165 + dest_ha->host_no, sp->cmd->serial_number, sp));
49166 + } else if (sp->state == SRB_SUSPENDED_STATE) {
49167 + DEBUG(printk("scsi(%ld): Found SP %p in suspended state "
49169 + dest_ha->host_no,sp,
49170 + (int)sp->cmd->serial_number));
49171 + DEBUG(qla2x00_dump_buffer((uint8_t *)sp, sizeof(srb_t));)
49172 + } else if (sp->state == SRB_ACTIVE_STATE) {
49174 + * IO is with ISP find the command in our active list.
49176 + spin_unlock_irqrestore(&dest_ha->list_lock, cpu_flags);
49177 + spin_lock_irqsave(&dest_ha->hardware_lock, flags);
49179 + dest_ha->outstanding_cmds[(u_long)CMD_HANDLE(sp->cmd)]) {
49181 + DEBUG(printk("cmd_timeout: Found in ISP \n");)
49183 + sp->state = SRB_ACTIVE_TIMEOUT_STATE;
49184 + spin_unlock_irqrestore(&dest_ha->hardware_lock, flags);
49186 + spin_unlock_irqrestore(&dest_ha->hardware_lock, flags);
49188 + "qla_cmd_timeout: State indicates it is with "
49189 + "ISP, But not in active array\n");
49191 + spin_lock_irqsave(&dest_ha->list_lock, cpu_flags); /* 01/03 */
49192 + } else if (sp->state == SRB_ACTIVE_TIMEOUT_STATE) {
49193 + DEBUG(printk("qla2100%ld: Found in Active timeout state"
49194 + "pid %ld, State = %x., \n",
49195 + dest_ha->host_no,
49196 + sp->cmd->serial_number, sp->state);)
49199 + DEBUG2(printk("cmd_timeout%ld: LOST command state = "
49201 + vis_ha->host_no, sp->state,sp);)
49204 + "cmd_timeout: LOST command state = 0x%x\n", sp->state);
49206 + spin_unlock_irqrestore(&dest_ha->list_lock, cpu_flags);
49209 + DEBUG3(printk("cmd_timeout: Leaving\n");)
49213 + * qla2x00_done_work
49215 + * This is a task to process completion only similar to a
49216 + * bottom half handler.
49219 + * p -- pointer to hba struct
49223 +qla2x00_done_work(void *p)
49225 + scsi_qla_host_t *ha = (scsi_qla_host_t *) p;
49229 + set_bit(TASKLET_SCHED, &ha->dpc_flags);
49231 + if (!list_empty(&ha->done_queue))
49232 + qla2x00_done(ha);
49234 + clear_bit(TASKLET_SCHED, &ha->dpc_flags);
49240 +/**************************************************************************
49242 +* Process completed commands.
49245 +* old_ha = adapter block pointer.
49249 +**************************************************************************/
49251 +qla2x00_done(scsi_qla_host_t *old_ha)
49255 + unsigned long flags = 0;
49256 + scsi_qla_host_t *ha;
49257 + scsi_qla_host_t *vis_ha;
49259 + int send_marker_once = 0;
49260 + struct list_head *spl, *sptemp;
49262 + struct list_head local_sp_list;
49266 + if (test_bit(DONE_RUNNING, &old_ha->dpc_flags))
49269 + set_bit(DONE_RUNNING, &old_ha->dpc_flags);
49272 + INIT_LIST_HEAD(&local_sp_list);
49275 + * Get into local queue such that we do not wind up calling done queue
49276 + * takslet for the same IOs from DPC or any other place.
49278 + spin_lock_irqsave(&old_ha->list_lock,flags);
49279 + list_for_each_safe(spl, sptemp, &old_ha->done_queue) {
49280 + sp = list_entry(spl, srb_t, list);
49282 + /* remove command from done list */
49283 + list_del_init(&sp->list);
49285 + old_ha->done_q_cnt--;
49286 + sp->state = SRB_NO_QUEUE_STATE;
49288 + /* add to local queue */
49289 + list_add_tail(&sp->list, &local_sp_list);
49291 + spin_unlock_irqrestore(&old_ha->list_lock, flags);
49294 + * All done commands are in the local queue, now do the call back.
49296 + list_for_each_safe(spl, sptemp, &local_sp_list) {
49297 + sp = list_entry(spl, srb_t, list);
49299 + /* remove command from local list */
49300 + list_del_init(&sp->list);
49308 + vis_ha = (scsi_qla_host_t *)cmd->device->host->hostdata;
49309 + lq = sp->lun_queue;
49310 + ha = lq->fclun->fcport->ha;
49312 + if (sp->flags & SRB_DMA_VALID) {
49313 + sp->flags &= ~SRB_DMA_VALID;
49315 + /* 4.10 64 and 32 bit */
49316 + /* Release memory used for this I/O */
49317 + if (cmd->use_sg) {
49318 + pci_unmap_sg(ha->pdev,
49319 + cmd->request_buffer,
49321 + scsi_to_pci_dma_dir(
49322 + cmd->sc_data_direction));
49323 + } else if (cmd->request_bufflen) {
49324 + pci_unmap_page(ha->pdev,
49325 + sp->saved_dma_handle,
49326 + cmd->request_bufflen,
49327 + scsi_to_pci_dma_dir(
49328 + cmd->sc_data_direction));
49332 + if (!(sp->flags & SRB_IOCTL) && ha->flags.failover_enabled) {
49334 + * This routine checks for DID_NO_CONNECT to decide
49335 + * whether to failover to another path or not. We only
49336 + * failover on that status.
49338 + if (qla2x00_fo_check(ha,sp)) {
49339 + if ((sp->state != SRB_FAILOVER_STATE)) {
49341 + * Retry the command on this path
49342 + * several times before selecting a new
49345 + add_to_pending_queue_head(vis_ha, sp);
49346 + qla2x00_next(vis_ha);
49349 + /* we failover this path */
49350 + qla2x00_extend_timeout(sp->cmd,
49351 + EXTEND_CMD_TIMEOUT);
49358 + switch ((CMD_RESULT(cmd)>>16)) {
49365 + * Set marker needed, so we don't have to
49366 + * send multiple markers
49368 + if (!send_marker_once) {
49369 + ha->marker_needed = 1;
49370 + send_marker_once++;
49376 + * A backdoor device-reset requires different
49377 + * error handling. This code differentiates
49378 + * between normal error handling and the
49379 + * backdoor method.
49382 + if (ha->host->eh_active != EH_ACTIVE)
49383 + CMD_RESULT(sp->cmd) =
49384 + DID_BUS_BUSY << 16;
49389 + sp->flags &= ~SRB_ABORT_PENDING;
49390 + sp->flags |= SRB_ABORTED;
49392 + if (sp->flags & SRB_TIMEOUT)
49393 + CMD_RESULT(cmd)= DID_TIME_OUT << 16;
49398 + DEBUG2(printk("scsi(%ld:%d:%d) %s: did_error "
49399 + "= %d, comp-scsi= 0x%x-0x%x.\n",
49401 + SCSI_TCN_32(cmd),
49402 + SCSI_LUN_32(cmd),
49404 + (CMD_RESULT(cmd)>>16),
49405 + CMD_COMPL_STATUS(cmd),
49406 + CMD_SCSI_STATUS(cmd)));
49411 + * Call the mid-level driver interrupt handler -- via sp_put()
49415 + qla2x00_next(vis_ha);
49417 + } /* end of while */
49418 + clear_bit(DONE_RUNNING, &old_ha->dpc_flags);
49427 + * Retrieve and process next job in the LUN queue.
49430 + * tq = SCSI target queue pointer.
49431 + * lq = SCSI LUN queue pointer.
49432 + * TGT_LOCK must be already obtained.
49435 + * Releases TGT_LOCK upon exit.
49438 + * Kernel/Interrupt context.
49440 + * Note: This routine will always try to start I/O from visible HBA.
49443 +qla2x00_next(scsi_qla_host_t *vis_ha)
49445 + scsi_qla_host_t *dest_ha;
49446 + fc_port_t *fcport;
49449 + unsigned long flags;
49453 + spin_lock_irqsave(&vis_ha->list_lock, flags);
49454 + while (!list_empty(&vis_ha->pending_queue)) {
49455 + sp = list_entry(vis_ha->pending_queue.next, srb_t, list);
49457 + fcport = sp->fclun->fcport;
49458 + dest_ha = fcport->ha;
49460 + /* Check if command can be started, exit if not. */
49461 + if (LOOP_TRANSITION(dest_ha)) {
49465 + __del_from_pending_queue(vis_ha, sp);
49467 + /* If device is dead then send request back to OS */
49468 + if ((dest_ha->flags.link_down_error_enable &&
49469 + atomic_read(&fcport->state) == FC_DEVICE_DEAD)) {
49471 + CMD_RESULT(sp->cmd) = DID_NO_CONNECT << 16;
49473 + if (!atomic_read(&dest_ha->loop_down_timer) &&
49474 + dest_ha->loop_state == LOOP_DOWN) {
49479 + DEBUG3(printk("scsi(%ld): loop/port is down - "
49480 + "pid=%ld, sp=%p loopid=0x%x queued to dest HBA "
49482 + dest_ha->host_no,
49483 + sp->cmd->serial_number, sp,
49484 + fcport->loop_id, dest_ha->host_no));
49486 + * Initiate a failover - done routine will initiate.
49488 + __add_to_done_queue(vis_ha, sp);
49494 + * SCSI Kluge: Whenever, we need to wait for an event such as
49495 + * loop down (i.e. loop_down_timer ) or port down (i.e. LUN
49496 + * request qeueue is suspended) then we will recycle new
49497 + * commands back to the SCSI layer. We do this because this is
49498 + * normally a temporary condition and we don't want the
49499 + * mid-level scsi.c driver to get upset and start aborting
49500 + * commands. The timeout value is extracted from the command
49501 + * minus 1-second and put on a retry queue (watchdog). Once the
49502 + * command timeout it is returned to the mid-level with a BUSY
49503 + * status, so the mid-level will retry it. This process
49504 + * continues until the LOOP DOWN time expires or the condition
49507 + if (!(sp->flags & SRB_IOCTL) &&
49508 + (atomic_read(&fcport->state) != FC_ONLINE ||
49509 + test_bit(ABORT_ISP_ACTIVE, &dest_ha->dpc_flags) ||
49510 + (dest_ha->loop_state != LOOP_READY) ||
49511 + (sp->flags & SRB_FAILOVER))) {
49513 + DEBUG3(printk("scsi(%ld): port=(0x%x) retry_q(%d) "
49514 + "loop state = %d, loop counter = 0x%x dpc flags "
49516 + dest_ha->host_no,
49518 + atomic_read(&fcport->state),
49519 + dest_ha->loop_state,
49520 + atomic_read(&dest_ha->loop_down_timer),
49521 + dest_ha->dpc_flags));
49523 + qla2x00_extend_timeout(sp->cmd, EXTEND_CMD_TIMEOUT);
49524 + __add_to_retry_queue(vis_ha, sp);
49530 + * If this request's lun is suspended then put the request on
49531 + * the scsi_retry queue.
49533 + if (!(sp->flags & SRB_IOCTL) &&
49534 + sp->lun_queue->q_state == LUN_STATE_WAIT) {
49535 + DEBUG3(printk("scsi(%ld): lun wait state - pid=%ld, "
49536 + "opcode=%d, allowed=%d, retries=%d\n",
49537 + dest_ha->host_no,
49538 + sp->cmd->serial_number,
49539 + sp->cmd->cmnd[0],
49540 + sp->cmd->allowed,
49541 + sp->cmd->retries));
49543 + __add_to_scsi_retry_queue(vis_ha, sp);
49548 + sp->lun_queue->io_cnt++;
49550 + /* Release target queue lock */
49551 + spin_unlock_irqrestore(&vis_ha->list_lock, flags);
49553 + rval = qla2x00_start_scsi(sp);
49555 + spin_lock_irqsave(&vis_ha->list_lock, flags);
49557 + if (rval != QLA2X00_SUCCESS) {
49558 + /* Place request back on top of device queue */
49559 + /* add to the top of queue */
49560 + __add_to_pending_queue_head(vis_ha, sp);
49562 + sp->lun_queue->io_cnt--;
49566 + spin_unlock_irqrestore(&vis_ha->list_lock, flags);
49572 + * qla2x00_flush_failover_queue
49573 + * Return cmds of a "specific" LUN from the failover queue with
49574 + * DID_BUS_BUSY status.
49577 + * ha = adapter block pointer.
49581 + * Interrupt context.
49584 +qla2x00_flush_failover_q(scsi_qla_host_t *ha, os_lun_t *q)
49587 + struct list_head *list, *temp;
49588 + unsigned long flags;
49590 + spin_lock_irqsave(&ha->list_lock, flags);
49591 + list_for_each_safe(list, temp, &ha->failover_queue) {
49592 + sp = list_entry(list, srb_t, list);
49594 + * If request originated from the same lun_q then delete it
49595 + * from the failover queue
49597 + if (q == sp->lun_queue) {
49598 + /* Remove srb from failover queue. */
49599 + __del_from_failover_queue(ha,sp);
49600 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
49601 + CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
49602 + __add_to_done_queue(ha, sp);
49605 + spin_unlock_irqrestore(&ha->list_lock, flags);
49610 + * qla2x00_reset_lun_fo_counts
49611 + * Reset failover retry counts
49614 + * ha = adapter block pointer.
49617 + * Interrupt context.
49620 +qla2x00_reset_lun_fo_counts(scsi_qla_host_t *ha, os_lun_t *lq)
49623 + os_lun_t *orig_lq;
49624 + struct list_head *list;
49625 + unsigned long flags ;
49627 + spin_lock_irqsave(&ha->list_lock, flags);
49629 + * the pending queue.
49631 + list_for_each(list,&ha->pending_queue) {
49632 + tsp = list_entry(list, srb_t, list);
49633 + orig_lq = tsp->lun_queue;
49634 + if (orig_lq == lq)
49635 + tsp->fo_retry_cnt = 0;
49638 + * the retry queue.
49640 + list_for_each(list,&ha->retry_queue) {
49641 + tsp = list_entry(list, srb_t, list);
49642 + orig_lq = tsp->lun_queue;
49643 + if (orig_lq == lq)
49644 + tsp->fo_retry_cnt = 0;
49648 + * the done queue.
49650 + list_for_each(list, &ha->done_queue) {
49651 + tsp = list_entry(list, srb_t, list);
49652 + orig_lq = tsp->lun_queue;
49653 + if (orig_lq == lq)
49654 + tsp->fo_retry_cnt = 0;
49656 + spin_unlock_irqrestore(&ha->list_lock, flags);
49660 + * qla2x00_failover_cleanup
49661 + * Cleanup queues after a failover.
49664 + * sp = command pointer
49667 + * Interrupt context.
49670 +qla2x00_failover_cleanup(srb_t *sp)
49672 + CMD_RESULT(sp->cmd) = DID_BUS_BUSY << 16;
49673 + CMD_HANDLE(sp->cmd) = (unsigned char *) NULL;
49675 + /* turn-off all failover flags */
49676 + sp->flags = sp->flags & ~(SRB_RETRY|SRB_FAILOVER|SRB_FO_CANCEL);
49681 + * qla2x00_process_failover
49682 + * Process any command on the failover queue.
49685 + * ha = adapter block pointer.
49688 + * Interrupt context.
49691 +qla2x00_process_failover(scsi_qla_host_t *ha)
49697 + fc_port_t *fcport;
49698 + struct list_head *list, *temp;
49699 + unsigned long flags;
49701 + scsi_qla_host_t *vis_ha = NULL;
49703 + DEBUG(printk("scsi(%ld): Processing failover for hba.\n", ha->host_no));
49706 + * Process all the commands in the failover queue. Attempt to failover
49707 + * then either complete the command as is or requeue for retry.
49710 + /* Prevent or allow acceptance of new I/O requests. */
49711 + spin_lock_irqsave(&ha->list_lock, flags);
49714 + * Get first entry to find our visible adapter. We could never get
49715 + * here if the list is empty
49717 + list = ha->failover_queue.next;
49718 + sp = list_entry(list, srb_t, list);
49719 + vis_ha = (scsi_qla_host_t *) sp->cmd->device->host->hostdata;
49720 + list_for_each_safe(list, temp, &ha->failover_queue) {
49721 + sp = list_entry(list, srb_t, list);
49723 + tq = sp->tgt_queue;
49724 + lq = sp->lun_queue;
49725 + fcport = lq->fclun->fcport;
49727 + /* Remove srb from failover queue. */
49728 + __del_from_failover_queue(ha, sp);
49730 + DEBUG2(printk("%s(): pid %ld retrycnt=%d\n",
49731 + __func__, sp->cmd->serial_number, sp->cmd->retries));
49733 + /*** Select an alternate path ***/
49735 + * If the path has already been change by a previous request
49736 + * sp->fclun != lq->fclun
49738 + if (sp->fclun != lq->fclun ||
49739 + atomic_read(&fcport->state) != FC_DEVICE_DEAD) {
49741 + qla2x00_failover_cleanup(sp);
49743 + } else if (qla2x00_cfg_failover(ha,
49744 + lq->fclun, tq, sp) == NULL) {
49747 + * We ran out of paths, so just post the status which
49748 + * is already set in the cmd.
49751 + "scsi(%ld): Ran out of paths - pid %ld\n",
49752 + ha->host_no, sp->cmd->serial_number);
49754 + qla2x00_failover_cleanup(sp);
49757 + __add_to_done_queue(ha, sp);
49758 + } /* list_for_each_safe */
49759 + spin_unlock_irqrestore(&ha->list_lock,flags);
49761 + for (t = 0; t < vis_ha->max_targets; t++) {
49762 + if ((tq = vis_ha->otgt[t]) == NULL)
49764 + for (l = 0; l < vis_ha->max_luns; l++) {
49765 + if ((lq = (os_lun_t *) tq->olun[l]) == NULL)
49768 + if( test_and_clear_bit(LUN_MPIO_BUSY, &lq->q_flag) ) {
49770 + DEBUG(printk("scsi(%ld): remove suspend for "
49771 + "lun %d\n", ha->host_no, lq->fclun->lun));
49776 + //qla2x00_restart_queues(ha,TRUE);
49777 + qla2x00_restart_queues(ha, FALSE);
49779 + DEBUG(printk("%s() - done", __func__));
49782 +/**************************************************************************
49783 +* qla2x00_check_tgt_status
49786 +* Checks to see if the target or loop is down.
49789 +* cmd - pointer to Scsi cmd structure
49792 +* 1 - if target is present
49793 +* 0 - if target is not present
49795 +**************************************************************************/
49797 +qla2x00_check_tgt_status(scsi_qla_host_t *ha, Scsi_Cmnd *cmd)
49800 + uint32_t b, t, l;
49801 + fc_port_t *fcport;
49803 + /* Generate LU queue on bus, target, LUN */
49804 + b = SCSI_BUS_32(cmd);
49805 + t = SCSI_TCN_32(cmd);
49806 + l = SCSI_LUN_32(cmd);
49808 + if ((lq = GET_LU_Q(ha,t,l)) == NULL) {
49809 + return(QL_STATUS_ERROR);
49812 + fcport = lq->fclun->fcport;
49814 + if (TGT_Q(ha, t) == NULL ||
49815 + l >= ha->max_luns ||
49816 + (atomic_read(&fcport->state) == FC_DEVICE_DEAD) ||
49817 + (!atomic_read(&ha->loop_down_timer) &&
49818 + ha->loop_state == LOOP_DOWN) ||
49819 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
49821 + ha->loop_state != LOOP_READY) {
49823 + DEBUG(printk(KERN_INFO
49824 + "scsi(%ld:%2d:%2d:%2d): %s connection is down\n",
49829 + CMD_RESULT(cmd) = DID_NO_CONNECT << 16;
49830 + return(QL_STATUS_ERROR);
49832 + return (QL_STATUS_SUCCESS);
49835 +/**************************************************************************
49836 +* qla2x00_check_port_status
49839 +* Checks to see if the port or loop is down.
49842 +* fcport - pointer to fc_port_t structure.
49845 +* 1 - if port is present
49846 +* 0 - if port is not present
49848 +**************************************************************************/
49850 +qla2x00_check_port_status(scsi_qla_host_t *ha, fc_port_t *fcport)
49852 + uint32_t port_state;
49854 + if (fcport == NULL) {
49855 + return(QL_STATUS_ERROR);
49858 + port_state = (uint32_t)atomic_read(&fcport->state);
49859 + if ((port_state != FC_ONLINE) ||
49860 + (port_state == FC_DEVICE_DEAD) ||
49861 + (!atomic_read(&ha->loop_down_timer) &&
49862 + ha->loop_state == LOOP_DOWN) ||
49863 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
49864 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
49865 + ABORTS_ACTIVE || ha->loop_state != LOOP_READY) {
49867 + DEBUG(printk(KERN_INFO
49868 + "scsi(%ld): Connection is down. fcport=%p.\n",
49869 + ha->host_no, fcport));
49871 + return (QL_STATUS_ERROR);
49874 + return (QL_STATUS_SUCCESS);
49877 +/****************************************************************************/
49878 +/* Create character driver "HbaApiDev" w dynamically allocated major number */
49879 +/* and create "/proc/scsi/qla2x00/HbaApiNode" as the device node associated */
49880 +/* with the major number. */
49881 +/****************************************************************************/
49883 +#define APIDEV_NODE "HbaApiNode"
49884 +#define APIDEV_NAME "HbaApiDev"
49886 +static int apidev_major = 0;
49887 +static struct Scsi_Host *apidev_host = 0;
49889 +static struct file_operations apidev_fops = {
49890 + .ioctl = apidev_ioctl,
49891 + .open = apidev_open,
49892 + .release = apidev_close,
49896 +apidev_init(struct Scsi_Host *host)
49901 + apidev_major = register_chrdev(0, APIDEV_NAME, &apidev_fops);
49902 + if (0 > apidev_major) {
49903 + DEBUG(printk("%s(): register_chrdev rc=%d\n",
49904 + __func__, apidev_major));
49906 + return (apidev_major);
49909 + apidev_host = host;
49911 + DEBUG(printk("%s(): Creating (%s) %s/%s major=%d\n",
49913 + host->hostt->proc_name, host->hostt->proc_dir->name,
49914 + APIDEV_NODE, apidev_major));
49916 + proc_mknod(APIDEV_NODE, 0777+S_IFCHR, host->hostt->proc_dir,
49917 + (kdev_t)mk_kdev(apidev_major, 0));
49922 +static int apidev_cleanup()
49924 + if (!apidev_host)
49927 + unregister_chrdev(apidev_major,APIDEV_NAME);
49928 + remove_proc_entry(APIDEV_NODE,apidev_host->hostt->proc_dir);
49935 +apidev_open(struct inode *inode, struct file *file)
49937 + DEBUG9(printk(KERN_INFO
49938 + "%s(): open MAJOR number = %d, MINOR number = %d\n",
49939 + __func__, major(inode->i_rdev), minor(inode->i_rdev)));
49945 +apidev_close(struct inode *inode, struct file *file)
49947 + DEBUG9(printk(KERN_INFO
49948 + "%s(): closed\n", __func__));
49954 +apidev_ioctl(struct inode *inode,
49955 + struct file *fp, unsigned int cmd, unsigned long arg)
49958 + * Since this var is not really used, use static type to conserve
49961 + static Scsi_Device dummy_scsi_device;
49963 + dummy_scsi_device.host = apidev_host;
49965 + return (qla2x00_ioctl(&dummy_scsi_device, (int)cmd, (void*)arg));
49968 +#define driver_template qla2x00_driver_template
49969 +#include "scsi_module.c"
49970 --- /dev/null Thu Apr 11 07:25:15 2002
49971 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_os.h Thu Jul 3 15:34:42 2003
49973 +/******************************************************************************
49974 + * QLOGIC LINUX SOFTWARE
49976 + * QLogic ISP2x00 device driver for Linux 2.5.x
49977 + * Copyright (C) 2003 Qlogic Corporation
49978 + * (www.qlogic.com)
49980 + * Portions (C) Arjan van de Ven <arjanv@redhat.com> for Red Hat, Inc.
49982 + * This program is free software; you can redistribute it and/or modify it
49983 + * under the terms of the GNU General Public License as published by the
49984 + * Free Software Foundation; either version 2, or (at your option) any
49987 + * This program is distributed in the hope that it will be useful, but
49988 + * WITHOUT ANY WARRANTY; without even the implied warranty of
49989 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
49990 + * General Public License for more details.
49992 + ******************************************************************************/
49994 +#ifndef __QLA_OS_H
49995 +#define __QLA_OS_H
49998 + * Driver debug definitions.
50000 +/* #define QL_DEBUG_LEVEL_1 */ /* Output register accesses to COM1 */
50001 +/* #define QL_DEBUG_LEVEL_2 */ /* Output error msgs to COM1 */
50002 +/* #define QL_DEBUG_LEVEL_3 */ /* Output function trace msgs to COM1 */
50003 +/* #define QL_DEBUG_LEVEL_4 */ /* Output NVRAM trace msgs to COM1 */
50004 +/* #define QL_DEBUG_LEVEL_5 */ /* Output ring trace msgs to COM1 */
50005 +/* #define QL_DEBUG_LEVEL_6 */ /* Output WATCHDOG timer trace to COM1 */
50006 +/* #define QL_DEBUG_LEVEL_7 */ /* Output RISC load trace msgs to COM1 */
50007 +/* #define QL_DEBUG_LEVEL_8 */ /* Output ring saturation msgs to COM1 */
50008 +/* #define QL_DEBUG_LEVEL_9 */ /* Output IOCTL trace msgs */
50009 +/* #define QL_DEBUG_LEVEL_10 */ /* Output IOCTL error msgs */
50010 +/* #define QL_DEBUG_LEVEL_11 */ /* Output Mbx Cmd trace msgs */
50011 +/* #define QL_DEBUG_LEVEL_12 */ /* Output IP trace msgs */
50013 + * Local Macro Definitions.
50015 +#if defined(QL_DEBUG_LEVEL_1) || defined(QL_DEBUG_LEVEL_2) || \
50016 + defined(QL_DEBUG_LEVEL_3) || defined(QL_DEBUG_LEVEL_4) || \
50017 + defined(QL_DEBUG_LEVEL_5) || defined(QL_DEBUG_LEVEL_6) || \
50018 + defined(QL_DEBUG_LEVEL_7) || defined(QL_DEBUG_LEVEL_8) || \
50019 + defined(QL_DEBUG_LEVEL_9) || defined(QL_DEBUG_LEVEL_10) || \
50020 + defined(QL_DEBUG_LEVEL_11) || defined(QL_DEBUG_LEVEL_12)
50021 + #define QL_DEBUG_ROUTINES
50024 +#include <linux/config.h>
50025 +#ifndef QLA_MODVERSION
50026 +#define __NO_VERSION__
50028 +#include <linux/module.h>
50029 +#include <linux/version.h>
50030 +#include <linux/init.h>
50031 +#include <linux/string.h>
50032 +#include <linux/errno.h>
50033 +#include <linux/kernel.h>
50034 +#include <linux/ioport.h>
50035 +#include <linux/delay.h>
50036 +#include <linux/timer.h>
50037 +#include <linux/sched.h>
50038 +#include <linux/pci.h>
50039 +#include <linux/proc_fs.h>
50040 +#include <linux/blk.h>
50041 +#include <linux/interrupt.h>
50042 +#include <linux/stat.h>
50043 +#include <linux/slab.h>
50044 +#define __KERNEL_SYSCALLS__
50045 +#include <linux/unistd.h>
50046 +#include <linux/smp_lock.h>
50047 +#include <linux/bio.h>
50048 +#include <linux/moduleparam.h>
50050 +#include <asm/system.h>
50052 +#include <asm/io.h>
50053 +#include <asm/irq.h>
50054 +#include <asm/segment.h>
50055 +#include <asm/byteorder.h>
50056 +#include <asm/pgtable.h>
50059 +#include "hosts.h"
50061 +#if defined(FC_IP_SUPPORT)
50062 +#include <linux/ip.h>
50063 +#include <linux/if_arp.h>
50064 +#include <linux/skbuff.h>
50067 +#include <linux/ioctl.h>
50068 +#include <scsi/scsi_ioctl.h>
50069 +#include <asm/uaccess.h>
50071 +//TODO Fix this!!!
50075 +#define LINESIZE 256
50076 +#define MAXARGS 26
50078 +/* PCI interface definitions */
50079 +struct qla_fw_info {
50080 + unsigned short addressing; /* addressing method used to load fw */
50081 +#define FW_INFO_ADDR_NORMAL 0
50082 +#define FW_INFO_ADDR_EXTENDED 1
50083 +#define FW_INFO_ADDR_NOMORE 0xffff
50084 + unsigned short *fwcode; /* pointer to FW array */
50085 + unsigned short *fwlen; /* number of words in array */
50086 + unsigned short *fwstart; /* start address for F/W */
50087 + unsigned long *lfwstart; /* start address (long) for F/W */
50089 +struct qla_board_info {
50090 + char name[9]; /* Board ID String */
50091 + struct qla_fw_info *fwinfo;
50094 +/***********************************************************************
50095 +* We use the Scsi_Pointer structure that's included with each command
50096 +* SCSI_Cmnd as a scratchpad.
50098 +* SCp is defined as follows:
50099 +* - SCp.ptr -- > pointer to the SRB
50100 +* - SCp.this_residual -- > HBA completion status for ioctl code.
50102 +* Cmnd->host_scribble --> Used to hold the hba actived handle (1..255).
50103 +***********************************************************************/
50104 +#define CMD_SP(Cmnd) ((Cmnd)->SCp.ptr)
50105 +#define CMD_COMPL_STATUS(Cmnd) ((Cmnd)->SCp.this_residual)
50106 +#define CMD_HANDLE(Cmnd) ((Cmnd)->host_scribble)
50107 +/* Additional fields used by ioctl passthru */
50108 +#define CMD_RESID_LEN(Cmnd) ((Cmnd)->SCp.buffers_residual)
50109 +#define CMD_SCSI_STATUS(Cmnd) ((Cmnd)->SCp.Status)
50110 +#define CMD_ACTUAL_SNSLEN(Cmnd) ((Cmnd)->SCp.Message)
50111 +#define CMD_ENTRY_STATUS(Cmnd) ((Cmnd)->SCp.have_data_in)
50114 + * Other SCS__Cmnd members we only reference
50116 +#define CMD_XFRLEN(Cmnd) (Cmnd)->request_bufflen
50117 +#define CMD_CDBLEN(Cmnd) (Cmnd)->cmd_len
50118 +#define CMD_CDBP(Cmnd) (Cmnd)->cmnd
50119 +#define CMD_SNSP(Cmnd) (Cmnd)->sense_buffer
50120 +#define CMD_SNSLEN(Cmnd) (sizeof (Cmnd)->sense_buffer)
50121 +#define CMD_RESULT(Cmnd) ((Cmnd)->result)
50122 +#define CMD_TIMEOUT(Cmnd) ((Cmnd)->timeout_per_command)
50124 +#define SCSI_BUS_32(scp) ((scp)->device->channel)
50125 +#define SCSI_TCN_32(scp) ((scp)->device->id)
50126 +#define SCSI_LUN_32(scp) ((scp)->device->lun)
50129 --- /dev/null Thu Apr 11 07:25:15 2002
50130 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_settings.h Thu Jul 3 15:34:42 2003
50132 +/******************************************************************************
50133 + * QLOGIC LINUX SOFTWARE
50135 + * QLogic ISP2x00 device driver for Linux 2.5.x
50136 + * Copyright (C) 2003 Qlogic Corporation
50137 + * (www.qlogic.com)
50139 + * This program is free software; you can redistribute it and/or modify it
50140 + * under the terms of the GNU General Public License as published by the
50141 + * Free Software Foundation; either version 2, or (at your option) any
50144 + * This program is distributed in the hope that it will be useful, but
50145 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50146 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
50147 + * General Public License for more details.
50149 + ******************************************************************************/
50151 + * Compile time Options:
50152 + * 0 - Disable and 1 - Enable
50154 +#define MEMORY_MAPPED_IO 0
50155 +#define STOP_ON_ERROR 0 /* Stop on aborts and resets */
50156 +#define STOP_ON_RESET 0
50157 +#define STOP_ON_ABORT 0
50158 +#define QLA_SCSI_VENDOR_DIR 0 /* Decode vendor specific opcodes for direction */
50159 +#define QLA2100_LIPTEST 0
50160 +#define REQ_TRACE 1
50161 +#define USE_ABORT_TGT 1 /* Use Abort Target mbx cmd */
50163 +#define DEBUG_QLA2100 0 /* For Debug of qla2x00 */
50165 +#define MPIO_SUPPORT 0
50166 +#define VSA 0 /* Volume Set Addressing */
50169 + * When a lun is suspended for the "Not Ready" condition
50170 + * then it will suspend the lun for increments of 6 sec delays.
50171 + * SUSPEND_COUNT is that count.
50173 +#define SUSPEND_COUNT 10 /* 6 secs * 10 retries = 60 secs */
50175 +/* Failover options */
50176 +#define MAX_RECOVERYTIME 10 /* Max suspend time for a lun recovery time */
50177 +#define MAX_FAILBACKTIME 5 /* (60) Max suspend time before failing back */
50179 +#define QLA_CMD_TIMER_DELTA 3
50181 +#define MAX_RETRIES_OF_ISP_ABORT 5 /* */
50184 + * Defines the time in seconds that
50185 + * the driver extends the command timeout
50186 + * to get around the problem where the
50187 + * mid-layer only allows 5 retries for commands
50188 + * that return BUS_BUSY
50190 +#define EXTEND_CMD_TIMEOUT 60
50193 + * We need to hardcode this value since the firmware
50194 + * does not allow us to retrieve the maximum number of
50195 + * IOCBs available during initializtion.
50197 + * Factors that affect this value include the amount of
50198 + * memory on-board (HBA) and firmware IP support.
50201 +#undef IOCB_THROTTLE_USAGE
50202 +#undef IOCB_HIT_RATE
50203 +#define MAX_IOCBS_AVAILBALE 3000
50206 + * Some vendor subsystems do not recover properly after a device reset. Define
50207 + * the following to force a logout after a successful device reset.
50209 +#undef LOGOUT_AFTER_DEVICE_RESET
50211 +#include "qla_version.h"
50212 --- /dev/null Thu Apr 11 07:25:15 2002
50213 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_sup.c Thu Jul 3 15:34:42 2003
50215 +/******************************************************************************
50216 + * QLOGIC LINUX SOFTWARE
50218 + * QLogic ISP2x00 device driver for Linux 2.5.x
50219 + * Copyright (C) 2003 Qlogic Corporation
50220 + * (www.qlogic.com)
50222 + * This program is free software; you can redistribute it and/or modify it
50223 + * under the terms of the GNU General Public License as published by the
50224 + * Free Software Foundation; either version 2, or (at your option) any
50227 + * This program is distributed in the hope that it will be useful, but
50228 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50229 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
50230 + * General Public License for more details.
50232 + ******************************************************************************/
50234 +#include "qla_os.h"
50235 +#include "qla_def.h"
50237 +static uint16_t qla2x00_nvram_request(scsi_qla_host_t *, uint32_t);
50239 +static void qla2x00_flash_enable(scsi_qla_host_t *);
50240 +static void qla2x00_flash_disable(scsi_qla_host_t *);
50242 +uint8_t qla2x00_read_flash_byte(scsi_qla_host_t *, uint32_t);
50243 +static void qla2x00_write_flash_byte(scsi_qla_host_t *, uint32_t, uint8_t);
50244 +static uint8_t qla2x00_poll_flash(scsi_qla_host_t *ha,
50245 + uint32_t addr, uint8_t poll_data, uint8_t mid);
50246 +static uint8_t qla2x00_program_flash_address(scsi_qla_host_t *ha,
50247 + uint32_t addr, uint8_t data, uint8_t mid);
50248 +static uint8_t qla2x00_erase_flash_sector(scsi_qla_host_t *ha,
50249 + uint32_t addr, uint32_t sec_mask, uint8_t mid);
50251 +uint8_t qla2x00_get_flash_manufacturer(scsi_qla_host_t *ha);
50252 +uint16_t qla2x00_get_flash_version(scsi_qla_host_t *);
50253 +uint16_t qla2x00_get_flash_image(scsi_qla_host_t *ha, uint8_t *image);
50254 +uint16_t qla2x00_set_flash_image(scsi_qla_host_t *ha, uint8_t *image);
50258 + * NVRAM support routines
50262 + * qla2x00_get_nvram_word() - Calculates word position in NVRAM and calls the
50263 + * request routine to get the word from NVRAM.
50264 + * @ha: HA context
50265 + * @addr: Address in NVRAM to read
50267 + * Returns the word read from nvram @addr.
50270 +qla2x00_get_nvram_word(scsi_qla_host_t *ha, uint32_t addr)
50277 + nv_cmd = addr << 16;
50278 + nv_cmd |= NV_READ_OP;
50279 + data = qla2x00_nvram_request(ha, nv_cmd);
50281 + DEBUG4(printk("%s(%ld): NVRAM[%lx]=%lx.\n",
50282 + __func__, ha->host_no, (u_long)addr, (u_long)data));
50290 + * qla2x00_nvram_request() - Sends read command to NVRAM and gets data from
50292 + * @ha: HA context
50293 + * @nv_cmd: NVRAM command
50295 + * Bit definitions for NVRAM command:
50297 + * Bit 26 = start bit
50298 + * Bit 25, 24 = opcode
50299 + * Bit 23-16 = address
50300 + * Bit 15-0 = write data
50302 + * Returns the word read from nvram @addr.
50305 +qla2x00_nvram_request(scsi_qla_host_t *ha, uint32_t nv_cmd)
50308 + device_reg_t *reg = ha->iobase;
50309 + uint16_t data = 0;
50310 + uint16_t reg_data;
50312 + /* Send command to NVRAM. */
50314 + for (cnt = 0; cnt < 11; cnt++) {
50315 + if (nv_cmd & BIT_31)
50316 + qla2x00_nv_write(ha, NVR_DATA_OUT);
50318 + qla2x00_nv_write(ha, 0);
50322 + /* Read data from NVRAM. */
50323 + for (cnt = 0; cnt < 16; cnt++) {
50324 + WRT_REG_WORD(®->nvram, NVR_SELECT | NVR_CLOCK);
50327 + reg_data = RD_REG_WORD(®->nvram);
50328 + if (reg_data & NVR_DATA_IN)
50330 + WRT_REG_WORD(®->nvram, NVR_SELECT);
50334 + /* Deselect chip. */
50335 + WRT_REG_WORD(®->nvram, NVR_DESELECT);
50342 + * qla2x00_nv_write() - Clean NVRAM operations.
50343 + * @ha: HA context
50346 +qla2x00_nv_deselect(scsi_qla_host_t *ha)
50348 + device_reg_t *reg = ha->iobase;
50350 + WRT_REG_WORD(®->nvram, NVR_DESELECT);
50355 + * qla2x00_nv_write() - Prepare for NVRAM read/write operation.
50356 + * @ha: HA context
50357 + * @data: Serial interface selector
50360 +qla2x00_nv_write(scsi_qla_host_t *ha, uint16_t data)
50362 + device_reg_t *reg = ha->iobase;
50364 + WRT_REG_WORD(®->nvram, data | NVR_SELECT);
50366 + WRT_REG_WORD(®->nvram, data | NVR_SELECT | NVR_CLOCK);
50368 + WRT_REG_WORD(®->nvram, data | NVR_SELECT);
50373 + * Flash support routines
50377 + * qla2x00_flash_enable() - Setup flash for reading and writing.
50378 + * @ha: HA context
50381 +qla2x00_flash_enable(scsi_qla_host_t *ha)
50384 + device_reg_t *reg = ha->iobase;
50386 + data = RD_REG_WORD(®->ctrl_status);
50387 + data |= CSR_FLASH_ENABLE;
50388 + WRT_REG_WORD(®->ctrl_status, data);
50392 + * qla2x00_flash_disable() - Disable flash and allow RISC to run.
50393 + * @ha: HA context
50396 +qla2x00_flash_disable(scsi_qla_host_t *ha)
50399 + device_reg_t *reg = ha->iobase;
50401 + data = RD_REG_WORD(®->ctrl_status);
50402 + data &= ~(CSR_FLASH_ENABLE);
50403 + WRT_REG_WORD(®->ctrl_status, data);
50407 + * qla2x00_read_flash_byte() - Reads a byte from flash
50408 + * @ha: HA context
50409 + * @addr: Address in flash to read
50411 + * A word is read from the chip, but, only the lower byte is valid.
50413 + * Returns the byte read from flash @addr.
50416 +qla2x00_read_flash_byte(scsi_qla_host_t *ha, uint32_t addr)
50419 + uint16_t bank_select;
50420 + device_reg_t *reg = ha->iobase;
50422 + /* Setup bit 16 of flash address. */
50423 + bank_select = RD_REG_WORD(®->ctrl_status);
50424 + if ((addr & BIT_16) && ((bank_select & CSR_FLASH_64K_BANK) == 0)) {
50425 + bank_select |= CSR_FLASH_64K_BANK;
50426 + WRT_REG_WORD(®->ctrl_status, bank_select);
50427 + } else if (((addr & BIT_16) == 0) &&
50428 + (bank_select & CSR_FLASH_64K_BANK)) {
50429 + bank_select &= ~(CSR_FLASH_64K_BANK);
50430 + WRT_REG_WORD(®->ctrl_status, bank_select);
50432 + WRT_REG_WORD(®->flash_address, (uint16_t)addr);
50433 + data = qla2x00_debounce_register(®->flash_data);
50435 + return ((uint8_t)data);
50439 + * qla2x00_write_flash_byte() - Write a byte to flash
50440 + * @ha: HA context
50441 + * @addr: Address in flash to write
50442 + * @data: Data to write
50445 +qla2x00_write_flash_byte(scsi_qla_host_t *ha, uint32_t addr, uint8_t data)
50447 + uint16_t bank_select;
50448 + device_reg_t *reg = ha->iobase;
50450 + /* Setup bit 16 of flash address. */
50451 + bank_select = RD_REG_WORD(®->ctrl_status);
50452 + if ((addr & BIT_16) && ((bank_select & CSR_FLASH_64K_BANK) == 0)) {
50453 + bank_select |= CSR_FLASH_64K_BANK;
50454 + WRT_REG_WORD(®->ctrl_status, bank_select);
50455 + } else if (((addr & BIT_16) == 0) &&
50456 + (bank_select & CSR_FLASH_64K_BANK)) {
50457 + bank_select &= ~(CSR_FLASH_64K_BANK);
50458 + WRT_REG_WORD(®->ctrl_status, bank_select);
50460 + WRT_REG_WORD(®->flash_address, (uint16_t)addr);
50461 + WRT_REG_WORD(®->flash_data, (uint16_t)data);
50465 + * qla2x00_poll_flash() - Polls flash for completion.
50466 + * @ha: HA context
50467 + * @addr: Address in flash to poll
50468 + * @poll_data: Data to be polled
50469 + * @mid: Flash manufacturer ID
50471 + * This function polls the device until bit 7 of what is read matches data
50472 + * bit 7 or until data bit 5 becomes a 1. If that hapens, the flash ROM timed
50473 + * out (a fatal error). The flash book recommeds reading bit 7 again after
50474 + * reading bit 5 as a 1.
50476 + * Returns 0 on success, else non-zero.
50479 +qla2x00_poll_flash(scsi_qla_host_t *ha,
50480 + uint32_t addr, uint8_t poll_data, uint8_t mid)
50483 + uint8_t flash_data;
50490 + /* Wait for 30 seconds for command to finish. */
50491 + poll_data &= BIT_7;
50492 + for (cnt = 3000000; cnt; cnt--) {
50493 + flash_data = qla2x00_read_flash_byte(ha, addr);
50494 + if ((flash_data & BIT_7) == poll_data) {
50499 + if (mid != 0x40 && mid != 0xda) {
50500 + if (flash_data & BIT_5)
50502 + if (failed_pass < 0)
50512 + * qla2x00_program_flash_address() - Programs a flash address
50513 + * @ha: HA context
50514 + * @addr: Address in flash to program
50515 + * @data: Data to be written in flash
50516 + * @mid: Flash manufacturer ID
50518 + * Returns 0 on success, else non-zero.
50521 +qla2x00_program_flash_address(scsi_qla_host_t *ha,
50522 + uint32_t addr, uint8_t data, uint8_t mid)
50524 + /* Write Program Command Sequence */
50525 + qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50526 + qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50527 + qla2x00_write_flash_byte(ha, 0x5555, 0xa0);
50528 + qla2x00_write_flash_byte(ha, addr, data);
50530 + /* Wait for write to complete. */
50531 + return (qla2x00_poll_flash(ha, addr, data, mid));
50535 + * qla2x00_erase_flash_sector() - Erase a flash sector.
50536 + * @ha: HA context
50537 + * @addr: Flash sector to erase
50538 + * @sec_mask: Sector address mask
50539 + * @mid: Flash manufacturer ID
50541 + * Returns 0 on success, else non-zero.
50544 +qla2x00_erase_flash_sector(scsi_qla_host_t *ha,
50545 + uint32_t addr, uint32_t sec_mask, uint8_t mid)
50547 + /* Individual Sector Erase Command Sequence */
50548 + qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50549 + qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50550 + qla2x00_write_flash_byte(ha, 0x5555, 0x80);
50551 + qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50552 + qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50555 + qla2x00_write_flash_byte(ha, addr & sec_mask, 0x10);
50557 + qla2x00_write_flash_byte(ha, addr & sec_mask, 0x30);
50561 + /* Wait for erase to complete. */
50562 + return (qla2x00_poll_flash(ha, addr, 0x80, mid));
50566 + * qla2x00_get_flash_manufacturer() - Read manufacturer ID from flash chip.
50567 + * @ha: HA context
50569 + * Returns the manufacturer's ID read from the flash chip.
50572 +qla2x00_get_flash_manufacturer(scsi_qla_host_t *ha)
50574 + uint8_t manuf_id;
50576 + qla2x00_write_flash_byte(ha, 0x5555, 0xaa);
50577 + qla2x00_write_flash_byte(ha, 0x2aaa, 0x55);
50578 + qla2x00_write_flash_byte(ha, 0x5555, 0x90);
50579 + manuf_id = qla2x00_read_flash_byte(ha, 0x0001);
50581 + return (manuf_id);
50585 + * qla2x00_get_flash_version() - Read version information from flash.
50586 + * @ha: HA context
50588 + * Returns QL_STATUS_SUCCESS on successful retrieval of flash version.
50591 +qla2x00_get_flash_version(scsi_qla_host_t *ha)
50593 + uint16_t ret = QL_STATUS_SUCCESS;
50594 + uint32_t loop_cnt = 1; /* this is for error exit only */
50595 + uint32_t pcir_adr;
50599 + qla2x00_flash_enable(ha);
50600 + do { /* Loop once to provide quick error exit */
50601 + /* Match signature */
50602 + if (!(qla2x00_read_flash_byte(ha, 0) == 0x55 &&
50603 + qla2x00_read_flash_byte(ha, 1) == 0xaa)) {
50604 + /* No signature */
50605 + DEBUG2(printk("scsi(%ld): No matching FLASH "
50606 + "signature.\n", ha->host_no));
50607 + ret = QL_STATUS_ERROR;
50611 + pcir_adr = qla2x00_read_flash_byte(ha, 0x18) & 0xff;
50613 + /* validate signature of PCI data structure */
50614 + if ((qla2x00_read_flash_byte(ha, pcir_adr)) == 'P' &&
50615 + (qla2x00_read_flash_byte(ha, pcir_adr + 1)) == 'C' &&
50616 + (qla2x00_read_flash_byte(ha, pcir_adr + 2)) == 'I' &&
50617 + (qla2x00_read_flash_byte(ha, pcir_adr + 3)) == 'R') {
50619 + /* Read version */
50620 + ha->optrom_minor =
50621 + qla2x00_read_flash_byte(ha, pcir_adr + 0x12);
50622 + ha->optrom_major =
50623 + qla2x00_read_flash_byte(ha, pcir_adr + 0x13);
50624 + DEBUG3(printk("%s(): got %d.%d.\n",
50625 + __func__, ha->optrom_major, ha->optrom_minor));
50628 + DEBUG2(printk("%s(): PCI data struct not found. "
50629 + "pcir_adr=%x.\n",
50630 + __func__, pcir_adr));
50631 + ret = QL_STATUS_ERROR;
50635 + } while (--loop_cnt);
50636 + qla2x00_flash_disable(ha);
50644 + * qla2x00_get_flash_image() - Read image from flash chip.
50645 + * @ha: HA context
50646 + * @image: Buffer to receive flash image
50648 + * Returns 0 on success, else non-zero.
50651 +qla2x00_get_flash_image(scsi_qla_host_t *ha, uint8_t *image)
50654 + uint32_t midpoint;
50656 + device_reg_t *reg = ha->iobase;
50658 + midpoint = FLASH_IMAGE_SIZE / 2;
50660 + qla2x00_flash_enable(ha);
50661 + WRT_REG_WORD(®->nvram, 0);
50662 + for (addr = 0, data = image; addr < FLASH_IMAGE_SIZE; addr++, data++) {
50663 + if (addr == midpoint)
50664 + WRT_REG_WORD(®->nvram, NVR_SELECT);
50666 + *data = qla2x00_read_flash_byte(ha, addr);
50668 + qla2x00_flash_disable(ha);
50674 + * qla2x00_set_flash_image() - Write image to flash chip.
50675 + * @ha: HA context
50676 + * @image: Source image to write to flash
50678 + * Returns 0 on success, else non-zero.
50681 +qla2x00_set_flash_image(scsi_qla_host_t *ha, uint8_t *image)
50685 + uint32_t midpoint;
50686 + uint32_t sec_mask;
50687 + uint32_t rest_addr;
50689 + uint8_t sec_number;
50691 + device_reg_t *reg = ha->iobase;
50696 + /* Reset ISP chip. */
50697 + WRT_REG_WORD(®->ctrl_status, CSR_ISP_SOFT_RESET);
50699 + qla2x00_flash_enable(ha);
50700 + do { /* Loop once to provide quick error exit */
50701 + /* Structure of flash memory based on manufacturer */
50702 + mid = qla2x00_get_flash_manufacturer(ha);
50703 + if (mid == 0x6d) {
50704 + // Am29LV001 part
50705 + rest_addr = 0x1fff;
50706 + sec_mask = 0x1e000;
50708 + else if (mid == 0x40) {
50709 + // Mostel v29c51001 part
50710 + rest_addr = 0x1ff;
50711 + sec_mask = 0x1fe00;
50713 + else if (mid == 0xbf) {
50714 + // SST39sf10 part
50715 + rest_addr = 0xfff;
50716 + sec_mask = 0x1f000;
50718 + else if (mid == 0xda) {
50719 + // Winbond W29EE011 part
50720 + rest_addr = 0x7f;
50721 + sec_mask = 0x1ff80;
50723 + if (qla2x00_erase_flash_sector(ha,
50724 + addr, sec_mask, mid)) {
50731 + rest_addr = 0x3fff;
50732 + sec_mask = 0x1c000;
50735 + midpoint = FLASH_IMAGE_SIZE / 2;
50736 + for (addr = 0; addr < FLASH_IMAGE_SIZE; addr++) {
50738 + /* Are we at the beginning of a sector? */
50739 + if (!(addr & rest_addr)) {
50740 + if (addr == midpoint)
50741 + WRT_REG_WORD(®->nvram, NVR_SELECT);
50743 + /* Then erase it */
50744 + if (qla2x00_erase_flash_sector(ha,
50745 + addr, sec_mask, mid)) {
50752 + if (mid == 0x6d) {
50753 + if (sec_number == 1 &&
50754 + (addr == (rest_addr - 1))) {
50755 + rest_addr = 0x0fff;
50756 + sec_mask = 0x1f000;
50758 + else if (sec_number == 3 && (addr & 0x7ffe)) {
50759 + rest_addr = 0x3fff;
50760 + sec_mask = 0x1c000;
50764 + if (qla2x00_program_flash_address(ha,
50765 + addr, data, mid)) {
50771 + qla2x00_flash_disable(ha);
50775 --- /dev/null Thu Apr 11 07:25:15 2002
50776 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_vendor.c Thu Jul 3 15:34:42 2003
50778 +/******************************************************************************
50779 + * QLOGIC LINUX SOFTWARE
50781 + * QLogic ISP2x00 device driver for Linux 2.5.x
50782 + * Copyright (C) 2003 Qlogic Corporation
50783 + * (www.qlogic.com)
50785 + * This program is free software; you can redistribute it and/or modify it
50786 + * under the terms of the GNU General Public License as published by the
50787 + * Free Software Foundation; either version 2, or (at your option) any
50790 + * This program is distributed in the hope that it will be useful, but
50791 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50792 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
50793 + * General Public License for more details.
50795 + ******************************************************************************/
50797 +#include "qla_os.h"
50798 +#include "qla_def.h"
50801 + * vendor specific op codes.
50803 +#define UCSCSI_DCMD 0x20 /* vendor specific command */
50804 +#define DAC_CDB_LEN 12
50805 +#define DAC_SENSE_LEN 64
50807 +#define DACMD_WRITE_CONF_ONDISK 0x4B
50808 +#define DACMD_WRITE_CONFIG 0x06
50809 +#define DACMD_WRITE_CONF2 0x3C
50810 +#define DACMD_WRITE_CONFLABEL 0x49 /* Write configuration label */
50811 +#define DACMD_WRITE_CONFIG_V3x 0x4F
50812 +#define DACMD_ADD_CONFIG_V2x 0x18
50813 +#define DACMD_ADD_CONFIG_V3x 0x4C
50814 +#define DACMD_STORE_IMAGE 0x21
50815 +#define DACMD_ADD_CAPACITY 0x2A /* add physical drives to existing array */
50816 +#define DACMD_WRITE_IOPORT 0x3A /* write port B */
50817 +#define DACMD_S2S_WRITEFULLCONF 0x60 /* write full configuration */
50818 +#define DACMD_S2S_ADDFULLCONF 0x62 /* add full configuration */
50819 +#define DACMD_S2S_WRITELUNMAP_OLD 0x58 /* write LUN map information */
50820 +#define DACMD_S2S_WRITELUNMAP 0xD2 /* Write LUN MAP Information */
50821 +#define DACMD_S2S_WRITE_IOPORT 0x66 /* write expanded IO port */
50822 +#define DACMD_WRITE_V3x 0x34 /* write data from plain memory */
50823 +#define DACMD_S2S_WRITESIG 0x4D /* write signature information */
50825 +#if !defined(s08bits)
50826 +#define s08bits char
50827 +#define s16bits short
50828 +#define s32bits int
50829 +#define u08bits unsigned s08bits
50830 +#define u16bits unsigned s16bits
50831 +#define u32bits unsigned s32bits
50834 +typedef struct dac_command
50836 + u08bits mb_Command; /* Mail Box register 0 */
50837 + u08bits mb_CmdID; /* Mail Box register 1 */
50838 + u08bits mb_ChannelNo; /* Mail Box register 2 */
50839 + u08bits mb_TargetID; /* Mail Box register 3 */
50840 + u08bits mb_DevState; /* Mail Box register 4 */
50841 + u08bits mb_MailBox5; /* Mail Box register 5 */
50842 + u08bits mb_MailBox6; /* Mail Box register 6 */
50843 + u08bits mb_SysDevNo; /* Mail Box register 7 */
50844 + u32bits mb_Datap; /* Mail Box register 8-B */
50845 + u08bits mb_MailBoxC; /* Mail Box register C */
50846 + u08bits mb_StatusID; /* Mail box register D */
50847 + u16bits mb_Status; /* Mail Box Register E,F */
50851 +typedef struct dac_scdb
50853 + u08bits db_ChannelTarget; /* ChannelNo 7..4 & Target 3..0 */
50854 + u08bits db_DATRET; /* different bits, see below */
50855 + u16bits db_TransferSize; /* Request/done size in bytes */
50856 + u32bits db_PhysDatap; /* Physical addr in host memory */
50857 + u08bits db_CdbLen; /* 6, 10 or 12 */
50858 + u08bits db_SenseLen; /* If returned from DAC (<= 64) */
50859 + u08bits db_Cdb[DAC_CDB_LEN]; /* The CDB itself */
50860 + u08bits db_SenseData[DAC_SENSE_LEN];/* Result of request sense */
50861 + u08bits db_StatusIn; /* SCSI status returned */
50862 + u08bits db_Reserved1;
50866 +typedef struct dga_scdb
50868 + u08bits dsc_osreq[1024]; /* OS related buffer:sizeof(mdac_req_t) */
50870 + u08bits dsc_familyctlno; /* Controller number within family */
50871 + u08bits dsc_ctlno; /* Controller number */
50872 + u08bits dsc_chno; /* Channel number */
50873 + u08bits dsc_tgt; /* target ID */
50875 + u08bits dsc_lun; /* Lun ID */
50876 + u08bits dsc_rebuildflag; /* current rebuild flag */
50877 + u16bits dsc_status; /* completion status */
50879 + u08bits dsc_scsiversion; /* SCSI protocol version */
50880 + u08bits dsc_hostctlno; /* host system controller number */
50881 + u16bits dsc_reqsenseseqno; /* request sense sequence number */
50883 + u32bits dsc_events; /* # events at start */
50885 + u32bits dsc_pollwaitchan; /* sleep/wakeup channel */
50886 + u32bits dsc_poll; /* polling value, if =0 op complete */
50888 + struct dga_ctldev *dsc_ctp; /* pointer back to controller */
50889 + void *dsc_pdp; /* pointer back to physical device */
50890 + void *dsc_ldp; /* pointer back to logical device */
50891 + void (*dsc_intr)(void); /* completion call back function */
50893 + /* all save functions are used in S2S */
50894 + u08bits dsc_savedcdb[DAC_CDB_LEN];/* 12 bytes saved CDB from SCSI CDB */
50895 + u32bits (*dsc_statsintr)(struct dga_scdb *); /* statistics completion function */
50897 + void (*dsc_savedintr)(void); /* completion call back function */
50898 + void *dsc_savedctp; /* pointer back to controller */
50899 + u08bits dsc_savedfamilyctlno; /* Controller number within family */
50900 + u08bits dsc_savedctlno; /* Controller number */
50901 + u08bits dsc_savedchno; /* Channel number */
50902 + u08bits dsc_savedtgt; /* target ID */
50904 + u08bits dsc_savedlun; /* Lun ID */
50905 + u08bits dsc_savedcdblen; /* saved CDB len for SCDB */
50906 + u08bits dsc_scanmode;
50907 + u08bits dsc_pageno; /* pageno for data > 4K */
50908 + u32bits dsc_residue;
50909 + u32bits dsc_Reserved4;
50911 + dac_command_t dsc_dcmd; /* DCMD space, 16 bytes */
50912 + dac_scdb_t dsc_scdb; /* SCDB space */
50913 + u32bits dsc_EventSeqNo;
50914 + u32bits dsc_ReqSenseNo;
50916 + u32bits dsc_Reserved64[16]; /* leave this for OLD SCO driver bug */
50918 + u08bits dsc_data[256]; /* Rest is data */
50923 +* qla2100_set_scsi_direction
50924 +* This routine will set the proper direction for vendor specific
50927 +* Note: Vendors should modify this routine to set the proper
50928 +* direction of the transfer if they used vendor specific commands.
50931 +* ha = adapter block pointer.
50932 +* sp = SCSI Request Block structure pointer.
50935 +* 0 = success, was able to issue command.
50938 +qla2x00_set_vend_direction(scsi_qla_host_t *ha,
50939 + Scsi_Cmnd *cmd, cmd_entry_t *pkt)
50941 + dga_scdb_t *dsp = (dga_scdb_t *) cmd;
50943 + if (cmd->data_cmnd[0] == UCSCSI_DCMD) {
50944 + switch( dsp->dsc_dcmd.mb_Command ) {
50945 + case DACMD_WRITE_CONF_ONDISK:
50946 + case DACMD_WRITE_CONFIG:
50947 + case DACMD_WRITE_CONF2:
50948 + case DACMD_WRITE_CONFLABEL:
50949 + case DACMD_WRITE_CONFIG_V3x:
50950 + case DACMD_ADD_CONFIG_V2x:
50951 + case DACMD_ADD_CONFIG_V3x:
50952 + case DACMD_STORE_IMAGE:
50953 + case DACMD_ADD_CAPACITY:
50954 + case DACMD_WRITE_IOPORT:
50955 + case DACMD_S2S_WRITEFULLCONF:
50956 + case DACMD_S2S_ADDFULLCONF:
50957 + case DACMD_S2S_WRITELUNMAP_OLD:
50958 + case DACMD_S2S_WRITELUNMAP:
50959 + case DACMD_S2S_WRITE_IOPORT:
50960 + case DACMD_WRITE_V3x:
50961 + case DACMD_S2S_WRITESIG:
50962 + pkt->control_flags |= BIT_6;
50965 + pkt->control_flags |= BIT_5;
50968 + pkt->control_flags |= BIT_5;
50971 --- /dev/null Thu Apr 11 07:25:15 2002
50972 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_version.h Thu Jul 3 15:34:42 2003
50974 +/******************************************************************************
50975 + * QLOGIC LINUX SOFTWARE
50977 + * QLogic ISP2x00 device driver for Linux 2.5.x
50978 + * Copyright (C) 2003 Qlogic Corporation
50979 + * (www.qlogic.com)
50981 + * This program is free software; you can redistribute it and/or modify it
50982 + * under the terms of the GNU General Public License as published by the
50983 + * Free Software Foundation; either version 2, or (at your option) any
50986 + * This program is distributed in the hope that it will be useful, but
50987 + * WITHOUT ANY WARRANTY; without even the implied warranty of
50988 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
50989 + * General Public License for more details.
50991 + ******************************************************************************/
50996 +#define QLA2100_VERSION "8.00.00b1-debug"
50998 +#define QLA2100_VERSION "8.00.00b1"
51001 +#define QLA_DRIVER_MAJOR_VER 8
51002 +#define QLA_DRIVER_MINOR_VER 0
51003 +#define QLA_DRIVER_PATCH_VER 0
51004 +#define QLA_DRIVER_BETA_VER 1
51005 --- /dev/null Thu Apr 11 07:25:15 2002
51006 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qla_xioct.c Thu Jul 3 15:34:42 2003
51008 +/******************************************************************************
51009 + * QLOGIC LINUX SOFTWARE
51011 + * QLogic ISP2x00 device driver for Linux 2.5.x
51012 + * Copyright (C) 2003 Qlogic Corporation
51013 + * (www.qlogic.com)
51015 + * This program is free software; you can redistribute it and/or modify it
51016 + * under the terms of the GNU General Public License as published by the
51017 + * Free Software Foundation; either version 2, or (at your option) any
51020 + * This program is distributed in the hope that it will be useful, but
51021 + * WITHOUT ANY WARRANTY; without even the implied warranty of
51022 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
51023 + * General Public License for more details.
51025 + ******************************************************************************/
51028 +#include "qla_os.h"
51029 +#include "qla_def.h"
51031 +#include "inioct.h"
51034 +#define QLA_PT_CMD_TOV (60) /* firmware timeout */
51035 +#define QLA_PT_CMD_DRV_TOV (QLA_PT_CMD_TOV + 1) /* drvr timeout */
51036 +#define QLA_IOCTL_ACCESS_WAIT_TIME (QLA_PT_CMD_DRV_TOV + 2) /* wait_q tov */
51037 +#define QLA_INITIAL_IOCTLMEM_SIZE (2 * PAGE_SIZE)
51038 +#define QLA_IOCTL_SCRAP_SIZE 2048 /* scrap memory for local use. */
51040 +/* ELS related defines */
51041 +#define FC_HEADER_LEN 24
51042 +#define ELS_RJT_LENGTH 0x08 /* 8 */
51043 +#define ELS_RPS_ACC_LENGTH 0x40 /* 64 */
51044 +#define ELS_RLS_ACC_LENGTH 0x1C /* 28 */
51046 +/* ELS cmd Reply Codes */
51047 +#define ELS_STAT_LS_RJT 0x01
51048 +#define ELS_STAT_LS_ACC 0x02
51050 +#define IOCTL_INVALID_STATUS 0xffff
51053 +int qla2x00_alloc_ioctl_mem(scsi_qla_host_t *);
51054 +void qla2x00_free_ioctl_mem(scsi_qla_host_t *);
51056 +int qla2x00_get_ioctl_scrap_mem(scsi_qla_host_t *, void **, uint32_t);
51057 +void qla2x00_free_ioctl_scrap_mem(scsi_qla_host_t *);
51060 + * Local prototypes
51062 +static int qla2x00_get_new_ioctl_dma_mem(scsi_qla_host_t *, uint32_t);
51064 +#if defined(ISP2300)
51065 +static uint8_t qla2x00_get_next_free_pub_id(scsi_qla_host_t *, uint16_t *);
51066 +static uint8_t qla2x00_host_relogin(scsi_qla_host_t *, fcdev_t *);
51069 +static int qla2x00_find_curr_ha(uint16_t, scsi_qla_host_t **);
51071 +static int qla2x00_get_driver_specifics(EXT_IOCTL *);
51073 +static int qla2x00_aen_reg(scsi_qla_host_t *, EXT_IOCTL *, int);
51074 +static int qla2x00_aen_get(scsi_qla_host_t *, EXT_IOCTL *, int);
51076 +static int qla2x00_query(scsi_qla_host_t *, EXT_IOCTL *, int);
51077 +static int qla2x00_query_hba_node(scsi_qla_host_t *, EXT_IOCTL *, int);
51078 +static int qla2x00_query_hba_port(scsi_qla_host_t *, EXT_IOCTL *, int);
51079 +static int qla2x00_query_disc_port(scsi_qla_host_t *, EXT_IOCTL *, int);
51080 +static int qla2x00_query_disc_tgt(scsi_qla_host_t *, EXT_IOCTL *, int);
51081 +static int qla2x00_query_chip(scsi_qla_host_t *, EXT_IOCTL *, int);
51083 +static int qla2x00_get_data(scsi_qla_host_t *, EXT_IOCTL *, int);
51084 +static int qla2x00_get_statistics(scsi_qla_host_t *, EXT_IOCTL *, int);
51085 +static int qla2x00_get_fc_statistics(scsi_qla_host_t *, EXT_IOCTL *, int);
51086 +static int qla2x00_get_port_summary(scsi_qla_host_t *, EXT_IOCTL *, int);
51087 +static int qla2x00_query_driver(scsi_qla_host_t *, EXT_IOCTL *, int);
51088 +static int qla2x00_query_fw(scsi_qla_host_t *, EXT_IOCTL *, int);
51090 +#if defined(ISP2300)
51091 +static int qla2x00_send_els_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51093 +static int qla2x00_send_fcct(scsi_qla_host_t *, EXT_IOCTL *, int);
51094 +static int qla2x00_start_ms_cmd(scsi_qla_host_t *, EXT_IOCTL *, srb_t *,
51095 + EXT_ELS_PT_REQ *);
51097 +static int qla2x00_wwpn_to_scsiaddr(scsi_qla_host_t *, EXT_IOCTL *, int);
51098 +static int qla2x00_scsi_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51099 +static int qla2x00_sc_scsi_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51100 +static int qla2x00_sc_fc_scsi_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51101 +static int qla2x00_sc_scsi3_passthru(scsi_qla_host_t *, EXT_IOCTL *, int);
51103 +static int qla2x00_send_els_rnid(scsi_qla_host_t *, EXT_IOCTL *, int);
51104 +static int qla2x00_get_rnid_params(scsi_qla_host_t *, EXT_IOCTL *, int);
51105 +static int qla2x00_set_host_data(scsi_qla_host_t *, EXT_IOCTL *, int);
51106 +static int qla2x00_set_rnid_params(scsi_qla_host_t *, EXT_IOCTL *, int);
51108 +static void qla2x00_waitq_sem_timeout(unsigned long);
51109 +static uint8_t qla2x00_get_ioctl_access(scsi_qla_host_t *, uint32_t);
51110 +static uint8_t qla2x00_release_ioctl_access(scsi_qla_host_t *);
51112 +static void qla2x00_wait_q_memb_alloc(scsi_qla_host_t *, wait_q_t **);
51113 +static void qla2x00_wait_q_memb_free(scsi_qla_host_t *, wait_q_t *);
51114 +static uint8_t qla2x00_wait_q_add(scsi_qla_host_t *, wait_q_t **);
51115 +static void qla2x00_wait_q_get_next(scsi_qla_host_t *, wait_q_t **);
51116 +static void qla2x00_wait_q_remove(scsi_qla_host_t *, wait_q_t *);
51120 + * qla2x00_ioctl_sleep_done
51123 + * This is the callback function to wakeup ioctl completion semaphore
51124 + * for the ioctl request that is waiting.
51127 + * sem - pointer to the ioctl completion semaphore.
51132 +qla2x00_ioctl_sleep_done(struct semaphore * sem)
51134 + DEBUG9(printk("%s: entered.\n", __func__);)
51136 + if (sem != NULL){
51137 + DEBUG9(printk("ioctl_sleep: wake up sem.\n");)
51141 + DEBUG9(printk("%s: exiting.\n", __func__);)
51145 + * qla2x00_ioctl_sem_init
51148 + * Initialize the ioctl timer and semaphore used to wait for passthru
51152 + * ha - pointer to scsi_qla_host_t structure used for initialization.
51158 +qla2x00_ioctl_sem_init(scsi_qla_host_t *ha)
51160 + init_MUTEX_LOCKED(&ha->ioctl->cmpl_sem);
51161 + init_timer(&(ha->ioctl->cmpl_timer));
51162 + ha->ioctl->cmpl_timer.data = (unsigned long)&ha->ioctl->cmpl_sem;
51163 + ha->ioctl->cmpl_timer.function =
51164 + (void (*)(unsigned long))qla2x00_ioctl_sleep_done;
51168 + * qla2x00_scsi_pt_done
51171 + * Resets ioctl progress flag and wakes up the ioctl completion semaphore.
51174 + * pscsi_cmd - pointer to the passthru Scsi cmd structure which has completed.
51179 +qla2x00_scsi_pt_done(Scsi_Cmnd *pscsi_cmd)
51181 + struct Scsi_Host *host;
51182 + scsi_qla_host_t *ha;
51184 + host = pscsi_cmd->device->host;
51185 + ha = (scsi_qla_host_t *) host->hostdata;
51187 + DEBUG9(printk("%s post function called OK\n", __func__);)
51189 + /* save detail status for IOCTL reporting */
51190 + ha->ioctl->SCSIPT_InProgress = 0;
51191 + ha->ioctl->ioctl_tov = 0;
51193 + up(&ha->ioctl->cmpl_sem);
51195 + DEBUG9(printk("%s: exiting.\n", __func__);)
51201 + * qla2x00_msiocb_done
51204 + * Resets MSIOCB ioctl progress flag and wakes up the ioctl completion
51208 + * cmd - pointer to the passthru Scsi cmd structure which has completed.
51213 +qla2x00_msiocb_done(Scsi_Cmnd *pscsi_cmd)
51215 + struct Scsi_Host *host;
51216 + scsi_qla_host_t *ha;
51218 + host = pscsi_cmd->device->host;
51219 + ha = (scsi_qla_host_t *) host->hostdata;
51221 + DEBUG9(printk("%s post function called OK\n", __func__);)
51223 + ha->ioctl->MSIOCB_InProgress = 0;
51224 + ha->ioctl->ioctl_tov = 0;
51226 + up(&ha->ioctl->cmpl_sem);
51228 + DEBUG9(printk("%s: exiting.\n", __func__);)
51233 +/*************************************************************************
51237 + * Performs additional ioctl requests not satisfied by the upper levels.
51240 + * ret = 0 Success
51241 + * ret != 0 Failed; detailed status copied to EXT_IOCTL structure
51243 + *************************************************************************/
51245 +qla2x00_ioctl(Scsi_Device *dev, int cmd, void *arg)
51248 + int tmp_rval = 0;
51249 + int ret = -EINVAL;
51252 + uint8_t tempbuf[8];
51258 + scsi_qla_host_t *ha;
51261 + DEBUG9(printk("%s: entry to command (%x), arg (%p)\n",
51262 + __func__, cmd, arg);)
51264 + /* Catch any non-exioct ioctls */
51265 + if (_IOC_TYPE(cmd) != QLMULTIPATH_MAGIC) {
51269 + ret = verify_area(VERIFY_READ, (void *)arg, sizeof(EXT_IOCTL));
51271 + DEBUG9_10(printk("%s: ERROR VERIFY_READ EXT_IOCTL "
51272 + "sturct. cmd=%d arg=%p.\n", __func__, cmd, arg);)
51276 + /* Allocate ioctl structure buffer to support multiple concurrent
51279 + pext = KMEM_ZALLOC(sizeof(EXT_IOCTL), 16);
51280 + if (pext == NULL) {
51282 + printk(KERN_WARNING
51283 + "qla2x00: ERROR in main ioctl buffer allocation.\n");
51284 + return (-ENOMEM);
51287 + /* copy in application layer EXT_IOCTL */
51288 + ret = copy_from_user(pext, arg, sizeof(EXT_IOCTL));
51290 + DEBUG9_10(printk("%s: ERROR COPY_FROM_USER "
51291 + "EXT_IOCTL sturct. cmd=%d arg=%p.\n",
51292 + __func__, cmd, arg);)
51294 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51298 + /* Verify before update status fields in EXT_IOCTL struct. */
51299 + ret = verify_area(VERIFY_WRITE, (void *)arg, sizeof(EXT_IOCTL));
51301 + DEBUG9_10(printk("%s: ERROR VERIFY_WRITE EXT_IOCTL "
51302 + "sturct. cmd=%d arg=%p.\n", __func__, cmd, arg);)
51304 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51308 + /* check signature of this ioctl */
51309 + temp = (uint8_t *) &pext->Signature;
51311 + for (i = 0; i < 4; i++, temp++)
51312 + tempbuf[i] = *temp;
51314 + if ((tempbuf[0] == 'Q') && (tempbuf[1] == 'L') &&
51315 + (tempbuf[2] == 'O') && (tempbuf[3] == 'G'))
51320 + if (status != 0) {
51321 + DEBUG9_10(printk("%s: signature did not match. "
51322 + "cmd=%d arg=%p.\n", __func__, cmd, arg);)
51323 + pext->Status = EXT_STATUS_INVALID_PARAM;
51324 + copy_to_user((void *)arg, (void *)pext, sizeof(EXT_IOCTL));
51326 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51327 + return (-EINVAL);
51330 + /* check version of this ioctl */
51331 + if (pext->Version > EXT_VERSION) {
51332 + printk(KERN_WARNING
51333 + "qla2x00: ioctl interface version not supported = %d.\n",
51335 + pext->Status = EXT_STATUS_UNSUPPORTED_VERSION;
51336 + copy_to_user((void *)arg, (void *)pext, sizeof(EXT_IOCTL));
51338 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51339 + return (-EINVAL);
51342 + /* check for special cmds used during application's setup time. */
51344 + case EXT_CC_STARTIOCTL:
51345 + DEBUG9(printk("%s: got startioctl command.\n", __func__);)
51347 + pext->Instance = num_hosts;
51348 + pext->Status = EXT_STATUS_OK;
51349 + ret = copy_to_user((void *)arg, (void *)pext,
51350 + sizeof(EXT_IOCTL));
51352 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51355 + case EXT_CC_SETINSTANCE:
51356 + /* This call is used to return the HBA's host number to
51357 + * ioctl caller. All subsequent ioctl commands will put
51358 + * the host number in HbaSelect field to tell us which
51359 + * HBA is the destination.
51361 + if (pext->Instance < num_hosts) {
51362 + if (!((uint32_t)pext->VendorSpecificData &
51363 + EXT_DEF_USE_HBASELECT)) {
51364 + /* Backward compatible code. */
51365 + apiHBAInstance = pext->Instance;
51369 + * Return host number via pext->HbaSelect for
51370 + * specified API instance number.
51372 + if (qla2x00_find_curr_ha(pext->Instance, &ha) != 0) {
51373 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51374 + ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51375 + DEBUG9_10(printk("%s: SETINSTANCE invalid inst "
51376 + "%d. num_hosts=%d ha=%p ret=%d.\n",
51377 + __func__, pext->Instance, num_hosts, ha,
51380 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51381 + return (ret); /* ioctl completed ok */
51384 + pext->HbaSelect = ha->host_no;
51385 + pext->Status = EXT_STATUS_OK;
51387 + DEBUG9(printk("%s: Matching instance %d to hba "
51388 + "%ld.\n", __func__, pext->Instance, ha->host_no);)
51390 + DEBUG9_10(printk("%s: ERROR EXT_SETINSTANCE."
51391 + " Instance=%d num_hosts=%d ha=%p.\n",
51392 + __func__, pext->Instance, num_hosts, ha);)
51394 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51396 + ret = copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51397 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51399 + DEBUG9(printk("%s: SETINSTANCE exiting. ret=%d.\n",
51404 + case EXT_CC_DRIVER_SPECIFIC:
51405 + ret = qla2x00_get_driver_specifics(pext);
51406 + tmp_rval = copy_to_user(arg, (void *)pext, sizeof(EXT_IOCTL));
51411 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51418 + if (!((uint32_t)pext->VendorSpecificData & EXT_DEF_USE_HBASELECT)) {
51419 + /* Backward compatible code. */
51420 + /* Will phase out soon. */
51422 + /* Check for valid apiHBAInstance (set previously by
51423 + * EXT_SETINSTANCE or default 0) and set ha context
51424 + * for this IOCTL.
51426 + if (qla2x00_find_curr_ha(apiHBAInstance, &ha) != 0) {
51428 + DEBUG9_10(printk("%s: ERROR matching apiHBAInstance "
51429 + "%d to an HBA Instance.\n",
51430 + __func__, pext->HbaSelect);)
51432 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51433 + copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51435 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51436 + return (-EINVAL);
51439 + DEBUG9(printk("%s: active apiHBAInstance=%d host_no=%ld "
51440 + "CC=%x SC=%x.\n",
51441 + __func__, apiHBAInstance, ha->host_no, cmd, pext->SubCode);)
51444 + /* Use HbaSelect value to get a matching ha instance
51445 + * for this ioctl command.
51447 + if (qla2x00_find_curr_ha(pext->HbaSelect, &ha) != 0) {
51449 + DEBUG9_10(printk("%s: ERROR matching pext->HbaSelect "
51450 + "%d to an HBA Instance.\n",
51451 + __func__, pext->HbaSelect);)
51453 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
51454 + copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51456 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51457 + return (-EINVAL);
51460 + DEBUG9(printk("%s: active host_inst=%ld CC=%x SC=%x.\n",
51461 + __func__, ha->instance, cmd, pext->SubCode);)
51465 + * Get permission to process ioctl command. Only one will proceed
51468 + if (qla2x00_get_ioctl_access(ha, QLA_IOCTL_ACCESS_WAIT_TIME) != 0) {
51469 + /* error timed out */
51470 + DEBUG9_10(printk("%s: ERROR timeout getting ioctl "
51471 + "access. host no=%d.\n", __func__, pext->HbaSelect);)
51473 + pext->Status = EXT_STATUS_BUSY;
51474 + copy_to_user(arg, pext, sizeof(EXT_IOCTL));
51476 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51481 + while (test_bit(CFG_ACTIVE, &ha->cfg_flags) || ha->dpc_active) {
51482 + if( signal_pending(current) )
51483 + break; /* get out */
51485 + set_current_state(TASK_INTERRUPTIBLE);
51486 + schedule_timeout(HZ);
51489 + switch (cmd) { /* switch on EXT IOCTL COMMAND CODE */
51491 + case EXT_CC_QUERY:
51492 + DEBUG9(printk("%s: got query command.\n", __func__);)
51494 + ret = qla2x00_query(ha, pext, 0);
51498 + case EXT_CC_GET_DATA:
51499 + DEBUG9(printk("%s: got get_data command.\n", __func__);)
51501 + ret = qla2x00_get_data(ha, pext, 0);
51505 + case EXT_CC_SEND_FCCT_PASSTHRU:
51506 + DEBUG9(printk("%s: got CT passthru cmd.\n", __func__));
51508 + ret = qla2x00_send_fcct(ha, pext, 0);
51512 + case EXT_CC_SEND_SCSI_PASSTHRU:
51513 + DEBUG9(printk("%s: got SCSI passthru cmd.\n", __func__));
51515 + ret = qla2x00_scsi_passthru(ha, pext, mode);
51519 + case EXT_CC_REG_AEN:
51520 + ret = qla2x00_aen_reg(ha, pext, mode);
51524 + case EXT_CC_GET_AEN:
51525 + ret = qla2x00_aen_get(ha, pext, mode);
51529 + case EXT_CC_WWPN_TO_SCSIADDR:
51530 + ret = qla2x00_wwpn_to_scsiaddr(ha, pext, 0);
51533 + case EXT_CC_SEND_ELS_RNID:
51534 + ret = qla2x00_send_els_rnid(ha, pext, mode);
51537 + case EXT_CC_SET_DATA:
51538 + ret = qla2x00_set_host_data(ha, pext, mode);
51541 + case INT_CC_READ_NVRAM:
51542 + ret = qla2x00_read_nvram(ha, pext, mode);
51546 + case INT_CC_UPDATE_NVRAM:
51547 + ret = qla2x00_update_nvram(ha, pext, mode);
51551 + case INT_CC_LOOPBACK:
51552 + ret = qla2x00_send_loopback(ha, pext, mode);
51556 + case INT_CC_READ_OPTION_ROM:
51557 + ret = qla2x00_read_option_rom(ha, pext, mode);
51561 + case INT_CC_UPDATE_OPTION_ROM:
51562 + ret = qla2x00_update_option_rom(ha, pext, mode);
51566 +#if defined(ISP2300)
51567 + case EXT_CC_SEND_ELS_PASSTHRU:
51568 + DEBUG9(printk("%s: got ELS passthru cmd.\n", __func__));
51570 + ret = qla2x00_send_els_passthru(ha, pext, 0);
51575 + /* all others go here */
51577 + case EXT_CC_PLATFORM_REG:
51581 + /* Failover IOCTLs */
51582 + case FO_CC_GET_PARAMS:
51583 + case FO_CC_SET_PARAMS:
51584 + case FO_CC_GET_PATHS:
51585 + case FO_CC_SET_CURRENT_PATH:
51586 + case FO_CC_RESET_HBA_STAT:
51587 + case FO_CC_GET_HBA_STAT:
51588 + case FO_CC_GET_LUN_DATA:
51589 + case FO_CC_SET_LUN_DATA:
51590 + case FO_CC_GET_TARGET_DATA:
51591 + case FO_CC_SET_TARGET_DATA:
51592 + DEBUG9(printk("%s: failover arg (%p):\n", __func__, arg);)
51594 + qla2x00_fo_ioctl(ha, cmd, pext, mode);
51599 + pext->Status = EXT_STATUS_INVALID_REQUEST;
51602 + } /* end of CC decode switch */
51604 + /* Always try to copy values back regardless what happened before. */
51605 + tmp_rval = copy_to_user(arg, (void *)pext, sizeof(EXT_IOCTL));
51610 + DEBUG9(printk("%s: exiting. tmp_rval(%d) ret(%d)\n",
51611 + __func__, tmp_rval, ret);)
51613 + qla2x00_release_ioctl_access(ha);
51615 + KMEM_FREE(pext, sizeof(EXT_IOCTL));
51620 + * qla2x00_alloc_ioctl_mem
51621 + * Allocates memory needed by IOCTL code.
51624 + * ha = adapter state pointer.
51627 + * qla2x00 local function return status code.
51630 + * Kernel context.
51633 +qla2x00_alloc_ioctl_mem(scsi_qla_host_t *ha)
51635 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51636 + __func__, ha->host_no, ha->instance);)
51638 + if (qla2x00_get_new_ioctl_dma_mem(ha, QLA_INITIAL_IOCTLMEM_SIZE) !=
51639 + QL_STATUS_SUCCESS) {
51640 + printk(KERN_WARNING
51641 + "qla2x00: ERROR in ioctl physical memory allocation\n");
51643 + return QL_STATUS_RESOURCE_ERROR;
51646 + /* Allocate context memory buffer */
51647 + ha->ioctl = KMEM_ZALLOC(sizeof(hba_ioctl_context), 11);
51648 + if (ha->ioctl == NULL) {
51650 + printk(KERN_WARNING
51651 + "qla2x00: ERROR in ioctl context allocation.\n");
51652 + return QL_STATUS_RESOURCE_ERROR;
51655 + /* Allocate AEN tracking buffer */
51656 + ha->ioctl->aen_tracking_queue =
51657 + KMEM_ZALLOC(EXT_DEF_MAX_AEN_QUEUE * sizeof(EXT_ASYNC_EVENT), 12);
51658 + if (ha->ioctl->aen_tracking_queue == NULL) {
51659 + printk(KERN_WARNING
51660 + "qla2x00: ERROR in ioctl aen_queue allocation.\n");
51661 + return QL_STATUS_RESOURCE_ERROR;
51664 + ha->ioctl->ioctl_tq = KMEM_ZALLOC(sizeof(os_tgt_t), 13);
51665 + if (ha->ioctl->ioctl_tq == NULL) {
51666 + printk(KERN_WARNING
51667 + "qla2x00: ERROR in ioctl tgt queue allocation.\n");
51668 + return QL_STATUS_RESOURCE_ERROR;
51671 + ha->ioctl->ioctl_lq = KMEM_ZALLOC(sizeof(os_lun_t), 14);
51672 + if (ha->ioctl->ioctl_lq == NULL) {
51673 + printk(KERN_WARNING
51674 + "qla2x00: ERROR in ioctl lun queue allocation.\n");
51675 + return QL_STATUS_RESOURCE_ERROR;
51677 + /*INIT_LIST_HEAD(&(ha->ioctl->ioctl_lq->cmd));*/
51679 + /* Pick the largest size we'll need per ha of all ioctl cmds.
51680 + * Use this size when freeing.
51682 + ha->ioctl->scrap_mem = KMEM_ZALLOC(QLA_IOCTL_SCRAP_SIZE, 15);
51683 + if (ha->ioctl->scrap_mem == NULL) {
51684 + printk(KERN_WARNING
51685 + "qla2x00: ERROR in ioctl scrap_mem allocation.\n");
51686 + return QL_STATUS_RESOURCE_ERROR;
51688 + ha->ioctl->scrap_mem_size = QLA_IOCTL_SCRAP_SIZE;
51689 + ha->ioctl->scrap_mem_used = 0;
51690 + DEBUG9(printk("%s(%ld): scrap_mem_size=%d.\n",
51691 + __func__, ha->host_no, ha->ioctl->scrap_mem_size);)
51693 + ha->ioctl->ioctl_lq->q_state = LUN_STATE_READY;
51694 + ha->ioctl->ioctl_lq->q_lock = SPIN_LOCK_UNLOCKED;
51696 + /* Init wait_q fields */
51697 + ha->ioctl->wait_q_lock = SPIN_LOCK_UNLOCKED;
51699 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
51700 + __func__, ha->host_no, ha->instance);)
51702 + return QL_STATUS_SUCCESS;
51706 + * qla2x00_get_new_ioctl_dma_mem
51707 + * Allocates dma memory of the specified size.
51708 + * This is done to replace any previously allocated ioctl dma buffer.
51711 + * ha = adapter state pointer.
51714 + * qla2x00 local function return status code.
51717 + * Kernel context.
51720 +qla2x00_get_new_ioctl_dma_mem(scsi_qla_host_t *ha, uint32_t size)
51722 + DEBUG9(printk("%s entered.\n", __func__);)
51724 + if (ha->ioctl_mem) {
51725 + DEBUG9(printk("%s: ioctl_mem was previously allocated. "
51726 + "Dealloc old buffer.\n", __func__);)
51728 + /* free the memory first */
51729 + pci_free_consistent(ha->pdev, ha->ioctl_mem_size, ha->ioctl_mem,
51730 + ha->ioctl_mem_phys);
51733 + /* Get consistent memory allocated for ioctl I/O operations. */
51734 + ha->ioctl_mem = pci_alloc_consistent(ha->pdev,
51735 + size, &ha->ioctl_mem_phys);
51737 + if (ha->ioctl_mem == NULL) {
51738 + printk(KERN_WARNING
51739 + "%s: ERROR in ioctl physical memory allocation. "
51740 + "Requested length=%x.\n", __func__, size);
51742 + ha->ioctl_mem_size = 0;
51743 + return QL_STATUS_RESOURCE_ERROR;
51745 + ha->ioctl_mem_size = size;
51747 + DEBUG9(printk("%s exiting.\n", __func__);)
51749 + return QL_STATUS_SUCCESS;
51753 + * qla2x00_free_ioctl_mem
51754 + * Frees memory used by IOCTL code for the specified ha.
51757 + * ha = adapter state pointer.
51760 + * Kernel context.
51763 +qla2x00_free_ioctl_mem(scsi_qla_host_t *ha)
51765 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51766 + __func__, ha->host_no, ha->instance);)
51768 + if (ha->ioctl != NULL) {
51770 + if (ha->ioctl->scrap_mem != NULL) {
51771 + /* The size here must match up to what we
51772 + * allocated before.
51774 + KMEM_FREE(ha->ioctl->scrap_mem,
51775 + ha->ioctl->scrap_mem_size);
51776 + ha->ioctl->scrap_mem = NULL;
51777 + ha->ioctl->scrap_mem_size = 0;
51780 + if (ha->ioctl->ioctl_tq != NULL) {
51781 + KMEM_FREE(ha->ioctl->ioctl_tq, sizeof(os_tgt_t));
51782 + ha->ioctl->ioctl_tq = NULL;
51785 + if (ha->ioctl->ioctl_lq != NULL) {
51786 + KMEM_FREE(ha->ioctl->ioctl_lq, sizeof(os_lun_t));
51787 + ha->ioctl->ioctl_lq = NULL;
51790 + if (ha->ioctl->aen_tracking_queue != NULL) {
51791 + KMEM_FREE(ha->ioctl->aen_tracking_queue,
51792 + EXT_DEF_MAX_AEN_QUEUE * sizeof(EXT_ASYNC_EVENT));
51793 + ha->ioctl->aen_tracking_queue = NULL;
51796 + KMEM_FREE(ha->ioctl, sizeof(hba_ioctl_context));
51797 + ha->ioctl = NULL;
51800 + /* free memory allocated for ioctl operations */
51801 + pci_free_consistent(ha->pdev, ha->ioctl_mem_size, ha->ioctl_mem,
51802 + ha->ioctl_mem_phys);
51803 + ha->ioctl_mem = NULL;
51805 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
51806 + __func__, ha->host_no, ha->instance);)
51811 + * qla2x00_get_ioctl_scrap_mem
51812 + * Returns pointer to memory of the specified size from the scrap buffer.
51813 + * This can be called multiple times before the free call as long
51814 + * as the memory is to be used by the same ioctl command and
51815 + * there's still memory left in the scrap buffer.
51818 + * ha = adapter state pointer.
51819 + * ppmem = pointer to return a buffer pointer.
51820 + * size = size of buffer to return.
51823 + * qla2x00 local function return status code.
51826 + * Kernel context.
51829 +qla2x00_get_ioctl_scrap_mem(scsi_qla_host_t *ha, void **ppmem, uint32_t size)
51831 + int ret = QL_STATUS_SUCCESS;
51832 + uint32_t free_mem;
51834 + DEBUG9(printk("%s(%ld): inst=%ld entered. size=%d.\n",
51835 + __func__, ha->host_no, ha->instance, size);)
51837 + free_mem = ha->ioctl->scrap_mem_size - ha->ioctl->scrap_mem_used;
51838 + if (free_mem >= size) {
51839 + *ppmem = ha->ioctl->scrap_mem + ha->ioctl->scrap_mem_used;
51840 + ha->ioctl->scrap_mem_used += size;
51842 + DEBUG10(printk("%s(%ld): no more scrap memory.\n",
51843 + __func__, ha->host_no);)
51845 + ret = QL_STATUS_ERROR;
51848 + DEBUG9(printk("%s(%ld): exiting. ret=%d.\n",
51849 + __func__, ha->host_no, ret);)
51855 + * qla2x00_free_ioctl_scrap_mem
51856 + * Makes the entire scrap buffer free for use.
51859 + * ha = adapter state pointer.
51862 + * qla2x00 local function return status code.
51866 +qla2x00_free_ioctl_scrap_mem(scsi_qla_host_t *ha)
51868 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51869 + __func__, ha->host_no, ha->instance);)
51871 + memset(ha->ioctl->scrap_mem, 0, ha->ioctl->scrap_mem_size);
51872 + ha->ioctl->scrap_mem_used = 0;
51874 + DEBUG9(printk("%s(%ld): exiting.\n",
51875 + __func__, ha->host_no);)
51878 +#if defined(ISP2300)
51880 + * qla2x00_get_next_free_pub_id
51881 + * Find the next free public loop ID to use, starting from the old
51882 + * loop ID passed in. If the old loop ID is invalid, this function
51883 + * will start the search from beginning.
51886 + * ha = adapter block pointer.
51887 + * ploop_id = pointer to a 16bit var containing the old loop
51888 + * ID which is also to be used to get the new loop ID.
51891 + * QL_STATUS_SUCCESS - Found an usable loop ID
51892 + * QL_STATUS_RESOURCE_ERROR - No more free loop ID
51895 +qla2x00_get_next_free_pub_id(scsi_qla_host_t *ha, uint16_t *ploop_id)
51897 + uint8_t retval = QL_STATUS_SUCCESS;
51901 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51902 + __func__, ha->host_no, ha->instance);)
51904 + old_id = *ploop_id;
51905 + if (old_id >= LAST_SNS_LOOP_ID) {
51906 + /* set a starting point */
51907 + old_id = ha->min_external_loopid;
51910 + for (index = old_id; index < LAST_SNS_LOOP_ID; index++) {
51911 + if (!ha->fabricid[index].in_use) {
51912 + ha->fabricid[index].in_use = TRUE;
51913 + *ploop_id = index;
51914 + DEBUG9(printk("%s(%ld): found Lid %02x.\n",
51915 + __func__, ha->host_no, index);)
51919 + if (index >= LAST_SNS_LOOP_ID) {
51920 + /* no more free ID */
51921 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR no more free LID "
51922 + "available.\n", __func__, ha->host_no, ha->instance);)
51924 + retval = QL_STATUS_RESOURCE_ERROR;
51927 + DEBUG9(printk("%s(%ld): inst=%ld exiting. retval=%d.\n",
51928 + __func__, ha->host_no, ha->instance, retval);)
51934 + * qla2x00_host_relogin
51935 + * Issue fabric login command to a host in the host_db which
51936 + * had somehow been lost before. All updates are passed back
51937 + * via pdevice. No update will be done to any of ha's database.
51940 + * ha = adapter block pointer.
51941 + * pdevice = pointer to FC device type structure.
51944 + * QL_STATUS_SUCCESS - Login successfully
51945 + * QL_STATUS_ERROR - Login failed
51946 + * QL_STATUS_FATAL_ERROR - Fatal error
51949 +qla2x00_host_relogin(scsi_qla_host_t *ha, fcdev_t *pdevice)
51951 + uint8_t retval = QL_STATUS_SUCCESS;
51952 + uint16_t status[3];
51953 + uint16_t tmp_loop_id;
51955 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
51956 + __func__, ha->host_no, ha->instance);)
51958 + /* pdevice->loop_id is assumed to be straight from the current
51959 + * database content.
51961 + tmp_loop_id = pdevice->loop_id & 0xff;
51962 + if (tmp_loop_id >= LAST_SNS_LOOP_ID) {
51963 + /* Invalid value. We need to find a valid ID to use. */
51964 + if (qla2x00_get_next_free_pub_id(ha, &tmp_loop_id) != 0) {
51965 + /* no more free IDs to use */
51966 + DEBUG9_10(printk("%s(%ld): inst=%ld no free loop_id "
51967 + " available for login.\n",
51968 + __func__, ha->host_no, ha->instance);)
51970 + return QL_STATUS_ERROR;
51975 + DEBUG9(printk("%s(%ld): Login w/loop id 0x%02x for port "
51976 + "%02x%02x%02x\n",
51977 + __func__, ha->host_no, pdevice->loop_id,
51978 + pdevice->d_id.b.domain,
51979 + pdevice->d_id.b.area,
51980 + pdevice->d_id.b.al_pa));
51982 + /* Login device on switch. */
51983 + qla2x00_login_fabric(ha,
51984 + tmp_loop_id, pdevice->d_id.b.domain,
51985 + pdevice->d_id.b.area, pdevice->d_id.b.al_pa,
51988 + if (status[0] != MBS_CMD_CMP &&
51989 + status[0] != MBS_PORT_ID_IN_USE &&
51990 + status[0] != MBS_LOOP_ID_IN_USE) {
51992 + DEBUG9_10(printk("%s(%ld): inst=%ld "
51993 + "ERROR login status[0]=%x status[1]=%x.\n",
51994 + __func__, ha->host_no, ha->instance, status[0],
51997 + retval = QL_STATUS_FATAL_ERROR;
52001 + if (status[0] == MBS_CMD_CMP) {
52002 + DEBUG9(printk("%s(%ld): inst=%ld "
52003 + " host login success; loop_id=%x.\n",
52004 + __func__, ha->host_no, ha->instance, tmp_loop_id);)
52006 + pdevice->loop_id = tmp_loop_id;
52007 + retval = QL_STATUS_SUCCESS;
52010 + } else if (status[0] == MBS_PORT_ID_IN_USE) {
52011 + ha->fabricid[tmp_loop_id].in_use = FALSE;
52012 + tmp_loop_id = status[1];
52014 + DEBUG9(printk("%s(%ld): inst=%ld "
52015 + "port %02x%02x%02x already using loop id=0x%02x in "
52016 + "f/w database. Retrying.\n",
52017 + __func__, ha->host_no, ha->instance,
52018 + pdevice->d_id.b.domain,
52019 + pdevice->d_id.b.area,
52020 + pdevice->d_id.b.al_pa,
52023 + if (tmp_loop_id <= LAST_SNS_LOOP_ID) {
52024 + ha->fabricid[tmp_loop_id].in_use = TRUE;
52027 + DEBUG9_10(printk("%s(%ld): inst=%ld "
52028 + "PORT_ID_IN_USE - invalid loop id %02x "
52030 + __func__, ha->host_no, ha->instance,
52031 + pdevice->loop_id);)
52032 + retval = QL_STATUS_ERROR;
52036 + } else if (status[0] == MBS_LOOP_ID_IN_USE) {
52037 + /* loop id already used by others; try another one */
52038 + DEBUG9_10(printk("%s(%ld): inst=%ld "
52039 + "loop id %02x already used.\n",
52040 + __func__, ha->host_no, ha->instance,
52041 + pdevice->loop_id);)
52043 + /* Search for another usable loop_id */
52044 + if (qla2x00_get_next_free_pub_id(ha,
52045 + &tmp_loop_id) == 0) {
52047 + DEBUG9(printk("%s(%ld): previous loop "
52048 + "id in use. Retry with 0x%02x.\n",
52049 + __func__, ha->host_no, tmp_loop_id);)
52051 + ha->fabricid[tmp_loop_id].in_use = TRUE;
52054 + DEBUG9_10(printk("%s(%ld): inst=%ld loop id "
52055 + "in use; no more free loop id.\n",
52056 + __func__, ha->host_no, ha->instance);)
52058 + retval = QL_STATUS_ERROR;
52064 + DEBUG9(printk("%s(%ld): inst=%ld exiting. retval=%d.\n",
52065 + __func__, ha->host_no, ha->instance, retval);)
52072 + * qla2x00_find_curr_ha
52073 + * Searches and returns the pointer to the adapter host_no specified.
52076 + * host_inst = driver internal adapter instance number to search.
52077 + * ha = adapter state pointer of the instance requested.
52080 + * qla2x00 local function return status code.
52083 + * Kernel context.
52086 +qla2x00_find_curr_ha(uint16_t host_inst, scsi_qla_host_t **ret_ha)
52088 + int rval = QL_STATUS_SUCCESS;
52090 + struct list_head *hal;
52091 + scsi_qla_host_t *search_ha = NULL;
52094 + * Set ha context for this IOCTL by matching host_no.
52097 + read_lock(&qla_hostlist_lock);
52098 + list_for_each(hal, &qla_hostlist) {
52099 + search_ha = list_entry(hal, scsi_qla_host_t, list);
52101 + if (search_ha->instance == host_inst) {
52106 + read_unlock(&qla_hostlist_lock);
52109 + DEBUG10(printk("%s: ERROR matching host_inst "
52110 + "%d to an HBA Instance.\n", __func__, host_inst);)
52111 + rval = QL_STATUS_ERROR;
52113 + DEBUG9(printk("%s: found matching host_inst "
52114 + "%d to an HBA Instance.\n", __func__, host_inst);)
52115 + *ret_ha = search_ha;
52122 + * qla2x00_get_driver_specifics
52123 + * Returns driver specific data in the response buffer.
52126 + * pext = pointer to EXT_IOCTL structure containing values from user.
52130 + * others = errno value
52133 + * Kernel context.
52136 +qla2x00_get_driver_specifics(EXT_IOCTL *pext)
52139 + EXT_LN_DRIVER_DATA data;
52141 + DEBUG9(printk("%s: entered.\n",
52144 + if (pext->ResponseLen < sizeof(EXT_LN_DRIVER_DATA)) {
52145 + pext->Status = EXT_STATUS_BUFFER_TOO_SMALL;
52146 + DEBUG9_10(printk("%s: ERROR ResponseLen too small.\n",
52152 + data.DrvVer.Major = QLA_DRIVER_MAJOR_VER;
52153 + data.DrvVer.Minor = QLA_DRIVER_MINOR_VER;
52154 + data.DrvVer.Patch = QLA_DRIVER_PATCH_VER;
52155 + data.DrvVer.Beta = QLA_DRIVER_BETA_VER;
52157 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
52158 + sizeof(EXT_LN_DRIVER_DATA));
52160 + pext->Status = EXT_STATUS_COPY_ERR;
52161 + DEBUG9_10(printk("%s: ERROR verify write resp buf\n",
52167 + ret = copy_to_user(pext->ResponseAdr, &data, sizeof(EXT_LN_DRIVER_DATA));
52169 + pext->Status = EXT_STATUS_COPY_ERR;
52170 + DEBUG9_10(printk("%s: ERROR copy resp buf\n",
52174 + DEBUG9(printk("%s: exiting. ret=%d.\n",
52181 + * qla2x00_aen_reg
52182 + * IOCTL management server Asynchronous Event Tracking Enable/Disable.
52185 + * ha = pointer to the adapter struct of the adapter to register.
52186 + * cmd = pointer to EXT_IOCTL structure containing values from user.
52187 + * mode = flags. not used.
52191 + * others = errno value
52194 + * Kernel context.
52197 +qla2x00_aen_reg(scsi_qla_host_t *ha, EXT_IOCTL *cmd, int mode)
52200 + EXT_REG_AEN reg_struct;
52202 + DEBUG9(printk("%s(%ld): inst %ld entered.\n",
52203 + __func__, ha->host_no, ha->instance);)
52205 + rval = verify_area(VERIFY_READ, (void *)cmd->RequestAdr,
52206 + sizeof(EXT_REG_AEN));
52208 + cmd->Status = EXT_STATUS_COPY_ERR;
52209 + DEBUG9_10(printk("%s(%ld): inst %ld ERROR verify read req buf\n",
52210 + __func__, ha->host_no, ha->instance);)
52215 + rval = copy_from_user(®_struct, cmd->RequestAdr, sizeof(EXT_REG_AEN));
52217 + cmd->Status = EXT_STATUS_OK;
52218 + if (reg_struct.Enable) {
52219 + ha->ioctl->flags |= IOCTL_AEN_TRACKING_ENABLE;
52221 + ha->ioctl->flags &= ~IOCTL_AEN_TRACKING_ENABLE;
52224 + cmd->Status = EXT_STATUS_COPY_ERR;
52227 + DEBUG9(printk("%s(%ld): inst %ld reg_struct.Enable(%d) "
52228 + "ha->ioctl_flag(%x) cmd->Status(%d).",
52229 + __func__, ha->host_no, ha->instance, reg_struct.Enable,
52230 + ha->ioctl->flags, cmd->Status);)
52232 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52233 + __func__, ha->host_no, ha->instance);)
52239 + * qla2x00_aen_get
52240 + * Asynchronous Event Record Transfer to user.
52241 + * The entire queue will be emptied and transferred back.
52244 + * ha = pointer to the adapter struct of the specified adapter.
52245 + * pext = pointer to EXT_IOCTL structure containing values from user.
52250 + * others = errno value
52253 + * Kernel context.
52255 + * NOTE: Need to use hardware lock to protect the queues from updates
52256 + * via isr/enqueue_aen after we get rid of io_request_lock.
52259 +qla2x00_aen_get(scsi_qla_host_t *ha, EXT_IOCTL *cmd, int mode)
52262 + EXT_ASYNC_EVENT *tmp_q;
52263 + EXT_ASYNC_EVENT *paen;
52265 + uint8_t queue_cnt;
52266 + uint8_t request_cnt;
52267 + uint32_t stat = EXT_STATUS_OK;
52268 + uint32_t ret_len = 0;
52269 + unsigned long cpu_flags = 0;
52271 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52272 + __func__, ha->host_no, ha->instance);)
52274 + request_cnt = (uint8_t)(cmd->ResponseLen / sizeof(EXT_ASYNC_EVENT));
52276 + if (request_cnt < EXT_DEF_MAX_AEN_QUEUE) {
52277 + /* We require caller to alloc for the maximum request count */
52278 + cmd->Status = EXT_STATUS_BUFFER_TOO_SMALL;
52279 + DEBUG9_10(printk("%s(%ld): inst=%ld Buffer too small. "
52280 + "Exiting normally.",
52281 + __func__, ha->host_no, ha->instance);)
52286 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&paen,
52287 + sizeof(EXT_ASYNC_EVENT) * EXT_DEF_MAX_AEN_QUEUE)) {
52288 + /* not enough memory */
52289 + cmd->Status = EXT_STATUS_NO_MEMORY;
52290 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52291 + "size requested=%d.\n",
52292 + __func__, ha->host_no, ha->instance,
52293 + sizeof(EXT_ASYNC_EVENT)*EXT_DEF_MAX_AEN_QUEUE);)
52297 + /* 1st: Make a local copy of the entire queue content. */
52298 + tmp_q = (EXT_ASYNC_EVENT *)ha->ioctl->aen_tracking_queue;
52301 + spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
52302 + i = ha->ioctl->aen_q_head;
52304 + for (; queue_cnt < EXT_DEF_MAX_AEN_QUEUE;) {
52305 + if (tmp_q[i].AsyncEventCode != 0) {
52306 + memcpy(&paen[queue_cnt], &tmp_q[i],
52307 + sizeof(EXT_ASYNC_EVENT));
52309 + tmp_q[i].AsyncEventCode = 0; /* empty out the slot */
52312 + if (i == ha->ioctl->aen_q_tail) {
52319 + if (i == EXT_DEF_MAX_AEN_QUEUE) {
52324 + /* Empty the queue. */
52325 + ha->ioctl->aen_q_head = 0;
52326 + ha->ioctl->aen_q_tail = 0;
52328 + spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
52330 + /* 2nd: Now transfer the queue content to user buffer */
52331 + /* Copy the entire queue to user's buffer. */
52332 + ret_len = (uint32_t)(queue_cnt * sizeof(EXT_ASYNC_EVENT));
52333 + if (queue_cnt != 0) {
52334 + rval = verify_area(VERIFY_WRITE, (void *)cmd->ResponseAdr,
52337 + cmd->Status = EXT_STATUS_COPY_ERR;
52338 + DEBUG9_10(printk(
52339 + "%s(%ld): inst=%ld ERROR verify write resp buf.\n",
52340 + __func__, ha->host_no, ha->instance);)
52342 + qla2x00_free_ioctl_scrap_mem(ha);
52346 + rval = copy_to_user(cmd->ResponseAdr, paen, ret_len);
52348 + cmd->ResponseLen = ret_len;
52351 + stat = EXT_STATUS_COPY_ERR;
52352 + DEBUG9_10(printk("%s(%ld): inst=%ld FAILED. error = %d\n",
52353 + __func__, ha->host_no, ha->instance, stat);)
52355 + stat = EXT_STATUS_OK;
52358 + cmd->Status = stat;
52359 + qla2x00_free_ioctl_scrap_mem(ha);
52361 + DEBUG9(printk("%s(%ld): inst=%ld exiting. rval=%d.\n",
52362 + __func__, ha->host_no, ha->instance, rval);)
52368 + * qla2x00_enqueue_aen
52371 + * ha = adapter state pointer.
52372 + * event_code = async event code of the event to add to queue.
52373 + * payload = event payload for the queue.
52376 + * Interrupt context.
52377 + * NOTE: Need to hold the hardware lock to protect the queues from
52378 + * aen_get after we get rid of the io_request_lock.
52381 +qla2x00_enqueue_aen(scsi_qla_host_t *ha, uint16_t event_code, void *payload)
52383 + uint8_t new_entry; /* index to current entry */
52385 + EXT_ASYNC_EVENT *aen_queue;
52387 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52388 + __func__, ha->host_no, ha->instance);)
52390 + aen_queue = (EXT_ASYNC_EVENT *)ha->ioctl->aen_tracking_queue;
52391 + if (aen_queue[ha->ioctl->aen_q_tail].AsyncEventCode != 0) {
52392 + /* Need to change queue pointers to make room. */
52394 + /* Increment tail for adding new entry. */
52395 + ha->ioctl->aen_q_tail++;
52396 + if (ha->ioctl->aen_q_tail == EXT_DEF_MAX_AEN_QUEUE) {
52397 + ha->ioctl->aen_q_tail = 0;
52400 + if (ha->ioctl->aen_q_head == ha->ioctl->aen_q_tail) {
52402 + * We're overwriting the oldest entry, so need to
52403 + * update the head pointer.
52405 + ha->ioctl->aen_q_head++;
52406 + if (ha->ioctl->aen_q_head == EXT_DEF_MAX_AEN_QUEUE) {
52407 + ha->ioctl->aen_q_head = 0;
52412 + DEBUG(printk("%s(%ld): inst=%ld Adding code 0x%x to aen_q %p @ %d\n",
52413 + __func__, ha->host_no, ha->instance, event_code, aen_queue,
52414 + ha->ioctl->aen_q_tail);)
52416 + new_entry = ha->ioctl->aen_q_tail;
52417 + aen_queue[new_entry].AsyncEventCode = event_code;
52419 + /* Update payload */
52420 + switch (event_code) {
52421 + case MBA_LIP_OCCURRED:
52422 + case MBA_LOOP_UP:
52423 + case MBA_LOOP_DOWN:
52424 + case MBA_LIP_RESET:
52425 + case MBA_PORT_UPDATE:
52429 + case MBA_SCR_UPDATE:
52430 + mbx = (uint16_t *)payload;
52432 + aen_queue[new_entry].Payload.RSCN.RSCNInfo[0] = LSB(mbx[2]);
52434 + aen_queue[new_entry].Payload.RSCN.RSCNInfo[1] = MSB(mbx[2]);
52436 + aen_queue[new_entry].Payload.RSCN.RSCNInfo[2] = LSB(mbx[1]);
52437 + /* save in big endian */
52438 + BIG_ENDIAN_24(aen_queue[new_entry].Payload.RSCN.RSCNInfo[0]);
52440 + aen_queue[new_entry].Payload.RSCN.AddrFormat = MSB(mbx[1]);
52445 + /* Not supported */
52446 + aen_queue[new_entry].AsyncEventCode = 0;
52450 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52451 + __func__, ha->host_no, ha->instance);)
52456 + * Handles all subcommands of the EXT_CC_QUERY command.
52459 + * ha = adapter state pointer.
52460 + * pext = EXT_IOCTL structure pointer.
52461 + * mode = not used.
52465 + * others = errno value
52468 + * Kernel context.
52471 +qla2x00_query(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52475 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52476 + __func__, ha->host_no, ha->instance);)
52478 + /* All Query type ioctls are done here */
52479 + switch(pext->SubCode) {
52481 + case EXT_SC_QUERY_HBA_NODE:
52482 + /* fill in HBA NODE Information */
52483 + rval = qla2x00_query_hba_node(ha, pext, mode);
52486 + case EXT_SC_QUERY_HBA_PORT:
52487 + /* return HBA PORT related info */
52488 + rval = qla2x00_query_hba_port(ha, pext, mode);
52491 + case EXT_SC_QUERY_DISC_PORT:
52492 + /* return discovered port information */
52493 + rval = qla2x00_query_disc_port(ha, pext, mode);
52496 + case EXT_SC_QUERY_DISC_TGT:
52497 + /* return discovered target information */
52498 + rval = qla2x00_query_disc_tgt(ha, pext, mode);
52501 + case EXT_SC_QUERY_CHIP:
52502 + rval = qla2x00_query_chip(ha, pext, mode);
52505 + case EXT_SC_QUERY_DISC_LUN:
52506 + pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
52510 + DEBUG9_10(printk("%s(%ld): inst=%ld unknown SubCode %d.\n",
52511 + __func__, ha->host_no, ha->instance, pext->SubCode);)
52512 + pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
52516 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52517 + __func__, ha->host_no, ha->instance);)
52522 + * qla2x00_query_hba_node
52523 + * Handles EXT_SC_QUERY_HBA_NODE subcommand.
52526 + * ha = adapter state pointer.
52527 + * pext = EXT_IOCTL structure pointer.
52528 + * mode = not used.
52532 + * others = errno value
52535 + * Kernel context.
52538 +qla2x00_query_hba_node(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52541 + uint32_t i, transfer_size;
52542 + EXT_HBA_NODE *ptmp_hba_node;
52544 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52545 + __func__, ha->host_no, ha->instance);)
52547 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_hba_node,
52548 + sizeof(EXT_HBA_NODE))) {
52549 + /* not enough memory */
52550 + pext->Status = EXT_STATUS_NO_MEMORY;
52551 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52552 + "size requested=%d.\n",
52553 + __func__, ha->host_no, ha->instance,
52554 + sizeof(EXT_HBA_NODE));)
52558 + /* fill all available HBA NODE Information */
52559 + for (i = 0; i < 8 ; i++)
52560 + ptmp_hba_node->WWNN[i] = ha->node_name[i];
52562 + sprintf((char *)(ptmp_hba_node->Manufacturer),"Qlogic Corp.");
52563 + sprintf((char *)(ptmp_hba_node->Model), ha->brd_info->name);
52565 + ptmp_hba_node->SerialNum[0] = ha->serial0;
52566 + ptmp_hba_node->SerialNum[1] = ha->serial1;
52567 + ptmp_hba_node->SerialNum[2] = ha->serial2;
52568 + sprintf((char *)(ptmp_hba_node->DriverVersion), qla2x00_version_str);
52569 + sprintf((char *)(ptmp_hba_node->FWVersion),"%2d.%02d.%02d",
52570 + ha->fw_major_version,
52571 + ha->fw_minor_version,
52572 + ha->fw_subminor_version);
52574 + sprintf((char *)(ptmp_hba_node->OptRomVersion),"%d.%d",
52575 + ha->optrom_major, ha->optrom_minor);
52577 + ptmp_hba_node->InterfaceType = EXT_DEF_FC_INTF_TYPE;
52578 + ptmp_hba_node->PortCount = 1;
52581 + ptmp_hba_node->DriverAttr = (ha->flags.failover_enabled) ?
52582 + DRVR_FO_ENABLED : 0;
52584 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
52585 + sizeof(EXT_HBA_NODE));
52587 + pext->Status = EXT_STATUS_COPY_ERR;
52588 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
52589 + __func__, ha->host_no, ha->instance);)
52590 + qla2x00_free_ioctl_scrap_mem(ha);
52594 + /* now copy up the HBA_NODE to user */
52595 + if (pext->ResponseLen < sizeof(EXT_HBA_NODE))
52596 + transfer_size = pext->ResponseLen;
52598 + transfer_size = sizeof(EXT_HBA_NODE);
52600 + ret = copy_to_user((uint8_t *)pext->ResponseAdr,
52601 + (uint8_t *)ptmp_hba_node, transfer_size);
52603 + pext->Status = EXT_STATUS_COPY_ERR;
52604 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
52605 + __func__, ha->host_no, ha->instance);)
52606 + qla2x00_free_ioctl_scrap_mem(ha);
52610 + pext->Status = EXT_STATUS_OK;
52611 + pext->DetailStatus = EXT_STATUS_OK;
52613 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52614 + __func__, ha->host_no, ha->instance);)
52616 + qla2x00_free_ioctl_scrap_mem(ha);
52621 + * qla2x00_query_hba_port
52622 + * Handles EXT_SC_QUERY_HBA_PORT subcommand.
52625 + * ha = adapter state pointer.
52626 + * pext = EXT_IOCTL structure pointer.
52627 + * mode = not used.
52631 + * others = errno value
52634 + * Kernel context.
52637 +qla2x00_query_hba_port(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52640 + uint32_t tgt_cnt, tgt, transfer_size;
52641 + uint32_t port_cnt;
52642 + struct list_head *fcpl;
52643 + fc_port_t *fcport;
52644 + EXT_HBA_PORT *ptmp_hba_port;
52646 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
52647 + __func__, ha->host_no, ha->instance);)
52649 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_hba_port,
52650 + sizeof(EXT_HBA_PORT))) {
52651 + /* not enough memory */
52652 + pext->Status = EXT_STATUS_NO_MEMORY;
52653 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52654 + "size requested=%d.\n",
52655 + __func__, ha->host_no, ha->instance,
52656 + sizeof(EXT_HBA_PORT));)
52660 + /* reflect all HBA PORT related info */
52661 + ptmp_hba_port->WWPN[7] = ha->init_cb->port_name[7];
52662 + ptmp_hba_port->WWPN[6] = ha->init_cb->port_name[6];
52663 + ptmp_hba_port->WWPN[5] = ha->init_cb->port_name[5];
52664 + ptmp_hba_port->WWPN[4] = ha->init_cb->port_name[4];
52665 + ptmp_hba_port->WWPN[3] = ha->init_cb->port_name[3];
52666 + ptmp_hba_port->WWPN[2] = ha->init_cb->port_name[2];
52667 + ptmp_hba_port->WWPN[1] = ha->init_cb->port_name[1];
52668 + ptmp_hba_port->WWPN[0] = ha->init_cb->port_name[0];
52669 + ptmp_hba_port->Id[0] = 0;
52670 + ptmp_hba_port->Id[1] = ha->d_id.r.d_id[2];
52671 + ptmp_hba_port->Id[2] = ha->d_id.r.d_id[1];
52672 + ptmp_hba_port->Id[3] = ha->d_id.r.d_id[0];
52673 + ptmp_hba_port->Type = EXT_DEF_INITIATOR_DEV;
52675 + switch (ha->current_topology) {
52678 + ptmp_hba_port->Mode = EXT_DEF_LOOP_MODE;
52683 + ptmp_hba_port->Mode = EXT_DEF_P2P_MODE;
52687 + ptmp_hba_port->Mode = EXT_DEF_UNKNOWN_MODE;
52692 + list_for_each(fcpl, &ha->fcports) {
52693 + fcport = list_entry(fcpl, fc_port_t, list);
52695 + /* if removed or missing */
52696 + if (atomic_read(&fcport->state) != FC_ONLINE) {
52697 + DEBUG9_10(printk(
52698 + "%s(%ld): inst=%ld port %02x%02x%02x not online\n",
52699 + __func__, ha->host_no, ha->instance,
52700 + fcport->d_id.b.domain,
52701 + fcport->d_id.b.area,
52702 + fcport->d_id.b.al_pa));
52709 + for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
52710 + if (ha->otgt[tgt] == NULL) {
52716 + DEBUG9_10(printk("%s(%ld): inst=%ld disc_port cnt=%d, tgt cnt=%d.\n",
52717 + __func__, ha->host_no, ha->instance,
52718 + port_cnt, tgt_cnt);)
52719 + ptmp_hba_port->DiscPortCount = port_cnt;
52720 + ptmp_hba_port->DiscTargetCount = tgt_cnt;
52722 + if (ha->loop_state == LOOP_DOWN) {
52724 + ptmp_hba_port->State = EXT_DEF_HBA_LOOP_DOWN;
52726 + } else if (ha->loop_state != LOOP_READY ||
52727 + test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags) ||
52728 + test_bit(CFG_ACTIVE, &ha->cfg_flags) || ABORTS_ACTIVE) {
52730 + ptmp_hba_port->State = EXT_DEF_HBA_SUSPENDED;
52734 + ptmp_hba_port->State = EXT_DEF_HBA_OK;
52738 + ptmp_hba_port->DiscPortNameType = EXT_DEF_USE_PORT_NAME;
52740 + /* Return supported FC4 type depending on driver support. */
52741 + ptmp_hba_port->PortSupportedFC4Types = EXT_DEF_FC4_TYPE_SCSI;
52742 +#if defined(FC_IP_SUPPORT)
52744 + ptmp_hba_port->PortSupportedFC4Types |= EXT_DEF_FC4_TYPE_IP;
52746 +#if defined(FC_SCTP_SUPPORT)
52748 + ptmp_hba_port->PortSupportedFC4Types |= EXT_DEF_FC4_TYPE_SCTP;
52751 + ptmp_hba_port->PortActiveFC4Types = ha->active_fc4_types;
52753 + /* Return supported speed depending on adapter type */
52754 +#if defined(ISP2100)
52756 + ptmp_hba_port->PortSupportedSpeed = EXT_DEF_PORTSPEED_1GBIT;
52757 +#elif defined(ISP2200)
52759 + ptmp_hba_port->PortSupportedSpeed = EXT_DEF_PORTSPEED_1GBIT;
52760 +#elif defined(ISP2300)
52762 + ptmp_hba_port->PortSupportedSpeed = EXT_DEF_PORTSPEED_2GBIT;
52765 + ptmp_hba_port->PortSupportedSpeed = 0;
52768 + ptmp_hba_port->PortSpeed = ha->current_speed;
52770 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
52771 + sizeof(EXT_HBA_PORT));
52773 + pext->Status = EXT_STATUS_COPY_ERR;
52774 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
52775 + __func__, ha->host_no, ha->instance);)
52776 + qla2x00_free_ioctl_scrap_mem(ha);
52780 + /* now copy up the HBA_PORT to user */
52781 + if (pext->ResponseLen < sizeof(EXT_HBA_PORT))
52782 + transfer_size = pext->ResponseLen;
52784 + transfer_size = sizeof(EXT_HBA_PORT);
52786 + ret = copy_to_user((uint8_t *)pext->ResponseAdr,
52787 + (uint8_t *)ptmp_hba_port, transfer_size);
52789 + pext->Status = EXT_STATUS_COPY_ERR;
52790 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
52791 + __func__, ha->host_no, ha->instance);)
52792 + qla2x00_free_ioctl_scrap_mem(ha);
52796 + pext->Status = EXT_STATUS_OK;
52797 + pext->DetailStatus = EXT_STATUS_OK;
52798 + qla2x00_free_ioctl_scrap_mem(ha);
52800 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52801 + __func__, ha->host_no, ha->instance);)
52807 + * qla2x00_query_disc_port
52808 + * Handles EXT_SC_QUERY_DISC_PORT subcommand.
52811 + * ha = adapter state pointer.
52812 + * pext = EXT_IOCTL structure pointer.
52813 + * mode = not used.
52817 + * others = errno value
52820 + * Kernel context.
52823 +qla2x00_query_disc_port(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52827 + uint32_t tgt, transfer_size, inst;
52828 + struct list_head *fcpl;
52829 + fc_port_t *fcport;
52831 + EXT_DISC_PORT *ptmp_disc_port;
52833 + DEBUG9(printk("%s(%ld): inst=%ld entered. Port inst=%02d.\n",
52834 + __func__, ha->host_no, ha->instance, pext->Instance);)
52839 + list_for_each(fcpl, &ha->fcports) {
52840 + fcport = list_entry(fcpl, fc_port_t, list);
52842 + if (atomic_read(&fcport->state) != FC_ONLINE) {
52843 + /* port does not exist anymore */
52844 + DEBUG9(printk("%s(%ld): fcport marked lost. "
52845 + "d_id=%02x%02x%02x loop_id=%02x not online.\n",
52846 + __func__, ha->host_no,
52847 + fcport->d_id.b.domain,
52848 + fcport->d_id.b.area,
52849 + fcport->d_id.b.al_pa,
52850 + fcport->loop_id);)
52855 + if (inst != pext->Instance) {
52856 + DEBUG9(printk("%s(%ld): found fcport %02d "
52857 + "d_id=%02x%02x%02x. Skipping.\n",
52858 + __func__, ha->host_no, inst,
52859 + fcport->d_id.b.domain,
52860 + fcport->d_id.b.area,
52861 + fcport->d_id.b.al_pa));
52867 + DEBUG9(printk("%s(%ld): inst=%ld found matching fcport %02d "
52868 + "online. d_id=%02x%02x%02x loop_id=%02x online.\n",
52869 + __func__, ha->host_no, ha->instance, inst,
52870 + fcport->d_id.b.domain,
52871 + fcport->d_id.b.area,
52872 + fcport->d_id.b.al_pa,
52873 + fcport->loop_id);)
52875 + /* Found the matching port still connected. */
52881 + DEBUG9_10(printk("%s(%ld): inst=%ld dev not found.\n",
52882 + __func__, ha->host_no, ha->instance);)
52884 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
52888 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_disc_port,
52889 + sizeof(EXT_DISC_PORT))) {
52890 + /* not enough memory */
52891 + pext->Status = EXT_STATUS_NO_MEMORY;
52892 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
52893 + "size requested=%d.\n",
52894 + __func__, ha->host_no, ha->instance,
52895 + sizeof(EXT_DISC_PORT));)
52899 + memcpy(ptmp_disc_port->WWNN, fcport->node_name, WWN_SIZE);
52900 + memcpy(ptmp_disc_port->WWPN, fcport->port_name, WWN_SIZE);
52902 + ptmp_disc_port->Id[0] = 0;
52903 + ptmp_disc_port->Id[1] = fcport->d_id.r.d_id[2];
52904 + ptmp_disc_port->Id[2] = fcport->d_id.r.d_id[1];
52905 + ptmp_disc_port->Id[3] = fcport->d_id.r.d_id[0];
52907 + /* Currently all devices on fcport list are target capable devices */
52908 + /* This default value may need to be changed after we add non target
52909 + * devices also to this list.
52911 + ptmp_disc_port->Type = EXT_DEF_TARGET_DEV;
52913 + if (fcport->flags & FC_FABRIC_DEVICE) {
52914 + ptmp_disc_port->Type |= EXT_DEF_FABRIC_DEV;
52916 + if (fcport->flags & FC_TAPE_DEVICE) {
52917 + ptmp_disc_port->Type |= EXT_DEF_TAPE_DEV;
52919 + if (fcport->flags & FC_INITIATOR_DEVICE) {
52920 + ptmp_disc_port->Type |= EXT_DEF_INITIATOR_DEV;
52923 + ptmp_disc_port->LoopID = fcport->loop_id;
52924 + ptmp_disc_port->Status = 0;
52925 + ptmp_disc_port->Bus = 0;
52927 + for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
52928 + if ((tq = ha->otgt[tgt]) == NULL) {
52932 + if (tq->vis_port == NULL) /* dg 08/14/01 */
52935 + if (memcmp(fcport->port_name, tq->vis_port->port_name,
52936 + EXT_DEF_WWN_NAME_SIZE) == 0) {
52937 + ptmp_disc_port->TargetId = tgt;
52942 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
52943 + sizeof(EXT_DISC_PORT));
52945 + pext->Status = EXT_STATUS_COPY_ERR;
52946 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
52947 + __func__, ha->host_no, ha->instance);)
52948 + qla2x00_free_ioctl_scrap_mem(ha);
52952 + /* now copy up the DISC_PORT to user */
52953 + if (pext->ResponseLen < sizeof(EXT_DISC_PORT))
52954 + transfer_size = pext->ResponseLen;
52956 + transfer_size = sizeof(EXT_DISC_PORT);
52958 + ret = copy_to_user((uint8_t *)pext->ResponseAdr,
52959 + (uint8_t *)ptmp_disc_port, transfer_size);
52961 + pext->Status = EXT_STATUS_COPY_ERR;
52962 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
52963 + __func__, ha->host_no, ha->instance);)
52964 + qla2x00_free_ioctl_scrap_mem(ha);
52968 + pext->Status = EXT_STATUS_OK;
52969 + pext->DetailStatus = EXT_STATUS_OK;
52970 + qla2x00_free_ioctl_scrap_mem(ha);
52972 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
52973 + __func__, ha->host_no, ha->instance);)
52979 + * qla2x00_query_disc_tgt
52980 + * Handles EXT_SC_QUERY_DISC_TGT subcommand.
52983 + * ha = adapter state pointer.
52984 + * pext = EXT_IOCTL structure pointer.
52985 + * mode = not used.
52989 + * others = errno value
52992 + * Kernel context.
52995 +qla2x00_query_disc_tgt(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
52998 + uint32_t tgt, transfer_size, inst;
53000 + fc_port_t *tgt_fcport;
53002 + EXT_DISC_TARGET *ptmp_disc_target;
53004 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53005 + __func__, ha->host_no, ha->instance);)
53008 + for (tgt = 0, inst = 0; tgt < MAX_TARGETS; tgt++) {
53009 + if (ha->otgt[tgt] == NULL) {
53012 + /* if wrong target id then skip to next entry */
53013 + if (inst != pext->Instance) {
53017 + tq = ha->otgt[tgt];
53021 + if (tq == NULL || tgt == MAX_TARGETS) {
53022 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
53023 + DEBUG9_10(printk("%s(%ld): inst=%ld target dev not found. "
53024 + "tq=%p, tgt=%d.\n",
53025 + __func__, ha->host_no, ha->instance, tq, tgt);)
53029 + if (tq->vis_port == NULL) { /* dg 08/14/01 */
53030 + pext->Status = EXT_STATUS_BUSY;
53031 + DEBUG9_10(printk("%s(%ld): inst=%ld target dev not found. "
53033 + __func__, ha->host_no, ha->instance, tq);)
53037 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_disc_target,
53038 + sizeof(EXT_DISC_TARGET))) {
53039 + /* not enough memory */
53040 + pext->Status = EXT_STATUS_NO_MEMORY;
53041 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53042 + "size requested=%d.\n",
53043 + __func__, ha->host_no, ha->instance,
53044 + sizeof(EXT_DISC_TARGET));)
53048 + tgt_fcport = tq->vis_port;
53049 + memcpy(ptmp_disc_target->WWNN, tgt_fcport->node_name, WWN_SIZE);
53050 + memcpy(ptmp_disc_target->WWPN, tgt_fcport->port_name, WWN_SIZE);
53052 + ptmp_disc_target->Id[0] = 0;
53053 + ptmp_disc_target->Id[1] = tgt_fcport->d_id.r.d_id[2];
53054 + ptmp_disc_target->Id[2] = tgt_fcport->d_id.r.d_id[1];
53055 + ptmp_disc_target->Id[3] = tgt_fcport->d_id.r.d_id[0];
53057 + /* All devices on ha->otgt list are target capable devices. */
53058 + ptmp_disc_target->Type = EXT_DEF_TARGET_DEV;
53060 + if (tgt_fcport->flags & FC_FABRIC_DEVICE) {
53061 + ptmp_disc_target->Type |= EXT_DEF_FABRIC_DEV;
53063 + if (tgt_fcport->flags & FC_TAPE_DEVICE) {
53064 + ptmp_disc_target->Type |= EXT_DEF_TAPE_DEV;
53066 + if (tgt_fcport->flags & FC_INITIATOR_DEVICE) {
53067 + ptmp_disc_target->Type |= EXT_DEF_INITIATOR_DEV;
53070 + ptmp_disc_target->LoopID = tgt_fcport->loop_id;
53071 + ptmp_disc_target->Status = 0;
53072 + ptmp_disc_target->Bus = 0;
53073 + ptmp_disc_target->TargetId = tgt;
53076 + /* enumerate available LUNs under this TGT (if any) */
53077 + if (ha->otgt[tgt] != NULL) {
53078 + for (i = 0; i < MAX_LUNS ; i++) {
53079 + if ((ha->otgt[tgt])->olun[i] !=0)
53084 + ptmp_disc_target->LunCount = cnt;
53086 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53087 + sizeof(EXT_DISC_TARGET));
53089 + pext->Status = EXT_STATUS_COPY_ERR;
53090 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
53091 + __func__, ha->host_no, ha->instance);)
53092 + qla2x00_free_ioctl_scrap_mem(ha);
53096 + /* now copy up the DISC_PORT to user */
53097 + if (pext->ResponseLen < sizeof(EXT_DISC_PORT))
53098 + transfer_size = pext->ResponseLen;
53100 + transfer_size = sizeof(EXT_DISC_TARGET);
53102 + ret = copy_to_user((uint8_t *)pext->ResponseAdr,
53103 + (uint8_t *)ptmp_disc_target, transfer_size);
53105 + pext->Status = EXT_STATUS_COPY_ERR;
53106 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53107 + __func__, ha->host_no, ha->instance);)
53108 + qla2x00_free_ioctl_scrap_mem(ha);
53112 + pext->Status = EXT_STATUS_OK;
53113 + pext->DetailStatus = EXT_STATUS_OK;
53114 + qla2x00_free_ioctl_scrap_mem(ha);
53116 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53117 + __func__, ha->host_no, ha->instance);)
53123 + * qla2x00_query_chip
53124 + * Handles EXT_SC_QUERY_CHIP subcommand.
53127 + * ha = adapter state pointer.
53128 + * pext = EXT_IOCTL structure pointer.
53129 + * mode = not used.
53133 + * others = errno value
53136 + * Kernel context.
53139 +qla2x00_query_chip(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53142 + uint32_t transfer_size, i;
53143 + EXT_CHIP *ptmp_isp;
53144 + struct Scsi_Host *host;
53146 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53147 + __func__, ha->host_no, ha->instance);)
53149 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_isp,
53150 + sizeof(EXT_CHIP))) {
53151 + /* not enough memory */
53152 + pext->Status = EXT_STATUS_NO_MEMORY;
53153 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53154 + "size requested=%d.\n",
53155 + __func__, ha->host_no, ha->instance,
53156 + sizeof(EXT_CHIP));)
53161 + ptmp_isp->VendorId = ha->pdev->vendor;
53162 + ptmp_isp->DeviceId = ha->pdev->device;
53163 + ptmp_isp->SubVendorId = ha->pdev->subsystem_vendor;
53164 + ptmp_isp->SubSystemId = ha->pdev->subsystem_device;
53165 + ptmp_isp->PciBusNumber = ha->pdev->bus->number;
53166 + ptmp_isp->PciDevFunc = ha->pdev->devfn;
53167 + ptmp_isp->PciSlotNumber = PCI_SLOT(ha->pdev->devfn);
53168 + ptmp_isp->IoAddr = host->io_port;
53169 + ptmp_isp->IoAddrLen = 512;
53170 + ptmp_isp->MemAddr = 0; /* ? */
53171 + ptmp_isp->MemAddrLen = 0; /* ? */
53172 + ptmp_isp->ChipType = 0; /* ? */
53173 + ptmp_isp->InterruptLevel = host->irq;
53175 + for (i = 0; i < 8; i++)
53176 + ptmp_isp->OutMbx[i] = 0;
53178 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53179 + sizeof(EXT_CHIP));
53181 + pext->Status = EXT_STATUS_COPY_ERR;
53182 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
53183 + __func__, ha->host_no, ha->instance);)
53184 + qla2x00_free_ioctl_scrap_mem(ha);
53188 + /* now copy up the ISP to user */
53189 + if (pext->ResponseLen < sizeof(EXT_CHIP))
53190 + transfer_size = pext->ResponseLen;
53192 + transfer_size = sizeof(EXT_CHIP);
53194 + ret = copy_to_user((uint8_t *)pext->ResponseAdr, (uint8_t *)ptmp_isp,
53197 + pext->Status = EXT_STATUS_COPY_ERR;
53198 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53199 + __func__, ha->host_no, ha->instance);)
53200 + qla2x00_free_ioctl_scrap_mem(ha);
53204 + pext->Status = EXT_STATUS_OK;
53205 + pext->DetailStatus = EXT_STATUS_OK;
53206 + qla2x00_free_ioctl_scrap_mem(ha);
53208 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53209 + __func__, ha->host_no, ha->instance);)
53215 + * qla2x00_get_data
53216 + * Handles all subcommands of the EXT_CC_GET_DATA command.
53219 + * ha = adapter state pointer.
53220 + * pext = EXT_IOCTL structure pointer.
53221 + * mode = not used.
53225 + * others = errno value
53228 + * Kernel context.
53231 +qla2x00_get_data(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53233 + int tmp_rval = 0;
53235 + switch(pext->SubCode) {
53236 + case EXT_SC_GET_STATISTICS:
53237 + tmp_rval = qla2x00_get_statistics(ha, pext, mode);
53240 + case EXT_SC_GET_FC_STATISTICS:
53241 + tmp_rval = qla2x00_get_fc_statistics(ha, pext, mode);
53244 + case EXT_SC_GET_PORT_SUMMARY:
53245 + tmp_rval = qla2x00_get_port_summary(ha, pext, mode);
53248 + case EXT_SC_QUERY_DRIVER:
53249 + tmp_rval = qla2x00_query_driver(ha, pext, mode);
53252 + case EXT_SC_QUERY_FW:
53253 + tmp_rval = qla2x00_query_fw(ha, pext, mode);
53256 + case EXT_SC_GET_RNID:
53257 + tmp_rval = qla2x00_get_rnid_params(ha, pext, mode);
53261 + DEBUG10(printk("%s(%ld): inst=%ld unknown SubCode %d.\n",
53262 + __func__, ha->host_no, ha->instance, pext->SubCode);)
53263 + pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
53267 + return (tmp_rval);
53271 + * qla2x00_get_statistics
53272 + * Issues get_link_status mbx cmd and returns statistics
53273 + * relavent to the specified adapter.
53276 + * ha = pointer to adapter struct of the specified adapter.
53277 + * pext = pointer to EXT_IOCTL structure containing values from user.
53278 + * mode = not used.
53282 + * others = errno value
53285 + * Kernel context.
53288 +qla2x00_get_statistics(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53290 + EXT_HBA_PORT_STAT *ptmp_stat;
53292 + link_stat_t stat_buf;
53294 + uint8_t *usr_temp, *kernel_tmp;
53295 + uint16_t mb_stat[1];
53296 + uint32_t transfer_size;
53299 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53300 + __func__, ha->host_no, ha->instance);)
53302 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53303 + sizeof(EXT_HBA_PORT_STAT));
53305 + pext->Status = EXT_STATUS_COPY_ERR;
53306 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE "
53307 + "EXT_HBA_PORT_STAT.\n",
53308 + __func__, ha->host_no, ha->instance);)
53312 + /* check on loop down */
53313 + if (ha->loop_state != LOOP_READY ||
53314 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
53315 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
53316 + ABORTS_ACTIVE || ha->dpc_active) {
53318 + pext->Status = EXT_STATUS_BUSY;
53319 + DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
53320 + __func__, ha->host_no, ha->instance);)
53325 + /* Send mailbox cmd to get more. */
53326 + if ((rval = qla2x00_get_link_status(ha, ha->loop_id, &stat_buf,
53327 + mb_stat)) != QL_STATUS_SUCCESS) {
53329 + if (rval == BIT_0) {
53330 + pext->Status = EXT_STATUS_NO_MEMORY;
53331 + } else if (rval == BIT_1) {
53332 + pext->Status = EXT_STATUS_MAILBOX;
53333 + pext->DetailStatus = EXT_DSTATUS_NOADNL_INFO;
53335 + pext->Status = EXT_STATUS_ERR;
53338 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR mailbox failed. "
53340 + __func__, ha->host_no, ha->instance, mb_stat[0]);)
53341 + printk(KERN_WARNING
53342 + "%s(%ld): inst=%ld ERROR mailbox failed. mb[0]=%x.\n",
53343 + __func__, ha->host_no, ha->instance, mb_stat[0]);
53348 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_stat,
53349 + sizeof(EXT_HBA_PORT_STAT))) {
53350 + /* not enough memory */
53351 + pext->Status = EXT_STATUS_NO_MEMORY;
53352 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53353 + "size requested=%d.\n",
53354 + __func__, ha->host_no, ha->instance,
53355 + sizeof(EXT_HBA_PORT_STAT));)
53359 + ptmp_stat->ControllerErrorCount = ha->total_isp_aborts;
53360 + ptmp_stat->DeviceErrorCount = ha->total_dev_errs;
53361 + ptmp_stat->TotalIoCount = ha->total_ios;
53362 + ptmp_stat->TotalMBytes = ha->total_bytes >> 20;
53363 + ptmp_stat->TotalLipResets = ha->total_lip_cnt;
53365 + ptmp_stat->TotalInterrupts = ha->total_isr_cnt;
53368 + ptmp_stat->TotalLinkFailures = stat_buf.link_fail_cnt;
53369 + ptmp_stat->TotalLossOfSync = stat_buf.loss_sync_cnt;
53370 + ptmp_stat->TotalLossOfSignals = stat_buf.loss_sig_cnt;
53371 + ptmp_stat->PrimitiveSeqProtocolErrorCount = stat_buf.prim_seq_err_cnt;
53372 + ptmp_stat->InvalidTransmissionWordCount = stat_buf.inval_xmit_word_cnt;
53373 + ptmp_stat->InvalidCRCCount = stat_buf.inval_crc_cnt;
53375 + /* now copy up the STATISTICS to user */
53376 + if (pext->ResponseLen < sizeof(EXT_HBA_PORT_STAT))
53377 + transfer_size = pext->ResponseLen;
53379 + transfer_size = sizeof(EXT_HBA_PORT_STAT);
53381 + usr_temp = (uint8_t *)pext->ResponseAdr;
53382 + kernel_tmp = (uint8_t *)ptmp_stat;
53383 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53385 + pext->Status = EXT_STATUS_COPY_ERR;
53386 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53387 + __func__, ha->host_no, ha->instance);)
53388 + qla2x00_free_ioctl_scrap_mem(ha);
53392 + pext->Status = EXT_STATUS_OK;
53393 + pext->DetailStatus = EXT_STATUS_OK;
53394 + qla2x00_free_ioctl_scrap_mem(ha);
53396 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53397 + __func__, ha->host_no, ha->instance);)
53403 + * qla2x00_get_fc_statistics
53404 + * Issues get_link_status mbx cmd to the target device with
53405 + * the specified WWN and returns statistics relavent to the
53409 + * ha = pointer to adapter struct of the specified device.
53410 + * pext = pointer to EXT_IOCTL structure containing values from user.
53411 + * mode = not used.
53415 + * others = errno value
53418 + * Kernel context.
53421 +qla2x00_get_fc_statistics(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53423 + EXT_HBA_PORT_STAT *ptmp_stat;
53424 + EXT_DEST_ADDR addr_struct;
53426 + link_stat_t stat_buf;
53427 + uint8_t rval, tgt;
53428 + uint8_t *usr_temp, *kernel_tmp;
53429 + uint8_t *req_name;
53430 + uint16_t mb_stat[1];
53431 + uint32_t transfer_size;
53434 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53435 + __func__, ha->host_no, ha->instance);)
53437 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
53438 + sizeof(EXT_HBA_PORT_STAT));
53440 + pext->Status = EXT_STATUS_COPY_ERR;
53441 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY_WRITE.\n",
53442 + __func__, ha->host_no, ha->instance);)
53446 + ret = copy_from_user(&addr_struct, pext->RequestAdr, pext->RequestLen);
53448 + pext->Status = EXT_STATUS_COPY_ERR;
53449 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy req buf.\n",
53450 + __func__, ha->host_no, ha->instance);)
53454 + /* find the device's loop_id */
53455 + switch (addr_struct.DestType) {
53456 + case EXT_DEF_DESTTYPE_WWPN:
53457 + req_name = addr_struct.DestAddr.WWPN;
53458 + for (tgt = 0; tgt < MAX_FIBRE_DEVICES; tgt++) {
53459 + if (memcmp(ha->fc_db[tgt].wwn, req_name,
53460 + EXT_DEF_WWN_NAME_SIZE) == 0) {
53466 + case EXT_DEF_DESTTYPE_WWNN:
53467 + case EXT_DEF_DESTTYPE_PORTID:
53468 + case EXT_DEF_DESTTYPE_FABRIC:
53469 + case EXT_DEF_DESTTYPE_SCSI:
53471 + pext->Status = EXT_STATUS_INVALID_PARAM;
53472 + pext->DetailStatus = EXT_DSTATUS_NOADNL_INFO;
53473 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR Unsupported subcode "
53474 + "address type.\n", __func__, ha->host_no, ha->instance);)
53480 + if (tgt == MAX_FIBRE_DEVICES) {
53482 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
53483 + pext->DetailStatus = EXT_DSTATUS_TARGET;
53487 + /* check for suspended/lost device */
53489 + if (ha->fcport is suspended/lost) {
53490 + pext->Status = EXT_STATUS_SUSPENDED;
53491 + pext->DetailStatus = EXT_DSTATUS_TARGET;
53492 + return pext->Status;
53496 + /* check on loop down */
53497 + if (ha->loop_state != LOOP_READY ||
53498 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
53499 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
53500 + ABORTS_ACTIVE || ha->dpc_active) {
53502 + pext->Status = EXT_STATUS_BUSY;
53503 + DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
53504 + __func__, ha->host_no, ha->instance);)
53508 + /* Send mailbox cmd to get more. */
53509 + if ((rval = qla2x00_get_link_status(ha, ha->fc_db[tgt].loop_id,
53510 + &stat_buf, mb_stat)) != QL_STATUS_SUCCESS) {
53511 + if (rval == BIT_0) {
53512 + pext->Status = EXT_STATUS_NO_MEMORY;
53513 + } else if (rval == BIT_1) {
53514 + pext->Status = EXT_STATUS_MAILBOX;
53515 + pext->DetailStatus = EXT_DSTATUS_NOADNL_INFO;
53517 + pext->Status = EXT_STATUS_ERR;
53520 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR mailbox failed. "
53522 + __func__, ha->host_no, ha->instance, mb_stat[0]);)
53526 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptmp_stat,
53527 + sizeof(EXT_HBA_PORT_STAT))) {
53528 + /* not enough memory */
53529 + pext->Status = EXT_STATUS_NO_MEMORY;
53530 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53531 + "size requested=%d.\n",
53532 + __func__, ha->host_no, ha->instance,
53533 + sizeof(EXT_HBA_PORT_STAT));)
53537 + ptmp_stat->ControllerErrorCount = ha->total_isp_aborts;
53538 + ptmp_stat->DeviceErrorCount = ha->total_dev_errs;
53539 + ptmp_stat->TotalIoCount = ha->total_ios;
53540 + ptmp_stat->TotalMBytes = ha->total_bytes >> 20;
53541 + ptmp_stat->TotalLipResets = ha->total_lip_cnt;
53543 + ptmp_stat->TotalInterrupts = ha->total_isr_cnt;
53546 + ptmp_stat->TotalLinkFailures = stat_buf.link_fail_cnt;
53547 + ptmp_stat->TotalLossOfSync = stat_buf.loss_sync_cnt;
53548 + ptmp_stat->TotalLossOfSignals = stat_buf.loss_sig_cnt;
53549 + ptmp_stat->PrimitiveSeqProtocolErrorCount = stat_buf.prim_seq_err_cnt;
53550 + ptmp_stat->InvalidTransmissionWordCount = stat_buf.inval_xmit_word_cnt;
53551 + ptmp_stat->InvalidCRCCount = stat_buf.inval_crc_cnt;
53553 + /* now copy up the STATISTICS to user */
53554 + if (pext->ResponseLen < sizeof(EXT_HBA_PORT_STAT))
53555 + transfer_size = pext->ResponseLen;
53557 + transfer_size = sizeof(EXT_HBA_PORT_STAT);
53559 + usr_temp = (uint8_t *)pext->ResponseAdr;
53560 + kernel_tmp = (uint8_t *)ptmp_stat;
53561 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53563 + pext->Status = EXT_STATUS_COPY_ERR;
53564 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53565 + __func__, ha->host_no, ha->instance);)
53566 + qla2x00_free_ioctl_scrap_mem(ha);
53570 + pext->Status = EXT_STATUS_OK;
53571 + pext->DetailStatus = EXT_STATUS_OK;
53572 + qla2x00_free_ioctl_scrap_mem(ha);
53574 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53575 + __func__, ha->host_no, ha->instance);)
53581 + * qla2x00_get_port_summary
53582 + * Handles EXT_SC_GET_PORT_SUMMARY subcommand.
53583 + * Returns values of devicedata and dd_entry list.
53586 + * ha = adapter state pointer.
53587 + * pext = EXT_IOCTL structure pointer.
53588 + * mode = not used.
53592 + * others = errno value
53595 + * Kernel context.
53598 +qla2x00_get_port_summary(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53601 + uint8_t *usr_temp, *kernel_tmp;
53603 + uint32_t i, port_cnt, entry;
53604 + uint32_t number_of_entries = 0;
53605 + uint32_t tgt_cnt, transfer_size;
53606 + struct list_head *fcpl;
53607 + fc_port_t *fcport;
53608 + uint32_t current_offset;
53609 + void *start_of_entry_list;
53611 + EXT_DEVICEDATA *pdevicedata;
53612 + EXT_DEVICEDATAENTRY *pdd_entry;
53614 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53615 + __func__, ha->host_no, ha->instance);)
53620 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pdevicedata,
53621 + sizeof(EXT_DEVICEDATA))) {
53622 + /* not enough memory */
53623 + pext->Status = EXT_STATUS_NO_MEMORY;
53624 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53625 + "pdevicedata requested=%d.\n",
53626 + __func__, ha->host_no, ha->instance,
53627 + sizeof(EXT_DEVICEDATA));)
53631 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pdd_entry,
53632 + sizeof(EXT_DEVICEDATAENTRY))) {
53633 + /* not enough memory */
53634 + pext->Status = EXT_STATUS_NO_MEMORY;
53635 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53636 + "pdd_entry requested=%d.\n",
53637 + __func__, ha->host_no, ha->instance,
53638 + sizeof(EXT_DEVICEDATAENTRY));)
53639 + qla2x00_free_ioctl_scrap_mem(ha);
53643 + list_for_each(fcpl, &ha->fcports) {
53644 + fcport = list_entry(fcpl, fc_port_t, list);
53648 + pdevicedata->TotalDevices = port_cnt;
53650 + number_of_entries = pext->ResponseLen / sizeof(EXT_DEVICEDATAENTRY);
53652 + /* we want the lesser of port_cnt and number_of_entries */
53653 + if (number_of_entries > port_cnt)
53654 + number_of_entries = port_cnt;
53655 + pdevicedata->ReturnListEntryCount = number_of_entries;
53657 + DEBUG9(printk("%s(%ld): inst=%ld EXT_SC_GET_PORT_SUMMARY port_cnt=%x, "
53658 + "return entry cnt=%x.\n",
53659 + __func__, ha->host_no, ha->instance, port_cnt,
53660 + number_of_entries);)
53662 + transfer_size = sizeof(pdevicedata->ReturnListEntryCount) +
53663 + sizeof(pdevicedata->TotalDevices);
53665 + /* copy top of devicedata here */
53666 + ret = verify_area(VERIFY_WRITE, (void *)(pext->ResponseAdr),
53669 + pext->Status = EXT_STATUS_COPY_ERR;
53670 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf\n",
53671 + __func__, ha->host_no, ha->instance);)
53672 + qla2x00_free_ioctl_scrap_mem(ha);
53676 + usr_temp = (uint8_t *)pext->ResponseAdr;
53677 + kernel_tmp = (uint8_t *)pdevicedata;
53678 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53680 + pext->Status = EXT_STATUS_COPY_ERR;
53681 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp "
53682 + "devicedata buffer.\n",
53683 + __func__, ha->host_no, ha->instance);)
53684 + qla2x00_free_ioctl_scrap_mem(ha);
53688 + start_of_entry_list = (void *)(pext->ResponseAdr) + transfer_size;
53691 + list_for_each(fcpl, &ha->fcports) {
53692 + fcport = list_entry(fcpl, fc_port_t, list);
53694 + if (entry >= number_of_entries)
53697 + /* copy from fc_db of this target (port) to dd_entry */
53699 + memcpy(pdd_entry->NodeWWN, fcport->node_name, WWN_SIZE);
53700 + memcpy(pdd_entry->PortWWN, fcport->port_name, WWN_SIZE);
53702 + for (b = 0; b < 3 ; b++)
53703 + pdd_entry->PortID[b] = fcport->d_id.r.d_id[2-b];
53705 + if (fcport->flags & FC_FABRIC_DEVICE) {
53706 + pdd_entry->ControlFlags = EXT_DEF_GET_FABRIC_DEVICE;
53708 + pdd_entry->ControlFlags = 0;
53711 + pdd_entry->TargetAddress.Bus = 0;
53712 + /* Retrieve 'Target' number for port via fc_db */
53713 + for (i = 0; i < MAX_TARGETS; i++) {
53714 + if (ha->fc_db[i].loop_id == PORT_UNUSED)
53717 + if (memcmp(fcport->port_name, ha->fc_db[i].wwn,
53718 + EXT_DEF_WWN_NAME_SIZE) == 0) {
53719 + pdd_entry->TargetAddress.Target = i;
53723 + pdd_entry->TargetAddress.Lun = 0;
53724 + pdd_entry->DeviceFlags = 0;
53725 + pdd_entry->LoopID = fcport->loop_id;
53726 + pdd_entry->BaseLunNumber = 0;
53728 + current_offset = entry * sizeof(EXT_DEVICEDATAENTRY);
53730 + transfer_size = sizeof(EXT_DEVICEDATAENTRY);
53731 + ret = verify_area(VERIFY_WRITE,
53732 + (void *)(start_of_entry_list + current_offset),
53736 + pext->Status = EXT_STATUS_COPY_ERR;
53737 + DEBUG10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
53738 + "rsp bufaddr=%p\n",
53739 + __func__, ha->host_no, ha->instance,
53740 + (void *)(start_of_entry_list + current_offset));)
53741 + qla2x00_free_ioctl_scrap_mem(ha);
53742 + return pext->Status;
53745 + /* now copy up this dd_entry to user */
53746 + usr_temp = (uint8_t *)((u_long) start_of_entry_list +
53748 + kernel_tmp = (uint8_t *)pdd_entry;
53749 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53751 + pext->Status = EXT_STATUS_COPY_ERR;
53752 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp "
53753 + "entry list buffer.\n",
53754 + __func__, ha->host_no, ha->instance);)
53755 + qla2x00_free_ioctl_scrap_mem(ha);
53760 + } /* for number_of_entries */
53762 + pext->Status = EXT_STATUS_OK;
53763 + pext->DetailStatus = EXT_STATUS_OK;
53764 + qla2x00_free_ioctl_scrap_mem(ha);
53766 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53767 + __func__, ha->host_no, ha->instance);)
53773 + * qla2x00_query_driver
53774 + * Handles EXT_SC_QUERY_DRIVER subcommand.
53777 + * ha = adapter state pointer.
53778 + * pext = EXT_IOCTL structure pointer.
53779 + * mode = not used.
53783 + * others = errno value
53786 + * Kernel context.
53789 +qla2x00_query_driver(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53792 + uint8_t *usr_temp, *kernel_tmp;
53793 + uint32_t transfer_size;
53794 + EXT_DRIVER *pdriver_prop;
53796 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53797 + __func__, ha->host_no, ha->instance);)
53799 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pdriver_prop,
53800 + sizeof(EXT_DRIVER))) {
53801 + /* not enough memory */
53802 + pext->Status = EXT_STATUS_NO_MEMORY;
53803 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53804 + "size requested=%d.\n",
53805 + __func__, ha->host_no, ha->instance,
53806 + sizeof(EXT_DRIVER));)
53810 + sprintf(pdriver_prop->Version, qla2x00_version_str);
53811 + pdriver_prop->NumOfBus = MAX_BUSES;
53812 + pdriver_prop->TargetsPerBus = MAX_FIBRE_DEVICES;
53813 + pdriver_prop->LunsPerTarget = MAX_LUNS;
53814 + pdriver_prop->MaxTransferLen = 0xffffffff;
53815 + pdriver_prop->MaxDataSegments = 0xffffffff;
53817 + if (ha->flags.enable_64bit_addressing == 1)
53818 + pdriver_prop->DmaBitAddresses = 64;
53820 + pdriver_prop->DmaBitAddresses = 32;
53822 + if (pext->ResponseLen < sizeof(EXT_DRIVER))
53823 + transfer_size = pext->ResponseLen;
53825 + transfer_size = sizeof(EXT_DRIVER);
53827 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
53830 + pext->Status = EXT_STATUS_COPY_ERR;
53831 + DEBUG10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf.\n",
53832 + __func__, ha->host_no, ha->instance);)
53833 + qla2x00_free_ioctl_scrap_mem(ha);
53837 + /* now copy up the ISP to user */
53838 + usr_temp = (uint8_t *)pext->ResponseAdr;
53839 + kernel_tmp = (uint8_t *)pdriver_prop;
53840 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53842 + pext->Status = EXT_STATUS_COPY_ERR;
53843 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53844 + __func__, ha->host_no, ha->instance);)
53845 + qla2x00_free_ioctl_scrap_mem(ha);
53849 + pext->Status = EXT_STATUS_OK;
53850 + pext->DetailStatus = EXT_STATUS_OK;
53851 + qla2x00_free_ioctl_scrap_mem(ha);
53853 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53854 + __func__, ha->host_no, ha->instance);)
53860 + * qla2x00_query_fw
53861 + * Handles EXT_SC_QUERY_FW subcommand.
53864 + * ha = adapter state pointer.
53865 + * pext = EXT_IOCTL structure pointer.
53866 + * mode = not used.
53870 + * others = errno value
53873 + * Kernel context.
53876 +qla2x00_query_fw(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53879 + uint8_t *usr_temp, *kernel_tmp;
53880 + uint32_t transfer_size;
53881 + EXT_FW *pfw_prop;
53883 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53884 + __func__, ha->host_no, ha->instance);)
53886 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfw_prop,
53887 + sizeof(EXT_FW))) {
53888 + /* not enough memory */
53889 + pext->Status = EXT_STATUS_NO_MEMORY;
53890 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
53891 + "size requested=%d.\n",
53892 + __func__, ha->host_no, ha->instance,
53893 + sizeof(EXT_FW));)
53897 + pfw_prop->Version[0] = ha->fw_major_version;
53898 + pfw_prop->Version[1] = ha->fw_minor_version;
53899 + pfw_prop->Version[2] = ha->fw_subminor_version;
53901 + transfer_size = sizeof(EXT_FW);
53903 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
53906 + pext->Status = EXT_STATUS_COPY_ERR;
53907 + DEBUG10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp buf.\n",
53908 + __func__, ha->host_no, ha->instance);)
53909 + qla2x00_free_ioctl_scrap_mem(ha);
53913 + usr_temp = (uint8_t *)pext->ResponseAdr;
53914 + kernel_tmp = (uint8_t *)pfw_prop;
53915 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_size);
53917 + pext->Status = EXT_STATUS_COPY_ERR;
53918 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
53919 + __func__, ha->host_no, ha->instance);)
53920 + qla2x00_free_ioctl_scrap_mem(ha);
53924 + pext->Status = EXT_STATUS_OK;
53925 + pext->DetailStatus = EXT_STATUS_OK;
53926 + qla2x00_free_ioctl_scrap_mem(ha);
53928 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
53929 + __func__, ha->host_no, ha->instance);)
53934 +#if defined(ISP2300)
53936 + * qla2x00_send_els_passthru
53937 + * Passes the ELS command down to firmware as MSIOCB and
53938 + * copies the response back when it completes.
53941 + * ha = adapter state pointer.
53942 + * pext = EXT_IOCTL structure pointer.
53943 + * mode = not used.
53947 + * others = errno value
53950 + * Kernel context.
53953 +qla2x00_send_els_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
53956 + int tmp_rval = 0;
53959 + uint8_t invalid_wwn = FALSE;
53960 + uint8_t port_found;
53961 + uint8_t *ptmp_stat;
53962 + uint8_t *pusr_req_buf;
53963 + uint8_t *presp_payload;
53964 + uint32_t payload_len;
53965 + uint32_t usr_req_len;
53969 + fc_lun_t *ptemp_fclun; /* buf from scrap mem */
53970 + fc_port_t *ptemp_fcport; /* buf from scrap mem */
53972 + struct list_head *fcpl;
53973 + fc_port_t *fcport;
53978 + Scsi_Cmnd *pscsi_cmd;
53980 + srb_t *sp = NULL;
53981 + EXT_ELS_PT_REQ *pels_pt_req;
53983 + struct list_head *fcil;
53984 + fc_initiator_t *fcinitiator;
53987 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
53988 + __func__, ha->host_no, ha->instance);)
53990 + /* check on current topology */
53991 + if ((ha->current_topology != ISP_CFG_F) &&
53992 + (ha->current_topology != ISP_CFG_FL)) {
53993 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
53994 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR not in F or FL mode\n",
53995 + __func__, ha->host_no, ha->instance);)
53999 + if (ha->ioctl_mem_size <= 0) {
54000 + if (qla2x00_get_new_ioctl_dma_mem(ha,
54001 + QLA_INITIAL_IOCTLMEM_SIZE) != QL_STATUS_SUCCESS) {
54003 + DEBUG9_10(printk("%s: ERROR cannot alloc DMA "
54004 + "buffer size=%lx.\n",
54005 + __func__, QLA_INITIAL_IOCTLMEM_SIZE);)
54007 + pext->Status = EXT_STATUS_NO_MEMORY;
54012 + if (pext->ResponseLen > ha->ioctl_mem_size) {
54013 + if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
54014 + QL_STATUS_SUCCESS) {
54016 + DEBUG9_10(printk("%s: ERROR cannot alloc requested"
54017 + "DMA buffer size %x.\n",
54018 + __func__, pext->ResponseLen);)
54020 + pext->Status = EXT_STATUS_NO_MEMORY;
54024 + DEBUG9(printk("%s(%ld): inst=%ld rsp buf length larger than "
54025 + "existing size. Additional mem alloc successful.\n",
54026 + __func__, ha->host_no, ha->instance);)
54029 + usr_req_len = pext->RequestLen - sizeof(EXT_ELS_PT_REQ);
54030 + if (usr_req_len > ha->ioctl_mem_size) {
54031 + pext->Status = EXT_STATUS_INVALID_PARAM;
54033 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR ReqLen too big=%x.\n",
54034 + __func__, ha->host_no, ha->instance, pext->RequestLen);)
54039 + /* Verify entire EXT IOCTL request buffer */
54041 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
54042 + pext->RequestLen);
54044 + pext->Status = EXT_STATUS_COPY_ERR;
54045 + DEBUG9_10(printk(
54046 + "%s(%ld): inst=%ld ERROR verify read req buf\n",
54047 + __func__, ha->host_no, ha->instance);)
54052 + DEBUG9(printk("%s(%ld): inst=%ld req buf verified.\n",
54053 + __func__, ha->host_no, ha->instance);)
54055 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_cmd,
54056 + sizeof(Scsi_Cmnd))) {
54057 + /* not enough memory */
54058 + pext->Status = EXT_STATUS_NO_MEMORY;
54059 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54060 + "size requested=%d.\n",
54061 + __func__, ha->host_no, ha->instance,
54062 + sizeof(Scsi_Cmnd));)
54065 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pels_pt_req,
54066 + sizeof(EXT_ELS_PT_REQ))) {
54067 + /* not enough memory */
54068 + pext->Status = EXT_STATUS_NO_MEMORY;
54069 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54070 + "els_pt_req size requested=%d.\n",
54071 + __func__, ha->host_no, ha->instance,
54072 + sizeof(EXT_ELS_PT_REQ));)
54073 + goto els_passthru_done;
54075 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fclun,
54076 + sizeof(fc_lun_t))) {
54077 + /* not enough memory */
54078 + pext->Status = EXT_STATUS_NO_MEMORY;
54079 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54080 + "fclun size requested=%d.\n",
54081 + __func__, ha->host_no, ha->instance,
54082 + sizeof(fc_lun_t));)
54083 + goto els_passthru_done;
54085 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fcport,
54086 + sizeof(fc_port_t))) {
54087 + /* not enough memory */
54088 + pext->Status = EXT_STATUS_NO_MEMORY;
54089 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54090 + "fcport size requested=%d.\n",
54091 + __func__, ha->host_no, ha->instance,
54092 + sizeof(fc_port_t));)
54093 + goto els_passthru_done;
54098 + memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
54100 + /* copy request buffer */
54102 + ret = copy_from_user(pels_pt_req, pext->RequestAdr,
54103 + sizeof(EXT_ELS_PT_REQ));
54105 + pext->Status = EXT_STATUS_COPY_ERR;
54107 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR"
54108 + "copy_from_user() of struct failed (%d).\n",
54109 + __func__, ha->host_no, ha->instance, ret);)
54111 + goto els_passthru_done;
54114 + pusr_req_buf = (uint8_t *)pext->RequestAdr + sizeof(EXT_ELS_PT_REQ);
54116 + ret = copy_from_user(ha->ioctl_mem, pusr_req_buf, usr_req_len);
54118 + pext->Status = EXT_STATUS_COPY_ERR;
54120 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR"
54121 + "copy_from_user() of request buf failed (%d).\n",
54122 + __func__, ha->host_no, ha->instance, ret);)
54124 + goto els_passthru_done;
54127 + DEBUG9(printk("%s(%ld): inst=%ld after copy request.\n",
54128 + __func__, ha->host_no, ha->instance);)
54130 + /* check on loop down (1) */
54131 + if (ha->loop_state != LOOP_READY ||
54132 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
54133 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) || ABORTS_ACTIVE) {
54135 + DEBUG9_10(printk(
54136 + "%s(%ld): inst=%ld before dest port validation- loop not "
54137 + "ready; cannot proceed.\n",
54138 + __func__, ha->host_no, ha->instance);)
54140 + pext->Status = EXT_STATUS_BUSY;
54142 + goto els_passthru_done;
54145 + /*********************************/
54146 + /* Validate the destination port */
54147 + /*********************************/
54149 + /* first: WWN cannot be zero if no PID is specified */
54150 + invalid_wwn = qla2x00_is_wwn_zero(pels_pt_req->WWPN);
54151 + if (invalid_wwn && !(pels_pt_req->ValidMask & EXT_DEF_PID_VALID)) {
54152 + /* error: both are not set. */
54153 + pext->Status = EXT_STATUS_INVALID_PARAM;
54155 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR no valid WWPN/PID\n",
54156 + __func__, ha->host_no, ha->instance);)
54158 + goto els_passthru_done;
54161 + /* second: it cannot be the local/current HBA itself */
54162 + if (!invalid_wwn) {
54163 + if (memcmp(ha->init_cb->port_name, pels_pt_req->WWPN,
54164 + EXT_DEF_WWN_NAME_SIZE) == 0) {
54166 + /* local HBA specified. */
54168 + pext->Status = EXT_STATUS_INVALID_PARAM;
54169 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR local HBA's "
54171 + __func__, ha->host_no, ha->instance);)
54173 + goto els_passthru_done;
54175 + } else { /* using PID */
54176 + if (pels_pt_req->Id[1] == ha->d_id.r.d_id[2]
54177 + && pels_pt_req->Id[2] == ha->d_id.r.d_id[1]
54178 + && pels_pt_req->Id[3] == ha->d_id.r.d_id[0]) {
54180 + /* local HBA specified. */
54182 + pext->Status = EXT_STATUS_INVALID_PARAM;
54183 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR local HBA's "
54185 + __func__, ha->host_no, ha->instance);)
54187 + goto els_passthru_done;
54191 + /************************/
54192 + /* Now find the loop ID */
54193 + /************************/
54195 + /* 1st: scan thru our HBA database */
54197 + port_found = FALSE;
54198 + fcinitiator = NULL;
54199 + if (!invalid_wwn) {
54200 + /* search with WWPN */
54201 + list_for_each(fcil, &ha->fcinitiators) {
54202 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
54204 + if (memcmp(pels_pt_req->WWPN, fcinitiator->port_name,
54205 + EXT_DEF_WWN_NAME_SIZE) == 0) {
54207 + port_found = TRUE;
54208 + pels_pt_req->Lid = fcinitiator->loop_id;
54210 + DEBUG9(printk("%s(%ld): inst=%ld found host "
54211 + "w/ WWN. loop_id = %02x.\n",
54212 + __func__, ha->host_no, ha->instance,
54213 + pels_pt_req->Lid);)
54219 + /* search with PID */
54220 + list_for_each(fcil, &ha->fcinitiators) {
54221 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
54223 + if (pels_pt_req->Id[1] == fcinitiator->d_id.r.d_id[2]
54224 + && pels_pt_req->Id[2] == fcinitiator->d_id.r.d_id[1]
54225 + && pels_pt_req->Id[3] ==
54226 + fcinitiator->d_id.r.d_id[0]) {
54228 + port_found = TRUE;
54229 + pels_pt_req->Lid = fcinitiator->loop_id;
54231 + DEBUG9(printk("%s(%ld): inst=%ld found host "
54232 + "w/ WWN. loop_id = %02x.\n",
54233 + __func__, ha->host_no, ha->instance,
54234 + pels_pt_req->Lid);)
54241 + /* If this is for a host device, check if we need to perform login */
54242 + if (port_found && (fcinitiator->loop_id >= LAST_SNS_LOOP_ID)) {
54244 + DEBUG9_10(printk("%s(%ld): inst=%ld need to relogin to "
54246 + __func__, ha->host_no, ha->instance);)
54248 + if (fcinitiator->d_id.b24 == 0) {
54249 + /* Either RSCN hasn't been processed yet or
54250 + * this host is no longer connected to us.
54252 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54253 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR dest host "
54255 + __func__, ha->host_no, ha->instance);)
54257 + goto els_passthru_done;
54260 + /* login and update database */
54261 + tmpdev.d_id.b24 = fcinitiator->d_id.b24;
54262 + tmpdev.loop_id = fcinitiator->loop_id;
54264 + if (qla2x00_host_relogin(ha, &tmpdev) != 0) {
54265 + /* login failed. */
54266 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54268 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR login to "
54269 + "host port failed. loop_id=%02x pid=%02x%02x%02x "
54271 + __func__, ha->host_no, ha->instance, tmpdev.loop_id,
54272 + tmpdev.d_id.b.domain,
54273 + tmpdev.d_id.b.area,
54274 + tmpdev.d_id.b.al_pa,
54277 + goto els_passthru_done;
54279 + fcinitiator->loop_id = tmpdev.loop_id;
54280 + pels_pt_req->Lid = tmpdev.loop_id;
54282 + DEBUG9(printk("%s(%ld): inst=%ld success login to "
54283 + "remote host; Lid=%02x.\n",
54284 + __func__, ha->host_no, ha->instance,
54285 + fcinitiator->loop_id);)
54289 + /* 2nd: scan thru our fcport database */
54290 + if (!invalid_wwn && !port_found) {
54291 + /* search with WWPN */
54292 + list_for_each(fcpl, &ha->fcports) {
54293 + fcport = list_entry(fcpl, fc_port_t, list);
54295 + if (memcmp(fcport->port_name, pels_pt_req->WWPN,
54296 + EXT_DEF_WWN_NAME_SIZE) == 0) {
54298 + port_found = TRUE;
54299 + pels_pt_req->Lid = fcport->loop_id;
54301 + DEBUG9(printk("%s(%ld): inst=%ld found fcport "
54302 + "w/ WWN. loop_id = %02x.\n",
54303 + __func__, ha->host_no, ha->instance,
54304 + pels_pt_req->Lid);)
54308 + } else if (!port_found) {
54309 + /* search with PID */
54310 + list_for_each(fcpl, &ha->fcports) {
54311 + fcport = list_entry(fcpl, fc_port_t, list);
54313 + if (pels_pt_req->Id[1] == fcport->d_id.r.d_id[2]
54314 + && pels_pt_req->Id[2] == fcport->d_id.r.d_id[1]
54315 + && pels_pt_req->Id[3] == fcport->d_id.r.d_id[0]) {
54317 + port_found = TRUE;
54318 + pels_pt_req->Lid = fcport->loop_id;
54320 + DEBUG9(printk("%s(%ld): inst=%ld found fcport "
54321 + "w/ PID. loop_id = %02x.\n",
54322 + __func__, ha->host_no, ha->instance,
54323 + pels_pt_req->Lid);)
54330 + if (!port_found) {
54331 + /* invalid WWN or PID specified */
54332 + pext->Status = EXT_STATUS_INVALID_PARAM;
54333 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR WWPN/PID invalid.\n",
54334 + __func__, ha->host_no, ha->instance);)
54336 + goto els_passthru_done;
54340 + if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
54342 + pext->Status = EXT_STATUS_NO_MEMORY;
54343 + DEBUG9_10(printk("%s: ERROR cannot alloc sp %p.\n",
54346 + goto els_passthru_done;
54349 + DEBUG9(printk("%s(%ld): inst=%ld after alloc sp.\n",
54350 + __func__, ha->host_no, ha->instance);)
54352 + /* setup sp for this command */
54353 + ptq = ha->ioctl->ioctl_tq;
54354 + plq = ha->ioctl->ioctl_lq;
54355 + sp->cmd = pscsi_cmd;
54356 + sp->flags = SRB_IOCTL;
54357 + sp->lun_queue = plq;
54358 + sp->tgt_queue = ptq;
54359 + ptemp_fclun->fcport = ptemp_fcport;
54360 + ptemp_fclun->lun = 0;
54361 + ptemp_fclun->flags = 0;
54362 + plq->fclun = ptemp_fclun;
54363 + plq->fclun->fcport->ha = ha;
54365 + /* init scsi_cmd */
54366 + pscsi_cmd->device->host = ha->host;
54367 + pscsi_cmd->scsi_done = qla2x00_msiocb_done;
54369 + /* check on loop down (2)- check again just before sending cmd out. */
54370 + if (ha->loop_state != LOOP_READY ||
54371 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
54372 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
54375 + DEBUG9_10(printk("%s(%ld): inst=%ld before issue cmd- loop "
54377 + __func__, ha->host_no, ha->instance);)
54379 + pext->Status = EXT_STATUS_BUSY;
54381 + atomic_set(&sp->ref_count, 0);
54382 + add_to_free_queue (ha, sp);
54384 + goto els_passthru_done;
54387 + DEBUG9(printk("%s(%ld): inst=%ld going to issue command.\n",
54388 + __func__, ha->host_no, ha->instance);)
54390 + tmp_rval = qla2x00_start_ms_cmd(ha, pext, sp, pels_pt_req);
54392 + DEBUG9(printk("%s(%ld): inst=%ld after issue command.\n",
54393 + __func__, ha->host_no, ha->instance);)
54395 + if (tmp_rval != 0) {
54396 + /* We waited and post function did not get called */
54397 + DEBUG9_10(printk("%s(%ld): inst=%ld command timed out.\n",
54398 + __func__, ha->host_no, ha->instance);)
54400 + pext->Status = EXT_STATUS_MS_NO_RESPONSE;
54402 + atomic_set(&sp->ref_count, 0);
54403 + add_to_free_queue (ha, sp);
54405 + goto els_passthru_done;
54408 + /* check on data returned */
54409 + ptmp_stat = (uint8_t *)ha->ioctl_mem + FC_HEADER_LEN;
54411 + if (*ptmp_stat == ELS_STAT_LS_RJT) {
54412 + payload_len = FC_HEADER_LEN + ELS_RJT_LENGTH;
54414 + } else if (*ptmp_stat == ELS_STAT_LS_ACC) {
54415 + payload_len = pext->ResponseLen - sizeof(EXT_ELS_PT_REQ);
54418 + /* invalid. just copy the status word. */
54419 + DEBUG9_10(printk("%s(%ld): inst=%ld invalid stat "
54420 + "returned =0x%x.\n",
54421 + __func__, ha->host_no, ha->instance, *ptmp_stat);)
54423 + payload_len = FC_HEADER_LEN + 4;
54426 + DEBUG9(printk("%s(%ld): inst=%ld data dump-\n",
54427 + __func__, ha->host_no, ha->instance);)
54428 + DEBUG9(qla2x00_dump_buffer((uint8_t *)ptmp_stat,
54429 + pext->ResponseLen - sizeof(EXT_ELS_PT_REQ) - FC_HEADER_LEN);)
54431 + /* Verify response buffer to be written */
54432 + /* The data returned include FC frame header */
54433 + presp_payload = (uint8_t *)pext->ResponseAdr + sizeof(EXT_ELS_PT_REQ);
54435 + ret = verify_area(VERIFY_WRITE, (void *)presp_payload, payload_len);
54437 + pext->Status = EXT_STATUS_COPY_ERR;
54439 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp "
54440 + "buffer. ha=%p.\n",
54441 + __func__, ha->host_no, ha->instance, ha);)
54443 + goto els_passthru_done;
54446 + /* copy back data returned to response buffer */
54447 + ret = copy_to_user(presp_payload, (uint8_t *)ha->ioctl_mem,
54450 + pext->Status = EXT_STATUS_COPY_ERR;
54451 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
54452 + __func__, ha->host_no, ha->instance);)
54453 + goto els_passthru_done;
54456 + DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
54457 + __func__, ha->host_no, ha->instance);)
54459 +els_passthru_done:
54461 + qla2x00_free_ioctl_scrap_mem(ha);
54467 + * qla2x00_send_fcct
54468 + * Passes the FC CT command down to firmware as MSIOCB and
54469 + * copies the response back when it completes.
54472 + * ha = adapter state pointer.
54473 + * pext = EXT_IOCTL structure pointer.
54474 + * mode = not used.
54478 + * others = errno value
54481 + * Kernel context.
54484 +qla2x00_send_fcct(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
54487 + int tmp_rval = 0;
54488 + uint16_t mb[MAILBOX_REGISTER_COUNT];
54490 + fc_lun_t *ptemp_fclun;
54491 + fc_port_t *ptemp_fcport;
54496 + Scsi_Cmnd *pscsi_cmd;
54497 + srb_t *sp = NULL;
54499 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
54500 + __func__, ha->host_no, ha->instance);)
54502 + /* check on current topology */
54503 + if ((ha->current_topology != ISP_CFG_F) &&
54504 + (ha->current_topology != ISP_CFG_FL)) {
54505 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54506 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR not in F or FL mode\n",
54507 + __func__, ha->host_no, ha->instance);)
54511 + if (ha->ioctl_mem_size <= 0) {
54512 + if (qla2x00_get_new_ioctl_dma_mem(ha,
54513 + QLA_INITIAL_IOCTLMEM_SIZE) != QL_STATUS_SUCCESS) {
54515 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
54516 + "DMA buffer size=%lx.\n",
54517 + __func__, ha->host_no, ha->instance,
54518 + QLA_INITIAL_IOCTLMEM_SIZE);)
54520 + pext->Status = EXT_STATUS_NO_MEMORY;
54525 + if (pext->ResponseLen > ha->ioctl_mem_size) {
54526 + if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
54527 + QL_STATUS_SUCCESS) {
54528 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
54529 + "requested DMA buffer size %x.\n",
54530 + __func__, ha->host_no, ha->instance,
54531 + pext->ResponseLen);)
54532 + pext->Status = EXT_STATUS_NO_MEMORY;
54536 + DEBUG9(printk("%s(%ld): inst=%ld rsp buf len larger than "
54537 + "existing size. Additional mem alloc successful.\n",
54538 + __func__, ha->host_no, ha->instance);)
54541 + if (pext->RequestLen > ha->ioctl_mem_size) {
54542 + pext->Status = EXT_STATUS_INVALID_PARAM;
54543 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR ReqLen too big=%x.\n",
54544 + __func__, ha->host_no, ha->instance, pext->RequestLen);)
54549 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
54550 + pext->RequestLen);
54552 + pext->Status = EXT_STATUS_COPY_ERR;
54553 + DEBUG9_10(printk(
54554 + "%s(%ld): inst=%ld ERROR verify read req buf\n",
54555 + __func__, ha->host_no, ha->instance);)
54560 + DEBUG9(printk("%s(%ld): inst=%ld req buf verified.\n",
54561 + __func__, ha->host_no, ha->instance);)
54563 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_cmd,
54564 + sizeof(Scsi_Cmnd))) {
54565 + /* not enough memory */
54566 + pext->Status = EXT_STATUS_NO_MEMORY;
54567 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54568 + "size requested=%d.\n",
54569 + __func__, ha->host_no, ha->instance,
54570 + sizeof(Scsi_Cmnd));)
54573 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fclun,
54574 + sizeof(fc_lun_t))) {
54575 + /* not enough memory */
54576 + pext->Status = EXT_STATUS_NO_MEMORY;
54577 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54578 + "fclun size requested=%d.\n",
54579 + __func__, ha->host_no, ha->instance,
54580 + sizeof(fc_lun_t));)
54581 + goto fcct_passthru_done;
54583 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&ptemp_fcport,
54584 + sizeof(fc_port_t))) {
54585 + /* not enough memory */
54586 + pext->Status = EXT_STATUS_NO_MEMORY;
54587 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
54588 + "fcport size requested=%d.\n",
54589 + __func__, ha->host_no, ha->instance,
54590 + sizeof(fc_port_t));)
54591 + goto fcct_passthru_done;
54595 + memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
54597 + /* copy request buffer */
54598 + ret = copy_from_user(ha->ioctl_mem, pext->RequestAdr, pext->RequestLen);
54600 + pext->Status = EXT_STATUS_COPY_ERR;
54601 + DEBUG9_10(printk(
54602 + "%s(%ld): inst=%ld ERROR copy req buf. ret=%d\n",
54603 + __func__, ha->host_no, ha->instance, ret);)
54606 + goto fcct_passthru_done;
54609 + DEBUG9(printk("%s(%ld): inst=%ld after copy request.\n",
54610 + __func__, ha->host_no, ha->instance);)
54613 + if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
54615 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
54617 + __func__, ha->host_no, ha->instance, sp);)
54619 + pext->Status = EXT_STATUS_NO_MEMORY;
54620 + goto fcct_passthru_done;
54623 + DEBUG9(printk("%s(%ld): inst=%ld after alloc sp.\n",
54624 + __func__, ha->host_no, ha->instance);)
54626 + /* setup sp for this command */
54627 + tq = ha->ioctl->ioctl_tq;
54628 + lq = ha->ioctl->ioctl_lq;
54629 + sp->cmd = pscsi_cmd;
54630 + sp->flags = SRB_IOCTL;
54631 + sp->lun_queue = lq;
54632 + sp->tgt_queue = tq;
54633 + ptemp_fclun->fcport = ptemp_fcport;
54634 + ptemp_fclun->lun = 0;
54635 + ptemp_fclun->flags = 0;
54636 + lq->fclun = ptemp_fclun;
54637 + lq->fclun->fcport->ha = ha;
54639 + /* init scsi_cmd */
54640 + pscsi_cmd->device->host = ha->host;
54641 + pscsi_cmd->scsi_done = qla2x00_msiocb_done;
54643 + /* check on management server login status */
54644 + if (ha->flags.management_server_logged_in == 0) {
54645 + /* login to management server device */
54647 + tmp_rval = qla2x00_login_fabric(ha, MANAGEMENT_SERVER,
54648 + 0xff, 0xff, 0xfa, &mb[0], BIT_1);
54650 + if (tmp_rval != 0 || mb[0] != 0x4000) {
54651 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54653 + DEBUG10(printk("%s(%ld): inst=%ld ERROR login to MS.\n",
54654 + __func__, ha->host_no, ha->instance);)
54656 + atomic_set(&sp->ref_count, 0);
54657 + add_to_free_queue (ha, sp);
54659 + goto fcct_passthru_done;
54662 + ha->flags.management_server_logged_in = 1;
54665 + DEBUG9(printk("%s(%ld): success login to MS.\n",
54666 + __func__, ha->host_no);)
54668 + /* check on loop down */
54669 + if (ha->loop_state != LOOP_READY ||
54670 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
54671 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
54674 + DEBUG10(printk("%s(%ld): inst=%ld loop not ready.\n",
54675 + __func__, ha->host_no, ha->instance);)
54677 + pext->Status = EXT_STATUS_BUSY;
54679 + atomic_set(&sp->ref_count, 0);
54680 + add_to_free_queue (ha, sp);
54682 + goto fcct_passthru_done;
54685 + DEBUG9(printk("%s(%ld): inst=%ld going to issue command.\n",
54686 + __func__, ha->host_no, ha->instance);)
54688 + tmp_rval = qla2x00_start_ms_cmd(ha, pext, sp, NULL);
54690 + DEBUG9(printk("%s(%ld): inst=%ld after issue command.\n",
54691 + __func__, ha->host_no, ha->instance);)
54693 + if (tmp_rval != 0) {
54694 + /* We waited and post function did not get called */
54695 + DEBUG9_10(printk("%s(%ld): inst=%ld command timed out.\n",
54696 + __func__, ha->host_no, ha->instance);)
54697 + pext->Status = EXT_STATUS_MS_NO_RESPONSE;
54698 + atomic_set(&sp->ref_count, 0);
54699 + add_to_free_queue (ha, sp);
54701 + goto fcct_passthru_done;
54704 + if (CMD_COMPL_STATUS(pscsi_cmd) != 0 ||
54705 + CMD_ENTRY_STATUS(pscsi_cmd) != 0) {
54706 + DEBUG9_10(printk("%s(%ld): inst=%ld cmd returned error=%x.\n",
54707 + __func__, ha->host_no, ha->instance,
54708 + CMD_COMPL_STATUS(pscsi_cmd));)
54709 + pext->Status = EXT_STATUS_ERR;
54710 + goto fcct_passthru_done;
54713 + /* getting device data and putting in pext->ResponseAdr */
54714 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
54715 + pext->ResponseLen);
54717 + pext->Status = EXT_STATUS_COPY_ERR;
54718 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify wrt rsp "
54719 + "buffer. ha=%p.\n",
54720 + __func__, ha->host_no, ha->instance, ha);)
54721 + goto fcct_passthru_done;
54724 + /* sending back data returned from Management Server */
54725 + ret = copy_to_user((uint8_t *)pext->ResponseAdr,
54726 + (uint8_t *)ha->ioctl_mem, pext->ResponseLen);
54728 + pext->Status = EXT_STATUS_COPY_ERR;
54729 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
54730 + __func__, ha->host_no, ha->instance);)
54731 + goto fcct_passthru_done;
54734 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
54735 + __func__, ha->host_no, ha->instance);)
54737 +fcct_passthru_done:
54739 + qla2x00_free_ioctl_scrap_mem(ha);
54744 + * qla2x00_start_ms_cmd
54745 + * Allocates an MSIOCB request pkt and sends out the passthru cmd.
54748 + * ha = adapter state pointer.
54751 + * qla2x00 local function return status code.
54754 + * Kernel context.
54757 +qla2x00_start_ms_cmd(scsi_qla_host_t *ha, EXT_IOCTL *pext, srb_t *sp,
54758 + EXT_ELS_PT_REQ *pels_pt_req)
54760 +#define ELS_REQUEST_RCTL 0x22
54761 +#define ELS_REPLY_RCTL 0x23
54763 + uint32_t usr_req_len;
54764 + uint32_t usr_resp_len;
54765 + uint64_t usr_reqbuf_addr;
54767 + ms_iocb_entry_t *pkt;
54768 + unsigned long cpu_flags = 0;
54771 + /* get spin lock for this operation */
54772 + spin_lock_irqsave(&ha->hardware_lock, cpu_flags);
54774 + /* Get MS request packet. */
54775 + pkt = (ms_iocb_entry_t *)qla2x00_ms_req_pkt(ha, sp);
54776 + if (pkt == NULL) {
54777 + /* release spin lock and return error. */
54778 + spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
54780 + pext->Status = EXT_STATUS_NO_MEMORY;
54781 + DEBUG10(printk("%s(%ld): inst=%ld MSIOCB PT - could not get "
54782 + "Request Packet.\n", __func__, ha->host_no, ha->instance);)
54783 + return (QL_STATUS_RESOURCE_ERROR);
54786 + pkt->entry_type = MS_IOCB_TYPE;
54787 + pkt->entry_count = 1;
54789 + if (pels_pt_req != NULL) {
54790 + /* process ELS passthru command */
54791 + usr_reqbuf_addr = (uint64_t)ha->ioctl_mem_phys +
54792 + sizeof(EXT_ELS_PT_REQ);
54793 + usr_req_len = pext->RequestLen - sizeof(EXT_ELS_PT_REQ);
54794 + usr_resp_len = pext->ResponseLen - sizeof(EXT_ELS_PT_REQ);
54796 + pkt->control_flags = BIT_15; /* ELS passthru enabled */
54797 + pkt->loop_id = pels_pt_req->Lid;
54798 + pkt->type = 1; /* ELS frame */
54800 + if (pext->ResponseLen != 0) {
54801 + pkt->r_ctl = ELS_REQUEST_RCTL;
54804 + pkt->r_ctl = ELS_REPLY_RCTL;
54805 + pkt->rx_id = pels_pt_req->Rxid;
54808 + usr_reqbuf_addr = (uint64_t)ha->ioctl_mem_phys;
54809 + usr_req_len = pext->RequestLen;
54810 + usr_resp_len = pext->ResponseLen;
54811 + pkt->loop_id = MANAGEMENT_SERVER;
54814 + DEBUG9_10(printk("%s(%ld): inst=%ld using loop_id=%02x req_len=%d, "
54815 + "resp_len=%d.\n", __func__, ha->host_no, ha->instance,
54816 + pkt->loop_id, usr_req_len, usr_resp_len);)
54818 + pkt->timeout = QLA_PT_CMD_TOV;
54819 + pkt->cmd_dsd_count = 1;
54820 + pkt->total_dsd_count = 2; /* no continuation */
54821 + pkt->rsp_bytecount = usr_resp_len;
54822 + pkt->req_bytecount = usr_req_len;
54824 + /* loading command payload address */
54825 + pkt->dseg_req_address[0] = LSD(usr_reqbuf_addr);
54826 + pkt->dseg_req_address[1] = MSD(usr_reqbuf_addr);
54827 + pkt->dseg_req_length = usr_req_len;
54829 + /* loading response payload address */
54830 + pkt->dseg_rsp_address[0] = LSD(ha->ioctl_mem_phys);
54831 + pkt->dseg_rsp_address[1] = MSD(ha->ioctl_mem_phys);
54832 + pkt->dseg_rsp_length = usr_resp_len;
54834 + /* set flag to indicate IOCTL MSIOCB cmd in progress */
54835 + ha->ioctl->MSIOCB_InProgress = 1;
54836 + ha->ioctl->ioctl_tov = pkt->timeout + 1; /* 1 second more */
54838 + /* prepare for receiving completion. */
54839 + qla2x00_ioctl_sem_init(ha);
54841 + /* Issue command to ISP */
54842 + qla2x00_isp_cmd(ha);
54844 + ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
54845 + add_timer(&ha->ioctl->cmpl_timer);
54847 + DEBUG9(printk("%s(%ld): inst=%ld releasing hardware_lock.\n",
54848 + __func__, ha->host_no, ha->instance);)
54849 + spin_unlock_irqrestore(&ha->hardware_lock, cpu_flags);
54851 + DEBUG9(printk("%s(%ld): inst=%ld sleep for completion.\n",
54852 + __func__, ha->host_no, ha->instance);)
54854 + down(&ha->ioctl->cmpl_sem);
54856 + del_timer(&ha->ioctl->cmpl_timer);
54858 + if (ha->ioctl->MSIOCB_InProgress == 1) {
54859 + DEBUG9_10(printk("%s(%ld): inst=%ld timed out. exiting.\n",
54860 + __func__, ha->host_no, ha->instance);)
54861 + return QL_STATUS_ERROR;
54864 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
54865 + __func__, ha->host_no, ha->instance);)
54867 + return QL_STATUS_SUCCESS;
54871 + * qla2x00_wwpn_to_scsiaddr
54872 + * Handles the EXT_CC_WWPN_TO_SCSIADDR command.
54875 + * ha = adapter state pointer.
54876 + * pext = EXT_IOCTL structure pointer.
54877 + * mode = not used.
54881 + * others = errno value
54884 + * Kernel context.
54887 +qla2x00_wwpn_to_scsiaddr(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
54890 + fc_port_t *tgt_fcport;
54892 + uint8_t tmp_wwpn[EXT_DEF_WWN_NAME_SIZE];
54893 + uint32_t b, tgt, l;
54894 + EXT_SCSI_ADDR tmp_addr;
54897 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
54898 + __func__, ha->host_no, ha->instance);)
54900 + if (pext->RequestLen != EXT_DEF_WWN_NAME_SIZE ||
54901 + pext->ResponseLen < sizeof(EXT_SCSI_ADDR)) {
54903 + DEBUG9_10(printk("%s(%ld): inst=%ld invalid WWN buffer size %d "
54905 + __func__, ha->host_no, ha->instance, pext->ResponseLen);)
54906 + pext->Status = EXT_STATUS_INVALID_PARAM;
54911 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
54912 + pext->RequestLen);
54914 + DEBUG9_10(printk(
54915 + "%s(%ld): inst=%ld ERROR VERIFY_READ req buf\n",
54916 + __func__, ha->host_no, ha->instance);)
54917 + pext->Status = EXT_STATUS_COPY_ERR;
54921 + ret = copy_from_user(tmp_wwpn, pext->RequestAdr, pext->RequestLen);
54923 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy_from_user "
54924 + "failed(%d) on request buf.\n",
54925 + __func__, ha->host_no, ha->instance, ret);)
54926 + pext->Status = EXT_STATUS_COPY_ERR;
54931 + for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
54932 + if (ha->otgt[tgt] == NULL) {
54936 + tq = ha->otgt[tgt];
54937 + if (tq->vis_port == NULL) {
54941 + tgt_fcport = tq->vis_port;
54942 + if (memcmp(tmp_wwpn, tgt_fcport->port_name,
54943 + EXT_DEF_WWN_NAME_SIZE) == 0) {
54948 + if (tq == NULL || tgt >= MAX_TARGETS) {
54949 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
54950 + DEBUG9_10(printk("%s(%ld): inst=%ld target dev not found. "
54951 + "tq=%p, tgt=%x.\n", __func__, ha->host_no, ha->instance,
54956 + if (tq->vis_port == NULL) { /* dg 08/14/01 */
54957 + pext->Status = EXT_STATUS_BUSY;
54958 + DEBUG9_10(printk("%s(%ld): inst=%ld target port not found. "
54959 + "tq=%p, tgt=%x.\n",
54960 + __func__, ha->host_no, ha->instance, tq, tgt);)
54964 + /* Currently we only have bus 0 and no translation on LUN */
54969 + * Return SCSI address. Currently no translation is done for
54972 + tmp_addr.Bus = b;
54973 + tmp_addr.Target = tgt;
54974 + tmp_addr.Lun = l;
54975 + if (pext->ResponseLen > sizeof(EXT_SCSI_ADDR))
54976 + pext->ResponseLen = sizeof(EXT_SCSI_ADDR);
54978 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
54979 + pext->ResponseLen);
54981 + pext->Status = EXT_STATUS_COPY_ERR;
54982 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR VERIFY wrt rsp buf\n",
54983 + __func__, ha->host_no, ha->instance);)
54987 + ret = copy_to_user((uint8_t *)pext->ResponseAdr, &tmp_addr,
54988 + pext->ResponseLen);
54990 + pext->Status = EXT_STATUS_COPY_ERR;
54991 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buffer.\n",
54992 + __func__, ha->host_no, ha->instance);)
54996 + DEBUG9(printk(KERN_INFO
54997 + "%s(%ld): Found t%d l%d for %02x%02x%02x%02x%02x%02x%02x%02x.\n",
54998 + __func__, ha->host_no,
54999 + tmp_addr.Target, tmp_addr.Lun,
55000 + tmp_wwpn[0], tmp_wwpn[1], tmp_wwpn[2], tmp_wwpn[3],
55001 + tmp_wwpn[4], tmp_wwpn[5], tmp_wwpn[6], tmp_wwpn[7]);)
55003 + pext->Status = EXT_STATUS_OK;
55005 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
55006 + __func__, ha->host_no, ha->instance);)
55012 + * qla2x00_scsi_passthru
55013 + * Handles all subcommands of the EXT_CC_SEND_SCSI_PASSTHRU command.
55016 + * ha = adapter state pointer.
55017 + * pext = EXT_IOCTL structure pointer.
55018 + * mode = not used.
55022 + * others = errno value
55025 + * Kernel context.
55028 +qla2x00_scsi_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55030 + int tmp_rval = 0;
55032 + switch(pext->SubCode) {
55033 + case EXT_SC_SEND_SCSI_PASSTHRU:
55034 + tmp_rval = qla2x00_sc_scsi_passthru(ha, pext, mode);
55036 + case EXT_SC_SEND_FC_SCSI_PASSTHRU:
55037 + tmp_rval = qla2x00_sc_fc_scsi_passthru(ha, pext, mode);
55039 + case EXT_SC_SCSI3_PASSTHRU:
55040 + tmp_rval = qla2x00_sc_scsi3_passthru(ha, pext, mode);
55050 + * qla2x00_sc_scsi_passthru
55051 + * Handles EXT_SC_SEND_SCSI_PASSTHRU subcommand.
55054 + * ha = adapter state pointer.
55055 + * pext = EXT_IOCTL structure pointer.
55056 + * mode = not used.
55060 + * others = errno value
55063 + * Kernel context.
55066 +qla2x00_sc_scsi_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55069 + uint8_t *usr_temp, *kernel_tmp;
55070 + uint8_t scsi_direction;
55073 +#if defined(QL_DEBUG_LEVEL_9)
55074 + uint32_t b, t, l;
55076 + uint32_t transfer_len;
55078 + EXT_SCSI_PASSTHRU *pscsi_pass;
55080 + Scsi_Cmnd *pscsi_cmd;
55081 + Scsi_Device *pscsi_device;
55083 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
55084 + __func__, ha->host_no, ha->instance);)
55086 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
55087 + sizeof(EXT_SCSI_PASSTHRU));
55089 + pext->Status = EXT_STATUS_COPY_ERR;
55090 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ "
55092 + __func__, ha->host_no, ha->instance);)
55096 + if (pext->ResponseLen > ha->ioctl_mem_size) {
55097 + if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
55098 + QL_STATUS_SUCCESS) {
55099 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
55100 + "requested DMA buffer size %x.\n",
55101 + __func__, ha->host_no, ha->instance,
55102 + pext->ResponseLen);)
55103 + pext->Status = EXT_STATUS_NO_MEMORY;
55108 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_pass,
55109 + sizeof(EXT_SCSI_PASSTHRU))) {
55110 + /* not enough memory */
55111 + pext->Status = EXT_STATUS_NO_MEMORY;
55112 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55113 + "size requested=%d.\n",
55114 + __func__, ha->host_no, ha->instance,
55115 + sizeof(EXT_SCSI_PASSTHRU));)
55119 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_cmd,
55120 + sizeof(Scsi_Cmnd))) {
55121 + /* not enough memory */
55122 + pext->Status = EXT_STATUS_NO_MEMORY;
55123 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55124 + "pscsi_cmd requested=%d.\n",
55125 + __func__, ha->host_no, ha->instance,
55126 + sizeof(Scsi_Cmnd));)
55127 + goto scsi_passthru_done;
55130 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi_device,
55131 + sizeof(Scsi_Device))) {
55132 + /* not enough memory */
55133 + pext->Status = EXT_STATUS_NO_MEMORY;
55134 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55135 + "pscsi_device requested=%d.\n",
55136 + __func__, ha->host_no, ha->instance,
55137 + sizeof(Scsi_Device));)
55138 + goto scsi_passthru_done;
55141 + /* clear ioctl_mem to be used */
55142 + memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
55144 + /* Copy request buffer */
55145 + usr_temp = (uint8_t *)pext->RequestAdr;
55146 + kernel_tmp = (uint8_t *)pscsi_pass;
55147 + ret = copy_from_user(kernel_tmp, usr_temp, sizeof(EXT_SCSI_PASSTHRU));
55149 + pext->Status = EXT_STATUS_COPY_ERR;
55150 + DEBUG9_10(printk(
55151 + "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
55152 + __func__, ha->host_no, ha->instance, ret);)
55153 + goto scsi_passthru_done;
55156 + /* set target coordinates */
55157 + pscsi_cmd->device->id = pscsi_pass->TargetAddr.Target;
55158 + pscsi_cmd->device->lun = pscsi_pass->TargetAddr.Lun;
55160 + /* Verify target exists */
55161 + if (TGT_Q(ha, pscsi_cmd->device->id) == NULL) {
55162 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55163 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR tgt %d not found.\n",
55165 + ha->host_no, ha->instance, pscsi_cmd->device->id));
55166 + goto scsi_passthru_done;
55169 + /* Copy over cdb */
55171 + if (pscsi_pass->CdbLength == 6) {
55172 + pscsi_cmd->cmd_len = 6;
55174 + } else if (pscsi_pass->CdbLength == 10) {
55175 + pscsi_cmd->cmd_len = 0x0A;
55177 + } else if (pscsi_pass->CdbLength == 12) {
55178 + pscsi_cmd->cmd_len = 0x0C;
55181 + printk(KERN_WARNING
55182 + "%s: Unsupported Cdb Length=%x.\n",
55183 + __func__, pscsi_pass->CdbLength);
55185 + pext->Status = EXT_STATUS_INVALID_PARAM;
55186 + goto scsi_passthru_done;
55189 + memcpy(pscsi_cmd->data_cmnd, pscsi_pass->Cdb, pscsi_cmd->cmd_len);
55190 + memcpy(pscsi_cmd->cmnd, pscsi_pass->Cdb, pscsi_cmd->cmd_len);
55192 + DEBUG9(printk("%s Dump of cdb buffer:\n", __func__);)
55193 + DEBUG9(qla2x00_dump_buffer((uint8_t *)&pscsi_cmd->data_cmnd[0],
55194 + pscsi_cmd->cmd_len);)
55196 + pscsi_cmd->device->host = ha->host;
55198 + /* mark this as a special delivery and collection command */
55199 + pscsi_cmd->flags = 0;
55200 + pscsi_cmd->scsi_done = qla2x00_scsi_pt_done;
55202 + pscsi_cmd->device = pscsi_device;
55203 + pscsi_cmd->device->tagged_queue = 0;
55204 + pscsi_cmd->use_sg = 0; /* no ScatterGather */
55205 + pscsi_cmd->request_bufflen = pext->ResponseLen;
55206 + pscsi_cmd->request_buffer = ha->ioctl_mem;
55207 + pscsi_cmd->timeout_per_command = QLA_PT_CMD_TOV * HZ;
55208 + CMD_RESID_LEN(pscsi_cmd) = SRB_IOCTL; /* Used to set sp->flags later */
55210 + if (pscsi_pass->Direction == EXT_DEF_SCSI_PASSTHRU_DATA_OUT) {
55211 + /* sending user data from pext->ResponseAdr to device */
55212 + ret = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
55213 + pext->ResponseLen);
55215 + pext->Status = EXT_STATUS_COPY_ERR;
55216 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ "
55217 + "rsp buf.\n", __func__, ha->host_no, ha->instance);)
55218 + goto scsi_passthru_done;
55221 + pscsi_cmd->sc_data_direction = SCSI_DATA_WRITE;
55222 + usr_temp = (uint8_t *)pext->ResponseAdr;
55223 + kernel_tmp = (uint8_t *)ha->ioctl_mem;
55224 + ret = copy_from_user(kernel_tmp, usr_temp, pext->ResponseLen);
55226 + pext->Status = EXT_STATUS_COPY_ERR;
55227 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf "
55229 + __func__, ha->host_no, ha->instance, ret);)
55230 + goto scsi_passthru_done;
55233 + pscsi_cmd->sc_data_direction = SCSI_DATA_READ;
55237 + b = SCSI_BUS_32(pscsi_cmd);
55238 + t = SCSI_TCN_32(pscsi_cmd);
55239 + l = SCSI_LUN_32(pscsi_cmd);
55241 + DEBUG9(printk("%s(%ld): CDB=%02x %02x %02x %02x; b=%x t=%x l=%x.\n",
55242 + __func__, ha->host_no, pscsi_cmd->cmnd[0], pscsi_cmd->cmnd[1],
55243 + pscsi_cmd->cmnd[2], pscsi_cmd->cmnd[3], b, t, l);)
55246 + * Check the status of the port
55248 + if (qla2x00_check_tgt_status(ha, pscsi_cmd) != QL_STATUS_SUCCESS) {
55249 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55250 + DEBUG9_10(printk("%s(%ld): inst=%ld check_tgt_status "
55252 + __func__, ha->host_no, ha->instance);)
55253 + goto scsi_passthru_done;
55256 + /* set flag to indicate IOCTL SCSI PassThru in progress */
55257 + ha->ioctl->SCSIPT_InProgress = 1;
55258 + ha->ioctl->ioctl_tov = (int)QLA_PT_CMD_DRV_TOV;
55260 + /* prepare for receiving completion. */
55261 + qla2x00_ioctl_sem_init(ha);
55262 + CMD_COMPL_STATUS(pscsi_cmd) = (int) IOCTL_INVALID_STATUS;
55264 + /* send command to adapter */
55265 + DEBUG9(printk("%s(%ld): inst=%ld sending command.\n",
55266 + __func__, ha->host_no, ha->instance);)
55268 + /* get spin lock for this operation */
55269 + spin_lock_irqsave(ha->host->host_lock, ha->cpu_flags);
55271 + qla2x00_queuecommand(pscsi_cmd, (void *) qla2x00_scsi_pt_done);
55273 + ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
55274 + add_timer(&ha->ioctl->cmpl_timer);
55276 + spin_unlock_irqrestore(ha->host->host_lock, ha->cpu_flags);
55278 + DEBUG9(printk("%s(%ld): inst=%ld waiting for completion.\n",
55279 + __func__, ha->host_no, ha->instance);)
55281 + down(&ha->ioctl->cmpl_sem);
55283 + del_timer(&ha->ioctl->cmpl_timer);
55285 + DEBUG9(printk("%s(%ld): inst=%ld completed.\n",
55286 + __func__, ha->host_no, ha->instance);)
55288 + if (ha->ioctl->SCSIPT_InProgress == 1) {
55290 + printk(KERN_WARNING
55291 + "qla2x00: scsi%ld ERROR passthru command timeout.\n",
55294 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55295 + goto scsi_passthru_done;
55298 + if (CMD_COMPL_STATUS(pscsi_cmd) == (int)IOCTL_INVALID_STATUS) {
55300 + DEBUG9(printk("%s(%ld): inst=%ld ERROR - cmd not completed.\n",
55301 + __func__, ha->host_no, ha->instance);)
55303 + pext->Status = EXT_STATUS_ERR;
55304 + goto scsi_passthru_done;
55307 + switch (CMD_COMPL_STATUS(pscsi_cmd)) {
55308 + case CS_INCOMPLETE:
55310 + case CS_PORT_UNAVAILABLE:
55311 + case CS_PORT_LOGGED_OUT:
55312 + case CS_PORT_CONFIG_CHG:
55313 + case CS_PORT_BUSY:
55314 + DEBUG9_10(printk("%s(%ld): inst=%ld cs err = %x.\n",
55315 + __func__, ha->host_no, ha->instance,
55316 + CMD_COMPL_STATUS(pscsi_cmd));)
55317 + pext->Status = EXT_STATUS_BUSY;
55319 + goto scsi_passthru_done;
55322 + if ((CMD_COMPL_STATUS(pscsi_cmd) == CS_DATA_UNDERRUN) ||
55323 + (CMD_SCSI_STATUS(pscsi_cmd) != 0)) {
55325 + /* have done the post function */
55326 + pext->Status = EXT_STATUS_SCSI_STATUS;
55327 + pext->DetailStatus = CMD_SCSI_STATUS(pscsi_cmd) & 0xff;
55328 + DEBUG9_10(printk("%s(%ld): inst=%ld data underrun or scsi err. "
55329 + "host status =0x%x, scsi status = 0x%x.\n",
55330 + __func__, ha->host_no, ha->instance,
55331 + CMD_COMPL_STATUS(pscsi_cmd), CMD_SCSI_STATUS(pscsi_cmd));)
55333 + } else if (CMD_COMPL_STATUS(pscsi_cmd) != 0) {
55334 + DEBUG9_10(printk("%s(%ld): inst=%ld cs err=%x.\n",
55335 + __func__, ha->host_no, ha->instance,
55336 + CMD_COMPL_STATUS(pscsi_cmd));)
55337 + pext->Status = EXT_STATUS_ERR;
55338 + goto scsi_passthru_done;
55341 + /* copy up structure to make sense data available to user */
55342 + pscsi_pass->SenseLength = CMD_ACTUAL_SNSLEN(pscsi_cmd);
55343 + if (CMD_ACTUAL_SNSLEN(pscsi_cmd)) {
55344 + for (i = 0; i < CMD_ACTUAL_SNSLEN(pscsi_cmd); i++)
55345 + pscsi_pass->SenseData[i] = pscsi_cmd->sense_buffer[i];
55347 + DEBUG10(printk("%s Dump of sense buffer:\n", __func__);)
55348 + DEBUG10(qla2x00_dump_buffer(
55349 + (uint8_t *)&pscsi_pass->SenseData[0],
55350 + CMD_ACTUAL_SNSLEN(pscsi_cmd));)
55352 + ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr,
55353 + sizeof(EXT_SCSI_PASSTHRU));
55355 + pext->Status = EXT_STATUS_COPY_ERR;
55356 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
55357 + "req buf.\n", __func__, ha->host_no, ha->instance);)
55358 + goto scsi_passthru_done;
55361 + usr_temp = (uint8_t *)pext->RequestAdr;
55362 + kernel_tmp = (uint8_t *)pscsi_pass;
55363 + ret = copy_to_user(usr_temp, kernel_tmp,
55364 + sizeof(EXT_SCSI_PASSTHRU));
55366 + pext->Status = EXT_STATUS_COPY_ERR;
55367 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy sense "
55369 + __func__, ha->host_no, ha->instance);)
55370 + goto scsi_passthru_done;
55374 + scsi_direction = pscsi_pass->Direction;
55376 + if (scsi_direction == EXT_DEF_SCSI_PASSTHRU_DATA_IN) {
55377 + DEBUG9(printk("%s(%ld): inst=%ld copying data.\n",
55378 + __func__, ha->host_no, ha->instance);)
55380 + /* getting device data and putting in pext->ResponseAdr */
55381 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr ,
55382 + pext->ResponseLen);
55384 + pext->Status = EXT_STATUS_COPY_ERR;
55385 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write "
55386 + "ResponseAdr.\n",
55387 + __func__, ha->host_no, ha->instance);)
55388 + goto scsi_passthru_done;
55391 + /* now copy up the READ data to user */
55392 + if ((CMD_COMPL_STATUS(pscsi_cmd) == CS_DATA_UNDERRUN) &&
55393 + (CMD_RESID_LEN(pscsi_cmd))) {
55395 + transfer_len = pext->ResponseLen -
55396 + CMD_RESID_LEN(pscsi_cmd);
55398 + pext->ResponseLen = transfer_len;
55400 + transfer_len = pext->ResponseLen;
55403 + usr_temp = (uint8_t *)pext->ResponseAdr;
55404 + kernel_tmp = (uint8_t *)ha->ioctl_mem;
55405 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_len);
55407 + pext->Status = EXT_STATUS_COPY_ERR;
55408 + DEBUG9_10(printk(
55409 + "%s(%ld): inst=%ld ERROR copy rsp buf\n",
55410 + __func__, ha->host_no, ha->instance);)
55411 + goto scsi_passthru_done;
55415 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
55416 + __func__, ha->host_no, ha->instance);)
55418 +scsi_passthru_done:
55420 + qla2x00_free_ioctl_scrap_mem(ha);
55425 + * qla2x00_sc_fc_scsi_passthru
55426 + * Handles EXT_SC_SEND_FC_SCSI_PASSTHRU subcommand.
55429 + * ha = adapter state pointer.
55430 + * pext = EXT_IOCTL structure pointer.
55431 + * mode = not used.
55435 + * others = errno value
55438 + * Kernel context.
55441 +qla2x00_sc_fc_scsi_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55444 + int port_found, lun_found;
55445 + fc_lun_t temp_fclun;
55446 + struct list_head *fcpl;
55447 + fc_port_t *fcport;
55448 + struct list_head *fcll;
55449 + fc_lun_t *fclun = NULL;
55452 + srb_t *sp = NULL;
55453 + uint8_t *usr_temp, *kernel_tmp;
55456 +#if defined(QL_DEBUG_LEVEL_9)
55457 + uint32_t b, t, l;
55459 + uint32_t transfer_len;
55460 + uint8_t scsi_direction;
55462 + EXT_FC_SCSI_PASSTHRU *pfc_scsi_pass;
55464 + Scsi_Cmnd *pfc_scsi_cmd;
55465 + Scsi_Device *pfc_scsi_device;
55467 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
55468 + __func__, ha->host_no, ha->instance);)
55470 + if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
55472 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc sp.\n",
55473 + __func__, ha->host_no, ha->instance);)
55475 + pext->Status = EXT_STATUS_NO_MEMORY;
55479 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi_pass,
55480 + sizeof(EXT_FC_SCSI_PASSTHRU))) {
55481 + /* not enough memory */
55482 + pext->Status = EXT_STATUS_NO_MEMORY;
55483 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55484 + "size requested=%d.\n",
55485 + __func__, ha->host_no, ha->instance,
55486 + sizeof(EXT_FC_SCSI_PASSTHRU));)
55490 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi_cmd,
55491 + sizeof(Scsi_Cmnd))) {
55492 + /* not enough memory */
55493 + pext->Status = EXT_STATUS_NO_MEMORY;
55494 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55495 + "size requested=%d.\n",
55496 + __func__, ha->host_no, ha->instance,
55497 + sizeof(Scsi_Cmnd));)
55498 + goto fc_scsi_passthru_done;
55501 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi_device,
55502 + sizeof(Scsi_Device))) {
55503 + /* not enough memory */
55504 + pext->Status = EXT_STATUS_NO_MEMORY;
55505 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55506 + "size requested=%d.\n",
55507 + __func__, ha->host_no, ha->instance,
55508 + sizeof(Scsi_Device));)
55509 + goto fc_scsi_passthru_done;
55512 + /* clear ioctl_mem to be used */
55513 + memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
55515 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
55516 + sizeof(EXT_FC_SCSI_PASSTHRU));
55518 + pext->Status = EXT_STATUS_COPY_ERR;
55519 + DEBUG9_10(printk(
55520 + "%s(%ld): inst=%ld ERROR verify READ req buf.\n",
55521 + __func__, ha->host_no, ha->instance);)
55522 + atomic_set(&sp->ref_count, 0);
55523 + add_to_free_queue (ha, sp);
55525 + goto fc_scsi_passthru_done;
55528 + if (pext->ResponseLen > ha->ioctl_mem_size) {
55529 + if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
55530 + QL_STATUS_SUCCESS) {
55532 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
55533 + "requested DMA buffer size %x.\n",
55534 + __func__, ha->host_no, ha->instance,
55535 + pext->ResponseLen);)
55537 + pext->Status = EXT_STATUS_NO_MEMORY;
55538 + atomic_set(&sp->ref_count, 0);
55539 + add_to_free_queue (ha, sp);
55540 + goto fc_scsi_passthru_done;
55544 + /* Copy request buffer */
55545 + usr_temp = (uint8_t *)pext->RequestAdr;
55546 + kernel_tmp = (uint8_t *)pfc_scsi_pass;
55547 + ret = copy_from_user(kernel_tmp, usr_temp,
55548 + sizeof(EXT_FC_SCSI_PASSTHRU));
55550 + pext->Status = EXT_STATUS_COPY_ERR;
55551 + DEBUG9_10(printk(
55552 + "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
55553 + __func__, ha->host_no, ha->instance, ret);)
55554 + atomic_set(&sp->ref_count, 0);
55555 + add_to_free_queue (ha, sp);
55557 + goto fc_scsi_passthru_done;
55560 + if (pfc_scsi_pass->FCScsiAddr.DestType != EXT_DEF_DESTTYPE_WWPN) {
55561 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55562 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR -wrong Dest type. \n",
55563 + __func__, ha->host_no, ha->instance);)
55564 + ret = EXT_STATUS_ERR;
55565 + atomic_set(&sp->ref_count, 0);
55566 + add_to_free_queue (ha, sp);
55567 + goto fc_scsi_passthru_done;
55572 + port_found = lun_found = 0;
55573 + list_for_each(fcpl, &ha->fcports) {
55574 + fcport = list_entry(fcpl, fc_port_t, list);
55576 + if (memcmp(fcport->port_name,
55577 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN, 8) != 0) {
55583 + list_for_each(fcll, &fcport->fcluns) {
55584 + fclun = list_entry(fcll, fc_lun_t, list);
55586 + if (fclun->lun == pfc_scsi_pass->FCScsiAddr.Lun) {
55587 + /* Found the right LUN */
55595 + if (!port_found) {
55596 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55597 + DEBUG9_10(printk("%s(%ld): inst=%ld FC AddrFormat - DID NOT "
55598 + "FIND Port matching WWPN.\n",
55599 + __func__, ha->host_no, ha->instance);)
55600 + atomic_set(&sp->ref_count, 0);
55601 + add_to_free_queue (ha, sp);
55602 + goto fc_scsi_passthru_done;
55605 + /* v5.21b9 - use a temporary fclun */
55606 + if (!lun_found) {
55607 + fclun = &temp_fclun;
55608 + fclun->fcport = fcport;
55609 + fclun->lun = pfc_scsi_pass->FCScsiAddr.Lun;
55610 + fclun->flags = 0;
55613 + /* set target coordinates */
55614 + pfc_scsi_cmd->device->id = 0xff; /* not used. just put something there. */
55615 + pfc_scsi_cmd->device->lun = pfc_scsi_pass->FCScsiAddr.Lun;
55617 + DEBUG9(printk("%s(%ld): inst=%ld cmd for loopid=%04x L=%04x "
55618 + "WWPN=%02x%02x%02x%02x%02x%02x%02x%02x.\n",
55619 + __func__, ha->host_no, ha->instance, fclun->fcport->loop_id,
55620 + pfc_scsi_cmd->device->lun,
55621 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[0],
55622 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[1],
55623 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[2],
55624 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[3],
55625 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[4],
55626 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[5],
55627 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[6],
55628 + pfc_scsi_pass->FCScsiAddr.DestAddr.WWPN[7]);)
55630 + if (pfc_scsi_pass->CdbLength == 6) {
55631 + sp->cmd_length = 6;
55632 + pfc_scsi_cmd->cmd_len = 6;
55634 + } else if (pfc_scsi_pass->CdbLength == 0x0A) {
55635 + sp->cmd_length = 0x0A;
55636 + pfc_scsi_cmd->cmd_len = 0x0A;
55638 + } else if (pfc_scsi_pass->CdbLength == 0x0C) {
55639 + sp->cmd_length = 0x0C;
55640 + pfc_scsi_cmd->cmd_len = 0x0C;
55642 + } else if (pfc_scsi_pass->CdbLength == 0x10) {
55643 + sp->cmd_length = 0x10;
55644 + pfc_scsi_cmd->cmd_len = 0x10;
55646 + printk(KERN_WARNING
55647 + "qla2x00_ioctl: FC_SCSI_PASSTHRU Unknown Cdb Length=%x.\n",
55648 + pfc_scsi_pass->CdbLength);
55649 + pext->Status = EXT_STATUS_INVALID_PARAM;
55650 + atomic_set(&sp->ref_count, 0);
55651 + add_to_free_queue (ha, sp);
55653 + goto fc_scsi_passthru_done;
55656 + memcpy(pfc_scsi_cmd->data_cmnd, pfc_scsi_pass->Cdb,
55657 + pfc_scsi_cmd->cmd_len);
55658 + memcpy(pfc_scsi_cmd->cmnd, pfc_scsi_pass->Cdb,
55659 + pfc_scsi_cmd->cmd_len);
55661 + DEBUG9(printk("%s Dump of cdb buffer:\n", __func__);)
55662 + DEBUG9(qla2x00_dump_buffer((uint8_t *)&pfc_scsi_cmd->data_cmnd[0], 16);)
55664 + pfc_scsi_cmd->device->host = ha->host;
55666 + sp->cmd = pfc_scsi_cmd;
55667 + sp->flags = SRB_IOCTL;
55669 + /* set local fc_scsi_cmd's sp pointer to sp */
55670 + CMD_SP(pfc_scsi_cmd) = (void *) sp;
55672 + /* mark this as a special delivery and collection command */
55673 + pfc_scsi_cmd->flags = 0;
55674 + pfc_scsi_cmd->scsi_done = qla2x00_scsi_pt_done;
55676 + pfc_scsi_cmd->device = pfc_scsi_device;
55677 + pfc_scsi_cmd->device->tagged_queue = 0;
55678 + pfc_scsi_cmd->use_sg = 0; /* no ScatterGather */
55679 + pfc_scsi_cmd->request_bufflen = pext->ResponseLen;
55680 + pfc_scsi_cmd->request_buffer = ha->ioctl_mem;
55681 + pfc_scsi_cmd->timeout_per_command = QLA_PT_CMD_TOV * HZ;
55683 + if (pfc_scsi_pass->Direction == EXT_DEF_SCSI_PASSTHRU_DATA_OUT) {
55684 + /* sending user data from pext->ResponseAdr to device */
55685 + ret = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
55686 + pext->ResponseLen);
55688 + pext->Status = EXT_STATUS_COPY_ERR;
55689 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify read "
55690 + "ResponseAdr.\n",
55691 + __func__, ha->host_no, ha->instance);)
55692 + atomic_set(&sp->ref_count, 0);
55693 + add_to_free_queue (ha, sp);
55695 + goto fc_scsi_passthru_done;
55698 + pfc_scsi_cmd->sc_data_direction = SCSI_DATA_WRITE;
55699 + usr_temp = (uint8_t *)pext->ResponseAdr;
55700 + kernel_tmp = (uint8_t *)ha->ioctl_mem;
55701 + ret = copy_from_user(kernel_tmp, usr_temp, pext->ResponseLen);
55703 + pext->Status = EXT_STATUS_COPY_ERR;
55704 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy "
55705 + "failed(%d) on rsp buf.\n",
55706 + __func__, ha->host_no, ha->instance, ret);)
55707 + atomic_set(&sp->ref_count, 0);
55708 + add_to_free_queue (ha, sp);
55710 + goto fc_scsi_passthru_done;
55713 + pfc_scsi_cmd->sc_data_direction = SCSI_DATA_READ;
55716 + tq = ha->ioctl->ioctl_tq;
55717 + lq = ha->ioctl->ioctl_lq;
55719 + if (fclun && tq && lq ) {
55720 + tq->olun[fclun->lun] = lq;
55723 + lq->fclun = fclun;
55724 + fcport = fclun->fcport;
55726 + sp->lun_queue = lq;
55727 + sp->tgt_queue = tq;
55728 + sp->fclun = fclun;
55732 + b = SCSI_BUS_32(pfc_scsi_cmd);
55733 + t = SCSI_TCN_32(pfc_scsi_cmd);
55734 + l = SCSI_LUN_32(pfc_scsi_cmd);
55736 + DEBUG9(printk("%s(%ld): ha instance=%ld tq=%p lq=%p "
55738 + __func__, ha->host_no, ha->instance, tq, lq, fclun);)
55739 + DEBUG9(printk("\tCDB=%02x %02x %02x %02x; b=%x t=%x l=%x.\n",
55740 + pfc_scsi_cmd->cmnd[0], pfc_scsi_cmd->cmnd[1], pfc_scsi_cmd->cmnd[2],
55741 + pfc_scsi_cmd->cmnd[3], b, t, l);)
55744 + * Check the status of the port
55746 + if (qla2x00_check_port_status(ha, fcport) != QL_STATUS_SUCCESS) {
55747 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55748 + atomic_set(&sp->ref_count, 0);
55749 + add_to_free_queue (ha, sp);
55750 + goto fc_scsi_passthru_done;
55753 + /* set flag to indicate IOCTL SCSI PassThru in progress */
55754 + ha->ioctl->SCSIPT_InProgress = 1;
55755 + ha->ioctl->ioctl_tov = (int)QLA_PT_CMD_DRV_TOV;
55757 + /* prepare for receiving completion. */
55758 + qla2x00_ioctl_sem_init(ha);
55759 + CMD_COMPL_STATUS(pfc_scsi_cmd) = (int) IOCTL_INVALID_STATUS;
55761 + /* send command to adapter */
55762 + DEBUG9(printk("%s(%ld): inst=%ld sending command.\n",
55763 + __func__, ha->host_no, ha->instance);)
55765 + add_to_pending_queue(ha, sp);
55767 + qla2x00_next(ha);
55769 + ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
55770 + add_timer(&ha->ioctl->cmpl_timer);
55772 + down(&ha->ioctl->cmpl_sem);
55774 + del_timer(&ha->ioctl->cmpl_timer);
55776 + if (ha->ioctl->SCSIPT_InProgress == 1) {
55778 + printk(KERN_WARNING
55779 + "qla2x00: scsi%ld ERROR passthru command timeout.\n",
55782 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
55783 + atomic_set(&sp->ref_count, 0);
55784 + add_to_free_queue (ha, sp);
55785 + goto fc_scsi_passthru_done;
55788 + if (CMD_COMPL_STATUS(pfc_scsi_cmd) == (int)IOCTL_INVALID_STATUS) {
55790 + DEBUG9(printk("%s(%ld): inst=%ld ERROR. cmd not completed.\n",
55791 + __func__, ha->host_no, ha->instance);)
55793 + pext->Status = EXT_STATUS_ERR;
55794 + atomic_set(&sp->ref_count, 0);
55795 + add_to_free_queue (ha, sp);
55796 + goto fc_scsi_passthru_done;
55799 + switch (CMD_COMPL_STATUS(pfc_scsi_cmd)) {
55800 + case CS_INCOMPLETE:
55802 + case CS_PORT_UNAVAILABLE:
55803 + case CS_PORT_LOGGED_OUT:
55804 + case CS_PORT_CONFIG_CHG:
55805 + case CS_PORT_BUSY:
55806 + DEBUG10(printk("%s(%ld): inst=%ld cs err = %x.\n",
55807 + __func__, ha->host_no, ha->instance,
55808 + CMD_COMPL_STATUS(pfc_scsi_cmd));)
55809 + pext->Status = EXT_STATUS_BUSY;
55813 + if ((CMD_COMPL_STATUS(pfc_scsi_cmd) == CS_DATA_UNDERRUN) ||
55814 + (CMD_SCSI_STATUS(pfc_scsi_cmd) != 0)) {
55816 + /* have done the post function */
55817 + pext->Status = EXT_STATUS_SCSI_STATUS;
55818 + /* The SDMAPI is only concerned with the low-order byte */
55819 + pext->DetailStatus = CMD_SCSI_STATUS(pfc_scsi_cmd) & 0xff;
55821 + DEBUG9_10(printk("%s(%ld): inst=%ld data underrun or scsi err. "
55822 + "host status =0x%x, scsi status = 0x%x.\n",
55823 + __func__, ha->host_no, ha->instance,
55824 + CMD_COMPL_STATUS(pfc_scsi_cmd),
55825 + CMD_SCSI_STATUS(pfc_scsi_cmd));)
55827 + } else if (CMD_COMPL_STATUS(pfc_scsi_cmd) != 0) {
55828 + DEBUG9_10(printk("%s(%ld): inst=%ld cs err=%x.\n",
55829 + __func__, ha->host_no, ha->instance,
55830 + CMD_COMPL_STATUS(pfc_scsi_cmd));)
55831 + pext->Status = EXT_STATUS_ERR;
55833 + goto fc_scsi_passthru_done;
55836 + /* Process completed command */
55837 + DEBUG9(printk("%s(%ld): inst=%ld done. host status=0x%x, "
55838 + "scsi status=0x%x.\n",
55839 + __func__, ha->host_no, ha->instance, CMD_COMPL_STATUS(pfc_scsi_cmd),
55840 + CMD_SCSI_STATUS(pfc_scsi_cmd));)
55842 + /* copy up structure to make sense data available to user */
55843 + pfc_scsi_pass->SenseLength = CMD_ACTUAL_SNSLEN(pfc_scsi_cmd);
55844 + if (CMD_ACTUAL_SNSLEN(pfc_scsi_cmd)) {
55845 + DEBUG9_10(printk("%s(%ld): inst=%ld sense[0]=%x sense[2]=%x.\n",
55846 + __func__, ha->host_no, ha->instance,
55847 + pfc_scsi_cmd->sense_buffer[0],
55848 + pfc_scsi_cmd->sense_buffer[2]);)
55850 + for (i = 0; i < CMD_ACTUAL_SNSLEN(pfc_scsi_cmd); i++) {
55851 + pfc_scsi_pass->SenseData[i] =
55852 + pfc_scsi_cmd->sense_buffer[i];
55855 + ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr,
55856 + sizeof(EXT_FC_SCSI_PASSTHRU));
55858 + pext->Status = EXT_STATUS_COPY_ERR;
55859 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
55861 + __func__, ha->host_no, ha->instance);)
55862 + goto fc_scsi_passthru_done;
55865 + usr_temp = (uint8_t *)pext->RequestAdr;
55866 + kernel_tmp = (uint8_t *)pfc_scsi_pass;
55867 + ret = copy_to_user(usr_temp, kernel_tmp,
55868 + sizeof(EXT_FC_SCSI_PASSTHRU));
55870 + pext->Status = EXT_STATUS_COPY_ERR;
55871 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy sense "
55873 + __func__, ha->host_no, ha->instance);)
55874 + goto fc_scsi_passthru_done;
55878 + scsi_direction = pfc_scsi_pass->Direction;
55880 + if (scsi_direction == EXT_DEF_SCSI_PASSTHRU_DATA_IN) {
55882 + DEBUG9(printk("%s(%ld): inst=%ld copying data.\n",
55883 + __func__, ha->host_no, ha->instance);)
55885 + /* getting device data and putting in pext->ResponseAdr */
55886 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
55887 + pext->ResponseLen);
55889 + pext->Status = EXT_STATUS_COPY_ERR;
55891 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write "
55892 + "ResponseAdr.\n",
55893 + __func__, ha->host_no, ha->instance);)
55895 + goto fc_scsi_passthru_done;
55898 + /* now copy up the READ data to user */
55899 + if ((CMD_COMPL_STATUS(pfc_scsi_cmd) == CS_DATA_UNDERRUN) &&
55900 + (CMD_RESID_LEN(pfc_scsi_cmd))) {
55902 + transfer_len = pext->ResponseLen -
55903 + CMD_RESID_LEN(pfc_scsi_cmd);
55905 + pext->ResponseLen = transfer_len;
55907 + transfer_len = pext->ResponseLen;
55910 + usr_temp = (uint8_t *)pext->ResponseAdr;
55911 + kernel_tmp = (uint8_t *)ha->ioctl_mem;
55912 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_len);
55914 + pext->Status = EXT_STATUS_COPY_ERR;
55915 + DEBUG9_10(printk(
55916 + "%s(%ld): inst=%ld ERROR copy rsp buf\n",
55917 + __func__, ha->host_no, ha->instance);)
55918 + goto fc_scsi_passthru_done;
55922 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
55923 + __func__, ha->host_no, ha->instance);)
55925 +fc_scsi_passthru_done:
55927 + qla2x00_free_ioctl_scrap_mem(ha);
55932 + * qla2x00_sc_scsi3_passthru
55933 + * Handles EXT_SC_SCSI3_PASSTHRU subcommand.
55936 + * ha = adapter state pointer.
55937 + * pext = EXT_IOCTL structure pointer.
55938 + * mode = not used.
55942 + * others = errno value
55945 + * Kernel context.
55948 +qla2x00_sc_scsi3_passthru(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
55950 +#define MAX_SCSI3_CDB_LEN 16
55954 + fc_lun_t temp_fclun;
55955 + fc_lun_t *fclun = NULL;
55956 + struct list_head *fcpl;
55957 + fc_port_t *fcport;
55960 + srb_t *sp = NULL;
55961 + uint8_t *usr_temp, *kernel_tmp;
55962 + uint32_t transfer_len;
55963 + uint32_t i, b, t;
55964 + uint32_t scsi_direction;
55966 + EXT_FC_SCSI_PASSTHRU *pfc_scsi3_pass;
55968 + Scsi_Cmnd *pscsi3_cmd;
55969 + Scsi_Device *pscsi3_device;
55972 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
55973 + __func__, ha->host_no, ha->instance);)
55975 + if ((sp = qla2x00_get_new_sp(ha)) == NULL) {
55977 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc sp.\n",
55978 + __func__, ha->host_no, ha->instance);)
55980 + pext->Status = EXT_STATUS_NO_MEMORY;
55984 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pfc_scsi3_pass,
55985 + sizeof(EXT_FC_SCSI_PASSTHRU))) {
55986 + /* not enough memory */
55987 + pext->Status = EXT_STATUS_NO_MEMORY;
55988 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
55989 + "size requested=%d.\n",
55990 + __func__, ha->host_no, ha->instance,
55991 + sizeof(EXT_FC_SCSI_PASSTHRU));)
55995 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi3_cmd,
55996 + sizeof(Scsi_Cmnd))) {
55997 + /* not enough memory */
55998 + pext->Status = EXT_STATUS_NO_MEMORY;
55999 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
56000 + "size requested=%d.\n",
56001 + __func__, ha->host_no, ha->instance,
56002 + sizeof(Scsi_Cmnd));)
56003 + goto scsi3_passthru_done;
56006 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&pscsi3_device,
56007 + sizeof(Scsi_Device))) {
56008 + /* not enough memory */
56009 + pext->Status = EXT_STATUS_NO_MEMORY;
56010 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
56011 + "size requested=%d.\n",
56012 + __func__, ha->host_no, ha->instance,
56013 + sizeof(Scsi_Device));)
56014 + goto scsi3_passthru_done;
56017 + /* clear ioctl_mem to be used */
56018 + memset(ha->ioctl_mem, 0, ha->ioctl_mem_size);
56020 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
56021 + sizeof(EXT_FC_SCSI_PASSTHRU));
56023 + pext->Status = EXT_STATUS_COPY_ERR;
56024 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify READ "
56025 + "req buf.\n", __func__, ha->host_no, ha->instance);)
56026 + atomic_set(&sp->ref_count, 0);
56027 + add_to_free_queue (ha, sp);
56028 + goto scsi3_passthru_done;
56031 + if (pext->ResponseLen > ha->ioctl_mem_size) {
56032 + if (qla2x00_get_new_ioctl_dma_mem(ha, pext->ResponseLen) !=
56033 + QL_STATUS_SUCCESS) {
56035 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot "
56036 + "alloc requested DMA buffer size=%x.\n",
56037 + __func__, ha->host_no, ha->instance,
56038 + pext->ResponseLen);)
56040 + pext->Status = EXT_STATUS_NO_MEMORY;
56041 + atomic_set(&sp->ref_count, 0);
56042 + add_to_free_queue (ha, sp);
56043 + goto scsi3_passthru_done;
56047 + /* Copy request buffer */
56048 + usr_temp = (uint8_t *)pext->RequestAdr;
56049 + kernel_tmp = (uint8_t *)pfc_scsi3_pass;
56050 + ret = copy_from_user(kernel_tmp, usr_temp,
56051 + sizeof(EXT_FC_SCSI_PASSTHRU));
56053 + pext->Status = EXT_STATUS_COPY_ERR;
56054 + DEBUG9_10(printk(
56055 + "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
56056 + __func__, ha->host_no, ha->instance, ret);)
56057 + atomic_set(&sp->ref_count, 0);
56058 + add_to_free_queue (ha, sp);
56059 + goto scsi3_passthru_done;
56062 + if (pfc_scsi3_pass->FCScsiAddr.DestType != EXT_DEF_DESTTYPE_WWPN) {
56063 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56064 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR - wrong Dest type.\n",
56065 + __func__, ha->host_no, ha->instance);)
56066 + ret = EXT_STATUS_ERR;
56067 + atomic_set(&sp->ref_count, 0);
56068 + add_to_free_queue (ha, sp);
56070 + goto scsi3_passthru_done;
56074 + * For this ioctl command we always assume all 16 bytes are
56077 + if (pfc_scsi3_pass->CdbLength != MAX_SCSI3_CDB_LEN) {
56078 + pext->Status = EXT_STATUS_INVALID_PARAM;
56079 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR -wrong Cdb Len %d.\n",
56080 + __func__, ha->host_no, ha->instance,
56081 + pfc_scsi3_pass->CdbLength);)
56082 + atomic_set(&sp->ref_count, 0);
56083 + add_to_free_queue (ha, sp);
56084 + goto scsi3_passthru_done;
56089 + list_for_each(fcpl, &ha->fcports) {
56090 + fcport = list_entry(fcpl, fc_port_t, list);
56092 + if (memcmp(fcport->port_name,
56093 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN, 8) == 0) {
56099 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56101 + DEBUG9_10(printk("%s(%ld): inst=%ld DID NOT FIND Port for WWPN "
56102 + "%02x%02x%02x%02x%02x%02x%02x%02x.\n",
56103 + __func__, ha->host_no, ha->instance,
56104 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[0],
56105 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[1],
56106 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[2],
56107 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[3],
56108 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[4],
56109 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[5],
56110 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[6],
56111 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[7]);)
56113 + atomic_set(&sp->ref_count, 0);
56114 + add_to_free_queue (ha, sp);
56116 + goto scsi3_passthru_done;
56119 + /* Use a temporary fclun to send out the command. */
56120 + fclun = &temp_fclun;
56121 + fclun->fcport = fcport;
56122 + fclun->lun = pfc_scsi3_pass->FCScsiAddr.Lun;
56123 + fclun->flags = 0;
56125 + /* set target coordinates */
56126 + pscsi3_cmd->device->id = 0xff; /* not used. just put something there. */
56127 + pscsi3_cmd->device->lun = pfc_scsi3_pass->FCScsiAddr.Lun;
56129 + DEBUG9(printk("%s(%ld): inst=%ld cmd for loopid=%04x L=%04x "
56130 + "WWPN=%02x%02x%02x%02x%02x%02x%02x%02x.\n",
56131 + __func__, ha->host_no, ha->instance,
56132 + fclun->fcport->loop_id, pscsi3_cmd->device->lun,
56133 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[0],
56134 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[1],
56135 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[2],
56136 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[3],
56137 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[4],
56138 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[5],
56139 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[6],
56140 + pfc_scsi3_pass->FCScsiAddr.DestAddr.WWPN[7]);)
56142 + sp->cmd_length = MAX_SCSI3_CDB_LEN;
56143 + pscsi3_cmd->cmd_len = MAX_SCSI3_CDB_LEN;
56145 + memcpy(pscsi3_cmd->data_cmnd, pfc_scsi3_pass->Cdb, pscsi3_cmd->cmd_len);
56146 + memcpy(pscsi3_cmd->cmnd, pfc_scsi3_pass->Cdb, pscsi3_cmd->cmd_len);
56148 + DEBUG9(printk("%s(%ld): inst=%ld cdb buffer dump:\n",
56149 + __func__, ha->host_no, ha->instance);)
56150 + DEBUG9(qla2x00_dump_buffer((uint8_t *)&pscsi3_cmd->data_cmnd[0], 16);)
56152 + pscsi3_cmd->device->host = ha->host;
56154 + sp->cmd = pscsi3_cmd;
56155 + sp->flags = SRB_IOCTL;
56157 + /* set local scsi3_cmd's sp pointer to sp */
56158 + CMD_SP(pscsi3_cmd) = (void *) sp;
56160 + /* mark this as a special delivery and collection command */
56161 + pscsi3_cmd->flags = 0;
56162 + pscsi3_cmd->scsi_done = qla2x00_scsi_pt_done;
56164 + pscsi3_cmd->device = pscsi3_device;
56165 + pscsi3_cmd->device->tagged_queue = 0;
56166 + pscsi3_cmd->use_sg = 0; /* no ScatterGather */
56167 + pscsi3_cmd->request_bufflen = pext->ResponseLen;
56168 + pscsi3_cmd->request_buffer = ha->ioctl_mem;
56169 + pscsi3_cmd->timeout_per_command = QLA_PT_CMD_TOV * HZ;
56171 + if (pfc_scsi3_pass->Direction == EXT_DEF_SCSI_PASSTHRU_DATA_OUT) {
56172 + /* sending user data from pext->ResponseAdr to device */
56173 + ret = verify_area(VERIFY_READ, (void *)pext->ResponseAdr,
56174 + pext->ResponseLen);
56176 + pext->Status = EXT_STATUS_COPY_ERR;
56177 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify read "
56178 + "ResponseAdr.\n",
56179 + __func__, ha->host_no, ha->instance);)
56180 + atomic_set(&sp->ref_count, 0);
56181 + add_to_free_queue (ha, sp);
56182 + goto scsi3_passthru_done;
56185 + pscsi3_cmd->sc_data_direction = SCSI_DATA_WRITE;
56186 + usr_temp = (uint8_t *)pext->ResponseAdr;
56187 + kernel_tmp = (uint8_t *)ha->ioctl_mem;
56188 + ret = copy_from_user(kernel_tmp, usr_temp, pext->ResponseLen);
56190 + pext->Status = EXT_STATUS_COPY_ERR;
56191 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf "
56193 + __func__, ha->host_no, ha->instance, ret);)
56194 + atomic_set(&sp->ref_count, 0);
56195 + add_to_free_queue (ha, sp);
56196 + goto scsi3_passthru_done;
56200 + pscsi3_cmd->sc_data_direction = SCSI_DATA_READ;
56203 + /* Use temporary LU and TGT queue */
56204 + tq = ha->ioctl->ioctl_tq;
56205 + lq = ha->ioctl->ioctl_lq;
56207 + b = SCSI_BUS_32(pscsi3_cmd);
56208 + t = SCSI_TCN_32(pscsi3_cmd);
56210 + DEBUG9(printk("%s(%ld): ha instance=%ld tq=%p lq=%p fclun=%p.\n",
56211 + __func__, ha->host_no, ha->instance,tq,lq,fclun); )
56212 + DEBUG9(printk("%s(%ld): CDB=%02x %02x %02x %02x; b=%x t=%x fclun=%x\n",
56213 + __func__, ha->host_no, pscsi3_cmd->cmnd[0], pscsi3_cmd->cmnd[1],
56214 + pscsi3_cmd->cmnd[2], pscsi3_cmd->cmnd[3], b, t,
56215 + SCSI_LUN_32(pscsi3_cmd));)
56219 + * For now just save lq using the lower LUN byte value,
56220 + * even though this may not be the actual LUN number.
56221 + * Since we're only sending out passthru cmd one at a time,
56222 + * and only passthru is using FCP LUN format now, no need
56223 + * to change rest of driver just to decode the LUN.
56225 + tq->olun[fclun->lun & 0xff] = lq;
56228 + lq->fclun = fclun;
56229 + fcport = fclun->fcport;
56231 + sp->lun_queue = lq;
56232 + sp->tgt_queue = tq;
56233 + sp->fclun = fclun;
56240 + * Check the status of the port
56242 + if (qla2x00_check_port_status(ha, fcport) != QL_STATUS_SUCCESS) {
56244 + DEBUG9_10(printk("%s(%ld): inst=%ld port missing or loop down. "
56245 + "fcport=%p timer=%d state=%d dpc=%lx.\n",
56246 + __func__, ha->host_no, ha->instance, fcport,
56247 + atomic_read(&ha->loop_down_timer), ha->loop_state,
56250 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56251 + atomic_set(&sp->ref_count, 0);
56252 + add_to_free_queue (ha, sp);
56253 + goto scsi3_passthru_done;
56256 + /* set flag to indicate IOCTL SCSI PassThru in progress */
56257 + ha->ioctl->SCSIPT_InProgress = 1;
56258 + ha->ioctl->ioctl_tov = (int)QLA_PT_CMD_DRV_TOV;
56260 + /* prepare for receiving completion. */
56261 + qla2x00_ioctl_sem_init(ha);
56262 + CMD_COMPL_STATUS(pscsi3_cmd) = (int) IOCTL_INVALID_STATUS;
56264 + /* send command to adapter */
56266 + /*add_to_cmd_queue(ha, lq, sp);*/
56267 + add_to_pending_queue(ha, sp);
56269 + /*qla2x00_next(ha, tq, lq);*/
56270 + qla2x00_next(ha);
56272 + ha->ioctl->cmpl_timer.expires = jiffies + ha->ioctl->ioctl_tov * HZ;
56273 + add_timer(&ha->ioctl->cmpl_timer);
56275 + down(&ha->ioctl->cmpl_sem);
56277 + del_timer(&ha->ioctl->cmpl_timer);
56279 + if (ha->ioctl->SCSIPT_InProgress == 1) {
56281 + printk(KERN_WARNING
56282 + "qla2x00: inst=%ld scsi%ld ERROR PT command timeout.\n",
56283 + ha->host_no, ha->instance);
56285 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56286 + atomic_set(&sp->ref_count, 0);
56287 + add_to_free_queue (ha, sp);
56288 + goto scsi3_passthru_done;
56291 + if (CMD_COMPL_STATUS(pscsi3_cmd) == (int)IOCTL_INVALID_STATUS) {
56293 + DEBUG9(printk("%s(%ld): inst=%ld ERROR - cmd not completed.\n",
56294 + __func__, ha->host_no, ha->instance);)
56296 + pext->Status = EXT_STATUS_ERR;
56297 + atomic_set(&sp->ref_count, 0);
56298 + add_to_free_queue (ha, sp);
56299 + goto scsi3_passthru_done;
56302 + switch (CMD_COMPL_STATUS(pscsi3_cmd)) {
56303 + case CS_INCOMPLETE:
56305 + case CS_PORT_UNAVAILABLE:
56306 + case CS_PORT_LOGGED_OUT:
56307 + case CS_PORT_CONFIG_CHG:
56308 + case CS_PORT_BUSY:
56309 + DEBUG10(printk("%s(%ld): inst=%ld cs err = %x.\n",
56310 + __func__, ha->host_no, ha->instance,
56311 + CMD_COMPL_STATUS(pscsi3_cmd));)
56312 + pext->Status = EXT_STATUS_BUSY;
56316 + if ((CMD_COMPL_STATUS(pscsi3_cmd) == CS_DATA_UNDERRUN) ||
56317 + (CMD_SCSI_STATUS(pscsi3_cmd) != 0)) {
56319 + /* have done the post function */
56320 + pext->Status = EXT_STATUS_SCSI_STATUS;
56321 + pext->DetailStatus = CMD_SCSI_STATUS(pscsi3_cmd) & 0xff;
56323 + DEBUG9_10(printk("%s(%ld): inst=%ld data underrun or scsi err. "
56324 + "host status =0x%x, scsi status = 0x%x.\n",
56325 + __func__, ha->host_no, ha->instance,
56326 + CMD_COMPL_STATUS(pscsi3_cmd), CMD_SCSI_STATUS(pscsi3_cmd));)
56328 + } else if (CMD_COMPL_STATUS(pscsi3_cmd) != 0) {
56329 + DEBUG9_10(printk("%s(%ld): inst=%ld cs err = %x.\n",
56330 + __func__, ha->host_no, ha->instance,
56331 + CMD_COMPL_STATUS(pscsi3_cmd));)
56332 + pext->Status = EXT_STATUS_ERR;
56333 + goto scsi3_passthru_done;
56336 + /* Process completed command */
56337 + DEBUG9(printk("%s(%ld): inst=%ld done. host status=0x%x, "
56338 + "scsi status=0x%x.\n",
56339 + __func__, ha->host_no, ha->instance, CMD_COMPL_STATUS(pscsi3_cmd),
56340 + CMD_SCSI_STATUS(pscsi3_cmd));)
56342 + /* copy up structure to make sense data available to user */
56343 + pfc_scsi3_pass->SenseLength = CMD_ACTUAL_SNSLEN(pscsi3_cmd);
56344 + if (CMD_ACTUAL_SNSLEN(pscsi3_cmd)) {
56345 + DEBUG9_10(printk("%s(%ld): inst=%ld sense[0]=%x sense[2]=%x.\n",
56346 + __func__, ha->host_no, ha->instance,
56347 + pscsi3_cmd->sense_buffer[0],
56348 + pscsi3_cmd->sense_buffer[2]);)
56350 + for (i = 0; i < CMD_ACTUAL_SNSLEN(pscsi3_cmd); i++) {
56351 + pfc_scsi3_pass->SenseData[i] =
56352 + pscsi3_cmd->sense_buffer[i];
56355 + ret = verify_area(VERIFY_WRITE, (void *)pext->RequestAdr,
56356 + sizeof(EXT_FC_SCSI_PASSTHRU));
56358 + pext->Status = EXT_STATUS_COPY_ERR;
56359 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify WRITE "
56361 + __func__, ha->host_no, ha->instance);)
56362 + goto scsi3_passthru_done;
56365 + usr_temp = (uint8_t *)pext->RequestAdr;
56366 + kernel_tmp = (uint8_t *)pfc_scsi3_pass;
56367 + ret = copy_to_user(usr_temp, kernel_tmp,
56368 + sizeof(EXT_FC_SCSI_PASSTHRU));
56370 + pext->Status = EXT_STATUS_COPY_ERR;
56371 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy sense "
56373 + __func__, ha->host_no, ha->instance);)
56374 + goto scsi3_passthru_done;
56378 + scsi_direction = pfc_scsi3_pass->Direction;
56380 + if (scsi_direction == EXT_DEF_SCSI_PASSTHRU_DATA_IN) {
56382 + DEBUG9(printk("%s(%ld): inst=%ld copying data.\n",
56383 + __func__, ha->host_no, ha->instance);)
56385 + /* getting device data and putting in pext->ResponseAdr */
56386 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
56387 + pext->ResponseLen);
56389 + pext->Status = EXT_STATUS_COPY_ERR;
56391 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR verify write "
56392 + "ResponseAdr.\n",
56393 + __func__, ha->host_no, ha->instance);)
56395 + goto scsi3_passthru_done;
56398 + /* now copy up the READ data to user */
56399 + if ((CMD_COMPL_STATUS(pscsi3_cmd) == CS_DATA_UNDERRUN) &&
56400 + (CMD_RESID_LEN(pscsi3_cmd))) {
56402 + transfer_len = pext->ResponseLen -
56403 + CMD_RESID_LEN(pscsi3_cmd);
56405 + pext->ResponseLen = transfer_len;
56407 + transfer_len = pext->ResponseLen;
56410 + usr_temp = (uint8_t *)pext->ResponseAdr;
56411 + kernel_tmp = (uint8_t *)ha->ioctl_mem;
56412 + ret = copy_to_user(usr_temp, kernel_tmp, transfer_len);
56414 + pext->Status = EXT_STATUS_COPY_ERR;
56415 + DEBUG9_10(printk(
56416 + "%s(%ld): inst=%ld ERROR copy rsp buf\n",
56417 + __func__, ha->host_no, ha->instance);)
56418 + goto scsi3_passthru_done;
56422 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
56423 + __func__, ha->host_no, ha->instance);)
56425 +scsi3_passthru_done:
56427 + qla2x00_free_ioctl_scrap_mem(ha);
56432 + * qla2x00_send_els_rnid
56433 + * IOCTL to send extended link service RNID command to a target.
56436 + * ha = adapter state pointer.
56437 + * pext = User space CT arguments pointer.
56442 + * others = errno value
56445 + * Kernel context.
56448 +qla2x00_send_els_rnid(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
56451 +#define HOST_DEV 2
56453 + EXT_RNID_REQ *tmp_rnid;
56455 + uint8_t dev_found = 0;
56456 + uint16_t dev_loop_id = 0;
56457 + uint16_t mb[MAILBOX_REGISTER_COUNT];
56458 + uint32_t copy_len;
56459 + struct list_head *fcpl;
56460 + fc_port_t *fcport;
56462 + struct list_head *fcil;
56463 + fc_initiator_t *fcinitiator;
56465 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
56466 + __func__, ha->host_no, ha->instance);)
56468 + if (ha->ioctl_mem_size < SEND_RNID_RSP_SIZE) {
56469 + if (qla2x00_get_new_ioctl_dma_mem(ha,
56470 + SEND_RNID_RSP_SIZE) != QL_STATUS_SUCCESS) {
56472 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR cannot alloc "
56473 + "DMA buffer. size=%x.\n",
56474 + __func__, ha->host_no, ha->instance,
56475 + SEND_RNID_RSP_SIZE);)
56477 + pext->Status = EXT_STATUS_NO_MEMORY;
56482 + if (pext->RequestLen != sizeof(EXT_RNID_REQ)) {
56483 + /* parameter error */
56484 + DEBUG9_10(printk("%s(%ld): inst=%ld invalid req length %d.\n",
56485 + __func__, ha->host_no, ha->instance, pext->RequestLen);)
56486 + pext->Status = EXT_STATUS_INVALID_PARAM;
56490 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
56491 + pext->RequestLen);
56494 + pext->Status = EXT_STATUS_COPY_ERR;
56495 + DEBUG9_10(printk(
56496 + "%s(%ld): inst=%ld req buf verify READ FAILED\n",
56497 + __func__, ha->host_no, ha->instance);)
56501 + DEBUG9(printk("%s(%ld): inst=%ld req buf verified. Copying req data.\n",
56502 + __func__, ha->host_no, ha->instance);)
56504 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&tmp_rnid,
56505 + sizeof(EXT_RNID_REQ))) {
56506 + /* not enough memory */
56507 + pext->Status = EXT_STATUS_NO_MEMORY;
56508 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
56509 + "size requested=%d.\n",
56510 + __func__, ha->host_no, ha->instance,
56511 + sizeof(EXT_RNID_REQ));)
56515 + ret = copy_from_user(tmp_rnid, pext->RequestAdr, pext->RequestLen);
56517 + pext->Status = EXT_STATUS_COPY_ERR;
56518 + DEBUG9_10(printk(
56519 + "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
56520 + __func__, ha->host_no, ha->instance, ret);)
56521 + qla2x00_free_ioctl_scrap_mem(ha);
56525 + /* Find loop ID of the device */
56526 + fcinitiator = NULL;
56527 + switch (tmp_rnid->Addr.Type) {
56528 + case EXT_DEF_TYPE_WWNN:
56530 + DEBUG9(printk("%s(%ld): inst=%ld got node name.\n",
56531 + __func__, ha->host_no, ha->instance);)
56534 + list_for_each(fcpl, &ha->fcports) {
56535 + fcport = list_entry(fcpl, fc_port_t, list);
56537 + /* if removed or missing */
56538 + if (atomic_read(&fcport->state) == FC_ONLINE &&
56539 + memcmp((void *)tmp_rnid->Addr.FcAddr.WWNN,
56540 + (void *)fcport->node_name,
56541 + EXT_DEF_WWN_NAME_SIZE) == 0) {
56545 + if (fcport != NULL) {
56546 + DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; "
56548 + __func__, ha->host_no, ha->instance,
56549 + fcport->loop_id);)
56551 + dev_found = TGT_DEV;
56552 + dev_loop_id = fcport->loop_id;
56557 + fcinitiator = NULL;
56558 + list_for_each(fcil, &ha->fcinitiators) {
56559 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
56561 + if (memcmp(tmp_rnid->Addr.FcAddr.WWNN,
56562 + fcinitiator->node_name,
56563 + EXT_DEF_WWN_NAME_SIZE) == 0 &&
56564 + fcinitiator->d_id.b24 != 0) {
56571 + DEBUG9(printk("%s(%ld): inst=%ld found host device; "
56573 + __func__, ha->host_no, ha->instance,
56574 + fcinitiator->loop_id);)
56576 + dev_found = HOST_DEV;
56577 + dev_loop_id = fcinitiator->loop_id;
56583 + case EXT_DEF_TYPE_WWPN:
56584 + DEBUG9(printk("%s(%ld): inst=%ld got port name.\n",
56585 + __func__, ha->host_no, ha->instance);)
56588 + list_for_each(fcpl, &ha->fcports) {
56589 + fcport = list_entry(fcpl, fc_port_t, list);
56591 + /* if removed or missing */
56592 + if (atomic_read(&fcport->state) == FC_ONLINE &&
56593 + memcmp((void *)tmp_rnid->Addr.FcAddr.WWPN,
56594 + (void *)fcport->port_name,
56595 + EXT_DEF_WWN_NAME_SIZE) == 0) {
56599 + if (fcport != NULL) {
56600 + DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; "
56602 + __func__, ha->host_no, ha->instance,
56603 + fcport->loop_id);)
56605 + dev_found = TGT_DEV; /* target device */
56606 + dev_loop_id = fcport->loop_id;
56611 + fcinitiator = NULL;
56612 + list_for_each(fcil, &ha->fcinitiators) {
56613 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
56615 + if (memcmp(tmp_rnid->Addr.FcAddr.WWPN,
56616 + fcinitiator->port_name,
56617 + EXT_DEF_WWN_NAME_SIZE) == 0 &&
56618 + fcinitiator->d_id.b24 != 0) {
56625 + DEBUG9(printk("%s(%ld): inst=%ld found host device; "
56627 + __func__, ha->host_no, ha->instance,
56628 + fcinitiator->loop_id);)
56630 + dev_found = HOST_DEV;
56631 + dev_loop_id = fcinitiator->loop_id;
56637 + case EXT_DEF_TYPE_PORTID:
56638 + DEBUG9(printk("%s(%ld): inst=%ld got port ID.\n",
56639 + __func__, ha->host_no, ha->instance);)
56641 + /* PORTID bytes entered must already be big endian */
56643 + list_for_each(fcpl, &ha->fcports) {
56644 + fcport = list_entry(fcpl, fc_port_t, list);
56646 + /* if removed or missing */
56647 + if (atomic_read(&fcport->state) == FC_ONLINE &&
56648 + memcmp((void *)&tmp_rnid->Addr.FcAddr.Id[1],
56649 + (void *)(fcport->d_id.r.d_id),
56650 + EXT_DEF_PORTID_SIZE_ACTUAL) == 0) {
56654 + if (fcport != NULL) {
56655 + DEBUG9(printk("%s(%ld): inst=%ld found tgt dev; "
56657 + __func__, ha->host_no, ha->instance,
56658 + fcport->loop_id);)
56660 + dev_found = TGT_DEV; /* target device */
56661 + dev_loop_id = fcport->loop_id;
56666 + fcinitiator = NULL;
56667 + list_for_each(fcil, &ha->fcinitiators) {
56668 + fcinitiator = list_entry(fcil, fc_initiator_t, list);
56670 + if (memcmp(&tmp_rnid->Addr.FcAddr.Id[1],
56671 + &fcinitiator->d_id,
56672 + EXT_DEF_PORTID_SIZE_ACTUAL) == 0) {
56679 + DEBUG9(printk("%s(%ld): inst=%ld found host device; "
56681 + __func__, ha->host_no, ha->instance,
56682 + fcinitiator->loop_id);)
56684 + dev_found = HOST_DEV;
56685 + dev_loop_id = fcinitiator->loop_id;
56691 + /* parameter error */
56692 + pext->Status = EXT_STATUS_INVALID_PARAM;
56693 + DEBUG9_10(printk("%s(%ld): inst=%ld invalid addressing type.\n",
56694 + __func__, ha->host_no, ha->instance);)
56695 + qla2x00_free_ioctl_scrap_mem(ha);
56699 + if (!dev_found ||
56700 + (dev_found == TGT_DEV && dev_loop_id > LAST_SNS_LOOP_ID)) {
56701 + /* No matching device or the target device is not
56702 + * configured; just return error.
56704 + pext->Status = EXT_STATUS_DEV_NOT_FOUND;
56705 + DEBUG9_10(printk(
56706 + "%s(%ld): inst=%ld device not found. dev_found=%d "
56707 + "dev_loop_id=%x.\n",
56708 + __func__, ha->host_no, ha->instance, dev_found,
56710 + qla2x00_free_ioctl_scrap_mem(ha);
56714 + /* check on loop down */
56715 + if (ha->loop_state != LOOP_READY ||
56716 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
56717 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
56718 + ABORTS_ACTIVE || ha->dpc_active) {
56720 + pext->Status = EXT_STATUS_BUSY;
56721 + DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
56722 + __func__, ha->host_no, ha->instance);)
56724 + qla2x00_free_ioctl_scrap_mem(ha);
56728 + /* Check whether we need to login first. */
56729 + if (dev_found == HOST_DEV && dev_loop_id > LAST_SNS_LOOP_ID) {
56731 + * Search for a usable loop ID before try to login to it.
56733 + if ((dev_loop_id &= ~PORT_LOST_ID) > LAST_SNS_LOOP_ID) {
56734 + /* Just start searching from first possible ID. */
56735 + dev_loop_id = ha->min_external_loopid;
56738 + if (ha->fabricid[dev_loop_id].in_use == TRUE) {
56741 + ha->fabricid[dev_loop_id].in_use = TRUE;
56746 + DEBUG9(printk("%s(%ld): inst=%ld try relogin to host dev; "
56747 + "dev_loop_id=%x.\n",
56748 + __func__, ha->host_no, ha->instance, dev_loop_id);)
56751 + if (dev_loop_id > LAST_SNS_LOOP_ID) {
56753 + DEBUG10(printk("%s(%ld): inst=%ld "
56754 + "no valid loop_id for login.\n",
56755 + __func__, ha->host_no, ha->instance);)
56760 + qla2x00_login_fabric(ha,
56762 + fcinitiator->d_id.b.domain,
56763 + fcinitiator->d_id.b.area,
56764 + fcinitiator->d_id.b.al_pa,
56767 + if (mb[0] != MBS_CMD_CMP &&
56768 + mb[0] != MBS_PORT_ID_IN_USE &&
56769 + mb[0] != MBS_LOOP_ID_IN_USE) {
56771 + DEBUG10(printk("%s(%ld): inst=%ld "
56772 + "ERROR login mb[0]=%x mb[1]=%x.\n",
56773 + __func__, ha->host_no, ha->instance,
56778 + if (mb[0] == MBS_CMD_CMP) {
56779 + DEBUG9(printk("%s(%ld): inst=%ld host login "
56780 + "success; loop_id=%x.\n",
56781 + __func__, ha->host_no, ha->instance,
56784 + fcinitiator->loop_id = dev_loop_id;
56786 + } else if (mb[0] == MBS_PORT_ID_IN_USE) {
56787 + ha->fabricid[dev_loop_id].in_use = FALSE;
56788 + dev_loop_id = mb[1];
56790 + DEBUG9(printk("%s(%ld): inst=%ld "
56791 + "port %02x%02x%02x using loop id=0x%04x.\n",
56792 + __func__, ha->host_no, ha->instance,
56793 + fcinitiator->d_id.b.domain,
56794 + fcinitiator->d_id.b.area,
56795 + fcinitiator->d_id.b.al_pa,
56798 + if (dev_loop_id <= LAST_SNS_LOOP_ID)
56799 + ha->fabricid[dev_loop_id].in_use = TRUE;
56804 + } else if (mb[0] == MBS_LOOP_ID_IN_USE) {
56805 + /* Search for another usable loop_id */
56807 + while (ha->fabricid[dev_loop_id].in_use) {
56808 + if (dev_loop_id++ > LAST_SNS_LOOP_ID) {
56814 + if (dev_loop_id <= LAST_SNS_LOOP_ID) {
56816 + "%s(%ld): inst=%ld previous loop "
56817 + "id in use. Retry with 0x%04x.\n",
56818 + __func__, ha->host_no, ha->instance,
56821 + ha->fabricid[dev_loop_id].in_use = TRUE;
56829 + if (mb[0] != MBS_CMD_CMP) {
56830 + pext->Status = EXT_STATUS_ERR;
56831 + DEBUG9_10(printk( "%s(%ld): inst=%ld login failed.\n",
56832 + __func__, ha->host_no, ha->instance);)
56834 + qla2x00_free_ioctl_scrap_mem(ha);
56839 + /* Send command */
56840 + DEBUG9(printk("%s(%ld): inst=%ld sending rnid cmd.\n",
56841 + __func__, ha->host_no, ha->instance);)
56843 + ret = qla2x00_send_rnid_mbx(ha, dev_loop_id,
56844 + (uint8_t)tmp_rnid->DataFormat, ha->ioctl_mem_phys,
56845 + SEND_RNID_RSP_SIZE, &mb[0]);
56847 + if (ret != QLA2X00_SUCCESS) {
56849 + pext->Status = EXT_STATUS_ERR;
56851 + DEBUG9_10(printk("%s(%ld): inst=%ld FAILED. rval = %x.\n",
56852 + __func__, ha->host_no, ha->instance, mb[0]);)
56853 + qla2x00_free_ioctl_scrap_mem(ha);
56857 + DEBUG9(printk("%s(%ld): inst=%ld rnid cmd sent ok.\n",
56858 + __func__, ha->host_no, ha->instance);)
56860 + /* Copy the response */
56861 + copy_len = (pext->ResponseLen > SEND_RNID_RSP_SIZE) ?
56862 + SEND_RNID_RSP_SIZE : pext->ResponseLen;
56864 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
56868 + pext->Status = EXT_STATUS_COPY_ERR;
56869 + DEBUG9_10(printk(
56870 + "%s(%ld): inst=%ld rsp buf verify WRITE error\n",
56871 + __func__, ha->host_no, ha->instance);)
56873 + ret = copy_to_user((uint8_t *)pext->ResponseAdr,
56874 + (uint8_t *)ha->ioctl_mem, copy_len);
56876 + pext->Status = EXT_STATUS_COPY_ERR;
56877 + DEBUG9_10(printk(
56878 + "%s(%ld): inst=%ld ERROR copy rsp buf\n",
56879 + __func__, ha->host_no, ha->instance);)
56880 + qla2x00_free_ioctl_scrap_mem(ha);
56884 + if (SEND_RNID_RSP_SIZE > pext->ResponseLen) {
56885 + pext->Status = EXT_STATUS_DATA_OVERRUN;
56886 + DEBUG9(printk("%s(%ld): inst=%ld data overrun. "
56887 + "exiting normally.\n",
56888 + __func__, ha->host_no, ha->instance);)
56890 + pext->Status = EXT_STATUS_OK;
56891 + DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
56892 + __func__, ha->host_no, ha->instance);)
56894 + pext->ResponseLen = copy_len;
56897 + qla2x00_free_ioctl_scrap_mem(ha);
56902 + * qla2x00_get_rnid_params
56903 + * IOCTL to get RNID parameters of the adapter.
56906 + * ha = adapter state pointer.
56907 + * pext = User space CT arguments pointer.
56912 + * others = errno value
56915 + * Kernel context.
56918 +qla2x00_get_rnid_params(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
56921 + int tmp_rval = 0;
56922 + uint32_t copy_len;
56923 + uint16_t mb[MAILBOX_REGISTER_COUNT];
56925 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
56926 + __func__, ha->host_no, ha->instance);)
56928 + /* check on loop down */
56929 + if (ha->loop_state != LOOP_READY ||
56930 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
56931 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
56932 + ABORTS_ACTIVE || ha->dpc_active) {
56934 + pext->Status = EXT_STATUS_BUSY;
56935 + DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
56936 + __func__, ha->host_no, ha->instance);)
56941 + /* Send command */
56942 + tmp_rval = qla2x00_get_rnid_params_mbx(ha, ha->ioctl_mem_phys,
56943 + sizeof(EXT_RNID_DATA), &mb[0]);
56945 + if (tmp_rval != QLA2X00_SUCCESS) {
56947 + pext->Status = EXT_STATUS_ERR;
56949 + DEBUG9_10(printk("%s(%ld): inst=%ld cmd FAILED=%x.\n",
56950 + __func__, ha->host_no, ha->instance, mb[0]);)
56954 + /* Copy the response */
56955 + copy_len = (pext->ResponseLen > sizeof(EXT_RNID_DATA)) ?
56956 + (uint32_t)sizeof(EXT_RNID_DATA) : pext->ResponseLen;
56957 + ret = verify_area(VERIFY_WRITE, (void *)pext->ResponseAdr,
56961 + pext->Status = EXT_STATUS_COPY_ERR;
56962 + DEBUG9_10(printk("%s(%ld): inst=%ld verify WRITE rsp buf error\n",
56963 + __func__, ha->host_no, ha->instance);)
56965 + ret = copy_to_user((void *)pext->ResponseAdr,
56966 + (void *)ha->ioctl_mem, copy_len);
56968 + pext->Status = EXT_STATUS_COPY_ERR;
56969 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR copy rsp buf\n",
56970 + __func__, ha->host_no, ha->instance);)
56974 + pext->ResponseLen = copy_len;
56975 + if (copy_len < sizeof(EXT_RNID_DATA)) {
56976 + pext->Status = EXT_STATUS_DATA_OVERRUN;
56977 + DEBUG9_10(printk("%s(%ld): inst=%ld data overrun. "
56978 + "exiting normally.\n",
56979 + __func__, ha->host_no, ha->instance);)
56980 + } else if (pext->ResponseLen > sizeof(EXT_RNID_DATA)) {
56981 + pext->Status = EXT_STATUS_DATA_UNDERRUN;
56982 + DEBUG9_10(printk("%s(%ld): inst=%ld data underrun. "
56983 + "exiting normally.\n",
56984 + __func__, ha->host_no, ha->instance);)
56986 + pext->Status = EXT_STATUS_OK;
56987 + DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
56988 + __func__, ha->host_no, ha->instance);)
56996 + * qla2x00_set_host_data
56997 + * IOCTL command to set host/adapter related data.
57000 + * ha = adapter state pointer.
57001 + * pext = User space CT arguments pointer.
57006 + * others = errno value
57009 + * Kernel context.
57012 +qla2x00_set_host_data(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
57016 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57017 + __func__, ha->host_no, ha->instance);)
57019 + /* check on loop down */
57020 + if (ha->loop_state != LOOP_READY ||
57021 + test_bit(CFG_ACTIVE, &ha->cfg_flags) ||
57022 + (test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags)) ||
57023 + ABORTS_ACTIVE || ha->dpc_active) {
57025 + pext->Status = EXT_STATUS_BUSY;
57026 + DEBUG9_10(printk("%s(%ld): inst=%ld loop not ready.\n",
57027 + __func__, ha->host_no, ha->instance);)
57032 + /* switch on command subcode */
57033 + switch (pext->SubCode) {
57034 + case EXT_SC_SET_RNID:
57035 + ret = qla2x00_set_rnid_params(ha, pext, mode);
57038 + /* function not supported. */
57039 + pext->Status = EXT_STATUS_UNSUPPORTED_SUBCODE;
57043 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57044 + __func__, ha->host_no, ha->instance);)
57050 + * qla2x00_set_rnid_params
57051 + * IOCTL to set RNID parameters of the adapter.
57054 + * ha = adapter state pointer.
57055 + * pext = User space CT arguments pointer.
57060 + * others = errno value
57063 + * Kernel context.
57066 +qla2x00_set_rnid_params(scsi_qla_host_t *ha, EXT_IOCTL *pext, int mode)
57068 + EXT_SET_RNID_REQ *tmp_set;
57069 + EXT_RNID_DATA *tmp_buf;
57071 + int tmp_rval = 0;
57072 + uint16_t mb[MAILBOX_REGISTER_COUNT];
57074 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57075 + __func__, ha->host_no, ha->instance);)
57077 + if (pext->RequestLen != sizeof(EXT_SET_RNID_REQ)) {
57078 + /* parameter error */
57079 + pext->Status = EXT_STATUS_INVALID_PARAM;
57080 + DEBUG9_10(printk("%s(%ld): inst=%ld invalid request length.\n",
57081 + __func__, ha->host_no, ha->instance);)
57085 + ret = verify_area(VERIFY_READ, (void *)pext->RequestAdr,
57086 + pext->RequestLen);
57089 + pext->Status = EXT_STATUS_COPY_ERR;
57090 + DEBUG9_10(printk("%s(%ld): inst=%ld verify READ request buf.\n",
57091 + __func__, ha->host_no, ha->instance);)
57095 + if (qla2x00_get_ioctl_scrap_mem(ha, (void **)&tmp_set,
57096 + sizeof(EXT_SET_RNID_REQ))) {
57097 + /* not enough memory */
57098 + pext->Status = EXT_STATUS_NO_MEMORY;
57099 + DEBUG9_10(printk("%s(%ld): inst=%ld scrap not big enough. "
57100 + "size requested=%d.\n",
57101 + __func__, ha->host_no, ha->instance,
57102 + sizeof(EXT_SET_RNID_REQ));)
57106 + ret = copy_from_user(tmp_set, pext->RequestAdr, pext->RequestLen);
57108 + pext->Status = EXT_STATUS_COPY_ERR;
57109 + DEBUG9_10(printk(
57110 + "%s(%ld): inst=%ld ERROR copy req buf ret=%d\n",
57111 + __func__, ha->host_no, ha->instance, ret);)
57112 + qla2x00_free_ioctl_scrap_mem(ha);
57116 + tmp_rval = qla2x00_get_rnid_params_mbx(ha, ha->ioctl_mem_phys,
57117 + sizeof(EXT_RNID_DATA), &mb[0]);
57118 + if (tmp_rval != QLA2X00_SUCCESS) {
57120 + pext->Status = EXT_STATUS_ERR;
57122 + DEBUG9_10(printk("%s(%ld): inst=%ld read cmd FAILED=%x.\n",
57123 + __func__, ha->host_no, ha->instance, mb[0]);)
57124 + qla2x00_free_ioctl_scrap_mem(ha);
57128 + tmp_buf = (EXT_RNID_DATA *)ha->ioctl_mem;
57129 + /* Now set the params. */
57130 + memcpy(tmp_buf->IPVersion, tmp_set->IPVersion, 2);
57131 + memcpy(tmp_buf->UDPPortNumber, tmp_set->UDPPortNumber, 2);
57132 + memcpy(tmp_buf->IPAddress, tmp_set->IPAddress, 16);
57133 + tmp_rval = qla2x00_set_rnid_params_mbx(ha, ha->ioctl_mem_phys,
57134 + sizeof(EXT_RNID_DATA), &mb[0]);
57136 + if (tmp_rval != QLA2X00_SUCCESS) {
57138 + pext->Status = EXT_STATUS_ERR;
57140 + DEBUG9_10(printk("%s(%ld): inst=%ld set cmd FAILED=%x.\n",
57141 + __func__, ha->host_no, ha->instance, mb[0]);)
57143 + pext->Status = EXT_STATUS_OK;
57144 + DEBUG9(printk("%s(%ld): inst=%ld exiting normally.\n",
57145 + __func__, ha->host_no, ha->instance);)
57148 + qla2x00_free_ioctl_scrap_mem(ha);
57153 + * qla2x00_waitq_sem_timeout
57154 + * Timeout function to be called when a thread on the wait_q
57155 + * queue timed out.
57158 + * data = data pointer for timeout function.
57161 + * qla2x00 local function return status code.
57164 + * Kernel context.
57167 +qla2x00_waitq_sem_timeout(unsigned long data)
57169 + wait_q_t *tmp_ptr = (wait_q_t *)data;
57171 + DEBUG9(printk("%s: entered.\n", __func__);)
57173 + if (tmp_ptr != NULL) {
57174 + DEBUG9(printk("%s: wait_q thread=%p.\n", __func__, tmp_ptr);)
57175 + up(&tmp_ptr->wait_q_sem);
57178 + DEBUG9(printk("%s: exiting.\n", __func__);)
57183 + * qla2x00_get_ioctl_access
57184 + * Serialization routine for the ioctl commands.
57185 + * When succeeded the exiting thread gains "access" and
57186 + * proceeds, otherwise it gives up and returns error.
57187 + * Each thread would wait tov seconds before giving up.
57190 + * ha = adapter state pointer.
57191 + * tov = timeout value in seconds
57194 + * qla2x00 local function return status code.
57197 + * Kernel context.
57200 +qla2x00_get_ioctl_access(scsi_qla_host_t *ha, uint32_t tov)
57202 + int prev_val = 1;
57203 + uint8_t rval = QL_STATUS_SUCCESS;
57204 + unsigned long cpu_flags;
57205 + struct timer_list tmp_access_timer;
57206 + wait_q_t *ptmp_wq = NULL;
57209 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57210 + __func__, ha->host_no, ha->instance);)
57213 + if (test_bit(IOCTL_WANT, (void *)&(ha->ioctl->access_bits)) ==
57216 + DEBUG9(printk("%s(%ld): going to test access_bits.\n",
57217 + __func__, ha->host_no);)
57219 + /* No one else is waiting. Go ahead and try to
57222 + if ((prev_val = test_and_set_bit(IOCTL_ACTIVE,
57223 + (void *)&ha->ioctl->access_bits)) == 0) {
57228 + /* wait for previous command to finish */
57229 + DEBUG9(printk("%s(%ld): inst=%ld access_bits=%x. busy. "
57230 + "Waiting for access. curr time=0x%lx.\n",
57231 + __func__, ha->host_no, ha->instance,
57232 + ha->ioctl->access_bits, jiffies);)
57235 + * Init timer and get semaphore from wait_q. if we got valid
57236 + * semaphore pointer the IOCTL_WANT flag would also had
57239 + qla2x00_wait_q_add(ha, &ptmp_wq);
57241 + if (ptmp_wq == NULL) {
57242 + /* queue full? problem? can't proceed. */
57243 + DEBUG9_10(printk("%s(%ld): ERROR no more wait_q "
57244 + "allowed. exiting.\n", __func__, ha->host_no);)
57249 + init_timer(&tmp_access_timer);
57251 + tmp_access_timer.data = (unsigned long)ptmp_wq;
57252 + tmp_access_timer.function =
57253 + (void (*)(unsigned long))qla2x00_waitq_sem_timeout;
57254 + tmp_access_timer.expires = jiffies + tov * HZ;
57256 + DEBUG9(printk("%s(%ld): adding timer. "
57257 + "curr time=0x%lx timeoutval=0x%lx.\n",
57258 + __func__, ha->host_no, jiffies, tmp_access_timer.expires);)
57261 + add_timer(&tmp_access_timer);
57263 + DEBUG9(printk("%s(%ld): inst=%ld wait_q %p going to sleep. "
57264 + "current time=0x%lx.\n",
57265 + __func__, ha->host_no, ha->instance, ptmp_wq, jiffies);)
57267 + down_interruptible(&ptmp_wq->wait_q_sem);
57269 + DEBUG9(printk("%s(%ld): inst=%ld wait_q %p woke up. current "
57271 + __func__, ha->host_no, ha->instance, ptmp_wq, jiffies);)
57273 + del_timer(&tmp_access_timer);
57275 + /* try to get lock again. we'll test later to see
57276 + * if we actually got the lock.
57278 + prev_val = test_and_set_bit(IOCTL_ACTIVE,
57279 + (void *)&(ha->ioctl->access_bits));
57282 + * After we tried to get access then we check to see
57283 + * if we need to clear the IOCTL_WANT flag. Don't clear
57284 + * this flag before trying to get access or another
57285 + * new thread might grab it before we did.
57287 + spin_lock_irqsave(&ha->ioctl->wait_q_lock, cpu_flags);
57288 + if (prev_val != 0) {
57289 + /* We'll return with error.
57290 + * Make sure we remove ourselves from wait_q.
57292 + qla2x00_wait_q_remove(ha, ptmp_wq);
57294 + if (ha->ioctl->wait_q_head == NULL) {
57295 + /* We're the last thread in wait_q queue. */
57296 + clear_bit(IOCTL_WANT, (void *)&ha->ioctl->access_bits);
57298 + qla2x00_wait_q_memb_free(ha, ptmp_wq);
57299 + spin_unlock_irqrestore(&ha->ioctl->wait_q_lock, cpu_flags);
57304 + if (prev_val == 0) {
57305 + /* We got the lock */
57307 + DEBUG9(printk("%s(%ld): inst=%ld got access.\n",
57308 + __func__, ha->host_no, ha->instance);)
57311 + /* Timeout or resource error. */
57312 + DEBUG9_10(printk("%s(%ld): inst=%ld timed out "
57313 + "or wait_q error.\n", __func__, ha->host_no, ha->instance);)
57315 + rval = QL_STATUS_TIMEOUT;
57322 + * qla2x00_release_ioctl_access
57323 + * Serialization routine for the ioctl commands.
57324 + * This releases "access" and checks on wai_q queue. If there's
57325 + * another thread waiting then wakes it up.
57328 + * ha = adapter state pointer.
57329 + * tov = timeout value in seconds
57332 + * qla2x00 local function return status code.
57335 + * Kernel context.
57338 +qla2x00_release_ioctl_access(scsi_qla_host_t *ha)
57340 + wait_q_t *next_thread = NULL;
57342 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57343 + __func__, ha->host_no, ha->instance);)
57345 + clear_bit(IOCTL_ACTIVE, (void *)&(ha->ioctl->access_bits));
57347 + /* Wake up one pending ioctl thread in wait_q */
57348 + qla2x00_wait_q_get_next(ha, &next_thread);
57349 + if (next_thread) {
57351 + "%s(%ld): inst=%ld found wait_q. Wake up waitq %p\n",
57352 + __func__, ha->host_no, ha->instance, &next_thread);)
57353 + up(&next_thread->wait_q_sem);
57356 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57357 + __func__, ha->host_no, ha->instance);)
57359 + return QL_STATUS_SUCCESS;
57363 + * qla2x00_wait_q_memb_alloc
57364 + * Finds a free wait_q member from the array. Must already got the
57365 + * wait_q_lock spinlock.
57368 + * ha = adapter state pointer.
57371 + * qla2x00 local function return status code.
57374 + * Kernel context.
57377 +qla2x00_wait_q_memb_alloc(scsi_qla_host_t *ha, wait_q_t **ret_wait_q_memb)
57380 + wait_q_t *ptmp = NULL;
57382 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57383 + __func__, ha->host_no, ha->instance);)
57385 + for (i = 0; i < MAX_IOCTL_WAIT_THREADS; i++) {
57386 + if (!(ha->ioctl->wait_q_arr[i].flags & WQ_IN_USE)) {
57387 + ha->ioctl->wait_q_arr[i].flags |= WQ_IN_USE;
57388 + ptmp = &ha->ioctl->wait_q_arr[i];
57393 + *ret_wait_q_memb = ptmp;
57395 + DEBUG9(printk("%s(%ld): inst=%ld return waitq_memb=%p.\n",
57396 + __func__, ha->host_no, ha->instance, *ret_wait_q_memb);)
57400 + * qla2x00_wait_q_memb_free
57401 + * Frees the specified wait_q member. Must already got the wait_q_lock
57405 + * ha = adapter state pointer.
57408 + * qla2x00 local function return status code.
57411 + * Kernel context.
57414 +qla2x00_wait_q_memb_free(scsi_qla_host_t *ha, wait_q_t *pfree_wait_q_memb)
57416 + DEBUG9(printk("%s(%ld): inst=%ld entered.\n",
57417 + __func__, ha->host_no, ha->instance);)
57419 + if (pfree_wait_q_memb != NULL) {
57420 + DEBUG9(printk("%s(%ld): freeing %p.\n",
57421 + __func__, ha->host_no, pfree_wait_q_memb);)
57422 + pfree_wait_q_memb->flags &= ~WQ_IN_USE;
57425 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57426 + __func__, ha->host_no, ha->instance);)
57430 + * qla2x00_wait_q_add
57431 + * Allocates a wait_q_t struct and add to the wait_q list.
57434 + * ha = adapter state pointer.
57437 + * qla2x00 local function return status code.
57440 + * Kernel context.
57443 +qla2x00_wait_q_add(scsi_qla_host_t *ha, wait_q_t **ret_wq)
57445 + uint8_t rval = QL_STATUS_SUCCESS;
57446 + unsigned long cpu_flags;
57447 + wait_q_t *ptmp = NULL;
57449 + spin_lock_irqsave(&ha->ioctl->wait_q_lock, cpu_flags);
57451 + DEBUG9(printk("%s(%ld): inst=%ld got wait_q spinlock.\n",
57452 + __func__, ha->host_no, ha->instance);)
57454 + qla2x00_wait_q_memb_alloc(ha, &ptmp);
57455 + if (ptmp == NULL) {
57456 + /* can't add any more threads */
57457 + DEBUG9_10(printk("%s(%ld): inst=%ld ERROR no more ioctl "
57458 + "threads allowed.\n",
57459 + __func__, ha->host_no, ha->instance);)
57461 + rval = QL_STATUS_RESOURCE_ERROR;
57463 + if (ha->ioctl->wait_q_tail == NULL) {
57464 + /* First thread to queue. */
57465 + set_bit(IOCTL_WANT, (void *)&ha->ioctl->access_bits);
57467 + ha->ioctl->wait_q_head = ptmp;
57469 + ha->ioctl->wait_q_tail->pnext = ptmp;
57471 + ha->ioctl->wait_q_tail = ptmp;
57475 + /* Now init the semaphore */
57477 + init_MUTEX_LOCKED(&ptmp->wait_q_sem);
57479 + rval = QL_STATUS_SUCCESS;
57482 + DEBUG9(printk("%s(%ld): inst=%ld going to release spinlock. "
57483 + "ret_wq=%p, rval=%d.\n",
57484 + __func__, ha->host_no, ha->instance, *ret_wq, rval);)
57486 + spin_unlock_irqrestore(&ha->ioctl->wait_q_lock, cpu_flags);
57492 + * qla2x00_wait_q_get_next
57493 + * This just removes one member from head of wait_q.
57496 + * ha = adapter state pointer.
57499 + * qla2x00 local function return status code.
57502 + * Kernel context.
57505 +qla2x00_wait_q_get_next(scsi_qla_host_t *ha, wait_q_t **ret_wq)
57507 + unsigned long cpu_flags;
57509 + if (test_bit(IOCTL_ACTIVE, (void *)&(ha->ioctl->access_bits)) != 0) {
57510 + /* Another thread just became active. Exit. */
57515 + /* Find the next thread to wake up */
57516 + spin_lock_irqsave(&ha->ioctl->wait_q_lock, cpu_flags);
57518 + DEBUG9(printk("%s(%ld): inst=%ld got wait_q spinlock.\n",
57519 + __func__, ha->host_no, ha->instance);)
57521 + /* Remove from head */
57522 + *ret_wq = ha->ioctl->wait_q_head;
57523 + if (ha->ioctl->wait_q_head != NULL) {
57525 + ha->ioctl->wait_q_head = ha->ioctl->wait_q_head->pnext;
57527 + if (ha->ioctl->wait_q_head == NULL) {
57528 + /* That's the last one in queue. */
57529 + ha->ioctl->wait_q_tail = NULL;
57532 + (*ret_wq)->pnext = NULL;
57535 + DEBUG9(printk("%s(%ld): inst=%ld return ret_wq=%p. Going to release "
57537 + __func__, ha->host_no, ha->instance, *ret_wq);)
57538 + spin_unlock_irqrestore(&ha->ioctl->wait_q_lock, cpu_flags);
57542 + * qla2x00_wait_q_remove
57543 + * Removes the specified member from wait_q.
57544 + * Must already got the wait_q_lock spin lock.
57547 + * ha = adapter state pointer.
57550 + * qla2x00 local function return status code.
57553 + * Kernel context.
57556 +qla2x00_wait_q_remove(scsi_qla_host_t *ha, wait_q_t *rem_wq)
57558 + wait_q_t *ptmp_wq;
57559 + wait_q_t *ptmp_prev;
57561 + DEBUG9(printk("%s(%ld): inst=%ld rem_wq=%p.\n",
57562 + __func__, ha->host_no, ha->instance, rem_wq);)
57564 + /* Search then remove */
57565 + ptmp_prev = NULL;
57566 + for (ptmp_wq = ha->ioctl->wait_q_head; ptmp_wq != NULL;
57567 + ptmp_wq = ptmp_wq->pnext) {
57569 + if (ptmp_wq == rem_wq) {
57570 + /* Found it in wait_q. Remove. */
57572 + DEBUG9(printk("%s(%ld): inst=%ld removing.\n",
57573 + __func__, ha->host_no, ha->instance);)
57575 + if (ha->ioctl->wait_q_head == ptmp_wq) {
57576 + ha->ioctl->wait_q_head = ptmp_wq->pnext;
57578 + ptmp_prev->pnext = ptmp_wq->pnext;
57581 + if (ha->ioctl->wait_q_tail == ptmp_wq) {
57582 + ha->ioctl->wait_q_tail = ptmp_prev;
57585 + ptmp_wq->pnext = NULL;
57589 + ptmp_prev = ptmp_wq;
57592 + DEBUG9(printk("%s(%ld): inst=%ld exiting.\n",
57593 + __func__, ha->host_no, ha->instance);)
57597 --- /dev/null Thu Apr 11 07:25:15 2002
57598 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qlfo.h Thu Jul 3 15:34:42 2003
57600 +/******************************************************************************
57601 + * QLOGIC LINUX SOFTWARE
57603 + * QLogic ISP2x00 device driver for Linux 2.5.x
57604 + * Copyright (C) 2003 Qlogic Corporation
57605 + * (www.qlogic.com)
57607 + * This program is free software; you can redistribute it and/or modify it
57608 + * under the terms of the GNU General Public License as published by the
57609 + * Free Software Foundation; either version 2, or (at your option) any
57612 + * This program is distributed in the hope that it will be useful, but
57613 + * WITHOUT ANY WARRANTY; without even the implied warranty of
57614 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
57615 + * General Public License for more details.
57617 + ******************************************************************************/
57620 + * San/Device Management Failover Ioctl Header
57621 + * File is created to adhere to Solaris requirement using 8-space tabs.
57623 + * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
57624 + * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
57625 + * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
57627 + * Revision History:
57629 + * Rev. 0.00 August 8, 2000
57632 + * Rev. 0.01 August 8, 2000
57633 + * WTR - Made size of HbaInstance fields consistant as UINT8.
57634 + * Made command codes as 300 upward to be consistant with definitions
57636 + * Rev. 0.01 October 3, 2000
57637 + * TLE - Exclusion of ExIoct.h
57639 + * Rev. 0.01 October 6, 2000
57640 + * TLE - Made size of HbaInstance fields UINT8
57642 + * Rev. 0.01 October 10, 2000
57643 + * TLE - Add _FO_DRIVER_VERSION data structure
57652 + * ***********************************************************************
57653 + * X OS type definitions
57654 + * ***********************************************************************
57656 +#ifdef _MSC_VER /* NT */
57659 +#include "qlfont.h"
57661 +#elif defined(linux) /* Linux */
57663 +#include "qlfoln.h"
57665 +#elif defined(sun) || defined(__sun) /* Solaris */
57667 +#include "qlfoso.h"
57671 +#define SDM_DEF_MAX_DEVICES 16
57672 +#define SDM_DEF_MAX_PATHS_PER_TARGET 4
57673 +#define SDM_DEF_MAX_TARGETS_PER_DEVICE 4
57674 +#define SDM_DEF_MAX_PATHS_PER_DEVICE (SDM_DEF_MAX_PATHS_PER_TARGET * SDM_DEF_MAX_TARGETS_PER_DEVICE)
57676 +#define FO_MAX_LUNS_PER_DEVICE MAX_LUNS_OS
57677 +#define FO_MAX_PATHS (SDM_DEF_MAX_PATHS_PER_DEVICE * SDM_DEF_MAX_DEVICES)
57678 +#define FO_MAX_ADAPTERS 32
57679 +#define FO_ADAPTER_ALL 0xFF
57680 +#define FO_DEF_WWN_SIZE 8
57681 +#define FO_MAX_GEN_INFO_STRING_LEN 32
57684 +#define FO_NOTIFY_TYPE_NONE 0
57685 +#define FO_NOTIFY_TYPE_LUN_RESET 1
57686 +#define FO_NOTIFY_TYPE_CDB 2
57687 +#define FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET 3
57688 +#define FO_NOTIFY_TYPE_LOGOUT_OR_CDB 4
57690 +#define FO_NOTIFY_TYPE_MIN FO_NOTIFY_TYPE_NONE
57691 +#define FO_NOTIFY_TYPE_MAX FO_NOTIFY_TYPE_LOGOUT_OR_CDB
57692 +#define FO_NOTIFY_TYPE_DEF FO_NOTIFY_TYPE_NONE
57694 +#define FO_NOTIFY_CDB_LENGTH_MIN 6
57695 +#define FO_NOTIFY_CDB_LENGTH_MAX 16
57701 +#define FO_CC_GET_PARAMS FO_CC_GET_PARAMS_OS
57702 +#define FO_CC_SET_PARAMS FO_CC_SET_PARAMS_OS
57703 +#define FO_CC_GET_PATHS FO_CC_GET_PATHS_OS
57704 +#define FO_CC_SET_CURRENT_PATH FO_CC_SET_CURRENT_PATH_OS
57705 +#define FO_CC_GET_HBA_STAT FO_CC_GET_HBA_STAT_OS
57706 +#define FO_CC_RESET_HBA_STAT FO_CC_RESET_HBA_STAT_OS
57707 +#define FO_CC_GET_LUN_DATA FO_CC_GET_LUN_DATA_OS
57708 +#define FO_CC_SET_LUN_DATA FO_CC_SET_LUN_DATA_OS
57709 +#define FO_CC_GET_TARGET_DATA FO_CC_GET_TARGET_DATA_OS
57710 +#define FO_CC_SET_TARGET_DATA FO_CC_SET_TARGET_DATA_OS
57711 +#define FO_CC_GET_FO_DRIVER_VERSION FO_CC_GET_FO_DRIVER_VERSION_OS
57714 +/* Systemwide failover parameters. */
57716 +typedef struct _FO_PARAMS
57718 + UINT32 InspectionInterval; /* Timer interval to check for failover.*/
57719 + UINT8 MaxPathsPerDevice; /* Max paths to any single device. */
57720 + UINT8 MaxRetriesPerPath; /* Max retries on a path before */
57723 + UINT8 MaxRetriesPerIo; /* Max retries per i/o request. */
57725 + UINT32 Flags; /* Control flags. */
57726 + UINT8 DeviceErrorThreshold; /* Max device errors. */
57727 + UINT8 DeviceTimeoutThreshold; /* Max device timeouts.*/
57728 + UINT8 FrameErrorThreshold; /* Max frame errors.*/
57729 + UINT8 LinkErrorThreshold; /* Max link errors.*/
57730 + UINT32 Reserved2[4]; /* Spares.*/
57732 + /* Load balancing parameters.*/
57734 + UINT8 RollingAverageIntervals;/* Intervals to sum for rolling average.*/
57735 + UINT8 MaxDevicesToMigrate; /* Max devices to migrate in any interval.*/
57736 + UINT8 BalanceMethod; /* Method to use for load balancing.*/
57737 + UINT8 Reserved3; /* Memory alignment.*/
57739 + UINT16 LoadShareMinPercentage; /* Load balancing parameter.*/
57740 + UINT16 LoadShareMaxPercentage; /* Load balancing parameter.*/
57742 + /* Failover notify parameters. */
57744 + UINT8 FailoverNotifyType; /* Type of notification. */
57745 + UINT8 FailoverNotifyCdbLength;/* Length of notification CDB. */
57746 + UINT16 Reserved4;
57747 + UINT8 FailoverNotifyCdb[16]; /* CDB if notification by CDB. */
57748 + UINT32 Reserved5;
57751 +FO_PARAMS, *PFO_PARAMS, SysFoParams_t, *SysFoParams_p;
57753 +extern SysFoParams_t qla_fo_params;
57755 +typedef struct _FO_GET_PATHS
57757 + UINT8 HbaInstance;
57758 + EXT_DEST_ADDR HbaAddr; /* Lun field is ignored */
57759 + UINT32 Reserved[5];
57762 +FO_GET_PATHS, *PFO_GET_PATHS;
57765 +typedef struct _FO_PATH_ENTRY
57768 + UINT8 Visible; /* Path is visible path. */
57771 + UINT8 HbaInstance;
57772 + UINT8 PortName[EXT_DEF_WWN_NAME_SIZE];
57773 + UINT16 Reserved3;
57774 + UINT32 Reserved[3];
57777 +FO_PATH_ENTRY, *PFO_PATH_ENTRY;
57780 +typedef struct _FO_PATHS_INFO
57782 + /* These first fields in the output buffer are specifically the
57783 + * same as the fields in the input buffer. This is because the
57784 + * same system buffer holds both, and this allows us to reference
57785 + * the input buffer parameters while filling the output buffer. */
57787 + UINT8 HbaInstance;
57788 + EXT_DEST_ADDR HbaAddr;
57789 + UINT32 Reserved[5];
57790 + UINT8 PathCount; /* Number of Paths in PathEntry array */
57792 + UINT8 VisiblePathIndex; /* Which index has BOOLEAN "visible" flag set */
57795 + UINT8 CurrentPathIndex[FO_MAX_LUNS_PER_DEVICE]; /* Current Path Index for each Lun */
57797 + FO_PATH_ENTRY PathEntry[FO_MAX_PATHS];
57799 + UINT32 Reserved5[4];
57802 +FO_PATHS_INFO, *PFO_PATHS_INFO;
57804 +typedef struct _FO_SET_CURRENT_PATH
57806 + UINT8 HbaInstance;
57807 + EXT_DEST_ADDR HbaAddr;
57808 + UINT8 NewCurrentPathIndex; /* Path index to make current path. */
57809 + UINT8 FailoverType; /* Reason for failover. */
57810 + UINT32 Reserved[3];
57813 +FO_SET_CURRENT_PATH, *PFO_SET_CURRENT_PATH;
57815 +typedef union _FO_PATHS {
57816 + FO_GET_PATHS input;
57817 + FO_SET_CURRENT_PATH set
57819 + FO_PATHS_INFO info;
57823 +typedef struct _FO_HBA_STAT_INPUT
57825 + /* The first field in the input buffer is specifically the
57826 + * same as the field in the output buffer. This is because the
57827 + * same system buffer holds both, and this allows us to reference
57828 + * the input buffer parameters while filling the output buffer. */
57830 + UINT8 HbaInstance; /* Port number or ADAPTER_ALL. */
57831 + UINT8 Reserved1[3];
57832 + UINT32 Reserved2[7];
57835 +FO_HBA_STAT_INPUT, *PFO_HBA_STAT_INPUT;
57838 +typedef struct _FO_HBA_STAT_ENTRY
57840 + UINT8 HbaInstance;
57841 + UINT8 Reserved1[3];
57842 + UINT32 Reserved2;
57843 + UINT64 IosRequested; /* IOs requested on this adapter. */
57844 + UINT64 BytesRequested; /* Bytes requested on this adapter. */
57845 + UINT64 IosExecuted; /* IOs executed on this adapter. */
57846 + UINT64 BytesExecuted; /* Bytes executed on this adapter. */
57847 + UINT32 Reserved3[22];
57850 +FO_HBA_STAT_ENTRY, *PFO_HBA_STAT_ENTRY;
57853 +typedef struct _FO_HBA_STAT_INFO
57855 + /* The first fields in the output buffer is specifically the
57856 + * same as the field in the input buffer. This is because the
57857 + * same system buffer holds both, and this allows us to reference
57858 + * the input buffer parameters while filling the output buffer. */
57860 + UINT8 HbaInstance; /* Port number or ADAPTER_ALL. */
57861 + UINT8 HbaCount; /* Count of adapters returned. */
57862 + UINT8 Reserved1[2];
57863 + UINT32 Reserved2[7];
57865 + FO_HBA_STAT_ENTRY StatEntry[FO_MAX_ADAPTERS];
57868 +FO_HBA_STAT_INFO, *PFO_HBA_STAT_INFO;
57872 +/* The "external" LUN data refers to the LUNs as represented in our
57873 + configuration utility, where one physical target can support up to
57874 + 2048 LUNs, which are mapped around internally. This is in comparison
57875 + to an "internal" LUN data, which is 256 LUNs, after being mapped
57876 + inside the driver to multiple target slots. */
57878 +#define EXTERNAL_LUN_COUNT 2048
57880 +/* Structure as used in the IOCTL.*/
57882 +typedef struct _FO_EXTERNAL_LUN_DATA_ENTRY
57884 + UINT8 NodeName[EXT_DEF_WWN_NAME_SIZE];
57885 + UINT8 PortName[EXT_DEF_WWP_NAME_SIZE]; //sri
57887 + UINT16 LunCount; /* Entries in Lun Data array. */
57890 + UINT32 Reserved3;
57891 + UINT32 Reserved4;
57892 + UINT32 Reserved5; /* Pad to 32-byte header.*/
57894 + UINT8 Data[EXTERNAL_LUN_COUNT];
57896 +FO_EXTERNAL_LUN_DATA_ENTRY, *PFO_EXTERNAL_LUN_DATA_ENTRY;
57898 +// Structure as it is stored in the NT registry.
57900 +typedef struct _FO_LUN_DATA_LIST
57902 + UINT16 Version; /* Should be LUN_DATA_REGISTRY_VERSION.*/
57903 + UINT16 EntryCount; /* Count of variable entries following.*/
57904 + UINT32 Reserved1;
57905 + UINT32 Reserved2;
57906 + UINT32 Reserved3;
57907 + UINT32 Reserved4;
57908 + UINT32 Reserved5;
57909 + UINT32 Reserved6;
57910 + UINT32 Reserved7; /* Pad to 32-byte header.*/
57912 + FO_EXTERNAL_LUN_DATA_ENTRY DataEntry[1]; /* Variable-length data.*/
57915 +FO_LUN_DATA_LIST, *PFO_LUN_DATA_LIST;
57917 +typedef struct _FO_LUN_DATA_INPUT
57919 + /* The first field in the input buffer is specifically the
57920 + * same as the field in the output buffer. This is because the
57921 + * same system buffer holds both, and this allows us to reference
57922 + * the input buffer parameters while filling the output buffer. */
57924 + UINT8 HbaInstance; /* Port number */
57925 + UINT8 Reserved1[3];
57926 + UINT32 Reserved2[7];
57929 +FO_LUN_DATA_INPUT, *PFO_LUN_DATA_INPUT;
57931 +typedef struct _FO_REQUEST_ADDR
57933 + UINT8 HbaInstance;
57934 + EXT_DEST_ADDR TargetAddr;
57935 + UINT32 Reserved[5];
57938 +FO_REQUEST_ADDR, *PFO_REQUEST_ADDR;
57940 +typedef struct _FO_TARGET_DATA_INPUT
57942 + UINT8 HbaInstance; /* Port number */
57943 + UINT8 Reserved1[3];
57944 + UINT32 Reserved2[7];
57947 +FO_TARGET_DATA_INPUT, *PFO_TARGET_DATA_INPUT;
57949 +#define FO_INTERNAL_LUN_COUNT 256
57950 +#define FO_INTERNAL_LUN_BITMASK_BYTES (FO_INTERNAL_LUN_COUNT / 8)
57952 +typedef struct _FO_INTERNAL_LUN_BITMASK
57954 + UINT8 Bitmask[FO_INTERNAL_LUN_BITMASK_BYTES];
57956 +FO_INTERNAL_LUN_BITMASK, *PFO_INTERNAL_LUN_BITMASK;
57958 +typedef struct _FO_DEVICE_DATA
57960 + UINT32 DeviceFlags; /* Device flags */
57961 + UINT16 LoopId; /* Current loop ID */
57962 + UINT16 BaseLunNumber; /* Base LUN number */
57963 + UINT8 WorldWideName[8]; /* World Wide Name for device */
57964 + UINT8 PortId[3]; /* Port ID */
57965 + UINT8 MultipathControl; /* Multipath control byte. */
57966 + UINT16 DeviceState; /* Device state */
57967 + UINT16 LoginRetryCount; /* Number of login retries */
57968 + UINT8 PortName[8]; /* Port name for device */
57969 + UINT16 TimeoutCount; /* Command timeout count */
57972 + FO_INTERNAL_LUN_BITMASK LunBitmask; /* LUN bitmask */
57974 +FO_DEVICE_DATA, *PFO_DEVICE_DATA;
57976 +typedef struct _FO_DEVICE_DATABASE
57978 + FO_DEVICE_DATA DeviceData[256];
57980 +FO_DEVICE_DATABASE, *PFO_DEVICE_DATABASE;
57982 +typedef struct _FO_DRIVER_VERSION
57984 + // Numeric version.
57985 + UINT8 Version; // Major version number.
57986 + UINT8 Revision; // Minor version number.
57987 + UINT8 Subrevision; // Subminor version number.
57988 + UINT8 Reserved1; // Memory alignment.
57990 + // String version.
57991 + UINT8 VersionStr[FO_MAX_GEN_INFO_STRING_LEN];
57993 + // Reserved fields.
57994 + UINT32 Reserved2[16];
57997 +FO_DRIVER_VERSION, *PFO_DRIVER_VERSION;
58000 +#define FO_LUN_DATA_LIST_MIN_ENTRIES 1
58001 +#define FO_LUN_DATA_LIST_MAX_ENTRIES 256
58003 +#define FO_LUN_DATA_LIST_HEADER_SIZE 32
58005 +#define FO_LUN_DATA_LIST_HEADER_SIZE offsetof(FO_LUN_DATA_LIST, DataEntry)
58008 +#define FO_LUN_DATA_LIST_MIN_SIZE (FO_LUN_DATA_LIST_HEADER_SIZE + (sizeof(FO_EXTERNAL_LUN_DATA_ENTRY) * FO_LUN_DATA_LIST_MIN_ENTRIES))
58009 +#define FO_LUN_DATA_LIST_MAX_SIZE (FO_LUN_DATA_LIST_HEADER_SIZE + (sizeof(FO_EXTERNAL_LUN_DATA_ENTRY) * FO_LUN_DATA_LIST_MAX_ENTRIES))
58012 +#endif /* ifndef _FO_H */
58013 --- /dev/null Thu Apr 11 07:25:15 2002
58014 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qlfolimits.h Thu Jul 3 15:34:42 2003
58016 +/******************************************************************************
58017 + * QLOGIC LINUX SOFTWARE
58019 + * QLogic ISP2x00 device driver for Linux 2.5.x
58020 + * Copyright (C) 2003 Qlogic Corporation
58021 + * (www.qlogic.com)
58023 + * This program is free software; you can redistribute it and/or modify it
58024 + * under the terms of the GNU General Public License as published by the
58025 + * Free Software Foundation; either version 2, or (at your option) any
58028 + * This program is distributed in the hope that it will be useful, but
58029 + * WITHOUT ANY WARRANTY; without even the implied warranty of
58030 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
58031 + * General Public License for more details.
58033 + ******************************************************************************/
58036 + * Minimums, maximums, defaults, and other definitions for MC_PARAMS.
58039 +#define FO_INSPECTION_INTERVAL_MIN 0
58040 +#define FO_INSPECTION_INTERVAL_MAX 1000000
58041 +#define FO_INSPECTION_INTERVAL_DEF 600
58043 +#define FO_MAX_PATHS_PER_DEVICE_MIN 1
58044 +#define FO_MAX_PATHS_PER_DEVICE_MAX 8
58045 +#define FO_MAX_PATHS_PER_DEVICE_DEF 8
58047 +#define FO_MAX_RETRIES_PER_PATH_MIN 1
58048 +#define FO_MAX_RETRIES_PER_PATH_MAX 8
58049 +#define FO_MAX_RETRIES_PER_PATH_DEF 3
58051 +#define FO_MAX_RETRIES_PER_IO_MIN ((FO_MAX_PATHS_PER_DEVICE_MIN * FO_MAX_RETRIES_PER_PATH_MIN) + 1)
58052 +#define FO_MAX_RETRIES_PER_IO_MAX ((FO_MAX_PATHS_PER_DEVICE_MAX * FO_MAX_RETRIES_PER_PATH_MAX) + 1)
58053 +#define FO_MAX_RETRIES_PER_IO_DEF ((FO_MAX_PATHS_PER_DEVICE_DEF * FO_MAX_RETRIES_PER_PATH_DEF) + 1)
58055 +#define FO_DEVICE_ERROR_THRESHOLD_MIN 1
58056 +#define FO_DEVICE_ERROR_THRESHOLD_MAX 255
58057 +#define FO_DEVICE_ERROR_THRESHOLD_DEF 4
58059 +#define FO_DEVICE_TIMEOUT_THRESHOLD_MIN 1
58060 +#define FO_DEVICE_TIMEOUT_THRESHOLD_MAX 255
58061 +#define FO_DEVICE_TIMEOUT_THRESHOLD_DEF 4
58063 +#define FO_FRAME_ERROR_THRESHOLD_MIN 1
58064 +#define FO_FRAME_ERROR_THRESHOLD_MAX 255
58065 +#define FO_FRAME_ERROR_THRESHOLD_DEF 4
58067 +#define FO_LINK_ERROR_THRESHOLD_MIN 1
58068 +#define FO_LINK_ERROR_THRESHOLD_MAX 255
58069 +#define FO_LINK_ERROR_THRESHOLD_DEF 4
58071 +#define FO_ROLLING_AVERAGE_INTERVALS_MIN 1
58072 +#define FO_ROLLING_AVERAGE_INTERVALS_MAX 10
58073 +#define FO_ROLLING_AVERAGE_INTERVALS_DEF 1
58075 +#define FO_MAX_DEVICES_TO_MIGRATE_MIN 0
58076 +#define FO_MAX_DEVICES_TO_MIGRATE_MAX 255
58077 +#define FO_MAX_DEVICES_TO_MIGRATE_DEF 4
58079 +#define FO_BALANCE_METHOD_NONE 0
58080 +#define FO_BALANCE_METHOD_IOS 1
58081 +#define FO_BALANCE_METHOD_MBS 2
58083 +#define FO_BALANCE_METHOD_MIN FO_BALANCE_METHOD_NONE
58084 +#define FO_BALANCE_METHOD_MAX FO_BALANCE_METHOD_MBS
58085 +#define FO_BALANCE_METHOD_DEF FO_BALANCE_METHOD_IOS
58087 +#define FO_LOAD_SHARE_MIN_PERCENTAGE_MIN 25
58088 +#define FO_LOAD_SHARE_MIN_PERCENTAGE_MAX 99
58089 +#define FO_LOAD_SHARE_MIN_PERCENTAGE_DEF 75
58091 +#define FO_LOAD_SHARE_MAX_PERCENTAGE_MIN 101
58092 +#define FO_LOAD_SHARE_MAX_PERCENTAGE_MAX 500
58093 +#define FO_LOAD_SHARE_MAX_PERCENTAGE_DEF 150
58095 +#define FO_NOTIFY_TYPE_NONE 0
58096 +#define FO_NOTIFY_TYPE_LUN_RESET 1
58097 +#define FO_NOTIFY_TYPE_CDB 2
58098 +#define FO_NOTIFY_TYPE_LOGOUT_OR_LUN_RESET 3
58099 +#define FO_NOTIFY_TYPE_LOGOUT_OR_CDB 4
58101 +#define FO_NOTIFY_TYPE_MIN FO_NOTIFY_TYPE_NONE
58102 +#define FO_NOTIFY_TYPE_MAX FO_NOTIFY_TYPE_LOGOUT_OR_CDB
58103 +#define FO_NOTIFY_TYPE_DEF FO_NOTIFY_TYPE_NONE
58105 +#define FO_NOTIFY_CDB_LENGTH_MIN 6
58106 +#define FO_NOTIFY_CDB_LENGTH_MAX 16
58108 --- /dev/null Thu Apr 11 07:25:15 2002
58109 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/qlfoln.h Thu Jul 3 15:34:42 2003
58111 +/******************************************************************************
58112 + * QLOGIC LINUX SOFTWARE
58114 + * QLogic ISP2x00 device driver for Linux 2.5.x
58115 + * Copyright (C) 2003 Qlogic Corporation
58116 + * (www.qlogic.com)
58118 + * This program is free software; you can redistribute it and/or modify it
58119 + * under the terms of the GNU General Public License as published by the
58120 + * Free Software Foundation; either version 2, or (at your option) any
58123 + * This program is distributed in the hope that it will be useful, but
58124 + * WITHOUT ANY WARRANTY; without even the implied warranty of
58125 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
58126 + * General Public License for more details.
58128 + ******************************************************************************/
58131 +#define QLMULTIPATH_MAGIC 'y'
58132 +/********************************************************/
58133 +/* Failover ioctl command codes range from 0xc0 to 0xdf */
58134 +/********************************************************/
58137 +#define FO_CC_GET_PARAMS_OS \
58138 + _IOWR(QLMULTIPATH_MAGIC, 200, sizeof(EXT_IOCTL)) /* 0xc8 */
58139 +#define FO_CC_SET_PARAMS_OS \
58140 + _IOWR(QLMULTIPATH_MAGIC, 201, sizeof(EXT_IOCTL)) /* 0xc9 */
58141 +#define FO_CC_GET_PATHS_OS \
58142 + _IOWR(QLMULTIPATH_MAGIC, 202, sizeof(EXT_IOCTL)) /* 0xca */
58143 +#define FO_CC_SET_CURRENT_PATH_OS \
58144 + _IOWR(QLMULTIPATH_MAGIC, 203, sizeof(EXT_IOCTL)) /* 0xcb */
58145 +#define FO_CC_GET_HBA_STAT_OS \
58146 + _IOWR(QLMULTIPATH_MAGIC, 204, sizeof(EXT_IOCTL)) /* 0xcc */
58147 +#define FO_CC_RESET_HBA_STAT_OS \
58148 + _IOWR(QLMULTIPATH_MAGIC, 205, sizeof(EXT_IOCTL)) /* 0xcd */
58149 +#define FO_CC_GET_LUN_DATA_OS \
58150 + _IOWR(QLMULTIPATH_MAGIC, 206, sizeof(EXT_IOCTL)) /* 0xce */
58151 +#define FO_CC_SET_LUN_DATA_OS \
58152 + _IOWR(QLMULTIPATH_MAGIC, 207, sizeof(EXT_IOCTL)) /* 0xcf */
58153 +#define FO_CC_GET_TARGET_DATA_OS \
58154 + _IOWR(QLMULTIPATH_MAGIC, 208, sizeof(EXT_IOCTL)) /* 0xd0 */
58155 +#define FO_CC_SET_TARGET_DATA_OS \
58156 + _IOWR(QLMULTIPATH_MAGIC, 209, sizeof(EXT_IOCTL)) /* 0xd1 */
58157 +#define FO_CC_GET_FO_DRIVER_VERSION_OS \
58158 + _IOWR(QLMULTIPATH_MAGIC, 210, sizeof(EXT_IOCTL)) /* 0xd2 */
58161 +#define BOOLEAN uint8_t
58162 +#define MAX_LUNS_OS 256
58164 +/* Driver attributes bits */
58165 +#define DRVR_FO_ENABLED 0x1 /* bit 0 */
58169 + * Overrides for Emacs so that we almost follow Linus's tabbing style.
58170 + * Emacs will notice this stuff at the end of the file and automatically
58171 + * adjust the settings for this buffer only. This must remain at the end
58173 + * ---------------------------------------------------------------------------
58174 + * Local variables:
58175 + * c-indent-level: 2
58176 + * c-brace-imaginary-offset: 0
58177 + * c-brace-offset: -2
58178 + * c-argdecl-indent: 2
58179 + * c-label-offset: -2
58180 + * c-continued-statement-offset: 2
58181 + * c-continued-brace-offset: 0
58182 + * indent-tabs-mode: nil
58187 --- /dev/null Thu Apr 11 07:25:15 2002
58188 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/release.txt Thu Jul 3 15:34:42 2003
58191 + QLogic QLA2200 and QLA2300 Linux Driver
58196 +Version 8.00.00b1 March 05, 2003
58198 ++**********************************************+
58199 +* Features supported by this version of driver *
58200 ++**********************************************+
58201 +o FCAL - direct attach
58204 +o Initiator mode only
58205 +o Fault recovery on down loops
58206 +o Persistent binding - HBA node name valid
58207 +o Linux 2.5.x Kernel Support *ONLY*
58210 ++********************************+
58211 +* Changes From Previous Releases *
58212 ++********************************+
58213 +o Please view revision.notes file
58218 --- /dev/null Thu Apr 11 07:25:15 2002
58219 +++ linux-2.5.73-n9560/drivers/scsi/qla2xxx/revision.notes Thu Jul 3 15:34:42 2003
58222 + * QLogic ISP2200 and ISP2300 Linux Driver Revision List File.
58224 + ********************************************************************
58226 + * Revision History
58228 + * Rev 8.00.00 May 05, 2003 AV
58229 + * - Resync with Linux Kernel 2.5.69.
58230 + * - Firmware versions: 2100 TP (1.19.24), 2200 TP (2.02.05),
58231 + * 2300 TPX (3.02.10).
58233 + * Rev 8.00.00b1-pre45 April ??, 2003 AV
58234 + * - Resync with Linux Kernel 2.5.68-bk11:
58235 + * - Fix improper return-code assignment during fabric
58237 + * - Remove additional extraneous #defines from
58238 + * qla_settings.h.
58239 + * - USE_PORTNAME -- FO will always use portname.
58240 + * - Default queue depth size set to 64.
58242 + * Rev 8.00.00b1-pre42 April ??, 2003 AV
58243 + * - Convert bottom-half tasklet to a work_queue.
58244 + * - Initial basic coding of dynamic queue depth handling
58245 + * during QUEUE FULL statuses.
58246 + * - Fix mailbox interface problem with
58247 + * qla2x00_get_retry_cnt().
58249 + * Rev 8.00.00b1-pre41 April ??, 2003 AV
58250 + * - Convert build defines qla2[1|2|3]00 macros to
58251 + * qla2[1|2|3]xx due to module name stringification clashes.
58252 + * - Add additional ISP2322 checks during board configuration.
58254 + * Rev 8.00.00b1-pre40 April ??, 2003 AV
58255 + * - Resync with Linux Kernel 2.5.68-bk8:
58256 + * - Updated IRQ handler interface.
58257 + * - Add ISP dump code (stub) in case of SYSTEM_ERROR on
58259 + * - Add new 2200 IP firmware (2.02.05).
58261 + * Rev 8.00.00b1-pre39 April ??, 2003 AV
58262 + * - Resync with Linux Kernel 2.5.68.
58263 + * - Add simple build.sh script to aid in external compilation.
58264 + * - Clean-break with Kernel 2.4 compatibility.
58265 + * - Rework DPC routine -- completion routines for signaling.
58266 + * - Re-add HBAAPI character device node for IOCTL support.
58267 + * - Remove residual QLA2X_PERFORMANCE defines.
58268 + * - Allocate SP pool via __get_free_pages() rather than
58269 + * individual kmalloc()'s.
58270 + * - Inform SCSI mid-layer of 16-byte CDB support
58271 + * (host->max_cmd_len):
58272 + * - Remove unecessary 'more_cdb' handling code from
58273 + * qla_iocb.c and qla_xioct.c.
58274 + * - Reduce duplicate code in fabric scanning logic (MS IOCB
58276 + * - Add ISP dump code in case of SYSTEM_ERROR.
58277 + * - Remove 2300 VIX firmware from distribution:
58278 + * - Add initial code for IPX support.
58279 + * - Add new 2300 TPX firmware (3.02.10).
58281 + * Rev 8.00.00b1-pre34 April ??, 2003 AV
58282 + * - Resync with Linux Kernel 2.5.67.
58283 + * - Use domain/area/al_pa fields when displaying PortID
58284 + * values -- addresses endianess issues.
58285 + * - Rework large case statement to check 'common' CDB commands
58286 + * early in qla2x00_get_cmd_direction().
58288 + * Rev 8.00.00b1-pre31 April ??, 2003 AV
58289 + * - Update makefile to support PPC64 build.
58290 + * - Retool NVRAM configuration routine and structures:
58291 + * - Consoldate ISP21xx/ISP22xx/ISP23xx configuration
58292 + * (struct nvram_t).
58293 + * - Remove big/little endian support structures in favor of
58294 + * simplified bit-operations within byte fields.
58295 + * - Fix long-standing 'static' buffer sharing problem in
58296 + * qla2x00_configure_fabric().
58298 + * Rev 8.00.00b1-pre30 April ??, 2003 AV
58299 + * - Complete implementation of GID_PT scan.
58300 + * - Use consistent MS IOCB invocation method to query SNS:
58301 + * - Add RNN_ID and RSNN_NN registrations in a fabric.
58302 + * - Remove unused Mailbox Command 6Eh (Send SNS) support
58304 + * - Use 64bit safe IOCBs while issuing INQUIRY and RLC during
58306 + * - Until reimplementation of fcdev_t/fcport list
58307 + * consolidation, valid loop_id ranges are still limited from
58308 + * 0x00 through 0xFF -- enforce this within the code.
58310 + * Rev 8.00.00b1-pre27 March ??, 2003 AV
58311 + * - Resync with 6.05.00b9.
58312 + * - Retool HBA PCI configuration -- qla2x00_pci_config().
58313 + * - Remove inconsistent use of delay routines (UDELAY/SYS*).
58314 + * - Continue to teardown/clean/add comments and debug
58316 + * - Properly swap bytes of the device's nodename in
58317 + * qla2x00_configure_local_loop().
58319 + * Rev 8.00.00b1-pre25 March ??, 2003 AV
58320 + * - Resync with 6.05.00b8.
58322 + * Rev 8.00.00b1-pre23 March ??, 2003 AV
58323 + * - Remove (#define) IOCB usage throttling.
58324 + * - Abstract interrupt polling with qla2x00_poll().
58325 + * - Modify lun scanning logic:
58326 + * - If the device does not support the SCSI Report Luns
58327 + * command, the driver will now only scan from 0 to the
58328 + * max#-luns as defined in the NVRAM (BIOS), rather than
58329 + * blindly scanning from 0 to 255 -- which could result in
58330 + * an increase in startup time when running against slow
58331 + * (JBOD) devices.
58332 + * - Rework reset logic in qla2x00_reset_chip() (spec).
58334 + * Rev 8.00.00b1-pre22 March ??, 2003 AV
58335 + * - Resync with 6.05.00b7.
58336 + * - Cleanup (rewrite) ISR handler.
58337 + * - Rename kmem_zalloc --> qla2x00_kmem_zalloc():
58338 + * - This function will eventually be removed.
58339 + * - Add new 2300 VIX firmware (3.02.09):
58340 + * - Support for Tape, Fabric, 2K logins, IP, and VI.
58342 + * Rev 8.00.00b1-pre18 March ??, 2003 AV
58343 + * - Support 232x type ISPs.
58344 + * - Support single firmware for each ISP type:
58345 + * - Restructure brd_info/fw_info methods.
58346 + * - Streamline firmware load process.
58347 + * - Properly query firmware for version information.
58348 + * - Remove extraneous scsi_qla_host members:
58349 + * - device_id ==> pdev->device
58350 + * - Fix fc4 features (RFF_ID) registration.
58351 + * - Convert kmem_zalloc --> qla2x00_kmem_zalloc().
58352 + * - Remove unused/extraneous #defines (USE_PORTNAME).
58354 + * Rev 8.00.00b1-pre14 March ??, 2003 AV
58355 + * - Resync with 6.05.00b6.
58356 + * - Initial source-code restructuring effort.
58357 + * - Build procedure.
58358 + * - Source file layout -- intuitive component layout.
58359 + * - Remove unused #defines (*PERFORMANCE, WORD_FW_LOAD, etc).
58360 + * - Add support for 2K logins (TPX -- firmware).
58361 + * - Add module parameter ql2xsuspendcount.
58362 + * - Add new 2200 IP/TP firmware (2.02.04).
58364 + * Rev 8.00.00b1-pre9 March ??, 2003 RL/DG/RA/AV
58365 + * - Use kernel struct list_head for fcport and fclun lists.
58366 + * - Remove extraneous (L|M)S_64BITS() and QL21_64*() defines.
58368 + * Rev 8.00.00b1-pre8 February 28, 2003 RL/DG/RA/AV
58369 + * - Resync with 6.05.00b3.
58371 + * Rev 8.00.00b1-pre7 February 23, 2003 RL/DG/RA/AV
58372 + * - Add alternate fabric scanning logic (GID_PT/GNN_ID/GPN_ID).
58373 + * - Remove use of deprecated function check_region().
58374 + * - Add new 2300 IP/TP firmware (3.02.08).
58376 + * Rev 8.00.00b1-pre5 January 28, 2003 RL/DG/RA/AV
58377 + * - Resync with 6.05.00b3.
58378 + * - Consolidate device_reg structure definitions for ISP types.
58379 + * - Add support for new queue-depth selection.
58380 + * - Add new 2300 IP/TP firmware (3.02.07).
58382 + * Rev 8.00.00b1-pre1 January 17, 2003 AV
58383 + * - Initial branch from 6.04.00b8 driver.
58384 + * - Remove VMWARE specific code.
58385 + * - Add support for pci_driver interface.
58387 + ********************************************************************/