From eaa1f81dcc99f502b4c1101f17b2ad00acecb9e8 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 5 Oct 2003 11:13:27 +0000 Subject: [PATCH] - outdated patch fired --- .../kernel_patches/patches/2.6.0-test1-mm2.patch | 179796 ------------------ lustre/kernel_patches/pc/2.6.0-test1-mm2.pc | 1202 - 2 files changed, 180998 deletions(-) delete mode 100644 lustre/kernel_patches/patches/2.6.0-test1-mm2.patch delete mode 100644 lustre/kernel_patches/pc/2.6.0-test1-mm2.pc diff --git a/lustre/kernel_patches/patches/2.6.0-test1-mm2.patch b/lustre/kernel_patches/patches/2.6.0-test1-mm2.patch deleted file mode 100644 index 59be3f3..0000000 --- a/lustre/kernel_patches/patches/2.6.0-test1-mm2.patch +++ /dev/null @@ -1,179796 +0,0 @@ ---- linux-2.6.0-test1/arch/alpha/kernel/irq.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/alpha/kernel/irq.c 2003-07-19 17:03:49.000000000 -0700 -@@ -601,7 +601,7 @@ handle_irq(int irq, struct pt_regs * reg - if ((unsigned) irq > ACTUAL_NR_IRQS && illegal_count < MAX_ILLEGAL_IRQS ) { - irq_err_count++; - illegal_count++; -- printk(KERN_CRIT "device_interrupt: illegal interrupt %d\n", -+ printk(KERN_CRIT "device_interrupt: invalid interrupt %d\n", - irq); - return; - } ---- linux-2.6.0-test1/arch/alpha/kernel/smp.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/arch/alpha/kernel/smp.c 2003-07-19 17:04:06.000000000 -0700 -@@ -71,7 +71,7 @@ static int smp_secondary_alive __initdat - - /* Which cpus ids came online. */ - unsigned long cpu_present_mask; --volatile unsigned long cpu_online_map; -+cpumask_t cpu_online_map; - - /* cpus reported in the hwrpb */ - static unsigned long hwrpb_cpu_present_mask __initdata = 0; -@@ -132,7 +132,7 @@ smp_callin(void) - { - int cpuid = hard_smp_processor_id(); - -- if (test_and_set_bit(cpuid, &cpu_online_map)) { -+ if (cpu_test_and_set(cpuid, cpu_online_map)) { - printk("??, cpu 0x%x already present??\n", cpuid); - BUG(); - } -@@ -575,8 +575,8 @@ smp_prepare_boot_cpu(void) - /* - * Mark the boot cpu (current cpu) as both present and online - */ -- set_bit(smp_processor_id(), &cpu_present_mask); -- set_bit(smp_processor_id(), &cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_present_mask); -+ cpu_set(smp_processor_id(), cpu_online_map); - } - - int __devinit ---- linux-2.6.0-test1/arch/alpha/mm/init.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/alpha/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -20,9 +20,6 @@ - #include - #include /* max_low_pfn */ - #include --#ifdef CONFIG_BLK_DEV_INITRD --#include --#endif - - #include - #include ---- linux-2.6.0-test1/arch/alpha/mm/remap.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/arch/alpha/mm/remap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -73,7 +73,7 @@ __alpha_remap_area_pages(unsigned long a - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_kernel(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/arm26/kernel/setup.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/arm26/kernel/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -14,7 +14,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/arm26/mm/init.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/arm26/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -22,7 +22,7 @@ - #include - #include - #include --#include -+#include - - #include - #include ---- linux-2.6.0-test1/arch/arm26/mm/mm-memc.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/arm26/mm/mm-memc.c 2003-07-19 17:07:16.000000000 -0700 -@@ -79,7 +79,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm - goto no_pgd; - - /* -- * This lock is here just to satisfy pmd_alloc and pte_lock -+ * This lock is here just to satisfy pmd_alloc_kernel() and pte_lock - * FIXME: I bet we could avoid taking it pretty much altogether - */ - spin_lock(&mm->page_table_lock); -@@ -88,7 +88,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm - * On ARM, first page must always be allocated since it contains - * the machine vectors. - */ -- new_pmd = pmd_alloc(mm, new_pgd, 0); -+ new_pmd = pmd_alloc_kernel(mm, new_pgd, 0); - if (!new_pmd) - goto no_pmd; - ---- linux-2.6.0-test1/arch/arm/mach-arc/mm.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/arch/arm/mach-arc/mm.c 2003-07-19 17:07:16.000000000 -0700 -@@ -66,7 +66,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm - goto no_pgd; - - /* -- * This lock is here just to satisfy pmd_alloc and pte_lock -+ * This lock is here just to satisfy pmd_alloc_map() and pte_lock - */ - spin_lock(&mm->page_table_lock); - -@@ -74,13 +74,15 @@ pgd_t *get_pgd_slow(struct mm_struct *mm - * On ARM, first page must always be allocated since it contains - * the machine vectors. - */ -- new_pmd = pmd_alloc(mm, new_pgd, 0); -+ new_pmd = pmd_alloc_map(mm, new_pgd, 0); - if (!new_pmd) - goto no_pmd; - -- new_pte = pte_alloc_map(mm, new_pmd, 0); -- if (!new_pte) -+ new_pte = pte_alloc_map(mm, new_pgd, &new_pmd, 0); -+ if (!new_pte) { -+ pmd_unmap(new_pmd); - goto no_pte; -+ } - - init_pgd = pgd_offset_k(0); - init_pmd = pmd_offset(init_pgd, 0); -@@ -88,6 +90,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm - set_pte(new_pte, *init_pte); - pte_unmap_nested(init_pte); - pte_unmap(new_pte); -+ pmd_unmap(new_pmd); - - /* - * most of the page table entries are zeroed ---- linux-2.6.0-test1/arch/arm/mach-clps711x/autcpu12.c 2003-06-14 12:18:04.000000000 -0700 -+++ 25/arch/arm/mach-clps711x/autcpu12.c 2003-07-19 17:03:49.000000000 -0700 -@@ -21,7 +21,6 @@ - #include - #include - #include --#include - #include - - #include ---- linux-2.6.0-test1/arch/arm/mm/consistent.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/arm/mm/consistent.c 2003-07-19 17:07:16.000000000 -0700 -@@ -325,7 +325,7 @@ static int __init consistent_init(void) - - do { - pgd = pgd_offset(&init_mm, CONSISTENT_BASE); -- pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE); -+ pmd = pmd_alloc_kernel(&init_mm, pgd, CONSISTENT_BASE); - if (!pmd) { - printk(KERN_ERR "consistent_init: out of pmd tables\n"); - return -ENOMEM; ---- linux-2.6.0-test1/arch/arm/mm/ioremap.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/arch/arm/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -95,7 +95,7 @@ static int remap_area_pages(unsigned lon - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_kernel(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/arm/mm/minicache.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/arch/arm/mm/minicache.c 2003-07-19 17:07:16.000000000 -0700 -@@ -57,7 +57,7 @@ static int __init minicache_init(void) - pmd_t *pmd; - - pgd = pgd_offset_k(minicache_address); -- pmd = pmd_alloc(&init_mm, pgd, minicache_address); -+ pmd = pmd_alloc_kernel(&init_mm, pgd, minicache_address); - if (!pmd) - BUG(); - minicache_pte = pte_alloc_kernel(&init_mm, pmd, minicache_address); ---- linux-2.6.0-test1/arch/arm/mm/mm-armv.c 2003-06-22 12:04:43.000000000 -0700 -+++ 25/arch/arm/mm/mm-armv.c 2003-07-19 17:07:16.000000000 -0700 -@@ -131,7 +131,7 @@ pgd_t *get_pgd_slow(struct mm_struct *mm - - if (vectors_base() == 0) { - /* -- * This lock is here just to satisfy pmd_alloc and pte_lock -+ * This lock is here just to satisfy pmd_alloc_map() and pte_lock - */ - spin_lock(&mm->page_table_lock); - -@@ -139,20 +139,22 @@ pgd_t *get_pgd_slow(struct mm_struct *mm - * On ARM, first page must always be allocated since it - * contains the machine vectors. - */ -- new_pmd = pmd_alloc(mm, new_pgd, 0); -+ new_pmd = pmd_alloc_map(mm, new_pgd, 0); - if (!new_pmd) - goto no_pmd; - -- new_pte = pte_alloc_map(mm, new_pmd, 0); -- if (!new_pte) -+ new_pte = pte_alloc_map(mm, new_pgd, &new_pmd, 0); -+ if (!new_pte) { -+ pmd_unmap(new_pmd); - goto no_pte; -+ } - - init_pmd = pmd_offset(init_pgd, 0); - init_pte = pte_offset_map_nested(init_pmd, 0); - set_pte(new_pte, *init_pte); - pte_unmap_nested(init_pte); - pte_unmap(new_pte); -- -+ pmd_unmap(new_pmd); - spin_unlock(&mm->page_table_lock); - } - ---- linux-2.6.0-test1/arch/cris/mm/ioremap.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/cris/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -78,7 +78,7 @@ static int remap_area_pages(unsigned lon - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_kernel(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/h8300/kernel/setup.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/arch/h8300/kernel/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -35,7 +35,6 @@ - #include - - #ifdef CONFIG_BLK_DEV_INITRD --#include - #include - #endif - ---- linux-2.6.0-test1/arch/h8300/mm/init.c 2003-06-14 12:18:21.000000000 -0700 -+++ 25/arch/h8300/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -23,9 +23,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_RAM --#include --#endif - #include - #include - #include ---- linux-2.6.0-test1/arch/i386/Kconfig 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/i386/Kconfig 2003-07-19 17:07:16.000000000 -0700 -@@ -438,9 +438,9 @@ config SMP - If you don't know what to do here, say N. - - config NR_CPUS -- int "Maximum number of CPUs (2-32)" -+ int "Maximum number of CPUs (2-255)" - depends on SMP -- default "32" -+ default "8" - help - This allows you to specify the maximum number of CPUs which this - kernel will support. The maximum supported value is 32 and the -@@ -723,6 +723,16 @@ config HIGHPTE - low memory. Setting this option will put user-space page table - entries in high memory. - -+config HIGHPMD -+ bool "Allocate 2nd-level pagetables from highmem" -+ depends on HIGHMEM64G && HIGHPTE -+ help -+ The VM uses one lowmem-allocated pmd entry for each pagetable -+ page of physical memory allocated, and preallocates them all -+ for 12KB of per-process lowmem overhead. For systems with -+ extreme amounts of highmem, this cannot be tolerated. Setting -+ this option will put userspace 2nd-level pagetables in highmem. -+ - config MATH_EMULATION - bool "Math emulation" - ---help--- -@@ -1347,6 +1357,15 @@ config DEBUG_PAGEALLOC - This results in a large slowdown, but helps to find certain types - of memory corruptions. - -+config SPINLINE -+ bool "Spinlock inlining" -+ depends on DEBUG_KERNEL -+ help -+ This will change spinlocks from out of line to inline, making them -+ account cost to the callers in readprofile, rather than the lock -+ itself (as ".text.lock.filename"). This can be helpful for finding -+ the callers of locks. -+ - config DEBUG_HIGHMEM - bool "Highmem debugging" - depends on DEBUG_KERNEL && HIGHMEM -@@ -1354,20 +1373,207 @@ config DEBUG_HIGHMEM - This options enables addition error checking for high memory systems. - Disable for production systems. - -+config LOCKMETER -+ bool "Kernel lock metering" -+ depends on SMP && !PREEMPT -+ help -+ Say Y to enable kernel lock metering, which adds overhead to SMP locks, -+ but allows you to see various statistics using the lockstat command. -+ - config DEBUG_SPINLOCK_SLEEP - bool "Sleep-inside-spinlock checking" - help - If you say Y here, various routines which may sleep will become very - noisy if they are called with a spinlock held. - -+config KGDB -+ bool "Include kgdb kernel debugger" -+ depends on DEBUG_KERNEL -+ help -+ If you say Y here, the system will be compiled with the debug -+ option (-g) and a debugging stub will be included in the -+ kernel. This stub communicates with gdb on another (host) -+ computer via a serial port. The host computer should have -+ access to the kernel binary file (vmlinux) and a serial port -+ that is connected to the target machine. Gdb can be made to -+ configure the serial port or you can use stty and setserial to -+ do this. See the 'target' command in gdb. This option also -+ configures in the ability to request a breakpoint early in the -+ boot process. To request the breakpoint just include 'kgdb' -+ as a boot option when booting the target machine. The system -+ will then break as soon as it looks at the boot options. This -+ option also installs a breakpoint in panic and sends any -+ kernel faults to the debugger. For more information see the -+ Documentation/i386/kgdb.txt file. -+ -+choice -+ depends on KGDB -+ prompt "Debug serial port BAUD" -+ default KGDB_115200BAUD -+ help -+ Gdb and the kernel stub need to agree on the baud rate to be -+ used. Some systems (x86 family at this writing) allow this to -+ be configured. -+ -+config KGDB_9600BAUD -+ bool "9600" -+ -+config KGDB_19200BAUD -+ bool "19200" -+ -+config KGDB_38400BAUD -+ bool "38400" -+ -+config KGDB_57600BAUD -+ bool "57600" -+ -+config KGDB_115200BAUD -+ bool "115200" -+endchoice -+ -+config KGDB_PORT -+ hex "hex I/O port address of the debug serial port" -+ depends on KGDB -+ default 3f8 -+ help -+ Some systems (x86 family at this writing) allow the port -+ address to be configured. The number entered is assumed to be -+ hex, don't put 0x in front of it. The standard address are: -+ COM1 3f8 , irq 4 and COM2 2f8 irq 3. Setserial /dev/ttySx -+ will tell you what you have. It is good to test the serial -+ connection with a live system before trying to debug. -+ -+config KGDB_IRQ -+ int "IRQ of the debug serial port" -+ depends on KGDB -+ default 4 -+ help -+ This is the irq for the debug port. If everything is working -+ correctly and the kernel has interrupts on a control C to the -+ port should cause a break into the kernel debug stub. -+ -+config DEBUG_INFO -+ bool -+ default y -+ -+config KGDB_MORE -+ bool "Add any additional compile options" -+ depends on KGDB -+ default n -+ help -+ Saying yes here turns on the ability to enter additional -+ compile options. -+ -+ -+config KGDB_OPTIONS -+ depends on KGDB_MORE -+ string "Additional compile arguments" -+ default "-O1" -+ help -+ This option allows you enter additional compile options for -+ the whole kernel compile. Each platform will have a default -+ that seems right for it. For example on PPC "-ggdb -O1", and -+ for i386 "-O1". Note that by configuring KGDB "-g" is already -+ turned on. In addition, on i386 platforms -+ "-fomit-frame-pointer" is deleted from the standard compile -+ options. -+ -+config NO_KGDB_CPUS -+ int "Number of CPUs" -+ depends on KGDB && SMP -+ default NR_CPUS -+ help -+ -+ This option sets the number of cpus for kgdb ONLY. It is used -+ to prune some internal structures so they look "nice" when -+ displayed with gdb. This is to overcome possibly larger -+ numbers that may have been entered above. Enter the real -+ number to get nice clean kgdb_info displays. -+ -+config KGDB_TS -+ bool "Enable kgdb time stamp macros?" -+ depends on KGDB -+ default n -+ help -+ Kgdb event macros allow you to instrument your code with calls -+ to the kgdb event recording function. The event log may be -+ examined with gdb at a break point. Turning on this -+ capability also allows you to choose how many events to -+ keep. Kgdb always keeps the lastest events. -+ -+choice -+ depends on KGDB_TS -+ prompt "Max number of time stamps to save?" -+ default KGDB_TS_128 -+ -+config KGDB_TS_64 -+ bool "64" -+ -+config KGDB_TS_128 -+ bool "128" -+ -+config KGDB_TS_256 -+ bool "256" -+ -+config KGDB_TS_512 -+ bool "512" -+ -+config KGDB_TS_1024 -+ bool "1024" -+ -+endchoice -+ -+config STACK_OVERFLOW_TEST -+ bool "Turn on kernel stack overflow testing?" -+ depends on KGDB -+ default n -+ help -+ This option enables code in the front line interrupt handlers -+ to check for kernel stack overflow on interrupts and system -+ calls. This is part of the kgdb code on x86 systems. -+ -+config KGDB_CONSOLE -+ bool "Enable serial console thru kgdb port" -+ depends on KGDB -+ default n -+ help -+ This option enables the command line "console=kgdb" option. -+ When the system is booted with this option in the command line -+ all kernel printk output is sent to gdb (as well as to other -+ consoles). For this to work gdb must be connected. For this -+ reason, this command line option will generate a breakpoint if -+ gdb has not yet connected. After the gdb continue command is -+ given all pent up console output will be printed by gdb on the -+ host machine. Neither this option, nor KGDB require the -+ serial driver to be configured. -+ -+config KGDB_SYSRQ -+ bool "Turn on SysRq 'G' command to do a break?" -+ depends on KGDB -+ default y -+ help -+ This option includes an option in the SysRq code that allows -+ you to enter SysRq G which generates a breakpoint to the KGDB -+ stub. This will work if the keyboard is alive and can -+ interrupt the system. Because of constraints on when the -+ serial port interrupt can be enabled, this code may allow you -+ to interrupt the system before the serial port control C is -+ available. Just say yes here. -+ - config FRAME_POINTER - bool "Compile the kernel with frame pointers" -+ default KGDB - help - If you say Y here the resulting kernel image will be slightly larger - and slower, but it will give very useful debugging information. - If you don't debug the kernel, you can say N, but we may not be able - to solve problems without frame pointers. - -+config MAGIC_SYSRQ -+ bool -+ depends on KGDB_SYSRQ -+ default y -+ - config X86_EXTRA_IRQS - bool - depends on X86_LOCAL_APIC || X86_VOYAGER ---- linux-2.6.0-test1/arch/i386/kernel/apic.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/i386/kernel/apic.c 2003-07-19 17:04:06.000000000 -0700 -@@ -1137,7 +1137,7 @@ int __init APIC_init_uniprocessor (void) - - connect_bsp_APIC(); - -- phys_cpu_present_map = 1 << boot_cpu_physical_apicid; -+ phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid); - - setup_local_APIC(); - ---- linux-2.6.0-test1/arch/i386/kernel/apm.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/arch/i386/kernel/apm.c 2003-07-19 17:04:06.000000000 -0700 -@@ -508,16 +508,16 @@ static void apm_error(char *str, int err - - #ifdef CONFIG_SMP - --static unsigned long apm_save_cpus(void) -+static cpumask_t apm_save_cpus(void) - { -- unsigned long x = current->cpus_allowed; -+ cpumask_t x = current->cpus_allowed; - /* Some bioses don't like being called from CPU != 0 */ -- set_cpus_allowed(current, 1UL << 0); -+ set_cpus_allowed(current, cpumask_of_cpu(0)); - BUG_ON(smp_processor_id() != 0); - return x; - } - --static inline void apm_restore_cpus(unsigned long mask) -+static inline void apm_restore_cpus(cpumask_t mask) - { - set_cpus_allowed(current, mask); - } -@@ -528,7 +528,7 @@ static inline void apm_restore_cpus(unsi - * No CPU lockdown needed on a uniprocessor - */ - --#define apm_save_cpus() 0 -+#define apm_save_cpus() (current->cpus_allowed) - #define apm_restore_cpus(x) (void)(x) - - #endif -@@ -593,7 +593,7 @@ static u8 apm_bios_call(u32 func, u32 eb - { - APM_DECL_SEGS - unsigned long flags; -- unsigned long cpus; -+ cpumask_t cpus; - int cpu; - struct desc_struct save_desc_40; - -@@ -635,7 +635,7 @@ static u8 apm_bios_call_simple(u32 func, - u8 error; - APM_DECL_SEGS - unsigned long flags; -- unsigned long cpus; -+ cpumask_t cpus; - int cpu; - struct desc_struct save_desc_40; - -@@ -913,7 +913,7 @@ static void apm_power_off(void) - */ - #ifdef CONFIG_SMP - /* Some bioses don't like being called from CPU != 0 */ -- set_cpus_allowed(current, 1UL << 0); -+ set_cpus_allowed(current, cpumask_of_cpu(0)); - BUG_ON(smp_processor_id() != 0); - #endif - if (apm_info.realmode_power_off) -@@ -1704,7 +1704,7 @@ static int apm(void *unused) - * Some bioses don't like being called from CPU != 0. - * Method suggested by Ingo Molnar. - */ -- set_cpus_allowed(current, 1UL << 0); -+ set_cpus_allowed(current, cpumask_of_cpu(0)); - BUG_ON(smp_processor_id() != 0); - #endif - ---- linux-2.6.0-test1/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 2003-07-19 17:04:06.000000000 -0700 -@@ -53,10 +53,9 @@ static int stock_freq; - static int cpufreq_p4_setdc(unsigned int cpu, unsigned int newstate) - { - u32 l, h; -- unsigned long cpus_allowed; -+ cpumask_t cpus_allowed, affected_cpu_map; - struct cpufreq_freqs freqs; - int hyperthreading = 0; -- int affected_cpu_map = 0; - int sibling = 0; - - if (!cpu_online(cpu) || (newstate > DC_DISABLE) || -@@ -67,16 +66,16 @@ static int cpufreq_p4_setdc(unsigned int - cpus_allowed = current->cpus_allowed; - - /* only run on CPU to be set, or on its sibling */ -- affected_cpu_map = 1 << cpu; -+ affected_cpu_map = cpumask_of_cpu(cpu); - #ifdef CONFIG_X86_HT - hyperthreading = ((cpu_has_ht) && (smp_num_siblings == 2)); - if (hyperthreading) { - sibling = cpu_sibling_map[cpu]; -- affected_cpu_map |= (1 << sibling); -+ cpu_set(sibling, affected_cpu_map); - } - #endif - set_cpus_allowed(current, affected_cpu_map); -- BUG_ON(!(affected_cpu_map & (1 << smp_processor_id()))); -+ BUG_ON(!cpu_isset(smp_processor_id(), affected_cpu_map)); - - /* get current state */ - rdmsr(MSR_IA32_THERM_CONTROL, l, h); ---- linux-2.6.0-test1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2003-07-19 17:05:02.000000000 -0700 -@@ -156,14 +156,15 @@ static struct cpufreq_frequency_table op - }; - #undef OP - --#define CPU(max) \ -- { "Intel(R) Pentium(R) M processor " #max "MHz", (max)*1000, op_##max } -+#define _CPU(max, name) \ -+ { "Intel(R) Pentium(R) M processor " name "MHz", (max)*1000, op_##max } -+#define CPU(max) _CPU(max, #max) - - /* CPU models, their operating frequency range, and freq/voltage - operating points */ - static const struct cpu_model models[] = - { -- CPU( 900), -+ _CPU( 900, " 900"), - CPU(1100), - CPU(1200), - CPU(1300), ---- linux-2.6.0-test1/arch/i386/kernel/cpu/cpufreq/speedstep-ich.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/i386/kernel/cpu/cpufreq/speedstep-ich.c 2003-07-19 17:08:59.000000000 -0700 -@@ -77,15 +77,17 @@ static void speedstep_set_state (unsigne - u8 value; - unsigned long flags; - struct cpufreq_freqs freqs; -+ int newfreq; - - if (!speedstep_chipset_dev || (state > 0x1)) - return; - - freqs.old = speedstep_get_processor_frequency(speedstep_processor); -- freqs.new = speedstep_freqs[SPEEDSTEP_LOW].frequency; -+ freqs.new = speedstep_freqs[state].frequency; - freqs.cpu = 0; /* speedstep.c is UP only driver */ - -- if (notify) -+ /* make sure we've initialized before calling notify */ -+ if (notify && (freqs.new != 0)) - cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); - - /* get PMBASE */ -@@ -136,13 +138,16 @@ static void speedstep_set_state (unsigne - - dprintk(KERN_DEBUG "cpufreq: read at pmbase 0x%x + 0x50 returned 0x%x\n", pmbase, value); - -+ /* freqs.new may not be set yet - need local copy */ -+ newfreq = speedstep_get_processor_frequency(speedstep_processor); - if (state == (value & 0x1)) { -- dprintk (KERN_INFO "cpufreq: change to %u MHz succeeded\n", (freqs.new / 1000)); -+ dprintk (KERN_INFO "cpufreq: change to %u MHz succeeded\n", (newfreq / 1000)); - } else { - printk (KERN_ERR "cpufreq: change failed - I/O error\n"); - } - -- if (notify) -+ /* Make sure we're initialized before calling notify */ -+ if (notify && (freqs.new != 0)) - cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); - - return; -@@ -295,7 +300,7 @@ static int speedstep_cpu_init(struct cpu - return -EIO; - - dprintk(KERN_INFO "cpufreq: currently at %s speed setting - %i MHz\n", -- (speed == speedstep_low_freq) ? "low" : "high", -+ (speed == speedstep_freqs[SPEEDSTEP_LOW].frequency) ? "low" : "high", - (speed / 1000)); - - /* cpuinfo and default policy values */ ---- linux-2.6.0-test1/arch/i386/kernel/cpuid.c 2003-06-14 12:17:55.000000000 -0700 -+++ 25/arch/i386/kernel/cpuid.c 2003-07-19 17:04:06.000000000 -0700 -@@ -136,7 +136,7 @@ static int cpuid_open(struct inode *inod - int cpu = minor(file->f_dentry->d_inode->i_rdev); - struct cpuinfo_x86 *c = &(cpu_data)[cpu]; - -- if ( !(cpu_online_map & (1UL << cpu)) ) -+ if (!cpu_online(cpu)) - return -ENXIO; /* No such CPU */ - if ( c->cpuid_level < 0 ) - return -EIO; /* CPUID not supported */ ---- linux-2.6.0-test1/arch/i386/kernel/cpu/mtrr/cyrix.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/arch/i386/kernel/cpu/mtrr/cyrix.c 2003-07-19 17:03:49.000000000 -0700 -@@ -330,16 +330,16 @@ cyrix_arr_init(void) - set_mtrr_done(&ctxt); /* flush cache and disable MAPEN */ - - if (ccrc[5]) -- printk("mtrr: ARR usage was not enabled, enabled manually\n"); -+ printk(KERN_INFO "mtrr: ARR usage was not enabled, enabled manually\n"); - if (ccrc[3]) -- printk("mtrr: ARR3 cannot be changed\n"); -+ printk(KERN_INFO "mtrr: ARR3 cannot be changed\n"); - /* - if ( ccrc[1] & 0x80) printk ("mtrr: SMM memory access through ARR3 disabled\n"); - if ( ccrc[1] & 0x04) printk ("mtrr: SMM memory access disabled\n"); - if ( ccrc[1] & 0x02) printk ("mtrr: SMM mode disabled\n"); - */ - if (ccrc[6]) -- printk("mtrr: ARR3 was write protected, unprotected\n"); -+ printk(KERN_INFO "mtrr: ARR3 was write protected, unprotected\n"); - } - - static struct mtrr_ops cyrix_mtrr_ops = { ---- linux-2.6.0-test1/arch/i386/kernel/cpu/mtrr/main.c 2003-06-26 22:07:22.000000000 -0700 -+++ 25/arch/i386/kernel/cpu/mtrr/main.c 2003-07-19 17:04:57.000000000 -0700 -@@ -64,7 +64,7 @@ __initdata char *mtrr_if_name[] = { - static void set_mtrr(unsigned int reg, unsigned long base, - unsigned long size, mtrr_type type); - --static unsigned int arr3_protected; -+extern int arr3_protected; - - void set_mtrr_ops(struct mtrr_ops * ops) - { -@@ -75,23 +75,25 @@ void set_mtrr_ops(struct mtrr_ops * ops) - /* Returns non-zero if we have the write-combining memory type */ - static int have_wrcomb(void) - { -- struct pci_dev *dev = NULL; -- -- /* WTF is this? -- * Someone, please shoot me. -- */ -- -- /* ServerWorks LE chipsets have problems with write-combining -- Don't allow it and leave room for other chipsets to be tagged */ -- -+ struct pci_dev *dev; -+ - if ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) != NULL) { -- if ((dev->vendor == PCI_VENDOR_ID_SERVERWORKS) && -- (dev->device == PCI_DEVICE_ID_SERVERWORKS_LE)) { -- printk(KERN_INFO -- "mtrr: Serverworks LE detected. Write-combining disabled.\n"); -+ /* ServerWorks LE chipsets have problems with write-combining -+ Don't allow it and leave room for other chipsets to be tagged */ -+ if (dev->vendor == PCI_VENDOR_ID_SERVERWORKS && -+ dev->device == PCI_DEVICE_ID_SERVERWORKS_LE) { -+ printk(KERN_INFO "mtrr: Serverworks LE detected. Write-combining disabled.\n"); - return 0; - } -- } -+ /* Intel 450NX errata # 23. Non ascending cachline evictions to -+ write combining memory may resulting in data corruption */ -+ if (dev->vendor == PCI_VENDOR_ID_INTEL && -+ dev->device == PCI_DEVICE_ID_INTEL_82451NX) -+ { -+ printk(KERN_INFO "mtrr: Intel 450NX MMC detected. Write-combining disabled.\n"); -+ return 0; -+ } -+ } - return (mtrr_if->have_wrcomb ? mtrr_if->have_wrcomb() : 0); - } - -@@ -121,7 +123,7 @@ static void init_table(void) - max = num_var_ranges; - if ((usage_table = kmalloc(max * sizeof *usage_table, GFP_KERNEL)) - == NULL) { -- printk("mtrr: could not allocate\n"); -+ printk(KERN_ERR "mtrr: could not allocate\n"); - return; - } - for (i = 0; i < max; i++) -@@ -310,7 +312,7 @@ int mtrr_add_page(unsigned long base, un - return error; - - if (type >= MTRR_NUM_TYPES) { -- printk("mtrr: type: %u illegal\n", type); -+ printk(KERN_WARNING "mtrr: type: %u invalid\n", type); - return -EINVAL; - } - -@@ -322,7 +324,7 @@ int mtrr_add_page(unsigned long base, un - } - - if (base & size_or_mask || size & size_or_mask) { -- printk("mtrr: base or size exceeds the MTRR width\n"); -+ printk(KERN_WARNING "mtrr: base or size exceeds the MTRR width\n"); - return -EINVAL; - } - -@@ -348,7 +350,7 @@ int mtrr_add_page(unsigned long base, un - if (ltype != type) { - if (type == MTRR_TYPE_UNCACHABLE) - continue; -- printk ("mtrr: type mismatch for %lx000,%lx000 old: %s new: %s\n", -+ printk (KERN_WARNING "mtrr: type mismatch for %lx000,%lx000 old: %s new: %s\n", - base, size, attrib_to_str(ltype), - attrib_to_str(type)); - goto out; -@@ -364,7 +366,7 @@ int mtrr_add_page(unsigned long base, un - set_mtrr(i, base, size, type); - usage_table[i] = 1; - } else -- printk("mtrr: no more MTRRs available\n"); -+ printk(KERN_INFO "mtrr: no more MTRRs available\n"); - error = i; - out: - up(&main_lock); -@@ -412,8 +414,8 @@ mtrr_add(unsigned long base, unsigned lo - char increment) - { - if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) { -- printk("mtrr: size and base must be multiples of 4 kiB\n"); -- printk("mtrr: size: 0x%lx base: 0x%lx\n", size, base); -+ printk(KERN_WARNING "mtrr: size and base must be multiples of 4 kiB\n"); -+ printk(KERN_DEBUG "mtrr: size: 0x%lx base: 0x%lx\n", size, base); - return -EINVAL; - } - return mtrr_add_page(base >> PAGE_SHIFT, size >> PAGE_SHIFT, type, -@@ -458,28 +460,28 @@ int mtrr_del_page(int reg, unsigned long - } - } - if (reg < 0) { -- printk("mtrr: no MTRR for %lx000,%lx000 found\n", base, -+ printk(KERN_DEBUG "mtrr: no MTRR for %lx000,%lx000 found\n", base, - size); - goto out; - } - } - if (reg >= max) { -- printk("mtrr: register: %d too big\n", reg); -+ printk(KERN_WARNING "mtrr: register: %d too big\n", reg); - goto out; - } - if (is_cpu(CYRIX) && !use_intel()) { - if ((reg == 3) && arr3_protected) { -- printk("mtrr: ARR3 cannot be changed\n"); -+ printk(KERN_WARNING "mtrr: ARR3 cannot be changed\n"); - goto out; - } - } - mtrr_if->get(reg, &lbase, &lsize, <ype); - if (lsize < 1) { -- printk("mtrr: MTRR %d not used\n", reg); -+ printk(KERN_WARNING "mtrr: MTRR %d not used\n", reg); - goto out; - } - if (usage_table[reg] < 1) { -- printk("mtrr: reg: %d has count=0\n", reg); -+ printk(KERN_WARNING "mtrr: reg: %d has count=0\n", reg); - goto out; - } - if (--usage_table[reg] < 1) -@@ -508,8 +510,8 @@ int - mtrr_del(int reg, unsigned long base, unsigned long size) - { - if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) { -- printk("mtrr: size and base must be multiples of 4 kiB\n"); -- printk("mtrr: size: 0x%lx base: 0x%lx\n", size, base); -+ printk(KERN_INFO "mtrr: size and base must be multiples of 4 kiB\n"); -+ printk(KERN_DEBUG "mtrr: size: 0x%lx base: 0x%lx\n", size, base); - return -EINVAL; - } - return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT); -@@ -677,7 +679,7 @@ static int __init mtrr_init(void) - break; - } - } -- printk("mtrr: v%s\n",MTRR_VERSION); -+ printk(KERN_INFO "mtrr: v%s\n",MTRR_VERSION); - - if (mtrr_if) { - set_num_var_ranges(); -@@ -701,5 +703,5 @@ char *mtrr_strings[MTRR_NUM_TYPES] = - "write-back", /* 6 */ - }; - --subsys_initcall(mtrr_init); -+core_initcall(mtrr_init); - ---- linux-2.6.0-test1/arch/i386/kernel/cpu/proc.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/i386/kernel/cpu/proc.c 2003-07-19 17:04:06.000000000 -0700 -@@ -60,7 +60,7 @@ static int show_cpuinfo(struct seq_file - int fpu_exception; - - #ifdef CONFIG_SMP -- if (!(cpu_online_map & (1< - #include - #include "irq_vectors.h" -+ /* We do not recover from a stack overflow, but at least -+ * we know it happened and should be able to track it down. -+ */ -+#ifdef CONFIG_STACK_OVERFLOW_TEST -+#define STACK_OVERFLOW_TEST \ -+ testl $7680,%esp; \ -+ jnz 10f; \ -+ call stack_overflow; \ -+10: -+#else -+#define STACK_OVERFLOW_TEST -+#endif - - EBX = 0x00 - ECX = 0x04 -@@ -98,7 +110,8 @@ TSS_ESP0_OFFSET = (4 - 0x200) - pushl %ebx; \ - movl $(__USER_DS), %edx; \ - movl %edx, %ds; \ -- movl %edx, %es; -+ movl %edx, %es; \ -+ STACK_OVERFLOW_TEST - - #define RESTORE_INT_REGS \ - popl %ebx; \ -@@ -298,6 +311,19 @@ syscall_exit: - testw $_TIF_ALLWORK_MASK, %cx # current->work - jne syscall_exit_work - restore_all: -+#ifdef CONFIG_TRAP_BAD_SYSCALL_EXITS -+ movl EFLAGS(%esp), %eax # mix EFLAGS and CS -+ movb CS(%esp), %al -+ testl $(VM_MASK | 3), %eax -+ jz resume_kernelX # returning to kernel or vm86-space -+ -+ cmpl $0,TI_PRE_COUNT(%ebx) # non-zero preempt_count ? -+ jz resume_kernelX -+ -+ int $3 -+ -+resume_kernelX: -+#endif - RESTORE_ALL - - # perform work that needs to be done immediately before resumption -@@ -878,5 +904,6 @@ ENTRY(sys_call_table) - .long sys_fstatfs64 - .long sys_tgkill /* 270 */ - .long sys_utimes -- -+ .long sys_mknod64 -+ - nr_syscalls=(.-sys_call_table)/4 ---- linux-2.6.0-test1/arch/i386/kernel/io_apic.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/i386/kernel/io_apic.c 2003-07-19 17:04:06.000000000 -0700 -@@ -249,14 +249,14 @@ static void clear_IO_APIC (void) - clear_IO_APIC_pin(apic, pin); - } - --static void set_ioapic_affinity (unsigned int irq, unsigned long cpu_mask) -+static void set_ioapic_affinity(unsigned int irq, cpumask_t cpumask) - { - unsigned long flags; - int pin; - struct irq_pin_list *entry = irq_2_pin + irq; - unsigned int apicid_value; - -- apicid_value = cpu_mask_to_apicid(cpu_mask); -+ apicid_value = cpu_mask_to_apicid(mk_cpumask_const(cpumask)); - /* Prepare to do the io_apic_write */ - apicid_value = apicid_value << 24; - spin_lock_irqsave(&ioapic_lock, flags); -@@ -286,9 +286,9 @@ static void set_ioapic_affinity (unsigne - # define Dprintk(x...) - # endif - --extern unsigned long irq_affinity[NR_IRQS]; -+extern cpumask_t irq_affinity[NR_IRQS]; - --static int __cacheline_aligned pending_irq_balance_cpumask[NR_IRQS]; -+static cpumask_t __cacheline_aligned pending_irq_balance_cpumask[NR_IRQS]; - - #define IRQBALANCE_CHECK_ARCH -999 - static int irqbalance_disabled = IRQBALANCE_CHECK_ARCH; -@@ -307,8 +307,7 @@ struct irq_cpu_info { - #define IDLE_ENOUGH(cpu,now) \ - (idle_cpu(cpu) && ((now) - irq_stat[(cpu)].idle_timestamp > 1)) - --#define IRQ_ALLOWED(cpu,allowed_mask) \ -- ((1 << cpu) & (allowed_mask)) -+#define IRQ_ALLOWED(cpu, allowed_mask) cpu_isset(cpu, allowed_mask) - - #define CPU_TO_PACKAGEINDEX(i) \ - ((physical_balance && i > cpu_sibling_map[i]) ? cpu_sibling_map[i] : i) -@@ -320,7 +319,7 @@ struct irq_cpu_info { - - long balanced_irq_interval = MAX_BALANCED_IRQ_INTERVAL; - --static unsigned long move(int curr_cpu, unsigned long allowed_mask, -+static unsigned long move(int curr_cpu, cpumask_t allowed_mask, - unsigned long now, int direction) - { - int search_idle = 1; -@@ -350,20 +349,20 @@ inside: - static inline void balance_irq(int cpu, int irq) - { - unsigned long now = jiffies; -- unsigned long allowed_mask; -+ cpumask_t allowed_mask; - unsigned int new_cpu; - - if (irqbalance_disabled) - return; - -- allowed_mask = cpu_online_map & irq_affinity[irq]; -+ cpus_and(allowed_mask, cpu_online_map, irq_affinity[irq]); - new_cpu = move(cpu, allowed_mask, now, 1); - if (cpu != new_cpu) { - irq_desc_t *desc = irq_desc + irq; - unsigned long flags; - - spin_lock_irqsave(&desc->lock, flags); -- pending_irq_balance_cpumask[irq] = 1 << new_cpu; -+ pending_irq_balance_cpumask[irq] = cpumask_of_cpu(new_cpu); - spin_unlock_irqrestore(&desc->lock, flags); - } - } -@@ -399,8 +398,7 @@ static void do_irq_balance(void) - int tmp_loaded, first_attempt = 1; - unsigned long tmp_cpu_irq; - unsigned long imbalance = 0; -- unsigned long allowed_mask; -- unsigned long target_cpu_mask; -+ cpumask_t allowed_mask, target_cpu_mask, tmp; - - for (i = 0; i < NR_CPUS; i++) { - int package_index; -@@ -549,10 +547,11 @@ tryanotherirq: - CPU_IRQ(cpu_sibling_map[min_loaded])) - min_loaded = cpu_sibling_map[min_loaded]; - -- allowed_mask = cpu_online_map & irq_affinity[selected_irq]; -- target_cpu_mask = 1 << min_loaded; -+ cpus_and(allowed_mask, cpu_online_map, irq_affinity[selected_irq]); -+ target_cpu_mask = cpumask_of_cpu(min_loaded); -+ cpus_and(tmp, target_cpu_mask, allowed_mask); - -- if (target_cpu_mask & allowed_mask) { -+ if (!cpus_empty(tmp)) { - irq_desc_t *desc = irq_desc + selected_irq; - unsigned long flags; - -@@ -560,7 +559,8 @@ tryanotherirq: - selected_irq, min_loaded); - /* mark for change destination */ - spin_lock_irqsave(&desc->lock, flags); -- pending_irq_balance_cpumask[selected_irq] = 1 << min_loaded; -+ pending_irq_balance_cpumask[selected_irq] = -+ cpumask_of_cpu(min_loaded); - spin_unlock_irqrestore(&desc->lock, flags); - /* Since we made a change, come back sooner to - * check for more variation. -@@ -591,8 +591,9 @@ int balanced_irq(void *unused) - daemonize("kirqd"); - - /* push everything to CPU 0 to give us a starting point. */ -- for (i = 0 ; i < NR_IRQS ; i++) -- pending_irq_balance_cpumask[i] = 1; -+ for (i = 0 ; i < NR_IRQS ; i++) { -+ pending_irq_balance_cpumask[i] = cpumask_of_cpu(0); -+ } - - repeat: - set_current_state(TASK_INTERRUPTIBLE); -@@ -611,7 +612,9 @@ static int __init balanced_irq_init(void - { - int i; - struct cpuinfo_x86 *c; -+ cpumask_t tmp; - -+ cpus_shift_right(tmp, cpu_online_map, 2); - c = &boot_cpu_data; - /* When not overwritten by the command line ask subarchitecture. */ - if (irqbalance_disabled == IRQBALANCE_CHECK_ARCH) -@@ -628,7 +631,7 @@ static int __init balanced_irq_init(void - * Enable physical balance only if more than 1 physical processor - * is present - */ -- if (smp_num_siblings > 1 && cpu_online_map >> 2) -+ if (smp_num_siblings > 1 && !cpus_empty(tmp)) - physical_balance = 1; - - for (i = 0; i < NR_CPUS; i++) { -@@ -667,14 +670,14 @@ static int __init irqbalance_disable(cha - - __setup("noirqbalance", irqbalance_disable); - --static void set_ioapic_affinity (unsigned int irq, unsigned long mask); -+static void set_ioapic_affinity(unsigned int irq, cpumask_t mask); - - static inline void move_irq(int irq) - { - /* note - we hold the desc->lock */ -- if (unlikely(pending_irq_balance_cpumask[irq])) { -+ if (unlikely(!cpus_empty(pending_irq_balance_cpumask[irq]))) { - set_ioapic_affinity(irq, pending_irq_balance_cpumask[irq]); -- pending_irq_balance_cpumask[irq] = 0; -+ cpus_clear(pending_irq_balance_cpumask[irq]); - } - } - -@@ -682,6 +685,21 @@ __initcall(balanced_irq_init); - - #else /* !SMP */ - static inline void move_irq(int irq) { } -+ -+void send_IPI_self(int vector) -+{ -+ unsigned int cfg; -+ -+ /* -+ * Wait for idle. -+ */ -+ apic_wait_icr_idle(); -+ cfg = APIC_DM_FIXED | APIC_DEST_SELF | vector | APIC_DEST_LOGICAL; -+ /* -+ * Send the IPI. The write to APIC_ICR fires this off. -+ */ -+ apic_write_around(APIC_ICR, cfg); -+} - #endif /* defined(CONFIG_SMP) */ - - -@@ -822,7 +840,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, - * we need to reprogram the ioredtbls to cater for the cpus which have come online - * so mask in all cases should simply be TARGET_CPUS - */ --void __init setup_ioapic_dest (unsigned long mask) -+void __init setup_ioapic_dest(cpumask_t mask) - { - int pin, ioapic, irq, irq_entry; - -@@ -1598,7 +1616,7 @@ void disable_IO_APIC(void) - static void __init setup_ioapic_ids_from_mpc(void) - { - union IO_APIC_reg_00 reg_00; -- unsigned long phys_id_present_map; -+ physid_mask_t phys_id_present_map; - int apic; - int i; - unsigned char old_id; -@@ -1608,6 +1626,10 @@ static void __init setup_ioapic_ids_from - /* This gets done during IOAPIC enumeration for ACPI. */ - return; - -+ /* -+ * This is broken; anything with a real cpu count has to -+ * circumvent this idiocy regardless. -+ */ - phys_id_present_map = ioapic_phys_id_map(phys_cpu_present_map); - - /* -@@ -1639,18 +1661,20 @@ static void __init setup_ioapic_ids_from - mp_ioapics[apic].mpc_apicid)) { - printk(KERN_ERR "BIOS bug, IO-APIC#%d ID %d is already used!...\n", - apic, mp_ioapics[apic].mpc_apicid); -- for (i = 0; i < 0xf; i++) -- if (!(phys_id_present_map & (1 << i))) -+ for (i = 0; i < APIC_BROADCAST_ID; i++) -+ if (!physid_isset(i, phys_id_present_map)) - break; -- if (i >= 0xf) -+ if (i >= APIC_BROADCAST_ID) - panic("Max APIC ID exceeded!\n"); - printk(KERN_ERR "... fixing up to %d. (tell your hw vendor)\n", - i); -- phys_id_present_map |= 1 << i; -+ physid_set(i, phys_id_present_map); - mp_ioapics[apic].mpc_apicid = i; - } else { -+ physid_mask_t tmp; -+ tmp = apicid_to_cpu_present(mp_ioapics[apic].mpc_apicid); - printk("Setting %d in the phys_id_present_map\n", mp_ioapics[apic].mpc_apicid); -- phys_id_present_map |= apicid_to_cpu_present(mp_ioapics[apic].mpc_apicid); -+ physids_or(phys_id_present_map, phys_id_present_map, tmp); - } - - -@@ -2220,7 +2244,8 @@ late_initcall(io_apic_bug_finalize); - int __init io_apic_get_unique_id (int ioapic, int apic_id) - { - union IO_APIC_reg_00 reg_00; -- static unsigned long apic_id_map = 0; -+ static physid_mask_t apic_id_map = PHYSID_MASK_NONE; -+ physid_mask_t tmp; - unsigned long flags; - int i = 0; - -@@ -2233,8 +2258,8 @@ int __init io_apic_get_unique_id (int io - * advantage of new APIC bus architecture. - */ - -- if (!apic_id_map) -- apic_id_map = phys_cpu_present_map; -+ if (physids_empty(apic_id_map)) -+ apic_id_map = ioapic_phys_id_map(phys_cpu_present_map); - - spin_lock_irqsave(&ioapic_lock, flags); - reg_00.raw = io_apic_read(ioapic, 0); -@@ -2266,7 +2291,8 @@ int __init io_apic_get_unique_id (int io - apic_id = i; - } - -- apic_id_map |= apicid_to_cpu_present(apic_id); -+ tmp = apicid_to_cpu_present(apic_id); -+ physids_or(apic_id_map, apic_id_map, tmp); - - if (reg_00.bits.ID != apic_id) { - reg_00.bits.ID = apic_id; ---- linux-2.6.0-test1/arch/i386/kernel/irq.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/i386/kernel/irq.c 2003-07-19 17:04:06.000000000 -0700 -@@ -45,8 +45,6 @@ - #include - #include - -- -- - /* - * Linux has a controller-independent x86 interrupt architecture. - * every controller has a 'controller-template', that is used -@@ -889,13 +887,13 @@ int setup_irq(unsigned int irq, struct i - static struct proc_dir_entry * root_irq_dir; - static struct proc_dir_entry * irq_dir [NR_IRQS]; - --#define HEX_DIGITS 8 -+#define HEX_DIGITS (2*sizeof(cpumask_t)) - --static unsigned int parse_hex_value (const char __user *buffer, -- unsigned long count, unsigned long *ret) -+static unsigned int parse_hex_value(const char __user *buffer, -+ unsigned long count, cpumask_t *ret) - { -- unsigned char hexnum [HEX_DIGITS]; -- unsigned long value; -+ unsigned char hexnum[HEX_DIGITS]; -+ cpumask_t value = CPU_MASK_NONE; - int i; - - if (!count) -@@ -909,10 +907,10 @@ static unsigned int parse_hex_value (con - * Parse the first 8 characters as a hex string, any non-hex char - * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. - */ -- value = 0; - - for (i = 0; i < count; i++) { - unsigned int c = hexnum[i]; -+ int k; - - switch (c) { - case '0' ... '9': c -= '0'; break; -@@ -921,7 +919,10 @@ static unsigned int parse_hex_value (con - default: - goto out; - } -- value = (value << 4) | c; -+ cpus_shift_left(value, value, 4); -+ for (k = 0; k < 4; ++k) -+ if (test_bit(k, (unsigned long *)&c)) -+ cpu_set(k, value); - } - out: - *ret = value; -@@ -930,22 +931,35 @@ out: - - #ifdef CONFIG_SMP - --static struct proc_dir_entry * smp_affinity_entry [NR_IRQS]; -+static struct proc_dir_entry *smp_affinity_entry[NR_IRQS]; -+ -+cpumask_t irq_affinity[NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; - --unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; --static int irq_affinity_read_proc (char *page, char **start, off_t off, -+static int irq_affinity_read_proc(char *page, char **start, off_t off, - int count, int *eof, void *data) - { -+ int k, len; -+ cpumask_t tmp = irq_affinity[(long)data]; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", irq_affinity[(long)data]); -+ -+ len = 0; -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", (u16)cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - --static int irq_affinity_write_proc (struct file *file, const char __user *buffer, -+static int irq_affinity_write_proc(struct file *file, const char __user *buffer, - unsigned long count, void *data) - { -- int irq = (long) data, full_count = count, err; -- unsigned long new_value; -+ int irq = (long)data, full_count = count, err; -+ cpumask_t new_value, tmp; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; -@@ -957,11 +971,13 @@ static int irq_affinity_write_proc (stru - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ -- if (!(new_value & cpu_online_map)) -+ cpus_and(tmp, new_value, cpu_online_map); -+ if (cpus_empty(tmp)) - return -EINVAL; - - irq_affinity[irq] = new_value; -- irq_desc[irq].handler->set_affinity(irq, new_value); -+ irq_desc[irq].handler->set_affinity(irq, -+ cpumask_of_cpu(first_cpu(new_value))); - - return full_count; - } -@@ -980,8 +996,9 @@ static int prof_cpu_mask_read_proc (char - static int prof_cpu_mask_write_proc (struct file *file, const char __user *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t *mask = (cpumask_t *)data; -+ unsigned long full_count = count, err; -+ cpumask_t new_value; - - err = parse_hex_value(buffer, count, &new_value); - if (err) ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/i386/kernel/kgdb_stub.c 2003-07-19 17:04:14.000000000 -0700 -@@ -0,0 +1,2215 @@ -+/* -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2, or (at your option) any -+ * later version. -+ * -+ * This program is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ * -+ */ -+ -+/* -+ * Copyright (c) 2000 VERITAS Software Corporation. -+ * -+ */ -+/**************************************************************************** -+ * Header: remcom.c,v 1.34 91/03/09 12:29:49 glenne Exp $ -+ * -+ * Module name: remcom.c $ -+ * Revision: 1.34 $ -+ * Date: 91/03/09 12:29:49 $ -+ * Contributor: Lake Stevens Instrument Division$ -+ * -+ * Description: low level support for gdb debugger. $ -+ * -+ * Considerations: only works on target hardware $ -+ * -+ * Written by: Glenn Engel $ -+ * Updated by: David Grothe -+ * ModuleState: Experimental $ -+ * -+ * NOTES: See Below $ -+ * -+ * Modified for 386 by Jim Kingdon, Cygnus Support. -+ * Compatibility with 2.1.xx kernel by David Grothe -+ * -+ * Changes to allow auto initilization. All that is needed is that it -+ * be linked with the kernel and a break point (int 3) be executed. -+ * The header file defines BREAKPOINT to allow one to do -+ * this. It should also be possible, once the interrupt system is up, to -+ * call putDebugChar("+"). Once this is done, the remote debugger should -+ * get our attention by sending a ^C in a packet. George Anzinger -+ * -+ * Integrated into 2.2.5 kernel by Tigran Aivazian -+ * Added thread support, support for multiple processors, -+ * support for ia-32(x86) hardware debugging. -+ * Amit S. Kale ( akale@veritas.com ) -+ * -+ * -+ * To enable debugger support, two things need to happen. One, a -+ * call to set_debug_traps() is necessary in order to allow any breakpoints -+ * or error conditions to be properly intercepted and reported to gdb. -+ * Two, a breakpoint needs to be generated to begin communication. This -+ * is most easily accomplished by a call to breakpoint(). Breakpoint() -+ * simulates a breakpoint by executing an int 3. -+ * -+ ************* -+ * -+ * The following gdb commands are supported: -+ * -+ * command function Return value -+ * -+ * g return the value of the CPU registers hex data or ENN -+ * G set the value of the CPU registers OK or ENN -+ * -+ * mAA..AA,LLLL Read LLLL bytes at address AA..AA hex data or ENN -+ * MAA..AA,LLLL: Write LLLL bytes at address AA.AA OK or ENN -+ * -+ * c Resume at current address SNN ( signal NN) -+ * cAA..AA Continue at address AA..AA SNN -+ * -+ * s Step one instruction SNN -+ * sAA..AA Step one instruction from AA..AA SNN -+ * -+ * k kill -+ * -+ * ? What was the last sigval ? SNN (signal NN) -+ * -+ * All commands and responses are sent with a packet which includes a -+ * checksum. A packet consists of -+ * -+ * $#. -+ * -+ * where -+ * :: -+ * :: < two hex digits computed as modulo 256 sum of > -+ * -+ * When a packet is received, it is first acknowledged with either '+' or '-'. -+ * '+' indicates a successful transfer. '-' indicates a failed transfer. -+ * -+ * Example: -+ * -+ * Host: Reply: -+ * $m0,10#2a +$00010203040506070809101112131415#42 -+ * -+ ****************************************************************************/ -+#define KGDB_VERSION "<20030530.0126.22>" -+#include -+#include -+#include /* for strcpy */ -+#include -+#include -+#include -+#include -+#include /* for linux pt_regs struct */ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/************************************************************************ -+ * -+ * external low-level support routines -+ */ -+typedef void (*Function) (void); /* pointer to a function */ -+ -+/* Thread reference */ -+typedef unsigned char threadref[8]; -+ -+extern void putDebugChar(int); /* write a single character */ -+extern int getDebugChar(void); /* read and return a single char */ -+ -+/************************************************************************/ -+/* BUFMAX defines the maximum number of characters in inbound/outbound buffers*/ -+/* at least NUMREGBYTES*2 are needed for register packets */ -+/* Longer buffer is needed to list all threads */ -+#define BUFMAX 1024 -+ -+char *kgdb_version = KGDB_VERSION; -+ -+/* debug > 0 prints ill-formed commands in valid packets & checksum errors */ -+int debug_regs = 0; /* set to non-zero to print registers */ -+ -+/* filled in by an external module */ -+char *gdb_module_offsets; -+ -+static const char hexchars[] = "0123456789abcdef"; -+ -+/* Number of bytes of registers. */ -+#define NUMREGBYTES 64 -+/* -+ * Note that this register image is in a different order than -+ * the register image that Linux produces at interrupt time. -+ * -+ * Linux's register image is defined by struct pt_regs in ptrace.h. -+ * Just why GDB uses a different order is a historical mystery. -+ */ -+enum regnames { _EAX, /* 0 */ -+ _ECX, /* 1 */ -+ _EDX, /* 2 */ -+ _EBX, /* 3 */ -+ _ESP, /* 4 */ -+ _EBP, /* 5 */ -+ _ESI, /* 6 */ -+ _EDI, /* 7 */ -+ _PC /* 8 also known as eip */ , -+ _PS /* 9 also known as eflags */ , -+ _CS, /* 10 */ -+ _SS, /* 11 */ -+ _DS, /* 12 */ -+ _ES, /* 13 */ -+ _FS, /* 14 */ -+ _GS /* 15 */ -+}; -+ -+/*************************** ASSEMBLY CODE MACROS *************************/ -+/* -+ * Put the error code here just in case the user cares. -+ * Likewise, the vector number here (since GDB only gets the signal -+ * number through the usual means, and that's not very specific). -+ * The called_from is the return address so he can tell how we entered kgdb. -+ * This will allow him to seperate out the various possible entries. -+ */ -+#define REMOTE_DEBUG 0 /* set != to turn on printing (also available in info) */ -+ -+#define PID_MAX PID_MAX_DEFAULT -+ -+#ifdef CONFIG_SMP -+void smp_send_nmi_allbutself(void); -+#define IF_SMP(x) x -+#undef MAX_NO_CPUS -+#ifndef CONFIG_NO_KGDB_CPUS -+#define CONFIG_NO_KGDB_CPUS 2 -+#endif -+#if CONFIG_NO_KGDB_CPUS > NR_CPUS -+#define MAX_NO_CPUS NR_CPUS -+#else -+#define MAX_NO_CPUS CONFIG_NO_KGDB_CPUS -+#endif -+#define hold_init hold_on_sstep: 1, -+#define MAX_CPU_MASK (unsigned long)((1LL << MAX_NO_CPUS) - 1LL) -+#define NUM_CPUS num_online_cpus() -+#else -+#define IF_SMP(x) -+#define hold_init -+#undef MAX_NO_CPUS -+#define MAX_NO_CPUS 1 -+#define NUM_CPUS 1 -+#endif -+#define NOCPU (struct task_struct *)0xbad1fbad -+/* *INDENT-OFF* */ -+struct kgdb_info { -+ int used_malloc; -+ void *called_from; -+ long long entry_tsc; -+ int errcode; -+ int vector; -+ int print_debug_info; -+#ifdef CONFIG_SMP -+ int hold_on_sstep; -+ struct { -+ volatile struct task_struct *task; -+ int pid; -+ int hold; -+ struct pt_regs *regs; -+ } cpus_waiting[MAX_NO_CPUS]; -+#endif -+} kgdb_info = {hold_init print_debug_info:REMOTE_DEBUG, vector:-1}; -+ -+/* *INDENT-ON* */ -+ -+#define used_m kgdb_info.used_malloc -+/* -+ * This is little area we set aside to contain the stack we -+ * need to build to allow gdb to call functions. We use one -+ * per cpu to avoid locking issues. We will do all this work -+ * with interrupts off so that should take care of the protection -+ * issues. -+ */ -+#define LOOKASIDE_SIZE 200 /* should be more than enough */ -+#define MALLOC_MAX 200 /* Max malloc size */ -+struct { -+ unsigned int esp; -+ int array[LOOKASIDE_SIZE]; -+} fn_call_lookaside[MAX_NO_CPUS]; -+ -+static int trap_cpu; -+static unsigned int OLD_esp; -+ -+#define END_OF_LOOKASIDE &fn_call_lookaside[trap_cpu].array[LOOKASIDE_SIZE] -+#define IF_BIT 0x200 -+#define TF_BIT 0x100 -+ -+#define MALLOC_ROUND 8-1 -+ -+static char malloc_array[MALLOC_MAX]; -+IF_SMP(static void to_gdb(const char *mess)); -+void * -+malloc(int size) -+{ -+ -+ if (size <= (MALLOC_MAX - used_m)) { -+ int old_used = used_m; -+ used_m += ((size + MALLOC_ROUND) & (~MALLOC_ROUND)); -+ return &malloc_array[old_used]; -+ } else { -+ return NULL; -+ } -+} -+ -+/* -+ * Gdb calls functions by pushing agruments, including a return address -+ * on the stack and the adjusting EIP to point to the function. The -+ * whole assumption in GDB is that we are on a different stack than the -+ * one the "user" i.e. code that hit the break point, is on. This, of -+ * course is not true in the kernel. Thus various dodges are needed to -+ * do the call without directly messing with EIP (which we can not change -+ * as it is just a location and not a register. To adjust it would then -+ * require that we move every thing below EIP up or down as needed. This -+ * will not work as we may well have stack relative pointer on the stack -+ * (such as the pointer to regs, for example). -+ -+ * So here is what we do: -+ * We detect gdb attempting to store into the stack area and instead, store -+ * into the fn_call_lookaside.array at the same relative location as if it -+ * were the area ESP pointed at. We also trap ESP modifications -+ * and uses these to adjust fn_call_lookaside.esp. On entry -+ * fn_call_lookaside.esp will be set to point at the last entry in -+ * fn_call_lookaside.array. This allows us to check if it has changed, and -+ * if so, on exit, we add the registers we will use to do the move and a -+ * trap/ interrupt return exit sequence. We then adjust the eflags in the -+ * regs array (remember we now have a copy in the fn_call_lookaside.array) to -+ * kill the interrupt bit, AND we change EIP to point at our set up stub. -+ * As part of the register set up we preset the registers to point at the -+ * begining and end of the fn_call_lookaside.array, so all the stub needs to -+ * do is move words from the array to the stack until ESP= the desired value -+ * then do the rti. This will then transfer to the desired function with -+ * all the correct registers. Nifty huh? -+ */ -+extern asmlinkage void fn_call_stub(void); -+extern asmlinkage void fn_rtn_stub(void); -+/* *INDENT-OFF* */ -+__asm__("fn_rtn_stub:\n\t" -+ "movl %eax,%esp\n\t" -+ "fn_call_stub:\n\t" -+ "1:\n\t" -+ "addl $-4,%ebx\n\t" -+ "movl (%ebx), %eax\n\t" -+ "pushl %eax\n\t" -+ "cmpl %esp,%ecx\n\t" -+ "jne 1b\n\t" -+ "popl %eax\n\t" -+ "popl %ebx\n\t" -+ "popl %ecx\n\t" -+ "iret \n\t"); -+/* *INDENT-ON* */ -+#define gdb_i386vector kgdb_info.vector -+#define gdb_i386errcode kgdb_info.errcode -+#define waiting_cpus kgdb_info.cpus_waiting -+#define remote_debug kgdb_info.print_debug_info -+#define hold_cpu(cpu) kgdb_info.cpus_waiting[cpu].hold -+/* gdb locks */ -+ -+#ifdef CONFIG_SMP -+static int in_kgdb_called; -+static spinlock_t waitlocks[MAX_NO_CPUS] = -+ {[0 ... MAX_NO_CPUS - 1] = SPIN_LOCK_UNLOCKED }; -+/* -+ * The following array has the thread pointer of each of the "other" -+ * cpus. We make it global so it can be seen by gdb. -+ */ -+volatile int in_kgdb_entry_log[MAX_NO_CPUS]; -+volatile struct pt_regs *in_kgdb_here_log[MAX_NO_CPUS]; -+/* -+static spinlock_t continuelocks[MAX_NO_CPUS]; -+*/ -+spinlock_t kgdb_spinlock = SPIN_LOCK_UNLOCKED; -+/* waiters on our spinlock plus us */ -+static atomic_t spinlock_waiters = ATOMIC_INIT(1); -+static int spinlock_count = 0; -+static int spinlock_cpu = 0; -+/* -+ * Note we use nested spin locks to account for the case where a break -+ * point is encountered when calling a function by user direction from -+ * kgdb. Also there is the memory exception recursion to account for. -+ * Well, yes, but this lets other cpus thru too. Lets add a -+ * cpu id to the lock. -+ */ -+#define KGDB_SPIN_LOCK(x) if( spinlock_count == 0 || \ -+ spinlock_cpu != smp_processor_id()){\ -+ atomic_inc(&spinlock_waiters); \ -+ while (! spin_trylock(x)) {\ -+ in_kgdb(®s);\ -+ }\ -+ atomic_dec(&spinlock_waiters); \ -+ spinlock_count = 1; \ -+ spinlock_cpu = smp_processor_id(); \ -+ }else{ \ -+ spinlock_count++; \ -+ } -+#define KGDB_SPIN_UNLOCK(x) if( --spinlock_count == 0) spin_unlock(x) -+#else -+unsigned kgdb_spinlock = 0; -+#define KGDB_SPIN_LOCK(x) --*x -+#define KGDB_SPIN_UNLOCK(x) ++*x -+#endif -+ -+int -+hex(char ch) -+{ -+ if ((ch >= 'a') && (ch <= 'f')) -+ return (ch - 'a' + 10); -+ if ((ch >= '0') && (ch <= '9')) -+ return (ch - '0'); -+ if ((ch >= 'A') && (ch <= 'F')) -+ return (ch - 'A' + 10); -+ return (-1); -+} -+ -+/* scan for the sequence $# */ -+void -+getpacket(char *buffer) -+{ -+ unsigned char checksum; -+ unsigned char xmitcsum; -+ int i; -+ int count; -+ char ch; -+ -+ do { -+ /* wait around for the start character, ignore all other characters */ -+ while ((ch = (getDebugChar() & 0x7f)) != '$') ; -+ checksum = 0; -+ xmitcsum = -1; -+ -+ count = 0; -+ -+ /* now, read until a # or end of buffer is found */ -+ while (count < BUFMAX) { -+ ch = getDebugChar() & 0x7f; -+ if (ch == '#') -+ break; -+ checksum = checksum + ch; -+ buffer[count] = ch; -+ count = count + 1; -+ } -+ buffer[count] = 0; -+ -+ if (ch == '#') { -+ xmitcsum = hex(getDebugChar() & 0x7f) << 4; -+ xmitcsum += hex(getDebugChar() & 0x7f); -+ if ((remote_debug) && (checksum != xmitcsum)) { -+ printk -+ ("bad checksum. My count = 0x%x, sent=0x%x. buf=%s\n", -+ checksum, xmitcsum, buffer); -+ } -+ -+ if (checksum != xmitcsum) -+ putDebugChar('-'); /* failed checksum */ -+ else { -+ putDebugChar('+'); /* successful transfer */ -+ /* if a sequence char is present, reply the sequence ID */ -+ if (buffer[2] == ':') { -+ putDebugChar(buffer[0]); -+ putDebugChar(buffer[1]); -+ /* remove sequence chars from buffer */ -+ count = strlen(buffer); -+ for (i = 3; i <= count; i++) -+ buffer[i - 3] = buffer[i]; -+ } -+ } -+ } -+ } while (checksum != xmitcsum); -+ -+ if (remote_debug) -+ printk("R:%s\n", buffer); -+} -+ -+/* send the packet in buffer. */ -+ -+void -+putpacket(char *buffer) -+{ -+ unsigned char checksum; -+ int count; -+ char ch; -+ -+ /* $#. */ -+ do { -+ if (remote_debug) -+ printk("T:%s\n", buffer); -+ putDebugChar('$'); -+ checksum = 0; -+ count = 0; -+ -+ while ((ch = buffer[count])) { -+ putDebugChar(ch); -+ checksum += ch; -+ count += 1; -+ } -+ -+ putDebugChar('#'); -+ putDebugChar(hexchars[checksum >> 4]); -+ putDebugChar(hexchars[checksum % 16]); -+ -+ } while ((getDebugChar() & 0x7f) != '+'); -+ -+} -+ -+static char remcomInBuffer[BUFMAX]; -+static char remcomOutBuffer[BUFMAX]; -+static short error; -+ -+void -+debug_error(char *format, char *parm) -+{ -+ if (remote_debug) -+ printk(format, parm); -+} -+ -+static void -+print_regs(struct pt_regs *regs) -+{ -+ printk("EAX=%08lx ", regs->eax); -+ printk("EBX=%08lx ", regs->ebx); -+ printk("ECX=%08lx ", regs->ecx); -+ printk("EDX=%08lx ", regs->edx); -+ printk("\n"); -+ printk("ESI=%08lx ", regs->esi); -+ printk("EDI=%08lx ", regs->edi); -+ printk("EBP=%08lx ", regs->ebp); -+ printk("ESP=%08lx ", (long) ®s->esp); -+ printk("\n"); -+ printk(" DS=%08x ", regs->xds); -+ printk(" ES=%08x ", regs->xes); -+ printk(" SS=%08x ", __KERNEL_DS); -+ printk(" FL=%08lx ", regs->eflags); -+ printk("\n"); -+ printk(" CS=%08x ", regs->xcs); -+ printk(" IP=%08lx ", regs->eip); -+#if 0 -+ printk(" FS=%08x ", regs->fs); -+ printk(" GS=%08x ", regs->gs); -+#endif -+ printk("\n"); -+ -+} /* print_regs */ -+ -+#define NEW_esp fn_call_lookaside[trap_cpu].esp -+ -+static void -+regs_to_gdb_regs(int *gdb_regs, struct pt_regs *regs) -+{ -+ gdb_regs[_EAX] = regs->eax; -+ gdb_regs[_EBX] = regs->ebx; -+ gdb_regs[_ECX] = regs->ecx; -+ gdb_regs[_EDX] = regs->edx; -+ gdb_regs[_ESI] = regs->esi; -+ gdb_regs[_EDI] = regs->edi; -+ gdb_regs[_EBP] = regs->ebp; -+ gdb_regs[_DS] = regs->xds; -+ gdb_regs[_ES] = regs->xes; -+ gdb_regs[_PS] = regs->eflags; -+ gdb_regs[_CS] = regs->xcs; -+ gdb_regs[_PC] = regs->eip; -+ /* Note, as we are a debugging the kernel, we will always -+ * trap in kernel code, this means no priviledge change, -+ * and so the pt_regs structure is not completely valid. In a non -+ * privilege change trap, only EFLAGS, CS and EIP are put on the stack, -+ * SS and ESP are not stacked, this means that the last 2 elements of -+ * pt_regs is not valid (they would normally refer to the user stack) -+ * also, using regs+1 is no good because you end up will a value that is -+ * 2 longs (8) too high. This used to cause stepping over functions -+ * to fail, so my fix is to use the address of regs->esp, which -+ * should point at the end of the stack frame. Note I have ignored -+ * completely exceptions that cause an error code to be stacked, such -+ * as double fault. Stuart Hughes, Zentropix. -+ * original code: gdb_regs[_ESP] = (int) (regs + 1) ; -+ -+ * this is now done on entry and moved to OLD_esp (as well as NEW_esp). -+ */ -+ gdb_regs[_ESP] = NEW_esp; -+ gdb_regs[_SS] = __KERNEL_DS; -+ gdb_regs[_FS] = 0xFFFF; -+ gdb_regs[_GS] = 0xFFFF; -+} /* regs_to_gdb_regs */ -+ -+static void -+gdb_regs_to_regs(int *gdb_regs, struct pt_regs *regs) -+{ -+ regs->eax = gdb_regs[_EAX]; -+ regs->ebx = gdb_regs[_EBX]; -+ regs->ecx = gdb_regs[_ECX]; -+ regs->edx = gdb_regs[_EDX]; -+ regs->esi = gdb_regs[_ESI]; -+ regs->edi = gdb_regs[_EDI]; -+ regs->ebp = gdb_regs[_EBP]; -+ regs->xds = gdb_regs[_DS]; -+ regs->xes = gdb_regs[_ES]; -+ regs->eflags = gdb_regs[_PS]; -+ regs->xcs = gdb_regs[_CS]; -+ regs->eip = gdb_regs[_PC]; -+ NEW_esp = gdb_regs[_ESP]; /* keep the value */ -+#if 0 /* can't change these */ -+ regs->esp = gdb_regs[_ESP]; -+ regs->xss = gdb_regs[_SS]; -+ regs->fs = gdb_regs[_FS]; -+ regs->gs = gdb_regs[_GS]; -+#endif -+ -+} /* gdb_regs_to_regs */ -+extern void scheduling_functions_start_here(void); -+extern void scheduling_functions_end_here(void); -+#define first_sched ((unsigned long) scheduling_functions_start_here) -+#define last_sched ((unsigned long) scheduling_functions_end_here) -+ -+int thread_list = 0; -+ -+void -+get_gdb_regs(struct task_struct *p, struct pt_regs *regs, int *gdb_regs) -+{ -+ unsigned long stack_page; -+ int count = 0; -+ IF_SMP(int i); -+ if (!p || p == current) { -+ regs_to_gdb_regs(gdb_regs, regs); -+ return; -+ } -+#ifdef CONFIG_SMP -+ for (i = 0; i < MAX_NO_CPUS; i++) { -+ if (p == kgdb_info.cpus_waiting[i].task) { -+ regs_to_gdb_regs(gdb_regs, -+ kgdb_info.cpus_waiting[i].regs); -+ gdb_regs[_ESP] = -+ (int) &kgdb_info.cpus_waiting[i].regs->esp; -+ -+ return; -+ } -+ } -+#endif -+ memset(gdb_regs, 0, NUMREGBYTES); -+ gdb_regs[_ESP] = p->thread.esp; -+ gdb_regs[_PC] = p->thread.eip; -+ gdb_regs[_EBP] = *(int *) gdb_regs[_ESP]; -+ gdb_regs[_EDI] = *(int *) (gdb_regs[_ESP] + 4); -+ gdb_regs[_ESI] = *(int *) (gdb_regs[_ESP] + 8); -+ -+/* -+ * This code is to give a more informative notion of where a process -+ * is waiting. It is used only when the user asks for a thread info -+ * list. If he then switches to the thread, s/he will find the task -+ * is in schedule, but a back trace should show the same info we come -+ * up with. This code was shamelessly purloined from process.c. It was -+ * then enhanced to provide more registers than simply the program -+ * counter. -+ */ -+ -+ if (!thread_list) { -+ return; -+ } -+ -+ if (p->state == TASK_RUNNING) -+ return; -+ stack_page = (unsigned long) p->thread_info; -+ if (gdb_regs[_ESP] < stack_page || gdb_regs[_ESP] > 8188 + stack_page) -+ return; -+ /* include/asm-i386/system.h:switch_to() pushes ebp last. */ -+ do { -+ if (gdb_regs[_EBP] < stack_page || -+ gdb_regs[_EBP] > 8184 + stack_page) -+ return; -+ gdb_regs[_PC] = *(unsigned long *) (gdb_regs[_EBP] + 4); -+ gdb_regs[_ESP] = gdb_regs[_EBP] + 8; -+ gdb_regs[_EBP] = *(unsigned long *) gdb_regs[_EBP]; -+ if (gdb_regs[_PC] < first_sched || gdb_regs[_PC] >= last_sched) -+ return; -+ } while (count++ < 16); -+ return; -+} -+ -+/* Indicate to caller of mem2hex or hex2mem that there has been an -+ error. */ -+static volatile int mem_err = 0; -+static volatile int mem_err_expected = 0; -+static volatile int mem_err_cnt = 0; -+static int garbage_loc = -1; -+ -+int -+get_char(char *addr) -+{ -+ return *addr; -+} -+ -+void -+set_char(char *addr, int val, int may_fault) -+{ -+ /* -+ * This code traps references to the area mapped to the kernel -+ * stack as given by the regs and, instead, stores to the -+ * fn_call_lookaside[cpu].array -+ */ -+ if (may_fault && -+ (unsigned int) addr < OLD_esp && -+ ((unsigned int) addr > (OLD_esp - (unsigned int) LOOKASIDE_SIZE))) { -+ addr = (char *) END_OF_LOOKASIDE - ((char *) OLD_esp - addr); -+ } -+ *addr = val; -+} -+ -+/* convert the memory pointed to by mem into hex, placing result in buf */ -+/* return a pointer to the last char put in buf (null) */ -+/* If MAY_FAULT is non-zero, then we should set mem_err in response to -+ a fault; if zero treat a fault like any other fault in the stub. */ -+char * -+mem2hex(char *mem, char *buf, int count, int may_fault) -+{ -+ int i; -+ unsigned char ch; -+ -+ if (may_fault) { -+ mem_err_expected = 1; -+ mem_err = 0; -+ } -+ for (i = 0; i < count; i++) { -+ /* printk("%lx = ", mem) ; */ -+ -+ ch = get_char(mem++); -+ -+ /* printk("%02x\n", ch & 0xFF) ; */ -+ if (may_fault && mem_err) { -+ if (remote_debug) -+ printk("Mem fault fetching from addr %lx\n", -+ (long) (mem - 1)); -+ *buf = 0; /* truncate buffer */ -+ return (buf); -+ } -+ *buf++ = hexchars[ch >> 4]; -+ *buf++ = hexchars[ch % 16]; -+ } -+ *buf = 0; -+ if (may_fault) -+ mem_err_expected = 0; -+ return (buf); -+} -+ -+/* convert the hex array pointed to by buf into binary to be placed in mem */ -+/* return a pointer to the character AFTER the last byte written */ -+/* NOTE: We use the may fault flag to also indicate if the write is to -+ * the registers (0) or "other" memory (!=0) -+ */ -+char * -+hex2mem(char *buf, char *mem, int count, int may_fault) -+{ -+ int i; -+ unsigned char ch; -+ -+ if (may_fault) { -+ mem_err_expected = 1; -+ mem_err = 0; -+ } -+ for (i = 0; i < count; i++) { -+ ch = hex(*buf++) << 4; -+ ch = ch + hex(*buf++); -+ set_char(mem++, ch, may_fault); -+ -+ if (may_fault && mem_err) { -+ if (remote_debug) -+ printk("Mem fault storing to addr %lx\n", -+ (long) (mem - 1)); -+ return (mem); -+ } -+ } -+ if (may_fault) -+ mem_err_expected = 0; -+ return (mem); -+} -+ -+/**********************************************/ -+/* WHILE WE FIND NICE HEX CHARS, BUILD AN INT */ -+/* RETURN NUMBER OF CHARS PROCESSED */ -+/**********************************************/ -+int -+hexToInt(char **ptr, int *intValue) -+{ -+ int numChars = 0; -+ int hexValue; -+ -+ *intValue = 0; -+ -+ while (**ptr) { -+ hexValue = hex(**ptr); -+ if (hexValue >= 0) { -+ *intValue = (*intValue << 4) | hexValue; -+ numChars++; -+ } else -+ break; -+ -+ (*ptr)++; -+ } -+ -+ return (numChars); -+} -+ -+#define stubhex(h) hex(h) -+ -+static int -+stub_unpack_int(char *buff, int fieldlength) -+{ -+ int nibble; -+ int retval = 0; -+ -+ while (fieldlength) { -+ nibble = stubhex(*buff++); -+ retval |= nibble; -+ fieldlength--; -+ if (fieldlength) -+ retval = retval << 4; -+ } -+ return retval; -+} -+ -+static char * -+pack_hex_byte(char *pkt, int byte) -+{ -+ *pkt++ = hexchars[(byte >> 4) & 0xf]; -+ *pkt++ = hexchars[(byte & 0xf)]; -+ return pkt; -+} -+ -+#define BUF_THREAD_ID_SIZE 16 -+ -+static char * -+pack_threadid(char *pkt, threadref * id) -+{ -+ char *limit; -+ unsigned char *altid; -+ -+ altid = (unsigned char *) id; -+ limit = pkt + BUF_THREAD_ID_SIZE; -+ while (pkt < limit) -+ pkt = pack_hex_byte(pkt, *altid++); -+ return pkt; -+} -+ -+static char * -+unpack_byte(char *buf, int *value) -+{ -+ *value = stub_unpack_int(buf, 2); -+ return buf + 2; -+} -+ -+static char * -+unpack_threadid(char *inbuf, threadref * id) -+{ -+ char *altref; -+ char *limit = inbuf + BUF_THREAD_ID_SIZE; -+ int x, y; -+ -+ altref = (char *) id; -+ -+ while (inbuf < limit) { -+ x = stubhex(*inbuf++); -+ y = stubhex(*inbuf++); -+ *altref++ = (x << 4) | y; -+ } -+ return inbuf; -+} -+ -+void -+int_to_threadref(threadref * id, int value) -+{ -+ unsigned char *scan; -+ -+ scan = (unsigned char *) id; -+ { -+ int i = 4; -+ while (i--) -+ *scan++ = 0; -+ } -+ *scan++ = (value >> 24) & 0xff; -+ *scan++ = (value >> 16) & 0xff; -+ *scan++ = (value >> 8) & 0xff; -+ *scan++ = (value & 0xff); -+} -+ -+static int -+threadref_to_int(threadref * ref) -+{ -+ int i, value = 0; -+ unsigned char *scan; -+ -+ scan = (char *) ref; -+ scan += 4; -+ i = 4; -+ while (i-- > 0) -+ value = (value << 8) | ((*scan++) & 0xff); -+ return value; -+} -+ -+#if 1 /* this is a hold over from 2.4 where O(1) was "sometimes" */ -+extern struct task_struct *kgdb_get_idle(int cpu); -+#define idle_task(cpu) kgdb_get_idle(cpu) -+#else -+#define idle_task(cpu) init_tasks[cpu] -+#endif -+ -+struct task_struct * -+getthread(int pid) -+{ -+ struct task_struct *thread; -+ if (pid >= PID_MAX && pid <= (PID_MAX + MAX_NO_CPUS)) { -+ -+ return idle_task(pid - PID_MAX); -+ } else { -+ /* -+ * find_task_by_pid is relatively safe all the time -+ * Other pid functions require lock downs which imply -+ * that we may be interrupting them (as we get here -+ * in the middle of most any lock down) -+ */ -+ thread = find_task_by_pid(pid); -+ if (thread) { -+ return thread; -+ } -+ } -+ return NULL; -+} -+/* *INDENT-OFF* */ -+struct hw_breakpoint { -+ unsigned enabled; -+ unsigned type; -+ unsigned len; -+ unsigned addr; -+} breakinfo[4] = { {enabled:0}, -+ {enabled:0}, -+ {enabled:0}, -+ {enabled:0}}; -+/* *INDENT-ON* */ -+unsigned hw_breakpoint_status; -+void -+correct_hw_break(void) -+{ -+ int breakno; -+ int correctit; -+ int breakbit; -+ unsigned dr7; -+ -+ asm volatile ("movl %%db7, %0\n":"=r" (dr7) -+ :); -+ /* *INDENT-OFF* */ -+ do { -+ unsigned addr0, addr1, addr2, addr3; -+ asm volatile ("movl %%db0, %0\n" -+ "movl %%db1, %1\n" -+ "movl %%db2, %2\n" -+ "movl %%db3, %3\n" -+ :"=r" (addr0), "=r"(addr1), -+ "=r"(addr2), "=r"(addr3) -+ :); -+ } while (0); -+ /* *INDENT-ON* */ -+ correctit = 0; -+ for (breakno = 0; breakno < 3; breakno++) { -+ breakbit = 2 << (breakno << 1); -+ if (!(dr7 & breakbit) && breakinfo[breakno].enabled) { -+ correctit = 1; -+ dr7 |= breakbit; -+ dr7 &= ~(0xf0000 << (breakno << 2)); -+ dr7 |= (((breakinfo[breakno].len << 2) | -+ breakinfo[breakno].type) << 16) << -+ (breakno << 2); -+ switch (breakno) { -+ case 0: -+ asm volatile ("movl %0, %%dr0\n"::"r" -+ (breakinfo[breakno].addr)); -+ break; -+ -+ case 1: -+ asm volatile ("movl %0, %%dr1\n"::"r" -+ (breakinfo[breakno].addr)); -+ break; -+ -+ case 2: -+ asm volatile ("movl %0, %%dr2\n"::"r" -+ (breakinfo[breakno].addr)); -+ break; -+ -+ case 3: -+ asm volatile ("movl %0, %%dr3\n"::"r" -+ (breakinfo[breakno].addr)); -+ break; -+ } -+ } else if ((dr7 & breakbit) && !breakinfo[breakno].enabled) { -+ correctit = 1; -+ dr7 &= ~breakbit; -+ dr7 &= ~(0xf0000 << (breakno << 2)); -+ } -+ } -+ if (correctit) { -+ asm volatile ("movl %0, %%db7\n"::"r" (dr7)); -+ } -+} -+ -+int -+remove_hw_break(unsigned breakno) -+{ -+ if (!breakinfo[breakno].enabled) { -+ return -1; -+ } -+ breakinfo[breakno].enabled = 0; -+ return 0; -+} -+ -+int -+set_hw_break(unsigned breakno, unsigned type, unsigned len, unsigned addr) -+{ -+ if (breakinfo[breakno].enabled) { -+ return -1; -+ } -+ breakinfo[breakno].enabled = 1; -+ breakinfo[breakno].type = type; -+ breakinfo[breakno].len = len; -+ breakinfo[breakno].addr = addr; -+ return 0; -+} -+ -+#ifdef CONFIG_SMP -+static int in_kgdb_console = 0; -+ -+int -+in_kgdb(struct pt_regs *regs) -+{ -+ unsigned flags; -+ int cpu = smp_processor_id(); -+ in_kgdb_called = 1; -+ if (!spin_is_locked(&kgdb_spinlock)) { -+ if (in_kgdb_here_log[cpu] || /* we are holding this cpu */ -+ in_kgdb_console) { /* or we are doing slow i/o */ -+ return 1; -+ } -+ return 0; -+ } -+ -+ /* As I see it the only reason not to let all cpus spin on -+ * the same spin_lock is to allow selected ones to proceed. -+ * This would be a good thing, so we leave it this way. -+ * Maybe someday.... Done ! -+ -+ * in_kgdb() is called from an NMI so we don't pretend -+ * to have any resources, like printk() for example. -+ */ -+ -+ kgdb_local_irq_save(flags); /* only local here, to avoid hanging */ -+ /* -+ * log arival of this cpu -+ * The NMI keeps on ticking. Protect against recurring more -+ * than once, and ignor the cpu that has the kgdb lock -+ */ -+ in_kgdb_entry_log[cpu]++; -+ in_kgdb_here_log[cpu] = regs; -+ if (cpu == spinlock_cpu || waiting_cpus[cpu].task) { -+ goto exit_in_kgdb; -+ } -+ /* -+ * For protection of the initilization of the spin locks by kgdb -+ * it locks the kgdb spinlock before it gets the wait locks set -+ * up. We wait here for the wait lock to be taken. If the -+ * kgdb lock goes away first?? Well, it could be a slow exit -+ * sequence where the wait lock is removed prior to the kgdb lock -+ * so if kgdb gets unlocked, we just exit. -+ */ -+ while (spin_is_locked(&kgdb_spinlock) && -+ !spin_is_locked(waitlocks + cpu)) ; -+ if (!spin_is_locked(&kgdb_spinlock)) { -+ goto exit_in_kgdb; -+ } -+ waiting_cpus[cpu].task = current; -+ waiting_cpus[cpu].pid = (current->pid) ? : (PID_MAX + cpu); -+ waiting_cpus[cpu].regs = regs; -+ -+ spin_unlock_wait(waitlocks + cpu); -+ /* -+ * log departure of this cpu -+ */ -+ waiting_cpus[cpu].task = 0; -+ waiting_cpus[cpu].pid = 0; -+ waiting_cpus[cpu].regs = 0; -+ correct_hw_break(); -+ exit_in_kgdb: -+ in_kgdb_here_log[cpu] = 0; -+ kgdb_local_irq_restore(flags); -+ return 1; -+ /* -+ spin_unlock(continuelocks + smp_processor_id()); -+ */ -+} -+ -+void -+smp__in_kgdb(struct pt_regs regs) -+{ -+ ack_APIC_irq(); -+ in_kgdb(®s); -+} -+#else -+int -+in_kgdb(struct pt_regs *regs) -+{ -+ return (kgdb_spinlock); -+} -+#endif -+ -+void -+printexceptioninfo(int exceptionNo, int errorcode, char *buffer) -+{ -+ unsigned dr6; -+ int i; -+ switch (exceptionNo) { -+ case 1: /* debug exception */ -+ break; -+ case 3: /* breakpoint */ -+ sprintf(buffer, "Software breakpoint"); -+ return; -+ default: -+ sprintf(buffer, "Details not available"); -+ return; -+ } -+ asm volatile ("movl %%db6, %0\n":"=r" (dr6) -+ :); -+ if (dr6 & 0x4000) { -+ sprintf(buffer, "Single step"); -+ return; -+ } -+ for (i = 0; i < 4; ++i) { -+ if (dr6 & (1 << i)) { -+ sprintf(buffer, "Hardware breakpoint %d", i); -+ return; -+ } -+ } -+ sprintf(buffer, "Unknown trap"); -+ return; -+} -+ -+/* -+ * This function does all command procesing for interfacing to gdb. -+ * -+ * NOTE: The INT nn instruction leaves the state of the interrupt -+ * enable flag UNCHANGED. That means that when this routine -+ * is entered via a breakpoint (INT 3) instruction from code -+ * that has interrupts enabled, then interrupts will STILL BE -+ * enabled when this routine is entered. The first thing that -+ * we do here is disable interrupts so as to prevent recursive -+ * entries and bothersome serial interrupts while we are -+ * trying to run the serial port in polled mode. -+ * -+ * For kernel version 2.1.xx the kgdb_cli() actually gets a spin lock so -+ * it is always necessary to do a restore_flags before returning -+ * so as to let go of that lock. -+ */ -+int -+kgdb_handle_exception(int exceptionVector, -+ int signo, int err_code, struct pt_regs *linux_regs) -+{ -+ struct task_struct *usethread = NULL; -+ struct task_struct *thread_list_start = 0, *thread = NULL; -+ int addr, length; -+ int breakno, breaktype; -+ char *ptr; -+ int newPC; -+ threadref thref; -+ int threadid; -+ int thread_min = PID_MAX + MAX_NO_CPUS; -+ int maxthreads; -+ int nothreads; -+ unsigned long flags; -+ int gdb_regs[NUMREGBYTES / 4]; -+ int dr6; -+ IF_SMP(int entry_state = 0); /* 0, ok, 1, no nmi, 2 sync failed */ -+#define NO_NMI 1 -+#define NO_SYNC 2 -+#define regs (*linux_regs) -+#define NUMREGS NUMREGBYTES/4 -+ /* -+ * If the entry is not from the kernel then return to the Linux -+ * trap handler and let it process the interrupt normally. -+ */ -+ if ((linux_regs->eflags & VM_MASK) || (3 & linux_regs->xcs)) { -+ printk("ignoring non-kernel exception\n"); -+ print_regs(®s); -+ return (0); -+ } -+ -+ kgdb_local_irq_save(flags); -+ -+ /* Get kgdb spinlock */ -+ -+ KGDB_SPIN_LOCK(&kgdb_spinlock); -+ rdtscll(kgdb_info.entry_tsc); -+ /* -+ * We depend on this spinlock and the NMI watch dog to control the -+ * other cpus. They will arrive at "in_kgdb()" as a result of the -+ * NMI and will wait there for the following spin locks to be -+ * released. -+ */ -+#ifdef CONFIG_SMP -+ -+#if 0 -+ if (cpu_callout_map & ~MAX_CPU_MASK) { -+ printk("kgdb : too many cpus, possibly not mapped" -+ " in contiguous space, change MAX_NO_CPUS" -+ " in kgdb_stub and make new kernel.\n" -+ " cpu_callout_map is %lx\n", cpu_callout_map); -+ goto exit_just_unlock; -+ } -+#endif -+ if (spinlock_count == 1) { -+ int time, end_time, dum; -+ int i; -+ int cpu_logged_in[MAX_NO_CPUS] = {[0 ... MAX_NO_CPUS - 1] = (0) -+ }; -+ if (remote_debug) { -+ printk("kgdb : cpu %d entry, syncing others\n", -+ smp_processor_id()); -+ } -+ for (i = 0; i < MAX_NO_CPUS; i++) { -+ /* -+ * Use trylock as we may already hold the lock if -+ * we are holding the cpu. Net result is all -+ * locked. -+ */ -+ spin_trylock(&waitlocks[i]); -+ } -+ for (i = 0; i < MAX_NO_CPUS; i++) -+ cpu_logged_in[i] = 0; -+ /* -+ * Wait for their arrival. We know the watch dog is active if -+ * in_kgdb() has ever been called, as it is always called on a -+ * watchdog tick. -+ */ -+ rdtsc(dum, time); -+ end_time = time + 2; /* Note: we use the High order bits! */ -+ i = 1; -+ if (num_online_cpus() > 1) { -+ int me_in_kgdb = in_kgdb_entry_log[smp_processor_id()]; -+ smp_send_nmi_allbutself(); -+ while (i < num_online_cpus() && time != end_time) { -+ int j; -+ for (j = 0; j < MAX_NO_CPUS; j++) { -+ if (waiting_cpus[j].task && -+ !cpu_logged_in[j]) { -+ i++; -+ cpu_logged_in[j] = 1; -+ if (remote_debug) { -+ printk -+ ("kgdb : cpu %d arrived at kgdb\n", -+ j); -+ } -+ break; -+ } else if (!waiting_cpus[j].task && -+ !cpu_online(j)) { -+ waiting_cpus[j].task = NOCPU; -+ cpu_logged_in[j] = 1; -+ waiting_cpus[j].hold = 1; -+ break; -+ } -+ if (!waiting_cpus[j].task && -+ in_kgdb_here_log[j]) { -+ -+ int wait = 100000; -+ while (wait--) ; -+ if (!waiting_cpus[j].task && -+ in_kgdb_here_log[j]) { -+ printk -+ ("kgdb : cpu %d stall" -+ " in in_kgdb\n", -+ j); -+ i++; -+ cpu_logged_in[j] = 1; -+ waiting_cpus[j].task = -+ (struct task_struct -+ *) 1; -+ } -+ } -+ } -+ -+ if (in_kgdb_entry_log[smp_processor_id()] > -+ (me_in_kgdb + 10)) { -+ break; -+ } -+ -+ rdtsc(dum, time); -+ } -+ if (i < num_online_cpus()) { -+ printk -+ ("kgdb : time out, proceeding without sync\n"); -+#if 0 -+ printk("kgdb : Waiting_cpus: 0 = %d, 1 = %d\n", -+ waiting_cpus[0].task != 0, -+ waiting_cpus[1].task != 0); -+ printk("kgdb : Cpu_logged in: 0 = %d, 1 = %d\n", -+ cpu_logged_in[0], cpu_logged_in[1]); -+ printk -+ ("kgdb : in_kgdb_here_log in: 0 = %d, 1 = %d\n", -+ in_kgdb_here_log[0] != 0, -+ in_kgdb_here_log[1] != 0); -+#endif -+ entry_state = NO_SYNC; -+ } else { -+#if 0 -+ int ent = -+ in_kgdb_entry_log[smp_processor_id()] - -+ me_in_kgdb; -+ printk("kgdb : sync after %d entries\n", ent); -+#endif -+ } -+ } else { -+ if (remote_debug) { -+ printk -+ ("kgdb : %d cpus, but watchdog not active\n" -+ "proceeding without locking down other cpus\n", -+ num_online_cpus()); -+ entry_state = NO_NMI; -+ } -+ } -+ } -+#endif -+ -+ if (remote_debug) { -+ unsigned long *lp = (unsigned long *) &linux_regs; -+ -+ printk("handle_exception(exceptionVector=%d, " -+ "signo=%d, err_code=%d, linux_regs=%p)\n", -+ exceptionVector, signo, err_code, linux_regs); -+ if (debug_regs) { -+ print_regs(®s); -+ printk("Stk: %8lx %8lx %8lx %8lx" -+ " %8lx %8lx %8lx %8lx\n", -+ lp[0], lp[1], lp[2], lp[3], -+ lp[4], lp[5], lp[6], lp[7]); -+ printk(" %8lx %8lx %8lx %8lx" -+ " %8lx %8lx %8lx %8lx\n", -+ lp[8], lp[9], lp[10], lp[11], -+ lp[12], lp[13], lp[14], lp[15]); -+ printk(" %8lx %8lx %8lx %8lx " -+ "%8lx %8lx %8lx %8lx\n", -+ lp[16], lp[17], lp[18], lp[19], -+ lp[20], lp[21], lp[22], lp[23]); -+ printk(" %8lx %8lx %8lx %8lx " -+ "%8lx %8lx %8lx %8lx\n", -+ lp[24], lp[25], lp[26], lp[27], -+ lp[28], lp[29], lp[30], lp[31]); -+ } -+ } -+ -+ /* Disable hardware debugging while we are in kgdb */ -+ /* Get the debug register status register */ -+/* *INDENT-OFF* */ -+ __asm__("movl %0,%%db7" -+ : /* no output */ -+ :"r"(0)); -+ -+ asm volatile ("movl %%db6, %0\n" -+ :"=r" (hw_breakpoint_status) -+ :); -+ -+/* *INDENT-ON* */ -+ switch (exceptionVector) { -+ case 0: /* divide error */ -+ case 1: /* debug exception */ -+ case 2: /* NMI */ -+ case 3: /* breakpoint */ -+ case 4: /* overflow */ -+ case 5: /* bounds check */ -+ case 6: /* invalid opcode */ -+ case 7: /* device not available */ -+ case 8: /* double fault (errcode) */ -+ case 10: /* invalid TSS (errcode) */ -+ case 12: /* stack fault (errcode) */ -+ case 16: /* floating point error */ -+ case 17: /* alignment check (errcode) */ -+ default: /* any undocumented */ -+ break; -+ case 11: /* segment not present (errcode) */ -+ case 13: /* general protection (errcode) */ -+ case 14: /* page fault (special errcode) */ -+ case 19: /* cache flush denied */ -+ if (mem_err_expected) { -+ /* -+ * This fault occured because of the -+ * get_char or set_char routines. These -+ * two routines use either eax of edx to -+ * indirectly reference the location in -+ * memory that they are working with. -+ * For a page fault, when we return the -+ * instruction will be retried, so we -+ * have to make sure that these -+ * registers point to valid memory. -+ */ -+ mem_err = 1; /* set mem error flag */ -+ mem_err_expected = 0; -+ mem_err_cnt++; /* helps in debugging */ -+ /* make valid address */ -+ regs.eax = (long) &garbage_loc; -+ /* make valid address */ -+ regs.edx = (long) &garbage_loc; -+ if (remote_debug) -+ printk("Return after memory error: " -+ "mem_err_cnt=%d\n", mem_err_cnt); -+ if (debug_regs) -+ print_regs(®s); -+ goto exit_kgdb; -+ } -+ break; -+ } -+ if (remote_debug) -+ printk("kgdb : entered kgdb on cpu %d\n", smp_processor_id()); -+ -+ gdb_i386vector = exceptionVector; -+ gdb_i386errcode = err_code; -+ kgdb_info.called_from = __builtin_return_address(0); -+#ifdef CONFIG_SMP -+ /* -+ * OK, we can now communicate, lets tell gdb about the sync. -+ * but only if we had a problem. -+ */ -+ switch (entry_state) { -+ case NO_NMI: -+ to_gdb("NMI not active, other cpus not stopped\n"); -+ break; -+ case NO_SYNC: -+ to_gdb("Some cpus not stopped, see 'kgdb_info' for details\n"); -+ default:; -+ } -+ -+#endif -+/* -+ * Set up the gdb function call area. -+ */ -+ trap_cpu = smp_processor_id(); -+ OLD_esp = NEW_esp = (int) (&linux_regs->esp); -+ -+ IF_SMP(once_again:) -+ /* reply to host that an exception has occurred */ -+ remcomOutBuffer[0] = 'S'; -+ remcomOutBuffer[1] = hexchars[signo >> 4]; -+ remcomOutBuffer[2] = hexchars[signo % 16]; -+ remcomOutBuffer[3] = 0; -+ -+ putpacket(remcomOutBuffer); -+ -+ while (1 == 1) { -+ error = 0; -+ remcomOutBuffer[0] = 0; -+ getpacket(remcomInBuffer); -+ switch (remcomInBuffer[0]) { -+ case '?': -+ remcomOutBuffer[0] = 'S'; -+ remcomOutBuffer[1] = hexchars[signo >> 4]; -+ remcomOutBuffer[2] = hexchars[signo % 16]; -+ remcomOutBuffer[3] = 0; -+ break; -+ case 'd': -+ remote_debug = !(remote_debug); /* toggle debug flag */ -+ printk("Remote debug %s\n", -+ remote_debug ? "on" : "off"); -+ break; -+ case 'g': /* return the value of the CPU registers */ -+ get_gdb_regs(usethread, ®s, gdb_regs); -+ mem2hex((char *) gdb_regs, -+ remcomOutBuffer, NUMREGBYTES, 0); -+ break; -+ case 'G': /* set the value of the CPU registers - return OK */ -+ hex2mem(&remcomInBuffer[1], -+ (char *) gdb_regs, NUMREGBYTES, 0); -+ if (!usethread || usethread == current) { -+ gdb_regs_to_regs(gdb_regs, ®s); -+ strcpy(remcomOutBuffer, "OK"); -+ } else { -+ strcpy(remcomOutBuffer, "E00"); -+ } -+ break; -+ -+ case 'P':{ /* set the value of a single CPU register - -+ return OK */ -+ /* -+ * For some reason, gdb wants to talk about psudo -+ * registers (greater than 15). These may have -+ * meaning for ptrace, but for us it is safe to -+ * ignor them. We do this by dumping them into -+ * _GS which we also ignor, but do have memory for. -+ */ -+ int regno; -+ -+ ptr = &remcomInBuffer[1]; -+ regs_to_gdb_regs(gdb_regs, ®s); -+ if ((!usethread || usethread == current) && -+ hexToInt(&ptr, ®no) && -+ *ptr++ == '=' && (regno >= 0)) { -+ regno = -+ (regno >= NUMREGS ? _GS : regno); -+ hex2mem(ptr, (char *) &gdb_regs[regno], -+ 4, 0); -+ gdb_regs_to_regs(gdb_regs, ®s); -+ strcpy(remcomOutBuffer, "OK"); -+ break; -+ } -+ strcpy(remcomOutBuffer, "E01"); -+ break; -+ } -+ -+ /* mAA..AA,LLLL Read LLLL bytes at address AA..AA */ -+ case 'm': -+ /* TRY TO READ %x,%x. IF SUCCEED, SET PTR = 0 */ -+ ptr = &remcomInBuffer[1]; -+ if (hexToInt(&ptr, &addr) && -+ (*(ptr++) == ',') && (hexToInt(&ptr, &length))) { -+ ptr = 0; -+ /* -+ * hex doubles the byte count -+ */ -+ if (length > (BUFMAX / 2)) -+ length = BUFMAX / 2; -+ mem2hex((char *) addr, -+ remcomOutBuffer, length, 1); -+ if (mem_err) { -+ strcpy(remcomOutBuffer, "E03"); -+ debug_error("memory fault\n", NULL); -+ } -+ } -+ -+ if (ptr) { -+ strcpy(remcomOutBuffer, "E01"); -+ debug_error -+ ("malformed read memory command: %s\n", -+ remcomInBuffer); -+ } -+ break; -+ -+ /* MAA..AA,LLLL: -+ Write LLLL bytes at address AA.AA return OK */ -+ case 'M': -+ /* TRY TO READ '%x,%x:'. IF SUCCEED, SET PTR = 0 */ -+ ptr = &remcomInBuffer[1]; -+ if (hexToInt(&ptr, &addr) && -+ (*(ptr++) == ',') && -+ (hexToInt(&ptr, &length)) && (*(ptr++) == ':')) { -+ hex2mem(ptr, (char *) addr, length, 1); -+ -+ if (mem_err) { -+ strcpy(remcomOutBuffer, "E03"); -+ debug_error("memory fault\n", NULL); -+ } else { -+ strcpy(remcomOutBuffer, "OK"); -+ } -+ -+ ptr = 0; -+ } -+ if (ptr) { -+ strcpy(remcomOutBuffer, "E02"); -+ debug_error -+ ("malformed write memory command: %s\n", -+ remcomInBuffer); -+ } -+ break; -+ -+ /* cAA..AA Continue at address AA..AA(optional) */ -+ /* sAA..AA Step one instruction from AA..AA(optional) */ -+ /* D detach, reply OK and then continue */ -+ case 'c': -+ case 's': -+ case 'D': -+ -+ /* try to read optional parameter, -+ pc unchanged if no parm */ -+ ptr = &remcomInBuffer[1]; -+ if (hexToInt(&ptr, &addr)) { -+ if (remote_debug) -+ printk("Changing EIP to 0x%x\n", addr); -+ -+ regs.eip = addr; -+ } -+ -+ newPC = regs.eip; -+ -+ /* clear the trace bit */ -+ regs.eflags &= 0xfffffeff; -+ -+ /* set the trace bit if we're stepping */ -+ if (remcomInBuffer[0] == 's') -+ regs.eflags |= 0x100; -+ -+ /* detach is a friendly version of continue. Note that -+ debugging is still enabled (e.g hit control C) -+ until the process that issued an ioctl TIOCGDB -+ terminates -+ */ -+ if (remcomInBuffer[0] == 'D') { -+ strcpy(remcomOutBuffer, "OK"); -+ putpacket(remcomOutBuffer); -+ } -+ -+ if (remote_debug) { -+ printk("Resuming execution\n"); -+ print_regs(®s); -+ } -+ asm volatile ("movl %%db6, %0\n":"=r" (dr6) -+ :); -+ if (!(dr6 & 0x4000)) { -+ for (breakno = 0; breakno < 4; ++breakno) { -+ if (dr6 & (1 << breakno) && -+ (breakinfo[breakno].type == 0)) { -+ /* Set restore flag */ -+ regs.eflags |= 0x10000; -+ break; -+ } -+ } -+ } -+ correct_hw_break(); -+ asm volatile ("movl %0, %%db6\n"::"r" (0)); -+ goto exit_kgdb; -+ -+ /* kill the program */ -+ case 'k': /* do nothing */ -+ break; -+ -+ /* query */ -+ case 'q': -+ switch (remcomInBuffer[1]) { -+ case 'L': -+ /* List threads */ -+ thread_list = 2; -+ thread_list_start = (usethread ? : current); -+ unpack_byte(remcomInBuffer + 3, &maxthreads); -+ unpack_threadid(remcomInBuffer + 5, &thref); -+ do { -+ int buf_thread_limit = -+ (BUFMAX - 22) / BUF_THREAD_ID_SIZE; -+ if (maxthreads > buf_thread_limit) { -+ maxthreads = buf_thread_limit; -+ } -+ } while (0); -+ remcomOutBuffer[0] = 'q'; -+ remcomOutBuffer[1] = 'M'; -+ remcomOutBuffer[4] = '0'; -+ pack_threadid(remcomOutBuffer + 5, &thref); -+ -+ threadid = threadref_to_int(&thref); -+ for (nothreads = 0; -+ nothreads < maxthreads && -+ threadid < PID_MAX + MAX_NO_CPUS; -+ threadid++) { -+ thread = getthread(threadid); -+ if (thread) { -+ int_to_threadref(&thref, -+ threadid); -+ pack_threadid(remcomOutBuffer + -+ 21 + -+ nothreads * 16, -+ &thref); -+ nothreads++; -+ if (thread_min > threadid) -+ thread_min = threadid; -+ } -+ } -+ -+ if (threadid == PID_MAX + MAX_NO_CPUS) { -+ remcomOutBuffer[4] = '1'; -+ } -+ pack_hex_byte(remcomOutBuffer + 2, nothreads); -+ remcomOutBuffer[21 + nothreads * 16] = '\0'; -+ break; -+ -+ case 'C': -+ /* Current thread id */ -+ remcomOutBuffer[0] = 'Q'; -+ remcomOutBuffer[1] = 'C'; -+ threadid = current->pid; -+ if (!threadid) { -+ /* -+ * idle thread -+ */ -+ for (threadid = PID_MAX; -+ threadid < PID_MAX + MAX_NO_CPUS; -+ threadid++) { -+ if (current == -+ idle_task(threadid - -+ PID_MAX)) -+ break; -+ } -+ } -+ int_to_threadref(&thref, threadid); -+ pack_threadid(remcomOutBuffer + 2, &thref); -+ remcomOutBuffer[18] = '\0'; -+ break; -+ -+ case 'E': -+ /* Print exception info */ -+ printexceptioninfo(exceptionVector, -+ err_code, remcomOutBuffer); -+ break; -+ } -+ break; -+ -+ /* task related */ -+ case 'H': -+ switch (remcomInBuffer[1]) { -+ case 'g': -+ ptr = &remcomInBuffer[2]; -+ hexToInt(&ptr, &threadid); -+ thread = getthread(threadid); -+ if (!thread) { -+ remcomOutBuffer[0] = 'E'; -+ remcomOutBuffer[1] = '\0'; -+ break; -+ } -+ /* -+ * Just in case I forget what this is all about, -+ * the "thread info" command to gdb causes it -+ * to ask for a thread list. It then switches -+ * to each thread and asks for the registers. -+ * For this (and only this) usage, we want to -+ * fudge the registers of tasks not on the run -+ * list (i.e. waiting) to show the routine that -+ * called schedule. Also, gdb, is a minimalist -+ * in that if the current thread is the last -+ * it will not re-read the info when done. -+ * This means that in this case we must show -+ * the real registers. So here is how we do it: -+ * Each entry we keep track of the min -+ * thread in the list (the last that gdb will) -+ * get info for. We also keep track of the -+ * starting thread. -+ * "thread_list" is cleared when switching back -+ * to the min thread if it is was current, or -+ * if it was not current, thread_list is set -+ * to 1. When the switch to current comes, -+ * if thread_list is 1, clear it, else do -+ * nothing. -+ */ -+ usethread = thread; -+ if ((thread_list == 1) && -+ (thread == thread_list_start)) { -+ thread_list = 0; -+ } -+ if (thread_list && (threadid == thread_min)) { -+ if (thread == thread_list_start) { -+ thread_list = 0; -+ } else { -+ thread_list = 1; -+ } -+ } -+ /* follow through */ -+ case 'c': -+ remcomOutBuffer[0] = 'O'; -+ remcomOutBuffer[1] = 'K'; -+ remcomOutBuffer[2] = '\0'; -+ break; -+ } -+ break; -+ -+ /* Query thread status */ -+ case 'T': -+ ptr = &remcomInBuffer[1]; -+ hexToInt(&ptr, &threadid); -+ thread = getthread(threadid); -+ if (thread) { -+ remcomOutBuffer[0] = 'O'; -+ remcomOutBuffer[1] = 'K'; -+ remcomOutBuffer[2] = '\0'; -+ if (thread_min > threadid) -+ thread_min = threadid; -+ } else { -+ remcomOutBuffer[0] = 'E'; -+ remcomOutBuffer[1] = '\0'; -+ } -+ break; -+ -+ case 'Y': -+ ptr = &remcomInBuffer[1]; -+ hexToInt(&ptr, &breakno); -+ ptr++; -+ hexToInt(&ptr, &breaktype); -+ ptr++; -+ hexToInt(&ptr, &length); -+ ptr++; -+ hexToInt(&ptr, &addr); -+ if (set_hw_break(breakno & 0x3, -+ breaktype & 0x3, -+ length & 0x3, addr) == 0) { -+ strcpy(remcomOutBuffer, "OK"); -+ } else { -+ strcpy(remcomOutBuffer, "ERROR"); -+ } -+ break; -+ -+ /* Remove hardware breakpoint */ -+ case 'y': -+ ptr = &remcomInBuffer[1]; -+ hexToInt(&ptr, &breakno); -+ if (remove_hw_break(breakno & 0x3) == 0) { -+ strcpy(remcomOutBuffer, "OK"); -+ } else { -+ strcpy(remcomOutBuffer, "ERROR"); -+ } -+ break; -+ -+ case 'r': /* reboot */ -+ strcpy(remcomOutBuffer, "OK"); -+ putpacket(remcomOutBuffer); -+ /*to_gdb("Rebooting\n"); */ -+ /* triplefault no return from here */ -+ { -+ static long no_idt[2]; -+ __asm__ __volatile__("lidt %0"::"m"(no_idt)); -+ BREAKPOINT; -+ } -+ -+ } /* switch */ -+ -+ /* reply to the request */ -+ putpacket(remcomOutBuffer); -+ } /* while(1==1) */ -+ /* -+ * reached by goto only. -+ */ -+ exit_kgdb: -+ /* -+ * Here is where we set up to trap a gdb function call. NEW_esp -+ * will be changed if we are trying to do this. We handle both -+ * adding and subtracting, thus allowing gdb to put grung on -+ * the stack which it removes later. -+ */ -+ if (NEW_esp != OLD_esp) { -+ int *ptr = END_OF_LOOKASIDE; -+ if (NEW_esp < OLD_esp) -+ ptr -= (OLD_esp - NEW_esp) / sizeof (int); -+ *--ptr = linux_regs->eflags; -+ *--ptr = linux_regs->xcs; -+ *--ptr = linux_regs->eip; -+ *--ptr = linux_regs->ecx; -+ *--ptr = linux_regs->ebx; -+ *--ptr = linux_regs->eax; -+ linux_regs->ecx = NEW_esp - (sizeof (int) * 6); -+ linux_regs->ebx = (unsigned int) END_OF_LOOKASIDE; -+ if (NEW_esp < OLD_esp) { -+ linux_regs->eip = (unsigned int) fn_call_stub; -+ } else { -+ linux_regs->eip = (unsigned int) fn_rtn_stub; -+ linux_regs->eax = NEW_esp; -+ } -+ linux_regs->eflags &= ~(IF_BIT | TF_BIT); -+ } -+#ifdef CONFIG_SMP -+ /* -+ * Release gdb wait locks -+ * Sanity check time. Must have at least one cpu to run. Also single -+ * step must not be done if the current cpu is on hold. -+ */ -+ if (spinlock_count == 1) { -+ int ss_hold = (regs.eflags & 0x100) && kgdb_info.hold_on_sstep; -+ int cpu_avail = 0; -+ int i; -+ -+ for (i = 0; i < MAX_NO_CPUS; i++) { -+ if (!cpu_online(i)) -+ break; -+ if (!hold_cpu(i)) { -+ cpu_avail = 1; -+ } -+ } -+ /* -+ * Early in the bring up there will be NO cpus on line... -+ */ -+ if (!cpu_avail && !cpus_empty(cpu_online_map)) { -+ to_gdb("No cpus unblocked, see 'kgdb_info.hold_cpu'\n"); -+ goto once_again; -+ } -+ if (hold_cpu(smp_processor_id()) && (regs.eflags & 0x100)) { -+ to_gdb -+ ("Current cpu must be unblocked to single step\n"); -+ goto once_again; -+ } -+ if (!(ss_hold)) { -+ int i; -+ for (i = 0; i < MAX_NO_CPUS; i++) { -+ if (!hold_cpu(i)) { -+ spin_unlock(&waitlocks[i]); -+ } -+ } -+ } else { -+ spin_unlock(&waitlocks[smp_processor_id()]); -+ } -+ /* Release kgdb spinlock */ -+ KGDB_SPIN_UNLOCK(&kgdb_spinlock); -+ /* -+ * If this cpu is on hold, this is where we -+ * do it. Note, the NMI will pull us out of here, -+ * but will return as the above lock is not held. -+ * We will stay here till another cpu releases the lock for us. -+ */ -+ spin_unlock_wait(waitlocks + smp_processor_id()); -+ kgdb_local_irq_restore(flags); -+ return (0); -+ } -+#if 0 -+exit_just_unlock: -+#endif -+#endif -+ /* Release kgdb spinlock */ -+ KGDB_SPIN_UNLOCK(&kgdb_spinlock); -+ kgdb_local_irq_restore(flags); -+ return (0); -+} -+ -+/* this function is used to set up exception handlers for tracing and -+ * breakpoints. -+ * This function is not needed as the above line does all that is needed. -+ * We leave it for backward compatitability... -+ */ -+void -+set_debug_traps(void) -+{ -+ /* -+ * linux_debug_hook is defined in traps.c. We store a pointer -+ * to our own exception handler into it. -+ -+ * But really folks, every hear of labeled common, an old Fortran -+ * concept. Lots of folks can reference it and it is define if -+ * anyone does. Only one can initialize it at link time. We do -+ * this with the hook. See the statement above. No need for any -+ * executable code and it is ready as soon as the kernel is -+ * loaded. Very desirable in kernel debugging. -+ -+ linux_debug_hook = handle_exception ; -+ */ -+ -+ /* In case GDB is started before us, ack any packets (presumably -+ "$?#xx") sitting there. -+ putDebugChar ('+'); -+ -+ initialized = 1; -+ */ -+} -+ -+/* This function will generate a breakpoint exception. It is used at the -+ beginning of a program to sync up with a debugger and can be used -+ otherwise as a quick means to stop program execution and "break" into -+ the debugger. */ -+/* But really, just use the BREAKPOINT macro. We will handle the int stuff -+ */ -+ -+#ifdef later -+/* -+ * possibly we should not go thru the traps.c code at all? Someday. -+ */ -+void -+do_kgdb_int3(struct pt_regs *regs, long error_code) -+{ -+ kgdb_handle_exception(3, 5, error_code, regs); -+ return; -+} -+#endif -+#undef regs -+#ifdef CONFIG_TRAP_BAD_SYSCALL_EXITS -+asmlinkage void -+bad_sys_call_exit(int stuff) -+{ -+ struct pt_regs *regs = (struct pt_regs *) &stuff; -+ printk("Sys call %d return with %x preempt_count\n", -+ (int) regs->orig_eax, preempt_count()); -+} -+#endif -+#ifdef CONFIG_STACK_OVERFLOW_TEST -+#include -+asmlinkage void -+stack_overflow(void) -+{ -+#ifdef BREAKPOINT -+ BREAKPOINT; -+#else -+ printk("Kernel stack overflow, looping forever\n"); -+#endif -+ while (1) { -+ } -+} -+#endif -+ -+#if defined(CONFIG_SMP) || defined(CONFIG_KGDB_CONSOLE) -+char gdbconbuf[BUFMAX]; -+ -+static void -+kgdb_gdb_message(const char *s, unsigned count) -+{ -+ int i; -+ int wcount; -+ char *bufptr; -+ /* -+ * This takes care of NMI while spining out chars to gdb -+ */ -+ IF_SMP(in_kgdb_console = 1); -+ gdbconbuf[0] = 'O'; -+ bufptr = gdbconbuf + 1; -+ while (count > 0) { -+ if ((count << 1) > (BUFMAX - 2)) { -+ wcount = (BUFMAX - 2) >> 1; -+ } else { -+ wcount = count; -+ } -+ count -= wcount; -+ for (i = 0; i < wcount; i++) { -+ bufptr = pack_hex_byte(bufptr, s[i]); -+ } -+ *bufptr = '\0'; -+ s += wcount; -+ -+ putpacket(gdbconbuf); -+ -+ } -+ IF_SMP(in_kgdb_console = 0); -+} -+#endif -+#ifdef CONFIG_SMP -+static void -+to_gdb(const char *s) -+{ -+ int count = 0; -+ while (s[count] && (count++ < BUFMAX)) ; -+ kgdb_gdb_message(s, count); -+} -+#endif -+#ifdef CONFIG_KGDB_CONSOLE -+#include -+#include -+#include -+#include -+#include -+ -+void -+kgdb_console_write(struct console *co, const char *s, unsigned count) -+{ -+ -+ if (gdb_i386vector == -1) { -+ /* -+ * We have not yet talked to gdb. What to do... -+ * lets break, on continue we can do the write. -+ * But first tell him whats up. Uh, well no can do, -+ * as this IS the console. Oh well... -+ * We do need to wait or the messages will be lost. -+ * Other option would be to tell the above code to -+ * ignore this breakpoint and do an auto return, -+ * but that might confuse gdb. Also this happens -+ * early enough in boot up that we don't have the traps -+ * set up yet, so... -+ */ -+ breakpoint(); -+ } -+ kgdb_gdb_message(s, count); -+} -+ -+/* -+ * ------------------------------------------------------------ -+ * Serial KGDB driver -+ * ------------------------------------------------------------ -+ */ -+ -+static struct console kgdbcons = { -+ name:"kgdb", -+ write:kgdb_console_write, -+#ifdef CONFIG_KGDB_USER_CONSOLE -+ device:kgdb_console_device, -+#endif -+ flags:CON_PRINTBUFFER | CON_ENABLED, -+ index:-1, -+}; -+ -+/* -+ * The trick here is that this file gets linked before printk.o -+ * That means we get to peer at the console info in the command -+ * line before it does. If we are up, we register, otherwise, -+ * do nothing. By returning 0, we allow printk to look also. -+ */ -+static int kgdb_console_enabled; -+ -+int __init -+kgdb_console_init(char *str) -+{ -+ if ((strncmp(str, "kgdb", 4) == 0) || (strncmp(str, "gdb", 3) == 0)) { -+ register_console(&kgdbcons); -+ kgdb_console_enabled = 1; -+ } -+ return 0; /* let others look at the string */ -+} -+ -+__setup("console=", kgdb_console_init); -+ -+#ifdef CONFIG_KGDB_USER_CONSOLE -+static kdev_t kgdb_console_device(struct console *c); -+/* This stuff sort of works, but it knocks out telnet devices -+ * we are leaving it here in case we (or you) find time to figure it out -+ * better.. -+ */ -+ -+/* -+ * We need a real char device as well for when the console is opened for user -+ * space activities. -+ */ -+ -+static int -+kgdb_consdev_open(struct inode *inode, struct file *file) -+{ -+ return 0; -+} -+ -+static ssize_t -+kgdb_consdev_write(struct file *file, const char *buf, -+ size_t count, loff_t * ppos) -+{ -+ int size, ret = 0; -+ static char kbuf[128]; -+ static DECLARE_MUTEX(sem); -+ -+ /* We are not reentrant... */ -+ if (down_interruptible(&sem)) -+ return -ERESTARTSYS; -+ -+ while (count > 0) { -+ /* need to copy the data from user space */ -+ size = count; -+ if (size > sizeof (kbuf)) -+ size = sizeof (kbuf); -+ if (copy_from_user(kbuf, buf, size)) { -+ ret = -EFAULT; -+ break;; -+ } -+ kgdb_console_write(&kgdbcons, kbuf, size); -+ count -= size; -+ ret += size; -+ buf += size; -+ } -+ -+ up(&sem); -+ -+ return ret; -+} -+ -+struct file_operations kgdb_consdev_fops = { -+ open:kgdb_consdev_open, -+ write:kgdb_consdev_write -+}; -+static kdev_t -+kgdb_console_device(struct console *c) -+{ -+ return MKDEV(TTYAUX_MAJOR, 1); -+} -+ -+/* -+ * This routine gets called from the serial stub in the i386/lib -+ * This is so it is done late in bring up (just before the console open). -+ */ -+void -+kgdb_console_finit(void) -+{ -+ if (kgdb_console_enabled) { -+ char *cptr = cdevname(MKDEV(TTYAUX_MAJOR, 1)); -+ char *cp = cptr; -+ while (*cptr && *cptr != '(') -+ cptr++; -+ *cptr = 0; -+ unregister_chrdev(TTYAUX_MAJOR, cp); -+ register_chrdev(TTYAUX_MAJOR, "kgdb", &kgdb_consdev_fops); -+ } -+} -+#endif -+#endif -+#ifdef CONFIG_KGDB_TS -+#include /* time stamp code */ -+#include /* in_interrupt */ -+#ifdef CONFIG_KGDB_TS_64 -+#define DATA_POINTS 64 -+#endif -+#ifdef CONFIG_KGDB_TS_128 -+#define DATA_POINTS 128 -+#endif -+#ifdef CONFIG_KGDB_TS_256 -+#define DATA_POINTS 256 -+#endif -+#ifdef CONFIG_KGDB_TS_512 -+#define DATA_POINTS 512 -+#endif -+#ifdef CONFIG_KGDB_TS_1024 -+#define DATA_POINTS 1024 -+#endif -+#ifndef DATA_POINTS -+#define DATA_POINTS 128 /* must be a power of two */ -+#endif -+#define INDEX_MASK (DATA_POINTS - 1) -+#if (INDEX_MASK & DATA_POINTS) -+#error "CONFIG_KGDB_TS_COUNT must be a power of 2" -+#endif -+struct kgdb_and_then_struct { -+#ifdef CONFIG_SMP -+ int on_cpu; -+#endif -+ struct task_struct *task; -+ long long at_time; -+ int from_ln; -+ char *in_src; -+ void *from; -+ int *with_shpf; -+ int data0; -+ int data1; -+}; -+struct kgdb_and_then_struct2 { -+#ifdef CONFIG_SMP -+ int on_cpu; -+#endif -+ struct task_struct *task; -+ long long at_time; -+ int from_ln; -+ char *in_src; -+ void *from; -+ int *with_shpf; -+ struct task_struct *t1; -+ struct task_struct *t2; -+}; -+struct kgdb_and_then_struct kgdb_data[DATA_POINTS]; -+ -+struct kgdb_and_then_struct *kgdb_and_then = &kgdb_data[0]; -+int kgdb_and_then_count; -+ -+void -+kgdb_tstamp(int line, char *source, int data0, int data1) -+{ -+ static spinlock_t ts_spin = SPIN_LOCK_UNLOCKED; -+ int flags; -+ kgdb_local_irq_save(flags); -+ spin_lock(&ts_spin); -+ rdtscll(kgdb_and_then->at_time); -+#ifdef CONFIG_SMP -+ kgdb_and_then->on_cpu = smp_processor_id(); -+#endif -+ kgdb_and_then->task = current; -+ kgdb_and_then->from_ln = line; -+ kgdb_and_then->in_src = source; -+ kgdb_and_then->from = __builtin_return_address(0); -+ kgdb_and_then->with_shpf = (int *) (((flags & IF_BIT) >> 9) | -+ (preempt_count() << 8)); -+ kgdb_and_then->data0 = data0; -+ kgdb_and_then->data1 = data1; -+ kgdb_and_then = &kgdb_data[++kgdb_and_then_count & INDEX_MASK]; -+ spin_unlock(&ts_spin); -+ kgdb_local_irq_restore(flags); -+#ifdef CONFIG_PREEMPT -+ -+#endif -+ return; -+} -+#endif -+typedef int gdb_debug_hook(int exceptionVector, -+ int signo, int err_code, struct pt_regs *linux_regs); -+gdb_debug_hook *linux_debug_hook = &kgdb_handle_exception; /* histerical reasons... */ ---- linux-2.6.0-test1/arch/i386/kernel/ldt.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/arch/i386/kernel/ldt.c 2003-07-19 17:04:06.000000000 -0700 -@@ -56,9 +56,11 @@ static int alloc_ldt(mm_context_t *pc, i - - if (reload) { - #ifdef CONFIG_SMP -+ cpumask_t mask; - preempt_disable(); - load_LDT(pc); -- if (current->mm->cpu_vm_mask != (1 << smp_processor_id())) -+ mask = cpumask_of_cpu(smp_processor_id()); -+ if (!cpus_equal(current->mm->cpu_vm_mask, mask)) - smp_call_function(flush_ldt, 0, 1, 1); - preempt_enable(); - #else ---- linux-2.6.0-test1/arch/i386/kernel/Makefile 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/i386/kernel/Makefile 2003-07-19 17:04:02.000000000 -0700 -@@ -14,6 +14,7 @@ obj-y += timers/ - obj-$(CONFIG_ACPI) += acpi/ - obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o - obj-$(CONFIG_MCA) += mca.o -+obj-$(CONFIG_KGDB) += kgdb_stub.o - obj-$(CONFIG_X86_MSR) += msr.o - obj-$(CONFIG_X86_CPUID) += cpuid.o - obj-$(CONFIG_MICROCODE) += microcode.o ---- linux-2.6.0-test1/arch/i386/kernel/mpparse.c 2003-06-16 22:32:20.000000000 -0700 -+++ 25/arch/i386/kernel/mpparse.c 2003-07-19 17:04:06.000000000 -0700 -@@ -71,7 +71,7 @@ unsigned int boot_cpu_logical_apicid = - - static unsigned int __initdata num_processors; - - /* Bitmask of physically existing CPUs */ --unsigned long phys_cpu_present_map; -+physid_mask_t phys_cpu_present_map; - - u8 bios_cpu_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; - -@@ -106,6 +106,7 @@ static struct mpc_config_translation *tr - void __init MP_processor_info (struct mpc_config_processor *m) - { - int ver, apicid; -+ physid_mask_t tmp; - - if (!(m->mpc_cpuflag & CPU_ENABLED)) - return; -@@ -176,7 +177,8 @@ void __init MP_processor_info (struct mp - } - ver = m->mpc_apicver; - -- phys_cpu_present_map |= apicid_to_cpu_present(apicid); -+ tmp = apicid_to_cpu_present(apicid); -+ physids_or(phys_cpu_present_map, phys_cpu_present_map, tmp); - - /* - * Validate version ---- linux-2.6.0-test1/arch/i386/kernel/msr.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/arch/i386/kernel/msr.c 2003-07-19 17:04:06.000000000 -0700 -@@ -242,7 +242,7 @@ static int msr_open(struct inode *inode, - int cpu = minor(file->f_dentry->d_inode->i_rdev); - struct cpuinfo_x86 *c = &(cpu_data)[cpu]; - -- if ( !(cpu_online_map & (1UL << cpu)) ) -+ if (!cpu_online(cpu)) - return -ENXIO; /* No such CPU */ - if ( !cpu_has(c, X86_FEATURE_MSR) ) - return -EIO; /* MSR not supported */ ---- linux-2.6.0-test1/arch/i386/kernel/nmi.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/i386/kernel/nmi.c 2003-07-19 17:04:02.000000000 -0700 -@@ -31,7 +31,17 @@ - #include - #include - -+#ifdef CONFIG_KGDB -+#include -+#ifdef CONFIG_SMP -+unsigned int nmi_watchdog = NMI_IO_APIC; -+#else -+unsigned int nmi_watchdog = NMI_LOCAL_APIC; -+#endif -+#else - unsigned int nmi_watchdog = NMI_NONE; -+#endif -+ - static unsigned int nmi_hz = HZ; - unsigned int nmi_perfctr_msr; /* the MSR to reset in NMI handler */ - extern void show_registers(struct pt_regs *regs); -@@ -396,6 +406,9 @@ void touch_nmi_watchdog (void) - for (i = 0; i < NR_CPUS; i++) - alert_counter[i] = 0; - } -+#ifdef CONFIG_KGDB -+int tune_watchdog = 5*HZ; -+#endif - - void nmi_watchdog_tick (struct pt_regs * regs) - { -@@ -409,12 +422,24 @@ void nmi_watchdog_tick (struct pt_regs * - - sum = irq_stat[cpu].apic_timer_irqs; - -+#ifdef CONFIG_KGDB -+ if (! in_kgdb(regs) && last_irq_sums[cpu] == sum ) { -+ -+#else - if (last_irq_sums[cpu] == sum) { -+#endif - /* - * Ayiee, looks like this CPU is stuck ... - * wait a few IRQs (5 seconds) before doing the oops ... - */ - alert_counter[cpu]++; -+#ifdef CONFIG_KGDB -+ if (alert_counter[cpu] == tune_watchdog) { -+ kgdb_handle_exception(2, SIGPWR, 0, regs); -+ last_irq_sums[cpu] = sum; -+ alert_counter[cpu] = 0; -+ } -+#endif - if (alert_counter[cpu] == 5*nmi_hz) { - spin_lock(&nmi_print_lock); - /* ---- linux-2.6.0-test1/arch/i386/kernel/reboot.c 2003-06-14 12:18:06.000000000 -0700 -+++ 25/arch/i386/kernel/reboot.c 2003-07-19 17:04:06.000000000 -0700 -@@ -226,7 +226,7 @@ void machine_restart(char * __unused) - if its not, default to the BSP */ - if ((reboot_cpu == -1) || - (reboot_cpu > (NR_CPUS -1)) || -- !(phys_cpu_present_map & (1< - #include - #include -+#include - #include "setup_arch_pre.h" - #include "mach_resources.h" - -@@ -100,7 +101,7 @@ extern void early_cpu_init(void); - extern void dmi_scan_machine(void); - extern void generic_apic_probe(char *); - extern int root_mountflags; --extern char _text, _etext, _edata, _end; -+extern char _end[]; - - unsigned long saved_videomode; - -@@ -520,7 +521,7 @@ static void __init parse_cmdline_early ( - acpi_disabled = 1; - - /* "acpismp=force" turns on ACPI again */ -- else if (!memcmp(from, "acpismp=force", 14)) -+ if (c == ' ' && !memcmp(from, "acpismp=force", 13)) - acpi_disabled = 0; - - /* -@@ -676,7 +677,7 @@ static unsigned long __init setup_memory - * partially used pages are not usable - thus - * we are rounding upwards: - */ -- start_pfn = PFN_UP(__pa(&_end)); -+ start_pfn = PFN_UP(__pa(_end)); - - find_max_pfn(); - -@@ -947,15 +948,15 @@ void __init setup_arch(char **cmdline_p) - - if (!MOUNT_ROOT_RDONLY) - root_mountflags &= ~MS_RDONLY; -- init_mm.start_code = (unsigned long) &_text; -- init_mm.end_code = (unsigned long) &_etext; -- init_mm.end_data = (unsigned long) &_edata; -- init_mm.brk = (unsigned long) &_end; -- -- code_resource.start = virt_to_phys(&_text); -- code_resource.end = virt_to_phys(&_etext)-1; -- data_resource.start = virt_to_phys(&_etext); -- data_resource.end = virt_to_phys(&_edata)-1; -+ init_mm.start_code = (unsigned long) _text; -+ init_mm.end_code = (unsigned long) _etext; -+ init_mm.end_data = (unsigned long) _edata; -+ init_mm.brk = (unsigned long) _end; -+ -+ code_resource.start = virt_to_phys(_text); -+ code_resource.end = virt_to_phys(_etext)-1; -+ data_resource.start = virt_to_phys(_etext); -+ data_resource.end = virt_to_phys(_edata)-1; - - parse_cmdline_early(cmdline_p); - -@@ -977,7 +978,7 @@ void __init setup_arch(char **cmdline_p) - generic_apic_probe(*cmdline_p); - #endif - --#ifdef CONFIG_ACPI_BOOT -+#ifdef CONFIG_ACPI - /* - * Parse the ACPI tables for possible boot-time SMP configuration. - */ ---- linux-2.6.0-test1/arch/i386/kernel/smpboot.c 2003-06-26 22:07:23.000000000 -0700 -+++ 25/arch/i386/kernel/smpboot.c 2003-07-19 17:04:06.000000000 -0700 -@@ -61,12 +61,12 @@ static int __initdata smp_b_stepping; - int smp_num_siblings = 1; - int phys_proc_id[NR_CPUS]; /* Package ID of each logical CPU */ - --/* Bitmask of currently online CPUs */ --unsigned long cpu_online_map; -+/* bitmap of online cpus */ -+cpumask_t cpu_online_map; - --static volatile unsigned long cpu_callin_map; --volatile unsigned long cpu_callout_map; --static unsigned long smp_commenced_mask; -+static cpumask_t cpu_callin_map; -+cpumask_t cpu_callout_map; -+static cpumask_t smp_commenced_mask; - - /* Per CPU bogomips and other parameters */ - struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned; -@@ -268,7 +268,7 @@ static void __init synchronize_tsc_bp (v - - sum = 0; - for (i = 0; i < NR_CPUS; i++) { -- if (test_bit(i, &cpu_callout_map)) { -+ if (cpu_isset(i, cpu_callout_map)) { - t0 = tsc_values[i]; - sum += t0; - } -@@ -277,7 +277,7 @@ static void __init synchronize_tsc_bp (v - - sum = 0; - for (i = 0; i < NR_CPUS; i++) { -- if (!test_bit(i, &cpu_callout_map)) -+ if (!cpu_isset(i, cpu_callout_map)) - continue; - delta = tsc_values[i] - avg; - if (delta < 0) -@@ -353,7 +353,7 @@ void __init smp_callin(void) - */ - phys_id = GET_APIC_ID(apic_read(APIC_ID)); - cpuid = smp_processor_id(); -- if (test_bit(cpuid, &cpu_callin_map)) { -+ if (cpu_isset(cpuid, cpu_callin_map)) { - printk("huh, phys CPU#%d, CPU#%d already present??\n", - phys_id, cpuid); - BUG(); -@@ -376,7 +376,7 @@ void __init smp_callin(void) - /* - * Has the boot CPU finished it's STARTUP sequence? - */ -- if (test_bit(cpuid, &cpu_callout_map)) -+ if (cpu_isset(cpuid, cpu_callout_map)) - break; - rep_nop(); - } -@@ -417,7 +417,7 @@ void __init smp_callin(void) - /* - * Allow the master to continue. - */ -- set_bit(cpuid, &cpu_callin_map); -+ cpu_set(cpuid, cpu_callin_map); - - /* - * Synchronize the TSC with the BP -@@ -442,7 +442,7 @@ int __init start_secondary(void *unused) - */ - cpu_init(); - smp_callin(); -- while (!test_bit(smp_processor_id(), &smp_commenced_mask)) -+ while (!cpu_isset(smp_processor_id(), smp_commenced_mask)) - rep_nop(); - setup_secondary_APIC_clock(); - if (nmi_watchdog == NMI_IO_APIC) { -@@ -456,7 +456,7 @@ int __init start_secondary(void *unused) - * the local TLBs too. - */ - local_flush_tlb(); -- set_bit(smp_processor_id(), &cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_online_map); - wmb(); - return cpu_idle(); - } -@@ -499,16 +499,16 @@ static struct task_struct * __init fork_ - #ifdef CONFIG_NUMA - - /* which logical CPUs are on which nodes */ --volatile unsigned long node_2_cpu_mask[MAX_NR_NODES] = -- { [0 ... MAX_NR_NODES-1] = 0 }; -+cpumask_t node_2_cpu_mask[MAX_NR_NODES] = -+ { [0 ... MAX_NR_NODES-1] = CPU_MASK_NONE }; - /* which node each logical CPU is on */ --volatile int cpu_2_node[NR_CPUS] = { [0 ... NR_CPUS-1] = 0 }; -+int cpu_2_node[NR_CPUS] = { [0 ... NR_CPUS-1] = 0 }; - - /* set up a mapping between cpu and node. */ - static inline void map_cpu_to_node(int cpu, int node) - { - printk("Mapping cpu %d to node %d\n", cpu, node); -- node_2_cpu_mask[node] |= (1 << cpu); -+ cpu_set(cpu, node_2_cpu_mask[node]); - cpu_2_node[cpu] = node; - } - -@@ -519,7 +519,7 @@ static inline void unmap_cpu_to_node(int - - printk("Unmapping cpu %d from all nodes\n", cpu); - for (node = 0; node < MAX_NR_NODES; node ++) -- node_2_cpu_mask[node] &= ~(1 << cpu); -+ cpu_clear(cpu, node_2_cpu_mask[node]); - cpu_2_node[cpu] = -1; - } - #else /* !CONFIG_NUMA */ -@@ -529,7 +529,7 @@ static inline void unmap_cpu_to_node(int - - #endif /* CONFIG_NUMA */ - --volatile u8 cpu_2_logical_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; -+u8 cpu_2_logical_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; - - void map_cpu_to_logical_apicid(void) - { -@@ -770,7 +770,7 @@ wakeup_secondary_cpu(int phys_apicid, un - } - #endif /* WAKE_SECONDARY_VIA_INIT */ - --extern unsigned long cpu_initialized; -+extern cpumask_t cpu_initialized; - - static int __init do_boot_cpu(int apicid) - /* -@@ -836,19 +836,19 @@ static int __init do_boot_cpu(int apicid - * allow APs to start initializing. - */ - Dprintk("Before Callout %d.\n", cpu); -- set_bit(cpu, &cpu_callout_map); -+ cpu_set(cpu, cpu_callout_map); - Dprintk("After Callout %d.\n", cpu); - - /* - * Wait 5s total for a response - */ - for (timeout = 0; timeout < 50000; timeout++) { -- if (test_bit(cpu, &cpu_callin_map)) -+ if (cpu_isset(cpu, cpu_callin_map)) - break; /* It has booted */ - udelay(100); - } - -- if (test_bit(cpu, &cpu_callin_map)) { -+ if (cpu_isset(cpu, cpu_callin_map)) { - /* number CPUs logically, starting from 1 (BSP is 0) */ - Dprintk("OK.\n"); - printk("CPU%d: ", cpu); -@@ -869,8 +869,8 @@ static int __init do_boot_cpu(int apicid - if (boot_error) { - /* Try to put things back the way they were before ... */ - unmap_cpu_to_logical_apicid(cpu); -- clear_bit(cpu, &cpu_callout_map); /* was set here (do_boot_cpu()) */ -- clear_bit(cpu, &cpu_initialized); /* was set by cpu_init() */ -+ cpu_clear(cpu, cpu_callout_map); /* was set here (do_boot_cpu()) */ -+ cpu_clear(cpu, cpu_initialized); /* was set by cpu_init() */ - cpucount--; - } - -@@ -957,7 +957,7 @@ static void __init smp_boot_cpus(unsigne - if (!smp_found_config) { - printk(KERN_NOTICE "SMP motherboard not detected.\n"); - smpboot_clear_io_apic_irqs(); -- phys_cpu_present_map = 1; -+ phys_cpu_present_map = physid_mask_of_physid(0); - if (APIC_init_uniprocessor()) - printk(KERN_NOTICE "Local APIC not detected." - " Using dummy APIC emulation.\n"); -@@ -973,7 +973,7 @@ static void __init smp_boot_cpus(unsigne - if (!check_phys_apicid_present(boot_cpu_physical_apicid)) { - printk("weird, boot CPU (#%d) not listed by the BIOS.\n", - boot_cpu_physical_apicid); -- phys_cpu_present_map |= (1 << hard_smp_processor_id()); -+ cpu_set(hard_smp_processor_id(), phys_cpu_present_map); - } - - /* -@@ -984,7 +984,7 @@ static void __init smp_boot_cpus(unsigne - boot_cpu_physical_apicid); - printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n"); - smpboot_clear_io_apic_irqs(); -- phys_cpu_present_map = 1; -+ phys_cpu_present_map = physid_mask_of_physid(0); - return; - } - -@@ -997,7 +997,7 @@ static void __init smp_boot_cpus(unsigne - smp_found_config = 0; - printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); - smpboot_clear_io_apic_irqs(); -- phys_cpu_present_map = 1; -+ phys_cpu_present_map = physid_mask_of_physid(0); - return; - } - -@@ -1017,10 +1017,10 @@ static void __init smp_boot_cpus(unsigne - * bits 0-3 are quad0, 4-7 are quad1, etc. A perverse twist on the - * clustered apic ID. - */ -- Dprintk("CPU present map: %lx\n", phys_cpu_present_map); -+ Dprintk("CPU present map: %lx\n", cpus_coerce(phys_cpu_present_map)); - - kicked = 1; -- for (bit = 0; kicked < NR_CPUS && bit < BITS_PER_LONG; bit++) { -+ for (bit = 0; kicked < NR_CPUS && bit < MAX_APICS; bit++) { - apicid = cpu_present_to_apicid(bit); - /* - * Don't even attempt to start the boot CPU! -@@ -1055,7 +1055,7 @@ static void __init smp_boot_cpus(unsigne - } else { - unsigned long bogosum = 0; - for (cpu = 0; cpu < NR_CPUS; cpu++) -- if (cpu_callout_map & (1< - */ - --static volatile unsigned long flush_cpumask; -+static cpumask_t flush_cpumask; - static struct mm_struct * flush_mm; - static unsigned long flush_va; - static spinlock_t tlbstate_lock = SPIN_LOCK_UNLOCKED; -@@ -255,7 +258,7 @@ static inline void leave_mm (unsigned lo - { - if (cpu_tlbstate[cpu].state == TLBSTATE_OK) - BUG(); -- clear_bit(cpu, &cpu_tlbstate[cpu].active_mm->cpu_vm_mask); -+ cpu_clear(cpu, cpu_tlbstate[cpu].active_mm->cpu_vm_mask); - load_cr3(swapper_pg_dir); - } - -@@ -265,7 +268,7 @@ static inline void leave_mm (unsigned lo - * [cpu0: the cpu that switches] - * 1) switch_mm() either 1a) or 1b) - * 1a) thread switch to a different mm -- * 1a1) clear_bit(cpu, &old_mm->cpu_vm_mask); -+ * 1a1) cpu_clear(cpu, old_mm->cpu_vm_mask); - * Stop ipi delivery for the old mm. This is not synchronized with - * the other cpus, but smp_invalidate_interrupt ignore flush ipis - * for the wrong mm, and in the worst case we perform a superflous -@@ -275,7 +278,7 @@ static inline void leave_mm (unsigned lo - * was in lazy tlb mode. - * 1a3) update cpu_tlbstate[].active_mm - * Now cpu0 accepts tlb flushes for the new mm. -- * 1a4) set_bit(cpu, &new_mm->cpu_vm_mask); -+ * 1a4) cpu_set(cpu, new_mm->cpu_vm_mask); - * Now the other cpus will send tlb flush ipis. - * 1a4) change cr3. - * 1b) thread switch without mm change -@@ -311,7 +314,7 @@ asmlinkage void smp_invalidate_interrupt - - cpu = get_cpu(); - -- if (!test_bit(cpu, &flush_cpumask)) -+ if (!cpu_isset(cpu, flush_cpumask)) - goto out; - /* - * This was a BUG() but until someone can quote me the -@@ -332,15 +335,17 @@ asmlinkage void smp_invalidate_interrupt - leave_mm(cpu); - } - ack_APIC_irq(); -- clear_bit(cpu, &flush_cpumask); -- -+ smp_mb__before_clear_bit(); -+ cpu_clear(cpu, flush_cpumask); -+ smp_mb__after_clear_bit(); - out: - put_cpu_no_resched(); - } - --static void flush_tlb_others (unsigned long cpumask, struct mm_struct *mm, -+static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm, - unsigned long va) - { -+ cpumask_t tmp; - /* - * A couple of (to be removed) sanity checks: - * -@@ -348,14 +353,12 @@ static void flush_tlb_others (unsigned l - * - current CPU must not be in mask - * - mask must exist :) - */ -- if (!cpumask) -- BUG(); -- if ((cpumask & cpu_online_map) != cpumask) -- BUG(); -- if (cpumask & (1 << smp_processor_id())) -- BUG(); -- if (!mm) -- BUG(); -+ BUG_ON(cpus_empty(cpumask)); -+ -+ cpus_and(tmp, cpumask, cpu_online_map); -+ BUG_ON(!cpus_equal(cpumask, tmp)); -+ BUG_ON(cpu_isset(smp_processor_id(), cpumask)); -+ BUG_ON(!mm); - - /* - * i'm not happy about this global shared spinlock in the -@@ -367,15 +370,26 @@ static void flush_tlb_others (unsigned l - - flush_mm = mm; - flush_va = va; -+#if NR_CPUS <= BITS_PER_LONG - atomic_set_mask(cpumask, &flush_cpumask); -+#else -+ { -+ int k; -+ unsigned long *flush_mask = (unsigned long *)&flush_cpumask; -+ unsigned long *cpu_mask = (unsigned long *)&cpumask; -+ for (k = 0; k < BITS_TO_LONGS(NR_CPUS); ++k) -+ atomic_set_mask(cpu_mask[k], &flush_mask[k]); -+ } -+#endif - /* - * We have to send the IPI only to - * CPUs affected. - */ - send_IPI_mask(cpumask, INVALIDATE_TLB_VECTOR); - -- while (flush_cpumask) -- /* nothing. lockup detection does not belong here */; -+ while (!cpus_empty(flush_cpumask)) -+ /* nothing. lockup detection does not belong here */ -+ mb(); - - flush_mm = NULL; - flush_va = 0; -@@ -385,23 +399,25 @@ static void flush_tlb_others (unsigned l - void flush_tlb_current_task(void) - { - struct mm_struct *mm = current->mm; -- unsigned long cpu_mask; -+ cpumask_t cpu_mask; - - preempt_disable(); -- cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); -+ cpu_mask = mm->cpu_vm_mask; -+ cpu_clear(smp_processor_id(), cpu_mask); - - local_flush_tlb(); -- if (cpu_mask) -+ if (!cpus_empty(cpu_mask)) - flush_tlb_others(cpu_mask, mm, FLUSH_ALL); - preempt_enable(); - } - - void flush_tlb_mm (struct mm_struct * mm) - { -- unsigned long cpu_mask; -+ cpumask_t cpu_mask; - - preempt_disable(); -- cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); -+ cpu_mask = mm->cpu_vm_mask; -+ cpu_clear(smp_processor_id(), cpu_mask); - - if (current->active_mm == mm) { - if (current->mm) -@@ -409,7 +425,7 @@ void flush_tlb_mm (struct mm_struct * mm - else - leave_mm(smp_processor_id()); - } -- if (cpu_mask) -+ if (!cpus_empty(cpu_mask)) - flush_tlb_others(cpu_mask, mm, FLUSH_ALL); - - preempt_enable(); -@@ -418,10 +434,11 @@ void flush_tlb_mm (struct mm_struct * mm - void flush_tlb_page(struct vm_area_struct * vma, unsigned long va) - { - struct mm_struct *mm = vma->vm_mm; -- unsigned long cpu_mask; -+ cpumask_t cpu_mask; - - preempt_disable(); -- cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); -+ cpu_mask = mm->cpu_vm_mask; -+ cpu_clear(smp_processor_id(), cpu_mask); - - if (current->active_mm == mm) { - if(current->mm) -@@ -430,7 +447,7 @@ void flush_tlb_page(struct vm_area_struc - leave_mm(smp_processor_id()); - } - -- if (cpu_mask) -+ if (!cpus_empty(cpu_mask)) - flush_tlb_others(cpu_mask, mm, va); - - preempt_enable(); -@@ -457,9 +474,19 @@ void flush_tlb_all(void) - */ - void smp_send_reschedule(int cpu) - { -- send_IPI_mask(1 << cpu, RESCHEDULE_VECTOR); -+ send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR); - } -- -+#ifdef CONFIG_KGDB -+/* -+ * By using the NMI code instead of a vector we just sneak thru the -+ * word generator coming out with just what we want. AND it does -+ * not matter if clustered_apic_mode is set or not. -+ */ -+void smp_send_nmi_allbutself(void) -+{ -+ send_IPI_allbutself(APIC_DM_NMI); -+} -+#endif - /* - * Structure and data for smp_call_function(). This is designed to minimise - * static memory requirements. It also looks cleaner. -@@ -533,7 +560,7 @@ static void stop_this_cpu (void * dummy) - /* - * Remove this CPU: - */ -- clear_bit(smp_processor_id(), &cpu_online_map); -+ cpu_clear(smp_processor_id(), cpu_online_map); - local_irq_disable(); - disable_local_APIC(); - if (cpu_data[smp_processor_id()].hlt_works_ok) ---- linux-2.6.0-test1/arch/i386/kernel/traps.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/i386/kernel/traps.c 2003-07-19 17:06:40.000000000 -0700 -@@ -90,6 +90,42 @@ asmlinkage void alignment_check(void); - asmlinkage void spurious_interrupt_bug(void); - asmlinkage void machine_check(void); - -+#ifdef CONFIG_KGDB -+extern void sysenter_entry(void); -+#include -+#include -+extern void int3(void); -+extern void debug(void); -+void set_intr_gate(unsigned int n, void *addr); -+static void set_intr_usr_gate(unsigned int n, void *addr); -+/* -+ * Should be able to call this breakpoint() very early in -+ * bring up. Just hard code the call where needed. -+ * The breakpoint() code is here because set_?_gate() functions -+ * are local (static) to trap.c. They need be done only once, -+ * but it does not hurt to do them over. -+ */ -+void breakpoint(void) -+{ -+ set_intr_usr_gate(3,&int3); /* disable ints on trap */ -+ set_intr_gate(1,&debug); -+ set_intr_gate(14,&page_fault); -+ -+ BREAKPOINT; -+} -+#define CHK_REMOTE_DEBUG(trapnr,signr,error_code,regs,after) \ -+ { \ -+ if (!user_mode(regs) ) \ -+ { \ -+ kgdb_handle_exception(trapnr, signr, error_code, regs); \ -+ after; \ -+ } else if ((trapnr == 3) && (regs->eflags &0x200)) local_irq_enable(); \ -+ } -+#else -+#define CHK_REMOTE_DEBUG(trapnr,signr,error_code,regs,after) -+#endif -+ -+ - static int kstack_depth_to_print = 24; - - void show_trace(struct task_struct *task, unsigned long * stack) -@@ -172,8 +208,9 @@ void show_registers(struct pt_regs *regs - ss = regs->xss & 0xffff; - } - print_modules(); -- printk("CPU: %d\nEIP: %04x:[<%08lx>] %s\nEFLAGS: %08lx\n", -- smp_processor_id(), 0xffff & regs->xcs, regs->eip, print_tainted(), regs->eflags); -+ printk("CPU: %d\nEIP: %04x:[<%08lx>] %s VLI\nEFLAGS: %08lx\n", -+ smp_processor_id(), 0xffff & regs->xcs, -+ regs->eip, print_tainted(), regs->eflags); - - print_symbol("EIP is at %s\n", regs->eip); - printk("eax: %08lx ebx: %08lx ecx: %08lx edx: %08lx\n", -@@ -189,23 +226,25 @@ void show_registers(struct pt_regs *regs - * time of the fault.. - */ - if (in_kernel) { -+ u8 *eip; - - printk("\nStack: "); - show_stack(NULL, (unsigned long*)esp); - - printk("Code: "); -- if(regs->eip < PAGE_OFFSET) -- goto bad; - -- for(i=0;i<20;i++) -- { -+ eip = (u8 *)regs->eip - 43; -+ for (i = 0; i < 64; i++, eip++) { - unsigned char c; -- if(__get_user(c, &((unsigned char*)regs->eip)[i])) { --bad: -+ -+ if (eip < (u8 *)PAGE_OFFSET || __get_user(c, eip)) { - printk(" Bad EIP value."); - break; - } -- printk("%02x ", c); -+ if (eip == (u8 *)regs->eip) -+ printk("<%02x> ", c); -+ else -+ printk("%02x ", c); - } - } - printk("\n"); -@@ -252,12 +291,36 @@ spinlock_t die_lock = SPIN_LOCK_UNLOCKED - void die(const char * str, struct pt_regs * regs, long err) - { - static int die_counter; -+ int nl = 0; - - console_verbose(); - spin_lock_irq(&die_lock); - bust_spinlocks(1); - handle_BUG(regs); - printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); -+#ifdef CONFIG_PREEMPT -+ printk("PREEMPT "); -+ nl = 1; -+#endif -+#ifdef CONFIG_SMP -+ printk("SMP "); -+ nl = 1; -+#endif -+#ifdef CONFIG_DEBUG_PAGEALLOC -+ printk("DEBUG_PAGEALLOC"); -+ nl = 1; -+#endif -+ if (nl) -+ printk("\n"); -+#ifdef CONFIG_KGDB -+ /* This is about the only place we want to go to kgdb even if in -+ * user mode. But we must go in via a trap so within kgdb we will -+ * always be in kernel mode. -+ */ -+ if (user_mode(regs)) -+ BREAKPOINT; -+#endif -+ CHK_REMOTE_DEBUG(0,SIGTRAP,err,regs,) - show_registers(regs); - bust_spinlocks(0); - spin_unlock_irq(&die_lock); -@@ -327,6 +390,7 @@ static inline void do_trap(int trapnr, i - #define DO_ERROR(trapnr, signr, str, name) \ - asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ - { \ -+ CHK_REMOTE_DEBUG(trapnr,signr,error_code,regs,)\ - do_trap(trapnr, signr, str, 0, regs, error_code, NULL); \ - } - -@@ -344,7 +408,9 @@ asmlinkage void do_##name(struct pt_regs - #define DO_VM86_ERROR(trapnr, signr, str, name) \ - asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ - { \ -+ CHK_REMOTE_DEBUG(trapnr, signr, error_code,regs, return)\ - do_trap(trapnr, signr, str, 1, regs, error_code, NULL); \ -+ return; \ - } - - #define DO_VM86_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \ -@@ -387,8 +453,10 @@ gp_in_vm86: - return; - - gp_in_kernel: -- if (!fixup_exception(regs)) -+ if (!fixup_exception(regs)){ -+ CHK_REMOTE_DEBUG(13,SIGSEGV,error_code,regs,) - die("general protection fault", regs, error_code); -+ } - } - - static void mem_parity_error(unsigned char reason, struct pt_regs * regs) -@@ -550,8 +618,18 @@ asmlinkage void do_debug(struct pt_regs - * allowing programs to debug themselves without the ptrace() - * interface. - */ -- if ((regs->xcs & 3) == 0) -+#ifdef CONFIG_KGDB -+ /* -+ * I think this is the only "real" case of a TF in the kernel -+ * that really belongs to user space. Others are -+ * "Ours all ours!" -+ */ -+ if (((regs->xcs & 3) == 0) && ((void *)regs->eip == sysenter_entry)) -+ goto clear_TF_reenable; -+#else -+ if ((regs->xcs & 3) == 0) - goto clear_TF_reenable; -+#endif - if ((tsk->ptrace & (PT_DTRACE|PT_PTRACED)) == PT_DTRACE) - goto clear_TF; - } -@@ -563,6 +641,17 @@ asmlinkage void do_debug(struct pt_regs - info.si_errno = 0; - info.si_code = TRAP_BRKPT; - -+#ifdef CONFIG_KGDB -+ /* -+ * If this is a kernel mode trap, we need to reset db7 to allow us -+ * to continue sanely ALSO skip the signal delivery -+ */ -+ if ((regs->xcs & 3) == 0) -+ goto clear_dr7; -+ -+ /* if not kernel, allow ints but only if they were on */ -+ if ( regs->eflags & 0x200) local_irq_enable(); -+#endif - /* If this is a kernel mode trap, save the user PC on entry to - * the kernel, that's what the debugger can make sense of. - */ -@@ -577,6 +666,7 @@ clear_dr7: - __asm__("movl %0,%%db7" - : /* no output */ - : "r" (0)); -+ CHK_REMOTE_DEBUG(1,SIGTRAP,error_code,regs,) - return; - - debug_vm86: -@@ -823,6 +913,12 @@ static void __init set_call_gate(void *a - { - _set_gate(a,12,3,addr,__KERNEL_CS); - } -+#ifdef CONFIG_KGDB -+void set_intr_usr_gate(unsigned int n, void *addr) -+{ -+ _set_gate(idt_table+n,14,3,addr,__KERNEL_CS); -+} -+#endif - - static void __init set_task_gate(unsigned int n, unsigned int gdt_entry) - { -@@ -849,7 +945,11 @@ void __init trap_init(void) - set_trap_gate(0,÷_error); - set_intr_gate(1,&debug); - set_intr_gate(2,&nmi); -+#ifndef CONFIG_KGDB - set_system_gate(3,&int3); /* int3-5 can be called from all */ -+#else -+ set_intr_usr_gate(3,&int3); /* int3-5 can be called from all */ -+#endif - set_system_gate(4,&overflow); - set_system_gate(5,&bounds); - set_trap_gate(6,&invalid_op); ---- linux-2.6.0-test1/arch/i386/kernel/vm86.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/arch/i386/kernel/vm86.c 2003-07-19 17:07:16.000000000 -0700 -@@ -144,12 +144,14 @@ static void mark_screen_rdonly(struct ta - pgd_clear(pgd); - goto out; - } -- pmd = pmd_offset(pgd, 0xA0000); -- if (pmd_none(*pmd)) -+ pmd = pmd_offset_map(pgd, 0xA0000); -+ if (pmd_none(*pmd)) { -+ pmd_unmap(pmd); - goto out; -- if (pmd_bad(*pmd)) { -+ } else if (pmd_bad(*pmd)) { - pmd_ERROR(*pmd); - pmd_clear(pmd); -+ pmd_unmap(pmd); - goto out; - } - pte = mapped = pte_offset_map(pmd, 0xA0000); -@@ -159,6 +161,7 @@ static void mark_screen_rdonly(struct ta - pte++; - } - pte_unmap(mapped); -+ pmd_unmap(pmd); - out: - spin_unlock(&tsk->mm->page_table_lock); - preempt_enable(); ---- linux-2.6.0-test1/arch/i386/lib/dec_and_lock.c 2003-06-26 22:07:23.000000000 -0700 -+++ 25/arch/i386/lib/dec_and_lock.c 2003-07-19 17:06:40.000000000 -0700 -@@ -10,6 +10,7 @@ - #include - #include - -+#ifndef ATOMIC_DEC_AND_LOCK - int atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock) - { - int counter; -@@ -38,3 +39,5 @@ slow_path: - spin_unlock(lock); - return 0; - } -+#endif -+ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/i386/lib/kgdb_serial.c 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,485 @@ -+/* -+ * Serial interface GDB stub -+ * -+ * Written (hacked together) by David Grothe (dave@gcom.com) -+ * Modified to allow invokation early in boot see also -+ * kgdb.h for instructions by George Anzinger(george@mvista.com) -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#ifdef CONFIG_KGDB_USER_CONSOLE -+extern void kgdb_console_finit(void); -+#endif -+#define PRNT_off -+#define TEST_EXISTANCE -+#ifdef PRNT -+#define dbprintk(s) printk s -+#else -+#define dbprintk(s) -+#endif -+#define TEST_INTERRUPT_off -+#ifdef TEST_INTERRUPT -+#define intprintk(s) printk s -+#else -+#define intprintk(s) -+#endif -+ -+#define IRQ_T(info) ((info->flags & ASYNC_SHARE_IRQ) ? SA_SHIRQ : SA_INTERRUPT) -+ -+#define GDB_BUF_SIZE 512 /* power of 2, please */ -+ -+static char gdb_buf[GDB_BUF_SIZE]; -+static int gdb_buf_in_inx; -+static atomic_t gdb_buf_in_cnt; -+static int gdb_buf_out_inx; -+ -+struct async_struct *gdb_async_info; -+static int gdb_async_irq; -+ -+#define outb_px(a,b) outb_p(b,a) -+ -+static void program_uart(struct async_struct *info); -+static void write_char(struct async_struct *info, int chr); -+/* -+ * Get a byte from the hardware data buffer and return it -+ */ -+static int -+read_data_bfr(struct async_struct *info) -+{ -+ char it = inb_p(info->port + UART_LSR); -+ -+ if (it & UART_LSR_DR) -+ return (inb_p(info->port + UART_RX)); -+ /* -+ * If we have a framing error assume somebody messed with -+ * our uart. Reprogram it and send '-' both ways... -+ */ -+ if (it & 0xc) { -+ program_uart(info); -+ write_char(info, '-'); -+ return ('-'); -+ } -+ return (-1); -+ -+} /* read_data_bfr */ -+ -+/* -+ * Get a char if available, return -1 if nothing available. -+ * Empty the receive buffer first, then look at the interface hardware. -+ -+ * Locking here is a bit of a problem. We MUST not lock out communication -+ * if we are trying to talk to gdb about a kgdb entry. ON the other hand -+ * we can loose chars in the console pass thru if we don't lock. It is also -+ * possible that we could hold the lock or be waiting for it when kgdb -+ * NEEDS to talk. Since kgdb locks down the world, it does not need locks. -+ * We do, of course have possible issues with interrupting a uart operation, -+ * but we will just depend on the uart status to help keep that straight. -+ -+ */ -+static spinlock_t uart_interrupt_lock = SPIN_LOCK_UNLOCKED; -+#ifdef CONFIG_SMP -+extern spinlock_t kgdb_spinlock; -+#endif -+ -+static int -+read_char(struct async_struct *info) -+{ -+ int chr; -+ unsigned long flags; -+ local_irq_save(flags); -+#ifdef CONFIG_SMP -+ if (!spin_is_locked(&kgdb_spinlock)) { -+ spin_lock(&uart_interrupt_lock); -+ } -+#endif -+ if (atomic_read(&gdb_buf_in_cnt) != 0) { /* intr routine has q'd chars */ -+ chr = gdb_buf[gdb_buf_out_inx++]; -+ gdb_buf_out_inx &= (GDB_BUF_SIZE - 1); -+ atomic_dec(&gdb_buf_in_cnt); -+ } else { -+ chr = read_data_bfr(info); -+ } -+#ifdef CONFIG_SMP -+ if (!spin_is_locked(&kgdb_spinlock)) { -+ spin_unlock(&uart_interrupt_lock); -+ } -+#endif -+ local_irq_restore(flags); -+ return (chr); -+} -+ -+/* -+ * Wait until the interface can accept a char, then write it. -+ */ -+static void -+write_char(struct async_struct *info, int chr) -+{ -+ while (!(inb_p(info->port + UART_LSR) & UART_LSR_THRE)) ; -+ -+ outb_p(chr, info->port + UART_TX); -+ -+} /* write_char */ -+ -+/* -+ * Mostly we don't need a spinlock, but since the console goes -+ * thru here with interrutps on, well, we need to catch those -+ * chars. -+ */ -+/* -+ * This is the receiver interrupt routine for the GDB stub. -+ * It will receive a limited number of characters of input -+ * from the gdb host machine and save them up in a buffer. -+ * -+ * When the gdb stub routine getDebugChar() is called it -+ * draws characters out of the buffer until it is empty and -+ * then reads directly from the serial port. -+ * -+ * We do not attempt to write chars from the interrupt routine -+ * since the stubs do all of that via putDebugChar() which -+ * writes one byte after waiting for the interface to become -+ * ready. -+ * -+ * The debug stubs like to run with interrupts disabled since, -+ * after all, they run as a consequence of a breakpoint in -+ * the kernel. -+ * -+ * Perhaps someone who knows more about the tty driver than I -+ * care to learn can make this work for any low level serial -+ * driver. -+ */ -+static irqreturn_t -+gdb_interrupt(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ struct async_struct *info; -+ unsigned long flags; -+ -+ info = gdb_async_info; -+ if (!info || !info->tty || irq != gdb_async_irq) -+ return IRQ_NONE; -+ -+ local_irq_save(flags); -+ spin_lock(&uart_interrupt_lock); -+ do { -+ int chr = read_data_bfr(info); -+ intprintk(("Debug char on int: %x hex\n", chr)); -+ if (chr < 0) -+ continue; -+ -+ if (chr == 3) { /* Ctrl-C means remote interrupt */ -+ BREAKPOINT; -+ continue; -+ } -+ -+ if (atomic_read(&gdb_buf_in_cnt) >= GDB_BUF_SIZE) { -+ /* buffer overflow tosses early char */ -+ read_char(info); -+ } -+ gdb_buf[gdb_buf_in_inx++] = chr; -+ gdb_buf_in_inx &= (GDB_BUF_SIZE - 1); -+ } while (inb_p(info->port + UART_IIR) & UART_IIR_RDI); -+ spin_unlock(&uart_interrupt_lock); -+ local_irq_restore(flags); -+ return IRQ_HANDLED; -+} /* gdb_interrupt */ -+ -+/* -+ * Just a NULL routine for testing. -+ */ -+void -+gdb_null(void) -+{ -+} /* gdb_null */ -+ -+/* These structure are filled in with values defined in asm/kgdb_local.h -+ */ -+static struct serial_state state = SB_STATE; -+static struct async_struct local_info = SB_INFO; -+static int ok_to_enable_ints = 0; -+static void kgdb_enable_ints_now(void); -+ -+extern char *kgdb_version; -+/* -+ * Hook an IRQ for KGDB. -+ * -+ * This routine is called from putDebugChar, below. -+ */ -+static int ints_disabled = 1; -+int -+gdb_hook_interrupt(struct async_struct *info, int verb) -+{ -+ struct serial_state *state = info->state; -+ unsigned long flags; -+ int port; -+#ifdef TEST_EXISTANCE -+ int scratch, scratch2; -+#endif -+ -+ /* The above fails if memory managment is not set up yet. -+ * Rather than fail the set up, just keep track of the fact -+ * and pick up the interrupt thing later. -+ */ -+ gdb_async_info = info; -+ port = gdb_async_info->port; -+ gdb_async_irq = state->irq; -+ if (verb) { -+ printk("kgdb %s : port =%x, IRQ=%d, divisor =%d\n", -+ kgdb_version, -+ port, -+ gdb_async_irq, gdb_async_info->state->custom_divisor); -+ } -+ local_irq_save(flags); -+#ifdef TEST_EXISTANCE -+ /* Existance test */ -+ /* Should not need all this, but just in case.... */ -+ -+ scratch = inb_p(port + UART_IER); -+ outb_px(port + UART_IER, 0); -+ outb_px(0xff, 0x080); -+ scratch2 = inb_p(port + UART_IER); -+ outb_px(port + UART_IER, scratch); -+ if (scratch2) { -+ printk -+ ("gdb_hook_interrupt: Could not clear IER, not a UART!\n"); -+ local_irq_restore(flags); -+ return 1; /* We failed; there's nothing here */ -+ } -+ scratch2 = inb_p(port + UART_LCR); -+ outb_px(port + UART_LCR, 0xBF); /* set up for StarTech test */ -+ outb_px(port + UART_EFR, 0); /* EFR is the same as FCR */ -+ outb_px(port + UART_LCR, 0); -+ outb_px(port + UART_FCR, UART_FCR_ENABLE_FIFO); -+ scratch = inb_p(port + UART_IIR) >> 6; -+ if (scratch == 1) { -+ printk("gdb_hook_interrupt: Undefined UART type!" -+ " Not a UART! \n"); -+ local_irq_restore(flags); -+ return 1; -+ } else { -+ dbprintk(("gdb_hook_interrupt: UART type " -+ "is %d where 0=16450, 2=16550 3=16550A\n", scratch)); -+ } -+ scratch = inb_p(port + UART_MCR); -+ outb_px(port + UART_MCR, UART_MCR_LOOP | scratch); -+ outb_px(port + UART_MCR, UART_MCR_LOOP | 0x0A); -+ scratch2 = inb_p(port + UART_MSR) & 0xF0; -+ outb_px(port + UART_MCR, scratch); -+ if (scratch2 != 0x90) { -+ printk("gdb_hook_interrupt: " -+ "Loop back test failed! Not a UART!\n"); -+ local_irq_restore(flags); -+ return scratch2 + 1000; /* force 0 to fail */ -+ } -+#endif /* test existance */ -+ program_uart(info); -+ local_irq_restore(flags); -+ -+ return (0); -+ -+} /* gdb_hook_interrupt */ -+ -+static void -+program_uart(struct async_struct *info) -+{ -+ int port = info->port; -+ -+ (void) inb_p(port + UART_RX); -+ outb_px(port + UART_IER, 0); -+ -+ (void) inb_p(port + UART_RX); /* serial driver comments say */ -+ (void) inb_p(port + UART_IIR); /* this clears the interrupt regs */ -+ (void) inb_p(port + UART_MSR); -+ outb_px(port + UART_LCR, UART_LCR_WLEN8 | UART_LCR_DLAB); -+ outb_px(port + UART_DLL, info->state->custom_divisor & 0xff); /* LS */ -+ outb_px(port + UART_DLM, info->state->custom_divisor >> 8); /* MS */ -+ outb_px(port + UART_MCR, info->MCR); -+ -+ outb_px(port + UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1 | UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR); /* set fcr */ -+ outb_px(port + UART_LCR, UART_LCR_WLEN8); /* reset DLAB */ -+ outb_px(port + UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1); /* set fcr */ -+ if (!ints_disabled) { -+ intprintk(("KGDB: Sending %d to port %x offset %d\n", -+ gdb_async_info->IER, -+ (int) gdb_async_info->port, UART_IER)); -+ outb_px(gdb_async_info->port + UART_IER, gdb_async_info->IER); -+ } -+ return; -+} -+ -+/* -+ * getDebugChar -+ * -+ * This is a GDB stub routine. It waits for a character from the -+ * serial interface and then returns it. If there is no serial -+ * interface connection then it returns a bogus value which will -+ * almost certainly cause the system to hang. In the -+ */ -+int kgdb_in_isr = 0; -+int kgdb_in_lsr = 0; -+extern spinlock_t kgdb_spinlock; -+ -+/* Caller takes needed protections */ -+ -+int -+getDebugChar(void) -+{ -+ volatile int chr, dum, time, end_time; -+ -+ dbprintk(("getDebugChar(port %x): ", gdb_async_info->port)); -+ -+ if (gdb_async_info == NULL) { -+ gdb_hook_interrupt(&local_info, 0); -+ } -+ /* -+ * This trick says if we wait a very long time and get -+ * no char, return the -1 and let the upper level deal -+ * with it. -+ */ -+ rdtsc(dum, time); -+ end_time = time + 2; -+ while (((chr = read_char(gdb_async_info)) == -1) && -+ (end_time - time) > 0) { -+ rdtsc(dum, time); -+ }; -+ /* -+ * This covers our butts if some other code messes with -+ * our uart, hay, it happens :o) -+ */ -+ if (chr == -1) -+ program_uart(gdb_async_info); -+ -+ dbprintk(("%c\n", chr > ' ' && chr < 0x7F ? chr : ' ')); -+ return (chr); -+ -+} /* getDebugChar */ -+ -+static int count = 3; -+static spinlock_t one_at_atime = SPIN_LOCK_UNLOCKED; -+ -+static int __init -+kgdb_enable_ints(void) -+{ -+ if (gdb_async_info == NULL) { -+ gdb_hook_interrupt(&local_info, 1); -+ } -+ ok_to_enable_ints = 1; -+ kgdb_enable_ints_now(); -+#ifdef CONFIG_KGDB_USER_CONSOLE -+ kgdb_console_finit(); -+#endif -+ return 0; -+} -+ -+#ifdef CONFIG_SERIAL_8250 -+void shutdown_for_kgdb(struct async_struct *gdb_async_info); -+#endif -+ -+#ifdef CONFIG_DISCONTIGMEM -+static inline int kgdb_mem_init_done(void) -+{ -+ return highmem_start_page != NULL; -+} -+#else -+static inline int kgdb_mem_init_done(void) -+{ -+ return max_mapnr != 0; -+} -+#endif -+ -+static void -+kgdb_enable_ints_now(void) -+{ -+ if (!spin_trylock(&one_at_atime)) -+ return; -+ if (!ints_disabled) -+ goto exit; -+ if (kgdb_mem_init_done() && -+ ints_disabled) { /* don't try till mem init */ -+#ifdef CONFIG_SERIAL_8250 -+ /* -+ * The ifdef here allows the system to be configured -+ * without the serial driver. -+ * Don't make it a module, however, it will steal the port -+ */ -+ shutdown_for_kgdb(gdb_async_info); -+#endif -+ ints_disabled = request_irq(gdb_async_info->state->irq, -+ gdb_interrupt, -+ IRQ_T(gdb_async_info), -+ "KGDB-stub", NULL); -+ intprintk(("KGDB: request_irq returned %d\n", ints_disabled)); -+ } -+ if (!ints_disabled) { -+ intprintk(("KGDB: Sending %d to port %x offset %d\n", -+ gdb_async_info->IER, -+ (int) gdb_async_info->port, UART_IER)); -+ outb_px(gdb_async_info->port + UART_IER, gdb_async_info->IER); -+ } -+ exit: -+ spin_unlock(&one_at_atime); -+} -+ -+/* -+ * putDebugChar -+ * -+ * This is a GDB stub routine. It waits until the interface is ready -+ * to transmit a char and then sends it. If there is no serial -+ * interface connection then it simply returns to its caller, having -+ * pretended to send the char. Caller takes needed protections. -+ */ -+void -+putDebugChar(int chr) -+{ -+ dbprintk(("putDebugChar(port %x): chr=%02x '%c', ints_on=%d\n", -+ gdb_async_info->port, -+ chr, -+ chr > ' ' && chr < 0x7F ? chr : ' ', ints_disabled ? 0 : 1)); -+ -+ if (gdb_async_info == NULL) { -+ gdb_hook_interrupt(&local_info, 0); -+ } -+ -+ write_char(gdb_async_info, chr); /* this routine will wait */ -+ count = (chr == '#') ? 0 : count + 1; -+ if ((count == 2)) { /* try to enable after */ -+ if (ints_disabled & ok_to_enable_ints) -+ kgdb_enable_ints_now(); /* try to enable after */ -+ -+ /* We do this a lot because, well we really want to get these -+ * interrupts. The serial driver will clear these bits when it -+ * initializes the chip. Every thing else it does is ok, -+ * but this. -+ */ -+ if (!ints_disabled) { -+ outb_px(gdb_async_info->port + UART_IER, -+ gdb_async_info->IER); -+ } -+ } -+ -+} /* putDebugChar */ -+ -+module_init(kgdb_enable_ints); ---- linux-2.6.0-test1/arch/i386/lib/Makefile 2003-06-26 22:07:23.000000000 -0700 -+++ 25/arch/i386/lib/Makefile 2003-07-19 17:04:02.000000000 -0700 -@@ -9,4 +9,5 @@ lib-y = checksum.o delay.o \ - - lib-$(CONFIG_X86_USE_3DNOW) += mmx.o - lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o -+lib-$(CONFIG_KGDB) += kgdb_serial.o - lib-$(CONFIG_DEBUG_IOVIRT) += iodebug.o ---- linux-2.6.0-test1/arch/i386/mach-generic/bigsmp.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/arch/i386/mach-generic/bigsmp.c 2003-07-19 17:04:13.000000000 -0700 -@@ -3,6 +3,10 @@ - * Drives the local APIC in "clustered mode". - */ - #define APIC_DEFINITION 1 -+#include -+#include -+#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/i386/mach-generic/default.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/arch/i386/mach-generic/default.c 2003-07-19 17:04:13.000000000 -0700 -@@ -2,6 +2,10 @@ - * Default generic APIC driver. This handles upto 8 CPUs. - */ - #define APIC_DEFINITION 1 -+#include -+#include -+#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/i386/mach-generic/probe.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/arch/i386/mach-generic/probe.c 2003-07-19 17:04:13.000000000 -0700 -@@ -3,11 +3,15 @@ - * - * Generic x86 APIC driver probe layer. - */ -+#include -+#include -+#include - #include - #include - #include - #include - #include -+#include - #include - #include - ---- linux-2.6.0-test1/arch/i386/mach-generic/summit.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/arch/i386/mach-generic/summit.c 2003-07-19 17:04:13.000000000 -0700 -@@ -2,6 +2,10 @@ - * APIC driver for the IBM "Summit" chipset. - */ - #define APIC_DEFINITION 1 -+#include -+#include -+#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/i386/mach-visws/mpparse.c 2003-06-14 12:18:04.000000000 -0700 -+++ 25/arch/i386/mach-visws/mpparse.c 2003-07-19 17:04:06.000000000 -0700 -@@ -26,7 +26,7 @@ unsigned int boot_cpu_physical_apicid = - unsigned int boot_cpu_logical_apicid = -1U; - - /* Bitmask of physically existing CPUs */ --unsigned long phys_cpu_present_map; -+cpumask_t phys_cpu_present_map; - - - /* -@@ -38,6 +38,7 @@ unsigned long phys_cpu_present_map; - void __init MP_processor_info (struct mpc_config_processor *m) - { - int ver, logical_apicid; -+ cpumask_t apic_cpus; - - if (!(m->mpc_cpuflag & CPU_ENABLED)) - return; -@@ -62,7 +63,8 @@ void __init MP_processor_info (struct mp - } - ver = m->mpc_apicver; - -- phys_cpu_present_map |= apicid_to_cpu_present(m->mpc_apicid); -+ apic_cpus = apicid_to_cpu_present(m->mpc_apicid); -+ cpus_or(phys_cpu_present_map, phys_cpu_present_map, apic_cpus); - /* - * Validate version - */ ---- linux-2.6.0-test1/arch/i386/mach-voyager/voyager_smp.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/arch/i386/mach-voyager/voyager_smp.c 2003-07-19 17:04:06.000000000 -0700 -@@ -75,15 +75,15 @@ static int voyager_extended_cpus = 1; - int smp_found_config = 0; - - /* Used for the invalidate map that's also checked in the spinlock */ --volatile unsigned long smp_invalidate_needed; -+static volatile unsigned long smp_invalidate_needed; - - /* Bitmask of currently online CPUs - used by setup.c for - /proc/cpuinfo, visible externally but still physical */ --unsigned long cpu_online_map = 0; -+cpumask_t cpu_online_map = CPU_MASK_NONE; - - /* Bitmask of CPUs present in the system - exported by i386_syms.c, used - * by scheduler but indexed physically */ --unsigned long phys_cpu_present_map = 0; -+cpumask_t phys_cpu_present_map = CPU_MASK_NONE; - - /* estimate of time used to flush the SMP-local cache - used in - * processor affinity calculations */ -@@ -108,7 +108,7 @@ static void enable_local_vic_irq(unsigne - static void disable_local_vic_irq(unsigned int irq); - static void before_handle_vic_irq(unsigned int irq); - static void after_handle_vic_irq(unsigned int irq); --static void set_vic_irq_affinity(unsigned int irq, unsigned long mask); -+static void set_vic_irq_affinity(unsigned int irq, cpumask_t mask); - static void ack_vic_irq(unsigned int irq); - static void vic_enable_cpi(void); - static void do_boot_cpu(__u8 cpuid); -@@ -128,13 +128,12 @@ send_one_QIC_CPI(__u8 cpu, __u8 cpi) - static inline void - send_QIC_CPI(__u32 cpuset, __u8 cpi) - { -- int mask; -- __u8 cpu; -+ int cpu; - -- for_each_cpu(cpu, mask) { -+ for_each_cpu(cpu, mk_cpumask_const(cpu_online_map)) { - if(cpuset & (1<cpu_vm_mask); -+ cpu_clear(cpu, cpu_tlbstate[cpu].active_mm->cpu_vm_mask); - load_cr3(swapper_pg_dir); - } - -@@ -878,7 +876,7 @@ smp_invalidate_interrupt(void) - { - __u8 cpu = get_cpu(); - -- if(!test_bit(cpu, &smp_invalidate_needed)) -+ if (!(smp_invalidate_needed & (1UL << cpu))) - goto out; - /* This will flood messages. Don't uncomment unless you see - * Problems with cross cpu invalidation -@@ -895,7 +893,7 @@ smp_invalidate_interrupt(void) - } else - leave_mm(cpu); - } -- clear_bit(cpu, &smp_invalidate_needed); -+ smp_invalidate_needed |= 1UL << cpu; - out: - put_cpu_no_resched(); - } -@@ -912,7 +910,7 @@ flush_tlb_others (unsigned long cpumask, - - if (!cpumask) - BUG(); -- if ((cpumask & cpu_online_map) != cpumask) -+ if ((cpumask & cpus_coerce(cpu_online_map)) != cpumask) - BUG(); - if (cpumask & (1 << smp_processor_id())) - BUG(); -@@ -954,7 +952,7 @@ flush_tlb_current_task(void) - - preempt_disable(); - -- cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id()); -+ cpu_mask = cpus_coerce(mm->cpu_vm_mask) & ~(1 << smp_processor_id()); - local_flush_tlb(); - if (cpu_mask) - flush_tlb_others(cpu_mask, mm, FLUSH_ALL); -@@ -970,7 +968,7 @@ flush_tlb_mm (struct mm_struct * mm) - - preempt_disable(); - -- cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id()); -+ cpu_mask = cpus_coerce(mm->cpu_vm_mask) & ~(1 << smp_processor_id()); - - if (current->active_mm == mm) { - if (current->mm) -@@ -991,7 +989,7 @@ void flush_tlb_page(struct vm_area_struc - - preempt_disable(); - -- cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id()); -+ cpu_mask = cpus_coerce(mm->cpu_vm_mask) & ~(1 << smp_processor_id()); - if (current->active_mm == mm) { - if(current->mm) - __flush_tlb_one(va); -@@ -1033,7 +1031,7 @@ static void - smp_stop_cpu_function(void *dummy) - { - VDEBUG(("VOYAGER SMP: CPU%d is STOPPING\n", smp_processor_id())); -- clear_bit(smp_processor_id(), &cpu_online_map); -+ cpu_clear(smp_processor_id(), cpu_online_map); - local_irq_disable(); - for(;;) - __asm__("hlt"); -@@ -1100,7 +1098,7 @@ smp_call_function (void (*func) (void *i - int wait) - { - struct call_data_struct data; -- __u32 mask = cpu_online_map; -+ __u32 mask = cpus_coerce(cpu_online_map); - - mask &= ~(1<eip); - asm("movl %%cr3,%0":"=r" (page)); -+#ifdef CONFIG_HIGHPMD /* Oh boy. Error reporting is going to blow major goats. */ -+ printk(KERN_ALERT "%%cr3 = 0x%lx\n", page); -+ /* Mask off flag bits. It should end up 32B-aligned. */ -+ page &= ~(PTRS_PER_PGD*sizeof(pgd_t) - 1); -+ printk(KERN_ALERT "*pdpte = 0x%Lx\n", -+ pgd_val(((pgd_t *)__va(page))[address >> PGDIR_SHIFT])); -+#else /* !CONFIG_HIGHPMD */ - page = ((unsigned long *) __va(page))[address >> 22]; - printk(KERN_ALERT "*pde = %08lx\n", page); - /* -@@ -262,7 +275,8 @@ no_context: - page = ((unsigned long *) __va(page))[address >> PAGE_SHIFT]; - printk(KERN_ALERT "*pte = %08lx\n", page); - } --#endif -+#endif /* !CONFIG_HIGHPTE */ -+#endif /* CONFIG_HIGHPMD */ - die("Oops", regs, error_code); - bust_spinlocks(0); - do_exit(SIGKILL); -@@ -330,8 +344,8 @@ vmalloc_fault: - * and redundant with the set_pmd() on non-PAE. - */ - -- pmd = pmd_offset(pgd, address); -- pmd_k = pmd_offset(pgd_k, address); -+ pmd = pmd_offset_kernel(pgd, address); -+ pmd_k = pmd_offset_kernel(pgd_k, address); - if (!pmd_present(*pmd_k)) - goto no_context; - set_pmd(pmd, *pmd_k); ---- linux-2.6.0-test1/arch/i386/mm/hugetlbpage.c 2003-06-22 12:04:43.000000000 -0700 -+++ 25/arch/i386/mm/hugetlbpage.c 2003-07-19 17:07:16.000000000 -0700 -@@ -87,8 +87,8 @@ static pte_t *huge_pte_alloc(struct mm_s - pmd_t *pmd = NULL; - - pgd = pgd_offset(mm, addr); -- pmd = pmd_alloc(mm, pgd, addr); -- return (pte_t *) pmd; -+ pmd = pmd_alloc_map(mm, pgd, addr); -+ return (pte_t *)pmd; - } - - static pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) -@@ -97,8 +97,8 @@ static pte_t *huge_pte_offset(struct mm_ - pmd_t *pmd = NULL; - - pgd = pgd_offset(mm, addr); -- pmd = pmd_offset(pgd, addr); -- return (pte_t *) pmd; -+ pmd = pmd_offset_map_nested(pgd, addr); -+ return (pte_t *)pmd; - } - - static void set_huge_pte(struct mm_struct *mm, struct vm_area_struct *vma, struct page *page, pte_t * page_table, int write_access) -@@ -145,6 +145,8 @@ int copy_hugetlb_page_range(struct mm_st - ptepage = pte_page(entry); - get_page(ptepage); - set_pte(dst_pte, entry); -+ pmd_unmap(dst_pte); -+ pmd_unmap_nested(src_pte); - dst->rss += (HPAGE_SIZE / PAGE_SIZE); - addr += HPAGE_SIZE; - } -@@ -182,6 +184,7 @@ follow_hugetlb_page(struct mm_struct *mm - - get_page(page); - pages[i] = page; -+ pmd_unmap_nested(pte); - } - - if (vmas) -@@ -271,6 +274,7 @@ follow_huge_pmd(struct mm_struct *mm, un - page += ((address & ~HPAGE_MASK) >> PAGE_SHIFT); - get_page(page); - } -+ pmd_unmap(pmd); - return page; - } - #endif -@@ -314,6 +318,7 @@ void unmap_hugepage_range(struct vm_area - page = pte_page(*pte); - huge_page_release(page); - pte_clear(pte); -+ pmd_unmap_nested(pte); - } - mm->rss -= (end - start) >> PAGE_SHIFT; - flush_tlb_range(vma, start, end); -@@ -348,8 +353,10 @@ int hugetlb_prefault(struct address_spac - ret = -ENOMEM; - goto out; - } -- if (!pte_none(*pte)) -+ if (!pte_none(*pte)) { -+ pmd_unmap(pte); - continue; -+ } - - idx = ((addr - vma->vm_start) >> HPAGE_SHIFT) - + (vma->vm_pgoff >> (HPAGE_SHIFT - PAGE_SHIFT)); -@@ -358,16 +365,19 @@ int hugetlb_prefault(struct address_spac - page = alloc_hugetlb_page(); - if (!page) { - ret = -ENOMEM; -+ pmd_unmap(pte); - goto out; - } - ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC); - unlock_page(page); - if (ret) { - free_huge_page(page); -+ pmd_unmap(pte); - goto out; - } - } - set_huge_pte(mm, vma, page, pte, vma->vm_flags & VM_WRITE); -+ pmd_unmap(pte); - } - out: - spin_unlock(&mm->page_table_lock); ---- linux-2.6.0-test1/arch/i386/mm/init.c 2003-06-26 22:07:23.000000000 -0700 -+++ 25/arch/i386/mm/init.c 2003-07-19 17:07:16.000000000 -0700 -@@ -20,9 +20,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_INITRD --#include --#endif - #include - #include - #include -@@ -59,10 +56,10 @@ static pmd_t * __init one_md_table_init( - #ifdef CONFIG_X86_PAE - pmd_table = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE); - set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT)); -- if (pmd_table != pmd_offset(pgd, 0)) -+ if (pmd_table != pmd_offset_kernel(pgd, 0)) - BUG(); - #else -- pmd_table = pmd_offset(pgd, 0); -+ pmd_table = pmd_offset_kernel(pgd, 0); - #endif - - return pmd_table; -@@ -113,7 +110,7 @@ static void __init page_table_range_init - if (pgd_none(*pgd)) - one_md_table_init(pgd); - -- pmd = pmd_offset(pgd, vaddr); -+ pmd = pmd_offset_kernel(pgd, vaddr); - for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end); pmd++, pmd_idx++) { - if (pmd_none(*pmd)) - one_page_table_init(pmd); -@@ -194,7 +191,7 @@ pte_t *kmap_pte; - pgprot_t kmap_prot; - - #define kmap_get_fixmap_pte(vaddr) \ -- pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) -+ pte_offset_kernel(pmd_offset_kernel(pgd_offset_k(vaddr), (vaddr)), (vaddr)) - - void __init kmap_init(void) - { -@@ -218,7 +215,7 @@ void __init permanent_kmaps_init(pgd_t * - page_table_range_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base); - - pgd = swapper_pg_dir + pgd_index(vaddr); -- pmd = pmd_offset(pgd, vaddr); -+ pmd = pmd_offset_kernel(pgd, vaddr); - pte = pte_offset_kernel(pmd, vaddr); - pkmap_page_table = pte; - } -@@ -512,20 +509,19 @@ void __init mem_init(void) - #endif - } - --#ifdef CONFIG_X86_PAE --struct kmem_cache_s *pae_pgd_cachep; -+kmem_cache_t *pgd_cache; - - void __init pgtable_cache_init(void) - { -- /* -- * PAE pgds must be 16-byte aligned: -- */ -- pae_pgd_cachep = kmem_cache_create("pae_pgd", 32, 0, -- SLAB_HWCACHE_ALIGN | SLAB_MUST_HWCACHE_ALIGN, NULL, NULL); -- if (!pae_pgd_cachep) -- panic("init_pae(): Cannot alloc pae_pgd SLAB cache"); -+ pgd_cache = kmem_cache_create("pgd", -+ PTRS_PER_PGD*sizeof(pgd_t), -+ 0, -+ SLAB_HWCACHE_ALIGN | SLAB_MUST_HWCACHE_ALIGN, -+ pgd_ctor, -+ PTRS_PER_PMD == 1 ? pgd_dtor : NULL); -+ if (!pgd_cache) -+ panic("pgtable_cache_init(): Cannot create pgd cache"); - } --#endif - - /* - * This function cannot be __init, since exceptions don't work in that -@@ -565,7 +561,7 @@ void free_initmem(void) - free_page(addr); - totalram_pages++; - } -- printk (KERN_INFO "Freeing unused kernel memory: %dk freed\n", (&__init_end - &__init_begin) >> 10); -+ printk (KERN_INFO "Freeing unused kernel memory: %dk freed\n", (__init_end - __init_begin) >> 10); - } - - #ifdef CONFIG_BLK_DEV_INITRD ---- linux-2.6.0-test1/arch/i386/mm/ioremap.c 2003-06-14 12:18:04.000000000 -0700 -+++ 25/arch/i386/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -82,7 +82,7 @@ static int remap_area_pages(unsigned lon - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_kernel(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/i386/mm/pageattr.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/i386/mm/pageattr.c 2003-07-19 17:07:16.000000000 -0700 -@@ -23,7 +23,7 @@ static inline pte_t *lookup_address(unsi - pmd_t *pmd; - if (pgd_none(*pgd)) - return NULL; -- pmd = pmd_offset(pgd, address); -+ pmd = pmd_offset_kernel(pgd, address); - if (pmd_none(*pmd)) - return NULL; - if (pmd_large(*pmd)) -@@ -67,19 +67,22 @@ static void flush_kernel_map(void *dummy - - static void set_pmd_pte(pte_t *kpte, unsigned long address, pte_t pte) - { -+ struct page *page; -+ unsigned long flags; -+ - set_pte_atomic(kpte, pte); /* change init_mm */ --#ifndef CONFIG_X86_PAE -- { -- struct list_head *l; -- spin_lock(&mmlist_lock); -- list_for_each(l, &init_mm.mmlist) { -- struct mm_struct *mm = list_entry(l, struct mm_struct, mmlist); -- pmd_t *pmd = pmd_offset(pgd_offset(mm, address), address); -- set_pte_atomic((pte_t *)pmd, pte); -- } -- spin_unlock(&mmlist_lock); -+ if (PTRS_PER_PMD > 1) -+ return; -+ -+ spin_lock_irqsave(&pgd_lock, flags); -+ list_for_each_entry(page, &pgd_list, lru) { -+ pgd_t *pgd; -+ pmd_t *pmd; -+ pgd = (pgd_t *)page_address(page) + pgd_index(address); -+ pmd = pmd_offset_kernel(pgd, address); -+ set_pte_atomic((pte_t *)pmd, pte); - } --#endif -+ spin_unlock_irqrestore(&pgd_lock, flags); - } - - /* -@@ -89,7 +92,7 @@ static void set_pmd_pte(pte_t *kpte, uns - static inline void revert_page(struct page *kpte_page, unsigned long address) - { - pte_t *linear = (pte_t *) -- pmd_offset(pgd_offset(&init_mm, address), address); -+ pmd_offset_kernel(pgd_offset_k(address), address); - set_pmd_pte(linear, address, - pfn_pte((__pa(address) & LARGE_PAGE_MASK) >> PAGE_SHIFT, - PAGE_KERNEL_LARGE)); ---- linux-2.6.0-test1/arch/i386/mm/pgtable.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/i386/mm/pgtable.c 2003-07-19 17:07:16.000000000 -0700 -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -69,7 +70,7 @@ static void set_pte_pfn(unsigned long va - BUG(); - return; - } -- pmd = pmd_offset(pgd, vaddr); -+ pmd = pmd_offset_kernel(pgd, vaddr); - if (pmd_none(*pmd)) { - BUG(); - return; -@@ -109,7 +110,7 @@ void set_pmd_pfn(unsigned long vaddr, un - printk ("set_pmd_pfn: pgd_none\n"); - return; /* BUG(); */ - } -- pmd = pmd_offset(pgd, vaddr); -+ pmd = pmd_offset_kernel(pgd, vaddr); - set_pmd(pmd, pfn_pmd(pfn, flags)); - /* - * It's enough to flush this one mapping. -@@ -151,61 +152,89 @@ struct page *pte_alloc_one(struct mm_str - return pte; - } - --#ifdef CONFIG_X86_PAE -+/* -+ * List of all pgd's needed for non-PAE so it can invalidate entries -+ * in both cached and uncached pgd's; not needed for PAE since the -+ * kernel pmd is shared. If PAE were not to share the pmd a similar -+ * tactic would be needed. This is essentially codepath-based locking -+ * against pageattr.c; it is the unique case in which a valid change -+ * of kernel pagetables can't be lazily synchronized by vmalloc faults. -+ * vmalloc faults work because attached pagetables are never freed. -+ * If the locking proves to be non-performant, a ticketing scheme with -+ * checks at dup_mmap(), exec(), and other mmlist addition points -+ * could be used. The locking scheme was chosen on the basis of -+ * manfred's recommendations and having no core impact whatsoever. -+ * -- wli -+ */ -+spinlock_t pgd_lock = SPIN_LOCK_UNLOCKED; -+LIST_HEAD(pgd_list); - --pgd_t *pgd_alloc(struct mm_struct *mm) -+void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused) - { -- int i; -- pgd_t *pgd = kmem_cache_alloc(pae_pgd_cachep, GFP_KERNEL); -+ unsigned long flags; - -- if (pgd) { -- for (i = 0; i < USER_PTRS_PER_PGD; i++) { -- unsigned long pmd = __get_free_page(GFP_KERNEL); -- if (!pmd) -- goto out_oom; -- clear_page(pmd); -- set_pgd(pgd + i, __pgd(1 + __pa(pmd))); -- } -- memcpy(pgd + USER_PTRS_PER_PGD, -+ if (PTRS_PER_PMD == 1) -+ spin_lock_irqsave(&pgd_lock, flags); -+ -+ memcpy((pgd_t *)pgd + USER_PTRS_PER_PGD, - swapper_pg_dir + USER_PTRS_PER_PGD, - (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); -- } -- return pgd; --out_oom: -- for (i--; i >= 0; i--) -- free_page((unsigned long)__va(pgd_val(pgd[i])-1)); -- kmem_cache_free(pae_pgd_cachep, pgd); -- return NULL; -+ -+ if (PTRS_PER_PMD > 1) -+ return; -+ -+ list_add(&virt_to_page(pgd)->lru, &pgd_list); -+ spin_unlock_irqrestore(&pgd_lock, flags); -+ memset(pgd, 0, USER_PTRS_PER_PGD*sizeof(pgd_t)); - } - --void pgd_free(pgd_t *pgd) -+/* never called when PTRS_PER_PMD > 1 */ -+void pgd_dtor(void *pgd, kmem_cache_t *cache, unsigned long unused) - { -- int i; -+ unsigned long flags; /* can be called from interrupt context */ - -- for (i = 0; i < USER_PTRS_PER_PGD; i++) -- free_page((unsigned long)__va(pgd_val(pgd[i])-1)); -- kmem_cache_free(pae_pgd_cachep, pgd); -+ spin_lock_irqsave(&pgd_lock, flags); -+ list_del(&virt_to_page(pgd)->lru); -+ spin_unlock_irqrestore(&pgd_lock, flags); - } - --#else -- - pgd_t *pgd_alloc(struct mm_struct *mm) - { -- pgd_t *pgd = (pgd_t *)__get_free_page(GFP_KERNEL); -+ int i; -+ pgd_t *pgd = kmem_cache_alloc(pgd_cache, GFP_KERNEL); - -- if (pgd) { -- memset(pgd, 0, USER_PTRS_PER_PGD * sizeof(pgd_t)); -- memcpy(pgd + USER_PTRS_PER_PGD, -- swapper_pg_dir + USER_PTRS_PER_PGD, -- (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); -+ if (PTRS_PER_PMD == 1 || !pgd) -+ return pgd; -+ -+ for (i = 0; i < USER_PTRS_PER_PGD; ++i) { -+ struct page *pmd; -+#ifdef CONFIG_HIGHPMD -+ pmd = alloc_page(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT); -+#else -+ pmd = alloc_page(GFP_KERNEL|__GFP_REPEAT); -+#endif -+ if (!pmd) -+ goto out_oom; -+ clear_highpage(pmd); -+ set_pgd(&pgd[i], __pgd(1ULL | (u64)page_to_pfn(pmd) << PAGE_SHIFT)); - } - return pgd; -+ -+out_oom: -+ for (i--; i >= 0; i--) -+ __free_page(pgd_page(pgd[i])); -+ kmem_cache_free(pgd_cache, pgd); -+ return NULL; - } - - void pgd_free(pgd_t *pgd) - { -- free_page((unsigned long)pgd); --} -- --#endif /* CONFIG_X86_PAE */ -+ int i; - -+ /* in the PAE case user pgd entries are overwritten before usage */ -+ if (PTRS_PER_PMD > 1) -+ for (i = 0; i < USER_PTRS_PER_PGD; ++i) -+ __free_page(pgd_page(pgd[i])); -+ /* in the non-PAE case, clear_page_tables() clears user pgd entries */ -+ kmem_cache_free(pgd_cache, pgd); -+} ---- linux-2.6.0-test1/arch/i386/pci/legacy.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/i386/pci/legacy.c 2003-07-19 17:03:49.000000000 -0700 -@@ -24,7 +24,7 @@ static void __devinit pcibios_fixup_peer - for (devfn = 0; devfn < 256; devfn += 8) { - if (!raw_pci_ops->read(0, n, devfn, PCI_VENDOR_ID, 2, &l) && - l != 0x0000 && l != 0xffff) { -- DBG("Found device at %02x:%02x [%04x]\n", n, dev->devfn, l); -+ DBG("Found device at %02x:%02x [%04x]\n", n, devfn, l); - printk(KERN_INFO "PCI: Discovered peer bus %02x\n", n); - pci_scan_bus(n, &pci_root_ops, NULL); - break; ---- linux-2.6.0-test1/arch/i386/pci/visws.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/i386/pci/visws.c 2003-07-19 17:03:49.000000000 -0700 -@@ -17,7 +17,7 @@ - - int broken_hp_bios_irq9; - --extern struct pci_ops pci_direct_conf1; -+extern struct pci_raw_ops pci_direct_conf1; - - static int pci_visws_enable_irq(struct pci_dev *dev) { return 0; } - -@@ -101,8 +101,9 @@ static int __init pcibios_init(void) - printk(KERN_INFO "PCI: Lithium bridge A bus: %u, " - "bridge B (PIIX4) bus: %u\n", pci_bus1, pci_bus0); - -- pci_scan_bus(pci_bus0, &pci_direct_conf1, NULL); -- pci_scan_bus(pci_bus1, &pci_direct_conf1, NULL); -+ raw_pci_ops = &pci_direct_conf1; -+ pci_scan_bus(pci_bus0, &pci_root_ops, NULL); -+ pci_scan_bus(pci_bus1, &pci_root_ops, NULL); - pci_fixup_irqs(visws_swizzle, visws_map_irq); - pcibios_resource_survey(); - return 0; ---- linux-2.6.0-test1/arch/ia64/hp/sim/simscsi.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ia64/hp/sim/simscsi.c 2003-07-19 17:03:49.000000000 -0700 -@@ -9,7 +9,7 @@ - * 99/12/18 David Mosberger Added support for READ10/WRITE10 needed by linux v2.3.33 - */ - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/ia64/ia32/ia32_ioctl.c 2003-06-22 12:04:43.000000000 -0700 -+++ 25/arch/ia64/ia32/ia32_ioctl.c 2003-07-19 17:03:49.000000000 -0700 -@@ -52,7 +52,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/ia64/kernel/acpi.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/kernel/acpi.c 2003-07-19 17:03:49.000000000 -0700 -@@ -720,7 +720,7 @@ acpi_register_irq (u32 gsi, u32 polarity - { - int vector = 0; - -- if (acpi_madt->flags.pcat_compat && (gsi < 16)) -+ if (has_8259 && (gsi < 16)) - return isa_irq_to_vector(gsi); - - if (!iosapic_register_intr) ---- linux-2.6.0-test1/arch/ia64/kernel/entry.S 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ia64/kernel/entry.S 2003-07-19 17:03:49.000000000 -0700 -@@ -61,7 +61,17 @@ ENTRY(ia64_execve) - mov out2=in2 // envp - add out3=16,sp // regs - br.call.sptk.many rp=sys_execve --.ret0: cmp4.ge p6,p7=r8,r0 -+.ret0: -+#ifdef CONFIG_IA32_SUPPORT -+ /* -+ * Check if we're returning to ia32 mode. If so, we need to restore ia32 registers -+ * from pt_regs. -+ */ -+ adds r16=PT(CR_IPSR)+16,sp -+ ;; -+ ld8 r16=[r16] -+#endif -+ cmp4.ge p6,p7=r8,r0 - mov ar.pfs=loc1 // restore ar.pfs - sxt4 r8=r8 // return 64-bit result - ;; -@@ -89,6 +99,12 @@ ENTRY(ia64_execve) - ldf.fill f23=[sp]; ldf.fill f24=[sp]; mov f25=f0 - ldf.fill f26=[sp]; ldf.fill f27=[sp]; mov f28=f0 - ldf.fill f29=[sp]; ldf.fill f30=[sp]; mov f31=f0 -+#ifdef CONFIG_IA32_SUPPORT -+ tbit.nz p6,p0=r16, IA64_PSR_IS_BIT -+ movl loc0=ia64_ret_from_ia32_execve -+ ;; -+(p6) mov rp=loc0 -+#endif - br.ret.sptk.many rp - END(ia64_execve) - -@@ -688,7 +704,7 @@ GLOBAL_ENTRY(ia64_leave_syscall) - mov b7=r0 // clear b7 - ;; - (pUStk) st1 [r14]=r3 -- movl r17=THIS_CPU(ia64_phys_stacked_size_p8) -+ addl r17=THIS_CPU(ia64_phys_stacked_size_p8),r0 - ;; - mov r16=ar.bsp // get existing backing store pointer - srlz.i // ensure interruption collection is off -@@ -701,6 +717,19 @@ GLOBAL_ENTRY(ia64_leave_syscall) - br.cond.sptk.many rbs_switch - END(ia64_leave_syscall) - -+#ifdef CONFIG_IA32_SUPPORT -+GLOBAL_ENTRY(ia64_ret_from_ia32_execve) -+ PT_REGS_UNWIND_INFO(0) -+ adds r2=PT(R8)+16,sp // r2 = &pt_regs.r8 -+ adds r3=PT(R10)+16,sp // r3 = &pt_regs.r10 -+ ;; -+ .mem.offset 0,0 -+ st8.spill [r2]=r8 // store return value in slot for r8 and set unat bit -+ .mem.offset 8,0 -+ st8.spill [r3]=r0 // clear error indication in slot for r10 and set unat bit -+END(ia64_ret_from_ia32_execve_syscall) -+ // fall through -+#endif /* CONFIG_IA32_SUPPORT */ - GLOBAL_ENTRY(ia64_leave_kernel) - PT_REGS_UNWIND_INFO(0) - /* -@@ -841,7 +870,7 @@ GLOBAL_ENTRY(ia64_leave_kernel) - shr.u r18=r19,16 // get byte size of existing "dirty" partition - ;; - mov r16=ar.bsp // get existing backing store pointer -- movl r17=THIS_CPU(ia64_phys_stacked_size_p8) -+ addl r17=THIS_CPU(ia64_phys_stacked_size_p8),r0 - ;; - ld4 r17=[r17] // r17 = cpu_data->phys_stacked_size_p8 - (pKStk) br.cond.dpnt skip_rbs_switch ---- linux-2.6.0-test1/arch/ia64/kernel/fsys.S 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ia64/kernel/fsys.S 2003-07-19 17:03:49.000000000 -0700 -@@ -165,7 +165,7 @@ ENTRY(fsys_gettimeofday) - .altrp b6 - .body - add r9=TI_FLAGS+IA64_TASK_SIZE,r16 -- movl r3=THIS_CPU(cpu_info) -+ addl r3=THIS_CPU(cpu_info),r0 - - mov.m r31=ar.itc // put time stamp into r31 (ITC) == now (35 cyc) - #ifdef CONFIG_SMP -@@ -177,7 +177,7 @@ ENTRY(fsys_gettimeofday) - movl r19=xtime // xtime is a timespec struct - - ld8 r10=[r10] // r10 <- __per_cpu_offset[0] -- movl r21=THIS_CPU(cpu_info) -+ addl r21=THIS_CPU(cpu_info),r0 - ;; - add r10=r21, r10 // r10 <- &cpu_data(time_keeper_id) - tbit.nz p8,p0 = r2, IA64_SAL_PLATFORM_FEATURE_ITC_DRIFT_BIT ---- linux-2.6.0-test1/arch/ia64/kernel/ia64_ksyms.c 2003-06-22 12:04:43.000000000 -0700 -+++ 25/arch/ia64/kernel/ia64_ksyms.c 2003-07-19 17:03:49.000000000 -0700 -@@ -64,9 +64,10 @@ EXPORT_SYMBOL(ia64_pfn_valid); - #endif - - #include --EXPORT_SYMBOL(cpu_info__per_cpu); -+EXPORT_SYMBOL(per_cpu__cpu_info); - #ifdef CONFIG_SMP - EXPORT_SYMBOL(__per_cpu_offset); -+EXPORT_SYMBOL(per_cpu__local_per_cpu_offset); - #endif - EXPORT_SYMBOL(kernel_thread); - ---- linux-2.6.0-test1/arch/ia64/kernel/init_task.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/kernel/init_task.c 2003-07-19 17:03:49.000000000 -0700 -@@ -2,7 +2,7 @@ - * This is where we statically allocate and initialize the initial - * task. - * -- * Copyright (C) 1999, 2002 Hewlett-Packard Co -+ * Copyright (C) 1999, 2002-2003 Hewlett-Packard Co - * David Mosberger-Tang - */ - -@@ -34,7 +34,7 @@ static union { - struct thread_info thread_info; - } s; - unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)]; --} init_task_mem __attribute__((section(".data.init_task"))) = {{ -+} init_task_mem asm ("init_task_mem") __attribute__((section(".data.init_task"))) = {{ - .task = INIT_TASK(init_task_mem.s.task), - .thread_info = INIT_THREAD_INFO(init_task_mem.s.task) - }}; ---- linux-2.6.0-test1/arch/ia64/kernel/iosapic.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/kernel/iosapic.c 2003-07-19 17:04:06.000000000 -0700 -@@ -274,7 +274,7 @@ unmask_irq (unsigned int irq) - - - static void --iosapic_set_affinity (unsigned int irq, unsigned long mask) -+iosapic_set_affinity (unsigned int irq, cpumask_t mask) - { - #ifdef CONFIG_SMP - unsigned long flags; -@@ -287,12 +287,10 @@ iosapic_set_affinity (unsigned int irq, - irq &= (~IA64_IRQ_REDIRECTED); - vec = irq_to_vector(irq); - -- mask &= cpu_online_map; -- -- if (!mask || vec >= IA64_NUM_VECTORS) -+ if (cpus_empty(mask) || vec >= IA64_NUM_VECTORS) - return; - -- dest = cpu_physical_id(ffz(~mask)); -+ dest = cpu_physical_id(first_cpu(mask)); - - rte_index = iosapic_intr_info[vec].rte_index; - addr = iosapic_intr_info[vec].addr; -@@ -717,6 +715,7 @@ iosapic_parse_prt (void) - register_intr(gsi, vector, IOSAPIC_LOWEST_PRIORITY, IOSAPIC_POL_LOW, - IOSAPIC_LEVEL); - } -+ entry->irq = vector; - snprintf(pci_id, sizeof(pci_id), "%02x:%02x:%02x[%c]", - entry->id.segment, entry->id.bus, entry->id.device, 'A' + entry->pin); - ---- linux-2.6.0-test1/arch/ia64/kernel/irq.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/kernel/irq.c 2003-07-19 17:04:06.000000000 -0700 -@@ -898,13 +898,14 @@ int setup_irq(unsigned int irq, struct i - static struct proc_dir_entry * root_irq_dir; - static struct proc_dir_entry * irq_dir [NR_IRQS]; - --#define HEX_DIGITS 8 -+#define HEX_DIGITS (2*sizeof(cpumask_t)) - --static unsigned int parse_hex_value (const char *buffer, -- unsigned long count, unsigned long *ret) -+static unsigned int parse_hex_value(const char *buffer, -+ unsigned long count, cpumask_t *ret) - { -- unsigned char hexnum [HEX_DIGITS]; -- unsigned long value, i; -+ unsigned char hexnum[HEX_DIGITS]; -+ cpumask_t value = CPU_MASK_NONE; -+ unsigned long i; - - if (!count) - return -EINVAL; -@@ -917,10 +918,9 @@ static unsigned int parse_hex_value (con - * Parse the first 8 characters as a hex string, any non-hex char - * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. - */ -- value = 0; -- - for (i = 0; i < count; i++) { - unsigned int c = hexnum[i]; -+ int k; - - switch (c) { - case '0' ... '9': c -= '0'; break; -@@ -929,7 +929,10 @@ static unsigned int parse_hex_value (con - default: - goto out; - } -- value = (value << 4) | c; -+ cpus_shift_left(value, value, 4); -+ for (k = 0; k < 4; ++k) -+ if (test_bit(k, (unsigned long *)&c)) -+ cpu_set(k, value); - } - out: - *ret = value; -@@ -940,12 +943,15 @@ out: - - static struct proc_dir_entry * smp_affinity_entry [NR_IRQS]; - --static unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; -+static cpumask_t irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; -+ - static char irq_redir [NR_IRQS]; // = { [0 ... NR_IRQS-1] = 1 }; - - void set_irq_affinity_info (unsigned int irq, int hwid, int redir) - { -- unsigned long mask = 1UL<handler->set_affinity(irq | (redir? IA64_IRQ_REDIRECTED : 0), new_value); -@@ -1003,18 +1021,28 @@ static int irq_affinity_write_proc (stru - static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -- unsigned long *mask = (unsigned long *) data; -+ cpumask_t *mask = (cpumask_t *)data; -+ int k, len = 0; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", *mask); -+ -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(unsigned long); ++k) { -+ int j = sprintf(page, "%04hx", (u16)cpus_coerce(*mask)); -+ len += j; -+ page += j; -+ cpus_shift_right(*mask, *mask, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int prof_cpu_mask_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data; -- int full_count = count, err; -- unsigned long new_value; -+ cpumask_t *mask = (cpumask_t *)data; -+ unsigned long full_count = count, err; -+ cpumask_t new_value; - - err = parse_hex_value(buffer, count, &new_value); - if (err) -@@ -1058,7 +1086,7 @@ static void register_irq_proc (unsigned - #endif - } - --unsigned long prof_cpu_mask = -1; -+cpumask_t prof_cpu_mask = CPU_MASK_ALL; - - void init_irq_proc (void) - { ---- linux-2.6.0-test1/arch/ia64/kernel/module.c 2003-06-22 12:04:43.000000000 -0700 -+++ 25/arch/ia64/kernel/module.c 2003-07-19 17:03:49.000000000 -0700 -@@ -164,7 +164,7 @@ static int - apply_imm64 (struct module *mod, struct insn *insn, uint64_t val) - { - if (slot(insn) != 2) { -- printk(KERN_ERR "%s: illegal slot number %d for IMM64\n", -+ printk(KERN_ERR "%s: invalid slot number %d for IMM64\n", - mod->name, slot(insn)); - return 0; - } -@@ -176,7 +176,7 @@ static int - apply_imm60 (struct module *mod, struct insn *insn, uint64_t val) - { - if (slot(insn) != 2) { -- printk(KERN_ERR "%s: illegal slot number %d for IMM60\n", -+ printk(KERN_ERR "%s: invalid slot number %d for IMM60\n", - mod->name, slot(insn)); - return 0; - } ---- linux-2.6.0-test1/arch/ia64/kernel/perfmon.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/kernel/perfmon.c 2003-07-19 17:04:06.000000000 -0700 -@@ -221,14 +221,6 @@ - - #define PFM_REG_RETFLAG_SET(flags, val) do { flags &= ~PFM_REG_RETFL_MASK; flags |= (val); } while(0) - --#ifdef CONFIG_SMP --#define PFM_CPU_ONLINE_MAP cpu_online_map --#define cpu_is_online(i) (PFM_CPU_ONLINE_MAP & (1UL << i)) --#else --#define PFM_CPU_ONLINE_MAP 1UL --#define cpu_is_online(i) (i==0) --#endif -- - /* - * cmp0 must be the value of pmc0 - */ -@@ -566,7 +558,7 @@ static struct vm_operations_struct pfm_v - - - #define pfm_wait_task_inactive(t) wait_task_inactive(t) --#define pfm_get_cpu_var(v) __get_cpu_var(v) -+#define pfm_get_cpu_var(v) __ia64_per_cpu_var(v) - #define pfm_get_cpu_data(a,b) per_cpu(a, b) - typedef irqreturn_t pfm_irq_handler_t; - #define PFM_IRQ_HANDLER_RET(v) do { \ -@@ -5354,7 +5346,7 @@ pfm_proc_info(char *page) - p += sprintf(p, "ovfl_mask : 0x%lx\n", pmu_conf.ovfl_val); - - for(i=0; i < NR_CPUS; i++) { -- if (cpu_is_online(i) == 0) continue; -+ if (cpu_online(i) == 0) continue; - p += sprintf(p, "CPU%-2d overflow intrs : %lu\n", i, pfm_stats[i].pfm_ovfl_intr_count); - p += sprintf(p, "CPU%-2d overflow cycles : %lu\n", i, pfm_stats[i].pfm_ovfl_intr_cycles); - p += sprintf(p, "CPU%-2d overflow min : %lu\n", i, pfm_stats[i].pfm_ovfl_intr_cycles_min); -@@ -5372,7 +5364,7 @@ pfm_proc_info(char *page) - p += sprintf(p, "CPU%-2d activations : %lu\n", i, pfm_get_cpu_data(pmu_activation_number,i)); - } - -- if (hweight64(PFM_CPU_ONLINE_MAP) == 1) -+ if (num_online_cpus() == 1) - { - psr = pfm_get_psr(); - ia64_srlz_d(); ---- linux-2.6.0-test1/arch/ia64/kernel/ptrace.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ia64/kernel/ptrace.c 2003-07-19 17:03:49.000000000 -0700 -@@ -42,7 +42,7 @@ - (IA64_PSR_UM | IA64_PSR_DB | IA64_PSR_IS | IA64_PSR_ID | IA64_PSR_DD | IA64_PSR_RI) - #define IPSR_READ_MASK IPSR_WRITE_MASK - --#define PTRACE_DEBUG 1 -+#define PTRACE_DEBUG 0 - - #if PTRACE_DEBUG - # define dprintk(format...) printk(format) ---- linux-2.6.0-test1/arch/ia64/kernel/setup.c 2003-06-22 12:04:43.000000000 -0700 -+++ 25/arch/ia64/kernel/setup.c 2003-07-19 17:04:07.000000000 -0700 -@@ -56,6 +56,7 @@ unsigned long __per_cpu_offset[NR_CPUS]; - #endif - - DEFINE_PER_CPU(struct cpuinfo_ia64, cpu_info); -+DEFINE_PER_CPU(unsigned long, local_per_cpu_offset); - DEFINE_PER_CPU(unsigned long, ia64_phys_stacked_size_p8); - unsigned long ia64_cycles_per_usec; - struct ia64_boot_param *ia64_boot_param; -@@ -558,7 +559,7 @@ static void * - c_start (struct seq_file *m, loff_t *pos) - { - #ifdef CONFIG_SMP -- while (*pos < NR_CPUS && !(cpu_online_map & (1UL << *pos))) -+ while (*pos < NR_CPUS && !cpu_isset(*pos, cpu_online_map)) - ++*pos; - #endif - return *pos < NR_CPUS ? cpu_data(*pos) : NULL; -@@ -709,6 +710,8 @@ cpu_init (void) - memcpy(cpu_data, __phys_per_cpu_start, __per_cpu_end - __per_cpu_start); - __per_cpu_offset[cpu] = (char *) cpu_data - __per_cpu_start; - cpu_data += PERCPU_PAGE_SIZE; -+ -+ per_cpu(local_per_cpu_offset, cpu) = __per_cpu_offset[cpu]; - } - } - cpu_data = __per_cpu_start + __per_cpu_offset[smp_processor_id()]; -@@ -716,19 +719,18 @@ cpu_init (void) - cpu_data = __phys_per_cpu_start; - #endif /* !CONFIG_SMP */ - -- cpu_info = cpu_data + ((char *) &__get_cpu_var(cpu_info) - __per_cpu_start); --#ifdef CONFIG_NUMA -- cpu_info->node_data = get_node_data_ptr(); --#endif -- - get_max_cacheline_size(); - - /* - * We can't pass "local_cpu_data" to identify_cpu() because we haven't called - * ia64_mmu_init() yet. And we can't call ia64_mmu_init() first because it - * depends on the data returned by identify_cpu(). We break the dependency by -- * accessing cpu_data() the old way, through identity mapped space. -+ * accessing cpu_data() through the canonical per-CPU address. - */ -+ cpu_info = cpu_data + ((char *) &__ia64_per_cpu_var(cpu_info) - __per_cpu_start); -+#ifdef CONFIG_NUMA -+ cpu_info->node_data = get_node_data_ptr(); -+#endif - identify_cpu(cpu_info); - - #ifdef CONFIG_MCKINLEY ---- linux-2.6.0-test1/arch/ia64/kernel/smpboot.c 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/kernel/smpboot.c 2003-07-19 17:04:07.000000000 -0700 -@@ -79,13 +79,13 @@ int cpucount; - task_t *task_for_booting_cpu; - - /* Bitmask of currently online CPUs */ --volatile unsigned long cpu_online_map; --unsigned long phys_cpu_present_map; -+cpumask_t cpu_online_map; -+cpumask_t phys_cpu_present_map; - - /* which logical CPU number maps to which CPU (physical APIC ID) */ - volatile int ia64_cpu_to_sapicid[NR_CPUS]; - --static volatile unsigned long cpu_callin_map; -+static volatile cpumask_t cpu_callin_map; - - struct smp_boot_data smp_boot_data __initdata; - -@@ -282,7 +282,7 @@ smp_callin (void) - cpuid = smp_processor_id(); - phys_id = hard_smp_processor_id(); - -- if (test_and_set_bit(cpuid, &cpu_online_map)) { -+ if (cpu_test_and_set(cpuid, cpu_online_map)) { - printk(KERN_ERR "huh, phys CPU#0x%x, CPU#0x%x already present??\n", - phys_id, cpuid); - BUG(); -@@ -327,7 +327,7 @@ smp_callin (void) - /* - * Allow the master to continue. - */ -- set_bit(cpuid, &cpu_callin_map); -+ cpu_set(cpuid, cpu_callin_map); - Dprintk("Stack on CPU %d at about %p\n",cpuid, &cpuid); - } - -@@ -391,19 +391,19 @@ do_boot_cpu (int sapicid, int cpu) - */ - Dprintk("Waiting on callin_map ..."); - for (timeout = 0; timeout < 100000; timeout++) { -- if (test_bit(cpu, &cpu_callin_map)) -+ if (cpu_isset(cpu, cpu_callin_map)) - break; /* It has booted */ - udelay(100); - } - Dprintk("\n"); - -- if (test_bit(cpu, &cpu_callin_map)) { -+ if (cpu_isset(cpu, cpu_callin_map)) { - /* number CPUs logically, starting from 1 (BSP is 0) */ - printk(KERN_INFO "CPU%d: CPU has booted.\n", cpu); - } else { - printk(KERN_ERR "Processor 0x%x/0x%x is stuck.\n", cpu, sapicid); - ia64_cpu_to_sapicid[cpu] = -1; -- clear_bit(cpu, &cpu_online_map); /* was set in smp_callin() */ -+ cpu_clear(cpu, cpu_online_map); /* was set in smp_callin() */ - return -EINVAL; - } - return 0; -@@ -446,13 +446,14 @@ smp_build_cpu_map (void) - ia64_cpu_to_sapicid[cpu] = -1; - - ia64_cpu_to_sapicid[0] = boot_cpu_id; -- phys_cpu_present_map = 1; -+ cpus_clear(phys_cpu_present_map); -+ cpu_set(0, phys_cpu_present_map); - - for (cpu = 1, i = 0; i < smp_boot_data.cpu_count; i++) { - sapicid = smp_boot_data.cpu_phys_id[i]; - if (sapicid == boot_cpu_id) - continue; -- phys_cpu_present_map |= (1UL << cpu); -+ cpu_set(cpu, phys_cpu_present_map); - ia64_cpu_to_sapicid[cpu] = sapicid; - cpu++; - } -@@ -463,7 +464,7 @@ smp_build_cpu_map (void) - /* on which node is each logical CPU (one cacheline even for 64 CPUs) */ - volatile char cpu_to_node_map[NR_CPUS] __cacheline_aligned; - /* which logical CPUs are on which nodes */ --volatile unsigned long node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned; -+volatile cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned; - - /* - * Build cpu to node mapping and initialize the per node cpu masks. -@@ -474,7 +475,7 @@ build_cpu_to_node_map (void) - int cpu, i, node; - - for(node=0; node= 0) -- node_to_cpu_mask[node] |= (1UL << cpu); -+ cpu_set(cpu, node_to_cpu_mask[node]); - } - } - -@@ -515,8 +516,8 @@ smp_prepare_cpus (unsigned int max_cpus) - /* - * We have the boot CPU online for sure. - */ -- set_bit(0, &cpu_online_map); -- set_bit(0, &cpu_callin_map); -+ cpu_set(0, cpu_online_map); -+ cpu_set(0, cpu_callin_map); - - local_cpu_data->loops_per_jiffy = loops_per_jiffy; - ia64_cpu_to_sapicid[0] = boot_cpu_id; -@@ -531,15 +532,18 @@ smp_prepare_cpus (unsigned int max_cpus) - */ - if (!max_cpus) { - printk(KERN_INFO "SMP mode deactivated.\n"); -- cpu_online_map = phys_cpu_present_map = 1; -+ cpus_clear(cpu_online_map); -+ cpus_clear(phys_cpu_present_map); -+ cpu_set(1, cpu_online_map); -+ cpu_set(1, phys_cpu_present_map); - return; - } - } - - void __devinit smp_prepare_boot_cpu(void) - { -- set_bit(smp_processor_id(), &cpu_online_map); -- set_bit(smp_processor_id(), &cpu_callin_map); -+ cpu_set(smp_processor_id(), cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_callin_map); - } - - void ---- linux-2.6.0-test1/arch/ia64/kernel/smp.c 2003-06-14 12:18:50.000000000 -0700 -+++ 25/arch/ia64/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -72,7 +72,7 @@ static volatile struct call_data_struct - #define IPI_CPU_STOP 1 - - /* This needs to be cacheline aligned because it is written to by *other* CPUs. */ --static DEFINE_PER_CPU(__u64, ipi_operation) ____cacheline_aligned; -+static DEFINE_PER_CPU(u64, ipi_operation) ____cacheline_aligned; - - static void - stop_this_cpu (void) -@@ -81,7 +81,7 @@ stop_this_cpu (void) - /* - * Remove this CPU: - */ -- clear_bit(smp_processor_id(), &cpu_online_map); -+ cpu_clear(smp_processor_id(), cpu_online_map); - max_xtp(); - local_irq_disable(); - cpu_halt(); -@@ -91,7 +91,7 @@ irqreturn_t - handle_IPI (int irq, void *dev_id, struct pt_regs *regs) - { - int this_cpu = get_cpu(); -- unsigned long *pending_ipis = &__get_cpu_var(ipi_operation); -+ unsigned long *pending_ipis = &__ia64_per_cpu_var(ipi_operation); - unsigned long ops; - - /* Count this now; we may make a call that never returns. */ ---- linux-2.6.0-test1/arch/ia64/kernel/time.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/ia64/kernel/time.c 2003-07-19 17:04:07.000000000 -0700 -@@ -40,13 +40,13 @@ unsigned long last_cli_ip; - static void - do_profile (unsigned long ip) - { -- extern unsigned long prof_cpu_mask; -+ extern cpumask_t prof_cpu_mask; - extern char _stext; - - if (!prof_buffer) - return; - -- if (!((1UL << smp_processor_id()) & prof_cpu_mask)) -+ if (!cpu_isset(smp_processor_id(), prof_cpu_mask)) - return; - - ip -= (unsigned long) &_stext; -@@ -83,12 +83,11 @@ unsigned long - itc_get_offset (void) - { - unsigned long elapsed_cycles, lost = jiffies - wall_jiffies; -- unsigned long now, last_tick; -+ unsigned long now = ia64_get_itc(), last_tick; - - last_tick = (cpu_data(TIME_KEEPER_ID)->itm_next - - (lost + 1)*cpu_data(TIME_KEEPER_ID)->itm_delta); - -- now = ia64_get_itc(); - if (unlikely((long) (now - last_tick) < 0)) { - printk(KERN_ERR "CPU %d: now < last_tick (now=0x%lx,last_tick=0x%lx)!\n", - smp_processor_id(), now, last_tick); ---- linux-2.6.0-test1/arch/ia64/Makefile 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -66,8 +66,7 @@ core-$(CONFIG_IA64_SGI_SN2) += arch/ia64 - drivers-$(CONFIG_PCI) += arch/ia64/pci/ - drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ - drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ --drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/ \ -- arch/ia64/sn/ -+drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/ - - boot := arch/ia64/boot - ---- linux-2.6.0-test1/arch/ia64/mm/hugetlbpage.c 2003-06-22 12:04:43.000000000 -0700 -+++ 25/arch/ia64/mm/hugetlbpage.c 2003-07-19 17:07:16.000000000 -0700 -@@ -60,9 +60,9 @@ huge_pte_alloc (struct mm_struct *mm, un - pte_t *pte = NULL; - - pgd = pgd_offset(mm, taddr); -- pmd = pmd_alloc(mm, pgd, taddr); -+ pmd = pmd_alloc_map(mm, pgd, taddr); - if (pmd) -- pte = pte_alloc_map(mm, pmd, taddr); -+ pte = pte_alloc_map(mm, pgd, &pmd, taddr); - return pte; - } - ---- linux-2.6.0-test1/arch/ia64/mm/init.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ia64/mm/init.c 2003-07-19 17:07:16.000000000 -0700 -@@ -286,10 +286,10 @@ put_kernel_page (struct page *page, unsi - - spin_lock(&init_mm.page_table_lock); - { -- pmd = pmd_alloc(&init_mm, pgd, address); -+ pmd = pmd_alloc_kernel(&init_mm, pgd, address); - if (!pmd) - goto out; -- pte = pte_alloc_map(&init_mm, pmd, address); -+ pte = pte_alloc_map(&init_mm, pgd, &pmd, address); - if (!pte) - goto out; - if (!pte_none(*pte)) { ---- linux-2.6.0-test1/arch/ia64/pci/pci.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ia64/pci/pci.c 2003-07-19 17:03:49.000000000 -0700 -@@ -124,7 +124,7 @@ subsys_initcall(pci_acpi_init); - - /* Called by ACPI when it finds a new root bus. */ - --static struct pci_controller * -+static struct pci_controller * __devinit - alloc_pci_controller (int seg) - { - struct pci_controller *controller; -@@ -138,7 +138,7 @@ alloc_pci_controller (int seg) - return controller; - } - --static int -+static int __devinit - alloc_resource (char *name, struct resource *root, unsigned long start, unsigned long end, unsigned long flags) - { - struct resource *res; -@@ -159,7 +159,7 @@ alloc_resource (char *name, struct resou - return 0; - } - --static u64 -+static u64 __devinit - add_io_space (struct acpi_resource_address64 *addr) - { - u64 offset; -@@ -190,7 +190,7 @@ add_io_space (struct acpi_resource_addre - return IO_SPACE_BASE(i); - } - --static acpi_status -+static acpi_status __devinit - count_window (struct acpi_resource *resource, void *data) - { - unsigned int *windows = (unsigned int *) data; -@@ -211,7 +211,7 @@ struct pci_root_info { - char *name; - }; - --static acpi_status -+static acpi_status __devinit - add_window (struct acpi_resource *res, void *data) - { - struct pci_root_info *info = (struct pci_root_info *) data; -@@ -252,7 +252,7 @@ add_window (struct acpi_resource *res, v - return AE_OK; - } - --struct pci_bus * -+struct pci_bus * __devinit - pci_acpi_scan_root (struct acpi_device *device, int domain, int bus) - { - struct pci_root_info info; ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/ia64/scripts/check-model.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1 @@ -+int __attribute__ ((__model__ (__small__))) x; ---- linux-2.6.0-test1/arch/ia64/scripts/toolchain-flags 2003-07-02 14:53:12.000000000 -0700 -+++ 25/arch/ia64/scripts/toolchain-flags 2003-07-19 17:03:49.000000000 -0700 -@@ -2,6 +2,7 @@ - # - # Check whether linker can handle cross-segment @segrel(): - # -+CPPFLAGS="" - CC=$1 - OBJDUMP=$2 - dir=$(dirname $0) -@@ -11,10 +12,17 @@ $CC -nostdlib -static -Wl,-T$dir/check-s - res=$($OBJDUMP --full --section .rodata $out | fgrep 000 | cut -f3 -d' ') - rm -f $out - if [ $res != 00000a00 ]; then -- echo " -DHAVE_BUGGY_SEGREL" -+ CPPFLAGS="$CPPFLAGS -DHAVE_BUGGY_SEGREL" - cat >&2 <15)) { -- printk("Trying to request illegal IRQ\n"); -+ printk("Trying to request invalid IRQ\n"); - return -ENXIO; - } - -@@ -72,7 +72,7 @@ int dn_request_irq(unsigned int irq, irq - void dn_free_irq(unsigned int irq, void *dev_id) { - - if((irq<0) || (irq>15)) { -- printk("Trying to free illegal IRQ\n"); -+ printk("Trying to free invalid IRQ\n"); - return ; - } - ---- linux-2.6.0-test1/arch/m68k/atari/stram.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/m68k/atari/stram.c 2003-07-19 17:03:49.000000000 -0700 -@@ -37,7 +37,6 @@ - #define MAJOR_NR Z2RAM_MAJOR - #define do_z2_request do_stram_request - #define DEVICE_NR(device) (minor(device)) --#include - #endif - - #undef DEBUG ---- linux-2.6.0-test1/arch/m68k/kernel/head.S 2003-06-14 12:18:51.000000000 -0700 -+++ 25/arch/m68k/kernel/head.S 2003-07-19 17:07:16.000000000 -0700 -@@ -110,7 +110,7 @@ - * - * These routines are used by other mmu routines to get a pointer into - * a table, if necessary a new table is allocated. These routines are working -- * basically like pmd_alloc() and pte_alloc() in . The root -+ * basically like pmd_alloc_map() and pte_alloc_map() in . The root - * table needs of course only to be allocated once in mmu_get_root_table_entry, - * so that here also some mmu specific initialization is done. The second page - * at the start of the kernel (the first page is unmapped later) is used for ---- linux-2.6.0-test1/arch/m68k/mm/init.c 2003-06-14 12:18:32.000000000 -0700 -+++ 25/arch/m68k/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -17,9 +17,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_RAM --#include --#endif - - #include - #include ---- linux-2.6.0-test1/arch/m68k/mm/kmap.c 2003-06-14 12:18:35.000000000 -0700 -+++ 25/arch/m68k/mm/kmap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -189,7 +189,7 @@ void *__ioremap(unsigned long physaddr, - printk ("\npa=%#lx va=%#lx ", physaddr, virtaddr); - #endif - pgd_dir = pgd_offset_k(virtaddr); -- pmd_dir = pmd_alloc(&init_mm, pgd_dir, virtaddr); -+ pmd_dir = pmd_alloc_kernel(&init_mm, pgd_dir, virtaddr); - if (!pmd_dir) { - printk("ioremap: no mem for pmd_dir\n"); - return NULL; ---- linux-2.6.0-test1/arch/m68k/mm/motorola.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/arch/m68k/mm/motorola.c 2003-07-19 17:03:49.000000000 -0700 -@@ -18,9 +18,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_RAM --#include --#endif - - #include - #include ---- linux-2.6.0-test1/arch/m68k/mm/sun3mmu.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/arch/m68k/mm/sun3mmu.c 2003-07-19 17:03:49.000000000 -0700 -@@ -16,9 +16,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_RAM --#include --#endif - #include - - #include ---- linux-2.6.0-test1/arch/m68knommu/kernel/setup.c 2003-06-16 22:32:20.000000000 -0700 -+++ 25/arch/m68knommu/kernel/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -37,7 +37,6 @@ - #include - - #ifdef CONFIG_BLK_DEV_INITRD --#include - #include - #endif - ---- linux-2.6.0-test1/arch/m68knommu/mm/init.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/arch/m68knommu/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -27,9 +27,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_RAM --#include --#endif - #include - #include - #include ---- linux-2.6.0-test1/arch/m68k/q40/q40ints.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/m68k/q40/q40ints.c 2003-07-19 17:03:49.000000000 -0700 -@@ -171,7 +171,7 @@ void q40_free_irq(unsigned int irq, void - { - case 1: case 2: case 8: case 9: - case 12: case 13: -- printk("%s: ISA IRQ %d from %x illegal\n", __FUNCTION__, irq, (unsigned)dev_id); -+ printk("%s: ISA IRQ %d from %x invalid\n", __FUNCTION__, irq, (unsigned)dev_id); - return; - case 11: irq=10; - default: ---- linux-2.6.0-test1/arch/m68k/sun3x/dvma.c 2003-06-14 12:17:59.000000000 -0700 -+++ 25/arch/m68k/sun3x/dvma.c 2003-07-19 17:07:16.000000000 -0700 -@@ -102,7 +102,7 @@ inline int dvma_map_cpu(unsigned long ka - pmd_t *pmd; - unsigned long end2; - -- if((pmd = pmd_alloc(&init_mm, pgd, vaddr)) == NULL) { -+ if((pmd = pmd_alloc_kernel(&init_mm, pgd, vaddr)) == NULL) { - ret = -ENOMEM; - goto out; - } ---- linux-2.6.0-test1/arch/mips64/kernel/irq.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips64/kernel/irq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -818,13 +818,13 @@ EXPORT_SYMBOL(probe_irq_mask); - static struct proc_dir_entry * root_irq_dir; - static struct proc_dir_entry * irq_dir [NR_IRQS]; - --#define HEX_DIGITS 8 -+#define HEX_DIGITS (2*sizeof(cpumask_t)) - - static unsigned int parse_hex_value (const char *buffer, -- unsigned long count, unsigned long *ret) -+ unsigned long count, cpumask_t *ret) - { - unsigned char hexnum [HEX_DIGITS]; -- unsigned long value; -+ cpumask_t value = CPU_MASK_NONE; - int i; - - if (!count) -@@ -838,10 +838,9 @@ static unsigned int parse_hex_value (con - * Parse the first 8 characters as a hex string, any non-hex char - * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. - */ -- value = 0; - - for (i = 0; i < count; i++) { -- unsigned int c = hexnum[i]; -+ unsigned int k, c = hexnum[i]; - - switch (c) { - case '0' ... '9': c -= '0'; break; -@@ -850,7 +849,10 @@ static unsigned int parse_hex_value (con - default: - goto out; - } -- value = (value << 4) | c; -+ cpus_shift_left(value, value, 4); -+ for (k = 0; k < 4; ++k) -+ if (c & (1 << k)) -+ cpu_set(k, value); - } - out: - *ret = value; -@@ -861,20 +863,31 @@ out: - - static struct proc_dir_entry * smp_affinity_entry [NR_IRQS]; - --static unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; -+static cpumask_t irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; - static int irq_affinity_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -+ int k, len = 0; -+ cpumask_t tmp = irq_affinity[(long)data]; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", irq_affinity[(long)data]); -+ -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int irq_affinity_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { - int irq = (long) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t new_value, tmp; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; -@@ -886,7 +899,8 @@ static int irq_affinity_write_proc (stru - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ -- if (!(new_value & cpu_online_map)) -+ cpus_and(tmp, new_value, cpu_online_map); -+ if (cpus_empty(tmp)) - return -EINVAL; - - irq_affinity[irq] = new_value; -@@ -900,17 +914,28 @@ static int irq_affinity_write_proc (stru - static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -- unsigned long *mask = (unsigned long *) data; -+ int k, len = 0; -+ cpumask_t *mask = (cpumask_t *)data, tmp; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", *mask); -+ -+ tmp = *mask; -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int prof_cpu_mask_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data, full_count = count, err; -- unsigned long new_value; -+ unsigned long full_count = count, err; -+ cpumask_t new_value, *mask = (cpumask_t *)data; - - err = parse_hex_value(buffer, count, &new_value); - if (err) ---- linux-2.6.0-test1/arch/mips64/kernel/proc.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips64/kernel/proc.c 2003-07-19 17:04:07.000000000 -0700 -@@ -81,7 +81,7 @@ static int show_cpuinfo(struct seq_file - char fmt [64]; - - #ifdef CONFIG_SMP -- if (!CPUMASK_TSTB(cpu_online_map, n)) -+ if (!cpu_isset(n, cpu_online_map)) - return 0; - #endif - ---- linux-2.6.0-test1/arch/mips64/kernel/setup.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips64/kernel/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -28,9 +28,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_RAM --#include --#endif - #include - #include - #include ---- linux-2.6.0-test1/arch/mips64/kernel/smp.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips64/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -146,7 +146,7 @@ asmlinkage void start_secondary(void) - cpu_data[cpu].udelay_val = loops_per_jiffy; - prom_smp_finish(); - printk("Slave cpu booted successfully\n"); -- CPUMASK_SETB(cpu_online_map, cpu); -+ cpu_set(cpu, cpu_online_map); - atomic_inc(&cpus_booted); - cpu_idle(); - } -@@ -250,7 +250,7 @@ static void stop_this_cpu(void *dummy) - /* - * Remove this CPU: - */ -- clear_bit(smp_processor_id(), &cpu_online_map); -+ cpu_clear(smp_processor_id(), cpu_online_map); - local_irq_enable(); /* May need to service _machine_restart IPI */ - for (;;); /* Wait if available. */ - } ---- linux-2.6.0-test1/arch/mips/kernel/irq.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/kernel/irq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -861,20 +861,30 @@ out: - - static struct proc_dir_entry * smp_affinity_entry [NR_IRQS]; - --static unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; -+static cpumask_t irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; - static int irq_affinity_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -+ int len, k; -+ cpumask_t tmp = irq_affinity[(long)data]; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", irq_affinity[(long)data]); -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int irq_affinity_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { - int irq = (long) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t new_value, tmp; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; -@@ -886,7 +896,8 @@ static int irq_affinity_write_proc (stru - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ -- if (!(new_value & cpu_online_map)) -+ cpus_and(tmp, tmp, cpu_online_map); -+ if (cpus_empty(tmp)) - return -EINVAL; - - irq_affinity[irq] = new_value; -@@ -900,17 +911,28 @@ static int irq_affinity_write_proc (stru - static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -- unsigned long *mask = (unsigned long *) data; -+ int len, k; -+ cpumask_t *mask = (cpumask_t *)data, tmp; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", *mask); -+ tmp = *mask; -+ -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int prof_cpu_mask_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t *mask = (cpumask_t *)data, new_value; -+ unsigned long full_count = count, err; - - err = parse_hex_value(buffer, count, &new_value); - if (err) ---- linux-2.6.0-test1/arch/mips/kernel/proc.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/kernel/proc.c 2003-07-19 17:04:07.000000000 -0700 -@@ -81,7 +81,7 @@ static int show_cpuinfo(struct seq_file - char fmt [64]; - - #ifdef CONFIG_SMP -- if (!CPUMASK_TSTB(cpu_online_map, n)) -+ if (!cpu_isset(n, cpu_online_map)) - return 0; - #endif - ---- linux-2.6.0-test1/arch/mips/kernel/smp.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -146,7 +146,7 @@ asmlinkage void start_secondary(void) - cpu_data[cpu].udelay_val = loops_per_jiffy; - prom_smp_finish(); - printk("Slave cpu booted successfully\n"); -- CPUMASK_SETB(cpu_online_map, cpu); -+ cpu_set(cpu, cpu_online_map); - atomic_inc(&cpus_booted); - cpu_idle(); - } -@@ -250,7 +250,7 @@ static void stop_this_cpu(void *dummy) - /* - * Remove this CPU: - */ -- clear_bit(smp_processor_id(), &cpu_online_map); -+ cpu_clear(smp_processor_id(), cpu_online_map); - local_irq_enable(); /* May need to service _machine_restart IPI */ - for (;;); /* Wait if available. */ - } ---- linux-2.6.0-test1/arch/mips/mm/fault.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/mm/fault.c 2003-07-19 17:03:49.000000000 -0700 -@@ -162,7 +162,7 @@ bad_area: - tsk->thread.cp0_badvaddr = address; - tsk->thread.error_code = write; - #if 0 -- printk("do_page_fault() #2: sending SIGSEGV to %s for illegal %s\n" -+ printk("do_page_fault() #2: sending SIGSEGV to %s for invalid %s\n" - "%08lx (epc == %08lx, ra == %08lx)\n", - tsk->comm, - write ? "write access to" : "read access from", ---- linux-2.6.0-test1/arch/mips/mm/init.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -24,7 +24,7 @@ - #include - #include - #include --#include -+#include - - #include - #include ---- linux-2.6.0-test1/arch/mips/mm/ioremap.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -81,7 +81,7 @@ static int remap_area_pages(unsigned lon - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_kernel(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/mips/momentum/ocelot_c/setup.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/momentum/ocelot_c/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -63,7 +63,7 @@ - #include - #include - #include --#include -+#include - #include - #include "ocelot_c_fpga.h" - ---- linux-2.6.0-test1/arch/mips/momentum/ocelot_g/setup.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/momentum/ocelot_g/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -64,7 +64,7 @@ - #include - #include - #include --#include -+#include - #include "gt64240.h" - #include "ocelot_pld.h" - ---- linux-2.6.0-test1/arch/mips/ramdisk/Makefile 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/ramdisk/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -2,7 +2,7 @@ - # Makefile for a ramdisk image - # - --O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32) -+O_FORMAT = $(shell $(OBJDUMP) -i | head -n 2 | grep elf32) - img = $(CONFIG_EMBEDDED_RAMDISK_IMAGE) - ramdisk.o: $(subst ",,$(img)) ld.script - echo "O_FORMAT: " $(O_FORMAT) ---- linux-2.6.0-test1/arch/mips/sgi-ip27/ip27-init.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/sgi-ip27/ip27-init.c 2003-07-19 17:04:07.000000000 -0700 -@@ -481,7 +481,7 @@ static int __init do_boot_cpu(int cpu, i - */ - __cpu_number_map[cpu] = num_cpus; - __cpu_logical_map[num_cpus] = cpu; -- CPUMASK_SETB(cpu_online_map, cpu); -+ cpu_set(cpu, cpu_online_map); - - /* - * Wait this cpu to start up and initialize its hub, ---- linux-2.6.0-test1/arch/mips/sibyte/cfe/setup.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/sibyte/cfe/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -20,7 +20,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/arch/mips/sibyte/cfe/smp.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/sibyte/cfe/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -63,7 +63,7 @@ void prom_setup_smp(void) - /* Use CFE to find out how many CPUs are available */ - for (i=1; i - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/arch/mips/sibyte/sb1250/smp.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/sibyte/sb1250/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -107,8 +107,8 @@ void __init smp_boot_cpus(void) - current_thread_info()->cpu = 0; - cpu_data[0].udelay_val = loops_per_jiffy; - cpu_data[0].asid_cache = ASID_FIRST_VERSION; -- CPUMASK_CLRALL(cpu_online_map); -- CPUMASK_SETB(cpu_online_map, 0); -+ cpus_clear(cpu_online_map); -+ cpu_set(0, cpu_online_map); - atomic_set(&cpus_booted, 1); /* Master CPU is already booted... */ - smp_tune_scheduling(); - ---- linux-2.6.0-test1/arch/mips/sibyte/swarm/setup.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/sibyte/swarm/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -23,7 +23,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c 2003-07-19 17:03:49.000000000 -0700 -@@ -134,7 +134,7 @@ JP7 is not bus master -- do NOT use -- o - #include - #include - #include --#include -+#include - #ifdef CONFIG_RTC_DS1742 - #include - #endif ---- linux-2.6.0-test1/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -62,7 +62,7 @@ - #include - #include - #include --#include -+#include - #include - #ifdef CONFIG_RTC_DS1742 - #include ---- linux-2.6.0-test1/arch/mips/vr41xx/tanbac-tb0229/setup.c 2003-07-02 14:53:13.000000000 -0700 -+++ 25/arch/mips/vr41xx/tanbac-tb0229/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -18,7 +18,7 @@ - * option) any later version. - */ - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/arch/parisc/kernel/ioctl32.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/parisc/kernel/ioctl32.c 2003-07-19 17:03:49.000000000 -0700 -@@ -48,7 +48,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/arch/parisc/kernel/pci-dma.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/parisc/kernel/pci-dma.c 2003-07-19 17:07:16.000000000 -0700 -@@ -133,7 +133,7 @@ static inline int map_uncached_pages(uns - do { - pmd_t *pmd; - -- pmd = pmd_alloc(NULL, dir, vaddr); -+ pmd = pmd_alloc_kernel(NULL, dir, vaddr); - if (!pmd) - return -ENOMEM; - if (map_pmd_uncached(pmd, vaddr, end - vaddr, &paddr)) ---- linux-2.6.0-test1/arch/parisc/kernel/smp.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/parisc/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -62,14 +62,14 @@ volatile struct task_struct *smp_init_cu - - static volatile int smp_commenced = 0; /* Set when the idlers are all forked */ - static volatile int cpu_now_booting = 0; /* track which CPU is booting */ --volatile unsigned long cpu_online_map = 0; /* Bitmap of online CPUs */ --#define IS_LOGGED_IN(cpunum) (test_bit(cpunum, (atomic_t *)&cpu_online_map)) -+cpumask_t cpu_online_map = CPU_MASK_NONE; /* Bitmap of online CPUs */ -+#define IS_LOGGED_IN(cpunum) (cpu_isset(cpunum, cpu_online_map)) - - int smp_num_cpus = 1; - int smp_threads_ready = 0; - unsigned long cache_decay_ticks; - static int max_cpus = -1; /* Command line */ --unsigned long cpu_present_mask; -+cpumask_t cpu_present_mask; - - struct smp_call_struct { - void (*func) (void *info); -@@ -139,7 +139,7 @@ halt_processor(void) - #else - /* REVISIT : redirect I/O Interrupts to another CPU? */ - /* REVISIT : does PM *know* this CPU isn't available? */ -- clear_bit(smp_processor_id(), (void *)&cpu_online_map); -+ cpu_clear(smp_processor_id(), cpu_online_map); - local_irq_disable(); - for (;;) - ; -@@ -443,7 +443,7 @@ smp_cpu_init(int cpunum) - mb(); - - /* Well, support 2.4 linux scheme as well. */ -- if (test_and_set_bit(cpunum, (unsigned long *) (&cpu_online_map))) -+ if (cpu_test_and_set(cpunum, cpu_online_map)) - { - extern void machine_halt(void); /* arch/parisc.../process.c */ - -@@ -624,13 +624,14 @@ void __init smp_boot_cpus(void) - printk(KERN_DEBUG "SMP: bootstrap CPU ID is %d\n",bootstrap_processor); - init_task.thread_info->cpu = bootstrap_processor; - current->thread_info->cpu = bootstrap_processor; -- cpu_online_map = 1 << bootstrap_processor; /* Mark Boostrap processor as present */ -+ /* Mark Boostrap processor as present */ -+ cpu_online_map = cpumask_of_cpu(bootstrap_processor); - current->active_mm = &init_mm; - - #ifdef ENTRY_SYS_CPUS - cpu_data[0].state = STATE_RUNNING; - #endif -- cpu_present_mask = 1UL << bootstrap_processor; -+ cpu_present_mask = cpumask_of_cpu(bootstrap_processor); - - /* Nothing to do when told not to. */ - if (max_cpus == 0) { -@@ -709,8 +710,8 @@ void __init smp_prepare_cpus(unsigned in - - void __devinit smp_prepare_boot_cpu(void) - { -- set_bit(smp_processor_id(), &cpu_online_map); -- set_bit(smp_processor_id(), &cpu_present_mask); -+ cpu_set(smp_processor_id(), cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_present_mask); - } - - int __devinit __cpu_up(unsigned int cpu) ---- linux-2.6.0-test1/arch/parisc/mm/ioremap.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/arch/parisc/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -77,7 +77,7 @@ static int remap_area_pages(unsigned lon - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(dir, address); -+ pmd = pmd_alloc_kernel(dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/ppc64/boot/Makefile 2003-06-14 12:18:32.000000000 -0700 -+++ 25/arch/ppc64/boot/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -118,7 +118,7 @@ $(obj)/imagesize.c: vmlinux - ls -l vmlinux | \ - awk '{printf "/* generated -- do not edit! */\n" \ - "unsigned long vmlinux_filesize = %d;\n", $$5}' > $(obj)/imagesize.c -- $(CROSS_COMPILE)nm -n vmlinux | tail -1 | \ -+ $(CROSS_COMPILE)nm -n vmlinux | tail -n 1 | \ - awk '{printf "unsigned long vmlinux_memsize = 0x%s;\n", substr($$1,8)}' \ - >> $(obj)/imagesize.c - ---- linux-2.6.0-test1/arch/ppc64/Kconfig 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/ppc64/Kconfig 2003-07-19 17:04:07.000000000 -0700 -@@ -93,7 +93,7 @@ config IRQ_ALL_CPUS - CPU. - - config NR_CPUS -- int "Maximum number of CPUs (2-64)" -+ int "Maximum number of CPUs (2-128)" - depends on SMP - default "32" - ---- linux-2.6.0-test1/arch/ppc64/kernel/htab.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/arch/ppc64/kernel/htab.c 2003-07-19 17:04:07.000000000 -0700 -@@ -377,6 +377,7 @@ int hash_page(unsigned long ea, unsigned - int ret; - int user_region = 0; - int local = 0; -+ cpumask_t tmp; - - /* Check for invalid addresses. */ - if (!IS_VALID_EA(ea)) -@@ -431,7 +432,8 @@ int hash_page(unsigned long ea, unsigned - */ - spin_lock(&mm->page_table_lock); - -- if (user_region && (mm->cpu_vm_mask == (1 << smp_processor_id()))) -+ tmp = cpumask_of_cpu(smp_processor_id()); -+ if (user_region && cpus_equal(mm->cpu_vm_mask, tmp)) - local = 1; - - ptep = find_linux_pte(pgdir, ea); ---- linux-2.6.0-test1/arch/ppc64/kernel/irq.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/arch/ppc64/kernel/irq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -603,26 +603,37 @@ static struct proc_dir_entry * irq_dir [ - static struct proc_dir_entry * smp_affinity_entry [NR_IRQS]; - - #ifdef CONFIG_IRQ_ALL_CPUS --unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = -1UL}; -+cpumask_t irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; - #else /* CONFIG_IRQ_ALL_CPUS */ --unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = 0x0}; -+cpumask_t irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_NONE }; - #endif /* CONFIG_IRQ_ALL_CPUS */ - --#define HEX_DIGITS 16 -+#define HEX_DIGITS (2*sizeof(cpumask_t)) - - static int irq_affinity_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -+ int k, len; -+ cpumask_t tmp = irq_affinity[(long)data]; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf(page, "%16lx\n", irq_affinity[(long)data]); -+ -+ for (k = 0; k < sizeof(cpumask_t) / sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", (u16)cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static unsigned int parse_hex_value (const char *buffer, -- unsigned long count, unsigned long *ret) -+ unsigned long count, cpumask_t *ret) - { - unsigned char hexnum [HEX_DIGITS]; -- unsigned long value; -+ cpumask_t value = CPU_MASK_NONE; - int i; - - if (!count) -@@ -636,10 +647,10 @@ static unsigned int parse_hex_value (con - * Parse the first 16 characters as a hex string, any non-hex char - * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. - */ -- value = 0; - - for (i = 0; i < count; i++) { - unsigned int c = hexnum[i]; -+ int k; - - switch (c) { - case '0' ... '9': c -= '0'; break; -@@ -648,7 +659,11 @@ static unsigned int parse_hex_value (con - default: - goto out; - } -- value = (value << 4) | c; -+ cpus_shift_left(value, value, 4); -+ for (k = 0; k < 4; ++k) -+ if (test_bit(k, (unsigned long *)&c)) -+ cpu_set(k, value); -+ - } - out: - *ret = value; -@@ -659,7 +674,7 @@ static int irq_affinity_write_proc (stru - unsigned long count, void *data) - { - int irq = (long)data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t new_value, tmp; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; -@@ -671,7 +686,8 @@ static int irq_affinity_write_proc (stru - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ -- if (!(new_value & cpu_online_map)) -+ cpus_and(tmp, new_value, cpu_online_map); -+ if (cpus_empty(tmp)) - return -EINVAL; - - irq_affinity[irq] = new_value; -@@ -692,8 +708,9 @@ static int prof_cpu_mask_read_proc (char - static int prof_cpu_mask_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t *mask = (cpumask_t *)data; -+ unsigned long full_count = count, err; -+ cpumask_t new_value; - - err = parse_hex_value(buffer, count, &new_value); - if (err) ---- linux-2.6.0-test1/arch/ppc64/kernel/iSeries_irq.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/ppc64/kernel/iSeries_irq.c 2003-07-19 17:03:49.000000000 -0700 -@@ -29,7 +29,6 @@ - #include - #include - #include --#include - #include - - #include ---- linux-2.6.0-test1/arch/ppc64/kernel/open_pic.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/arch/ppc64/kernel/open_pic.c 2003-07-19 17:04:07.000000000 -0700 -@@ -46,7 +46,7 @@ static int broken_ipi_registers; - OpenPIC_SourcePtr ISU[OPENPIC_MAX_ISU]; - - static void openpic_end_irq(unsigned int irq_nr); --static void openpic_set_affinity(unsigned int irq_nr, unsigned long cpumask); -+static void openpic_set_affinity(unsigned int irq_nr, cpumask_t cpumask); - - struct hw_interrupt_type open_pic = { - " OpenPIC ", -@@ -505,7 +505,7 @@ static void openpic_set_spurious(u_int v - void openpic_init_processor(u_int cpumask) - { - openpic_write(&OpenPIC->Global.Processor_Initialization, -- cpumask & cpu_online_map); -+ cpumask & cpus_coerce(cpu_online_map)); - } - - #ifdef CONFIG_SMP -@@ -539,7 +539,7 @@ void openpic_cause_IPI(u_int ipi, u_int - CHECK_THIS_CPU; - check_arg_ipi(ipi); - openpic_write(&OpenPIC->THIS_CPU.IPI_Dispatch(ipi), -- cpumask & cpu_online_map); -+ cpumask & cpus_coerce(cpu_online_map)); - } - - void openpic_request_IPIs(void) -@@ -625,7 +625,7 @@ static void __init openpic_maptimer(u_in - { - check_arg_timer(timer); - openpic_write(&OpenPIC->Global.Timer[timer].Destination, -- cpumask & cpu_online_map); -+ cpumask & cpus_coerce(cpu_online_map)); - } - - -@@ -746,9 +746,12 @@ static void openpic_end_irq(unsigned int - openpic_eoi(); - } - --static void openpic_set_affinity(unsigned int irq_nr, unsigned long cpumask) -+static void openpic_set_affinity(unsigned int irq_nr, cpumask_t cpumask) - { -- openpic_mapirq(irq_nr - open_pic_irq_offset, cpumask & cpu_online_map); -+ cpumask_t tmp; -+ -+ cpus_and(tmp, cpumask, cpu_online_map); -+ openpic_mapirq(irq_nr - open_pic_irq_offset, cpus_coerce(tmp)); - } - - #ifdef CONFIG_SMP ---- linux-2.6.0-test1/arch/ppc64/kernel/open_pic.h 2003-06-14 12:17:58.000000000 -0700 -+++ 25/arch/ppc64/kernel/open_pic.h 2003-07-19 17:04:07.000000000 -0700 -@@ -13,6 +13,7 @@ - #define _PPC64_KERNEL_OPEN_PIC_H - - #include -+#include - - #define OPENPIC_SIZE 0x40000 - ---- linux-2.6.0-test1/arch/ppc64/kernel/pacaData.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/ppc64/kernel/pacaData.c 2003-07-19 17:04:07.000000000 -0700 -@@ -134,5 +134,71 @@ struct paca_struct paca[NR_CPUS] __page_ - PACAINITDATA(61, 0, 0, 0, 0), - PACAINITDATA(62, 0, 0, 0, 0), - PACAINITDATA(63, 0, 0, 0, 0), -+#if NR_CPUS > 64 -+ PACAINITDATA(64, 0, 0, 0, 0), -+ PACAINITDATA(65, 0, 0, 0, 0), -+ PACAINITDATA(66, 0, 0, 0, 0), -+ PACAINITDATA(67, 0, 0, 0, 0), -+ PACAINITDATA(68, 0, 0, 0, 0), -+ PACAINITDATA(69, 0, 0, 0, 0), -+ PACAINITDATA(70, 0, 0, 0, 0), -+ PACAINITDATA(71, 0, 0, 0, 0), -+ PACAINITDATA(72, 0, 0, 0, 0), -+ PACAINITDATA(73, 0, 0, 0, 0), -+ PACAINITDATA(74, 0, 0, 0, 0), -+ PACAINITDATA(75, 0, 0, 0, 0), -+ PACAINITDATA(76, 0, 0, 0, 0), -+ PACAINITDATA(77, 0, 0, 0, 0), -+ PACAINITDATA(78, 0, 0, 0, 0), -+ PACAINITDATA(79, 0, 0, 0, 0), -+ PACAINITDATA(80, 0, 0, 0, 0), -+ PACAINITDATA(81, 0, 0, 0, 0), -+ PACAINITDATA(82, 0, 0, 0, 0), -+ PACAINITDATA(83, 0, 0, 0, 0), -+ PACAINITDATA(84, 0, 0, 0, 0), -+ PACAINITDATA(85, 0, 0, 0, 0), -+ PACAINITDATA(86, 0, 0, 0, 0), -+ PACAINITDATA(87, 0, 0, 0, 0), -+ PACAINITDATA(88, 0, 0, 0, 0), -+ PACAINITDATA(89, 0, 0, 0, 0), -+ PACAINITDATA(90, 0, 0, 0, 0), -+ PACAINITDATA(91, 0, 0, 0, 0), -+ PACAINITDATA(92, 0, 0, 0, 0), -+ PACAINITDATA(93, 0, 0, 0, 0), -+ PACAINITDATA(94, 0, 0, 0, 0), -+ PACAINITDATA(95, 0, 0, 0, 0), -+ PACAINITDATA(96, 0, 0, 0, 0), -+ PACAINITDATA(97, 0, 0, 0, 0), -+ PACAINITDATA(98, 0, 0, 0, 0), -+ PACAINITDATA(99, 0, 0, 0, 0), -+ PACAINITDATA(100, 0, 0, 0, 0), -+ PACAINITDATA(101, 0, 0, 0, 0), -+ PACAINITDATA(102, 0, 0, 0, 0), -+ PACAINITDATA(103, 0, 0, 0, 0), -+ PACAINITDATA(104, 0, 0, 0, 0), -+ PACAINITDATA(105, 0, 0, 0, 0), -+ PACAINITDATA(106, 0, 0, 0, 0), -+ PACAINITDATA(107, 0, 0, 0, 0), -+ PACAINITDATA(108, 0, 0, 0, 0), -+ PACAINITDATA(109, 0, 0, 0, 0), -+ PACAINITDATA(110, 0, 0, 0, 0), -+ PACAINITDATA(111, 0, 0, 0, 0), -+ PACAINITDATA(112, 0, 0, 0, 0), -+ PACAINITDATA(113, 0, 0, 0, 0), -+ PACAINITDATA(114, 0, 0, 0, 0), -+ PACAINITDATA(115, 0, 0, 0, 0), -+ PACAINITDATA(116, 0, 0, 0, 0), -+ PACAINITDATA(117, 0, 0, 0, 0), -+ PACAINITDATA(118, 0, 0, 0, 0), -+ PACAINITDATA(119, 0, 0, 0, 0), -+ PACAINITDATA(120, 0, 0, 0, 0), -+ PACAINITDATA(121, 0, 0, 0, 0), -+ PACAINITDATA(122, 0, 0, 0, 0), -+ PACAINITDATA(123, 0, 0, 0, 0), -+ PACAINITDATA(124, 0, 0, 0, 0), -+ PACAINITDATA(125, 0, 0, 0, 0), -+ PACAINITDATA(126, 0, 0, 0, 0), -+ PACAINITDATA(127, 0, 0, 0, 0), -+#endif - #endif - }; ---- linux-2.6.0-test1/arch/ppc64/kernel/prom.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/ppc64/kernel/prom.c 2003-07-19 17:04:07.000000000 -0700 -@@ -27,7 +27,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -1134,7 +1133,7 @@ prom_init(unsigned long r3, unsigned lon - _prom->cpu = (int)(unsigned long)getprop_rval; - _xPaca[_prom->cpu].active = 1; - #ifdef CONFIG_SMP -- RELOC(cpu_online_map) = 1UL << _prom->cpu; -+ cpu_set(_prom->cpu, RELOC(cpu_online_map)); - #endif - RELOC(boot_cpuid) = _prom->cpu; - ---- linux-2.6.0-test1/arch/ppc64/kernel/rtasd.c 2003-06-14 12:18:06.000000000 -0700 -+++ 25/arch/ppc64/kernel/rtasd.c 2003-07-19 17:04:07.000000000 -0700 -@@ -225,7 +225,7 @@ repeat: - continue; - - DEBUG("scheduling on %d\n", cpu); -- set_cpus_allowed(current, 1UL << cpu); -+ set_cpus_allowed(current, cpumask_of_cpu(cpu)); - DEBUG("watchdog scheduled on cpu %d\n", smp_processor_id()); - - do { ---- linux-2.6.0-test1/arch/ppc64/kernel/semaphore.c 2003-06-26 22:07:24.000000000 -0700 -+++ 25/arch/ppc64/kernel/semaphore.c 2003-07-19 17:04:51.000000000 -0700 -@@ -21,6 +21,7 @@ - #include - #include - -+#if 0 - /* - * Atomically update sem->count. - * This does the equivalent of the following: -@@ -129,3 +130,140 @@ int __down_interruptible(struct semaphor - wake_up(&sem->wait); - return retval; - } -+#else -+ -+static __inline__ int atomic_add_negative(int i, atomic_t *v) -+{ -+ if (atomic_add_return(i, v) < 0) -+ return 1; -+ else -+ return 0; -+} -+ -+void __up(struct semaphore *sem) -+{ -+ wake_up(&sem->wait); -+} -+ -+void __down(struct semaphore * sem) -+{ -+ struct task_struct *tsk = current; -+ DECLARE_WAITQUEUE(wait, tsk); -+ unsigned long flags; -+ -+ tsk->state = TASK_UNINTERRUPTIBLE; -+ spin_lock_irqsave(&sem->wait.lock, flags); -+ add_wait_queue_exclusive_locked(&sem->wait, &wait); -+ -+ sem->sleepers++; -+ for (;;) { -+ int sleepers = sem->sleepers; -+ -+ /* -+ * Add "everybody else" into it. They aren't -+ * playing, because we own the spinlock in -+ * the wait_queue_head. -+ */ -+ if (!atomic_add_negative(sleepers - 1, &sem->count)) { -+ sem->sleepers = 0; -+ break; -+ } -+ sem->sleepers = 1; /* us - see -1 above */ -+ spin_unlock_irqrestore(&sem->wait.lock, flags); -+ -+ schedule(); -+ -+ spin_lock_irqsave(&sem->wait.lock, flags); -+ tsk->state = TASK_UNINTERRUPTIBLE; -+ } -+ remove_wait_queue_locked(&sem->wait, &wait); -+ wake_up_locked(&sem->wait); -+ spin_unlock_irqrestore(&sem->wait.lock, flags); -+ tsk->state = TASK_RUNNING; -+} -+ -+int __down_interruptible(struct semaphore * sem) -+{ -+ int retval = 0; -+ struct task_struct *tsk = current; -+ DECLARE_WAITQUEUE(wait, tsk); -+ unsigned long flags; -+ -+ tsk->state = TASK_INTERRUPTIBLE; -+ spin_lock_irqsave(&sem->wait.lock, flags); -+ add_wait_queue_exclusive_locked(&sem->wait, &wait); -+ -+ sem->sleepers++; -+ for (;;) { -+ int sleepers = sem->sleepers; -+ -+ /* -+ * With signals pending, this turns into -+ * the trylock failure case - we won't be -+ * sleeping, and we* can't get the lock as -+ * it has contention. Just correct the count -+ * and exit. -+ */ -+ if (signal_pending(current)) { -+ retval = -EINTR; -+ sem->sleepers = 0; -+ atomic_add(sleepers, &sem->count); -+ break; -+ } -+ -+ /* -+ * Add "everybody else" into it. They aren't -+ * playing, because we own the spinlock in -+ * wait_queue_head. The "-1" is because we're -+ * still hoping to get the semaphore. -+ */ -+ if (!atomic_add_negative(sleepers - 1, &sem->count)) { -+ sem->sleepers = 0; -+ break; -+ } -+ sem->sleepers = 1; /* us - see -1 above */ -+ spin_unlock_irqrestore(&sem->wait.lock, flags); -+ -+ schedule(); -+ -+ spin_lock_irqsave(&sem->wait.lock, flags); -+ tsk->state = TASK_INTERRUPTIBLE; -+ } -+ remove_wait_queue_locked(&sem->wait, &wait); -+ wake_up_locked(&sem->wait); -+ spin_unlock_irqrestore(&sem->wait.lock, flags); -+ -+ tsk->state = TASK_RUNNING; -+ return retval; -+} -+ -+/* -+ * Trylock failed - make sure we correct for -+ * having decremented the count. -+ * -+ * We could have done the trylock with a -+ * single "cmpxchg" without failure cases, -+ * but then it wouldn't work on a 386. -+ */ -+int __down_trylock(struct semaphore * sem) -+{ -+ int sleepers; -+ unsigned long flags; -+ -+ spin_lock_irqsave(&sem->wait.lock, flags); -+ sleepers = sem->sleepers + 1; -+ sem->sleepers = 0; -+ -+ /* -+ * Add "everybody else" and us into it. They aren't -+ * playing, because we own the spinlock in the -+ * wait_queue_head. -+ */ -+ if (!atomic_add_negative(sleepers, &sem->count)) { -+ wake_up_locked(&sem->wait); -+ } -+ -+ spin_unlock_irqrestore(&sem->wait.lock, flags); -+ return 1; -+} -+#endif ---- linux-2.6.0-test1/arch/ppc64/kernel/setup.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/arch/ppc64/kernel/setup.c 2003-07-19 17:04:07.000000000 -0700 -@@ -256,7 +256,7 @@ static int show_cpuinfo(struct seq_file - return 0; - } - -- if (!(cpu_online_map & (1UL << cpu_id))) -+ if (!cpu_online(cpu_id)) - return 0; - - #ifdef CONFIG_SMP ---- linux-2.6.0-test1/arch/ppc64/kernel/smp.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/ppc64/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -53,7 +53,7 @@ int smp_threads_ready; - unsigned long cache_decay_ticks; - - /* initialised so it doesn't end up in bss */ --unsigned long cpu_online_map = 0; -+cpumask_t cpu_online_map = CPU_MASK_NONE; - - static struct smp_ops_t *smp_ops; - -@@ -570,7 +570,7 @@ void __init smp_prepare_cpus(unsigned in - - void __devinit smp_prepare_boot_cpu(void) - { -- set_bit(smp_processor_id(), &cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_online_map); - /* FIXME: what about cpu_possible()? */ - } - -@@ -631,7 +631,7 @@ int __devinit __cpu_up(unsigned int cpu) - - if (smp_ops->give_timebase) - smp_ops->give_timebase(); -- set_bit(cpu, &cpu_online_map); -+ cpu_set(cpu, cpu_online_map); - return 0; - } - ---- linux-2.6.0-test1/arch/ppc64/kernel/xics.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/arch/ppc64/kernel/xics.c 2003-07-19 17:04:07.000000000 -0700 -@@ -33,7 +33,7 @@ void xics_enable_irq(u_int irq); - void xics_disable_irq(u_int irq); - void xics_mask_and_ack_irq(u_int irq); - void xics_end_irq(u_int irq); --void xics_set_affinity(unsigned int irq_nr, unsigned long cpumask); -+void xics_set_affinity(unsigned int irq_nr, cpumask_t cpumask); - - struct hw_interrupt_type xics_pic = { - " XICS ", -@@ -508,7 +508,7 @@ nextnode: - ppc64_boot_msg(0x21, "XICS Done"); - } - --void xics_set_affinity(unsigned int virq, unsigned long cpumask) -+void xics_set_affinity(unsigned int virq, cpumask_t cpumask) - { - irq_desc_t *desc = irq_desc + virq; - unsigned int irq; -@@ -516,6 +516,8 @@ void xics_set_affinity(unsigned int virq - long status; - unsigned long xics_status[2]; - unsigned long newmask; -+ cpumask_t allcpus = CPU_MASK_ALL; -+ cpumask_t tmp = CPU_MASK_NONE; - - virq -= XICS_IRQ_OFFSET; - irq = virt_irq_to_real(virq); -@@ -533,12 +535,13 @@ void xics_set_affinity(unsigned int virq - } - - /* For the moment only implement delivery to all cpus or one cpu */ -- if (cpumask == -1UL) { -+ if (cpus_equal(cpumask, allcpus)) { - newmask = default_distrib_server; - } else { -- if (!(cpumask & cpu_online_map)) -+ cpus_and(tmp, cpu_online_map, cpumask); -+ if (cpus_empty(tmp)) - goto out; -- newmask = find_first_bit(&cpumask, 8*sizeof(unsigned long)); -+ newmask = first_cpu(cpumask); - } - - status = rtas_call(ibm_set_xive, 3, 1, NULL, ---- linux-2.6.0-test1/arch/ppc64/kernel/XmPciLpEvent.c 2003-06-14 12:18:21.000000000 -0700 -+++ 25/arch/ppc64/kernel/XmPciLpEvent.c 2003-07-19 17:03:49.000000000 -0700 -@@ -12,7 +12,6 @@ - #include - #include - #include --#include - #include - - #include ---- linux-2.6.0-test1/arch/ppc64/mm/init.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ppc64/mm/init.c 2003-07-19 17:07:16.000000000 -0700 -@@ -37,9 +37,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_INITRD --#include /* for initrd_* */ --#endif - - #include - #include -@@ -211,7 +208,7 @@ static void map_io_page(unsigned long ea - if (mem_init_done) { - spin_lock(&ioremap_mm.page_table_lock); - pgdp = pgd_offset_i(ea); -- pmdp = pmd_alloc(&ioremap_mm, pgdp, ea); -+ pmdp = pmd_alloc_kernel(&ioremap_mm, pgdp, ea); - ptep = pte_alloc_kernel(&ioremap_mm, pmdp, ea); - - pa = absolute_to_phys(pa); -@@ -253,7 +250,7 @@ flush_tlb_mm(struct mm_struct *mm) - __flush_tlb_range(mm, mp->vm_start, mp->vm_end); - - /* XXX are there races with checking cpu_vm_mask? - Anton */ -- mm->cpu_vm_mask = 0; -+ cpus_clear(mm->cpu_vm_mask); - - spin_unlock(&mm->page_table_lock); - } -@@ -270,6 +267,7 @@ flush_tlb_page(struct vm_area_struct *vm - pte_t *ptep; - pte_t pte; - int local = 0; -+ cpumask_t tmp; - - switch( REGION_ID(vmaddr) ) { - case VMALLOC_REGION_ID: -@@ -283,7 +281,8 @@ flush_tlb_page(struct vm_area_struct *vm - context = vma->vm_mm->context; - - /* XXX are there races with checking cpu_vm_mask? - Anton */ -- if (vma->vm_mm->cpu_vm_mask == (1 << smp_processor_id())) -+ tmp = cpumask_of_cpu(smp_processor_id()); -+ if (cpus_equal(vma->vm_mm->cpu_vm_mask, tmp)) - local = 1; - - break; -@@ -319,6 +318,7 @@ __flush_tlb_range(struct mm_struct *mm, - struct ppc64_tlb_batch *batch = &ppc64_tlb_batch[smp_processor_id()]; - unsigned long i = 0; - int local = 0; -+ cpumask_t tmp; - - switch(REGION_ID(start)) { - case VMALLOC_REGION_ID: -@@ -332,7 +332,8 @@ __flush_tlb_range(struct mm_struct *mm, - context = mm->context; - - /* XXX are there races with checking cpu_vm_mask? - Anton */ -- if (mm->cpu_vm_mask == (1 << smp_processor_id())) -+ tmp = cpumask_of_cpu(smp_processor_id()); -+ if (cpus_equal(mm->cpu_vm_mask, tmp)) - local = 1; - - break; -@@ -698,6 +699,7 @@ void update_mmu_cache(struct vm_area_str - void *pgdir; - pte_t *ptep; - int local = 0; -+ cpumask_t tmp; - - /* handle i-cache coherency */ - if (!(cur_cpu_spec->cpu_features & CPU_FTR_NOEXECUTE)) { -@@ -723,7 +725,8 @@ void update_mmu_cache(struct vm_area_str - ptep = find_linux_pte(pgdir, ea); - vsid = get_vsid(vma->vm_mm->context, ea); - -- if (vma->vm_mm->cpu_vm_mask == (1 << smp_processor_id())) -+ tmp = cpumask_of_cpu(smp_processor_id()); -+ if (cpus_equal(vma->vm_mm->cpu_vm_mask, tmp)) - local = 1; - - __hash_page(ea, pte_val(pte) & (_PAGE_USER|_PAGE_RW), vsid, ptep, ---- linux-2.6.0-test1/arch/ppc/kernel/irq.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/arch/ppc/kernel/irq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -44,6 +44,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -420,10 +421,9 @@ void ppc_irq_dispatch_handler(struct pt_ - { - int status; - struct irqaction *action; -- int cpu = smp_processor_id(); - irq_desc_t *desc = irq_desc + irq; - -- kstat_cpu(cpu).irqs[irq]++; -+ kstat_this_cpu.irqs[irq]++; - spin_lock(&desc->lock); - ack_irq(irq); - /* -@@ -565,29 +565,41 @@ static struct proc_dir_entry *irq_dir[NR - static struct proc_dir_entry *smp_affinity_entry[NR_IRQS]; - - #ifdef CONFIG_IRQ_ALL_CPUS --#define DEFAULT_CPU_AFFINITY 0xffffffff -+#define DEFAULT_CPU_AFFINITY CPU_MASK_ALL - #else --#define DEFAULT_CPU_AFFINITY 0x00000001 -+#define DEFAULT_CPU_AFFINITY cpumask_of_cpu(0) - #endif - --unsigned int irq_affinity [NR_IRQS] = -+cpumask_t irq_affinity [NR_IRQS] = - { [0 ... NR_IRQS-1] = DEFAULT_CPU_AFFINITY }; - --#define HEX_DIGITS 8 -+#define HEX_DIGITS (2*sizeof(cpumask_t)) - - static int irq_affinity_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -+ cpumask_t tmp = irq_affinity[(long)data]; -+ int k, len = 0; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08x\n", irq_affinity[(int)data]); -+ -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", (u16)cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ -+ len += sprintf(page, "\n"); -+ return len; - } - - static unsigned int parse_hex_value (const char __user *buffer, -- unsigned long count, unsigned long *ret) -+ unsigned long count, cpumask_t *ret) - { - unsigned char hexnum [HEX_DIGITS]; -- unsigned long value; -+ cpumask_t value = CPU_MASK_NONE; - int i; - - if (!count) -@@ -601,10 +613,9 @@ static unsigned int parse_hex_value (con - * Parse the first 8 characters as a hex string, any non-hex char - * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. - */ -- value = 0; -- - for (i = 0; i < count; i++) { - unsigned int c = hexnum[i]; -+ int k; - - switch (c) { - case '0' ... '9': c -= '0'; break; -@@ -613,7 +624,10 @@ static unsigned int parse_hex_value (con - default: - goto out; - } -- value = (value << 4) | c; -+ cpus_shift_left(value, value, 4); -+ for (k = 0; k < 4; ++k) -+ if (c & (1 << k)) -+ cpu_set(k, value); - } - out: - *ret = value; -@@ -624,7 +638,7 @@ static int irq_affinity_write_proc (stru - unsigned long count, void *data) - { - int irq = (int) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t new_value, tmp; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; -@@ -641,7 +655,8 @@ static int irq_affinity_write_proc (stru - * are actually logical cpu #'s then we have no problem. - * -- Cort - */ -- if (!(new_value & cpu_online_map)) -+ cpus_and(tmp, new_value, cpu_online_map); -+ if (cpus_empty(tmp)) - return -EINVAL; - - irq_affinity[irq] = new_value; -@@ -653,17 +668,27 @@ static int irq_affinity_write_proc (stru - static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -- unsigned long *mask = (unsigned long *) data; -+ cpumask_t mask = *(cpumask_t *)data; -+ int k, len = 0; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", *mask); -+ -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", (u16)cpus_coerce(mask)); -+ len += j; -+ page += j; -+ cpus_shift_right(mask, mask, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int prof_cpu_mask_write_proc (struct file *file, const char __user *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t *mask = (cpumask_t *)data, full_count = count, err; -+ cpumask_t new_value; - - err = parse_hex_value(buffer, count, &new_value); - if (err) ---- linux-2.6.0-test1/arch/ppc/kernel/misc.S 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/ppc/kernel/misc.S 2003-07-19 17:03:49.000000000 -0700 -@@ -1375,3 +1375,8 @@ _GLOBAL(sys_call_table) - .long sys_clock_gettime - .long sys_clock_getres - .long sys_clock_nanosleep -+ .long sys_ni_syscall /* reserved for swapcontext */ -+ .long sys_tgkill /* 250 */ -+ .long sys_utimes -+ .long sys_statfs64 -+ .long sys_fstatfs64 ---- linux-2.6.0-test1/arch/ppc/kernel/setup.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/ppc/kernel/setup.c 2003-07-19 17:04:07.000000000 -0700 -@@ -159,7 +159,7 @@ int show_cpuinfo(struct seq_file *m, voi - } - - #ifdef CONFIG_SMP -- if (!(cpu_online_map & (1 << i))) -+ if (!cpu_online(i)) - return 0; - pvr = cpu_data[i].pvr; - lpj = cpu_data[i].loops_per_jiffy; ---- linux-2.6.0-test1/arch/ppc/kernel/smp.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/arch/ppc/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -47,7 +47,7 @@ atomic_t ipi_sent; - DEFINE_PER_CPU(unsigned int, prof_multiplier); - DEFINE_PER_CPU(unsigned int, prof_counter); - unsigned long cache_decay_ticks = HZ/100; --unsigned long cpu_online_map = 1UL; -+unsigned long cpu_online_map = cpumask_of_cpu(0); - unsigned long cpu_possible_map = 1UL; - int smp_hw_index[NR_CPUS]; - struct thread_info *secondary_ti; -@@ -361,8 +361,8 @@ void __init smp_prepare_cpus(unsigned in - - void __devinit smp_prepare_boot_cpu(void) - { -- set_bit(smp_processor_id(), &cpu_online_map); -- set_bit(smp_processor_id(), &cpu_possible_map); -+ cpu_set(smp_processor_id(), cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_possible_map); - } - - int __init setup_profiling_timer(unsigned int multiplier) -@@ -444,7 +444,7 @@ int __cpu_up(unsigned int cpu) - printk("Processor %d found.\n", cpu); - - smp_ops->give_timebase(); -- set_bit(cpu, &cpu_online_map); -+ cpu_set(cpu, cpu_online_map); - return 0; - } - ---- linux-2.6.0-test1/arch/ppc/kernel/syscalls.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/arch/ppc/kernel/syscalls.c 2003-07-19 17:03:49.000000000 -0700 -@@ -20,7 +20,6 @@ - * - */ - --#include - #include - #include - #include -@@ -59,10 +58,15 @@ sys_ipc (uint call, int first, int secon - version = call >> 16; /* hack for backward compatibility */ - call &= 0xffff; - -- ret = -EINVAL; -+ ret = -ENOSYS; - switch (call) { - case SEMOP: -- ret = sys_semop (first, (struct sembuf __user *)ptr, second); -+ ret = sys_semtimedop (first, (struct sembuf __user *)ptr, -+ second, NULL); -+ break; -+ case SEMTIMEDOP: -+ ret = sys_semtimedop (first, (struct sembuf __user *)ptr, -+ second, (const struct timespec *) fifth); - break; - case SEMGET: - ret = sys_semget (first, second, third); -@@ -258,6 +262,4 @@ int sys_olduname(struct oldold_utsname _ - return error; - } - --cond_syscall(sys_pciconfig_read); --cond_syscall(sys_pciconfig_write); - cond_syscall(sys_pciconfig_iobase); ---- linux-2.6.0-test1/arch/ppc/kernel/time.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/ppc/kernel/time.c 2003-07-19 17:03:49.000000000 -0700 -@@ -244,7 +244,7 @@ int do_settimeofday(struct timespec *tv) - time_t wtm_sec, new_sec = tv->tv_sec; - long wtm_nsec, new_nsec = tv->tv_nsec; - unsigned long flags; -- int tb_delta, new_nsec, new_sec; -+ int tb_delta; - - if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) - return -EINVAL; ---- linux-2.6.0-test1/arch/ppc/mm/mem_pieces.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/arch/ppc/mm/mem_pieces.c 2003-07-19 17:03:49.000000000 -0700 -@@ -17,7 +17,6 @@ - #include - #include - #include --#include - #include - - #include "mem_pieces.h" ---- linux-2.6.0-test1/arch/ppc/platforms/4xx/beech.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/arch/ppc/platforms/4xx/beech.c 2003-07-19 17:03:49.000000000 -0700 -@@ -25,7 +25,6 @@ - * - */ - --#include - #include - #include - #include ---- linux-2.6.0-test1/arch/ppc/platforms/4xx/sycamore.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/arch/ppc/platforms/4xx/sycamore.c 2003-07-19 17:03:49.000000000 -0700 -@@ -17,7 +17,6 @@ - #include - #include - #include --#include - #include - #include - ---- linux-2.6.0-test1/arch/ppc/platforms/4xx/walnut.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/arch/ppc/platforms/4xx/walnut.c 2003-07-19 17:03:49.000000000 -0700 -@@ -19,7 +19,6 @@ - #include - #include - #include --#include - #include - #include - ---- linux-2.6.0-test1/arch/ppc/platforms/pmac_cpufreq.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/arch/ppc/platforms/pmac_cpufreq.c 2003-07-19 17:03:49.000000000 -0700 -@@ -176,7 +176,7 @@ do_set_cpu_speed(int speed_mode) - - freqs.old = cur_freq; - freqs.new = (speed_mode == PMAC_CPU_HIGH_SPEED) ? hi_freq : low_freq; -- freqs.cpu = CPUFREQ_ALL_CPUS; -+ freqs.cpu = smp_processor_id(); - - cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); - if (cpufreq_uses_pmu) ---- linux-2.6.0-test1/arch/ppc/platforms/residual.c 2003-06-14 12:18:00.000000000 -0700 -+++ 25/arch/ppc/platforms/residual.c 2003-07-19 17:03:49.000000000 -0700 -@@ -36,7 +36,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/arch/s390/defconfig 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/s390/defconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -20,6 +20,7 @@ CONFIG_SYSVIPC=y - CONFIG_SYSCTL=y - CONFIG_LOG_BUF_SHIFT=17 - # CONFIG_EMBEDDED is not set -+# CONFIG_KALLSYMS is not set - CONFIG_FUTEX=y - CONFIG_EPOLL=y - -@@ -169,7 +170,7 @@ CONFIG_IP_MULTICAST=y - # CONFIG_INET_AH is not set - # CONFIG_INET_ESP is not set - # CONFIG_INET_IPCOMP is not set --CONFIG_IPV6=m -+CONFIG_IPV6=y - # CONFIG_IPV6_PRIVACY is not set - # CONFIG_INET6_AH is not set - # CONFIG_INET6_ESP is not set -@@ -180,7 +181,7 @@ CONFIG_IPV6=m - # - # SCTP Configuration (EXPERIMENTAL) - # --CONFIG_IPV6_SCTP__=m -+CONFIG_IPV6_SCTP__=y - # CONFIG_IP_SCTP is not set - # CONFIG_ATM is not set - # CONFIG_VLAN_8021Q is not set -@@ -383,7 +384,6 @@ CONFIG_IBM_PARTITION=y - CONFIG_DEBUG_KERNEL=y - CONFIG_MAGIC_SYSRQ=y - # CONFIG_DEBUG_SLAB is not set --# CONFIG_KALLSYMS is not set - # CONFIG_DEBUG_SPINLOCK_SLEEP is not set - - # ---- linux-2.6.0-test1/arch/s390/kernel/compat_ioctl.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/s390/kernel/compat_ioctl.c 2003-07-19 17:03:49.000000000 -0700 -@@ -23,7 +23,6 @@ - #include - #include - --#include - #include - #include - #include ---- linux-2.6.0-test1/arch/s390/kernel/compat_linux.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/s390/kernel/compat_linux.c 2003-07-19 17:03:49.000000000 -0700 -@@ -250,14 +250,14 @@ asmlinkage long sys32_getegid16(void) - static inline long get_tv32(struct timeval *o, struct compat_timeval *i) - { - return (!access_ok(VERIFY_READ, tv32, sizeof(*tv32)) || -- (__get_user(o->tv_sec, &i->tv_sec) | -+ (__get_user(o->tv_sec, &i->tv_sec) || - __get_user(o->tv_usec, &i->tv_usec))); - } - - static inline long put_tv32(struct compat_timeval *o, struct timeval *i) - { - return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) || -- (__put_user(i->tv_sec, &o->tv_sec) | -+ (__put_user(i->tv_sec, &o->tv_sec) || - __put_user(i->tv_usec, &o->tv_usec))); - } - ---- linux-2.6.0-test1/arch/s390/kernel/entry64.S 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/s390/kernel/entry64.S 2003-07-19 17:03:49.000000000 -0700 -@@ -637,6 +637,7 @@ io_sigpending: - ext_int_handler: - SAVE_ALL __LC_EXT_OLD_PSW,0 - GET_THREAD_INFO # load pointer to task_struct to R9 -+ brasl %r14,do_extint - llgh %r6,__LC_EXT_INT_CODE # get interruption code - lgr %r1,%r6 # calculate index = code & 0xff - nill %r1,0xff ---- linux-2.6.0-test1/arch/s390/kernel/entry.S 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/s390/kernel/entry.S 2003-07-19 17:03:49.000000000 -0700 -@@ -606,6 +606,8 @@ ext_int_handler: - SAVE_ALL_BASE - SAVE_ALL __LC_EXT_OLD_PSW,0 - GET_THREAD_INFO # load pointer to task_struct to R9 -+ l %r1,BASED(.Ldo_extint) -+ basr %r14,%r1 - lh %r6,__LC_EXT_INT_CODE # get interruption code - lr %r1,%r6 # calculate index = code & 0xff - n %r1,BASED(.Lc0xff) -@@ -694,6 +696,7 @@ restart_go: - */ - .Ls390_mcck: .long s390_do_machine_check - .Ldo_IRQ: .long do_IRQ -+.Ldo_extint: .long do_extint - .Ldo_signal: .long do_signal - .Ldo_softirq: .long do_softirq - .Lentry_base: .long entry_base ---- linux-2.6.0-test1/arch/s390/kernel/s390_ext.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/arch/s390/kernel/s390_ext.c 2003-07-19 17:03:49.000000000 -0700 -@@ -11,8 +11,11 @@ - #include - #include - #include -+#include -+ - #include - #include -+#include - - /* - * Simple hash strategy: index = code & 0xff; -@@ -98,6 +101,11 @@ int unregister_early_external_interrupt( - return 0; - } - -+void do_extint(void) -+{ -+ kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; -+} -+ - EXPORT_SYMBOL(register_external_interrupt); - EXPORT_SYMBOL(unregister_external_interrupt); - ---- linux-2.6.0-test1/arch/s390/kernel/setup.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/s390/kernel/setup.c 2003-07-19 17:04:07.000000000 -0700 -@@ -34,12 +34,15 @@ - #include - #include - #include -+#include -+ - #include - #include - #include - #include - #include - #include -+#include - - /* - * Machine setup.. -@@ -53,7 +56,7 @@ struct { unsigned long addr, size, type; - #define CHUNK_READ_WRITE 0 - #define CHUNK_READ_ONLY 1 - int cpus_initialized = 0; --unsigned long cpu_initialized = 0; -+static cpumask_t cpu_initialized; - volatile int __cpu_logical_map[NR_CPUS]; /* logical cpu to cpu address */ - - /* -@@ -83,7 +86,7 @@ void __devinit cpu_init (void) - int nr = smp_processor_id(); - int addr = hard_smp_processor_id(); - -- if (test_and_set_bit(nr,&cpu_initialized)) { -+ if (cpu_test_and_set(nr,cpu_initialized)) { - printk("CPU#%d ALREADY INITIALIZED!!!!!!!!!\n", nr); - for (;;) local_irq_enable(); - } -@@ -562,7 +565,7 @@ static int show_cpuinfo(struct seq_file - num_online_cpus(), loops_per_jiffy/(500000/HZ), - (loops_per_jiffy/(5000/HZ))%100); - } -- if (cpu_online_map & (1 << n)) { -+ if (cpu_online(n)) { - #ifdef CONFIG_SMP - if (smp_processor_id() == n) - cpuinfo = &S390_lowcore.cpu_data; -@@ -600,3 +603,40 @@ struct seq_operations cpuinfo_op = { - .stop = c_stop, - .show = show_cpuinfo, - }; -+ -+/* -+ * show_interrupts is needed by /proc/interrupts. -+ */ -+ -+static const char *intrclass_names[] = { -+ "EXT", -+ "I/O", -+}; -+ -+int show_interrupts(struct seq_file *p, void *v) -+{ -+ int i, j; -+ -+ seq_puts(p, " "); -+ -+ for (j=0; j - #include - #include --#ifdef CONFIG_BLK_DEV_INITRD --#include --#endif - #include - #include - ---- linux-2.6.0-test1/arch/s390/mm/ioremap.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/arch/s390/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -83,7 +83,7 @@ static int remap_area_pages(unsigned lon - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_kernel(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/sh/mm/init.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/sh/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -22,9 +22,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_INITRD --#include --#endif - #include - #include - ---- linux-2.6.0-test1/arch/sh/mm/ioremap.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/sh/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -45,7 +45,7 @@ static inline void remap_area_pte(pte_t - } while (address && (address < end)); - } - --static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, -+static inline int remap_area_pmd(pgd_t *pgd, pmd_t * pmd, unsigned long address, - unsigned long size, unsigned long phys_addr, unsigned long flags) - { - unsigned long end; -@@ -83,11 +83,11 @@ int remap_area_pages(unsigned long addre - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_map(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; -- if (remap_area_pmd(pmd, address, end - address, -+ if (remap_area_pmd(dir, pmd, address, end - address, - phys_addr + address, flags)) - break; - error = 0; ---- linux-2.6.0-test1/arch/sparc64/kernel/devices.c 2003-06-26 22:07:24.000000000 -0700 -+++ 25/arch/sparc64/kernel/devices.c 2003-07-19 17:06:40.000000000 -0700 -@@ -31,6 +31,8 @@ int linux_num_cpus = 0; - extern void cpu_probe(void); - extern void central_probe(void); - -+unsigned long cpu_hz; -+ - void __init device_scan(void) - { - char node_str[128]; -@@ -68,6 +70,8 @@ void __init device_scan(void) - prom_getproperty(scan, "portid", - (char *) &thismid, sizeof(thismid)); - } -+ if (!cpu_hz) -+ cpu_hz = prom_getint(scan, "clock-frequency"); - linux_cpus[cpu_ctr].mid = thismid; - printk("Found CPU %d (node=%08x,mid=%d)\n", - cpu_ctr, (unsigned) scan, thismid); ---- linux-2.6.0-test1/arch/sparc64/kernel/head.S 2003-06-14 12:18:07.000000000 -0700 -+++ 25/arch/sparc64/kernel/head.S 2003-07-19 17:03:49.000000000 -0700 -@@ -66,7 +66,7 @@ sparc_ramdisk_image: - sparc_ramdisk_size: - .word 0 - .xword reboot_command -- .xword bootstr_len -+ .xword bootstr_info - .word _end - - /* We must be careful, 32-bit OpenBOOT will get confused if it -@@ -740,8 +740,9 @@ swapper_pg_dir: - - .data - .align 8 -- .globl prom_tba -+ .globl prom_tba, tlb_type - prom_tba: .xword 0 -+tlb_type: .word 0 /* Must NOT end up in BSS */ - .section ".fixup",#alloc,#execinstr - .globl __ret_efault - __ret_efault: ---- linux-2.6.0-test1/arch/sparc64/kernel/irq.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/sparc64/kernel/irq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -110,6 +110,10 @@ static void register_irq_proc (unsigned - action->flags |= __irq_ino(irq) << 48; - #define get_ino_in_irqaction(action) (action->flags >> 48) - -+#if NR_CPUS > 64 -+#error irqaction embedded smp affinity does not work with > 64 cpus, FIXME -+#endif -+ - #define put_smpaff_in_irqaction(action, smpaff) (action)->mask = (smpaff) - #define get_smpaff_in_irqaction(action) ((action)->mask) - -@@ -658,11 +662,11 @@ static inline void redirect_intr(int cpu - * Just Do It. - */ - struct irqaction *ap = bp->irq_info; -- unsigned long cpu_mask = get_smpaff_in_irqaction(ap); -+ cpumask_t cpu_mask = { .mask[0] = get_smpaff_in_irqaction(ap) }; - unsigned int buddy, ticks; - -- cpu_mask &= cpu_online_map; -- if (cpu_mask == 0) -+ cpus_and(cpu_mask, cpu_mask, cpu_online_map); -+ if (cpus_empty(cpu_mask)) - cpu_mask = cpu_online_map; - - if (this_is_starfire != 0 || -@@ -677,7 +681,7 @@ static inline void redirect_intr(int cpu - buddy = 0; - - ticks = 0; -- while ((cpu_mask & (1UL << buddy)) == 0) { -+ while (!cpu_isset(buddy, cpu_mask)) { - if (++buddy >= NR_CPUS) - buddy = 0; - if (++ticks > NR_CPUS) { ---- linux-2.6.0-test1/arch/sparc64/kernel/pci.c 2003-06-14 12:17:55.000000000 -0700 -+++ 25/arch/sparc64/kernel/pci.c 2003-07-19 17:03:49.000000000 -0700 -@@ -804,25 +804,20 @@ int pci_mmap_page_range(struct pci_dev * - - /* Return the domain nuber for this pci bus */ - --int pci_domain_nr(struct pci_bus *bus) -+int pci_domain_nr(struct pci_bus *pbus) - { -- struct pcidev_cookie *cookie = bus->sysdata; -+ struct pci_pbm_info *pbm = pbus->sysdata; - int ret; - -- if (cookie != NULL) { -- struct pci_pbm_info *pbm = cookie->pbm; -- if (pbm == NULL || pbm->parent == NULL) { -- ret = -ENXIO; -- } else { -- struct pci_controller_info *p = pbm->parent; -- -- ret = p->index; -- if (p->pbms_same_domain == 0) -- ret = ((ret << 1) + -- ((pbm == &pbm->parent->pbm_B) ? 1 : 0)); -- } -- } else { -+ if (pbm == NULL || pbm->parent == NULL) { - ret = -ENXIO; -+ } else { -+ struct pci_controller_info *p = pbm->parent; -+ -+ ret = p->index; -+ if (p->pbms_same_domain == 0) -+ ret = ((ret << 1) + -+ ((pbm == &pbm->parent->pbm_B) ? 1 : 0)); - } - - return ret; ---- linux-2.6.0-test1/arch/sparc64/kernel/setup.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/arch/sparc64/kernel/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -24,7 +24,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/arch/sparc64/kernel/smp.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/sparc64/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -46,12 +46,11 @@ cpuinfo_sparc cpu_data[NR_CPUS]; - /* Please don't make this stuff initdata!!! --DaveM */ - static unsigned char boot_cpu_id; - --atomic_t sparc64_num_cpus_online = ATOMIC_INIT(0); --unsigned long cpu_online_map = 0; -+cpumask_t cpu_online_map = CPU_MASK_NONE; - atomic_t sparc64_num_cpus_possible = ATOMIC_INIT(0); --unsigned long phys_cpu_present_map = 0; --static unsigned long smp_commenced_mask; --static unsigned long cpu_callout_map; -+cpumask_t phys_cpu_present_map = CPU_MASK_NONE; -+static cpumask_t smp_commenced_mask; -+static cpumask_t cpu_callout_map; - - void smp_info(struct seq_file *m) - { -@@ -151,11 +150,10 @@ void __init smp_callin(void) - atomic_inc(&init_mm.mm_count); - current->active_mm = &init_mm; - -- while (!test_bit(cpuid, &smp_commenced_mask)) -+ while (!cpu_isset(cpuid, smp_commenced_mask)) - membar("#LoadLoad"); - -- set_bit(cpuid, &cpu_online_map); -- atomic_inc(&sparc64_num_cpus_online); -+ cpu_set(cpuid, cpu_online_map); - } - - void cpu_panic(void) -@@ -334,7 +332,7 @@ static int __devinit smp_boot_one_cpu(un - if (linux_cpus[no].mid == cpu) - break; - cpu_new_thread = p->thread_info; -- set_bit(cpu, &cpu_callout_map); -+ cpu_set(cpu, cpu_callout_map); - prom_startcpu(linux_cpus[no].prom_node, entry, cookie); - for (timeout = 0; timeout < 5000000; timeout++) { - if (callin_flag) -@@ -346,7 +344,7 @@ static int __devinit smp_boot_one_cpu(un - ret = 0; - } else { - printk("Processor %d is stuck.\n", cpu); -- clear_bit(cpu, &cpu_callout_map); -+ cpu_clear(cpu, cpu_callout_map); - ret = -ENODEV; - } - cpu_new_thread = NULL; -@@ -420,17 +418,17 @@ again: - } - } - --static __inline__ void spitfire_xcall_deliver(u64 data0, u64 data1, u64 data2, unsigned long mask) -+static __inline__ void spitfire_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask) - { - u64 pstate; - int i; - - __asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate)); - for (i = 0; i < NR_CPUS; i++) { -- if (mask & (1UL << i)) { -+ if (cpu_isset(i, mask)) { - spitfire_xcall_helper(data0, data1, data2, pstate, i); -- mask &= ~(1UL << i); -- if (!mask) -+ cpu_clear(i, mask); -+ if (cpus_empty(mask)) - break; - } - } -@@ -443,12 +441,12 @@ static __inline__ void spitfire_xcall_de - #if NR_CPUS > 32 - #error Fixup cheetah_xcall_deliver Dave... - #endif --static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, unsigned long mask) -+static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask) - { - u64 pstate; - int nack_busy_id; - -- if (!mask) -+ if (cpus_empty(mask)) - return; - - __asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate)); -@@ -469,11 +467,11 @@ retry: - - nack_busy_id = 0; - { -- unsigned long work_mask = mask; -+ cpumask_t work_mask = mask; - int i; - - for (i = 0; i < NR_CPUS; i++) { -- if (work_mask & (1UL << i)) { -+ if (cpu_isset(i, work_mask)) { - u64 target = (i << 14) | 0x70; - - target |= (nack_busy_id++ << 24); -@@ -482,8 +480,8 @@ retry: - "membar #Sync\n\t" - : /* no outputs */ - : "r" (target), "i" (ASI_INTR_W)); -- work_mask &= ~(1UL << i); -- if (!work_mask) -+ cpu_clear(i, work_mask); -+ if (cpus_empty(work_mask)) - break; - } - } -@@ -518,7 +516,7 @@ retry: - printk("CPU[%d]: mondo stuckage result[%016lx]\n", - smp_processor_id(), dispatch_stat); - } else { -- unsigned long work_mask = mask; -+ cpumask_t work_mask = mask; - int i, this_busy_nack = 0; - - /* Delay some random time with interrupts enabled -@@ -530,13 +528,13 @@ retry: - * NACK us. - */ - for (i = 0; i < NR_CPUS; i++) { -- if (work_mask & (1UL << i)) { -+ if (cpu_isset(i, work_mask)) { - if ((dispatch_stat & - (0x2 << this_busy_nack)) == 0) -- mask &= ~(1UL << i); -+ cpu_clear(i, mask); - this_busy_nack += 2; -- work_mask &= ~(1UL << i); -- if (!work_mask) -+ cpu_clear(i, work_mask); -+ if (cpus_empty(work_mask)) - break; - } - } -@@ -549,12 +547,12 @@ retry: - /* Send cross call to all processors mentioned in MASK - * except self. - */ --static void smp_cross_call_masked(unsigned long *func, u32 ctx, u64 data1, u64 data2, unsigned long mask) -+static void smp_cross_call_masked(unsigned long *func, u32 ctx, u64 data1, u64 data2, cpumask_t mask) - { - u64 data0 = (((u64)ctx)<<32 | (((u64)func) & 0xffffffff)); - -- mask &= cpu_online_map; -- mask &= ~(1UL<mm_users) == 1) { - /* See smp_flush_tlb_page for info about this. */ -- mm->cpu_vm_mask = (1UL << cpu); -+ mm->cpu_vm_mask = cpumask_of_cpu(cpu); - goto local_flush_and_out; - } - -@@ -877,7 +877,7 @@ void smp_flush_tlb_range(struct mm_struc - end = PAGE_ALIGN(end); - - if (mm == current->active_mm && atomic_read(&mm->mm_users) == 1) { -- mm->cpu_vm_mask = (1UL << cpu); -+ mm->cpu_vm_mask = cpumask_of_cpu(cpu); - goto local_flush_and_out; - } - -@@ -921,14 +921,16 @@ void smp_flush_tlb_page(struct mm_struct - * is almost certain that all TLB entries for this - * context will be replaced by the time that happens. - */ -- mm->cpu_vm_mask = (1UL << cpu); -+ mm->cpu_vm_mask = cpumask_of_cpu(cpu); - goto local_flush_and_out; - } else { -+ cpumask_t this_cpu_mask = cpumask_of_cpu(cpu); -+ - /* By virtue of running under the mm->page_table_lock, - * and mmu_context.h:switch_mm doing the same, the - * following operation is safe. - */ -- if (mm->cpu_vm_mask == (1UL << cpu)) -+ if (cpus_equal(mm->cpu_vm_mask, this_cpu_mask)) - goto local_flush_and_out; - } - -@@ -939,7 +941,7 @@ void smp_flush_tlb_page(struct mm_struct - smp_cross_call_masked(&xcall_flush_tlb_page, - ctx, page, 0, - mm->cpu_vm_mask); -- if (!(mm->cpu_vm_mask & (1UL << cpu))) -+ if (!cpu_isset(cpu, mm->cpu_vm_mask)) - return; - - local_flush_and_out: -@@ -1122,8 +1124,7 @@ void __init smp_tick_init(void) - prom_halt(); - } - -- atomic_inc(&sparc64_num_cpus_online); -- set_bit(boot_cpu_id, &cpu_online_map); -+ cpu_set(boot_cpu_id, cpu_online_map); - prom_cpu_nodes[boot_cpu_id] = linux_cpus[0].prom_node; - prof_counter(boot_cpu_id) = prof_multiplier(boot_cpu_id) = 1; - } -@@ -1241,16 +1242,14 @@ void __init smp_prepare_cpus(unsigned in - - for (i = 0; i < linux_num_cpus; i++) { - if (linux_cpus[i].mid < max_cpus) { -- set_bit(linux_cpus[i].mid, -- &phys_cpu_present_map); -+ cpu_set(linux_cpus[i].mid, phys_cpu_present_map); - atomic_inc(&sparc64_num_cpus_possible); - } - } - if (atomic_read(&sparc64_num_cpus_possible) > max_cpus) { - for (i = linux_num_cpus - 1; i >= 0; i--) { - if (linux_cpus[i].mid != boot_cpu_id) { -- clear_bit(linux_cpus[i].mid, -- &phys_cpu_present_map); -+ cpu_clear(linux_cpus[i].mid, phys_cpu_present_map); - atomic_dec(&sparc64_num_cpus_possible); - if (atomic_read(&sparc64_num_cpus_possible) <= max_cpus) - break; -@@ -1263,8 +1262,8 @@ void __init smp_prepare_cpus(unsigned in - - void __devinit smp_prepare_boot_cpu(void) - { -- set_bit(smp_processor_id(), &cpu_online_map); -- set_bit(smp_processor_id(), &phys_cpu_present_map); -+ cpu_set(smp_processor_id(), cpu_online_map); -+ cpu_set(smp_processor_id(), phys_cpu_present_map); - } - - int __devinit __cpu_up(unsigned int cpu) -@@ -1272,10 +1271,10 @@ int __devinit __cpu_up(unsigned int cpu) - int ret = smp_boot_one_cpu(cpu); - - if (!ret) { -- set_bit(cpu, &smp_commenced_mask); -- while (!test_bit(cpu, &cpu_online_map)) -+ cpu_set(cpu, smp_commenced_mask); -+ while (!cpu_isset(cpu, cpu_online_map)) - mb(); -- if (!test_bit(cpu, &cpu_online_map)) { -+ if (!cpu_isset(cpu, cpu_online_map)) { - ret = -ENODEV; - } else { - smp_synchronize_one_tick(cpu); ---- linux-2.6.0-test1/arch/sparc64/kernel/sparc64_ksyms.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/sparc64/kernel/sparc64_ksyms.c 2003-07-19 17:04:07.000000000 -0700 -@@ -147,7 +147,6 @@ EXPORT_SYMBOL(cpu_data); - - /* CPU online map and active count. */ - EXPORT_SYMBOL(cpu_online_map); --EXPORT_SYMBOL(sparc64_num_cpus_online); - EXPORT_SYMBOL(phys_cpu_present_map); - EXPORT_SYMBOL(sparc64_num_cpus_possible); - -@@ -176,6 +175,8 @@ EXPORT_SYMBOL(up); - /* Atomic counter implementation. */ - EXPORT_SYMBOL(__atomic_add); - EXPORT_SYMBOL(__atomic_sub); -+EXPORT_SYMBOL(__atomic64_add); -+EXPORT_SYMBOL(__atomic64_sub); - #ifdef CONFIG_SMP - EXPORT_SYMBOL(atomic_dec_and_lock); - #endif ---- linux-2.6.0-test1/arch/sparc64/kernel/time.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/sparc64/kernel/time.c 2003-07-19 17:03:49.000000000 -0700 -@@ -41,6 +41,7 @@ - #include - #include - #include -+#include - - spinlock_t mostek_lock = SPIN_LOCK_UNLOCKED; - spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; -@@ -449,7 +450,6 @@ void sparc64_do_profile(struct pt_regs * - return; - - { -- extern int _stext; - extern int rwlock_impl_begin, rwlock_impl_end; - extern int atomic_impl_begin, atomic_impl_end; - extern int __memcpy_begin, __memcpy_end; -@@ -468,7 +468,7 @@ void sparc64_do_profile(struct pt_regs * - pc < (unsigned long) &__bitops_end)) - pc = o7; - -- pc -= (unsigned long) &_stext; -+ pc -= (unsigned long) _stext; - pc >>= prof_shift; - - if(pc >= prof_len) ---- linux-2.6.0-test1/arch/sparc64/kernel/us2e_cpufreq.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/sparc64/kernel/us2e_cpufreq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -232,15 +232,16 @@ static unsigned long estar_to_divisor(un - - static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index) - { -- unsigned long new_bits, new_freq, cpus_allowed; -+ unsigned long new_bits, new_freq; - unsigned long clock_tick, divisor, old_divisor, estar; -+ cpumask_t cpus_allowed; - struct cpufreq_freqs freqs; - - if (!cpu_online(cpu)) - return; - - cpus_allowed = current->cpus_allowed; -- set_cpus_allowed(current, (1UL << cpu)); -+ set_cpus_allowed(current, cpumask_of_cpu(cpu)); - - new_freq = clock_tick = sparc64_get_clock_tick(cpu); - new_bits = index_to_estar_mode(index); ---- linux-2.6.0-test1/arch/sparc64/kernel/us3_cpufreq.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/arch/sparc64/kernel/us3_cpufreq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -78,14 +78,15 @@ static unsigned long get_current_freq(un - - static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index) - { -- unsigned long new_bits, new_freq, reg, cpus_allowed; -+ unsigned long new_bits, new_freq, reg; -+ cpumask_t cpus_allowed; - struct cpufreq_freqs freqs; - - if (!cpu_online(cpu)) - return; - - cpus_allowed = current->cpus_allowed; -- set_cpus_allowed(current, (1UL << cpu)); -+ set_cpus_allowed(current, cpumask_of_cpu(cpu)); - - new_freq = sparc64_get_clock_tick(cpu); - switch (index) { ---- linux-2.6.0-test1/arch/sparc64/lib/atomic.S 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/sparc64/lib/atomic.S 2003-07-19 17:03:49.000000000 -0700 -@@ -33,4 +33,27 @@ __atomic_sub: /* %o0 = increment, %o1 = - membar #StoreLoad | #StoreStore - retl - sub %g7, %o0, %o0 -+ -+ .globl __atomic64_add -+__atomic64_add: /* %o0 = increment, %o1 = atomic_ptr */ -+ ldx [%o1], %g5 -+ add %g5, %o0, %g7 -+ casx [%o1], %g5, %g7 -+ cmp %g5, %g7 -+ bne,pn %xcc, __atomic64_add -+ membar #StoreLoad | #StoreStore -+ retl -+ add %g7, %o0, %o0 -+ -+ .globl __atomic64_sub -+__atomic64_sub: /* %o0 = increment, %o1 = atomic_ptr */ -+ ldx [%o1], %g5 -+ sub %g5, %o0, %g7 -+ casx [%o1], %g5, %g7 -+ cmp %g5, %g7 -+ bne,pn %xcc, __atomic64_sub -+ membar #StoreLoad | #StoreStore -+ retl -+ sub %g7, %o0, %o0 -+ - atomic_impl_end: ---- linux-2.6.0-test1/arch/sparc64/lib/rwlock.S 2003-06-26 22:07:24.000000000 -0700 -+++ 25/arch/sparc64/lib/rwlock.S 2003-07-19 17:06:40.000000000 -0700 -@@ -63,5 +63,33 @@ __write_lock: /* %o0 = lock_ptr */ - be,pt %icc, 99b - membar #StoreLoad | #StoreStore - ba,a,pt %xcc, 1b -+ -+ .globl __read_trylock -+__read_trylock: /* %o0 = lock_ptr */ -+ ldsw [%o0], %g5 -+ brlz,pn %g5, 100f -+ add %g5, 1, %g7 -+ cas [%o0], %g5, %g7 -+ cmp %g5, %g7 -+ bne,pn %icc, __read_trylock -+ membar #StoreLoad | #StoreStore -+ retl -+ mov 1, %o0 -+ -+ .globl __write_trylock -+__write_trylock: /* %o0 = lock_ptr */ -+ sethi %hi(0x80000000), %g2 -+1: lduw [%o0], %g5 -+4: brnz,pn %g5, 100f -+ or %g5, %g2, %g7 -+ cas [%o0], %g5, %g7 -+ cmp %g5, %g7 -+ bne,pn %icc, 1b -+ membar #StoreLoad | #StoreStore -+ retl -+ mov 1, %o0 -+100: retl -+ mov 0, %o0 -+ - rwlock_impl_end: - ---- linux-2.6.0-test1/arch/sparc64/mm/fault.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/sparc64/mm/fault.c 2003-07-19 17:03:49.000000000 -0700 -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - - #define ELEMENTS(arr) (sizeof (arr)/sizeof (arr[0])) - -@@ -320,10 +321,9 @@ asmlinkage void do_sparc64_fault(struct - - if (regs->tstate & TSTATE_PRIV) { - unsigned long tpc = regs->tpc; -- extern unsigned int _etext; - - /* Sanity check the PC. */ -- if ((tpc >= KERNBASE && tpc < (unsigned long) &_etext) || -+ if ((tpc >= KERNBASE && tpc < (unsigned long) _etext) || - (tpc >= MODULES_VADDR && tpc < MODULES_END)) { - /* Valid, no problems... */ - } else { ---- linux-2.6.0-test1/arch/sparc64/mm/generic.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/arch/sparc64/mm/generic.c 2003-07-19 17:07:16.000000000 -0700 -@@ -85,7 +85,7 @@ static inline void io_remap_pte_range(pt - } while (address < end); - } - --static inline int io_remap_pmd_range(pmd_t * pmd, unsigned long address, unsigned long size, -+static inline int io_remap_pmd_range(pgd_t *pgd, pmd_t * pmd, unsigned long address, unsigned long size, - unsigned long offset, pgprot_t prot, int space) - { - unsigned long end; -@@ -96,7 +96,7 @@ static inline int io_remap_pmd_range(pmd - end = PGDIR_SIZE; - offset -= address; - do { -- pte_t * pte = pte_alloc_map(current->mm, pmd, address); -+ pte_t * pte = pte_alloc_map(current->mm, pgd, &pmd, address); - if (!pte) - return -ENOMEM; - io_remap_pte_range(pte, address, end - address, address + offset, prot, space); -@@ -122,11 +122,11 @@ int io_remap_page_range(struct vm_area_s - - spin_lock(&mm->page_table_lock); - while (from < end) { -- pmd_t *pmd = pmd_alloc(current->mm, dir, from); -+ pmd_t *pmd = pmd_alloc_map(current->mm, dir, from); - error = -ENOMEM; - if (!pmd) - break; -- error = io_remap_pmd_range(pmd, from, end - from, offset + from, prot, space); -+ error = io_remap_pmd_range(pgd, pmd, from, end - from, offset + from, prot, space); - if (error) - break; - from = (from + PGDIR_SIZE) & PGDIR_MASK; ---- linux-2.6.0-test1/arch/sparc64/mm/hugetlbpage.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/arch/sparc64/mm/hugetlbpage.c 2003-07-19 17:07:16.000000000 -0700 -@@ -107,9 +107,11 @@ static pte_t *huge_pte_alloc_map(struct - - pgd = pgd_offset(mm, addr); - if (pgd) { -- pmd = pmd_alloc(mm, pgd, addr); -- if (pmd) -- pte = pte_alloc_map(mm, pmd, addr); -+ pmd = pmd_alloc_map(mm, pgd, addr); -+ if (pmd) { -+ pte = pte_alloc_map(mm, pgd, &pmd, addr); -+ pmd_unmap(pmd); -+ } - } - return pte; - } -@@ -122,9 +124,11 @@ static pte_t *huge_pte_offset_map(struct - - pgd = pgd_offset(mm, addr); - if (pgd) { -- pmd = pmd_offset(pgd, addr); -- if (pmd) -+ pmd = pmd_offset_map(pgd, addr); -+ if (pmd) { - pte = pte_offset_map(pmd, addr); -+ pmd_unmap(pmd); -+ } - } - return pte; - } ---- linux-2.6.0-test1/arch/sparc64/mm/init.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/arch/sparc64/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include - - DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); - -@@ -48,16 +49,14 @@ unsigned long *sparc64_valid_addr_bitmap - unsigned long phys_base; - unsigned long pfn_base; - --enum ultra_tlb_layout tlb_type = spitfire; -- - /* get_new_mmu_context() uses "cache + 1". */ - spinlock_t ctx_alloc_lock = SPIN_LOCK_UNLOCKED; - unsigned long tlb_context_cache = CTX_FIRST_VERSION - 1; - #define CTX_BMAP_SLOTS (1UL << (CTX_VERSION_SHIFT - 6)) - unsigned long mmu_context_bmap[CTX_BMAP_SLOTS]; - --/* References to section boundaries */ --extern char __init_begin, __init_end, _start, _end, etext, edata; -+/* References to special section boundaries */ -+extern char _start[], _end[]; - - /* Initial ramdisk setup */ - extern unsigned int sparc_ramdisk_image; -@@ -1333,7 +1332,7 @@ unsigned long __init bootmem_init(unsign - * image. The kernel is hard mapped below PAGE_OFFSET in a - * 4MB locked TLB translation. - */ -- start_pfn = PAGE_ALIGN((unsigned long) &_end) - -+ start_pfn = PAGE_ALIGN((unsigned long) _end) - - ((unsigned long) KERNBASE); - - /* Adjust up to the physical address where the kernel begins. */ -@@ -1349,7 +1348,7 @@ unsigned long __init bootmem_init(unsign - #ifdef CONFIG_BLK_DEV_INITRD - /* Now have to check initial ramdisk, so that bootmap does not overwrite it */ - if (sparc_ramdisk_image) { -- if (sparc_ramdisk_image >= (unsigned long)&_end - 2 * PAGE_SIZE) -+ if (sparc_ramdisk_image >= (unsigned long)_end - 2 * PAGE_SIZE) - sparc_ramdisk_image -= KERNBASE; - initrd_start = sparc_ramdisk_image + phys_base; - initrd_end = initrd_start + sparc_ramdisk_size; -@@ -1426,7 +1425,7 @@ void __init paging_init(void) - - set_bit(0, mmu_context_bmap); - -- real_end = (unsigned long)&_end; -+ real_end = (unsigned long)_end; - if ((real_end > ((unsigned long)KERNBASE + 0x400000))) - bigkernel = 1; - #ifdef CONFIG_BLK_DEV_INITRD -@@ -1718,7 +1717,7 @@ void __init mem_init(void) - memset(sparc64_valid_addr_bitmap, 0, i << 3); - - addr = PAGE_OFFSET + phys_base; -- last = PAGE_ALIGN((unsigned long)&_end) - -+ last = PAGE_ALIGN((unsigned long)_end) - - ((unsigned long) KERNBASE); - last += PAGE_OFFSET + phys_base; - while (addr < last) { -@@ -1745,11 +1744,11 @@ void __init mem_init(void) - SetPageReserved(mem_map_zero); - clear_page(page_address(mem_map_zero)); - -- codepages = (((unsigned long) &etext) - ((unsigned long)&_start)); -+ codepages = (((unsigned long) _etext) - ((unsigned long) _start)); - codepages = PAGE_ALIGN(codepages) >> PAGE_SHIFT; -- datapages = (((unsigned long) &edata) - ((unsigned long)&etext)); -+ datapages = (((unsigned long) _edata) - ((unsigned long) _etext)); - datapages = PAGE_ALIGN(datapages) >> PAGE_SHIFT; -- initpages = (((unsigned long) &__init_end) - ((unsigned long) &__init_begin)); -+ initpages = (((unsigned long) __init_end) - ((unsigned long) __init_begin)); - initpages = PAGE_ALIGN(initpages) >> PAGE_SHIFT; - - #ifndef CONFIG_SMP -@@ -1812,8 +1811,8 @@ void free_initmem (void) - /* - * The init section is aligned to 8k in vmlinux.lds. Page align for >8k pagesizes. - */ -- addr = PAGE_ALIGN((unsigned long)(&__init_begin)); -- initend = (unsigned long)(&__init_end) & PAGE_MASK; -+ addr = PAGE_ALIGN((unsigned long)(__init_begin)); -+ initend = (unsigned long)(__init_end) & PAGE_MASK; - for (; addr < initend; addr += PAGE_SIZE) { - unsigned long page; - struct page *p; ---- linux-2.6.0-test1/arch/sparc64/prom/bootstr.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/arch/sparc64/prom/bootstr.c 2003-07-19 17:03:49.000000000 -0700 -@@ -15,16 +15,22 @@ - */ - - #define BARG_LEN 256 --int bootstr_len = BARG_LEN; --static int bootstr_valid = 0; --static char bootstr_buf[BARG_LEN] = { 0 }; -+struct { -+ int bootstr_len; -+ int bootstr_valid; -+ char bootstr_buf[BARG_LEN]; -+} bootstr_info = { -+ .bootstr_len = BARG_LEN, -+}; - - char * __init - prom_getbootargs(void) - { - /* This check saves us from a panic when bootfd patches args. */ -- if (bootstr_valid) return bootstr_buf; -- prom_getstring(prom_chosen_node, "bootargs", bootstr_buf, BARG_LEN); -- bootstr_valid = 1; -- return bootstr_buf; -+ if (bootstr_info.bootstr_valid) -+ return bootstr_info.bootstr_buf; -+ prom_getstring(prom_chosen_node, "bootargs", -+ bootstr_info.bootstr_buf, BARG_LEN); -+ bootstr_info.bootstr_valid = 1; -+ return bootstr_info.bootstr_buf; - } ---- linux-2.6.0-test1/arch/sparc/kernel/process.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/sparc/kernel/process.c 2003-07-19 17:03:49.000000000 -0700 -@@ -590,16 +590,20 @@ int dump_fpu (struct pt_regs * regs, elf - put_psr(get_psr() | PSR_EF); - fpsave(¤t->thread.float_regs[0], ¤t->thread.fsr, - ¤t->thread.fpqueue[0], ¤t->thread.fpqdepth); -- regs->psr &= ~(PSR_EF); -- current->flags &= ~(PF_USEDFPU); -+ if (regs != NULL) { -+ regs->psr &= ~(PSR_EF); -+ current->flags &= ~(PF_USEDFPU); -+ } - } - #else - if (current == last_task_used_math) { - put_psr(get_psr() | PSR_EF); - fpsave(¤t->thread.float_regs[0], ¤t->thread.fsr, - ¤t->thread.fpqueue[0], ¤t->thread.fpqdepth); -- last_task_used_math = 0; -- regs->psr &= ~(PSR_EF); -+ if (regs != NULL) { -+ regs->psr &= ~(PSR_EF); -+ last_task_used_math = 0; -+ } - } - #endif - memcpy(&fpregs->pr_fr.pr_regs[0], ---- linux-2.6.0-test1/arch/sparc/kernel/setup.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/arch/sparc/kernel/setup.c 2003-07-19 17:03:49.000000000 -0700 -@@ -25,7 +25,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/arch/sparc/mm/generic.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/sparc/mm/generic.c 2003-07-19 17:07:16.000000000 -0700 -@@ -67,7 +67,7 @@ static inline void io_remap_pte_range(pt - } while (address < end); - } - --static inline int io_remap_pmd_range(pmd_t * pmd, unsigned long address, unsigned long size, -+static inline int io_remap_pmd_range(pgd_t *pgd, pmd_t * pmd, unsigned long address, unsigned long size, - unsigned long offset, pgprot_t prot, int space) - { - unsigned long end; -@@ -78,7 +78,7 @@ static inline int io_remap_pmd_range(pmd - end = PGDIR_SIZE; - offset -= address; - do { -- pte_t * pte = pte_alloc_map(current->mm, pmd, address); -+ pte_t * pte = pte_alloc_map(current->mm, pgd, &pmd, address); - if (!pte) - return -ENOMEM; - io_remap_pte_range(pte, address, end - address, address + offset, prot, space); -@@ -103,11 +103,11 @@ int io_remap_page_range(struct vm_area_s - - spin_lock(&mm->page_table_lock); - while (from < end) { -- pmd_t *pmd = pmd_alloc(current->mm, dir, from); -+ pmd_t *pmd = pmd_alloc_map(current->mm, dir, from); - error = -ENOMEM; - if (!pmd) - break; -- error = io_remap_pmd_range(pmd, from, end - from, offset + from, prot, space); -+ error = io_remap_pmd_range(pgd, pmd, from, end - from, offset + from, prot, space); - if (error) - break; - from = (from + PGDIR_SIZE) & PGDIR_MASK; ---- linux-2.6.0-test1/arch/sparc/mm/srmmu.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/sparc/mm/srmmu.c 2003-07-19 17:07:16.000000000 -0700 -@@ -15,7 +15,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -2188,7 +2187,7 @@ void __init ld_mmu_srmmu(void) - - BTFIXUPSET_CALL(pte_pfn, srmmu_pte_pfn, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(pmd_page, srmmu_pmd_page, BTFIXUPCALL_NORM); -- BTFIXUPSET_CALL(pgd_page, srmmu_pgd_page, BTFIXUPCALL_NORM); -+ BTFIXUPSET_CALL(__pgd_page, srmmu_pgd_page, BTFIXUPCALL_NORM); - - BTFIXUPSET_SETHI(none_mask, 0xF0000000); - -@@ -2220,7 +2219,7 @@ void __init ld_mmu_srmmu(void) - BTFIXUPSET_CALL(pte_alloc_one_kernel, srmmu_pte_alloc_one_kernel, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(pte_alloc_one, srmmu_pte_alloc_one, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(free_pmd_fast, srmmu_pmd_free, BTFIXUPCALL_NORM); -- BTFIXUPSET_CALL(pmd_alloc_one, srmmu_pmd_alloc_one, BTFIXUPCALL_NORM); -+ BTFIXUPSET_CALL(__pmd_alloc_one, srmmu_pmd_alloc_one, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(free_pgd_fast, srmmu_free_pgd_fast, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(get_pgd_fast, srmmu_get_pgd_fast, BTFIXUPCALL_NORM); - ---- linux-2.6.0-test1/arch/sparc/mm/sun4c.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/arch/sparc/mm/sun4c.c 2003-07-19 17:07:16.000000000 -0700 -@@ -2211,7 +2211,7 @@ void __init ld_mmu_sun4c(void) - BTFIXUPSET_CALL(pte_alloc_one_kernel, sun4c_pte_alloc_one_kernel, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(pte_alloc_one, sun4c_pte_alloc_one, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(free_pmd_fast, sun4c_free_pmd_fast, BTFIXUPCALL_NOP); -- BTFIXUPSET_CALL(pmd_alloc_one, sun4c_pmd_alloc_one, BTFIXUPCALL_RETO0); -+ BTFIXUPSET_CALL(__pmd_alloc_one, sun4c_pmd_alloc_one, BTFIXUPCALL_RETO0); - BTFIXUPSET_CALL(free_pgd_fast, sun4c_free_pgd_fast, BTFIXUPCALL_NORM); - BTFIXUPSET_CALL(get_pgd_fast, sun4c_get_pgd_fast, BTFIXUPCALL_NORM); - -@@ -2252,5 +2252,5 @@ void __init ld_mmu_sun4c(void) - - /* These should _never_ get called with two level tables. */ - BTFIXUPSET_CALL(pgd_set, sun4c_pgd_set, BTFIXUPCALL_NOP); -- BTFIXUPSET_CALL(pgd_page, sun4c_pgd_page, BTFIXUPCALL_RETO0); -+ BTFIXUPSET_CALL(__pgd_page, sun4c_pgd_page, BTFIXUPCALL_RETO0); - } ---- linux-2.6.0-test1/arch/um/drivers/ubd_kern.c 2003-06-14 12:18:20.000000000 -0700 -+++ 25/arch/um/drivers/ubd_kern.c 2003-07-19 17:03:49.000000000 -0700 -@@ -15,7 +15,6 @@ - - #include "linux/config.h" - #include "linux/module.h" --#include "linux/blk.h" - #include "linux/blkdev.h" - #include "linux/hdreg.h" - #include "linux/init.h" ---- linux-2.6.0-test1/arch/um/kernel/irq.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/arch/um/kernel/irq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -565,9 +565,9 @@ static struct proc_dir_entry * smp_affin - /* These are read and written as longs, so a read won't see a partial write - * even during a race. - */ --static unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; -+static cpumask_t irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; - --#define HEX_DIGITS 8 -+#define HEX_DIGITS (2*sizeof(cpumask_t)) - - static int irq_affinity_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) -@@ -578,10 +578,10 @@ static int irq_affinity_read_proc (char - } - - static unsigned int parse_hex_value (const char *buffer, -- unsigned long count, unsigned long *ret) -+ unsigned long count, cpumask_t *ret) - { - unsigned char hexnum [HEX_DIGITS]; -- unsigned long value; -+ cpumask_t value = CPU_MASK_NONE; - int i; - - if (!count) -@@ -595,10 +595,9 @@ static unsigned int parse_hex_value (con - * Parse the first 8 characters as a hex string, any non-hex char - * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. - */ -- value = 0; - - for (i = 0; i < count; i++) { -- unsigned int c = hexnum[i]; -+ unsigned int k, c = hexnum[i]; - - switch (c) { - case '0' ... '9': c -= '0'; break; -@@ -607,7 +606,10 @@ static unsigned int parse_hex_value (con - default: - goto out; - } -- value = (value << 4) | c; -+ cpus_shift_left(value, value, 16); -+ for (k = 0; k < 4; ++k) -+ if (c & (1 << k)) -+ cpu_set(k, value); - } - out: - *ret = value; -@@ -618,7 +620,7 @@ static int irq_affinity_write_proc (stru - unsigned long count, void *data) - { - int irq = (long) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t new_value, tmp; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; -@@ -631,7 +633,8 @@ static int irq_affinity_write_proc (stru - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ -- if (!(new_value & cpu_online_map)) -+ cpus_and(tmp, new_value, cpu_online_map); -+ if (cpus_empty(tmp)) - return -EINVAL; - #endif - -@@ -644,17 +647,27 @@ static int irq_affinity_write_proc (stru - static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -- unsigned long *mask = (unsigned long *) data; -+ cpumask_t tmp, *mask = (cpumask_t *) data; -+ int k, len = 0; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", *mask); -+ tmp = *mask; -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int prof_cpu_mask_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t *mask = (cpumask_t *)data, new_value; -+ unsigned long full_count = count, err; - - err = parse_hex_value(buffer, count, &new_value); - if (err) -@@ -693,7 +706,7 @@ static void register_irq_proc (unsigned - } - - /* Read and written as a long */ --unsigned long prof_cpu_mask = -1; -+cpumask_t prof_cpu_mask = CPU_MASK_ALL; - - void __init init_irq_proc (void) - { ---- linux-2.6.0-test1/arch/um/kernel/skas/process_kern.c 2003-06-14 12:18:04.000000000 -0700 -+++ 25/arch/um/kernel/skas/process_kern.c 2003-07-19 17:04:07.000000000 -0700 -@@ -152,7 +152,7 @@ static int start_kernel_proc(void *unuse - cpu_tasks[0].pid = pid; - cpu_tasks[0].task = current; - #ifdef CONFIG_SMP -- cpu_online_map = 1; -+ cpu_online_map = cpumask_of_cpu(0); - #endif - start_kernel(); - return(0); ---- linux-2.6.0-test1/arch/um/kernel/smp.c 2003-06-14 12:18:03.000000000 -0700 -+++ 25/arch/um/kernel/smp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -5,9 +5,6 @@ - - #include "linux/config.h" - --/* CPU online map, set by smp_boot_cpus */ --unsigned long cpu_online_map = 1; -- - #ifdef CONFIG_SMP - - #include "linux/sched.h" -@@ -24,6 +21,9 @@ unsigned long cpu_online_map = 1; - #include "irq_user.h" - #include "os.h" - -+/* CPU online map, set by smp_boot_cpus */ -+unsigned long cpu_online_map = cpumask_of_cpu(0); -+ - /* Per CPU bogomips and other parameters - * The only piece used here is the ipi pipe, which is set before SMP is - * started and never changed. -@@ -104,8 +104,8 @@ void smp_send_stop(void) - printk("done\n"); - } - --static unsigned long smp_commenced_mask; --static volatile unsigned long smp_callin_map = 0; -+static cpumask_t smp_commenced_mask; -+static cpumask_t smp_callin_map = CPU_MASK_NONE; - - static int idle_proc(void *cpup) - { -@@ -120,15 +120,15 @@ static int idle_proc(void *cpup) - current->thread.mode.tt.extern_pid); - - wmb(); -- if (test_and_set_bit(cpu, &smp_callin_map)) { -+ if (cpu_test_and_set(cpu, &smp_callin_map)) { - printk("huh, CPU#%d already present??\n", cpu); - BUG(); - } - -- while (!test_bit(cpu, &smp_commenced_mask)) -+ while (!cpu_isset(cpu, &smp_commenced_mask)) - cpu_relax(); - -- set_bit(cpu, &cpu_online_map); -+ cpu_set(cpu, cpu_online_map); - default_idle(); - return(0); - } -@@ -159,8 +159,8 @@ void smp_prepare_cpus(unsigned int maxcp - unsigned long waittime; - int err, cpu; - -- set_bit(0, &cpu_online_map); -- set_bit(0, &smp_callin_map); -+ cpu_set(0, cpu_online_map); -+ cpu_set(0, smp_callin_map); - - err = os_pipe(cpu_data[0].ipi_pipe, 1, 1); - if(err) panic("CPU#0 failed to create IPI pipe, errno = %d", -err); -@@ -177,10 +177,10 @@ void smp_prepare_cpus(unsigned int maxcp - unhash_process(idle); - - waittime = 200000000; -- while (waittime-- && !test_bit(cpu, &smp_callin_map)) -+ while (waittime-- && !cpu_isset(cpu, smp_callin_map)) - cpu_relax(); - -- if (test_bit(cpu, &smp_callin_map)) -+ if (cpu_isset(cpu, smp_callin_map)) - printk("done\n"); - else printk("failed\n"); - } -@@ -188,13 +188,13 @@ void smp_prepare_cpus(unsigned int maxcp - - void smp_prepare_boot_cpu(void) - { -- set_bit(smp_processor_id(), &cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_online_map); - } - - int __cpu_up(unsigned int cpu) - { -- set_bit(cpu, &smp_commenced_mask); -- while (!test_bit(cpu, &cpu_online_map)) -+ cpu_set(cpu, smp_commenced_mask); -+ while (!cpu_isset(cpu, cpu_online_map)) - mb(); - return(0); - } -@@ -271,7 +271,7 @@ int smp_call_function(void (*_func)(void - - for (i=0;ithread_info->cpu) && -- test_bit(i, &cpu_online_map)) -+ cpu_isset(i, cpu_online_map)) - write(cpu_data[i].ipi_pipe[1], "C", 1); - - while (atomic_read(&scf_started) != cpus) ---- linux-2.6.0-test1/arch/um/kernel/tt/process_kern.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/arch/um/kernel/tt/process_kern.c 2003-07-19 17:04:07.000000000 -0700 -@@ -419,7 +419,7 @@ static int start_kernel_proc(void *unuse - cpu_tasks[0].pid = pid; - cpu_tasks[0].task = current; - #ifdef CONFIG_SMP -- cpu_online_map = 1; -+ cpu_online_map = cpumask_of_cpu(0); - #endif - if(debug) os_stop_process(pid); - start_kernel(); ---- linux-2.6.0-test1/arch/um/kernel/um_arch.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/arch/um/kernel/um_arch.c 2003-07-19 17:04:07.000000000 -0700 -@@ -57,7 +57,7 @@ static int show_cpuinfo(struct seq_file - - index = (struct cpuinfo_um *)v - cpu_data; - #ifdef CONFIG_SMP -- if (!(cpu_online_map & (1 << index))) -+ if (!cpu_online(index)) - return 0; - #endif - ---- linux-2.6.0-test1/arch/v850/Kconfig 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/v850/Kconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -48,20 +48,24 @@ menu "Processor type and features" - choice - prompt "Platform" - default GDB -+ config V850E_SIM -+ bool "GDB" - config RTE_CB_MA1 - bool "RTE-V850E/MA1-CB" - config RTE_CB_NB85E - bool "RTE-V850E/NB85E-CB" -- config V850E_SIM -- bool "GDB" -+ config RTE_CB_ME2 -+ bool "RTE-V850E/ME2-CB" -+ config V850E_AS85EP1 -+ bool "AS85EP1" - config V850E2_SIM85E2C - bool "sim85e2c" -+ config V850E2_SIM85E2S -+ bool "sim85e2s" - config V850E2_FPGA85E2C - bool "NA85E2C-FPGA" - config V850E2_ANNA - bool "Anna" -- config V850E_AS85EP1 -- bool "AS85EP1" - endchoice - - -@@ -78,41 +82,32 @@ menu "Processor type and features" - bool - depends RTE_CB_MA1 - default y -- # Similarly for the RTE-V850E/MA1-CB - V850E/TEG -+ # Similarly for the RTE-V850E/NB85E-CB - V850E/TEG - config V850E_TEG - bool - depends RTE_CB_NB85E - default y -- -- # NB85E processor core -- config V850E_NB85E -+ # ... and the RTE-V850E/ME2-CB - V850E/ME2 -+ config V850E_ME2 - bool -- depends V850E_MA1 || V850E_TEG -+ depends RTE_CB_ME2 - default y - -- config V850E_MA1_HIGHRES_TIMER -- bool "High resolution timer support" -- depends V850E_MA1 -- - -- #### V850E2 processor-specific config -+ #### sim85e2-specific config - -- # V850E2 processors -- config V850E2 -+ config V850E2_SIM85E2 - bool -- depends V850E2_SIM85E2C || V850E2_FPGA85E2C || V850E2_ANNA -+ depends V850E2_SIM85E2C || V850E2_SIM85E2S - default y - -- # Processors based on the NA85E2A core -- config V850E2_NA85E2A -- bool -- depends V850E2_ANNA -- default y - -- # Processors based on the NA85E2C core -- config V850E2_NA85E2C -+ #### V850E2 processor-specific config -+ -+ # V850E2 processors -+ config V850E2 - bool -- depends V850E2_SIM85E2C || V850E2_FPGA85E2C -+ depends V850E2_SIM85E2 || V850E2_FPGA85E2C || V850E2_ANNA - default y - - -@@ -121,7 +116,7 @@ menu "Processor type and features" - # Boards in the RTE-x-CB series - config RTE_CB - bool -- depends RTE_CB_MA1 || RTE_CB_NB85E -+ depends RTE_CB_MA1 || RTE_CB_NB85E || RTE_CB_ME2 - default y - - config RTE_CB_MULTI -@@ -129,7 +124,7 @@ menu "Processor type and features" - # RTE_CB_NB85E can either have multi ROM support or not, but - # other platforms (currently only RTE_CB_MA1) require it. - prompt "Multi monitor ROM support" if RTE_CB_NB85E -- depends RTE_CB -+ depends RTE_CB_MA1 || RTE_CB_NB85E - default y - - config RTE_CB_MULTI_DBTRAP -@@ -156,14 +151,42 @@ menu "Processor type and features" - # The only PCI bus we support is on the RTE-MOTHER-A board - config PCI - bool -- default y if RTE_MB_A_PCI -+ default RTE_MB_A_PCI -+ -+ -+ #### Some feature-specific configs -+ -+ # Everything except for the GDB simulator uses the same interrupt controller -+ config V850E_INTC -+ bool -+ default !V850E_SIM -+ -+ # Everything except for the various simulators uses the "Timer D" unit -+ config V850E_TIMER_D -+ bool -+ default !V850E_SIM && !V850E2_SIM85E2 -+ -+ # Cache control used on some v850e1 processors -+ config V850E_CACHE -+ bool -+ default V850E_TEG || V850E_ME2 -+ -+ # Cache control used on v850e2 processors; I think this should -+ # actually apply to more, but currently only the SIM85E2S uses it -+ config V850E2_CACHE -+ bool -+ default V850E2_SIM85E2S -+ -+ config NO_CACHE -+ bool -+ default !V850E_CACHE && !V850E2_CACHE - - - #### Misc config - - config ROM_KERNEL - bool "Kernel in ROM" -- depends V850E2_ANNA || (RTE_CB && !RTE_CB_MULTI) -+ depends V850E2_ANNA || V850E_AS85EP1 || RTE_CB_ME2 - - # Some platforms pre-zero memory, in which case the kernel doesn't need to - config ZERO_BSS -@@ -177,9 +200,12 @@ menu "Processor type and features" - int - default 8 if V850E2_SIM85E2C || V850E2_FPGA85E2C - -+ config V850E_HIGHRES_TIMER -+ bool "High resolution timer support" -+ depends V850E_TIMER_D - config TIME_BOOTUP - bool "Time bootup" -- depends V850E_MA1_HIGHRES_TIMER -+ depends V850E_HIGHRES_TIMER - - config RESET_GUARD - bool "Reset Guard" -@@ -241,6 +267,7 @@ config KCORE_AOUT - default y - - config KCORE_ELF -+ bool - default y - - source "fs/Kconfig.binfmt" ---- linux-2.6.0-test1/arch/v850/kernel/anna.c 2003-06-14 12:18:21.000000000 -0700 -+++ 25/arch/v850/kernel/anna.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1,8 +1,8 @@ - /* - * arch/v850/kernel/anna.c -- Anna V850E2 evaluation chip/board - * -- * Copyright (C) 2002 NEC Corporation -- * Copyright (C) 2002 Miles Bader -+ * Copyright (C) 2002,03 NEC Electronics Corporation -+ * Copyright (C) 2002,03 Miles Bader - * - * This file is subject to the terms and conditions of the GNU General - * Public License. See the file COPYING in the main directory of this -@@ -21,8 +21,8 @@ - #include - #include - #include --#include --#include -+#include -+#include - - #include "mach.h" - -@@ -41,32 +41,34 @@ static void anna_led_tick (void); - - void __init mach_early_init (void) - { -- ANNA_ILBEN = 0; -- ANNA_CSC(0) = 0x402F; -- ANNA_CSC(1) = 0x4000; -- ANNA_BPC = 0; -- ANNA_BSC = 0xAAAA; -- ANNA_BEC = 0; -- ANNA_BHC = 0xFFFF; /* icache all memory, dcache all */ -- ANNA_BCT(0) = 0xB088; -- ANNA_BCT(1) = 0x0008; -- ANNA_DWC(0) = 0x0027; -- ANNA_DWC(1) = 0; -- ANNA_BCC = 0x0006; -- ANNA_ASC = 0; -- ANNA_LBS = 0x0089; -- ANNA_SCR3 = 0x21A9; -- ANNA_RFS3 = 0x8121; -+ ANNA_ILBEN = 0; - -- nb85e_intc_disable_irqs (); -+ V850E2_CSC(0) = 0x402F; -+ V850E2_CSC(1) = 0x4000; -+ V850E2_BPC = 0; -+ V850E2_BSC = 0xAAAA; -+ V850E2_BEC = 0; -+ -+#if 0 -+ V850E2_BHC = 0xFFFF; /* icache all memory, dcache all */ -+#else -+ V850E2_BHC = 0; /* cache no memory */ -+#endif -+ V850E2_BCT(0) = 0xB088; -+ V850E2_BCT(1) = 0x0008; -+ V850E2_DWC(0) = 0x0027; -+ V850E2_DWC(1) = 0; -+ V850E2_BCC = 0x0006; -+ V850E2_ASC = 0; -+ V850E2_LBS = 0x0089; -+ V850E2_SCR(3) = 0x21A9; -+ V850E2_RFS(3) = 0x8121; -+ -+ v850e_intc_disable_irqs (); - } - - void __init mach_setup (char **cmdline) - { --#ifdef CONFIG_V850E_NB85E_UART_CONSOLE -- nb85e_uart_cons_init (1); --#endif -- - ANNA_PORT_PM (LEDS_PORT) = 0; /* Make all LED pins output pins. */ - mach_tick = anna_led_tick; - } -@@ -95,12 +97,12 @@ void mach_gettimeofday (struct timespec - void __init mach_sched_init (struct irqaction *timer_action) - { - /* Start hardware timer. */ -- nb85e_timer_d_configure (0, HZ); -+ v850e_timer_d_configure (0, HZ); - /* Install timer interrupt handler. */ - setup_irq (IRQ_INTCMD(0), timer_action); - } - --static struct nb85e_intc_irq_init irq_inits[] = { -+static struct v850e_intc_irq_init irq_inits[] = { - { "IRQ", 0, NUM_MACH_IRQS, 1, 7 }, - { "PIN", IRQ_INTP(0), IRQ_INTP_NUM, 1, 4 }, - { "CCC", IRQ_INTCCC(0), IRQ_INTCCC_NUM, 1, 5 }, -@@ -118,7 +120,7 @@ static struct hw_interrupt_type hw_itype - - void __init mach_init_irqs (void) - { -- nb85e_intc_init_irq_types (irq_inits, hw_itypes); -+ v850e_intc_init_irq_types (irq_inits, hw_itypes); - } - - void machine_restart (char *__unused) ---- linux-2.6.0-test1/arch/v850/kernel/as85ep1.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/arch/v850/kernel/as85ep1.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1,8 +1,8 @@ - /* - * arch/v850/kernel/as85ep1.c -- AS85EP1 V850E evaluation chip/board - * -- * Copyright (C) 2002 NEC Corporation -- * Copyright (C) 2002 Miles Bader -+ * Copyright (C) 2002,03 NEC Electronics Corporation -+ * Copyright (C) 2002,03 Miles Bader - * - * This file is subject to the terms and conditions of the GNU General - * Public License. See the file COPYING in the main directory of this -@@ -21,8 +21,8 @@ - #include - #include - #include --#include --#include -+#include -+#include - - #include "mach.h" - -@@ -90,20 +90,14 @@ void __init mach_early_init (void) - AS85EP1_IRAMM = 0x0; /* $BFbB"L?Na(BRAM$B$O!V(Bread-mode$B!W$K$J$j$^$9(B */ - #endif /* !CONFIG_ROM_KERNEL */ - -- nb85e_intc_disable_irqs (); -+ v850e_intc_disable_irqs (); - } - - void __init mach_setup (char **cmdline) - { --#ifdef CONFIG_V850E_NB85E_UART_CONSOLE -- nb85e_uart_cons_init (1); --#endif -- - AS85EP1_PORT_PMC (LEDS_PORT) = 0; /* Make the LEDs port an I/O port. */ - AS85EP1_PORT_PM (LEDS_PORT) = 0; /* Make all the bits output pins. */ - mach_tick = as85ep1_led_tick; -- -- ROOT_DEV = MKDEV (BLKMEM_MAJOR, 0); - } - - void __init mach_get_physical_ram (unsigned long *ram_start, -@@ -137,21 +131,21 @@ void __init mach_reserve_bootmem () - root_fs_image_end - root_fs_image_start); - } - --void mach_gettimeofday (struct timeval *tv) -+void mach_gettimeofday (struct timespec *tv) - { - tv->tv_sec = 0; -- tv->tv_usec = 0; -+ tv->tv_nsec = 0; - } - - void __init mach_sched_init (struct irqaction *timer_action) - { - /* Start hardware timer. */ -- nb85e_timer_d_configure (0, HZ); -+ v850e_timer_d_configure (0, HZ); - /* Install timer interrupt handler. */ - setup_irq (IRQ_INTCMD(0), timer_action); - } - --static struct nb85e_intc_irq_init irq_inits[] = { -+static struct v850e_intc_irq_init irq_inits[] = { - { "IRQ", 0, NUM_MACH_IRQS, 1, 7 }, - { "CCC", IRQ_INTCCC(0), IRQ_INTCCC_NUM, 1, 5 }, - { "CMD", IRQ_INTCMD(0), IRQ_INTCMD_NUM, 1, 5 }, -@@ -166,7 +160,7 @@ static struct hw_interrupt_type hw_itype - - void __init mach_init_irqs (void) - { -- nb85e_intc_init_irq_types (irq_inits, hw_itypes); -+ v850e_intc_init_irq_types (irq_inits, hw_itypes); - } - - void machine_restart (char *__unused) ---- linux-2.6.0-test1/arch/v850/kernel/fpga85e2c.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/arch/v850/kernel/fpga85e2c.c 2003-07-19 17:03:49.000000000 -0700 -@@ -2,8 +2,8 @@ - * arch/v850/kernel/fpga85e2c.h -- Machine-dependent defs for - * FPGA implementation of V850E2/NA85E2C - * -- * Copyright (C) 2002 NEC Corporation -- * Copyright (C) 2002 Miles Bader -+ * Copyright (C) 2002,03 NEC Electronics Corporation -+ * Copyright (C) 2002,03 Miles Bader - * - * This file is subject to the terms and conditions of the GNU General - * Public License. See the file COPYING in the main directory of this -@@ -46,7 +46,7 @@ void __init mach_early_init (void) - - /* Set bus sizes: CS0 32-bit, CS1 16-bit, CS7 8-bit, - everything else 32-bit. */ -- BSC = 0x2AA6; -+ V850E2_BSC = 0x2AA6; - for (i = 2; i <= 6; i++) - CSDEV(i) = 0; /* 32 bit */ - -@@ -134,7 +134,7 @@ void machine_power_off (void) - - /* Interrupts */ - --struct nb85e_intc_irq_init irq_inits[] = { -+struct v850e_intc_irq_init irq_inits[] = { - { "IRQ", 0, NUM_MACH_IRQS, 1, 7 }, - { "RPU", IRQ_RPU(0), IRQ_RPU_NUM, 1, 6 }, - { 0 } -@@ -146,7 +146,7 @@ struct hw_interrupt_type hw_itypes[NUM_I - /* Initialize interrupts. */ - void __init mach_init_irqs (void) - { -- nb85e_intc_init_irq_types (irq_inits, hw_itypes); -+ v850e_intc_init_irq_types (irq_inits, hw_itypes); - } - - ---- linux-2.6.0-test1/arch/v850/kernel/gbus_int.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/arch/v850/kernel/gbus_int.c 2003-07-19 17:03:49.000000000 -0700 -@@ -113,9 +113,7 @@ static irqreturn_t gbus_int_handle_irq ( - /* Only pay attention to enabled interrupts. */ - status &= enable; - if (status) { -- unsigned base_irq -- = IRQ_GBUS_INT (w * GBUS_INT_BITS_PER_WORD); -- irq = base_irq; -+ irq = IRQ_GBUS_INT (w * GBUS_INT_BITS_PER_WORD); - do { - /* There's an active interrupt in word - W, find out which one, and call its -@@ -247,7 +245,7 @@ void __init gbus_int_init_irqs (void) - /* First initialize the shared gint interrupts. */ - for (i = 0; i < NUM_USED_GINTS; i++) { - unsigned gint = used_gint[i].gint; -- struct nb85e_intc_irq_init gint_irq_init[2]; -+ struct v850e_intc_irq_init gint_irq_init[2]; - - /* We initialize one GINT interrupt at a time. */ - gint_irq_init[0].name = "GINT"; -@@ -258,7 +256,7 @@ void __init gbus_int_init_irqs (void) - - gint_irq_init[1].name = 0; /* Terminate the vector. */ - -- nb85e_intc_init_irq_types (gint_irq_init, gint_hw_itypes); -+ v850e_intc_init_irq_types (gint_irq_init, gint_hw_itypes); - } - - /* Then the GBUS interrupts. */ ---- linux-2.6.0-test1/arch/v850/kernel/head.S 2003-06-14 12:17:58.000000000 -0700 -+++ 25/arch/v850/kernel/head.S 2003-07-19 17:03:49.000000000 -0700 -@@ -1,8 +1,8 @@ - /* - * arch/v850/kernel/head.S -- Lowest-level startup code - * -- * Copyright (C) 2001,02 NEC Corporation -- * Copyright (C) 2001,02 Miles Bader -+ * Copyright (C) 2001,02,03 NEC Electronics Corporation -+ * Copyright (C) 2001,02,03 Miles Bader - * - * This file is subject to the terms and conditions of the GNU General - * Public License. See the file COPYING in the main directory of this -@@ -115,7 +115,14 @@ C_ENTRY(start): - jarl CSYM(memset), lp - #endif - -- // Start Linux kernel. -+ // What happens if the main kernel function returns (it shouldn't) - mov hilo(CSYM(machine_halt)), lp -- jr CSYM(start_kernel) -+ -+ // Start the linux kernel. We use an indirect jump to get extra -+ // range, because on some platforms this initial startup code -+ // (and the associated platform-specific code in mach_early_init) -+ // are located far away from the main kernel, e.g. so that they -+ // can initialize RAM first and copy the kernel or something. -+ mov hilo(CSYM(start_kernel)), r12 -+ jmp [r12] - C_END(start) ---- linux-2.6.0-test1/arch/v850/kernel/highres_timer.c 2003-06-14 12:18:52.000000000 -0700 -+++ 25/arch/v850/kernel/highres_timer.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1,8 +1,8 @@ - /* - * arch/v850/kernel/highres_timer.c -- High resolution timing routines - * -- * Copyright (C) 2001,02 NEC Corporation -- * Copyright (C) 2001,02 Miles Bader -+ * Copyright (C) 2001,02,03 NEC Electronics Corporation -+ * Copyright (C) 2001,02,03 Miles Bader - * - * This file is subject to the terms and conditions of the GNU General - * Public License. See the file COPYING in the main directory of this -@@ -12,7 +12,7 @@ - */ - - #include --#include -+#include - #include - - #define HIGHRES_TIMER_USEC_SHIFT 12 -@@ -42,7 +42,7 @@ void highres_timer_slow_tick_irq (void) - - void highres_timer_reset (void) - { -- NB85E_TIMER_D_TMD (HIGHRES_TIMER_TIMER_D_UNIT) = 0; -+ V850E_TIMER_D_TMD (HIGHRES_TIMER_TIMER_D_UNIT) = 0; - HIGHRES_TIMER_SLOW_TICKS = 0; - } - -@@ -51,12 +51,12 @@ void highres_timer_start (void) - u32 fast_tick_rate; - - /* Start hardware timer. */ -- nb85e_timer_d_configure (HIGHRES_TIMER_TIMER_D_UNIT, -+ v850e_timer_d_configure (HIGHRES_TIMER_TIMER_D_UNIT, - HIGHRES_TIMER_SLOW_TICK_RATE); - - fast_tick_rate = -- (NB85E_TIMER_D_BASE_FREQ -- >> NB85E_TIMER_D_DIVLOG2 (HIGHRES_TIMER_TIMER_D_UNIT)); -+ (V850E_TIMER_D_BASE_FREQ -+ >> V850E_TIMER_D_DIVLOG2 (HIGHRES_TIMER_TIMER_D_UNIT)); - - /* The obvious way of calculating microseconds from fast ticks - is to do: -@@ -77,16 +77,16 @@ void highres_timer_start (void) - - /* Enable the interrupt (which is hardwired to this use), and - give it the highest priority. */ -- NB85E_INTC_IC (IRQ_INTCMD (HIGHRES_TIMER_TIMER_D_UNIT)) = 0; -+ V850E_INTC_IC (IRQ_INTCMD (HIGHRES_TIMER_TIMER_D_UNIT)) = 0; - } - - void highres_timer_stop (void) - { - /* Stop the timer. */ -- NB85E_TIMER_D_TMCD (HIGHRES_TIMER_TIMER_D_UNIT) = -- NB85E_TIMER_D_TMCD_CAE; -+ V850E_TIMER_D_TMCD (HIGHRES_TIMER_TIMER_D_UNIT) = -+ V850E_TIMER_D_TMCD_CAE; - /* Disable its interrupt, just in case. */ -- nb85e_intc_disable_irq (IRQ_INTCMD (HIGHRES_TIMER_TIMER_D_UNIT)); -+ v850e_intc_disable_irq (IRQ_INTCMD (HIGHRES_TIMER_TIMER_D_UNIT)); - } - - inline void highres_timer_read_ticks (u32 *slow_ticks, u32 *fast_ticks) -@@ -95,9 +95,9 @@ inline void highres_timer_read_ticks (u3 - u32 fast_ticks_1, fast_ticks_2, _slow_ticks; - - local_irq_save (flags); -- fast_ticks_1 = NB85E_TIMER_D_TMD (HIGHRES_TIMER_TIMER_D_UNIT); -+ fast_ticks_1 = V850E_TIMER_D_TMD (HIGHRES_TIMER_TIMER_D_UNIT); - _slow_ticks = HIGHRES_TIMER_SLOW_TICKS; -- fast_ticks_2 = NB85E_TIMER_D_TMD (HIGHRES_TIMER_TIMER_D_UNIT); -+ fast_ticks_2 = V850E_TIMER_D_TMD (HIGHRES_TIMER_TIMER_D_UNIT); - local_irq_restore (flags); - - if (fast_ticks_2 < fast_ticks_1) ---- linux-2.6.0-test1/arch/v850/kernel/intv.S 2003-06-14 12:18:22.000000000 -0700 -+++ 25/arch/v850/kernel/intv.S 2003-07-19 17:03:49.000000000 -0700 -@@ -16,7 +16,7 @@ - #include - #include - --#ifdef CONFIG_V850E_MA1_HIGHRES_TIMER -+#ifdef CONFIG_V850E_HIGHRES_TIMER - #include - #endif - -@@ -59,7 +59,7 @@ - .section .intv.mach, "ax" - .org 0x0 - --#if defined (CONFIG_V850E_MA1_HIGHRES_TIMER) && defined (IRQ_INTCMD) -+#if defined (CONFIG_V850E_HIGHRES_TIMER) && defined (IRQ_INTCMD) - - /* Interrupts before the highres timer interrupt. */ - .rept IRQ_INTCMD (HIGHRES_TIMER_TIMER_D_UNIT) ---- linux-2.6.0-test1/arch/v850/kernel/ma.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/arch/v850/kernel/ma.c 2003-07-19 17:03:49.000000000 -0700 -@@ -22,19 +22,19 @@ - #include - #include - #include --#include -+#include - - #include "mach.h" - - void __init mach_sched_init (struct irqaction *timer_action) - { - /* Start hardware timer. */ -- nb85e_timer_d_configure (0, HZ); -+ v850e_timer_d_configure (0, HZ); - /* Install timer interrupt handler. */ - setup_irq (IRQ_INTCMD(0), timer_action); - } - --static struct nb85e_intc_irq_init irq_inits[] = { -+static struct v850e_intc_irq_init irq_inits[] = { - { "IRQ", 0, NUM_MACH_IRQS, 1, 7 }, - { "CMD", IRQ_INTCMD(0), IRQ_INTCMD_NUM, 1, 5 }, - { "DMA", IRQ_INTDMA(0), IRQ_INTDMA_NUM, 1, 2 }, -@@ -51,7 +51,7 @@ static struct hw_interrupt_type hw_itype - /* Initialize MA chip interrupts. */ - void __init ma_init_irqs (void) - { -- nb85e_intc_init_irq_types (irq_inits, hw_itypes); -+ v850e_intc_init_irq_types (irq_inits, hw_itypes); - } - - /* Called before configuring an on-chip UART. */ ---- linux-2.6.0-test1/arch/v850/kernel/Makefile 2003-06-14 12:18:51.000000000 -0700 -+++ 25/arch/v850/kernel/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -15,24 +15,26 @@ obj-y += intv.o entry.o process.o syscal - signal.o irq.o mach.o ptrace.o bug.o - obj-$(CONFIG_MODULES) += module.o v850_ksyms.o - # chip-specific code --obj-$(CONFIG_V850E_NB85E) += nb85e_intc.o --obj-$(CONFIG_V850E_MA1) += ma.o nb85e_utils.o nb85e_timer_d.o --obj-$(CONFIG_V850E_TEG) += teg.o nb85e_utils.o nb85e_cache.o \ -- nb85e_timer_d.o --obj-$(CONFIG_V850E2_ANNA) += anna.o nb85e_intc.o nb85e_utils.o \ -- nb85e_timer_d.o --obj-$(CONFIG_V850E_AS85EP1) += as85ep1.o nb85e_intc.o nb85e_utils.o \ -- nb85e_timer_d.o -+obj-$(CONFIG_V850E_MA1) += ma.o -+obj-$(CONFIG_V850E_ME2) += me2.o -+obj-$(CONFIG_V850E_TEG) += teg.o -+obj-$(CONFIG_V850E_AS85EP1) += as85ep1.o -+obj-$(CONFIG_V850E2_ANNA) += anna.o - # platform-specific code - obj-$(CONFIG_V850E_SIM) += sim.o simcons.o --obj-$(CONFIG_V850E2_SIM85E2C) += sim85e2c.o nb85e_intc.o memcons.o --obj-$(CONFIG_V850E2_FPGA85E2C) += fpga85e2c.o nb85e_intc.o memcons.o -+obj-$(CONFIG_V850E2_SIM85E2) += sim85e2.o memcons.o -+obj-$(CONFIG_V850E2_FPGA85E2C) += fpga85e2c.o memcons.o - obj-$(CONFIG_RTE_CB) += rte_cb.o rte_cb_leds.o - obj-$(CONFIG_RTE_CB_MA1) += rte_ma1_cb.o -+obj-$(CONFIG_RTE_CB_ME2) += rte_me2_cb.o - obj-$(CONFIG_RTE_CB_NB85E) += rte_nb85e_cb.o - obj-$(CONFIG_RTE_CB_MULTI) += rte_cb_multi.o - obj-$(CONFIG_RTE_MB_A_PCI) += rte_mb_a_pci.o - obj-$(CONFIG_RTE_GBUS_INT) += gbus_int.o - # feature-specific code --obj-$(CONFIG_V850E_MA1_HIGHRES_TIMER) += highres_timer.o -+obj-$(CONFIG_V850E_INTC) += v850e_intc.o -+obj-$(CONFIG_V850E_TIMER_D) += v850e_timer_d.o v850e_utils.o -+obj-$(CONFIG_V850E_CACHE) += v850e_cache.o -+obj-$(CONFIG_V850E2_CACHE) += v850e2_cache.o -+obj-$(CONFIG_V850E_HIGHRES_TIMER) += highres_timer.o - obj-$(CONFIG_PROC_FS) += procfs.o ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/me2.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,74 @@ -+/* -+ * arch/v850/kernel/me2.c -- V850E/ME2 chip-specific support -+ * -+ * Copyright (C) 2003 NEC Corporation -+ * Copyright (C) 2003 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include "mach.h" -+ -+void __init mach_sched_init (struct irqaction *timer_action) -+{ -+ /* Start hardware timer. */ -+ v850e_timer_d_configure (0, HZ); -+ /* Install timer interrupt handler. */ -+ setup_irq (IRQ_INTCMD(0), timer_action); -+} -+ -+static struct v850e_intc_irq_init irq_inits[] = { -+ { "IRQ", 0, NUM_CPU_IRQS, 1, 7 }, -+ { "INTP", IRQ_INTP(0), IRQ_INTP_NUM, 1, 5 }, -+ { "CMD", IRQ_INTCMD(0), IRQ_INTCMD_NUM, 1, 3 }, -+ { "UBTIRE", IRQ_INTUBTIRE(0), IRQ_INTUBTIRE_NUM, 5, 4 }, -+ { "UBTIR", IRQ_INTUBTIR(0), IRQ_INTUBTIR_NUM, 5, 4 }, -+ { "UBTIT", IRQ_INTUBTIT(0), IRQ_INTUBTIT_NUM, 5, 4 }, -+ { "UBTIF", IRQ_INTUBTIF(0), IRQ_INTUBTIF_NUM, 5, 4 }, -+ { "UBTITO", IRQ_INTUBTITO(0), IRQ_INTUBTITO_NUM, 5, 4 }, -+ { 0 } -+}; -+#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) -+ -+static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; -+ -+/* Initialize V850E/ME2 chip interrupts. */ -+void __init me2_init_irqs (void) -+{ -+ v850e_intc_init_irq_types (irq_inits, hw_itypes); -+} -+ -+/* Called before configuring an on-chip UART. */ -+void me2_uart_pre_configure (unsigned chan, unsigned cflags, unsigned baud) -+{ -+ if (chan == 0) { -+ /* Specify that the relevent pins on the chip should do -+ serial I/O, not direct I/O. */ -+ ME2_PORT1_PMC |= 0xC; -+ /* Specify that we're using the UART, not the CSI device. */ -+ ME2_PORT1_PFC |= 0xC; -+ } else if (chan == 1) { -+ /* Specify that the relevent pins on the chip should do -+ serial I/O, not direct I/O. */ -+ ME2_PORT2_PMC |= 0x6; -+ /* Specify that we're using the UART, not the CSI device. */ -+ ME2_PORT2_PFC |= 0x6; -+ } -+} ---- linux-2.6.0-test1/arch/v850/kernel/nb85e_cache.c 2003-06-14 12:18:25.000000000 -0700 -+++ /dev/null 2002-08-30 16:31:37.000000000 -0700 -@@ -1,178 +0,0 @@ --/* -- * arch/v850/kernel/nb85e_cache.c -- Cache control for NB85E_CACHE212 and -- * NB85E_CACHE213 cache memories -- * -- * Copyright (C) 2003 NEC Electronics Corporation -- * Copyright (C) 2003 Miles Bader -- * -- * This file is subject to the terms and conditions of the GNU General -- * Public License. See the file COPYING in the main directory of this -- * archive for more details. -- * -- * Written by Miles Bader -- */ -- --#include --#include -- --#define WAIT_UNTIL_CLEAR(value) while (value) {} -- --/* Set caching params via the BHC and DCC registers. */ --void nb85e_cache_enable (u16 bhc, u16 dcc) --{ -- unsigned long *r0_ram = (unsigned long *)R0_RAM_ADDR; -- register u16 bhc_val asm ("r6") = bhc; -- -- /* Configure data-cache. */ -- NB85E_CACHE_DCC = dcc; -- -- /* Configure caching for various memory regions by writing the BHC -- register. The documentation says that an instruction _cannot_ -- enable/disable caching for the memory region in which the -- instruction itself exists; to work around this, we store -- appropriate instructions into the on-chip RAM area (which is never -- cached), and briefly jump there to do the work. */ -- r0_ram[0] = 0xf0720760; /* st.h r0, 0xfffff072[r0] */ -- r0_ram[1] = 0xf06a3760; /* st.h r6, 0xfffff06a[r0] */ -- r0_ram[2] = 0x5640006b; /* jmp [r11] */ -- asm ("mov hilo(1f), r11; jmp [%1]; 1:;" -- :: "r" (bhc_val), "r" (R0_RAM_ADDR) : "r11"); --} -- --static void clear_icache (void) --{ -- /* 1. Read the instruction cache control register (ICC) and confirm -- that bits 0 and 1 (TCLR0, TCLR1) are all cleared. */ -- WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x3); -- -- /* 2. Read the ICC register and confirm that bit 12 (LOCK0) is -- cleared. Bit 13 of the ICC register is always cleared. */ -- WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x1000); -- -- /* 3. Set the TCLR0 and TCLR1 bits of the ICC register as follows, -- when clearing way 0 and way 1 at the same time: -- (a) Set the TCLR0 and TCLR1 bits. -- (b) Read the TCLR0 and TCLR1 bits to confirm that these bits -- are cleared. -- (c) Perform (a) and (b) above again. */ -- NB85E_CACHE_ICC |= 0x3; -- WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x3); -- /* Do it again. */ -- NB85E_CACHE_ICC |= 0x3; -- WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x3); --} -- --/* Flush or clear (or both) the data cache, depending on the value of FLAGS; -- the procedure is the same for both, just the control bits used differ (and -- both may be performed simultaneously). */ --static void dcache_op (unsigned short flags) --{ -- /* 1. Read the data cache control register (DCC) and confirm that bits -- 0, 1, 4, and 5 (DC00, DC01, DC04, DC05) are all cleared. */ -- WAIT_UNTIL_CLEAR (NB85E_CACHE_DCC & 0x33); -- -- /* 2. Clear DCC register bit 12 (DC12), bit 13 (DC13), or both -- depending on the way for which tags are to be cleared. */ -- NB85E_CACHE_DCC &= ~0xC000; -- -- /* 3. Set DCC register bit 0 (DC00), bit 1 (DC01) or both depending on -- the way for which tags are to be cleared. -- ... -- Set DCC register bit 4 (DC04), bit 5 (DC05), or both depending -- on the way to be data flushed. */ -- NB85E_CACHE_DCC |= flags; -- -- /* 4. Read DCC register bit DC00, DC01 [DC04, DC05], or both depending -- on the way for which tags were cleared [flushed] and confirm -- that that bit is cleared. */ -- WAIT_UNTIL_CLEAR (NB85E_CACHE_DCC & flags); --} -- --/* Flushes the contents of the dcache to memory. */ --static inline void flush_dcache (void) --{ -- /* We only need to do something if in write-back mode. */ -- if (NB85E_CACHE_DCC & 0x0400) -- dcache_op (0x30); --} -- --/* Flushes the contents of the dcache to memory, and then clears it. */ --static inline void clear_dcache (void) --{ -- /* We only need to do something if the dcache is enabled. */ -- if (NB85E_CACHE_DCC & 0x0C00) -- dcache_op (0x33); --} -- --/* Clears the dcache without flushing to memory first. */ --static inline void clear_dcache_no_flush (void) --{ -- /* We only need to do something if the dcache is enabled. */ -- if (NB85E_CACHE_DCC & 0x0C00) -- dcache_op (0x3); --} -- --static inline void cache_exec_after_store (void) --{ -- flush_dcache (); -- clear_icache (); --} -- -- --/* Exported functions. */ -- --void inline nb85e_cache_flush_all (void) --{ -- clear_icache (); -- clear_dcache (); --} -- --void nb85e_cache_flush_mm (struct mm_struct *mm) --{ -- /* nothing */ --} -- --void nb85e_cache_flush_range (struct mm_struct *mm, -- unsigned long start, unsigned long end) --{ -- /* nothing */ --} -- --void nb85e_cache_flush_page (struct vm_area_struct *vma, -- unsigned long page_addr) --{ -- /* nothing */ --} -- --void nb85e_cache_flush_dcache_page (struct page *page) --{ -- /* nothing */ --} -- --void nb85e_cache_flush_icache (void) --{ -- cache_exec_after_store (); --} -- --void nb85e_cache_flush_icache_range (unsigned long start, unsigned long end) --{ -- cache_exec_after_store (); --} -- --void nb85e_cache_flush_icache_page (struct vm_area_struct *vma, -- struct page *page) --{ -- cache_exec_after_store (); --} -- --void nb85e_cache_flush_icache_user_range (struct vm_area_struct *vma, -- struct page *page, -- unsigned long adr, int len) --{ -- cache_exec_after_store (); --} -- --void nb85e_cache_flush_sigtramp (unsigned long addr) --{ -- cache_exec_after_store (); --} ---- linux-2.6.0-test1/arch/v850/kernel/nb85e_intc.c 2003-06-14 12:18:06.000000000 -0700 -+++ /dev/null 2002-08-30 16:31:37.000000000 -0700 -@@ -1,104 +0,0 @@ --/* -- * arch/v850/kernel/nb85e_intc.c -- NB85E cpu core interrupt controller (INTC) -- * -- * Copyright (C) 2001,02,03 NEC Electronics Corporation -- * Copyright (C) 2001,02,03 Miles Bader -- * -- * This file is subject to the terms and conditions of the GNU General -- * Public License. See the file COPYING in the main directory of this -- * archive for more details. -- * -- * Written by Miles Bader -- */ -- --#include --#include --#include -- --#include -- --static void irq_nop (unsigned irq) { } -- --static unsigned nb85e_intc_irq_startup (unsigned irq) --{ -- nb85e_intc_clear_pending_irq (irq); -- nb85e_intc_enable_irq (irq); -- return 0; --} -- --static void nb85e_intc_end_irq (unsigned irq) --{ -- unsigned long psw, temp; -- -- /* Clear the highest-level bit in the In-service priority register -- (ISPR), to allow this interrupt (or another of the same or -- lesser priority) to happen again. -- -- The `reti' instruction normally does this automatically when the -- PSW bits EP and NP are zero, but we can't always rely on reti -- being used consistently to return after an interrupt (another -- process can be scheduled, for instance, which can delay the -- associated reti for a long time, or this process may be being -- single-stepped, which uses the `dbret' instruction to return -- from the kernel). -- -- We also set the PSW EP bit, which prevents reti from also -- trying to modify the ISPR itself. */ -- -- /* Get PSW and disable interrupts. */ -- asm volatile ("stsr psw, %0; di" : "=r" (psw)); -- /* We don't want to do anything for NMIs (they don't use the ISPR). */ -- if (! (psw & 0xC0)) { -- /* Transition to `trap' state, so that an eventual real -- reti instruction won't modify the ISPR. */ -- psw |= 0x40; -- /* Fake an interrupt return, which automatically clears the -- appropriate bit in the ISPR. */ -- asm volatile ("mov hilo(1f), %0;" -- "ldsr %0, eipc; ldsr %1, eipsw;" -- "reti;" -- "1:" -- : "=&r" (temp) : "r" (psw)); -- } --} -- --/* Initialize HW_IRQ_TYPES for INTC-controlled irqs described in array -- INITS (which is terminated by an entry with the name field == 0). */ --void __init nb85e_intc_init_irq_types (struct nb85e_intc_irq_init *inits, -- struct hw_interrupt_type *hw_irq_types) --{ -- struct nb85e_intc_irq_init *init; -- for (init = inits; init->name; init++) { -- unsigned i; -- struct hw_interrupt_type *hwit = hw_irq_types++; -- -- hwit->typename = init->name; -- -- hwit->startup = nb85e_intc_irq_startup; -- hwit->shutdown = nb85e_intc_disable_irq; -- hwit->enable = nb85e_intc_enable_irq; -- hwit->disable = nb85e_intc_disable_irq; -- hwit->ack = irq_nop; -- hwit->end = nb85e_intc_end_irq; -- -- /* Initialize kernel IRQ infrastructure for this interrupt. */ -- init_irq_handlers(init->base, init->num, init->interval, hwit); -- -- /* Set the interrupt priorities. */ -- for (i = 0; i < init->num; i++) { -- unsigned irq = init->base + i * init->interval; -- -- /* If the interrupt is currently enabled (all -- interrupts are initially disabled), then -- assume whoever enabled it has set things up -- properly, and avoid messing with it. */ -- if (! nb85e_intc_irq_enabled (irq)) -- /* This write also (1) disables the -- interrupt, and (2) clears any pending -- interrupts. */ -- NB85E_INTC_IC (irq) -- = (NB85E_INTC_IC_PR (init->priority) -- | NB85E_INTC_IC_MK); -- } -- } --} ---- linux-2.6.0-test1/arch/v850/kernel/nb85e_timer_d.c 2003-06-14 12:18:21.000000000 -0700 -+++ /dev/null 2002-08-30 16:31:37.000000000 -0700 -@@ -1,54 +0,0 @@ --/* -- * include/asm-v850/nb85e_timer_d.c -- `Timer D' component often used -- * with the NB85E cpu core -- * -- * Copyright (C) 2001,02 NEC Corporation -- * Copyright (C) 2001,02 Miles Bader -- * -- * This file is subject to the terms and conditions of the GNU General -- * Public License. See the file COPYING in the main directory of this -- * archive for more details. -- * -- * Written by Miles Bader -- */ -- --#include -- --#include --#include -- --/* Start interval timer TIMER (0-3). The timer will issue the -- corresponding INTCMD interrupt RATE times per second. -- This function does not enable the interrupt. */ --void nb85e_timer_d_configure (unsigned timer, unsigned rate) --{ -- unsigned divlog2, count; -- -- /* Calculate params for timer. */ -- if (! calc_counter_params ( -- NB85E_TIMER_D_BASE_FREQ, rate, -- NB85E_TIMER_D_TMCD_CS_MIN, NB85E_TIMER_D_TMCD_CS_MAX, 16, -- &divlog2, &count)) -- printk (KERN_WARNING -- "Cannot find interval timer %d setting suitable" -- " for rate of %dHz.\n" -- "Using rate of %dHz instead.\n", -- timer, rate, -- (NB85E_TIMER_D_BASE_FREQ >> divlog2) >> 16); -- -- /* Do the actual hardware timer initialization: */ -- -- /* Enable timer. */ -- NB85E_TIMER_D_TMCD(timer) = NB85E_TIMER_D_TMCD_CAE; -- /* Set clock divider. */ -- NB85E_TIMER_D_TMCD(timer) -- = NB85E_TIMER_D_TMCD_CAE -- | NB85E_TIMER_D_TMCD_CS(divlog2); -- /* Set timer compare register. */ -- NB85E_TIMER_D_CMD(timer) = count; -- /* Start counting. */ -- NB85E_TIMER_D_TMCD(timer) -- = NB85E_TIMER_D_TMCD_CAE -- | NB85E_TIMER_D_TMCD_CS(divlog2) -- | NB85E_TIMER_D_TMCD_CE; --} ---- linux-2.6.0-test1/arch/v850/kernel/nb85e_utils.c 2003-06-14 12:17:59.000000000 -0700 -+++ /dev/null 2002-08-30 16:31:37.000000000 -0700 -@@ -1,65 +0,0 @@ --/* -- * include/asm-v850/nb85e_utils.h -- Utility functions associated with -- * the NB85E cpu core -- * -- * Copyright (C) 2001,02 NEC Corporation -- * Copyright (C) 2001,02 Miles Bader -- * -- * This file is subject to the terms and conditions of the GNU General -- * Public License. See the file COPYING in the main directory of this -- * archive for more details. -- * -- * Written by Miles Bader -- */ -- --/* Note: these functions are often associated with the N85E cpu core, -- but not always, which is why they're not in `nb85e.c'. */ -- --#include -- --/* Calculate counter clock-divider and count values to attain the -- desired frequency RATE from the base frequency BASE_FREQ. The -- counter is expected to have a clock-divider, which can divide the -- system cpu clock by a power of two value from MIN_DIVLOG2 to -- MAX_DIV_LOG2, and a word-size of COUNTER_SIZE bits (the counter -- counts up and resets whenever it's equal to the compare register, -- generating an interrupt or whatever when it does so). The returned -- values are: *DIVLOG2 -- log2 of the desired clock divider and *COUNT -- -- the counter compare value to use. Returns true if it was possible -- to find a reasonable value, otherwise false (and the other return -- values will be set to be as good as possible). */ --int calc_counter_params (unsigned long base_freq, -- unsigned long rate, -- unsigned min_divlog2, unsigned max_divlog2, -- unsigned counter_size, -- unsigned *divlog2, unsigned *count) --{ -- unsigned _divlog2; -- int ok = 0; -- -- /* Find the lowest clock divider setting that can represent RATE. */ -- for (_divlog2 = min_divlog2; _divlog2 <= max_divlog2; _divlog2++) { -- /* Minimum interrupt rate possible using this divider. */ -- unsigned min_int_rate -- = (base_freq >> _divlog2) >> counter_size; -- -- if (min_int_rate <= rate) { -- /* This setting is the highest resolution -- setting that's slow enough enough to attain -- RATE interrupts per second, so use it. */ -- ok = 1; -- break; -- } -- } -- -- if (_divlog2 > max_divlog2) -- /* Can't find correct setting. */ -- _divlog2 = max_divlog2; -- -- if (divlog2) -- *divlog2 = _divlog2; -- if (count) -- *count = ((base_freq >> _divlog2) + rate/2) / rate; -- -- return ok; --} ---- linux-2.6.0-test1/arch/v850/kernel/rte_cb.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/arch/v850/kernel/rte_cb.c 2003-07-19 17:03:49.000000000 -0700 -@@ -17,7 +17,7 @@ - #include - - #include --#include -+#include - - #include "mach.h" - -@@ -34,7 +34,7 @@ extern void multi_init (void); - - void __init rte_cb_early_init (void) - { -- nb85e_intc_disable_irqs (); -+ v850e_intc_disable_irqs (); - - #ifdef CONFIG_RTE_CB_MULTI - multi_init (); -@@ -43,6 +43,7 @@ void __init rte_cb_early_init (void) - - void __init mach_setup (char **cmdline) - { -+#ifdef CONFIG_RTE_MB_A_PCI - /* Probe for Mother-A, and print a message if we find it. */ - *(volatile unsigned long *)MB_A_SRAM_ADDR = 0xDEADBEEF; - if (*(volatile unsigned long *)MB_A_SRAM_ADDR == 0xDEADBEEF) { -@@ -52,23 +53,11 @@ void __init mach_setup (char **cmdline) - " NEC SolutionGear/Midas lab" - " RTE-MOTHER-A motherboard\n"); - } -- --#if defined (CONFIG_V850E_NB85E_UART_CONSOLE) && !defined (CONFIG_TIME_BOOTUP) -- nb85e_uart_cons_init (0); --#endif -+#endif /* CONFIG_RTE_MB_A_PCI */ - - mach_tick = led_tick; - } - --#ifdef CONFIG_TIME_BOOTUP --void initial_boot_done (void) --{ --#ifdef CONFIG_V850E_NB85E_UART_CONSOLE -- nb85e_uart_cons_init (0); --#endif --} --#endif -- - void machine_restart (char *__unused) - { - #ifdef CONFIG_RESET_GUARD -@@ -194,6 +183,7 @@ static struct hw_interrupt_type gbus_hw_ - - #endif /* CONFIG_RTE_GBUS_INT */ - -+ - void __init rte_cb_init_irqs (void) - { - #ifdef CONFIG_RTE_GBUS_INT ---- linux-2.6.0-test1/arch/v850/kernel/rte_ma1_cb.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/arch/v850/kernel/rte_ma1_cb.c 2003-07-19 17:03:49.000000000 -0700 -@@ -20,7 +20,7 @@ - #include - #include - #include --#include -+#include - - #include "mach.h" - -@@ -89,14 +89,14 @@ void __init mach_init_irqs (void) - rte_cb_init_irqs (); - - /* Use falling-edge-sensitivity for interrupts . */ -- NB85E_TIMER_C_SESC (0) &= ~0xC; -- NB85E_TIMER_C_SESC (1) &= ~0xF; -+ V850E_TIMER_C_SESC (0) &= ~0xC; -+ V850E_TIMER_C_SESC (1) &= ~0xF; - - /* INTP000-INTP011 are shared with `Timer C', so we have to set - up Timer C to pass them through as raw interrupts. */ - for (tc = 0; tc < 2; tc++) - /* Turn on the timer. */ -- NB85E_TIMER_C_TMCC0 (tc) |= NB85E_TIMER_C_TMCC0_CAE; -+ V850E_TIMER_C_TMCC0 (tc) |= V850E_TIMER_C_TMCC0_CAE; - - /* Make sure the relevant port0/port1 pins are assigned - interrupt duty. We used INTP001-INTP011 (don't screw with ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/rte_me2_cb.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,308 @@ -+/* -+ * arch/v850/kernel/rte_me2_cb.c -- Midas labs RTE-V850E/ME2-CB board -+ * -+ * Copyright (C) 2001,02,03 NEC Electronics Corporation -+ * Copyright (C) 2001,02,03 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "mach.h" -+ -+extern unsigned long *_intv_start; -+extern unsigned long *_intv_end; -+ -+/* LED access routines. */ -+extern unsigned read_leds (int pos, char *buf, int len); -+extern unsigned write_leds (int pos, const char *buf, int len); -+ -+ -+/* SDRAM are almost contiguous (with a small hole in between; -+ see mach_reserve_bootmem for details), so just use both as one big area. */ -+#define RAM_START SDRAM_ADDR -+#define RAM_END (SDRAM_ADDR + SDRAM_SIZE) -+ -+ -+void __init mach_get_physical_ram (unsigned long *ram_start, -+ unsigned long *ram_len) -+{ -+ *ram_start = RAM_START; -+ *ram_len = RAM_END - RAM_START; -+} -+ -+void __init mach_reserve_bootmem () -+{ -+ extern char _root_fs_image_start, _root_fs_image_end; -+ u32 root_fs_image_start = (u32)&_root_fs_image_start; -+ u32 root_fs_image_end = (u32)&_root_fs_image_end; -+ -+ /* Reserve the memory used by the root filesystem image if it's -+ in RAM. */ -+ if (root_fs_image_start >= RAM_START && root_fs_image_start < RAM_END) -+ reserve_bootmem (root_fs_image_start, -+ root_fs_image_end - root_fs_image_start); -+} -+ -+void mach_gettimeofday (struct timespec *tv) -+{ -+ tv->tv_sec = 0; -+ tv->tv_nsec = 0; -+} -+ -+/* Called before configuring an on-chip UART. */ -+void rte_me2_cb_uart_pre_configure (unsigned chan, -+ unsigned cflags, unsigned baud) -+{ -+ /* The RTE-V850E/ME2-CB connects some general-purpose I/O -+ pins on the CPU to the RTS/CTS lines of UARTB channel 0's -+ serial connection. -+ I/O pins P21 and P22 are RTS and CTS respectively. */ -+ if (chan == 0) { -+ /* Put P21 & P22 in I/O port mode. */ -+ ME2_PORT2_PMC &= ~0x6; -+ /* Make P21 and output, and P22 an input. */ -+ ME2_PORT2_PM = (ME2_PORT2_PM & ~0xC) | 0x4; -+ } -+ -+ me2_uart_pre_configure (chan, cflags, baud); -+} -+ -+void __init mach_init_irqs (void) -+{ -+ /* Initialize interrupts. */ -+ me2_init_irqs (); -+ rte_me2_cb_init_irqs (); -+} -+ -+#ifdef CONFIG_ROM_KERNEL -+/* Initialization for kernel in ROM. */ -+static inline rom_kernel_init (void) -+{ -+ /* If the kernel is in ROM, we have to copy any initialized data -+ from ROM into RAM. */ -+ extern unsigned long _data_load_start, _sdata, _edata; -+ register unsigned long *src = &_data_load_start; -+ register unsigned long *dst = &_sdata, *end = &_edata; -+ -+ while (dst != end) -+ *dst++ = *src++; -+} -+#endif /* CONFIG_ROM_KERNEL */ -+ -+static void install_interrupt_vectors (void) -+{ -+ unsigned long *p1, *p2; -+ -+ ME2_IRAMM = 0x03; /* V850E/ME2 iRAM write mode */ -+ -+ /* vector copy to iRAM */ -+ p1 = (unsigned long *)0; /* v85x vector start */ -+ p2 = (unsigned long *)&_intv_start; -+ while (p2 < (unsigned long *)&_intv_end) -+ *p1++ = *p2++; -+ -+ ME2_IRAMM = 0x00; /* V850E/ME2 iRAM read mode */ -+} -+ -+/* CompactFlash */ -+ -+static void cf_power_on (void) -+{ -+ /* CF card detected? */ -+ if (CB_CF_STS0 & 0x0030) -+ return; -+ -+ CB_CF_REG0 = 0x0002; /* reest on */ -+ mdelay (10); -+ CB_CF_REG0 = 0x0003; /* power on */ -+ mdelay (10); -+ CB_CF_REG0 = 0x0001; /* reset off */ -+ mdelay (10); -+} -+ -+static void cf_power_off (void) -+{ -+ CB_CF_REG0 = 0x0003; /* power on */ -+ mdelay (10); -+ CB_CF_REG0 = 0x0002; /* reest on */ -+ mdelay (10); -+} -+ -+void __init mach_early_init (void) -+{ -+ install_interrupt_vectors (); -+ -+ /* CS1 SDRAM instruction cache enable */ -+ v850e_cache_enable (0x04, 0x03, 0); -+ -+ rte_cb_early_init (); -+ -+ /* CompactFlash power on */ -+ cf_power_on (); -+ -+#if defined (CONFIG_ROM_KERNEL) -+ rom_kernel_init (); -+#endif -+} -+ -+ -+/* RTE-V850E/ME2-CB Programmable Interrupt Controller. */ -+ -+static struct cb_pic_irq_init cb_pic_irq_inits[] = { -+ { "CB_EXTTM0", IRQ_CB_EXTTM0, 1, 1, 6 }, -+ { "CB_EXTSIO", IRQ_CB_EXTSIO, 1, 1, 6 }, -+ { "CB_TOVER", IRQ_CB_TOVER, 1, 1, 6 }, -+ { "CB_GINT0", IRQ_CB_GINT0, 1, 1, 6 }, -+ { "CB_USB", IRQ_CB_USB, 1, 1, 6 }, -+ { "CB_LANC", IRQ_CB_LANC, 1, 1, 6 }, -+ { "CB_USB_VBUS_ON", IRQ_CB_USB_VBUS_ON, 1, 1, 6 }, -+ { "CB_USB_VBUS_OFF", IRQ_CB_USB_VBUS_OFF, 1, 1, 6 }, -+ { "CB_EXTTM1", IRQ_CB_EXTTM1, 1, 1, 6 }, -+ { "CB_EXTTM2", IRQ_CB_EXTTM2, 1, 1, 6 }, -+ { 0 } -+}; -+#define NUM_CB_PIC_IRQ_INITS \ -+ ((sizeof cb_pic_irq_inits / sizeof cb_pic_irq_inits[0]) - 1) -+ -+static struct hw_interrupt_type cb_pic_hw_itypes[NUM_CB_PIC_IRQ_INITS]; -+static unsigned char cb_pic_active_irqs = 0; -+ -+void __init rte_me2_cb_init_irqs (void) -+{ -+ cb_pic_init_irq_types (cb_pic_irq_inits, cb_pic_hw_itypes); -+ -+ /* Initalize on board PIC1 (not PIC0) enable */ -+ CB_PIC_INT0M = 0x0000; -+ CB_PIC_INT1M = 0x0000; -+ CB_PIC_INTR = 0x0000; -+ CB_PIC_INTEN |= CB_PIC_INT1EN; -+ -+ ME2_PORT2_PMC |= 0x08; /* INTP23/SCK1 mode */ -+ ME2_PORT2_PFC &= ~0x08; /* INTP23 mode */ -+ ME2_INTR(2) &= ~0x08; /* INTP23 falling-edge detect */ -+ ME2_INTF(2) &= ~0x08; /* " */ -+ -+ rte_cb_init_irqs (); /* gbus &c */ -+} -+ -+ -+/* Enable interrupt handling for interrupt IRQ. */ -+void cb_pic_enable_irq (unsigned irq) -+{ -+ CB_PIC_INT1M |= 1 << (irq - CB_PIC_BASE_IRQ); -+} -+ -+void cb_pic_disable_irq (unsigned irq) -+{ -+ CB_PIC_INT1M &= ~(1 << (irq - CB_PIC_BASE_IRQ)); -+} -+ -+void cb_pic_shutdown_irq (unsigned irq) -+{ -+ cb_pic_disable_irq (irq); -+ -+ if (--cb_pic_active_irqs == 0) -+ free_irq (IRQ_CB_PIC, 0); -+ -+ CB_PIC_INT1M &= ~(1 << (irq - CB_PIC_BASE_IRQ)); -+} -+ -+static void cb_pic_handle_irq (int irq, void *dev_id, struct pt_regs *regs) -+{ -+ unsigned status = CB_PIC_INTR; -+ unsigned enable = CB_PIC_INT1M; -+ -+ /* Only pay attention to enabled interrupts. */ -+ status &= enable; -+ -+ CB_PIC_INTEN &= ~CB_PIC_INT1EN; -+ -+ if (status) { -+ unsigned mask = 1; -+ -+ irq = CB_PIC_BASE_IRQ; -+ do { -+ /* There's an active interrupt, find out which one, -+ and call its handler. */ -+ while (! (status & mask)) { -+ irq++; -+ mask <<= 1; -+ } -+ status &= ~mask; -+ -+ CB_PIC_INTR = mask; -+ -+ /* Recursively call handle_irq to handle it. */ -+ handle_irq (irq, regs); -+ } while (status); -+ } -+ -+ CB_PIC_INTEN |= CB_PIC_INT1EN; -+} -+ -+ -+static void irq_nop (unsigned irq) { } -+ -+static unsigned cb_pic_startup_irq (unsigned irq) -+{ -+ int rval; -+ -+ if (cb_pic_active_irqs == 0) { -+ rval = request_irq (IRQ_CB_PIC, cb_pic_handle_irq, -+ SA_INTERRUPT, "cb_pic_handler", 0); -+ if (rval != 0) -+ return rval; -+ } -+ -+ cb_pic_active_irqs++; -+ -+ cb_pic_enable_irq (irq); -+ -+ return 0; -+} -+ -+/* Initialize HW_IRQ_TYPES for INTC-controlled irqs described in array -+ INITS (which is terminated by an entry with the name field == 0). */ -+void __init cb_pic_init_irq_types (struct cb_pic_irq_init *inits, -+ struct hw_interrupt_type *hw_irq_types) -+{ -+ struct cb_pic_irq_init *init; -+ for (init = inits; init->name; init++) { -+ struct hw_interrupt_type *hwit = hw_irq_types++; -+ -+ hwit->typename = init->name; -+ -+ hwit->startup = cb_pic_startup_irq; -+ hwit->shutdown = cb_pic_shutdown_irq; -+ hwit->enable = cb_pic_enable_irq; -+ hwit->disable = cb_pic_disable_irq; -+ hwit->ack = irq_nop; -+ hwit->end = irq_nop; -+ -+ /* Initialize kernel IRQ infrastructure for this interrupt. */ -+ init_irq_handlers(init->base, init->num, init->interval, hwit); -+ } -+} ---- linux-2.6.0-test1/arch/v850/kernel/rte_nb85e_cb.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/arch/v850/kernel/rte_nb85e_cb.c 2003-07-19 17:03:49.000000000 -0700 -@@ -21,7 +21,7 @@ - - #include - #include --#include -+#include - #include - - #include "mach.h" -@@ -41,7 +41,7 @@ void __init mach_early_init (void) - - Unfortunately, the dcache seems to be buggy, so we only use the - icache for now. */ -- nb85e_cache_enable (0x0040 /* BHC */, 0x0000 /* DCC */); -+ v850e_cache_enable (0x0040 /*BHC*/, 0x0003 /*ICC*/, 0x0000 /*DCC*/); - - rte_cb_early_init (); - } ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/sim85e2.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,211 @@ -+/* -+ * arch/v850/kernel/sim85e2.c -- Machine-specific stuff for -+ * V850E2 RTL simulator -+ * -+ * Copyright (C) 2002,03 NEC Electronics Corporation -+ * Copyright (C) 2002,03 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include "mach.h" -+ -+ -+/* There are 4 possible areas we can use: -+ -+ IRAM (1MB) is fast for instruction fetches, but slow for data -+ DRAM (1020KB) is fast for data, but slow for instructions -+ ERAM is cached, so should be fast for both insns and data -+ SDRAM is external DRAM, similar to ERAM -+*/ -+ -+#define INIT_MEMC_FOR_SDRAM -+#define USE_SDRAM_AREA -+#define KERNEL_IN_SDRAM_AREA -+ -+#define DCACHE_MODE V850E2_CACHE_BTSC_DCM_WT -+/*#define DCACHE_MODE V850E2_CACHE_BTSC_DCM_WB_ALLOC*/ -+ -+#ifdef USE_SDRAM_AREA -+#define RAM_START SDRAM_ADDR -+#define RAM_END (SDRAM_ADDR + SDRAM_SIZE) -+#else -+/* When we use DRAM, we need to account for the fact that the end of it is -+ used for R0_RAM. */ -+#define RAM_START DRAM_ADDR -+#define RAM_END R0_RAM_ADDR -+#endif -+ -+ -+extern void memcons_setup (void); -+ -+ -+#ifdef KERNEL_IN_SDRAM_AREA -+#define EARLY_INIT_SECTION_ATTR __attribute__ ((section (".early.text"))) -+#else -+#define EARLY_INIT_SECTION_ATTR __init -+#endif -+ -+void EARLY_INIT_SECTION_ATTR mach_early_init (void) -+{ -+ extern int panic_timeout; -+ -+ /* The sim85e2 simulator tracks `undefined' values, so to make -+ debugging easier, we begin by zeroing out all otherwise -+ undefined registers. This is not strictly necessary. -+ -+ The registers we zero are: -+ Every GPR except: -+ stack-pointer (r3) -+ task-pointer (r16) -+ our return addr (r31) -+ Every system register (SPR) that we know about except for -+ the PSW (SPR 5), which we zero except for the -+ disable-interrupts bit. -+ */ -+ -+ /* GPRs */ -+ asm volatile (" mov r0, r1 ; mov r0, r2 "); -+ asm volatile ("mov r0, r4 ; mov r0, r5 ; mov r0, r6 ; mov r0, r7 "); -+ asm volatile ("mov r0, r8 ; mov r0, r9 ; mov r0, r10; mov r0, r11"); -+ asm volatile ("mov r0, r12; mov r0, r13; mov r0, r14; mov r0, r15"); -+ asm volatile (" mov r0, r17; mov r0, r18; mov r0, r19"); -+ asm volatile ("mov r0, r20; mov r0, r21; mov r0, r22; mov r0, r23"); -+ asm volatile ("mov r0, r24; mov r0, r25; mov r0, r26; mov r0, r27"); -+ asm volatile ("mov r0, r28; mov r0, r29; mov r0, r30"); -+ -+ /* SPRs */ -+ asm volatile ("ldsr r0, 0; ldsr r0, 1; ldsr r0, 2; ldsr r0, 3"); -+ asm volatile ("ldsr r0, 4"); -+ asm volatile ("addi 0x20, r0, r1; ldsr r1, 5"); /* PSW */ -+ asm volatile ("ldsr r0, 16; ldsr r0, 17; ldsr r0, 18; ldsr r0, 19"); -+ asm volatile ("ldsr r0, 20"); -+ -+ -+#ifdef INIT_MEMC_FOR_SDRAM -+ /* Settings for SDRAM controller. */ -+ V850E2_VSWC = 0x0042; -+ V850E2_BSC = 0x9286; -+ V850E2_BCT(0) = 0xb000; /* was: 0 */ -+ V850E2_BCT(1) = 0x000b; -+ V850E2_ASC = 0; -+ V850E2_LBS = 0xa9aa; /* was: 0xaaaa */ -+ V850E2_LBC(0) = 0; -+ V850E2_LBC(1) = 0; /* was: 0x3 */ -+ V850E2_BCC = 0; -+ V850E2_RFS(4) = 0x800a; /* was: 0xf109 */ -+ V850E2_SCR(4) = 0x2091; /* was: 0x20a1 */ -+ V850E2_RFS(3) = 0x800c; -+ V850E2_SCR(3) = 0x20a1; -+ V850E2_DWC(0) = 0; -+ V850E2_DWC(1) = 0; -+#endif -+ -+#if 0 -+#ifdef CONFIG_V850E2_SIM85E2S -+ /* Turn on the caches. */ -+ V850E2_CACHE_BTSC = V850E2_CACHE_BTSC_ICM | DCACHE_MODE; -+ V850E2_BHC = 0x1010; -+#elif CONFIG_V850E2_SIM85E2C -+ V850E2_CACHE_BTSC |= (V850E2_CACHE_BTSC_ICM | V850E2_CACHE_BTSC_DCM0); -+ V850E2_BUSM_BHC = 0xFFFF; -+#endif -+#else -+ V850E2_BHC = 0; -+#endif -+ -+ /* Don't stop the simulator at `halt' instructions. */ -+ SIM85E2_NOTHAL = 1; -+ -+ /* Ensure that the simulator halts on a panic, instead of going -+ into an infinite loop inside the panic function. */ -+ panic_timeout = -1; -+} -+ -+void __init mach_setup (char **cmdline) -+{ -+ memcons_setup (); -+} -+ -+void mach_get_physical_ram (unsigned long *ram_start, unsigned long *ram_len) -+{ -+ *ram_start = RAM_START; -+ *ram_len = RAM_END - RAM_START; -+} -+ -+void __init mach_reserve_bootmem () -+{ -+ extern char _root_fs_image_start, _root_fs_image_end; -+ u32 root_fs_image_start = (u32)&_root_fs_image_start; -+ u32 root_fs_image_end = (u32)&_root_fs_image_end; -+ -+ /* Reserve the memory used by the root filesystem image if it's -+ in RAM. */ -+ if (root_fs_image_end > root_fs_image_start -+ && root_fs_image_start >= RAM_START -+ && root_fs_image_start < RAM_END) -+ reserve_bootmem (root_fs_image_start, -+ root_fs_image_end - root_fs_image_start); -+} -+ -+void __init mach_sched_init (struct irqaction *timer_action) -+{ -+ /* The simulator actually cycles through all interrupts -+ periodically. We just pay attention to IRQ0, which gives us -+ 1/64 the rate of the periodic interrupts. */ -+ setup_irq (0, timer_action); -+} -+ -+void mach_gettimeofday (struct timespec *tv) -+{ -+ tv->tv_sec = 0; -+ tv->tv_nsec = 0; -+} -+ -+/* Interrupts */ -+ -+struct v850e_intc_irq_init irq_inits[] = { -+ { "IRQ", 0, NUM_MACH_IRQS, 1, 7 }, -+ { 0 } -+}; -+struct hw_interrupt_type hw_itypes[1]; -+ -+/* Initialize interrupts. */ -+void __init mach_init_irqs (void) -+{ -+ v850e_intc_init_irq_types (irq_inits, hw_itypes); -+} -+ -+ -+void machine_halt (void) __attribute__ ((noreturn)); -+void machine_halt (void) -+{ -+ SIM85E2_SIMFIN = 0; /* Halt immediately. */ -+ for (;;) {} -+} -+ -+void machine_restart (char *__unused) -+{ -+ machine_halt (); -+} -+ -+void machine_power_off (void) -+{ -+ machine_halt (); -+} ---- linux-2.6.0-test1/arch/v850/kernel/sim85e2c.c 2003-06-14 12:18:22.000000000 -0700 -+++ /dev/null 2002-08-30 16:31:37.000000000 -0700 -@@ -1,145 +0,0 @@ --/* -- * arch/v850/kernel/sim85e2c.c -- Machine-specific stuff for -- * V850E2 RTL simulator -- * -- * Copyright (C) 2002 NEC Corporation -- * Copyright (C) 2002 Miles Bader -- * -- * This file is subject to the terms and conditions of the GNU General -- * Public License. See the file COPYING in the main directory of this -- * archive for more details. -- * -- * Written by Miles Bader -- */ -- --#include --#include --#include --#include --#include --#include --#include -- --#include --#include --#include -- --#include "mach.h" -- --extern void memcons_setup (void); -- -- --void __init mach_early_init (void) --{ -- extern int panic_timeout; -- -- /* Don't stop the simulator at `halt' instructions. */ -- NOTHAL = 1; -- -- /* The sim85e2c simulator tracks `undefined' values, so to make -- debugging easier, we begin by zeroing out all otherwise -- undefined registers. This is not strictly necessary. -- -- The registers we zero are: -- Every GPR except: -- stack-pointer (r3) -- task-pointer (r16) -- our return addr (r31) -- Every system register (SPR) that we know about except for -- the PSW (SPR 5), which we zero except for the -- disable-interrupts bit. -- */ -- -- /* GPRs */ -- asm volatile (" mov r0, r1 ; mov r0, r2 "); -- asm volatile ("mov r0, r4 ; mov r0, r5 ; mov r0, r6 ; mov r0, r7 "); -- asm volatile ("mov r0, r8 ; mov r0, r9 ; mov r0, r10; mov r0, r11"); -- asm volatile ("mov r0, r12; mov r0, r13; mov r0, r14; mov r0, r15"); -- asm volatile (" mov r0, r17; mov r0, r18; mov r0, r19"); -- asm volatile ("mov r0, r20; mov r0, r21; mov r0, r22; mov r0, r23"); -- asm volatile ("mov r0, r24; mov r0, r25; mov r0, r26; mov r0, r27"); -- asm volatile ("mov r0, r28; mov r0, r29; mov r0, r30"); -- -- /* SPRs */ -- asm volatile ("ldsr r0, 0; ldsr r0, 1; ldsr r0, 2; ldsr r0, 3"); -- asm volatile ("ldsr r0, 4"); -- asm volatile ("addi 0x20, r0, r1; ldsr r1, 5"); /* PSW */ -- asm volatile ("ldsr r0, 16; ldsr r0, 17; ldsr r0, 18; ldsr r0, 19"); -- asm volatile ("ldsr r0, 20"); -- -- /* Turn on the caches. */ -- NA85E2C_CACHE_BTSC -- |= (NA85E2C_CACHE_BTSC_ICM | NA85E2C_CACHE_BTSC_DCM0); -- NA85E2C_BUSM_BHC = 0xFFFF; -- -- /* Ensure that the simulator halts on a panic, instead of going -- into an infinite loop inside the panic function. */ -- panic_timeout = -1; --} -- --void __init mach_setup (char **cmdline) --{ -- memcons_setup (); --} -- --void mach_get_physical_ram (unsigned long *ram_start, unsigned long *ram_len) --{ -- /* There are 3 possible areas we can use: -- IRAM (1MB) is fast for instruction fetches, but slow for data -- DRAM (1020KB) is fast for data, but slow for instructions -- ERAM is cached, so should be fast for both insns and data, -- _but_ currently only supports write-through caching, so -- writes are slow. -- Since there's really no area that's good for general kernel -- use, we use DRAM -- it won't be good for user programs -- (which will be loaded into kernel allocated memory), but -- currently we're more concerned with testing the kernel. */ -- *ram_start = DRAM_ADDR; -- *ram_len = R0_RAM_ADDR - DRAM_ADDR; --} -- --void __init mach_sched_init (struct irqaction *timer_action) --{ -- /* The simulator actually cycles through all interrupts -- periodically. We just pay attention to IRQ0, which gives us -- 1/64 the rate of the periodic interrupts. */ -- setup_irq (0, timer_action); --} -- --void mach_gettimeofday (struct timespec *tv) --{ -- tv->tv_sec = 0; -- tv->tv_nsec = 0; --} -- --/* Interrupts */ -- --struct nb85e_intc_irq_init irq_inits[] = { -- { "IRQ", 0, NUM_MACH_IRQS, 1, 7 }, -- { 0 } --}; --struct hw_interrupt_type hw_itypes[1]; -- --/* Initialize interrupts. */ --void __init mach_init_irqs (void) --{ -- nb85e_intc_init_irq_types (irq_inits, hw_itypes); --} -- -- --void machine_halt (void) __attribute__ ((noreturn)); --void machine_halt (void) --{ -- SIMFIN = 0; /* Halt immediately. */ -- for (;;) {} --} -- --void machine_restart (char *__unused) --{ -- machine_halt (); --} -- --void machine_power_off (void) --{ -- machine_halt (); --} ---- linux-2.6.0-test1/arch/v850/kernel/teg.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/arch/v850/kernel/teg.c 2003-07-19 17:03:49.000000000 -0700 -@@ -22,7 +22,7 @@ - #include - #include - #include --#include -+#include - - #include "mach.h" - -@@ -31,12 +31,12 @@ void __init mach_sched_init (struct irqa - /* Select timer interrupt instead of external pin. */ - TEG_ISS |= 0x1; - /* Start hardware timer. */ -- nb85e_timer_d_configure (0, HZ); -+ v850e_timer_d_configure (0, HZ); - /* Install timer interrupt handler. */ - setup_irq (IRQ_INTCMD(0), timer_action); - } - --static struct nb85e_intc_irq_init irq_inits[] = { -+static struct v850e_intc_irq_init irq_inits[] = { - { "IRQ", 0, NUM_CPU_IRQS, 1, 7 }, - { "CMD", IRQ_INTCMD(0), IRQ_INTCMD_NUM, 1, 5 }, - { "SER", IRQ_INTSER(0), IRQ_INTSER_NUM, 1, 3 }, -@@ -51,7 +51,7 @@ static struct hw_interrupt_type hw_itype - /* Initialize MA chip interrupts. */ - void __init teg_init_irqs (void) - { -- nb85e_intc_init_irq_types (irq_inits, hw_itypes); -+ v850e_intc_init_irq_types (irq_inits, hw_itypes); - } - - /* Called before configuring an on-chip UART. */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/v850e2_cache.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,127 @@ -+/* -+ * arch/v850/kernel/v850e2_cache.c -- Cache control for V850E2 cache -+ * memories -+ * -+ * Copyright (C) 2003 NEC Electronics Corporation -+ * Copyright (C) 2003 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+#include -+ -+#include -+ -+/* Cache operations we can do. The encoding corresponds directly to the -+ value we need to write into the COPR register. */ -+enum cache_op { -+ OP_SYNC_IF_DIRTY = V850E2_CACHE_COPR_CFC(0), /* 000 */ -+ OP_SYNC_IF_VALID = V850E2_CACHE_COPR_CFC(1), /* 001 */ -+ OP_SYNC_IF_VALID_AND_CLEAR = V850E2_CACHE_COPR_CFC(3), /* 011 */ -+ OP_WAY_CLEAR = V850E2_CACHE_COPR_CFC(4), /* 100 */ -+ OP_FILL = V850E2_CACHE_COPR_CFC(5), /* 101 */ -+ OP_CLEAR = V850E2_CACHE_COPR_CFC(6), /* 110 */ -+ OP_CREATE_DIRTY = V850E2_CACHE_COPR_CFC(7) /* 111 */ -+}; -+ -+/* Which cache to use. This encoding also corresponds directly to the -+ value we need to write into the COPR register. */ -+enum cache { -+ ICACHE = 0, -+ DCACHE = V850E2_CACHE_COPR_LBSL -+}; -+ -+/* Returns ADDR rounded down to the beginning of its cache-line. */ -+#define CACHE_LINE_ADDR(addr) \ -+ ((addr) & ~(V850E2_CACHE_LINE_SIZE - 1)) -+/* Returns END_ADDR rounded up to the `limit' of its cache-line. */ -+#define CACHE_LINE_END_ADDR(end_addr) \ -+ CACHE_LINE_ADDR(end_addr + (V850E2_CACHE_LINE_SIZE - 1)) -+ -+ -+/* Low-level cache ops. */ -+ -+/* Apply cache-op OP to all entries in CACHE. */ -+static inline void cache_op_all (enum cache_op op, enum cache cache) -+{ -+ int cmd = op | cache | V850E2_CACHE_COPR_WSLE | V850E2_CACHE_COPR_STRT; -+ -+ if (op != OP_WAY_CLEAR) { -+ /* The WAY_CLEAR operation does the whole way, but other -+ ops take begin-index and count params; we just indicate -+ the entire cache. */ -+ V850E2_CACHE_CADL = 0; -+ V850E2_CACHE_CADH = 0; -+ V850E2_CACHE_CCNT = V850E2_CACHE_WAY_SIZE - 1; -+ } -+ -+ V850E2_CACHE_COPR = cmd | V850E2_CACHE_COPR_WSL(0); /* way 0 */ -+ V850E2_CACHE_COPR = cmd | V850E2_CACHE_COPR_WSL(1); /* way 1 */ -+ V850E2_CACHE_COPR = cmd | V850E2_CACHE_COPR_WSL(2); /* way 2 */ -+ V850E2_CACHE_COPR = cmd | V850E2_CACHE_COPR_WSL(3); /* way 3 */ -+} -+ -+/* Apply cache-op OP to all entries in CACHE covering addresses ADDR -+ through ADDR+LEN. */ -+static inline void cache_op_range (enum cache_op op, u32 addr, u32 len, -+ enum cache cache) -+{ -+ u32 start = CACHE_LINE_ADDR (addr); -+ u32 end = CACHE_LINE_END_ADDR (addr + len); -+ u32 num_lines = (end - start) >> V850E2_CACHE_LINE_SIZE_BITS; -+ -+ V850E2_CACHE_CADL = start & 0xFFFF; -+ V850E2_CACHE_CADH = start >> 16; -+ V850E2_CACHE_CCNT = num_lines - 1; -+ -+ V850E2_CACHE_COPR = op | cache | V850E2_CACHE_COPR_STRT; -+} -+ -+ -+/* High-level ops. */ -+ -+static void cache_exec_after_store_all (void) -+{ -+ cache_op_all (OP_SYNC_IF_DIRTY, DCACHE); -+ cache_op_all (OP_WAY_CLEAR, ICACHE); -+} -+ -+static void cache_exec_after_store_range (u32 start, u32 len) -+{ -+ cache_op_range (OP_SYNC_IF_DIRTY, start, len, DCACHE); -+ cache_op_range (OP_CLEAR, start, len, ICACHE); -+} -+ -+ -+/* Exported functions. */ -+ -+void flush_icache (void) -+{ -+ cache_exec_after_store_all (); -+} -+ -+void flush_icache_range (unsigned long start, unsigned long end) -+{ -+ cache_exec_after_store_range (start, end - start); -+} -+ -+void flush_icache_page (struct vm_area_struct *vma, struct page *page) -+{ -+ cache_exec_after_store_range (page_to_virt (page), PAGE_SIZE); -+} -+ -+void flush_icache_user_range (struct vm_area_struct *vma, struct page *page, -+ unsigned long addr, int len) -+{ -+ cache_exec_after_store_range (addr, len); -+} -+ -+void flush_cache_sigtramp (unsigned long addr) -+{ -+ /* For the exact size, see signal.c, but 16 bytes should be enough. */ -+ cache_exec_after_store_range (addr, 16); -+} ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/v850e_cache.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,173 @@ -+/* -+ * arch/v850/kernel/v850e_cache.c -- Cache control for V850E cache memories -+ * -+ * Copyright (C) 2003 NEC Electronics Corporation -+ * Copyright (C) 2003 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+/* This file implements cache control for the rather simple cache used on -+ some V850E CPUs, specifically the NB85E/TEG CPU-core and the V850E/ME2 -+ CPU. V850E2 processors have their own (better) cache -+ implementation. */ -+ -+#include -+#include -+ -+#define WAIT_UNTIL_CLEAR(value) while (value) {} -+ -+/* Set caching params via the BHC and DCC registers. */ -+void v850e_cache_enable (u16 bhc, u16 icc, u16 dcc) -+{ -+ unsigned long *r0_ram = (unsigned long *)R0_RAM_ADDR; -+ register u16 bhc_val asm ("r6") = bhc; -+ -+ /* Read the instruction cache control register (ICC) and confirm -+ that bits 0 and 1 (TCLR0, TCLR1) are all cleared. */ -+ WAIT_UNTIL_CLEAR (V850E_CACHE_ICC & 0x3); -+ V850E_CACHE_ICC = icc; -+ -+#ifdef V850E_CACHE_DCC -+ /* Configure data-cache. */ -+ V850E_CACHE_DCC = dcc; -+#endif /* V850E_CACHE_DCC */ -+ -+ /* Configure caching for various memory regions by writing the BHC -+ register. The documentation says that an instruction _cannot_ -+ enable/disable caching for the memory region in which the -+ instruction itself exists; to work around this, we store -+ appropriate instructions into the on-chip RAM area (which is never -+ cached), and briefly jump there to do the work. */ -+#ifdef V850E_CACHE_WRITE_IBS -+ *r0_ram++ = 0xf0720760; /* st.h r0, 0xfffff072[r0] */ -+#endif -+ *r0_ram++ = 0xf06a3760; /* st.h r6, 0xfffff06a[r0] */ -+ *r0_ram = 0x5640006b; /* jmp [r11] */ -+ -+ asm ("mov hilo(1f), r11; jmp [%1]; 1:;" -+ :: "r" (bhc_val), "r" (R0_RAM_ADDR) : "r11"); -+} -+ -+static void clear_icache (void) -+{ -+ /* 1. Read the instruction cache control register (ICC) and confirm -+ that bits 0 and 1 (TCLR0, TCLR1) are all cleared. */ -+ WAIT_UNTIL_CLEAR (V850E_CACHE_ICC & 0x3); -+ -+ /* 2. Read the ICC register and confirm that bit 12 (LOCK0) is -+ cleared. Bit 13 of the ICC register is always cleared. */ -+ WAIT_UNTIL_CLEAR (V850E_CACHE_ICC & 0x1000); -+ -+ /* 3. Set the TCLR0 and TCLR1 bits of the ICC register as follows, -+ when clearing way 0 and way 1 at the same time: -+ (a) Set the TCLR0 and TCLR1 bits. -+ (b) Read the TCLR0 and TCLR1 bits to confirm that these bits -+ are cleared. -+ (c) Perform (a) and (b) above again. */ -+ V850E_CACHE_ICC |= 0x3; -+ WAIT_UNTIL_CLEAR (V850E_CACHE_ICC & 0x3); -+ -+#ifdef V850E_CACHE_REPEAT_ICC_WRITE -+ /* Do it again. */ -+ V850E_CACHE_ICC |= 0x3; -+ WAIT_UNTIL_CLEAR (V850E_CACHE_ICC & 0x3); -+#endif -+} -+ -+#ifdef V850E_CACHE_DCC -+/* Flush or clear (or both) the data cache, depending on the value of FLAGS; -+ the procedure is the same for both, just the control bits used differ (and -+ both may be performed simultaneously). */ -+static void dcache_op (unsigned short flags) -+{ -+ /* 1. Read the data cache control register (DCC) and confirm that bits -+ 0, 1, 4, and 5 (DC00, DC01, DC04, DC05) are all cleared. */ -+ WAIT_UNTIL_CLEAR (V850E_CACHE_DCC & 0x33); -+ -+ /* 2. Clear DCC register bit 12 (DC12), bit 13 (DC13), or both -+ depending on the way for which tags are to be cleared. */ -+ V850E_CACHE_DCC &= ~0xC000; -+ -+ /* 3. Set DCC register bit 0 (DC00), bit 1 (DC01) or both depending on -+ the way for which tags are to be cleared. -+ ... -+ Set DCC register bit 4 (DC04), bit 5 (DC05), or both depending -+ on the way to be data flushed. */ -+ V850E_CACHE_DCC |= flags; -+ -+ /* 4. Read DCC register bit DC00, DC01 [DC04, DC05], or both depending -+ on the way for which tags were cleared [flushed] and confirm -+ that that bit is cleared. */ -+ WAIT_UNTIL_CLEAR (V850E_CACHE_DCC & flags); -+} -+#endif /* V850E_CACHE_DCC */ -+ -+/* Flushes the contents of the dcache to memory. */ -+static inline void flush_dcache (void) -+{ -+#ifdef V850E_CACHE_DCC -+ /* We only need to do something if in write-back mode. */ -+ if (V850E_CACHE_DCC & 0x0400) -+ dcache_op (0x30); -+#endif /* V850E_CACHE_DCC */ -+} -+ -+/* Flushes the contents of the dcache to memory, and then clears it. */ -+static inline void clear_dcache (void) -+{ -+#ifdef V850E_CACHE_DCC -+ /* We only need to do something if the dcache is enabled. */ -+ if (V850E_CACHE_DCC & 0x0C00) -+ dcache_op (0x33); -+#endif /* V850E_CACHE_DCC */ -+} -+ -+/* Clears the dcache without flushing to memory first. */ -+static inline void clear_dcache_no_flush (void) -+{ -+#ifdef V850E_CACHE_DCC -+ /* We only need to do something if the dcache is enabled. */ -+ if (V850E_CACHE_DCC & 0x0C00) -+ dcache_op (0x3); -+#endif /* V850E_CACHE_DCC */ -+} -+ -+static inline void cache_exec_after_store (void) -+{ -+ flush_dcache (); -+ clear_icache (); -+} -+ -+ -+/* Exported functions. */ -+ -+void flush_icache (void) -+{ -+ cache_exec_after_store (); -+} -+ -+void flush_icache_range (unsigned long start, unsigned long end) -+{ -+ cache_exec_after_store (); -+} -+ -+void flush_icache_page (struct vm_area_struct *vma, struct page *page) -+{ -+ cache_exec_after_store (); -+} -+ -+void flush_icache_user_range (struct vm_area_struct *vma, struct page *page, -+ unsigned long adr, int len) -+{ -+ cache_exec_after_store (); -+} -+ -+void flush_cache_sigtramp (unsigned long addr) -+{ -+ cache_exec_after_store (); -+} ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/v850e_intc.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,104 @@ -+/* -+ * arch/v850/kernel/v850e_intc.c -- V850E interrupt controller (INTC) -+ * -+ * Copyright (C) 2001,02,03 NEC Electronics Corporation -+ * Copyright (C) 2001,02,03 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+#include -+#include -+#include -+ -+#include -+ -+static void irq_nop (unsigned irq) { } -+ -+static unsigned v850e_intc_irq_startup (unsigned irq) -+{ -+ v850e_intc_clear_pending_irq (irq); -+ v850e_intc_enable_irq (irq); -+ return 0; -+} -+ -+static void v850e_intc_end_irq (unsigned irq) -+{ -+ unsigned long psw, temp; -+ -+ /* Clear the highest-level bit in the In-service priority register -+ (ISPR), to allow this interrupt (or another of the same or -+ lesser priority) to happen again. -+ -+ The `reti' instruction normally does this automatically when the -+ PSW bits EP and NP are zero, but we can't always rely on reti -+ being used consistently to return after an interrupt (another -+ process can be scheduled, for instance, which can delay the -+ associated reti for a long time, or this process may be being -+ single-stepped, which uses the `dbret' instruction to return -+ from the kernel). -+ -+ We also set the PSW EP bit, which prevents reti from also -+ trying to modify the ISPR itself. */ -+ -+ /* Get PSW and disable interrupts. */ -+ asm volatile ("stsr psw, %0; di" : "=r" (psw)); -+ /* We don't want to do anything for NMIs (they don't use the ISPR). */ -+ if (! (psw & 0xC0)) { -+ /* Transition to `trap' state, so that an eventual real -+ reti instruction won't modify the ISPR. */ -+ psw |= 0x40; -+ /* Fake an interrupt return, which automatically clears the -+ appropriate bit in the ISPR. */ -+ asm volatile ("mov hilo(1f), %0;" -+ "ldsr %0, eipc; ldsr %1, eipsw;" -+ "reti;" -+ "1:" -+ : "=&r" (temp) : "r" (psw)); -+ } -+} -+ -+/* Initialize HW_IRQ_TYPES for INTC-controlled irqs described in array -+ INITS (which is terminated by an entry with the name field == 0). */ -+void __init v850e_intc_init_irq_types (struct v850e_intc_irq_init *inits, -+ struct hw_interrupt_type *hw_irq_types) -+{ -+ struct v850e_intc_irq_init *init; -+ for (init = inits; init->name; init++) { -+ unsigned i; -+ struct hw_interrupt_type *hwit = hw_irq_types++; -+ -+ hwit->typename = init->name; -+ -+ hwit->startup = v850e_intc_irq_startup; -+ hwit->shutdown = v850e_intc_disable_irq; -+ hwit->enable = v850e_intc_enable_irq; -+ hwit->disable = v850e_intc_disable_irq; -+ hwit->ack = irq_nop; -+ hwit->end = v850e_intc_end_irq; -+ -+ /* Initialize kernel IRQ infrastructure for this interrupt. */ -+ init_irq_handlers(init->base, init->num, init->interval, hwit); -+ -+ /* Set the interrupt priorities. */ -+ for (i = 0; i < init->num; i++) { -+ unsigned irq = init->base + i * init->interval; -+ -+ /* If the interrupt is currently enabled (all -+ interrupts are initially disabled), then -+ assume whoever enabled it has set things up -+ properly, and avoid messing with it. */ -+ if (! v850e_intc_irq_enabled (irq)) -+ /* This write also (1) disables the -+ interrupt, and (2) clears any pending -+ interrupts. */ -+ V850E_INTC_IC (irq) -+ = (V850E_INTC_IC_PR (init->priority) -+ | V850E_INTC_IC_MK); -+ } -+ } -+} ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/v850e_timer_d.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,54 @@ -+/* -+ * include/asm-v850/v850e_timer_d.c -- `Timer D' component often used -+ * with V850E CPUs -+ * -+ * Copyright (C) 2001,02,03 NEC Electronics Corporation -+ * Copyright (C) 2001,02,03 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+#include -+ -+#include -+#include -+ -+/* Start interval timer TIMER (0-3). The timer will issue the -+ corresponding INTCMD interrupt RATE times per second. -+ This function does not enable the interrupt. */ -+void v850e_timer_d_configure (unsigned timer, unsigned rate) -+{ -+ unsigned divlog2, count; -+ -+ /* Calculate params for timer. */ -+ if (! calc_counter_params ( -+ V850E_TIMER_D_BASE_FREQ, rate, -+ V850E_TIMER_D_TMCD_CS_MIN, V850E_TIMER_D_TMCD_CS_MAX, 16, -+ &divlog2, &count)) -+ printk (KERN_WARNING -+ "Cannot find interval timer %d setting suitable" -+ " for rate of %dHz.\n" -+ "Using rate of %dHz instead.\n", -+ timer, rate, -+ (V850E_TIMER_D_BASE_FREQ >> divlog2) >> 16); -+ -+ /* Do the actual hardware timer initialization: */ -+ -+ /* Enable timer. */ -+ V850E_TIMER_D_TMCD(timer) = V850E_TIMER_D_TMCD_CAE; -+ /* Set clock divider. */ -+ V850E_TIMER_D_TMCD(timer) -+ = V850E_TIMER_D_TMCD_CAE -+ | V850E_TIMER_D_TMCD_CS(divlog2); -+ /* Set timer compare register. */ -+ V850E_TIMER_D_CMD(timer) = count; -+ /* Start counting. */ -+ V850E_TIMER_D_TMCD(timer) -+ = V850E_TIMER_D_TMCD_CAE -+ | V850E_TIMER_D_TMCD_CS(divlog2) -+ | V850E_TIMER_D_TMCD_CE; -+} ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/kernel/v850e_utils.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,62 @@ -+/* -+ * include/asm-v850/v850e_utils.h -- Utility functions associated with -+ * V850E CPUs -+ * -+ * Copyright (C) 2001,02,03 NEC Electronics Corporation -+ * Copyright (C) 2001,02,03 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+#include -+ -+/* Calculate counter clock-divider and count values to attain the -+ desired frequency RATE from the base frequency BASE_FREQ. The -+ counter is expected to have a clock-divider, which can divide the -+ system cpu clock by a power of two value from MIN_DIVLOG2 to -+ MAX_DIV_LOG2, and a word-size of COUNTER_SIZE bits (the counter -+ counts up and resets whenever it's equal to the compare register, -+ generating an interrupt or whatever when it does so). The returned -+ values are: *DIVLOG2 -- log2 of the desired clock divider and *COUNT -+ -- the counter compare value to use. Returns true if it was possible -+ to find a reasonable value, otherwise false (and the other return -+ values will be set to be as good as possible). */ -+int calc_counter_params (unsigned long base_freq, -+ unsigned long rate, -+ unsigned min_divlog2, unsigned max_divlog2, -+ unsigned counter_size, -+ unsigned *divlog2, unsigned *count) -+{ -+ unsigned _divlog2; -+ int ok = 0; -+ -+ /* Find the lowest clock divider setting that can represent RATE. */ -+ for (_divlog2 = min_divlog2; _divlog2 <= max_divlog2; _divlog2++) { -+ /* Minimum interrupt rate possible using this divider. */ -+ unsigned min_int_rate -+ = (base_freq >> _divlog2) >> counter_size; -+ -+ if (min_int_rate <= rate) { -+ /* This setting is the highest resolution -+ setting that's slow enough enough to attain -+ RATE interrupts per second, so use it. */ -+ ok = 1; -+ break; -+ } -+ } -+ -+ if (_divlog2 > max_divlog2) -+ /* Can't find correct setting. */ -+ _divlog2 = max_divlog2; -+ -+ if (divlog2) -+ *divlog2 = _divlog2; -+ if (count) -+ *count = ((base_freq >> _divlog2) + rate/2) / rate; -+ -+ return ok; -+} ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/rte_me2_cb.ld 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,30 @@ -+/* Linker script for the Midas labs RTE-V850E/ME2-CB evaluation board -+ (CONFIG_RTE_CB_ME2), with kernel in SDRAM. */ -+ -+MEMORY { -+ /* 128Kbyte of IRAM */ -+ IRAM : ORIGIN = 0x00000000, LENGTH = 0x00020000 -+ -+ /* 32MB of SDRAM. */ -+ SDRAM : ORIGIN = 0x00800000, LENGTH = 0x02000000 -+} -+ -+#define KRAM SDRAM -+ -+SECTIONS { -+ .text : { -+ __kram_start = . ; -+ TEXT_CONTENTS -+ INTV_CONTENTS /* copy to iRAM (0x0-0x620) */ -+ } > KRAM -+ -+ .data : { -+ DATA_CONTENTS -+ BSS_CONTENTS -+ RAMK_INIT_CONTENTS -+ __kram_end = . ; -+ BOOTMAP_CONTENTS -+ } > KRAM -+ -+ .root ALIGN (4096) : { ROOT_FS_CONTENTS } > SDRAM -+} ---- linux-2.6.0-test1/arch/v850/sim85e2c.ld 2003-06-14 12:18:34.000000000 -0700 -+++ /dev/null 2002-08-30 16:31:37.000000000 -0700 -@@ -1,44 +0,0 @@ --/* Linker script for the sim85e2c simulator, which is a verilog simulation of -- the V850E2 NA85E2C cpu core (CONFIG_V850E2_SIM85E2C). */ -- --MEMORY { -- /* 1MB of `instruction RAM', starting at 0. -- Instruction fetches are much faster from IRAM than from DRAM. -- This should match IRAM_ADDR in "include/asm-v580/sim85e2c.h". */ -- IRAM : ORIGIN = 0x00000000, LENGTH = 0x00100000 -- -- /* 1MB of `data RAM', below and contiguous with the I/O space. -- Data fetches are much faster from DRAM than from IRAM. -- This should match DRAM_ADDR in "include/asm-v580/sim85e2c.h". */ -- DRAM : ORIGIN = 0xfff00000, LENGTH = 0x000ff000 -- /* We have to load DRAM at a mirror-address of 0x1ff00000, -- because the simulator's preprocessing script isn't smart -- enough to deal with the above LMA. */ -- DRAM_LOAD : ORIGIN = 0x1ff00000, LENGTH = 0x000ff000 -- -- /* `external ram' (CS1 area), comes after IRAM. -- This should match ERAM_ADDR in "include/asm-v580/sim85e2c.h". */ -- ERAM : ORIGIN = 0x00100000, LENGTH = 0x07f00000 --} -- --SECTIONS { -- .iram : { -- INTV_CONTENTS -- TEXT_CONTENTS -- RAMK_INIT_CONTENTS -- } > IRAM -- .data : { -- __kram_start = . ; -- DATA_CONTENTS -- BSS_CONTENTS -- ROOT_FS_CONTENTS -- -- /* We stick console output into a buffer here. */ -- _memcons_output = . ; -- . = . + 0x8000 ; -- _memcons_output_end = . ; -- -- __kram_end = . ; -- BOOTMAP_CONTENTS -- } > DRAM AT> DRAM_LOAD --} ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/arch/v850/sim85e2.ld 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,44 @@ -+/* Linker script for the sim85e2c simulator, which is a verilog simulation of -+ the V850E2 NA85E2C cpu core (CONFIG_V850E2_SIM85E2C). */ -+ -+MEMORY { -+ /* 1MB of `instruction RAM', starting at 0. -+ Instruction fetches are much faster from IRAM than from DRAM. -+ This should match IRAM_ADDR in "include/asm-v580/sim85e2c.h". */ -+ IRAM : ORIGIN = 0x00000000, LENGTH = 0x00100000 -+ -+ /* 1MB of `data RAM', below and contiguous with the I/O space. -+ Data fetches are much faster from DRAM than from IRAM. -+ This should match DRAM_ADDR in "include/asm-v580/sim85e2c.h". */ -+ DRAM : ORIGIN = 0xfff00000, LENGTH = 0x000ff000 -+ /* We have to load DRAM at a mirror-address of 0x1ff00000, -+ because the simulator's preprocessing script isn't smart -+ enough to deal with the above LMA. */ -+ DRAM_LOAD : ORIGIN = 0x1ff00000, LENGTH = 0x000ff000 -+ -+ /* `external ram' (CS1 area), comes after IRAM. -+ This should match ERAM_ADDR in "include/asm-v580/sim85e2c.h". */ -+ ERAM : ORIGIN = 0x00100000, LENGTH = 0x07f00000 -+ -+ /* Dynamic RAM; uses memory controller. */ -+ /* SDRAM : ORIGIN = 0x10000000, LENGTH = 0x01000000 */ -+ SDRAM : ORIGIN = 0x10000000, LENGTH = 0x00200000/*use 2MB*/ -+} -+ -+SECTIONS { -+ .iram : { -+ INTV_CONTENTS -+ *arch/v850/kernel/head.o -+ *(.early.text) -+ } > IRAM -+ .dram : { -+ _memcons_output = . ; -+ . = . + 0x8000 ; -+ _memcons_output_end = . ; -+ } > DRAM -+ .sdram : { -+ /* We stick console output into a buffer here. */ -+ RAMK_KRAM_CONTENTS -+ ROOT_FS_CONTENTS -+ } > SDRAM -+} ---- linux-2.6.0-test1/arch/v850/vmlinux.lds.S 2003-06-22 12:04:44.000000000 -0700 -+++ 25/arch/v850/vmlinux.lds.S 2003-07-19 17:03:49.000000000 -0700 -@@ -206,8 +206,8 @@ _jiffies = _jiffies_64 ; - # include "sim.ld" - #endif - --#ifdef CONFIG_V850E2_SIM85E2C --# include "sim85e2c.ld" -+#ifdef CONFIG_V850E2_SIM85E2 -+# include "sim85e2.ld" - #endif - - #ifdef CONFIG_V850E2_FPGA85E2C -@@ -247,3 +247,8 @@ _jiffies = _jiffies_64 ; - # include "rte_nb85e_cb.ld" - # endif - #endif -+ -+#ifdef CONFIG_RTE_CB_ME2 -+# include "rte_me2_cb.ld" -+#endif -+ ---- linux-2.6.0-test1/arch/x86_64/boot/compressed/head.S 2003-06-26 22:07:24.000000000 -0700 -+++ 25/arch/x86_64/boot/compressed/head.S 2003-07-19 17:04:53.000000000 -0700 -@@ -26,6 +26,7 @@ - .code32 - .text - -+#define IN_BOOTLOADER - #include - #include - ---- linux-2.6.0-test1/arch/x86_64/boot/compressed/misc.c 2003-06-26 22:07:24.000000000 -0700 -+++ 25/arch/x86_64/boot/compressed/misc.c 2003-07-19 17:04:53.000000000 -0700 -@@ -9,6 +9,7 @@ - * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996 - */ - -+#define IN_BOOTLOADER - #include "miscsetup.h" - #include - ---- linux-2.6.0-test1/arch/x86_64/ia32/syscall32.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/arch/x86_64/ia32/syscall32.c 2003-07-19 17:07:16.000000000 -0700 -@@ -29,12 +29,15 @@ char *syscall32_page; - and let it be handled by generic VM */ - int map_syscall32(struct mm_struct *mm, unsigned long address) - { -+ pgd_t *pgd; -+ pmd_t *pmd; - pte_t *pte; - int err = 0; - down_read(&mm->mmap_sem); - spin_lock(&mm->page_table_lock); -- pmd_t *pmd = pmd_alloc(mm, pgd_offset(mm, address), address); -- if (pmd && (pte = pte_alloc_map(mm, pmd, address)) != NULL) { -+ pgd = pgd_offset(mm, address); -+ pmd = pmd_alloc_map(mm, pgd, address); -+ if (pmd && (pte = pte_alloc_map(mm, pgd, &pmd, address)) != NULL) { - if (pte_none(*pte)) { - set_pte(pte, - mk_pte(virt_to_page(syscall32_page), ---- linux-2.6.0-test1/arch/x86_64/kernel/apic.c 2003-06-16 22:32:20.000000000 -0700 -+++ 25/arch/x86_64/kernel/apic.c 2003-07-19 17:04:07.000000000 -0700 -@@ -298,8 +298,8 @@ void __init setup_local_APIC (void) - * Double-check whether this APIC is really registered. - * This is meaningless in clustered apic mode, so we skip it. - */ -- if (!clustered_apic_mode && -- !test_bit(GET_APIC_ID(apic_read(APIC_ID)), &phys_cpu_present_map)) -+ if (!clustered_apic_mode && -+ !cpu_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map)) - BUG(); - - /* -@@ -997,7 +997,7 @@ int __init APIC_init_uniprocessor (void) - - connect_bsp_APIC(); - -- phys_cpu_present_map = 1; -+ phys_cpu_present_map = cpumask_of_cpu(0); - apic_write_around(APIC_ID, boot_cpu_id); - - setup_local_APIC(); ---- linux-2.6.0-test1/arch/x86_64/kernel/io_apic.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/x86_64/kernel/io_apic.c 2003-07-19 17:04:07.000000000 -0700 -@@ -1014,7 +1014,7 @@ void disable_IO_APIC(void) - static void __init setup_ioapic_ids_from_mpc (void) - { - union IO_APIC_reg_00 reg_00; -- unsigned long phys_id_present_map = phys_cpu_present_map; -+ cpumask_t phys_id_present_map = phys_cpu_present_map; - int apic; - int i; - unsigned char old_id; -@@ -1047,22 +1047,22 @@ static void __init setup_ioapic_ids_from - * system must have a unique ID or we get lots of nice - * 'stuck on smp_invalidate_needed IPI wait' messages. - */ -- if (phys_id_present_map & (1 << mp_ioapics[apic].mpc_apicid)) { -+ if (cpu_isset(mp_ioapics[apic].mpc_apicid, phys_id_present_map)) { - printk(KERN_ERR "BIOS bug, IO-APIC#%d ID %d is already used!...\n", - apic, mp_ioapics[apic].mpc_apicid); - for (i = 0; i < 0xf; i++) -- if (!(phys_id_present_map & (1 << i))) -+ if (!cpu_isset(i, phys_id_present_map)) - break; - if (i >= 0xf) - panic("Max APIC ID exceeded!\n"); - printk(KERN_ERR "... fixing up to %d. (tell your hw vendor)\n", - i); -- phys_id_present_map |= 1 << i; -+ cpu_set(i, phys_id_present_map); - mp_ioapics[apic].mpc_apicid = i; - } else { - printk(KERN_INFO - "Using IO-APIC %d\n", mp_ioapics[apic].mpc_apicid); -- phys_id_present_map |= 1 << mp_ioapics[apic].mpc_apicid; -+ cpu_set(mp_ioapics[apic].mpc_apicid, phys_id_present_map); - } - - -@@ -1638,7 +1638,7 @@ void __init mp_config_ioapic_for_sci(int - int __init io_apic_get_unique_id (int ioapic, int apic_id) - { - union IO_APIC_reg_00 reg_00; -- static unsigned long apic_id_map = 0; -+ static cpumask_t apic_id_map; - unsigned long flags; - int i = 0; - -@@ -1651,7 +1651,7 @@ int __init io_apic_get_unique_id (int io - * advantage of new APIC bus architecture. - */ - -- if (!apic_id_map) -+ if (!cpus_empty(apic_id_map)) - apic_id_map = phys_cpu_present_map; - - spin_lock_irqsave(&ioapic_lock, flags); -@@ -1668,10 +1668,10 @@ int __init io_apic_get_unique_id (int io - * Every APIC in a system must have a unique ID or we get lots of nice - * 'stuck on smp_invalidate_needed IPI wait' messages. - */ -- if (apic_id_map & (1 << apic_id)) { -+ if (cpu_isset(apic_id, apic_id_map)) { - - for (i = 0; i < IO_APIC_MAX_ID; i++) { -- if (!(apic_id_map & (1 << i))) -+ if (!cpu_isset(i, apic_id_map)) - break; - } - -@@ -1684,7 +1684,7 @@ int __init io_apic_get_unique_id (int io - apic_id = i; - } - -- apic_id_map |= (1 << apic_id); -+ cpu_set(apic_id, apic_id_map); - - if (reg_00.bits.ID != apic_id) { - reg_00.bits.ID = apic_id; ---- linux-2.6.0-test1/arch/x86_64/kernel/irq.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/arch/x86_64/kernel/irq.c 2003-07-19 17:04:07.000000000 -0700 -@@ -792,13 +792,13 @@ int setup_irq(unsigned int irq, struct i - static struct proc_dir_entry * root_irq_dir; - static struct proc_dir_entry * irq_dir [NR_IRQS]; - --#define HEX_DIGITS 8 -+#define HEX_DIGITS (2*sizeof(cpumask_t)) - - static unsigned int parse_hex_value (const char *buffer, -- unsigned long count, unsigned long *ret) -+ unsigned long count, cpumask_t *ret) - { - unsigned char hexnum [HEX_DIGITS]; -- unsigned long value; -+ cpumask_t value = CPU_MASK_NONE; - unsigned i; - - if (!count) -@@ -812,10 +812,9 @@ static unsigned int parse_hex_value (con - * Parse the first 8 characters as a hex string, any non-hex char - * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. - */ -- value = 0; - - for (i = 0; i < count; i++) { -- unsigned int c = hexnum[i]; -+ unsigned int k, c = hexnum[i]; - - switch (c) { - case '0' ... '9': c -= '0'; break; -@@ -824,7 +823,10 @@ static unsigned int parse_hex_value (con - default: - goto out; - } -- value = (value << 4) | c; -+ cpus_shift_left(value, value, 4); -+ for (k = 0; k < 4; ++k) -+ if (c & (1 << k)) -+ cpu_set(k, value); - } - out: - *ret = value; -@@ -835,20 +837,31 @@ out: - - static struct proc_dir_entry * smp_affinity_entry [NR_IRQS]; - --static unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; -+static cpumask_t irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; - static int irq_affinity_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -+ int k, len; -+ cpumask_t tmp = irq_affinity[(long)data]; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", irq_affinity[(long)data]); -+ -+ for (k = len = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", (u16)cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int irq_affinity_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { - int irq = (long) data, full_count = count, err; -- unsigned long new_value; -+ cpumask_t tmp, new_value; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; -@@ -860,7 +873,8 @@ static int irq_affinity_write_proc (stru - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ -- if (!(new_value & cpu_online_map)) -+ cpus_and(tmp, new_value, cpu_online_map); -+ if (cpus_empty(tmp)) - return -EINVAL; - - irq_affinity[irq] = new_value; -@@ -874,17 +888,28 @@ static int irq_affinity_write_proc (stru - static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, - int count, int *eof, void *data) - { -- unsigned long *mask = (unsigned long *) data; -+ cpumask_t tmp, *mask = (cpumask_t *) data; -+ int k, len; -+ - if (count < HEX_DIGITS+1) - return -EINVAL; -- return sprintf (page, "%08lx\n", *mask); -+ -+ tmp = *mask; -+ for (k = len = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(page, "%04hx", (u16)cpus_coerce(tmp)); -+ len += j; -+ page += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(page, "\n"); -+ return len; - } - - static int prof_cpu_mask_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) - { -- unsigned long *mask = (unsigned long *) data, full_count = count, err; -- unsigned long new_value; -+ unsigned long full_count = count, err; -+ cpumask_t new_value, *mask = (cpumask_t *)data; - - err = parse_hex_value(buffer, count, &new_value); - if (err) ---- linux-2.6.0-test1/arch/x86_64/kernel/ldt.c 2003-06-16 22:32:20.000000000 -0700 -+++ 25/arch/x86_64/kernel/ldt.c 2003-07-19 17:04:07.000000000 -0700 -@@ -60,9 +60,12 @@ static int alloc_ldt(mm_context_t *pc, u - wmb(); - if (reload) { - #ifdef CONFIG_SMP -+ cpumask_t mask; -+ - preempt_disable(); -+ mask = cpumask_of_cpu(smp_processor_id()); - load_LDT(pc); -- if (current->mm->cpu_vm_mask != (1UL<mm->cpu_vm_mask, mask)) - smp_call_function(flush_ldt, 0, 1, 1); - preempt_enable(); - #else ---- linux-2.6.0-test1/arch/x86_64/kernel/mpparse.c 2003-06-14 12:18:06.000000000 -0700 -+++ 25/arch/x86_64/kernel/mpparse.c 2003-07-19 17:04:07.000000000 -0700 -@@ -65,7 +65,7 @@ unsigned int boot_cpu_id = -1U; - static unsigned int num_processors = 0; - - /* Bitmask of physically existing CPUs */ --unsigned long phys_cpu_present_map = 0; -+cpumask_t phys_cpu_present_map = CPU_MASK_NONE; - - /* ACPI MADT entry parsing functions */ - #ifdef CONFIG_ACPI_BOOT -@@ -124,7 +124,7 @@ static void __init MP_processor_info (st - } - ver = m->mpc_apicver; - -- phys_cpu_present_map |= 1 << m->mpc_apicid; -+ cpu_set(m->mpc_apicid, phys_cpu_present_map); - /* - * Validate version - */ ---- linux-2.6.0-test1/arch/x86_64/kernel/msr.c 2003-06-16 22:32:20.000000000 -0700 -+++ 25/arch/x86_64/kernel/msr.c 2003-07-19 17:04:07.000000000 -0700 -@@ -242,7 +242,7 @@ static int msr_open(struct inode *inode, - int cpu = minor(file->f_dentry->d_inode->i_rdev); - struct cpuinfo_x86 *c = &(cpu_data)[cpu]; - -- if ( !(cpu_online_map & (1UL << cpu)) ) -+ if (!cpu_online(cpu)) - return -ENXIO; /* No such CPU */ - if ( !cpu_has(c, X86_FEATURE_MSR) ) - return -EIO; /* MSR not supported */ ---- linux-2.6.0-test1/arch/x86_64/kernel/reboot.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/arch/x86_64/kernel/reboot.c 2003-07-19 17:04:07.000000000 -0700 -@@ -110,7 +110,7 @@ static void smp_halt(void) - } - - /* Wait for all other CPUs to have run smp_stop_cpu */ -- while (cpu_online_map) -+ while (!cpus_empty(cpu_online_map)) - rep_nop(); - } - #endif ---- linux-2.6.0-test1/arch/x86_64/kernel/setup.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/arch/x86_64/kernel/setup.c 2003-07-19 17:04:07.000000000 -0700 -@@ -643,7 +643,7 @@ static int show_cpuinfo(struct seq_file - - - #ifdef CONFIG_SMP -- if (!(cpu_online_map & (1<<(c-cpu_data)))) -+ if (!cpu_online(c-cpu_data)) - return 0; - #endif - ---- linux-2.6.0-test1/arch/x86_64/kernel/smpboot.c 2003-06-16 22:32:20.000000000 -0700 -+++ 25/arch/x86_64/kernel/smpboot.c 2003-07-19 17:04:07.000000000 -0700 -@@ -54,11 +54,11 @@ - #include - - /* Bitmask of currently online CPUs */ --unsigned long cpu_online_map = 1; -+cpumask_t cpu_online_map; - --static volatile unsigned long cpu_callin_map; --volatile unsigned long cpu_callout_map; --static unsigned long smp_commenced_mask; -+static cpumask_t cpu_callin_map; -+cpumask_t cpu_callout_map; -+static cpumask_t smp_commenced_mask; - - /* Per CPU bogomips and other parameters */ - struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned; -@@ -174,7 +174,7 @@ static void __init synchronize_tsc_bp (v - - sum = 0; - for (i = 0; i < NR_CPUS; i++) { -- if (test_bit(i, &cpu_callout_map)) { -+ if (cpu_isset(i, cpu_callout_map)) { - t0 = tsc_values[i]; - sum += t0; - } -@@ -183,7 +183,7 @@ static void __init synchronize_tsc_bp (v - - sum = 0; - for (i = 0; i < NR_CPUS; i++) { -- if (!test_bit(i, &cpu_callout_map)) -+ if (!cpu_isset(i, cpu_callout_map)) - continue; - - delta = tsc_values[i] - avg; -@@ -258,7 +258,7 @@ void __init smp_callin(void) - */ - phys_id = GET_APIC_ID(apic_read(APIC_ID)); - cpuid = smp_processor_id(); -- if (test_and_set_bit(cpuid, &cpu_callin_map)) { -+ if (cpu_test_and_set(cpuid, cpu_callin_map)) { - panic("smp_callin: phys CPU#%d, CPU#%d already present??\n", - phys_id, cpuid); - } -@@ -280,7 +280,7 @@ void __init smp_callin(void) - /* - * Has the boot CPU finished it's STARTUP sequence? - */ -- if (test_bit(cpuid, &cpu_callout_map)) -+ if (cpu_isset(cpuid, cpu_callout_map)) - break; - rep_nop(); - } -@@ -320,7 +320,7 @@ void __init smp_callin(void) - /* - * Allow the master to continue. - */ -- set_bit(cpuid, &cpu_callin_map); -+ cpu_set(cpuid, cpu_callin_map); - - /* - * Synchronize the TSC with the BP -@@ -348,7 +348,7 @@ void __init start_secondary(void) - barrier(); - - Dprintk("cpu %d: waiting for commence\n", smp_processor_id()); -- while (!test_bit(smp_processor_id(), &smp_commenced_mask)) -+ while (!cpu_isset(smp_processor_id(), smp_commenced_mask)) - rep_nop(); - - Dprintk("cpu %d: setting up apic clock\n", smp_processor_id()); -@@ -372,7 +372,7 @@ void __init start_secondary(void) - local_flush_tlb(); - - Dprintk("cpu %d eSetting cpu_online_map\n", smp_processor_id()); -- set_bit(smp_processor_id(), &cpu_online_map); -+ cpu_set(smp_processor_id(), cpu_online_map); - wmb(); - - cpu_idle(); -@@ -630,19 +630,19 @@ static void __init do_boot_cpu (int apic - * allow APs to start initializing. - */ - Dprintk("Before Callout %d.\n", cpu); -- set_bit(cpu, &cpu_callout_map); -+ cpu_set(cpu, cpu_callout_map); - Dprintk("After Callout %d.\n", cpu); - - /* - * Wait 5s total for a response - */ - for (timeout = 0; timeout < 50000; timeout++) { -- if (test_bit(cpu, &cpu_callin_map)) -+ if (cpu_isset(cpu, cpu_callin_map)) - break; /* It has booted */ - udelay(100); - } - -- if (test_bit(cpu, &cpu_callin_map)) { -+ if (cpu_isset(cpu, cpu_callin_map)) { - /* number CPUs logically, starting from 1 (BSP is 0) */ - Dprintk("OK.\n"); - printk(KERN_INFO "CPU%d: ", cpu); -@@ -663,7 +663,7 @@ static void __init do_boot_cpu (int apic - } - } - if (boot_error) { -- clear_bit(cpu, &cpu_callout_map); /* was set here (do_boot_cpu()) */ -+ cpu_clear(cpu, cpu_callout_map); /* was set here (do_boot_cpu()) */ - clear_bit(cpu, &cpu_initialized); /* was set by cpu_init() */ - cpucount--; - } -@@ -734,10 +734,10 @@ static void __init smp_boot_cpus(unsigne - current_thread_info()->cpu = 0; - smp_tune_scheduling(); - -- if (!test_bit(hard_smp_processor_id(), &phys_cpu_present_map)) { -+ if (!cpu_isset(hard_smp_processor_id(), phys_cpu_present_map)) { - printk("weird, boot CPU (#%d) not listed by the BIOS.\n", - hard_smp_processor_id()); -- phys_cpu_present_map |= (1 << hard_smp_processor_id()); -+ cpu_set(hard_smp_processor_id(), phys_cpu_present_map); - } - - /* -@@ -747,8 +747,8 @@ static void __init smp_boot_cpus(unsigne - if (!smp_found_config) { - printk(KERN_NOTICE "SMP motherboard not detected.\n"); - io_apic_irqs = 0; -- cpu_online_map = phys_cpu_present_map = 1; -- phys_cpu_present_map = 1; -+ cpu_online_map = cpumask_of_cpu(0); -+ phys_cpu_present_map = cpumask_of_cpu(0); - if (APIC_init_uniprocessor()) - printk(KERN_NOTICE "Local APIC not detected." - " Using dummy APIC emulation.\n"); -@@ -759,10 +759,10 @@ static void __init smp_boot_cpus(unsigne - * Should not be necessary because the MP table should list the boot - * CPU too, but we do it for the sake of robustness anyway. - */ -- if (!test_bit(boot_cpu_id, &phys_cpu_present_map)) { -+ if (!cpu_isset(boot_cpu_id, phys_cpu_present_map)) { - printk(KERN_NOTICE "weird, boot CPU (#%d) not listed by the BIOS.\n", - boot_cpu_id); -- phys_cpu_present_map |= (1 << hard_smp_processor_id()); -+ cpu_set(hard_smp_processor_id(), phys_cpu_present_map); - } - - /* -@@ -773,8 +773,8 @@ static void __init smp_boot_cpus(unsigne - boot_cpu_id); - printk(KERN_ERR "... forcing use of dummy APIC emulation. (tell your hw vendor)\n"); - io_apic_irqs = 0; -- cpu_online_map = phys_cpu_present_map = 1; -- phys_cpu_present_map = 1; -+ cpu_online_map = cpumask_of_cpu(0); -+ phys_cpu_present_map = cpumask_of_cpu(0); - disable_apic = 1; - goto smp_done; - } -@@ -788,8 +788,8 @@ static void __init smp_boot_cpus(unsigne - smp_found_config = 0; - printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); - io_apic_irqs = 0; -- cpu_online_map = phys_cpu_present_map = 1; -- phys_cpu_present_map = 1; -+ cpu_online_map = cpumask_of_cpu(0); -+ phys_cpu_present_map = cpumask_of_cpu(0); - disable_apic = 1; - goto smp_done; - } -@@ -812,7 +812,7 @@ static void __init smp_boot_cpus(unsigne - if (apicid == boot_cpu_id) - continue; - -- if (!(phys_cpu_present_map & (1 << apicid))) -+ if (!cpu_isset(apicid, phys_cpu_present_map)) - continue; - if ((max_cpus >= 0) && (max_cpus <= cpucount+1)) - continue; -@@ -848,7 +848,7 @@ static void __init smp_boot_cpus(unsigne - } else { - unsigned long bogosum = 0; - for (cpu = 0; cpu < NR_CPUS; cpu++) -- if (cpu_callout_map & (1< - */ - --static volatile unsigned long flush_cpumask; -+static volatile cpumask_t flush_cpumask; - static struct mm_struct * flush_mm; - static unsigned long flush_va; - static spinlock_t tlbstate_lock = SPIN_LOCK_UNLOCKED; -@@ -203,7 +204,7 @@ asmlinkage void smp_invalidate_interrupt - - cpu = get_cpu(); - -- if (!test_bit(cpu, &flush_cpumask)) -+ if (!cpu_isset(cpu, flush_cpumask)) - goto out; - /* - * This was a BUG() but until someone can quote me the -@@ -224,15 +225,16 @@ asmlinkage void smp_invalidate_interrupt - leave_mm(cpu); - } - ack_APIC_irq(); -- clear_bit(cpu, &flush_cpumask); -+ cpu_clear(cpu, flush_cpumask); - - out: - put_cpu_no_resched(); - } - --static void flush_tlb_others (unsigned long cpumask, struct mm_struct *mm, -+static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm, - unsigned long va) - { -+ cpumask_t tmp; - /* - * A couple of (to be removed) sanity checks: - * -@@ -240,12 +242,10 @@ static void flush_tlb_others (unsigned l - * - current CPU must not be in mask - * - mask must exist :) - */ -- if (!cpumask) -- BUG(); -- if ((cpumask & cpu_online_map) != cpumask) -- BUG(); -- if (cpumask & (1 << smp_processor_id())) -- BUG(); -+ BUG_ON(cpus_empty(cpumask)); -+ cpus_and(tmp, cpumask, cpu_online_map); -+ BUG_ON(!cpus_equal(tmp, cpumask)); -+ BUG_ON(cpu_isset(smp_processor_id(), cpumask)); - if (!mm) - BUG(); - -@@ -259,14 +259,15 @@ static void flush_tlb_others (unsigned l - - flush_mm = mm; - flush_va = va; -- atomic_set_mask(cpumask, &flush_cpumask); -+ cpus_or(flush_cpumask, cpumask, flush_cpumask); -+ - /* - * We have to send the IPI only to - * CPUs affected. - */ - send_IPI_mask(cpumask, INVALIDATE_TLB_VECTOR); - -- while (flush_cpumask) -+ while (!cpus_empty(flush_cpumask)) - /* nothing. lockup detection does not belong here */; - - flush_mm = NULL; -@@ -277,23 +278,25 @@ static void flush_tlb_others (unsigned l - void flush_tlb_current_task(void) - { - struct mm_struct *mm = current->mm; -- unsigned long cpu_mask; -+ cpumask_t cpu_mask; - - preempt_disable(); -- cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); -+ cpu_mask = mm->cpu_vm_mask; -+ cpu_clear(smp_processor_id(), cpu_mask); - - local_flush_tlb(); -- if (cpu_mask) -+ if (!cpus_empty(cpu_mask)) - flush_tlb_others(cpu_mask, mm, FLUSH_ALL); - preempt_enable(); - } - - void flush_tlb_mm (struct mm_struct * mm) - { -- unsigned long cpu_mask; -+ cpumask_t cpu_mask; - - preempt_disable(); -- cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); -+ cpu_mask = mm->cpu_vm_mask; -+ cpu_clear(smp_processor_id(), cpu_mask); - - if (current->active_mm == mm) { - if (current->mm) -@@ -301,7 +304,7 @@ void flush_tlb_mm (struct mm_struct * mm - else - leave_mm(smp_processor_id()); - } -- if (cpu_mask) -+ if (!cpus_empty(cpu_mask)) - flush_tlb_others(cpu_mask, mm, FLUSH_ALL); - - preempt_enable(); -@@ -310,10 +313,11 @@ void flush_tlb_mm (struct mm_struct * mm - void flush_tlb_page(struct vm_area_struct * vma, unsigned long va) - { - struct mm_struct *mm = vma->vm_mm; -- unsigned long cpu_mask; -+ cpumask_t cpu_mask; - - preempt_disable(); -- cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); -+ cpu_mask = mm->cpu_vm_mask; -+ cpu_clear(smp_processor_id(), cpu_mask); - - if (current->active_mm == mm) { - if(current->mm) -@@ -322,7 +326,7 @@ void flush_tlb_page(struct vm_area_struc - leave_mm(smp_processor_id()); - } - -- if (cpu_mask) -+ if (!cpus_empty(cpu_mask)) - flush_tlb_others(cpu_mask, mm, va); - - preempt_enable(); -@@ -355,7 +359,7 @@ void smp_kdb_stop(void) - - void smp_send_reschedule(int cpu) - { -- send_IPI_mask(1 << cpu, RESCHEDULE_VECTOR); -+ send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR); - } - - /* -@@ -430,7 +434,7 @@ void smp_stop_cpu(void) - /* - * Remove this CPU: - */ -- clear_bit(smp_processor_id(), &cpu_online_map); -+ cpu_clear(smp_processor_id(), cpu_online_map); - local_irq_disable(); - disable_local_APIC(); - local_irq_enable(); -@@ -491,8 +495,8 @@ int slow_smp_processor_id(void) - unsigned long sp = (unsigned long)&stack_location; - int offset = 0, cpu; - -- for (offset = 0; (cpu_online_map >> offset); offset = cpu + 1) { -- cpu = ffz(~(cpu_online_map >> offset)); -+ for (offset = 0; next_cpu(offset, cpu_online_map) < NR_CPUS; offset = cpu + 1) { -+ cpu = next_cpu(offset, cpu_online_map); - - if (sp >= (u64)cpu_pda[cpu].irqstackptr - IRQSTACKSIZE && - sp <= (u64)cpu_pda[cpu].irqstackptr) ---- linux-2.6.0-test1/arch/x86_64/mm/init.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/x86_64/mm/init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -19,9 +19,6 @@ - #include - #include - #include --#ifdef CONFIG_BLK_DEV_INITRD --#include --#endif - #include - #include - #include ---- linux-2.6.0-test1/arch/x86_64/mm/ioremap.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/arch/x86_64/mm/ioremap.c 2003-07-19 17:07:16.000000000 -0700 -@@ -82,7 +82,7 @@ static int remap_area_pages(unsigned lon - spin_lock(&init_mm.page_table_lock); - do { - pmd_t *pmd; -- pmd = pmd_alloc(&init_mm, dir, address); -+ pmd = pmd_alloc_kernel(&init_mm, dir, address); - error = -ENOMEM; - if (!pmd) - break; ---- linux-2.6.0-test1/arch/x86_64/mm/numa.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/arch/x86_64/mm/numa.c 2003-07-19 17:03:49.000000000 -0700 -@@ -8,7 +8,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/fb/neofb.txt 2003-07-19 17:04:55.000000000 -0700 -@@ -0,0 +1,27 @@ -+the neofb framebuffer driver supports the following Neomagic chipsets: -+ -+NM2070 MagicGraph 128 -+NM2090 MagicGraph 128V -+NM2093 MagicGraph 128ZV -+NM2097 MagicGraph 128ZV+ -+NM2160 MagicGraph 128XD -+NM2200 MagicGraph 256AV -+NM2230 MagicGraph 256AV+ -+NM2360 MagicGraph 256ZX -+NM2380 MagicGraph 256XL+ -+ -+with the following options: -+ -+disabled Disable this driver's initialization. -+internal Enable output on internal LCD Display. -+external Enable output on external CRT. -+nostretch Disable stretching of modes smaller than LCD. -+nopciburst Disable PCI burst mode. -+libretto Force Libretto 100/110 800x480 LCD. -+picturebook Force Picturebook 1024x480 LCD. -+ -+at the boot prompt: -+ video=neofb:picturebook -+ -+as a module: -+ modprobe neofb picturebook=1 ---- linux-2.6.0-test1/Documentation/filesystems/proc.txt 2003-06-26 22:07:24.000000000 -0700 -+++ 25/Documentation/filesystems/proc.txt 2003-07-19 17:04:56.000000000 -0700 -@@ -222,6 +222,7 @@ Table 1-3: Kernel info in /proc - partitions Table of partitions known to the system - pci Depreciated info of PCI bus (new way -> /proc/bus/pci/, - decoupled by lspci (2.4) -+ rcu Read-Copy Update information (2.5) - rtc Real time clock - scsi SCSI info (see text) - slabinfo Slab pool info -@@ -346,6 +347,9 @@ available. In this case, there are 0 ch - ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE - available in ZONE_NORMAL, etc... - -+The rcu file gives information about Read-Copy Update synchronization -+primitive. It indicates the number for RCU requests and actual -+updates for every CPU. - - 1.3 IDE devices in /proc/ide - ---------------------------- ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/andthen 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,100 @@ -+ -+define set_andthen -+ set var $thp=0 -+ set var $thp=(struct kgdb_and_then_struct *)&kgdb_data[0] -+ set var $at_size = (sizeof kgdb_data)/(sizeof *$thp) -+ set var $at_oc=kgdb_and_then_count -+ set var $at_cc=$at_oc -+end -+ -+define andthen_next -+ set var $at_cc=$arg0 -+end -+ -+define andthen -+ andthen_set_edge -+ if ($at_cc >= $at_oc) -+ printf "Outside window. Window size is %d\n",($at_oc-$at_low) -+ else -+ printf "%d: ",$at_cc -+ output *($thp+($at_cc++ % $at_size )) -+ printf "\n" -+ end -+end -+define andthen_set_edge -+ set var $at_oc=kgdb_and_then_count -+ set var $at_low = $at_oc - $at_size -+ if ($at_low < 0 ) -+ set var $at_low = 0 -+ end -+ if (( $at_cc > $at_oc) || ($at_cc < $at_low)) -+ printf "Count outside of window, setting count to " -+ if ($at_cc >= $at_oc) -+ set var $at_cc = $at_oc -+ else -+ set var $at_cc = $at_low -+ end -+ printf "%d\n",$at_cc -+ end -+end -+ -+define beforethat -+ andthen_set_edge -+ if ($at_cc <= $at_low) -+ printf "Outside window. Window size is %d\n",($at_oc-$at_low) -+ else -+ printf "%d: ",$at_cc-1 -+ output *($thp+(--$at_cc % $at_size )) -+ printf "\n" -+ end -+end -+ -+document andthen_next -+ andthen_next -+ . sets the number of the event to display next. If this event -+ . is not in the event pool, either andthen or beforethat will -+ . correct it to the nearest event pool edge. The event pool -+ . ends at the last event recorded and begins -+ . prior to that. If beforethat is used next, it will display -+ . event -1. -+. -+ andthen commands are: set_andthen, andthen_next, andthen and beforethat -+end -+ -+ -+document andthen -+ andthen -+. displays the next event in the list. sets up to display -+. the oldest saved event first. -+. (optional) count of the event to display. -+. note the number of events saved is specified at configure time. -+. if events are saved between calls to andthen the index will change -+. but the displayed event will be the next one (unless the event buffer -+. is overrun). -+. -+. andthen commands are: set_andthen, andthen_next, andthen and beforethat -+end -+ -+document set_andthen -+ set_andthen -+. sets up to use the and commands. -+. if you have defined your own struct, use the above and -+. then enter the following: -+. p $thp=(struct kgdb_and_then_structX *)&kgdb_data[0] -+. where is the name of your structure. -+. -+. andthen commands are: set_andthen, andthen_next, andthen and beforethat -+end -+ -+document beforethat -+ beforethat -+. displays the next prior event in the list. sets up to -+. display the last occuring event first. -+. -+. note the number of events saved is specified at configure time. -+. if events are saved between calls to beforethat the index will change -+. but the displayed event will be the next one (unless the event buffer -+. is overrun). -+. -+. andthen commands are: set_andthen, andthen_next, andthen and beforethat -+end ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/debug-nmi.txt 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,37 @@ -+Subject: Debugging with NMI -+Date: Mon, 12 Jul 1999 11:28:31 -0500 -+From: David Grothe -+Organization: Gcom, Inc -+To: David Grothe -+ -+Kernel hackers: -+ -+Maybe this is old hat, but it is new to me -- -+ -+On an ISA bus machine, if you short out the A1 and B1 pins of an ISA -+slot you will generate an NMI to the CPU. This interrupts even a -+machine that is hung in a loop with interrupts disabled. Used in -+conjunction with kgdb < -+ftp://ftp.gcom.com/pub/linux/src/kgdb-2.3.35/kgdb-2.3.35.tgz > you can -+gain debugger control of a machine that is hung in the kernel! Even -+without kgdb the kernel will print a stack trace so you can find out -+where it was hung. -+ -+The A1/B1 pins are directly opposite one another and the farthest pins -+towards the bracket end of the ISA bus socket. You can stick a paper -+clip or multi-meter probe between them to short them out. -+ -+I had a spare ISA bus to PC104 bus adapter around. The PC104 end of the -+board consists of two rows of wire wrap pins. So I wired a push button -+between the A1/B1 pins and now have an ISA board that I can stick into -+any ISA bus slot for debugger entry. -+ -+Microsoft has a circuit diagram of a PCI card at -+http://www.microsoft.com/hwdev/DEBUGGING/DMPSW.HTM. If you want to -+build one you will have to mail them and ask for the PAL equations. -+Nobody makes one comercially. -+ -+[THIS TIP COMES WITH NO WARRANTY WHATSOEVER. It works for me, but if -+your machine catches fire, it is your problem, not mine.] -+ -+-- Dave (the kgdb guy) ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/gdb-globals.txt 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,71 @@ -+Sender: akale@veritas.com -+Date: Fri, 23 Jun 2000 19:26:35 +0530 -+From: "Amit S. Kale" -+Organization: Veritas Software (India) -+To: Dave Grothe , linux-kernel@vger.rutgers.edu -+CC: David Milburn , -+ "Edouard G. Parmelan" , -+ ezannoni@cygnus.com, Keith Owens -+Subject: Re: Module debugging using kgdb -+ -+Dave Grothe wrote: -+> -+> Amit: -+> -+> There is a 2.4.0 version of kgdb on our ftp site: -+> ftp://ftp.gcom.com/pub/linux/src/kgdb. I mirrored your version of gdb -+> and loadmodule.sh there. -+> -+> Have a look at the README file and see if I go it right. If not, send -+> me some corrections and I will update it. -+> -+> Does your version of gdb solve the global variable problem? -+ -+Yes. -+Thanks to Elena Zanoni, gdb (developement version) can now calculate -+correctly addresses of dynamically loaded object files. I have not been -+following gdb developement for sometime and am not sure when symbol -+address calculation fix is going to appear in a gdb stable version. -+ -+Elena, any idea when the fix will make it to a prebuilt gdb from a -+redhat release? -+ -+For the time being I have built a gdb developement version. It can be -+used for module debugging with loadmodule.sh script. -+ -+The problem with calculating of module addresses with previous versions -+of gdb was as follows: -+gdb did not use base address of a section while calculating address of -+a symbol in the section in an object file loaded via 'add-symbol-file'. -+It used address of .text segment instead. Due to this addresses of -+symbols in .data, .bss etc. (e.g. global variables) were calculated incorrectly. -+ -+Above mentioned fix allow gdb to use base address of a segment while -+calculating address of a symbol in it. It adds a parameter '-s' to -+'add-symbol-file' command for specifying base address of a segment. -+ -+loadmodule.sh script works as follows. -+ -+1. Copy a module file to target machine. -+2. Load the module on the target machine using insmod with -m parameter. -+insmod produces a module load map which contains base addresses of all -+sections in the module and addresses of symbols in the module file. -+3. Find all sections and their base addresses in the module from -+the module map. -+4. Generate a script that loads the module file. The script uses -+'add-symbol-file' and specifies address of text segment followed by -+addresses of all segments in the module. -+ -+Here is an example gdb script produced by loadmodule.sh script. -+ -+add-symbol-file foo 0xd082c060 -s .text.lock 0xd08cbfb5 -+-s .fixup 0xd08cfbdf -s .rodata 0xd08cfde0 -s __ex_table 0xd08e3b38 -+-s .data 0xd08e3d00 -s .bss 0xd08ec8c0 -s __ksymtab 0xd08ee838 -+ -+With this command gdb can calculate addresses of symbols in ANY segment -+in a module file. -+ -+Regards. -+-- -+Amit Kale -+Veritas Software ( http://www.veritas.com ) ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/gdbinit 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,14 @@ -+shell echo -e "\003" >/dev/ttyS0 -+set remotebaud 38400 -+target remote /dev/ttyS0 -+define si -+stepi -+printf "EAX=%08x EBX=%08x ECX=%08x EDX=%08x\n", $eax, $ebx, $ecx, $edx -+printf "ESI=%08x EDI=%08x EBP=%08x ESP=%08x\n", $esi, $edi, $ebp, $esp -+x/i $eip -+end -+define ni -+nexti -+printf "EAX=%08x EBX=%08x ECX=%08x EDX=%08x\n", $eax, $ebx, $ecx, $edx -+printf "ESI=%08x EDI=%08x EBP=%08x ESP=%08x\n", $esi, $edi, $ebp, $esp -+x/i $eip ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/gdbinit.hw 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,117 @@ -+ -+#Using ia-32 hardware breakpoints. -+# -+#4 hardware breakpoints are available in ia-32 processors. These breakpoints -+#do not need code modification. They are set using debug registers. -+# -+#Each hardware breakpoint can be of one of the -+#three types: execution, write, access. -+#1. An Execution breakpoint is triggered when code at the breakpoint address is -+#executed. -+#2. A write breakpoint ( aka watchpoints ) is triggered when memory location -+#at the breakpoint address is written. -+#3. An access breakpoint is triggered when memory location at the breakpoint -+#address is either read or written. -+# -+#As hardware breakpoints are available in limited number, use software -+#breakpoints ( br command in gdb ) instead of execution hardware breakpoints. -+# -+#Length of an access or a write breakpoint defines length of the datatype to -+#be watched. Length is 1 for char, 2 short , 3 int. -+# -+#For placing execution, write and access breakpoints, use commands -+#hwebrk, hwwbrk, hwabrk -+#To remove a breakpoint use hwrmbrk command. -+# -+#These commands take following types of arguments. For arguments associated -+#with each command, use help command. -+#1. breakpointno: 0 to 3 -+#2. length: 1 to 3 -+#3. address: Memory location in hex ( without 0x ) e.g c015e9bc -+# -+#Use the command exinfo to find which hardware breakpoint occured. -+ -+#hwebrk breakpointno address -+define hwebrk -+ maintenance packet Y$arg0,0,0,$arg1 -+end -+document hwebrk -+ hwebrk
-+ Places a hardware execution breakpoint -+ = 0 - 3 -+
= Hex digits without leading "0x". -+end -+ -+#hwwbrk breakpointno length address -+define hwwbrk -+ maintenance packet Y$arg0,1,$arg1,$arg2 -+end -+document hwwbrk -+ hwwbrk
-+ Places a hardware write breakpoint -+ = 0 - 3 -+ = 1 (1 byte), 2 (2 byte), 3 (4 byte) -+
= Hex digits without leading "0x". -+end -+ -+#hwabrk breakpointno length address -+define hwabrk -+ maintenance packet Y$arg0,1,$arg1,$arg2 -+end -+document hwabrk -+ hwabrk
-+ Places a hardware access breakpoint -+ = 0 - 3 -+ = 1 (1 byte), 2 (2 byte), 3 (4 byte) -+
= Hex digits without leading "0x". -+end -+ -+#hwrmbrk breakpointno -+define hwrmbrk -+ maintenance packet y$arg0 -+end -+document hwrmbrk -+ hwrmbrk -+ = 0 - 3 -+ Removes a hardware breakpoint -+end -+ -+define reboot -+ maintenance packet r -+end -+#exinfo -+define exinfo -+ maintenance packet qE -+end -+document exinfo -+ exinfo -+ Gives information about a breakpoint. -+end -+define get_th -+ p $th=(struct thread_info *)((int)$esp & ~8191) -+end -+document get_th -+ get_tu -+ Gets and prints the current thread_info pointer, Defines th to be it. -+end -+define get_cu -+ p $cu=(struct thread_info *)((int)$esp & ~8191)->task -+end -+document get_cu -+ get_cu -+ Gets and print the "current" value. Defines $cu to be it. -+end -+define int_off -+ set var $flags=$eflags -+ set $eflags=$eflags&~0x200 -+ end -+define int_on -+ set var $eflags|=$flags&0x200 -+ end -+document int_off -+ saves the current interrupt state and clears the processor interrupt -+ flag. Use int_on to restore the saved flag. -+end -+document int_on -+ Restores the interrupt flag saved by int_off. -+end ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/gdbinit-modules 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,146 @@ -+# -+# Usefull GDB user-command to debug Linux Kernel Modules with gdbstub. -+# -+# This don't work for Linux-2.0 or older. -+# -+# Author Edouard G. Parmelan -+# -+# -+# Fri Apr 30 20:33:29 CEST 1999 -+# First public release. -+# -+# Major cleanup after experiment Linux-2.0 kernel without success. -+# Symbols of a module are not in the correct order, I can't explain -+# why :( -+# -+# Fri Mar 19 15:41:40 CET 1999 -+# Initial version. -+# -+# Thu Jan 6 16:29:03 CST 2000 -+# A little fixing by Dave Grothe -+# -+# Mon Jun 19 09:33:13 CDT 2000 -+# Alignment changes from Edouard Parmelan -+# -+# The basic idea is to find where insmod load the module and inform -+# GDB to load the symbol table of the module with the GDB command -+# ``add-symbol-file
''. -+# -+# The Linux kernel holds the list of all loaded modules in module_list, -+# this list end with &kernel_module (exactly with module->next == NULL, -+# but the last module is not a real module). -+# -+# Insmod allocates the struct module before the object file. Since -+# Linux-2.1, this structure contain his size. The real address of -+# the object file is then (char*)module + module->size_of_struct. -+# -+# You can use three user functions ``mod-list'', ``mod-print-symbols'' -+# and ``add-module-symbols''. -+# -+# mod-list list all loaded modules with the format: -+# -+# -+# As soon as you have found the address of your module, you can -+# print its exported symbols (mod-print-symbols) or inform GDB to add -+# symbols from your module file (mod-add-symbols). -+# -+# The argument that you give to mod-print-symbols or mod-add-symbols -+# is the from the mod-list command. -+# -+# When using the mod-add-symbols command you must also give the full -+# pathname of the modules object code file. -+# -+# The command mod-add-lis is an example of how to make this easier. -+# You can edit this macro to contain the path name of your own -+# favorite module and then use it as a shorthand to load it. You -+# still need the module-address, however. -+# -+# The internal function ``mod-validate'' set the GDB variable $mod -+# as a ``struct module*'' if the kernel known the module otherwise -+# $mod is set to NULL. This ensure to not add symbols for a wrong -+# address. -+# -+# Have a nice hacking day ! -+# -+# -+define mod-list -+ set $mod = (struct module*)module_list -+ # the last module is the kernel, ignore it -+ while $mod != &kernel_module -+ printf "%p\t%s\n", (long)$mod, ($mod)->name -+ set $mod = $mod->next -+ end -+end -+document mod-list -+List all modules in the form: -+Use the as the argument for the other -+mod-commands: mod-print-symbols, mod-add-symbols. -+end -+ -+define mod-validate -+ set $mod = (struct module*)module_list -+ while ($mod != $arg0) && ($mod != &kernel_module) -+ set $mod = $mod->next -+ end -+ if $mod == &kernel_module -+ set $mod = 0 -+ printf "%p is not a module\n", $arg0 -+ end -+end -+document mod-validate -+mod-validate -+Internal user-command used to validate the module parameter. -+If is a real loaded module, set $mod to it otherwise set $mod to 0. -+end -+ -+ -+define mod-print-symbols -+ mod-validate $arg0 -+ if $mod != 0 -+ set $i = 0 -+ while $i < $mod->nsyms -+ set $sym = $mod->syms[$i] -+ printf "%p\t%s\n", $sym->value, $sym->name -+ set $i = $i + 1 -+ end -+ end -+end -+document mod-print-symbols -+mod-print-symbols -+Print all exported symbols of the module. see mod-list -+end -+ -+ -+define mod-add-symbols-align -+ mod-validate $arg0 -+ if $mod != 0 -+ set $mod_base = ($mod->size_of_struct + (long)$mod) -+ if ($arg2 != 0) && (($mod_base & ($arg2 - 1)) != 0) -+ set $mod_base = ($mod_base | ($arg2 - 1)) + 1 -+ end -+ add-symbol-file $arg1 $mod_base -+ end -+end -+document mod-add-symbols-align -+mod-add-symbols-align -+Load the symbols table of the module from the object file where -+first section aligment is . -+To retreive alignment, use `objdump -h '. -+end -+ -+define mod-add-symbols -+ mod-add-symbols-align $arg0 $arg1 sizeof(long) -+end -+document mod-add-symbols -+mod-add-symbols -+Load the symbols table of the module from the object file. -+Default alignment is 4. See mod-add-symbols-align. -+end -+ -+define mod-add-lis -+ mod-add-symbols-align $arg0 /usr/src/LiS/streams.o 16 -+end -+document mod-add-lis -+mod-add-lis -+Does mod-add-symbols /usr/src/LiS/streams.o -+end ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/kgdb.txt 2003-07-19 17:04:05.000000000 -0700 -@@ -0,0 +1,716 @@ -+Last edit: <20030506.1615.42> -+This file has information specific to the i386 kgdb option. Other -+platforms with the kgdb option may behave in a similar fashion. -+ -+New features: -+============ -+20030505.1827.27 -+We are starting to align with the sourceforge version, at least in -+commands. To this end, the boot command string to start kgdb at -+boot time has been changed from "kgdb" to "gdb". -+ -+Andrew Morton sent a couple of patches which are now included as follows: -+1.) We now return a flag to the interrupt handler. -+2.) We no longer use smp_num_cpus (a conflict with the lock meter). -+3.) And from William Lee Irwin III code to make -+ sure high-mem is set up before we attempt to register our interrupt -+ handler. -+We now include asm/kgdb.h from config.h so you will most likely never -+have to include it. It also 'NULLS' the kgdb macros you might have in -+your code when CONFIG_KGDB is not defined. This allows you to just -+turn off CONFIG_KGDB to turn off all the kgdb_ts() calls and such. -+This include is conditioned on the machine being an x86 so as to not -+mess with other archs. -+ -+20020801.1129.03 -+This is currently the version for the 2.4.18 (and beyond?) kernel. -+ -+We have several new "features" beginning with this version: -+ -+1.) Kgdb now syncs the "other" CPUs with a cross-CPU NMI. No more -+ waiting and it will pull that guy out of an IRQ off spin lock :) -+ -+2.) We doctored up the code that tells where a task is waiting and -+ included it so that the "info thread" command will show a bit more -+ than "schedule()". Try it... -+ -+3.) Added the ability to call a function from gdb. All the standard gdb -+ issues apply, i.e. if you hit a breakpoint in the function, you are -+ not allowed to call another (gdb limitation, not kgdb). To help -+ this capability we added a memory allocation function. Gdb does not -+ return this memory (it is used for strings that you pass to that function -+ you are calling from gdb) so we fixed up a way to allow you to -+ manually return the memory (see below). -+ -+4.) Kgdb time stamps (kgdb_ts()) are enhanced to expand what was the -+ interrupt flag to now also include the preemption count and the -+ "in_interrupt" info. The flag is now called "with_pif" to indicate -+ the order, preempt_count, in_interrupt, flag. The preempt_count is -+ shifted left by 4 bits so you can read the count in hex by dropping -+ the low order digit. In_interrupt is in bit 1, and the flag is in -+ bit 0. -+ -+5.) The command: "p kgdb_info" is now expanded and prints something -+ like: -+(gdb) p kgdb_info -+$2 = {used_malloc = 0, called_from = 0xc0107506, entry_tsc = 67468627259, -+ errcode = 0, vector = 3, print_debug_info = 0, hold_on_sstep = 1, -+ cpus_waiting = {{task = 0xc027a000, pid = 32768, hold = 0, -+ regs = 0xc027bf84}, {task = 0x0, pid = 0, hold = 0, regs = 0x0}}} -+ -+ Things to note here: a.) used_malloc is the amount of memory that -+ has been malloc'ed to do calls from gdb. You can reclaim this -+ memory like this: "p kgdb_info.used_malloc=0" Cool, huh? b.) -+ cpus_waiting is now "sized" by the number of CPUs you enter at -+ configure time in the kgdb configure section. This is NOT used -+ anywhere else in the system, but it is "nice" here. c.) The task's -+ "pid" is now in the structure. This is the pid you will need to use -+ to decode to the thread id to get gdb to look at that thread. -+ Remember that the "info thread" command prints a list of threads -+ wherein it numbers each thread with its reference number followed -+ by the thread's pid. Note that the per-CPU idle threads actually -+ have pids of 0 (yes, there is more than one pid 0 in an SMP system). -+ To avoid confusion, kgdb numbers these threads with numbers beyond -+ the MAX_PID. That is why you see 32768 and above. -+ -+6.) A subtle change, we now provide the complete register set for tasks -+ that are active on the other CPUs. This allows better trace back on -+ those tasks. -+ -+ And, let's mention what we could not fix. Back-trace from all but the -+ thread that we trapped will, most likely, have a bogus entry in it. -+ The problem is that gdb does not recognize the entry code for -+ functions that use "current" near (at all?) the entry. The compiler -+ is putting the "current" decode as the first two instructions of the -+ function where gdb expects to find %ebp changing code. Back trace -+ also has trouble with interrupt frames. I am talking with Daniel -+ Jacobowitz about some way to fix this, but don't hold your breath. -+ -+20011220.0050.35 -+Major enhancement with this version is the ability to hold one or more -+CPUs in an SMP system while allowing the others to continue. Also, by -+default only the current CPU is enabled on single-step commands (please -+note that gdb issues single-step commands at times other than when you -+use the si command). -+ -+Another change is to collect some useful information in -+a global structure called "kgdb_info". You should be able to just: -+ -+p kgdb_info -+ -+although I have seen cases where the first time this is done gdb just -+prints the first member but prints the whole structure if you then enter -+CR (carriage return or enter). This also works: -+ -+p *&kgdb_info -+ -+Here is a sample: -+(gdb) p kgdb_info -+$4 = {called_from = 0xc010732c, entry_tsc = 32804123790856, errcode = 0, -+ vector = 3, print_debug_info = 0} -+ -+"Called_from" is the return address from the current entry into kgdb. -+Sometimes it is useful to know why you are in kgdb, for example, was -+it an NMI or a real breakpoint? The simple way to interrogate this -+return address is: -+ -+l *0xc010732c -+ -+which will print the surrounding few lines of source code. -+ -+"Entry_tsc" is the CPU TSC on entry to kgdb (useful to compare to the -+kgdb_ts entries). -+ -+"errcode" and "vector" are other entry parameters which may be helpful on -+some traps. -+ -+"print_debug_info" is the internal debugging kgdb print enable flag. Yes, -+you can modify it. -+ -+In SMP systems kgdb_info also includes the "cpus_waiting" structure and -+"hold_on_step": -+ -+(gdb) p kgdb_info -+$7 = {called_from = 0xc0112739, entry_tsc = 1034936624074, errcode = 0, -+ vector = 2, print_debug_info = 0, hold_on_sstep = 1, cpus_waiting = {{ -+ task = 0x0, hold = 0, regs = 0x0}, {task = 0xc71b8000, hold = 0, -+ regs = 0xc71b9f70}, {task = 0x0, hold = 0, regs = 0x0}, {task = 0x0, -+ hold = 0, regs = 0x0}, {task = 0x0, hold = 0, regs = 0x0}, {task = 0x0, -+ hold = 0, regs = 0x0}, {task = 0x0, hold = 0, regs = 0x0}, {task = 0x0, -+ hold = 0, regs = 0x0}}} -+ -+"Cpus_waiting" has an entry for each CPU other than the current one that -+has been stopped. Each entry contains the task_struct address for that -+CPU, the address of the regs for that task and a hold flag. All these -+have the proper typing so that, for example: -+ -+p *kgdb_info.cpus_waiting[1].regs -+ -+will print the registers for CPU 1. -+ -+"Hold_on_sstep" is a new feature with this version and comes up set or -+true. What this means is that whenever kgdb is asked to single-step all -+other CPUs are held (i.e. not allowed to execute). The flag applies to -+all but the current CPU and, again, can be changed: -+ -+p kgdb_info.hold_on_sstep=0 -+ -+restores the old behavior of letting all CPUs run during single-stepping. -+ -+Likewise, each CPU has a "hold" flag, which if set, locks that CPU out -+of execution. Note that this has some risk in cases where the CPUs need -+to communicate with each other. If kgdb finds no CPU available on exit, -+it will push a message thru gdb and stay in kgdb. Note that it is legal -+to hold the current CPU as long as at least one CPU can execute. -+ -+20010621.1117.09 -+This version implements an event queue. Events are signaled by calling -+a function in the kgdb stub and may be examined from gdb. See EVENTS -+below for details. This version also tightens up the interrupt and SMP -+handling to not allow interrupts on the way to kgdb from a breakpoint -+trap. It is fine to allow these interrupts for user code, but not -+system debugging. -+ -+Version -+======= -+ -+This version of the kgdb package was developed and tested on -+kernel version 2.4.16. It will not install on any earlier kernels. -+It is possible that it will continue to work on later versions -+of 2.4 and then versions of 2.5 (I hope). -+ -+ -+Debugging Setup -+=============== -+ -+Designate one machine as the "development" machine. This is the -+machine on which you run your compiles and which has your source -+code for the kernel. Designate a second machine as the "target" -+machine. This is the machine that will run your experimental -+kernel. -+ -+The two machines will be connected together via a serial line out -+one or the other of the COM ports of the PC. You will need the -+appropriate modem eliminator (null modem) cable(s) for this. -+ -+Decide on which tty port you want the machines to communicate, then -+connect them up back-to-back using the null modem cable. COM1 is -+/dev/ttyS0 and COM2 is /dev/ttyS1. You should test this connection -+with the two machines prior to trying to debug a kernel. Once you -+have it working, on the TARGET machine, enter: -+ -+setserial /dev/ttyS0 (or what ever tty you are using) -+ -+and record the port address and the IRQ number. -+ -+On the DEVELOPMENT machine you need to apply the patch for the kgdb -+hooks. You have probably already done that if you are reading this -+file. -+ -+On your DEVELOPMENT machine, go to your kernel source directory and do -+"make Xconfig" where X is one of "x", "menu", or "". If you are -+configuring in the standard serial driver, it must not be a module. -+Either yes or no is ok, but making the serial driver a module means it -+will initialize after kgdb has set up the UART interrupt code and may -+cause a failure of the control-C option discussed below. The configure -+question for the serial driver is under the "Character devices" heading -+and is: -+ -+"Standard/generic (8250/16550 and compatible UARTs) serial support" -+ -+Go down to the kernel debugging menu item and open it up. Enable the -+kernel kgdb stub code by selecting that item. You can also choose to -+turn on the "-ggdb -O1" compile options. The -ggdb causes the compiler -+to put more debug info (like local symbols) in the object file. On the -+i386 -g and -ggdb are the same so this option just reduces to "O1". The -+-O1 reduces the optimization level. This may be helpful in some cases, -+be aware, however, that this may also mask the problem you are looking -+for. -+ -+The baud rate. Default is 115200. What ever you choose be sure that -+the host machine is set to the same speed. I recommend the default. -+ -+The port. This is the I/O address of the serial UART that you should -+have gotten using setserial as described above. The standard COM1 port -+(3f8) using IRQ 4 is default. COM2 is 2f8 which by convention uses IRQ -+3. -+ -+The port IRQ (see above). -+ -+Stack overflow test. This option makes a minor change in the trap, -+system call and interrupt code to detect stack overflow and transfer -+control to kgdb if it happens. (Some platforms have this in the -+baseline code, but the i386 does not.) -+ -+You can also configure the system to recognize the boot option -+"console=kgdb" which if given will cause all console output during -+booting to be put thru gdb as well as other consoles. This option -+requires that gdb and kgdb be connected prior to sending console output -+so, if they are not, a breakpoint is executed to force the connection. -+This will happen before any kernel output (it is going thru gdb, right), -+and will stall the boot until the connection is made. -+ -+You can also configure in a patch to SysRq to enable the kGdb SysRq. -+This request generates a breakpoint. Since the serial port IRQ line is -+set up after any serial drivers, it is possible that this command will -+work when the control-C will not. -+ -+Save and exit the Xconfig program. Then do "make clean" , "make dep" -+and "make bzImage" (or whatever target you want to make). This gets the -+kernel compiled with the "-g" option set -- necessary for debugging. -+ -+You have just built the kernel on your DEVELOPMENT machine that you -+intend to run on your TARGET machine. -+ -+To install this new kernel, use the following installation procedure. -+Remember, you are on the DEVELOPMENT machine patching the kernel source -+for the kernel that you intend to run on the TARGET machine. -+ -+Copy this kernel to your target machine using your usual procedures. I -+usually arrange to copy development: -+/usr/src/linux/arch/i386/boot/bzImage to /vmlinuz on the TARGET machine -+via a LAN based NFS access. That is, I run the cp command on the target -+and copy from the development machine via the LAN. Run Lilo (see "man -+lilo" for details on how to set this up) on the new kernel on the target -+machine so that it will boot! Then boot the kernel on the target -+machine. -+ -+On the DEVELOPMENT machine, create a file called .gdbinit in the -+directory /usr/src/linux. An example .gdbinit file looks like this: -+ -+shell echo -e "\003" >/dev/ttyS0 -+set remotebaud 38400 (or what ever speed you have chosen) -+target remote /dev/ttyS0 -+ -+ -+Change the "echo" and "target" definition so that it specifies the tty -+port that you intend to use. Change the "remotebaud" definition to -+match the data rate that you are going to use for the com line. -+ -+You are now ready to try it out. -+ -+Boot your target machine with "kgdb" in the boot command i.e. something -+like: -+ -+lilo> test kgdb -+ -+or if you also want console output thru gdb: -+ -+lilo> test kgdb console=kgdb -+ -+You should see the lilo message saying it has loaded the kernel and then -+all output stops. The kgdb stub is trying to connect with gdb. Start -+gdb something like this: -+ -+ -+On your DEVELOPMENT machine, cd /usr/src/linux and enter "gdb vmlinux". -+When gdb gets the symbols loaded it will read your .gdbinit file and, if -+everything is working correctly, you should see gdb print out a few -+lines indicating that a breakpoint has been taken. It will actually -+show a line of code in the target kernel inside the kgdb activation -+code. -+ -+The gdb interaction should look something like this: -+ -+ linux-dev:/usr/src/linux# gdb vmlinux -+ GDB is free software and you are welcome to distribute copies of it -+ under certain conditions; type "show copying" to see the conditions. -+ There is absolutely no warranty for GDB; type "show warranty" for details. -+ GDB 4.15.1 (i486-slackware-linux), -+ Copyright 1995 Free Software Foundation, Inc... -+ breakpoint () at i386-stub.c:750 -+ 750 } -+ (gdb) -+ -+You can now use whatever gdb commands you like to set breakpoints. -+Enter "continue" to start your target machine executing again. At this -+point the target system will run at full speed until it encounters -+your breakpoint or gets a segment violation in the kernel, or whatever. -+ -+If you have the kgdb console enabled when you continue, gdb will print -+out all the console messages. -+ -+The above example caused a breakpoint relatively early in the boot -+process. For the i386 kgdb it is possible to code a break instruction -+as the first C-language point in init/main.c, i.e. as the first instruction -+in start_kernel(). This could be done as follows: -+ -+#include -+ breakpoint(); -+ -+This breakpoint() is really a function that sets up the breakpoint and -+single-step hardware trap cells and then executes a breakpoint. Any -+early hard coded breakpoint will need to use this function. Once the -+trap cells are set up they need not be set again, but doing it again -+does not hurt anything, so you don't need to be concerned about which -+breakpoint is hit first. Once the trap cells are set up (and the kernel -+sets them up in due course even if breakpoint() is never called) the -+macro: -+ -+BREAKPOINT; -+ -+will generate an inline breakpoint. This may be more useful as it stops -+the processor at the instruction instead of in a function a step removed -+from the location of interest. In either case must be -+included to define both breakpoint() and BREAKPOINT. -+ -+Triggering kgdbstub at other times -+================================== -+ -+Often you don't need to enter the debugger until much later in the boot -+or even after the machine has been running for some time. Once the -+kernel is booted and interrupts are on, you can force the system to -+enter the debugger by sending a control-C to the debug port. This is -+what the first line of the recommended .gdbinit file does. This allows -+you to start gdb any time after the system is up as well as when the -+system is already at a breakpoint. (In the case where the system is -+already at a breakpoint the control-C is not needed, however, it will -+be ignored by the target so no harm is done. Also note the the echo -+command assumes that the port speed is already set. This will be true -+once gdb has connected, but it is best to set the port speed before you -+run gdb.) -+ -+Another simple way to do this is to put the following file in you ~/bin -+directory: -+ -+#!/bin/bash -+echo -e "\003" > /dev/ttyS0 -+ -+Here, the ttyS0 should be replaced with what ever port you are using. -+The "\003" is control-C. Once you are connected with gdb, you can enter -+control-C at the command prompt. -+ -+An alternative way to get control to the debugger is to enable the kGdb -+SysRq command. Then you would enter Alt-SysRq-g (all three keys at the -+same time, but push them down in the order given). To refresh your -+memory of the available SysRq commands try Alt-SysRq-=. Actually any -+undefined command could replace the "=", but I like to KNOW that what I -+am pushing will never be defined. -+ -+Debugging hints -+=============== -+ -+You can break into the target machine at any time from the development -+machine by typing ^C (see above paragraph). If the target machine has -+interrupts enabled this will stop it in the kernel and enter the -+debugger. -+ -+There is unfortunately no way of breaking into the kernel if it is -+in a loop with interrupts disabled, so if this happens to you then -+you need to place exploratory breakpoints or printk's into the kernel -+to find out where it is looping. The exploratory breakpoints can be -+entered either thru gdb or hard coded into the source. This is very -+handy if you do something like: -+ -+if () BREAKPOINT; -+ -+ -+There is a copy of an e-mail in the Documentation/i386/kgdb/ directory -+(debug-nmi.txt) which describes how to create an NMI on an ISA bus -+machine using a paper clip. I have a sophisticated version of this made -+by wiring a push button switch into a PC104/ISA bus adapter card. The -+adapter card nicely furnishes wire wrap pins for all the ISA bus -+signals. -+ -+When you are done debugging the kernel on the target machine it is a -+good idea to leave it in a running state. This makes reboots faster, -+bypassing the fsck. So do a gdb "continue" as the last gdb command if -+this is possible. To terminate gdb itself on the development machine -+and leave the target machine running, first clear all breakpoints and -+continue, then type ^Z to suspend gdb and then kill it with "kill %1" or -+something similar. -+ -+If gdbstub Does Not Work -+======================== -+ -+If it doesn't work, you will have to troubleshoot it. Do the easy -+things first like double checking your cabling and data rates. You -+might try some non-kernel based programs to see if the back-to-back -+connection works properly. Just something simple like cat /etc/hosts -+>/dev/ttyS0 on one machine and cat /dev/ttyS0 on the other will tell you -+if you can send data from one machine to the other. Make sure it works -+in both directions. There is no point in tearing out your hair in the -+kernel if the line doesn't work. -+ -+All of the real action takes place in the file -+/usr/src/linux/arch/i386/kernel/kgdb_stub.c. That is the code on the target -+machine that interacts with gdb on the development machine. In gdb you can -+turn on a debug switch with the following command: -+ -+ set remotedebug -+ -+This will print out the protocol messages that gdb is exchanging with -+the target machine. -+ -+Another place to look is /usr/src/arch/i386/lib/kgdb_serial.c. This is -+the code that talks to the serial port on the target side. There might -+be a problem there. In particular there is a section of this code that -+tests the UART which will tell you what UART you have if you define -+"PRNT" (just remove "_off" from the #define PRNT_off). To view this -+report you will need to boot the system without any beakpoints. This -+allows the kernel to run to the point where it calls kgdb to set up -+interrupts. At this time kgdb will test the UART and print out the type -+it finds. (You need to wait so that the printks are actually being -+printed. Early in the boot they are cached, waiting for the console to -+be enabled. Also, if kgdb is entered thru a breakpoint it is possible -+to cause a dead lock by calling printk when the console is locked. The -+stub thus avoids doing printks from breakpoints, especially in the -+serial code.) At this time, if the UART fails to do the expected thing, -+kgdb will print out (using printk) information on what failed. (These -+messages will be buried in all the other boot up messages. Look for -+lines that start with "gdb_hook_interrupt:". You may want to use dmesg -+once the system is up to view the log. If this fails or if you still -+don't connect, review your answers for the port address. Use: -+ -+setserial /dev/ttyS0 -+ -+to get the current port and IRQ information. This command will also -+tell you what the system found for the UART type. The stub recognizes -+the following UART types: -+ -+16450, 16550, and 16550A -+ -+If you are really desperate you can use printk debugging in the -+kgdbstub code in the target kernel until you get it working. In particular, -+there is a global variable in /usr/src/linux/arch/i386/kernel/kgdb_stub.c -+named "remote_debug". Compile your kernel with this set to 1, rather -+than 0 and the debug stub will print out lots of stuff as it does -+what it does. Likewise there are debug printks in the kgdb_serial.c -+code that can be turned on with simple changes in the macro defines. -+ -+ -+Debugging Loadable Modules -+========================== -+ -+This technique comes courtesy of Edouard Parmelan -+ -+ -+When you run gdb, enter the command -+ -+source gdbinit-modules -+ -+This will read in a file of gdb macros that was installed in your -+kernel source directory when kgdb was installed. This file implements -+the following commands: -+ -+mod-list -+ Lists the loaded modules in the form -+ -+mod-print-symbols -+ Prints all the symbols in the indicated module. -+ -+mod-add-symbols -+ Loads the symbols from the object file and associates them -+ with the indicated module. -+ -+After you have loaded the module that you want to debug, use the command -+mod-list to find the of your module. Then use that -+address in the mod-add-symbols command to load your module's symbols. -+From that point onward you can debug your module as if it were a part -+of the kernel. -+ -+The file gdbinit-modules also contains a command named mod-add-lis as -+an example of how to construct a command of your own to load your -+favorite module. The idea is to "can" the pathname of the module -+in the command so you don't have to type so much. -+ -+Threads -+======= -+ -+Each process in a target machine is seen as a gdb thread. gdb thread -+related commands (info threads, thread n) can be used. -+ -+ia-32 hardware breakpoints -+========================== -+ -+kgdb stub contains support for hardware breakpoints using debugging features -+of ia-32(x86) processors. These breakpoints do not need code modification. -+They use debugging registers. 4 hardware breakpoints are available in ia-32 -+processors. -+ -+Each hardware breakpoint can be of one of the following three types. -+ -+1. Execution breakpoint - An Execution breakpoint is triggered when code -+ at the breakpoint address is executed. -+ -+ As limited number of hardware breakpoints are available, it is -+ advisable to use software breakpoints ( break command ) instead -+ of execution hardware breakpoints, unless modification of code -+ is to be avoided. -+ -+2. Write breakpoint - A write breakpoint is triggered when memory -+ location at the breakpoint address is written. -+ -+ A write or can be placed for data of variable length. Length of -+ a write breakpoint indicates length of the datatype to be -+ watched. Length is 1 for 1 byte data , 2 for 2 byte data, 3 for -+ 4 byte data. -+ -+3. Access breakpoint - An access breakpoint is triggered when memory -+ location at the breakpoint address is either read or written. -+ -+ Access breakpoints also have lengths similar to write breakpoints. -+ -+IO breakpoints in ia-32 are not supported. -+ -+Since gdb stub at present does not use the protocol used by gdb for hardware -+breakpoints, hardware breakpoints are accessed through gdb macros. gdb macros -+for hardware breakpoints are described below. -+ -+hwebrk - Places an execution breakpoint -+ hwebrk breakpointno address -+hwwbrk - Places a write breakpoint -+ hwwbrk breakpointno length address -+hwabrk - Places an access breakpoint -+ hwabrk breakpointno length address -+hwrmbrk - Removes a breakpoint -+ hwrmbrk breakpointno -+exinfo - Tells whether a software or hardware breakpoint has occurred. -+ Prints number of the hardware breakpoint if a hardware breakpoint has -+ occurred. -+ -+Arguments required by these commands are as follows -+breakpointno - 0 to 3 -+length - 1 to 3 -+address - Memory location in hex digits ( without 0x ) e.g c015e9bc -+ -+SMP support -+========== -+ -+When a breakpoint occurs or user issues a break ( Ctrl + C ) to gdb -+client, all the processors are forced to enter the debugger. Current -+thread corresponds to the thread running on the processor where -+breakpoint occurred. Threads running on other processor(s) appear -+similar to other non-running threads in the 'info threads' output. -+Within the kgdb stub there is a structure "waiting_cpus" in which kgdb -+records the values of "current" and "regs" for each CPU other than the -+one that hit the breakpoint. "current" is a pointer to the task -+structure for the task that CPU is running, while "regs" points to the -+saved registers for the task. This structure can be examined with the -+gdb "p" command. -+ -+ia-32 hardware debugging registers on all processors are set to same -+values. Hence any hardware breakpoints may occur on any processor. -+ -+gdb troubleshooting -+=================== -+ -+1. gdb hangs -+Kill it. restart gdb. Connect to target machine. -+ -+2. gdb cannot connect to target machine (after killing a gdb and -+restarting another) If the target machine was not inside debugger when -+you killed gdb, gdb cannot connect because the target machine won't -+respond. In this case echo "Ctrl+C"(ASCII 3) to the serial line. -+e.g. echo -e "\003" > /dev/ttyS1 -+This forces that target machine into the debugger, after which you -+can connect. -+ -+3. gdb cannot connect even after echoing Ctrl+C into serial line -+Try changing serial line settings min to 1 and time to 0 -+e.g. stty min 1 time 0 < /dev/ttyS1 -+Try echoing again -+ -+Check serial line speed and set it to correct value if required -+e.g. stty ispeed 115200 ospeed 115200 < /dev/ttyS1 -+ -+EVENTS -+====== -+ -+Ever want to know the order of things happening? Which CPU did what and -+when? How did the spinlock get the way it is? Then events are for -+you. Events are defined by calls to an event collection interface and -+saved for later examination. In this case, kgdb events are saved by a -+very fast bit of code in kgdb which is fully SMP and interrupt protected -+and they are examined by using gdb to display them. Kgdb keeps only -+the last N events, where N must be a power of two and is defined at -+configure time. -+ -+ -+Events are signaled to kgdb by calling: -+ -+kgdb_ts(data0,data1) -+ -+For each call kgdb records each call in an array along with other info. -+Here is the array definition: -+ -+struct kgdb_and_then_struct { -+#ifdef CONFIG_SMP -+ int on_cpu; -+#endif -+ long long at_time; -+ int from_ln; -+ char * in_src; -+ void *from; -+ int with_if; -+ int data0; -+ int data1; -+}; -+ -+For SMP machines the CPU is recorded, for all machines the TSC is -+recorded (gets a time stamp) as well as the line number and source file -+the call was made from. The address of the (from), the "if" (interrupt -+flag) and the two data items are also recorded. The macro kgdb_ts casts -+the types to int, so you can put any 32-bit values here. There is a -+configure option to select the number of events you want to keep. A -+nice number might be 128, but you can keep up to 1024 if you want. The -+number must be a power of two. An "andthen" macro library is provided -+for gdb to help you look at these events. It is also possible to define -+a different structure for the event storage and cast the data to this -+structure. For example the following structure is defined in kgdb: -+ -+struct kgdb_and_then_struct2 { -+#ifdef CONFIG_SMP -+ int on_cpu; -+#endif -+ long long at_time; -+ int from_ln; -+ char * in_src; -+ void *from; -+ int with_if; -+ struct task_struct *t1; -+ struct task_struct *t2; -+}; -+ -+If you use this for display, the data elements will be displayed as -+pointers to task_struct entries. You may want to define your own -+structure to use in casting. You should only change the last two items -+and you must keep the structure size the same. Kgdb will handle these -+as 32-bit ints, but within that constraint you can define a structure to -+cast to any 32-bit quantity. This need only be available to gdb and is -+only used for casting in the display code. -+ -+Final Items -+=========== -+ -+I picked up this code from Amit S. Kale and enhanced it. -+ -+If you make some really cool modification to this stuff, or if you -+fix a bug, please let me know. -+ -+George Anzinger -+ -+ -+Amit S. Kale -+ -+ -+(First kgdb by David Grothe ) -+ -+(modified by Tigran Aivazian ) -+ Putting gdbstub into the kernel config menu. -+ -+(modified by Scott Foehner ) -+ Hooks for entering gdbstub at boot time. -+ -+(modified by Amit S. Kale ) -+ Threads, ia-32 hw debugging, mp support, console support, -+ nmi watchdog handling. -+ -+(modified by George Anzinger ) -+ Extended threads to include the idle threads. -+ Enhancements to allow breakpoint() at first C code. -+ Use of module_init() and __setup() to automate the configure. -+ Enhanced the cpu "collection" code to work in early bring-up. -+ Added ability to call functions from gdb -+ Print info thread stuff without going back to schedule() -+ Now collect the "other" cpus with an IPI/ NMI. ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/Documentation/i386/kgdb/loadmodule.sh 2003-07-19 17:04:02.000000000 -0700 -@@ -0,0 +1,78 @@ -+#/bin/sh -+# This script loads a module on a target machine and generates a gdb script. -+# source generated gdb script to load the module file at appropriate addresses -+# in gdb. -+# -+# Usage: -+# Loading the module on target machine and generating gdb script) -+# [foo]$ loadmodule.sh -+# -+# Loading the module file into gdb -+# (gdb) source -+# -+# Modify following variables according to your setup. -+# TESTMACHINE - Name of the target machine -+# GDBSCRIPTS - The directory where a gdb script will be generated -+# -+# Author: Amit S. Kale (akale@veritas.com). -+# -+# If you run into problems, please check files pointed to by following -+# variables. -+# ERRFILE - /tmp/.errs contains stderr output of insmod -+# MAPFILE - /tmp/.map contains stdout output of insmod -+# GDBSCRIPT - $GDBSCRIPTS/load gdb script. -+ -+TESTMACHINE=foo -+GDBSCRIPTS=/home/bar -+ -+if [ $# -lt 1 ] ; then { -+ echo Usage: $0 modulefile -+ exit -+} ; fi -+ -+MODULEFILE=$1 -+MODULEFILEBASENAME=`basename $1` -+ -+if [ $MODULEFILE = $MODULEFILEBASENAME ] ; then { -+ MODULEFILE=`pwd`/$MODULEFILE -+} fi -+ -+ERRFILE=/tmp/$MODULEFILEBASENAME.errs -+MAPFILE=/tmp/$MODULEFILEBASENAME.map -+GDBSCRIPT=$GDBSCRIPTS/load$MODULEFILEBASENAME -+ -+function findaddr() { -+ local ADDR=0x$(echo "$SEGMENTS" | \ -+ grep "$1" | sed 's/^[^ ]*[ ]*[^ ]*[ ]*//' | \ -+ sed 's/[ ]*[^ ]*$//') -+ echo $ADDR -+} -+ -+function checkerrs() { -+ if [ "`cat $ERRFILE`" != "" ] ; then { -+ cat $ERRFILE -+ exit -+ } fi -+} -+ -+#load the module -+echo Copying $MODULEFILE to $TESTMACHINE -+rcp $MODULEFILE root@${TESTMACHINE}: -+ -+echo Loading module $MODULEFILE -+rsh -l root $TESTMACHINE /sbin/insmod -m ./`basename $MODULEFILE` \ -+ > $MAPFILE 2> $ERRFILE -+checkerrs -+ -+SEGMENTS=`head -n 11 $MAPFILE | tail -n 10` -+TEXTADDR=$(findaddr "\\.text[^.]") -+LOADSTRING="add-symbol-file $MODULEFILE $TEXTADDR" -+SEGADDRS=`echo "$SEGMENTS" | awk '//{ -+ if ($1 != ".text" && $1 != ".this" && -+ $1 != ".kstrtab" && $1 != ".kmodtab") { -+ print " -s " $1 " 0x" $3 " " -+ } -+}'` -+LOADSTRING="$LOADSTRING $SEGADDRS" -+echo Generating script $GDBSCRIPT -+echo $LOADSTRING > $GDBSCRIPT ---- linux-2.6.0-test1/Documentation/magic-number.txt 2003-06-14 12:18:23.000000000 -0700 -+++ 25/Documentation/magic-number.txt 2003-07-19 17:03:49.000000000 -0700 -@@ -51,6 +51,13 @@ kernel before 2.6.x yet. - - 03 Nov 2002 - -+Updated the magic table to Linux 2.5.74. -+ -+ Fabian Frederick -+ -+ 09 Jul 2003 -+ -+ - Magic Name Number Structure File - =========================================================================== - PG_MAGIC 'P' pg_{read,write}_hdr include/linux/pg.h -@@ -62,10 +69,12 @@ AURORA_MAGIC 0x0A18 Aurora - HDLC_MAGIC 0x239e n_hdlc drivers/char/n_hdlc.c - APM_BIOS_MAGIC 0x4101 apm_user arch/i386/kernel/apm.c - CYCLADES_MAGIC 0x4359 cyclades_port include/linux/cyclades.h -+DB_MAGIC 0x4442 fc_info drivers/net/iph5526_novram.c -+DL_MAGIC 0x444d fc_info drivers/net/iph5526_novram.c - FASYNC_MAGIC 0x4601 fasync_struct include/linux/fs.h -+FF_MAGIC 0x4646 fc_info drivers/net/iph5526_novram.c - ISICOM_MAGIC 0x4d54 isi_port include/linux/isicom.h --PTY_MAGIC 0x5001 (none at the moment) -- drivers/char/pty.c -+PTY_MAGIC 0x5001 drivers/char/pty.c - PPP_MAGIC 0x5002 ppp include/linux/if_pppvar.h - SERIAL_MAGIC 0x5301 async_struct include/linux/serial.h - SSTATE_MAGIC 0x5302 serial_state include/linux/serial.h -@@ -81,9 +90,9 @@ TTY_DRIVER_MAGIC 0x5402 tty_dr - MGSLPC_MAGIC 0x5402 mgslpc_info drivers/char/pcmcia/synclink_cs.c - TTY_LDISC_MAGIC 0x5403 tty_ldisc include/linux/tty_ldisc.h - USB_SERIAL_MAGIC 0x6702 usb_serial drivers/usb/serial/usb-serial.h -+FULL_DUPLEX_MAGIC 0x6969 drivers/net/tulip/de2104x.c - USB_BLUETOOTH_MAGIC 0x6d02 usb_bluetooth drivers/usb/class/bluetty.c --RFCOMM_TTY_MAGIC 0x6d02 (note at the moment) -- net/bluetooth/rfcomm/tty.c -+RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c - USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h - CG_MAGIC 0x00090255 ufs_cylinder_group include/linux/ufs_fs.h - A2232_MAGIC 0x000a2232 gs_port drivers/char/ser_a2232.h -@@ -91,6 +100,7 @@ SOLARIS_SOCKET_MAGIC 0x000ADDED sol_so - RPORT_MAGIC 0x00525001 r_port drivers/char/rocket_int.h - LSEMAGIC 0x05091998 lse drivers/fc4/fc.c - GDTIOCTL_MAGIC 0x06030f07 gdth_iowr_str drivers/scsi/gdth_ioctl.h -+RIEBL_MAGIC 0x09051990 drivers/net/atarilance.c - RIO_MAGIC 0x12345678 gs_port drivers/char/rio/rio_linux.c - SX_MAGIC 0x12345678 gs_port drivers/char/sx.h - NBD_REQUEST_MAGIC 0x12560953 nbd_request include/linux/nbd.h -@@ -120,6 +130,7 @@ SAVEKMSG_MAGIC1 0x53415645 savekm - GDA_MAGIC 0x58464552 gda include/asm-mips64/sn/gda.h - RED_MAGIC1 0x5a2cf071 (any) mm/slab.c - STL_PORTMAGIC 0x5a7182c9 stlport include/linux/stallion.h -+EEPROM_MAGIC_VALUE 0X5ab478d2 lanai_dev drivers/atm/lanai.c - HDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state include/linux/hdlcdrv.h - EPCA_MAGIC 0x5c6df104 channel include/linux/epca.h - PCXX_MAGIC 0x5c6df104 channel drivers/char/pcxx.h -@@ -127,9 +138,11 @@ KV_MAGIC 0x5f4b565f kernel - I810_STATE_MAGIC 0x63657373 i810_state sound/oss/i810_audio.c - TRIDENT_STATE_MAGIC 0x63657373 trient_state sound/oss/trident.c - M3_CARD_MAGIC 0x646e6f50 m3_card sound/oss/maestro3.c -+FW_HEADER_MAGIC 0x65726F66 fw_header drivers/atm/fore200e.h - SLOT_MAGIC 0x67267321 slot drivers/hotplug/cpqphp.h - SLOT_MAGIC 0x67267322 slot drivers/hotplug/acpiphp.h - LO_MAGIC 0x68797548 nbd_device include/linux/nbd.h -+OPROFILE_MAGIC 0x6f70726f super_block drivers/oprofile/oprofilefs.h - M3_STATE_MAGIC 0x734d724d m3_state sound/oss/maestro3.c - STL_PANELMAGIC 0x7ef621a1 stlpanel include/linux/stallion.h - VMALLOC_MAGIC 0x87654320 snd_alloc_track sound/core/memory.c -@@ -137,11 +150,15 @@ KMALLOC_MAGIC 0x87654321 snd_al - PWC_MAGIC 0x89DC10AB pwc_device drivers/usb/media/pwc.h - NBD_REPLY_MAGIC 0x96744668 nbd_reply include/linux/nbd.h - STL_BOARDMAGIC 0xa2267f52 stlbrd include/linux/stallion.h -+ENI155_MAGIC 0xa54b872d midway_eprom drivers/atm/eni.h - SCI_MAGIC 0xbabeface gs_port drivers/char/sh-sci.h - CODA_MAGIC 0xC0DAC0DA coda_file_info include/linux/coda_fs_i.h -+DPMEM_MAGIC 0xc0ffee11 gdt_pci_sram drivers/scsi/gdth.h - STLI_PORTMAGIC 0xe671c7a1 stliport include/linux/istallion.h - YAM_MAGIC 0xF10A7654 yam_port drivers/net/hamradio/yam.c - CCB_MAGIC 0xf2691ad2 ccb drivers/scsi/ncr53c8xx.c -+QUEUE_MAGIC_FREE 0xf7e1c9a3 queue_entry drivers/scsi/arm/queue.c -+QUEUE_MAGIC_USED 0xf7e1cc33 queue_entry drivers/scsi/arm/queue.c - HTB_CMAGIC 0xFEFAFEF1 htb_class net/sched/sch_htb.c - NMI_MAGIC 0x48414d4d455201 nmi_s include/asm-mips64/sn/nmi.h - ---- linux-2.6.0-test1/Documentation/networking/vortex.txt 2003-06-14 12:18:00.000000000 -0700 -+++ 25/Documentation/networking/vortex.txt 2003-07-19 17:05:08.000000000 -0700 -@@ -216,19 +216,6 @@ watchdog=N - to increase this value on LANs which have very high collision rates. - The default value is 5000 (5.0 seconds). - --enable_wol=N1,N2,N3,... -- -- Enable Wake-on-LAN support for the relevant interface. Donald -- Becker's `ether-wake' application may be used to wake suspended -- machines. -- -- Also enables the NIC's power management support. -- --global_enable_wol=N -- -- Sets enable_wol mode for all 3c59x NICs in the machine. Entries in -- the `enable_wol' array above will override any setting of this. -- - Media selection - --------------- - ---- linux-2.6.0-test1/Documentation/pnp.txt 2003-06-14 12:17:58.000000000 -0700 -+++ 25/Documentation/pnp.txt 2003-07-19 17:03:49.000000000 -0700 -@@ -22,7 +22,7 @@ user interface is integrated into driver - In addition to the standard driverfs file the following are created in each - device's directory: - id - displays a list of support EISA IDs --possible - displays possible resource configurations -+options - displays possible resource configurations - resources - displays currently allocated resources and allows resource changes - - -activating a device -@@ -60,7 +60,7 @@ DISABLED - - Notice the string "DISABLED". THis means the device is not active. - - 3.) check the device's possible configurations (optional) --# cat possible -+# cat options - Dependent: 01 - Priority acceptable - port 0x3f0-0x3f0, align 0x7, size 0x6, 16-bit address decoding - port 0x3f7-0x3f7, align 0x0, size 0x1, 16-bit address decoding ---- linux-2.6.0-test1/drivers/acorn/block/fd1772.c 2003-06-14 12:18:06.000000000 -0700 -+++ 25/drivers/acorn/block/fd1772.c 2003-07-19 17:03:49.000000000 -0700 -@@ -152,8 +152,6 @@ - #include - - --#include -- - /* Note: FD_MAX_UNITS could be redefined to 2 for the Atari (with - * little additional rework in this file). But I'm not yet sure if - * some other code depends on the number of floppies... (It is defined ---- linux-2.6.0-test1/drivers/acorn/block/mfmhd.c 2003-06-14 12:18:01.000000000 -0700 -+++ 25/drivers/acorn/block/mfmhd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -111,7 +111,6 @@ - #include - #include - #include --#include - #include - - #include ---- linux-2.6.0-test1/drivers/acpi/executer/exutils.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/acpi/executer/exutils.c 2003-07-19 17:03:49.000000000 -0700 -@@ -290,7 +290,7 @@ acpi_ex_digits_needed ( - * acpi_integer is unsigned, so we don't worry about a '-' - */ - if ((current_value = value) == 0) { -- return_VALUE (1); -+ return_VALUE (1); - } - - num_digits = 0; ---- linux-2.6.0-test1/drivers/acpi/hardware/hwregs.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/acpi/hardware/hwregs.c 2003-07-19 17:03:49.000000000 -0700 -@@ -357,9 +357,9 @@ acpi_set_register ( - - /* - * Decode the Register ID -- * Register id = Register block id | bit id -+ * Register ID = [Register block ID] | [bit ID] - * -- * Check bit id to fine locate Register offset. -+ * Check bit ID to fine locate Register offset. - * Check Mask to determine Register offset, and then read-write. - */ - switch (bit_reg_info->parent_register) { -@@ -367,9 +367,9 @@ acpi_set_register ( - - /* - * Status Registers are different from the rest. Clear by -- * writing 1, writing 0 has no effect. So, the only relevant -+ * writing 1, and writing 0 has no effect. So, the only relevant - * information is the single bit we're interested in, all others should -- * be written as 0 so they will be left unchanged -+ * be written as 0 so they will be left unchanged. - */ - value = ACPI_REGISTER_PREPARE_BITS (value, - bit_reg_info->bit_position, bit_reg_info->access_bit_mask); -@@ -394,17 +394,17 @@ acpi_set_register ( - case ACPI_REGISTER_PM1_CONTROL: - - /* -- * Read the PM1 Control register. -+ * Write the PM1 Control register. - * Note that at this level, the fact that there are actually TWO -- * registers (A and B - and that B may not exist) is abstracted. -+ * registers (A and B - and B may not exist) is abstracted. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", register_value)); - - ACPI_REGISTER_INSERT_VALUE (register_value, bit_reg_info->bit_position, - bit_reg_info->access_bit_mask, value); - -- status = acpi_hw_register_write (ACPI_MTX_DO_NOT_LOCK, register_id, -- (u16) register_value); -+ status = acpi_hw_register_write (ACPI_MTX_DO_NOT_LOCK, -+ ACPI_REGISTER_PM1_CONTROL, (u16) register_value); - break; - - -@@ -724,7 +724,7 @@ acpi_hw_low_level_read ( - - /* - * Three address spaces supported: -- * Memory, Io, or PCI config. -+ * Memory, IO, or PCI_Config. - */ - switch (reg->address_space_id) { - case ACPI_ADR_SPACE_SYSTEM_MEMORY: -@@ -808,9 +808,10 @@ acpi_hw_low_level_write ( - (!reg->address)) { - return (AE_OK); - } -+ - /* - * Three address spaces supported: -- * Memory, Io, or PCI config. -+ * Memory, IO, or PCI_Config. - */ - switch (reg->address_space_id) { - case ACPI_ADR_SPACE_SYSTEM_MEMORY: ---- linux-2.6.0-test1/drivers/acpi/osl.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/acpi/osl.c 2003-07-19 17:03:49.000000000 -0700 -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -291,11 +292,14 @@ acpi_os_sleep(u32 sec, u32 ms) - void - acpi_os_stall(u32 us) - { -- if (us > 10000) { -- mdelay(us / 1000); -- } -- else { -- udelay(us); -+ while (us) { -+ u32 delay = 1000; -+ -+ if (delay > us) -+ delay = us; -+ udelay(delay); -+ touch_nmi_watchdog(); -+ us -= delay; - } - } - ---- linux-2.6.0-test1/drivers/acpi/processor.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/acpi/processor.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1351,7 +1351,7 @@ static int acpi_processor_throttling_ope - PDE(inode)->data); - } - --static int -+static ssize_t - acpi_processor_write_throttling ( - struct file *file, - const char *buffer, -@@ -1414,7 +1414,7 @@ static int acpi_processor_limit_open_fs( - PDE(inode)->data); - } - --static int -+static ssize_t - acpi_processor_write_limit ( - struct file *file, - const char *buffer, ---- linux-2.6.0-test1/drivers/acpi/tables.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/acpi/tables.c 2003-07-19 17:03:49.000000000 -0700 -@@ -33,6 +33,7 @@ - #include - #include - #include -+#include - - #define PREFIX "ACPI: " - -@@ -61,16 +62,14 @@ static char *acpi_table_signatures[ACPI_ - - /* System Description Table (RSDT/XSDT) */ - struct acpi_table_sdt { -- unsigned long pa; /* Physical Address */ -- unsigned long count; /* Table count */ -- struct { -- unsigned long pa; -- enum acpi_table_id id; -- unsigned long size; -- } entry[ACPI_MAX_TABLES]; -+ unsigned long pa; -+ enum acpi_table_id id; -+ unsigned long size; - } __attribute__ ((packed)); - --static struct acpi_table_sdt sdt; -+static unsigned long sdt_pa; /* Physical Address */ -+static unsigned long sdt_count; /* Table count */ -+static struct acpi_table_sdt *sdt_entry; - - void - acpi_table_print ( -@@ -236,11 +235,11 @@ acpi_get_table_header_early ( - - /* Locate the table. */ - -- for (i = 0; i < sdt.count; i++) { -- if (sdt.entry[i].id != temp_id) -+ for (i = 0; i < sdt_count; i++) { -+ if (sdt_entry[i].id != temp_id) - continue; - *header = (void *) -- __acpi_map_table(sdt.entry[i].pa, sdt.entry[i].size); -+ __acpi_map_table(sdt_entry[i].pa, sdt_entry[i].size); - if (!*header) { - printk(KERN_WARNING PREFIX "Unable to map %s\n", - acpi_table_signatures[temp_id]); -@@ -289,11 +288,11 @@ acpi_table_parse_madt_family ( - - /* Locate the MADT (if exists). There should only be one. */ - -- for (i = 0; i < sdt.count; i++) { -- if (sdt.entry[i].id != id) -+ for (i = 0; i < sdt_count; i++) { -+ if (sdt_entry[i].id != id) - continue; - madt = (void *) -- __acpi_map_table(sdt.entry[i].pa, sdt.entry[i].size); -+ __acpi_map_table(sdt_entry[i].pa, sdt_entry[i].size); - if (!madt) { - printk(KERN_WARNING PREFIX "Unable to map %s\n", - acpi_table_signatures[id]); -@@ -308,7 +307,7 @@ acpi_table_parse_madt_family ( - return -ENODEV; - } - -- madt_end = (unsigned long) madt + sdt.entry[i].size; -+ madt_end = (unsigned long) madt + sdt_entry[i].size; - - /* Parse all entries looking for a match. */ - -@@ -349,10 +348,10 @@ acpi_table_parse ( - if (!handler) - return -EINVAL; - -- for (i = 0; i < sdt.count; i++) { -- if (sdt.entry[i].id != id) -+ for (i = 0; i < sdt_count; i++) { -+ if (sdt_entry[i].id != id) - continue; -- handler(sdt.entry[i].pa, sdt.entry[i].size); -+ handler(sdt_entry[i].pa, sdt_entry[i].size); - count++; - } - -@@ -377,11 +376,11 @@ acpi_table_get_sdt ( - - struct acpi_table_xsdt *mapped_xsdt = NULL; - -- sdt.pa = ((struct acpi20_table_rsdp*)rsdp)->xsdt_address; -+ sdt_pa = ((struct acpi20_table_rsdp*)rsdp)->xsdt_address; - - /* map in just the header */ - header = (struct acpi_table_header *) -- __acpi_map_table(sdt.pa, sizeof(struct acpi_table_header)); -+ __acpi_map_table(sdt_pa, sizeof(struct acpi_table_header)); - - if (!header) { - printk(KERN_WARNING PREFIX "Unable to map XSDT header\n"); -@@ -390,7 +389,7 @@ acpi_table_get_sdt ( - - /* remap in the entire table before processing */ - mapped_xsdt = (struct acpi_table_xsdt *) -- __acpi_map_table(sdt.pa, header->length); -+ __acpi_map_table(sdt_pa, header->length); - if (!mapped_xsdt) { - printk(KERN_WARNING PREFIX "Unable to map XSDT\n"); - return -ENODEV; -@@ -407,15 +406,21 @@ acpi_table_get_sdt ( - return -ENODEV; - } - -- sdt.count = (header->length - sizeof(struct acpi_table_header)) >> 3; -- if (sdt.count > ACPI_MAX_TABLES) { -+ sdt_count = (header->length - sizeof(struct acpi_table_header)) >> 3; -+ if (sdt_count > ACPI_MAX_TABLES) { - printk(KERN_WARNING PREFIX "Truncated %lu XSDT entries\n", -- (sdt.count - ACPI_MAX_TABLES)); -- sdt.count = ACPI_MAX_TABLES; -+ (sdt_count - ACPI_MAX_TABLES)); -+ sdt_count = ACPI_MAX_TABLES; - } - -- for (i = 0; i < sdt.count; i++) -- sdt.entry[i].pa = (unsigned long) mapped_xsdt->entry[i]; -+ sdt_entry = alloc_bootmem(sdt_count * sizeof(struct acpi_table_sdt)); -+ if (!sdt_entry) { -+ printk(KERN_ERR "ACPI: Could not allocate mem for SDT entries!\n"); -+ return -ENOMEM; -+ } -+ -+ for (i = 0; i < sdt_count; i++) -+ sdt_entry[i].pa = (unsigned long) mapped_xsdt->entry[i]; - } - - /* Then check RSDT */ -@@ -424,11 +429,11 @@ acpi_table_get_sdt ( - - struct acpi_table_rsdt *mapped_rsdt = NULL; - -- sdt.pa = rsdp->rsdt_address; -+ sdt_pa = rsdp->rsdt_address; - - /* map in just the header */ - header = (struct acpi_table_header *) -- __acpi_map_table(sdt.pa, sizeof(struct acpi_table_header)); -+ __acpi_map_table(sdt_pa, sizeof(struct acpi_table_header)); - if (!header) { - printk(KERN_WARNING PREFIX "Unable to map RSDT header\n"); - return -ENODEV; -@@ -436,7 +441,7 @@ acpi_table_get_sdt ( - - /* remap in the entire table before processing */ - mapped_rsdt = (struct acpi_table_rsdt *) -- __acpi_map_table(sdt.pa, header->length); -+ __acpi_map_table(sdt_pa, header->length); - if (!mapped_rsdt) { - printk(KERN_WARNING PREFIX "Unable to map RSDT\n"); - return -ENODEV; -@@ -453,15 +458,21 @@ acpi_table_get_sdt ( - return -ENODEV; - } - -- sdt.count = (header->length - sizeof(struct acpi_table_header)) >> 2; -- if (sdt.count > ACPI_MAX_TABLES) { -+ sdt_count = (header->length - sizeof(struct acpi_table_header)) >> 2; -+ if (sdt_count > ACPI_MAX_TABLES) { - printk(KERN_WARNING PREFIX "Truncated %lu RSDT entries\n", -- (sdt.count - ACPI_TABLE_COUNT)); -- sdt.count = ACPI_MAX_TABLES; -+ (sdt_count - ACPI_MAX_TABLES)); -+ sdt_count = ACPI_MAX_TABLES; - } - -- for (i = 0; i < sdt.count; i++) -- sdt.entry[i].pa = (unsigned long) mapped_rsdt->entry[i]; -+ sdt_entry = alloc_bootmem(sdt_count * sizeof(struct acpi_table_sdt)); -+ if (!sdt_entry) { -+ printk(KERN_ERR "ACPI: Could not allocate mem for SDT entries!\n"); -+ return -ENOMEM; -+ } -+ -+ for (i = 0; i < sdt_count; i++) -+ sdt_entry[i].pa = (unsigned long) mapped_rsdt->entry[i]; - } - - else { -@@ -469,38 +480,38 @@ acpi_table_get_sdt ( - return -ENODEV; - } - -- acpi_table_print(header, sdt.pa); -+ acpi_table_print(header, sdt_pa); - -- for (i = 0; i < sdt.count; i++) { -+ for (i = 0; i < sdt_count; i++) { - - /* map in just the header */ - header = (struct acpi_table_header *) -- __acpi_map_table(sdt.entry[i].pa, -+ __acpi_map_table(sdt_entry[i].pa, - sizeof(struct acpi_table_header)); - if (!header) - continue; - - /* remap in the entire table before processing */ - header = (struct acpi_table_header *) -- __acpi_map_table(sdt.entry[i].pa, -+ __acpi_map_table(sdt_entry[i].pa, - header->length); - if (!header) - continue; - -- acpi_table_print(header, sdt.entry[i].pa); -+ acpi_table_print(header, sdt_entry[i].pa); - - if (acpi_table_compute_checksum(header, header->length)) { - printk(KERN_WARNING " >>> ERROR: Invalid checksum\n"); - continue; - } - -- sdt.entry[i].size = header->length; -+ sdt_entry[i].size = header->length; - - for (id = 0; id < ACPI_TABLE_COUNT; id++) { - if (!strncmp((char *) &header->signature, - acpi_table_signatures[id], - sizeof(header->signature))) { -- sdt.entry[i].id = id; -+ sdt_entry[i].id = id; - } - } - } -@@ -525,8 +536,6 @@ acpi_table_init (void) - unsigned long rsdp_phys = 0; - int result = 0; - -- memset(&sdt, 0, sizeof(struct acpi_table_sdt)); -- - /* Locate and map the Root System Description Table (RSDP) */ - - rsdp_phys = acpi_find_rsdp(); ---- linux-2.6.0-test1/drivers/acpi/tables/tbconvrt.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/acpi/tables/tbconvrt.c 2003-07-19 17:03:49.000000000 -0700 -@@ -75,14 +75,10 @@ acpi_tb_get_table_count ( - ACPI_FUNCTION_ENTRY (); - - --#if ACPI_MACHINE_WIDTH != 64 -- - if (RSDP->revision < 2) { - pointer_size = sizeof (u32); - } -- else --#endif -- { -+ else { - pointer_size = sizeof (u64); - } - ---- linux-2.6.0-test1/drivers/acpi/tables/tbget.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/acpi/tables/tbget.c 2003-07-19 17:03:49.000000000 -0700 -@@ -145,7 +145,7 @@ acpi_tb_get_table_header ( - /* Create a logical address for the physical pointer*/ - - status = acpi_os_map_memory (address->pointer.physical, sizeof (struct acpi_table_header), -- (void **) &header); -+ (void *) &header); - if (ACPI_FAILURE (status)) { - ACPI_REPORT_ERROR (("Could not map memory at %8.8X%8.8X for length %X\n", - ACPI_HIDWORD (address->pointer.physical), -@@ -361,7 +361,7 @@ acpi_tb_get_this_table ( - * into our address space. - */ - status = acpi_os_map_memory (address->pointer.physical, (acpi_size) header->length, -- (void **) &full_table); -+ (void *) &full_table); - if (ACPI_FAILURE (status)) { - ACPI_REPORT_ERROR (("Could not map memory for table [%4.4s] at %8.8X%8.8X for length %X\n", - header->signature, ---- linux-2.6.0-test1/drivers/acpi/tables/tbinstal.c 2003-06-14 12:18:03.000000000 -0700 -+++ 25/drivers/acpi/tables/tbinstal.c 2003-07-19 17:03:49.000000000 -0700 -@@ -271,22 +271,40 @@ acpi_tb_init_table_descriptor ( - if (list_head->next) { - return_ACPI_STATUS (AE_ALREADY_EXISTS); - } -- } - -- /* -- * Link the new table in to the list of tables of this type. -- * Just insert at the start of the list, order unimportant. -- * -- * table_desc->Prev is already NULL from calloc() -- */ -- table_desc->next = list_head->next; -- list_head->next = table_desc; -+ table_desc->next = list_head->next; -+ list_head->next = table_desc; - -- if (table_desc->next) { -- table_desc->next->prev = table_desc; -+ if (table_desc->next) { -+ table_desc->next->prev = table_desc; -+ } -+ -+ list_head->count++; - } -+ else { -+ /* -+ * Link the new table in to the list of tables of this type. -+ * Insert at the end of the list, order IS IMPORTANT. -+ * -+ * table_desc->Prev & Next are already NULL from calloc() -+ */ -+ list_head->count++; -+ -+ if (!list_head->next) { -+ list_head->next = table_desc; -+ } -+ else { -+ table_desc->next = list_head->next; - -- list_head->count++; -+ while (table_desc->next->next) { -+ table_desc->next = table_desc->next->next; -+ } -+ -+ table_desc->next->next = table_desc; -+ table_desc->prev = table_desc->next; -+ table_desc->next = NULL; -+ } -+ } - - /* Finish initialization of the table descriptor */ - ---- linux-2.6.0-test1/drivers/acpi/tables/tbrsdt.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/acpi/tables/tbrsdt.c 2003-07-19 17:03:49.000000000 -0700 -@@ -85,7 +85,7 @@ acpi_tb_verify_rsdp ( - * Obtain access to the RSDP structure - */ - status = acpi_os_map_memory (address->pointer.physical, sizeof (struct rsdp_descriptor), -- (void **) &rsdp); -+ (void *) &rsdp); - if (ACPI_FAILURE (status)) { - return_ACPI_STATUS (status); - } ---- linux-2.6.0-test1/drivers/acpi/tables/tbxfroot.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/acpi/tables/tbxfroot.c 2003-07-19 17:03:49.000000000 -0700 -@@ -179,7 +179,7 @@ acpi_get_firmware_table ( - - if ((flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) { - status = acpi_os_map_memory (rsdp_address.pointer.physical, sizeof (struct rsdp_descriptor), -- (void **) &acpi_gbl_RSDP); -+ (void *) &acpi_gbl_RSDP); - if (ACPI_FAILURE (status)) { - return_ACPI_STATUS (status); - } -@@ -423,7 +423,7 @@ acpi_tb_find_rsdp ( - * 1) Search EBDA (low memory) paragraphs - */ - status = acpi_os_map_memory ((u64) ACPI_LO_RSDP_WINDOW_BASE, ACPI_LO_RSDP_WINDOW_SIZE, -- (void **) &table_ptr); -+ (void *) &table_ptr); - if (ACPI_FAILURE (status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n", - ACPI_LO_RSDP_WINDOW_BASE, ACPI_LO_RSDP_WINDOW_SIZE)); -@@ -447,7 +447,7 @@ acpi_tb_find_rsdp ( - * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h - */ - status = acpi_os_map_memory ((u64) ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE, -- (void **) &table_ptr); -+ (void *) &table_ptr); - if (ACPI_FAILURE (status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n", - ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE)); ---- linux-2.6.0-test1/drivers/acpi/thermal.c 2003-06-14 12:18:32.000000000 -0700 -+++ 25/drivers/acpi/thermal.c 2003-07-19 17:03:49.000000000 -0700 -@@ -84,11 +84,11 @@ static int acpi_thermal_remove (struct a - static int acpi_thermal_state_open_fs(struct inode *inode, struct file *file); - static int acpi_thermal_temp_open_fs(struct inode *inode, struct file *file); - static int acpi_thermal_trip_open_fs(struct inode *inode, struct file *file); --static int acpi_thermal_write_trip_points (struct file*,const char *,size_t,loff_t *); -+static ssize_t acpi_thermal_write_trip_points (struct file*,const char *,size_t,loff_t *); - static int acpi_thermal_cooling_open_fs(struct inode *inode, struct file *file); --static int acpi_thermal_write_cooling_mode (struct file*,const char *,size_t,loff_t *); -+static ssize_t acpi_thermal_write_cooling_mode (struct file*,const char *,size_t,loff_t *); - static int acpi_thermal_polling_open_fs(struct inode *inode, struct file *file); --static int acpi_thermal_write_polling(struct file*,const char *,size_t,loff_t *); -+static ssize_t acpi_thermal_write_polling(struct file*,const char *,size_t,loff_t *); - - static struct acpi_driver acpi_thermal_driver = { - .name = ACPI_THERMAL_DRIVER_NAME, -@@ -881,7 +881,7 @@ static int acpi_thermal_trip_open_fs(str - return single_open(file, acpi_thermal_trip_seq_show, PDE(inode)->data); - } - --static int -+static ssize_t - acpi_thermal_write_trip_points ( - struct file *file, - const char *buffer, -@@ -950,7 +950,7 @@ static int acpi_thermal_cooling_open_fs( - PDE(inode)->data); - } - --static int -+static ssize_t - acpi_thermal_write_cooling_mode ( - struct file *file, - const char *buffer, -@@ -1011,7 +1011,7 @@ static int acpi_thermal_polling_open_fs( - PDE(inode)->data); - } - --static int -+static ssize_t - acpi_thermal_write_polling ( - struct file *file, - const char *buffer, ---- linux-2.6.0-test1/drivers/acpi/utilities/utglobal.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/acpi/utilities/utglobal.c 2003-07-19 17:03:49.000000000 -0700 -@@ -307,9 +307,9 @@ struct acpi_table_support acpi - /*********** Name, Signature, Global typed pointer Signature size, Type How many allowed?, Contains valid AML? */ - - /* RSDP 0 */ {RSDP_NAME, RSDP_SIG, NULL, sizeof (RSDP_SIG)-1, ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE}, -- /* DSDT 1 */ {DSDT_SIG, DSDT_SIG, (void **) &acpi_gbl_DSDT, sizeof (DSDT_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE | ACPI_TABLE_EXECUTABLE}, -- /* FADT 2 */ {FADT_SIG, FADT_SIG, (void **) &acpi_gbl_FADT, sizeof (FADT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_SINGLE}, -- /* FACS 3 */ {FACS_SIG, FACS_SIG, (void **) &acpi_gbl_FACS, sizeof (FACS_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE}, -+ /* DSDT 1 */ {DSDT_SIG, DSDT_SIG, (void *) &acpi_gbl_DSDT, sizeof (DSDT_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE | ACPI_TABLE_EXECUTABLE}, -+ /* FADT 2 */ {FADT_SIG, FADT_SIG, (void *) &acpi_gbl_FADT, sizeof (FADT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_SINGLE}, -+ /* FACS 3 */ {FACS_SIG, FACS_SIG, (void *) &acpi_gbl_FACS, sizeof (FACS_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE}, - /* PSDT 4 */ {PSDT_SIG, PSDT_SIG, NULL, sizeof (PSDT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE}, - /* SSDT 5 */ {SSDT_SIG, SSDT_SIG, NULL, sizeof (SSDT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE}, - /* XSDT 6 */ {XSDT_SIG, XSDT_SIG, NULL, sizeof (RSDT_SIG)-1, ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE}, ---- linux-2.6.0-test1/drivers/atm/atmtcp.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/atm/atmtcp.c 2003-07-19 17:03:49.000000000 -0700 -@@ -66,7 +66,7 @@ static int atmtcp_send_control(struct at - *(struct atm_vcc **) &new_msg->vcc = vcc; - old_test = test_bit(flag,&vcc->flags); - out_vcc->push(out_vcc,skb); -- add_wait_queue(&vcc->sleep,&wait); -+ add_wait_queue(vcc->sk->sk_sleep, &wait); - while (test_bit(flag,&vcc->flags) == old_test) { - mb(); - out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL; -@@ -78,7 +78,7 @@ static int atmtcp_send_control(struct at - schedule(); - } - current->state = TASK_RUNNING; -- remove_wait_queue(&vcc->sleep,&wait); -+ remove_wait_queue(vcc->sk->sk_sleep, &wait); - return error; - } - -@@ -90,7 +90,7 @@ static int atmtcp_recv_control(const str - vcc->vpi = msg->addr.sap_addr.vpi; - vcc->vci = msg->addr.sap_addr.vci; - vcc->qos = msg->qos; -- vcc->reply = msg->result; -+ vcc->sk->sk_err = -msg->result; - switch (msg->type) { - case ATMTCP_CTRL_OPEN: - change_bit(ATM_VF_READY,&vcc->flags); -@@ -103,7 +103,7 @@ static int atmtcp_recv_control(const str - msg->type); - return -EINVAL; - } -- wake_up(&vcc->sleep); -+ wake_up(vcc->sk->sk_sleep); - return 0; - } - -@@ -134,7 +134,7 @@ static int atmtcp_v_open(struct atm_vcc - clear_bit(ATM_VF_READY,&vcc->flags); /* just in case ... */ - error = atmtcp_send_control(vcc,ATMTCP_CTRL_OPEN,&msg,ATM_VF_READY); - if (error) return error; -- return vcc->reply; -+ return -vcc->sk->sk_err; - } - - -@@ -257,7 +257,7 @@ static void atmtcp_c_close(struct atm_vc - walk = atm_sk(s); - if (walk->dev != atmtcp_dev) - continue; -- wake_up(&walk->sleep); -+ wake_up(walk->sk->sk_sleep); - } - read_unlock(&vcc_sklist_lock); - } ---- linux-2.6.0-test1/drivers/base/node.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/base/node.c 2003-07-19 17:04:07.000000000 -0700 -@@ -7,6 +7,7 @@ - #include - #include - #include -+#include - #include - - static struct sysdev_class node_class = { -@@ -17,7 +18,17 @@ static struct sysdev_class node_class = - static ssize_t node_read_cpumap(struct sys_device * dev, char * buf) - { - struct node *node_dev = to_node(dev); -- return sprintf(buf,"%lx\n",node_dev->cpumap); -+ cpumask_t tmp = node_dev->cpumap; -+ int k, len = 0; -+ -+ for (k = 0; k < sizeof(cpumask_t)/sizeof(u16); ++k) { -+ int j = sprintf(buf, "%04hx", (u16)cpus_coerce(tmp)); -+ len += j; -+ buf += j; -+ cpus_shift_right(tmp, tmp, 16); -+ } -+ len += sprintf(buf, "\n"); -+ return len; - } - static SYSDEV_ATTR(cpumap,S_IRUGO,node_read_cpumap,NULL); - ---- linux-2.6.0-test1/drivers/block/acsi.c 2003-06-14 12:18:51.000000000 -0700 -+++ 25/drivers/block/acsi.c 2003-07-19 17:03:49.000000000 -0700 -@@ -55,7 +55,6 @@ - #include - #include - #include --#include - #include - #include - #include /* for SCSI_IOCTL_GET_IDLUN */ ---- linux-2.6.0-test1/drivers/block/amiflop.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/block/amiflop.c 2003-07-19 17:03:49.000000000 -0700 -@@ -79,7 +79,6 @@ - #include - #include - #include --#include - - #undef DEBUG /* print _LOTS_ of infos */ - ---- linux-2.6.0-test1/drivers/block/as-iosched.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/block/as-iosched.c 2003-07-19 17:03:49.000000000 -0700 -@@ -12,7 +12,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -834,10 +833,11 @@ static void as_update_iohist(struct as_i - + 2*1024*64); - - aic->seek_samples += 256; -- aic->seek_total += 256*seek_dist; -+ aic->seek_total += (u64)256*seek_dist; - if (aic->seek_samples) { -- aic->seek_mean = aic->seek_total + 128; -- sector_div(aic->seek_mean, aic->seek_samples); -+ u64 total = aic->seek_total + (aic->seek_samples>>1); -+ do_div(total, aic->seek_samples); -+ aic->seek_mean = (sector_t)total; - } - aic->seek_samples = (aic->seek_samples>>1) - + (aic->seek_samples>>2); -@@ -1306,6 +1306,15 @@ static void as_add_request(struct as_dat - as_update_arq(ad, arq); /* keep state machine up to date */ - } - -+/* -+ * FIXME: HACK for AS requeue problems -+ */ -+static void as_requeue_request(request_queue_t *q, struct request *rq) -+{ -+ elv_completed_request(q, rq); -+ __elv_add_request(q, rq, 0, 0); -+} -+ - static void - as_insert_request(request_queue_t *q, struct request *rq, - struct list_head *insert_here) -@@ -1821,6 +1830,7 @@ elevator_t iosched_as = { - .elevator_next_req_fn = as_next_request, - .elevator_add_req_fn = as_insert_request, - .elevator_remove_req_fn = as_remove_request, -+ .elevator_requeue_req_fn = as_requeue_request, - .elevator_queue_empty_fn = as_queue_empty, - .elevator_completed_req_fn = as_completed_request, - .elevator_former_req_fn = as_former_request, ---- linux-2.6.0-test1/drivers/block/ataflop.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/block/ataflop.c 2003-07-19 17:03:49.000000000 -0700 -@@ -91,7 +91,6 @@ - #include - #include - #include --#include - #include - - #define FD_MAX_UNITS 2 ---- linux-2.6.0-test1/drivers/block/cciss.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/drivers/block/cciss.c 2003-07-19 17:03:49.000000000 -0700 -@@ -41,7 +41,6 @@ - #include - #include - --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/block/cciss_scsi.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/block/cciss_scsi.c 2003-07-19 17:03:49.000000000 -0700 -@@ -712,7 +712,8 @@ cciss_scsi_detect(int ctlr) - sh->hostdata[0] = (unsigned long) hba[ctlr]; - sh->irq = hba[ctlr]->intr; - sh->unique_id = sh->irq; -- scsi_add_host(sh, &hba[ctlr]->pdev->dev); -+ scsi_add_host(sh, &hba[ctlr]->pdev->dev); /* XXX handle failure */ -+ scsi_scan_host(sh); - - return 1; - } ---- linux-2.6.0-test1/drivers/block/cpqarray.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/block/cpqarray.c 2003-07-19 17:03:49.000000000 -0700 -@@ -38,7 +38,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/block/cryptoloop.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/block/cryptoloop.c 2003-07-19 17:03:49.000000000 -0700 -@@ -26,7 +26,6 @@ - #include - #include - #include --#include - #include - #include - ---- linux-2.6.0-test1/drivers/block/DAC960.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/block/DAC960.c 2003-07-19 17:03:49.000000000 -0700 -@@ -23,7 +23,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/block/deadline-iosched.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/block/deadline-iosched.c 2003-07-19 17:03:49.000000000 -0700 -@@ -10,7 +10,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/block/elevator.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/drivers/block/elevator.c 2003-07-19 17:03:49.000000000 -0700 -@@ -29,7 +29,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -214,6 +213,18 @@ void elv_merge_requests(request_queue_t - e->elevator_merge_req_fn(q, rq, next); - } - -+void elv_requeue_request(request_queue_t *q, struct request *rq) -+{ -+ /* -+ * if iosched has an explicit requeue hook, then use that. otherwise -+ * just put the request at the front of the queue -+ */ -+ if (q->elevator.elevator_requeue_req_fn) -+ q->elevator.elevator_requeue_req_fn(q, rq); -+ else -+ __elv_add_request(q, rq, 0, 0); -+} -+ - void __elv_add_request(request_queue_t *q, struct request *rq, int at_end, - int plug) - { -@@ -417,6 +428,7 @@ EXPORT_SYMBOL(elevator_noop); - - EXPORT_SYMBOL(elv_add_request); - EXPORT_SYMBOL(__elv_add_request); -+EXPORT_SYMBOL(elv_requeue_request); - EXPORT_SYMBOL(elv_next_request); - EXPORT_SYMBOL(elv_remove_request); - EXPORT_SYMBOL(elv_queue_empty); ---- linux-2.6.0-test1/drivers/block/floppy98.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/block/floppy98.c 2003-07-19 17:03:49.000000000 -0700 -@@ -277,7 +277,6 @@ static int irqdma_allocated; - #define LOCAL_END_REQUEST - #define DEVICE_NAME "floppy" - --#include - #include - #include /* for the compatibility eject ioctl */ - #include ---- linux-2.6.0-test1/drivers/block/floppy.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/drivers/block/floppy.c 2003-07-19 17:15:21.000000000 -0700 -@@ -242,7 +242,7 @@ static int irqdma_allocated; - #define LOCAL_END_REQUEST - #define DEVICE_NAME "floppy" - --#include -+#include - #include - #include /* for the compatibility eject ioctl */ - #include -@@ -4261,6 +4261,7 @@ int __init floppy_init(void) - floppy_sizes[i] = MAX_DISK_SIZE << 1; - - blk_init_queue(&floppy_queue, do_fd_request, &floppy_lock); -+ blk_queue_max_hw_segments(&floppy_queue, 1); - reschedule_timeout(MAXTIMEOUT, "floppy init", MAXTIMEOUT); - config_types(); - ---- linux-2.6.0-test1/drivers/block/genhd.c 2003-07-10 18:50:30.000000000 -0700 -+++ 25/drivers/block/genhd.c 2003-07-19 17:06:13.000000000 -0700 -@@ -7,7 +7,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -@@ -336,7 +336,7 @@ static struct sysfs_ops disk_sysfs_ops = - static ssize_t disk_dev_read(struct gendisk * disk, char *page) - { - dev_t base = MKDEV(disk->major, disk->first_minor); -- return sprintf(page, "%04x\n", (unsigned)base); -+ return print_dev_t(page, base); - } - static ssize_t disk_range_read(struct gendisk * disk, char *page) - { ---- linux-2.6.0-test1/drivers/block/ioctl.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/block/ioctl.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1,5 +1,5 @@ - #include /* for capable() */ --#include /* for set_device_ro() */ -+#include - #include - #include - #include -@@ -166,13 +166,11 @@ int blkdev_ioctl(struct inode *inode, st - return -EINVAL; - if (get_user(n, (int *) arg)) - return -EFAULT; -- if (n > PAGE_SIZE || n < 512 || (n & (n - 1))) -- return -EINVAL; - if (bd_claim(bdev, &holder) < 0) - return -EBUSY; -- set_blocksize(bdev, n); -+ ret = set_blocksize(bdev, n); - bd_release(bdev); -- return 0; -+ return ret; - case BLKPG: - return blkpg_ioctl(bdev, (struct blkpg_ioctl_arg *) arg); - case BLKRRPART: ---- linux-2.6.0-test1/drivers/block/Kconfig 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/block/Kconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -264,6 +264,7 @@ config BLK_DEV_LOOP - - config BLK_DEV_CRYPTOLOOP - tristate "Cryptoloop Support" -+ select CRYPTO - depends on BLK_DEV_LOOP - ---help--- - Say Y here if you want to be able to use the ciphers that are -@@ -339,7 +340,7 @@ config BLK_DEV_INITRD - - config LBD - bool "Support for Large Block Devices" -- depends on X86 -+ depends on X86 || MIPS32 || PPC32 || ARCH_S390_31 || SUPERH - help - Say Y here if you want to attach large (bigger than 2TB) discs to - your machine, or if you want to have a raid or loopback device ---- linux-2.6.0-test1/drivers/block/ll_rw_blk.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/block/ll_rw_blk.c 2003-07-19 17:06:49.000000000 -0700 -@@ -17,7 +17,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -@@ -371,6 +371,20 @@ void blk_queue_hardsect_size(request_que - } - - /** -+ * blk_queue_stack_limits - inherit underlying queue limits for stacked drivers -+ * @t: the stacking driver (top) -+ * @b: the underlying device (bottom) -+ **/ -+void blk_queue_stack_limits(request_queue_t *t, request_queue_t *b) -+{ -+ t->max_sectors = min(t->max_sectors,b->max_sectors); -+ t->max_phys_segments = min(t->max_phys_segments,b->max_phys_segments); -+ t->max_hw_segments = min(t->max_hw_segments,b->max_hw_segments); -+ t->max_segment_size = min(t->max_segment_size,b->max_segment_size); -+ t->hardsect_size = max(t->hardsect_size,b->hardsect_size); -+} -+ -+/** - * blk_queue_segment_boundary - set boundary rules for segment merging - * @q: the request queue for the device - * @mask: the memory boundary mask -@@ -1494,6 +1508,23 @@ struct request *blk_get_request(request_ - - return rq; - } -+/** -+ * blk_requeue_request - put a request back on queue -+ * @q: request queue where request should be inserted -+ * @rq: request to be inserted -+ * -+ * Description: -+ * Drivers often keep queueing requests until the hardware cannot accept -+ * more, when that condition happens we need to put the request back -+ * on the queue. Must be called with queue lock held. -+ */ -+void blk_requeue_request(request_queue_t *q, struct request *rq) -+{ -+ if (blk_rq_tagged(rq)) -+ blk_queue_end_tag(q, rq); -+ -+ elv_requeue_request(q, rq); -+} - - /** - * blk_insert_request - insert a special request in to a request queue -@@ -1659,25 +1690,50 @@ void blk_put_request(struct request *req - } - - /** -- * blk_congestion_wait - wait for a queue to become uncongested -+ * blk_congestion_wait_wq - wait for a queue to become uncongested, - * @rw: READ or WRITE - * @timeout: timeout in jiffies -+ * @wait : wait queue entry to use for waiting or async notification -+ * (NULL defaults to synchronous behaviour) - * - * Waits for up to @timeout jiffies for a queue (any queue) to exit congestion. - * If no queues are congested then just wait for the next request to be - * returned. -+ * -+ * If the wait queue parameter specifies an async i/o callback, -+ * then instead of blocking, just register the callback on the wait -+ * queue for async notification when the queue gets uncongested. - */ --void blk_congestion_wait(int rw, long timeout) -+int blk_congestion_wait_wq(int rw, long timeout, wait_queue_t *wait) - { -- DEFINE_WAIT(wait); - wait_queue_head_t *wqh = &congestion_wqh[rw]; -+ DEFINE_WAIT(local_wait); -+ -+ if (!wait) -+ wait = &local_wait; - - blk_run_queues(); -- prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE); -+ prepare_to_wait(wqh, wait, TASK_UNINTERRUPTIBLE); -+ if (!is_sync_wait(wait)) { -+ /* -+ * if we've queued an async wait queue -+ * callback do not block; just tell the -+ * caller to return and retry later when -+ * the callback is notified -+ */ -+ return -EIOCBRETRY; -+ } - io_schedule_timeout(timeout); -- finish_wait(wqh, &wait); -+ finish_wait(wqh, wait); -+ return 0; -+} -+ -+void blk_congestion_wait(int rw, long timeout) -+{ -+ blk_congestion_wait_wq(rw, timeout, NULL); - } - -+ - /* - * Has to be called with the request spinlock acquired - */ -@@ -2720,6 +2776,7 @@ EXPORT_SYMBOL(blk_queue_max_phys_segment - EXPORT_SYMBOL(blk_queue_max_hw_segments); - EXPORT_SYMBOL(blk_queue_max_segment_size); - EXPORT_SYMBOL(blk_queue_hardsect_size); -+EXPORT_SYMBOL(blk_queue_stack_limits); - EXPORT_SYMBOL(blk_queue_segment_boundary); - EXPORT_SYMBOL(blk_queue_dma_alignment); - EXPORT_SYMBOL(blk_rq_map_sg); -@@ -2730,6 +2787,7 @@ EXPORT_SYMBOL(blk_hw_contig_segment); - EXPORT_SYMBOL(blk_get_request); - EXPORT_SYMBOL(blk_put_request); - EXPORT_SYMBOL(blk_insert_request); -+EXPORT_SYMBOL(blk_requeue_request); - - EXPORT_SYMBOL(blk_queue_prep_rq); - EXPORT_SYMBOL(blk_queue_merge_bvec); ---- linux-2.6.0-test1/drivers/block/nbd.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/block/nbd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -44,7 +44,6 @@ - - #include - --#include - #include - #include - #include -@@ -55,8 +54,6 @@ - #include - #include - #include --#include --#include - #include - - #include -@@ -261,7 +258,8 @@ void nbd_send_req(struct nbd_device *lo, - dprintk(DBG_TX, "%s: request %p: sending control (%s@%llu,%luB)\n", - lo->disk->disk_name, req, - nbdcmd_to_ascii(nbd_cmd(req)), -- req->sector << 9, req->nr_sectors << 9); -+ (unsigned long long)req->sector << 9, -+ req->nr_sectors << 9); - result = sock_xmit(sock, 1, &request, sizeof(request), - (nbd_cmd(req) == NBD_CMD_WRITE)? MSG_MORE: 0); - if (result <= 0) { ---- linux-2.6.0-test1/drivers/block/paride/pcd.c 2003-06-14 12:18:35.000000000 -0700 -+++ 25/drivers/block/paride/pcd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -137,7 +137,7 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_SLV, - #include - #include - #include --#include -+#include - #include - - static spinlock_t pcd_lock; ---- linux-2.6.0-test1/drivers/block/paride/pd.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/block/paride/pd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -150,7 +150,7 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_GEO, - #include - #include - #include /* for the eject ioctl */ --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/block/paride/pf.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/block/paride/pf.c 2003-07-19 17:03:49.000000000 -0700 -@@ -150,7 +150,7 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_SLV, - #include - #include - #include --#include -+#include - #include - #include - -@@ -222,9 +222,6 @@ MODULE_PARM(drive3, "1-7i"); - #define ATAPI_READ_10 0x28 - #define ATAPI_WRITE_10 0x2a - --#ifdef MODULE --void cleanup_module(void); --#endif - static int pf_open(struct inode *inode, struct file *file); - static void do_pf_request(request_queue_t * q); - static int pf_ioctl(struct inode *inode, struct file *file, ---- linux-2.6.0-test1/drivers/block/ps2esdi.c 2003-06-14 12:17:55.000000000 -0700 -+++ 25/drivers/block/ps2esdi.c 2003-07-19 17:03:49.000000000 -0700 -@@ -38,7 +38,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/block/swim3.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/block/swim3.c 2003-07-19 17:03:49.000000000 -0700 -@@ -24,7 +24,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/block/swim_iop.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/block/swim_iop.c 2003-07-19 17:03:49.000000000 -0700 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/block/umem.c 2003-06-14 12:18:51.000000000 -0700 -+++ 25/drivers/block/umem.c 2003-07-19 17:03:49.000000000 -0700 -@@ -99,7 +99,7 @@ static int pci_cmds; - - static int major_nr; - --#include -+#include - #include - - struct cardinfo { ---- linux-2.6.0-test1/drivers/block/xd.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/block/xd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -46,7 +46,7 @@ - #include - #include - #include --#include -+#include - #include - - #include ---- linux-2.6.0-test1/drivers/block/z2ram.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/block/z2ram.c 2003-07-19 17:03:49.000000000 -0700 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - ---- linux-2.6.0-test1/drivers/cdrom/aztcd.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/cdrom/aztcd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -166,7 +166,7 @@ - */ - - #include --#include -+#include - #include "aztcd.h" - - #include ---- linux-2.6.0-test1/drivers/cdrom/cdrom.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/cdrom/cdrom.c 2003-07-19 17:03:49.000000000 -0700 -@@ -268,6 +268,7 @@ - #include - #include - #include -+#include - - #include - -@@ -2171,6 +2172,7 @@ static int mmc_ioctl(struct cdrom_device - return -ENOSYS; - cdinfo(CD_DO_IOCTL, "entering CDROM_SEND_PACKET\n"); - IOCTL_IN(arg, struct cdrom_generic_command, cgc); -+ cgc.timeout = clock_t_to_jiffies(cgc.timeout); - return cdrom_do_cmd(cdi, &cgc); - } - case CDROM_NEXT_WRITABLE: { ---- linux-2.6.0-test1/drivers/cdrom/cdu31a.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/cdrom/cdu31a.c 2003-07-19 17:03:49.000000000 -0700 -@@ -177,7 +177,7 @@ - #include "cdu31a.h" - - #define MAJOR_NR CDU31A_CDROM_MAJOR --#include -+#include - - #define CDU31A_READAHEAD 4 /* 128 sector, 64kB, 32 reads read-ahead */ - #define CDU31A_MAX_CONSECUTIVE_ATTENTIONS 10 ---- linux-2.6.0-test1/drivers/cdrom/cm206.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/drivers/cdrom/cm206.c 2003-07-19 17:03:49.000000000 -0700 -@@ -199,7 +199,7 @@ History: - - #define MAJOR_NR CM206_CDROM_MAJOR - --#include -+#include - - #undef DEBUG - #define STATISTICS /* record times and frequencies of events */ ---- linux-2.6.0-test1/drivers/cdrom/gscd.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/cdrom/gscd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -69,7 +69,7 @@ - #include - - #define MAJOR_NR GOLDSTAR_CDROM_MAJOR --#include -+#include - #define gscd_port gscd /* for compatible parameter passing with "insmod" */ - #include "gscd.h" - ---- linux-2.6.0-test1/drivers/cdrom/mcd.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/cdrom/mcd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -101,7 +101,7 @@ - #include - #include - #include --#include -+#include - - #define mcd_port mcd /* for compatible parameter passing with "insmod" */ - #include "mcd.h" ---- linux-2.6.0-test1/drivers/cdrom/mcdx.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/cdrom/mcdx.c 2003-07-19 17:03:49.000000000 -0700 -@@ -74,7 +74,7 @@ static const char *mcdx_c_version - - #include - #define MAJOR_NR MITSUMI_X_CDROM_MAJOR --#include -+#include - #include - - /* for compatible parameter passing with "insmod" */ ---- linux-2.6.0-test1/drivers/cdrom/optcd.c 2003-06-14 12:18:04.000000000 -0700 -+++ 25/drivers/cdrom/optcd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -73,7 +73,7 @@ - #include - - #include --#include -+#include - - #include - #include "optcd.h" ---- linux-2.6.0-test1/drivers/cdrom/sbpcd.c 2003-06-14 12:17:59.000000000 -0700 -+++ 25/drivers/cdrom/sbpcd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -387,7 +387,7 @@ - #include "sbpcd.h" - - #define MAJOR_NR MATSUSHITA_CDROM_MAJOR --#include -+#include - - /*==========================================================================*/ - #if SBPCD_DIS_IRQ ---- linux-2.6.0-test1/drivers/cdrom/sjcd.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/cdrom/sjcd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -74,7 +74,7 @@ - #include - #include - #include --#include -+#include - #include "sjcd.h" - - static int sjcd_present = 0; ---- linux-2.6.0-test1/drivers/cdrom/sonycd535.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/cdrom/sonycd535.c 2003-07-19 17:03:49.000000000 -0700 -@@ -134,7 +134,7 @@ - #include - - #define MAJOR_NR CDU535_CDROM_MAJOR --#include -+#include - - #define sony535_cd_base_io sonycd535 /* for compatible parameter passing with "insmod" */ - #include "sonycd535.h" ---- linux-2.6.0-test1/drivers/char/agp/i460-agp.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/char/agp/i460-agp.c 2003-07-19 17:03:49.000000000 -0700 -@@ -608,7 +608,7 @@ static struct pci_driver agp_intel_i460_ - .name = "agpgart-intel-i460", - .id_table = agp_intel_i460_pci_table, - .probe = agp_intel_i460_probe, -- .remove = agp_intel_i460_remove, -+ .remove = __devexit_p(agp_intel_i460_remove), - }; - - static int __init agp_intel_i460_init(void) ---- linux-2.6.0-test1/drivers/char/busmouse.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/char/busmouse.c 2003-07-19 17:03:49.000000000 -0700 -@@ -357,25 +357,23 @@ int register_busmouse(struct busmouse *o - { - unsigned int msedev = MINOR_TO_MOUSE(ops->minor); - struct busmouse_data *mse; -- int ret; -+ int ret = -EINVAL; - - if (msedev >= NR_MICE) { - printk(KERN_ERR "busmouse: trying to allocate mouse on minor %d\n", - ops->minor); -- return -EINVAL; -+ goto out; - } - -+ ret = -ENOMEM; - mse = kmalloc(sizeof(*mse), GFP_KERNEL); - if (!mse) -- return -ENOMEM; -+ goto out; - - down(&mouse_sem); -+ ret = -EBUSY; - if (busmouse_data[msedev]) -- { -- up(&mouse_sem); -- kfree(mse); -- return -EBUSY; -- } -+ goto freemem; - - memset(mse, 0, sizeof(*mse)); - -@@ -386,14 +384,22 @@ int register_busmouse(struct busmouse *o - mse->lock = (spinlock_t)SPIN_LOCK_UNLOCKED; - init_waitqueue_head(&mse->wait); - -- busmouse_data[msedev] = mse; - - ret = misc_register(&mse->miscdev); -- if (!ret) -- ret = msedev; -+ -+ if (ret < 0) -+ goto freemem; -+ -+ busmouse_data[msedev] = mse; -+ ret = msedev; -+out: - up(&mouse_sem); -- - return ret; -+ -+ -+freemem: -+ kfree(mse); -+ goto out; - } - - /** ---- linux-2.6.0-test1/drivers/char/drm/drm_memory.h 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/char/drm/drm_memory.h 2003-07-19 17:07:16.000000000 -0700 -@@ -128,7 +128,7 @@ static inline unsigned long - drm_follow_page (void *vaddr) - { - pgd_t *pgd = pgd_offset_k((unsigned long) vaddr); -- pmd_t *pmd = pmd_offset(pgd, (unsigned long) vaddr); -+ pmd_t *pmd = pmd_offset_kernel(pgd, (unsigned long)vaddr); - pte_t *ptep = pte_offset_kernel(pmd, (unsigned long) vaddr); - return pte_pfn(*ptep) << PAGE_SHIFT; - } ---- linux-2.6.0-test1/drivers/char/ftape/lowlevel/fdc-io.c 2003-06-14 12:18:04.000000000 -0700 -+++ 25/drivers/char/ftape/lowlevel/fdc-io.c 2003-07-19 17:03:49.000000000 -0700 -@@ -66,6 +66,7 @@ int ft_mach2 = CONFIG_FT_MAC - - /* Local vars. - */ -+static spinlock_t fdc_io_lock; - static unsigned int fdc_calibr_count; - static unsigned int fdc_calibr_time; - static int fdc_status; -@@ -89,14 +90,13 @@ void fdc_catch_stray_interrupts(int coun - { - unsigned long flags; - -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&fdc_io_lock, flags); - if (count == 0) { - ft_expected_stray_interrupts = 0; - } else { - ft_expected_stray_interrupts += count; - } -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - } - - /* Wait during a timeout period for a given FDC status. -@@ -194,8 +194,7 @@ int fdc_command(const __u8 * cmd_data, i - TRACE_FUN(ft_t_any); - - fdc_usec_wait(FT_RQM_DELAY); /* wait for valid RQM status */ -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&fdc_io_lock, flags); - if (!in_interrupt()) - /* Yes, I know, too much comments inside this function - * ... -@@ -242,12 +241,11 @@ int fdc_command(const __u8 * cmd_data, i - - } - fdc_usec_wait(FT_RQM_DELAY); /* wait for valid RQM status */ -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&fdc_io_lock, flags); - } - fdc_status = inb(fdc.msr); - if ((fdc_status & FDC_DATA_READY_MASK) != FDC_DATA_IN_READY) { -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - TRACE_ABORT(-EBUSY, ft_t_err, "fdc not ready"); - } - fdc_mode = *cmd_data; /* used by isr */ -@@ -289,7 +287,7 @@ int fdc_command(const __u8 * cmd_data, i - last_time = ftape_timestamp(); - } - #endif -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - TRACE_EXIT result; - } - -@@ -305,15 +303,14 @@ int fdc_result(__u8 * res_data, int res_ - int retry = 0; - TRACE_FUN(ft_t_any); - -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&fdc_io_lock, flags); - fdc_status = inb(fdc.msr); - if ((fdc_status & FDC_DATA_READY_MASK) != FDC_DATA_OUT_READY) { - TRACE(ft_t_err, "fdc not ready"); - result = -EBUSY; - } else while (count) { - if (!(fdc_status & FDC_BUSY)) { -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - TRACE_ABORT(-EIO, ft_t_err, "premature end of result phase"); - } - result = fdc_read(res_data); -@@ -336,7 +333,7 @@ int fdc_result(__u8 * res_data, int res_ - ++res_data; - } - } -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - fdc_usec_wait(FT_RQM_DELAY); /* allow FDC to negate BSY */ - TRACE_EXIT result; - } -@@ -609,8 +606,7 @@ void fdc_reset(void) - unsigned long flags; - TRACE_FUN(ft_t_any); - -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&fdc_io_lock, flags); - - fdc_dor_reset(1); /* keep unit selected */ - -@@ -629,7 +625,7 @@ void fdc_reset(void) - */ - fdc_update_dsr(); /* restore data rate and precomp */ - -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - - /* - * Wait for first polling cycle to complete -@@ -928,8 +924,7 @@ int fdc_setup_formatting(buffer_struct * - */ - TRACE(ft_t_fdc_dma, - "phys. addr. = %lx", virt_to_bus((void*) buff->ptr)); -- save_flags(flags); -- cli(); /* could be called from ISR ! */ -+ spin_lock_irqsave(&fdc_io_lock, flags); - fdc_setup_dma(DMA_MODE_WRITE, buff->ptr, FT_SECTORS_PER_SEGMENT * 4); - /* Issue FDC command to start reading/writing. - */ -@@ -937,7 +932,7 @@ int fdc_setup_formatting(buffer_struct * - out[4] = buff->gap3; - TRACE_CATCH(fdc_setup_error = fdc_command(out, sizeof(out)), - restore_flags(flags); fdc_mode = fdc_idle); -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - TRACE_EXIT 0; - } - -@@ -977,11 +972,10 @@ int fdc_setup_read_write(buffer_struct * - break; - default: - TRACE_ABORT(-EIO, -- ft_t_bug, "bug: illegal operation parameter"); -+ ft_t_bug, "bug: invalid operation parameter"); - } - TRACE(ft_t_fdc_dma, "phys. addr. = %lx",virt_to_bus((void*)buff->ptr)); -- save_flags(flags); -- cli(); /* could be called from ISR ! */ -+ spin_lock_irqsave(&fdc_io_lock, flags); - if (operation != FDC_VERIFY) { - fdc_setup_dma(dma_mode, buff->ptr, - FT_SECTOR_SIZE * buff->sector_count); -@@ -999,7 +993,7 @@ int fdc_setup_read_write(buffer_struct * - out[8] = 0xff; /* No limit to transfer size. */ - TRACE(ft_t_fdc_dma, "C: 0x%02x, H: 0x%02x, R: 0x%02x, cnt: 0x%02x", - out[2], out[3], out[4], out[6] - out[4] + 1); -- restore_flags(flags); -+ spin_unlock_irqrestore(&fdc_io_lock, flags); - TRACE_CATCH(fdc_setup_error = fdc_command(out, 9),fdc_mode = fdc_idle); - TRACE_EXIT 0; - } ---- linux-2.6.0-test1/drivers/char/ftape/lowlevel/ftape-calibr.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/drivers/char/ftape/lowlevel/ftape-calibr.c 2003-07-19 17:03:49.000000000 -0700 -@@ -49,6 +49,8 @@ - static unsigned long ps_per_cycle = 0; - #endif - -+static spinlock_t calibr_lock; -+ - /* - * Note: On Intel PCs, the clock ticks at 100 Hz (HZ==100) which is - * too slow for certain timeouts (and that clock doesn't even tick -@@ -75,13 +77,12 @@ unsigned int ftape_timestamp(void) - __u16 lo; - __u16 hi; - -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&calibr_lock, flags); - outb_p(0x00, 0x43); /* latch the count ASAP */ - lo = inb_p(0x40); /* read the latched count */ - lo |= inb(0x40) << 8; - hi = jiffies; -- restore_flags(flags); -+ spin_unlock_irqrestore(&calibr_lock, flags); - return ((hi + 1) * (unsigned int) LATCH) - lo; /* downcounter ! */ - #endif - } -@@ -94,12 +95,11 @@ static unsigned int short_ftape_timestam - unsigned int count; - unsigned long flags; - -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&calibr_lock, flags); - outb_p(0x00, 0x43); /* latch the count ASAP */ - count = inb_p(0x40); /* read the latched count */ - count |= inb(0x40) << 8; -- restore_flags(flags); -+ spin_unlock_irqrestore(&calibr_lock, flags); - return (LATCH - count); /* normal: downcounter */ - #endif - } -@@ -150,14 +150,13 @@ static void time_inb(void) - int status; - TRACE_FUN(ft_t_any); - -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&calibr_lock, flags); - t0 = short_ftape_timestamp(); - for (i = 0; i < 1000; ++i) { - status = inb(fdc.msr); - } - t1 = short_ftape_timestamp(); -- restore_flags(flags); -+ spin_unlock_irqrestore(&calibr_lock, flags); - TRACE(ft_t_info, "inb() duration: %d nsec", ftape_timediff(t0, t1)); - TRACE_EXIT; - } -@@ -241,8 +240,7 @@ void ftape_calibrate(char *name, - - *calibr_count = - *calibr_time = count; /* set TC to 1 */ -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&calibr_lock, flags); - fun(0); /* dummy, get code into cache */ - t0 = short_ftape_timestamp(); - fun(0); /* overhead + one test */ -@@ -252,7 +250,7 @@ void ftape_calibrate(char *name, - fun(count); /* overhead + count tests */ - t1 = short_ftape_timestamp(); - multiple = diff(t0, t1); -- restore_flags(flags); -+ spin_unlock_irqrestore(&calibr_lock, flags); - time = ftape_timediff(0, multiple - once); - tc = (1000 * time) / (count - 1); - TRACE(ft_t_any, "once:%3d us,%6d times:%6d us, TC:%5d ns", ---- linux-2.6.0-test1/drivers/char/ftape/lowlevel/ftape-format.c 2003-06-14 12:18:21.000000000 -0700 -+++ 25/drivers/char/ftape/lowlevel/ftape-format.c 2003-07-19 17:03:49.000000000 -0700 -@@ -44,6 +44,8 @@ - #define FT_FMT_SEGS_PER_BUF (FT_BUFF_SIZE/(4*FT_SECTORS_PER_SEGMENT)) - #endif - -+static spinlock_t ftape_format_lock; -+ - /* - * first segment of the new buffer - */ -@@ -129,9 +131,9 @@ int ftape_format_track(const unsigned in - head->status = formatting; - TRACE_CATCH(ftape_seek_head_to_track(track),); - TRACE_CATCH(ftape_command(QIC_LOGICAL_FORWARD),); -- save_flags(flags); cli(); -+ spin_lock_irqsave(&ftape_format_lock, flags); - TRACE_CATCH(fdc_setup_formatting(head), restore_flags(flags)); -- restore_flags(flags); -+ spin_unlock_irqrestore(&ftape_format_lock, flags); - TRACE_EXIT 0; - } - ---- linux-2.6.0-test1/drivers/char/ftape/zftape/zftape-init.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/char/ftape/zftape/zftape-init.c 2003-07-19 17:03:49.000000000 -0700 -@@ -118,7 +118,7 @@ static int zft_open(struct inode *ino, s - > - FTAPE_SEL_D) { - clear_bit(0,&busy_flag); -- TRACE_ABORT(-ENXIO, ft_t_err, "failed: illegal unit nr"); -+ TRACE_ABORT(-ENXIO, ft_t_err, "failed: invalid unit nr"); - } - orig_sigmask = current->blocked; - sigfillset(¤t->blocked); ---- linux-2.6.0-test1/drivers/char/ip2.c 2003-06-14 12:18:20.000000000 -0700 -+++ 25/drivers/char/ip2.c 2003-07-19 17:03:49.000000000 -0700 -@@ -38,16 +38,14 @@ static int irq[IP2_MAX_BOARDS] = { -1, - - - static int poll_only = 0; - --# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0) -- MODULE_AUTHOR("Doug McNash"); -- MODULE_DESCRIPTION("Computone IntelliPort Plus Driver"); -- MODULE_PARM(irq,"1-"__MODULE_STRING(IP2_MAX_BOARDS) "i"); -- MODULE_PARM_DESC(irq,"Interrupts for IntelliPort Cards"); -- MODULE_PARM(io,"1-"__MODULE_STRING(IP2_MAX_BOARDS) "i"); -- MODULE_PARM_DESC(io,"I/O ports for IntelliPort Cards"); -- MODULE_PARM(poll_only,"1i"); -- MODULE_PARM_DESC(poll_only,"Do not use card interrupts"); --# endif /* LINUX_VERSION */ -+MODULE_AUTHOR("Doug McNash"); -+MODULE_DESCRIPTION("Computone IntelliPort Plus Driver"); -+MODULE_PARM(irq,"1-"__MODULE_STRING(IP2_MAX_BOARDS) "i"); -+MODULE_PARM_DESC(irq,"Interrupts for IntelliPort Cards"); -+MODULE_PARM(io,"1-"__MODULE_STRING(IP2_MAX_BOARDS) "i"); -+MODULE_PARM_DESC(io,"I/O ports for IntelliPort Cards"); -+MODULE_PARM(poll_only,"1i"); -+MODULE_PARM_DESC(poll_only,"Do not use card interrupts"); - - - //====================================================================== ---- linux-2.6.0-test1/drivers/char/ip2/i2lib.c 2003-06-14 12:18:51.000000000 -0700 -+++ 25/drivers/char/ip2/i2lib.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1089,7 +1089,7 @@ i2Output(i2ChanStrPtr pCh, const char *p - - // Move the data - if ( user ) { -- COPY_FROM_USER(rc, (char*)(DATA_OF(pInsert)), pSource, -+ rc = copy_from_user((char*)(DATA_OF(pInsert)), pSource, - amountToMove ); - } else { - memcpy( (char*)(DATA_OF(pInsert)), pSource, amountToMove ); ---- linux-2.6.0-test1/drivers/char/ip2/i2os.h 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/char/ip2/i2os.h 2003-07-19 17:03:49.000000000 -0700 -@@ -19,8 +19,6 @@ - #ifndef I2OS_H /* To prevent multiple includes */ - #define I2OS_H 1 - --#define VERSION(ver,rel,seq) (((ver)<<16) | ((rel)<<8) | (seq)) -- - //------------------------------------------------- - // Required Includes - //------------------------------------------------- -@@ -46,22 +44,6 @@ - // Interrupt control - //-------------------------------------------- - --#if LINUX_VERSION_CODE < 0x00020100 --typedef int spinlock_t; --#define spin_lock_init() --#define spin_lock(a) --#define spin_unlock(a) --#define spin_lock_irqsave(a,b) {save_flags((b));cli();} --#define spin_unlock_irqrestore(a,b) {restore_flags((b));} --#define write_lock_irqsave(a,b) spin_lock_irqsave(a,b) --#define write_unlock_irqrestore(a,b) spin_unlock_irqrestore(a,b) --#define read_lock_irqsave(a,b) spin_lock_irqsave(a,b) --#define read_unlock_irqrestore(a,b) spin_unlock_irqrestore(a,b) --#endif -- --//#define SAVE_AND_DISABLE_INTS(a,b) spin_lock_irqsave(a,b) --//#define RESTORE_INTS(a,b) spin_unlock_irqrestore(a,b) -- - #define LOCK_INIT(a) rwlock_init(a) - - #define SAVE_AND_DISABLE_INTS(a,b) { \ ---- linux-2.6.0-test1/drivers/char/ip2main.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/char/ip2main.c 2003-07-19 17:03:49.000000000 -0700 -@@ -83,7 +83,6 @@ - /* Includes */ - /************/ - #include --// Uncomment the following if you want it compiled with modversions - - #include - -@@ -120,82 +119,11 @@ - #include - #include - --#ifndef KERNEL_VERSION --#define KERNEL_VERSION(ver,rel,seq) (((ver)<<16) | ((rel)<<8) | (seq)) --#endif -- --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0) --# include --# include --# include --#else --# include --#endif -+#include -+#include -+#include - --// These VERSION switches maybe inexact because I simply don't know --// when the various features appeared in the 2.1.XX kernels. --// They are good enough for 2.0 vs 2.2 and if you are fooling with --// the 2.1.XX stuff then it would be trivial for you to fix. --// Most of these macros were stolen from some other drivers --// so blame them. -- --#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,4) --# define GET_USER(error,value,addr) error = get_user(value,addr) --# define COPY_FROM_USER(error,dest,src,size) error = copy_from_user(dest,src,size) ? -EFAULT : 0 --# define PUT_USER(error,value,addr) error = put_user(value,addr) --# define COPY_TO_USER(error,dest,src,size) error = copy_to_user(dest,src,size) ? -EFAULT : 0 -- --# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,5) --# include --# define pcibios_strerror(status) \ -- printk( KERN_ERR "IP2: PCI error 0x%x \n", status ); --# endif -- --#else /* 2.0.x and 2.1.x before 2.1.4 */ -- --# define proc_register_dynamic(a,b) proc_register(a,b) -- --# define GET_USER(error,value,addr) \ -- do { \ -- error = verify_area (VERIFY_READ, (void *) addr, sizeof (value)); \ -- if (error == 0) \ -- value = get_user(addr); \ -- } while (0) -- --# define COPY_FROM_USER(error,dest,src,size) \ -- do { \ -- error = verify_area (VERIFY_READ, (void *) src, size); \ -- if (error == 0) \ -- memcpy_fromfs (dest, src, size); \ -- } while (0) -- --# define PUT_USER(error,value,addr) \ -- do { \ -- error = verify_area (VERIFY_WRITE, (void *) addr, sizeof (value)); \ -- if (error == 0) \ -- put_user (value, addr); \ -- } while (0) -- --# define COPY_TO_USER(error,dest,src,size) \ -- do { \ -- error = verify_area (VERIFY_WRITE, (void *) dest, size); \ -- if (error == 0) \ -- memcpy_tofs (dest, src, size); \ -- } while (0) -- --#endif -- --#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) --#define __init --#define __initfunc(a) a --#define __initdata --#define ioremap(a,b) vremap((a),(b)) --#define iounmap(a) vfree((a)) --#define SERIAL_TYPE_NORMAL 1 --#define schedule_timeout(a){current->timeout = jiffies + (a); schedule();} --#define signal_pending(a) ((a)->signal & ~(a)->blocked) --#define in_interrupt() intr_count --#endif -+#include - - #include "./ip2/ip2types.h" - #include "./ip2/ip2trace.h" -@@ -276,11 +204,7 @@ static int set_modem_info(i2ChanStrPtr, - static int get_serial_info(i2ChanStrPtr, struct serial_struct *); - static int set_serial_info(i2ChanStrPtr, struct serial_struct *); - --#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) --static int ip2_ipl_read(struct inode *, char *, size_t , loff_t *); --#else --static ssize_t ip2_ipl_read(struct file *, char *, size_t, loff_t *) ; --#endif -+static ssize_t ip2_ipl_read(struct file *, char *, size_t, loff_t *); - static ssize_t ip2_ipl_write(struct file *, const char *, size_t, loff_t *); - static int ip2_ipl_ioctl(struct inode *, struct file *, UINT, ULONG); - static int ip2_ipl_open(struct inode *, struct file *); -@@ -354,9 +278,6 @@ static int tracewrap; - #define DBG_CNT(s) - #endif - --#define MIN(a,b) ( ( (a) < (b) ) ? (a) : (b) ) --#define MAX(a,b) ( ( (a) > (b) ) ? (a) : (b) ) -- - /********/ - /* Code */ - /********/ -@@ -366,12 +287,9 @@ static int tracewrap; - #include "./ip2/i2lib.c" /* High level interface services */ - - /* Configuration area for modprobe */ --#ifdef MODULE --# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0) -- MODULE_AUTHOR("Doug McNash"); -- MODULE_DESCRIPTION("Computone IntelliPort Plus Driver"); --# endif /* LINUX_VERSION */ --#endif /* MODULE */ -+ -+MODULE_AUTHOR("Doug McNash"); -+MODULE_DESCRIPTION("Computone IntelliPort Plus Driver"); - - static int poll_only = 0; - -@@ -660,53 +578,6 @@ ip2_loadmain(int *iop, int *irqp, unsign - break; - case PCI: - #ifdef CONFIG_PCI --#if (LINUX_VERSION_CODE < 0x020163) /* 2.1.99 */ -- if (pcibios_present()) { -- unsigned char pci_bus, pci_devfn; -- int Pci_index = 0; -- status = pcibios_find_device(PCI_VENDOR_ID_COMPUTONE, -- PCI_DEVICE_ID_COMPUTONE_IP2EX, Pci_index, -- &pci_bus, &pci_devfn); -- if (status == 0) { -- unsigned int addr; -- unsigned char pci_irq; -- -- ip2config.type[i] = PCI; -- /* -- * Update Pci_index, so that the next time we go -- * searching for a PCI board we find a different -- * one. -- */ -- ++Pci_index; -- -- pcibios_read_config_dword(pci_bus, pci_devfn, -- PCI_BASE_ADDRESS_1, &addr); -- if ( addr & 1 ) { -- ip2config.addr[i]=(USHORT)(addr&0xfffe); -- } else { -- printk( KERN_ERR "IP2: PCI I/O address error\n"); -- } -- pcibios_read_config_byte(pci_bus, pci_devfn, -- PCI_INTERRUPT_LINE, &pci_irq); -- --// If the PCI BIOS assigned it, lets try and use it. If we --// can't acquire it or it screws up, deal with it then. -- --// if (!is_valid_irq(pci_irq)) { --// printk( KERN_ERR "IP2: Bad PCI BIOS IRQ(%d)\n",pci_irq); --// pci_irq = 0; --// } -- ip2config.irq[i] = pci_irq; -- } else { // ann error -- ip2config.addr[i] = 0; -- if (status == PCIBIOS_DEVICE_NOT_FOUND) { -- printk( KERN_ERR "IP2: PCI board %d not found\n", i ); -- } else { -- pcibios_strerror(status); -- } -- } -- } --#else /* LINUX_VERSION_CODE > 2.1.99 */ - { - struct pci_dev *pci_dev_i = NULL; - pci_dev_i = pci_find_device(PCI_VENDOR_ID_COMPUTONE, -@@ -739,11 +610,10 @@ ip2_loadmain(int *iop, int *irqp, unsign - if (status == PCIBIOS_DEVICE_NOT_FOUND) { - printk( KERN_ERR "IP2: PCI board %d not found\n", i ); - } else { -- pcibios_strerror(status); -+ printk( KERN_ERR "IP2: PCI error 0x%x \n", status ); - } - } - } --#endif /* ! 2_0_X */ - #else - printk( KERN_ERR "IP2: PCI card specified but PCI support not\n"); - printk( KERN_ERR "IP2: configured in this kernel.\n"); -@@ -2193,7 +2063,7 @@ ip2_ioctl ( PTTY tty, struct file *pFile - - ip2trace (CHANN, ITRC_IOCTL, 6, 1, rc ); - -- PUT_USER(rc,C_CLOCAL(tty) ? 1 : 0, (unsigned long *) arg); -+ rc = put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned long *) arg); - if (rc) - return rc; - break; -@@ -2202,7 +2072,7 @@ ip2_ioctl ( PTTY tty, struct file *pFile - - ip2trace (CHANN, ITRC_IOCTL, 7, 1, rc ); - -- GET_USER(rc,arg,(unsigned long *) arg); -+ rc = get_user(arg,(unsigned long *) arg); - if (rc) - return rc; - tty->termios->c_cflag = ((tty->termios->c_cflag & ~CLOCAL) -@@ -2243,7 +2113,7 @@ ip2_ioctl ( PTTY tty, struct file *pFile - return -EINTR; - } - #endif -- PUT_USER(rc, -+ rc = put_user( - ((pCh->dataSetOut & I2_RTS) ? TIOCM_RTS : 0) - | ((pCh->dataSetOut & I2_DTR) ? TIOCM_DTR : 0) - | ((pCh->dataSetIn & I2_DCD) ? TIOCM_CAR : 0) -@@ -2333,17 +2203,17 @@ ip2_ioctl ( PTTY tty, struct file *pFile - cnow = pCh->icount; - restore_flags(flags); - p_cuser = (struct serial_icounter_struct *) arg; -- PUT_USER(rc,cnow.cts, &p_cuser->cts); -- PUT_USER(rc,cnow.dsr, &p_cuser->dsr); -- PUT_USER(rc,cnow.rng, &p_cuser->rng); -- PUT_USER(rc,cnow.dcd, &p_cuser->dcd); -- PUT_USER(rc,cnow.rx, &p_cuser->rx); -- PUT_USER(rc,cnow.tx, &p_cuser->tx); -- PUT_USER(rc,cnow.frame, &p_cuser->frame); -- PUT_USER(rc,cnow.overrun, &p_cuser->overrun); -- PUT_USER(rc,cnow.parity, &p_cuser->parity); -- PUT_USER(rc,cnow.brk, &p_cuser->brk); -- PUT_USER(rc,cnow.buf_overrun, &p_cuser->buf_overrun); -+ rc = put_user(cnow.cts, &p_cuser->cts); -+ rc = put_user(cnow.dsr, &p_cuser->dsr); -+ rc = put_user(cnow.rng, &p_cuser->rng); -+ rc = put_user(cnow.dcd, &p_cuser->dcd); -+ rc = put_user(cnow.rx, &p_cuser->rx); -+ rc = put_user(cnow.tx, &p_cuser->tx); -+ rc = put_user(cnow.frame, &p_cuser->frame); -+ rc = put_user(cnow.overrun, &p_cuser->overrun); -+ rc = put_user(cnow.parity, &p_cuser->parity); -+ rc = put_user(cnow.brk, &p_cuser->brk); -+ rc = put_user(cnow.buf_overrun, &p_cuser->buf_overrun); - break; - - /* -@@ -2387,7 +2257,7 @@ set_modem_info(i2ChanStrPtr pCh, unsigne - int rc; - unsigned int arg; - -- GET_USER(rc,arg,value); -+ rc = get_user(arg,value); - if (rc) - return rc; - switch(cmd) { -@@ -2469,7 +2339,7 @@ get_serial_info ( i2ChanStrPtr pCh, stru - tmp.close_delay = pCh->ClosingDelay; - tmp.closing_wait = pCh->ClosingWaitTime; - tmp.custom_divisor = pCh->BaudDivisor; -- COPY_TO_USER(rc,retinfo,&tmp,sizeof(*retinfo)); -+ rc = copy_to_user(retinfo,&tmp,sizeof(*retinfo)); - return rc; - } - -@@ -2489,15 +2359,15 @@ set_serial_info( i2ChanStrPtr pCh, struc - { - struct serial_struct ns; - int old_flags, old_baud_divisor; -- int rc = 0; - - if ( !new_info ) { - return -EFAULT; - } -- COPY_FROM_USER(rc, &ns, new_info, sizeof (ns) ); -- if (rc) { -- return rc; -+ -+ if (copy_from_user(&ns, new_info, sizeof (ns))) { -+ return -EFAULT; - } -+ - /* - * We don't allow setserial to change IRQ, board address, type or baud - * base. Also line nunber as such is meaningless but we use it for our -@@ -2537,7 +2407,7 @@ set_serial_info( i2ChanStrPtr pCh, struc - set_params( pCh, NULL ); - } - -- return rc; -+ return 0; - } - - /******************************************************************************/ -@@ -2860,16 +2730,10 @@ service_it: - /******************************************************************************/ - - static --#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) --int --ip2_ipl_read(struct inode *pInode, char *pData, size_t count, loff_t *off ) -- unsigned int minor = minor( pInode->i_rdev ); --#else - ssize_t - ip2_ipl_read(struct file *pFile, char *pData, size_t count, loff_t *off ) - { - unsigned int minor = minor( pFile->f_dentry->d_inode->i_rdev ); --#endif - int rc = 0; - - #ifdef IP2DEBUG_IPL -@@ -2904,7 +2768,7 @@ DumpFifoBuffer ( char *pData, int count - { - #ifdef DEBUG_FIFO - int rc; -- COPY_TO_USER(rc, pData, DBGBuf, count); -+ rc = copy_to_user(pData, DBGBuf, count); - - printk(KERN_DEBUG "Last index %d\n", I ); - -@@ -2925,10 +2789,10 @@ DumpTraceBuffer ( char *pData, int count - if ( count < (sizeof(int) * 6) ) { - return -EIO; - } -- PUT_USER(rc, tracewrap, pIndex ); -- PUT_USER(rc, TRACEMAX, ++pIndex ); -- PUT_USER(rc, tracestrip, ++pIndex ); -- PUT_USER(rc, tracestuff, ++pIndex ); -+ rc = put_user(tracewrap, pIndex ); -+ rc = put_user(TRACEMAX, ++pIndex ); -+ rc = put_user(tracestrip, ++pIndex ); -+ rc = put_user(tracestuff, ++pIndex ); - pData += sizeof(int) * 6; - count -= sizeof(int) * 6; - -@@ -2941,7 +2805,7 @@ DumpTraceBuffer ( char *pData, int count - } - chunk = TRACEMAX - tracestrip; - if ( dumpcount > chunk ) { -- COPY_TO_USER(rc, pData, &tracebuf[tracestrip], -+ rc = copy_to_user(pData, &tracebuf[tracestrip], - chunk * sizeof(tracebuf[0]) ); - pData += chunk * sizeof(tracebuf[0]); - tracestrip = 0; -@@ -2949,13 +2813,13 @@ DumpTraceBuffer ( char *pData, int count - } else { - chunk = dumpcount; - } -- COPY_TO_USER(rc, pData, &tracebuf[tracestrip], -+ rc = copy_to_user(pData, &tracebuf[tracestrip], - chunk * sizeof(tracebuf[0]) ); - tracestrip += chunk; - tracewrap = 0; - -- PUT_USER(rc, tracestrip, ++pIndex ); -- PUT_USER(rc, tracestuff, ++pIndex ); -+ rc = put_user(tracestrip, ++pIndex ); -+ rc = put_user(tracestuff, ++pIndex ); - - return dumpcount; - #else -@@ -3019,15 +2883,15 @@ ip2_ipl_ioctl ( struct inode *pInode, st - case 13: - switch ( cmd ) { - case 64: /* Driver - ip2stat */ -- PUT_USER(rc, ip2_tty_driver->refcount, pIndex++ ); -- PUT_USER(rc, irq_counter, pIndex++ ); -- PUT_USER(rc, bh_counter, pIndex++ ); -+ rc = put_user(ip2_tty_driver->refcount, pIndex++ ); -+ rc = put_user(irq_counter, pIndex++ ); -+ rc = put_user(bh_counter, pIndex++ ); - break; - - case 65: /* Board - ip2stat */ - if ( pB ) { -- COPY_TO_USER(rc, (char*)arg, (char*)pB, sizeof(i2eBordStr) ); -- PUT_USER(rc, INB(pB->i2eStatus), -+ rc = copy_to_user((char*)arg, (char*)pB, sizeof(i2eBordStr) ); -+ rc = put_user(INB(pB->i2eStatus), - (ULONG*)(arg + (ULONG)(&pB->i2eStatus) - (ULONG)pB ) ); - } else { - rc = -ENODEV; -@@ -3039,7 +2903,7 @@ ip2_ipl_ioctl ( struct inode *pInode, st - pCh = DevTable[cmd]; - if ( pCh ) - { -- COPY_TO_USER(rc, (char*)arg, (char*)pCh, sizeof(i2ChanStr) ); -+ rc = copy_to_user((char*)arg, (char*)pCh, sizeof(i2ChanStr) ); - } else { - rc = -ENODEV; - } -@@ -3054,60 +2918,60 @@ ip2_ipl_ioctl ( struct inode *pInode, st - break; - case 3: // Trace device - if ( cmd == 1 ) { -- PUT_USER(rc, iiSendPendingMail, pIndex++ ); -- PUT_USER(rc, i2InitChannels, pIndex++ ); -- PUT_USER(rc, i2QueueNeeds, pIndex++ ); -- PUT_USER(rc, i2QueueCommands, pIndex++ ); -- PUT_USER(rc, i2GetStatus, pIndex++ ); -- PUT_USER(rc, i2Input, pIndex++ ); -- PUT_USER(rc, i2InputFlush, pIndex++ ); -- PUT_USER(rc, i2Output, pIndex++ ); -- PUT_USER(rc, i2FlushOutput, pIndex++ ); -- PUT_USER(rc, i2DrainWakeup, pIndex++ ); -- PUT_USER(rc, i2DrainOutput, pIndex++ ); -- PUT_USER(rc, i2OutputFree, pIndex++ ); -- PUT_USER(rc, i2StripFifo, pIndex++ ); -- PUT_USER(rc, i2StuffFifoBypass, pIndex++ ); -- PUT_USER(rc, i2StuffFifoFlow, pIndex++ ); -- PUT_USER(rc, i2StuffFifoInline, pIndex++ ); -- PUT_USER(rc, i2ServiceBoard, pIndex++ ); -- PUT_USER(rc, serviceOutgoingFifo, pIndex++ ); -- // PUT_USER(rc, ip2_init, pIndex++ ); -- PUT_USER(rc, ip2_init_board, pIndex++ ); -- PUT_USER(rc, find_eisa_board, pIndex++ ); -- PUT_USER(rc, set_irq, pIndex++ ); -- PUT_USER(rc, ip2_interrupt, pIndex++ ); -- PUT_USER(rc, ip2_poll, pIndex++ ); -- PUT_USER(rc, service_all_boards, pIndex++ ); -- PUT_USER(rc, do_input, pIndex++ ); -- PUT_USER(rc, do_status, pIndex++ ); -+ rc = put_user(iiSendPendingMail, pIndex++ ); -+ rc = put_user(i2InitChannels, pIndex++ ); -+ rc = put_user(i2QueueNeeds, pIndex++ ); -+ rc = put_user(i2QueueCommands, pIndex++ ); -+ rc = put_user(i2GetStatus, pIndex++ ); -+ rc = put_user(i2Input, pIndex++ ); -+ rc = put_user(i2InputFlush, pIndex++ ); -+ rc = put_user(i2Output, pIndex++ ); -+ rc = put_user(i2FlushOutput, pIndex++ ); -+ rc = put_user(i2DrainWakeup, pIndex++ ); -+ rc = put_user(i2DrainOutput, pIndex++ ); -+ rc = put_user(i2OutputFree, pIndex++ ); -+ rc = put_user(i2StripFifo, pIndex++ ); -+ rc = put_user(i2StuffFifoBypass, pIndex++ ); -+ rc = put_user(i2StuffFifoFlow, pIndex++ ); -+ rc = put_user(i2StuffFifoInline, pIndex++ ); -+ rc = put_user(i2ServiceBoard, pIndex++ ); -+ rc = put_user(serviceOutgoingFifo, pIndex++ ); -+ // rc = put_user(ip2_init, pIndex++ ); -+ rc = put_user(ip2_init_board, pIndex++ ); -+ rc = put_user(find_eisa_board, pIndex++ ); -+ rc = put_user(set_irq, pIndex++ ); -+ rc = put_user(ip2_interrupt, pIndex++ ); -+ rc = put_user(ip2_poll, pIndex++ ); -+ rc = put_user(service_all_boards, pIndex++ ); -+ rc = put_user(do_input, pIndex++ ); -+ rc = put_user(do_status, pIndex++ ); - #ifndef IP2DEBUG_OPEN -- PUT_USER(rc, 0, pIndex++ ); -+ rc = put_user(0, pIndex++ ); - #else -- PUT_USER(rc, open_sanity_check, pIndex++ ); -+ rc = put_user(open_sanity_check, pIndex++ ); - #endif -- PUT_USER(rc, ip2_open, pIndex++ ); -- PUT_USER(rc, ip2_close, pIndex++ ); -- PUT_USER(rc, ip2_hangup, pIndex++ ); -- PUT_USER(rc, ip2_write, pIndex++ ); -- PUT_USER(rc, ip2_putchar, pIndex++ ); -- PUT_USER(rc, ip2_flush_chars, pIndex++ ); -- PUT_USER(rc, ip2_write_room, pIndex++ ); -- PUT_USER(rc, ip2_chars_in_buf, pIndex++ ); -- PUT_USER(rc, ip2_flush_buffer, pIndex++ ); -- -- //PUT_USER(rc, ip2_wait_until_sent, pIndex++ ); -- PUT_USER(rc, 0, pIndex++ ); -- -- PUT_USER(rc, ip2_throttle, pIndex++ ); -- PUT_USER(rc, ip2_unthrottle, pIndex++ ); -- PUT_USER(rc, ip2_ioctl, pIndex++ ); -- PUT_USER(rc, set_modem_info, pIndex++ ); -- PUT_USER(rc, get_serial_info, pIndex++ ); -- PUT_USER(rc, set_serial_info, pIndex++ ); -- PUT_USER(rc, ip2_set_termios, pIndex++ ); -- PUT_USER(rc, ip2_set_line_discipline, pIndex++ ); -- PUT_USER(rc, set_params, pIndex++ ); -+ rc = put_user(ip2_open, pIndex++ ); -+ rc = put_user(ip2_close, pIndex++ ); -+ rc = put_user(ip2_hangup, pIndex++ ); -+ rc = put_user(ip2_write, pIndex++ ); -+ rc = put_user(ip2_putchar, pIndex++ ); -+ rc = put_user(ip2_flush_chars, pIndex++ ); -+ rc = put_user(ip2_write_room, pIndex++ ); -+ rc = put_user(ip2_chars_in_buf, pIndex++ ); -+ rc = put_user(ip2_flush_buffer, pIndex++ ); -+ -+ //rc = put_user(ip2_wait_until_sent, pIndex++ ); -+ rc = put_user(0, pIndex++ ); -+ -+ rc = put_user(ip2_throttle, pIndex++ ); -+ rc = put_user(ip2_unthrottle, pIndex++ ); -+ rc = put_user(ip2_ioctl, pIndex++ ); -+ rc = put_user(set_modem_info, pIndex++ ); -+ rc = put_user(get_serial_info, pIndex++ ); -+ rc = put_user(set_serial_info, pIndex++ ); -+ rc = put_user(ip2_set_termios, pIndex++ ); -+ rc = put_user(ip2_set_line_discipline, pIndex++ ); -+ rc = put_user(set_params, pIndex++ ); - } else { - rc = -EINVAL; - } ---- linux-2.6.0-test1/drivers/char/istallion.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/char/istallion.c 2003-07-19 17:03:49.000000000 -0700 -@@ -650,8 +650,6 @@ static unsigned int stli_baudrates[] = { - */ - - #ifdef MODULE --int init_module(void); --void cleanup_module(void); - static void stli_argbrds(void); - static int stli_parsebrd(stlconf_t *confp, char **argp); - ---- linux-2.6.0-test1/drivers/char/keyboard.c 2003-06-26 22:07:24.000000000 -0700 -+++ 25/drivers/char/keyboard.c 2003-07-19 17:04:02.000000000 -0700 -@@ -1055,6 +1055,9 @@ void kbd_keycode(unsigned int keycode, i - } - if (sysrq_down && down && !rep) { - handle_sysrq(kbd_sysrq_xlate[keycode], regs, tty); -+#ifdef CONFIG_KGDB_SYSRQ -+ sysrq_down = 0; /* in case we miss the "up" event */ -+#endif - return; - } - #endif ---- linux-2.6.0-test1/drivers/char/moxa.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/char/moxa.c 2003-07-19 17:03:49.000000000 -0700 -@@ -216,10 +216,7 @@ static struct timer_list moxaEmptyTimer[ - static struct semaphore moxaBuffSem; - - int moxa_init(void); --#ifdef MODULE --int init_module(void); --void cleanup_module(void); --#endif -+ - /* - * static functions: - */ ---- linux-2.6.0-test1/drivers/char/nwbutton.h 2003-06-14 12:18:04.000000000 -0700 -+++ 25/drivers/char/nwbutton.h 2003-07-19 17:03:49.000000000 -0700 -@@ -32,10 +32,6 @@ int button_init (void); - int button_add_callback (void (*callback) (void), int count); - int button_del_callback (void (*callback) (void)); - static void button_consume_callbacks (int bpcount); --#ifdef MODULE --int init_module (void); --void cleanup_module (void); --#endif /* MODULE */ - - #else /* Not compiling the driver itself */ - ---- linux-2.6.0-test1/drivers/char/pcxx.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/char/pcxx.c 2003-07-19 17:03:49.000000000 -0700 -@@ -209,17 +209,9 @@ static void cleanup_board_resources(void - - #ifdef MODULE - --/* -- * pcxe_init() is our init_module(): -- */ --#define pcxe_init init_module -- --void cleanup_module(void); -- -- - /*****************************************************************************/ - --void cleanup_module() -+static void pcxe_cleanup() - { - - unsigned long flags; -@@ -240,6 +232,12 @@ void cleanup_module() - kfree(digi_channels); - restore_flags(flags); - } -+ -+/* -+ * pcxe_init() is our init_module(): -+ */ -+module_init(pcxe_init); -+module_cleanup(pcxe_cleanup); - #endif - - static inline struct channel *chan(register struct tty_struct *tty) ---- linux-2.6.0-test1/drivers/char/stallion.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/char/stallion.c 2003-07-19 17:03:49.000000000 -0700 -@@ -472,8 +472,6 @@ static unsigned int stl_baudrates[] = { - */ - - #ifdef MODULE --int init_module(void); --void cleanup_module(void); - static void stl_argbrds(void); - static int stl_parsebrd(stlconf_t *confp, char **argp); - ---- linux-2.6.0-test1/drivers/char/sysrq.c 2003-06-26 22:07:24.000000000 -0700 -+++ 25/drivers/char/sysrq.c 2003-07-19 17:04:02.000000000 -0700 -@@ -35,6 +35,19 @@ - #include - - #include -+#ifdef CONFIG_KGDB_SYSRQ -+ -+#define GDB_OP &kgdb_op -+static struct sysrq_key_op kgdb_op={ -+ handler: (void*)breakpoint, -+ help_msg: "kGdb ", -+ action_msg: "Debug breakpoint\n", -+}; -+ -+#else -+#define GDB_OP NULL -+#endif -+ - - extern void reset_vc(unsigned int); - extern struct list_head super_blocks; -@@ -240,7 +253,7 @@ static struct sysrq_key_op *sysrq_key_ta - /* d */ NULL, - /* e */ &sysrq_term_op, - /* f */ NULL, --/* g */ NULL, -+/* g */ GDB_OP, - /* h */ NULL, - /* i */ &sysrq_kill_op, - /* j */ NULL, ---- linux-2.6.0-test1/drivers/char/tty_io.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/char/tty_io.c 2003-07-19 17:06:13.000000000 -0700 -@@ -2106,7 +2106,7 @@ static spinlock_t tty_dev_list_lock = SP - static ssize_t show_dev(struct class_device *class_dev, char *buf) - { - struct tty_dev *tty_dev = to_tty_dev(class_dev); -- return sprintf(buf, "%04lx\n", (unsigned long)tty_dev->dev); -+ return print_dev_t(buf, tty_dev->dev); - } - static CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, NULL); - ---- linux-2.6.0-test1/drivers/char/watchdog/acquirewdt.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/char/watchdog/acquirewdt.c 2003-07-19 17:03:49.000000000 -0700 -@@ -143,7 +143,7 @@ static int acq_open(struct inode *inode, - return -EBUSY; - } - if (nowayout) -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - - /* Activate */ - acq_is_open=1; ---- linux-2.6.0-test1/drivers/char/watchdog/i810-tco.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/char/watchdog/i810-tco.c 2003-07-19 17:03:49.000000000 -0700 -@@ -25,7 +25,8 @@ - * 82801AA & 82801AB chip : document number 290655-003, 290677-004, - * 82801BA & 82801BAM chip : document number 290687-002, 298242-005, - * 82801CA & 82801CAM chip : document number 290716-001, 290718-001, -- * 82801DB & 82801E chip : document number 290744-001, 273599-001 -+ * 82801DB & 82801E chip : document number 290744-001, 273599-001, -+ * 82801EB & 82801ER chip : document number 252516-001 - * - * 20000710 Nils Faerber - * Initial Version 0.01 -@@ -42,9 +43,11 @@ - * clean up ioctls (WDIOC_GETSTATUS, WDIOC_GETBOOTSTATUS and - * WDIOC_SETOPTIONS), made i810tco_getdevice __init, - * removed boot_status, removed tco_timer_read, -- * added support for 82801DB and 82801E chipset, general cleanup. -+ * added support for 82801DB and 82801E chipset, -+ * added support for 82801EB and 8280ER chipset, -+ * general cleanup. - */ -- -+ - #include - #include - #include -@@ -164,7 +167,7 @@ static int tco_timer_settimer (unsigned - * Reload (trigger) the timer. Lock is needed so we don't reload it during - * a reprogramming event - */ -- -+ - static void tco_timer_reload (void) - { - spin_lock(&tco_lock); -@@ -307,6 +310,7 @@ static struct pci_device_id i810tco_pci_ - { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, PCI_ANY_ID, PCI_ANY_ID, }, - { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_0, PCI_ANY_ID, PCI_ANY_ID, }, - { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801E_0, PCI_ANY_ID, PCI_ANY_ID, }, -+ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, PCI_ANY_ID, PCI_ANY_ID, }, - { 0, }, - }; - MODULE_DEVICE_TABLE (pci, i810tco_pci_tbl); ---- linux-2.6.0-test1/drivers/char/watchdog/i810-tco.h 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/char/watchdog/i810-tco.h 2003-07-19 17:03:49.000000000 -0700 -@@ -1,5 +1,5 @@ - /* -- * i810-tco 0.05: TCO timer driver for i8xx chipsets -+ * i810-tco: TCO timer driver for i8xx chipsets - * - * (c) Copyright 2000 kernel concepts , All Rights Reserved. - * http://www.kernelconcepts.de -@@ -8,7 +8,7 @@ - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. -- * -+ * - * Neither kernel concepts nor Nils Faerber admit liability nor provide - * warranty for any of this software. This material is provided - * "AS-IS" and at no charge. ---- linux-2.6.0-test1/drivers/char/watchdog/ib700wdt.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/drivers/char/watchdog/ib700wdt.c 2003-07-19 17:03:49.000000000 -0700 -@@ -230,7 +230,7 @@ ibwdt_open(struct inode *inode, struct f - return -EBUSY; - } - if (nowayout) -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - - /* Activate */ - ibwdt_is_open = 1; ---- linux-2.6.0-test1/drivers/char/watchdog/indydog.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/char/watchdog/indydog.c 2003-07-19 17:03:49.000000000 -0700 -@@ -54,7 +54,7 @@ static int indydog_open(struct inode *in - return -EBUSY; - - if (nowayout) -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - - /* - * Activate timer ---- linux-2.6.0-test1/drivers/char/watchdog/machzwd.c 2003-06-14 12:17:59.000000000 -0700 -+++ 25/drivers/char/watchdog/machzwd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -392,7 +392,7 @@ static int zf_open(struct inode *inode, - } - - if (nowayout) -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - - zf_is_open = 1; - ---- linux-2.6.0-test1/drivers/char/watchdog/pcwd.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/char/watchdog/pcwd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -431,7 +431,7 @@ static int pcwd_open(struct inode *ino, - atomic_inc( &open_allowed ); - return -EBUSY; - } -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - /* Enable the port */ - if (revision == PCWD_REVISION_C) { - spin_lock(&io_lock); ---- linux-2.6.0-test1/drivers/char/watchdog/sbc60xxwdt.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/char/watchdog/sbc60xxwdt.c 2003-07-19 17:03:49.000000000 -0700 -@@ -207,9 +207,8 @@ static int fop_open(struct inode * inode - /* Just in case we're already talking to someone... */ - if(wdt_is_open) - return -EBUSY; -- if (nowayout) { -- MOD_INC_USE_COUNT; -- } -+ if (nowayout) -+ __module_get(THIS_MODULE); - /* Good, fire up the show */ - wdt_is_open = 1; - wdt_startup(); ---- linux-2.6.0-test1/drivers/char/watchdog/sc520_wdt.c 2003-06-14 12:18:20.000000000 -0700 -+++ 25/drivers/char/watchdog/sc520_wdt.c 2003-07-19 17:03:49.000000000 -0700 -@@ -231,7 +231,7 @@ static int fop_open(struct inode * inode - /* Good, fire up the show */ - wdt_startup(); - if (nowayout) -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - - return 0; - default: ---- linux-2.6.0-test1/drivers/char/watchdog/shwdt.c 2003-06-14 12:18:06.000000000 -0700 -+++ 25/drivers/char/watchdog/shwdt.c 2003-07-19 17:03:49.000000000 -0700 -@@ -3,7 +3,7 @@ - * - * Watchdog driver for integrated watchdog in the SuperH processors. - * -- * Copyright (C) 2001, 2002 Paul Mundt -+ * Copyright (C) 2001, 2002, 2003 Paul Mundt - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the -@@ -12,6 +12,10 @@ - * - * 14-Dec-2001 Matt Domsch - * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT -+ * -+ * 19-Apr-2002 Rob Radez -+ * Added expect close support, made emulated timeout runtime changeable -+ * general cleanups, add some ioctls - */ - #include - #include -@@ -22,76 +26,50 @@ - #include - #include - #include -+#include - - #include - #include -- --#if defined(CONFIG_CPU_SH5) -- #define WTCNT CPRC_BASE + 0x10 -- #define WTCSR CPRC_BASE + 0x18 --#elif defined(CONFIG_CPU_SH4) -- #define WTCNT 0xffc00008 -- #define WTCSR 0xffc0000c --#elif defined(CONFIG_CPU_SH3) -- #define WTCNT 0xffffff84 -- #define WTCSR 0xffffff86 --#else -- #error "Can't use SuperH watchdog on this platform" --#endif -- --#define WTCNT_HIGH 0x5a00 --#define WTCSR_HIGH 0xa500 -- --#define WTCSR_TME 0x80 --#define WTCSR_WT 0x40 --#define WTCSR_RSTS 0x20 --#define WTCSR_WOVF 0x10 --#define WTCSR_IOVF 0x08 --#define WTCSR_CKS2 0x04 --#define WTCSR_CKS1 0x02 --#define WTCSR_CKS0 0x01 -- --/* -- * CKS0-2 supports a number of clock division ratios. At the time the watchdog -- * is enabled, it defaults to a 41 usec overflow period .. we overload this to -- * something a little more reasonable, and really can't deal with anything -- * lower than WTCSR_CKS_1024, else we drop back into the usec range. -- * -- * Clock Division Ratio Overflow Period -- * -------------------------------------------- -- * 1/32 (initial value) 41 usecs -- * 1/64 82 usecs -- * 1/128 164 usecs -- * 1/256 328 usecs -- * 1/512 656 usecs -- * 1/1024 1.31 msecs -- * 1/2048 2.62 msecs -- * 1/4096 5.25 msecs -- */ --#define WTCSR_CKS_32 0x00 --#define WTCSR_CKS_64 0x01 --#define WTCSR_CKS_128 0x02 --#define WTCSR_CKS_256 0x03 --#define WTCSR_CKS_512 0x04 --#define WTCSR_CKS_1024 0x05 --#define WTCSR_CKS_2048 0x06 --#define WTCSR_CKS_4096 0x07 -+#include - - /* -- * Default clock division ratio is 5.25 msecs. Overload this at module load -- * time. Any value not in the msec range will default to a timeout of one -- * jiffy, which exceeds the usec overflow periods. -+ * Default clock division ratio is 5.25 msecs. For an additional table of -+ * values, consult the asm-sh/watchdog.h. Overload this at module load -+ * time. -+ * -+ * In order for this to work reliably we need to have HZ set to 1000 or -+ * something quite higher than 100 (or we need a proper high-res timer -+ * implementation that will deal with this properly), otherwise the 10ms -+ * resolution of a jiffy is enough to trigger the overflow. For things like -+ * the SH-4 and SH-5, this isn't necessarily that big of a problem, though -+ * for the SH-2 and SH-3, this isn't recommended unless the WDT is absolutely -+ * necssary. -+ * -+ * As a result of this timing problem, the only modes that are particularly -+ * feasible are the 4096 and the 2048 divisors, which yeild 5.25 and 2.62ms -+ * overflow periods respectively. -+ * -+ * Also, since we can't really expect userspace to be responsive enough -+ * before the overflow happens, we maintain two seperate timers .. One in -+ * the kernel for clearing out WOVF every 2ms or so (again, this depends on -+ * HZ == 1000), and another for monitoring userspace writes to the WDT device. -+ * -+ * As such, we currently use a configurable heartbeat interval which defaults -+ * to 30s. In this case, the userspace daemon is only responsible for periodic -+ * writes to the device before the next heartbeat is scheduled. If the daemon -+ * misses its deadline, the kernel timer will allow the WDT to overflow. - */ - static int clock_division_ratio = WTCSR_CKS_4096; - --#define msecs_to_jiffies(msecs) (jiffies + ((HZ * msecs + 999) / 1000)) -+#define msecs_to_jiffies(msecs) (jiffies + (HZ * msecs + 9999) / 10000) - #define next_ping_period(cks) msecs_to_jiffies(cks - 4) --#define user_ping_period(cks) (next_ping_period(cks) * 10) - --static unsigned long sh_is_open = 0; -+static unsigned long shwdt_is_open; - static struct watchdog_info sh_wdt_info; -+static char shwdt_expect_close; - static struct timer_list timer; - static unsigned long next_heartbeat; -+static int heartbeat = 30; - - #ifdef CONFIG_WATCHDOG_NOWAYOUT - static int nowayout = 1; -@@ -99,35 +77,6 @@ static int nowayout = 1; - static int nowayout = 0; - #endif - --MODULE_PARM(nowayout,"i"); --MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)"); -- --/** -- * sh_wdt_write_cnt - Write to Counter -- * -- * @val: Value to write -- * -- * Writes the given value @val to the lower byte of the timer counter. -- * The upper byte is set manually on each write. -- */ --static void sh_wdt_write_cnt(__u8 val) --{ -- ctrl_outw(WTCNT_HIGH | (__u16)val, WTCNT); --} -- --/** -- * sh_wdt_write_csr - Write to Control/Status Register -- * -- * @val: Value to write -- * -- * Writes the given value @val to the lower byte of the control/status -- * register. The upper byte is set manually on each write. -- */ --static void sh_wdt_write_csr(__u8 val) --{ -- ctrl_outw(WTCSR_HIGH | (__u16)val, WTCSR); --} -- - /** - * sh_wdt_start - Start the Watchdog - * -@@ -135,13 +84,44 @@ static void sh_wdt_write_csr(__u8 val) - */ - static void sh_wdt_start(void) - { -- timer.expires = next_ping_period(clock_division_ratio); -- next_heartbeat = user_ping_period(clock_division_ratio); -- add_timer(&timer); -+ __u8 csr; -+ -+ mod_timer(&timer, next_ping_period(clock_division_ratio)); -+ next_heartbeat = jiffies + (heartbeat * HZ); -+ -+ csr = sh_wdt_read_csr(); -+ csr |= WTCSR_WT | clock_division_ratio; -+ sh_wdt_write_csr(csr); - -- sh_wdt_write_csr(WTCSR_WT | WTCSR_CKS_4096); - sh_wdt_write_cnt(0); -- sh_wdt_write_csr((ctrl_inb(WTCSR) | WTCSR_TME)); -+ -+ /* -+ * These processors have a bit of an inconsistent initialization -+ * process.. starting with SH-3, RSTS was moved to WTCSR, and the -+ * RSTCSR register was removed. -+ * -+ * On the SH-2 however, in addition with bits being in different -+ * locations, we must deal with RSTCSR outright.. -+ */ -+ csr = sh_wdt_read_csr(); -+ csr |= WTCSR_TME; -+ csr &= ~WTCSR_RSTS; -+ sh_wdt_write_csr(csr); -+ -+#ifdef CONFIG_CPU_SH2 -+ /* -+ * Whoever came up with the RSTCSR semantics must've been smoking -+ * some of the good stuff, since in addition to the WTCSR/WTCNT write -+ * brain-damage, it's managed to fuck things up one step further.. -+ * -+ * If we need to clear the WOVF bit, the upper byte has to be 0xa5.. -+ * but if we want to touch RSTE or RSTS, the upper byte has to be -+ * 0x5a.. -+ */ -+ csr = sh_wdt_read_rstcsr(); -+ csr &= ~RSTCSR_RSTS; -+ sh_wdt_write_rstcsr(csr); -+#endif - } - - /** -@@ -151,9 +131,13 @@ static void sh_wdt_start(void) - */ - static void sh_wdt_stop(void) - { -+ __u8 csr; -+ - del_timer(&timer); - -- sh_wdt_write_csr((ctrl_inb(WTCSR) & ~WTCSR_TME)); -+ csr = sh_wdt_read_csr(); -+ csr &= ~WTCSR_TME; -+ sh_wdt_write_csr(csr); - } - - /** -@@ -166,11 +150,15 @@ static void sh_wdt_stop(void) - static void sh_wdt_ping(unsigned long data) - { - if (time_before(jiffies, next_heartbeat)) { -- sh_wdt_write_csr((ctrl_inb(WTCSR) & ~WTCSR_IOVF)); -+ __u8 csr; -+ -+ csr = sh_wdt_read_csr(); -+ csr &= ~WTCSR_IOVF; -+ sh_wdt_write_csr(csr); -+ - sh_wdt_write_cnt(0); - -- timer.expires = next_ping_period(clock_division_ratio); -- add_timer(&timer); -+ mod_timer(&timer, next_ping_period(clock_division_ratio)); - } - } - -@@ -184,21 +172,12 @@ static void sh_wdt_ping(unsigned long da - */ - static int sh_wdt_open(struct inode *inode, struct file *file) - { -- switch (minor(inode->i_rdev)) { -- case WATCHDOG_MINOR: -- if (test_and_set_bit(0, &sh_is_open)) -- return -EBUSY; -+ if (test_and_set_bit(0, &shwdt_is_open)) -+ return -EBUSY; -+ if (nowayout) -+ __module_get(THIS_MODULE); - -- if (nowayout) { -- MOD_INC_USE_COUNT; -- } -- -- sh_wdt_start(); -- -- break; -- default: -- return -ENODEV; -- } -+ sh_wdt_start(); - - return 0; - } -@@ -213,33 +192,20 @@ static int sh_wdt_open(struct inode *ino - */ - static int sh_wdt_close(struct inode *inode, struct file *file) - { -- if (minor(inode->i_rdev) == WATCHDOG_MINOR) { -- if (!nowayout) { -- sh_wdt_stop(); -- } -- clear_bit(0, &sh_is_open); -+ if (!nowayout && shwdt_expect_close == 42) { -+ sh_wdt_stop(); -+ } else { -+ printk(KERN_CRIT "shwdt: Unexpected close, not stopping watchdog!\n"); -+ next_heartbeat = jiffies + (heartbeat * HZ); - } -+ -+ clear_bit(0, &shwdt_is_open); -+ shwdt_expect_close = 0; - - return 0; - } - - /** -- * sh_wdt_read - Read from Device -- * -- * @file: file handle of device -- * @buf: buffer to write to -- * @count: length of buffer -- * @ppos: offset -- * -- * Unsupported. -- */ --static ssize_t sh_wdt_read(struct file *file, char *buf, -- size_t count, loff_t *ppos) --{ -- return -EINVAL; --} -- --/** - * sh_wdt_write - Write to Device - * - * @file: file handle of device -@@ -257,11 +223,21 @@ static ssize_t sh_wdt_write(struct file - return -ESPIPE; - - if (count) { -- next_heartbeat = user_ping_period(clock_division_ratio); -- return 1; -+ size_t i; -+ -+ shwdt_expect_close = 0; -+ -+ for (i = 0; i != count; i++) { -+ char c; -+ if (get_user(c, buf + i)) -+ return -EFAULT; -+ if (c == 'V') -+ shwdt_expect_close = 42; -+ } -+ next_heartbeat = jiffies + (heartbeat * HZ); - } - -- return 0; -+ return count; - } - - /** -@@ -278,6 +254,8 @@ static ssize_t sh_wdt_write(struct file - static int sh_wdt_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, unsigned long arg) - { -+ int new_timeout; -+ - switch (cmd) { - case WDIOC_GETSUPPORT: - if (copy_to_user((struct watchdog_info *)arg, -@@ -288,17 +266,41 @@ static int sh_wdt_ioctl(struct inode *in - - break; - case WDIOC_GETSTATUS: -- if (copy_to_user((int *)arg, -- &sh_is_open, -- sizeof(int))) { -+ case WDIOC_GETBOOTSTATUS: -+ return put_user(0, (int *)arg); -+ case WDIOC_KEEPALIVE: -+ next_heartbeat = jiffies + (heartbeat * HZ); -+ -+ break; -+ case WDIOC_SETTIMEOUT: -+ if (get_user(new_timeout, (int *)arg)) - return -EFAULT; -+ if (new_timeout < 1 || new_timeout > 3600) /* arbitrary upper limit */ -+ return -EINVAL; -+ heartbeat = new_timeout; -+ next_heartbeat = jiffies + (heartbeat * HZ); -+ /* Fall */ -+ case WDIOC_GETTIMEOUT: -+ return put_user(heartbeat, (int *)arg); -+ case WDIOC_SETOPTIONS: -+ { -+ int options, retval = -EINVAL; -+ -+ if (get_user(options, (int *)arg)) -+ return -EFAULT; -+ -+ if (options & WDIOS_DISABLECARD) { -+ sh_wdt_stop(); -+ retval = 0; - } - -- break; -- case WDIOC_KEEPALIVE: -- next_heartbeat = user_ping_period(clock_division_ratio); -+ if (options & WDIOS_ENABLECARD) { -+ sh_wdt_start(); -+ retval = 0; -+ } - -- break; -+ return retval; -+ } - default: - return -ENOTTY; - } -@@ -328,7 +330,7 @@ static int sh_wdt_notify_sys(struct noti - - static struct file_operations sh_wdt_fops = { - .owner = THIS_MODULE, -- .read = sh_wdt_read, -+ .llseek = no_llseek, - .write = sh_wdt_write, - .ioctl = sh_wdt_ioctl, - .open = sh_wdt_open, -@@ -336,21 +338,20 @@ static struct file_operations sh_wdt_fop - }; - - static struct watchdog_info sh_wdt_info = { -- .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE, -- .firmware_version = 1, -- .identity = "SH WDT", -+ .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE, -+ .firmware_version = 1, -+ .identity = "SH WDT", - }; - - static struct notifier_block sh_wdt_notifier = { -- .notifier_call = sh_wdt_notify_sys, -- .next = NULL, -- .priority = 0 -+ .notifier_call = sh_wdt_notify_sys, -+ .priority = 0, - }; - - static struct miscdevice sh_wdt_miscdev = { -- .minor = WATCHDOG_MINOR, -- .name = "watchdog", -- .fops &sh_wdt_fops, -+ .minor = WATCHDOG_MINOR, -+ .name = "watchdog", -+ .fops = &sh_wdt_fops, - }; - - /** -@@ -366,23 +367,8 @@ static int __init sh_wdt_init(void) - return -EINVAL; - } - -- if (!request_region(WTCNT, 1, "shwdt")) { -- printk(KERN_ERR "shwdt: Can't request WTCNT region\n"); -- misc_deregister(&sh_wdt_miscdev); -- return -ENXIO; -- } -- -- if (!request_region(WTCSR, 1, "shwdt")) { -- printk(KERN_ERR "shwdt: Can't request WTCSR region\n"); -- release_region(WTCNT, 1); -- misc_deregister(&sh_wdt_miscdev); -- return -ENXIO; -- } -- - if (register_reboot_notifier(&sh_wdt_notifier)) { - printk(KERN_ERR "shwdt: Can't register reboot notifier\n"); -- release_region(WTCSR, 1); -- release_region(WTCNT, 1); - misc_deregister(&sh_wdt_miscdev); - return -EINVAL; - } -@@ -403,16 +389,16 @@ static int __init sh_wdt_init(void) - static void __exit sh_wdt_exit(void) - { - unregister_reboot_notifier(&sh_wdt_notifier); -- release_region(WTCSR, 1); -- release_region(WTCNT, 1); - misc_deregister(&sh_wdt_miscdev); - } - --MODULE_AUTHOR("Paul Mundt "); -+MODULE_AUTHOR("Paul Mundt "); - MODULE_DESCRIPTION("SuperH watchdog driver"); - MODULE_LICENSE("GPL"); - MODULE_PARM(clock_division_ratio, "i"); - MODULE_PARM_DESC(clock_division_ratio, "Clock division ratio. Valid ranges are from 0x5 (1.31ms) to 0x7 (5.25ms). Defaults to 0x7."); -+MODULE_PARM(nowayout,"i"); -+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)"); - - module_init(sh_wdt_init); - module_exit(sh_wdt_exit); ---- linux-2.6.0-test1/drivers/char/watchdog/softdog.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/char/watchdog/softdog.c 2003-07-19 17:03:49.000000000 -0700 -@@ -104,9 +104,8 @@ static int softdog_open(struct inode *in - { - if(test_and_set_bit(0, &timer_alive)) - return -EBUSY; -- if (nowayout) { -- MOD_INC_USE_COUNT; -- } -+ if (nowayout) -+ __module_get(THIS_MODULE); - /* - * Activate timer - */ ---- linux-2.6.0-test1/drivers/char/watchdog/wdt977.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/char/watchdog/wdt977.c 2003-07-19 17:03:49.000000000 -0700 -@@ -16,6 +16,8 @@ - * 19-Dec-2001 Woody Suwalski: Netwinder fixes, ioctl interface - * 06-Jan-2002 Woody Suwalski: For compatibility, convert all timeouts - * from minutes to seconds. -+ * 07-Jul-2003 Daniele Bellucci: Audit return code of misc_register in -+ * nwwatchdog_init. - */ - - #include -@@ -99,7 +101,7 @@ static int wdt977_open(struct inode *ino - - if (nowayout) - { -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - - /* do not permit disabling the watchdog by writing 0 to reg. 0xF2 */ - if (!timeoutM) timeoutM = DEFAULT_TIMEOUT; -@@ -343,12 +345,14 @@ static struct miscdevice wdt977_miscdev= - - static int __init nwwatchdog_init(void) - { -+ int retval; - if (!machine_is_netwinder()) - return -ENODEV; - -- misc_register(&wdt977_miscdev); -- printk(KERN_INFO "Wdt977 Watchdog sleeping.\n"); -- return 0; -+ retval = misc_register(&wdt977_miscdev); -+ if (!retval) -+ printk(KERN_INFO "Wdt977 Watchdog sleeping.\n"); -+ return retval; - } - - static void __exit nwwatchdog_exit(void) ---- linux-2.6.0-test1/drivers/char/watchdog/wdt_pci.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/char/watchdog/wdt_pci.c 2003-07-19 17:03:49.000000000 -0700 -@@ -367,7 +367,7 @@ static int wdtpci_open(struct inode *ino - return -EBUSY; - - if (nowayout) { -- MOD_INC_USE_COUNT; -+ __module_get(THIS_MODULE); - } - /* - * Activate ---- linux-2.6.0-test1/drivers/fc4/fc.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/fc4/fc.c 2003-07-19 17:03:49.000000000 -0700 -@@ -33,7 +33,6 @@ - #include - #include - #include --#include - - #include - #include ---- linux-2.6.0-test1/drivers/fc4/fcp_impl.h 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/fc4/fcp_impl.h 2003-07-19 17:03:49.000000000 -0700 -@@ -8,7 +8,6 @@ - #define _FCP_SCSI_H - - #include --#include - #include "../scsi/scsi.h" - - #include "fc.h" ---- linux-2.6.0-test1/drivers/i2c/i2c-dev.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/i2c/i2c-dev.c 2003-07-19 17:06:13.000000000 -0700 -@@ -118,7 +118,7 @@ static void return_i2c_dev(struct i2c_de - static ssize_t show_dev(struct class_device *class_dev, char *buf) - { - struct i2c_dev *i2c_dev = to_i2c_dev(class_dev); -- return sprintf(buf, "%04x\n", MKDEV(I2C_MAJOR, i2c_dev->minor)); -+ return print_dev_t(buf, MKDEV(I2C_MAJOR, i2c_dev->minor)); - } - static CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, NULL); - ---- linux-2.6.0-test1/drivers/ide/ide-disk.c 2003-06-16 22:32:21.000000000 -0700 -+++ 25/drivers/ide/ide-disk.c 2003-07-19 17:07:19.000000000 -0700 -@@ -1665,6 +1665,10 @@ static void idedisk_setup (ide_drive_t * - drive->no_io_32bit = id->dword_io ? 1 : 0; - if (drive->id->cfs_enable_2 & 0x3000) - write_cache(drive, (id->cfs_enable_2 & 0x3000)); -+ -+#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT -+ HWIF(drive)->ide_dma_queued_on(drive); -+#endif - } - - static int idedisk_cleanup (ide_drive_t *drive) ---- linux-2.6.0-test1/drivers/ide/ide-dma.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/ide/ide-dma.c 2003-07-19 17:07:19.000000000 -0700 -@@ -442,9 +442,10 @@ static int config_drive_for_dma (ide_dri - * the driver to resolve the problem, if a DMA transfer is still - * in progress we continue to wait (arguably we need to add a - * secondary 'I don't care what the drive thinks' timeout here) -- * Finally if we have an interrupt but for some reason got the -- * timeout first we complete the I/O. This can occur if an -- * interrupt is lost or due to bugs. -+ * Finally if we have an interrupt we let it complete the I/O. -+ * But only one time - we clear expiry and if it's still not -+ * completed after WAIT_CMD, we error and retry in PIO. -+ * This can occur if an interrupt is lost or due to hang or bugs. - */ - - static int dma_timer_expiry (ide_drive_t *drive) -@@ -461,19 +462,16 @@ static int dma_timer_expiry (ide_drive_t - HWGROUP(drive)->expiry = NULL; /* one free ride for now */ - - /* 1 dmaing, 2 error, 4 intr */ -- -- if (dma_stat & 2) { /* ERROR */ -- (void) hwif->ide_dma_end(drive); -- return DRIVER(drive)->error(drive, -- "dma_timer_expiry", hwif->INB(IDE_STATUS_REG)); -- } -+ if (dma_stat & 2) /* ERROR */ -+ return -1; -+ - if (dma_stat & 1) /* DMAing */ - return WAIT_CMD; - - if (dma_stat & 4) /* Got an Interrupt */ -- HWGROUP(drive)->handler(drive); -+ return WAIT_CMD; - -- return 0; -+ return 0; /* Status is unknown -- reset the bus */ - } - - /** -@@ -572,10 +570,6 @@ int __ide_dma_on (ide_drive_t *drive) - if (HWIF(drive)->ide_dma_host_on(drive)) - return 1; - --#ifdef CONFIG_BLK_DEV_IDE_TCQ_DEFAULT -- HWIF(drive)->ide_dma_queued_on(drive); --#endif -- - return 0; - } - ---- linux-2.6.0-test1/drivers/ide/ide-io.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/ide/ide-io.c 2003-07-19 17:03:49.000000000 -0700 -@@ -949,14 +949,14 @@ queue_next: - * happens anyway when any interrupt comes in, IDE or otherwise - * -- the kernel masks the IRQ while it is being handled. - */ -- if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq) -+ if (hwif->irq != masked_irq) - disable_irq_nosync(hwif->irq); - spin_unlock(&ide_lock); - local_irq_enable(); - /* allow other IRQs while we start this request */ - startstop = start_request(drive, rq); - spin_lock_irq(&ide_lock); -- if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq) -+ if (hwif->irq != masked_irq) - enable_irq(hwif->irq); - if (startstop == ide_released) - goto queue_next; -@@ -980,21 +980,25 @@ void do_ide_request(request_queue_t *q) - * retry the current request in pio mode instead of risking tossing it - * all away - */ --void ide_dma_timeout_retry(ide_drive_t *drive) -+static ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error) - { - ide_hwif_t *hwif = HWIF(drive); - struct request *rq; -+ ide_startstop_t ret = ide_stopped; - - /* - * end current dma transaction - */ -- (void) hwif->ide_dma_end(drive); - -- /* -- * complain a little, later we might remove some of this verbosity -- */ -- printk(KERN_WARNING "%s: timeout waiting for DMA\n", drive->name); -- (void) hwif->ide_dma_timeout(drive); -+ if (error < 0) { -+ printk(KERN_WARNING "%s: DMA timeout error\n", drive->name); -+ (void)HWIF(drive)->ide_dma_end(drive); -+ ret = DRIVER(drive)->error(drive, "dma timeout error", -+ hwif->INB(IDE_STATUS_REG)); -+ } else { -+ printk(KERN_WARNING "%s: DMA timeout retry\n", drive->name); -+ (void) hwif->ide_dma_timeout(drive); -+ } - - /* - * disable dma for now, but remember that we did so because of -@@ -1018,9 +1022,9 @@ void ide_dma_timeout_retry(ide_drive_t * - rq->hard_cur_sectors = rq->current_nr_sectors; - if (rq->bio) - rq->buffer = NULL; --} - --EXPORT_SYMBOL(ide_dma_timeout_retry); -+ return ret; -+} - - /** - * ide_timer_expiry - handle lack of an IDE interrupt -@@ -1041,11 +1045,10 @@ void ide_timer_expiry (unsigned long dat - ide_hwgroup_t *hwgroup = (ide_hwgroup_t *) data; - ide_handler_t *handler; - ide_expiry_t *expiry; -- unsigned long flags; -- unsigned long wait; -+ unsigned long flags; -+ unsigned long wait = -1; - - spin_lock_irqsave(&ide_lock, flags); -- del_timer(&hwgroup->timer); - - if ((handler = hwgroup->handler) == NULL) { - /* -@@ -1072,7 +1075,7 @@ void ide_timer_expiry (unsigned long dat - } - if ((expiry = hwgroup->expiry) != NULL) { - /* continue */ -- if ((wait = expiry(drive)) != 0) { -+ if ((wait = expiry(drive)) > 0) { - /* reset timer */ - hwgroup->timer.expires = jiffies + wait; - add_timer(&hwgroup->timer); -@@ -1107,15 +1110,15 @@ void ide_timer_expiry (unsigned long dat - startstop = handler(drive); - } else { - if (drive->waiting_for_dma) { -- startstop = ide_stopped; -- ide_dma_timeout_retry(drive); -+ startstop = ide_dma_timeout_retry(drive, wait); - } else -- startstop = DRIVER(drive)->error(drive, "irq timeout", hwif->INB(IDE_STATUS_REG)); -+ startstop = -+ DRIVER(drive)->error(drive, "irq timeout", hwif->INB(IDE_STATUS_REG)); - } - set_recovery_timer(hwif); - drive->service_time = jiffies - drive->service_start; -- enable_irq(hwif->irq); - spin_lock_irq(&ide_lock); -+ enable_irq(hwif->irq); - if (startstop == ide_stopped) - hwgroup->busy = 0; - } ---- linux-2.6.0-test1/drivers/ide/Kconfig 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/ide/Kconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -521,7 +521,7 @@ config BLK_DEV_ALI15X3 - - If you say Y here, you also need to say Y to "Use DMA by default - when available", above. Please read the comments at the top of -- . -+ . - - If unsure, say N. - -@@ -608,7 +608,7 @@ config HPT34X_AUTODMA - depends on BLK_DEV_HPT34X && IDEDMA_PCI_WIP - help - This is a dangerous thing to attempt currently! Please read the -- comments at the top of . If you say Y -+ comments at the top of . If you say Y - here, then say Y to "Use DMA by default when available" as well. - - If unsure, say N. -@@ -670,14 +670,14 @@ config BLK_DEV_NS87415 - This driver adds detection and support for the NS87415 chip - (used in SPARC64, among others). - -- Please read the comments at the top of . -+ Please read the comments at the top of . - - config BLK_DEV_OPTI621 - tristate "OPTi 82C621 chipset enhanced support (EXPERIMENTAL)" - depends on PCI && BLK_DEV_IDEPCI && EXPERIMENTAL - help - This is a driver for the OPTi 82C621 EIDE controller. -- Please read the comments at the top of . -+ Please read the comments at the top of . - - config BLK_DEV_PDC202XX_OLD - tristate "PROMISE PDC202{46|62|65|67} support" -@@ -696,7 +696,7 @@ config PDC202XX_BURST - when the PDC20265 BIOS has been disabled (for faster boot up). - - Please read the comments at the top of -- . -+ . - - If unsure, say N. - -@@ -754,7 +754,7 @@ config BLK_DEV_SIS5513 - If you say Y here, you need to say Y to "Use DMA by default when - available" as well. - -- Please read the comments at the top of . -+ Please read the comments at the top of . - - config BLK_DEV_SLC90E66 - tristate "SLC90E66 chipset support" -@@ -770,7 +770,7 @@ config BLK_DEV_SLC90E66 - available" as well. - - Please read the comments at the top of -- drivers/ide/slc90e66.c. -+ drivers/ide/pci/slc90e66.c. - - config BLK_DEV_TRM290 - tristate "Tekram TRM290 chipset support" -@@ -779,7 +779,7 @@ config BLK_DEV_TRM290 - This driver adds support for bus master DMA transfers - using the Tekram TRM290 PCI IDE chip. Volunteers are - needed for further tweaking and development. -- Please read the comments at the top of . -+ Please read the comments at the top of . - - config BLK_DEV_VIA82CXXX - tristate "VIA82CXXX chipset support" -@@ -1010,7 +1010,7 @@ config BLK_DEV_ALI14XX - boot parameter. It enables support for the secondary IDE interface - of the ALI M1439/1443/1445/1487/1489 chipsets, and permits faster - I/O speeds to be set as well. See the files -- and for -+ and for - more info. - - config BLK_DEV_DTC2278 -@@ -1021,7 +1021,7 @@ config BLK_DEV_DTC2278 - boot parameter. It enables support for the secondary IDE interface - of the DTC-2278 card, and permits faster I/O speeds to be set as - well. See the and -- files for more info. -+ files for more info. - - config BLK_DEV_HT6560B - tristate "Holtek HT6560B support" -@@ -1031,7 +1031,7 @@ config BLK_DEV_HT6560B - boot parameter. It enables support for the secondary IDE interface - of the Holtek card, and permits faster I/O speeds to be set as well. - See the and -- files for more info. -+ files for more info. - - config BLK_DEV_PDC4030 - tristate "PROMISE DC4030 support (EXPERIMENTAL)" -@@ -1044,7 +1044,7 @@ config BLK_DEV_PDC4030 - supported (and probably never will be since I don't think the cards - support them). This driver is enabled at runtime using the "ide0=dc4030" - or "ide1=dc4030" kernel boot parameter. See the -- file for more info. -+ file for more info. - - config BLK_DEV_QD65XX - tristate "QDI QD65xx support" -@@ -1052,7 +1052,7 @@ config BLK_DEV_QD65XX - help - This driver is enabled at runtime using the "ide0=qd65xx" kernel - boot parameter. It permits faster I/O speeds to be set. See the -- and for -+ and for - more info. - - config BLK_DEV_UMC8672 -@@ -1063,7 +1063,7 @@ config BLK_DEV_UMC8672 - boot parameter. It enables support for the secondary IDE interface - of the UMC-8672, and permits faster I/O speeds to be set as well. - See the files and -- for more info. -+ for more info. - - config BLK_DEV_HD_ONLY - bool "Old hard disk (MFM/RLL/IDE) driver" -@@ -1132,7 +1132,7 @@ config BLK_DEV_PDC202XX - available" as well. - - Please read the comments at the top of -- . -+ . - - If unsure, say N. - ---- linux-2.6.0-test1/drivers/ide/legacy/hd98.c 2003-06-14 12:18:28.000000000 -0700 -+++ 25/drivers/ide/legacy/hd98.c 2003-07-19 17:03:49.000000000 -0700 -@@ -46,8 +46,6 @@ - #include - #include - --#include -- - #include "io_ports.h" - - #ifdef __arm__ ---- linux-2.6.0-test1/drivers/ide/legacy/hd.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/ide/legacy/hd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -26,7 +26,7 @@ - /* Uncomment the following if you want verbose error reports. */ - /* #define VERBOSE_ERRORS */ - --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/ide/ppc/mpc8xx.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/ide/ppc/mpc8xx.c 2003-07-19 17:03:49.000000000 -0700 -@@ -27,7 +27,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/ieee1394/amdtp.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/ieee1394/amdtp.c 2003-07-19 17:03:49.000000000 -0700 -@@ -62,6 +62,12 @@ - * - Maybe make an ALSA interface, that is, create a file_ops - * implementation that recognizes ALSA ioctls and uses defaults for - * things that can't be controlled through ALSA (iso channel). -+ * -+ * Changes: -+ * -+ * - Audit copy_from_user in amdtp_write. -+ * Daniele Bellucci -+ * - */ - - #include -@@ -1112,7 +1118,8 @@ static ssize_t amdtp_write(struct file * - - for (i = 0; i < count; i += length) { - p = buffer_put_bytes(s->input, count - i, &length); -- copy_from_user(p, buffer + i, length); -+ if (copy_from_user(p, buffer + i, length)) -+ return -EFAULT; - if (s->input->length < s->input->size) - continue; - ---- linux-2.6.0-test1/drivers/ieee1394/sbp2.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/ieee1394/sbp2.c 2003-07-19 17:03:49.000000000 -0700 -@@ -52,7 +52,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/input/keyboard/sunkbd.c 2003-06-16 22:32:21.000000000 -0700 -+++ 25/drivers/input/keyboard/sunkbd.c 2003-07-19 17:03:49.000000000 -0700 -@@ -80,8 +80,8 @@ struct sunkbd { - char name[64]; - char phys[32]; - char type; -- char reset; -- char layout; -+ volatile char reset; -+ volatile char layout; - }; - - /* ---- linux-2.6.0-test1/drivers/input/mouse/psmouse-base.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/input/mouse/psmouse-base.c 2003-07-19 17:07:16.000000000 -0700 -@@ -200,7 +200,7 @@ int psmouse_command(struct psmouse *psmo - psmouse->cmdcnt = receive; - - if (command == PSMOUSE_CMD_RESET_BAT) -- timeout = 2000000; /* 2 sec */ -+ timeout = 4000000; /* 4 sec */ - - if (command & 0xff) - if (psmouse_sendbyte(psmouse, command & 0xff)) ---- linux-2.6.0-test1/drivers/md/dm.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/md/dm.c 2003-07-19 17:03:49.000000000 -0700 -@@ -8,7 +8,6 @@ - - #include - #include --#include - #include - #include - #include -@@ -63,6 +62,12 @@ struct mapped_device { - * io objects are allocated from here. - */ - mempool_t *io_pool; -+ -+ /* -+ * Event handling. -+ */ -+ uint32_t event_nr; -+ wait_queue_head_t eventq; - }; - - #define MIN_IOS 256 -@@ -510,6 +515,11 @@ static int dm_request(request_queue_t *q - down_read(&md->lock); - } - -+ if (!md->map) { -+ bio_io_error(bio, bio->bi_size); -+ return 0; -+ } -+ - __split_bio(md, bio); - up_read(&md->lock); - return 0; -@@ -619,6 +629,8 @@ static struct mapped_device *alloc_dev(u - - atomic_set(&md->pending, 0); - init_waitqueue_head(&md->wait); -+ init_waitqueue_head(&md->eventq); -+ - return md; - } - -@@ -634,6 +646,16 @@ static void free_dev(struct mapped_devic - /* - * Bind a table to the device. - */ -+static void event_callback(void *context) -+{ -+ struct mapped_device *md = (struct mapped_device *) context; -+ -+ down_write(&md->lock); -+ md->event_nr++; -+ wake_up_interruptible(&md->eventq); -+ up_write(&md->lock); -+} -+ - static int __bind(struct mapped_device *md, struct dm_table *t) - { - request_queue_t *q = &md->queue; -@@ -645,6 +667,8 @@ static int __bind(struct mapped_device * - if (size == 0) - return 0; - -+ dm_table_event_callback(md->map, event_callback, md); -+ - dm_table_get(t); - dm_table_set_restrictions(t, q); - return 0; -@@ -652,6 +676,10 @@ static int __bind(struct mapped_device * - - static void __unbind(struct mapped_device *md) - { -+ if (!md->map) -+ return; -+ -+ dm_table_event_callback(md->map, NULL, NULL); - dm_table_put(md->map); - md->map = NULL; - set_capacity(md->disk, 0); -@@ -661,35 +689,26 @@ static void __unbind(struct mapped_devic - * Constructor for a new device. - */ - static int create_aux(unsigned int minor, int persistent, -- struct dm_table *table, struct mapped_device **result) -+ struct mapped_device **result) - { -- int r; - struct mapped_device *md; - - md = alloc_dev(minor, persistent); - if (!md) - return -ENXIO; - -- r = __bind(md, table); -- if (r) { -- free_dev(md); -- return r; -- } -- dm_table_resume_targets(md->map); -- - *result = md; - return 0; - } - --int dm_create(struct dm_table *table, struct mapped_device **result) -+int dm_create(struct mapped_device **result) - { -- return create_aux(0, 0, table, result); -+ return create_aux(0, 0, result); - } - --int dm_create_with_minor(unsigned int minor, -- struct dm_table *table, struct mapped_device **result) -+int dm_create_with_minor(unsigned int minor, struct mapped_device **result) - { -- return create_aux(minor, 1, table, result); -+ return create_aux(minor, 1, result); - } - - void dm_get(struct mapped_device *md) -@@ -700,7 +719,7 @@ void dm_get(struct mapped_device *md) - void dm_put(struct mapped_device *md) - { - if (atomic_dec_and_test(&md->holders)) { -- if (!test_bit(DMF_SUSPENDED, &md->flags)) -+ if (!test_bit(DMF_SUSPENDED, &md->flags) && md->map) - dm_table_suspend_targets(md->map); - __unbind(md); - free_dev(md); -@@ -790,7 +809,8 @@ int dm_suspend(struct mapped_device *md) - down_write(&md->lock); - remove_wait_queue(&md->wait, &wait); - set_bit(DMF_SUSPENDED, &md->flags); -- dm_table_suspend_targets(md->map); -+ if (md->map) -+ dm_table_suspend_targets(md->map); - up_write(&md->lock); - - return 0; -@@ -801,7 +821,8 @@ int dm_resume(struct mapped_device *md) - struct deferred_io *def; - - down_write(&md->lock); -- if (!test_bit(DMF_SUSPENDED, &md->flags) || -+ if (!md->map || -+ !test_bit(DMF_SUSPENDED, &md->flags) || - !dm_table_get_size(md->map)) { - up_write(&md->lock); - return -EINVAL; -@@ -820,6 +841,42 @@ int dm_resume(struct mapped_device *md) - return 0; - } - -+/*----------------------------------------------------------------- -+ * Event notification. -+ *---------------------------------------------------------------*/ -+uint32_t dm_get_event_nr(struct mapped_device *md) -+{ -+ uint32_t r; -+ -+ down_read(&md->lock); -+ r = md->event_nr; -+ up_read(&md->lock); -+ -+ return r; -+} -+ -+int dm_add_wait_queue(struct mapped_device *md, wait_queue_t *wq, -+ uint32_t event_nr) -+{ -+ down_write(&md->lock); -+ if (event_nr != md->event_nr) { -+ up_write(&md->lock); -+ return 1; -+ } -+ -+ add_wait_queue(&md->eventq, wq); -+ up_write(&md->lock); -+ -+ return 0; -+} -+ -+void dm_remove_wait_queue(struct mapped_device *md, wait_queue_t *wq) -+{ -+ down_write(&md->lock); -+ remove_wait_queue(&md->eventq, wq); -+ up_write(&md->lock); -+} -+ - /* - * The gendisk is only valid as long as you have a reference - * count on 'md'. -@@ -835,7 +892,8 @@ struct dm_table *dm_get_table(struct map - - down_read(&md->lock); - t = md->map; -- dm_table_get(t); -+ if (t) -+ dm_table_get(t); - up_read(&md->lock); - - return t; ---- linux-2.6.0-test1/drivers/md/dm.h 2003-06-16 22:32:21.000000000 -0700 -+++ 25/drivers/md/dm.h 2003-07-19 17:03:49.000000000 -0700 -@@ -51,9 +51,8 @@ struct mapped_device; - * Functions for manipulating a struct mapped_device. - * Drop the reference with dm_put when you finish with the object. - *---------------------------------------------------------------*/ --int dm_create(struct dm_table *table, struct mapped_device **md); --int dm_create_with_minor(unsigned int minor, struct dm_table *table, -- struct mapped_device **md); -+int dm_create(struct mapped_device **md); -+int dm_create_with_minor(unsigned int minor, struct mapped_device **md); - - /* - * Reference counting for md. -@@ -79,6 +78,14 @@ int dm_swap_table(struct mapped_device * - struct dm_table *dm_get_table(struct mapped_device *md); - - /* -+ * Event functions. -+ */ -+uint32_t dm_get_event_nr(struct mapped_device *md); -+int dm_add_wait_queue(struct mapped_device *md, wait_queue_t *wq, -+ uint32_t event_nr); -+void dm_remove_wait_queue(struct mapped_device *md, wait_queue_t *wq); -+ -+/* - * Info functions. - */ - struct gendisk *dm_disk(struct mapped_device *md); -@@ -96,6 +103,8 @@ void dm_table_put(struct dm_table *t); - int dm_table_add_target(struct dm_table *t, const char *type, - sector_t start, sector_t len, char *params); - int dm_table_complete(struct dm_table *t); -+void dm_table_event_callback(struct dm_table *t, -+ void (*fn)(void *), void *context); - void dm_table_event(struct dm_table *t); - sector_t dm_table_get_size(struct dm_table *t); - struct dm_target *dm_table_get_target(struct dm_table *t, unsigned int index); -@@ -104,7 +113,6 @@ void dm_table_set_restrictions(struct dm - unsigned int dm_table_get_num_targets(struct dm_table *t); - struct list_head *dm_table_get_devices(struct dm_table *t); - int dm_table_get_mode(struct dm_table *t); --void dm_table_add_wait_queue(struct dm_table *t, wait_queue_t *wq); - void dm_table_suspend_targets(struct dm_table *t); - void dm_table_resume_targets(struct dm_table *t); - ---- linux-2.6.0-test1/drivers/md/dm-ioctl.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/md/dm-ioctl.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1,1134 +1,13 @@ - /* -- * Copyright (C) 2001, 2002 Sistina Software (UK) Limited. -+ * Copyright (C) 2003 Sistina Software (UK) Limited. - * - * This file is released under the GPL. - */ - --#include "dm.h" -- --#include --#include --#include - #include --#include --#include --#include --#include --#include -- --#include -- --#define DM_DRIVER_EMAIL "dm@uk.sistina.com" -- --/*----------------------------------------------------------------- -- * The ioctl interface needs to be able to look up devices by -- * name or uuid. -- *---------------------------------------------------------------*/ --struct hash_cell { -- struct list_head name_list; -- struct list_head uuid_list; -- -- char *name; -- char *uuid; -- struct mapped_device *md; --}; -- --#define NUM_BUCKETS 64 --#define MASK_BUCKETS (NUM_BUCKETS - 1) --static struct list_head _name_buckets[NUM_BUCKETS]; --static struct list_head _uuid_buckets[NUM_BUCKETS]; -- --void dm_hash_remove_all(void); -- --/* -- * Guards access to all three tables. -- */ --static DECLARE_RWSEM(_hash_lock); -- --static void init_buckets(struct list_head *buckets) --{ -- unsigned int i; -- -- for (i = 0; i < NUM_BUCKETS; i++) -- INIT_LIST_HEAD(buckets + i); --} -- --int dm_hash_init(void) --{ -- init_buckets(_name_buckets); -- init_buckets(_uuid_buckets); -- devfs_mk_dir(DM_DIR); -- return 0; --} -- --void dm_hash_exit(void) --{ -- dm_hash_remove_all(); -- devfs_remove(DM_DIR); --} -- --/*----------------------------------------------------------------- -- * Hash function: -- * We're not really concerned with the str hash function being -- * fast since it's only used by the ioctl interface. -- *---------------------------------------------------------------*/ --static unsigned int hash_str(const char *str) --{ -- const unsigned int hash_mult = 2654435387U; -- unsigned int h = 0; -- -- while (*str) -- h = (h + (unsigned int) *str++) * hash_mult; -- -- return h & MASK_BUCKETS; --} -- --/*----------------------------------------------------------------- -- * Code for looking up a device by name -- *---------------------------------------------------------------*/ --static struct hash_cell *__get_name_cell(const char *str) --{ -- struct list_head *tmp; -- struct hash_cell *hc; -- unsigned int h = hash_str(str); -- -- list_for_each (tmp, _name_buckets + h) { -- hc = list_entry(tmp, struct hash_cell, name_list); -- if (!strcmp(hc->name, str)) -- return hc; -- } -- -- return NULL; --} -- --static struct hash_cell *__get_uuid_cell(const char *str) --{ -- struct list_head *tmp; -- struct hash_cell *hc; -- unsigned int h = hash_str(str); -- -- list_for_each (tmp, _uuid_buckets + h) { -- hc = list_entry(tmp, struct hash_cell, uuid_list); -- if (!strcmp(hc->uuid, str)) -- return hc; -- } -- -- return NULL; --} -- --/*----------------------------------------------------------------- -- * Inserting, removing and renaming a device. -- *---------------------------------------------------------------*/ --static inline char *kstrdup(const char *str) --{ -- char *r = kmalloc(strlen(str) + 1, GFP_KERNEL); -- if (r) -- strcpy(r, str); -- return r; --} -- --static struct hash_cell *alloc_cell(const char *name, const char *uuid, -- struct mapped_device *md) --{ -- struct hash_cell *hc; -- -- hc = kmalloc(sizeof(*hc), GFP_KERNEL); -- if (!hc) -- return NULL; -- -- hc->name = kstrdup(name); -- if (!hc->name) { -- kfree(hc); -- return NULL; -- } -- -- if (!uuid) -- hc->uuid = NULL; -- -- else { -- hc->uuid = kstrdup(uuid); -- if (!hc->uuid) { -- kfree(hc->name); -- kfree(hc); -- return NULL; -- } -- } -- -- INIT_LIST_HEAD(&hc->name_list); -- INIT_LIST_HEAD(&hc->uuid_list); -- hc->md = md; -- return hc; --} -- --static void free_cell(struct hash_cell *hc) --{ -- if (hc) { -- kfree(hc->name); -- kfree(hc->uuid); -- kfree(hc); -- } --} -- --/* -- * devfs stuff. -- */ --static int register_with_devfs(struct hash_cell *hc) --{ -- struct gendisk *disk = dm_disk(hc->md); -- -- devfs_mk_bdev(MKDEV(disk->major, disk->first_minor), -- S_IFBLK | S_IRUSR | S_IWUSR | S_IRGRP, -- DM_DIR "/%s", hc->name); -- return 0; --} -- --static int unregister_with_devfs(struct hash_cell *hc) --{ -- devfs_remove(DM_DIR"/%s", hc->name); -- return 0; --} -- --/* -- * The kdev_t and uuid of a device can never change once it is -- * initially inserted. -- */ --int dm_hash_insert(const char *name, const char *uuid, struct mapped_device *md) --{ -- struct hash_cell *cell; -- -- /* -- * Allocate the new cells. -- */ -- cell = alloc_cell(name, uuid, md); -- if (!cell) -- return -ENOMEM; -- -- /* -- * Insert the cell into all three hash tables. -- */ -- down_write(&_hash_lock); -- if (__get_name_cell(name)) -- goto bad; -- -- list_add(&cell->name_list, _name_buckets + hash_str(name)); -- -- if (uuid) { -- if (__get_uuid_cell(uuid)) { -- list_del(&cell->name_list); -- goto bad; -- } -- list_add(&cell->uuid_list, _uuid_buckets + hash_str(uuid)); -- } -- register_with_devfs(cell); -- dm_get(md); -- up_write(&_hash_lock); -- -- return 0; -- -- bad: -- up_write(&_hash_lock); -- free_cell(cell); -- return -EBUSY; --} -- --void __hash_remove(struct hash_cell *hc) --{ -- /* remove from the dev hash */ -- list_del(&hc->uuid_list); -- list_del(&hc->name_list); -- unregister_with_devfs(hc); -- dm_put(hc->md); -- free_cell(hc); --} -- --void dm_hash_remove_all(void) --{ -- int i; -- struct hash_cell *hc; -- struct list_head *tmp, *n; -- -- down_write(&_hash_lock); -- for (i = 0; i < NUM_BUCKETS; i++) { -- list_for_each_safe (tmp, n, _name_buckets + i) { -- hc = list_entry(tmp, struct hash_cell, name_list); -- __hash_remove(hc); -- } -- } -- up_write(&_hash_lock); --} -- --int dm_hash_rename(const char *old, const char *new) --{ -- char *new_name, *old_name; -- struct hash_cell *hc; -- -- /* -- * duplicate new. -- */ -- new_name = kstrdup(new); -- if (!new_name) -- return -ENOMEM; -- -- down_write(&_hash_lock); -- -- /* -- * Is new free ? -- */ -- hc = __get_name_cell(new); -- if (hc) { -- DMWARN("asked to rename to an already existing name %s -> %s", -- old, new); -- up_write(&_hash_lock); -- kfree(new_name); -- return -EBUSY; -- } -- -- /* -- * Is there such a device as 'old' ? -- */ -- hc = __get_name_cell(old); -- if (!hc) { -- DMWARN("asked to rename a non existent device %s -> %s", -- old, new); -- up_write(&_hash_lock); -- kfree(new_name); -- return -ENXIO; -- } -- -- /* -- * rename and move the name cell. -- */ -- unregister_with_devfs(hc); -- -- list_del(&hc->name_list); -- old_name = hc->name; -- hc->name = new_name; -- list_add(&hc->name_list, _name_buckets + hash_str(new_name)); -- -- /* rename the device node in devfs */ -- register_with_devfs(hc); -- -- up_write(&_hash_lock); -- kfree(old_name); -- return 0; --} -- -- --/*----------------------------------------------------------------- -- * Implementation of the ioctl commands -- *---------------------------------------------------------------*/ -- --/* -- * All the ioctl commands get dispatched to functions with this -- * prototype. -- */ --typedef int (*ioctl_fn)(struct dm_ioctl *param, struct dm_ioctl *user); -- --/* -- * Check a string doesn't overrun the chunk of -- * memory we copied from userland. -- */ --static int valid_str(char *str, void *begin, void *end) --{ -- while (((void *) str >= begin) && ((void *) str < end)) -- if (!*str++) -- return 0; -- -- return -EINVAL; --} -- --static int next_target(struct dm_target_spec *last, uint32_t next, -- void *begin, void *end, -- struct dm_target_spec **spec, char **params) --{ -- *spec = (struct dm_target_spec *) -- ((unsigned char *) last + next); -- *params = (char *) (*spec + 1); -- -- if (*spec < (last + 1) || ((void *) *spec > end)) -- return -EINVAL; -- -- return valid_str(*params, begin, end); --} -- --static int populate_table(struct dm_table *table, struct dm_ioctl *args) --{ -- int r, first = 1; -- unsigned int i = 0; -- struct dm_target_spec *spec; -- char *params; -- void *begin, *end; -- -- if (!args->target_count) { -- DMWARN("populate_table: no targets specified"); -- return -EINVAL; -- } -- -- begin = (void *) args; -- end = begin + args->data_size; -- -- for (i = 0; i < args->target_count; i++) { -- -- if (first) -- r = next_target((struct dm_target_spec *) args, -- args->data_start, -- begin, end, &spec, ¶ms); -- else -- r = next_target(spec, spec->next, begin, end, -- &spec, ¶ms); -- -- if (r) { -- DMWARN("unable to find target"); -- return -EINVAL; -- } -- -- r = dm_table_add_target(table, spec->target_type, -- (sector_t) spec->sector_start, -- (sector_t) spec->length, -- params); -- if (r) { -- DMWARN("internal error adding target to table"); -- return -EINVAL; -- } -- -- first = 0; -- } -- -- return dm_table_complete(table); --} -- --/* -- * Round up the ptr to the next 'align' boundary. Obviously -- * 'align' must be a power of 2. -- */ --static inline void *align_ptr(void *ptr, unsigned int align) --{ -- align--; -- return (void *) (((unsigned long) (ptr + align)) & ~align); --} -- --/* -- * Copies a dm_ioctl and an optional additional payload to -- * userland. -- */ --static int results_to_user(struct dm_ioctl *user, struct dm_ioctl *param, -- void *data, uint32_t len) --{ -- int r; -- void *ptr = NULL; -- -- if (data) { -- ptr = align_ptr(user + 1, sizeof(unsigned long)); -- param->data_start = ptr - (void *) user; -- } -- -- /* -- * The version number has already been filled in, so we -- * just copy later fields. -- */ -- r = copy_to_user(&user->data_size, ¶m->data_size, -- sizeof(*param) - sizeof(param->version)); -- if (r) -- return -EFAULT; -- -- if (data) { -- if (param->data_start + len > param->data_size) -- return -ENOSPC; -- -- if (copy_to_user(ptr, data, len)) -- r = -EFAULT; -- } -- -- return r; --} -- --/* -- * Fills in a dm_ioctl structure, ready for sending back to -- * userland. -- */ --static int __info(struct mapped_device *md, struct dm_ioctl *param) --{ -- struct dm_table *table; -- struct block_device *bdev; -- struct gendisk *disk = dm_disk(md); -- -- param->flags = DM_EXISTS_FLAG; -- if (dm_suspended(md)) -- param->flags |= DM_SUSPEND_FLAG; -- -- bdev = bdget_disk(disk, 0); -- if (!bdev) -- return -ENXIO; -- -- param->dev = bdev->bd_dev; -- param->open_count = bdev->bd_openers; -- bdput(bdev); -- -- if (disk->policy) -- param->flags |= DM_READONLY_FLAG; -- -- table = dm_get_table(md); -- param->target_count = dm_table_get_num_targets(table); -- dm_table_put(table); -- -- return 0; --} -- --/* -- * Always use UUID for lookups if it's present, otherwise use name. -- */ --static inline struct mapped_device *find_device(struct dm_ioctl *param) --{ -- struct hash_cell *hc; -- struct mapped_device *md = NULL; -- -- down_read(&_hash_lock); -- hc = *param->uuid ? __get_uuid_cell(param->uuid) : -- __get_name_cell(param->name); -- if (hc) { -- md = hc->md; -- -- /* -- * Sneakily write in both the name and the uuid -- * while we have the cell. -- */ -- strlcpy(param->name, hc->name, sizeof(param->name)); -- if (hc->uuid) -- strlcpy(param->uuid, hc->uuid, sizeof(param->uuid)); -- else -- param->uuid[0] = '\0'; -- -- dm_get(md); -- } -- up_read(&_hash_lock); -- -- return md; --} -- --#define ALIGNMENT sizeof(int) --static void *_align(void *ptr, unsigned int a) --{ -- register unsigned long align = --a; -- -- return (void *) (((unsigned long) ptr + align) & ~align); --} -- --/* -- * Copies device info back to user space, used by -- * the create and info ioctls. -- */ --static int info(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- struct mapped_device *md; -- -- param->flags = 0; -- -- md = find_device(param); -- if (!md) -- /* -- * Device not found - returns cleared exists flag. -- */ -- goto out; -- -- __info(md, param); -- dm_put(md); -- -- out: -- return results_to_user(user, param, NULL, 0); --} -- --static inline int get_mode(struct dm_ioctl *param) --{ -- int mode = FMODE_READ | FMODE_WRITE; -- -- if (param->flags & DM_READONLY_FLAG) -- mode = FMODE_READ; -- -- return mode; --} -- --static int check_name(const char *name) --{ -- if (name[0] == '/') { -- DMWARN("invalid device name"); -- return -EINVAL; -- } -- -- return 0; --} -- --static int create(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- int r; -- struct dm_table *t; -- struct mapped_device *md; -- -- r = check_name(param->name); -- if (r) -- return r; -- -- r = dm_table_create(&t, get_mode(param)); -- if (r) -- return r; -- -- r = populate_table(t, param); -- if (r) { -- dm_table_put(t); -- return r; -- } -- -- if (param->flags & DM_PERSISTENT_DEV_FLAG) -- r = dm_create_with_minor(minor(to_kdev_t(param->dev)), t, &md); -- else -- r = dm_create(t, &md); -- -- if (r) { -- dm_table_put(t); -- return r; -- } -- dm_table_put(t); /* md will have grabbed its own reference */ -- -- set_disk_ro(dm_disk(md), (param->flags & DM_READONLY_FLAG) ? 1 : 0); -- r = dm_hash_insert(param->name, *param->uuid ? param->uuid : NULL, md); -- dm_put(md); -- -- return r ? r : info(param, user); --} -- --/* -- * Build up the status struct for each target -- */ --static int __status(struct mapped_device *md, struct dm_ioctl *param, -- char *outbuf, size_t *len) --{ -- unsigned int i, num_targets; -- struct dm_target_spec *spec; -- char *outptr; -- status_type_t type; -- struct dm_table *table = dm_get_table(md); -- -- if (param->flags & DM_STATUS_TABLE_FLAG) -- type = STATUSTYPE_TABLE; -- else -- type = STATUSTYPE_INFO; -- -- outptr = outbuf; -- -- /* Get all the target info */ -- num_targets = dm_table_get_num_targets(table); -- for (i = 0; i < num_targets; i++) { -- struct dm_target *ti = dm_table_get_target(table, i); -- -- if (outptr - outbuf + -- sizeof(struct dm_target_spec) > param->data_size) { -- dm_table_put(table); -- return -ENOMEM; -- } -- -- spec = (struct dm_target_spec *) outptr; -- -- spec->status = 0; -- spec->sector_start = ti->begin; -- spec->length = ti->len; -- strlcpy(spec->target_type, ti->type->name, -- sizeof(spec->target_type)); -- -- outptr += sizeof(struct dm_target_spec); -- -- /* Get the status/table string from the target driver */ -- if (ti->type->status) -- ti->type->status(ti, type, outptr, -- outbuf + param->data_size - outptr); -- else -- outptr[0] = '\0'; -- -- outptr += strlen(outptr) + 1; -- _align(outptr, ALIGNMENT); -- spec->next = outptr - outbuf; -- } -- -- param->target_count = num_targets; -- *len = outptr - outbuf; -- dm_table_put(table); -- -- return 0; --} -- --/* -- * Return the status of a device as a text string for each -- * target. -- */ --static int get_status(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- struct mapped_device *md; -- size_t len = 0; -- int ret; -- char *outbuf = NULL; -- -- md = find_device(param); -- if (!md) -- /* -- * Device not found - returns cleared exists flag. -- */ -- goto out; -- -- /* We haven't a clue how long the resultant data will be so -- just allocate as much as userland has allowed us and make sure -- we don't overun it */ -- outbuf = kmalloc(param->data_size, GFP_KERNEL); -- if (!outbuf) -- goto out; -- /* -- * Get the status of all targets -- */ -- __status(md, param, outbuf, &len); -- -- /* -- * Setup the basic dm_ioctl structure. -- */ -- __info(md, param); -- -- out: -- if (md) -- dm_put(md); -- -- ret = results_to_user(user, param, outbuf, len); -- -- if (outbuf) -- kfree(outbuf); -- -- return ret; --} -- --/* -- * Wait for a device to report an event -- */ --static int wait_device_event(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- struct mapped_device *md; -- struct dm_table *table; -- DECLARE_WAITQUEUE(wq, current); -- -- md = find_device(param); -- if (!md) -- /* -- * Device not found - returns cleared exists flag. -- */ -- goto out; -- -- /* -- * Setup the basic dm_ioctl structure. -- */ -- __info(md, param); -- -- /* -- * Wait for a notification event -- */ -- set_current_state(TASK_INTERRUPTIBLE); -- table = dm_get_table(md); -- dm_table_add_wait_queue(table, &wq); -- dm_table_put(table); -- dm_put(md); -- -- schedule(); -- -- out: -- return results_to_user(user, param, NULL, 0); --} -- --/* -- * Retrieves a list of devices used by a particular dm device. -- */ --static int dep(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- int r; -- unsigned int count; -- struct mapped_device *md; -- struct list_head *tmp; -- size_t len = 0; -- struct dm_target_deps *deps = NULL; -- struct dm_table *table; -- -- md = find_device(param); -- if (!md) -- goto out; -- table = dm_get_table(md); -- -- /* -- * Setup the basic dm_ioctl structure. -- */ -- __info(md, param); -- -- /* -- * Count the devices. -- */ -- count = 0; -- list_for_each(tmp, dm_table_get_devices(table)) -- count++; -- -- /* -- * Allocate a kernel space version of the dm_target_status -- * struct. -- */ -- if (array_too_big(sizeof(*deps), sizeof(*deps->dev), count)) { -- dm_table_put(table); -- dm_put(md); -- return -ENOMEM; -- } -- -- len = sizeof(*deps) + (sizeof(*deps->dev) * count); -- deps = kmalloc(len, GFP_KERNEL); -- if (!deps) { -- dm_table_put(table); -- dm_put(md); -- return -ENOMEM; -- } -- -- /* -- * Fill in the devices. -- */ -- deps->count = count; -- count = 0; -- list_for_each(tmp, dm_table_get_devices(table)) { -- struct dm_dev *dd = list_entry(tmp, struct dm_dev, list); -- deps->dev[count++] = dd->bdev->bd_dev; -- } -- dm_table_put(table); -- dm_put(md); -- -- out: -- r = results_to_user(user, param, deps, len); -- -- kfree(deps); -- return r; --} -- --static int remove(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- struct hash_cell *hc; -- -- down_write(&_hash_lock); -- hc = *param->uuid ? __get_uuid_cell(param->uuid) : -- __get_name_cell(param->name); -- if (!hc) { -- DMWARN("device doesn't appear to be in the dev hash table."); -- up_write(&_hash_lock); -- return -EINVAL; -- } -- -- /* -- * You may ask the interface to drop its reference to an -- * in use device. This is no different to unlinking a -- * file that someone still has open. The device will not -- * actually be destroyed until the last opener closes it. -- * The name and uuid of the device (both are interface -- * properties) will be available for reuse immediately. -- * -- * You don't want to drop a _suspended_ device from the -- * interface, since that will leave you with no way of -- * resuming it. -- */ -- if (dm_suspended(hc->md)) { -- DMWARN("refusing to remove a suspended device."); -- up_write(&_hash_lock); -- return -EPERM; -- } -- -- __hash_remove(hc); -- up_write(&_hash_lock); -- return 0; --} -- --static int remove_all(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- dm_hash_remove_all(); -- return 0; --} -- --static int suspend(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- int r; -- struct mapped_device *md; -- -- md = find_device(param); -- if (!md) -- return -ENXIO; -- -- if (param->flags & DM_SUSPEND_FLAG) -- r = dm_suspend(md); -- else -- r = dm_resume(md); -- -- dm_put(md); -- return r; --} -- --static int reload(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- int r; -- struct mapped_device *md; -- struct dm_table *t; -- -- r = dm_table_create(&t, get_mode(param)); -- if (r) -- return r; -- -- r = populate_table(t, param); -- if (r) { -- dm_table_put(t); -- return r; -- } -- -- md = find_device(param); -- if (!md) { -- dm_table_put(t); -- return -ENXIO; -- } -- -- r = dm_swap_table(md, t); -- if (r) { -- dm_put(md); -- dm_table_put(t); -- return r; -- } -- dm_table_put(t); /* md will have taken its own reference */ -- -- set_disk_ro(dm_disk(md), (param->flags & DM_READONLY_FLAG) ? 1 : 0); -- dm_put(md); -- -- r = info(param, user); -- return r; --} -- --static int rename(struct dm_ioctl *param, struct dm_ioctl *user) --{ -- int r; -- char *new_name = (char *) param + param->data_start; -- -- if (valid_str(new_name, (void *) param, -- (void *) param + param->data_size)) { -- DMWARN("Invalid new logical volume name supplied."); -- return -EINVAL; -- } -- -- r = check_name(new_name); -- if (r) -- return r; -- -- return dm_hash_rename(param->name, new_name); --} -- -- --/*----------------------------------------------------------------- -- * Implementation of open/close/ioctl on the special char -- * device. -- *---------------------------------------------------------------*/ --static ioctl_fn lookup_ioctl(unsigned int cmd) --{ -- static struct { -- int cmd; -- ioctl_fn fn; -- } _ioctls[] = { -- {DM_VERSION_CMD, NULL}, /* version is dealt with elsewhere */ -- {DM_REMOVE_ALL_CMD, remove_all}, -- {DM_DEV_CREATE_CMD, create}, -- {DM_DEV_REMOVE_CMD, remove}, -- {DM_DEV_RELOAD_CMD, reload}, -- {DM_DEV_RENAME_CMD, rename}, -- {DM_DEV_SUSPEND_CMD, suspend}, -- {DM_DEV_DEPS_CMD, dep}, -- {DM_DEV_STATUS_CMD, info}, -- {DM_TARGET_STATUS_CMD, get_status}, -- {DM_TARGET_WAIT_CMD, wait_device_event}, -- }; -- -- return (cmd >= ARRAY_SIZE(_ioctls)) ? NULL : _ioctls[cmd].fn; --} -- --/* -- * As well as checking the version compatibility this always -- * copies the kernel interface version out. -- */ --static int check_version(unsigned int cmd, struct dm_ioctl *user) --{ -- uint32_t version[3]; -- int r = 0; -- -- if (copy_from_user(version, user->version, sizeof(version))) -- return -EFAULT; -- -- if ((DM_VERSION_MAJOR != version[0]) || -- (DM_VERSION_MINOR < version[1])) { -- DMWARN("ioctl interface mismatch: " -- "kernel(%u.%u.%u), user(%u.%u.%u), cmd(%d)", -- DM_VERSION_MAJOR, DM_VERSION_MINOR, -- DM_VERSION_PATCHLEVEL, -- version[0], version[1], version[2], cmd); -- r = -EINVAL; -- } -- -- /* -- * Fill in the kernel version. -- */ -- version[0] = DM_VERSION_MAJOR; -- version[1] = DM_VERSION_MINOR; -- version[2] = DM_VERSION_PATCHLEVEL; -- if (copy_to_user(user->version, version, sizeof(version))) -- return -EFAULT; -- -- return r; --} -- --static void free_params(struct dm_ioctl *param) --{ -- vfree(param); --} -- --static int copy_params(struct dm_ioctl *user, struct dm_ioctl **param) --{ -- struct dm_ioctl tmp, *dmi; -- -- if (copy_from_user(&tmp, user, sizeof(tmp))) -- return -EFAULT; -- -- if (tmp.data_size < sizeof(tmp)) -- return -EINVAL; -- -- dmi = (struct dm_ioctl *) vmalloc(tmp.data_size); -- if (!dmi) -- return -ENOMEM; -- -- if (copy_from_user(dmi, user, tmp.data_size)) { -- vfree(dmi); -- return -EFAULT; -- } -- -- *param = dmi; -- return 0; --} -- --static int validate_params(uint cmd, struct dm_ioctl *param) --{ -- /* Ignores parameters */ -- if (cmd == DM_REMOVE_ALL_CMD) -- return 0; -- -- /* Unless creating, either name of uuid but not both */ -- if (cmd != DM_DEV_CREATE_CMD) { -- if ((!*param->uuid && !*param->name) || -- (*param->uuid && *param->name)) { -- DMWARN("one of name or uuid must be supplied"); -- return -EINVAL; -- } -- } -- -- /* Ensure strings are terminated */ -- param->name[DM_NAME_LEN - 1] = '\0'; -- param->uuid[DM_UUID_LEN - 1] = '\0'; -- -- return 0; --} -- --static int ctl_ioctl(struct inode *inode, struct file *file, -- uint command, ulong u) --{ -- int r = 0; -- unsigned int cmd; -- struct dm_ioctl *param; -- struct dm_ioctl *user = (struct dm_ioctl *) u; -- ioctl_fn fn = NULL; -- -- /* only root can play with this */ -- if (!capable(CAP_SYS_ADMIN)) -- return -EACCES; -- -- if (_IOC_TYPE(command) != DM_IOCTL) -- return -ENOTTY; -- -- cmd = _IOC_NR(command); -- -- /* -- * Check the interface version passed in. This also -- * writes out the kernels interface version. -- */ -- r = check_version(cmd, user); -- if (r) -- return r; -- -- /* -- * Nothing more to do for the version command. -- */ -- if (cmd == DM_VERSION_CMD) -- return 0; -- -- fn = lookup_ioctl(cmd); -- if (!fn) { -- DMWARN("dm_ctl_ioctl: unknown command 0x%x", command); -- return -ENOTTY; -- } -- -- /* -- * Copy the parameters into kernel space. -- */ -- r = copy_params(user, ¶m); -- if (r) -- return r; -- -- r = validate_params(cmd, param); -- if (r) { -- free_params(param); -- return r; -- } -- -- r = fn(param, user); -- free_params(param); -- return r; --} -- --static struct file_operations _ctl_fops = { -- .ioctl = ctl_ioctl, -- .owner = THIS_MODULE, --}; -- --static struct miscdevice _dm_misc = { -- .minor = MISC_DYNAMIC_MINOR, -- .name = DM_NAME, -- .devfs_name = "mapper/control", -- .fops = &_ctl_fops --}; -- --/* -- * Create misc character device and link to DM_DIR/control. -- */ --int __init dm_interface_init(void) --{ -- int r; -- -- r = dm_hash_init(); -- if (r) -- return r; -- -- r = misc_register(&_dm_misc); -- if (r) { -- DMERR("misc_register failed for control device"); -- dm_hash_exit(); -- return r; -- } -- -- DMINFO("%d.%d.%d%s initialised: %s", DM_VERSION_MAJOR, -- DM_VERSION_MINOR, DM_VERSION_PATCHLEVEL, DM_VERSION_EXTRA, -- DM_DRIVER_EMAIL); -- return 0; -- -- if (misc_deregister(&_dm_misc) < 0) -- DMERR("misc_deregister failed for control device"); -- dm_hash_exit(); -- return r; --} - --void dm_interface_exit(void) --{ -- if (misc_deregister(&_dm_misc) < 0) -- DMERR("misc_deregister failed for control device"); -- dm_hash_exit(); --} -+#ifdef CONFIG_DM_IOCTL_V4 -+#include "dm-ioctl-v4.c" -+#else -+#include "dm-ioctl-v1.c" -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/md/dm-ioctl-v1.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,1160 @@ -+/* -+ * Copyright (C) 2001, 2002 Sistina Software (UK) Limited. -+ * -+ * This file is released under the GPL. -+ */ -+ -+#include "dm.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#define DM_DRIVER_EMAIL "dm@uk.sistina.com" -+ -+/*----------------------------------------------------------------- -+ * The ioctl interface needs to be able to look up devices by -+ * name or uuid. -+ *---------------------------------------------------------------*/ -+struct hash_cell { -+ struct list_head name_list; -+ struct list_head uuid_list; -+ -+ char *name; -+ char *uuid; -+ struct mapped_device *md; -+}; -+ -+#define NUM_BUCKETS 64 -+#define MASK_BUCKETS (NUM_BUCKETS - 1) -+static struct list_head _name_buckets[NUM_BUCKETS]; -+static struct list_head _uuid_buckets[NUM_BUCKETS]; -+ -+void dm_hash_remove_all(void); -+ -+/* -+ * Guards access to all three tables. -+ */ -+static DECLARE_RWSEM(_hash_lock); -+ -+static void init_buckets(struct list_head *buckets) -+{ -+ unsigned int i; -+ -+ for (i = 0; i < NUM_BUCKETS; i++) -+ INIT_LIST_HEAD(buckets + i); -+} -+ -+int dm_hash_init(void) -+{ -+ init_buckets(_name_buckets); -+ init_buckets(_uuid_buckets); -+ devfs_mk_dir(DM_DIR); -+ return 0; -+} -+ -+void dm_hash_exit(void) -+{ -+ dm_hash_remove_all(); -+ devfs_remove(DM_DIR); -+} -+ -+/*----------------------------------------------------------------- -+ * Hash function: -+ * We're not really concerned with the str hash function being -+ * fast since it's only used by the ioctl interface. -+ *---------------------------------------------------------------*/ -+static unsigned int hash_str(const char *str) -+{ -+ const unsigned int hash_mult = 2654435387U; -+ unsigned int h = 0; -+ -+ while (*str) -+ h = (h + (unsigned int) *str++) * hash_mult; -+ -+ return h & MASK_BUCKETS; -+} -+ -+/*----------------------------------------------------------------- -+ * Code for looking up a device by name -+ *---------------------------------------------------------------*/ -+static struct hash_cell *__get_name_cell(const char *str) -+{ -+ struct list_head *tmp; -+ struct hash_cell *hc; -+ unsigned int h = hash_str(str); -+ -+ list_for_each (tmp, _name_buckets + h) { -+ hc = list_entry(tmp, struct hash_cell, name_list); -+ if (!strcmp(hc->name, str)) -+ return hc; -+ } -+ -+ return NULL; -+} -+ -+static struct hash_cell *__get_uuid_cell(const char *str) -+{ -+ struct list_head *tmp; -+ struct hash_cell *hc; -+ unsigned int h = hash_str(str); -+ -+ list_for_each (tmp, _uuid_buckets + h) { -+ hc = list_entry(tmp, struct hash_cell, uuid_list); -+ if (!strcmp(hc->uuid, str)) -+ return hc; -+ } -+ -+ return NULL; -+} -+ -+/*----------------------------------------------------------------- -+ * Inserting, removing and renaming a device. -+ *---------------------------------------------------------------*/ -+static inline char *kstrdup(const char *str) -+{ -+ char *r = kmalloc(strlen(str) + 1, GFP_KERNEL); -+ if (r) -+ strcpy(r, str); -+ return r; -+} -+ -+static struct hash_cell *alloc_cell(const char *name, const char *uuid, -+ struct mapped_device *md) -+{ -+ struct hash_cell *hc; -+ -+ hc = kmalloc(sizeof(*hc), GFP_KERNEL); -+ if (!hc) -+ return NULL; -+ -+ hc->name = kstrdup(name); -+ if (!hc->name) { -+ kfree(hc); -+ return NULL; -+ } -+ -+ if (!uuid) -+ hc->uuid = NULL; -+ -+ else { -+ hc->uuid = kstrdup(uuid); -+ if (!hc->uuid) { -+ kfree(hc->name); -+ kfree(hc); -+ return NULL; -+ } -+ } -+ -+ INIT_LIST_HEAD(&hc->name_list); -+ INIT_LIST_HEAD(&hc->uuid_list); -+ hc->md = md; -+ return hc; -+} -+ -+static void free_cell(struct hash_cell *hc) -+{ -+ if (hc) { -+ kfree(hc->name); -+ kfree(hc->uuid); -+ kfree(hc); -+ } -+} -+ -+/* -+ * devfs stuff. -+ */ -+static int register_with_devfs(struct hash_cell *hc) -+{ -+ struct gendisk *disk = dm_disk(hc->md); -+ -+ devfs_mk_bdev(MKDEV(disk->major, disk->first_minor), -+ S_IFBLK | S_IRUSR | S_IWUSR | S_IRGRP, -+ DM_DIR "/%s", hc->name); -+ return 0; -+} -+ -+static int unregister_with_devfs(struct hash_cell *hc) -+{ -+ devfs_remove(DM_DIR"/%s", hc->name); -+ return 0; -+} -+ -+/* -+ * The kdev_t and uuid of a device can never change once it is -+ * initially inserted. -+ */ -+int dm_hash_insert(const char *name, const char *uuid, struct mapped_device *md) -+{ -+ struct hash_cell *cell; -+ -+ /* -+ * Allocate the new cells. -+ */ -+ cell = alloc_cell(name, uuid, md); -+ if (!cell) -+ return -ENOMEM; -+ -+ /* -+ * Insert the cell into all three hash tables. -+ */ -+ down_write(&_hash_lock); -+ if (__get_name_cell(name)) -+ goto bad; -+ -+ list_add(&cell->name_list, _name_buckets + hash_str(name)); -+ -+ if (uuid) { -+ if (__get_uuid_cell(uuid)) { -+ list_del(&cell->name_list); -+ goto bad; -+ } -+ list_add(&cell->uuid_list, _uuid_buckets + hash_str(uuid)); -+ } -+ register_with_devfs(cell); -+ dm_get(md); -+ up_write(&_hash_lock); -+ -+ return 0; -+ -+ bad: -+ up_write(&_hash_lock); -+ free_cell(cell); -+ return -EBUSY; -+} -+ -+void __hash_remove(struct hash_cell *hc) -+{ -+ /* remove from the dev hash */ -+ list_del(&hc->uuid_list); -+ list_del(&hc->name_list); -+ unregister_with_devfs(hc); -+ dm_put(hc->md); -+ free_cell(hc); -+} -+ -+void dm_hash_remove_all(void) -+{ -+ int i; -+ struct hash_cell *hc; -+ struct list_head *tmp, *n; -+ -+ down_write(&_hash_lock); -+ for (i = 0; i < NUM_BUCKETS; i++) { -+ list_for_each_safe (tmp, n, _name_buckets + i) { -+ hc = list_entry(tmp, struct hash_cell, name_list); -+ __hash_remove(hc); -+ } -+ } -+ up_write(&_hash_lock); -+} -+ -+int dm_hash_rename(const char *old, const char *new) -+{ -+ char *new_name, *old_name; -+ struct hash_cell *hc; -+ -+ /* -+ * duplicate new. -+ */ -+ new_name = kstrdup(new); -+ if (!new_name) -+ return -ENOMEM; -+ -+ down_write(&_hash_lock); -+ -+ /* -+ * Is new free ? -+ */ -+ hc = __get_name_cell(new); -+ if (hc) { -+ DMWARN("asked to rename to an already existing name %s -> %s", -+ old, new); -+ up_write(&_hash_lock); -+ kfree(new_name); -+ return -EBUSY; -+ } -+ -+ /* -+ * Is there such a device as 'old' ? -+ */ -+ hc = __get_name_cell(old); -+ if (!hc) { -+ DMWARN("asked to rename a non existent device %s -> %s", -+ old, new); -+ up_write(&_hash_lock); -+ kfree(new_name); -+ return -ENXIO; -+ } -+ -+ /* -+ * rename and move the name cell. -+ */ -+ unregister_with_devfs(hc); -+ -+ list_del(&hc->name_list); -+ old_name = hc->name; -+ hc->name = new_name; -+ list_add(&hc->name_list, _name_buckets + hash_str(new_name)); -+ -+ /* rename the device node in devfs */ -+ register_with_devfs(hc); -+ -+ up_write(&_hash_lock); -+ kfree(old_name); -+ return 0; -+} -+ -+ -+/*----------------------------------------------------------------- -+ * Implementation of the ioctl commands -+ *---------------------------------------------------------------*/ -+ -+/* -+ * All the ioctl commands get dispatched to functions with this -+ * prototype. -+ */ -+typedef int (*ioctl_fn)(struct dm_ioctl *param, struct dm_ioctl *user); -+ -+/* -+ * Check a string doesn't overrun the chunk of -+ * memory we copied from userland. -+ */ -+static int valid_str(char *str, void *begin, void *end) -+{ -+ while (((void *) str >= begin) && ((void *) str < end)) -+ if (!*str++) -+ return 0; -+ -+ return -EINVAL; -+} -+ -+static int next_target(struct dm_target_spec *last, uint32_t next, -+ void *begin, void *end, -+ struct dm_target_spec **spec, char **params) -+{ -+ *spec = (struct dm_target_spec *) -+ ((unsigned char *) last + next); -+ *params = (char *) (*spec + 1); -+ -+ if (*spec < (last + 1) || ((void *) *spec > end)) -+ return -EINVAL; -+ -+ return valid_str(*params, begin, end); -+} -+ -+static int populate_table(struct dm_table *table, struct dm_ioctl *args) -+{ -+ int r, first = 1; -+ unsigned int i = 0; -+ struct dm_target_spec *spec; -+ char *params; -+ void *begin, *end; -+ -+ if (!args->target_count) { -+ DMWARN("populate_table: no targets specified"); -+ return -EINVAL; -+ } -+ -+ begin = (void *) args; -+ end = begin + args->data_size; -+ -+ for (i = 0; i < args->target_count; i++) { -+ -+ if (first) -+ r = next_target((struct dm_target_spec *) args, -+ args->data_start, -+ begin, end, &spec, ¶ms); -+ else -+ r = next_target(spec, spec->next, begin, end, -+ &spec, ¶ms); -+ -+ if (r) { -+ DMWARN("unable to find target"); -+ return -EINVAL; -+ } -+ -+ r = dm_table_add_target(table, spec->target_type, -+ (sector_t) spec->sector_start, -+ (sector_t) spec->length, -+ params); -+ if (r) { -+ DMWARN("internal error adding target to table"); -+ return -EINVAL; -+ } -+ -+ first = 0; -+ } -+ -+ return dm_table_complete(table); -+} -+ -+/* -+ * Round up the ptr to the next 'align' boundary. Obviously -+ * 'align' must be a power of 2. -+ */ -+static inline void *align_ptr(void *ptr, unsigned int align) -+{ -+ align--; -+ return (void *) (((unsigned long) (ptr + align)) & ~align); -+} -+ -+/* -+ * Copies a dm_ioctl and an optional additional payload to -+ * userland. -+ */ -+static int results_to_user(struct dm_ioctl *user, struct dm_ioctl *param, -+ void *data, uint32_t len) -+{ -+ int r; -+ void *ptr = NULL; -+ -+ if (data) { -+ ptr = align_ptr(user + 1, sizeof(unsigned long)); -+ param->data_start = ptr - (void *) user; -+ } -+ -+ /* -+ * The version number has already been filled in, so we -+ * just copy later fields. -+ */ -+ r = copy_to_user(&user->data_size, ¶m->data_size, -+ sizeof(*param) - sizeof(param->version)); -+ if (r) -+ return -EFAULT; -+ -+ if (data) { -+ if (param->data_start + len > param->data_size) -+ return -ENOSPC; -+ -+ if (copy_to_user(ptr, data, len)) -+ r = -EFAULT; -+ } -+ -+ return r; -+} -+ -+/* -+ * Fills in a dm_ioctl structure, ready for sending back to -+ * userland. -+ */ -+static int __info(struct mapped_device *md, struct dm_ioctl *param) -+{ -+ struct dm_table *table; -+ struct block_device *bdev; -+ struct gendisk *disk = dm_disk(md); -+ -+ param->flags = DM_EXISTS_FLAG; -+ if (dm_suspended(md)) -+ param->flags |= DM_SUSPEND_FLAG; -+ -+ bdev = bdget_disk(disk, 0); -+ if (!bdev) -+ return -ENXIO; -+ -+ param->dev = bdev->bd_dev; -+ param->open_count = bdev->bd_openers; -+ bdput(bdev); -+ -+ if (disk->policy) -+ param->flags |= DM_READONLY_FLAG; -+ -+ table = dm_get_table(md); -+ param->target_count = dm_table_get_num_targets(table); -+ dm_table_put(table); -+ -+ return 0; -+} -+ -+/* -+ * Always use UUID for lookups if it's present, otherwise use name. -+ */ -+static inline struct mapped_device *find_device(struct dm_ioctl *param) -+{ -+ struct hash_cell *hc; -+ struct mapped_device *md = NULL; -+ -+ down_read(&_hash_lock); -+ hc = *param->uuid ? __get_uuid_cell(param->uuid) : -+ __get_name_cell(param->name); -+ if (hc) { -+ md = hc->md; -+ -+ /* -+ * Sneakily write in both the name and the uuid -+ * while we have the cell. -+ */ -+ strlcpy(param->name, hc->name, sizeof(param->name)); -+ if (hc->uuid) -+ strlcpy(param->uuid, hc->uuid, sizeof(param->uuid)); -+ else -+ param->uuid[0] = '\0'; -+ -+ dm_get(md); -+ } -+ up_read(&_hash_lock); -+ -+ return md; -+} -+ -+#define ALIGNMENT sizeof(int) -+static void *_align(void *ptr, unsigned int a) -+{ -+ register unsigned long align = --a; -+ -+ return (void *) (((unsigned long) ptr + align) & ~align); -+} -+ -+/* -+ * Copies device info back to user space, used by -+ * the create and info ioctls. -+ */ -+static int info(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ struct mapped_device *md; -+ -+ param->flags = 0; -+ -+ md = find_device(param); -+ if (!md) -+ /* -+ * Device not found - returns cleared exists flag. -+ */ -+ goto out; -+ -+ __info(md, param); -+ dm_put(md); -+ -+ out: -+ return results_to_user(user, param, NULL, 0); -+} -+ -+static inline int get_mode(struct dm_ioctl *param) -+{ -+ int mode = FMODE_READ | FMODE_WRITE; -+ -+ if (param->flags & DM_READONLY_FLAG) -+ mode = FMODE_READ; -+ -+ return mode; -+} -+ -+static int check_name(const char *name) -+{ -+ if (name[0] == '/') { -+ DMWARN("invalid device name"); -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int create(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ int r; -+ struct dm_table *t; -+ struct mapped_device *md; -+ -+ r = check_name(param->name); -+ if (r) -+ return r; -+ -+ r = dm_table_create(&t, get_mode(param)); -+ if (r) -+ return r; -+ -+ r = populate_table(t, param); -+ if (r) { -+ dm_table_put(t); -+ return r; -+ } -+ -+ if (param->flags & DM_PERSISTENT_DEV_FLAG) -+ r = dm_create_with_minor(minor(to_kdev_t(param->dev)), &md); -+ else -+ r = dm_create(&md); -+ -+ if (r) { -+ dm_table_put(t); -+ return r; -+ } -+ -+ /* suspend the device */ -+ r = dm_suspend(md); -+ if (r) { -+ DMWARN("suspend failed"); -+ dm_table_put(t); -+ dm_put(md); -+ return r; -+ } -+ /* swap in the table */ -+ r = dm_swap_table(md, t); -+ if (r) { -+ DMWARN("table swap failed"); -+ dm_table_put(t); -+ dm_put(md); -+ return r; -+ } -+ -+ /* resume the device */ -+ r = dm_resume(md); -+ if (r) { -+ DMWARN("resume failed"); -+ dm_table_put(t); -+ dm_put(md); -+ return r; -+ } -+ -+ dm_table_put(t); /* md will have grabbed its own reference */ -+ -+ set_disk_ro(dm_disk(md), (param->flags & DM_READONLY_FLAG) ? 1 : 0); -+ r = dm_hash_insert(param->name, *param->uuid ? param->uuid : NULL, md); -+ dm_put(md); -+ -+ return r ? r : info(param, user); -+} -+ -+/* -+ * Build up the status struct for each target -+ */ -+static int __status(struct mapped_device *md, struct dm_ioctl *param, -+ char *outbuf, size_t *len) -+{ -+ unsigned int i, num_targets; -+ struct dm_target_spec *spec; -+ char *outptr; -+ status_type_t type; -+ struct dm_table *table = dm_get_table(md); -+ -+ if (param->flags & DM_STATUS_TABLE_FLAG) -+ type = STATUSTYPE_TABLE; -+ else -+ type = STATUSTYPE_INFO; -+ -+ outptr = outbuf; -+ -+ /* Get all the target info */ -+ num_targets = dm_table_get_num_targets(table); -+ for (i = 0; i < num_targets; i++) { -+ struct dm_target *ti = dm_table_get_target(table, i); -+ -+ if (outptr - outbuf + -+ sizeof(struct dm_target_spec) > param->data_size) { -+ dm_table_put(table); -+ return -ENOMEM; -+ } -+ -+ spec = (struct dm_target_spec *) outptr; -+ -+ spec->status = 0; -+ spec->sector_start = ti->begin; -+ spec->length = ti->len; -+ strlcpy(spec->target_type, ti->type->name, -+ sizeof(spec->target_type)); -+ -+ outptr += sizeof(struct dm_target_spec); -+ -+ /* Get the status/table string from the target driver */ -+ if (ti->type->status) -+ ti->type->status(ti, type, outptr, -+ outbuf + param->data_size - outptr); -+ else -+ outptr[0] = '\0'; -+ -+ outptr += strlen(outptr) + 1; -+ _align(outptr, ALIGNMENT); -+ spec->next = outptr - outbuf; -+ } -+ -+ param->target_count = num_targets; -+ *len = outptr - outbuf; -+ dm_table_put(table); -+ -+ return 0; -+} -+ -+/* -+ * Return the status of a device as a text string for each -+ * target. -+ */ -+static int get_status(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ struct mapped_device *md; -+ size_t len = 0; -+ int ret; -+ char *outbuf = NULL; -+ -+ md = find_device(param); -+ if (!md) -+ /* -+ * Device not found - returns cleared exists flag. -+ */ -+ goto out; -+ -+ /* We haven't a clue how long the resultant data will be so -+ just allocate as much as userland has allowed us and make sure -+ we don't overun it */ -+ outbuf = kmalloc(param->data_size, GFP_KERNEL); -+ if (!outbuf) -+ goto out; -+ /* -+ * Get the status of all targets -+ */ -+ __status(md, param, outbuf, &len); -+ -+ /* -+ * Setup the basic dm_ioctl structure. -+ */ -+ __info(md, param); -+ -+ out: -+ if (md) -+ dm_put(md); -+ -+ ret = results_to_user(user, param, outbuf, len); -+ -+ if (outbuf) -+ kfree(outbuf); -+ -+ return ret; -+} -+ -+/* -+ * Wait for a device to report an event -+ */ -+static int wait_device_event(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ struct mapped_device *md; -+ DECLARE_WAITQUEUE(wq, current); -+ -+ md = find_device(param); -+ if (!md) -+ /* -+ * Device not found - returns cleared exists flag. -+ */ -+ goto out; -+ -+ /* -+ * Setup the basic dm_ioctl structure. -+ */ -+ __info(md, param); -+ -+ /* -+ * Wait for a notification event -+ */ -+ set_current_state(TASK_INTERRUPTIBLE); -+ if (!dm_add_wait_queue(md, &wq, dm_get_event_nr(md))) { -+ schedule(); -+ dm_remove_wait_queue(md, &wq); -+ } -+ set_current_state(TASK_RUNNING); -+ dm_put(md); -+ -+ out: -+ return results_to_user(user, param, NULL, 0); -+} -+ -+/* -+ * Retrieves a list of devices used by a particular dm device. -+ */ -+static int dep(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ int r; -+ unsigned int count; -+ struct mapped_device *md; -+ struct list_head *tmp; -+ size_t len = 0; -+ struct dm_target_deps *deps = NULL; -+ struct dm_table *table; -+ -+ md = find_device(param); -+ if (!md) -+ goto out; -+ table = dm_get_table(md); -+ -+ /* -+ * Setup the basic dm_ioctl structure. -+ */ -+ __info(md, param); -+ -+ /* -+ * Count the devices. -+ */ -+ count = 0; -+ list_for_each(tmp, dm_table_get_devices(table)) -+ count++; -+ -+ /* -+ * Allocate a kernel space version of the dm_target_status -+ * struct. -+ */ -+ if (array_too_big(sizeof(*deps), sizeof(*deps->dev), count)) { -+ dm_table_put(table); -+ dm_put(md); -+ return -ENOMEM; -+ } -+ -+ len = sizeof(*deps) + (sizeof(*deps->dev) * count); -+ deps = kmalloc(len, GFP_KERNEL); -+ if (!deps) { -+ dm_table_put(table); -+ dm_put(md); -+ return -ENOMEM; -+ } -+ -+ /* -+ * Fill in the devices. -+ */ -+ deps->count = count; -+ count = 0; -+ list_for_each(tmp, dm_table_get_devices(table)) { -+ struct dm_dev *dd = list_entry(tmp, struct dm_dev, list); -+ deps->dev[count++] = dd->bdev->bd_dev; -+ } -+ dm_table_put(table); -+ dm_put(md); -+ -+ out: -+ r = results_to_user(user, param, deps, len); -+ -+ kfree(deps); -+ return r; -+} -+ -+static int remove(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ struct hash_cell *hc; -+ -+ down_write(&_hash_lock); -+ hc = *param->uuid ? __get_uuid_cell(param->uuid) : -+ __get_name_cell(param->name); -+ if (!hc) { -+ DMWARN("device doesn't appear to be in the dev hash table."); -+ up_write(&_hash_lock); -+ return -EINVAL; -+ } -+ -+ /* -+ * You may ask the interface to drop its reference to an -+ * in use device. This is no different to unlinking a -+ * file that someone still has open. The device will not -+ * actually be destroyed until the last opener closes it. -+ * The name and uuid of the device (both are interface -+ * properties) will be available for reuse immediately. -+ * -+ * You don't want to drop a _suspended_ device from the -+ * interface, since that will leave you with no way of -+ * resuming it. -+ */ -+ if (dm_suspended(hc->md)) { -+ DMWARN("refusing to remove a suspended device."); -+ up_write(&_hash_lock); -+ return -EPERM; -+ } -+ -+ __hash_remove(hc); -+ up_write(&_hash_lock); -+ return 0; -+} -+ -+static int remove_all(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ dm_hash_remove_all(); -+ return 0; -+} -+ -+static int suspend(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ int r; -+ struct mapped_device *md; -+ -+ md = find_device(param); -+ if (!md) -+ return -ENXIO; -+ -+ if (param->flags & DM_SUSPEND_FLAG) -+ r = dm_suspend(md); -+ else -+ r = dm_resume(md); -+ -+ dm_put(md); -+ return r; -+} -+ -+static int reload(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ int r; -+ struct mapped_device *md; -+ struct dm_table *t; -+ -+ r = dm_table_create(&t, get_mode(param)); -+ if (r) -+ return r; -+ -+ r = populate_table(t, param); -+ if (r) { -+ dm_table_put(t); -+ return r; -+ } -+ -+ md = find_device(param); -+ if (!md) { -+ dm_table_put(t); -+ return -ENXIO; -+ } -+ -+ r = dm_swap_table(md, t); -+ if (r) { -+ dm_put(md); -+ dm_table_put(t); -+ return r; -+ } -+ dm_table_put(t); /* md will have taken its own reference */ -+ -+ set_disk_ro(dm_disk(md), (param->flags & DM_READONLY_FLAG) ? 1 : 0); -+ dm_put(md); -+ -+ r = info(param, user); -+ return r; -+} -+ -+static int rename(struct dm_ioctl *param, struct dm_ioctl *user) -+{ -+ int r; -+ char *new_name = (char *) param + param->data_start; -+ -+ if (valid_str(new_name, (void *) param, -+ (void *) param + param->data_size)) { -+ DMWARN("Invalid new logical volume name supplied."); -+ return -EINVAL; -+ } -+ -+ r = check_name(new_name); -+ if (r) -+ return r; -+ -+ return dm_hash_rename(param->name, new_name); -+} -+ -+ -+/*----------------------------------------------------------------- -+ * Implementation of open/close/ioctl on the special char -+ * device. -+ *---------------------------------------------------------------*/ -+static ioctl_fn lookup_ioctl(unsigned int cmd) -+{ -+ static struct { -+ int cmd; -+ ioctl_fn fn; -+ } _ioctls[] = { -+ {DM_VERSION_CMD, NULL}, /* version is dealt with elsewhere */ -+ {DM_REMOVE_ALL_CMD, remove_all}, -+ {DM_DEV_CREATE_CMD, create}, -+ {DM_DEV_REMOVE_CMD, remove}, -+ {DM_DEV_RELOAD_CMD, reload}, -+ {DM_DEV_RENAME_CMD, rename}, -+ {DM_DEV_SUSPEND_CMD, suspend}, -+ {DM_DEV_DEPS_CMD, dep}, -+ {DM_DEV_STATUS_CMD, info}, -+ {DM_TARGET_STATUS_CMD, get_status}, -+ {DM_TARGET_WAIT_CMD, wait_device_event}, -+ }; -+ -+ return (cmd >= ARRAY_SIZE(_ioctls)) ? NULL : _ioctls[cmd].fn; -+} -+ -+/* -+ * As well as checking the version compatibility this always -+ * copies the kernel interface version out. -+ */ -+static int check_version(unsigned int cmd, struct dm_ioctl *user) -+{ -+ uint32_t version[3]; -+ int r = 0; -+ -+ if (copy_from_user(version, user->version, sizeof(version))) -+ return -EFAULT; -+ -+ if ((DM_VERSION_MAJOR != version[0]) || -+ (DM_VERSION_MINOR < version[1])) { -+ DMWARN("ioctl interface mismatch: " -+ "kernel(%u.%u.%u), user(%u.%u.%u), cmd(%d)", -+ DM_VERSION_MAJOR, DM_VERSION_MINOR, -+ DM_VERSION_PATCHLEVEL, -+ version[0], version[1], version[2], cmd); -+ r = -EINVAL; -+ } -+ -+ /* -+ * Fill in the kernel version. -+ */ -+ version[0] = DM_VERSION_MAJOR; -+ version[1] = DM_VERSION_MINOR; -+ version[2] = DM_VERSION_PATCHLEVEL; -+ if (copy_to_user(user->version, version, sizeof(version))) -+ return -EFAULT; -+ -+ return r; -+} -+ -+static void free_params(struct dm_ioctl *param) -+{ -+ vfree(param); -+} -+ -+static int copy_params(struct dm_ioctl *user, struct dm_ioctl **param) -+{ -+ struct dm_ioctl tmp, *dmi; -+ -+ if (copy_from_user(&tmp, user, sizeof(tmp))) -+ return -EFAULT; -+ -+ if (tmp.data_size < sizeof(tmp)) -+ return -EINVAL; -+ -+ dmi = (struct dm_ioctl *) vmalloc(tmp.data_size); -+ if (!dmi) -+ return -ENOMEM; -+ -+ if (copy_from_user(dmi, user, tmp.data_size)) { -+ vfree(dmi); -+ return -EFAULT; -+ } -+ -+ *param = dmi; -+ return 0; -+} -+ -+static int validate_params(uint cmd, struct dm_ioctl *param) -+{ -+ /* Ignores parameters */ -+ if (cmd == DM_REMOVE_ALL_CMD) -+ return 0; -+ -+ /* Unless creating, either name of uuid but not both */ -+ if (cmd != DM_DEV_CREATE_CMD) { -+ if ((!*param->uuid && !*param->name) || -+ (*param->uuid && *param->name)) { -+ DMWARN("one of name or uuid must be supplied"); -+ return -EINVAL; -+ } -+ } -+ -+ /* Ensure strings are terminated */ -+ param->name[DM_NAME_LEN - 1] = '\0'; -+ param->uuid[DM_UUID_LEN - 1] = '\0'; -+ -+ return 0; -+} -+ -+static int ctl_ioctl(struct inode *inode, struct file *file, -+ uint command, ulong u) -+{ -+ int r = 0; -+ unsigned int cmd; -+ struct dm_ioctl *param; -+ struct dm_ioctl *user = (struct dm_ioctl *) u; -+ ioctl_fn fn = NULL; -+ -+ /* only root can play with this */ -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EACCES; -+ -+ if (_IOC_TYPE(command) != DM_IOCTL) -+ return -ENOTTY; -+ -+ cmd = _IOC_NR(command); -+ -+ /* -+ * Check the interface version passed in. This also -+ * writes out the kernels interface version. -+ */ -+ r = check_version(cmd, user); -+ if (r) -+ return r; -+ -+ /* -+ * Nothing more to do for the version command. -+ */ -+ if (cmd == DM_VERSION_CMD) -+ return 0; -+ -+ fn = lookup_ioctl(cmd); -+ if (!fn) { -+ DMWARN("dm_ctl_ioctl: unknown command 0x%x", command); -+ return -ENOTTY; -+ } -+ -+ /* -+ * Copy the parameters into kernel space. -+ */ -+ r = copy_params(user, ¶m); -+ if (r) -+ return r; -+ -+ r = validate_params(cmd, param); -+ if (r) { -+ free_params(param); -+ return r; -+ } -+ -+ r = fn(param, user); -+ free_params(param); -+ return r; -+} -+ -+static struct file_operations _ctl_fops = { -+ .ioctl = ctl_ioctl, -+ .owner = THIS_MODULE, -+}; -+ -+static struct miscdevice _dm_misc = { -+ .minor = MISC_DYNAMIC_MINOR, -+ .name = DM_NAME, -+ .devfs_name = "mapper/control", -+ .fops = &_ctl_fops -+}; -+ -+/* -+ * Create misc character device and link to DM_DIR/control. -+ */ -+int __init dm_interface_init(void) -+{ -+ int r; -+ -+ r = dm_hash_init(); -+ if (r) -+ return r; -+ -+ r = misc_register(&_dm_misc); -+ if (r) { -+ DMERR("misc_register failed for control device"); -+ dm_hash_exit(); -+ return r; -+ } -+ -+ DMINFO("%d.%d.%d%s initialised: %s", DM_VERSION_MAJOR, -+ DM_VERSION_MINOR, DM_VERSION_PATCHLEVEL, DM_VERSION_EXTRA, -+ DM_DRIVER_EMAIL); -+ return 0; -+ -+ if (misc_deregister(&_dm_misc) < 0) -+ DMERR("misc_deregister failed for control device"); -+ dm_hash_exit(); -+ return r; -+} -+ -+void dm_interface_exit(void) -+{ -+ if (misc_deregister(&_dm_misc) < 0) -+ DMERR("misc_deregister failed for control device"); -+ dm_hash_exit(); -+} ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/md/dm-ioctl-v4.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,1252 @@ -+/* -+ * Copyright (C) 2001, 2002 Sistina Software (UK) Limited. -+ * -+ * This file is released under the GPL. -+ */ -+ -+#include "dm.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#define DM_DRIVER_EMAIL "dm@uk.sistina.com" -+ -+/*----------------------------------------------------------------- -+ * The ioctl interface needs to be able to look up devices by -+ * name or uuid. -+ *---------------------------------------------------------------*/ -+struct hash_cell { -+ struct list_head name_list; -+ struct list_head uuid_list; -+ -+ char *name; -+ char *uuid; -+ struct mapped_device *md; -+ struct dm_table *new_map; -+}; -+ -+#define NUM_BUCKETS 64 -+#define MASK_BUCKETS (NUM_BUCKETS - 1) -+static struct list_head _name_buckets[NUM_BUCKETS]; -+static struct list_head _uuid_buckets[NUM_BUCKETS]; -+ -+void dm_hash_remove_all(void); -+ -+/* -+ * Guards access to both hash tables. -+ */ -+static DECLARE_RWSEM(_hash_lock); -+ -+static void init_buckets(struct list_head *buckets) -+{ -+ unsigned int i; -+ -+ for (i = 0; i < NUM_BUCKETS; i++) -+ INIT_LIST_HEAD(buckets + i); -+} -+ -+int dm_hash_init(void) -+{ -+ init_buckets(_name_buckets); -+ init_buckets(_uuid_buckets); -+ devfs_mk_dir(DM_DIR); -+ return 0; -+} -+ -+void dm_hash_exit(void) -+{ -+ dm_hash_remove_all(); -+ devfs_remove(DM_DIR); -+} -+ -+/*----------------------------------------------------------------- -+ * Hash function: -+ * We're not really concerned with the str hash function being -+ * fast since it's only used by the ioctl interface. -+ *---------------------------------------------------------------*/ -+static unsigned int hash_str(const char *str) -+{ -+ const unsigned int hash_mult = 2654435387U; -+ unsigned int h = 0; -+ -+ while (*str) -+ h = (h + (unsigned int) *str++) * hash_mult; -+ -+ return h & MASK_BUCKETS; -+} -+ -+/*----------------------------------------------------------------- -+ * Code for looking up a device by name -+ *---------------------------------------------------------------*/ -+static struct hash_cell *__get_name_cell(const char *str) -+{ -+ struct list_head *tmp; -+ struct hash_cell *hc; -+ unsigned int h = hash_str(str); -+ -+ list_for_each (tmp, _name_buckets + h) { -+ hc = list_entry(tmp, struct hash_cell, name_list); -+ if (!strcmp(hc->name, str)) -+ return hc; -+ } -+ -+ return NULL; -+} -+ -+static struct hash_cell *__get_uuid_cell(const char *str) -+{ -+ struct list_head *tmp; -+ struct hash_cell *hc; -+ unsigned int h = hash_str(str); -+ -+ list_for_each (tmp, _uuid_buckets + h) { -+ hc = list_entry(tmp, struct hash_cell, uuid_list); -+ if (!strcmp(hc->uuid, str)) -+ return hc; -+ } -+ -+ return NULL; -+} -+ -+/*----------------------------------------------------------------- -+ * Inserting, removing and renaming a device. -+ *---------------------------------------------------------------*/ -+static inline char *kstrdup(const char *str) -+{ -+ char *r = kmalloc(strlen(str) + 1, GFP_KERNEL); -+ if (r) -+ strcpy(r, str); -+ return r; -+} -+ -+static struct hash_cell *alloc_cell(const char *name, const char *uuid, -+ struct mapped_device *md) -+{ -+ struct hash_cell *hc; -+ -+ hc = kmalloc(sizeof(*hc), GFP_KERNEL); -+ if (!hc) -+ return NULL; -+ -+ hc->name = kstrdup(name); -+ if (!hc->name) { -+ kfree(hc); -+ return NULL; -+ } -+ -+ if (!uuid) -+ hc->uuid = NULL; -+ -+ else { -+ hc->uuid = kstrdup(uuid); -+ if (!hc->uuid) { -+ kfree(hc->name); -+ kfree(hc); -+ return NULL; -+ } -+ } -+ -+ INIT_LIST_HEAD(&hc->name_list); -+ INIT_LIST_HEAD(&hc->uuid_list); -+ hc->md = md; -+ hc->new_map = NULL; -+ return hc; -+} -+ -+static void free_cell(struct hash_cell *hc) -+{ -+ if (hc) { -+ kfree(hc->name); -+ kfree(hc->uuid); -+ kfree(hc); -+ } -+} -+ -+/* -+ * devfs stuff. -+ */ -+static int register_with_devfs(struct hash_cell *hc) -+{ -+ struct gendisk *disk = dm_disk(hc->md); -+ -+ devfs_mk_bdev(MKDEV(disk->major, disk->first_minor), -+ S_IFBLK | S_IRUSR | S_IWUSR | S_IRGRP, -+ DM_DIR "/%s", hc->name); -+ return 0; -+} -+ -+static int unregister_with_devfs(struct hash_cell *hc) -+{ -+ devfs_remove(DM_DIR"/%s", hc->name); -+ return 0; -+} -+ -+/* -+ * The kdev_t and uuid of a device can never change once it is -+ * initially inserted. -+ */ -+int dm_hash_insert(const char *name, const char *uuid, struct mapped_device *md) -+{ -+ struct hash_cell *cell; -+ -+ /* -+ * Allocate the new cells. -+ */ -+ cell = alloc_cell(name, uuid, md); -+ if (!cell) -+ return -ENOMEM; -+ -+ /* -+ * Insert the cell into both hash tables. -+ */ -+ down_write(&_hash_lock); -+ if (__get_name_cell(name)) -+ goto bad; -+ -+ list_add(&cell->name_list, _name_buckets + hash_str(name)); -+ -+ if (uuid) { -+ if (__get_uuid_cell(uuid)) { -+ list_del(&cell->name_list); -+ goto bad; -+ } -+ list_add(&cell->uuid_list, _uuid_buckets + hash_str(uuid)); -+ } -+ register_with_devfs(cell); -+ dm_get(md); -+ up_write(&_hash_lock); -+ -+ return 0; -+ -+ bad: -+ up_write(&_hash_lock); -+ free_cell(cell); -+ return -EBUSY; -+} -+ -+void __hash_remove(struct hash_cell *hc) -+{ -+ /* remove from the dev hash */ -+ list_del(&hc->uuid_list); -+ list_del(&hc->name_list); -+ unregister_with_devfs(hc); -+ dm_put(hc->md); -+ if (hc->new_map) -+ dm_table_put(hc->new_map); -+ free_cell(hc); -+} -+ -+void dm_hash_remove_all(void) -+{ -+ int i; -+ struct hash_cell *hc; -+ struct list_head *tmp, *n; -+ -+ down_write(&_hash_lock); -+ for (i = 0; i < NUM_BUCKETS; i++) { -+ list_for_each_safe (tmp, n, _name_buckets + i) { -+ hc = list_entry(tmp, struct hash_cell, name_list); -+ __hash_remove(hc); -+ } -+ } -+ up_write(&_hash_lock); -+} -+ -+int dm_hash_rename(const char *old, const char *new) -+{ -+ char *new_name, *old_name; -+ struct hash_cell *hc; -+ -+ /* -+ * duplicate new. -+ */ -+ new_name = kstrdup(new); -+ if (!new_name) -+ return -ENOMEM; -+ -+ down_write(&_hash_lock); -+ -+ /* -+ * Is new free ? -+ */ -+ hc = __get_name_cell(new); -+ if (hc) { -+ DMWARN("asked to rename to an already existing name %s -> %s", -+ old, new); -+ up_write(&_hash_lock); -+ kfree(new_name); -+ return -EBUSY; -+ } -+ -+ /* -+ * Is there such a device as 'old' ? -+ */ -+ hc = __get_name_cell(old); -+ if (!hc) { -+ DMWARN("asked to rename a non existent device %s -> %s", -+ old, new); -+ up_write(&_hash_lock); -+ kfree(new_name); -+ return -ENXIO; -+ } -+ -+ /* -+ * rename and move the name cell. -+ */ -+ unregister_with_devfs(hc); -+ -+ list_del(&hc->name_list); -+ old_name = hc->name; -+ hc->name = new_name; -+ list_add(&hc->name_list, _name_buckets + hash_str(new_name)); -+ -+ /* rename the device node in devfs */ -+ register_with_devfs(hc); -+ -+ up_write(&_hash_lock); -+ kfree(old_name); -+ return 0; -+} -+ -+/*----------------------------------------------------------------- -+ * Implementation of the ioctl commands -+ *---------------------------------------------------------------*/ -+/* -+ * All the ioctl commands get dispatched to functions with this -+ * prototype. -+ */ -+typedef int (*ioctl_fn)(struct dm_ioctl *param, size_t param_size); -+ -+static int remove_all(struct dm_ioctl *param, size_t param_size) -+{ -+ dm_hash_remove_all(); -+ param->data_size = 0; -+ return 0; -+} -+ -+/* -+ * Round up the ptr to an 8-byte boundary. -+ */ -+#define ALIGN_MASK 7 -+static inline void *align_ptr(void *ptr) -+{ -+ return (void *) (((size_t) (ptr + ALIGN_MASK)) & ~ALIGN_MASK); -+} -+ -+/* -+ * Retrieves the data payload buffer from an already allocated -+ * struct dm_ioctl. -+ */ -+static void *get_result_buffer(struct dm_ioctl *param, size_t param_size, -+ size_t *len) -+{ -+ param->data_start = align_ptr(param + 1) - (void *) param; -+ -+ if (param->data_start < param_size) -+ *len = param_size - param->data_start; -+ else -+ *len = 0; -+ -+ return ((void *) param) + param->data_start; -+} -+ -+static int list_devices(struct dm_ioctl *param, size_t param_size) -+{ -+ unsigned int i; -+ struct hash_cell *hc; -+ size_t len, needed = 0; -+ struct gendisk *disk; -+ struct dm_name_list *nl, *old_nl = NULL; -+ -+ down_write(&_hash_lock); -+ -+ /* -+ * Loop through all the devices working out how much -+ * space we need. -+ */ -+ for (i = 0; i < NUM_BUCKETS; i++) { -+ list_for_each_entry (hc, _name_buckets + i, name_list) { -+ needed += sizeof(struct dm_name_list); -+ needed += strlen(hc->name); -+ needed += ALIGN_MASK; -+ } -+ } -+ -+ /* -+ * Grab our output buffer. -+ */ -+ nl = get_result_buffer(param, param_size, &len); -+ if (len < needed) { -+ param->flags |= DM_BUFFER_FULL_FLAG; -+ goto out; -+ } -+ param->data_size = param->data_start + needed; -+ -+ nl->dev = 0; /* Flags no data */ -+ -+ /* -+ * Now loop through filling out the names. -+ */ -+ for (i = 0; i < NUM_BUCKETS; i++) { -+ list_for_each_entry (hc, _name_buckets + i, name_list) { -+ if (old_nl) -+ old_nl->next = (uint32_t) ((void *) nl - -+ (void *) old_nl); -+ disk = dm_disk(hc->md); -+ nl->dev = MKDEV(disk->major, disk->first_minor); -+ nl->next = 0; -+ strcpy(nl->name, hc->name); -+ -+ old_nl = nl; -+ nl = align_ptr(((void *) ++nl) + strlen(hc->name) + 1); -+ } -+ } -+ -+ out: -+ up_write(&_hash_lock); -+ return 0; -+} -+ -+static int check_name(const char *name) -+{ -+ if (strchr(name, '/')) { -+ DMWARN("invalid device name"); -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+/* -+ * Fills in a dm_ioctl structure, ready for sending back to -+ * userland. -+ */ -+static int __dev_status(struct mapped_device *md, struct dm_ioctl *param) -+{ -+ struct gendisk *disk = dm_disk(md); -+ struct dm_table *table; -+ struct block_device *bdev; -+ -+ param->flags &= ~(DM_SUSPEND_FLAG | DM_READONLY_FLAG | -+ DM_ACTIVE_PRESENT_FLAG); -+ -+ if (dm_suspended(md)) -+ param->flags |= DM_SUSPEND_FLAG; -+ -+ bdev = bdget_disk(disk, 0); -+ if (!bdev) -+ return -ENXIO; -+ -+ param->dev = MKDEV(disk->major, disk->first_minor); -+ -+ /* -+ * Yes, this will be out of date by the time it gets back -+ * to userland, but it is still very useful ofr -+ * debugging. -+ */ -+ param->open_count = bdev->bd_openers; -+ bdput(bdev); -+ -+ if (disk->policy) -+ param->flags |= DM_READONLY_FLAG; -+ -+ param->event_nr = dm_get_event_nr(md); -+ -+ table = dm_get_table(md); -+ if (table) { -+ param->flags |= DM_ACTIVE_PRESENT_FLAG; -+ param->target_count = dm_table_get_num_targets(table); -+ dm_table_put(table); -+ } else -+ param->target_count = 0; -+ -+ return 0; -+} -+ -+static int dev_create(struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ struct mapped_device *md; -+ -+ r = check_name(param->name); -+ if (r) -+ return r; -+ -+ if (param->flags & DM_PERSISTENT_DEV_FLAG) -+ r = dm_create_with_minor(minor(to_kdev_t(param->dev)), &md); -+ else -+ r = dm_create(&md); -+ -+ if (r) -+ return r; -+ -+ r = dm_hash_insert(param->name, *param->uuid ? param->uuid : NULL, md); -+ if (r) { -+ dm_put(md); -+ return r; -+ } -+ -+ param->flags &= ~DM_INACTIVE_PRESENT_FLAG; -+ -+ r = __dev_status(md, param); -+ dm_put(md); -+ -+ return r; -+} -+ -+/* -+ * Always use UUID for lookups if it's present, otherwise use name. -+ */ -+static inline struct hash_cell *__find_device_hash_cell(struct dm_ioctl *param) -+{ -+ return *param->uuid ? -+ __get_uuid_cell(param->uuid) : __get_name_cell(param->name); -+} -+ -+static inline struct mapped_device *find_device(struct dm_ioctl *param) -+{ -+ struct hash_cell *hc; -+ struct mapped_device *md = NULL; -+ -+ down_read(&_hash_lock); -+ hc = __find_device_hash_cell(param); -+ if (hc) { -+ md = hc->md; -+ -+ /* -+ * Sneakily write in both the name and the uuid -+ * while we have the cell. -+ */ -+ strncpy(param->name, hc->name, sizeof(param->name)); -+ if (hc->uuid) -+ strncpy(param->uuid, hc->uuid, sizeof(param->uuid)-1); -+ else -+ param->uuid[0] = '\0'; -+ -+ if (hc->new_map) -+ param->flags |= DM_INACTIVE_PRESENT_FLAG; -+ else -+ param->flags &= ~DM_INACTIVE_PRESENT_FLAG; -+ -+ dm_get(md); -+ } -+ up_read(&_hash_lock); -+ -+ return md; -+} -+ -+static int dev_remove(struct dm_ioctl *param, size_t param_size) -+{ -+ struct hash_cell *hc; -+ -+ down_write(&_hash_lock); -+ hc = __find_device_hash_cell(param); -+ -+ if (!hc) { -+ DMWARN("device doesn't appear to be in the dev hash table."); -+ up_write(&_hash_lock); -+ return -ENXIO; -+ } -+ -+ __hash_remove(hc); -+ up_write(&_hash_lock); -+ param->data_size = 0; -+ return 0; -+} -+ -+/* -+ * Check a string doesn't overrun the chunk of -+ * memory we copied from userland. -+ */ -+static int invalid_str(char *str, void *end) -+{ -+ while ((void *) str < end) -+ if (!*str++) -+ return 0; -+ -+ return -EINVAL; -+} -+ -+static int dev_rename(struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ char *new_name = (char *) param + param->data_start; -+ -+ if (new_name < (char *) (param + 1) || -+ invalid_str(new_name, (void *) param + param_size)) { -+ DMWARN("Invalid new logical volume name supplied."); -+ return -EINVAL; -+ } -+ -+ r = check_name(new_name); -+ if (r) -+ return r; -+ -+ param->data_size = 0; -+ return dm_hash_rename(param->name, new_name); -+} -+ -+static int suspend(struct dm_ioctl *param) -+{ -+ int r = 0; -+ struct mapped_device *md; -+ -+ md = find_device(param); -+ if (!md) -+ return -ENXIO; -+ -+ if (!dm_suspended(md)) -+ r = dm_suspend(md); -+ -+ if (!r) -+ r = __dev_status(md, param); -+ -+ dm_put(md); -+ return r; -+} -+ -+static int resume(struct dm_ioctl *param) -+{ -+ int r = 0; -+ struct hash_cell *hc; -+ struct mapped_device *md; -+ struct dm_table *new_map; -+ -+ down_write(&_hash_lock); -+ -+ hc = __find_device_hash_cell(param); -+ if (!hc) { -+ DMWARN("device doesn't appear to be in the dev hash table."); -+ up_write(&_hash_lock); -+ return -ENXIO; -+ } -+ -+ md = hc->md; -+ dm_get(md); -+ -+ new_map = hc->new_map; -+ hc->new_map = NULL; -+ param->flags &= ~DM_INACTIVE_PRESENT_FLAG; -+ -+ up_write(&_hash_lock); -+ -+ /* Do we need to load a new map ? */ -+ if (new_map) { -+ /* Suspend if it isn't already suspended */ -+ if (!dm_suspended(md)) -+ dm_suspend(md); -+ -+ r = dm_swap_table(md, new_map); -+ if (r) { -+ dm_put(md); -+ dm_table_put(new_map); -+ return r; -+ } -+ -+ if (dm_table_get_mode(new_map) & FMODE_WRITE) -+ set_disk_ro(dm_disk(md), 0); -+ else -+ set_disk_ro(dm_disk(md), 1); -+ -+ dm_table_put(new_map); -+ } -+ -+ if (dm_suspended(md)) -+ r = dm_resume(md); -+ -+ if (!r) -+ r = __dev_status(md, param); -+ -+ dm_put(md); -+ return r; -+} -+ -+/* -+ * Set or unset the suspension state of a device. -+ * If the device already is in the requested state we just return its status. -+ */ -+static int dev_suspend(struct dm_ioctl *param, size_t param_size) -+{ -+ if (param->flags & DM_SUSPEND_FLAG) -+ return suspend(param); -+ -+ return resume(param); -+} -+ -+/* -+ * Copies device info back to user space, used by -+ * the create and info ioctls. -+ */ -+static int dev_status(struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ struct mapped_device *md; -+ -+ md = find_device(param); -+ if (!md) -+ return -ENXIO; -+ -+ r = __dev_status(md, param); -+ dm_put(md); -+ return r; -+} -+ -+/* -+ * Wait for a device to report an event -+ */ -+static int dev_wait(struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ struct mapped_device *md; -+ DECLARE_WAITQUEUE(wq, current); -+ -+ md = find_device(param); -+ if (!md) -+ return -ENXIO; -+ -+ /* -+ * Wait for a notification event -+ */ -+ set_current_state(TASK_INTERRUPTIBLE); -+ if (!dm_add_wait_queue(md, &wq, param->event_nr)) { -+ schedule(); -+ dm_remove_wait_queue(md, &wq); -+ } -+ set_current_state(TASK_RUNNING); -+ -+ /* -+ * The userland program is going to want to know what -+ * changed to trigger the event, so we may as well tell -+ * him and save an ioctl. -+ */ -+ r = __dev_status(md, param); -+ -+ dm_put(md); -+ return r; -+} -+ -+static inline int get_mode(struct dm_ioctl *param) -+{ -+ int mode = FMODE_READ | FMODE_WRITE; -+ -+ if (param->flags & DM_READONLY_FLAG) -+ mode = FMODE_READ; -+ -+ return mode; -+} -+ -+static int next_target(struct dm_target_spec *last, uint32_t next, void *end, -+ struct dm_target_spec **spec, char **target_params) -+{ -+ *spec = (struct dm_target_spec *) ((unsigned char *) last + next); -+ *target_params = (char *) (*spec + 1); -+ -+ if (*spec < (last + 1)) -+ return -EINVAL; -+ -+ return invalid_str(*target_params, end); -+} -+ -+static int populate_table(struct dm_table *table, -+ struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ unsigned int i = 0; -+ struct dm_target_spec *spec = (struct dm_target_spec *) param; -+ uint32_t next = param->data_start; -+ void *end = (void *) param + param_size; -+ char *target_params; -+ -+ if (!param->target_count) { -+ DMWARN("populate_table: no targets specified"); -+ return -EINVAL; -+ } -+ -+ for (i = 0; i < param->target_count; i++) { -+ -+ r = next_target(spec, next, end, &spec, &target_params); -+ if (r) { -+ DMWARN("unable to find target"); -+ return r; -+ } -+ -+ r = dm_table_add_target(table, spec->target_type, -+ (sector_t) spec->sector_start, -+ (sector_t) spec->length, -+ target_params); -+ if (r) { -+ DMWARN("error adding target to table"); -+ return r; -+ } -+ -+ next = spec->next; -+ } -+ -+ return dm_table_complete(table); -+} -+ -+static int table_load(struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ struct hash_cell *hc; -+ struct dm_table *t; -+ -+ r = dm_table_create(&t, get_mode(param)); -+ if (r) -+ return r; -+ -+ r = populate_table(t, param, param_size); -+ if (r) { -+ dm_table_put(t); -+ return r; -+ } -+ -+ down_write(&_hash_lock); -+ hc = __find_device_hash_cell(param); -+ if (!hc) { -+ DMWARN("device doesn't appear to be in the dev hash table."); -+ up_write(&_hash_lock); -+ return -ENXIO; -+ } -+ -+ hc->new_map = t; -+ param->flags |= DM_INACTIVE_PRESENT_FLAG; -+ -+ r = __dev_status(hc->md, param); -+ up_write(&_hash_lock); -+ return r; -+} -+ -+static int table_clear(struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ struct hash_cell *hc; -+ -+ down_write(&_hash_lock); -+ -+ hc = __find_device_hash_cell(param); -+ if (!hc) { -+ DMWARN("device doesn't appear to be in the dev hash table."); -+ up_write(&_hash_lock); -+ return -ENXIO; -+ } -+ -+ if (hc->new_map) { -+ dm_table_put(hc->new_map); -+ hc->new_map = NULL; -+ } -+ -+ param->flags &= ~DM_INACTIVE_PRESENT_FLAG; -+ -+ r = __dev_status(hc->md, param); -+ up_write(&_hash_lock); -+ return r; -+} -+ -+/* -+ * Retrieves a list of devices used by a particular dm device. -+ */ -+static void retrieve_deps(struct dm_table *table, -+ struct dm_ioctl *param, size_t param_size) -+{ -+ unsigned int count = 0; -+ struct list_head *tmp; -+ size_t len, needed; -+ struct dm_target_deps *deps; -+ -+ deps = get_result_buffer(param, param_size, &len); -+ -+ /* -+ * Count the devices. -+ */ -+ list_for_each(tmp, dm_table_get_devices(table)) -+ count++; -+ -+ /* -+ * Check we have enough space. -+ */ -+ needed = sizeof(*deps) + (sizeof(*deps->dev) * count); -+ if (len < needed) { -+ param->flags |= DM_BUFFER_FULL_FLAG; -+ return; -+ } -+ -+ /* -+ * Fill in the devices. -+ */ -+ deps->count = count; -+ count = 0; -+ list_for_each(tmp, dm_table_get_devices(table)) { -+ struct dm_dev *dd = list_entry(tmp, struct dm_dev, list); -+ deps->dev[count++] = dd->bdev->bd_dev; -+ } -+ -+ param->data_size = param->data_start + needed; -+} -+ -+static int table_deps(struct dm_ioctl *param, size_t param_size) -+{ -+ int r = 0; -+ struct mapped_device *md; -+ struct dm_table *table; -+ -+ md = find_device(param); -+ if (!md) -+ return -ENXIO; -+ -+ r = __dev_status(md, param); -+ if (r) -+ goto out; -+ -+ table = dm_get_table(md); -+ if (table) { -+ retrieve_deps(table, param, param_size); -+ dm_table_put(table); -+ } -+ -+ out: -+ dm_put(md); -+ return r; -+} -+ -+/* -+ * Build up the status struct for each target -+ */ -+static void retrieve_status(struct dm_table *table, -+ struct dm_ioctl *param, size_t param_size) -+{ -+ unsigned int i, num_targets; -+ struct dm_target_spec *spec; -+ char *outbuf, *outptr; -+ status_type_t type; -+ size_t remaining, len, used = 0; -+ -+ outptr = outbuf = get_result_buffer(param, param_size, &len); -+ -+ if (param->flags & DM_STATUS_TABLE_FLAG) -+ type = STATUSTYPE_TABLE; -+ else -+ type = STATUSTYPE_INFO; -+ -+ /* Get all the target info */ -+ num_targets = dm_table_get_num_targets(table); -+ for (i = 0; i < num_targets; i++) { -+ struct dm_target *ti = dm_table_get_target(table, i); -+ -+ remaining = len - (outptr - outbuf); -+ if (remaining < sizeof(struct dm_target_spec)) { -+ param->flags |= DM_BUFFER_FULL_FLAG; -+ break; -+ } -+ -+ spec = (struct dm_target_spec *) outptr; -+ -+ spec->status = 0; -+ spec->sector_start = ti->begin; -+ spec->length = ti->len; -+ strncpy(spec->target_type, ti->type->name, -+ sizeof(spec->target_type)); -+ -+ outptr += sizeof(struct dm_target_spec); -+ remaining = len - (outptr - outbuf); -+ -+ /* Get the status/table string from the target driver */ -+ if (ti->type->status) { -+ if (ti->type->status(ti, type, outptr, remaining)) { -+ param->flags |= DM_BUFFER_FULL_FLAG; -+ break; -+ } -+ } else -+ outptr[0] = '\0'; -+ -+ outptr += strlen(outptr) + 1; -+ used = param->data_start + (outptr - outbuf); -+ -+ align_ptr(outptr); -+ spec->next = outptr - outbuf; -+ } -+ -+ if (used) -+ param->data_size = used; -+ -+ param->target_count = num_targets; -+} -+ -+/* -+ * Return the status of a device as a text string for each -+ * target. -+ */ -+static int table_status(struct dm_ioctl *param, size_t param_size) -+{ -+ int r; -+ struct mapped_device *md; -+ struct dm_table *table; -+ -+ md = find_device(param); -+ if (!md) -+ return -ENXIO; -+ -+ r = __dev_status(md, param); -+ if (r) -+ goto out; -+ -+ table = dm_get_table(md); -+ if (table) { -+ retrieve_status(table, param, param_size); -+ dm_table_put(table); -+ } -+ -+ out: -+ dm_put(md); -+ return r; -+} -+ -+/*----------------------------------------------------------------- -+ * Implementation of open/close/ioctl on the special char -+ * device. -+ *---------------------------------------------------------------*/ -+static ioctl_fn lookup_ioctl(unsigned int cmd) -+{ -+ static struct { -+ int cmd; -+ ioctl_fn fn; -+ } _ioctls[] = { -+ {DM_VERSION_CMD, NULL}, /* version is dealt with elsewhere */ -+ {DM_REMOVE_ALL_CMD, remove_all}, -+ {DM_LIST_DEVICES_CMD, list_devices}, -+ -+ {DM_DEV_CREATE_CMD, dev_create}, -+ {DM_DEV_REMOVE_CMD, dev_remove}, -+ {DM_DEV_RENAME_CMD, dev_rename}, -+ {DM_DEV_SUSPEND_CMD, dev_suspend}, -+ {DM_DEV_STATUS_CMD, dev_status}, -+ {DM_DEV_WAIT_CMD, dev_wait}, -+ -+ {DM_TABLE_LOAD_CMD, table_load}, -+ {DM_TABLE_CLEAR_CMD, table_clear}, -+ {DM_TABLE_DEPS_CMD, table_deps}, -+ {DM_TABLE_STATUS_CMD, table_status} -+ }; -+ -+ return (cmd >= ARRAY_SIZE(_ioctls)) ? NULL : _ioctls[cmd].fn; -+} -+ -+/* -+ * As well as checking the version compatibility this always -+ * copies the kernel interface version out. -+ */ -+static int check_version(unsigned int cmd, struct dm_ioctl *user) -+{ -+ uint32_t version[3]; -+ int r = 0; -+ -+ if (copy_from_user(version, user->version, sizeof(version))) -+ return -EFAULT; -+ -+ if ((DM_VERSION_MAJOR != version[0]) || -+ (DM_VERSION_MINOR < version[1])) { -+ DMWARN("ioctl interface mismatch: " -+ "kernel(%u.%u.%u), user(%u.%u.%u), cmd(%d)", -+ DM_VERSION_MAJOR, DM_VERSION_MINOR, -+ DM_VERSION_PATCHLEVEL, -+ version[0], version[1], version[2], cmd); -+ r = -EINVAL; -+ } -+ -+ /* -+ * Fill in the kernel version. -+ */ -+ version[0] = DM_VERSION_MAJOR; -+ version[1] = DM_VERSION_MINOR; -+ version[2] = DM_VERSION_PATCHLEVEL; -+ if (copy_to_user(user->version, version, sizeof(version))) -+ return -EFAULT; -+ -+ return r; -+} -+ -+static void free_params(struct dm_ioctl *param) -+{ -+ vfree(param); -+} -+ -+static int copy_params(struct dm_ioctl *user, struct dm_ioctl **param) -+{ -+ struct dm_ioctl tmp, *dmi; -+ -+ if (copy_from_user(&tmp, user, sizeof(tmp))) -+ return -EFAULT; -+ -+ if (tmp.data_size < sizeof(tmp)) -+ return -EINVAL; -+ -+ dmi = (struct dm_ioctl *) vmalloc(tmp.data_size); -+ if (!dmi) -+ return -ENOMEM; -+ -+ if (copy_from_user(dmi, user, tmp.data_size)) { -+ vfree(dmi); -+ return -EFAULT; -+ } -+ -+ *param = dmi; -+ return 0; -+} -+ -+static int validate_params(uint cmd, struct dm_ioctl *param) -+{ -+ /* Always clear this flag */ -+ param->flags &= ~DM_BUFFER_FULL_FLAG; -+ -+ /* Ignores parameters */ -+ if (cmd == DM_REMOVE_ALL_CMD || cmd == DM_LIST_DEVICES_CMD) -+ return 0; -+ -+ /* Unless creating, either name or uuid but not both */ -+ if (cmd != DM_DEV_CREATE_CMD) { -+ if ((!*param->uuid && !*param->name) || -+ (*param->uuid && *param->name)) { -+ DMWARN("one of name or uuid must be supplied, cmd(%u)", -+ cmd); -+ return -EINVAL; -+ } -+ } -+ -+ /* Ensure strings are terminated */ -+ param->name[DM_NAME_LEN - 1] = '\0'; -+ param->uuid[DM_UUID_LEN - 1] = '\0'; -+ -+ return 0; -+} -+ -+static int ctl_ioctl(struct inode *inode, struct file *file, -+ uint command, ulong u) -+{ -+ int r = 0; -+ unsigned int cmd; -+ struct dm_ioctl *param; -+ struct dm_ioctl *user = (struct dm_ioctl *) u; -+ ioctl_fn fn = NULL; -+ size_t param_size; -+ -+ /* only root can play with this */ -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EACCES; -+ -+ if (_IOC_TYPE(command) != DM_IOCTL) -+ return -ENOTTY; -+ -+ cmd = _IOC_NR(command); -+ -+ /* -+ * Check the interface version passed in. This also -+ * writes out the kernel's interface version. -+ */ -+ r = check_version(cmd, user); -+ if (r) -+ return r; -+ -+ /* -+ * Nothing more to do for the version command. -+ */ -+ if (cmd == DM_VERSION_CMD) -+ return 0; -+ -+ fn = lookup_ioctl(cmd); -+ if (!fn) { -+ DMWARN("dm_ctl_ioctl: unknown command 0x%x", command); -+ return -ENOTTY; -+ } -+ -+ /* -+ * Trying to avoid low memory issues when a device is -+ * suspended. -+ */ -+ current->flags |= PF_MEMALLOC; -+ -+ /* -+ * Copy the parameters into kernel space. -+ */ -+ r = copy_params(user, ¶m); -+ if (r) { -+ current->flags &= ~PF_MEMALLOC; -+ return r; -+ } -+ -+ /* -+ * FIXME: eventually we will remove the PF_MEMALLOC flag -+ * here. However the tools still do nasty things like -+ * 'load' while a device is suspended. -+ */ -+ -+ r = validate_params(cmd, param); -+ if (r) -+ goto out; -+ -+ param_size = param->data_size; -+ param->data_size = sizeof(*param); -+ r = fn(param, param_size); -+ -+ /* -+ * Copy the results back to userland. -+ */ -+ if (!r && copy_to_user(user, param, param->data_size)) -+ r = -EFAULT; -+ -+ out: -+ free_params(param); -+ current->flags &= ~PF_MEMALLOC; -+ return r; -+} -+ -+static struct file_operations _ctl_fops = { -+ .ioctl = ctl_ioctl, -+ .owner = THIS_MODULE, -+}; -+ -+static struct miscdevice _dm_misc = { -+ .minor = MISC_DYNAMIC_MINOR, -+ .name = DM_NAME, -+ .devfs_name = "mapper/control", -+ .fops = &_ctl_fops -+}; -+ -+/* -+ * Create misc character device and link to DM_DIR/control. -+ */ -+int __init dm_interface_init(void) -+{ -+ int r; -+ -+ r = dm_hash_init(); -+ if (r) -+ return r; -+ -+ r = misc_register(&_dm_misc); -+ if (r) { -+ DMERR("misc_register failed for control device"); -+ dm_hash_exit(); -+ return r; -+ } -+ -+ DMINFO("%d.%d.%d%s initialised: %s", DM_VERSION_MAJOR, -+ DM_VERSION_MINOR, DM_VERSION_PATCHLEVEL, DM_VERSION_EXTRA, -+ DM_DRIVER_EMAIL); -+ return 0; -+} -+ -+void dm_interface_exit(void) -+{ -+ if (misc_deregister(&_dm_misc) < 0) -+ DMERR("misc_deregister failed for control device"); -+ -+ dm_hash_exit(); -+} ---- linux-2.6.0-test1/drivers/md/dm-table.c 2003-06-14 12:18:35.000000000 -0700 -+++ 25/drivers/md/dm-table.c 2003-07-19 17:03:49.000000000 -0700 -@@ -48,11 +48,9 @@ struct dm_table { - */ - struct io_restrictions limits; - -- /* -- * A waitqueue for processes waiting for something -- * interesting to happen to this table. -- */ -- wait_queue_head_t eventq; -+ /* events get handed up using this callback */ -+ void (*event_fn)(void *); -+ void *event_context; - }; - - /* -@@ -222,7 +220,6 @@ int dm_table_create(struct dm_table **re - return -ENOMEM; - } - -- init_waitqueue_head(&t->eventq); - t->mode = mode; - *result = t; - return 0; -@@ -243,9 +240,6 @@ void table_destroy(struct dm_table *t) - { - unsigned int i; - -- /* destroying the table counts as an event */ -- dm_table_event(t); -- - /* free the indexes (see dm_table_complete) */ - if (t->depth >= 2) - vfree(t->index[t->depth - 2]); -@@ -694,9 +688,22 @@ int dm_table_complete(struct dm_table *t - return r; - } - -+static spinlock_t _event_lock = SPIN_LOCK_UNLOCKED; -+void dm_table_event_callback(struct dm_table *t, -+ void (*fn)(void *), void *context) -+{ -+ spin_lock_irq(&_event_lock); -+ t->event_fn = fn; -+ t->event_context = context; -+ spin_unlock_irq(&_event_lock); -+} -+ - void dm_table_event(struct dm_table *t) - { -- wake_up_interruptible(&t->eventq); -+ spin_lock(&_event_lock); -+ if (t->event_fn) -+ t->event_fn(t->event_context); -+ spin_unlock(&_event_lock); - } - - sector_t dm_table_get_size(struct dm_table *t) -@@ -761,11 +768,6 @@ int dm_table_get_mode(struct dm_table *t - return t->mode; - } - --void dm_table_add_wait_queue(struct dm_table *t, wait_queue_t *wq) --{ -- add_wait_queue(&t->eventq, wq); --} -- - void dm_table_suspend_targets(struct dm_table *t) - { - int i; ---- linux-2.6.0-test1/drivers/md/Kconfig 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/md/Kconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -145,5 +145,12 @@ config BLK_DEV_DM - - If unsure, say N. - -+config DM_IOCTL_V4 -+ bool "ioctl interface version 4" -+ depends on BLK_DEV_DM -+ ---help--- -+ Recent tools use a new version of the ioctl interface, only -+ select this option if you intend using such tools. -+ - endmenu - ---- linux-2.6.0-test1/drivers/md/linear.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/md/linear.c 2003-07-19 17:04:58.000000000 -0700 -@@ -114,6 +114,8 @@ static int linear_run (mddev_t *mddev) - } - - disk->rdev = rdev; -+ blk_queue_stack_limits(&mddev->queue, -+ rdev->bdev->bd_disk->queue); - disk->size = rdev->size; - mddev->array_size += rdev->size; - ---- linux-2.6.0-test1/drivers/md/md.c 2003-06-14 12:18:06.000000000 -0700 -+++ 25/drivers/md/md.c 2003-07-19 17:03:49.000000000 -0700 -@@ -52,8 +52,6 @@ - #define MD_DRIVER - #define DEVICE_NR(device) (minor(device)) - --#include -- - #define DEBUG 0 - #define dprintk(x...) ((void)(DEBUG && printk(x))) - ---- linux-2.6.0-test1/drivers/md/multipath.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/md/multipath.c 2003-07-19 17:04:58.000000000 -0700 -@@ -271,6 +271,8 @@ static int multipath_add_disk(mddev_t *m - for (path=0; pathraid_disks; path++) - if ((p=conf->multipaths+path)->rdev == NULL) { - p->rdev = rdev; -+ blk_queue_stack_limits(&mddev->queue, -+ rdev->bdev->bd_disk->queue); - conf->working_disks++; - rdev->raid_disk = path; - rdev->in_sync = 1; -@@ -408,6 +410,8 @@ static int multipath_run (mddev_t *mddev - - disk = conf->multipaths + disk_idx; - disk->rdev = rdev; -+ blk_queue_stack_limits(&mddev->queue, -+ rdev->bdev->bd_disk->queue); - if (!rdev->faulty) - conf->working_disks++; - } ---- linux-2.6.0-test1/drivers/md/raid0.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/drivers/md/raid0.c 2003-07-19 17:04:58.000000000 -0700 -@@ -113,6 +113,8 @@ static int create_strip_zones (mddev_t * - goto abort; - } - zone->dev[j] = rdev1; -+ blk_queue_stack_limits(&mddev->queue, -+ rdev1->bdev->bd_disk->queue); - if (!smallest || (rdev1->size size)) - smallest = rdev1; - cnt++; -@@ -293,7 +295,6 @@ static int raid0_run (mddev_t *mddev) - conf->hash_spacing++; - } - -- blk_queue_max_sectors(&mddev->queue, mddev->chunk_size >> 9); - blk_queue_merge_bvec(&mddev->queue, raid0_mergeable_bvec); - return 0; - ---- linux-2.6.0-test1/drivers/md/raid1.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/drivers/md/raid1.c 2003-07-19 17:04:58.000000000 -0700 -@@ -678,6 +678,8 @@ static int raid1_add_disk(mddev_t *mddev - for (mirror=0; mirror < mddev->raid_disks; mirror++) - if ( !(p=conf->mirrors+mirror)->rdev) { - p->rdev = rdev; -+ blk_queue_stack_limits(&mddev->queue, -+ rdev->bdev->bd_disk->queue); - p->head_position = 0; - rdev->raid_disk = mirror; - found = 1; -@@ -1076,6 +1078,8 @@ static int run(mddev_t *mddev) - disk = conf->mirrors + disk_idx; - - disk->rdev = rdev; -+ blk_queue_stack_limits(&mddev->queue, -+ rdev->bdev->bd_disk->queue); - disk->head_position = 0; - if (!rdev->faulty && rdev->in_sync) - conf->working_disks++; ---- linux-2.6.0-test1/drivers/media/common/Makefile 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/media/common/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -1,5 +1,5 @@ - saa7146-objs := saa7146_i2c.o saa7146_core.o --saa7146_vv-objs := saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o -+saa7146_vv-objs := saa7146_vv_ksyms.o saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o - - obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o saa7146_vv.o - ---- linux-2.6.0-test1/drivers/media/common/saa7146_core.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/common/saa7146_core.c 2003-07-19 17:03:49.000000000 -0700 -@@ -373,6 +373,9 @@ static int saa7146_init_one(struct pci_d - dev->module = THIS_MODULE; - init_waitqueue_head(&dev->i2c_wq); - -+ /* set some default values */ -+ saa7146_write(dev, BCS_CTRL, 0x80400040); -+ - if( 0 != ext->probe) { - if( 0 != ext->probe(dev) ) { - DEB_D(("ext->probe() failed for %p. skipping device.\n",dev)); -@@ -391,9 +394,6 @@ static int saa7146_init_one(struct pci_d - list_add_tail(&dev->item,&saa7146_devices); - saa7146_num++; - -- /* set some default values */ -- saa7146_write(dev, BCS_CTRL, 0x80400040); -- - err = 0; - goto out; - attach_error: ---- linux-2.6.0-test1/drivers/media/common/saa7146_fops.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/common/saa7146_fops.c 2003-07-19 17:03:49.000000000 -0700 -@@ -106,10 +106,21 @@ void saa7146_buffer_next(struct saa7146_ - // fixme: fix this for vflip != 0 - - saa7146_write(dev, PROT_ADDR1, 0); -+ saa7146_write(dev, MC2, (MASK_02|MASK_18)); -+ - /* write the address of the rps-program */ - saa7146_write(dev, RPS_ADDR0, dev->d_rps0.dma_handle); - /* turn on rps */ - saa7146_write(dev, MC1, (MASK_12 | MASK_28)); -+ -+/* -+ printk("vdma%d.base_even: 0x%08x\n", 1,saa7146_read(dev,BASE_EVEN1)); -+ printk("vdma%d.base_odd: 0x%08x\n", 1,saa7146_read(dev,BASE_ODD1)); -+ printk("vdma%d.prot_addr: 0x%08x\n", 1,saa7146_read(dev,PROT_ADDR1)); -+ printk("vdma%d.base_page: 0x%08x\n", 1,saa7146_read(dev,BASE_PAGE1)); -+ printk("vdma%d.pitch: 0x%08x\n", 1,saa7146_read(dev,PITCH1)); -+ printk("vdma%d.num_line_byte: 0x%08x\n", 1,saa7146_read(dev,NUM_LINE_BYTE1)); -+*/ - } - del_timer(&q->timeout); - } -@@ -374,7 +385,7 @@ static struct video_device device_templa - .minor = -1, - }; - --int saa7146_vv_init(struct saa7146_dev* dev) -+int saa7146_vv_init(struct saa7146_dev* dev, struct saa7146_ext_vv *ext_vv) - { - struct saa7146_vv *vv = kmalloc (sizeof(struct saa7146_vv),GFP_KERNEL); - if( NULL == vv ) { -@@ -385,6 +396,11 @@ int saa7146_vv_init(struct saa7146_dev* - - DEB_EE(("dev:%p\n",dev)); - -+ /* save per-device extension data (one extension can -+ handle different devices that might need different -+ configuration data) */ -+ dev->ext_vv_data = ext_vv; -+ - vv->video_minor = -1; - vv->vbi_minor = -1; - -@@ -475,13 +491,6 @@ static void __exit saa7146_vv_cleanup_mo - module_init(saa7146_vv_init_module); - module_exit(saa7146_vv_cleanup_module); - --EXPORT_SYMBOL_GPL(saa7146_set_hps_source_and_sync); --EXPORT_SYMBOL_GPL(saa7146_register_device); --EXPORT_SYMBOL_GPL(saa7146_unregister_device); -- --EXPORT_SYMBOL_GPL(saa7146_vv_init); --EXPORT_SYMBOL_GPL(saa7146_vv_release); -- - MODULE_AUTHOR("Michael Hunold "); - MODULE_DESCRIPTION("video4linux driver for saa7146-based hardware"); - MODULE_LICENSE("GPL"); ---- linux-2.6.0-test1/drivers/media/common/saa7146_hlp.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/common/saa7146_hlp.c 2003-07-19 17:03:49.000000000 -0700 -@@ -242,7 +242,9 @@ static int calculate_v_scale_registers(s - if( 2*out_y >= in_y) { - lpi = 1; - } -- } else if (field == V4L2_FIELD_TOP || field == V4L2_FIELD_BOTTOM) { -+ } else if (field == V4L2_FIELD_TOP -+ || field == V4L2_FIELD_ALTERNATE -+ || field == V4L2_FIELD_BOTTOM) { - if( 4*out_y >= in_y ) { - lpi = 1; - } -@@ -468,9 +470,7 @@ static void calculate_clipping_registers - *clip_format &= 0xfffffff7; - if (V4L2_FIELD_HAS_BOTH(field)) { - *clip_format |= 0x00000008; -- } else if (field == V4L2_FIELD_TOP) { -- *clip_format |= 0x00000000; -- } else if (field == V4L2_FIELD_BOTTOM) { -+ } else { - *clip_format |= 0x00000000; - } - } -@@ -593,6 +593,10 @@ static void saa7146_set_position(struct - } - - if (V4L2_FIELD_HAS_BOTH(field)) { -+ } else if (field == V4L2_FIELD_ALTERNATE) { -+ /* fixme */ -+ vdma1.base_odd = vdma1.prot_addr; -+ vdma1.pitch /= 2; - } else if (field == V4L2_FIELD_TOP) { - vdma1.base_odd = vdma1.prot_addr; - vdma1.pitch /= 2; -@@ -706,7 +710,7 @@ void saa7146_write_out_dma(struct saa714 - /* calculate starting address */ - where = (which-1)*0x18; - -- if( 0 != (dev->ext->ext_vv_data->flags & SAA7146_EXT_SWAP_ODD_EVEN)) { -+ if( 0 != (dev->ext_vv_data->flags & SAA7146_EXT_SWAP_ODD_EVEN)) { - saa7146_write(dev, where, vdma->base_even); - saa7146_write(dev, where+0x04, vdma->base_odd); - } else { -@@ -760,6 +764,16 @@ static int calculate_video_dma_grab_pack - } - - if (V4L2_FIELD_HAS_BOTH(field)) { -+ } else if (field == V4L2_FIELD_ALTERNATE) { -+ /* fixme */ -+ if ( vv->last_field == V4L2_FIELD_TOP ) { -+ vdma1.base_odd = vdma1.prot_addr; -+ vdma1.pitch /= 2; -+ } else if ( vv->last_field == V4L2_FIELD_BOTTOM ) { -+ vdma1.base_odd = vdma1.base_even; -+ vdma1.base_even = vdma1.prot_addr; -+ vdma1.pitch /= 2; -+ } - } else if (field == V4L2_FIELD_TOP) { - vdma1.base_odd = vdma1.prot_addr; - vdma1.pitch /= 2; -@@ -896,6 +910,14 @@ static int calculate_video_dma_grab_plan - } - - if (V4L2_FIELD_HAS_BOTH(field)) { -+ } else if (field == V4L2_FIELD_ALTERNATE) { -+ /* fixme */ -+ vdma1.base_odd = vdma1.prot_addr; -+ vdma1.pitch /= 2; -+ vdma2.base_odd = vdma2.prot_addr; -+ vdma2.pitch /= 2; -+ vdma3.base_odd = vdma3.prot_addr; -+ vdma3.pitch /= 2; - } else if (field == V4L2_FIELD_TOP) { - vdma1.base_odd = vdma1.prot_addr; - vdma1.pitch /= 2; -@@ -935,21 +957,22 @@ static int calculate_video_dma_grab_plan - static void program_capture_engine(struct saa7146_dev *dev, int planar) - { - struct saa7146_vv *vv = dev->vv_data; -+ int count = 0; - - unsigned long e_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_E_FID_A : CMD_E_FID_B; - unsigned long o_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_O_FID_A : CMD_O_FID_B; - -- if( 0 != (dev->ext->ext_vv_data->flags & SAA7146_EXT_SWAP_ODD_EVEN)) { -+ if( 0 != (dev->ext_vv_data->flags & SAA7146_EXT_SWAP_ODD_EVEN)) { - unsigned long tmp = e_wait; - e_wait = o_wait; - o_wait = tmp; - } - -- /* wait for o_fid_a/b / e_fid_a/b toggle only if bit 0 is not set*/ -- WRITE_RPS0(CMD_PAUSE | CMD_OAN | CMD_SIG0 | e_wait); -+ /* wait for o_fid_a/b / e_fid_a/b toggle only if rps register 0 is not set*/ - WRITE_RPS0(CMD_PAUSE | CMD_OAN | CMD_SIG0 | o_wait); -+ WRITE_RPS0(CMD_PAUSE | CMD_OAN | CMD_SIG0 | e_wait); - -- /* set bit 0 */ -+ /* set rps register 0 */ - WRITE_RPS0(CMD_WR_REG | (1 << 8) | (MC2/4)); - WRITE_RPS0(MASK_27 | MASK_11); - -@@ -970,8 +993,14 @@ static void program_capture_engine(struc - } - - /* wait for o_fid_a/b / e_fid_a/b toggle */ -+ if ( vv->last_field == V4L2_FIELD_INTERLACED ) { -+ WRITE_RPS0(CMD_PAUSE | o_wait); - WRITE_RPS0(CMD_PAUSE | e_wait); -+ } else if ( vv->last_field == V4L2_FIELD_TOP ) { - WRITE_RPS0(CMD_PAUSE | o_wait); -+ } else if ( vv->last_field == V4L2_FIELD_BOTTOM ) { -+ WRITE_RPS0(CMD_PAUSE | e_wait); -+ } - - /* turn off video-dma1 */ - WRITE_RPS0(CMD_WR_REG_MASK | (MC1/4)); -@@ -999,13 +1028,39 @@ static void program_capture_engine(struc - void saa7146_set_capture(struct saa7146_dev *dev, struct saa7146_buf *buf, struct saa7146_buf *next) - { - struct saa7146_format *sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); -+ struct saa7146_vv *vv = dev->vv_data; -+ u32 vdma1_prot_addr; - - DEB_CAP(("buf:%p, next:%p\n",buf,next)); - -+/* -+ printk("vdma%d.base_even: 0x%08x\n", 1,saa7146_read(dev,BASE_EVEN1)); -+ printk("vdma%d.base_odd: 0x%08x\n", 1,saa7146_read(dev,BASE_ODD1)); -+ printk("vdma%d.prot_addr: 0x%08x\n", 1,saa7146_read(dev,PROT_ADDR1)); -+ printk("vdma%d.base_page: 0x%08x\n", 1,saa7146_read(dev,BASE_PAGE1)); -+ printk("vdma%d.pitch: 0x%08x\n", 1,saa7146_read(dev,PITCH1)); -+ printk("vdma%d.num_line_byte: 0x%08x\n", 1,saa7146_read(dev,NUM_LINE_BYTE1)); -+ printk("vdma%d => vptr : 0x%08x\n", 1,saa7146_read(dev,PCI_VDP1)); -+*/ -+ -+ vdma1_prot_addr = saa7146_read(dev, PROT_ADDR1); -+ if( 0 == vdma1_prot_addr ) { -+ /* clear out beginning of streaming bit (rps register 0)*/ -+ DEB_CAP(("forcing sync to new frame\n")); -+ saa7146_write(dev, MC2, MASK_27 ); -+ } -+ - saa7146_set_window(dev, buf->fmt->width, buf->fmt->height, buf->fmt->field); - saa7146_set_output_format(dev, sfmt->trans); - saa7146_disable_clipping(dev); - -+ if ( vv->last_field == V4L2_FIELD_INTERLACED ) { -+ } else if ( vv->last_field == V4L2_FIELD_TOP ) { -+ vv->last_field = V4L2_FIELD_BOTTOM; -+ } else if ( vv->last_field == V4L2_FIELD_BOTTOM ) { -+ vv->last_field = V4L2_FIELD_TOP; -+ } -+ - if( 0 != IS_PLANAR(sfmt->trans)) { - calculate_video_dma_grab_planar(dev, buf); - program_capture_engine(dev,1); ---- linux-2.6.0-test1/drivers/media/common/saa7146_i2c.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/common/saa7146_i2c.c 2003-07-19 17:03:49.000000000 -0700 -@@ -181,9 +181,10 @@ static int saa7146_i2c_reset(struct saa7 - /* this functions writes out the data-byte 'dword' to the i2c-device. - it returns 0 if ok, -1 if the transfer failed, -2 if the transfer - failed badly (e.g. address error) */ --static int saa7146_i2c_writeout(struct saa7146_dev *dev, u32* dword) -+static int saa7146_i2c_writeout(struct saa7146_dev *dev, u32* dword, int short_delay) - { - u32 status = 0, mc2 = 0; -+ int trial = 0; - int timeout; - - /* write out i2c-command */ -@@ -224,10 +225,13 @@ static int saa7146_i2c_writeout(struct s - /* wait until we get a transfer done or error */ - timeout = jiffies + HZ/100 + 1; /* 10ms */ - while(1) { -+ /** -+ * first read usually delivers bogus results... -+ */ -+ saa7146_i2c_status(dev); - status = saa7146_i2c_status(dev); -- if( (0x3 == (status & 0x3)) || (0 == (status & 0x1)) ) { -+ if ((status & 0x3) != 1) - break; -- } - if (jiffies > timeout) { - /* this is normal when probing the bus - * (no answer from nonexisistant device...) -@@ -235,6 +239,9 @@ static int saa7146_i2c_writeout(struct s - DEB_I2C(("saa7146_i2c_writeout: timed out waiting for end of xfer\n")); - return -EIO; - } -+ if ((++trial < 20) && short_delay) -+ udelay(10); -+ else - my_wait(dev,1); - } - } -@@ -277,6 +284,7 @@ int saa7146_i2c_transfer(struct saa7146_ - u32* buffer = dev->d_i2c.cpu_addr; - int err = 0; - int address_err = 0; -+ int short_delay = 0; - - if (down_interruptible (&dev->i2c_lock)) - return -ERESTARTSYS; -@@ -292,6 +300,8 @@ int saa7146_i2c_transfer(struct saa7146_ - goto out; - } - -+ if (count > 3) short_delay = 1; -+ - do { - /* reset the i2c-device if necessary */ - err = saa7146_i2c_reset(dev); -@@ -302,7 +312,7 @@ int saa7146_i2c_transfer(struct saa7146_ - - /* write out the u32s one after another */ - for(i = 0; i < count; i++) { -- err = saa7146_i2c_writeout(dev, &buffer[i] ); -+ err = saa7146_i2c_writeout(dev, &buffer[i], short_delay); - if ( 0 != err) { - /* this one is unsatisfying: some i2c slaves on some - dvb cards don't acknowledge correctly, so the saa7146 -@@ -357,7 +367,7 @@ out: - if( 0 == dev->revision ) { - u32 zero = 0; - saa7146_i2c_reset(dev); -- if( 0 != saa7146_i2c_writeout(dev, &zero)) { -+ if( 0 != saa7146_i2c_writeout(dev, &zero, short_delay)) { - INFO(("revision 0 error. this should never happen.\n")); - } - } -@@ -397,8 +407,13 @@ int saa7146_i2c_adapter_prepare(struct s - - if( NULL != i2c_adapter ) { - memset(i2c_adapter,0,sizeof(struct i2c_adapter)); -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -+ strcpy(i2c_adapter->name, dev->name); -+ i2c_adapter->data = dev; -+#else - strcpy(i2c_adapter->dev.name, dev->name); - i2c_set_adapdata(i2c_adapter,dev); -+#endif - i2c_adapter->algo = &saa7146_algo; - i2c_adapter->algo_data = NULL; - i2c_adapter->id = I2C_ALGO_SAA7146; ---- linux-2.6.0-test1/drivers/media/common/saa7146_vbi.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/common/saa7146_vbi.c 2003-07-19 17:03:49.000000000 -0700 -@@ -9,6 +9,7 @@ static int vbi_workaround(struct saa7146 - u32 *cpu; - dma_addr_t dma_addr; - -+ int count = 0; - int i; - - DECLARE_WAITQUEUE(wait, current); -@@ -443,5 +444,3 @@ struct saa7146_use_ops saa7146_vbi_uops - .irq_done = vbi_irq_done, - .read = vbi_read, - }; -- --EXPORT_SYMBOL_GPL(saa7146_vbi_uops); ---- linux-2.6.0-test1/drivers/media/common/saa7146_video.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/common/saa7146_video.c 2003-07-19 17:03:49.000000000 -0700 -@@ -137,6 +137,7 @@ static int try_win(struct saa7146_dev *d - switch (field) { - case V4L2_FIELD_TOP: - case V4L2_FIELD_BOTTOM: -+ case V4L2_FIELD_ALTERNATE: - maxh = maxh / 2; - break; - case V4L2_FIELD_INTERLACED: -@@ -186,11 +187,18 @@ static int try_fmt(struct saa7146_fh *fh - : V4L2_FIELD_BOTTOM; - } - switch (field) { -+ case V4L2_FIELD_ALTERNATE: { -+ vv->last_field = V4L2_FIELD_TOP; -+ maxh = maxh / 2; -+ break; -+ } - case V4L2_FIELD_TOP: - case V4L2_FIELD_BOTTOM: -+ vv->last_field = V4L2_FIELD_INTERLACED; - maxh = maxh / 2; - break; - case V4L2_FIELD_INTERLACED: -+ vv->last_field = V4L2_FIELD_INTERLACED; - break; - default: { - DEB_D(("no known field mode '%d'.\n",field)); -@@ -220,7 +228,7 @@ static int try_fmt(struct saa7146_fh *fh - } - } - --static int start_preview(struct saa7146_fh *fh) -+int saa7146_start_preview(struct saa7146_fh *fh) - { - struct saa7146_dev *dev = fh->dev; - struct saa7146_vv *vv = dev->vv_data; -@@ -266,12 +274,12 @@ static int start_preview(struct saa7146_ - return 0; - } - --static int stop_preview(struct saa7146_fh *fh) -+int saa7146_stop_preview(struct saa7146_fh *fh) - { - struct saa7146_dev *dev = fh->dev; - struct saa7146_vv *vv = dev->vv_data; - -- DEB_EE(("saa7146.o: stop_preview()\n")); -+ DEB_EE(("saa7146.o: saa7146_stop_preview()\n")); - - /* check if overlay is running */ - if( 0 == vv->ov_data ) { -@@ -333,8 +341,8 @@ static int s_fmt(struct saa7146_fh *fh, - if( vv->ov_data != NULL ) { - if( fh == vv->ov_data->fh) { - spin_lock_irqsave(&dev->slock,flags); -- stop_preview(fh); -- start_preview(fh); -+ saa7146_stop_preview(fh); -+ saa7146_start_preview(fh); - spin_unlock_irqrestore(&dev->slock,flags); - } - } -@@ -522,8 +530,8 @@ static int set_control(struct saa7146_fh - if( 0 != vv->ov_data ) { - if( fh == vv->ov_data->fh ) { - spin_lock_irqsave(&dev->slock,flags); -- stop_preview(fh); -- start_preview(fh); -+ saa7146_stop_preview(fh); -+ saa7146_start_preview(fh); - spin_unlock_irqrestore(&dev->slock,flags); - } - } -@@ -561,7 +569,7 @@ static int saa7146_pgtable_build(struct - m3 = ((size+(size/2)+PAGE_SIZE)/PAGE_SIZE)-1; - o1 = size%PAGE_SIZE; - o2 = (size+(size/4))%PAGE_SIZE; -- printk("size:%d, m1:%d, m2:%d, m3:%d, o1:%d, o2:%d\n",size,m1,m2,m3,o1,o2); -+ DEB_CAP(("size:%d, m1:%d, m2:%d, m3:%d, o1:%d, o2:%d\n",size,m1,m2,m3,o1,o2)); - break; - } - case 16: { -@@ -571,7 +579,7 @@ static int saa7146_pgtable_build(struct - m3 = ((2*size+PAGE_SIZE)/PAGE_SIZE)-1; - o1 = size%PAGE_SIZE; - o2 = (size+(size/2))%PAGE_SIZE; -- printk("size:%d, m1:%d, m2:%d, m3:%d, o1:%d, o2:%d\n",size,m1,m2,m3,o1,o2); -+ DEB_CAP(("size:%d, m1:%d, m2:%d, m3:%d, o1:%d, o2:%d\n",size,m1,m2,m3,o1,o2)); - break; - } - default: { -@@ -674,7 +682,7 @@ static int video_begin(struct saa7146_fh - - spin_lock_irqsave(&dev->slock,flags); - -- /* clear out beginning of streaming bit */ -+ /* clear out beginning of streaming bit (rps register 0)*/ - saa7146_write(dev, MC2, MASK_27 ); - - /* enable rps0 irqs */ -@@ -740,19 +748,19 @@ int saa7146_video_do_ioctl(struct inode - struct videobuf_queue *q; - - /* check if extension handles the command */ -- for(ee = 0; dev->ext->ext_vv_data->ioctls[ee].flags != 0; ee++) { -- if( cmd == dev->ext->ext_vv_data->ioctls[ee].cmd ) -+ for(ee = 0; dev->ext_vv_data->ioctls[ee].flags != 0; ee++) { -+ if( cmd == dev->ext_vv_data->ioctls[ee].cmd ) - break; - } - -- if( 0 != (dev->ext->ext_vv_data->ioctls[ee].flags & SAA7146_EXCLUSIVE) ) { -+ if( 0 != (dev->ext_vv_data->ioctls[ee].flags & SAA7146_EXCLUSIVE) ) { - DEB_D(("extension handles ioctl exclusive.\n")); -- result = dev->ext->ext_vv_data->ioctl(dev, cmd, arg); -+ result = dev->ext_vv_data->ioctl(fh, cmd, arg); - return result; - } -- if( 0 != (dev->ext->ext_vv_data->ioctls[ee].flags & SAA7146_BEFORE) ) { -+ if( 0 != (dev->ext_vv_data->ioctls[ee].flags & SAA7146_BEFORE) ) { - DEB_D(("extension handles ioctl before.\n")); -- result = dev->ext->ext_vv_data->ioctl(dev, cmd, arg); -+ result = dev->ext_vv_data->ioctl(fh, cmd, arg); - if( -EAGAIN != result ) { - return result; - } -@@ -793,7 +801,7 @@ int saa7146_video_do_ioctl(struct inode - V4L2_CAP_VIDEO_OVERLAY | - V4L2_CAP_READWRITE | - V4L2_CAP_STREAMING; -- cap->capabilities |= dev->ext->ext_vv_data->capabilities; -+ cap->capabilities |= dev->ext_vv_data->capabilities; - return 0; - } - case VIDIOC_G_FBUF: -@@ -942,9 +950,10 @@ int saa7146_video_do_ioctl(struct inode - struct v4l2_standard *e = arg; - if (e->index < 0 ) - return -EINVAL; -- if( e->index < dev->ext->ext_vv_data->num_stds ) { -+ if( e->index < dev->ext_vv_data->num_stds ) { - DEB_EE(("VIDIOC_ENUMSTD: index:%d\n",e->index)); -- return v4l2_video_std_construct(e, dev->ext->ext_vv_data->stds[e->index].id, dev->ext->ext_vv_data->stds[e->index].name); -+ v4l2_video_std_construct(e, dev->ext_vv_data->stds[e->index].id, dev->ext_vv_data->stds[e->index].name); -+ return 0; - } - return -EINVAL; - } -@@ -968,22 +977,22 @@ int saa7146_video_do_ioctl(struct inode - - if( vv->ov_data != NULL ) { - ov_fh = vv->ov_data->fh; -- stop_preview(ov_fh); -+ saa7146_stop_preview(ov_fh); - restart_overlay = 1; - } - -- for(i = 0; i < dev->ext->ext_vv_data->num_stds; i++) -- if (*id & dev->ext->ext_vv_data->stds[i].id) -+ for(i = 0; i < dev->ext_vv_data->num_stds; i++) -+ if (*id & dev->ext_vv_data->stds[i].id) - break; -- if (i != dev->ext->ext_vv_data->num_stds) { -- vv->standard = &dev->ext->ext_vv_data->stds[i]; -- if( NULL != dev->ext->ext_vv_data->std_callback ) -- dev->ext->ext_vv_data->std_callback(dev, vv->standard); -+ if (i != dev->ext_vv_data->num_stds) { -+ vv->standard = &dev->ext_vv_data->stds[i]; -+ if( NULL != dev->ext_vv_data->std_callback ) -+ dev->ext_vv_data->std_callback(dev, vv->standard); - found = 1; - } - - if( 0 != restart_overlay ) { -- start_preview(ov_fh); -+ saa7146_start_preview(ov_fh); - } - up(&dev->lock); - -@@ -1000,7 +1009,7 @@ int saa7146_video_do_ioctl(struct inode - int on = *(int *)arg; - int err = 0; - -- if( NULL == vv->ov_fmt ) { -+ if( NULL == vv->ov_fmt && on != 0 ) { - DEB_D(("VIDIOC_OVERLAY: no framebuffer informations. call S_FBUF first!\n")); - return -EAGAIN; - } -@@ -1013,7 +1022,7 @@ int saa7146_video_do_ioctl(struct inode - } - } - spin_lock_irqsave(&dev->slock,flags); -- err = start_preview(fh); -+ err = saa7146_start_preview(fh); - spin_unlock_irqrestore(&dev->slock,flags); - } else { - if( vv->ov_data != NULL ) { -@@ -1022,7 +1031,7 @@ int saa7146_video_do_ioctl(struct inode - } - } - spin_lock_irqsave(&dev->slock,flags); -- err = stop_preview(fh); -+ err = saa7146_stop_preview(fh); - spin_unlock_irqrestore(&dev->slock,flags); - } - return err; -@@ -1036,12 +1045,18 @@ int saa7146_video_do_ioctl(struct inode - return videobuf_querybuf(q,arg); - } - case VIDIOC_QBUF: { -- DEB_D(("VIDIOC_QBUF \n")); -- return videobuf_qbuf(file,q,arg); -+ struct v4l2_buffer *b = arg; -+ int ret = 0; -+ ret = videobuf_qbuf(file,q,b); -+ DEB_D(("VIDIOC_QBUF: ret:%d, index:%d\n",ret,b->index)); -+ return ret; - } - case VIDIOC_DQBUF: { -- DEB_D(("VIDIOC_DQBUF \n")); -- return videobuf_dqbuf(file,q,arg); -+ struct v4l2_buffer *b = arg; -+ int ret = 0; -+ ret = videobuf_dqbuf(file,q,b); -+ DEB_D(("VIDIOC_DQBUF: ret:%d, index:%d\n",ret,b->index)); -+ return ret; - } - case VIDIOC_STREAMON: { - DEB_D(("VIDIOC_STREAMON \n")); -@@ -1075,7 +1090,7 @@ int saa7146_video_do_ioctl(struct inode - - q = &fh->video_q; - down(&q->lock); -- err = videobuf_mmap_setup(file,q,gbuffers,gbufsize); -+ err = videobuf_mmap_setup(file,q,gbuffers,gbufsize); // ,V4L2_MEMORY_MMAP); - if (err < 0) { - up(&q->lock); - return err; -@@ -1250,7 +1265,7 @@ static void video_init(struct saa7146_de - vv->video_q.dev = dev; - - /* set some default values */ -- vv->standard = &dev->ext->ext_vv_data->stds[0]; -+ vv->standard = &dev->ext_vv_data->stds[0]; - - /* FIXME: what's this? */ - vv->current_hps_source = SAA7146_HPS_SOURCE_PORT_A; -@@ -1287,7 +1302,7 @@ static void video_close(struct saa7146_d - if( 0 != vv->ov_data ) { - if( fh == vv->ov_data->fh ) { - spin_lock_irqsave(&dev->slock,flags); -- stop_preview(fh); -+ saa7146_stop_preview(fh); - spin_unlock_irqrestore(&dev->slock,flags); - } - } -@@ -1331,7 +1346,7 @@ static ssize_t video_read(struct file *f - - if( vv->ov_data != NULL ) { - ov_fh = vv->ov_data->fh; -- stop_preview(ov_fh); -+ saa7146_stop_preview(ov_fh); - restart_overlay = 1; - } - -@@ -1343,7 +1358,7 @@ static ssize_t video_read(struct file *f - - /* restart overlay if it was active before */ - if( 0 != restart_overlay ) { -- start_preview(ov_fh); -+ saa7146_start_preview(ov_fh); - } - - return ret; -@@ -1358,5 +1373,3 @@ struct saa7146_use_ops saa7146_video_uop - .capture_begin = video_begin, - .capture_end = video_end, - }; -- --EXPORT_SYMBOL_GPL(saa7146_video_uops); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/common/saa7146_vv_ksyms.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,15 @@ -+#include -+#include -+ -+EXPORT_SYMBOL_GPL(saa7146_vbi_uops); -+EXPORT_SYMBOL_GPL(saa7146_video_uops); -+ -+EXPORT_SYMBOL_GPL(saa7146_start_preview); -+EXPORT_SYMBOL_GPL(saa7146_stop_preview); -+ -+EXPORT_SYMBOL_GPL(saa7146_set_hps_source_and_sync); -+EXPORT_SYMBOL_GPL(saa7146_register_device); -+EXPORT_SYMBOL_GPL(saa7146_unregister_device); -+ -+EXPORT_SYMBOL_GPL(saa7146_vv_init); -+EXPORT_SYMBOL_GPL(saa7146_vv_release); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/b2c2/Kconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,8 @@ -+config DVB_B2C2_SKYSTAR -+ tristate "Technisat Skystar2 PCI" -+ depends on DVB_CORE -+ help -+ Support for the Skystar2 PCI DVB card by Technisat, which -+ is equipped with the FlexCopII chipset by B2C2. -+ -+ Say Y if you own such a device and want to use it. ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/b2c2/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,3 @@ -+obj-$(CONFIG_DVB_B2C2_SKYSTAR) += skystar2.o -+ -+EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/b2c2/skystar2.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,2506 @@ -+/* -+ * skystar2.c - driver for the Technisat SkyStar2 PCI DVB card -+ * based on the FlexCopII by B2C2,Inc. -+ * -+ * Copyright (C) 2003 V.C. , skystar@moldova.cc -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public License -+ * as published by the Free Software Foundation; either version 2.1 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ */ -+#include -+#include -+#include -+ -+#include "dvb_i2c.h" -+#include "dvb_frontend.h" -+#include "dvb_functions.h" -+ -+#include -+#include -+#include "dvb_demux.h" -+#include "dmxdev.h" -+#include "dvb_filter.h" -+#include "dvbdev.h" -+#include "demux.h" -+#include "dvb_net.h" -+ -+static int debug = 0; -+#define dprintk(x...) do { if (debug) printk(x); } while (0) -+ -+#define SizeOfBufDMA1 0x3AC00 -+#define SizeOfBufDMA2 0x758 -+ -+struct dmaq { -+ -+ u32 bus_addr; -+ u32 head; -+ u32 tail; -+ u32 buffer_size; -+ u8 *buffer; -+}; -+ -+struct packet_header { -+ -+ u32 sync_byte; -+ u32 transport_error_indicator; -+ u32 payload_unit_start_indicator; -+ u32 transport_priority; -+ u32 pid; -+ u32 transport_scrambling_control; -+ u32 adaptation_field_control; -+ u32 continuity_counter; -+}; -+ -+struct adapter { -+ -+ struct pci_dev *pdev; -+ -+ u8 card_revision; -+ u32 b2c2_revision; -+ u32 PidFilterMax; -+ u32 MacFilterMax; -+ u32 irq; -+ u32 io_mem; -+ u32 io_port; -+ u8 mac_addr[8]; -+ u32 dwSramType; -+ -+ struct dvb_adapter *dvb_adapter; -+ struct dvb_demux demux; -+ struct dmxdev dmxdev; -+ struct dmx_frontend hw_frontend; -+ struct dmx_frontend mem_frontend; -+ struct dvb_i2c_bus *i2c_bus; -+ struct dvb_net dvbnet; -+ -+ struct semaphore i2c_sem; -+ -+ struct dmaq dmaq1; -+ struct dmaq dmaq2; -+ -+ u32 dma_ctrl; -+ u32 dma_status; -+ -+ u32 capturing; -+ -+ spinlock_t lock; -+ -+ u16 pids[0x27]; -+ u32 mac_filter; -+}; -+ -+#define WriteRegDW(adapter,reg,value) writel(value, adapter->io_mem + reg) -+#define ReadRegDW(adapter,reg) readl(adapter->io_mem + reg) -+ -+static void WriteRegOp(struct adapter *adapter, u32 reg, u32 operation, u32 andvalue, u32 orvalue) -+{ -+ u32 tmp; -+ -+ tmp = ReadRegDW(adapter, reg); -+ -+ if (operation == 1) -+ tmp = tmp | orvalue; -+ if (operation == 2) -+ tmp = tmp & andvalue; -+ if (operation == 3) -+ tmp = (tmp & andvalue) | orvalue; -+ -+ WriteRegDW(adapter, reg, tmp); -+} -+ -+/* i2c functions */ -+static int i2cMainWriteForFlex2(struct adapter * adapter, u32 command, u8 * buf, u32 retries) -+{ -+ u32 i; -+ u32 value; -+ -+ WriteRegDW(adapter, 0x100, 0); -+ WriteRegDW(adapter, 0x100, command); -+ -+ for (i = 0; i < retries; i++) { -+ value = ReadRegDW(adapter, 0x100); -+ -+ if ((value & 0x40000000) == 0) { -+ if ((value & 0x81000000) == 0x80000000) { -+ if (buf != 0) -+ *buf = (value >> 0x10) & 0xff; -+ -+ return 1; -+ } -+ -+ } else { -+ -+ WriteRegDW(adapter, 0x100, 0); -+ WriteRegDW(adapter, 0x100, command); -+ } -+ } -+ -+ return 0; -+} -+ -+/* device = 0x10000000 for tuner, 0x20000000 for eeprom */ -+static void i2cMainSetup(u32 device, u32 chip_addr, u8 op, u8 addr, u32 value, u32 len, u32 *command) -+{ -+ *command = device | ((len - 1) << 26) | (value << 16) | (addr << 8) | chip_addr; -+ -+ if (op != 0) -+ *command = *command | 0x03000000; -+ else -+ *command = *command | 0x01000000; -+} -+ -+static int FlexI2cRead4(struct adapter * adapter, u32 device, u32 chip_addr, u16 addr, u8 * buf, u8 len) -+{ -+ u32 command; -+ u32 value; -+ -+ int result, i; -+ -+ i2cMainSetup(device, chip_addr, 1, addr, 0, len, &command); -+ -+ result = i2cMainWriteForFlex2(adapter, command, buf, 100000); -+ -+ if ((result & 0xff) != 0) { -+ if (len > 1) { -+ value = ReadRegDW(adapter, 0x104); -+ -+ for (i = 1; i < len; i++) { -+ buf[i] = value & 0xff; -+ value = value >> 8; -+ } -+ } -+ } -+ -+ return result; -+} -+ -+static int FlexI2cWrite4(struct adapter * adapter, u32 device, u32 chip_addr, u32 addr, u8 * buf, u8 len) -+{ -+ u32 command; -+ u32 value; -+ int i; -+ -+ if (len > 1) { -+ value = 0; -+ -+ for (i = len; i > 1; i--) { -+ value = value << 8; -+ value = value | buf[i - 1]; -+ } -+ -+ WriteRegDW(adapter, 0x104, value); -+ } -+ -+ i2cMainSetup(device, chip_addr, 0, addr, buf[0], len, &command); -+ -+ return i2cMainWriteForFlex2(adapter, command, 0, 100000); -+} -+ -+static void fixchipaddr(u32 device, u32 bus, u32 addr, u32 *ret) -+{ -+ if (device == 0x20000000) -+ *ret = bus | ((addr >> 8) & 3); -+ -+ *ret = bus; -+} -+ -+static u32 FLEXI2C_read(struct adapter * adapter, u32 device, u32 bus, u32 addr, u8 * buf, u32 len) -+{ -+ u32 chipaddr; -+ u32 bytes_to_transfer; -+ u8 *start; -+ -+// dprintk("%s:\n", __FUNCTION__); -+ -+ start = buf; -+ -+ while (len != 0) { -+ bytes_to_transfer = len; -+ -+ if (bytes_to_transfer > 4) -+ bytes_to_transfer = 4; -+ -+ fixchipaddr(device, bus, addr, &chipaddr); -+ -+ if (FlexI2cRead4(adapter, device, chipaddr, addr, buf, bytes_to_transfer) == 0) -+ return buf - start; -+ -+ buf = buf + bytes_to_transfer; -+ addr = addr + bytes_to_transfer; -+ len = len - bytes_to_transfer; -+ }; -+ -+ return buf - start; -+} -+ -+static u32 FLEXI2C_write(struct adapter * adapter, u32 device, u32 bus, u32 addr, u8 * buf, u32 len) -+{ -+ u32 chipaddr; -+ u32 bytes_to_transfer; -+ u8 *start; -+ -+// dprintk("%s:\n", __FUNCTION__); -+ -+ start = buf; -+ -+ while (len != 0) { -+ bytes_to_transfer = len; -+ -+ if (bytes_to_transfer > 4) -+ bytes_to_transfer = 4; -+ -+ fixchipaddr(device, bus, addr, &chipaddr); -+ -+ if (FlexI2cWrite4(adapter, device, chipaddr, addr, buf, bytes_to_transfer) == 0) -+ return buf - start; -+ -+ buf = buf + bytes_to_transfer; -+ addr = addr + bytes_to_transfer; -+ len = len - bytes_to_transfer; -+ } -+ -+ return buf - start; -+} -+ -+static int master_xfer(struct dvb_i2c_bus *i2c, const struct i2c_msg *msgs, int num) -+{ -+ struct adapter *tmp = i2c->data; -+ int i, ret = 0; -+ -+ if (down_interruptible(&tmp->i2c_sem)) -+ return -ERESTARTSYS; -+ -+ if (0) { -+ dprintk("%s:\n", __FUNCTION__); -+ -+ for (i = 0; i < num; i++) { -+ printk("message %d: flags=%x, addr=0x%04x, buf=%x, len=%d \n", i, msgs[i].flags, msgs[i].addr, (u32) msgs[i].buf, msgs[i].len); -+ } -+ } -+ -+ /* allow only the vp310 frontend to access the bus */ -+ if ((msgs[0].addr != 0x0E) && (msgs[0].addr != 0x61)) { -+ up(&tmp->i2c_sem); -+ -+ return -EREMOTEIO; -+ } -+ -+ if ((num == 1) && (msgs[0].buf != NULL)) { -+ if (msgs[0].flags == I2C_M_RD) { -+ ret = -EINVAL; -+ -+ } else { -+ -+ // single writes do have the reg addr in buf[0] and data in buf[1] to buf[n] -+ ret = FLEXI2C_write(tmp, 0x10000000, msgs[0].addr, msgs[0].buf[0], &msgs[0].buf[1], msgs[0].len - 1); -+ -+ if (ret != msgs[0].len - 1) -+ ret = -EREMOTEIO; -+ else -+ ret = num; -+ } -+ -+ } else if ((num == 2) && (msgs[1].buf != NULL)) { -+ -+ // i2c reads consist of a reg addr _write_ followed by a data read, so msg[1].flags has to be examined -+ if (msgs[1].flags == I2C_M_RD) { -+ ret = FLEXI2C_read(tmp, 0x10000000, msgs[0].addr, msgs[0].buf[0], msgs[1].buf, msgs[1].len); -+ -+ } else { -+ -+ ret = FLEXI2C_write(tmp, 0x10000000, msgs[0].addr, msgs[0].buf[0], msgs[1].buf, msgs[1].len); -+ } -+ -+ if (ret != msgs[1].len) -+ ret = -EREMOTEIO; -+ else -+ ret = num; -+ } -+ -+ up(&tmp->i2c_sem); -+ -+ /* master xfer functions always return the number of successfully -+ transmitted messages, not the number of transmitted bytes. -+ return -EREMOTEIO in case of failure. */ -+ return ret; -+} -+ -+/* SRAM (Skystar2 rev2.3 has one "ISSI IS61LV256" chip on board, -+ but it seems that FlexCopII can work with more than one chip) */ -+static void SRAMSetNetDest(struct adapter * adapter, u8 dest) -+{ -+ u32 tmp; -+ -+ udelay(1000); -+ -+ tmp = (ReadRegDW(adapter, 0x714) & 0xFFFFFFFC) | (dest & 3); -+ -+ udelay(1000); -+ -+ WriteRegDW(adapter, 0x714, tmp); -+ WriteRegDW(adapter, 0x714, tmp); -+ -+ udelay(1000); -+ -+ /* return value is never used? */ -+/* return tmp; */ -+} -+ -+static void SRAMSetCaiDest(struct adapter * adapter, u8 dest) -+{ -+ u32 tmp; -+ -+ udelay(1000); -+ -+ tmp = (ReadRegDW(adapter, 0x714) & 0xFFFFFFF3) | ((dest & 3) << 2); -+ -+ udelay(1000); -+ udelay(1000); -+ -+ WriteRegDW(adapter, 0x714, tmp); -+ WriteRegDW(adapter, 0x714, tmp); -+ -+ udelay(1000); -+ -+ /* return value is never used? */ -+/* return tmp; */ -+} -+ -+static void SRAMSetCaoDest(struct adapter * adapter, u8 dest) -+{ -+ u32 tmp; -+ -+ udelay(1000); -+ -+ tmp = (ReadRegDW(adapter, 0x714) & 0xFFFFFFCF) | ((dest & 3) << 4); -+ -+ udelay(1000); -+ udelay(1000); -+ -+ WriteRegDW(adapter, 0x714, tmp); -+ WriteRegDW(adapter, 0x714, tmp); -+ -+ udelay(1000); -+ -+ /* return value is never used? */ -+/* return tmp; */ -+} -+ -+static void SRAMSetMediaDest(struct adapter * adapter, u8 dest) -+{ -+ u32 tmp; -+ -+ udelay(1000); -+ -+ tmp = (ReadRegDW(adapter, 0x714) & 0xFFFFFF3F) | ((dest & 3) << 6); -+ -+ udelay(1000); -+ udelay(1000); -+ -+ WriteRegDW(adapter, 0x714, tmp); -+ WriteRegDW(adapter, 0x714, tmp); -+ -+ udelay(1000); -+ -+ /* return value is never used? */ -+/* return tmp; */ -+} -+ -+/* SRAM memory is accessed through a buffer register in the FlexCop -+ chip (0x700). This register has the following structure: -+ bits 0-14 : address -+ bit 15 : read/write flag -+ bits 16-23 : 8-bit word to write -+ bits 24-27 : = 4 -+ bits 28-29 : memory bank selector -+ bit 31 : busy flag -+*/ -+static void FlexSramWrite(struct adapter *adapter, u32 bank, u32 addr, u8 * buf, u32 len) -+{ -+ u32 i, command, retries; -+ -+ for (i = 0; i < len; i++) { -+ command = bank | addr | 0x04000000 | (*buf << 0x10); -+ -+ retries = 2; -+ -+ while (((ReadRegDW(adapter, 0x700) & 0x80000000) != 0) && (retries > 0)) { -+ mdelay(1); -+ retries--; -+ }; -+ -+ if (retries == 0) -+ printk("%s: SRAM timeout\n", __FUNCTION__); -+ -+ WriteRegDW(adapter, 0x700, command); -+ -+ buf++; -+ addr++; -+ } -+} -+ -+static void FlexSramRead(struct adapter *adapter, u32 bank, u32 addr, u8 * buf, u32 len) -+{ -+ u32 i, command, value, retries; -+ -+ for (i = 0; i < len; i++) { -+ command = bank | addr | 0x04008000; -+ -+ retries = 10000; -+ -+ while (((ReadRegDW(adapter, 0x700) & 0x80000000) != 0) && (retries > 0)) { -+ mdelay(1); -+ retries--; -+ }; -+ -+ if (retries == 0) -+ printk("%s: SRAM timeout\n", __FUNCTION__); -+ -+ WriteRegDW(adapter, 0x700, command); -+ -+ retries = 10000; -+ -+ while (((ReadRegDW(adapter, 0x700) & 0x80000000) != 0) && (retries > 0)) { -+ mdelay(1); -+ retries--; -+ }; -+ -+ if (retries == 0) -+ printk("%s: SRAM timeout\n", __FUNCTION__); -+ -+ value = ReadRegDW(adapter, 0x700) >> 0x10; -+ -+ *buf = (value & 0xff); -+ -+ addr++; -+ buf++; -+ } -+} -+ -+static void SRAM_writeChunk(struct adapter *adapter, u32 addr, u8 * buf, u16 len) -+{ -+ u32 bank; -+ -+ bank = 0; -+ -+ if (adapter->dwSramType == 0x20000) { -+ bank = (addr & 0x18000) << 0x0D; -+ } -+ -+ if (adapter->dwSramType == 0x00000) { -+ if ((addr >> 0x0F) == 0) -+ bank = 0x20000000; -+ else -+ bank = 0x10000000; -+ } -+ -+ FlexSramWrite(adapter, bank, addr & 0x7FFF, buf, len); -+} -+ -+static void SRAM_readChunk(struct adapter *adapter, u32 addr, u8 * buf, u16 len) -+{ -+ u32 bank; -+ -+ bank = 0; -+ -+ if (adapter->dwSramType == 0x20000) { -+ bank = (addr & 0x18000) << 0x0D; -+ } -+ -+ if (adapter->dwSramType == 0x00000) { -+ if ((addr >> 0x0F) == 0) -+ bank = 0x20000000; -+ else -+ bank = 0x10000000; -+ } -+ -+ FlexSramRead(adapter, bank, addr & 0x7FFF, buf, len); -+} -+ -+static void SRAM_read(struct adapter *adapter, u32 addr, u8 * buf, u32 len) -+{ -+ u32 length; -+ -+ while (len != 0) { -+ length = len; -+ -+ // check if the address range belongs to the same -+ // 32K memory chip. If not, the data is read from -+ // one chip at a time. -+ if ((addr >> 0x0F) != ((addr + len - 1) >> 0x0F)) { -+ length = (((addr >> 0x0F) + 1) << 0x0F) - addr; -+ } -+ -+ SRAM_readChunk(adapter, addr, buf, length); -+ -+ addr = addr + length; -+ buf = buf + length; -+ len = len - length; -+ } -+} -+ -+static void SRAM_write(struct adapter *adapter, u32 addr, u8 * buf, u32 len) -+{ -+ u32 length; -+ -+ while (len != 0) { -+ length = len; -+ -+ // check if the address range belongs to the same -+ // 32K memory chip. If not, the data is written to -+ // one chip at a time. -+ if ((addr >> 0x0F) != ((addr + len - 1) >> 0x0F)) { -+ length = (((addr >> 0x0F) + 1) << 0x0F) - addr; -+ } -+ -+ SRAM_writeChunk(adapter, addr, buf, length); -+ -+ addr = addr + length; -+ buf = buf + length; -+ len = len - length; -+ } -+} -+ -+static void SRAM_setSize(struct adapter *adapter, u32 mask) -+{ -+ WriteRegDW(adapter, 0x71C, (mask | (~0x30000 & ReadRegDW(adapter, 0x71C)))); -+} -+ -+static void SRAM_init(struct adapter *adapter) -+{ -+ u32 tmp; -+ -+ tmp = ReadRegDW(adapter, 0x71C); -+ -+ WriteRegDW(adapter, 0x71C, 1); -+ -+ if (ReadRegDW(adapter, 0x71C) != 0) { -+ WriteRegDW(adapter, 0x71C, tmp); -+ -+ adapter->dwSramType = tmp & 0x30000; -+ -+ dprintk("%s: dwSramType = %x\n", __FUNCTION__, adapter->dwSramType); -+ -+ } else { -+ -+ adapter->dwSramType = 0x10000; -+ -+ dprintk("%s: dwSramType = %x\n", __FUNCTION__, adapter->dwSramType); -+ } -+ -+ /* return value is never used? */ -+/* return adapter->dwSramType; */ -+} -+ -+static int SRAM_testLocation(struct adapter *adapter, u32 mask, u32 addr) -+{ -+ u8 tmp1, tmp2; -+ -+ dprintk("%s: mask = %x, addr = %x\n", __FUNCTION__, mask, addr); -+ -+ SRAM_setSize(adapter, mask); -+ SRAM_init(adapter); -+ -+ tmp2 = 0xA5; -+ tmp1 = 0x4F; -+ -+ SRAM_write(adapter, addr, &tmp2, 1); -+ SRAM_write(adapter, addr + 4, &tmp1, 1); -+ -+ tmp2 = 0; -+ -+ mdelay(20); -+ -+ SRAM_read(adapter, addr, &tmp2, 1); -+ SRAM_read(adapter, addr, &tmp2, 1); -+ -+ dprintk("%s: wrote 0xA5, read 0x%2x\n", __FUNCTION__, tmp2); -+ -+ if (tmp2 != 0xA5) -+ return 0; -+ -+ tmp2 = 0x5A; -+ tmp1 = 0xF4; -+ -+ SRAM_write(adapter, addr, &tmp2, 1); -+ SRAM_write(adapter, addr + 4, &tmp1, 1); -+ -+ tmp2 = 0; -+ -+ mdelay(20); -+ -+ SRAM_read(adapter, addr, &tmp2, 1); -+ SRAM_read(adapter, addr, &tmp2, 1); -+ -+ dprintk("%s: wrote 0x5A, read 0x%2x\n", __FUNCTION__, tmp2); -+ -+ if (tmp2 != 0x5A) -+ return 0; -+ -+ return 1; -+} -+ -+static u32 SRAM_length(struct adapter * adapter) -+{ -+ if (adapter->dwSramType == 0x10000) -+ return 32768; // 32K -+ if (adapter->dwSramType == 0x00000) -+ return 65536; // 64K -+ if (adapter->dwSramType == 0x20000) -+ return 131072; // 128K -+ -+ return 32768; // 32K -+} -+ -+/* FlexcopII can work with 32K, 64K or 128K of external SRAM memory. -+ - for 128K there are 4x32K chips at bank 0,1,2,3. -+ - for 64K there are 2x32K chips at bank 1,2. -+ - for 32K there is one 32K chip at bank 0. -+ -+ FlexCop works only with one bank at a time. The bank is selected -+ by bits 28-29 of the 0x700 register. -+ -+ bank 0 covers addresses 0x00000-0x07FFF -+ bank 1 covers addresses 0x08000-0x0FFFF -+ bank 2 covers addresses 0x10000-0x17FFF -+ bank 3 covers addresses 0x18000-0x1FFFF -+*/ -+static int SramDetectForFlex2(struct adapter *adapter) -+{ -+ u32 tmp, tmp2, tmp3; -+ -+ dprintk("%s:\n", __FUNCTION__); -+ -+ tmp = ReadRegDW(adapter, 0x208); -+ WriteRegDW(adapter, 0x208, 0); -+ -+ tmp2 = ReadRegDW(adapter, 0x71C); -+ -+ dprintk("%s: tmp2 = %x\n", __FUNCTION__, tmp2); -+ -+ WriteRegDW(adapter, 0x71C, 1); -+ -+ tmp3 = ReadRegDW(adapter, 0x71C); -+ -+ dprintk("%s: tmp3 = %x\n", __FUNCTION__, tmp3); -+ -+ WriteRegDW(adapter, 0x71C, tmp2); -+ -+ // check for internal SRAM ??? -+ tmp3--; -+ if (tmp3 != 0) { -+ SRAM_setSize(adapter, 0x10000); -+ SRAM_init(adapter); -+ WriteRegDW(adapter, 0x208, tmp); -+ -+ dprintk("%s: sram size = 32K\n", __FUNCTION__); -+ -+ return 32; -+ } -+ -+ if (SRAM_testLocation(adapter, 0x20000, 0x18000) != 0) { -+ SRAM_setSize(adapter, 0x20000); -+ SRAM_init(adapter); -+ WriteRegDW(adapter, 0x208, tmp); -+ -+ dprintk("%s: sram size = 128K\n", __FUNCTION__); -+ -+ return 128; -+ } -+ -+ if (SRAM_testLocation(adapter, 0x00000, 0x10000) != 0) { -+ SRAM_setSize(adapter, 0x00000); -+ SRAM_init(adapter); -+ WriteRegDW(adapter, 0x208, tmp); -+ -+ dprintk("%s: sram size = 64K\n", __FUNCTION__); -+ -+ return 64; -+ } -+ -+ if (SRAM_testLocation(adapter, 0x10000, 0x00000) != 0) { -+ SRAM_setSize(adapter, 0x10000); -+ SRAM_init(adapter); -+ WriteRegDW(adapter, 0x208, tmp); -+ -+ dprintk("%s: sram size = 32K\n", __FUNCTION__); -+ -+ return 32; -+ } -+ -+ SRAM_setSize(adapter, 0x10000); -+ SRAM_init(adapter); -+ WriteRegDW(adapter, 0x208, tmp); -+ -+ dprintk("%s: SRAM detection failed. Set to 32K \n", __FUNCTION__); -+ -+ return 0; -+} -+ -+static void SLL_detectSramSize(struct adapter *adapter) -+{ -+ SramDetectForFlex2(adapter); -+} -+/* EEPROM (Skystar2 has one "24LC08B" chip on board) */ -+/* -+static int EEPROM_write(struct adapter *adapter, u16 addr, u8 * buf, u16 len) -+{ -+ return FLEXI2C_write(adapter, 0x20000000, 0x50, addr, buf, len); -+} -+*/ -+ -+static int EEPROM_read(struct adapter *adapter, u16 addr, u8 * buf, u16 len) -+{ -+ return FLEXI2C_read(adapter, 0x20000000, 0x50, addr, buf, len); -+} -+ -+u8 calc_LRC(u8 * buf, u32 len) -+{ -+ u32 i; -+ u8 sum; -+ -+ sum = 0; -+ -+ for (i = 0; i < len; i++) -+ sum = sum ^ buf[i]; -+ -+ return sum; -+} -+ -+static int EEPROM_LRC_read(struct adapter *adapter, u32 addr, u32 len, u8 * buf, u32 retries) -+{ -+ int i; -+ -+ for (i = 0; i < retries; i++) { -+ if (EEPROM_read(adapter, addr, buf, len) == len) { -+ if (calc_LRC(buf, len - 1) == buf[len - 1]) -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+/* -+static int EEPROM_LRC_write(struct adapter *adapter, u32 addr, u32 len, u8 * wbuf, u8 * rbuf, u32 retries) -+{ -+ int i; -+ -+ for (i = 0; i < retries; i++) { -+ if (EEPROM_write(adapter, addr, wbuf, len) == len) { -+ if (EEPROM_LRC_read(adapter, addr, len, rbuf, retries) == 1) -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+*/ -+ -+/* These functions could be called from the initialization routine -+ to unlock SkyStar2 cards, locked by "Europe On Line". -+ -+ in cards from "Europe On Line" the key is: -+ -+ u8 key[20] = { -+ 0xB2, 0x01, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, -+ }; -+ -+ LRC = 0xB3; -+ -+ in unlocked cards the key is: -+ -+ u8 key[20] = { -+ 0xB2, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, -+ }; -+ -+ LRC = 0xB2; -+*/ -+/* -+static int EEPROM_writeKey(struct adapter *adapter, u8 * key, u32 len) -+{ -+ u8 rbuf[20]; -+ u8 wbuf[20]; -+ -+ if (len != 16) -+ return 0; -+ -+ memcpy(wbuf, key, len); -+ -+ wbuf[16] = 0; -+ wbuf[17] = 0; -+ wbuf[18] = 0; -+ wbuf[19] = calc_LRC(wbuf, 19); -+ -+ return EEPROM_LRC_write(adapter, 0x3E4, 20, wbuf, rbuf, 4); -+} -+*/ -+static int EEPROM_readKey(struct adapter *adapter, u8 * key, u32 len) -+{ -+ u8 buf[20]; -+ -+ if (len != 16) -+ return 0; -+ -+ if (EEPROM_LRC_read(adapter, 0x3E4, 20, buf, 4) == 0) -+ return 0; -+ -+ memcpy(key, buf, len); -+ -+ return 1; -+} -+ -+static int EEPROM_getMacAddr(struct adapter *adapter, char type, u8 * mac) -+{ -+ u8 tmp[8]; -+ -+ if (EEPROM_LRC_read(adapter, 0x3F8, 8, tmp, 4) != 0) { -+ if (type != 0) { -+ mac[0] = tmp[0]; -+ mac[1] = tmp[1]; -+ mac[2] = tmp[2]; -+ mac[3] = 0xFE; -+ mac[4] = 0xFF; -+ mac[5] = tmp[3]; -+ mac[6] = tmp[4]; -+ mac[7] = tmp[5]; -+ -+ } else { -+ -+ mac[0] = tmp[0]; -+ mac[1] = tmp[1]; -+ mac[2] = tmp[2]; -+ mac[3] = tmp[3]; -+ mac[4] = tmp[4]; -+ mac[5] = tmp[5]; -+ } -+ -+ return 1; -+ -+ } else { -+ -+ if (type == 0) { -+ memset(mac, 0, 6); -+ -+ } else { -+ -+ memset(mac, 0, 8); -+ } -+ -+ return 0; -+ } -+} -+ -+/* -+static char EEPROM_setMacAddr(struct adapter *adapter, char type, u8 * mac) -+{ -+ u8 tmp[8]; -+ -+ if (type != 0) { -+ tmp[0] = mac[0]; -+ tmp[1] = mac[1]; -+ tmp[2] = mac[2]; -+ tmp[3] = mac[5]; -+ tmp[4] = mac[6]; -+ tmp[5] = mac[7]; -+ -+ } else { -+ -+ tmp[0] = mac[0]; -+ tmp[1] = mac[1]; -+ tmp[2] = mac[2]; -+ tmp[3] = mac[3]; -+ tmp[4] = mac[4]; -+ tmp[5] = mac[5]; -+ } -+ -+ tmp[6] = 0; -+ tmp[7] = calc_LRC(tmp, 7); -+ -+ if (EEPROM_write(adapter, 0x3F8, tmp, 8) == 8) -+ return 1; -+ -+ return 0; -+} -+*/ -+ -+/* PID filter */ -+static void FilterEnableStream1Filter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000001, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000001); -+ } -+} -+ -+static void FilterEnableStream2Filter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000002, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000002); -+ } -+} -+ -+static void FilterEnablePcrFilter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000004, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000004); -+ } -+} -+ -+static void FilterEnablePmtFilter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000008, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000008); -+ } -+} -+ -+static void FilterEnableEmmFilter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000010, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000010); -+ } -+} -+ -+static void FilterEnableEcmFilter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000020, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000020); -+ } -+} -+ -+/* -+static void FilterEnableNullFilter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000040, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000040); -+ } -+} -+*/ -+ -+static void FilterEnableMaskFilter(struct adapter *adapter, u32 op) -+{ -+ dprintk("%s: op=%x\n", __FUNCTION__, op); -+ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000080, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000080); -+ } -+} -+ -+ -+static void CtrlEnableMAC(struct adapter *adapter, u32 op) -+{ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00004000, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00004000); -+ } -+} -+ -+static int CASetMacDstAddrFilter(struct adapter *adapter, u8 * mac) -+{ -+ u32 tmp1, tmp2; -+ -+ tmp1 = (mac[3] << 0x18) | (mac[2] << 0x10) | (mac[1] << 0x08) | mac[0]; -+ tmp2 = (mac[5] << 0x08) | mac[4]; -+ -+ WriteRegDW(adapter, 0x418, tmp1); -+ WriteRegDW(adapter, 0x41C, tmp2); -+ -+ return 0; -+} -+ -+/* -+static void SetIgnoreMACFilter(struct adapter *adapter, u8 op) -+{ -+ if (op != 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00004000, 0); -+ -+ adapter->mac_filter = 1; -+ -+ } else { -+ -+ if (adapter->mac_filter != 0) { -+ adapter->mac_filter = 0; -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00004000); -+ } -+ } -+} -+*/ -+ -+/* -+static void CheckNullFilterEnable(struct adapter *adapter) -+{ -+ FilterEnableNullFilter(adapter, 1); -+ FilterEnableMaskFilter(adapter, 1); -+} -+*/ -+ -+static void InitPIDsInfo(struct adapter *adapter) -+{ -+ int i; -+ -+ for (i = 0; i < 0x27; i++) -+ adapter->pids[i] = 0x1FFF; -+} -+ -+static int CheckPID(struct adapter *adapter, u16 pid) -+{ -+ u32 i; -+ -+ if (pid == 0x1FFF) -+ return 0; -+ -+ for (i = 0; i < 0x27; i++) { -+ if (adapter->pids[i] == pid) -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static void PidSetGroupPID(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = (pid & 0x3FFF) | (ReadRegDW(adapter, 0x30C) & 0xFFFF0000); -+ -+ WriteRegDW(adapter, 0x30C, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static void PidSetGroupMASK(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = ((pid & 0x3FFF) << 0x10) | (ReadRegDW(adapter, 0x30C) & 0xFFFF); -+ -+ WriteRegDW(adapter, 0x30C, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static void PidSetStream1PID(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = (pid & 0x3FFF) | (ReadRegDW(adapter, 0x300) & 0xFFFFC000); -+ -+ WriteRegDW(adapter, 0x300, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static void PidSetStream2PID(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = ((pid & 0x3FFF) << 0x10) | (ReadRegDW(adapter, 0x300) & 0xFFFF); -+ -+ WriteRegDW(adapter, 0x300, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static void PidSetPcrPID(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = (pid & 0x3FFF) | (ReadRegDW(adapter, 0x304) & 0xFFFFC000); -+ -+ WriteRegDW(adapter, 0x304, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static void PidSetPmtPID(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = ((pid & 0x3FFF) << 0x10) | (ReadRegDW(adapter, 0x304) & 0x3FFF); -+ -+ WriteRegDW(adapter, 0x304, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static void PidSetEmmPID(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = (pid & 0xFFFF) | (ReadRegDW(adapter, 0x308) & 0xFFFF0000); -+ -+ WriteRegDW(adapter, 0x308, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static void PidSetEcmPID(struct adapter * adapter, u32 pid) -+{ -+ u32 value; -+ -+ dprintk("%s: pid=%x\n", __FUNCTION__, pid); -+ -+ value = (pid << 0x10) | (ReadRegDW(adapter, 0x308) & 0xFFFF); -+ -+ WriteRegDW(adapter, 0x308, value); -+ -+ /* return value is never used? */ -+/* return value; */ -+} -+ -+static int PidGetStream1PID(struct adapter * adapter) -+{ -+ return ReadRegDW(adapter, 0x300) & 0x00001FFF; -+} -+ -+static int PidGetStream2PID(struct adapter * adapter) -+{ -+ return (ReadRegDW(adapter, 0x300) >> 0x10)& 0x00001FFF; -+} -+ -+static int PidGetPcrPID(struct adapter * adapter) -+{ -+ return ReadRegDW(adapter, 0x304) & 0x00001FFF; -+} -+ -+static int PidGetPmtPID(struct adapter * adapter) -+{ -+ return (ReadRegDW(adapter, 0x304) >> 0x10)& 0x00001FFF; -+} -+ -+static int PidGetEmmPID(struct adapter * adapter) -+{ -+ return ReadRegDW(adapter, 0x308) & 0x00001FFF; -+} -+ -+static int PidGetEcmPID(struct adapter * adapter) -+{ -+ return (ReadRegDW(adapter, 0x308) >> 0x10)& 0x00001FFF; -+} -+ -+static int PidGetGroupPID(struct adapter * adapter) -+{ -+ return ReadRegDW(adapter, 0x30C) & 0x00001FFF; -+} -+ -+static int PidGetGroupMASK(struct adapter * adapter) -+{ -+ return (ReadRegDW(adapter, 0x30C) >> 0x10)& 0x00001FFF; -+} -+ -+/* -+static void ResetHardwarePIDFilter(struct adapter *adapter) -+{ -+ PidSetStream1PID(adapter, 0x1FFF); -+ -+ PidSetStream2PID(adapter, 0x1FFF); -+ FilterEnableStream2Filter(adapter, 0); -+ -+ PidSetPcrPID(adapter, 0x1FFF); -+ FilterEnablePcrFilter(adapter, 0); -+ -+ PidSetPmtPID(adapter, 0x1FFF); -+ FilterEnablePmtFilter(adapter, 0); -+ -+ PidSetEcmPID(adapter, 0x1FFF); -+ FilterEnableEcmFilter(adapter, 0); -+ -+ PidSetEmmPID(adapter, 0x1FFF); -+ FilterEnableEmmFilter(adapter, 0); -+} -+*/ -+ -+static void OpenWholeBandwidth(struct adapter *adapter) -+{ -+ PidSetGroupPID(adapter, 0); -+ -+ PidSetGroupMASK(adapter, 0); -+ -+ FilterEnableMaskFilter(adapter, 1); -+} -+ -+static int AddHwPID(struct adapter *adapter, u32 pid) -+{ -+ dprintk("%s: pid=%d\n", __FUNCTION__, pid); -+ -+ if (pid <= 0x1F) -+ return 1; -+ -+ if ((PidGetGroupMASK(adapter) == 0) && (PidGetGroupPID(adapter) == 0)) -+ return 0; -+ -+ if (PidGetStream1PID(adapter) == 0x1FFF) { -+ PidSetStream1PID(adapter, pid & 0xFFFF); -+ -+ FilterEnableStream1Filter(adapter, 1); -+ -+ return 1; -+ } -+ -+ if (PidGetStream2PID(adapter) == 0x1FFF) { -+ PidSetStream2PID(adapter, (pid & 0xFFFF)); -+ -+ FilterEnableStream2Filter(adapter, 1); -+ -+ return 1; -+ } -+ -+ if (PidGetPcrPID(adapter) == 0x1FFF) { -+ PidSetPcrPID(adapter, (pid & 0xFFFF)); -+ -+ FilterEnablePcrFilter(adapter, 1); -+ -+ return 1; -+ } -+ -+ if ((PidGetPmtPID(adapter) & 0x1FFF) == 0x1FFF) { -+ PidSetPmtPID(adapter, (pid & 0xFFFF)); -+ -+ FilterEnablePmtFilter(adapter, 1); -+ -+ return 1; -+ } -+ -+ if ((PidGetEmmPID(adapter) & 0x1FFF) == 0x1FFF) { -+ PidSetEmmPID(adapter, (pid & 0xFFFF)); -+ -+ FilterEnableEmmFilter(adapter, 1); -+ -+ return 1; -+ } -+ -+ if ((PidGetEcmPID(adapter) & 0x1FFF) == 0x1FFF) { -+ PidSetEcmPID(adapter, (pid & 0xFFFF)); -+ -+ FilterEnableEcmFilter(adapter, 1); -+ -+ return 1; -+ } -+ -+ return -1; -+} -+ -+static int RemoveHwPID(struct adapter *adapter, u32 pid) -+{ -+ dprintk("%s: pid=%d\n", __FUNCTION__, pid); -+ -+ if (pid <= 0x1F) -+ return 1; -+ -+ if (PidGetStream1PID(adapter) == pid) { -+ PidSetStream1PID(adapter, 0x1FFF); -+ -+ return 1; -+ } -+ -+ if (PidGetStream2PID(adapter) == pid) { -+ PidSetStream2PID(adapter, 0x1FFF); -+ -+ FilterEnableStream2Filter(adapter, 0); -+ -+ return 1; -+ } -+ -+ if (PidGetPcrPID(adapter) == pid) { -+ PidSetPcrPID(adapter, 0x1FFF); -+ -+ FilterEnablePcrFilter(adapter, 0); -+ -+ return 1; -+ } -+ -+ if (PidGetPmtPID(adapter) == pid) { -+ PidSetPmtPID(adapter, 0x1FFF); -+ -+ FilterEnablePmtFilter(adapter, 0); -+ -+ return 1; -+ } -+ -+ if (PidGetEmmPID(adapter) == pid) { -+ PidSetEmmPID(adapter, 0x1FFF); -+ -+ FilterEnableEmmFilter(adapter, 0); -+ -+ return 1; -+ } -+ -+ if (PidGetEcmPID(adapter) == pid) { -+ PidSetEcmPID(adapter, 0x1FFF); -+ -+ FilterEnableEcmFilter(adapter, 0); -+ -+ return 1; -+ } -+ -+ return -1; -+} -+ -+static int AddPID(struct adapter *adapter, u32 pid) -+{ -+ int i; -+ -+ dprintk("%s: pid=%d\n", __FUNCTION__, pid); -+ -+ if (pid > 0x1FFE) -+ return -1; -+ -+ if (CheckPID(adapter, pid) == 1) -+ return 1; -+ -+ for (i = 0; i < 0x27; i++) { -+ if (adapter->pids[i] == 0x1FFF) // find free pid filter -+ { -+ adapter->pids[i] = pid; -+ -+ if (AddHwPID(adapter, pid) < 0) -+ OpenWholeBandwidth(adapter); -+ -+ return 1; -+ } -+ } -+ -+ return -1; -+} -+ -+static int RemovePID(struct adapter *adapter, u32 pid) -+{ -+ u32 i; -+ -+ dprintk("%s: pid=%d\n", __FUNCTION__, pid); -+ -+ if (pid > 0x1FFE) -+ return -1; -+ -+ for (i = 0; i < 0x27; i++) { -+ if (adapter->pids[i] == pid) { -+ adapter->pids[i] = 0x1FFF; -+ -+ RemoveHwPID(adapter, pid); -+ -+ return 1; -+ } -+ } -+ -+ return -1; -+} -+ -+/* dma & irq */ -+static void CtrlEnableSmc(struct adapter *adapter, u32 op) -+{ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00000800, 0); -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00000800); -+ } -+} -+ -+static void DmaEnableDisableIrq(struct adapter *adapter, u32 flag1, u32 flag2, u32 flag3) -+{ -+ adapter->dma_ctrl = adapter->dma_ctrl & 0x000F0000; -+ -+ if (flag1 == 0) { -+ if (flag2 == 0) -+ adapter->dma_ctrl = adapter->dma_ctrl & ~0x00010000; -+ else -+ adapter->dma_ctrl = adapter->dma_ctrl | 0x00010000; -+ -+ if (flag3 == 0) -+ adapter->dma_ctrl = adapter->dma_ctrl & ~0x00020000; -+ else -+ adapter->dma_ctrl = adapter->dma_ctrl | 0x00020000; -+ -+ } else { -+ -+ if (flag2 == 0) -+ adapter->dma_ctrl = adapter->dma_ctrl & ~0x00040000; -+ else -+ adapter->dma_ctrl = adapter->dma_ctrl | 0x00040000; -+ -+ if (flag3 == 0) -+ adapter->dma_ctrl = adapter->dma_ctrl & ~0x00080000; -+ else -+ adapter->dma_ctrl = adapter->dma_ctrl | 0x00080000; -+ } -+} -+ -+static void IrqDmaEnableDisableIrq(struct adapter * adapter, u32 op) -+{ -+ u32 value; -+ -+ value = ReadRegDW(adapter, 0x208) & 0xFFF0FFFF; -+ -+ if (op != 0) -+ value = value | (adapter->dma_ctrl & 0x000F0000); -+ -+ WriteRegDW(adapter, 0x208, value); -+} -+ -+/* FlexCopII has 2 dma channels. DMA1 is used to transfer TS data to -+ system memory. -+ -+ The DMA1 buffer is divided in 2 subbuffers of equal size. -+ FlexCopII will transfer TS data to one subbuffer, signal an interrupt -+ when the subbuffer is full and continue fillig the second subbuffer. -+ -+ For DMA1: -+ subbuffer size in 32-bit words is stored in the first 24 bits of -+ register 0x004. The last 8 bits of register 0x004 contain the number -+ of subbuffers. -+ -+ the first 30 bits of register 0x000 contain the address of the first -+ subbuffer. The last 2 bits contain 0, when dma1 is disabled and 1, -+ when dma1 is enabled. -+ -+ the first 30 bits of register 0x00C contain the address of the second -+ subbuffer. the last 2 bits contain 1. -+ -+ register 0x008 will contain the address of the subbuffer that was filled -+ with TS data, when FlexCopII will generate an interrupt. -+ -+ For DMA2: -+ subbuffer size in 32-bit words is stored in the first 24 bits of -+ register 0x014. The last 8 bits of register 0x014 contain the number -+ of subbuffers. -+ -+ the first 30 bits of register 0x010 contain the address of the first -+ subbuffer. The last 2 bits contain 0, when dma1 is disabled and 1, -+ when dma1 is enabled. -+ -+ the first 30 bits of register 0x01C contain the address of the second -+ subbuffer. the last 2 bits contain 1. -+ -+ register 0x018 contains the address of the subbuffer that was filled -+ with TS data, when FlexCopII generates an interrupt. -+*/ -+static int DmaInitDMA(struct adapter *adapter, u32 dma_channel) -+{ -+ u32 subbuffers, subbufsize, subbuf0, subbuf1; -+ -+ if (dma_channel == 0) { -+ dprintk("%s: Initializing DMA1 channel\n", __FUNCTION__); -+ -+ subbuffers = 2; -+ -+ subbufsize = (((adapter->dmaq1.buffer_size / 2) / 4) << 8) | subbuffers; -+ -+ subbuf0 = adapter->dmaq1.bus_addr & 0xFFFFFFFC; -+ -+ subbuf1 = ((adapter->dmaq1.bus_addr + adapter->dmaq1.buffer_size / 2) & 0xFFFFFFFC) | 1; -+ -+ dprintk("%s: first subbuffer address = 0x%x\n", __FUNCTION__, subbuf0); -+ udelay(1000); -+ WriteRegDW(adapter, 0x000, subbuf0); -+ -+ dprintk("%s: subbuffer size = 0x%x\n", __FUNCTION__, (subbufsize >> 8) * 4); -+ udelay(1000); -+ WriteRegDW(adapter, 0x004, subbufsize); -+ -+ dprintk("%s: second subbuffer address = 0x%x\n", __FUNCTION__, subbuf1); -+ udelay(1000); -+ WriteRegDW(adapter, 0x00C, subbuf1); -+ -+ dprintk("%s: counter = 0x%x\n", __FUNCTION__, adapter->dmaq1.bus_addr & 0xFFFFFFFC); -+ WriteRegDW(adapter, 0x008, adapter->dmaq1.bus_addr & 0xFFFFFFFC); -+ udelay(1000); -+ -+ if (subbuffers == 0) -+ DmaEnableDisableIrq(adapter, 0, 1, 0); -+ else -+ DmaEnableDisableIrq(adapter, 0, 1, 1); -+ -+ IrqDmaEnableDisableIrq(adapter, 1); -+ -+ SRAMSetMediaDest(adapter, 1); -+ SRAMSetNetDest(adapter, 1); -+ SRAMSetCaiDest(adapter, 2); -+ SRAMSetCaoDest(adapter, 2); -+ } -+ -+ if (dma_channel == 1) { -+ dprintk("%s: Initializing DMA2 channel\n", __FUNCTION__); -+ -+ subbuffers = 2; -+ -+ subbufsize = (((adapter->dmaq2.buffer_size / 2) / 4) << 8) | subbuffers; -+ -+ subbuf0 = adapter->dmaq2.bus_addr & 0xFFFFFFFC; -+ -+ subbuf1 = ((adapter->dmaq2.bus_addr + adapter->dmaq2.buffer_size / 2) & 0xFFFFFFFC) | 1; -+ -+ dprintk("%s: first subbuffer address = 0x%x\n", __FUNCTION__, subbuf0); -+ udelay(1000); -+ WriteRegDW(adapter, 0x010, subbuf0); -+ -+ dprintk("%s: subbuffer size = 0x%x\n", __FUNCTION__, (subbufsize >> 8) * 4); -+ udelay(1000); -+ WriteRegDW(adapter, 0x014, subbufsize); -+ -+ dprintk("%s: second buffer address = 0x%x\n", __FUNCTION__, subbuf1); -+ udelay(1000); -+ WriteRegDW(adapter, 0x01C, subbuf1); -+ -+ SRAMSetCaiDest(adapter, 2); -+ } -+ -+ return 0; -+} -+ -+static void CtrlEnableReceiveData(struct adapter *adapter, u32 op) -+{ -+ if (op == 0) { -+ WriteRegOp(adapter, 0x208, 2, ~0x00008000, 0); -+ -+ adapter->dma_status = adapter->dma_status & ~0x00000004; -+ -+ } else { -+ -+ WriteRegOp(adapter, 0x208, 1, 0, 0x00008000); -+ -+ adapter->dma_status = adapter->dma_status | 0x00000004; -+ } -+} -+ -+/* bit 0 of dma_mask is set to 1 if dma1 channel has to be enabled/disabled -+ bit 1 of dma_mask is set to 1 if dma2 channel has to be enabled/disabled -+*/ -+static void DmaStartStop0x2102(struct adapter *adapter, u32 dma_mask, u32 start_stop) -+{ -+ u32 dma_enable, dma1_enable, dma2_enable; -+ -+ dprintk("%s: dma_mask=%x\n", __FUNCTION__, dma_mask); -+ -+ if (start_stop == 1) { -+ dprintk("%s: starting dma\n", __FUNCTION__); -+ -+ dma1_enable = 0; -+ dma2_enable = 0; -+ -+ if (((dma_mask & 1) != 0) && ((adapter->dma_status & 1) == 0) && (adapter->dmaq1.bus_addr != 0)) { -+ adapter->dma_status = adapter->dma_status | 1; -+ dma1_enable = 1; -+ } -+ -+ if (((dma_mask & 2) != 0) && ((adapter->dma_status & 2) == 0) && (adapter->dmaq2.bus_addr != 0)) { -+ adapter->dma_status = adapter->dma_status | 2; -+ dma2_enable = 1; -+ } -+ // enable dma1 and dma2 -+ if ((dma1_enable == 1) && (dma2_enable == 1)) { -+ WriteRegDW(adapter, 0x000, adapter->dmaq1.bus_addr | 1); -+ WriteRegDW(adapter, 0x00C, (adapter->dmaq1.bus_addr + adapter->dmaq1.buffer_size / 2) | 1); -+ WriteRegDW(adapter, 0x010, adapter->dmaq2.bus_addr | 1); -+ -+ CtrlEnableReceiveData(adapter, 1); -+ -+ return; -+ } -+ // enable dma1 -+ if ((dma1_enable == 1) && (dma2_enable == 0)) { -+ WriteRegDW(adapter, 0x000, adapter->dmaq1.bus_addr | 1); -+ WriteRegDW(adapter, 0x00C, (adapter->dmaq1.bus_addr + adapter->dmaq1.buffer_size / 2) | 1); -+ -+ CtrlEnableReceiveData(adapter, 1); -+ -+ return; -+ } -+ // enable dma2 -+ if ((dma1_enable == 0) && (dma2_enable == 1)) { -+ WriteRegDW(adapter, 0x010, adapter->dmaq2.bus_addr | 1); -+ -+ CtrlEnableReceiveData(adapter, 1); -+ -+ return; -+ } -+ // start dma -+ if ((dma1_enable == 0) && (dma2_enable == 0)) { -+ CtrlEnableReceiveData(adapter, 1); -+ -+ return; -+ } -+ -+ } else { -+ -+ dprintk("%s: stoping dma\n", __FUNCTION__); -+ -+ dma_enable = adapter->dma_status & 0x00000003; -+ -+ if (((dma_mask & 1) != 0) && ((adapter->dma_status & 1) != 0)) { -+ dma_enable = dma_enable & 0xFFFFFFFE; -+ } -+ -+ if (((dma_mask & 2) != 0) && ((adapter->dma_status & 2) != 0)) { -+ dma_enable = dma_enable & 0xFFFFFFFD; -+ } -+ //stop dma -+ if ((dma_enable == 0) && ((adapter->dma_status & 4) != 0)) { -+ CtrlEnableReceiveData(adapter, 0); -+ -+ udelay(3000); -+ } -+ //disable dma1 -+ if (((dma_mask & 1) != 0) && ((adapter->dma_status & 1) != 0) && (adapter->dmaq1.bus_addr != 0)) { -+ WriteRegDW(adapter, 0x000, adapter->dmaq1.bus_addr); -+ WriteRegDW(adapter, 0x00C, (adapter->dmaq1.bus_addr + adapter->dmaq1.buffer_size / 2) | 1); -+ -+ adapter->dma_status = adapter->dma_status & ~0x00000001; -+ } -+ //disable dma2 -+ if (((dma_mask & 2) != 0) && ((adapter->dma_status & 2) != 0) && (adapter->dmaq2.bus_addr != 0)) { -+ WriteRegDW(adapter, 0x010, adapter->dmaq2.bus_addr); -+ -+ adapter->dma_status = adapter->dma_status & ~0x00000002; -+ } -+ } -+} -+ -+static void OpenStream(struct adapter *adapter, u32 pid) -+{ -+ u32 dma_mask; -+ -+ if (adapter->capturing == 0) -+ adapter->capturing = 1; -+ -+ FilterEnableMaskFilter(adapter, 1); -+ -+ AddPID(adapter, pid); -+ -+ dprintk("%s: adapter->dma_status=%x\n", __FUNCTION__, adapter->dma_status); -+ -+ if ((adapter->dma_status & 7) != 7) { -+ dma_mask = 0; -+ -+ if (((adapter->dma_status & 0x10000000) != 0) && ((adapter->dma_status & 1) == 0)) { -+ dma_mask = dma_mask | 1; -+ -+ adapter->dmaq1.head = 0; -+ adapter->dmaq1.tail = 0; -+ -+ memset(adapter->dmaq1.buffer, 0, adapter->dmaq1.buffer_size); -+ } -+ -+ if (((adapter->dma_status & 0x20000000) != 0) && ((adapter->dma_status & 2) == 0)) { -+ dma_mask = dma_mask | 2; -+ -+ adapter->dmaq2.head = 0; -+ adapter->dmaq2.tail = 0; -+ } -+ -+ if (dma_mask != 0) { -+ IrqDmaEnableDisableIrq(adapter, 1); -+ -+ DmaStartStop0x2102(adapter, dma_mask, 1); -+ } -+ } -+} -+ -+static void CloseStream(struct adapter *adapter, u32 pid) -+{ -+ u32 dma_mask; -+ -+ if (adapter->capturing != 0) -+ adapter->capturing = 0; -+ -+ dprintk("%s: dma_status=%x\n", __FUNCTION__, adapter->dma_status); -+ -+ dma_mask = 0; -+ -+ if ((adapter->dma_status & 1) != 0) -+ dma_mask = dma_mask | 0x00000001; -+ if ((adapter->dma_status & 2) != 0) -+ dma_mask = dma_mask | 0x00000002; -+ -+ if (dma_mask != 0) { -+ DmaStartStop0x2102(adapter, dma_mask, 0); -+ } -+ -+ RemovePID(adapter, pid); -+} -+ -+static void InterruptServiceDMA1(struct adapter *adapter) -+{ -+ struct dvb_demux *dvbdmx = &adapter->demux; -+ struct packet_header packet_header; -+ -+ int nCurDmaCounter; -+ u32 nNumBytesParsed; -+ u32 nNumNewBytesTransferred; -+ u32 dwDefaultPacketSize = 188; -+ u8 gbTmpBuffer[188]; -+ u8 *pbDMABufCurPos; -+ -+ nCurDmaCounter = readl(adapter->io_mem + 0x008) - adapter->dmaq1.bus_addr; -+ nCurDmaCounter = (nCurDmaCounter / dwDefaultPacketSize) * dwDefaultPacketSize; -+ -+ if ((nCurDmaCounter < 0) || (nCurDmaCounter > adapter->dmaq1.buffer_size)) { -+ dprintk("%s: dma counter outside dma buffer\n", __FUNCTION__); -+ return; -+ } -+ -+ adapter->dmaq1.head = nCurDmaCounter; -+ -+ if (adapter->dmaq1.tail <= nCurDmaCounter) { -+ nNumNewBytesTransferred = nCurDmaCounter - adapter->dmaq1.tail; -+ -+ } else { -+ -+ nNumNewBytesTransferred = (adapter->dmaq1.buffer_size - adapter->dmaq1.tail) + nCurDmaCounter; -+ } -+ -+// dprintk("%s: nCurDmaCounter = %d\n" , __FUNCTION__, nCurDmaCounter); -+// dprintk("%s: dmaq1.tail = %d\n" , __FUNCTION__, adapter->dmaq1.tail): -+// dprintk("%s: BytesTransferred = %d\n" , __FUNCTION__, nNumNewBytesTransferred); -+ -+ if (nNumNewBytesTransferred < dwDefaultPacketSize) -+ return; -+ -+ nNumBytesParsed = 0; -+ -+ while (nNumBytesParsed < nNumNewBytesTransferred) { -+ pbDMABufCurPos = adapter->dmaq1.buffer + adapter->dmaq1.tail; -+ -+ if (adapter->dmaq1.buffer + adapter->dmaq1.buffer_size < adapter->dmaq1.buffer + adapter->dmaq1.tail + 188) { -+ memcpy(gbTmpBuffer, adapter->dmaq1.buffer + adapter->dmaq1.tail, adapter->dmaq1.buffer_size - adapter->dmaq1.tail); -+ memcpy(gbTmpBuffer + (adapter->dmaq1.buffer_size - adapter->dmaq1.tail), adapter->dmaq1.buffer, (188 - (adapter->dmaq1.buffer_size - adapter->dmaq1.tail))); -+ -+ pbDMABufCurPos = gbTmpBuffer; -+ } -+ -+ if (adapter->capturing != 0) { -+ u32 *dq = (u32 *) pbDMABufCurPos; -+ -+ packet_header.sync_byte = *dq & 0x000000FF; -+ packet_header.transport_error_indicator = *dq & 0x00008000; -+ packet_header.payload_unit_start_indicator = *dq & 0x00004000; -+ packet_header.transport_priority = *dq & 0x00002000; -+ packet_header.pid = ((*dq & 0x00FF0000) >> 0x10) | (*dq & 0x00001F00); -+ packet_header.transport_scrambling_control = *dq >> 0x1E; -+ packet_header.adaptation_field_control = (*dq & 0x30000000) >> 0x1C; -+ packet_header.continuity_counter = (*dq & 0x0F000000) >> 0x18; -+ -+ if ((packet_header.sync_byte == 0x47) && (packet_header.transport_error_indicator == 0) && (packet_header.pid != 0x1FFF)) { -+ if (CheckPID(adapter, packet_header.pid & 0x0000FFFF) != 0) { -+ dvb_dmx_swfilter_packets(dvbdmx, pbDMABufCurPos, dwDefaultPacketSize / 188); -+ -+ } else { -+ -+// dprintk("%s: pid=%x\n", __FUNCTION__, packet_header.pid); -+ } -+ } -+ } -+ -+ nNumBytesParsed = nNumBytesParsed + dwDefaultPacketSize; -+ -+ adapter->dmaq1.tail = adapter->dmaq1.tail + dwDefaultPacketSize; -+ -+ if (adapter->dmaq1.tail >= adapter->dmaq1.buffer_size) -+ adapter->dmaq1.tail = adapter->dmaq1.tail - adapter->dmaq1.buffer_size; -+ }; -+} -+ -+static void InterruptServiceDMA2(struct adapter *adapter) -+{ -+ printk("%s:\n", __FUNCTION__); -+} -+ -+static irqreturn_t isr(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ struct adapter *tmp = dev_id; -+ -+ u32 value; -+ -+// dprintk("%s:\n", __FUNCTION__); -+ -+ spin_lock_irq(&tmp->lock); -+ -+ if (0 == ((value = ReadRegDW(tmp, 0x20C)) & 0x0F)) { -+ spin_unlock_irq(&tmp->lock); -+ return IRQ_NONE; -+ } -+ -+ while (value != 0) { -+ if ((value & 0x03) != 0) -+ InterruptServiceDMA1(tmp); -+ if ((value & 0x0C) != 0) -+ InterruptServiceDMA2(tmp); -+ value = ReadRegDW(tmp, 0x20C) & 0x0F; -+ } -+ -+ spin_unlock_irq(&tmp->lock); -+ return IRQ_HANDLED; -+} -+ -+static void Initdmaqueue(struct adapter *adapter) -+{ -+ dma_addr_t dma_addr; -+ -+ if (adapter->dmaq1.buffer != 0) -+ return; -+ -+ adapter->dmaq1.head = 0; -+ adapter->dmaq1.tail = 0; -+ adapter->dmaq1.buffer = 0; -+ -+ adapter->dmaq1.buffer = pci_alloc_consistent(adapter->pdev, SizeOfBufDMA1 + 0x80, &dma_addr); -+ -+ if (adapter->dmaq1.buffer != 0) { -+ memset(adapter->dmaq1.buffer, 0, SizeOfBufDMA1); -+ -+ adapter->dmaq1.bus_addr = dma_addr; -+ adapter->dmaq1.buffer_size = SizeOfBufDMA1; -+ -+ DmaInitDMA(adapter, 0); -+ -+ adapter->dma_status = adapter->dma_status | 0x10000000; -+ -+ dprintk("%s: allocated dma buffer at 0x%x, length=%d\n", __FUNCTION__, (int) adapter->dmaq1.buffer, SizeOfBufDMA1); -+ -+ } else { -+ -+ adapter->dma_status = adapter->dma_status & ~0x10000000; -+ } -+ -+ if (adapter->dmaq2.buffer != 0) -+ return; -+ -+ adapter->dmaq2.head = 0; -+ adapter->dmaq2.tail = 0; -+ adapter->dmaq2.buffer = 0; -+ -+ adapter->dmaq2.buffer = pci_alloc_consistent(adapter->pdev, SizeOfBufDMA2 + 0x80, &dma_addr); -+ -+ if (adapter->dmaq2.buffer != 0) { -+ memset(adapter->dmaq2.buffer, 0, SizeOfBufDMA2); -+ -+ adapter->dmaq2.bus_addr = dma_addr; -+ adapter->dmaq2.buffer_size = SizeOfBufDMA2; -+ -+ DmaInitDMA(adapter, 1); -+ -+ adapter->dma_status = adapter->dma_status | 0x20000000; -+ -+ dprintk("%s: allocated dma buffer at 0x%x, length=%d\n", __FUNCTION__, (int) adapter->dmaq2.buffer, (int) SizeOfBufDMA2); -+ -+ } else { -+ -+ adapter->dma_status = adapter->dma_status & ~0x20000000; -+ } -+} -+ -+static void Freedmaqueue(struct adapter *adapter) -+{ -+ if (adapter->dmaq1.buffer != 0) { -+ pci_free_consistent(adapter->pdev, SizeOfBufDMA1 + 0x80, adapter->dmaq1.buffer, adapter->dmaq1.bus_addr); -+ -+ adapter->dmaq1.bus_addr = 0; -+ adapter->dmaq1.head = 0; -+ adapter->dmaq1.tail = 0; -+ adapter->dmaq1.buffer_size = 0; -+ adapter->dmaq1.buffer = 0; -+ } -+ -+ if (adapter->dmaq2.buffer != 0) { -+ pci_free_consistent(adapter->pdev, SizeOfBufDMA2 + 0x80, adapter->dmaq2.buffer, adapter->dmaq2.bus_addr); -+ -+ adapter->dmaq2.bus_addr = 0; -+ adapter->dmaq2.head = 0; -+ adapter->dmaq2.tail = 0; -+ adapter->dmaq2.buffer_size = 0; -+ adapter->dmaq2.buffer = 0; -+ } -+} -+ -+static void FreeAdapterObject(struct adapter *adapter) -+{ -+ dprintk("%s:\n", __FUNCTION__); -+ -+ CloseStream(adapter, 0); -+ -+ if (adapter->irq != 0) -+ free_irq(adapter->irq, adapter); -+ -+ Freedmaqueue(adapter); -+ -+ if (adapter->io_mem != 0) -+ iounmap((void *) adapter->io_mem); -+ -+ if (adapter != 0) -+ kfree(adapter); -+} -+ -+static struct pci_driver skystar2_pci_driver; -+ -+static int ClaimAdapter(struct adapter *adapter) -+{ -+ struct pci_dev *pdev = adapter->pdev; -+ -+ u16 var; -+ -+ if (!request_region(pci_resource_start(pdev, 1), pci_resource_len(pdev, 1), skystar2_pci_driver.name)) -+ return -EBUSY; -+ -+ if (!request_mem_region(pci_resource_start(pdev, 0), pci_resource_len(pdev, 0), skystar2_pci_driver.name)) -+ return -EBUSY; -+ -+ pci_read_config_byte(pdev, PCI_CLASS_REVISION, &adapter->card_revision); -+ -+ dprintk("%s: card revision %x \n", __FUNCTION__, adapter->card_revision); -+ -+ if (pci_enable_device(pdev)) -+ return -EIO; -+ -+ pci_read_config_word(pdev, 4, &var); -+ -+ if ((var & 4) == 0) -+ pci_set_master(pdev); -+ -+ adapter->io_port = pdev->resource[1].start; -+ -+ adapter->io_mem = (u32) ioremap(pdev->resource[0].start, 0x800); -+ -+ if (adapter->io_mem == 0) { -+ dprintk("%s: can not map io memory\n", __FUNCTION__); -+ -+ return 2; -+ } -+ -+ dprintk("%s: io memory maped at %x\n", __FUNCTION__, adapter->io_mem); -+ -+ return 1; -+} -+ -+/* -+static int SLL_reset_FlexCOP(struct adapter *adapter) -+{ -+ WriteRegDW(adapter, 0x208, 0); -+ WriteRegDW(adapter, 0x210, 0xB2FF); -+ -+ return 0; -+} -+*/ -+ -+static int DriverInitialize(struct pci_dev * pdev) -+{ -+ struct adapter *adapter; -+ u32 tmp; -+ u8 key[16]; -+ -+ if (!(adapter = kmalloc(sizeof(struct adapter), GFP_KERNEL))) { -+ dprintk("%s: out of memory!\n", __FUNCTION__); -+ -+ return -ENOMEM; -+ } -+ -+ memset(adapter, 0, sizeof(struct adapter)); -+ -+ pci_set_drvdata(pdev,adapter); -+ -+ adapter->pdev = pdev; -+ adapter->irq = pdev->irq; -+ -+ if ((ClaimAdapter(adapter)) != 1) { -+ FreeAdapterObject(adapter); -+ -+ return -ENODEV; -+ } -+ -+ IrqDmaEnableDisableIrq(adapter, 0); -+ -+ if (request_irq(pdev->irq, isr, 0x4000000, "Skystar2", adapter) != 0) { -+ dprintk("%s: unable to allocate irq=%d !\n", __FUNCTION__, pdev->irq); -+ -+ FreeAdapterObject(adapter); -+ -+ return -ENODEV; -+ } -+ -+ ReadRegDW(adapter, 0x208); -+ WriteRegDW(adapter, 0x208, 0); -+ WriteRegDW(adapter, 0x210, 0xB2FF); -+ WriteRegDW(adapter, 0x208, 0x40); -+ -+ InitPIDsInfo(adapter); -+ -+ PidSetGroupPID(adapter, 0); -+ PidSetGroupMASK(adapter, 0x1FE0); -+ PidSetStream1PID(adapter, 0x1FFF); -+ PidSetStream2PID(adapter, 0x1FFF); -+ PidSetPmtPID(adapter, 0x1FFF); -+ PidSetPcrPID(adapter, 0x1FFF); -+ PidSetEcmPID(adapter, 0x1FFF); -+ PidSetEmmPID(adapter, 0x1FFF); -+ -+ Initdmaqueue(adapter); -+ -+ if ((adapter->dma_status & 0x30000000) == 0) { -+ FreeAdapterObject(adapter); -+ -+ return -ENODEV; -+ } -+ -+ adapter->b2c2_revision = (ReadRegDW(adapter, 0x204) >> 0x18); -+ -+ if ((adapter->b2c2_revision != 0x82) && (adapter->b2c2_revision != 0xC3)) -+ if (adapter->b2c2_revision != 0x82) { -+ dprintk("%s: The revision of the FlexCopII chip on your card is - %d\n", __FUNCTION__, adapter->b2c2_revision); -+ dprintk("%s: This driver works now only with FlexCopII(rev.130) and FlexCopIIB(rev.195).\n", __FUNCTION__); -+ -+ FreeAdapterObject(adapter); -+ -+ return -ENODEV; -+ } -+ -+ tmp = ReadRegDW(adapter, 0x204); -+ -+ WriteRegDW(adapter, 0x204, 0); -+ mdelay(20); -+ -+ WriteRegDW(adapter, 0x204, tmp); -+ mdelay(10); -+ -+ tmp = ReadRegDW(adapter, 0x308); -+ WriteRegDW(adapter, 0x308, 0x4000 | tmp); -+ -+ adapter->dwSramType = 0x10000; -+ -+ SLL_detectSramSize(adapter); -+ -+ dprintk("%s sram length = %d, sram type= %x\n", __FUNCTION__, SRAM_length(adapter), adapter->dwSramType); -+ -+ SRAMSetMediaDest(adapter, 1); -+ SRAMSetNetDest(adapter, 1); -+ -+ CtrlEnableSmc(adapter, 0); -+ -+ SRAMSetCaiDest(adapter, 2); -+ SRAMSetCaoDest(adapter, 2); -+ -+ DmaEnableDisableIrq(adapter, 1, 0, 0); -+ -+ if (EEPROM_getMacAddr(adapter, 0, adapter->mac_addr) != 0) { -+ printk("%s MAC address = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x \n", __FUNCTION__, adapter->mac_addr[0], adapter->mac_addr[1], adapter->mac_addr[2], adapter->mac_addr[3], adapter->mac_addr[4], adapter->mac_addr[5], adapter->mac_addr[6], adapter->mac_addr[7] -+ ); -+ -+ CASetMacDstAddrFilter(adapter, adapter->mac_addr); -+ CtrlEnableMAC(adapter, 1); -+ } -+ -+ EEPROM_readKey(adapter, key, 16); -+ -+ printk("%s key = \n %02x %02x %02x %02x \n %02x %02x %02x %02x \n %02x %02x %02x %02x \n %02x %02x %02x %02x \n", __FUNCTION__, key[0], key[1], key[2], key[3], key[4], key[5], key[6], key[7], key[8], key[9], key[10], key[11], key[12], key[13], key[14], key[15]); -+ -+ adapter->lock = SPIN_LOCK_UNLOCKED; -+ -+ return 0; -+} -+ -+static void DriverHalt(struct pci_dev *pdev) -+{ -+ struct adapter *adapter; -+ -+ adapter = pci_get_drvdata(pdev); -+ -+ IrqDmaEnableDisableIrq(adapter, 0); -+ -+ CtrlEnableReceiveData(adapter, 0); -+ -+ FreeAdapterObject(adapter); -+ -+ pci_set_drvdata(pdev, NULL); -+ -+ release_region(pci_resource_start(pdev, 1), pci_resource_len(pdev, 1)); -+ -+ release_mem_region(pci_resource_start(pdev, 0), pci_resource_len(pdev, 0)); -+} -+ -+static int dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed) -+{ -+ struct dvb_demux *dvbdmx = dvbdmxfeed->demux; -+ struct adapter *adapter = (struct adapter *) dvbdmx->priv; -+ -+ dprintk("%s: PID=%d, type=%d\n", __FUNCTION__, dvbdmxfeed->pid, dvbdmxfeed->type); -+ -+ OpenStream(adapter, dvbdmxfeed->pid); -+ -+ return 0; -+} -+ -+static int dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) -+{ -+ struct dvb_demux *dvbdmx = dvbdmxfeed->demux; -+ struct adapter *adapter = (struct adapter *) dvbdmx->priv; -+ -+ dprintk("%s: PID=%d, type=%d\n", __FUNCTION__, dvbdmxfeed->pid, dvbdmxfeed->type); -+ -+ CloseStream(adapter, dvbdmxfeed->pid); -+ -+ return 0; -+} -+ -+/* lnb control */ -+static void set_tuner_tone(struct adapter *adapter, u8 tone) -+{ -+ u16 wzHalfPeriodFor45MHz[] = { 0x01FF, 0x0154, 0x00FF, 0x00CC }; -+ u16 ax; -+ -+ dprintk("%s: %u\n", __FUNCTION__, tone); -+ -+ switch (tone) { -+ case 1: -+ ax = wzHalfPeriodFor45MHz[0]; -+ break; -+ case 2: -+ ax = wzHalfPeriodFor45MHz[1]; -+ break; -+ case 3: -+ ax = wzHalfPeriodFor45MHz[2]; -+ break; -+ case 4: -+ ax = wzHalfPeriodFor45MHz[3]; -+ break; -+ -+ default: -+ ax = 0; -+ } -+ -+ if (ax != 0) { -+ WriteRegDW(adapter, 0x200, ((ax << 0x0F) + (ax & 0x7FFF)) | 0x40000000); -+ -+ } else { -+ -+ WriteRegDW(adapter, 0x200, 0x40FF8000); -+ } -+} -+ -+static void set_tuner_polarity(struct adapter *adapter, u8 polarity) -+{ -+ u32 var; -+ -+ dprintk("%s : polarity = %u \n", __FUNCTION__, polarity); -+ -+ var = ReadRegDW(adapter, 0x204); -+ -+ if (polarity == 0) { -+ dprintk("%s: LNB power off\n", __FUNCTION__); -+ var = var | 1; -+ }; -+ -+ if (polarity == 1) { -+ var = var & ~1; -+ var = var & ~4; -+ }; -+ -+ if (polarity == 2) { -+ var = var & ~1; -+ var = var | 4; -+ } -+ -+ WriteRegDW(adapter, 0x204, var); -+} -+ -+static int flexcop_diseqc_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg) -+{ -+ struct adapter *adapter = fe->before_after_data; -+ -+ switch (cmd) { -+ case FE_SLEEP: -+ { -+ printk("%s: FE_SLEEP\n", __FUNCTION__); -+ -+ set_tuner_polarity(adapter, 0); -+ -+ // return -EOPNOTSUPP, to make DVB core also send "FE_SLEEP" command to frontend. -+ return -EOPNOTSUPP; -+ } -+ -+ case FE_SET_VOLTAGE: -+ { -+ dprintk("%s: FE_SET_VOLTAGE\n", __FUNCTION__); -+ -+ switch ((fe_sec_voltage_t) arg) { -+ case SEC_VOLTAGE_13: -+ -+ printk("%s: SEC_VOLTAGE_13, %x\n", __FUNCTION__, SEC_VOLTAGE_13); -+ -+ set_tuner_polarity(adapter, 1); -+ -+ break; -+ -+ case SEC_VOLTAGE_18: -+ -+ printk("%s: SEC_VOLTAGE_18, %x\n", __FUNCTION__, SEC_VOLTAGE_18); -+ -+ set_tuner_polarity(adapter, 2); -+ -+ break; -+ -+ default: -+ -+ return -EINVAL; -+ }; -+ -+ break; -+ } -+ -+ case FE_SET_TONE: -+ { -+ dprintk("%s: FE_SET_TONE\n", __FUNCTION__); -+ -+ switch ((fe_sec_tone_mode_t) arg) { -+ case SEC_TONE_ON: -+ -+ printk("%s: SEC_TONE_ON, %x\n", __FUNCTION__, SEC_TONE_ON); -+ -+ set_tuner_tone(adapter, 1); -+ -+ break; -+ -+ case SEC_TONE_OFF: -+ -+ printk("%s: SEC_TONE_OFF, %x\n", __FUNCTION__, SEC_TONE_OFF); -+ -+ set_tuner_tone(adapter, 0); -+ -+ break; -+ -+ default: -+ -+ return -EINVAL; -+ }; -+ -+ break; -+ } -+ -+ default: -+ -+ return -EOPNOTSUPP; -+ }; -+ -+ return 0; -+} -+ -+static int skystar2_probe(struct pci_dev *pdev, const struct pci_device_id *ent) -+{ -+ struct adapter *adapter; -+ struct dvb_adapter *dvb_adapter; -+ struct dvb_demux *dvbdemux; -+ -+ int ret; -+ -+ if (pdev == NULL) -+ return -ENODEV; -+ -+ if (DriverInitialize(pdev) != 0) -+ return -ENODEV; -+ -+ dvb_register_adapter(&dvb_adapter, skystar2_pci_driver.name); -+ -+ if (dvb_adapter == NULL) { -+ printk("%s: Error registering DVB adapter\n", __FUNCTION__); -+ -+ DriverHalt(pdev); -+ -+ return -ENODEV; -+ } -+ -+ adapter = (struct adapter *) pci_get_drvdata(pdev); -+ -+ adapter->dvb_adapter = dvb_adapter; -+ -+ init_MUTEX(&adapter->i2c_sem); -+ -+ adapter->i2c_bus = dvb_register_i2c_bus(master_xfer, adapter, adapter->dvb_adapter, 0); -+ -+ if (!adapter->i2c_bus) -+ return -ENOMEM; -+ -+ dvb_add_frontend_ioctls(adapter->dvb_adapter, flexcop_diseqc_ioctl, NULL, adapter); -+ -+ dvbdemux = &adapter->demux; -+ -+ dvbdemux->priv = (void *) adapter; -+ dvbdemux->filternum = 32; -+ dvbdemux->feednum = 32; -+ dvbdemux->start_feed = dvb_start_feed; -+ dvbdemux->stop_feed = dvb_stop_feed; -+ dvbdemux->write_to_decoder = 0; -+ dvbdemux->dmx.capabilities = (DMX_TS_FILTERING | DMX_SECTION_FILTERING | DMX_MEMORY_BASED_FILTERING); -+ -+ dvb_dmx_init(&adapter->demux); -+ -+ adapter->hw_frontend.source = DMX_FRONTEND_0; -+ -+ adapter->dmxdev.filternum = 32; -+ adapter->dmxdev.demux = &dvbdemux->dmx; -+ adapter->dmxdev.capabilities = 0; -+ -+ dvb_dmxdev_init(&adapter->dmxdev, adapter->dvb_adapter); -+ -+ ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, &adapter->hw_frontend); -+ if (ret < 0) -+ return ret; -+ -+ adapter->mem_frontend.source = DMX_MEMORY_FE; -+ -+ ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, &adapter->mem_frontend); -+ if (ret < 0) -+ return ret; -+ -+ ret = dvbdemux->dmx.connect_frontend(&dvbdemux->dmx, &adapter->hw_frontend); -+ if (ret < 0) -+ return ret; -+ -+ dvb_net_init(adapter->dvb_adapter, &adapter->dvbnet, &dvbdemux->dmx); -+ return 0; -+} -+ -+static void skystar2_remove(struct pci_dev *pdev) -+{ -+ struct adapter *adapter; -+ struct dvb_demux *dvbdemux; -+ -+ if (pdev == NULL) -+ return; -+ -+ adapter = pci_get_drvdata(pdev); -+ -+ if (adapter != NULL) { -+ dvb_net_release(&adapter->dvbnet); -+ dvbdemux = &adapter->demux; -+ -+ dvbdemux->dmx.close(&dvbdemux->dmx); -+ dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &adapter->hw_frontend); -+ dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &adapter->mem_frontend); -+ -+ dvb_dmxdev_release(&adapter->dmxdev); -+ dvb_dmx_release(&adapter->demux); -+ -+ if (adapter->dvb_adapter != NULL) { -+ dvb_remove_frontend_ioctls(adapter->dvb_adapter, flexcop_diseqc_ioctl, NULL); -+ -+ if (adapter->i2c_bus != NULL) -+ dvb_unregister_i2c_bus(master_xfer, adapter->i2c_bus->adapter, adapter->i2c_bus->id); -+ -+ dvb_unregister_adapter(adapter->dvb_adapter); -+ } -+ -+ DriverHalt(pdev); -+ } -+} -+ -+static struct pci_device_id skystar2_pci_tbl[] = { -+ {0x000013D0, 0x00002103, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000}, -+ {0,}, -+}; -+ -+static struct pci_driver skystar2_pci_driver = { -+ .name = "Technisat SkyStar2 driver", -+ .id_table = skystar2_pci_tbl, -+ .probe = skystar2_probe, -+ .remove = skystar2_remove, -+}; -+ -+static int skystar2_init(void) -+{ -+ return pci_module_init(&skystar2_pci_driver); -+} -+ -+static void skystar2_cleanup(void) -+{ -+ pci_unregister_driver(&skystar2_pci_driver); -+} -+ -+module_init(skystar2_init); -+module_exit(skystar2_cleanup); -+ -+MODULE_DESCRIPTION("Technisat SkyStar2 DVB PCI Driver"); -+MODULE_LICENSE("GPL"); ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvb_demux.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvb_demux.c 2003-07-19 17:03:49.000000000 -0700 -@@ -403,13 +403,16 @@ void dvb_dmx_swfilter(struct dvb_demux * - { - int p = 0,i, j; - -+ spin_lock(&demux->lock); -+ - if ((i = demux->tsbufp)) { - if (count < (j=188-i)) { - memcpy(&demux->tsbuf[i], buf, count); - demux->tsbufp += count; -- return; -+ goto bailout; - } - memcpy(&demux->tsbuf[i], buf, j); -+ if (demux->tsbuf[0] == 0x47) - dvb_dmx_swfilter_packet(demux, demux->tsbuf); - demux->tsbufp = 0; - p += j; -@@ -424,11 +427,14 @@ void dvb_dmx_swfilter(struct dvb_demux * - i = count-p; - memcpy(demux->tsbuf, buf+p, i); - demux->tsbufp=i; -- return; -+ goto bailout; - } - } else - p++; - } -+ -+bailout: -+ spin_unlock(&demux->lock); - } - - -@@ -1030,9 +1036,11 @@ static int dvbdmx_write(struct dmx_demux - - if (down_interruptible (&dvbdemux->mutex)) - return -ERESTARTSYS; -- - dvb_dmx_swfilter(dvbdemux, buf, count); - up(&dvbdemux->mutex); -+ -+ if (signal_pending(current)) -+ return -EINTR; - return count; - } - -@@ -1110,8 +1118,8 @@ static int dvbdmx_get_pes_pids(struct dm - return 0; - } - --int --dvb_dmx_init(struct dvb_demux *dvbdemux) -+ -+int dvb_dmx_init(struct dvb_demux *dvbdemux) - { - int i, err; - struct dmx_demux *dmx = &dvbdemux->dmx; -@@ -1181,8 +1189,8 @@ dvb_dmx_init(struct dvb_demux *dvbdemux) - return 0; - } - --int --dvb_dmx_release(struct dvb_demux *dvbdemux) -+ -+int dvb_dmx_release(struct dvb_demux *dvbdemux) - { - struct dmx_demux *dmx = &dvbdemux->dmx; - ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvbdev.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvbdev.c 2003-07-19 17:03:49.000000000 -0700 -@@ -29,8 +29,6 @@ - #include - #include - #include --#include --#include - - #include "dvbdev.h" - #include "dvb_functions.h" ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvbdev.h 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvbdev.h 2003-07-19 17:03:49.000000000 -0700 -@@ -27,8 +27,9 @@ - #include - #include - #include --#include - #include -+#include -+#include - - #define DVB_MAJOR 250 - -@@ -48,6 +49,7 @@ struct dvb_adapter { - struct list_head list_head; - struct list_head device_list; - const char *name; -+ u8 proposed_mac [6]; - }; - - ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvb_frontend.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvb_frontend.c 2003-07-19 17:03:49.000000000 -0700 -@@ -263,8 +263,14 @@ static int dvb_frontend_get_event (struc - if (flags & O_NONBLOCK) - return -EWOULDBLOCK; - -+ up(&fe->sem); -+ - ret = wait_event_interruptible (events->wait_queue, - events->eventw != events->eventr); -+ -+ if (down_interruptible (&fe->sem)) -+ return -ERESTARTSYS; -+ - if (ret < 0) - return ret; - } ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvb_functions.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvb_functions.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1,11 +1,11 @@ - #include --#include --#include --#include - #include -+#include -+#include - #include - #include - #include -+#include - #include - - void dvb_kernel_thread_setup (const char *thread_name) ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvb_functions.h 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvb_functions.h 2003-07-19 17:03:49.000000000 -0700 -@@ -1,6 +1,8 @@ - #ifndef __DVB_FUNCTIONS_H__ - #define __DVB_FUNCTIONS_H__ - -+#include -+ - /** - * a sleeping delay function, waits i ms - * ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvb_net.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvb_net.c 2003-07-19 17:03:49.000000000 -0700 -@@ -24,22 +24,25 @@ - * - */ - --#include --#include --#include --#include --#include --#include -- - #include -+#include - - #include "dvb_demux.h" - #include "dvb_net.h" - #include "dvb_functions.h" - -+ -+#if 1 -+#define dprintk(x...) printk(x) -+#else -+#define dprintk(x...) -+#endif -+ -+ - #define DVB_NET_MULTICAST_MAX 10 - - struct dvb_net_priv { -+ int in_use; - struct net_device_stats stats; - char name[6]; - u16 pid; -@@ -49,10 +52,17 @@ struct dvb_net_priv { - int multi_num; - struct dmx_section_filter *multi_secfilter[DVB_NET_MULTICAST_MAX]; - unsigned char multi_macs[DVB_NET_MULTICAST_MAX][6]; -- int mode; -+ int rx_mode; -+#define RX_MODE_UNI 0 -+#define RX_MODE_MULTI 1 -+#define RX_MODE_ALL_MULTI 2 -+#define RX_MODE_PROMISC 3 -+ struct work_struct set_multicast_list_wq; -+ struct work_struct restart_net_feed_wq; - }; - --/* -+ -+/** - * Determine the packet's protocol ID. The rule here is that we - * assume 802.3 if the type field is short enough to be a length. - * This is normal practice and works for any 'now in use' protocol. -@@ -60,8 +70,8 @@ struct dvb_net_priv { - * stolen from eth.c out of the linux kernel, hacked for dvb-device - * by Michael Holzt - */ -- --unsigned short my_eth_type_trans(struct sk_buff *skb, struct net_device *dev) -+static unsigned short dvb_net_eth_type_trans(struct sk_buff *skb, -+ struct net_device *dev) - { - struct ethhdr *eth; - unsigned char *rawp; -@@ -70,8 +80,7 @@ unsigned short my_eth_type_trans(struct - skb_pull(skb,dev->hard_header_len); - eth= skb->mac.ethernet; - -- if(*eth->h_dest&1) -- { -+ if (*eth->h_dest & 1) { - if(memcmp(eth->h_dest,dev->broadcast, ETH_ALEN)==0) - skb->pkt_type=PACKET_BROADCAST; - else -@@ -83,7 +92,7 @@ unsigned short my_eth_type_trans(struct - - rawp = skb->data; - -- /* -+ /** - * This is a magic hack to spot IPX packets. Older Novell breaks - * the protocol design and runs IPX over 802.3 without an 802.2 LLC - * layer. We look for FFFF which isn't a used 802.2 SSAP/DSAP. This -@@ -92,42 +101,73 @@ unsigned short my_eth_type_trans(struct - if (*(unsigned short *)rawp == 0xFFFF) - return htons(ETH_P_802_3); - -- /* -+ /** - * Real 802.2 LLC - */ - return htons(ETH_P_802_2); - } - --static void dvb_net_sec(struct net_device *dev, const u8 *pkt, int pkt_len) -+ -+static void dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len) - { - u8 *eth; - struct sk_buff *skb; - -- if (pkt_len<13) { -- printk("%s: IP/MPE packet length = %d too small.\n", dev->name, pkt_len); -+ /* note: pkt_len includes a 32bit checksum */ -+ if (pkt_len < 16) { -+ printk("%s: IP/MPE packet length = %d too small.\n", -+ dev->name, pkt_len); -+ ((struct dvb_net_priv *) dev->priv)->stats.rx_errors++; -+ ((struct dvb_net_priv *) dev->priv)->stats.rx_length_errors++; -+ return; -+ } -+ if ((pkt[5] & 0xfd) != 0xc1) { -+ /* drop scrambled or broken packets */ -+ ((struct dvb_net_priv *) dev->priv)->stats.rx_errors++; -+ ((struct dvb_net_priv *) dev->priv)->stats.rx_crc_errors++; - return; - } -- skb = dev_alloc_skb(pkt_len+2); -- if (skb == NULL) { -- printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n", -- dev->name); -+ if (pkt[5] & 0x02) { -+ //FIXME: handle LLC/SNAP - ((struct dvb_net_priv *)dev->priv)->stats.rx_dropped++; - return; - } -- eth=(u8 *) skb_put(skb, pkt_len+2); -- memcpy(eth+14, (void*)pkt+12, pkt_len-12); -+ if (pkt[7]) { -+ /* FIXME: assemble datagram from multiple sections */ -+ ((struct dvb_net_priv *) dev->priv)->stats.rx_errors++; -+ ((struct dvb_net_priv *) dev->priv)->stats.rx_frame_errors++; -+ return; -+ } - -+ /* we have 14 byte ethernet header (ip header follows); -+ * 12 byte MPE header; 4 byte checksum; + 2 byte alignment -+ */ -+ if (!(skb = dev_alloc_skb(pkt_len - 4 - 12 + 14 + 2))) { -+ //printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n", dev->name); -+ ((struct dvb_net_priv *) dev->priv)->stats.rx_dropped++; -+ return; -+ } -+ skb_reserve(skb, 2); /* longword align L3 header */ -+ skb->dev = dev; -+ -+ /* copy L3 payload */ -+ eth = (u8 *) skb_put(skb, pkt_len - 12 - 4 + 14); -+ memcpy(eth + 14, pkt + 12, pkt_len - 12 - 4); -+ -+ /* create ethernet header: */ - eth[0]=pkt[0x0b]; - eth[1]=pkt[0x0a]; - eth[2]=pkt[0x09]; - eth[3]=pkt[0x08]; - eth[4]=pkt[0x04]; - eth[5]=pkt[0x03]; -+ - eth[6]=eth[7]=eth[8]=eth[9]=eth[10]=eth[11]=0; -- eth[12]=0x08; eth[13]=0x00; - -- skb->protocol=my_eth_type_trans(skb,dev); -- skb->dev=dev; -+ eth[12] = 0x08; /* ETH_P_IP */ -+ eth[13] = 0x00; -+ -+ skb->protocol = dvb_net_eth_type_trans(skb, dev); - - ((struct dvb_net_priv *)dev->priv)->stats.rx_packets++; - ((struct dvb_net_priv *)dev->priv)->stats.rx_bytes+=skb->len; -@@ -141,9 +181,11 @@ static int dvb_net_callback(const u8 *bu - { - struct net_device *dev=(struct net_device *) filter->priv; - -- /* FIXME: this only works if exactly one complete section is -- delivered in buffer1 only */ -- dvb_net_sec(dev, buffer1, buffer1_len); -+ /** -+ * we rely on the DVB API definition where exactly one complete -+ * section is delivered in buffer1 -+ */ -+ dvb_net_sec (dev, (u8*) buffer1, buffer1_len); - return 0; - } - -@@ -178,24 +220,27 @@ static int dvb_net_filter_set(struct net - memset((*secfilter)->filter_mode, 0xff, DMX_MAX_FILTER_SIZE); - - (*secfilter)->filter_value[0]=0x3e; -- (*secfilter)->filter_mask[0]=0xff; -- - (*secfilter)->filter_value[3]=mac[5]; -- (*secfilter)->filter_mask[3]=mac_mask[5]; - (*secfilter)->filter_value[4]=mac[4]; -- (*secfilter)->filter_mask[4]=mac_mask[4]; - (*secfilter)->filter_value[8]=mac[3]; -- (*secfilter)->filter_mask[8]=mac_mask[3]; - (*secfilter)->filter_value[9]=mac[2]; -- (*secfilter)->filter_mask[9]=mac_mask[2]; -- - (*secfilter)->filter_value[10]=mac[1]; -- (*secfilter)->filter_mask[10]=mac_mask[1]; - (*secfilter)->filter_value[11]=mac[0]; -+ -+ (*secfilter)->filter_mask[0] = 0xff; -+ (*secfilter)->filter_mask[3] = mac_mask[5]; -+ (*secfilter)->filter_mask[4] = mac_mask[4]; -+ (*secfilter)->filter_mask[8] = mac_mask[3]; -+ (*secfilter)->filter_mask[9] = mac_mask[2]; -+ (*secfilter)->filter_mask[10] = mac_mask[1]; - (*secfilter)->filter_mask[11]=mac_mask[0]; - -- printk("%s: filter mac=%02x %02x %02x %02x %02x %02x\n", -+ dprintk("%s: filter mac=%02x %02x %02x %02x %02x %02x\n", - dev->name, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); -+ dprintk("%s: filter mask=%02x %02x %02x %02x %02x %02x\n", -+ dev->name, mac_mask[0], mac_mask[1], mac_mask[2], -+ mac_mask[3], mac_mask[4], mac_mask[5]); -+ - return 0; - } - -@@ -206,46 +251,57 @@ static int dvb_net_feed_start(struct net - struct dmx_demux *demux = priv->demux; - unsigned char *mac = (unsigned char *) dev->dev_addr; - -+ dprintk("%s: rx_mode %i\n", __FUNCTION__, priv->rx_mode); -+ if (priv->secfeed || priv->secfilter || priv->multi_secfilter[0]) -+ printk("%s: BUG %d\n", __FUNCTION__, __LINE__); -+ - priv->secfeed=0; - priv->secfilter=0; - -+ dprintk("%s: alloc secfeed\n", __FUNCTION__); - ret=demux->allocate_section_feed(demux, &priv->secfeed, - dvb_net_callback); - if (ret<0) { -- printk("%s: could not get section feed\n", dev->name); -+ printk("%s: could not allocate section feed\n", dev->name); - return ret; - } - -- ret=priv->secfeed->set(priv->secfeed, priv->pid, 32768, 0, 0); -+ ret = priv->secfeed->set(priv->secfeed, priv->pid, 32768, 0, 1); -+ - if (ret<0) { - printk("%s: could not set section feed\n", dev->name); -- priv->demux-> -- release_section_feed(priv->demux, priv->secfeed); -+ priv->demux->release_section_feed(priv->demux, priv->secfeed); - priv->secfeed=0; - return ret; - } -- /* fixme: is this correct? */ -- try_module_get(THIS_MODULE); - -- if (priv->mode<3) -+ if (priv->rx_mode != RX_MODE_PROMISC) { -+ dprintk("%s: set secfilter\n", __FUNCTION__); - dvb_net_filter_set(dev, &priv->secfilter, mac, mask_normal); -+ } - -- switch (priv->mode) { -- case 1: -- for (i=0; imulti_num; i++) -+ switch (priv->rx_mode) { -+ case RX_MODE_MULTI: -+ for (i = 0; i < priv->multi_num; i++) { -+ dprintk("%s: set multi_secfilter[%d]\n", __FUNCTION__, i); - dvb_net_filter_set(dev, &priv->multi_secfilter[i], - priv->multi_macs[i], mask_normal); -+ } - break; -- case 2: -+ case RX_MODE_ALL_MULTI: - priv->multi_num=1; -- dvb_net_filter_set(dev, &priv->multi_secfilter[0], mac_allmulti, mask_allmulti); -+ dprintk("%s: set multi_secfilter[0]\n", __FUNCTION__); -+ dvb_net_filter_set(dev, &priv->multi_secfilter[0], -+ mac_allmulti, mask_allmulti); - break; -- case 3: -+ case RX_MODE_PROMISC: - priv->multi_num=0; -+ dprintk("%s: set secfilter\n", __FUNCTION__); - dvb_net_filter_set(dev, &priv->secfilter, mac, mask_promisc); - break; - } - -+ dprintk("%s: start filtering\n", __FUNCTION__); - priv->secfeed->start_filtering(priv->secfeed); - return 0; - } -@@ -255,89 +311,93 @@ static void dvb_net_feed_stop(struct net - struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; - int i; - -+ dprintk("%s\n", __FUNCTION__); - if (priv->secfeed) { -- if (priv->secfeed->is_filtering) -+ if (priv->secfeed->is_filtering) { -+ dprintk("%s: stop secfeed\n", __FUNCTION__); - priv->secfeed->stop_filtering(priv->secfeed); -- if (priv->secfilter) -- priv->secfeed-> -- release_filter(priv->secfeed, -+ } -+ -+ if (priv->secfilter) { -+ dprintk("%s: release secfilter\n", __FUNCTION__); -+ priv->secfeed->release_filter(priv->secfeed, - priv->secfilter); - priv->secfilter=0; -+ } - - for (i=0; imulti_num; i++) { -- if (priv->multi_secfilter[i]) -- priv->secfeed-> -- release_filter(priv->secfeed, -+ if (priv->multi_secfilter[i]) { -+ dprintk("%s: release multi_filter[%d]\n", __FUNCTION__, i); -+ priv->secfeed->release_filter(priv->secfeed, - priv->multi_secfilter[i]); - priv->multi_secfilter[i]=0; - } -- priv->demux-> -- release_section_feed(priv->demux, priv->secfeed); -+ } -+ -+ priv->demux->release_section_feed(priv->demux, priv->secfeed); - priv->secfeed=0; -- /* fixme: is this correct? */ -- module_put(THIS_MODULE); - } else - printk("%s: no feed to stop\n", dev->name); - } - --static int dvb_add_mc_filter(struct net_device *dev, struct dev_mc_list *mc) -+ -+static int dvb_set_mc_filter (struct net_device *dev, struct dev_mc_list *mc) - { - struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; -- int ret; - -- if (priv->multi_num >= DVB_NET_MULTICAST_MAX) -+ if (priv->multi_num == DVB_NET_MULTICAST_MAX) - return -ENOMEM; - -- ret = memcmp(priv->multi_macs[priv->multi_num], mc->dmi_addr, 6); - memcpy(priv->multi_macs[priv->multi_num], mc->dmi_addr, 6); - - priv->multi_num++; -- -- return ret; -+ return 0; - } - --static void dvb_net_set_multi(struct net_device *dev) -+ -+static void wq_set_multicast_list (void *data) - { -+ struct net_device *dev = data; - struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; -- struct dev_mc_list *mc; -- int mci; -- int update = 0; -+ -+ dvb_net_feed_stop(dev); -+ -+ priv->rx_mode = RX_MODE_UNI; - - if(dev->flags & IFF_PROMISC) { --// printk("%s: promiscuous mode\n", dev->name); -- if(priv->mode != 3) -- update = 1; -- priv->mode = 3; -- } else if(dev->flags & IFF_ALLMULTI) { --// printk("%s: allmulti mode\n", dev->name); -- if(priv->mode != 2) -- update = 1; -- priv->mode = 2; -- } else if(dev->mc_count > 0) { --// printk("%s: set_mc_list, %d entries\n", --// dev->name, dev->mc_count); -- if(priv->mode != 1) -- update = 1; -- priv->mode = 1; -+ dprintk("%s: promiscuous mode\n", dev->name); -+ priv->rx_mode = RX_MODE_PROMISC; -+ } else if ((dev->flags & IFF_ALLMULTI)) { -+ dprintk("%s: allmulti mode\n", dev->name); -+ priv->rx_mode = RX_MODE_ALL_MULTI; -+ } else if (dev->mc_count) { -+ int mci; -+ struct dev_mc_list *mc; -+ -+ dprintk("%s: set_mc_list, %d entries\n", -+ dev->name, dev->mc_count); -+ -+ priv->rx_mode = RX_MODE_MULTI; - priv->multi_num = 0; -+ - for (mci = 0, mc=dev->mc_list; - mci < dev->mc_count; -- mc=mc->next, mci++) -- if(dvb_add_mc_filter(dev, mc) != 0) -- update = 1; -- } else { -- if(priv->mode != 0) -- update = 1; -- priv->mode = 0; -+ mc = mc->next, mci++) { -+ dvb_set_mc_filter(dev, mc); -+ } - } - -- if(netif_running(dev) != 0 && update > 0) -- { -- dvb_net_feed_stop(dev); - dvb_net_feed_start(dev); - } -+ -+ -+static void dvb_net_set_multicast_list (struct net_device *dev) -+{ -+ struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; -+ schedule_work(&priv->set_multicast_list_wq); - } - -+ - static int dvb_net_set_config(struct net_device *dev, struct ifmap *map) - { - if (netif_running(dev)) -@@ -345,29 +405,47 @@ static int dvb_net_set_config(struct net - return 0; - } - --static int dvb_net_set_mac(struct net_device *dev, void *p) -+ -+static void wq_restart_net_feed (void *data) - { -- struct sockaddr *addr=p; -- int update; -+ struct net_device *dev = data; - -- update = memcmp(dev->dev_addr, addr->sa_data, dev->addr_len); -- memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); -- if (netif_running(dev) != 0 && update > 0) { -+ if (netif_running(dev)) { - dvb_net_feed_stop(dev); - dvb_net_feed_start(dev); - } -+} -+ -+ -+static int dvb_net_set_mac (struct net_device *dev, void *p) -+{ -+ struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; -+ struct sockaddr *addr=p; -+ -+ memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); -+ -+ if (netif_running(dev)) -+ schedule_work(&priv->restart_net_feed_wq); -+ - return 0; - } - - - static int dvb_net_open(struct net_device *dev) - { -+ struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; -+ -+ priv->in_use++; - dvb_net_feed_start(dev); - return 0; - } - -+ - static int dvb_net_stop(struct net_device *dev) - { -+ struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; -+ -+ priv->in_use--; - dvb_net_feed_stop(dev); - return 0; - } -@@ -386,16 +464,14 @@ static int dvb_net_init_dev(struct net_d - dev->stop = dvb_net_stop; - dev->hard_start_xmit = dvb_net_tx; - dev->get_stats = dvb_net_get_stats; -- dev->set_multicast_list = dvb_net_set_multi; -+ dev->set_multicast_list = dvb_net_set_multicast_list; - dev->set_config = dvb_net_set_config; - dev->set_mac_address = dvb_net_set_mac; - dev->mtu = 4096; - dev->mc_count = 0; -- -- dev->flags |= IFF_NOARP; - dev->hard_header_cache = NULL; - -- //SET_MODULE_OWNER(dev); -+ dev->flags |= IFF_NOARP; - - return 0; - } -@@ -404,18 +480,19 @@ static int get_if(struct dvb_net *dvbnet - { - int i; - -- for (i=0; idev_num; i++) -+ for (i=0; istate[i]) - break; -- if (i==dvbnet->dev_num) -+ -+ if (i == DVB_NET_DEVICES_MAX) - return -1; -+ - dvbnet->state[i]=1; - return i; - } - - --int --dvb_net_add_if(struct dvb_net *dvbnet, u16 pid) -+static int dvb_net_add_if(struct dvb_net *dvbnet, u16 pid) - { - struct net_device *net; - struct dmx_demux *demux; -@@ -423,59 +500,63 @@ dvb_net_add_if(struct dvb_net *dvbnet, u - int result; - int if_num; - -- if_num=get_if(dvbnet); -- if (if_num<0) -+ if ((if_num = get_if(dvbnet)) < 0) - return -EINVAL; - - net=&dvbnet->device[if_num]; - demux=dvbnet->demux; - -- net->base_addr = 0; -- net->irq = 0; -- net->dma = 0; -- net->mem_start = 0; -+ memset(net, 0, sizeof(struct net_device)); -+ - memcpy(net->name, "dvb0_0", 7); -- net->name[3]=dvbnet->card_num+0x30; -- net->name[5]=if_num+0x30; -+ net->name[3] = dvbnet->dvbdev->adapter->num + '0'; -+ net->name[5] = if_num + '0'; -+ net->addr_len = 6; -+ memcpy(net->dev_addr, dvbnet->dvbdev->adapter->proposed_mac, 6); - net->next = NULL; - net->init = dvb_net_init_dev; -- net->priv = kmalloc(sizeof(struct dvb_net_priv), GFP_KERNEL); -- if (net->priv == NULL) -+ -+ if (!(net->priv = kmalloc(sizeof(struct dvb_net_priv), GFP_KERNEL))) - return -ENOMEM; - - priv = net->priv; - memset(priv, 0, sizeof(struct dvb_net_priv)); - priv->demux = demux; - priv->pid = pid; -- priv->mode = 0; -+ priv->rx_mode = RX_MODE_UNI; -+ -+ INIT_WORK(&priv->set_multicast_list_wq, wq_set_multicast_list, net); -+ INIT_WORK(&priv->restart_net_feed_wq, wq_restart_net_feed, net); - - net->base_addr = pid; - - if ((result = register_netdev(net)) < 0) { - return result; - } -- /* fixme: is this correct? */ -- try_module_get(THIS_MODULE); - - return if_num; - } - --int --dvb_net_remove_if(struct dvb_net *dvbnet, int num) -+ -+static int dvb_net_remove_if(struct dvb_net *dvbnet, int num) - { -+ struct dvb_net_priv *priv = dvbnet->device[num].priv; -+ - if (!dvbnet->state[num]) - return -EINVAL; -+ if (priv->in_use) -+ return -EBUSY; -+ - dvb_net_stop(&dvbnet->device[num]); -- kfree(dvbnet->device[num].priv); -+ flush_scheduled_work(); -+ kfree(priv); - unregister_netdev(&dvbnet->device[num]); - dvbnet->state[num]=0; -- /* fixme: is this correct? */ -- module_put(THIS_MODULE); -- - return 0; - } - --int dvb_net_do_ioctl(struct inode *inode, struct file *file, -+ -+static int dvb_net_do_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, void *parg) - { - struct dvb_device *dvbdev = (struct dvb_device *) file->private_data; -@@ -490,6 +571,8 @@ int dvb_net_do_ioctl(struct inode *inode - struct dvb_net_if *dvbnetif=(struct dvb_net_if *)parg; - int result; - -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EPERM; - result=dvb_net_add_if(dvbnet, dvbnetif->pid); - if (result<0) - return result; -@@ -502,7 +585,7 @@ int dvb_net_do_ioctl(struct inode *inode - struct dvb_net_priv *priv_data; - struct dvb_net_if *dvbnetif=(struct dvb_net_if *)parg; - -- if (dvbnetif->if_num >= dvbnet->dev_num || -+ if (dvbnetif->if_num >= DVB_NET_DEVICES_MAX || - !dvbnet->state[dvbnetif->if_num]) - return -EFAULT; - -@@ -512,7 +595,9 @@ int dvb_net_do_ioctl(struct inode *inode - break; - } - case NET_REMOVE_IF: -- return dvb_net_remove_if(dvbnet, (long) parg); -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EPERM; -+ return dvb_net_remove_if(dvbnet, (int) parg); - default: - return -EINVAL; - } -@@ -542,28 +627,29 @@ static struct dvb_device dvbdev_net = { - .fops = &dvb_net_fops, - }; - --void --dvb_net_release(struct dvb_net *dvbnet) -+ -+void dvb_net_release (struct dvb_net *dvbnet) - { - int i; - - dvb_unregister_device(dvbnet->dvbdev); -- for (i=0; idev_num; i++) { -+ -+ for (i=0; istate[i]) - continue; - dvb_net_remove_if(dvbnet, i); - } - } - --int --dvb_net_init(struct dvb_adapter *adap, struct dvb_net *dvbnet, struct dmx_demux *dmx) -+ -+int dvb_net_init (struct dvb_adapter *adap, struct dvb_net *dvbnet, -+ struct dmx_demux *dmx) - { - int i; - - dvbnet->demux = dmx; -- dvbnet->dev_num = DVB_NET_DEVICES_MAX; - -- for (i=0; idev_num; i++) -+ for (i=0; istate[i] = 0; - - dvb_register_device (adap, &dvbnet->dvbdev, &dvbdev_net, ---- linux-2.6.0-test1/drivers/media/dvb/dvb-core/dvb_net.h 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/dvb-core/dvb_net.h 2003-07-19 17:03:49.000000000 -0700 -@@ -35,8 +35,6 @@ - - struct dvb_net { - struct dvb_device *dvbdev; -- int card_num; -- int dev_num; - struct net_device device[DVB_NET_DEVICES_MAX]; - int state[DVB_NET_DEVICES_MAX]; - struct dmx_demux *demux; ---- linux-2.6.0-test1/drivers/media/dvb/frontends/alps_bsrv2.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/alps_bsrv2.c 2003-07-19 17:03:49.000000000 -0700 -@@ -55,7 +55,7 @@ static u8 init_1893_tab [] = { - 0x01, 0xA4, 0x35, 0x81, 0x2A, 0x0d, 0x55, 0xC4, - 0x09, 0x69, 0x00, 0x86, 0x4c, 0x28, 0x7F, 0x00, - 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -- 0x80, 0x00, 0x31, 0xb0, 0x14, 0x00, 0xDC, 0x20, -+ 0x80, 0x00, 0x31, 0xb0, 0x14, 0x00, 0xDC, 0x00, - 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x55, 0x00, 0x00, 0x7f, 0x00 -@@ -158,6 +158,11 @@ static int ves1893_set_inversion (struct - { - u8 val; - -+ /* -+ * inversion on/off are interchanged because i and q seem to -+ * be swapped on the hardware -+ */ -+ - switch (inversion) { - case INVERSION_OFF: - val = 0xc0; -@@ -166,13 +171,16 @@ static int ves1893_set_inversion (struct - val = 0x80; - break; - case INVERSION_AUTO: -- val = 0x40; -+ val = 0x00; - break; - default: - return -EINVAL; - } - -- return ves1893_writereg (i2c, 0x0c, (init_1893_tab[0x0c] & 0x3f) | val); -+ /* needs to be saved for FE_GET_FRONTEND */ -+ init_1893_tab[0x0c] = (init_1893_tab[0x0c] & 0x3f) | val; -+ -+ return ves1893_writereg (i2c, 0x0c, init_1893_tab[0x0c]); - } - - -@@ -383,8 +391,14 @@ static int bsrv2_ioctl (struct dvb_front - afc = (afc * (int)(p->u.qpsk.symbol_rate/1000/8))/16; - - p->frequency -= afc; -+ -+ /* -+ * inversion indicator is only valid -+ * if auto inversion was used -+ */ -+ if (!(init_1893_tab[0x0c] & 0x80)) - p->inversion = (ves1893_readreg (i2c, 0x0f) & 2) ? -- INVERSION_ON : INVERSION_OFF; -+ INVERSION_OFF : INVERSION_ON; - p->u.qpsk.fec_inner = ves1893_get_fec (i2c); - /* XXX FIXME: timing offset !! */ - break; ---- linux-2.6.0-test1/drivers/media/dvb/frontends/alps_tdlb7.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/alps_tdlb7.c 2003-07-19 17:03:49.000000000 -0700 -@@ -349,6 +349,9 @@ static int tdlb7_ioctl (struct dvb_front - - sp5659_set_tv_freq (i2c, p->frequency); - -+ // read status reg in order to clear pending irqs -+ sp8870_readreg(i2c, 0x200); -+ - // sample rate correction bit [23..17] - sp8870_writereg(i2c,0x0319,0x000A); - ---- linux-2.6.0-test1/drivers/media/dvb/frontends/grundig_29504-401.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/grundig_29504-401.c 2003-07-19 17:03:49.000000000 -0700 -@@ -37,15 +37,15 @@ static int debug = 0; - - - struct dvb_frontend_info grundig_29504_401_info = { -- .name = "Grundig 29504-401", -- .type = FE_OFDM, --/* .frequency_min = ???,*/ --/* .frequency_max = ???,*/ -- .frequency_stepsize = 166666, --/* .frequency_tolerance = ???,*/ --/* .symbol_rate_tolerance = ???,*/ -- .notifier_delay = 0, -- .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | -+ name: "Grundig 29504-401", -+ type: FE_OFDM, -+/* frequency_min: ???,*/ -+/* frequency_max: ???,*/ -+ frequency_stepsize: 166666, -+/* frequency_tolerance: ???,*/ -+/* symbol_rate_tolerance: ???,*/ -+ notifier_delay: 0, -+ caps: FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | - FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | - FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | - FE_CAN_MUTE_TS /*| FE_CAN_CLEAN_SETUP*/ -@@ -109,15 +109,15 @@ static int tsa5060_set_tv_freq (struct d - div = (36125000 + freq) / 166666; - cfg = 0x88; - -- cpump = div < 175000000 ? 2 : div < 390000000 ? 1 : -- div < 470000000 ? 2 : div < 750000000 ? 1 : 3; -+ cpump = freq < 175000000 ? 2 : freq < 390000000 ? 1 : -+ freq < 470000000 ? 2 : freq < 750000000 ? 1 : 3; - -- band_select = div < 175000000 ? 0x0e : div < 470000000 ? 0x05 : 0x03; -+ band_select = freq < 175000000 ? 0x0e : freq < 470000000 ? 0x05 : 0x03; - - buf [0] = (div >> 8) & 0x7f; - buf [1] = div & 0xff; - buf [2] = ((div >> 10) & 0x60) | cfg; -- buf [3] = cpump | band_select; -+ buf [3] = (cpump << 6) | band_select; - - return tsa5060_write (i2c, buf); - } -@@ -267,12 +267,12 @@ static int apply_frontend_param (struct - } - - --static void reset_and_configure (struct dvb_i2c_bus *i2c) -+static int reset_and_configure (struct dvb_i2c_bus *i2c) - { - u8 buf [] = { 0x06 }; - struct i2c_msg msg = { .addr = 0x00, .flags = 0, .buf = buf, .len = 1 }; - -- i2c->xfer (i2c, &msg, 1); -+ return (i2c->xfer (i2c, &msg, 1) == 1) ? 0 : -ENODEV; - } - - -@@ -391,7 +391,7 @@ int grundig_29504_401_ioctl (struct dvb_ - struct dvb_frontend_parameters *p = arg; - - tsa5060_set_tv_freq (i2c, p->frequency); -- apply_frontend_param (i2c, p); -+ return apply_frontend_param (i2c, p); - } - case FE_GET_FRONTEND: - /* we could correct the frequency here, but... -@@ -417,25 +417,61 @@ int grundig_29504_401_ioctl (struct dvb_ - - static int l64781_attach (struct dvb_i2c_bus *i2c) - { -+ u8 reg0x3e; - u8 b0 [] = { 0x1a }; - u8 b1 [] = { 0x00 }; - struct i2c_msg msg [] = { { .addr = 0x55, .flags = 0, .buf = b0, .len = 1 }, - { .addr = 0x55, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; - -- if (i2c->xfer (i2c, msg, 2) == 2) /* probably an EEPROM... */ -+ /** -+ * the L64781 won't show up before we send the reset_and_configure() -+ * broadcast. If nothing responds there is no L64781 on the bus... -+ */ -+ if (reset_and_configure(i2c) < 0) { -+ dprintk("no response on reset_and_configure() broadcast, bailing out...\n"); - return -ENODEV; -+ } - -- reset_and_configure (i2c); -- -- if (i2c->xfer (i2c, msg, 2) != 2) /* nothing... */ -+ /* The chip always responds to reads */ -+ if (i2c->xfer(i2c, msg, 2) != 2) { -+ dprintk("no response to read on I2C bus\n"); - return -ENODEV; -+ } - -- if (b1[0] != 0xa1) -+ /* Save current register contents for bailout */ -+ reg0x3e = l64781_readreg(i2c, 0x3e); -+ -+ /* Reading the POWER_DOWN register always returns 0 */ -+ if (reg0x3e != 0) { -+ dprintk("Device doesn't look like L64781\n"); - return -ENODEV; -+ } -+ -+ /* Turn the chip off */ -+ l64781_writereg (i2c, 0x3e, 0x5a); -+ -+ /* Responds to all reads with 0 */ -+ if (l64781_readreg(i2c, 0x1a) != 0) { -+ dprintk("Read 1 returned unexpcted value\n"); -+ goto bailout; -+ } -+ -+ /* Turn the chip on */ -+ l64781_writereg (i2c, 0x3e, 0xa5); -+ -+ /* Responds with register default value */ -+ if (l64781_readreg(i2c, 0x1a) != 0xa1) { -+ dprintk("Read 2 returned unexpcted value\n"); -+ goto bailout; -+ } - - dvb_register_frontend (grundig_29504_401_ioctl, i2c, NULL, - &grundig_29504_401_info); - return 0; -+ -+ bailout: -+ l64781_writereg (i2c, 0x3e, reg0x3e); /* restore reg 0x3e */ -+ return -ENODEV; - } - - ---- linux-2.6.0-test1/drivers/media/dvb/frontends/grundig_29504-491.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/grundig_29504-491.c 2003-07-19 17:03:49.000000000 -0700 -@@ -179,10 +179,7 @@ static fe_code_rate_t tda8083_get_fec (s - static fe_code_rate_t fec_tab [] = { FEC_8_9, FEC_1_2, FEC_2_3, FEC_3_4, - FEC_4_5, FEC_5_6, FEC_6_7, FEC_7_8 }; - -- index = tda8083_readreg (i2c, 0x0e) & 0x3; -- -- if (index > 7) -- return FEC_NONE; -+ index = tda8083_readreg(i2c, 0x0e) & 0x07; - - return fec_tab [index]; - } ---- linux-2.6.0-test1/drivers/media/dvb/frontends/Kconfig 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/Kconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -93,6 +93,16 @@ config DVB_GRUNDIG_29504_401 - DVB adapter simply enable all supported frontends, the - right one will get autodetected. - -+config DVB_MT312 -+ tristate "Zarlink MT312 Satellite Channel Decoder (QPSK)" -+ depends on DVB_CORE -+ help -+ A DVB-S tuner module. Say Y when you want to support this frontend. -+ -+ If you don't know what tuner module is soldered on your -+ DVB adapter simply enable all supported frontends, the -+ right one will get autodetected. -+ - config DVB_VES1820 - tristate "Frontends with external VES1820 demodulator (QAM)" - depends on DVB_CORE -@@ -105,3 +115,23 @@ config DVB_VES1820 - DVB adapter simply enable all supported frontends, the - right one will get autodetected. - -+config DVB_TDA1004X -+ tristate "Frontends with external TDA1004X demodulators (OFDM)" -+ depends on DVB_CORE -+ help -+ A DVB-T tuner module. Say Y when you want to support this frontend. -+ -+ If you don't know what tuner module is soldered on your -+ DVB adapter simply enable all supported frontends, the -+ right one will get autodetected. -+ -+config DVB_TDA1004X_FIRMWARE_FILE -+ string "Full pathname of tda1004x.bin firmware file" -+ depends on DVB_TDA1004X -+ default "/etc/dvb/tda1004x.bin" -+ help -+ The TDA1004X requires additional firmware in order to function. -+ The firmware file can obtained as follows: -+ wget http://www.technotrend.de/new/215/TTweb_215a_budget_20_05_2003.zip -+ unzip -j TTweb_215a_budget_20_05_2003.zip Software/Oem/PCI/App/ttlcdacc.dll -+ mv ttlcdacc.dll /etc/dvb/tda1004x.bin ---- linux-2.6.0-test1/drivers/media/dvb/frontends/Makefile 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -12,4 +12,6 @@ obj-$(CONFIG_DVB_ATMEL_AT76C651) += at76 - obj-$(CONFIG_DVB_CX24110) += cx24110.o - obj-$(CONFIG_DVB_GRUNDIG_29504_491) += grundig_29504-491.o - obj-$(CONFIG_DVB_GRUNDIG_29504_401) += grundig_29504-401.o -+obi-$(CONFIG_DVB_MT312) += mt312.o - obj-$(CONFIG_DVB_VES1820) += ves1820.o -+obj-$(CONFIG_DVB_TDA1004X) += tda1004x.o ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/mt312.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,749 @@ -+/* -+ Driver for Zarlink MT312 Satellite Channel Decoder -+ -+ Copyright (C) 2003 Andreas Oberritter -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+ References: -+ http://products.zarlink.com/product_profiles/MT312.htm -+ http://products.zarlink.com/product_profiles/SL1935.htm -+*/ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "dvb_frontend.h" -+#include "mt312.h" -+ -+#define I2C_ADDR_MT312 0x0e -+#define I2C_ADDR_SL1935 0x61 -+#define I2C_ADDR_TSA5059 0x61 -+ -+#define MT312_DEBUG 0 -+ -+#define MT312_SYS_CLK 90000000UL /* 90 MHz */ -+#define MT312_PLL_CLK 10000000UL /* 10 MHz */ -+ -+static struct dvb_frontend_info mt312_info = { -+ .name = "Zarlink MT312", -+ .type = FE_QPSK, -+ .frequency_min = 950000, -+ .frequency_max = 2150000, -+ .frequency_stepsize = (MT312_PLL_CLK / 1000) / 128, -+ /*.frequency_tolerance = 29500, FIXME: binary compatibility waste? */ -+ .symbol_rate_min = MT312_SYS_CLK / 128, -+ .symbol_rate_max = MT312_SYS_CLK / 2, -+ /*.symbol_rate_tolerance = 500, FIXME: binary compatibility waste? 2% */ -+ .notifier_delay = 0, -+ .caps = -+ FE_CAN_INVERSION_AUTO | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | -+ FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | -+ FE_CAN_FEC_AUTO | FE_CAN_QPSK | FE_CAN_RECOVER | -+ FE_CAN_CLEAN_SETUP | FE_CAN_MUTE_TS -+}; -+ -+static int mt312_read(struct dvb_i2c_bus *i2c, -+ const enum mt312_reg_addr reg, void *buf, -+ const size_t count) -+{ -+ int ret; -+ struct i2c_msg msg[2]; -+ u8 regbuf[1] = { reg }; -+ -+ msg[0].addr = I2C_ADDR_MT312; -+ msg[0].flags = 0; -+ msg[0].buf = regbuf; -+ msg[0].len = 1; -+ msg[1].addr = I2C_ADDR_MT312; -+ msg[1].flags = I2C_M_RD; -+ msg[1].buf = buf; -+ msg[1].len = count; -+ -+ ret = i2c->xfer(i2c, msg, 2); -+ -+ if (ret != 2) { -+ printk(KERN_ERR "%s: ret == %d\n", __FUNCTION__, ret); -+ return -EREMOTEIO; -+ } -+#ifdef MT312_DEBUG -+ { -+ int i; -+ printk(KERN_INFO "R(%d):", reg & 0x7f); -+ for (i = 0; i < count; i++) -+ printk(" %02x", ((const u8 *) buf)[i]); -+ printk("\n"); -+ } -+#endif -+ -+ return 0; -+} -+ -+static int mt312_write(struct dvb_i2c_bus *i2c, -+ const enum mt312_reg_addr reg, const void *src, -+ const size_t count) -+{ -+ int ret; -+ u8 buf[count + 1]; -+ struct i2c_msg msg; -+ -+#ifdef MT312_DEBUG -+ { -+ int i; -+ printk(KERN_INFO "W(%d):", reg & 0x7f); -+ for (i = 0; i < count; i++) -+ printk(" %02x", ((const u8 *) src)[i]); -+ printk("\n"); -+ } -+#endif -+ -+ buf[0] = reg; -+ memcpy(&buf[1], src, count); -+ -+ msg.addr = I2C_ADDR_MT312; -+ msg.flags = 0; -+ msg.buf = buf; -+ msg.len = count + 1; -+ -+ ret = i2c->xfer(i2c, &msg, 1); -+ -+ if (ret != 1) { -+ printk(KERN_ERR "%s: ret == %d\n", __FUNCTION__, ret); -+ return -EREMOTEIO; -+ } -+ -+ return 0; -+} -+ -+static inline int mt312_readreg(struct dvb_i2c_bus *i2c, -+ const enum mt312_reg_addr reg, u8 * val) -+{ -+ return mt312_read(i2c, reg, val, 1); -+} -+ -+static inline int mt312_writereg(struct dvb_i2c_bus *i2c, -+ const enum mt312_reg_addr reg, const u8 val) -+{ -+ return mt312_write(i2c, reg, &val, 1); -+} -+ -+static int mt312_pll_write(struct dvb_i2c_bus *i2c, const u8 addr, -+ u8 * buf, const u8 len) -+{ -+ int ret; -+ struct i2c_msg msg; -+ -+ msg.addr = addr; -+ msg.flags = 0; -+ msg.buf = buf; -+ msg.len = len; -+ -+ if ((ret = mt312_writereg(i2c, GPP_CTRL, 0x40)) < 0) -+ return ret; -+ -+ if ((ret = i2c->xfer(i2c, &msg, 1)) != 1) -+ printk(KERN_ERR "%s: i/o error (ret == %d)\n", __FUNCTION__, ret); -+ -+ if ((ret = mt312_writereg(i2c, GPP_CTRL, 0x00)) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static inline u32 mt312_div(u32 a, u32 b) -+{ -+ return (a + (b / 2)) / b; -+} -+ -+static int sl1935_set_tv_freq(struct dvb_i2c_bus *i2c, u32 freq, u32 sr) -+{ -+ /* 155 uA, Baseband Path B */ -+ u8 buf[4] = { 0x00, 0x00, 0x80, 0x00 }; -+ -+ u8 exp; -+ u32 ref; -+ u32 div; -+ -+ if (sr < 10000000) { /* 1-10 MSym/s: ratio 2 ^ 3 */ -+ exp = 3; -+ buf[2] |= 0x40; /* 690 uA */ -+ } else if (sr < 15000000) { /* 10-15 MSym/s: ratio 2 ^ 4 */ -+ exp = 4; -+ buf[2] |= 0x20; /* 330 uA */ -+ } else { /* 15-45 MSym/s: ratio 2 ^ 7 */ -+ exp = 7; -+ buf[3] |= 0x08; /* Baseband Path A */ -+ } -+ -+ div = mt312_div(MT312_PLL_CLK, 1 << exp); -+ ref = mt312_div(freq * 1000, div); -+ mt312_info.frequency_stepsize = mt312_div(div, 1000); -+ -+ buf[0] = (ref >> 8) & 0x7f; -+ buf[1] = (ref >> 0) & 0xff; -+ buf[2] |= (exp - 1); -+ -+ if (freq < 1550000) -+ buf[3] |= 0x10; -+ -+ printk(KERN_INFO "synth dword = %02x%02x%02x%02x\n", buf[0], -+ buf[1], buf[2], buf[3]); -+ -+ return mt312_pll_write(i2c, I2C_ADDR_SL1935, buf, sizeof(buf)); -+} -+ -+static int tsa5059_set_tv_freq(struct dvb_i2c_bus *i2c, u32 freq, u32 sr) -+{ -+ u8 buf[4]; -+ -+ u32 ref = mt312_div(freq, 125); -+ -+ buf[0] = (ref >> 8) & 0x7f; -+ buf[1] = (ref >> 0) & 0xff; -+ buf[2] = 0x84 | ((ref >> 10) & 0x60); -+ buf[3] = 0x80; -+ -+ if (freq < 1550000) -+ buf[3] |= 0x02; -+ -+ printk(KERN_INFO "synth dword = %02x%02x%02x%02x\n", buf[0], -+ buf[1], buf[2], buf[3]); -+ -+ return mt312_pll_write(i2c, I2C_ADDR_TSA5059, buf, sizeof(buf)); -+} -+ -+static int mt312_reset(struct dvb_i2c_bus *i2c, const u8 full) -+{ -+ return mt312_writereg(i2c, RESET, full ? 0x80 : 0x40); -+} -+ -+static int mt312_init(struct dvb_i2c_bus *i2c, const long id) -+{ -+ int ret; -+ u8 buf[2]; -+ -+ /* wake up */ -+ if ((ret = mt312_writereg(i2c, CONFIG, 0x8c)) < 0) -+ return ret; -+ -+ /* wait at least 150 usec */ -+ udelay(150); -+ -+ /* full reset */ -+ if ((ret = mt312_reset(i2c, 1)) < 0) -+ return ret; -+ -+ /* SYS_CLK */ -+ buf[0] = mt312_div(MT312_SYS_CLK * 2, 1000000); -+ -+ /* DISEQC_RATIO */ -+ buf[1] = mt312_div(MT312_PLL_CLK, 15000 * 4); -+ -+ if ((ret = mt312_write(i2c, SYS_CLK, buf, sizeof(buf))) < 0) -+ return ret; -+ -+ if ((ret = mt312_writereg(i2c, SNR_THS_HIGH, 0x32)) < 0) -+ return ret; -+ -+ if ((ret = mt312_writereg(i2c, OP_CTRL, 0x53)) < 0) -+ return ret; -+ -+ /* TS_SW_LIM */ -+ buf[0] = 0x8c; -+ buf[1] = 0x98; -+ -+ if ((ret = mt312_write(i2c, TS_SW_LIM_L, buf, sizeof(buf))) < 0) -+ return ret; -+ -+ if ((ret = mt312_writereg(i2c, CS_SW_LIM, 0x69)) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static int mt312_send_master_cmd(struct dvb_i2c_bus *i2c, -+ const struct dvb_diseqc_master_cmd *c) -+{ -+ int ret; -+ u8 diseqc_mode; -+ -+ if ((c->msg_len == 0) || (c->msg_len > sizeof(c->msg))) -+ return -EINVAL; -+ -+ if ((ret = mt312_readreg(i2c, DISEQC_MODE, &diseqc_mode)) < 0) -+ return ret; -+ -+ if ((ret = -+ mt312_write(i2c, (0x80 | DISEQC_INSTR), c->msg, c->msg_len)) < 0) -+ return ret; -+ -+ if ((ret = -+ mt312_writereg(i2c, DISEQC_MODE, -+ (diseqc_mode & 0x40) | ((c->msg_len - 1) << 3) -+ | 0x04)) < 0) -+ return ret; -+ -+ /* set DISEQC_MODE[2:0] to zero if a return message is expected */ -+ if (c->msg[0] & 0x02) -+ if ((ret = -+ mt312_writereg(i2c, DISEQC_MODE, (diseqc_mode & 0x40))) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static int mt312_recv_slave_reply(struct dvb_i2c_bus *i2c, -+ struct dvb_diseqc_slave_reply *r) -+{ -+ /* TODO */ -+ return -EOPNOTSUPP; -+} -+ -+static int mt312_send_burst(struct dvb_i2c_bus *i2c, const fe_sec_mini_cmd_t c) -+{ -+ const u8 mini_tab[2] = { 0x02, 0x03 }; -+ -+ int ret; -+ u8 diseqc_mode; -+ -+ if (c > SEC_MINI_B) -+ return -EINVAL; -+ -+ if ((ret = mt312_readreg(i2c, DISEQC_MODE, &diseqc_mode)) < 0) -+ return ret; -+ -+ if ((ret = -+ mt312_writereg(i2c, DISEQC_MODE, -+ (diseqc_mode & 0x40) | mini_tab[c])) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static int mt312_set_tone(struct dvb_i2c_bus *i2c, const fe_sec_tone_mode_t t) -+{ -+ const u8 tone_tab[2] = { 0x01, 0x00 }; -+ -+ int ret; -+ u8 diseqc_mode; -+ -+ if (t > SEC_TONE_OFF) -+ return -EINVAL; -+ -+ if ((ret = mt312_readreg(i2c, DISEQC_MODE, &diseqc_mode)) < 0) -+ return ret; -+ -+ if ((ret = -+ mt312_writereg(i2c, DISEQC_MODE, -+ (diseqc_mode & 0x40) | tone_tab[t])) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static int mt312_set_voltage(struct dvb_i2c_bus *i2c, const fe_sec_voltage_t v) -+{ -+ const u8 volt_tab[3] = { 0x00, 0x40, 0x00 }; -+ -+ if (v > SEC_VOLTAGE_OFF) -+ return -EINVAL; -+ -+ return mt312_writereg(i2c, DISEQC_MODE, volt_tab[v]); -+} -+ -+static int mt312_read_status(struct dvb_i2c_bus *i2c, fe_status_t * s) -+{ -+ int ret; -+ u8 status[3]; -+ -+ *s = 0; -+ -+ if ((ret = mt312_read(i2c, QPSK_STAT_H, status, sizeof(status))) < 0) -+ return ret; -+ -+ if (status[0] & 0xc0) -+ *s |= FE_HAS_SIGNAL; /* signal noise ratio */ -+ if (status[0] & 0x04) -+ *s |= FE_HAS_CARRIER; /* qpsk carrier lock */ -+ if (status[2] & 0x02) -+ *s |= FE_HAS_VITERBI; /* viterbi lock */ -+ if (status[2] & 0x04) -+ *s |= FE_HAS_SYNC; /* byte align lock */ -+ if (status[0] & 0x01) -+ *s |= FE_HAS_LOCK; /* qpsk lock */ -+ -+ return 0; -+} -+ -+static int mt312_read_bercnt(struct dvb_i2c_bus *i2c, u32 * ber) -+{ -+ int ret; -+ u8 buf[3]; -+ -+ if ((ret = mt312_read(i2c, RS_BERCNT_H, buf, 3)) < 0) -+ return ret; -+ -+ *ber = ((buf[0] << 16) | (buf[1] << 8) | buf[2]) * 64; -+ -+ return 0; -+} -+ -+static int mt312_read_agc(struct dvb_i2c_bus *i2c, u16 * signal_strength) -+{ -+ int ret; -+ u8 buf[3]; -+ u16 agc; -+ s16 err_db; -+ -+ if ((ret = mt312_read(i2c, AGC_H, buf, sizeof(buf))) < 0) -+ return ret; -+ -+ agc = (buf[0] << 6) | (buf[1] >> 2); -+ err_db = (s16) (((buf[1] & 0x03) << 14) | buf[2] << 6) >> 6; -+ -+ *signal_strength = agc; -+ -+ printk(KERN_DEBUG "agc=%08x err_db=%hd\n", agc, err_db); -+ -+ return 0; -+} -+ -+static int mt312_read_snr(struct dvb_i2c_bus *i2c, u16 * snr) -+{ -+ int ret; -+ u8 buf[2]; -+ -+ if ((ret = mt312_read(i2c, M_SNR_H, &buf, sizeof(buf))) < 0) -+ return ret; -+ -+ *snr = 0xFFFF - ((((buf[0] & 0x7f) << 8) | buf[1]) << 1); -+ -+ return 0; -+} -+ -+static int mt312_read_ubc(struct dvb_i2c_bus *i2c, u32 * ubc) -+{ -+ int ret; -+ u8 buf[2]; -+ -+ if ((ret = mt312_read(i2c, RS_UBC_H, &buf, sizeof(buf))) < 0) -+ return ret; -+ -+ *ubc = (buf[0] << 8) | buf[1]; -+ -+ return 0; -+} -+ -+static int mt312_set_frontend(struct dvb_i2c_bus *i2c, -+ const struct dvb_frontend_parameters *p, -+ const long id) -+{ -+ int ret; -+ u8 buf[5]; -+ u16 sr; -+ -+ const u8 fec_tab[10] = -+ { 0x00, 0x01, 0x02, 0x04, 0x3f, 0x08, 0x10, 0x20, 0x3f, 0x3f }; -+ const u8 inv_tab[3] = { 0x00, 0x40, 0x80 }; -+ -+ int (*set_tv_freq)(struct dvb_i2c_bus *i2c, u32 freq, u32 sr); -+ -+ if ((p->frequency < mt312_info.frequency_min) -+ || (p->frequency > mt312_info.frequency_max)) -+ return -EINVAL; -+ -+ if ((p->inversion < INVERSION_OFF) -+ || (p->inversion > INVERSION_AUTO)) -+ return -EINVAL; -+ -+ if ((p->u.qpsk.symbol_rate < mt312_info.symbol_rate_min) -+ || (p->u.qpsk.symbol_rate > mt312_info.symbol_rate_max)) -+ return -EINVAL; -+ -+ if ((p->u.qpsk.fec_inner < FEC_NONE) -+ || (p->u.qpsk.fec_inner > FEC_AUTO)) -+ return -EINVAL; -+ -+ if ((p->u.qpsk.fec_inner == FEC_4_5) -+ || (p->u.qpsk.fec_inner == FEC_8_9)) -+ return -EINVAL; -+ -+ switch (id) { -+ case ID_VP310: -+ set_tv_freq = tsa5059_set_tv_freq; -+ break; -+ case ID_MT312: -+ set_tv_freq = sl1935_set_tv_freq; -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ if ((ret = set_tv_freq(i2c, p->frequency, p->u.qpsk.symbol_rate)) < 0) -+ return ret; -+ -+ /* sr = (u16)(sr * 256.0 / 1000000.0) */ -+ sr = mt312_div(p->u.qpsk.symbol_rate * 4, 15625); -+ -+ /* SYM_RATE */ -+ buf[0] = (sr >> 8) & 0x3f; -+ buf[1] = (sr >> 0) & 0xff; -+ -+ /* VIT_MODE */ -+ buf[2] = inv_tab[p->inversion] | fec_tab[p->u.qpsk.fec_inner]; -+ -+ /* QPSK_CTRL */ -+ buf[3] = 0x40; /* swap I and Q before QPSK demodulation */ -+ -+ if (p->u.qpsk.symbol_rate < 10000000) -+ buf[3] |= 0x04; /* use afc mode */ -+ -+ /* GO */ -+ buf[4] = 0x01; -+ -+ if ((ret = mt312_write(i2c, SYM_RATE_H, buf, sizeof(buf))) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static int mt312_get_inversion(struct dvb_i2c_bus *i2c, -+ fe_spectral_inversion_t * i) -+{ -+ int ret; -+ u8 vit_mode; -+ -+ if ((ret = mt312_readreg(i2c, VIT_MODE, &vit_mode)) < 0) -+ return ret; -+ -+ if (vit_mode & 0x80) /* auto inversion was used */ -+ *i = (vit_mode & 0x40) ? INVERSION_ON : INVERSION_OFF; -+ -+ return 0; -+} -+ -+static int mt312_get_symbol_rate(struct dvb_i2c_bus *i2c, u32 * sr) -+{ -+ int ret; -+ u8 sym_rate_h; -+ u8 dec_ratio; -+ u16 sym_rat_op; -+ u16 monitor; -+ u8 buf[2]; -+ -+ if ((ret = mt312_readreg(i2c, SYM_RATE_H, &sym_rate_h)) < 0) -+ return ret; -+ -+ if (sym_rate_h & 0x80) { /* symbol rate search was used */ -+ if ((ret = mt312_writereg(i2c, MON_CTRL, 0x03)) < 0) -+ return ret; -+ -+ if ((ret = mt312_read(i2c, MONITOR_H, buf, sizeof(buf))) < 0) -+ return ret; -+ -+ monitor = (buf[0] << 8) | buf[1]; -+ -+ printk(KERN_DEBUG "sr(auto) = %u\n", -+ mt312_div(monitor * 15625, 4)); -+ } else { -+ if ((ret = mt312_writereg(i2c, MON_CTRL, 0x05)) < 0) -+ return ret; -+ -+ if ((ret = mt312_read(i2c, MONITOR_H, buf, sizeof(buf))) < 0) -+ return ret; -+ -+ dec_ratio = ((buf[0] >> 5) & 0x07) * 32; -+ -+ if ((ret = mt312_read(i2c, SYM_RAT_OP_H, buf, sizeof(buf))) < 0) -+ return ret; -+ -+ sym_rat_op = (buf[0] << 8) | buf[1]; -+ -+ printk(KERN_DEBUG "sym_rat_op=%d dec_ratio=%d\n", -+ sym_rat_op, dec_ratio); -+ printk(KERN_DEBUG "*sr(manual) = %lu\n", -+ (((MT312_PLL_CLK * 8192) / (sym_rat_op + 8192)) * -+ 2) - dec_ratio); -+ } -+ -+ return 0; -+} -+ -+static int mt312_get_code_rate(struct dvb_i2c_bus *i2c, fe_code_rate_t * cr) -+{ -+ const fe_code_rate_t fec_tab[8] = -+ { FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_6_7, FEC_7_8, -+ FEC_AUTO, FEC_AUTO }; -+ -+ int ret; -+ u8 fec_status; -+ -+ if ((ret = mt312_readreg(i2c, FEC_STATUS, &fec_status)) < 0) -+ return ret; -+ -+ *cr = fec_tab[(fec_status >> 4) & 0x07]; -+ -+ return 0; -+} -+ -+static int mt312_get_frontend(struct dvb_i2c_bus *i2c, -+ struct dvb_frontend_parameters *p) -+{ -+ int ret; -+ -+ if ((ret = mt312_get_inversion(i2c, &p->inversion)) < 0) -+ return ret; -+ -+ if ((ret = mt312_get_symbol_rate(i2c, &p->u.qpsk.symbol_rate)) < 0) -+ return ret; -+ -+ if ((ret = mt312_get_code_rate(i2c, &p->u.qpsk.fec_inner)) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static int mt312_sleep(struct dvb_i2c_bus *i2c) -+{ -+ int ret; -+ u8 config; -+ -+ /* reset all registers to defaults */ -+ if ((ret = mt312_reset(i2c, 1)) < 0) -+ return ret; -+ -+ if ((ret = mt312_readreg(i2c, CONFIG, &config)) < 0) -+ return ret; -+ -+ /* enter standby */ -+ if ((ret = mt312_writereg(i2c, CONFIG, config & 0x7f)) < 0) -+ return ret; -+ -+ return 0; -+} -+ -+static int mt312_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg) -+{ -+ struct dvb_i2c_bus *i2c = fe->i2c; -+ -+ switch (cmd) { -+ case FE_GET_INFO: -+ memcpy(arg, &mt312_info, sizeof(struct dvb_frontend_info)); -+ break; -+ -+ case FE_DISEQC_RESET_OVERLOAD: -+ return -EOPNOTSUPP; -+ -+ case FE_DISEQC_SEND_MASTER_CMD: -+ return mt312_send_master_cmd(i2c, arg); -+ -+ case FE_DISEQC_RECV_SLAVE_REPLY: -+ if ((long) fe->data == ID_MT312) -+ return mt312_recv_slave_reply(i2c, arg); -+ else -+ return -EOPNOTSUPP; -+ -+ case FE_DISEQC_SEND_BURST: -+ return mt312_send_burst(i2c, (fe_sec_mini_cmd_t) arg); -+ -+ case FE_SET_TONE: -+ return mt312_set_tone(i2c, (fe_sec_tone_mode_t) arg); -+ -+ case FE_SET_VOLTAGE: -+ return mt312_set_voltage(i2c, (fe_sec_voltage_t) arg); -+ -+ case FE_ENABLE_HIGH_LNB_VOLTAGE: -+ return -EOPNOTSUPP; -+ -+ case FE_READ_STATUS: -+ return mt312_read_status(i2c, arg); -+ -+ case FE_READ_BER: -+ return mt312_read_bercnt(i2c, arg); -+ -+ case FE_READ_SIGNAL_STRENGTH: -+ return mt312_read_agc(i2c, arg); -+ -+ case FE_READ_SNR: -+ return mt312_read_snr(i2c, arg); -+ -+ case FE_READ_UNCORRECTED_BLOCKS: -+ return mt312_read_ubc(i2c, arg); -+ -+ case FE_SET_FRONTEND: -+ return mt312_set_frontend(i2c, arg, (long) fe->data); -+ -+ case FE_GET_FRONTEND: -+ return mt312_get_frontend(i2c, arg); -+ -+ case FE_GET_EVENT: -+ return -EOPNOTSUPP; -+ -+ case FE_SLEEP: -+ return mt312_sleep(i2c); -+ -+ case FE_INIT: -+ return mt312_init(i2c, (long) fe->data); -+ -+ case FE_RESET: -+ return mt312_reset(i2c, 0); -+ -+ default: -+ return -ENOIOCTLCMD; -+ } -+ -+ return 0; -+} -+ -+static int mt312_attach(struct dvb_i2c_bus *i2c) -+{ -+ int ret; -+ u8 id; -+ -+ if ((ret = mt312_readreg(i2c, ID, &id)) < 0) -+ return ret; -+ -+ if ((id != ID_VP310) && (id != ID_MT312)) -+ return -ENODEV; -+ -+ return dvb_register_frontend(mt312_ioctl, i2c, (void *) (long) id, -+ &mt312_info); -+} -+ -+static void mt312_detach(struct dvb_i2c_bus *i2c) -+{ -+ dvb_unregister_frontend(mt312_ioctl, i2c); -+} -+ -+static int __init mt312_module_init(void) -+{ -+ return dvb_register_i2c_device(THIS_MODULE, mt312_attach, mt312_detach); -+} -+ -+static void __exit mt312_module_exit(void) -+{ -+ dvb_unregister_i2c_device(mt312_attach); -+} -+ -+module_init(mt312_module_init); -+module_exit(mt312_module_exit); -+ -+MODULE_DESCRIPTION("MT312 Satellite Channel Decoder Driver"); -+MODULE_AUTHOR("Andreas Oberritter "); -+MODULE_LICENSE("GPL"); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/mt312.h 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,162 @@ -+/* -+ Driver for Zarlink MT312 QPSK Frontend -+ -+ Copyright (C) 2003 Andreas Oberritter -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+*/ -+ -+#ifndef _DVB_FRONTENDS_MT312 -+#define _DVB_FRONTENDS_MT312 -+ -+enum mt312_reg_addr { -+ QPSK_INT_H = 0, -+ QPSK_INT_M = 1, -+ QPSK_INT_L = 2, -+ FEC_INT = 3, -+ QPSK_STAT_H = 4, -+ QPSK_STAT_L = 5, -+ FEC_STATUS = 6, -+ LNB_FREQ_H = 7, -+ LNB_FREQ_L = 8, -+ M_SNR_H = 9, -+ M_SNR_L = 10, -+ VIT_ERRCNT_H = 11, -+ VIT_ERRCNT_M = 12, -+ VIT_ERRCNT_L = 13, -+ RS_BERCNT_H = 14, -+ RS_BERCNT_M = 15, -+ RS_BERCNT_L = 16, -+ RS_UBC_H = 17, -+ RS_UBC_L = 18, -+ SIG_LEVEL = 19, -+ GPP_CTRL = 20, -+ RESET = 21, -+ DISEQC_MODE = 22, -+ SYM_RATE_H = 23, -+ SYM_RATE_L = 24, -+ VIT_MODE = 25, -+ QPSK_CTRL = 26, -+ GO = 27, -+ IE_QPSK_H = 28, -+ IE_QPSK_M = 29, -+ IE_QPSK_L = 30, -+ IE_FEC = 31, -+ QPSK_STAT_EN = 32, -+ FEC_STAT_EN = 33, -+ SYS_CLK = 34, -+ DISEQC_RATIO = 35, -+ DISEQC_INSTR = 36, -+ FR_LIM = 37, -+ FR_OFF = 38, -+ AGC_CTRL = 39, -+ AGC_INIT = 40, -+ AGC_REF = 41, -+ AGC_MAX = 42, -+ AGC_MIN = 43, -+ AGC_LK_TH = 44, -+ TS_AGC_LK_TH = 45, -+ AGC_PWR_SET = 46, -+ QPSK_MISC = 47, -+ SNR_THS_LOW = 48, -+ SNR_THS_HIGH = 49, -+ TS_SW_RATE = 50, -+ TS_SW_LIM_L = 51, -+ TS_SW_LIM_H = 52, -+ CS_SW_RATE_1 = 53, -+ CS_SW_RATE_2 = 54, -+ CS_SW_RATE_3 = 55, -+ CS_SW_RATE_4 = 56, -+ CS_SW_LIM = 57, -+ TS_LPK = 58, -+ TS_LPK_M = 59, -+ TS_LPK_L = 60, -+ CS_KPROP_H = 61, -+ CS_KPROP_L = 62, -+ CS_KINT_H = 63, -+ CS_KINT_L = 64, -+ QPSK_SCALE = 65, -+ TLD_OUTCLK_TH = 66, -+ TLD_INCLK_TH = 67, -+ FLD_TH = 68, -+ PLD_OUTLK3 = 69, -+ PLD_OUTLK2 = 70, -+ PLD_OUTLK1 = 71, -+ PLD_OUTLK0 = 72, -+ PLD_INLK3 = 73, -+ PLD_INLK2 = 74, -+ PLD_INLK1 = 75, -+ PLD_INLK0 = 76, -+ PLD_ACC_TIME = 77, -+ SWEEP_PAR = 78, -+ STARTUP_TIME = 79, -+ LOSSLOCK_TH = 80, -+ FEC_LOCK_TM = 81, -+ LOSSLOCK_TM = 82, -+ VIT_ERRPER_H = 83, -+ VIT_ERRPER_M = 84, -+ VIT_ERRPER_L = 85, -+ VIT_SETUP = 86, -+ VIT_REF0 = 87, -+ VIT_REF1 = 88, -+ VIT_REF2 = 89, -+ VIT_REF3 = 90, -+ VIT_REF4 = 91, -+ VIT_REF5 = 92, -+ VIT_REF6 = 93, -+ VIT_MAXERR = 94, -+ BA_SETUPT = 95, -+ OP_CTRL = 96, -+ FEC_SETUP = 97, -+ PROG_SYNC = 98, -+ AFC_SEAR_TH = 99, -+ CSACC_DIF_TH = 100, -+ QPSK_LK_CT = 101, -+ QPSK_ST_CT = 102, -+ MON_CTRL = 103, -+ QPSK_RESET = 104, -+ QPSK_TST_CT = 105, -+ QPSK_TST_ST = 106, -+ TEST_R = 107, -+ AGC_H = 108, -+ AGC_M = 109, -+ AGC_L = 110, -+ FREQ_ERR1_H = 111, -+ FREQ_ERR1_M = 112, -+ FREQ_ERR1_L = 113, -+ FREQ_ERR2_H = 114, -+ FREQ_ERR2_L = 115, -+ SYM_RAT_OP_H = 116, -+ SYM_RAT_OP_L = 117, -+ DESEQC2_INT = 118, -+ DISEQC2_STAT = 119, -+ DISEQC2_FIFO = 120, -+ DISEQC2_CTRL1 = 121, -+ DISEQC2_CTRL2 = 122, -+ MONITOR_H = 123, -+ MONITOR_L = 124, -+ TEST_MODE = 125, -+ ID = 126, -+ CONFIG = 127 -+}; -+ -+enum mt312_model_id { -+ ID_VP310 = 1, -+ ID_MT312 = 3 -+}; -+ -+#endif /* DVB_FRONTENDS_MT312 */ ---- linux-2.6.0-test1/drivers/media/dvb/frontends/nxt6000.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/nxt6000.c 2003-07-19 17:03:49.000000000 -0700 -@@ -6,8 +6,10 @@ - - Alps TDME7 (Tuner: MITEL SP5659) - Alps TDED4 (Tuner: TI ALP510, external Nxt6000) -+ Comtech DVBT-6k07 (PLL IC: SP5730) - - Copyright (C) 2002-2003 Florian Schirmer -+ Copyright (C) 2003 Paul Andreassen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -78,6 +80,7 @@ struct nxt6000_config { - - #define TUNER_TYPE_ALP510 0 - #define TUNER_TYPE_SP5659 1 -+#define TUNER_TYPE_SP5730 2 - - #define FE2NXT(fe) ((struct nxt6000_config *)&(fe->data)) - #define FREQ2DIV(freq) ((freq + 36166667) / 166667) -@@ -212,6 +215,39 @@ static int alp510_set_tv_freq(struct dvb - - } - -+static int sp5730_set_tv_freq(struct dvb_frontend *fe, u32 freq) -+{ -+ -+ u8 buf[4]; -+ struct nxt6000_config *nxt = FE2NXT(fe); -+ -+ buf[0] = (FREQ2DIV(freq) >> 8) & 0x7F; -+ buf[1] = FREQ2DIV(freq) & 0xFF; -+ buf[2] = 0x93; -+ -+ if ((freq >= 51000000) && (freq < 132100000)) -+ buf[3] = 0x05; -+ else if ((freq >= 132100000) && (freq < 143000000)) -+ buf[3] = 0x45; -+ else if ((freq >= 146000000) && (freq < 349100000)) -+ buf[3] = 0x06; -+ else if ((freq >= 349100000) && (freq < 397100000)) -+ buf[3] = 0x46; -+ else if ((freq >= 397100000) && (freq < 426000000)) -+ buf[3] = 0x86; -+ else if ((freq >= 430000000) && (freq < 659100000)) -+ buf[3] = 0x03; -+ else if ((freq >= 659100000) && (freq < 759100000)) -+ buf[3] = 0x43; -+ else if ((freq >= 759100000) && (freq < 858000000)) -+ buf[3] = 0x83; -+ else -+ return -EINVAL; -+ -+ return pll_write(fe->i2c, nxt->demod_addr, nxt->tuner_addr, buf, 4); -+ -+} -+ - static void nxt6000_reset(struct dvb_frontend *fe) - { - -@@ -756,6 +792,13 @@ static int nxt6000_ioctl(struct dvb_fron - - break; - -+ case TUNER_TYPE_SP5730: -+ -+ if ((result = sp5730_set_tv_freq(fe, param->frequency)) < 0) -+ return result; -+ -+ break; -+ - default: - - return -EFAULT; -@@ -816,6 +859,14 @@ static int nxt6000_attach(struct dvb_i2c - - dprintk("nxt6000: detected MITEL SP5659 tuner at 0x%02X\n", nxt.tuner_addr); - -+ } else if (pll_write(i2c, demod_addr_tbl[addr_nr], 0xC0, NULL, 0) == 0) { -+ -+ nxt.tuner_addr = 0xC0; -+ nxt.tuner_type = TUNER_TYPE_SP5730; -+ nxt.clock_inversion = 0; -+ -+ dprintk("nxt6000: detected SP5730 tuner at 0x%02X\n", nxt.tuner_addr); -+ - } else { - - printk("nxt6000: unable to detect tuner\n"); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/tda1004x.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,1158 @@ -+ /* -+ Driver for Philips tda1004x OFDM Frontend -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+ */ -+ -+/* -+ This driver needs a copy of the DLL "ttlcdacc.dll" from the Haupauge or Technotrend -+ windows driver saved as '/etc/dvb/tda1004x.mc'. -+ You can also pass the complete file name with the module parameter 'tda1004x_firmware'. -+ -+ Currently the DLL from v2.15a of the technotrend driver is supported. Other versions can -+ be added reasonably painlessly. -+ -+ Windows driver URL: http://www.technotrend.de/ -+ */ -+ -+ -+#define __KERNEL_SYSCALLS__ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "dvb_frontend.h" -+#include "dvb_functions.h" -+ -+#ifndef CONFIG_TDA1004X_MC_LOCATION -+#define CONFIG_TDA1004X_MC_LOCATION "/etc/dvb/tda1004x.mc" -+#endif -+ -+static int tda1004x_debug = 0; -+static char *tda1004x_firmware = CONFIG_TDA1004X_MC_LOCATION; -+ -+ -+#define TDA10045H_ADDRESS 0x08 -+#define TD1344_ADDRESS 0x61 -+#define TDM1316L_ADDRESS 0x63 -+#define MC44BC374_ADDRESS 0x65 -+ -+#define TDA1004X_CHIPID 0x00 -+#define TDA1004X_AUTO 0x01 -+#define TDA1004X_IN_CONF1 0x02 -+#define TDA1004X_IN_CONF2 0x03 -+#define TDA1004X_OUT_CONF1 0x04 -+#define TDA1004X_OUT_CONF2 0x05 -+#define TDA1004X_STATUS_CD 0x06 -+#define TDA1004X_CONFC4 0x07 -+#define TDA1004X_DSSPARE2 0x0C -+#define TDA1004X_CODE_IN 0x0D -+#define TDA1004X_FWPAGE 0x0E -+#define TDA1004X_SCAN_CPT 0x10 -+#define TDA1004X_DSP_CMD 0x11 -+#define TDA1004X_DSP_ARG 0x12 -+#define TDA1004X_DSP_DATA1 0x13 -+#define TDA1004X_DSP_DATA2 0x14 -+#define TDA1004X_CONFADC1 0x15 -+#define TDA1004X_CONFC1 0x16 -+#define TDA1004X_SIGNAL_STRENGTH 0x1a -+#define TDA1004X_SNR 0x1c -+#define TDA1004X_REG1E 0x1e -+#define TDA1004X_REG1F 0x1f -+#define TDA1004X_CBER_RESET 0x20 -+#define TDA1004X_CBER_MSB 0x21 -+#define TDA1004X_CBER_LSB 0x22 -+#define TDA1004X_CVBER_LUT 0x23 -+#define TDA1004X_VBER_MSB 0x24 -+#define TDA1004X_VBER_MID 0x25 -+#define TDA1004X_VBER_LSB 0x26 -+#define TDA1004X_UNCOR 0x27 -+#define TDA1004X_CONFPLL_P 0x2D -+#define TDA1004X_CONFPLL_M_MSB 0x2E -+#define TDA1004X_CONFPLL_M_LSB 0x2F -+#define TDA1004X_CONFPLL_N 0x30 -+#define TDA1004X_UNSURW_MSB 0x31 -+#define TDA1004X_UNSURW_LSB 0x32 -+#define TDA1004X_WREF_MSB 0x33 -+#define TDA1004X_WREF_MID 0x34 -+#define TDA1004X_WREF_LSB 0x35 -+#define TDA1004X_MUXOUT 0x36 -+#define TDA1004X_CONFADC2 0x37 -+#define TDA1004X_IOFFSET 0x38 -+ -+#define dprintk if (tda1004x_debug) printk -+ -+static struct dvb_frontend_info tda10045h_info = { -+ .name = "Philips TDA10045H", -+ .type = FE_OFDM, -+ .frequency_min = 51000000, -+ .frequency_max = 858000000, -+ .frequency_stepsize = 166667, -+ .caps = FE_CAN_INVERSION_AUTO | -+ FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | -+ FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | -+ FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | -+ FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO -+}; -+ -+#pragma pack(1) -+struct tda1004x_state { -+ u8 tda1004x_address; -+ u8 tuner_address; -+ u8 initialised:1; -+}; -+#pragma pack() -+ -+struct fwinfo { -+ int file_size; -+ int fw_offset; -+ int fw_size; -+}; -+static struct fwinfo tda10045h_fwinfo[] = { {.file_size = 286720,.fw_offset = 0x34cc5,.fw_size = 30555} }; -+static int tda10045h_fwinfo_count = sizeof(tda10045h_fwinfo) / sizeof(struct fwinfo); -+ -+static int errno; -+ -+ -+static int tda1004x_write_byte(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state, int reg, int data) -+{ -+ int ret; -+ u8 buf[] = { reg, data }; -+ struct i2c_msg msg = { .addr=0, .flags=0, .buf=buf, .len=2 }; -+ -+ dprintk("%s: reg=0x%x, data=0x%x\n", __FUNCTION__, reg, data); -+ -+ msg.addr = tda_state->tda1004x_address; -+ ret = i2c->xfer(i2c, &msg, 1); -+ -+ if (ret != 1) -+ dprintk("%s: error reg=0x%x, data=0x%x, ret=%i\n", -+ __FUNCTION__, reg, data, ret); -+ -+ dprintk("%s: success reg=0x%x, data=0x%x, ret=%i\n", __FUNCTION__, -+ reg, data, ret); -+ return (ret != 1) ? -1 : 0; -+} -+ -+static int tda1004x_read_byte(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state, int reg) -+{ -+ int ret; -+ u8 b0[] = { reg }; -+ u8 b1[] = { 0 }; -+ struct i2c_msg msg[] = {{ .addr=0, .flags=0, .buf=b0, .len=1}, -+ { .addr=0, .flags=I2C_M_RD, .buf=b1, .len = 1}}; -+ -+ dprintk("%s: reg=0x%x\n", __FUNCTION__, reg); -+ -+ msg[0].addr = tda_state->tda1004x_address; -+ msg[1].addr = tda_state->tda1004x_address; -+ ret = i2c->xfer(i2c, msg, 2); -+ -+ if (ret != 2) { -+ dprintk("%s: error reg=0x%x, ret=%i\n", __FUNCTION__, reg, -+ ret); -+ return -1; -+ } -+ -+ dprintk("%s: success reg=0x%x, data=0x%x, ret=%i\n", __FUNCTION__, -+ reg, b1[0], ret); -+ return b1[0]; -+} -+ -+static int tda1004x_write_mask(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state, int reg, int mask, int data) -+{ -+ int val; -+ dprintk("%s: reg=0x%x, mask=0x%x, data=0x%x\n", __FUNCTION__, reg, -+ mask, data); -+ -+ // read a byte and check -+ val = tda1004x_read_byte(i2c, tda_state, reg); -+ if (val < 0) -+ return val; -+ -+ // mask if off -+ val = val & ~mask; -+ val |= data & 0xff; -+ -+ // write it out again -+ return tda1004x_write_byte(i2c, tda_state, reg, val); -+} -+ -+static int tda1004x_write_buf(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state, int reg, unsigned char *buf, int len) -+{ -+ int i; -+ int result; -+ -+ dprintk("%s: reg=0x%x, len=0x%x\n", __FUNCTION__, reg, len); -+ -+ result = 0; -+ for (i = 0; i < len; i++) { -+ result = tda1004x_write_byte(i2c, tda_state, reg + i, buf[i]); -+ if (result != 0) -+ break; -+ } -+ -+ return result; -+} -+ -+static int tda1004x_enable_tuner_i2c(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state) -+{ -+ int result; -+ dprintk("%s\n", __FUNCTION__); -+ -+ result = tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC4, 2, 2); -+ dvb_delay(1); -+ return result; -+} -+ -+static int tda1004x_disable_tuner_i2c(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state) -+{ -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ return tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC4, 2, 0); -+} -+ -+ -+static int tda10045h_set_bandwidth(struct dvb_i2c_bus *i2c, -+ struct tda1004x_state *tda_state, -+ fe_bandwidth_t bandwidth) -+{ -+ static u8 bandwidth_6mhz[] = { 0x02, 0x00, 0x3d, 0x00, 0x60, 0x1e, 0xa7, 0x45, 0x4f }; -+ static u8 bandwidth_7mhz[] = { 0x02, 0x00, 0x37, 0x00, 0x4a, 0x2f, 0x6d, 0x76, 0xdb }; -+ static u8 bandwidth_8mhz[] = { 0x02, 0x00, 0x3d, 0x00, 0x48, 0x17, 0x89, 0xc7, 0x14 }; -+ -+ switch (bandwidth) { -+ case BANDWIDTH_6_MHZ: -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_DSSPARE2, 0x14); -+ tda1004x_write_buf(i2c, tda_state, TDA1004X_CONFPLL_P, bandwidth_6mhz, sizeof(bandwidth_6mhz)); -+ break; -+ -+ case BANDWIDTH_7_MHZ: -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_DSSPARE2, 0x80); -+ tda1004x_write_buf(i2c, tda_state, TDA1004X_CONFPLL_P, bandwidth_7mhz, sizeof(bandwidth_7mhz)); -+ break; -+ -+ case BANDWIDTH_8_MHZ: -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_DSSPARE2, 0x14); -+ tda1004x_write_buf(i2c, tda_state, TDA1004X_CONFPLL_P, bandwidth_8mhz, sizeof(bandwidth_8mhz)); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_IOFFSET, 0); -+ -+ // done -+ return 0; -+} -+ -+ -+static int tda1004x_init(struct dvb_i2c_bus *i2c, struct tda1004x_state *tda_state) -+{ -+ u8 fw_buf[65]; -+ struct i2c_msg fw_msg = {.addr = 0,.flags = 0,.buf = fw_buf,.len = 0 }; -+ struct i2c_msg tuner_msg = {.addr = 0,.flags = 0,.buf = 0,.len = 0 }; -+ unsigned char *firmware = NULL; -+ int filesize; -+ int fd; -+ int fwinfo_idx; -+ int fw_size = 0; -+ int fw_pos; -+ int tx_size; -+ static u8 disable_mc44BC374c[] = { 0x1d, 0x74, 0xa0, 0x68 }; -+ mm_segment_t fs = get_fs(); -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // Load the firmware -+ set_fs(get_ds()); -+ fd = open(tda1004x_firmware, 0, 0); -+ if (fd < 0) { -+ printk("%s: Unable to open firmware %s\n", __FUNCTION__, -+ tda1004x_firmware); -+ return -EIO; -+ } -+ filesize = lseek(fd, 0L, 2); -+ if (filesize <= 0) { -+ printk("%s: Firmware %s is empty\n", __FUNCTION__, -+ tda1004x_firmware); -+ sys_close(fd); -+ return -EIO; -+ } -+ -+ // find extraction parameters -+ for (fwinfo_idx = 0; fwinfo_idx < tda10045h_fwinfo_count; fwinfo_idx++) { -+ if (tda10045h_fwinfo[fwinfo_idx].file_size == filesize) -+ break; -+ } -+ if (fwinfo_idx >= tda10045h_fwinfo_count) { -+ printk("%s: Unsupported firmware %s\n", __FUNCTION__, tda1004x_firmware); -+ sys_close(fd); -+ return -EIO; -+ } -+ fw_size = tda10045h_fwinfo[fwinfo_idx].fw_size; -+ -+ // allocate buffer for it -+ firmware = vmalloc(fw_size); -+ if (firmware == NULL) { -+ printk("%s: Out of memory loading firmware\n", -+ __FUNCTION__); -+ sys_close(fd); -+ return -EIO; -+ } -+ -+ // read it! -+ lseek(fd, tda10045h_fwinfo[fwinfo_idx].fw_offset, 0); -+ if (read(fd, firmware, fw_size) != fw_size) { -+ printk("%s: Failed to read firmware\n", __FUNCTION__); -+ vfree(firmware); -+ sys_close(fd); -+ return -EIO; -+ } -+ sys_close(fd); -+ set_fs(fs); -+ -+ // Disable the MC44BC374C -+ tda1004x_enable_tuner_i2c(i2c, tda_state); -+ tuner_msg.addr = MC44BC374_ADDRESS; -+ tuner_msg.buf = disable_mc44BC374c; -+ tuner_msg.len = sizeof(disable_mc44BC374c); -+ if (i2c->xfer(i2c, &tuner_msg, 1) != 1) { -+ i2c->xfer(i2c, &tuner_msg, 1); -+ } -+ tda1004x_disable_tuner_i2c(i2c, tda_state); -+ -+ // set some valid bandwith parameters -+ switch(tda_state->tda1004x_address) { -+ case TDA10045H_ADDRESS: -+ tda10045h_set_bandwidth(i2c, tda_state, BANDWIDTH_8_MHZ); -+ break; -+ } -+ dvb_delay(500); -+ -+ // do the firmware upload -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_FWPAGE, 0); -+ fw_msg.addr = tda_state->tda1004x_address; -+ fw_pos = 0; -+ while (fw_pos != fw_size) { -+ // work out how much to send this time -+ tx_size = fw_size - fw_pos; -+ if (tx_size > 64) { -+ tx_size = 64; -+ } -+ // send the chunk -+ fw_buf[0] = TDA1004X_CODE_IN; -+ memcpy(fw_buf + 1, firmware + fw_pos, tx_size); -+ fw_msg.len = tx_size + 1; -+ if (i2c->xfer(i2c, &fw_msg, 1) != 1) { -+ vfree(firmware); -+ return -EIO; -+ } -+ fw_pos += tx_size; -+ -+ dprintk("%s: fw_pos=0x%x\n", __FUNCTION__, fw_pos); -+ } -+ dvb_delay(100); -+ vfree(firmware); -+ -+ // Initialise the DSP and check upload was OK -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC4, 0x10, 0); -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_DSP_CMD, 0x67); -+ if ((tda1004x_read_byte(i2c, tda_state, TDA1004X_DSP_DATA1) != 0x67) || -+ (tda1004x_read_byte(i2c, tda_state, TDA1004X_DSP_DATA2) != 0x2c)) { -+ printk("%s: firmware upload failed!\n", __FUNCTION__); -+ return -EIO; -+ } -+ -+ // tda setup -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 8, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 0x10, 0x10); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF2, 0xC0, 0x0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC4, 0x20, 0); -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_CONFADC1, 0x2e); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC1, 0x80, 0x80); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC1, 0x40, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC1, 0x10, 0); -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_REG1E, 0); -+ tda1004x_write_byte(i2c, tda_state, TDA1004X_REG1F, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_VBER_MSB, 0xe0, 0xa0); -+ -+ // done -+ return 0; -+} -+ -+static int tda1004x_encode_fec(int fec) -+{ -+ // convert known FEC values -+ switch (fec) { -+ case FEC_1_2: -+ return 0; -+ case FEC_2_3: -+ return 1; -+ case FEC_3_4: -+ return 2; -+ case FEC_5_6: -+ return 3; -+ case FEC_7_8: -+ return 4; -+ } -+ -+ // unsupported -+ return -EINVAL; -+} -+ -+static int tda1004x_decode_fec(int tdafec) -+{ -+ // convert known FEC values -+ switch (tdafec) { -+ case 0: -+ return FEC_1_2; -+ case 1: -+ return FEC_2_3; -+ case 2: -+ return FEC_3_4; -+ case 3: -+ return FEC_5_6; -+ case 4: -+ return FEC_7_8; -+ } -+ -+ // unsupported -+ return -1; -+} -+ -+static int tda1004x_set_frequency(struct dvb_i2c_bus *i2c, -+ struct tda1004x_state *tda_state, -+ struct dvb_frontend_parameters *fe_params) -+{ -+ u8 tuner_buf[4]; -+ struct i2c_msg tuner_msg = {.addr=0, .flags=0, .buf=tuner_buf, .len=sizeof(tuner_buf) }; -+ int tuner_frequency; -+ u8 band, cp, filter; -+ int counter, counter2; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // setup the frequency buffer -+ switch (tda_state->tuner_address) { -+ case TD1344_ADDRESS: -+ -+ // setup tuner buffer -+ tuner_frequency = -+ (((fe_params->frequency / 1000) * 6) + 217502) / 1000; -+ tuner_buf[0] = tuner_frequency >> 8; -+ tuner_buf[1] = tuner_frequency & 0xff; -+ tuner_buf[2] = 0x88; -+ if (fe_params->frequency < 550000000) { -+ tuner_buf[3] = 0xab; -+ } else { -+ tuner_buf[3] = 0xeb; -+ } -+ -+ // tune it -+ tda1004x_enable_tuner_i2c(i2c, tda_state); -+ tuner_msg.addr = tda_state->tuner_address; -+ tuner_msg.len = 4; -+ i2c->xfer(i2c, &tuner_msg, 1); -+ -+ // wait for it to finish -+ tuner_msg.len = 1; -+ tuner_msg.flags = I2C_M_RD; -+ counter = 0; -+ counter2 = 0; -+ while (counter++ < 100) { -+ if (i2c->xfer(i2c, &tuner_msg, 1) == 1) { -+ if (tuner_buf[0] & 0x40) { -+ counter2++; -+ } else { -+ counter2 = 0; -+ } -+ } -+ -+ if (counter2 > 10) { -+ break; -+ } -+ } -+ tda1004x_disable_tuner_i2c(i2c, tda_state); -+ break; -+ -+ case TDM1316L_ADDRESS: -+ // determine charge pump -+ tuner_frequency = fe_params->frequency + 36130000; -+ if (tuner_frequency < 87000000) { -+ return -EINVAL; -+ } else if (tuner_frequency < 130000000) { -+ cp = 3; -+ } else if (tuner_frequency < 160000000) { -+ cp = 5; -+ } else if (tuner_frequency < 200000000) { -+ cp = 6; -+ } else if (tuner_frequency < 290000000) { -+ cp = 3; -+ } else if (tuner_frequency < 420000000) { -+ cp = 5; -+ } else if (tuner_frequency < 480000000) { -+ cp = 6; -+ } else if (tuner_frequency < 620000000) { -+ cp = 3; -+ } else if (tuner_frequency < 830000000) { -+ cp = 5; -+ } else if (tuner_frequency < 895000000) { -+ cp = 7; -+ } else { -+ return -EINVAL; -+ } -+ -+ // determine band -+ if (fe_params->frequency < 49000000) { -+ return -EINVAL; -+ } else if (fe_params->frequency < 159000000) { -+ band = 1; -+ } else if (fe_params->frequency < 444000000) { -+ band = 2; -+ } else if (fe_params->frequency < 861000000) { -+ band = 4; -+ } else { -+ return -EINVAL; -+ } -+ -+ // work out filter -+ switch (fe_params->u.ofdm.bandwidth) { -+ case BANDWIDTH_6_MHZ: -+ // 6 MHz isn't supported directly, but set this to -+ // the 8 MHz setting in case we can fiddle it later -+ filter = 1; -+ break; -+ -+ case BANDWIDTH_7_MHZ: -+ filter = 0; -+ break; -+ -+ case BANDWIDTH_8_MHZ: -+ filter = 1; -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ // calculate tuner parameters -+ tuner_frequency = -+ (((fe_params->frequency / 1000) * 6) + 217280) / 1000; -+ tuner_buf[0] = tuner_frequency >> 8; -+ tuner_buf[1] = tuner_frequency & 0xff; -+ tuner_buf[2] = 0xca; -+ tuner_buf[3] = (cp << 5) | (filter << 3) | band; -+ -+ // tune it -+ tda1004x_enable_tuner_i2c(i2c, tda_state); -+ tuner_msg.addr = tda_state->tuner_address; -+ tuner_msg.len = 4; -+ if (i2c->xfer(i2c, &tuner_msg, 1) != 1) { -+ return -EIO; -+ } -+ dvb_delay(1); -+ tda1004x_disable_tuner_i2c(i2c, tda_state); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ dprintk("%s: success\n", __FUNCTION__); -+ -+ // done -+ return 0; -+} -+ -+static int tda1004x_set_fe(struct dvb_i2c_bus *i2c, -+ struct tda1004x_state *tda_state, -+ struct dvb_frontend_parameters *fe_params) -+{ -+ int tmp; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ -+ // set frequency -+ tmp = tda1004x_set_frequency(i2c, tda_state, fe_params); -+ if (tmp < 0) -+ return tmp; -+ -+ // hardcoded to use auto as much as possible -+ fe_params->u.ofdm.code_rate_HP = FEC_AUTO; -+ fe_params->u.ofdm.guard_interval = GUARD_INTERVAL_AUTO; -+ fe_params->u.ofdm.transmission_mode = TRANSMISSION_MODE_AUTO; -+ -+ // Set standard params.. or put them to auto -+ if ((fe_params->u.ofdm.code_rate_HP == FEC_AUTO) || -+ (fe_params->u.ofdm.code_rate_LP == FEC_AUTO) || -+ (fe_params->u.ofdm.constellation == QAM_AUTO) || -+ (fe_params->u.ofdm.hierarchy_information == HIERARCHY_AUTO)) { -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 1, 1); // enable auto -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x03, 0); // turn off constellation bits -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x60, 0); // turn off hierarchy bits -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF2, 0x3f, 0); // turn off FEC bits -+ } else { -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 1, 0); // disable auto -+ -+ // set HP FEC -+ tmp = tda1004x_encode_fec(fe_params->u.ofdm.code_rate_HP); -+ if (tmp < 0) return tmp; -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF2, 7, tmp); -+ -+ // set LP FEC -+ if (fe_params->u.ofdm.code_rate_LP != FEC_NONE) { -+ tmp = tda1004x_encode_fec(fe_params->u.ofdm.code_rate_LP); -+ if (tmp < 0) return tmp; -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF2, 0x38, tmp << 3); -+ } -+ -+ // set constellation -+ switch (fe_params->u.ofdm.constellation) { -+ case QPSK: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 3, 0); -+ break; -+ -+ case QAM_16: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 3, 1); -+ break; -+ -+ case QAM_64: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 3, 2); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ // set hierarchy -+ switch (fe_params->u.ofdm.hierarchy_information) { -+ case HIERARCHY_NONE: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x60, 0 << 5); -+ break; -+ -+ case HIERARCHY_1: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x60, 1 << 5); -+ break; -+ -+ case HIERARCHY_2: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x60, 2 << 5); -+ break; -+ -+ case HIERARCHY_4: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x60, 3 << 5); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ } -+ -+ // set bandwidth -+ switch(tda_state->tda1004x_address) { -+ case TDA10045H_ADDRESS: -+ tda10045h_set_bandwidth(i2c, tda_state, fe_params->u.ofdm.bandwidth); -+ break; -+ } -+ -+ // set inversion -+ switch (fe_params->inversion) { -+ case INVERSION_OFF: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC1, 0x20, 0); -+ break; -+ -+ case INVERSION_ON: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC1, 0x20, 0x20); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ // set guard interval -+ switch (fe_params->u.ofdm.guard_interval) { -+ case GUARD_INTERVAL_1_32: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 2, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x0c, 0 << 2); -+ break; -+ -+ case GUARD_INTERVAL_1_16: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 2, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x0c, 1 << 2); -+ break; -+ -+ case GUARD_INTERVAL_1_8: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 2, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x0c, 2 << 2); -+ break; -+ -+ case GUARD_INTERVAL_1_4: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 2, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x0c, 3 << 2); -+ break; -+ -+ case GUARD_INTERVAL_AUTO: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 2, 2); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x0c, 0 << 2); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ // set transmission mode -+ switch (fe_params->u.ofdm.transmission_mode) { -+ case TRANSMISSION_MODE_2K: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 4, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x10, 0 << 4); -+ break; -+ -+ case TRANSMISSION_MODE_8K: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 4, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x10, 1 << 4); -+ break; -+ -+ case TRANSMISSION_MODE_AUTO: -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_AUTO, 4, 4); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_IN_CONF1, 0x10, 0); -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ // reset DSP -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC4, 8, 8); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC4, 8, 0); -+ dvb_delay(10); -+ -+ // done -+ return 0; -+} -+ -+ -+static int tda1004x_get_fe(struct dvb_i2c_bus *i2c, struct tda1004x_state* tda_state, struct dvb_frontend_parameters *fe_params) -+{ -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // inversion status -+ fe_params->inversion = INVERSION_OFF; -+ if (tda1004x_read_byte(i2c, tda_state, TDA1004X_CONFC1) & 0x20) { -+ fe_params->inversion = INVERSION_ON; -+ } -+ -+ // bandwidth -+ switch (tda1004x_read_byte(i2c, tda_state, TDA1004X_WREF_LSB)) { -+ case 0x14: -+ fe_params->u.ofdm.bandwidth = BANDWIDTH_8_MHZ; -+ break; -+ case 0xdb: -+ fe_params->u.ofdm.bandwidth = BANDWIDTH_7_MHZ; -+ break; -+ case 0x4f: -+ fe_params->u.ofdm.bandwidth = BANDWIDTH_6_MHZ; -+ break; -+ } -+ -+ // FEC -+ fe_params->u.ofdm.code_rate_HP = -+ tda1004x_decode_fec(tda1004x_read_byte(i2c, tda_state, TDA1004X_OUT_CONF2) & 7); -+ fe_params->u.ofdm.code_rate_LP = -+ tda1004x_decode_fec((tda1004x_read_byte(i2c, tda_state, TDA1004X_OUT_CONF2) >> 3) & 7); -+ -+ // constellation -+ switch (tda1004x_read_byte(i2c, tda_state, TDA1004X_OUT_CONF1) & 3) { -+ case 0: -+ fe_params->u.ofdm.constellation = QPSK; -+ break; -+ case 1: -+ fe_params->u.ofdm.constellation = QAM_16; -+ break; -+ case 2: -+ fe_params->u.ofdm.constellation = QAM_64; -+ break; -+ } -+ -+ // transmission mode -+ fe_params->u.ofdm.transmission_mode = TRANSMISSION_MODE_2K; -+ if (tda1004x_read_byte(i2c, tda_state, TDA1004X_OUT_CONF1) & 0x10) { -+ fe_params->u.ofdm.transmission_mode = TRANSMISSION_MODE_8K; -+ } -+ -+ // guard interval -+ switch ((tda1004x_read_byte(i2c, tda_state, TDA1004X_OUT_CONF1) & 0x0c) >> 2) { -+ case 0: -+ fe_params->u.ofdm.guard_interval = GUARD_INTERVAL_1_32; -+ break; -+ case 1: -+ fe_params->u.ofdm.guard_interval = GUARD_INTERVAL_1_16; -+ break; -+ case 2: -+ fe_params->u.ofdm.guard_interval = GUARD_INTERVAL_1_8; -+ break; -+ case 3: -+ fe_params->u.ofdm.guard_interval = GUARD_INTERVAL_1_4; -+ break; -+ } -+ -+ // hierarchy -+ switch ((tda1004x_read_byte(i2c, tda_state, TDA1004X_OUT_CONF1) & 0x60) >> 5) { -+ case 0: -+ fe_params->u.ofdm.hierarchy_information = HIERARCHY_NONE; -+ break; -+ case 1: -+ fe_params->u.ofdm.hierarchy_information = HIERARCHY_1; -+ break; -+ case 2: -+ fe_params->u.ofdm.hierarchy_information = HIERARCHY_2; -+ break; -+ case 3: -+ fe_params->u.ofdm.hierarchy_information = HIERARCHY_4; -+ break; -+ } -+ -+ // done -+ return 0; -+} -+ -+ -+static int tda1004x_read_status(struct dvb_i2c_bus *i2c, struct tda1004x_state* tda_state, fe_status_t * fe_status) -+{ -+ int status; -+ int cber; -+ int vber; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // read status -+ status = tda1004x_read_byte(i2c, tda_state, TDA1004X_STATUS_CD); -+ if (status == -1) { -+ return -EIO; -+ } -+ -+ // decode -+ *fe_status = 0; -+ if (status & 4) *fe_status |= FE_HAS_SIGNAL; -+ if (status & 2) *fe_status |= FE_HAS_CARRIER; -+ if (status & 8) *fe_status |= FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK; -+ -+ // if we don't already have VITERBI (i.e. not LOCKED), see if the viterbi -+ // is getting anything valid -+ if (!(*fe_status & FE_HAS_VITERBI)) { -+ // read the CBER -+ cber = tda1004x_read_byte(i2c, tda_state, TDA1004X_CBER_LSB); -+ if (cber == -1) return -EIO; -+ status = tda1004x_read_byte(i2c, tda_state, TDA1004X_CBER_MSB); -+ if (status == -1) return -EIO; -+ cber |= (status << 8); -+ tda1004x_read_byte(i2c, tda_state, TDA1004X_CBER_RESET); -+ -+ if (cber != 65535) { -+ *fe_status |= FE_HAS_VITERBI; -+ } -+ } -+ -+ // if we DO have some valid VITERBI output, but don't already have SYNC -+ // bytes (i.e. not LOCKED), see if the RS decoder is getting anything valid. -+ if ((*fe_status & FE_HAS_VITERBI) && (!(*fe_status & FE_HAS_SYNC))) { -+ // read the VBER -+ vber = tda1004x_read_byte(i2c, tda_state, TDA1004X_VBER_LSB); -+ if (vber == -1) return -EIO; -+ status = tda1004x_read_byte(i2c, tda_state, TDA1004X_VBER_MID); -+ if (status == -1) return -EIO; -+ vber |= (status << 8); -+ status = tda1004x_read_byte(i2c, tda_state, TDA1004X_VBER_MSB); -+ if (status == -1) return -EIO; -+ vber |= ((status << 16) & 0x0f); -+ tda1004x_read_byte(i2c, tda_state, TDA1004X_CVBER_LUT); -+ -+ // if RS has passed some valid TS packets, then we must be -+ // getting some SYNC bytes -+ if (vber < 16632) { -+ *fe_status |= FE_HAS_SYNC; -+ } -+ } -+ -+ // success -+ dprintk("%s: fe_status=0x%x\n", __FUNCTION__, *fe_status); -+ return 0; -+} -+ -+static int tda1004x_read_signal_strength(struct dvb_i2c_bus *i2c, struct tda1004x_state* tda_state, u16 * signal) -+{ -+ int tmp; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // read it -+ tmp = tda1004x_read_byte(i2c, tda_state, TDA1004X_SIGNAL_STRENGTH); -+ if (tmp < 0) -+ return -EIO; -+ -+ // done -+ *signal = (tmp << 8) | tmp; -+ dprintk("%s: signal=0x%x\n", __FUNCTION__, *signal); -+ return 0; -+} -+ -+ -+static int tda1004x_read_snr(struct dvb_i2c_bus *i2c, struct tda1004x_state* tda_state, u16 * snr) -+{ -+ int tmp; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // read it -+ tmp = tda1004x_read_byte(i2c, tda_state, TDA1004X_SNR); -+ if (tmp < 0) -+ return -EIO; -+ if (tmp) { -+ tmp = 255 - tmp; -+ } -+ -+ // done -+ *snr = ((tmp << 8) | tmp); -+ dprintk("%s: snr=0x%x\n", __FUNCTION__, *snr); -+ return 0; -+} -+ -+static int tda1004x_read_ucblocks(struct dvb_i2c_bus *i2c, struct tda1004x_state* tda_state, u32* ucblocks) -+{ -+ int tmp; -+ int tmp2; -+ int counter; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // read the UCBLOCKS and reset -+ counter = 0; -+ tmp = tda1004x_read_byte(i2c, tda_state, TDA1004X_UNCOR); -+ if (tmp < 0) -+ return -EIO; -+ tmp &= 0x7f; -+ while (counter++ < 5) { -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_UNCOR, 0x80, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_UNCOR, 0x80, 0); -+ tda1004x_write_mask(i2c, tda_state, TDA1004X_UNCOR, 0x80, 0); -+ -+ tmp2 = tda1004x_read_byte(i2c, tda_state, TDA1004X_UNCOR); -+ if (tmp2 < 0) -+ return -EIO; -+ tmp2 &= 0x7f; -+ if ((tmp2 < tmp) || (tmp2 == 0)) -+ break; -+ } -+ -+ // done -+ if (tmp != 0x7f) { -+ *ucblocks = tmp; -+ } else { -+ *ucblocks = 0xffffffff; -+ } -+ dprintk("%s: ucblocks=0x%x\n", __FUNCTION__, *ucblocks); -+ return 0; -+} -+ -+static int tda1004x_read_ber(struct dvb_i2c_bus *i2c, struct tda1004x_state* tda_state, u32* ber) -+{ -+ int tmp; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // read it in -+ tmp = tda1004x_read_byte(i2c, tda_state, TDA1004X_CBER_LSB); -+ if (tmp < 0) return -EIO; -+ *ber = tmp << 1; -+ tmp = tda1004x_read_byte(i2c, tda_state, TDA1004X_CBER_MSB); -+ if (tmp < 0) return -EIO; -+ *ber |= (tmp << 9); -+ tda1004x_read_byte(i2c, tda_state, TDA1004X_CBER_RESET); -+ -+ // done -+ dprintk("%s: ber=0x%x\n", __FUNCTION__, *ber); -+ return 0; -+} -+ -+ -+static int tda1004x_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg) -+{ -+ int status = 0; -+ struct dvb_i2c_bus *i2c = fe->i2c; -+ struct tda1004x_state *tda_state = (struct tda1004x_state *) &(fe->data); -+ -+ dprintk("%s: cmd=0x%x\n", __FUNCTION__, cmd); -+ -+ switch (cmd) { -+ case FE_GET_INFO: -+ switch(tda_state->tda1004x_address) { -+ case TDA10045H_ADDRESS: -+ memcpy(arg, &tda10045h_info, sizeof(struct dvb_frontend_info)); -+ break; -+ } -+ break; -+ -+ case FE_READ_STATUS: -+ return tda1004x_read_status(i2c, tda_state, (fe_status_t *) arg); -+ -+ case FE_READ_BER: -+ return tda1004x_read_ber(i2c, tda_state, (u32 *) arg); -+ -+ case FE_READ_SIGNAL_STRENGTH: -+ return tda1004x_read_signal_strength(i2c, tda_state, (u16 *) arg); -+ -+ case FE_READ_SNR: -+ return tda1004x_read_snr(i2c, tda_state, (u16 *) arg); -+ -+ case FE_READ_UNCORRECTED_BLOCKS: -+ return tda1004x_read_ucblocks(i2c, tda_state, (u32 *) arg); -+ -+ case FE_SET_FRONTEND: -+ return tda1004x_set_fe(i2c, tda_state, (struct dvb_frontend_parameters*) arg); -+ -+ case FE_GET_FRONTEND: -+ return tda1004x_get_fe(i2c, tda_state, (struct dvb_frontend_parameters*) arg); -+ -+ case FE_INIT: -+ // don't bother reinitialising -+ if (tda_state->initialised) -+ return 0; -+ -+ // OK, perform initialisation -+ status = tda1004x_init(i2c, tda_state); -+ if (status == 0) -+ tda_state->initialised = 1; -+ return status; -+ -+ default: -+ return -EOPNOTSUPP; -+ } -+ -+ return 0; -+} -+ -+ -+static int tda1004x_attach(struct dvb_i2c_bus *i2c) -+{ -+ int tda1004x_address = -1; -+ int tuner_address = -1; -+ struct tda1004x_state tda_state; -+ struct i2c_msg tuner_msg = {.addr=0, .flags=0, .buf=0, .len=0 }; -+ static u8 td1344_init[] = { 0x0b, 0xf5, 0x88, 0xab }; -+ static u8 tdm1316l_init[] = { 0x0b, 0xf5, 0x85, 0xab }; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ // probe for frontend -+ tda_state.tda1004x_address = TDA10045H_ADDRESS; -+ if (tda1004x_read_byte(i2c, &tda_state, TDA1004X_CHIPID) == 0x25) { -+ tda1004x_address = TDA10045H_ADDRESS; -+ printk("tda1004x: Detected Philips TDA10045H.\n"); -+ } -+ -+ // did we find a frontend? -+ if (tda1004x_address == -1) { -+ return -ENODEV; -+ } -+ -+ // supported tuner? -+ tda1004x_enable_tuner_i2c(i2c, &tda_state); -+ tuner_msg.addr = TD1344_ADDRESS; -+ tuner_msg.buf = td1344_init; -+ tuner_msg.len = sizeof(td1344_init); -+ if (i2c->xfer(i2c, &tuner_msg, 1) == 1) { -+ dvb_delay(1); -+ tuner_address = TD1344_ADDRESS; -+ printk("tda1004x: Detected Philips TD1344 tuner. PLEASE CHECK THIS AND REPORT BACK!.\n"); -+ } else { -+ tuner_msg.addr = TDM1316L_ADDRESS; -+ tuner_msg.buf = tdm1316l_init; -+ tuner_msg.len = sizeof(tdm1316l_init); -+ if (i2c->xfer(i2c, &tuner_msg, 1) == 1) { -+ dvb_delay(1); -+ tuner_address = TDM1316L_ADDRESS; -+ printk("tda1004x: Detected Philips TDM1316L tuner.\n"); -+ } -+ } -+ tda1004x_disable_tuner_i2c(i2c, &tda_state); -+ -+ // did we find a tuner? -+ if (tuner_address == -1) { -+ printk("tda1004x: Detected, but with unknown tuner.\n"); -+ return -ENODEV; -+ } -+ -+ // create state -+ tda_state.tda1004x_address = tda1004x_address; -+ tda_state.tuner_address = tuner_address; -+ tda_state.initialised = 0; -+ -+ // register -+ switch(tda_state.tda1004x_address) { -+ case TDA10045H_ADDRESS: -+ dvb_register_frontend(tda1004x_ioctl, i2c, (void *)(*((u32*) &tda_state)), &tda10045h_info); -+ break; -+ } -+ -+ // success -+ return 0; -+} -+ -+ -+static -+void tda1004x_detach(struct dvb_i2c_bus *i2c) -+{ -+ dprintk("%s\n", __FUNCTION__); -+ -+ dvb_unregister_frontend(tda1004x_ioctl, i2c); -+} -+ -+ -+static -+int __init init_tda1004x(void) -+{ -+ return dvb_register_i2c_device(THIS_MODULE, tda1004x_attach, tda1004x_detach); -+} -+ -+ -+static -+void __exit exit_tda1004x(void) -+{ -+ dvb_unregister_i2c_device(tda1004x_attach); -+} -+ -+module_init(init_tda1004x); -+module_exit(exit_tda1004x); -+ -+MODULE_DESCRIPTION("Philips TDA10045H DVB-T Frontend"); -+MODULE_AUTHOR("Andrew de Quincey & Robert Schlabbach"); -+MODULE_LICENSE("GPL"); -+ -+MODULE_PARM(tda1004x_debug, "i"); -+MODULE_PARM_DESC(tda1004x_debug, "enable verbose debug messages"); -+ -+MODULE_PARM(tda1004x_firmware, "s"); -+MODULE_PARM_DESC(tda1004x_firmware, "Where to find the firmware file"); ---- linux-2.6.0-test1/drivers/media/dvb/frontends/ves1820.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/frontends/ves1820.c 2003-07-19 17:03:49.000000000 -0700 -@@ -95,7 +95,7 @@ static struct dvb_frontend_info ves1820_ - - static u8 ves1820_inittab [] = - { -- 0x69, 0x6A, 0x9B, 0x0A, 0x52, 0x46, 0x26, 0x1A, -+ 0x69, 0x6A, 0x9B, 0x12, 0x12, 0x46, 0x26, 0x1A, - 0x43, 0x6A, 0xAA, 0xAA, 0x1E, 0x85, 0x43, 0x28, - 0xE0, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -@@ -109,7 +109,7 @@ static int ves1820_writereg (struct dvb_ - { - u8 addr = GET_DEMOD_ADDR(fe->data); - u8 buf[] = { 0x00, reg, data }; -- struct i2c_msg msg = { addr: addr, .flags = 0, .buf = buf, .len = 3 }; -+ struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = buf, .len = 3 }; - struct dvb_i2c_bus *i2c = fe->i2c; - int ret; - -@@ -130,8 +130,8 @@ static u8 ves1820_readreg (struct dvb_fr - u8 b0 [] = { 0x00, reg }; - u8 b1 [] = { 0 }; - u8 addr = GET_DEMOD_ADDR(fe->data); -- struct i2c_msg msg [] = { { addr: addr, .flags = 0, .buf = b0, .len = 2 }, -- { addr: addr, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; -+ struct i2c_msg msg [] = { { .addr = addr, .flags = 0, .buf = b0, .len = 2 }, -+ { .addr = addr, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; - struct dvb_i2c_bus *i2c = fe->i2c; - int ret; - -@@ -147,7 +147,7 @@ static u8 ves1820_readreg (struct dvb_fr - static int tuner_write (struct dvb_i2c_bus *i2c, u8 addr, u8 data [4]) - { - int ret; -- struct i2c_msg msg = { addr: addr, .flags = 0, .buf = data, .len = 4 }; -+ struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = data, .len = 4 }; - - ret = i2c->xfer (i2c, &msg, 1); - ---- linux-2.6.0-test1/drivers/media/dvb/Kconfig 2003-06-14 12:18:06.000000000 -0700 -+++ 25/drivers/media/dvb/Kconfig 2003-07-19 17:03:49.000000000 -0700 -@@ -33,9 +33,19 @@ source "drivers/media/dvb/dvb-core/Kconf - source "drivers/media/dvb/frontends/Kconfig" - - comment "Supported SAA7146 based PCI Adapters" -- depends on DVB -+ depends on DVB && PCI - - source "drivers/media/dvb/ttpci/Kconfig" - -+comment "Supported USB Adapters" -+ depends on DVB && USB -+ -+source "drivers/media/dvb/ttusb-budget/Kconfig" -+source "drivers/media/dvb/ttusb-dec/Kconfig" -+ -+comment "Supported FlexCopII (B2C2) Adapters" -+ depends on DVB && PCI -+source "drivers/media/dvb/b2c2/Kconfig" -+ - endmenu - ---- linux-2.6.0-test1/drivers/media/dvb/Makefile 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/media/dvb/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -2,4 +2,5 @@ - # Makefile for the kernel multimedia device drivers. - # - --obj-y := dvb-core/ frontends/ ttpci/ # ttusb-budget/ -+obj-y := dvb-core/ frontends/ ttpci/ ttusb-dec/ ttusb-budget/ b2c2/ -+ ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/av7110.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/av7110.c 2003-07-19 17:03:49.000000000 -0700 -@@ -86,6 +86,7 @@ - #define DEB_EE(x) - #endif - -+#include "ttpci-eeprom.h" - #include "av7110.h" - #include "av7110_ipack.h" - -@@ -110,7 +111,8 @@ static int hw_sections = 1; - - int av7110_num = 0; - --#define FW_CI_LL_SUPPORT(arm_app) (((arm_app) >> 16) & 0x8000) -+#define FW_CI_LL_SUPPORT(arm_app) ((arm_app) & 0x80000000) -+#define FW_VERSION(arm_app) ((arm_app) & 0x0000FFFF) - - /**************************************************************************** - * DEBI functions -@@ -1089,7 +1091,7 @@ static int OutCommand(struct av7110 *av7 - u32 stat; - #endif - -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - - if (!av7110->arm_ready) { - DEB_D(("arm not ready.\n")); -@@ -1166,7 +1168,7 @@ static inline int SOutCommand(struct av7 - { - int ret; - -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - - if (!av7110->arm_ready) { - DEB_D(("arm not ready.\n")); -@@ -1190,7 +1192,7 @@ static int outcom(struct av7110 *av7110, - u16 buf[num+2]; - int i, ret; - -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - - buf[0]=(( type << 8 ) | com); - buf[1]=num; -@@ -1332,7 +1334,7 @@ static inline int msp_writereg(struct av - - static inline int SendDAC(struct av7110 *av7110, u8 addr, u8 data) - { -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - - return outcom(av7110, COMTYPE_AUDIODAC, AudioDAC, 2, addr, data); - } -@@ -1659,6 +1661,24 @@ static void OSDSetColor(struct av7110 *a - color, ((blend>>4)&0x0f)); - } - -+static int OSDSetPalette(struct av7110 *av7110, u32 *colors, u8 first, u8 last) -+{ -+ int i; -+ int length = last - first + 1; -+ -+ if (length * 4 > DATA_BUFF3_SIZE) -+ return -1; -+ -+ for (i=0; i> 4; -+ u32 yuv = blend ? RGB2YUV(colors[i] & 0xFF, (colors[i] >> 8) & 0xFF, (colors[i] >> 16) & 0xFF) | blend : 0; -+ yuv = ((yuv & 0xFFFF0000) >> 16) | ((yuv & 0x0000FFFF) << 16); // TODO kls2003-06-15: not sure if this is endian-proof -+ wdebi(av7110, DEBINOSWAP, DATA_BUFF3_BASE + i*4, yuv, 4); -+ } -+ return outcom(av7110, COMTYPE_OSD, Set_Palette, 4, -+ av7110->osdwin, bpp2pal[av7110->osdbpp[av7110->osdwin]], first, last); -+} -+ - static int OSDSetBlock(struct av7110 *av7110, int x0, int y0, int x1, int y1, int inc, u8 *data) - { - uint w, h, bpp, bpl, size, lpb, bnum, brest; -@@ -1721,6 +1741,9 @@ static int OSD_DrawCommand(struct av7110 - return 0; - case OSD_SetPalette: - { -+ if (FW_VERSION(av7110->arm_app) >= 0x2618) -+ OSDSetPalette(av7110, (u32 *)dc->data, dc->color, dc->x0); -+ else { - int i, len=dc->x0-dc->color+1; - u8 *colors=(u8 *)dc->data; - -@@ -1728,6 +1751,7 @@ static int OSD_DrawCommand(struct av7110 - OSDSetColor(av7110, dc->color+i, - colors[i*4] , colors[i*4+1], - colors[i*4+2], colors[i*4+3]); -+ } - return 0; - } - case OSD_SetTrans: -@@ -2087,28 +2111,28 @@ static void SetMode(struct av7110 *av711 - - static inline void TestMode(struct av7110 *av7110, int mode) - { -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - outcom(av7110, COMTYPE_ENCODER, SetTestMode, 1, mode); - } - - static inline void VidMode(struct av7110 *av7110, int mode) - { -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - outcom(av7110, COMTYPE_ENCODER, SetVidMode, 1, mode); - } - - --static inline int vidcom(struct av7110 *av7110, u32 com, u32 arg) -+static int inline vidcom(struct av7110 *av7110, u32 com, u32 arg) - { -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - return outcom(av7110, 0x80, 0x02, 4, - (com>>16), (com&0xffff), - (arg>>16), (arg&0xffff)); - } - --static inline int audcom(struct av7110 *av7110, u32 com) -+static int inline audcom(struct av7110 *av7110, u32 com) - { -- DEB_EE(("av7110: %p\n",av7110)); -+// DEB_EE(("av7110: %p\n",av7110)); - return outcom(av7110, 0x80, 0x03, 4, - (com>>16), (com&0xffff)); - } -@@ -2583,38 +2607,274 @@ void p_to_t(u8 const *buf, long int leng - * V4L SECTION - ****************************************************************************/ - --int av7110_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) -+static struct v4l2_input inputs[2] = { -+ { 0, "DVB", V4L2_INPUT_TYPE_CAMERA, 1, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 1, "ANALOG", V4L2_INPUT_TYPE_TUNER, 2, 1, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+}; -+ -+/* taken from ves1820.c */ -+static int ves1820_writereg(struct saa7146_dev *dev, u8 reg, u8 data) -+{ -+ u8 addr = 0x09; -+ u8 buf[] = { 0x00, reg, data }; -+ struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = buf, .len = 3 }; -+ -+ DEB_EE(("av7710: dev: %p\n",dev)); -+ -+ if( 1 != saa7146_i2c_transfer(dev, &msg, 1, 1)) { -+ return -1; -+ } -+ return 0; -+} -+ -+static int tuner_write(struct saa7146_dev *dev, u8 addr, u8 data [4]) -+{ -+ struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = data, .len = 4 }; -+ -+ DEB_EE(("av7710: dev: %p\n",dev)); -+ -+ if( 1 != saa7146_i2c_transfer(dev, &msg, 1, 1)) { -+ return -1; -+ } -+ return 0; -+} -+ -+ -+/** -+ * set up the downconverter frequency divisor for a -+ * reference clock comparision frequency of 62.5 kHz. -+ */ -+static int tuner_set_tv_freq (struct saa7146_dev *dev, u32 freq) -+{ -+ u32 div; -+ u8 config; -+ u8 buf [4]; -+ -+ DEB_EE(("av7710: freq: 0x%08x\n",freq)); -+ -+ /* magic number: 56. tuning with the frequency given by v4l2 -+ is always off by 56*62.5 kHz...*/ -+ div = freq + 56; -+ -+ buf[0] = (div >> 8) & 0x7f; -+ buf[1] = div & 0xff; -+ buf[2] = 0x8e; -+ -+ if (freq < 16*168.25 ) -+ config = 0xa0; -+ else if (freq < 16*447.25) -+ config = 0x90; -+ else -+ config = 0x30; -+ config &= ~0x02; -+ -+ buf[3] = config; -+ -+ return tuner_write (dev, 0x61, buf); -+} -+ -+static struct saa7146_standard analog_standard[]; -+static struct saa7146_standard dvb_standard[]; -+static struct saa7146_standard standard[]; -+ -+int av7110_dvb_c_switch(struct saa7146_fh *fh) -+{ -+ struct saa7146_dev *dev = fh->dev; -+ struct saa7146_vv *vv = dev->vv_data; -+ struct av7110 *av7110 = (struct av7110*)dev->ext_priv; -+ u16 buf[3] = { ((COMTYPE_AUDIODAC << 8) + ADSwitch), 1, 1 }; -+ -+ u8 band = 0; -+ int source, sync; -+ struct saa7146_fh *ov_fh = NULL; -+ int restart_overlay = 0; -+ -+ DEB_EE(("av7110: %p\n",av7110)); -+ -+ if( vv->ov_data != NULL ) { -+ ov_fh = vv->ov_data->fh; -+ saa7146_stop_preview(ov_fh); -+ restart_overlay = 1; -+ } -+ -+ if( 0 != av7110->current_input ) { -+ buf[2] = 0; -+ band = 0x68; /* analog band */ -+ source = SAA7146_HPS_SOURCE_PORT_B; -+ sync = SAA7146_HPS_SYNC_PORT_B; -+ memcpy(standard,analog_standard,sizeof(struct saa7146_standard)*2); -+ } else { -+ buf[2] = 1; -+ band = 0x28; /* digital band */ -+ source = SAA7146_HPS_SOURCE_PORT_A; -+ sync = SAA7146_HPS_SYNC_PORT_A; -+ memcpy(standard,dvb_standard,sizeof(struct saa7146_standard)*2); -+ } -+ -+ /* hmm, this does not do anything!? */ -+ if (OutCommand(av7110, buf, 3)) { -+ printk("ADSwitch error\n"); -+ } -+ -+ if( 0 != ves1820_writereg(dev, 0x0f, band )) { -+ printk("setting band in demodulator failed.\n"); -+ } -+ saa7146_set_hps_source_and_sync(dev, source, sync); -+ -+ /* restart overlay if it was active before */ -+ if( 0 != restart_overlay ) { -+ saa7146_start_preview(ov_fh); -+ } -+ -+ return 0; -+} -+ -+int av7110_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) - { -+ struct saa7146_dev *dev = fh->dev; -+ struct av7110 *av7110 = (struct av7110*)dev->ext_priv; - DEB_EE(("saa7146_dev: %p\n",dev)); - - switch(cmd) { -+ case VIDIOC_G_TUNER: -+ { -+ struct v4l2_tuner *t = arg; -+ -+ DEB_EE(("VIDIOC_G_TUNER: %d\n", t->index)); -+ -+ if( 0 == av7110->has_analog_tuner || av7110->current_input != 1 ) { -+ return -EINVAL; -+ } -+ -+ memset(t,0,sizeof(*t)); -+ strcpy(t->name, "Television"); -+ -+ t->type = V4L2_TUNER_ANALOG_TV; -+ t->capability = V4L2_TUNER_CAP_NORM | V4L2_TUNER_CAP_STEREO | V4L2_TUNER_CAP_LANG1 | V4L2_TUNER_CAP_LANG2 | V4L2_TUNER_CAP_SAP; -+ t->rangelow = 772; /* 48.25 MHZ / 62.5 kHz = 772, see fi1216mk2-specs, page 2 */ -+ t->rangehigh = 13684; /* 855.25 MHz / 62.5 kHz = 13684 */ -+ /* FIXME: add the real signal strength here */ -+ t->signal = 0xffff; -+ t->afc = 0; -+ /* fixme: real autodetection here */ -+ t->rxsubchans = V4L2_TUNER_SUB_STEREO | V4L2_TUNER_SUB_MONO; -+ -+ return 0; -+ } -+ case VIDIOC_S_TUNER: -+ { -+ struct v4l2_tuner *t = arg; -+ -+ DEB_EE(("VIDIOC_S_TUNER: %d\n", t->index)); -+ -+ if( 0 == av7110->has_analog_tuner || av7110->current_input != 1 ) { -+ return -EINVAL; -+ } -+ -+ -+ switch(t->audmode) { -+ case V4L2_TUNER_MODE_STEREO: { -+ DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_STEREO\n")); -+ break; -+ } -+ case V4L2_TUNER_MODE_LANG1: { -+ DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG1\n")); -+ break; -+ } -+ case V4L2_TUNER_MODE_LANG2: { -+ DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG2\n")); -+ break; -+ } -+ default: { /* case V4L2_TUNER_MODE_MONO: {*/ -+ DEB_D(("VIDIOC_S_TUNER: TDA9840_SET_MONO\n")); -+ break; -+ } -+ } -+ -+ return 0; -+ } -+ case VIDIOC_G_FREQUENCY: -+ { -+ struct v4l2_frequency *f = arg; -+ -+ DEB_EE(("VIDIOC_G_FREQ: freq:0x%08x.\n", f->frequency)); -+ -+ if( 0 == av7110->has_analog_tuner || av7110->current_input != 1 ) { -+ return -EINVAL; -+ } -+ -+ memset(f,0,sizeof(*f)); -+ f->type = V4L2_TUNER_ANALOG_TV; -+ f->frequency = av7110->current_freq; -+ -+ return 0; -+ } -+ case VIDIOC_S_FREQUENCY: -+ { -+ struct v4l2_frequency *f = arg; -+ -+ DEB_EE(("VIDIOC_S_FREQUENCY: freq:0x%08x.\n",f->frequency)); -+ -+ if( 0 == av7110->has_analog_tuner || av7110->current_input != 1 ) { -+ return -EINVAL; -+ } -+ -+ if (V4L2_TUNER_ANALOG_TV != f->type) -+ return -EINVAL; -+ -+ /* tune in desired frequency */ -+ tuner_set_tv_freq(dev, f->frequency); -+ av7110->current_freq = f->frequency; -+ -+ return 0; -+ } - case VIDIOC_ENUMINPUT: - { - struct v4l2_input *i = arg; - -+ DEB_EE(("VIDIOC_ENUMINPUT: %d\n", i->index)); -+ -+ if( 0 != av7110->has_analog_tuner ) { -+ if( i->index < 0 || i->index >= 2) { -+ return -EINVAL; -+ } -+ } else { - if( i->index != 0 ) { - return -EINVAL; - } -+ } - -- memset(i,0,sizeof(*i)); -- i->index = 0; -- strcpy(i->name, "DVB"); -- i->type = V4L2_INPUT_TYPE_CAMERA; -- i->audioset = 1; -+ memcpy(i, &inputs[i->index], sizeof(struct v4l2_input)); - - return 0; - } - case VIDIOC_G_INPUT: - { - int *input = (int *)arg; -- *input = 0; -+ *input = av7110->current_input; -+ DEB_EE(("VIDIOC_G_INPUT: %d\n", *input)); - return 0; - } - case VIDIOC_S_INPUT: - { -+ int input = *(int *)arg; -+ -+ DEB_EE(("VIDIOC_S_INPUT: %d\n", input)); -+ -+ if( 0 == av7110->has_analog_tuner ) { - return 0; - } -+ -+ if( input < 0 || input >= 2) { -+ return -EINVAL; -+ } -+ -+ /* fixme: switch inputs here */ -+ av7110->current_input = input; -+ return av7110_dvb_c_switch(fh); -+ } - default: -+ printk("no such ioctl\n"); - return -ENOIOCTLCMD; - } - return 0; -@@ -2997,7 +3257,7 @@ static int dvb_get_stc(struct dmx_demux - DEB_EE(("av7110: fwstc = %04hx %04hx %04hx %04hx\n", - fwstc[0], fwstc[1], fwstc[2], fwstc[3])); - -- *stc = (((uint64_t)fwstc[2] & 1) << 32) | -+ *stc = (((uint64_t)(~fwstc[2]) & 1) << 32) | - (((uint64_t)fwstc[1]) << 16) | ((uint64_t)fwstc[0]); - *base = 1; - -@@ -4006,7 +4266,6 @@ static int av7110_register(struct av7110 - #endif - // } - -- av7110->dvb_net.card_num=av7110->dvb_adapter->num; - dvb_net_init(av7110->dvb_adapter, &av7110->dvb_net, &dvbdemux->dmx); - - return 0; -@@ -4061,9 +4320,16 @@ struct saa7146_extension_ioctls ioctls[] - { VIDIOC_ENUMINPUT, SAA7146_EXCLUSIVE }, - { VIDIOC_G_INPUT, SAA7146_EXCLUSIVE }, - { VIDIOC_S_INPUT, SAA7146_EXCLUSIVE }, -+ { VIDIOC_G_FREQUENCY, SAA7146_EXCLUSIVE }, -+ { VIDIOC_S_FREQUENCY, SAA7146_EXCLUSIVE }, -+ { VIDIOC_G_TUNER, SAA7146_EXCLUSIVE }, -+ { VIDIOC_S_TUNER, SAA7146_EXCLUSIVE }, - { 0, 0 } - }; - -+static struct saa7146_ext_vv av7110_vv_data_st; -+static struct saa7146_ext_vv av7110_vv_data_c; -+ - static int av7110_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *pci_ext) - { - struct av7110 *av7110 = NULL; -@@ -4081,7 +4347,16 @@ static int av7110_attach (struct saa7146 - - DEB_EE(("dev: %p, av7110: %p\n",dev,av7110)); - -- if (saa7146_vv_init(dev)) { -+ /* special case DVB-C: these cards have an analog tuner -+ plus need some special handling, so we have separate -+ saa7146_ext_vv data for these... */ -+ if (dev->pci->subsystem_vendor == 0x110a) { -+ ret = saa7146_vv_init(dev, &av7110_vv_data_c); -+ } else { -+ ret = saa7146_vv_init(dev, &av7110_vv_data_st); -+ } -+ -+ if ( 0 != ret) { - ERR(("cannot init capture device. skipping.\n")); - kfree(av7110); - return -1; -@@ -4114,6 +4389,8 @@ static int av7110_attach (struct saa7146 - return -ENOMEM; - } - -+ ttpci_eeprom_parse_mac(av7110->i2c_bus); -+ - saa7146_write(dev, PCI_BT_V1, 0x1c00101f); - saa7146_write(dev, BCS_CTRL, 0x80400040); - -@@ -4186,9 +4463,9 @@ static int av7110_attach (struct saa7146 - bootarm(av7110); - firmversion(av7110); - -- if ((av7110->arm_app&0xffff)<0x2501) -+ if (FW_VERSION(av7110->arm_app)<0x2501) - printk ("av7110: Warning, firmware version 0x%04x is too old. " -- "System might be unstable!\n", av7110->arm_app&0xffff); -+ "System might be unstable!\n", FW_VERSION(av7110->arm_app)); - - kernel_thread(arm_thread, (void *) av7110, 0); - -@@ -4199,6 +4476,8 @@ static int av7110_attach (struct saa7146 - VidMode(av7110, vidmode); - - /* remaining inits according to card and frontend type */ -+ av7110->has_analog_tuner = 0; -+ av7110->current_input = 0; - if (i2c_writereg(av7110, 0x20, 0x00, 0x00)==1) { - printk ("av7110(%d): Crystal audio DAC detected\n", - av7110->dvb_adapter->num); -@@ -4225,6 +4504,31 @@ static int av7110_attach (struct saa7146 - msp_writereg(av7110, 0x12, 0x000a, 0x0220); // SCART 1 source - msp_writereg(av7110, 0x12, 0x0007, 0x7f00); // SCART 1 volume - msp_writereg(av7110, 0x12, 0x000d, 0x4800); // prescale SCART -+ -+ if (i2c_writereg(av7110, 0x48, 0x01, 0x00)!=1) { -+ INFO(("saa7113 not accessible.\n")); -+ } else { -+ av7110->has_analog_tuner = 1; -+ /* init the saa7113 */ -+ i2c_writereg(av7110, 0x48, 0x02, 0xd0); i2c_writereg(av7110, 0x48, 0x03, 0x23); i2c_writereg(av7110, 0x48, 0x04, 0x00); -+ i2c_writereg(av7110, 0x48, 0x05, 0x00); i2c_writereg(av7110, 0x48, 0x06, 0xe9); i2c_writereg(av7110, 0x48, 0x07, 0x0d); -+ i2c_writereg(av7110, 0x48, 0x08, 0x98); i2c_writereg(av7110, 0x48, 0x09, 0x02); i2c_writereg(av7110, 0x48, 0x0a, 0x80); -+ i2c_writereg(av7110, 0x48, 0x0b, 0x40); i2c_writereg(av7110, 0x48, 0x0c, 0x40); i2c_writereg(av7110, 0x48, 0x0d, 0x00); -+ i2c_writereg(av7110, 0x48, 0x0e, 0x01); i2c_writereg(av7110, 0x48, 0x0f, 0x7c); i2c_writereg(av7110, 0x48, 0x10, 0x48); -+ i2c_writereg(av7110, 0x48, 0x11, 0x0c); i2c_writereg(av7110, 0x48, 0x12, 0x8b); i2c_writereg(av7110, 0x48, 0x13, 0x10); -+ i2c_writereg(av7110, 0x48, 0x14, 0x00); i2c_writereg(av7110, 0x48, 0x15, 0x00); i2c_writereg(av7110, 0x48, 0x16, 0x00); -+ i2c_writereg(av7110, 0x48, 0x17, 0x00); i2c_writereg(av7110, 0x48, 0x18, 0x00); i2c_writereg(av7110, 0x48, 0x19, 0x00); -+ i2c_writereg(av7110, 0x48, 0x1a, 0x00); i2c_writereg(av7110, 0x48, 0x1b, 0x00); i2c_writereg(av7110, 0x48, 0x1c, 0x00); -+ i2c_writereg(av7110, 0x48, 0x1d, 0x00); i2c_writereg(av7110, 0x48, 0x1e, 0x00); -+ } -+ -+ memcpy(standard,dvb_standard,sizeof(struct saa7146_standard)*2); -+ /* set dd1 stream a & b */ -+ saa7146_write(dev, DD1_STREAM_B, 0x00000000); -+ saa7146_write(dev, DD1_INIT, 0x0200700); -+ saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); -+ -+ - } else if (dev->pci->subsystem_vendor == 0x110a) { - printk("av7110(%d): DVB-C w/o analog module detected\n", - av7110->dvb_adapter->num); -@@ -4330,6 +4634,16 @@ static struct saa7146_standard standard[ - { "NTSC", V4L2_STD_NTSC, 0x10, 244, 480, 0x40, 708, 709, 480, 640 }, - }; - -+static struct saa7146_standard analog_standard[] = { -+ { "PAL", V4L2_STD_PAL, 0x18, 288, 576, 0x08, 708, 709, 576, 768 }, -+ { "NTSC", V4L2_STD_NTSC, 0x10, 244, 480, 0x40, 708, 709, 480, 640 }, -+}; -+ -+static struct saa7146_standard dvb_standard[] = { -+ { "PAL", V4L2_STD_PAL, 0x14, 288, 576, 0x4a, 708, 709, 576, 768 }, -+ { "NTSC", V4L2_STD_NTSC, 0x10, 244, 480, 0x40, 708, 709, 480, 640 }, -+}; -+ - static struct saa7146_extension av7110_extension; - - #define MAKE_AV7110_INFO(x_var,x_name) \ -@@ -4387,7 +4701,7 @@ static int std_callback(struct saa7146_d - } - - --static struct saa7146_ext_vv av7110_vv_data = { -+static struct saa7146_ext_vv av7110_vv_data_st = { - .inputs = 1, - .audios = 1, - .capabilities = 0, -@@ -4401,9 +4715,23 @@ static struct saa7146_ext_vv av7110_vv_d - .ioctl = av7110_ioctl, - }; - -+static struct saa7146_ext_vv av7110_vv_data_c = { -+ .inputs = 1, -+ .audios = 1, -+ .capabilities = V4L2_CAP_TUNER, -+ .flags = 0, -+ -+ .stds = &standard[0], -+ .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), -+ .std_callback = &std_callback, -+ -+ .ioctls = &ioctls[0], -+ .ioctl = av7110_ioctl, -+}; -+ -+ - static struct saa7146_extension av7110_extension = { - .name = "dvb\0", -- .ext_vv_data = &av7110_vv_data, - - .module = THIS_MODULE, - .pci_tbl = &pci_tbl[0], -@@ -4442,7 +4770,11 @@ MODULE_LICENSE("GPL"); - - MODULE_PARM(av7110_debug,"i"); - MODULE_PARM(vidmode,"i"); -+MODULE_PARM_DESC(vidmode,"analog video out: 0 off, 1 CVBS+RGB (default), 2 CVBS+YC, 3 YC"); - MODULE_PARM(pids_off,"i"); -+MODULE_PARM_DESC(pids_off,"clear video/audio/PCR PID filters when demux is closed"); - MODULE_PARM(adac,"i"); -+MODULE_PARM_DESC(adac,"audio DAC type: 0 TI, 1 CRYSTAL, 2 MSP (use if autodetection fails)"); - MODULE_PARM(hw_sections, "i"); -+MODULE_PARM_DESC(hw_sections, "0 use software section filter, 1 use hardware"); - ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/av7110.h 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/av7110.h 2003-07-19 17:03:49.000000000 -0700 -@@ -153,7 +153,8 @@ enum av7110_osd_command { - BlitBmp, - ReleaseBmp, - SetWTrans, -- SetWNoTrans -+ SetWNoTrans, -+ Set_Palette - }; - - enum av7110_pid_command { -@@ -405,6 +406,11 @@ struct av7110 { - struct dvb_i2c_bus *i2c_bus; - char *card_name; - -+ /* support for analog module of dvb-c */ -+ int has_analog_tuner; -+ int current_input; -+ u32 current_freq; -+ - struct tasklet_struct debi_tasklet; - struct tasklet_struct gpio_tasklet; - -@@ -572,6 +578,9 @@ struct av7110 { - #define DATA_BUFF2_BASE (DATA_BUFF1_BASE+DATA_BUFF1_SIZE) - #define DATA_BUFF2_SIZE 0x0800 - -+#define DATA_BUFF3_BASE (DATA_BUFF2_BASE+DATA_BUFF2_SIZE) -+#define DATA_BUFF3_SIZE 0x0400 -+ - #define Reserved (DPRAM_BASE + 0x1E00) - #define Reserved_SIZE 0x1C0 - ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/budget-av.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/budget-av.c 2003-07-19 17:03:49.000000000 -0700 -@@ -170,6 +170,7 @@ static int budget_av_detach (struct saa7 - return err; - } - -+static struct saa7146_ext_vv vv_data; - - static int budget_av_attach (struct saa7146_dev* dev, - struct saa7146_pci_extension_data *info) -@@ -207,16 +208,22 @@ static int budget_av_attach (struct saa7 - dvb_delay(500); - - if ((err = saa7113_init (budget_av))) { -- budget_av_detach(dev); -+ /* fixme: proper cleanup here */ -+ ERR(("cannot init saa7113.\n")); -+ return err; -+ } -+ -+ if ( 0 != saa7146_vv_init(dev,&vv_data)) { -+ /* fixme: proper cleanup here */ -+ ERR(("cannot init vv subsystem.\n")); - return err; - } - -- saa7146_vv_init(dev); - if ((err = saa7146_register_device(&budget_av->vd, dev, "knc1", - VFL_TYPE_GRABBER))) - { -+ /* fixme: proper cleanup here */ - ERR(("cannot register capture v4l2 device.\n")); -- budget_av_detach(dev); - return err; - } - -@@ -256,8 +263,9 @@ static struct saa7146_extension_ioctls i - }; - - --static int av_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) -+static int av_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) - { -+ struct saa7146_dev *dev = fh->dev; - struct budget_av *budget_av = (struct budget_av*) dev->ext_priv; - /* - struct saa7146_vv *vv = dev->vv_data; -@@ -299,11 +307,19 @@ static int av_ioctl(struct saa7146_dev * - } - - static struct saa7146_standard standard[] = { -- { "PAL", V4L2_STD_PAL, SAA7146_PAL_VALUES }, -- { "NTSC", V4L2_STD_NTSC, SAA7146_NTSC_VALUES }, -+ { -+ .name = "PAL", .id = V4L2_STD_PAL, -+ .v_offset = 0x17, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 680, .h_calc = 680+1, -+ .v_max_out = 576, .h_max_out = 768, -+ }, { -+ .name = "NTSC", .id = V4L2_STD_NTSC, -+ .v_offset = 0x16, .v_field = 240, .v_calc = 480, -+ .h_offset = 0x06, .h_pixels = 708, .h_calc = 708+1, -+ .v_max_out = 480, .h_max_out = 640, -+ } - }; - -- - static struct saa7146_ext_vv vv_data = { - .inputs = 2, - .capabilities = 0, // perhaps later: V4L2_CAP_VBI_CAPTURE, but that need tweaking with the saa7113 -@@ -338,8 +354,6 @@ static struct saa7146_extension budget_e - .attach = budget_av_attach, - .detach = budget_av_detach, - -- .ext_vv_data = &vv_data, -- - .irq_mask = MASK_10, - .irq_func = ttpci_budget_irq10_handler, - }; ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/budget.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/budget.c 2003-07-19 17:03:49.000000000 -0700 -@@ -192,6 +192,7 @@ static struct saa7146_extension budget_e - MAKE_BUDGET_INFO(ttbs, "TT-Budget/WinTV-NOVA-S PCI", BUDGET_TT); - MAKE_BUDGET_INFO(ttbc, "TT-Budget/WinTV-NOVA-C PCI", BUDGET_TT); - MAKE_BUDGET_INFO(ttbt, "TT-Budget/WinTV-NOVA-T PCI", BUDGET_TT); -+MAKE_BUDGET_INFO(ttbt2, "TT-Budget/WinTV-NOVA-T PCI", BUDGET_TT); - MAKE_BUDGET_INFO(satel, "SATELCO Multimedia PCI", BUDGET_TT_HW_DISEQC); - /* Uncomment for Budget Patch */ - /*MAKE_BUDGET_INFO(fs_1_3,"Siemens/Technotrend/Hauppauge PCI rev1.3+Budget_Patch", BUDGET_PATCH);*/ -@@ -202,6 +203,7 @@ static struct pci_device_id pci_tbl[] = - MAKE_EXTENSION_PCI(ttbs, 0x13c2, 0x1003), - MAKE_EXTENSION_PCI(ttbc, 0x13c2, 0x1004), - MAKE_EXTENSION_PCI(ttbt, 0x13c2, 0x1005), -+ MAKE_EXTENSION_PCI(ttbt2, 0x13c2, 0x1011), - MAKE_EXTENSION_PCI(satel, 0x13c2, 0x1013), - { - .vendor = 0, -@@ -213,7 +215,6 @@ MODULE_DEVICE_TABLE(pci, pci_tbl); - static struct saa7146_extension budget_extension = { - .name = "budget dvb\0", - .flags = 0, -- .ext_vv_data = NULL, - - .module = THIS_MODULE, - .pci_tbl = pci_tbl, ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/budget-ci.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/budget-ci.c 2003-07-19 17:03:49.000000000 -0700 -@@ -371,7 +371,6 @@ MODULE_DEVICE_TABLE(pci, pci_tbl); - static struct saa7146_extension budget_extension = { - .name = "budget_ci dvb\0", - .flags = 0, -- .ext_vv_data = NULL, - - .module = THIS_MODULE, - .pci_tbl = &pci_tbl[0], ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/budget-core.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/budget-core.c 2003-07-19 17:03:49.000000000 -0700 -@@ -1,4 +1,5 @@ - #include "budget.h" -+#include "ttpci-eeprom.h" - - int budget_debug = 0; - -@@ -165,7 +166,6 @@ static int budget_register(struct budget - if (ret < 0) - return ret; - -- budget->dvb_net.card_num = budget->dvb_adapter->num; - dvb_net_init(budget->dvb_adapter, &budget->dvb_net, &dvbdemux->dmx); - - return 0; -@@ -222,7 +222,7 @@ int ttpci_budget_init (struct budget *bu - get recognized before the main driver is loaded */ - saa7146_write(dev, GPIO_CTRL, 0x500000); - -- saa7146_i2c_adapter_prepare(dev, NULL, SAA7146_I2C_BUS_BIT_RATE_3200); -+ saa7146_i2c_adapter_prepare(dev, NULL, SAA7146_I2C_BUS_BIT_RATE_120); - - budget->i2c_bus = dvb_register_i2c_bus (master_xfer, dev, - budget->dvb_adapter, 0); -@@ -232,6 +232,8 @@ int ttpci_budget_init (struct budget *bu - return -ENOMEM; - } - -+ ttpci_eeprom_parse_mac(budget->i2c_bus); -+ - if( NULL == (budget->grabbing = saa7146_vmalloc_build_pgtable(dev->pci,length,&budget->pt))) { - ret = -ENOMEM; - goto err; ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/budget-patch.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/budget-patch.c 2003-07-19 17:03:49.000000000 -0700 -@@ -165,6 +165,7 @@ static int budget_patch_attach (struct s - { - struct budget_patch *budget; - int err; -+ int count = 0; - - if (!(budget = kmalloc (sizeof(struct budget_patch), GFP_KERNEL))) - return -ENOMEM; -@@ -263,7 +264,6 @@ static void __exit budget_patch_exit(voi - static struct saa7146_extension budget_extension = { - .name = "budget_patch dvb\0", - .flags = 0, -- .ext_vv_data = NULL, - - .module = THIS_MODULE, - .pci_tbl = pci_tbl, ---- linux-2.6.0-test1/drivers/media/dvb/ttpci/Makefile 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/Makefile 2003-07-19 17:03:49.000000000 -0700 -@@ -3,16 +3,12 @@ - # and the AV7110 DVB device driver - # - --dvb-ttpci-budget-objs := budget.o --dvb-ttpci-budget-av-objs := budget-av.o --dvb-ttpci-budget-ci-objs := budget-ci.o --dvb-ttpci-budget-patch-objs := budget-patch.o - dvb-ttpci-objs := av7110.o av7110_ipack.o av7110_ir.o - --obj-$(CONFIG_DVB_BUDGET) += budget-core.o dvb-ttpci-budget.o --obj-$(CONFIG_DVB_BUDGET_CI) += budget-core.o dvb-ttpci-budget-ci.o --obj-$(CONFIG_DVB_BUDGET_AV) += budget-core.o dvb-ttpci-budget-av.o --obj-$(CONFIG_DVB_BUDGET_PATCH) += budget-core.o dvb-ttpci-budget-patch.o --obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o -+obj-$(CONFIG_DVB_BUDGET) += budget-core.o budget.o ttpci-eeprom.o -+obj-$(CONFIG_DVB_BUDGET_AV) += budget-core.o budget-av.o ttpci-eeprom.o -+obj-$(CONFIG_DVB_BUDGET_CI) += budget-core.o budget-ci.o ttpci-eeprom.o -+obj-$(CONFIG_DVB_BUDGET_PATCH) += budget-core.o budget-patch.o ttpci-eeprom.o -+obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o ttpci-eeprom.o - - EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/ttpci-eeprom.c 2003-07-19 17:03:49.000000000 -0700 -@@ -0,0 +1,120 @@ -+/* -+ Retrieve encoded MAC address from 24C16 serial 2-wire EEPROM, -+ decode it and store it in the associated adapter struct for -+ use by dvb_net.c -+ -+ This code was tested on TT-Budget/WinTV-NOVA-CI PCI boards with -+ Atmel and ST Microelectronics EEPROMs. -+ -+ This card appear to have the 24C16 write protect held to ground, -+ thus permitting normal read/write operation. Theoretically it -+ would be possible to write routines to burn a different (encoded) -+ MAC address into the EEPROM. -+ -+ Robert Schlabbach GMX -+ Michael Glaum KVH Industries -+ Holger Waechtler Convergence -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+*/ -+ -+#include -+#include -+#include -+#include -+ -+#include "dvb_i2c.h" -+#include "dvb_functions.h" -+ -+#if 1 -+#define dprintk(x...) printk(x) -+#else -+#define dprintk(x...) -+#endif -+ -+ -+static int ttpci_eeprom_read_encodedMAC(struct dvb_i2c_bus *i2c, u8 * encodedMAC) -+{ -+ int ret; -+ u8 b0[] = { 0xd4 }; -+ -+ struct i2c_msg msg[] = { -+ {.addr = 0x50,.flags = 0,.buf = b0,.len = 1}, -+ {.addr = 0x50,.flags = I2C_M_RD,.buf = encodedMAC,.len = 6} -+ }; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ ret = i2c->xfer(i2c, msg, 2); -+ -+ if (ret != 2) /* Assume EEPROM isn't there */ -+ return (-ENODEV); -+ -+ return 0; -+} -+ -+static void decodeMAC(u8 * decodedMAC, const u8 * encodedMAC) -+{ -+ u8 ormask0[3] = { 0x54, 0x7B, 0x9E }; -+ u8 ormask1[3] = { 0xD3, 0xF1, 0x23 }; -+ u8 low; -+ u8 high; -+ u8 shift; -+ int i; -+ -+ decodedMAC[0] = 0x00; -+ decodedMAC[1] = 0xD0; -+ decodedMAC[2] = 0x5C; -+ -+ for (i = 0; i < 3; i++) { -+ low = encodedMAC[2 * i] ^ ormask0[i]; -+ high = encodedMAC[2 * i + 1] ^ ormask1[i]; -+ shift = (high >> 6) & 0x3; -+ -+ decodedMAC[5 - i] = ((high << 8) | low) >> shift; -+ } -+ -+} -+ -+ -+int ttpci_eeprom_parse_mac(struct dvb_i2c_bus *i2c) -+{ -+ int ret; -+ u8 encodedMAC[6]; -+ u8 decodedMAC[6]; -+ -+ ret = ttpci_eeprom_read_encodedMAC(i2c, encodedMAC); -+ -+ if (ret != 0) { /* Will only be -ENODEV */ -+ dprintk("Couldn't read from EEPROM: not there?\n"); -+ memset(i2c->adapter->proposed_mac, 0, 6); -+ return ret; -+ } -+ -+ decodeMAC(decodedMAC, encodedMAC); -+ memcpy(i2c->adapter->proposed_mac, decodedMAC, 6); -+ -+ dprintk("%s adapter %i has MAC addr = %02x:%02x:%02x:%02x:%02x:%02x\n", -+ i2c->adapter->name, i2c->adapter->num, -+ decodedMAC[0], decodedMAC[1], decodedMAC[2], -+ decodedMAC[3], decodedMAC[4], decodedMAC[5]); -+ dprintk("encoded MAC was %02x:%02x:%02x:%02x:%02x:%02x\n", -+ encodedMAC[0], encodedMAC[1], encodedMAC[2], -+ encodedMAC[3], encodedMAC[4], encodedMAC[5]); -+ return 0; -+} -+ -+EXPORT_SYMBOL(ttpci_eeprom_parse_mac); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttpci/ttpci-eeprom.h 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,32 @@ -+/* -+ Retrieve encoded MAC address from ATMEL ttpci_eeprom serial 2-wire EEPROM, -+ decode it and store it in associated adapter net device -+ -+ Robert Schlabbach GMX -+ Michael Glaum KVH Industries -+ Holger Waechtler Convergence -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ -+*/ -+ -+#ifndef __TTPCI_EEPROM_H__ -+#define __TTPCI_EEPROM_H__ -+ -+#include "dvb_i2c.h" -+ -+extern int ttpci_eeprom_parse_mac(struct dvb_i2c_bus *i2c); -+ -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,1271 @@ -+/* -+ * TTUSB DVB driver -+ * -+ * Copyright (c) 2002 Holger Waechtler -+ * Copyright (c) 2003 Felix Domke -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of -+ * the License, or (at your option) any later version. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "dvb_frontend.h" -+#include "dmxdev.h" -+#include "dvb_demux.h" -+#include "dvb_net.h" -+ -+#include -+#include -+#include -+#include -+ -+#include "dvb_functions.h" -+ -+/* -+ TTUSB_HWSECTIONS: -+ the DSP supports filtering in hardware, however, since the "muxstream" -+ is a bit braindead (no matching channel masks or no matching filter mask), -+ we won't support this - yet. it doesn't event support negative filters, -+ so the best way is maybe to keep TTUSB_HWSECTIONS undef'd and just -+ parse TS data. USB bandwith will be a problem when having large -+ datastreams, especially for dvb-net, but hey, that's not my problem. -+ -+ TTUSB_DISEQC, TTUSB_TONE: -+ let the STC do the diseqc/tone stuff. this isn't supported at least with -+ my TTUSB, so let it undef'd unless you want to implement another -+ frontend. never tested. -+ -+ DEBUG: -+ define it to > 3 for really hardcore debugging. you probably don't want -+ this unless the device doesn't load at all. > 2 for bandwidth statistics. -+*/ -+ -+static int debug = 0; -+ -+#define dprintk(x...) do { if (debug) printk(KERN_DEBUG x); } while (0) -+ -+#define ISO_BUF_COUNT 4 -+#define FRAMES_PER_ISO_BUF 4 -+#define ISO_FRAME_SIZE 912 -+#define TTUSB_MAXCHANNEL 32 -+#ifdef TTUSB_HWSECTIONS -+#define TTUSB_MAXFILTER 16 /* ??? */ -+#endif -+ -+#define TTUSB_BUDGET_NAME "ttusb_stc_fw" -+ -+/** -+ * since we're casting (struct ttusb*) <-> (struct dvb_demux*) around -+ * the dvb_demux field must be the first in struct!! -+ */ -+struct ttusb { -+ struct dvb_demux dvb_demux; -+ struct dmxdev dmxdev; -+ struct dvb_net dvbnet; -+ -+ /* our semaphore, for channel allocation/deallocation */ -+ struct semaphore sem; -+ /* and one for USB access. */ -+ struct semaphore semusb; -+ -+ struct dvb_adapter *adapter; -+ struct usb_device *dev; -+ -+ int disconnecting; -+ int iso_streaming; -+ -+ unsigned int bulk_out_pipe; -+ unsigned int bulk_in_pipe; -+ unsigned int isoc_in_pipe; -+ -+ void *iso_buffer; -+ dma_addr_t iso_dma_handle; -+ -+ struct urb *iso_urb[ISO_BUF_COUNT]; -+ -+ int running_feed_count; -+ int last_channel; -+ int last_filter; -+ -+ u8 c; /* transaction counter, wraps around... */ -+ fe_sec_tone_mode_t tone; -+ fe_sec_voltage_t voltage; -+ -+ int mux_state; // 0..2 - MuxSyncWord, 3 - nMuxPacks, 4 - muxpack -+ u8 mux_npacks; -+ u8 muxpack[256 + 8]; -+ int muxpack_ptr, muxpack_len; -+ -+ int insync; -+ -+ u16 cc; /* MuxCounter - will increment on EVERY MUX PACKET */ -+ /* (including stuffing. yes. really.) */ -+ -+ u8 last_result[32]; -+ -+ struct ttusb_channel { -+ struct ttusb *ttusb; -+ struct dvb_demux_feed *dvbdmxfeed; -+ -+ int active; -+ int id; -+ int pid; -+ int type; /* 1 - TS, 2 - Filter */ -+#ifdef TTUSB_HWSECTIONS -+ int filterstate[TTUSB_MAXFILTER]; /* 0: not busy, 1: busy */ -+#endif -+ } channel[TTUSB_MAXCHANNEL]; -+#if 0 -+ devfs_handle_t stc_devfs_handle; -+#endif -+}; -+ -+/* ugly workaround ... don't know why it's neccessary to read */ -+/* all result codes. */ -+ -+#define DEBUG 0 -+static int ttusb_cmd(struct ttusb *ttusb, -+ const u8 * data, int len, int needresult) -+{ -+ int actual_len; -+ int err; -+#if DEBUG >= 3 -+ int i; -+ -+ printk(">"); -+ for (i = 0; i < len; ++i) -+ printk(" %02x", data[i]); -+ printk("\n"); -+#endif -+ -+ if (down_interruptible(&ttusb->semusb) < 0) -+ return -EAGAIN; -+ -+ err = usb_bulk_msg(ttusb->dev, ttusb->bulk_out_pipe, -+ (u8 *) data, len, &actual_len, HZ); -+ if (err != 0) { -+ dprintk("%s: usb_bulk_msg(send) failed, err == %i!\n", -+ __FUNCTION__, err); -+ up(&ttusb->semusb); -+ return err; -+ } -+ if (actual_len != len) { -+ dprintk("%s: only wrote %d of %d bytes\n", __FUNCTION__, -+ actual_len, len); -+ up(&ttusb->semusb); -+ return -1; -+ } -+ -+ err = usb_bulk_msg(ttusb->dev, ttusb->bulk_in_pipe, -+ ttusb->last_result, 32, &actual_len, HZ); -+ -+ if (err != 0) { -+ printk("%s: failed, receive error %d\n", __FUNCTION__, -+ err); -+ up(&ttusb->semusb); -+ return err; -+ } -+#if DEBUG >= 3 -+ actual_len = ttusb->last_result[3] + 4; -+ printk("<"); -+ for (i = 0; i < actual_len; ++i) -+ printk(" %02x", ttusb->last_result[i]); -+ printk("\n"); -+#endif -+ if (!needresult) -+ up(&ttusb->semusb); -+ return 0; -+} -+ -+static int ttusb_result(struct ttusb *ttusb, u8 * data, int len) -+{ -+ memcpy(data, ttusb->last_result, len); -+ up(&ttusb->semusb); -+ return 0; -+} -+ -+static int ttusb_i2c_msg(struct ttusb *ttusb, -+ u8 addr, u8 * snd_buf, u8 snd_len, u8 * rcv_buf, -+ u8 rcv_len) -+{ -+ u8 b[0x28]; -+ u8 id = ++ttusb->c; -+ int i, err; -+ -+ if (snd_len > 0x28 - 7 || rcv_len > 0x20 - 7) -+ return -EINVAL; -+ -+ b[0] = 0xaa; -+ b[1] = id; -+ b[2] = 0x31; -+ b[3] = snd_len + 3; -+ b[4] = addr << 1; -+ b[5] = snd_len; -+ b[6] = rcv_len; -+ -+ for (i = 0; i < snd_len; i++) -+ b[7 + i] = snd_buf[i]; -+ -+ err = ttusb_cmd(ttusb, b, snd_len + 7, 1); -+ -+ if (err) -+ return -EREMOTEIO; -+ -+ err = ttusb_result(ttusb, b, 0x20); -+ -+ if (rcv_len > 0) { -+ -+ if (err || b[0] != 0x55 || b[1] != id) { -+ dprintk -+ ("%s: usb_bulk_msg(recv) failed, err == %i, id == %02x, b == ", -+ __FUNCTION__, err, id); -+ return -EREMOTEIO; -+ } -+ -+ for (i = 0; i < rcv_len; i++) -+ rcv_buf[i] = b[7 + i]; -+ } -+ -+ return rcv_len; -+} -+ -+static int ttusb_i2c_xfer(struct dvb_i2c_bus *i2c, const struct i2c_msg msg[], -+ int num) -+{ -+ struct ttusb *ttusb = i2c->data; -+ int i = 0; -+ int inc; -+ -+ if (down_interruptible(&ttusb->sem) < 0) -+ return -EAGAIN; -+ -+ while (i < num) { -+ u8 addr, snd_len, rcv_len, *snd_buf, *rcv_buf; -+ int err; -+ -+ if (num > i + 1 && (msg[i + 1].flags & I2C_M_RD)) { -+ addr = msg[i].addr; -+ snd_buf = msg[i].buf; -+ snd_len = msg[i].len; -+ rcv_buf = msg[i + 1].buf; -+ rcv_len = msg[i + 1].len; -+ inc = 2; -+ } else { -+ addr = msg[i].addr; -+ snd_buf = msg[i].buf; -+ snd_len = msg[i].len; -+ rcv_buf = NULL; -+ rcv_len = 0; -+ inc = 1; -+ } -+ -+ err = ttusb_i2c_msg(ttusb, addr, -+ snd_buf, snd_len, rcv_buf, rcv_len); -+ -+ if (err < rcv_len) { -+ printk("%s: i == %i\n", __FUNCTION__, i); -+ break; -+ } -+ -+ i += inc; -+ } -+ -+ up(&ttusb->sem); -+ return i; -+} -+ -+#include "dvb-ttusb-dspbootcode.h" -+ -+static int ttusb_boot_dsp(struct ttusb *ttusb) -+{ -+ int i, err; -+ u8 b[40]; -+ -+ /* BootBlock */ -+ b[0] = 0xaa; -+ b[2] = 0x13; -+ b[3] = 28; -+ -+ /* upload dsp code in 32 byte steps (36 didn't work for me ...) */ -+ /* 32 is max packet size, no messages should be splitted. */ -+ for (i = 0; i < sizeof(dsp_bootcode); i += 28) { -+ memcpy(&b[4], &dsp_bootcode[i], 28); -+ -+ b[1] = ++ttusb->c; -+ -+ err = ttusb_cmd(ttusb, b, 32, 0); -+ if (err) -+ goto done; -+ } -+ -+ /* last block ... */ -+ b[1] = ++ttusb->c; -+ b[2] = 0x13; -+ b[3] = 0; -+ -+ err = ttusb_cmd(ttusb, b, 4, 0); -+ if (err) -+ goto done; -+ -+ /* BootEnd */ -+ b[1] = ++ttusb->c; -+ b[2] = 0x14; -+ b[3] = 0; -+ -+ err = ttusb_cmd(ttusb, b, 4, 0); -+ -+ done: -+ if (err) { -+ dprintk("%s: usb_bulk_msg() failed, return value %i!\n", -+ __FUNCTION__, err); -+ } -+ -+ return err; -+} -+ -+static int ttusb_set_channel(struct ttusb *ttusb, int chan_id, int filter_type, -+ int pid) -+{ -+ int err; -+ /* SetChannel */ -+ u8 b[] = { 0xaa, ++ttusb->c, 0x22, 4, chan_id, filter_type, -+ (pid >> 8) & 0xff, pid & 0xff -+ }; -+ -+ err = ttusb_cmd(ttusb, b, sizeof(b), 0); -+ return err; -+} -+ -+static int ttusb_del_channel(struct ttusb *ttusb, int channel_id) -+{ -+ int err; -+ /* DelChannel */ -+ u8 b[] = { 0xaa, ++ttusb->c, 0x23, 1, channel_id }; -+ -+ err = ttusb_cmd(ttusb, b, sizeof(b), 0); -+ return err; -+} -+ -+#ifdef TTUSB_HWSECTIONS -+static int ttusb_set_filter(struct ttusb *ttusb, int filter_id, -+ int associated_chan, u8 filter[8], u8 mask[8]) -+{ -+ int err; -+ /* SetFilter */ -+ u8 b[] = { 0xaa, 0, 0x24, 0x1a, filter_id, associated_chan, -+ filter[0], filter[1], filter[2], filter[3], -+ filter[4], filter[5], filter[6], filter[7], -+ filter[8], filter[9], filter[10], filter[11], -+ mask[0], mask[1], mask[2], mask[3], -+ mask[4], mask[5], mask[6], mask[7], -+ mask[8], mask[9], mask[10], mask[11] -+ }; -+ -+ err = ttusb_cmd(ttusb, b, sizeof(b), 0); -+ return err; -+} -+ -+static int ttusb_del_filter(struct ttusb *ttusb, int filter_id) -+{ -+ int err; -+ /* DelFilter */ -+ u8 b[] = { 0xaa, ++ttusb->c, 0x25, 1, filter_id }; -+ -+ err = ttusb_cmd(ttusb, b, sizeof(b), 0); -+ return err; -+} -+#endif -+ -+static int ttusb_init_controller(struct ttusb *ttusb) -+{ -+ u8 b0[] = { 0xaa, ++ttusb->c, 0x15, 1, 0 }; -+ u8 b1[] = { 0xaa, ++ttusb->c, 0x15, 1, 1 }; -+ u8 b2[] = { 0xaa, ++ttusb->c, 0x32, 1, 0 }; -+ /* i2c write read: 5 bytes, addr 0x10, 0x02 bytes write, 1 bytes read. */ -+ u8 b3[] = -+ { 0xaa, ++ttusb->c, 0x31, 5, 0x10, 0x02, 0x01, 0x00, 0x1e }; -+ u8 b4[] = -+ { 0x55, ttusb->c, 0x31, 4, 0x10, 0x02, 0x01, 0x00, 0x1e }; -+ -+ u8 get_version[] = { 0xaa, ++ttusb->c, 0x17, 5, 0, 0, 0, 0, 0 }; -+ u8 get_dsp_version[0x20] = -+ { 0xaa, ++ttusb->c, 0x26, 28, 0, 0, 0, 0, 0 }; -+ int err; -+ -+ /* reset board */ -+ if ((err = ttusb_cmd(ttusb, b0, sizeof(b0), 0))) -+ return err; -+ -+ /* reset board (again?) */ -+ if ((err = ttusb_cmd(ttusb, b1, sizeof(b1), 0))) -+ return err; -+ -+ ttusb_boot_dsp(ttusb); -+ -+ /* set i2c bit rate */ -+ if ((err = ttusb_cmd(ttusb, b2, sizeof(b2), 0))) -+ return err; -+ -+ if ((err = ttusb_cmd(ttusb, b3, sizeof(b3), 1))) -+ return err; -+ -+ err = ttusb_result(ttusb, b4, sizeof(b4)); -+ -+ if ((err = ttusb_cmd(ttusb, get_version, sizeof(get_version), 1))) -+ return err; -+ -+ if ((err = ttusb_result(ttusb, get_version, sizeof(get_version)))) -+ return err; -+ -+ dprintk("%s: stc-version: %c%c%c%c%c\n", __FUNCTION__, -+ get_version[4], get_version[5], get_version[6], -+ get_version[7], get_version[8]); -+ -+ if (memcmp(get_version + 4, "V 0.0", 5) && -+ memcmp(get_version + 4, "V 1.1", 5)) { -+ printk -+ ("%s: unknown STC version %c%c%c%c%c, please report!\n", -+ __FUNCTION__, get_version[4], get_version[5], -+ get_version[6], get_version[7], get_version[8]); -+ } -+ -+ err = -+ ttusb_cmd(ttusb, get_dsp_version, sizeof(get_dsp_version), 1); -+ if (err) -+ return err; -+ -+ err = -+ ttusb_result(ttusb, get_dsp_version, sizeof(get_dsp_version)); -+ if (err) -+ return err; -+ printk("%s: dsp-version: %c%c%c\n", __FUNCTION__, -+ get_dsp_version[4], get_dsp_version[5], get_dsp_version[6]); -+ return 0; -+} -+ -+#ifdef TTUSB_DISEQC -+static int ttusb_send_diseqc(struct ttusb *ttusb, -+ const struct dvb_diseqc_master_cmd *cmd) -+{ -+ u8 b[12] = { 0xaa, ++ttusb->c, 0x18 }; -+ -+ int err; -+ -+ b[3] = 4 + 2 + cmd->msg_len; -+ b[4] = 0xFF; /* send diseqc master, not burst */ -+ b[5] = cmd->msg_len; -+ -+ memcpy(b + 5, cmd->msg, cmd->msg_len); -+ -+ /* Diseqc */ -+ if ((err = ttusb_cmd(ttusb, b, 4 + b[3], 0))) { -+ dprintk("%s: usb_bulk_msg() failed, return value %i!\n", -+ __FUNCTION__, err); -+ } -+ -+ return err; -+} -+#endif -+ -+static int ttusb_update_lnb(struct ttusb *ttusb) -+{ -+ u8 b[] = { 0xaa, ++ttusb->c, 0x16, 5, /*power: */ 1, -+ ttusb->voltage == SEC_VOLTAGE_18 ? 0 : 1, -+ ttusb->tone == SEC_TONE_ON ? 1 : 0, 1, 1 -+ }; -+ int err; -+ -+ /* SetLNB */ -+ if ((err = ttusb_cmd(ttusb, b, sizeof(b), 0))) { -+ dprintk("%s: usb_bulk_msg() failed, return value %i!\n", -+ __FUNCTION__, err); -+ } -+ -+ return err; -+} -+ -+static int ttusb_set_voltage(struct ttusb *ttusb, fe_sec_voltage_t voltage) -+{ -+ ttusb->voltage = voltage; -+ return ttusb_update_lnb(ttusb); -+} -+ -+#ifdef TTUSB_TONE -+static int ttusb_set_tone(struct ttusb *ttusb, fe_sec_tone_mode_t tone) -+{ -+ ttusb->tone = tone; -+ return ttusb_update_lnb(ttusb); -+} -+#endif -+ -+static int ttusb_lnb_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg) -+{ -+ struct ttusb *ttusb = fe->i2c->data; -+ -+ switch (cmd) { -+ case FE_SET_VOLTAGE: -+ return ttusb_set_voltage(ttusb, (fe_sec_voltage_t) arg); -+#ifdef TTUSB_TONE -+ case FE_SET_TONE: -+ return ttusb_set_tone(ttusb, (fe_sec_tone_mode_t) arg); -+#endif -+#ifdef TTUSB_DISEQC -+ case FE_DISEQC_SEND_MASTER_CMD: -+ return ttusb_send_diseqc(ttusb, -+ (struct dvb_diseqc_master_cmd *) -+ arg); -+#endif -+ default: -+ return -EOPNOTSUPP; -+ }; -+} -+ -+#if 0 -+static void ttusb_set_led_freq(struct ttusb *ttusb, u8 freq) -+{ -+ u8 b[] = { 0xaa, ++ttusb->c, 0x19, 1, freq }; -+ int err, actual_len; -+ -+ err = ttusb_cmd(ttusb, b, sizeof(b), 0); -+ if (err) { -+ dprintk("%s: usb_bulk_msg() failed, return value %i!\n", -+ __FUNCTION__, err); -+ } -+} -+#endif -+ -+/*****************************************************************************/ -+ -+#ifdef TTUSB_HWSECTIONS -+static void ttusb_handle_ts_data(struct ttusb_channel *channel, -+ const u8 * data, int len); -+static void ttusb_handle_sec_data(struct ttusb_channel *channel, -+ const u8 * data, int len); -+#endif -+ -+int numpkt = 0, lastj, numts, numstuff, numsec, numinvalid; -+ -+static void ttusb_process_muxpack(struct ttusb *ttusb, const u8 * muxpack, -+ int len) -+{ -+ u16 csum = 0, cc; -+ int i; -+ for (i = 0; i < len; i += 2) -+ csum ^= le16_to_cpup((u16 *) (muxpack + i)); -+ if (csum) { -+ printk("%s: muxpack with incorrect checksum, ignoring\n", -+ __FUNCTION__); -+ numinvalid++; -+ return; -+ } -+ -+ cc = (muxpack[len - 4] << 8) | muxpack[len - 3]; -+ cc &= 0x7FFF; -+ if (cc != ttusb->cc) -+ printk("%s: cc discontinuity (%d frames missing)\n", -+ __FUNCTION__, (cc - ttusb->cc) & 0x7FFF); -+ ttusb->cc = (cc + 1) & 0x7FFF; -+ if (muxpack[0] & 0x80) { -+#ifdef TTUSB_HWSECTIONS -+ /* section data */ -+ int pusi = muxpack[0] & 0x40; -+ int channel = muxpack[0] & 0x1F; -+ int payload = muxpack[1]; -+ const u8 *data = muxpack + 2; -+ /* check offset flag */ -+ if (muxpack[0] & 0x20) -+ data++; -+ -+ ttusb_handle_sec_data(ttusb->channel + channel, data, -+ payload); -+ data += payload; -+ -+ if ((!!(ttusb->muxpack[0] & 0x20)) ^ -+ !!(ttusb->muxpack[1] & 1)) -+ data++; -+#warning TODO: pusi -+ printk("cc: %04x\n", (data[0] << 8) | data[1]); -+#endif -+ numsec++; -+ } else if (muxpack[0] == 0x47) { -+#ifdef TTUSB_HWSECTIONS -+ /* we have TS data here! */ -+ int pid = ((muxpack[1] & 0x0F) << 8) | muxpack[2]; -+ int channel; -+ for (channel = 0; channel < TTUSB_MAXCHANNEL; ++channel) -+ if (ttusb->channel[channel].active -+ && (pid == ttusb->channel[channel].pid)) -+ ttusb_handle_ts_data(ttusb->channel + -+ channel, muxpack, -+ 188); -+#endif -+ numts++; -+ dvb_dmx_swfilter_packets(&ttusb->dvb_demux, muxpack, 1); -+ } else if (muxpack[0] != 0) { -+ numinvalid++; -+ printk("illegal muxpack type %02x\n", muxpack[0]); -+ } else -+ numstuff++; -+} -+ -+static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len) -+{ -+ int maxwork = 1024; -+ while (len) { -+ if (!(maxwork--)) { -+ printk("%s: too much work\n", __FUNCTION__); -+ break; -+ } -+ -+ switch (ttusb->mux_state) { -+ case 0: -+ case 1: -+ case 2: -+ len--; -+ if (*data++ == 0xAA) -+ ++ttusb->mux_state; -+ else { -+ ttusb->mux_state = 0; -+#if DEBUG > 3 -+ if (ttusb->insync) -+ printk("%02x ", data[-1]); -+#else -+ if (ttusb->insync) { -+ printk("%s: lost sync.\n", -+ __FUNCTION__); -+ ttusb->insync = 0; -+ } -+#endif -+ } -+ break; -+ case 3: -+ ttusb->insync = 1; -+ len--; -+ ttusb->mux_npacks = *data++; -+ ++ttusb->mux_state; -+ ttusb->muxpack_ptr = 0; -+ /* maximum bytes, until we know the length */ -+ ttusb->muxpack_len = 2; -+ break; -+ case 4: -+ { -+ int avail; -+ avail = len; -+ if (avail > -+ (ttusb->muxpack_len - -+ ttusb->muxpack_ptr)) -+ avail = -+ ttusb->muxpack_len - -+ ttusb->muxpack_ptr; -+ memcpy(ttusb->muxpack + ttusb->muxpack_ptr, -+ data, avail); -+ ttusb->muxpack_ptr += avail; -+ if (ttusb->muxpack_ptr > 264) -+ BUG(); -+ data += avail; -+ len -= avail; -+ /* determine length */ -+ if (ttusb->muxpack_ptr == 2) { -+ if (ttusb->muxpack[0] & 0x80) { -+ ttusb->muxpack_len = -+ ttusb->muxpack[1] + 2; -+ if (ttusb-> -+ muxpack[0] & 0x20) -+ ttusb-> -+ muxpack_len++; -+ if ((!! -+ (ttusb-> -+ muxpack[0] & 0x20)) ^ -+ !!(ttusb-> -+ muxpack[1] & 1)) -+ ttusb-> -+ muxpack_len++; -+ ttusb->muxpack_len += 4; -+ } else if (ttusb->muxpack[0] == -+ 0x47) -+ ttusb->muxpack_len = -+ 188 + 4; -+ else if (ttusb->muxpack[0] == 0x00) -+ ttusb->muxpack_len = -+ ttusb->muxpack[1] + 2 + -+ 4; -+ else { -+ dprintk -+ ("%s: invalid state: first byte is %x\n", -+ __FUNCTION__, -+ ttusb->muxpack[0]); -+ ttusb->mux_state = 0; -+ } -+ } -+ -+ /** -+ * if length is valid and we reached the end: -+ * goto next muxpack -+ */ -+ if ((ttusb->muxpack_ptr >= 2) && -+ (ttusb->muxpack_ptr == -+ ttusb->muxpack_len)) { -+ ttusb_process_muxpack(ttusb, -+ ttusb-> -+ muxpack, -+ ttusb-> -+ muxpack_ptr); -+ ttusb->muxpack_ptr = 0; -+ /* maximum bytes, until we know the length */ -+ ttusb->muxpack_len = 2; -+ -+ /** -+ * no muxpacks left? -+ * return to search-sync state -+ */ -+ if (!ttusb->mux_npacks--) { -+ ttusb->mux_state = 0; -+ break; -+ } -+ } -+ break; -+ } -+ default: -+ BUG(); -+ break; -+ } -+ } -+} -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+static void ttusb_iso_irq(struct urb *urb) -+#else -+static void ttusb_iso_irq(struct urb *urb, struct pt_regs *ptregs) -+#endif -+{ -+ struct ttusb *ttusb = urb->context; -+ -+ if (!ttusb->iso_streaming) -+ return; -+ -+#if 0 -+ printk("%s: status %d, errcount == %d, length == %i\n", -+ __FUNCTION__, -+ urb->status, urb->error_count, urb->actual_length); -+#endif -+ -+ if (!urb->status) { -+ int i; -+ for (i = 0; i < urb->number_of_packets; ++i) { -+ struct usb_iso_packet_descriptor *d; -+ u8 *data; -+ int len; -+ numpkt++; -+ if ((jiffies - lastj) >= HZ) { -+#if DEBUG > 2 -+ printk -+ ("frames/s: %d (ts: %d, stuff %d, sec: %d, invalid: %d, all: %d)\n", -+ numpkt * HZ / (jiffies - lastj), -+ numts, numstuff, numsec, numinvalid, -+ numts + numstuff + numsec + -+ numinvalid); -+#endif -+ numts = numstuff = numsec = numinvalid = 0; -+ lastj = jiffies; -+ numpkt = 0; -+ } -+ d = &urb->iso_frame_desc[i]; -+ data = urb->transfer_buffer + d->offset; -+ len = d->actual_length; -+ d->actual_length = 0; -+ d->status = 0; -+ ttusb_process_frame(ttusb, data, len); -+ } -+ } -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -+ usb_submit_urb(urb, GFP_KERNEL); -+#endif -+} -+ -+static void ttusb_free_iso_urbs(struct ttusb *ttusb) -+{ -+ int i; -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) -+ if (ttusb->iso_urb[i]) -+ usb_free_urb(ttusb->iso_urb[i]); -+ -+ pci_free_consistent(NULL, -+ ISO_FRAME_SIZE * FRAMES_PER_ISO_BUF * -+ ISO_BUF_COUNT, ttusb->iso_buffer, -+ ttusb->iso_dma_handle); -+} -+ -+static int ttusb_alloc_iso_urbs(struct ttusb *ttusb) -+{ -+ int i; -+ -+ ttusb->iso_buffer = pci_alloc_consistent(NULL, -+ ISO_FRAME_SIZE * -+ FRAMES_PER_ISO_BUF * -+ ISO_BUF_COUNT, -+ &ttusb->iso_dma_handle); -+ -+ memset(ttusb->iso_buffer, 0, -+ ISO_FRAME_SIZE * FRAMES_PER_ISO_BUF * ISO_BUF_COUNT); -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ struct urb *urb; -+ -+ if (! -+ (urb = -+ usb_alloc_urb(FRAMES_PER_ISO_BUF, GFP_KERNEL))) { -+ ttusb_free_iso_urbs(ttusb); -+ return -ENOMEM; -+ } -+ -+ ttusb->iso_urb[i] = urb; -+ } -+ -+ return 0; -+} -+ -+static void ttusb_stop_iso_xfer(struct ttusb *ttusb) -+{ -+ int i; -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) -+ usb_unlink_urb(ttusb->iso_urb[i]); -+ -+ ttusb->iso_streaming = 0; -+} -+ -+static int ttusb_start_iso_xfer(struct ttusb *ttusb) -+{ -+ int i, j, err, buffer_offset = 0; -+ -+ if (ttusb->iso_streaming) { -+ printk("%s: iso xfer already running!\n", __FUNCTION__); -+ return 0; -+ } -+ -+ ttusb->insync = 0; -+ ttusb->mux_state = 0; -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ int frame_offset = 0; -+ struct urb *urb = ttusb->iso_urb[i]; -+ -+ urb->dev = ttusb->dev; -+ urb->context = ttusb; -+ urb->complete = ttusb_iso_irq; -+ urb->pipe = ttusb->isoc_in_pipe; -+ urb->transfer_flags = URB_ISO_ASAP; -+ urb->number_of_packets = FRAMES_PER_ISO_BUF; -+ urb->transfer_buffer_length = -+ ISO_FRAME_SIZE * FRAMES_PER_ISO_BUF; -+ urb->transfer_buffer = ttusb->iso_buffer + buffer_offset; -+ buffer_offset += ISO_FRAME_SIZE * FRAMES_PER_ISO_BUF; -+ -+ for (j = 0; j < FRAMES_PER_ISO_BUF; j++) { -+ urb->iso_frame_desc[j].offset = frame_offset; -+ urb->iso_frame_desc[j].length = ISO_FRAME_SIZE; -+ frame_offset += ISO_FRAME_SIZE; -+ } -+ } -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ int next = (i + 1) % ISO_BUF_COUNT; -+ ttusb->iso_urb[i]->next = ttusb->iso_urb[next]; -+ } -+#endif -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ if ((err = usb_submit_urb(ttusb->iso_urb[i], GFP_KERNEL))) { -+ ttusb_stop_iso_xfer(ttusb); -+ printk -+ ("%s: failed urb submission (%i: err = %i)!\n", -+ __FUNCTION__, i, err); -+ return err; -+ } -+ } -+ -+ ttusb->iso_streaming = 1; -+ -+ return 0; -+} -+ -+#ifdef TTUSB_HWSECTIONS -+static void ttusb_handle_ts_data(struct ttusb_channel *channel, const u8 * data, -+ int len) -+{ -+ struct dvb_demux_feed *dvbdmxfeed = channel->dvbdmxfeed; -+ -+ dvbdmxfeed->cb.ts(data, len, 0, 0, &dvbdmxfeed->feed.ts, 0); -+} -+ -+static void ttusb_handle_sec_data(struct ttusb_channel *channel, const u8 * data, -+ int len) -+{ -+// struct dvb_demux_feed *dvbdmxfeed = channel->dvbdmxfeed; -+#error TODO: handle ugly stuff -+// dvbdmxfeed->cb.sec(data, len, 0, 0, &dvbdmxfeed->feed.sec, 0); -+} -+#endif -+ -+static struct ttusb_channel *ttusb_channel_allocate(struct ttusb *ttusb) -+{ -+ int i; -+ -+ if (down_interruptible(&ttusb->sem)) -+ return NULL; -+ -+ /* lock! */ -+ for (i = 0; i < TTUSB_MAXCHANNEL; ++i) { -+ if (!ttusb->channel[i].active) { -+ ttusb->channel[i].active = 1; -+ up(&ttusb->sem); -+ return ttusb->channel + i; -+ } -+ } -+ -+ up(&ttusb->sem); -+ -+ return NULL; -+} -+ -+static int ttusb_start_feed(struct dvb_demux_feed *dvbdmxfeed) -+{ -+ struct ttusb *ttusb = (struct ttusb *) dvbdmxfeed->demux; -+ struct ttusb_channel *channel; -+ -+ printk("ttusb_start_feed\n"); -+ -+ switch (dvbdmxfeed->type) { -+ case DMX_TYPE_TS: -+ break; -+ case DMX_TYPE_SEC: -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ if (dvbdmxfeed->type == DMX_TYPE_TS) { -+ switch (dvbdmxfeed->pes_type) { -+ case DMX_TS_PES_VIDEO: -+ case DMX_TS_PES_AUDIO: -+ case DMX_TS_PES_TELETEXT: -+ case DMX_TS_PES_PCR: -+ case DMX_TS_PES_OTHER: -+ channel = ttusb_channel_allocate(ttusb); -+ break; -+ default: -+ return -EINVAL; -+ } -+ } else { -+ channel = ttusb_channel_allocate(ttusb); -+ } -+ -+ if (!channel) -+ return -EBUSY; -+ -+ dvbdmxfeed->priv = channel; -+ channel->dvbdmxfeed = dvbdmxfeed; -+ -+ channel->pid = dvbdmxfeed->pid; -+ -+#ifdef TTUSB_HWSECTIONS -+ if (dvbdmxfeed->type == DMX_TYPE_TS) { -+ channel->type = 1; -+ } else if (dvbdmxfeed->type == DMX_TYPE_SEC) { -+ channel->type = 2; -+#error TODO: allocate filters -+ } -+#else -+ channel->type = 1; -+#endif -+ -+ ttusb_set_channel(ttusb, channel->id, channel->type, channel->pid); -+ -+ if (0 == ttusb->running_feed_count++) -+ ttusb_start_iso_xfer(ttusb); -+ -+ return 0; -+} -+ -+static int ttusb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) -+{ -+ struct ttusb_channel *channel = -+ (struct ttusb_channel *) dvbdmxfeed->priv; -+ struct ttusb *ttusb = (struct ttusb *) dvbdmxfeed->demux; -+ -+ ttusb_del_channel(channel->ttusb, channel->id); -+ -+ if (--ttusb->running_feed_count == 0) -+ ttusb_stop_iso_xfer(ttusb); -+ -+ channel->active = 0; -+ -+ return 0; -+} -+ -+static int ttusb_setup_interfaces(struct ttusb *ttusb) -+{ -+ usb_set_configuration(ttusb->dev, 1); -+ usb_set_interface(ttusb->dev, 1, 1); -+ -+ ttusb->bulk_out_pipe = usb_sndbulkpipe(ttusb->dev, 1); -+ ttusb->bulk_in_pipe = usb_rcvbulkpipe(ttusb->dev, 1); -+ ttusb->isoc_in_pipe = usb_rcvisocpipe(ttusb->dev, 2); -+ -+ return 0; -+} -+ -+#if 0 -+static u8 stc_firmware[8192]; -+ -+static int stc_open(struct inode *inode, struct file *file) -+{ -+ struct ttusb *ttusb = file->private_data; -+ int addr; -+ -+ for (addr = 0; addr < 8192; addr += 16) { -+ u8 snd_buf[2] = { addr >> 8, addr & 0xFF }; -+ ttusb_i2c_msg(ttusb, 0x50, snd_buf, 2, stc_firmware + addr, -+ 16); -+ } -+ -+ return 0; -+} -+ -+static ssize_t stc_read(struct file *file, char *buf, size_t count, -+ loff_t * offset) -+{ -+ int tc = count; -+ -+ if ((tc + *offset) > 8192) -+ tc = 8192 - *offset; -+ -+ if (tc < 0) -+ return 0; -+ -+ copy_to_user(buf, stc_firmware + *offset, tc); -+ -+ *offset += tc; -+ -+ return tc; -+} -+ -+static int stc_release(struct inode *inode, struct file *file) -+{ -+ return 0; -+} -+ -+static struct file_operations stc_fops = { -+ .owner = THIS_MODULE, -+ .read = stc_read, -+ .open = stc_open, -+ .release = stc_release, -+}; -+#endif -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+static void *ttusb_probe(struct usb_device *udev, unsigned int ifnum, -+ const struct usb_device_id *id) -+{ -+ struct ttusb *ttusb; -+ int result, channel; -+ -+ if (ifnum != 0) -+ return NULL; -+ -+ dprintk("%s: TTUSB DVB connected\n", __FUNCTION__); -+ -+ if (!(ttusb = kmalloc(sizeof(struct ttusb), GFP_KERNEL))) -+ return NULL; -+ -+#else -+static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *id) -+{ -+ struct usb_device *udev; -+ struct ttusb *ttusb; -+ int result, channel; -+ -+ dprintk("%s: TTUSB DVB connected\n", __FUNCTION__); -+ -+ udev = interface_to_usbdev(intf); -+ -+ if (!(ttusb = kmalloc(sizeof(struct ttusb), GFP_KERNEL))) -+ return -ENOMEM; -+ -+#endif -+ -+ memset(ttusb, 0, sizeof(struct ttusb)); -+ -+ for (channel = 0; channel < TTUSB_MAXCHANNEL; ++channel) { -+ ttusb->channel[channel].id = channel; -+ ttusb->channel[channel].ttusb = ttusb; -+ } -+ -+ ttusb->dev = udev; -+ ttusb->c = 0; -+ ttusb->mux_state = 0; -+ sema_init(&ttusb->sem, 0); -+ sema_init(&ttusb->semusb, 1); -+ -+ ttusb_setup_interfaces(ttusb); -+ -+ ttusb_alloc_iso_urbs(ttusb); -+ if (ttusb_init_controller(ttusb)) -+ printk("ttusb_init_controller: error\n"); -+ -+ up(&ttusb->sem); -+ -+ dvb_register_adapter(&ttusb->adapter, -+ "Technotrend/Hauppauge Nova-USB"); -+ -+ dvb_register_i2c_bus(ttusb_i2c_xfer, ttusb, ttusb->adapter, 0); -+ dvb_add_frontend_ioctls(ttusb->adapter, ttusb_lnb_ioctl, NULL, -+ ttusb); -+ -+ memset(&ttusb->dvb_demux, 0, sizeof(ttusb->dvb_demux)); -+ -+ ttusb->dvb_demux.dmx.capabilities = -+ DMX_TS_FILTERING | DMX_SECTION_FILTERING; -+ ttusb->dvb_demux.priv = 0; -+#ifdef TTUSB_HWSECTIONS -+ ttusb->dvb_demux.filternum = TTUSB_MAXFILTER; -+#else -+ ttusb->dvb_demux.filternum = 32; -+#endif -+ ttusb->dvb_demux.feednum = TTUSB_MAXCHANNEL; -+ ttusb->dvb_demux.start_feed = ttusb_start_feed; -+ ttusb->dvb_demux.stop_feed = ttusb_stop_feed; -+ ttusb->dvb_demux.write_to_decoder = 0; -+ -+ if ((result = dvb_dmx_init(&ttusb->dvb_demux)) < 0) { -+ printk("ttusb_dvb: dvb_dmx_init failed (errno = %d)\n", -+ result); -+ goto err; -+ } -+//FIXME dmxdev (nur WAS?) -+ ttusb->dmxdev.filternum = ttusb->dvb_demux.filternum; -+ ttusb->dmxdev.demux = &ttusb->dvb_demux.dmx; -+ ttusb->dmxdev.capabilities = 0; -+ -+ if ((result = dvb_dmxdev_init(&ttusb->dmxdev, ttusb->adapter)) < 0) { -+ printk("ttusb_dvb: dvb_dmxdev_init failed (errno = %d)\n", -+ result); -+ dvb_dmx_release(&ttusb->dvb_demux); -+ goto err; -+ } -+ -+ if (dvb_net_init -+ (ttusb->adapter, &ttusb->dvbnet, &ttusb->dvb_demux.dmx)) { -+ printk("ttusb_dvb: dvb_net_init failed!\n"); -+ } -+ -+ err: -+#if 0 -+ ttusb->stc_devfs_handle = -+ devfs_register(ttusb->adapter->devfs_handle, TTUSB_BUDGET_NAME, -+ DEVFS_FL_DEFAULT, 0, 192, -+ S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP -+ | S_IROTH | S_IWOTH, &stc_fops, ttusb); -+#endif -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ return (void *) ttusb; -+#else -+ usb_set_intfdata(intf, (void *) ttusb); -+ -+ return 0; -+#endif -+} -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+static void ttusb_disconnect(struct usb_device *udev, void *data) -+{ -+ struct ttusb *ttusb = data; -+#else -+static void ttusb_disconnect(struct usb_interface *intf) -+{ -+ struct ttusb *ttusb = usb_get_intfdata(intf); -+ -+ usb_set_intfdata(intf, NULL); -+#endif -+ -+ ttusb->disconnecting = 1; -+ -+ ttusb_stop_iso_xfer(ttusb); -+ -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,69)) -+#undef devfs_remove -+#define devfs_remove(x) devfs_unregister(ttusb->stc_devfs_handle); -+#endif -+#if 0 -+ devfs_remove(TTUSB_BUDGET_NAME); -+#endif -+ ttusb->dvb_demux.dmx.close(&ttusb->dvb_demux.dmx); -+ dvb_net_release(&ttusb->dvbnet); -+ dvb_dmxdev_release(&ttusb->dmxdev); -+ dvb_dmx_release(&ttusb->dvb_demux); -+ -+ dvb_unregister_i2c_bus(ttusb_i2c_xfer, ttusb->adapter, 0); -+ dvb_unregister_adapter(ttusb->adapter); -+ -+ ttusb_free_iso_urbs(ttusb); -+ -+ kfree(ttusb); -+ -+ dprintk("%s: TTUSB DVB disconnected\n", __FUNCTION__); -+} -+ -+static struct usb_device_id ttusb_table[] = { -+ {USB_DEVICE(0xb48, 0x1003)}, -+ {USB_DEVICE(0xb48, 0x1004)}, /* to be confirmed ???? */ -+ {USB_DEVICE(0xb48, 0x1005)}, /* to be confirmed ???? */ -+ {} -+}; -+ -+MODULE_DEVICE_TABLE(usb, ttusb_table); -+ -+static struct usb_driver ttusb_driver = { -+ .name = "Technotrend/Hauppauge USB-Nova", -+ .probe = ttusb_probe, -+ .disconnect = ttusb_disconnect, -+ .id_table = ttusb_table, -+}; -+ -+static int __init ttusb_init(void) -+{ -+ int err; -+ -+ if ((err = usb_register(&ttusb_driver)) < 0) { -+ printk("%s: usb_register failed! Error number %d", -+ __FILE__, err); -+ return -1; -+ } -+ -+ return 0; -+} -+ -+static void __exit ttusb_exit(void) -+{ -+ usb_deregister(&ttusb_driver); -+} -+ -+module_init(ttusb_init); -+module_exit(ttusb_exit); -+ -+MODULE_PARM(debug, "i"); -+MODULE_PARM_DESC(debug, "Debug or not"); -+ -+MODULE_AUTHOR("Holger Waechtler "); -+MODULE_DESCRIPTION("TTUSB DVB Driver"); -+MODULE_LICENSE("GPL"); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,1644 @@ -+ -+#include -+ -+u8 dsp_bootcode [] __initdata = { -+ 0x08, 0xaa, 0x00, 0x18, 0x00, 0x03, 0x08, 0x00, -+ 0x00, 0x10, 0x00, 0x00, 0x01, 0x80, 0x18, 0x5f, -+ 0x00, 0x00, 0x01, 0x80, 0x77, 0x18, 0x2a, 0xeb, -+ 0x6b, 0xf8, 0x00, 0x18, 0x03, 0xff, 0x68, 0xf8, -+ 0x00, 0x18, 0xff, 0xfe, 0xf7, 0xb8, 0xf7, 0xbe, -+ 0xf6, 0xb9, 0xf4, 0xa0, 0xf6, 0xb7, 0xf6, 0xb5, -+ 0xf6, 0xb6, 0xf0, 0x20, 0x19, 0xdf, 0xf1, 0x00, -+ 0x00, 0x01, 0xf8, 0x4d, 0x01, 0xab, 0xf6, 0xb8, -+ 0xf0, 0x20, 0x19, 0xdf, 0xf0, 0x73, 0x01, 0xa5, -+ 0x7e, 0xf8, 0x00, 0x12, 0xf0, 0x00, 0x00, 0x01, -+ 0x47, 0xf8, 0x00, 0x11, 0x7e, 0x92, 0x00, 0xf8, -+ 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x7e, 0xf8, -+ 0x00, 0x11, 0xf0, 0x00, 0x00, 0x01, 0x6c, 0x89, -+ 0x01, 0x9a, 0xf7, 0xb8, 0xee, 0xfc, 0xf0, 0x20, -+ 0xff, 0xff, 0xf1, 0x00, 0x00, 0x01, 0xf8, 0x4d, -+ 0x01, 0xbf, 0xf2, 0x73, 0x01, 0xb9, 0x4e, 0x02, -+ 0xf4, 0x95, 0xf5, 0xe3, 0x56, 0x02, 0x7e, 0x00, -+ 0x11, 0x00, 0xfa, 0x4c, 0x01, 0xb7, 0x6b, 0x03, -+ 0x00, 0x01, 0xf6, 0xb8, 0xee, 0x04, 0xf0, 0x74, -+ 0x0d, 0xa7, 0xf0, 0x74, 0x01, 0xc5, 0x4a, 0x11, -+ 0x4a, 0x16, 0x72, 0x11, 0x2a, 0xe6, 0x10, 0xf8, -+ 0x00, 0x11, 0xfa, 0x45, 0x01, 0xdb, 0xf4, 0x95, -+ 0xee, 0xff, 0x48, 0x11, 0xf0, 0x00, 0x2a, 0xc6, -+ 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0xee, -+ 0xff, 0xff, 0xf4, 0xe3, 0x6c, 0xe9, 0xff, 0xff, -+ 0x01, 0xd5, 0x10, 0xf8, 0x2a, 0xe7, 0xf8, 0x45, -+ 0x01, 0xe2, 0x10, 0xf8, 0x2a, 0xe7, 0xf4, 0xe3, -+ 0xf0, 0x74, 0x01, 0xff, 0xee, 0x01, 0x8a, 0x16, -+ 0x8a, 0x11, 0xfc, 0x00, 0xf7, 0xb8, 0xe9, 0x20, -+ 0x4a, 0x11, 0x09, 0xf8, 0x2a, 0xe6, 0xf8, 0x4e, -+ 0x01, 0xf3, 0xf2, 0x73, 0x01, 0xfd, 0xf4, 0x95, -+ 0xe8, 0x01, 0x72, 0x11, 0x2a, 0xe6, 0x49, 0x11, -+ 0x80, 0xe1, 0x2a, 0xc6, 0xf3, 0x00, 0x00, 0x01, -+ 0xe8, 0x00, 0x81, 0xf8, 0x2a, 0xe6, 0x8a, 0x11, -+ 0xfc, 0x00, 0xf4, 0x95, 0xf0, 0x73, 0x02, 0x00, -+ 0x10, 0xf8, 0x2a, 0x0f, 0xfc, 0x00, 0x4a, 0x11, -+ 0xf0, 0x74, 0x02, 0x02, 0x80, 0xf8, 0x2a, 0x10, -+ 0x73, 0x08, 0x00, 0x09, 0x40, 0xf8, 0x2a, 0x15, -+ 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, -+ 0x03, 0xe8, 0xf5, 0xa9, 0xf8, 0x30, 0x02, 0x21, -+ 0x71, 0xf8, 0x2a, 0x10, 0x2a, 0x15, 0x56, 0xf8, -+ 0x2a, 0x0c, 0xf0, 0xe3, 0x4e, 0xf8, 0x2a, 0x16, -+ 0xe8, 0x00, 0x4e, 0xf8, 0x2a, 0x0c, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, -+ 0x68, 0xf8, 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, -+ 0x00, 0x07, 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, -+ 0xff, 0xfc, 0x6b, 0xf8, 0x2a, 0x0f, 0x00, 0x01, -+ 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x06, 0xf4, 0xeb, -+ 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x0f, 0x00, 0x00, -+ 0x76, 0x00, 0x00, 0x00, 0xfb, 0x80, 0x19, 0x4c, -+ 0xf4, 0x95, 0xe8, 0x00, 0x80, 0xf8, 0x2a, 0x11, -+ 0xf9, 0x80, 0x19, 0x07, 0x80, 0xf8, 0x2a, 0x0e, -+ 0xf9, 0x80, 0x16, 0x66, 0x76, 0x00, 0x2a, 0x12, -+ 0x10, 0xf8, 0x2a, 0x11, 0xf9, 0x80, 0x18, 0xe3, -+ 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x66, -+ 0x10, 0xf8, 0x2a, 0x0e, 0xf9, 0x80, 0x16, 0x87, -+ 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf6, 0xb8, -+ 0xf4, 0x95, 0xf0, 0x20, 0x80, 0x00, 0x11, 0xf8, -+ 0x2a, 0x5a, 0xf8, 0x4d, 0x02, 0x93, 0x11, 0xf8, -+ 0x2a, 0x9f, 0xf8, 0x4c, 0x02, 0x7c, 0x77, 0x12, -+ 0x2a, 0x39, 0x49, 0x12, 0x01, 0xf8, 0x2a, 0x9f, -+ 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, -+ 0x00, 0x11, 0x6c, 0xe1, 0xff, 0xab, 0x02, 0x93, -+ 0x6b, 0xf8, 0x2a, 0x9f, 0x00, 0x01, 0xe9, 0x05, -+ 0x01, 0xe2, 0x00, 0x03, 0x81, 0xf8, 0x2a, 0xa0, -+ 0xf0, 0x73, 0x02, 0x95, 0x72, 0x11, 0x2a, 0x9f, -+ 0xf4, 0x95, 0x10, 0xe1, 0x2a, 0x39, 0x6b, 0xf8, -+ 0x2a, 0x9f, 0x00, 0x01, 0x11, 0xf8, 0x2a, 0x9f, -+ 0x09, 0xf8, 0x2a, 0xa0, 0xf8, 0x4c, 0x02, 0x93, -+ 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, 0x76, 0xf8, -+ 0x2a, 0x9f, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa0, -+ 0x00, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x48, 0x11, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, -+ 0x10, 0xf8, 0x2a, 0x5a, 0xf8, 0x44, 0x02, 0xb2, -+ 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x01, 0xf0, 0x74, -+ 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, -+ 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, 0x02, 0xb2, -+ 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, 0x80, 0x00, -+ 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0xd6, -+ 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, -+ 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, -+ 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, -+ 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, -+ 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, -+ 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, -+ 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, -+ 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, -+ 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, -+ 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, -+ 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xfd, -+ 0xf0, 0x74, 0x02, 0x58, 0x88, 0x11, 0xf4, 0x95, -+ 0x77, 0x10, 0x80, 0x00, 0xf4, 0xa9, 0xf8, 0x30, -+ 0x02, 0xef, 0x48, 0x11, 0xf0, 0x30, 0x00, 0xff, -+ 0x80, 0x00, 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, -+ 0x18, 0xd6, 0xee, 0x03, 0x8a, 0x18, 0xf4, 0x95, -+ 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, 0x8a, 0x1a, -+ 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, 0x8a, 0x19, -+ 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x15, -+ 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, 0x8a, 0x11, -+ 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, -+ 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, 0xf4, 0xeb, -+ 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, -+ 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, -+ 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, -+ 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, -+ 0x00, 0x03, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, -+ 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, -+ 0xf4, 0x95, 0x10, 0x81, 0x6f, 0xf8, 0x2a, 0x9e, -+ 0x0c, 0x88, 0xe8, 0xff, 0x18, 0xe1, 0x00, 0x01, -+ 0x1a, 0xf8, 0x2a, 0x9e, 0xf0, 0x30, 0x1f, 0xff, -+ 0x80, 0xf8, 0x2a, 0x9e, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, -+ 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, 0x11, 0xe2, -+ 0x00, 0x01, 0x81, 0xe1, 0x00, 0x01, 0x11, 0xe2, -+ 0x00, 0x02, 0x81, 0xe1, 0x00, 0x02, 0x76, 0xe1, -+ 0x00, 0x03, 0x00, 0x02, 0x48, 0x08, 0x6f, 0xe1, -+ 0x00, 0x04, 0x0c, 0x98, 0xf0, 0x30, 0x00, 0xff, -+ 0x80, 0xe1, 0x00, 0x05, 0x76, 0xe1, 0x00, 0x06, -+ 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, 0x2a, 0x39, -+ 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, 0x2a, 0x18, -+ 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, 0x00, 0x01, -+ 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, 0x00, 0x02, -+ 0x76, 0xe1, 0x00, 0x03, 0x00, 0x04, 0x48, 0x11, -+ 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, 0xf4, 0x95, -+ 0x77, 0x13, 0x2a, 0x76, 0xe9, 0x00, 0xe5, 0x98, -+ 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, 0x48, 0x0b, -+ 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x03, 0x71, -+ 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xf0, -+ 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0x81, -+ 0x00, 0x14, 0x71, 0xe1, 0x00, 0x01, 0x00, 0x15, -+ 0x49, 0x11, 0xf3, 0x00, 0x00, 0x02, 0x89, 0x11, -+ 0xe7, 0x82, 0x6d, 0xea, 0x00, 0x04, 0xe7, 0x83, -+ 0x6d, 0xeb, 0x00, 0x0a, 0x77, 0x1a, 0x00, 0x05, -+ 0xf0, 0x72, 0x03, 0xaa, 0x11, 0x81, 0xf2, 0xe8, -+ 0x80, 0x82, 0xe9, 0xff, 0x19, 0xe1, 0x00, 0x01, -+ 0xf1, 0xa0, 0x81, 0x92, 0x11, 0xe1, 0x00, 0x0c, -+ 0xf2, 0xe8, 0x80, 0x83, 0xe9, 0xff, 0x19, 0xe1, -+ 0x00, 0x0d, 0xf1, 0xa0, 0x81, 0x93, 0x6d, 0xe9, -+ 0x00, 0x02, 0x48, 0x18, 0x49, 0x18, 0x70, 0x00, -+ 0x00, 0x15, 0xf0, 0x00, 0x00, 0x04, 0xf3, 0x00, -+ 0x00, 0x0a, 0x80, 0x01, 0x81, 0x02, 0xf2, 0x74, -+ 0x0e, 0x54, 0xf4, 0x95, 0x48, 0x14, 0xee, 0x10, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf0, 0x74, -+ 0x0c, 0x5e, 0x80, 0xf8, 0x2a, 0x5c, 0x77, 0x12, -+ 0x2a, 0x39, 0x76, 0x82, 0x00, 0x55, 0x77, 0x11, -+ 0x2a, 0x18, 0x10, 0xe1, 0x00, 0x01, 0x80, 0xe2, -+ 0x00, 0x01, 0x10, 0xe1, 0x00, 0x02, 0x80, 0xe2, -+ 0x00, 0x02, 0x76, 0xe2, 0x00, 0x03, 0x00, 0x1c, -+ 0xf6, 0xb8, 0x56, 0xf8, 0x2a, 0x16, 0xf0, 0xf0, -+ 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x07, 0x56, 0xf8, -+ 0x2a, 0x16, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, -+ 0x80, 0xe2, 0x00, 0x06, 0x56, 0xf8, 0x2a, 0x16, -+ 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, -+ 0x00, 0x05, 0x57, 0xf8, 0x2a, 0x16, 0xe8, 0xff, -+ 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x04, 0x56, 0xf8, -+ 0x27, 0x6c, 0xf0, 0xf0, 0xf0, 0xf8, 0x80, 0xe2, -+ 0x00, 0x0b, 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf0, -+ 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0a, -+ 0x56, 0xf8, 0x27, 0x6c, 0xf1, 0xf8, 0xe8, 0xff, -+ 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x09, 0xe8, 0xff, -+ 0x57, 0xf8, 0x27, 0x6c, 0xf2, 0x80, 0x80, 0xe2, -+ 0x00, 0x08, 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0xf0, -+ 0xf0, 0xf8, 0x80, 0xe2, 0x00, 0x0f, 0x56, 0xf8, -+ 0x27, 0x6a, 0xf1, 0xf0, 0xe8, 0xff, 0xf2, 0x80, -+ 0x80, 0xe2, 0x00, 0x0e, 0x56, 0xf8, 0x27, 0x6a, -+ 0xf1, 0xf8, 0xe8, 0xff, 0xf2, 0x80, 0x80, 0xe2, -+ 0x00, 0x0d, 0x57, 0xf8, 0x27, 0x6a, 0xe8, 0xff, -+ 0xf2, 0x80, 0x80, 0xe2, 0x00, 0x0c, 0x76, 0xe2, -+ 0x00, 0x13, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x12, -+ 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x5c, 0x0c, 0x58, -+ 0x80, 0xe2, 0x00, 0x11, 0xe8, 0xff, 0x18, 0xf8, -+ 0x2a, 0x5c, 0x80, 0xe2, 0x00, 0x10, 0x76, 0xe2, -+ 0x00, 0x17, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x16, -+ 0x00, 0x00, 0x6f, 0xf8, 0x2a, 0x9e, 0x0c, 0x58, -+ 0x80, 0xe2, 0x00, 0x15, 0xe8, 0xff, 0x18, 0xf8, -+ 0x2a, 0x9e, 0x80, 0xe2, 0x00, 0x14, 0x76, 0xe2, -+ 0x00, 0x1b, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1a, -+ 0x00, 0x00, 0x76, 0xe2, 0x00, 0x19, 0x00, 0x00, -+ 0x70, 0xe2, 0x00, 0x18, 0x27, 0x6e, 0x76, 0xe2, -+ 0x00, 0x1f, 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1e, -+ 0x00, 0x00, 0x76, 0xe2, 0x00, 0x1d, 0x00, 0x00, -+ 0x76, 0xe2, 0x00, 0x1c, 0x00, 0x00, 0x76, 0xe2, -+ 0x00, 0x20, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, -+ 0x10, 0xf8, 0x2a, 0x38, 0xf8, 0x45, 0x04, 0xed, -+ 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x02, -+ 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x08, -+ 0x6d, 0xe9, 0xff, 0xdf, 0xf6, 0xa9, 0xf8, 0x20, -+ 0x04, 0x75, 0xf0, 0x73, 0x04, 0x7d, 0xf0, 0x10, -+ 0x00, 0x21, 0xf0, 0x00, 0x1a, 0x83, 0x48, 0x08, -+ 0x7e, 0xf8, 0x00, 0x08, 0xf4, 0xe2, 0xf0, 0x74, -+ 0x03, 0x0a, 0xf0, 0x73, 0x04, 0xea, 0x48, 0x12, -+ 0xf2, 0x74, 0x03, 0x23, 0xf0, 0x00, 0x00, 0x04, -+ 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, -+ 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, -+ 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, -+ 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x69, -+ 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, -+ 0xf0, 0x73, 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, -+ 0xe8, 0xff, 0x6f, 0xe1, 0x00, 0x04, 0x0d, 0x48, -+ 0x18, 0xe1, 0x00, 0x05, 0xf2, 0x74, 0x09, 0x41, -+ 0xf4, 0x95, 0xf2, 0xa0, 0xf0, 0x74, 0x03, 0x36, -+ 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0x57, -+ 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, 0x2a, 0x1c, -+ 0xf0, 0x74, 0x12, 0xa4, 0xf2, 0x74, 0x03, 0x36, -+ 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, -+ 0x48, 0x12, 0xf2, 0x74, 0x03, 0x80, 0xf0, 0x00, -+ 0x00, 0x04, 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, -+ 0xe8, 0x00, 0xf0, 0x73, 0x04, 0xea, 0x10, 0xf8, -+ 0x2a, 0x1c, 0xf0, 0x74, 0x12, 0xc5, 0xf2, 0x74, -+ 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, 0xf0, 0x73, -+ 0x04, 0xea, 0x77, 0x11, 0x2a, 0x18, 0xe8, 0xff, -+ 0x6f, 0xe1, 0x00, 0x06, 0x0d, 0x48, 0x18, 0xe1, -+ 0x00, 0x07, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0xf2, 0xa0, 0x70, 0x00, 0x00, 0x12, 0x80, 0x01, -+ 0x10, 0xe1, 0x00, 0x04, 0xf0, 0x74, 0x0e, 0x7a, -+ 0xf2, 0x74, 0x03, 0x36, 0xf4, 0x95, 0xe8, 0x00, -+ 0xf0, 0x73, 0x04, 0xea, 0xf0, 0x74, 0x03, 0xbc, -+ 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x00, 0xee, 0x02, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, -+ 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, -+ 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, -+ 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, -+ 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x09, -+ 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, -+ 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x86, 0xe9, 0x00, -+ 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, -+ 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, -+ 0x05, 0x0a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, -+ 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, -+ 0x77, 0x13, 0x2a, 0x18, 0x10, 0xe3, 0x00, 0x01, -+ 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe3, 0x00, 0x02, -+ 0x80, 0xe1, 0x00, 0x02, 0x13, 0xe3, 0x00, 0x03, -+ 0x81, 0xe1, 0x00, 0x03, 0x48, 0x11, 0x77, 0x11, -+ 0x00, 0x00, 0xf8, 0x4d, 0x05, 0x44, 0xf0, 0x00, -+ 0x00, 0x04, 0x88, 0x12, 0x48, 0x13, 0xf0, 0x00, -+ 0x00, 0x04, 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, -+ 0xe5, 0x98, 0x6d, 0x91, 0xf6, 0xb8, 0x48, 0x11, -+ 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, 0x05, 0x3a, -+ 0xf0, 0x20, 0x2a, 0x39, 0x49, 0x11, 0xf5, 0x00, -+ 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x76, 0xe1, -+ 0x00, 0x04, 0x00, 0xaa, 0xf0, 0x74, 0x02, 0x98, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x77, 0x11, -+ 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, 0x77, 0x12, -+ 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, 0x80, 0xe1, -+ 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, 0x80, 0xe1, -+ 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x0c, -+ 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x12, -+ 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x7a, 0xe9, 0x00, -+ 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, 0xf6, 0xb8, -+ 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, 0xf8, 0x43, -+ 0x05, 0x6a, 0x76, 0x82, 0x00, 0xaa, 0xf0, 0x74, -+ 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0x77, 0x11, 0x2a, 0x39, 0x76, 0x81, 0x00, 0x55, -+ 0x77, 0x12, 0x2a, 0x18, 0x10, 0xe2, 0x00, 0x01, -+ 0x80, 0xe1, 0x00, 0x01, 0x10, 0xe2, 0x00, 0x02, -+ 0x80, 0xe1, 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, -+ 0x00, 0x19, 0x48, 0x11, 0xf0, 0x00, 0x00, 0x04, -+ 0x88, 0x12, 0xf4, 0x95, 0x77, 0x13, 0x2a, 0x5d, -+ 0xe9, 0x00, 0xe5, 0x98, 0xf3, 0x00, 0x00, 0x01, -+ 0xf6, 0xb8, 0x48, 0x0b, 0x08, 0xf8, 0x2a, 0x3c, -+ 0xf8, 0x43, 0x05, 0x93, 0x76, 0x82, 0x00, 0xaa, -+ 0xf0, 0x74, 0x02, 0x98, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0x88, 0x11, 0x10, 0xf8, 0x2a, 0x38, -+ 0xf8, 0x44, 0x05, 0xe3, 0x10, 0xf8, 0x2a, 0xa1, -+ 0xf8, 0x44, 0x05, 0xba, 0x6c, 0xe1, 0xff, 0x56, -+ 0x05, 0xe3, 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, -+ 0x70, 0xe2, 0x2a, 0x18, 0x00, 0x11, 0x6b, 0xf8, -+ 0x2a, 0xa1, 0x00, 0x01, 0xf0, 0x73, 0x05, 0xe3, -+ 0x72, 0x12, 0x2a, 0xa1, 0xf4, 0x95, 0x70, 0xe2, -+ 0x2a, 0x18, 0x00, 0x11, 0x10, 0xf8, 0x2a, 0xa1, -+ 0xf0, 0x00, 0x00, 0x01, 0x88, 0x12, 0xf4, 0x95, -+ 0xf4, 0x95, 0x6e, 0xe2, 0xff, 0xfc, 0x05, 0xd1, -+ 0x73, 0x12, 0x2a, 0xa1, 0x48, 0x11, 0xf0, 0x00, -+ 0x00, 0x05, 0x80, 0xf8, 0x2a, 0xa2, 0x10, 0xf8, -+ 0x2a, 0xa1, 0x08, 0xf8, 0x2a, 0xa2, 0xf8, 0x44, -+ 0x05, 0xe3, 0x6c, 0xe1, 0xff, 0xab, 0x05, 0xdd, -+ 0x76, 0xf8, 0x2a, 0x38, 0x00, 0x01, 0x76, 0xf8, -+ 0x2a, 0xa1, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa2, -+ 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0xf4, 0x95, -+ 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, 0x4a, 0x0b, -+ 0x4a, 0x0c, 0x4a, 0x0d, 0x4a, 0x10, 0x4a, 0x11, -+ 0x4a, 0x12, 0x4a, 0x13, 0x4a, 0x14, 0x4a, 0x15, -+ 0x4a, 0x16, 0x4a, 0x17, 0x4a, 0x17, 0x4a, 0x19, -+ 0x4a, 0x0e, 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1a, -+ 0x4a, 0x1d, 0x4a, 0x1b, 0x4a, 0x1c, 0x68, 0xf8, -+ 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, -+ 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, -+ 0x48, 0x18, 0x68, 0xf8, 0x00, 0x18, 0xff, 0xfe, -+ 0xf4, 0x95, 0xf4, 0x95, 0x4a, 0x08, 0xee, 0xff, -+ 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x18, 0x04, -+ 0xf0, 0x74, 0x05, 0xa2, 0xee, 0x01, 0x8a, 0x18, -+ 0xf4, 0x95, 0x8a, 0x1c, 0x8a, 0x1b, 0x8a, 0x1d, -+ 0x8a, 0x1a, 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0e, -+ 0x8a, 0x19, 0x8a, 0x17, 0x8a, 0x17, 0x8a, 0x16, -+ 0x8a, 0x15, 0x8a, 0x14, 0x8a, 0x13, 0x8a, 0x12, -+ 0x8a, 0x11, 0x8a, 0x10, 0x8a, 0x0d, 0x8a, 0x0c, -+ 0x8a, 0x0b, 0x8a, 0x0a, 0x8a, 0x09, 0x8a, 0x08, -+ 0xf4, 0xeb, 0xee, 0xfd, 0x76, 0xf8, 0x2a, 0x38, -+ 0x00, 0x00, 0x76, 0xf8, 0x2a, 0x5a, 0x00, 0x00, -+ 0xe8, 0x01, 0x4e, 0x00, 0xfb, 0x80, 0x17, 0xd6, -+ 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x2a, 0x5b, -+ 0x76, 0x00, 0x2a, 0x8f, 0xf9, 0x80, 0x16, 0xaa, -+ 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x5c, -+ 0x10, 0xf8, 0x2a, 0x5b, 0xf9, 0x80, 0x17, 0x6f, -+ 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1a, -+ 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1a, -+ 0xfb, 0x80, 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x1b, -+ 0xfb, 0x80, 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x1b, -+ 0xee, 0x03, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, -+ 0x13, 0x02, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, -+ 0x06, 0x6a, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, -+ 0xf4, 0x95, 0xf0, 0x72, 0x06, 0x69, 0x1c, 0x91, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, -+ 0x12, 0x03, 0x11, 0x02, 0xf8, 0x45, 0x06, 0x79, -+ 0xf0, 0x10, 0x00, 0x01, 0x88, 0x1a, 0xf4, 0x95, -+ 0xf0, 0x72, 0x06, 0x78, 0x81, 0x91, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, -+ 0x00, 0x11, 0x11, 0x03, 0x61, 0xf8, 0x00, 0x11, -+ 0x00, 0x01, 0xf8, 0x30, 0x06, 0x91, 0xf6, 0xb8, -+ 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, -+ 0xf3, 0xe8, 0xe8, 0xff, 0x18, 0x81, 0xf1, 0xa0, -+ 0x81, 0x81, 0xf0, 0x73, 0x06, 0x9d, 0xf6, 0xb8, -+ 0x6f, 0xf8, 0x00, 0x11, 0x0c, 0x1f, 0x88, 0x11, -+ 0xf3, 0x30, 0x00, 0xff, 0xf0, 0x20, 0xff, 0x00, -+ 0x18, 0x81, 0xf1, 0xa0, 0x81, 0x81, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x11, 0x02, -+ 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, -+ 0x06, 0xb1, 0x49, 0x0b, 0xf6, 0x1f, 0x88, 0x11, -+ 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf2, 0x73, -+ 0x06, 0xb8, 0xf0, 0x30, 0x00, 0xff, 0x49, 0x0b, -+ 0xf6, 0x1f, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, -+ 0x12, 0x81, 0xf4, 0x78, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x12, -+ 0x13, 0x03, 0x88, 0x11, 0xe8, 0x00, 0xf8, 0x4d, -+ 0x06, 0xcc, 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, -+ 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xcb, 0x11, 0x92, -+ 0xf2, 0xc0, 0x81, 0x91, 0x8a, 0x11, 0xfc, 0x00, -+ 0x88, 0x12, 0x12, 0x02, 0x71, 0x01, 0x00, 0x13, -+ 0xf8, 0x45, 0x06, 0xdb, 0xf0, 0x10, 0x00, 0x01, -+ 0x88, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x06, 0xda, -+ 0xe5, 0x98, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, -+ 0x88, 0x11, 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, -+ 0x00, 0x12, 0x61, 0xf8, 0x00, 0x12, 0x00, 0x01, -+ 0xf8, 0x20, 0x06, 0xea, 0xf0, 0x00, 0x00, 0x01, -+ 0xf6, 0xb8, 0xf0, 0x00, 0x00, 0x01, 0x6f, 0xf8, -+ 0x00, 0x12, 0x0f, 0x1f, 0x48, 0x08, 0x81, 0x00, -+ 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xba, -+ 0xf4, 0x95, 0x48, 0x11, 0xee, 0x02, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x88, 0x12, -+ 0x11, 0x04, 0x10, 0x06, 0x71, 0x05, 0x00, 0x13, -+ 0x61, 0xf8, 0x00, 0x13, 0x00, 0x01, 0xf8, 0x20, -+ 0x07, 0x09, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, -+ 0x00, 0x01, 0x88, 0x11, 0xf6, 0xb8, 0x6f, 0xf8, -+ 0x00, 0x13, 0x0f, 0x1f, 0x81, 0x00, 0x48, 0x11, -+ 0xf4, 0x7f, 0x80, 0x01, 0xf2, 0x74, 0x06, 0xce, -+ 0xf4, 0x95, 0x48, 0x12, 0x48, 0x11, 0xf0, 0x30, -+ 0xff, 0xfe, 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xfc, -+ 0xf4, 0x95, 0x80, 0x02, 0x71, 0x08, 0x00, 0x16, -+ 0x10, 0x09, 0x71, 0x0b, 0x00, 0x17, 0x80, 0x03, -+ 0x71, 0x0a, 0x00, 0x11, 0x48, 0x17, 0xf8, 0x45, -+ 0x07, 0x3f, 0x70, 0x00, 0x00, 0x11, 0x10, 0x03, -+ 0xf0, 0x74, 0x06, 0x9f, 0x80, 0x01, 0x70, 0x00, -+ 0x00, 0x16, 0x10, 0x02, 0xf0, 0x74, 0x06, 0x7b, -+ 0x6d, 0x91, 0x6d, 0x96, 0x6c, 0xef, 0xff, 0xff, -+ 0x07, 0x2f, 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, -+ 0x10, 0xf8, 0x2a, 0xe8, 0x08, 0xf8, 0x2a, 0xe9, -+ 0xf8, 0x45, 0x07, 0x64, 0x76, 0x00, 0x00, 0x01, -+ 0x62, 0xf8, 0x2a, 0xe9, 0x00, 0x5e, 0xf2, 0x74, -+ 0x12, 0x0b, 0xf0, 0x00, 0x30, 0x40, 0x72, 0x11, -+ 0x2a, 0xe9, 0x77, 0x10, 0x00, 0x0f, 0xf5, 0xa9, -+ 0xf8, 0x20, 0x07, 0x61, 0x6b, 0xf8, 0x2a, 0xe9, -+ 0x00, 0x01, 0xf0, 0x73, 0x07, 0x64, 0x76, 0xf8, -+ 0x2a, 0xe9, 0x00, 0x00, 0xee, 0x02, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x11, 0xe8, 0x00, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x08, 0xe8, 0x00, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x09, 0xf6, 0xb8, -+ 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, 0x75, 0xf8, -+ 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, 0x0c, 0x30, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, 0x76, 0xf8, -+ 0x2a, 0xe8, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xe9, -+ 0x00, 0x00, 0x6c, 0x81, 0x07, 0x92, 0x76, 0xf8, -+ 0x2a, 0xea, 0x00, 0x00, 0xfb, 0x80, 0x16, 0x76, -+ 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, 0x75, 0xf8, -+ 0x00, 0x08, 0x00, 0x00, 0xf0, 0x73, 0x07, 0xa8, -+ 0x76, 0xf8, 0x2a, 0xea, 0x00, 0x01, 0xfb, 0x80, -+ 0x16, 0x66, 0xf4, 0x95, 0xe8, 0x10, 0xfb, 0x80, -+ 0x16, 0x87, 0xf4, 0x95, 0xe8, 0x10, 0xe8, 0x00, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0xf6, 0xb8, -+ 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, 0x75, 0xf8, -+ 0x00, 0x08, 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, -+ 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, 0x4a, 0x0a, -+ 0x4a, 0x06, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, -+ 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, -+ 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, -+ 0x10, 0xf8, 0x2a, 0xea, 0xf8, 0x45, 0x07, 0xe1, -+ 0x10, 0xf8, 0x2a, 0xe8, 0xf0, 0x00, 0x00, 0x01, -+ 0xf0, 0x30, 0x00, 0x0f, 0x80, 0xf8, 0x2a, 0xe8, -+ 0x10, 0xf8, 0x2a, 0xe8, 0xf8, 0x44, 0x07, 0xd6, -+ 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xfc, 0x3f, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0d, 0xf0, 0x20, -+ 0x0c, 0x30, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x0c, -+ 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, -+ 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0xff, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x8a, 0x1d, -+ 0x8a, 0x07, 0x8a, 0x06, 0x8a, 0x0a, 0x8a, 0x09, -+ 0x8a, 0x08, 0xf4, 0xeb, 0xee, 0xff, 0xf2, 0x74, -+ 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x01, 0xee, 0x01, -+ 0xfc, 0x00, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, -+ 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, -+ 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, -+ 0x8a, 0x1d, 0x8a, 0x07, 0xf4, 0xeb, 0x4a, 0x11, -+ 0x77, 0x11, 0x00, 0x28, 0x76, 0x81, 0x24, 0x00, -+ 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, -+ 0xf2, 0x74, 0x07, 0x67, 0xf4, 0x95, 0xe8, 0x00, -+ 0x77, 0x11, 0x00, 0x1d, 0x68, 0x81, 0x00, 0x7f, -+ 0xf6, 0xb8, 0xf4, 0x95, 0xf0, 0x20, 0xff, 0x80, -+ 0x77, 0x11, 0x00, 0x1d, 0xf0, 0x30, 0x01, 0x00, -+ 0x1a, 0x81, 0x80, 0x81, 0xf0, 0x74, 0x0a, 0x33, -+ 0xf0, 0x74, 0x11, 0xac, 0xf9, 0x80, 0x13, 0x25, -+ 0xf9, 0x80, 0x16, 0x53, 0xf9, 0x80, 0x17, 0x82, -+ 0xf0, 0x74, 0x06, 0x2f, 0xf9, 0x80, 0x14, 0xb2, -+ 0xf9, 0x80, 0x19, 0x10, 0xf0, 0x74, 0x0d, 0xe3, -+ 0xf0, 0x74, 0x07, 0xe8, 0xf0, 0x74, 0x02, 0x36, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x60, 0xf8, -+ 0x27, 0x7b, 0xff, 0xff, 0xf8, 0x30, 0x08, 0x39, -+ 0x71, 0xf8, 0x27, 0x7b, 0x27, 0x79, 0x60, 0xf8, -+ 0x27, 0x79, 0xff, 0xff, 0xf8, 0x30, 0x08, 0xb2, -+ 0x10, 0xf8, 0x29, 0x86, 0x08, 0xf8, 0x27, 0x79, -+ 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, 0xf4, 0x95, -+ 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x30, -+ 0x08, 0x58, 0x10, 0xf8, 0x27, 0x79, 0x08, 0xf8, -+ 0x27, 0x7a, 0xf0, 0x30, 0x7f, 0xff, 0x88, 0x11, -+ 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, -+ 0xf8, 0x20, 0x08, 0x63, 0x76, 0xf8, 0x27, 0x79, -+ 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, -+ 0xf7, 0xb8, 0xf2, 0x73, 0x08, 0xd9, 0xf0, 0x20, -+ 0xff, 0xff, 0xf6, 0xb8, 0x56, 0xf8, 0x27, 0x74, -+ 0xf0, 0xf9, 0x88, 0x11, 0x56, 0xf8, 0x27, 0x72, -+ 0xf0, 0xf9, 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, -+ 0xe7, 0x20, 0xf4, 0xa9, 0xf8, 0x30, 0x08, 0x8f, -+ 0xf1, 0x20, 0x27, 0x7c, 0x48, 0x11, 0xf6, 0x00, -+ 0x88, 0x13, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x83, -+ 0x08, 0xf8, 0x27, 0x79, 0xf0, 0x30, 0x7f, 0xff, -+ 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, -+ 0xf5, 0xab, 0xf8, 0x30, 0x08, 0x8f, 0x6d, 0x91, -+ 0x48, 0x11, 0xf0, 0x30, 0x01, 0xff, 0x88, 0x11, -+ 0xf4, 0x95, 0xe7, 0x20, 0xf7, 0xa9, 0xf8, 0x30, -+ 0x08, 0x74, 0x6d, 0x89, 0x48, 0x11, 0xf0, 0x30, -+ 0x01, 0xff, 0xf0, 0xe7, 0xf4, 0x95, 0x48, 0x08, -+ 0x4e, 0xf8, 0x27, 0x74, 0x48, 0x08, 0xf1, 0xf9, -+ 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, -+ 0x27, 0x7c, 0x27, 0x7a, 0x60, 0xf8, 0x27, 0x7b, -+ 0xff, 0xff, 0xf8, 0x30, 0x08, 0xab, 0x48, 0x08, -+ 0x4e, 0xf8, 0x27, 0x72, 0x76, 0xf8, 0x27, 0x7b, -+ 0xff, 0xff, 0x76, 0xf8, 0x27, 0x79, 0xff, 0xff, -+ 0xf2, 0x73, 0x08, 0xd9, 0xf4, 0x95, 0xe8, 0x00, -+ 0x44, 0xf8, 0x27, 0x73, 0x40, 0xf8, 0x27, 0x75, -+ 0x82, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0x77, 0x10, -+ 0x80, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xd8, -+ 0xf6, 0xb8, 0x10, 0xf8, 0x27, 0x73, 0xf0, 0x00, -+ 0x80, 0x00, 0x48, 0x08, 0x4e, 0xf8, 0x27, 0x74, -+ 0x48, 0x08, 0xf0, 0xf9, 0x88, 0x11, 0xf4, 0x95, -+ 0xf4, 0x95, 0x71, 0xe1, 0x27, 0x7c, 0x27, 0x7a, -+ 0xf7, 0xb8, 0x57, 0xf8, 0x27, 0x74, 0xf0, 0x62, -+ 0xff, 0xff, 0xf0, 0x40, 0xff, 0x80, 0xf2, 0x80, -+ 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfb, -+ 0x11, 0xf8, 0x27, 0x71, 0x09, 0xf8, 0x27, 0x73, -+ 0x89, 0x11, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, -+ 0xf6, 0xa9, 0xf8, 0x20, 0x08, 0xed, 0xf2, 0x73, -+ 0x09, 0x0e, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0x20, -+ 0x76, 0x00, 0x00, 0x41, 0xf0, 0x74, 0x12, 0xee, -+ 0x88, 0x16, 0xf4, 0x95, 0xf7, 0xb8, 0x6d, 0x96, -+ 0x10, 0xf8, 0x00, 0x16, 0xf8, 0x47, 0x09, 0x0a, -+ 0xe7, 0x61, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, -+ 0x00, 0x80, 0x76, 0x02, 0x00, 0xff, 0x76, 0x03, -+ 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, -+ 0xe8, 0x00, 0x6c, 0xe9, 0xff, 0xff, 0x08, 0xfb, -+ 0x73, 0x16, 0x00, 0x0e, 0xf0, 0x66, 0x00, 0x41, -+ 0xee, 0x05, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x13, -+ 0xf6, 0xb8, 0x77, 0x11, 0x7f, 0xff, 0x57, 0xf8, -+ 0x27, 0x72, 0x48, 0x11, 0xf2, 0x80, 0xf0, 0x00, -+ 0x80, 0x00, 0x88, 0x11, 0xf6, 0x40, 0xf0, 0xe0, -+ 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, 0x80, 0xf8, -+ 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x57, 0xf8, -+ 0x27, 0x72, 0x48, 0x12, 0xf2, 0x80, 0x88, 0x12, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x09, 0x38, -+ 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, -+ 0xf0, 0x73, 0x09, 0x3d, 0xf0, 0x20, 0x80, 0x01, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x70, 0x81, -+ 0x00, 0x13, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0xf0, 0x30, 0x7f, 0xff, 0x11, 0xf8, 0x29, 0x86, -+ 0xf5, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, -+ 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, -+ 0xf8, 0x20, 0x09, 0x54, 0xf2, 0x73, 0x09, 0x67, -+ 0xf4, 0x95, 0xe8, 0x02, 0x6f, 0xf8, 0x27, 0x7a, -+ 0x0d, 0x20, 0xf3, 0x30, 0x7f, 0xff, 0x89, 0x11, -+ 0xf4, 0x95, 0x77, 0x10, 0x40, 0x00, 0xf6, 0xa9, -+ 0xf8, 0x20, 0x09, 0x64, 0xf2, 0x73, 0x09, 0x67, -+ 0xf4, 0x95, 0xe8, 0x01, 0x80, 0xf8, 0x27, 0x7b, -+ 0xe8, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0x11, 0xf8, 0x29, 0x86, 0xf5, 0x20, 0xf3, 0x30, -+ 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, -+ 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x7a, -+ 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x02, -+ 0x6f, 0xf8, 0x27, 0x7a, 0x0d, 0x20, 0xf3, 0x30, -+ 0x7f, 0xff, 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, -+ 0x40, 0x00, 0xf6, 0xa9, 0xf8, 0x20, 0x09, 0x8a, -+ 0xf2, 0x73, 0x09, 0x8d, 0xf4, 0x95, 0xe8, 0x01, -+ 0x80, 0xf8, 0x27, 0x79, 0xe8, 0x00, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, -+ 0x00, 0x12, 0x88, 0x11, 0xf6, 0xb8, 0x57, 0xf8, -+ 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, -+ 0xf0, 0x00, 0x80, 0x00, 0x80, 0x81, 0x57, 0xf8, -+ 0x27, 0x72, 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, -+ 0x80, 0xf8, 0x27, 0x78, 0x77, 0x11, 0x80, 0x00, -+ 0x48, 0x11, 0x57, 0xf8, 0x27, 0x72, 0xf2, 0x80, -+ 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, -+ 0x09, 0xb5, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, -+ 0x00, 0x01, 0xf0, 0x73, 0x09, 0xba, 0xf0, 0x20, -+ 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, -+ 0x45, 0xf8, 0x27, 0x71, 0x43, 0xf8, 0x27, 0x73, -+ 0x83, 0xf8, 0x00, 0x11, 0xf4, 0x95, 0xe7, 0x20, -+ 0xf6, 0xa9, 0xf8, 0x30, 0x09, 0xc9, 0xf2, 0x73, -+ 0x09, 0xe4, 0x77, 0x12, 0x00, 0x00, 0x57, 0xf8, -+ 0x27, 0x72, 0xf0, 0x20, 0x7f, 0xff, 0xf2, 0x80, -+ 0x49, 0x12, 0xf5, 0x00, 0xf3, 0x00, 0x80, 0x00, -+ 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, 0xf8, 0x30, -+ 0x09, 0xdc, 0xf1, 0x20, 0x80, 0x00, 0xf5, 0x20, -+ 0x89, 0x12, 0xf4, 0x95, 0x48, 0x12, 0x6f, 0xf8, -+ 0x27, 0x73, 0x0d, 0x00, 0xf4, 0x95, 0x49, 0x0b, -+ 0x4f, 0xf8, 0x27, 0x72, 0x8a, 0x11, 0xfe, 0x00, -+ 0x48, 0x12, 0xf4, 0x95, 0x4a, 0x11, 0x4a, 0x16, -+ 0x4a, 0x17, 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x08, -+ 0x00, 0x16, 0x88, 0x17, 0xf0, 0x74, 0x08, 0x30, -+ 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, -+ 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0a, 0x0a, -+ 0xf2, 0x74, 0x08, 0xdb, 0xf4, 0x95, 0x48, 0x16, -+ 0x48, 0x18, 0x70, 0x00, 0x00, 0x16, 0xf2, 0x74, -+ 0x09, 0x8f, 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, -+ 0x10, 0x02, 0x70, 0x01, 0x00, 0x11, 0x80, 0x00, -+ 0xf2, 0x74, 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, -+ 0x49, 0x11, 0x48, 0x17, 0xf6, 0x00, 0x88, 0x17, -+ 0xe7, 0x60, 0xf5, 0xa9, 0xf8, 0x20, 0x0a, 0x2d, -+ 0x48, 0x16, 0xf6, 0x20, 0x88, 0x11, 0x48, 0x18, -+ 0x70, 0x00, 0x00, 0x11, 0xf2, 0x74, 0x09, 0x8f, -+ 0xf0, 0x00, 0x00, 0x02, 0x88, 0x11, 0x70, 0x01, -+ 0x00, 0x11, 0x10, 0x02, 0x80, 0x00, 0xf2, 0x74, -+ 0x06, 0xce, 0xf4, 0x95, 0x48, 0x17, 0xee, 0x04, -+ 0x48, 0x16, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, -+ 0xfc, 0x00, 0xee, 0xfd, 0xe8, 0x00, 0x4e, 0xf8, -+ 0x27, 0x70, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x72, -+ 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x74, 0xe8, 0x00, -+ 0x4e, 0xf8, 0x27, 0x76, 0x76, 0xf8, 0x27, 0x79, -+ 0xff, 0xff, 0x76, 0xf8, 0x27, 0x7a, 0x00, 0x00, -+ 0x76, 0xf8, 0x27, 0x7b, 0xff, 0xff, 0x76, 0xf8, -+ 0x27, 0x78, 0x00, 0x00, 0xe8, 0x00, 0x75, 0xf8, -+ 0x00, 0x08, 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, -+ 0x76, 0x01, 0x02, 0x00, 0xf2, 0x74, 0x12, 0xdc, -+ 0xf0, 0x20, 0x27, 0x7c, 0xee, 0x03, 0xfc, 0x00, -+ 0x4a, 0x11, 0xee, 0xfc, 0xf4, 0x95, 0x4e, 0x00, -+ 0x77, 0x12, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x12, -+ 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x12, -+ 0xf0, 0xe0, 0xf1, 0xf1, 0x4f, 0x02, 0xe9, 0x01, -+ 0xf4, 0x95, 0x48, 0x0b, 0xf5, 0x40, 0x56, 0x02, -+ 0xf1, 0x80, 0x81, 0xf8, 0x27, 0x78, 0x77, 0x11, -+ 0x80, 0x00, 0x56, 0x00, 0x49, 0x11, 0xf1, 0x80, -+ 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, -+ 0x0a, 0x81, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, -+ 0x00, 0x01, 0xf0, 0x73, 0x0a, 0x86, 0xf0, 0x20, -+ 0x80, 0x01, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, -+ 0x10, 0x82, 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0xee, 0xfe, 0xf4, 0x95, 0x4e, 0x00, -+ 0x77, 0x11, 0x7f, 0xff, 0xf6, 0xb8, 0x49, 0x11, -+ 0xf1, 0x80, 0xf3, 0x00, 0x80, 0x00, 0x89, 0x11, -+ 0xf0, 0xe0, 0xf1, 0xf1, 0xe8, 0x01, 0xf2, 0x80, -+ 0x80, 0xf8, 0x27, 0x78, 0x56, 0x00, 0xf1, 0x20, -+ 0x80, 0x00, 0xf1, 0x80, 0xf4, 0x95, 0x49, 0x0b, -+ 0xf8, 0x4d, 0x0a, 0xab, 0xf0, 0x20, 0x80, 0x01, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf0, 0x73, -+ 0x0a, 0xaf, 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, -+ 0x00, 0x01, 0xee, 0x02, 0x48, 0x11, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0x88, 0x12, 0x13, 0x02, -+ 0x77, 0x11, 0x00, 0x00, 0xf8, 0x4d, 0x0a, 0xcb, -+ 0xf3, 0x10, 0x00, 0x01, 0x89, 0x1a, 0xf4, 0x95, -+ 0xf0, 0x72, 0x0a, 0xca, 0x48, 0x11, 0x1c, 0xf8, -+ 0x29, 0x7e, 0x88, 0x11, 0x11, 0xf8, 0x29, 0x7e, -+ 0xf2, 0x00, 0x00, 0x01, 0x80, 0xf8, 0x29, 0x7e, -+ 0x81, 0x92, 0x48, 0x11, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0xf4, 0x95, 0x71, 0x02, 0x00, 0x11, -+ 0x88, 0x12, 0xf6, 0xb8, 0xf0, 0x20, 0x7f, 0xff, -+ 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0xf0, 0x00, -+ 0x80, 0x00, 0x80, 0x82, 0x57, 0xf8, 0x27, 0x70, -+ 0xe8, 0x01, 0xf3, 0xf1, 0xf2, 0x80, 0x80, 0xf8, -+ 0x27, 0x78, 0x77, 0x12, 0x80, 0x00, 0x48, 0x12, -+ 0x57, 0xf8, 0x27, 0x70, 0xf2, 0x80, 0x88, 0x12, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x82, 0x0a, 0xf4, -+ 0xe8, 0x00, 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, -+ 0xf0, 0x73, 0x0a, 0xf9, 0xf0, 0x20, 0x80, 0x01, -+ 0x75, 0xf8, 0x00, 0x08, 0x00, 0x01, 0x45, 0xf8, -+ 0x27, 0x75, 0xe7, 0x10, 0x43, 0xf8, 0x27, 0x71, -+ 0x83, 0xf8, 0x00, 0x12, 0x6d, 0xe8, 0x00, 0x04, -+ 0x6d, 0x8a, 0xf6, 0xaa, 0xf8, 0x30, 0x0b, 0x0a, -+ 0xf2, 0x73, 0x0b, 0x25, 0x77, 0x11, 0x00, 0x00, -+ 0x57, 0xf8, 0x27, 0x70, 0xf0, 0x20, 0x7f, 0xff, -+ 0xf2, 0x80, 0x49, 0x11, 0xf5, 0x00, 0xf3, 0x00, -+ 0x80, 0x00, 0x61, 0xf8, 0x00, 0x0b, 0x80, 0x00, -+ 0xf8, 0x30, 0x0b, 0x1d, 0xf1, 0x20, 0x80, 0x00, -+ 0xf5, 0x20, 0x89, 0x11, 0xf4, 0x95, 0x48, 0x11, -+ 0x6f, 0xf8, 0x27, 0x71, 0x0d, 0x00, 0xf4, 0x95, -+ 0x49, 0x0b, 0x4f, 0xf8, 0x27, 0x70, 0x48, 0x11, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, -+ 0x4a, 0x17, 0xee, 0xf0, 0x88, 0x17, 0x10, 0x17, -+ 0x80, 0x05, 0x10, 0x16, 0x80, 0x06, 0x10, 0x15, -+ 0x80, 0x07, 0x71, 0x14, 0x00, 0x11, 0x10, 0x05, -+ 0xf0, 0x30, 0x00, 0x01, 0x88, 0x10, 0x10, 0x06, -+ 0xf0, 0x30, 0x00, 0x01, 0x80, 0x08, 0x49, 0x11, -+ 0x10, 0x05, 0xf6, 0x01, 0x80, 0x09, 0x10, 0x06, -+ 0x61, 0xf8, 0x00, 0x08, 0x00, 0x01, 0xf8, 0x20, -+ 0x0b, 0x4b, 0x10, 0x09, 0xf0, 0x00, 0x00, 0x01, -+ 0x80, 0x09, 0x71, 0x08, 0x00, 0x12, 0xf4, 0xaa, -+ 0xf8, 0x30, 0x0b, 0x54, 0x10, 0x09, 0xf0, 0x00, -+ 0x00, 0x01, 0x80, 0x09, 0x12, 0x09, 0x49, 0x11, -+ 0xf4, 0x7f, 0x80, 0x09, 0xf6, 0x20, 0x80, 0x0a, -+ 0x56, 0xf8, 0x27, 0x70, 0x4e, 0x0c, 0x10, 0x09, -+ 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, -+ 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, 0xf4, 0x95, -+ 0xf4, 0x95, 0x6c, 0x86, 0x0b, 0x6d, 0xf2, 0x73, -+ 0x0c, 0x59, 0xf4, 0x95, 0xe8, 0x00, 0xf6, 0xb8, -+ 0xf4, 0x95, 0x56, 0x0c, 0xf0, 0xf9, 0x88, 0x12, -+ 0xf4, 0x95, 0xf4, 0x95, 0x70, 0xe2, 0x27, 0x7c, -+ 0x29, 0x86, 0xe8, 0x00, 0x80, 0x0e, 0x48, 0x11, -+ 0xf8, 0x45, 0x0b, 0xcc, 0x77, 0x10, 0x00, 0x01, -+ 0xf4, 0xa9, 0xf8, 0x30, 0x0b, 0x89, 0x6c, 0xe1, -+ 0xff, 0xfd, 0x0b, 0x8b, 0x10, 0xe7, 0x00, 0x02, -+ 0x80, 0x0e, 0xf0, 0x73, 0x0b, 0x8b, 0x10, 0x87, -+ 0x80, 0x0e, 0xe7, 0x10, 0xf5, 0xae, 0xf8, 0x20, -+ 0x0b, 0xb2, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, -+ 0x00, 0x16, 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, -+ 0x48, 0x17, 0x49, 0x16, 0xf6, 0x00, 0x88, 0x17, -+ 0x48, 0x11, 0xf6, 0x20, 0x88, 0x11, 0x10, 0x09, -+ 0xf6, 0x20, 0x80, 0x00, 0x48, 0x18, 0xf2, 0x74, -+ 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x16, -+ 0x10, 0x04, 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, -+ 0x00, 0x11, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, -+ 0x00, 0x04, 0x80, 0x04, 0xf0, 0x73, 0x0b, 0xbc, -+ 0x70, 0x00, 0x00, 0x17, 0x70, 0x01, 0x00, 0x11, -+ 0x10, 0x04, 0xf0, 0x74, 0x06, 0xce, 0x48, 0x11, -+ 0x00, 0x04, 0x80, 0x04, 0x49, 0x11, 0x48, 0x16, -+ 0xf6, 0x20, 0x88, 0x16, 0xf4, 0x95, 0xf4, 0x95, -+ 0x6c, 0x86, 0x0b, 0xcc, 0x10, 0x0a, 0x80, 0x00, -+ 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, -+ 0x00, 0x04, 0x88, 0x16, 0x12, 0x0a, 0xf8, 0x45, -+ 0x0c, 0x33, 0x71, 0x0a, 0x00, 0x10, 0xf4, 0xae, -+ 0xf8, 0x30, 0x0c, 0x1c, 0x48, 0x16, 0xf0, 0xe1, -+ 0x88, 0x11, 0x12, 0x08, 0xf8, 0x45, 0x0b, 0xdb, -+ 0x6d, 0x89, 0x12, 0x07, 0xf8, 0x45, 0x0b, 0xe9, -+ 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, -+ 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, -+ 0x06, 0xdc, 0xf0, 0x73, 0x0b, 0xef, 0x48, 0x11, -+ 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, -+ 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, -+ 0x10, 0x06, 0x49, 0x11, 0xf6, 0x00, 0x80, 0x06, -+ 0x10, 0x05, 0xf6, 0x20, 0x88, 0x11, 0xf0, 0x00, -+ 0x00, 0x01, 0x48, 0x08, 0x6f, 0x00, 0x0c, 0x9f, -+ 0x48, 0x18, 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, -+ 0x00, 0x04, 0x12, 0x07, 0xf8, 0x45, 0x0c, 0x11, -+ 0x10, 0x07, 0x80, 0x00, 0x70, 0x02, 0x00, 0x11, -+ 0x10, 0x06, 0x80, 0x01, 0x10, 0x04, 0xf0, 0x74, -+ 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x17, 0x48, 0x11, -+ 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, 0xf0, 0x74, -+ 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, 0x81, 0x0e, -+ 0xf0, 0x73, 0x0c, 0x33, 0x12, 0x07, 0xf8, 0x45, -+ 0x0c, 0x2a, 0x10, 0x07, 0x80, 0x00, 0x10, 0x06, -+ 0x80, 0x01, 0x10, 0x05, 0x80, 0x02, 0x10, 0x04, -+ 0xf0, 0x74, 0x06, 0xdc, 0xf0, 0x73, 0x0c, 0x30, -+ 0x12, 0x05, 0x6f, 0x00, 0x0c, 0x9f, 0x10, 0x04, -+ 0xf0, 0x74, 0x0a, 0xb3, 0x11, 0x0e, 0xf1, 0xc0, -+ 0x81, 0x0e, 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, -+ 0xf2, 0x74, 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, -+ 0x71, 0x04, 0x00, 0x11, 0x70, 0x81, 0x29, 0x86, -+ 0x10, 0x0e, 0x1c, 0xf8, 0x29, 0x86, 0x80, 0x0e, -+ 0x76, 0x00, 0x00, 0x01, 0x48, 0x18, 0xf2, 0x74, -+ 0x0a, 0xce, 0xf0, 0x00, 0x00, 0x04, 0x10, 0x0e, -+ 0x71, 0x04, 0x00, 0x11, 0x80, 0x81, 0x10, 0xf8, -+ 0x29, 0x86, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x30, -+ 0x7f, 0xff, 0x80, 0xf8, 0x29, 0x86, 0x10, 0x09, -+ 0xf0, 0x00, 0x00, 0x02, 0x80, 0x09, 0xee, 0x10, -+ 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, -+ 0x10, 0xf8, 0x27, 0x75, 0x08, 0xf8, 0x27, 0x71, -+ 0xf0, 0x10, 0x00, 0x01, 0x48, 0x08, 0xfc, 0x00, -+ 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xff, 0xf4, 0x95, -+ 0x71, 0x04, 0x00, 0x16, 0xf0, 0x00, 0x00, 0x01, -+ 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, 0x6d, 0xee, -+ 0xff, 0xfd, 0x48, 0x16, 0xf8, 0x45, 0x0c, 0x99, -+ 0x56, 0xf8, 0x29, 0x7c, 0xf0, 0x74, 0x0a, 0x5a, -+ 0x88, 0x11, 0x10, 0xf8, 0x29, 0x7d, 0xf0, 0x00, -+ 0x00, 0x01, 0x48, 0x08, 0x4e, 0xf8, 0x29, 0x7c, -+ 0x10, 0xf8, 0x29, 0x82, 0xf0, 0x00, 0x00, 0x01, -+ 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xa9, -+ 0xfa, 0x30, 0x0c, 0x96, 0x80, 0xf8, 0x29, 0x82, -+ 0x56, 0xf8, 0x29, 0x80, 0xf0, 0x00, 0x00, 0x01, -+ 0x4e, 0xf8, 0x29, 0x80, 0x73, 0x11, 0x29, 0x82, -+ 0x6c, 0xee, 0xff, 0xff, 0x0c, 0x76, 0xee, 0x01, -+ 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0x76, 0xf8, 0x29, 0x84, 0x00, 0x00, 0x76, 0xf8, -+ 0x29, 0x85, 0x00, 0x01, 0xe8, 0x00, 0x4e, 0xf8, -+ 0x2a, 0x0c, 0x76, 0xf8, 0x29, 0x86, 0x00, 0x00, -+ 0x76, 0xf8, 0x29, 0x87, 0x00, 0x00, 0x77, 0x11, -+ 0x29, 0x88, 0x76, 0x81, 0xaa, 0xaa, 0x76, 0xe1, -+ 0x00, 0x01, 0xaa, 0xaa, 0x76, 0xe1, 0x00, 0x02, -+ 0x00, 0x00, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0xee, 0xfc, 0xf4, 0x95, 0x71, 0x06, 0x00, 0x14, -+ 0x71, 0x07, 0x00, 0x13, 0x71, 0x08, 0x00, 0x12, -+ 0x71, 0x09, 0x00, 0x15, 0x77, 0x10, 0x00, 0xff, -+ 0xf4, 0xaa, 0xf8, 0x30, 0x0d, 0x44, 0x49, 0x13, -+ 0x53, 0xf8, 0x2a, 0x0c, 0x4f, 0xf8, 0x2a, 0x0c, -+ 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, -+ 0x89, 0x11, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x01, -+ 0x71, 0xe1, 0x24, 0x00, 0x00, 0x11, 0xf4, 0xa9, -+ 0xf8, 0x30, 0x0d, 0x17, 0x77, 0x10, 0x00, 0x02, -+ 0xf4, 0xa9, 0xf8, 0x30, 0x0c, 0xec, 0x77, 0x11, -+ 0x29, 0x8a, 0x76, 0x81, 0x00, 0x00, 0xe8, 0x00, -+ 0x77, 0x14, 0x00, 0x00, 0x77, 0x13, 0x00, 0x00, -+ 0xf0, 0x73, 0x0d, 0x48, 0x6c, 0x83, 0x0c, 0xfa, -+ 0x77, 0x11, 0x29, 0x8a, 0x48, 0x12, 0xf0, 0xe8, -+ 0xf0, 0x40, 0x80, 0x00, 0x80, 0x81, 0xe8, 0x00, -+ 0x77, 0x14, 0x00, 0x00, 0xf0, 0x73, 0x0d, 0x48, -+ 0x49, 0x13, 0xf3, 0x40, 0x80, 0x00, 0x81, 0xf8, -+ 0x29, 0x8a, 0x61, 0xf8, 0x00, 0x15, 0x00, 0x01, -+ 0xf8, 0x20, 0x0d, 0x07, 0x69, 0xf8, 0x29, 0x8a, -+ 0x40, 0x00, 0x61, 0xf8, 0x00, 0x14, 0x00, 0x01, -+ 0xf8, 0x20, 0x0d, 0x0f, 0x69, 0xf8, 0x29, 0x8a, -+ 0x20, 0x00, 0x77, 0x11, 0x29, 0x8a, 0x49, 0x12, -+ 0xf3, 0xe8, 0x1b, 0x81, 0x81, 0x81, 0xf0, 0x73, -+ 0x0d, 0x48, 0x11, 0xf8, 0x29, 0x84, 0xf8, 0x4c, -+ 0x0d, 0x37, 0x77, 0x11, 0x29, 0x88, 0x76, 0x81, -+ 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, 0xf3, 0x10, -+ 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, 0x81, 0xe1, -+ 0x00, 0x01, 0x76, 0x00, 0x00, 0x02, 0x80, 0x01, -+ 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, 0x00, 0x13, -+ 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0x48, 0x11, -+ 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, 0xf0, 0x73, -+ 0x0d, 0x73, 0x76, 0x00, 0x00, 0x00, 0x80, 0x01, -+ 0x76, 0x02, 0x00, 0x00, 0x70, 0x03, 0x00, 0x13, -+ 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, 0xe8, 0x00, -+ 0xf0, 0x73, 0x0d, 0x73, 0x77, 0x11, 0x29, 0x8a, -+ 0x70, 0x81, 0x00, 0x13, 0x11, 0xf8, 0x29, 0x84, -+ 0xf8, 0x4c, 0x0d, 0x68, 0x77, 0x11, 0x29, 0x88, -+ 0x76, 0x81, 0xaa, 0xaa, 0x11, 0xf8, 0x29, 0x85, -+ 0xf3, 0x10, 0x00, 0x01, 0xf3, 0x40, 0xaa, 0x00, -+ 0x81, 0xe1, 0x00, 0x01, 0x76, 0x00, 0x00, 0x03, -+ 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, -+ 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, -+ 0x48, 0x11, 0x71, 0xf8, 0x29, 0x85, 0x29, 0x84, -+ 0xf0, 0x73, 0x0d, 0x73, 0x76, 0x00, 0x00, 0x01, -+ 0x80, 0x01, 0x70, 0x02, 0x00, 0x14, 0x70, 0x03, -+ 0x00, 0x13, 0xf2, 0x74, 0x0b, 0x28, 0xf4, 0x95, -+ 0x48, 0x11, 0x6b, 0xf8, 0x29, 0x84, 0xff, 0xff, -+ 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0xf5, 0x40, 0xf4, 0x95, 0x48, 0x0b, 0xf4, 0x78, -+ 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe1, -+ 0xff, 0xb9, 0x0d, 0x88, 0xf2, 0x73, 0x0d, 0xa5, -+ 0xf4, 0x95, 0xe8, 0x60, 0xf2, 0x00, 0x00, 0x06, -+ 0x61, 0xf8, 0x00, 0x11, 0x00, 0x20, 0xf8, 0x30, -+ 0x0d, 0x98, 0x61, 0xf8, 0x00, 0x0b, 0x00, 0x01, -+ 0xf8, 0x20, 0x0d, 0xa3, 0xf2, 0x00, 0x00, 0x07, -+ 0xf0, 0x73, 0x0d, 0xa3, 0x61, 0xf8, 0x00, 0x0b, -+ 0x00, 0x01, 0xf8, 0x20, 0x0d, 0xa1, 0xf2, 0x73, -+ 0x0d, 0xa3, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, -+ 0x00, 0x02, 0x48, 0x08, 0xf4, 0x7f, 0x8a, 0x11, -+ 0xfc, 0x00, 0xee, 0xff, 0xf0, 0x74, 0x07, 0xfd, -+ 0xf0, 0x74, 0x07, 0x44, 0xf0, 0x74, 0x0d, 0xb4, -+ 0xf0, 0x74, 0x02, 0x05, 0xf0, 0x74, 0x04, 0x60, -+ 0xf0, 0x73, 0x0d, 0xaa, 0xee, 0xfd, 0x10, 0xf8, -+ 0x2a, 0xa3, 0xf8, 0x44, 0x0d, 0xcb, 0x10, 0xf8, -+ 0x2a, 0xa4, 0xf8, 0x45, 0x0d, 0xd7, 0x76, 0x00, -+ 0x02, 0x00, 0xf2, 0x74, 0x09, 0xe8, 0xf0, 0x20, -+ 0x22, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, -+ 0x76, 0xf8, 0x2a, 0xa7, 0x00, 0x00, 0xf0, 0x73, -+ 0x0d, 0xd7, 0x76, 0x00, 0x02, 0x00, 0xf2, 0x74, -+ 0x09, 0xe8, 0xf0, 0x20, 0x20, 0x00, 0x76, 0xf8, -+ 0x2a, 0xa3, 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa7, -+ 0x00, 0x01, 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, -+ 0xf0, 0x10, 0x3a, 0x98, 0xf8, 0x47, 0x0d, 0xe1, -+ 0x76, 0xf8, 0x27, 0x6e, 0x00, 0x00, 0xee, 0x03, -+ 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, 0x77, 0x11, -+ 0x20, 0x00, 0x76, 0x00, 0xaa, 0xaa, 0x76, 0x01, -+ 0x02, 0x00, 0xf2, 0x74, 0x06, 0x6c, 0xf4, 0x95, -+ 0x48, 0x11, 0x76, 0x00, 0x55, 0x55, 0x76, 0x01, -+ 0x02, 0x00, 0x48, 0x11, 0xf2, 0x74, 0x06, 0x6c, -+ 0xf0, 0x00, 0x02, 0x00, 0x76, 0xf8, 0x2a, 0xa3, -+ 0x00, 0x00, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x00, -+ 0xe8, 0x00, 0x4e, 0x00, 0xfb, 0x80, 0x15, 0x3e, -+ 0xf4, 0x95, 0xe8, 0x04, 0x80, 0xf8, 0x2a, 0xa5, -+ 0x76, 0x00, 0x2a, 0xa8, 0xf9, 0x80, 0x14, 0x87, -+ 0x76, 0x00, 0x2a, 0xad, 0xfb, 0x80, 0x13, 0x62, -+ 0xf4, 0x95, 0xe8, 0x02, 0x10, 0xf8, 0x2a, 0xa5, -+ 0xf9, 0x80, 0x14, 0x63, 0xfb, 0x80, 0x16, 0x66, -+ 0xf4, 0x95, 0xe8, 0x1c, 0xfb, 0x80, 0x16, 0x87, -+ 0xf4, 0x95, 0xe8, 0x1c, 0xe8, 0x01, 0x4e, 0x00, -+ 0xfb, 0x80, 0x17, 0xd6, 0xf4, 0x95, 0xe8, 0x00, -+ 0x80, 0xf8, 0x2a, 0xa6, 0x76, 0x00, 0x2a, 0xb7, -+ 0xf9, 0x80, 0x16, 0xaa, 0x10, 0xf8, 0x2a, 0xa6, -+ 0xf9, 0x80, 0x17, 0x5c, 0x10, 0xf8, 0x2a, 0xa6, -+ 0xf9, 0x80, 0x17, 0x6f, 0xee, 0x02, 0x8a, 0x11, -+ 0xfc, 0x00, 0xf4, 0x95, 0x4a, 0x08, 0x4a, 0x09, -+ 0x4a, 0x0a, 0x4a, 0x07, 0x4a, 0x1d, 0x68, 0xf8, -+ 0x00, 0x07, 0x7d, 0x3f, 0x69, 0xf8, 0x00, 0x07, -+ 0x40, 0x00, 0x68, 0xf8, 0x00, 0x1d, 0xff, 0xfc, -+ 0x10, 0xf8, 0x2a, 0xa7, 0xf8, 0x44, 0x0e, 0x4b, -+ 0x76, 0xf8, 0x2a, 0xa3, 0x00, 0x01, 0xf0, 0x73, -+ 0x0e, 0x4e, 0x76, 0xf8, 0x2a, 0xa4, 0x00, 0x01, -+ 0x8a, 0x1d, 0x8a, 0x07, 0x8a, 0x0a, 0x8a, 0x09, -+ 0x8a, 0x08, 0xf4, 0xeb, 0x4a, 0x11, 0x4a, 0x16, -+ 0x4a, 0x17, 0xee, 0xfe, 0x88, 0x0e, 0x71, 0x08, -+ 0x00, 0x16, 0x71, 0x06, 0x00, 0x17, 0x11, 0x07, -+ 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, 0x25, 0xa0, -+ 0x88, 0x11, 0x76, 0x01, 0x00, 0x06, 0x81, 0x00, -+ 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, 0x00, 0x01, -+ 0x76, 0x01, 0x00, 0x06, 0x70, 0x00, 0x00, 0x16, -+ 0x48, 0x11, 0xf2, 0x74, 0x06, 0xce, 0xf0, 0x00, -+ 0x00, 0x07, 0x70, 0x81, 0x00, 0x17, 0xee, 0x02, -+ 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xfc, 0x00, -+ 0x4a, 0x11, 0x88, 0x0e, 0x71, 0x02, 0x00, 0x12, -+ 0x11, 0x03, 0xf0, 0x66, 0x00, 0x0d, 0xf0, 0x00, -+ 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, 0x70, 0x81, -+ 0x00, 0x12, 0x6e, 0xe2, 0xff, 0xfe, 0x0e, 0x8d, -+ 0xf4, 0x95, 0xe8, 0x00, 0xe8, 0x01, 0x80, 0xe1, -+ 0x00, 0x02, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, -+ 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, -+ 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0c, -+ 0x00, 0x00, 0x81, 0xe1, 0x00, 0x01, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, 0x88, 0x0e, -+ 0xf4, 0x95, 0xf1, 0x66, 0x00, 0x0d, 0xf3, 0x00, -+ 0x24, 0x00, 0x89, 0x11, 0xf4, 0x95, 0xf4, 0x95, -+ 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, -+ 0x00, 0x0b, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, -+ 0x00, 0x01, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, -+ 0x00, 0x00, 0x80, 0x02, 0x76, 0x03, 0x00, 0x00, -+ 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0xe8, 0x00, -+ 0xee, 0x04, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0x88, 0x19, 0xf4, 0x95, 0x73, 0x19, 0x00, 0x0e, -+ 0xf1, 0x66, 0x00, 0x0d, 0xf2, 0x00, 0x24, 0x00, -+ 0x77, 0x15, 0x25, 0xa0, 0x77, 0x14, 0x00, 0x00, -+ 0x77, 0x1a, 0x00, 0x1f, 0xf0, 0x72, 0x0f, 0x14, -+ 0xf6, 0xb8, 0x49, 0x19, 0x09, 0x85, 0xf8, 0x4c, -+ 0x0f, 0x13, 0xf1, 0x00, 0x00, 0x05, 0x89, 0x11, -+ 0x49, 0x15, 0xf3, 0x00, 0x00, 0x01, 0x89, 0x13, -+ 0x49, 0x15, 0xf3, 0x00, 0x00, 0x07, 0x89, 0x12, -+ 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, -+ 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, -+ 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, -+ 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, -+ 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x10, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x80, 0x0f, 0x13, -+ 0x11, 0x93, 0x1d, 0x91, 0x19, 0x92, 0x89, 0x11, -+ 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0x81, 0x0f, 0x13, -+ 0x6d, 0x94, 0x6d, 0xed, 0x00, 0x0d, 0x48, 0x14, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, -+ 0x4a, 0x17, 0xee, 0xf8, 0x88, 0x17, 0x10, 0x0d, -+ 0x80, 0x04, 0x10, 0x0c, 0x80, 0x05, 0x71, 0x0e, -+ 0x00, 0x16, 0x73, 0x17, 0x00, 0x0e, 0xf0, 0x66, -+ 0x00, 0x0d, 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, -+ 0x10, 0xf8, 0x27, 0x63, 0xf8, 0x45, 0x0f, 0x32, -+ 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, -+ 0x10, 0xf8, 0x27, 0x60, 0xf8, 0x44, 0x0f, 0x3d, -+ 0x60, 0xe1, 0x00, 0x02, 0x00, 0x01, 0xf8, 0x20, -+ 0x0f, 0x6d, 0xf0, 0x73, 0x11, 0x33, 0x10, 0x04, -+ 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, -+ 0x11, 0x04, 0xf3, 0x00, 0x00, 0x01, 0x81, 0x04, -+ 0x6d, 0x8e, 0x77, 0x10, 0x00, 0x01, 0x71, 0xe1, -+ 0x00, 0x02, 0x00, 0x12, 0xf4, 0xaa, 0xf8, 0x30, -+ 0x0f, 0x62, 0x77, 0x10, 0x00, 0x02, 0xf4, 0xaa, -+ 0xf8, 0x30, 0x0f, 0x6d, 0x45, 0xe1, 0x00, 0x0b, -+ 0x88, 0x10, 0x43, 0xe1, 0x00, 0x0c, 0x83, 0xf8, -+ 0x00, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xaa, -+ 0xf8, 0x30, 0x0f, 0x6d, 0xf0, 0x73, 0x0f, 0x96, -+ 0xf5, 0x00, 0x81, 0x04, 0x49, 0x16, 0xf5, 0x20, -+ 0x89, 0x16, 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x48, 0x16, -+ 0xf8, 0x45, 0x11, 0x33, 0xf7, 0xb8, 0x71, 0xe1, -+ 0x00, 0x02, 0x00, 0x12, 0x10, 0xf8, 0x00, 0x12, -+ 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x46, 0x0f, 0x8c, -+ 0x10, 0xf8, 0x00, 0x12, 0xf0, 0x10, 0x00, 0x03, -+ 0xf8, 0x45, 0x10, 0x16, 0x77, 0x10, 0x00, 0x01, -+ 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0x9c, 0x77, 0x10, -+ 0x00, 0x02, 0xf4, 0xaa, 0xf8, 0x30, 0x0f, 0xa8, -+ 0xf0, 0x73, 0x0f, 0x96, 0x77, 0x10, 0x00, 0x04, -+ 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xb7, 0x77, 0x10, -+ 0x00, 0x05, 0xf4, 0xaa, 0xf8, 0x30, 0x10, 0xbc, -+ 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, -+ 0xf0, 0x73, 0x11, 0x31, 0x76, 0xe1, 0x00, 0x0c, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, -+ 0x00, 0x02, 0x00, 0x02, 0x11, 0xe1, 0x00, 0x0c, -+ 0xe8, 0x03, 0xf6, 0x20, 0x89, 0x12, 0xf4, 0x95, -+ 0x77, 0x10, 0x00, 0x03, 0xf5, 0xaa, 0xf8, 0x30, -+ 0x0f, 0xb6, 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, -+ 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, 0xf5, 0xae, -+ 0xf8, 0x20, 0x0f, 0xbd, 0x48, 0x16, 0x80, 0x06, -+ 0x88, 0x13, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x03, -+ 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xc8, 0x6b, 0xf8, -+ 0x27, 0x6f, 0x00, 0x01, 0x12, 0x06, 0xf8, 0x45, -+ 0x10, 0x00, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, -+ 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, -+ 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, -+ 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, -+ 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, -+ 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, -+ 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, -+ 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, -+ 0x88, 0x16, 0x89, 0x13, 0xf4, 0x95, 0x77, 0x10, -+ 0x00, 0x03, 0xf6, 0xab, 0xf8, 0x20, 0x0f, 0xf5, -+ 0x6b, 0xf8, 0x27, 0x6f, 0x00, 0x01, 0x77, 0x10, -+ 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, -+ 0xf6, 0xab, 0xf8, 0x20, 0x10, 0x00, 0x6b, 0xf8, -+ 0x27, 0x6f, 0x00, 0x01, 0x6c, 0xe2, 0xff, 0xfd, -+ 0x11, 0x31, 0xf6, 0xb8, 0x6f, 0xe1, 0x00, 0x05, -+ 0x0c, 0x48, 0x6f, 0xe1, 0x00, 0x06, 0x0c, 0x18, -+ 0xf0, 0x30, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x03, -+ 0x80, 0xe1, 0x00, 0x0b, 0x76, 0xe1, 0x00, 0x02, -+ 0x00, 0x03, 0x48, 0x16, 0xf8, 0x45, 0x11, 0x33, -+ 0x71, 0xe1, 0x00, 0x0c, 0x00, 0x12, 0x10, 0xe1, -+ 0x00, 0x0b, 0x49, 0x12, 0xf6, 0x20, 0x88, 0x13, -+ 0xe8, 0x0c, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, -+ 0xf4, 0x95, 0xf5, 0xab, 0xf8, 0x20, 0x10, 0x27, -+ 0x48, 0x13, 0x80, 0x06, 0x88, 0x10, 0xf4, 0x95, -+ 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0x30, -+ 0x70, 0x06, 0x00, 0x16, 0x12, 0x06, 0xf8, 0x45, -+ 0x10, 0x5f, 0x10, 0xe1, 0x00, 0x04, 0x80, 0x00, -+ 0x10, 0x05, 0x80, 0x01, 0x10, 0x04, 0x80, 0x02, -+ 0x10, 0x06, 0x80, 0x03, 0x48, 0x11, 0xf2, 0x74, -+ 0x07, 0x1e, 0xf0, 0x00, 0x00, 0x05, 0x10, 0x06, -+ 0x00, 0xe1, 0x00, 0x04, 0x80, 0xe1, 0x00, 0x04, -+ 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, -+ 0x00, 0x0c, 0x88, 0x12, 0x11, 0x06, 0x10, 0x04, -+ 0xf6, 0x00, 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, -+ 0x88, 0x16, 0xf4, 0x95, 0x77, 0x10, 0x00, 0x0c, -+ 0x71, 0xe1, 0x00, 0x04, 0x00, 0x13, 0xf6, 0xab, -+ 0xf8, 0x20, 0x10, 0x5f, 0x6b, 0xf8, 0x27, 0x6f, -+ 0x00, 0x01, 0x77, 0x10, 0x00, 0x0c, 0xf6, 0xaa, -+ 0xf8, 0x20, 0x10, 0x6b, 0xf2, 0x74, 0x0e, 0x9f, -+ 0xf4, 0x95, 0x48, 0x17, 0x71, 0xe1, 0x00, 0x0c, -+ 0x00, 0x12, 0x77, 0x10, 0x00, 0x0c, 0xf4, 0xaa, -+ 0xf8, 0x30, 0x10, 0x7c, 0x77, 0x10, 0x00, 0x0c, -+ 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x13, 0xf6, 0xab, -+ 0xf8, 0x30, 0x10, 0xb4, 0xe7, 0x30, 0xf7, 0xaa, -+ 0xf8, 0x30, 0x10, 0xb4, 0xf2, 0x74, 0x0e, 0xc1, -+ 0xf4, 0x95, 0x48, 0x17, 0x88, 0x12, 0xf4, 0x95, -+ 0xf4, 0x95, 0x6c, 0x82, 0x10, 0x8d, 0x76, 0xe1, -+ 0x00, 0x04, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, -+ 0x00, 0x05, 0xf0, 0x73, 0x10, 0xb4, 0x76, 0xe1, -+ 0x00, 0x02, 0x00, 0x04, 0x77, 0x10, 0x00, 0x0c, -+ 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf5, 0xaa, -+ 0xf8, 0x20, 0x10, 0x9a, 0xf0, 0x73, 0x10, 0x9c, -+ 0x77, 0x12, 0x00, 0x0c, 0x76, 0x00, 0x00, 0x00, -+ 0x70, 0x01, 0x00, 0x12, 0x70, 0x02, 0x00, 0x17, -+ 0x76, 0x03, 0x00, 0x01, 0x48, 0x11, 0xf2, 0x74, -+ 0x0c, 0xb9, 0xf0, 0x00, 0x00, 0x05, 0x76, 0xe1, -+ 0x00, 0x04, 0x00, 0x00, 0x77, 0x10, 0x00, 0x0c, -+ 0x71, 0xe1, 0x00, 0x0b, 0x00, 0x12, 0xf6, 0xaa, -+ 0xf8, 0x20, 0x11, 0x1c, 0x48, 0x16, 0xf8, 0x45, -+ 0x11, 0x33, 0x60, 0xe1, 0x00, 0x02, 0x00, 0x05, -+ 0xf8, 0x20, 0x10, 0xdf, 0x10, 0xe1, 0x00, 0x0b, -+ 0x08, 0xe1, 0x00, 0x0c, 0x11, 0xe1, 0x00, 0x04, -+ 0xf8, 0x4d, 0x10, 0xc7, 0x6b, 0xf8, 0x27, 0x6f, -+ 0x00, 0x01, 0x88, 0x10, 0xf4, 0x95, 0xf4, 0x95, -+ 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xcf, 0x48, 0x16, -+ 0xf4, 0x95, 0x48, 0x08, 0xf8, 0x45, 0x11, 0x16, -+ 0x6f, 0xe1, 0x00, 0x0c, 0x0d, 0x00, 0x81, 0xe1, -+ 0x00, 0x0c, 0x11, 0x04, 0xf5, 0x00, 0x81, 0x04, -+ 0x49, 0x16, 0xf5, 0x20, 0x89, 0x16, 0xf0, 0x73, -+ 0x11, 0x0e, 0x10, 0xe1, 0x00, 0x0b, 0x71, 0xe1, -+ 0x00, 0x0c, 0x00, 0x12, 0x88, 0x10, 0xf4, 0x95, -+ 0xf4, 0x95, 0xf6, 0xaa, 0xf8, 0x30, 0x11, 0x16, -+ 0x49, 0x12, 0xf6, 0x20, 0x88, 0x10, 0xf4, 0x95, -+ 0xf4, 0x95, 0xf5, 0xae, 0xf8, 0x20, 0x10, 0xf3, -+ 0x48, 0x16, 0x80, 0x06, 0x48, 0x08, 0xf8, 0x45, -+ 0x11, 0x16, 0x10, 0x04, 0x70, 0x02, 0x00, 0x17, -+ 0x80, 0x00, 0x76, 0x03, 0x00, 0x00, 0x10, 0x06, -+ 0x80, 0x01, 0x10, 0x05, 0xf0, 0x74, 0x0c, 0xb9, -+ 0x10, 0x06, 0x00, 0xe1, 0x00, 0x0c, 0x80, 0xe1, -+ 0x00, 0x0c, 0x11, 0x06, 0x10, 0x04, 0xf6, 0x00, -+ 0x80, 0x04, 0x48, 0x16, 0xf6, 0x20, 0x88, 0x16, -+ 0x10, 0xe1, 0x00, 0x0c, 0x08, 0xe1, 0x00, 0x0b, -+ 0xf8, 0x45, 0x11, 0x1c, 0xf0, 0x73, 0x11, 0x31, -+ 0xf2, 0x74, 0x0e, 0x9f, 0xf4, 0x95, 0x48, 0x17, -+ 0xf0, 0x73, 0x11, 0x33, 0x76, 0xe1, 0x00, 0x0c, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0x02, 0x00, 0x01, 0x10, 0x04, -+ 0x80, 0x00, 0x10, 0x05, 0xf0, 0x74, 0x06, 0x9f, -+ 0x88, 0x12, 0xf4, 0x95, 0x77, 0x10, 0x00, 0xff, -+ 0xf4, 0xaa, 0xf8, 0x30, 0x11, 0x33, 0x6c, 0x86, -+ 0x0f, 0x70, 0xee, 0x08, 0x8a, 0x17, 0x8a, 0x16, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfc, -+ 0xf4, 0x95, 0x71, 0x06, 0x00, 0x12, 0x88, 0x11, -+ 0x73, 0x12, 0x00, 0x0e, 0xf1, 0x66, 0x00, 0x0d, -+ 0xf3, 0x00, 0x24, 0x00, 0x89, 0x14, 0x13, 0x81, -+ 0xf7, 0x7a, 0xf3, 0x30, 0x00, 0x01, 0x81, 0xf8, -+ 0x27, 0x60, 0x13, 0xe1, 0x00, 0x01, 0xf7, 0x7c, -+ 0xf3, 0x30, 0x00, 0x03, 0x81, 0xf8, 0x27, 0x61, -+ 0xe9, 0x0f, 0x19, 0xe1, 0x00, 0x01, 0x81, 0xf8, -+ 0x27, 0x62, 0x71, 0xe4, 0x00, 0x03, 0x00, 0x13, -+ 0xf6, 0xb8, 0x49, 0x13, 0xf3, 0x00, 0x00, 0x01, -+ 0xf3, 0x30, 0x00, 0x0f, 0x49, 0x0b, 0x09, 0xf8, -+ 0x27, 0x62, 0xf8, 0x4d, 0x11, 0x75, 0x77, 0x10, -+ 0x00, 0xff, 0xf4, 0xab, 0xf8, 0x30, 0x11, 0x75, -+ 0x57, 0xf8, 0x27, 0x6c, 0xf3, 0x00, 0x00, 0x01, -+ 0x4f, 0xf8, 0x27, 0x6c, 0x76, 0xf8, 0x27, 0x63, -+ 0x00, 0x01, 0xf0, 0x73, 0x11, 0x78, 0x76, 0xf8, -+ 0x27, 0x63, 0x00, 0x00, 0x70, 0xe4, 0x00, 0x03, -+ 0x27, 0x62, 0x76, 0xf8, 0x27, 0x64, 0x00, 0x00, -+ 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, 0x00, 0x0b, -+ 0x00, 0x02, 0xf8, 0x20, 0x11, 0x8d, 0xe9, 0x01, -+ 0x6f, 0xe1, 0x00, 0x02, 0x0f, 0x18, 0x81, 0xf8, -+ 0x27, 0x64, 0x11, 0xf8, 0x27, 0x61, 0x61, 0xf8, -+ 0x00, 0x0b, 0x00, 0x01, 0xf8, 0x20, 0x11, 0xa9, -+ 0x10, 0xf8, 0x27, 0x64, 0xf1, 0x00, 0x00, 0x04, -+ 0x89, 0x13, 0xe9, 0xb8, 0xf5, 0x20, 0x81, 0xf8, -+ 0x27, 0x65, 0x60, 0x84, 0x00, 0x02, 0xf8, 0x20, -+ 0x11, 0xa9, 0x70, 0x00, 0x00, 0x11, 0x70, 0x01, -+ 0x00, 0x13, 0x70, 0x02, 0x27, 0x65, 0xf2, 0x74, -+ 0x0f, 0x18, 0xf4, 0x95, 0x48, 0x12, 0xee, 0x04, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, -+ 0x4a, 0x17, 0xee, 0xfc, 0xe8, 0x00, 0x4e, 0xf8, -+ 0x27, 0x66, 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x68, -+ 0xe8, 0x00, 0x4e, 0xf8, 0x27, 0x6c, 0xe8, 0x00, -+ 0x4e, 0xf8, 0x27, 0x6a, 0x77, 0x12, 0x27, 0x40, -+ 0x77, 0x11, 0x24, 0x00, 0x77, 0x1a, 0x00, 0x1f, -+ 0xf0, 0x72, 0x11, 0xdb, 0x70, 0x92, 0x00, 0x11, -+ 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, 0x76, 0x81, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, 0x76, 0xe1, -+ 0x00, 0x0c, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, -+ 0x6d, 0xe9, 0x00, 0x0d, 0xf0, 0x20, 0x25, 0xa0, -+ 0xf1, 0x00, 0x00, 0x07, 0x89, 0x11, 0xf1, 0x00, -+ 0x00, 0x01, 0x81, 0x02, 0x88, 0x16, 0xf4, 0x95, -+ 0x77, 0x17, 0x00, 0x20, 0x76, 0x86, 0x00, 0xff, -+ 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, -+ 0x10, 0x02, 0xf0, 0x74, 0x06, 0x6c, 0x76, 0x00, -+ 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, -+ 0x06, 0x6c, 0xf4, 0x95, 0x48, 0x11, 0x10, 0x02, -+ 0xf0, 0x00, 0x00, 0x0d, 0x80, 0x02, 0x6d, 0xe9, -+ 0x00, 0x0d, 0x6d, 0xee, 0x00, 0x0d, 0x6c, 0xef, -+ 0xff, 0xff, 0x11, 0xe8, 0xf0, 0x74, 0x0c, 0x9d, -+ 0xee, 0x04, 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, -+ 0xfc, 0x00, 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, -+ 0xee, 0xfa, 0x88, 0x11, 0x10, 0x0a, 0x49, 0x11, -+ 0xf8, 0x4d, 0x12, 0x9f, 0x48, 0x08, 0xf8, 0x45, -+ 0x12, 0x9f, 0x80, 0x04, 0x12, 0x81, 0xf5, 0x78, -+ 0x89, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x6c, 0xe2, -+ 0xff, 0xb9, 0x12, 0x8a, 0x61, 0xf8, 0x00, 0x08, -+ 0x00, 0x80, 0xf8, 0x30, 0x12, 0x8a, 0x13, 0xe1, -+ 0x00, 0x01, 0xf0, 0xe8, 0xf7, 0x78, 0xf1, 0xa0, -+ 0xf2, 0x30, 0x1f, 0xff, 0x88, 0x17, 0xf4, 0x95, -+ 0x77, 0x12, 0x24, 0x00, 0x77, 0x16, 0x00, 0x00, -+ 0x77, 0x13, 0x00, 0x20, 0xf6, 0xb8, 0x48, 0x17, -+ 0x08, 0xe2, 0x00, 0x01, 0xf8, 0x45, 0x12, 0x42, -+ 0x6d, 0xea, 0x00, 0x0d, 0x6d, 0x96, 0x6c, 0xeb, -+ 0xff, 0xff, 0x12, 0x34, 0xf0, 0x73, 0x12, 0x90, -+ 0x56, 0xf8, 0x27, 0x6a, 0xf0, 0x00, 0x00, 0x01, -+ 0x4e, 0xf8, 0x27, 0x6a, 0x60, 0x82, 0x00, 0x01, -+ 0xf8, 0x30, 0x12, 0x54, 0x70, 0x00, 0x00, 0x16, -+ 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, -+ 0xf0, 0x73, 0x12, 0x90, 0x70, 0x00, 0x00, 0x16, -+ 0xf2, 0x74, 0x11, 0x38, 0xf4, 0x95, 0x48, 0x11, -+ 0x72, 0x10, 0x2a, 0x9e, 0xf4, 0x95, 0xf4, 0xaf, -+ 0xf8, 0x30, 0x12, 0x6e, 0x76, 0x00, 0x00, 0x00, -+ 0x76, 0x01, 0x00, 0xbc, 0x70, 0x02, 0x00, 0x16, -+ 0x76, 0x03, 0x00, 0x00, 0xf2, 0x74, 0x0c, 0xb9, -+ 0xf4, 0x95, 0x48, 0x11, 0xf0, 0x73, 0x12, 0x90, -+ 0x10, 0xf8, 0x27, 0x6e, 0xf8, 0x44, 0x12, 0x90, -+ 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0xbc, -+ 0x70, 0x02, 0x00, 0x16, 0x76, 0x03, 0x00, 0x00, -+ 0xf2, 0x74, 0x0c, 0xb9, 0xf4, 0x95, 0x48, 0x11, -+ 0xf0, 0x74, 0x0c, 0x5e, 0xf0, 0xe0, 0xf0, 0x10, -+ 0x13, 0x88, 0xf8, 0x42, 0x12, 0x90, 0x76, 0xf8, -+ 0x27, 0x6e, 0x00, 0x01, 0xf0, 0x73, 0x12, 0x90, -+ 0x56, 0xf8, 0x27, 0x66, 0xf0, 0x00, 0x00, 0x01, -+ 0x4e, 0xf8, 0x27, 0x66, 0x6d, 0xe9, 0x00, 0x5e, -+ 0x56, 0xf8, 0x27, 0x68, 0xf0, 0x00, 0x00, 0x01, -+ 0x4e, 0xf8, 0x27, 0x68, 0x71, 0x04, 0x00, 0x12, -+ 0x6e, 0xea, 0xff, 0xff, 0x12, 0x18, 0x70, 0x04, -+ 0x00, 0x12, 0xee, 0x06, 0x8a, 0x17, 0x8a, 0x16, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xee, 0xfe, -+ 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, -+ 0xf0, 0x00, 0x25, 0xa0, 0x88, 0x11, 0xf4, 0x95, -+ 0xf4, 0x95, 0x76, 0x81, 0x00, 0xff, 0x76, 0x00, -+ 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0xf2, 0x74, -+ 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x01, 0x76, 0x00, -+ 0x00, 0x00, 0x76, 0x01, 0x00, 0x06, 0x48, 0x11, -+ 0xf2, 0x74, 0x06, 0x6c, 0xf0, 0x00, 0x00, 0x07, -+ 0xee, 0x02, 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, -+ 0x88, 0x0e, 0xf4, 0x95, 0xf0, 0x66, 0x00, 0x0d, -+ 0xf0, 0x00, 0x24, 0x00, 0x88, 0x11, 0xf4, 0x95, -+ 0xf4, 0x95, 0x76, 0xe1, 0x00, 0x01, 0xff, 0xff, -+ 0x76, 0x81, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x03, 0x00, 0xff, -+ 0x8a, 0x11, 0xfc, 0x00, 0x4a, 0x11, 0xf4, 0x95, -+ 0x13, 0x03, 0x88, 0x11, 0xfa, 0x4d, 0x12, 0xec, -+ 0x71, 0x02, 0x00, 0x12, 0xf3, 0x10, 0x00, 0x01, -+ 0x89, 0x1a, 0xf4, 0x95, 0xf0, 0x72, 0x12, 0xeb, -+ 0x70, 0x91, 0x00, 0x12, 0x8a, 0x11, 0xfc, 0x00, -+ 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, -+ 0xf7, 0xb8, 0xee, 0xfe, 0x10, 0xf8, 0x00, 0x08, -+ 0x11, 0x06, 0xf1, 0xc0, 0x83, 0x00, 0xf4, 0x85, -+ 0x11, 0x06, 0xf7, 0x85, 0x81, 0x06, 0xf6, 0xb8, -+ 0xec, 0x0f, 0x1e, 0x06, 0x61, 0x00, 0x80, 0x00, -+ 0xf8, 0x20, 0x13, 0x05, 0xf4, 0x84, 0xee, 0x02, -+ 0x8a, 0x0d, 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, -+ 0xf4, 0x95, 0x4a, 0x0b, 0x4a, 0x0c, 0x4a, 0x0d, -+ 0xee, 0xfe, 0xf7, 0xb8, 0x80, 0x00, 0x10, 0xf8, -+ 0x00, 0x08, 0xf4, 0x85, 0x11, 0x06, 0xf7, 0x85, -+ 0x81, 0x06, 0xf6, 0xb8, 0xec, 0x0f, 0x1e, 0x06, -+ 0xf0, 0xf0, 0x61, 0x00, 0x80, 0x00, 0xf8, 0x20, -+ 0x13, 0x20, 0xf4, 0x84, 0xee, 0x02, 0x8a, 0x0d, -+ 0x8a, 0x0c, 0x8a, 0x0b, 0xfc, 0x00, 0x4a, 0x11, -+ 0x77, 0x11, 0x00, 0x7b, 0x76, 0x81, 0x2e, 0xec, -+ 0x77, 0x11, 0x00, 0x7b, 0xee, 0xff, 0x71, 0x81, -+ 0x00, 0x11, 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x04, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, -+ 0x00, 0x62, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x76, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x92, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0x94, 0x00, 0x00, 0x76, 0xe1, -+ 0x00, 0xb0, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xb3, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0xbe, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0xbf, 0x00, 0x00, 0x76, 0xe1, -+ 0x00, 0xc1, 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc3, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0xc5, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0xc7, 0x00, 0x00, 0x76, 0x81, -+ 0x00, 0x00, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, -+ 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xff, -+ 0xf4, 0x95, 0x71, 0x06, 0x00, 0x16, 0xfb, 0x80, -+ 0x16, 0xa2, 0x88, 0x17, 0xf4, 0x95, 0xf7, 0xb8, -+ 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, -+ 0xfa, 0x46, 0x13, 0x88, 0x77, 0x11, 0x00, 0x00, -+ 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x02, -+ 0xf8, 0x45, 0x13, 0xf9, 0x10, 0xf8, 0x00, 0x17, -+ 0xf8, 0x45, 0x14, 0x39, 0x10, 0xf8, 0x00, 0x17, -+ 0xf0, 0x10, 0x00, 0x01, 0xf8, 0x45, 0x14, 0x1f, -+ 0xf0, 0x73, 0x14, 0x52, 0x10, 0xf8, 0x00, 0x17, -+ 0xf0, 0x10, 0x00, 0x03, 0xf8, 0x45, 0x13, 0xd3, -+ 0x10, 0xf8, 0x00, 0x17, 0xf0, 0x10, 0x00, 0x06, -+ 0xf8, 0x44, 0x14, 0x52, 0x77, 0x12, 0x00, 0x7b, -+ 0x71, 0x82, 0x00, 0x14, 0x61, 0xe4, 0x00, 0x07, -+ 0x00, 0x40, 0xf8, 0x30, 0x14, 0x52, 0x49, 0x14, -+ 0x48, 0x17, 0xf6, 0x00, 0x88, 0x12, 0xf4, 0x95, -+ 0x77, 0x13, 0x00, 0x55, 0x77, 0x11, 0x00, 0x57, -+ 0x6d, 0xea, 0x00, 0x3b, 0xe5, 0x01, 0x10, 0xe6, -+ 0x00, 0x06, 0x80, 0x81, 0x48, 0x14, 0x00, 0xf8, -+ 0x00, 0x17, 0x88, 0x12, 0xf4, 0x95, 0x77, 0x11, -+ 0x00, 0x55, 0x10, 0xe2, 0x00, 0x40, 0x80, 0x81, -+ 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x07, -+ 0x80, 0x81, 0x77, 0x11, 0x00, 0x55, 0x10, 0xe2, -+ 0x00, 0x45, 0x80, 0x81, 0x10, 0xe6, 0x00, 0x08, -+ 0x77, 0x11, 0x00, 0x57, 0x80, 0x81, 0x77, 0x11, -+ 0x00, 0x55, 0x10, 0xe2, 0x00, 0x4a, 0x80, 0x81, -+ 0x77, 0x11, 0x00, 0x57, 0x10, 0xe6, 0x00, 0x09, -+ 0x80, 0x81, 0xf2, 0x73, 0x14, 0x52, 0x77, 0x11, -+ 0x03, 0xc0, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, -+ 0xf0, 0x00, 0x00, 0x07, 0x88, 0x13, 0xf4, 0x95, -+ 0xf4, 0x95, 0x96, 0x1b, 0xf8, 0x30, 0x14, 0x52, -+ 0x10, 0xe3, 0x00, 0x35, 0x77, 0x12, 0x00, 0x55, -+ 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, -+ 0x00, 0x04, 0x80, 0x82, 0x77, 0x12, 0x00, 0x55, -+ 0x10, 0xe3, 0x00, 0x37, 0x80, 0x82, 0x77, 0x12, -+ 0x00, 0x57, 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, -+ 0x48, 0x11, 0xf0, 0x40, 0x00, 0x10, 0xf2, 0x73, -+ 0x14, 0x50, 0xf0, 0x40, 0x00, 0x20, 0x77, 0x12, -+ 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, -+ 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0d, -+ 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x34, -+ 0x77, 0x13, 0x00, 0x55, 0x80, 0x83, 0x77, 0x13, -+ 0x00, 0x57, 0x10, 0xe6, 0x00, 0x02, 0x80, 0x83, -+ 0x10, 0xe2, 0x00, 0x36, 0x77, 0x12, 0x00, 0x55, -+ 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, -+ 0x00, 0x03, 0x80, 0x82, 0x48, 0x11, 0xf0, 0x40, -+ 0x00, 0x04, 0xf2, 0x73, 0x14, 0x50, 0xf0, 0x40, -+ 0x00, 0x08, 0x77, 0x12, 0x00, 0x7b, 0x10, 0x82, -+ 0xf0, 0x00, 0x00, 0x07, 0x88, 0x12, 0xf4, 0x95, -+ 0xf4, 0x95, 0x96, 0x0e, 0xf8, 0x30, 0x14, 0x52, -+ 0x10, 0xe2, 0x00, 0x33, 0x77, 0x12, 0x00, 0x55, -+ 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0x10, 0xe6, -+ 0x00, 0x01, 0x80, 0x82, 0x48, 0x11, 0xf2, 0x73, -+ 0x14, 0x50, 0xf0, 0x40, 0x00, 0x02, 0x77, 0x12, -+ 0x00, 0x7b, 0x10, 0x82, 0xf0, 0x00, 0x00, 0x07, -+ 0x88, 0x12, 0xf4, 0x95, 0xf4, 0x95, 0x96, 0x0f, -+ 0xf8, 0x30, 0x14, 0x52, 0x10, 0xe2, 0x00, 0x32, -+ 0x77, 0x12, 0x00, 0x55, 0x77, 0x13, 0x00, 0x57, -+ 0x80, 0x82, 0x48, 0x11, 0xe7, 0x62, 0xf0, 0x40, -+ 0x00, 0x01, 0xe5, 0x01, 0x88, 0x11, 0xf4, 0x95, -+ 0x77, 0x12, 0x00, 0x7b, 0x48, 0x11, 0x71, 0x82, -+ 0x00, 0x12, 0x1a, 0xe2, 0x00, 0x07, 0x80, 0xe2, -+ 0x00, 0x07, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, -+ 0x8a, 0x17, 0x48, 0x11, 0x8a, 0x16, 0x8a, 0x11, -+ 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0x77, 0x0e, -+ 0x00, 0x05, 0x77, 0x12, 0x00, 0x55, 0xe8, 0x04, -+ 0xf6, 0xb8, 0x28, 0xe1, 0x00, 0x02, 0xee, 0xff, -+ 0x80, 0x82, 0x77, 0x12, 0x00, 0x57, 0xf0, 0x20, -+ 0x80, 0x00, 0xee, 0x01, 0x1a, 0x82, 0x77, 0x12, -+ 0x00, 0x57, 0x80, 0x82, 0xe8, 0x01, 0x32, 0xe1, -+ 0x00, 0x02, 0xf5, 0x82, 0x77, 0x11, 0x00, 0x54, -+ 0xf6, 0x93, 0x18, 0x81, 0x77, 0x11, 0x00, 0x54, -+ 0xf2, 0xa0, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, -+ 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, -+ 0x71, 0x04, 0x00, 0x11, 0xfb, 0x80, 0x16, 0xa2, -+ 0x88, 0x16, 0xf4, 0x95, 0x77, 0x12, 0x00, 0x55, -+ 0x10, 0xe6, 0x00, 0x03, 0x80, 0x82, 0x77, 0x12, -+ 0x00, 0x56, 0x10, 0xe1, 0x00, 0x02, 0x77, 0x13, -+ 0x00, 0x56, 0x80, 0x82, 0x77, 0x12, 0x00, 0x56, -+ 0x10, 0xe1, 0x00, 0x03, 0x80, 0x82, 0x10, 0xe1, -+ 0x00, 0x04, 0x77, 0x12, 0x00, 0x56, 0x80, 0x82, -+ 0x77, 0x12, 0x00, 0x56, 0x10, 0xe1, 0x00, 0x01, -+ 0x80, 0x82, 0xe7, 0x12, 0xe5, 0x01, 0xf9, 0x80, -+ 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, -+ 0x4a, 0x11, 0x4a, 0x16, 0x4a, 0x17, 0xee, 0xf9, -+ 0x77, 0x11, 0x00, 0x7b, 0x76, 0x00, 0x00, 0x16, -+ 0x76, 0x01, 0x00, 0x17, 0x76, 0x02, 0x00, 0x1a, -+ 0x76, 0x03, 0x00, 0x1b, 0x76, 0x04, 0x00, 0x1c, -+ 0x76, 0x05, 0x00, 0x1d, 0x71, 0x81, 0x00, 0x17, -+ 0x71, 0xe7, 0x00, 0x06, 0x00, 0x11, 0x10, 0x81, -+ 0xf8, 0x44, 0x14, 0xdf, 0xf9, 0x80, 0x16, 0x53, -+ 0xf6, 0xb8, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x20, -+ 0xff, 0xff, 0xf6, 0xb8, 0xfb, 0x80, 0x16, 0x08, -+ 0xf0, 0x20, 0xff, 0xff, 0x77, 0x11, 0x00, 0x7b, -+ 0x71, 0x81, 0x00, 0x17, 0x76, 0xe7, 0x00, 0x06, -+ 0x00, 0x01, 0x48, 0x17, 0x77, 0x16, 0x00, 0x00, -+ 0x77, 0x10, 0x00, 0x04, 0x77, 0x15, 0x00, 0x03, -+ 0x77, 0x14, 0x00, 0x02, 0x77, 0x13, 0x00, 0x01, -+ 0xf0, 0x00, 0x00, 0x39, 0x76, 0xe7, 0x00, 0x08, -+ 0x00, 0x1f, 0x76, 0xe7, 0x00, 0x07, 0x00, 0x00, -+ 0x88, 0x0e, 0x77, 0x1a, 0x00, 0x05, 0x48, 0x17, -+ 0xf0, 0x00, 0x00, 0x09, 0x88, 0x12, 0x48, 0x18, -+ 0x88, 0x19, 0xe8, 0x00, 0xf0, 0x72, 0x15, 0x2c, -+ 0x73, 0x19, 0x00, 0x11, 0x76, 0x82, 0x00, 0x00, -+ 0x11, 0x91, 0x73, 0x11, 0x00, 0x19, 0x70, 0xe2, -+ 0x00, 0x03, 0x00, 0x16, 0x70, 0xe2, 0x00, 0x04, -+ 0x00, 0x13, 0x70, 0xe2, 0x00, 0x05, 0x00, 0x14, -+ 0x81, 0xe2, 0x00, 0x01, 0x70, 0xe2, 0x00, 0x06, -+ 0x00, 0x15, 0x70, 0xe2, 0x00, 0x07, 0x00, 0x10, -+ 0x80, 0xe2, 0x00, 0x02, 0x73, 0x0e, 0x00, 0x11, -+ 0xf1, 0x00, 0x00, 0x1e, 0x6d, 0xee, 0x00, 0x05, -+ 0x6d, 0xeb, 0x00, 0x05, 0x6d, 0xec, 0x00, 0x05, -+ 0x6d, 0xed, 0x00, 0x05, 0x6d, 0xe8, 0x00, 0x05, -+ 0xf0, 0x00, 0x00, 0x01, 0x81, 0x91, 0x6d, 0xea, -+ 0x00, 0x08, 0x73, 0x11, 0x00, 0x0e, 0xee, 0x07, -+ 0x76, 0xe7, 0x00, 0x41, 0x00, 0x24, 0x76, 0xe7, -+ 0x00, 0x46, 0x00, 0x25, 0x76, 0xe7, 0x00, 0x4b, -+ 0x00, 0x26, 0x76, 0xe7, 0x00, 0x50, 0x00, 0x27, -+ 0x8a, 0x17, 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, -+ 0x4a, 0x11, 0x4a, 0x16, 0xee, 0xfe, 0x88, 0x11, -+ 0x56, 0x06, 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, -+ 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, 0xf0, 0x10, -+ 0xff, 0xff, 0xfa, 0x45, 0x15, 0x60, 0x77, 0x16, -+ 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, 0x49, 0x11, -+ 0x10, 0x82, 0xf6, 0x03, 0xf0, 0x00, 0x00, 0x09, -+ 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, -+ 0xf8, 0x44, 0x15, 0x71, 0xf2, 0x73, 0x15, 0x71, -+ 0xf4, 0x95, 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, -+ 0x10, 0x81, 0xf0, 0x00, 0x00, 0x09, 0x88, 0x11, -+ 0xf4, 0x95, 0x77, 0x12, 0x00, 0x06, 0x10, 0x81, -+ 0xf8, 0x45, 0x15, 0x5c, 0x6e, 0xea, 0xff, 0xff, -+ 0x15, 0x69, 0x6d, 0xe9, 0x00, 0x08, 0x76, 0x86, -+ 0x00, 0x01, 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, -+ 0x10, 0xf8, 0x00, 0x0b, 0xf8, 0x45, 0x15, 0x7e, -+ 0xfb, 0x80, 0x15, 0x85, 0xf4, 0x95, 0x48, 0x16, -+ 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x02, 0x48, 0x16, -+ 0x8a, 0x16, 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, -+ 0xee, 0xff, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, -+ 0xf4, 0x95, 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, -+ 0xf8, 0x30, 0x15, 0xc4, 0x10, 0xe1, 0x00, 0x03, -+ 0x77, 0x12, 0x00, 0x55, 0x80, 0x82, 0x77, 0x12, -+ 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, -+ 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, -+ 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, -+ 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x77, 0x12, -+ 0x00, 0x56, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, -+ 0x00, 0x02, 0xf0, 0x00, 0x00, 0x08, 0x32, 0xf8, -+ 0x00, 0x08, 0x77, 0x12, 0x00, 0x54, 0xe8, 0x01, -+ 0xf4, 0x82, 0xf4, 0x93, 0x18, 0x82, 0x77, 0x12, -+ 0x00, 0x54, 0xf0, 0x40, 0x00, 0x00, 0x80, 0x82, -+ 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x76, -+ 0x10, 0xe1, 0x00, 0x01, 0xf9, 0x80, 0x16, 0x66, -+ 0xf0, 0x73, 0x16, 0x03, 0x77, 0x11, 0x00, 0x7b, -+ 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, 0x00, 0x07, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, -+ 0x00, 0x09, 0xf9, 0x80, 0x15, 0x85, 0x77, 0x11, -+ 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, -+ 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, -+ 0x00, 0x08, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, -+ 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, -+ 0x15, 0x85, 0xf0, 0x00, 0x00, 0x10, 0x77, 0x11, -+ 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, -+ 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, -+ 0x00, 0x18, 0x77, 0x11, 0x00, 0x7b, 0x71, 0x81, -+ 0x00, 0x11, 0x10, 0xe1, 0x00, 0x09, 0xfb, 0x80, -+ 0x15, 0x85, 0xf0, 0x00, 0x00, 0x20, 0x77, 0x11, -+ 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x10, 0xe1, -+ 0x00, 0x09, 0xfb, 0x80, 0x15, 0x85, 0xf0, 0x00, -+ 0x00, 0x28, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, -+ 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, -+ 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, -+ 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, -+ 0x16, 0x41, 0x77, 0x11, 0x00, 0x55, 0x76, 0x81, -+ 0x00, 0x1e, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0x76, 0x81, -+ 0x00, 0x00, 0x77, 0x11, 0x00, 0x56, 0xf2, 0x73, -+ 0x16, 0x4e, 0x76, 0x81, 0x00, 0x00, 0x77, 0x11, -+ 0x00, 0x7b, 0x71, 0x81, 0x00, 0x11, 0x71, 0xe1, -+ 0x00, 0x07, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, -+ 0x10, 0xe1, 0x00, 0x39, 0xf9, 0x80, 0x16, 0x08, -+ 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, -+ 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, -+ 0x10, 0x81, 0xf0, 0x00, 0x00, 0x04, 0x88, 0x11, -+ 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, -+ 0x16, 0x63, 0xf4, 0x95, 0xee, 0xff, 0x76, 0x81, -+ 0x00, 0x01, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, -+ 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, -+ 0x00, 0x08, 0xee, 0xff, 0x77, 0x11, 0x00, 0x01, -+ 0xe8, 0x01, 0xee, 0x01, 0xf4, 0x82, 0x1a, 0x81, -+ 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, -+ 0xf0, 0x10, 0x00, 0x10, 0x4a, 0x11, 0x32, 0xf8, -+ 0x00, 0x08, 0xee, 0xff, 0xe8, 0x01, 0x77, 0x11, -+ 0x00, 0x00, 0xf4, 0x82, 0xee, 0x01, 0xf4, 0x93, -+ 0x18, 0x81, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, -+ 0xf4, 0xe4, 0x4a, 0x11, 0xf0, 0x10, 0x00, 0x10, -+ 0x77, 0x11, 0x00, 0x00, 0x32, 0xf8, 0x00, 0x08, -+ 0xee, 0xff, 0x11, 0x81, 0xe8, 0x01, 0xee, 0x01, -+ 0x77, 0x11, 0x00, 0x00, 0xf4, 0x82, 0xf2, 0xa0, -+ 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, -+ 0xf2, 0x73, 0x16, 0x9e, 0xf6, 0xbb, 0xf4, 0x95, -+ 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, -+ 0xf2, 0x73, 0x16, 0xa6, 0xf7, 0xbb, 0xf4, 0x95, -+ 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0x95, 0xf4, 0xe4, -+ 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, 0x71, 0x04, -+ 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, -+ 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x0e, 0x10, 0xe6, 0x00, 0x0e, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, -+ 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x0d, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, -+ 0x10, 0xe6, 0x00, 0x0d, 0x80, 0x82, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0c, -+ 0x10, 0xe6, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, 0x10, 0xe6, -+ 0x00, 0x0b, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, -+ 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x10, 0xe6, 0x00, 0x0a, 0x80, 0x82, -+ 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x09, 0x10, 0xe6, 0x00, 0x09, 0x71, 0xe1, -+ 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x08, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, -+ 0x00, 0x08, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, 0x10, 0xe6, -+ 0x00, 0x07, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, -+ 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x10, 0xe6, 0x00, 0x06, 0x80, 0x82, -+ 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x05, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, -+ 0x10, 0xe6, 0x00, 0x05, 0x80, 0x82, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x04, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, -+ 0x00, 0x04, 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, 0x71, 0xe1, -+ 0x00, 0x06, 0x00, 0x12, 0x10, 0xe6, 0x00, 0x03, -+ 0x80, 0x82, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x02, 0x10, 0xe6, 0x00, 0x02, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, -+ 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x01, 0x10, 0xe6, 0x00, 0x01, 0x71, 0xe1, -+ 0x00, 0x06, 0x00, 0x12, 0x80, 0x82, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x13, 0xe7, 0x62, -+ 0xe5, 0x01, 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, -+ 0x8a, 0x11, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, -+ 0xf4, 0x95, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, -+ 0x00, 0x12, 0xee, 0xff, 0x76, 0x82, 0x00, 0x00, -+ 0xee, 0x01, 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, -+ 0x69, 0x81, 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, -+ 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xf4, 0x95, -+ 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0xee, 0xff, 0x76, 0x82, 0x00, 0x01, 0xee, 0x01, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x11, 0x69, 0x81, -+ 0x00, 0x01, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, -+ 0x4a, 0x11, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, -+ 0xf0, 0x00, 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, -+ 0xf4, 0x95, 0x10, 0x81, 0xfa, 0x44, 0x17, 0x9c, -+ 0xf4, 0x95, 0xee, 0xff, 0xf9, 0x80, 0x16, 0x53, -+ 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, -+ 0x00, 0x94, 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, -+ 0x76, 0x81, 0x00, 0x01, 0xee, 0x01, 0x76, 0xe1, -+ 0x00, 0x01, 0x00, 0x00, 0x76, 0xe1, 0x00, 0x02, -+ 0x00, 0x21, 0x76, 0xe1, 0x00, 0x03, 0x00, 0x20, -+ 0x76, 0xe1, 0x00, 0x04, 0x00, 0x23, 0x76, 0xe1, -+ 0x00, 0x05, 0x00, 0x22, 0x76, 0xe1, 0x00, 0x06, -+ 0x00, 0x38, 0x76, 0xe1, 0x00, 0x07, 0x00, 0x39, -+ 0x76, 0xe1, 0x00, 0x08, 0x00, 0x15, 0x76, 0xe1, -+ 0x00, 0x09, 0x00, 0x14, 0x76, 0xe1, 0x00, 0x0a, -+ 0x00, 0x00, 0x76, 0xe1, 0x00, 0x0b, 0x00, 0x41, -+ 0x76, 0xe1, 0x00, 0x0c, 0x00, 0x40, 0x76, 0xe1, -+ 0x00, 0x0d, 0x00, 0x43, 0x76, 0xe1, 0x00, 0x0e, -+ 0x00, 0x42, 0x76, 0xe1, 0x00, 0x0f, 0x00, 0x48, -+ 0x76, 0xe1, 0x00, 0x10, 0x00, 0x49, 0x76, 0xe1, -+ 0x00, 0x11, 0x00, 0x1b, 0x76, 0xe1, 0x00, 0x12, -+ 0x00, 0x1a, 0x8a, 0x11, 0xf4, 0x95, 0xf4, 0xe4, -+ 0x4a, 0x11, 0xee, 0xfd, 0x88, 0x11, 0x56, 0x06, -+ 0x4e, 0x00, 0xf9, 0x80, 0x16, 0xa2, 0x77, 0x12, -+ 0x00, 0x7b, 0x77, 0x0e, 0x00, 0x09, 0x10, 0x82, -+ 0x28, 0xf8, 0x00, 0x11, 0xf0, 0x00, 0x00, 0x95, -+ 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, -+ 0xf8, 0x45, 0x17, 0xf0, 0xf2, 0x73, 0x17, 0xfd, -+ 0x77, 0x11, 0xff, 0xff, 0x76, 0x81, 0x00, 0x01, -+ 0xe9, 0x01, 0x56, 0x00, 0xf1, 0x80, 0x10, 0xf8, -+ 0x00, 0x0b, 0xf8, 0x45, 0x17, 0xfd, 0xfb, 0x80, -+ 0x18, 0x10, 0xf4, 0x95, 0x48, 0x11, 0xf9, 0x80, -+ 0x16, 0x9a, 0xee, 0x03, 0x48, 0x11, 0x8a, 0x11, -+ 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, -+ 0xf4, 0x95, 0xee, 0xff, 0x71, 0xe1, 0x00, 0x01, -+ 0x00, 0x11, 0xee, 0x01, 0x10, 0x81, 0x8a, 0x11, -+ 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, -+ 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, -+ 0x77, 0x10, 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, -+ 0x18, 0xc3, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x02, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x03, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x04, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x05, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x06, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x01, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x07, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, -+ 0x20, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x08, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x09, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x0a, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0b, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x0c, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x71, 0xe1, -+ 0x00, 0x05, 0x00, 0x12, 0x76, 0x82, 0x00, 0x0d, -+ 0x71, 0xe1, 0x00, 0x06, 0x00, 0x12, 0x76, 0x82, -+ 0x00, 0x00, 0x71, 0xe1, 0x00, 0x05, 0x00, 0x12, -+ 0x76, 0x82, 0x00, 0x0e, 0x71, 0xe1, 0x00, 0x06, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x00, 0x10, 0xe1, -+ 0x00, 0x07, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, -+ 0x00, 0x08, 0xf9, 0x80, 0x16, 0x76, 0x10, 0xe1, -+ 0x00, 0x07, 0xf9, 0x80, 0x16, 0x66, 0x10, 0xe1, -+ 0x00, 0x08, 0xf9, 0x80, 0x16, 0x66, 0xf0, 0x73, -+ 0x18, 0xd1, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, -+ 0xfb, 0x80, 0x18, 0x10, 0xf0, 0x00, 0x00, 0x95, -+ 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, 0xfb, 0x80, -+ 0x18, 0x10, 0xf0, 0x00, 0x00, 0x9e, 0xf9, 0x80, -+ 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, 0xf4, 0xe4, -+ 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, 0xf4, 0x95, -+ 0x10, 0x04, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x11, -+ 0xee, 0x01, 0x80, 0x81, 0x8a, 0x11, 0xf4, 0x95, -+ 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, 0xf4, 0x95, -+ 0x71, 0x04, 0x00, 0x16, 0xfb, 0x80, 0x16, 0xa2, -+ 0x88, 0x11, 0xf4, 0x95, 0x71, 0xe1, 0x00, 0x02, -+ 0x00, 0x12, 0x76, 0x82, 0x00, 0x10, 0x10, 0xe6, -+ 0x00, 0x01, 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, -+ 0x80, 0x82, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, -+ 0x10, 0xe6, 0x00, 0x02, 0x80, 0x82, 0xe7, 0x62, -+ 0x71, 0xe1, 0x00, 0x02, 0x00, 0x13, 0xe5, 0x01, -+ 0xf9, 0x80, 0x16, 0x9a, 0x8a, 0x16, 0x8a, 0x11, -+ 0xf4, 0xe4, 0x4a, 0x11, 0x88, 0x11, 0xee, 0xff, -+ 0xee, 0x01, 0x10, 0xe1, 0x00, 0x01, 0x8a, 0x11, -+ 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x77, 0x11, -+ 0x00, 0x7b, 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, -+ 0x88, 0x11, 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, -+ 0xfa, 0x44, 0x19, 0x2a, 0xf4, 0x95, 0xee, 0xff, -+ 0xf9, 0x80, 0x16, 0x53, 0x77, 0x11, 0x00, 0x7b, -+ 0x10, 0x81, 0xf0, 0x00, 0x00, 0xb3, 0x88, 0x11, -+ 0xf4, 0x95, 0xf4, 0x95, 0x76, 0x81, 0x00, 0x01, -+ 0xee, 0x01, 0x76, 0xe1, 0x00, 0x01, 0x00, 0x00, -+ 0x76, 0xe1, 0x00, 0x02, 0x00, 0x13, 0x76, 0xe1, -+ 0x00, 0x03, 0x00, 0x26, 0x76, 0xe1, 0x00, 0x04, -+ 0x00, 0x25, 0x76, 0xe1, 0x00, 0x05, 0x00, 0x24, -+ 0x76, 0xe1, 0x00, 0x06, 0x00, 0x00, 0x76, 0xe1, -+ 0x00, 0x07, 0x00, 0x17, 0x76, 0xe1, 0x00, 0x08, -+ 0x00, 0x32, 0x76, 0xe1, 0x00, 0x09, 0x00, 0x31, -+ 0x76, 0xe1, 0x00, 0x0a, 0x00, 0x30, 0x8a, 0x11, -+ 0xf4, 0x95, 0xf4, 0xe4, 0x4a, 0x11, 0x4a, 0x16, -+ 0x4a, 0x17, 0xee, 0xff, 0xf4, 0x95, 0x71, 0x06, -+ 0x00, 0x17, 0xfb, 0x80, 0x16, 0xa2, 0x88, 0x11, -+ 0xf4, 0x95, 0xf7, 0xb8, 0x10, 0xf8, 0x00, 0x11, -+ 0xf0, 0x10, 0xff, 0xff, 0xfa, 0x45, 0x19, 0x73, -+ 0x77, 0x16, 0xff, 0xff, 0x77, 0x12, 0x00, 0x7b, -+ 0x77, 0x0e, 0x00, 0x05, 0x10, 0x82, 0x28, 0xf8, -+ 0x00, 0x11, 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, -+ 0xf4, 0x95, 0xf4, 0x95, 0x10, 0x81, 0xf8, 0x44, -+ 0x19, 0x84, 0xf2, 0x73, 0x19, 0x84, 0xf4, 0x95, -+ 0xe7, 0x16, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, -+ 0xf0, 0x00, 0x00, 0xb4, 0x88, 0x11, 0xf4, 0x95, -+ 0x77, 0x12, 0x00, 0x02, 0x10, 0x81, 0xf8, 0x45, -+ 0x19, 0x6f, 0x6e, 0xea, 0xff, 0xff, 0x19, 0x7c, -+ 0x6d, 0xe9, 0x00, 0x05, 0x61, 0xf8, 0x00, 0x17, -+ 0x00, 0x01, 0xfa, 0x20, 0x19, 0x8f, 0x76, 0x86, -+ 0x00, 0x01, 0xfb, 0x80, 0x19, 0x97, 0xf4, 0x95, -+ 0x48, 0x16, 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, -+ 0x8a, 0x17, 0x48, 0x16, 0x8a, 0x16, 0x8a, 0x11, -+ 0xf4, 0xe4, 0x4a, 0x11, 0xee, 0xff, 0xfb, 0x80, -+ 0x16, 0xa2, 0x88, 0x11, 0xf4, 0x95, 0x77, 0x10, -+ 0xff, 0xff, 0xf4, 0xa9, 0xf8, 0x30, 0x19, 0xcc, -+ 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, 0x69, 0x82, -+ 0x00, 0x10, 0x71, 0xe1, 0x00, 0x02, 0x00, 0x12, -+ 0x68, 0x82, 0xf7, 0xff, 0x71, 0xe1, 0x00, 0x02, -+ 0x00, 0x12, 0x68, 0x82, 0xfb, 0xff, 0x71, 0xe1, -+ 0x00, 0x02, 0x00, 0x12, 0x68, 0x82, 0xff, 0xf0, -+ 0x71, 0xe1, 0x00, 0x03, 0x00, 0x12, 0x76, 0x82, -+ 0xff, 0xff, 0x71, 0xe1, 0x00, 0x04, 0x00, 0x12, -+ 0x76, 0x82, 0xff, 0xff, 0x71, 0xe1, 0x00, 0x02, -+ 0x00, 0x12, 0x69, 0x82, 0x00, 0x20, 0x71, 0xe1, -+ 0x00, 0x02, 0x00, 0x11, 0xf2, 0x73, 0x19, 0xda, -+ 0x68, 0x81, 0xff, 0xef, 0x77, 0x11, 0x00, 0x7b, -+ 0x10, 0x81, 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, -+ 0x00, 0xb4, 0x77, 0x11, 0x00, 0x7b, 0x10, 0x81, -+ 0xfb, 0x80, 0x19, 0x97, 0xf0, 0x00, 0x00, 0xb9, -+ 0xf9, 0x80, 0x16, 0x9a, 0xee, 0x01, 0x8a, 0x11, -+ 0xf4, 0xe4, 0x00, 0xa4, 0x00, 0x00, 0x19, 0xdf, -+ 0x00, 0x01, 0x2a, 0xe6, 0x00, 0x00, 0x00, 0x01, -+ 0x2a, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x2a, 0x12, -+ 0x0c, 0x01, 0xc3, 0x4f, 0x00, 0x00, 0x00, 0x01, -+ 0x2a, 0x15, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x16, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x2a, 0x5d, -+ 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, -+ 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, -+ 0x00, 0x74, 0x00, 0x20, 0x00, 0x54, 0x00, 0x65, -+ 0x00, 0x63, 0x00, 0x68, 0x00, 0x6e, 0x00, 0x6f, -+ 0x00, 0x54, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, -+ 0x00, 0x64, 0x00, 0x20, 0x00, 0x41, 0x00, 0x47, -+ 0x00, 0x00, 0x00, 0x04, 0x2a, 0x76, 0x00, 0x30, -+ 0x00, 0x2e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x0c, -+ 0x2a, 0x7a, 0x00, 0x46, 0x00, 0x65, 0x00, 0x62, -+ 0x00, 0x20, 0x00, 0x32, 0x00, 0x37, 0x00, 0x20, -+ 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, -+ 0x00, 0x00, 0x00, 0x09, 0x2a, 0x86, 0x00, 0x31, -+ 0x00, 0x34, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x35, -+ 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, -+ 0x00, 0x0f, 0x2a, 0x8f, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x01, 0x2a, 0x9e, 0x00, 0x00, -+ 0x00, 0x01, 0x2a, 0x9f, 0x00, 0x00, 0x00, 0x01, -+ 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa1, -+ 0x00, 0x00, 0x00, 0x01, 0x2a, 0xa2, 0x00, 0x00, -+ 0x00, 0x01, 0x29, 0x7e, 0x00, 0x00, 0x00, 0x02, -+ 0x29, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -+ 0x29, 0x82, 0xff, 0xff, 0x00, 0x01, 0x2a, 0xa7, -+ 0x00, 0x00, 0x00, 0x05, 0x2a, 0xa8, 0x71, 0x41, -+ 0x20, 0x00, 0x20, 0x00, 0x00, 0x23, 0x04, 0x00, -+ 0x00, 0x0a, 0x2a, 0xad, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x0f, 0x2a, 0xb7, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x40, 0x00, 0xa0, 0x82, 0x40, -+ 0x00, 0x08, 0x30, 0x7f, 0x00, 0x80, 0x01, 0x80, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x01, 0x27, 0x6e, 0x00, 0x00, -+ 0x00, 0x01, 0x27, 0x6f, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x09, 0x00, 0x00, 0x1a, 0x83, 0x04, 0xe8, -+ 0x04, 0xcf, 0x04, 0xc5, 0x04, 0xba, 0x04, 0xb0, -+ 0x04, 0xac, 0x04, 0x9c, 0x04, 0x8c, 0x04, 0x81, -+ 0x00, 0x78, 0x00, 0x00, 0x01, 0x00, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xaa, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x02, 0x23, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x05, 0xe5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x02, 0xb5, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x0e, 0x33, 0xf4, 0x95, 0xf4, 0x95, 0xf2, 0x73, -+ 0x07, 0xef, 0xf4, 0x95, 0xf4, 0x95, 0x00, 0x00, -+}; -+ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttusb-budget/Kconfig 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,11 @@ -+config DVB_TTUSB_BUDGET -+ tristate "Technotrend/Hauppauge Nova-USB devices" -+ depends on DVB_CORE && USB -+ help -+ Support for external USB adapters designed by Technotrend and -+ produced by Hauppauge, shipped under the brand name 'Nova-USB'. -+ -+ These devices don't have a MPEG decoder built in, so you need -+ an external software decoder to watch TV. -+ -+ Say Y if you own such a device and want to use it. ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttusb-budget/Makefile 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,3 @@ -+obj-$(CONFIG_DVB_TTUSB_BUDGET) += dvb-ttusb-budget.o -+ -+EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttusb-dec/dec2000_frontend.c 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,180 @@ -+/* -+ * TTUSB DEC-2000-t Frontend -+ * -+ * Copyright (C) 2003 Alex Woods -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ */ -+ -+#include -+#include -+ -+#include "dvb_frontend.h" -+#include "dvb_functions.h" -+ -+static int debug = 0; -+ -+#define dprintk if (debug) printk -+ -+static struct dvb_frontend_info dec2000_frontend_info = { -+ name: "TechnoTrend/Hauppauge DEC-2000-t Frontend", -+ type: FE_OFDM, -+ frequency_min: 51000000, -+ frequency_max: 858000000, -+ frequency_stepsize: 62500, -+ caps: FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | -+ FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | -+ FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | -+ FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO | -+ FE_CAN_HIERARCHY_AUTO, -+}; -+ -+static int dec2000_frontend_ioctl(struct dvb_frontend *fe, unsigned int cmd, -+ void *arg) -+{ -+ dprintk("%s\n", __FUNCTION__); -+ -+ switch (cmd) { -+ -+ case FE_GET_INFO: -+ dprintk("%s: FE_GET_INFO\n", __FUNCTION__); -+ memcpy(arg, &dec2000_frontend_info, -+ sizeof (struct dvb_frontend_info)); -+ break; -+ -+ case FE_READ_STATUS: { -+ fe_status_t *status = (fe_status_t *)arg; -+ dprintk("%s: FE_READ_STATUS\n", __FUNCTION__); -+ *status = FE_HAS_SIGNAL | FE_HAS_VITERBI | -+ FE_HAS_SYNC | FE_HAS_CARRIER | FE_HAS_LOCK; -+ break; -+ } -+ -+ case FE_READ_BER: { -+ u32 *ber = (u32 *)arg; -+ dprintk("%s: FE_READ_BER\n", __FUNCTION__); -+ *ber = 0; -+ return -ENOSYS; -+ break; -+ } -+ -+ case FE_READ_SIGNAL_STRENGTH: { -+ dprintk("%s: FE_READ_SIGNAL_STRENGTH\n", __FUNCTION__); -+ *(s32 *)arg = 0xFF; -+ return -ENOSYS; -+ break; -+ } -+ -+ case FE_READ_SNR: -+ dprintk("%s: FE_READ_SNR\n", __FUNCTION__); -+ *(s32 *)arg = 0; -+ return -ENOSYS; -+ break; -+ -+ case FE_READ_UNCORRECTED_BLOCKS: -+ dprintk("%s: FE_READ_UNCORRECTED_BLOCKS\n", __FUNCTION__); -+ *(u32 *)arg = 0; -+ return -ENOSYS; -+ break; -+ -+ case FE_SET_FRONTEND:{ -+ struct dvb_frontend_parameters *p = -+ (struct dvb_frontend_parameters *)arg; -+ u8 b[] = { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -+ 0x00, 0xff, 0x00, 0x00, 0x00, 0xff }; -+ u32 freq; -+ struct i2c_msg msg = { addr: 0x71, flags: 0, len:20 }; -+ -+ dprintk("%s: FE_SET_FRONTEND\n", __FUNCTION__); -+ -+ dprintk(" frequency->%d\n", p->frequency); -+ dprintk(" symbol_rate->%d\n", -+ p->u.qam.symbol_rate); -+ dprintk(" inversion->%d\n", p->inversion); -+ -+ freq = htonl(p->frequency / 1000); -+ memcpy(&b[4], &freq, sizeof (int)); -+ msg.buf = b; -+ fe->i2c->xfer(fe->i2c, &msg, 1); -+ -+ break; -+ } -+ -+ case FE_GET_FRONTEND: -+ dprintk("%s: FE_GET_FRONTEND\n", __FUNCTION__); -+ break; -+ -+ case FE_SLEEP: -+ dprintk("%s: FE_SLEEP\n", __FUNCTION__); -+ return -ENOSYS; -+ break; -+ -+ case FE_INIT: -+ dprintk("%s: FE_INIT\n", __FUNCTION__); -+ break; -+ -+ case FE_RESET: -+ dprintk("%s: FE_RESET\n", __FUNCTION__); -+ break; -+ -+ default: -+ dprintk("%s: unknown IOCTL (0x%X)\n", __FUNCTION__, cmd); -+ return -EINVAL; -+ -+ } -+ -+ return 0; -+} -+ -+static int dec2000_frontend_attach(struct dvb_i2c_bus *i2c) -+{ -+ dprintk("%s\n", __FUNCTION__); -+ -+ dvb_register_frontend(dec2000_frontend_ioctl, i2c, NULL, -+ &dec2000_frontend_info); -+ -+ return 0; -+} -+ -+static void dec2000_frontend_detach(struct dvb_i2c_bus *i2c) -+{ -+ dprintk("%s\n", __FUNCTION__); -+ -+ dvb_unregister_frontend(dec2000_frontend_ioctl, i2c); -+} -+ -+static int __init dec2000_frontend_init(void) -+{ -+ return dvb_register_i2c_device(THIS_MODULE, dec2000_frontend_attach, -+ dec2000_frontend_detach); -+} -+ -+static void __exit dec2000_frontend_exit(void) -+{ -+ dvb_unregister_i2c_device(dec2000_frontend_attach); -+} -+ -+module_init(dec2000_frontend_init); -+module_exit(dec2000_frontend_exit); -+ -+MODULE_DESCRIPTION("TechnoTrend/Hauppauge DEC-2000-t Frontend"); -+MODULE_AUTHOR("Alex Woods -+#include -+#include -+#include -+#include -+ -+ -+int main (int argc, char **argv) -+{ -+ unsigned char buf[8]; -+ unsigned int i, count, bytes = 0; -+ int fd; -+ -+ if (argc != 3) { -+ fprintf (stderr, "\n\tusage: %s \n\n", -+ argv[0]); -+ return -1; -+ } -+ -+ fd = open (argv[1], O_RDONLY); -+ -+ printf ("\n#include \n\nu8 %s [] __initdata = {", -+ argv[2]); -+ -+ while ((count = read (fd, buf, 8)) > 0) { -+ printf ("\n\t"); -+ for (i=0;i $@ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttusb-dec/ttusb_dec.c 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,991 @@ -+/* -+ * TTUSB DEC Driver -+ * -+ * Copyright (C) 2003 Alex Woods -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include "ttusb_dec.h" -+#include "dvb_frontend.h" -+ -+static int debug = 0; -+ -+#define dprintk if (debug) printk -+ -+static int ttusb_dec_send_command(struct ttusb_dec *dec, const u8 command, -+ int param_length, const u8 params[], -+ int *result_length, u8 cmd_result[]) -+{ -+ int result, actual_len, i; -+ u8 b[COMMAND_PACKET_SIZE + 4]; -+ u8 c[COMMAND_PACKET_SIZE + 4]; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ if ((result = down_interruptible(&dec->usb_sem))) { -+ printk("%s: Failed to down usb semaphore.\n", __FUNCTION__); -+ return result; -+ } -+ -+ b[0] = 0xaa; -+ b[1] = ++dec->trans_count; -+ b[2] = command; -+ b[3] = param_length; -+ -+ if (params) -+ memcpy(&b[4], params, param_length); -+ -+ if (debug) { -+ printk("%s: command: ", __FUNCTION__); -+ for (i = 0; i < param_length + 4; i++) -+ printk("0x%02X ", b[i]); -+ printk("\n"); -+ } -+ -+ result = usb_bulk_msg(dec->udev, dec->command_pipe, b, sizeof(b), -+ &actual_len, HZ); -+ -+ if (result) { -+ printk("%s: command bulk message failed: error %d\n", -+ __FUNCTION__, result); -+ up(&dec->usb_sem); -+ return result; -+ } -+ -+ result = usb_bulk_msg(dec->udev, dec->result_pipe, c, sizeof(c), -+ &actual_len, HZ); -+ -+ if (result) { -+ printk("%s: result bulk message failed: error %d\n", -+ __FUNCTION__, result); -+ up(&dec->usb_sem); -+ return result; -+ } else { -+ if (debug) { -+ printk("%s: result: ", __FUNCTION__); -+ for (i = 0; i < actual_len; i++) -+ printk("0x%02X ", c[i]); -+ printk("\n"); -+ } -+ -+ if (result_length) -+ *result_length = c[3]; -+ if (cmd_result && c[3] > 0) -+ memcpy(cmd_result, &c[4], c[3]); -+ -+ up(&dec->usb_sem); -+ -+ return 0; -+ } -+} -+ -+static int ttusb_dec_av_pes2ts_cb(void *priv, unsigned char *data) -+{ -+ struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)priv; -+ -+ dvbdmxfeed->cb.ts(data, 188, 0, 0, &dvbdmxfeed->feed.ts, DMX_OK); -+ -+ return 0; -+} -+ -+static void ttusb_dec_set_pids(struct ttusb_dec *dec) -+{ -+ u8 b[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, -+ 0xff, 0xff }; -+ -+ u16 pcr = htons(dec->pid[DMX_PES_PCR]); -+ u16 audio = htons(dec->pid[DMX_PES_AUDIO]); -+ u16 video = htons(dec->pid[DMX_PES_VIDEO]); -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ memcpy(&b[0], &pcr, 2); -+ memcpy(&b[2], &audio, 2); -+ memcpy(&b[4], &video, 2); -+ -+ ttusb_dec_send_command(dec, 0x50, sizeof(b), b, NULL, NULL); -+ -+ if (!down_interruptible(&dec->pes2ts_sem)) { -+ dvb_filter_pes2ts_init(&dec->a_pes2ts, dec->pid[DMX_PES_AUDIO], -+ ttusb_dec_av_pes2ts_cb, dec->demux.feed); -+ dvb_filter_pes2ts_init(&dec->v_pes2ts, dec->pid[DMX_PES_VIDEO], -+ ttusb_dec_av_pes2ts_cb, dec->demux.feed); -+ -+ up(&dec->pes2ts_sem); -+ } -+} -+ -+static int ttusb_dec_i2c_master_xfer(struct dvb_i2c_bus *i2c, -+ const struct i2c_msg msgs[], int num) -+{ -+ int result, i; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ for (i = 0; i < num; i++) -+ if ((result = ttusb_dec_send_command(i2c->data, msgs[i].addr, -+ msgs[i].len, msgs[i].buf, -+ NULL, NULL))) -+ return result; -+ -+ return 0; -+} -+ -+static void ttusb_dec_process_av_pes(struct ttusb_dec * dec, u8 * av_pes, -+ int length) -+{ -+ int i; -+ u16 csum = 0; -+ u8 c; -+ -+ if (length < 16) { -+ printk("%s: packet too short.\n", __FUNCTION__); -+ return; -+ } -+ -+ for (i = 0; i < length; i += 2) { -+ csum ^= le16_to_cpup((u16 *)(av_pes + i)); -+ c = av_pes[i]; -+ av_pes[i] = av_pes[i + 1]; -+ av_pes[i + 1] = c; -+ } -+ -+ if (csum) { -+ printk("%s: checksum failed.\n", __FUNCTION__); -+ return; -+ } -+ -+ if (length > 8 + MAX_AV_PES_LENGTH + 4) { -+ printk("%s: packet too long.\n", __FUNCTION__); -+ return; -+ } -+ -+ if (!(av_pes[0] == 'A' && av_pes[1] == 'V')) { -+ printk("%s: invalid AV_PES packet.\n", __FUNCTION__); -+ return; -+ } -+ -+ switch (av_pes[2]) { -+ -+ case 0x01: { /* VideoStream */ -+ int prebytes = av_pes[5] & 0x03; -+ int postbytes = (av_pes[5] & 0x0c) >> 2; -+ u16 v_pes_payload_length; -+ -+ if (dec->v_pes_postbytes > 0 && -+ dec->v_pes_postbytes == prebytes) { -+ memcpy(&dec->v_pes[dec->v_pes_length], -+ &av_pes[12], prebytes); -+ -+ if (!down_interruptible(&dec->pes2ts_sem)) { -+ dvb_filter_pes2ts(&dec->v_pes2ts, -+ dec->v_pes, -+ dec->v_pes_length + -+ prebytes); -+ -+ up(&dec->pes2ts_sem); -+ } -+ } -+ -+ if (av_pes[5] & 0x10) { -+ dec->v_pes[7] = 0x80; -+ dec->v_pes[8] = 0x05; -+ -+ dec->v_pes[9] = 0x21 | -+ ((av_pes[8] & 0xc0) >> 5); -+ dec->v_pes[10] = ((av_pes[8] & 0x3f) << 2) | -+ ((av_pes[9] & 0xc0) >> 6); -+ dec->v_pes[11] = 0x01 | -+ ((av_pes[9] & 0x3f) << 2) | -+ ((av_pes[10] & 0x80) >> 6); -+ dec->v_pes[12] = ((av_pes[10] & 0x7f) << 1) | -+ ((av_pes[11] & 0xc0) >> 7); -+ dec->v_pes[13] = 0x01 | -+ ((av_pes[11] & 0x7f) << 1); -+ -+ memcpy(&dec->v_pes[14], &av_pes[12 + prebytes], -+ length - 16 - prebytes); -+ dec->v_pes_length = 14 + length - 16 - prebytes; -+ } else { -+ dec->v_pes[7] = 0x00; -+ dec->v_pes[8] = 0x00; -+ -+ memcpy(&dec->v_pes[9], &av_pes[8], length - 12); -+ dec->v_pes_length = 9 + length - 12; -+ } -+ -+ dec->v_pes_postbytes = postbytes; -+ -+ if (dec->v_pes[9 + dec->v_pes[8]] == 0x00 && -+ dec->v_pes[10 + dec->v_pes[8]] == 0x00 && -+ dec->v_pes[11 + dec->v_pes[8]] == 0x01) -+ dec->v_pes[6] = 0x84; -+ else -+ dec->v_pes[6] = 0x80; -+ -+ v_pes_payload_length = htons(dec->v_pes_length - 6 + -+ postbytes); -+ memcpy(&dec->v_pes[4], &v_pes_payload_length, 2); -+ -+ if (postbytes == 0) { -+ if (!down_interruptible(&dec->pes2ts_sem)) { -+ dvb_filter_pes2ts(&dec->v_pes2ts, -+ dec->v_pes, -+ dec->v_pes_length); -+ -+ up(&dec->pes2ts_sem); -+ } -+ } -+ -+ break; -+ } -+ -+ case 0x02: /* MainAudioStream */ -+ dvb_filter_pes2ts(&dec->a_pes2ts, &av_pes[8], length - 12); -+ break; -+ -+ default: -+ printk("%s: unknown AV_PES type: %02x.\n", __FUNCTION__, -+ av_pes[2]); -+ break; -+ -+ } -+} -+ -+static void ttusb_dec_process_urb_frame(struct ttusb_dec * dec, u8 * b, -+ int length) -+{ -+ while (length) { -+ switch (dec->av_pes_state) { -+ -+ case 0: -+ case 1: -+ case 3: -+ if (*b++ == 0xaa) { -+ dec->av_pes_state++; -+ if (dec->av_pes_state == 4) -+ dec->av_pes_length = 0; -+ } else { -+ dec->av_pes_state = 0; -+ } -+ -+ length--; -+ break; -+ -+ case 2: -+ if (*b++ == 0x00) { -+ dec->av_pes_state++; -+ } else { -+ dec->av_pes_state = 0; -+ } -+ -+ length--; -+ break; -+ -+ case 4: -+ dec->av_pes[dec->av_pes_length++] = *b++; -+ -+ if (dec->av_pes_length == 8) { -+ dec->av_pes_state++; -+ dec->av_pes_payload_length = le16_to_cpup( -+ (u16 *)(dec->av_pes + 6)); -+ } -+ -+ length--; -+ break; -+ -+ case 5: { -+ int remainder = dec->av_pes_payload_length + -+ 8 - dec->av_pes_length; -+ -+ if (length >= remainder) { -+ memcpy(dec->av_pes + dec->av_pes_length, -+ b, remainder); -+ dec->av_pes_length += remainder; -+ b += remainder; -+ length -= remainder; -+ dec->av_pes_state++; -+ } else { -+ memcpy(&dec->av_pes[dec->av_pes_length], -+ b, length); -+ dec->av_pes_length += length; -+ length = 0; -+ } -+ -+ break; -+ } -+ -+ case 6: -+ dec->av_pes[dec->av_pes_length++] = *b++; -+ -+ if (dec->av_pes_length == -+ 8 + dec->av_pes_payload_length + 4) { -+ ttusb_dec_process_av_pes(dec, dec->av_pes, -+ dec->av_pes_length); -+ dec->av_pes_state = 0; -+ } -+ -+ length--; -+ break; -+ -+ default: -+ printk("%s: illegal packet state encountered.\n", -+ __FUNCTION__); -+ dec->av_pes_state = 0; -+ -+ } -+ -+ } -+} -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+static void ttusb_dec_process_urb(struct urb *urb) -+#else -+static void ttusb_dec_process_urb(struct urb *urb, struct pt_regs *ptregs) -+#endif -+{ -+ struct ttusb_dec *dec = urb->context; -+ -+ if (!urb->status) { -+ int i; -+ -+ for (i = 0; i < FRAMES_PER_ISO_BUF; i++) { -+ struct usb_iso_packet_descriptor *d; -+ u8 *b; -+ int length; -+ -+ d = &urb->iso_frame_desc[i]; -+ b = urb->transfer_buffer + d->offset; -+ length = d->actual_length; -+ -+ ttusb_dec_process_urb_frame(dec, b, length); -+ } -+ } else { -+ /* -ENOENT is expected when unlinking urbs */ -+ if (urb->status != -ENOENT) -+ dprintk("%s: urb error: %d\n", __FUNCTION__, -+ urb->status); -+ } -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -+ if (dec->iso_stream_count) -+ usb_submit_urb(urb, GFP_KERNEL); -+#endif -+} -+ -+static void ttusb_dec_setup_urbs(struct ttusb_dec *dec) -+{ -+ int i, j, buffer_offset = 0; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ int frame_offset = 0; -+ struct urb *urb = dec->iso_urb[i]; -+ -+ urb->dev = dec->udev; -+ urb->context = dec; -+ urb->complete = ttusb_dec_process_urb; -+ urb->pipe = dec->stream_pipe; -+ urb->transfer_flags = URB_ISO_ASAP; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -+ urb->interval = 1; -+#endif -+ urb->number_of_packets = FRAMES_PER_ISO_BUF; -+ urb->transfer_buffer_length = ISO_FRAME_SIZE * -+ FRAMES_PER_ISO_BUF; -+ urb->transfer_buffer = dec->iso_buffer + buffer_offset; -+ buffer_offset += ISO_FRAME_SIZE * FRAMES_PER_ISO_BUF; -+ -+ for (j = 0; j < FRAMES_PER_ISO_BUF; j++) { -+ urb->iso_frame_desc[j].offset = frame_offset; -+ urb->iso_frame_desc[j].length = ISO_FRAME_SIZE; -+ frame_offset += ISO_FRAME_SIZE; -+ } -+ } -+} -+ -+static void ttusb_dec_stop_iso_xfer(struct ttusb_dec *dec) -+{ -+ int i; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ if (down_interruptible(&dec->iso_sem)) -+ return; -+ -+ dec->iso_stream_count--; -+ -+ if (!dec->iso_stream_count) { -+ u8 b0[] = { 0x00 }; -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) -+ usb_unlink_urb(dec->iso_urb[i]); -+ -+ ttusb_dec_send_command(dec, 0x81, sizeof(b0), b0, NULL, NULL); -+ } -+ -+ up(&dec->iso_sem); -+} -+ -+/* Setting the interface of the DEC tends to take down the USB communications -+ * for a short period, so it's important not to call this function just before -+ * trying to talk to it. -+ */ -+static void ttusb_dec_set_streaming_interface(struct ttusb_dec *dec) -+{ -+ if (!dec->interface) { -+ usb_set_interface(dec->udev, 0, 8); -+ dec->interface = 8; -+ } -+} -+ -+static int ttusb_dec_start_iso_xfer(struct ttusb_dec *dec) -+{ -+ int i, result; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ if (down_interruptible(&dec->iso_sem)) -+ return -EAGAIN; -+ -+ if (!dec->iso_stream_count) { -+ u8 b0[] = { 0x05 }; -+ -+ ttusb_dec_send_command(dec, 0x80, sizeof(b0), b0, NULL, NULL); -+ -+ ttusb_dec_setup_urbs(dec); -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ if ((result = usb_submit_urb(dec->iso_urb[i] -+ , GFP_KERNEL))) { -+ printk("%s: failed urb submission %d: " -+ "error %d\n", __FUNCTION__, i, result); -+ -+ while (i) { -+ usb_unlink_urb(dec->iso_urb[i - 1]); -+ i--; -+ } -+ -+ up(&dec->iso_sem); -+ return result; -+ } -+ } -+ -+ dec->av_pes_state = 0; -+ dec->v_pes_postbytes = 0; -+ } -+ -+ dec->iso_stream_count++; -+ -+ up(&dec->iso_sem); -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ ttusb_dec_set_streaming_interface(dec); -+#endif -+ -+ return 0; -+} -+ -+static int ttusb_dec_start_feed(struct dvb_demux_feed *dvbdmxfeed) -+{ -+ struct dvb_demux *dvbdmx = dvbdmxfeed->demux; -+ struct ttusb_dec *dec = dvbdmx->priv; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ if (!dvbdmx->dmx.frontend) -+ return -EINVAL; -+ -+ dprintk(" pid: 0x%04X\n", dvbdmxfeed->pid); -+ -+ switch (dvbdmxfeed->type) { -+ -+ case DMX_TYPE_TS: -+ dprintk(" type: DMX_TYPE_TS\n"); -+ break; -+ -+ case DMX_TYPE_SEC: -+ dprintk(" type: DMX_TYPE_SEC\n"); -+ break; -+ -+ default: -+ dprintk(" type: unknown (%d)\n", dvbdmxfeed->type); -+ return -EINVAL; -+ -+ } -+ -+ dprintk(" ts_type:"); -+ -+ if (dvbdmxfeed->ts_type & TS_DECODER) -+ dprintk(" TS_DECODER"); -+ -+ if (dvbdmxfeed->ts_type & TS_PACKET) -+ dprintk(" TS_PACKET"); -+ -+ if (dvbdmxfeed->ts_type & TS_PAYLOAD_ONLY) -+ dprintk(" TS_PAYLOAD_ONLY"); -+ -+ dprintk("\n"); -+ -+ switch (dvbdmxfeed->pes_type) { -+ -+ case DMX_TS_PES_VIDEO: -+ dprintk(" pes_type: DMX_TS_PES_VIDEO\n"); -+ dec->pid[DMX_PES_PCR] = dvbdmxfeed->pid; -+ dec->pid[DMX_PES_VIDEO] = dvbdmxfeed->pid; -+ ttusb_dec_set_pids(dec); -+ break; -+ -+ case DMX_TS_PES_AUDIO: -+ dprintk(" pes_type: DMX_TS_PES_AUDIO\n"); -+ dec->pid[DMX_PES_AUDIO] = dvbdmxfeed->pid; -+ ttusb_dec_set_pids(dec); -+ break; -+ -+ case DMX_TS_PES_TELETEXT: -+ dec->pid[DMX_PES_TELETEXT] = dvbdmxfeed->pid; -+ dprintk(" pes_type: DMX_TS_PES_TELETEXT\n"); -+ break; -+ -+ case DMX_TS_PES_PCR: -+ dprintk(" pes_type: DMX_TS_PES_PCR\n"); -+ dec->pid[DMX_PES_PCR] = dvbdmxfeed->pid; -+ ttusb_dec_set_pids(dec); -+ break; -+ -+ case DMX_TS_PES_OTHER: -+ dprintk(" pes_type: DMX_TS_PES_OTHER\n"); -+ break; -+ -+ default: -+ dprintk(" pes_type: unknown (%d)\n", dvbdmxfeed->pes_type); -+ return -EINVAL; -+ -+ } -+ -+ ttusb_dec_start_iso_xfer(dec); -+ -+ return 0; -+} -+ -+static int ttusb_dec_stop_feed(struct dvb_demux_feed *dvbdmxfeed) -+{ -+ struct ttusb_dec *dec = dvbdmxfeed->demux->priv; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ ttusb_dec_stop_iso_xfer(dec); -+ -+ return 0; -+} -+ -+static void ttusb_dec_free_iso_urbs(struct ttusb_dec *dec) -+{ -+ int i; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) -+ if (dec->iso_urb[i]) -+ usb_free_urb(dec->iso_urb[i]); -+ -+ pci_free_consistent(NULL, -+ ISO_FRAME_SIZE * (FRAMES_PER_ISO_BUF * -+ ISO_BUF_COUNT), -+ dec->iso_buffer, dec->iso_dma_handle); -+} -+ -+static int ttusb_dec_alloc_iso_urbs(struct ttusb_dec *dec) -+{ -+ int i; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ dec->iso_buffer = pci_alloc_consistent(NULL, -+ ISO_FRAME_SIZE * -+ (FRAMES_PER_ISO_BUF * -+ ISO_BUF_COUNT), -+ &dec->iso_dma_handle); -+ -+ memset(dec->iso_buffer, 0, -+ sizeof(ISO_FRAME_SIZE * (FRAMES_PER_ISO_BUF * ISO_BUF_COUNT))); -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ struct urb *urb; -+ -+ if (!(urb = usb_alloc_urb(FRAMES_PER_ISO_BUF, GFP_KERNEL))) { -+ ttusb_dec_free_iso_urbs(dec); -+ return -ENOMEM; -+ } -+ -+ dec->iso_urb[i] = urb; -+ } -+ -+ ttusb_dec_setup_urbs(dec); -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ for (i = 0; i < ISO_BUF_COUNT; i++) { -+ int next = (i + 1) % ISO_BUF_COUNT; -+ dec->iso_urb[i]->next = dec->iso_urb[next]; -+ } -+#endif -+ -+ return 0; -+} -+ -+static void ttusb_dec_init_v_pes(struct ttusb_dec *dec) -+{ -+ dprintk("%s\n", __FUNCTION__); -+ -+ dec->v_pes[0] = 0x00; -+ dec->v_pes[1] = 0x00; -+ dec->v_pes[2] = 0x01; -+ dec->v_pes[3] = 0xe0; -+} -+ -+static void ttusb_dec_init_usb(struct ttusb_dec *dec) -+{ -+ dprintk("%s\n", __FUNCTION__); -+ -+ sema_init(&dec->usb_sem, 1); -+ sema_init(&dec->iso_sem, 1); -+ -+ dec->command_pipe = usb_sndbulkpipe(dec->udev, COMMAND_PIPE); -+ dec->result_pipe = usb_rcvbulkpipe(dec->udev, RESULT_PIPE); -+ dec->stream_pipe = usb_rcvisocpipe(dec->udev, STREAM_PIPE); -+ -+ ttusb_dec_alloc_iso_urbs(dec); -+} -+ -+#include "dsp_dec2000.h" -+ -+static int ttusb_dec_boot_dsp(struct ttusb_dec *dec) -+{ -+ int i, j, actual_len, result, size, trans_count; -+ u8 b0[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xc8, 0x61, -+ 0x00 }; -+ u8 b1[] = { 0x61 }; -+ u8 b[ARM_PACKET_SIZE]; -+ u32 dsp_length = htonl(sizeof(dsp_dec2000)); -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ memcpy(b0, &dsp_length, 4); -+ -+ result = ttusb_dec_send_command(dec, 0x41, sizeof(b0), b0, NULL, NULL); -+ -+ if (result) -+ return result; -+ -+ trans_count = 0; -+ j = 0; -+ -+ for (i = 0; i < sizeof(dsp_dec2000); i += COMMAND_PACKET_SIZE) { -+ size = sizeof(dsp_dec2000) - i; -+ if (size > COMMAND_PACKET_SIZE) -+ size = COMMAND_PACKET_SIZE; -+ -+ b[j + 0] = 0xaa; -+ b[j + 1] = trans_count++; -+ b[j + 2] = 0xf0; -+ b[j + 3] = size; -+ memcpy(&b[j + 4], &dsp_dec2000[i], size); -+ -+ j += COMMAND_PACKET_SIZE + 4; -+ -+ if (j >= ARM_PACKET_SIZE) { -+ result = usb_bulk_msg(dec->udev, dec->command_pipe, b, -+ ARM_PACKET_SIZE, &actual_len, -+ HZ / 10); -+ j = 0; -+ } else if (size < COMMAND_PACKET_SIZE) { -+ result = usb_bulk_msg(dec->udev, dec->command_pipe, b, -+ j - COMMAND_PACKET_SIZE + size, -+ &actual_len, HZ / 10); -+ } -+ } -+ -+ result = ttusb_dec_send_command(dec, 0x43, sizeof(b1), b1, NULL, NULL); -+ -+ return result; -+} -+ -+static void ttusb_dec_init_stb(struct ttusb_dec *dec) -+{ -+ u8 c[COMMAND_PACKET_SIZE]; -+ int c_length; -+ int result; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ result = ttusb_dec_send_command(dec, 0x08, 0, NULL, &c_length, c); -+ -+ if (!result) -+ if (c_length != 0x0c || (c_length == 0x0c && c[9] != 0x63)) -+ ttusb_dec_boot_dsp(dec); -+} -+ -+static int ttusb_dec_init_dvb(struct ttusb_dec *dec) -+{ -+ int result; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ if ((result = dvb_register_adapter(&dec->adapter, "dec2000")) < 0) { -+ printk("%s: dvb_register_adapter failed: error %d\n", -+ __FUNCTION__, result); -+ -+ return result; -+ } -+ -+ if (!(dec->i2c_bus = dvb_register_i2c_bus(ttusb_dec_i2c_master_xfer, -+ dec, dec->adapter, 0))) { -+ printk("%s: dvb_register_i2c_bus failed\n", __FUNCTION__); -+ -+ dvb_unregister_adapter(dec->adapter); -+ -+ return -ENOMEM; -+ } -+ -+ dec->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING; -+ -+ dec->demux.priv = (void *)dec; -+ dec->demux.filternum = 31; -+ dec->demux.feednum = 31; -+ dec->demux.start_feed = ttusb_dec_start_feed; -+ dec->demux.stop_feed = ttusb_dec_stop_feed; -+ dec->demux.write_to_decoder = NULL; -+ -+ if ((result = dvb_dmx_init(&dec->demux)) < 0) { -+ printk("%s: dvb_dmx_init failed: error %d\n", __FUNCTION__, -+ result); -+ -+ dvb_unregister_i2c_bus(ttusb_dec_i2c_master_xfer, dec->adapter, -+ 0); -+ dvb_unregister_adapter(dec->adapter); -+ -+ return result; -+ } -+ -+ dec->dmxdev.filternum = 32; -+ dec->dmxdev.demux = &dec->demux.dmx; -+ dec->dmxdev.capabilities = 0; -+ -+ if ((result = dvb_dmxdev_init(&dec->dmxdev, dec->adapter)) < 0) { -+ printk("%s: dvb_dmxdev_init failed: error %d\n", -+ __FUNCTION__, result); -+ -+ dvb_dmx_release(&dec->demux); -+ dvb_unregister_i2c_bus(ttusb_dec_i2c_master_xfer, dec->adapter, -+ 0); -+ dvb_unregister_adapter(dec->adapter); -+ -+ return result; -+ } -+ -+ dec->frontend.source = DMX_FRONTEND_0; -+ -+ if ((result = dec->demux.dmx.add_frontend(&dec->demux.dmx, -+ &dec->frontend)) < 0) { -+ printk("%s: dvb_dmx_init failed: error %d\n", __FUNCTION__, -+ result); -+ -+ dvb_dmxdev_release(&dec->dmxdev); -+ dvb_dmx_release(&dec->demux); -+ dvb_unregister_i2c_bus(ttusb_dec_i2c_master_xfer, dec->adapter, -+ 0); -+ dvb_unregister_adapter(dec->adapter); -+ -+ return result; -+ } -+ -+ if ((result = dec->demux.dmx.connect_frontend(&dec->demux.dmx, -+ &dec->frontend)) < 0) { -+ printk("%s: dvb_dmx_init failed: error %d\n", __FUNCTION__, -+ result); -+ -+ dec->demux.dmx.remove_frontend(&dec->demux.dmx, &dec->frontend); -+ dvb_dmxdev_release(&dec->dmxdev); -+ dvb_dmx_release(&dec->demux); -+ dvb_unregister_i2c_bus(ttusb_dec_i2c_master_xfer, dec->adapter, -+ 0); -+ dvb_unregister_adapter(dec->adapter); -+ -+ return result; -+ } -+ -+ sema_init(&dec->pes2ts_sem, 1); -+ -+ dvb_net_init(dec->adapter, &dec->dvb_net, &dec->demux.dmx); -+ -+ return 0; -+} -+ -+static void ttusb_dec_exit_dvb(struct ttusb_dec *dec) -+{ -+ dprintk("%s\n", __FUNCTION__); -+ -+ dvb_net_release(&dec->dvb_net); -+ dec->demux.dmx.close(&dec->demux.dmx); -+ dec->demux.dmx.remove_frontend(&dec->demux.dmx, &dec->frontend); -+ dvb_dmxdev_release(&dec->dmxdev); -+ dvb_dmx_release(&dec->demux); -+ dvb_unregister_i2c_bus(ttusb_dec_i2c_master_xfer, dec->adapter, 0); -+ dvb_unregister_adapter(dec->adapter); -+} -+ -+static void ttusb_dec_exit_usb(struct ttusb_dec *dec) -+{ -+ int i; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ dec->iso_stream_count = 0; -+ -+ for (i = 0; i < ISO_BUF_COUNT; i++) -+ usb_unlink_urb(dec->iso_urb[i]); -+ -+ ttusb_dec_free_iso_urbs(dec); -+} -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+static void *ttusb_dec_probe(struct usb_device *udev, unsigned int ifnum, -+ const struct usb_device_id *id) -+{ -+ struct ttusb_dec *dec; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ if (ifnum != 0) -+ return NULL; -+ -+ if (!(dec = kmalloc(sizeof(struct ttusb_dec), GFP_KERNEL))) { -+ printk("%s: couldn't allocate memory.\n", __FUNCTION__); -+ return NULL; -+ } -+ -+ memset(dec, 0, sizeof(struct ttusb_dec)); -+ -+ dec->udev = udev; -+ -+ ttusb_dec_init_usb(dec); -+ ttusb_dec_init_stb(dec); -+ ttusb_dec_init_dvb(dec); -+ ttusb_dec_init_v_pes(dec); -+ -+ return (void *)dec; -+} -+#else -+static int ttusb_dec_probe(struct usb_interface *intf, -+ const struct usb_device_id *id) -+{ -+ struct usb_device *udev; -+ struct ttusb_dec *dec; -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ udev = interface_to_usbdev(intf); -+ -+ if (!(dec = kmalloc(sizeof(struct ttusb_dec), GFP_KERNEL))) { -+ printk("%s: couldn't allocate memory.\n", __FUNCTION__); -+ return -ENOMEM; -+ } -+ -+ memset(dec, 0, sizeof(struct ttusb_dec)); -+ -+ dec->udev = udev; -+ -+ ttusb_dec_init_usb(dec); -+ ttusb_dec_init_stb(dec); -+ ttusb_dec_init_dvb(dec); -+ ttusb_dec_init_v_pes(dec); -+ -+ usb_set_intfdata(intf, (void *)dec); -+ ttusb_dec_set_streaming_interface(dec); -+ -+ return 0; -+} -+#endif -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+static void ttusb_dec_disconnect(struct usb_device *udev, void *data) -+{ -+ struct ttusb_dec *dec = data; -+#else -+static void ttusb_dec_disconnect(struct usb_interface *intf) -+{ -+ struct ttusb_dec *dec = usb_get_intfdata(intf); -+ -+ usb_set_intfdata(intf, NULL); -+#endif -+ -+ dprintk("%s\n", __FUNCTION__); -+ -+ ttusb_dec_exit_usb(dec); -+ ttusb_dec_exit_dvb(dec); -+ -+ kfree(dec); -+} -+ -+static struct usb_device_id ttusb_dec_table[] = { -+ {USB_DEVICE(0x0b48, 0x1006)}, /* Unconfirmed */ -+ {USB_DEVICE(0x0b48, 0x1007)}, /* Unconfirmed */ -+ {USB_DEVICE(0x0b48, 0x1008)}, /* DEC 2000 t */ -+ {} -+}; -+ -+static struct usb_driver ttusb_dec_driver = { -+ name: DRIVER_NAME, -+ probe: ttusb_dec_probe, -+ disconnect: ttusb_dec_disconnect, -+ id_table: ttusb_dec_table, -+}; -+ -+static int __init ttusb_dec_init(void) -+{ -+ int result; -+ -+ if ((result = usb_register(&ttusb_dec_driver)) < 0) { -+ printk("%s: initialisation failed: error %d.\n", __FUNCTION__, -+ result); -+ return result; -+ } -+ -+ return 0; -+} -+ -+static void __exit ttusb_dec_exit(void) -+{ -+ usb_deregister(&ttusb_dec_driver); -+} -+ -+module_init(ttusb_dec_init); -+module_exit(ttusb_dec_exit); -+ -+MODULE_AUTHOR("Alex Woods "); -+MODULE_DESCRIPTION(DRIVER_NAME); -+MODULE_LICENSE("GPL"); -+MODULE_DEVICE_TABLE(usb, ttusb_dec_table); -+ -+MODULE_PARM(debug, "i"); -+MODULE_PARM_DESC(debug, "Debug level"); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/dvb/ttusb-dec/ttusb_dec.h 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,87 @@ -+/* -+ * TTUSB DEC Driver -+ * -+ * Copyright (C) 2003 Alex Woods -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ */ -+ -+#ifndef _TTUSB_DEC_H -+#define _TTUSB_DEC_H -+ -+#include "asm/semaphore.h" -+#include "dmxdev.h" -+#include "dvb_demux.h" -+#include "dvb_filter.h" -+#include "dvb_i2c.h" -+#include "dvb_net.h" -+ -+#define DRIVER_NAME "TechnoTrend/Hauppauge DEC USB" -+ -+#define COMMAND_PIPE 0x03 -+#define RESULT_PIPE 0x84 -+#define STREAM_PIPE 0x88 -+ -+#define COMMAND_PACKET_SIZE 0x3c -+#define ARM_PACKET_SIZE 0x1000 -+ -+#define ISO_BUF_COUNT 0x04 -+#define FRAMES_PER_ISO_BUF 0x04 -+#define ISO_FRAME_SIZE 0x0380 -+ -+#define MAX_AV_PES_LENGTH 6144 -+ -+struct ttusb_dec { -+ /* DVB bits */ -+ struct dvb_adapter *adapter; -+ struct dmxdev dmxdev; -+ struct dvb_demux demux; -+ struct dmx_frontend frontend; -+ struct dvb_i2c_bus *i2c_bus; -+ struct dvb_net dvb_net; -+ -+ u16 pid[DMX_PES_OTHER]; -+ -+ /* USB bits */ -+ struct usb_device *udev; -+ u8 trans_count; -+ unsigned int command_pipe; -+ unsigned int result_pipe; -+ unsigned int stream_pipe; -+ int interface; -+ struct semaphore usb_sem; -+ -+ void *iso_buffer; -+ dma_addr_t iso_dma_handle; -+ struct urb *iso_urb[ISO_BUF_COUNT]; -+ int iso_stream_count; -+ struct semaphore iso_sem; -+ -+ u8 av_pes[MAX_AV_PES_LENGTH + 4]; -+ int av_pes_state; -+ int av_pes_length; -+ int av_pes_payload_length; -+ -+ struct dvb_filter_pes2ts a_pes2ts; -+ struct dvb_filter_pes2ts v_pes2ts; -+ struct semaphore pes2ts_sem; -+ -+ u8 v_pes[16 + MAX_AV_PES_LENGTH]; -+ int v_pes_length; -+ int v_pes_postbytes; -+}; -+ -+#endif ---- linux-2.6.0-test1/drivers/media/video/dpc7146.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/video/dpc7146.c 2003-07-19 17:03:50.000000000 -0700 -@@ -173,6 +173,8 @@ static int dpc_init_done(struct saa7146_ - return 0; - } - -+static struct saa7146_ext_vv vv_data; -+ - /* this function only gets called when the probing was successful */ - static int dpc_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) - { -@@ -183,7 +185,7 @@ static int dpc_attach(struct saa7146_dev - /* checking for i2c-devices can be omitted here, because we - already did this in "dpc_vl42_probe" */ - -- saa7146_vv_init(dev); -+ saa7146_vv_init(dev,&vv_data); - if( 0 != saa7146_register_device(&dpc->video_dev, dev, "dpc", VFL_TYPE_GRABBER)) { - ERR(("cannot register capture v4l2 device. skipping.\n")); - return -1; -@@ -246,8 +248,9 @@ int dpc_vbi_bypass(struct saa7146_dev* d - } - #endif - --static int dpc_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) -+static int dpc_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) - { -+ struct saa7146_dev *dev = fh->dev; - struct dpc* dpc = (struct dpc*)dev->ext_priv; - /* - struct saa7146_vv *vv = dev->vv_data; -@@ -307,23 +310,32 @@ static int std_callback(struct saa7146_d - } - - static struct saa7146_standard standard[] = { -- { "PAL-BG", V4L2_STD_PAL_BG, SAA7146_PAL_VALUES }, -- { "PAL-I", V4L2_STD_PAL_I, SAA7146_PAL_VALUES }, -- { "NTSC", V4L2_STD_NTSC, SAA7146_NTSC_VALUES }, -- { "SECAM", V4L2_STD_SECAM, SAA7146_SECAM_VALUES }, -+ { -+ .name = "PAL", .id = V4L2_STD_PAL, -+ .v_offset = 0x17, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 680, .h_calc = 680+1, -+ .v_max_out = 576, .h_max_out = 768, -+ }, { -+ .name = "NTSC", .id = V4L2_STD_NTSC, -+ .v_offset = 0x16, .v_field = 240, .v_calc = 480, -+ .h_offset = 0x06, .h_pixels = 708, .h_calc = 708+1, -+ .v_max_out = 480, .h_max_out = 640, -+ }, { -+ .name = "SECAM", .id = V4L2_STD_SECAM, -+ .v_offset = 0x14, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 720, .h_calc = 720+1, -+ .v_max_out = 576, .h_max_out = 768, -+ } - }; - --static --struct saa7146_extension extension; -+static struct saa7146_extension extension; - --static --struct saa7146_pci_extension_data dpc = { -+static struct saa7146_pci_extension_data dpc = { - .ext_priv = "Multimedia eXtension Board", - .ext = &extension, - }; - --static --struct pci_device_id pci_tbl[] = { -+static struct pci_device_id pci_tbl[] = { - { - .vendor = PCI_VENDOR_ID_PHILIPS, - .device = PCI_DEVICE_ID_PHILIPS_SAA7146, -@@ -337,8 +349,7 @@ struct pci_device_id pci_tbl[] = { - - MODULE_DEVICE_TABLE(pci, pci_tbl); - --static --struct saa7146_ext_vv vv_data = { -+static struct saa7146_ext_vv vv_data = { - .inputs = DPC_INPUTS, - .capabilities = V4L2_CAP_VBI_CAPTURE, - .stds = &standard[0], -@@ -348,14 +359,12 @@ struct saa7146_ext_vv vv_data = { - .ioctl = dpc_ioctl, - }; - --static --struct saa7146_extension extension = { -+static struct saa7146_extension extension = { - .name = "dpc7146 demonstration board", - .flags = SAA7146_USE_I2C_IRQ, - - .pci_tbl = &pci_tbl[0], - .module = THIS_MODULE, -- .ext_vv_data = &vv_data, - - .probe = dpc_probe, - .attach = dpc_attach, ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/video/hexium_gemini.c 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,411 @@ -+/* -+ hexium_gemini.c - v4l2 driver for Hexium Gemini frame grabber cards -+ -+ Visit http://www.mihu.de/linux/saa7146/ and follow the link -+ to "hexium" for further details about this card. -+ -+ Copyright (C) 2003 Michael Hunold -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+*/ -+ -+#define DEBUG_VARIABLE debug -+ -+#include -+ -+static int debug = 255; -+MODULE_PARM(debug, "i"); -+MODULE_PARM_DESC(debug, "debug verbosity"); -+ -+/* global variables */ -+int hexium_num = 0; -+ -+#include "hexium_gemini.h" -+ -+/* bring hardware to a sane state. this has to be done, just in case someone -+ wants to capture from this device before it has been properly initialized. -+ the capture engine would badly fail, because no valid signal arrives on the -+ saa7146, thus leading to timeouts and stuff. */ -+static int hexium_init_done(struct saa7146_dev *dev) -+{ -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+ union i2c_smbus_data data; -+ int i = 0; -+ -+ DEB_D(("hexium_init_done called.\n")); -+ -+ /* initialize the helper ics to useful values */ -+ for (i = 0; i < sizeof(hexium_ks0127b); i++) { -+ data.byte = hexium_ks0127b[i]; -+ if (0 != i2c_smbus_xfer(&hexium->i2c_adapter, 0x6c, 0, I2C_SMBUS_WRITE, i, I2C_SMBUS_BYTE_DATA, &data)) { -+ printk("failed for address 0x%02x\n", i); -+ } -+ } -+ -+ return 0; -+} -+ -+static int hexium_set_input(struct hexium *hexium, int input) -+{ -+ union i2c_smbus_data data; -+ -+ DEB_D((".\n")); -+ -+ data.byte = hexium_input_select[input].byte; -+ if (0 != i2c_smbus_xfer(&hexium->i2c_adapter, 0x6c, 0, I2C_SMBUS_WRITE, hexium_input_select[input].adr, I2C_SMBUS_BYTE_DATA, &data)) { -+ return -1; -+ } -+ -+ return 0; -+} -+ -+static int hexium_set_standard(struct hexium *hexium, struct hexium_data *vdec) -+{ -+ union i2c_smbus_data data; -+ int i = 0; -+ -+ DEB_D((".\n")); -+ -+ while (vdec[i].adr != -1) { -+ data.byte = vdec[i].byte; -+ if (0 != i2c_smbus_xfer(&hexium->i2c_adapter, 0x6c, 0, I2C_SMBUS_WRITE, vdec[i].adr, I2C_SMBUS_BYTE_DATA, &data)) { -+ printk("failed for address 0x%02x\n", i); -+ return -1; -+ } -+ i++; -+ } -+ return 0; -+} -+ -+static struct saa7146_ext_vv vv_data; -+ -+/* this function only gets called when the probing was successful */ -+static int hexium_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_data *info) -+{ -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+ -+ DEB_EE((".\n")); -+ -+ hexium = (struct hexium *) kmalloc(sizeof(struct hexium), GFP_KERNEL); -+ if (NULL == hexium) { -+ printk("hexium_v4l2.o: hexium_probe: not enough kernel memory.\n"); -+ return -ENOMEM; -+ } -+ memset(hexium, 0x0, sizeof(struct hexium)); -+ (struct hexium *) dev->ext_priv = hexium; -+ -+ /* FIXME: enable i2c-port pins, video-port-pins -+ video port pins should be enabled here ?! */ -+ saa7146_write(dev, MC1, (MASK_08 | MASK_24 | MASK_10 | MASK_26)); -+ -+ saa7146_i2c_adapter_prepare(dev, &hexium->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480); -+ if (i2c_add_adapter(&hexium->i2c_adapter) < 0) { -+ DEB_S(("cannot register i2c-device. skipping.\n")); -+ kfree(hexium); -+ return -EFAULT; -+ } -+ -+ /* set HWControl GPIO number 2 */ -+ saa7146_setgpio(dev, 2, SAA7146_GPIO_OUTHI); -+ -+ saa7146_write(dev, DD1_INIT, 0x07000700); -+ saa7146_write(dev, DD1_STREAM_B, 0x00000000); -+ saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); -+ -+ /* the rest */ -+ hexium->cur_input = 0; -+ hexium_init_done(dev); -+ -+ hexium_set_standard(hexium, hexium_pal); -+ hexium->cur_std = V4L2_STD_PAL; -+ -+ hexium_set_input(hexium, 0); -+ hexium->cur_input = 0; -+ -+ saa7146_vv_init(dev, &vv_data); -+ if (0 != saa7146_register_device(&hexium->video_dev, dev, "hexium", VFL_TYPE_GRABBER)) { -+ ERR(("cannot register capture v4l2 device. skipping.\n")); -+ return -1; -+ } -+ -+ printk("hexium: found 'hexium frame grabber'-%d.\n", hexium_num); -+ hexium_num++; -+ -+ return 0; -+} -+ -+static int hexium_detach(struct saa7146_dev *dev) -+{ -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+ -+ DEB_EE(("dev:%p\n", dev)); -+ -+ saa7146_unregister_device(&hexium->video_dev, dev); -+ saa7146_vv_release(dev); -+ -+ hexium_num--; -+ -+ i2c_del_adapter(&hexium->i2c_adapter); -+ kfree(hexium); -+ return 0; -+} -+ -+static int hexium_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) -+{ -+ struct saa7146_dev *dev = fh->dev; -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+/* -+ struct saa7146_vv *vv = dev->vv_data; -+*/ -+ switch (cmd) { -+ case VIDIOC_ENUMINPUT: -+ { -+ struct v4l2_input *i = arg; -+ DEB_EE(("VIDIOC_ENUMINPUT %d.\n", i->index)); -+ -+ if (i->index < 0 || i->index >= HEXIUM_INPUTS) { -+ return -EINVAL; -+ } -+ -+ memcpy(i, &hexium_inputs[i->index], sizeof(struct v4l2_input)); -+ -+ DEB_D(("v4l2_ioctl: VIDIOC_ENUMINPUT %d.\n", i->index)); -+ return 0; -+ } -+ case VIDIOC_G_INPUT: -+ { -+ int *input = (int *) arg; -+ *input = hexium->cur_input; -+ -+ DEB_D(("VIDIOC_G_INPUT: %d\n", *input)); -+ return 0; -+ } -+ case VIDIOC_S_INPUT: -+ { -+ int input = *(int *) arg; -+ -+ DEB_EE(("VIDIOC_S_INPUT %d.\n", input)); -+ -+ if (input < 0 || input >= HEXIUM_INPUTS) { -+ return -EINVAL; -+ } -+ -+ hexium->cur_input = input; -+ hexium_set_input(hexium, input); -+ -+ return 0; -+ } -+ /* the saa7146 provides some controls (brightness, contrast, saturation) -+ which gets registered *after* this function. because of this we have -+ to return with a value != 0 even if the function succeded.. */ -+ case VIDIOC_QUERYCTRL: -+ { -+ struct v4l2_queryctrl *qc = arg; -+ int i; -+ -+ for (i = HEXIUM_CONTROLS - 1; i >= 0; i--) { -+ if (hexium_controls[i].id == qc->id) { -+ *qc = hexium_controls[i]; -+ DEB_D(("VIDIOC_QUERYCTRL %d.\n", qc->id)); -+ return 0; -+ } -+ } -+ return -EAGAIN; -+ } -+ case VIDIOC_G_CTRL: -+ { -+ struct v4l2_control *vc = arg; -+ int i; -+ -+ for (i = HEXIUM_CONTROLS - 1; i >= 0; i--) { -+ if (hexium_controls[i].id == vc->id) { -+ break; -+ } -+ } -+ -+ if (i < 0) { -+ return -EAGAIN; -+ } -+ -+ switch (vc->id) { -+ case V4L2_CID_PRIVATE_BASE:{ -+ vc->value = hexium->cur_bw; -+ DEB_D(("VIDIOC_G_CTRL BW:%d.\n", vc->value)); -+ return 0; -+ } -+ } -+ return -EINVAL; -+ } -+ -+ case VIDIOC_S_CTRL: -+ { -+ struct v4l2_control *vc = arg; -+ int i = 0; -+ -+ for (i = HEXIUM_CONTROLS - 1; i >= 0; i--) { -+ if (hexium_controls[i].id == vc->id) { -+ break; -+ } -+ } -+ -+ if (i < 0) { -+ return -EAGAIN; -+ } -+ -+ switch (vc->id) { -+ case V4L2_CID_PRIVATE_BASE:{ -+ hexium->cur_bw = vc->value; -+ break; -+ } -+ } -+ -+ DEB_D(("VIDIOC_S_CTRL BW:%d.\n", hexium->cur_bw)); -+ -+ if (0 == hexium->cur_bw && V4L2_STD_PAL == hexium->cur_std) { -+ hexium_set_standard(hexium, hexium_pal); -+ return 0; -+ } -+ if (0 == hexium->cur_bw && V4L2_STD_NTSC == hexium->cur_std) { -+ hexium_set_standard(hexium, hexium_ntsc); -+ return 0; -+ } -+ if (0 == hexium->cur_bw && V4L2_STD_SECAM == hexium->cur_std) { -+ hexium_set_standard(hexium, hexium_secam); -+ return 0; -+ } -+ if (1 == hexium->cur_bw && V4L2_STD_PAL == hexium->cur_std) { -+ hexium_set_standard(hexium, hexium_pal_bw); -+ return 0; -+ } -+ if (1 == hexium->cur_bw && V4L2_STD_NTSC == hexium->cur_std) { -+ hexium_set_standard(hexium, hexium_ntsc_bw); -+ return 0; -+ } -+ if (1 == hexium->cur_bw && V4L2_STD_SECAM == hexium->cur_std) { -+ /* fixme: is there no bw secam mode? */ -+ return -EINVAL; -+ } -+ -+ return -EINVAL; -+ } -+ default: -+/* -+ DEB_D(("v4l2_ioctl does not handle this ioctl.\n")); -+*/ -+ return -ENOIOCTLCMD; -+ } -+ return 0; -+} -+ -+static int std_callback(struct saa7146_dev *dev, struct saa7146_standard *std) -+{ -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+ -+ if (V4L2_STD_PAL == std->id) { -+ hexium_set_standard(hexium, hexium_pal); -+ hexium->cur_std = V4L2_STD_PAL; -+ return 0; -+ } else if (V4L2_STD_NTSC == std->id) { -+ hexium_set_standard(hexium, hexium_ntsc); -+ hexium->cur_std = V4L2_STD_NTSC; -+ return 0; -+ } else if (V4L2_STD_SECAM == std->id) { -+ hexium_set_standard(hexium, hexium_secam); -+ hexium->cur_std = V4L2_STD_SECAM; -+ return 0; -+ } -+ -+ return -1; -+} -+ -+static struct saa7146_extension hexium_extension; -+ -+static struct saa7146_pci_extension_data hexium_gemini_4bnc = { -+ .ext_priv = "Hexium Gemini (4 BNC)", -+ .ext = &hexium_extension, -+}; -+ -+static struct saa7146_pci_extension_data hexium_gemini_dual_4bnc = { -+ .ext_priv = "Hexium Gemini Dual (4 BNC)", -+ .ext = &hexium_extension, -+}; -+ -+static struct pci_device_id pci_tbl[] = { -+ { -+ .vendor = PCI_VENDOR_ID_PHILIPS, -+ .device = PCI_DEVICE_ID_PHILIPS_SAA7146, -+ .subvendor = 0x17c8, -+ .subdevice = 0x2401, -+ .driver_data = (unsigned long) &hexium_gemini_4bnc, -+ }, -+ { -+ .vendor = PCI_VENDOR_ID_PHILIPS, -+ .device = PCI_DEVICE_ID_PHILIPS_SAA7146, -+ .subvendor = 0x17c8, -+ .subdevice = 0x2402, -+ .driver_data = (unsigned long) &hexium_gemini_dual_4bnc, -+ }, -+ { -+ .vendor = 0, -+ } -+}; -+ -+MODULE_DEVICE_TABLE(pci, pci_tbl); -+ -+static struct saa7146_ext_vv vv_data = { -+ .inputs = HEXIUM_INPUTS, -+ .capabilities = 0, -+ .stds = &hexium_standards[0], -+ .num_stds = sizeof(hexium_standards) / sizeof(struct saa7146_standard), -+ .std_callback = &std_callback, -+ .ioctls = &ioctls[0], -+ .ioctl = hexium_ioctl, -+}; -+ -+static struct saa7146_extension hexium_extension = { -+ .name = "hexium gemini", -+ .flags = SAA7146_USE_I2C_IRQ, -+ -+ .pci_tbl = &pci_tbl[0], -+ .module = THIS_MODULE, -+ -+ .attach = hexium_attach, -+ .detach = hexium_detach, -+ -+ .irq_mask = 0, -+ .irq_func = NULL, -+}; -+ -+int __init hexium_init_module(void) -+{ -+ if (0 != saa7146_register_extension(&hexium_extension)) { -+ DEB_S(("failed to register extension.\n")); -+ return -ENODEV; -+ } -+ -+ return 0; -+} -+ -+void __exit hexium_cleanup_module(void) -+{ -+ saa7146_unregister_extension(&hexium_extension); -+} -+ -+module_init(hexium_init_module); -+module_exit(hexium_cleanup_module); -+ -+MODULE_DESCRIPTION("video4linux-2 driver for Hexium Gemini frame grabber cards"); -+MODULE_AUTHOR("Michael Hunold "); -+MODULE_LICENSE("GPL"); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/video/hexium_gemini.h 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,103 @@ -+#ifndef __HEXIUM_GEMINI__ -+#define __HEXIUM_GEMINI__ -+ -+#include "hexium.h" -+ -+static struct saa7146_extension_ioctls ioctls[] = { -+ { VIDIOC_G_INPUT, SAA7146_EXCLUSIVE }, -+ { VIDIOC_S_INPUT, SAA7146_EXCLUSIVE }, -+ { VIDIOC_QUERYCTRL, SAA7146_BEFORE }, -+ { VIDIOC_ENUMINPUT, SAA7146_EXCLUSIVE }, -+ { VIDIOC_S_STD, SAA7146_AFTER }, -+ { VIDIOC_G_CTRL, SAA7146_BEFORE }, -+ { VIDIOC_S_CTRL, SAA7146_BEFORE }, -+ { 0, 0 } -+}; -+ -+#define HEXIUM_CONTROLS 1 -+static struct v4l2_queryctrl hexium_controls[] = { -+ { V4L2_CID_PRIVATE_BASE, V4L2_CTRL_TYPE_BOOLEAN, "B/W", 0, 1, 1, 0, 0 }, -+}; -+ -+#define HEXIUM_GEMUINI_V_1_0 1 -+#define HEXIUM_GEMUINI_DUAL_V_1_0 2 -+ -+struct hexium -+{ -+ int type; -+ struct video_device video_dev; -+ struct i2c_adapter i2c_adapter; -+ -+ int cur_input; /* current input */ -+ v4l2_std_id cur_std; /* current standard */ -+ int cur_bw; /* current black/white status */ -+}; -+ -+/* Samsung KS0127B decoder default registers */ -+static u8 hexium_ks0127b[0x100]={ -+/*00*/ 0x00,0x52,0x30,0x40,0x01,0x0C,0x2A,0x10, -+/*08*/ 0x00,0x00,0x00,0x60,0x00,0x00,0x0F,0x06, -+/*10*/ 0x00,0x00,0xE4,0xC0,0x00,0x00,0x00,0x00, -+/*18*/ 0x14,0x9B,0xFE,0xFF,0xFC,0xFF,0x03,0x22, -+/*20*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*28*/ 0x00,0x00,0x00,0x00,0x00,0x2C,0x9B,0x00, -+/*30*/ 0x00,0x00,0x10,0x80,0x80,0x10,0x80,0x80, -+/*38*/ 0x01,0x04,0x00,0x00,0x00,0x29,0xC0,0x00, -+/*40*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*48*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*50*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*58*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*60*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*68*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*70*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*78*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*80*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*88*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*90*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*98*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*A0*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*A8*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*B0*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*B8*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*C0*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*C8*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*D0*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*D8*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*E0*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*E8*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*F0*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -+/*F8*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -+}; -+ -+static struct hexium_data hexium_pal[] = { -+ { 0x01, 0x52 }, { 0x12, 0x64 }, { 0x2D, 0x2C }, { 0x2E, 0x9B }, { -1 , 0xFF } -+}; -+ -+static struct hexium_data hexium_pal_bw[] = { -+ { 0x01, 0x52 }, { 0x12, 0x64 }, { 0x2D, 0x2C }, { 0x2E, 0x9B }, { -1 , 0xFF } -+}; -+ -+static struct hexium_data hexium_ntsc[] = { -+ { 0x01, 0x53 }, { 0x12, 0x04 }, { 0x2D, 0x23 }, { 0x2E, 0x81 }, { -1 , 0xFF } -+}; -+ -+static struct hexium_data hexium_ntsc_bw[] = { -+ { 0x01, 0x53 }, { 0x12, 0x04 }, { 0x2D, 0x23 }, { 0x2E, 0x81 }, { -1 , 0xFF } -+}; -+ -+static struct hexium_data hexium_secam[] = { -+ { 0x01, 0x52 }, { 0x12, 0x64 }, { 0x2D, 0x2C }, { 0x2E, 0x9B }, { -1 , 0xFF } -+}; -+ -+static struct hexium_data hexium_input_select[] = { -+ { 0x02, 0x60 }, -+ { 0x02, 0x64 }, -+ { 0x02, 0x61 }, -+ { 0x02, 0x65 }, -+ { 0x02, 0x62 }, -+ { 0x02, 0x66 }, -+ { 0x02, 0x68 }, -+ { 0x02, 0x69 }, -+ { 0x02, 0x6A }, -+}; -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/video/hexium.h 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,51 @@ -+#ifndef __HEXIUM__ -+#define __HEXIUM__ -+ -+#define HEXIUM_HV_PCI6_ORION 1 -+#define HEXIUM_ORION_1SVHS_3BNC 2 -+#define HEXIUM_ORION_4BNC 3 -+#define HEXIUM_GEMUINI 4 -+#define HEXIUM_GEMUINI_DUAL 5 -+ -+static struct saa7146_standard hexium_standards[] = { -+ { -+ .name = "PAL", .id = V4L2_STD_PAL, -+ .v_offset = 0x17, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 680, .h_calc = 680+1, -+ .v_max_out = 576, .h_max_out = 768, -+ }, { -+ .name = "NTSC", .id = V4L2_STD_NTSC, -+ .v_offset = 0x17, .v_field = 240, .v_calc = 480, -+ .h_offset = 0x06, .h_pixels = 640, .h_calc = 641+1, -+ .v_max_out = 480, .h_max_out = 640, -+ }, { -+ .name = "SECAM", .id = V4L2_STD_SECAM, -+ .v_offset = 0x14, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 720, .h_calc = 720+1, -+ .v_max_out = 576, .h_max_out = 768, -+ } -+}; -+ -+ -+#define HEXIUM_INPUTS 9 -+static struct v4l2_input hexium_inputs[HEXIUM_INPUTS] = { -+ { 0, "CVBS 1", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 1, "CVBS 2", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 2, "CVBS 3", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 3, "CVBS 4", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 4, "CVBS 5", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 5, "CVBS 6", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 6, "Y/C 1", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 7, "Y/C 2", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { 8, "Y/C 3", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+}; -+ -+#define HEXIUM_AUDIOS 0 -+ -+struct hexium_data -+{ -+ s8 adr; -+ u8 byte; -+}; -+ -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/video/hexium_orion.c 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,328 @@ -+/* -+ hexium_orion.c - v4l2 driver for the Hexium Orion frame grabber cards -+ -+ Visit http://www.mihu.de/linux/saa7146/ and follow the link -+ to "hexium" for further details about this card. -+ -+ Copyright (C) 2003 Michael Hunold -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+*/ -+ -+#define DEBUG_VARIABLE debug -+ -+#include -+ -+static int debug = 255; -+MODULE_PARM(debug, "i"); -+MODULE_PARM_DESC(debug, "debug verbosity"); -+ -+/* global variables */ -+int hexium_num = 0; -+ -+#include "hexium_orion.h" -+ -+/* this is only called for old HV-PCI6/Orion cards -+ without eeprom */ -+static int hexium_probe(struct saa7146_dev *dev) -+{ -+ struct hexium *hexium = 0; -+ union i2c_smbus_data data; -+ int err = 0; -+ -+ DEB_EE((".\n")); -+ -+ /* there are no hexium orion cards with revision 0 saa7146s */ -+ if (0 == dev->revision) { -+ return -EFAULT; -+ } -+ -+ hexium = (struct hexium *) kmalloc(sizeof(struct hexium), GFP_KERNEL); -+ if (NULL == hexium) { -+ printk("hexium_orion.o: hexium_probe: not enough kernel memory.\n"); -+ return -ENOMEM; -+ } -+ memset(hexium, 0x0, sizeof(struct hexium)); -+ -+ /* FIXME: enable i2c-port pins, video-port-pins -+ video port pins should be enabled here ?! */ -+ saa7146_write(dev, MC1, (MASK_08 | MASK_24 | MASK_10 | MASK_26)); -+ -+ saa7146_write(dev, DD1_INIT, 0x02000200); -+ saa7146_write(dev, DD1_STREAM_B, 0x00000000); -+ saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); -+ -+ saa7146_i2c_adapter_prepare(dev, &hexium->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480); -+ if (i2c_add_adapter(&hexium->i2c_adapter) < 0) { -+ DEB_S(("cannot register i2c-device. skipping.\n")); -+ kfree(hexium); -+ return -EFAULT; -+ } -+ -+ /* set SAA7110 control GPIO 0 */ -+ saa7146_setgpio(dev, 0, SAA7146_GPIO_OUTHI); -+ /* set HWControl GPIO number 2 */ -+ saa7146_setgpio(dev, 2, SAA7146_GPIO_OUTHI); -+ -+ mdelay(10); -+ -+ /* detect newer Hexium Orion cards by subsystem ids */ -+ if (0x17c8 == dev->pci->subsystem_vendor && 0x0101 == dev->pci->subsystem_device) { -+ printk("hexium_orion.o: device is a Hexium Orion w/ 1 SVHS + 3 BNC inputs.\n"); -+ /* we store the pointer in our private data field */ -+ (struct hexium *) dev->ext_priv = hexium; -+ hexium->type = HEXIUM_ORION_1SVHS_3BNC; -+ return 0; -+ } -+ -+ if (0x17c8 == dev->pci->subsystem_vendor && 0x2101 == dev->pci->subsystem_device) { -+ printk("hexium_orion.o: device is a Hexium Orion w/ 4 BNC inputs.\n"); -+ /* we store the pointer in our private data field */ -+ (struct hexium *) dev->ext_priv = hexium; -+ hexium->type = HEXIUM_ORION_4BNC; -+ return 0; -+ } -+ -+ /* check if this is an old hexium Orion card by looking at -+ a saa7110 at address 0x4e */ -+ if (0 == (err = i2c_smbus_xfer(&hexium->i2c_adapter, 0x4e, 0, I2C_SMBUS_READ, 0x00, I2C_SMBUS_BYTE_DATA, &data))) { -+ printk("hexium_orion.o: device is a Hexium HV-PCI6/Orion (old).\n"); -+ /* we store the pointer in our private data field */ -+ (struct hexium *) dev->ext_priv = hexium; -+ hexium->type = HEXIUM_HV_PCI6_ORION; -+ return 0; -+ } -+ -+ i2c_del_adapter(&hexium->i2c_adapter); -+ kfree(hexium); -+ return -EFAULT; -+} -+ -+/* bring hardware to a sane state. this has to be done, just in case someone -+ wants to capture from this device before it has been properly initialized. -+ the capture engine would badly fail, because no valid signal arrives on the -+ saa7146, thus leading to timeouts and stuff. */ -+static int hexium_init_done(struct saa7146_dev *dev) -+{ -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+ union i2c_smbus_data data; -+ int i = 0; -+ -+ DEB_D(("hexium_init_done called.\n")); -+ -+ /* initialize the helper ics to useful values */ -+ for (i = 0; i < sizeof(hexium_saa7110); i++) { -+ data.byte = hexium_saa7110[i]; -+ if (0 != i2c_smbus_xfer(&hexium->i2c_adapter, 0x4e, 0, I2C_SMBUS_WRITE, i, I2C_SMBUS_BYTE_DATA, &data)) { -+ printk("hexium_orion: failed for address 0x%02x\n", i); -+ } -+ } -+ -+ return 0; -+} -+ -+static struct saa7146_ext_vv vv_data; -+ -+/* this function only gets called when the probing was successful */ -+static int hexium_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_data *info) -+{ -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+ -+ DEB_EE((".\n")); -+ -+ saa7146_vv_init(dev, &vv_data); -+ if (0 != saa7146_register_device(&hexium->video_dev, dev, "hexium", VFL_TYPE_GRABBER)) { -+ ERR(("cannot register capture v4l2 device. skipping.\n")); -+ return -1; -+ } -+ -+ printk("hexium_orion.o: found 'hexium orion' frame grabber-%d.\n", hexium_num); -+ hexium_num++; -+ -+ /* the rest */ -+ hexium->cur_input = 0; -+ hexium_init_done(dev); -+ -+ return 0; -+} -+ -+static int hexium_detach(struct saa7146_dev *dev) -+{ -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+ -+ DEB_EE(("dev:%p\n", dev)); -+ -+ saa7146_unregister_device(&hexium->video_dev, dev); -+ saa7146_vv_release(dev); -+ -+ hexium_num--; -+ -+ i2c_del_adapter(&hexium->i2c_adapter); -+ kfree(hexium); -+ return 0; -+} -+ -+static int hexium_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) -+{ -+ struct saa7146_dev *dev = fh->dev; -+ struct hexium *hexium = (struct hexium *) dev->ext_priv; -+/* -+ struct saa7146_vv *vv = dev->vv_data; -+*/ -+ switch (cmd) { -+ case VIDIOC_ENUMINPUT: -+ { -+ struct v4l2_input *i = arg; -+ DEB_EE(("VIDIOC_ENUMINPUT %d.\n", i->index)); -+ -+ if (i->index < 0 || i->index >= HEXIUM_INPUTS) { -+ return -EINVAL; -+ } -+ -+ memcpy(i, &hexium_inputs[i->index], sizeof(struct v4l2_input)); -+ -+ DEB_D(("v4l2_ioctl: VIDIOC_ENUMINPUT %d.\n", i->index)); -+ return 0; -+ } -+ case VIDIOC_G_INPUT: -+ { -+ int *input = (int *) arg; -+ *input = hexium->cur_input; -+ -+ DEB_D(("VIDIOC_G_INPUT: %d\n", *input)); -+ return 0; -+ } -+ case VIDIOC_S_INPUT: -+ { -+ int input = *(int *) arg; -+ -+ if (input < 0 || input >= HEXIUM_INPUTS) { -+ return -EINVAL; -+ } -+ -+ hexium->cur_input = input; -+ -+ /* fixme: switch input here, switch audio, too! */ -+// saa7146_set_hps_source_and_sync(dev, input_port_selection[input].hps_source, input_port_selection[input].hps_sync); -+ printk("hexium_orion.o: VIDIOC_S_INPUT: fixme switch input.\n"); -+ -+ return 0; -+ } -+ default: -+/* -+ DEB_D(("v4l2_ioctl does not handle this ioctl.\n")); -+*/ -+ return -ENOIOCTLCMD; -+ } -+ return 0; -+} -+ -+static int std_callback(struct saa7146_dev *dev, struct saa7146_standard *std) -+{ -+ return 0; -+} -+ -+static struct saa7146_extension extension; -+ -+static struct saa7146_pci_extension_data hexium_hv_pci6 = { -+ .ext_priv = "Hexium HV-PCI6 / Orion", -+ .ext = &extension, -+}; -+ -+static struct saa7146_pci_extension_data hexium_orion_1svhs_3bnc = { -+ .ext_priv = "Hexium HV-PCI6 / Orion (1 SVHS/3 BNC)", -+ .ext = &extension, -+}; -+ -+static struct saa7146_pci_extension_data hexium_orion_4bnc = { -+ .ext_priv = "Hexium HV-PCI6 / Orion (4 BNC)", -+ .ext = &extension, -+}; -+ -+static struct pci_device_id pci_tbl[] = { -+ { -+ .vendor = PCI_VENDOR_ID_PHILIPS, -+ .device = PCI_DEVICE_ID_PHILIPS_SAA7146, -+ .subvendor = 0x0000, -+ .subdevice = 0x0000, -+ .driver_data = (unsigned long) &hexium_hv_pci6, -+ }, -+ { -+ .vendor = PCI_VENDOR_ID_PHILIPS, -+ .device = PCI_DEVICE_ID_PHILIPS_SAA7146, -+ .subvendor = 0x17c8, -+ .subdevice = 0x0101, -+ .driver_data = (unsigned long) &hexium_orion_1svhs_3bnc, -+ }, -+ { -+ .vendor = PCI_VENDOR_ID_PHILIPS, -+ .device = PCI_DEVICE_ID_PHILIPS_SAA7146, -+ .subvendor = 0x17c8, -+ .subdevice = 0x2101, -+ .driver_data = (unsigned long) &hexium_orion_4bnc, -+ }, -+ { -+ .vendor = 0, -+ } -+}; -+ -+MODULE_DEVICE_TABLE(pci, pci_tbl); -+ -+static struct saa7146_ext_vv vv_data = { -+ .inputs = HEXIUM_INPUTS, -+ .capabilities = 0, -+ .stds = &hexium_standards[0], -+ .num_stds = sizeof(hexium_standards) / sizeof(struct saa7146_standard), -+ .std_callback = &std_callback, -+ .ioctls = &ioctls[0], -+ .ioctl = hexium_ioctl, -+}; -+ -+static struct saa7146_extension extension = { -+ .name = "hexium HV-PCI6/Orion", -+ .flags = 0, // SAA7146_USE_I2C_IRQ, -+ -+ .pci_tbl = &pci_tbl[0], -+ .module = THIS_MODULE, -+ -+ .probe = hexium_probe, -+ .attach = hexium_attach, -+ .detach = hexium_detach, -+ -+ .irq_mask = 0, -+ .irq_func = NULL, -+}; -+ -+int __init hexium_init_module(void) -+{ -+ if (0 != saa7146_register_extension(&extension)) { -+ DEB_S(("failed to register extension.\n")); -+ return -ENODEV; -+ } -+ -+ return 0; -+} -+ -+void __exit hexium_cleanup_module(void) -+{ -+ saa7146_unregister_extension(&extension); -+} -+ -+module_init(hexium_init_module); -+module_exit(hexium_cleanup_module); -+ -+MODULE_DESCRIPTION("video4linux-2 driver for Hexium Orion frame grabber cards"); -+MODULE_AUTHOR("Michael Hunold "); -+MODULE_LICENSE("GPL"); ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/media/video/hexium_orion.h 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,138 @@ -+#ifndef __HEXIUM_ORION__ -+#define __HEXIUM_ORION__ -+ -+#include "hexium.h" -+ -+static struct saa7146_extension_ioctls ioctls[] = { -+ { VIDIOC_G_INPUT, SAA7146_EXCLUSIVE }, -+ { VIDIOC_S_INPUT, SAA7146_EXCLUSIVE }, -+ { VIDIOC_ENUMINPUT, SAA7146_EXCLUSIVE }, -+ { VIDIOC_S_STD, SAA7146_AFTER }, -+ { 0, 0 } -+}; -+ -+struct hexium -+{ -+ int type; -+ struct video_device video_dev; -+ struct i2c_adapter i2c_adapter; -+ int cur_input; /* current input */ -+}; -+ -+/* Philips SAA7110 decoder default registers */ -+static u8 hexium_saa7110[53]={ -+/*00*/ 0x4C,0x3C,0x0D,0xEF,0xBD,0xF0,0x00,0x00, -+/*08*/ 0xF8,0xF8,0x60,0x60,0x40,0x86,0x18,0x90, -+/*10*/ 0x00,0x2C,0x40,0x46,0x42,0x1A,0xFF,0xDA, -+/*18*/ 0xF0,0x8B,0x00,0x00,0x00,0x00,0x00,0x00, -+/*20*/ 0xD9,0x17,0x40,0x41,0x80,0x41,0x80,0x4F, -+/*28*/ 0xFE,0x01,0x0F,0x0F,0x03,0x01,0x81,0x03, -+/*30*/ 0x44,0x75,0x01,0x8C,0x03 -+}; -+ -+static struct { -+ struct hexium_data data[8]; -+} hexium_input_select[] = { -+{ -+ { /* input 0 */ -+ { 0x06, 0x00 }, -+ { 0x20, 0xD9 }, -+ { 0x21, 0x17 }, // 0x16, -+ { 0x22, 0x40 }, -+ { 0x2C, 0x03 }, -+ { 0x30, 0x44 }, -+ { 0x31, 0x75 }, // ?? -+ { 0x21, 0x16 }, // 0x03, -+ } -+}, { -+ { /* input 1 */ -+ { 0x06, 0x00 }, -+ { 0x20, 0xD8 }, -+ { 0x21, 0x17 }, // 0x16, -+ { 0x22, 0x40 }, -+ { 0x2C, 0x03 }, -+ { 0x30, 0x44 }, -+ { 0x31, 0x75 }, // ?? -+ { 0x21, 0x16 }, // 0x03, -+ } -+}, { -+ { /* input 2 */ -+ { 0x06, 0x00 }, -+ { 0x20, 0xBA }, -+ { 0x21, 0x07 }, // 0x05, -+ { 0x22, 0x91 }, -+ { 0x2C, 0x03 }, -+ { 0x30, 0x60 }, -+ { 0x31, 0xB5 }, // ?? -+ { 0x21, 0x05 }, // 0x03, -+ } -+}, { -+ { /* input 3 */ -+ { 0x06, 0x00 }, -+ { 0x20, 0xB8 }, -+ { 0x21, 0x07 }, // 0x05, -+ { 0x22, 0x91 }, -+ { 0x2C, 0x03 }, -+ { 0x30, 0x60 }, -+ { 0x31, 0xB5 }, // ?? -+ { 0x21, 0x05 }, // 0x03, -+ } -+}, { -+ { /* input 4 */ -+ { 0x06, 0x00 }, -+ { 0x20, 0x7C }, -+ { 0x21, 0x07 }, // 0x03 -+ { 0x22, 0xD2 }, -+ { 0x2C, 0x83 }, -+ { 0x30, 0x60 }, -+ { 0x31, 0xB5 }, // ?? -+ { 0x21, 0x03 }, -+ } -+}, { -+ { /* input 5 */ -+ { 0x06, 0x00 }, -+ { 0x20, 0x78 }, -+ { 0x21, 0x07 }, // 0x03, -+ { 0x22, 0xD2 }, -+ { 0x2C, 0x83 }, -+ { 0x30, 0x60 }, -+ { 0x31, 0xB5 }, // ? -+ { 0x21, 0x03 }, -+ } -+}, { -+ { /* input 6 */ -+ { 0x06, 0x80 }, -+ { 0x20, 0x59 }, -+ { 0x21, 0x17 }, -+ { 0x22, 0x42 }, -+ { 0x2C, 0xA3 }, -+ { 0x30, 0x44 }, -+ { 0x31, 0x75 }, -+ { 0x21, 0x12 }, -+ } -+}, { -+ { /* input 7 */ -+ { 0x06, 0x80 }, -+ { 0x20, 0x9A }, -+ { 0x21, 0x17 }, -+ { 0x22, 0xB1 }, -+ { 0x2C, 0x13 }, -+ { 0x30, 0x60 }, -+ { 0x31, 0xB5 }, -+ { 0x21, 0x14 }, -+ } -+}, { -+ { /* input 8 */ -+ { 0x06, 0x80 }, -+ { 0x20, 0x3C }, -+ { 0x21, 0x27 }, -+ { 0x22, 0xC1 }, -+ { 0x2C, 0x23 }, -+ { 0x30, 0x44 }, -+ { 0x31, 0x75 }, -+ { 0x21, 0x21 }, -+ } -+} -+}; -+ -+#endif ---- linux-2.6.0-test1/drivers/media/video/Kconfig 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/media/video/Kconfig 2003-07-19 17:03:50.000000000 -0700 -@@ -257,5 +257,30 @@ config VIDEO_DPC - whenever you want). If you want to compile it as a module, say M - here and read . - -+config VIDEO_HEXIUM_ORION -+ tristate "Hexium HV-PCI6 and Orion frame grabber" -+ depends on VIDEO_DEV && PCI -+ ---help--- -+ This is a video4linux driver for the Hexium HV-PCI6 and -+ Orion frame grabber cards by Hexium. -+ -+ This driver is available as a module called hexium_orion -+ ( = code which can be inserted in and removed from the -+ running kernel whenever you want). If you want to compile -+ it as a module, say M here and read . -+ -+config VIDEO_HEXIUM_GEMINI -+ tristate "Hexium Gemini frame grabber" -+ depends on VIDEO_DEV && PCI -+ ---help--- -+ This is a video4linux driver for the Hexium Gemini frame -+ grabber card by Hexium. Please note that the Gemini Dual -+ card is *not* fully supported. -+ -+ This driver is available as a module called hexium_gemini -+ ( = code which can be inserted in and removed from the -+ running kernel whenever you want). If you want to compile -+ it as a module, say M here and read . -+ - endmenu - ---- linux-2.6.0-test1/drivers/media/video/Makefile 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/media/video/Makefile 2003-07-19 17:03:50.000000000 -0700 -@@ -31,6 +31,8 @@ obj-$(CONFIG_VIDEO_CPIA_USB) += cpia_usb - obj-$(CONFIG_VIDEO_MEYE) += meye.o - obj-$(CONFIG_VIDEO_SAA7134) += saa7134/ - obj-$(CONFIG_VIDEO_MXB) += saa7111.o tuner.o tda9840.o tea6415c.o tea6420.o mxb.o -+obj-$(CONFIG_VIDEO_HEXIUM_ORION) += hexium_orion.o -+obj-$(CONFIG_VIDEO_HEXIUM_GEMINI) += hexium_gemini.o - obj-$(CONFIG_VIDEO_DPC) += saa7111.o dpc7146.o - obj-$(CONFIG_TUNER_3036) += tuner-3036.o - ---- linux-2.6.0-test1/drivers/media/video/mxb.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/media/video/mxb.c 2003-07-19 17:03:50.000000000 -0700 -@@ -81,7 +81,7 @@ MODULE_PARM_DESC(debug, "debug verbosity - enum { TUNER, AUX1, AUX3, AUX3_YC }; - - static struct v4l2_input mxb_inputs[MXB_INPUTS] = { -- { TUNER, "Tuner", V4L2_INPUT_TYPE_TUNER, 1, 1, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -+ { TUNER, "Tuner", V4L2_INPUT_TYPE_TUNER, 1, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, - { AUX1, "AUX1", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, - { AUX3, "AUX3 Composite", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, - { AUX3_YC, "AUX3 S-Video", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, -@@ -101,8 +101,8 @@ static struct { - - /* this array holds the information of the audio source (mxb_audios), - which has to be switched corresponding to the video source (mxb_channels) */ --static int video_audio_connect[MXB_AUDIOS] = -- { 0, 1, 2, 3, 3 }; -+static int video_audio_connect[MXB_INPUTS] = -+ { 0, 1, 3, 3 }; - - /* these are the necessary input-output-pins for bringing one audio source - (see above) to the CD-output */ -@@ -173,8 +173,7 @@ struct mxb - int cur_mute; /* current mute status */ - }; - --static --struct saa7146_extension extension; -+static struct saa7146_extension extension; - - static int mxb_vbi_bypass(struct saa7146_dev* dev) - { -@@ -431,10 +430,11 @@ static int mxb_init_done(struct saa7146_ - polling method ... */ - extension.flags &= ~SAA7146_USE_I2C_IRQ; - for(i = 1;;i++) { -- msg.len = mxb_saa7740_init[i].length; -- if (msg.len == -1U) { -+ if( -1 == mxb_saa7740_init[i].length ) { - break; - } -+ -+ msg.len = mxb_saa7740_init[i].length; - msg.buf = &mxb_saa7740_init[i].data[0]; - if( 1 != (err = i2c_transfer(&mxb->i2c_adapter, &msg, 1))) { - DEB_D(("failed to initialize 'sound arena module'.\n")); -@@ -472,6 +472,8 @@ void mxb_irq_bh(struct saa7146_dev* dev, - } - */ - -+static struct saa7146_ext_vv vv_data; -+ - /* this function only gets called when the probing was successful */ - static int mxb_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) - { -@@ -482,7 +484,7 @@ static int mxb_attach(struct saa7146_dev - /* checking for i2c-devices can be omitted here, because we - already did this in "mxb_vl42_probe" */ - -- saa7146_vv_init(dev); -+ saa7146_vv_init(dev,&vv_data); - if( 0 != saa7146_register_device(&mxb->video_dev, dev, "mxb", VFL_TYPE_GRABBER)) { - ERR(("cannot register capture v4l2 device. skipping.\n")); - return -1; -@@ -566,8 +568,9 @@ static int saa7111_set_gpio(struct saa71 - return 0; - } - --static int mxb_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) -+static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) - { -+ struct saa7146_dev *dev = fh->dev; - struct mxb* mxb = (struct mxb*)dev->ext_priv; - struct saa7146_vv *vv = dev->vv_data; - -@@ -1002,20 +1005,35 @@ static int std_callback(struct saa7146_d - } - - static struct saa7146_standard standard[] = { -- { "PAL-BG", V4L2_STD_PAL_BG, SAA7146_PAL_VALUES }, -- { "PAL-I", V4L2_STD_PAL_I, SAA7146_PAL_VALUES }, -- { "NTSC", V4L2_STD_NTSC, SAA7146_NTSC_VALUES }, -- { "SECAM", V4L2_STD_SECAM, SAA7146_SECAM_VALUES }, -+ { -+ .name = "PAL-BG", .id = V4L2_STD_PAL_BG, -+ .v_offset = 0x17, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 680, .h_calc = 680+1, -+ .v_max_out = 576, .h_max_out = 768, -+ }, { -+ .name = "PAL-I", .id = V4L2_STD_PAL_I, -+ .v_offset = 0x17, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 680, .h_calc = 680+1, -+ .v_max_out = 576, .h_max_out = 768, -+ }, { -+ .name = "NTSC", .id = V4L2_STD_NTSC, -+ .v_offset = 0x16, .v_field = 240, .v_calc = 480, -+ .h_offset = 0x06, .h_pixels = 708, .h_calc = 708+1, -+ .v_max_out = 480, .h_max_out = 640, -+ }, { -+ .name = "SECAM", .id = V4L2_STD_SECAM, -+ .v_offset = 0x14, .v_field = 288, .v_calc = 576, -+ .h_offset = 0x14, .h_pixels = 720, .h_calc = 720+1, -+ .v_max_out = 576, .h_max_out = 768, -+ } - }; - --static --struct saa7146_pci_extension_data mxb = { -+static struct saa7146_pci_extension_data mxb = { - .ext_priv = "Multimedia eXtension Board", - .ext = &extension, - }; - --static --struct pci_device_id pci_tbl[] = { -+static struct pci_device_id pci_tbl[] = { - { - .vendor = PCI_VENDOR_ID_PHILIPS, - .device = PCI_DEVICE_ID_PHILIPS_SAA7146, -@@ -1029,8 +1047,7 @@ struct pci_device_id pci_tbl[] = { - - MODULE_DEVICE_TABLE(pci, pci_tbl); - --static --struct saa7146_ext_vv vv_data = { -+static struct saa7146_ext_vv vv_data = { - .inputs = MXB_INPUTS, - .capabilities = V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE, - .stds = &standard[0], -@@ -1040,14 +1057,12 @@ struct saa7146_ext_vv vv_data = { - .ioctl = mxb_ioctl, - }; - --static --struct saa7146_extension extension = { -+static struct saa7146_extension extension = { - .name = MXB_IDENTIFIER, - .flags = SAA7146_USE_I2C_IRQ, - - .pci_tbl = &pci_tbl[0], - .module = THIS_MODULE, -- .ext_vv_data = &vv_data, - - .probe = mxb_probe, - .attach = mxb_attach, ---- linux-2.6.0-test1/drivers/media/video/pms.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/media/video/pms.c 2003-07-19 17:03:50.000000000 -0700 -@@ -12,6 +12,10 @@ - * Most of this code is directly derived from his userspace driver. - * His driver works so send any reports to alan@redhat.com unless the - * userspace driver also doesn't work for you... -+ * -+ * Changes: -+ * 08/07/2003 Daniele Bellucci -+ * - pms_capture: report back -EFAULT - */ - - #include -@@ -659,7 +663,8 @@ static int pms_capture(struct pms_device - if(dt+len>count) - dt=count-len; - cnt += dev->height; -- copy_to_user(buf, tmp+32, dt); -+ if (copy_to_user(buf, tmp+32, dt)) -+ return -EFAULT; - buf += dt; - len += dt; - } ---- linux-2.6.0-test1/drivers/message/fusion/mptctl.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/message/fusion/mptctl.c 2003-07-19 17:03:50.000000000 -0700 -@@ -88,7 +88,6 @@ - - #include /* needed for access to Scsi_Host struct */ - #include --#include /* for io_request_lock (spinlock) decl */ - #include "../../scsi/scsi.h" - #include "../../scsi/hosts.h" - ---- linux-2.6.0-test1/drivers/message/fusion/mptscsih.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/message/fusion/mptscsih.c 2003-07-19 17:03:50.000000000 -0700 -@@ -72,7 +72,6 @@ - #include - #include - #include --#include /* for io_request_lock (spinlock) decl */ - #include /* for mdelay */ - #include /* needed for in_interrupt() proto */ - #include /* notifier code */ ---- linux-2.6.0-test1/drivers/message/i2o/i2o_block.c 2003-06-14 12:18:28.000000000 -0700 -+++ 25/drivers/message/i2o/i2o_block.c 2003-07-19 17:03:50.000000000 -0700 -@@ -87,8 +87,6 @@ - - #define MAJOR_NR I2O_MAJOR - --#include -- - #define MAX_I2OB 16 - - #define MAX_I2OB_DEPTH 8 ---- linux-2.6.0-test1/drivers/message/i2o/i2o_scsi.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/message/i2o/i2o_scsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -54,7 +54,7 @@ - #include - #include - #include --#include -+#include - #include - #include "../../scsi/scsi.h" - #include "../../scsi/hosts.h" ---- linux-2.6.0-test1/drivers/mtd/devices/blkmtd.c 2003-06-26 22:07:24.000000000 -0700 -+++ 25/drivers/mtd/devices/blkmtd.c 2003-07-19 17:07:03.000000000 -0700 -@@ -1189,6 +1189,7 @@ static int __init init_blkmtd(void) - INIT_LIST_HEAD(&mtd_rawdevice->as.locked_pages); - mtd_rawdevice->as.host = NULL; - init_MUTEX(&(mtd_rawdevice->as.i_shared_sem)); -+ atomic_set(&(mtd_rawdevice->as.truncate_count), 0); - - mtd_rawdevice->as.a_ops = &blkmtd_aops; - INIT_LIST_HEAD(&mtd_rawdevice->as.i_mmap); ---- linux-2.6.0-test1/drivers/mtd/mtd_blkdevs.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/mtd/mtd_blkdevs.c 2003-07-19 17:03:50.000000000 -0700 -@@ -15,7 +15,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/net/3c59x.c 2003-06-14 12:17:55.000000000 -0700 -+++ 25/drivers/net/3c59x.c 2003-07-19 17:06:13.000000000 -0700 -@@ -291,8 +291,6 @@ MODULE_PARM(global_full_duplex, "i"); - MODULE_PARM(full_duplex, "1-" __MODULE_STRING(8) "i"); - MODULE_PARM(hw_checksums, "1-" __MODULE_STRING(8) "i"); - MODULE_PARM(flow_ctrl, "1-" __MODULE_STRING(8) "i"); --MODULE_PARM(global_enable_wol, "i"); --MODULE_PARM(enable_wol, "1-" __MODULE_STRING(8) "i"); - MODULE_PARM(rx_copybreak, "i"); - MODULE_PARM(max_interrupt_work, "i"); - MODULE_PARM(compaq_ioaddr, "i"); -@@ -306,8 +304,6 @@ MODULE_PARM_DESC(full_duplex, "3c59x ful - MODULE_PARM_DESC(global_full_duplex, "3c59x: same as full_duplex, but applies to all NICs if options is unset"); - MODULE_PARM_DESC(hw_checksums, "3c59x Hardware checksum checking by adapter(s) (0-1)"); - MODULE_PARM_DESC(flow_ctrl, "3c59x 802.3x flow control usage (PAUSE only) (0-1)"); --MODULE_PARM_DESC(enable_wol, "3c59x: Turn on Wake-on-LAN for adapter(s) (0-1)"); --MODULE_PARM_DESC(global_enable_wol, "3c59x: same as enable_wol, but applies to all NICs if options is unset"); - MODULE_PARM_DESC(rx_copybreak, "3c59x copy breakpoint for copy-only-tiny-frames"); - MODULE_PARM_DESC(max_interrupt_work, "3c59x maximum events handled per interrupt"); - MODULE_PARM_DESC(compaq_ioaddr, "3c59x PCI I/O base address (Compaq BIOS problem workaround)"); -@@ -484,10 +480,8 @@ static struct vortex_chip_info { - } vortex_info_tbl[] __devinitdata = { - {"3c590 Vortex 10Mbps", - PCI_USES_IO|PCI_USES_MASTER, IS_VORTEX, 32, }, --#define EISA_3C592_OFFSET 1 /* Offset of this entry for vortex_eisa_init */ - {"3c592 EISA 10Mbps Demon/Vortex", /* AKPM: from Don's 3c59x_cb.c 0.49H */ - PCI_USES_IO|PCI_USES_MASTER, IS_VORTEX, 32, }, --#define EISA_3C597_OFFSET 2 /* Offset of this entry for vortex_eisa_init */ - {"3c597 EISA Fast Demon/Vortex", /* AKPM: from Don's 3c59x_cb.c 0.49H */ - PCI_USES_IO|PCI_USES_MASTER, IS_VORTEX, 32, }, - {"3c595 Vortex 100baseTx", -@@ -819,7 +813,6 @@ struct vortex_private { - flow_ctrl:1, /* Use 802.3x flow control (PAUSE only) */ - partner_flow_ctrl:1, /* Partner supports flow control */ - has_nway:1, -- enable_wol:1, /* Wake-on-LAN is enabled */ - pm_state_valid:1, /* power_state[] has sane contents */ - open:1, - medialock:1, -@@ -915,10 +908,8 @@ static int options[MAX_UNITS] = { -1, -1 - static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; - static int hw_checksums[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; - static int flow_ctrl[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; --static int enable_wol[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; - static int global_options = -1; - static int global_full_duplex = -1; --static int global_enable_wol = -1; - - /* #define dev_alloc_skb dev_alloc_skb_debug */ - -@@ -960,8 +951,8 @@ static int vortex_resume (struct pci_dev - - #ifdef CONFIG_EISA - static struct eisa_device_id vortex_eisa_ids[] = { -- { "TCM5920", EISA_3C592_OFFSET }, -- { "TCM5970", EISA_3C597_OFFSET }, -+ { "TCM5920", CH_3C592 }, -+ { "TCM5970", CH_3C597 }, - { "" } - }; - -@@ -1138,8 +1129,6 @@ static int __devinit vortex_probe1(struc - vortex_debug = 7; - if (option & 0x4000) - vortex_debug = 2; -- if (option & 0x0400) -- vp->enable_wol = 1; - } - - print_info = (vortex_debug > 1); -@@ -1227,16 +1216,12 @@ static int __devinit vortex_probe1(struc - - if (global_full_duplex > 0) - vp->full_duplex = 1; -- if (global_enable_wol > 0) -- vp->enable_wol = 1; - - if (card_idx < MAX_UNITS) { - if (full_duplex[card_idx] > 0) - vp->full_duplex = 1; - if (flow_ctrl[card_idx] > 0) - vp->flow_ctrl = 1; -- if (enable_wol[card_idx] > 0) -- vp->enable_wol = 1; - } - - vp->force_fd = vp->full_duplex; -@@ -1379,7 +1364,7 @@ static int __devinit vortex_probe1(struc - } else - dev->if_port = vp->default_media; - -- if ((vp->available_media & 0x4b) || (vci->drv_flags & HAS_NWAY) || -+ if ((vp->available_media & 0x40) || (vci->drv_flags & HAS_NWAY) || - dev->if_port == XCVR_MII || dev->if_port == XCVR_NWAY) { - int phy, phy_idx = 0; - EL3WINDOW(4); -@@ -1463,7 +1448,7 @@ static int __devinit vortex_probe1(struc - dev->set_multicast_list = set_rx_mode; - dev->tx_timeout = vortex_tx_timeout; - dev->watchdog_timeo = (watchdog * HZ) / 1000; -- if (pdev && vp->enable_wol) { -+ if (pdev) { - vp->pm_state_valid = 1; - pci_save_state(VORTEX_PCI(vp), vp->power_state); - acpi_set_WOL(dev); -@@ -1520,7 +1505,7 @@ vortex_up(struct net_device *dev) - unsigned int config; - int i; - -- if (VORTEX_PCI(vp) && vp->enable_wol) { -+ if (VORTEX_PCI(vp)) { - pci_set_power_state(VORTEX_PCI(vp), 0); /* Go active */ - pci_restore_state(VORTEX_PCI(vp), vp->power_state); - } -@@ -2669,7 +2654,7 @@ vortex_down(struct net_device *dev) - if (vp->full_bus_master_tx) - outl(0, ioaddr + DownListPtr); - -- if (VORTEX_PCI(vp) && vp->enable_wol) { -+ if (VORTEX_PCI(vp)) { - pci_save_state(VORTEX_PCI(vp), vp->power_state); - acpi_set_WOL(dev); - } -@@ -3059,7 +3044,7 @@ static void __devexit vortex_remove_one - /* Should really use issue_and_wait() here */ - outw(TotalReset|0x14, dev->base_addr + EL3_CMD); - -- if (VORTEX_PCI(vp) && vp->enable_wol) { -+ if (VORTEX_PCI(vp)) { - pci_set_power_state(VORTEX_PCI(vp), 0); /* Go active */ - if (vp->pm_state_valid) - pci_restore_state(VORTEX_PCI(vp), vp->power_state); ---- linux-2.6.0-test1/drivers/net/eql.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/drivers/net/eql.c 2003-07-19 17:03:50.000000000 -0700 -@@ -162,22 +162,12 @@ static void eql_timer(unsigned long para - static char version[] __initdata = - "Equalizer2002: Simon Janes (simon@ncm.com) and David S. Miller (davem@redhat.com)\n"; - --static int __init eql_init(struct net_device *dev) -+static void __init eql_setup(struct net_device *dev) - { -- static unsigned int version_printed; -- equalizer_t *eql; -+ equalizer_t *eql = dev->priv; - - SET_MODULE_OWNER(dev); - -- if (version_printed++ == 0) -- printk(version); -- -- dev->priv = kmalloc(sizeof (equalizer_t), GFP_KERNEL); -- if (dev->priv == NULL) -- return -ENOMEM; -- memset(dev->priv, 0, sizeof (equalizer_t)); -- eql = dev->priv; -- - init_timer(&eql->timer); - eql->timer.data = (unsigned long) dev->priv; - eql->timer.expires = jiffies + EQL_DEFAULT_RESCHED_IVAL; -@@ -203,8 +193,6 @@ static int __init eql_init(struct net_de - - dev->type = ARPHRD_SLIP; - dev->tx_queue_len = 5; /* Hands them off fast */ -- -- return 0; - } - - static int eql_open(struct net_device *dev) -@@ -598,23 +586,28 @@ static int eql_s_master_cfg(struct net_d - return -EINVAL; - } - --static struct net_device dev_eql; -+static struct net_device *dev_eql; - - static int __init eql_init_module(void) - { -- strcpy(dev_eql.name, "eql"); -- dev_eql.init = eql_init; -- if (register_netdev(&dev_eql) != 0) { -- printk("eql: register_netdev() returned non-zero.\n"); -- return -EIO; -- } -- return 0; -+ int err; -+ -+ printk(version); -+ -+ dev_eql = alloc_netdev(sizeof(equalizer_t), "eql", eql_setup); -+ if (!dev_eql) -+ return -ENOMEM; -+ -+ err = register_netdev(dev_eql); -+ if (err) -+ kfree(dev_eql); -+ return err; - } - - static void __exit eql_cleanup_module(void) - { -- kfree(dev_eql.priv); -- unregister_netdev(&dev_eql); -+ unregister_netdev(dev_eql); -+ kfree(dev_eql); - } - - module_init(eql_init_module); ---- linux-2.6.0-test1/drivers/net/fc/iph5526.c 2003-06-16 22:32:21.000000000 -0700 -+++ 25/drivers/net/fc/iph5526.c 2003-07-19 17:03:50.000000000 -0700 -@@ -48,7 +48,6 @@ static const char *version = - #include - #include - #include --#include - #include /* had the declarations for init_fcdev among - others + includes if_fcdevice.h */ - ---- linux-2.6.0-test1/drivers/net/irda/vlsi_ir.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/net/irda/vlsi_ir.c 2003-07-19 17:03:50.000000000 -0700 -@@ -474,10 +474,8 @@ static ssize_t vlsi_proc_read(struct fil - if (pos + nbytes > size) - nbytes = size - pos; - -- if (!access_ok(VERIFY_WRITE, buf, nbytes)) -- return -EINVAL; -- -- copy_to_user(buf, procdata->data + pos, nbytes); -+ if (copy_to_user(buf, procdata->data + pos, nbytes)) -+ return -EFAULT; - - *ppos += nbytes; - ---- linux-2.6.0-test1/drivers/net/Kconfig 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/net/Kconfig 2003-07-19 17:03:50.000000000 -0700 -@@ -1153,7 +1153,7 @@ config ZNET - - config SEEQ8005 - tristate "SEEQ8005 support (EXPERIMENTAL)" -- depends on NET_ISA && OBSOLETE && EXPERIMENTAL -+ depends on NET_ISA && EXPERIMENTAL - help - This is a driver for the SEEQ 8005 network (Ethernet) card. If this - is for you, read the Ethernet-HOWTO, available from ---- linux-2.6.0-test1/drivers/net/ni65.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/drivers/net/ni65.c 2003-07-19 17:03:50.000000000 -0700 -@@ -245,6 +245,7 @@ struct priv - int cmdr_addr; - int cardno; - int features; -+ spinlock_t ring_lock; - }; - - static int ni65_probe1(struct net_device *dev,int); -@@ -299,7 +300,7 @@ static int ni65_open(struct net_device * - int irqval = request_irq(dev->irq, &ni65_interrupt,0, - cards[p->cardno].cardname,dev); - if (irqval) { -- printk ("%s: unable to get IRQ %d (irqval=%d).\n", -+ printk(KERN_ERR "%s: unable to get IRQ %d (irqval=%d).\n", - dev->name,dev->irq, irqval); - return -EAGAIN; - } -@@ -409,12 +410,14 @@ static int __init ni65_probe1(struct net - p = (struct priv *) dev->priv; - p->cmdr_addr = ioaddr + cards[i].cmd_offset; - p->cardno = i; -+ spin_lock_init(&p->ring_lock); - -- printk("%s: %s found at %#3x, ", dev->name, cards[p->cardno].cardname , ioaddr); -+ printk(KERN_INFO "%s: %s found at %#3x, ", dev->name, cards[p->cardno].cardname , ioaddr); - - outw(inw(PORT+L_RESET),PORT+L_RESET); /* first: reset the card */ - if( (j=readreg(CSR0)) != 0x4) { -- printk(KERN_ERR "can't RESET card: %04x\n",j); -+ printk("failed.\n"); -+ printk(KERN_ERR "%s: Can't RESET card: %04x\n", dev->name, j); - ni65_free_buffer(p); - release_region(ioaddr, cards[p->cardno].total_size); - return -EAGAIN; -@@ -467,7 +470,8 @@ static int __init ni65_probe1(struct net - break; - } - if(i == 5) { -- printk("Can't detect DMA channel!\n"); -+ printk("failed.\n"); -+ printk(KERN_ERR "%s: Can't detect DMA channel!\n", dev->name); - ni65_free_buffer(p); - release_region(ioaddr, cards[p->cardno].total_size); - return -EAGAIN; -@@ -480,13 +484,13 @@ static int __init ni65_probe1(struct net - - if(dev->irq < 2) - { -- unsigned long irq_mask, delay; -+ unsigned long irq_mask; - - ni65_init_lance(p,dev->dev_addr,0,0); - irq_mask = probe_irq_on(); - writereg(CSR0_INIT|CSR0_INEA,CSR0); /* trigger interrupt */ -- delay = jiffies + HZ/50; -- while (time_before(jiffies, delay)) ; -+ set_current_state(TASK_UNINTERRUPTIBLE); -+ schedule_timeout(HZ/50); - dev->irq = probe_irq_off(irq_mask); - if(!dev->irq) - { -@@ -503,7 +507,7 @@ static int __init ni65_probe1(struct net - - if(request_dma(dev->dma, cards[p->cardno].cardname ) != 0) - { -- printk("%s: Can't request dma-channel %d\n",dev->name,(int) dev->dma); -+ printk(KERN_ERR "%s: Can't request dma-channel %d\n",dev->name,(int) dev->dma); - ni65_free_buffer(p); - release_region(ioaddr, cards[p->cardno].total_size); - return -EAGAIN; -@@ -570,7 +574,7 @@ static void *ni65_alloc_mem(struct net_d - if(type) { - ret = skb = alloc_skb(2+16+size,GFP_KERNEL|GFP_DMA); - if(!skb) { -- printk("%s: unable to allocate %s memory.\n",dev->name,what); -+ printk(KERN_WARNING "%s: unable to allocate %s memory.\n",dev->name,what); - return NULL; - } - skb->dev = dev; -@@ -581,12 +585,12 @@ static void *ni65_alloc_mem(struct net_d - else { - ret = ptr = kmalloc(T_BUF_SIZE,GFP_KERNEL | GFP_DMA); - if(!ret) { -- printk("%s: unable to allocate %s memory.\n",dev->name,what); -+ printk(KERN_WARNING "%s: unable to allocate %s memory.\n",dev->name,what); - return NULL; - } - } - if( (u32) virt_to_phys(ptr+size) > 0x1000000) { -- printk("%s: unable to allocate %s memory in lower 16MB!\n",dev->name,what); -+ printk(KERN_WARNING "%s: unable to allocate %s memory in lower 16MB!\n",dev->name,what); - if(type) - kfree_skb(skb); - else -@@ -692,7 +696,7 @@ static void ni65_stop_start(struct net_d - writedatareg(CSR0_STOP); - - if(debuglevel > 1) -- printk("ni65_stop_start\n"); -+ printk(KERN_DEBUG "ni65_stop_start\n"); - - if(p->features & INIT_RING_BEFORE_START) { - int i; -@@ -846,6 +850,8 @@ static irqreturn_t ni65_interrupt(int ir - - p = (struct priv *) dev->priv; - -+ spin_lock(&p->ring_lock); -+ - while(--bcnt) { - csr0 = inw(PORT+L_DATAREG); - -@@ -867,7 +873,7 @@ static irqreturn_t ni65_interrupt(int ir - { - struct priv *p = (struct priv *) dev->priv; - if(debuglevel > 1) -- printk("%s: general error: %04x.\n",dev->name,csr0); -+ printk(KERN_ERR "%s: general error: %04x.\n",dev->name,csr0); - if(csr0 & CSR0_BABL) - p->stats.tx_errors++; - if(csr0 & CSR0_MISS) { -@@ -879,7 +885,7 @@ static irqreturn_t ni65_interrupt(int ir - } - if(csr0 & CSR0_MERR) { - if(debuglevel > 1) -- printk("%s: Ooops .. memory error: %04x.\n",dev->name,csr0); -+ printk(KERN_ERR "%s: Ooops .. memory error: %04x.\n",dev->name,csr0); - ni65_stop_start(dev,p); - } - } -@@ -932,12 +938,13 @@ static irqreturn_t ni65_interrupt(int ir - #endif - - if( (csr0 & (CSR0_RXON | CSR0_TXON)) != (CSR0_RXON | CSR0_TXON) ) { -- printk("%s: RX or TX was offline -> restart\n",dev->name); -+ printk(KERN_DEBUG "%s: RX or TX was offline -> restart\n",dev->name); - ni65_stop_start(dev,p); - } - else - writedatareg(CSR0_INEA); - -+ spin_unlock(&p->ring_lock); - return IRQ_HANDLED; - } - -@@ -1147,9 +1154,7 @@ static int ni65_send_packet(struct sk_bu - memset((char *)p->tmdbounce[p->tmdbouncenum]+skb->len, 0, len-skb->len); - dev_kfree_skb (skb); - -- save_flags(flags); -- cli(); -- -+ spin_lock_irqsave(&p->ring_lock, flags); - tmdp = p->tmdhead + p->tmdnum; - tmdp->u.buffer = (u32) isa_virt_to_bus(p->tmdbounce[p->tmdbouncenum]); - p->tmdbouncenum = (p->tmdbouncenum + 1) & (TMDNUM - 1); -@@ -1157,8 +1162,7 @@ static int ni65_send_packet(struct sk_bu - #ifdef XMT_VIA_SKB - } - else { -- save_flags(flags); -- cli(); -+ spin_lock_irqsave(&p->ring_lock, flags); - - tmdp = p->tmdhead + p->tmdnum; - tmdp->u.buffer = (u32) isa_virt_to_bus(skb->data); -@@ -1178,8 +1182,8 @@ static int ni65_send_packet(struct sk_bu - - p->lock = 0; - dev->trans_start = jiffies; -- -- restore_flags(flags); -+ -+ spin_unlock_irqrestore(&p->ring_lock, flags); - } - - return 0; -@@ -1238,10 +1242,8 @@ void cleanup_module(void) - { - struct priv *p; - p = (struct priv *) dev_ni65.priv; -- if(!p) { -- printk("Ooops .. no private struct\n"); -- return; -- } -+ if(!p) -+ BUG(); - disable_dma(dev_ni65.dma); - free_dma(dev_ni65.dma); - unregister_netdev(&dev_ni65); -@@ -1250,6 +1252,7 @@ void cleanup_module(void) - dev_ni65.priv = NULL; - } - #endif /* MODULE */ -+ - MODULE_LICENSE("GPL"); - - /* ---- linux-2.6.0-test1/drivers/net/ni65.h 2003-06-14 12:18:35.000000000 -0700 -+++ 25/drivers/net/ni65.h 2003-07-19 17:03:50.000000000 -0700 -@@ -20,32 +20,32 @@ - #define CSR0_BABL 0x4000 /* Babble transmitter timeout error (RC) */ - #define CSR0_CERR 0x2000 /* Collision Error (RC) */ - #define CSR0_MISS 0x1000 /* Missed packet (RC) */ --#define CSR0_MERR 0x0800 /* Memory Error (RC) */ -+#define CSR0_MERR 0x0800 /* Memory Error (RC) */ - #define CSR0_RINT 0x0400 /* Receiver Interrupt (RC) */ --#define CSR0_TINT 0x0200 /* Transmit Interrupt (RC) */ -+#define CSR0_TINT 0x0200 /* Transmit Interrupt (RC) */ - #define CSR0_IDON 0x0100 /* Initialization Done (RC) */ - #define CSR0_INTR 0x0080 /* Interrupt Flag (R) */ - #define CSR0_INEA 0x0040 /* Interrupt Enable (RW) */ - #define CSR0_RXON 0x0020 /* Receiver on (R) */ --#define CSR0_TXON 0x0010 /* Transmitter on (R) */ -+#define CSR0_TXON 0x0010 /* Transmitter on (R) */ - #define CSR0_TDMD 0x0008 /* Transmit Demand (RS) */ --#define CSR0_STOP 0x0004 /* Stop (RS) */ -+#define CSR0_STOP 0x0004 /* Stop (RS) */ - #define CSR0_STRT 0x0002 /* Start (RS) */ - #define CSR0_INIT 0x0001 /* Initialize (RS) */ - --#define CSR0_CLRALL 0x7f00 /* mask for all clearable bits */ -+#define CSR0_CLRALL 0x7f00 /* mask for all clearable bits */ - /* - * Initialization Block Mode operation Bit Definitions. - */ - - #define M_PROM 0x8000 /* Promiscuous Mode */ --#define M_INTL 0x0040 /* Internal Loopback */ --#define M_DRTY 0x0020 /* Disable Retry */ -+#define M_INTL 0x0040 /* Internal Loopback */ -+#define M_DRTY 0x0020 /* Disable Retry */ - #define M_COLL 0x0010 /* Force Collision */ - #define M_DTCR 0x0008 /* Disable Transmit CRC) */ - #define M_LOOP 0x0004 /* Loopback */ --#define M_DTX 0x0002 /* Disable the Transmitter */ --#define M_DRX 0x0001 /* Disable the Receiver */ -+#define M_DTX 0x0002 /* Disable the Transmitter */ -+#define M_DRX 0x0001 /* Disable the Receiver */ - - - /* -@@ -56,7 +56,7 @@ - #define RCV_ERR 0x40 /* Error Summary */ - #define RCV_FRAM 0x20 /* Framing Error */ - #define RCV_OFLO 0x10 /* Overflow Error */ --#define RCV_CRC 0x08 /* CRC Error */ -+#define RCV_CRC 0x08 /* CRC Error */ - #define RCV_BUF_ERR 0x04 /* Buffer Error */ - #define RCV_START 0x02 /* Start of Packet */ - #define RCV_END 0x01 /* End of Packet */ -@@ -67,7 +67,7 @@ - */ - - #define XMIT_OWN 0x80 /* owner bit 0 = host, 1 = lance */ --#define XMIT_ERR 0x40 /* Error Summary */ -+#define XMIT_ERR 0x40 /* Error Summary */ - #define XMIT_RETRY 0x10 /* more the 1 retry needed to Xmit */ - #define XMIT_1_RETRY 0x08 /* one retry needed to Xmit */ - #define XMIT_DEF 0x04 /* Deferred */ -@@ -78,53 +78,44 @@ - * transmit status (2) (valid if XMIT_ERR == 1) - */ - --#define XMIT_TDRMASK 0x03ff /* time-domain-reflectometer-value */ --#define XMIT_RTRY 0x0400 /* Failed after 16 retransmissions */ --#define XMIT_LCAR 0x0800 /* Loss of Carrier */ --#define XMIT_LCOL 0x1000 /* Late collision */ --#define XMIT_RESERV 0x2000 /* Reserved */ --#define XMIT_UFLO 0x4000 /* Underflow (late memory) */ --#define XMIT_BUFF 0x8000 /* Buffering error (no ENP) */ -- --struct init_block --{ -- unsigned short mode; -- unsigned char eaddr[6]; -- unsigned char filter[8]; -- /* bit 29-31: number of rmd's (power of 2) */ -- u32 rrp; /* receive ring pointer (align 8) */ -- /* bit 29-31: number of tmd's (power of 2) */ -- u32 trp; /* transmit ring pointer (align 8) */ -+#define XMIT_TDRMASK 0x03ff /* time-domain-reflectometer-value */ -+#define XMIT_RTRY 0x0400 /* Failed after 16 retransmissions */ -+#define XMIT_LCAR 0x0800 /* Loss of Carrier */ -+#define XMIT_LCOL 0x1000 /* Late collision */ -+#define XMIT_RESERV 0x2000 /* Reserved */ -+#define XMIT_UFLO 0x4000 /* Underflow (late memory) */ -+#define XMIT_BUFF 0x8000 /* Buffering error (no ENP) */ -+ -+struct init_block { -+ unsigned short mode; -+ unsigned char eaddr[6]; -+ unsigned char filter[8]; -+ /* bit 29-31: number of rmd's (power of 2) */ -+ u32 rrp; /* receive ring pointer (align 8) */ -+ /* bit 29-31: number of tmd's (power of 2) */ -+ u32 trp; /* transmit ring pointer (align 8) */ - }; - --struct rmd /* Receive Message Descriptor */ --{ -- union -- { -- volatile u32 buffer; -- struct -- { -- volatile unsigned char dummy[3]; -- volatile unsigned char status; -- } s; -- } u; -- volatile short blen; -- volatile unsigned short mlen; -+struct rmd { /* Receive Message Descriptor */ -+ union { -+ volatile u32 buffer; -+ struct { -+ volatile unsigned char dummy[3]; -+ volatile unsigned char status; -+ } s; -+ } u; -+ volatile short blen; -+ volatile unsigned short mlen; - }; - --struct tmd --{ -- union -- { -- volatile u32 buffer; -- struct -- { -- volatile unsigned char dummy[3]; -- volatile unsigned char status; -- } s; -- } u; -- volatile unsigned short blen; -- volatile unsigned short status2; -+struct tmd { -+ union { -+ volatile u32 buffer; -+ struct { -+ volatile unsigned char dummy[3]; -+ volatile unsigned char status; -+ } s; -+ } u; -+ volatile unsigned short blen; -+ volatile unsigned short status2; - }; -- -- ---- linux-2.6.0-test1/drivers/net/pcmcia/Kconfig 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/net/pcmcia/Kconfig 2003-07-19 17:03:50.000000000 -0700 -@@ -113,7 +113,7 @@ config PCMCIA_XIRC2PS - If unsure, say N. - - config PCMCIA_AXNET -- tristate "broken NS8390-cards support" -+ tristate "Asix AX88190 PCMCIA support" - depends on NET_PCMCIA && PCMCIA - ---help--- - Say Y here if you intend to attach an Asix AX88190-based PCMCIA ---- linux-2.6.0-test1/drivers/net/seeq8005.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/net/seeq8005.c 2003-07-19 17:03:50.000000000 -0700 -@@ -700,7 +700,8 @@ static void hardware_send_packet(struct - * wait_for_buffer - * - * This routine waits for the SEEQ chip to assert that the FIFO is ready -- * by checking for a window interrupt, and then clearing it -+ * by checking for a window interrupt, and then clearing it. This has to -+ * occur in the interrupt handler! - */ - inline void wait_for_buffer(struct net_device * dev) - { -@@ -710,7 +711,7 @@ inline void wait_for_buffer(struct net_d - - tmp = jiffies + HZ; - while ( ( ((status=inw(SEEQ_STATUS)) & SEEQSTAT_WINDOW_INT) != SEEQSTAT_WINDOW_INT) && time_before(jiffies, tmp)) -- mb(); -+ cpu_relax(); - - if ( (status & SEEQSTAT_WINDOW_INT) == SEEQSTAT_WINDOW_INT) - outw( SEEQCMD_WINDOW_INT_ACK | (status & SEEQCMD_INT_MASK), SEEQ_CMD); ---- linux-2.6.0-test1/drivers/net/wan/comx-hw-comx.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/net/wan/comx-hw-comx.c 2003-07-19 17:03:50.000000000 -0700 -@@ -11,6 +11,7 @@ - * - * Contributors: - * Arnaldo Carvalho de Melo - 0.86 -+ * Daniele Bellucci - 0.87 - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License -@@ -42,9 +43,12 @@ - * - printk cleanups - * Version 0.86 (00/08/15): - * - resource release on failure at COMX_init -+ * -+ * Version 0.87 (03/07/09) -+ * - audit copy_from_user in comxhw_write_proc - */ - --#define VERSION "0.86" -+#define VERSION "0.87" - - #include - #include -@@ -1084,7 +1088,8 @@ static int comxhw_write_proc(struct file - if (hw->firmware->data) { - kfree(hw->firmware->data); - } -- copy_from_user(tmp + file->f_pos, buffer, count); -+ if (copy_from_user(tmp + file->f_pos, buffer, count)) -+ return -EFAULT; - hw->firmware->len = entry->size = file->f_pos + count; - hw->firmware->data = tmp; - file->f_pos += count; ---- linux-2.6.0-test1/drivers/net/wan/sdladrv.c 2003-06-14 12:18:03.000000000 -0700 -+++ 25/drivers/net/wan/sdladrv.c 2003-07-19 17:03:50.000000000 -0700 -@@ -160,10 +160,6 @@ - - /****** Function Prototypes *************************************************/ - --/* Module entry points. These are called by the OS and must be public. */ --int init_module (void); --void cleanup_module (void); -- - /* Hardware-specific functions */ - static int sdla_detect (sdlahw_t* hw); - static int sdla_autodpm (sdlahw_t* hw); -@@ -325,11 +321,7 @@ static int pci_slot_ar[MAX_S514_CARDS]; - * Context: process - */ - --#ifdef MODULE --int init_module (void) --#else - int sdladrv_init(void) --#endif - { - int i=0; - -@@ -354,9 +346,12 @@ int sdladrv_init(void) - * Module 'remove' entry point. - * o release all remaining system resources - */ --void cleanup_module (void) -+static void sdladrv_cleanup(void) - { - } -+ -+module_init(sdladrv_init); -+module_cleanup(sdladrv_cleanup); - #endif - - /******* Kernel APIs ********************************************************/ ---- linux-2.6.0-test1/drivers/net/wan/sdlamain.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/net/wan/sdlamain.c 2003-07-19 17:03:50.000000000 -0700 -@@ -177,10 +177,6 @@ static void dbg_kfree(void * v, int line - extern void disable_irq(unsigned int); - extern void enable_irq(unsigned int); - --/* Module entry points */ --int init_module (void); --void cleanup_module (void); -- - /* WAN link driver entry points */ - static int setup(struct wan_device* wandev, wandev_conf_t* conf); - static int shutdown(struct wan_device* wandev); -@@ -246,11 +242,7 @@ static int wanpipe_bh_critical=0; - * Context: process - */ - --#ifdef MODULE --int init_module (void) --#else - int wanpipe_init(void) --#endif - { - int cnt, err = 0; - -@@ -313,7 +305,7 @@ int wanpipe_init(void) - * o unregister all adapters from the WAN router - * o release all remaining system resources - */ --void cleanup_module (void) -+static void wanpipe_cleanup(void) - { - int i; - -@@ -329,6 +321,8 @@ void cleanup_module (void) - printk(KERN_INFO "\nwanpipe: WANPIPE Modules Unloaded.\n"); - } - -+module_init(wanpipe_init); -+module_exit(wanpipe_cleanup); - #endif - - /******* WAN Device Driver Entry Points *************************************/ ---- linux-2.6.0-test1/drivers/net/wan/syncppp.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/net/wan/syncppp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -161,7 +161,7 @@ static int debug; - * then put the packet into tx_queue, and call sppp_flush_xmit() - * after spinlock is released. - */ --static void sppp_flush_xmit() -+static void sppp_flush_xmit(void) - { - struct sk_buff *skb; - while ((skb = skb_dequeue(&tx_queue)) != NULL) ---- linux-2.6.0-test1/drivers/net/wireless/airo.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/net/wireless/airo.c 2003-07-19 17:06:31.000000000 -0700 -@@ -927,9 +927,8 @@ static int enable_MAC( struct airo_info - static void disable_MAC(struct airo_info *ai); - static void enable_interrupts(struct airo_info*); - static void disable_interrupts(struct airo_info*); --static u16 issuecommand(struct airo_info*, Cmd *pCmd, Resp *pRsp); --static u16 sendcommand(struct airo_info *ai, Cmd *pCmd); --static void completecommand(struct airo_info *ai, Resp *pRsp); -+static int issuecommand(struct airo_info*, Cmd *pCmd, Resp *pRsp); -+static int issuecommand_nolock(struct airo_info*, Cmd *pCmd, Resp *pRsp); - static int bap_setup(struct airo_info*, u16 rid, u16 offset, int whichbap); - static int aux_bap_read(struct airo_info*, u16 *pu16Dst, int bytelen, - int whichbap); -@@ -939,13 +938,14 @@ static int bap_write(struct airo_info*, - int whichbap); - static int PC4500_accessrid(struct airo_info*, u16 rid, u16 accmd); - static int PC4500_readrid(struct airo_info*, u16 rid, void *pBuf, int len); -+static int PC4500_readrid_nolock(struct airo_info*, u16 rid, void *pBuf, int len); - static int PC4500_writerid(struct airo_info*, u16 rid, const void - *pBuf, int len); - static int do_writerid( struct airo_info*, u16 rid, const void *rid_data, - int len ); - static u16 transmit_allocate(struct airo_info*, int lenPayload, int raw); --static int transmit_802_3_packet(struct airo_info*, int len, char *pPacket); --static int transmit_802_11_packet(struct airo_info*, int len, char *pPacket); -+static int transmit_802_3_packet(struct airo_info*, u16 txFid, char *pPacket, int len); -+static int transmit_802_11_packet(struct airo_info*, u16 txFid, char *pPacket, int len); - - static irqreturn_t airo_interrupt( int irq, void* dev_id, struct pt_regs - *regs); -@@ -981,12 +981,11 @@ struct airo_info { - struct timer_list timer; - struct proc_dir_entry *proc_entry; - struct airo_info *next; -- spinlock_t aux_lock; -+ spinlock_t main_lock; - unsigned long flags; - #define FLAG_PROMISC IFF_PROMISC /* 0x100 - include/linux/if.h */ - #define FLAG_RADIO_OFF 0x02 /* User disabling of MAC */ - #define FLAG_RADIO_DOWN 0x08 /* ifup/ifdown disabling of MAC */ --#define FLAG_LOCKED 2 /* 0x04 - use as a bit offset */ - #define FLAG_FLASHING 0x10 - #define FLAG_ADHOC 0x01 /* Needed by MIC */ - #define FLAG_MIC_CAPABLE 0x20 -@@ -997,14 +996,8 @@ struct airo_info { - int whichbap); - unsigned short *flash; - tdsRssiEntry *rssi; -- struct semaphore sem; - struct task_struct *task; - struct work_struct promisc_task; -- struct { -- struct sk_buff *skb; -- int fid; -- struct work_struct task; -- } xmit, xmit11; - struct net_device *wifidev; - #ifdef WIRELESS_EXT - struct iw_statistics wstats; // wireless stats -@@ -1045,10 +1038,8 @@ static int readBSSListRid(struct airo_in - if (first == 1) { - memset(&cmd, 0, sizeof(cmd)); - cmd.cmd=CMD_LISTBSS; -- if (down_interruptible(&ai->sem)) -- return -ERESTARTSYS; - issuecommand(ai, &cmd, &rsp); -- up(&ai->sem); -+ - /* Let the command take effect */ - set_current_state (TASK_INTERRUPTIBLE); - ai->task = current; -@@ -1193,7 +1184,7 @@ static int readStatusRid(struct airo_inf - statr->len = le16_to_cpu(statr->len); - for(s = &statr->mode; s <= &statr->SSIDlen; s++) *s = le16_to_cpu(*s); - -- for(s = &statr->beaconPeriod; s <= &statr->_reserved[9]; s++) -+ for(s = &statr->beaconPeriod; s <= &statr->_reserved1; s++) - *s = le16_to_cpu(*s); - - return rc; -@@ -1306,44 +1297,15 @@ static void get_tx_error(struct airo_inf - } - } - --static void airo_do_xmit(struct net_device *dev) { -- u16 status; -- int i; -- struct airo_info *priv = dev->priv; -- struct sk_buff *skb = priv->xmit.skb; -- int fid = priv->xmit.fid; -- u32 *fids = priv->fids; -- -- if (down_trylock(&priv->sem) != 0) { -- netif_stop_queue(dev); -- priv->xmit.task.func = (void (*)(void *))airo_do_xmit; -- priv->xmit.task.data = (void *)dev; -- schedule_work(&priv->xmit.task); -- return; -- } -- status = transmit_802_3_packet (priv, fids[fid], skb->data); -- up(&priv->sem); -- -- i = 0; -- if ( status == SUCCESS ) { -- dev->trans_start = jiffies; -- for (; i < MAX_FIDS / 2 && (priv->fids[i] & 0xffff0000); i++); -- } else { -- priv->fids[fid] &= 0xffff; -- priv->stats.tx_window_errors++; -- } -- if (i < MAX_FIDS / 2) -- netif_wake_queue(dev); -- else -- netif_stop_queue(dev); -- dev_kfree_skb(skb); --} -- --static int airo_start_xmit(struct sk_buff *skb, struct net_device *dev) { -- s16 len; -+static int airo_start_xmit(struct sk_buff *skb, struct net_device *dev) -+{ -+ int len; - int i; -+ int ret = 0; -+ int status; -+ unsigned long flags; - struct airo_info *priv = dev->priv; -- u32 *fids = priv->fids; -+ int *fids = priv->fids; - - if ( skb == NULL ) { - printk( KERN_ERR "airo: skb == NULL!!!\n" ); -@@ -1351,61 +1313,50 @@ static int airo_start_xmit(struct sk_buf - } - - /* Find a vacant FID */ -- for( i = 0; i < MAX_FIDS / 2 && (fids[i] & 0xffff0000); i++ ); -- -- if ( i == MAX_FIDS / 2 ) { -- priv->stats.tx_fifo_errors++; -- dev_kfree_skb(skb); -- } else { -- /* check min length*/ -- len = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN; -- /* Mark fid as used & save length for later */ -- fids[i] |= (len << 16); -- priv->xmit.skb = skb; -- priv->xmit.fid = i; -- airo_do_xmit(dev); -- } -- return 0; --} -+ spin_lock_irqsave(&priv->main_lock, flags); -+ for (i = 0; i < MAX_FIDS / 2 && (fids[i] & 0xffff0000); i++); - --static void airo_do_xmit11(struct net_device *dev) { -- u16 status; -- int i; -- struct airo_info *priv = dev->priv; -- struct sk_buff *skb = priv->xmit11.skb; -- int fid = priv->xmit11.fid; -- u32 *fids = priv->fids; -- -- if (down_trylock(&priv->sem) != 0) { -+ if (i + 1 >= MAX_FIDS / 2) { - netif_stop_queue(dev); -- priv->xmit11.task.func = (void (*)(void *))airo_do_xmit11; -- priv->xmit11.task.data = (void *)dev; -- schedule_work(&priv->xmit11.task); -- return; -+ -+ /* we cannot transmit */ -+ if (i == MAX_FIDS / 2) { -+ priv->stats.tx_fifo_errors++; -+ ret = 1; -+ goto tx_done; -+ } - } -- status = transmit_802_11_packet (priv, fids[fid], skb->data); -- up(&priv->sem); - -- i = MAX_FIDS / 2; -- if ( status == SUCCESS ) { -+ /* check min length*/ -+ len = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN; -+ status = transmit_802_3_packet (priv, fids[i], skb->data, len); -+ -+ if (status == SUCCESS) { -+ /* Mark fid as used & save length for later */ -+ fids[i] |= (len << 16); - dev->trans_start = jiffies; -- for (; i < MAX_FIDS && (priv->fids[i] & 0xffff0000); i++); -- } else { -- priv->fids[fid] &= 0xffff; -+ } -+ else { - priv->stats.tx_window_errors++; -+ ret = 1; - } -- if (i < MAX_FIDS) -- netif_wake_queue(dev); -- else -- netif_stop_queue(dev); -- dev_kfree_skb(skb); -+ -+tx_done: -+ spin_unlock_irqrestore(&priv->main_lock, flags); -+ if (!ret) -+ dev_kfree_skb(skb); -+ return ret; - } - --static int airo_start_xmit11(struct sk_buff *skb, struct net_device *dev) { -- s16 len; -+static int airo_start_xmit11(struct sk_buff *skb, struct net_device *dev) -+{ -+ int len; - int i; -+ int ret = 0; -+ int status; -+ unsigned long flags; - struct airo_info *priv = dev->priv; -- u32 *fids = priv->fids; -+ int *fids = priv->fids; - - if ( skb == NULL ) { - printk( KERN_ERR "airo: skb == NULL!!!\n" ); -@@ -1413,21 +1364,39 @@ static int airo_start_xmit11(struct sk_b - } - - /* Find a vacant FID */ -+ spin_lock_irqsave(&priv->main_lock, flags); - for( i = MAX_FIDS / 2; i < MAX_FIDS && (fids[i] & 0xffff0000); i++ ); - -- if ( i == MAX_FIDS ) { -- priv->stats.tx_fifo_errors++; -- dev_kfree_skb(skb); -- } else { -- /* check min length*/ -- len = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN; -- /* Mark fid as used & save length for later */ -+ if (i + 1 >= MAX_FIDS) { -+ netif_stop_queue(dev); -+ -+ /* we cannot transmit */ -+ if (i == MAX_FIDS) { -+ priv->stats.tx_fifo_errors++; -+ ret = 1; -+ goto tx_done; -+ } -+ } -+ -+ /* check min length*/ -+ len = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN; -+ status = transmit_802_11_packet (priv, fids[i], skb->data, len); -+ -+ if (status == SUCCESS) { -+ /* Mark fid as used & save length for later */ - fids[i] |= (len << 16); -- priv->xmit11.skb = skb; -- priv->xmit11.fid = i; -- airo_do_xmit11(dev); -+ dev->trans_start = jiffies; - } -- return 0; -+ else { -+ priv->stats.tx_window_errors++; -+ ret = 1; -+ } -+ -+tx_done: -+ spin_unlock_irqrestore(&priv->main_lock, flags); -+ if (!ret) -+ dev_kfree_skb(skb); -+ return ret; - } - - struct net_device_stats *airo_get_stats(struct net_device *dev) -@@ -1457,36 +1426,19 @@ struct net_device_stats *airo_get_stats( - return &local->stats; - } - --static void airo_end_promisc(struct airo_info *ai) { -- Resp rsp; -- -- if ((IN4500(ai, EVSTAT) & EV_CMD) != 0) { -- completecommand(ai, &rsp); -- up(&ai->sem); -- } else { -- ai->promisc_task.func = (void (*)(void *))airo_end_promisc; -- ai->promisc_task.data = (void *)ai; -- schedule_work(&ai->promisc_task); -- } --} -- --static void airo_set_promisc(struct airo_info *ai) { -+static void airo_set_promisc(struct airo_info *ai) -+{ - Cmd cmd; -+ Resp rsp; - -- if (down_trylock(&ai->sem) == 0) { -- memset(&cmd, 0, sizeof(cmd)); -- cmd.cmd=CMD_SETMODE; -- cmd.parm0=(ai->flags&IFF_PROMISC) ? PROMISC : NOPROMISC; -- sendcommand(ai, &cmd); -- airo_end_promisc(ai); -- } else { -- ai->promisc_task.func = (void (*)(void *))airo_set_promisc; -- ai->promisc_task.data = (void *)ai; -- schedule_work(&ai->promisc_task); -- } -+ memset(&cmd, 0, sizeof(cmd)); -+ cmd.cmd = CMD_SETMODE; -+ cmd.parm0 = (ai->flags & IFF_PROMISC) ? PROMISC : NOPROMISC; -+ issuecommand(ai, &cmd, &rsp); - } - --static void airo_set_multicast_list(struct net_device *dev) { -+static void airo_set_multicast_list(struct net_device *dev) -+{ - struct airo_info *ai = dev->priv; - - if ((dev->flags ^ ai->flags) & IFF_PROMISC) { -@@ -1551,11 +1503,10 @@ void stop_airo_card( struct net_device * - { - struct airo_info *ai = dev->priv; - flush_scheduled_work(); -- if (ai->flash) -- kfree(ai->flash); -- if (ai->rssi) -- kfree(ai->rssi); -- takedown_proc_entry( dev, ai ); -+ -+ disable_interrupts(ai); -+ free_irq(dev->irq, dev); -+ - if (ai->registered) { - unregister_netdev( dev ); - if (ai->wifidev) { -@@ -1565,9 +1516,15 @@ void stop_airo_card( struct net_device * - } - ai->registered = 0; - } -- disable_interrupts(ai); -- free_irq( dev->irq, dev ); -- if (auto_wep) del_timer_sync(&ai->timer); -+ -+ if (ai->flash) -+ kfree(ai->flash); -+ if (ai->rssi) -+ kfree(ai->rssi); -+ takedown_proc_entry( dev, ai ); -+ -+ if (auto_wep) -+ del_timer_sync(&ai->timer); - if (freeres) { - /* PCMCIA frees this stuff, so only for PCI and ISA */ - release_region( dev->base_addr, 64 ); -@@ -1664,8 +1621,7 @@ struct net_device *init_airo_card( unsig - ai->wifidev = 0; - ai->registered = 0; - ai->dev = dev; -- ai->aux_lock = SPIN_LOCK_UNLOCKED; -- sema_init(&ai->sem, 1); -+ ai->main_lock = SPIN_LOCK_UNLOCKED; - ai->need_commit = 0; - ai->config.len = 0; - rc = add_airo_dev( dev ); -@@ -1730,7 +1686,6 @@ struct net_device *init_airo_card( unsig - ai->fids[i] = transmit_allocate(ai,2312,i>=MAX_FIDS/2); - - setup_proc_entry( dev, dev->priv ); /* XXX check for failure */ -- netif_start_queue(dev); - SET_MODULE_OWNER(dev); - return dev; - -@@ -1794,47 +1749,31 @@ int reset_airo_card( struct net_device * - EXPORT_SYMBOL(reset_airo_card); - - #if WIRELESS_EXT > 13 -+/* must be called with lock held */ - static void airo_send_event(struct net_device *dev) { - struct airo_info *ai = dev->priv; - union iwreq_data wrqu; - StatusRid status_rid; - -- if (down_trylock(&ai->sem) == 0) { -- __set_bit(FLAG_LOCKED, &ai->flags); -- PC4500_readrid(ai, RID_STATUS, &status_rid, sizeof(status_rid)); -- clear_bit(FLAG_LOCKED, &ai->flags); -- up(&ai->sem); -- wrqu.data.length = 0; -- wrqu.data.flags = 0; -- memcpy(wrqu.ap_addr.sa_data, status_rid.bssid[0], ETH_ALEN); -- wrqu.ap_addr.sa_family = ARPHRD_ETHER; -+ PC4500_readrid_nolock(ai, RID_STATUS, &status_rid, sizeof(status_rid)); - -- /* Send event to user space */ -- wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); -- } else { -- ai->event_task.func = (void (*)(void *))airo_send_event; -- ai->event_task.data = (void *)dev; -- schedule_work(&ai->event_task); -- } -+ wrqu.data.length = 0; -+ wrqu.data.flags = 0; -+ memcpy(wrqu.ap_addr.sa_data, status_rid.bssid[0], ETH_ALEN); -+ wrqu.ap_addr.sa_family = ARPHRD_ETHER; -+ -+ /* Send event to user space */ -+ wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); - } - #endif - - static void airo_read_mic(struct airo_info *ai) { -+#ifdef MICSUPPORT - MICRid mic_rid; - -- if (down_trylock(&ai->sem) == 0) { -- __set_bit(FLAG_LOCKED, &ai->flags); -- PC4500_readrid(ai, RID_MIC, &mic_rid, sizeof(mic_rid)); -- clear_bit(FLAG_LOCKED, &ai->flags); -- up(&ai->sem); --#ifdef MICSUPPORT -- micinit (ai, &mic_rid); -+ PC4500_readrid(ai, RID_MIC, &mic_rid, sizeof(mic_rid)); -+ micinit (ai, &mic_rid); - #endif -- } else { -- ai->mic_task.func = (void (*)(void *))airo_read_mic; -- ai->mic_task.data = (void *)ai; -- schedule_work(&ai->mic_task); -- } - } - - static irqreturn_t airo_interrupt ( int irq, void* dev_id, struct pt_regs *regs) { -@@ -1848,6 +1787,7 @@ static irqreturn_t airo_interrupt ( int - if (!netif_device_present(dev)) - return IRQ_NONE; - -+ spin_lock(&apriv->main_lock); - for (;;) { - status = IN4500( apriv, EVSTAT ); - if ( !(status & STATUS_INTS) || status == 0xffff ) break; -@@ -1866,7 +1806,8 @@ static irqreturn_t airo_interrupt ( int - - if ( status & EV_MIC ) { - OUT4500( apriv, EVACK, EV_MIC ); -- airo_read_mic( apriv ); -+ if (apriv->flags & FLAG_MIC_CAPABLE) -+ airo_read_mic( apriv ); - } - if ( status & EV_LINK ) { - #if WIRELESS_EXT > 13 -@@ -2115,10 +2056,14 @@ static irqreturn_t airo_interrupt ( int - index = i; - /* Set up to be used again */ - apriv->fids[i] &= 0xffff; -+ -+ if (i < MAX_FIDS / 2) -+ netif_wake_queue(dev); -+ else -+ netif_wake_queue(apriv->wifidev); - } - } - if (index != -1) { -- netif_wake_queue(dev); - if (status & EV_TXEXC) - get_tx_error(apriv, index); - } -@@ -2134,6 +2079,7 @@ static irqreturn_t airo_interrupt ( int - - if (savedInterrupts) - OUT4500( apriv, EVINTEN, savedInterrupts ); -+ spin_unlock(&apriv->main_lock); - - /* done.. */ - return IRQ_RETVAL(handled); -@@ -2169,8 +2115,8 @@ static u16 IN4500( struct airo_info *ai, - return rc; - } - --static int enable_MAC( struct airo_info *ai, Resp *rsp ) { -- int rc; -+static int enable_MAC( struct airo_info *ai, Resp *rsp ) -+{ - Cmd cmd; - - /* FLAG_RADIO_OFF : Radio disabled via /proc or Wireless Extensions -@@ -2182,45 +2128,41 @@ static int enable_MAC( struct airo_info - if (ai->flags & (FLAG_RADIO_OFF|FLAG_RADIO_DOWN)) return SUCCESS; - memset(&cmd, 0, sizeof(cmd)); - cmd.cmd = MAC_ENABLE; -- if (test_bit(FLAG_LOCKED, &ai->flags) != 0) -- return issuecommand(ai, &cmd, rsp); -- -- if (down_interruptible(&ai->sem)) -- return -ERESTARTSYS; -- rc = issuecommand(ai, &cmd, rsp); -- up(&ai->sem); -- return rc; -+ return issuecommand(ai, &cmd, rsp); - } - --static void disable_MAC( struct airo_info *ai ) { -+static void disable_MAC(struct airo_info *ai) -+{ - Cmd cmd; - Resp rsp; - - memset(&cmd, 0, sizeof(cmd)); - cmd.cmd = MAC_DISABLE; // disable in case already enabled -- if (test_bit(FLAG_LOCKED, &ai->flags) != 0) { -- issuecommand(ai, &cmd, &rsp); -- return; -- } -- -- if (down_interruptible(&ai->sem)) -- return; - issuecommand(ai, &cmd, &rsp); -- up(&ai->sem); - } - --static void enable_interrupts( struct airo_info *ai ) { -+static void enable_interrupts(struct airo_info *ai) -+{ -+ unsigned long flags; -+ u16 status; -+ spin_lock_irqsave(&ai->main_lock, flags); -+ - /* Reset the status register */ -- u16 status = IN4500( ai, EVSTAT ); -+ status = IN4500( ai, EVSTAT ); - OUT4500( ai, EVACK, status ); -+ - /* Enable the interrupts */ - OUT4500( ai, EVINTEN, STATUS_INTS ); -- /* Note there is a race condition between the last two lines that -- I don't know how to get rid of right now... */ -+ -+ spin_unlock_irqrestore(&ai->main_lock, flags); - } - --static void disable_interrupts( struct airo_info *ai ) { -+static void disable_interrupts(struct airo_info *ai) -+{ -+ unsigned long flags; -+ spin_lock_irqsave(&ai->main_lock, flags); - OUT4500( ai, EVINTEN, 0 ); -+ spin_unlock_irqrestore(&ai->main_lock, flags); - } - - static u16 setup_card(struct airo_info *ai, u8 *mac) -@@ -2243,23 +2185,20 @@ static u16 setup_card(struct airo_info * - /* The NOP is the first step in getting the card going */ - cmd.cmd = NOP; - cmd.parm0 = cmd.parm1 = cmd.parm2 = 0; -- if (down_interruptible(&ai->sem)) -+ if (spin_is_locked(&ai->main_lock)) - return ERROR; -- if ( issuecommand( ai, &cmd, &rsp ) != SUCCESS ) { -- up(&ai->sem); -+ if (issuecommand(ai, &cmd, &rsp) != SUCCESS) - return ERROR; -- } -+ - memset(&cmd, 0, sizeof(cmd)); - cmd.cmd = MAC_DISABLE; // disable in case already enabled -- if ( issuecommand( ai, &cmd, &rsp ) != SUCCESS ) { -- up(&ai->sem); -+ if (issuecommand( ai, &cmd, &rsp) != SUCCESS ) - return ERROR; -- } -+ - - // Let's figure out if we need to use the AUX port - cmd.cmd = CMD_ENABLEAUX; - if (issuecommand(ai, &cmd, &rsp) != SUCCESS) { -- up(&ai->sem); - printk(KERN_ERR "airo: Error checking for AUX port\n"); - return ERROR; - } -@@ -2270,7 +2209,7 @@ static u16 setup_card(struct airo_info * - ai->bap_read = aux_bap_read; - printk(KERN_DEBUG "airo: Doing AUX bap_reads\n"); - } -- up(&ai->sem); -+ - if (ai->config.len == 0) { - tdsRssiRid rssi_rid; - CapabilityRid cap_rid; -@@ -2375,50 +2314,35 @@ static u16 setup_card(struct airo_info * - } - return SUCCESS; - } -+static int issuecommand(struct airo_info *ai, Cmd *pCmd, Resp *pRsp) { -+ int rc; -+ unsigned long flags; - --static u16 issuecommand(struct airo_info *ai, Cmd *pCmd, Resp *pRsp) { -- // Im really paranoid about letting it run forever! -- int max_tries = 600000; -- -- if (sendcommand(ai, pCmd) == (u16)ERROR) -- return ERROR; -- -- while (max_tries-- && (IN4500(ai, EVSTAT) & EV_CMD) == 0) { -- if (!in_interrupt() && (max_tries & 255) == 0) -- schedule(); -- } -- if ( max_tries == -1 ) { -- printk( KERN_ERR -- "airo: Max tries exceeded waiting for command\n" ); -- return ERROR; -- } -- completecommand(ai, pRsp); -- return SUCCESS; -+ spin_lock_irqsave(&ai->main_lock, flags); -+ rc = issuecommand_nolock(ai, pCmd, pRsp); -+ spin_unlock_irqrestore(&ai->main_lock, flags); -+ return rc; - } - --static u16 sendcommand(struct airo_info *ai, Cmd *pCmd) { -- // Im really paranoid about letting it run forever! -+static int issuecommand_nolock(struct airo_info *ai, Cmd *pCmd, Resp *pRsp) { -+ // Im really paranoid about letting it run forever! - int max_tries = 600000; -- u16 cmd; - - OUT4500(ai, PARAM0, pCmd->parm0); - OUT4500(ai, PARAM1, pCmd->parm1); - OUT4500(ai, PARAM2, pCmd->parm2); - OUT4500(ai, COMMAND, pCmd->cmd); -- while ( max_tries-- && (IN4500(ai, EVSTAT) & EV_CMD) == 0 && -- (cmd = IN4500(ai, COMMAND)) != 0 ) -- if (cmd == pCmd->cmd) -- // PC4500 didn't notice command, try again -- OUT4500(ai, COMMAND, pCmd->cmd); -- if ( max_tries == -1 ) { -+ while (max_tries-- && (IN4500(ai, EVSTAT) & EV_CMD) == 0) { -+ if (IN4500(ai, COMMAND) == pCmd->cmd) { -+ // PC4500 didn't notice command, try again -+ OUT4500(ai, COMMAND, pCmd->cmd); -+ } -+ } -+ if (max_tries == -1) { - printk( KERN_ERR - "airo: Max tries exceeded when issueing command\n" ); - return ERROR; - } -- return SUCCESS; --} -- --static void completecommand(struct airo_info *ai, Resp *pRsp) { - // command completed - pRsp->status = IN4500(ai, STATUS); - pRsp->rsp0 = IN4500(ai, RESP0); -@@ -2431,8 +2355,10 @@ static void completecommand(struct airo_ - } - // acknowledge processing the status/response - OUT4500(ai, EVACK, EV_CMD); -+ return SUCCESS; - } - -+ - /* Sets up the bap to start exchange data. whichbap should - * be one of the BAP0 or BAP1 defines. Locks should be held before - * calling! */ -@@ -2497,9 +2423,7 @@ static int aux_bap_read(struct airo_info - u16 next; - int words; - int i; -- unsigned long flags; - -- spin_lock_irqsave(&ai->aux_lock, flags); - page = IN4500(ai, SWS0+whichbap); - offset = IN4500(ai, SWS2+whichbap); - next = aux_setup(ai, page, offset, &len); -@@ -2519,7 +2443,6 @@ static int aux_bap_read(struct airo_info - next = aux_setup(ai, next, 4, &len); - } - } -- spin_unlock_irqrestore(&ai->aux_lock, flags); - return SUCCESS; - } - -@@ -2558,7 +2481,7 @@ static int PC4500_accessrid(struct airo_ - memset(&cmd, 0, sizeof(cmd)); - cmd.cmd = accmd; - cmd.parm0 = rid; -- status = issuecommand(ai, &cmd, &rsp); -+ status = issuecommand_nolock(ai, &cmd, &rsp); - if (status != 0) return status; - if ( (rsp.status & 0x7F00) != 0) { - return (accmd << 8) + (rsp.rsp0 & 0xFF); -@@ -2567,25 +2490,16 @@ static int PC4500_accessrid(struct airo_ - } - - /* Note, that we are using BAP1 which is also used by transmit, so -- * we must get a lock. */ --static int PC4500_readrid(struct airo_info *ai, u16 rid, void *pBuf, int len) -+ * it must be called with main_lock held. */ -+static int PC4500_readrid_nolock(struct airo_info *ai, u16 rid, void *pBuf, int len) - { -- u16 status, dolock = 0; -- int rc = SUCCESS; -+ u16 status; -+ -+ if ((status = PC4500_accessrid(ai, rid, CMD_ACCESS)) != SUCCESS) -+ return status; -+ if (bap_setup(ai, rid, 0, BAP1) != SUCCESS) -+ return ERROR; - -- if (test_bit(FLAG_LOCKED, &ai->flags) == 0) { -- dolock = 1; -- if (down_interruptible(&ai->sem)) -- return ERROR; -- } -- if ( (status = PC4500_accessrid(ai, rid, CMD_ACCESS)) != SUCCESS) { -- rc = status; -- goto done; -- } -- if (bap_setup(ai, rid, 0, BAP1) != SUCCESS) { -- rc = ERROR; -- goto done; -- } - // read the rid length field - bap_read(ai, pBuf, 2, BAP1); - // length for remaining part of rid -@@ -2596,30 +2510,34 @@ static int PC4500_readrid(struct airo_in - "airo: Rid %x has a length of %d which is too short\n", - (int)rid, - (int)len ); -- rc = ERROR; -- goto done; -+ return ERROR; - } - // read remainder of the rid -- rc = bap_read(ai, ((u16*)pBuf)+1, len, BAP1); --done: -- if (dolock) -- up(&ai->sem); -- return rc; -+ return bap_read(ai, ((u16*)pBuf)+1, len, BAP1); - } - -+static int PC4500_readrid(struct airo_info *ai, u16 rid, void *pBuf, int len) -+{ -+ unsigned long flags; -+ int rc; -+ -+ spin_lock_irqsave(&ai->main_lock, flags); -+ rc = PC4500_readrid_nolock(ai, rid, pBuf, len); -+ spin_unlock_irqrestore(&ai->main_lock, flags); -+ return rc; -+} - /* Note, that we are using BAP1 which is also used by transmit, so - * make sure this isnt called when a transmit is happening */ - static int PC4500_writerid(struct airo_info *ai, u16 rid, - const void *pBuf, int len) - { -- u16 status, dolock = 0; -+ u16 status; -+ unsigned long flags; - int rc = SUCCESS; - -- if (test_bit(FLAG_LOCKED, &ai->flags) == 0) { -- dolock = 1; -- if (down_interruptible(&ai->sem)) -- return ERROR; -- } -+ *(u16*)pBuf = cpu_to_le16((u16)len); -+ -+ spin_lock_irqsave(&ai->main_lock, flags); - // --- first access so that we can write the rid data - if ( (status = PC4500_accessrid(ai, rid, CMD_ACCESS)) != 0) { - rc = status; -@@ -2633,9 +2551,8 @@ static int PC4500_writerid(struct airo_i - bap_write(ai, pBuf, len, BAP1); - // ---now commit the rid data - rc = PC4500_accessrid(ai, rid, 0x100|CMD_ACCESS); -- done: -- if (dolock) -- up(&ai->sem); -+done: -+ spin_unlock_irqrestore(&ai->main_lock, flags); - return rc; - } - -@@ -2643,6 +2560,8 @@ static int PC4500_writerid(struct airo_i - one for now. */ - static u16 transmit_allocate(struct airo_info *ai, int lenPayload, int raw) - { -+ unsigned long flags; -+ unsigned int loop = 3000; - Cmd cmd; - Resp rsp; - u16 txFid; -@@ -2650,20 +2569,25 @@ static u16 transmit_allocate(struct airo - - cmd.cmd = CMD_ALLOCATETX; - cmd.parm0 = lenPayload; -- if (down_interruptible(&ai->sem)) -- return ERROR; -- if (issuecommand(ai, &cmd, &rsp) != SUCCESS) { -- txFid = 0; -+ spin_lock_irqsave(&ai->main_lock, flags); -+ if (issuecommand_nolock(ai, &cmd, &rsp) != SUCCESS) { -+ txFid = ERROR; - goto done; - } - if ( (rsp.status & 0xFF00) != 0) { -- txFid = 0; -+ txFid = ERROR; - goto done; - } -+ - /* wait for the allocate event/indication -- * It makes me kind of nervous that this can just sit here and spin, -- * but in practice it only loops like four times. */ -- while ( (IN4500(ai, EVSTAT) & EV_ALLOC) == 0) ; -+ * in practice it only loops like four times. */ -+ while (((IN4500(ai, EVSTAT) & EV_ALLOC) == 0) && --loop) -+ ; /* nada */ -+ if (!loop) { -+ txFid = ERROR; -+ goto done; -+ } -+ - // get the allocated fid and acknowledge - txFid = IN4500(ai, TXALLOCFID); - OUT4500(ai, EVACK, EV_ALLOC); -@@ -2685,7 +2609,7 @@ static u16 transmit_allocate(struct airo - bap_write(ai, &txControl, sizeof(txControl), BAP1); - - done: -- up(&ai->sem); -+ spin_unlock_irqrestore(&ai->main_lock, flags); - - return txFid; - } -@@ -2693,17 +2617,14 @@ done: - /* In general BAP1 is dedicated to transmiting packets. However, - since we need a BAP when accessing RIDs, we also use BAP1 for that. - Make sure the BAP1 spinlock is held when this is called. */ --static int transmit_802_3_packet(struct airo_info *ai, int len, char *pPacket) -+static int transmit_802_3_packet(struct airo_info *ai, u16 txFid, char *pPacket, int len) - { - u16 payloadLen; - Cmd cmd; - Resp rsp; - int miclen = 0; -- u16 txFid = len; - MICBuffer pMic; - -- len >>= 16; -- - if (len < ETH_ALEN * 2) { - printk( KERN_WARNING "Short packet %d\n", len ); - return ERROR; -@@ -2734,12 +2655,12 @@ static int transmit_802_3_packet(struct - memset( &cmd, 0, sizeof( cmd ) ); - cmd.cmd = CMD_TRANSMIT; - cmd.parm0 = txFid; -- if (issuecommand(ai, &cmd, &rsp) != SUCCESS) return ERROR; -+ if (issuecommand_nolock(ai, &cmd, &rsp) != SUCCESS) return ERROR; - if ( (rsp.status & 0xFF00) != 0) return ERROR; - return SUCCESS; - } - --static int transmit_802_11_packet(struct airo_info *ai, int len, char *pPacket) -+static int transmit_802_11_packet(struct airo_info *ai, u16 txFid, char *pPacket, int len) - { - u16 fc, payloadLen; - Cmd cmd; -@@ -2750,8 +2671,6 @@ static int transmit_802_11_packet(struct - u16 gaplen; - u8 gap[6]; - } gap; -- u16 txFid = len; -- len >>= 16; - gap.gaplen = 6; - - fc = le16_to_cpu(*(const u16*)pPacket); -@@ -2793,7 +2712,7 @@ static int transmit_802_11_packet(struct - memset( &cmd, 0, sizeof( cmd ) ); - cmd.cmd = CMD_TRANSMIT; - cmd.parm0 = txFid; -- if (issuecommand(ai, &cmd, &rsp) != SUCCESS) return ERROR; -+ if (issuecommand_nolock(ai, &cmd, &rsp) != SUCCESS) return ERROR; - if ( (rsp.status & 0xFF00) != 0) return ERROR; - return SUCCESS; - } -@@ -3857,10 +3776,7 @@ static int proc_BSSList_open( struct ino - - memset(&cmd, 0, sizeof(cmd)); - cmd.cmd=CMD_LISTBSS; -- if (down_interruptible(&ai->sem)) -- return -ERESTARTSYS; - issuecommand(ai, &cmd, &rsp); -- up(&ai->sem); - data->readlen = 0; - return 0; - } -@@ -3923,13 +3839,6 @@ static void timer_func( u_long data ) { - - if (!(apriv->flags & FLAG_FLASHING) && (linkstat != 0x400)) { - /* We don't have a link so try changing the authtype */ -- if (down_trylock(&apriv->sem) != 0) { -- apriv->timer.expires = RUN_AT(1); -- add_timer(&apriv->timer); -- return; -- } -- __set_bit(FLAG_LOCKED, &apriv->flags); -- - readConfigRid(apriv); - disable_MAC(apriv); - switch(apriv->config.authType) { -@@ -3955,8 +3864,6 @@ static void timer_func( u_long data ) { - apriv->need_commit = 1; - writeConfigRid(apriv); - enable_MAC(apriv, &rsp); -- clear_bit(FLAG_LOCKED, &apriv->flags); -- up(&apriv->sem); - - /* Schedule check to see if the change worked */ - apriv->timer.expires = RUN_AT(HZ*3); -@@ -4135,7 +4042,11 @@ static int airo_get_freq(struct net_devi - struct airo_info *local = dev->priv; - StatusRid status_rid; /* Card status info */ - -- readStatusRid(local, &status_rid); -+ if (local->config.opmode & MODE_STA_ESS) -+ status_rid.channel = local->config.channelSet; -+ else -+ readStatusRid(local, &status_rid); -+ - - /* Will return zero in infrastructure mode */ - #ifdef WEXT_USECHANNELS -@@ -4246,11 +4157,8 @@ static int airo_set_wap(struct net_devic - return -EINVAL; - else if (!memcmp(bcast, awrq->sa_data, ETH_ALEN)) { - memset(&cmd, 0, sizeof(cmd)); -- cmd.cmd=CMD_LOSE_SYNC; -- if (down_interruptible(&local->sem)) -- return -ERESTARTSYS; -+ cmd.cmd = CMD_LOSE_SYNC; - issuecommand(local, &cmd, &rsp); -- up(&local->sem); - } else { - memset(&APList_rid, 0, sizeof(APList_rid)); - APList_rid.len = sizeof(APList_rid); -@@ -5132,11 +5040,8 @@ static int airo_set_scan(struct net_devi - /* Initiate a scan command */ - memset(&cmd, 0, sizeof(cmd)); - cmd.cmd=CMD_LISTBSS; -- if (down_interruptible(&ai->sem)) -- return -ERESTARTSYS; - issuecommand(ai, &cmd, &rsp); - ai->scan_timestamp = jiffies; -- up(&ai->sem); - - /* At this point, just return to the user. */ - ---- linux-2.6.0-test1/drivers/net/wireless/ray_cs.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/net/wireless/ray_cs.c 2003-07-19 17:03:50.000000000 -0700 -@@ -25,6 +25,8 @@ - * - reorganize kmallocs in ray_attach, checking all for failure - * and releasing the previous allocations if one fails - * -+ * Daniele Bellucci - 07/10/2003 -+ * - Audit copy_to_user in ioctl(SIOCGIWESSID) - * - =============================================================================*/ - -@@ -1315,7 +1317,8 @@ static int ray_dev_ioctl(struct net_devi - /* Push it out ! */ - wrq->u.data.length = strlen(essid) + 1; - wrq->u.data.flags = 1; /* active */ -- copy_to_user(wrq->u.data.pointer, essid, sizeof(essid)); -+ if (copy_to_user(wrq->u.data.pointer, essid, sizeof(essid))) -+ err = -EFAULT; - } - break; - ---- linux-2.6.0-test1/drivers/parisc/led.c 2003-06-16 22:32:21.000000000 -0700 -+++ 25/drivers/parisc/led.c 2003-07-19 17:03:50.000000000 -0700 -@@ -14,6 +14,10 @@ - * TODO: - * - speed-up calculations with inlined assembler - * - interface to write to second row of LCD from /proc (if technically possible) -+ * -+ * Changes: -+ * - Audit copy_from_user in led_proc_write. -+ * Daniele Bellucci - */ - - #include -@@ -160,7 +164,9 @@ static int led_proc_write(struct file *f - - memset(lbuf, 0, count); - -- copy_from_user(lbuf, buf, count); -+ if (copy_from_user(lbuf, buf, count)) -+ return -EFAULT; -+ - cur = lbuf; - - /* skip initial spaces */ ---- linux-2.6.0-test1/drivers/parport/parport_pc.c 2003-06-14 12:18:35.000000000 -0700 -+++ 25/drivers/parport/parport_pc.c 2003-07-19 17:03:50.000000000 -0700 -@@ -94,7 +94,8 @@ static struct superio_struct { /* For Su - } superios[NR_SUPERIOS] __devinitdata = { {0,},}; - - static int user_specified __devinitdata = 0; --#if defined(CONFIG_PARPORT_PC_FIFO) || defined(CONFIG_PARPORT_PC_SUPERIO) -+#if defined(CONFIG_PARPORT_PC_SUPERIO) || \ -+ (defined(CONFIG_PARPORT_1284) && defined(CONFIG_PARPORT_PC_FIFO)) - static int verbose_probing; - #endif - static int registered_parport; -@@ -3116,7 +3117,8 @@ MODULE_PARM_DESC(irq, "IRQ line"); - MODULE_PARM(irq, "1-" __MODULE_STRING(PARPORT_PC_MAX_PORTS) "s"); - MODULE_PARM_DESC(dma, "DMA channel"); - MODULE_PARM(dma, "1-" __MODULE_STRING(PARPORT_PC_MAX_PORTS) "s"); --#if defined(CONFIG_PARPORT_PC_FIFO) || defined(CONFIG_PARPORT_PC_SUPERIO) -+#if defined(CONFIG_PARPORT_PC_SUPERIO) || \ -+ (defined(CONFIG_PARPORT_1284) && defined(CONFIG_PARPORT_PC_FIFO)) - MODULE_PARM_DESC(verbose_probing, "Log chit-chat during initialisation"); - MODULE_PARM(verbose_probing, "i"); - #endif ---- linux-2.6.0-test1/drivers/pci/hotplug/acpiphp_glue.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/pci/hotplug/acpiphp_glue.c 2003-07-19 17:03:50.000000000 -0700 -@@ -607,7 +607,7 @@ find_p2p_bridge (acpi_handle handle, u32 - - /* check if this bridge has ejectable slots */ - if (detect_ejectable_slots(handle) > 0) { -- dbg("found PCI-to-PCI bridge at PCI %s\n", dev->slot_name); -+ dbg("found PCI-to-PCI bridge at PCI %s\n", pci_name(dev)); - add_p2p_bridge(handle, seg, bus, device, function); - } - -@@ -693,7 +693,7 @@ static int power_on_slot (struct acpiphp - - if (func->flags & FUNC_HAS_PS0) { - dbg("%s: executing _PS0 on %s\n", __FUNCTION__, -- func->pci_dev->slot_name); -+ pci_name(func->pci_dev)); - status = acpi_evaluate_object(func->handle, "_PS0", NULL, NULL); - if (ACPI_FAILURE(status)) { - warn("%s: _PS0 failed\n", __FUNCTION__); ---- linux-2.6.0-test1/drivers/pci/hotplug/acpiphp_pci.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/pci/hotplug/acpiphp_pci.c 2003-07-19 17:03:50.000000000 -0700 -@@ -212,7 +212,7 @@ static int detect_used_resource (struct - int count; - struct pci_resource *res; - -- dbg("Device %s\n", dev->slot_name); -+ dbg("Device %s\n", pci_name(dev)); - - for (count = 0; address[count]; count++) { /* for 6 BARs */ - pci_read_config_dword(dev, address[count], &bar); -@@ -337,7 +337,7 @@ int acpiphp_init_func_resource (struct a - struct pci_dev *dev; - - dev = func->pci_dev; -- dbg("Hot-pluggable device %s\n", dev->slot_name); -+ dbg("Hot-pluggable device %s\n", pci_name(dev)); - - for (count = 0; address[count]; count++) { /* for 6 BARs */ - pci_read_config_dword(dev, address[count], &bar); ---- linux-2.6.0-test1/drivers/pci/hotplug.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/pci/hotplug.c 2003-07-19 17:03:50.000000000 -0700 -@@ -10,8 +10,6 @@ - #define DBG(x...) - #endif - --static void pci_free_resources(struct pci_dev *dev); -- - int pci_hotplug (struct device *dev, char **envp, int num_envp, - char *buffer, int buffer_size) - { -@@ -57,7 +55,7 @@ int pci_hotplug (struct device *dev, cha - - envp[i++] = scratch; - length += snprintf (scratch, buffer_size - length, "PCI_SLOT_NAME=%s", -- pdev->slot_name); -+ pci_name(pdev)); - if ((buffer_size - length <= 0) || (i >= num_envp)) - return -ENOMEM; - -@@ -172,105 +170,3 @@ int pci_visit_dev (struct pci_visit *fn, - } - EXPORT_SYMBOL(pci_visit_dev); - --static void pci_destroy_dev(struct pci_dev *dev) --{ -- pci_proc_detach_device(dev); -- device_unregister(&dev->dev); -- -- /* Remove the device from the device lists, and prevent any further -- * list accesses from this device */ -- spin_lock(&pci_bus_lock); -- list_del(&dev->bus_list); -- list_del(&dev->global_list); -- dev->bus_list.next = dev->bus_list.prev = NULL; -- dev->global_list.next = dev->global_list.prev = NULL; -- spin_unlock(&pci_bus_lock); -- -- pci_free_resources(dev); -- pci_dev_put(dev); --} -- --/** -- * pci_remove_device_safe - remove an unused hotplug device -- * @dev: the device to remove -- * -- * Delete the device structure from the device lists and -- * notify userspace (/sbin/hotplug), but only if the device -- * in question is not being used by a driver. -- * Returns 0 on success. -- */ --int pci_remove_device_safe(struct pci_dev *dev) --{ -- if (pci_dev_driver(dev)) -- return -EBUSY; -- pci_destroy_dev(dev); -- return 0; --} --EXPORT_SYMBOL(pci_remove_device_safe); -- --static void --pci_free_resources(struct pci_dev *dev) --{ -- int i; -- -- for (i = 0; i < PCI_NUM_RESOURCES; i++) { -- struct resource *res = dev->resource + i; -- if (res->parent) -- release_resource(res); -- } --} -- --/** -- * pci_remove_bus_device - remove a PCI device and any children -- * @dev: the device to remove -- * -- * Remove a PCI device from the device lists, informing the drivers -- * that the device has been removed. We also remove any subordinate -- * buses and children in a depth-first manner. -- * -- * For each device we remove, delete the device structure from the -- * device lists, remove the /proc entry, and notify userspace -- * (/sbin/hotplug). -- */ --void pci_remove_bus_device(struct pci_dev *dev) --{ -- if (dev->subordinate) { -- struct pci_bus *b = dev->subordinate; -- -- pci_remove_behind_bridge(dev); -- pci_proc_detach_bus(b); -- -- spin_lock(&pci_bus_lock); -- list_del(&b->node); -- spin_unlock(&pci_bus_lock); -- -- kfree(b); -- dev->subordinate = NULL; -- } -- -- pci_destroy_dev(dev); --} -- --/** -- * pci_remove_behind_bridge - remove all devices behind a PCI bridge -- * @dev: PCI bridge device -- * -- * Remove all devices on the bus, except for the parent bridge. -- * This also removes any child buses, and any devices they may -- * contain in a depth-first manner. -- */ --void pci_remove_behind_bridge(struct pci_dev *dev) --{ -- struct list_head *l, *n; -- -- if (dev->subordinate) { -- list_for_each_safe(l, n, &dev->subordinate->devices) { -- struct pci_dev *dev = pci_dev_b(l); -- -- pci_remove_bus_device(dev); -- } -- } --} -- --EXPORT_SYMBOL(pci_remove_bus_device); --EXPORT_SYMBOL(pci_remove_behind_bridge); ---- linux-2.6.0-test1/drivers/pci/hotplug/cpci_hotplug_core.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/pci/hotplug/cpci_hotplug_core.c 2003-07-19 17:03:50.000000000 -0700 -@@ -427,34 +427,6 @@ cpci_hp_unregister_bus(struct pci_bus *b - return 0; - } - --struct slot * --cpci_find_slot(struct pci_bus *bus, unsigned int devfn) --{ -- struct slot *slot; -- struct slot *found; -- struct list_head *tmp; -- -- if(!bus) { -- return NULL; -- } -- -- spin_lock(&list_lock); -- if(!slots) { -- spin_unlock(&list_lock); -- return NULL; -- } -- found = NULL; -- list_for_each(tmp, &slot_list) { -- slot = list_entry(tmp, struct slot, slot_list); -- if(slot->bus == bus && slot->devfn == devfn) { -- found = slot; -- break; -- } -- } -- spin_unlock(&list_lock); -- return found; --} -- - /* This is the interrupt mode interrupt handler */ - irqreturn_t - cpci_hp_intr(int irq, void *data, struct pt_regs *regs) -@@ -924,6 +896,5 @@ EXPORT_SYMBOL_GPL(cpci_hp_register_contr - EXPORT_SYMBOL_GPL(cpci_hp_unregister_controller); - EXPORT_SYMBOL_GPL(cpci_hp_register_bus); - EXPORT_SYMBOL_GPL(cpci_hp_unregister_bus); --EXPORT_SYMBOL_GPL(cpci_find_slot); - EXPORT_SYMBOL_GPL(cpci_hp_start); - EXPORT_SYMBOL_GPL(cpci_hp_stop); ---- linux-2.6.0-test1/drivers/pci/hotplug/cpci_hotplug.h 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/pci/hotplug/cpci_hotplug.h 2003-07-19 17:03:50.000000000 -0700 -@@ -75,7 +75,6 @@ extern int cpci_hp_register_controller(s - extern int cpci_hp_unregister_controller(struct cpci_hp_controller *controller); - extern int cpci_hp_register_bus(struct pci_bus *bus, u8 first, u8 last); - extern int cpci_hp_unregister_bus(struct pci_bus *bus); --extern struct slot *cpci_find_slot(struct pci_bus *bus, unsigned int devfn); - extern int cpci_hp_start(void); - extern int cpci_hp_stop(void); - ---- linux-2.6.0-test1/drivers/pci/hotplug/cpci_hotplug_pci.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/pci/hotplug/cpci_hotplug_pci.c 2003-07-19 17:03:50.000000000 -0700 -@@ -448,7 +448,7 @@ static int cpci_configure_bridge(struct - } - - static int configure_visit_pci_dev(struct pci_dev_wrapped *wrapped_dev, -- struct pci_bus_wrapped *wrapped_bus) -+ struct pci_bus_wrapped *wrapped_bus) - { - int rc; - struct pci_dev *dev = wrapped_dev->dev; -@@ -461,8 +461,8 @@ static int configure_visit_pci_dev(struc - * We need to fix up the hotplug representation with the Linux - * representation. - */ -- slot = cpci_find_slot(dev->bus, dev->devfn); -- if(slot) { -+ if(wrapped_dev->data) { -+ slot = (struct slot*) wrapped_dev->data; - slot->dev = dev; - } - -@@ -494,9 +494,7 @@ static int unconfigure_visit_pci_dev_pha - return -ENODEV; - - /* Remove the Linux representation */ -- if(pci_remove_device_safe(dev) == 0) { -- kfree(dev); -- } else { -+ if(pci_remove_device_safe(dev)) { - err("Could not remove device\n"); - return -1; - } -@@ -504,8 +502,8 @@ static int unconfigure_visit_pci_dev_pha - /* - * Now remove the hotplug representation. - */ -- slot = cpci_find_slot(dev->bus, dev->devfn); -- if(slot) { -+ if(wrapped_dev->data) { -+ slot = (struct slot*) wrapped_dev->data; - slot->dev = NULL; - } else { - dbg("No hotplug representation for %02x:%02x.%x", -@@ -574,13 +572,18 @@ int cpci_configure_slot(struct slot* slo - - /* Still NULL? Well then scan for it! */ - if(slot->dev == NULL) { -+ int n; - dbg("pci_dev still null"); - - /* - * This will generate pci_dev structures for all functions, but - * we will only call this case when lookup fails. - */ -- slot->dev = pci_scan_slot(slot->bus, slot->devfn); -+ n = pci_scan_slot(slot->bus, slot->devfn); -+ dbg("%s: pci_scan_slot returned %d", __FUNCTION__, n); -+ if(n > 0) -+ pci_bus_add_devices(slot->bus); -+ slot->dev = pci_find_slot(slot->bus->number, slot->devfn); - if(slot->dev == NULL) { - err("Could not find PCI device for slot %02x", slot->number); - return 0; -@@ -603,6 +606,10 @@ int cpci_configure_slot(struct slot* slo - continue; - wrapped_dev.dev = dev; - wrapped_bus.bus = slot->dev->bus; -+ if(i) -+ wrapped_dev.data = NULL; -+ else -+ wrapped_dev.data = (void*) slot; - rc = pci_visit_dev(&configure_functions, &wrapped_dev, &wrapped_bus); - } - } -@@ -635,9 +642,14 @@ int cpci_unconfigure_slot(struct slot* s - if(dev) { - wrapped_dev.dev = dev; - wrapped_bus.bus = dev->bus; -+ if(i) -+ wrapped_dev.data = NULL; -+ else -+ wrapped_dev.data = (void*) slot; - dbg("%s - unconfigure phase 2", __FUNCTION__); - rc = pci_visit_dev(&unconfigure_functions_phase2, -- &wrapped_dev, &wrapped_bus); -+ &wrapped_dev, -+ &wrapped_bus); - if(rc) - break; - } ---- linux-2.6.0-test1/drivers/pci/hotplug/Kconfig 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/pci/hotplug/Kconfig 2003-07-19 17:03:50.000000000 -0700 -@@ -99,22 +99,17 @@ config HOTPLUG_PCI_ACPI - When in doubt, say N. - - config HOTPLUG_PCI_CPCI -- tristate "CompactPCI Hotplug driver" -+ bool "CompactPCI Hotplug driver" - depends on HOTPLUG_PCI - help - Say Y here if you have a CompactPCI system card with CompactPCI - hotswap support per the PICMG 2.1 specification. - -- This code is also available as a module ( = code which can be -- inserted in and removed from the running kernel whenever you want). -- The module will be called cpci_hotplug. If you want to compile it -- as a module, say M here and read . -- - When in doubt, say N. - - config HOTPLUG_PCI_CPCI_ZT5550 - tristate "Ziatech ZT5550 CompactPCI Hotplug driver" -- depends on HOTPLUG_PCI_CPCI && X86 -+ depends on HOTPLUG_PCI && HOTPLUG_PCI_CPCI && X86 - help - Say Y here if you have an Performance Technologies (formerly Intel, - formerly just Ziatech) Ziatech ZT5550 CompactPCI system card. -@@ -128,7 +123,7 @@ config HOTPLUG_PCI_CPCI_ZT5550 - - config HOTPLUG_PCI_CPCI_GENERIC - tristate "Generic port I/O CompactPCI Hotplug driver" -- depends on HOTPLUG_PCI_CPCI && X86 -+ depends on HOTPLUG_PCI && HOTPLUG_PCI_CPCI && X86 - help - Say Y here if you have a CompactPCI system card that exposes the #ENUM - hotswap signal as a bit in a system register that can be read through ---- linux-2.6.0-test1/drivers/pci/Makefile 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/pci/Makefile 2003-07-19 17:03:50.000000000 -0700 -@@ -2,7 +2,7 @@ - # Makefile for the PCI bus specific drivers. - # - --obj-y += access.o bus.o probe.o pci.o pool.o quirks.o \ -+obj-y += access.o bus.o probe.o remove.o pci.o pool.o quirks.o \ - names.o pci-driver.o search.o pci-sysfs.o - obj-$(CONFIG_PM) += power.o - obj-$(CONFIG_PROC_FS) += proc.o ---- linux-2.6.0-test1/drivers/pci/pci.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/pci/pci.c 2003-07-19 17:03:50.000000000 -0700 -@@ -506,7 +506,7 @@ err_out: - pci_resource_flags(pdev, bar) & IORESOURCE_IO ? "I/O" : "mem", - bar + 1, /* PCI BAR # */ - pci_resource_len(pdev, bar), pci_resource_start(pdev, bar), -- pdev->slot_name); -+ pci_name(pdev)); - return -EBUSY; - } - -@@ -555,7 +555,7 @@ err_out: - pci_resource_flags(pdev, i) & IORESOURCE_IO ? "I/O" : "mem", - i + 1, /* PCI BAR # */ - pci_resource_len(pdev, i), pci_resource_start(pdev, i), -- pdev->slot_name); -+ pci_name(pdev)); - while(--i >= 0) - pci_release_region(pdev, i); - -@@ -576,7 +576,7 @@ pci_set_master(struct pci_dev *dev) - - pci_read_config_word(dev, PCI_COMMAND, &cmd); - if (! (cmd & PCI_COMMAND_MASTER)) { -- DBG("PCI: Enabling bus mastering for device %s\n", dev->slot_name); -+ DBG("PCI: Enabling bus mastering for device %s\n", pci_name(dev)); - cmd |= PCI_COMMAND_MASTER; - pci_write_config_word(dev, PCI_COMMAND, cmd); - } -@@ -620,7 +620,7 @@ pci_generic_prep_mwi(struct pci_dev *dev - return 0; - - printk(KERN_WARNING "PCI: cache line size of %d is not supported " -- "by device %s\n", pci_cache_line_size << 2, dev->slot_name); -+ "by device %s\n", pci_cache_line_size << 2, pci_name(dev)); - - return -EINVAL; - } -@@ -653,7 +653,7 @@ pci_set_mwi(struct pci_dev *dev) - - pci_read_config_word(dev, PCI_COMMAND, &cmd); - if (! (cmd & PCI_COMMAND_INVALIDATE)) { -- DBG("PCI: Enabling Mem-Wr-Inval for device %s\n", dev->slot_name); -+ DBG("PCI: Enabling Mem-Wr-Inval for device %s\n", pci_name(dev)); - cmd |= PCI_COMMAND_INVALIDATE; - pci_write_config_word(dev, PCI_COMMAND, cmd); - } ---- linux-2.6.0-test1/drivers/pci/pool.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/pci/pool.c 2003-07-19 17:03:50.000000000 -0700 -@@ -233,7 +233,7 @@ pci_pool_destroy (struct pci_pool *pool) - struct pci_page, page_list); - if (is_page_busy (pool->blocks_per_page, page->bitmap)) { - printk (KERN_ERR "pci_pool_destroy %s/%s, %p busy\n", -- pool->dev ? pool->dev->slot_name : NULL, -+ pool->dev ? pci_name(pool->dev) : NULL, - pool->name, page->vaddr); - /* leak the still-in-use consistent memory */ - list_del (&page->page_list); -@@ -359,7 +359,7 @@ pci_pool_free (struct pci_pool *pool, vo - - if ((page = pool_find_page (pool, dma)) == 0) { - printk (KERN_ERR "pci_pool_free %s/%s, %p/%lx (bad dma)\n", -- pool->dev ? pool->dev->slot_name : NULL, -+ pool->dev ? pci_name(pool->dev) : NULL, - pool->name, vaddr, (unsigned long) dma); - return; - } -@@ -372,13 +372,13 @@ pci_pool_free (struct pci_pool *pool, vo - #ifdef CONFIG_DEBUG_SLAB - if (((dma - page->dma) + (void *)page->vaddr) != vaddr) { - printk (KERN_ERR "pci_pool_free %s/%s, %p (bad vaddr)/%Lx\n", -- pool->dev ? pool->dev->slot_name : NULL, -+ pool->dev ? pci_name(pool->dev) : NULL, - pool->name, vaddr, (unsigned long long) dma); - return; - } - if (page->bitmap [map] & (1UL << block)) { - printk (KERN_ERR "pci_pool_free %s/%s, dma %Lx already free\n", -- pool->dev ? pool->dev->slot_name : NULL, -+ pool->dev ? pci_name(pool->dev) : NULL, - pool->name, (unsigned long long)dma); - return; - } ---- linux-2.6.0-test1/drivers/pci/probe.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/pci/probe.c 2003-07-19 17:04:50.000000000 -0700 -@@ -176,7 +176,7 @@ void __devinit pci_read_bridge_bases(str - limit |= (io_limit_hi << 16); - } - -- if (base && base <= limit) { -+ if (base <= limit) { - res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO; - res->start = base; - res->end = limit + 0xfff; -@@ -187,7 +187,7 @@ void __devinit pci_read_bridge_bases(str - pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo); - base = (mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16; - limit = (mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16; -- if (base && base <= limit) { -+ if (base <= limit) { - res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM; - res->start = base; - res->end = limit + 0xfffff; -@@ -213,7 +213,7 @@ void __devinit pci_read_bridge_bases(str - } - #endif - } -- if (base && base <= limit) { -+ if (base <= limit) { - res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM | IORESOURCE_PREFETCH; - res->start = base; - res->end = limit + 0xfffff; ---- linux-2.6.0-test1/drivers/pci/quirks.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/pci/quirks.c 2003-07-19 17:03:50.000000000 -0700 -@@ -33,7 +33,7 @@ static void __devinit quirk_passive_rele - while ((d = pci_find_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_0, d))) { - pci_read_config_byte(d, 0x82, &dlc); - if (!(dlc & 1<<1)) { -- printk(KERN_ERR "PCI: PIIX3: Enabling Passive Release on %s\n", d->slot_name); -+ printk(KERN_ERR "PCI: PIIX3: Enabling Passive Release on %s\n", pci_name(d)); - dlc |= 1<<1; - pci_write_config_byte(d, 0x82, dlc); - } -@@ -437,7 +437,7 @@ static void __devinit quirk_via_irqpic(s - - if (new_irq != irq) { - printk(KERN_INFO "PCI: Via IRQ fixup for %s, from %d to %d\n", -- dev->slot_name, irq, new_irq); -+ pci_name(dev), irq, new_irq); - - udelay(15); - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); -@@ -598,7 +598,7 @@ static void __devinit quirk_ide_bases(st - return; - - printk(KERN_INFO "PCI: Ignoring BAR%d-%d of IDE controller %s\n", -- first_bar, last_bar, dev->slot_name); -+ first_bar, last_bar, pci_name(dev)); - } - - /* -@@ -856,7 +856,7 @@ static void pci_do_fixups(struct pci_dev - (f->vendor == dev->vendor || f->vendor == (u16) PCI_ANY_ID) && - (f->device == dev->device || f->device == (u16) PCI_ANY_ID)) { - #ifdef DEBUG -- printk(KERN_INFO "PCI: Calling quirk %p for %s\n", f->hook, dev->slot_name); -+ printk(KERN_INFO "PCI: Calling quirk %p for %s\n", f->hook, pci_name(dev)); - #endif - f->hook(dev); - } ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/pci/remove.c 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,113 @@ -+#include -+#include -+#include "pci.h" -+ -+#undef DEBUG -+ -+#ifdef DEBUG -+#define DBG(x...) printk(x) -+#else -+#define DBG(x...) -+#endif -+ -+static void pci_free_resources(struct pci_dev *dev) -+{ -+ int i; -+ -+ for (i = 0; i < PCI_NUM_RESOURCES; i++) { -+ struct resource *res = dev->resource + i; -+ if (res->parent) -+ release_resource(res); -+ } -+} -+ -+static void pci_destroy_dev(struct pci_dev *dev) -+{ -+ pci_proc_detach_device(dev); -+ device_unregister(&dev->dev); -+ -+ /* Remove the device from the device lists, and prevent any further -+ * list accesses from this device */ -+ spin_lock(&pci_bus_lock); -+ list_del(&dev->bus_list); -+ list_del(&dev->global_list); -+ dev->bus_list.next = dev->bus_list.prev = NULL; -+ dev->global_list.next = dev->global_list.prev = NULL; -+ spin_unlock(&pci_bus_lock); -+ -+ pci_free_resources(dev); -+ pci_dev_put(dev); -+} -+ -+/** -+ * pci_remove_device_safe - remove an unused hotplug device -+ * @dev: the device to remove -+ * -+ * Delete the device structure from the device lists and -+ * notify userspace (/sbin/hotplug), but only if the device -+ * in question is not being used by a driver. -+ * Returns 0 on success. -+ */ -+int pci_remove_device_safe(struct pci_dev *dev) -+{ -+ if (pci_dev_driver(dev)) -+ return -EBUSY; -+ pci_destroy_dev(dev); -+ return 0; -+} -+EXPORT_SYMBOL(pci_remove_device_safe); -+ -+/** -+ * pci_remove_bus_device - remove a PCI device and any children -+ * @dev: the device to remove -+ * -+ * Remove a PCI device from the device lists, informing the drivers -+ * that the device has been removed. We also remove any subordinate -+ * buses and children in a depth-first manner. -+ * -+ * For each device we remove, delete the device structure from the -+ * device lists, remove the /proc entry, and notify userspace -+ * (/sbin/hotplug). -+ */ -+void pci_remove_bus_device(struct pci_dev *dev) -+{ -+ if (dev->subordinate) { -+ struct pci_bus *b = dev->subordinate; -+ -+ pci_remove_behind_bridge(dev); -+ pci_proc_detach_bus(b); -+ -+ spin_lock(&pci_bus_lock); -+ list_del(&b->node); -+ spin_unlock(&pci_bus_lock); -+ -+ kfree(b); -+ dev->subordinate = NULL; -+ } -+ -+ pci_destroy_dev(dev); -+} -+ -+/** -+ * pci_remove_behind_bridge - remove all devices behind a PCI bridge -+ * @dev: PCI bridge device -+ * -+ * Remove all devices on the bus, except for the parent bridge. -+ * This also removes any child buses, and any devices they may -+ * contain in a depth-first manner. -+ */ -+void pci_remove_behind_bridge(struct pci_dev *dev) -+{ -+ struct list_head *l, *n; -+ -+ if (dev->subordinate) { -+ list_for_each_safe(l, n, &dev->subordinate->devices) { -+ struct pci_dev *dev = pci_dev_b(l); -+ -+ pci_remove_bus_device(dev); -+ } -+ } -+} -+ -+EXPORT_SYMBOL(pci_remove_bus_device); -+EXPORT_SYMBOL(pci_remove_behind_bridge); ---- linux-2.6.0-test1/drivers/pci/setup-bus.c 2003-06-14 12:18:35.000000000 -0700 -+++ 25/drivers/pci/setup-bus.c 2003-07-19 17:03:50.000000000 -0700 -@@ -81,7 +81,7 @@ pci_setup_cardbus(struct pci_bus *bus) - struct pci_bus_region region; - - printk("PCI: Bus %d, cardbus bridge: %s\n", -- bus->number, bridge->slot_name); -+ bus->number, pci_name(bridge)); - - pcibios_resource_to_bus(bridge, ®ion, bus->resource[0]); - if (bus->resource[0]->flags & IORESOURCE_IO) { -@@ -344,7 +344,7 @@ pbus_size_mem(struct pci_bus *bus, unsig - if (order > 11) { - printk(KERN_WARNING "PCI: region %s/%d " - "too large: %lx-%lx\n", -- dev->slot_name, i, r->start, r->end); -+ pci_name(dev), i, r->start, r->end); - r->flags = 0; - continue; - } -@@ -513,7 +513,7 @@ pci_bus_assign_resources(struct pci_bus - - default: - printk(KERN_INFO "PCI: not setting up bridge %s " -- "for bus %d\n", dev->slot_name, b->number); -+ "for bus %d\n", pci_name(dev), b->number); - break; - } - } ---- linux-2.6.0-test1/drivers/pci/setup-res.c 2003-06-14 12:18:32.000000000 -0700 -+++ 25/drivers/pci/setup-res.c 2003-07-19 17:03:50.000000000 -0700 -@@ -68,7 +68,7 @@ pci_update_resource(struct pci_dev *dev, - - if ((new ^ check) & mask) { - printk(KERN_ERR "PCI: Error while updating region " -- "%s/%d (%08x != %08x)\n", dev->slot_name, resno, -+ "%s/%d (%08x != %08x)\n", pci_name(dev), resno, - new, check); - } - -@@ -80,7 +80,7 @@ pci_update_resource(struct pci_dev *dev, - if (check != new) { - printk(KERN_ERR "PCI: Error updating region " - "%s/%d (high %08x != %08x)\n", -- dev->slot_name, resno, new, check); -+ pci_name(dev), resno, new, check); - } - } - } -@@ -101,7 +101,7 @@ pci_claim_resource(struct pci_dev *dev, - printk(KERN_ERR "PCI: %s region %d of %s %s [%lx:%lx]\n", - root ? "Address space collision on" : - "No parent found for", -- resource, dtype, dev->slot_name, res->start, res->end); -+ resource, dtype, pci_name(dev), res->start, res->end); - } - - return err; -@@ -139,7 +139,7 @@ int pci_assign_resource(struct pci_dev * - - if (ret) { - printk(KERN_ERR "PCI: Failed to allocate resource %d(%lx-%lx) for %s\n", -- resno, res->start, res->end, dev->slot_name); -+ resno, res->start, res->end, pci_name(dev)); - } else if (resno < PCI_BRIDGE_RESOURCES) { - pci_update_resource(dev, res, resno); - } ---- linux-2.6.0-test1/drivers/pcmcia/hd64465_ss.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/pcmcia/hd64465_ss.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,5 +1,5 @@ - /* -- * $Id$ -+ * $Id: hd64465_ss.c,v 1.7 2003/07/06 14:42:50 lethal Exp $ - * - * Device driver for the PCMCIA controller module of the - * Hitachi HD64465 handheld companion chip. -@@ -24,7 +24,6 @@ - * - * by Greg Banks - * (c) 2000 PocketPenguins Inc -- * - */ - - #include -@@ -37,28 +36,26 @@ - #include - #include - #include --#include -+#include - #include - - #include --#include -+#include -+#include - - #include - #include - #include -+#include -+#include - #include - #include --#include - #include "cs_internal.h" - - #define MODNAME "hd64465_ss" - - /* #define HD64465_DEBUG 1 */ - --#ifndef HD64465_DEBUG --#define HD64465_DEBUG 0 --#endif -- - #if HD64465_DEBUG - #define DPRINTK(args...) printk(MODNAME ": " args) - #else -@@ -66,7 +63,8 @@ - #endif - - extern int hd64465_io_debug; -- -+extern void * p3_ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags); -+extern void p3_iounmap(void *addr); - - /*============================================================*/ - -@@ -74,37 +72,22 @@ extern int hd64465_io_debug; - - typedef struct hs_socket_t - { -+ unsigned int number; - u_int irq; - u_long mem_base; -+ void *io_base; - u_long mem_length; -- void (*handler)(void *info, u_int events); -- void *handler_info; -- u_int pending_events; - u_int ctrl_base; - socket_state_t state; - pccard_io_map io_maps[MAX_IO_WIN]; - pccard_mem_map mem_maps[MAX_WIN]; -- struct vm_struct *io_vma; /* allocated kernel vm for mapping IO space */ -+ struct pcmcia_socket socket; - } hs_socket_t; - --#define HS_MAX_SOCKETS 2 --static hs_socket_t hs_sockets[HS_MAX_SOCKETS]; --static spinlock_t hs_pending_event_lock = SPIN_LOCK_UNLOCKED; - --/* Calculate socket number from ptr into hs_sockets[] */ --#define hs_sockno(sp) (sp - hs_sockets) - --static socket_cap_t hs_socket_cap = --{ -- SS_CAP_PCCARD /* support 16 bit cards */ -- |SS_CAP_STATIC_MAP /* mappings are fixed in host memory */ -- , -- 0xffde/*0xffff*/, /* IRQs mapped in s/w so can do any, really */ -- HD64465_PCC_WINDOW, /* 16MB fixed window size */ -- 0, /* no PCI support */ -- 0, /* no CardBus support */ -- 0 /* no bus operations needed */ --}; -+#define HS_MAX_SOCKETS 2 -+static hs_socket_t hs_sockets[HS_MAX_SOCKETS]; - - #define hs_in(sp, r) inb((sp)->ctrl_base + (r)) - #define hs_out(sp, v, r) outb(v, (sp)->ctrl_base + (r)) -@@ -179,7 +162,7 @@ static void hs_socket_enable_ireq(hs_soc - { - unsigned short cscier; - -- DPRINTK("hs_socket_enable_ireq(sock=%d)\n", hs_sockno(sp)); -+ DPRINTK("hs_socket_enable_ireq(sock=%d)\n", sp->number); - - cscier = hs_in(sp, CSCIER); - cscier &= ~HD64465_PCCCSCIER_PIREQE_MASK; -@@ -191,7 +174,7 @@ static void hs_socket_disable_ireq(hs_so - { - unsigned short cscier; - -- DPRINTK("hs_socket_disable_ireq(sock=%d)\n", hs_sockno(sp)); -+ DPRINTK("hs_socket_disable_ireq(sock=%d)\n", sp->number); - - cscier = hs_in(sp, CSCIER); - cscier &= ~HD64465_PCCCSCIER_PIREQE_MASK; -@@ -255,7 +238,7 @@ static struct hw_interrupt_type hd64465_ - */ - static void hs_map_irq(hs_socket_t *sp, unsigned int irq) - { -- DPRINTK("hs_map_irq(sock=%d irq=%d)\n", hs_sockno(sp), irq); -+ DPRINTK("hs_map_irq(sock=%d irq=%d)\n", sp->number, irq); - - if (irq >= HS_NUM_MAPPED_IRQS) - return; -@@ -272,7 +255,7 @@ static void hs_map_irq(hs_socket_t *sp, - */ - static void hs_unmap_irq(hs_socket_t *sp, unsigned int irq) - { -- DPRINTK("hs_unmap_irq(sock=%d irq=%d)\n", hs_sockno(sp), irq); -+ DPRINTK("hs_unmap_irq(sock=%d irq=%d)\n", sp->number, irq); - - if (irq >= HS_NUM_MAPPED_IRQS) - return; -@@ -301,7 +284,7 @@ static int hs_set_voltages(hs_socket_t * - { - u_int psr; - u_int vcci = 0; -- u_int sock = hs_sockno(sp); -+ u_int sock = sp->number; - - DPRINTK("hs_set_voltage(%d, %d, %d)\n", sock, Vcc, Vpp); - -@@ -359,13 +342,12 @@ static void hs_reset_socket(hs_socket_t - - /*============================================================*/ - --static int hs_init(unsigned int sock) -+static int hs_init(struct pcmcia_socket *s) - { -- hs_socket_t *sp = &hs_sockets[sock]; -+ hs_socket_t *sp = container_of(s, struct hs_socket_t, socket); - -- DPRINTK("hs_init(%d)\n", sock); -+ DPRINTK("hs_init(%d)\n", sp->number); - -- sp->pending_events = 0; - sp->state.Vcc = 0; - sp->state.Vpp = 0; - hs_set_voltages(sp, 0, 0); -@@ -375,9 +357,12 @@ static int hs_init(unsigned int sock) - - /*============================================================*/ - --static int hs_suspend(unsigned int sock) -+static int hs_suspend(struct pcmcia_socket *s) - { -- DPRINTK("hs_suspend(%d)\n", sock); -+#ifdef HD64465_DEBUG -+ hs_socket_t *sp = container_of(s, struct hs_socket_t, socket); -+ DPRINTK("hs_suspend(%d)\n", sp->number); -+#endif - - /* TODO */ - -@@ -386,32 +371,10 @@ static int hs_suspend(unsigned int sock) - - /*============================================================*/ - --static int hs_register_callback(unsigned int sock, -- void (*handler)(void *, unsigned int), void * info) --{ -- hs_socket_t *sp = &hs_sockets[sock]; -- -- DPRINTK("hs_register_callback(%d)\n", sock); -- sp->handler = handler; -- sp->handler_info = info; -- return 0; --} -- --/*============================================================*/ - --static int hs_inquire_socket(unsigned int sock, socket_cap_t *cap) -+static int hs_get_status(struct pcmcia_socket *s, u_int *value) - { -- DPRINTK("hs_inquire_socket(%d)\n", sock); -- -- *cap = hs_socket_cap; -- return 0; --} -- --/*============================================================*/ -- --static int hs_get_status(unsigned int sock, u_int *value) --{ -- hs_socket_t *sp = &hs_sockets[sock]; -+ hs_socket_t *sp = container_of(s, struct hs_socket_t, socket); - unsigned int isr; - u_int status = 0; - -@@ -473,9 +436,9 @@ static int hs_get_status(unsigned int so - - /*============================================================*/ - --static int hs_get_socket(unsigned int sock, socket_state_t *state) -+static int hs_get_socket(struct pcmcia_socket *s, socket_state_t *state) - { -- hs_socket_t *sp = &hs_sockets[sock]; -+ hs_socket_t *sp = container_of(s, struct hs_socket_t, socket); - - DPRINTK("hs_get_socket(%d)\n", sock); - -@@ -485,9 +448,9 @@ static int hs_get_socket(unsigned int so - - /*============================================================*/ - --static int hs_set_socket(unsigned int sock, socket_state_t *state) -+static int hs_set_socket(struct pcmcia_socket *s, socket_state_t *state) - { -- hs_socket_t *sp = &hs_sockets[sock]; -+ hs_socket_t *sp = container_of(s, struct hs_socket_t, socket); - u_long flags; - u_int changed; - unsigned short cscier; -@@ -495,12 +458,12 @@ static int hs_set_socket(unsigned int so - DPRINTK("hs_set_socket(sock=%d, flags=%x, csc_mask=%x, Vcc=%d, Vpp=%d, io_irq=%d)\n", - sock, state->flags, state->csc_mask, state->Vcc, state->Vpp, state->io_irq); - -- save_and_cli(flags); /* Don't want interrupts happening here */ -+ local_irq_save(flags); /* Don't want interrupts happening here */ - - if (state->Vpp != sp->state.Vpp || - state->Vcc != sp->state.Vcc) { - if (!hs_set_voltages(sp, state->Vcc, state->Vpp)) { -- restore_flags(flags); -+ local_irq_restore(flags); - return -EINVAL; - } - } -@@ -588,7 +551,7 @@ static int hs_set_socket(unsigned int so - /* hd64465_io_debug = 0; */ - sp->state = *state; - -- restore_flags(flags); -+ local_irq_restore(flags); - - #if HD64465_DEBUG > 10 - if (state->flags & SS_OUTPUT_ENA) -@@ -599,10 +562,11 @@ static int hs_set_socket(unsigned int so - - /*============================================================*/ - --static int hs_set_io_map(unsigned int sock, struct pccard_io_map *io) -+static int hs_set_io_map(struct pcmcia_socket *s, struct pccard_io_map *io) - { -- hs_socket_t *sp = &hs_sockets[sock]; -+ hs_socket_t *sp = container_of(s, struct hs_socket_t, socket); - int map = io->map; -+ int sock = sp->number; - struct pccard_io_map *sio; - pgprot_t prot; - -@@ -639,10 +603,9 @@ static int hs_set_io_map(unsigned int so - printk(KERN_INFO MODNAME ": MAP_0WS unimplemented\n"); - - if (io->flags & MAP_ACTIVE) { -- unsigned long pstart, psize, paddrbase, vaddrbase; -+ unsigned long pstart, psize, paddrbase; - - paddrbase = virt_to_phys((void*)(sp->mem_base + 2 * HD64465_PCC_WINDOW)); -- vaddrbase = (unsigned long)sp->io_vma->addr; - pstart = io->start & PAGE_MASK; - psize = ((io->stop + PAGE_SIZE) & PAGE_MASK) - pstart; - -@@ -653,26 +616,17 @@ static int hs_set_io_map(unsigned int so - * page will be mapped. But the code allows for weird cards - * that might want IO ports > 4K. - */ -- DPRINTK("remap_page_range(vaddr=0x%08lx, paddr=0x%08lx, size=0x%08lxx)\n", -- vaddrbase + pstart, paddrbase + pstart, psize); --#error This does not work. Firstly remap_page_range() uses current->mm for --#error the address space, which is wrong for kernel mappings. remap_page_range --#error also does flush_{cache,tlb}_range() which ONLY works for user mappings. --#error Next, remap_page_range() now wants to take a vm_area_struct arg. -- remap_page_range(vaddrbase + pstart, paddrbase + pstart, psize, prot); -+ sp->io_base = p3_ioremap(paddrbase + pstart, psize, pgprot_val(prot)); - - /* - * Change the mapping used by inb() outb() etc - */ -- hd64465_port_map( -- io->start, -+ hd64465_port_map(io->start, - io->stop - io->start + 1, -- vaddrbase + io->start,0); -+ (unsigned long)sp->io_base + io->start, 0); - } else { -- hd64465_port_unmap( -- sio->start, -- sio->stop - sio->start + 1); -- /* TODO: remap_page_range() to mark pages not present ? */ -+ hd64465_port_unmap(sio->start, sio->stop - sio->start + 1); -+ p3_iounmap(sp->io_base); - } - - *sio = *io; -@@ -681,9 +635,9 @@ static int hs_set_io_map(unsigned int so - - /*============================================================*/ - --static int hs_set_mem_map(unsigned int sock, struct pccard_mem_map *mem) -+static int hs_set_mem_map(struct pcmcia_socket *s, struct pccard_mem_map *mem) - { -- hs_socket_t *sp = &hs_sockets[sock]; -+ hs_socket_t *sp = container_of(s, struct hs_socket_t, socket); - struct pccard_mem_map *smem; - int map = mem->map; - unsigned long paddr, size; -@@ -722,13 +676,6 @@ static int hs_set_mem_map(unsigned int s - - /*============================================================*/ - --static void hs_proc_setup(unsigned int sock, struct proc_dir_entry *base) --{ -- DPRINTK("hs_proc_setup(%d)\n", sock); --} -- --/*============================================================*/ -- - /* - * This function is registered with the HD64465 glue code to do a - * secondary demux step on the PCMCIA interrupts. It handles -@@ -756,35 +703,9 @@ static int hs_irq_demux(int irq, void *d - - /* - * Interrupt handling routine. -- * -- * This uses the schedule_work() technique to cause reportable events -- * such as card insertion and removal to be handled in keventd's -- * process context. - */ - -- --static void hs_events_bh(void *dummy) --{ -- hs_socket_t *sp; -- u_int events; -- int i; -- -- for (i=0; ipending_events; -- sp->pending_events = 0; -- spin_unlock_irq(&hs_pending_event_lock); -- -- if (sp->handler) -- sp->handler(sp->handler_info, events); -- } --} -- --static DECLARE_WORK(hs_events_task, hs_events_bh, NULL); -- --static void hs_interrupt(int irq, void *dev, struct pt_regs *regs) -+static irqreturn_t hs_interrupt(int irq, void *dev, struct pt_regs *regs) - { - hs_socket_t *sp = (hs_socket_t *)dev; - u_int events = 0; -@@ -801,7 +722,7 @@ static void hs_interrupt(int irq, void * - if ((hs_in(sp, ISR) & HD64465_PCCISR_PCD_MASK) != 0) { - printk(KERN_NOTICE MODNAME - ": socket %d, card not a supported card type or not inserted correctly\n", -- hs_sockno(sp)); -+ sp->number); - /* Don't do the rest unless a card is present */ - cscr &= ~(HD64465_PCCCSCR_PCDC| - HD64465_PCCCSCR_PRC| -@@ -839,34 +760,22 @@ static void hs_interrupt(int irq, void * - - hs_out(sp, cscr, CSCR); - -- if (events) { -- /* -- * Arrange for events to be reported to the registered -- * event handler function (from CardServices) in a process -- * context (keventd) "soon". -- */ -- spin_lock(&hs_pending_event_lock); -- sp->pending_events |= events; -- spin_unlock(&hs_pending_event_lock); -- -- schedule_work(&hs_events_task); -- } -+ if (events) -+ pcmcia_parse_events(&sp->socket, events); -+ -+ return IRQ_HANDLED; - } - - /*============================================================*/ - - static struct pccard_operations hs_operations = { -- .owner = THIS_MODULE, - .init = hs_init, - .suspend = hs_suspend, -- .register_callback = hs_register_callback, -- .inquire_socket = hs_inquire_socket, - .get_status = hs_get_status, - .get_socket = hs_get_socket, - .set_socket = hs_set_socket, - .set_io_map = hs_set_io_map, - .set_mem_map = hs_set_mem_map, -- .proc_setup = hs_proc_setup, - }; - - static int hs_init_socket(hs_socket_t *sp, int irq, unsigned long mem_base, -@@ -886,9 +795,6 @@ static int hs_init_socket(hs_socket_t *s - for (i=0 ; imem_maps[i].map = i; - -- if ((sp->io_vma = get_vm_area(HS_IO_MAP_SIZE, VM_IOREMAP)) == 0) -- return -ENOMEM; -- - hd64465_register_irq_demux(sp->irq, hs_irq_demux, sp); - - if ((err = request_irq(sp->irq, hs_interrupt, SA_INTERRUPT, MODNAME, sp)) < 0) -@@ -925,9 +831,8 @@ static int hs_init_socket(hs_socket_t *s - - hs_reset_socket(sp, 1); - -- printk(KERN_INFO "HD64465 PCMCIA bridge socket %d at 0x%08lx irq %d io window %ldK@0x%08lx\n", -- i, sp->mem_base, sp->irq, -- sp->io_vma->size>>10, (unsigned long)sp->io_vma->addr); -+ printk(KERN_INFO "HD64465 PCMCIA bridge socket %d at 0x%08lx irq %d\n", -+ i, sp->mem_base, sp->irq); - - return 0; - } -@@ -935,7 +840,10 @@ static int hs_init_socket(hs_socket_t *s - static void hs_exit_socket(hs_socket_t *sp) - { - unsigned short cscier, gcr; -+ unsigned long flags; - -+ local_irq_save(flags); -+ - /* turn off interrupts in hardware */ - cscier = hs_in(sp, CSCIER); - cscier = (cscier & IER_MASK) | IER_OFF; -@@ -955,19 +863,13 @@ static void hs_exit_socket(hs_socket_t * - free_irq(sp->irq, hs_interrupt); - hd64465_unregister_irq_demux(sp->irq); - } -- if (sp->io_vma != 0) -- vfree(sp->io_vma->addr); --} - --static struct pcmcia_socket_class_data hd64465_data = { -- .nsock = HS_MAX_SOCKETS, -- .ops = &hs_operations, --}; -+ local_irq_restore(flags); -+} - - static struct device_driver hd64465_driver = { - .name = "hd64465-pcmcia", - .bus = &platform_bus_type, -- .devclass = &pcmcia_socket_class, - .suspend = pcmcia_socket_dev_suspend, - .resume = pcmcia_socket_dev_resume, - }; -@@ -996,7 +898,8 @@ static int __init init_hs(void) - } - - /* hd64465_io_debug = 1; */ -- register_driver(&hd64465_driver); -+ if (driver_register(&hd64465_driver)) -+ return -EINVAL; - - /* Wake both sockets out of STANDBY mode */ - /* TODO: wait 15ms */ -@@ -1014,14 +917,22 @@ static int __init init_hs(void) - v |= HD64465_PCCCSCR_PSWSEL; - outb(v, HD64465_REG_PCC0CSCR); - -- hs_set_voltages(&hs_sockets[0], 0, 0); -- hs_set_voltages(&hs_sockets[1], 0, 0); -- - /* - * Setup hs_sockets[] structures and request system resources. - * TODO: on memory allocation failure, power down the socket - * before quitting. - */ -+ for (i=0; iprivate[3]) - #define rl_config(socket) ((socket)->private[4]) - -+static void ricoh_zoom_video(struct pcmcia_socket *sock, int onoff) -+{ -+ u8 reg; -+ struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); -+ -+ reg = config_readb(socket, RL5C4XX_MISC_CONTROL); -+ if (onoff) -+ /* Zoom zoom, we will all go together, zoom zoom, zoom zoom */ -+ reg |= RL5C4XX_ZV_ENABLE; -+ else -+ reg &= ~RL5C4XX_ZV_ENABLE; -+ -+ config_writeb(socket, RL5C4XX_MISC_CONTROL, reg); -+} -+ -+static void ricoh_set_zv(struct pcmcia_socket *sock) -+{ -+ struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); -+ if(socket->dev->vendor == PCI_VENDOR_ID_RICOH) -+ { -+ switch(socket->dev->device) -+ { -+ /* There may be more .. */ -+ case PCI_DEVICE_ID_RICOH_RL5C478: -+ sock->zoom_video = ricoh_zoom_video; -+ break; -+ } -+ } -+} -+ - static int ricoh_init(struct pcmcia_socket *sock) - { - struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); - yenta_init(sock); -+ ricoh_set_zv(sock); - - config_writew(socket, RL5C4XX_MISC, rl_misc(socket)); - config_writew(socket, RL5C4XX_16BIT_CTL, rl_ctl(socket)); ---- linux-2.6.0-test1/drivers/pcmcia/ti113x.h 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/pcmcia/ti113x.h 2003-07-19 17:03:50.000000000 -0700 -@@ -148,14 +148,96 @@ static int ti_intctl(struct yenta_socket - return 0; - } - -+/* -+ * Zoom video control for TI122x/113x chips -+ */ -+ -+static void ti_zoom_video(struct pcmcia_socket *sock, int onoff) -+{ -+ u8 reg; -+ struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); -+ -+ /* If we don't have a Zoom Video switch this is harmless, -+ we just tristate the unused (ZV) lines */ -+ reg = config_readb(socket, TI113X_CARD_CONTROL); -+ if (onoff) -+ /* Zoom zoom, we will all go together, zoom zoom, zoom zoom */ -+ reg |= TI113X_CCR_ZVENABLE; -+ else -+ reg &= ~TI113X_CCR_ZVENABLE; -+ config_writeb(socket, TI113X_CARD_CONTROL, reg); -+} -+ -+/* -+ * The 145x series can also use this. They have an additional -+ * ZV autodetect mode we don't use but don't actually need. -+ * FIXME: manual says its in func0 and func1 but disagrees with -+ * itself about this - do we need to force func0, if so we need -+ * to know a lot more about socket pairings in pcmcia_socket than -+ * we do now.. uggh. -+ */ -+ -+static void ti1250_zoom_video(struct pcmcia_socket *sock, int onoff) -+{ -+ struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); -+ int shift = 0; -+ u8 reg; -+ -+ ti_zoom_video(sock, onoff); -+ -+ reg = config_readb(socket, 0x84); -+ reg |= (1<<7); /* ZV bus enable */ -+ -+ if(PCI_FUNC(socket->dev->devfn)==1) -+ shift = 1; -+ -+ if(onoff) -+ { -+ reg &= ~(1<<6); /* Clear select bit */ -+ reg |= shift<<6; /* Favour our socket */ -+ reg |= 1<dev->vendor == PCI_VENDOR_ID_TI) -+ { -+ switch(socket->dev->device) -+ { -+ /* There may be more .. */ -+ case PCI_DEVICE_ID_TI_1220: -+ case PCI_DEVICE_ID_TI_1221: -+ case PCI_DEVICE_ID_TI_1225: -+ sock->zoom_video = ti_zoom_video; -+ break; -+ case PCI_DEVICE_ID_TI_1250: -+ case PCI_DEVICE_ID_TI_1251A: -+ case PCI_DEVICE_ID_TI_1251B: -+ case PCI_DEVICE_ID_TI_1450: -+ sock->zoom_video = ti1250_zoom_video; -+ } -+ } -+} - static int ti_init(struct pcmcia_socket *sock) - { - struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); - yenta_init(sock); -+ ti_set_zv(sock); - ti_intctl(socket); - return 0; - } - -+ - /* - * Generic TI init - TI has an extension for the - * INTCTL register that sets the PCI CSC interrupt. -@@ -176,9 +258,6 @@ static int ti_override(struct yenta_sock - if (new != reg) - exca_writeb(socket, I365_INTCTL, new); - --#if 0 -- /* THIS CAUSES HANGS! Disabled for now, do not know why */ -- - /* - * If ISA interrupts don't work, then fall back to routing card - * interrupts to the PCI interrupt of the socket. -@@ -190,7 +269,7 @@ static int ti_override(struct yenta_sock - u8 irqmux, devctl; - - devctl = config_readb(socket, TI113X_DEVICE_CONTROL); -- if (devctl & TI113X_DCR_IMODE_MASK != TI12XX_DCR_IMODE_ALL_SERIAL) { -+ if ((devctl & TI113X_DCR_IMODE_MASK) != TI12XX_DCR_IMODE_ALL_SERIAL) { - printk (KERN_INFO "ti113x: Routing card interrupts to PCI\n"); - - devctl &= ~TI113X_DCR_IMODE_MASK; -@@ -203,7 +282,6 @@ static int ti_override(struct yenta_sock - config_writeb(socket, TI113X_DEVICE_CONTROL, devctl); - } - } --#endif - - socket->socket.ops->init = ti_init; - return 0; -@@ -220,6 +298,7 @@ static int ti113x_init(struct pcmcia_soc - { - struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); - yenta_init(sock); -+ ti_set_zv(sock); - - config_writel(socket, TI113X_SYSTEM_CONTROL, ti_sysctl(socket)); - config_writeb(socket, TI113X_CARD_CONTROL, ti_cardctl(socket)); -@@ -248,6 +327,7 @@ static int ti1250_init(struct pcmcia_soc - struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); - yenta_init(sock); - ti113x_init(sock); -+ ti_set_zv(sock); - ti_irqmux(socket) = config_readl(socket, TI122X_IRQMUX); - ti_irqmux(socket) = (ti_irqmux(socket) & ~0x0f) | 0x02; /* route INTA */ - if (!(ti_sysctl(socket) & TI122X_SCR_INTRTIE)) ---- linux-2.6.0-test1/drivers/pcmcia/yenta_socket.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/pcmcia/yenta_socket.c 2003-07-19 17:03:50.000000000 -0700 -@@ -297,6 +297,8 @@ static int yenta_set_socket(struct pcmci - } - exca_writeb(socket, I365_CSCINT, reg); - exca_readb(socket, I365_CSC); -+ if(sock->zoom_video) -+ sock->zoom_video(sock, state->flags & SS_ZVCARD); - } - config_writew(socket, CB_BRIDGE_CONTROL, bridge); - /* Socket event mask: get card insert/remove events.. */ ---- linux-2.6.0-test1/drivers/pnp/isapnp/core.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/pnp/isapnp/core.c 2003-07-19 17:03:50.000000000 -0700 -@@ -255,14 +255,22 @@ static void __init isapnp_peek(unsigned - static int isapnp_next_rdp(void) - { - int rdp = isapnp_rdp; -+ static int old_rdp = 0; -+ -+ if(old_rdp) -+ { -+ release_region(old_rdp, 1); -+ old_rdp = 0; -+ } - while (rdp <= 0x3ff) { - /* - * We cannot use NE2000 probe spaces for ISAPnP or we - * will lock up machines. - */ -- if ((rdp < 0x280 || rdp > 0x380) && !check_region(rdp, 1)) -+ if ((rdp < 0x280 || rdp > 0x380) && request_region(rdp, 1, "ISAPnP")) - { - isapnp_rdp = rdp; -+ old_rdp = rdp; - return 0; - } - rdp += RDP_STEP; ---- linux-2.6.0-test1/drivers/s390/block/dasd.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/s390/block/dasd.c 2003-07-19 17:03:50.000000000 -0700 -@@ -16,7 +16,6 @@ - #include - #include - #include --#include - #include - #include - ---- linux-2.6.0-test1/drivers/s390/block/dasd_genhd.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/s390/block/dasd_genhd.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - * - * Dealing with devices registered to multiple major numbers. - * -- * $Revision: 1.29 $ -+ * $Revision: 1.31 $ - */ - - #include -@@ -17,7 +17,6 @@ - #include - #include - #include --#include - - #include - -@@ -200,7 +199,6 @@ void - dasd_destroy_partitions(struct dasd_device * device) - { - del_gendisk(device->gdp); -- put_disk(device->gdp); - } - - int ---- linux-2.6.0-test1/drivers/s390/block/dasd_int.h 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/s390/block/dasd_int.h 2003-07-19 17:06:39.000000000 -0700 -@@ -14,7 +14,8 @@ - - #ifdef __KERNEL__ - --#define DASD_PER_MAJOR ( 1U<<(MINORBITS-DASD_PARTN_BITS)) -+#define DASD_MINORBITS 8 -+#define DASD_PER_MAJOR ( 1U<<(DASD_MINORBITS-DASD_PARTN_BITS)) - #define DASD_PARTN_MASK ((1 << DASD_PARTN_BITS) - 1) - - /* ---- linux-2.6.0-test1/drivers/s390/block/dasd_ioctl.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/s390/block/dasd_ioctl.c 2003-07-19 17:03:50.000000000 -0700 -@@ -14,7 +14,6 @@ - #include - #include - #include --#include - - #include - #include ---- linux-2.6.0-test1/drivers/s390/block/xpram.c 2003-07-02 14:53:14.000000000 -0700 -+++ 25/drivers/s390/block/xpram.c 2003-07-19 17:03:50.000000000 -0700 -@@ -31,7 +31,6 @@ - #include - #include - #include --#include - #include - #include /* HDIO_GETGEO */ - #include ---- linux-2.6.0-test1/drivers/s390/char/sclp.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/s390/char/sclp.c 2003-07-19 17:04:07.000000000 -0700 -@@ -468,17 +468,17 @@ static struct sclp_register sclp_state_c - * SCLP quiesce event handler - */ - #ifdef CONFIG_SMP --static volatile unsigned long cpu_quiesce_map; -+static cpumask_t cpu_quiesce_map; - - static void - do_load_quiesce_psw(void * __unused) - { - psw_t quiesce_psw; - -- clear_bit(smp_processor_id(), &cpu_quiesce_map); -+ cpu_clear(smp_processor_id(), cpu_quiesce_map); - if (smp_processor_id() == 0) { - /* Wait for all other cpus to enter do_load_quiesce_psw */ -- while (cpu_quiesce_map != 0); -+ while (!cpus_empty(cpu_quiesce_map)); - /* Quiesce the last cpu with the special psw */ - quiesce_psw.mask = PSW_BASE_BITS | PSW_MASK_WAIT; - quiesce_psw.addr = 0xfff; ---- linux-2.6.0-test1/drivers/s390/char/tape_block.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/s390/char/tape_block.c 2003-07-19 17:03:50.000000000 -0700 -@@ -13,7 +13,6 @@ - #include - #include - #include --#include - #include - #include - ---- linux-2.6.0-test1/drivers/s390/cio/chsc.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/cio/chsc.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,7 +1,7 @@ - /* - * drivers/s390/cio/chsc.c - * S/390 common I/O routines -- channel subsystem call -- * $Revision: 1.73 $ -+ * $Revision: 1.74 $ - * - * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, - * IBM Corporation -@@ -206,6 +206,7 @@ chsc_get_sch_descriptions(void) - if (!page) - return -ENOMEM; - -+ err = 0; - for (irq = 0; irq <= highest_subchannel; irq++) { - /* - * retrieve information for each sch -@@ -222,13 +223,14 @@ chsc_get_sch_descriptions(void) - "not work\n", err); - cio_chsc_err_msg = 1; - } -- return err; -+ goto out; - } - clear_page(page); - } - cio_chsc_desc_avail = 1; -+out: - free_page((unsigned long)page); -- return 0; -+ return err; - } - - __initcall(chsc_get_sch_descriptions); -@@ -428,7 +430,7 @@ s390_process_res_acc (u8 chpid, __u16 fl - ret = css_probe_device(irq); - if (ret == -ENXIO) - /* We're through */ -- return; -+ break; - continue; - } - ---- linux-2.6.0-test1/drivers/s390/cio/cio.c 2003-06-14 12:18:48.000000000 -0700 -+++ 25/drivers/s390/cio/cio.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,7 +1,7 @@ - /* - * drivers/s390/cio/cio.c - * S/390 common I/O routines -- low level i/o calls -- * $Revision: 1.98 $ -+ * $Revision: 1.100 $ - * - * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, - * IBM Corporation -@@ -16,10 +16,12 @@ - #include - #include - #include -+#include - - #include - #include - #include -+#include - - #include "airq.h" - #include "cio.h" -@@ -442,6 +444,11 @@ cio_enable_subchannel (struct subchannel - if (sch->schib.pmcw.ena) - break; - } -+ if (ret == -EBUSY) { -+ struct irb irb; -+ if (tsch(sch->irq, &irb) != 0) -+ break; -+ } - } - sprintf (dbf_txt, "ret:%d", ret); - CIO_TRACE_EVENT (2, dbf_txt); -@@ -608,6 +615,7 @@ do_IRQ (struct pt_regs regs) - tpi_info = (struct tpi_info *) __LC_SUBCHANNEL_ID; - irb = (struct irb *) __LC_IRB; - do { -+ kstat_cpu(smp_processor_id()).irqs[IO_INTERRUPT]++; - /* - * Non I/O-subchannel thin interrupts are processed differently - */ ---- linux-2.6.0-test1/drivers/s390/cio/device.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/cio/device.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,7 +1,7 @@ - /* - * drivers/s390/cio/device.c - * bus driver for ccw devices -- * $Revision: 1.58 $ -+ * $Revision: 1.60 $ - * - * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, - * IBM Corporation -@@ -434,6 +434,13 @@ ccw_device_register(struct ccw_device *c - return ret; - } - -+void -+ccw_device_unregister(void *data) -+{ -+ device_unregister((struct device *)data); -+} -+ -+ - static void - ccw_device_release(struct device *dev) - { -@@ -513,17 +520,11 @@ io_subchannel_recog_done(struct ccw_devi - wake_up(&ccw_device_init_wq); - } - --static void -+static int - io_subchannel_recog(struct ccw_device *cdev, struct subchannel *sch) - { - int rc; - -- if (!get_device(&sch->dev)) { -- if (cdev->dev.release) -- cdev->dev.release(&cdev->dev); -- return; -- } -- - sch->dev.driver_data = cdev; - sch->driver = &io_subchannel_driver; - cdev->ccwlock = &sch->lock; -@@ -540,9 +541,6 @@ io_subchannel_recog(struct ccw_device *c - snprintf (cdev->dev.bus_id, DEVICE_ID_SIZE, "0:%04x", - sch->schib.pmcw.dev); - -- /* Do first half of device_register. */ -- device_initialize(&cdev->dev); -- - /* Increase counter of devices currently in recognition. */ - atomic_inc(&ccw_device_init_count); - -@@ -551,13 +549,10 @@ io_subchannel_recog(struct ccw_device *c - rc = ccw_device_recognition(cdev); - spin_unlock_irq(cdev->ccwlock); - if (rc) { -- sch->dev.driver_data = 0; -- put_device(&sch->dev); -- if (cdev->dev.release) -- cdev->dev.release(&cdev->dev); - if (atomic_dec_and_test(&ccw_device_init_count)) - wake_up(&ccw_device_init_wq); - } -+ return rc; - } - - static int -@@ -565,6 +560,7 @@ io_subchannel_probe (struct device *pdev - { - struct subchannel *sch; - struct ccw_device *cdev; -+ int rc; - - sch = to_subchannel(pdev); - if (sch->dev.driver_data) { -@@ -573,8 +569,20 @@ io_subchannel_probe (struct device *pdev - * Register it and exit. This happens for all early - * device, e.g. the console. - */ -- ccw_device_register(sch->dev.driver_data); -+ cdev = sch->dev.driver_data; -+ device_initialize(&cdev->dev); -+ ccw_device_register(cdev); - subchannel_add_files(&sch->dev); -+ /* -+ * Check if the device is already online. If it is -+ * the reference count needs to be corrected -+ * (see ccw_device_online and css_init_done for the -+ * ugly details). -+ */ -+ if (cdev->private->state != DEV_STATE_NOT_OPER && -+ cdev->private->state != DEV_STATE_OFFLINE && -+ cdev->private->state != DEV_STATE_BOXED) -+ get_device(&cdev->dev); - return 0; - } - cdev = kmalloc (sizeof(*cdev), GFP_KERNEL); -@@ -592,7 +600,23 @@ io_subchannel_probe (struct device *pdev - .parent = pdev, - .release = ccw_device_release, - }; -- io_subchannel_recog(cdev, to_subchannel(pdev)); -+ /* Do first half of device_register. */ -+ device_initialize(&cdev->dev); -+ -+ if (!get_device(&sch->dev)) { -+ if (cdev->dev.release) -+ cdev->dev.release(&cdev->dev); -+ return 0; -+ } -+ -+ rc = io_subchannel_recog(cdev, to_subchannel(pdev)); -+ if (rc) { -+ sch->dev.driver_data = 0; -+ put_device(&sch->dev); -+ if (cdev->dev.release) -+ cdev->dev.release(&cdev->dev); -+ } -+ - return 0; - } - -@@ -604,6 +628,8 @@ static int console_cdev_in_use; - static int - ccw_device_console_enable (struct ccw_device *cdev, struct subchannel *sch) - { -+ int rc; -+ - /* Initialize the ccw_device structure. */ - cdev->dev = (struct device) { - .parent = &sch->dev, -@@ -613,7 +639,11 @@ ccw_device_console_enable (struct ccw_de - .parent = &css_bus_device, - .bus = &css_bus_type, - }; -- io_subchannel_recog(cdev, sch); -+ -+ rc = io_subchannel_recog(cdev, sch); -+ if (rc) -+ return rc; -+ - /* Now wait for the async. recognition to come to an end. */ - while (!dev_fsm_final_state(cdev)) - wait_cons_dev(); ---- linux-2.6.0-test1/drivers/s390/cio/device_fsm.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/cio/device_fsm.c 2003-07-19 17:03:50.000000000 -0700 -@@ -188,7 +188,7 @@ ccw_device_done(struct ccw_device *cdev, - - wake_up(&cdev->private->wait_q); - -- if (state != DEV_STATE_ONLINE) -+ if (css_init_done && state != DEV_STATE_ONLINE) - put_device (&cdev->dev); - } - -@@ -293,7 +293,7 @@ ccw_device_online(struct ccw_device *cde - if (cdev->private->state != DEV_STATE_OFFLINE) - return -EINVAL; - sch = to_subchannel(cdev->dev.parent); -- if (!get_device(&cdev->dev)) -+ if (css_init_done && !get_device(&cdev->dev)) - return -ENODEV; - if (cio_enable_subchannel(sch, sch->schib.pmcw.isc) != 0) { - /* Couldn't enable the subchannel for i/o. Sick device. */ -@@ -384,7 +384,9 @@ static void - ccw_device_offline_notoper(struct ccw_device *cdev, enum dev_event dev_event) - { - cdev->private->state = DEV_STATE_NOT_OPER; -- device_unregister(&cdev->dev); -+ INIT_WORK(&cdev->private->kick_work, -+ ccw_device_unregister, (void *) &cdev->dev); -+ queue_work(ccw_device_work, &cdev->private->kick_work); - wake_up(&cdev->private->wait_q); - } - -@@ -403,8 +405,10 @@ ccw_device_online_notoper(struct ccw_dev - // FIXME: not-oper indication to device driver ? - ccw_device_call_handler(cdev); - } -+ INIT_WORK(&cdev->private->kick_work, -+ ccw_device_unregister, (void *) &cdev->dev); -+ queue_work(ccw_device_work, &cdev->private->kick_work); - wake_up(&cdev->private->wait_q); -- device_unregister(&cdev->dev); - } - - /* ---- linux-2.6.0-test1/drivers/s390/cio/device.h 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/cio/device.h 2003-07-19 17:03:50.000000000 -0700 -@@ -65,6 +65,8 @@ extern struct workqueue_struct *ccw_devi - - void io_subchannel_recog_done(struct ccw_device *cdev); - -+void ccw_device_unregister(void *); -+ - int ccw_device_recognition(struct ccw_device *); - int ccw_device_online(struct ccw_device *); - int ccw_device_offline(struct ccw_device *); ---- linux-2.6.0-test1/drivers/s390/cio/qdio.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/cio/qdio.c 2003-07-19 17:03:50.000000000 -0700 -@@ -55,7 +55,7 @@ - #include "ioasm.h" - #include "chsc.h" - --#define VERSION_QDIO_C "$Revision: 1.51 $" -+#define VERSION_QDIO_C "$Revision: 1.55 $" - - /****************** MODULE PARAMETER VARIABLES ********************/ - MODULE_AUTHOR("Utz Bacher "); -@@ -1643,6 +1643,7 @@ qdio_timeout_handler(struct ccw_device * - default: - BUG(); - } -+ ccw_device_set_timeout(cdev, 0); - wake_up(&cdev->private->wait_q); - - } -@@ -1891,26 +1892,25 @@ tiqdio_check_chsc_availability(void) - result=-EIO; - goto exit; - } -- /* 4: request block -- * 2: general char -- * 512: chsc char */ -- if ((scsc_area->general_char[1] & 0x00800000) != 0x00800000) { -+ /* Check for bit 41. */ -+ if ((scsc_area->general_char[1] & 0x00400000) != 0x00400000) { - QDIO_PRINT_WARN("Adapter interruption facility not " \ - "installed.\n"); - result=-ENOENT; - goto exit; - } -- if ((scsc_area->chsc_char[2] & 0x00180000) != 0x00180000) { -+ /* Check for bits 107 and 108. */ -+ if ((scsc_area->chsc_char[3] & 0x00180000) != 0x00180000) { - QDIO_PRINT_WARN("Set Chan Subsys. Char. & Fast-CHSCs " \ - "not available.\n"); - result=-ENOENT; - goto exit; - } - -- /* Check for hydra thin interrupts. */ -+ /* Check for hydra thin interrupts (bit 67). */ - hydra_thinints = ((scsc_area->general_char[2] & 0x10000000) - == 0x10000000); -- sprintf(dbf_text,"hydra_ti%1x", hydra_thinints); -+ sprintf(dbf_text,"hydrati%1x", hydra_thinints); - QDIO_DBF_TEXT0(0,setup,dbf_text); - exit: - free_page ((unsigned long) scsc_area); -@@ -2413,8 +2413,10 @@ qdio_establish_handle_irq(struct ccw_dev - QDIO_DBF_TEXT0(0,setup,dbf_text); - QDIO_DBF_TEXT0(0,trace,dbf_text); - -- if (qdio_establish_irq_check_for_errors(cdev, cstat, dstat)) -+ if (qdio_establish_irq_check_for_errors(cdev, cstat, dstat)) { -+ ccw_device_set_timeout(cdev, 0); - return; -+ } - - irq_ptr = cdev->private->qdio_data; - -@@ -2439,7 +2441,7 @@ qdio_establish_handle_irq(struct ccw_dev - qdio_initialize_set_siga_flags_output(irq_ptr); - - qdio_set_state(irq_ptr,QDIO_IRQ_STATE_ESTABLISHED); -- -+ ccw_device_set_timeout(cdev, 0); - } - - int -@@ -2698,6 +2700,8 @@ qdio_establish(struct ccw_device *cdev) - "returned %i, next try returned %i\n", - irq_ptr->irq,result,result2); - result=result2; -+ if (result) -+ ccw_device_set_timeout(cdev, 0); - } - - spin_unlock_irqrestore(get_ccwdev_lock(cdev),saveflags); -@@ -3000,7 +3004,6 @@ qdio_perf_procfile_read(char *buffer, ch - int buffer_length, int *eof, void *data) - { - int c=0; -- int irq; - - /* we are always called with buffer_length=4k, so we all - deliver on the first read */ -@@ -3020,7 +3023,7 @@ qdio_perf_procfile_read(char *buffer, ch - perf_stats.siga_ins); - _OUTP_IT("Number of SIGA out's issued : %u\n", - perf_stats.siga_outs); -- _OUTP_IT("Number of PCIs caught : %u\n", -+ _OUTP_IT("Number of PCIs caught : %u\n", - perf_stats.pcis); - _OUTP_IT("Number of adapter interrupts caught : %u\n", - perf_stats.thinints); -@@ -3037,27 +3040,6 @@ qdio_perf_procfile_read(char *buffer, ch - perf_stats.outbound_cnt); - _OUTP_IT("\n"); - -- /* -- * FIXME: Rather use driver_for_each_dev, if we had it. -- * I know this loop destroys our layering, but at least gets the -- * performance stats out... -- */ -- for (irq=0;irq <= highest_subchannel; irq++) { -- struct qdio_irq *irq_ptr; -- struct ccw_device *cdev; -- -- if (!ioinfo[irq]) -- continue; -- cdev = ioinfo[irq]->dev.driver_data; -- if (!cdev) -- continue; -- irq_ptr = cdev->private->qdio_data; -- if (!irq_ptr) -- continue; -- _OUTP_IT("Polling time on irq %4x " \ -- ": %u\n", -- irq_ptr->irq,irq_ptr->input_qs[0]->timing.threshold); -- } - return c; - } - ---- linux-2.6.0-test1/drivers/s390/net/qeth.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/net/qeth.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,6 +1,6 @@ - /* - * -- * linux/drivers/s390/net/qeth.c ($Revision: 1.118 $) -+ * linux/drivers/s390/net/qeth.c ($Revision: 1.126 $) - * - * Linux on zSeries OSA Express and HiperSockets support - * -@@ -165,7 +165,7 @@ MODULE_PARM_DESC(qeth_sparebufs, "the nu - "reserved for low memory situations"); - - /****************** MODULE STUFF **********************************/ --#define VERSION_QETH_C "$Revision: 1.118 $" -+#define VERSION_QETH_C "$Revision: 1.126 $" - static const char *version = "qeth S/390 OSA-Express driver (" - VERSION_QETH_C "/" VERSION_QETH_H "/" VERSION_QETH_MPC_H - QETH_VERSION_IPV6 QETH_VERSION_VLAN ")"; -@@ -1156,7 +1156,7 @@ qeth_get_skb(unsigned int len) - return skb; - } - --static struct sk_buff * -+static inline struct sk_buff * - qeth_get_next_skb(struct qeth_card *card, - int *element_ptr, int *pos_in_el_ptr, - void **hdr_ptr, struct qdio_buffer *buffer) -@@ -1464,8 +1464,21 @@ __qeth_rebuild_skb(struct qeth_card *car - skb->ip_summed = card->options.checksum_type; - if (card->options.checksum_type == HW_CHECKSUMMING) { - /* do we have a checksummed packet? */ -- if (*(__u8 *) (hdr_ptr + 11) & QETH_EXT_HEADER_CSUM_TRANSP_REQ) { -- /* skb->ip_summed is set already */ -+ -+ /* -+ * we only check for TCP/UDP checksums when the pseudo -+ * header was also checked successfully -- for the -+ * rest of the packets, it's not clear, whether the -+ * upper layer csum is alright. And they shouldn't -+ * occur too often anyway in real life -+ */ -+ -+ if ((*(__u8*)(hdr_ptr+11) & (QETH_EXT_HEADER_CSUM_HDR_REQ | -+ QETH_EXT_HEADER_CSUM_TRANSP_REQ)) == -+ (QETH_EXT_HEADER_CSUM_HDR_REQ | -+ QETH_EXT_HEADER_CSUM_TRANSP_REQ)) { -+#if 0 -+ /* csum does not need to be set inbound anyway */ - - /* - * vlan is not an issue here, it's still in -@@ -1485,11 +1498,15 @@ __qeth_rebuild_skb(struct qeth_card *car - (&skb->data[ip_len + - QETH_TCP_CSUM_OFFSET]); - } -+#endif /* 0 */ -+ skb->ip_summed=CHECKSUM_UNNECESSARY; - } else { - /* make the stack check it */ - skb->ip_summed = SW_CHECKSUMMING; - } -- } -+ } else -+ skb->ip_summed=card->options.checksum_type; -+ - __qeth_rebuild_skb_vlan(card, skb, hdr_ptr); - } - -@@ -1596,7 +1613,7 @@ __qeth_fill_header_add_vlan(struct qeth_ - #endif - } - --static __u8 -+static inline __u8 - __qeth_get_flags_v4(int multicast) - { - if (multicast == RTN_MULTICAST) -@@ -1606,7 +1623,7 @@ __qeth_get_flags_v4(int multicast) - return QETH_CAST_UNICAST; - } - --static __u8 -+static inline __u8 - __qeth_get_flags_v6(int multicast) - { - if (multicast == RTN_MULTICAST) -@@ -1625,7 +1642,7 @@ __qeth_get_flags_v6(int multicast) - QETH_HEADER_IPV6; - } - --static void -+static inline void - qeth_fill_header(struct qeth_hdr *hdr, struct sk_buff *skb, - int version, int multicast) - { -@@ -1681,7 +1698,7 @@ qeth_fill_header(struct qeth_hdr *hdr, s - __max(QETH_DBF_DATA_LEN, QETH_DBF_DATA_LEN)); - } - --static int inline -+static inline int - qeth_fill_buffer(struct qdio_buffer *buffer, char *dataptr, - int length, int element) - { -@@ -1735,7 +1752,7 @@ qeth_fill_buffer(struct qdio_buffer *buf - return element; - } - --static void -+static inline void - qeth_flush_packed_packets(struct qeth_card *card, int queue, int under_int) - { - struct qdio_buffer *buffer; -@@ -1900,7 +1917,7 @@ qeth_determine_send_error(int cc, int qd - return ERROR_LINK_FAILURE; /* should never happen */ - } - --static void -+static inline void - qeth_free_buffer(struct qeth_card *card, int queue, int bufno, - int qdio_error, int siga_error) - { -@@ -2013,7 +2030,7 @@ qeth_free_buffer(struct qeth_card *card, - card->send_retries[queue][bufno] = 0; - } - --static void -+static inline void - qeth_free_all_skbs(struct qeth_card *card) - { - int q, b; -@@ -2049,7 +2066,7 @@ qeth_flush_buffer(struct qeth_card *card - } - - #ifdef QETH_VLAN --void -+static inline void - qeth_insert_ipv6_vlan_tag(struct sk_buff *__skb) - { - -@@ -2088,7 +2105,7 @@ __qeth_add_vlan_tag(struct qeth_card *ca - #endif - } - --static void -+static inline void - qeth_send_packet_fast(struct qeth_card *card, struct sk_buff *skb, - struct net_device *dev, - int queue, int version, int multicast) -@@ -2183,7 +2200,7 @@ qeth_send_packet_fast(struct qeth_card * - - /* no checks, if all elements are used, as then we would not be here (at most - 127 buffers are enqueued) */ --static void -+static inline void - qeth_send_packet_packed(struct qeth_card *card, struct sk_buff *skb, - struct net_device *dev, - int queue, int version, int multicast) -@@ -2391,7 +2408,7 @@ __qeth_switch_state_if_needed(struct qet - } - } - --static int -+static inline int - qeth_do_send_packet(struct qeth_card *card, struct sk_buff *skb, - struct net_device *dev) - { -@@ -2829,23 +2846,27 @@ qeth_send_ipa_cmd(struct qeth_card *card - - if (!buffer) { - if (atomic_read(&card->escape_softsetup)) -- result = 0; -+ return 0; - else -- result = -1; -- } else { -- reply = (struct ipa_cmd *) PDU_ENCAPSULATION(buffer); -- if ((update_cmd) && (reply)) -- memcpy(cmd, reply, sizeof (struct ipa_cmd)); -- result = reply->return_code; -- -- /* some special sausages: */ -- if ((ipa_cmd == IPA_CMD_SETASSPARMS) && (result == 0)) { -- result = reply->data.setassparms.return_code; -- } -- if ((ipa_cmd == IPA_CMD_SETADAPTERPARMS) && (result == 0)) { -- result = reply->data.setadapterparms.return_code; -- } -+ return -1; -+ } -+ reply = (struct ipa_cmd *) PDU_ENCAPSULATION(buffer); -+ if ((update_cmd) && (reply)) -+ memcpy(cmd, reply, sizeof (struct ipa_cmd)); -+ result = reply->return_code; -+ -+ /* some special sausages: */ -+ if ((ipa_cmd == IPA_CMD_SETASSPARMS) && (result == 0)) { -+ result = reply->data.setassparms.return_code; -+ if ((reply->data.setassparms.assist_no==IPA_INBOUND_CHECKSUM) && -+ (reply->data.setassparms.command_code == IPA_CMD_ASS_START)) -+ card->csum_enable_mask = -+ reply->data.setassparms.data.flags_32bit; -+ } -+ if ((ipa_cmd == IPA_CMD_SETADAPTERPARMS) && (result == 0)) { -+ result = reply->data.setadapterparms.return_code; - } -+ - return result; - } - -@@ -5599,7 +5620,7 @@ go_on_filt: - } - result=qeth_send_setassparms_simple_with_data - (card,IPA_INBOUND_CHECKSUM, -- IPA_CMD_ASS_ENABLE, IPA_CHECKSUM_ENABLE_MASK); -+ IPA_CMD_ASS_ENABLE, card->csum_enable_mask); - if (result) { - PRINT_WARN("Could not enable inbound " \ - "checksumming on %s: 0x%x, " \ -@@ -6881,6 +6902,14 @@ qeth_peer_func_level(int level) - return level; /* hmmm... don't know what to do with that level. */ - } - -+/* returns last four digits of bus_id */ -+static inline __u16 -+__raw_devno_from_bus_id(char *id) -+{ -+ id += (strlen(id) - 4); -+ return (__u16) simple_strtoul(id, &id, 16); -+} -+ - static int - qeth_idx_activate_read(struct qeth_card *card) - { -@@ -6905,7 +6934,7 @@ qeth_idx_activate_read(struct qeth_card - memcpy(QETH_IDX_ACT_FUNC_LEVEL(card->dma_stuff->sendbuf), - &card->func_level, 2); - -- temp = _ccw_device_get_device_number(card->ddev); -+ temp = __raw_devno_from_bus_id(card->ddev->dev.bus_id); - memcpy(QETH_IDX_ACT_QDIO_DEV_CUA(card->dma_stuff->sendbuf), &temp, 2); - temp = (card->cula << 8) + card->unit_addr2; - memcpy(QETH_IDX_ACT_QDIO_DEV_REALADDR(card->dma_stuff->sendbuf), -@@ -7501,10 +7530,8 @@ qeth_verify_dev(struct net_device *dev) - for (; tmp && (!result); tmp = tmp->next) { - if (atomic_read(&tmp->shutdown_phase)) - continue; -- if (dev == tmp->dev) { -- result = QETH_VERIFY_IS_REAL_DEV; -- } -- result = __qeth_verify_dev_vlan(dev, tmp); -+ result = (dev == tmp->dev)? -+ QETH_VERIFY_IS_REAL_DEV:__qeth_verify_dev_vlan(dev, tmp); - } - read_unlock(&list_lock); - return result; -@@ -8547,6 +8574,8 @@ qeth_alloc_card(void) - card->ip_mc_new_state.ipm6_ifa = NULL; - #endif /* QETH_IPV6 */ - -+ card->csum_enable_mask = IPA_CHECKSUM_DEFAULT_ENABLE_MASK; -+ - /* setup net_device stuff */ - card->dev->priv = card; - -@@ -9087,21 +9116,19 @@ qeth_procfile_open(struct inode *inode, - /* FIXME: this is really a mess... */ - - #ifdef QETH_IPV6 -- if (atomic_read(&card->rt4fld) && atomic_read(&card->rt6fld)) -- strcpy(router_str, "no"); -- else if (atomic_read(&card->rt4fld) -- || atomic_read(&card->rt6fld)) -- strcpy(router_str, "mix"); -+ if (atomic_read(&card->rt4fld) || atomic_read(&card->rt6fld)) -+ strcpy(router_str, "FLD"); - #else/* QETH_IPV6 */ - if (atomic_read(&card->rt4fld)) -- strcpy(router_str, "no"); -+ strcpy(router_str, "FLD"); - #endif /* QETH_IPV6 */ - else if (((card->options.routing_type4 & ROUTER_MASK) == - PRIMARY_ROUTER) - #ifdef QETH_IPV6 - && -- ((card->options.routing_type6 & ROUTER_MASK) == -- PRIMARY_ROUTER) -+ (((card->options.routing_type6 & ROUTER_MASK) == -+ PRIMARY_ROUTER) || -+ (!qeth_is_supported(IPA_IPv6))) - #endif /* QETH_IPV6 */ - ) { - strcpy(router_str, "pri"); -@@ -9110,8 +9137,9 @@ qeth_procfile_open(struct inode *inode, - SECONDARY_ROUTER) - #ifdef QETH_IPV6 - && -- ((card->options.routing_type6 & ROUTER_MASK) == -- SECONDARY_ROUTER) -+ (((card->options.routing_type6 & ROUTER_MASK) == -+ SECONDARY_ROUTER) || -+ (!qeth_is_supported(IPA_IPv6))) - #endif /* QETH_IPV6 */ - ) { - strcpy(router_str, "sec"); -@@ -9120,8 +9148,9 @@ qeth_procfile_open(struct inode *inode, - MULTICAST_ROUTER) - #ifdef QETH_IPV6 - && -- ((card->options.routing_type6 & ROUTER_MASK) == -- MULTICAST_ROUTER) -+ (((card->options.routing_type6 & ROUTER_MASK) == -+ MULTICAST_ROUTER) || -+ (!qeth_is_supported(IPA_IPv6))) - #endif /* QETH_IPV6 */ - ) { - strcpy(router_str, "mc"); -@@ -9130,8 +9159,9 @@ qeth_procfile_open(struct inode *inode, - PRIMARY_CONNECTOR) - #ifdef QETH_IPV6 - && -- ((card->options.routing_type6 & ROUTER_MASK) == -- PRIMARY_CONNECTOR) -+ (((card->options.routing_type6 & ROUTER_MASK) == -+ PRIMARY_CONNECTOR) || -+ (!qeth_is_supported(IPA_IPv6))) - #endif /* QETH_IPV6 */ - ) { - strcpy(router_str, "p.c"); -@@ -9140,8 +9170,9 @@ qeth_procfile_open(struct inode *inode, - SECONDARY_CONNECTOR) - #ifdef QETH_IPV6 - && -- ((card->options.routing_type6 & ROUTER_MASK) == -- SECONDARY_CONNECTOR) -+ (((card->options.routing_type6 & ROUTER_MASK) == -+ SECONDARY_CONNECTOR) || -+ (!qeth_is_supported(IPA_IPv6))) - #endif /* QETH_IPV6 */ - ) { - strcpy(router_str, "s.c"); -@@ -9150,8 +9181,9 @@ qeth_procfile_open(struct inode *inode, - NO_ROUTER) - #ifdef QETH_IPV6 - && -- ((card->options.routing_type6 & ROUTER_MASK) == -- NO_ROUTER) -+ (((card->options.routing_type6 & ROUTER_MASK) == -+ NO_ROUTER) || -+ (!qeth_is_supported(IPA_IPv6))) - #endif /* QETH_IPV6 */ - ) { - strcpy(router_str, "no"); -@@ -10115,7 +10147,7 @@ qeth_route4_show(struct device *dev, cha - return -EINVAL; - - if (atomic_read(&card->rt4fld)) -- return sprintf(buf, "%s\n", "no"); -+ return sprintf(buf, "%s\n", "FLD"); - - switch (card->options.routing_type4 & ROUTER_MASK) { - case PRIMARY_ROUTER: -@@ -10202,7 +10234,10 @@ qeth_route6_show(struct device *dev, cha - return -EINVAL; - - if (atomic_read(&card->rt6fld)) -- return sprintf(buf, "%s\n", "no"); -+ return sprintf(buf, "%s\n", "FLD"); -+ -+ if (!qeth_is_supported(IPA_IPv6)) -+ return sprintf(buf, "%s\n", "n/a"); - - switch (card->options.routing_type6 & ROUTER_MASK) { - case PRIMARY_ROUTER: -@@ -11061,6 +11096,10 @@ qeth_set_offline(struct ccwgroup_device - - QETH_DBF_TEXT4(0, trace, "freecard"); - -+ memset(card->dev, 0, sizeof (struct net_device)); -+ card->dev->priv = card; -+ strncpy(card->dev->name, card->dev_name, IFNAMSIZ); -+ - ccw_device_set_offline(card->ddev); - ccw_device_set_offline(card->wdev); - ccw_device_set_offline(card->rdev); ---- linux-2.6.0-test1/drivers/s390/net/qeth.h 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/net/qeth.h 2003-07-19 17:03:50.000000000 -0700 -@@ -14,7 +14,7 @@ - - #define QETH_NAME " qeth" - --#define VERSION_QETH_H "$Revision: 1.47 $" -+#define VERSION_QETH_H "$Revision: 1.49 $" - - /******************** CONFIG STUFF ***********************/ - //#define QETH_DBF_LIKE_HELL -@@ -938,6 +938,8 @@ struct qeth_card { /* pointed to by dev- - __u32 ipa6_enabled; - __u32 adp_supported; - -+ __u32 csum_enable_mask; -+ - atomic_t startlan_attempts; - atomic_t enable_routing_attempts4; - atomic_t rt4fld; -@@ -1021,7 +1023,7 @@ qeth_get_arphrd_type(int cardtype, int l - case QETH_MPC_LINK_TYPE_LANE_TR: - /* fallthrough */ - case QETH_MPC_LINK_TYPE_HSTR: -- return ARPHRD_IEEE802; -+ return ARPHRD_IEEE802_TR; - default: - return ARPHRD_ETHER; - } ---- linux-2.6.0-test1/drivers/s390/net/qeth_mpc.h 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/s390/net/qeth_mpc.h 2003-07-19 17:03:50.000000000 -0700 -@@ -10,7 +10,7 @@ - #ifndef __QETH_MPC_H__ - #define __QETH_MPC_H__ - --#define VERSION_QETH_MPC_H "$Revision: 1.15 $" -+#define VERSION_QETH_MPC_H "$Revision: 1.16 $" - - #define QETH_IPA_TIMEOUT (card->ipa_timeout) - #define QETH_MPC_TIMEOUT 2000 -@@ -188,7 +188,7 @@ extern unsigned char DM_ACT[]; - #define IPA_CMD_ASS_ARP_QUERY_INFO 0x0104 - #define IPA_CMD_ASS_ARP_QUERY_STATS 0x0204 - --#define IPA_CHECKSUM_ENABLE_MASK 0x001a -+#define IPA_CHECKSUM_DEFAULT_ENABLE_MASK 0x001a - - #define IPA_CMD_ASS_FILTER_SET_TYPES 0x0003 - ---- linux-2.6.0-test1/drivers/sbus/char/envctrl.c 2003-06-14 12:17:59.000000000 -0700 -+++ 25/drivers/sbus/char/envctrl.c 2003-07-19 17:03:50.000000000 -0700 -@@ -14,6 +14,9 @@ - * - * EB - Added support for CP1500 Global Address and PS/Voltage monitoring. - * Eric Brower -+ * -+ * DB - Audit every copy_to_user in envctrl_read. -+ * Daniele Bellucci - */ - - #include -@@ -571,7 +574,8 @@ envctrl_read(struct file *file, char *bu - - data[0] = (unsigned char)(warning_temperature); - ret = 1; -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_SHUTDOWN_TEMPERATURE: -@@ -580,14 +584,16 @@ envctrl_read(struct file *file, char *bu - - data[0] = (unsigned char)(shutdown_temperature); - ret = 1; -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_MTHRBD_TEMPERATURE: - if (!(pchild = envctrl_get_i2c_child(ENVCTRL_MTHRBDTEMP_MON))) - return 0; - ret = envctrl_read_noncpu_info(pchild, ENVCTRL_MTHRBDTEMP_MON, data); -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_CPU_TEMPERATURE: -@@ -596,7 +602,8 @@ envctrl_read(struct file *file, char *bu - ret = envctrl_read_cpu_info(read_cpu, pchild, ENVCTRL_CPUTEMP_MON, data); - - /* Reset cpu to the default cpu0. */ -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_CPU_VOLTAGE: -@@ -605,21 +612,24 @@ envctrl_read(struct file *file, char *bu - ret = envctrl_read_cpu_info(read_cpu, pchild, ENVCTRL_CPUVOLTAGE_MON, data); - - /* Reset cpu to the default cpu0. */ -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_SCSI_TEMPERATURE: - if (!(pchild = envctrl_get_i2c_child(ENVCTRL_SCSITEMP_MON))) - return 0; - ret = envctrl_read_noncpu_info(pchild, ENVCTRL_SCSITEMP_MON, data); -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_ETHERNET_TEMPERATURE: - if (!(pchild = envctrl_get_i2c_child(ENVCTRL_ETHERTEMP_MON))) - return 0; - ret = envctrl_read_noncpu_info(pchild, ENVCTRL_ETHERTEMP_MON, data); -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_FAN_STATUS: -@@ -627,7 +637,8 @@ envctrl_read(struct file *file, char *bu - return 0; - data[0] = envctrl_i2c_read_8574(pchild->addr); - ret = envctrl_i2c_fan_status(pchild,data[0], data); -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_GLOBALADDRESS: -@@ -635,7 +646,8 @@ envctrl_read(struct file *file, char *bu - return 0; - data[0] = envctrl_i2c_read_8574(pchild->addr); - ret = envctrl_i2c_globaladdr(pchild, data[0], data); -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - case ENVCTRL_RD_VOLTAGE_STATUS: -@@ -645,7 +657,8 @@ envctrl_read(struct file *file, char *bu - return 0; - data[0] = envctrl_i2c_read_8574(pchild->addr); - ret = envctrl_i2c_voltage_status(pchild, data[0], data); -- copy_to_user((unsigned char *)buf, data, ret); -+ if (copy_to_user((unsigned char *)buf, data, ret)) -+ ret = -EFAULT; - break; - - default: ---- linux-2.6.0-test1/drivers/sbus/char/jsflash.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/sbus/char/jsflash.c 2003-07-19 17:03:50.000000000 -0700 -@@ -38,12 +38,8 @@ - #include - #include - --/* -- * is controlled from the outside with these definitions. -- */ - #define MAJOR_NR JSFD_MAJOR - --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/3w-xxxx.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/scsi/3w-xxxx.c 2003-07-19 17:03:50.000000000 -0700 -@@ -187,7 +187,7 @@ MODULE_LICENSE("GPL"); - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/53c700.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/53c700.c 2003-07-19 17:03:50.000000000 -0700 -@@ -131,7 +131,7 @@ - #include - #include - #include --#include -+#include - #include - #include - -@@ -172,7 +172,7 @@ STATIC void NCR_700_chip_reset(struct Sc - STATIC int NCR_700_slave_configure(Scsi_Device *SDpnt); - STATIC void NCR_700_slave_destroy(Scsi_Device *SDpnt); - --static struct device_attribute **NCR_700_dev_attrs = NULL; -+STATIC struct device_attribute *NCR_700_dev_attrs[]; - - static char *NCR_700_phase[] = { - "", -@@ -2027,25 +2027,12 @@ static struct device_attribute NCR_700_a - .show = NCR_700_show_active_tags, - }; - --STATIC int __init --NCR_700_init(void) --{ -- scsi_sysfs_modify_sdev_attribute(&NCR_700_dev_attrs, -- &NCR_700_queue_depth_attr); -- scsi_sysfs_modify_sdev_attribute(&NCR_700_dev_attrs, -- &NCR_700_active_tags_attr); -- return 0; --} -- --/* NULL exit routine to keep modutils happy */ --STATIC void __exit --NCR_700_exit(void) --{ --} -+STATIC struct device_attribute *NCR_700_dev_attrs[] = { -+ &NCR_700_queue_depth_attr, -+ &NCR_700_active_tags_attr, -+ NULL, -+}; - - EXPORT_SYMBOL(NCR_700_detect); - EXPORT_SYMBOL(NCR_700_release); - EXPORT_SYMBOL(NCR_700_intr); -- --module_init(NCR_700_init); --module_exit(NCR_700_exit); ---- linux-2.6.0-test1/drivers/scsi/53c7xx.c 2003-06-14 12:18:52.000000000 -0700 -+++ 25/drivers/scsi/53c7xx.c 2003-07-19 17:03:50.000000000 -0700 -@@ -249,7 +249,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/a2091.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/drivers/scsi/a2091.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,6 +1,6 @@ - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/a3000.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/scsi/a3000.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,6 +1,6 @@ - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/aacraid/aachba.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/aacraid/aachba.c 2003-07-19 17:03:50.000000000 -0700 -@@ -33,7 +33,7 @@ - #include - #include - #include --#include -+#include - #include "scsi.h" - #include "hosts.h" - ---- linux-2.6.0-test1/drivers/scsi/aacraid/commctrl.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/scsi/aacraid/commctrl.c 2003-07-19 17:03:50.000000000 -0700 -@@ -37,7 +37,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include "scsi.h" ---- linux-2.6.0-test1/drivers/scsi/aacraid/comminit.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/aacraid/comminit.c 2003-07-19 17:03:50.000000000 -0700 -@@ -37,7 +37,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/aacraid/commsup.c 2003-06-14 12:18:28.000000000 -0700 -+++ 25/drivers/scsi/aacraid/commsup.c 2003-07-19 17:03:50.000000000 -0700 -@@ -41,7 +41,7 @@ - #include - #include - #include --#include -+#include - #include "scsi.h" - #include "hosts.h" - ---- linux-2.6.0-test1/drivers/scsi/aacraid/dpcsup.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/scsi/aacraid/dpcsup.c 2003-07-19 17:03:50.000000000 -0700 -@@ -38,7 +38,7 @@ - #include - #include - #include --#include -+#include - #include - #include "scsi.h" - #include "hosts.h" ---- linux-2.6.0-test1/drivers/scsi/aacraid/linit.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/scsi/aacraid/linit.c 2003-07-19 17:05:05.000000000 -0700 -@@ -50,7 +50,7 @@ - #include - #include - #include --#include -+#include - #include "scsi.h" - #include "hosts.h" - #include -@@ -295,7 +295,6 @@ static int aac_detect(Scsi_Host_Template - printk(KERN_WARNING "aacraid: unable to register \"aac\" device.\n"); - } - -- template->present = aac_count; /* # of cards of this type found */ - return aac_count; - } - ---- linux-2.6.0-test1/drivers/scsi/aacraid/rx.c 2003-06-14 12:18:52.000000000 -0700 -+++ 25/drivers/scsi/aacraid/rx.c 2003-07-19 17:03:50.000000000 -0700 -@@ -36,7 +36,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/aacraid/sa.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/scsi/aacraid/sa.c 2003-07-19 17:03:50.000000000 -0700 -@@ -36,7 +36,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/advansys.c 2003-06-14 12:18:06.000000000 -0700 -+++ 25/drivers/scsi/advansys.c 2003-07-19 17:03:50.000000000 -0700 -@@ -798,7 +798,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/aha152x.c 2003-06-26 22:07:24.000000000 -0700 -+++ 25/drivers/scsi/aha152x.c 2003-07-19 17:03:50.000000000 -0700 -@@ -225,7 +225,7 @@ - #include - #include - #include --#include -+#include - #include "scsi.h" - #include "hosts.h" - #include -@@ -241,9 +241,7 @@ - #include - #include - #include --#include - #include --#include - #include - - #include "scsi.h" -@@ -941,7 +939,8 @@ static irqreturn_t swintr(int irqno, voi - struct Scsi_Host *shpnt = lookup_irq(irqno); - - if (!shpnt) { -- printk(KERN_ERR "aha152x%d: catched software interrupt %d for unknown controller.\n", HOSTNO, irqno); -+ /* no point using HOSTNO here! */ -+ printk(KERN_ERR "aha152x: catched software interrupt %d for unknown controller.\n", irqno); - return IRQ_NONE; - } - -@@ -1049,6 +1048,10 @@ struct Scsi_Host *aha152x_probe_one(stru - - printk(KERN_INFO "aha152x%d: trying software interrupt, ", - shost->host_no); -+ -+ /* need to have host registered before triggering any interrupt */ -+ aha152x_host[registered_count] = shost; -+ mb(); - SETPORT(DMACNTRL0, SWINT|INTEN); - mdelay(1000); - free_irq(shost->irq, shost); -@@ -1064,7 +1067,7 @@ struct Scsi_Host *aha152x_probe_one(stru - - printk(KERN_ERR "aha152x%d: IRQ %d possibly wrong. " - "Please verify.\n", shost->host_no, shost->irq); -- goto out_release_region; -+ goto out_unregister_host; - } - printk("ok.\n"); - -@@ -1077,12 +1080,12 @@ struct Scsi_Host *aha152x_probe_one(stru - "aha152x", shost) < 0) { - printk(KERN_ERR "aha152x%d: failed to reassign interrupt.\n", - shost->host_no); -- goto out_release_region; -+ goto out_unregister_host; - } -- -- aha152x_host[registered_count] = shost; - return shost; /* the pcmcia stub needs the return value; */ - -+out_unregister_host: -+ aha152x_host[registered_count] = NULL; - out_release_region: - release_region(shost->io_port, IO_RANGE); - out_unregister: ---- linux-2.6.0-test1/drivers/scsi/aha1542.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/aha1542.c 2003-07-19 17:03:50.000000000 -0700 -@@ -38,7 +38,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/aha1542.h 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/scsi/aha1542.h 2003-07-19 17:03:50.000000000 -0700 -@@ -130,7 +130,6 @@ struct ccb { /* Command Control Block - }; - - static int aha1542_detect(Scsi_Host_Template *); --static int aha1542_command(Scsi_Cmnd *); - static int aha1542_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); - static int aha1542_abort(Scsi_Cmnd * SCpnt); - static int aha1542_bus_reset(Scsi_Cmnd * SCpnt); ---- linux-2.6.0-test1/drivers/scsi/aha1740.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/aha1740.c 2003-07-19 17:03:50.000000000 -0700 -@@ -34,7 +34,7 @@ - * are deemed to be part of the source code. - */ - --#include -+#include - #include - #include - #include -@@ -375,7 +375,7 @@ static int aha1740_queuecommand(Scsi_Cmn - #endif - - /* locate an available ecb */ -- spin_lock_irqsave(&SCpnt->device->host->host_lock, flags); -+ spin_lock_irqsave(SCpnt->device->host->host_lock, flags); - ecbno = host->last_ecb_used + 1; /* An optimization */ - if (ecbno >= AHA1740_ECBS) - ecbno = 0; -@@ -394,7 +394,7 @@ static int aha1740_queuecommand(Scsi_Cmn - doubles as reserved flag */ - - host->last_ecb_used = ecbno; -- spin_unlock_irqrestore(&SCpnt->device->host->host_lock, flags); -+ spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags); - - #ifdef DEBUG - printk("Sending command (%d %x)...", ecbno, done); -@@ -491,7 +491,7 @@ static int aha1740_queuecommand(Scsi_Cmn - unsigned int base = SCpnt->device->host->io_port; - DEB(printk("aha1740[%d] critical section\n",ecbno)); - -- spin_lock_irqsave(&SCpnt->device->host->host_lock, flags); -+ spin_lock_irqsave(SCpnt->device->host->host_lock, flags); - for (loopcnt = 0; ; loopcnt++) { - if (inb(G2STAT(base)) & G2STAT_MBXOUT) break; - if (loopcnt == LOOPCNT_WARN) { -@@ -511,7 +511,7 @@ static int aha1740_queuecommand(Scsi_Cmn - panic("aha1740.c: attn wait failed!\n"); - } - outb(ATTN_START | (target & 7), ATTN(base)); /* Start it up */ -- spin_unlock_irqrestore(&SCpnt->device->host->host_lock, flags); -+ spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags); - DEB(printk("aha1740[%d] request queued.\n",ecbno)); - } else - printk(KERN_ALERT "aha1740_queuecommand: done can't be NULL\n"); -@@ -594,7 +594,7 @@ static int aha1740_probe (struct device - if (!request_region(slotbase, SLOTSIZE, "aha1740")) /* See if in use */ - return -EBUSY; - if (!aha1740_test_port(slotbase)) -- goto err_release; -+ goto err_release_region; - aha1740_getconfig(slotbase,&irq_level,&translation); - if ((inb(G2STAT(slotbase)) & - (G2STAT_MBXOUT|G2STAT_BUSY)) != G2STAT_MBXOUT) { -@@ -609,7 +609,7 @@ static int aha1740_probe (struct device - shpnt = scsi_host_alloc(&aha1740_template, - sizeof(struct aha1740_hostdata)); - if(shpnt == NULL) -- goto err_release; -+ goto err_release_region; - - shpnt->base = 0; - shpnt->io_port = slotbase; -@@ -625,21 +625,27 @@ static int aha1740_probe (struct device - if (!host->ecb_dma_addr) { - printk (KERN_ERR "aha1740_probe: Couldn't map ECB, giving up\n"); - scsi_unregister (shpnt); -- goto err_release; -+ goto err_host_put; - } - - DEB(printk("aha1740_probe: enable interrupt channel %d\n",irq_level)); - if (request_irq(irq_level,aha1740_intr_handle,0,"aha1740",shpnt)) { - printk(KERN_ERR "aha1740_probe: Unable to allocate IRQ %d.\n", - irq_level); -- goto err_release; -+ goto err_unmap; - } - - eisa_set_drvdata (edev, shpnt); -- scsi_add_host (shpnt, dev); -+ scsi_add_host (shpnt, dev); /* XXX handle failure */ -+ scsi_scan_host (shpnt); - return 0; - -- err_release: -+ err_unmap: -+ dma_unmap_single (&edev->dev, host->ecb_dma_addr, -+ sizeof (host->ecb), DMA_BIDIRECTIONAL); -+ err_host_put: -+ scsi_host_put (shpnt); -+ err_release_region: - release_region(slotbase, SLOTSIZE); - - return -ENODEV; ---- linux-2.6.0-test1/drivers/scsi/aic7xxx/aic79xx_osm.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/aic7xxx/aic79xx_osm.c 2003-07-19 17:03:50.000000000 -0700 -@@ -2173,7 +2173,8 @@ ahd_linux_register_host(struct ahd_softc - ahd_unlock(ahd, &s); - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -- scsi_add_host(host, &ahd->dev_softc->dev); -+ scsi_add_host(host, &ahd->dev_softc->dev); /* XXX handle failure */ -+ scsi_scan_host(host); - #endif - return (0); - } ---- linux-2.6.0-test1/drivers/scsi/aic7xxx/aic79xx_osm.h 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/scsi/aic7xxx/aic79xx_osm.h 2003-07-19 17:03:50.000000000 -0700 -@@ -43,7 +43,6 @@ - #define _AIC79XX_LINUX_H_ - - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/aic7xxx/aic7xxx_osm.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/aic7xxx/aic7xxx_osm.c 2003-07-19 17:03:50.000000000 -0700 -@@ -139,7 +139,7 @@ - #endif - - #include /* For fetching system memory size */ --#include /* For block_size() */ -+#include /* For block_size() */ - - /* - * Lock protecting manipulation of the ahc softc list. -@@ -1811,7 +1811,8 @@ ahc_linux_register_host(struct ahc_softc - ahc_unlock(ahc, &s); - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -- scsi_add_host(host, (ahc->dev_softc ? &ahc->dev_softc->dev : NULL)); -+ scsi_add_host(host, (ahc->dev_softc ? &ahc->dev_softc->dev : NULL)); /* XXX handle failure */ -+ scsi_scan_host(host); - #endif - return (0); - } ---- linux-2.6.0-test1/drivers/scsi/aic7xxx/aic7xxx_osm.h 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/scsi/aic7xxx/aic7xxx_osm.h 2003-07-19 17:03:50.000000000 -0700 -@@ -60,7 +60,6 @@ - #define _AIC7XXX_LINUX_H_ - - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/aic7xxx/aiclib.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/drivers/scsi/aic7xxx/aiclib.c 2003-07-19 17:03:50.000000000 -0700 -@@ -30,7 +30,6 @@ - * $Id$ - */ - --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/aic7xxx_old.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/scsi/aic7xxx_old.c 2003-07-19 17:03:50.000000000 -0700 -@@ -233,11 +233,10 @@ - #include - #include - #include --#include -+#include - #include - #include - #include --#include - #include - #include "scsi.h" - #include "hosts.h" ---- linux-2.6.0-test1/drivers/scsi/AM53C974.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/AM53C974.c 2003-07-19 17:03:50.000000000 -0700 -@@ -7,7 +7,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/amiga7xx.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/amiga7xx.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - */ - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/arm/acornscsi.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/acornscsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -138,7 +138,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -@@ -3043,9 +3043,13 @@ acornscsi_probe(struct expansion_card *e - acornscsi_resetcard(ashost); - - ret = scsi_add_host(host, &ec->dev); -- if (ret == 0) -- goto out; -+ if (ret) -+ goto err_7; -+ -+ scsi_scan_host(host); -+ goto out; - -+ err_7: - free_irq(host->irq, ashost); - err_6: - release_region(host->io_port, 2048); ---- linux-2.6.0-test1/drivers/scsi/arm/arxescsi.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/arxescsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -19,7 +19,7 @@ - * 22-10-2000 SH Updated for new registering scheme. - */ - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/arm/cumana_1.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/cumana_1.c 2003-07-19 17:03:50.000000000 -0700 -@@ -8,7 +8,7 @@ - #include - #include - #include --#include -+#include - #include - - #include -@@ -297,9 +297,13 @@ cumanascsi1_probe(struct expansion_card - printk("\n"); - - ret = scsi_add_host(host, &ec->dev); -- if (ret == 0) -- goto out; -+ if (ret) -+ goto out_free_irq; -+ -+ scsi_scan_host(host); -+ goto out; - -+ out_free_irq: - free_irq(host->irq, host); - out_release: - release_region(host->io_port, host->n_io_port); ---- linux-2.6.0-test1/drivers/scsi/arm/cumana_2.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/cumana_2.c 2003-07-19 17:03:50.000000000 -0700 -@@ -17,7 +17,7 @@ - * 02-04-2000 RMK 0.0.4 Updated for new error handling code. - */ - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/arm/ecoscsi.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/ecoscsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -27,7 +27,7 @@ - #include - #include - #include --#include -+#include - - #include - #include -@@ -205,7 +205,8 @@ static int __init ecoscsi_init(void) - NCR5380_print_options(host); - printk("\n"); - -- scsi_add_host(host, NULL); -+ scsi_add_host(host, NULL); /* XXX handle failure */ -+ scsi_scan_host(host); - return 0; - - release_reg: ---- linux-2.6.0-test1/drivers/scsi/arm/eesox.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/eesox.c 2003-07-19 17:03:50.000000000 -0700 -@@ -23,7 +23,7 @@ - * error handling code. - */ - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/arm/fas216.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/fas216.c 2003-07-19 17:03:50.000000000 -0700 -@@ -35,7 +35,7 @@ - * condition status from targets. - */ - #include --#include -+#include - #include - #include - #include -@@ -2861,6 +2861,8 @@ int fas216_add(struct Scsi_Host *host, s - ret = scsi_add_host(host, dev); - if (ret) - fas216_writeb(info, REG_CMD, CMD_RESETCHIP); -+ else -+ scsi_scan_host(host); - - return ret; - } ---- linux-2.6.0-test1/drivers/scsi/arm/oak.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/oak.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - #include - #include - #include --#include -+#include - #include - - #include -@@ -158,9 +158,13 @@ oakscsi_probe(struct expansion_card *ec, - printk("\n"); - - ret = scsi_add_host(host, &ec->dev); -- if (ret == 0) -- goto out; -+ if (ret) -+ goto out_release; -+ -+ scsi_scan_host(host); -+ goto out; - -+ out_release: - release_region(host->io_port, host->n_io_port); - unreg: - scsi_host_put(host); ---- linux-2.6.0-test1/drivers/scsi/arm/powertec.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/arm/powertec.c 2003-07-19 17:03:50.000000000 -0700 -@@ -8,7 +8,7 @@ - * published by the Free Software Foundation. - */ - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/arm/queue.c 2003-06-14 12:17:58.000000000 -0700 -+++ 25/drivers/scsi/arm/queue.c 2003-07-19 17:03:50.000000000 -0700 -@@ -15,7 +15,7 @@ - * 30-Aug-2000 RMK Use Linux list handling and spinlocks - */ - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/atari_scsi.c 2003-06-14 12:18:51.000000000 -0700 -+++ 25/drivers/scsi/atari_scsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -86,7 +86,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/atp870u.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/atp870u.c 2003-07-19 17:03:50.000000000 -0700 -@@ -26,7 +26,7 @@ - #include - #include - #include --#include -+#include - #include - - #include ---- linux-2.6.0-test1/drivers/scsi/blz1230.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/blz1230.c 2003-07-19 17:03:50.000000000 -0700 -@@ -22,7 +22,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/blz2060.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/scsi/blz2060.c 2003-07-19 17:03:50.000000000 -0700 -@@ -22,7 +22,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/BusLogic.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/scsi/BusLogic.c 2003-07-19 17:03:50.000000000 -0700 -@@ -36,7 +36,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/bvme6000.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/bvme6000.c 2003-07-19 17:03:50.000000000 -0700 -@@ -5,7 +5,7 @@ - */ - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/constants.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/constants.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - #include - - #include --#include -+#include - #include - #include "scsi.h" - #include "hosts.h" ---- linux-2.6.0-test1/drivers/scsi/cpqfcTScontrol.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/cpqfcTScontrol.c 2003-07-19 17:03:50.000000000 -0700 -@@ -30,7 +30,7 @@ - - #define LinuxVersionCode(v, p, s) (((v)<<16)+((p)<<8)+(s)) - --#include -+#include - #include - #include - #include // request_region() prototype ---- linux-2.6.0-test1/drivers/scsi/cpqfcTSinit.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/cpqfcTSinit.c 2003-07-19 17:03:50.000000000 -0700 -@@ -35,7 +35,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/cpqfcTSworker.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/scsi/cpqfcTSworker.c 2003-07-19 17:03:50.000000000 -0700 -@@ -26,7 +26,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/cyberstorm.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/scsi/cyberstorm.c 2003-07-19 17:03:50.000000000 -0700 -@@ -25,7 +25,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/cyberstormII.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/scsi/cyberstormII.c 2003-07-19 17:03:50.000000000 -0700 -@@ -21,7 +21,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/dc395x.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/dc395x.c 2003-07-19 17:03:50.000000000 -0700 -@@ -50,7 +50,7 @@ - #include - #include - #include --#include -+#include - #include - #include "scsi.h" - #include "hosts.h" -@@ -6214,7 +6214,8 @@ int __devinit dc395x_init_one(struct pci - pci_set_drvdata(pdev, scsi_host); - - /* get the scsi mid level to scan for new devices on the bus */ -- scsi_add_host(scsi_host, &pdev->dev); -+ scsi_add_host(scsi_host, &pdev->dev); /* XXX handle failure */ -+ scsi_scan_host(scsi_host); - - return 0; - } ---- linux-2.6.0-test1/drivers/scsi/dec_esp.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/dec_esp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -24,7 +24,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/dmx3191d.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/scsi/dmx3191d.c 2003-07-19 17:03:50.000000000 -0700 -@@ -22,7 +22,7 @@ - - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/dpt_i2o.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/dpt_i2o.c 2003-07-19 17:03:50.000000000 -0700 -@@ -47,7 +47,7 @@ MODULE_DESCRIPTION("Adaptec I2O RAID Dri - #include /* for CONFIG_PCI */ - #include /* for PCI support */ - #include --#include -+#include - #include /* for udelay */ - #include - #include /* for printk */ ---- linux-2.6.0-test1/drivers/scsi/dtc.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/dtc.c 2003-07-19 17:03:50.000000000 -0700 -@@ -76,7 +76,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/eata.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/eata.c 2003-07-19 17:03:50.000000000 -0700 -@@ -486,7 +486,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/eata_pio.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/scsi/eata_pio.c 2003-07-19 17:03:50.000000000 -0700 -@@ -58,7 +58,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/esp.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/esp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -19,7 +19,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/fastlane.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/scsi/fastlane.c 2003-07-19 17:03:50.000000000 -0700 -@@ -30,7 +30,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/fcal.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/fcal.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/fd_mcs.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/fd_mcs.c 2003-07-19 17:03:50.000000000 -0700 -@@ -79,7 +79,7 @@ - - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/fdomain.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/fdomain.c 2003-07-19 17:03:50.000000000 -0700 -@@ -270,7 +270,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/gdth.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/gdth.c 2003-07-19 17:03:50.000000000 -0700 -@@ -357,11 +357,8 @@ - #include - #endif - --#if LINUX_VERSION_CODE >= 0x010300 --#include --#else --#include "../block/blk.h" --#endif -+#include -+ - #include "scsi.h" - #include "hosts.h" - #if LINUX_VERSION_CODE < 0x020503 ---- linux-2.6.0-test1/drivers/scsi/g_NCR5380.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/scsi/g_NCR5380.c 2003-07-19 17:03:50.000000000 -0700 -@@ -105,7 +105,7 @@ - #include - #include - #include --#include -+#include - #include "scsi.h" - #include "hosts.h" - #include "g_NCR5380.h" ---- linux-2.6.0-test1/drivers/scsi/gvp11.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/scsi/gvp11.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,6 +1,6 @@ - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/hosts.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/hosts.c 2003-07-19 17:05:05.000000000 -0700 -@@ -81,19 +81,15 @@ int scsi_add_host(struct Scsi_Host *shos - printk(KERN_INFO "scsi%d : %s\n", shost->host_no, - sht->info ? sht->info(shost) : sht->name); - -- error = scsi_sysfs_add_host(shost, dev); -- - if (!shost->can_queue) { - printk(KERN_ERR "%s: can_queue = 0 no longer supported\n", - sht->name); - error = -EINVAL; - } - -- if (!error) { -+ error = scsi_sysfs_add_host(shost, dev); -+ if (!error) - scsi_proc_host_add(shost); -- scsi_scan_host(shost); -- } -- - return error; - } - -@@ -112,7 +108,7 @@ void scsi_free_shost(struct Scsi_Host *s - shost->eh_notify = NULL; - } - -- shost->hostt->present--; -+ scsi_proc_hostdir_rm(shost->hostt); - scsi_destroy_command_freelist(shost); - kfree(shost); - } -@@ -151,12 +147,6 @@ struct Scsi_Host *scsi_host_alloc(struct - dump_stack(); - } - -- /* if its not set in the template, use the default */ -- if (!sht->shost_attrs) -- sht->shost_attrs = scsi_sysfs_shost_attrs; -- if (!sht->sdev_attrs) -- sht->sdev_attrs = scsi_sysfs_sdev_attrs; -- - shost = kmalloc(sizeof(struct Scsi_Host) + privsize, gfp_mask); - if (!shost) - return NULL; -@@ -219,7 +209,7 @@ struct Scsi_Host *scsi_host_alloc(struct - kernel_thread((int (*)(void *))scsi_error_handler, shost, 0); - wait_for_completion(&complete); - shost->eh_notify = NULL; -- shost->hostt->present++; -+ scsi_proc_hostdir_add(shost->hostt); - return shost; - fail: - kfree(shost); -@@ -283,8 +273,8 @@ struct Scsi_Host *scsi_host_lookup(unsig - **/ - void scsi_host_get(struct Scsi_Host *shost) - { -- get_device(&shost->host_gendev); -- class_device_get(&shost->class_dev); -+ get_device(&shost->shost_gendev); -+ class_device_get(&shost->shost_classdev); - } - - /** -@@ -293,6 +283,6 @@ void scsi_host_get(struct Scsi_Host *sho - **/ - void scsi_host_put(struct Scsi_Host *shost) - { -- class_device_put(&shost->class_dev); -- put_device(&shost->host_gendev); -+ class_device_put(&shost->shost_classdev); -+ put_device(&shost->shost_gendev); - } ---- linux-2.6.0-test1/drivers/scsi/i91uscsi.c 2003-06-14 12:17:59.000000000 -0700 -+++ 25/drivers/scsi/i91uscsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -81,7 +81,7 @@ - - #include - #include --#include -+#include - #include - - #include "i91uscsi.h" ---- linux-2.6.0-test1/drivers/scsi/ibmmca.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/ibmmca.c 2003-07-19 17:03:50.000000000 -0700 -@@ -32,7 +32,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/ide-scsi.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/ide-scsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -978,8 +978,10 @@ static int idescsi_attach(ide_drive_t *d - idescsi_setup (drive, idescsi); - drive->disk->fops = &idescsi_ops; - err = scsi_add_host(host, &idescsi_primary); -- if (!err) -+ if (!err) { -+ scsi_scan_host(host); - return 0; -+ } - /* fall through on error */ - ide_unregister_subdriver(drive); - } ---- linux-2.6.0-test1/drivers/scsi/imm.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/imm.c 2003-07-19 17:03:50.000000000 -0700 -@@ -24,7 +24,7 @@ - void imm_reset_pulse(unsigned int base); - static int device_check(int host_no); - --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/imm.h 2003-06-14 12:17:55.000000000 -0700 -+++ 25/drivers/scsi/imm.h 2003-07-19 17:03:50.000000000 -0700 -@@ -75,7 +75,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/in2000.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/scsi/in2000.c 2003-07-19 17:03:50.000000000 -0700 -@@ -114,7 +114,6 @@ - */ - - #include --#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/ini9100u.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/ini9100u.c 2003-07-19 17:03:50.000000000 -0700 -@@ -119,7 +119,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/inia100.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/inia100.c 2003-07-19 17:03:50.000000000 -0700 -@@ -74,7 +74,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/ips.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/ips.c 2003-07-19 17:03:50.000000000 -0700 -@@ -167,7 +167,7 @@ - #include - #include - --#include -+#include - #include - - #include ---- linux-2.6.0-test1/drivers/scsi/ips.h 2003-06-14 12:18:03.000000000 -0700 -+++ 25/drivers/scsi/ips.h 2003-07-19 17:03:50.000000000 -0700 -@@ -111,7 +111,7 @@ - #else - #define IPS_REGISTER_HOSTS(SHT) (!ips_detect(SHT)) - #define IPS_UNREGISTER_HOSTS(SHT) -- #define IPS_ADD_HOST(shost,device) scsi_add_host(shost,device) -+ #define IPS_ADD_HOST(shost,device) do { scsi_add_host(shost,device); scsi_scan_host(shost); } while (0) - #define IPS_REMOVE_HOST(shost) scsi_remove_host(shost) - #define IPS_SCSI_SET_DEVICE(sh,ha) scsi_set_device(sh, &(ha)->pcidev->dev) - #define IPS_PRINTK(level, pcidev, format, arg...) \ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/asm_1000.h 2003-07-19 17:06:32.000000000 -0700 -@@ -0,0 +1,3224 @@ -+/* @(#)asm_1000.h 1.2 */ -+/* -+ * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Qlogic, Inc. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms are permitted provided -+ * that the following conditions are met: -+ * 1. Redistribution of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistribution in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+#ifndef ISP_TARGET_MODE -+/* -+ * Firmware Version 1.37.00 (11:28 Aug 28, 2000) -+ */ -+static const u_int16_t isp_1000_risc_code[] = { -+ 0x0078, 0x1041, 0x0000, 0x2757, 0x0000, 0x12ff, 0x2043, 0x4f50, -+ 0x5952, 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, -+ 0x2c31, 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, -+ 0x4320, 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, -+ 0x5350, 0x3130, 0x3030, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, -+ 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3337, 0x2020, -+ 0x2043, 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3135, -+ 0x2050, 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2000, 0x3030, -+ 0x2024, 0x20b9, 0x1212, 0x20c1, 0x0008, 0x2071, 0x0010, 0x70c3, -+ 0x0004, 0x20c9, 0x5cff, 0x2089, 0x10ee, 0x70c7, 0x4953, 0x70cb, -+ 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0001, 0x3f00, 0x70d6, 0x2031, -+ 0x0030, 0x2079, 0x3800, 0x7863, 0x0000, 0x2fa0, 0x2009, 0x031b, -+ 0x2011, 0x0000, 0x20a9, 0x0040, 0x42a4, 0x8109, 0x00c0, 0x1062, -+ 0x789b, 0x0101, 0x780b, 0x0002, 0x780f, 0x0002, 0x784f, 0x0bb8, -+ 0x2009, 0x3835, 0x200b, 0x0003, 0x78bb, 0x0000, 0x78bf, 0x0000, -+ 0x78c3, 0x0000, 0x2069, 0x3840, 0x00a8, 0x1085, 0x681b, 0x003c, -+ 0x2009, 0x1313, 0x21b8, 0x0078, 0x1087, 0x681b, 0x0028, 0x6807, -+ 0x0007, 0x680b, 0x00fa, 0x680f, 0x0008, 0x6813, 0x0005, 0x681f, -+ 0x0000, 0x6823, 0x0006, 0x6817, 0x0008, 0x6827, 0x0000, 0x2069, -+ 0x3a80, 0x2011, 0x0020, 0x2009, 0x0010, 0x680b, 0x0c19, 0x680f, -+ 0x0019, 0x6803, 0xdd00, 0x6807, 0x001a, 0x6a1a, 0x2d00, 0xa0e8, -+ 0x0008, 0xa290, 0x0004, 0x8109, 0x00c0, 0x109d, 0x2069, 0x3b00, -+ 0x2009, 0x0002, 0x20a9, 0x0100, 0x683f, 0x0000, 0x2001, 0x0008, -+ 0x8007, 0x6832, 0x6837, 0x000a, 0x680b, 0x0040, 0x6817, 0x0100, -+ 0x681f, 0x0064, 0xade8, 0x0010, 0x0070, 0x10c8, 0x0078, 0x10b4, -+ 0x8109, 0x00c0, 0x10b2, 0x1078, 0x1b64, 0x1078, 0x31c0, 0x1078, -+ 0x1747, 0x1078, 0x368b, 0x3200, 0xa085, 0x000d, 0x2090, 0x70c3, -+ 0x0000, 0x0090, 0x10e2, 0x70c0, 0xa086, 0x0002, 0x00c0, 0x10e2, -+ 0x1078, 0x11e0, 0x1078, 0x1112, 0x1078, 0x18f2, 0x1078, 0x1aaf, -+ 0x1078, 0x34fd, 0x1078, 0x184d, 0x0078, 0x10e2, 0x10f6, 0x10f8, -+ 0x1d05, 0x1d05, 0x321e, 0x321e, 0x1d05, 0x1d05, 0x0078, 0x10f6, -+ 0x0078, 0x10f8, 0x0078, 0x10fa, 0x0078, 0x10fc, 0x7008, 0x800c, -+ 0x00c8, 0x110d, 0x7007, 0x0002, 0xa08c, 0x000c, 0x00c0, 0x110e, -+ 0x8004, 0x8004, 0x00c8, 0x110d, 0x087a, 0x097a, 0x70c3, 0x4002, -+ 0x0078, 0x11e3, 0x7814, 0xa005, 0x00c0, 0x111a, 0x0010, 0x1156, -+ 0x0078, 0x1155, 0x2009, 0x3868, 0x2104, 0xa005, 0x00c0, 0x1155, -+ 0x7814, 0xa086, 0x0001, 0x00c0, 0x1127, 0x1078, 0x15ae, 0x7817, -+ 0x0000, 0x2009, 0x386f, 0x2104, 0xa065, 0x0040, 0x1143, 0x2009, -+ 0x386a, 0x211c, 0x8108, 0x2114, 0x8108, 0x2104, 0xa210, 0xa399, -+ 0x0000, 0x2009, 0x0018, 0x6083, 0x0103, 0x1078, 0x16d7, 0x00c0, -+ 0x114f, 0x1078, 0x173e, 0x2009, 0x386f, 0x200b, 0x0000, 0x2009, -+ 0x3869, 0x2104, 0x200b, 0x0000, 0xa005, 0x0040, 0x1153, 0x2001, -+ 0x4005, 0x0078, 0x11e2, 0x0078, 0x11e0, 0x007c, 0x2061, 0x0000, -+ 0x6018, 0xa084, 0x0001, 0x0040, 0x115e, 0x007c, 0x70c3, 0x0000, -+ 0x70c7, 0x0000, 0x70cb, 0x0000, 0x70cf, 0x0000, 0x70c0, 0xa0bc, -+ 0xffc0, 0x00c0, 0x11ae, 0x2038, 0x0079, 0x116e, 0x11e0, 0x122e, -+ 0x11fc, 0x122e, 0x127f, 0x127f, 0x11f3, 0x1608, 0x128a, 0x11ef, -+ 0x1200, 0x1202, 0x1204, 0x1206, 0x160d, 0x11ef, 0x1292, 0x12ba, -+ 0x15bc, 0x1602, 0x1208, 0x14e3, 0x1505, 0x151f, 0x1548, 0x149c, -+ 0x14aa, 0x14be, 0x14d2, 0x1357, 0x1332, 0x12e2, 0x12e9, 0x12ee, -+ 0x12f3, 0x12f9, 0x12fe, 0x1303, 0x1308, 0x130d, 0x1311, 0x1326, -+ 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x1363, 0x136c, 0x137b, -+ 0x13a1, 0x13ab, 0x13b2, 0x13d8, 0x13e7, 0x13f6, 0x1408, 0x147a, -+ 0x11ef, 0x148a, 0x11ef, 0x11ef, 0x11ef, 0x1491, 0xa0bc, 0xffa0, -+ 0x00c0, 0x11ef, 0x2038, 0xa084, 0x001f, 0x0079, 0x11b7, 0x11ef, -+ 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, -+ 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x1665, 0x1674, 0x11ef, -+ 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, 0x11ef, -+ 0x11ef, 0x16b3, 0x16bd, 0x16c1, 0x16cf, 0x167f, 0x169c, 0x72ca, -+ 0x71c6, 0x2001, 0x4006, 0x0078, 0x11e2, 0x73ce, 0x72ca, 0x71c6, -+ 0x2001, 0x4000, 0x70c2, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, -+ 0x5000, 0x2091, 0x4080, 0x007c, 0x71c6, 0x0078, 0x11e2, 0x70c3, -+ 0x4001, 0x0078, 0x11e3, 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, -+ 0x0005, 0x53a3, 0x0078, 0x11e0, 0x70c4, 0x70c3, 0x0004, 0x007a, -+ 0x0078, 0x11e0, 0x0078, 0x11e0, 0x0078, 0x11e0, 0x0078, 0x11e0, -+ 0x2091, 0x8000, 0x70c3, 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, -+ 0x70cf, 0x2020, 0x70d3, 0x0001, 0x3f00, 0x70d6, 0x2079, 0x0000, -+ 0x781b, 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x0457, -+ 0x2051, 0x0470, 0x2061, 0x0472, 0x20b9, 0xffff, 0x20c1, 0x0000, -+ 0x2091, 0x5000, 0x2091, 0x4080, 0x0078, 0x0455, 0x71d0, 0x72c8, -+ 0x73cc, 0x70c4, 0x20a0, 0x2098, 0x2031, 0x0030, 0x81ff, 0x0040, -+ 0x11e0, 0x7007, 0x0004, 0x731a, 0x721e, 0x2051, 0x0012, 0x2049, -+ 0x125d, 0x2041, 0x11e0, 0x7003, 0x0002, 0xa786, 0x0001, 0x00c0, -+ 0x124f, 0x2049, 0x126b, 0x2041, 0x1277, 0x7003, 0x0003, 0x7017, -+ 0x0000, 0x810b, 0x7112, 0x00c8, 0x1257, 0x7017, 0x0001, 0x7007, -+ 0x0001, 0xa786, 0x0001, 0x0040, 0x126b, 0x700c, 0xa084, 0x007f, -+ 0x8004, 0x2009, 0x0020, 0xa102, 0x0942, 0x094a, 0x20a8, 0x26a0, -+ 0x53a6, 0x0078, 0x10fe, 0x700c, 0xa084, 0x007f, 0x0040, 0x126b, -+ 0x80ac, 0x0048, 0x126b, 0x2698, 0x53a5, 0x0078, 0x10fe, 0x700c, -+ 0xa084, 0x007f, 0x80ac, 0x2698, 0x53a5, 0x0078, 0x11e0, 0x71c4, -+ 0x70c8, 0x2114, 0xa79e, 0x0004, 0x00c0, 0x1287, 0x200a, 0x72ca, -+ 0x0078, 0x11df, 0x70c7, 0x0125, 0x70cb, 0x0000, 0x70cf, 0x0f00, -+ 0x0078, 0x11e0, 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6, 0x72ca, -+ 0x73ce, 0x74d2, 0xa005, 0x0040, 0x12b4, 0x8001, 0x7872, 0xa084, -+ 0xfc00, 0x0040, 0x12ab, 0x7898, 0xa085, 0x0001, 0x789a, 0x2001, -+ 0x4005, 0x0078, 0x11e2, 0x7a7a, 0x7b7e, 0x7c76, 0x7898, 0xa084, -+ 0xfffc, 0x789a, 0x0078, 0x12b8, 0x7898, 0xa085, 0x0001, 0x789a, -+ 0x0078, 0x11e0, 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6, 0x72ca, -+ 0x73ce, 0x74d6, 0xa005, 0x0040, 0x12dc, 0x8001, 0x7886, 0xa084, -+ 0xfc00, 0x0040, 0x12d3, 0x7898, 0xa085, 0x0100, 0x789a, 0x2001, -+ 0x4005, 0x0078, 0x11e2, 0x7a8e, 0x7b92, 0x7c8a, 0x7898, 0xa084, -+ 0xfcff, 0x789a, 0x0078, 0x12e0, 0x7898, 0xa085, 0x0100, 0x789a, -+ 0x0078, 0x11e0, 0x2009, 0x3859, 0x210c, 0x2011, 0x0372, 0x0078, -+ 0x11de, 0x2009, 0x3841, 0x210c, 0x0078, 0x11df, 0x2009, 0x3842, -+ 0x210c, 0x0078, 0x11df, 0x2061, 0x3840, 0x610c, 0x6210, 0x0078, -+ 0x11de, 0x2009, 0x3845, 0x210c, 0x0078, 0x11df, 0x2009, 0x3846, -+ 0x210c, 0x0078, 0x11df, 0x2009, 0x3847, 0x210c, 0x0078, 0x11df, -+ 0x2009, 0x3848, 0x210c, 0x0078, 0x11df, 0x7908, 0x7a0c, 0x0078, -+ 0x11de, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xa0e8, 0x3a80, 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040, 0x1323, -+ 0x6b08, 0x0078, 0x1324, 0x6b0c, 0x0078, 0x11dd, 0x77c4, 0x1078, -+ 0x1758, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, -+ 0x0078, 0x11dd, 0x2091, 0x8000, 0x7848, 0xa005, 0x00c0, 0x1346, -+ 0x2061, 0x3b00, 0x20a9, 0x0100, 0x603c, 0xa005, 0x00c0, 0x1346, -+ 0xace0, 0x0010, 0x00f0, 0x133c, 0x0078, 0x134e, 0x2019, 0x0000, -+ 0x2011, 0x0000, 0x2009, 0x0000, 0x0078, 0x1353, 0x7bb8, 0x7abc, -+ 0x79c0, 0x78c3, 0x0000, 0x2091, 0x8001, 0x0078, 0x11dd, 0x77c4, -+ 0x1078, 0x1758, 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, 0x2091, -+ 0x8001, 0x0078, 0x11dd, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x11d8, -+ 0x1078, 0x1be8, 0x0078, 0x11dd, 0x71c4, 0xa182, 0x0010, 0x00c8, -+ 0x11d8, 0x2011, 0x3841, 0x2204, 0x007e, 0x2112, 0x1078, 0x1ba1, -+ 0x017f, 0x0078, 0x11df, 0x71c4, 0x2011, 0x1399, 0x20a9, 0x0008, -+ 0x2204, 0xa106, 0x0040, 0x138b, 0x8210, 0x0070, 0x1389, 0x0078, -+ 0x1380, 0x0078, 0x11d8, 0xa292, 0x1399, 0x027e, 0x2011, 0x3842, -+ 0x2204, 0x2112, 0x017f, 0x007e, 0x1078, 0x1bad, 0x017f, 0x0078, -+ 0x11df, 0x03e8, 0x00fa, 0x01f4, 0x02ee, 0x0064, 0x0019, 0x0032, -+ 0x004b, 0x2061, 0x3840, 0x610c, 0x6210, 0x70c4, 0x600e, 0x70c8, -+ 0x6012, 0x0078, 0x11de, 0x2061, 0x3840, 0x6114, 0x70c4, 0x6016, -+ 0x0078, 0x11df, 0x71c4, 0x2011, 0x0004, 0x2019, 0x1212, 0xa186, -+ 0x0028, 0x0040, 0x13cb, 0x2011, 0x0005, 0x2019, 0x1212, 0xa186, -+ 0x0032, 0x0040, 0x13cb, 0x2011, 0x0006, 0x2019, 0x1313, 0xa186, -+ 0x003c, 0x00c0, 0x11d8, 0x2061, 0x3840, 0x6018, 0x007e, 0x611a, -+ 0x23b8, 0x1078, 0x1bbe, 0x1078, 0x368b, 0x017f, 0x0078, 0x11df, -+ 0x71c4, 0xa184, 0xffcf, 0x00c0, 0x11d8, 0x2011, 0x3847, 0x2204, -+ 0x2112, 0x007e, 0x1078, 0x1be0, 0x017f, 0x0078, 0x11df, 0x71c4, -+ 0xa182, 0x0010, 0x00c8, 0x11d8, 0x2011, 0x3848, 0x2204, 0x007e, -+ 0x2112, 0x1078, 0x1bcf, 0x017f, 0x0078, 0x11df, 0x71c4, 0x72c8, -+ 0xa184, 0xfffd, 0x00c0, 0x11d7, 0xa284, 0xfffd, 0x00c0, 0x11d7, -+ 0x2100, 0x7908, 0x780a, 0x2200, 0x7a0c, 0x780e, 0x0078, 0x11de, -+ 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, -+ 0x3a80, 0x2019, 0x0000, 0x72c8, 0x6800, 0x007e, 0xa226, 0x0040, -+ 0x1440, 0xa284, 0x0001, 0x0040, 0x1422, 0x2220, 0xa39d, 0x0002, -+ 0xa294, 0xfffe, 0x6a02, 0xa484, 0x2000, 0x0040, 0x1429, 0xa39d, -+ 0x0010, 0xa484, 0x1000, 0x0040, 0x142f, 0xa39d, 0x0008, 0xa484, -+ 0x4000, 0x0040, 0x1440, 0x810f, 0xa284, 0x4000, 0x0040, 0x143c, -+ 0x1078, 0x1c02, 0x0078, 0x1440, 0x1078, 0x1bf4, 0x0078, 0x1440, -+ 0x72cc, 0x82ff, 0x0040, 0x1472, 0x6808, 0xa206, 0x0040, 0x1472, -+ 0xa2a4, 0x00ff, 0x2061, 0x3840, 0x6118, 0xa186, 0x0028, 0x0040, -+ 0x1459, 0xa186, 0x0032, 0x0040, 0x145f, 0xa186, 0x003c, 0x0040, -+ 0x1465, 0xa482, 0x0064, 0x0048, 0x146f, 0x0078, 0x1469, 0xa482, -+ 0x0050, 0x0048, 0x146f, 0x0078, 0x1469, 0xa482, 0x0043, 0x0048, -+ 0x146f, 0x71c4, 0x71c6, 0x027f, 0x72ca, 0x0078, 0x11d9, 0x6a0a, -+ 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x71c4, -+ 0x0078, 0x11dd, 0x77c4, 0x1078, 0x1758, 0x2091, 0x8000, 0x6a14, -+ 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, 0x2708, -+ 0x0078, 0x11dd, 0x2011, 0x3835, 0x220c, 0x70c4, 0x2012, 0x0078, -+ 0x11df, 0x71c4, 0x72c8, 0x73cc, 0xa182, 0x0010, 0x00c8, 0x11d8, -+ 0x1078, 0x1c10, 0x0078, 0x11dd, 0x77c4, 0x1078, 0x1758, 0x2091, -+ 0x8000, 0x6a08, 0xa295, 0x0002, 0x6a0a, 0x2091, 0x8001, 0x2708, -+ 0x0078, 0x11de, 0x77c4, 0x1078, 0x1758, 0x2091, 0x8000, 0x6a08, -+ 0xa294, 0xfff9, 0x6a0a, 0x6804, 0xa005, 0x0040, 0x14b9, 0x1078, -+ 0x1b49, 0x2091, 0x8001, 0x2708, 0x0078, 0x11de, 0x77c4, 0x1078, -+ 0x1758, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0004, 0x6a0a, 0x6804, -+ 0xa005, 0x0040, 0x14cd, 0x1078, 0x1b49, 0x2091, 0x8001, 0x2708, -+ 0x0078, 0x11de, 0x77c4, 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, -+ 0x0020, 0x2091, 0x8000, 0x1078, 0x1765, 0x2091, 0x8001, 0x2708, -+ 0x6a08, 0x0078, 0x11de, 0x77c4, 0x72c8, 0x73cc, 0x77c6, 0x72ca, -+ 0x73ce, 0x1078, 0x17e6, 0x00c0, 0x1501, 0x6818, 0xa005, 0x0040, -+ 0x14fb, 0x2708, 0x1078, 0x1c20, 0x00c0, 0x14fb, 0x7817, 0xffff, -+ 0x2091, 0x8001, 0x007c, 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, -+ 0x11e2, 0x2091, 0x8001, 0x0078, 0x11e0, 0x77c4, 0x77c6, 0x2041, -+ 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, -+ 0x1765, 0x2061, 0x3840, 0x60a3, 0x0003, 0x67b6, 0x60a7, 0x0000, -+ 0x7817, 0xffff, 0x1078, 0x1b49, 0x2091, 0x8001, 0x007c, 0x77c8, -+ 0x77ca, 0x77c4, 0x77c6, 0xa7bc, 0xff00, 0x2091, 0x8000, 0x2061, -+ 0x3840, 0x60a3, 0x0002, 0x60a7, 0x0000, 0x67b6, 0x7817, 0xffff, -+ 0x1078, 0x1b49, 0x2091, 0x8001, 0x2041, 0x0021, 0x2049, 0x0004, -+ 0x2051, 0x0010, 0x2091, 0x8000, 0x1078, 0x1765, 0x70c8, 0x683e, -+ 0x8738, 0xa784, 0x001f, 0x00c0, 0x153c, 0x2091, 0x8001, 0x007c, -+ 0x7898, 0xa084, 0x0003, 0x00c0, 0x156c, 0x2039, 0x0000, 0x2041, -+ 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x1078, 0x1758, 0x2091, -+ 0x8000, 0x6808, 0xa80d, 0x690a, 0x2091, 0x8001, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x1555, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, -+ 0xa784, 0x0f00, 0x00c0, 0x1555, 0x2091, 0x8000, 0x2069, 0x0100, -+ 0x6830, 0xa084, 0x0040, 0x0040, 0x1595, 0x684b, 0x0004, 0x20a9, -+ 0x0014, 0x6848, 0xa084, 0x0004, 0x0040, 0x1582, 0x0070, 0x1582, -+ 0x0078, 0x1579, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, -+ 0x0001, 0x0040, 0x158f, 0x0070, 0x158f, 0x0078, 0x1586, 0x20a9, -+ 0x00fa, 0x0070, 0x1595, 0x0078, 0x1591, 0x2079, 0x3800, 0x7817, -+ 0x0001, 0x2061, 0x3840, 0x60a3, 0x0001, 0x60a7, 0x0000, 0x60c3, -+ 0x000f, 0x7898, 0xa085, 0x0002, 0x789a, 0x6808, 0xa084, 0xfffd, -+ 0x680a, 0x681b, 0x0046, 0x2091, 0x8001, 0x007c, 0x7898, 0xa084, -+ 0xfffd, 0x789a, 0xa084, 0x0001, 0x00c0, 0x15b8, 0x1078, 0x1830, -+ 0x71c4, 0x71c6, 0x794a, 0x007c, 0x74c4, 0x73c8, 0x72cc, 0x74c6, -+ 0x73ca, 0x72ce, 0x2079, 0x3800, 0x2009, 0x0040, 0x1078, 0x1735, -+ 0x0040, 0x15fe, 0x1078, 0x1705, 0x0040, 0x15d2, 0x1078, 0x173e, -+ 0x0078, 0x15fe, 0x6010, 0x2091, 0x8000, 0x7817, 0xffff, 0x2009, -+ 0x3868, 0x200b, 0x0005, 0x8108, 0x200b, 0x0000, 0x8108, 0x230a, -+ 0x8108, 0x220a, 0x8108, 0x240a, 0x8108, 0x200a, 0x8108, 0x200b, -+ 0x0000, 0x8108, 0x2c0a, 0xa02e, 0x2530, 0x0e7e, 0x1078, 0x3199, -+ 0x0e7f, 0x6592, 0x65a2, 0x6696, 0x66a6, 0x60ab, 0x0000, 0x60af, -+ 0x0000, 0x1078, 0x1b49, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, -+ 0x0078, 0x11e3, 0x71c4, 0x70c7, 0x0000, 0x7906, 0x0078, 0x11e0, -+ 0x71c4, 0x71c6, 0x2168, 0x0078, 0x160f, 0x2069, 0x1000, 0x690c, -+ 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0, 0x1611, 0xa285, -+ 0x0000, 0x00c0, 0x161f, 0x70c3, 0x4000, 0x0078, 0x1621, 0x70c3, -+ 0x4003, 0x70ca, 0x0078, 0x11e3, 0x71c4, 0x72c8, 0x73cc, 0x2100, -+ 0xa184, 0xfffc, 0x00c0, 0x11ef, 0x2100, 0x0079, 0x162f, 0x1646, -+ 0x165b, 0x165d, 0x165f, 0x70c3, 0x4003, 0x71ce, 0x72d2, 0x73d6, -+ 0x0078, 0x1642, 0x70c3, 0x4000, 0x70cf, 0x0000, 0x70d3, 0x0000, -+ 0x70d7, 0x0000, 0x77c6, 0x71ca, 0x0078, 0x11e0, 0x2031, 0x1661, -+ 0x2624, 0x8630, 0x2412, 0x2204, 0xa446, 0x00c0, 0x1633, 0xa484, -+ 0xffff, 0x00c0, 0x1648, 0x2031, 0x1661, 0x8210, 0x8319, 0xa384, -+ 0xffff, 0x00c0, 0x1648, 0x0078, 0x163a, 0x0078, 0x163a, 0x0078, -+ 0x163a, 0x5555, 0xaaaa, 0xffff, 0x0000, 0x77c4, 0x1078, 0x1758, -+ 0x2091, 0x8000, 0x6830, 0xa084, 0xff00, 0x8007, 0x2010, 0x2091, -+ 0x8001, 0x2708, 0x0078, 0x11de, 0x77c4, 0x1078, 0x1758, 0x2091, -+ 0x8000, 0x6a34, 0x2091, 0x8001, 0x2708, 0x0078, 0x11de, 0x77c4, -+ 0x077e, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0x72c8, 0x8217, 0xa294, -+ 0xff00, 0x1078, 0x1758, 0x2091, 0x8000, 0x6c30, 0x6a32, 0x2091, -+ 0x8001, 0x8738, 0x00f0, 0x1689, 0x077f, 0x2708, 0x8427, 0xa4a4, -+ 0x00ff, 0x2410, 0x0078, 0x11de, 0x77c4, 0x077e, 0xa7bc, 0xff00, -+ 0x20a9, 0x0020, 0x72c8, 0x1078, 0x1758, 0x2091, 0x8000, 0x6c34, -+ 0x6a36, 0x2091, 0x8001, 0x8738, 0x00f0, 0x16a3, 0x077f, 0x2708, -+ 0x2410, 0x0078, 0x11de, 0x7960, 0x71c6, 0x71c4, 0xa182, 0x0003, -+ 0x00c8, 0x11d8, 0x7962, 0x0078, 0x11e0, 0x7960, 0x71c6, 0x0078, -+ 0x11e0, 0x7954, 0x71c6, 0x71c4, 0x7956, 0x7958, 0x71ca, 0x71c8, -+ 0x795a, 0x795c, 0x71ce, 0x71cc, 0x795e, 0x0078, 0x11e0, 0x7954, -+ 0x71c6, 0x7958, 0x71ca, 0x795c, 0x71ce, 0x0078, 0x11e0, 0x700c, -+ 0xa084, 0x007f, 0x0040, 0x16e3, 0x7007, 0x0004, 0x7004, 0xa084, -+ 0x0004, 0x00c0, 0x16de, 0x7017, 0x0000, 0x7112, 0x721a, 0x731e, -+ 0x8108, 0x810c, 0x81a9, 0x8c98, 0x20a1, 0x0030, 0x6080, 0x20a2, -+ 0x53a6, 0x780c, 0xa085, 0x0000, 0x7002, 0x7007, 0x0001, 0x7108, -+ 0x8104, 0x00c8, 0x16f7, 0x7007, 0x0002, 0xa184, 0x000c, 0x710c, -+ 0xa184, 0x0300, 0x7003, 0x0000, 0x007c, 0x700c, 0xa084, 0x007f, -+ 0x0040, 0x1711, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, -+ 0x170c, 0x7017, 0x0000, 0x7112, 0x721a, 0x731e, 0x2099, 0x0030, -+ 0x8108, 0x81ac, 0x780c, 0xa085, 0x0001, 0x7002, 0x7007, 0x0001, -+ 0x7008, 0x800c, 0x00c8, 0x1720, 0x7007, 0x0002, 0xa08c, 0x000c, -+ 0x00c0, 0x1732, 0x710c, 0xa184, 0x0300, 0x00c0, 0x1732, 0x2ca0, -+ 0x53a5, 0xa006, 0x7003, 0x0000, 0x007c, 0x7850, 0xa065, 0x0040, -+ 0x173d, 0x2c04, 0x7852, 0x2063, 0x0000, 0x007c, 0x0f7e, 0x2079, -+ 0x3800, 0x7850, 0x2062, 0x2c00, 0x7852, 0x0f7f, 0x007c, 0x2011, -+ 0x5d00, 0x7a52, 0x2019, 0x0372, 0x8319, 0x0040, 0x1755, 0xa280, -+ 0x002f, 0x2012, 0x2010, 0x0078, 0x174c, 0x2013, 0x0000, 0x007c, -+ 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, -+ 0x8003, 0xa105, 0xa0e8, 0x3b00, 0x007c, 0x1078, 0x1758, 0x2900, -+ 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084, 0xffef, 0xa80d, 0x690a, -+ 0x2091, 0x8000, 0x2009, 0x384f, 0x210c, 0x6804, 0xa005, 0x0040, -+ 0x1784, 0xa116, 0x00c0, 0x1784, 0x2060, 0x6000, 0x6806, 0x017e, -+ 0x200b, 0x0000, 0x0078, 0x1787, 0x2009, 0x0000, 0x017e, 0x6804, -+ 0xa065, 0x0040, 0x1798, 0x6000, 0x6806, 0x1078, 0x17ad, 0x1078, -+ 0x18a4, 0x1078, 0x2b27, 0x6810, 0x8001, 0x6812, 0x00c0, 0x1787, -+ 0x1078, 0x2b27, 0x017f, 0x6902, 0x6906, 0x2091, 0x8001, 0x007c, -+ 0xa065, 0x0040, 0x17ac, 0x6098, 0x609b, 0x0000, 0x2008, 0x1078, -+ 0x173e, 0x2100, 0x0078, 0x17a0, 0x007c, 0x6003, 0x0103, 0x20a9, -+ 0x001c, 0xac80, 0x0004, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, -+ 0x6016, 0x682c, 0x601e, 0x007c, 0x0e7e, 0x2071, 0x3840, 0x7040, -+ 0xa08c, 0x0200, 0x00c0, 0x17ca, 0xa088, 0x3880, 0x2d0a, 0x8000, -+ 0x7042, 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x3840, 0x2009, -+ 0x3880, 0x7240, 0x8221, 0x8211, 0x0048, 0x17e4, 0x2104, 0x8108, -+ 0xad06, 0x00c0, 0x17d3, 0x8119, 0x211e, 0x8108, 0x8318, 0x8211, -+ 0x00c8, 0x17dc, 0x7442, 0xa006, 0x0e7f, 0x007c, 0x1078, 0x1758, -+ 0x2091, 0x8000, 0x6804, 0x781e, 0xa065, 0x0040, 0x182f, 0x0078, -+ 0x17f7, 0x2c00, 0x781e, 0x6000, 0xa065, 0x0040, 0x182f, 0x600c, -+ 0xa306, 0x00c0, 0x17f1, 0x6008, 0xa206, 0x00c0, 0x17f1, 0x2c28, -+ 0x2001, 0x384f, 0x2004, 0xac06, 0x0040, 0x182f, 0x6804, 0xac06, -+ 0x00c0, 0x1814, 0x6000, 0x2060, 0x6806, 0xa005, 0x00c0, 0x1814, -+ 0x6803, 0x0000, 0x0078, 0x181e, 0x6400, 0x781c, 0x2060, 0x6402, -+ 0xa486, 0x0000, 0x00c0, 0x181e, 0x2c00, 0x6802, 0x2560, 0x1078, -+ 0x17ad, 0x6017, 0x0005, 0x601f, 0x0020, 0x1078, 0x18a4, 0x1078, -+ 0x2b27, 0x6810, 0x8001, 0x6812, 0x2001, 0xffff, 0xa005, 0x007c, -+ 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, -+ 0x2091, 0x8000, 0x1078, 0x1765, 0x8738, 0xa784, 0x001f, 0x00c0, -+ 0x183a, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, -+ 0x00c0, 0x183a, 0x2091, 0x8001, 0x007c, 0x0068, 0x185c, 0x2061, -+ 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x185c, 0x78ac, 0x78af, -+ 0x0000, 0xa005, 0x00c0, 0x185d, 0x007c, 0xa08c, 0xfff0, 0x0040, -+ 0x1863, 0x1078, 0x1ce7, 0x0079, 0x1865, 0x1875, 0x1877, 0x187d, -+ 0x1881, 0x1875, 0x1885, 0x1875, 0x1875, 0x188b, 0x1875, 0x1892, -+ 0x1896, 0x1875, 0x1875, 0x1875, 0x1875, 0x1078, 0x1ce7, 0x1078, -+ 0x1830, 0x2001, 0x8001, 0x0078, 0x189c, 0x2001, 0x8003, 0x0078, -+ 0x189c, 0x2001, 0x8004, 0x0078, 0x189c, 0x1078, 0x1830, 0x2001, -+ 0x8006, 0x0078, 0x189c, 0x2001, 0x8009, 0x2011, 0x382c, 0x220c, -+ 0x0078, 0x11ec, 0x2001, 0x800c, 0x0078, 0x189c, 0x1078, 0x1830, -+ 0x2001, 0x800d, 0x0078, 0x189c, 0x70c2, 0x2061, 0x0000, 0x601b, -+ 0x0001, 0x2091, 0x4080, 0x007c, 0x2c04, 0x6082, 0x2c08, 0x2063, -+ 0x0000, 0x7864, 0x8000, 0x7866, 0x7868, 0xa005, 0x796a, 0x0040, -+ 0x18b4, 0x2c02, 0x0078, 0x18b5, 0x796e, 0x007c, 0x0c7e, 0x2061, -+ 0x3800, 0x6883, 0x0103, 0x2d08, 0x206b, 0x0000, 0x6064, 0x8000, -+ 0x6066, 0x6068, 0xa005, 0x616a, 0x0040, 0x18c9, 0x2d02, 0x0078, -+ 0x18cc, 0x616e, 0x1078, 0x2b41, 0x0c7f, 0x007c, 0x1078, 0x18df, -+ 0x0040, 0x18de, 0x0c7e, 0x6098, 0xa065, 0x0040, 0x18d9, 0x1078, -+ 0x17a0, 0x0c7f, 0x609b, 0x0000, 0x1078, 0x173e, 0x007c, 0x786c, -+ 0xa065, 0x0040, 0x18f1, 0x2091, 0x8000, 0x7864, 0x8001, 0x7866, -+ 0x2c04, 0x786e, 0xa005, 0x00c0, 0x18ef, 0x786a, 0x8000, 0x2091, -+ 0x8001, 0x007c, 0x7898, 0xa005, 0x00c0, 0x194d, 0x7974, 0x70d0, -+ 0x0005, 0x0005, 0x72d0, 0xa206, 0x00c0, 0x18f7, 0x2200, 0xa106, -+ 0x00c0, 0x190e, 0x7804, 0xa005, 0x0040, 0x194d, 0x7807, 0x0000, -+ 0x0068, 0x194d, 0x2091, 0x4080, 0x0078, 0x194d, 0x1078, 0x1735, -+ 0x0040, 0x194d, 0x7a7c, 0x7b78, 0xa184, 0xff00, 0x0040, 0x1921, -+ 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, 0x0078, -+ 0x1924, 0x8107, 0x8004, 0x8004, 0xa210, 0xa399, 0x0000, 0x2009, -+ 0x0040, 0x1078, 0x1705, 0x0040, 0x1944, 0x1078, 0x173e, 0x7880, -+ 0x8000, 0x7882, 0xa086, 0x0002, 0x00c0, 0x194d, 0x2091, 0x8000, -+ 0x78af, 0x0002, 0x7883, 0x0000, 0x7898, 0xa085, 0x0003, 0x789a, -+ 0x2091, 0x8001, 0x0078, 0x194d, 0x7883, 0x0000, 0x1078, 0x1a99, -+ 0x6000, 0xa084, 0x0007, 0x0079, 0x194e, 0x007c, 0x1956, 0x1965, -+ 0x1985, 0x1956, 0x1997, 0x1956, 0x1956, 0x1956, 0x2039, 0x0400, -+ 0x78a8, 0xa705, 0x78aa, 0x6004, 0xa705, 0x6006, 0x1078, 0x19e2, -+ 0x6018, 0x78a6, 0x1078, 0x1a81, 0x007c, 0x78a8, 0xa084, 0x0100, -+ 0x0040, 0x196c, 0x0078, 0x1956, 0x78ab, 0x0000, 0x6000, 0x8007, -+ 0xa084, 0x00ff, 0x789e, 0x8001, 0x609b, 0x0000, 0x0040, 0x1982, -+ 0x1078, 0x19e2, 0x0040, 0x1982, 0x78a8, 0xa085, 0x0100, 0x78aa, -+ 0x0078, 0x1984, 0x1078, 0x1a06, 0x007c, 0x78a8, 0xa08c, 0x0e00, -+ 0x00c0, 0x198e, 0xa084, 0x0100, 0x00c0, 0x1990, 0x0078, 0x1956, -+ 0x1078, 0x19e2, 0x00c0, 0x1996, 0x1078, 0x1a06, 0x007c, 0x78a8, -+ 0xa084, 0x0100, 0x0040, 0x199e, 0x0078, 0x1956, 0x78ab, 0x0000, -+ 0x6710, 0x2011, 0x0001, 0x20a9, 0x0001, 0x6014, 0xa084, 0x00ff, -+ 0xa005, 0x0040, 0x19c1, 0x2011, 0x0001, 0xa7bc, 0xff00, 0x20a9, -+ 0x0020, 0xa08e, 0x0001, 0x0040, 0x19c1, 0x2039, 0x0000, 0x2011, -+ 0x0002, 0x20a9, 0x0100, 0xa08e, 0x0002, 0x0040, 0x19c1, 0x0078, -+ 0x19df, 0x1078, 0x1758, 0x2d00, 0x2091, 0x8000, 0x682b, 0x0000, -+ 0x682f, 0x0000, 0x6808, 0xa084, 0xffde, 0x680a, 0x2d00, 0xa080, -+ 0x0010, 0x2068, 0x2091, 0x8001, 0x0070, 0x19d8, 0x0078, 0x19c4, -+ 0x8211, 0x0040, 0x19df, 0x20a9, 0x0100, 0x0078, 0x19c4, 0x1078, -+ 0x173e, 0x007c, 0x78a0, 0xa06d, 0x00c0, 0x19ed, 0x2c00, 0x78a2, -+ 0x78a6, 0x609b, 0x0000, 0x0078, 0x19f9, 0x2c00, 0x689a, 0x609b, -+ 0x0000, 0x78a2, 0x2d00, 0x6002, 0x78a4, 0xad06, 0x00c0, 0x19f9, -+ 0x6002, 0x789c, 0x8001, 0x789e, 0x00c0, 0x1a05, 0x78a8, 0xa084, -+ 0x0000, 0x78aa, 0x78a4, 0x2060, 0xa006, 0x007c, 0xa02e, 0x2530, -+ 0x6118, 0xa184, 0x0060, 0x619e, 0x0040, 0x1a12, 0x0e7e, 0x1078, -+ 0x3199, 0x0e7f, 0x6592, 0x65a2, 0x6696, 0x66a6, 0x60ab, 0x0000, -+ 0x60af, 0x0000, 0x6710, 0x1078, 0x1758, 0x2091, 0x8000, 0x6808, -+ 0xa084, 0x0001, 0x0040, 0x1a34, 0x2091, 0x8001, 0x1078, 0x17ad, -+ 0x2091, 0x8000, 0x1078, 0x18a4, 0x2091, 0x8001, 0x78a3, 0x0000, -+ 0x78a7, 0x0000, 0x0078, 0x1a80, 0x6020, 0xa096, 0x0001, 0x00c0, -+ 0x1a3b, 0x8000, 0x6022, 0x6a10, 0x6814, 0x2091, 0x8001, 0xa202, -+ 0x0048, 0x1a4a, 0x0040, 0x1a4a, 0x2039, 0x0200, 0x1078, 0x1a81, -+ 0x0078, 0x1a80, 0x2c08, 0x2091, 0x8000, 0x6800, 0xa065, 0x0040, -+ 0x1a52, 0x6102, 0x6902, 0x00c0, 0x1a56, 0x6906, 0x2160, 0x6003, -+ 0x0000, 0x6810, 0x8000, 0x6812, 0x78b8, 0x8000, 0x78ba, 0x2091, -+ 0x8001, 0x6808, 0xa08c, 0x0040, 0x0040, 0x1a76, 0xa086, 0x0040, -+ 0x680a, 0x1078, 0x17bc, 0x017e, 0x007e, 0x6930, 0x2100, 0x810f, -+ 0xa105, 0x6832, 0x6934, 0x693a, 0x007f, 0x017f, 0x2091, 0x8000, -+ 0x1078, 0x1b49, 0x2091, 0x8001, 0x78a7, 0x0000, 0x78a3, 0x0000, -+ 0x007c, 0x6004, 0xa705, 0x6006, 0x2091, 0x8000, 0x1078, 0x18a4, -+ 0x2091, 0x8001, 0x78a4, 0xa065, 0x0040, 0x1a94, 0x6098, 0x78a6, -+ 0x609b, 0x0000, 0x0078, 0x1a84, 0x78a3, 0x0000, 0x78a7, 0x0000, -+ 0x007c, 0x7970, 0x7874, 0x8000, 0xa10a, 0x00c8, 0x1aa0, 0xa006, -+ 0x7876, 0x70d2, 0x7804, 0xa005, 0x0040, 0x1aae, 0x8001, 0x7806, -+ 0x00c0, 0x1aae, 0x0068, 0x1aae, 0x2091, 0x4080, 0x007c, 0x0068, -+ 0x1ac9, 0x2029, 0x0000, 0x786c, 0xa065, 0x0040, 0x1ac4, 0x1078, -+ 0x1aca, 0x0040, 0x1ac4, 0x057e, 0x1078, 0x1ae8, 0x057f, 0x00c0, -+ 0x1ac4, 0x8528, 0x0078, 0x1ab3, 0x85ff, 0x0040, 0x1ac9, 0x2091, -+ 0x4080, 0x007c, 0x2091, 0x8000, 0x7b84, 0x7988, 0x72d4, 0x0005, -+ 0x0005, 0x70d4, 0xa206, 0x00c0, 0x1ace, 0x2200, 0xa102, 0x00c0, -+ 0x1ade, 0x2300, 0x2091, 0x8001, 0xa005, 0x007c, 0x0048, 0x1ae4, -+ 0xa302, 0x2091, 0x8001, 0x007c, 0x8002, 0x2091, 0x8001, 0x007c, -+ 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x1b3f, -+ 0x7008, 0x7208, 0xa206, 0x00c0, 0x1b3f, 0xa286, 0x0002, 0x00c0, -+ 0x1b3f, 0x2071, 0x0010, 0xa184, 0xff00, 0x0040, 0x1b08, 0x810f, -+ 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, 0x0078, 0x1b0b, -+ 0x8107, 0x8004, 0x8004, 0x7a90, 0x7b8c, 0xa210, 0xa399, 0x0000, -+ 0x2009, 0x0018, 0x6024, 0xa005, 0x0040, 0x1b18, 0x2009, 0x0040, -+ 0x1078, 0x16d7, 0x0040, 0x1b31, 0x7894, 0x8000, 0x7896, 0xa086, -+ 0x0002, 0x00c0, 0x1b3f, 0x2091, 0x8000, 0x78af, 0x0003, 0x7897, -+ 0x0000, 0x7898, 0xa085, 0x0300, 0x789a, 0x2091, 0x8001, 0x0078, -+ 0x1b3f, 0x7897, 0x0000, 0x1078, 0x18ce, 0x7984, 0x7888, 0x8000, -+ 0xa10a, 0x00c8, 0x1b3c, 0xa006, 0x788a, 0x70d6, 0xa006, 0x2071, -+ 0x0010, 0x2091, 0x8001, 0x007c, 0x2009, 0x3868, 0x2091, 0x8000, -+ 0x200a, 0x0f7e, 0x2079, 0x0100, 0x2009, 0x3840, 0x2104, 0xa086, -+ 0x0000, 0x00c0, 0x1b62, 0x2009, 0x3812, 0x2104, 0xa005, 0x00c0, -+ 0x1b62, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x1b62, 0x0018, 0x1b62, -+ 0x781b, 0x0044, 0x0f7f, 0x007c, 0x127e, 0x2091, 0x2300, 0x2071, -+ 0x3840, 0x2079, 0x0100, 0x2019, 0x305e, 0x20a1, 0x012b, 0x2304, -+ 0xa005, 0x0040, 0x1b7c, 0x789a, 0x8318, 0x23ac, 0x8318, 0x2398, -+ 0x53a6, 0x3318, 0x0078, 0x1b6f, 0x789b, 0x0020, 0x20a9, 0x0010, -+ 0x78af, 0x0000, 0x78af, 0x0220, 0x0070, 0x1b88, 0x0078, 0x1b80, -+ 0x7003, 0x0000, 0x1078, 0x1c87, 0x7004, 0xa084, 0x000f, 0xa085, -+ 0x6280, 0x7806, 0x780f, 0x9200, 0x7843, 0x00d8, 0x7853, 0x0080, -+ 0x780b, 0x0008, 0x7047, 0x387f, 0x7043, 0x0000, 0x127f, 0x2000, -+ 0x007c, 0xa18c, 0x000f, 0x2011, 0x0101, 0x2204, 0xa084, 0xfff0, -+ 0xa105, 0x2012, 0x1078, 0x1c87, 0x007c, 0x2011, 0x0101, 0x20a9, -+ 0x0009, 0x810b, 0x0070, 0x1bb6, 0x0078, 0x1bb1, 0xa18c, 0x0e00, -+ 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, 0x007c, 0x2009, 0x0101, -+ 0x20a9, 0x0005, 0x8213, 0x0070, 0x1bc7, 0x0078, 0x1bc2, 0xa294, -+ 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a, 0x007c, 0x2011, -+ 0x0101, 0x20a9, 0x000c, 0x810b, 0x0070, 0x1bd8, 0x0078, 0x1bd3, -+ 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105, 0x2012, 0x007c, -+ 0x2011, 0x0102, 0x2204, 0xa084, 0xffcf, 0xa105, 0x2012, 0x007c, -+ 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, -+ 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0022, -+ 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, -+ 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061, -+ 0x0100, 0x609a, 0x60a4, 0xa085, 0x0020, 0x60ae, 0x0c7f, 0x007c, -+ 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, -+ 0x60a4, 0x62ae, 0x2010, 0x60a4, 0x63ae, 0x2018, 0x0c7f, 0x007c, -+ 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040, 0x1c65, -+ 0x2061, 0x5c00, 0x1078, 0x1c6d, 0x0040, 0x1c53, 0x20a9, 0x0000, -+ 0x2061, 0x5b00, 0x0c7e, 0x1078, 0x1c6d, 0x0040, 0x1c3f, 0x0c7f, -+ 0x8c60, 0x0070, 0x1c3d, 0x0078, 0x1c32, 0x0078, 0x1c65, 0x007f, -+ 0xa082, 0x5b00, 0x2071, 0x3840, 0x70ba, 0x601c, 0xa085, 0x0800, -+ 0x601e, 0x71b6, 0x60a7, 0x0000, 0x2001, 0x0004, 0x70a2, 0x1078, -+ 0x1b44, 0x0078, 0x1c61, 0x2071, 0x3840, 0x601c, 0xa085, 0x0800, -+ 0x601e, 0x71b6, 0x60a7, 0x0000, 0x2001, 0x0006, 0x70a2, 0x1078, -+ 0x1b44, 0x2001, 0x0000, 0x0078, 0x1c67, 0x2001, 0x0001, 0x2091, -+ 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04, 0xa005, 0x0040, -+ 0x1c84, 0x2060, 0x600c, 0xa306, 0x00c0, 0x1c81, 0x6008, 0xa206, -+ 0x00c0, 0x1c81, 0x6010, 0xa106, 0x00c0, 0x1c81, 0xa006, 0x0078, -+ 0x1c86, 0x6000, 0x0078, 0x1c6e, 0xa085, 0x0001, 0x007c, 0x2011, -+ 0x3841, 0x220c, 0xa18c, 0x000f, 0x2011, 0x013b, 0x2204, 0xa084, -+ 0x0100, 0x0040, 0x1c96, 0x2021, 0xff00, 0x2122, 0x007c, 0x0e7e, -+ 0x68e4, 0xa08c, 0x0020, 0x0040, 0x1ce5, 0xa084, 0x0006, 0x00c0, -+ 0x1ce5, 0x6010, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xa0f0, 0x3a80, 0x7004, 0xa084, 0x000a, 0x00c0, 0x1ce5, 0x7108, -+ 0xa194, 0xff00, 0x0040, 0x1ce5, 0xa18c, 0x00ff, 0x7104, 0xa084, -+ 0x0014, 0x00c0, 0x1cd2, 0x017e, 0x611c, 0xa18d, 0x0002, 0x611e, -+ 0x017f, 0xa085, 0x0014, 0x7006, 0x2001, 0x000c, 0xa106, 0x0040, -+ 0x1cce, 0x2100, 0x8003, 0x2008, 0x0078, 0x1ce2, 0x2009, 0x0019, -+ 0x0078, 0x1ce2, 0x2011, 0x0000, 0x7000, 0xa084, 0xdfff, 0x7002, -+ 0x7004, 0xa084, 0xffef, 0x7006, 0x017e, 0x611c, 0xa18d, 0x0002, -+ 0x611e, 0x017f, 0x2100, 0xa205, 0x700a, 0x0e7f, 0x007c, 0x0068, -+ 0x1ce7, 0x007e, 0x2071, 0x0000, 0x7018, 0xa084, 0x0001, 0x00c0, -+ 0x1cec, 0x007f, 0x2e08, 0x2071, 0x0010, 0x70ca, 0x007f, 0x70c6, -+ 0x70c3, 0x8002, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, -+ 0x007f, 0x2070, 0x007f, 0x0078, 0x1d03, 0x107e, 0x007e, 0x127e, -+ 0x2091, 0x2300, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0xa594, 0x003f, -+ 0xa484, 0x4000, 0x0040, 0x1d1a, 0xa784, 0x007c, 0x00c0, 0x3022, -+ 0x1078, 0x1ce7, 0xa49c, 0x000f, 0xa382, 0x0004, 0x0050, 0x1d22, -+ 0x1078, 0x1ce7, 0x8507, 0xa084, 0x000f, 0x0079, 0x1d27, 0x21a1, -+ 0x2251, 0x2277, 0x24cf, 0x2787, 0x27cf, 0x2808, 0x2883, 0x28dd, -+ 0x2962, 0x1d4d, 0x1d37, 0x1fb8, 0x208d, 0x2766, 0x1d37, 0x1078, -+ 0x1ce7, 0x0018, 0x1d0a, 0x127f, 0x2091, 0x8001, 0x007f, 0x107f, -+ 0x007c, 0x7003, 0x0000, 0x703f, 0x0000, 0x7030, 0xa005, 0x0040, -+ 0x1d4b, 0x7033, 0x0000, 0x0018, 0x1d0a, 0x705c, 0xa005, 0x00c0, -+ 0x1df8, 0x70a0, 0xa084, 0x001f, 0x0079, 0x1d56, 0x1e18, 0x1d5e, -+ 0x1d6c, 0x1d8d, 0x1db3, 0x1ddf, 0x1ddd, 0x1d5e, 0x7808, 0xa084, -+ 0xfffd, 0x780a, 0x2009, 0x0046, 0x1078, 0x260f, 0x00c0, 0x1d6a, -+ 0x7003, 0x0004, 0x0078, 0x1d39, 0x1078, 0x2fe4, 0x00c0, 0x1d8b, -+ 0x70b4, 0x8007, 0x789b, 0x007e, 0x78aa, 0x789b, 0x0010, 0x78ab, -+ 0x000c, 0x789b, 0x0060, 0x78ab, 0x0001, 0x785b, 0x0004, 0x2009, -+ 0x00f7, 0x1078, 0x260d, 0x00c0, 0x1d8b, 0x7003, 0x0004, 0x70c3, -+ 0x000f, 0x7033, 0x3870, 0x0078, 0x1d39, 0x1078, 0x2fe4, 0x00c0, -+ 0x1db1, 0x71b4, 0x8107, 0x789b, 0x007e, 0x78aa, 0x789b, 0x0010, -+ 0xa18c, 0x0007, 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, -+ 0x0060, 0x78ab, 0x0002, 0x785b, 0x0004, 0x2009, 0x00f7, 0x1078, -+ 0x260d, 0x00c0, 0x1db1, 0x7003, 0x0004, 0x70c3, 0x000f, 0x7033, -+ 0x3870, 0x0078, 0x1d39, 0x1078, 0x2fe4, 0x00c0, 0x1ddb, 0x71b4, -+ 0x8107, 0x789b, 0x007e, 0x78aa, 0x789b, 0x0010, 0xa18c, 0x0007, -+ 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0020, 0x71b8, 0x79aa, 0x78ab, -+ 0x000d, 0x789b, 0x0060, 0x78ab, 0x0004, 0x785b, 0x0004, 0x2009, -+ 0x00f7, 0x1078, 0x260d, 0x00c0, 0x1ddb, 0x7003, 0x0004, 0x70c3, -+ 0x000f, 0x7033, 0x3870, 0x0078, 0x1d39, 0x0078, 0x1d8d, 0x1078, -+ 0x2fe4, 0x00c0, 0x1d39, 0x70bc, 0x2068, 0x789b, 0x0010, 0x6f10, -+ 0x1078, 0x2f11, 0x2c50, 0x6810, 0xa084, 0x001f, 0xa085, 0x0080, -+ 0x78aa, 0x6e18, 0x2041, 0x0001, 0x2001, 0x0004, 0x0078, 0x1f41, -+ 0x1078, 0x2fe4, 0x00c0, 0x1d39, 0x789b, 0x0010, 0x705c, 0x2068, -+ 0x6f10, 0x1078, 0x2f11, 0x2c50, 0x6008, 0xa085, 0x0010, 0x600a, -+ 0x6810, 0xa084, 0x001f, 0xa085, 0x0080, 0x78aa, 0x2031, 0x0020, -+ 0x2041, 0x0001, 0x1078, 0x304b, 0x2001, 0x0003, 0x0078, 0x1f2c, -+ 0x0018, 0x1d0a, 0x7440, 0xa485, 0x0000, 0x0040, 0x1e32, 0xa080, -+ 0x3880, 0x2030, 0x7144, 0x8108, 0xa12a, 0x0048, 0x1e29, 0x2009, -+ 0x3880, 0x2164, 0x6504, 0x85ff, 0x00c0, 0x1e3f, 0x8421, 0x00c0, -+ 0x1e23, 0x7146, 0x7003, 0x0000, 0x703f, 0x0000, 0x0078, 0x1d39, -+ 0x7640, 0xa6b0, 0x3880, 0x7144, 0x2600, 0x0078, 0x1e2e, 0x7146, -+ 0x2568, 0x2558, 0x753e, 0x2c50, 0x603c, 0xa085, 0x0000, 0x00c0, -+ 0x1e3c, 0x6708, 0x7736, 0xa784, 0x033f, 0x0040, 0x1e75, 0xa784, -+ 0x0021, 0x00c0, 0x1e3c, 0xa784, 0x0002, 0x0040, 0x1e5e, 0xa784, -+ 0x0004, 0x0040, 0x1e3c, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0008, -+ 0x00c0, 0x1e3c, 0xa784, 0x0010, 0x00c0, 0x1e3c, 0xa184, 0x0200, -+ 0x00c0, 0x1e3c, 0xa784, 0x0100, 0x0040, 0x1e75, 0x6018, 0xa005, -+ 0x00c0, 0x1e3c, 0xa7bc, 0xfeff, 0x670a, 0x681f, 0x0000, 0x6e18, -+ 0xa684, 0x000e, 0x6118, 0x0040, 0x1e85, 0x601c, 0xa102, 0x0048, -+ 0x1e92, 0x0040, 0x1e92, 0x0078, 0x1e38, 0x81ff, 0x0040, 0x1e92, -+ 0x6828, 0x8007, 0xa084, 0x00ff, 0xa082, 0x0003, 0x0040, 0x1e92, -+ 0x00c0, 0x1e38, 0xa184, 0x0400, 0x00c0, 0x1ea1, 0x6130, 0xa18c, -+ 0xff00, 0x810f, 0x6030, 0xa084, 0xff00, 0xa105, 0x6032, 0x0078, -+ 0x1ea5, 0x6034, 0x603a, 0xa7bc, 0xfbff, 0xa784, 0x0080, 0x00c0, -+ 0x1eab, 0x700c, 0x6022, 0xa7bc, 0xff7f, 0x670a, 0x6b10, 0x8307, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x3a80, 0x2060, -+ 0x2048, 0x704a, 0x6000, 0x704e, 0x6004, 0x7052, 0x2a60, 0x0018, -+ 0x1d0a, 0x789b, 0x0010, 0xa046, 0x1078, 0x2fe4, 0x00c0, 0x1d39, -+ 0x6b10, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0x704c, 0xa084, 0x8000, -+ 0x0040, 0x1ed6, 0xa684, 0x0001, 0x0040, 0x1ed8, 0xa39c, 0xffbf, -+ 0xa684, 0x0010, 0x0040, 0x1ede, 0xa39d, 0x0020, 0x7baa, 0x8840, -+ 0xa684, 0x000e, 0x00c0, 0x1ee9, 0xa7bd, 0x0010, 0x670a, 0x0078, -+ 0x1f2a, 0x714c, 0xa18c, 0x0800, 0x0040, 0x2b74, 0x2011, 0x0021, -+ 0x8004, 0x8004, 0x0048, 0x1f00, 0x2011, 0x0022, 0x8004, 0x0048, -+ 0x1f00, 0x2011, 0x0020, 0x8004, 0x0048, 0x1f00, 0x0040, 0x1f2a, -+ 0x7aaa, 0x8840, 0x1078, 0x2ffd, 0x6a10, 0x610c, 0x8108, 0xa18c, -+ 0x00ff, 0xa1e0, 0x5b00, 0x2c64, 0x8cff, 0x0040, 0x1f21, 0x6010, -+ 0xa206, 0x00c0, 0x1f0b, 0x60b4, 0x8001, 0x60b6, 0x00c0, 0x1f06, -+ 0x0c7e, 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x0c7f, 0x0078, -+ 0x1e18, 0x1078, 0x2fe4, 0x00c0, 0x1d39, 0x2a60, 0x610e, 0x79aa, -+ 0x8840, 0x712e, 0x2001, 0x0001, 0x007e, 0x7150, 0xa184, 0x0018, -+ 0x0040, 0x1f40, 0xa184, 0x0010, 0x0040, 0x1f3a, 0x1078, 0x2d3d, -+ 0x00c0, 0x1f40, 0xa184, 0x0008, 0x0040, 0x1f40, 0x1078, 0x2c58, -+ 0x007f, 0x7002, 0xa68c, 0x0060, 0x88ff, 0x0040, 0x1f49, 0xa18d, -+ 0x0004, 0x795a, 0x69b2, 0x789b, 0x0060, 0x2800, 0x78aa, 0x789b, -+ 0x0061, 0x6814, 0xa085, 0x8000, 0x6816, 0x78aa, 0x157e, 0x137e, -+ 0x147e, 0x20a1, 0x012c, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, -+ 0x000a, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6810, 0x8007, -+ 0x789b, 0x007e, 0x78aa, 0x6d90, 0x7dd6, 0x7dde, 0x6e94, 0x7ed2, -+ 0x7eda, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x1f78, 0x0098, 0x1f80, -+ 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x2ffd, 0x0078, 0x1d41, -+ 0x7200, 0xa284, 0x0007, 0xa086, 0x0001, 0x00c0, 0x1f8d, 0x781b, -+ 0x0049, 0x1078, 0x2ffd, 0x0078, 0x1f9e, 0x6ab0, 0xa295, 0x2000, -+ 0x7a5a, 0x781b, 0x0049, 0x1078, 0x2ffd, 0x7200, 0x2500, 0xa605, -+ 0x0040, 0x1f9e, 0xa284, 0x0007, 0x1079, 0x1fae, 0xad80, 0x0008, -+ 0x7032, 0xa284, 0x0007, 0xa086, 0x0001, 0x00c0, 0x1fac, 0x6018, -+ 0x8000, 0x601a, 0x1078, 0x2b4b, 0x0078, 0x1d39, 0x1fb6, 0x3376, -+ 0x3376, 0x3365, 0x3376, 0x1fb6, 0x1fb6, 0x1fb6, 0x1078, 0x1ce7, -+ 0x7808, 0xa084, 0xfffd, 0x780a, 0x0f7e, 0x2079, 0x3800, 0x7898, -+ 0x0f7f, 0xa084, 0x0001, 0x0040, 0x1fde, 0x70a0, 0xa086, 0x0001, -+ 0x00c0, 0x1fcd, 0x70a2, 0x0078, 0x2071, 0x70a0, 0xa086, 0x0005, -+ 0x00c0, 0x1fdc, 0x70bc, 0x2068, 0x6817, 0x0004, 0x6813, 0x0000, -+ 0x681c, 0xa085, 0x0008, 0x681e, 0x70a3, 0x0000, 0x157e, 0x2011, -+ 0x0004, 0x71a0, 0xa186, 0x0001, 0x0040, 0x2000, 0xa186, 0x0007, -+ 0x00c0, 0x1ff0, 0x2009, 0x382b, 0x200b, 0x0005, 0x0078, 0x2000, -+ 0x2009, 0x3813, 0x2104, 0x2009, 0x3812, 0x200a, 0x2009, 0x382b, -+ 0x200b, 0x0001, 0x70a3, 0x0000, 0x70a7, 0x0001, 0x0078, 0x2002, -+ 0x70a3, 0x0000, 0x1078, 0x314d, 0x20a9, 0x0010, 0x2039, 0x0000, -+ 0x1078, 0x2e16, 0xa7b8, 0x0100, 0x0070, 0x2010, 0x0078, 0x2008, -+ 0x7000, 0x2020, 0x0079, 0x2014, 0x2042, 0x202b, 0x202b, 0x201e, -+ 0x2042, 0x2042, 0x201c, 0x201c, 0x1078, 0x1ce7, 0x2021, 0x3857, -+ 0x2404, 0xa005, 0x0040, 0x202b, 0xad06, 0x00c0, 0x202b, 0x6800, -+ 0x2022, 0x0078, 0x203b, 0x681c, 0xa084, 0x0001, 0x00c0, 0x2037, -+ 0x6f10, 0x1078, 0x2f11, 0x1078, 0x2b06, 0x0078, 0x203b, 0x7054, -+ 0x2060, 0x6800, 0x6002, 0x6a16, 0x681c, 0xa085, 0x0008, 0x681e, -+ 0x1078, 0x18b6, 0x2021, 0x5c00, 0x1078, 0x2077, 0x2021, 0x3857, -+ 0x1078, 0x2077, 0x20a9, 0x0000, 0x2021, 0x5b00, 0x1078, 0x2077, -+ 0x8420, 0x0070, 0x2055, 0x0078, 0x204e, 0x1078, 0x2b55, 0x2061, -+ 0x3b00, 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, 0x6110, 0xa102, -+ 0x6012, 0x601b, 0x0000, 0xace0, 0x0010, 0x0070, 0x2069, 0x0078, -+ 0x205d, 0x2009, 0x382f, 0x200b, 0x0000, 0x8421, 0x00c0, 0x205b, -+ 0x157f, 0x7003, 0x0000, 0x703f, 0x0000, 0x0078, 0x1d39, 0x047e, -+ 0x2404, 0xa005, 0x0040, 0x2089, 0x2068, 0x6800, 0x007e, 0x6a16, -+ 0x681c, 0xa085, 0x0008, 0x681e, 0x1078, 0x18b6, 0x007f, 0x0078, -+ 0x2079, 0x047f, 0x2023, 0x0000, 0x007c, 0xa282, 0x0003, 0x0050, -+ 0x2093, 0x1078, 0x1ce7, 0x2300, 0x0079, 0x2096, 0x2099, 0x210c, -+ 0x211a, 0xa282, 0x0002, 0x0040, 0x209f, 0x1078, 0x1ce7, 0x70a0, -+ 0x70a3, 0x0000, 0x70c3, 0x0000, 0x0079, 0x20a6, 0x20ae, 0x20ae, -+ 0x20b0, 0x20e4, 0x2b7a, 0x20ae, 0x20e4, 0x20ae, 0x1078, 0x1ce7, -+ 0x77b4, 0x1078, 0x2e16, 0x77b4, 0xa7bc, 0x0f00, 0x1078, 0x2f11, -+ 0x6018, 0xa005, 0x0040, 0x20db, 0x2021, 0x5c00, 0x2009, 0x0004, -+ 0x2011, 0x0010, 0x1078, 0x216a, 0x0040, 0x20db, 0x157e, 0x20a9, -+ 0x0000, 0x2021, 0x5b00, 0x047e, 0x2009, 0x0004, 0x2011, 0x0010, -+ 0x1078, 0x216a, 0x047f, 0x0040, 0x20da, 0x8420, 0x0070, 0x20da, -+ 0x0078, 0x20cb, 0x157f, 0x8738, 0xa784, 0x001f, 0x00c0, 0x20b6, -+ 0x0078, 0x1d41, 0x0078, 0x1d41, 0x77b4, 0x1078, 0x2f11, 0x6018, -+ 0xa005, 0x0040, 0x210a, 0x2021, 0x5c00, 0x2009, 0x0005, 0x2011, -+ 0x0020, 0x1078, 0x216a, 0x0040, 0x210a, 0x157e, 0x20a9, 0x0000, -+ 0x2021, 0x5b00, 0x047e, 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, -+ 0x216a, 0x047f, 0x0040, 0x2109, 0x8420, 0x0070, 0x2109, 0x0078, -+ 0x20fa, 0x157f, 0x0078, 0x1d41, 0x2200, 0x0079, 0x210f, 0x2112, -+ 0x2114, 0x2114, 0x1078, 0x1ce7, 0x70a3, 0x0000, 0x70a7, 0x0001, -+ 0x0078, 0x1d39, 0x2200, 0x0079, 0x211d, 0x2122, 0x2114, 0x2120, -+ 0x1078, 0x1ce7, 0x1078, 0x261c, 0x70a0, 0xa086, 0x0002, 0x00c0, -+ 0x2159, 0x77b4, 0x1078, 0x2e16, 0x77b4, 0xa7bc, 0x0f00, 0x1078, -+ 0x2f11, 0x6018, 0xa005, 0x0040, 0x2154, 0x2021, 0x5c00, 0x2009, -+ 0x0005, 0x2011, 0x0020, 0x1078, 0x216a, 0x0040, 0x2154, 0x157e, -+ 0x20a9, 0x0000, 0x2021, 0x5b00, 0x047e, 0x2009, 0x0005, 0x2011, -+ 0x0020, 0x1078, 0x216a, 0x047f, 0x0040, 0x2153, 0x8420, 0x0070, -+ 0x2153, 0x0078, 0x2144, 0x157f, 0x8738, 0xa784, 0x001f, 0x00c0, -+ 0x212f, 0x7000, 0xa086, 0x0001, 0x00c0, 0x2acd, 0x1078, 0x2b1e, -+ 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x2ac0, 0x0040, 0x2acd, -+ 0x0078, 0x1e18, 0x2404, 0xa005, 0x0040, 0x219d, 0x2068, 0x2d04, -+ 0x007e, 0x6810, 0xa706, 0x0040, 0x2179, 0x2d20, 0x007f, 0x0078, -+ 0x216b, 0x007f, 0x2022, 0x6916, 0x6814, 0xa086, 0x0050, 0x00c0, -+ 0x218c, 0x6817, 0x0006, 0x2200, 0xa086, 0x0010, 0x00c0, 0x218c, -+ 0x681c, 0xa084, 0xffef, 0x681e, 0x681c, 0xa205, 0x681e, 0x1078, -+ 0x18b6, 0x1078, 0x2b27, 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, -+ 0xffef, 0x600a, 0x1078, 0x2b1e, 0x007c, 0xa085, 0x0001, 0x0078, -+ 0x219c, 0x2300, 0x0079, 0x21a4, 0x21a9, 0x21a7, 0x21ec, 0x1078, -+ 0x1ce7, 0x78e4, 0xa005, 0x00d0, 0x21cc, 0x0018, 0x21cc, 0x2008, -+ 0xa084, 0x0030, 0x00c0, 0x21b8, 0x781b, 0x0049, 0x0078, 0x1d39, -+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x21b4, 0x2100, 0xa084, 0x0007, -+ 0x0079, 0x21c2, 0x21da, 0x21e0, 0x21d4, 0x21ca, 0x2fde, 0x2fde, -+ 0x21ca, 0x21e6, 0x1078, 0x1ce7, 0x7000, 0xa005, 0x0040, 0x1d41, -+ 0x2001, 0x0003, 0x0078, 0x24e3, 0x1078, 0x2df9, 0x781b, 0x0055, -+ 0x0078, 0x1d39, 0x1078, 0x2df9, 0x781b, 0x00dc, 0x0078, 0x1d39, -+ 0x1078, 0x2df9, 0x781b, 0x00e3, 0x0078, 0x1d39, 0x1078, 0x2df9, -+ 0x781b, 0x009d, 0x0078, 0x1d39, 0xa584, 0x000f, 0x00c0, 0x2216, -+ 0x1078, 0x261c, 0x7000, 0x0079, 0x21f5, 0x21fd, 0x220a, 0x21fd, -+ 0x2acd, 0x21ff, 0x2acd, 0x21fd, 0x21fd, 0x1078, 0x1ce7, 0x71a0, -+ 0x70a3, 0x0000, 0xa186, 0x0004, 0x00c0, 0x2208, 0x0078, 0x2b7a, -+ 0x0078, 0x2acd, 0x1078, 0x2b1e, 0x6008, 0xa084, 0xffef, 0x600a, -+ 0x1078, 0x2ac0, 0x0040, 0x2acd, 0x0078, 0x1e18, 0x78e4, 0xa005, -+ 0x00d0, 0x21cc, 0x0018, 0x21cc, 0x2008, 0xa084, 0x0030, 0x00c0, -+ 0x2225, 0x781b, 0x0049, 0x0078, 0x1d39, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x2221, 0x2100, 0xa184, 0x0007, 0x0079, 0x222f, 0x223f, -+ 0x2245, 0x2239, 0x2237, 0x2fde, 0x2fde, 0x2237, 0x2fd6, 0x1078, -+ 0x1ce7, 0x1078, 0x2e01, 0x781b, 0x0055, 0x0078, 0x1d39, 0x1078, -+ 0x2e01, 0x781b, 0x00dc, 0x0078, 0x1d39, 0x1078, 0x2e01, 0x781b, -+ 0x00e3, 0x0078, 0x1d39, 0x1078, 0x2e01, 0x781b, 0x009d, 0x0078, -+ 0x1d39, 0x2300, 0x0079, 0x2254, 0x2259, 0x2257, 0x225b, 0x1078, -+ 0x1ce7, 0x0078, 0x2883, 0x6817, 0x0008, 0x78a3, 0x0000, 0x79e4, -+ 0xa184, 0x0030, 0x0040, 0x2883, 0x78ec, 0xa084, 0x0003, 0x0040, -+ 0x2883, 0xa184, 0x0007, 0x0079, 0x226d, 0x21da, 0x21e0, 0x21d4, -+ 0x2fb6, 0x2fde, 0x2fde, 0x2275, 0x2fd6, 0x1078, 0x1ce7, 0xa282, -+ 0x0005, 0x0050, 0x227d, 0x1078, 0x1ce7, 0x2300, 0x0079, 0x2280, -+ 0x2283, 0x24b7, 0x24c3, 0x2200, 0x0079, 0x2286, 0x228b, 0x228d, -+ 0x22a0, 0x228b, 0x249c, 0x1078, 0x1ce7, 0x789b, 0x0018, 0x78a8, -+ 0xa084, 0x00ff, 0xa082, 0x0020, 0x0048, 0x2dda, 0xa08a, 0x0004, -+ 0x00c8, 0x2dda, 0x0079, 0x229c, 0x2dda, 0x2dda, 0x2dda, 0x2d7c, -+ 0x789b, 0x0018, 0x79a8, 0xa184, 0x0080, 0x0040, 0x22b5, 0xa184, -+ 0x0018, 0x0040, 0x22b1, 0x0078, 0x2dda, 0x7000, 0xa005, 0x00c0, -+ 0x22ab, 0x2011, 0x0003, 0x0078, 0x2970, 0xa184, 0x00ff, 0xa08c, -+ 0x0080, 0x0040, 0x22e9, 0x7000, 0xa086, 0x0001, 0x00c0, 0x22c8, -+ 0x1078, 0x2b1e, 0x1078, 0x314d, 0x7034, 0x600a, 0x0078, 0x22cd, -+ 0x7000, 0xa086, 0x0003, 0x0040, 0x22c2, 0x7003, 0x0005, 0x2001, -+ 0x5c10, 0x2068, 0x703e, 0x7032, 0x157e, 0x20a9, 0x002f, 0x2003, -+ 0x0000, 0x8000, 0x0070, 0x22de, 0x0078, 0x22d7, 0x157f, 0x6813, -+ 0x0000, 0x68b3, 0x0700, 0x681f, 0x0800, 0x6823, 0x0003, 0x0078, -+ 0x2dda, 0xa08a, 0x0010, 0x00c8, 0x2dda, 0x0079, 0x22ef, 0x2301, -+ 0x22ff, 0x2317, 0x2319, 0x23ab, 0x2dda, 0x2dda, 0x23ad, 0x2dda, -+ 0x2dda, 0x2498, 0x2498, 0x2dda, 0x2dda, 0x2dda, 0x249a, 0x1078, -+ 0x1ce7, 0xa684, 0x1000, 0x0040, 0x230e, 0x2001, 0x0300, 0x8000, -+ 0x8000, 0x783a, 0x781b, 0x009a, 0x0078, 0x1d39, 0x6814, 0xa084, -+ 0x8000, 0x0040, 0x2315, 0x6817, 0x0003, 0x0078, 0x2fb6, 0x1078, -+ 0x1ce7, 0x691c, 0x691e, 0xa684, 0x1800, 0x00c0, 0x2333, 0x681c, -+ 0xa084, 0x0001, 0x00c0, 0x233b, 0x6814, 0xa086, 0x0008, 0x00c0, -+ 0x232b, 0x6817, 0x0000, 0xa684, 0x0400, 0x0040, 0x23a7, 0x781b, -+ 0x0058, 0x0078, 0x1d39, 0xa684, 0x1000, 0x0040, 0x233b, 0x781b, -+ 0x0058, 0x0078, 0x1d39, 0xa684, 0x0060, 0x0040, 0x23a3, 0xa684, -+ 0x0800, 0x0040, 0x23a3, 0xa684, 0x8000, 0x00c0, 0x2349, 0x0078, -+ 0x2363, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb2, 0x789b, 0x0074, 0x7aac, -+ 0x79ac, 0x78ac, 0x801b, 0x00c8, 0x2356, 0x8000, 0xa084, 0x003f, -+ 0xa108, 0xa291, 0x0000, 0x6b94, 0x2100, 0xa302, 0x68ae, 0x6b90, -+ 0x2200, 0xa303, 0x68aa, 0xa684, 0x4000, 0x0040, 0x236b, 0xa6b4, -+ 0xbfff, 0x7e5a, 0x6eb2, 0x7000, 0xa086, 0x0003, 0x00c0, 0x2378, -+ 0x1078, 0x31c0, 0x1078, 0x3365, 0x781b, 0x0067, 0x0078, 0x1d39, -+ 0xa006, 0x1078, 0x3414, 0x6aac, 0x69a8, 0x6c94, 0x6b90, 0x2200, -+ 0xa105, 0x0040, 0x2387, 0x2200, 0xa422, 0x2100, 0xa31b, 0x7cd2, -+ 0x7bd6, 0x2300, 0xa405, 0x00c0, 0x2395, 0xa6b5, 0x4000, 0x7e5a, -+ 0x6eb2, 0x781b, 0x0067, 0x0078, 0x1d39, 0x781b, 0x0067, 0x2200, -+ 0xa115, 0x00c0, 0x239f, 0x1078, 0x3376, 0x0078, 0x1d39, 0x1078, -+ 0x339d, 0x0078, 0x1d39, 0x781b, 0x006a, 0x0078, 0x1d39, 0x781b, -+ 0x0058, 0x0078, 0x1d39, 0x1078, 0x1ce7, 0x0078, 0x240a, 0x691c, -+ 0xa184, 0x0100, 0x0040, 0x23c5, 0xa18c, 0xfeff, 0x691e, 0x0c7e, -+ 0x7048, 0x2060, 0x6000, 0xa084, 0xefff, 0x6002, 0x6004, 0xa084, -+ 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x23f9, 0xa184, 0x0200, 0x0040, -+ 0x23f9, 0xa18c, 0xfdff, 0x691e, 0x0c7e, 0x7048, 0x2060, 0x6000, -+ 0xa084, 0xdfff, 0x6002, 0x6004, 0xa084, 0xffef, 0x6006, 0x2008, -+ 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x23f9, 0x1078, 0x2f0d, -+ 0x1078, 0x2c58, 0x88ff, 0x0040, 0x23f9, 0x789b, 0x0060, 0x2800, -+ 0x78aa, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, -+ 0x23f5, 0x781b, 0x0055, 0x0078, 0x1d39, 0x781b, 0x0069, 0x0078, -+ 0x1d39, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x2402, 0x781b, 0x0058, -+ 0x0078, 0x1d39, 0x781b, 0x006a, 0x0078, 0x1d39, 0x0078, 0x2de0, -+ 0x0078, 0x2de0, 0x2019, 0x0000, 0x7990, 0xa18c, 0x0007, 0x0040, -+ 0x2408, 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, -+ 0x00c0, 0x242d, 0x2300, 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, -+ 0x2425, 0x0048, 0x2425, 0x0078, 0x2427, 0x0078, 0x23af, 0x24a8, -+ 0x7aa8, 0x00f0, 0x2427, 0x0078, 0x2413, 0xa284, 0x00f0, 0xa086, -+ 0x0020, 0x00c0, 0x2489, 0x8318, 0x8318, 0x2300, 0xa102, 0x0040, -+ 0x243d, 0x0048, 0x243d, 0x0078, 0x2486, 0xa286, 0x0023, 0x0040, -+ 0x2408, 0x6818, 0xa084, 0xfff1, 0x681a, 0x7e58, 0xa684, 0xfff1, -+ 0xa085, 0x0010, 0x2030, 0x7e5a, 0x6008, 0xa085, 0x0010, 0x600a, -+ 0x0c7e, 0x7048, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xa184, -+ 0x0010, 0x0040, 0x2461, 0x1078, 0x2f0d, 0x1078, 0x2d3d, 0x0078, -+ 0x2470, 0x0c7e, 0x7048, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, -+ 0xa184, 0x0008, 0x0040, 0x23f9, 0x1078, 0x2f0d, 0x1078, 0x2c58, -+ 0x88ff, 0x0040, 0x23f9, 0x789b, 0x0060, 0x2800, 0x78aa, 0xa6b5, -+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2482, 0x781b, 0x0055, -+ 0x0078, 0x1d39, 0x781b, 0x0069, 0x0078, 0x1d39, 0x7aa8, 0x0078, -+ 0x2413, 0x8318, 0x2300, 0xa102, 0x0040, 0x2492, 0x0048, 0x2492, -+ 0x0078, 0x2413, 0xa284, 0x0080, 0x00c0, 0x2de6, 0x0078, 0x2de0, -+ 0x0078, 0x2de6, 0x0078, 0x2dda, 0x789b, 0x0018, 0x78a8, 0xa084, -+ 0x00ff, 0xa08e, 0x0001, 0x0040, 0x24a7, 0x1078, 0x1ce7, 0x7aa8, -+ 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, -+ 0x2dda, 0x0079, 0x24b3, 0x2dda, 0x2bab, 0x2dda, 0x2cd8, 0xa282, -+ 0x0000, 0x00c0, 0x24bd, 0x1078, 0x1ce7, 0x1078, 0x2df9, 0x781b, -+ 0x0069, 0x0078, 0x1d39, 0xa282, 0x0003, 0x00c0, 0x24c9, 0x1078, -+ 0x1ce7, 0x1078, 0x2e09, 0x781b, 0x0069, 0x0078, 0x1d39, 0xa282, -+ 0x0004, 0x0050, 0x24d5, 0x1078, 0x1ce7, 0x2300, 0x0079, 0x24d8, -+ 0x24db, 0x25c6, 0x25f7, 0xa286, 0x0003, 0x0040, 0x24e1, 0x1078, -+ 0x1ce7, 0x2001, 0x0000, 0x703a, 0x7000, 0xa084, 0x0007, 0x0079, -+ 0x24e9, 0x24f1, 0x24f3, 0x24f3, 0x2703, 0x274c, 0x26cd, 0x24f1, -+ 0x24f1, 0x1078, 0x1ce7, 0xa684, 0x1000, 0x00c0, 0x24fb, 0x1078, -+ 0x314d, 0x0040, 0x25a0, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x2557, -+ 0xa186, 0x0008, 0x00c0, 0x2512, 0x6008, 0xa084, 0xffef, 0x600a, -+ 0x1078, 0x2ac0, 0x0040, 0x2557, 0x1078, 0x2b1e, 0x1078, 0x314d, -+ 0x0078, 0x253e, 0xa186, 0x0028, 0x00c0, 0x2557, 0x1078, 0x314d, -+ 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x2b34, 0x6018, 0xa005, -+ 0x0040, 0x253e, 0x8001, 0x601a, 0xa005, 0x0040, 0x2534, 0x8001, -+ 0xa005, 0x0040, 0x2534, 0x601e, 0x0078, 0x253e, 0x6813, 0x0028, -+ 0x6817, 0x0000, 0x0078, 0x25b5, 0x6030, 0xa084, 0x00ff, 0xa005, -+ 0x0040, 0x252e, 0x6008, 0xa085, 0x0200, 0x600a, 0x681c, 0xa084, -+ 0x0001, 0x0040, 0x1d41, 0x681c, 0xa084, 0xfffe, 0x681e, 0x7054, -+ 0x0c7e, 0x2060, 0x6800, 0x6002, 0x0c7f, 0x6004, 0x6802, 0xa005, -+ 0x2d00, 0x00c0, 0x2554, 0x6002, 0x6006, 0x0078, 0x1d41, 0x017e, -+ 0x1078, 0x261c, 0x017f, 0xa684, 0xdf00, 0x681a, 0x6827, 0x0000, -+ 0x6f10, 0x81ff, 0x0040, 0x25a0, 0xa186, 0x0002, 0x00c0, 0x2598, -+ 0xa684, 0x0800, 0x00c0, 0x2574, 0xa684, 0x0060, 0x0040, 0x2574, -+ 0x78d8, 0x7adc, 0x682e, 0x6a2a, 0x8717, 0xa294, 0x000f, 0x8213, -+ 0x8213, 0x8213, 0xa290, 0x3a80, 0xa290, 0x0000, 0x221c, 0xa384, -+ 0x0100, 0x00c0, 0x2585, 0x0078, 0x258b, 0x8210, 0x2204, 0xa085, -+ 0x0018, 0x2012, 0x8211, 0xa384, 0x0400, 0x0040, 0x2598, 0x689c, -+ 0xa084, 0x0100, 0x00c0, 0x2598, 0x1078, 0x268c, 0x0078, 0x1d41, -+ 0xa186, 0x0018, 0x0040, 0x25a0, 0xa186, 0x0014, 0x0040, 0x1d41, -+ 0x6912, 0x6814, 0xa084, 0x8000, 0x0040, 0x25a8, 0x7038, 0x6816, -+ 0xa68c, 0xdf00, 0x691a, 0x1078, 0x2b0d, 0x1078, 0x2b1e, 0x00c0, -+ 0x25b5, 0x6008, 0xa084, 0xffef, 0x600a, 0x681c, 0xa084, 0x0001, -+ 0x00c0, 0x25be, 0x1078, 0x2b06, 0x0078, 0x25c2, 0x7054, 0x2060, -+ 0x6800, 0x6002, 0x1078, 0x18b6, 0x0078, 0x1d41, 0xa282, 0x0004, -+ 0x0048, 0x25cc, 0x1078, 0x1ce7, 0x2200, 0x0079, 0x25cf, 0x25d3, -+ 0x25d5, 0x25e2, 0x25d5, 0x1078, 0x1ce7, 0x7000, 0xa086, 0x0005, -+ 0x0040, 0x25de, 0x1078, 0x2df9, 0x781b, 0x0069, 0x781b, 0x006a, -+ 0x0078, 0x1d39, 0x7890, 0x8007, 0x8001, 0xa084, 0x0007, 0xa080, -+ 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa186, 0x0003, 0x0040, -+ 0x25f3, 0x0078, 0x2dda, 0x781b, 0x006a, 0x0078, 0x1d39, 0x681c, -+ 0xa085, 0x0004, 0x681e, 0x82ff, 0x00c0, 0x2602, 0x1078, 0x2df9, -+ 0x0078, 0x2609, 0x8211, 0x0040, 0x2607, 0x1078, 0x1ce7, 0x1078, -+ 0x2e09, 0x781b, 0x0069, 0x0078, 0x1d39, 0x1078, 0x2ffd, 0x7830, -+ 0xa084, 0x00c0, 0x00c0, 0x2619, 0x0018, 0x2619, 0x791a, 0xa006, -+ 0x007c, 0xa085, 0x0001, 0x007c, 0xa684, 0x0060, 0x00c0, 0x2626, -+ 0x682f, 0x0000, 0x682b, 0x0000, 0x0078, 0x268b, 0xa684, 0x0800, -+ 0x00c0, 0x2635, 0x68b0, 0xa084, 0x4800, 0xa635, 0xa684, 0x0800, -+ 0x00c0, 0x2635, 0x1078, 0x314d, 0x007c, 0xa684, 0x0020, 0x0040, -+ 0x265f, 0x78d0, 0x8003, 0x00c8, 0x2643, 0xa006, 0x1078, 0x3414, -+ 0x78d4, 0x1078, 0x3479, 0xa684, 0x4000, 0x0040, 0x264d, 0x682f, -+ 0x0000, 0x682b, 0x0000, 0x0078, 0x2632, 0x68b0, 0xa084, 0x4800, -+ 0xa635, 0xa684, 0x4000, 0x00c0, 0x2647, 0x7038, 0xa005, 0x00c0, -+ 0x2659, 0x79d8, 0x7adc, 0x692e, 0x6a2a, 0x0078, 0x2632, 0xa684, -+ 0x4000, 0x0040, 0x2669, 0x682f, 0x0000, 0x682b, 0x0000, 0x0078, -+ 0x2632, 0x68b0, 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, -+ 0x2663, 0x7038, 0xa005, 0x00c0, 0x2675, 0x79d8, 0x7adc, 0x78d0, -+ 0x80f3, 0x00c8, 0x267c, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, -+ 0x0000, 0x692e, 0x6a2a, 0x2100, 0xa205, 0x00c0, 0x2689, 0x0078, -+ 0x2632, 0x1078, 0x3414, 0x007c, 0xa384, 0x0200, 0x0040, 0x2694, -+ 0x6008, 0xa085, 0x0002, 0x600a, 0x6817, 0x0006, 0x6a28, 0x692c, -+ 0x6a3a, 0x693e, 0x682b, 0x0300, 0x682f, 0x0000, 0x6833, 0x2000, -+ 0x6893, 0x0000, 0x6897, 0x0020, 0x7000, 0x0079, 0x26a7, 0x26af, -+ 0x26b1, 0x26ba, 0x26af, 0x26af, 0x26af, 0x26af, 0x26af, 0x1078, -+ 0x1ce7, 0x681c, 0xa084, 0x0001, 0x00c0, 0x26ba, 0x1078, 0x2b06, -+ 0x0078, 0x26c0, 0x7054, 0x2c50, 0x2060, 0x6800, 0x6002, 0x2a60, -+ 0x2021, 0x3857, 0x2404, 0xa005, 0x0040, 0x26c9, 0x2020, 0x0078, -+ 0x26c2, 0x2d22, 0x206b, 0x0000, 0x007c, 0x77b4, 0x1078, 0x2e16, -+ 0xa7bc, 0x0f00, 0x1078, 0x2f11, 0x6018, 0xa005, 0x0040, 0x26fc, -+ 0x0d7e, 0x2001, 0x5c10, 0x2068, 0x0d7f, 0x2021, 0x5c00, 0x2009, -+ 0x0004, 0x2011, 0x0010, 0x1078, 0x216a, 0x0040, 0x26fc, 0x157e, -+ 0x20a9, 0x0000, 0x2021, 0x5b00, 0x047e, 0x2009, 0x0004, 0x2011, -+ 0x0010, 0x1078, 0x216a, 0x047f, 0x0040, 0x26fb, 0x8420, 0x0070, -+ 0x26fb, 0x0078, 0x26ec, 0x157f, 0x8738, 0xa784, 0x001f, 0x00c0, -+ 0x26d2, 0x0078, 0x1d41, 0x1078, 0x2b0d, 0x1078, 0x2b1e, 0x6827, -+ 0x0000, 0x789b, 0x000e, 0x6f10, 0x1078, 0x344a, 0x017e, 0xad88, -+ 0x0010, 0xa188, 0x0006, 0x2104, 0x017f, 0x8007, 0xa084, 0x00ff, -+ 0xa082, 0x0047, 0x0040, 0x271e, 0x0078, 0x272f, 0x0c7e, 0x6810, -+ 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0, 0x3a80, -+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x1078, 0x2f6b, 0x6813, -+ 0x0002, 0xa684, 0x0800, 0x0040, 0x2739, 0x6918, 0xa18d, 0x2000, -+ 0x691a, 0x6814, 0xa084, 0x8000, 0x0040, 0x2740, 0x6817, 0x0000, -+ 0x2021, 0x3857, 0x6800, 0x2022, 0x6a38, 0x693c, 0x6a2a, 0x692e, -+ 0x1078, 0x18b6, 0x0078, 0x1d41, 0x1078, 0x261c, 0x6827, 0x0000, -+ 0x789b, 0x000e, 0x6f10, 0x1078, 0x3002, 0xa08c, 0x00ff, 0x6912, -+ 0x6814, 0xa084, 0x8000, 0x0040, 0x275f, 0x7038, 0x6816, 0xa68c, -+ 0xdf00, 0x691a, 0x70a3, 0x0000, 0x0078, 0x1d41, 0xa006, 0x1078, -+ 0x314d, 0x6813, 0x0000, 0x6817, 0x0001, 0xa68c, 0xdf00, 0x691a, -+ 0x6827, 0x0000, 0x7000, 0x0079, 0x2775, 0x277d, 0x277f, 0x277f, -+ 0x2781, 0x2781, 0x2781, 0x277d, 0x277d, 0x1078, 0x1ce7, 0x1078, -+ 0x2b1e, 0x6008, 0xa084, 0xffef, 0x600a, 0x0078, 0x2ad8, 0x2300, -+ 0x0079, 0x278a, 0x278d, 0x278f, 0x27cd, 0x1078, 0x1ce7, 0x7000, -+ 0x0079, 0x2792, 0x279a, 0x279c, 0x279c, 0x27a7, 0x279c, 0x27ae, -+ 0x279a, 0x279a, 0x1078, 0x1ce7, 0xa684, 0x2000, 0x00c0, 0x27a7, -+ 0xa6b5, 0x2000, 0x7e5a, 0x1078, 0x3376, 0x0078, 0x2fb6, 0x6814, -+ 0xa084, 0x8000, 0x0040, 0x27ae, 0x6817, 0x0007, 0x2009, 0x3818, -+ 0x210c, 0xa186, 0x0000, 0x0040, 0x27c3, 0xa186, 0x0001, 0x0040, -+ 0x27c7, 0x2009, 0x382b, 0x200b, 0x000b, 0x70a3, 0x0001, 0x781b, -+ 0x0046, 0x0078, 0x1d39, 0x781b, 0x00dd, 0x0078, 0x1d39, 0x2009, -+ 0x382b, 0x200b, 0x000a, 0x0078, 0x1d39, 0x1078, 0x1ce7, 0x2300, -+ 0x0079, 0x27d2, 0x27d5, 0x27d7, 0x27fa, 0x1078, 0x1ce7, 0x7000, -+ 0x0079, 0x27da, 0x27e2, 0x27e4, 0x27e4, 0x27ef, 0x27e4, 0x27f6, -+ 0x27e2, 0x27e2, 0x1078, 0x1ce7, 0xa684, 0x2000, 0x00c0, 0x27ef, -+ 0xa6b5, 0x2000, 0x7e5a, 0x1078, 0x3376, 0x0078, 0x2fb6, 0x6814, -+ 0xa084, 0x8000, 0x0040, 0x27f6, 0x6817, 0x0007, 0x781b, 0x00e4, -+ 0x0078, 0x1d39, 0x681c, 0xa085, 0x0004, 0x681e, 0x1078, 0x2f6b, -+ 0xa6b5, 0x0800, 0x1078, 0x2df9, 0x781b, 0x0069, 0x0078, 0x1d39, -+ 0x2300, 0x0079, 0x280b, 0x280e, 0x2810, 0x2812, 0x1078, 0x1ce7, -+ 0x1078, 0x1ce7, 0xa684, 0x0400, 0x00c0, 0x2831, 0x782b, 0x3009, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4, -+ 0xa184, 0x0020, 0x0040, 0x2829, 0x78ec, 0xa084, 0x0003, 0x00c0, -+ 0x282d, 0x2001, 0x0014, 0x0078, 0x24e3, 0xa184, 0x0007, 0x0079, -+ 0x2869, 0x7a90, 0xa294, 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff, -+ 0x0040, 0x2867, 0x789b, 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0, -+ 0x2858, 0x7ba8, 0x7ba8, 0xa386, 0x0001, 0x00c0, 0x284b, 0x2009, -+ 0xfff7, 0x0078, 0x2851, 0xa386, 0x0003, 0x00c0, 0x2858, 0x2009, -+ 0xffef, 0x0c7e, 0x7048, 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, -+ 0x3009, 0x691c, 0xa18c, 0xfdff, 0xa18c, 0xfeff, 0x691e, 0x0078, -+ 0x2fb6, 0x21da, 0x21e0, 0x2873, 0x287b, 0x2871, 0x2871, 0x2871, -+ 0x2fb6, 0x1078, 0x1ce7, 0x691c, 0xa18c, 0xfdff, 0xa18c, 0xfeff, -+ 0x691e, 0x0078, 0x2fbe, 0x691c, 0xa18c, 0xfdff, 0xa18c, 0xfeff, -+ 0x691e, 0x0078, 0x2fb6, 0x79e4, 0xa184, 0x0030, 0x0040, 0x288d, -+ 0x78ec, 0xa084, 0x0003, 0x00c0, 0x2895, 0x6814, 0xa085, 0x8000, -+ 0x6816, 0x2001, 0x0014, 0x0078, 0x24e3, 0xa184, 0x0007, 0x0079, -+ 0x2899, 0x2fb6, 0x2fb6, 0x28a1, 0x2fb6, 0x2fde, 0x2fde, 0x2fb6, -+ 0x2fb6, 0xa684, 0x0400, 0x00c0, 0x28d2, 0x681c, 0xa084, 0x0001, -+ 0x0040, 0x2fbe, 0xa68c, 0x2060, 0xa18c, 0xfffb, 0x795a, 0x69b2, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061, 0x6814, 0xa085, -+ 0x8000, 0x6816, 0x78aa, 0x157e, 0x137e, 0x147e, 0x20a1, 0x012c, -+ 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000a, 0x2098, 0x53a6, -+ 0x147f, 0x137f, 0x157f, 0x6810, 0x8007, 0x789b, 0x007e, 0x78aa, -+ 0x0078, 0x2fbe, 0x6814, 0xa084, 0x8000, 0x0040, 0x28d9, 0x6817, -+ 0x0008, 0x781b, 0x00d8, 0x0078, 0x1d39, 0x2300, 0x0079, 0x28e0, -+ 0x28e5, 0x2960, 0x28e3, 0x1078, 0x1ce7, 0x7000, 0xa084, 0x0007, -+ 0x0079, 0x28ea, 0x28f2, 0x28f4, 0x2910, 0x28f2, 0x28f2, 0x26cd, -+ 0x28f2, 0x28f2, 0x1078, 0x1ce7, 0x691c, 0xa18d, 0x0001, 0x691e, -+ 0x6800, 0x6006, 0xa005, 0x00c0, 0x28fe, 0x6002, 0x6818, 0xa084, -+ 0x000e, 0x0040, 0x290a, 0x7014, 0x68b6, 0x712c, 0xa188, 0x5b00, -+ 0x0078, 0x290c, 0x2009, 0x5c00, 0x2104, 0x6802, 0x2d0a, 0x7156, -+ 0x6eb2, 0xa684, 0x0060, 0x0040, 0x295e, 0xa684, 0x0800, 0x00c0, -+ 0x2922, 0xa684, 0x7fff, 0x68b2, 0x6890, 0x6894, 0x1078, 0x314d, -+ 0x0078, 0x295e, 0xa684, 0x0020, 0x0040, 0x2934, 0xa006, 0x1078, -+ 0x3414, 0x78d0, 0x8003, 0x00c8, 0x2930, 0x78d4, 0x1078, 0x3479, -+ 0x79d8, 0x7adc, 0x0078, 0x2938, 0x1078, 0x2f1e, 0x1078, 0x3414, -+ 0xa684, 0x8000, 0x0040, 0x295e, 0xa684, 0x7fff, 0x68b2, 0x789b, -+ 0x0074, 0x1078, 0x3002, 0x2010, 0x1078, 0x3002, 0x2008, 0xa684, -+ 0x0020, 0x00c0, 0x2956, 0x1078, 0x3002, 0x801b, 0x00c8, 0x2951, -+ 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b94, 0x2100, -+ 0xa302, 0x68ae, 0x6b90, 0x2200, 0xa303, 0x68aa, 0x0078, 0x1d41, -+ 0x0078, 0x2de6, 0x7033, 0x0000, 0xa282, 0x0005, 0x0050, 0x296a, -+ 0x1078, 0x1ce7, 0x2300, 0x0079, 0x296d, 0x2970, 0x297a, 0x299d, -+ 0x2200, 0x0079, 0x2973, 0x2978, 0x2de6, 0x2978, 0x29c6, 0x2a17, -+ 0x1078, 0x1ce7, 0x7000, 0xa086, 0x0001, 0x00c0, 0x2987, 0x1078, -+ 0x2b1e, 0x1078, 0x314d, 0x7034, 0x600a, 0x0078, 0x298c, 0x7000, -+ 0xa086, 0x0003, 0x0040, 0x2981, 0x7003, 0x0005, 0x2001, 0x5c10, -+ 0x2068, 0x703e, 0x7032, 0x2200, 0x0079, 0x2996, 0x2de6, 0x299b, -+ 0x29c6, 0x299b, 0x2de6, 0x1078, 0x1ce7, 0x7000, 0xa086, 0x0001, -+ 0x00c0, 0x29aa, 0x1078, 0x2b1e, 0x1078, 0x314d, 0x7034, 0x600a, -+ 0x0078, 0x29af, 0x7000, 0xa086, 0x0003, 0x0040, 0x29a4, 0x7003, -+ 0x0005, 0x2001, 0x5c10, 0x2068, 0x703e, 0x7032, 0x2200, 0x0079, -+ 0x29b9, 0x29c0, 0x29be, 0x29c0, 0x29be, 0x29c0, 0x1078, 0x1ce7, -+ 0x1078, 0x2e09, 0x781b, 0x0069, 0x0078, 0x1d39, 0x7000, 0xa086, -+ 0x0001, 0x00c0, 0x29d3, 0x1078, 0x2b1e, 0x1078, 0x314d, 0x7034, -+ 0x600a, 0x0078, 0x29d8, 0x7000, 0xa086, 0x0003, 0x0040, 0x29cd, -+ 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, -+ 0xa484, 0x001f, 0xa215, 0x2069, 0x5c00, 0x2d04, 0x2d08, 0x7156, -+ 0x2068, 0xa005, 0x0040, 0x29f3, 0x6810, 0xa206, 0x0040, 0x2a0c, -+ 0x6800, 0x0078, 0x29e6, 0x7003, 0x0005, 0x2001, 0x5c10, 0x2068, -+ 0x703e, 0x7032, 0x157e, 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, -+ 0x0070, 0x2a04, 0x0078, 0x29fd, 0x157f, 0x6a12, 0x68b3, 0x0700, -+ 0x681f, 0x0800, 0x6823, 0x0003, 0x6eb0, 0x7e5a, 0x681c, 0xa084, -+ 0x0c00, 0x0040, 0x2a6d, 0x1078, 0x2e01, 0x0078, 0x2a6d, 0x7000, -+ 0xa086, 0x0001, 0x00c0, 0x2a24, 0x1078, 0x2b1e, 0x1078, 0x314d, -+ 0x7034, 0x600a, 0x0078, 0x2a29, 0x7000, 0xa086, 0x0003, 0x0040, -+ 0x2a1e, 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, -+ 0x7ca8, 0xa484, 0x001f, 0xa215, 0x79a8, 0x79a8, 0xa18c, 0x00ff, -+ 0xa1e8, 0x5b00, 0x2d04, 0x2d08, 0x7156, 0x2068, 0xa005, 0x0040, -+ 0x2a48, 0x6810, 0xa206, 0x0040, 0x2a61, 0x6800, 0x0078, 0x2a3b, -+ 0x7003, 0x0005, 0x2001, 0x5c10, 0x2068, 0x703e, 0x7032, 0x157e, -+ 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, 0x0070, 0x2a59, 0x0078, -+ 0x2a52, 0x157f, 0x6a12, 0x68b3, 0x0700, 0x681f, 0x0800, 0x6823, -+ 0x0003, 0x6eb0, 0x7e5a, 0x681c, 0xa084, 0x0c00, 0x0040, 0x2a6d, -+ 0x1078, 0x2dfd, 0x7e58, 0x0078, 0x2a6d, 0x027e, 0x8207, 0xa084, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x3a80, 0x2060, 0x704a, -+ 0x6000, 0x704e, 0x6004, 0x7052, 0xa684, 0x0060, 0x0040, 0x2aa4, -+ 0x6b94, 0x6c90, 0x69a8, 0x68ac, 0xa105, 0x00c0, 0x2a92, 0x7bd2, -+ 0x7bda, 0x7cd6, 0x7cde, 0xa6b4, 0xb7ff, 0x7e5a, 0x1078, 0x3376, -+ 0x0078, 0x2aa4, 0x68ac, 0xa31a, 0x2100, 0xa423, 0x2400, 0xa305, -+ 0x0040, 0x2aa4, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68ac, 0xa6b4, -+ 0xbfff, 0x7e5a, 0x1078, 0x339d, 0x077f, 0x1078, 0x2f11, 0x2009, -+ 0x006a, 0xa684, 0x0008, 0x0040, 0x2aaf, 0x2009, 0x0069, 0xa6b5, -+ 0x2000, 0x7e5a, 0x791a, 0x2d00, 0x703e, 0x8207, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa080, 0x3a80, 0x2048, 0x0078, 0x1d39, -+ 0x6020, 0xa005, 0x0040, 0x2acc, 0x8001, 0x6022, 0x6008, 0xa085, -+ 0x0008, 0x600a, 0x7010, 0x6026, 0x007c, 0xa006, 0x1078, 0x314d, -+ 0x6813, 0x0000, 0x6817, 0x0001, 0x681f, 0x0040, 0x681b, 0x0100, -+ 0x7000, 0xa084, 0x0007, 0x0079, 0x2add, 0x2ae5, 0x2ae7, 0x2ae7, -+ 0x2b02, 0x2aef, 0x2ae5, 0x2ae5, 0x2ae5, 0x1078, 0x1ce7, 0x1078, -+ 0x2b0d, 0x1078, 0x2b06, 0x1078, 0x18b6, 0x0078, 0x1d41, 0x70a0, -+ 0x70a3, 0x0000, 0x0079, 0x2af4, 0x2afe, 0x2afe, 0x2afc, 0x2afc, -+ 0x2afc, 0x2afe, 0x2afc, 0x2afe, 0x0079, 0x20a6, 0x70a3, 0x0000, -+ 0x0078, 0x1d41, 0x6817, 0x0000, 0x0078, 0x2703, 0x6800, 0xa005, -+ 0x00c0, 0x2b0b, 0x6002, 0x6006, 0x007c, 0x1078, 0x2b27, 0x6010, -+ 0xa005, 0x0040, 0x2b18, 0x8001, 0x00d0, 0x2b18, 0x1078, 0x1ce7, -+ 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x007c, 0x1078, 0x2b34, -+ 0x6018, 0xa005, 0x0040, 0x2b26, 0x8001, 0x601a, 0x007c, 0x017e, -+ 0x007e, 0x2009, 0x382e, 0x2104, 0xa005, 0x0040, 0x2b31, 0x8001, -+ 0x200a, 0x007f, 0x017f, 0x007c, 0x017e, 0x007e, 0x2009, 0x382f, -+ 0x2104, 0xa005, 0x0040, 0x2b3e, 0x8001, 0x200a, 0x007f, 0x017f, -+ 0x007c, 0x017e, 0x007e, 0x2009, 0x3830, 0x2104, 0x8000, 0x200a, -+ 0x007f, 0x017f, 0x007c, 0x017e, 0x007e, 0x2009, 0x382f, 0x2104, -+ 0x8000, 0x200a, 0x007f, 0x017f, 0x007c, 0x027e, 0x037e, 0x007e, -+ 0x2009, 0x382e, 0x2114, 0x2019, 0x382f, 0x2304, 0xa202, 0x200a, -+ 0x201b, 0x0000, 0x2009, 0x3830, 0x007f, 0x037f, 0x027f, 0x007c, -+ 0x1078, 0x2ffd, 0x6817, 0x0018, 0x0078, 0x2b98, 0x1078, 0x2ffd, -+ 0x6817, 0x0019, 0x0078, 0x2b98, 0x1078, 0x2ffd, 0x6817, 0x001a, -+ 0x0078, 0x2b98, 0x77b4, 0x1078, 0x2f11, 0x71b8, 0xa18c, 0x00ff, -+ 0xa1e8, 0x5b00, 0x2d04, 0x2d08, 0x2068, 0xa005, 0x00c0, 0x2b8a, -+ 0x0078, 0x1d41, 0x6810, 0x72b4, 0xa206, 0x0040, 0x2b92, 0x6800, -+ 0x0078, 0x2b83, 0x6800, 0x200a, 0x6817, 0x0005, 0x70bf, 0x0000, -+ 0x1078, 0x2b0d, 0x681c, 0xa084, 0x0001, 0x00c0, 0x2ba1, 0x1078, -+ 0x2b06, 0x1078, 0x2b1e, 0x681b, 0x0000, 0x681f, 0x0020, 0x1078, -+ 0x18b6, 0x0078, 0x1d41, 0xa282, 0x0003, 0x00c0, 0x2dda, 0x7da8, -+ 0xa5ac, 0x00ff, 0x7ea8, 0xa6b4, 0x00ff, 0x691c, 0xa18d, 0x0080, -+ 0x691e, 0xa184, 0x0100, 0x0040, 0x2c0b, 0xa18c, 0xfeff, 0x691e, -+ 0xa6b4, 0x00ff, 0x0040, 0x2bf5, 0xa682, 0x000f, 0x0048, 0x2bcc, -+ 0x0040, 0x2bcc, 0x2031, 0x000f, 0x852b, 0x852b, 0x1078, 0x2e94, -+ 0x0040, 0x2bd6, 0x1078, 0x2ca4, 0x0078, 0x2bfe, 0x1078, 0x2e4f, -+ 0x0c7e, 0x2960, 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x2cc8, -+ 0x0c7f, 0x691c, 0xa18d, 0x0100, 0x691e, 0x7e58, 0xa6b5, 0x0004, -+ 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2bf1, 0x781b, 0x0055, 0x0078, -+ 0x1d39, 0x781b, 0x0069, 0x0078, 0x1d39, 0x0c7e, 0x2960, 0x6004, -+ 0xa084, 0xfff5, 0x6006, 0x1078, 0x2cc8, 0x0c7f, 0x7e58, 0xa684, -+ 0x0400, 0x00c0, 0x2c07, 0x781b, 0x0058, 0x0078, 0x1d39, 0x781b, -+ 0x006a, 0x0078, 0x1d39, 0x0c7e, 0x7048, 0x2060, 0x6100, 0xa18c, -+ 0x1000, 0x0040, 0x2c4b, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, -+ 0x000f, 0x0048, 0x2c1f, 0x0040, 0x2c1f, 0x2011, 0x000f, 0x2600, -+ 0xa202, 0x00c8, 0x2c24, 0x2230, 0x6208, 0xa294, 0x00ff, 0x7018, -+ 0xa086, 0x0028, 0x00c0, 0x2c34, 0xa282, 0x0019, 0x00c8, 0x2c3a, -+ 0x2011, 0x0019, 0x0078, 0x2c3a, 0xa282, 0x000c, 0x00c8, 0x2c3a, -+ 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x2c3f, 0x2228, 0x1078, -+ 0x2e53, 0x852b, 0x852b, 0x1078, 0x2e94, 0x0040, 0x2c4b, 0x1078, -+ 0x2ca4, 0x0078, 0x2c4f, 0x1078, 0x2e4f, 0x1078, 0x2cc8, 0x7858, -+ 0xa085, 0x0004, 0x785a, 0x0c7f, 0x781b, 0x0069, 0x0078, 0x1d39, -+ 0x0c7e, 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, 0x2c72, 0xa084, -+ 0x0040, 0x00c0, 0x2c6c, 0xa18c, 0x0002, 0x00c0, 0x2c6c, 0xa18c, -+ 0xfff5, 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, -+ 0x0078, 0x2c94, 0x6208, 0xa294, 0x00ff, 0x7018, 0xa086, 0x0028, -+ 0x00c0, 0x2c82, 0xa282, 0x0019, 0x00c8, 0x2c88, 0x2011, 0x0019, -+ 0x0078, 0x2c88, 0xa282, 0x000c, 0x00c8, 0x2c88, 0x2011, 0x000c, -+ 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000f, 0x0048, 0x2c94, -+ 0x0040, 0x2c94, 0x2019, 0x000f, 0x78ab, 0x0001, 0x78ab, 0x0003, -+ 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x681c, 0xa085, -+ 0x0100, 0x681e, 0x0c7f, 0x007c, 0x0c7e, 0x7148, 0x2160, 0x2008, -+ 0xa084, 0xfff0, 0xa635, 0x7e86, 0x6018, 0x789a, 0x7eae, 0x6612, -+ 0x78a4, 0xa084, 0xfff8, 0xa18c, 0x0007, 0xa105, 0x78a6, 0x6016, -+ 0x788a, 0xa6b4, 0x000f, 0x8637, 0x8204, 0x8004, 0xa084, 0x00ff, -+ 0xa605, 0x600e, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x007c, -+ 0x0c7e, 0x7048, 0x2060, 0x6018, 0x789a, 0x78a4, 0xa084, 0xfff0, -+ 0x78a6, 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886, 0x0c7f, 0x007c, -+ 0xa282, 0x0002, 0x00c0, 0x2dda, 0x7aa8, 0x691c, 0xa18d, 0x0080, -+ 0x691e, 0xa184, 0x0200, 0x0040, 0x2d1d, 0xa18c, 0xfdff, 0x691e, -+ 0xa294, 0x00ff, 0xa282, 0x0002, 0x00c8, 0x2dda, 0x1078, 0x2d63, -+ 0x1078, 0x2cc8, 0xa980, 0x0001, 0x200c, 0x1078, 0x2f0d, 0x1078, -+ 0x2c58, 0x88ff, 0x0040, 0x2d10, 0x789b, 0x0060, 0x2800, 0x78aa, -+ 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2d0c, -+ 0x781b, 0x0055, 0x0078, 0x1d39, 0x781b, 0x0069, 0x0078, 0x1d39, -+ 0x7e58, 0xa684, 0x0400, 0x00c0, 0x2d19, 0x781b, 0x0058, 0x0078, -+ 0x1d39, 0x781b, 0x006a, 0x0078, 0x1d39, 0xa282, 0x0002, 0x00c8, -+ 0x2d25, 0xa284, 0x0001, 0x0040, 0x2d2f, 0x7148, 0xa188, 0x0000, -+ 0x210c, 0xa18c, 0x2000, 0x00c0, 0x2d2f, 0x2011, 0x0000, 0x1078, -+ 0x2e41, 0x1078, 0x2d63, 0x1078, 0x2cc8, 0x7858, 0xa085, 0x0004, -+ 0x785a, 0x781b, 0x0069, 0x0078, 0x1d39, 0x0c7e, 0x027e, 0x2960, -+ 0x6000, 0x2011, 0x0001, 0xa084, 0x2000, 0x00c0, 0x2d53, 0xa084, -+ 0x0080, 0x00c0, 0x2d51, 0xa18c, 0xffef, 0x6106, 0xa006, 0x0078, -+ 0x2d60, 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, -+ 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x681c, 0xa085, 0x0200, 0x681e, -+ 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7048, 0x2060, 0x82ff, 0x0040, -+ 0x2d6b, 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, 0x78a4, -+ 0xa084, 0xffbf, 0xa205, 0x78a6, 0x6016, 0x788a, 0x6004, 0xa084, -+ 0xffef, 0x6006, 0x0c7f, 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, -+ 0x0040, 0x2d85, 0x007f, 0x0078, 0x2d88, 0x007f, 0x0078, 0x2dd6, -+ 0xa684, 0x0020, 0x0040, 0x2dd6, 0x7888, 0xa084, 0x0040, 0x0040, -+ 0x2dd6, 0x78a8, 0x8001, 0x0040, 0x2d95, 0x7bb8, 0xa384, 0x003f, -+ 0x831b, 0x00c8, 0x2d9c, 0x8000, 0xa005, 0x0040, 0x2dbd, 0x831b, -+ 0x00c8, 0x2da5, 0x8001, 0x0040, 0x2dd2, 0xa006, 0x1078, 0x3414, -+ 0x78b4, 0x1078, 0x3479, 0x0078, 0x2dd6, 0xa684, 0x4000, 0x0040, -+ 0x2dbd, 0x78b8, 0x801b, 0x00c8, 0x2db6, 0x8000, 0xa084, 0x003f, -+ 0x00c0, 0x2dd2, 0xa6b4, 0xbfff, 0x7e5a, 0x79d8, 0x7adc, 0x2001, -+ 0x0001, 0xa108, 0x00c8, 0x2dc6, 0xa291, 0x0000, 0x79d2, 0x79da, -+ 0x7ad6, 0x7ade, 0x1078, 0x3414, 0x781b, 0x0067, 0x1078, 0x32e4, -+ 0x0078, 0x1d39, 0x781b, 0x0067, 0x0078, 0x1d39, 0x781b, 0x006a, -+ 0x0078, 0x1d39, 0x1078, 0x2e0d, 0x781b, 0x0069, 0x0078, 0x1d39, -+ 0x1078, 0x2df9, 0x781b, 0x0069, 0x0078, 0x1d39, 0x6823, 0x0002, -+ 0x1078, 0x2e01, 0x691c, 0xa18d, 0x0020, 0x691e, 0x6814, 0xa084, -+ 0x8000, 0x0040, 0x2df5, 0x6817, 0x0005, 0x781b, 0x0069, 0x0078, -+ 0x1d39, 0x2001, 0x0005, 0x0078, 0x2e0f, 0x2001, 0x000c, 0x0078, -+ 0x2e0f, 0x2001, 0x0006, 0x0078, 0x2e0f, 0x2001, 0x000d, 0x0078, -+ 0x2e0f, 0x2001, 0x0009, 0x0078, 0x2e0f, 0x2001, 0x0007, 0x789b, -+ 0x007f, 0x78aa, 0xa6b5, 0x0008, 0x7e5a, 0x007c, 0x077e, 0x873f, -+ 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703, 0xa0e0, 0x3a80, 0xa7b8, -+ 0x0020, 0x7f9a, 0x79a4, 0xa184, 0x000f, 0x0040, 0x2e2f, 0xa184, -+ 0xfff0, 0x78a6, 0x6012, 0x6004, 0xa085, 0x0008, 0x6006, 0x8738, -+ 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040, 0x0040, 0x2e3f, 0xa184, -+ 0xffbf, 0x78a6, 0x6016, 0x6004, 0xa085, 0x0010, 0x6006, 0x077f, -+ 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, -+ 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab, 0x0004, 0x007c, 0x2031, -+ 0x0000, 0x2029, 0x0032, 0x789b, 0x0010, 0x78ab, 0x0001, 0x78ab, -+ 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7eaa, 0x789b, 0x0060, 0x78ab, -+ 0x0005, 0x007c, 0x157e, 0x8007, 0xa084, 0x00ff, 0x8003, 0x8003, -+ 0xa080, 0x0020, 0x789a, 0x79a4, 0xa18c, 0xfff0, 0x2001, 0x3846, -+ 0x2004, 0xa082, 0x0028, 0x0040, 0x2e7d, 0x2021, 0x2ef4, 0x2019, -+ 0x0014, 0x20a9, 0x000c, 0x0078, 0x2e83, 0x2021, 0x2f00, 0x2019, -+ 0x0019, 0x20a9, 0x000d, 0x2011, 0x0064, 0x2404, 0xa084, 0xfff0, -+ 0xa106, 0x0040, 0x2e92, 0x8420, 0x2300, 0xa210, 0x0070, 0x2e92, -+ 0x0078, 0x2e85, 0x157f, 0x007c, 0x157e, 0x2011, 0x3846, 0x2214, -+ 0xa282, 0x0032, 0x0048, 0x2ea8, 0x0040, 0x2eac, 0x2021, 0x2ee6, -+ 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, 0x0032, 0x0078, 0x2ebc, -+ 0xa282, 0x0028, 0x0040, 0x2eb4, 0x2021, 0x2ef4, 0x2019, 0x0014, -+ 0x20a9, 0x000c, 0x0078, 0x2eba, 0x2021, 0x2f00, 0x2019, 0x0019, -+ 0x20a9, 0x000d, 0x2011, 0x0064, 0x2200, 0xa502, 0x0040, 0x2ecc, -+ 0x0048, 0x2ecc, 0x8420, 0x2300, 0xa210, 0x0070, 0x2ec9, 0x0078, -+ 0x2ebc, 0x157f, 0xa006, 0x007c, 0x157f, 0xa582, 0x0064, 0x00c8, -+ 0x2ed5, 0x7808, 0xa085, 0x0070, 0x780a, 0x78ec, 0xa084, 0x0300, -+ 0x0040, 0x2ee3, 0x2404, 0xa09e, 0x1201, 0x00c0, 0x2ee3, 0x2001, -+ 0x2101, 0x0078, 0x2ee4, 0x2404, 0xa005, 0x007c, 0x1201, 0x3002, -+ 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, -+ 0x7a06, 0x0a07, 0x0c07, 0x0e07, 0x3202, 0x4202, 0x5202, 0x6202, -+ 0x7202, 0x6605, 0x7605, 0x7805, 0x7a05, 0x7c05, 0x7e05, 0x7f05, -+ 0x2202, 0x3202, 0x4202, 0x5202, 0x5404, 0x6404, 0x7404, 0x7604, -+ 0x7804, 0x7a04, 0x7c04, 0x7e04, 0x7f04, 0x789b, 0x0010, 0xa046, -+ 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, -+ 0x8003, 0x8003, 0xa105, 0xa0e0, 0x3b00, 0x007c, 0x79d8, 0x7adc, -+ 0x78d0, 0x801b, 0x00c8, 0x2f25, 0x8000, 0xa084, 0x003f, 0xa108, -+ 0xa291, 0x0000, 0x007c, 0x0f7e, 0x2079, 0x0100, 0x2009, 0x3840, -+ 0x2091, 0x8000, 0x2104, 0x0079, 0x2f35, 0x2f67, 0x2f3f, 0x2f3f, -+ 0x2f3f, 0x2f3f, 0x2f3f, 0x2f3d, 0x2f3d, 0x1078, 0x1ce7, 0x784b, -+ 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0, 0x2f41, 0x784b, 0x0008, -+ 0x7848, 0xa084, 0x0008, 0x00c0, 0x2f48, 0x68b0, 0xa085, 0x4000, -+ 0x68b2, 0x7858, 0xa085, 0x4000, 0x785a, 0x7830, 0xa084, 0x0080, -+ 0x00c0, 0x2f67, 0x0018, 0x2f67, 0x6818, 0xa084, 0x0020, 0x00c0, -+ 0x2f65, 0x781b, 0x00dd, 0x0078, 0x2f67, 0x781b, 0x00e4, 0x2091, -+ 0x8001, 0x0f7f, 0x007c, 0x0c7e, 0x6810, 0x8007, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa0e0, 0x3a80, 0x6004, 0xa084, 0x000a, -+ 0x00c0, 0x2fb4, 0x6108, 0xa194, 0xff00, 0x0040, 0x2fb4, 0xa18c, -+ 0x00ff, 0x6004, 0xa084, 0x0014, 0x00c0, 0x2f9d, 0xa085, 0x0014, -+ 0x6006, 0x017e, 0x691c, 0xa18d, 0x0002, 0x691e, 0x017f, 0x2001, -+ 0x000c, 0xa106, 0x0040, 0x2f99, 0x2100, 0x8003, 0x2008, 0x0078, -+ 0x2fad, 0x2009, 0x0019, 0x0078, 0x2fad, 0x2011, 0x0000, 0x6000, -+ 0xa084, 0xdfff, 0x6002, 0x6004, 0xa084, 0xffef, 0x6006, 0x017e, -+ 0x691c, 0xa18d, 0x0002, 0x691e, 0x017f, 0x2100, 0xa205, 0x600a, -+ 0x6004, 0xa085, 0x000a, 0x6006, 0x0c7f, 0x007c, 0x781b, 0x006a, -+ 0x0078, 0x1d39, 0x781b, 0x0069, 0x0078, 0x1d39, 0x781b, 0x0058, -+ 0x0078, 0x1d39, 0x781b, 0x0055, 0x0078, 0x1d39, 0x781b, 0x00dd, -+ 0x0078, 0x1d39, 0x781b, 0x00dc, 0x0078, 0x1d39, 0x781b, 0x00e4, -+ 0x0078, 0x1d39, 0x781b, 0x00e3, 0x0078, 0x1d39, 0x781b, 0x009e, -+ 0x0078, 0x1d39, 0x781b, 0x009d, 0x0078, 0x1d39, 0x70a3, 0x0001, -+ 0x781b, 0x0046, 0x0078, 0x1d39, 0x007e, 0x7830, 0xa084, 0x00c0, -+ 0x00c0, 0x2ffb, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, -+ 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, 0x2ffb, 0x7808, -+ 0xa085, 0x0002, 0x780a, 0x007f, 0x007c, 0x7808, 0xa085, 0x0002, -+ 0x780a, 0x007c, 0x7830, 0xa084, 0x0040, 0x00c0, 0x3002, 0x0098, -+ 0x300b, 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, -+ 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, 0x301a, -+ 0x0098, 0x3018, 0x78ac, 0x007e, 0x7808, 0xa085, 0x0002, 0x780a, -+ 0x007f, 0x007c, 0xa784, 0x0070, 0x0040, 0x302e, 0x0c7e, 0x2d60, -+ 0x2f68, 0x1078, 0x1c97, 0x2d78, 0x2c68, 0x0c7f, 0x6817, 0x0003, -+ 0x7858, 0xa084, 0x3f00, 0x681a, 0x682f, 0x0000, 0x682b, 0x0000, -+ 0x784b, 0x0008, 0x78e4, 0xa005, 0x00d0, 0x21cc, 0xa084, 0x0020, -+ 0x0040, 0x21cc, 0x78ec, 0xa084, 0x0003, 0x0040, 0x21cc, 0x0018, -+ 0x21cc, 0x0078, 0x2de0, 0x0c7e, 0x6810, 0x8007, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa080, 0x3a80, 0x2060, 0x2048, 0x704a, -+ 0x6000, 0x704e, 0x6004, 0x7052, 0x0c7f, 0x007c, 0x0020, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0062, 0x0009, 0x0014, 0x0014, 0x9847, 0x0014, 0x0014, 0x98f5, -+ 0x98e7, 0x0014, 0x0014, 0x0080, 0x00bf, 0x0100, 0x0402, 0x2008, -+ 0xf880, 0xa20a, 0x0014, 0x300b, 0xa20c, 0x0014, 0xa200, 0x8838, -+ 0x817e, 0x842a, 0x84a0, 0x3806, 0x8839, 0x28c2, 0x9cc3, 0xa805, -+ 0x0864, 0xa83b, 0x3008, 0x28c1, 0x9cc3, 0xa201, 0x300c, 0x2847, -+ 0x8161, 0x846a, 0x8000, 0x84a4, 0x1856, 0x883a, 0xa808, 0x28e2, -+ 0x9ca0, 0xa8f3, 0x0864, 0xa829, 0x300c, 0xa801, 0x3008, 0x28e1, -+ 0x9ca0, 0x280d, 0xa204, 0x64c0, 0x67a0, 0x6fc0, 0x1814, 0x883b, -+ 0x7023, 0x8576, 0x8677, 0xa80f, 0x786e, 0x883e, 0xa80c, 0x282b, -+ 0xa205, 0x64a0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, -+ 0x8677, 0xa801, 0x883e, 0x2069, 0x28c1, 0x9cc3, 0x2044, 0x2103, -+ 0x20a2, 0x2081, 0xa8dc, 0xa207, 0x0014, 0xa203, 0x8000, 0x84a8, -+ 0x85a4, 0x1872, 0x849a, 0x883c, 0x1fe2, 0xf601, 0xa208, 0x856e, -+ 0x866f, 0x0704, 0x3008, 0x9ca0, 0x0014, 0xa202, 0x8000, 0x85a4, -+ 0x3009, 0x84a8, 0x19e2, 0xf848, 0x8174, 0x86eb, 0x85eb, 0x872e, -+ 0x87a9, 0x883f, 0x08e6, 0xa8f1, 0xf861, 0xa8e8, 0xf801, 0x0014, -+ 0xf881, 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfaa2, 0x1de2, 0x0014, -+ 0x8532, 0xf221, 0x0014, 0x1de2, 0x84a8, 0xd6e0, 0x1fe6, 0x0014, -+ 0xa206, 0x6865, 0x817f, 0x842a, 0x1dc1, 0x8823, 0x0016, 0x6042, -+ 0x8008, 0xa8fa, 0x8000, 0x84a4, 0x8160, 0x842a, 0xf021, 0x3008, -+ 0x84a8, 0x1dc6, 0x20d7, 0x8822, 0x0016, 0x8000, 0x2848, 0x1011, -+ 0xa8fc, 0x3008, 0x8000, 0xa000, 0x2802, 0x1011, 0xa8fd, 0xa887, -+ 0x3008, 0x283d, 0x1011, 0xa8fd, 0xa209, 0x0017, 0x300c, 0x8000, -+ 0x85a4, 0x1de2, 0xdac1, 0x0014, 0x26e0, 0x873a, 0xfaa2, 0x19f2, -+ 0x1fe2, 0x0014, 0xa20b, 0x0014, 0xa20d, 0x817e, 0x842a, 0x84a0, -+ 0x3806, 0x0210, 0x9ccd, 0x0704, 0x0000, 0x127e, 0x2091, 0x2200, -+ 0x2049, 0x314d, 0x7000, 0x7204, 0xa205, 0x720c, 0xa215, 0x7008, -+ 0xa084, 0xfffd, 0xa205, 0x0040, 0x315f, 0x0078, 0x3164, 0x7003, -+ 0x0000, 0x127f, 0x2000, 0x007c, 0x7000, 0xa084, 0x0001, 0x00c0, -+ 0x3192, 0x7108, 0x8104, 0x00c8, 0x3171, 0x1078, 0x322e, 0x0078, -+ 0x3169, 0x700c, 0xa08c, 0x007f, 0x0040, 0x3192, 0x7004, 0x8004, -+ 0x00c8, 0x3189, 0x7014, 0xa005, 0x00c0, 0x3185, 0x7010, 0xa005, -+ 0x0040, 0x3189, 0xa102, 0x00c8, 0x3169, 0x7007, 0x0010, 0x0078, -+ 0x3192, 0x8aff, 0x0040, 0x3192, 0x1078, 0x33eb, 0x00c0, 0x318c, -+ 0x0040, 0x3169, 0x1078, 0x31dc, 0x7003, 0x0000, 0x127f, 0x2000, -+ 0x007c, 0x6424, 0x84ff, 0x0040, 0x31b6, 0x2c70, 0x2039, 0x31bb, -+ 0x2704, 0xae68, 0x680c, 0xa630, 0x6808, 0xa529, 0x8421, 0x0040, -+ 0x31b6, 0x8738, 0x2704, 0xa005, 0x00c0, 0x31a1, 0x7098, 0xa075, -+ 0x0040, 0x31b6, 0x2039, 0x31b8, 0x0078, 0x31a0, 0x007c, 0x0000, -+ 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0000, -+ 0x127e, 0x2091, 0x2200, 0x2079, 0x3800, 0x2071, 0x0010, 0x7007, -+ 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x2071, 0x0020, 0x7007, -+ 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x2049, 0x0000, 0x78b7, -+ 0x0000, 0x127f, 0x2000, 0x007c, 0x2049, 0x31dc, 0x7004, 0x8004, -+ 0x00c8, 0x3208, 0x7007, 0x0012, 0x7108, 0x7008, 0xa106, 0x00c0, -+ 0x31e4, 0xa184, 0x0030, 0x0040, 0x31f1, 0xa086, 0x0030, 0x00c0, -+ 0x31e4, 0x7000, 0xa084, 0x0001, 0x00c0, 0x3208, 0x7008, 0xa084, -+ 0x000c, 0x00c0, 0x3206, 0x710c, 0xa184, 0x0300, 0x00c0, 0x3206, -+ 0xa184, 0x007f, 0x00c0, 0x31dc, 0x0078, 0x3208, 0x6817, 0x0003, -+ 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0, -+ 0x320c, 0x7007, 0x0012, 0x7108, 0x8104, 0x0048, 0x3211, 0x78b7, -+ 0x0000, 0x7003, 0x0000, 0x2049, 0x0000, 0x007c, 0x107e, 0x007e, -+ 0x127e, 0x157e, 0x2091, 0x2200, 0x7108, 0x1078, 0x322e, 0x157f, -+ 0x127f, 0x2091, 0x8001, 0x007f, 0x107f, 0x007c, 0x7204, 0x2118, -+ 0x7108, 0x700c, 0xa084, 0x0300, 0x00c0, 0x3270, 0xa184, 0x000c, -+ 0x00c0, 0x3270, 0x8213, 0x8213, 0x8213, 0x8213, 0xa284, 0x0100, -+ 0xa10d, 0x810b, 0x810b, 0x810f, 0xa184, 0x0007, 0x0079, 0x3248, -+ 0x3252, 0x3262, 0x3270, 0x3262, 0x3284, 0x3284, 0x3270, 0x3282, -+ 0x1078, 0x1ce7, 0x7007, 0x0002, 0x8aff, 0x00c0, 0x325b, 0x2049, -+ 0x0000, 0x0078, 0x325f, 0x1078, 0x33eb, 0x00c0, 0x325b, 0x78b7, -+ 0x0000, 0x007c, 0x7007, 0x0002, 0x8aff, 0x00c0, 0x3269, 0x0078, -+ 0x326d, 0x1078, 0x33eb, 0x00c0, 0x3269, 0x78b7, 0x0000, 0x007c, -+ 0x7007, 0x0002, 0x1078, 0x31dc, 0x1078, 0x2f2b, 0x6814, 0xa084, -+ 0x8000, 0x0040, 0x327d, 0x6817, 0x0002, 0x007c, 0x1078, 0x1ce7, -+ 0x1078, 0x1ce7, 0x1078, 0x32d6, 0x7210, 0x7114, 0x700c, 0xa09c, -+ 0x007f, 0x2800, 0xa300, 0xa211, 0xa189, 0x0000, 0x78b4, 0xa005, -+ 0x0040, 0x3296, 0x78b7, 0x0000, 0x0078, 0x32b9, 0x1078, 0x32d6, -+ 0x2704, 0x2c58, 0xac60, 0x630c, 0x2200, 0xa322, 0x6308, 0x2100, -+ 0xa31b, 0x2400, 0xa305, 0x0040, 0x32af, 0x00c8, 0x32af, 0x8412, -+ 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0078, 0x3296, 0x2b60, -+ 0x8a07, 0xa7ba, 0x31b8, 0xa73d, 0x2c00, 0x6882, 0x6f86, 0x6c8e, -+ 0x6b8a, 0x7007, 0x0012, 0x1078, 0x31dc, 0x007c, 0x8738, 0x2704, -+ 0xa005, 0x00c0, 0x32ca, 0x6098, 0xa005, 0x0040, 0x32d3, 0x2060, -+ 0x2039, 0x31b8, 0x8a51, 0x0040, 0x32d2, 0x7008, 0xa084, 0x00c0, -+ 0xa086, 0x00c0, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50, 0x8739, -+ 0x2704, 0xa004, 0x00c0, 0x32e3, 0x2039, 0x31be, 0x6000, 0xa064, -+ 0x00c0, 0x32e3, 0x2d60, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, -+ 0x0d7f, 0x6880, 0x2060, 0x6884, 0x6b88, 0x6c8c, 0x8057, 0xaad4, -+ 0x00ff, 0xa084, 0x00ff, 0xa0b8, 0x31b8, 0x7e08, 0xa6b5, 0x000c, -+ 0x6818, 0xa084, 0x0040, 0x0040, 0x32ff, 0xa6b5, 0x0001, 0x0f7e, -+ 0x2079, 0x0100, 0x7858, 0x0f7f, 0xa084, 0x0040, 0x0040, 0x330e, -+ 0xa684, 0x0001, 0x00c0, 0x330e, 0xa6b5, 0x0001, 0x7007, 0x0004, -+ 0x7004, 0xa084, 0x0004, 0x00c0, 0x3310, 0x7000, 0xa005, 0x0040, -+ 0x331b, 0x1078, 0x1ce7, 0x2400, 0xa305, 0x00c0, 0x3321, 0x0078, -+ 0x335e, 0x2c58, 0x2704, 0xac60, 0x6004, 0xa400, 0x007e, 0x701a, -+ 0x6000, 0xa301, 0x701e, 0x2009, 0x04fd, 0x2104, 0xa086, 0x04fd, -+ 0x007f, 0x00c0, 0x334e, 0xa084, 0x0001, 0x0040, 0x334e, 0xa684, -+ 0x0001, 0x00c0, 0x334e, 0x7013, 0x0001, 0x7017, 0x0000, 0x7602, -+ 0x7007, 0x0001, 0x78b7, 0x0001, 0xa4a0, 0x0001, 0xa399, 0x0000, -+ 0x6004, 0xa400, 0x701a, 0x6000, 0xa301, 0x701e, 0x620c, 0x2400, -+ 0xa202, 0x7012, 0x6208, 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, -+ 0x0001, 0x2b60, 0x1078, 0x32be, 0x0078, 0x3360, 0x1078, 0x33eb, -+ 0x00c0, 0x335e, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, -+ 0x2200, 0x0d7f, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, -+ 0x336c, 0x7003, 0x0008, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, -+ 0x2091, 0x2200, 0x0d7f, 0x2049, 0x3376, 0x7007, 0x0004, 0x7004, -+ 0xa084, 0x0004, 0x00c0, 0x337f, 0x7e08, 0xa6b5, 0x000c, 0x6818, -+ 0xa084, 0x0040, 0x0040, 0x338e, 0xa6b5, 0x0001, 0x6824, 0xa005, -+ 0x0040, 0x339a, 0x2050, 0x2039, 0x31bb, 0x2d60, 0x1078, 0x33eb, -+ 0x00c0, 0x3396, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, 0x017e, -+ 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f, 0x047f, 0x7e08, 0xa6b5, -+ 0x000c, 0x6818, 0xa084, 0x0040, 0x0040, 0x33b0, 0xa6b5, 0x0001, -+ 0x2049, 0x339d, 0x6824, 0xa055, 0x0040, 0x33e8, 0x2d70, 0x2e60, -+ 0x2039, 0x31bb, 0x2704, 0xae68, 0x680c, 0xa422, 0x6808, 0xa31b, -+ 0x0048, 0x33d5, 0x8a51, 0x00c0, 0x33c7, 0x1078, 0x1ce7, 0x8738, -+ 0x2704, 0xa005, 0x00c0, 0x33bb, 0x7098, 0xa075, 0x2060, 0x0040, -+ 0x33e8, 0x2039, 0x31b8, 0x0078, 0x33ba, 0x8422, 0x8420, 0x831a, -+ 0xa399, 0x0000, 0x690c, 0x2400, 0xa122, 0x6908, 0x2300, 0xa11b, -+ 0x00c8, 0x33e4, 0x1078, 0x1ce7, 0x2071, 0x0020, 0x0078, 0x330e, -+ 0x127f, 0x2000, 0x007c, 0x7008, 0xa084, 0x00c0, 0xa086, 0x00c0, -+ 0x0040, 0x3413, 0x2704, 0xac08, 0x2104, 0x701e, 0x8108, 0x2104, -+ 0x701a, 0x8108, 0x2104, 0x7016, 0x8108, 0x2104, 0x7012, 0x0f7e, -+ 0x2079, 0x0100, 0x7858, 0x0f7f, 0xa084, 0x0040, 0x0040, 0x340e, -+ 0xa684, 0x0001, 0x00c0, 0x340e, 0xa6b5, 0x0001, 0x7602, 0x7007, -+ 0x0001, 0x1078, 0x32be, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091, -+ 0x2200, 0x2049, 0x3414, 0x0d7f, 0x087f, 0x7108, 0xa184, 0x00c0, -+ 0x00c0, 0x342a, 0x6824, 0xa005, 0x0040, 0x343a, 0x0078, 0x3164, -+ 0x0078, 0x343a, 0x7108, 0x8104, 0x00c8, 0x3432, 0x1078, 0x322e, -+ 0x0078, 0x341d, 0x7007, 0x0010, 0x7108, 0x8104, 0x00c8, 0x3434, -+ 0x1078, 0x322e, 0x7008, 0xa086, 0x0002, 0x00c0, 0x341d, 0x7000, -+ 0xa005, 0x00c0, 0x341d, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, -+ 0x2000, 0x007c, 0x127e, 0x147e, 0x137e, 0x157e, 0x0d7e, 0x2091, -+ 0x2200, 0x0d7f, 0x2049, 0x344a, 0xad80, 0x0010, 0x20a0, 0x2099, -+ 0x0031, 0x700c, 0xa084, 0x007f, 0x6826, 0x7007, 0x0008, 0x7007, -+ 0x0002, 0x7003, 0x0001, 0x0040, 0x3468, 0x8000, 0x80ac, 0x53a5, -+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x346a, 0x2049, -+ 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f, 0x2000, -+ 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x2049, -+ 0x3479, 0x6880, 0x2060, 0x6884, 0x6b88, 0x6c8c, 0x8057, 0xaad4, -+ 0x00ff, 0xa084, 0x00ff, 0xa0b8, 0x31b8, 0x7e08, 0xa6b5, 0x0004, -+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x3492, 0x2c58, -+ 0x2704, 0xac60, 0x6004, 0xa400, 0x701a, 0x6000, 0xa301, 0x701e, -+ 0x7013, 0x0001, 0x7017, 0x0000, 0x7602, 0x7007, 0x0001, 0x007f, -+ 0x8007, 0x2009, 0x0031, 0x200a, 0x00a0, 0x34ac, 0x7108, 0x7007, -+ 0x0002, 0x810c, 0x00c8, 0x34ac, 0x810c, 0x0048, 0x34b9, 0x0078, -+ 0x3270, 0xa4a0, 0x0001, 0xa399, 0x0000, 0x6b8a, 0x6c8e, 0x7007, -+ 0x0004, 0x2049, 0x0000, 0x7003, 0x0000, 0x127f, 0x2000, 0x007c, -+ 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x34d1, -+ 0xa200, 0x00f0, 0x34cc, 0x8086, 0x818e, 0x007c, 0x157e, 0x20a9, -+ 0x0010, 0xa005, 0x0040, 0x34f7, 0xa11a, 0x00c8, 0x34f7, 0x8213, -+ 0x818d, 0x0048, 0x34ea, 0xa11a, 0x00c8, 0x34eb, 0x00f0, 0x34df, -+ 0x0078, 0x34ef, 0xa11a, 0x2308, 0x8210, 0x00f0, 0x34df, 0x007e, -+ 0x3200, 0xa084, 0xf7ff, 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, -+ 0x3200, 0xa085, 0x0800, 0x0078, 0x34f3, 0x00e0, 0x3563, 0x2091, -+ 0x6000, 0x7820, 0x8001, 0x7822, 0x00c0, 0x355b, 0x7824, 0x7822, -+ 0x2009, 0x3834, 0x2104, 0xa005, 0x00c0, 0x3510, 0x2001, 0x0010, -+ 0x8001, 0x200a, 0x077e, 0x803f, 0x1078, 0x2f11, 0x077f, 0x20a9, -+ 0x0020, 0x601f, 0x0064, 0xace0, 0x0010, 0x00f0, 0x3519, 0x2091, -+ 0x8000, 0x2069, 0x3840, 0x6800, 0xa084, 0x0007, 0x0040, 0x3538, -+ 0xa086, 0x0002, 0x0040, 0x3538, 0x6830, 0xa00d, 0x0040, 0x3538, -+ 0x2104, 0xa005, 0x0040, 0x3538, 0x8001, 0x200a, 0x0040, 0x3640, -+ 0x2061, 0x3b00, 0x2009, 0x0002, 0x20a9, 0x0100, 0x603c, 0xa005, -+ 0x0040, 0x354e, 0x8001, 0x603e, 0x00c0, 0x354e, 0x6010, 0xa005, -+ 0x0040, 0x354e, 0x017e, 0x1078, 0x1b49, 0x017f, 0xace0, 0x0010, -+ 0x0070, 0x3554, 0x0078, 0x353e, 0x8109, 0x0040, 0x355b, 0x20a9, -+ 0x0100, 0x0078, 0x353e, 0x1078, 0x3578, 0x1078, 0x3566, 0x1078, -+ 0x359d, 0x1078, 0x3707, 0x2091, 0x8001, 0x007c, 0x783c, 0x8001, -+ 0x783e, 0x00c0, 0x3577, 0x7840, 0x783e, 0x7848, 0xa005, 0x0040, -+ 0x3577, 0x8001, 0x784a, 0x00c0, 0x3577, 0x1078, 0x1b49, 0x007c, -+ 0x7834, 0x8001, 0x7836, 0x00c0, 0x359c, 0x7838, 0x7836, 0x2091, -+ 0x8000, 0x7844, 0xa005, 0x00c0, 0x3587, 0x2001, 0x0101, 0x8001, -+ 0x7846, 0xa080, 0x5b00, 0x2040, 0x2004, 0xa065, 0x0040, 0x359c, -+ 0x6020, 0xa005, 0x0040, 0x3598, 0x8001, 0x6022, 0x0040, 0x35cc, -+ 0x6000, 0x2c40, 0x0078, 0x358d, 0x007c, 0x7828, 0x8001, 0x782a, -+ 0x00c0, 0x35cb, 0x782c, 0x782a, 0x7830, 0xa005, 0x00c0, 0x35aa, -+ 0x2001, 0x0200, 0x8001, 0x7832, 0x8003, 0x8003, 0x8003, 0x8003, -+ 0xa090, 0x3b00, 0xa298, 0x0002, 0x2304, 0xa084, 0x0008, 0x0040, -+ 0x35cb, 0xa290, 0x0009, 0x2204, 0xa005, 0x0040, 0x35c3, 0x8001, -+ 0x2012, 0x00c0, 0x35cb, 0x2304, 0xa084, 0xfff7, 0xa085, 0x0080, -+ 0x201a, 0x1078, 0x1b49, 0x007c, 0x2069, 0x3840, 0x6800, 0xa005, -+ 0x0040, 0x35d6, 0x683c, 0xac06, 0x0040, 0x3640, 0x6710, 0x6fb6, -+ 0x1078, 0x1758, 0x6808, 0xa084, 0x0020, 0x00c0, 0x363d, 0x2009, -+ 0x382b, 0x2104, 0xa005, 0x0040, 0x35e9, 0x6023, 0x0001, 0x0078, -+ 0x363d, 0x6808, 0xa084, 0xffef, 0xa085, 0x0021, 0x6017, 0x0006, -+ 0x60b0, 0xa084, 0x3f00, 0x601a, 0x601c, 0xa084, 0x00ff, 0xa085, -+ 0x0060, 0x601e, 0x6000, 0x2042, 0x6710, 0x6fb6, 0x1078, 0x1758, -+ 0x6818, 0xa005, 0x0040, 0x3606, 0x8001, 0x681a, 0x6808, 0xa084, -+ 0xffef, 0x680a, 0x6810, 0x8001, 0x00d0, 0x3610, 0x1078, 0x1ce7, -+ 0x6812, 0x602f, 0x0000, 0x602b, 0x0000, 0x2c68, 0x1078, 0x18b6, -+ 0x2069, 0x3840, 0x6710, 0xa784, 0x0f00, 0x68b6, 0x2001, 0x0002, -+ 0x1078, 0x1b44, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0030, -+ 0x1078, 0x1765, 0x2011, 0x3835, 0x2214, 0x6a3e, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x3622, 0x2009, 0x382b, 0x200b, 0x0008, 0x2009, -+ 0x382c, 0x2069, 0x3840, 0x68b4, 0x200a, 0x2091, 0x8001, 0x007c, -+ 0x2009, 0x384f, 0x2164, 0x2069, 0x0100, 0x1078, 0x1c97, 0x6017, -+ 0x0006, 0x6858, 0xa084, 0x3f00, 0x601a, 0x601c, 0xa084, 0x00ff, -+ 0xa085, 0x0048, 0x601e, 0x602f, 0x0000, 0x602b, 0x0000, 0x6830, -+ 0xa084, 0x0040, 0x0040, 0x367c, 0x684b, 0x0004, 0x20a9, 0x0014, -+ 0x6848, 0xa084, 0x0004, 0x0040, 0x3669, 0x0070, 0x3669, 0x0078, -+ 0x3660, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, -+ 0x0040, 0x3676, 0x0070, 0x3676, 0x0078, 0x366d, 0x20a9, 0x00fa, -+ 0x0070, 0x367c, 0x0078, 0x3678, 0x6808, 0xa084, 0xfffd, 0x680a, -+ 0x681b, 0x0046, 0x2009, 0x3868, 0x200b, 0x0007, 0x784c, 0x784a, -+ 0x2091, 0x8001, 0x007c, 0x2079, 0x3800, 0x1078, 0x36de, 0x1078, -+ 0x36a6, 0x1078, 0x36b4, 0x1078, 0x36c9, 0x1078, 0x36f3, 0x2009, -+ 0x3833, 0x200b, 0x0000, 0x2009, 0x3834, 0x200b, 0x0000, 0x7833, -+ 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, 0x007c, 0x2019, 0x0003, -+ 0x2011, 0x3846, 0x2204, 0xa086, 0x003c, 0x0040, 0x36b1, 0x2019, -+ 0x0002, 0x7b2a, 0x7b2e, 0x007c, 0x2019, 0x0030, 0x2011, 0x3846, -+ 0x2204, 0xa086, 0x0032, 0x0040, 0x36c6, 0x2019, 0x0039, 0x2204, -+ 0xa086, 0x003c, 0x0040, 0x36c6, 0x2019, 0x0027, 0x7b36, 0x7b3a, -+ 0x007c, 0x2019, 0x000f, 0x2011, 0x3846, 0x2204, 0xa086, 0x003c, -+ 0x0040, 0x36db, 0x2019, 0x000d, 0x2204, 0xa086, 0x0032, 0x0040, -+ 0x36db, 0x2019, 0x000a, 0x7b3e, 0x7b42, 0x007c, 0x2019, 0x2faf, -+ 0x2011, 0x3846, 0x2204, 0xa086, 0x0032, 0x0040, 0x36f0, 0x2019, -+ 0x3971, 0x2204, 0xa086, 0x003c, 0x0040, 0x36f0, 0x2019, 0x2626, -+ 0x7b22, 0x7b26, 0x007c, 0x2019, 0x0001, 0x2011, 0x3846, 0x2204, -+ 0xa086, 0x003c, 0x0040, 0x36fe, 0x2019, 0x0001, 0x017e, 0x2009, -+ 0x3831, 0x230a, 0x2009, 0x3832, 0x230a, 0x017f, 0x007c, 0x2009, -+ 0x3831, 0x2104, 0x8001, 0x200a, 0xa005, 0x00c0, 0x3755, 0x2009, -+ 0x3832, 0x2104, 0x2009, 0x3831, 0x200a, 0x2009, 0x3833, 0x2104, -+ 0xa005, 0x00c0, 0x371d, 0x2001, 0x0200, 0x8001, 0x200a, 0x8003, -+ 0x8003, 0x8003, 0x8003, 0xa090, 0x3b00, 0x2208, 0xa298, 0x0002, -+ 0x2304, 0xa084, 0x0200, 0x0040, 0x3755, 0xa290, 0x000e, 0x2204, -+ 0xa005, 0x0040, 0x3740, 0x8001, 0x0040, 0x3740, 0x8001, 0x0040, -+ 0x3740, 0x8001, 0x0040, 0x3740, 0x8001, 0x2012, 0x00c0, 0x3755, -+ 0x2012, 0x2304, 0xa084, 0xfdff, 0xa085, 0x0400, 0x201a, 0xa188, -+ 0x000c, 0x2104, 0x007e, 0xa084, 0x00ff, 0x8001, 0x027f, 0xa294, -+ 0xff00, 0xa205, 0x200a, 0x1078, 0x1b49, 0x007c, 0x6ed0 -+}; -+#else -+/* -+ * Flakey, not quite functional, target mode code for ISP1000 -+ * hacked out of PCI 7.55 initiator/target mode code. -+ */ -+static const u_int16_t isp_1000_risc_code[] = { -+ 0x0078, 0x103a, 0x0000, 0x3c1f, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x3520, 0x514c, 0x4f47, 0x4943, -+ 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350, -+ 0x3130, 0x3030, 0x2049, 0x2f54, 0x2046, 0x6972, 0x6d77, 0x6172, -+ 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, 0x372e, 0x3535, -+ 0x2020, 0x2043, 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, -+ 0x3030, 0x2050, 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, -+ 0x3031, 0x2024, 0x3700, 0xa086, 0xffff, 0x0040, 0x1043, 0x2079, -+ 0x4d00, 0x7803, 0x0001, 0x20c1, 0x0008, 0x2071, 0x0010, 0x70c3, -+ 0x0004, 0x20c9, 0x73ff, 0x2089, 0x116f, 0x70c7, 0x4953, 0x70cb, -+ 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0007, 0x3f00, 0x70d6, 0x20c1, -+ 0x0008, 0x2019, 0x0000, 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, -+ 0xa1ec, 0x7fff, 0x2d64, 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, -+ 0x205b, 0x5050, 0x2114, 0xa286, 0xa5a5, 0x0040, 0x10b5, 0xa386, -+ 0x000f, 0x0040, 0x107b, 0x2c6a, 0x2a5a, 0x20c1, 0x0000, 0x2019, -+ 0x000f, 0x0078, 0x105b, 0x2c6a, 0x2a5a, 0x20c1, 0x0008, 0x2009, -+ 0x7fff, 0x2148, 0x2944, 0x204b, 0x0a0a, 0xa9bc, 0x3fff, 0x2734, -+ 0x203b, 0x5050, 0x2114, 0xa286, 0x0a0a, 0x0040, 0x109f, 0x284a, -+ 0x263a, 0x20c1, 0x0004, 0x2009, 0x3fff, 0x2134, 0x200b, 0x5050, -+ 0x2114, 0xa286, 0x5050, 0x0040, 0x10a0, 0x0078, 0x1177, 0x284a, -+ 0x263a, 0x98c0, 0xa188, 0x1000, 0x212c, 0x200b, 0xa5a5, 0x2114, -+ 0xa286, 0xa5a5, 0x0040, 0x10b2, 0x250a, 0xa18a, 0x1000, 0x98c1, -+ 0x0078, 0x10b7, 0x250a, 0x0078, 0x10b7, 0x2c6a, 0x2a5a, 0x2130, -+ 0xa18a, 0x0040, 0x2128, 0xa1a2, 0x4d00, 0x8424, 0x8424, 0x8424, -+ 0x8424, 0x8424, 0x8424, 0xa192, 0x7400, 0x2009, 0x0000, 0x2001, -+ 0x0031, 0x1078, 0x1bd8, 0x2218, 0x2079, 0x4d00, 0x2fa0, 0x2408, -+ 0x2011, 0x0000, 0x20a9, 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10d2, -+ 0x7ef2, 0x8528, 0x7de6, 0x7cea, 0x7bee, 0x7883, 0x0000, 0x2031, -+ 0x0030, 0x78cf, 0x0101, 0x780b, 0x0002, 0x780f, 0x0002, 0x784f, -+ 0x0003, 0x2069, 0x4d40, 0x00a8, 0x10f1, 0x681b, 0x003c, 0x0078, -+ 0x10f3, 0x681b, 0x0028, 0x6807, 0x0007, 0x680b, 0x00fa, 0x680f, -+ 0x0008, 0x6813, 0x0005, 0x6823, 0x0000, 0x6827, 0x0006, 0x6817, -+ 0x0008, 0x682b, 0x0000, 0x681f, 0x0019, 0x2069, 0x4f80, 0x2011, -+ 0x0020, 0x2009, 0x0010, 0x680b, 0x080c, 0x680f, 0x0019, 0x6803, -+ 0xfd00, 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8, 0x0008, 0xa290, -+ 0x0004, 0x8109, 0x00c0, 0x110b, 0x2069, 0x5000, 0x2009, 0x0002, -+ 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, 0x0040, 0x7bf0, 0xa386, -+ 0xfeff, 0x00c0, 0x1131, 0x6817, 0x0100, 0x681f, 0x0064, 0x0078, -+ 0x1135, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, 0x0010, 0x0070, -+ 0x113b, 0x0078, 0x1122, 0x8109, 0x00c0, 0x1120, 0x1078, 0x20d8, -+ 0x1078, 0x43d1, 0x1078, 0x18a9, 0x1078, 0x48d9, 0x3200, 0xa085, -+ 0x000d, 0x2090, 0x70c3, 0x0000, 0x0090, 0x1155, 0x70c0, 0xa086, -+ 0x0002, 0x00c0, 0x1155, 0x1078, 0x126d, 0x1078, 0x117f, 0x78cc, -+ 0xa005, 0x00c0, 0x1163, 0x1078, 0x1c01, 0x0010, 0x1169, 0x0068, -+ 0x1169, 0x1078, 0x1fbd, 0x0010, 0x1169, 0x0068, 0x1169, 0x1078, -+ 0x198e, 0x00e0, 0x1155, 0x1078, 0x4760, 0x0078, 0x1155, 0x1177, -+ 0x1179, 0x22cc, 0x22cc, 0x4452, 0x4452, 0x22cc, 0x22cc, 0x0078, -+ 0x1177, 0x0078, 0x1179, 0x0078, 0x117b, 0x0078, 0x117d, 0x0068, -+ 0x11ea, 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x11ea, -+ 0x7814, 0xa005, 0x00c0, 0x1190, 0x0010, 0x11eb, 0x0078, 0x11ea, -+ 0x2009, 0x4d5b, 0x2104, 0xa005, 0x00c0, 0x11ea, 0x2009, 0x4d64, -+ 0x200b, 0x0000, 0x7914, 0xa186, 0x0042, 0x00c0, 0x11b5, 0x7816, -+ 0x2009, 0x4d62, 0x2164, 0x200b, 0x0000, 0x6018, 0x70c6, 0x6014, -+ 0x70ca, 0x611c, 0xa18c, 0xff00, 0x6020, 0xa084, 0x00ff, 0xa105, -+ 0x70ce, 0x1078, 0x188e, 0x0078, 0x11e8, 0x7814, 0xa086, 0x0018, -+ 0x00c0, 0x11bc, 0x1078, 0x15e0, 0x7817, 0x0000, 0x2009, 0x4d62, -+ 0x2104, 0xa065, 0x0040, 0x11d8, 0x0c7e, 0x609c, 0x2060, 0x1078, -+ 0x18f9, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x16a2, 0x2009, 0x000e, -+ 0x6007, 0x0103, 0x1078, 0x186a, 0x00c0, 0x11e4, 0x1078, 0x188e, -+ 0x2009, 0x4d62, 0x200b, 0x0000, 0x2009, 0x4d5c, 0x2104, 0x200b, -+ 0x0000, 0xa005, 0x0040, 0x11e8, 0x2001, 0x4005, 0x0078, 0x126f, -+ 0x0078, 0x126d, 0x007c, 0x70c3, 0x0000, 0x70c7, 0x0000, 0x70cb, -+ 0x0000, 0x70cf, 0x0000, 0x70c0, 0xa0bc, 0xffc0, 0x00c0, 0x123b, -+ 0x2038, 0x0079, 0x11fb, 0x126d, 0x12c4, 0x1292, 0x12d3, 0x12e2, -+ 0x12e8, 0x1289, 0x16ba, 0x12ec, 0x1281, 0x1296, 0x1298, 0x129a, -+ 0x129c, 0x16bf, 0x1281, 0x12f4, 0x1313, 0x15ee, 0x16b4, 0x129e, -+ 0x1517, 0x1533, 0x154f, 0x157a, 0x14d0, 0x14de, 0x14f2, 0x1506, -+ 0x1384, 0x1281, 0x1332, 0x1338, 0x133d, 0x1342, 0x1348, 0x134d, -+ 0x1352, 0x1357, 0x135c, 0x1360, 0x1375, 0x1381, 0x1281, 0x1281, -+ 0x1281, 0x1281, 0x1390, 0x1399, 0x13a8, 0x13ce, 0x13d8, 0x13df, -+ 0x141a, 0x1429, 0x1438, 0x144a, 0x14b0, 0x14c0, 0x1281, 0x1281, -+ 0x1281, 0x1281, 0x14c5, 0xa0bc, 0xffa0, 0x00c0, 0x1281, 0x2038, -+ 0xa084, 0x001f, 0x0079, 0x1244, 0x16f8, 0x16fb, 0x170b, 0x1281, -+ 0x1281, 0x1846, 0x1858, 0x1281, 0x1281, 0x1281, 0x185c, 0x1864, -+ 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, -+ 0x1281, 0x16d6, 0x16ea, 0x1281, 0x1797, 0x1281, 0x1822, 0x182c, -+ 0x1830, 0x183e, 0x1281, 0x1281, 0x72ca, 0x71c6, 0x2001, 0x4006, -+ 0x0078, 0x126f, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, -+ 0x0068, 0x1270, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, -+ 0x00e0, 0x1278, 0x00e0, 0x127a, 0x0068, 0x127a, 0x2091, 0x4080, -+ 0x007c, 0x70c3, 0x4001, 0x0078, 0x1270, 0x70c3, 0x4006, 0x0078, -+ 0x1270, 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, -+ 0x0078, 0x126d, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078, 0x126d, -+ 0x0078, 0x126d, 0x0078, 0x126d, 0x0078, 0x126d, 0x2091, 0x8000, -+ 0x70c3, 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, -+ 0x70d3, 0x0007, 0x3f00, 0x70d6, 0x2079, 0x0000, 0x781b, 0x0001, -+ 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x0457, 0x2051, 0x0470, -+ 0x2061, 0x0472, 0x20b9, 0xffff, 0x20c1, 0x0000, 0x2091, 0x5000, -+ 0x2091, 0x4080, 0x0078, 0x0455, 0x2029, 0x0000, 0x2520, 0x71d0, -+ 0x73c8, 0x72cc, 0x70c4, 0x1078, 0x19d3, 0x0040, 0x126d, 0x70c3, -+ 0x4002, 0x0078, 0x126d, 0x2029, 0x0000, 0x2520, 0x71d0, 0x73c8, -+ 0x72cc, 0x70c4, 0x1078, 0x1a1f, 0x0040, 0x126d, 0x70c3, 0x4002, -+ 0x0078, 0x126d, 0x71c4, 0x70c8, 0x2114, 0x200a, 0x0078, 0x126b, -+ 0x71c4, 0x2114, 0x0078, 0x126b, 0x70c7, 0x0007, 0x70cb, 0x0037, -+ 0x70cf, 0x0000, 0x0078, 0x126d, 0x2029, 0x0000, 0x2530, 0x70c4, -+ 0x72c8, 0x73cc, 0x74d0, 0x70c6, 0x72ca, 0x73ce, 0x74d2, 0xa005, -+ 0x0040, 0x130d, 0x8001, 0x7892, 0x7a9a, 0x7b9e, 0x7c96, 0x78cc, -+ 0xa084, 0xfffc, 0x78ce, 0x0078, 0x1311, 0x78cc, 0xa085, 0x0001, -+ 0x78ce, 0x0078, 0x126d, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, -+ 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x0040, -+ 0x132c, 0x8001, 0x78ae, 0x7ab6, 0x7bba, 0x7cb2, 0x78cc, 0xa084, -+ 0xfcff, 0x78ce, 0x0078, 0x1330, 0x78cc, 0xa085, 0x0100, 0x78ce, -+ 0x0078, 0x126d, 0x2009, 0x4d61, 0x210c, 0x7aec, 0x0078, 0x126b, -+ 0x2009, 0x4d41, 0x210c, 0x0078, 0x126c, 0x2009, 0x4d42, 0x210c, -+ 0x0078, 0x126c, 0x2061, 0x4d40, 0x610c, 0x6210, 0x0078, 0x126b, -+ 0x2009, 0x4d45, 0x210c, 0x0078, 0x126c, 0x2009, 0x4d46, 0x210c, -+ 0x0078, 0x126c, 0x2009, 0x4d48, 0x210c, 0x0078, 0x126c, 0x2009, -+ 0x4d49, 0x210c, 0x0078, 0x126c, 0x7908, 0x7a0c, 0x0078, 0x126b, -+ 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, -+ 0x4f80, 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040, 0x1372, 0x6b08, -+ 0x0078, 0x1373, 0x6b0c, 0x0078, 0x126a, 0x77c4, 0x1078, 0x18b9, -+ 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, 0x0078, -+ 0x126a, 0x794c, 0x0078, 0x126c, 0x77c4, 0x1078, 0x18b9, 0x2091, -+ 0x8000, 0x6908, 0x6a18, 0x6b10, 0x2091, 0x8001, 0x0078, 0x126a, -+ 0x71c4, 0xa182, 0x0010, 0x00c8, 0x1265, 0x1078, 0x21a3, 0x0078, -+ 0x126a, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x1265, 0x2011, 0x4d41, -+ 0x2204, 0x007e, 0x2112, 0x1078, 0x215c, 0x017f, 0x0078, 0x126c, -+ 0x71c4, 0x2011, 0x13c6, 0x20a9, 0x0008, 0x2204, 0xa106, 0x0040, -+ 0x13b8, 0x8210, 0x0070, 0x13b6, 0x0078, 0x13ad, 0x0078, 0x1265, -+ 0xa292, 0x13c6, 0x027e, 0x2011, 0x4d42, 0x2204, 0x2112, 0x017f, -+ 0x007e, 0x1078, 0x2168, 0x017f, 0x0078, 0x126c, 0x03e8, 0x00fa, -+ 0x01f4, 0x02ee, 0x0064, 0x0019, 0x0032, 0x004b, 0x2061, 0x4d40, -+ 0x610c, 0x6210, 0x70c4, 0x600e, 0x70c8, 0x6012, 0x0078, 0x126b, -+ 0x2061, 0x4d40, 0x6114, 0x70c4, 0x6016, 0x0078, 0x126c, 0x2061, -+ 0x4d40, 0x71c4, 0x2011, 0x0004, 0x601f, 0x0019, 0x2019, 0x1212, -+ 0xa186, 0x0028, 0x0040, 0x1400, 0x2011, 0x0005, 0x601f, 0x0019, -+ 0x2019, 0x1212, 0xa186, 0x0032, 0x0040, 0x1400, 0x2011, 0x0006, -+ 0x601f, 0x000c, 0x2019, 0x2222, 0xa186, 0x003c, 0x00c0, 0x1265, -+ 0x6018, 0x007e, 0x611a, 0x7800, 0xa084, 0x0001, 0x00c0, 0x1410, -+ 0x0028, 0x140c, 0x0078, 0x1410, 0x2019, 0x2222, 0x0078, 0x1412, -+ 0x2019, 0x1212, 0x23b8, 0x1078, 0x2179, 0x1078, 0x48d9, 0x017f, -+ 0x0078, 0x126c, 0x71c4, 0xa184, 0xffcf, 0x00c0, 0x1265, 0x2011, -+ 0x4d48, 0x2204, 0x2112, 0x007e, 0x1078, 0x219b, 0x017f, 0x0078, -+ 0x126c, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x1265, 0x2011, 0x4d49, -+ 0x2204, 0x007e, 0x2112, 0x1078, 0x218a, 0x017f, 0x0078, 0x126c, -+ 0x71c4, 0x72c8, 0xa184, 0xfffd, 0x00c0, 0x1264, 0xa284, 0xfffd, -+ 0x00c0, 0x1264, 0x2100, 0x7908, 0x780a, 0x2200, 0x7a0c, 0x780e, -+ 0x0078, 0x126b, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, -+ 0x8003, 0xa0e8, 0x4f80, 0x2019, 0x0000, 0x72c8, 0x6800, 0x007e, -+ 0xa226, 0x0040, 0x1479, 0x6a02, 0xa484, 0x2000, 0x0040, 0x1462, -+ 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x1468, 0xa39d, 0x0008, -+ 0xa484, 0x4000, 0x0040, 0x1479, 0x810f, 0xa284, 0x4000, 0x0040, -+ 0x1475, 0x1078, 0x21bd, 0x0078, 0x1479, 0x1078, 0x21af, 0x0078, -+ 0x1479, 0x72cc, 0x6808, 0xa206, 0x0040, 0x14a8, 0xa2a4, 0x00ff, -+ 0x2061, 0x4d40, 0x6118, 0xa186, 0x0028, 0x0040, 0x148f, 0xa186, -+ 0x0032, 0x0040, 0x1495, 0xa186, 0x003c, 0x0040, 0x149b, 0xa482, -+ 0x0064, 0x0048, 0x14a5, 0x0078, 0x149f, 0xa482, 0x0050, 0x0048, -+ 0x14a5, 0x0078, 0x149f, 0xa482, 0x0043, 0x0048, 0x14a5, 0x71c4, -+ 0x71c6, 0x027f, 0x72ca, 0x0078, 0x1266, 0x6a0a, 0xa39d, 0x000a, -+ 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x71c4, 0x0078, 0x126a, -+ 0x77c4, 0x1078, 0x18b9, 0x2091, 0x8000, 0x6a14, 0x6b1c, 0x2091, -+ 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, 0x2708, 0x0078, 0x126a, -+ 0x70c4, 0x794c, 0x784e, 0x0078, 0x126c, 0x71c4, 0x72c8, 0x73cc, -+ 0xa182, 0x0010, 0x00c8, 0x1265, 0x1078, 0x21cb, 0x0078, 0x126a, -+ 0x77c4, 0x1078, 0x18b9, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0002, -+ 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x126b, 0x77c4, 0x1078, -+ 0x18b9, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9, 0x6a0a, 0x6804, -+ 0xa005, 0x0040, 0x14ed, 0x1078, 0x20a0, 0x2091, 0x8001, 0x2708, -+ 0x0078, 0x126b, 0x77c4, 0x1078, 0x18b9, 0x2091, 0x8000, 0x6a08, -+ 0xa295, 0x0004, 0x6a0a, 0x6804, 0xa005, 0x0040, 0x1501, 0x1078, -+ 0x20a0, 0x2091, 0x8001, 0x2708, 0x0078, 0x126b, 0x77c4, 0x2041, -+ 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, -+ 0x18c6, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078, 0x126b, 0x77c4, -+ 0x72c8, 0x73cc, 0x77c6, 0x72ca, 0x73ce, 0x1078, 0x1927, 0x00c0, -+ 0x152f, 0x6818, 0xa005, 0x0040, 0x152f, 0x2708, 0x1078, 0x21db, -+ 0x00c0, 0x152f, 0x7817, 0x0015, 0x2091, 0x8001, 0x007c, 0x2091, -+ 0x8001, 0x0078, 0x126d, 0x77c4, 0x77c6, 0x2041, 0x0021, 0x2049, -+ 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, 0x18c6, 0x2061, -+ 0x4d40, 0x606f, 0x0003, 0x6782, 0x6093, 0x000f, 0x6073, 0x0000, -+ 0x7817, 0x0016, 0x1078, 0x20a0, 0x2091, 0x8001, 0x007c, 0x77c8, -+ 0x77ca, 0x77c4, 0x77c6, 0xa7bc, 0xff00, 0x2091, 0x8000, 0x2061, -+ 0x4d40, 0x606f, 0x0002, 0x6073, 0x0000, 0x6782, 0x6093, 0x000f, -+ 0x7817, 0x0017, 0x1078, 0x20a0, 0x2091, 0x8001, 0x2041, 0x0021, -+ 0x2049, 0x0004, 0x2051, 0x0010, 0x2091, 0x8000, 0x1078, 0x18c6, -+ 0x70c8, 0x6836, 0x8738, 0xa784, 0x001f, 0x00c0, 0x156e, 0x2091, -+ 0x8001, 0x007c, 0x78cc, 0xa084, 0x0003, 0x00c0, 0x159e, 0x2039, -+ 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x1078, -+ 0x18b9, 0x2091, 0x8000, 0x6808, 0xa80d, 0x690a, 0x2091, 0x8001, -+ 0x8738, 0xa784, 0x001f, 0x00c0, 0x1587, 0xa7bc, 0xff00, 0x873f, -+ 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1587, 0x2091, 0x8000, -+ 0x2069, 0x0100, 0x6830, 0xa084, 0x0040, 0x0040, 0x15c7, 0x684b, -+ 0x0004, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0004, 0x0040, 0x15b4, -+ 0x0070, 0x15b4, 0x0078, 0x15ab, 0x684b, 0x0009, 0x20a9, 0x0014, -+ 0x6848, 0xa084, 0x0001, 0x0040, 0x15c1, 0x0070, 0x15c1, 0x0078, -+ 0x15b8, 0x20a9, 0x00fa, 0x0070, 0x15c7, 0x0078, 0x15c3, 0x2079, -+ 0x4d00, 0x7817, 0x0018, 0x2061, 0x4d40, 0x606f, 0x0001, 0x6073, -+ 0x0000, 0x6093, 0x000f, 0x78cc, 0xa085, 0x0002, 0x78ce, 0x6808, -+ 0xa084, 0xfffd, 0x680a, 0x681b, 0x0048, 0x2091, 0x8001, 0x007c, -+ 0x78cc, 0xa084, 0xfffd, 0x78ce, 0xa084, 0x0001, 0x00c0, 0x15ea, -+ 0x1078, 0x1971, 0x71c4, 0x71c6, 0x794a, 0x007c, 0x2029, 0x0000, -+ 0x2520, 0x71c4, 0x73c8, 0x72cc, 0x71c6, 0x73ca, 0x72ce, 0x2079, -+ 0x4d00, 0x1078, 0x1874, 0x0040, 0x169e, 0x20a9, 0x0005, 0x20a1, -+ 0x4d18, 0x2091, 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, 0x0020, -+ 0x1078, 0x186f, 0x0040, 0x1610, 0x1078, 0x188e, 0x0078, 0x169e, -+ 0x6004, 0xa084, 0xff00, 0x8007, 0x8009, 0x0040, 0x166d, 0x0c7e, -+ 0x2c68, 0x1078, 0x1874, 0x0040, 0x163e, 0x2c00, 0x689e, 0x8109, -+ 0x00c0, 0x1618, 0x609f, 0x0000, 0x0c7f, 0x0c7e, 0x7218, 0x731c, -+ 0x2c68, 0x689c, 0xa065, 0x0040, 0x166c, 0x2009, 0x0020, 0x1078, -+ 0x186f, 0x00c0, 0x1655, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0002, -+ 0x00c0, 0x163e, 0x2d00, 0x6002, 0x0078, 0x1626, 0x0c7f, 0x0c7e, -+ 0x609c, 0x2060, 0x1078, 0x18f9, 0x0c7f, 0x609f, 0x0000, 0x1078, -+ 0x16a2, 0x2009, 0x000e, 0x6008, 0xa085, 0x0200, 0x600a, 0x1078, -+ 0x186a, 0x1078, 0x188e, 0x0078, 0x169e, 0x0c7f, 0x0c7e, 0x609c, -+ 0x2060, 0x1078, 0x18f9, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x16a2, -+ 0x2009, 0x000e, 0x6007, 0x0103, 0x601b, 0x0003, 0x1078, 0x186a, -+ 0x1078, 0x188e, 0x0078, 0x169e, 0x0c7f, 0x74c4, 0x73c8, 0x72cc, -+ 0x6014, 0x2091, 0x8000, 0x7817, 0x0012, 0x0e7e, 0x2071, 0x4d40, -+ 0x706f, 0x0005, 0x7073, 0x0000, 0x7376, 0x727a, 0x747e, 0x7082, -+ 0x7087, 0x0000, 0x2c00, 0x708a, 0x708f, 0x0000, 0xa02e, 0x2530, -+ 0x611c, 0x61a2, 0xa184, 0x0060, 0x0040, 0x1690, 0x1078, 0x4367, -+ 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3, -+ 0x0000, 0x1078, 0x20a0, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, -+ 0x0078, 0x1270, 0x20a9, 0x0005, 0x2099, 0x4d18, 0x2091, 0x8000, -+ 0x530a, 0x2091, 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, -+ 0x0000, 0xa5a9, 0x0000, 0x007c, 0x71c4, 0x70c7, 0x0000, 0x7906, -+ 0x0078, 0x126d, 0x71c4, 0x71c6, 0x2168, 0x0078, 0x16c1, 0x2069, -+ 0x1000, 0x690c, 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0, -+ 0x16c3, 0xa285, 0x0000, 0x00c0, 0x16d1, 0x70c3, 0x4000, 0x0078, -+ 0x16d3, 0x70c3, 0x4003, 0x70ca, 0x0078, 0x1270, 0x2011, 0x4d67, -+ 0x220c, 0x70c4, 0x8003, 0x0048, 0x16e3, 0x1078, 0x398d, 0xa184, -+ 0x7fff, 0x0078, 0x16e7, 0x1078, 0x3980, 0xa185, 0x8000, 0x2012, -+ 0x0078, 0x126c, 0x71c4, 0x1078, 0x3977, 0x6100, 0x2001, 0x4d67, -+ 0x2004, 0xa084, 0x8000, 0xa10d, 0x6204, 0x6308, 0x0078, 0x126a, -+ 0x79e4, 0x0078, 0x126c, 0x71c4, 0x71c6, 0x2198, 0x20a1, 0x0042, -+ 0x20a9, 0x0004, 0x53a3, 0x21a0, 0x2099, 0x0042, 0x20a9, 0x0004, -+ 0x53a3, 0x0078, 0x126d, 0x70c4, 0x2068, 0x2079, 0x4d00, 0x1078, -+ 0x1874, 0x0040, 0x1793, 0x6007, 0x0001, 0x600b, 0x0000, 0x602b, -+ 0x0000, 0x601b, 0x0006, 0x6a10, 0xa28c, 0x000f, 0xa284, 0x00f0, -+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0x6016, 0xa284, 0x0800, -+ 0x0040, 0x172e, 0x601b, 0x000a, 0x0078, 0x1734, 0xa284, 0x1000, -+ 0x0040, 0x1734, 0x601b, 0x000c, 0xa284, 0x0300, 0x0040, 0x173d, -+ 0x602b, 0x0001, 0x8004, 0x8004, 0x8004, 0xa085, 0x0001, 0x601e, -+ 0x6023, 0x0000, 0x6027, 0x0000, 0xa284, 0x0400, 0x0040, 0x174a, -+ 0x602b, 0x0000, 0x20a9, 0x0006, 0xac80, 0x000b, 0x20a0, 0xad80, -+ 0x0005, 0x2098, 0x53a3, 0xa284, 0x0300, 0x00c0, 0x175f, 0x604a, -+ 0x6046, 0x6052, 0x604e, 0x6096, 0x609a, 0x0078, 0x1769, 0x6800, -+ 0x604a, 0x6804, 0x6046, 0x6e08, 0x6652, 0x6d0c, 0x654e, 0x6596, -+ 0x669a, 0x6014, 0x2091, 0x8000, 0x7817, 0x0042, 0x2c08, 0x2061, -+ 0x4d40, 0x606f, 0x0005, 0x6073, 0x0000, 0x6077, 0x0000, 0x607b, -+ 0x0000, 0x607f, 0x0000, 0x6082, 0x618a, 0xa284, 0x0400, 0x608e, -+ 0x2091, 0x8001, 0x0e7e, 0x2071, 0x0020, 0x7007, 0x000a, 0x7007, -+ 0x0002, 0x7003, 0x0000, 0x0e7f, 0x2091, 0x8000, 0x1078, 0x20a0, -+ 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078, 0x1270, 0x0c7e, -+ 0x0d7e, 0x0e7e, 0x0f7e, 0x2091, 0x8000, 0x2071, 0x4d40, 0x2079, -+ 0x0100, 0x2061, 0x0010, 0x70a0, 0xa06d, 0x0040, 0x1818, 0x6a04, -+ 0xa294, 0x00ff, 0xa286, 0x0007, 0x0040, 0x17b2, 0xa286, 0x000f, -+ 0x00c0, 0x1818, 0x6920, 0xa184, 0x0080, 0x00c0, 0x1818, 0x6824, -+ 0xa18c, 0xff00, 0xa085, 0x0019, 0x6826, 0x71b8, 0x81ff, 0x0040, -+ 0x17d3, 0x0d7e, 0x2069, 0x0020, 0x6908, 0x6808, 0xa106, 0x00c0, -+ 0x17c4, 0x690c, 0x680c, 0xa106, 0x00c0, 0x17c9, 0xa184, 0x00ff, -+ 0x00c0, 0x17c9, 0x0d7f, 0x78b8, 0xa084, 0x801f, 0x00c0, 0x17d3, -+ 0x7848, 0xa085, 0x000c, 0x784a, 0x71b8, 0x81ff, 0x0040, 0x17f6, -+ 0x70bb, 0x0000, 0x0d7e, 0x2069, 0x0020, 0x6807, 0x0008, 0x6804, -+ 0xa084, 0x0008, 0x00c0, 0x17e7, 0x6807, 0x0008, 0x6804, 0xa084, -+ 0x0008, 0x00c0, 0x17ee, 0x6807, 0x0002, 0x0d7f, 0x61c4, 0x62c8, -+ 0x63cc, 0x61c6, 0x62ca, 0x63ce, 0x0e7e, 0x2071, 0x4d00, 0x7266, -+ 0x736a, 0xae80, 0x0019, 0x0e7f, 0x1078, 0x42b7, 0x78a3, 0x0000, -+ 0x7858, 0xa084, 0xedff, 0x785a, 0x70bc, 0xa080, 0x00da, 0x781a, -+ 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x0078, 0x126d, -+ 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x2001, 0x4005, -+ 0x0078, 0x126f, 0x7980, 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, -+ 0x1265, 0x7982, 0x0078, 0x126d, 0x7980, 0x71c6, 0x0078, 0x126d, -+ 0x7974, 0x71c6, 0x71c4, 0x7976, 0x7978, 0x71ca, 0x71c8, 0x797a, -+ 0x797c, 0x71ce, 0x71cc, 0x797e, 0x0078, 0x126d, 0x7974, 0x71c6, -+ 0x7978, 0x71ca, 0x797c, 0x71ce, 0x0078, 0x126d, 0x7900, 0x71c6, -+ 0x71c4, 0x7902, 0x00a8, 0x1856, 0xa18c, 0x0001, 0x00c0, 0x1854, -+ 0x20b9, 0x2222, 0x0078, 0x1856, 0x20b9, 0x1212, 0x0078, 0x126d, -+ 0x7900, 0x71c6, 0x0078, 0x126d, 0x2009, 0x4d74, 0x2104, 0x70c6, -+ 0x70c4, 0x200a, 0x0078, 0x126d, 0x2009, 0x4d74, 0x2104, 0x70c6, -+ 0x0078, 0x126d, 0xac80, 0x0001, 0x1078, 0x1a3d, 0x007c, 0xac80, -+ 0x0001, 0x1078, 0x19f1, 0x007c, 0x7850, 0xa065, 0x0040, 0x187c, -+ 0x2c04, 0x7852, 0x2063, 0x0000, 0x007c, 0x0f7e, 0x2079, 0x4d00, -+ 0x7850, 0xa06d, 0x0040, 0x188c, 0x2d04, 0x7852, 0x6803, 0x0000, -+ 0x6807, 0x0000, 0x680b, 0x0000, 0x0f7f, 0x007c, 0x2091, 0x8000, -+ 0x0f7e, 0x2079, 0x4d00, 0x7850, 0x2062, 0x2c00, 0xa005, 0x00c0, -+ 0x189b, 0x1078, 0x22ac, 0x7852, 0x0f7f, 0x2091, 0x8001, 0x007c, -+ 0x0f7e, 0x2079, 0x4d00, 0x7850, 0x206a, 0x2d00, 0x7852, 0x0f7f, -+ 0x007c, 0x2011, 0x7400, 0x7a52, 0x7bec, 0x8319, 0x0040, 0x18b6, -+ 0xa280, 0x0031, 0x2012, 0x2010, 0x0078, 0x18ad, 0x2013, 0x0000, -+ 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, -+ 0x8003, 0x8003, 0xa105, 0xa0e8, 0x5000, 0x007c, 0x1078, 0x18b9, -+ 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084, 0xffef, 0xa80d, -+ 0x690a, 0x2009, 0x4d52, 0x210c, 0x6804, 0xa005, 0x0040, 0x18f8, -+ 0xa116, 0x00c0, 0x18e3, 0x2060, 0x6000, 0x6806, 0x017e, 0x200b, -+ 0x0000, 0x0078, 0x18e6, 0x2009, 0x0000, 0x017e, 0x6804, 0xa065, -+ 0x0040, 0x18f5, 0x6000, 0x6806, 0x1078, 0x1906, 0x1078, 0x1b7d, -+ 0x6810, 0x8001, 0x6812, 0x00c0, 0x18e6, 0x017f, 0x6902, 0x6906, -+ 0x007c, 0xa065, 0x0040, 0x1905, 0x609c, 0x609f, 0x0000, 0x2008, -+ 0x1078, 0x188e, 0x2100, 0x0078, 0x18f9, 0x007c, 0x6007, 0x0103, -+ 0x608f, 0x0000, 0x20a9, 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, -+ 0x0000, 0x40a4, 0x6828, 0x601a, 0x682c, 0x6022, 0x007c, 0x0e7e, -+ 0x2071, 0x4d40, 0x704c, 0xa08c, 0x0200, 0x00c0, 0x1925, 0xa088, -+ 0x4d80, 0x2d0a, 0x8000, 0x704e, 0xa006, 0x0e7f, 0x007c, 0x1078, -+ 0x18b9, 0x2091, 0x8000, 0x6804, 0x781e, 0xa065, 0x0040, 0x1970, -+ 0x0078, 0x1938, 0x2c00, 0x781e, 0x6000, 0xa065, 0x0040, 0x1970, -+ 0x6010, 0xa306, 0x00c0, 0x1932, 0x600c, 0xa206, 0x00c0, 0x1932, -+ 0x2c28, 0x2001, 0x4d52, 0x2004, 0xac06, 0x00c0, 0x1949, 0x0078, -+ 0x196e, 0x6804, 0xac06, 0x00c0, 0x1956, 0x6000, 0xa065, 0x6806, -+ 0x00c0, 0x1960, 0x6803, 0x0000, 0x0078, 0x1960, 0x6400, 0x781c, -+ 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1960, 0x2c00, 0x6802, -+ 0x2560, 0x1078, 0x1906, 0x601b, 0x0005, 0x6023, 0x0020, 0x1078, -+ 0x1b7d, 0x6810, 0x8001, 0x1050, 0x22ac, 0x6812, 0xa085, 0xffff, -+ 0x007c, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, -+ 0x0008, 0x2091, 0x8000, 0x1078, 0x18c6, 0x8738, 0xa784, 0x001f, -+ 0x00c0, 0x197b, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, -+ 0x0f00, 0x00c0, 0x197b, 0x2091, 0x8001, 0x007c, 0x2061, 0x0000, -+ 0x6018, 0xa084, 0x0001, 0x00c0, 0x199f, 0x2091, 0x8000, 0x78e0, -+ 0x78e3, 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0, 0x19a0, 0x007c, -+ 0xa08c, 0xfff0, 0x0040, 0x19a6, 0x1078, 0x22ac, 0x0079, 0x19a8, -+ 0x19b8, 0x19bb, 0x19c1, 0x19c5, 0x19b9, 0x19c9, 0x19cf, 0x19b9, -+ 0x19b9, 0x1b47, 0x1b6b, 0x1b6f, 0x19b9, 0x19b9, 0x19b9, 0x19b9, -+ 0x007c, 0x1078, 0x22ac, 0x1078, 0x1971, 0x2001, 0x8001, 0x0078, -+ 0x1b75, 0x2001, 0x8003, 0x0078, 0x1b75, 0x2001, 0x8004, 0x0078, -+ 0x1b75, 0x1078, 0x1971, 0x2001, 0x8006, 0x0078, 0x1b75, 0x2001, -+ 0x8007, 0x0078, 0x1b75, 0x2030, 0x2138, 0xa782, 0x0021, 0x0048, -+ 0x19db, 0x2009, 0x0020, 0x2600, 0x1078, 0x19f1, 0x00c0, 0x19f0, -+ 0xa7ba, 0x0020, 0x0048, 0x19ef, 0x0040, 0x19ef, 0x2708, 0xa6b0, -+ 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0x0078, 0x19d5, 0xa006, -+ 0x007c, 0x81ff, 0x0040, 0x1a1c, 0x2099, 0x0030, 0x20a0, 0x700c, -+ 0xa084, 0x00ff, 0x0040, 0x1a03, 0x7007, 0x0004, 0x7004, 0xa084, -+ 0x0004, 0x00c0, 0x19fe, 0x21a8, 0x7017, 0x0000, 0x810b, 0x7112, -+ 0x721a, 0x731e, 0x780c, 0xa085, 0x0001, 0x7002, 0x7007, 0x0001, -+ 0x7008, 0x800c, 0x00c8, 0x1a10, 0x7007, 0x0002, 0xa08c, 0x000c, -+ 0x00c0, 0x1a1c, 0x53a5, 0xa006, 0x7003, 0x0000, 0x007c, 0x2030, -+ 0x2138, 0xa782, 0x0021, 0x0048, 0x1a27, 0x2009, 0x0020, 0x2600, -+ 0x1078, 0x1a3d, 0x00c0, 0x1a3c, 0xa7ba, 0x0020, 0x0048, 0x1a3b, -+ 0x0040, 0x1a3b, 0x2708, 0xa6b0, 0x0020, 0xa290, 0x0040, 0xa399, -+ 0x0000, 0x0078, 0x1a21, 0xa006, 0x007c, 0x81ff, 0x0040, 0x1a6e, -+ 0x2098, 0x20a1, 0x0030, 0x700c, 0xa084, 0x00ff, 0x0040, 0x1a4f, -+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x1a4a, 0x21a8, -+ 0x7017, 0x0000, 0x810b, 0x7112, 0x721a, 0x731e, 0x780c, 0xa085, -+ 0x0000, 0x7002, 0x53a6, 0x7007, 0x0001, 0x7010, 0xa084, 0xf000, -+ 0x0040, 0x1a66, 0x7007, 0x0008, 0x0078, 0x1a6a, 0x7108, 0x8104, -+ 0x00c8, 0x1a5d, 0x7007, 0x0002, 0xa184, 0x000c, 0x7003, 0x0000, -+ 0x007c, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0004, 0x00c8, 0x1a7a, -+ 0x0078, 0x1a7d, 0xa006, 0x0078, 0x1a7f, 0xa085, 0x0001, 0x007c, -+ 0x0e7e, 0x2071, 0x4d00, 0x2d08, 0x7058, 0x6802, 0xa005, 0x00c0, -+ 0x1a8a, 0x715e, 0x715a, 0x0e7f, 0x007c, 0x2c08, 0x7858, 0x6002, -+ 0xa005, 0x00c0, 0x1a94, 0x795e, 0x795a, 0x007c, 0x2091, 0x8000, -+ 0x6003, 0x0000, 0x2c08, 0x785c, 0xa065, 0x00c0, 0x1aa2, 0x795a, -+ 0x0078, 0x1aa3, 0x6102, 0x795e, 0x2091, 0x8001, 0x1078, 0x20bd, -+ 0x007c, 0x0e7e, 0x2071, 0x4d00, 0x7058, 0xa06d, 0x0040, 0x1ab7, -+ 0x6800, 0x705a, 0xa005, 0x00c0, 0x1ab6, 0x705e, 0x8dff, 0x0e7f, -+ 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0x2079, 0x4d00, 0xaf80, 0x0016, -+ 0x2060, 0x6000, 0xa005, 0x0040, 0x1ae7, 0x2068, 0x6814, 0xa306, -+ 0x00c0, 0x1ad0, 0x6828, 0xa084, 0x00ff, 0xa406, 0x0040, 0x1ad3, -+ 0x2d60, 0x0078, 0x1ac1, 0x6800, 0xa005, 0x6002, 0x00c0, 0x1adf, -+ 0xaf80, 0x0016, 0xac06, 0x0040, 0x1ade, 0x2c00, 0x785e, 0x0d7e, -+ 0x689c, 0xa005, 0x0040, 0x1ae6, 0x1078, 0x18f9, 0x007f, 0x0f7f, -+ 0x0c7f, 0x0d7f, 0xa005, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0x2079, -+ 0x4d00, 0xaf80, 0x0016, 0x2060, 0x6000, 0xa005, 0x0040, 0x1b16, -+ 0x2068, 0x6814, 0xa084, 0x00ff, 0xa306, 0x0040, 0x1b02, 0x2d60, -+ 0x0078, 0x1af4, 0x6800, 0xa005, 0x6002, 0x00c0, 0x1b0e, 0xaf80, -+ 0x0016, 0xac06, 0x0040, 0x1b0d, 0x2c00, 0x785e, 0x0d7e, 0x689c, -+ 0xa005, 0x0040, 0x1b15, 0x1078, 0x18f9, 0x007f, 0x0f7f, 0x0c7f, -+ 0x0d7f, 0xa005, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0x2079, 0x4d00, -+ 0xaf80, 0x0016, 0x2060, 0x6000, 0xa06d, 0x0040, 0x1b42, 0x6814, -+ 0xa306, 0x0040, 0x1b2e, 0x2d60, 0x0078, 0x1b23, 0x6800, 0xa005, -+ 0x6002, 0x00c0, 0x1b3a, 0xaf80, 0x0016, 0xac06, 0x0040, 0x1b39, -+ 0x2c00, 0x785e, 0x0d7e, 0x689c, 0xa005, 0x0040, 0x1b41, 0x1078, -+ 0x18f9, 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, 0xa005, 0x007c, 0x2091, -+ 0x8000, 0x2069, 0x4d40, 0x6800, 0xa086, 0x0000, 0x0040, 0x1b55, -+ 0x2091, 0x8001, 0x78e3, 0x0009, 0x007c, 0x6880, 0xa0bc, 0xff00, -+ 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x1078, 0x18c6, -+ 0x8738, 0xa784, 0x001f, 0x00c0, 0x1b5e, 0x2091, 0x8001, 0x2001, -+ 0x800a, 0x0078, 0x1b75, 0x2001, 0x800c, 0x0078, 0x1b75, 0x1078, -+ 0x1971, 0x2001, 0x800d, 0x0078, 0x1b75, 0x70c2, 0x2061, 0x0000, -+ 0x601b, 0x0001, 0x2091, 0x4080, 0x007c, 0x6004, 0x2c08, 0x2063, -+ 0x0000, 0x7884, 0x8000, 0x7886, 0x7888, 0xa005, 0x798a, 0x0040, -+ 0x1b8c, 0x2c02, 0x0078, 0x1b8d, 0x798e, 0x007c, 0x6807, 0x0103, -+ 0x0c7e, 0x2061, 0x4d00, 0x2d08, 0x206b, 0x0000, 0x6084, 0x8000, -+ 0x6086, 0x6088, 0xa005, 0x618a, 0x0040, 0x1ba1, 0x2d02, 0x0078, -+ 0x1ba2, 0x618e, 0x0c7f, 0x007c, 0x1078, 0x1bb5, 0x0040, 0x1bb4, -+ 0x0c7e, 0x609c, 0xa065, 0x0040, 0x1baf, 0x1078, 0x18f9, 0x0c7f, -+ 0x609f, 0x0000, 0x1078, 0x188e, 0x007c, 0x788c, 0xa065, 0x0040, -+ 0x1bc7, 0x2091, 0x8000, 0x7884, 0x8001, 0x7886, 0x2c04, 0x788e, -+ 0xa005, 0x00c0, 0x1bc5, 0x788a, 0x8000, 0x2091, 0x8001, 0x007c, -+ 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x1bd1, -+ 0xa200, 0x0070, 0x1bd5, 0x0078, 0x1bcc, 0x8086, 0x818e, 0x007c, -+ 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x1bfb, 0xa11a, 0x00c8, -+ 0x1bfb, 0x8213, 0x818d, 0x0048, 0x1bec, 0xa11a, 0x00c8, 0x1bed, -+ 0x0070, 0x1bf3, 0x0078, 0x1be1, 0xa11a, 0x2308, 0x8210, 0x0070, -+ 0x1bf3, 0x0078, 0x1be1, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080, -+ 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078, -+ 0x1bf7, 0x7994, 0x70d0, 0xa106, 0x0040, 0x1c6d, 0x2091, 0x8000, -+ 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x1c6d, 0x7008, 0x7208, -+ 0xa206, 0x00c0, 0x1c6d, 0xa286, 0x0002, 0x00c0, 0x1c6d, 0x2071, -+ 0x0010, 0x1078, 0x1874, 0x0040, 0x1c6d, 0x7a9c, 0x7b98, 0xa184, -+ 0xff00, 0x0040, 0x1c3b, 0x2031, 0x0000, 0x810b, 0x86b5, 0x810b, -+ 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, -+ 0x86b5, 0x2100, 0xa210, 0x2600, 0xa319, 0xa4a1, 0x0000, 0xa5a9, -+ 0x0000, 0x0078, 0x1c45, 0x8107, 0x8004, 0x8004, 0xa210, 0xa399, -+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x2009, 0x0020, 0x1078, -+ 0x186f, 0x2091, 0x8001, 0x0040, 0x1c64, 0x1078, 0x188e, 0x78a8, -+ 0x8000, 0x78aa, 0xa086, 0x0002, 0x00c0, 0x1c6d, 0x2091, 0x8000, -+ 0x78e3, 0x0002, 0x78ab, 0x0000, 0x78cc, 0xa085, 0x0003, 0x78ce, -+ 0x2091, 0x8001, 0x0078, 0x1c6d, 0x78ab, 0x0000, 0x1078, 0x1fa1, -+ 0x6004, 0xa084, 0x000f, 0x0079, 0x1c72, 0x2071, 0x0010, 0x2091, -+ 0x8001, 0x007c, 0x1c82, 0x1c91, 0x1cb1, 0x1c82, 0x1cce, 0x1c82, -+ 0x1e29, 0x1e40, 0x1c82, 0x1c82, 0x1c82, 0x1d16, 0x1d7f, 0x1dcf, -+ 0x1de1, 0x1c82, 0x2039, 0x0400, 0x78dc, 0xa705, 0x78de, 0x6008, -+ 0xa705, 0x600a, 0x1078, 0x1ebc, 0x609c, 0x78da, 0x1078, 0x1f89, -+ 0x007c, 0x78dc, 0xa084, 0x0100, 0x0040, 0x1c98, 0x0078, 0x1c82, -+ 0x78df, 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78d2, 0x8001, -+ 0x609f, 0x0000, 0x0040, 0x1cae, 0x1078, 0x1ebc, 0x0040, 0x1cae, -+ 0x78dc, 0xa085, 0x0100, 0x78de, 0x0078, 0x1cb0, 0x1078, 0x1ee0, -+ 0x007c, 0x78dc, 0xa08c, 0x0e00, 0x00c0, 0x1cba, 0xa084, 0x0100, -+ 0x00c0, 0x1cbc, 0x0078, 0x1c82, 0x1078, 0x1ebc, 0x00c0, 0x1ccd, -+ 0x6104, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x1e72, 0xa186, -+ 0x000f, 0x0040, 0x1e72, 0x1078, 0x1ee0, 0x007c, 0x78dc, 0xa084, -+ 0x0100, 0x0040, 0x1cd5, 0x0078, 0x1c82, 0x78df, 0x0000, 0x6714, -+ 0x2011, 0x0001, 0x20a9, 0x0001, 0x6018, 0xa084, 0x00ff, 0xa005, -+ 0x0040, 0x1cf8, 0x2011, 0x0001, 0xa7bc, 0xff00, 0x20a9, 0x0020, -+ 0xa08e, 0x0001, 0x0040, 0x1cf8, 0x2039, 0x0000, 0x2011, 0x0002, -+ 0x20a9, 0x0100, 0xa08e, 0x0002, 0x0040, 0x1cf8, 0x0078, 0x1d13, -+ 0x1078, 0x18b9, 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, -+ 0x6808, 0xa084, 0xffde, 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, -+ 0x0070, 0x1d0c, 0x0078, 0x1cfa, 0x8211, 0x0040, 0x1d13, 0x20a9, -+ 0x0100, 0x0078, 0x1cfa, 0x1078, 0x188e, 0x007c, 0x2001, 0x4d67, -+ 0x2004, 0xa084, 0x8000, 0x0040, 0x1ea1, 0x6114, 0x1078, 0x1fb7, -+ 0x6900, 0xa184, 0x0001, 0x0040, 0x1d37, 0x6028, 0xa084, 0x00ff, -+ 0x00c0, 0x1e99, 0x6800, 0xa084, 0x0001, 0x0040, 0x1ea1, 0x6803, -+ 0x0000, 0x680b, 0x0000, 0x6807, 0x0000, 0x0078, 0x1ea9, 0x2011, -+ 0x0001, 0x601c, 0xa084, 0x4000, 0x0040, 0x1d40, 0xa295, 0x0002, -+ 0x601c, 0xa084, 0x0100, 0x0040, 0x1d47, 0xa295, 0x0008, 0x6020, -+ 0xa084, 0x0002, 0x0040, 0x1d4e, 0xa295, 0x0004, 0x602c, 0xa08c, -+ 0x00ff, 0xa182, 0x0002, 0x0048, 0x1ea5, 0xa182, 0x0019, 0x00c8, -+ 0x1ea5, 0x690e, 0x602c, 0x8007, 0xa08c, 0x00ff, 0xa182, 0x0002, -+ 0x0048, 0x1ea5, 0xa182, 0x0019, 0x00c8, 0x1ea5, 0x6912, 0x6030, -+ 0xa005, 0x00c0, 0x1d6d, 0x2001, 0x001e, 0x8000, 0x6816, 0x6028, -+ 0xa084, 0x00ff, 0x0040, 0x1ea1, 0x6806, 0x6028, 0x8007, 0xa084, -+ 0x00ff, 0x0040, 0x1ea1, 0x680a, 0x6a02, 0x0078, 0x1ea9, 0x2001, -+ 0x4d67, 0x2004, 0xa084, 0x8000, 0x0040, 0x1ea1, 0x6114, 0x1078, -+ 0x1fb7, 0x2091, 0x8000, 0x6a04, 0x6b08, 0x6418, 0xa484, 0x0003, -+ 0x0040, 0x1da5, 0x6128, 0xa18c, 0x00ff, 0x8001, 0x00c0, 0x1d9e, -+ 0x2100, 0xa210, 0x0048, 0x1dcb, 0x0078, 0x1da5, 0x8001, 0x00c0, -+ 0x1dcb, 0x2100, 0xa212, 0x0048, 0x1dcb, 0xa484, 0x000c, 0x0040, -+ 0x1dbf, 0x6128, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004, 0x00c0, -+ 0x1db7, 0x2100, 0xa318, 0x0048, 0x1dcb, 0x0078, 0x1dbf, 0xa082, -+ 0x0004, 0x00c0, 0x1dcb, 0x2100, 0xa31a, 0x0048, 0x1dcb, 0x6030, -+ 0xa005, 0x0040, 0x1dc5, 0x8000, 0x6816, 0x6a06, 0x6b0a, 0x2091, -+ 0x8001, 0x0078, 0x1ea9, 0x2091, 0x8001, 0x0078, 0x1ea5, 0x6114, -+ 0x1078, 0x1fb7, 0x2091, 0x8000, 0x6b08, 0x8318, 0x0048, 0x1ddd, -+ 0x6b0a, 0x2091, 0x8001, 0x0078, 0x1eb8, 0x2091, 0x8001, 0x0078, -+ 0x1ea5, 0x6024, 0x8007, 0xa084, 0x00ff, 0x0040, 0x1dff, 0xa086, -+ 0x0080, 0x00c0, 0x1e27, 0x20a9, 0x0008, 0x2069, 0x7110, 0x2091, -+ 0x8000, 0x6800, 0xa084, 0xfcff, 0x6802, 0xade8, 0x0008, 0x0070, -+ 0x1dfb, 0x0078, 0x1df1, 0x2091, 0x8001, 0x0078, 0x1ea9, 0x6028, -+ 0xa015, 0x0040, 0x1e27, 0x6114, 0x1078, 0x1fb7, 0x0d7e, 0xade8, -+ 0x0007, 0x2091, 0x8000, 0x6800, 0xa00d, 0x0040, 0x1e24, 0xa206, -+ 0x0040, 0x1e15, 0x2168, 0x0078, 0x1e0b, 0x0c7e, 0x2160, 0x6000, -+ 0x6802, 0x1078, 0x188e, 0x0c7f, 0x0d7f, 0x6808, 0x8000, 0x680a, -+ 0x2091, 0x8001, 0x0078, 0x1eb8, 0x2091, 0x8001, 0x0d7f, 0x0078, -+ 0x1ea1, 0x6114, 0x1078, 0x1fb7, 0x6800, 0xa084, 0x0001, 0x0040, -+ 0x1e91, 0x2091, 0x8000, 0x6a04, 0x8210, 0x0048, 0x1e3c, 0x6a06, -+ 0x2091, 0x8001, 0x0078, 0x1eb8, 0x2091, 0x8001, 0x0078, 0x1ea5, -+ 0x6114, 0x1078, 0x1fb7, 0x60be, 0x6900, 0xa184, 0x0008, 0x0040, -+ 0x1e4d, 0x601c, 0xa085, 0x0100, 0x601e, 0xa184, 0x0001, 0x0040, -+ 0x1ea1, 0xa184, 0x0100, 0x00c0, 0x1e8d, 0xa184, 0x0200, 0x00c0, -+ 0x1e89, 0x681c, 0xa005, 0x00c0, 0x1e95, 0x78df, 0x0000, 0x6004, -+ 0x8007, 0xa084, 0x00ff, 0x78d2, 0x8001, 0x609f, 0x0000, 0x0040, -+ 0x1e72, 0x1078, 0x1ebc, 0x0040, 0x1e72, 0x78dc, 0xa085, 0x0100, -+ 0x78de, 0x007c, 0x78d7, 0x0000, 0x78db, 0x0000, 0x6024, 0xa084, -+ 0xff00, 0x6026, 0x6020, 0xa084, 0x8000, 0x0040, 0x1e85, 0x1078, -+ 0x37e7, 0x0040, 0x1c01, 0x0078, 0x1e91, 0x1078, 0x1a96, 0x0078, -+ 0x1c01, 0x2009, 0x0017, 0x0078, 0x1eab, 0x2009, 0x000e, 0x0078, -+ 0x1eab, 0x2009, 0x0007, 0x0078, 0x1eab, 0x2009, 0x0035, 0x0078, -+ 0x1eab, 0x2009, 0x003e, 0x0078, 0x1eab, 0x2009, 0x0004, 0x0078, -+ 0x1eab, 0x2009, 0x0006, 0x0078, 0x1eab, 0x2009, 0x0016, 0x0078, -+ 0x1eab, 0x2009, 0x0001, 0x6024, 0xa084, 0xff00, 0xa105, 0x6026, -+ 0x2091, 0x8000, 0x1078, 0x1b7d, 0x2091, 0x8001, 0x0078, 0x1c01, -+ 0x1078, 0x188e, 0x0078, 0x1c01, 0x78d4, 0xa06d, 0x00c0, 0x1ec7, -+ 0x2c00, 0x78d6, 0x78da, 0x609f, 0x0000, 0x0078, 0x1ed3, 0x2c00, -+ 0x689e, 0x609f, 0x0000, 0x78d6, 0x2d00, 0x6002, 0x78d8, 0xad06, -+ 0x00c0, 0x1ed3, 0x6002, 0x78d0, 0x8001, 0x78d2, 0x00c0, 0x1edf, -+ 0x78dc, 0xa084, 0xfeff, 0x78de, 0x78d8, 0x2060, 0xa006, 0x007c, -+ 0xa02e, 0x2530, 0x611c, 0x61a2, 0xa184, 0xe1ff, 0x601e, 0xa184, -+ 0x0060, 0x0040, 0x1eef, 0x0e7e, 0x1078, 0x4367, 0x0e7f, 0x6596, -+ 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, 0x6714, -+ 0x1078, 0x18b9, 0x2091, 0x8000, 0x60a0, 0xa084, 0x8000, 0x00c0, -+ 0x1f16, 0x6808, 0xa084, 0x0001, 0x0040, 0x1f16, 0x2091, 0x8001, -+ 0x1078, 0x1906, 0x2091, 0x8000, 0x1078, 0x1b7d, 0x2091, 0x8001, -+ 0x78d7, 0x0000, 0x78db, 0x0000, 0x0078, 0x1f88, 0x6024, 0xa096, -+ 0x0001, 0x00c0, 0x1f1d, 0x8000, 0x6026, 0x6a10, 0x6814, 0x2091, -+ 0x8001, 0xa202, 0x0048, 0x1f2c, 0x0040, 0x1f2c, 0x2039, 0x0200, -+ 0x1078, 0x1f89, 0x0078, 0x1f88, 0x2c08, 0x2091, 0x8000, 0x60a0, -+ 0xa084, 0x8000, 0x0040, 0x1f59, 0x6800, 0xa065, 0x0040, 0x1f5e, -+ 0x6a04, 0x0e7e, 0x2071, 0x4d40, 0x7000, 0xa084, 0x0001, 0x0040, -+ 0x1f53, 0x7048, 0xa206, 0x00c0, 0x1f53, 0x6b04, 0x231c, 0x2160, -+ 0x6302, 0x2300, 0xa005, 0x00c0, 0x1f4e, 0x6902, 0x2260, 0x6102, -+ 0x0e7f, 0x0078, 0x1f65, 0x2160, 0x6202, 0x6906, 0x0e7f, 0x0078, -+ 0x1f65, 0x6800, 0xa065, 0x0040, 0x1f5e, 0x6102, 0x6902, 0x00c0, -+ 0x1f62, 0x6906, 0x2160, 0x6003, 0x0000, 0x2160, 0x60a0, 0xa084, -+ 0x8000, 0x0040, 0x1f6f, 0x6808, 0xa084, 0xfffc, 0x680a, 0x6810, -+ 0x8000, 0x6812, 0x2091, 0x8001, 0x6808, 0xa08c, 0x0040, 0x0040, -+ 0x1f7e, 0xa086, 0x0040, 0x680a, 0x1078, 0x1917, 0x2091, 0x8000, -+ 0x1078, 0x20a0, 0x2091, 0x8001, 0x78db, 0x0000, 0x78d7, 0x0000, -+ 0x007c, 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x1078, 0x1b7d, -+ 0x2091, 0x8001, 0x78d8, 0xa065, 0x0040, 0x1f9c, 0x609c, 0x78da, -+ 0x609f, 0x0000, 0x0078, 0x1f8c, 0x78d7, 0x0000, 0x78db, 0x0000, -+ 0x007c, 0x7990, 0x7894, 0x8000, 0xa10a, 0x00c8, 0x1fa8, 0xa006, -+ 0x7896, 0x70d2, 0x7804, 0xa005, 0x0040, 0x1fb6, 0x8001, 0x7806, -+ 0x00c0, 0x1fb6, 0x0068, 0x1fb6, 0x2091, 0x4080, 0x007c, 0x0c7e, -+ 0x1078, 0x3977, 0x2c68, 0x0c7f, 0x007c, 0x0010, 0x202e, 0x0068, -+ 0x202e, 0x2029, 0x0000, 0x78cb, 0x0000, 0x788c, 0xa065, 0x0040, -+ 0x2027, 0x2009, 0x4d74, 0x2104, 0xa084, 0x0001, 0x0040, 0x1ff5, -+ 0x6004, 0xa086, 0x0103, 0x00c0, 0x1ff5, 0x6018, 0xa005, 0x00c0, -+ 0x1ff5, 0x6014, 0xa005, 0x00c0, 0x1ff5, 0x0d7e, 0x2069, 0x0000, -+ 0x6818, 0xa084, 0x0001, 0x00c0, 0x1ff4, 0x6010, 0x70c6, 0x600c, -+ 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001, 0x2091, 0x4080, 0x0d7f, -+ 0x1078, 0x1ba4, 0x0078, 0x202c, 0x0d7f, 0x1078, 0x202f, 0x0040, -+ 0x2027, 0x6204, 0xa294, 0x00ff, 0xa296, 0x0003, 0x0040, 0x2007, -+ 0x6204, 0xa296, 0x0110, 0x00c0, 0x2015, 0x78cb, 0x0001, 0x6204, -+ 0xa294, 0xff00, 0x8217, 0x8211, 0x0040, 0x2015, 0x85ff, 0x00c0, -+ 0x2027, 0x8210, 0xa202, 0x00c8, 0x2027, 0x057e, 0x1078, 0x203e, -+ 0x057f, 0x0040, 0x2022, 0x78e0, 0xa086, 0x0003, 0x0040, 0x2027, -+ 0x0078, 0x2015, 0x8528, 0x78c8, 0xa005, 0x0040, 0x1fc5, 0x85ff, -+ 0x0040, 0x202e, 0x2091, 0x4080, 0x78b0, 0x70d6, 0x007c, 0x7bac, -+ 0x79b0, 0x70d4, 0xa102, 0x00c0, 0x2038, 0x2300, 0xa005, 0x007c, -+ 0x0048, 0x203c, 0xa302, 0x007c, 0x8002, 0x007c, 0x2001, 0x04fd, -+ 0x2004, 0xa082, 0x0005, 0x00c8, 0x2058, 0x2091, 0x8000, 0x2071, -+ 0x0020, 0x7004, 0xa005, 0x00c0, 0x208d, 0x7008, 0x7208, 0xa206, -+ 0x00c0, 0x208d, 0xa286, 0x0002, 0x00c0, 0x208d, 0x2071, 0x0010, -+ 0x1078, 0x2092, 0x2009, 0x0020, 0x6004, 0xa086, 0x0103, 0x00c0, -+ 0x2067, 0x6028, 0xa005, 0x00c0, 0x2067, 0x2009, 0x000e, 0x1078, -+ 0x186a, 0x0040, 0x2080, 0x78c4, 0x8000, 0x78c6, 0xa086, 0x0002, -+ 0x00c0, 0x208d, 0x2091, 0x8000, 0x78e3, 0x0003, 0x78c7, 0x0000, -+ 0x78cc, 0xa085, 0x0300, 0x78ce, 0x2091, 0x8001, 0x0078, 0x208d, -+ 0x78c7, 0x0000, 0x1078, 0x1ba4, 0x79ac, 0x78b0, 0x8000, 0xa10a, -+ 0x00c8, 0x208b, 0xa006, 0x78b2, 0xa006, 0x2071, 0x0010, 0x2091, -+ 0x8001, 0x007c, 0x8107, 0x8004, 0x8004, 0x7ab8, 0x7bb4, 0xa210, -+ 0xa399, 0x0000, 0x007c, 0x2009, 0x4d5b, 0x2091, 0x8000, 0x200a, -+ 0x0f7e, 0x0e7e, 0x2071, 0x4d40, 0x7000, 0xa086, 0x0000, 0x00c0, -+ 0x20ba, 0x2009, 0x4d12, 0x2104, 0xa005, 0x00c0, 0x20ba, 0x2079, -+ 0x0100, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x20ba, 0x0018, 0x20ba, -+ 0x781b, 0x004b, 0x0e7f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x2071, -+ 0x4d40, 0x2091, 0x8000, 0x7000, 0xa086, 0x0000, 0x00c0, 0x20d3, -+ 0x2079, 0x0100, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x20d3, 0x0018, -+ 0x20d3, 0x781b, 0x004d, 0x2091, 0x8001, 0x0e7f, 0x0f7f, 0x007c, -+ 0x127e, 0x2091, 0x2300, 0x2071, 0x4d40, 0x2079, 0x0100, 0x784b, -+ 0x000f, 0x0098, 0x20e6, 0x7838, 0x0078, 0x20df, 0x20a9, 0x0040, -+ 0x7800, 0xa082, 0x0004, 0x0048, 0x20ef, 0x20a9, 0x0060, 0x789b, -+ 0x0000, 0x78af, 0x0000, 0x78af, 0x0000, 0x0070, 0x20f9, 0x0078, -+ 0x20f1, 0x7800, 0xa082, 0x0004, 0x0048, 0x2108, 0x70bf, 0x009f, -+ 0x2019, 0x4ab1, 0x1078, 0x2137, 0x702f, 0x8001, 0x0078, 0x2114, -+ 0x70bf, 0x0000, 0x2019, 0x4916, 0x1078, 0x2137, 0x2019, 0x4955, -+ 0x1078, 0x2137, 0x702f, 0x8000, 0x7003, 0x0000, 0x1078, 0x2240, -+ 0x7004, 0xa084, 0x000f, 0x017e, 0x0028, 0x2122, 0xa085, 0x6280, -+ 0x0078, 0x2124, 0xa085, 0x62c0, 0x017f, 0x7806, 0x780f, 0xb204, -+ 0x7843, 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x7047, 0x0008, -+ 0x7053, 0x4d7f, 0x704f, 0x0000, 0x127f, 0x2000, 0x007c, 0x137e, -+ 0x147e, 0x157e, 0x047e, 0x20a1, 0x012b, 0x2304, 0xa005, 0x789a, -+ 0x0040, 0x2157, 0x8318, 0x2324, 0x8318, 0x2398, 0x24a8, 0xa484, -+ 0xff00, 0x0040, 0x214f, 0xa482, 0x0100, 0x20a9, 0x0100, 0x2020, -+ 0x53a6, 0xa005, 0x00c0, 0x2146, 0x3318, 0x0078, 0x213d, 0x047f, -+ 0x157f, 0x147f, 0x137f, 0x007c, 0xa18c, 0x000f, 0x2011, 0x0101, -+ 0x2204, 0xa084, 0xfff0, 0xa105, 0x2012, 0x1078, 0x2240, 0x007c, -+ 0x2011, 0x0101, 0x20a9, 0x0009, 0x810b, 0x0070, 0x2171, 0x0078, -+ 0x216c, 0xa18c, 0x0e00, 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, -+ 0x007c, 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x0070, 0x2182, -+ 0x0078, 0x217d, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, -+ 0x200a, 0x007c, 0x2011, 0x0101, 0x20a9, 0x000c, 0x810b, 0x0070, -+ 0x2193, 0x0078, 0x218e, 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff, -+ 0xa105, 0x2012, 0x007c, 0x2011, 0x0102, 0x2204, 0xa084, 0xffcf, -+ 0xa105, 0x2012, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, -+ 0x2061, 0x0100, 0x609a, 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x8103, -+ 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, -+ 0xa084, 0xffdf, 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, -+ 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0xa085, 0x0020, -+ 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, -+ 0x2061, 0x0100, 0x609a, 0x60a4, 0x62ae, 0x2010, 0x60a4, 0x63ae, -+ 0x2018, 0x0c7f, 0x007c, 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, -+ 0xa005, 0x0040, 0x221e, 0x2061, 0x7100, 0x1078, 0x2226, 0x0040, -+ 0x220a, 0x20a9, 0x0000, 0x2061, 0x7000, 0x0c7e, 0x1078, 0x2226, -+ 0x0040, 0x21fa, 0x0c7f, 0x8c60, 0x0070, 0x21f8, 0x0078, 0x21ed, -+ 0x0078, 0x221e, 0x007f, 0xa082, 0x7000, 0x2071, 0x4d40, 0x7086, -+ 0x7182, 0x2001, 0x0004, 0x706e, 0x7093, 0x000f, 0x1078, 0x209b, -+ 0x0078, 0x221a, 0x60c0, 0xa005, 0x00c0, 0x221e, 0x2071, 0x4d40, -+ 0x7182, 0x2c00, 0x708a, 0x2001, 0x0006, 0x706e, 0x7093, 0x000f, -+ 0x1078, 0x209b, 0x2001, 0x0000, 0x0078, 0x2220, 0x2001, 0x0001, -+ 0x2091, 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04, 0xa005, -+ 0x0040, 0x223d, 0x2060, 0x6010, 0xa306, 0x00c0, 0x223a, 0x600c, -+ 0xa206, 0x00c0, 0x223a, 0x6014, 0xa106, 0x00c0, 0x223a, 0xa006, -+ 0x0078, 0x223f, 0x6000, 0x0078, 0x2227, 0xa085, 0x0001, 0x007c, -+ 0x2011, 0x4d41, 0x220c, 0xa18c, 0x000f, 0x2011, 0x013b, 0x2204, -+ 0xa084, 0x0100, 0x0040, 0x2256, 0x2021, 0xff04, 0x2122, 0x810b, -+ 0x810b, 0x810b, 0x810b, 0xa18d, 0x0f00, 0x2104, 0x007c, 0x0e7e, -+ 0x68e4, 0xa08c, 0x0020, 0x0040, 0x22aa, 0xa084, 0x0006, 0x00c0, -+ 0x22aa, 0x6014, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xa0f0, 0x4f80, 0x7004, 0xa084, 0x000a, 0x00c0, 0x22aa, 0x7108, -+ 0xa194, 0xff00, 0x0040, 0x22aa, 0xa18c, 0x00ff, 0x2001, 0x000c, -+ 0xa106, 0x0040, 0x2291, 0x2001, 0x0012, 0xa106, 0x0040, 0x2295, -+ 0x2001, 0x0014, 0xa106, 0x0040, 0x2299, 0x2001, 0x0019, 0xa106, -+ 0x0040, 0x229d, 0x2001, 0x0032, 0xa106, 0x0040, 0x22a1, 0x0078, -+ 0x22a5, 0x2009, 0x0012, 0x0078, 0x22a7, 0x2009, 0x0014, 0x0078, -+ 0x22a7, 0x2009, 0x0019, 0x0078, 0x22a7, 0x2009, 0x0020, 0x0078, -+ 0x22a7, 0x2009, 0x003f, 0x0078, 0x22a7, 0x2011, 0x0000, 0x2100, -+ 0xa205, 0x700a, 0x0e7f, 0x007c, 0x0068, 0x22ac, 0x2091, 0x8000, -+ 0x2071, 0x0000, 0x007e, 0x7018, 0xa084, 0x0001, 0x00c0, 0x22b3, -+ 0x007f, 0x2071, 0x0010, 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, -+ 0x70db, 0x0737, 0x70df, 0x0000, 0x2071, 0x0000, 0x701b, 0x0001, -+ 0x2091, 0x4080, 0x0078, 0x22ca, 0x107e, 0x007e, 0x127e, 0x2091, -+ 0x2300, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x77c2, 0x74c6, 0x76ca, -+ 0x75ce, 0xa594, 0x003f, 0xa49c, 0x0003, 0xa484, 0x000f, 0x0079, -+ 0x22e1, 0x22f3, 0x22f3, 0x22f3, 0x2624, 0x3741, 0x22f1, 0x2322, -+ 0x232c, 0x22f1, 0x22f1, 0x22f1, 0x22f1, 0x22f1, 0x22f1, 0x22f1, -+ 0x22f1, 0x1078, 0x22ac, 0x8507, 0xa084, 0x001f, 0x0079, 0x22f8, -+ 0x2336, 0x2624, 0x27d8, 0x28d5, 0x28fd, 0x2b6d, 0x2e18, 0x2e5b, -+ 0x2ea6, 0x2f2b, 0x2fb1, 0x3056, 0x2322, 0x26fc, 0x2ded, 0x2318, -+ 0x3a92, 0x3ab2, 0x3be5, 0x3bf1, 0x3ca2, 0x2318, 0x2318, 0x3d53, -+ 0x3d57, 0x3a90, 0x2318, 0x3b8c, 0x2318, 0x399a, 0x232c, 0x2318, -+ 0x1078, 0x22ac, 0x0018, 0x22d1, 0x127f, 0x2091, 0x8001, 0x007f, -+ 0x107f, 0x007c, 0x2019, 0x4a07, 0x1078, 0x2137, 0x702f, 0x0001, -+ 0x781b, 0x004f, 0x0078, 0x231a, 0x2019, 0x4955, 0x1078, 0x2137, -+ 0x702f, 0x8000, 0x781b, 0x00e1, 0x0078, 0x231a, 0x7242, 0x2009, -+ 0x4d0f, 0x200b, 0x0000, 0xa584, 0x0001, 0x00c0, 0x39a6, 0x0040, -+ 0x2353, 0x1078, 0x22ac, 0x7003, 0x0000, 0x704b, 0x0000, 0x7043, -+ 0x0000, 0x7037, 0x0000, 0x1078, 0x371d, 0x0018, 0x22d1, 0x2009, -+ 0x4d0f, 0x200b, 0x0000, 0x7068, 0xa005, 0x00c0, 0x2426, 0x706c, -+ 0xa084, 0x0007, 0x0079, 0x235c, 0x245d, 0x2364, 0x2370, 0x238f, -+ 0x23b3, 0x2404, 0x23db, 0x2364, 0x1078, 0x3705, 0x2009, 0x0048, -+ 0x1078, 0x2cc3, 0x00c0, 0x236e, 0x7003, 0x0004, 0x0078, 0x231a, -+ 0x1078, 0x3705, 0x00c0, 0x238d, 0x7080, 0x8007, 0x789b, 0x0080, -+ 0x78aa, 0x789b, 0x0010, 0x78ab, 0x000c, 0x789b, 0x0060, 0x78ab, -+ 0x0001, 0x785b, 0x0004, 0x2009, 0x00f2, 0x1078, 0x2cb7, 0x00c0, -+ 0x238d, 0x7003, 0x0004, 0x7093, 0x000f, 0x0078, 0x231a, 0x1078, -+ 0x3705, 0x00c0, 0x23b1, 0x7180, 0x8107, 0x789b, 0x0080, 0x78aa, -+ 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d, 0x00c0, 0x79aa, 0x78ab, -+ 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, 0x785b, 0x0004, 0x2009, -+ 0x00f2, 0x1078, 0x2cb7, 0x00c0, 0x23b1, 0x7003, 0x0004, 0x7093, -+ 0x000f, 0x0078, 0x231a, 0x1078, 0x3705, 0x00c0, 0x23d9, 0x7180, -+ 0x8107, 0x789b, 0x0080, 0x78aa, 0x789b, 0x0010, 0xa18c, 0x001f, -+ 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0020, 0x7184, 0x79aa, 0x78ab, -+ 0x000d, 0x789b, 0x0060, 0x78ab, 0x0004, 0x785b, 0x0004, 0x2009, -+ 0x00f2, 0x1078, 0x2cb7, 0x00c0, 0x23d9, 0x7003, 0x0004, 0x7093, -+ 0x000f, 0x0078, 0x231a, 0x1078, 0x3705, 0x00c0, 0x2402, 0x7180, -+ 0x8107, 0x789b, 0x0080, 0x78aa, 0x789b, 0x0010, 0xa18c, 0x001f, -+ 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, 0x0060, 0x78ab, -+ 0x0002, 0x785b, 0x0004, 0x2009, 0x00f2, 0x1078, 0x2cb7, 0x00c0, -+ 0x2402, 0x7088, 0x708b, 0x0000, 0x2068, 0x704a, 0x7003, 0x0002, -+ 0x7093, 0x000f, 0x0078, 0x231a, 0x1078, 0x3705, 0x00c0, 0x231a, -+ 0x7088, 0x2068, 0x6f14, 0x1078, 0x35fc, 0x2c50, 0x1078, 0x37b5, -+ 0x789b, 0x0010, 0x6814, 0xa084, 0x001f, 0xa085, 0x0080, 0x78aa, -+ 0x6e1c, 0x2041, 0x0001, 0x708c, 0xa084, 0x0400, 0x2001, 0x0004, -+ 0x0040, 0x2424, 0x2001, 0x0006, 0x0078, 0x2545, 0x1078, 0x3705, -+ 0x00c0, 0x231a, 0x789b, 0x0010, 0x7068, 0x2068, 0x6f14, 0x1078, -+ 0x35fc, 0x2c50, 0x1078, 0x37b5, 0x6008, 0xa085, 0x0010, 0x600a, -+ 0x6824, 0xa005, 0x0040, 0x2444, 0xa082, 0x0006, 0x0048, 0x2442, -+ 0x0078, 0x2444, 0x6827, 0x0005, 0x6b14, 0xa39c, 0x001f, 0xa39d, -+ 0x00c0, 0x7058, 0xa084, 0x8000, 0x0040, 0x2452, 0xa684, 0x0001, -+ 0x0040, 0x2454, 0xa39c, 0xffbf, 0x7baa, 0x2031, 0x0020, 0x2041, -+ 0x0001, 0x2001, 0x0003, 0x0078, 0x2545, 0x0018, 0x22d1, 0x744c, -+ 0xa485, 0x0000, 0x0040, 0x2477, 0xa080, 0x4d80, 0x2030, 0x7150, -+ 0x8108, 0xa12a, 0x0048, 0x246e, 0x2009, 0x4d80, 0x2164, 0x6504, -+ 0x85ff, 0x00c0, 0x2488, 0x8421, 0x00c0, 0x2468, 0x7152, 0x7003, -+ 0x0000, 0x704b, 0x0000, 0x7040, 0xa005, 0x0040, 0x39a6, 0x0078, -+ 0x231a, 0x764c, 0xa6b0, 0x4d80, 0x7150, 0x2600, 0x0078, 0x2473, -+ 0x7152, 0x2568, 0x2558, 0x754a, 0x2c50, 0x6034, 0xa085, 0x0000, -+ 0x00c0, 0x2485, 0x6708, 0x773a, 0xa784, 0x033f, 0x0040, 0x24be, -+ 0xa784, 0x0021, 0x00c0, 0x2485, 0xa784, 0x0002, 0x0040, 0x24a7, -+ 0xa784, 0x0004, 0x0040, 0x2485, 0xa7bc, 0xfffb, 0x670a, 0xa784, -+ 0x0008, 0x00c0, 0x2485, 0xa784, 0x0010, 0x00c0, 0x2485, 0xa784, -+ 0x0200, 0x00c0, 0x2485, 0xa784, 0x0100, 0x0040, 0x24be, 0x6018, -+ 0xa005, 0x00c0, 0x2485, 0xa7bc, 0xfeff, 0x670a, 0x6823, 0x0000, -+ 0x6e1c, 0xa684, 0x000e, 0x6118, 0x0040, 0x24ce, 0x601c, 0xa102, -+ 0x0048, 0x24d1, 0x0040, 0x24d1, 0x0078, 0x2481, 0x81ff, 0x00c0, -+ 0x2481, 0x68c3, 0x0000, 0xa784, 0x0080, 0x00c0, 0x24d9, 0x700c, -+ 0x6022, 0xa7bc, 0xff7f, 0x670a, 0x1078, 0x37b5, 0x0018, 0x22d1, -+ 0x789b, 0x0010, 0xa046, 0x1078, 0x3705, 0x00c0, 0x231a, 0x6b14, -+ 0xa39c, 0x001f, 0xa39d, 0x00c0, 0x7058, 0xa084, 0x8000, 0x0040, -+ 0x24f5, 0xa684, 0x0001, 0x0040, 0x24f7, 0xa39c, 0xffbf, 0xa684, -+ 0x0010, 0x0040, 0x24fd, 0xa39d, 0x0020, 0x7baa, 0x8840, 0xa684, -+ 0x000e, 0x00c0, 0x2508, 0xa7bd, 0x0010, 0x670a, 0x0078, 0x2543, -+ 0x7158, 0xa18c, 0x0800, 0x0040, 0x322a, 0x2011, 0x0020, 0xa684, -+ 0x0008, 0x00c0, 0x2519, 0x8210, 0xa684, 0x0002, 0x00c0, 0x2519, -+ 0x8210, 0x7aaa, 0x8840, 0x1078, 0x371d, 0x6a14, 0x610c, 0x8108, -+ 0xa18c, 0x00ff, 0xa1e0, 0x7000, 0x2c64, 0x8cff, 0x0040, 0x253a, -+ 0x6014, 0xa206, 0x00c0, 0x2524, 0x60b8, 0x8001, 0x60ba, 0x00c0, -+ 0x251f, 0x0c7e, 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x0c7f, -+ 0x0078, 0x245d, 0x1078, 0x3705, 0x00c0, 0x231a, 0x2a60, 0x610e, -+ 0x79aa, 0x8840, 0x7132, 0x2001, 0x0001, 0x007e, 0x715c, 0xa184, -+ 0x0018, 0x0040, 0x2560, 0xa184, 0x0010, 0x0040, 0x2553, 0x1078, -+ 0x3429, 0x00c0, 0x2583, 0xa184, 0x0008, 0x0040, 0x2560, 0x69a0, -+ 0xa184, 0x0600, 0x00c0, 0x2560, 0x1078, 0x331a, 0x0078, 0x2583, -+ 0x69a0, 0xa184, 0x0800, 0x0040, 0x2577, 0x0c7e, 0x027e, 0x2960, -+ 0x6000, 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d, 0x0010, 0x6106, -+ 0x027f, 0x0c7f, 0x1078, 0x3429, 0x00c0, 0x2583, 0x69a0, 0xa184, -+ 0x0200, 0x0040, 0x257f, 0x1078, 0x3369, 0x0078, 0x2583, 0xa184, -+ 0x0400, 0x00c0, 0x255c, 0x69a0, 0xa184, 0x1000, 0x0040, 0x258e, -+ 0x6914, 0xa18c, 0xff00, 0x810f, 0x1078, 0x21af, 0x007f, 0x7002, -+ 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x259c, 0xa086, 0x0060, -+ 0x00c0, 0x259c, 0xa18d, 0x4000, 0x88ff, 0x0040, 0x25a1, 0xa18d, -+ 0x0004, 0x795a, 0x69b6, 0x789b, 0x0060, 0x2800, 0x78aa, 0x789b, -+ 0x0061, 0x6818, 0xa085, 0x8000, 0x681a, 0x78aa, 0x8008, 0x810c, -+ 0x0040, 0x3230, 0xa18c, 0x00f8, 0x00c0, 0x3230, 0x157e, 0x137e, -+ 0x147e, 0x20a1, 0x012c, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, -+ 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, -+ 0x789b, 0x0080, 0x78aa, 0x6d94, 0x7dd6, 0x7dde, 0x6e98, 0x7ed2, -+ 0x7eda, 0x1078, 0x3705, 0x00c0, 0x25e6, 0x702c, 0x8003, 0x0048, -+ 0x25df, 0x2019, 0x4955, 0x1078, 0x2137, 0x702f, 0x8000, 0x7830, -+ 0xa084, 0x00c0, 0x00c0, 0x25e6, 0x0098, 0x25ee, 0x6008, 0xa084, -+ 0xffef, 0x600a, 0x1078, 0x371d, 0x0078, 0x2343, 0x7200, 0xa284, -+ 0x0007, 0xa086, 0x0001, 0x00c0, 0x25fb, 0x781b, 0x004f, 0x1078, -+ 0x371d, 0x0078, 0x260c, 0x6ab4, 0xa295, 0x2000, 0x7a5a, 0x781b, -+ 0x004f, 0x1078, 0x371d, 0x7200, 0x2500, 0xa605, 0x0040, 0x260c, -+ 0xa284, 0x0007, 0x1079, 0x261a, 0xad80, 0x0009, 0x7036, 0xa284, -+ 0x0007, 0xa086, 0x0001, 0x00c0, 0x231a, 0x6018, 0x8000, 0x601a, -+ 0x0078, 0x231a, 0x2622, 0x45ed, 0x45ed, 0x45dc, 0x45ed, 0x2622, -+ 0x45dc, 0x2622, 0x1078, 0x22ac, 0x1078, 0x3705, 0x0f7e, 0x2079, -+ 0x4d00, 0x78cc, 0x0f7f, 0xa084, 0x0001, 0x0040, 0x2648, 0x706c, -+ 0xa086, 0x0001, 0x00c0, 0x2637, 0x706e, 0x0078, 0x26d9, 0x706c, -+ 0xa086, 0x0005, 0x00c0, 0x2646, 0x7088, 0x2068, 0x681b, 0x0004, -+ 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x706f, 0x0000, -+ 0x2011, 0x0004, 0x716c, 0xa186, 0x0001, 0x0040, 0x2669, 0xa186, -+ 0x0007, 0x00c0, 0x2659, 0x2009, 0x4d38, 0x200b, 0x0005, 0x0078, -+ 0x2669, 0x2009, 0x4d13, 0x2104, 0x2009, 0x4d12, 0x200a, 0x2009, -+ 0x4d38, 0x200b, 0x0001, 0x706f, 0x0000, 0x7073, 0x0001, 0x0078, -+ 0x266b, 0x706f, 0x0000, 0x1078, 0x431b, 0x157e, 0x20a9, 0x0010, -+ 0x2039, 0x0000, 0x1078, 0x34f9, 0xa7b8, 0x0100, 0x0070, 0x267a, -+ 0x0078, 0x2672, 0x157f, 0x7000, 0x0079, 0x267e, 0x26aa, 0x2693, -+ 0x2693, 0x2686, 0x26aa, 0x26aa, 0x26aa, 0x26aa, 0x2021, 0x4d5a, -+ 0x2404, 0xa005, 0x0040, 0x26aa, 0xad06, 0x00c0, 0x2693, 0x6800, -+ 0x2022, 0x0078, 0x26a3, 0x6820, 0xa084, 0x0001, 0x00c0, 0x269f, -+ 0x6f14, 0x1078, 0x35fc, 0x1078, 0x3201, 0x0078, 0x26a3, 0x7060, -+ 0x2060, 0x6800, 0x6002, 0x6a1a, 0x6820, 0xa085, 0x0008, 0x6822, -+ 0x1078, 0x1b8e, 0x2021, 0x7100, 0x1078, 0x26e6, 0x2021, 0x4d5a, -+ 0x1078, 0x26e6, 0x157e, 0x20a9, 0x0000, 0x2021, 0x7000, 0x1078, -+ 0x26e6, 0x8420, 0x0070, 0x26be, 0x0078, 0x26b7, 0x2061, 0x5000, -+ 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, 0x6110, 0x81ff, 0x0040, -+ 0x26cd, 0xa102, 0x0050, 0x26cd, 0x6012, 0x601b, 0x0000, 0xace0, -+ 0x0010, 0x0070, 0x26d5, 0x0078, 0x26c4, 0x8421, 0x00c0, 0x26c2, -+ 0x157f, 0x709c, 0xa084, 0x8000, 0x0040, 0x26e0, 0x1078, 0x3810, -+ 0x7003, 0x0000, 0x704b, 0x0000, 0x0078, 0x231a, 0x047e, 0x2404, -+ 0xa005, 0x0040, 0x26f8, 0x2068, 0x6800, 0x007e, 0x6a1a, 0x6820, -+ 0xa085, 0x0008, 0x6822, 0x1078, 0x1b8e, 0x007f, 0x0078, 0x26e8, -+ 0x047f, 0x2023, 0x0000, 0x007c, 0xa282, 0x0003, 0x0050, 0x2702, -+ 0x1078, 0x22ac, 0x2300, 0x0079, 0x2705, 0x2708, 0x277b, 0x2798, -+ 0xa282, 0x0002, 0x0040, 0x270e, 0x1078, 0x22ac, 0x706c, 0x706f, -+ 0x0000, 0x7093, 0x0000, 0x0079, 0x2715, 0x271d, 0x271d, 0x271f, -+ 0x2753, 0x3236, 0x271d, 0x2753, 0x271d, 0x1078, 0x22ac, 0x7780, -+ 0x1078, 0x34f9, 0x7780, 0xa7bc, 0x0f00, 0x1078, 0x35fc, 0x6018, -+ 0xa005, 0x0040, 0x274a, 0x2021, 0x7100, 0x2009, 0x0004, 0x2011, -+ 0x0010, 0x1078, 0x27b3, 0x0040, 0x274a, 0x157e, 0x20a9, 0x0000, -+ 0x2021, 0x7000, 0x047e, 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, -+ 0x27b3, 0x047f, 0x0040, 0x2749, 0x8420, 0x0070, 0x2749, 0x0078, -+ 0x273a, 0x157f, 0x8738, 0xa784, 0x001f, 0x00c0, 0x2725, 0x0078, -+ 0x2343, 0x0078, 0x2343, 0x7780, 0x1078, 0x35fc, 0x6018, 0xa005, -+ 0x0040, 0x2779, 0x2021, 0x7100, 0x2009, 0x0005, 0x2011, 0x0020, -+ 0x1078, 0x27b3, 0x0040, 0x2779, 0x157e, 0x20a9, 0x0000, 0x2021, -+ 0x7000, 0x047e, 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x27b3, -+ 0x047f, 0x0040, 0x2778, 0x8420, 0x0070, 0x2778, 0x0078, 0x2769, -+ 0x157f, 0x0078, 0x2343, 0x2200, 0x0079, 0x277e, 0x2781, 0x2783, -+ 0x2783, 0x1078, 0x22ac, 0x2009, 0x0012, 0x706c, 0xa086, 0x0002, -+ 0x0040, 0x278c, 0x2009, 0x000e, 0x6818, 0xa084, 0x8000, 0x0040, -+ 0x2792, 0x691a, 0x706f, 0x0000, 0x7073, 0x0001, 0x0078, 0x3693, -+ 0x2200, 0x0079, 0x279b, 0x27a0, 0x2783, 0x279e, 0x1078, 0x22ac, -+ 0x1078, 0x431b, 0x7000, 0xa086, 0x0001, 0x00c0, 0x31c6, 0x1078, -+ 0x3217, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x31b9, 0x0040, -+ 0x31c6, 0x0078, 0x245d, 0x2404, 0xa005, 0x0040, 0x27d4, 0x2068, -+ 0x2d04, 0x007e, 0x6814, 0xa706, 0x0040, 0x27c2, 0x2d20, 0x007f, -+ 0x0078, 0x27b4, 0x007f, 0x2022, 0x691a, 0x6820, 0xa205, 0x6822, -+ 0x1078, 0x1b8e, 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, 0xffef, -+ 0x600a, 0x1078, 0x3217, 0x007c, 0xa085, 0x0001, 0x0078, 0x27d3, -+ 0x2300, 0x0079, 0x27db, 0x27e0, 0x27de, 0x2879, 0x1078, 0x22ac, -+ 0x78ec, 0xa084, 0x0001, 0x00c0, 0x27f4, 0x7000, 0xa086, 0x0004, -+ 0x00c0, 0x27ec, 0x0078, 0x2817, 0x1078, 0x3217, 0x6008, 0xa084, -+ 0xffef, 0x600a, 0x0078, 0x31c6, 0x78e4, 0xa005, 0x00d0, 0x2817, -+ 0x0018, 0x2817, 0x2008, 0xa084, 0x0030, 0x00c0, 0x2803, 0x781b, -+ 0x004f, 0x0078, 0x231a, 0x78ec, 0xa084, 0x0003, 0x0040, 0x27ff, -+ 0x2100, 0xa084, 0x0007, 0x0079, 0x280d, 0x2850, 0x285b, 0x2841, -+ 0x2815, 0x36f8, 0x36f8, 0x2815, 0x286a, 0x1078, 0x22ac, 0x7000, -+ 0xa086, 0x0004, 0x00c0, 0x2831, 0x706c, 0xa086, 0x0002, 0x00c0, -+ 0x2827, 0x2011, 0x0002, 0x2019, 0x0000, 0x0078, 0x26fc, 0x706c, -+ 0xa086, 0x0006, 0x0040, 0x2821, 0x706c, 0xa086, 0x0004, 0x0040, -+ 0x2821, 0x79e4, 0xa184, 0x0030, 0x0040, 0x283b, 0x78ec, 0xa084, -+ 0x0003, 0x00c0, 0x283d, 0x0078, 0x2ded, 0x2001, 0x0003, 0x0078, -+ 0x2b81, 0x6818, 0xa084, 0x8000, 0x0040, 0x2848, 0x681b, 0x001d, -+ 0x1078, 0x34d8, 0x782b, 0x3008, 0x781b, 0x005b, 0x0078, 0x231a, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2857, 0x681b, 0x001d, 0x1078, -+ 0x34d8, 0x0078, 0x36c3, 0x6818, 0xa084, 0x8000, 0x0040, 0x2862, -+ 0x681b, 0x001d, 0x1078, 0x34d8, 0x782b, 0x3008, 0x781b, 0x00de, -+ 0x0078, 0x231a, 0x6818, 0xa084, 0x8000, 0x0040, 0x2871, 0x681b, -+ 0x001d, 0x1078, 0x34d8, 0x782b, 0x3008, 0x781b, 0x009c, 0x0078, -+ 0x231a, 0xa584, 0x000f, 0x00c0, 0x2896, 0x7000, 0x0079, 0x2880, -+ 0x2343, 0x288a, 0x2888, 0x31c6, 0x31c6, 0x31c6, 0x31c6, 0x2888, -+ 0x1078, 0x22ac, 0x1078, 0x3217, 0x6008, 0xa084, 0xffef, 0x600a, -+ 0x1078, 0x31b9, 0x0040, 0x31c6, 0x0078, 0x245d, 0x78e4, 0xa005, -+ 0x00d0, 0x2817, 0x0018, 0x2817, 0x2008, 0xa084, 0x0030, 0x00c0, -+ 0x28a5, 0x781b, 0x004f, 0x0078, 0x231a, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x28a1, 0x2100, 0xa184, 0x0007, 0x0079, 0x28af, 0x28c1, -+ 0x28c5, 0x28b9, 0x28b7, 0x36f8, 0x36f8, 0x28b7, 0x36ee, 0x1078, -+ 0x22ac, 0x1078, 0x34e0, 0x782b, 0x3008, 0x781b, 0x005b, 0x0078, -+ 0x231a, 0x1078, 0x34e0, 0x0078, 0x36c3, 0x1078, 0x34e0, 0x782b, -+ 0x3008, 0x781b, 0x00de, 0x0078, 0x231a, 0x1078, 0x34e0, 0x782b, -+ 0x3008, 0x781b, 0x009c, 0x0078, 0x231a, 0x2300, 0x0079, 0x28d8, -+ 0x28dd, 0x28db, 0x28df, 0x1078, 0x22ac, 0x0078, 0x2f2b, 0x681b, -+ 0x0008, 0x78a3, 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x2f2b, -+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x2f2b, 0xa184, 0x0007, 0x0079, -+ 0x28f1, 0x28f9, 0x28c5, 0x2841, 0x3693, 0x36f8, 0x36f8, 0x28f9, -+ 0x36ee, 0x1078, 0x36a7, 0x0078, 0x231a, 0xa282, 0x0005, 0x0050, -+ 0x2903, 0x1078, 0x22ac, 0x2300, 0x0079, 0x2906, 0x2909, 0x2b2e, -+ 0x2b3c, 0x2200, 0x0079, 0x290c, 0x2926, 0x2913, 0x2926, 0x2911, -+ 0x2b13, 0x1078, 0x22ac, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, -+ 0xa082, 0x0020, 0x0048, 0x34be, 0xa08a, 0x0004, 0x00c8, 0x34be, -+ 0x0079, 0x2922, 0x34be, 0x34be, 0x34be, 0x346c, 0x789b, 0x0018, -+ 0x79a8, 0xa184, 0x0080, 0x0040, 0x2937, 0x0078, 0x34be, 0x7000, -+ 0xa005, 0x00c0, 0x292d, 0x2011, 0x0004, 0x0078, 0x3069, 0xa184, -+ 0x00ff, 0xa08a, 0x0010, 0x00c8, 0x34be, 0x0079, 0x293f, 0x2951, -+ 0x294f, 0x2969, 0x296d, 0x29ff, 0x34be, 0x34be, 0x2a01, 0x34be, -+ 0x34be, 0x2b0f, 0x2b0f, 0x34be, 0x34be, 0x34be, 0x2b11, 0x1078, -+ 0x22ac, 0xa684, 0x1000, 0x0040, 0x295e, 0x2001, 0x0500, 0x8000, -+ 0x8000, 0x783a, 0x781b, 0x009a, 0x0078, 0x231a, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x2967, 0x681b, 0x001d, 0x0078, 0x2955, 0x0078, -+ 0x3693, 0x681b, 0x001d, 0x0078, 0x34ce, 0x6920, 0x6922, 0xa684, -+ 0x1800, 0x00c0, 0x2987, 0x6820, 0xa084, 0x0001, 0x00c0, 0x298d, -+ 0x6818, 0xa086, 0x0008, 0x00c0, 0x297f, 0x681b, 0x0000, 0xa684, -+ 0x0400, 0x0040, 0x29fb, 0x781b, 0x005d, 0x0078, 0x231a, 0xa684, -+ 0x1000, 0x0040, 0x298d, 0x0078, 0x231a, 0xa684, 0x0060, 0x0040, -+ 0x29f7, 0xa684, 0x0800, 0x0040, 0x29f7, 0xa684, 0x8000, 0x00c0, -+ 0x299b, 0x0078, 0x29b5, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb6, 0x789b, -+ 0x0076, 0x7aac, 0x79ac, 0x78ac, 0x801b, 0x00c8, 0x29a8, 0x8000, -+ 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, -+ 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0xa684, 0x4000, 0x0040, -+ 0x29bd, 0xa6b4, 0xbfff, 0x7e5a, 0x6eb6, 0x7000, 0xa086, 0x0003, -+ 0x00c0, 0x29ca, 0x1078, 0x43d1, 0x1078, 0x45dc, 0x781b, 0x006c, -+ 0x0078, 0x231a, 0xa006, 0x1078, 0x46d8, 0x6ab0, 0x69ac, 0x6c98, -+ 0x6b94, 0x2200, 0xa105, 0x0040, 0x29d9, 0x2200, 0xa422, 0x2100, -+ 0xa31b, 0x6caa, 0x7cd2, 0x6ba6, 0x7bd6, 0x2300, 0xa405, 0x00c0, -+ 0x29e9, 0xa6b5, 0x4000, 0x7e5a, 0x6eb6, 0x781b, 0x006c, 0x0078, -+ 0x231a, 0x781b, 0x006c, 0x2200, 0xa115, 0x00c0, 0x29f3, 0x1078, -+ 0x45ed, 0x0078, 0x231a, 0x1078, 0x4638, 0x0078, 0x231a, 0x781b, -+ 0x006d, 0x0078, 0x231a, 0x781b, 0x005d, 0x0078, 0x231a, 0x1078, -+ 0x22ac, 0x0078, 0x2a62, 0x6920, 0xa184, 0x0100, 0x0040, 0x2a19, -+ 0xa18c, 0xfeff, 0x6922, 0x0c7e, 0x7054, 0x2060, 0x6000, 0xa084, -+ 0xefff, 0x6002, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x0078, -+ 0x2a51, 0xa184, 0x0200, 0x0040, 0x2a51, 0xa18c, 0xfdff, 0x6922, -+ 0x0c7e, 0x7054, 0x2060, 0x6000, 0xa084, 0xdfff, 0x6002, 0x6004, -+ 0xa084, 0xffef, 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0008, -+ 0x0040, 0x2a51, 0x1078, 0x35f8, 0x1078, 0x331a, 0x88ff, 0x0040, -+ 0x2a51, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5, 0x0004, -+ 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2a4b, 0x782b, 0x3008, 0x781b, -+ 0x005b, 0x0078, 0x231a, 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, -+ 0x231a, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x2a5a, 0x781b, 0x005d, -+ 0x0078, 0x231a, 0x781b, 0x006d, 0x0078, 0x231a, 0x0078, 0x34c6, -+ 0x0078, 0x34c6, 0x2019, 0x0000, 0x7990, 0xa18c, 0x0007, 0x0040, -+ 0x2a60, 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, -+ 0x00c0, 0x2aa0, 0x2300, 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, -+ 0x2a98, 0x0048, 0x2a7d, 0x0078, 0x2a9a, 0xa380, 0x0002, 0xa102, -+ 0x00c8, 0x2a98, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0c7e, 0x7054, -+ 0x2060, 0x6000, 0xa084, 0xefef, 0x6002, 0x6004, 0xa084, 0xffe5, -+ 0x6006, 0x0c7f, 0x7e58, 0xa6b4, 0xfffb, 0x7e5a, 0x0078, 0x2a52, -+ 0x0078, 0x2a03, 0x24a8, 0x7aa8, 0x00f0, 0x2a9a, 0x0078, 0x2a6b, -+ 0xa284, 0x00f0, 0xa086, 0x0020, 0x00c0, 0x2b00, 0x8318, 0x8318, -+ 0x2300, 0xa102, 0x0040, 0x2ab0, 0x0048, 0x2ab0, 0x0078, 0x2afd, -+ 0xa286, 0x0023, 0x0040, 0x2a60, 0x681c, 0xa084, 0xfff1, 0x681e, -+ 0x7e58, 0xa684, 0xfff1, 0xa085, 0x0010, 0x2030, 0x7e5a, 0x6008, -+ 0xa085, 0x0010, 0x600a, 0x0c7e, 0x7054, 0x2060, 0x6004, 0x2008, -+ 0x2c48, 0x0c7f, 0xa184, 0x0010, 0x0040, 0x2ad4, 0x1078, 0x35f8, -+ 0x1078, 0x3429, 0x0078, 0x2ae3, 0x0c7e, 0x7054, 0x2060, 0x6004, -+ 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x2a51, 0x1078, -+ 0x35f8, 0x1078, 0x331a, 0x88ff, 0x0040, 0x2a51, 0x789b, 0x0060, -+ 0x2800, 0x78aa, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, -+ 0x2af7, 0x782b, 0x3008, 0x781b, 0x005b, 0x0078, 0x231a, 0x782b, -+ 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x7aa8, 0x0078, 0x2a6b, -+ 0x8318, 0x2300, 0xa102, 0x0040, 0x2b09, 0x0048, 0x2b09, 0x0078, -+ 0x2a6b, 0xa284, 0x0080, 0x00c0, 0x34ce, 0x0078, 0x34c6, 0x0078, -+ 0x34ce, 0x0078, 0x34be, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, -+ 0xa08e, 0x0001, 0x0040, 0x2b1e, 0x1078, 0x22ac, 0x7aa8, 0xa294, -+ 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x34be, -+ 0x0079, 0x2b2a, 0x34be, 0x3267, 0x34be, 0x33be, 0xa282, 0x0000, -+ 0x00c0, 0x2b34, 0x1078, 0x22ac, 0x1078, 0x34d8, 0x782b, 0x3008, -+ 0x781b, 0x006d, 0x0078, 0x231a, 0xa282, 0x0003, 0x00c0, 0x2b42, -+ 0x1078, 0x22ac, 0xa484, 0x8000, 0x00c0, 0x2b65, 0x706c, 0xa005, -+ 0x0040, 0x2b4c, 0x1078, 0x22ac, 0x6f14, 0x7782, 0xa7bc, 0x0f00, -+ 0x1078, 0x35fc, 0x6008, 0xa085, 0x0021, 0x600a, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x2b50, 0x1078, 0x34dc, 0x706f, 0x0002, 0x2009, -+ 0x4d38, 0x200b, 0x0009, 0x0078, 0x2b67, 0x1078, 0x34e8, 0x782b, -+ 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0xa282, 0x0004, 0x0050, -+ 0x2b73, 0x1078, 0x22ac, 0x2300, 0x0079, 0x2b76, 0x2b79, 0x2c6c, -+ 0x2c9f, 0xa286, 0x0003, 0x0040, 0x2b7f, 0x1078, 0x22ac, 0x2001, -+ 0x0000, 0x007e, 0x68c0, 0xa005, 0x0040, 0x2b88, 0x7003, 0x0003, -+ 0x68a0, 0xa084, 0x2000, 0x0040, 0x2b91, 0x6008, 0xa085, 0x0002, -+ 0x600a, 0x007f, 0x703e, 0x7000, 0xa084, 0x0007, 0x0079, 0x2b98, -+ 0x2343, 0x2ba2, 0x2ba2, 0x2d97, 0x2dd3, 0x2343, 0x2dd3, 0x2ba0, -+ 0x1078, 0x22ac, 0xa684, 0x1000, 0x00c0, 0x2baa, 0x1078, 0x431b, -+ 0x0040, 0x2c46, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x2bf2, 0xa186, -+ 0x0008, 0x00c0, 0x2bc1, 0x1078, 0x3217, 0x6008, 0xa084, 0xffef, -+ 0x600a, 0x1078, 0x31b9, 0x0040, 0x2bf2, 0x1078, 0x431b, 0x0078, -+ 0x2bd9, 0xa186, 0x0028, 0x00c0, 0x2bf2, 0x1078, 0x431b, 0x6008, -+ 0xa084, 0xffef, 0x600a, 0x6018, 0xa005, 0x0040, 0x2bd9, 0x8001, -+ 0x601a, 0xa005, 0x0040, 0x2bd9, 0x8001, 0xa005, 0x0040, 0x2bd9, -+ 0x601e, 0x6820, 0xa084, 0x0001, 0x0040, 0x2343, 0x6820, 0xa084, -+ 0xfffe, 0x6822, 0x7060, 0x0c7e, 0x2060, 0x6800, 0x6002, 0x0c7f, -+ 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0, 0x2bef, 0x6002, 0x6006, -+ 0x0078, 0x2343, 0x017e, 0x1078, 0x2cd0, 0x017f, 0xa684, 0xdf00, -+ 0x681e, 0x682b, 0x0000, 0x6f14, 0x81ff, 0x0040, 0x2c46, 0xa186, -+ 0x0002, 0x00c0, 0x2c3e, 0xa684, 0x0800, 0x00c0, 0x2c0f, 0xa684, -+ 0x0060, 0x0040, 0x2c0f, 0x78d8, 0x7adc, 0x6832, 0x6a2e, 0x6820, -+ 0xa084, 0x0800, 0x00c0, 0x2c46, 0x8717, 0xa294, 0x000f, 0x8213, -+ 0x8213, 0x8213, 0xa290, 0x4f80, 0xa290, 0x0000, 0x221c, 0xa384, -+ 0x0100, 0x00c0, 0x2c25, 0x0078, 0x2c2b, 0x8210, 0x2204, 0xa085, -+ 0x0018, 0x2012, 0x8211, 0xa384, 0x0400, 0x0040, 0x2c38, 0x68a0, -+ 0xa084, 0x0100, 0x00c0, 0x2c38, 0x1078, 0x2d4a, 0x0078, 0x2343, -+ 0x6008, 0xa085, 0x0002, 0x600a, 0x0078, 0x2c46, 0xa186, 0x0018, -+ 0x0040, 0x2c46, 0xa186, 0x0014, 0x0040, 0x2343, 0x6916, 0x6818, -+ 0xa084, 0x8000, 0x0040, 0x2c4e, 0x703c, 0x681a, 0xa68c, 0xdf00, -+ 0x691e, 0x1078, 0x3208, 0x1078, 0x3217, 0x00c0, 0x2c5b, 0x6008, -+ 0xa084, 0xffef, 0x600a, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2c64, -+ 0x1078, 0x3201, 0x0078, 0x2c68, 0x7060, 0x2060, 0x6800, 0x6002, -+ 0x1078, 0x1b8e, 0x0078, 0x2343, 0xa282, 0x0004, 0x0048, 0x2c72, -+ 0x1078, 0x22ac, 0x2200, 0x0079, 0x2c75, 0x2c70, 0x2c79, 0x2c86, -+ 0x2c79, 0x7000, 0xa086, 0x0005, 0x0040, 0x2c82, 0x1078, 0x34d8, -+ 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x7890, 0x8007, -+ 0x8001, 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, -+ 0x00ff, 0xa186, 0x0003, 0x0040, 0x2c9b, 0xa186, 0x0000, 0x0040, -+ 0x2c9b, 0x0078, 0x34be, 0x781b, 0x006d, 0x0078, 0x231a, 0x6820, -+ 0xa085, 0x0004, 0x6822, 0x82ff, 0x00c0, 0x2caa, 0x1078, 0x34d8, -+ 0x0078, 0x2cb1, 0x8211, 0x0040, 0x2caf, 0x1078, 0x22ac, 0x1078, -+ 0x34e8, 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x702c, -+ 0x8003, 0x0048, 0x2cc1, 0x2019, 0x4955, 0x1078, 0x2137, 0x702f, -+ 0x8000, 0x1078, 0x371d, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x2ccd, -+ 0x0018, 0x2ccd, 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, -+ 0xa684, 0x0060, 0x00c0, 0x2cda, 0x6833, 0x0000, 0x682f, 0x0000, -+ 0x0078, 0x2d49, 0xa684, 0x0800, 0x00c0, 0x2cf2, 0x68b4, 0xa084, -+ 0x4800, 0xa635, 0xa684, 0x0800, 0x00c0, 0x2cf2, 0x6998, 0x6a94, -+ 0x6932, 0x6a2e, 0x7000, 0xa086, 0x0006, 0x0040, 0x2cf1, 0x1078, -+ 0x431b, 0x007c, 0xa684, 0x0020, 0x0040, 0x2d14, 0xa684, 0x4000, -+ 0x0040, 0x2d00, 0x6833, 0x0000, 0x682f, 0x0000, 0x0078, 0x2cea, -+ 0x68b4, 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2cfa, -+ 0x703c, 0xa005, 0x00c0, 0x2d0e, 0x703f, 0x0015, 0x79d8, 0x7adc, -+ 0x6932, 0x6a2e, 0x0078, 0x2cea, 0xa684, 0x4000, 0x0040, 0x2d1e, -+ 0x6833, 0x0000, 0x682f, 0x0000, 0x0078, 0x2cea, 0x68b4, 0xa084, -+ 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2d18, 0x703c, 0xa005, -+ 0x00c0, 0x2d2c, 0x703f, 0x0015, 0x79d8, 0x7adc, 0x78d0, 0x80fb, -+ 0x00c8, 0x2d33, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, -+ 0x6932, 0x6a2e, 0x2100, 0xa205, 0x00c0, 0x2d40, 0x0078, 0x2cea, -+ 0x7000, 0xa086, 0x0006, 0x0040, 0x2d49, 0x1078, 0x46d8, 0x0078, -+ 0x2cea, 0x007c, 0x6008, 0xa085, 0x0200, 0x600a, 0xa384, 0x0200, -+ 0x0040, 0x2d56, 0x6008, 0xa085, 0x0002, 0x600a, 0x681b, 0x0006, -+ 0x688f, 0x0000, 0x6893, 0x0000, 0x6a2c, 0x6930, 0x6a3e, 0x6942, -+ 0x682f, 0x0300, 0x6833, 0x0000, 0x6837, 0x2000, 0x6897, 0x0000, -+ 0x689b, 0x0020, 0x68b3, 0x0000, 0x68af, 0x0000, 0x7000, 0x0079, -+ 0x2d71, 0x2343, 0x2d7b, 0x2d84, 0x2d79, 0x2d79, 0x2d79, 0x2d79, -+ 0x2d79, 0x1078, 0x22ac, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2d84, -+ 0x1078, 0x3201, 0x0078, 0x2d8a, 0x7060, 0x2c50, 0x2060, 0x6800, -+ 0x6002, 0x2a60, 0x2021, 0x4d5a, 0x2404, 0xa005, 0x0040, 0x2d93, -+ 0x2020, 0x0078, 0x2d8c, 0x2d22, 0x206b, 0x0000, 0x007c, 0x1078, -+ 0x3208, 0x1078, 0x3217, 0x6008, 0xa084, 0xfdff, 0x600a, 0x682b, -+ 0x0000, 0x789b, 0x000e, 0x6f14, 0x6817, 0x0002, 0x1078, 0x472f, -+ 0xa684, 0x0800, 0x0040, 0x2db0, 0x691c, 0xa18d, 0x2000, 0x691e, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2dc0, 0x7868, 0xa08c, 0x00ff, -+ 0x0040, 0x2dbe, 0x681b, 0x001e, 0x0078, 0x2dc0, 0x681b, 0x0000, -+ 0x2021, 0x4d5a, 0x2404, 0xad06, 0x0040, 0x2dc7, 0x7460, 0x6800, -+ 0x2022, 0x68c3, 0x0000, 0x6a3c, 0x6940, 0x6a2e, 0x6932, 0x1078, -+ 0x1b8e, 0x0078, 0x2343, 0x1078, 0x2cd0, 0x682b, 0x0000, 0x789b, -+ 0x000e, 0x6f14, 0x1078, 0x3723, 0xa08c, 0x00ff, 0x6916, 0x6818, -+ 0xa084, 0x8000, 0x0040, 0x2de6, 0x703c, 0x681a, 0xa68c, 0xdf00, -+ 0x691e, 0x706f, 0x0000, 0x0078, 0x2343, 0x7000, 0xa005, 0x00c0, -+ 0x2df3, 0x0078, 0x2343, 0xa006, 0x1078, 0x431b, 0x6817, 0x0000, -+ 0x681b, 0x0014, 0xa68c, 0xdf00, 0x691e, 0x682b, 0x0000, 0x6820, -+ 0xa085, 0x00ff, 0x6822, 0x7000, 0x0079, 0x2e06, 0x2343, 0x2e10, -+ 0x2e10, 0x2e12, 0x2e12, 0x2e12, 0x2e12, 0x2e0e, 0x1078, 0x22ac, -+ 0x1078, 0x3217, 0x6008, 0xa084, 0xffef, 0x600a, 0x0078, 0x31d1, -+ 0x2300, 0x0079, 0x2e1b, 0x2e1e, 0x2e20, 0x2e59, 0x1078, 0x22ac, -+ 0x7000, 0x0079, 0x2e23, 0x2343, 0x2e2d, 0x2e2d, 0x2e48, 0x2e2d, -+ 0x2e55, 0x2e48, 0x2e2b, 0x1078, 0x22ac, 0xa684, 0x0060, 0xa086, -+ 0x0060, 0x00c0, 0x2e44, 0xa6b4, 0xffdf, 0xa6b4, 0xbfff, 0xa6b5, -+ 0x2000, 0x7e5a, 0x681c, 0xa084, 0xffdf, 0x681e, 0x1078, 0x431b, -+ 0x1078, 0x45ed, 0x0078, 0x3693, 0xa684, 0x2000, 0x0040, 0x2e37, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2e55, 0x681b, 0x0015, 0xa684, -+ 0x4000, 0x0040, 0x2e55, 0x681b, 0x0007, 0x1078, 0x36a7, 0x0078, -+ 0x231a, 0x1078, 0x22ac, 0x2300, 0x0079, 0x2e5e, 0x2e61, 0x2e63, -+ 0x2e96, 0x1078, 0x22ac, 0x7000, 0x0079, 0x2e66, 0x2343, 0x2e70, -+ 0x2e70, 0x2e8b, 0x2e70, 0x2e92, 0x2e8b, 0x2e6e, 0x1078, 0x22ac, -+ 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x2e87, 0xa6b4, 0xffbf, -+ 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, 0x681c, 0xa084, 0xffbf, -+ 0x681e, 0x1078, 0x431b, 0x1078, 0x45ed, 0x0078, 0x3693, 0xa684, -+ 0x2000, 0x0040, 0x2e7a, 0x6818, 0xa084, 0x8000, 0x0040, 0x2e92, -+ 0x681b, 0x0007, 0x781b, 0x00de, 0x0078, 0x231a, 0x6820, 0xa085, -+ 0x0004, 0x6822, 0x1078, 0x365e, 0xa6b5, 0x0800, 0x1078, 0x34d8, -+ 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x2300, 0x0079, -+ 0x2ea9, 0x2eac, 0x2eae, 0x2eb0, 0x1078, 0x22ac, 0x1078, 0x22ac, -+ 0xa684, 0x0400, 0x00c0, 0x2ed9, 0x79e4, 0xa184, 0x0020, 0x0040, -+ 0x2ec0, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2ec0, 0x782b, 0x3009, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4, -+ 0xa184, 0x0020, 0x0040, 0x2ed1, 0x78ec, 0xa084, 0x0003, 0x00c0, -+ 0x2ed5, 0x2001, 0x0014, 0x0078, 0x2b81, 0xa184, 0x0007, 0x0079, -+ 0x2f11, 0x7a90, 0xa294, 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff, -+ 0x0040, 0x2f0f, 0x789b, 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0, -+ 0x2f00, 0x7ba8, 0x7ba8, 0xa386, 0x0001, 0x00c0, 0x2ef3, 0x2009, -+ 0xfff7, 0x0078, 0x2ef9, 0xa386, 0x0003, 0x00c0, 0x2f00, 0x2009, -+ 0xffef, 0x0c7e, 0x7054, 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, -+ 0x3009, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, 0x6922, 0x0078, -+ 0x3693, 0x2850, 0x285b, 0x2f1b, 0x2f23, 0x2f19, 0x2f19, 0x2f19, -+ 0x3693, 0x1078, 0x22ac, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, -+ 0x6922, 0x0078, 0x369d, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, -+ 0x6922, 0x0078, 0x3693, 0x79e4, 0xa184, 0x0030, 0x0040, 0x2f35, -+ 0x78ec, 0xa084, 0x0003, 0x00c0, 0x2f57, 0x7000, 0xa086, 0x0004, -+ 0x00c0, 0x2f4f, 0x706c, 0xa086, 0x0002, 0x00c0, 0x2f45, 0x2011, -+ 0x0002, 0x2019, 0x0000, 0x0078, 0x26fc, 0x706c, 0xa086, 0x0006, -+ 0x0040, 0x2f3f, 0x706c, 0xa086, 0x0004, 0x0040, 0x2f3f, 0x6818, -+ 0xa085, 0x8000, 0x681a, 0x2001, 0x0014, 0x0078, 0x2b81, 0xa184, -+ 0x0007, 0x0079, 0x2f5b, 0x3693, 0x3693, 0x2f63, 0x3693, 0x36f8, -+ 0x36f8, 0x3693, 0x3693, 0xa684, 0x0400, 0x00c0, 0x2fa6, 0x6820, -+ 0xa084, 0x0001, 0x0040, 0x369d, 0xa68c, 0x0060, 0xa684, 0x0060, -+ 0x0040, 0x2f78, 0xa086, 0x0060, 0x00c0, 0x2f78, 0xa18d, 0x4000, -+ 0xa18c, 0xfffb, 0x795a, 0x69b6, 0x789b, 0x0060, 0x78ab, 0x0000, -+ 0x789b, 0x0061, 0x6818, 0xa085, 0x8000, 0x681a, 0x78aa, 0x8008, -+ 0x810c, 0x0040, 0x3230, 0xa18c, 0x00f8, 0x00c0, 0x3230, 0x157e, -+ 0x137e, 0x147e, 0x20a1, 0x012c, 0x789b, 0x0000, 0x8000, 0x80ac, -+ 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, -+ 0x8007, 0x789b, 0x0080, 0x78aa, 0x0078, 0x369d, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x2fad, 0x681b, 0x0008, 0x781b, 0x00d4, 0x0078, -+ 0x231a, 0x2300, 0x0079, 0x2fb4, 0x2fb9, 0x3054, 0x2fb7, 0x1078, -+ 0x22ac, 0x7000, 0xa084, 0x0007, 0x0079, 0x2fbe, 0x2343, 0x2fc8, -+ 0x2ffd, 0x2fd3, 0x2fc6, 0x2343, 0x2fc6, 0x2fc6, 0x1078, 0x22ac, -+ 0x681c, 0xa084, 0x2000, 0x0040, 0x2fe1, 0x6008, 0xa085, 0x0002, -+ 0x600a, 0x0078, 0x2fe1, 0x68c0, 0xa005, 0x00c0, 0x2ffd, 0x6920, -+ 0xa18d, 0x0001, 0x6922, 0x68c3, 0x0001, 0x6800, 0x706a, 0x0078, -+ 0x2ff7, 0x6920, 0xa18d, 0x0001, 0x6922, 0x6800, 0x6006, 0xa005, -+ 0x00c0, 0x2feb, 0x6002, 0x681c, 0xa084, 0x000e, 0x0040, 0x2ff7, -+ 0x7014, 0x68ba, 0x7130, 0xa188, 0x7000, 0x0078, 0x2ff9, 0x2009, -+ 0x7100, 0x2104, 0x6802, 0x2d0a, 0x7162, 0x6eb6, 0xa684, 0x0060, -+ 0x0040, 0x3052, 0xa684, 0x0800, 0x00c0, 0x3011, 0xa684, 0x7fff, -+ 0x68b6, 0x6894, 0x68a6, 0x6898, 0x68aa, 0x1078, 0x431b, 0x0078, -+ 0x3052, 0xa684, 0x0020, 0x0040, 0x3026, 0x68c0, 0xa005, 0x0040, -+ 0x301d, 0x1078, 0x472f, 0x0078, 0x3020, 0xa006, 0x1078, 0x46d8, -+ 0x79d8, 0x7adc, 0x69aa, 0x6aa6, 0x0078, 0x302c, 0x1078, 0x3609, -+ 0x69aa, 0x6aa6, 0x1078, 0x46d8, 0xa684, 0x8000, 0x0040, 0x3052, -+ 0xa684, 0x7fff, 0x68b6, 0x789b, 0x0076, 0x1078, 0x3723, 0x2010, -+ 0x1078, 0x3723, 0x2008, 0xa684, 0x0020, 0x00c0, 0x304a, 0x1078, -+ 0x3723, 0x801b, 0x00c8, 0x3045, 0x8000, 0xa084, 0x003f, 0xa108, -+ 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, -+ 0xa303, 0x68ae, 0x0078, 0x2343, 0x0078, 0x34ce, 0x7037, 0x0000, -+ 0xa282, 0x0006, 0x0050, 0x305e, 0x1078, 0x22ac, 0x7000, 0xa084, -+ 0x0007, 0x10c0, 0x37c7, 0x2300, 0x0079, 0x3066, 0x3069, 0x308f, -+ 0x30a1, 0x2200, 0x0079, 0x306c, 0x308d, 0x34ce, 0x3072, 0x308d, -+ 0x30bb, 0x30fa, 0x7003, 0x0005, 0x2001, 0x7210, 0x2068, 0x704a, -+ 0x157e, 0x20a9, 0x0031, 0x2003, 0x0000, 0x8000, 0x0070, 0x3082, -+ 0x0078, 0x307b, 0x157f, 0x6817, 0x0000, 0x68b7, 0x0700, 0x6823, -+ 0x0800, 0x6827, 0x0003, 0x0078, 0x34be, 0x1078, 0x22ac, 0x7003, -+ 0x0005, 0x2001, 0x7210, 0x2068, 0x704a, 0x7036, 0x2200, 0x0079, -+ 0x3099, 0x34ce, 0x309f, 0x309f, 0x30bb, 0x309f, 0x34ce, 0x1078, -+ 0x22ac, 0x7003, 0x0005, 0x2001, 0x7210, 0x2068, 0x704a, 0x7036, -+ 0x2200, 0x0079, 0x30ab, 0x30b3, 0x30b1, 0x30b1, 0x30b3, 0x30b1, -+ 0x30b3, 0x1078, 0x22ac, 0x1078, 0x34e8, 0x782b, 0x3008, 0x781b, -+ 0x006d, 0x0078, 0x231a, 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, -+ 0x789b, 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0x2069, 0x7100, -+ 0x2d04, 0x2d08, 0x7162, 0x2068, 0xa005, 0x0040, 0x30d6, 0x6814, -+ 0xa206, 0x0040, 0x30ef, 0x6800, 0x0078, 0x30c9, 0x7003, 0x0005, -+ 0x2001, 0x7210, 0x2068, 0x704a, 0x7036, 0x157e, 0x20a9, 0x0031, -+ 0x2003, 0x0000, 0x8000, 0x0070, 0x30e7, 0x0078, 0x30e0, 0x157f, -+ 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, -+ 0x7e5a, 0x6820, 0xa084, 0x0c00, 0x0040, 0x3146, 0x1078, 0x34e0, -+ 0x0078, 0x3146, 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, -+ 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0x79a8, 0x79a8, 0xa18c, -+ 0x00ff, 0xa1e8, 0x7000, 0x2d04, 0x2d08, 0x7162, 0x2068, 0xa005, -+ 0x0040, 0x3119, 0x6814, 0xa206, 0x0040, 0x3131, 0x6800, 0x0078, -+ 0x310c, 0x7003, 0x0005, 0x2001, 0x7210, 0x2068, 0x704a, 0x157e, -+ 0x20a9, 0x0031, 0x2003, 0x0000, 0x8000, 0x0070, 0x3129, 0x0078, -+ 0x3122, 0x157f, 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, -+ 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084, 0x0c00, 0x0040, 0x3146, -+ 0xa084, 0x0800, 0x0040, 0x3140, 0x1078, 0x34e4, 0x0078, 0x3146, -+ 0x1078, 0x34e0, 0x708b, 0x0000, 0x0078, 0x3146, 0x027e, 0x8207, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x4f80, 0x2060, -+ 0x7056, 0x6000, 0x705a, 0x6004, 0x705e, 0xa684, 0x0060, 0x0040, -+ 0x319e, 0x6b98, 0x6c94, 0x69ac, 0x68b0, 0xa105, 0x00c0, 0x3180, -+ 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa6b4, 0xb7ff, 0x7e5a, 0xa684, -+ 0x0060, 0xa086, 0x0060, 0x0040, 0x319e, 0x68c0, 0xa005, 0x0040, -+ 0x3179, 0x7003, 0x0003, 0x682b, 0x0000, 0x1078, 0x45dc, 0x0078, -+ 0x317b, 0x1078, 0x45ed, 0xa6b5, 0x2000, 0x7e5a, 0x0078, 0x319e, -+ 0x68b0, 0xa31a, 0x2100, 0xa423, 0x2400, 0xa305, 0x0040, 0x319e, -+ 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68b0, 0xa6b4, 0xbfff, 0x7e5a, -+ 0x007e, 0x68c0, 0xa005, 0x007f, 0x0040, 0x319c, 0x7003, 0x0003, -+ 0x1078, 0x45dc, 0x0078, 0x319e, 0x1078, 0x4638, 0x077f, 0x1078, -+ 0x35fc, 0x2009, 0x006d, 0xa684, 0x0004, 0x0040, 0x31ab, 0x782b, -+ 0x3008, 0x2009, 0x006d, 0x791a, 0x2d00, 0x704a, 0x8207, 0xa084, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x4f80, 0x2048, 0x0078, -+ 0x231a, 0x6020, 0xa005, 0x0040, 0x31c5, 0x8001, 0x6022, 0x6008, -+ 0xa085, 0x0008, 0x600a, 0x7010, 0x6026, 0x007c, 0xa006, 0x1078, -+ 0x431b, 0x6817, 0x0000, 0x681b, 0x0001, 0x6823, 0x0040, 0x681f, -+ 0x0100, 0x7000, 0xa084, 0x0007, 0x0079, 0x31d6, 0x2343, 0x31e0, -+ 0x31e0, 0x31fd, 0x31e8, 0x31e6, 0x31e8, 0x31de, 0x1078, 0x22ac, -+ 0x1078, 0x3208, 0x1078, 0x3201, 0x1078, 0x1b8e, 0x0078, 0x2343, -+ 0x706c, 0x706f, 0x0000, 0x7093, 0x0000, 0x0079, 0x31ef, 0x31f9, -+ 0x31f9, 0x31f7, 0x31f7, 0x31f7, 0x31f9, 0x31f7, 0x31f9, 0x0079, -+ 0x2715, 0x706f, 0x0000, 0x0078, 0x2343, 0x681b, 0x0000, 0x0078, -+ 0x2d97, 0x6800, 0xa005, 0x00c0, 0x3206, 0x6002, 0x6006, 0x007c, -+ 0x6010, 0xa005, 0x0040, 0x3211, 0x8001, 0x00d0, 0x3211, 0x1078, -+ 0x22ac, 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x007c, 0x6018, -+ 0xa005, 0x0040, 0x321d, 0x8001, 0x601a, 0x007c, 0x1078, 0x371d, -+ 0x681b, 0x0018, 0x0078, 0x3254, 0x1078, 0x371d, 0x681b, 0x0019, -+ 0x0078, 0x3254, 0x1078, 0x371d, 0x681b, 0x001a, 0x0078, 0x3254, -+ 0x1078, 0x371d, 0x681b, 0x0003, 0x0078, 0x3254, 0x7780, 0x1078, -+ 0x35fc, 0x7184, 0xa18c, 0x00ff, 0xa1e8, 0x7000, 0x2d04, 0x2d08, -+ 0x2068, 0xa005, 0x00c0, 0x3246, 0x0078, 0x2343, 0x6814, 0x7280, -+ 0xa206, 0x0040, 0x324e, 0x6800, 0x0078, 0x323f, 0x6800, 0x200a, -+ 0x681b, 0x0005, 0x708b, 0x0000, 0x1078, 0x3208, 0x6820, 0xa084, -+ 0x0001, 0x00c0, 0x325d, 0x1078, 0x3201, 0x1078, 0x3217, 0x681f, -+ 0x0000, 0x6823, 0x0020, 0x1078, 0x1b8e, 0x0078, 0x2343, 0xa282, -+ 0x0003, 0x00c0, 0x34be, 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, -+ 0x00ff, 0x6920, 0xa18d, 0x0080, 0x6922, 0xa184, 0x0100, 0x0040, -+ 0x32cb, 0xa18c, 0xfeff, 0x6922, 0xa4a4, 0x00ff, 0x0040, 0x32b5, -+ 0xa482, 0x000c, 0x0048, 0x3288, 0x0040, 0x3288, 0x2021, 0x000c, -+ 0x852b, 0x852b, 0x1078, 0x3577, 0x0040, 0x3292, 0x1078, 0x3384, -+ 0x0078, 0x32be, 0x1078, 0x3532, 0x0c7e, 0x2960, 0x6004, 0xa084, -+ 0xfff5, 0x6006, 0x1078, 0x33ab, 0x0c7f, 0x6920, 0xa18d, 0x0100, -+ 0x6922, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, -+ 0x32af, 0x782b, 0x3008, 0x781b, 0x005b, 0x0078, 0x231a, 0x782b, -+ 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x0c7e, 0x2960, 0x6004, -+ 0xa084, 0xfff5, 0x6006, 0x1078, 0x33ab, 0x0c7f, 0x7e58, 0xa684, -+ 0x0400, 0x00c0, 0x32c7, 0x781b, 0x005d, 0x0078, 0x231a, 0x781b, -+ 0x006d, 0x0078, 0x231a, 0x0c7e, 0x7054, 0x2060, 0x6100, 0xa18c, -+ 0x1000, 0x0040, 0x330b, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, -+ 0x000c, 0x0048, 0x32df, 0x0040, 0x32df, 0x2011, 0x000c, 0x2400, -+ 0xa202, 0x00c8, 0x32e4, 0x2220, 0x6208, 0xa294, 0x00ff, 0x7018, -+ 0xa086, 0x0028, 0x00c0, 0x32f4, 0xa282, 0x0019, 0x00c8, 0x32fa, -+ 0x2011, 0x0019, 0x0078, 0x32fa, 0xa282, 0x000c, 0x00c8, 0x32fa, -+ 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x32ff, 0x2228, 0x1078, -+ 0x3536, 0x852b, 0x852b, 0x1078, 0x3577, 0x0040, 0x330b, 0x1078, -+ 0x3384, 0x0078, 0x330f, 0x1078, 0x3532, 0x1078, 0x33ab, 0x7858, -+ 0xa085, 0x0004, 0x785a, 0x0c7f, 0x782b, 0x3008, 0x781b, 0x006d, -+ 0x0078, 0x231a, 0x0c7e, 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, -+ 0x3332, 0x6010, 0xa084, 0x000f, 0x00c0, 0x332c, 0x6104, 0xa18c, -+ 0xfff5, 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, -+ 0x0078, 0x3359, 0x68a0, 0xa084, 0x0200, 0x00c0, 0x332c, 0x6208, -+ 0xa294, 0x00ff, 0x7018, 0xa086, 0x0028, 0x00c0, 0x3347, 0xa282, -+ 0x0019, 0x00c8, 0x334d, 0x2011, 0x0019, 0x0078, 0x334d, 0xa282, -+ 0x000c, 0x00c8, 0x334d, 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, -+ 0x00ff, 0xa382, 0x000c, 0x0048, 0x3359, 0x0040, 0x3359, 0x2019, -+ 0x000c, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, -+ 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100, 0x6822, 0x0c7f, -+ 0x007c, 0x0c7e, 0x2960, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, -+ 0x2019, 0x0000, 0x0078, 0x3374, 0x78ab, 0x0001, 0x78ab, 0x0003, -+ 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xa085, -+ 0x0100, 0x6822, 0x0c7f, 0x007c, 0x0c7e, 0x7154, 0x2160, 0x1078, -+ 0x338b, 0x0c7f, 0x007c, 0x2008, 0xa084, 0xfff0, 0xa425, 0x7c86, -+ 0x6018, 0x789a, 0x7cae, 0x6412, 0x78a4, 0xa084, 0xfff8, 0xa18c, -+ 0x0007, 0xa105, 0x78a6, 0x6016, 0x788a, 0xa4a4, 0x000f, 0x8427, -+ 0x8204, 0x8004, 0xa084, 0x00ff, 0xa405, 0x600e, 0x6004, 0xa084, -+ 0xfff5, 0x6006, 0x007c, 0x0c7e, 0x7054, 0x2060, 0x1078, 0x33b2, -+ 0x0c7f, 0x007c, 0x6018, 0x789a, 0x78a4, 0xa084, 0xfff0, 0x78a6, -+ 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886, 0x007c, 0xa282, 0x0002, -+ 0x00c0, 0x34be, 0x7aa8, 0x6920, 0xa18d, 0x0080, 0x6922, 0xa184, -+ 0x0200, 0x0040, 0x3407, 0xa18c, 0xfdff, 0x6922, 0xa294, 0x00ff, -+ 0xa282, 0x0002, 0x00c8, 0x34be, 0x1078, 0x3450, 0x1078, 0x33ab, -+ 0xa980, 0x0001, 0x200c, 0x1078, 0x35f8, 0x1078, 0x331a, 0x88ff, -+ 0x0040, 0x33fa, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5, -+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x33f4, 0x782b, 0x3008, -+ 0x781b, 0x005b, 0x0078, 0x231a, 0x782b, 0x3008, 0x781b, 0x006d, -+ 0x0078, 0x231a, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x3403, 0x781b, -+ 0x005d, 0x0078, 0x231a, 0x781b, 0x006d, 0x0078, 0x231a, 0xa282, -+ 0x0002, 0x00c8, 0x340f, 0xa284, 0x0001, 0x0040, 0x3419, 0x7154, -+ 0xa188, 0x0000, 0x210c, 0xa18c, 0x2000, 0x00c0, 0x3419, 0x2011, -+ 0x0000, 0x1078, 0x3524, 0x1078, 0x3450, 0x1078, 0x33ab, 0x7858, -+ 0xa085, 0x0004, 0x785a, 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, -+ 0x231a, 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011, 0x0001, 0xa084, -+ 0x2000, 0x00c0, 0x3440, 0x6014, 0xa084, 0x0040, 0x00c0, 0x343e, -+ 0xa18c, 0xffef, 0x6106, 0xa006, 0x0078, 0x344d, 0x2011, 0x0000, -+ 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, -+ 0x0004, 0x6820, 0xa085, 0x0200, 0x6822, 0x027f, 0x0c7f, 0x007c, -+ 0x0c7e, 0x7054, 0x2060, 0x1078, 0x3457, 0x0c7f, 0x007c, 0x82ff, -+ 0x0040, 0x345c, 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, -+ 0x78a4, 0xa084, 0xffbf, 0xa205, 0x78a6, 0x788a, 0x6016, 0x6004, -+ 0xa084, 0xffef, 0x6006, 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, -+ 0x0040, 0x3475, 0x007f, 0x0078, 0x3478, 0x007f, 0x0078, 0x34ba, -+ 0xa684, 0x0020, 0x0040, 0x34ba, 0x7888, 0xa084, 0x0040, 0x0040, -+ 0x34ba, 0x7bb8, 0xa384, 0x003f, 0x831b, 0x00c8, 0x3488, 0x8000, -+ 0xa005, 0x0040, 0x349e, 0x831b, 0x00c8, 0x3491, 0x8001, 0x0040, -+ 0x34b6, 0xa684, 0x4000, 0x0040, 0x349e, 0x78b8, 0x801b, 0x00c8, -+ 0x349a, 0x8000, 0xa084, 0x003f, 0x00c0, 0x34b6, 0xa6b4, 0xbfff, -+ 0x7e5a, 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, 0x00c8, 0x34aa, -+ 0xa291, 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x1078, 0x46d8, -+ 0x781b, 0x006c, 0x1078, 0x4568, 0x0078, 0x231a, 0x781b, 0x006c, -+ 0x0078, 0x231a, 0x781b, 0x006d, 0x0078, 0x231a, 0x1078, 0x34ec, -+ 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x1078, 0x34d8, -+ 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x6827, 0x0002, -+ 0x1078, 0x34e0, 0x782b, 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, -+ 0x2001, 0x0005, 0x0078, 0x34ee, 0x2001, 0x000c, 0x0078, 0x34ee, -+ 0x2001, 0x0006, 0x0078, 0x34ee, 0x2001, 0x000d, 0x0078, 0x34ee, -+ 0x2001, 0x0009, 0x0078, 0x34ee, 0x2001, 0x0007, 0x789b, 0x0010, -+ 0x78aa, 0x789b, 0x0060, 0x78ab, 0x0001, 0xa6b5, 0x0004, 0x7e5a, -+ 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703, -+ 0xa0e0, 0x4f80, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, 0x000f, -+ 0x0040, 0x3512, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, 0xa085, -+ 0x0008, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040, -+ 0x0040, 0x3522, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004, 0xa085, -+ 0x0010, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001, -+ 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab, -+ 0x0004, 0x007c, 0x2021, 0x0000, 0x2029, 0x0032, 0x789b, 0x0010, -+ 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7caa, -+ 0x789b, 0x0060, 0x78ab, 0x0005, 0x007c, 0x157e, 0x8007, 0xa084, -+ 0x00ff, 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4, 0xa18c, -+ 0xfff0, 0x2001, 0x4d46, 0x2004, 0xa082, 0x0028, 0x0040, 0x3560, -+ 0x2021, 0x35df, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078, 0x3566, -+ 0x2021, 0x35eb, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, 0x0064, -+ 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, 0x3575, 0x8420, 0x2300, -+ 0xa210, 0x0070, 0x3575, 0x0078, 0x3568, 0x157f, 0x007c, 0x157e, -+ 0x2009, 0x4d46, 0x210c, 0xa182, 0x0032, 0x0048, 0x358b, 0x0040, -+ 0x358f, 0x2009, 0x35d1, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, -+ 0x0032, 0x0078, 0x35a1, 0xa182, 0x0028, 0x0040, 0x3599, 0x2009, -+ 0x35df, 0x2019, 0x0014, 0x20a9, 0x000c, 0x2011, 0x0064, 0x0078, -+ 0x35a1, 0x2009, 0x35eb, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, -+ 0x0064, 0x2200, 0xa502, 0x0040, 0x35b1, 0x0048, 0x35b1, 0x8108, -+ 0x2300, 0xa210, 0x0070, 0x35ae, 0x0078, 0x35a1, 0x157f, 0xa006, -+ 0x007c, 0x157f, 0xa582, 0x0064, 0x00c8, 0x35c0, 0x7808, 0xa085, -+ 0x0070, 0x780a, 0x7044, 0xa085, 0x0070, 0x7046, 0x0078, 0x35c0, -+ 0x78ec, 0xa084, 0x0300, 0x0040, 0x35ce, 0x2104, 0xa09e, 0x1201, -+ 0x00c0, 0x35ce, 0x2001, 0x2101, 0x0078, 0x35cf, 0x2104, 0xa005, -+ 0x007c, 0x1201, 0x3002, 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, -+ 0x6605, 0x6805, 0x7806, 0x7a06, 0x0c07, 0x0c07, 0x0e07, 0x3202, -+ 0x4202, 0x5202, 0x6202, 0x7202, 0x6605, 0x7605, 0x7805, 0x7a05, -+ 0x7c05, 0x7e05, 0x7f05, 0x2202, 0x3202, 0x4202, 0x5202, 0x5404, -+ 0x6404, 0x7404, 0x7604, 0x7804, 0x7a04, 0x7c04, 0x7e04, 0x7f04, -+ 0x789b, 0x0010, 0xa046, 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, -+ 0x001f, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa0e0, 0x5000, -+ 0x007c, 0x79d8, 0x7adc, 0x78d0, 0x801b, 0x00c8, 0x3610, 0x8000, -+ 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x007c, 0x0f7e, 0x2079, -+ 0x0100, 0x2009, 0x4d40, 0x2091, 0x8000, 0x2104, 0x0079, 0x3620, -+ 0x3656, 0x362a, 0x362a, 0x362a, 0x362a, 0x362a, 0x362a, 0x365a, -+ 0x1078, 0x22ac, 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0, -+ 0x362c, 0x784b, 0x0008, 0x7848, 0xa084, 0x0008, 0x00c0, 0x3633, -+ 0x68b4, 0xa085, 0x4000, 0x68b6, 0x7858, 0xa085, 0x4000, 0x785a, -+ 0x7830, 0xa084, 0x0080, 0x00c0, 0x3656, 0x0018, 0x3656, 0x681c, -+ 0xa084, 0x0020, 0x00c0, 0x3654, 0x0e7e, 0x2071, 0x4d40, 0x1078, -+ 0x36a7, 0x0e7f, 0x0078, 0x3656, 0x781b, 0x00de, 0x2091, 0x8001, -+ 0x0f7f, 0x007c, 0x1078, 0x3886, 0x0078, 0x3656, 0x0c7e, 0x6814, -+ 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0, 0x4f80, -+ 0x6004, 0xa084, 0x000a, 0x00c0, 0x3691, 0x6108, 0xa194, 0xff00, -+ 0x0040, 0x3691, 0xa18c, 0x00ff, 0x2001, 0x0019, 0xa106, 0x0040, -+ 0x3680, 0x2001, 0x0032, 0xa106, 0x0040, 0x3684, 0x0078, 0x3688, -+ 0x2009, 0x0020, 0x0078, 0x368a, 0x2009, 0x003f, 0x0078, 0x368a, -+ 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004, 0xa085, 0x0002, -+ 0x6006, 0x0c7f, 0x007c, 0x781b, 0x006d, 0x0078, 0x231a, 0x782b, -+ 0x3008, 0x781b, 0x006d, 0x0078, 0x231a, 0x781b, 0x005d, 0x0078, -+ 0x231a, 0x782b, 0x3008, 0x781b, 0x005b, 0x0078, 0x231a, 0x2009, -+ 0x4d20, 0x210c, 0xa186, 0x0000, 0x0040, 0x36bb, 0xa186, 0x0001, -+ 0x0040, 0x36be, 0x2009, 0x4d38, 0x200b, 0x000b, 0x706f, 0x0001, -+ 0x781b, 0x0048, 0x007c, 0x781b, 0x00d8, 0x007c, 0x2009, 0x4d38, -+ 0x200b, 0x000a, 0x007c, 0x2009, 0x4d20, 0x210c, 0xa186, 0x0000, -+ 0x0040, 0x36de, 0xa186, 0x0001, 0x0040, 0x36d8, 0x2009, 0x4d38, -+ 0x200b, 0x000b, 0x706f, 0x0001, 0x781b, 0x0048, 0x0078, 0x231a, -+ 0x2009, 0x4d38, 0x200b, 0x000a, 0x0078, 0x231a, 0x782b, 0x3008, -+ 0x781b, 0x00d8, 0x0078, 0x231a, 0x781b, 0x00de, 0x0078, 0x231a, -+ 0x782b, 0x3008, 0x781b, 0x00de, 0x0078, 0x231a, 0x781b, 0x009c, -+ 0x0078, 0x231a, 0x782b, 0x3008, 0x781b, 0x009c, 0x0078, 0x231a, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x36ff, 0x681b, 0x001d, 0x706f, -+ 0x0001, 0x781b, 0x0048, 0x0078, 0x231a, 0x007e, 0x7830, 0xa084, -+ 0x00c0, 0x00c0, 0x371b, 0x7808, 0xa084, 0xfffc, 0x780a, 0x0005, -+ 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, 0x371b, -+ 0x7044, 0x780a, 0xa005, 0x007f, 0x007c, 0x7044, 0xa085, 0x0002, -+ 0x7046, 0x780a, 0x007c, 0x7830, 0xa084, 0x0040, 0x00c0, 0x3723, -+ 0x0098, 0x372c, 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, 0x780a, -+ 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, -+ 0x373b, 0x0098, 0x3739, 0x78ac, 0x007e, 0x7044, 0x780a, 0x007f, -+ 0x007c, 0xa784, 0x007d, 0x00c0, 0x3748, 0x2700, 0x1078, 0x22ac, -+ 0xa784, 0x0001, 0x00c0, 0x2ded, 0xa784, 0x0070, 0x0040, 0x3758, -+ 0x0c7e, 0x2d60, 0x2f68, 0x1078, 0x2257, 0x2d78, 0x2c68, 0x0c7f, -+ 0xa784, 0x0008, 0x0040, 0x3765, 0x784b, 0x0008, 0x78ec, 0xa084, -+ 0x0003, 0x0040, 0x2343, 0x0078, 0x3693, 0xa784, 0x0004, 0x0040, -+ 0x3798, 0x78b8, 0xa084, 0x4001, 0x0040, 0x3798, 0x784b, 0x0008, -+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x2343, 0x78e4, 0xa084, 0x0007, -+ 0xa086, 0x0001, 0x00c0, 0x3798, 0x78c0, 0xa085, 0x4800, 0x2030, -+ 0x7e5a, 0x781b, 0x00de, 0x0078, 0x231a, 0x784b, 0x0008, 0x6818, -+ 0xa084, 0x8000, 0x0040, 0x3794, 0x681b, 0x0015, 0xa684, 0x4000, -+ 0x0040, 0x3794, 0x681b, 0x0007, 0x1078, 0x36a7, 0x0078, 0x231a, -+ 0x681b, 0x0003, 0x7858, 0xa084, 0x3f00, 0x681e, 0x6833, 0x0000, -+ 0x682f, 0x0000, 0x784b, 0x0008, 0x78e4, 0xa005, 0x00d0, 0x2817, -+ 0xa084, 0x0020, 0x0040, 0x2817, 0x78ec, 0xa084, 0x0003, 0x0040, -+ 0x2817, 0x0018, 0x2817, 0x0078, 0x34c6, 0x6b14, 0x8307, 0xa084, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x4f80, 0x2060, 0x2048, -+ 0x7056, 0x6000, 0x705a, 0x6004, 0x705e, 0x2a60, 0x007c, 0x0079, -+ 0x37c9, 0x37d1, 0x37d2, 0x37d1, 0x37d4, 0x37d1, 0x37d1, 0x37d1, -+ 0x37d9, 0x007c, 0x1078, 0x3217, 0x1078, 0x431b, 0x7038, 0x600a, -+ 0x007c, 0x70a0, 0xa005, 0x0040, 0x37e6, 0x2068, 0x1078, 0x1a80, -+ 0x1078, 0x42d4, 0x1078, 0x42db, 0x70a3, 0x0000, 0x007c, 0x0e7e, -+ 0x2091, 0x8000, 0x2071, 0x4d40, 0x7000, 0xa086, 0x0007, 0x00c0, -+ 0x3804, 0x6114, 0x70ac, 0xa106, 0x00c0, 0x3804, 0x6128, 0x70b0, -+ 0xa106, 0x00c0, 0x3804, 0x2c00, 0x70a2, 0x0e7f, 0x1078, 0x1a8d, -+ 0x1078, 0x380a, 0xa006, 0x007c, 0x2091, 0x8001, 0x0e7f, 0xa085, -+ 0x0001, 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x4d40, 0x0078, 0x20c8, -+ 0x785b, 0x0000, 0x70b7, 0x000e, 0x2009, 0x0100, 0x017e, 0x70a0, -+ 0xa06d, 0x0040, 0x381f, 0x70a3, 0x0000, 0x0078, 0x3825, 0x70bb, -+ 0x0000, 0x1078, 0x1aa9, 0x0040, 0x382b, 0x70b4, 0x6826, 0x1078, -+ 0x3906, 0x0078, 0x381f, 0x017f, 0x157e, 0x0c7e, 0x0d7e, 0x20a9, -+ 0x0008, 0x2061, 0x7110, 0x6000, 0xa105, 0x6002, 0x601c, 0xa06d, -+ 0x0040, 0x3843, 0x6800, 0x601e, 0x1078, 0x18a0, 0x6008, 0x8000, -+ 0x600a, 0x0078, 0x3836, 0x6018, 0xa06d, 0x0040, 0x384d, 0x6800, -+ 0x601a, 0x1078, 0x18a0, 0x0078, 0x3843, 0xace0, 0x0008, 0x0070, -+ 0x3853, 0x0078, 0x3833, 0x709c, 0xa084, 0x8000, 0x0040, 0x385a, -+ 0x1078, 0x3980, 0x0d7f, 0x0c7f, 0x157f, 0x007c, 0x127e, 0x2091, -+ 0x2300, 0x6804, 0xa084, 0x000f, 0x0079, 0x3866, 0x3876, 0x3876, -+ 0x3876, 0x3876, 0x3876, 0x3876, 0x3878, 0x387e, 0x3876, 0x3876, -+ 0x3876, 0x3876, 0x3876, 0x3880, 0x3876, 0x3878, 0x1078, 0x22ac, -+ 0x1078, 0x4172, 0x1078, 0x18a0, 0x0078, 0x3884, 0x6827, 0x000b, -+ 0x1078, 0x4172, 0x1078, 0x3906, 0x127f, 0x007c, 0x127e, 0x2091, -+ 0x2300, 0x0098, 0x38a2, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x38a2, -+ 0x0d7e, 0x1078, 0x42e4, 0x2d00, 0x682e, 0x2009, 0x0004, 0x2001, -+ 0x0000, 0x6827, 0x0084, 0x1078, 0x429c, 0x1078, 0x3906, 0x0d7f, -+ 0x0078, 0x38d4, 0x7948, 0xa185, 0x4000, 0x784a, 0x0098, 0x38ab, -+ 0x794a, 0x0078, 0x3890, 0x7828, 0xa086, 0x1834, 0x00c0, 0x38b4, -+ 0xa185, 0x0004, 0x0078, 0x38bb, 0x7828, 0xa186, 0x1814, 0x00c0, -+ 0x38a8, 0xa185, 0x000c, 0x784a, 0x789b, 0x000e, 0x78ab, 0x0002, -+ 0x7858, 0xa084, 0x00ff, 0xa085, 0x0400, 0x785a, 0x70bc, 0xa080, -+ 0x008d, 0x781a, 0x6827, 0x0002, 0x6827, 0x0084, 0x2009, 0x0004, -+ 0x2001, 0x0000, 0x1078, 0x429c, 0x127f, 0x007c, 0x0d7e, 0x6b14, -+ 0x1078, 0x1b1b, 0x0040, 0x38e3, 0x2068, 0x6827, 0x0002, 0x1078, -+ 0x3906, 0x0078, 0x38d8, 0x0d7f, 0x007c, 0x0d7e, 0x6b14, 0x6c28, -+ 0xa4a4, 0x00ff, 0x1078, 0x1ab9, 0x0040, 0x38f3, 0x2068, 0x6827, -+ 0x0002, 0x1078, 0x3906, 0x0d7f, 0x007c, 0x0d7e, 0x6b14, 0xa39c, -+ 0x00ff, 0x1078, 0x1aec, 0x0040, 0x3904, 0x2068, 0x6827, 0x0002, -+ 0x1078, 0x3906, 0x0078, 0x38f9, 0x0d7f, 0x007c, 0x0c7e, 0x6914, -+ 0x1078, 0x3977, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0006, 0x0040, -+ 0x3921, 0xa186, 0x000d, 0x0040, 0x3940, 0xa186, 0x0017, 0x00c0, -+ 0x391d, 0x1078, 0x18a0, 0x0078, 0x391f, 0x1078, 0x1b90, 0x0c7f, -+ 0x007c, 0x6004, 0x8001, 0x0048, 0x393e, 0x6006, 0x2009, 0x0000, -+ 0xa684, 0x0001, 0x00c0, 0x392e, 0xa18d, 0x8000, 0xa684, 0x0004, -+ 0x0040, 0x3934, 0xa18d, 0x0002, 0x6922, 0x681f, 0x0000, 0x7104, -+ 0x810f, 0x6818, 0xa105, 0x681a, 0x0078, 0x391d, 0x1078, 0x22ac, -+ 0x6018, 0xa005, 0x00c0, 0x394f, 0x6008, 0x8001, 0x0048, 0x394f, -+ 0x600a, 0x601c, 0x6802, 0x2d00, 0x601e, 0x0078, 0x3965, 0xac88, -+ 0x0006, 0x2104, 0xa005, 0x0040, 0x3958, 0x2008, 0x0078, 0x3951, -+ 0x6802, 0x2d0a, 0x6008, 0x8001, 0x0048, 0x391f, 0x600a, 0x6018, -+ 0x2068, 0x6800, 0x601a, 0x0078, 0x3949, 0x157e, 0x137e, 0x147e, -+ 0x0c7e, 0x0d7e, 0x1078, 0x187d, 0x2da0, 0x137f, 0x20a9, 0x0031, -+ 0x53a3, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x0078, 0x391d, 0xa184, -+ 0x001f, 0x8003, 0x8003, 0x8003, 0xa080, 0x7110, 0x2060, 0x007c, -+ 0x2019, 0x4d51, 0x2304, 0xa085, 0x0001, 0x201a, 0x2019, 0x0102, -+ 0x2304, 0xa085, 0x0001, 0x201a, 0x007c, 0x2019, 0x4d51, 0x2304, -+ 0xa084, 0xfffe, 0x201a, 0x2019, 0x0102, 0x2304, 0xa084, 0xfffe, -+ 0x201a, 0x007c, 0x0078, 0x231a, 0x70a3, 0x0000, 0x7003, 0x0000, -+ 0x7043, 0x0001, 0x7037, 0x0000, 0x0018, 0x22d1, 0x1078, 0x1aa9, -+ 0x0040, 0x39cf, 0x2009, 0x4d0f, 0x200b, 0x0000, 0x68bc, 0x2060, -+ 0x6100, 0xa184, 0x0300, 0x0040, 0x39c1, 0x6827, 0x000e, 0xa084, -+ 0x0200, 0x0040, 0x39bd, 0x6827, 0x0017, 0x1078, 0x3906, 0x0078, -+ 0x399c, 0x6820, 0xa084, 0x8000, 0x0040, 0x3a11, 0x7000, 0xa086, -+ 0x0007, 0x10c0, 0x22ac, 0x2d00, 0x70a2, 0x0078, 0x39d6, 0x7040, -+ 0xa086, 0x0001, 0x0040, 0x2353, 0x0078, 0x231a, 0x2031, 0x0000, -+ 0x6920, 0xa184, 0x0002, 0x0040, 0x39df, 0xa6b5, 0x0004, 0xa184, -+ 0x00c0, 0x8003, 0x8003, 0x8007, 0xa080, 0x3a8c, 0x2004, 0xa635, -+ 0x681c, 0xa084, 0x0400, 0x0040, 0x39f7, 0x789b, 0x0018, 0x78ab, -+ 0x0003, 0x789b, 0x0081, 0x78ab, 0x0001, 0xa6b5, 0x1000, 0x681c, -+ 0xa084, 0x8000, 0x0040, 0x3a03, 0xa6b5, 0x0400, 0x789b, 0x000e, -+ 0x6824, 0x8007, 0x78aa, 0xa684, 0x0200, 0x0040, 0x3a0d, 0x6830, -+ 0x78d2, 0x682c, 0x78d6, 0x1078, 0x42cc, 0x7e5a, 0x6eb6, 0x0078, -+ 0x4303, 0x1078, 0x3705, 0x00c0, 0x3a86, 0x702c, 0x8004, 0x0048, -+ 0x3a1f, 0x2019, 0x4a07, 0x1078, 0x2137, 0x702f, 0x0001, 0x2011, -+ 0x0001, 0x2031, 0x1000, 0x789b, 0x0018, 0x6814, 0xa084, 0x001f, -+ 0xa085, 0x0080, 0x78aa, 0x6920, 0xa184, 0x0002, 0x0040, 0x3a38, -+ 0xa6b5, 0x0004, 0x78ab, 0x0020, 0x6828, 0x78aa, 0xa290, 0x0002, -+ 0x681c, 0xa084, 0x8000, 0x0040, 0x3a46, 0xa6b5, 0x0400, 0x789b, -+ 0x000e, 0x6824, 0x8007, 0x78aa, 0x0078, 0x3a54, 0x6820, 0xa084, -+ 0x8000, 0x00c0, 0x3a54, 0xa6b5, 0x0800, 0x681c, 0xa084, 0x0100, -+ 0x0040, 0x3a54, 0xa6b5, 0x4000, 0x6820, 0xa084, 0x00c0, 0x8003, -+ 0x8003, 0x8007, 0xa080, 0x3a8c, 0x2004, 0xa635, 0x789b, 0x007e, -+ 0x7eae, 0x6eb6, 0x6814, 0x8007, 0x78aa, 0x7aaa, 0x7830, 0xa084, -+ 0x00c0, 0x00c0, 0x3a86, 0x0018, 0x3a86, 0x70bc, 0xa080, 0x00dd, -+ 0x781a, 0x1078, 0x371d, 0xa684, 0x0200, 0x0040, 0x3a7d, 0x6830, -+ 0x78d2, 0x682c, 0x78d6, 0x1078, 0x42cc, 0x2d00, 0x70a2, 0x7003, -+ 0x0007, 0xad80, 0x000f, 0x7036, 0x0078, 0x231a, 0x1078, 0x1a80, -+ 0x1078, 0x371d, 0x0078, 0x231a, 0x0000, 0x0300, 0x0200, 0x0000, -+ 0x1078, 0x22ac, 0x2300, 0x0079, 0x3a95, 0x3a98, 0x3a98, 0x3a9a, -+ 0x1078, 0x22ac, 0x1078, 0x42db, 0x6924, 0xa184, 0x00ff, 0xa086, -+ 0x000a, 0x0040, 0x3aac, 0xa184, 0xff00, 0xa085, 0x000a, 0x6826, -+ 0x1078, 0x1a80, 0x0078, 0x399c, 0x2001, 0x000a, 0x1078, 0x4254, -+ 0x0078, 0x399c, 0xa282, 0x0005, 0x0050, 0x3ab8, 0x1078, 0x22ac, -+ 0x7000, 0xa084, 0x0007, 0x10c0, 0x37c7, 0x1078, 0x187d, 0x6807, -+ 0x0106, 0x680b, 0x0000, 0x689f, 0x0000, 0x6827, 0x0000, 0x1078, -+ 0x3e02, 0x2d00, 0x70a2, 0x7003, 0x0007, 0x6014, 0x68ba, 0xad80, -+ 0x002e, 0x7036, 0x6824, 0xa084, 0x0080, 0x0040, 0x3adb, 0x1078, -+ 0x3ea9, 0x0078, 0x231a, 0x2300, 0x0079, 0x3ade, 0x3ae1, 0x3b59, -+ 0x3b78, 0x2200, 0x0079, 0x3ae4, 0x3ae9, 0x3af9, 0x3b1f, 0x3b29, -+ 0x3b4a, 0x2029, 0x0001, 0xa026, 0x2011, 0x0000, 0x1078, 0x3f97, -+ 0x0079, 0x3af2, 0x3af7, 0x231a, 0x399c, 0x3af7, 0x3af7, 0x1078, -+ 0x22ac, 0x7990, 0xa18c, 0x0007, 0x00c0, 0x3b00, 0x2009, 0x0008, -+ 0x2011, 0x0001, 0xa684, 0x0004, 0x0040, 0x3b08, 0x2011, 0x0003, -+ 0x2220, 0xa12a, 0x2011, 0x0001, 0x1078, 0x3f97, 0x0079, 0x3b10, -+ 0x3b15, 0x231a, 0x399c, 0x3b1d, 0x3b17, 0x0078, 0x4309, 0x70ab, -+ 0x3b1b, 0x0078, 0x231a, 0x0078, 0x3b15, 0x1078, 0x22ac, 0xa684, -+ 0x0010, 0x0040, 0x3b27, 0x1078, 0x3e79, 0x0078, 0x231a, 0x0078, -+ 0x3eda, 0x6000, 0xa084, 0x0002, 0x0040, 0x3b44, 0x70bc, 0xa080, -+ 0x00c4, 0x781a, 0x0d7e, 0x1078, 0x42e4, 0x2d00, 0x682e, 0x6827, -+ 0x0000, 0x1078, 0x3906, 0x0d7f, 0x1078, 0x18a0, 0x7003, 0x0000, -+ 0x7037, 0x0000, 0x0078, 0x399c, 0xa684, 0x0004, 0x00c0, 0x3b4a, -+ 0x0078, 0x4309, 0x6000, 0xa084, 0x0004, 0x00c0, 0x3b57, 0x70ab, -+ 0x3b57, 0x2001, 0x0007, 0x1078, 0x424c, 0x0078, 0x430f, 0x0078, -+ 0x4309, 0x2200, 0x0079, 0x3b5c, 0x3b61, 0x3b61, 0x3b61, 0x3b63, -+ 0x3b61, 0x1078, 0x22ac, 0x70a7, 0x3b67, 0x0078, 0x4315, 0x2011, -+ 0x0018, 0x1078, 0x3f91, 0x0079, 0x3b6d, 0x3b72, 0x231a, 0x399c, -+ 0x3b74, 0x3b76, 0x1078, 0x22ac, 0x1078, 0x22ac, 0x1078, 0x22ac, -+ 0x2200, 0x0079, 0x3b7b, 0x3b80, 0x3b80, 0x3b82, 0x3b80, 0x3b80, -+ 0x1078, 0x22ac, 0x70ab, 0x3b8a, 0x2001, 0x0003, 0x1078, 0x424c, -+ 0x0078, 0x430f, 0x0078, 0x4309, 0xa282, 0x0003, 0x0050, 0x3b92, -+ 0x1078, 0x22ac, 0xa684, 0x0008, 0x0040, 0x3b98, 0x1078, 0x3e57, -+ 0x7003, 0x0007, 0x2300, 0x0079, 0x3b9d, 0x3ba0, 0x3bcb, 0x3bd3, -+ 0x2200, 0x0079, 0x3ba3, 0x3ba8, 0x3ba6, 0x3bc1, 0x1078, 0x22ac, -+ 0x7990, 0xa1ac, 0x0007, 0xa026, 0x2011, 0x0001, 0x1078, 0x3f97, -+ 0x0079, 0x3bb2, 0x3bb7, 0x231a, 0x399c, 0x3bbf, 0x3bb9, 0x0078, -+ 0x4309, 0x70ab, 0x3bbd, 0x0078, 0x231a, 0x0078, 0x3bb7, 0x1078, -+ 0x22ac, 0xa684, 0x0010, 0x0040, 0x3bc9, 0x1078, 0x3e79, 0x0078, -+ 0x231a, 0x0078, 0x3eda, 0x2200, 0x0079, 0x3bce, 0x3bd1, 0x3bd1, -+ 0x3bd1, 0x1078, 0x22ac, 0x2200, 0x0079, 0x3bd6, 0x3bd9, 0x3bd9, -+ 0x3bdb, 0x1078, 0x22ac, 0x70ab, 0x3be3, 0x2001, 0x0003, 0x1078, -+ 0x424c, 0x0078, 0x430f, 0x0078, 0x4309, 0x2300, 0x0079, 0x3be8, -+ 0x3bed, 0x3bef, 0x3beb, 0x1078, 0x22ac, 0x70a4, 0x007a, 0x70a4, -+ 0x007a, 0xa282, 0x0002, 0x0050, 0x3bf7, 0x1078, 0x22ac, 0xa684, -+ 0x0200, 0x0040, 0x3c01, 0x1078, 0x42d4, 0x1078, 0x3f79, 0x1078, -+ 0x42db, 0x2300, 0x0079, 0x3c04, 0x3c07, 0x3c1d, 0x3c77, 0xa286, -+ 0x0001, 0x0040, 0x3c0d, 0x1078, 0x22ac, 0xa684, 0x0200, 0x0040, -+ 0x3c15, 0x1078, 0x42d4, 0x1078, 0x42db, 0x2001, 0x0001, 0x1078, -+ 0x4254, 0x7003, 0x0000, 0x0078, 0x399c, 0x2200, 0x0079, 0x3c20, -+ 0x3c22, 0x3c47, 0x70a7, 0x3c26, 0x0078, 0x4315, 0x2011, 0x000d, -+ 0x1078, 0x3f91, 0x0079, 0x3c2c, 0x3c31, 0x231a, 0x399c, 0x3c39, -+ 0x3c41, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x0078, -+ 0x4303, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x0078, -+ 0x4303, 0x70ab, 0x3c45, 0x0078, 0x231a, 0x0078, 0x3c31, 0x70a7, -+ 0x3c4b, 0x0078, 0x4315, 0x2011, 0x0012, 0x1078, 0x3f91, 0x0079, -+ 0x3c51, 0x3c57, 0x231a, 0x399c, 0x3c63, 0x3c6b, 0x3c71, 0xa6b4, -+ 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x70bc, 0xa080, 0x00a1, -+ 0x781a, 0x0078, 0x231a, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, -+ 0x7e5a, 0x0078, 0x4303, 0x70ab, 0x3c6f, 0x0078, 0x231a, 0x0078, -+ 0x3c57, 0x70ab, 0x3c75, 0x0078, 0x231a, 0x0078, 0x3c63, 0xa286, -+ 0x0001, 0x0040, 0x3c7d, 0x1078, 0x22ac, 0x70a7, 0x3c81, 0x0078, -+ 0x4315, 0x2011, 0x0015, 0x1078, 0x3f91, 0x0079, 0x3c87, 0x3c8c, -+ 0x231a, 0x399c, 0x3c94, 0x3c9c, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, -+ 0x6eb6, 0x7e5a, 0x0078, 0x4303, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, -+ 0x6eb6, 0x7e5a, 0x0078, 0x4303, 0x70ab, 0x3ca0, 0x0078, 0x231a, -+ 0x0078, 0x3c8c, 0xa282, 0x0002, 0x0050, 0x3ca8, 0x1078, 0x22ac, -+ 0x2300, 0x0079, 0x3cab, 0x3cae, 0x3cd7, 0x3d26, 0xa286, 0x0001, -+ 0x0040, 0x3cb4, 0x1078, 0x22ac, 0x6804, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x00c0, 0x3cc1, 0x1078, 0x3906, 0x7003, 0x0000, 0x0078, -+ 0x399c, 0x6837, 0x0000, 0x683b, 0x0000, 0xa684, 0x0200, 0x0040, -+ 0x3ccf, 0x1078, 0x42d4, 0x1078, 0x3f79, 0x1078, 0x42db, 0x2001, -+ 0x0001, 0x1078, 0x4254, 0x7003, 0x0000, 0x0078, 0x399c, 0x2200, -+ 0x0079, 0x3cda, 0x3cdc, 0x3d01, 0x70a7, 0x3ce0, 0x0078, 0x4315, -+ 0x2011, 0x000d, 0x1078, 0x3f91, 0x0079, 0x3ce6, 0x3ceb, 0x231a, -+ 0x399c, 0x3cf3, 0x3cfb, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, -+ 0x7e5a, 0x0078, 0x4303, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, -+ 0x7e5a, 0x0078, 0x4303, 0x70ab, 0x3cff, 0x0078, 0x231a, 0x0078, -+ 0x3ceb, 0x70a7, 0x3d05, 0x0078, 0x4315, 0x2011, 0x0005, 0x1078, -+ 0x3f91, 0x0079, 0x3d0b, 0x3d10, 0x231a, 0x399c, 0x3d18, 0x3d20, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4303, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4303, -+ 0x70ab, 0x3d24, 0x0078, 0x231a, 0x0078, 0x3d10, 0xa286, 0x0001, -+ 0x0040, 0x3d2c, 0x1078, 0x22ac, 0x70a7, 0x3d30, 0x0078, 0x4315, -+ 0x2011, 0x0006, 0x1078, 0x3f91, 0x0079, 0x3d36, 0x3d3b, 0x231a, -+ 0x399c, 0x3d41, 0x3d43, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, -+ 0x4303, 0x1078, 0x22ac, 0x70ab, 0x3d47, 0x0078, 0x231a, 0x0078, -+ 0x3d3b, 0x2300, 0x0079, 0x3d4c, 0x3d51, 0x3d4f, 0x3d4f, 0x1078, -+ 0x22ac, 0x1078, 0x22ac, 0x2300, 0x71a8, 0xa005, 0x017a, 0xa282, -+ 0x0002, 0x0050, 0x3d5d, 0x1078, 0x22ac, 0x2300, 0x0079, 0x3d60, -+ 0x3d63, 0x3d76, 0x3d94, 0x82ff, 0x00c0, 0x3d68, 0x1078, 0x22ac, -+ 0xa684, 0x0200, 0x0040, 0x3d70, 0x1078, 0x42d4, 0x1078, 0x42db, -+ 0x2001, 0x0001, 0x1078, 0x4254, 0x0078, 0x231a, 0x82ff, 0x0040, -+ 0x3d7b, 0x1078, 0x22ac, 0x70a7, 0x3d7f, 0x0078, 0x4315, 0x2011, -+ 0x0018, 0x1078, 0x3f91, 0x0079, 0x3d85, 0x3d8a, 0x231a, 0x399c, -+ 0x3d8c, 0x3d8e, 0x0078, 0x4303, 0x0078, 0x4303, 0x70ab, 0x3d92, -+ 0x0078, 0x231a, 0x0078, 0x3d8a, 0x2200, 0x0079, 0x3d97, 0x3d99, -+ 0x3db2, 0x70a7, 0x3d9d, 0x0078, 0x4315, 0x2011, 0x0018, 0x1078, -+ 0x3f91, 0x0079, 0x3da3, 0x3da8, 0x231a, 0x399c, 0x3daa, 0x3dac, -+ 0x0078, 0x4303, 0x0078, 0x4303, 0x70ab, 0x3db0, 0x0078, 0x231a, -+ 0x0078, 0x3da8, 0xa484, 0x8000, 0x00c0, 0x3df0, 0xa684, 0x0100, -+ 0x0040, 0x3dc6, 0x1078, 0x42d4, 0x1078, 0x3f79, 0x1078, 0x42db, -+ 0x7848, 0xa085, 0x000c, 0x784a, 0x0078, 0x3dca, 0x78d8, 0x78d2, -+ 0x78dc, 0x78d6, 0xa6b4, 0xefff, 0x7e5a, 0x70a7, 0x3dd1, 0x0078, -+ 0x4315, 0x2011, 0x000d, 0x1078, 0x3f91, 0x0079, 0x3dd7, 0x3ddc, -+ 0x231a, 0x399c, 0x3ddc, 0x3dea, 0xa684, 0x0100, 0x0040, 0x3de8, -+ 0x1078, 0x4291, 0x6830, 0x78d2, 0x682c, 0x78d6, 0x1078, 0x42cc, -+ 0x0078, 0x4303, 0x70ab, 0x3dee, 0x0078, 0x231a, 0x0078, 0x3ddc, -+ 0x1078, 0x42db, 0x70ab, 0x3dfa, 0x2001, 0x0003, 0x1078, 0x424c, -+ 0x0078, 0x430f, 0x1078, 0x42cc, 0x6830, 0x78d2, 0x682c, 0x78d6, -+ 0x0078, 0x4303, 0x681b, 0x0000, 0xa684, 0x0008, 0x0040, 0x3e20, -+ 0x157e, 0x137e, 0x147e, 0x7890, 0x8004, 0x8004, 0x8004, 0x8004, -+ 0xa084, 0x000f, 0x681a, 0x80ac, 0x789b, 0x0000, 0xaf80, 0x002c, -+ 0x2098, 0xad80, 0x000b, 0x20a0, 0x53a5, 0x147f, 0x137f, 0x157f, -+ 0xa6c4, 0x0f00, 0xa684, 0x0002, 0x00c0, 0x3e2d, 0x692c, 0x810f, -+ 0x810d, 0x810d, 0x810d, 0x0078, 0x3e3a, 0x789b, 0x0010, 0x79ac, -+ 0x0078, 0x3e3a, 0x017e, 0x2009, 0x0005, 0x2001, 0x3d00, 0x1078, -+ 0x429c, 0x017f, 0xa184, 0x001f, 0xa805, 0x6816, 0x1078, 0x3977, -+ 0x68be, 0xa684, 0x0004, 0x0040, 0x3e4b, 0xa18c, 0xff00, 0x78a8, -+ 0xa084, 0x00ff, 0xa105, 0x682a, 0xa6b4, 0x00ff, 0x6000, 0xa084, -+ 0x0008, 0x0040, 0x3e55, 0xa6b5, 0x4000, 0x6eb6, 0x007c, 0x157e, -+ 0x137e, 0x147e, 0x6918, 0x7890, 0x8004, 0x8004, 0x8004, 0x8004, -+ 0xa084, 0x000f, 0x007e, 0xa100, 0x681a, 0x007f, 0x8004, 0x0040, -+ 0x3e75, 0x20a8, 0x8104, 0xa080, 0x000b, 0xad00, 0x20a0, 0x789b, -+ 0x0000, 0xaf80, 0x002c, 0x2098, 0x53a5, 0x147f, 0x137f, 0x157f, -+ 0x007c, 0x682c, 0xa084, 0x2000, 0x00c0, 0x3e81, 0x620c, 0x0078, -+ 0x3e82, 0x6210, 0x6b18, 0x2300, 0xa202, 0x0040, 0x3ea0, 0x2018, -+ 0xa382, 0x000e, 0x0048, 0x3e92, 0x0040, 0x3e92, 0x2019, 0x000e, -+ 0x0078, 0x3e96, 0x7858, 0xa084, 0xffef, 0x785a, 0x783b, 0x1b02, -+ 0x7893, 0x0000, 0x7ba2, 0x70bc, 0xa080, 0x008a, 0x781a, 0x007c, -+ 0x7858, 0xa084, 0xffef, 0x785a, 0x783b, 0x1b02, 0x7893, 0x0000, -+ 0x007c, 0x6807, 0x0117, 0x6914, 0x1078, 0x3977, 0x6100, 0x8104, -+ 0x00c8, 0x3ec6, 0x601c, 0xa005, 0x0040, 0x3eba, 0x2001, 0x0800, -+ 0x0078, 0x3ec8, 0x0d7e, 0x6824, 0x007e, 0x1078, 0x42e4, 0x007f, -+ 0x6826, 0x2d00, 0x682e, 0x1078, 0x3906, 0x0d7f, 0x2001, 0x0200, -+ 0x6826, 0x8007, 0x789b, 0x000e, 0x78aa, 0x681c, 0xa085, 0x8000, -+ 0x681e, 0x2031, 0x0400, 0x6eb6, 0x7e5a, 0x71bc, 0xa188, 0x008d, -+ 0x791a, 0x007c, 0x6914, 0x1078, 0x3977, 0x6100, 0x8104, 0x00c8, -+ 0x3f27, 0xa184, 0x0300, 0x0040, 0x3ee9, 0x6807, 0x0117, 0x0078, -+ 0x3f07, 0x6004, 0xa005, 0x00c0, 0x3f10, 0x6807, 0x0117, 0x601c, -+ 0xa005, 0x00c0, 0x3efd, 0x0d7e, 0x1078, 0x42e4, 0x6827, 0x0034, -+ 0x2d00, 0x682e, 0x1078, 0x3906, 0x0d7f, 0xa684, 0x0004, 0x0040, -+ 0x3f07, 0x2031, 0x0400, 0x2001, 0x2800, 0x0078, 0x3f0b, 0x2031, -+ 0x0400, 0x2001, 0x0800, 0x71bc, 0xa188, 0x008d, 0x0078, 0x3f56, -+ 0x6018, 0xa005, 0x00c0, 0x3efd, 0x601c, 0xa005, 0x00c0, 0x3efd, -+ 0x689f, 0x0000, 0x6827, 0x003d, 0xa684, 0x0001, 0x0040, 0x3f64, -+ 0xa6b5, 0x0800, 0x71bc, 0xa188, 0x00a5, 0x0078, 0x3f5f, 0x6807, -+ 0x0117, 0x2031, 0x0400, 0x692c, 0x810f, 0xa18c, 0x00ff, 0xa186, -+ 0x0012, 0x00c0, 0x3f39, 0x2001, 0x3f6f, 0x2009, 0x0001, 0x0078, -+ 0x3f4a, 0xa186, 0x0003, 0x00c0, 0x3f43, 0x2001, 0x3f70, 0x2009, -+ 0x0012, 0x0078, 0x3f4a, 0x2001, 0x0200, 0x71bc, 0xa188, 0x008d, -+ 0x0078, 0x3f56, 0x1078, 0x42b7, 0x78a3, 0x0000, 0x6820, 0xa085, -+ 0x0040, 0x6822, 0x71bc, 0xa188, 0x00da, 0xa006, 0x6826, 0x8007, -+ 0x789b, 0x000e, 0x78aa, 0x681c, 0xa085, 0x8000, 0x681e, 0x6eb6, -+ 0x7e5a, 0x791a, 0x0078, 0x231a, 0x6eb6, 0x1078, 0x3906, 0x6814, -+ 0x70ae, 0x6828, 0x70b2, 0x7003, 0x0007, 0x0078, 0x231a, 0x0023, -+ 0x0070, 0x0005, 0x0000, 0x0a00, 0x0000, 0x0000, 0x0025, 0x0000, -+ 0x0000, 0x6837, 0x0000, 0x683b, 0x0000, 0xa684, 0x0200, 0x0040, -+ 0x3f90, 0x78b8, 0xa08c, 0x001f, 0xa084, 0x8000, 0x0040, 0x3f89, -+ 0x8108, 0x78d8, 0xa100, 0x683a, 0x78dc, 0xa081, 0x0000, 0x6836, -+ 0x007c, 0x7990, 0x810f, 0xa5ac, 0x0007, 0x2021, 0x0000, 0xa480, -+ 0x0010, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa184, 0x0080, 0x00c0, -+ 0x3fbf, 0xa182, 0x0020, 0x00c8, 0x3fd9, 0xa182, 0x0012, 0x00c8, -+ 0x4241, 0x2100, 0x1079, 0x3fad, 0x007c, 0x4241, 0x418a, 0x4241, -+ 0x4241, 0x3fe6, 0x3fe9, 0x4023, 0x4063, 0x4093, 0x4096, 0x4241, -+ 0x4241, 0x4045, 0x40b8, 0x40f3, 0x4241, 0x4241, 0x411b, 0xa18c, -+ 0x001f, 0x6814, 0xa084, 0x001f, 0xa106, 0x0040, 0x3fd6, 0x70bc, -+ 0xa080, 0x00c4, 0x781a, 0x2001, 0x0014, 0x1078, 0x4254, 0x1078, -+ 0x42db, 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x2001, 0x0000, -+ 0x007c, 0xa182, 0x0024, 0x00c8, 0x4241, 0xa184, 0x0003, 0x1079, -+ 0x3fad, 0x007c, 0x4241, 0x4241, 0x4241, 0x4241, 0x1078, 0x4241, -+ 0x007c, 0x2200, 0x0079, 0x3fec, 0x411e, 0x411e, 0x4010, 0x4010, -+ 0x4010, 0x4010, 0x4010, 0x4010, 0x4010, 0x4010, 0x400e, 0x4010, -+ 0x4005, 0x4010, 0x4010, 0x4010, 0x4010, 0x4010, 0x4018, 0x401b, -+ 0x411e, 0x401b, 0x4010, 0x4010, 0x4010, 0x0c7e, 0x077e, 0x6f14, -+ 0x1078, 0x34f9, 0x077f, 0x0c7f, 0x0078, 0x4010, 0x1078, 0x41df, -+ 0x6827, 0x02b3, 0x2009, 0x000b, 0x2001, 0x4800, 0x0078, 0x414e, -+ 0x1078, 0x4236, 0x007c, 0x6827, 0x0293, 0x2009, 0x000b, 0x2001, -+ 0x4800, 0x0078, 0x413a, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x00c0, 0x402d, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078, -+ 0x42e4, 0x6827, 0x0036, 0x810f, 0x6932, 0x2d00, 0x682e, 0x0d7e, -+ 0x1078, 0x38d6, 0x1078, 0x4172, 0x2b68, 0x1078, 0x3906, 0x0d7f, -+ 0x1078, 0x3906, 0x2001, 0x0002, 0x007c, 0x1078, 0x4172, 0x6904, -+ 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4056, 0xa186, 0x000f, -+ 0x0040, 0x4056, 0x1078, 0x18a0, 0x70a3, 0x0000, 0x2009, 0x4d38, -+ 0x200b, 0x0006, 0x70b7, 0x0017, 0x2009, 0x0200, 0x1078, 0x3816, -+ 0x2001, 0x0001, 0x007c, 0x2200, 0x0079, 0x4066, 0x411e, 0x414b, -+ 0x414b, 0x414b, 0x4085, 0x415b, 0x415b, 0x415b, 0x415b, 0x415e, -+ 0x415e, 0x4163, 0x4163, 0x407f, 0x407f, 0x414b, 0x414b, 0x415b, -+ 0x414b, 0x408b, 0x411e, 0x408b, 0x408b, 0x415b, 0x408b, 0x2009, -+ 0x000b, 0x2001, 0x4300, 0x0078, 0x416d, 0x2009, 0x000b, 0x2001, -+ 0x4300, 0x0078, 0x414e, 0x6827, 0x0293, 0x2009, 0x000b, 0x2001, -+ 0x4300, 0x0078, 0x413a, 0x2001, 0x0000, 0x007c, 0x2200, 0x0079, -+ 0x4099, 0x411e, 0x40b2, 0x40b2, 0x40b2, 0x40b2, 0x415b, 0x415b, -+ 0x415b, 0x415b, 0x415b, 0x415b, 0x415b, 0x415b, 0x40b2, 0x40b2, -+ 0x40b2, 0x40b2, 0x415b, 0x40b2, 0x40b2, 0x415b, 0x415b, 0x415b, -+ 0x415b, 0x411e, 0x2009, 0x000b, 0x2001, 0x4300, 0x0078, 0x413a, -+ 0xa684, 0x0004, 0x00c0, 0x40cc, 0x6804, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x00c0, 0x4241, 0x1078, 0x4172, 0x6807, 0x0117, 0x1078, -+ 0x3906, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084, 0x0004, 0x0040, -+ 0x4241, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, -+ 0x40db, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078, 0x42e4, 0x6827, -+ 0x0036, 0x810f, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x38e5, -+ 0x1078, 0x4172, 0x2b68, 0x1078, 0x3906, 0x0d7f, 0x1078, 0x3906, -+ 0x2001, 0x0002, 0x007c, 0x6000, 0xa084, 0x0004, 0x0040, 0x4241, -+ 0x2d58, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0006, 0x00c0, 0x4102, -+ 0x6807, 0x0117, 0x6827, 0x0002, 0x2d58, 0x1078, 0x42e4, 0x6827, -+ 0x0036, 0x810f, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x38f5, -+ 0x1078, 0x4172, 0x2b68, 0x1078, 0x3906, 0x0d7f, 0x1078, 0x3906, -+ 0x2001, 0x0002, 0x007c, 0x1078, 0x4241, 0x007c, 0x70bc, 0xa080, -+ 0x00c4, 0x781a, 0x2001, 0x0001, 0x1078, 0x4254, 0x1078, 0x42db, -+ 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078, 0x429c, 0x1078, -+ 0x42d4, 0x1078, 0x3f79, 0x1078, 0x3ea9, 0x1078, 0x42db, 0x2001, -+ 0x0001, 0x007c, 0x1078, 0x429c, 0x1078, 0x42d4, 0x1078, 0x3f79, -+ 0x70bc, 0xa080, 0x00c4, 0x781a, 0x1078, 0x42db, 0x7003, 0x0000, -+ 0x2001, 0x0002, 0x007c, 0x1078, 0x4241, 0x007c, 0x1078, 0x429c, -+ 0x1078, 0x42d4, 0x1078, 0x3f79, 0x1078, 0x3ea9, 0x1078, 0x42db, -+ 0x2001, 0x0001, 0x007c, 0x2001, 0x0003, 0x007c, 0x1078, 0x41df, -+ 0x2001, 0x0000, 0x007c, 0x0c7e, 0x077e, 0x6f14, 0x1078, 0x34f9, -+ 0x077f, 0x0c7f, 0x2001, 0x0000, 0x007c, 0x1078, 0x429c, 0x1078, -+ 0x4241, 0x007c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, -+ 0x417d, 0xa186, 0x000f, 0x00c0, 0x4181, 0x1078, 0x42d4, 0x1078, -+ 0x3f79, 0x70bc, 0xa080, 0x00c4, 0x781a, 0x1078, 0x42db, 0x7003, -+ 0x0000, 0x007c, 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, -+ 0xa08a, 0x0004, 0x00c8, 0x4241, 0x1079, 0x4197, 0x007c, 0x4241, -+ 0x419b, 0x4241, 0x41ed, 0xa282, 0x0003, 0x0040, 0x41a2, 0x1078, -+ 0x4241, 0x007c, 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, 0x00ff, -+ 0xa482, 0x000c, 0x0048, 0x41b0, 0x0040, 0x41b0, 0x2021, 0x000c, -+ 0x701c, 0xa502, 0x00c8, 0x41b5, 0x751c, 0x1078, 0x4227, 0x852b, -+ 0x852b, 0x1078, 0x3577, 0x0040, 0x41c1, 0x1078, 0x41d1, 0x0078, -+ 0x41c5, 0x1078, 0x4223, 0x1078, 0x41df, 0xa6b5, 0x1000, 0x789b, -+ 0x007e, 0x7ea6, 0x70bc, 0xa080, 0x00b0, 0x781a, 0x2001, 0x0004, -+ 0x007c, 0x0c7e, 0x6914, 0x810f, 0xa18c, 0x000f, 0x810b, 0x810b, -+ 0x810b, 0xa1e0, 0x4f80, 0x1078, 0x338b, 0x0c7f, 0x007c, 0x0c7e, -+ 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0, -+ 0x4f80, 0x1078, 0x33b2, 0x0c7f, 0x007c, 0xa282, 0x0002, 0x00c0, -+ 0x4241, 0x7aa8, 0xa294, 0x00ff, 0xa284, 0xfffe, 0x0040, 0x41fa, -+ 0x2011, 0x0001, 0x1078, 0x4215, 0x1078, 0x4207, 0x1078, 0x41df, -+ 0x70bc, 0xa080, 0x00b0, 0x781a, 0x2001, 0x0004, 0x007c, 0x0c7e, -+ 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0, -+ 0x4f80, 0x1078, 0x3457, 0x0c7f, 0x007c, 0x789b, 0x0018, 0x78ab, -+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0081, -+ 0x78ab, 0x0004, 0x007c, 0x2021, 0x0000, 0x2029, 0x0032, 0x789b, -+ 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, -+ 0x7caa, 0x789b, 0x0081, 0x78ab, 0x0005, 0x007c, 0x2001, 0x0003, -+ 0x1078, 0x424c, 0x70bc, 0xa080, 0x00b0, 0x781a, 0x2001, 0x0005, -+ 0x007c, 0x2001, 0x0007, 0x1078, 0x424c, 0x70bc, 0xa080, 0x00b0, -+ 0x781a, 0x2001, 0x0004, 0x007c, 0x789b, 0x0018, 0x78aa, 0x789b, -+ 0x0081, 0x78ab, 0x0001, 0x007c, 0x6904, 0xa18c, 0x00ff, 0xa196, -+ 0x0007, 0x0040, 0x4262, 0xa196, 0x000f, 0x0040, 0x4262, 0x1078, -+ 0x18a0, 0x007c, 0x6924, 0xa194, 0x003f, 0x00c0, 0x426b, 0xa18c, -+ 0xffc0, 0xa105, 0x6826, 0x1078, 0x3906, 0x6920, 0xa184, 0x0100, -+ 0x0040, 0x4290, 0x6824, 0xa084, 0x0001, 0x0040, 0x4290, 0x6b14, -+ 0xa184, 0x0002, 0x00c0, 0x4280, 0x1078, 0x1b1b, 0x0078, 0x4285, -+ 0x6c28, 0xa4a4, 0x00ff, 0x1078, 0x1ab9, 0x0d7e, 0x2068, 0x1078, -+ 0x18a0, 0x0d7f, 0x6914, 0x1078, 0x3977, 0x6204, 0x8210, 0x6206, -+ 0x007c, 0x6930, 0x6838, 0x6832, 0xa112, 0x692c, 0x6834, 0x682e, -+ 0xa11b, 0xa200, 0xa301, 0x007c, 0x0c7e, 0xade0, 0x0018, 0x6003, -+ 0x7000, 0x810f, 0x6106, 0x600b, 0x0000, 0x600f, 0x000a, 0x6013, -+ 0x0000, 0x6017, 0x0000, 0x8007, 0x601a, 0x601f, 0x0000, 0x6023, -+ 0x0000, 0x0c7f, 0x6824, 0xa085, 0x0080, 0x6826, 0x007c, 0x157e, -+ 0x137e, 0x147e, 0x2098, 0xaf80, 0x002d, 0x20a0, 0x81ac, 0x0040, -+ 0x42c2, 0x53a6, 0xa184, 0x0001, 0x0040, 0x42c8, 0x3304, 0x78be, -+ 0x147f, 0x137f, 0x157f, 0x007c, 0x70b8, 0xa005, 0x10c0, 0x22ac, -+ 0x70bb, 0x8000, 0x0078, 0x45ed, 0x71b8, 0x81ff, 0x0040, 0x42da, -+ 0x1078, 0x46d8, 0x007c, 0x71b8, 0x81ff, 0x0040, 0x42e3, 0x70bb, -+ 0x0000, 0x1078, 0x431b, 0x007c, 0x0c7e, 0x0d7e, 0x1078, 0x187d, -+ 0x0c7f, 0x157e, 0x137e, 0x147e, 0x2da0, 0x2c98, 0x20a9, 0x0031, -+ 0x53a3, 0x147f, 0x137f, 0x157f, 0x6807, 0x010d, 0x680b, 0x0000, -+ 0x7004, 0x8007, 0x681a, 0x681f, 0x0000, 0x6823, 0x0000, 0x689f, -+ 0x0000, 0x0c7f, 0x007c, 0x70bc, 0xa080, 0x008d, 0x781a, 0x0078, -+ 0x231a, 0x70bc, 0xa080, 0x007d, 0x781a, 0x0078, 0x231a, 0x70bc, -+ 0xa080, 0x00b0, 0x781a, 0x0078, 0x231a, 0x70bc, 0xa080, 0x00ba, -+ 0x781a, 0x0078, 0x231a, 0x127e, 0x2091, 0x2200, 0x2049, 0x431b, -+ 0x7000, 0x7204, 0xa205, 0x720c, 0xa215, 0x7008, 0xa084, 0xfffd, -+ 0xa205, 0x0040, 0x432d, 0x0078, 0x4332, 0x7003, 0x0000, 0x127f, -+ 0x2000, 0x007c, 0x7000, 0xa084, 0x0001, 0x00c0, 0x4360, 0x7108, -+ 0x8104, 0x00c8, 0x433f, 0x1078, 0x4462, 0x0078, 0x4337, 0x700c, -+ 0xa08c, 0x00ff, 0x0040, 0x4360, 0x7004, 0x8004, 0x00c8, 0x4357, -+ 0x7014, 0xa005, 0x00c0, 0x4353, 0x7010, 0xa005, 0x0040, 0x4357, -+ 0xa102, 0x00c8, 0x4337, 0x7007, 0x0010, 0x0078, 0x4360, 0x8aff, -+ 0x0040, 0x4360, 0x1078, 0x46ba, 0x00c0, 0x435a, 0x0040, 0x4337, -+ 0x1078, 0x43eb, 0x7003, 0x0000, 0x127f, 0x2000, 0x007c, 0x017e, -+ 0x6104, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4373, 0xa18e, -+ 0x000f, 0x00c0, 0x4376, 0x6040, 0x0078, 0x4377, 0x6428, 0x017f, -+ 0x84ff, 0x0040, 0x43a1, 0x2c70, 0x7004, 0xa0bc, 0x000f, 0xa7b8, -+ 0x43b1, 0x273c, 0x87fb, 0x00c0, 0x438f, 0x0048, 0x4389, 0x1078, -+ 0x22ac, 0x609c, 0xa075, 0x0040, 0x43a1, 0x0078, 0x437c, 0x2704, -+ 0xae68, 0x680c, 0xa630, 0x6808, 0xa529, 0x8421, 0x0040, 0x43a1, -+ 0x8738, 0x2704, 0xa005, 0x00c0, 0x4390, 0x709c, 0xa075, 0x00c0, -+ 0x437c, 0x007c, 0x0000, 0x0005, 0x0009, 0x000d, 0x0011, 0x0015, -+ 0x0019, 0x001d, 0x0000, 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, -+ 0x0000, 0x0000, 0x43a6, 0x43a3, 0x0000, 0x0000, 0x8000, 0x0000, -+ 0x43a6, 0x0000, 0x43ae, 0x43ab, 0x0000, 0x0000, 0x0000, 0x0000, -+ 0x43ae, 0x0000, 0x43a9, 0x43a9, 0x0000, 0x0000, 0x8000, 0x0000, -+ 0x43a9, 0x0000, 0x43af, 0x43af, 0x0000, 0x0000, 0x0000, 0x0000, -+ 0x43af, 0x127e, 0x2091, 0x2200, 0x2079, 0x4d00, 0x2071, 0x0010, -+ 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x2071, 0x0020, -+ 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x2049, 0x0000, -+ 0x127f, 0x2000, 0x007c, 0x2049, 0x43eb, 0x2019, 0x0000, 0x7004, -+ 0x8004, 0x00c8, 0x443e, 0x7007, 0x0012, 0x7108, 0x7008, 0xa106, -+ 0x00c0, 0x43f5, 0xa184, 0x000c, 0x0040, 0x4400, 0x1078, 0x22ac, -+ 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, 0x440b, 0xa184, -+ 0x0000, 0x00c0, 0x43f5, 0xa19c, 0x0032, 0xa386, 0x0030, 0x0040, -+ 0x4419, 0xa386, 0x0002, 0x0040, 0x4424, 0xa386, 0x0032, 0x00c0, -+ 0x43f5, 0x7200, 0x8204, 0x0048, 0x4424, 0x730c, 0xa384, 0x00ff, -+ 0x0040, 0x4424, 0x1078, 0x22ac, 0x7007, 0x0012, 0x7000, 0xa084, -+ 0x0001, 0x00c0, 0x443e, 0x7008, 0xa084, 0x000c, 0x00c0, 0x443e, -+ 0x7310, 0x7014, 0xa305, 0x0040, 0x443e, 0x710c, 0xa184, 0x0300, -+ 0x00c0, 0x443e, 0xa184, 0x00ff, 0x00c0, 0x43eb, 0x7007, 0x0012, -+ 0x7007, 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0, 0x4442, 0x7007, -+ 0x0012, 0x7108, 0x8104, 0x0048, 0x4447, 0x7003, 0x0000, 0x2049, -+ 0x0000, 0x007c, 0x107e, 0x007e, 0x127e, 0x157e, 0x2091, 0x2200, -+ 0x7108, 0x1078, 0x4462, 0x157f, 0x127f, 0x2091, 0x8001, 0x007f, -+ 0x107f, 0x007c, 0x7204, 0x7500, 0x730c, 0xa384, 0x0300, 0x00c0, -+ 0x4497, 0xa184, 0x000c, 0x00c0, 0x44bb, 0x7108, 0xa184, 0x000c, -+ 0x00c0, 0x44bb, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, -+ 0x447d, 0xa184, 0x0000, 0x00c0, 0x446d, 0xa184, 0x00c0, 0x8004, -+ 0x8004, 0x8004, 0x8004, 0x8004, 0x8004, 0xa18c, 0x0030, 0xa18e, -+ 0x0030, 0x00c0, 0x448d, 0xa085, 0x0004, 0x0079, 0x448f, 0x4499, -+ 0x44ab, 0x4497, 0x44ab, 0x4497, 0x44f7, 0x4497, 0x44f5, 0x1078, -+ 0x22ac, 0x7004, 0xa084, 0x0010, 0xa085, 0x0002, 0x7006, 0x8aff, -+ 0x00c0, 0x44a6, 0x2049, 0x0000, 0x0078, 0x44aa, 0x1078, 0x46ba, -+ 0x00c0, 0x44a6, 0x007c, 0x7004, 0xa084, 0x0010, 0xa085, 0x0002, -+ 0x7006, 0x8aff, 0x00c0, 0x44b6, 0x0078, 0x44ba, 0x1078, 0x46ba, -+ 0x00c0, 0x44b6, 0x007c, 0x7007, 0x0012, 0x7108, 0x00e0, 0x44be, -+ 0x2091, 0x6000, 0x00e0, 0x44c2, 0x2091, 0x6000, 0x7007, 0x0012, -+ 0x7007, 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0, 0x44ca, 0x7007, -+ 0x0012, 0x7108, 0x8104, 0x0048, 0x44cf, 0x7003, 0x0000, 0x7000, -+ 0xa005, 0x00c0, 0x44e3, 0x7004, 0xa005, 0x00c0, 0x44e3, 0x700c, -+ 0xa005, 0x0040, 0x44e5, 0x0078, 0x44c6, 0x2049, 0x0000, 0x1078, -+ 0x3616, 0x6818, 0xa084, 0x8000, 0x0040, 0x44f0, 0x681b, 0x0002, -+ 0x007c, 0x1078, 0x22ac, 0x1078, 0x22ac, 0x1078, 0x4553, 0x7210, -+ 0x7114, 0x700c, 0xa09c, 0x00ff, 0x2800, 0xa300, 0xa211, 0xa189, -+ 0x0000, 0x1078, 0x4553, 0x2704, 0x2c58, 0xac60, 0x630c, 0x2200, -+ 0xa322, 0x6308, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040, 0x451a, -+ 0x00c8, 0x451a, 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, -+ 0x0078, 0x4501, 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, -+ 0x0040, 0x4526, 0xa7ba, 0x43ab, 0x0078, 0x4528, 0xa7ba, 0x43a3, -+ 0x007f, 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7007, -+ 0x0012, 0x1078, 0x43eb, 0x007c, 0x8738, 0x2704, 0xa005, 0x00c0, -+ 0x4547, 0x609c, 0xa005, 0x0040, 0x4550, 0x2060, 0x6004, 0xa084, -+ 0x000f, 0xa080, 0x43b1, 0x203c, 0x87fb, 0x1040, 0x22ac, 0x8a51, -+ 0x0040, 0x454f, 0x7008, 0xa084, 0x00c0, 0xa086, 0x00c0, 0x007c, -+ 0x2051, 0x0000, 0x007c, 0x8a50, 0x8739, 0x2704, 0xa004, 0x00c0, -+ 0x4567, 0x6000, 0xa064, 0x00c0, 0x455e, 0x2d60, 0x6004, 0xa084, -+ 0x000f, 0xa080, 0x43c1, 0x203c, 0x87fb, 0x1040, 0x22ac, 0x007c, -+ 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x6884, 0x2060, 0x6888, -+ 0x6b8c, 0x6c90, 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, -+ 0x6804, 0xa084, 0x0008, 0x007f, 0x0040, 0x4582, 0xa0b8, 0x43ab, -+ 0x0078, 0x4584, 0xa0b8, 0x43a3, 0x7e08, 0xa6b5, 0x000c, 0x6904, -+ 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4592, 0xa18e, 0x000f, -+ 0x00c0, 0x459b, 0x6820, 0xa084, 0x0040, 0x0040, 0x45a2, 0xa6b5, -+ 0x0001, 0x0078, 0x45a2, 0x681c, 0xa084, 0x0040, 0x0040, 0x45a2, -+ 0xa6b5, 0x0001, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, -+ 0x45a4, 0x2400, 0xa305, 0x00c0, 0x45af, 0x0078, 0x45d5, 0x2c58, -+ 0x2704, 0x6104, 0xac60, 0x6004, 0xa400, 0x701a, 0x6000, 0xa301, -+ 0x701e, 0xa184, 0x0008, 0x0040, 0x45c5, 0x6014, 0xa081, 0x0000, -+ 0x7022, 0x6010, 0xa081, 0x0000, 0x7026, 0x620c, 0x2400, 0xa202, -+ 0x7012, 0x6208, 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, -+ 0x2b60, 0x1078, 0x4534, 0x0078, 0x45d7, 0x1078, 0x46ba, 0x00c0, -+ 0x45d5, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, -+ 0x0d7f, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x45e3, -+ 0x7003, 0x0008, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, -+ 0x2200, 0x0d7f, 0x2049, 0x45ed, 0x7007, 0x0004, 0x7004, 0xa084, -+ 0x0004, 0x00c0, 0x45f6, 0x7e08, 0xa6b5, 0x000c, 0x6904, 0xa18c, -+ 0x00ff, 0xa186, 0x0007, 0x0040, 0x4609, 0xa18e, 0x000f, 0x00c0, -+ 0x4614, 0x6820, 0xa084, 0x0040, 0x0040, 0x4610, 0xa6b5, 0x0001, -+ 0x6840, 0x2050, 0x0078, 0x461d, 0x681c, 0xa084, 0x0020, 0x00c0, -+ 0x461b, 0xa6b5, 0x0001, 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, -+ 0x000f, 0xa7b8, 0x43b1, 0x273c, 0x87fb, 0x00c0, 0x4631, 0x0048, -+ 0x462b, 0x1078, 0x22ac, 0x689c, 0xa065, 0x0040, 0x4635, 0x0078, -+ 0x461e, 0x1078, 0x46ba, 0x00c0, 0x4631, 0x127f, 0x2000, 0x007c, -+ 0x127e, 0x007e, 0x017e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f, -+ 0x047f, 0x7e08, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, -+ 0x0007, 0x0040, 0x464f, 0xa18e, 0x000f, 0x00c0, 0x4658, 0x6820, -+ 0xa084, 0x0040, 0x0040, 0x465f, 0xa6b5, 0x0001, 0x0078, 0x465f, -+ 0x681c, 0xa084, 0x0040, 0x0040, 0x465f, 0xa6b5, 0x0001, 0x2049, -+ 0x4638, 0x017e, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, -+ 0x466d, 0xa18e, 0x000f, 0x00c0, 0x4670, 0x6840, 0x0078, 0x4671, -+ 0x6828, 0x017f, 0xa055, 0x0040, 0x46b7, 0x2d70, 0x2e60, 0x7004, -+ 0xa0bc, 0x000f, 0xa7b8, 0x43b1, 0x273c, 0x87fb, 0x00c0, 0x468b, -+ 0x0048, 0x4684, 0x1078, 0x22ac, 0x709c, 0xa075, 0x2060, 0x0040, -+ 0x46b7, 0x0078, 0x4677, 0x2704, 0xae68, 0x680c, 0xa422, 0x6808, -+ 0xa31b, 0x0048, 0x46a4, 0x8a51, 0x00c0, 0x4698, 0x1078, 0x22ac, -+ 0x8738, 0x2704, 0xa005, 0x00c0, 0x468c, 0x709c, 0xa075, 0x2060, -+ 0x0040, 0x46b7, 0x0078, 0x4677, 0x8422, 0x8420, 0x831a, 0xa399, -+ 0x0000, 0x690c, 0x2400, 0xa122, 0x6908, 0x2300, 0xa11b, 0x00c8, -+ 0x46b3, 0x1078, 0x22ac, 0x2071, 0x0020, 0x0078, 0x45a2, 0x127f, -+ 0x2000, 0x007c, 0x7008, 0xa084, 0x00c0, 0xa086, 0x00c0, 0x0040, -+ 0x46d7, 0x2704, 0xac08, 0x2104, 0x701e, 0x8108, 0x2104, 0x701a, -+ 0x8108, 0x2104, 0x7016, 0x8108, 0x2104, 0x7012, 0x7602, 0x7004, -+ 0xa084, 0x0010, 0xa085, 0x0001, 0x7006, 0x1078, 0x4534, 0x007c, -+ 0x127e, 0x007e, 0x0d7e, 0x2091, 0x2200, 0x2049, 0x46d8, 0x0d7f, -+ 0x087f, 0x7108, 0xa184, 0x00c0, 0x00c0, 0x4702, 0x017e, 0x6904, -+ 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x46f2, 0xa18e, 0x000f, -+ 0x00c0, 0x46f5, 0x6840, 0x0078, 0x46f6, 0x6828, 0x017f, 0xa005, -+ 0x0040, 0x471f, 0x0078, 0x4332, 0x0020, 0x4702, 0x1078, 0x44f7, -+ 0x0078, 0x471f, 0x7108, 0x7008, 0xa106, 0x00c0, 0x4702, 0x017e, -+ 0x017f, 0x810c, 0x00c8, 0x4711, 0x7108, 0x1078, 0x4462, 0x0078, -+ 0x46e1, 0x7007, 0x0010, 0x7108, 0x7008, 0xa106, 0x00c0, 0x4713, -+ 0x017e, 0x017f, 0x810c, 0x00c8, 0x4713, 0x1078, 0x4462, 0x7008, -+ 0xa086, 0x0002, 0x00c0, 0x46e1, 0x7000, 0xa005, 0x00c0, 0x46e1, -+ 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, 0x127e, -+ 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, -+ 0x2049, 0x472f, 0xad80, 0x0011, 0x20a0, 0x2099, 0x0031, 0x700c, -+ 0xa084, 0x00ff, 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, -+ 0x0001, 0x0040, 0x474e, 0x8000, 0x80ac, 0x53a5, 0x7007, 0x0004, -+ 0x7004, 0xa084, 0x0004, 0x00c0, 0x4750, 0x0c7f, 0x2049, 0x0000, -+ 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f, 0x2000, 0x007c, -+ 0x2091, 0x6000, 0x2091, 0x8000, 0x78cc, 0xa005, 0x0040, 0x4777, -+ 0x7994, 0x70d0, 0xa106, 0x00c0, 0x4777, 0x7804, 0xa005, 0x0040, -+ 0x4777, 0x7807, 0x0000, 0x0068, 0x4777, 0x2091, 0x4080, 0x7820, -+ 0x8001, 0x7822, 0x00c0, 0x47d2, 0x7824, 0x7822, 0x2069, 0x4d40, -+ 0x6800, 0xa084, 0x0007, 0x0040, 0x4795, 0xa086, 0x0002, 0x0040, -+ 0x4795, 0x6834, 0xa00d, 0x0040, 0x4795, 0x2104, 0xa005, 0x0040, -+ 0x4795, 0x8001, 0x200a, 0x0040, 0x487a, 0x7848, 0xa005, 0x0040, -+ 0x47a3, 0x8001, 0x784a, 0x00c0, 0x47a3, 0x2009, 0x0102, 0x6844, -+ 0x200a, 0x1078, 0x20a0, 0x6890, 0xa005, 0x0040, 0x47af, 0x8001, -+ 0x6892, 0x00c0, 0x47af, 0x686f, 0x0000, 0x6873, 0x0001, 0x2061, -+ 0x5000, 0x20a9, 0x0100, 0x2009, 0x0002, 0x6034, 0xa005, 0x0040, -+ 0x47c5, 0x8001, 0x6036, 0x00c0, 0x47c5, 0x6010, 0xa005, 0x0040, -+ 0x47c5, 0x017e, 0x1078, 0x20a0, 0x017f, 0xace0, 0x0010, 0x0070, -+ 0x47cb, 0x0078, 0x47b5, 0x8109, 0x0040, 0x47d2, 0x20a9, 0x0100, -+ 0x0078, 0x47b5, 0x1078, 0x47df, 0x1078, 0x4804, 0x2009, 0x4d51, -+ 0x2104, 0x2009, 0x0102, 0x200a, 0x2091, 0x8001, 0x007c, 0x7834, -+ 0x8001, 0x7836, 0x00c0, 0x4803, 0x7838, 0x7836, 0x2091, 0x8000, -+ 0x7844, 0xa005, 0x00c0, 0x47ee, 0x2001, 0x0101, 0x8001, 0x7846, -+ 0xa080, 0x7000, 0x2040, 0x2004, 0xa065, 0x0040, 0x4803, 0x6024, -+ 0xa005, 0x0040, 0x47ff, 0x8001, 0x6026, 0x0040, 0x4833, 0x6000, -+ 0x2c40, 0x0078, 0x47f4, 0x007c, 0x7828, 0x8001, 0x782a, 0x00c0, -+ 0x4832, 0x782c, 0x782a, 0x7830, 0xa005, 0x00c0, 0x4811, 0x2001, -+ 0x0200, 0x8001, 0x7832, 0x8003, 0x8003, 0x8003, 0x8003, 0xa090, -+ 0x5000, 0xa298, 0x0002, 0x2304, 0xa084, 0x0008, 0x0040, 0x4832, -+ 0xa290, 0x0009, 0x2204, 0xa005, 0x0040, 0x482a, 0x8001, 0x2012, -+ 0x00c0, 0x4832, 0x2304, 0xa084, 0xfff7, 0xa085, 0x0080, 0x201a, -+ 0x1078, 0x20a0, 0x007c, 0x2069, 0x4d40, 0x6800, 0xa005, 0x0040, -+ 0x483d, 0x6848, 0xac06, 0x0040, 0x487a, 0x601b, 0x0006, 0x60b4, -+ 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0060, -+ 0x6022, 0x6000, 0x2042, 0x6714, 0x6f82, 0x1078, 0x18b9, 0x6818, -+ 0xa005, 0x0040, 0x4855, 0x8001, 0x681a, 0x6808, 0xa084, 0xffef, -+ 0x680a, 0x6810, 0x8001, 0x00d0, 0x485f, 0x1078, 0x22ac, 0x6812, -+ 0x6033, 0x0000, 0x602f, 0x0000, 0x2c68, 0x1078, 0x1b8e, 0x2069, -+ 0x4d40, 0x7944, 0xa184, 0x0100, 0x2001, 0x0006, 0x686e, 0x00c0, -+ 0x4875, 0x6986, 0x2001, 0x0004, 0x686e, 0x1078, 0x209b, 0x2091, -+ 0x8001, 0x007c, 0x2069, 0x0100, 0x2009, 0x4d40, 0x2104, 0xa084, -+ 0x0007, 0x0040, 0x48d6, 0xa086, 0x0007, 0x00c0, 0x4890, 0x0d7e, -+ 0x2009, 0x4d52, 0x216c, 0x1078, 0x385e, 0x0d7f, 0x0078, 0x48d6, -+ 0x2009, 0x4d52, 0x2164, 0x1078, 0x2257, 0x601b, 0x0006, 0x6858, -+ 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0048, -+ 0x6022, 0x6033, 0x0000, 0x602f, 0x0000, 0x6830, 0xa084, 0x0040, -+ 0x0040, 0x48ca, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, 0xa084, -+ 0x0004, 0x0040, 0x48b7, 0x0070, 0x48b7, 0x0078, 0x48ae, 0x684b, -+ 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040, 0x48c4, -+ 0x0070, 0x48c4, 0x0078, 0x48bb, 0x20a9, 0x00fa, 0x0070, 0x48ca, -+ 0x0078, 0x48c6, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, 0x0048, -+ 0x2009, 0x4d5b, 0x200b, 0x0007, 0x784c, 0x784a, 0x2091, 0x8001, -+ 0x007c, 0x2079, 0x4d00, 0x1078, 0x4904, 0x1078, 0x48e8, 0x1078, -+ 0x48f6, 0x7833, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, 0x007c, -+ 0x2019, 0x0003, 0x2011, 0x4d46, 0x2204, 0xa086, 0x003c, 0x0040, -+ 0x48f3, 0x2019, 0x0002, 0x7b2a, 0x7b2e, 0x007c, 0x2019, 0x0039, -+ 0x2011, 0x4d46, 0x2204, 0xa086, 0x003c, 0x0040, 0x4901, 0x2019, -+ 0x0027, 0x7b36, 0x7b3a, 0x007c, 0x2019, 0x3971, 0x2011, 0x4d46, -+ 0x2204, 0xa086, 0x003c, 0x0040, 0x490f, 0x2019, 0x2626, 0x7b22, -+ 0x7b26, 0x783f, 0x0000, 0x7843, 0x000a, 0x007c, 0x0020, 0x002b, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0014, 0x0014, 0x9849, 0x0014, 0x0014, 0x0014, 0x0014, -+ 0x0014, 0x0014, 0x0014, 0x0080, 0x000f, 0x0000, 0x0201, 0x0604, -+ 0x0c08, 0x2120, 0x4022, 0xf880, 0x0018, 0x300b, 0xa201, 0x0014, -+ 0xa200, 0x0014, 0xa200, 0x0214, 0x0000, 0x006c, 0x0002, 0x0014, -+ 0x98e1, 0x009e, 0x00ab, 0xa202, 0x8838, 0x8180, 0x842a, 0x84a0, -+ 0x3806, 0x8839, 0x28c2, 0x9cc1, 0x985d, 0x0864, 0x9891, 0x28c1, -+ 0x9cc1, 0xa203, 0x300c, 0x2847, 0x8161, 0x846a, 0x8000, 0x84a4, -+ 0x1856, 0x883a, 0x986d, 0x28e2, 0x9c9e, 0x985d, 0x0864, 0x9891, -+ 0x300c, 0x28e1, 0x9c9e, 0x2809, 0xa206, 0x64c0, 0x67a0, 0x6fc0, -+ 0x1814, 0x883b, 0x782c, 0x786d, 0x9881, 0x282b, 0xa207, 0x64a0, -+ 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7822, 0x883e, 0x9885, 0x8576, -+ 0x8677, 0x206b, 0x28c1, 0x9cc1, 0x2044, 0x2103, 0x20a2, 0x2081, -+ 0x986d, 0xa209, 0x2901, 0x989a, 0x0014, 0xa205, 0x8000, 0x85a4, -+ 0x1872, 0x879a, 0x883c, 0x1fe2, 0xc601, 0xa20a, 0x856e, 0x0704, -+ 0x9c9e, 0x0014, 0xa204, 0x8000, 0x85a4, 0x84a8, 0x3009, 0x19e2, -+ 0xf868, 0x8176, 0x86eb, 0x85eb, 0x872e, 0x87a9, 0x883f, 0x08e6, -+ 0x989e, 0xf881, 0x9899, 0xc801, 0x0014, 0xf8c1, 0x0016, 0x85b2, -+ 0x80f0, 0x9532, 0xfb02, 0x1de2, 0x0014, 0x8532, 0xf241, 0x0014, -+ 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, 0x0014, 0xa208, 0x6043, 0x8008, -+ 0x1dc1, 0x0016, 0x8000, 0x84a4, 0x8160, 0x842a, 0xf041, 0x3008, -+ 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d4, 0x8822, 0x0016, -+ 0x8000, 0x2847, 0x1011, 0x98d4, 0x8000, 0xa000, 0x2802, 0x1011, -+ 0x98da, 0x986d, 0x283e, 0x1011, 0x98de, 0xa20b, 0x0017, 0x300c, -+ 0x8000, 0x85a4, 0x1de2, 0xdb81, 0x0014, 0x0210, 0x98ec, 0x0014, -+ 0x26e0, 0x873a, 0xfb02, 0x19f2, 0x1fe2, 0x0014, 0xa20d, 0x8180, -+ 0x842a, 0x84a0, 0x3806, 0x0210, 0x9cc6, 0x0704, 0x0000, 0x006c, -+ 0x0002, 0x984f, 0x0014, 0x009e, 0x00a3, 0x0017, 0x60ff, 0x300c, -+ 0x8720, 0xa211, 0x9cc7, 0x8772, 0x8837, 0x2007, 0x10d2, 0x78e2, -+ 0x9ccb, 0x9858, 0xd984, 0xf0e2, 0xf0a1, 0x98c4, 0x0014, 0x8831, -+ 0xd167, 0x8830, 0x8830, 0x800f, 0x9401, 0xb520, 0xc802, 0x8820, -+ 0x9878, 0x2301, 0x9878, 0x10d2, 0x78e2, 0x9ccb, 0x986d, 0xf123, -+ 0xf142, 0xf101, 0x98bd, 0x10d2, 0x70f8, 0x8832, 0x8203, 0x6001, -+ 0x0014, 0x6845, 0x0214, 0xa21b, 0x9cc7, 0x2001, 0x98bc, 0x8202, -+ 0x1852, 0xd184, 0xd163, 0x8834, 0x8001, 0x9889, 0x3027, 0x84a8, -+ 0x1856, 0x8833, 0x0014, 0xa218, 0x6981, 0x9cb3, 0x6b2a, 0x6902, -+ 0x1834, 0x9899, 0x1814, 0x8010, 0x8592, 0x8026, 0x84b9, 0x7021, -+ 0x0014, 0x8000, 0x85a4, 0x84a8, 0x6946, 0xa213, 0x1462, 0xa213, -+ 0x8000, 0x16e1, 0x98ac, 0x6969, 0xa214, 0x61c2, 0x8002, 0x14e1, -+ 0x8004, 0x16e1, 0x0101, 0x300a, 0x8827, 0x0014, 0xa217, 0x9cb3, -+ 0x0014, 0x8000, 0x85a4, 0x8181, 0x842a, 0x84a8, 0x1ce6, 0x0016, -+ 0xa212, 0x9cc7, 0x10d2, 0x70e4, 0x0004, 0x8007, 0x9424, 0xcc1a, -+ 0x9ccb, 0x98bc, 0x8827, 0x300a, 0x0013, 0x8000, 0x84a4, 0x84a8, -+ 0x0016, 0x2002, 0x10d2, 0x98cb, 0x870e, 0xa21d, 0x0012, 0x878e, -+ 0x85b2, 0x80f8, 0x9424, 0xa532, 0x84a4, 0x8000, 0x84a8, 0x0016, -+ 0xa21c, 0x1035, 0x988d, 0xa210, 0x8180, 0x842a, 0x84a0, 0xa000, -+ 0x8010, 0x8592, 0x853b, 0xd044, 0x8022, 0x3807, 0x84bb, 0x98ed, -+ 0x8021, 0x3807, 0x84b9, 0x300c, 0x817e, 0x872b, 0x8772, 0x988d, -+ 0x0000, 0x0020, 0x002b, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0014, 0x0014, 0x9849, 0x0014, -+ 0x0014, 0x98ee, 0x98d9, 0x0014, 0x0014, 0x0014, 0x0080, 0x013d, -+ 0x0000, 0x0201, 0x0604, 0x0c08, 0x2120, 0x4022, 0xf880, 0x0018, -+ 0x300b, 0xa201, 0x0014, 0xa200, 0x0014, 0xa200, 0x0214, 0xa202, -+ 0x8838, 0x3806, 0x8839, 0x28c2, 0x9cba, 0xa804, 0x0864, 0xa835, -+ 0x28c1, 0x9cba, 0xa203, 0x300c, 0x2846, 0x8161, 0x846a, 0x8300, -+ 0x1856, 0x883a, 0xa806, 0x28e2, 0x9c99, 0xa8f4, 0x0864, 0xa825, -+ 0x300c, 0x28e1, 0x9c99, 0x2809, 0xa206, 0x64c0, 0x67a0, 0x6fc0, -+ 0x1814, 0x883b, 0x782c, 0x786d, 0xa808, 0x282b, 0xa207, 0x64a0, -+ 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7822, 0x883e, 0xa802, 0x8576, -+ 0x8677, 0x206b, 0x28c1, 0x9cba, 0x2044, 0x2103, 0x20a2, 0x2081, -+ 0xa8e0, 0xa209, 0x2901, 0xa809, 0x0014, 0xa205, 0xa300, 0x1872, -+ 0x879a, 0x883c, 0x1fe2, 0xc601, 0xa20a, 0x856e, 0x0704, 0x9c99, -+ 0x0014, 0xa204, 0xa300, 0x3009, 0x19e2, 0xf868, 0x8176, 0x86eb, -+ 0x85eb, 0x872e, 0x87a9, 0x883f, 0x08e6, 0xa8f3, 0xf881, 0xa8ec, -+ 0xc801, 0x0014, 0xf8c1, 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfb02, -+ 0x1de2, 0x0014, 0x8532, 0xf241, 0x0014, 0x1de2, 0x84a8, 0xd7a0, -+ 0x1fe6, 0x0014, 0xa208, 0x6043, 0x8008, 0x1dc1, 0x0016, 0x8300, -+ 0x8160, 0x842a, 0xf041, 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, -+ 0x0011, 0x20d5, 0x8822, 0x0016, 0x8000, 0x2847, 0x1011, 0xa8fc, -+ 0x8000, 0xa000, 0x2802, 0x1011, 0xa8fd, 0xa893, 0x283e, 0x1011, -+ 0xa8fd, 0xa20b, 0x0017, 0x300c, 0xa300, 0x1de2, 0xdb81, 0x0014, -+ 0x0210, 0xa801, 0x0014, 0x26e0, 0x873a, 0xfb02, 0x19f2, 0x1fe2, -+ 0x0014, 0xa20d, 0x3806, 0x0210, 0x9cbf, 0x0704, 0x0017, 0x60ff, -+ 0x300c, 0x8720, 0xa211, 0x9d63, 0x8772, 0x8837, 0x2007, 0x10d2, -+ 0x78e2, 0x9d66, 0xa8fc, 0xd984, 0xf0e2, 0xf0a1, 0xa861, 0x0014, -+ 0x8831, 0xd167, 0x8830, 0x8830, 0x800f, 0x9401, 0xb520, 0xc802, -+ 0x8820, 0xa80d, 0x2301, 0xa80b, 0x10d2, 0x78e2, 0x9d66, 0xa8fc, -+ 0xf123, 0xf142, 0xf101, 0xa845, 0x10d2, 0x70f8, 0x8832, 0x8203, -+ 0x6001, 0x0014, 0x6845, 0x0214, 0xa21b, 0x9d63, 0x2001, 0xa838, -+ 0x8202, 0x1852, 0xd184, 0xd163, 0x8834, 0x8001, 0xa801, 0x3027, -+ 0x84a8, 0x1856, 0x8833, 0x0014, 0xa218, 0x6981, 0x9d50, 0x6b2a, -+ 0x6902, 0x1834, 0xa805, 0x1814, 0x8010, 0x8592, 0x8026, 0x84b9, -+ 0x7021, 0x0014, 0xa300, 0x6946, 0xa213, 0x1462, 0xa213, 0x8000, -+ 0x16e1, 0xa807, 0x6969, 0xa214, 0x61c2, 0x8002, 0x14e1, 0x8004, -+ 0x16e1, 0x0101, 0x300a, 0x8827, 0x0014, 0xa217, 0x9d50, 0x0014, -+ 0xa300, 0x8181, 0x842a, 0x84a8, 0x1ce6, 0x0016, 0xa212, 0x9d63, -+ 0x10d2, 0x70e4, 0x0004, 0x8007, 0x9424, 0xcc1a, 0x9d66, 0xa8f8, -+ 0x8827, 0x300a, 0x0013, 0x8000, 0x84a4, 0x0016, 0x2002, 0x10d2, -+ 0xa8fd, 0x870e, 0xa21d, 0x0012, 0x878e, 0x85b2, 0x80f8, 0x9424, -+ 0xa532, 0x84a4, 0x0016, 0xa21c, 0x1035, 0xa8b6, 0xa210, 0x3807, -+ 0x300c, 0x817e, 0x872b, 0x8772, 0xa8af, 0x0000, 0xd66f -+}; -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/asm_1040.h 2003-07-19 17:06:32.000000000 -0700 -@@ -0,0 +1,3545 @@ -+/* @(#)asm_1040.h 1.2 */ -+/* -+ * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Qlogic, Inc. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms are permitted provided -+ * that the following conditions are met: -+ * 1. Redistribution of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistribution in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+/************************************************************************ -+ * * -+ * --- ISP1040 Initiator Firmware --- * -+ * 32 LUN Support * -+ * * -+ ************************************************************************/ -+#ifndef ISP_TARGET_MODE -+/* -+ * Firmware Version 4.66.00 (14:49 Sep 05, 2000) -+ */ -+static const u_int16_t isp_1040_risc_code[] = { -+ 0x0078, 0x1041, 0x0000, 0x2cd0, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, 0x2c31, -+ 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, 0x4320, -+ 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, 0x5350, -+ 0x3130, 0x3230, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056, -+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x342e, 0x3636, 0x2020, 0x2043, -+ 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3030, 0x2050, -+ 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, 0x3030, 0x2020, -+ 0x2400, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048, 0x104c, -+ 0x0038, 0x1052, 0x0078, 0x104e, 0x0028, 0x1052, 0x20b9, 0x1212, -+ 0x0078, 0x1054, 0x20b9, 0x1313, 0x2071, 0x0010, 0x70c3, 0x0004, -+ 0x20c9, 0x62ff, 0x2089, 0x1185, 0x70c7, 0x4953, 0x70cb, 0x5020, -+ 0x70cf, 0x2020, 0x70d3, 0x0004, 0x3f00, 0x70d6, 0x20c1, 0x0008, -+ 0x2019, 0x0000, 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec, -+ 0x7fff, 0x2d64, 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b, -+ 0x5050, 0x2114, 0xa286, 0xa5a5, 0x0040, 0x10c4, 0xa386, 0x000f, -+ 0x0040, 0x108a, 0x2c6a, 0x2a5a, 0x20c1, 0x0000, 0x2019, 0x000f, -+ 0x0078, 0x106a, 0x2c6a, 0x2a5a, 0x20c1, 0x0008, 0x2009, 0x7fff, -+ 0x2148, 0x2944, 0x204b, 0x0a0a, 0xa9bc, 0x3fff, 0x2734, 0x203b, -+ 0x5050, 0x2114, 0xa286, 0x0a0a, 0x0040, 0x10ae, 0x284a, 0x263a, -+ 0x20c1, 0x0004, 0x2009, 0x3fff, 0x2134, 0x200b, 0x5050, 0x2114, -+ 0xa286, 0x5050, 0x0040, 0x10af, 0x0078, 0x118d, 0x284a, 0x263a, -+ 0x98c0, 0xa188, 0x1000, 0x212c, 0x200b, 0xa5a5, 0x2114, 0xa286, -+ 0xa5a5, 0x0040, 0x10c1, 0x250a, 0xa18a, 0x1000, 0x98c1, 0x0078, -+ 0x10c6, 0x250a, 0x0078, 0x10c6, 0x2c6a, 0x2a5a, 0x2130, 0xa18a, -+ 0x0040, 0x2128, 0xa1a2, 0x3d00, 0x8424, 0x8424, 0x8424, 0x8424, -+ 0x8424, 0x8424, 0xa192, 0x6300, 0x2009, 0x0000, 0x2001, 0x002f, -+ 0x1078, 0x1bc9, 0x2218, 0x2079, 0x3d00, 0x2fa0, 0x2408, 0x2011, -+ 0x0000, 0x20a9, 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10e1, 0x7ee6, -+ 0x8528, 0x7dda, 0x7cde, 0x7be2, 0x787b, 0x0000, 0x2031, 0x0030, -+ 0x78c3, 0x0101, 0x780b, 0x0002, 0x780f, 0x0002, 0x784f, 0x0003, -+ 0x7803, 0x0002, 0x2069, 0x3d40, 0x2001, 0x04fd, 0x2004, 0xa082, -+ 0x0005, 0x0048, 0x1107, 0x0038, 0x1109, 0x0078, 0x110d, 0x00a8, -+ 0x110d, 0x681b, 0x003c, 0x0078, 0x110f, 0x681b, 0x0028, 0x6807, -+ 0x0007, 0x680b, 0x00fa, 0x680f, 0x0008, 0x6813, 0x0005, 0x681f, -+ 0x0000, 0x6823, 0x0006, 0x6817, 0x0008, 0x6827, 0x0000, 0x2069, -+ 0x3f80, 0x2011, 0x0020, 0x2009, 0x0010, 0x680b, 0x0c19, 0x680f, -+ 0x0019, 0x6803, 0xfd00, 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8, -+ 0x0008, 0xa290, 0x0004, 0x8109, 0x00c0, 0x1125, 0x2069, 0x4000, -+ 0x2009, 0x0002, 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, 0x0040, -+ 0x7be4, 0xa386, 0xfeff, 0x00c0, 0x114b, 0x6817, 0x0100, 0x681f, -+ 0x0064, 0x0078, 0x114f, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, -+ 0x0010, 0x0070, 0x1155, 0x0078, 0x113c, 0x8109, 0x00c0, 0x113a, -+ 0x1078, 0x1f20, 0x1078, 0x3792, 0x1078, 0x19e0, 0x1078, 0x3c4a, -+ 0x3200, 0xa085, 0x000d, 0x2090, 0x70c3, 0x0000, 0x0090, 0x116f, -+ 0x70c0, 0xa086, 0x0002, 0x00c0, 0x116f, 0x1078, 0x12a4, 0x1078, -+ 0x11b6, 0x78c0, 0xa005, 0x00c0, 0x117b, 0x1078, 0x1bf2, 0x0068, -+ 0x117f, 0x1078, 0x1e44, 0x0068, 0x117f, 0x1078, 0x1adf, 0x00e0, -+ 0x116f, 0x1078, 0x3ac1, 0x0078, 0x116f, 0x118d, 0x1192, 0x20e8, -+ 0x20e8, 0x380c, 0x380c, 0x20e8, 0x20e8, 0x0088, 0x118d, 0x2091, -+ 0x8001, 0x007c, 0x0088, 0x1192, 0x2091, 0x8001, 0x007c, 0x0078, -+ 0x1197, 0x0078, 0x1199, 0x2009, 0x0022, 0x2104, 0xa086, 0x4000, -+ 0x0040, 0x11b1, 0x7008, 0x800b, 0x00c8, 0x11b1, 0x7007, 0x0002, -+ 0xa08c, 0x01e0, 0x00c0, 0x11b2, 0xa084, 0x0008, 0x0040, 0x11b1, -+ 0x087a, 0x097a, 0x70c3, 0x4002, 0x0078, 0x12a7, 0x0068, 0x1221, -+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1221, 0x7814, -+ 0xa005, 0x00c0, 0x11c7, 0x0010, 0x1222, 0x0078, 0x1221, 0x2009, -+ 0x3d68, 0x2104, 0xa005, 0x00c0, 0x1221, 0x2009, 0x3d71, 0x200b, -+ 0x0000, 0x7914, 0xa186, 0x0042, 0x00c0, 0x11ec, 0x7816, 0x2009, -+ 0x3d6f, 0x2164, 0x200b, 0x0000, 0x6018, 0x70c6, 0x6014, 0x70ca, -+ 0x611c, 0xa18c, 0xff00, 0x6020, 0xa084, 0x00ff, 0xa105, 0x70ce, -+ 0x1078, 0x19d2, 0x0078, 0x121f, 0x7814, 0xa086, 0x0018, 0x00c0, -+ 0x11f3, 0x1078, 0x16cd, 0x7817, 0x0000, 0x2009, 0x3d6f, 0x2104, -+ 0xa065, 0x0040, 0x120f, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x1a30, -+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x17b3, 0x2009, 0x0018, 0x6087, -+ 0x0103, 0x1078, 0x1959, 0x00c0, 0x121b, 0x1078, 0x19d2, 0x2009, -+ 0x3d6f, 0x200b, 0x0000, 0x2009, 0x3d69, 0x2104, 0x200b, 0x0000, -+ 0xa005, 0x0040, 0x121f, 0x2001, 0x4005, 0x0078, 0x12a6, 0x0078, -+ 0x12a4, 0x007c, 0x70c3, 0x0000, 0x70c7, 0x0000, 0x70cb, 0x0000, -+ 0x70cf, 0x0000, 0x70c0, 0xa0bc, 0xffc0, 0x00c0, 0x1272, 0x2038, -+ 0x0079, 0x1232, 0x12a4, 0x12ff, 0x12c3, 0x12ff, 0x1368, 0x1368, -+ 0x12ba, 0x17cb, 0x1373, 0x12b2, 0x12c7, 0x12c9, 0x12cb, 0x12cd, -+ 0x17d0, 0x12b2, 0x1385, 0x13c1, 0x16e5, 0x17c5, 0x12cf, 0x15fa, -+ 0x161c, 0x163a, 0x1667, 0x15b3, 0x15c1, 0x15d5, 0x15e9, 0x1445, -+ 0x12b2, 0x13f3, 0x13f9, 0x13fe, 0x1403, 0x1409, 0x140e, 0x1413, -+ 0x1418, 0x141d, 0x1421, 0x1436, 0x1442, 0x12b2, 0x12b2, 0x12b2, -+ 0x12b2, 0x1451, 0x145a, 0x1469, 0x148f, 0x1499, 0x14a0, 0x14e0, -+ 0x14ef, 0x14fe, 0x1510, 0x1593, 0x15a3, 0x12b2, 0x12b2, 0x12b2, -+ 0x12b2, 0x15a8, 0xa0bc, 0xffa0, 0x00c0, 0x12b2, 0x2038, 0xa084, -+ 0x001f, 0x0079, 0x127b, 0x17e7, 0x17ea, 0x17fa, 0x189f, 0x18d8, -+ 0x1914, 0x1931, 0x1886, 0x12b2, 0x12b2, 0x1935, 0x193d, 0x12b2, -+ 0x12b2, 0x12b2, 0x12b2, 0x12f5, 0x135e, 0x137b, 0x13b7, 0x16db, -+ 0x12b2, 0x12b2, 0x12b2, 0x12b2, 0x1943, 0x18f0, 0x18fa, 0x18fe, -+ 0x190c, 0x12b2, 0x12b2, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0078, -+ 0x12a6, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0068, -+ 0x12a7, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091, -+ 0x4080, 0x007c, 0x70c3, 0x4001, 0x0078, 0x12a7, 0x70c3, 0x4006, -+ 0x0078, 0x12a7, 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005, -+ 0x53a3, 0x0078, 0x12a4, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078, -+ 0x12a4, 0x0078, 0x12a4, 0x0078, 0x12a4, 0x0078, 0x12a4, 0x2091, -+ 0x8000, 0x70c3, 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, -+ 0x2020, 0x70d3, 0x0004, 0x3f00, 0x70d6, 0x2079, 0x0000, 0x781b, -+ 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x0457, 0x2051, -+ 0x0470, 0x2061, 0x0472, 0x20b9, 0xffff, 0x20c1, 0x0000, 0x2091, -+ 0x5000, 0x2091, 0x4080, 0x0078, 0x0455, 0x1078, 0x1b4c, 0x00c0, -+ 0x12b6, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1302, 0x2029, -+ 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x20a0, 0x2098, -+ 0x2031, 0x0030, 0x81ff, 0x0040, 0x12a4, 0x7007, 0x0004, 0x731a, -+ 0x721e, 0x7422, 0x7526, 0x2051, 0x0012, 0x2049, 0x133d, 0x2041, -+ 0x12a4, 0x7003, 0x0002, 0xa786, 0x0001, 0x0040, 0x1325, 0xa786, -+ 0x0050, 0x0040, 0x1325, 0x0078, 0x132b, 0x2049, 0x134a, 0x2041, -+ 0x1356, 0x7003, 0x0003, 0x7017, 0x0000, 0x810b, 0x7112, 0x00c8, -+ 0x1333, 0x7017, 0x0001, 0x7007, 0x0001, 0xa786, 0x0001, 0x0040, -+ 0x134a, 0xa786, 0x0050, 0x0040, 0x134a, 0x700c, 0xa084, 0x007f, -+ 0x2009, 0x0040, 0xa102, 0x8004, 0x094a, 0x20a8, 0x26a0, 0x53a6, -+ 0x0078, 0x119b, 0x700c, 0xa084, 0x007f, 0x0040, 0x134a, 0x80ac, -+ 0x0048, 0x134a, 0x2698, 0x53a5, 0x0078, 0x119b, 0x700c, 0xa084, -+ 0x007f, 0x80ac, 0x2698, 0x53a5, 0x0078, 0x12a4, 0x1078, 0x1b4c, -+ 0x00c0, 0x12b6, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1302, -+ 0x71c4, 0x70c8, 0x2114, 0xa79e, 0x0004, 0x00c0, 0x1370, 0x200a, -+ 0x72ca, 0x0078, 0x12a3, 0x70c7, 0x0004, 0x70cb, 0x0042, 0x70cf, -+ 0x0000, 0x0078, 0x12a4, 0x1078, 0x1b4c, 0x00c0, 0x12b6, 0x75d8, -+ 0x76dc, 0x75da, 0x76de, 0x0078, 0x1388, 0x2029, 0x0000, 0x2530, -+ 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6, 0x72ca, 0x73ce, 0x74d2, -+ 0xa005, 0x0040, 0x13b1, 0xa40a, 0x0040, 0x1398, 0x00c8, 0x13a2, -+ 0x8001, 0x788a, 0xa084, 0xfc00, 0x0040, 0x13a6, 0x78c0, 0xa085, -+ 0x0001, 0x78c2, 0x2001, 0x4005, 0x0078, 0x12a6, 0x7a92, 0x7b96, -+ 0x7d9a, 0x7e9e, 0x7c8e, 0x78c0, 0xa084, 0xfffc, 0x78c2, 0x0078, -+ 0x13b5, 0x78c0, 0xa085, 0x0001, 0x78c2, 0x0078, 0x12a4, 0x1078, -+ 0x1b4c, 0x00c0, 0x12b6, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, -+ 0x13c4, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d4, -+ 0x70c6, 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x0040, 0x13ed, 0xa40a, -+ 0x0040, 0x13d4, 0x00c8, 0x13de, 0x8001, 0x78a6, 0xa084, 0xfc00, -+ 0x0040, 0x13e2, 0x78c0, 0xa085, 0x0100, 0x78c2, 0x2001, 0x4005, -+ 0x0078, 0x12a6, 0x7aae, 0x7bb2, 0x7db6, 0x7eba, 0x7caa, 0x78c0, -+ 0xa084, 0xfcff, 0x78c2, 0x0078, 0x13f1, 0x78c0, 0xa085, 0x0100, -+ 0x78c2, 0x0078, 0x12a4, 0x2009, 0x3d5f, 0x210c, 0x7ae0, 0x0078, -+ 0x12a2, 0x2009, 0x3d41, 0x210c, 0x0078, 0x12a3, 0x2009, 0x3d42, -+ 0x210c, 0x0078, 0x12a3, 0x2061, 0x3d40, 0x610c, 0x6210, 0x0078, -+ 0x12a2, 0x2009, 0x3d45, 0x210c, 0x0078, 0x12a3, 0x2009, 0x3d46, -+ 0x210c, 0x0078, 0x12a3, 0x2009, 0x3d47, 0x210c, 0x0078, 0x12a3, -+ 0x2009, 0x3d48, 0x210c, 0x0078, 0x12a3, 0x7908, 0x7a0c, 0x0078, -+ 0x12a2, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xa0e8, 0x3f80, 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040, 0x1433, -+ 0x6b08, 0x0078, 0x1434, 0x6b0c, 0x0078, 0x12a1, 0x77c4, 0x1078, -+ 0x19f0, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, -+ 0x0078, 0x12a1, 0x794c, 0x0078, 0x12a3, 0x77c4, 0x1078, 0x19f0, -+ 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, 0x2091, 0x8001, 0x0078, -+ 0x12a1, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x129c, 0x1078, 0x1fb7, -+ 0x0078, 0x12a1, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x129c, 0x2011, -+ 0x3d41, 0x2204, 0x007e, 0x2112, 0x1078, 0x1f70, 0x017f, 0x0078, -+ 0x12a3, 0x71c4, 0x2011, 0x1487, 0x20a9, 0x0008, 0x2204, 0xa106, -+ 0x0040, 0x1479, 0x8210, 0x0070, 0x1477, 0x0078, 0x146e, 0x0078, -+ 0x129c, 0xa292, 0x1487, 0x027e, 0x2011, 0x3d42, 0x2204, 0x2112, -+ 0x017f, 0x007e, 0x1078, 0x1f7c, 0x017f, 0x0078, 0x12a3, 0x03e8, -+ 0x00fa, 0x01f4, 0x02ee, 0x0064, 0x0019, 0x0032, 0x004b, 0x2061, -+ 0x3d40, 0x610c, 0x6210, 0x70c4, 0x600e, 0x70c8, 0x6012, 0x0078, -+ 0x12a2, 0x2061, 0x3d40, 0x6114, 0x70c4, 0x6016, 0x0078, 0x12a3, -+ 0x71c4, 0x2011, 0x0004, 0x2019, 0x1212, 0xa186, 0x0028, 0x0040, -+ 0x14b9, 0x2011, 0x0005, 0x2019, 0x1212, 0xa186, 0x0032, 0x0040, -+ 0x14b9, 0x2011, 0x0006, 0x2019, 0x1313, 0xa186, 0x003c, 0x00c0, -+ 0x129c, 0x2061, 0x3d40, 0x6018, 0x007e, 0x611a, 0x7800, 0xa084, -+ 0x0001, 0x00c0, 0x14d6, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, -+ 0x0048, 0x14ce, 0x0038, 0x14d2, 0x0078, 0x14d6, 0x0028, 0x14d2, -+ 0x0078, 0x14d6, 0x2019, 0x1313, 0x0078, 0x14d8, 0x2019, 0x1212, -+ 0x23b8, 0x1078, 0x1f8d, 0x1078, 0x3c4a, 0x017f, 0x0078, 0x12a3, -+ 0x71c4, 0xa184, 0xffcf, 0x00c0, 0x129c, 0x2011, 0x3d47, 0x2204, -+ 0x2112, 0x007e, 0x1078, 0x1faf, 0x017f, 0x0078, 0x12a3, 0x71c4, -+ 0xa182, 0x0010, 0x00c8, 0x129c, 0x2011, 0x3d48, 0x2204, 0x007e, -+ 0x2112, 0x1078, 0x1f9e, 0x017f, 0x0078, 0x12a3, 0x71c4, 0x72c8, -+ 0xa184, 0xfffd, 0x00c0, 0x129b, 0xa284, 0xfffd, 0x00c0, 0x129b, -+ 0x2100, 0x7908, 0x780a, 0x2200, 0x7a0c, 0x780e, 0x0078, 0x12a2, -+ 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, -+ 0x3f80, 0x2019, 0x0000, 0x72c8, 0xa284, 0x0080, 0x0040, 0x1526, -+ 0x6c14, 0x84ff, 0x00c0, 0x1526, 0x6817, 0x0040, 0xa284, 0x0040, -+ 0x0040, 0x1530, 0x6c10, 0x84ff, 0x00c0, 0x1530, 0x6813, 0x0001, -+ 0x6800, 0x007e, 0xa226, 0x0040, 0x155c, 0xa284, 0x0001, 0x0040, -+ 0x153e, 0x2220, 0xa39d, 0x0002, 0xa294, 0xfffe, 0x6a02, 0xa484, -+ 0x2000, 0x0040, 0x1545, 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, -+ 0x154b, 0xa39d, 0x0008, 0xa484, 0x4000, 0x0040, 0x155c, 0x810f, -+ 0xa284, 0x4000, 0x0040, 0x1558, 0x1078, 0x1fd1, 0x0078, 0x155c, -+ 0x1078, 0x1fc3, 0x0078, 0x155c, 0x72cc, 0x6808, 0xa206, 0x0040, -+ 0x158b, 0xa2a4, 0x00ff, 0x2061, 0x3d40, 0x6118, 0xa186, 0x0028, -+ 0x0040, 0x1572, 0xa186, 0x0032, 0x0040, 0x1578, 0xa186, 0x003c, -+ 0x0040, 0x157e, 0xa482, 0x0064, 0x0048, 0x1588, 0x0078, 0x1582, -+ 0xa482, 0x0050, 0x0048, 0x1588, 0x0078, 0x1582, 0xa482, 0x0043, -+ 0x0048, 0x1588, 0x71c4, 0x71c6, 0x027f, 0x72ca, 0x0078, 0x129d, -+ 0x6a0a, 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, -+ 0x71c4, 0x0078, 0x12a1, 0x77c4, 0x1078, 0x19f0, 0x2091, 0x8000, -+ 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, -+ 0x2708, 0x0078, 0x12a1, 0x70c4, 0x794c, 0x784e, 0x0078, 0x12a3, -+ 0x71c4, 0x72c8, 0x73cc, 0xa182, 0x0010, 0x00c8, 0x129c, 0x1078, -+ 0x1fdf, 0x0078, 0x12a1, 0x77c4, 0x1078, 0x19f0, 0x2091, 0x8000, -+ 0x6a08, 0xa295, 0x0002, 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, -+ 0x12a2, 0x77c4, 0x1078, 0x19f0, 0x2091, 0x8000, 0x6a08, 0xa294, -+ 0xfff9, 0x6a0a, 0x6804, 0xa005, 0x0040, 0x15d0, 0x1078, 0x1f05, -+ 0x2091, 0x8001, 0x2708, 0x0078, 0x12a2, 0x77c4, 0x1078, 0x19f0, -+ 0x2091, 0x8000, 0x6a08, 0xa295, 0x0004, 0x6a0a, 0x6804, 0xa005, -+ 0x0040, 0x15e4, 0x1078, 0x1f05, 0x2091, 0x8001, 0x2708, 0x0078, -+ 0x12a2, 0x77c4, 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, -+ 0x2091, 0x8000, 0x1078, 0x19fd, 0x2091, 0x8001, 0x2708, 0x6a08, -+ 0x0078, 0x12a2, 0x77c4, 0x73c8, 0x72cc, 0x77c6, 0x73ca, 0x72ce, -+ 0x1078, 0x1a78, 0x00c0, 0x1618, 0x6818, 0xa005, 0x0040, 0x1612, -+ 0x2708, 0x1078, 0x1fef, 0x00c0, 0x1612, 0x7817, 0x0015, 0x2091, -+ 0x8001, 0x007c, 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x12a6, -+ 0x2091, 0x8001, 0x0078, 0x12a4, 0x77c4, 0x77c6, 0x2041, 0x0021, -+ 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, 0x19fd, -+ 0x2061, 0x3d40, 0x60a3, 0x0003, 0x67b6, 0x60c7, 0x000f, 0x60a7, -+ 0x0000, 0x7817, 0x0016, 0x2091, 0x8000, 0x1078, 0x1f05, 0x2091, -+ 0x8001, 0x007c, 0x77c8, 0x77ca, 0x77c4, 0x77c6, 0xa7bc, 0xff00, -+ 0x2091, 0x8000, 0x2061, 0x3d40, 0x60a3, 0x0002, 0x60a7, 0x0000, -+ 0x67b6, 0x60c7, 0x000f, 0x7817, 0x0017, 0x2091, 0x8000, 0x1078, -+ 0x1f05, 0x2091, 0x8001, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, -+ 0x0010, 0x2091, 0x8000, 0x1078, 0x19fd, 0x70c8, 0x6836, 0x8738, -+ 0xa784, 0x001f, 0x00c0, 0x165b, 0x2091, 0x8001, 0x007c, 0x78c0, -+ 0xa084, 0x0003, 0x00c0, 0x168b, 0x2039, 0x0000, 0x2041, 0x0021, -+ 0x2049, 0x0004, 0x2051, 0x0008, 0x1078, 0x19f0, 0x2091, 0x8000, -+ 0x6808, 0xa80d, 0x690a, 0x2091, 0x8001, 0x8738, 0xa784, 0x001f, -+ 0x00c0, 0x1674, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, -+ 0x0f00, 0x00c0, 0x1674, 0x2091, 0x8000, 0x2069, 0x0100, 0x6830, -+ 0xa084, 0x0040, 0x0040, 0x16b4, 0x684b, 0x0004, 0x20a9, 0x0014, -+ 0x6848, 0xa084, 0x0004, 0x0040, 0x16a1, 0x0070, 0x16a1, 0x0078, -+ 0x1698, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, -+ 0x0040, 0x16ae, 0x0070, 0x16ae, 0x0078, 0x16a5, 0x20a9, 0x00fa, -+ 0x0070, 0x16b4, 0x0078, 0x16b0, 0x2079, 0x3d00, 0x7817, 0x0018, -+ 0x2061, 0x3d40, 0x60a3, 0x0001, 0x60a7, 0x0000, 0x60c7, 0x000f, -+ 0x78c0, 0xa085, 0x0002, 0x78c2, 0x6808, 0xa084, 0xfffd, 0x680a, -+ 0x681b, 0x0047, 0x2091, 0x8001, 0x007c, 0x78c0, 0xa084, 0xfffd, -+ 0x78c2, 0xa084, 0x0001, 0x00c0, 0x16d7, 0x1078, 0x1ac2, 0x71c4, -+ 0x71c6, 0x794a, 0x007c, 0x1078, 0x1b4c, 0x00c0, 0x12b6, 0x75d8, -+ 0x74dc, 0x75da, 0x74de, 0x0078, 0x16e8, 0x2029, 0x0000, 0x2520, -+ 0x71c4, 0x73c8, 0x72cc, 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x3d00, -+ 0x1078, 0x19c9, 0x0040, 0x17af, 0x20a9, 0x0005, 0x20a1, 0x3d16, -+ 0x2091, 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, 0x0040, 0x1078, -+ 0x1993, 0x0040, 0x1707, 0x1078, 0x19d2, 0x0078, 0x17af, 0x6004, -+ 0xa08c, 0x00ff, 0xa18e, 0x0009, 0x00c0, 0x1712, 0x007e, 0x1078, -+ 0x1e27, 0x007f, 0xa084, 0xff00, 0x8007, 0x8009, 0x0040, 0x177d, -+ 0x0c7e, 0x2c68, 0x1078, 0x19c9, 0x0040, 0x174c, 0x2c00, 0x689e, -+ 0x8109, 0x00c0, 0x1719, 0x609f, 0x0000, 0x0c7f, 0x0c7e, 0x7218, -+ 0x731c, 0x7420, 0x7524, 0x2c68, 0x689c, 0xa065, 0x0040, 0x177c, -+ 0x2009, 0x0040, 0x1078, 0x1993, 0x00c0, 0x1765, 0x6004, 0xa084, -+ 0x00ff, 0xa086, 0x0002, 0x00c0, 0x174c, 0x6004, 0xa084, 0x00ff, -+ 0xa086, 0x000a, 0x00c0, 0x1748, 0x017e, 0x1078, 0x1e23, 0x017f, -+ 0x2d00, 0x6002, 0x0078, 0x1727, 0x0c7f, 0x0c7e, 0x609c, 0x2060, -+ 0x1078, 0x1a30, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x17b3, 0x2009, -+ 0x0018, 0x6008, 0xa085, 0x0200, 0x600a, 0x6004, 0x6086, 0x1078, -+ 0x1959, 0x1078, 0x19d2, 0x0078, 0x17af, 0x0c7f, 0x0c7e, 0x609c, -+ 0x2060, 0x1078, 0x1a30, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x17b3, -+ 0x2009, 0x0018, 0x6087, 0x0103, 0x601b, 0x0003, 0x1078, 0x1959, -+ 0x1078, 0x19d2, 0x0078, 0x17af, 0x0c7f, 0x74c4, 0x73c8, 0x72cc, -+ 0x6014, 0x2091, 0x8000, 0x7817, 0x0012, 0x0e7e, 0x2071, 0x3d40, -+ 0x70a3, 0x0005, 0x70a7, 0x0000, 0x73aa, 0x72ae, 0x74b2, 0x70b6, -+ 0x70bb, 0x0000, 0x2c00, 0x70be, 0x70c3, 0x0000, 0xa02e, 0x2530, -+ 0x611c, 0xa184, 0x0060, 0x0040, 0x179f, 0x1078, 0x3736, 0x0e7f, -+ 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, -+ 0x2091, 0x8000, 0x1078, 0x1f05, 0x2091, 0x8001, 0x007c, 0x70c3, -+ 0x4005, 0x0078, 0x12a7, 0x20a9, 0x0005, 0x2099, 0x3d16, 0x2091, -+ 0x8000, 0x530a, 0x2091, 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, -+ 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x71c4, 0x70c7, 0x0000, -+ 0x7906, 0x0078, 0x12a4, 0x71c4, 0x71c6, 0x2168, 0x0078, 0x17d2, -+ 0x2069, 0x1000, 0x690c, 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, -+ 0x00c0, 0x17d4, 0xa285, 0x0000, 0x00c0, 0x17e2, 0x70c3, 0x4000, -+ 0x0078, 0x17e4, 0x70c3, 0x4003, 0x70ca, 0x0078, 0x12a7, 0x79d8, -+ 0x0078, 0x12a3, 0x71c4, 0x71c6, 0x2198, 0x20a1, 0x0042, 0x20a9, -+ 0x0004, 0x53a3, 0x21a0, 0x2099, 0x0042, 0x20a9, 0x0004, 0x53a3, -+ 0x0078, 0x12a4, 0x70c4, 0x2068, 0x2079, 0x3d00, 0x1078, 0x19c9, -+ 0x00c0, 0x1806, 0x70c3, 0x4005, 0x0078, 0x12a7, 0x6007, 0x0001, -+ 0x600b, 0x0000, 0x602b, 0x0000, 0x601b, 0x0006, 0x6a10, 0xa28c, -+ 0x000f, 0xa284, 0x00f0, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, -+ 0x6016, 0xa284, 0x0800, 0x0040, 0x1821, 0x601b, 0x000a, 0x0078, -+ 0x1827, 0xa284, 0x1000, 0x0040, 0x1827, 0x601b, 0x000c, 0xa284, -+ 0x0300, 0x0040, 0x1830, 0x602b, 0x0001, 0x8004, 0x8004, 0x8004, -+ 0xa085, 0x0001, 0x601e, 0x6023, 0x0000, 0x6027, 0x0000, 0xa284, -+ 0x0400, 0x0040, 0x183d, 0x602b, 0x0000, 0x20a9, 0x0006, 0xac80, -+ 0x000b, 0x20a0, 0xad80, 0x0005, 0x2098, 0x53a3, 0xa284, 0x0300, -+ 0x00c0, 0x1852, 0x6046, 0x604a, 0x604e, 0x6052, 0x6096, 0x609a, -+ 0x0078, 0x185c, 0x6800, 0x6046, 0x6804, 0x604a, 0x6e08, 0x664e, -+ 0x6d0c, 0x6552, 0x6596, 0x669a, 0x6014, 0x2091, 0x8000, 0x7817, -+ 0x0042, 0x2c08, 0x2061, 0x3d40, 0x60a3, 0x0005, 0x60a7, 0x0000, -+ 0x60ab, 0x0000, 0x60af, 0x0000, 0x60b3, 0x0000, 0x60b6, 0x61be, -+ 0xa284, 0x0400, 0x60c2, 0x2091, 0x8001, 0x0e7e, 0x2071, 0x0020, -+ 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x0e7f, 0x2091, -+ 0x8000, 0x1078, 0x1f05, 0x2091, 0x8001, 0x007c, 0x70c4, 0x2068, -+ 0x2079, 0x3d00, 0x1078, 0x19c9, 0x0040, 0x189b, 0x6007, 0x0001, -+ 0x600b, 0x0000, 0x602b, 0x0000, 0x601b, 0x0006, 0x70c8, 0x6016, -+ 0x6a10, 0x0078, 0x1819, 0x70c3, 0x4005, 0x0078, 0x12a7, 0x78ec, -+ 0xa005, 0x0040, 0x12b2, 0x2091, 0x8000, 0x70c4, 0x800a, 0x2011, -+ 0x0010, 0x810c, 0x0048, 0x18b1, 0x3a00, 0xa084, 0xfff7, 0x0078, -+ 0x18b4, 0x3a00, 0xa085, 0x0008, 0x20d0, 0x0005, 0x0005, 0xa084, -+ 0xfffb, 0x20d0, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, -+ 0x0005, 0x0005, 0xa085, 0x0004, 0x20d0, 0x0005, 0x0005, 0x0005, -+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x8211, 0x00c0, 0x18a9, -+ 0x3a00, 0xa085, 0x0008, 0x20d0, 0x2091, 0x8001, 0x0078, 0x12a4, -+ 0x2011, 0x04fd, 0x2204, 0xa082, 0x0004, 0x0048, 0x18ec, 0x78ef, -+ 0x0001, 0x2009, 0xff01, 0x200a, 0x2001, 0x000c, 0x20d8, 0x2001, -+ 0x000c, 0x20d0, 0x0078, 0x12a4, 0x2001, 0x4005, 0x0078, 0x12a6, -+ 0x7978, 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, 0x129c, 0x797a, -+ 0x0078, 0x12a4, 0x7978, 0x71c6, 0x0078, 0x12a4, 0x796c, 0x71c6, -+ 0x71c4, 0x796e, 0x7970, 0x71ca, 0x71c8, 0x7972, 0x7974, 0x71ce, -+ 0x71cc, 0x7976, 0x0078, 0x12a4, 0x796c, 0x71c6, 0x7970, 0x71ca, -+ 0x7974, 0x71ce, 0x0078, 0x12a4, 0x7900, 0x71c6, 0x71c4, 0x7902, -+ 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048, 0x1923, 0x0038, -+ 0x1925, 0x0078, 0x192f, 0x00a8, 0x192f, 0xa18c, 0x0001, 0x00c0, -+ 0x192d, 0x20b9, 0x1313, 0x0078, 0x192f, 0x20b9, 0x1212, 0x0078, -+ 0x12a4, 0x7900, 0x71c6, 0x0078, 0x12a4, 0x2009, 0x3d79, 0x2104, -+ 0x70c6, 0x70c4, 0x200a, 0x0078, 0x12a4, 0x2009, 0x3d79, 0x2104, -+ 0x70c6, 0x0078, 0x12a4, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, -+ 0x8003, 0x8003, 0xa0e8, 0x3f80, 0x6a14, 0xd2b4, 0x0040, 0x1954, -+ 0x2011, 0x0001, 0x0078, 0x1956, 0x2011, 0x0000, 0x6b0c, 0x0078, -+ 0x12a1, 0x700c, 0xa084, 0x00ff, 0x0040, 0x1965, 0x7007, 0x0004, -+ 0x7004, 0xa084, 0x0004, 0x00c0, 0x1960, 0x7017, 0x0000, 0x7112, -+ 0x721a, 0x731e, 0x7422, 0x7526, 0xac80, 0x0001, 0x8108, 0x810c, -+ 0x81a9, 0x8098, 0x20a1, 0x0030, 0x6084, 0x20a2, 0x53a6, 0x780c, -+ 0xa085, 0x0000, 0x7002, 0x7007, 0x0001, 0x2009, 0x0022, 0x2104, -+ 0xa084, 0x4000, 0x00c0, 0x197d, 0x7108, 0x8103, 0x00c8, 0x197d, -+ 0x7014, 0xa005, 0x0040, 0x197d, 0x7007, 0x0002, 0xa184, 0x01e0, -+ 0x7003, 0x0000, 0x007c, 0x700c, 0xa084, 0x00ff, 0x0040, 0x199f, -+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x199a, 0x7017, -+ 0x0000, 0x7112, 0x721a, 0x7422, 0x7526, 0x731e, 0x2099, 0x0030, -+ 0x8108, 0x81ac, 0x780c, 0xa085, 0x0001, 0x7002, 0x7007, 0x0001, -+ 0x2009, 0x0022, 0x2104, 0xa084, 0x4000, 0x00c0, 0x19b0, 0x7008, -+ 0x800b, 0x00c8, 0x19b0, 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, -+ 0x19c6, 0xac80, 0x0001, 0x20a0, 0x53a5, 0xa006, 0x7003, 0x0000, -+ 0x007c, 0x7850, 0xa065, 0x0040, 0x19d1, 0x2c04, 0x7852, 0x2063, -+ 0x0000, 0x007c, 0x0f7e, 0x2079, 0x3d00, 0x7850, 0x2062, 0x2c00, -+ 0xa005, 0x00c0, 0x19dd, 0x1078, 0x20c8, 0x7852, 0x0f7f, 0x007c, -+ 0x2011, 0x6300, 0x7a52, 0x7be0, 0x8319, 0x0040, 0x19ed, 0xa280, -+ 0x002f, 0x2012, 0x2010, 0x0078, 0x19e4, 0x2013, 0x0000, 0x007c, -+ 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, -+ 0x8003, 0xa105, 0xa0e8, 0x4000, 0x007c, 0x1078, 0x19f0, 0x2900, -+ 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084, 0xffef, 0xa80d, 0x690a, -+ 0x2009, 0x3d4f, 0x210c, 0x6804, 0xa005, 0x0040, 0x1a1a, 0xa116, -+ 0x00c0, 0x1a1a, 0x2060, 0x6000, 0x6806, 0x017e, 0x200b, 0x0000, -+ 0x0078, 0x1a1d, 0x2009, 0x0000, 0x017e, 0x6804, 0xa065, 0x0040, -+ 0x1a2c, 0x6000, 0x6806, 0x1078, 0x1a3d, 0x1078, 0x1b6d, 0x6810, -+ 0x8001, 0x6812, 0x00c0, 0x1a1d, 0x017f, 0x6902, 0x6906, 0x007c, -+ 0xa065, 0x0040, 0x1a3c, 0x609c, 0x609f, 0x0000, 0x2008, 0x1078, -+ 0x19d2, 0x2100, 0x0078, 0x1a30, 0x007c, 0x6007, 0x0103, 0x608f, -+ 0x0000, 0x20a9, 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, -+ 0x40a4, 0x6828, 0x601a, 0x682c, 0x6022, 0x007c, 0x0e7e, 0x2071, -+ 0x3d40, 0x7040, 0xa08c, 0x0200, 0x00c0, 0x1a5c, 0xa088, 0x3d80, -+ 0x2d0a, 0x8000, 0x7042, 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x2071, -+ 0x3d40, 0x2009, 0x3d80, 0x7240, 0x8221, 0x8211, 0x0048, 0x1a76, -+ 0x2104, 0x8108, 0xad06, 0x00c0, 0x1a65, 0x8119, 0x211e, 0x8108, -+ 0x8318, 0x8211, 0x00c8, 0x1a6e, 0x7442, 0xa006, 0x0e7f, 0x007c, -+ 0x1078, 0x19f0, 0x2091, 0x8000, 0x6804, 0x781e, 0xa065, 0x0040, -+ 0x1ac1, 0x0078, 0x1a89, 0x2c00, 0x781e, 0x6000, 0xa065, 0x0040, -+ 0x1ac1, 0x6010, 0xa306, 0x00c0, 0x1a83, 0x600c, 0xa206, 0x00c0, -+ 0x1a83, 0x2c28, 0x2001, 0x3d4f, 0x2004, 0xac06, 0x00c0, 0x1a9a, -+ 0x0078, 0x1abe, 0x6804, 0xac06, 0x00c0, 0x1aa8, 0x6000, 0x2060, -+ 0x6806, 0xa005, 0x00c0, 0x1aa8, 0x6803, 0x0000, 0x0078, 0x1ab2, -+ 0x6400, 0x781c, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1ab2, -+ 0x2c00, 0x6802, 0x2560, 0x1078, 0x1a3d, 0x601b, 0x0005, 0x6023, -+ 0x0020, 0x1078, 0x1b6d, 0x6810, 0x8001, 0x6812, 0x2001, 0xffff, -+ 0xa005, 0x007c, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, -+ 0x2051, 0x0008, 0x2091, 0x8000, 0x1078, 0x19fd, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x1acc, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, -+ 0xa784, 0x0f00, 0x00c0, 0x1acc, 0x2091, 0x8001, 0x007c, 0x2061, -+ 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1af0, 0x2091, 0x8000, -+ 0x78d4, 0x78d7, 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0, 0x1af1, -+ 0x007c, 0xa08c, 0xfff0, 0x0040, 0x1af7, 0x1078, 0x20c8, 0x0079, -+ 0x1af9, 0x1b09, 0x1b0c, 0x1b12, 0x1b16, 0x1b0a, 0x1b1a, 0x1b0a, -+ 0x1b20, 0x1b24, 0x1b28, 0x1b5b, 0x1b5f, 0x1b0a, 0x1b0a, 0x1b0a, -+ 0x1b0a, 0x007c, 0x1078, 0x20c8, 0x1078, 0x1ac2, 0x2001, 0x8001, -+ 0x0078, 0x1b65, 0x2001, 0x8003, 0x0078, 0x1b65, 0x2001, 0x8004, -+ 0x0078, 0x1b65, 0x1078, 0x1ac2, 0x2001, 0x8006, 0x0078, 0x1b65, -+ 0x2001, 0x8008, 0x0078, 0x1b65, 0x2001, 0x8009, 0x0078, 0x1b65, -+ 0x2091, 0x8000, 0x2069, 0x3d40, 0x6800, 0xa086, 0x0000, 0x0040, -+ 0x1b36, 0x2091, 0x8001, 0x78d7, 0x0009, 0x007c, 0x68b4, 0xa0bc, -+ 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x1078, -+ 0x19fd, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1b3f, 0x2091, 0x8001, -+ 0x2001, 0x800a, 0x0078, 0x1b65, 0x2001, 0x04fd, 0x2004, 0xa082, -+ 0x0004, 0x00c8, 0x1b55, 0x0078, 0x1b58, 0xa006, 0x0078, 0x1b5a, -+ 0xa085, 0x0001, 0x007c, 0x2001, 0x800c, 0x0078, 0x1b65, 0x1078, -+ 0x1ac2, 0x2001, 0x800d, 0x0078, 0x1b65, 0x70c2, 0x2061, 0x0000, -+ 0x601b, 0x0001, 0x2091, 0x4080, 0x007c, 0x6004, 0x6086, 0x2c08, -+ 0x2063, 0x0000, 0x787c, 0x8000, 0x787e, 0x7880, 0xa005, 0x7982, -+ 0x0040, 0x1b7d, 0x2c02, 0x0078, 0x1b7e, 0x7986, 0x007c, 0x0c7e, -+ 0x2061, 0x3d00, 0x6887, 0x0103, 0x2d08, 0x206b, 0x0000, 0x607c, -+ 0x8000, 0x607e, 0x6080, 0xa005, 0x6182, 0x0040, 0x1b92, 0x2d02, -+ 0x0078, 0x1b93, 0x6186, 0x0c7f, 0x007c, 0x1078, 0x1ba6, 0x0040, -+ 0x1ba5, 0x0c7e, 0x609c, 0xa065, 0x0040, 0x1ba0, 0x1078, 0x1a30, -+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x19d2, 0x007c, 0x7884, 0xa065, -+ 0x0040, 0x1bb8, 0x2091, 0x8000, 0x787c, 0x8001, 0x787e, 0x2c04, -+ 0x7886, 0xa005, 0x00c0, 0x1bb6, 0x7882, 0x8000, 0x2091, 0x8001, -+ 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, -+ 0x1bc2, 0xa200, 0x0070, 0x1bc6, 0x0078, 0x1bbd, 0x8086, 0x818e, -+ 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x1bec, 0xa11a, -+ 0x00c8, 0x1bec, 0x8213, 0x818d, 0x0048, 0x1bdd, 0xa11a, 0x00c8, -+ 0x1bde, 0x0070, 0x1be4, 0x0078, 0x1bd2, 0xa11a, 0x2308, 0x8210, -+ 0x0070, 0x1be4, 0x0078, 0x1bd2, 0x007e, 0x3200, 0xa084, 0xf7ff, -+ 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, -+ 0x0078, 0x1be8, 0x798c, 0x70d0, 0x007e, 0x007f, 0xa106, 0x0040, -+ 0x1c6e, 0x7800, 0xa084, 0x0002, 0x0040, 0x1c05, 0x2011, 0x04fd, -+ 0x2204, 0xa082, 0x0005, 0x00c8, 0x1c18, 0x2091, 0x8000, 0x2071, -+ 0x0020, 0x7004, 0xa005, 0x00c0, 0x1c6e, 0x7008, 0x7208, 0xa206, -+ 0x00c0, 0x1c6e, 0xa286, 0x0008, 0x00c0, 0x1c6e, 0x2071, 0x0010, -+ 0x1078, 0x19c9, 0x0040, 0x1c6e, 0x7a94, 0x7b90, 0x7c9c, 0x7d98, -+ 0xa184, 0xff00, 0x0040, 0x1c3c, 0x2031, 0x0000, 0x810b, 0x86b5, -+ 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, -+ 0x810b, 0x86b5, 0x2100, 0xa210, 0x2600, 0xa319, 0xa4a1, 0x0000, -+ 0xa5a9, 0x0000, 0x0078, 0x1c46, 0x8107, 0x8004, 0x8004, 0xa210, -+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x2009, 0x0040, -+ 0x1078, 0x1993, 0x2091, 0x8001, 0x0040, 0x1c65, 0x1078, 0x19d2, -+ 0x78a0, 0x8000, 0x78a2, 0xa086, 0x0002, 0x00c0, 0x1c6e, 0x2091, -+ 0x8000, 0x78d7, 0x0002, 0x78a3, 0x0000, 0x78c0, 0xa085, 0x0003, -+ 0x78c2, 0x2091, 0x8001, 0x0078, 0x1c6e, 0x78a3, 0x0000, 0x1078, -+ 0x1e0d, 0x6004, 0xa084, 0x000f, 0x0079, 0x1c73, 0x2071, 0x0010, -+ 0x2091, 0x8001, 0x007c, 0x1c83, 0x1ca5, 0x1ccb, 0x1c83, 0x1cdd, -+ 0x1c92, 0x1c83, 0x1c83, 0x1c83, 0x1c9f, 0x1cc5, 0x1c83, 0x1c83, -+ 0x1c83, 0x1c83, 0x1c83, 0x2039, 0x0400, 0x78d0, 0xa705, 0x78d2, -+ 0x6008, 0xa705, 0x600a, 0x1078, 0x1d28, 0x609c, 0x78ce, 0x1078, -+ 0x1df5, 0x007c, 0x78d0, 0xa084, 0x0100, 0x0040, 0x1c99, 0x0078, -+ 0x1c83, 0x601c, 0xa085, 0x0080, 0x601e, 0x0078, 0x1cac, 0x1078, -+ 0x1b4c, 0x00c0, 0x1c83, 0x1078, 0x1e27, 0x78d0, 0xa084, 0x0100, -+ 0x0040, 0x1cac, 0x0078, 0x1c83, 0x78d3, 0x0000, 0x6004, 0x8007, -+ 0xa084, 0x00ff, 0x78c6, 0x8001, 0x609f, 0x0000, 0x0040, 0x1cc2, -+ 0x1078, 0x1d28, 0x0040, 0x1cc2, 0x78d0, 0xa085, 0x0100, 0x78d2, -+ 0x0078, 0x1cc4, 0x1078, 0x1d4c, 0x007c, 0x1078, 0x1b4c, 0x00c0, -+ 0x1c83, 0x1078, 0x1e23, 0x78d0, 0xa08c, 0x0e00, 0x00c0, 0x1cd4, -+ 0xa084, 0x0100, 0x00c0, 0x1cd6, 0x0078, 0x1c83, 0x1078, 0x1d28, -+ 0x00c0, 0x1cdc, 0x1078, 0x1d4c, 0x007c, 0x78d0, 0xa084, 0x0100, -+ 0x0040, 0x1ce4, 0x0078, 0x1c83, 0x78d3, 0x0000, 0x6714, 0x2011, -+ 0x0001, 0x20a9, 0x0001, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, -+ 0x1d07, 0x2011, 0x0001, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, -+ 0x0001, 0x0040, 0x1d07, 0x2039, 0x0000, 0x2011, 0x0002, 0x20a9, -+ 0x0100, 0xa08e, 0x0002, 0x0040, 0x1d07, 0x0078, 0x1d25, 0x1078, -+ 0x19f0, 0x2d00, 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, -+ 0x6808, 0xa084, 0xffde, 0x680a, 0x2d00, 0xa080, 0x0010, 0x2068, -+ 0x2091, 0x8001, 0x0070, 0x1d1e, 0x0078, 0x1d0a, 0x8211, 0x0040, -+ 0x1d25, 0x20a9, 0x0100, 0x0078, 0x1d0a, 0x1078, 0x19d2, 0x007c, -+ 0x78c8, 0xa06d, 0x00c0, 0x1d33, 0x2c00, 0x78ca, 0x78ce, 0x609f, -+ 0x0000, 0x0078, 0x1d3f, 0x2c00, 0x689e, 0x609f, 0x0000, 0x78ca, -+ 0x2d00, 0x6002, 0x78cc, 0xad06, 0x00c0, 0x1d3f, 0x6002, 0x78c4, -+ 0x8001, 0x78c6, 0x00c0, 0x1d4b, 0x78d0, 0xa084, 0x0000, 0x78d2, -+ 0x78cc, 0x2060, 0xa006, 0x007c, 0xa02e, 0x2530, 0x611c, 0x61a2, -+ 0xa184, 0xe1ff, 0x601e, 0xa184, 0x0060, 0x0040, 0x1d5b, 0x0e7e, -+ 0x1078, 0x3736, 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, -+ 0x0000, 0x60b3, 0x0000, 0x6714, 0x1078, 0x19f0, 0x2091, 0x8000, -+ 0x60a0, 0xa084, 0x8000, 0x00c0, 0x1d82, 0x6808, 0xa084, 0x0001, -+ 0x0040, 0x1d82, 0x2091, 0x8001, 0x1078, 0x1a3d, 0x2091, 0x8000, -+ 0x1078, 0x1b6d, 0x2091, 0x8001, 0x78cb, 0x0000, 0x78cf, 0x0000, -+ 0x0078, 0x1df4, 0x6024, 0xa096, 0x0001, 0x00c0, 0x1d89, 0x8000, -+ 0x6026, 0x6a10, 0x6814, 0x2091, 0x8001, 0xa202, 0x0048, 0x1d98, -+ 0x0040, 0x1d98, 0x2039, 0x0200, 0x1078, 0x1df5, 0x0078, 0x1df4, -+ 0x2c08, 0x2091, 0x8000, 0x60a0, 0xa084, 0x8000, 0x0040, 0x1dc5, -+ 0x6800, 0xa065, 0x0040, 0x1dca, 0x6a04, 0x0e7e, 0x2071, 0x3d40, -+ 0x7000, 0xa084, 0x0001, 0x0040, 0x1dbf, 0x703c, 0xa206, 0x00c0, -+ 0x1dbf, 0x6b04, 0x231c, 0x2160, 0x6302, 0x2300, 0xa005, 0x00c0, -+ 0x1dba, 0x6902, 0x2260, 0x6102, 0x0e7f, 0x0078, 0x1dd1, 0x2160, -+ 0x6202, 0x6906, 0x0e7f, 0x0078, 0x1dd1, 0x6800, 0xa065, 0x0040, -+ 0x1dca, 0x6102, 0x6902, 0x00c0, 0x1dce, 0x6906, 0x2160, 0x6003, -+ 0x0000, 0x2160, 0x60a0, 0xa084, 0x8000, 0x0040, 0x1ddb, 0x6808, -+ 0xa084, 0xfffc, 0x680a, 0x6810, 0x8000, 0x6812, 0x2091, 0x8001, -+ 0x6808, 0xa08c, 0x0040, 0x0040, 0x1dea, 0xa086, 0x0040, 0x680a, -+ 0x1078, 0x1a4e, 0x2091, 0x8000, 0x1078, 0x1f05, 0x2091, 0x8001, -+ 0x78cf, 0x0000, 0x78cb, 0x0000, 0x007c, 0x6008, 0xa705, 0x600a, -+ 0x2091, 0x8000, 0x1078, 0x1b6d, 0x2091, 0x8001, 0x78cc, 0xa065, -+ 0x0040, 0x1e08, 0x609c, 0x78ce, 0x609f, 0x0000, 0x0078, 0x1df8, -+ 0x78cb, 0x0000, 0x78cf, 0x0000, 0x007c, 0x7988, 0x788c, 0x8000, -+ 0xa10a, 0x00c8, 0x1e14, 0xa006, 0x788e, 0x70d2, 0x7804, 0xa005, -+ 0x0040, 0x1e22, 0x8001, 0x7806, 0x00c0, 0x1e22, 0x0068, 0x1e22, -+ 0x2091, 0x4080, 0x007c, 0x2039, 0x1e3b, 0x0078, 0x1e29, 0x2039, -+ 0x1e41, 0x2704, 0xa005, 0x0040, 0x1e3a, 0xac00, 0x2068, 0x6b08, -+ 0x6c0c, 0x6910, 0x6a14, 0x690a, 0x6a0e, 0x6b12, 0x6c16, 0x8738, -+ 0x0078, 0x1e29, 0x007c, 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, -+ 0x0000, 0x0015, 0x001b, 0x0000, 0x0068, 0x1e8a, 0x2029, 0x0000, -+ 0x7884, 0xa065, 0x0040, 0x1e85, 0x2009, 0x3d79, 0x2104, 0xa084, -+ 0x0001, 0x0040, 0x1e78, 0x6084, 0xa086, 0x0103, 0x00c0, 0x1e78, -+ 0x6018, 0xa005, 0x00c0, 0x1e78, 0x6014, 0xa005, 0x00c0, 0x1e78, -+ 0x0d7e, 0x2069, 0x0000, 0x6818, 0xa084, 0x0001, 0x00c0, 0x1e77, -+ 0x600c, 0x70c6, 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001, -+ 0x2091, 0x4080, 0x0d7f, 0x1078, 0x1b95, 0x0078, 0x1e85, 0x0d7f, -+ 0x1078, 0x1e8b, 0x0040, 0x1e85, 0x057e, 0x1078, 0x1e9c, 0x057f, -+ 0x00c0, 0x1e85, 0x8528, 0x0078, 0x1e48, 0x85ff, 0x0040, 0x1e8a, -+ 0x2091, 0x4080, 0x007c, 0x7ba4, 0x79a8, 0x70d4, 0x007e, 0x007f, -+ 0xa102, 0x00c0, 0x1e96, 0x2300, 0xa005, 0x007c, 0x0048, 0x1e9a, -+ 0xa302, 0x007c, 0x8002, 0x007c, 0x7800, 0xa084, 0x0002, 0x0040, -+ 0x1ea8, 0x2011, 0x04fd, 0x2204, 0xa082, 0x0005, 0x00c8, 0x1ebb, -+ 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x1eec, -+ 0x7008, 0x7208, 0xa206, 0x00c0, 0x1eec, 0xa286, 0x0008, 0x00c0, -+ 0x1eec, 0x2071, 0x0010, 0x1078, 0x1ef1, 0x2009, 0x0018, 0x6028, -+ 0xa005, 0x0040, 0x1ec5, 0x2009, 0x0040, 0x1078, 0x1959, 0x0040, -+ 0x1ede, 0x78bc, 0x8000, 0x78be, 0xa086, 0x0002, 0x00c0, 0x1eec, -+ 0x2091, 0x8000, 0x78d7, 0x0003, 0x78bf, 0x0000, 0x78c0, 0xa085, -+ 0x0300, 0x78c2, 0x2091, 0x8001, 0x0078, 0x1eec, 0x78bf, 0x0000, -+ 0x1078, 0x1b95, 0x79a4, 0x78a8, 0x8000, 0xa10a, 0x00c8, 0x1ee9, -+ 0xa006, 0x78aa, 0x70d6, 0xa006, 0x2071, 0x0010, 0x2091, 0x8001, -+ 0x007c, 0x8107, 0x8004, 0x8004, 0x7ab0, 0x7bac, 0x7cb8, 0x7db4, -+ 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, -+ 0x2009, 0x3d68, 0x2091, 0x8000, 0x200a, 0x0f7e, 0x2079, 0x0100, -+ 0x2009, 0x3d40, 0x2104, 0xa086, 0x0000, 0x00c0, 0x1f1e, 0x2009, -+ 0x3d12, 0x2104, 0xa005, 0x00c0, 0x1f1e, 0x7830, 0xa084, 0x00c0, -+ 0x00c0, 0x1f1e, 0x0018, 0x1f1e, 0x781b, 0x0045, 0x0f7f, 0x007c, -+ 0x127e, 0x2091, 0x2300, 0x2071, 0x3d40, 0x2079, 0x0100, 0x784b, -+ 0x000f, 0x2019, 0x35fc, 0x20a1, 0x012b, 0x2304, 0xa005, 0x0040, -+ 0x1f3a, 0x789a, 0x8318, 0x23ac, 0x8318, 0x2398, 0x53a6, 0x3318, -+ 0x0078, 0x1f2d, 0x789b, 0x0020, 0x20a9, 0x0010, 0x78af, 0x0000, -+ 0x78af, 0x0020, 0x0070, 0x1f46, 0x0078, 0x1f3e, 0x7003, 0x0000, -+ 0x1078, 0x205c, 0x7004, 0xa084, 0x000f, 0x017e, 0x2009, 0x04fd, -+ 0x210c, 0xa18a, 0x0005, 0x0048, 0x1f5d, 0x0038, 0x1f59, 0x0078, -+ 0x1f5d, 0xa085, 0x62c0, 0x0078, 0x1f5f, 0xa085, 0x6280, 0x017f, -+ 0x7806, 0x780f, 0x9200, 0x7843, 0x00d8, 0x7853, 0x0080, 0x780b, -+ 0x0008, 0x7047, 0x3d7f, 0x7043, 0x0000, 0x127f, 0x2000, 0x007c, -+ 0xa18c, 0x000f, 0x2011, 0x0101, 0x2204, 0xa084, 0xfff0, 0xa105, -+ 0x2012, 0x1078, 0x205c, 0x007c, 0x2011, 0x0101, 0x20a9, 0x0009, -+ 0x810b, 0x0070, 0x1f85, 0x0078, 0x1f80, 0xa18c, 0x0e00, 0x2204, -+ 0xa084, 0xf1ff, 0xa105, 0x2012, 0x007c, 0x2009, 0x0101, 0x20a9, -+ 0x0005, 0x8213, 0x0070, 0x1f96, 0x0078, 0x1f91, 0xa294, 0x00e0, -+ 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a, 0x007c, 0x2011, 0x0101, -+ 0x20a9, 0x000c, 0x810b, 0x0070, 0x1fa7, 0x0078, 0x1fa2, 0xa18c, -+ 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105, 0x2012, 0x007c, 0x2011, -+ 0x0102, 0x2204, 0xa084, 0xffcf, 0xa105, 0x2012, 0x007c, 0x8103, -+ 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x62ac, -+ 0x63ac, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0022, 0x0c7e, -+ 0x2061, 0x0100, 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x0c7f, -+ 0x007c, 0x8103, 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061, 0x0100, -+ 0x609a, 0x60a4, 0xa085, 0x0020, 0x60ae, 0x0c7f, 0x007c, 0x8103, -+ 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, -+ 0x62ae, 0x2010, 0x60a4, 0x63ae, 0x2018, 0x0c7f, 0x007c, 0x2091, -+ 0x8000, 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040, 0x203a, 0x2061, -+ 0x6100, 0x1078, 0x2042, 0x0040, 0x2024, 0x20a9, 0x0000, 0x2061, -+ 0x6000, 0x0c7e, 0x1078, 0x2042, 0x0040, 0x200e, 0x0c7f, 0x8c60, -+ 0x0070, 0x200c, 0x0078, 0x2001, 0x0078, 0x203a, 0x007f, 0xa082, -+ 0x6000, 0x2071, 0x3d40, 0x70ba, 0x6020, 0xa085, 0x0800, 0x6022, -+ 0x71b6, 0x2001, 0x0004, 0x70a2, 0x70c7, 0x000f, 0x70a7, 0x0000, -+ 0x1078, 0x1f00, 0x0078, 0x2036, 0x2071, 0x3d40, 0x6020, 0xa085, -+ 0x0800, 0x6022, 0x71b6, 0x2c00, 0x70be, 0x2001, 0x0006, 0x70a2, -+ 0x70c7, 0x000f, 0x70a7, 0x0000, 0x1078, 0x1f00, 0x2001, 0x0000, -+ 0x0078, 0x203c, 0x2001, 0x0001, 0x2091, 0x8001, 0xa005, 0x0e7f, -+ 0x0c7f, 0x007c, 0x2c04, 0xa005, 0x0040, 0x2059, 0x2060, 0x6010, -+ 0xa306, 0x00c0, 0x2056, 0x600c, 0xa206, 0x00c0, 0x2056, 0x6014, -+ 0xa106, 0x00c0, 0x2056, 0xa006, 0x0078, 0x205b, 0x6000, 0x0078, -+ 0x2043, 0xa085, 0x0001, 0x007c, 0x2011, 0x3d41, 0x220c, 0xa18c, -+ 0x000f, 0x2011, 0x013b, 0x2204, 0xa084, 0x0100, 0x0040, 0x2072, -+ 0x2021, 0xff04, 0x2122, 0x810b, 0x810b, 0x810b, 0x810b, 0xa18d, -+ 0x0f00, 0x2104, 0x007c, 0x0e7e, 0x68e4, 0xa08c, 0x0020, 0x0040, -+ 0x20c6, 0xa084, 0x0006, 0x00c0, 0x20c6, 0x6014, 0x8007, 0xa084, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0xa0f0, 0x3f80, 0x7004, 0xa084, -+ 0x000a, 0x00c0, 0x20c6, 0x7108, 0xa194, 0xff00, 0x0040, 0x20c6, -+ 0xa18c, 0x00ff, 0x2001, 0x000c, 0xa106, 0x0040, 0x20ad, 0x2001, -+ 0x0012, 0xa106, 0x0040, 0x20b1, 0x2001, 0x0014, 0xa106, 0x0040, -+ 0x20b5, 0x2001, 0x0019, 0xa106, 0x0040, 0x20b9, 0x2001, 0x0032, -+ 0xa106, 0x0040, 0x20bd, 0x0078, 0x20c1, 0x2009, 0x0012, 0x0078, -+ 0x20c3, 0x2009, 0x0014, 0x0078, 0x20c3, 0x2009, 0x0019, 0x0078, -+ 0x20c3, 0x2009, 0x0020, 0x0078, 0x20c3, 0x2009, 0x003f, 0x0078, -+ 0x20c3, 0x2011, 0x0000, 0x2100, 0xa205, 0x700a, 0x0e7f, 0x007c, -+ 0x0068, 0x20c8, 0x2091, 0x8000, 0x2071, 0x0000, 0x007e, 0x7018, -+ 0xa084, 0x0001, 0x00c0, 0x20cf, 0x007f, 0x2071, 0x0010, 0x70ca, -+ 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db, 0x0442, 0x70df, 0x0000, -+ 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x20e6, -+ 0x107e, 0x007e, 0x127e, 0x2091, 0x2300, 0x7f3c, 0x7e58, 0x7c30, -+ 0x7d38, 0x2009, 0x3d74, 0x78a0, 0x200a, 0x8108, 0x250a, 0x8108, -+ 0x240a, 0x8108, 0x260a, 0x8108, 0x270a, 0xa594, 0x003f, 0xa484, -+ 0x4000, 0x0040, 0x210c, 0xa784, 0x007d, 0x00c0, 0x3585, 0xd784, -+ 0x00c0, 0x2d06, 0x1078, 0x20c8, 0xa49c, 0x000f, 0xa382, 0x0004, -+ 0x0050, 0x2114, 0x1078, 0x20c8, 0x8507, 0xa084, 0x000f, 0x0079, -+ 0x2119, 0x25cf, 0x268a, 0x26b2, 0x2946, 0x2bc0, 0x2c23, 0x2c81, -+ 0x2d06, 0x2dad, 0x2e33, 0x2141, 0x2129, 0x2418, 0x24ef, 0x2b9b, -+ 0x2129, 0x1078, 0x20c8, 0x0018, 0x20ed, 0x127f, 0x2091, 0x8001, -+ 0x007f, 0x107f, 0x007c, 0x7003, 0x0000, 0x703f, 0x0000, 0x7030, -+ 0xa005, 0x0040, 0x213d, 0x7033, 0x0000, 0x1078, 0x355b, 0x0018, -+ 0x20ed, 0x2009, 0x3d0f, 0x200b, 0x0000, 0x705c, 0xa005, 0x00c0, -+ 0x2216, 0x70a0, 0xa084, 0x0007, 0x0079, 0x214e, 0x2242, 0x2156, -+ 0x2164, 0x2181, 0x21a3, 0x21f0, 0x21c9, 0x2156, 0x7808, 0xa084, -+ 0xfffd, 0x780a, 0x2009, 0x0047, 0x1078, 0x2a7a, 0x00c0, 0x2162, -+ 0x7003, 0x0004, 0x0078, 0x212b, 0x1078, 0x3542, 0x00c0, 0x217f, -+ 0x70b4, 0x8007, 0x7882, 0x789b, 0x0010, 0x78ab, 0x000c, 0x789b, -+ 0x0060, 0x78ab, 0x0001, 0x785b, 0x0004, 0x2009, 0x00fa, 0x1078, -+ 0x2a78, 0x00c0, 0x217f, 0x7003, 0x0004, 0x70c7, 0x000f, 0x0078, -+ 0x212b, 0x1078, 0x3542, 0x00c0, 0x21a1, 0x71b4, 0x8107, 0x7882, -+ 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d, 0x00c0, 0x79aa, 0x78ab, -+ 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, 0x785b, 0x0004, 0x2009, -+ 0x00fa, 0x1078, 0x2a78, 0x00c0, 0x21a1, 0x7003, 0x0004, 0x70c7, -+ 0x000f, 0x0078, 0x212b, 0x1078, 0x3542, 0x00c0, 0x21c7, 0x71b4, -+ 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d, 0x00c0, -+ 0x79aa, 0x78ab, 0x0020, 0x71b8, 0x79aa, 0x78ab, 0x000d, 0x789b, -+ 0x0060, 0x78ab, 0x0004, 0x785b, 0x0004, 0x2009, 0x00fa, 0x1078, -+ 0x2a78, 0x00c0, 0x21c7, 0x7003, 0x0004, 0x70c7, 0x000f, 0x0078, -+ 0x212b, 0x1078, 0x3542, 0x00c0, 0x21ee, 0x71b4, 0x8107, 0x7882, -+ 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d, 0x00c0, 0x79aa, 0x78ab, -+ 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, 0x785b, 0x0004, 0x2009, -+ 0x00fa, 0x1078, 0x2a78, 0x00c0, 0x21ee, 0x70bc, 0x70bf, 0x0000, -+ 0x2068, 0x703e, 0x7003, 0x0002, 0x70c7, 0x000f, 0x0078, 0x212b, -+ 0x1078, 0x3542, 0x00c0, 0x212b, 0x70bc, 0x2068, 0x6f14, 0x1078, -+ 0x3449, 0x2c50, 0x1078, 0x35ea, 0x789b, 0x0010, 0x6814, 0xa084, -+ 0x001f, 0xa085, 0x0080, 0x007e, 0x007f, 0x78aa, 0x6e1c, 0x067e, -+ 0x067f, 0x2041, 0x0001, 0x70c0, 0xa084, 0x0400, 0x2001, 0x0004, -+ 0x0040, 0x2214, 0x2001, 0x0006, 0x0078, 0x2334, 0x1078, 0x3542, -+ 0x00c0, 0x212b, 0x789b, 0x0010, 0x705c, 0x2068, 0x6f14, 0x1078, -+ 0x3449, 0x2c50, 0x1078, 0x35ea, 0x6008, 0xa085, 0x0010, 0x600a, -+ 0x6824, 0xa005, 0x0040, 0x2234, 0xa082, 0x0006, 0x0048, 0x2232, -+ 0x0078, 0x2234, 0x6827, 0x0005, 0x6814, 0xa084, 0x001f, 0xa085, -+ 0x0080, 0x78aa, 0x2031, 0x0020, 0x2041, 0x0001, 0x2001, 0x0003, -+ 0x0078, 0x2334, 0x0018, 0x20ed, 0x7440, 0xa485, 0x0000, 0x0040, -+ 0x226c, 0xa080, 0x3d80, 0x2030, 0x7144, 0x0018, 0x20ed, 0x8108, -+ 0xa12a, 0x0048, 0x2255, 0x2009, 0x3d80, 0x2164, 0x6504, 0x85ff, -+ 0x00c0, 0x2279, 0x8421, 0x00c0, 0x224d, 0x017e, 0x2009, 0x3d0f, -+ 0x2104, 0xa005, 0x00c0, 0x226a, 0x017e, 0x2009, 0x3d10, 0x2104, -+ 0x017f, 0x200a, 0x017f, 0x7146, 0x7003, 0x0000, 0x703f, 0x0000, -+ 0x0078, 0x212b, 0x7640, 0xa6b0, 0x3d80, 0x7144, 0x2600, 0x0078, -+ 0x225a, 0x7146, 0x2568, 0x2558, 0x753e, 0x2c50, 0x6034, 0xa085, -+ 0x0000, 0x00c0, 0x2276, 0x6708, 0x7736, 0xa784, 0x013f, 0x0040, -+ 0x22a7, 0xa784, 0x0021, 0x00c0, 0x2276, 0xa784, 0x0002, 0x0040, -+ 0x2298, 0xa784, 0x0004, 0x0040, 0x2276, 0xa7bc, 0xfffb, 0x670a, -+ 0xa784, 0x0018, 0x00c0, 0x2276, 0xa784, 0x0100, 0x0040, 0x22a7, -+ 0x6018, 0xa005, 0x00c0, 0x2276, 0xa7bc, 0xfeff, 0x670a, 0x6823, -+ 0x0000, 0x6e1c, 0xa684, 0x000e, 0x6118, 0x0040, 0x22b7, 0x601c, -+ 0xa102, 0x0048, 0x22ba, 0x0040, 0x22ba, 0x0078, 0x2272, 0x81ff, -+ 0x00c0, 0x2272, 0xa784, 0x0080, 0x00c0, 0x22c0, 0x700c, 0x6022, -+ 0xa7bc, 0xff7f, 0x670a, 0x1078, 0x35ea, 0x0018, 0x20ed, 0x789b, -+ 0x0010, 0xa046, 0x1078, 0x3542, 0x00c0, 0x212b, 0x6b14, 0xa39c, -+ 0x001f, 0xa39d, 0x00c0, 0x704c, 0xa084, 0x8000, 0x0040, 0x22dc, -+ 0xa684, 0x0001, 0x0040, 0x22de, 0xa39c, 0xffbf, 0xa684, 0x0010, -+ 0x0040, 0x22e4, 0xa39d, 0x0020, 0x7baa, 0x8840, 0xa684, 0x000e, -+ 0x00c0, 0x22ef, 0xa7bd, 0x0010, 0x670a, 0x0078, 0x2330, 0x714c, -+ 0xa18c, 0x0800, 0x0040, 0x304e, 0x2011, 0x0021, 0x8004, 0x8004, -+ 0x0048, 0x2306, 0x2011, 0x0022, 0x8004, 0x0048, 0x2306, 0x2011, -+ 0x0020, 0x8004, 0x0048, 0x2306, 0x0040, 0x2330, 0x7aaa, 0x8840, -+ 0x1078, 0x355b, 0x6a14, 0x610c, 0x8108, 0xa18c, 0x00ff, 0xa1e0, -+ 0x6000, 0x2c64, 0x8cff, 0x0040, 0x2327, 0x6014, 0xa206, 0x00c0, -+ 0x2311, 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x230c, 0x0c7e, 0x2a60, -+ 0x6008, 0xa085, 0x0100, 0x600a, 0x0c7f, 0x0078, 0x2242, 0x1078, -+ 0x3542, 0x00c0, 0x212b, 0x2a60, 0x610e, 0x79aa, 0x8840, 0x712e, -+ 0x0018, 0x20ed, 0x2001, 0x0001, 0x007e, 0x7150, 0xa184, 0x0018, -+ 0x0040, 0x234f, 0xa184, 0x0010, 0x0040, 0x2342, 0x1078, 0x3273, -+ 0x00c0, 0x2372, 0xa184, 0x0008, 0x0040, 0x234f, 0x69a0, 0xa184, -+ 0x0600, 0x00c0, 0x234f, 0x1078, 0x316f, 0x0078, 0x2372, 0x69a0, -+ 0xa184, 0x0800, 0x0040, 0x2366, 0x0c7e, 0x027e, 0x2960, 0x6000, -+ 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d, 0x0010, 0x6106, 0x027f, -+ 0x0c7f, 0x1078, 0x3273, 0x00c0, 0x2372, 0x69a0, 0xa184, 0x0200, -+ 0x0040, 0x236e, 0x1078, 0x31be, 0x0078, 0x2372, 0xa184, 0x0400, -+ 0x00c0, 0x234b, 0x69a0, 0xa184, 0x1000, 0x0040, 0x237d, 0x6914, -+ 0xa18c, 0xff00, 0x810f, 0x1078, 0x1fc3, 0x007f, 0x0018, 0x20ed, -+ 0x7002, 0xa68c, 0x00e0, 0xa684, 0x0060, 0x0040, 0x238d, 0xa086, -+ 0x0060, 0x00c0, 0x238d, 0xa18d, 0x4000, 0x88ff, 0x0040, 0x2392, -+ 0xa18d, 0x0004, 0x795a, 0x69b6, 0x789b, 0x0060, 0x2800, 0x78aa, -+ 0x789b, 0x0061, 0x6818, 0xa08d, 0x8000, 0xa084, 0x7fff, 0x691a, -+ 0xa68c, 0x0080, 0x0040, 0x23b1, 0x70cb, 0x0000, 0xa08a, 0x000d, -+ 0x0050, 0x23af, 0xa08a, 0x000c, 0x71ca, 0x2001, 0x000c, 0x800c, -+ 0x71ce, 0x78aa, 0x8008, 0x810c, 0x0040, 0x3054, 0xa18c, 0x00f8, -+ 0x00c0, 0x3054, 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b, -+ 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, -+ 0x137f, 0x157f, 0x6814, 0x8007, 0x7882, 0x6d94, 0x7dd6, 0x7dde, -+ 0x6e98, 0x7ed2, 0x7eda, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x23da, -+ 0x0098, 0x23e2, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x355b, -+ 0x0078, 0x2133, 0x7200, 0xa284, 0x0007, 0xa086, 0x0001, 0x00c0, -+ 0x23ef, 0x781b, 0x004a, 0x1078, 0x355b, 0x0078, 0x2400, 0x6ab4, -+ 0xa295, 0x2000, 0x7a5a, 0x781b, 0x004a, 0x1078, 0x355b, 0x7200, -+ 0x2500, 0xa605, 0x0040, 0x2400, 0xa284, 0x0007, 0x1079, 0x240e, -+ 0xad80, 0x0009, 0x7032, 0xa284, 0x0007, 0xa086, 0x0001, 0x00c0, -+ 0x212b, 0x6018, 0x8000, 0x601a, 0x0078, 0x212b, 0x2416, 0x39a0, -+ 0x39a0, 0x398f, 0x39a0, 0x2416, 0x398f, 0x2416, 0x1078, 0x20c8, -+ 0x7808, 0xa084, 0xfffd, 0x780a, 0x0f7e, 0x2079, 0x3d00, 0x78c0, -+ 0x0f7f, 0xa084, 0x0001, 0x0040, 0x243e, 0x70a0, 0xa086, 0x0001, -+ 0x00c0, 0x242d, 0x70a2, 0x0078, 0x24d1, 0x70a0, 0xa086, 0x0005, -+ 0x00c0, 0x243c, 0x70bc, 0x2068, 0x681b, 0x0004, 0x6817, 0x0000, -+ 0x6820, 0xa085, 0x0008, 0x6822, 0x70a3, 0x0000, 0x157e, 0x2011, -+ 0x0004, 0x71a0, 0xa186, 0x0001, 0x0040, 0x2460, 0xa186, 0x0007, -+ 0x00c0, 0x2450, 0x2009, 0x3d35, 0x200b, 0x0005, 0x0078, 0x2460, -+ 0x2009, 0x3d13, 0x2104, 0x2009, 0x3d12, 0x200a, 0x2009, 0x3d35, -+ 0x200b, 0x0001, 0x70a3, 0x0000, 0x70a7, 0x0001, 0x0078, 0x2462, -+ 0x70a3, 0x0000, 0x1078, 0x36ec, 0x20a9, 0x0010, 0x2039, 0x0000, -+ 0x1078, 0x3340, 0xa7b8, 0x0100, 0x0070, 0x2470, 0x0078, 0x2468, -+ 0x7000, 0x0079, 0x2473, 0x24a3, 0x248a, 0x248a, 0x247d, 0x24a3, -+ 0x24a3, 0x24a3, 0x247b, 0x1078, 0x20c8, 0x2021, 0x3d57, 0x2404, -+ 0xa005, 0x0040, 0x24a3, 0xad06, 0x00c0, 0x248a, 0x6800, 0x2022, -+ 0x0078, 0x249a, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2496, 0x6f14, -+ 0x1078, 0x3449, 0x1078, 0x3025, 0x0078, 0x249a, 0x7054, 0x2060, -+ 0x6800, 0x6002, 0x6a1a, 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, -+ 0x6822, 0x1078, 0x1b7f, 0x2021, 0x6100, 0x1078, 0x24d7, 0x2021, -+ 0x3d57, 0x1078, 0x24d7, 0x20a9, 0x0000, 0x2021, 0x6000, 0x1078, -+ 0x24d7, 0x8420, 0x0070, 0x24b6, 0x0078, 0x24af, 0x2061, 0x4000, -+ 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, 0x6110, 0x81ff, 0x0040, -+ 0x24c5, 0xa102, 0x0050, 0x24c5, 0x6012, 0x601b, 0x0000, 0xace0, -+ 0x0010, 0x0070, 0x24cd, 0x0078, 0x24bc, 0x8421, 0x00c0, 0x24ba, -+ 0x157f, 0x7003, 0x0000, 0x703f, 0x0000, 0x0078, 0x212b, 0x047e, -+ 0x2404, 0xa005, 0x0040, 0x24eb, 0x2068, 0x6800, 0x007e, 0x6a1a, -+ 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x1078, 0x1b7f, -+ 0x007f, 0x0078, 0x24d9, 0x047f, 0x2023, 0x0000, 0x007c, 0xa282, -+ 0x0003, 0x0050, 0x24f5, 0x1078, 0x20c8, 0x2300, 0x0079, 0x24f8, -+ 0x24fb, 0x256e, 0x258b, 0xa282, 0x0002, 0x0040, 0x2501, 0x1078, -+ 0x20c8, 0x70a0, 0x70a3, 0x0000, 0x70c7, 0x0000, 0x0079, 0x2508, -+ 0x2510, 0x2510, 0x2512, 0x2546, 0x305a, 0x2510, 0x2546, 0x2510, -+ 0x1078, 0x20c8, 0x77b4, 0x1078, 0x3340, 0x77b4, 0xa7bc, 0x0f00, -+ 0x1078, 0x3449, 0x6018, 0xa005, 0x0040, 0x253d, 0x2021, 0x6100, -+ 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, 0x25a8, 0x0040, 0x253d, -+ 0x157e, 0x20a9, 0x0000, 0x2021, 0x6000, 0x047e, 0x2009, 0x0004, -+ 0x2011, 0x0010, 0x1078, 0x25a8, 0x047f, 0x0040, 0x253c, 0x8420, -+ 0x0070, 0x253c, 0x0078, 0x252d, 0x157f, 0x8738, 0xa784, 0x001f, -+ 0x00c0, 0x2518, 0x0078, 0x2133, 0x0078, 0x2133, 0x77b4, 0x1078, -+ 0x3449, 0x6018, 0xa005, 0x0040, 0x256c, 0x2021, 0x6100, 0x2009, -+ 0x0005, 0x2011, 0x0020, 0x1078, 0x25a8, 0x0040, 0x256c, 0x157e, -+ 0x20a9, 0x0000, 0x2021, 0x6000, 0x047e, 0x2009, 0x0005, 0x2011, -+ 0x0020, 0x1078, 0x25a8, 0x047f, 0x0040, 0x256b, 0x8420, 0x0070, -+ 0x256b, 0x0078, 0x255c, 0x157f, 0x0078, 0x2133, 0x2200, 0x0079, -+ 0x2571, 0x2574, 0x2576, 0x2576, 0x1078, 0x20c8, 0x2009, 0x0012, -+ 0x70a0, 0xa086, 0x0002, 0x0040, 0x257f, 0x2009, 0x000e, 0x6818, -+ 0xa084, 0x8000, 0x0040, 0x2585, 0x691a, 0x70a3, 0x0000, 0x70a7, -+ 0x0001, 0x0078, 0x34da, 0x2200, 0x0079, 0x258e, 0x2593, 0x2576, -+ 0x2591, 0x1078, 0x20c8, 0x7000, 0xa086, 0x0001, 0x00c0, 0x25a4, -+ 0x1078, 0x303b, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x2fdd, -+ 0x0040, 0x25a4, 0x0078, 0x2242, 0x1078, 0x2a87, 0x0078, 0x2fea, -+ 0x2404, 0xa005, 0x0040, 0x25cb, 0x2068, 0x2d04, 0x007e, 0x6814, -+ 0xa706, 0x0040, 0x25b7, 0x2d20, 0x007f, 0x0078, 0x25a9, 0x007f, -+ 0x2022, 0x691a, 0x6817, 0x0000, 0x6820, 0xa205, 0x6822, 0x1078, -+ 0x1b7f, 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, -+ 0x1078, 0x303b, 0x007c, 0xa085, 0x0001, 0x0078, 0x25ca, 0x2300, -+ 0x0079, 0x25d2, 0x25d7, 0x25d5, 0x2630, 0x1078, 0x20c8, 0x78e4, -+ 0xa005, 0x00d0, 0x25fa, 0x0018, 0x212b, 0x2008, 0xa084, 0x0030, -+ 0x00c0, 0x25e6, 0x781b, 0x004a, 0x0078, 0x212b, 0x78ec, 0xa084, -+ 0x0003, 0x0040, 0x25e2, 0x2100, 0xa084, 0x0007, 0x0079, 0x25f0, -+ 0x260b, 0x2616, 0x25fe, 0x25f8, 0x3535, 0x3535, 0x25f8, 0x2623, -+ 0x1078, 0x20c8, 0x2001, 0x0003, 0x0078, 0x295a, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x2605, 0x681b, 0x001d, 0x1078, 0x3323, 0x781b, -+ 0x0053, 0x0078, 0x212b, 0x6818, 0xa084, 0x8000, 0x0040, 0x2612, -+ 0x681b, 0x001d, 0x1078, 0x3323, 0x0078, 0x3506, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x261d, 0x681b, 0x001d, 0x1078, 0x3323, 0x781b, -+ 0x00e3, 0x0078, 0x212b, 0x6818, 0xa084, 0x8000, 0x0040, 0x262a, -+ 0x681b, 0x001d, 0x1078, 0x3323, 0x781b, 0x009e, 0x0078, 0x212b, -+ 0xa584, 0x000f, 0x00c0, 0x2651, 0x7000, 0x0079, 0x2637, 0x263f, -+ 0x2641, 0x263f, 0x264d, 0x264d, 0x264d, 0x264d, 0x263f, 0x1078, -+ 0x20c8, 0x1078, 0x303b, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, -+ 0x2fdd, 0x0040, 0x264d, 0x0078, 0x2242, 0x1078, 0x2a87, 0x0078, -+ 0x2fea, 0x78e4, 0xa005, 0x00d0, 0x25fa, 0x0018, 0x25fa, 0x2008, -+ 0xa084, 0x0030, 0x00c0, 0x2660, 0x781b, 0x004a, 0x0078, 0x212b, -+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x265c, 0x2100, 0xa184, 0x0007, -+ 0x0079, 0x266a, 0x267a, 0x267e, 0x2674, 0x2672, 0x3535, 0x3535, -+ 0x2672, 0x352d, 0x1078, 0x20c8, 0x1078, 0x332b, 0x781b, 0x0053, -+ 0x0078, 0x212b, 0x1078, 0x332b, 0x0078, 0x3506, 0x1078, 0x332b, -+ 0x781b, 0x00e3, 0x0078, 0x212b, 0x1078, 0x332b, 0x781b, 0x009e, -+ 0x0078, 0x212b, 0x2300, 0x0079, 0x268d, 0x2692, 0x2690, 0x2694, -+ 0x1078, 0x20c8, 0x0078, 0x2d06, 0x681b, 0x0008, 0x78a3, 0x0000, -+ 0x79e4, 0xa184, 0x0030, 0x0040, 0x2d06, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x2d06, 0xa184, 0x0007, 0x0079, 0x26a6, 0x26ae, 0x267e, -+ 0x25fe, 0x34da, 0x3535, 0x3535, 0x26ae, 0x352d, 0x1078, 0x34ea, -+ 0x0078, 0x212b, 0xa282, 0x0005, 0x0050, 0x26b8, 0x1078, 0x20c8, -+ 0x2300, 0x0079, 0x26bb, 0x26be, 0x290b, 0x2917, 0x2200, 0x0079, -+ 0x26c1, 0x26db, 0x26c8, 0x26db, 0x26c6, 0x28f0, 0x1078, 0x20c8, -+ 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa082, 0x0020, 0x0048, -+ 0x3305, 0xa08a, 0x0004, 0x00c8, 0x3305, 0x0079, 0x26d7, 0x3305, -+ 0x3305, 0x3305, 0x32b3, 0x789b, 0x0018, 0x79a8, 0xa184, 0x0080, -+ 0x0040, 0x26ec, 0x0078, 0x3305, 0x7000, 0xa005, 0x00c0, 0x26e2, -+ 0x2011, 0x0004, 0x0078, 0x2e41, 0xa184, 0x00ff, 0xa08a, 0x0010, -+ 0x00c8, 0x3305, 0x0079, 0x26f4, 0x2706, 0x2704, 0x271e, 0x2722, -+ 0x27dd, 0x3305, 0x3305, 0x27df, 0x3305, 0x3305, 0x28ec, 0x28ec, -+ 0x3305, 0x3305, 0x3305, 0x28ee, 0x1078, 0x20c8, 0xa684, 0x1000, -+ 0x0040, 0x2713, 0x2001, 0x0300, 0x8000, 0x8000, 0x783a, 0x781b, -+ 0x009b, 0x0078, 0x212b, 0x6818, 0xa084, 0x8000, 0x0040, 0x271c, -+ 0x681b, 0x001d, 0x0078, 0x270a, 0x0078, 0x34da, 0x681b, 0x001d, -+ 0x0078, 0x3311, 0x6920, 0x6922, 0xa684, 0x1800, 0x00c0, 0x2763, -+ 0x6820, 0xa084, 0x0001, 0x00c0, 0x276b, 0x6818, 0xa086, 0x0008, -+ 0x00c0, 0x2734, 0x681b, 0x0000, 0xa684, 0x0400, 0x0040, 0x27d9, -+ 0xa684, 0x0080, 0x0040, 0x275f, 0x70cb, 0x0000, 0x6818, 0xa084, -+ 0x003f, 0xa08a, 0x000d, 0x0050, 0x275f, 0xa08a, 0x000c, 0x71ca, -+ 0x2001, 0x000c, 0x800c, 0x71ce, 0x789b, 0x0061, 0x78aa, 0x157e, -+ 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000, 0x80ac, -+ 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x781b, -+ 0x0056, 0x0078, 0x212b, 0xa684, 0x1000, 0x0040, 0x276b, 0x781b, -+ 0x0068, 0x0078, 0x212b, 0xa684, 0x0060, 0x0040, 0x27d5, 0xa684, -+ 0x0800, 0x0040, 0x27d5, 0xa684, 0x8000, 0x00c0, 0x2779, 0x0078, -+ 0x2791, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb6, 0x7adc, 0x79d8, 0x78d0, -+ 0x801b, 0x00c8, 0x2784, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, -+ 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, -+ 0x68ae, 0xa684, 0x4000, 0x0040, 0x2799, 0xa6b4, 0xbfff, 0x7e5a, -+ 0x6eb6, 0x7000, 0xa086, 0x0003, 0x00c0, 0x27a6, 0x1078, 0x3792, -+ 0x1078, 0x398f, 0x781b, 0x0065, 0x0078, 0x212b, 0xa006, 0x1078, -+ 0x3a5e, 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0040, -+ 0x27b5, 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x7cda, -+ 0x6ba6, 0x7bd6, 0x7bde, 0x2300, 0xa405, 0x00c0, 0x27c7, 0xa6b5, -+ 0x4000, 0x7e5a, 0x6eb6, 0x781b, 0x0065, 0x0078, 0x212b, 0x781b, -+ 0x0065, 0x2200, 0xa115, 0x00c0, 0x27d1, 0x1078, 0x39a0, 0x0078, -+ 0x212b, 0x1078, 0x39d5, 0x0078, 0x212b, 0x781b, 0x0068, 0x0078, -+ 0x212b, 0x781b, 0x0056, 0x0078, 0x212b, 0x1078, 0x20c8, 0x0078, -+ 0x283c, 0x6920, 0xa184, 0x0100, 0x0040, 0x27f7, 0xa18c, 0xfeff, -+ 0x6922, 0x0c7e, 0x7048, 0x2060, 0x6000, 0xa084, 0xefff, 0x6002, -+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x282b, 0xa184, -+ 0x0200, 0x0040, 0x282b, 0xa18c, 0xfdff, 0x6922, 0x0c7e, 0x7048, -+ 0x2060, 0x6000, 0xa084, 0xdfff, 0x6002, 0x6004, 0xa084, 0xffef, -+ 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x282b, -+ 0x1078, 0x3445, 0x1078, 0x316f, 0x88ff, 0x0040, 0x282b, 0x789b, -+ 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, -+ 0x0400, 0x00c0, 0x2827, 0x781b, 0x0053, 0x0078, 0x212b, 0x781b, -+ 0x0067, 0x0078, 0x212b, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x2834, -+ 0x781b, 0x0056, 0x0078, 0x212b, 0x781b, 0x0068, 0x0078, 0x212b, -+ 0x0078, 0x330b, 0x0078, 0x330b, 0x2019, 0x0000, 0x7990, 0xa18c, -+ 0x0007, 0x00c0, 0x284a, 0x6820, 0xa084, 0x0100, 0x0040, 0x283a, -+ 0x2009, 0x0008, 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff, 0xa286, -+ 0x0001, 0x00c0, 0x2881, 0x2300, 0x7ca8, 0xa400, 0x2018, 0xa102, -+ 0x0040, 0x2879, 0x0048, 0x285e, 0x0078, 0x287b, 0xa380, 0x0002, -+ 0xa102, 0x00c8, 0x2879, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0c7e, -+ 0x7048, 0x2060, 0x6000, 0xa084, 0xefef, 0x6002, 0x6004, 0xa084, -+ 0xffe5, 0x6006, 0x0c7f, 0x7e58, 0xa6b4, 0xfffb, 0x7e5a, 0x0078, -+ 0x282c, 0x0078, 0x27e1, 0x24a8, 0x7aa8, 0x00f0, 0x287b, 0x0078, -+ 0x284c, 0xa284, 0x00f0, 0xa086, 0x0020, 0x00c0, 0x28dd, 0x8318, -+ 0x8318, 0x2300, 0xa102, 0x0040, 0x2891, 0x0048, 0x2891, 0x0078, -+ 0x28da, 0xa286, 0x0023, 0x0040, 0x283a, 0x681c, 0xa084, 0xfff1, -+ 0x681e, 0x7e58, 0xa684, 0xfff1, 0xa085, 0x0010, 0x2030, 0x7e5a, -+ 0x6008, 0xa085, 0x0010, 0x600a, 0x0c7e, 0x7048, 0x2060, 0x6004, -+ 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0010, 0x0040, 0x28b5, 0x1078, -+ 0x3445, 0x1078, 0x3273, 0x0078, 0x28c4, 0x0c7e, 0x7048, 0x2060, -+ 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x282b, -+ 0x1078, 0x3445, 0x1078, 0x316f, 0x88ff, 0x0040, 0x282b, 0x789b, -+ 0x0060, 0x2800, 0x78aa, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, -+ 0x00c0, 0x28d6, 0x781b, 0x0053, 0x0078, 0x212b, 0x781b, 0x0067, -+ 0x0078, 0x212b, 0x7aa8, 0x0078, 0x284c, 0x8318, 0x2300, 0xa102, -+ 0x0040, 0x28e6, 0x0048, 0x28e6, 0x0078, 0x284c, 0xa284, 0x0080, -+ 0x00c0, 0x3311, 0x0078, 0x330b, 0x0078, 0x3311, 0x0078, 0x3305, -+ 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa08e, 0x0001, 0x0040, -+ 0x28fb, 0x1078, 0x20c8, 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, -+ 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x3305, 0x0079, 0x2907, 0x308b, -+ 0x30c2, 0x3305, 0x320e, 0xa282, 0x0000, 0x00c0, 0x2911, 0x1078, -+ 0x20c8, 0x1078, 0x3323, 0x781b, 0x0067, 0x0078, 0x212b, 0xa282, -+ 0x0003, 0x00c0, 0x291d, 0x1078, 0x20c8, 0xa484, 0x8000, 0x00c0, -+ 0x2940, 0x70a0, 0xa005, 0x0040, 0x2927, 0x1078, 0x20c8, 0x6f14, -+ 0x77b6, 0xa7bc, 0x0f00, 0x1078, 0x3449, 0x6008, 0xa085, 0x0021, -+ 0x600a, 0x8738, 0xa784, 0x001f, 0x00c0, 0x292b, 0x1078, 0x3327, -+ 0x70a3, 0x0002, 0x2009, 0x3d35, 0x200b, 0x0009, 0x0078, 0x2942, -+ 0x1078, 0x3333, 0x781b, 0x0067, 0x0078, 0x212b, 0xa282, 0x0004, -+ 0x0050, 0x294c, 0x1078, 0x20c8, 0x2300, 0x0079, 0x294f, 0x2952, -+ 0x2a33, 0x2a62, 0xa286, 0x0003, 0x0040, 0x2958, 0x1078, 0x20c8, -+ 0x2001, 0x0000, 0x007e, 0x68a0, 0xa084, 0x2000, 0x0040, 0x2964, -+ 0x6008, 0xa085, 0x0002, 0x600a, 0x007f, 0x703a, 0x7000, 0xa084, -+ 0x0007, 0x0079, 0x296b, 0x2133, 0x2975, 0x2975, 0x2b50, 0x2b81, -+ 0x2133, 0x2b81, 0x2973, 0x1078, 0x20c8, 0xa684, 0x1000, 0x00c0, -+ 0x297d, 0x1078, 0x36ec, 0x0040, 0x2a0d, 0x7868, 0xa08c, 0x00ff, -+ 0x0040, 0x29c3, 0xa186, 0x0008, 0x00c0, 0x2994, 0x6008, 0xa084, -+ 0xffef, 0x600a, 0x1078, 0x2fdd, 0x0040, 0x29c3, 0x1078, 0x303b, -+ 0x1078, 0x36ec, 0x0078, 0x29aa, 0xa186, 0x0028, 0x00c0, 0x29c3, -+ 0x1078, 0x36ec, 0x6008, 0xa084, 0xffef, 0x600a, 0x6018, 0xa005, -+ 0x0040, 0x29aa, 0x8001, 0x601a, 0x6008, 0xa085, 0x0008, 0x600a, -+ 0x7010, 0x6026, 0x6820, 0xa084, 0x0001, 0x0040, 0x2133, 0x6820, -+ 0xa084, 0xfffe, 0x6822, 0x7054, 0x0c7e, 0x2060, 0x6800, 0x6002, -+ 0x0c7f, 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0, 0x29c0, 0x6002, -+ 0x6006, 0x0078, 0x2133, 0x017e, 0x1078, 0x2a87, 0x017f, 0xa684, -+ 0xdf00, 0x681e, 0x682b, 0x0000, 0x6f14, 0x81ff, 0x0040, 0x2a0d, -+ 0xa186, 0x0002, 0x00c0, 0x2a0d, 0xa684, 0x0800, 0x00c0, 0x29e0, -+ 0xa684, 0x0060, 0x0040, 0x29e0, 0x78d8, 0x7adc, 0x682e, 0x6a32, -+ 0x6820, 0xa084, 0x0800, 0x00c0, 0x2a0d, 0x8717, 0xa294, 0x000f, -+ 0x8213, 0x8213, 0x8213, 0xa290, 0x3f80, 0xa290, 0x0000, 0x221c, -+ 0xa384, 0x0100, 0x00c0, 0x29f6, 0x0078, 0x29fc, 0x8210, 0x2204, -+ 0xa085, 0x0018, 0x2012, 0x8211, 0xa384, 0x0400, 0x0040, 0x2a09, -+ 0x68a0, 0xa084, 0x0100, 0x00c0, 0x2a09, 0x1078, 0x2b0b, 0x0078, -+ 0x2133, 0x6008, 0xa085, 0x0002, 0x600a, 0x6916, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x2a15, 0x7038, 0x681a, 0xa68c, 0xdf00, 0x691e, -+ 0x1078, 0x302c, 0x1078, 0x303b, 0x00c0, 0x2a22, 0x6008, 0xa084, -+ 0xffef, 0x600a, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2a2b, 0x1078, -+ 0x3025, 0x0078, 0x2a2f, 0x7054, 0x2060, 0x6800, 0x6002, 0x1078, -+ 0x1b7f, 0x0078, 0x2133, 0xa282, 0x0004, 0x0048, 0x2a39, 0x1078, -+ 0x20c8, 0x2200, 0x0079, 0x2a3c, 0x2a37, 0x2a40, 0x2a4d, 0x2a40, -+ 0x7000, 0xa086, 0x0005, 0x0040, 0x2a49, 0x1078, 0x3323, 0x781b, -+ 0x0067, 0x781b, 0x0068, 0x0078, 0x212b, 0x7890, 0x8007, 0x8001, -+ 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, -+ 0xa186, 0x0003, 0x0040, 0x2a5e, 0x0078, 0x3305, 0x781b, 0x0068, -+ 0x0078, 0x212b, 0x6820, 0xa085, 0x0004, 0x6822, 0x82ff, 0x00c0, -+ 0x2a6d, 0x1078, 0x3323, 0x0078, 0x2a74, 0x8211, 0x0040, 0x2a72, -+ 0x1078, 0x20c8, 0x1078, 0x3333, 0x781b, 0x0067, 0x0078, 0x212b, -+ 0x1078, 0x355b, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x2a84, 0x0018, -+ 0x2a84, 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0xa684, -+ 0x0060, 0x00c0, 0x2a91, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, -+ 0x2b0a, 0xa684, 0x0800, 0x00c0, 0x2ab3, 0x68b4, 0xa084, 0x4800, -+ 0xa635, 0xa684, 0x0800, 0x00c0, 0x2ab3, 0x6998, 0x6a94, 0x692e, -+ 0x6a32, 0x7038, 0xa005, 0x00c0, 0x2aab, 0x2200, 0xa105, 0x0040, -+ 0x2ab2, 0x703b, 0x0015, 0x7000, 0xa086, 0x0006, 0x0040, 0x2ab2, -+ 0x1078, 0x36ec, 0x007c, 0xa684, 0x0020, 0x0040, 0x2ad5, 0xa684, -+ 0x4000, 0x0040, 0x2ac1, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, -+ 0x2aab, 0x68b4, 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, -+ 0x2abb, 0x7038, 0xa005, 0x00c0, 0x2acf, 0x703b, 0x0015, 0x79d8, -+ 0x7adc, 0x692e, 0x6a32, 0x0078, 0x2aab, 0xa684, 0x4000, 0x0040, -+ 0x2adf, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x2aab, 0x68b4, -+ 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2ad9, 0x7038, -+ 0xa005, 0x00c0, 0x2aed, 0x703b, 0x0015, 0x79d8, 0x7adc, 0x78d0, -+ 0x80fb, 0x00c8, 0x2af4, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, -+ 0x0000, 0x692e, 0x6a32, 0x2100, 0xa205, 0x00c0, 0x2b01, 0x0078, -+ 0x2aab, 0x7000, 0xa086, 0x0006, 0x0040, 0x2b0a, 0x1078, 0x3a5e, -+ 0x0078, 0x2aab, 0x007c, 0xa384, 0x0200, 0x0040, 0x2b13, 0x6008, -+ 0xa085, 0x0002, 0x600a, 0x681b, 0x0006, 0x688f, 0x0000, 0x6893, -+ 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942, 0x682f, 0x0003, 0x6833, -+ 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, 0x689b, 0x0020, 0x7000, -+ 0x0079, 0x2b2a, 0x2b32, 0x2b34, 0x2b3d, 0x2b32, 0x2b32, 0x2b32, -+ 0x2b32, 0x2b32, 0x1078, 0x20c8, 0x6820, 0xa084, 0x0001, 0x00c0, -+ 0x2b3d, 0x1078, 0x3025, 0x0078, 0x2b43, 0x7054, 0x2c50, 0x2060, -+ 0x6800, 0x6002, 0x2a60, 0x2021, 0x3d57, 0x2404, 0xa005, 0x0040, -+ 0x2b4c, 0x2020, 0x0078, 0x2b45, 0x2d22, 0x206b, 0x0000, 0x007c, -+ 0x1078, 0x302c, 0x1078, 0x303b, 0x682b, 0x0000, 0x789b, 0x000e, -+ 0x6f14, 0x1078, 0x3a90, 0x6817, 0x0002, 0xa684, 0x0800, 0x0040, -+ 0x2b65, 0x691c, 0xa18d, 0x2000, 0x691e, 0x6818, 0xa084, 0x8000, -+ 0x0040, 0x2b75, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x2b73, 0x681b, -+ 0x001e, 0x0078, 0x2b75, 0x681b, 0x0000, 0x2021, 0x3d57, 0x6800, -+ 0x2022, 0x6a3c, 0x6940, 0x6a32, 0x692e, 0x1078, 0x1b7f, 0x0078, -+ 0x2133, 0x1078, 0x2a87, 0x682b, 0x0000, 0x2001, 0x000e, 0x6f14, -+ 0x1078, 0x3560, 0xa08c, 0x00ff, 0x6916, 0x6818, 0xa084, 0x8000, -+ 0x0040, 0x2b94, 0x7038, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x70a3, -+ 0x0000, 0x0078, 0x2133, 0xa006, 0x1078, 0x36ec, 0x6817, 0x0000, -+ 0x681b, 0x0014, 0xa68c, 0xdf00, 0x691e, 0x682b, 0x0000, 0x6820, -+ 0xa085, 0x00ff, 0x6822, 0x7000, 0x0079, 0x2bae, 0x2bb6, 0x2bb8, -+ 0x2bb8, 0x2bba, 0x2bba, 0x2bba, 0x2bba, 0x2bb6, 0x1078, 0x20c8, -+ 0x1078, 0x303b, 0x6008, 0xa084, 0xffef, 0x600a, 0x0078, 0x2ff5, -+ 0x2300, 0x0079, 0x2bc3, 0x2bc6, 0x2bc8, 0x2c21, 0x1078, 0x20c8, -+ 0xa684, 0x8000, 0x00c0, 0x2c06, 0x7000, 0x0079, 0x2bcf, 0x2bd7, -+ 0x2bd9, 0x2bd9, 0x2bf5, 0x2bd9, 0x2c02, 0x2bf5, 0x2bd7, 0x1078, -+ 0x20c8, 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x2bf1, 0xa6b4, -+ 0xffdf, 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, 0x6eb6, 0x681c, -+ 0xa084, 0xffdf, 0x681e, 0x1078, 0x36ec, 0x1078, 0x39a0, 0x0078, -+ 0x34da, 0xa684, 0x2000, 0x0040, 0x2be3, 0x6818, 0xa084, 0x8000, -+ 0x0040, 0x2c02, 0x681b, 0x0015, 0xa684, 0x4000, 0x0040, 0x2c02, -+ 0x681b, 0x0007, 0x1078, 0x34ea, 0x0078, 0x212b, 0xa6b4, 0x7fff, -+ 0x7e5a, 0x7adc, 0x79d8, 0x78d0, 0x79d2, 0x801b, 0x00c8, 0x2c11, -+ 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, -+ 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x781b, 0x0068, -+ 0x007c, 0x1078, 0x20c8, 0x2300, 0x0079, 0x2c26, 0x2c29, 0x2c2b, -+ 0x2c73, 0x1078, 0x20c8, 0xa684, 0x8000, 0x00c0, 0x2c62, 0x7000, -+ 0x0079, 0x2c32, 0x2c39, 0x2c3b, 0x2c3b, 0x2c57, 0x2c3b, 0x2c57, -+ 0x2c39, 0x1078, 0x20c8, 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, -+ 0x2c53, 0xa6b4, 0xffbf, 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, -+ 0x6eb6, 0x681c, 0xa084, 0xffbf, 0x681e, 0x1078, 0x36ec, 0x1078, -+ 0x39a0, 0x0078, 0x34da, 0xa684, 0x2000, 0x0040, 0x2c45, 0x6818, -+ 0xa084, 0x8000, 0x0040, 0x2c5e, 0x681b, 0x0007, 0x781b, 0x00e4, -+ 0x0078, 0x212b, 0xa6b4, 0x7fff, 0x7e5a, 0x7adc, 0x79d8, 0x6b98, -+ 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x79d2, -+ 0x781b, 0x0068, 0x007c, 0x6820, 0xa085, 0x0004, 0x6822, 0x1078, -+ 0x34a7, 0xa6b5, 0x0800, 0x1078, 0x3323, 0x781b, 0x0067, 0x0078, -+ 0x212b, 0x2300, 0x0079, 0x2c84, 0x2c87, 0x2c89, 0x2c8b, 0x1078, -+ 0x20c8, 0x0078, 0x3311, 0xa684, 0x0400, 0x00c0, 0x2cb4, 0x79e4, -+ 0xa184, 0x0020, 0x0040, 0x2c9b, 0x78ec, 0xa084, 0x0003, 0x0040, -+ 0x2c9b, 0x782b, 0x3009, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, -+ 0xfffb, 0x785a, 0x79e4, 0xa184, 0x0020, 0x0040, 0x2cac, 0x78ec, -+ 0xa084, 0x0003, 0x00c0, 0x2cb0, 0x2001, 0x0014, 0x0078, 0x295a, -+ 0xa184, 0x0007, 0x0079, 0x2cec, 0x7a90, 0xa294, 0x0007, 0x789b, -+ 0x0060, 0x79a8, 0x81ff, 0x0040, 0x2cea, 0x789b, 0x0010, 0x7ba8, -+ 0xa384, 0x0001, 0x00c0, 0x2cdb, 0x7ba8, 0x7ba8, 0xa386, 0x0001, -+ 0x00c0, 0x2cce, 0x2009, 0xfff7, 0x0078, 0x2cd4, 0xa386, 0x0003, -+ 0x00c0, 0x2cdb, 0x2009, 0xffef, 0x0c7e, 0x7048, 0x2060, 0x6004, -+ 0xa104, 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, -+ 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c, 0xfdff, 0xa18c, -+ 0xfeff, 0x6922, 0x0078, 0x34da, 0x260b, 0x2616, 0x2cf6, 0x2cfe, -+ 0x2cf4, 0x2cf4, 0x34da, 0x34da, 0x1078, 0x20c8, 0x6920, 0xa18c, -+ 0xfdff, 0xa18c, 0xfeff, 0x6922, 0x0078, 0x34e2, 0x6920, 0xa18c, -+ 0xfdff, 0xa18c, 0xfeff, 0x6922, 0x0078, 0x34da, 0x79e4, 0xa184, -+ 0x0030, 0x0040, 0x2d10, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x2d26, -+ 0x70a0, 0xa086, 0x0002, 0x00c0, 0x2d19, 0x2011, 0x0002, 0x0078, -+ 0x24ef, 0x7000, 0xa086, 0x0000, 0x0040, 0x212b, 0x6818, 0xa085, -+ 0x8000, 0x681a, 0x2001, 0x0014, 0x0078, 0x295a, 0xa184, 0x0007, -+ 0x0079, 0x2d2a, 0x34da, 0x34da, 0x2d32, 0x34da, 0x3535, 0x3535, -+ 0x34da, 0x34da, 0xa684, 0x0080, 0x0040, 0x2d61, 0x71c8, 0x81ff, -+ 0x0040, 0x2d61, 0xa182, 0x000d, 0x00d0, 0x2d42, 0x70cb, 0x0000, -+ 0x0078, 0x2d47, 0xa182, 0x000c, 0x70ca, 0x2009, 0x000c, 0x789b, -+ 0x0061, 0x79aa, 0x157e, 0x137e, 0x147e, 0x70cc, 0x8114, 0xa210, -+ 0x72ce, 0xa080, 0x000b, 0xad00, 0x2098, 0x20a1, 0x012b, 0x789b, -+ 0x0000, 0x8108, 0x81ac, 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078, -+ 0x34e2, 0xa684, 0x0400, 0x00c0, 0x2da2, 0x6820, 0xa084, 0x0001, -+ 0x0040, 0x34e2, 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x2d76, -+ 0xa086, 0x0060, 0x00c0, 0x2d76, 0xa18d, 0x4000, 0xa18c, 0xfffb, -+ 0x795a, 0x69b6, 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061, -+ 0x6818, 0xa085, 0x8000, 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040, -+ 0x3054, 0xa18c, 0x00f8, 0x00c0, 0x3054, 0x157e, 0x137e, 0x147e, -+ 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, -+ 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, 0x7882, -+ 0x0078, 0x34e2, 0x6818, 0xa084, 0x8000, 0x0040, 0x2da9, 0x681b, -+ 0x0008, 0x781b, 0x00d8, 0x0078, 0x212b, 0x2300, 0x0079, 0x2db0, -+ 0x2db5, 0x2e31, 0x2db3, 0x1078, 0x20c8, 0x7000, 0xa084, 0x0007, -+ 0x0079, 0x2dba, 0x2dc2, 0x2dc4, 0x2de9, 0x2958, 0x2dc2, 0x2133, -+ 0x2dc2, 0x2dc2, 0x1078, 0x20c8, 0x681c, 0xa084, 0x2000, 0x0040, -+ 0x2dcd, 0x6008, 0xa085, 0x0002, 0x600a, 0x6920, 0xa18d, 0x0001, -+ 0x6922, 0x6800, 0x6006, 0xa005, 0x00c0, 0x2dd7, 0x6002, 0x681c, -+ 0xa084, 0x000e, 0x0040, 0x2de3, 0x7014, 0x68ba, 0x712c, 0xa188, -+ 0x6000, 0x0078, 0x2de5, 0x2009, 0x6100, 0x2104, 0x6802, 0x2d0a, -+ 0x7156, 0x6eb6, 0xa684, 0x0060, 0x0040, 0x2e2f, 0xa684, 0x0800, -+ 0x00c0, 0x2dfd, 0xa684, 0x7fff, 0x68b6, 0x6894, 0x68a6, 0x6898, -+ 0x68aa, 0x1078, 0x36ec, 0x0078, 0x2e2f, 0xa684, 0x0020, 0x0040, -+ 0x2e0a, 0xa006, 0x1078, 0x3a5e, 0x79d8, 0x7adc, 0x69aa, 0x6aa6, -+ 0x0078, 0x2e10, 0x1078, 0x3456, 0x69aa, 0x6aa6, 0x1078, 0x3a5e, -+ 0xa684, 0x8000, 0x0040, 0x2e2f, 0xa684, 0x7fff, 0x68b6, 0x7adc, -+ 0x79d8, 0xa684, 0x0020, 0x00c0, 0x2e27, 0x78d0, 0x801b, 0x00c8, -+ 0x2e22, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, -+ 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x0078, -+ 0x2133, 0x0078, 0x3311, 0x7033, 0x0000, 0xa282, 0x0006, 0x0050, -+ 0x2e3b, 0x1078, 0x20c8, 0x2300, 0x0079, 0x2e3e, 0x2e41, 0x2e6a, -+ 0x2e90, 0x2200, 0x0079, 0x2e44, 0x2e4a, 0x3311, 0x2e4c, 0x2e4a, -+ 0x2ebc, 0x2f0f, 0x1078, 0x20c8, 0x7003, 0x0005, 0x2001, 0x6110, -+ 0x2068, 0x703e, 0x157e, 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, -+ 0x0070, 0x2e5c, 0x0078, 0x2e55, 0x157f, 0xad80, 0x0009, 0x7032, -+ 0x6817, 0x0000, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, -+ 0x0078, 0x3305, 0x7000, 0xa086, 0x0001, 0x00c0, 0x2e77, 0x1078, -+ 0x303b, 0x1078, 0x36ec, 0x7034, 0x600a, 0x0078, 0x2e7c, 0x7000, -+ 0xa086, 0x0003, 0x0040, 0x2e71, 0x7003, 0x0005, 0x2001, 0x6110, -+ 0x2068, 0x703e, 0xad80, 0x0009, 0x7032, 0x2200, 0x0079, 0x2e88, -+ 0x3311, 0x2e8e, 0x2e8e, 0x2ebc, 0x2e8e, 0x3311, 0x1078, 0x20c8, -+ 0x7000, 0xa086, 0x0001, 0x00c0, 0x2e9d, 0x1078, 0x303b, 0x1078, -+ 0x36ec, 0x7034, 0x600a, 0x0078, 0x2ea2, 0x7000, 0xa086, 0x0003, -+ 0x0040, 0x2e97, 0x7003, 0x0005, 0x2001, 0x6110, 0x2068, 0x703e, -+ 0xad80, 0x0009, 0x7032, 0x2200, 0x0079, 0x2eae, 0x2eb6, 0x2eb4, -+ 0x2eb4, 0x2eb6, 0x2eb4, 0x2eb6, 0x1078, 0x20c8, 0x1078, 0x3333, -+ 0x781b, 0x0067, 0x0078, 0x212b, 0x7000, 0xa086, 0x0001, 0x00c0, -+ 0x2ec9, 0x1078, 0x303b, 0x1078, 0x36ec, 0x7034, 0x600a, 0x0078, -+ 0x2ece, 0x7000, 0xa086, 0x0003, 0x0040, 0x2ec3, 0x7003, 0x0002, -+ 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484, 0x001f, -+ 0xa215, 0x2069, 0x6100, 0x2d04, 0x2d08, 0x7156, 0x2068, 0xa005, -+ 0x0040, 0x2ee9, 0x6814, 0xa206, 0x0040, 0x2f04, 0x6800, 0x0078, -+ 0x2edc, 0x7003, 0x0005, 0x2001, 0x6110, 0x2068, 0x703e, 0x157e, -+ 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, 0x0070, 0x2ef9, 0x0078, -+ 0x2ef2, 0x157f, 0xad80, 0x0009, 0x7032, 0x6a16, 0x68b7, 0x0700, -+ 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084, -+ 0x0c00, 0x0040, 0x2f70, 0x1078, 0x332b, 0x0078, 0x2f70, 0x7000, -+ 0xa086, 0x0001, 0x00c0, 0x2f1c, 0x1078, 0x303b, 0x1078, 0x36ec, -+ 0x7034, 0x600a, 0x0078, 0x2f21, 0x7000, 0xa086, 0x0003, 0x0040, -+ 0x2f16, 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, -+ 0x7ca8, 0xa484, 0x001f, 0xa215, 0x79a8, 0x79a8, 0xa18c, 0x00ff, -+ 0xa1e8, 0x6000, 0x2d04, 0x2d08, 0x7156, 0x2068, 0xa005, 0x0040, -+ 0x2f40, 0x6814, 0xa206, 0x0040, 0x2f5b, 0x6800, 0x0078, 0x2f33, -+ 0x7003, 0x0005, 0x2001, 0x6110, 0x2068, 0x703e, 0x157e, 0x20a9, -+ 0x002f, 0x2003, 0x0000, 0x8000, 0x0070, 0x2f50, 0x0078, 0x2f49, -+ 0x157f, 0xad80, 0x0009, 0x7032, 0x6a16, 0x68b7, 0x0700, 0x6823, -+ 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084, 0x0c00, -+ 0x0040, 0x2f70, 0xa084, 0x0800, 0x0040, 0x2f6a, 0x1078, 0x332f, -+ 0x0078, 0x2f70, 0x1078, 0x332b, 0x70bf, 0x0000, 0x0078, 0x2f70, -+ 0x027e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, -+ 0x3f80, 0x2060, 0x704a, 0x6000, 0x704e, 0x6004, 0x7052, 0xa684, -+ 0x0060, 0x0040, 0x2fb0, 0x6b98, 0x6c94, 0x69ac, 0x68b0, 0xa105, -+ 0x00c0, 0x2f9e, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa6b4, 0xb7ff, -+ 0x7e5a, 0xa684, 0x0060, 0xa086, 0x0060, 0x0040, 0x2fb0, 0x1078, -+ 0x39a0, 0xa6b5, 0x2000, 0x7e5a, 0x0078, 0x2fb0, 0x68b0, 0xa31a, -+ 0x2100, 0xa423, 0x2400, 0xa305, 0x0040, 0x2fb0, 0x7bd2, 0x7bda, -+ 0x7cd6, 0x7cde, 0x68b0, 0xa6b4, 0xbfff, 0x7e5a, 0x1078, 0x39d5, -+ 0x077f, 0x1078, 0x3449, 0x2009, 0x0068, 0xa684, 0x0008, 0x0040, -+ 0x2fcf, 0x78e4, 0xa084, 0x0030, 0x0040, 0x2fc7, 0x78ec, 0xa084, -+ 0x0003, 0x0040, 0x2fc7, 0x2009, 0x0067, 0x0078, 0x2fcf, 0x0f7e, -+ 0x2079, 0x3d00, 0x1078, 0x36ec, 0x0f7f, 0x0078, 0x2133, 0x791a, -+ 0x2d00, 0x703e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xa080, 0x3f80, 0x2048, 0x0078, 0x212b, 0x6020, 0xa005, 0x0040, -+ 0x2fe9, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, 0x600a, 0x7010, -+ 0x6026, 0x007c, 0xa006, 0x1078, 0x36ec, 0x6817, 0x0000, 0x681b, -+ 0x0001, 0x6823, 0x0040, 0x681f, 0x0100, 0x7000, 0xa084, 0x0007, -+ 0x0079, 0x2ffa, 0x3002, 0x3004, 0x3004, 0x3021, 0x300c, 0x3002, -+ 0x300c, 0x3002, 0x1078, 0x20c8, 0x1078, 0x302c, 0x1078, 0x3025, -+ 0x1078, 0x1b7f, 0x0078, 0x2133, 0x70a0, 0x70a3, 0x0000, 0x70c7, -+ 0x0000, 0x0079, 0x3013, 0x301d, 0x301d, 0x301b, 0x301b, 0x301b, -+ 0x301d, 0x301b, 0x301d, 0x0079, 0x2508, 0x70a3, 0x0000, 0x0078, -+ 0x2133, 0x681b, 0x0000, 0x0078, 0x2b50, 0x6800, 0xa005, 0x00c0, -+ 0x302a, 0x6002, 0x6006, 0x007c, 0x6010, 0xa005, 0x0040, 0x3035, -+ 0x8001, 0x00d0, 0x3035, 0x1078, 0x20c8, 0x6012, 0x6008, 0xa084, -+ 0xffef, 0x600a, 0x007c, 0x6018, 0xa005, 0x0040, 0x3041, 0x8001, -+ 0x601a, 0x007c, 0x1078, 0x355b, 0x681b, 0x0018, 0x0078, 0x3078, -+ 0x1078, 0x355b, 0x681b, 0x0019, 0x0078, 0x3078, 0x1078, 0x355b, -+ 0x681b, 0x001a, 0x0078, 0x3078, 0x1078, 0x355b, 0x681b, 0x0003, -+ 0x0078, 0x3078, 0x77b4, 0x1078, 0x3449, 0x71b8, 0xa18c, 0x00ff, -+ 0xa1e8, 0x6000, 0x2d04, 0x2d08, 0x2068, 0xa005, 0x00c0, 0x306a, -+ 0x0078, 0x2133, 0x6814, 0x72b4, 0xa206, 0x0040, 0x3072, 0x6800, -+ 0x0078, 0x3063, 0x6800, 0x200a, 0x681b, 0x0005, 0x70bf, 0x0000, -+ 0x1078, 0x302c, 0x6820, 0xa084, 0x0001, 0x00c0, 0x3081, 0x1078, -+ 0x3025, 0x1078, 0x303b, 0x681f, 0x0000, 0x6823, 0x0020, 0x1078, -+ 0x1b7f, 0x0078, 0x2133, 0xa282, 0x0005, 0x00c0, 0x3305, 0x78a8, -+ 0xa084, 0x00ff, 0x802f, 0x78a8, 0xa084, 0x00ff, 0xa52d, 0x78a8, -+ 0xa084, 0x00ff, 0x8037, 0x78a8, 0xa084, 0x00ff, 0xa635, 0x7cd8, -+ 0x2600, 0xa420, 0x7bdc, 0x2500, 0xa319, 0x0048, 0x3305, 0x7cda, -+ 0x7bde, 0x6caa, 0x7cd2, 0x6ba6, 0x7bd6, 0x1078, 0x3792, 0x1078, -+ 0x398f, 0x781b, 0x0065, 0x0078, 0x212b, 0xa006, 0x1078, 0x3a5e, -+ 0x781b, 0x0065, 0x0078, 0x212b, 0x78d0, 0x79d4, 0x1078, 0x39d5, -+ 0x0078, 0x212b, 0xa282, 0x0003, 0x00c0, 0x3305, 0x7da8, 0xa5ac, -+ 0x00ff, 0x7ea8, 0xa6b4, 0x00ff, 0x6920, 0xa18d, 0x0080, 0x6922, -+ 0xa184, 0x0100, 0x0040, 0x3122, 0xa18c, 0xfeff, 0x6922, 0xa6b4, -+ 0x00ff, 0x0040, 0x310c, 0xa682, 0x000c, 0x0048, 0x30e3, 0x0040, -+ 0x30e3, 0x2031, 0x000c, 0x852b, 0x852b, 0x1078, 0x33be, 0x0040, -+ 0x30ed, 0x1078, 0x31da, 0x0078, 0x3115, 0x1078, 0x3379, 0x0c7e, -+ 0x2960, 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x31fe, 0x0c7f, -+ 0x6920, 0xa18d, 0x0100, 0x6922, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, -+ 0xa684, 0x0400, 0x00c0, 0x3108, 0x781b, 0x0053, 0x0078, 0x212b, -+ 0x781b, 0x0067, 0x0078, 0x212b, 0x0c7e, 0x2960, 0x6004, 0xa084, -+ 0xfff5, 0x6006, 0x1078, 0x31fe, 0x0c7f, 0x7e58, 0xa684, 0x0400, -+ 0x00c0, 0x311e, 0x781b, 0x0056, 0x0078, 0x212b, 0x781b, 0x0068, -+ 0x0078, 0x212b, 0x0c7e, 0x7048, 0x2060, 0x6100, 0xa18c, 0x1000, -+ 0x0040, 0x3162, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c, -+ 0x0048, 0x3136, 0x0040, 0x3136, 0x2011, 0x000c, 0x2600, 0xa202, -+ 0x00c8, 0x313b, 0x2230, 0x6208, 0xa294, 0x00ff, 0x7018, 0xa086, -+ 0x0028, 0x00c0, 0x314b, 0xa282, 0x0019, 0x00c8, 0x3151, 0x2011, -+ 0x0019, 0x0078, 0x3151, 0xa282, 0x000c, 0x00c8, 0x3151, 0x2011, -+ 0x000c, 0x2200, 0xa502, 0x00c8, 0x3156, 0x2228, 0x1078, 0x337d, -+ 0x852b, 0x852b, 0x1078, 0x33be, 0x0040, 0x3162, 0x1078, 0x31da, -+ 0x0078, 0x3166, 0x1078, 0x3379, 0x1078, 0x31fe, 0x7858, 0xa085, -+ 0x0004, 0x785a, 0x0c7f, 0x781b, 0x0067, 0x0078, 0x212b, 0x0c7e, -+ 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, 0x3187, 0x6010, 0xa084, -+ 0x000f, 0x00c0, 0x3181, 0x6104, 0xa18c, 0xfff5, 0x6106, 0x0c7f, -+ 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078, 0x31ae, 0x68a0, -+ 0xa084, 0x0200, 0x00c0, 0x3181, 0x6208, 0xa294, 0x00ff, 0x7018, -+ 0xa086, 0x0028, 0x00c0, 0x319c, 0xa282, 0x0019, 0x00c8, 0x31a2, -+ 0x2011, 0x0019, 0x0078, 0x31a2, 0xa282, 0x000c, 0x00c8, 0x31a2, -+ 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000c, -+ 0x0048, 0x31ae, 0x0040, 0x31ae, 0x2019, 0x000c, 0x78ab, 0x0001, -+ 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, -+ 0x6820, 0xa085, 0x0100, 0x6822, 0x0c7f, 0x007c, 0x0c7e, 0x2960, -+ 0x6104, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019, 0x0000, -+ 0x0078, 0x31ca, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, -+ 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100, 0x6822, -+ 0x0c7f, 0x007c, 0x0c7e, 0x7148, 0x2160, 0x2008, 0xa084, 0xfff0, -+ 0xa635, 0x7e86, 0x6018, 0x789a, 0x7eae, 0x6612, 0x78a4, 0xa084, -+ 0xfff8, 0xa18c, 0x0007, 0xa105, 0x78a6, 0x6016, 0x788a, 0xa6b4, -+ 0x000f, 0x8637, 0x8204, 0x8004, 0xa084, 0x00ff, 0xa605, 0x600e, -+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x007c, 0x0c7e, 0x7048, -+ 0x2060, 0x6018, 0x789a, 0x78a4, 0xa084, 0xfff0, 0x78a6, 0x6012, -+ 0x7884, 0xa084, 0xfff0, 0x7886, 0x0c7f, 0x007c, 0xa282, 0x0002, -+ 0x00c0, 0x3305, 0x7aa8, 0x6920, 0xa18d, 0x0080, 0x6922, 0xa184, -+ 0x0200, 0x0040, 0x3253, 0xa18c, 0xfdff, 0x6922, 0xa294, 0x00ff, -+ 0xa282, 0x0002, 0x00c8, 0x3305, 0x1078, 0x329a, 0x1078, 0x31fe, -+ 0xa980, 0x0001, 0x200c, 0x1078, 0x3445, 0x1078, 0x316f, 0x88ff, -+ 0x0040, 0x3246, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5, -+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x3242, 0x781b, 0x0053, -+ 0x0078, 0x212b, 0x781b, 0x0067, 0x0078, 0x212b, 0x7e58, 0xa684, -+ 0x0400, 0x00c0, 0x324f, 0x781b, 0x0056, 0x0078, 0x212b, 0x781b, -+ 0x0068, 0x0078, 0x212b, 0xa282, 0x0002, 0x00c8, 0x325b, 0xa284, -+ 0x0001, 0x0040, 0x3265, 0x7148, 0xa188, 0x0000, 0x210c, 0xa18c, -+ 0x2000, 0x00c0, 0x3265, 0x2011, 0x0000, 0x1078, 0x336b, 0x1078, -+ 0x329a, 0x1078, 0x31fe, 0x7858, 0xa085, 0x0004, 0x785a, 0x781b, -+ 0x0067, 0x0078, 0x212b, 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011, -+ 0x0001, 0xa084, 0x2000, 0x00c0, 0x328a, 0x6014, 0xa084, 0x0040, -+ 0x00c0, 0x3288, 0xa18c, 0xffef, 0x6106, 0xa006, 0x0078, 0x3297, -+ 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, -+ 0x7aaa, 0xa8c0, 0x0004, 0x6820, 0xa085, 0x0200, 0x6822, 0x027f, -+ 0x0c7f, 0x007c, 0x0c7e, 0x7048, 0x2060, 0x82ff, 0x0040, 0x32a2, -+ 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, 0x78a4, 0xa084, -+ 0xffbf, 0xa205, 0x78a6, 0x6016, 0x788a, 0x6004, 0xa084, 0xffef, -+ 0x6006, 0x0c7f, 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, 0x0040, -+ 0x32bc, 0x007f, 0x0078, 0x32bf, 0x007f, 0x0078, 0x3301, 0xa684, -+ 0x0020, 0x0040, 0x3301, 0x7888, 0xa084, 0x0040, 0x0040, 0x3301, -+ 0x7bb8, 0xa384, 0x003f, 0x831b, 0x00c8, 0x32cf, 0x8000, 0xa005, -+ 0x0040, 0x32e5, 0x831b, 0x00c8, 0x32d8, 0x8001, 0x0040, 0x32fd, -+ 0xa684, 0x4000, 0x0040, 0x32e5, 0x78b8, 0x801b, 0x00c8, 0x32e1, -+ 0x8000, 0xa084, 0x003f, 0x00c0, 0x32fd, 0xa6b4, 0xbfff, 0x7e5a, -+ 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, 0x00c8, 0x32f1, 0xa291, -+ 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x1078, 0x3a5e, 0x781b, -+ 0x0065, 0x1078, 0x392f, 0x0078, 0x212b, 0x781b, 0x0065, 0x0078, -+ 0x212b, 0x781b, 0x0068, 0x0078, 0x212b, 0x1078, 0x3337, 0x781b, -+ 0x0067, 0x0078, 0x212b, 0x1078, 0x3323, 0x781b, 0x0067, 0x0078, -+ 0x212b, 0x6827, 0x0002, 0x1078, 0x332b, 0x78e4, 0xa084, 0x0030, -+ 0x0040, 0x2133, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2133, 0x781b, -+ 0x0067, 0x0078, 0x212b, 0x2001, 0x0005, 0x0078, 0x3339, 0x2001, -+ 0x000c, 0x0078, 0x3339, 0x2001, 0x0006, 0x0078, 0x3339, 0x2001, -+ 0x000d, 0x0078, 0x3339, 0x2001, 0x0009, 0x0078, 0x3339, 0x2001, -+ 0x0007, 0x789b, 0x007e, 0x78aa, 0xa6b5, 0x0008, 0x7e5a, 0x007c, -+ 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703, 0xa0e0, -+ 0x3f80, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, 0x000f, 0x0040, -+ 0x3359, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, 0xa085, 0x0008, -+ 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040, 0x0040, -+ 0x3369, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004, 0xa085, 0x0010, -+ 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001, 0x78ab, -+ 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab, 0x0004, -+ 0x007c, 0x2031, 0x0000, 0x2029, 0x0032, 0x789b, 0x0010, 0x78ab, -+ 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7eaa, 0x789b, -+ 0x0060, 0x78ab, 0x0005, 0x007c, 0x157e, 0x8007, 0xa084, 0x00ff, -+ 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4, 0xa18c, 0xfff0, -+ 0x2001, 0x3d46, 0x2004, 0xa082, 0x0028, 0x0040, 0x33a7, 0x2021, -+ 0x342c, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078, 0x33ad, 0x2021, -+ 0x3438, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, 0x0064, 0x2404, -+ 0xa084, 0xfff0, 0xa106, 0x0040, 0x33bc, 0x8420, 0x2300, 0xa210, -+ 0x0070, 0x33bc, 0x0078, 0x33af, 0x157f, 0x007c, 0x157e, 0x2011, -+ 0x3d46, 0x2214, 0xa282, 0x0032, 0x0048, 0x33d2, 0x0040, 0x33d6, -+ 0x2021, 0x341e, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, 0x0032, -+ 0x0078, 0x33e8, 0xa282, 0x0028, 0x0040, 0x33e0, 0x2021, 0x342c, -+ 0x2019, 0x0014, 0x20a9, 0x000c, 0x2011, 0x0064, 0x0078, 0x33e8, -+ 0x2021, 0x3438, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, 0x0064, -+ 0x2200, 0xa502, 0x0040, 0x33f8, 0x0048, 0x33f8, 0x8420, 0x2300, -+ 0xa210, 0x0070, 0x33f5, 0x0078, 0x33e8, 0x157f, 0xa006, 0x007c, -+ 0x157f, 0xa582, 0x0064, 0x00c8, 0x3403, 0x7808, 0xa085, 0x0070, -+ 0x780a, 0x0078, 0x3403, 0x78ec, 0xa084, 0x0300, 0x0040, 0x340b, -+ 0x2404, 0x0078, 0x341c, 0x2404, 0xa09e, 0x1102, 0x00c0, 0x341c, -+ 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048, 0x341b, 0x2001, -+ 0x1201, 0x0078, 0x341c, 0x2404, 0xa005, 0x007c, 0x1102, 0x3002, -+ 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, -+ 0x7a06, 0x0c07, 0x0c07, 0x0e07, 0x3202, 0x4202, 0x5202, 0x6202, -+ 0x7202, 0x6605, 0x7605, 0x7805, 0x7a05, 0x7c05, 0x7e05, 0x7f05, -+ 0x2202, 0x3202, 0x4202, 0x5202, 0x5404, 0x6404, 0x7404, 0x7604, -+ 0x7804, 0x7a04, 0x7c04, 0x7e04, 0x7f04, 0x789b, 0x0010, 0xa046, -+ 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, -+ 0x8003, 0x8003, 0xa105, 0xa0e0, 0x4000, 0x007c, 0x79d8, 0x7adc, -+ 0x78d0, 0x801b, 0x00c8, 0x345d, 0x8000, 0xa084, 0x003f, 0xa108, -+ 0xa291, 0x0000, 0x007c, 0x0f7e, 0x2079, 0x0100, 0x2009, 0x3d40, -+ 0x2091, 0x8000, 0x2104, 0x0079, 0x346d, 0x34a3, 0x3477, 0x3477, -+ 0x3477, 0x3477, 0x3477, 0x3477, 0x3475, 0x1078, 0x20c8, 0x784b, -+ 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0, 0x3479, 0x784b, 0x0008, -+ 0x7848, 0xa084, 0x0008, 0x00c0, 0x3480, 0x68b4, 0xa085, 0x4000, -+ 0x68b6, 0x7858, 0xa085, 0x4000, 0x785a, 0x7830, 0xa084, 0x0080, -+ 0x00c0, 0x34a3, 0x0018, 0x34a3, 0x681c, 0xa084, 0x0020, 0x00c0, -+ 0x34a1, 0x0e7e, 0x2071, 0x3d40, 0x1078, 0x34ea, 0x0e7f, 0x0078, -+ 0x34a3, 0x781b, 0x00e4, 0x2091, 0x8001, 0x0f7f, 0x007c, 0x0c7e, -+ 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0, -+ 0x3f80, 0x6004, 0xa084, 0x000a, 0x00c0, 0x34d8, 0x6108, 0xa194, -+ 0xff00, 0x0040, 0x34d8, 0xa18c, 0x00ff, 0x2001, 0x0019, 0xa106, -+ 0x0040, 0x34c9, 0x2001, 0x0032, 0xa106, 0x0040, 0x34cd, 0x0078, -+ 0x34d1, 0x2009, 0x0020, 0x0078, 0x34d3, 0x2009, 0x003f, 0x0078, -+ 0x34d3, 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004, 0x6006, -+ 0x0c7f, 0x007c, 0x781b, 0x0068, 0x0078, 0x212b, 0x781b, 0x0067, -+ 0x0078, 0x212b, 0x781b, 0x0056, 0x0078, 0x212b, 0x781b, 0x0053, -+ 0x0078, 0x212b, 0x2009, 0x3d1e, 0x210c, 0xa186, 0x0000, 0x0040, -+ 0x34fe, 0xa186, 0x0001, 0x0040, 0x3501, 0x2009, 0x3d35, 0x200b, -+ 0x000b, 0x70a3, 0x0001, 0x781b, 0x0047, 0x007c, 0x781b, 0x00dd, -+ 0x007c, 0x2009, 0x3d35, 0x200b, 0x000a, 0x007c, 0x2009, 0x3d1e, -+ 0x210c, 0xa186, 0x0000, 0x0040, 0x3521, 0xa186, 0x0001, 0x0040, -+ 0x351b, 0x2009, 0x3d35, 0x200b, 0x000b, 0x70a3, 0x0001, 0x781b, -+ 0x0047, 0x0078, 0x212b, 0x2009, 0x3d35, 0x200b, 0x000a, 0x0078, -+ 0x212b, 0x781b, 0x00dc, 0x0078, 0x212b, 0x781b, 0x00e4, 0x0078, -+ 0x212b, 0x781b, 0x00e3, 0x0078, 0x212b, 0x781b, 0x009f, 0x0078, -+ 0x212b, 0x781b, 0x009e, 0x0078, 0x212b, 0x6818, 0xa084, 0x8000, -+ 0x0040, 0x353c, 0x681b, 0x001d, 0x70a3, 0x0001, 0x781b, 0x0047, -+ 0x0078, 0x212b, 0x007e, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3559, -+ 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, -+ 0x78ec, 0xa084, 0x0021, 0x0040, 0x3559, 0x7808, 0xa085, 0x0002, -+ 0x780a, 0x007f, 0x007c, 0x7808, 0xa085, 0x0002, 0x780a, 0x007c, -+ 0x007e, 0x7830, 0xa084, 0x0040, 0x00c0, 0x3561, 0x0098, 0x356c, -+ 0x007f, 0x789a, 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, 0x780a, -+ 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, -+ 0x357b, 0x0098, 0x3579, 0x007f, 0x789a, 0x78ac, 0x007e, 0x7808, -+ 0xa085, 0x0002, 0x780a, 0x007f, 0x007c, 0xa784, 0x0001, 0x00c0, -+ 0x2b9b, 0xa784, 0x0070, 0x0040, 0x3595, 0x0c7e, 0x2d60, 0x2f68, -+ 0x1078, 0x2073, 0x2d78, 0x2c68, 0x0c7f, 0xa784, 0x0008, 0x0040, -+ 0x35a2, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2133, -+ 0x0078, 0x34da, 0xa784, 0x0004, 0x0040, 0x35d5, 0x78b8, 0xa084, -+ 0x4001, 0x0040, 0x35d5, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x2133, 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001, 0x00c0, -+ 0x35d5, 0x78c0, 0xa685, 0x4800, 0x2030, 0x7e5a, 0x781b, 0x00e4, -+ 0x0078, 0x212b, 0x784b, 0x0008, 0x6818, 0xa084, 0x8000, 0x0040, -+ 0x35d1, 0x681b, 0x0015, 0xa684, 0x4000, 0x0040, 0x35d1, 0x681b, -+ 0x0007, 0x1078, 0x34ea, 0x0078, 0x212b, 0x681b, 0x0003, 0x7858, -+ 0xa084, 0x3f00, 0x681e, 0x682f, 0x0000, 0x6833, 0x0000, 0x784b, -+ 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x25fa, 0x0018, 0x212b, -+ 0x0078, 0x330b, 0x6b14, 0x8307, 0xa084, 0x000f, 0x8003, 0x8003, -+ 0x8003, 0xa080, 0x3f80, 0x2060, 0x2048, 0x704a, 0x6000, 0x704e, -+ 0x6004, 0x7052, 0x2a60, 0x007c, 0x0020, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0062, 0x000a, -+ 0x0014, 0x0014, 0x9848, 0x0014, 0x0014, 0x98f8, 0x98e7, 0x0014, -+ 0x0014, 0x0014, 0x0080, 0x00bf, 0x0100, 0x0402, 0x2008, 0xf880, -+ 0x0018, 0xa20a, 0x0014, 0x300b, 0xa20c, 0x0014, 0xa200, 0x8838, -+ 0x3806, 0x8839, 0x28c2, 0x9cc0, 0xa805, 0x0864, 0xa83f, 0x3008, -+ 0x28c1, 0x9cc0, 0xa201, 0x300c, 0x2847, 0x8161, 0x846a, 0x8000, -+ 0x84a4, 0x1856, 0x883a, 0xa808, 0x28e2, 0x9ca1, 0xa8f3, 0x0864, -+ 0xa82d, 0x300c, 0xa801, 0x3008, 0x28e1, 0x9ca1, 0x280e, 0xa204, -+ 0x64c0, 0x6de0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, -+ 0x8677, 0xa810, 0x7861, 0x883e, 0xa80d, 0x282c, 0xa205, 0x64a0, -+ 0x6de0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, 0x8677, -+ 0xa801, 0x883e, 0x206b, 0x28c1, 0x9cc0, 0x2044, 0x2103, 0x20a2, -+ 0x2081, 0xa8da, 0xa207, 0x2901, 0xa80a, 0x0014, 0xa203, 0x8000, -+ 0x85a4, 0x1872, 0x879a, 0x883c, 0x1fe2, 0xf601, 0xa208, 0x856e, -+ 0x866f, 0x0704, 0x3008, 0x9ca1, 0x0014, 0xa202, 0x8000, 0x85a4, -+ 0x3009, 0x84a8, 0x19e2, 0xf844, 0x856e, 0x883f, 0x08e6, 0xa8f5, -+ 0xf861, 0xa8ec, 0xf801, 0x0014, 0xf881, 0x0016, 0x85b2, 0x80f0, -+ 0x9532, 0xfaa2, 0x1de2, 0x0014, 0x8532, 0xf221, 0x0014, 0x1de2, -+ 0x84a8, 0xd6e0, 0x1fe6, 0x0014, 0xa206, 0x6865, 0x817e, 0x842a, -+ 0x1dc1, 0x8823, 0x0016, 0x6042, 0x8008, 0xa8fa, 0x8000, 0x84a4, -+ 0x8160, 0x842a, 0xf021, 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, -+ 0x0011, 0x20d4, 0x8822, 0x0016, 0x8000, 0x2848, 0x1011, 0xa8fc, -+ 0x3008, 0x8000, 0xa000, 0x2802, 0x1011, 0xa8fd, 0xa885, 0x3008, -+ 0x283d, 0x1011, 0xa8fd, 0xa209, 0x0017, 0x300c, 0x8000, 0x85a4, -+ 0x1de2, 0xdac1, 0x0014, 0x0210, 0xa801, 0x0014, 0x26e0, 0x873a, -+ 0xfaa2, 0x19f2, 0x1fe2, 0x0014, 0xa20b, 0x0014, 0xa20d, 0x3806, -+ 0x0210, 0x9cca, 0x0704, 0x0000, 0x127e, 0x2091, 0x2200, 0x2049, -+ 0x36ec, 0x7000, 0x7204, 0xa205, 0x720c, 0xa215, 0x7008, 0xa084, -+ 0xfff7, 0xa205, 0x0040, 0x36fe, 0x0078, 0x3701, 0x127f, 0x2000, -+ 0x007c, 0x7000, 0xa084, 0x0001, 0x00c0, 0x372f, 0x7108, 0x8103, -+ 0x00c8, 0x370e, 0x1078, 0x381c, 0x0078, 0x3706, 0x700c, 0xa08c, -+ 0x00ff, 0x0040, 0x372f, 0x7004, 0x8004, 0x00c8, 0x3726, 0x7014, -+ 0xa005, 0x00c0, 0x3722, 0x7010, 0xa005, 0x0040, 0x3726, 0xa102, -+ 0x00c8, 0x3706, 0x7007, 0x0010, 0x0078, 0x372f, 0x8aff, 0x0040, -+ 0x372f, 0x1078, 0x3a35, 0x00c0, 0x3729, 0x0040, 0x3706, 0x1078, -+ 0x37ac, 0x7003, 0x0000, 0x127f, 0x2000, 0x007c, 0x6428, 0x84ff, -+ 0x0040, 0x3762, 0x2c70, 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x3772, -+ 0x273c, 0x87fb, 0x00c0, 0x3750, 0x0048, 0x3748, 0x1078, 0x20c8, -+ 0x609c, 0xa075, 0x0040, 0x3762, 0x0078, 0x373b, 0x2039, 0x3767, -+ 0x2704, 0xae68, 0x6808, 0xa630, 0x680c, 0xa529, 0x8421, 0x0040, -+ 0x3762, 0x8738, 0x2704, 0xa005, 0x00c0, 0x3751, 0x709c, 0xa075, -+ 0x00c0, 0x373b, 0x007c, 0x0000, 0x0005, 0x0009, 0x000d, 0x0011, -+ 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, 0x0009, 0x000f, 0x0015, -+ 0x001b, 0x0000, 0x0000, 0x3767, 0x3764, 0x0000, 0x0000, 0x8000, -+ 0x0000, 0x3767, 0x0000, 0x376f, 0x376c, 0x0000, 0x0000, 0x0000, -+ 0x0000, 0x376f, 0x0000, 0x376a, 0x376a, 0x0000, 0x0000, 0x8000, -+ 0x0000, 0x376a, 0x0000, 0x3770, 0x3770, 0x0000, 0x0000, 0x0000, -+ 0x0000, 0x3770, 0x127e, 0x2091, 0x2200, 0x2079, 0x3d00, 0x2071, -+ 0x0010, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x2071, -+ 0x0020, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x2049, -+ 0x0000, 0x127f, 0x2000, 0x007c, 0x2049, 0x37ac, 0x2019, 0x0000, -+ 0x7004, 0x8004, 0x00c8, 0x37f8, 0x7007, 0x0012, 0x7108, 0x7008, -+ 0xa106, 0x00c0, 0x37b6, 0xa184, 0x01e0, 0x0040, 0x37c1, 0x1078, -+ 0x20c8, 0xa184, 0x4000, 0x00c0, 0x37b6, 0xa19c, 0x300c, 0xa386, -+ 0x2004, 0x0040, 0x37d3, 0xa386, 0x0008, 0x0040, 0x37de, 0xa386, -+ 0x200c, 0x00c0, 0x37b6, 0x7200, 0x8204, 0x0048, 0x37de, 0x730c, -+ 0xa384, 0x00ff, 0x0040, 0x37de, 0x1078, 0x20c8, 0x7007, 0x0012, -+ 0x7000, 0xa084, 0x0001, 0x00c0, 0x37f8, 0x7008, 0xa084, 0x01e0, -+ 0x00c0, 0x37f8, 0x7310, 0x7014, 0xa305, 0x0040, 0x37f8, 0x710c, -+ 0xa184, 0x0300, 0x00c0, 0x37f8, 0xa184, 0x00ff, 0x00c0, 0x37ac, -+ 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0, -+ 0x37fc, 0x7007, 0x0012, 0x7108, 0x8103, 0x0048, 0x3801, 0x7003, -+ 0x0000, 0x2049, 0x0000, 0x007c, 0x107e, 0x007e, 0x127e, 0x157e, -+ 0x2091, 0x2200, 0x7108, 0x1078, 0x381c, 0x157f, 0x127f, 0x2091, -+ 0x8001, 0x007f, 0x107f, 0x007c, 0x7204, 0x7500, 0x730c, 0xa384, -+ 0x0300, 0x00c0, 0x385e, 0xa184, 0x01e0, 0x00c0, 0x3882, 0x7108, -+ 0xa184, 0x01e0, 0x00c0, 0x3882, 0x2001, 0x04fd, 0x2004, 0xa082, -+ 0x0005, 0x00c8, 0x3852, 0xa184, 0x4000, 0x00c0, 0x3827, 0xa986, -+ 0x3a5e, 0x00c0, 0x3852, 0xa19c, 0x300c, 0xa386, 0x2004, 0x0040, -+ 0x3849, 0xa386, 0x0008, 0x0040, 0x3852, 0xa386, 0x200c, 0x00c0, -+ 0x3827, 0x7200, 0x8204, 0x0048, 0x3852, 0x730c, 0xa384, 0x00ff, -+ 0x00c0, 0x385e, 0xa184, 0x0007, 0x0079, 0x3856, 0x3860, 0x3872, -+ 0x385e, 0x3872, 0x385e, 0x38be, 0x385e, 0x38bc, 0x1078, 0x20c8, -+ 0x7004, 0xa084, 0x0010, 0xa085, 0x0002, 0x7006, 0x8aff, 0x00c0, -+ 0x386d, 0x2049, 0x0000, 0x0078, 0x3871, 0x1078, 0x3a35, 0x00c0, -+ 0x386d, 0x007c, 0x7004, 0xa084, 0x0010, 0xa085, 0x0002, 0x7006, -+ 0x8aff, 0x00c0, 0x387d, 0x0078, 0x3881, 0x1078, 0x3a35, 0x00c0, -+ 0x387d, 0x007c, 0x7007, 0x0012, 0x7108, 0x00e0, 0x3885, 0x2091, -+ 0x6000, 0x00e0, 0x3889, 0x2091, 0x6000, 0x7007, 0x0012, 0x7007, -+ 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0, 0x3891, 0x7007, 0x0012, -+ 0x7108, 0x8103, 0x0048, 0x3896, 0x7003, 0x0000, 0x7000, 0xa005, -+ 0x00c0, 0x38aa, 0x7004, 0xa005, 0x00c0, 0x38aa, 0x700c, 0xa005, -+ 0x0040, 0x38ac, 0x0078, 0x388d, 0x2049, 0x0000, 0x1078, 0x3463, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x38b7, 0x681b, 0x0002, 0x007c, -+ 0x1078, 0x20c8, 0x1078, 0x20c8, 0x1078, 0x391a, 0x7210, 0x7114, -+ 0x700c, 0xa09c, 0x00ff, 0x2800, 0xa300, 0xa211, 0xa189, 0x0000, -+ 0x1078, 0x391a, 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, 0xa322, -+ 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040, 0x38e1, 0x00c8, -+ 0x38e1, 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0078, -+ 0x38c8, 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, 0x0040, -+ 0x38ed, 0xa7ba, 0x376c, 0x0078, 0x38ef, 0xa7ba, 0x3764, 0x007f, -+ 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7007, 0x0012, -+ 0x1078, 0x37ac, 0x007c, 0x8738, 0x2704, 0xa005, 0x00c0, 0x390e, -+ 0x609c, 0xa005, 0x0040, 0x3917, 0x2060, 0x6004, 0xa084, 0x000f, -+ 0xa080, 0x3772, 0x203c, 0x87fb, 0x1040, 0x20c8, 0x8a51, 0x0040, -+ 0x3916, 0x7008, 0xa084, 0x0003, 0xa086, 0x0003, 0x007c, 0x2051, -+ 0x0000, 0x007c, 0x8a50, 0x8739, 0x2704, 0xa004, 0x00c0, 0x392e, -+ 0x6000, 0xa064, 0x00c0, 0x3925, 0x2d60, 0x6004, 0xa084, 0x000f, -+ 0xa080, 0x3782, 0x203c, 0x87fb, 0x1040, 0x20c8, 0x007c, 0x127e, -+ 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x6884, 0x2060, 0x6888, 0x6b8c, -+ 0x6c90, 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, 0x6804, -+ 0xa084, 0x0008, 0x007f, 0x0040, 0x3949, 0xa0b8, 0x376c, 0x0078, -+ 0x394b, 0xa0b8, 0x3764, 0x7e08, 0xa6b5, 0x000c, 0x681c, 0xa084, -+ 0x0040, 0x0040, 0x3955, 0xa6b5, 0x0001, 0x7007, 0x0004, 0x7004, -+ 0xa084, 0x0004, 0x00c0, 0x3957, 0x2400, 0xa305, 0x00c0, 0x3962, -+ 0x0078, 0x3988, 0x2c58, 0x2704, 0x6104, 0xac60, 0x6000, 0xa400, -+ 0x701a, 0x6004, 0xa301, 0x701e, 0xa184, 0x0008, 0x0040, 0x3978, -+ 0x6010, 0xa081, 0x0000, 0x7022, 0x6014, 0xa081, 0x0000, 0x7026, -+ 0x6208, 0x2400, 0xa202, 0x7012, 0x620c, 0x2300, 0xa203, 0x7016, -+ 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078, 0x38fb, 0x0078, 0x398a, -+ 0x1078, 0x3a35, 0x00c0, 0x3988, 0x127f, 0x2000, 0x007c, 0x127e, -+ 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x7007, 0x0004, 0x7004, 0xa084, -+ 0x0004, 0x00c0, 0x3996, 0x7003, 0x0008, 0x127f, 0x2000, 0x007c, -+ 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x2049, 0x39a0, 0x7007, -+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x39a9, 0x7e08, 0xa6b5, -+ 0x000c, 0x681c, 0xa084, 0x0020, 0x00c0, 0x39b8, 0xa6b5, 0x0001, -+ 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8, 0x3772, -+ 0x273c, 0x87fb, 0x00c0, 0x39ce, 0x0048, 0x39c8, 0x1078, 0x20c8, -+ 0x689c, 0xa065, 0x0040, 0x39d2, 0x0078, 0x39bb, 0x1078, 0x3a35, -+ 0x00c0, 0x39ce, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, 0x017e, -+ 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f, 0x047f, 0x7e08, 0xa6b5, -+ 0x000c, 0x681c, 0xa084, 0x0040, 0x0040, 0x39e8, 0xa6b5, 0x0001, -+ 0x2049, 0x39d5, 0x6828, 0xa055, 0x0040, 0x3a32, 0x2d70, 0x2e60, -+ 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x3772, 0x273c, 0x87fb, 0x00c0, -+ 0x3a04, 0x0048, 0x39fd, 0x1078, 0x20c8, 0x709c, 0xa075, 0x2060, -+ 0x0040, 0x3a32, 0x0078, 0x39f0, 0x2704, 0xae68, 0x6808, 0xa422, -+ 0x680c, 0xa31b, 0x0048, 0x3a1f, 0x8a51, 0x00c0, 0x3a11, 0x1078, -+ 0x20c8, 0x8738, 0x2704, 0xa005, 0x00c0, 0x3a05, 0x709c, 0xa075, -+ 0x2060, 0x0040, 0x3a32, 0x2039, 0x3764, 0x0078, 0x39f0, 0x8422, -+ 0x8420, 0x831a, 0xa399, 0x0000, 0x6908, 0x2400, 0xa122, 0x690c, -+ 0x2300, 0xa11b, 0x00c8, 0x3a2e, 0x1078, 0x20c8, 0x2071, 0x0020, -+ 0x0078, 0x3955, 0x127f, 0x2000, 0x007c, 0x7008, 0xa084, 0x0003, -+ 0xa086, 0x0003, 0x0040, 0x3a5d, 0x2704, 0xac08, 0x2104, 0x701a, -+ 0x8108, 0x2104, 0x701e, 0x8108, 0x2104, 0x7012, 0x8108, 0x2104, -+ 0x7016, 0x6004, 0xa084, 0x0008, 0x0040, 0x3a54, 0x8108, 0x2104, -+ 0x7022, 0x8108, 0x2104, 0x7026, 0x7602, 0x7004, 0xa084, 0x0010, -+ 0xa085, 0x0001, 0x7006, 0x1078, 0x38fb, 0x007c, 0x127e, 0x007e, -+ 0x0d7e, 0x2091, 0x2200, 0x2049, 0x3a5e, 0x0d7f, 0x087f, 0x7108, -+ 0xa184, 0x0003, 0x00c0, 0x3a72, 0x6828, 0xa005, 0x0040, 0x3a80, -+ 0x0078, 0x3701, 0x00a0, 0x3a79, 0x7108, 0x1078, 0x381c, 0x0078, -+ 0x3a67, 0x7007, 0x0010, 0x00a0, 0x3a7b, 0x7108, 0x1078, 0x381c, -+ 0x7008, 0xa086, 0x0008, 0x00c0, 0x3a67, 0x7000, 0xa005, 0x00c0, -+ 0x3a67, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, -+ 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, 0x2091, 0x2200, -+ 0x0d7f, 0x2049, 0x3a90, 0xad80, 0x0011, 0x20a0, 0x2099, 0x0031, -+ 0x700c, 0xa084, 0x00ff, 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, -+ 0x7003, 0x0001, 0x0040, 0x3aaf, 0x8000, 0x80ac, 0x53a5, 0x7007, -+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x3ab1, 0x0c7f, 0x2049, -+ 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f, 0x2000, -+ 0x007c, 0x2091, 0x6000, 0x2091, 0x8000, 0x78c0, 0xa005, 0x00c0, -+ 0x3ad8, 0x798c, 0x70d0, 0xa106, 0x00c0, 0x3ad8, 0x7804, 0xa005, -+ 0x0040, 0x3ad8, 0x7807, 0x0000, 0x0068, 0x3ad8, 0x2091, 0x4080, -+ 0x7820, 0x8001, 0x7822, 0x00c0, 0x3b5d, 0x7824, 0x7822, 0x783c, -+ 0xa005, 0x0040, 0x3ae9, 0x8001, 0x783e, 0x00c0, 0x3ae9, 0x1078, -+ 0x3c87, 0x78ec, 0xa005, 0x0040, 0x3b0d, 0x78d4, 0xa005, 0x00c0, -+ 0x3b0d, 0x3a10, 0xa284, 0x0002, 0x00c0, 0x3afd, 0x78d7, 0x0007, -+ 0x2009, 0xff01, 0x200a, 0x0078, 0x3b0d, 0xa284, 0x0001, 0x00c0, -+ 0x3b05, 0x78eb, 0x0000, 0x0078, 0x3b0d, 0x78e8, 0xa005, 0x00c0, -+ 0x3b0d, 0x78d7, 0x0008, 0x78eb, 0x0001, 0x2069, 0x3d40, 0x6800, -+ 0xa084, 0x0007, 0x0040, 0x3b24, 0xa086, 0x0002, 0x0040, 0x3b24, -+ 0x6830, 0xa00d, 0x0040, 0x3b24, 0x2104, 0xa005, 0x0040, 0x3b24, -+ 0x8001, 0x200a, 0x0040, 0x3bff, 0x7848, 0xa005, 0x0040, 0x3b2e, -+ 0x8001, 0x784a, 0x00c0, 0x3b2e, 0x1078, 0x1f05, 0x68c4, 0xa005, -+ 0x0040, 0x3b3a, 0x8001, 0x68c6, 0x00c0, 0x3b3a, 0x68a3, 0x0000, -+ 0x68a7, 0x0001, 0x2061, 0x4000, 0x2009, 0x0002, 0x20a9, 0x0100, -+ 0x6034, 0xa005, 0x0040, 0x3b50, 0x8001, 0x6036, 0x00c0, 0x3b50, -+ 0x6010, 0xa005, 0x0040, 0x3b50, 0x017e, 0x1078, 0x1f05, 0x017f, -+ 0xace0, 0x0010, 0x0070, 0x3b56, 0x0078, 0x3b40, 0x8109, 0x0040, -+ 0x3b5d, 0x20a9, 0x0100, 0x0078, 0x3b40, 0x1078, 0x3b64, 0x1078, -+ 0x3b89, 0x2091, 0x8001, 0x007c, 0x7834, 0x8001, 0x7836, 0x00c0, -+ 0x3b88, 0x7838, 0x7836, 0x2091, 0x8000, 0x7844, 0xa005, 0x00c0, -+ 0x3b73, 0x2001, 0x0101, 0x8001, 0x7846, 0xa080, 0x6000, 0x2040, -+ 0x2004, 0xa065, 0x0040, 0x3b88, 0x6024, 0xa005, 0x0040, 0x3b84, -+ 0x8001, 0x6026, 0x0040, 0x3bb8, 0x6000, 0x2c40, 0x0078, 0x3b79, -+ 0x007c, 0x7828, 0x8001, 0x782a, 0x00c0, 0x3bb7, 0x782c, 0x782a, -+ 0x7830, 0xa005, 0x00c0, 0x3b96, 0x2001, 0x0200, 0x8001, 0x7832, -+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa090, 0x4000, 0xa298, 0x0002, -+ 0x2304, 0xa084, 0x0008, 0x0040, 0x3bb7, 0xa290, 0x0009, 0x2204, -+ 0xa005, 0x0040, 0x3baf, 0x8001, 0x2012, 0x00c0, 0x3bb7, 0x2304, -+ 0xa084, 0xfff7, 0xa085, 0x0080, 0x201a, 0x1078, 0x1f05, 0x007c, -+ 0x2069, 0x3d40, 0x6800, 0xa005, 0x0040, 0x3bc2, 0x683c, 0xac06, -+ 0x0040, 0x3bff, 0x601b, 0x0006, 0x60b4, 0xa084, 0x3f00, 0x601e, -+ 0x6020, 0xa084, 0x00ff, 0xa085, 0x0060, 0x6022, 0x6000, 0x2042, -+ 0x6714, 0x6fb6, 0x1078, 0x19f0, 0x6818, 0xa005, 0x0040, 0x3bda, -+ 0x8001, 0x681a, 0x6808, 0xa084, 0xffef, 0x680a, 0x6810, 0x8001, -+ 0x00d0, 0x3be4, 0x1078, 0x20c8, 0x6812, 0x602f, 0x0000, 0x6033, -+ 0x0000, 0x2c68, 0x1078, 0x1b7f, 0x2069, 0x3d40, 0x7944, 0xa184, -+ 0x0100, 0x2001, 0x0006, 0x68a2, 0x00c0, 0x3bfa, 0x69ba, 0x2001, -+ 0x0004, 0x68a2, 0x1078, 0x1f00, 0x2091, 0x8001, 0x007c, 0x2009, -+ 0x3d4f, 0x2164, 0x2069, 0x0100, 0x1078, 0x2073, 0x601b, 0x0006, -+ 0x6858, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, -+ 0x0048, 0x6022, 0x602f, 0x0000, 0x6033, 0x0000, 0x6830, 0xa084, -+ 0x0040, 0x0040, 0x3c3b, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, -+ 0xa084, 0x0004, 0x0040, 0x3c28, 0x0070, 0x3c28, 0x0078, 0x3c1f, -+ 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040, -+ 0x3c35, 0x0070, 0x3c35, 0x0078, 0x3c2c, 0x20a9, 0x00fa, 0x0070, -+ 0x3c3b, 0x0078, 0x3c37, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, -+ 0x0047, 0x2009, 0x3d68, 0x200b, 0x0007, 0x784c, 0x784a, 0x2091, -+ 0x8001, 0x007c, 0x2079, 0x3d00, 0x1078, 0x3c75, 0x1078, 0x3c59, -+ 0x1078, 0x3c67, 0x7833, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, -+ 0x007c, 0x2019, 0x0003, 0x2011, 0x3d46, 0x2204, 0xa086, 0x003c, -+ 0x0040, 0x3c64, 0x2019, 0x0002, 0x7b2a, 0x7b2e, 0x007c, 0x2019, -+ 0x0039, 0x2011, 0x3d46, 0x2204, 0xa086, 0x003c, 0x0040, 0x3c72, -+ 0x2019, 0x0027, 0x7b36, 0x7b3a, 0x007c, 0x2019, 0x3971, 0x2011, -+ 0x3d46, 0x2204, 0xa086, 0x003c, 0x0040, 0x3c80, 0x2019, 0x2626, -+ 0x7b22, 0x7b26, 0x783f, 0x0000, 0x7843, 0x000a, 0x007c, 0x2069, -+ 0x3d40, 0x6a40, 0xa285, 0x0000, 0x0040, 0x3cce, 0x6944, 0xa080, -+ 0x3d80, 0x2164, 0x6304, 0x83ff, 0x00c0, 0x3ca1, 0x8211, 0x0040, -+ 0x3ca4, 0x8108, 0xa11a, 0x0048, 0x3c91, 0x2009, 0x3d80, 0x0078, -+ 0x3c91, 0x7940, 0x793e, 0x007c, 0x2011, 0x0002, 0x2039, 0x0000, -+ 0x20a9, 0x0100, 0x1078, 0x19f0, 0x2d00, 0xa088, 0x0002, 0x2168, -+ 0x682b, 0x0000, 0x682f, 0x0000, 0x2104, 0xa085, 0x0040, 0x200a, -+ 0x2100, 0xa088, 0x0010, 0x0070, 0x3cbf, 0x0078, 0x3caf, 0x8211, -+ 0x0040, 0x3cc6, 0x20a9, 0x0100, 0x0078, 0x3caf, 0x2009, 0x3d51, -+ 0x200b, 0x3d7f, 0x2009, 0x3d50, 0x200b, 0x0000, 0x007c, 0x4de2 -+}; -+#else -+/************************************************************************ -+ * * -+ * --- ISP1040 Initiator/Target Firmware --- * -+ * 32 LUN Support * -+ * * -+ ************************************************************************/ -+/* -+ * Firmware Version 7.65.00 (14:17 Jul 20, 1999) -+ */ -+static const u_int16_t isp_1040_risc_code[] = { -+ 0x0078, 0x103a, 0x0000, 0x4057, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x3520, 0x514c, 0x4f47, 0x4943, -+ 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350, -+ 0x3130, 0x3230, 0x2049, 0x2f54, 0x2046, 0x6972, 0x6d77, 0x6172, -+ 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, 0x372e, 0x3635, -+ 0x2020, 0x2043, 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, -+ 0x3030, 0x2050, 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, -+ 0x3031, 0x2024, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048, -+ 0x1045, 0x0038, 0x104b, 0x0078, 0x1047, 0x0028, 0x104b, 0x20b9, -+ 0x1212, 0x0078, 0x104d, 0x20b9, 0x2222, 0x20c1, 0x0008, 0x2071, -+ 0x0010, 0x70c3, 0x0004, 0x20c9, 0x77ff, 0x2089, 0x1186, 0x70c7, -+ 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0007, 0x3f00, -+ 0x70d6, 0x20c1, 0x0008, 0x2019, 0x0000, 0x2009, 0xfeff, 0x2100, -+ 0x200b, 0xa5a5, 0xa1ec, 0x7fff, 0x2d64, 0x206b, 0x0a0a, 0xaddc, -+ 0x3fff, 0x2b54, 0x205b, 0x5050, 0x2114, 0xa286, 0xa5a5, 0x0040, -+ 0x10bf, 0xa386, 0x000f, 0x0040, 0x1085, 0x2c6a, 0x2a5a, 0x20c1, -+ 0x0000, 0x2019, 0x000f, 0x0078, 0x1065, 0x2c6a, 0x2a5a, 0x20c1, -+ 0x0008, 0x2009, 0x7fff, 0x2148, 0x2944, 0x204b, 0x0a0a, 0xa9bc, -+ 0x3fff, 0x2734, 0x203b, 0x5050, 0x2114, 0xa286, 0x0a0a, 0x0040, -+ 0x10a9, 0x284a, 0x263a, 0x20c1, 0x0004, 0x2009, 0x3fff, 0x2134, -+ 0x200b, 0x5050, 0x2114, 0xa286, 0x5050, 0x0040, 0x10aa, 0x0078, -+ 0x118e, 0x284a, 0x263a, 0x98c0, 0xa188, 0x1000, 0x212c, 0x200b, -+ 0xa5a5, 0x2114, 0xa286, 0xa5a5, 0x0040, 0x10bc, 0x250a, 0xa18a, -+ 0x1000, 0x98c1, 0x0078, 0x10c1, 0x250a, 0x0078, 0x10c1, 0x2c6a, -+ 0x2a5a, 0x2130, 0xa18a, 0x0040, 0x2128, 0xa1a2, 0x5100, 0x8424, -+ 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, 0xa192, 0x7800, 0x2009, -+ 0x0000, 0x2001, 0x0031, 0x1078, 0x1cba, 0x2218, 0x2079, 0x5100, -+ 0x2fa0, 0x2408, 0x2011, 0x0000, 0x20a9, 0x0040, 0x42a4, 0x8109, -+ 0x00c0, 0x10dc, 0x7ef2, 0x8528, 0x7de6, 0x7cea, 0x7bee, 0x7883, -+ 0x0000, 0x2031, 0x0030, 0x78cf, 0x0101, 0x780b, 0x0002, 0x780f, -+ 0x0002, 0x784f, 0x0003, 0x2069, 0x5140, 0x2001, 0x04fd, 0x2004, -+ 0xa082, 0x0005, 0x0048, 0x1104, 0x0038, 0x1100, 0x0078, 0x1108, -+ 0x681b, 0x003c, 0x0078, 0x110a, 0x00a8, 0x1108, 0x681b, 0x003c, -+ 0x681b, 0x0028, 0x6807, 0x0007, 0x680b, 0x00fa, 0x680f, 0x0008, -+ 0x6813, 0x0005, 0x6823, 0x0000, 0x6827, 0x0006, 0x6817, 0x0008, -+ 0x682b, 0x0000, 0x681f, 0x0019, 0x2069, 0x5380, 0x2011, 0x0020, -+ 0x2009, 0x0010, 0x680b, 0x080c, 0x680f, 0x0019, 0x6803, 0xfd00, -+ 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8, 0x0008, 0xa290, 0x0004, -+ 0x8109, 0x00c0, 0x1122, 0x2069, 0x5400, 0x2009, 0x0002, 0x20a9, -+ 0x0100, 0x6837, 0x0000, 0x680b, 0x0040, 0x7bf0, 0xa386, 0xfeff, -+ 0x00c0, 0x1148, 0x6817, 0x0100, 0x681f, 0x0064, 0x0078, 0x114c, -+ 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, 0x0010, 0x0070, 0x1152, -+ 0x0078, 0x1139, 0x8109, 0x00c0, 0x1137, 0x1078, 0x220a, 0x1078, -+ 0x482c, 0x1078, 0x1963, 0x1078, 0x4d22, 0x3200, 0xa085, 0x000d, -+ 0x2090, 0x70c3, 0x0000, 0x0090, 0x116c, 0x70c0, 0xa086, 0x0002, -+ 0x00c0, 0x116c, 0x1078, 0x1284, 0x1078, 0x1196, 0x78cc, 0xa005, -+ 0x00c0, 0x117a, 0x1078, 0x1ce3, 0x0010, 0x1180, 0x0068, 0x1180, -+ 0x1078, 0x20e9, 0x0010, 0x1180, 0x0068, 0x1180, 0x1078, 0x1a48, -+ 0x00e0, 0x116c, 0x1078, 0x4ba9, 0x0078, 0x116c, 0x118e, 0x1190, -+ 0x240b, 0x240b, 0x48ad, 0x48ad, 0x240b, 0x240b, 0x0078, 0x118e, -+ 0x0078, 0x1190, 0x0078, 0x1192, 0x0078, 0x1194, 0x0068, 0x1201, -+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1201, 0x7814, -+ 0xa005, 0x00c0, 0x11a7, 0x0010, 0x1202, 0x0078, 0x1201, 0x2009, -+ 0x515b, 0x2104, 0xa005, 0x00c0, 0x1201, 0x2009, 0x5164, 0x200b, -+ 0x0000, 0x7914, 0xa186, 0x0042, 0x00c0, 0x11cc, 0x7816, 0x2009, -+ 0x5162, 0x2164, 0x200b, 0x0000, 0x6018, 0x70c6, 0x6014, 0x70ca, -+ 0x611c, 0xa18c, 0xff00, 0x6020, 0xa084, 0x00ff, 0xa105, 0x70ce, -+ 0x1078, 0x1948, 0x0078, 0x11ff, 0x7814, 0xa086, 0x0018, 0x00c0, -+ 0x11d3, 0x1078, 0x165a, 0x7817, 0x0000, 0x2009, 0x5162, 0x2104, -+ 0xa065, 0x0040, 0x11ef, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x19b3, -+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1730, 0x2009, 0x000c, 0x6007, -+ 0x0103, 0x1078, 0x1924, 0x00c0, 0x11fb, 0x1078, 0x1948, 0x2009, -+ 0x5162, 0x200b, 0x0000, 0x2009, 0x515c, 0x2104, 0x200b, 0x0000, -+ 0xa005, 0x0040, 0x11ff, 0x2001, 0x4005, 0x0078, 0x1286, 0x0078, -+ 0x1284, 0x007c, 0x70c3, 0x0000, 0x70c7, 0x0000, 0x70cb, 0x0000, -+ 0x70cf, 0x0000, 0x70c0, 0xa0bc, 0xffc0, 0x00c0, 0x1252, 0x2038, -+ 0x0079, 0x1212, 0x1284, 0x12e5, 0x12a9, 0x12fe, 0x130d, 0x1313, -+ 0x12a0, 0x1748, 0x1317, 0x1298, 0x12ad, 0x12af, 0x12b1, 0x12b3, -+ 0x174d, 0x1298, 0x1329, 0x1360, 0x1672, 0x1742, 0x12b5, 0x1591, -+ 0x15ad, 0x15c9, 0x15f4, 0x154a, 0x1558, 0x156c, 0x1580, 0x13df, -+ 0x1298, 0x138d, 0x1393, 0x1398, 0x139d, 0x13a3, 0x13a8, 0x13ad, -+ 0x13b2, 0x13b7, 0x13bb, 0x13d0, 0x13dc, 0x1298, 0x1298, 0x1298, -+ 0x1298, 0x13eb, 0x13f4, 0x1403, 0x1429, 0x1433, 0x143a, 0x1480, -+ 0x148f, 0x149e, 0x14b0, 0x152a, 0x153a, 0x1298, 0x1298, 0x1298, -+ 0x1298, 0x153f, 0xa0bc, 0xffa0, 0x00c0, 0x1298, 0x2038, 0xa084, -+ 0x001f, 0x0079, 0x125b, 0x1786, 0x1789, 0x1799, 0x1298, 0x1298, -+ 0x18df, 0x18fc, 0x1298, 0x1298, 0x1298, 0x1900, 0x1908, 0x1298, -+ 0x1298, 0x1298, 0x1298, 0x12db, 0x12f4, 0x131f, 0x1356, 0x1668, -+ 0x1764, 0x1778, 0x1298, 0x1829, 0x190e, 0x18bb, 0x18c5, 0x18c9, -+ 0x18d7, 0x1298, 0x1298, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0078, -+ 0x1286, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0068, -+ 0x1287, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x00e0, -+ 0x128f, 0x00e0, 0x1291, 0x0068, 0x1291, 0x2091, 0x4080, 0x007c, -+ 0x70c3, 0x4001, 0x0078, 0x1287, 0x70c3, 0x4006, 0x0078, 0x1287, -+ 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0078, -+ 0x1284, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078, 0x1284, 0x0078, -+ 0x1284, 0x0078, 0x1284, 0x0078, 0x1284, 0x2091, 0x8000, 0x70c3, -+ 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, -+ 0x0007, 0x3f00, 0x70d6, 0x2079, 0x0000, 0x781b, 0x0001, 0x2031, -+ 0x0030, 0x2059, 0x1000, 0x2029, 0x0457, 0x2051, 0x0470, 0x2061, -+ 0x0472, 0x20b9, 0xffff, 0x20c1, 0x0000, 0x2091, 0x5000, 0x2091, -+ 0x4080, 0x0078, 0x0455, 0x1078, 0x1b53, 0x00c0, 0x129c, 0x75d8, -+ 0x74dc, 0x75da, 0x74de, 0x0078, 0x12e8, 0x2029, 0x0000, 0x2520, -+ 0x71d0, 0x73c8, 0x72cc, 0x70c4, 0x1078, 0x1a8d, 0x0040, 0x1284, -+ 0x70c3, 0x4002, 0x0078, 0x1284, 0x1078, 0x1b53, 0x00c0, 0x129c, -+ 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1301, 0x2029, 0x0000, -+ 0x2520, 0x71d0, 0x73c8, 0x72cc, 0x70c4, 0x1078, 0x1aed, 0x0040, -+ 0x1284, 0x70c3, 0x4002, 0x0078, 0x1284, 0x71c4, 0x70c8, 0x2114, -+ 0x200a, 0x0078, 0x1282, 0x71c4, 0x2114, 0x0078, 0x1282, 0x70c7, -+ 0x0007, 0x70cb, 0x0041, 0x70cf, 0x0000, 0x0078, 0x1284, 0x1078, -+ 0x1b53, 0x00c0, 0x129c, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, -+ 0x132c, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0, -+ 0x70c6, 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x0040, 0x1350, 0x8001, -+ 0x7892, 0xa084, 0xfc00, 0x0040, 0x1345, 0x78cc, 0xa085, 0x0001, -+ 0x78ce, 0x2001, 0x4005, 0x0078, 0x1286, 0x7a9a, 0x7b9e, 0x7da2, -+ 0x7ea6, 0x7c96, 0x78cc, 0xa084, 0xfffc, 0x78ce, 0x0078, 0x1354, -+ 0x78cc, 0xa085, 0x0001, 0x78ce, 0x0078, 0x1284, 0x1078, 0x1b53, -+ 0x00c0, 0x129c, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, 0x1363, -+ 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6, -+ 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x0040, 0x1387, 0x8001, 0x78ae, -+ 0xa084, 0xfc00, 0x0040, 0x137c, 0x78cc, 0xa085, 0x0100, 0x78ce, -+ 0x2001, 0x4005, 0x0078, 0x1286, 0x7ab6, 0x7bba, 0x7dbe, 0x7ec2, -+ 0x7cb2, 0x78cc, 0xa084, 0xfcff, 0x78ce, 0x0078, 0x138b, 0x78cc, -+ 0xa085, 0x0100, 0x78ce, 0x0078, 0x1284, 0x2009, 0x5161, 0x210c, -+ 0x7aec, 0x0078, 0x1282, 0x2009, 0x5141, 0x210c, 0x0078, 0x1283, -+ 0x2009, 0x5142, 0x210c, 0x0078, 0x1283, 0x2061, 0x5140, 0x610c, -+ 0x6210, 0x0078, 0x1282, 0x2009, 0x5145, 0x210c, 0x0078, 0x1283, -+ 0x2009, 0x5146, 0x210c, 0x0078, 0x1283, 0x2009, 0x5148, 0x210c, -+ 0x0078, 0x1283, 0x2009, 0x5149, 0x210c, 0x0078, 0x1283, 0x7908, -+ 0x7a0c, 0x0078, 0x1282, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, -+ 0x8003, 0x8003, 0xa0e8, 0x5380, 0x6a00, 0x6804, 0xa084, 0x0008, -+ 0x0040, 0x13cd, 0x6b08, 0x0078, 0x13ce, 0x6b0c, 0x0078, 0x1281, -+ 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, -+ 0x8001, 0x2708, 0x0078, 0x1281, 0x794c, 0x0078, 0x1283, 0x77c4, -+ 0x1078, 0x1973, 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, 0x2091, -+ 0x8001, 0x0078, 0x1281, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x127c, -+ 0x1078, 0x22e2, 0x0078, 0x1281, 0x71c4, 0xa182, 0x0010, 0x00c8, -+ 0x127c, 0x2011, 0x5141, 0x2204, 0x007e, 0x2112, 0x1078, 0x229b, -+ 0x017f, 0x0078, 0x1283, 0x71c4, 0x2011, 0x1421, 0x20a9, 0x0008, -+ 0x2204, 0xa106, 0x0040, 0x1413, 0x8210, 0x0070, 0x1411, 0x0078, -+ 0x1408, 0x0078, 0x127c, 0xa292, 0x1421, 0x027e, 0x2011, 0x5142, -+ 0x2204, 0x2112, 0x017f, 0x007e, 0x1078, 0x22a7, 0x017f, 0x0078, -+ 0x1283, 0x03e8, 0x00fa, 0x01f4, 0x02ee, 0x0064, 0x0019, 0x0032, -+ 0x004b, 0x2061, 0x5140, 0x610c, 0x6210, 0x70c4, 0x600e, 0x70c8, -+ 0x6012, 0x0078, 0x1282, 0x2061, 0x5140, 0x6114, 0x70c4, 0x6016, -+ 0x0078, 0x1283, 0x2061, 0x5140, 0x71c4, 0x2011, 0x0004, 0x601f, -+ 0x0019, 0x2019, 0x1212, 0xa186, 0x0028, 0x0040, 0x145b, 0x2011, -+ 0x0005, 0x601f, 0x0019, 0x2019, 0x1212, 0xa186, 0x0032, 0x0040, -+ 0x145b, 0x2011, 0x0006, 0x601f, 0x000c, 0x2019, 0x2222, 0xa186, -+ 0x003c, 0x00c0, 0x127c, 0x6018, 0x007e, 0x611a, 0x7800, 0xa084, -+ 0x0001, 0x00c0, 0x1476, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, -+ 0x0048, 0x146e, 0x0038, 0x1472, 0x0078, 0x1476, 0x0028, 0x1472, -+ 0x0078, 0x1476, 0x2019, 0x2222, 0x0078, 0x1478, 0x2019, 0x1212, -+ 0x23b8, 0x1078, 0x22b8, 0x1078, 0x4d22, 0x017f, 0x0078, 0x1283, -+ 0x71c4, 0xa184, 0xffcf, 0x00c0, 0x127c, 0x2011, 0x5148, 0x2204, -+ 0x2112, 0x007e, 0x1078, 0x22da, 0x017f, 0x0078, 0x1283, 0x71c4, -+ 0xa182, 0x0010, 0x00c8, 0x127c, 0x2011, 0x5149, 0x2204, 0x007e, -+ 0x2112, 0x1078, 0x22c9, 0x017f, 0x0078, 0x1283, 0x71c4, 0x72c8, -+ 0xa184, 0xfffd, 0x00c0, 0x127b, 0xa284, 0xfffd, 0x00c0, 0x127b, -+ 0x2100, 0x7908, 0x780a, 0x2200, 0x7a0c, 0x780e, 0x0078, 0x1282, -+ 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, -+ 0x5380, 0x2019, 0x0000, 0x72c8, 0xa284, 0x0080, 0x0040, 0x14c6, -+ 0x6c14, 0x84ff, 0x00c0, 0x14c6, 0x6817, 0x0040, 0xa284, 0x0040, -+ 0x0040, 0x14d0, 0x6c10, 0x84ff, 0x00c0, 0x14d0, 0x6813, 0x0001, -+ 0x6800, 0x007e, 0xa226, 0x0040, 0x14f3, 0x6a02, 0xa484, 0x2000, -+ 0x0040, 0x14dc, 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x14e2, -+ 0xa39d, 0x0008, 0xa484, 0x4000, 0x0040, 0x14f3, 0x810f, 0xa284, -+ 0x4000, 0x0040, 0x14ef, 0x1078, 0x22fc, 0x0078, 0x14f3, 0x1078, -+ 0x22ee, 0x0078, 0x14f3, 0x72cc, 0x6808, 0xa206, 0x0040, 0x1522, -+ 0xa2a4, 0x00ff, 0x2061, 0x5140, 0x6118, 0xa186, 0x0028, 0x0040, -+ 0x1509, 0xa186, 0x0032, 0x0040, 0x150f, 0xa186, 0x003c, 0x0040, -+ 0x1515, 0xa482, 0x0064, 0x0048, 0x151f, 0x0078, 0x1519, 0xa482, -+ 0x0050, 0x0048, 0x151f, 0x0078, 0x1519, 0xa482, 0x0043, 0x0048, -+ 0x151f, 0x71c4, 0x71c6, 0x027f, 0x72ca, 0x0078, 0x127d, 0x6a0a, -+ 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x71c4, -+ 0x0078, 0x1281, 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6a14, -+ 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, 0x2708, -+ 0x0078, 0x1281, 0x70c4, 0x794c, 0x784e, 0x0078, 0x1283, 0x71c4, -+ 0x72c8, 0x73cc, 0xa182, 0x0010, 0x00c8, 0x127c, 0x1078, 0x230a, -+ 0x0078, 0x1281, 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6a08, -+ 0xa295, 0x0002, 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x1282, -+ 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9, -+ 0x6a0a, 0x6804, 0xa005, 0x0040, 0x1567, 0x1078, 0x21d2, 0x2091, -+ 0x8001, 0x2708, 0x0078, 0x1282, 0x77c4, 0x1078, 0x1973, 0x2091, -+ 0x8000, 0x6a08, 0xa295, 0x0004, 0x6a0a, 0x6804, 0xa005, 0x0040, -+ 0x157b, 0x1078, 0x21d2, 0x2091, 0x8001, 0x2708, 0x0078, 0x1282, -+ 0x77c4, 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, -+ 0x8000, 0x1078, 0x1980, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078, -+ 0x1282, 0x77c4, 0x72c8, 0x73cc, 0x77c6, 0x72ca, 0x73ce, 0x1078, -+ 0x19e1, 0x00c0, 0x15a9, 0x6818, 0xa005, 0x0040, 0x15a9, 0x2708, -+ 0x1078, 0x231a, 0x00c0, 0x15a9, 0x7817, 0x0015, 0x2091, 0x8001, -+ 0x007c, 0x2091, 0x8001, 0x0078, 0x1284, 0x77c4, 0x77c6, 0x2041, -+ 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, -+ 0x1980, 0x2061, 0x5140, 0x606f, 0x0003, 0x6782, 0x6093, 0x000f, -+ 0x6073, 0x0000, 0x7817, 0x0016, 0x1078, 0x21d2, 0x2091, 0x8001, -+ 0x007c, 0x77c8, 0x77ca, 0x77c4, 0x77c6, 0xa7bc, 0xff00, 0x2091, -+ 0x8000, 0x2061, 0x5140, 0x606f, 0x0002, 0x6073, 0x0000, 0x6782, -+ 0x6093, 0x000f, 0x7817, 0x0017, 0x1078, 0x21d2, 0x2091, 0x8001, -+ 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x2091, 0x8000, -+ 0x1078, 0x1980, 0x70c8, 0x6836, 0x8738, 0xa784, 0x001f, 0x00c0, -+ 0x15e8, 0x2091, 0x8001, 0x007c, 0x78cc, 0xa084, 0x0003, 0x00c0, -+ 0x1618, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, -+ 0x0008, 0x1078, 0x1973, 0x2091, 0x8000, 0x6808, 0xa80d, 0x690a, -+ 0x2091, 0x8001, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1601, 0xa7bc, -+ 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1601, -+ 0x2091, 0x8000, 0x2069, 0x0100, 0x6830, 0xa084, 0x0040, 0x0040, -+ 0x1641, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0004, -+ 0x0040, 0x162e, 0x0070, 0x162e, 0x0078, 0x1625, 0x684b, 0x0009, -+ 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040, 0x163b, 0x0070, -+ 0x163b, 0x0078, 0x1632, 0x20a9, 0x00fa, 0x0070, 0x1641, 0x0078, -+ 0x163d, 0x2079, 0x5100, 0x7817, 0x0018, 0x2061, 0x5140, 0x606f, -+ 0x0001, 0x6073, 0x0000, 0x6093, 0x000f, 0x78cc, 0xa085, 0x0002, -+ 0x78ce, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, 0x0048, 0x2091, -+ 0x8001, 0x007c, 0x78cc, 0xa084, 0xfffd, 0x78ce, 0xa084, 0x0001, -+ 0x00c0, 0x1664, 0x1078, 0x1a2b, 0x71c4, 0x71c6, 0x794a, 0x007c, -+ 0x1078, 0x1b53, 0x00c0, 0x129c, 0x75d8, 0x74dc, 0x75da, 0x74de, -+ 0x0078, 0x1675, 0x2029, 0x0000, 0x2520, 0x71c4, 0x73c8, 0x72cc, -+ 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x5100, 0x2091, 0x8000, 0x1078, -+ 0x192e, 0x2091, 0x8001, 0x0040, 0x172c, 0x20a9, 0x0005, 0x20a1, -+ 0x5118, 0x2091, 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, 0x0020, -+ 0x1078, 0x1929, 0x0040, 0x1698, 0x1078, 0x1948, 0x0078, 0x172c, -+ 0x6004, 0xa084, 0xff00, 0x8007, 0x8009, 0x0040, 0x16fb, 0x0c7e, -+ 0x2c68, 0x2091, 0x8000, 0x1078, 0x192e, 0x2091, 0x8001, 0x0040, -+ 0x16cc, 0x2c00, 0x689e, 0x8109, 0x00c0, 0x16a0, 0x609f, 0x0000, -+ 0x0c7f, 0x0c7e, 0x7218, 0x731c, 0x7420, 0x7524, 0x2c68, 0x689c, -+ 0xa065, 0x0040, 0x16fa, 0x2009, 0x0020, 0x1078, 0x1929, 0x00c0, -+ 0x16e3, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0002, 0x00c0, 0x16cc, -+ 0x2d00, 0x6002, 0x0078, 0x16b2, 0x0c7f, 0x0c7e, 0x609c, 0x2060, -+ 0x1078, 0x19b3, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1730, 0x2009, -+ 0x000c, 0x6008, 0xa085, 0x0200, 0x600a, 0x1078, 0x1924, 0x1078, -+ 0x1948, 0x0078, 0x172c, 0x0c7f, 0x0c7e, 0x609c, 0x2060, 0x1078, -+ 0x19b3, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1730, 0x2009, 0x000c, -+ 0x6007, 0x0103, 0x601b, 0x0003, 0x1078, 0x1924, 0x1078, 0x1948, -+ 0x0078, 0x172c, 0x0c7f, 0x74c4, 0x73c8, 0x72cc, 0x6014, 0x2091, -+ 0x8000, 0x7817, 0x0012, 0x0e7e, 0x2071, 0x5140, 0x706f, 0x0005, -+ 0x7073, 0x0000, 0x7376, 0x727a, 0x747e, 0x7082, 0x7087, 0x0000, -+ 0x2c00, 0x708a, 0x708f, 0x0000, 0xa02e, 0x2530, 0x611c, 0x61a2, -+ 0xa184, 0x0060, 0x0040, 0x171e, 0x1078, 0x47c2, 0x0e7f, 0x6596, -+ 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, 0x1078, -+ 0x21d2, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078, 0x1287, -+ 0x20a9, 0x0005, 0x2099, 0x5118, 0x2091, 0x8000, 0x530a, 0x2091, -+ 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, -+ 0x0000, 0x007c, 0x71c4, 0x70c7, 0x0000, 0x7906, 0x0078, 0x1284, -+ 0x71c4, 0x71c6, 0x2168, 0x0078, 0x174f, 0x2069, 0x1000, 0x690c, -+ 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0, 0x1751, 0xa285, -+ 0x0000, 0x00c0, 0x175f, 0x70c3, 0x4000, 0x0078, 0x1761, 0x70c3, -+ 0x4003, 0x70ca, 0x0078, 0x1287, 0x2011, 0x5167, 0x220c, 0x70c4, -+ 0x8003, 0x0048, 0x1771, 0x1078, 0x3b7f, 0xa184, 0x7fff, 0x0078, -+ 0x1775, 0x1078, 0x3b72, 0xa185, 0x8000, 0x2012, 0x0078, 0x1283, -+ 0x71c4, 0x1078, 0x3b69, 0x6100, 0x2001, 0x5167, 0x2004, 0xa084, -+ 0x8000, 0xa10d, 0x6204, 0x6308, 0x0078, 0x1281, 0x79e4, 0x0078, -+ 0x1283, 0x71c4, 0x71c6, 0x2198, 0x20a1, 0x0042, 0x20a9, 0x0004, -+ 0x53a3, 0x21a0, 0x2099, 0x0042, 0x20a9, 0x0004, 0x53a3, 0x0078, -+ 0x1284, 0x70c4, 0x2068, 0x2079, 0x5100, 0x2091, 0x8000, 0x1078, -+ 0x192e, 0x2091, 0x8001, 0x0040, 0x1825, 0x6007, 0x0001, 0x600b, -+ 0x0000, 0x602b, 0x0000, 0x601b, 0x0006, 0x6a10, 0xa28c, 0x000f, -+ 0xa284, 0x00f0, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0x6016, -+ 0xa284, 0x0800, 0x0040, 0x17c0, 0x601b, 0x000a, 0x0078, 0x17c6, -+ 0xa284, 0x1000, 0x0040, 0x17c6, 0x601b, 0x000c, 0xa284, 0x0300, -+ 0x0040, 0x17cf, 0x602b, 0x0001, 0x8004, 0x8004, 0x8004, 0xa085, -+ 0x0001, 0x601e, 0x6023, 0x0000, 0x6027, 0x0000, 0xa284, 0x0400, -+ 0x0040, 0x17dc, 0x602b, 0x0000, 0x20a9, 0x0006, 0xac80, 0x000b, -+ 0x20a0, 0xad80, 0x0005, 0x2098, 0x53a3, 0xa284, 0x0300, 0x00c0, -+ 0x17f1, 0x6046, 0x604a, 0x604e, 0x6052, 0x6096, 0x609a, 0x0078, -+ 0x17fb, 0x6800, 0x6046, 0x6804, 0x604a, 0x6e08, 0x664e, 0x6d0c, -+ 0x6552, 0x6596, 0x669a, 0x6014, 0x2091, 0x8000, 0x7817, 0x0042, -+ 0x2c08, 0x2061, 0x5140, 0x606f, 0x0005, 0x6073, 0x0000, 0x6077, -+ 0x0000, 0x607b, 0x0000, 0x607f, 0x0000, 0x6082, 0x618a, 0xa284, -+ 0x0400, 0x608e, 0x2091, 0x8001, 0x0e7e, 0x2071, 0x0020, 0x7007, -+ 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x0e7f, 0x2091, 0x8000, -+ 0x1078, 0x21d2, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078, -+ 0x1287, 0x0c7e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2091, 0x8000, 0x2071, -+ 0x5140, 0x2079, 0x0100, 0x2061, 0x0010, 0x70a0, 0xa06d, 0x0040, -+ 0x18b1, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0007, 0x0040, 0x1844, -+ 0xa286, 0x000f, 0x00c0, 0x18b1, 0x691c, 0xa184, 0x0080, 0x00c0, -+ 0x18b1, 0x6824, 0xa18c, 0xff00, 0xa085, 0x0019, 0x6826, 0x71b0, -+ 0x81ff, 0x0040, 0x1867, 0x0d7e, 0x2069, 0x0020, 0x6807, 0x0010, -+ 0x6908, 0x6808, 0xa106, 0x00c0, 0x1858, 0x690c, 0x680c, 0xa106, -+ 0x00c0, 0x185d, 0xa184, 0x00ff, 0x00c0, 0x185d, 0x0d7f, 0x78b8, -+ 0xa084, 0x801f, 0x00c0, 0x1867, 0x7848, 0xa085, 0x000c, 0x784a, -+ 0x71b0, 0x81ff, 0x0040, 0x188a, 0x70b3, 0x0000, 0x0d7e, 0x2069, -+ 0x0020, 0x6807, 0x0018, 0x6804, 0xa084, 0x0008, 0x00c0, 0x187b, -+ 0x6807, 0x0008, 0x6804, 0xa084, 0x0008, 0x00c0, 0x1882, 0x6807, -+ 0x0002, 0x0d7f, 0x61c4, 0x62c8, 0x63cc, 0x61c6, 0x62ca, 0x63ce, -+ 0x0e7e, 0x2071, 0x5100, 0x7266, 0x736a, 0xae80, 0x0019, 0x0e7f, -+ 0x7848, 0xa084, 0x000c, 0x00c0, 0x1898, 0x1078, 0x46db, 0x78a3, -+ 0x0000, 0x7858, 0xa084, 0xedff, 0x785a, 0x70b4, 0xa080, 0x00df, -+ 0x781a, 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x0078, -+ 0x1284, 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x2001, -+ 0x4005, 0x0078, 0x1286, 0x7980, 0x71c6, 0x71c4, 0xa182, 0x0003, -+ 0x00c8, 0x127c, 0x7982, 0x0078, 0x1284, 0x7980, 0x71c6, 0x0078, -+ 0x1284, 0x7974, 0x71c6, 0x71c4, 0x7976, 0x7978, 0x71ca, 0x71c8, -+ 0x797a, 0x797c, 0x71ce, 0x71cc, 0x797e, 0x0078, 0x1284, 0x7974, -+ 0x71c6, 0x7978, 0x71ca, 0x797c, 0x71ce, 0x0078, 0x1284, 0x7900, -+ 0x71c6, 0x71c4, 0x7902, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, -+ 0x0048, 0x18ee, 0x0038, 0x18f0, 0x0078, 0x18fa, 0x00a8, 0x18fa, -+ 0xa18c, 0x0001, 0x00c0, 0x18f8, 0x20b9, 0x2222, 0x0078, 0x18fa, -+ 0x20b9, 0x1212, 0x0078, 0x1284, 0x7900, 0x71c6, 0x0078, 0x1284, -+ 0x2009, 0x5174, 0x2104, 0x70c6, 0x70c4, 0x200a, 0x0078, 0x1284, -+ 0x2009, 0x5174, 0x2104, 0x70c6, 0x0078, 0x1284, 0x71c4, 0x8107, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, 0x5380, 0x6a14, -+ 0xd2b4, 0x0040, 0x191f, 0x2011, 0x0001, 0x0078, 0x1921, 0x2011, -+ 0x0000, 0x6b0c, 0x0078, 0x1281, 0xac80, 0x0001, 0x1078, 0x1b0f, -+ 0x007c, 0xac80, 0x0001, 0x1078, 0x1aaf, 0x007c, 0x7850, 0xa065, -+ 0x0040, 0x1936, 0x2c04, 0x7852, 0x2063, 0x0000, 0x007c, 0x0f7e, -+ 0x2079, 0x5100, 0x7850, 0xa06d, 0x0040, 0x1946, 0x2d04, 0x7852, -+ 0x6803, 0x0000, 0x6807, 0x0000, 0x680b, 0x0000, 0x0f7f, 0x007c, -+ 0x2091, 0x8000, 0x0f7e, 0x2079, 0x5100, 0x7850, 0x2062, 0x2c00, -+ 0xa005, 0x00c0, 0x1955, 0x1078, 0x23eb, 0x7852, 0x0f7f, 0x2091, -+ 0x8001, 0x007c, 0x0f7e, 0x2079, 0x5100, 0x7850, 0x206a, 0x2d00, -+ 0x7852, 0x0f7f, 0x007c, 0x2011, 0x7800, 0x7a52, 0x7bec, 0x8319, -+ 0x0040, 0x1970, 0xa280, 0x0031, 0x2012, 0x2010, 0x0078, 0x1967, -+ 0x2013, 0x0000, 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, -+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa0e8, 0x5400, 0x007c, -+ 0x1078, 0x1973, 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084, -+ 0xffef, 0xa80d, 0x690a, 0x2009, 0x5152, 0x210c, 0x6804, 0xa005, -+ 0x0040, 0x19b2, 0xa116, 0x00c0, 0x199d, 0x2060, 0x6000, 0x6806, -+ 0x017e, 0x200b, 0x0000, 0x0078, 0x19a0, 0x2009, 0x0000, 0x017e, -+ 0x6804, 0xa065, 0x0040, 0x19af, 0x6000, 0x6806, 0x1078, 0x19c0, -+ 0x1078, 0x1c5f, 0x6810, 0x8001, 0x6812, 0x00c0, 0x19a0, 0x017f, -+ 0x6902, 0x6906, 0x007c, 0xa065, 0x0040, 0x19bf, 0x609c, 0x609f, -+ 0x0000, 0x2008, 0x1078, 0x1948, 0x2100, 0x0078, 0x19b3, 0x007c, -+ 0x6007, 0x0103, 0x608f, 0x0000, 0x20a9, 0x001c, 0xac80, 0x0005, -+ 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, 0x601a, 0x682c, 0x6022, -+ 0x007c, 0x0e7e, 0x2071, 0x5140, 0x704c, 0xa08c, 0x0200, 0x00c0, -+ 0x19df, 0xa088, 0x5180, 0x2d0a, 0x8000, 0x704e, 0xa006, 0x0e7f, -+ 0x007c, 0x1078, 0x1973, 0x2091, 0x8000, 0x6804, 0x781e, 0xa065, -+ 0x0040, 0x1a2a, 0x0078, 0x19f2, 0x2c00, 0x781e, 0x6000, 0xa065, -+ 0x0040, 0x1a2a, 0x600c, 0xa306, 0x00c0, 0x19ec, 0x6010, 0xa206, -+ 0x00c0, 0x19ec, 0x2c28, 0x2001, 0x5152, 0x2004, 0xac06, 0x00c0, -+ 0x1a03, 0x0078, 0x1a28, 0x6804, 0xac06, 0x00c0, 0x1a10, 0x6000, -+ 0xa065, 0x6806, 0x00c0, 0x1a1a, 0x6803, 0x0000, 0x0078, 0x1a1a, -+ 0x6400, 0x781c, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1a1a, -+ 0x2c00, 0x6802, 0x2560, 0x1078, 0x19c0, 0x601b, 0x0005, 0x6023, -+ 0x0020, 0x1078, 0x1c5f, 0x6810, 0x8001, 0x1050, 0x23eb, 0x6812, -+ 0xa085, 0xffff, 0x007c, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, -+ 0x0004, 0x2051, 0x0008, 0x2091, 0x8000, 0x1078, 0x1980, 0x8738, -+ 0xa784, 0x001f, 0x00c0, 0x1a35, 0xa7bc, 0xff00, 0x873f, 0x8738, -+ 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1a35, 0x2091, 0x8001, 0x007c, -+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1a59, 0x2091, -+ 0x8000, 0x78e0, 0x78e3, 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0, -+ 0x1a5a, 0x007c, 0xa08c, 0xfff0, 0x0040, 0x1a60, 0x1078, 0x23eb, -+ 0x0079, 0x1a62, 0x1a72, 0x1a75, 0x1a7b, 0x1a7f, 0x1a73, 0x1a83, -+ 0x1a89, 0x1a73, 0x1a73, 0x1c29, 0x1c4d, 0x1c51, 0x1a73, 0x1a73, -+ 0x1a73, 0x1a73, 0x007c, 0x1078, 0x23eb, 0x1078, 0x1a2b, 0x2001, -+ 0x8001, 0x0078, 0x1c57, 0x2001, 0x8003, 0x0078, 0x1c57, 0x2001, -+ 0x8004, 0x0078, 0x1c57, 0x1078, 0x1a2b, 0x2001, 0x8006, 0x0078, -+ 0x1c57, 0x2001, 0x8007, 0x0078, 0x1c57, 0x2030, 0x2138, 0xa782, -+ 0x0021, 0x0048, 0x1a95, 0x2009, 0x0020, 0x2600, 0x1078, 0x1aaf, -+ 0x00c0, 0x1aae, 0xa7ba, 0x0020, 0x0048, 0x1aad, 0x0040, 0x1aad, -+ 0x2708, 0xa6b0, 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, -+ 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1a8f, 0xa006, 0x007c, 0x81ff, -+ 0x0040, 0x1aea, 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x00ff, -+ 0x0040, 0x1ac1, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, -+ 0x1abc, 0x21a8, 0x7017, 0x0000, 0x810b, 0x7112, 0x721a, 0x731e, -+ 0x7422, 0x7526, 0x780c, 0xa085, 0x0001, 0x7002, 0x7007, 0x0001, -+ 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, 0x1ade, 0x2009, -+ 0x0022, 0x2104, 0xa084, 0x4000, 0x00c0, 0x1ad0, 0x7008, 0x800b, -+ 0x00c8, 0x1ad0, 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x1aea, -+ 0x53a5, 0xa006, 0x7003, 0x0000, 0x007c, 0x2030, 0x2138, 0xa782, -+ 0x0021, 0x0048, 0x1af5, 0x2009, 0x0020, 0x2600, 0x1078, 0x1b0f, -+ 0x00c0, 0x1b0e, 0xa7ba, 0x0020, 0x0048, 0x1b0d, 0x0040, 0x1b0d, -+ 0x2708, 0xa6b0, 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, -+ 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1aef, 0xa006, 0x007c, 0x81ff, -+ 0x0040, 0x1b50, 0x2098, 0x20a1, 0x0030, 0x700c, 0xa084, 0x00ff, -+ 0x0040, 0x1b21, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, -+ 0x1b1c, 0x21a8, 0x7017, 0x0000, 0x810b, 0x7112, 0x721a, 0x731e, -+ 0x7422, 0x7526, 0x780c, 0xa085, 0x0000, 0x7002, 0x53a6, 0x7007, -+ 0x0001, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, 0x1b3f, -+ 0x2009, 0x0022, 0x2104, 0xa084, 0x4000, 0x00c0, 0x1b31, 0x7010, -+ 0xa084, 0xf000, 0x0040, 0x1b48, 0x7007, 0x0008, 0x0078, 0x1b4c, -+ 0x7108, 0x8103, 0x00c8, 0x1b31, 0x7007, 0x0002, 0xa184, 0x01e0, -+ 0x7003, 0x0000, 0x007c, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0004, -+ 0x00c8, 0x1b5c, 0x0078, 0x1b5f, 0xa006, 0x0078, 0x1b61, 0xa085, -+ 0x0001, 0x007c, 0x0e7e, 0x2071, 0x5100, 0x2d08, 0x7058, 0x6802, -+ 0xa005, 0x00c0, 0x1b6c, 0x715e, 0x715a, 0x0e7f, 0x007c, 0x2c08, -+ 0x7858, 0x6002, 0xa005, 0x00c0, 0x1b76, 0x795e, 0x795a, 0x007c, -+ 0x2091, 0x8000, 0x6003, 0x0000, 0x2c08, 0x785c, 0xa065, 0x00c0, -+ 0x1b84, 0x795a, 0x0078, 0x1b85, 0x6102, 0x795e, 0x2091, 0x8001, -+ 0x1078, 0x21ef, 0x007c, 0x0e7e, 0x2071, 0x5100, 0x7058, 0xa06d, -+ 0x0040, 0x1b99, 0x6800, 0x705a, 0xa005, 0x00c0, 0x1b98, 0x705e, -+ 0x8dff, 0x0e7f, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0x2079, 0x5100, -+ 0xaf80, 0x0016, 0x2060, 0x6000, 0xa005, 0x0040, 0x1bc9, 0x2068, -+ 0x6814, 0xa306, 0x00c0, 0x1bb2, 0x6828, 0xa084, 0x00ff, 0xa406, -+ 0x0040, 0x1bb5, 0x2d60, 0x0078, 0x1ba3, 0x6800, 0xa005, 0x6002, -+ 0x00c0, 0x1bc1, 0xaf80, 0x0016, 0xac06, 0x0040, 0x1bc0, 0x2c00, -+ 0x785e, 0x0d7e, 0x689c, 0xa005, 0x0040, 0x1bc8, 0x1078, 0x19b3, -+ 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, 0xa005, 0x007c, 0x0d7e, 0x0c7e, -+ 0x0f7e, 0x2079, 0x5100, 0xaf80, 0x0016, 0x2060, 0x6000, 0xa005, -+ 0x0040, 0x1bf8, 0x2068, 0x6814, 0xa084, 0x00ff, 0xa306, 0x0040, -+ 0x1be4, 0x2d60, 0x0078, 0x1bd6, 0x6800, 0xa005, 0x6002, 0x00c0, -+ 0x1bf0, 0xaf80, 0x0016, 0xac06, 0x0040, 0x1bef, 0x2c00, 0x785e, -+ 0x0d7e, 0x689c, 0xa005, 0x0040, 0x1bf7, 0x1078, 0x19b3, 0x007f, -+ 0x0f7f, 0x0c7f, 0x0d7f, 0xa005, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, -+ 0x2079, 0x5100, 0xaf80, 0x0016, 0x2060, 0x6000, 0xa06d, 0x0040, -+ 0x1c24, 0x6814, 0xa306, 0x0040, 0x1c10, 0x2d60, 0x0078, 0x1c05, -+ 0x6800, 0xa005, 0x6002, 0x00c0, 0x1c1c, 0xaf80, 0x0016, 0xac06, -+ 0x0040, 0x1c1b, 0x2c00, 0x785e, 0x0d7e, 0x689c, 0xa005, 0x0040, -+ 0x1c23, 0x1078, 0x19b3, 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, 0xa005, -+ 0x007c, 0x2091, 0x8000, 0x2069, 0x5140, 0x6800, 0xa086, 0x0000, -+ 0x0040, 0x1c37, 0x2091, 0x8001, 0x78e3, 0x0009, 0x007c, 0x6880, -+ 0xa0bc, 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, -+ 0x1078, 0x1980, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1c40, 0x2091, -+ 0x8001, 0x2001, 0x800a, 0x0078, 0x1c57, 0x2001, 0x800c, 0x0078, -+ 0x1c57, 0x1078, 0x1a2b, 0x2001, 0x800d, 0x0078, 0x1c57, 0x70c2, -+ 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x4080, 0x007c, 0x6004, -+ 0x2c08, 0x2063, 0x0000, 0x7884, 0x8000, 0x7886, 0x7888, 0xa005, -+ 0x798a, 0x0040, 0x1c6e, 0x2c02, 0x0078, 0x1c6f, 0x798e, 0x007c, -+ 0x6807, 0x0103, 0x0c7e, 0x2061, 0x5100, 0x2d08, 0x206b, 0x0000, -+ 0x6084, 0x8000, 0x6086, 0x6088, 0xa005, 0x618a, 0x0040, 0x1c83, -+ 0x2d02, 0x0078, 0x1c84, 0x618e, 0x0c7f, 0x007c, 0x1078, 0x1c97, -+ 0x0040, 0x1c96, 0x0c7e, 0x609c, 0xa065, 0x0040, 0x1c91, 0x1078, -+ 0x19b3, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1948, 0x007c, 0x788c, -+ 0xa065, 0x0040, 0x1ca9, 0x2091, 0x8000, 0x7884, 0x8001, 0x7886, -+ 0x2c04, 0x788e, 0xa005, 0x00c0, 0x1ca7, 0x788a, 0x8000, 0x2091, -+ 0x8001, 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, -+ 0x00c8, 0x1cb3, 0xa200, 0x0070, 0x1cb7, 0x0078, 0x1cae, 0x8086, -+ 0x818e, 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x1cdd, -+ 0xa11a, 0x00c8, 0x1cdd, 0x8213, 0x818d, 0x0048, 0x1cce, 0xa11a, -+ 0x00c8, 0x1ccf, 0x0070, 0x1cd5, 0x0078, 0x1cc3, 0xa11a, 0x2308, -+ 0x8210, 0x0070, 0x1cd5, 0x0078, 0x1cc3, 0x007e, 0x3200, 0xa084, -+ 0xf7ff, 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, -+ 0x0800, 0x0078, 0x1cd9, 0x7994, 0x70d0, 0xa106, 0x0040, 0x1d51, -+ 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x1d51, -+ 0x7008, 0x7208, 0xa206, 0x00c0, 0x1d51, 0xa286, 0x0008, 0x00c0, -+ 0x1d51, 0x2071, 0x0010, 0x1078, 0x192e, 0x0040, 0x1d51, 0x7a9c, -+ 0x7b98, 0x7ca4, 0x7da0, 0xa184, 0xff00, 0x0040, 0x1d1f, 0x2031, -+ 0x0000, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, -+ 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x2100, 0xa210, 0x2600, -+ 0xa319, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1d29, 0x8107, -+ 0x8004, 0x8004, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, -+ 0x0000, 0x2009, 0x0020, 0x1078, 0x1929, 0x2091, 0x8001, 0x0040, -+ 0x1d48, 0x1078, 0x1948, 0x78a8, 0x8000, 0x78aa, 0xa086, 0x0002, -+ 0x00c0, 0x1d51, 0x2091, 0x8000, 0x78e3, 0x0002, 0x78ab, 0x0000, -+ 0x78cc, 0xa085, 0x0003, 0x78ce, 0x2091, 0x8001, 0x0078, 0x1d51, -+ 0x78ab, 0x0000, 0x1078, 0x20ac, 0x6004, 0xa084, 0x000f, 0x0079, -+ 0x1d56, 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x1d66, 0x1d88, -+ 0x1dae, 0x1d66, 0x1dcb, 0x1d75, 0x1f2c, 0x1f47, 0x1d66, 0x1d82, -+ 0x1da8, 0x1e13, 0x1e82, 0x1ed2, 0x1ee4, 0x1f43, 0x2039, 0x0400, -+ 0x78dc, 0xa705, 0x78de, 0x6008, 0xa705, 0x600a, 0x1078, 0x1fc7, -+ 0x609c, 0x78da, 0x1078, 0x2094, 0x007c, 0x78dc, 0xa084, 0x0100, -+ 0x0040, 0x1d7c, 0x0078, 0x1d66, 0x601c, 0xa085, 0x0080, 0x601e, -+ 0x0078, 0x1d8f, 0x1078, 0x1b53, 0x00c0, 0x1d66, 0x1078, 0x20c6, -+ 0x78dc, 0xa084, 0x0100, 0x0040, 0x1d8f, 0x0078, 0x1d66, 0x78df, -+ 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78d2, 0x8001, 0x609f, -+ 0x0000, 0x0040, 0x1da5, 0x1078, 0x1fc7, 0x0040, 0x1da5, 0x78dc, -+ 0xa085, 0x0100, 0x78de, 0x0078, 0x1da7, 0x1078, 0x1feb, 0x007c, -+ 0x1078, 0x1b53, 0x00c0, 0x1d66, 0x1078, 0x20c2, 0x78dc, 0xa08c, -+ 0x0e00, 0x00c0, 0x1db7, 0xa084, 0x0100, 0x00c0, 0x1db9, 0x0078, -+ 0x1d66, 0x1078, 0x1fc7, 0x00c0, 0x1dca, 0x6104, 0xa18c, 0x00ff, -+ 0xa186, 0x0007, 0x0040, 0x1f84, 0xa186, 0x000f, 0x0040, 0x1f84, -+ 0x1078, 0x1feb, 0x007c, 0x78dc, 0xa084, 0x0100, 0x0040, 0x1dd2, -+ 0x0078, 0x1d66, 0x78df, 0x0000, 0x6714, 0x2011, 0x0001, 0x20a9, -+ 0x0001, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, 0x1df5, 0x2011, -+ 0x0001, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001, 0x0040, -+ 0x1df5, 0x2039, 0x0000, 0x2011, 0x0002, 0x20a9, 0x0100, 0xa08e, -+ 0x0002, 0x0040, 0x1df5, 0x0078, 0x1e10, 0x1078, 0x1973, 0x2091, -+ 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, 0x6808, 0xa084, 0xffde, -+ 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, 0x0070, 0x1e09, 0x0078, -+ 0x1df7, 0x8211, 0x0040, 0x1e10, 0x20a9, 0x0100, 0x0078, 0x1df7, -+ 0x1078, 0x1948, 0x007c, 0x2001, 0x5167, 0x2004, 0xa084, 0x8000, -+ 0x0040, 0x1fac, 0x6114, 0x1078, 0x20e3, 0x6900, 0xa184, 0x0001, -+ 0x0040, 0x1e34, 0x6028, 0xa084, 0x00ff, 0x00c0, 0x1fa4, 0x6800, -+ 0xa084, 0x0001, 0x0040, 0x1fac, 0x6803, 0x0000, 0x680b, 0x0000, -+ 0x6807, 0x0000, 0x0078, 0x1fb4, 0x2011, 0x0001, 0x6020, 0xd0f4, -+ 0x0040, 0x1e3c, 0xa295, 0x0002, 0xd0c4, 0x0040, 0x1e41, 0xa295, -+ 0x0008, 0xd0cc, 0x0040, 0x1e46, 0xa295, 0x0400, 0x601c, 0xa084, -+ 0x0002, 0x0040, 0x1e4d, 0xa295, 0x0004, 0x602c, 0xa08c, 0x00ff, -+ 0xa182, 0x0002, 0x0048, 0x1fb0, 0xa182, 0x001b, 0x00c8, 0x1fb0, -+ 0x0040, 0x1fb0, 0x690e, 0x602c, 0x8007, 0xa08c, 0x00ff, 0xa182, -+ 0x0002, 0x0048, 0x1fb0, 0xa182, 0x001b, 0x00c8, 0x1fb0, 0x0040, -+ 0x1fb0, 0x6912, 0x6030, 0xa005, 0x00c0, 0x1e70, 0x2001, 0x001e, -+ 0x8000, 0x6816, 0x6028, 0xa084, 0x00ff, 0x0040, 0x1fac, 0x6806, -+ 0x6028, 0x8007, 0xa084, 0x00ff, 0x0040, 0x1fac, 0x680a, 0x6a02, -+ 0x0078, 0x1fb4, 0x2001, 0x5167, 0x2004, 0xa084, 0x8000, 0x0040, -+ 0x1fac, 0x6114, 0x1078, 0x20e3, 0x2091, 0x8000, 0x6a04, 0x6b08, -+ 0x6418, 0xa484, 0x0003, 0x0040, 0x1ea8, 0x6128, 0xa18c, 0x00ff, -+ 0x8001, 0x00c0, 0x1ea1, 0x2100, 0xa210, 0x0048, 0x1ece, 0x0078, -+ 0x1ea8, 0x8001, 0x00c0, 0x1ece, 0x2100, 0xa212, 0x0048, 0x1ece, -+ 0xa484, 0x000c, 0x0040, 0x1ec2, 0x6128, 0x810f, 0xa18c, 0x00ff, -+ 0xa082, 0x0004, 0x00c0, 0x1eba, 0x2100, 0xa318, 0x0048, 0x1ece, -+ 0x0078, 0x1ec2, 0xa082, 0x0004, 0x00c0, 0x1ece, 0x2100, 0xa31a, -+ 0x0048, 0x1ece, 0x6030, 0xa005, 0x0040, 0x1ec8, 0x8000, 0x6816, -+ 0x6a06, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x1fb4, 0x2091, 0x8001, -+ 0x0078, 0x1fb0, 0x6114, 0x1078, 0x20e3, 0x2091, 0x8000, 0x6b08, -+ 0x8318, 0x0048, 0x1ee0, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x1fc3, -+ 0x2091, 0x8001, 0x0078, 0x1fb0, 0x6024, 0x8007, 0xa084, 0x00ff, -+ 0x0040, 0x1f02, 0xa086, 0x0080, 0x00c0, 0x1f2a, 0x20a9, 0x0008, -+ 0x2069, 0x7510, 0x2091, 0x8000, 0x6800, 0xa084, 0xfcff, 0x6802, -+ 0xade8, 0x0008, 0x0070, 0x1efe, 0x0078, 0x1ef4, 0x2091, 0x8001, -+ 0x0078, 0x1fb4, 0x6028, 0xa015, 0x0040, 0x1f2a, 0x6114, 0x1078, -+ 0x20e3, 0x0d7e, 0xade8, 0x0007, 0x2091, 0x8000, 0x6800, 0xa00d, -+ 0x0040, 0x1f27, 0xa206, 0x0040, 0x1f18, 0x2168, 0x0078, 0x1f0e, -+ 0x0c7e, 0x2160, 0x6000, 0x6802, 0x1078, 0x1948, 0x0c7f, 0x0d7f, -+ 0x6808, 0x8000, 0x680a, 0x2091, 0x8001, 0x0078, 0x1fc3, 0x2091, -+ 0x8001, 0x0d7f, 0x0078, 0x1fac, 0x6114, 0x1078, 0x20e3, 0x6800, -+ 0xa084, 0x0001, 0x0040, 0x1f9c, 0x2091, 0x8000, 0x6a04, 0x8210, -+ 0x0048, 0x1f3f, 0x6a06, 0x2091, 0x8001, 0x0078, 0x1fc3, 0x2091, -+ 0x8001, 0x0078, 0x1fb0, 0x1078, 0x1b53, 0x00c0, 0x1d66, 0x6114, -+ 0x1078, 0x20e3, 0x60be, 0x60bb, 0x0000, 0x6900, 0xa184, 0x0008, -+ 0x0040, 0x1f56, 0x6020, 0xa085, 0x0100, 0x6022, 0xa184, 0x0001, -+ 0x0040, 0x1fac, 0xa184, 0x0100, 0x00c0, 0x1f98, 0xa184, 0x0200, -+ 0x00c0, 0x1f94, 0x681c, 0xa005, 0x00c0, 0x1fa0, 0x6004, 0xa084, -+ 0x00ff, 0xa086, 0x000f, 0x00c0, 0x1f6f, 0x1078, 0x20c6, 0x78df, -+ 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78d2, 0x8001, 0x609f, -+ 0x0000, 0x0040, 0x1f84, 0x1078, 0x1fc7, 0x0040, 0x1f84, 0x78dc, -+ 0xa085, 0x0100, 0x78de, 0x007c, 0x78d7, 0x0000, 0x78db, 0x0000, -+ 0x6024, 0xa084, 0xff00, 0x6026, 0x1078, 0x39de, 0x0040, 0x1ce3, -+ 0x1078, 0x1b78, 0x0078, 0x1ce3, 0x2009, 0x0017, 0x0078, 0x1fb6, -+ 0x2009, 0x000e, 0x0078, 0x1fb6, 0x2009, 0x0007, 0x0078, 0x1fb6, -+ 0x2009, 0x0035, 0x0078, 0x1fb6, 0x2009, 0x003e, 0x0078, 0x1fb6, -+ 0x2009, 0x0004, 0x0078, 0x1fb6, 0x2009, 0x0006, 0x0078, 0x1fb6, -+ 0x2009, 0x0016, 0x0078, 0x1fb6, 0x2009, 0x0001, 0x6024, 0xa084, -+ 0xff00, 0xa105, 0x6026, 0x2091, 0x8000, 0x1078, 0x1c5f, 0x2091, -+ 0x8001, 0x0078, 0x1ce3, 0x1078, 0x1948, 0x0078, 0x1ce3, 0x78d4, -+ 0xa06d, 0x00c0, 0x1fd2, 0x2c00, 0x78d6, 0x78da, 0x609f, 0x0000, -+ 0x0078, 0x1fde, 0x2c00, 0x689e, 0x609f, 0x0000, 0x78d6, 0x2d00, -+ 0x6002, 0x78d8, 0xad06, 0x00c0, 0x1fde, 0x6002, 0x78d0, 0x8001, -+ 0x78d2, 0x00c0, 0x1fea, 0x78dc, 0xa084, 0xfeff, 0x78de, 0x78d8, -+ 0x2060, 0xa006, 0x007c, 0xa02e, 0x2530, 0x611c, 0x61a2, 0xa184, -+ 0xe1ff, 0x601e, 0xa184, 0x0060, 0x0040, 0x1ffa, 0x0e7e, 0x1078, -+ 0x47c2, 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, -+ 0x60b3, 0x0000, 0x6714, 0x1078, 0x1973, 0x2091, 0x8000, 0x60a0, -+ 0xa084, 0x8000, 0x00c0, 0x2021, 0x6808, 0xa084, 0x0001, 0x0040, -+ 0x2021, 0x2091, 0x8001, 0x1078, 0x19c0, 0x2091, 0x8000, 0x1078, -+ 0x1c5f, 0x2091, 0x8001, 0x78d7, 0x0000, 0x78db, 0x0000, 0x0078, -+ 0x2093, 0x6024, 0xa096, 0x0001, 0x00c0, 0x2028, 0x8000, 0x6026, -+ 0x6a10, 0x6814, 0x2091, 0x8001, 0xa202, 0x0048, 0x2037, 0x0040, -+ 0x2037, 0x2039, 0x0200, 0x1078, 0x2094, 0x0078, 0x2093, 0x2c08, -+ 0x2091, 0x8000, 0x60a0, 0xa084, 0x8000, 0x0040, 0x2064, 0x6800, -+ 0xa065, 0x0040, 0x2069, 0x6a04, 0x0e7e, 0x2071, 0x5140, 0x7000, -+ 0xa084, 0x0001, 0x0040, 0x205e, 0x7048, 0xa206, 0x00c0, 0x205e, -+ 0x6b04, 0x231c, 0x2160, 0x6302, 0x2300, 0xa005, 0x00c0, 0x2059, -+ 0x6902, 0x2260, 0x6102, 0x0e7f, 0x0078, 0x2070, 0x2160, 0x6202, -+ 0x6906, 0x0e7f, 0x0078, 0x2070, 0x6800, 0xa065, 0x0040, 0x2069, -+ 0x6102, 0x6902, 0x00c0, 0x206d, 0x6906, 0x2160, 0x6003, 0x0000, -+ 0x2160, 0x60a0, 0xa084, 0x8000, 0x0040, 0x207a, 0x6808, 0xa084, -+ 0xfffc, 0x680a, 0x6810, 0x8000, 0x6812, 0x2091, 0x8001, 0x6808, -+ 0xa08c, 0x0040, 0x0040, 0x2089, 0xa086, 0x0040, 0x680a, 0x1078, -+ 0x19d1, 0x2091, 0x8000, 0x1078, 0x21d2, 0x2091, 0x8001, 0x78db, -+ 0x0000, 0x78d7, 0x0000, 0x007c, 0x6008, 0xa705, 0x600a, 0x2091, -+ 0x8000, 0x1078, 0x1c5f, 0x2091, 0x8001, 0x78d8, 0xa065, 0x0040, -+ 0x20a7, 0x609c, 0x78da, 0x609f, 0x0000, 0x0078, 0x2097, 0x78d7, -+ 0x0000, 0x78db, 0x0000, 0x007c, 0x7990, 0x7894, 0x8000, 0xa10a, -+ 0x00c8, 0x20b3, 0xa006, 0x7896, 0x70d2, 0x7804, 0xa005, 0x0040, -+ 0x20c1, 0x8001, 0x7806, 0x00c0, 0x20c1, 0x0068, 0x20c1, 0x2091, -+ 0x4080, 0x007c, 0x2039, 0x20da, 0x0078, 0x20c8, 0x2039, 0x20e0, -+ 0x2704, 0xa005, 0x0040, 0x20d9, 0xac00, 0x2068, 0x6b08, 0x6c0c, -+ 0x6910, 0x6a14, 0x690a, 0x6a0e, 0x6b12, 0x6c16, 0x8738, 0x0078, -+ 0x20c8, 0x007c, 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, 0x0000, -+ 0x0015, 0x001b, 0x0000, 0x0c7e, 0x1078, 0x3b69, 0x2c68, 0x0c7f, -+ 0x007c, 0x0010, 0x215a, 0x0068, 0x215a, 0x2029, 0x0000, 0x78cb, -+ 0x0000, 0x788c, 0xa065, 0x0040, 0x2153, 0x2009, 0x5174, 0x2104, -+ 0xa084, 0x0001, 0x0040, 0x2121, 0x6004, 0xa086, 0x0103, 0x00c0, -+ 0x2121, 0x6018, 0xa005, 0x00c0, 0x2121, 0x6014, 0xa005, 0x00c0, -+ 0x2121, 0x0d7e, 0x2069, 0x0000, 0x6818, 0xa084, 0x0001, 0x00c0, -+ 0x2120, 0x600c, 0x70c6, 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b, -+ 0x0001, 0x2091, 0x4080, 0x0d7f, 0x1078, 0x1c86, 0x0078, 0x2158, -+ 0x0d7f, 0x1078, 0x215b, 0x0040, 0x2153, 0x6204, 0xa294, 0x00ff, -+ 0xa296, 0x0003, 0x0040, 0x2133, 0x6204, 0xa296, 0x0110, 0x00c0, -+ 0x2141, 0x78cb, 0x0001, 0x6204, 0xa294, 0xff00, 0x8217, 0x8211, -+ 0x0040, 0x2141, 0x85ff, 0x00c0, 0x2153, 0x8210, 0xa202, 0x00c8, -+ 0x2153, 0x057e, 0x1078, 0x216a, 0x057f, 0x0040, 0x214e, 0x78e0, -+ 0xa086, 0x0003, 0x0040, 0x2153, 0x0078, 0x2141, 0x8528, 0x78c8, -+ 0xa005, 0x0040, 0x20f1, 0x85ff, 0x0040, 0x215a, 0x2091, 0x4080, -+ 0x78b0, 0x70d6, 0x007c, 0x7bac, 0x79b0, 0x70d4, 0xa102, 0x00c0, -+ 0x2164, 0x2300, 0xa005, 0x007c, 0x0048, 0x2168, 0xa302, 0x007c, -+ 0x8002, 0x007c, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, -+ 0x2184, 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, -+ 0x21b9, 0x7008, 0x7208, 0xa206, 0x00c0, 0x21b9, 0xa286, 0x0008, -+ 0x00c0, 0x21b9, 0x2071, 0x0010, 0x1078, 0x21be, 0x2009, 0x0020, -+ 0x6004, 0xa086, 0x0103, 0x00c0, 0x2193, 0x6028, 0xa005, 0x00c0, -+ 0x2193, 0x2009, 0x000c, 0x1078, 0x1924, 0x0040, 0x21ac, 0x78c4, -+ 0x8000, 0x78c6, 0xa086, 0x0002, 0x00c0, 0x21b9, 0x2091, 0x8000, -+ 0x78e3, 0x0003, 0x78c7, 0x0000, 0x78cc, 0xa085, 0x0300, 0x78ce, -+ 0x2091, 0x8001, 0x0078, 0x21b9, 0x78c7, 0x0000, 0x1078, 0x1c86, -+ 0x79ac, 0x78b0, 0x8000, 0xa10a, 0x00c8, 0x21b7, 0xa006, 0x78b2, -+ 0xa006, 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x8107, 0x8004, -+ 0x8004, 0x7ab8, 0x7bb4, 0x7cc0, 0x7dbc, 0xa210, 0xa399, 0x0000, -+ 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x2009, 0x515b, 0x2091, -+ 0x8000, 0x200a, 0x0f7e, 0x0e7e, 0x2071, 0x5140, 0x7000, 0xa086, -+ 0x0000, 0x00c0, 0x21ec, 0x2009, 0x5112, 0x2104, 0xa005, 0x00c0, -+ 0x21ec, 0x2079, 0x0100, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x21ec, -+ 0x0018, 0x21ec, 0x781b, 0x004b, 0x0e7f, 0x0f7f, 0x007c, 0x0f7e, -+ 0x0e7e, 0x2071, 0x5140, 0x2091, 0x8000, 0x7000, 0xa086, 0x0000, -+ 0x00c0, 0x2205, 0x2079, 0x0100, 0x7830, 0xa084, 0x00c0, 0x00c0, -+ 0x2205, 0x0018, 0x2205, 0x781b, 0x004d, 0x2091, 0x8001, 0x0e7f, -+ 0x0f7f, 0x007c, 0x127e, 0x2091, 0x2300, 0x2071, 0x5140, 0x2079, -+ 0x0100, 0x784b, 0x000f, 0x0098, 0x2218, 0x7838, 0x0078, 0x2211, -+ 0x20a9, 0x0040, 0x7800, 0xa082, 0x0004, 0x0048, 0x2221, 0x20a9, -+ 0x0060, 0x789b, 0x0000, 0x78af, 0x0000, 0x78af, 0x0000, 0x0070, -+ 0x222b, 0x0078, 0x2223, 0x7800, 0xa082, 0x0004, 0x0048, 0x223a, -+ 0x70b7, 0x0096, 0x2019, 0x4ee7, 0x1078, 0x2276, 0x702f, 0x8001, -+ 0x0078, 0x2246, 0x70b7, 0x0000, 0x2019, 0x4d5f, 0x1078, 0x2276, -+ 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f, 0x8000, 0x7003, 0x0000, -+ 0x1078, 0x237f, 0x7004, 0xa084, 0x000f, 0x017e, 0x2009, 0x04fd, -+ 0x210c, 0xa18a, 0x0005, 0x0048, 0x225b, 0x0038, 0x2261, 0xa085, -+ 0x6280, 0x0078, 0x2263, 0x0028, 0x2261, 0xa085, 0x6280, 0x0078, -+ 0x2263, 0xa085, 0x62c0, 0x017f, 0x7806, 0x780f, 0xb204, 0x7843, -+ 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x7047, 0x0008, 0x7053, -+ 0x517f, 0x704f, 0x0000, 0x127f, 0x2000, 0x007c, 0x137e, 0x147e, -+ 0x157e, 0x047e, 0x20a1, 0x012b, 0x2304, 0xa005, 0x789a, 0x0040, -+ 0x2296, 0x8318, 0x2324, 0x8318, 0x2398, 0x24a8, 0xa484, 0xff00, -+ 0x0040, 0x228e, 0xa482, 0x0100, 0x20a9, 0x0100, 0x2020, 0x53a6, -+ 0xa005, 0x00c0, 0x2285, 0x3318, 0x0078, 0x227c, 0x047f, 0x157f, -+ 0x147f, 0x137f, 0x007c, 0xa18c, 0x000f, 0x2011, 0x0101, 0x2204, -+ 0xa084, 0xfff0, 0xa105, 0x2012, 0x1078, 0x237f, 0x007c, 0x2011, -+ 0x0101, 0x20a9, 0x0009, 0x810b, 0x0070, 0x22b0, 0x0078, 0x22ab, -+ 0xa18c, 0x0e00, 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, 0x007c, -+ 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x0070, 0x22c1, 0x0078, -+ 0x22bc, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a, -+ 0x007c, 0x2011, 0x0101, 0x20a9, 0x000c, 0x810b, 0x0070, 0x22d2, -+ 0x0078, 0x22cd, 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105, -+ 0x2012, 0x007c, 0x2011, 0x0102, 0x2204, 0xa084, 0xffcf, 0xa105, -+ 0x2012, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061, -+ 0x0100, 0x609a, 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x8103, 0x8003, -+ 0xa080, 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0xa084, -+ 0xffdf, 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0022, -+ 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0xa085, 0x0020, 0x60ae, -+ 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061, -+ 0x0100, 0x609a, 0x60a4, 0x62ae, 0x2010, 0x60a4, 0x63ae, 0x2018, -+ 0x0c7f, 0x007c, 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, 0xa005, -+ 0x0040, 0x235d, 0x2061, 0x7500, 0x1078, 0x2365, 0x0040, 0x2349, -+ 0x20a9, 0x0000, 0x2061, 0x7400, 0x0c7e, 0x1078, 0x2365, 0x0040, -+ 0x2339, 0x0c7f, 0x8c60, 0x0070, 0x2337, 0x0078, 0x232c, 0x0078, -+ 0x235d, 0x007f, 0xa082, 0x7400, 0x2071, 0x5140, 0x7086, 0x7182, -+ 0x2001, 0x0004, 0x706e, 0x7093, 0x000f, 0x1078, 0x21cd, 0x0078, -+ 0x2359, 0x60c0, 0xa005, 0x00c0, 0x235d, 0x2071, 0x5140, 0x7182, -+ 0x2c00, 0x708a, 0x2001, 0x0006, 0x706e, 0x7093, 0x000f, 0x1078, -+ 0x21cd, 0x2001, 0x0000, 0x0078, 0x235f, 0x2001, 0x0001, 0x2091, -+ 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04, 0xa005, 0x0040, -+ 0x237c, 0x2060, 0x600c, 0xa306, 0x00c0, 0x2379, 0x6010, 0xa206, -+ 0x00c0, 0x2379, 0x6014, 0xa106, 0x00c0, 0x2379, 0xa006, 0x0078, -+ 0x237e, 0x6000, 0x0078, 0x2366, 0xa085, 0x0001, 0x007c, 0x2011, -+ 0x5141, 0x220c, 0xa18c, 0x000f, 0x2011, 0x013b, 0x2204, 0xa084, -+ 0x0100, 0x0040, 0x2395, 0x2021, 0xff04, 0x2122, 0x810b, 0x810b, -+ 0x810b, 0x810b, 0xa18d, 0x0f00, 0x2104, 0x007c, 0x0e7e, 0x68e4, -+ 0xa08c, 0x0020, 0x0040, 0x23e9, 0xa084, 0x0006, 0x00c0, 0x23e9, -+ 0x6014, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0f0, -+ 0x5380, 0x7004, 0xa084, 0x000a, 0x00c0, 0x23e9, 0x7108, 0xa194, -+ 0xff00, 0x0040, 0x23e9, 0xa18c, 0x00ff, 0x2001, 0x000c, 0xa106, -+ 0x0040, 0x23d0, 0x2001, 0x0012, 0xa106, 0x0040, 0x23d4, 0x2001, -+ 0x0014, 0xa106, 0x0040, 0x23d8, 0x2001, 0x0019, 0xa106, 0x0040, -+ 0x23dc, 0x2001, 0x0032, 0xa106, 0x0040, 0x23e0, 0x0078, 0x23e4, -+ 0x2009, 0x0012, 0x0078, 0x23e6, 0x2009, 0x0014, 0x0078, 0x23e6, -+ 0x2009, 0x0019, 0x0078, 0x23e6, 0x2009, 0x0020, 0x0078, 0x23e6, -+ 0x2009, 0x003f, 0x0078, 0x23e6, 0x2011, 0x0000, 0x2100, 0xa205, -+ 0x700a, 0x0e7f, 0x007c, 0x0068, 0x23eb, 0x2091, 0x8000, 0x2071, -+ 0x0000, 0x007e, 0x7018, 0xa084, 0x0001, 0x00c0, 0x23f2, 0x007f, -+ 0x2071, 0x0010, 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db, -+ 0x0741, 0x70df, 0x0000, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, -+ 0x4080, 0x0078, 0x2409, 0x107e, 0x007e, 0x127e, 0x2091, 0x2300, -+ 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x77c2, 0x74c6, 0x76ca, 0x75ce, -+ 0xa594, 0x003f, 0xa49c, 0x0003, 0xa484, 0x000f, 0x0079, 0x2420, -+ 0x2432, 0x2432, 0x2432, 0x276c, 0x393b, 0x2430, 0x2461, 0x246b, -+ 0x2430, 0x2430, 0x2430, 0x2430, 0x2430, 0x2430, 0x2430, 0x2430, -+ 0x1078, 0x23eb, 0x8507, 0xa084, 0x001f, 0x0079, 0x2437, 0x2475, -+ 0x276c, 0x2926, 0x2a23, 0x2a4b, 0x2ced, 0x2f98, 0x2fdb, 0x3026, -+ 0x30ab, 0x3163, 0x320c, 0x2461, 0x2848, 0x2f6d, 0x2457, 0x3cc8, -+ 0x3ce8, 0x3eae, 0x3eba, 0x3f8f, 0x2457, 0x2457, 0x4062, 0x4066, -+ 0x3cc6, 0x2457, 0x3e19, 0x2457, 0x3b8c, 0x246b, 0x2457, 0x1078, -+ 0x23eb, 0x0018, 0x2410, 0x127f, 0x2091, 0x8001, 0x007f, 0x107f, -+ 0x007c, 0x2019, 0x4e3b, 0x1078, 0x2276, 0x702f, 0x0001, 0x781b, -+ 0x004f, 0x0078, 0x2459, 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f, -+ 0x8000, 0x781b, 0x00d0, 0x0078, 0x2459, 0x7242, 0x2009, 0x510f, -+ 0x200b, 0x0000, 0xa584, 0x0001, 0x00c0, 0x3ba0, 0x0040, 0x2492, -+ 0x1078, 0x23eb, 0x7003, 0x0000, 0x704b, 0x0000, 0x7043, 0x0000, -+ 0x7037, 0x0000, 0x1078, 0x3912, 0x0018, 0x2410, 0x2009, 0x510f, -+ 0x200b, 0x0000, 0x7068, 0xa005, 0x00c0, 0x255d, 0x706c, 0xa084, -+ 0x0007, 0x0079, 0x249b, 0x2594, 0x24a3, 0x24af, 0x24cc, 0x24ee, -+ 0x253b, 0x2514, 0x24a3, 0x1078, 0x38fa, 0x2009, 0x0048, 0x1078, -+ 0x2e39, 0x00c0, 0x24ad, 0x7003, 0x0004, 0x0078, 0x2459, 0x1078, -+ 0x38fa, 0x00c0, 0x24ca, 0x7080, 0x8007, 0x7882, 0x789b, 0x0010, -+ 0x78ab, 0x000c, 0x789b, 0x0060, 0x78ab, 0x0001, 0x785b, 0x0004, -+ 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x24ca, 0x7003, 0x0004, -+ 0x7093, 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa, 0x00c0, 0x24ec, -+ 0x7180, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d, -+ 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, -+ 0x785b, 0x0004, 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x24ec, -+ 0x7003, 0x0004, 0x7093, 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa, -+ 0x00c0, 0x2512, 0x7180, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, -+ 0x001f, 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0020, 0x7184, 0x79aa, -+ 0x78ab, 0x000d, 0x789b, 0x0060, 0x78ab, 0x0004, 0x785b, 0x0004, -+ 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x2512, 0x7003, 0x0004, -+ 0x7093, 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa, 0x00c0, 0x2539, -+ 0x7180, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d, -+ 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, -+ 0x785b, 0x0004, 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x2539, -+ 0x7088, 0x708b, 0x0000, 0x2068, 0x704a, 0x7003, 0x0002, 0x7093, -+ 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa, 0x00c0, 0x2459, 0x7088, -+ 0x2068, 0x6f14, 0x1078, 0x37ef, 0x2c50, 0x1078, 0x39ac, 0x789b, -+ 0x0010, 0x6814, 0xa084, 0x001f, 0xa085, 0x0080, 0x78aa, 0x6e1c, -+ 0x2041, 0x0001, 0x708c, 0xa084, 0x0400, 0x2001, 0x0004, 0x0040, -+ 0x255b, 0x2001, 0x0006, 0x0078, 0x267c, 0x1078, 0x38fa, 0x00c0, -+ 0x2459, 0x789b, 0x0010, 0x7068, 0x2068, 0x6f14, 0x1078, 0x37ef, -+ 0x2c50, 0x1078, 0x39ac, 0x6008, 0xa085, 0x0010, 0x600a, 0x6824, -+ 0xa005, 0x0040, 0x257b, 0xa082, 0x0006, 0x0048, 0x2579, 0x0078, -+ 0x257b, 0x6827, 0x0005, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, -+ 0x7058, 0xa084, 0x8000, 0x0040, 0x2589, 0xa684, 0x0001, 0x0040, -+ 0x258b, 0xa39c, 0xffbf, 0x7baa, 0x2031, 0x0020, 0x2041, 0x0001, -+ 0x2001, 0x0003, 0x0078, 0x267c, 0x0018, 0x2410, 0x744c, 0xa485, -+ 0x0000, 0x0040, 0x25ae, 0xa080, 0x5180, 0x2030, 0x7150, 0x8108, -+ 0xa12a, 0x0048, 0x25a5, 0x2009, 0x5180, 0x2164, 0x6504, 0x85ff, -+ 0x00c0, 0x25bf, 0x8421, 0x00c0, 0x259f, 0x7152, 0x7003, 0x0000, -+ 0x704b, 0x0000, 0x7040, 0xa005, 0x0040, 0x3ba0, 0x0078, 0x2459, -+ 0x764c, 0xa6b0, 0x5180, 0x7150, 0x2600, 0x0078, 0x25aa, 0x7152, -+ 0x2568, 0x2558, 0x754a, 0x2c50, 0x6034, 0xa085, 0x0000, 0x00c0, -+ 0x25bc, 0x6708, 0x773a, 0xa784, 0x033f, 0x0040, 0x25f5, 0xa784, -+ 0x0021, 0x00c0, 0x25bc, 0xa784, 0x0002, 0x0040, 0x25de, 0xa784, -+ 0x0004, 0x0040, 0x25bc, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0008, -+ 0x00c0, 0x25bc, 0xa784, 0x0010, 0x00c0, 0x25bc, 0xa784, 0x0200, -+ 0x00c0, 0x25bc, 0xa784, 0x0100, 0x0040, 0x25f5, 0x6018, 0xa005, -+ 0x00c0, 0x25bc, 0xa7bc, 0xfeff, 0x670a, 0x6823, 0x0000, 0x6e1c, -+ 0xa684, 0x000e, 0x6118, 0x0040, 0x2605, 0x601c, 0xa102, 0x0048, -+ 0x2608, 0x0040, 0x2608, 0x0078, 0x25b8, 0x81ff, 0x00c0, 0x25b8, -+ 0x68c3, 0x0000, 0xa784, 0x0080, 0x00c0, 0x2610, 0x700c, 0x6022, -+ 0xa7bc, 0xff7f, 0x670a, 0x1078, 0x39ac, 0x0018, 0x2410, 0x789b, -+ 0x0010, 0xa046, 0x1078, 0x38fa, 0x00c0, 0x2459, 0x6b14, 0xa39c, -+ 0x001f, 0xa39d, 0x00c0, 0x7058, 0xa084, 0x8000, 0x0040, 0x262c, -+ 0xa684, 0x0001, 0x0040, 0x262e, 0xa39c, 0xffbf, 0xa684, 0x0010, -+ 0x0040, 0x2634, 0xa39d, 0x0020, 0x7baa, 0x8840, 0xa684, 0x000e, -+ 0x00c0, 0x263f, 0xa7bd, 0x0010, 0x670a, 0x0078, 0x267a, 0x7158, -+ 0xa18c, 0x0800, 0x0040, 0x3401, 0x2011, 0x0020, 0xa684, 0x0008, -+ 0x00c0, 0x2650, 0x8210, 0xa684, 0x0002, 0x00c0, 0x2650, 0x8210, -+ 0x7aaa, 0x8840, 0x1078, 0x3912, 0x6a14, 0x610c, 0x8108, 0xa18c, -+ 0x00ff, 0xa1e0, 0x7400, 0x2c64, 0x8cff, 0x0040, 0x2671, 0x6014, -+ 0xa206, 0x00c0, 0x265b, 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x2656, -+ 0x0c7e, 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x0c7f, 0x0078, -+ 0x2594, 0x1078, 0x38fa, 0x00c0, 0x2459, 0x2a60, 0x610e, 0x79aa, -+ 0x8840, 0x7132, 0x2001, 0x0001, 0x007e, 0x715c, 0xa184, 0x0018, -+ 0x0040, 0x2697, 0xa184, 0x0010, 0x0040, 0x268a, 0x1078, 0x3604, -+ 0x00c0, 0x26ba, 0xa184, 0x0008, 0x0040, 0x2697, 0x69a0, 0xa184, -+ 0x0600, 0x00c0, 0x2697, 0x1078, 0x34f1, 0x0078, 0x26ba, 0x69a0, -+ 0xa184, 0x0800, 0x0040, 0x26ae, 0x0c7e, 0x027e, 0x2960, 0x6000, -+ 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d, 0x0010, 0x6106, 0x027f, -+ 0x0c7f, 0x1078, 0x3604, 0x00c0, 0x26ba, 0x69a0, 0xa184, 0x0200, -+ 0x0040, 0x26b6, 0x1078, 0x3540, 0x0078, 0x26ba, 0xa184, 0x0400, -+ 0x00c0, 0x2693, 0x69a0, 0xa184, 0x1000, 0x0040, 0x26c5, 0x6914, -+ 0xa18c, 0xff00, 0x810f, 0x1078, 0x22ee, 0x007f, 0x7002, 0xa68c, -+ 0x00e0, 0xa684, 0x0060, 0x0040, 0x26d3, 0xa086, 0x0060, 0x00c0, -+ 0x26d3, 0xa18d, 0x4000, 0x88ff, 0x0040, 0x26d8, 0xa18d, 0x0004, -+ 0x795a, 0x69b6, 0x789b, 0x0060, 0x2800, 0x78aa, 0x789b, 0x0061, -+ 0x6818, 0xa08d, 0x8000, 0xa084, 0x7fff, 0x691a, 0xa68c, 0x0080, -+ 0x0040, 0x26f7, 0x7097, 0x0000, 0xa08a, 0x000d, 0x0050, 0x26f5, -+ 0xa08a, 0x000c, 0x7196, 0x2001, 0x000c, 0x800c, 0x719a, 0x78aa, -+ 0x8008, 0x810c, 0x0040, 0x3407, 0xa18c, 0x00f8, 0x00c0, 0x3407, -+ 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000, -+ 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, -+ 0x6814, 0x8007, 0x7882, 0x6d94, 0x7dd6, 0x7dde, 0x6e98, 0x7ed2, -+ 0x7eda, 0x1078, 0x38fa, 0x00c0, 0x272e, 0x702c, 0x8003, 0x0048, -+ 0x2727, 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f, 0x8000, 0x7830, -+ 0xa084, 0x00c0, 0x00c0, 0x272e, 0x0098, 0x2736, 0x6008, 0xa084, -+ 0xffef, 0x600a, 0x1078, 0x3912, 0x0078, 0x2482, 0x7200, 0xa284, -+ 0x0007, 0xa086, 0x0001, 0x00c0, 0x2743, 0x781b, 0x004f, 0x1078, -+ 0x3912, 0x0078, 0x2754, 0x6ab4, 0xa295, 0x2000, 0x7a5a, 0x781b, -+ 0x004f, 0x1078, 0x3912, 0x7200, 0x2500, 0xa605, 0x0040, 0x2754, -+ 0xa284, 0x0007, 0x1079, 0x2762, 0xad80, 0x0009, 0x7036, 0xa284, -+ 0x0007, 0xa086, 0x0001, 0x00c0, 0x2459, 0x6018, 0x8000, 0x601a, -+ 0x0078, 0x2459, 0x276a, 0x4a3a, 0x4a3a, 0x4a29, 0x4a3a, 0x276a, -+ 0x4a29, 0x276a, 0x1078, 0x23eb, 0x1078, 0x38fa, 0x0f7e, 0x2079, -+ 0x5100, 0x78cc, 0x0f7f, 0xa084, 0x0001, 0x0040, 0x2790, 0x706c, -+ 0xa086, 0x0001, 0x00c0, 0x277f, 0x706e, 0x0078, 0x2823, 0x706c, -+ 0xa086, 0x0005, 0x00c0, 0x278e, 0x7088, 0x2068, 0x681b, 0x0004, -+ 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x706f, 0x0000, -+ 0x2011, 0x0004, 0x716c, 0xa186, 0x0001, 0x0040, 0x27b1, 0xa186, -+ 0x0007, 0x00c0, 0x27a1, 0x2009, 0x5138, 0x200b, 0x0005, 0x0078, -+ 0x27b1, 0x2009, 0x5113, 0x2104, 0x2009, 0x5112, 0x200a, 0x2009, -+ 0x5138, 0x200b, 0x0001, 0x706f, 0x0000, 0x7073, 0x0001, 0x0078, -+ 0x27b3, 0x706f, 0x0000, 0x1078, 0x4776, 0x157e, 0x20a9, 0x0010, -+ 0x2039, 0x0000, 0x1078, 0x36e2, 0xa7b8, 0x0100, 0x0070, 0x27c2, -+ 0x0078, 0x27ba, 0x157f, 0x7000, 0x0079, 0x27c6, 0x27f4, 0x27db, -+ 0x27db, 0x27ce, 0x27f4, 0x27f4, 0x27f4, 0x27f4, 0x2021, 0x515a, -+ 0x2404, 0xa005, 0x0040, 0x27f4, 0xad06, 0x00c0, 0x27db, 0x6800, -+ 0x2022, 0x0078, 0x27eb, 0x6820, 0xa084, 0x0001, 0x00c0, 0x27e7, -+ 0x6f14, 0x1078, 0x37ef, 0x1078, 0x33d8, 0x0078, 0x27eb, 0x7060, -+ 0x2060, 0x6800, 0x6002, 0x6a1a, 0x6817, 0x0000, 0x6820, 0xa085, -+ 0x0008, 0x6822, 0x1078, 0x1c70, 0x2021, 0x7500, 0x1078, 0x2830, -+ 0x2021, 0x515a, 0x1078, 0x2830, 0x157e, 0x20a9, 0x0000, 0x2021, -+ 0x7400, 0x1078, 0x2830, 0x8420, 0x0070, 0x2808, 0x0078, 0x2801, -+ 0x2061, 0x5400, 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, 0x6110, -+ 0x81ff, 0x0040, 0x2817, 0xa102, 0x0050, 0x2817, 0x6012, 0x601b, -+ 0x0000, 0xace0, 0x0010, 0x0070, 0x281f, 0x0078, 0x280e, 0x8421, -+ 0x00c0, 0x280c, 0x157f, 0x709c, 0xa084, 0x8000, 0x0040, 0x282a, -+ 0x1078, 0x3a00, 0x7003, 0x0000, 0x704b, 0x0000, 0x0078, 0x2459, -+ 0x047e, 0x2404, 0xa005, 0x0040, 0x2844, 0x2068, 0x6800, 0x007e, -+ 0x6a1a, 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x1078, -+ 0x1c70, 0x007f, 0x0078, 0x2832, 0x047f, 0x2023, 0x0000, 0x007c, -+ 0xa282, 0x0003, 0x0050, 0x284e, 0x1078, 0x23eb, 0x2300, 0x0079, -+ 0x2851, 0x2854, 0x28c7, 0x28e4, 0xa282, 0x0002, 0x0040, 0x285a, -+ 0x1078, 0x23eb, 0x706c, 0x706f, 0x0000, 0x7093, 0x0000, 0x0079, -+ 0x2861, 0x2869, 0x2869, 0x286b, 0x289f, 0x340d, 0x2869, 0x289f, -+ 0x2869, 0x1078, 0x23eb, 0x7780, 0x1078, 0x36e2, 0x7780, 0xa7bc, -+ 0x0f00, 0x1078, 0x37ef, 0x6018, 0xa005, 0x0040, 0x2896, 0x2021, -+ 0x7500, 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, 0x28ff, 0x0040, -+ 0x2896, 0x157e, 0x20a9, 0x0000, 0x2021, 0x7400, 0x047e, 0x2009, -+ 0x0004, 0x2011, 0x0010, 0x1078, 0x28ff, 0x047f, 0x0040, 0x2895, -+ 0x8420, 0x0070, 0x2895, 0x0078, 0x2886, 0x157f, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x2871, 0x0078, 0x2482, 0x0078, 0x2482, 0x7780, -+ 0x1078, 0x37ef, 0x6018, 0xa005, 0x0040, 0x28c5, 0x2021, 0x7500, -+ 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x28ff, 0x0040, 0x28c5, -+ 0x157e, 0x20a9, 0x0000, 0x2021, 0x7400, 0x047e, 0x2009, 0x0005, -+ 0x2011, 0x0020, 0x1078, 0x28ff, 0x047f, 0x0040, 0x28c4, 0x8420, -+ 0x0070, 0x28c4, 0x0078, 0x28b5, 0x157f, 0x0078, 0x2482, 0x2200, -+ 0x0079, 0x28ca, 0x28cd, 0x28cf, 0x28cf, 0x1078, 0x23eb, 0x2009, -+ 0x0012, 0x706c, 0xa086, 0x0002, 0x0040, 0x28d8, 0x2009, 0x000e, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x28de, 0x691a, 0x706f, 0x0000, -+ 0x7073, 0x0001, 0x0078, 0x3888, 0x2200, 0x0079, 0x28e7, 0x28ec, -+ 0x28cf, 0x28ea, 0x1078, 0x23eb, 0x1078, 0x4776, 0x7000, 0xa086, -+ 0x0001, 0x00c0, 0x339d, 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, -+ 0x600a, 0x1078, 0x3390, 0x0040, 0x339d, 0x0078, 0x2594, 0x2404, -+ 0xa005, 0x0040, 0x2922, 0x2068, 0x2d04, 0x007e, 0x6814, 0xa706, -+ 0x0040, 0x290e, 0x2d20, 0x007f, 0x0078, 0x2900, 0x007f, 0x2022, -+ 0x691a, 0x6817, 0x0000, 0x6820, 0xa205, 0x6822, 0x1078, 0x1c70, -+ 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, -+ 0x33ee, 0x007c, 0xa085, 0x0001, 0x0078, 0x2921, 0x2300, 0x0079, -+ 0x2929, 0x292e, 0x292c, 0x29c7, 0x1078, 0x23eb, 0x78ec, 0xa084, -+ 0x0001, 0x00c0, 0x2942, 0x7000, 0xa086, 0x0004, 0x00c0, 0x293a, -+ 0x0078, 0x2965, 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, 0x600a, -+ 0x0078, 0x339d, 0x78e4, 0xa005, 0x00d0, 0x2965, 0x0018, 0x2459, -+ 0x2008, 0xa084, 0x0030, 0x00c0, 0x2951, 0x781b, 0x004f, 0x0078, -+ 0x2459, 0x78ec, 0xa084, 0x0003, 0x0040, 0x294d, 0x2100, 0xa084, -+ 0x0007, 0x0079, 0x295b, 0x299e, 0x29a9, 0x298f, 0x2963, 0x38ed, -+ 0x38ed, 0x2963, 0x29b8, 0x1078, 0x23eb, 0x7000, 0xa086, 0x0004, -+ 0x00c0, 0x297f, 0x706c, 0xa086, 0x0002, 0x00c0, 0x2975, 0x2011, -+ 0x0002, 0x2019, 0x0000, 0x0078, 0x2848, 0x706c, 0xa086, 0x0006, -+ 0x0040, 0x296f, 0x706c, 0xa086, 0x0004, 0x0040, 0x296f, 0x79e4, -+ 0xa184, 0x0030, 0x0040, 0x2989, 0x78ec, 0xa084, 0x0003, 0x00c0, -+ 0x298b, 0x0078, 0x2f6d, 0x2001, 0x0003, 0x0078, 0x2d01, 0x6818, -+ 0xa084, 0x8000, 0x0040, 0x2996, 0x681b, 0x001d, 0x1078, 0x36c1, -+ 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x29a5, 0x681b, 0x001d, 0x1078, 0x36c1, 0x0078, -+ 0x38b8, 0x6818, 0xa084, 0x8000, 0x0040, 0x29b0, 0x681b, 0x001d, -+ 0x1078, 0x36c1, 0x782b, 0x3008, 0x781b, 0x00cd, 0x0078, 0x2459, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x29bf, 0x681b, 0x001d, 0x1078, -+ 0x36c1, 0x782b, 0x3008, 0x781b, 0x008e, 0x0078, 0x2459, 0xa584, -+ 0x000f, 0x00c0, 0x29e4, 0x7000, 0x0079, 0x29ce, 0x2482, 0x29d8, -+ 0x29d6, 0x339d, 0x339d, 0x339d, 0x339d, 0x29d6, 0x1078, 0x23eb, -+ 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x3390, -+ 0x0040, 0x339d, 0x0078, 0x2594, 0x78e4, 0xa005, 0x00d0, 0x2965, -+ 0x0018, 0x2965, 0x2008, 0xa084, 0x0030, 0x00c0, 0x29f3, 0x781b, -+ 0x004f, 0x0078, 0x2459, 0x78ec, 0xa084, 0x0003, 0x0040, 0x29ef, -+ 0x2100, 0xa184, 0x0007, 0x0079, 0x29fd, 0x2a0f, 0x2a13, 0x2a07, -+ 0x2a05, 0x38ed, 0x38ed, 0x2a05, 0x38e3, 0x1078, 0x23eb, 0x1078, -+ 0x36c9, 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x1078, -+ 0x36c9, 0x0078, 0x38b8, 0x1078, 0x36c9, 0x782b, 0x3008, 0x781b, -+ 0x00cd, 0x0078, 0x2459, 0x1078, 0x36c9, 0x782b, 0x3008, 0x781b, -+ 0x008e, 0x0078, 0x2459, 0x2300, 0x0079, 0x2a26, 0x2a2b, 0x2a29, -+ 0x2a2d, 0x1078, 0x23eb, 0x0078, 0x30ab, 0x681b, 0x0008, 0x78a3, -+ 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x30ab, 0x78ec, 0xa084, -+ 0x0003, 0x0040, 0x30ab, 0xa184, 0x0007, 0x0079, 0x2a3f, 0x2a47, -+ 0x2a13, 0x298f, 0x3888, 0x38ed, 0x38ed, 0x2a47, 0x38e3, 0x1078, -+ 0x389c, 0x0078, 0x2459, 0xa282, 0x0005, 0x0050, 0x2a51, 0x1078, -+ 0x23eb, 0x2300, 0x0079, 0x2a54, 0x2a57, 0x2cae, 0x2cbc, 0x2200, -+ 0x0079, 0x2a5a, 0x2a74, 0x2a61, 0x2a74, 0x2a5f, 0x2c93, 0x1078, -+ 0x23eb, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa082, 0x0020, -+ 0x0048, 0x369d, 0xa08a, 0x0004, 0x00c8, 0x369d, 0x0079, 0x2a70, -+ 0x369d, 0x369d, 0x369d, 0x364b, 0x789b, 0x0018, 0x79a8, 0xa184, -+ 0x0080, 0x0040, 0x2a85, 0x0078, 0x369d, 0x7000, 0xa005, 0x00c0, -+ 0x2a7b, 0x2011, 0x0004, 0x0078, 0x321f, 0xa184, 0x00ff, 0xa08a, -+ 0x0010, 0x00c8, 0x369d, 0x0079, 0x2a8d, 0x2a9f, 0x2a9d, 0x2ab7, -+ 0x2abb, 0x2b78, 0x369d, 0x369d, 0x2b7a, 0x369d, 0x369d, 0x2c8f, -+ 0x2c8f, 0x369d, 0x369d, 0x369d, 0x2c91, 0x1078, 0x23eb, 0xa684, -+ 0x1000, 0x0040, 0x2aac, 0x2001, 0x0500, 0x8000, 0x8000, 0x783a, -+ 0x781b, 0x008c, 0x0078, 0x2459, 0x6818, 0xa084, 0x8000, 0x0040, -+ 0x2ab5, 0x681b, 0x001d, 0x0078, 0x2aa3, 0x0078, 0x3888, 0x681b, -+ 0x001d, 0x0078, 0x36ad, 0x6920, 0x6922, 0xa684, 0x1800, 0x00c0, -+ 0x2afc, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2b04, 0x6818, 0xa086, -+ 0x0008, 0x00c0, 0x2acd, 0x681b, 0x0000, 0xa684, 0x0400, 0x0040, -+ 0x2b74, 0xa684, 0x0080, 0x0040, 0x2af8, 0x7097, 0x0000, 0x6818, -+ 0xa084, 0x003f, 0xa08a, 0x000d, 0x0050, 0x2af8, 0xa08a, 0x000c, -+ 0x7196, 0x2001, 0x000c, 0x800c, 0x719a, 0x789b, 0x0061, 0x78aa, -+ 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000, -+ 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, -+ 0x781b, 0x0058, 0x0078, 0x2459, 0xa684, 0x1000, 0x0040, 0x2b04, -+ 0x781b, 0x0065, 0x0078, 0x2459, 0xa684, 0x0060, 0x0040, 0x2b70, -+ 0xa684, 0x0800, 0x0040, 0x2b70, 0xa684, 0x8000, 0x00c0, 0x2b12, -+ 0x0078, 0x2b2c, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb6, 0x789b, 0x0076, -+ 0x7aac, 0x79ac, 0x78ac, 0x801b, 0x00c8, 0x2b1f, 0x8000, 0xa084, -+ 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, -+ 0x6b94, 0x2200, 0xa303, 0x68ae, 0xa684, 0x4000, 0x0040, 0x2b34, -+ 0xa6b4, 0xbfff, 0x7e5a, 0x6eb6, 0x7000, 0xa086, 0x0003, 0x00c0, -+ 0x2b41, 0x1078, 0x482c, 0x1078, 0x4a29, 0x781b, 0x0064, 0x0078, -+ 0x2459, 0xa006, 0x1078, 0x4b30, 0x6ab0, 0x69ac, 0x6c98, 0x6b94, -+ 0x2200, 0xa105, 0x0040, 0x2b50, 0x2200, 0xa422, 0x2100, 0xa31b, -+ 0x6caa, 0x7cd2, 0x7cda, 0x6ba6, 0x7bd6, 0x7bde, 0x2300, 0xa405, -+ 0x00c0, 0x2b62, 0xa6b5, 0x4000, 0x7e5a, 0x6eb6, 0x781b, 0x0064, -+ 0x0078, 0x2459, 0x781b, 0x0064, 0x2200, 0xa115, 0x00c0, 0x2b6c, -+ 0x1078, 0x4a3a, 0x0078, 0x2459, 0x1078, 0x4a85, 0x0078, 0x2459, -+ 0x781b, 0x0065, 0x0078, 0x2459, 0x781b, 0x0058, 0x0078, 0x2459, -+ 0x1078, 0x23eb, 0x0078, 0x2bdb, 0x6920, 0xa184, 0x0100, 0x0040, -+ 0x2b92, 0xa18c, 0xfeff, 0x6922, 0x0c7e, 0x7054, 0x2060, 0x6000, -+ 0xa084, 0xefff, 0x6002, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, -+ 0x0078, 0x2bca, 0xa184, 0x0200, 0x0040, 0x2bca, 0xa18c, 0xfdff, -+ 0x6922, 0x0c7e, 0x7054, 0x2060, 0x6000, 0xa084, 0xdfff, 0x6002, -+ 0x6004, 0xa084, 0xffef, 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xa184, -+ 0x0008, 0x0040, 0x2bca, 0x1078, 0x37eb, 0x1078, 0x34f1, 0x88ff, -+ 0x0040, 0x2bca, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5, -+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2bc4, 0x782b, 0x3008, -+ 0x781b, 0x0056, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b, 0x0065, -+ 0x0078, 0x2459, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x2bd3, 0x781b, -+ 0x0058, 0x0078, 0x2459, 0x781b, 0x0065, 0x0078, 0x2459, 0x0078, -+ 0x36a5, 0x0078, 0x36a5, 0x2019, 0x0000, 0x7990, 0xa18c, 0x0007, -+ 0x00c0, 0x2be9, 0x6820, 0xa084, 0x0100, 0x0040, 0x2bd9, 0x2009, -+ 0x0008, 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, -+ 0x00c0, 0x2c20, 0x2300, 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, -+ 0x2c18, 0x0048, 0x2bfd, 0x0078, 0x2c1a, 0xa380, 0x0002, 0xa102, -+ 0x00c8, 0x2c18, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0c7e, 0x7054, -+ 0x2060, 0x6000, 0xa084, 0xefef, 0x6002, 0x6004, 0xa084, 0xffe5, -+ 0x6006, 0x0c7f, 0x7e58, 0xa6b4, 0xfffb, 0x7e5a, 0x0078, 0x2bcb, -+ 0x0078, 0x2b7c, 0x24a8, 0x7aa8, 0x00f0, 0x2c1a, 0x0078, 0x2beb, -+ 0xa284, 0x00f0, 0xa086, 0x0020, 0x00c0, 0x2c80, 0x8318, 0x8318, -+ 0x2300, 0xa102, 0x0040, 0x2c30, 0x0048, 0x2c30, 0x0078, 0x2c7d, -+ 0xa286, 0x0023, 0x0040, 0x2bd9, 0x681c, 0xa084, 0xfff1, 0x681e, -+ 0x7e58, 0xa684, 0xfff1, 0xa085, 0x0010, 0x2030, 0x7e5a, 0x6008, -+ 0xa085, 0x0010, 0x600a, 0x0c7e, 0x7054, 0x2060, 0x6004, 0x2008, -+ 0x2c48, 0x0c7f, 0xa184, 0x0010, 0x0040, 0x2c54, 0x1078, 0x37eb, -+ 0x1078, 0x3604, 0x0078, 0x2c63, 0x0c7e, 0x7054, 0x2060, 0x6004, -+ 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x2bca, 0x1078, -+ 0x37eb, 0x1078, 0x34f1, 0x88ff, 0x0040, 0x2bca, 0x789b, 0x0060, -+ 0x2800, 0x78aa, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, -+ 0x2c77, 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x782b, -+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x7aa8, 0x0078, 0x2beb, -+ 0x8318, 0x2300, 0xa102, 0x0040, 0x2c89, 0x0048, 0x2c89, 0x0078, -+ 0x2beb, 0xa284, 0x0080, 0x00c0, 0x36ad, 0x0078, 0x36a5, 0x0078, -+ 0x36ad, 0x0078, 0x369d, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, -+ 0xa08e, 0x0001, 0x0040, 0x2c9e, 0x1078, 0x23eb, 0x7aa8, 0xa294, -+ 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x369d, -+ 0x0079, 0x2caa, 0x369d, 0x343e, 0x369d, 0x3599, 0xa282, 0x0000, -+ 0x00c0, 0x2cb4, 0x1078, 0x23eb, 0x1078, 0x36c1, 0x782b, 0x3008, -+ 0x781b, 0x0065, 0x0078, 0x2459, 0xa282, 0x0003, 0x00c0, 0x2cc2, -+ 0x1078, 0x23eb, 0xa484, 0x8000, 0x00c0, 0x2ce5, 0x706c, 0xa005, -+ 0x0040, 0x2ccc, 0x1078, 0x23eb, 0x6f14, 0x7782, 0xa7bc, 0x0f00, -+ 0x1078, 0x37ef, 0x6008, 0xa085, 0x0021, 0x600a, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x2cd0, 0x1078, 0x36c5, 0x706f, 0x0002, 0x2009, -+ 0x5138, 0x200b, 0x0009, 0x0078, 0x2ce7, 0x1078, 0x36d1, 0x782b, -+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0xa282, 0x0004, 0x0050, -+ 0x2cf3, 0x1078, 0x23eb, 0x2300, 0x0079, 0x2cf6, 0x2cf9, 0x2de2, -+ 0x2e15, 0xa286, 0x0003, 0x0040, 0x2cff, 0x1078, 0x23eb, 0x2001, -+ 0x0000, 0x007e, 0x68c0, 0xa005, 0x0040, 0x2d08, 0x7003, 0x0003, -+ 0x68a0, 0xa084, 0x2000, 0x0040, 0x2d11, 0x6008, 0xa085, 0x0002, -+ 0x600a, 0x007f, 0x703e, 0x7000, 0xa084, 0x0007, 0x0079, 0x2d18, -+ 0x2482, 0x2d22, 0x2d22, 0x2f17, 0x2f53, 0x2482, 0x2f53, 0x2d20, -+ 0x1078, 0x23eb, 0xa684, 0x1000, 0x00c0, 0x2d2a, 0x1078, 0x4776, -+ 0x0040, 0x2dbc, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x2d72, 0xa186, -+ 0x0008, 0x00c0, 0x2d41, 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, -+ 0x600a, 0x1078, 0x3390, 0x0040, 0x2d72, 0x1078, 0x4776, 0x0078, -+ 0x2d59, 0xa186, 0x0028, 0x00c0, 0x2d72, 0x1078, 0x4776, 0x6008, -+ 0xa084, 0xffef, 0x600a, 0x6018, 0xa005, 0x0040, 0x2d59, 0x8001, -+ 0x601a, 0xa005, 0x0040, 0x2d59, 0x8001, 0xa005, 0x0040, 0x2d59, -+ 0x601e, 0x6820, 0xa084, 0x0001, 0x0040, 0x2482, 0x6820, 0xa084, -+ 0xfffe, 0x6822, 0x7060, 0x0c7e, 0x2060, 0x6800, 0x6002, 0x0c7f, -+ 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0, 0x2d6f, 0x6002, 0x6006, -+ 0x0078, 0x2482, 0x017e, 0x1078, 0x2e46, 0x017f, 0xa684, 0xdf00, -+ 0x681e, 0x682b, 0x0000, 0x6f14, 0x81ff, 0x0040, 0x2dbc, 0xa186, -+ 0x0002, 0x00c0, 0x2dbc, 0xa684, 0x0800, 0x00c0, 0x2d8f, 0xa684, -+ 0x0060, 0x0040, 0x2d8f, 0x78d8, 0x7adc, 0x682e, 0x6a32, 0x6820, -+ 0xa084, 0x0800, 0x00c0, 0x2dbc, 0x8717, 0xa294, 0x000f, 0x8213, -+ 0x8213, 0x8213, 0xa290, 0x5380, 0xa290, 0x0000, 0x221c, 0xa384, -+ 0x0100, 0x00c0, 0x2da5, 0x0078, 0x2dab, 0x8210, 0x2204, 0xa085, -+ 0x0018, 0x2012, 0x8211, 0xa384, 0x0400, 0x0040, 0x2db8, 0x68a0, -+ 0xa084, 0x0100, 0x00c0, 0x2db8, 0x1078, 0x2eca, 0x0078, 0x2482, -+ 0x6008, 0xa085, 0x0002, 0x600a, 0x6916, 0x6818, 0xa084, 0x8000, -+ 0x0040, 0x2dc4, 0x703c, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x1078, -+ 0x33df, 0x1078, 0x33ee, 0x00c0, 0x2dd1, 0x6008, 0xa084, 0xffef, -+ 0x600a, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2dda, 0x1078, 0x33d8, -+ 0x0078, 0x2dde, 0x7060, 0x2060, 0x6800, 0x6002, 0x1078, 0x1c70, -+ 0x0078, 0x2482, 0xa282, 0x0004, 0x0048, 0x2de8, 0x1078, 0x23eb, -+ 0x2200, 0x0079, 0x2deb, 0x2de6, 0x2def, 0x2dfc, 0x2def, 0x7000, -+ 0xa086, 0x0005, 0x0040, 0x2df8, 0x1078, 0x36c1, 0x782b, 0x3008, -+ 0x781b, 0x0065, 0x0078, 0x2459, 0x7890, 0x8007, 0x8001, 0xa084, -+ 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa186, -+ 0x0003, 0x0040, 0x2e11, 0xa186, 0x0000, 0x0040, 0x2e11, 0x0078, -+ 0x369d, 0x781b, 0x0065, 0x0078, 0x2459, 0x6820, 0xa085, 0x0004, -+ 0x6822, 0x82ff, 0x00c0, 0x2e20, 0x1078, 0x36c1, 0x0078, 0x2e27, -+ 0x8211, 0x0040, 0x2e25, 0x1078, 0x23eb, 0x1078, 0x36d1, 0x782b, -+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x702c, 0x8003, 0x0048, -+ 0x2e37, 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f, 0x8000, 0x1078, -+ 0x3912, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x2e43, 0x0018, 0x2e43, -+ 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0xa684, 0x0060, -+ 0x00c0, 0x2e50, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x2ec9, -+ 0xa684, 0x0800, 0x00c0, 0x2e72, 0x68b4, 0xa084, 0x4800, 0xa635, -+ 0xa684, 0x0800, 0x00c0, 0x2e72, 0x6998, 0x6a94, 0x692e, 0x6a32, -+ 0x703c, 0xa005, 0x00c0, 0x2e6a, 0x2200, 0xa105, 0x0040, 0x2e71, -+ 0x703f, 0x0015, 0x7000, 0xa086, 0x0006, 0x0040, 0x2e71, 0x1078, -+ 0x4776, 0x007c, 0xa684, 0x0020, 0x0040, 0x2e94, 0xa684, 0x4000, -+ 0x0040, 0x2e80, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x2e6a, -+ 0x68b4, 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2e7a, -+ 0x703c, 0xa005, 0x00c0, 0x2e8e, 0x703f, 0x0015, 0x79d8, 0x7adc, -+ 0x692e, 0x6a32, 0x0078, 0x2e6a, 0xa684, 0x4000, 0x0040, 0x2e9e, -+ 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x2e6a, 0x68b4, 0xa084, -+ 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2e98, 0x703c, 0xa005, -+ 0x00c0, 0x2eac, 0x703f, 0x0015, 0x79d8, 0x7adc, 0x78d0, 0x80fb, -+ 0x00c8, 0x2eb3, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, -+ 0x692e, 0x6a32, 0x2100, 0xa205, 0x00c0, 0x2ec0, 0x0078, 0x2e6a, -+ 0x7000, 0xa086, 0x0006, 0x0040, 0x2ec9, 0x1078, 0x4b30, 0x0078, -+ 0x2e6a, 0x007c, 0x6008, 0xa085, 0x0200, 0x600a, 0xa384, 0x0200, -+ 0x0040, 0x2ed6, 0x6008, 0xa085, 0x0002, 0x600a, 0x681b, 0x0006, -+ 0x688f, 0x0000, 0x6893, 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942, -+ 0x682f, 0x0003, 0x6833, 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, -+ 0x689b, 0x0020, 0x68b3, 0x0000, 0x68af, 0x0000, 0x7000, 0x0079, -+ 0x2ef1, 0x2482, 0x2efb, 0x2f04, 0x2ef9, 0x2ef9, 0x2ef9, 0x2ef9, -+ 0x2ef9, 0x1078, 0x23eb, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2f04, -+ 0x1078, 0x33d8, 0x0078, 0x2f0a, 0x7060, 0x2c50, 0x2060, 0x6800, -+ 0x6002, 0x2a60, 0x2021, 0x515a, 0x2404, 0xa005, 0x0040, 0x2f13, -+ 0x2020, 0x0078, 0x2f0c, 0x2d22, 0x206b, 0x0000, 0x007c, 0x1078, -+ 0x33df, 0x1078, 0x33ee, 0x6008, 0xa084, 0xfdff, 0x600a, 0x682b, -+ 0x0000, 0x789b, 0x000e, 0x6f14, 0x6817, 0x0002, 0x1078, 0x4b78, -+ 0xa684, 0x0800, 0x0040, 0x2f30, 0x691c, 0xa18d, 0x2000, 0x691e, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2f40, 0x7868, 0xa08c, 0x00ff, -+ 0x0040, 0x2f3e, 0x681b, 0x001e, 0x0078, 0x2f40, 0x681b, 0x0000, -+ 0x2021, 0x515a, 0x2404, 0xad06, 0x0040, 0x2f47, 0x7460, 0x6800, -+ 0x2022, 0x68c3, 0x0000, 0x6a3c, 0x6940, 0x6a32, 0x692e, 0x1078, -+ 0x1c70, 0x0078, 0x2482, 0x1078, 0x2e46, 0x682b, 0x0000, 0x2001, -+ 0x000e, 0x6f14, 0x1078, 0x3918, 0xa08c, 0x00ff, 0x6916, 0x6818, -+ 0xa084, 0x8000, 0x0040, 0x2f66, 0x703c, 0x681a, 0xa68c, 0xdf00, -+ 0x691e, 0x706f, 0x0000, 0x0078, 0x2482, 0x7000, 0xa005, 0x00c0, -+ 0x2f73, 0x0078, 0x2482, 0xa006, 0x1078, 0x4776, 0x6817, 0x0000, -+ 0x681b, 0x0014, 0xa68c, 0xdf00, 0x691e, 0x682b, 0x0000, 0x6820, -+ 0xa085, 0x00ff, 0x6822, 0x7000, 0x0079, 0x2f86, 0x2482, 0x2f90, -+ 0x2f90, 0x2f92, 0x2f92, 0x2f92, 0x2f92, 0x2f8e, 0x1078, 0x23eb, -+ 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, 0x600a, 0x0078, 0x33a8, -+ 0x2300, 0x0079, 0x2f9b, 0x2f9e, 0x2fa0, 0x2fd9, 0x1078, 0x23eb, -+ 0x7000, 0x0079, 0x2fa3, 0x2482, 0x2fad, 0x2fad, 0x2fc8, 0x2fad, -+ 0x2fd5, 0x2fc8, 0x2fab, 0x1078, 0x23eb, 0xa684, 0x0060, 0xa086, -+ 0x0060, 0x00c0, 0x2fc4, 0xa6b4, 0xffdf, 0xa6b4, 0xbfff, 0xa6b5, -+ 0x2000, 0x7e5a, 0x681c, 0xa084, 0xffdf, 0x681e, 0x1078, 0x4776, -+ 0x1078, 0x4a3a, 0x0078, 0x3888, 0xa684, 0x2000, 0x0040, 0x2fb7, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2fd5, 0x681b, 0x0015, 0xa684, -+ 0x4000, 0x0040, 0x2fd5, 0x681b, 0x0007, 0x1078, 0x389c, 0x0078, -+ 0x2459, 0x1078, 0x23eb, 0x2300, 0x0079, 0x2fde, 0x2fe1, 0x2fe3, -+ 0x3016, 0x1078, 0x23eb, 0x7000, 0x0079, 0x2fe6, 0x2482, 0x2ff0, -+ 0x2ff0, 0x300b, 0x2ff0, 0x3012, 0x300b, 0x2fee, 0x1078, 0x23eb, -+ 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x3007, 0xa6b4, 0xffbf, -+ 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, 0x681c, 0xa084, 0xffbf, -+ 0x681e, 0x1078, 0x4776, 0x1078, 0x4a3a, 0x0078, 0x3888, 0xa684, -+ 0x2000, 0x0040, 0x2ffa, 0x6818, 0xa084, 0x8000, 0x0040, 0x3012, -+ 0x681b, 0x0007, 0x781b, 0x00cd, 0x0078, 0x2459, 0x6820, 0xa085, -+ 0x0004, 0x6822, 0x1078, 0x3853, 0xa6b5, 0x0800, 0x1078, 0x36c1, -+ 0x782b, 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x2300, 0x0079, -+ 0x3029, 0x302c, 0x302e, 0x3030, 0x1078, 0x23eb, 0x0078, 0x36ad, -+ 0xa684, 0x0400, 0x00c0, 0x3059, 0x79e4, 0xa184, 0x0020, 0x0040, -+ 0x3040, 0x78ec, 0xa084, 0x0003, 0x0040, 0x3040, 0x782b, 0x3009, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4, -+ 0xa184, 0x0020, 0x0040, 0x3051, 0x78ec, 0xa084, 0x0003, 0x00c0, -+ 0x3055, 0x2001, 0x0014, 0x0078, 0x2d01, 0xa184, 0x0007, 0x0079, -+ 0x3091, 0x7a90, 0xa294, 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff, -+ 0x0040, 0x308f, 0x789b, 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0, -+ 0x3080, 0x7ba8, 0x7ba8, 0xa386, 0x0001, 0x00c0, 0x3073, 0x2009, -+ 0xfff7, 0x0078, 0x3079, 0xa386, 0x0003, 0x00c0, 0x3080, 0x2009, -+ 0xffef, 0x0c7e, 0x7054, 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, -+ 0x3009, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, 0x6922, 0x0078, -+ 0x3888, 0x299e, 0x29a9, 0x309b, 0x30a3, 0x3099, 0x3099, 0x3888, -+ 0x3888, 0x1078, 0x23eb, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, -+ 0x6922, 0x0078, 0x3892, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, -+ 0x6922, 0x0078, 0x3888, 0x79e4, 0xa184, 0x0030, 0x0040, 0x30b5, -+ 0x78ec, 0xa084, 0x0003, 0x00c0, 0x30dc, 0x7000, 0xa086, 0x0004, -+ 0x00c0, 0x30cf, 0x706c, 0xa086, 0x0002, 0x00c0, 0x30c5, 0x2011, -+ 0x0002, 0x2019, 0x0000, 0x0078, 0x2848, 0x706c, 0xa086, 0x0006, -+ 0x0040, 0x30bf, 0x706c, 0xa086, 0x0004, 0x0040, 0x30bf, 0x7000, -+ 0xa086, 0x0000, 0x0040, 0x2459, 0x6818, 0xa085, 0x8000, 0x681a, -+ 0x2001, 0x0014, 0x0078, 0x2d01, 0xa184, 0x0007, 0x0079, 0x30e0, -+ 0x3888, 0x3888, 0x30e8, 0x3888, 0x38ed, 0x38ed, 0x3888, 0x3888, -+ 0xa684, 0x0080, 0x0040, 0x3117, 0x7194, 0x81ff, 0x0040, 0x3117, -+ 0xa182, 0x000d, 0x00d0, 0x30f8, 0x7097, 0x0000, 0x0078, 0x30fd, -+ 0xa182, 0x000c, 0x7096, 0x2009, 0x000c, 0x789b, 0x0061, 0x79aa, -+ 0x157e, 0x137e, 0x147e, 0x7098, 0x8114, 0xa210, 0x729a, 0xa080, -+ 0x000b, 0xad00, 0x2098, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8108, -+ 0x81ac, 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078, 0x3892, 0xa684, -+ 0x0400, 0x00c0, 0x3158, 0x6820, 0xa084, 0x0001, 0x0040, 0x3892, -+ 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x312c, 0xa086, 0x0060, -+ 0x00c0, 0x312c, 0xa18d, 0x4000, 0xa18c, 0xfffb, 0x795a, 0x69b6, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061, 0x6818, 0xa085, -+ 0x8000, 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040, 0x3407, 0xa18c, -+ 0x00f8, 0x00c0, 0x3407, 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, -+ 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, -+ 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, 0x7882, 0x0078, 0x3892, -+ 0x6818, 0xa084, 0x8000, 0x0040, 0x315f, 0x681b, 0x0008, 0x781b, -+ 0x00c3, 0x0078, 0x2459, 0x2300, 0x0079, 0x3166, 0x316b, 0x320a, -+ 0x3169, 0x1078, 0x23eb, 0x7000, 0xa084, 0x0007, 0x0079, 0x3170, -+ 0x2482, 0x317a, 0x31af, 0x3185, 0x3178, 0x2482, 0x3178, 0x3178, -+ 0x1078, 0x23eb, 0x681c, 0xa084, 0x2000, 0x0040, 0x3193, 0x6008, -+ 0xa085, 0x0002, 0x600a, 0x0078, 0x3193, 0x68c0, 0xa005, 0x00c0, -+ 0x31af, 0x6920, 0xa18d, 0x0001, 0x6922, 0x68c3, 0x0001, 0x6800, -+ 0x706a, 0x0078, 0x31a9, 0x6920, 0xa18d, 0x0001, 0x6922, 0x6800, -+ 0x6006, 0xa005, 0x00c0, 0x319d, 0x6002, 0x681c, 0xa084, 0x000e, -+ 0x0040, 0x31a9, 0x7014, 0x68ba, 0x7130, 0xa188, 0x7400, 0x0078, -+ 0x31ab, 0x2009, 0x7500, 0x2104, 0x6802, 0x2d0a, 0x7162, 0x6eb6, -+ 0xa684, 0x0060, 0x0040, 0x3208, 0xa684, 0x0800, 0x00c0, 0x31c3, -+ 0xa684, 0x7fff, 0x68b6, 0x6894, 0x68a6, 0x6898, 0x68aa, 0x1078, -+ 0x4776, 0x0078, 0x3208, 0xa684, 0x0020, 0x0040, 0x31d8, 0x68c0, -+ 0xa005, 0x0040, 0x31cf, 0x1078, 0x4b78, 0x0078, 0x31d2, 0xa006, -+ 0x1078, 0x4b30, 0x79d8, 0x7adc, 0x69aa, 0x6aa6, 0x0078, 0x31de, -+ 0x1078, 0x37fc, 0x69aa, 0x6aa6, 0x1078, 0x4b30, 0xa684, 0x8000, -+ 0x0040, 0x3208, 0xa684, 0x7fff, 0x68b6, 0x2001, 0x0076, 0x1078, -+ 0x3918, 0x2010, 0x2001, 0x0078, 0x1078, 0x3918, 0x2008, 0xa684, -+ 0x0020, 0x00c0, 0x3200, 0x2001, 0x007a, 0x1078, 0x3918, 0x801b, -+ 0x00c8, 0x31fb, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, -+ 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, -+ 0x0078, 0x2482, 0x0078, 0x36ad, 0x7037, 0x0000, 0xa282, 0x0006, -+ 0x0050, 0x3214, 0x1078, 0x23eb, 0x7000, 0xa084, 0x0007, 0x10c0, -+ 0x39be, 0x2300, 0x0079, 0x321c, 0x321f, 0x3248, 0x325c, 0x2200, -+ 0x0079, 0x3222, 0x3246, 0x36ad, 0x3228, 0x3246, 0x3278, 0x32ba, -+ 0x7003, 0x0005, 0x2001, 0x7610, 0x2068, 0x704a, 0x157e, 0x20a9, -+ 0x0031, 0x2003, 0x0000, 0x8000, 0x0070, 0x3238, 0x0078, 0x3231, -+ 0x157f, 0xad80, 0x0009, 0x7036, 0x6817, 0x0000, 0x68b7, 0x0700, -+ 0x6823, 0x0800, 0x6827, 0x0003, 0x0078, 0x369d, 0x1078, 0x23eb, -+ 0x7003, 0x0005, 0x2001, 0x7610, 0x2068, 0x704a, 0xad80, 0x0009, -+ 0x7036, 0x2200, 0x0079, 0x3254, 0x36ad, 0x325a, 0x325a, 0x3278, -+ 0x325a, 0x36ad, 0x1078, 0x23eb, 0x7003, 0x0005, 0x2001, 0x7610, -+ 0x2068, 0x704a, 0xad80, 0x0009, 0x7036, 0x2200, 0x0079, 0x3268, -+ 0x3270, 0x326e, 0x326e, 0x3270, 0x326e, 0x3270, 0x1078, 0x23eb, -+ 0x1078, 0x36d1, 0x782b, 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, -+ 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, -+ 0xa484, 0x001f, 0xa215, 0x2069, 0x7500, 0x2d04, 0x2d08, 0x7162, -+ 0x2068, 0xa005, 0x0040, 0x3293, 0x6814, 0xa206, 0x0040, 0x32af, -+ 0x6800, 0x0078, 0x3286, 0x7003, 0x0005, 0x2001, 0x7610, 0x2068, -+ 0x704a, 0x7036, 0x157e, 0x20a9, 0x0031, 0x2003, 0x0000, 0x8000, -+ 0x0070, 0x32a4, 0x0078, 0x329d, 0x157f, 0xad80, 0x0009, 0x7036, -+ 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, -+ 0x7e5a, 0x6820, 0xa084, 0x0c00, 0x0040, 0x3309, 0x1078, 0x36c9, -+ 0x0078, 0x3309, 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, -+ 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0x79a8, 0x79a8, 0xa18c, -+ 0x00ff, 0xa1e8, 0x7400, 0x2d04, 0x2d08, 0x7162, 0x2068, 0xa005, -+ 0x0040, 0x32d9, 0x6814, 0xa206, 0x0040, 0x32f4, 0x6800, 0x0078, -+ 0x32cc, 0x7003, 0x0005, 0x2001, 0x7610, 0x2068, 0x704a, 0x157e, -+ 0x20a9, 0x0031, 0x2003, 0x0000, 0x8000, 0x0070, 0x32e9, 0x0078, -+ 0x32e2, 0x157f, 0xad80, 0x0009, 0x7036, 0x6a16, 0x68b7, 0x0700, -+ 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084, -+ 0x0c00, 0x0040, 0x3309, 0xa084, 0x0800, 0x0040, 0x3303, 0x1078, -+ 0x36cd, 0x0078, 0x3309, 0x1078, 0x36c9, 0x708b, 0x0000, 0x0078, -+ 0x3309, 0x027e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xa080, 0x5380, 0x2060, 0x7056, 0x6000, 0x705a, 0x6004, 0x705e, -+ 0xa684, 0x0060, 0x0040, 0x3361, 0x6b98, 0x6c94, 0x69ac, 0x68b0, -+ 0xa105, 0x00c0, 0x3343, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa6b4, -+ 0xb7ff, 0x7e5a, 0xa684, 0x0060, 0xa086, 0x0060, 0x0040, 0x3361, -+ 0x68c0, 0xa005, 0x0040, 0x333c, 0x7003, 0x0003, 0x682b, 0x0000, -+ 0x1078, 0x4a29, 0x0078, 0x333e, 0x1078, 0x4a3a, 0xa6b5, 0x2000, -+ 0x7e5a, 0x0078, 0x3361, 0x68b0, 0xa31a, 0x2100, 0xa423, 0x2400, -+ 0xa305, 0x0040, 0x3361, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68b0, -+ 0xa6b4, 0xbfff, 0x7e5a, 0x007e, 0x68c0, 0xa005, 0x007f, 0x0040, -+ 0x335f, 0x7003, 0x0003, 0x1078, 0x4a29, 0x0078, 0x3361, 0x1078, -+ 0x4a85, 0x077f, 0x1078, 0x37ef, 0x2009, 0x0065, 0xa684, 0x0004, -+ 0x0040, 0x3382, 0x78e4, 0xa084, 0x0030, 0x0040, 0x337a, 0x78ec, -+ 0xa084, 0x0003, 0x0040, 0x337a, 0x782b, 0x3008, 0x2009, 0x0065, -+ 0x0078, 0x3382, 0x0f7e, 0x2079, 0x5100, 0x1078, 0x4776, 0x0f7f, -+ 0x0040, 0x2482, 0x791a, 0x2d00, 0x704a, 0x8207, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa080, 0x5380, 0x2048, 0x0078, 0x2459, -+ 0x6020, 0xa005, 0x0040, 0x339c, 0x8001, 0x6022, 0x6008, 0xa085, -+ 0x0008, 0x600a, 0x7010, 0x6026, 0x007c, 0xa006, 0x1078, 0x4776, -+ 0x6817, 0x0000, 0x681b, 0x0001, 0x6823, 0x0040, 0x681f, 0x0100, -+ 0x7000, 0xa084, 0x0007, 0x0079, 0x33ad, 0x2482, 0x33b7, 0x33b7, -+ 0x33d4, 0x33bf, 0x33bd, 0x33bf, 0x33b5, 0x1078, 0x23eb, 0x1078, -+ 0x33df, 0x1078, 0x33d8, 0x1078, 0x1c70, 0x0078, 0x2482, 0x706c, -+ 0x706f, 0x0000, 0x7093, 0x0000, 0x0079, 0x33c6, 0x33d0, 0x33d0, -+ 0x33ce, 0x33ce, 0x33ce, 0x33d0, 0x33ce, 0x33d0, 0x0079, 0x2861, -+ 0x706f, 0x0000, 0x0078, 0x2482, 0x681b, 0x0000, 0x0078, 0x2f17, -+ 0x6800, 0xa005, 0x00c0, 0x33dd, 0x6002, 0x6006, 0x007c, 0x6010, -+ 0xa005, 0x0040, 0x33e8, 0x8001, 0x00d0, 0x33e8, 0x1078, 0x23eb, -+ 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x007c, 0x6018, 0xa005, -+ 0x0040, 0x33f4, 0x8001, 0x601a, 0x007c, 0x1078, 0x3912, 0x681b, -+ 0x0018, 0x0078, 0x342b, 0x1078, 0x3912, 0x681b, 0x0019, 0x0078, -+ 0x342b, 0x1078, 0x3912, 0x681b, 0x001a, 0x0078, 0x342b, 0x1078, -+ 0x3912, 0x681b, 0x0003, 0x0078, 0x342b, 0x7780, 0x1078, 0x37ef, -+ 0x7184, 0xa18c, 0x00ff, 0xa1e8, 0x7400, 0x2d04, 0x2d08, 0x2068, -+ 0xa005, 0x00c0, 0x341d, 0x0078, 0x2482, 0x6814, 0x7280, 0xa206, -+ 0x0040, 0x3425, 0x6800, 0x0078, 0x3416, 0x6800, 0x200a, 0x681b, -+ 0x0005, 0x708b, 0x0000, 0x1078, 0x33df, 0x6820, 0xa084, 0x0001, -+ 0x00c0, 0x3434, 0x1078, 0x33d8, 0x1078, 0x33ee, 0x681f, 0x0000, -+ 0x6823, 0x0020, 0x1078, 0x1c70, 0x0078, 0x2482, 0xa282, 0x0003, -+ 0x00c0, 0x369d, 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, 0x00ff, -+ 0x6920, 0xa18d, 0x0080, 0x6922, 0xa184, 0x0100, 0x0040, 0x34a2, -+ 0xa18c, 0xfeff, 0x6922, 0xa4a4, 0x00ff, 0x0040, 0x348c, 0xa482, -+ 0x000c, 0x0048, 0x345f, 0x0040, 0x345f, 0x2021, 0x000c, 0x852b, -+ 0x852b, 0x1078, 0x3760, 0x0040, 0x3469, 0x1078, 0x355b, 0x0078, -+ 0x3495, 0x1078, 0x371b, 0x0c7e, 0x2960, 0x6004, 0xa084, 0xfff5, -+ 0x6006, 0x1078, 0x3586, 0x0c7f, 0x6920, 0xa18d, 0x0100, 0x6922, -+ 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x3486, -+ 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x782b, 0x3008, -+ 0x781b, 0x0065, 0x0078, 0x2459, 0x0c7e, 0x2960, 0x6004, 0xa084, -+ 0xfff5, 0x6006, 0x1078, 0x3586, 0x0c7f, 0x7e58, 0xa684, 0x0400, -+ 0x00c0, 0x349e, 0x781b, 0x0058, 0x0078, 0x2459, 0x781b, 0x0065, -+ 0x0078, 0x2459, 0x0c7e, 0x7054, 0x2060, 0x6100, 0xa18c, 0x1000, -+ 0x0040, 0x34e2, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c, -+ 0x0048, 0x34b6, 0x0040, 0x34b6, 0x2011, 0x000c, 0x2400, 0xa202, -+ 0x00c8, 0x34bb, 0x2220, 0x6208, 0xa294, 0x00ff, 0x7018, 0xa086, -+ 0x0028, 0x00c0, 0x34cb, 0xa282, 0x0019, 0x00c8, 0x34d1, 0x2011, -+ 0x0019, 0x0078, 0x34d1, 0xa282, 0x000c, 0x00c8, 0x34d1, 0x2011, -+ 0x000c, 0x2200, 0xa502, 0x00c8, 0x34d6, 0x2228, 0x1078, 0x371f, -+ 0x852b, 0x852b, 0x1078, 0x3760, 0x0040, 0x34e2, 0x1078, 0x355b, -+ 0x0078, 0x34e6, 0x1078, 0x371b, 0x1078, 0x3586, 0x7858, 0xa085, -+ 0x0004, 0x785a, 0x0c7f, 0x782b, 0x3008, 0x781b, 0x0065, 0x0078, -+ 0x2459, 0x0c7e, 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, 0x3509, -+ 0x6010, 0xa084, 0x000f, 0x00c0, 0x3503, 0x6104, 0xa18c, 0xfff5, -+ 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078, -+ 0x3530, 0x68a0, 0xa084, 0x0200, 0x00c0, 0x3503, 0x6208, 0xa294, -+ 0x00ff, 0x7018, 0xa086, 0x0028, 0x00c0, 0x351e, 0xa282, 0x0019, -+ 0x00c8, 0x3524, 0x2011, 0x0019, 0x0078, 0x3524, 0xa282, 0x000c, -+ 0x00c8, 0x3524, 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, -+ 0xa382, 0x000c, 0x0048, 0x3530, 0x0040, 0x3530, 0x2019, 0x000c, -+ 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, -+ 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100, 0x6822, 0x0c7f, 0x007c, -+ 0x0c7e, 0x2960, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019, -+ 0x0000, 0x0078, 0x354b, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, -+ 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100, -+ 0x6822, 0x0c7f, 0x007c, 0x0c7e, 0x7154, 0x2160, 0x1078, 0x3562, -+ 0x0c7f, 0x007c, 0x2008, 0xa084, 0xfff0, 0xa425, 0x7c86, 0x6018, -+ 0x789a, 0x7cae, 0x6412, 0x78a4, 0xa084, 0xfff8, 0xa18c, 0x0007, -+ 0xa105, 0x78a6, 0x6016, 0x788a, 0xa4a4, 0x000f, 0x8427, 0x8204, -+ 0x8004, 0xa084, 0x00ff, 0xa405, 0x600e, 0x78ec, 0xd08c, 0x00c0, -+ 0x3585, 0x6004, 0xa084, 0xfff5, 0x6006, 0x007c, 0x0c7e, 0x7054, -+ 0x2060, 0x1078, 0x358d, 0x0c7f, 0x007c, 0x6018, 0x789a, 0x78a4, -+ 0xa084, 0xfff0, 0x78a6, 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886, -+ 0x007c, 0xa282, 0x0002, 0x00c0, 0x369d, 0x7aa8, 0x6920, 0xa18d, -+ 0x0080, 0x6922, 0xa184, 0x0200, 0x0040, 0x35e2, 0xa18c, 0xfdff, -+ 0x6922, 0xa294, 0x00ff, 0xa282, 0x0002, 0x00c8, 0x369d, 0x1078, -+ 0x362b, 0x1078, 0x3586, 0xa980, 0x0001, 0x200c, 0x1078, 0x37eb, -+ 0x1078, 0x34f1, 0x88ff, 0x0040, 0x35d5, 0x789b, 0x0060, 0x2800, -+ 0x78aa, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, -+ 0x35cf, 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x782b, -+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x7e58, 0xa684, 0x0400, -+ 0x00c0, 0x35de, 0x781b, 0x0058, 0x0078, 0x2459, 0x781b, 0x0065, -+ 0x0078, 0x2459, 0xa282, 0x0002, 0x00c8, 0x35ea, 0xa284, 0x0001, -+ 0x0040, 0x35f4, 0x7154, 0xa188, 0x0000, 0x210c, 0xa18c, 0x2000, -+ 0x00c0, 0x35f4, 0x2011, 0x0000, 0x1078, 0x370d, 0x1078, 0x362b, -+ 0x1078, 0x3586, 0x7858, 0xa085, 0x0004, 0x785a, 0x782b, 0x3008, -+ 0x781b, 0x0065, 0x0078, 0x2459, 0x0c7e, 0x027e, 0x2960, 0x6000, -+ 0x2011, 0x0001, 0xa084, 0x2000, 0x00c0, 0x361b, 0x6014, 0xa084, -+ 0x0040, 0x00c0, 0x3619, 0xa18c, 0xffef, 0x6106, 0xa006, 0x0078, -+ 0x3628, 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, -+ 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x6820, 0xa085, 0x0200, 0x6822, -+ 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7054, 0x2060, 0x1078, 0x3632, -+ 0x0c7f, 0x007c, 0x82ff, 0x0040, 0x3637, 0x2011, 0x0040, 0x6018, -+ 0xa080, 0x0002, 0x789a, 0x78a4, 0xa084, 0xffbf, 0xa205, 0x78a6, -+ 0x788a, 0x6016, 0x78ec, 0xd08c, 0x00c0, 0x364a, 0x6004, 0xa084, -+ 0xffef, 0x6006, 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, 0x0040, -+ 0x3654, 0x007f, 0x0078, 0x3657, 0x007f, 0x0078, 0x3699, 0xa684, -+ 0x0020, 0x0040, 0x3699, 0x7888, 0xa084, 0x0040, 0x0040, 0x3699, -+ 0x7bb8, 0xa384, 0x003f, 0x831b, 0x00c8, 0x3667, 0x8000, 0xa005, -+ 0x0040, 0x367d, 0x831b, 0x00c8, 0x3670, 0x8001, 0x0040, 0x3695, -+ 0xa684, 0x4000, 0x0040, 0x367d, 0x78b8, 0x801b, 0x00c8, 0x3679, -+ 0x8000, 0xa084, 0x003f, 0x00c0, 0x3695, 0xa6b4, 0xbfff, 0x7e5a, -+ 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, 0x00c8, 0x3689, 0xa291, -+ 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x1078, 0x4b30, 0x781b, -+ 0x0064, 0x1078, 0x49b5, 0x0078, 0x2459, 0x781b, 0x0064, 0x0078, -+ 0x2459, 0x781b, 0x0065, 0x0078, 0x2459, 0x1078, 0x36d5, 0x782b, -+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x1078, 0x36c1, 0x782b, -+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x6827, 0x0002, 0x1078, -+ 0x36c9, 0x78e4, 0xa084, 0x0030, 0x0040, 0x2482, 0x78ec, 0xa084, -+ 0x0003, 0x0040, 0x2482, 0x782b, 0x3008, 0x781b, 0x0065, 0x0078, -+ 0x2459, 0x2001, 0x0005, 0x0078, 0x36d7, 0x2001, 0x000c, 0x0078, -+ 0x36d7, 0x2001, 0x0006, 0x0078, 0x36d7, 0x2001, 0x000d, 0x0078, -+ 0x36d7, 0x2001, 0x0009, 0x0078, 0x36d7, 0x2001, 0x0007, 0x789b, -+ 0x0010, 0x78aa, 0x789b, 0x0060, 0x78ab, 0x0001, 0xa6b5, 0x0004, -+ 0x7e5a, 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b, -+ 0x8703, 0xa0e0, 0x5380, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, -+ 0x000f, 0x0040, 0x36fb, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, -+ 0xa085, 0x0008, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184, -+ 0x0040, 0x0040, 0x370b, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004, -+ 0xa085, 0x0010, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab, -+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060, -+ 0x78ab, 0x0004, 0x007c, 0x2021, 0x0000, 0x2029, 0x0032, 0x789b, -+ 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, -+ 0x7caa, 0x789b, 0x0060, 0x78ab, 0x0005, 0x007c, 0x157e, 0x8007, -+ 0xa084, 0x00ff, 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4, -+ 0xa18c, 0xfff0, 0x2001, 0x5146, 0x2004, 0xa082, 0x0028, 0x0040, -+ 0x3749, 0x2021, 0x37d2, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078, -+ 0x374f, 0x2021, 0x37de, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, -+ 0x0064, 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, 0x375e, 0x8420, -+ 0x2300, 0xa210, 0x0070, 0x375e, 0x0078, 0x3751, 0x157f, 0x007c, -+ 0x157e, 0x2009, 0x5146, 0x210c, 0xa182, 0x0032, 0x0048, 0x3774, -+ 0x0040, 0x3778, 0x2009, 0x37c4, 0x2019, 0x0011, 0x20a9, 0x000e, -+ 0x2011, 0x0032, 0x0078, 0x378a, 0xa182, 0x0028, 0x0040, 0x3782, -+ 0x2009, 0x37d2, 0x2019, 0x0014, 0x20a9, 0x000c, 0x2011, 0x0064, -+ 0x0078, 0x378a, 0x2009, 0x37de, 0x2019, 0x0019, 0x20a9, 0x000d, -+ 0x2011, 0x0064, 0x2200, 0xa502, 0x0040, 0x379a, 0x0048, 0x379a, -+ 0x8108, 0x2300, 0xa210, 0x0070, 0x3797, 0x0078, 0x378a, 0x157f, -+ 0xa006, 0x007c, 0x157f, 0xa582, 0x0064, 0x00c8, 0x37a9, 0x7808, -+ 0xa085, 0x0070, 0x780a, 0x7044, 0xa085, 0x0070, 0x7046, 0x0078, -+ 0x37a9, 0x78ec, 0xa084, 0x0300, 0x0040, 0x37b1, 0x2104, 0x0078, -+ 0x37c2, 0x2104, 0xa09e, 0x1102, 0x00c0, 0x37c2, 0x2001, 0x04fd, -+ 0x2004, 0xa082, 0x0005, 0x0048, 0x37c1, 0x2001, 0x1201, 0x0078, -+ 0x37c2, 0x2104, 0xa005, 0x007c, 0x1102, 0x3002, 0x3202, 0x4203, -+ 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, 0x7a06, 0x0c07, -+ 0x0c07, 0x0e07, 0x3202, 0x4202, 0x5202, 0x6202, 0x7202, 0x6605, -+ 0x7605, 0x7805, 0x7a05, 0x7c05, 0x7e05, 0x7f05, 0x2202, 0x3202, -+ 0x4202, 0x5202, 0x5404, 0x6404, 0x7404, 0x7604, 0x7804, 0x7a04, -+ 0x7c04, 0x7e04, 0x7f04, 0x789b, 0x0010, 0xa046, 0x007c, 0xa784, -+ 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, 0x8003, -+ 0xa105, 0xa0e0, 0x5400, 0x007c, 0x79d8, 0x7adc, 0x78d0, 0x801b, -+ 0x00c8, 0x3803, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, -+ 0x007c, 0x0f7e, 0x2079, 0x0100, 0x2009, 0x5140, 0x2091, 0x8000, -+ 0x2104, 0x0079, 0x3813, 0x3849, 0x381d, 0x381d, 0x381d, 0x381d, -+ 0x381d, 0x381d, 0x384d, 0x1078, 0x23eb, 0x784b, 0x0004, 0x7848, -+ 0xa084, 0x0004, 0x00c0, 0x381f, 0x784b, 0x0008, 0x7848, 0xa084, -+ 0x0008, 0x00c0, 0x3826, 0x68b4, 0xa085, 0x4000, 0x68b6, 0x7858, -+ 0xa085, 0x4000, 0x785a, 0x7830, 0xa084, 0x0080, 0x00c0, 0x3849, -+ 0x0018, 0x3849, 0x681c, 0xa084, 0x0020, 0x00c0, 0x3847, 0x0e7e, -+ 0x2071, 0x5140, 0x1078, 0x389c, 0x0e7f, 0x0078, 0x3849, 0x781b, -+ 0x00cd, 0x2091, 0x8001, 0x0f7f, 0x007c, 0x70b3, 0x0000, 0x1078, -+ 0x3a76, 0x0078, 0x3849, 0x0c7e, 0x6814, 0x8007, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa0e0, 0x5380, 0x6004, 0xa084, 0x000a, -+ 0x00c0, 0x3886, 0x6108, 0xa194, 0xff00, 0x0040, 0x3886, 0xa18c, -+ 0x00ff, 0x2001, 0x0019, 0xa106, 0x0040, 0x3875, 0x2001, 0x0032, -+ 0xa106, 0x0040, 0x3879, 0x0078, 0x387d, 0x2009, 0x0020, 0x0078, -+ 0x387f, 0x2009, 0x003f, 0x0078, 0x387f, 0x2011, 0x0000, 0x2100, -+ 0xa205, 0x600a, 0x6004, 0xa085, 0x0002, 0x6006, 0x0c7f, 0x007c, -+ 0x781b, 0x0065, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b, 0x0065, -+ 0x0078, 0x2459, 0x781b, 0x0058, 0x0078, 0x2459, 0x782b, 0x3008, -+ 0x781b, 0x0056, 0x0078, 0x2459, 0x2009, 0x5120, 0x210c, 0xa186, -+ 0x0000, 0x0040, 0x38b0, 0xa186, 0x0001, 0x0040, 0x38b3, 0x2009, -+ 0x5138, 0x200b, 0x000b, 0x706f, 0x0001, 0x781b, 0x0048, 0x007c, -+ 0x781b, 0x00c7, 0x007c, 0x2009, 0x5138, 0x200b, 0x000a, 0x007c, -+ 0x2009, 0x5120, 0x210c, 0xa186, 0x0000, 0x0040, 0x38d3, 0xa186, -+ 0x0001, 0x0040, 0x38cd, 0x2009, 0x5138, 0x200b, 0x000b, 0x706f, -+ 0x0001, 0x781b, 0x0048, 0x0078, 0x2459, 0x2009, 0x5138, 0x200b, -+ 0x000a, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b, 0x00c7, 0x0078, -+ 0x2459, 0x781b, 0x00cd, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b, -+ 0x00cd, 0x0078, 0x2459, 0x781b, 0x008e, 0x0078, 0x2459, 0x782b, -+ 0x3008, 0x781b, 0x008e, 0x0078, 0x2459, 0x6818, 0xa084, 0x8000, -+ 0x0040, 0x38f4, 0x681b, 0x001d, 0x706f, 0x0001, 0x781b, 0x0048, -+ 0x0078, 0x2459, 0x007e, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3910, -+ 0x7808, 0xa084, 0xfffc, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, -+ 0x78ec, 0xa084, 0x0021, 0x0040, 0x3910, 0x7044, 0x780a, 0xa005, -+ 0x007f, 0x007c, 0x7044, 0xa085, 0x0002, 0x7046, 0x780a, 0x007c, -+ 0x007e, 0x7830, 0xa084, 0x0040, 0x00c0, 0x3919, 0x0098, 0x3924, -+ 0x007f, 0x789a, 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, 0x780a, -+ 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, -+ 0x3933, 0x0098, 0x3931, 0x007f, 0x789a, 0x78ac, 0x007e, 0x7044, -+ 0x780a, 0x007f, 0x007c, 0x78ec, 0xa084, 0x0002, 0x00c0, 0x4760, -+ 0xa784, 0x007d, 0x00c0, 0x3947, 0x2700, 0x1078, 0x23eb, 0xa784, -+ 0x0001, 0x00c0, 0x2f6d, 0xa784, 0x0070, 0x0040, 0x3957, 0x0c7e, -+ 0x2d60, 0x2f68, 0x1078, 0x2396, 0x2d78, 0x2c68, 0x0c7f, 0xa784, -+ 0x0008, 0x0040, 0x3964, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x2482, 0x0078, 0x3888, 0xa784, 0x0004, 0x0040, 0x3997, -+ 0x78b8, 0xa084, 0x4001, 0x0040, 0x3997, 0x784b, 0x0008, 0x78ec, -+ 0xa084, 0x0003, 0x0040, 0x2482, 0x78e4, 0xa084, 0x0007, 0xa086, -+ 0x0001, 0x00c0, 0x3997, 0x78c0, 0xa085, 0x4800, 0x2030, 0x7e5a, -+ 0x781b, 0x00cd, 0x0078, 0x2459, 0x784b, 0x0008, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x3993, 0x681b, 0x0015, 0xa684, 0x4000, 0x0040, -+ 0x3993, 0x681b, 0x0007, 0x1078, 0x389c, 0x0078, 0x2459, 0x681b, -+ 0x0003, 0x7858, 0xa084, 0x3f00, 0x681e, 0x682f, 0x0000, 0x6833, -+ 0x0000, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2965, -+ 0x0018, 0x2459, 0x0078, 0x36a5, 0x6b14, 0x8307, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa080, 0x5380, 0x2060, 0x2048, 0x7056, -+ 0x6000, 0x705a, 0x6004, 0x705e, 0x2a60, 0x007c, 0x0079, 0x39c0, -+ 0x39c8, 0x39c9, 0x39c8, 0x39cb, 0x39c8, 0x39c8, 0x39c8, 0x39d0, -+ 0x007c, 0x1078, 0x33ee, 0x1078, 0x4776, 0x7038, 0x600a, 0x007c, -+ 0x70a0, 0xa005, 0x0040, 0x39dd, 0x2068, 0x1078, 0x1b62, 0x1078, -+ 0x46f8, 0x1078, 0x46ff, 0x70a3, 0x0000, 0x007c, 0x0e7e, 0x2091, -+ 0x8000, 0x2071, 0x5140, 0x7000, 0xa086, 0x0007, 0x00c0, 0x39f4, -+ 0x6110, 0x70bc, 0xa106, 0x00c0, 0x39f4, 0x0e7f, 0x1078, 0x1b6f, -+ 0x1078, 0x39fa, 0xa006, 0x007c, 0x2091, 0x8001, 0x0e7f, 0xa085, -+ 0x0001, 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x5140, 0x0078, 0x21fa, -+ 0x785b, 0x0000, 0x70af, 0x000e, 0x2009, 0x0100, 0x017e, 0x70a0, -+ 0xa06d, 0x0040, 0x3a0f, 0x70a3, 0x0000, 0x0078, 0x3a15, 0x70b3, -+ 0x0000, 0x1078, 0x1b8b, 0x0040, 0x3a1b, 0x70ac, 0x6826, 0x1078, -+ 0x3af8, 0x0078, 0x3a0f, 0x017f, 0x157e, 0x0c7e, 0x0d7e, 0x20a9, -+ 0x0008, 0x2061, 0x7510, 0x6000, 0xa105, 0x6002, 0x601c, 0xa06d, -+ 0x0040, 0x3a33, 0x6800, 0x601e, 0x1078, 0x195a, 0x6008, 0x8000, -+ 0x600a, 0x0078, 0x3a26, 0x6018, 0xa06d, 0x0040, 0x3a3d, 0x6800, -+ 0x601a, 0x1078, 0x195a, 0x0078, 0x3a33, 0xace0, 0x0008, 0x0070, -+ 0x3a43, 0x0078, 0x3a23, 0x709c, 0xa084, 0x8000, 0x0040, 0x3a4a, -+ 0x1078, 0x3b72, 0x0d7f, 0x0c7f, 0x157f, 0x007c, 0x127e, 0x2091, -+ 0x2300, 0x6804, 0xa084, 0x000f, 0x0079, 0x3a56, 0x3a66, 0x3a66, -+ 0x3a66, 0x3a66, 0x3a66, 0x3a66, 0x3a68, 0x3a6e, 0x3a66, 0x3a66, -+ 0x3a66, 0x3a66, 0x3a66, 0x3a70, 0x3a66, 0x3a68, 0x1078, 0x23eb, -+ 0x1078, 0x44d0, 0x1078, 0x195a, 0x0078, 0x3a74, 0x6827, 0x000b, -+ 0x1078, 0x44d0, 0x1078, 0x3af8, 0x127f, 0x007c, 0x127e, 0x2091, -+ 0x2300, 0x0098, 0x3a92, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3a92, -+ 0x0d7e, 0x1078, 0x4708, 0x2d00, 0x682e, 0x2009, 0x0004, 0x2001, -+ 0x0000, 0x6827, 0x0084, 0x1078, 0x46c1, 0x1078, 0x3af8, 0x0d7f, -+ 0x0078, 0x3ac6, 0x7948, 0xa185, 0x4000, 0x784a, 0x0098, 0x3a9b, -+ 0x794a, 0x0078, 0x3a80, 0x7828, 0xa086, 0x1834, 0x00c0, 0x3aa4, -+ 0xa185, 0x0004, 0x0078, 0x3aab, 0x7828, 0xa086, 0x1814, 0x00c0, -+ 0x3a98, 0xa185, 0x000c, 0x784a, 0x789b, 0x000e, 0x78ab, 0x0002, -+ 0x7858, 0xa084, 0x00ff, 0xa085, 0x0400, 0x785a, 0x70b4, 0xa080, -+ 0x0091, 0x781a, 0x6827, 0x0284, 0x682c, 0x6836, 0x6830, 0x683a, -+ 0x2009, 0x0004, 0x2001, 0x0000, 0x1078, 0x46c1, 0x127f, 0x007c, -+ 0x0d7e, 0x6b14, 0x1078, 0x1bfd, 0x0040, 0x3ad5, 0x2068, 0x6827, -+ 0x0002, 0x1078, 0x3af8, 0x0078, 0x3aca, 0x0d7f, 0x007c, 0x0d7e, -+ 0x6b14, 0x6c28, 0xa4a4, 0x00ff, 0x1078, 0x1b9b, 0x0040, 0x3ae5, -+ 0x2068, 0x6827, 0x0002, 0x1078, 0x3af8, 0x0d7f, 0x007c, 0x0d7e, -+ 0x6b14, 0xa39c, 0x00ff, 0x1078, 0x1bce, 0x0040, 0x3af6, 0x2068, -+ 0x6827, 0x0002, 0x1078, 0x3af8, 0x0078, 0x3aeb, 0x0d7f, 0x007c, -+ 0x0c7e, 0x6914, 0x1078, 0x3b69, 0x6904, 0xa18c, 0x00ff, 0xa186, -+ 0x0006, 0x0040, 0x3b13, 0xa186, 0x000d, 0x0040, 0x3b32, 0xa186, -+ 0x0017, 0x00c0, 0x3b0f, 0x1078, 0x195a, 0x0078, 0x3b11, 0x1078, -+ 0x1c72, 0x0c7f, 0x007c, 0x6004, 0x8001, 0x0048, 0x3b30, 0x6006, -+ 0x2009, 0x0000, 0xa684, 0x0001, 0x00c0, 0x3b20, 0xa18d, 0x8000, -+ 0xa684, 0x0004, 0x0040, 0x3b26, 0xa18d, 0x0002, 0x691e, 0x6823, -+ 0x0000, 0x7104, 0x810f, 0x6818, 0xa105, 0x681a, 0x0078, 0x3b0f, -+ 0x1078, 0x23eb, 0x6018, 0xa005, 0x00c0, 0x3b41, 0x6008, 0x8001, -+ 0x0048, 0x3b41, 0x600a, 0x601c, 0x6802, 0x2d00, 0x601e, 0x0078, -+ 0x3b57, 0xac88, 0x0006, 0x2104, 0xa005, 0x0040, 0x3b4a, 0x2008, -+ 0x0078, 0x3b43, 0x6802, 0x2d0a, 0x6008, 0x8001, 0x0048, 0x3b11, -+ 0x600a, 0x6018, 0x2068, 0x6800, 0x601a, 0x0078, 0x3b3b, 0x157e, -+ 0x137e, 0x147e, 0x0c7e, 0x0d7e, 0x1078, 0x1937, 0x2da0, 0x137f, -+ 0x20a9, 0x0031, 0x53a3, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x0078, -+ 0x3b0f, 0xa184, 0x001f, 0x8003, 0x8003, 0x8003, 0xa080, 0x7510, -+ 0x2060, 0x007c, 0x2019, 0x5151, 0x2304, 0xa085, 0x0001, 0x201a, -+ 0x2019, 0x0102, 0x2304, 0xa085, 0x0001, 0x201a, 0x007c, 0x2019, -+ 0x5151, 0x2304, 0xa084, 0xfffe, 0x201a, 0x2019, 0x0102, 0x2304, -+ 0xa084, 0xfffe, 0x201a, 0x007c, 0x7990, 0xa18c, 0xfff8, 0x7992, -+ 0x70b4, 0xa080, 0x00dd, 0x781a, 0x0078, 0x2459, 0x70a3, 0x0000, -+ 0x7003, 0x0000, 0x7043, 0x0001, 0x7037, 0x0000, 0x0018, 0x2410, -+ 0x1078, 0x1b8b, 0x0040, 0x3bc7, 0x2009, 0x510f, 0x200b, 0x0000, -+ 0x68bc, 0x2060, 0x6100, 0xa184, 0x0300, 0x0040, 0x3bbb, 0x6827, -+ 0x000e, 0xa084, 0x0200, 0x0040, 0x3bb7, 0x6827, 0x0017, 0x1078, -+ 0x3af8, 0x0078, 0x3b96, 0x7000, 0xa086, 0x0007, 0x00c0, 0x3c29, -+ 0x2d00, 0x70a2, 0xad80, 0x000f, 0x7036, 0x0078, 0x3bce, 0x7040, -+ 0xa086, 0x0001, 0x0040, 0x2492, 0x0078, 0x2459, 0x2031, 0x0000, -+ 0x691c, 0xa184, 0x0002, 0x0040, 0x3bd7, 0xa6b5, 0x0004, 0xa184, -+ 0x00c0, 0x8003, 0x8003, 0x8007, 0xa080, 0x3cc2, 0x2004, 0xa635, -+ 0x6820, 0xa084, 0x0400, 0x0040, 0x3bef, 0x789b, 0x0018, 0x78ab, -+ 0x0003, 0x789b, 0x0081, 0x78ab, 0x0001, 0xa6b5, 0x1000, 0x6820, -+ 0xa084, 0x8000, 0x00c0, 0x3bfd, 0x681c, 0xa084, 0x8000, 0x00c0, -+ 0x3c04, 0xa6b5, 0x0800, 0x0078, 0x3c04, 0xa6b5, 0x0400, 0x789b, -+ 0x000e, 0x6824, 0x8007, 0x78aa, 0x6820, 0xa084, 0x0100, 0x0040, -+ 0x3c0b, 0xa6b5, 0x4000, 0xa684, 0x0200, 0x0040, 0x3c25, 0x682c, -+ 0x78d2, 0x6830, 0x78d6, 0xa684, 0x0100, 0x0040, 0x3c23, 0x682c, -+ 0xa084, 0x0001, 0x0040, 0x3c23, 0x7888, 0xa084, 0x0040, 0x0040, -+ 0x3c23, 0xa6b5, 0x8000, 0x1078, 0x46f0, 0x7e5a, 0x6eb6, 0x0078, -+ 0x4727, 0x1078, 0x38fa, 0x00c0, 0x3cbc, 0x702c, 0x8004, 0x0048, -+ 0x3c37, 0x2019, 0x4e3b, 0x1078, 0x2276, 0x702f, 0x0001, 0x2041, -+ 0x0001, 0x2031, 0x1000, 0x789b, 0x0018, 0x6814, 0xa084, 0x001f, -+ 0xa085, 0x0080, 0x78aa, 0x691c, 0xa184, 0x0002, 0x0040, 0x3c50, -+ 0xa6b5, 0x0004, 0x78ab, 0x0020, 0x6828, 0x78aa, 0xa8c0, 0x0002, -+ 0x681c, 0xd0f4, 0x0040, 0x3c59, 0x2c50, 0x1078, 0x39ac, 0x1078, -+ 0x45ff, 0x6820, 0xa084, 0x8000, 0x0040, 0x3c67, 0xa6b5, 0x0400, -+ 0x789b, 0x000e, 0x6824, 0x8007, 0x78aa, 0x0078, 0x3c6e, 0x681c, -+ 0xa084, 0x8000, 0x00c0, 0x3c6e, 0xa6b5, 0x0800, 0x6820, 0xa084, -+ 0x0100, 0x0040, 0x3c75, 0xa6b5, 0x4000, 0x681c, 0xa084, 0x00c0, -+ 0x8003, 0x8003, 0x8007, 0xa080, 0x3cc2, 0x2004, 0xa635, 0xa684, -+ 0x0100, 0x0040, 0x3c8f, 0x682c, 0xa084, 0x0001, 0x0040, 0x3c8f, -+ 0x7888, 0xa084, 0x0040, 0x0040, 0x3c8f, 0xa6b5, 0x8000, 0x789b, -+ 0x007e, 0x7eae, 0x6eb6, 0x6814, 0x8007, 0x78aa, 0x7882, 0x2810, -+ 0x7aaa, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3cbc, 0x0018, 0x3cbc, -+ 0x70b4, 0xa080, 0x00e2, 0x781a, 0x1078, 0x3912, 0xa684, 0x0200, -+ 0x0040, 0x3cb0, 0x682c, 0x78d2, 0x6830, 0x78d6, 0x1078, 0x46f0, -+ 0x2d00, 0x70a2, 0x704a, 0x6810, 0x70be, 0x7003, 0x0007, 0xad80, -+ 0x000f, 0x7036, 0x0078, 0x2459, 0x1078, 0x1b62, 0x1078, 0x3912, -+ 0x0078, 0x2459, 0x0000, 0x0300, 0x0200, 0x0000, 0x1078, 0x23eb, -+ 0x2300, 0x0079, 0x3ccb, 0x3cce, 0x3cce, 0x3cd0, 0x1078, 0x23eb, -+ 0x1078, 0x46ff, 0x6924, 0xa184, 0x00ff, 0xa086, 0x000a, 0x0040, -+ 0x3ce2, 0xa184, 0xff00, 0xa085, 0x000a, 0x6826, 0x1078, 0x1b62, -+ 0x0078, 0x3b96, 0x2001, 0x000a, 0x1078, 0x4691, 0x0078, 0x3b96, -+ 0xa282, 0x0005, 0x0050, 0x3cee, 0x1078, 0x23eb, 0x7000, 0xa084, -+ 0x0007, 0x10c0, 0x39be, 0x1078, 0x1937, 0x00c0, 0x3d0d, 0xa684, -+ 0x0004, 0x0040, 0x3cff, 0x2001, 0x2800, 0x0078, 0x3d01, 0x2001, -+ 0x0800, 0x71b4, 0xa188, 0x0091, 0x789b, 0x000e, 0x78aa, 0x2031, -+ 0x0400, 0x7e5a, 0x791a, 0x0078, 0x2459, 0x6807, 0x0106, 0x680b, -+ 0x0000, 0x689f, 0x0000, 0x6827, 0x0000, 0xa386, 0x0002, 0x00c0, -+ 0x3d2e, 0xa286, 0x0002, 0x00c0, 0x3d2e, 0x78a0, 0xa005, 0x00c0, -+ 0x3d2e, 0xa484, 0x8000, 0x00c0, 0x3d2e, 0x78e4, 0xa084, 0x0008, -+ 0x0040, 0x3d2e, 0xa6b5, 0x0008, 0x2019, 0x0000, 0x1078, 0x411e, -+ 0x2d00, 0x70a2, 0x704a, 0x7003, 0x0007, 0x7037, 0x0000, 0x6824, -+ 0xa084, 0x0080, 0x0040, 0x3d40, 0x1078, 0x41d0, 0x0078, 0x2459, -+ 0x2300, 0x0079, 0x3d43, 0x3d46, 0x3dc7, 0x3de6, 0x2200, 0x0079, -+ 0x3d49, 0x3d4e, 0x3d5e, 0x3d84, 0x3d90, 0x3db3, 0x2029, 0x0001, -+ 0xa026, 0x2011, 0x0000, 0x1078, 0x42f1, 0x0079, 0x3d57, 0x3d5c, -+ 0x2459, 0x3b96, 0x3d5c, 0x3d5c, 0x1078, 0x23eb, 0x7990, 0xa18c, -+ 0x0007, 0x00c0, 0x3d65, 0x2009, 0x0008, 0x2011, 0x0001, 0xa684, -+ 0x0004, 0x0040, 0x3d6d, 0x2011, 0x0003, 0x2220, 0xa12a, 0x2011, -+ 0x0001, 0x1078, 0x42f1, 0x0079, 0x3d75, 0x3d7a, 0x2459, 0x3b96, -+ 0x3d82, 0x3d7c, 0x0078, 0x472d, 0x70ab, 0x3d80, 0x0078, 0x2459, -+ 0x0078, 0x3d7a, 0x1078, 0x23eb, 0xa684, 0x0010, 0x0040, 0x3d8e, -+ 0x1078, 0x419f, 0x0040, 0x3d8e, 0x0078, 0x2459, 0x0078, 0x420c, -+ 0x6000, 0xa084, 0x0002, 0x0040, 0x3dad, 0x70b4, 0xa080, 0x00d2, -+ 0x781a, 0x0d7e, 0x1078, 0x4708, 0x2d00, 0x682e, 0x6827, 0x0000, -+ 0x1078, 0x3af8, 0x0d7f, 0x1078, 0x195a, 0x7003, 0x0000, 0x7037, -+ 0x0000, 0x704b, 0x0000, 0x0078, 0x3b96, 0xa684, 0x0004, 0x00c0, -+ 0x3db3, 0x0078, 0x472d, 0x6000, 0xa084, 0x0004, 0x00c0, 0x3dc5, -+ 0x6000, 0xa084, 0x0001, 0x0040, 0x3dc5, 0x70ab, 0x3dc5, 0x2001, -+ 0x0007, 0x1078, 0x4689, 0x0078, 0x4733, 0x0078, 0x472d, 0x2200, -+ 0x0079, 0x3dca, 0x3dcf, 0x3dcf, 0x3dcf, 0x3dd1, 0x3dcf, 0x1078, -+ 0x23eb, 0x70a7, 0x3dd5, 0x0078, 0x4739, 0x2011, 0x0018, 0x1078, -+ 0x42eb, 0x0079, 0x3ddb, 0x3de0, 0x2459, 0x3b96, 0x3de2, 0x3de4, -+ 0x1078, 0x23eb, 0x1078, 0x23eb, 0x1078, 0x23eb, 0x2200, 0x0079, -+ 0x3de9, 0x3dee, 0x3df0, 0x3df0, 0x3dee, 0x3dee, 0x1078, 0x23eb, -+ 0x78e4, 0xa084, 0x0008, 0x0040, 0x3e05, 0x70a7, 0x3df9, 0x0078, -+ 0x4739, 0x2011, 0x0004, 0x1078, 0x42eb, 0x0079, 0x3dff, 0x3e05, -+ 0x2459, 0x3b96, 0x3e05, 0x3e0f, 0x3e13, 0x70ab, 0x3e0d, 0x2001, -+ 0x0003, 0x1078, 0x4689, 0x0078, 0x4733, 0x0078, 0x472d, 0x70ab, -+ 0x3e05, 0x0078, 0x2459, 0x70ab, 0x3e17, 0x0078, 0x2459, 0x0078, -+ 0x3e0d, 0xa282, 0x0003, 0x0050, 0x3e1f, 0x1078, 0x23eb, 0xa386, -+ 0x0002, 0x00c0, 0x3e38, 0xa286, 0x0002, 0x00c0, 0x3e3e, 0x78a0, -+ 0xa005, 0x00c0, 0x3e3e, 0xa484, 0x8000, 0x00c0, 0x3e3e, 0x78e4, -+ 0xa084, 0x0008, 0x0040, 0x3e38, 0xa6b5, 0x0008, 0x2019, 0x0000, -+ 0xa684, 0x0008, 0x0040, 0x3e3e, 0x1078, 0x417c, 0x6810, 0x70be, -+ 0x7003, 0x0007, 0x2300, 0x0079, 0x3e45, 0x3e48, 0x3e75, 0x3e7d, -+ 0x2200, 0x0079, 0x3e4b, 0x3e50, 0x3e4e, 0x3e69, 0x1078, 0x23eb, -+ 0x7990, 0xa1ac, 0x0007, 0xa026, 0x2011, 0x0001, 0x1078, 0x42f1, -+ 0x0079, 0x3e5a, 0x3e5f, 0x2459, 0x3b96, 0x3e67, 0x3e61, 0x0078, -+ 0x472d, 0x70ab, 0x3e65, 0x0078, 0x2459, 0x0078, 0x3e5f, 0x1078, -+ 0x23eb, 0xa684, 0x0010, 0x0040, 0x3e73, 0x1078, 0x419f, 0x0040, -+ 0x3e73, 0x0078, 0x2459, 0x0078, 0x420c, 0x2200, 0x0079, 0x3e78, -+ 0x3e7b, 0x3e7b, 0x3e7b, 0x1078, 0x23eb, 0x2200, 0x0079, 0x3e80, -+ 0x3e83, 0x3e85, 0x3e85, 0x1078, 0x23eb, 0x78e4, 0xa084, 0x0008, -+ 0x0040, 0x3e9a, 0x70a7, 0x3e8e, 0x0078, 0x4739, 0x2011, 0x0004, -+ 0x1078, 0x42eb, 0x0079, 0x3e94, 0x3e9a, 0x2459, 0x3b96, 0x3e9a, -+ 0x3ea4, 0x3ea8, 0x70ab, 0x3ea2, 0x2001, 0x0003, 0x1078, 0x4689, -+ 0x0078, 0x4733, 0x0078, 0x472d, 0x70ab, 0x3e9a, 0x0078, 0x2459, -+ 0x70ab, 0x3eac, 0x0078, 0x2459, 0x0078, 0x3ea2, 0x2300, 0x0079, -+ 0x3eb1, 0x3eb6, 0x3eb8, 0x3eb4, 0x1078, 0x23eb, 0x70a4, 0x007a, -+ 0x70a4, 0x007a, 0xa282, 0x0002, 0x0050, 0x3ec0, 0x1078, 0x23eb, -+ 0xa684, 0x0200, 0x0040, 0x3eca, 0x1078, 0x46f8, 0x1078, 0x42d3, -+ 0x1078, 0x46ff, 0x2300, 0x0079, 0x3ecd, 0x3ed0, 0x3ef4, 0x3f5a, -+ 0xa286, 0x0001, 0x0040, 0x3ed6, 0x1078, 0x23eb, 0xa684, 0x0200, -+ 0x0040, 0x3ede, 0x1078, 0x46f8, 0x1078, 0x46ff, 0x2001, 0x0001, -+ 0x1078, 0x4691, 0x78b8, 0xa084, 0xc001, 0x0040, 0x3ef0, 0x7848, -+ 0xa085, 0x0008, 0x784a, 0x7848, 0xa084, 0x0008, 0x00c0, 0x3eeb, -+ 0x7003, 0x0000, 0x0078, 0x3b96, 0x2200, 0x0079, 0x3ef7, 0x3ef9, -+ 0x3f2a, 0x70a7, 0x3efd, 0x0078, 0x4739, 0x2011, 0x000d, 0x1078, -+ 0x42eb, 0x0079, 0x3f03, 0x3f0a, 0x2459, 0x3b96, 0x3f12, 0x3f1a, -+ 0x3f20, 0x3f22, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x0078, 0x4727, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x0078, 0x4727, 0x70ab, 0x3f1e, 0x0078, 0x2459, 0x0078, 0x3f0a, -+ 0x1078, 0x23eb, 0x70ab, 0x3f26, 0x0078, 0x2459, 0x1078, 0x473f, -+ 0x0078, 0x2459, 0x70a7, 0x3f2e, 0x0078, 0x4739, 0x2011, 0x0012, -+ 0x1078, 0x42eb, 0x0079, 0x3f34, 0x3f3a, 0x2459, 0x3b96, 0x3f46, -+ 0x3f4e, 0x3f54, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x70b4, 0xa080, 0x00a6, 0x781a, 0x0078, 0x2459, 0xa6b4, 0x00ff, -+ 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x0078, 0x4727, 0x70ab, 0x3f52, -+ 0x0078, 0x2459, 0x0078, 0x3f3a, 0x70ab, 0x3f58, 0x0078, 0x2459, -+ 0x0078, 0x3f46, 0xa286, 0x0001, 0x0040, 0x3f60, 0x1078, 0x23eb, -+ 0x70a7, 0x3f64, 0x0078, 0x4739, 0x2011, 0x0015, 0x1078, 0x42eb, -+ 0x0079, 0x3f6a, 0x3f6f, 0x2459, 0x3b96, 0x3f7d, 0x3f89, 0xa6b4, -+ 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x783b, 0x1301, 0x70b4, -+ 0xa080, 0x00b4, 0x781a, 0x0078, 0x2459, 0xa6b4, 0x00ff, 0xa6b5, -+ 0x0400, 0x6eb6, 0x7e5a, 0x70b4, 0xa080, 0x00a6, 0x781a, 0x0078, -+ 0x2459, 0x70ab, 0x3f8d, 0x0078, 0x2459, 0x0078, 0x3f6f, 0xa282, -+ 0x0003, 0x0050, 0x3f95, 0x1078, 0x23eb, 0x2300, 0x0079, 0x3f98, -+ 0x3f9b, 0x3fd2, 0x402d, 0xa286, 0x0001, 0x0040, 0x3fa1, 0x1078, -+ 0x23eb, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x3fae, -+ 0x1078, 0x3af8, 0x7003, 0x0000, 0x0078, 0x3b96, 0x683b, 0x0000, -+ 0x6837, 0x0000, 0xa684, 0x0200, 0x0040, 0x3fbc, 0x1078, 0x46f8, -+ 0x1078, 0x42d3, 0x1078, 0x46ff, 0x2001, 0x0001, 0x1078, 0x4691, -+ 0x78b8, 0xa084, 0xc001, 0x0040, 0x3fce, 0x7848, 0xa085, 0x0008, -+ 0x784a, 0x7848, 0xa084, 0x0008, 0x00c0, 0x3fc9, 0x7003, 0x0000, -+ 0x0078, 0x3b96, 0x2200, 0x0079, 0x3fd5, 0x3fd7, 0x4008, 0x70a7, -+ 0x3fdb, 0x0078, 0x4739, 0x2011, 0x000d, 0x1078, 0x42eb, 0x0079, -+ 0x3fe1, 0x3fe8, 0x2459, 0x3b96, 0x3ff0, 0x3ff8, 0x3ffe, 0x4000, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727, -+ 0x70ab, 0x3ffc, 0x0078, 0x2459, 0x0078, 0x3fe8, 0x1078, 0x23eb, -+ 0x70ab, 0x4004, 0x0078, 0x2459, 0x1078, 0x473f, 0x0078, 0x2459, -+ 0x70a7, 0x400c, 0x0078, 0x4739, 0x2011, 0x0005, 0x1078, 0x42eb, -+ 0x0079, 0x4012, 0x4017, 0x2459, 0x3b96, 0x401f, 0x4027, 0xa6b4, -+ 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727, 0xa6b4, -+ 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727, 0x70ab, -+ 0x402b, 0x0078, 0x2459, 0x0078, 0x4017, 0xa286, 0x0001, 0x0040, -+ 0x4033, 0x1078, 0x23eb, 0x70a7, 0x4037, 0x0078, 0x4739, 0x2011, -+ 0x0006, 0x1078, 0x42eb, 0x0079, 0x403d, 0x4042, 0x2459, 0x3b96, -+ 0x4048, 0x4052, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0xa6b5, 0x4000, 0x7e5a, -+ 0x0078, 0x4727, 0x70ab, 0x4056, 0x0078, 0x2459, 0x0078, 0x4042, -+ 0x2300, 0x0079, 0x405b, 0x4060, 0x405e, 0x405e, 0x1078, 0x23eb, -+ 0x1078, 0x23eb, 0x2300, 0x71a8, 0xa005, 0x017a, 0x6810, 0x70be, -+ 0xa282, 0x0003, 0x0050, 0x406e, 0x1078, 0x23eb, 0x2300, 0x0079, -+ 0x4071, 0x4074, 0x4082, 0x40a4, 0xa684, 0x0200, 0x0040, 0x407c, -+ 0x1078, 0x46f8, 0x1078, 0x46ff, 0x2001, 0x0001, 0x1078, 0x4691, -+ 0x0078, 0x2459, 0xa296, 0x0002, 0x0040, 0x408b, 0x82ff, 0x0040, -+ 0x408b, 0x1078, 0x23eb, 0x70a7, 0x408f, 0x0078, 0x4739, 0x2011, -+ 0x0018, 0x1078, 0x42eb, 0x0079, 0x4095, 0x409a, 0x2459, 0x3b96, -+ 0x409c, 0x409e, 0x0078, 0x4727, 0x0078, 0x4727, 0x70ab, 0x40a2, -+ 0x0078, 0x2459, 0x0078, 0x409a, 0x2200, 0x0079, 0x40a7, 0x40a9, -+ 0x40c2, 0x70a7, 0x40ad, 0x0078, 0x4739, 0x2011, 0x0017, 0x1078, -+ 0x42eb, 0x0079, 0x40b3, 0x40b8, 0x2459, 0x3b96, 0x40ba, 0x40bc, -+ 0x0078, 0x4727, 0x0078, 0x4727, 0x70ab, 0x40c0, 0x0078, 0x2459, -+ 0x0078, 0x40b8, 0xa484, 0x8000, 0x00c0, 0x410c, 0xa684, 0x0100, -+ 0x0040, 0x40d6, 0x1078, 0x46f8, 0x1078, 0x42d3, 0x1078, 0x46ff, -+ 0x7848, 0xa085, 0x000c, 0x784a, 0x0078, 0x40da, 0x78d8, 0x78d2, -+ 0x78dc, 0x78d6, 0xa6b4, 0xefff, 0x7e5a, 0x70a7, 0x40e1, 0x0078, -+ 0x4739, 0x2011, 0x000d, 0x1078, 0x42eb, 0x0079, 0x40e7, 0x40ee, -+ 0x2459, 0x3b96, 0x40ee, 0x40fc, 0x4102, 0x4104, 0xa684, 0x0100, -+ 0x0040, 0x40fa, 0x1078, 0x46b6, 0x682c, 0x78d2, 0x6830, 0x78d6, -+ 0x1078, 0x46f0, 0x0078, 0x4727, 0x70ab, 0x4100, 0x0078, 0x2459, -+ 0x0078, 0x40ee, 0x1078, 0x23eb, 0x70ab, 0x4108, 0x0078, 0x2459, -+ 0x1078, 0x473f, 0x0078, 0x2459, 0x1078, 0x46ff, 0x70ab, 0x4116, -+ 0x2001, 0x0003, 0x1078, 0x4689, 0x0078, 0x4733, 0x1078, 0x46f0, -+ 0x682c, 0x78d2, 0x6830, 0x78d6, 0x0078, 0x4727, 0x70b8, 0x6812, -+ 0x70be, 0x8000, 0x70ba, 0x681b, 0x0000, 0xa684, 0x0008, 0x0040, -+ 0x4141, 0x157e, 0x137e, 0x147e, 0x7890, 0x8004, 0x8004, 0x8004, -+ 0x8004, 0xa084, 0x000f, 0x681a, 0x80ac, 0x789b, 0x0000, 0xaf80, -+ 0x002b, 0x2098, 0xad80, 0x000b, 0x20a0, 0x53a5, 0x147f, 0x137f, -+ 0x157f, 0xa6c4, 0x0f00, 0xa684, 0x0002, 0x00c0, 0x4150, 0x692c, -+ 0x810d, 0x810d, 0x810d, 0xa184, 0x0007, 0x2008, 0x0078, 0x415f, -+ 0x789b, 0x0010, 0x79ac, 0xa184, 0x0020, 0x0040, 0x415f, 0x017e, -+ 0x2009, 0x0005, 0x2001, 0x3d00, 0x1078, 0x46c1, 0x017f, 0xa184, -+ 0x001f, 0xa805, 0x6816, 0x1078, 0x3b69, 0x68be, 0xa684, 0x0004, -+ 0x0040, 0x4170, 0xa18c, 0xff00, 0x78a8, 0xa084, 0x00ff, 0xa105, -+ 0x682a, 0xa6b4, 0x00ff, 0x6000, 0xa084, 0x0008, 0x0040, 0x417a, -+ 0xa6b5, 0x4000, 0x6eb6, 0x007c, 0x157e, 0x137e, 0x147e, 0x6918, -+ 0x7890, 0x8004, 0x8004, 0x8004, 0x8004, 0xa084, 0x000f, 0x007e, -+ 0xa100, 0x681a, 0x007f, 0x8000, 0x8004, 0x0040, 0x419b, 0x20a8, -+ 0x8104, 0xa080, 0x000b, 0xad00, 0x20a0, 0x789b, 0x0000, 0xaf80, -+ 0x002b, 0x2098, 0x53a5, 0x147f, 0x137f, 0x157f, 0x007c, 0x682c, -+ 0xa084, 0x0020, 0x00c0, 0x41a7, 0x620c, 0x0078, 0x41a8, 0x6210, -+ 0x6b18, 0x2300, 0xa202, 0x0040, 0x41c8, 0x2018, 0xa382, 0x000e, -+ 0x0048, 0x41b8, 0x0040, 0x41b8, 0x2019, 0x000e, 0x0078, 0x41bc, -+ 0x7858, 0xa084, 0xffef, 0x785a, 0x783b, 0x1b01, 0x7893, 0x0000, -+ 0x7ba2, 0x70b4, 0xa080, 0x008e, 0x781a, 0xa085, 0x0001, 0x007c, -+ 0x7858, 0xa084, 0xffef, 0x785a, 0x7893, 0x0000, 0xa006, 0x007c, -+ 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x41dd, 0xa196, -+ 0x000f, 0x0040, 0x41dd, 0x6807, 0x0117, 0x6914, 0x1078, 0x3b69, -+ 0x6100, 0x8104, 0x00c8, 0x41f8, 0x601c, 0xa005, 0x0040, 0x41ec, -+ 0x2001, 0x0800, 0x0078, 0x41fa, 0x0d7e, 0x6824, 0x007e, 0x1078, -+ 0x4708, 0x007f, 0x6826, 0x2d00, 0x682e, 0x1078, 0x3af8, 0x0d7f, -+ 0x2001, 0x0200, 0x6826, 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820, -+ 0xa085, 0x8000, 0x6822, 0x2031, 0x0400, 0x6eb6, 0x7e5a, 0x71b4, -+ 0xa188, 0x0091, 0x791a, 0x007c, 0xa6c4, 0x0f00, 0xa684, 0x0002, -+ 0x00c0, 0x4220, 0x692c, 0x810d, 0x810d, 0x810d, 0xa184, 0x0007, -+ 0x2008, 0xa805, 0x6816, 0x1078, 0x3b69, 0x68be, 0x0078, 0x4223, -+ 0x6914, 0x1078, 0x3b69, 0x6100, 0x8104, 0x00c8, 0x4280, 0xa184, -+ 0x0300, 0x0040, 0x422f, 0x6807, 0x0117, 0x0078, 0x424d, 0x6004, -+ 0xa005, 0x00c0, 0x4256, 0x6807, 0x0117, 0x601c, 0xa005, 0x00c0, -+ 0x4243, 0x0d7e, 0x1078, 0x4708, 0x6827, 0x0034, 0x2d00, 0x682e, -+ 0x1078, 0x3af8, 0x0d7f, 0xa684, 0x0004, 0x0040, 0x424d, 0x2031, -+ 0x0400, 0x2001, 0x2800, 0x0078, 0x4251, 0x2031, 0x0400, 0x2001, -+ 0x0800, 0x71b4, 0xa188, 0x0091, 0x0078, 0x42ae, 0x6018, 0xa005, -+ 0x00c0, 0x4243, 0x601c, 0xa005, 0x00c0, 0x4243, 0x689f, 0x0000, -+ 0x6827, 0x003d, 0xa684, 0x0001, 0x0040, 0x42bc, 0xd694, 0x00c0, -+ 0x4279, 0x6100, 0xd1d4, 0x0040, 0x4279, 0x692c, 0x81ff, 0x0040, -+ 0x42bc, 0xa186, 0x0003, 0x0040, 0x42bc, 0xa186, 0x0012, 0x0040, -+ 0x42bc, 0xa6b5, 0x0800, 0x71b4, 0xa188, 0x00af, 0x0078, 0x42b7, -+ 0x6807, 0x0117, 0x2031, 0x0400, 0x692c, 0xa18c, 0x00ff, 0xa186, -+ 0x0012, 0x00c0, 0x4291, 0x2001, 0x42c9, 0x2009, 0x0001, 0x0078, -+ 0x42a2, 0xa186, 0x0003, 0x00c0, 0x429b, 0x2001, 0x42ca, 0x2009, -+ 0x0012, 0x0078, 0x42a2, 0x2001, 0x0200, 0x71b4, 0xa188, 0x0091, -+ 0x0078, 0x42ae, 0x1078, 0x46db, 0x78a3, 0x0000, 0x681c, 0xa085, -+ 0x0040, 0x681e, 0x71b4, 0xa188, 0x00df, 0xa006, 0x6826, 0x8007, -+ 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, 0x6eb6, -+ 0x7e5a, 0x791a, 0x0078, 0x2459, 0x6eb6, 0x1078, 0x3af8, 0x6810, -+ 0x70be, 0x7003, 0x0007, 0x70a3, 0x0000, 0x704b, 0x0000, 0x0078, -+ 0x2459, 0x0023, 0x0070, 0x0005, 0x0000, 0x0a00, 0x0000, 0x0000, -+ 0x0025, 0x0000, 0x0000, 0x683b, 0x0000, 0x6837, 0x0000, 0xa684, -+ 0x0200, 0x0040, 0x42ea, 0x78b8, 0xa08c, 0x001f, 0xa084, 0x8000, -+ 0x0040, 0x42e3, 0x8108, 0x78d8, 0xa100, 0x6836, 0x78dc, 0xa081, -+ 0x0000, 0x683a, 0x007c, 0x7990, 0x810f, 0xa5ac, 0x0007, 0x2021, -+ 0x0000, 0xa480, 0x0010, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa184, -+ 0x0080, 0x00c0, 0x4319, 0xa182, 0x0020, 0x00c8, 0x4337, 0xa182, -+ 0x0012, 0x00c8, 0x467b, 0x2100, 0x1079, 0x4307, 0x007c, 0x467b, -+ 0x44e8, 0x467b, 0x467b, 0x4344, 0x4347, 0x4381, 0x43b7, 0x43eb, -+ 0x43ee, 0x467b, 0x467b, 0x43a2, 0x4412, 0x444c, 0x467b, 0x467b, -+ 0x4473, 0xa184, 0x0020, 0x00c0, 0x44a7, 0xa18c, 0x001f, 0x6814, -+ 0xa084, 0x001f, 0xa106, 0x0040, 0x4334, 0x70b4, 0xa080, 0x00d2, -+ 0x781a, 0x2001, 0x0014, 0x1078, 0x4691, 0x1078, 0x46ff, 0x7003, -+ 0x0000, 0x2001, 0x0002, 0x007c, 0x2001, 0x0000, 0x007c, 0xa182, -+ 0x0024, 0x00c8, 0x467b, 0xa184, 0x0003, 0x1079, 0x4307, 0x007c, -+ 0x467b, 0x467b, 0x467b, 0x467b, 0x1078, 0x467b, 0x007c, 0x2200, -+ 0x0079, 0x434a, 0x4476, 0x4476, 0x436e, 0x436e, 0x436e, 0x436e, -+ 0x436e, 0x436e, 0x436e, 0x436e, 0x436c, 0x436e, 0x4363, 0x436e, -+ 0x436e, 0x436e, 0x436e, 0x436e, 0x4376, 0x4379, 0x4476, 0x4379, -+ 0x436e, 0x436e, 0x436e, 0x0c7e, 0x077e, 0x6f14, 0x1078, 0x36e2, -+ 0x077f, 0x0c7f, 0x0078, 0x436e, 0x1078, 0x458b, 0x6827, 0x02b3, -+ 0x2009, 0x000b, 0x2001, 0x4800, 0x0078, 0x44aa, 0x1078, 0x4670, -+ 0x007c, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, 0x4800, 0x0078, -+ 0x4492, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, -+ 0x438b, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078, 0x4708, 0x6827, -+ 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x3ac8, 0x1078, -+ 0x44d0, 0x2b68, 0x1078, 0x3af8, 0x0d7f, 0x1078, 0x3af8, 0x2001, -+ 0x0002, 0x007c, 0x1078, 0x44d0, 0x2001, 0x0017, 0x1078, 0x4691, -+ 0x70a3, 0x0000, 0x2009, 0x5138, 0x200b, 0x0006, 0x70af, 0x0017, -+ 0x2009, 0x0200, 0x1078, 0x3a06, 0x2001, 0x0001, 0x007c, 0x2200, -+ 0x0079, 0x43ba, 0x4476, 0x44a7, 0x44a7, 0x44a7, 0x43db, 0x44b7, -+ 0x43e3, 0x44b7, 0x44b7, 0x44ba, 0x44ba, 0x44bf, 0x44bf, 0x43d3, -+ 0x43d3, 0x44a7, 0x44a7, 0x44b7, 0x44a7, 0x43e3, 0x4476, 0x43e3, -+ 0x43e3, 0x43e3, 0x43e3, 0x6827, 0x0084, 0x2009, 0x000b, 0x2001, -+ 0x4300, 0x0078, 0x44c9, 0x6827, 0x000d, 0x2009, 0x000b, 0x2001, -+ 0x4300, 0x0078, 0x44aa, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, -+ 0x4300, 0x0078, 0x4492, 0x2001, 0x0000, 0x007c, 0x2200, 0x0079, -+ 0x43f1, 0x4476, 0x440a, 0x440a, 0x440a, 0x440a, 0x44b7, 0x44b7, -+ 0x44b7, 0x44b7, 0x44b7, 0x44b7, 0x44b7, 0x44b7, 0x440a, 0x440a, -+ 0x440a, 0x440a, 0x44b7, 0x440a, 0x440a, 0x44b7, 0x44b7, 0x44b7, -+ 0x44b7, 0x4476, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, 0x4300, -+ 0x0078, 0x4492, 0xa684, 0x0004, 0x00c0, 0x4426, 0x6804, 0xa084, -+ 0x00ff, 0xa086, 0x0006, 0x00c0, 0x467b, 0x1078, 0x44d0, 0x6807, -+ 0x0117, 0x1078, 0x3af8, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084, -+ 0x0004, 0x0040, 0x467b, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x00c0, 0x4435, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078, -+ 0x4708, 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, -+ 0x3ad7, 0x1078, 0x44d0, 0x2b68, 0x1078, 0x3af8, 0x0d7f, 0x1078, -+ 0x3af8, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084, 0x0004, 0x0040, -+ 0x467b, 0x2d58, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0006, 0x00c0, -+ 0x445b, 0x6807, 0x0117, 0x6827, 0x0002, 0x2d58, 0x1078, 0x4708, -+ 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x3ae7, -+ 0x1078, 0x44d0, 0x2b68, 0x1078, 0x3af8, 0x0d7f, 0x1078, 0x3af8, -+ 0x2001, 0x0002, 0x007c, 0x1078, 0x467b, 0x007c, 0x70b4, 0xa080, -+ 0x00d2, 0x781a, 0x2001, 0x0001, 0x1078, 0x4691, 0x1078, 0x46ff, -+ 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078, 0x46c1, 0x1078, -+ 0x46f8, 0x1078, 0x42d3, 0x1078, 0x41d0, 0x1078, 0x46ff, 0x2001, -+ 0x0001, 0x007c, 0x1078, 0x46c1, 0x1078, 0x46f8, 0x1078, 0x42d3, -+ 0x70b4, 0xa080, 0x00d2, 0x781a, 0x2001, 0x0013, 0x1078, 0x4691, -+ 0x1078, 0x46ff, 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078, -+ 0x467b, 0x007c, 0x1078, 0x46c1, 0x1078, 0x46f8, 0x1078, 0x42d3, -+ 0x1078, 0x41d0, 0x1078, 0x46ff, 0x2001, 0x0001, 0x007c, 0x2001, -+ 0x0003, 0x007c, 0x1078, 0x458b, 0x2001, 0x0000, 0x007c, 0x0c7e, -+ 0x077e, 0x6f14, 0x1078, 0x36e2, 0x077f, 0x0c7f, 0x2001, 0x0000, -+ 0x007c, 0x1078, 0x46c1, 0x1078, 0x467b, 0x2001, 0x0006, 0x007c, -+ 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x44db, 0xa186, -+ 0x000f, 0x00c0, 0x44df, 0x1078, 0x46f8, 0x1078, 0x42d3, 0x70b4, -+ 0xa080, 0x00d2, 0x781a, 0x1078, 0x46ff, 0x7003, 0x0000, 0x007c, -+ 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, -+ 0x00c8, 0x467b, 0x1079, 0x44f5, 0x007c, 0x467b, 0x44f9, 0x467b, -+ 0x4592, 0xa282, 0x0003, 0x0040, 0x4500, 0x1078, 0x467b, 0x007c, -+ 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, 0x00ff, 0x69b8, 0xa184, -+ 0x0100, 0x0040, 0x453f, 0xa18c, 0xfeff, 0x69ba, 0x78a0, 0xa005, -+ 0x00c0, 0x453f, 0xa4a4, 0x00ff, 0x0040, 0x4533, 0xa482, 0x000c, -+ 0x0040, 0x451c, 0x00c8, 0x4526, 0x852b, 0x852b, 0x1078, 0x3760, -+ 0x0040, 0x4526, 0x1078, 0x355b, 0x0078, 0x4535, 0x1078, 0x465d, -+ 0x1078, 0x3586, 0x69b8, 0xa18d, 0x0100, 0x69ba, 0xa6b5, 0x1000, -+ 0x7e5a, 0x0078, 0x4538, 0x1078, 0x3586, 0xa6b4, 0xefff, 0x7e5a, -+ 0x70b4, 0xa080, 0x0091, 0x781a, 0x2001, 0x0001, 0x007c, 0x0c7e, -+ 0x1078, 0x457f, 0x6200, 0xd2e4, 0x0040, 0x4570, 0x6208, 0x8217, -+ 0xa294, 0x00ff, 0xa282, 0x000c, 0x0048, 0x4552, 0x0040, 0x4552, -+ 0x2011, 0x000c, 0x2400, 0xa202, 0x00c8, 0x4557, 0x2220, 0x6208, -+ 0xa294, 0x00ff, 0x701c, 0xa202, 0x00c8, 0x455f, 0x721c, 0x2200, -+ 0xa502, 0x00c8, 0x4564, 0x2228, 0x1078, 0x4661, 0x852b, 0x852b, -+ 0x1078, 0x3760, 0x0040, 0x4570, 0x1078, 0x3562, 0x0078, 0x4574, -+ 0x1078, 0x465d, 0x1078, 0x358d, 0xa6b5, 0x1000, 0x7e5a, 0x70b4, -+ 0xa080, 0x00be, 0x781a, 0x2001, 0x0004, 0x0c7f, 0x007c, 0x007e, -+ 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0, -+ 0x5380, 0x007f, 0x007c, 0x0c7e, 0x1078, 0x457f, 0x1078, 0x358d, -+ 0x0c7f, 0x007c, 0xa282, 0x0002, 0x00c0, 0x467b, 0x7aa8, 0xa294, -+ 0x00ff, 0x69b8, 0xa184, 0x0200, 0x0040, 0x45c9, 0xa18c, 0xfdff, -+ 0x69ba, 0x78a0, 0xa005, 0x00c0, 0x45c9, 0xa282, 0x0002, 0x00c8, -+ 0x369d, 0x1078, 0x4627, 0x1078, 0x362b, 0x1078, 0x3586, 0xa684, -+ 0x0100, 0x0040, 0x45bf, 0x682c, 0xa084, 0x0001, 0x0040, 0x45bf, -+ 0xc6fc, 0x7888, 0xa084, 0x0040, 0x0040, 0x45bf, 0xc6fd, 0xa6b5, -+ 0x1000, 0x7e5a, 0x70b4, 0xa080, 0x0091, 0x781a, 0x2001, 0x0001, -+ 0x007c, 0x0c7e, 0x1078, 0x457f, 0xa284, 0xfffe, 0x0040, 0x45d4, -+ 0x2011, 0x0001, 0x0078, 0x45d8, 0xa284, 0x0001, 0x0040, 0x45de, -+ 0x6100, 0xd1ec, 0x00c0, 0x45de, 0x2011, 0x0000, 0x1078, 0x4619, -+ 0x1078, 0x3632, 0x1078, 0x358d, 0xa684, 0x0100, 0x0040, 0x45f4, -+ 0x682c, 0xa084, 0x0001, 0x0040, 0x45f4, 0xc6fc, 0x7888, 0xa084, -+ 0x0040, 0x0040, 0x45f4, 0xc6fd, 0xa6b5, 0x1000, 0x7e5a, 0x70b4, -+ 0xa080, 0x00be, 0x781a, 0x2001, 0x0004, 0x0c7f, 0x007c, 0x0c7e, -+ 0x2960, 0x6000, 0x2011, 0x0001, 0xa084, 0x2000, 0x00c0, 0x460a, -+ 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, -+ 0x7aaa, 0xa8c0, 0x0004, 0x68b8, 0xa085, 0x0200, 0x68ba, 0x0c7f, -+ 0x007c, 0x789b, 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, -+ 0x0003, 0x7aaa, 0x789b, 0x0081, 0x78ab, 0x0004, 0x007c, 0x0c7e, -+ 0x7054, 0x2060, 0x6000, 0xa084, 0x1000, 0x00c0, 0x4635, 0x2029, -+ 0x0032, 0x2021, 0x0000, 0x0078, 0x4655, 0x6508, 0xa5ac, 0x00ff, -+ 0x7018, 0xa086, 0x0028, 0x00c0, 0x4645, 0xa582, 0x0019, 0x00c8, -+ 0x464b, 0x2029, 0x0019, 0x0078, 0x464b, 0xa582, 0x000c, 0x00c8, -+ 0x464b, 0x2029, 0x000c, 0x6408, 0x8427, 0xa4a4, 0x00ff, 0xa482, -+ 0x000c, 0x0048, 0x4655, 0x2021, 0x000c, 0x1078, 0x4661, 0x68b8, -+ 0xa085, 0x0100, 0x68ba, 0x0c7f, 0x007c, 0x2021, 0x0000, 0x2029, -+ 0x0032, 0x789b, 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, -+ 0x0001, 0x7daa, 0x7caa, 0x789b, 0x0081, 0x78ab, 0x0005, 0x007c, -+ 0x2001, 0x0003, 0x1078, 0x4689, 0x70b4, 0xa080, 0x00be, 0x781a, -+ 0x2001, 0x0005, 0x007c, 0x2001, 0x0007, 0x1078, 0x4689, 0xa6b5, -+ 0x1000, 0x7e5a, 0x70b4, 0xa080, 0x00be, 0x781a, 0x2001, 0x0004, -+ 0x007c, 0x789b, 0x0018, 0x78aa, 0x789b, 0x0081, 0x78ab, 0x0001, -+ 0x007c, 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x469f, -+ 0xa196, 0x000f, 0x0040, 0x469f, 0x1078, 0x195a, 0x007c, 0x6924, -+ 0xa194, 0x003f, 0x00c0, 0x46a8, 0xa18c, 0xffc0, 0xa105, 0x6826, -+ 0x1078, 0x3af8, 0x691c, 0xa184, 0x0100, 0x0040, 0x46b5, 0x6914, -+ 0x1078, 0x3b69, 0x6204, 0x8210, 0x6206, 0x007c, 0x692c, 0x6834, -+ 0x682e, 0xa112, 0x6930, 0x6838, 0x6832, 0xa11b, 0xa200, 0xa301, -+ 0x007c, 0x0c7e, 0xade0, 0x0018, 0x6003, 0x0070, 0x6106, 0x600b, -+ 0x0000, 0x600f, 0x0a00, 0x6013, 0x0000, 0x6017, 0x0000, 0x8007, -+ 0x601a, 0x601f, 0x0000, 0x6023, 0x0000, 0x0c7f, 0x6824, 0xa085, -+ 0x0080, 0x6826, 0x007c, 0x157e, 0x137e, 0x147e, 0x2098, 0xaf80, -+ 0x002d, 0x20a0, 0x81ac, 0x0040, 0x46e6, 0x53a6, 0xa184, 0x0001, -+ 0x0040, 0x46ec, 0x3304, 0x78be, 0x147f, 0x137f, 0x157f, 0x007c, -+ 0x70b0, 0xa005, 0x10c0, 0x23eb, 0x70b3, 0x8000, 0x0078, 0x4a3a, -+ 0x71b0, 0x81ff, 0x0040, 0x46fe, 0x1078, 0x4b30, 0x007c, 0x71b0, -+ 0x81ff, 0x0040, 0x4707, 0x70b3, 0x0000, 0x1078, 0x4776, 0x007c, -+ 0x0c7e, 0x0d7e, 0x1078, 0x1937, 0x0c7f, 0x157e, 0x137e, 0x147e, -+ 0x2da0, 0x2c98, 0x20a9, 0x0031, 0x53a3, 0x147f, 0x137f, 0x157f, -+ 0x6807, 0x010d, 0x680b, 0x0000, 0x7004, 0x8007, 0x681a, 0x6823, -+ 0x0000, 0x681f, 0x0000, 0x689f, 0x0000, 0x0c7f, 0x007c, 0x70b4, -+ 0xa080, 0x0091, 0x781a, 0x0078, 0x2459, 0x70b4, 0xa080, 0x0081, -+ 0x781a, 0x0078, 0x2459, 0x70b4, 0xa080, 0x00be, 0x781a, 0x0078, -+ 0x2459, 0x70b4, 0xa080, 0x00c8, 0x781a, 0x0078, 0x2459, 0x6904, -+ 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x474c, 0xa196, 0x000f, -+ 0x0040, 0x474c, 0x6807, 0x0117, 0x2001, 0x0200, 0x6826, 0x8007, -+ 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, 0x2031, -+ 0x0400, 0x6eb6, 0x7e5a, 0x71b4, 0xa188, 0x0091, 0x791a, 0x007c, -+ 0x1078, 0x46ff, 0x7848, 0xa085, 0x000c, 0x784a, 0x70b4, 0xa080, -+ 0x00d2, 0x781a, 0x2009, 0x000b, 0x2001, 0x4400, 0x1078, 0x46c1, -+ 0x2001, 0x0013, 0x1078, 0x4691, 0x0078, 0x3b96, 0x127e, 0x2091, -+ 0x2200, 0x2049, 0x4776, 0x7000, 0x7204, 0xa205, 0x720c, 0xa215, -+ 0x7008, 0xa084, 0xfff7, 0xa205, 0x0040, 0x4788, 0x0078, 0x478d, -+ 0x7003, 0x0000, 0x127f, 0x2000, 0x007c, 0x7000, 0xa084, 0x0001, -+ 0x00c0, 0x47bb, 0x7108, 0x8103, 0x00c8, 0x479a, 0x1078, 0x48bd, -+ 0x0078, 0x4792, 0x700c, 0xa08c, 0x00ff, 0x0040, 0x47bb, 0x7004, -+ 0x8004, 0x00c8, 0x47b2, 0x7014, 0xa005, 0x00c0, 0x47ae, 0x7010, -+ 0xa005, 0x0040, 0x47b2, 0xa102, 0x00c8, 0x4792, 0x7007, 0x0010, -+ 0x0078, 0x47bb, 0x8aff, 0x0040, 0x47bb, 0x1078, 0x4b07, 0x00c0, -+ 0x47b5, 0x0040, 0x4792, 0x1078, 0x4846, 0x7003, 0x0000, 0x127f, -+ 0x2000, 0x007c, 0x017e, 0x6104, 0xa18c, 0x00ff, 0xa186, 0x0007, -+ 0x0040, 0x47ce, 0xa18e, 0x000f, 0x00c0, 0x47d1, 0x6040, 0x0078, -+ 0x47d2, 0x6428, 0x017f, 0x84ff, 0x0040, 0x47fc, 0x2c70, 0x7004, -+ 0xa0bc, 0x000f, 0xa7b8, 0x480c, 0x273c, 0x87fb, 0x00c0, 0x47ea, -+ 0x0048, 0x47e4, 0x1078, 0x23eb, 0x609c, 0xa075, 0x0040, 0x47fc, -+ 0x0078, 0x47d7, 0x2704, 0xae68, 0x6808, 0xa630, 0x680c, 0xa529, -+ 0x8421, 0x0040, 0x47fc, 0x8738, 0x2704, 0xa005, 0x00c0, 0x47eb, -+ 0x709c, 0xa075, 0x00c0, 0x47d7, 0x007c, 0x0000, 0x0005, 0x0009, -+ 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, 0x0009, -+ 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x4801, 0x47fe, 0x0000, -+ 0x0000, 0x8000, 0x0000, 0x4801, 0x0000, 0x4809, 0x4806, 0x0000, -+ 0x0000, 0x0000, 0x0000, 0x4809, 0x0000, 0x4804, 0x4804, 0x0000, -+ 0x0000, 0x8000, 0x0000, 0x4804, 0x0000, 0x480a, 0x480a, 0x0000, -+ 0x0000, 0x0000, 0x0000, 0x480a, 0x127e, 0x2091, 0x2200, 0x2079, -+ 0x5100, 0x2071, 0x0010, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, -+ 0x0000, 0x2071, 0x0020, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, -+ 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, 0x2049, 0x4846, -+ 0x2019, 0x0000, 0x7004, 0x8004, 0x00c8, 0x4899, 0x7007, 0x0012, -+ 0x7108, 0x7008, 0xa106, 0x00c0, 0x4850, 0xa184, 0x01e0, 0x0040, -+ 0x485b, 0x1078, 0x23eb, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, -+ 0x00c8, 0x4866, 0xa184, 0x4000, 0x00c0, 0x4850, 0xa19c, 0x300c, -+ 0xa386, 0x2004, 0x0040, 0x4874, 0xa386, 0x0008, 0x0040, 0x487f, -+ 0xa386, 0x200c, 0x00c0, 0x4850, 0x7200, 0x8204, 0x0048, 0x487f, -+ 0x730c, 0xa384, 0x00ff, 0x0040, 0x487f, 0x1078, 0x23eb, 0x7007, -+ 0x0012, 0x7000, 0xa084, 0x0001, 0x00c0, 0x4899, 0x7008, 0xa084, -+ 0x01e0, 0x00c0, 0x4899, 0x7310, 0x7014, 0xa305, 0x0040, 0x4899, -+ 0x710c, 0xa184, 0x0300, 0x00c0, 0x4899, 0xa184, 0x00ff, 0x00c0, -+ 0x4846, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xa084, 0x0008, -+ 0x00c0, 0x489d, 0x7007, 0x0012, 0x7108, 0x8103, 0x0048, 0x48a2, -+ 0x7003, 0x0000, 0x2049, 0x0000, 0x007c, 0x107e, 0x007e, 0x127e, -+ 0x157e, 0x2091, 0x2200, 0x7108, 0x1078, 0x48bd, 0x157f, 0x127f, -+ 0x2091, 0x8001, 0x007f, 0x107f, 0x007c, 0x7204, 0x7500, 0x730c, -+ 0xa384, 0x0300, 0x00c0, 0x48e4, 0xa184, 0x01e0, 0x00c0, 0x4908, -+ 0x7108, 0xa184, 0x01e0, 0x00c0, 0x4908, 0x2001, 0x04fd, 0x2004, -+ 0xa082, 0x0005, 0x00c8, 0x48d8, 0xa184, 0x4000, 0x00c0, 0x48c8, -+ 0xa184, 0x0007, 0x0079, 0x48dc, 0x48e6, 0x48f8, 0x48e4, 0x48f8, -+ 0x48e4, 0x4944, 0x48e4, 0x4942, 0x1078, 0x23eb, 0x7004, 0xa084, -+ 0x0010, 0xa085, 0x0002, 0x7006, 0x8aff, 0x00c0, 0x48f3, 0x2049, -+ 0x0000, 0x0078, 0x48f7, 0x1078, 0x4b07, 0x00c0, 0x48f3, 0x007c, -+ 0x7004, 0xa084, 0x0010, 0xa085, 0x0002, 0x7006, 0x8aff, 0x00c0, -+ 0x4903, 0x0078, 0x4907, 0x1078, 0x4b07, 0x00c0, 0x4903, 0x007c, -+ 0x7007, 0x0012, 0x7108, 0x00e0, 0x490b, 0x2091, 0x6000, 0x00e0, -+ 0x490f, 0x2091, 0x6000, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, -+ 0xa084, 0x0008, 0x00c0, 0x4917, 0x7007, 0x0012, 0x7108, 0x8103, -+ 0x0048, 0x491c, 0x7003, 0x0000, 0x7000, 0xa005, 0x00c0, 0x4930, -+ 0x7004, 0xa005, 0x00c0, 0x4930, 0x700c, 0xa005, 0x0040, 0x4932, -+ 0x0078, 0x4913, 0x2049, 0x0000, 0x1078, 0x3809, 0x6818, 0xa084, -+ 0x8000, 0x0040, 0x493d, 0x681b, 0x0002, 0x007c, 0x1078, 0x23eb, -+ 0x1078, 0x23eb, 0x1078, 0x49a0, 0x7210, 0x7114, 0x700c, 0xa09c, -+ 0x00ff, 0x2800, 0xa300, 0xa211, 0xa189, 0x0000, 0x1078, 0x49a0, -+ 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, 0xa322, 0x630c, 0x2100, -+ 0xa31b, 0x2400, 0xa305, 0x0040, 0x4967, 0x00c8, 0x4967, 0x8412, -+ 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0078, 0x494e, 0x2b60, -+ 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, 0x0040, 0x4973, 0xa7ba, -+ 0x4806, 0x0078, 0x4975, 0xa7ba, 0x47fe, 0x007f, 0xa73d, 0x2c00, -+ 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7007, 0x0012, 0x1078, 0x4846, -+ 0x007c, 0x8738, 0x2704, 0xa005, 0x00c0, 0x4994, 0x609c, 0xa005, -+ 0x0040, 0x499d, 0x2060, 0x6004, 0xa084, 0x000f, 0xa080, 0x480c, -+ 0x203c, 0x87fb, 0x1040, 0x23eb, 0x8a51, 0x0040, 0x499c, 0x7008, -+ 0xa084, 0x0003, 0xa086, 0x0003, 0x007c, 0x2051, 0x0000, 0x007c, -+ 0x8a50, 0x8739, 0x2704, 0xa004, 0x00c0, 0x49b4, 0x6000, 0xa064, -+ 0x00c0, 0x49ab, 0x2d60, 0x6004, 0xa084, 0x000f, 0xa080, 0x481c, -+ 0x203c, 0x87fb, 0x1040, 0x23eb, 0x007c, 0x127e, 0x0d7e, 0x2091, -+ 0x2200, 0x0d7f, 0x6884, 0x2060, 0x6888, 0x6b8c, 0x6c90, 0x8057, -+ 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, 0x6804, 0xa084, 0x0008, -+ 0x007f, 0x0040, 0x49cf, 0xa0b8, 0x4806, 0x0078, 0x49d1, 0xa0b8, -+ 0x47fe, 0x7e08, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, -+ 0x0007, 0x0040, 0x49df, 0xa18e, 0x000f, 0x00c0, 0x49e8, 0x681c, -+ 0xa084, 0x0040, 0x0040, 0x49ef, 0xa6b5, 0x0001, 0x0078, 0x49ef, -+ 0x681c, 0xa084, 0x0040, 0x0040, 0x49ef, 0xa6b5, 0x0001, 0x7007, -+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x49f1, 0x2400, 0xa305, -+ 0x00c0, 0x49fc, 0x0078, 0x4a22, 0x2c58, 0x2704, 0x6104, 0xac60, -+ 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, 0xa184, 0x0008, -+ 0x0040, 0x4a12, 0x6010, 0xa081, 0x0000, 0x7022, 0x6014, 0xa081, -+ 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c, 0x2300, -+ 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078, 0x4981, -+ 0x0078, 0x4a24, 0x1078, 0x4b07, 0x00c0, 0x4a22, 0x127f, 0x2000, -+ 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x7007, 0x0004, -+ 0x7004, 0xa084, 0x0004, 0x00c0, 0x4a30, 0x7003, 0x0008, 0x127f, -+ 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x2049, -+ 0x4a3a, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x4a43, -+ 0x7e08, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, -+ 0x0040, 0x4a56, 0xa18e, 0x000f, 0x00c0, 0x4a61, 0x681c, 0xa084, -+ 0x0040, 0x0040, 0x4a5d, 0xa6b5, 0x0001, 0x6840, 0x2050, 0x0078, -+ 0x4a6a, 0x681c, 0xa084, 0x0020, 0x00c0, 0x4a68, 0xa6b5, 0x0001, -+ 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8, 0x480c, -+ 0x273c, 0x87fb, 0x00c0, 0x4a7e, 0x0048, 0x4a78, 0x1078, 0x23eb, -+ 0x689c, 0xa065, 0x0040, 0x4a82, 0x0078, 0x4a6b, 0x1078, 0x4b07, -+ 0x00c0, 0x4a7e, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, 0x017e, -+ 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f, 0x047f, 0x7e08, 0xa6b5, -+ 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4a9c, -+ 0xa18e, 0x000f, 0x00c0, 0x4aa5, 0x681c, 0xa084, 0x0040, 0x0040, -+ 0x4aac, 0xa6b5, 0x0001, 0x0078, 0x4aac, 0x681c, 0xa084, 0x0040, -+ 0x0040, 0x4aac, 0xa6b5, 0x0001, 0x2049, 0x4a85, 0x017e, 0x6904, -+ 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4aba, 0xa18e, 0x000f, -+ 0x00c0, 0x4abd, 0x6840, 0x0078, 0x4abe, 0x6828, 0x017f, 0xa055, -+ 0x0040, 0x4b04, 0x2d70, 0x2e60, 0x7004, 0xa0bc, 0x000f, 0xa7b8, -+ 0x480c, 0x273c, 0x87fb, 0x00c0, 0x4ad8, 0x0048, 0x4ad1, 0x1078, -+ 0x23eb, 0x709c, 0xa075, 0x2060, 0x0040, 0x4b04, 0x0078, 0x4ac4, -+ 0x2704, 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0048, 0x4af1, -+ 0x8a51, 0x00c0, 0x4ae5, 0x1078, 0x23eb, 0x8738, 0x2704, 0xa005, -+ 0x00c0, 0x4ad9, 0x709c, 0xa075, 0x2060, 0x0040, 0x4b04, 0x0078, -+ 0x4ac4, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x6908, 0x2400, -+ 0xa122, 0x690c, 0x2300, 0xa11b, 0x00c8, 0x4b00, 0x1078, 0x23eb, -+ 0x2071, 0x0020, 0x0078, 0x49ef, 0x127f, 0x2000, 0x007c, 0x7008, -+ 0xa084, 0x0003, 0xa086, 0x0003, 0x0040, 0x4b2f, 0x2704, 0xac08, -+ 0x2104, 0x701a, 0x8108, 0x2104, 0x701e, 0x8108, 0x2104, 0x7012, -+ 0x8108, 0x2104, 0x7016, 0x6004, 0xa084, 0x0008, 0x0040, 0x4b26, -+ 0x8108, 0x2104, 0x7022, 0x8108, 0x2104, 0x7026, 0x7602, 0x7004, -+ 0xa084, 0x0010, 0xa085, 0x0001, 0x7006, 0x1078, 0x4981, 0x007c, -+ 0x127e, 0x007e, 0x0d7e, 0x2091, 0x2200, 0x2049, 0x4b30, 0x0d7f, -+ 0x087f, 0x7108, 0xa184, 0x0003, 0x00c0, 0x4b5a, 0x017e, 0x6904, -+ 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4b4a, 0xa18e, 0x000f, -+ 0x00c0, 0x4b4d, 0x6840, 0x0078, 0x4b4e, 0x6828, 0x017f, 0xa005, -+ 0x0040, 0x4b68, 0x0078, 0x478d, 0x0020, 0x4b5a, 0x1078, 0x4944, -+ 0x0078, 0x4b68, 0x00a0, 0x4b61, 0x7108, 0x1078, 0x48bd, 0x0078, -+ 0x4b39, 0x7007, 0x0010, 0x00a0, 0x4b63, 0x7108, 0x1078, 0x48bd, -+ 0x7008, 0xa086, 0x0008, 0x00c0, 0x4b39, 0x7000, 0xa005, 0x00c0, -+ 0x4b39, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, -+ 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, 0x2091, 0x2200, -+ 0x0d7f, 0x2049, 0x4b78, 0xad80, 0x0011, 0x20a0, 0x2099, 0x0031, -+ 0x700c, 0xa084, 0x00ff, 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, -+ 0x7003, 0x0001, 0x0040, 0x4b97, 0x8000, 0x80ac, 0x53a5, 0x7007, -+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x4b99, 0x0c7f, 0x2049, -+ 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f, 0x2000, -+ 0x007c, 0x2091, 0x6000, 0x2091, 0x8000, 0x78cc, 0xa005, 0x0040, -+ 0x4bc0, 0x7994, 0x70d0, 0xa106, 0x00c0, 0x4bc0, 0x7804, 0xa005, -+ 0x0040, 0x4bc0, 0x7807, 0x0000, 0x0068, 0x4bc0, 0x2091, 0x4080, -+ 0x7820, 0x8001, 0x7822, 0x00c0, 0x4c1b, 0x7824, 0x7822, 0x2069, -+ 0x5140, 0x6800, 0xa084, 0x0007, 0x0040, 0x4bde, 0xa086, 0x0002, -+ 0x0040, 0x4bde, 0x6834, 0xa00d, 0x0040, 0x4bde, 0x2104, 0xa005, -+ 0x0040, 0x4bde, 0x8001, 0x200a, 0x0040, 0x4cc3, 0x7848, 0xa005, -+ 0x0040, 0x4bec, 0x8001, 0x784a, 0x00c0, 0x4bec, 0x2009, 0x0102, -+ 0x6844, 0x200a, 0x1078, 0x21d2, 0x6890, 0xa005, 0x0040, 0x4bf8, -+ 0x8001, 0x6892, 0x00c0, 0x4bf8, 0x686f, 0x0000, 0x6873, 0x0001, -+ 0x2061, 0x5400, 0x20a9, 0x0100, 0x2009, 0x0002, 0x6034, 0xa005, -+ 0x0040, 0x4c0e, 0x8001, 0x6036, 0x00c0, 0x4c0e, 0x6010, 0xa005, -+ 0x0040, 0x4c0e, 0x017e, 0x1078, 0x21d2, 0x017f, 0xace0, 0x0010, -+ 0x0070, 0x4c14, 0x0078, 0x4bfe, 0x8109, 0x0040, 0x4c1b, 0x20a9, -+ 0x0100, 0x0078, 0x4bfe, 0x1078, 0x4c28, 0x1078, 0x4c4d, 0x2009, -+ 0x5151, 0x2104, 0x2009, 0x0102, 0x200a, 0x2091, 0x8001, 0x007c, -+ 0x7834, 0x8001, 0x7836, 0x00c0, 0x4c4c, 0x7838, 0x7836, 0x2091, -+ 0x8000, 0x7844, 0xa005, 0x00c0, 0x4c37, 0x2001, 0x0101, 0x8001, -+ 0x7846, 0xa080, 0x7400, 0x2040, 0x2004, 0xa065, 0x0040, 0x4c4c, -+ 0x6024, 0xa005, 0x0040, 0x4c48, 0x8001, 0x6026, 0x0040, 0x4c7c, -+ 0x6000, 0x2c40, 0x0078, 0x4c3d, 0x007c, 0x7828, 0x8001, 0x782a, -+ 0x00c0, 0x4c7b, 0x782c, 0x782a, 0x7830, 0xa005, 0x00c0, 0x4c5a, -+ 0x2001, 0x0200, 0x8001, 0x7832, 0x8003, 0x8003, 0x8003, 0x8003, -+ 0xa090, 0x5400, 0xa298, 0x0002, 0x2304, 0xa084, 0x0008, 0x0040, -+ 0x4c7b, 0xa290, 0x0009, 0x2204, 0xa005, 0x0040, 0x4c73, 0x8001, -+ 0x2012, 0x00c0, 0x4c7b, 0x2304, 0xa084, 0xfff7, 0xa085, 0x0080, -+ 0x201a, 0x1078, 0x21d2, 0x007c, 0x2069, 0x5140, 0x6800, 0xa005, -+ 0x0040, 0x4c86, 0x6848, 0xac06, 0x0040, 0x4cc3, 0x601b, 0x0006, -+ 0x60b4, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, -+ 0x0060, 0x6022, 0x6000, 0x2042, 0x6714, 0x6f82, 0x1078, 0x1973, -+ 0x6818, 0xa005, 0x0040, 0x4c9e, 0x8001, 0x681a, 0x6808, 0xa084, -+ 0xffef, 0x680a, 0x6810, 0x8001, 0x00d0, 0x4ca8, 0x1078, 0x23eb, -+ 0x6812, 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x1078, 0x1c70, -+ 0x2069, 0x5140, 0x7944, 0xa184, 0x0100, 0x2001, 0x0006, 0x686e, -+ 0x00c0, 0x4cbe, 0x6986, 0x2001, 0x0004, 0x686e, 0x1078, 0x21cd, -+ 0x2091, 0x8001, 0x007c, 0x2069, 0x0100, 0x2009, 0x5140, 0x2104, -+ 0xa084, 0x0007, 0x0040, 0x4d1f, 0xa086, 0x0007, 0x00c0, 0x4cd9, -+ 0x0d7e, 0x2009, 0x5152, 0x216c, 0x1078, 0x3a4e, 0x0d7f, 0x0078, -+ 0x4d1f, 0x2009, 0x5152, 0x2164, 0x1078, 0x2396, 0x601b, 0x0006, -+ 0x6858, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, -+ 0x0048, 0x6022, 0x602f, 0x0000, 0x6033, 0x0000, 0x6830, 0xa084, -+ 0x0040, 0x0040, 0x4d13, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, -+ 0xa084, 0x0004, 0x0040, 0x4d00, 0x0070, 0x4d00, 0x0078, 0x4cf7, -+ 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040, -+ 0x4d0d, 0x0070, 0x4d0d, 0x0078, 0x4d04, 0x20a9, 0x00fa, 0x0070, -+ 0x4d13, 0x0078, 0x4d0f, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, -+ 0x0048, 0x2009, 0x515b, 0x200b, 0x0007, 0x784c, 0x784a, 0x2091, -+ 0x8001, 0x007c, 0x2079, 0x5100, 0x1078, 0x4d4d, 0x1078, 0x4d31, -+ 0x1078, 0x4d3f, 0x7833, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, -+ 0x007c, 0x2019, 0x0003, 0x2011, 0x5146, 0x2204, 0xa086, 0x003c, -+ 0x0040, 0x4d3c, 0x2019, 0x0002, 0x7b2a, 0x7b2e, 0x007c, 0x2019, -+ 0x0039, 0x2011, 0x5146, 0x2204, 0xa086, 0x003c, 0x0040, 0x4d4a, -+ 0x2019, 0x0027, 0x7b36, 0x7b3a, 0x007c, 0x2019, 0x3971, 0x2011, -+ 0x5146, 0x2204, 0xa086, 0x003c, 0x0040, 0x4d58, 0x2019, 0x2626, -+ 0x7b22, 0x7b26, 0x783f, 0x0000, 0x7843, 0x000a, 0x007c, 0x0020, -+ 0x002b, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0014, 0x0014, 0x9849, 0x0014, 0x0014, 0x0014, -+ 0x0014, 0x0014, 0x0014, 0x0014, 0x0080, 0x000f, 0x0000, 0x0201, -+ 0x0604, 0x0c08, 0x2120, 0x4022, 0xf880, 0x0018, 0x300b, 0xa201, -+ 0x0014, 0xa200, 0x0014, 0xa200, 0x0214, 0x0000, 0x006c, 0x0002, -+ 0x0014, 0x98d0, 0x009e, 0x0096, 0xa202, 0x8838, 0x3806, 0x8839, -+ 0x20c3, 0x0864, 0x9884, 0x28c1, 0x9cb1, 0xa203, 0x300c, 0x2846, -+ 0x8161, 0x846a, 0x8300, 0x1856, 0x883a, 0x9865, 0x28f2, 0x9c90, -+ 0x9858, 0x300c, 0x28e1, 0x9c90, 0x2802, 0xa206, 0x64c3, 0x282d, -+ 0xa207, 0x64a0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7824, 0x68c1, -+ 0x7864, 0x883e, 0x9878, 0x8576, 0x8677, 0x206b, 0x28c1, 0x9cb1, -+ 0x2044, 0x2103, 0x20a2, 0x2081, 0x9865, 0xa209, 0x2901, 0x988c, -+ 0x0014, 0xa205, 0xa300, 0x1872, 0x879a, 0x883c, 0x1fe2, 0xc601, -+ 0xa20a, 0x856e, 0x0704, 0x9c90, 0x0014, 0xa204, 0xa300, 0x3009, -+ 0x19e2, 0xf868, 0x8176, 0x86eb, 0x85eb, 0x872e, 0x87a9, 0x883f, -+ 0x08e6, 0x9890, 0xf881, 0x988b, 0xc801, 0x0014, 0xf8c1, 0x0016, -+ 0x85b2, 0x80f0, 0x9532, 0xfb02, 0x1de2, 0x0014, 0x8532, 0xf241, -+ 0x0014, 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, 0x0014, 0xa208, 0x6043, -+ 0x8008, 0x1dc1, 0x0016, 0x8300, 0x8160, 0x842a, 0xf041, 0x3008, -+ 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d5, 0x8822, 0x0016, -+ 0x8000, 0x2847, 0x1011, 0x98c3, 0x8000, 0xa000, 0x2802, 0x1011, -+ 0x98c9, 0x9865, 0x283e, 0x1011, 0x98cd, 0xa20b, 0x0017, 0x300c, -+ 0xa300, 0x1de2, 0xdb81, 0x0014, 0x0210, 0x98da, 0x0014, 0x26e0, -+ 0x873a, 0xfb02, 0x19f2, 0x1fe2, 0x0014, 0xa20d, 0x3806, 0x0210, -+ 0x9cb6, 0x0704, 0x0000, 0x006c, 0x0002, 0x984f, 0x0014, 0x009e, -+ 0x00a5, 0x0017, 0x60ff, 0x300c, 0x8720, 0xa211, 0x9cd5, 0x8772, -+ 0x8837, 0x2101, 0x987a, 0x10d2, 0x78e2, 0x9cd8, 0x9859, 0xd984, -+ 0xf0e2, 0xf0a1, 0x98d2, 0x0014, 0x8831, 0xd166, 0x8830, 0x800f, -+ 0x9401, 0xb520, 0xc802, 0x8820, 0x987a, 0x2301, 0x987a, 0x10d2, -+ 0x78e4, 0x9cd8, 0x8821, 0x8820, 0x9859, 0xf123, 0xf142, 0xf101, -+ 0x98cb, 0x10d2, 0x70f6, 0x8832, 0x8203, 0x870c, 0xd99e, 0x6001, -+ 0x0014, 0x6845, 0x0214, 0xa21b, 0x9cd5, 0x2001, 0x98ca, 0x8201, -+ 0x1852, 0xd184, 0xd163, 0x8834, 0x8001, 0x988d, 0x3027, 0x84a8, -+ 0x1a56, 0x8833, 0x0014, 0xa218, 0x6981, 0x9cc1, 0x692a, 0x6902, -+ 0x1834, 0x989d, 0x1a14, 0x8010, 0x8592, 0x8026, 0x84b9, 0x7021, -+ 0x0014, 0xa300, 0x69e1, 0x9caa, 0x694c, 0xa213, 0x9cba, 0x1462, -+ 0xa213, 0x8000, 0x16e1, 0x98b4, 0x8023, 0x16e1, 0x8001, 0x10f1, -+ 0x0016, 0x6968, 0xa214, 0x9cba, 0x8004, 0x16e1, 0x0101, 0x300a, -+ 0x8827, 0x0014, 0x9cba, 0x0014, 0x61c2, 0x8002, 0x14e1, 0x0016, -+ 0xa217, 0x9cc1, 0x0014, 0xa300, 0x8181, 0x842a, 0x84a8, 0x1ce6, -+ 0x882c, 0x0016, 0xa212, 0x9cd5, 0x10d2, 0x70e4, 0x0004, 0x8007, -+ 0x9424, 0xcc1a, 0x9cd8, 0x98ca, 0x8827, 0x300a, 0x0013, 0x8000, -+ 0x84a4, 0x0016, 0x11c2, 0x211e, 0x870e, 0xa21d, 0x0014, 0x878e, -+ 0x0016, 0xa21c, 0x1035, 0x9891, 0xa210, 0xa000, 0x8010, 0x8592, -+ 0x853b, 0xd044, 0x8022, 0x3807, 0x84bb, 0x98ef, 0x8021, 0x3807, -+ 0x84b9, 0x300c, 0x817e, 0x872b, 0x8772, 0x9891, 0x0000, 0x0020, -+ 0x002b, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0014, 0x0014, 0x9849, 0x0014, 0x0014, 0x98e5, -+ 0x98d0, 0x0014, 0x0014, 0x0014, 0x0080, 0x013f, 0x0000, 0x0201, -+ 0x0604, 0x0c08, 0x2120, 0x4022, 0xf880, 0x0018, 0x300b, 0xa201, -+ 0x0014, 0xa200, 0x0014, 0xa200, 0x0214, 0xa202, 0x8838, 0x3806, -+ 0x8839, 0x20c3, 0x0864, 0xa82e, 0x28c1, 0x9cb1, 0xa203, 0x300c, -+ 0x2846, 0x8161, 0x846a, 0x8300, 0x1856, 0x883a, 0xa804, 0x28f2, -+ 0x9c90, 0xa8f4, 0x300c, 0x28e1, 0x9c90, 0x2802, 0xa206, 0x64c3, -+ 0x282d, 0xa207, 0x64a0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7824, -+ 0x68c1, 0x7864, 0x883e, 0xa802, 0x8576, 0x8677, 0x206b, 0x28c1, -+ 0x9cb1, 0x2044, 0x2103, 0x20a2, 0x2081, 0xa8e5, 0xa209, 0x2901, -+ 0xa809, 0x0014, 0xa205, 0xa300, 0x1872, 0x879a, 0x883c, 0x1fe2, -+ 0xc601, 0xa20a, 0x856e, 0x0704, 0x9c90, 0x0014, 0xa204, 0xa300, -+ 0x3009, 0x19e2, 0xf868, 0x8176, 0x86eb, 0x85eb, 0x872e, 0x87a9, -+ 0x883f, 0x08e6, 0xa8f3, 0xf881, 0xa8ec, 0xc801, 0x0014, 0xf8c1, -+ 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfb02, 0x1de2, 0x0014, 0x8532, -+ 0xf241, 0x0014, 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, 0x0014, 0xa208, -+ 0x6043, 0x8008, 0x1dc1, 0x0016, 0x8300, 0x8160, 0x842a, 0xf041, -+ 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d5, 0x8822, -+ 0x0016, 0x8000, 0x2847, 0x1011, 0xa8fc, 0x8000, 0xa000, 0x2802, -+ 0x1011, 0xa8fd, 0xa898, 0x283e, 0x1011, 0xa8fd, 0xa20b, 0x0017, -+ 0x300c, 0xa300, 0x1de2, 0xdb81, 0x0014, 0x0210, 0xa801, 0x0014, -+ 0x26e0, 0x873a, 0xfb02, 0x19f2, 0x1fe2, 0x0014, 0xa20d, 0x3806, -+ 0x0210, 0x9cb6, 0x0704, 0x0017, 0x60ff, 0x300c, 0x8720, 0xa211, -+ 0x9d6b, 0x8772, 0x8837, 0x2101, 0xa821, 0x10d2, 0x78e2, 0x9d6e, -+ 0xa8fc, 0xd984, 0xf0e2, 0xf0a1, 0xa871, 0x0014, 0x8831, 0xd166, -+ 0x8830, 0x800f, 0x9401, 0xb520, 0xc802, 0x8820, 0xa80f, 0x2301, -+ 0xa80d, 0x10d2, 0x78e4, 0x9d6e, 0x8821, 0x8820, 0xa8e6, 0xf123, -+ 0xf142, 0xf101, 0xa854, 0x10d2, 0x70f6, 0x8832, 0x8203, 0x870c, -+ 0xd99e, 0x6001, 0x0014, 0x6845, 0x0214, 0xa21b, 0x9d6b, 0x2001, -+ 0xa845, 0x8201, 0x1852, 0xd184, 0xd163, 0x8834, 0x8001, 0xa801, -+ 0x3027, 0x84a8, 0x1a56, 0x8833, 0x0014, 0xa218, 0x6981, 0x9d57, -+ 0x692a, 0x6902, 0x1834, 0xa805, 0x1a14, 0x8010, 0x8592, 0x8026, -+ 0x84b9, 0x7021, 0x0014, 0xa300, 0x69e1, 0x9d40, 0x694c, 0xa213, -+ 0x9d50, 0x1462, 0xa213, 0x8000, 0x16e1, 0xa80a, 0x8023, 0x16e1, -+ 0x8001, 0x10f1, 0x0016, 0x6968, 0xa214, 0x9d50, 0x8004, 0x16e1, -+ 0x0101, 0x300a, 0x8827, 0x0014, 0x9d50, 0x0014, 0x61c2, 0x8002, -+ 0x14e1, 0x0016, 0xa217, 0x9d57, 0x0014, 0xa300, 0x8181, 0x842a, -+ 0x84a8, 0x1ce6, 0x882c, 0x0016, 0xa212, 0x9d6b, 0x10d2, 0x70e4, -+ 0x0004, 0x8007, 0x9424, 0xcc1a, 0x9d6e, 0xa8f8, 0x8827, 0x300a, -+ 0x0013, 0x8000, 0x84a4, 0x0016, 0x11c2, 0x211e, 0x870e, 0xa21d, -+ 0x0014, 0x878e, 0x0016, 0xa21c, 0x1035, 0xa8af, 0xa210, 0x3807, -+ 0x300c, 0x817e, 0x872b, 0x8772, 0xa8a8, 0x0000, 0xdf21 -+}; -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/asm_1080.h 2003-07-19 17:06:32.000000000 -0700 -@@ -0,0 +1,4554 @@ -+/* @(#)asm_1080.h 1.2 */ -+/* -+ * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Qlogic, Inc. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms are permitted provided -+ * that the following conditions are met: -+ * 1. Redistribution of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistribution in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+#ifndef ISP_TARGET_MODE -+/************************************************************************ -+ * * -+ * --- ISP1240/ISP1080/ISP1280 Initiator Firmware --- * -+ * 32 LUN Support * -+ * * -+ ************************************************************************/ -+/* -+ * Firmware Version 8.15.00 (14:35 Aug 22, 2000) -+ */ -+static const u_int16_t isp_1080_risc_code[] = { -+ 0x0078, 0x1041, 0x0000, 0x3d3b, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, 0x2c31, -+ 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, 0x4320, -+ 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, 0x5350, -+ 0x3132, 0x3430, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056, -+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x382e, 0x3135, 0x2020, 0x2043, -+ 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3030, 0x2050, -+ 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, 0x3030, 0x2020, -+ 0x2400, 0x20c9, 0x97ff, 0x2001, 0x04fc, 0x2004, 0xa086, 0x1080, -+ 0x00c0, 0x1054, 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010, -+ 0x2089, 0x1374, 0x0078, 0x106d, 0x2001, 0x04fc, 0x2004, 0xa086, -+ 0x1280, 0x00c0, 0x1069, 0x2071, 0x0200, 0x70a0, 0x70a2, 0x2071, -+ 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010, 0x2089, 0x13f8, 0x0078, -+ 0x106d, 0x20c1, 0x0020, 0x2089, 0x131c, 0x2071, 0x0010, 0x70c3, -+ 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, -+ 0x0008, 0x2001, 0x04fe, 0x70d6, 0x20c1, 0x0021, 0x2019, 0x0000, -+ 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec, 0x7fff, 0x2d64, -+ 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b, 0x5050, 0x2114, -+ 0xa286, 0xa5a5, 0x0040, 0x10a4, 0xa386, 0x000f, 0x0040, 0x10a0, -+ 0x2c6a, 0x2a5a, 0x20c1, 0x0020, 0x2019, 0x000f, 0x0078, 0x1080, -+ 0x2c6a, 0x2a5a, 0x0078, 0x10a2, 0x2c6a, 0x2a5a, 0x2130, 0x2128, -+ 0xa1a2, 0x4e00, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, -+ 0xa192, 0x9800, 0x2009, 0x0000, 0x2001, 0x0032, 0x1078, 0x207a, -+ 0x2218, 0x2079, 0x4e00, 0x2fa0, 0x2408, 0x2011, 0x0000, 0x20a9, -+ 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10bf, 0x2009, 0xff00, 0x3400, -+ 0xa102, 0x0048, 0x10cf, 0x0040, 0x10cf, 0x20a8, 0x42a4, 0x2001, -+ 0x04fc, 0x2004, 0xa086, 0x1080, 0x00c0, 0x10e5, 0x2071, 0x0100, -+ 0x0d7e, 0x2069, 0x4e40, 0x1078, 0x4cdd, 0x0d7f, 0x7810, 0xc0ed, -+ 0x7812, 0x781b, 0x0064, 0x0078, 0x110a, 0x2001, 0x04fc, 0x2004, -+ 0xa086, 0x1280, 0x00c0, 0x1105, 0x7814, 0xc0ed, 0xc0d5, 0x7816, -+ 0x781b, 0x0064, 0x2071, 0x0200, 0x0d7e, 0x2069, 0x4e40, 0x1078, -+ 0x4cdd, 0x2069, 0x4e80, 0x2071, 0x0100, 0x1078, 0x4cdd, 0x7814, -+ 0xc0d4, 0x7816, 0x0d7f, 0x0078, 0x110a, 0x7814, 0xc0e5, 0x7816, -+ 0x781b, 0x003c, 0x7eca, 0x7cc2, 0x7bc6, 0x7867, 0x0000, 0x7800, -+ 0xc08d, 0x7802, 0x2031, 0x0030, 0x78af, 0x0101, 0x7823, 0x0002, -+ 0x7827, 0x0002, 0x2009, 0x0002, 0x2069, 0x4e40, 0x681b, 0x0003, -+ 0x6823, 0x0007, 0x6827, 0x00fa, 0x682b, 0x0008, 0x682f, 0x0028, -+ 0x6837, 0x0000, 0x683b, 0x0006, 0x6833, 0x0008, 0x683f, 0x0000, -+ 0x8109, 0x0040, 0x115e, 0x68d3, 0x000a, 0x68c3, 0x4ec0, 0x2079, -+ 0x4e00, 0x7814, 0xd0e4, 0x00c0, 0x1144, 0xd0ec, 0x00c0, 0x1148, -+ 0x68d7, 0x7329, 0x0078, 0x114a, 0x68d7, 0x730d, 0x0078, 0x114a, -+ 0x68d7, 0x732d, 0x68c7, 0x53c0, 0x68cb, 0x52c0, 0x68cf, 0x93c0, -+ 0x68ab, 0x9644, 0x68af, 0x9649, 0x68b3, 0x9644, 0x68b7, 0x9644, -+ 0x68a7, 0x0001, 0x2069, 0x4e80, 0x0078, 0x111e, 0x68d3, 0x000a, -+ 0x68c3, 0x50c0, 0x7814, 0xd0e4, 0x00c0, 0x116a, 0x68d7, 0x7439, -+ 0x0078, 0x116c, 0x68d7, 0x7419, 0x68c7, 0x73c0, 0x68cb, 0x5340, -+ 0x68cf, 0x94d0, 0x68ab, 0x9649, 0x68af, 0x964e, 0x68b3, 0x9649, -+ 0x68b7, 0x9649, 0x68a7, 0x0001, 0x7810, 0xd0ec, 0x00c0, 0x11c2, -+ 0x7814, 0xd0e4, 0x00c0, 0x11b4, 0x0e7e, 0x2069, 0x52c0, 0x2071, -+ 0x0200, 0x70ec, 0xd0e4, 0x00c0, 0x1195, 0x2019, 0x0c0c, 0x2021, -+ 0x000c, 0x1078, 0x2009, 0x0078, 0x119b, 0x2019, 0x0c0a, 0x2021, -+ 0x000a, 0x1078, 0x2009, 0x2069, 0x5340, 0x2071, 0x0100, 0x70ec, -+ 0xd0e4, 0x00c0, 0x11ab, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x1078, -+ 0x2009, 0x0078, 0x11b1, 0x2019, 0x0c0a, 0x2021, 0x000a, 0x1078, -+ 0x2009, 0x0e7f, 0x0078, 0x11db, 0x2019, 0x0c0c, 0x2021, 0x000c, -+ 0x2069, 0x52c0, 0x1078, 0x2009, 0x2069, 0x5340, 0x1078, 0x2009, -+ 0x0078, 0x11db, 0x2069, 0x52c0, 0x0e7e, 0x2071, 0x0100, 0x70ec, -+ 0xd0e4, 0x00c0, 0x11d4, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x1078, -+ 0x2009, 0x0e7f, 0x0078, 0x11db, 0x2019, 0x0c0a, 0x2021, 0x000a, -+ 0x1078, 0x2009, 0x0e7f, 0x2011, 0x0002, 0x2069, 0x53c0, 0x2009, -+ 0x0002, 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, 0x0040, 0x7bc8, -+ 0xa386, 0xfeff, 0x00c0, 0x11f2, 0x6817, 0x0100, 0x681f, 0x0064, -+ 0x0078, 0x11f6, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, 0x0010, -+ 0x00f0, 0x11e3, 0x8109, 0x00c0, 0x11e1, 0x8211, 0x0040, 0x1204, -+ 0x2069, 0x73c0, 0x0078, 0x11df, 0x1078, 0x265b, 0x1078, 0x468e, -+ 0x1078, 0x1dd4, 0x1078, 0x4c6f, 0x2091, 0x2100, 0x2079, 0x4e00, -+ 0x7810, 0xd0ec, 0x0040, 0x1218, 0x2071, 0x0020, 0x0078, 0x121a, -+ 0x2071, 0x0050, 0x2091, 0x2200, 0x2079, 0x4e00, 0x2071, 0x0020, -+ 0x2091, 0x2300, 0x2079, 0x4e00, 0x7810, 0xd0ec, 0x0040, 0x122c, -+ 0x2079, 0x0100, 0x0078, 0x122e, 0x2079, 0x0200, 0x2071, 0x4e40, -+ 0x2091, 0x2400, 0x2079, 0x0100, 0x2071, 0x4e80, 0x2091, 0x2000, -+ 0x2079, 0x4e00, 0x2071, 0x0010, 0x3200, 0xa085, 0x303d, 0x2090, -+ 0x2071, 0x0010, 0x70c3, 0x0000, 0x0090, 0x124d, 0x70c0, 0xa086, -+ 0x0002, 0x00c0, 0x124d, 0x1078, 0x15ba, 0x2039, 0x0000, 0x7810, -+ 0xd0ec, 0x00c0, 0x12cf, 0x1078, 0x148e, 0x78ac, 0xa005, 0x00c0, -+ 0x126b, 0x0068, 0x1261, 0x786c, 0xa065, 0x0040, 0x1261, 0x1078, -+ 0x2395, 0x1078, 0x20a1, 0x0068, 0x1278, 0x786c, 0xa065, 0x0040, -+ 0x126b, 0x1078, 0x2395, 0x0068, 0x1278, 0x2009, 0x4e47, 0x2011, -+ 0x4e87, 0x2104, 0x220c, 0xa105, 0x0040, 0x1278, 0x1078, 0x1f0a, -+ 0x2071, 0x4e40, 0x70a4, 0xa005, 0x0040, 0x129d, 0x7450, 0xa485, -+ 0x0000, 0x0040, 0x129d, 0x2079, 0x0200, 0x2091, 0x8000, 0x72d4, -+ 0xa28c, 0x303d, 0x2190, 0x1078, 0x2b6a, 0x2091, 0x8000, 0x2091, -+ 0x303d, 0x0068, 0x129d, 0x2079, 0x4e00, 0x786c, 0xa065, 0x0040, -+ 0x129d, 0x2071, 0x0010, 0x1078, 0x2395, 0x00e0, 0x12a5, 0x2079, -+ 0x4e00, 0x2071, 0x0010, 0x1078, 0x4a43, 0x2071, 0x4e80, 0x70a4, -+ 0xa005, 0x0040, 0x12bd, 0x7050, 0xa025, 0x0040, 0x12bd, 0x2079, -+ 0x0100, 0x2091, 0x8000, 0x72d4, 0xa28c, 0x303d, 0x2190, 0x1078, -+ 0x2b6a, 0x2091, 0x8000, 0x2091, 0x303d, 0x2079, 0x4e00, 0x2071, -+ 0x0010, 0x0068, 0x12c9, 0x786c, 0xa065, 0x0040, 0x12c9, 0x1078, -+ 0x2395, 0x00e0, 0x1253, 0x1078, 0x4a43, 0x0078, 0x1253, 0x1078, -+ 0x148e, 0x78ac, 0xa005, 0x00c0, 0x12e7, 0x0068, 0x12dd, 0x786c, -+ 0xa065, 0x0040, 0x12dd, 0x1078, 0x2395, 0x1078, 0x20a1, 0x0068, -+ 0x12f1, 0x786c, 0xa065, 0x0040, 0x12e7, 0x1078, 0x2395, 0x0068, -+ 0x12f1, 0x2009, 0x4e47, 0x2104, 0xa005, 0x0040, 0x12f1, 0x1078, -+ 0x1f0a, 0x2071, 0x4e40, 0x70a4, 0xa005, 0x0040, 0x130c, 0x7450, -+ 0xa485, 0x0000, 0x0040, 0x130c, 0x2079, 0x0100, 0x2091, 0x8000, -+ 0x72d4, 0xa28c, 0x303d, 0x2190, 0x1078, 0x2b6a, 0x2091, 0x8000, -+ 0x2091, 0x303d, 0x2079, 0x4e00, 0x2071, 0x0010, 0x0068, 0x1316, -+ 0x786c, 0xa065, 0x0040, 0x1316, 0x1078, 0x2395, 0x00e0, 0x12cf, -+ 0x1078, 0x4a43, 0x0078, 0x12cf, 0x133c, 0x133c, 0x133e, 0x133e, -+ 0x134b, 0x134b, 0x134b, 0x134b, 0x1356, 0x1356, 0x1363, 0x1363, -+ 0x134b, 0x134b, 0x134b, 0x134b, 0x133c, 0x133c, 0x133e, 0x133e, -+ 0x134b, 0x134b, 0x134b, 0x134b, 0x1356, 0x1356, 0x1363, 0x1363, -+ 0x134b, 0x134b, 0x134b, 0x134b, 0x0078, 0x133c, 0x007e, 0x107e, -+ 0x127e, 0x2091, 0x2400, 0x1078, 0x298a, 0x127f, 0x107f, 0x007f, -+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13c8, -+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, -+ 0x127e, 0x2091, 0x2300, 0x1078, 0x298a, 0x127f, 0x107f, 0x007f, -+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, -+ 0x1078, 0x298a, 0x2091, 0x2400, 0x1078, 0x298a, 0x127f, 0x107f, -+ 0x007f, 0x2091, 0x8001, 0x007c, 0x1394, 0x1394, 0x1396, 0x1396, -+ 0x13a3, 0x13a3, 0x13a3, 0x13a3, 0x13ae, 0x13ae, 0x1396, 0x1396, -+ 0x13a3, 0x13a3, 0x13a3, 0x13a3, 0x13af, 0x13af, 0x13af, 0x13af, -+ 0x13af, 0x13af, 0x13af, 0x13af, 0x13af, 0x13af, 0x13af, 0x13af, -+ 0x13af, 0x13af, 0x13af, 0x13af, 0x0078, 0x1394, 0x007e, 0x107e, -+ 0x127e, 0x2091, 0x2300, 0x1078, 0x298a, 0x127f, 0x107f, 0x007f, -+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13d5, -+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007c, 0x107e, -+ 0x127e, 0x0d7e, 0x0e7e, 0x0f7e, 0x007e, 0x2071, 0x0100, 0x2069, -+ 0x4e40, 0x2079, 0x4e00, 0x70ec, 0xa084, 0x1c00, 0x78e2, 0x1078, -+ 0x4cdd, 0x007f, 0x0f7f, 0x0e7f, 0x0d7f, 0x127f, 0x107f, 0x007c, -+ 0x3c00, 0xa084, 0x0007, 0x0079, 0x13cd, 0x13de, 0x13de, 0x13e0, -+ 0x13e0, 0x13e5, 0x13e5, 0x13ea, 0x13ea, 0x3c00, 0xa084, 0x0003, -+ 0x0079, 0x13da, 0x13de, 0x13de, 0x13f3, 0x13f3, 0x1078, 0x296b, -+ 0x2091, 0x2200, 0x1078, 0x4768, 0x007c, 0x2091, 0x2100, 0x1078, -+ 0x4768, 0x007c, 0x2091, 0x2100, 0x1078, 0x4768, 0x2091, 0x2200, -+ 0x1078, 0x4768, 0x007c, 0x2091, 0x2100, 0x1078, 0x4768, 0x007c, -+ 0x1418, 0x1418, 0x141a, 0x141a, 0x1427, 0x1427, 0x1427, 0x1427, -+ 0x1432, 0x1432, 0x143f, 0x143f, 0x1427, 0x1427, 0x1427, 0x1427, -+ 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, -+ 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, -+ 0x0078, 0x1418, 0x007e, 0x107e, 0x127e, 0x2091, 0x2400, 0x1078, -+ 0x298a, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, -+ 0x107e, 0x127e, 0x1078, 0x13c8, 0x127f, 0x107f, 0x007f, 0x2091, -+ 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, -+ 0x298a, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, -+ 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, 0x298a, 0x2091, 0x2400, -+ 0x1078, 0x298a, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, -+ 0x007e, 0x107e, 0x127e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2079, 0x4e00, -+ 0x2071, 0x0200, 0x2069, 0x4e40, 0x3d00, 0xd08c, 0x0040, 0x1466, -+ 0x70ec, 0xa084, 0x1c00, 0x78e2, 0x1078, 0x4cdd, 0x3d00, 0xd084, -+ 0x0040, 0x1474, 0x2069, 0x4e80, 0x2071, 0x0100, 0x70ec, 0xa084, -+ 0x1c00, 0x78e6, 0x1078, 0x4cdd, 0x0f7f, 0x0e7f, 0x0d7f, 0x127f, -+ 0x107f, 0x007f, 0x007c, 0x7008, 0x800b, 0x00c8, 0x1489, 0x7007, -+ 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x148a, 0xd09c, 0x0040, 0x1489, -+ 0x087a, 0x097a, 0x70c3, 0x4002, 0x0078, 0x15bd, 0x0068, 0x1513, -+ 0x2061, 0x0000, 0x6018, 0xd084, 0x00c0, 0x1513, 0x7828, 0xa005, -+ 0x00c0, 0x149e, 0x0010, 0x1514, 0x0078, 0x1513, 0x7910, 0xd1f4, -+ 0x0040, 0x14a6, 0x2001, 0x4007, 0x0078, 0x15bc, 0x7914, 0xd1ec, -+ 0x0040, 0x14c1, 0xd0fc, 0x0040, 0x14b7, 0x007e, 0x1078, 0x1d64, -+ 0x007f, 0x0040, 0x14c1, 0x2001, 0x4007, 0x0078, 0x15bc, 0x007e, -+ 0x1078, 0x1d54, 0x007f, 0x0040, 0x14c1, 0x2001, 0x4007, 0x0078, -+ 0x15bc, 0x7910, 0xd0fc, 0x00c0, 0x14cb, 0x2061, 0x4e40, 0xc19c, -+ 0xc7fc, 0x0078, 0x14cf, 0x2061, 0x4e80, 0xc19d, 0xc7fd, 0x6064, -+ 0xa005, 0x00c0, 0x1513, 0x7912, 0x6083, 0x0000, 0x7828, 0xc0fc, -+ 0xa086, 0x0018, 0x00c0, 0x14e0, 0x0c7e, 0x1078, 0x1b5b, 0x0c7f, -+ 0x782b, 0x0000, 0x607c, 0xa065, 0x0040, 0x14f9, 0x0c7e, 0x609c, -+ 0x1078, 0x1e49, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1c84, 0x2009, -+ 0x0018, 0x6087, 0x0103, 0x1078, 0x1d74, 0x00c0, 0x150d, 0x1078, -+ 0x1dc6, 0x7810, 0xd09c, 0x00c0, 0x1501, 0x2061, 0x4e40, 0x0078, -+ 0x1505, 0x2061, 0x4e80, 0xc09c, 0x7812, 0x607f, 0x0000, 0x60d4, -+ 0xd0dc, 0x0040, 0x1511, 0xc0dc, 0x60d6, 0x2001, 0x4005, 0x0078, -+ 0x15bc, 0x0078, 0x15ba, 0x007c, 0x7810, 0xd0f4, 0x0040, 0x151c, -+ 0x2001, 0x4007, 0x0078, 0x15bc, 0xa006, 0x70c2, 0x70c6, 0x70ca, -+ 0x70ce, 0x70da, 0x70c0, 0xa03d, 0xa08a, 0x0040, 0x00c8, 0x152a, -+ 0x0079, 0x1531, 0x2100, 0xa08a, 0x0040, 0x00c8, 0x15c8, 0x0079, -+ 0x1571, 0x15ba, 0x1610, 0x15d9, 0x1648, 0x1680, 0x1680, 0x15d0, -+ 0x1c9c, 0x168b, 0x15c8, 0x15dd, 0x15df, 0x15e1, 0x15e3, 0x1ca1, -+ 0x15c8, 0x1699, 0x16f6, 0x1b7b, 0x1c96, 0x15e5, 0x19c0, 0x1a02, -+ 0x1a3d, 0x1a8e, 0x197b, 0x1988, 0x199c, 0x19af, 0x17cb, 0x15c8, -+ 0x172d, 0x173a, 0x1746, 0x1752, 0x1768, 0x1774, 0x1777, 0x1783, -+ 0x178f, 0x1797, 0x17b3, 0x17bf, 0x15c8, 0x15c8, 0x15c8, 0x15c8, -+ 0x17d8, 0x17ea, 0x1806, 0x183c, 0x1864, 0x1874, 0x1877, 0x18a8, -+ 0x18d9, 0x18eb, 0x194a, 0x195a, 0x15c8, 0x15c8, 0x15c8, 0x15c8, -+ 0x196a, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x1cc6, 0x1ccc, -+ 0x15c8, 0x15c8, 0x15c8, 0x1cd0, 0x1d15, 0x15c8, 0x15c8, 0x15c8, -+ 0x15c8, 0x160a, 0x167a, 0x1693, 0x16f0, 0x1b75, 0x15c8, 0x15c8, -+ 0x1b3e, 0x15c8, 0x1d19, 0x1cb8, 0x1cc2, 0x15c8, 0x15c8, 0x15c8, -+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, -+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, -+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, -+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, -+ 0x15c8, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0078, 0x15bc, 0x73ce, -+ 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0068, 0x15bd, 0x2061, -+ 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x007c, -+ 0x70c3, 0x4001, 0x0078, 0x15bd, 0x70c3, 0x4006, 0x0078, 0x15bd, -+ 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0078, -+ 0x15ba, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078, 0x15ba, 0x0078, -+ 0x15ba, 0x0078, 0x15ba, 0x0078, 0x15ba, 0x2091, 0x8000, 0x70c3, -+ 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, -+ 0x0008, 0x2001, 0x000f, 0x70d6, 0x2079, 0x0000, 0x781b, 0x0001, -+ 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x041a, 0x2051, 0x0445, -+ 0x2061, 0x0447, 0x20c1, 0x0020, 0x2091, 0x5000, 0x2091, 0x4080, -+ 0x0078, 0x0418, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1613, -+ 0x2029, 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x20a0, -+ 0x2099, 0x0030, 0x7003, 0x0001, 0x7007, 0x0006, 0x731a, 0x721e, -+ 0x7422, 0x7526, 0x2021, 0x0040, 0x81ff, 0x0040, 0x15ba, 0xa182, -+ 0x0040, 0x00c8, 0x162d, 0x2120, 0xa006, 0x2008, 0x8403, 0x7012, -+ 0x7007, 0x0004, 0x7007, 0x0001, 0x7008, 0xd0fc, 0x0040, 0x1634, -+ 0x7007, 0x0002, 0xa084, 0x01e0, 0x0040, 0x1642, 0x70c3, 0x4002, -+ 0x0078, 0x15bd, 0x24a8, 0x53a5, 0x0078, 0x1624, 0x0078, 0x15ba, -+ 0x2029, 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x2098, -+ 0x20a1, 0x0030, 0x7003, 0x0000, 0x7007, 0x0006, 0x731a, 0x721e, -+ 0x7422, 0x7526, 0x2021, 0x0040, 0x7007, 0x0006, 0x81ff, 0x0040, -+ 0x15ba, 0xa182, 0x0040, 0x00c8, 0x1667, 0x2120, 0xa006, 0x2008, -+ 0x8403, 0x7012, 0x24a8, 0x53a6, 0x7007, 0x0001, 0x7008, 0xd0fc, -+ 0x0040, 0x166e, 0xa084, 0x01e0, 0x0040, 0x165c, 0x70c3, 0x4002, -+ 0x0078, 0x15bd, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x164b, -+ 0x71c4, 0x70c8, 0x2114, 0xa79e, 0x0004, 0x00c0, 0x1688, 0x200a, -+ 0x72ca, 0x0078, 0x15b9, 0x70c7, 0x0008, 0x70cb, 0x000f, 0x70cf, -+ 0x0000, 0x0078, 0x15ba, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, -+ 0x169c, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0, -+ 0x70c6, 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x0040, 0x16eb, 0xa40a, -+ 0x0040, 0x16ac, 0x00c8, 0x16b5, 0x8001, 0x7872, 0xa084, 0xfc00, -+ 0x0040, 0x16b9, 0x78ac, 0xc085, 0x78ae, 0x2001, 0x4005, 0x0078, -+ 0x15bc, 0x7b7e, 0x7a7a, 0x7e86, 0x7d82, 0x7c76, 0xa48c, 0xff00, -+ 0x0040, 0x16d1, 0x8407, 0x8004, 0x8004, 0x810c, 0x810c, 0x810f, -+ 0xa118, 0xa291, 0x0000, 0xa6b1, 0x0000, 0xa581, 0x0000, 0x0078, -+ 0x16db, 0x8407, 0x8004, 0x8004, 0xa318, 0xa291, 0x0000, 0xa6b1, -+ 0x0000, 0xa581, 0x0000, 0x731a, 0x721e, 0x7622, 0x7026, 0xa605, -+ 0x0040, 0x16e5, 0x7a10, 0xc2c5, 0x7a12, 0x78ac, 0xa084, 0xfffc, -+ 0x78ae, 0x0078, 0x16ee, 0x78ac, 0xc085, 0x78ae, 0x0078, 0x15ba, -+ 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, 0x16f9, 0x2029, 0x0000, -+ 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce, -+ 0x74d6, 0xa005, 0x0040, 0x1728, 0xa40a, 0x0040, 0x1709, 0x00c8, -+ 0x15bc, 0x8001, 0x7892, 0xa084, 0xfc00, 0x0040, 0x1716, 0x78ac, -+ 0xc0c5, 0x78ae, 0x2001, 0x4005, 0x0078, 0x15bc, 0x7a9a, 0x7b9e, -+ 0x7da2, 0x7ea6, 0x2600, 0xa505, 0x0040, 0x1721, 0x7a10, 0xc2c5, -+ 0x7a12, 0x7c96, 0x78ac, 0xa084, 0xfcff, 0x78ae, 0x0078, 0x172b, -+ 0x78ac, 0xc0c5, 0x78ae, 0x0078, 0x15ba, 0x2009, 0x0000, 0x786c, -+ 0xa065, 0x0040, 0x1737, 0x8108, 0x6000, 0x0078, 0x1730, 0x7ac4, -+ 0x0078, 0x15b8, 0x2009, 0x4e48, 0x210c, 0x7810, 0xd0ec, 0x00c0, -+ 0x15b9, 0x2011, 0x4e88, 0x2214, 0x0078, 0x15b8, 0x2009, 0x4e49, -+ 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2011, 0x4e89, 0x2214, -+ 0x0078, 0x15b8, 0x2061, 0x4e40, 0x6128, 0x622c, 0x8214, 0x8214, -+ 0x8214, 0x7810, 0xd0ec, 0x00c0, 0x1766, 0x2061, 0x4e80, 0x6328, -+ 0x73da, 0x632c, 0x831c, 0x831c, 0x831c, 0x73de, 0x0078, 0x15b8, -+ 0x2009, 0x4e4c, 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2011, -+ 0x4e8c, 0x2214, 0x0078, 0x15b8, 0x7918, 0x0078, 0x15b9, 0x2009, -+ 0x4e4d, 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2011, 0x4e8d, -+ 0x2214, 0x0078, 0x15b8, 0x2009, 0x4e4e, 0x210c, 0x7810, 0xd0ec, -+ 0x00c0, 0x15b9, 0x2011, 0x4e8e, 0x2214, 0x0078, 0x15b8, 0x7920, -+ 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x7a24, 0x0078, 0x15b8, 0x71c4, -+ 0xd1fc, 0x00c0, 0x179f, 0x2011, 0x52c0, 0x0078, 0x17a1, 0x2011, -+ 0x5340, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa268, -+ 0x6a00, 0x6804, 0xd09c, 0x0040, 0x17b0, 0x6b08, 0x0078, 0x17b1, -+ 0x6b0c, 0x0078, 0x15b7, 0x77c4, 0x1078, 0x1de4, 0x2091, 0x8000, -+ 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, 0x0078, 0x15b7, 0x2061, -+ 0x4e40, 0x6118, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2061, 0x4e80, -+ 0x6218, 0x0078, 0x15b8, 0x77c4, 0x1078, 0x1de4, 0x2091, 0x8000, -+ 0x6908, 0x6a18, 0x6b10, 0x77da, 0x2091, 0x8001, 0x0078, 0x15b7, -+ 0x71c4, 0x2110, 0xa294, 0x000f, 0xa282, 0x0010, 0x00c8, 0x15b2, -+ 0x1078, 0x277f, 0xa384, 0x4000, 0x0040, 0x17e8, 0xa295, 0x0020, -+ 0x0078, 0x15b7, 0x71c4, 0x2100, 0xc0bc, 0xa082, 0x0010, 0x00c8, -+ 0x15b2, 0xd1bc, 0x00c0, 0x17f9, 0x2011, 0x4e48, 0x2204, 0x0078, -+ 0x17fd, 0x2011, 0x4e88, 0x2204, 0xc0bd, 0x007e, 0x2100, 0xc0bc, -+ 0x2012, 0x1078, 0x26dc, 0x017f, 0x0078, 0x15b9, 0x71c4, 0x2021, -+ 0x4e49, 0x2404, 0x70c6, 0x2019, 0x0000, 0x0078, 0x1815, 0x71c8, -+ 0x2021, 0x4e89, 0x2404, 0x70ca, 0xc3fd, 0x2011, 0x1834, 0x20a9, -+ 0x0008, 0x2204, 0xa106, 0x0040, 0x1824, 0x8210, 0x00f0, 0x1819, -+ 0x71c4, 0x72c8, 0x0078, 0x15b1, 0xa292, 0x1834, 0x027e, 0x2122, -+ 0x017f, 0x1078, 0x26fd, 0x7810, 0xd0ec, 0x00c0, 0x1832, 0xd3fc, -+ 0x0040, 0x180f, 0x0078, 0x15ba, 0x03e8, 0x00fa, 0x01f4, 0x02ee, -+ 0x0004, 0x0001, 0x0002, 0x0003, 0x2061, 0x4e40, 0x6128, 0x622c, -+ 0x8214, 0x8214, 0x8214, 0x70c4, 0x602a, 0x70c8, 0x8003, 0x8003, -+ 0x8003, 0x602e, 0x7810, 0xd0ec, 0x00c0, 0x1862, 0x027e, 0x017e, -+ 0x2061, 0x4e80, 0x6128, 0x622c, 0x8214, 0x8214, 0x8214, 0x70d8, -+ 0x602a, 0x70dc, 0x8003, 0x8003, 0x8003, 0x602e, 0x71da, 0x72de, -+ 0x017f, 0x027f, 0x0078, 0x15b8, 0x2061, 0x4e40, 0x6130, 0x70c4, -+ 0x6032, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2061, 0x4e80, 0x6230, -+ 0x70c8, 0x6032, 0x0078, 0x15b8, 0x7918, 0x0078, 0x15b9, 0x71c4, -+ 0xa184, 0xffcf, 0x0040, 0x1883, 0x7810, 0xd0ec, 0x00c0, 0x15b2, -+ 0x72c8, 0x0078, 0x15b1, 0x2011, 0x4e4d, 0x2204, 0x2112, 0x007e, -+ 0x2019, 0x0000, 0x1078, 0x2764, 0x7810, 0xd0ec, 0x0040, 0x1893, -+ 0x017f, 0x0078, 0x15b9, 0x71c8, 0xa184, 0xffcf, 0x0040, 0x189c, -+ 0x2110, 0x71c4, 0x0078, 0x15b1, 0x2011, 0x4e8d, 0x2204, 0x2112, -+ 0x007e, 0xc3fd, 0x1078, 0x2764, 0x027f, 0x017f, 0x0078, 0x15b8, -+ 0x71c4, 0xa182, 0x0010, 0x0048, 0x18b4, 0x7810, 0xd0ec, 0x00c0, -+ 0x15b2, 0x72c8, 0x0078, 0x15b1, 0x2011, 0x4e4e, 0x2204, 0x007e, -+ 0x2112, 0x2019, 0x0000, 0x1078, 0x2742, 0x7810, 0xd0ec, 0x0040, -+ 0x18c4, 0x017f, 0x0078, 0x15b9, 0x71c8, 0xa182, 0x0010, 0x0048, -+ 0x18cd, 0x2110, 0x71c4, 0x0078, 0x15b1, 0x2011, 0x4e8e, 0x2204, -+ 0x007e, 0x2112, 0xc3fd, 0x1078, 0x2742, 0x027f, 0x017f, 0x0078, -+ 0x15b8, 0x71c4, 0x72c8, 0xa184, 0xfffd, 0x00c0, 0x15b1, 0xa284, -+ 0xfffd, 0x00c0, 0x15b1, 0x2100, 0x7920, 0x7822, 0x2200, 0x7a24, -+ 0x7826, 0x0078, 0x15b8, 0x71c4, 0xd1fc, 0x00c0, 0x18f3, 0x2011, -+ 0x52c0, 0x0078, 0x18f5, 0x2011, 0x5340, 0x8107, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa268, 0x2019, 0x0000, 0x72c8, 0x2091, -+ 0x8000, 0x6800, 0x007e, 0xa226, 0x0040, 0x191e, 0x6a02, 0xd4ec, -+ 0x0040, 0x190b, 0xc3a5, 0xd4e4, 0x0040, 0x190f, 0xc39d, 0xd4f4, -+ 0x0040, 0x191e, 0x810f, 0xd2f4, 0x0040, 0x191a, 0x1078, 0x27c1, -+ 0x0078, 0x191e, 0x1078, 0x279f, 0x0078, 0x191e, 0x72cc, 0x6808, -+ 0xa206, 0x0040, 0x1940, 0xa2a4, 0x00ff, 0x7814, 0xd0e4, 0x00c0, -+ 0x1931, 0xa482, 0x0028, 0x0048, 0x193d, 0x0040, 0x193d, 0x0078, -+ 0x1935, 0xa482, 0x0043, 0x0048, 0x193d, 0x71c4, 0x71c6, 0x027f, -+ 0x72ca, 0x2091, 0x8001, 0x0078, 0x15b3, 0x6a0a, 0xa39d, 0x000a, -+ 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x71c4, 0x2091, 0x8001, -+ 0x0078, 0x15b7, 0x77c4, 0x1078, 0x1de4, 0x2091, 0x8000, 0x6a14, -+ 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, 0x2708, -+ 0x0078, 0x15b7, 0x70c4, 0x2061, 0x4e40, 0x6118, 0x601a, 0x7810, -+ 0xd0ec, 0x00c0, 0x15b9, 0x70c8, 0x2061, 0x4e80, 0x6218, 0x601a, -+ 0x0078, 0x15b8, 0x71c4, 0x72c8, 0x73cc, 0xa182, 0x0010, 0x00c8, -+ 0x15b2, 0x1078, 0x27e3, 0xa384, 0x4000, 0x0040, 0x1979, 0xa295, -+ 0x0020, 0x0078, 0x15b7, 0x77c4, 0x1078, 0x1de4, 0x2091, 0x8000, -+ 0x6a08, 0xc28d, 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x15b8, -+ 0x77c4, 0x1078, 0x1de4, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9, -+ 0x6a0a, 0x6804, 0xa005, 0x0040, 0x1997, 0x1078, 0x2628, 0x2091, -+ 0x8001, 0x2708, 0x0078, 0x15b8, 0x77c4, 0x1078, 0x1de4, 0x2091, -+ 0x8000, 0x6a08, 0xc295, 0x6a0a, 0x6804, 0xa005, 0x0040, 0x19aa, -+ 0x1078, 0x2628, 0x2091, 0x8001, 0x2708, 0x0078, 0x15b8, 0x77c4, -+ 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, -+ 0x1078, 0x1dff, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078, 0x15b8, -+ 0x77c4, 0x7814, 0xd0e4, 0x00c0, 0x19d4, 0xd7fc, 0x0040, 0x19ce, -+ 0x1078, 0x1d64, 0x0040, 0x19d4, 0x0078, 0x15bc, 0x1078, 0x1d54, -+ 0x0040, 0x19d4, 0x0078, 0x15bc, 0x73c8, 0x72cc, 0x77c6, 0x73ca, -+ 0x72ce, 0x1078, 0x1e86, 0x00c0, 0x19fe, 0x6818, 0xa005, 0x0040, -+ 0x19f8, 0x2708, 0x077e, 0x1078, 0x2813, 0x077f, 0x00c0, 0x19f8, -+ 0x2001, 0x0015, 0xd7fc, 0x00c0, 0x19f1, 0x2061, 0x4e40, 0x0078, -+ 0x19f4, 0xc0fd, 0x2061, 0x4e80, 0x782a, 0x2091, 0x8001, 0x007c, -+ 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x15bc, 0x2091, 0x8001, -+ 0x0078, 0x15ba, 0x77c4, 0x7814, 0xd0e4, 0x00c0, 0x1a16, 0xd7fc, -+ 0x0040, 0x1a10, 0x1078, 0x1d64, 0x0040, 0x1a16, 0x0078, 0x15bc, -+ 0x1078, 0x1d54, 0x0040, 0x1a16, 0x0078, 0x15bc, 0x77c6, 0x2041, -+ 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, -+ 0x1dff, 0x2009, 0x0016, 0xd7fc, 0x00c0, 0x1a2a, 0x2061, 0x4e40, -+ 0x0078, 0x1a2d, 0x2061, 0x4e80, 0xc1fd, 0x6067, 0x0003, 0x607f, -+ 0x0000, 0x6776, 0x6083, 0x000f, 0x792a, 0x61d4, 0xc1dc, 0x61d6, -+ 0x1078, 0x2628, 0x2091, 0x8001, 0x007c, 0x77c8, 0x77ca, 0x77c4, -+ 0x77c6, 0x7814, 0xd0e4, 0x00c0, 0x1a54, 0xd7fc, 0x0040, 0x1a4e, -+ 0x1078, 0x1d64, 0x0040, 0x1a54, 0x0078, 0x15bc, 0x1078, 0x1d54, -+ 0x0040, 0x1a54, 0x0078, 0x15bc, 0xa7bc, 0xff00, 0x2091, 0x8000, -+ 0x2009, 0x0017, 0xd7fc, 0x00c0, 0x1a61, 0x2061, 0x4e40, 0x0078, -+ 0x1a64, 0x2061, 0x4e80, 0xc1fd, 0x607f, 0x0000, 0x6067, 0x0002, -+ 0x6776, 0x6083, 0x000f, 0x792a, 0x61d4, 0xc1dc, 0x61d6, 0x1078, -+ 0x2628, 0x2091, 0x8001, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, -+ 0x0010, 0x2091, 0x8000, 0x70c8, 0xa005, 0x0040, 0x1a82, 0x60d4, -+ 0xc0fd, 0x60d6, 0x1078, 0x1dff, 0x70c8, 0x6836, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x1a82, 0x2091, 0x8001, 0x007c, 0x2019, 0x0000, -+ 0x7814, 0xd0e4, 0x00c0, 0x1aa4, 0x72c8, 0xd284, 0x0040, 0x1a9e, -+ 0x1078, 0x1d64, 0x0040, 0x1aa4, 0x0078, 0x15bc, 0x1078, 0x1d54, -+ 0x0040, 0x1aa4, 0x0078, 0x15bc, 0x72c8, 0x72ca, 0x78ac, 0xa084, -+ 0x0003, 0x00c0, 0x1acf, 0x2039, 0x0000, 0xd284, 0x0040, 0x1ab1, -+ 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x1078, -+ 0x1de4, 0x2091, 0x8000, 0x6808, 0xc0d4, 0xa80d, 0x690a, 0x2091, -+ 0x8001, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1ab7, 0xa7bc, 0xff00, -+ 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1ab7, 0x2091, -+ 0x8000, 0x72c8, 0xd284, 0x00c0, 0x1ae1, 0x7810, 0xd0ec, 0x0040, -+ 0x1add, 0x2069, 0x0100, 0x0078, 0x1ae3, 0x2069, 0x0200, 0x0078, -+ 0x1ae3, 0x2069, 0x0100, 0x6808, 0xa084, 0xfffd, 0x680a, 0x6830, -+ 0xd0b4, 0x0040, 0x1b03, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, -+ 0xd094, 0x0040, 0x1af5, 0x00f0, 0x1aef, 0x684b, 0x0009, 0x20a9, -+ 0x0014, 0x6848, 0xd084, 0x0040, 0x1aff, 0x00f0, 0x1af9, 0x20a9, -+ 0x00fa, 0x00f0, 0x1b01, 0x2079, 0x4e00, 0x2009, 0x0018, 0x72c8, -+ 0xd284, 0x00c0, 0x1b0f, 0x2061, 0x4e40, 0x0078, 0x1b12, 0x2061, -+ 0x4e80, 0xc1fd, 0x607f, 0x0000, 0x792a, 0x6067, 0x0001, 0x6083, -+ 0x000f, 0x60a7, 0x0000, 0x60a8, 0x60b2, 0x60b6, 0x60d4, 0xd0b4, -+ 0x0040, 0x1b2e, 0xc0b4, 0x60d6, 0x0c7e, 0x60b8, 0xa065, 0x6008, -+ 0xc0d4, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x60d4, 0xa084, -+ 0x77ff, 0x60d6, 0x78ac, 0xc08d, 0x78ae, 0x83ff, 0x0040, 0x1b39, -+ 0x007c, 0x681b, 0x0047, 0x2091, 0x8001, 0x007c, 0x73cc, 0x1078, -+ 0x1a90, 0x69ec, 0x6a48, 0xa185, 0x1800, 0x684a, 0xa185, 0x0040, -+ 0x68ee, 0x73cc, 0x2021, 0x0004, 0x20a9, 0x09ff, 0x00f0, 0x1b4e, -+ 0x8421, 0x00c0, 0x1b4c, 0x8319, 0x00c0, 0x1b4a, 0x69ee, 0x6a4a, -+ 0x2091, 0x8001, 0x007c, 0xd7fc, 0x00c0, 0x1b62, 0x2069, 0x4e40, -+ 0x0078, 0x1b64, 0x2069, 0x4e80, 0x71c4, 0x71c6, 0x6916, 0x81ff, -+ 0x00c0, 0x1b6c, 0x68a7, 0x0001, 0x78ac, 0xc08c, 0x78ae, 0xd084, -+ 0x00c0, 0x1b74, 0x1078, 0x1ee6, 0x007c, 0x75d8, 0x74dc, 0x75da, -+ 0x74de, 0x0078, 0x1b7e, 0x2029, 0x0000, 0x2520, 0x71c4, 0x73c8, -+ 0x72cc, 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x4e00, 0x7dde, 0x7cda, -+ 0x7bd6, 0x7ad2, 0x1078, 0x1dbd, 0x0040, 0x1c80, 0x20a9, 0x0005, -+ 0x20a1, 0x4e14, 0x2091, 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, -+ 0x0040, 0x1078, 0x1fd1, 0x0040, 0x1ba1, 0x1078, 0x1dc6, 0x0078, -+ 0x1c80, 0x6004, 0xa08c, 0x00ff, 0xa18e, 0x0009, 0x00c0, 0x1bac, -+ 0x007e, 0x1078, 0x2378, 0x007f, 0xa084, 0xff00, 0x8007, 0x8009, -+ 0x0040, 0x1c20, 0x0c7e, 0x2c68, 0x1078, 0x1dbd, 0x0040, 0x1bf2, -+ 0x2c00, 0x689e, 0x8109, 0x00c0, 0x1bb3, 0x609f, 0x0000, 0x0c7f, -+ 0x0c7e, 0x7ddc, 0x7cd8, 0x7bd4, 0x7ad0, 0xa290, 0x0040, 0xa399, -+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x7dde, 0x7cda, 0x7bd6, -+ 0x7ad2, 0x2c68, 0x689c, 0xa065, 0x0040, 0x1c1f, 0x2009, 0x0040, -+ 0x1078, 0x1fd1, 0x00c0, 0x1c09, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0002, 0x00c0, 0x1bf2, 0x6004, 0xa084, 0x00ff, 0xa086, 0x000a, -+ 0x00c0, 0x1bee, 0x017e, 0x1078, 0x2374, 0x017f, 0x2d00, 0x6002, -+ 0x0078, 0x1bc1, 0x0c7f, 0x0c7e, 0x609c, 0x1078, 0x1e49, 0x0c7f, -+ 0x609f, 0x0000, 0x1078, 0x1c84, 0x2009, 0x0018, 0x6008, 0xc0cd, -+ 0x600a, 0x6004, 0x6086, 0x1078, 0x1d74, 0x1078, 0x1dc6, 0x0078, -+ 0x1c80, 0x0c7f, 0x0c7e, 0x609c, 0x1078, 0x1e49, 0x0c7f, 0x609f, -+ 0x0000, 0x1078, 0x1c84, 0x2009, 0x0018, 0x6087, 0x0103, 0x601b, -+ 0x0003, 0x1078, 0x1d74, 0x1078, 0x1dc6, 0x0078, 0x1c80, 0x0c7f, -+ 0x7814, 0xd0e4, 0x00c0, 0x1c45, 0x6114, 0xd1fc, 0x0040, 0x1c2e, -+ 0x1078, 0x1d64, 0x0040, 0x1c45, 0x0078, 0x1c32, 0x1078, 0x1d54, -+ 0x0040, 0x1c45, 0x2029, 0x0000, 0x2520, 0x2009, 0x0018, 0x73c8, -+ 0x72cc, 0x6087, 0x0103, 0x601b, 0x0021, 0x1078, 0x1d74, 0x1078, -+ 0x1dc6, 0x2001, 0x4007, 0x0078, 0x15bc, 0x74c4, 0x73c8, 0x72cc, -+ 0x6014, 0x2091, 0x8000, 0x0e7e, 0x2009, 0x0012, 0xd0fc, 0x00c0, -+ 0x1c55, 0x2071, 0x4e40, 0x0078, 0x1c58, 0x2071, 0x4e80, 0xc1fd, -+ 0x792a, 0x7067, 0x0005, 0x71d4, 0xc1dc, 0x71d6, 0x736a, 0x726e, -+ 0x7472, 0x7076, 0x707b, 0x0000, 0x2c00, 0x707e, 0xa02e, 0x2530, -+ 0x611c, 0xa184, 0x0060, 0x0040, 0x1c6f, 0x1078, 0x4632, 0x0e7f, -+ 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, -+ 0x6714, 0x6023, 0x0000, 0x1078, 0x2628, 0x2091, 0x8001, 0x007c, -+ 0x70c3, 0x4005, 0x0078, 0x15bd, 0x20a9, 0x0005, 0x2099, 0x4e14, -+ 0x2091, 0x8000, 0x530a, 0x2091, 0x8001, 0x2100, 0xa210, 0xa399, -+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x71c4, 0x70c7, -+ 0x0000, 0x791e, 0x0078, 0x15ba, 0x71c4, 0x71c6, 0x2168, 0x0078, -+ 0x1ca3, 0x2069, 0x1000, 0x690c, 0xa016, 0x2d04, 0xa210, 0x8d68, -+ 0x8109, 0x00c0, 0x1ca5, 0xa285, 0x0000, 0x00c0, 0x1cb3, 0x70c3, -+ 0x4000, 0x0078, 0x1cb5, 0x70c3, 0x4003, 0x70ca, 0x0078, 0x15bd, -+ 0x7964, 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, 0x15b2, 0x7966, -+ 0x0078, 0x15ba, 0x7964, 0x71c6, 0x0078, 0x15ba, 0x7900, 0x71c6, -+ 0x71c4, 0x7902, 0x0078, 0x15ba, 0x7900, 0x71c6, 0x0078, 0x15ba, -+ 0x70c4, 0x2011, 0x0000, 0xa08c, 0x000d, 0x0040, 0x1ce5, 0x810c, -+ 0x0048, 0x1ce1, 0x8210, 0x810c, 0x810c, 0x0048, 0x1ce1, 0x8210, -+ 0x810c, 0x81ff, 0x00c0, 0x15b3, 0x8210, 0x7a0e, 0xd28c, 0x0040, -+ 0x1d11, 0x7910, 0xc1cd, 0x7912, 0x2009, 0x0021, 0x2019, 0x0003, -+ 0xd284, 0x0040, 0x1d0b, 0x8108, 0x2019, 0x0041, 0x2011, 0x964e, -+ 0x2312, 0x2019, 0x0042, 0x8210, 0x2312, 0x2019, 0x0043, 0x8210, -+ 0x2312, 0x2019, 0x0046, 0x8210, 0x2312, 0x2019, 0x0047, 0x8210, -+ 0x2312, 0x2019, 0x0006, 0x2011, 0x9653, 0x2112, 0x2011, 0x9673, -+ 0x2312, 0x7904, 0x7806, 0x0078, 0x15b9, 0x7804, 0x70c6, 0x0078, -+ 0x15ba, 0x71c4, 0xd1fc, 0x00c0, 0x1d21, 0x2011, 0x52c0, 0x0078, -+ 0x1d23, 0x2011, 0x5340, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, -+ 0x8003, 0xa268, 0x6a14, 0xd2b4, 0x0040, 0x1d32, 0x2011, 0x0001, -+ 0x0078, 0x1d34, 0x2011, 0x0000, 0x6b0c, 0x6800, 0x70da, 0x0078, -+ 0x15b7, 0x017e, 0x7814, 0xd0f4, 0x0040, 0x1d46, 0x2001, 0x4007, -+ 0x70db, 0x0000, 0xa18d, 0x0001, 0x0078, 0x1d52, 0xd0fc, 0x0040, -+ 0x1d51, 0x2001, 0x4007, 0x70db, 0x0001, 0xa18d, 0x0001, 0x0078, -+ 0x1d52, 0xa006, 0x017f, 0x007c, 0x017e, 0x7814, 0xd0f4, 0x0040, -+ 0x1d61, 0x2001, 0x4007, 0x70db, 0x0000, 0xa18d, 0x0001, 0x0078, -+ 0x1d62, 0xa006, 0x017f, 0x007c, 0x017e, 0x7814, 0xd0fc, 0x0040, -+ 0x1d71, 0x2001, 0x4007, 0x70db, 0x0001, 0xa18d, 0x0001, 0x0078, -+ 0x1d72, 0xa006, 0x017f, 0x007c, 0x7112, 0x721a, 0x731e, 0x7810, -+ 0xd0c4, 0x0040, 0x1d7d, 0x7422, 0x7526, 0xac80, 0x0001, 0x8108, -+ 0x810c, 0x81a9, 0x8098, 0x20a1, 0x0030, 0x7003, 0x0000, 0x6084, -+ 0x20a2, 0x53a6, 0x7007, 0x0001, 0x7974, 0xa184, 0xff00, 0x0040, -+ 0x1d9a, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, -+ 0x0078, 0x1d9d, 0x8107, 0x8004, 0x8004, 0x797c, 0xa108, 0x7a78, -+ 0xa006, 0xa211, 0x7d10, 0xd5c4, 0x0040, 0x1daa, 0x7b84, 0xa319, -+ 0x7c80, 0xa421, 0x7008, 0xd0fc, 0x0040, 0x1daa, 0x7003, 0x0001, -+ 0x7007, 0x0006, 0x711a, 0x721e, 0x7d10, 0xd5c4, 0x0040, 0x1dba, -+ 0x7322, 0x7426, 0xa084, 0x01e0, 0x007c, 0x7848, 0xa065, 0x0040, -+ 0x1dc5, 0x2c04, 0x784a, 0x2063, 0x0000, 0x007c, 0x0f7e, 0x2079, -+ 0x4e00, 0x7848, 0x2062, 0x2c00, 0xa005, 0x00c0, 0x1dd1, 0x1078, -+ 0x296b, 0x784a, 0x0f7f, 0x007c, 0x2011, 0x9800, 0x7a4a, 0x7bc4, -+ 0x8319, 0x0040, 0x1de1, 0xa280, 0x0032, 0x2012, 0x2010, 0x0078, -+ 0x1dd8, 0x2013, 0x0000, 0x007c, 0x017e, 0x027e, 0xd7fc, 0x00c0, -+ 0x1ded, 0x2011, 0x53c0, 0x0078, 0x1def, 0x2011, 0x73c0, 0xa784, -+ 0x0f00, 0x800b, 0xa784, 0x001f, 0x0040, 0x1dfa, 0x8003, 0x8003, -+ 0x8003, 0x8003, 0xa105, 0xa268, 0x027f, 0x017f, 0x007c, 0x1078, -+ 0x1de4, 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084, 0xf9ef, -+ 0xa80d, 0x690a, 0x0e7e, 0xd7fc, 0x00c0, 0x1e14, 0x2009, 0x4e53, -+ 0x2071, 0x4e40, 0x0078, 0x1e18, 0x2009, 0x4e93, 0x2071, 0x4e80, -+ 0x210c, 0x6804, 0xa005, 0x0040, 0x1e28, 0xa116, 0x00c0, 0x1e28, -+ 0x2060, 0x6000, 0x6806, 0x017e, 0x200b, 0x0000, 0x0078, 0x1e2b, -+ 0x2009, 0x0000, 0x017e, 0x6804, 0xa065, 0x0040, 0x1e40, 0x6000, -+ 0x6806, 0x1078, 0x1e5b, 0x1078, 0x201d, 0x6810, 0x7908, 0x8109, -+ 0x790a, 0x8001, 0x6812, 0x00c0, 0x1e2b, 0x7910, 0xc1a5, 0x7912, -+ 0x017f, 0x6902, 0x6906, 0x2d00, 0x2060, 0x1078, 0x2acc, 0x0e7f, -+ 0x007c, 0xa065, 0x0040, 0x1e5a, 0x2008, 0x609c, 0xa005, 0x0040, -+ 0x1e57, 0x2062, 0x609f, 0x0000, 0xa065, 0x0078, 0x1e4d, 0x7848, -+ 0x794a, 0x2062, 0x007c, 0x6007, 0x0103, 0x608f, 0x0000, 0x20a9, -+ 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, -+ 0x601a, 0x682c, 0x6022, 0x007c, 0x0e7e, 0xd7fc, 0x00c0, 0x1e76, -+ 0x2071, 0x4e40, 0x2031, 0x4ec0, 0x0078, 0x1e7a, 0x2071, 0x4e80, -+ 0x2031, 0x50c0, 0x7050, 0xa08c, 0x0200, 0x00c0, 0x1e84, 0xa608, -+ 0x2d0a, 0x8000, 0x7052, 0xa006, 0x0e7f, 0x007c, 0x0f7e, 0xd7fc, -+ 0x00c0, 0x1e8e, 0x2079, 0x4e40, 0x0078, 0x1e90, 0x2079, 0x4e80, -+ 0x1078, 0x1de4, 0x2091, 0x8000, 0x6804, 0x780a, 0xa065, 0x0040, -+ 0x1ee4, 0x0078, 0x1ea2, 0x2c00, 0x780a, 0x2060, 0x6000, 0xa065, -+ 0x0040, 0x1ee4, 0x6010, 0xa306, 0x00c0, 0x1e9b, 0x600c, 0xa206, -+ 0x00c0, 0x1e9b, 0x2c28, 0x784c, 0xac06, 0x00c0, 0x1eb1, 0x0078, -+ 0x1ee1, 0x6804, 0xac06, 0x00c0, 0x1ebf, 0x6000, 0x2060, 0x6806, -+ 0xa005, 0x00c0, 0x1ebf, 0x6803, 0x0000, 0x0078, 0x1ec9, 0x6400, -+ 0x7808, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1ec9, 0x2c00, -+ 0x6802, 0x2560, 0x0f7f, 0x1078, 0x1e5b, 0x0f7e, 0x601b, 0x0005, -+ 0x6023, 0x0020, 0x0f7f, 0x1078, 0x201d, 0x0f7e, 0x7908, 0x8109, -+ 0x790a, 0x6810, 0x8001, 0x6812, 0x00c0, 0x1ee1, 0x7810, 0xc0a5, -+ 0x7812, 0x2001, 0xffff, 0xa005, 0x0f7f, 0x007c, 0x077e, 0x2700, -+ 0x2039, 0x0000, 0xd0fc, 0x0040, 0x1eee, 0xc7fd, 0x2041, 0x0021, -+ 0x2049, 0x0004, 0x2051, 0x0008, 0x2091, 0x8000, 0x1078, 0x1dff, -+ 0x8738, 0xa784, 0x001f, 0x00c0, 0x1ef6, 0xa7bc, 0xff00, 0x873f, -+ 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1ef6, 0x2091, 0x8001, -+ 0x077f, 0x007c, 0x786c, 0x2009, 0x9674, 0x210c, 0xa10d, 0x0040, -+ 0x1f14, 0xa065, 0x0078, 0x2395, 0x2061, 0x0000, 0x6018, 0xd084, -+ 0x00c0, 0x1f34, 0x7810, 0xd08c, 0x0040, 0x1f25, 0xc08c, 0x7812, -+ 0xc7fc, 0x2069, 0x4e40, 0x0078, 0x1f2a, 0xc08d, 0x7812, 0x2069, -+ 0x4e80, 0xc7fd, 0x2091, 0x8000, 0x681c, 0x681f, 0x0000, 0x2091, -+ 0x8001, 0xa005, 0x00c0, 0x1f35, 0x007c, 0xa08c, 0xfff0, 0x0040, -+ 0x1f3b, 0x1078, 0x296b, 0x0079, 0x1f3d, 0x1f4d, 0x1f50, 0x1f56, -+ 0x1f5a, 0x1f4e, 0x1f5e, 0x1f4e, 0x1f4e, 0x1f4e, 0x1f64, 0x1f95, -+ 0x1f99, 0x1f9f, 0x1fb4, 0x1f4e, 0x1f4e, 0x007c, 0x1078, 0x296b, -+ 0x1078, 0x1ee6, 0x2001, 0x8001, 0x0078, 0x1fc0, 0x2001, 0x8003, -+ 0x0078, 0x1fc0, 0x2001, 0x8004, 0x0078, 0x1fc0, 0x1078, 0x1ee6, -+ 0x2001, 0x8006, 0x0078, 0x1fc0, 0x2091, 0x8000, 0x077e, 0xd7fc, -+ 0x00c0, 0x1f70, 0x2069, 0x4e40, 0x2039, 0x0009, 0x0078, 0x1f74, -+ 0x2069, 0x4e80, 0x2039, 0x0009, 0x6800, 0xa086, 0x0000, 0x0040, -+ 0x1f7e, 0x007f, 0x6f1e, 0x2091, 0x8001, 0x007c, 0x6874, 0x077f, -+ 0xa0bc, 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, -+ 0x1078, 0x1dff, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1f88, 0x2091, -+ 0x8001, 0x2001, 0x800a, 0x0078, 0x1fc0, 0x2001, 0x800c, 0x0078, -+ 0x1fc0, 0x1078, 0x1ee6, 0x2001, 0x800d, 0x0078, 0x1fc0, 0x7814, -+ 0xd0e4, 0x00c0, 0x1fb2, 0xd0ec, 0x0040, 0x1fac, 0xd7fc, 0x0040, -+ 0x1fac, 0x78e4, 0x0078, 0x1fad, 0x78e0, 0x70c6, 0x2001, 0x800e, -+ 0x0078, 0x1fc0, 0x0078, 0x1f4e, 0xd7fc, 0x0040, 0x1fba, 0x78ec, -+ 0x0078, 0x1fbb, 0x78e8, 0x70c6, 0x2001, 0x800f, 0x0078, 0x1fc0, -+ 0x70c2, 0xd7fc, 0x00c0, 0x1fc8, 0x70db, 0x0000, 0x0078, 0x1fca, -+ 0x70db, 0x0001, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x4080, -+ 0x007c, 0xac80, 0x0001, 0x81ff, 0x0040, 0x1ffc, 0x2099, 0x0030, -+ 0x20a0, 0x700c, 0xa084, 0x03ff, 0x0040, 0x1fde, 0x7018, 0x007e, -+ 0x701c, 0x007e, 0x7020, 0x007e, 0x7024, 0x007e, 0x7112, 0x81ac, -+ 0x721a, 0x731e, 0x7422, 0x7526, 0x7003, 0x0001, 0x7007, 0x0001, -+ 0x7008, 0x800b, 0x00c8, 0x1ff0, 0x7007, 0x0002, 0xa08c, 0x01e0, -+ 0x00c0, 0x1ffc, 0x53a5, 0xa006, 0x7003, 0x0000, 0x7007, 0x0004, -+ 0x007f, 0x7026, 0x007f, 0x7022, 0x007f, 0x701e, 0x007f, 0x701a, -+ 0x007c, 0x2011, 0x0020, 0x2009, 0x0010, 0x6b0a, 0x6c0e, 0x6803, -+ 0xfd00, 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8, 0x0008, 0xa290, -+ 0x0004, 0x8109, 0x00c0, 0x200d, 0x007c, 0x6004, 0x6086, 0x2c08, -+ 0x2063, 0x0000, 0x7868, 0xa005, 0x796a, 0x0040, 0x202a, 0x2c02, -+ 0x0078, 0x202b, 0x796e, 0x007c, 0x0c7e, 0x2061, 0x4e00, 0x6887, -+ 0x0103, 0x2d08, 0x206b, 0x0000, 0x6068, 0xa005, 0x616a, 0x0040, -+ 0x203c, 0x2d02, 0x0078, 0x203d, 0x616e, 0x0c7f, 0x007c, 0x2091, -+ 0x8000, 0x2c04, 0x786e, 0xa005, 0x00c0, 0x2047, 0x786a, 0x2091, -+ 0x8001, 0x609c, 0xa005, 0x0040, 0x2060, 0x0c7e, 0x2060, 0x2008, -+ 0x609c, 0xa005, 0x0040, 0x205c, 0x2062, 0x609f, 0x0000, 0xa065, -+ 0x609c, 0xa005, 0x00c0, 0x2054, 0x7848, 0x794a, 0x2062, 0x0c7f, -+ 0x7848, 0x2062, 0x609f, 0x0000, 0xac85, 0x0000, 0x00c0, 0x206a, -+ 0x1078, 0x296b, 0x784a, 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, -+ 0x8086, 0x818e, 0x00c8, 0x2075, 0xa200, 0x00f0, 0x2070, 0x8086, -+ 0x818e, 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x209b, -+ 0xa11a, 0x00c8, 0x209b, 0x8213, 0x818d, 0x0048, 0x208e, 0xa11a, -+ 0x00c8, 0x208f, 0x00f0, 0x2083, 0x0078, 0x2093, 0xa11a, 0x2308, -+ 0x8210, 0x00f0, 0x2083, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080, -+ 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078, -+ 0x2097, 0x7d74, 0x70d0, 0xa506, 0x0040, 0x2187, 0x7810, 0x2050, -+ 0x7800, 0xd08c, 0x0040, 0x20c3, 0xdaec, 0x0040, 0x20c3, 0x0e7e, -+ 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x20c0, -+ 0x7008, 0x0e7f, 0xa086, 0x0008, 0x0040, 0x20c3, 0x0078, 0x2187, -+ 0x0e7f, 0x0078, 0x2187, 0x1078, 0x1dbd, 0x0040, 0x2187, 0xa046, -+ 0x7970, 0x2500, 0x8000, 0xa112, 0x2009, 0x0040, 0x00c8, 0x20d2, -+ 0x0078, 0x20d9, 0x72d0, 0xa206, 0x0040, 0x20d9, 0x8840, 0x2009, -+ 0x0080, 0x0c7e, 0x7112, 0x7007, 0x0001, 0x2099, 0x0030, 0x20a9, -+ 0x0020, 0xac80, 0x0001, 0x20a0, 0x2061, 0x0000, 0x88ff, 0x0040, -+ 0x20eb, 0x1078, 0x1dbd, 0x7008, 0xd0fc, 0x0040, 0x20eb, 0x7007, -+ 0x0002, 0x2091, 0x8001, 0xa08c, 0x01e0, 0x00c0, 0x2122, 0x53a5, -+ 0x8cff, 0x00c0, 0x2100, 0x88ff, 0x0040, 0x2171, 0x0078, 0x210a, -+ 0x2c00, 0x788e, 0x20a9, 0x0020, 0xac80, 0x0001, 0x20a0, 0x53a5, -+ 0x0078, 0x2171, 0xa046, 0x7218, 0x731c, 0xdac4, 0x0040, 0x2112, -+ 0x7420, 0x7524, 0xa292, 0x0040, 0xa39b, 0x0000, 0xa4a3, 0x0000, -+ 0xa5ab, 0x0000, 0x721a, 0x731e, 0xdac4, 0x0040, 0x2122, 0x7422, -+ 0x7526, 0xa006, 0x7007, 0x0004, 0x0040, 0x2171, 0x8cff, 0x0040, -+ 0x212b, 0x1078, 0x1dc6, 0x0c7f, 0x1078, 0x1dc6, 0xa046, 0x7888, -+ 0x8000, 0x788a, 0xa086, 0x0002, 0x0040, 0x2151, 0x7a7c, 0x7b78, -+ 0xdac4, 0x0040, 0x213d, 0x7c84, 0x7d80, 0x7974, 0x8107, 0x8004, -+ 0x8004, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, -+ 0x721a, 0x731e, 0xdac4, 0x0040, 0x2187, 0x7422, 0x7526, 0x0078, -+ 0x2187, 0x6014, 0xd0fc, 0x00c0, 0x2159, 0x2069, 0x4e40, 0x0078, -+ 0x215b, 0x2069, 0x4e80, 0x2091, 0x8000, 0x681f, 0x0002, 0x88ff, -+ 0x0040, 0x2167, 0xa046, 0x788c, 0x2060, 0x0078, 0x2151, 0x788b, -+ 0x0000, 0x78ac, 0xa085, 0x0003, 0x78ae, 0x2091, 0x8001, 0x0078, -+ 0x2187, 0x0c7f, 0x788b, 0x0000, 0x1078, 0x2346, 0x6004, 0xa084, -+ 0x000f, 0x1078, 0x2188, 0x88ff, 0x0040, 0x2185, 0x788c, 0x2060, -+ 0x6004, 0xa084, 0x000f, 0x1078, 0x2188, 0x0078, 0x20a1, 0x007c, -+ 0x0079, 0x218a, 0x219a, 0x21b8, 0x21d6, 0x219a, 0x21e7, 0x21ab, -+ 0x219a, 0x219a, 0x219a, 0x21b6, 0x21d4, 0x219a, 0x219a, 0x219a, -+ 0x219a, 0x219a, 0x2039, 0x0400, 0x78bc, 0xa705, 0x78be, 0x6008, -+ 0xa705, 0x600a, 0x1078, 0x222a, 0x609c, 0x78ba, 0x609f, 0x0000, -+ 0x1078, 0x2330, 0x007c, 0x78bc, 0xd0c4, 0x0040, 0x21b1, 0x0078, -+ 0x219a, 0x601c, 0xc0bd, 0x601e, 0x0078, 0x21be, 0x1078, 0x2378, -+ 0x78bc, 0xd0c4, 0x0040, 0x21be, 0x0078, 0x219a, 0x78bf, 0x0000, -+ 0x6004, 0x8007, 0xa084, 0x00ff, 0x78b2, 0x8001, 0x0040, 0x21d1, -+ 0x1078, 0x222a, 0x0040, 0x21d1, 0x78bc, 0xc0c5, 0x78be, 0x0078, -+ 0x21d3, 0x0078, 0x2249, 0x007c, 0x1078, 0x2374, 0x78bc, 0xa08c, -+ 0x0e00, 0x00c0, 0x21de, 0xd0c4, 0x00c0, 0x21e0, 0x0078, 0x219a, -+ 0x1078, 0x222a, 0x00c0, 0x21e6, 0x0078, 0x2249, 0x007c, 0x78bc, -+ 0xd0c4, 0x0040, 0x21ed, 0x0078, 0x219a, 0x78bf, 0x0000, 0x6714, -+ 0x2011, 0x0001, 0x22a8, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, -+ 0x220d, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001, 0x0040, -+ 0x220d, 0xa7bc, 0x8000, 0x2011, 0x0002, 0x20a9, 0x0100, 0xa08e, -+ 0x0002, 0x0040, 0x220d, 0x0078, 0x2227, 0x1078, 0x1de4, 0x2d00, -+ 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, 0x6808, 0xa084, -+ 0xffde, 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, 0x00f0, 0x2210, -+ 0x8211, 0x0040, 0x2227, 0x20a9, 0x0100, 0x0078, 0x2210, 0x1078, -+ 0x1dc6, 0x007c, 0x609f, 0x0000, 0x78b4, 0xa06d, 0x2c00, 0x78b6, -+ 0x00c0, 0x2235, 0x78ba, 0x0078, 0x223d, 0x689e, 0x2d00, 0x6002, -+ 0x78b8, 0xad06, 0x00c0, 0x223d, 0x6002, 0x78b0, 0x8001, 0x78b2, -+ 0x00c0, 0x2248, 0x78bc, 0xc0c4, 0x78be, 0x78b8, 0x2060, 0xa006, -+ 0x007c, 0x0e7e, 0xa02e, 0x2530, 0x7dba, 0x7db6, 0x65ae, 0x65b2, -+ 0x601c, 0x60a2, 0x2048, 0xa984, 0xe1ff, 0x601e, 0xa984, 0x0060, -+ 0x0040, 0x225c, 0x1078, 0x4632, 0x6596, 0x65a6, 0x669a, 0x66aa, -+ 0x6714, 0x2071, 0x4e80, 0xd7fc, 0x00c0, 0x2268, 0x2071, 0x4e40, -+ 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x0040, 0x2273, 0x8003, -+ 0x8003, 0x8003, 0x8003, 0xa105, 0x71c4, 0xa168, 0x2700, 0x8007, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0x71c8, 0xa100, 0x60c2, -+ 0x2091, 0x8000, 0x7814, 0xd0c4, 0x0040, 0x2298, 0xd0ec, 0x0040, -+ 0x2294, 0xd7fc, 0x00c0, 0x2291, 0xd0f4, 0x00c0, 0x229f, 0x0078, -+ 0x2298, 0xd0fc, 0x00c0, 0x229f, 0x7810, 0xd0f4, 0x00c0, 0x229f, -+ 0x6e08, 0xd684, 0x0040, 0x22c9, 0xd9fc, 0x00c0, 0x22c9, 0x2091, -+ 0x8001, 0x1078, 0x1e5b, 0x2091, 0x8000, 0x1078, 0x201d, 0x2091, -+ 0x8001, 0x7814, 0xd0e4, 0x00c0, 0x232e, 0x7814, 0xd0c4, 0x0040, -+ 0x232e, 0xd0ec, 0x0040, 0x22c1, 0xd7fc, 0x00c0, 0x22bc, 0xd0f4, -+ 0x00c0, 0x22c5, 0x0078, 0x232e, 0xd0fc, 0x00c0, 0x22c5, 0x0078, -+ 0x232e, 0x7810, 0xd0f4, 0x0040, 0x232e, 0x601b, 0x0021, 0x0078, -+ 0x232e, 0x6024, 0xa096, 0x0001, 0x00c0, 0x22d0, 0x8000, 0x6026, -+ 0x6a10, 0x6814, 0xa202, 0x0048, 0x22e3, 0x0040, 0x22e3, 0x2091, -+ 0x8001, 0x2039, 0x0200, 0x609c, 0x78ba, 0x609f, 0x0000, 0x1078, -+ 0x2330, 0x0078, 0x232e, 0x2c08, 0xd9fc, 0x0040, 0x230b, 0x6800, -+ 0xa065, 0x0040, 0x230b, 0x6a04, 0x7000, 0xa084, 0x0002, 0x0040, -+ 0x2301, 0x704c, 0xa206, 0x00c0, 0x2301, 0x6b04, 0x2160, 0x2304, -+ 0x6002, 0xa005, 0x00c0, 0x22fd, 0x6902, 0x2260, 0x6102, 0x0078, -+ 0x2317, 0x2d00, 0x2060, 0x1078, 0x2acc, 0x6e08, 0x2160, 0x6202, -+ 0x6906, 0x0078, 0x2317, 0x6800, 0x6902, 0xa065, 0x0040, 0x2313, -+ 0x6102, 0x0078, 0x2314, 0x6906, 0x2160, 0x6003, 0x0000, 0x2160, -+ 0xd9fc, 0x0040, 0x231e, 0xa6b4, 0xfffc, 0x6e0a, 0x6810, 0x7d08, -+ 0x8528, 0x7d0a, 0x8000, 0x6812, 0x2091, 0x8001, 0xd6b4, 0x0040, -+ 0x232e, 0xa6b6, 0x0040, 0x6e0a, 0x1078, 0x1e6c, 0x0e7f, 0x007c, -+ 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x1078, 0x201d, 0x2091, -+ 0x8001, 0x78b8, 0xa065, 0x0040, 0x2343, 0x609c, 0x78ba, 0x609f, -+ 0x0000, 0x0078, 0x2330, 0x78b6, 0x78ba, 0x007c, 0x7970, 0x7874, -+ 0x2818, 0xd384, 0x0040, 0x2350, 0x8000, 0xa112, 0x0048, 0x2355, -+ 0x8000, 0xa112, 0x00c8, 0x2365, 0xc384, 0x7a7c, 0x721a, 0x7a78, -+ 0x721e, 0xdac4, 0x0040, 0x2360, 0x7a84, 0x7222, 0x7a80, 0x7226, -+ 0xa006, 0xd384, 0x0040, 0x2365, 0x8000, 0x7876, 0x70d2, 0x781c, -+ 0xa005, 0x0040, 0x2373, 0x8001, 0x781e, 0x00c0, 0x2373, 0x0068, -+ 0x2373, 0x2091, 0x4080, 0x007c, 0x2039, 0x238c, 0x0078, 0x237a, -+ 0x2039, 0x2392, 0x2704, 0xa005, 0x0040, 0x238b, 0xac00, 0x2068, -+ 0x6908, 0x6810, 0x6912, 0x680a, 0x690c, 0x6814, 0x6916, 0x680e, -+ 0x8738, 0x0078, 0x237a, 0x007c, 0x0003, 0x0009, 0x000f, 0x0015, -+ 0x001b, 0x0000, 0x0015, 0x001b, 0x0000, 0x2041, 0x0000, 0x780c, -+ 0x0079, 0x239a, 0x256c, 0x253f, 0x239e, 0x2417, 0x2039, 0x9674, -+ 0x2734, 0x7d10, 0x0078, 0x23be, 0x6084, 0xa086, 0x0103, 0x00c0, -+ 0x2400, 0x6114, 0x6018, 0xa105, 0x0040, 0x23b3, 0x86ff, 0x00c0, -+ 0x23cf, 0x0078, 0x2400, 0x8603, 0xa080, 0x9655, 0x620c, 0x2202, -+ 0x8000, 0x6210, 0x2202, 0x1078, 0x203f, 0x8630, 0xa68e, 0x000f, -+ 0x0040, 0x248b, 0x786c, 0xa065, 0x00c0, 0x23a4, 0x7808, 0xa602, -+ 0x00c8, 0x23cf, 0xd5ac, 0x00c0, 0x23cf, 0x263a, 0x007c, 0xa682, -+ 0x0003, 0x00c8, 0x248b, 0x2091, 0x8000, 0x2069, 0x0000, 0x6818, -+ 0xd084, 0x00c0, 0x23fb, 0x2011, 0x9655, 0x2204, 0x70c6, 0x8210, -+ 0x2204, 0x70ca, 0xd684, 0x00c0, 0x23eb, 0x8210, 0x2204, 0x70da, -+ 0x8210, 0x2204, 0x70de, 0xa685, 0x8020, 0x70c2, 0x681b, 0x0001, -+ 0x2091, 0x4080, 0x7810, 0xa084, 0xffcf, 0x7812, 0x2091, 0x8001, -+ 0x203b, 0x0000, 0x007c, 0x7810, 0xc0ad, 0x7812, 0x0078, 0x248b, -+ 0x263a, 0x1078, 0x2576, 0x00c0, 0x2599, 0x786c, 0xa065, 0x00c0, -+ 0x23a4, 0x2091, 0x8000, 0x7810, 0xa084, 0xffcf, 0x86ff, 0x0040, -+ 0x2412, 0xc0ad, 0x7812, 0x2091, 0x8001, 0x0078, 0x2599, 0x2039, -+ 0x9674, 0x2734, 0x7d10, 0x0078, 0x2433, 0x6084, 0xa086, 0x0103, -+ 0x00c0, 0x2474, 0x6114, 0x6018, 0xa105, 0x0040, 0x242c, 0x86ff, -+ 0x00c0, 0x2444, 0x0078, 0x2474, 0xa680, 0x9655, 0x620c, 0x2202, -+ 0x1078, 0x203f, 0x8630, 0xa68e, 0x001e, 0x0040, 0x248b, 0x786c, -+ 0xa065, 0x00c0, 0x241d, 0x7808, 0xa602, 0x00c8, 0x2444, 0xd5ac, -+ 0x00c0, 0x2444, 0x263a, 0x007c, 0xa682, 0x0006, 0x00c8, 0x248b, -+ 0x2091, 0x8000, 0x2069, 0x0000, 0x6818, 0xd084, 0x00c0, 0x246f, -+ 0x2011, 0x9655, 0x2009, 0x964e, 0x26a8, 0x211c, 0x2204, 0x201a, -+ 0x8108, 0x8210, 0x00f0, 0x2455, 0xa685, 0x8030, 0x70c2, 0x681b, -+ 0x0001, 0x2091, 0x4080, 0x7810, 0xa084, 0xffcf, 0x7812, 0x2091, -+ 0x8001, 0xa006, 0x2009, 0x9675, 0x200a, 0x203a, 0x007c, 0x7810, -+ 0xc0ad, 0x7812, 0x0078, 0x248b, 0x263a, 0x1078, 0x2576, 0x00c0, -+ 0x2599, 0x786c, 0xa065, 0x00c0, 0x241d, 0x2091, 0x8000, 0x7810, -+ 0xa084, 0xffcf, 0x86ff, 0x0040, 0x2486, 0xc0ad, 0x7812, 0x2091, -+ 0x8001, 0x0078, 0x2599, 0x2091, 0x8000, 0x7007, 0x0004, 0x7994, -+ 0x70d4, 0xa102, 0x0048, 0x249c, 0x0040, 0x24a6, 0x7b90, 0xa302, -+ 0x00c0, 0x24a6, 0x0078, 0x249f, 0x8002, 0x00c0, 0x24a6, 0x263a, -+ 0x7810, 0xc0ad, 0x7812, 0x2091, 0x8001, 0x007c, 0xa184, 0xff00, -+ 0x0040, 0x24b3, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, -+ 0xa100, 0x0078, 0x24b6, 0x8107, 0x8004, 0x8004, 0x7a9c, 0xa210, -+ 0x721a, 0x7a98, 0xa006, 0xa211, 0x721e, 0xd4c4, 0x0040, 0x24c6, -+ 0x7aa4, 0xa211, 0x7222, 0x7aa0, 0xa211, 0x7226, 0x20a1, 0x0030, -+ 0x7003, 0x0000, 0x2009, 0x9654, 0x260a, 0x8109, 0x2198, 0x2104, -+ 0xd084, 0x0040, 0x24d4, 0x8633, 0xa6b0, 0x0002, 0x26a8, 0x53a6, -+ 0x8603, 0x7012, 0x7007, 0x0001, 0x7990, 0x7894, 0x8000, 0xa10a, -+ 0x00c8, 0x24e3, 0xa006, 0x2028, 0x7974, 0xa184, 0xff00, 0x0040, -+ 0x24f2, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, -+ 0x0078, 0x24f5, 0x8107, 0x8004, 0x8004, 0x797c, 0xa108, 0x7a78, -+ 0xa006, 0xa211, 0xd4c4, 0x0040, 0x2501, 0x7b84, 0xa319, 0x7c80, -+ 0xa421, 0x7008, 0xd0fc, 0x0040, 0x2501, 0xa084, 0x01e0, 0x0040, -+ 0x2526, 0x7d10, 0x2031, 0x9654, 0x2634, 0x78a8, 0x8000, 0x78aa, -+ 0xd08c, 0x00c0, 0x251b, 0x7007, 0x0006, 0x7004, 0xd094, 0x00c0, -+ 0x2515, 0x0078, 0x248d, 0x2069, 0x4e47, 0x206b, 0x0003, 0x78ac, -+ 0xa085, 0x0300, 0x78ae, 0xa006, 0x0078, 0x252f, 0x2030, 0x75d6, -+ 0x2091, 0x4080, 0x7d96, 0x7d10, 0xa5ac, 0xffcf, 0x7d12, 0x2091, -+ 0x8001, 0x78aa, 0x7007, 0x0006, 0x263a, 0x7003, 0x0001, 0x711a, -+ 0x721e, 0xd5c4, 0x0040, 0x253e, 0x7322, 0x7426, 0x007c, 0x6084, -+ 0xa086, 0x0103, 0x00c0, 0x2562, 0x6114, 0x6018, 0xa105, 0x00c0, -+ 0x2562, 0x2069, 0x0000, 0x6818, 0xd084, 0x00c0, 0x2562, 0x600c, -+ 0x70c6, 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001, 0x2091, -+ 0x4080, 0x1078, 0x203f, 0x0068, 0x2561, 0x786c, 0xa065, 0x00c0, -+ 0x253f, 0x007c, 0x1078, 0x2576, 0x00c0, 0x2599, 0x786c, 0xa065, -+ 0x00c0, 0x253f, 0x0078, 0x2599, 0x1078, 0x2576, 0x00c0, 0x2599, -+ 0x786c, 0xa065, 0x00c0, 0x256c, 0x0078, 0x2599, 0x6084, 0xa086, -+ 0x0103, 0x00c0, 0x258a, 0x6018, 0xc0fc, 0x601a, 0xa086, 0x0004, -+ 0x00c0, 0x258a, 0x7804, 0xd0a4, 0x0040, 0x258a, 0x1078, 0x203f, -+ 0xa006, 0x007c, 0x1078, 0x259f, 0x00c0, 0x2591, 0xa085, 0x0001, -+ 0x007c, 0x1078, 0x25ae, 0x00c0, 0x2597, 0x2041, 0x0001, 0x7d10, -+ 0x007c, 0x88ff, 0x0040, 0x259e, 0x2091, 0x4080, 0x007c, 0x7b90, -+ 0x7994, 0x70d4, 0xa102, 0x00c0, 0x25a8, 0xa385, 0x0000, 0x007c, -+ 0x0048, 0x25ac, 0xa302, 0x007c, 0x8002, 0x007c, 0x7810, 0xd0ec, -+ 0x0040, 0x25c6, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, -+ 0xa005, 0x00c0, 0x25c3, 0x7008, 0x0e7f, 0xa086, 0x0008, 0x0040, -+ 0x25c6, 0x0078, 0x2617, 0x0e7f, 0x0078, 0x2617, 0xa184, 0xff00, -+ 0x0040, 0x25d3, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, -+ 0xa100, 0x0078, 0x25d6, 0x8107, 0x8004, 0x8004, 0x7a9c, 0x7b98, -+ 0x7ca4, 0x7da0, 0xa210, 0xa006, 0xa319, 0xa421, 0xa529, 0x2009, -+ 0x0018, 0x6028, 0xa005, 0x0040, 0x25e7, 0x2009, 0x0040, 0x1078, -+ 0x1d74, 0x0040, 0x2609, 0x78a8, 0x8000, 0x78aa, 0xd08c, 0x00c0, -+ 0x2617, 0x6014, 0xd0fc, 0x00c0, 0x25f9, 0x2069, 0x4e40, 0x0078, -+ 0x25fb, 0x2069, 0x4e80, 0x2091, 0x8000, 0x681f, 0x0003, 0x78ab, -+ 0x0000, 0x78ac, 0xa085, 0x0300, 0x78ae, 0x2091, 0x8001, 0x0078, -+ 0x2617, 0x78ab, 0x0000, 0x1078, 0x203f, 0x7990, 0x7894, 0x8000, -+ 0xa10a, 0x00c8, 0x2614, 0xa006, 0x7896, 0x70d6, 0xa006, 0x2071, -+ 0x0010, 0x2091, 0x8001, 0x007c, 0xd7fc, 0x00c0, 0x2623, 0x2009, -+ 0x4e59, 0x0078, 0x2625, 0x2009, 0x4e99, 0x2091, 0x8000, 0x200a, -+ 0x0f7e, 0xd7fc, 0x00c0, 0x263c, 0x2009, 0x4e40, 0x2001, 0x4e04, -+ 0x2004, 0xd0ec, 0x0040, 0x2638, 0x2079, 0x0100, 0x0078, 0x2640, -+ 0x2079, 0x0200, 0x0078, 0x2640, 0x2009, 0x4e80, 0x2079, 0x0100, -+ 0x2104, 0xa086, 0x0000, 0x00c0, 0x2659, 0xd7fc, 0x00c0, 0x264c, -+ 0x2009, 0x4e45, 0x0078, 0x264e, 0x2009, 0x4e85, 0x2104, 0xa005, -+ 0x00c0, 0x2659, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x2659, 0x781b, -+ 0x0045, 0x0f7f, 0x007c, 0x2009, 0x0002, 0x2069, 0x4e00, 0x6810, -+ 0xd0ec, 0x00c0, 0x26c8, 0x2071, 0x4e80, 0x2079, 0x0100, 0x2021, -+ 0x50bf, 0x784b, 0x000f, 0x2019, 0x4457, 0xd184, 0x0040, 0x267c, -+ 0x6810, 0xd0ec, 0x0040, 0x2678, 0x20a1, 0x012b, 0x0078, 0x267e, -+ 0x20a1, 0x022b, 0x0078, 0x267e, 0x20a1, 0x012b, 0x2304, 0xa005, -+ 0x0040, 0x268b, 0x789a, 0x8318, 0x23ac, 0x8318, 0x2398, 0x53a6, -+ 0x3318, 0x0078, 0x267e, 0x789b, 0x0020, 0x20a9, 0x0010, 0x6814, -+ 0xd0e4, 0x0040, 0x269b, 0x78af, 0x0000, 0x78af, 0x9020, 0x00f0, -+ 0x2693, 0x0078, 0x26a1, 0x78af, 0x0000, 0x78af, 0x8020, 0x00f0, -+ 0x269b, 0x7003, 0x0000, 0x017e, 0xd18c, 0x2009, 0x0000, 0x0040, -+ 0x26aa, 0xc1bd, 0x1078, 0x289b, 0x017f, 0x7020, 0xa084, 0x000f, -+ 0x007e, 0x6814, 0xd0e4, 0x007f, 0x00c0, 0x26ba, 0xa085, 0x6340, -+ 0x0078, 0x26bc, 0xa085, 0x62c0, 0x7806, 0x780f, 0x9200, 0x7843, -+ 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x7456, 0x7053, 0x0000, -+ 0x8109, 0x0040, 0x26db, 0x2071, 0x4e40, 0x6810, 0xd0ec, 0x0040, -+ 0x26d5, 0x2079, 0x0100, 0x0078, 0x26d7, 0x2079, 0x0200, 0x2021, -+ 0x4ebf, 0x0078, 0x2669, 0x007c, 0x017e, 0xd1bc, 0x00c0, 0x26f0, -+ 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x26ec, -+ 0x2011, 0x0101, 0x0078, 0x26f2, 0x2011, 0x0201, 0x0078, 0x26f2, -+ 0x2011, 0x0101, 0xa18c, 0x000f, 0x2204, 0xa084, 0xfff0, 0xa105, -+ 0x2012, 0x017f, 0x1078, 0x289b, 0x007c, 0xd3fc, 0x00c0, 0x2710, -+ 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x270c, -+ 0x2011, 0x0101, 0x0078, 0x2712, 0x2011, 0x0201, 0x0078, 0x2712, -+ 0x2011, 0x0101, 0x20a9, 0x0009, 0x810b, 0x00f0, 0x2714, 0xa18c, -+ 0x0e00, 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, 0x007c, 0x2019, -+ 0x0002, 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x0040, 0x272c, 0x8319, -+ 0x2009, 0x0101, 0x0078, 0x272e, 0x2009, 0x0101, 0x20a9, 0x0005, -+ 0x8213, 0x00f0, 0x2730, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, -+ 0xa205, 0x200a, 0x8319, 0x0040, 0x2741, 0x2009, 0x0201, 0x0078, -+ 0x272e, 0x007c, 0xd3fc, 0x00c0, 0x2755, 0x007e, 0x2001, 0x4e04, -+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2751, 0x2011, 0x0101, 0x0078, -+ 0x2757, 0x2011, 0x0201, 0x0078, 0x2757, 0x2011, 0x0101, 0x20a9, -+ 0x000c, 0x810b, 0x00f0, 0x2759, 0xa18c, 0xf000, 0x2204, 0xa084, -+ 0x0fff, 0xa105, 0x2012, 0x007c, 0xd3fc, 0x00c0, 0x2777, 0x007e, -+ 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2773, 0x2011, -+ 0x0102, 0x0078, 0x2779, 0x2011, 0x0202, 0x0078, 0x2779, 0x2011, -+ 0x0102, 0x2204, 0xa084, 0xffcf, 0xa105, 0x2012, 0x007c, 0x0c7e, -+ 0xd1bc, 0x00c0, 0x2793, 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x278f, 0x2061, 0x0100, 0x0078, 0x2795, 0x2061, -+ 0x0200, 0x0078, 0x2795, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, -+ 0xa080, 0x0020, 0x609a, 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x0c7e, -+ 0xd1bc, 0x00c0, 0x27b3, 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x27af, 0x2061, 0x0100, 0x0078, 0x27b5, 0x2061, -+ 0x0200, 0x0078, 0x27b5, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, -+ 0xa080, 0x0022, 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x0c7f, -+ 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x27d5, 0x007e, 0x2001, 0x4e04, -+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x27d1, 0x2061, 0x0100, 0x0078, -+ 0x27d7, 0x2061, 0x0200, 0x0078, 0x27d7, 0x2061, 0x0100, 0xc1bc, -+ 0x8103, 0x8003, 0xa080, 0x0022, 0x609a, 0x60a4, 0xa085, 0x0020, -+ 0x60ae, 0x0c7f, 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x27f7, 0x007e, -+ 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x27f3, 0x2061, -+ 0x0100, 0x0078, 0x27f9, 0x2061, 0x0200, 0x0078, 0x27f9, 0x2061, -+ 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0020, 0x609a, 0x60a4, -+ 0xa28c, 0x0020, 0x0040, 0x2807, 0xc2ac, 0xa39d, 0x4000, 0xc3fc, -+ 0xd3b4, 0x00c0, 0x280c, 0xc3fd, 0x62ae, 0x2010, 0x60a4, 0x63ae, -+ 0x2018, 0x0c7f, 0x007c, 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, -+ 0xa005, 0x0040, 0x2879, 0xd1fc, 0x0040, 0x2822, 0x2061, 0x95d0, -+ 0x0078, 0x2824, 0x2061, 0x94c0, 0x1078, 0x2881, 0x0040, 0x285b, -+ 0x20a9, 0x0101, 0xd1fc, 0x0040, 0x2831, 0x2061, 0x94d0, 0x0078, -+ 0x2833, 0x2061, 0x93c0, 0x0c7e, 0x1078, 0x2881, 0x0040, 0x283e, -+ 0x0c7f, 0x8c60, 0x00f0, 0x2833, 0x0078, 0x2879, 0x007f, 0xd1fc, -+ 0x0040, 0x2848, 0xa082, 0x94d0, 0x2071, 0x4e80, 0x0078, 0x284c, -+ 0xa082, 0x93c0, 0x2071, 0x4e40, 0x707a, 0x7176, 0x2138, 0x2001, -+ 0x0004, 0x7066, 0x7083, 0x000f, 0x71d4, 0xc1dc, 0x71d6, 0x1078, -+ 0x261c, 0x0078, 0x2875, 0xd1fc, 0x00c0, 0x2862, 0x2071, 0x4e40, -+ 0x0078, 0x2864, 0x2071, 0x4e80, 0x6020, 0xc0dd, 0x6022, 0x7176, -+ 0x2138, 0x2c00, 0x707e, 0x2001, 0x0006, 0x7066, 0x7083, 0x000f, -+ 0x71d4, 0xc1dc, 0x71d6, 0x1078, 0x261c, 0x2001, 0x0000, 0x0078, -+ 0x287b, 0x2001, 0x0001, 0x2091, 0x8001, 0xa005, 0x0e7f, 0x0c7f, -+ 0x007c, 0x2c04, 0xa005, 0x0040, 0x2898, 0x2060, 0x6010, 0xa306, -+ 0x00c0, 0x2895, 0x600c, 0xa206, 0x00c0, 0x2895, 0x6014, 0xa106, -+ 0x00c0, 0x2895, 0xa006, 0x0078, 0x289a, 0x6000, 0x0078, 0x2882, -+ 0xa085, 0x0001, 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0xd1bc, 0x00c0, -+ 0x28b3, 0x2079, 0x4e40, 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x28af, 0x2071, 0x0100, 0x0078, 0x28b7, 0x2071, -+ 0x0200, 0x0078, 0x28b7, 0x2079, 0x4e80, 0x2071, 0x0100, 0x7920, -+ 0xa18c, 0x000f, 0x70ec, 0xd0c4, 0x00c0, 0x28c1, 0x017f, 0x0078, -+ 0x28dc, 0x810b, 0x810b, 0x810b, 0x810b, 0x007f, 0xd0bc, 0x00c0, -+ 0x28d9, 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, 0x0040, -+ 0x28d5, 0xa18d, 0x0f00, 0x0078, 0x28db, 0xa18d, 0x0f00, 0x0078, -+ 0x28db, 0xa18d, 0x0800, 0x2104, 0x0e7f, 0x0f7f, 0x007c, 0x0e7e, -+ 0x2001, 0x4e01, 0x2004, 0xd0ac, 0x00c0, 0x295c, 0x68e4, 0xd0ac, -+ 0x0040, 0x295c, 0xa084, 0x0006, 0x00c0, 0x295c, 0x6014, 0xd0fc, -+ 0x00c0, 0x28f6, 0x2071, 0x52c0, 0x0078, 0x28f8, 0x2071, 0x5340, -+ 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xae70, 0x7004, -+ 0xa084, 0x000a, 0x00c0, 0x295c, 0x7108, 0xa194, 0xff00, 0x0040, -+ 0x295c, 0xa18c, 0x00ff, 0x2001, 0x000a, 0xa106, 0x0040, 0x292b, -+ 0x2001, 0x000c, 0xa106, 0x0040, 0x292f, 0x2001, 0x0012, 0xa106, -+ 0x0040, 0x2933, 0x2001, 0x0014, 0xa106, 0x0040, 0x2937, 0x2001, -+ 0x0019, 0xa106, 0x0040, 0x293b, 0x2001, 0x0032, 0xa106, 0x0040, -+ 0x293f, 0x0078, 0x2943, 0x2009, 0x000c, 0x0078, 0x2945, 0x2009, -+ 0x0012, 0x0078, 0x2945, 0x2009, 0x0014, 0x0078, 0x2945, 0x2009, -+ 0x0019, 0x0078, 0x2945, 0x2009, 0x0020, 0x0078, 0x2945, 0x2009, -+ 0x003f, 0x0078, 0x2945, 0x2011, 0x0000, 0x2100, 0xa205, 0x700a, -+ 0x2071, 0x4e00, 0x7004, 0xd0bc, 0x0040, 0x295c, 0x6014, 0xd0fc, -+ 0x00c0, 0x2957, 0x70ea, 0x2071, 0x4e40, 0x0078, 0x295a, 0x70ee, -+ 0x2071, 0x4e80, 0x701f, 0x000d, 0x0e7f, 0x007c, 0x2001, 0x4e05, -+ 0x2004, 0xd0e4, 0x00c0, 0x296a, 0x7804, 0xa084, 0xff1f, 0xa085, -+ 0x6340, 0x7806, 0x007c, 0x0068, 0x296b, 0x2091, 0x8000, 0x2071, -+ 0x0000, 0x007e, 0x7018, 0xd084, 0x00c0, 0x2972, 0x007f, 0x2071, -+ 0x0010, 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db, 0x080f, -+ 0x70df, 0x0000, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, -+ 0x0078, 0x2988, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x78a0, 0x708e, -+ 0x7592, 0x7496, 0x769a, 0x779e, 0xa594, 0x003f, 0xd4f4, 0x0040, -+ 0x299f, 0xa784, 0x007d, 0x00c0, 0x43cd, 0x1078, 0x296b, 0xa49c, -+ 0x000f, 0xa382, 0x0004, 0x0050, 0x29aa, 0xa3a6, 0x0007, 0x00c0, -+ 0x296b, 0x2418, 0x8507, 0xa084, 0x000f, 0x0079, 0x29af, 0x3028, -+ 0x3119, 0x3144, 0x33b6, 0x379f, 0x3819, 0x38ce, 0x395f, 0x3a4d, -+ 0x3b3c, 0x29c2, 0x29bf, 0x2df9, 0x2f1c, 0x3770, 0x29bf, 0x1078, -+ 0x296b, 0x007c, 0xa006, 0x0078, 0x29cc, 0x7808, 0xc08d, 0x780a, -+ 0xa006, 0x7002, 0x704e, 0x7046, 0x70d2, 0x7060, 0xa005, 0x00c0, -+ 0x2b32, 0x7064, 0xa084, 0x0007, 0x0079, 0x29d6, 0x29de, 0x2a51, -+ 0x2a5a, 0x2a65, 0x2a70, 0x2b18, 0x2a7b, 0x2a51, 0x7830, 0xd0bc, -+ 0x00c0, 0x29c1, 0x71d4, 0xd1bc, 0x00c0, 0x29c1, 0xd1b4, 0x00c0, -+ 0x2a2e, 0x70a4, 0xa086, 0x0001, 0x0040, 0x29c1, 0x70b4, 0xa06d, -+ 0x6800, 0xa065, 0xa055, 0x789b, 0x0010, 0x6b0c, 0x7baa, 0x6808, -+ 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886, 0x0001, 0x0040, -+ 0x2a04, 0x69bc, 0x7daa, 0x79aa, 0x68c0, 0xa04d, 0x6e1c, 0x2001, -+ 0x0010, 0x0078, 0x2c8c, 0x7060, 0xa005, 0x00c0, 0x29c1, 0x0c7e, -+ 0x0d7e, 0x70b4, 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, 0x0010, -+ 0x6b0c, 0x7baa, 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, -+ 0xa886, 0x0001, 0x0040, 0x2a27, 0x69bc, 0x7daa, 0x79aa, 0x68c0, -+ 0xa04d, 0x6e1c, 0x2001, 0x0020, 0x0078, 0x2c8c, 0x1078, 0x4360, -+ 0x00c0, 0x29c1, 0x781b, 0x005b, 0x70bc, 0xa06d, 0x68b4, 0x785a, -+ 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0x7808, 0xc08d, -+ 0x780a, 0x68bc, 0x7042, 0xc1b4, 0x71d6, 0x70b8, 0xa065, 0x68c0, -+ 0x705a, 0x7003, 0x0002, 0x2d00, 0x704e, 0xad80, 0x0009, 0x7046, -+ 0x007c, 0x1078, 0x4360, 0x00c0, 0x2a59, 0x781b, 0x0047, 0x7003, -+ 0x0004, 0x007c, 0x1078, 0x4360, 0x00c0, 0x2a64, 0x2011, 0x000c, -+ 0x1078, 0x2a8b, 0x7003, 0x0004, 0x007c, 0x1078, 0x4360, 0x00c0, -+ 0x2a6f, 0x2011, 0x0006, 0x1078, 0x2a8b, 0x7003, 0x0004, 0x007c, -+ 0x1078, 0x4360, 0x00c0, 0x2a7a, 0x2011, 0x000d, 0x1078, 0x2a8b, -+ 0x7003, 0x0004, 0x007c, 0x1078, 0x4360, 0x00c0, 0x2a8a, 0x2011, -+ 0x0006, 0x1078, 0x2a8b, 0x707c, 0x707f, 0x0000, 0x2068, 0x704e, -+ 0x7003, 0x0001, 0x007c, 0x7174, 0xc1fc, 0x8107, 0x7882, 0x789b, -+ 0x0010, 0xa286, 0x000c, 0x00c0, 0x2a9a, 0x7aaa, 0x2001, 0x0001, -+ 0x0078, 0x2aaf, 0xa18c, 0x001f, 0xa18d, 0x00c0, 0x79aa, 0xa286, -+ 0x000d, 0x0040, 0x2aa8, 0x7aaa, 0x2001, 0x0002, 0x0078, 0x2aaf, -+ 0x78ab, 0x0020, 0x7178, 0x79aa, 0x7aaa, 0x2001, 0x0004, 0x789b, -+ 0x0060, 0x78aa, 0x785b, 0x0004, 0x781b, 0x0116, 0x1078, 0x4383, -+ 0x7083, 0x000f, 0x70d4, 0xd0b4, 0x0040, 0x2acb, 0xc0b4, 0x70d6, -+ 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, -+ 0x8001, 0x601a, 0x0c7f, 0x007c, 0x7014, 0xa005, 0x00c0, 0x2ada, -+ 0x70d4, 0xd0b4, 0x0040, 0x2adb, 0x70b8, 0xac06, 0x00c0, 0x2adb, -+ 0x1078, 0x2aba, 0x007c, 0x017e, 0x71a4, 0xa186, 0x0001, 0x0040, -+ 0x2b0d, 0x0d7e, 0x027e, 0x2100, 0x2011, 0x0001, 0xa212, 0x70b4, -+ 0x2068, 0x6800, 0xac06, 0x0040, 0x2af4, 0x8211, 0x0040, 0x2b0b, -+ 0x1078, 0x2b0f, 0x0078, 0x2ae9, 0x0c7e, 0x2100, 0x2011, 0x0001, -+ 0xa212, 0x70b4, 0x2068, 0x6800, 0x2060, 0x6008, 0xa084, 0xfbef, -+ 0x600a, 0x8211, 0x0040, 0x2b08, 0x1078, 0x2b0f, 0x0078, 0x2afb, -+ 0x70a7, 0x0001, 0x0c7f, 0x027f, 0x0d7f, 0x017f, 0x007c, 0xade8, -+ 0x0005, 0x70ac, 0xad06, 0x00c0, 0x2b17, 0x70a8, 0x2068, 0x007c, -+ 0x1078, 0x4360, 0x00c0, 0x29c1, 0x707c, 0x2068, 0x7774, 0x1078, -+ 0x41fe, 0x2c50, 0x1078, 0x4442, 0x789b, 0x0010, 0x6814, 0xa084, -+ 0x001f, 0xc0bd, 0x78aa, 0x6e1c, 0x2041, 0x0001, 0x2001, 0x0004, -+ 0x0078, 0x2c92, 0x1078, 0x4360, 0x00c0, 0x29c1, 0x789b, 0x0010, -+ 0x7060, 0x2068, 0x6f14, 0x70d4, 0xd0b4, 0x0040, 0x2b4c, 0xc0b4, -+ 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, -+ 0x6018, 0x8001, 0x601a, 0x0c7f, 0x1078, 0x41fe, 0x2c50, 0x1078, -+ 0x4442, 0x6824, 0xa005, 0x0040, 0x2b5d, 0xa082, 0x0006, 0x0048, -+ 0x2b5b, 0x0078, 0x2b5d, 0x6827, 0x0005, 0x6814, 0xa084, 0x001f, -+ 0xc0bd, 0x78aa, 0x2031, 0x0020, 0x2041, 0x0001, 0x2001, 0x0003, -+ 0x0078, 0x2c92, 0xc28d, 0x72d6, 0x72c0, 0xa200, 0xa015, 0x7154, -+ 0x8108, 0xa12a, 0x0048, 0x2b75, 0x71c0, 0x2164, 0x6504, 0x85ff, -+ 0x00c0, 0x2b8c, 0x7156, 0x8421, 0x00c0, 0x2b70, 0x70d4, 0xd08c, -+ 0x0040, 0x2b88, 0x70d0, 0xa005, 0x00c0, 0x2b88, 0x70d3, 0x000a, -+ 0x007c, 0x2200, 0x0078, 0x2b7a, 0x70d4, 0xc08c, 0x70d6, 0x70d3, -+ 0x0000, 0x6034, 0xa005, 0x00c0, 0x2b89, 0x6708, 0xa784, 0x073f, -+ 0x0040, 0x2bbb, 0xd7d4, 0x00c0, 0x2b89, 0xa784, 0x0021, 0x00c0, -+ 0x2b89, 0xa784, 0x0002, 0x0040, 0x2bac, 0xa784, 0x0004, 0x0040, -+ 0x2b89, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0218, 0x00c0, 0x2b89, -+ 0xa784, 0x0100, 0x0040, 0x2bbb, 0x6018, 0xa005, 0x00c0, 0x2b89, -+ 0xa7bc, 0xfeff, 0x670a, 0x2568, 0x6823, 0x0000, 0x6e1c, 0xa684, -+ 0x000e, 0x6318, 0x0040, 0x2bcc, 0x601c, 0xa302, 0x0048, 0x2bcf, -+ 0x0040, 0x2bcf, 0x0078, 0x2b89, 0x83ff, 0x00c0, 0x2b89, 0x2d58, -+ 0x2c50, 0x7156, 0xd7bc, 0x00c0, 0x2bd8, 0x7028, 0x6022, 0x603a, -+ 0xc7bc, 0x670a, 0x68c0, 0xa065, 0xa04d, 0x6100, 0x2a60, 0x2041, -+ 0x0001, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0xd1fc, 0x0040, -+ 0x2bec, 0xd684, 0x0040, 0x2bee, 0xa39c, 0xffbf, 0xd6a4, 0x0040, -+ 0x2bf3, 0xa39d, 0x0020, 0xa684, 0x000e, 0x00c0, 0x2c3e, 0xc7a5, -+ 0x670a, 0x2c00, 0x68c6, 0x77a4, 0xa786, 0x0001, 0x00c0, 0x2c12, -+ 0x70d4, 0xd0b4, 0x00c0, 0x2c12, 0x7000, 0xa082, 0x0002, 0x00c8, -+ 0x2c12, 0x7830, 0xd0bc, 0x00c0, 0x2c12, 0x789b, 0x0010, 0x7baa, -+ 0x0078, 0x2c8a, 0x8739, 0x77a6, 0x2750, 0x77b0, 0xa7b0, 0x0005, -+ 0x70ac, 0xa606, 0x00c0, 0x2c1d, 0x76a8, 0x76b2, 0x2c3a, 0x8738, -+ 0x2d3a, 0x8738, 0x283a, 0x8738, 0x233a, 0x8738, 0x253a, 0x7830, -+ 0xd0bc, 0x0040, 0x2c35, 0x2091, 0x8000, 0x2091, 0x303d, 0x70d4, -+ 0xa084, 0x303d, 0x2091, 0x8000, 0x2090, 0xaad5, 0x0000, 0x0040, -+ 0x2c3d, 0x8421, 0x2200, 0x00c0, 0x2b6f, 0x007c, 0xd1dc, 0x0040, -+ 0x3e00, 0x2029, 0x0020, 0xd69c, 0x00c0, 0x2c4b, 0x8528, 0xd68c, -+ 0x00c0, 0x2c4b, 0x8528, 0x8840, 0x6f14, 0x610c, 0x8108, 0xa18c, -+ 0x00ff, 0x70cc, 0xa160, 0x2c64, 0x8cff, 0x0040, 0x2c6a, 0x6014, -+ 0xa706, 0x00c0, 0x2c53, 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x2c4e, -+ 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x2200, 0x8421, 0x00c0, -+ 0x2b6f, 0x007c, 0x2a60, 0x610e, 0x69be, 0x2c00, 0x68c6, 0x8840, -+ 0x6008, 0xc0d5, 0x600a, 0x77a4, 0xa786, 0x0001, 0x00c0, 0x2c12, -+ 0x70d4, 0xd0b4, 0x00c0, 0x2c12, 0x7000, 0xa082, 0x0002, 0x00c8, -+ 0x2c12, 0x7830, 0xd0bc, 0x00c0, 0x2c12, 0x789b, 0x0010, 0x7baa, -+ 0x7daa, 0x79aa, 0x2001, 0x0002, 0x007e, 0x6018, 0x8000, 0x601a, -+ 0x0078, 0x2c93, 0x007e, 0x2960, 0x6104, 0x2a60, 0xa184, 0x0018, -+ 0x0040, 0x2caf, 0xa184, 0x0010, 0x0040, 0x2ca2, 0x1078, 0x4011, -+ 0x00c0, 0x2cd4, 0xa184, 0x0008, 0x0040, 0x2caf, 0x69a0, 0xa184, -+ 0x0600, 0x00c0, 0x2caf, 0x1078, 0x3ef5, 0x0078, 0x2cd4, 0x69a0, -+ 0xa184, 0x1e00, 0x0040, 0x2cdf, 0xa184, 0x0800, 0x0040, 0x2cc8, -+ 0x0c7e, 0x2960, 0x6000, 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d, -+ 0x0010, 0x6106, 0x0c7f, 0x1078, 0x4011, 0x00c0, 0x2cd4, 0x69a0, -+ 0xa184, 0x0200, 0x0040, 0x2cd0, 0x1078, 0x3f54, 0x0078, 0x2cd4, -+ 0xa184, 0x0400, 0x00c0, 0x2cab, 0x69a0, 0xa184, 0x1000, 0x0040, -+ 0x2cdf, 0x6914, 0xa18c, 0xff00, 0x810f, 0x1078, 0x279f, 0x027f, -+ 0xa68c, 0x00e0, 0xa684, 0x0060, 0x0040, 0x2cec, 0xa086, 0x0060, -+ 0x00c0, 0x2cec, 0xa18d, 0x4000, 0xa18d, 0x0104, 0x69b6, 0x789b, -+ 0x0060, 0x2800, 0x78aa, 0x6818, 0xc0fd, 0x681a, 0xd6bc, 0x0040, -+ 0x2d07, 0xc0fc, 0x7087, 0x0000, 0xa08a, 0x000d, 0x0050, 0x2d05, -+ 0xa08a, 0x000c, 0x7186, 0x2001, 0x000c, 0x800c, 0x718a, 0x78aa, -+ 0x3518, 0x3340, 0x3428, 0x8000, 0x80ac, 0xaf80, 0x002b, 0x20a0, -+ 0x789b, 0x0000, 0xad80, 0x000b, 0x2098, 0x53a6, 0x23a8, 0x2898, -+ 0x25a0, 0xa286, 0x0020, 0x00c0, 0x2d3f, 0x70d4, 0xc0b5, 0x70d6, -+ 0x2c00, 0x70ba, 0x2d00, 0x70be, 0x6814, 0xc0fc, 0x8007, 0x7882, -+ 0xa286, 0x0002, 0x0040, 0x2d75, 0x70a4, 0x8000, 0x70a6, 0x74b4, -+ 0xa498, 0x0005, 0x70ac, 0xa306, 0x00c0, 0x2d37, 0x73a8, 0x73b6, -+ 0xa286, 0x0010, 0x0040, 0x29c1, 0x0d7f, 0x0c7f, 0x007c, 0x7000, -+ 0xa005, 0x00c0, 0x2d1d, 0xa286, 0x0002, 0x00c0, 0x2d8f, 0x1078, -+ 0x4360, 0x00c0, 0x2d1d, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x2091, -+ 0x8000, 0x781b, 0x005b, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, -+ 0x6898, 0x78d2, 0x78da, 0x2091, 0x8001, 0x7808, 0xc08d, 0x780a, -+ 0x127e, 0x0d7e, 0x0c7e, 0x70d4, 0xa084, 0x2700, 0x2090, 0x0c7f, -+ 0x0d7f, 0x127f, 0x2900, 0x705a, 0x68bc, 0x7042, 0x7003, 0x0002, -+ 0x2d00, 0x704e, 0xad80, 0x0009, 0x7046, 0x7830, 0xd0bc, 0x0040, -+ 0x2d81, 0x2091, 0x303d, 0x70d4, 0xa084, 0x303d, 0x2091, 0x8000, -+ 0x2090, 0x70a4, 0xa005, 0x00c0, 0x2d86, 0x007c, 0x8421, 0x0040, -+ 0x2d85, 0x7250, 0x70c0, 0xa200, 0xa015, 0x0078, 0x2b6f, 0xa286, -+ 0x0010, 0x00c0, 0x2dc0, 0x1078, 0x4360, 0x00c0, 0x2d1d, 0x6814, -+ 0xc0fc, 0x8007, 0x7882, 0x781b, 0x005b, 0x68b4, 0x785a, 0x6894, -+ 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0x7808, 0xc08d, 0x780a, -+ 0x70a4, 0x8000, 0x70a6, 0x74b4, 0xa490, 0x0005, 0x70ac, 0xa206, -+ 0x00c0, 0x2db3, 0x72a8, 0x72b6, 0x2900, 0x705a, 0x68bc, 0x7042, -+ 0x7003, 0x0002, 0x2d00, 0x704e, 0xad80, 0x0009, 0x7046, 0x007c, -+ 0x6bb4, 0xa39d, 0x2000, 0x7b5a, 0x6814, 0xc0fc, 0x8007, 0x7882, -+ 0x6b94, 0x7bd6, 0x7bde, 0x6e98, 0x7ed2, 0x7eda, 0x781b, 0x005b, -+ 0x2900, 0x705a, 0x7202, 0x7808, 0xc08d, 0x780a, 0x2300, 0xa605, -+ 0x0040, 0x2deb, 0x70d4, 0xa084, 0x2700, 0xa086, 0x2300, 0x00c0, -+ 0x2de5, 0x2009, 0x0000, 0x0078, 0x2de7, 0x2009, 0x0001, 0xa284, -+ 0x000f, 0x1079, 0x2def, 0xad80, 0x0009, 0x7046, 0x007c, 0x2df7, -+ 0x48bd, 0x48bd, 0x48aa, 0x48bd, 0x2df7, 0x2df7, 0x2df7, 0x1078, -+ 0x296b, 0x7808, 0xa084, 0xfffd, 0x780a, 0x1078, 0x295e, 0x0f7e, -+ 0x2079, 0x4e00, 0x78ac, 0x0f7f, 0xd084, 0x0040, 0x2e21, 0x7064, -+ 0xa086, 0x0001, 0x00c0, 0x2e0f, 0x7066, 0x0078, 0x2ef8, 0x7064, -+ 0xa086, 0x0005, 0x00c0, 0x2e1f, 0x707c, 0x2068, 0x681b, 0x0004, -+ 0x6817, 0x0000, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, 0x7067, -+ 0x0000, 0x70a7, 0x0000, 0x70a8, 0x70b2, 0x70b6, 0x1078, 0x2aba, -+ 0x157e, 0x2011, 0x0004, 0x7164, 0xa186, 0x0001, 0x0040, 0x2e41, -+ 0xa186, 0x0007, 0x00c0, 0x2e38, 0x701f, 0x0005, 0x0078, 0x2e41, -+ 0x701f, 0x0001, 0x7067, 0x0000, 0x70d4, 0xc0dd, 0x70d6, 0x0078, -+ 0x2e43, 0x7067, 0x0000, 0x2001, 0x4e0a, 0x2004, 0xa084, 0x00ff, -+ 0xa086, 0x0018, 0x0040, 0x2e53, 0x7018, 0x7016, 0xa005, 0x00c0, -+ 0x2e53, 0x70a7, 0x0001, 0x067e, 0x1078, 0x4586, 0x20a9, 0x0010, -+ 0x2039, 0x0000, 0x1078, 0x40f8, 0xa7b8, 0x0100, 0x00f0, 0x2e5a, -+ 0x067f, 0x7000, 0x0079, 0x2e64, 0x2e9e, 0x2e79, 0x2e79, 0x2e6e, -+ 0x2e9e, 0x2e9e, 0x2e9e, 0x2e6c, 0x1078, 0x296b, 0x7060, 0xa005, -+ 0x0040, 0x2e9e, 0xad06, 0x00c0, 0x2e79, 0x6800, 0x7062, 0x0078, -+ 0x2e8b, 0x6820, 0xd084, 0x00c0, 0x2e87, 0x6f14, 0x1078, 0x41fe, -+ 0x6008, 0xc0d4, 0x600a, 0x1078, 0x3dd0, 0x0078, 0x2e8b, 0x705c, -+ 0x2060, 0x6800, 0x6002, 0xa684, 0x5f00, 0x681e, 0x6818, 0xd0fc, -+ 0x0040, 0x2e93, 0x6a1a, 0x6817, 0x0000, 0x682b, 0x0000, 0x6820, -+ 0xa084, 0x00ff, 0xc09d, 0x6822, 0x1078, 0x202c, 0xb284, 0x0400, -+ 0x0040, 0x2ea6, 0x2021, 0x95d0, 0x0078, 0x2ea8, 0x2021, 0x94c0, -+ 0x1078, 0x2efd, 0xb284, 0x0400, 0x0040, 0x2eb2, 0x2021, 0x4e98, -+ 0x0078, 0x2eb4, 0x2021, 0x4e58, 0x1078, 0x2efd, 0x20a9, 0x0101, -+ 0xb284, 0x0400, 0x0040, 0x2ec0, 0x2021, 0x94d0, 0x0078, 0x2ec2, -+ 0x2021, 0x93c0, 0x1078, 0x2efd, 0x8420, 0x00f0, 0x2ec2, 0xb284, -+ 0x0300, 0x0040, 0x2ecf, 0x2061, 0x53c0, 0x0078, 0x2ed1, 0x2061, -+ 0x73c0, 0x2021, 0x0002, 0x20a9, 0x0100, 0x6110, 0x81ff, 0x0040, -+ 0x2eee, 0x6018, 0x017e, 0x007e, 0x2011, 0x4e02, 0x220c, 0xa102, -+ 0x2012, 0x007f, 0x017f, 0xa102, 0x0050, 0x2eee, 0x6012, 0x00c0, -+ 0x2eee, 0x2011, 0x4e04, 0x2204, 0xc0a5, 0x2012, 0x601b, 0x0000, -+ 0xace0, 0x0010, 0x00f0, 0x2ed5, 0x8421, 0x00c0, 0x2ed3, 0x157f, -+ 0x7003, 0x0000, 0x704f, 0x0000, 0x007c, 0x047e, 0x2404, 0xa005, -+ 0x0040, 0x2f18, 0x2068, 0x6800, 0x007e, 0x6a1a, 0x6817, 0x0000, -+ 0x682b, 0x0000, 0x68b4, 0xa084, 0x5f00, 0x681e, 0x6820, 0xa084, -+ 0x00ff, 0xc09d, 0x6822, 0x1078, 0x202c, 0x007f, 0x0078, 0x2eff, -+ 0x047f, 0x2023, 0x0000, 0x007c, 0xa282, 0x0003, 0x0050, 0x2f22, -+ 0x1078, 0x296b, 0x2300, 0x0079, 0x2f25, 0x2f28, 0x2fb3, 0x2fd0, -+ 0xa282, 0x0002, 0x0040, 0x2f2e, 0x1078, 0x296b, 0x7064, 0x7067, -+ 0x0000, 0x7083, 0x0000, 0x0079, 0x2f35, 0x2f3d, 0x2f3d, 0x2f3f, -+ 0x2f7f, 0x3e0c, 0x2f3d, 0x2f7f, 0x2f3d, 0x1078, 0x296b, 0x7774, -+ 0x1078, 0x40f8, 0x7774, 0xa7bc, 0x8f00, 0x1078, 0x41fe, 0x6018, -+ 0xa005, 0x0040, 0x2f76, 0xd7fc, 0x00c0, 0x2f52, 0x2021, 0x94c0, -+ 0x0078, 0x2f54, 0x2021, 0x95d0, 0x2009, 0x0005, 0x2011, 0x0010, -+ 0x1078, 0x2feb, 0x0040, 0x2f76, 0x157e, 0x20a9, 0x0101, 0xd7fc, -+ 0x00c0, 0x2f66, 0x2021, 0x93c0, 0x0078, 0x2f68, 0x2021, 0x94d0, -+ 0x047e, 0x2009, 0x0005, 0x2011, 0x0010, 0x1078, 0x2feb, 0x047f, -+ 0x0040, 0x2f75, 0x8420, 0x00f0, 0x2f68, 0x157f, 0x8738, 0xa784, -+ 0x001f, 0x00c0, 0x2f45, 0x0078, 0x29c5, 0x0078, 0x29c5, 0x7774, -+ 0x1078, 0x41fe, 0x6018, 0xa005, 0x0040, 0x2fb1, 0xd7fc, 0x00c0, -+ 0x2f8d, 0x2021, 0x94c0, 0x0078, 0x2f8f, 0x2021, 0x95d0, 0x2009, -+ 0x0005, 0x2011, 0x0020, 0x1078, 0x2feb, 0x0040, 0x2fb1, 0x157e, -+ 0x20a9, 0x0101, 0xd7fc, 0x00c0, 0x2fa1, 0x2021, 0x93c0, 0x0078, -+ 0x2fa3, 0x2021, 0x94d0, 0x047e, 0x2009, 0x0005, 0x2011, 0x0020, -+ 0x1078, 0x2feb, 0x047f, 0x0040, 0x2fb0, 0x8420, 0x00f0, 0x2fa3, -+ 0x157f, 0x0078, 0x29c5, 0x2200, 0x0079, 0x2fb6, 0x2fb9, 0x2fbb, -+ 0x2fbb, 0x1078, 0x296b, 0x2009, 0x0012, 0x7064, 0xa086, 0x0002, -+ 0x0040, 0x2fc4, 0x2009, 0x000e, 0x6818, 0xd0fc, 0x0040, 0x2fc9, -+ 0x691a, 0x7067, 0x0000, 0x70d4, 0xc0dd, 0x70d6, 0x0078, 0x430d, -+ 0x2200, 0x0079, 0x2fd3, 0x2fd8, 0x2fbb, 0x2fd6, 0x1078, 0x296b, -+ 0x1078, 0x4586, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3d7e, 0x1078, -+ 0x3ded, 0x6008, 0xa084, 0xfbef, 0x600a, 0x1078, 0x3d6f, 0x0040, -+ 0x3d7e, 0x0078, 0x29c5, 0x2404, 0xa005, 0x0040, 0x3024, 0x2068, -+ 0x2d04, 0x007e, 0x6814, 0xa706, 0x0040, 0x2ffa, 0x2d20, 0x007f, -+ 0x0078, 0x2fec, 0x007f, 0x2022, 0x691a, 0x6817, 0x0000, 0x682b, -+ 0x0000, 0x68b4, 0xa084, 0x5f00, 0x681e, 0x6820, 0xa084, 0x00ff, -+ 0xa205, 0x6822, 0x1078, 0x202c, 0x2021, 0x4e02, 0x241c, 0x8319, -+ 0x2322, 0x6010, 0x8001, 0x6012, 0x00c0, 0x301b, 0x2021, 0x4e04, -+ 0x2404, 0xc0a5, 0x2022, 0x6008, 0xa084, 0xf9ef, 0x600a, 0x1078, -+ 0x2adb, 0x1078, 0x3ded, 0x007c, 0xa085, 0x0001, 0x0078, 0x3023, -+ 0x2300, 0x0079, 0x302b, 0x3030, 0x302e, 0x30b0, 0x1078, 0x296b, -+ 0x78e4, 0xa005, 0x00d0, 0x3066, 0x3208, 0x007e, 0x2001, 0x4e04, -+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x3041, 0xa18c, 0x0300, 0x0078, -+ 0x3043, 0xa18c, 0x0400, 0x0040, 0x3049, 0x0018, 0x29c1, 0x0078, -+ 0x304b, 0x0028, 0x29c1, 0x2008, 0xa084, 0x0030, 0x00c0, 0x3052, -+ 0x0078, 0x3770, 0x78ec, 0xa084, 0x0003, 0x0040, 0x3050, 0x2100, -+ 0xa084, 0x0007, 0x0079, 0x305c, 0x3090, 0x309a, 0x3085, 0x3064, -+ 0x4355, 0x4355, 0x3064, 0x30a5, 0x1078, 0x296b, 0x7000, 0xa086, -+ 0x0004, 0x00c0, 0x3080, 0x7064, 0xa086, 0x0002, 0x00c0, 0x3076, -+ 0x2011, 0x0002, 0x2019, 0x0000, 0x0078, 0x2f1c, 0x7064, 0xa086, -+ 0x0006, 0x0040, 0x3070, 0x7064, 0xa086, 0x0004, 0x0040, 0x3070, -+ 0x79e4, 0x2001, 0x0003, 0x0078, 0x33fa, 0x6818, 0xd0fc, 0x0040, -+ 0x308b, 0x681b, 0x001d, 0x1078, 0x40c8, 0x781b, 0x0064, 0x007c, -+ 0x6818, 0xd0fc, 0x0040, 0x3096, 0x681b, 0x001d, 0x1078, 0x40c8, -+ 0x0078, 0x4331, 0x6818, 0xd0fc, 0x0040, 0x30a0, 0x681b, 0x001d, -+ 0x1078, 0x40c8, 0x781b, 0x00f8, 0x007c, 0x6818, 0xd0fc, 0x0040, -+ 0x30ab, 0x681b, 0x001d, 0x1078, 0x40c8, 0x781b, 0x00c8, 0x007c, -+ 0xa584, 0x000f, 0x00c0, 0x30cf, 0x1078, 0x295e, 0x7000, 0x0079, -+ 0x30b9, 0x29c5, 0x30c1, 0x30c3, 0x3d7e, 0x3d7e, 0x3d7e, 0x30c1, -+ 0x30c1, 0x1078, 0x296b, 0x1078, 0x3ded, 0x6008, 0xa084, 0xfbef, -+ 0x600a, 0x1078, 0x3d6f, 0x0040, 0x3d7e, 0x0078, 0x29c5, 0x78e4, -+ 0xa005, 0x00d0, 0x3066, 0x3208, 0x007e, 0x2001, 0x4e04, 0x2004, -+ 0xd0ec, 0x007f, 0x0040, 0x30e0, 0xa18c, 0x0300, 0x0078, 0x30e2, -+ 0xa18c, 0x0400, 0x0040, 0x30e8, 0x0018, 0x3066, 0x0078, 0x30ea, -+ 0x0028, 0x3066, 0x2008, 0xa084, 0x0030, 0x00c0, 0x30f2, 0x781b, -+ 0x005b, 0x007c, 0x78ec, 0xa084, 0x0003, 0x0040, 0x30ef, 0x2100, -+ 0xa184, 0x0007, 0x0079, 0x30fc, 0x310b, 0x310f, 0x3106, 0x3104, -+ 0x4355, 0x4355, 0x3104, 0x434f, 0x1078, 0x296b, 0x1078, 0x40d0, -+ 0x781b, 0x0064, 0x007c, 0x1078, 0x40d0, 0x0078, 0x4331, 0x1078, -+ 0x40d0, 0x781b, 0x00f8, 0x007c, 0x1078, 0x40d0, 0x781b, 0x00c8, -+ 0x007c, 0x2300, 0x0079, 0x311c, 0x3121, 0x311f, 0x3123, 0x1078, -+ 0x296b, 0x0078, 0x395f, 0x681b, 0x0016, 0x78a3, 0x0000, 0x79e4, -+ 0xa184, 0x0030, 0x0040, 0x395f, 0x78ec, 0xa084, 0x0003, 0x0040, -+ 0x395f, 0xa184, 0x0100, 0x0040, 0x3127, 0xa184, 0x0007, 0x0079, -+ 0x3139, 0x3141, 0x310f, 0x3085, 0x430d, 0x4355, 0x4355, 0x430d, -+ 0x434f, 0x1078, 0x4319, 0x007c, 0xa282, 0x0005, 0x0050, 0x314a, -+ 0x1078, 0x296b, 0x2300, 0x0079, 0x314d, 0x3150, 0x3380, 0x338b, -+ 0x2200, 0x0079, 0x3153, 0x316d, 0x315a, 0x316d, 0x3158, 0x3363, -+ 0x1078, 0x296b, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa082, -+ 0x0020, 0x0048, 0x40b7, 0xa08a, 0x0004, 0x00c8, 0x40b7, 0x0079, -+ 0x3169, 0x40b7, 0x40b7, 0x40b7, 0x4061, 0x789b, 0x0018, 0x79a8, -+ 0xa184, 0x0080, 0x0040, 0x317e, 0x0078, 0x40b7, 0x7000, 0xa005, -+ 0x00c0, 0x3174, 0x2011, 0x0004, 0x0078, 0x3b4a, 0xa184, 0x00ff, -+ 0xa08a, 0x0010, 0x00c8, 0x40b7, 0x0079, 0x3186, 0x3198, 0x3196, -+ 0x31ad, 0x31b1, 0x3284, 0x40b7, 0x40b7, 0x3286, 0x40b7, 0x40b7, -+ 0x335f, 0x335f, 0x40b7, 0x40b7, 0x40b7, 0x3361, 0x1078, 0x296b, -+ 0xd6e4, 0x0040, 0x31a3, 0x2001, 0x0300, 0x8000, 0x8000, 0x783a, -+ 0x781b, 0x00c3, 0x007c, 0x6818, 0xd0fc, 0x0040, 0x31ab, 0x681b, -+ 0x001d, 0x0078, 0x319b, 0x0078, 0x430d, 0x681b, 0x001d, 0x0078, -+ 0x40c1, 0x6920, 0x6922, 0xa684, 0x1800, 0x00c0, 0x3216, 0x6820, -+ 0xd084, 0x00c0, 0x321c, 0x6818, 0xa086, 0x0008, 0x00c0, 0x31c2, -+ 0x681b, 0x0000, 0xd6d4, 0x0040, 0x3281, 0xd6bc, 0x0040, 0x3202, -+ 0x7087, 0x0000, 0x6818, 0xa084, 0x003f, 0xa08a, 0x000d, 0x0050, -+ 0x3202, 0xa08a, 0x000c, 0x7186, 0x2001, 0x000c, 0x800c, 0x718a, -+ 0x789b, 0x0061, 0x78aa, 0x157e, 0x137e, 0x147e, 0x017e, 0x3208, -+ 0xa18c, 0x0300, 0x0040, 0x31f4, 0x007e, 0x2001, 0x4e04, 0x2004, -+ 0xd0ec, 0x007f, 0x0040, 0x31f0, 0x20a1, 0x012b, 0x0078, 0x31f6, -+ 0x20a1, 0x022b, 0x0078, 0x31f6, 0x20a1, 0x012b, 0x017f, 0x789b, -+ 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, -+ 0x137f, 0x157f, 0x6038, 0xa005, 0x00c0, 0x3211, 0x681c, 0xa084, -+ 0x000e, 0x0040, 0x40c1, 0x1078, 0x40d7, 0x782b, 0x3008, 0x0078, -+ 0x3213, 0x8001, 0x603a, 0x781b, 0x0067, 0x007c, 0xd6e4, 0x0040, -+ 0x321c, 0x781b, 0x0079, 0x007c, 0xa684, 0x0060, 0x0040, 0x327e, -+ 0xd6dc, 0x0040, 0x327e, 0xd6fc, 0x00c0, 0x3228, 0x0078, 0x323f, -+ 0xc6fc, 0x7e5a, 0x6eb6, 0x7adc, 0x79d8, 0x78d0, 0x801b, 0x00c8, -+ 0x3232, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, -+ 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0xd6f4, -+ 0x0040, 0x3245, 0xc6f4, 0x7e5a, 0x6eb6, 0x7000, 0xa086, 0x0003, -+ 0x00c0, 0x3253, 0x007e, 0x1078, 0x4586, 0x1078, 0x48bd, 0x007f, -+ 0x781b, 0x0076, 0x007c, 0xa006, 0x1078, 0x49c3, 0x6ab0, 0x69ac, -+ 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0040, 0x3262, 0x2200, 0xa422, -+ 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x7cda, 0x6ba6, 0x7bd6, 0x7bde, -+ 0x2300, 0xa405, 0x00c0, 0x3272, 0xc6f5, 0x7e5a, 0x6eb6, 0x781b, -+ 0x0076, 0x007c, 0x781b, 0x0076, 0x2200, 0xa115, 0x00c0, 0x327b, -+ 0x1078, 0x48bd, 0x007c, 0x1078, 0x48f5, 0x007c, 0x781b, 0x0079, -+ 0x007c, 0x781b, 0x0067, 0x007c, 0x1078, 0x296b, 0x0078, 0x32d2, -+ 0x6920, 0xd1c4, 0x0040, 0x329b, 0xc1c4, 0x6922, 0x0c7e, 0x7058, -+ 0x2060, 0x6000, 0xc0e4, 0x6002, 0x6004, 0xa084, 0xfff5, 0x6006, -+ 0x0c7f, 0x0078, 0x32c6, 0xd1cc, 0x0040, 0x32c6, 0xc1cc, 0x6922, -+ 0x0c7e, 0x7058, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x6004, 0xc0a4, -+ 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xd19c, 0x0040, 0x32c6, 0x1078, -+ 0x41fa, 0x1078, 0x3ef5, 0x88ff, 0x0040, 0x32c6, 0x789b, 0x0060, -+ 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x32c3, -+ 0x781b, 0x0064, 0x007c, 0x781b, 0x0078, 0x007c, 0x7e58, 0xd6d4, -+ 0x00c0, 0x32cd, 0x781b, 0x0067, 0x007c, 0x781b, 0x0079, 0x007c, -+ 0x0078, 0x40bc, 0x2019, 0x0000, 0x7990, 0xa18c, 0x0007, 0x00c0, -+ 0x32e0, 0x6820, 0xa084, 0x0100, 0x0040, 0x32d0, 0x2009, 0x0008, -+ 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, 0x00c0, -+ 0x32fc, 0x2300, 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, 0x32f4, -+ 0x0048, 0x32f4, 0x0078, 0x32f6, 0x0078, 0x3288, 0x24a8, 0x7aa8, -+ 0x00f0, 0x32f6, 0x0078, 0x32e2, 0xa284, 0x00f0, 0xa086, 0x0020, -+ 0x00c0, 0x3350, 0x8318, 0x8318, 0x2300, 0xa102, 0x0040, 0x330c, -+ 0x0048, 0x330c, 0x0078, 0x334d, 0xa286, 0x0023, 0x0040, 0x32d0, -+ 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58, 0xa684, 0xfff1, 0xc0a5, -+ 0x2030, 0x7e5a, 0x6008, 0xc0a5, 0x600a, 0x0c7e, 0x7058, 0x2060, -+ 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd1a4, 0x0040, 0x332d, 0x1078, -+ 0x41fa, 0x1078, 0x4011, 0x0078, 0x333b, 0x0c7e, 0x7058, 0x2060, -+ 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd19c, 0x0040, 0x32c6, 0x1078, -+ 0x41fa, 0x1078, 0x3ef5, 0x88ff, 0x0040, 0x32c6, 0x789b, 0x0060, -+ 0x2800, 0x78aa, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x334a, 0x781b, -+ 0x0064, 0x007c, 0x781b, 0x0078, 0x007c, 0x7aa8, 0x0078, 0x32e2, -+ 0x8318, 0x2300, 0xa102, 0x0040, 0x3359, 0x0048, 0x3359, 0x0078, -+ 0x32e2, 0xa284, 0x0080, 0x00c0, 0x40c1, 0x0078, 0x40bc, 0x0078, -+ 0x40c1, 0x0078, 0x40b7, 0x7058, 0xa04d, 0x789b, 0x0018, 0x78a8, -+ 0xa084, 0x00ff, 0xa08e, 0x0001, 0x0040, 0x3370, 0x1078, 0x296b, -+ 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, -+ 0x00c8, 0x40b7, 0x0079, 0x337c, 0x40b7, 0x3e46, 0x40b7, 0x3fb9, -+ 0xa282, 0x0000, 0x00c0, 0x3386, 0x1078, 0x296b, 0x1078, 0x40c8, -+ 0x781b, 0x0078, 0x007c, 0xa282, 0x0003, 0x00c0, 0x3391, 0x1078, -+ 0x296b, 0xd4fc, 0x00c0, 0x33b1, 0x7064, 0xa005, 0x0040, 0x339a, -+ 0x1078, 0x296b, 0x6f14, 0x7776, 0xa7bc, 0x8f00, 0x1078, 0x41fe, -+ 0x6008, 0xa085, 0x0021, 0x600a, 0x8738, 0xa784, 0x001f, 0x00c0, -+ 0x339e, 0x1078, 0x40cc, 0x7067, 0x0002, 0x701f, 0x0009, 0x0078, -+ 0x33b3, 0x1078, 0x40db, 0x781b, 0x0078, 0x007c, 0xa282, 0x0004, -+ 0x0050, 0x33bc, 0x1078, 0x296b, 0x2300, 0x0079, 0x33bf, 0x33c2, -+ 0x3582, 0x35c5, 0xa286, 0x0003, 0x0040, 0x33fa, 0x7200, 0x7cd8, -+ 0x7ddc, 0x7fd0, 0x71d4, 0xd1bc, 0x00c0, 0x33f2, 0xd1b4, 0x0040, -+ 0x33f2, 0x7868, 0xa084, 0x00ff, 0x00c0, 0x33f2, 0xa282, 0x0002, -+ 0x00c8, 0x33f2, 0x0d7e, 0x783b, 0x8300, 0x781b, 0x004c, 0x70bc, -+ 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, -+ 0x78da, 0xc1b4, 0x71d6, 0x7003, 0x0030, 0x0d7f, 0x2001, 0x0000, -+ 0x0078, 0x33fe, 0x783b, 0x1300, 0x781b, 0x004a, 0x2001, 0x0000, -+ 0x0078, 0x33fe, 0x7200, 0x7cd8, 0x7ddc, 0x7fd0, 0x704a, 0x68a0, -+ 0xd0ec, 0x0040, 0x3406, 0x6008, 0xc08d, 0x600a, 0xa284, 0x000f, -+ 0x0079, 0x340a, 0x3562, 0x3417, 0x3414, 0x36c8, 0x3754, 0x29c5, -+ 0x3412, 0x3412, 0x1078, 0x296b, 0x6008, 0xc0d4, 0x600a, 0xd6e4, -+ 0x0040, 0x341f, 0x7048, 0xa086, 0x0014, 0x00c0, 0x343f, 0x1078, -+ 0x4586, 0x2009, 0x0000, 0x6818, 0xd0fc, 0x0040, 0x3428, 0x7048, -+ 0xa086, 0x0014, 0x0040, 0x3439, 0x6818, 0xa086, 0x0008, 0x00c0, -+ 0x351a, 0x7858, 0xd09c, 0x0040, 0x351a, 0x6820, 0xd0ac, 0x0040, -+ 0x351a, 0x681b, 0x0014, 0x2009, 0x0002, 0x0078, 0x347e, 0x7868, -+ 0xa08c, 0x00ff, 0x0040, 0x347e, 0xa186, 0x0008, 0x00c0, 0x3455, -+ 0x6008, 0xc0a4, 0x600a, 0x1078, 0x3d6f, 0x0040, 0x347e, 0x1078, -+ 0x3ded, 0x1078, 0x4586, 0x0078, 0x3466, 0xa186, 0x0028, 0x00c0, -+ 0x347e, 0x6018, 0xa005, 0x0040, 0x3448, 0x8001, 0x0040, 0x3448, -+ 0x8001, 0x0040, 0x3448, 0x601e, 0x0078, 0x3448, 0x6820, 0xd084, -+ 0x0040, 0x29c5, 0xc084, 0x6822, 0x1078, 0x2acc, 0x705c, 0x0c7e, -+ 0x2060, 0x6800, 0x6002, 0x0c7f, 0x6004, 0x6802, 0xa005, 0x2d00, -+ 0x00c0, 0x347b, 0x6002, 0x6006, 0x0078, 0x29c5, 0x017e, 0x81ff, -+ 0x00c0, 0x34c8, 0x7000, 0xa086, 0x0030, 0x0040, 0x34c8, 0x71d4, -+ 0xd1bc, 0x00c0, 0x34c8, 0xd1b4, 0x00c0, 0x34af, 0x7060, 0xa005, -+ 0x00c0, 0x34c8, 0x70a4, 0xa086, 0x0001, 0x0040, 0x34c8, 0x7003, -+ 0x0000, 0x047e, 0x057e, 0x077e, 0x067e, 0x0c7e, 0x0d7e, 0x1078, -+ 0x29ee, 0x0d7f, 0x0c7f, 0x067f, 0x077f, 0x057f, 0x047f, 0x71d4, -+ 0xd1b4, 0x00c0, 0x34c8, 0x7003, 0x0040, 0x0078, 0x34c8, 0x1078, -+ 0x4360, 0x00c0, 0x34c8, 0x781b, 0x005b, 0x0d7e, 0x70bc, 0xa06d, -+ 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, -+ 0xc1b4, 0x71d6, 0x7003, 0x0030, 0x7808, 0xc08d, 0x780a, 0x0d7f, -+ 0x1078, 0x35ff, 0x017f, 0x81ff, 0x0040, 0x351a, 0xa684, 0xdf00, -+ 0x681e, 0x682b, 0x0000, 0x6f14, 0xa186, 0x0002, 0x00c0, 0x351b, -+ 0x6818, 0xa086, 0x0014, 0x00c0, 0x34e4, 0x2008, 0xd6e4, 0x0040, -+ 0x34e4, 0x7868, 0xa08c, 0x00ff, 0x1078, 0x2aba, 0x1078, 0x2adb, -+ 0x6820, 0xd0dc, 0x00c0, 0x351b, 0x8717, 0xa294, 0x000f, 0x8213, -+ 0x8213, 0x8213, 0xb284, 0x0300, 0x0040, 0x34fa, 0xa290, 0x52c0, -+ 0x0078, 0x34fc, 0xa290, 0x5340, 0xa290, 0x0000, 0x221c, 0xd3c4, -+ 0x00c0, 0x3504, 0x0078, 0x350a, 0x8210, 0x2204, 0xa085, 0x0018, -+ 0x2012, 0x8211, 0xd3d4, 0x0040, 0x3515, 0x68a0, 0xd0c4, 0x00c0, -+ 0x3515, 0x1078, 0x3679, 0x0078, 0x29c5, 0x6008, 0xc08d, 0x600a, -+ 0x0078, 0x351b, 0x692a, 0x6916, 0x6818, 0xd0fc, 0x0040, 0x3522, -+ 0x7048, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x6410, 0x84ff, 0x0040, -+ 0x3537, 0x2009, 0x4e02, 0x2104, 0x8001, 0x200a, 0x8421, 0x6412, -+ 0x00c0, 0x3537, 0x2021, 0x4e04, 0x2404, 0xc0a5, 0x2022, 0x6018, -+ 0xa005, 0x0040, 0x353f, 0x8001, 0x601a, 0x00c0, 0x3542, 0x6008, -+ 0xc0a4, 0x600a, 0x6820, 0xd084, 0x00c0, 0x354e, 0x6800, 0xa005, -+ 0x00c0, 0x354b, 0x6002, 0x6006, 0x0078, 0x3552, 0x705c, 0x2060, -+ 0x6800, 0x6002, 0x2061, 0x4e00, 0x6887, 0x0103, 0x2d08, 0x206b, -+ 0x0000, 0x6068, 0xa005, 0x616a, 0x0040, 0x3561, 0x2d02, 0x0078, -+ 0x3562, 0x616e, 0x7200, 0xa286, 0x0030, 0x0040, 0x3572, 0xa286, -+ 0x0040, 0x00c0, 0x29c5, 0x7003, 0x0002, 0x704c, 0x2068, 0x68c4, -+ 0x2060, 0x007c, 0x7003, 0x0002, 0x70bc, 0xa06d, 0x68bc, 0x7042, -+ 0x70b8, 0xa065, 0x68c0, 0x705a, 0x2d00, 0x704e, 0xad80, 0x0009, -+ 0x7046, 0x007c, 0xa282, 0x0004, 0x0048, 0x3588, 0x1078, 0x296b, -+ 0x2200, 0x0079, 0x358b, 0x358f, 0x35a0, 0x35ad, 0x35a0, 0xa586, -+ 0x1300, 0x0040, 0x35a0, 0xa586, 0x8300, 0x00c0, 0x3586, 0x7003, -+ 0x0000, 0x6018, 0x8001, 0x601a, 0x6008, 0xa084, 0xfbef, 0x600a, -+ 0x7000, 0xa086, 0x0005, 0x0040, 0x35aa, 0x1078, 0x40c8, 0x781b, -+ 0x0078, 0x007c, 0x781b, 0x0079, 0x007c, 0x7890, 0x8007, 0x8001, -+ 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, -+ 0xa186, 0x0003, 0x0040, 0x35c2, 0xa186, 0x0000, 0x0040, 0x35c2, -+ 0x0078, 0x40b7, 0x781b, 0x0079, 0x007c, 0x6820, 0xc095, 0x6822, -+ 0x82ff, 0x00c0, 0x35cf, 0x1078, 0x40c8, 0x0078, 0x35d6, 0x8211, -+ 0x0040, 0x35d4, 0x1078, 0x296b, 0x1078, 0x40db, 0x781b, 0x0078, -+ 0x007c, 0x1078, 0x4383, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x35fc, -+ 0x017e, 0x3208, 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, -+ 0x0040, 0x35ee, 0xa18c, 0x0300, 0x0078, 0x35f0, 0xa18c, 0x0400, -+ 0x017f, 0x0040, 0x35f7, 0x0018, 0x35fc, 0x0078, 0x35f9, 0x0028, -+ 0x35fc, 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0xa684, -+ 0x0060, 0x00c0, 0x3609, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, -+ 0x3678, 0xd6dc, 0x00c0, 0x3621, 0x68b4, 0xd0dc, 0x00c0, 0x3621, -+ 0x6998, 0x6a94, 0x692e, 0x6a32, 0x7048, 0xa005, 0x00c0, 0x361e, -+ 0x2200, 0xa105, 0x0040, 0x4586, 0x704b, 0x0015, 0x0078, 0x4586, -+ 0x007c, 0xd6ac, 0x0040, 0x3647, 0xd6f4, 0x0040, 0x362d, 0x682f, -+ 0x0000, 0x6833, 0x0000, 0x0078, 0x4586, 0x68b4, 0xa084, 0x4000, -+ 0xa635, 0xd6f4, 0x00c0, 0x3627, 0x7048, 0xa005, 0x00c0, 0x363a, -+ 0x704b, 0x0015, 0xd6dc, 0x00c0, 0x3643, 0x68b4, 0xd0dc, 0x0040, -+ 0x3643, 0x6ca8, 0x6da4, 0x6c2e, 0x6d32, 0x0078, 0x4586, 0xd6f4, -+ 0x0040, 0x3650, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x4586, -+ 0x68b4, 0xa084, 0x4800, 0xa635, 0xd6f4, 0x00c0, 0x364a, 0x7048, -+ 0xa005, 0x00c0, 0x365d, 0x704b, 0x0015, 0x2408, 0x2510, 0x2700, -+ 0x80fb, 0x00c8, 0x3664, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, -+ 0x0000, 0x692e, 0x6a32, 0x2100, 0xa205, 0x00c0, 0x3671, 0x0078, -+ 0x4586, 0x7000, 0xa086, 0x0006, 0x0040, 0x3678, 0x0078, 0x4586, -+ 0x007c, 0x6946, 0x6008, 0xc0cd, 0xd3cc, 0x0040, 0x3680, 0xc08d, -+ 0x600a, 0x6818, 0x683a, 0x681b, 0x0006, 0x688f, 0x0000, 0x6893, -+ 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942, 0x682f, 0x0003, 0x6833, -+ 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, 0x689b, 0x0020, 0x7000, -+ 0x0079, 0x369a, 0x29c5, 0x36ac, 0x36a4, 0x36a2, 0x36a2, 0x36a2, -+ 0x36a2, 0x36a2, 0x1078, 0x296b, 0x6820, 0xd084, 0x00c0, 0x36ac, -+ 0x1078, 0x3dd0, 0x0078, 0x36b2, 0x705c, 0x2c50, 0x2060, 0x6800, -+ 0x6002, 0x2a60, 0x3208, 0xa18c, 0x0300, 0x0040, 0x36bb, 0x2021, -+ 0x4e58, 0x0078, 0x36bd, 0x2021, 0x4e98, 0x2404, 0xa005, 0x0040, -+ 0x36c4, 0x2020, 0x0078, 0x36bd, 0x2d22, 0x206b, 0x0000, 0x007c, -+ 0x1078, 0x3dd7, 0x1078, 0x3ded, 0x6008, 0xc0cc, 0x600a, 0x682b, -+ 0x0000, 0x789b, 0x000e, 0x6f14, 0x6938, 0x691a, 0x6944, 0x6916, -+ 0x3208, 0xa18c, 0x0300, 0x0040, 0x36e1, 0x2009, 0x0000, 0x0078, -+ 0x36e3, 0x2009, 0x0001, 0x1078, 0x49f8, 0xd6dc, 0x0040, 0x36eb, -+ 0x691c, 0xc1ed, 0x691e, 0x6818, 0xd0fc, 0x0040, 0x36fa, 0x7868, -+ 0xa08c, 0x00ff, 0x0040, 0x36f8, 0x681b, 0x001e, 0x0078, 0x36fa, -+ 0x681b, 0x0000, 0xb284, 0x0300, 0x00c0, 0x3702, 0x2021, 0x4e98, -+ 0x0078, 0x3704, 0x2021, 0x4e58, 0x6800, 0x2022, 0x6a3c, 0x6940, -+ 0x6a32, 0x692e, 0x68c0, 0x2060, 0x6000, 0xd0a4, 0x0040, 0x3744, -+ 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x0d7e, 0x0f7e, -+ 0x157e, 0x147e, 0x2079, 0x4e00, 0x1078, 0x1dff, 0x147f, 0x157f, -+ 0x0f7f, 0x70cc, 0x2010, 0x2009, 0x0101, 0x027e, 0x2204, 0xa06d, -+ 0x0040, 0x3734, 0x6814, 0xa706, 0x0040, 0x3731, 0x6800, 0x0078, -+ 0x3727, 0x6820, 0xc0d5, 0x6822, 0x027f, 0x8210, 0x8109, 0x00c0, -+ 0x3725, 0x0d7f, 0x7067, 0x0003, 0x707f, 0x0000, 0x7776, 0x7083, -+ 0x000f, 0x71d4, 0xc1dc, 0x71d6, 0x6818, 0xa086, 0x0002, 0x00c0, -+ 0x3750, 0x6817, 0x0000, 0x682b, 0x0000, 0x681c, 0xc0ec, 0x681e, -+ 0x1078, 0x202c, 0x0078, 0x29c5, 0x7cd8, 0x7ddc, 0x7fd0, 0x1078, -+ 0x35ff, 0x682b, 0x0000, 0x789b, 0x000e, 0x6f14, 0x1078, 0x4387, -+ 0xa08c, 0x00ff, 0x6916, 0x6818, 0xd0fc, 0x0040, 0x3769, 0x7048, -+ 0x681a, 0xa68c, 0xdf00, 0x691e, 0x7067, 0x0000, 0x0078, 0x29c5, -+ 0x7000, 0xa005, 0x00c0, 0x3776, 0x0078, 0x29c5, 0xa006, 0x1078, -+ 0x4586, 0x6920, 0xd1ac, 0x00c0, 0x377f, 0x681b, 0x0014, 0xa68c, -+ 0xdf00, 0x691e, 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff, 0x6822, -+ 0x7000, 0x0079, 0x378b, 0x29c5, 0x3795, 0x3795, 0x3798, 0x3798, -+ 0x3798, 0x3793, 0x3793, 0x1078, 0x296b, 0x6818, 0x0078, 0x33fa, -+ 0x6008, 0xc0a4, 0x600a, 0x6817, 0x0000, 0x0078, 0x3d95, 0x2300, -+ 0x0079, 0x37a2, 0x37a5, 0x37a7, 0x3817, 0x1078, 0x296b, 0xd6fc, -+ 0x00c0, 0x37fe, 0x7000, 0xa00d, 0x0079, 0x37ae, 0x29c5, 0x37b8, -+ 0x37b8, 0x37e8, 0x37b8, 0x37fb, 0x37b6, 0x37b6, 0x1078, 0x296b, -+ 0xa684, 0x0060, 0x0040, 0x37e8, 0xa086, 0x0060, 0x00c0, 0x37e5, -+ 0xc6ac, 0xc6f4, 0xc6ed, 0x7e5a, 0x6eb6, 0x681c, 0xc0ac, 0x681e, -+ 0xa186, 0x0002, 0x0040, 0x37d7, 0x1078, 0x4586, 0x69ac, 0x68b0, -+ 0xa115, 0x0040, 0x37d7, 0x1078, 0x48f5, 0x0078, 0x37d9, 0x1078, -+ 0x48bd, 0x781b, 0x0079, 0x71d4, 0xd1b4, 0x00c0, 0x29c1, 0x70a4, -+ 0xa086, 0x0001, 0x00c0, 0x2a0b, 0x007c, 0xd6ec, 0x0040, 0x37c2, -+ 0x6818, 0xd0fc, 0x0040, 0x37fb, 0xd6f4, 0x00c0, 0x37f5, 0x681b, -+ 0x0015, 0x781b, 0x0079, 0x0078, 0x29c1, 0x681b, 0x0007, 0x682f, -+ 0x0000, 0x6833, 0x0000, 0x1078, 0x4319, 0x007c, 0xc6fc, 0x7e5a, -+ 0x7adc, 0x79d8, 0x78d0, 0x801b, 0x00c8, 0x3807, 0x8000, 0xa084, -+ 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, -+ 0x6b94, 0x2200, 0xa303, 0x68ae, 0x781b, 0x0079, 0x007c, 0x1078, -+ 0x296b, 0x2300, 0x0079, 0x381c, 0x3821, 0x3846, 0x38a6, 0x1078, -+ 0x296b, 0x7000, 0x0079, 0x3824, 0x382c, 0x382e, 0x3837, 0x382c, -+ 0x382c, 0x382c, 0x382c, 0x382c, 0x1078, 0x296b, 0x69ac, 0x68b0, -+ 0xa115, 0x0040, 0x3837, 0x1078, 0x48f5, 0x0078, 0x3839, 0x1078, -+ 0x48bd, 0x681c, 0xc0b4, 0x681e, 0x70d4, 0xd0b4, 0x00c0, 0x29c1, -+ 0x70a4, 0xa086, 0x0001, 0x00c0, 0x2a0b, 0x007c, 0xd6fc, 0x00c0, -+ 0x3896, 0x7000, 0xa00d, 0x0079, 0x384d, 0x29c5, 0x385d, 0x3857, -+ 0x388d, 0x385d, 0x3893, 0x3855, 0x3855, 0x1078, 0x296b, 0x6894, -+ 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684, 0x0060, 0x0040, -+ 0x388d, 0xa086, 0x0060, 0x00c0, 0x388a, 0xa6b4, 0xbfbf, 0xc6ed, -+ 0x7e5a, 0x6eb6, 0xa186, 0x0002, 0x0040, 0x3879, 0x1078, 0x4586, -+ 0x69ac, 0x68b0, 0xa115, 0x0040, 0x3879, 0x1078, 0x48f5, 0x0078, -+ 0x387b, 0x1078, 0x48bd, 0x781b, 0x0079, 0x681c, 0xc0b4, 0x681e, -+ 0x71d4, 0xd1b4, 0x00c0, 0x29c1, 0x70a4, 0xa086, 0x0001, 0x00c0, -+ 0x2a0b, 0x007c, 0xd6ec, 0x0040, 0x3867, 0x6818, 0xd0fc, 0x0040, -+ 0x3893, 0x681b, 0x0007, 0x781b, 0x00f9, 0x007c, 0xc6fc, 0x7e5a, -+ 0x7adc, 0x79d8, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, -+ 0xa303, 0x68ae, 0x79d2, 0x781b, 0x0079, 0x007c, 0xd6dc, 0x0040, -+ 0x38af, 0x782b, 0x3009, 0x781b, 0x0079, 0x0078, 0x29c1, 0x7884, -+ 0xc0ac, 0x7886, 0x78e4, 0xa084, 0x0008, 0x00c0, 0x38c2, 0xa484, -+ 0x0200, 0x0040, 0x38bc, 0xc6f5, 0xc6dd, 0x7e5a, 0x781b, 0x0079, -+ 0x0078, 0x29c1, 0x6820, 0xc095, 0x6822, 0x1078, 0x4292, 0xc6dd, -+ 0x1078, 0x40c8, 0x781b, 0x0078, 0x0078, 0x29c1, 0x2300, 0x0079, -+ 0x38d1, 0x38d4, 0x38d6, 0x38d8, 0x1078, 0x296b, 0x0078, 0x40c1, -+ 0xd6d4, 0x00c0, 0x3913, 0x79e4, 0xd1ac, 0x0040, 0x38e6, 0x78ec, -+ 0xa084, 0x0003, 0x0040, 0x38e6, 0x782b, 0x3009, 0x789b, 0x0060, -+ 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4, 0xd1ac, 0x0040, -+ 0x38f6, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x390f, 0x2001, 0x4e04, -+ 0x2004, 0xd0e4, 0x00c0, 0x390b, 0x6820, 0xd0c4, 0x0040, 0x390b, -+ 0x0c7e, 0x7058, 0x2060, 0x6004, 0xc09d, 0x6006, 0x6008, 0xa084, -+ 0x00ff, 0x600a, 0x0c7f, 0x2001, 0x0014, 0x0078, 0x33fa, 0xa184, -+ 0x0007, 0x0079, 0x3949, 0x7a90, 0xa294, 0x0007, 0x789b, 0x0060, -+ 0x79a8, 0x81ff, 0x0040, 0x3947, 0x789b, 0x0010, 0x7ba8, 0xa384, -+ 0x0001, 0x00c0, 0x393a, 0x7ba8, 0x7ba8, 0xa386, 0x0001, 0x00c0, -+ 0x392d, 0x2009, 0xfff7, 0x0078, 0x3933, 0xa386, 0x0003, 0x00c0, -+ 0x393a, 0x2009, 0xffef, 0x0c7e, 0x7058, 0x2060, 0x6004, 0xa104, -+ 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, -+ 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0078, -+ 0x430d, 0x3090, 0x309a, 0x3953, 0x3959, 0x3951, 0x3951, 0x430d, -+ 0x430d, 0x1078, 0x296b, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0078, -+ 0x4313, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0078, 0x430d, 0x79e4, -+ 0xa184, 0x0030, 0x0040, 0x3969, 0x78ec, 0xa084, 0x0003, 0x00c0, -+ 0x399d, 0x7000, 0xa086, 0x0004, 0x00c0, 0x3983, 0x7064, 0xa086, -+ 0x0002, 0x00c0, 0x3979, 0x2011, 0x0002, 0x2019, 0x0000, 0x0078, -+ 0x2f1c, 0x7064, 0xa086, 0x0006, 0x0040, 0x3973, 0x7064, 0xa086, -+ 0x0004, 0x0040, 0x3973, 0x7000, 0xa086, 0x0000, 0x0040, 0x29c1, -+ 0x6920, 0xa184, 0x0420, 0x0040, 0x3992, 0xc1d4, 0x6922, 0x6818, -+ 0x0078, 0x33fa, 0x6818, 0xa08e, 0x0002, 0x0040, 0x399b, 0xc0fd, -+ 0x681a, 0x2001, 0x0014, 0x0078, 0x33fa, 0xa184, 0x0007, 0x0079, -+ 0x39a1, 0x430d, 0x430d, 0x39a9, 0x430d, 0x4355, 0x4355, 0x430d, -+ 0x430d, 0xd6bc, 0x0040, 0x39eb, 0x7184, 0x81ff, 0x0040, 0x39eb, -+ 0xa182, 0x000d, 0x00d0, 0x39b8, 0x7087, 0x0000, 0x0078, 0x39bd, -+ 0xa182, 0x000c, 0x7086, 0x2009, 0x000c, 0x789b, 0x0061, 0x79aa, -+ 0x157e, 0x137e, 0x147e, 0x7088, 0x8114, 0xa210, 0x728a, 0xa080, -+ 0x000b, 0xad00, 0x2098, 0xb284, 0x0300, 0x0040, 0x39df, 0x007e, -+ 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x39db, 0x20a1, -+ 0x012b, 0x0078, 0x39e1, 0x20a1, 0x022b, 0x0078, 0x39e1, 0x20a1, -+ 0x012b, 0x789b, 0x0000, 0x8108, 0x81ac, 0x53a6, 0x147f, 0x137f, -+ 0x157f, 0x0078, 0x4313, 0xd6d4, 0x00c0, 0x3a3f, 0x6820, 0xd084, -+ 0x0040, 0x4313, 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x39fd, -+ 0xa086, 0x0060, 0x00c0, 0x39fd, 0xc1f5, 0xc194, 0x795a, 0x69b6, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061, 0x6818, 0xc0fd, -+ 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040, 0x3e06, 0xa18c, 0x00f8, -+ 0x00c0, 0x3e06, 0x157e, 0x137e, 0x147e, 0x017e, 0x3208, 0xa18c, -+ 0x0300, 0x0040, 0x3a2b, 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x3a27, 0x20a1, 0x012b, 0x0078, 0x3a2d, 0x20a1, -+ 0x022b, 0x0078, 0x3a2d, 0x20a1, 0x012b, 0x017f, 0x789b, 0x0000, -+ 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, -+ 0x157f, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x0078, 0x4313, 0x6818, -+ 0xd0fc, 0x0040, 0x3a45, 0x681b, 0x0008, 0x6820, 0xc0ad, 0x6822, -+ 0x1078, 0x40d0, 0x781b, 0x00ea, 0x007c, 0x2300, 0x0079, 0x3a50, -+ 0x3a55, 0x3b2d, 0x3a53, 0x1078, 0x296b, 0x7cd8, 0x7ddc, 0x7fd0, -+ 0x82ff, 0x00c0, 0x3a7e, 0x7200, 0xa286, 0x0003, 0x0040, 0x33c7, -+ 0x71d4, 0xd1bc, 0x00c0, 0x3a81, 0xd1b4, 0x0040, 0x3a81, 0x0d7e, -+ 0x783b, 0x8800, 0x781b, 0x004c, 0x70bc, 0xa06d, 0x68b4, 0xc0a5, -+ 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0xc1b4, -+ 0x71d6, 0x7003, 0x0030, 0x0d7f, 0x0078, 0x3a85, 0x7200, 0x0078, -+ 0x3a85, 0x783b, 0x1800, 0x781b, 0x004a, 0xa284, 0x000f, 0x0079, -+ 0x3a89, 0x3b18, 0x3ac7, 0x3a93, 0x33f6, 0x3a91, 0x3b18, 0x3a91, -+ 0x3a91, 0x1078, 0x296b, 0x681c, 0xd0ec, 0x0040, 0x3a9a, 0x6008, -+ 0xc08d, 0x600a, 0x6920, 0xc185, 0x6922, 0x6800, 0x6006, 0xa005, -+ 0x00c0, 0x3aa3, 0x6002, 0x6008, 0xc0d4, 0x600a, 0x681c, 0xa084, -+ 0x000e, 0x00c0, 0x3ab7, 0xb284, 0x0300, 0x0040, 0x3ab3, 0x2009, -+ 0x94c0, 0x0078, 0x3abc, 0x2009, 0x95d0, 0x0078, 0x3abc, 0x7030, -+ 0x68ba, 0x7140, 0x70cc, 0xa108, 0x2104, 0x6802, 0x2d0a, 0x715e, -+ 0xd6dc, 0x00c0, 0x3ac7, 0xc6fc, 0x6eb6, 0x0078, 0x3b18, 0x6eb6, -+ 0xa684, 0x0060, 0x00c0, 0x3ad1, 0xa684, 0x7fff, 0x68b6, 0x0078, -+ 0x3b18, 0xd6dc, 0x00c0, 0x3adf, 0xa684, 0x7fff, 0x68b6, 0x6894, -+ 0x68a6, 0x6898, 0x68aa, 0x1078, 0x4586, 0x0078, 0x3b18, 0xd6ac, -+ 0x0040, 0x3aeb, 0xa006, 0x1078, 0x4586, 0x2408, 0x2510, 0x69aa, -+ 0x6aa6, 0x0078, 0x3afb, 0x2408, 0x2510, 0x2700, 0x801b, 0x00c8, -+ 0x3af2, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x69aa, -+ 0x6aa6, 0x1078, 0x4586, 0xd6fc, 0x0040, 0x3b18, 0xa684, 0x7fff, -+ 0x68b6, 0x2510, 0x2408, 0xd6ac, 0x00c0, 0x3b10, 0x2700, 0x801b, -+ 0x00c8, 0x3b0b, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, -+ 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, -+ 0x7000, 0xa086, 0x0030, 0x00c0, 0x29c5, 0x7003, 0x0002, 0x70bc, -+ 0xa06d, 0x68bc, 0x7042, 0x70b8, 0xa065, 0x68c0, 0x705a, 0x2d00, -+ 0x704e, 0xad80, 0x0009, 0x7046, 0x007c, 0xa586, 0x8800, 0x00c0, -+ 0x3b3a, 0x7003, 0x0000, 0x6018, 0x8001, 0x601a, 0x6008, 0xa084, -+ 0xfbef, 0x600a, 0x0078, 0x40c1, 0x7047, 0x0000, 0xa282, 0x0006, -+ 0x0050, 0x3b44, 0x1078, 0x296b, 0x2300, 0x0079, 0x3b47, 0x3b4a, -+ 0x3b5c, 0x3b68, 0x2200, 0x0079, 0x3b4d, 0x3b53, 0x40c1, 0x3b55, -+ 0x3b53, 0x3ba2, 0x3bf7, 0x1078, 0x296b, 0x7a80, 0xa294, 0x0f00, -+ 0x1078, 0x3c81, 0x0078, 0x40b7, 0x1078, 0x3b79, 0x0079, 0x3b60, -+ 0x40c1, 0x3b66, 0x3b66, 0x3ba2, 0x3b66, 0x40c1, 0x1078, 0x296b, -+ 0x1078, 0x3b79, 0x0079, 0x3b6c, 0x3b74, 0x3b72, 0x3b72, 0x3b74, -+ 0x3b72, 0x3b74, 0x1078, 0x296b, 0x1078, 0x40db, 0x781b, 0x0078, -+ 0x007c, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3b8a, 0x1078, 0x3ded, -+ 0x0078, 0x3b84, 0x1078, 0x4586, 0x6008, 0xa084, 0xfbef, 0x600a, -+ 0x0078, 0x3b8f, 0x7000, 0xa086, 0x0003, 0x0040, 0x3b82, 0x7003, -+ 0x0005, 0xb284, 0x0300, 0x0040, 0x3b99, 0x2001, 0x95e0, 0x0078, -+ 0x3b9b, 0x2001, 0x9612, 0x2068, 0x704e, 0xad80, 0x0009, 0x7046, -+ 0x2200, 0x007c, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3bb4, 0x70d4, -+ 0xc0b5, 0x70d6, 0x2c00, 0x70ba, 0x2d00, 0x70be, 0x0078, 0x3bb9, -+ 0x1078, 0x4586, 0x0078, 0x3bb9, 0x7000, 0xa086, 0x0003, 0x0040, -+ 0x3bb0, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, -+ 0x7ca8, 0xa484, 0x001f, 0xa215, 0x2069, 0x94c0, 0xb284, 0x0300, -+ 0x00c0, 0x3bcd, 0xc2fd, 0x2069, 0x95d0, 0x2d04, 0x2d08, 0x715e, -+ 0xa06d, 0x0040, 0x3bda, 0x6814, 0xa206, 0x0040, 0x3bdc, 0x6800, -+ 0x0078, 0x3bce, 0x1078, 0x3c81, 0x6eb4, 0x7e5a, 0x6920, 0xa184, -+ 0x0c00, 0x0040, 0x3cab, 0x7064, 0xa086, 0x0006, 0x00c0, 0x3bee, -+ 0x7074, 0xa206, 0x00c0, 0x3bee, 0x7066, 0x707e, 0x681b, 0x0005, -+ 0xc1ad, 0xc1d4, 0x6922, 0x1078, 0x40d0, 0x0078, 0x3cab, 0x7200, -+ 0xa286, 0x0002, 0x00c0, 0x3c09, 0x70d4, 0xc0b5, 0x70d6, 0x2c00, -+ 0x70ba, 0x2d00, 0x70be, 0x0078, 0x3c0d, 0x1078, 0x4586, 0x0078, -+ 0x3c0d, 0xa286, 0x0003, 0x0040, 0x3c05, 0x7003, 0x0001, 0x7a80, -+ 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, -+ 0xb284, 0x0300, 0x00c0, 0x3c1d, 0xc2fd, 0x79a8, 0x79a8, 0xa18c, -+ 0x00ff, 0x2118, 0x70cc, 0xa168, 0x2d04, 0x2d08, 0x715e, 0xa06d, -+ 0x0040, 0x3c31, 0x6814, 0xa206, 0x0040, 0x3c5a, 0x6800, 0x0078, -+ 0x3c25, 0x7003, 0x0005, 0xb284, 0x0300, 0x0040, 0x3c3b, 0x2001, -+ 0x95e0, 0x0078, 0x3c3d, 0x2001, 0x9612, 0x2068, 0x704e, 0x157e, -+ 0x20a9, 0x0032, 0x2003, 0x0000, 0x8000, 0x00f0, 0x3c42, 0x157f, -+ 0xb284, 0x0300, 0x0040, 0x3c4f, 0xc2fc, 0x0078, 0x3c50, 0xc2fd, -+ 0x6a16, 0xad80, 0x0009, 0x7046, 0x68b7, 0x0700, 0x6823, 0x0800, -+ 0x6827, 0x0003, 0x6eb4, 0x6920, 0xa184, 0x0c00, 0x0040, 0x3cab, -+ 0xd0dc, 0x0040, 0x3c76, 0x7064, 0xa086, 0x0004, 0x00c0, 0x3c72, -+ 0x7074, 0xa206, 0x00c0, 0x3c72, 0x7078, 0xa306, 0x00c0, 0x3c72, -+ 0x7066, 0x707e, 0x1078, 0x40d7, 0x0078, 0x3cab, 0x681b, 0x0005, -+ 0xc1ad, 0xc1d4, 0x6922, 0x1078, 0x40d0, 0x707f, 0x0000, 0x0078, -+ 0x3cab, 0x7003, 0x0005, 0xb284, 0x0300, 0x0040, 0x3c8b, 0x2001, -+ 0x95e0, 0x0078, 0x3c8d, 0x2001, 0x9612, 0x2068, 0x704e, 0x157e, -+ 0x20a9, 0x0032, 0x2003, 0x0000, 0x8000, 0x00f0, 0x3c92, 0x157f, -+ 0xb284, 0x0300, 0x0040, 0x3c9f, 0xc2fc, 0x0078, 0x3ca0, 0xc2fd, -+ 0x6a16, 0xad80, 0x0009, 0x7046, 0x68b7, 0x0700, 0x6823, 0x0800, -+ 0x6827, 0x0003, 0x007c, 0xc6ec, 0xa6ac, 0x0060, 0x0040, 0x3cfd, -+ 0x6b98, 0x6c94, 0x69ac, 0x68b0, 0xa105, 0x00c0, 0x3cd8, 0x7bd2, -+ 0x7bda, 0x7cd6, 0x7cde, 0xa586, 0x0060, 0x0040, 0x3d02, 0xd6f4, -+ 0x00c0, 0x3cc3, 0xc6ed, 0xa6b4, 0xb7ff, 0x7e5a, 0x2009, 0x0079, -+ 0xd69c, 0x0040, 0x3cd0, 0x2009, 0x0078, 0x2019, 0x0000, 0x2320, -+ 0x791a, 0xd6ec, 0x0040, 0x3d0d, 0x1078, 0x48bd, 0x0078, 0x3d0d, -+ 0x68b0, 0xa31a, 0x2100, 0xa423, 0x2400, 0xa305, 0x0040, 0x3d04, -+ 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68b0, 0xd6f4, 0x00c0, 0x3ce9, -+ 0xc6ed, 0xc6f4, 0x7e5a, 0x2011, 0x0079, 0xd69c, 0x0040, 0x3cf5, -+ 0x2011, 0x0078, 0x2019, 0x0000, 0x2320, 0x7a1a, 0xd6ec, 0x0040, -+ 0x3d0d, 0x1078, 0x48f5, 0x0078, 0x3d0d, 0x2019, 0x0000, 0x2320, -+ 0x0078, 0x3d04, 0xa6b4, 0xb7ff, 0x7e5a, 0x2009, 0x0079, 0xd69c, -+ 0x0040, 0x3d0c, 0x2009, 0x0078, 0x791a, 0x68c0, 0x705a, 0x2d00, -+ 0x704e, 0x68c4, 0x2060, 0x71d4, 0x2001, 0x4e01, 0x2004, 0xd0c4, -+ 0x00c0, 0x3d62, 0x70d8, 0xa02d, 0x0040, 0x3d3b, 0xd1bc, 0x0040, -+ 0x3d55, 0x7a80, 0xa294, 0x0f00, 0x70dc, 0xa206, 0x0040, 0x3d2c, -+ 0x78e0, 0xa504, 0x00c0, 0x3d62, 0x70da, 0xc1bc, 0x71d6, 0x0078, -+ 0x3d62, 0x2031, 0x0001, 0x852c, 0x0048, 0x3d3a, 0x8633, 0x8210, -+ 0x0078, 0x3d33, 0x007c, 0x7de0, 0xa594, 0xff00, 0x0040, 0x3d48, -+ 0x2011, 0x0008, 0x852f, 0x1078, 0x3d31, 0x8637, 0x0078, 0x3d4a, -+ 0x1078, 0x3d31, 0x8217, 0x7880, 0xa084, 0x0f00, 0xa206, 0x0040, -+ 0x3d62, 0x72de, 0x76da, 0x0078, 0x3d62, 0x7a80, 0xa294, 0x0f00, -+ 0x70dc, 0xa236, 0x0040, 0x3d52, 0x78e0, 0xa534, 0x0040, 0x3d52, -+ 0xc1bd, 0x71d6, 0xd1b4, 0x00c0, 0x29c1, 0x2300, 0xa405, 0x0040, -+ 0x29c1, 0x70a4, 0xa086, 0x0001, 0x00c0, 0x2a0b, 0x007c, 0x6020, -+ 0xa005, 0x0040, 0x3d7d, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, -+ 0x600a, 0x700f, 0x0100, 0x702c, 0x6026, 0x007c, 0xa006, 0x1078, -+ 0x4586, 0x7000, 0xa086, 0x0002, 0x0040, 0x3d8b, 0x7064, 0xa086, -+ 0x0005, 0x00c0, 0x3d95, 0x682b, 0x0000, 0x6817, 0x0000, 0x681b, -+ 0x0001, 0x6823, 0x0040, 0x681f, 0x0100, 0x7000, 0xa084, 0x000f, -+ 0x0079, 0x3d9a, 0x29c5, 0x3daa, 0x3da4, 0x3dcc, 0x3db4, 0x29c5, -+ 0x3da2, 0x3da2, 0x1078, 0x296b, 0x1078, 0x3dd7, 0x1078, 0x3dd0, -+ 0x0078, 0x3db0, 0x1078, 0x3dd7, 0x705c, 0x2060, 0x6800, 0x6002, -+ 0x1078, 0x202c, 0x0078, 0x29c5, 0x7064, 0x7067, 0x0000, 0x7083, -+ 0x0000, 0x0079, 0x3dbb, 0x3dc8, 0x3dc8, 0x3dc3, 0x3dc3, 0x3dc3, -+ 0x3dc8, 0x3dc3, 0x3dc8, 0x77d4, 0xc7dd, 0x77d6, 0x0079, 0x2f35, -+ 0x7067, 0x0000, 0x0078, 0x29c5, 0x681b, 0x0000, 0x0078, 0x36c8, -+ 0x6800, 0xa005, 0x00c0, 0x3dd5, 0x6002, 0x6006, 0x007c, 0x6410, -+ 0x84ff, 0x0040, 0x3de9, 0x2009, 0x4e02, 0x2104, 0x8001, 0x200a, -+ 0x8421, 0x6412, 0x00c0, 0x3de9, 0x2021, 0x4e04, 0x2404, 0xc0a5, -+ 0x2022, 0x6008, 0xc0a4, 0x600a, 0x007c, 0x6018, 0xa005, 0x0040, -+ 0x3df3, 0x8001, 0x601a, 0x007c, 0x1078, 0x4383, 0x681b, 0x0018, -+ 0x0078, 0x3e34, 0x1078, 0x4383, 0x681b, 0x0019, 0x0078, 0x3e34, -+ 0x1078, 0x4383, 0x681b, 0x001a, 0x0078, 0x3e34, 0x1078, 0x4383, -+ 0x681b, 0x0003, 0x0078, 0x3e34, 0x7774, 0x1078, 0x41fe, 0x7178, -+ 0xa18c, 0x00ff, 0x3210, 0xa294, 0x0300, 0x0040, 0x3e1b, 0xa1e8, -+ 0x93c0, 0x0078, 0x3e1d, 0xa1e8, 0x94d0, 0x2d04, 0x2d08, 0x2068, -+ 0xa005, 0x00c0, 0x3e26, 0x707e, 0x0078, 0x29c5, 0x6814, 0x7274, -+ 0xa206, 0x0040, 0x3e2e, 0x6800, 0x0078, 0x3e1e, 0x6800, 0x200a, -+ 0x681b, 0x0005, 0x707f, 0x0000, 0x1078, 0x3dd7, 0x6820, 0xd084, -+ 0x00c0, 0x3e3c, 0x1078, 0x3dd0, 0x1078, 0x3ded, 0x681f, 0x0000, -+ 0x6823, 0x0020, 0x1078, 0x202c, 0x0078, 0x29c5, 0xa282, 0x0003, -+ 0x00c0, 0x40b7, 0x7da8, 0xa5ac, 0x00ff, 0x7e5a, 0x7ea8, 0xa6b4, -+ 0x00ff, 0x6920, 0xc1bd, 0x6922, 0xd1c4, 0x0040, 0x3ea1, 0xc1c4, -+ 0x6922, 0xa6b4, 0x00ff, 0x0040, 0x3e8e, 0xa682, 0x000c, 0x0048, -+ 0x3e65, 0x0040, 0x3e65, 0x2031, 0x000c, 0x2500, 0xa086, 0x000a, -+ 0x0040, 0x3e6c, 0x852b, 0x852b, 0x1078, 0x4190, 0x0040, 0x3e74, -+ 0x1078, 0x3f6f, 0x0078, 0x3e97, 0x1078, 0x414b, 0x0c7e, 0x2960, -+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x3fa5, 0x0c7f, 0x6920, -+ 0xc1c5, 0x6922, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3e8b, -+ 0x781b, 0x0064, 0x007c, 0x781b, 0x0078, 0x007c, 0x0c7e, 0x2960, -+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x3fa5, 0x0c7f, 0x7e58, -+ 0xd6d4, 0x00c0, 0x3e9e, 0x781b, 0x0067, 0x007c, 0x781b, 0x0079, -+ 0x007c, 0x0c7e, 0x7058, 0x2060, 0x6100, 0xd1e4, 0x0040, 0x3eea, -+ 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c, 0x0048, 0x3eb4, -+ 0x0040, 0x3eb4, 0x2011, 0x000c, 0x2600, 0xa202, 0x00c8, 0x3eb9, -+ 0x2230, 0x6208, 0xa294, 0x00ff, 0x2001, 0x4e05, 0x2004, 0xd0e4, -+ 0x00c0, 0x3ece, 0x78ec, 0xd0e4, 0x0040, 0x3ece, 0xa282, 0x000a, -+ 0x00c8, 0x3ed4, 0x2011, 0x000a, 0x0078, 0x3ed4, 0xa282, 0x000c, -+ 0x00c8, 0x3ed4, 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x3ed9, -+ 0x2228, 0x1078, 0x414f, 0x2500, 0xa086, 0x000a, 0x0040, 0x3ee2, -+ 0x852b, 0x852b, 0x1078, 0x4190, 0x0040, 0x3eea, 0x1078, 0x3f6f, -+ 0x0078, 0x3eee, 0x1078, 0x414b, 0x1078, 0x3fa5, 0x7858, 0xc095, -+ 0x785a, 0x0c7f, 0x781b, 0x0078, 0x007c, 0x0c7e, 0x2960, 0x6000, -+ 0xd0e4, 0x00c0, 0x3f0b, 0xa084, 0x0040, 0x00c0, 0x3f05, 0x6104, -+ 0xa18c, 0xfff5, 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, -+ 0x0000, 0x0078, 0x3f36, 0x68a0, 0xd0cc, 0x00c0, 0x3f05, 0x6208, -+ 0xa294, 0x00ff, 0x2001, 0x4e05, 0x2004, 0xd0e4, 0x00c0, 0x3f24, -+ 0x78ec, 0xd0e4, 0x0040, 0x3f24, 0xa282, 0x000b, 0x00c8, 0x3f24, -+ 0x2011, 0x000a, 0x0078, 0x3f2a, 0xa282, 0x000c, 0x00c8, 0x3f2a, -+ 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000c, -+ 0x0048, 0x3f36, 0x0040, 0x3f36, 0x2019, 0x000c, 0x78ab, 0x0001, -+ 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, -+ 0x6820, 0xc0c5, 0x6822, 0x70d4, 0xd0b4, 0x0040, 0x3f52, 0xc0b4, -+ 0x70d6, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, -+ 0x8001, 0x601a, 0x0c7f, 0x007c, 0x0c7e, 0x2960, 0x6104, 0xa18c, -+ 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078, 0x3f60, -+ 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, -+ 0xa8c0, 0x0005, 0x6820, 0xc0c5, 0x6822, 0x0c7f, 0x007c, 0x0c7e, -+ 0x7158, 0x2160, 0x2018, 0xa08c, 0x0020, 0x0040, 0x3f78, 0xc0ac, -+ 0x2008, 0xa084, 0xfff0, 0xa635, 0x7e86, 0x6018, 0x789a, 0x7eae, -+ 0x6612, 0x78a4, 0xa084, 0xfff0, 0xa18c, 0x000f, 0xa105, 0xc0f4, -+ 0xa39c, 0x0020, 0x0040, 0x3f8e, 0xa085, 0x4000, 0xc0fc, 0xd0b4, -+ 0x00c0, 0x3f93, 0xc0fd, 0x78a6, 0x6016, 0x788a, 0xa6b4, 0x000f, -+ 0x8637, 0x8204, 0x8004, 0xa084, 0x00ff, 0xa605, 0x600e, 0x6004, -+ 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x007c, 0x0c7e, 0x7058, 0x2060, -+ 0x6018, 0x789a, 0x78a4, 0xa084, 0xfff0, 0x78a6, 0x6012, 0x7884, -+ 0xa084, 0xfff0, 0x7886, 0x600c, 0xa084, 0x00ff, 0x600e, 0x0c7f, -+ 0x007c, 0xa282, 0x0002, 0x00c0, 0x40b7, 0x7aa8, 0x6920, 0xc1bd, -+ 0x6922, 0xd1cc, 0x0040, 0x3ff4, 0xc1cc, 0x6922, 0xa294, 0x00ff, -+ 0xa282, 0x0002, 0x00c8, 0x40b7, 0x1078, 0x4044, 0x1078, 0x3fa5, -+ 0xa980, 0x0001, 0x200c, 0x1078, 0x41fa, 0x1078, 0x3ef5, 0x88ff, -+ 0x0040, 0x3fea, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xc695, -+ 0x7e5a, 0xd6d4, 0x00c0, 0x3fe7, 0x781b, 0x0064, 0x007c, 0x781b, -+ 0x0078, 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x3ff1, 0x781b, 0x0067, -+ 0x007c, 0x781b, 0x0079, 0x007c, 0xa282, 0x0002, 0x00c8, 0x3ffc, -+ 0xa284, 0x0001, 0x0040, 0x4005, 0x7158, 0xa188, 0x0000, 0x210c, -+ 0xd1ec, 0x00c0, 0x4005, 0x2011, 0x0000, 0x1078, 0x412c, 0x1078, -+ 0x4044, 0x1078, 0x3fa5, 0x7858, 0xc095, 0x785a, 0x781b, 0x0078, -+ 0x007c, 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011, 0x0001, 0xd0ec, -+ 0x00c0, 0x4025, 0xa084, 0x0080, 0x00c0, 0x4023, 0xc1a4, 0x6106, -+ 0xa006, 0x0078, 0x4041, 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, -+ 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x70d4, 0xd0b4, -+ 0x0040, 0x403d, 0xc0b4, 0x70d6, 0x70b8, 0xa065, 0x6008, 0xa084, -+ 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x6820, 0xa085, 0x0200, -+ 0x6822, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7058, 0x2060, 0x82ff, -+ 0x0040, 0x404c, 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, -+ 0x78a4, 0xa084, 0xffbf, 0xa205, 0xc0fc, 0xd0b4, 0x00c0, 0x4059, -+ 0xc0fd, 0x78a6, 0x6016, 0x788a, 0x6004, 0xc0a4, 0x6006, 0x0c7f, -+ 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, 0x0040, 0x406a, 0x007f, -+ 0x0078, 0x406d, 0x007f, 0x0078, 0x40b4, 0xd6ac, 0x0040, 0x40b4, -+ 0x7888, 0xa084, 0x0040, 0x0040, 0x40b4, 0x7bb8, 0xa384, 0x003f, -+ 0x831b, 0x00c8, 0x407c, 0x8000, 0xa005, 0x0040, 0x4091, 0x831b, -+ 0x00c8, 0x4085, 0x8001, 0x0040, 0x40b1, 0xd6f4, 0x0040, 0x4091, -+ 0x78b8, 0x801b, 0x00c8, 0x408d, 0x8000, 0xa084, 0x003f, 0x00c0, -+ 0x40b1, 0xc6f4, 0x7e5a, 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, -+ 0x00c8, 0x409c, 0xa291, 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, -+ 0x1078, 0x49c3, 0x781b, 0x0076, 0xb284, 0x0300, 0x0040, 0x40ac, -+ 0x2001, 0x0000, 0x0078, 0x40ae, 0x2001, 0x0001, 0x1078, 0x484b, -+ 0x007c, 0x781b, 0x0076, 0x007c, 0x781b, 0x0079, 0x007c, 0x1078, -+ 0x40df, 0x781b, 0x0078, 0x007c, 0x1078, 0x40c8, 0x781b, 0x0078, -+ 0x007c, 0x6827, 0x0002, 0x1078, 0x40d0, 0x781b, 0x0078, 0x007c, -+ 0x2001, 0x0005, 0x0078, 0x40e1, 0x2001, 0x000c, 0x0078, 0x40e1, -+ 0x6820, 0xc0d5, 0x6822, 0x2001, 0x0006, 0x0078, 0x40e1, 0x2001, -+ 0x000d, 0x0078, 0x40e1, 0x2001, 0x0009, 0x0078, 0x40e1, 0x2001, -+ 0x0007, 0x789b, 0x007e, 0x78aa, 0xc69d, 0x7e5a, 0x70d4, 0xd0b4, -+ 0x0040, 0x40f7, 0xc0b4, 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, -+ 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, -+ 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703, 0x017e, -+ 0xb28c, 0x0300, 0x0040, 0x4108, 0xa0e0, 0x52c0, 0x0078, 0x410a, -+ 0xa0e0, 0x5340, 0x017f, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, -+ 0x000f, 0x0040, 0x411a, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, -+ 0xc09d, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040, -+ 0x0040, 0x412a, 0xa184, 0xffbf, 0xc0fd, 0x78a6, 0x6016, 0x6004, -+ 0xc0a5, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001, -+ 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab, -+ 0x0004, 0x70d4, 0xd0b4, 0x0040, 0x414a, 0xc0b4, 0x70d6, 0x0c7e, -+ 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, -+ 0x601a, 0x0c7f, 0x007c, 0x2031, 0x0000, 0x2029, 0x0032, 0x789b, -+ 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, -+ 0x7eaa, 0x789b, 0x0060, 0x78ab, 0x0005, 0x70d4, 0xd0b4, 0x0040, -+ 0x416e, 0xc0b4, 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, -+ 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, 0x157e, -+ 0x8007, 0xa084, 0x00ff, 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, -+ 0x79a4, 0xa18c, 0xfff0, 0x2021, 0x41e3, 0x2019, 0x0011, 0x20a9, -+ 0x000e, 0x2011, 0x0032, 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, -+ 0x418e, 0x8420, 0x2300, 0xa210, 0x00f0, 0x4183, 0x157f, 0x007c, -+ 0x157e, 0x2001, 0x4e05, 0x2004, 0xd0e4, 0x00c0, 0x41c1, 0x2021, -+ 0x41f1, 0x20a9, 0x0009, 0x2011, 0x0028, 0xa582, 0x0019, 0x0040, -+ 0x41d7, 0x0048, 0x41d7, 0x8420, 0x95a9, 0x2011, 0x0032, 0xa582, -+ 0x0032, 0x0040, 0x41d7, 0x0048, 0x41d7, 0x8420, 0x95a9, 0x2019, -+ 0x000a, 0x2011, 0x0064, 0x2200, 0xa502, 0x0040, 0x41d7, 0x0048, -+ 0x41d7, 0x8420, 0x2300, 0xa210, 0x00f0, 0x41b3, 0x157f, 0x0078, -+ 0x41d5, 0x2021, 0x41e3, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, -+ 0x0032, 0x2200, 0xa502, 0x0040, 0x41d7, 0x0048, 0x41d7, 0x8420, -+ 0x2300, 0xa210, 0x00f0, 0x41c9, 0x157f, 0xa006, 0x007c, 0x157f, -+ 0xa582, 0x0064, 0x00c8, 0x41e0, 0x7808, 0xa085, 0x0070, 0x780a, -+ 0x2404, 0xa005, 0x007c, 0x1209, 0x3002, 0x3202, 0x4203, 0x4403, -+ 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, 0x7a06, 0x0c07, 0x0c07, -+ 0x0e07, 0x10e1, 0x330a, 0x5805, 0x5a05, 0x6a06, 0x6c06, 0x7c07, -+ 0x7e07, 0x0e00, 0x789b, 0x0010, 0xa046, 0x007c, 0xa784, 0x0f00, -+ 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, -+ 0xd7fc, 0x0040, 0x420f, 0xa0e0, 0x73c0, 0x0078, 0x4211, 0xa0e0, -+ 0x53c0, 0x007c, 0x0e7e, 0x0f7e, 0xd084, 0x0040, 0x421f, 0x2079, -+ 0x0100, 0x2009, 0x4e80, 0x2071, 0x4e80, 0x0078, 0x422f, 0x2009, -+ 0x4e40, 0x2071, 0x4e40, 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x0040, -+ 0x422d, 0x2079, 0x0100, 0x0078, 0x422f, 0x2079, 0x0200, 0x2091, -+ 0x8000, 0x2104, 0xa084, 0x000f, 0x0079, 0x4236, 0x4240, 0x4240, -+ 0x4240, 0x4240, 0x4240, 0x4240, 0x423e, 0x423e, 0x1078, 0x296b, -+ 0x69b4, 0xc1f5, 0xa18c, 0xff9f, 0x69b6, 0xa005, 0x0040, 0x428f, -+ 0x7858, 0xa084, 0xff9f, 0xa085, 0x6000, 0x785a, 0x7828, 0xa086, -+ 0x1814, 0x00c0, 0x428f, 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, -+ 0x00c0, 0x4255, 0x784b, 0x0008, 0x7848, 0xa084, 0x0008, 0x00c0, -+ 0x425c, 0x7830, 0xd0bc, 0x00c0, 0x428f, 0x007e, 0x2001, 0x4e04, -+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x4271, 0xb284, 0x0300, 0x0078, -+ 0x4273, 0xb284, 0x0400, 0x0040, 0x4279, 0x0018, 0x428f, 0x0078, -+ 0x427b, 0x0028, 0x428f, 0x79e4, 0xa184, 0x0030, 0x0040, 0x428f, -+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x428f, 0x681c, 0xd0ac, 0x00c0, -+ 0x428d, 0x1078, 0x4319, 0x0078, 0x428f, 0x781b, 0x00f9, 0x0f7f, -+ 0x0e7f, 0x007c, 0x0c7e, 0x2001, 0x4e01, 0x2004, 0xd0ac, 0x00c0, -+ 0x430b, 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xb28c, 0x0300, 0x0040, 0x42a8, 0xa0e0, 0x52c0, 0x0078, 0x42aa, -+ 0xa0e0, 0x5340, 0x6004, 0xa084, 0x000a, 0x00c0, 0x430b, 0x6108, -+ 0xa194, 0xff00, 0x0040, 0x430b, 0xa18c, 0x00ff, 0x2001, 0x000a, -+ 0xa106, 0x0040, 0x42d6, 0x2001, 0x000c, 0xa106, 0x0040, 0x42da, -+ 0x2001, 0x0012, 0xa106, 0x0040, 0x42de, 0x2001, 0x0014, 0xa106, -+ 0x0040, 0x42e2, 0x2001, 0x0019, 0xa106, 0x0040, 0x42e6, 0x2001, -+ 0x0032, 0xa106, 0x0040, 0x42ea, 0x0078, 0x42ee, 0x2009, 0x000c, -+ 0x0078, 0x42f0, 0x2009, 0x0012, 0x0078, 0x42f0, 0x2009, 0x0014, -+ 0x0078, 0x42f0, 0x2009, 0x0019, 0x0078, 0x42f0, 0x2009, 0x0020, -+ 0x0078, 0x42f0, 0x2009, 0x003f, 0x0078, 0x42f0, 0x2011, 0x0000, -+ 0x2100, 0xa205, 0x600a, 0x6004, 0xa085, 0x0002, 0x6006, 0x2061, -+ 0x4e00, 0x6004, 0xd0bc, 0x0040, 0x430b, 0x6814, 0xd0fc, 0x00c0, -+ 0x4306, 0x60ea, 0x2061, 0x4e40, 0x0078, 0x4309, 0x60ee, 0x2061, -+ 0x4e80, 0x601f, 0x800f, 0x0c7f, 0x007c, 0x781b, 0x0079, 0x007c, -+ 0x781b, 0x0078, 0x007c, 0x781b, 0x0067, 0x007c, 0x781b, 0x0064, -+ 0x007c, 0x2009, 0x4e19, 0x210c, 0xa186, 0x0000, 0x0040, 0x432b, -+ 0xa186, 0x0001, 0x0040, 0x432e, 0x701f, 0x000b, 0x7067, 0x0001, -+ 0x781b, 0x0047, 0x007c, 0x781b, 0x00f0, 0x007c, 0x701f, 0x000a, -+ 0x007c, 0x2009, 0x4e19, 0x210c, 0xa186, 0x0000, 0x0040, 0x4346, -+ 0xa186, 0x0001, 0x0040, 0x4343, 0x701f, 0x000b, 0x7067, 0x0001, -+ 0x781b, 0x0047, 0x007c, 0x701f, 0x000a, 0x007c, 0x781b, 0x00ef, -+ 0x007c, 0x781b, 0x00f9, 0x007c, 0x781b, 0x00f8, 0x007c, 0x781b, -+ 0x00c9, 0x007c, 0x781b, 0x00c8, 0x007c, 0x6818, 0xd0fc, 0x0040, -+ 0x435b, 0x681b, 0x001d, 0x7067, 0x0001, 0x781b, 0x0047, 0x007c, -+ 0x7830, 0xa084, 0x00c0, 0x00c0, 0x4382, 0x7808, 0xc08c, 0x780a, -+ 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x00c0, -+ 0x437f, 0x2001, 0x4e05, 0x2004, 0xd0e4, 0x00c0, 0x437d, 0x7804, -+ 0xa084, 0xff1f, 0xa085, 0x00e0, 0x7806, 0xa006, 0x007c, 0x7808, -+ 0xc08d, 0x780a, 0x007c, 0x7808, 0xc08d, 0x780a, 0x007c, 0x7830, -+ 0xa084, 0x0040, 0x00c0, 0x4387, 0x2001, 0x4e04, 0x2004, 0xd0ec, -+ 0x0040, 0x4396, 0xb284, 0x0300, 0x0078, 0x4398, 0xb284, 0x0400, -+ 0x0040, 0x439e, 0x0098, 0x43a2, 0x0078, 0x43a0, 0x00a8, 0x43a2, -+ 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, -+ 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, 0x43c5, 0x007e, -+ 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x43bb, 0xb284, -+ 0x0300, 0x0078, 0x43bd, 0xb284, 0x0400, 0x0040, 0x43c3, 0x0098, -+ 0x43bf, 0x0078, 0x43c5, 0x00a8, 0x43c3, 0x78ac, 0x007e, 0x7808, -+ 0xa085, 0x0002, 0x780a, 0x007f, 0x007c, 0xa784, 0x0001, 0x00c0, -+ 0x3770, 0xa784, 0x0070, 0x0040, 0x43dd, 0x0c7e, 0x2d60, 0x2f68, -+ 0x1078, 0x28df, 0x2d78, 0x2c68, 0x0c7f, 0xa784, 0x0008, 0x0040, -+ 0x43ea, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x3770, -+ 0x0078, 0x430d, 0xa784, 0x0004, 0x0040, 0x4419, 0x78b8, 0xa084, -+ 0x4001, 0x0040, 0x4419, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x3770, 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001, 0x00c0, -+ 0x4419, 0x78c0, 0xa685, 0x4800, 0x2030, 0x7e5a, 0x781b, 0x00f9, -+ 0x007c, 0x784b, 0x0008, 0x6818, 0xd0fc, 0x0040, 0x4416, 0x681b, -+ 0x0015, 0xd6f4, 0x0040, 0x4416, 0x681b, 0x0007, 0x1078, 0x4319, -+ 0x007c, 0x681b, 0x0003, 0x7858, 0xa084, 0x3f00, 0x681e, 0x682f, -+ 0x0000, 0x6833, 0x0000, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x3066, 0x007e, 0x2001, 0x4e04, 0x2004, 0xd0ec, 0x007f, -+ 0x0040, 0x4436, 0xb284, 0x0300, 0x0078, 0x4438, 0xb284, 0x0400, -+ 0x0040, 0x443e, 0x0018, 0x29c1, 0x0078, 0x4440, 0x0028, 0x29c1, -+ 0x0078, 0x40bc, 0x6b14, 0x8307, 0xa084, 0x000f, 0x8003, 0x8003, -+ 0x8003, 0xd3fc, 0x0040, 0x4450, 0xa080, 0x5340, 0x0078, 0x4452, -+ 0xa080, 0x52c0, 0x2060, 0x2048, 0x705a, 0x2a60, 0x007c, 0x0020, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0062, 0x0009, 0x0014, 0x0014, 0x9848, 0x0014, 0x0014, -+ 0x9914, 0x98fd, 0x0014, 0x0014, 0x0080, 0x00ff, 0x0100, 0x0402, -+ 0x2008, 0xf880, 0x0018, 0xa20a, 0x0014, 0x300b, 0xa20c, 0x0014, -+ 0x2500, 0x0013, 0x2500, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, -+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, -+ 0x0010, 0xa200, 0x3806, 0x7102, 0x805f, 0x9481, 0x8839, 0x20c4, -+ 0x0864, 0xa856, 0x3008, 0x28c1, 0x9d1b, 0xa201, 0x300c, 0x2847, -+ 0x8161, 0x846a, 0x8000, 0x84a4, 0x1856, 0x883a, 0xa808, 0x28e2, -+ 0x9ccb, 0xa8f3, 0x0864, 0xa844, 0x300c, 0xa801, 0x3008, 0x28e1, -+ 0x9ccb, 0x2021, 0xa81d, 0xa205, 0x870c, 0xd8de, 0x64a0, 0x6de0, -+ 0x6fc0, 0x63a4, 0x6c80, 0x0212, 0xa205, 0x883d, 0x7942, 0x8020, -+ 0xa4a1, 0x882b, 0x1814, 0x883b, 0x80df, 0x94a1, 0x7027, 0x85f2, -+ 0xa737, 0xa532, 0xf003, 0x8576, 0x8677, 0xa816, 0x883e, 0xa814, -+ 0x2001, 0xa812, 0xa204, 0x64c0, 0x6de0, 0x67a0, 0x6fc0, 0x7942, -+ 0x8020, 0xa4a1, 0x1814, 0x80df, 0x94a1, 0x883b, 0x7023, 0x8576, -+ 0x8677, 0xa802, 0x7861, 0x883e, 0x206b, 0x28c1, 0x9d1b, 0x2044, -+ 0x2103, 0x20a2, 0x2081, 0xa8c3, 0xa207, 0x0904, 0xa20e, 0xa809, -+ 0xa203, 0x8000, 0x85a4, 0x1872, 0x879a, 0x883c, 0x1fe2, 0xf601, -+ 0xa208, 0x856e, 0x866f, 0x7161, 0x0014, 0x0704, 0x3008, 0x9ccb, -+ 0x0014, 0xa202, 0x8000, 0x85a4, 0x3009, 0x84a8, 0x19e2, 0xf844, -+ 0x856e, 0x883f, 0x08e6, 0xa8f5, 0xf861, 0xa8ea, 0xf801, 0x0014, -+ 0xf881, 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfaa2, 0x1de2, 0x0014, -+ 0x8532, 0xf221, 0x0014, 0x1de2, 0x84a8, 0xd6e0, 0x1fe6, 0x0014, -+ 0x3008, 0x8000, 0x284a, 0x1011, 0xa8fc, 0x3008, 0x9d33, 0x8000, -+ 0xa000, 0x2802, 0x1011, 0xa8fd, 0x9d39, 0xa8bd, 0x3008, 0x9d33, -+ 0x283b, 0x1011, 0xa8fd, 0xa209, 0x7102, 0x805f, 0x9481, 0x0017, -+ 0x300c, 0xa209, 0x8000, 0x85a4, 0x1de2, 0xa209, 0xdac1, 0x0014, -+ 0x0210, 0xa801, 0x0014, 0x26e0, 0x873a, 0xfaa3, 0x19f2, 0x26e0, -+ 0x18f2, 0x0014, 0xa20b, 0x0014, 0xa20d, 0x3806, 0x0210, 0x9d25, -+ 0x0704, 0xa206, 0x6865, 0x817e, 0x842a, 0x1dc1, 0x8823, 0x0016, -+ 0x6042, 0x8008, 0xa8fa, 0x8000, 0x84a4, 0x8160, 0x842a, 0xf021, -+ 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d4, 0x8822, -+ 0x0016, 0x7944, 0x8421, 0xa020, 0xa532, 0x84a1, 0x0016, 0x7944, -+ 0x8421, 0xa0df, 0x9532, 0x84a1, 0x0016, 0x0000, 0x127e, 0x70d4, -+ 0xa084, 0x4600, 0x8004, 0x2090, 0x7204, 0x7008, 0xc09c, 0xa205, -+ 0x00c0, 0x45a2, 0x720c, 0x82ff, 0x0040, 0x459d, 0x8aff, 0x00c0, -+ 0x45a2, 0x7200, 0xd284, 0x00c0, 0x45a2, 0x7003, 0x0008, 0x127f, -+ 0x2000, 0x007c, 0x7000, 0xa084, 0x0003, 0x7002, 0xc69c, 0xd084, -+ 0x0040, 0x45e5, 0x7108, 0x0005, 0x7008, 0xa106, 0x00c0, 0x45aa, -+ 0xa184, 0x0003, 0x0040, 0x4616, 0xa184, 0x01e0, 0x00c0, 0x4616, -+ 0xd1f4, 0x00c0, 0x45aa, 0xa184, 0x3000, 0xa086, 0x1000, 0x0040, -+ 0x45aa, 0x2011, 0x0180, 0x710c, 0x8211, 0x0040, 0x45cf, 0x7008, -+ 0xd0f4, 0x00c0, 0x45aa, 0x700c, 0xa106, 0x0040, 0x45c4, 0x7007, -+ 0x0012, 0x7108, 0x0005, 0x7008, 0xa106, 0x00c0, 0x45d1, 0xa184, -+ 0x0003, 0x0040, 0x4616, 0xd194, 0x0040, 0x45d1, 0xd1f4, 0x0040, -+ 0x4616, 0x7007, 0x0002, 0x0078, 0x45aa, 0x7108, 0xd1fc, 0x0040, -+ 0x45f0, 0x1078, 0x4769, 0x8aff, 0x0040, 0x458c, 0x0078, 0x45e5, -+ 0x700c, 0xa08c, 0x03ff, 0x0040, 0x461b, 0x7004, 0xd084, 0x0040, -+ 0x460d, 0x7014, 0xa005, 0x00c0, 0x4609, 0x7010, 0x7310, 0xa306, -+ 0x00c0, 0x45fd, 0x2300, 0xa005, 0x0040, 0x460d, 0xa102, 0x00c8, -+ 0x45e5, 0x7007, 0x0010, 0x0078, 0x4616, 0x8aff, 0x0040, 0x461b, -+ 0x1078, 0x4970, 0x00c0, 0x4610, 0x0040, 0x45e5, 0x1078, 0x46b4, -+ 0x127f, 0x2000, 0x007c, 0x7204, 0x7108, 0xc19c, 0x8103, 0x00c8, -+ 0x462a, 0x7007, 0x0002, 0x0078, 0x461b, 0x7003, 0x0008, 0x127f, -+ 0x2000, 0x007c, 0xa205, 0x00c0, 0x4616, 0x7003, 0x0008, 0x127f, -+ 0x2000, 0x007c, 0x6428, 0x84ff, 0x0040, 0x465e, 0x2c70, 0x7004, -+ 0xa0bc, 0x000f, 0xa7b8, 0x466e, 0x273c, 0x87fb, 0x00c0, 0x464c, -+ 0x0048, 0x4644, 0x1078, 0x296b, 0x609c, 0xa075, 0x0040, 0x465e, -+ 0x0078, 0x4637, 0x2039, 0x4663, 0x2704, 0xae68, 0x6808, 0xa630, -+ 0x680c, 0xa529, 0x8421, 0x0040, 0x465e, 0x8738, 0x2704, 0xa005, -+ 0x00c0, 0x464d, 0x709c, 0xa075, 0x00c0, 0x4637, 0x007c, 0x0000, -+ 0x0005, 0x0009, 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, -+ 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x4663, -+ 0x4660, 0x0000, 0x0000, 0x8000, 0x0000, 0x4663, 0x0000, 0x466b, -+ 0x4668, 0x0000, 0x0000, 0x0000, 0x0000, 0x466b, 0x0000, 0x4666, -+ 0x4666, 0x0000, 0x0000, 0x8000, 0x0000, 0x4666, 0x0000, 0x466c, -+ 0x466c, 0x0000, 0x0000, 0x0000, 0x0000, 0x466c, 0x2079, 0x4e00, -+ 0x2071, 0x0010, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0001, -+ 0x7810, 0xd0ec, 0x0040, 0x46a2, 0x2009, 0x0001, 0x2071, 0x0020, -+ 0x0078, 0x46a6, 0x2009, 0x0002, 0x2071, 0x0050, 0x7007, 0x000a, -+ 0x7007, 0x0002, 0x7003, 0x0000, 0x8109, 0x0040, 0x46b3, 0x2071, -+ 0x0020, 0x0078, 0x46a6, 0x007c, 0x7004, 0x8004, 0x00c8, 0x473d, -+ 0x7108, 0x7008, 0xa106, 0x00c0, 0x46b8, 0xa184, 0x01e0, 0x0040, -+ 0x46c5, 0x1078, 0x47ac, 0x0078, 0x4765, 0x7007, 0x0012, 0x2019, -+ 0x0000, 0x7108, 0x7008, 0xa106, 0x00c0, 0x46c9, 0xa184, 0x01e0, -+ 0x0040, 0x46d6, 0x1078, 0x47ac, 0x0078, 0x4765, 0x7810, 0xd0ec, -+ 0x0040, 0x46f0, 0x2001, 0x04fd, 0x2004, 0xa086, 0x0003, 0x00c0, -+ 0x46f4, 0xa184, 0x4000, 0x0040, 0x46f8, 0xa382, 0x0003, 0x00c8, -+ 0x46f8, 0xa184, 0x0004, 0x0040, 0x46c9, 0x8318, 0x0078, 0x46c9, -+ 0x7814, 0xd0ec, 0x00c0, 0x46f8, 0xa184, 0x4000, 0x00c0, 0x46c9, -+ 0xa19c, 0x300c, 0xa386, 0x2004, 0x0040, 0x4715, 0xa386, 0x0008, -+ 0x0040, 0x4720, 0x7004, 0xd084, 0x00c0, 0x4711, 0x7108, 0x7008, -+ 0xa106, 0x00c0, 0x4706, 0xa184, 0x0003, 0x0040, 0x4711, 0x0078, -+ 0x47ac, 0xa386, 0x200c, 0x00c0, 0x46c9, 0x7200, 0x8204, 0x0048, -+ 0x4720, 0x730c, 0xa384, 0x03ff, 0x0040, 0x4720, 0x1078, 0x296b, -+ 0x7108, 0x7008, 0xa106, 0x00c0, 0x4720, 0xa184, 0x01e0, 0x0040, -+ 0x472d, 0x1078, 0x47ac, 0x0078, 0x4765, 0x7007, 0x0012, 0x7000, -+ 0xd084, 0x00c0, 0x473d, 0x7310, 0x7014, 0xa305, 0x0040, 0x473d, -+ 0x710c, 0xa184, 0x03ff, 0x00c0, 0x46b4, 0x7108, 0x7008, 0xa106, -+ 0x00c0, 0x473d, 0xa184, 0x01e0, 0x0040, 0x474a, 0x1078, 0x47ac, -+ 0x0078, 0x4765, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xd09c, -+ 0x00c0, 0x474e, 0x7108, 0x7008, 0xa106, 0x00c0, 0x4752, 0xa184, -+ 0x01e0, 0x0040, 0x475f, 0x1078, 0x47ac, 0x0078, 0x4765, 0x7007, -+ 0x0012, 0x7108, 0x8103, 0x0048, 0x4752, 0x7003, 0x0008, 0x007c, -+ 0x7108, 0xa184, 0x01e0, 0x00c0, 0x47ac, 0x7108, 0xa184, 0x01e0, -+ 0x00c0, 0x47ac, 0xa184, 0x0007, 0x0079, 0x4776, 0x4780, 0x4790, -+ 0x477e, 0x4790, 0x477e, 0x47ee, 0x477e, 0x47ec, 0x1078, 0x296b, -+ 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x8aff, 0x00c0, 0x478b, -+ 0x2049, 0x0000, 0x007c, 0x1078, 0x4970, 0x00c0, 0x478b, 0x007c, -+ 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x7004, 0xd084, 0x00c0, -+ 0x47a4, 0x7108, 0x7008, 0xa106, 0x00c0, 0x4799, 0xa184, 0x0003, -+ 0x0040, 0x47a4, 0x0078, 0x47ac, 0x8aff, 0x0040, 0x47ab, 0x1078, -+ 0x4970, 0x00c0, 0x47a7, 0x007c, 0x7007, 0x0012, 0x7108, 0x00e0, -+ 0x47af, 0x2091, 0x6000, 0x00e0, 0x47b3, 0x2091, 0x6000, 0x7007, -+ 0x0012, 0x7007, 0x0008, 0x7004, 0xd09c, 0x00c0, 0x47bb, 0x7007, -+ 0x0012, 0x7108, 0xd1fc, 0x00c0, 0x47bf, 0x7003, 0x0000, 0x7000, -+ 0xa005, 0x00c0, 0x47d3, 0x7004, 0xa005, 0x00c0, 0x47d3, 0x700c, -+ 0xa005, 0x0040, 0x47d5, 0x0078, 0x47b7, 0x2049, 0x0000, 0xb284, -+ 0x0100, 0x0040, 0x47df, 0x2001, 0x0000, 0x0078, 0x47e1, 0x2001, -+ 0x0001, 0x1078, 0x4212, 0x681b, 0x0002, 0x2051, 0x0000, 0x007c, -+ 0x1078, 0x296b, 0x1078, 0x296b, 0x1078, 0x4836, 0x7210, 0x7114, -+ 0x700c, 0xa09c, 0x03ff, 0x2800, 0xa300, 0xa211, 0xa189, 0x0000, -+ 0x1078, 0x4836, 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, 0xa322, -+ 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040, 0x4811, 0x00c8, -+ 0x4811, 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0078, -+ 0x47f8, 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, 0x0040, -+ 0x481d, 0xa7ba, 0x4668, 0x0078, 0x481f, 0xa7ba, 0x4660, 0x007f, -+ 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7108, 0x7008, -+ 0xa106, 0x00c0, 0x4826, 0xa184, 0x01e0, 0x0040, 0x4831, 0x1078, -+ 0x47ac, 0x7007, 0x0012, 0x1078, 0x46b4, 0x007c, 0x8a50, 0x8739, -+ 0x2704, 0xa004, 0x00c0, 0x484a, 0x6000, 0xa064, 0x00c0, 0x4841, -+ 0x2d60, 0x6004, 0xa084, 0x000f, 0xa080, 0x467e, 0x203c, 0x87fb, -+ 0x1040, 0x296b, 0x007c, 0x127e, 0x0d7e, 0x70d4, 0xa084, 0x4600, -+ 0x8004, 0x2090, 0x0d7f, 0x6884, 0x2060, 0x6888, 0x6b8c, 0x6c90, -+ 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, 0x6804, 0xa084, -+ 0x0008, 0x007f, 0x0040, 0x4868, 0xa0b8, 0x4668, 0x0078, 0x486a, -+ 0xa0b8, 0x4660, 0xb284, 0x0100, 0x0040, 0x4871, 0x7e20, 0x0078, -+ 0x4872, 0x7e24, 0xa6b5, 0x000c, 0x681c, 0xd0b4, 0x0040, 0x4879, -+ 0xc685, 0x2400, 0xa305, 0x0040, 0x48a3, 0x2c58, 0x2704, 0x6104, -+ 0xac60, 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, 0xa184, -+ 0x0008, 0x0040, 0x4893, 0x6010, 0xa081, 0x0000, 0x7022, 0x6014, -+ 0xa081, 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c, -+ 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078, -+ 0x499b, 0x0078, 0x48a5, 0x1078, 0x4970, 0x00c0, 0x48a3, 0x127f, -+ 0x2000, 0x007c, 0x127e, 0x0d7e, 0x70d4, 0xa084, 0x4600, 0x8004, -+ 0x2090, 0x0d7f, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, 0x48b4, -+ 0x7003, 0x0008, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x70d4, -+ 0xa084, 0x4600, 0x8004, 0x007e, 0x2090, 0x007f, 0x0d7f, 0x7e20, -+ 0xb284, 0x0100, 0x00c0, 0x48cd, 0x7e24, 0xa6b5, 0x000c, 0x681c, -+ 0xd0ac, 0x00c0, 0x48d8, 0xc685, 0x7003, 0x0000, 0x7007, 0x0004, -+ 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8, 0x466e, -+ 0x273c, 0x87fb, 0x00c0, 0x48ee, 0x0048, 0x48e8, 0x1078, 0x296b, -+ 0x689c, 0xa065, 0x0040, 0x48f2, 0x0078, 0x48db, 0x1078, 0x4970, -+ 0x00c0, 0x48ee, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, 0x017e, -+ 0x0d7e, 0x70d4, 0xa084, 0x4600, 0x8004, 0x007e, 0x2090, 0x007f, -+ 0x7e20, 0xb284, 0x0100, 0x00c0, 0x4906, 0x7e24, 0x0d7f, 0x037f, -+ 0x047f, 0xa6b5, 0x000c, 0x681c, 0xd0b4, 0x0040, 0x4914, 0xc685, -+ 0x7003, 0x0000, 0x7007, 0x0004, 0x2049, 0x48f5, 0x6828, 0xa055, -+ 0x0d7e, 0x0040, 0x496c, 0x2d70, 0x2e60, 0x7004, 0xa0bc, 0x000f, -+ 0xa7b8, 0x466e, 0x273c, 0x87fb, 0x00c0, 0x4931, 0x0048, 0x492a, -+ 0x1078, 0x296b, 0x709c, 0xa075, 0x2060, 0x0040, 0x496c, 0x0078, -+ 0x491d, 0x2704, 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0048, -+ 0x494a, 0x8a51, 0x00c0, 0x493e, 0x1078, 0x296b, 0x8738, 0x2704, -+ 0xa005, 0x00c0, 0x4932, 0x709c, 0xa075, 0x2060, 0x0040, 0x496c, -+ 0x0078, 0x491d, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x6908, -+ 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x00c8, 0x4959, 0x1078, -+ 0x296b, 0xb284, 0x0100, 0x0040, 0x4967, 0x2001, 0x4e04, 0x2004, -+ 0xd0ec, 0x00c0, 0x4967, 0x2071, 0x0050, 0x0078, 0x4969, 0x2071, -+ 0x0020, 0x0d7f, 0x0078, 0x4879, 0x0d7f, 0x127f, 0x2000, 0x007c, -+ 0x7008, 0x007e, 0xa084, 0x01e0, 0x007f, 0x0040, 0x4979, 0xa006, -+ 0x007c, 0xa084, 0x0003, 0xa086, 0x0003, 0x00c0, 0x4980, 0x007c, -+ 0x2704, 0xac78, 0x7800, 0x701a, 0x7804, 0x701e, 0x7808, 0x7012, -+ 0x780c, 0x7016, 0x6004, 0xa084, 0x0008, 0x0040, 0x4993, 0x7810, -+ 0x7022, 0x7814, 0x7026, 0x7602, 0x7004, 0xa084, 0x0010, 0xc085, -+ 0x7006, 0x2079, 0x4e00, 0x8a51, 0x0040, 0x49bf, 0x8738, 0x2704, -+ 0xa005, 0x00c0, 0x49b1, 0x609c, 0xa005, 0x0040, 0x49c0, 0x2060, -+ 0x6004, 0xa084, 0x000f, 0xa080, 0x466e, 0x203c, 0x87fb, 0x1040, -+ 0x296b, 0x7008, 0x007e, 0xa084, 0x01e0, 0x007f, 0x0040, 0x49bb, -+ 0xa006, 0x0078, 0x49c0, 0xa084, 0x0003, 0xa086, 0x0003, 0x007c, -+ 0x2051, 0x0000, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x70d4, 0xa084, -+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x087f, 0x7108, 0xa184, 0x0003, -+ 0x00c0, 0x49d8, 0x6828, 0xa005, 0x0040, 0x49e8, 0x0078, 0x45a2, -+ 0x7108, 0xd1fc, 0x0040, 0x49e0, 0x1078, 0x4769, 0x0078, 0x49cd, -+ 0x7007, 0x0010, 0x7108, 0xd1fc, 0x0040, 0x49e2, 0x1078, 0x4769, -+ 0x7008, 0xa086, 0x0008, 0x00c0, 0x49cd, 0x7000, 0xa005, 0x00c0, -+ 0x49cd, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, -+ 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, 0x70d4, 0xa084, -+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x2049, 0x49f8, 0xad80, 0x0011, -+ 0x20a0, 0xb284, 0x0100, 0x0040, 0x4a1b, 0x2001, 0x4e04, 0x2004, -+ 0xd0ec, 0x0040, 0x4a17, 0x2099, 0x0031, 0x0078, 0x4a1d, 0x2099, -+ 0x0032, 0x0078, 0x4a1d, 0x2099, 0x0031, 0x700c, 0xa084, 0x03ff, -+ 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0040, -+ 0x4a2c, 0x8000, 0x80ac, 0x53a5, 0x700c, 0xa084, 0x03ff, 0x0040, -+ 0x4a38, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x4a33, -+ 0x0c7f, 0x2049, 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, -+ 0x127f, 0x2000, 0x007c, 0x2091, 0x8000, 0x2091, 0x6000, 0x78ac, -+ 0xa005, 0x00c0, 0x4a5a, 0x7974, 0x70d0, 0xa106, 0x00c0, 0x4a5a, -+ 0x781c, 0xa005, 0x0040, 0x4a5a, 0x781f, 0x0000, 0x0068, 0x4a5a, -+ 0x2091, 0x4080, 0x7830, 0x8001, 0x7832, 0x00c0, 0x4ae2, 0x7834, -+ 0x7832, 0x7810, 0xd0ec, 0x00c0, 0x4adb, 0x2061, 0x73c0, 0x2069, -+ 0x4e80, 0xc7fd, 0x68d0, 0xa005, 0x0040, 0x4a74, 0x8001, 0x68d2, -+ 0x00c0, 0x4a74, 0x1078, 0x4cb0, 0x6800, 0xa084, 0x000f, 0x0040, -+ 0x4a89, 0xa086, 0x0001, 0x0040, 0x4a89, 0x6844, 0xa00d, 0x0040, -+ 0x4a89, 0x2104, 0xa005, 0x0040, 0x4a89, 0x8001, 0x200a, 0x0040, -+ 0x4c23, 0x6814, 0xa005, 0x0040, 0x4aae, 0x8001, 0x6816, 0x00c0, -+ 0x4aae, 0x68a7, 0x0001, 0x0f7e, 0xd7fc, 0x00c0, 0x4aa3, 0x7810, -+ 0xd0ec, 0x0040, 0x4a9f, 0x2079, 0x0100, 0x0078, 0x4aa5, 0x2079, -+ 0x0200, 0x0078, 0x4aa5, 0x2079, 0x0100, 0x1078, 0x4383, 0x0f7f, -+ 0x6864, 0xa005, 0x0040, 0x4aae, 0x1078, 0x2628, 0x6880, 0xa005, -+ 0x0040, 0x4abb, 0x8001, 0x6882, 0x00c0, 0x4abb, 0x6867, 0x0000, -+ 0x68d4, 0xc0dd, 0x68d6, 0x68d4, 0xd0fc, 0x0040, 0x4ad8, 0xc0fc, -+ 0x68d6, 0x20a9, 0x0200, 0x6034, 0xa005, 0x0040, 0x4ad4, 0x8001, -+ 0x6036, 0x68d4, 0xc0fd, 0x68d6, 0x00c0, 0x4ad4, 0x6010, 0xa005, -+ 0x0040, 0x4ad4, 0x1078, 0x2628, 0xace0, 0x0010, 0x00f0, 0x4ac3, -+ 0xd7fc, 0x0040, 0x4ae2, 0x2061, 0x53c0, 0x2069, 0x4e40, 0xc7fc, -+ 0x0078, 0x4a6a, 0x1078, 0x4b1e, 0x7838, 0x8001, 0x783a, 0x00c0, -+ 0x4b04, 0x783c, 0x783a, 0x2061, 0x53c0, 0x2069, 0x4e40, 0xc7fc, -+ 0x680c, 0xa005, 0x0040, 0x4af6, 0x1078, 0x4b88, 0xd7fc, 0x00c0, -+ 0x4b04, 0x7810, 0xd0ec, 0x00c0, 0x4b04, 0x2061, 0x73c0, 0x2069, -+ 0x4e80, 0xc7fd, 0x0078, 0x4af0, 0x7814, 0xd0e4, 0x00c0, 0x4b08, -+ 0x7810, 0xd0cc, 0x0040, 0x4b1b, 0xd0ac, 0x00c0, 0x4b14, 0xd0a4, -+ 0x0040, 0x4b1b, 0xc0ad, 0x7812, 0x2091, 0x8001, 0x0068, 0x4b1a, -+ 0x1078, 0x2395, 0x007c, 0x2091, 0x8001, 0x007c, 0x7840, 0x8001, -+ 0x7842, 0x00c0, 0x4b87, 0x7844, 0x7842, 0x2069, 0x4e40, 0xc7fc, -+ 0x7810, 0x2079, 0x0200, 0xd0ec, 0x0040, 0x4b30, 0x2079, 0x0100, -+ 0x68d8, 0xa005, 0x0040, 0x4b3c, 0x7de0, 0xa504, 0x00c0, 0x4b3c, -+ 0x68da, 0x68d4, 0xc0bc, 0x68d6, 0x2079, 0x4e00, 0x6810, 0xa005, -+ 0x00c0, 0x4b44, 0x2001, 0x0101, 0x8001, 0x6812, 0xd7fc, 0x0040, -+ 0x4b4d, 0xa080, 0x94d0, 0x0078, 0x4b4f, 0xa080, 0x93c0, 0x2040, -+ 0x2004, 0xa065, 0x0040, 0x4b79, 0x6024, 0xa005, 0x0040, 0x4b75, -+ 0x8001, 0x6026, 0x00c0, 0x4b75, 0x6800, 0xa005, 0x0040, 0x4b68, -+ 0x684c, 0xac06, 0x00c0, 0x4b68, 0x1078, 0x4c23, 0x0078, 0x4b79, -+ 0x6864, 0xa005, 0x0040, 0x4b70, 0x6027, 0x0001, 0x0078, 0x4b75, -+ 0x1078, 0x4bd6, 0x2804, 0x0078, 0x4b51, 0x6000, 0x2c40, 0x0078, -+ 0x4b51, 0xd7fc, 0x00c0, 0x4b87, 0x7810, 0xd0ec, 0x00c0, 0x4b87, -+ 0x2069, 0x4e80, 0xc7fd, 0x2079, 0x0100, 0x0078, 0x4b30, 0x007c, -+ 0x2009, 0x0000, 0x20a9, 0x0200, 0x6008, 0xd09c, 0x0040, 0x4bc2, -+ 0x6024, 0xa005, 0x0040, 0x4b98, 0x8001, 0x6026, 0x0078, 0x4bc0, -+ 0x6008, 0xc09c, 0xd084, 0x00c0, 0x4ba0, 0xd0ac, 0x0040, 0x4bba, -+ 0x600a, 0x6004, 0xa005, 0x0040, 0x4bc2, 0x0d7e, 0x0c7e, 0x017e, -+ 0x2068, 0x6010, 0x8001, 0x6012, 0x1078, 0x3dd0, 0x2d00, 0x2c68, -+ 0x2060, 0x1078, 0x1e5b, 0x1078, 0x201d, 0x017f, 0x0c7f, 0x0d7f, -+ 0x0078, 0x4bc2, 0xc0bd, 0x600a, 0xa18d, 0x0001, 0x0078, 0x4bc2, -+ 0xa18d, 0x0100, 0xace0, 0x0010, 0x00f0, 0x4b8c, 0xa184, 0x0001, -+ 0x0040, 0x4bd1, 0xa18c, 0xfffe, 0x690e, 0x1078, 0x2628, 0x0078, -+ 0x4bd2, 0x690e, 0x007c, 0x00c0, 0x4bd2, 0x786c, 0x2c00, 0x687e, -+ 0x6714, 0x6f76, 0x6017, 0x0000, 0x602b, 0x0000, 0x601b, 0x0006, -+ 0x60b4, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, -+ 0x0060, 0x6022, 0x6000, 0x2042, 0x1078, 0x1de4, 0x6818, 0xa005, -+ 0x0040, 0x4bf4, 0x8001, 0x681a, 0x6808, 0xc0a4, 0x680a, 0x6810, -+ 0x7908, 0x8109, 0x790a, 0x8001, 0x00d0, 0x4c00, 0x1078, 0x296b, -+ 0x6812, 0x00c0, 0x4c06, 0x7910, 0xc1a5, 0x7912, 0x602f, 0x0000, -+ 0x6033, 0x0000, 0x2c68, 0x1078, 0x202c, 0xd7fc, 0x00c0, 0x4c14, -+ 0x2069, 0x4e40, 0x0078, 0x4c16, 0x2069, 0x4e80, 0x6910, 0xa184, -+ 0x0100, 0x2001, 0x0006, 0x00c0, 0x4c20, 0x697a, 0x2001, 0x0004, -+ 0x1078, 0x261c, 0x007c, 0x0d7e, 0x694c, 0x2160, 0xd7fc, 0x00c0, -+ 0x4c35, 0x7810, 0xd0ec, 0x0040, 0x4c31, 0x2069, 0x0100, 0x0078, -+ 0x4c37, 0x2069, 0x0200, 0x0078, 0x4c37, 0x2069, 0x0100, 0x1078, -+ 0x28df, 0x601b, 0x0006, 0x6858, 0xa084, 0x3f00, 0x601e, 0x6020, -+ 0xa084, 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f, 0x0000, 0x6033, -+ 0x0000, 0x6808, 0xa084, 0xfffd, 0x680a, 0x6830, 0xd0b4, 0x0040, -+ 0x4c69, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, 0xd094, 0x0040, -+ 0x4c5b, 0x00f0, 0x4c55, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, -+ 0xd084, 0x0040, 0x4c65, 0x00f0, 0x4c5f, 0x20a9, 0x00fa, 0x00f0, -+ 0x4c67, 0x681b, 0x0047, 0x0d7f, 0x6867, 0x0007, 0x007c, 0x2079, -+ 0x4e00, 0x1078, 0x4ca3, 0x1078, 0x4c89, 0x1078, 0x4c96, 0x2009, -+ 0x0002, 0x2069, 0x4e80, 0x680f, 0x0000, 0x6813, 0x0000, 0x6817, -+ 0x0000, 0x8109, 0x0040, 0x4c88, 0x2069, 0x4e40, 0x0078, 0x4c7b, -+ 0x007c, 0x7810, 0xd0ec, 0x0040, 0x4c91, 0x2019, 0x00cc, 0x0078, -+ 0x4c93, 0x2019, 0x007b, 0x7b3a, 0x7b3e, 0x007c, 0x7814, 0xd0e4, -+ 0x00c0, 0x4c9e, 0x2019, 0x0040, 0x0078, 0x4ca0, 0x2019, 0x0026, -+ 0x7b42, 0x7b46, 0x007c, 0x7814, 0xd0e4, 0x00c0, 0x4cab, 0x2019, -+ 0x3f94, 0x0078, 0x4cad, 0x2019, 0x2624, 0x7b32, 0x7b36, 0x007c, -+ 0x6a50, 0xa285, 0x0000, 0x0040, 0x4cdc, 0x6954, 0x6bc0, 0xa300, -+ 0x0c7e, 0x2164, 0x6304, 0x83ff, 0x00c0, 0x4cc8, 0x8211, 0x0040, -+ 0x4ccc, 0x8108, 0xa11a, 0x0048, 0x4cb9, 0x69c0, 0x0078, 0x4cb9, -+ 0x68d3, 0x000a, 0x0c7f, 0x007c, 0x6950, 0x6ac0, 0x2264, 0x602b, -+ 0x0000, 0x602f, 0x0000, 0x6008, 0xc0b5, 0x600a, 0x8210, 0x8109, -+ 0x00c0, 0x4cce, 0x6952, 0x0c7f, 0x007c, 0x00e0, 0x4cdd, 0x2091, -+ 0x6000, 0x00e0, 0x4ce1, 0x2091, 0x6000, 0x70ec, 0xd0dc, 0x00c0, -+ 0x4cee, 0xd0d4, 0x0040, 0x4d17, 0x0078, 0x4d1a, 0x2008, 0x7810, -+ 0xd0ec, 0x0040, 0x4d01, 0xd1c4, 0x00c0, 0x4d39, 0x7814, 0xc0c5, -+ 0x7816, 0x7810, 0xc0f5, 0x7812, 0xd0ec, 0x0040, 0x4d35, 0x0078, -+ 0x4d31, 0xae8e, 0x0100, 0x0040, 0x4d0e, 0x7814, 0xc0f5, 0xc0c5, -+ 0x7816, 0xd0d4, 0x00c0, 0x4d35, 0x0078, 0x4d31, 0x7814, 0xc0fd, -+ 0xc0c5, 0x7816, 0xd0d4, 0x00c0, 0x4d35, 0x0078, 0x4d31, 0xd0e4, -+ 0x0040, 0x4d37, 0x00e0, 0x4d1a, 0x2091, 0x6000, 0x2009, 0x000c, -+ 0x00e0, 0x4d20, 0x2091, 0x6000, 0x8109, 0x00c0, 0x4d20, 0x70e4, -+ 0xa084, 0x01ff, 0xa086, 0x01ff, 0x00c0, 0x4d31, 0x70ec, 0x0078, -+ 0x4cee, 0x7804, 0xd08c, 0x0040, 0x4d37, 0x681f, 0x000c, 0x70a0, -+ 0x70a2, 0x007c, 0x205b -+}; -+#else -+/************************************************************************ -+ * * -+ * --- ISP1240/ISP1080/ISP1280 Initiator/Target Firmware --- * -+ * 32 LUN Support * -+ * * -+ ************************************************************************/ -+/* -+ * Firmware Version 9.11.01 (15:46 May 23, 2000) -+ */ -+ -+static const u_int16_t isp_1080_risc_code[] = { -+ 0x0078, 0x103a, 0x0000, 0x4f62, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x3520, 0x514c, 0x4f47, 0x4943, -+ 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350, -+ 0x3132, 0x3430, 0x2049, 0x2f54, 0x2046, 0x6972, 0x6d77, 0x6172, -+ 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, 0x392e, 0x3131, -+ 0x2020, 0x2043, 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, -+ 0x3030, 0x2050, 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, -+ 0x3031, 0x2024, 0x20c9, 0xabff, 0x2001, 0x04fc, 0x2004, 0xa086, -+ 0x1080, 0x00c0, 0x104d, 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1, -+ 0x0010, 0x2089, 0x136f, 0x0078, 0x1066, 0x2001, 0x04fc, 0x2004, -+ 0xa086, 0x1280, 0x00c0, 0x1062, 0x2071, 0x0200, 0x70a0, 0x70a2, -+ 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010, 0x2089, 0x13f3, -+ 0x0078, 0x1066, 0x20c1, 0x0020, 0x2089, 0x1317, 0x2071, 0x0010, -+ 0x70c3, 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, -+ 0x70d3, 0x0009, 0x2001, 0x04fd, 0x70d6, 0x20c1, 0x0021, 0x2019, -+ 0x0000, 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec, 0x7fff, -+ 0x2d64, 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b, 0x5050, -+ 0x2114, 0xa286, 0xa5a5, 0x0040, 0x109d, 0xa386, 0x000f, 0x0040, -+ 0x1099, 0x2c6a, 0x2a5a, 0x20c1, 0x0020, 0x2019, 0x000f, 0x0078, -+ 0x1079, 0x2c6a, 0x2a5a, 0x0078, 0x109b, 0x2c6a, 0x2a5a, 0x2130, -+ 0x2128, 0xa1a2, 0x6000, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, -+ 0x8424, 0xa192, 0xac00, 0x2009, 0x0000, 0x2001, 0x0037, 0x1078, -+ 0x22c0, 0x2218, 0x2079, 0x6000, 0x2fa0, 0x2408, 0x2011, 0x0000, -+ 0x20a9, 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10b8, 0x2009, 0xff00, -+ 0x3400, 0xa102, 0x0048, 0x10c8, 0x0040, 0x10c8, 0x20a8, 0x42a4, -+ 0x2001, 0x04fc, 0x2004, 0xa086, 0x1080, 0x00c0, 0x10e0, 0x2071, -+ 0x0100, 0x0d7e, 0x2069, 0x6040, 0x1078, 0x5d94, 0x0d7f, 0x7808, -+ 0xc0ed, 0x780a, 0x7813, 0x0064, 0x2011, 0x000a, 0x0078, 0x1107, -+ 0x2001, 0x04fc, 0x2004, 0xa086, 0x1280, 0x00c0, 0x1100, 0x780c, -+ 0xc0ed, 0xc0d5, 0x780e, 0x7813, 0x0064, 0x2071, 0x0200, 0x0d7e, -+ 0x2069, 0x6040, 0x1078, 0x5d94, 0x2069, 0x6080, 0x2071, 0x0100, -+ 0x1078, 0x5d94, 0x780c, 0xc0d4, 0x780e, 0x0d7f, 0x0078, 0x1107, -+ 0x780c, 0xc0e5, 0x780e, 0x7813, 0x003c, 0x2011, 0x000c, 0x2009, -+ 0x604c, 0x220a, 0x2009, 0x608c, 0x220a, 0x7ece, 0x7cc6, 0x7bca, -+ 0x785f, 0x0000, 0x7800, 0xc08d, 0x7802, 0x2031, 0x0030, 0x78b3, -+ 0x0101, 0x781b, 0x0002, 0x781f, 0x0002, 0x2009, 0x0002, 0x2069, -+ 0x6040, 0x6817, 0x0003, 0x681f, 0x0007, 0x6823, 0x00fa, 0x6827, -+ 0x0008, 0x682b, 0x0028, 0x6837, 0x0006, 0x682f, 0x0008, 0x683b, -+ 0x0000, 0x8109, 0x0040, 0x1158, 0x68ef, 0x000a, 0x68df, 0x60c0, -+ 0x2079, 0x6000, 0x780c, 0xd0e4, 0x00c0, 0x1142, 0x68f3, 0x7329, -+ 0x0078, 0x1144, 0x68f3, 0x730d, 0x68e3, 0x65c0, 0x68e7, 0x64c0, -+ 0x68eb, 0xa5c0, 0x68c7, 0xaa8e, 0x68cb, 0xaa93, 0x68cf, 0xaa8e, -+ 0x68d3, 0xaa8e, 0x68c3, 0x0001, 0x2069, 0x6080, 0x0078, 0x1121, -+ 0x68ef, 0x000a, 0x68df, 0x62c0, 0x68f3, 0x7419, 0x68e3, 0x85c0, -+ 0x68e7, 0x6540, 0x68eb, 0xa6d0, 0x68c7, 0xaa93, 0x68cb, 0xaa98, -+ 0x68cf, 0xaa93, 0x68d3, 0xaa93, 0x68c3, 0x0001, 0x7808, 0xd0ec, -+ 0x00c0, 0x11b4, 0x780c, 0xd0e4, 0x00c0, 0x11a6, 0x0e7e, 0x2069, -+ 0x64c0, 0x2071, 0x0200, 0x70ec, 0xd0e4, 0x00c0, 0x1187, 0x2019, -+ 0x0c0c, 0x2021, 0x000c, 0x1078, 0x222c, 0x0078, 0x118d, 0x2019, -+ 0x0c0a, 0x2021, 0x000a, 0x1078, 0x222c, 0x2069, 0x6540, 0x2071, -+ 0x0100, 0x70ec, 0xd0e4, 0x00c0, 0x119d, 0x2019, 0x0c0c, 0x2021, -+ 0x000c, 0x1078, 0x222c, 0x0078, 0x11a3, 0x2019, 0x0c0a, 0x2021, -+ 0x000a, 0x1078, 0x222c, 0x0e7f, 0x0078, 0x11cd, 0x2019, 0x0c0c, -+ 0x2021, 0x000c, 0x2069, 0x64c0, 0x1078, 0x222c, 0x2069, 0x6540, -+ 0x1078, 0x222c, 0x0078, 0x11cd, 0x2069, 0x64c0, 0x0e7e, 0x2071, -+ 0x0100, 0x70ec, 0xd0e4, 0x00c0, 0x11c6, 0x2019, 0x0c0c, 0x2021, -+ 0x000c, 0x1078, 0x222c, 0x0e7f, 0x0078, 0x11cd, 0x2019, 0x0c0a, -+ 0x2021, 0x000a, 0x1078, 0x222c, 0x0e7f, 0x2011, 0x0002, 0x2069, -+ 0x65c0, 0x2009, 0x0002, 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, -+ 0x0040, 0x7bcc, 0xa386, 0xfeff, 0x00c0, 0x11e4, 0x6817, 0x0100, -+ 0x681f, 0x0064, 0x0078, 0x11e8, 0x6817, 0x0064, 0x681f, 0x0002, -+ 0xade8, 0x0010, 0x00f0, 0x11d5, 0x8109, 0x00c0, 0x11d3, 0x8211, -+ 0x0040, 0x11f6, 0x2069, 0x85c0, 0x0078, 0x11d1, 0x1078, 0x28df, -+ 0x1078, 0x56b4, 0x1078, 0x1e5e, 0x1078, 0x5d2a, 0x2091, 0x2100, -+ 0x2079, 0x6000, 0x7808, 0xd0ec, 0x0040, 0x120a, 0x2071, 0x0020, -+ 0x0078, 0x120c, 0x2071, 0x0050, 0x2091, 0x2200, 0x2079, 0x6000, -+ 0x2071, 0x0020, 0x2091, 0x2300, 0x2079, 0x6000, 0x7808, 0xd0ec, -+ 0x0040, 0x121e, 0x2079, 0x0100, 0x0078, 0x1220, 0x2079, 0x0200, -+ 0x2071, 0x6040, 0x2091, 0x2400, 0x2079, 0x0100, 0x2071, 0x6080, -+ 0x2091, 0x2000, 0x2079, 0x6000, 0x2071, 0x0010, 0x3200, 0xa085, -+ 0x303d, 0x2090, 0x70c3, 0x0000, 0x0090, 0x123d, 0x70c0, 0xa086, -+ 0x0002, 0x00c0, 0x123d, 0x1078, 0x15ae, 0x2039, 0x0000, 0x7808, -+ 0xd0ec, 0x00c0, 0x12c7, 0x1078, 0x1477, 0x78b0, 0xa005, 0x00c0, -+ 0x125f, 0x0068, 0x1253, 0x7868, 0xa065, 0x0040, 0x1253, 0x2029, -+ 0x0000, 0x1078, 0x2774, 0x1078, 0x22e7, 0x0068, 0x126c, 0x7868, -+ 0xa065, 0x0040, 0x125f, 0x2029, 0x0000, 0x1078, 0x2774, 0x0068, -+ 0x126c, 0x2009, 0x6046, 0x2011, 0x6086, 0x2104, 0x220c, 0xa105, -+ 0x0040, 0x126c, 0x1078, 0x1f9d, 0x0e7e, 0x0f7e, 0x2071, 0x6040, -+ 0x70c0, 0xa005, 0x0040, 0x1295, 0x7454, 0xa485, 0x0000, 0x0040, -+ 0x1295, 0x2079, 0x0200, 0x2091, 0x8000, 0x72f0, 0xa28c, 0x303d, -+ 0x2190, 0x1078, 0x2e28, 0x2091, 0x8000, 0x2091, 0x303d, 0x0068, -+ 0x1295, 0x0f7f, 0x7868, 0xa065, 0x0040, 0x1294, 0x0e7f, 0x2029, -+ 0x0000, 0x1078, 0x2774, 0x0e7e, 0x0f7e, 0x00e0, 0x129d, 0x0f7f, -+ 0x0e7f, 0x1078, 0x5b00, 0x0e7e, 0x0f7e, 0x2071, 0x6080, 0x70c0, -+ 0xa005, 0x0040, 0x12b6, 0x7454, 0xa485, 0x0000, 0x0040, 0x12b6, -+ 0x2079, 0x0100, 0x2091, 0x8000, 0x72f0, 0xa28c, 0x303d, 0x2190, -+ 0x1078, 0x2e28, 0x2091, 0x8000, 0x2091, 0x303d, 0x0f7f, 0x0e7f, -+ 0x0068, 0x12c1, 0x7868, 0xa065, 0x0040, 0x12c1, 0xa02e, 0x1078, -+ 0x2774, 0x00e0, 0x1243, 0x1078, 0x5b00, 0x0078, 0x1243, 0x1078, -+ 0x1477, 0x78b0, 0xa005, 0x00c0, 0x12e3, 0x0068, 0x12d7, 0x7868, -+ 0xa065, 0x0040, 0x12d7, 0x2029, 0x0000, 0x1078, 0x2774, 0x1078, -+ 0x22e7, 0x0068, 0x12ed, 0x7868, 0xa065, 0x0040, 0x12e3, 0x2029, -+ 0x0000, 0x1078, 0x2774, 0x0068, 0x12ed, 0x2009, 0x6046, 0x2104, -+ 0xa005, 0x0040, 0x12ed, 0x1078, 0x1f9d, 0x0e7e, 0x0f7e, 0x2071, -+ 0x6040, 0x70c0, 0xa005, 0x0040, 0x1305, 0x7454, 0xa485, 0x0000, -+ 0x0040, 0x1305, 0x2079, 0x0100, 0x2091, 0x8000, 0x72f0, 0x1078, -+ 0x2e28, 0x2091, 0x8000, 0x2091, 0x303d, 0x0f7f, 0x0e7f, 0x0068, -+ 0x1311, 0x7868, 0xa065, 0x0040, 0x1311, 0x2029, 0x0000, 0x1078, -+ 0x2774, 0x00e0, 0x12c7, 0x1078, 0x5b00, 0x0078, 0x12c7, 0x1337, -+ 0x1337, 0x1339, 0x1339, 0x1346, 0x1346, 0x1346, 0x1346, 0x1351, -+ 0x1351, 0x135e, 0x135e, 0x1346, 0x1346, 0x1346, 0x1346, 0x1337, -+ 0x1337, 0x1339, 0x1339, 0x1346, 0x1346, 0x1346, 0x1346, 0x1351, -+ 0x1351, 0x135e, 0x135e, 0x1346, 0x1346, 0x1346, 0x1346, 0x0078, -+ 0x1337, 0x007e, 0x107e, 0x127e, 0x2091, 0x2400, 0x1078, 0x2c19, -+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, -+ 0x127e, 0x1078, 0x13c3, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, -+ 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, 0x2c19, -+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, -+ 0x127e, 0x2091, 0x2300, 0x1078, 0x2c19, 0x2091, 0x2400, 0x1078, -+ 0x2c19, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x138f, -+ 0x138f, 0x1391, 0x1391, 0x139e, 0x139e, 0x139e, 0x139e, 0x13a9, -+ 0x13a9, 0x1391, 0x1391, 0x139e, 0x139e, 0x139e, 0x139e, 0x13aa, -+ 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, -+ 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x0078, -+ 0x138f, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, 0x2c19, -+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, -+ 0x127e, 0x1078, 0x13d0, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, -+ 0x007c, 0x007c, 0x107e, 0x127e, 0x0d7e, 0x0e7e, 0x0f7e, 0x007e, -+ 0x2071, 0x0100, 0x2069, 0x6040, 0x2079, 0x6000, 0x70ec, 0xa084, -+ 0x1c00, 0x78e6, 0x1078, 0x5d94, 0x007f, 0x0f7f, 0x0e7f, 0x0d7f, -+ 0x127f, 0x107f, 0x007c, 0x3c00, 0xa084, 0x0007, 0x0079, 0x13c8, -+ 0x13d9, 0x13d9, 0x13db, 0x13db, 0x13e0, 0x13e0, 0x13e5, 0x13e5, -+ 0x3c00, 0xa084, 0x0003, 0x0079, 0x13d5, 0x13d9, 0x13d9, 0x13ee, -+ 0x13ee, 0x1078, 0x2bfa, 0x2091, 0x2200, 0x1078, 0x578c, 0x007c, -+ 0x2091, 0x2100, 0x1078, 0x578c, 0x007c, 0x2091, 0x2100, 0x1078, -+ 0x578c, 0x2091, 0x2200, 0x1078, 0x578c, 0x007c, 0x2091, 0x2100, -+ 0x1078, 0x578c, 0x007c, 0x1413, 0x1413, 0x1415, 0x1415, 0x1422, -+ 0x1422, 0x1422, 0x1422, 0x142d, 0x142d, 0x143a, 0x143a, 0x1422, -+ 0x1422, 0x1422, 0x1422, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, -+ 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, -+ 0x144b, 0x144b, 0x144b, 0x0078, 0x1413, 0x007e, 0x107e, 0x127e, -+ 0x2091, 0x2400, 0x1078, 0x2c19, 0x127f, 0x107f, 0x007f, 0x2091, -+ 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13c3, 0x127f, -+ 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, -+ 0x2091, 0x2300, 0x1078, 0x2c19, 0x127f, 0x107f, 0x007f, 0x2091, -+ 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, -+ 0x2c19, 0x2091, 0x2400, 0x1078, 0x2c19, 0x127f, 0x107f, 0x007f, -+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x0d7e, 0x0e7e, -+ 0x0f7e, 0x2079, 0x6000, 0x2071, 0x0200, 0x2069, 0x6040, 0x3d00, -+ 0xd08c, 0x0040, 0x1461, 0x70ec, 0xa084, 0x1c00, 0x78e6, 0x1078, -+ 0x5d94, 0x3d00, 0xd084, 0x0040, 0x146f, 0x2069, 0x6080, 0x2071, -+ 0x0100, 0x70ec, 0xa084, 0x1c00, 0x78ea, 0x1078, 0x5d94, 0x0f7f, -+ 0x0e7f, 0x0d7f, 0x127f, 0x107f, 0x007f, 0x007c, 0x007c, 0x0068, -+ 0x14fd, 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x14fd, -+ 0x7820, 0xa005, 0x00c0, 0x1488, 0x0010, 0x14fe, 0x0078, 0x14fd, -+ 0x7908, 0xd1f4, 0x0040, 0x1490, 0x2001, 0x4007, 0x0078, 0x15b0, -+ 0x790c, 0xd1ec, 0x0040, 0x14ab, 0xd0fc, 0x0040, 0x14a1, 0x007e, -+ 0x1078, 0x1dd3, 0x007f, 0x0040, 0x14ab, 0x2001, 0x4007, 0x0078, -+ 0x15b0, 0x007e, 0x1078, 0x1dc7, 0x007f, 0x0040, 0x14ab, 0x2001, -+ 0x4007, 0x0078, 0x15b0, 0x7908, 0xd0fc, 0x00c0, 0x14b5, 0x2061, -+ 0x6040, 0xc19c, 0xc7fc, 0x0078, 0x14b9, 0x2061, 0x6080, 0xc19d, -+ 0xc7fd, 0x6068, 0xa005, 0x00c0, 0x14fd, 0x790a, 0x6087, 0x0000, -+ 0x7820, 0xc0fc, 0xa086, 0x0018, 0x00c0, 0x14ca, 0x0c7e, 0x1078, -+ 0x1aed, 0x0c7f, 0x7823, 0x0000, 0x6080, 0xa065, 0x0040, 0x14e3, -+ 0x0c7e, 0x609c, 0x1078, 0x1edb, 0x0c7f, 0x609f, 0x0000, 0x1078, -+ 0x1c18, 0x2009, 0x000c, 0x6007, 0x0103, 0x1078, 0x1ddf, 0x00c0, -+ 0x14f7, 0x1078, 0x1e43, 0x7808, 0xd09c, 0x00c0, 0x14eb, 0x2061, -+ 0x6040, 0x0078, 0x14ee, 0x2061, 0x6080, 0xc09c, 0x6083, 0x0000, -+ 0x780a, 0x60f0, 0xd0dc, 0x0040, 0x14fb, 0xc0dc, 0x60f2, 0x2001, -+ 0x4005, 0x0078, 0x15b0, 0x0078, 0x15ae, 0x007c, 0x7808, 0xd0f4, -+ 0x0040, 0x1506, 0x2001, 0x4007, 0x0078, 0x15b0, 0x70c3, 0x0000, -+ 0x70c7, 0x0000, 0x70cb, 0x0000, 0x70cf, 0x0000, 0x70db, 0x0000, -+ 0x71c4, 0x7a08, 0xd2ec, 0x0040, 0x1516, 0xc1fc, 0x70c0, 0xa03d, -+ 0xa092, 0x0030, 0x00c8, 0x151e, 0x0079, 0x1525, 0x2200, 0xa092, -+ 0x0050, 0x00c8, 0x15bc, 0x0079, 0x1555, 0x15ae, 0x1604, 0x15cd, -+ 0x1619, 0x1628, 0x162e, 0x15c4, 0x1c30, 0x1632, 0x15bc, 0x15d1, -+ 0x15d3, 0x15d5, 0x15d7, 0x1c35, 0x15bc, 0x1640, 0x1698, 0x1b0f, -+ 0x1c2a, 0x15d9, 0x1949, 0x198b, 0x19c6, 0x1a13, 0x1902, 0x1910, -+ 0x1924, 0x1938, 0x175e, 0x15bc, 0x16c9, 0x16cd, 0x16d9, 0x16e5, -+ 0x16fb, 0x1707, 0x170a, 0x1716, 0x1722, 0x172a, 0x1746, 0x1752, -+ 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x176b, 0x177a, 0x1795, 0x17cb, -+ 0x17f3, 0x1803, 0x1806, 0x182f, 0x1860, 0x1872, 0x18d4, 0x18e4, -+ 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x18f4, 0x15bc, 0x15bc, 0x15bc, -+ 0x15bc, 0x15bc, 0x1d7e, 0x1d84, 0x15bc, 0x15bc, 0x15bc, 0x1d88, -+ 0x1d8d, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15fe, 0x1613, 0x163a, -+ 0x1692, 0x1b09, 0x1c4c, 0x1c72, 0x1ad0, 0x1c8a, 0x1d91, 0x1d70, -+ 0x1d7a, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, -+ 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, -+ 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, -+ 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, -+ 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x15bc, 0x72ca, 0x71c6, 0x2001, -+ 0x4006, 0x0078, 0x15b0, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, -+ 0x70c2, 0x0068, 0x15b1, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, -+ 0x5000, 0x2091, 0x4080, 0x007c, 0x70c3, 0x4001, 0x0078, 0x15b1, -+ 0x70c3, 0x4006, 0x0078, 0x15b1, 0x2099, 0x0041, 0x20a1, 0x0041, -+ 0x20a9, 0x0005, 0x53a3, 0x0078, 0x15ae, 0x70c4, 0x70c3, 0x0004, -+ 0x007a, 0x0078, 0x15ae, 0x0078, 0x15ae, 0x0078, 0x15ae, 0x0078, -+ 0x15ae, 0x2091, 0x8000, 0x70c3, 0x0000, 0x70c7, 0x4953, 0x70cb, -+ 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0009, 0x2001, 0x000b, 0x70d6, -+ 0x2079, 0x0000, 0x781b, 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, -+ 0x2029, 0x041a, 0x2051, 0x0445, 0x2061, 0x0447, 0x20c1, 0x0020, -+ 0x2091, 0x5000, 0x2091, 0x4080, 0x0078, 0x0418, 0x75d8, 0x74dc, -+ 0x75da, 0x74de, 0x0078, 0x1607, 0x2029, 0x0000, 0x2520, 0x71d0, -+ 0x73c8, 0x72cc, 0x70c4, 0x1078, 0x1ff2, 0x0040, 0x15ae, 0x70c3, -+ 0x4002, 0x0078, 0x15ae, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, -+ 0x161c, 0x2029, 0x0000, 0x2520, 0x71d0, 0x73c8, 0x72cc, 0x70c4, -+ 0x1078, 0x203c, 0x0040, 0x15ae, 0x70c3, 0x4002, 0x0078, 0x15ae, -+ 0x71c4, 0x70c8, 0x2114, 0x200a, 0x0078, 0x15ac, 0x71c4, 0x2114, -+ 0x0078, 0x15ac, 0x70c7, 0x0009, 0x70cb, 0x000b, 0x70cf, 0x0001, -+ 0x0078, 0x15ae, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, 0x1643, -+ 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6, -+ 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x0040, 0x168c, 0xa40a, 0x0040, -+ 0x1653, 0x00c8, 0x15b0, 0x8001, 0x786e, 0xa084, 0xfc00, 0x0040, -+ 0x1660, 0x78b0, 0xc085, 0x78b2, 0x2001, 0x4005, 0x0078, 0x15b0, -+ 0x7a76, 0x7b7a, 0x7d7e, 0x7e82, 0x7c72, 0xa48c, 0xff00, 0x0040, -+ 0x1678, 0x8407, 0x8004, 0x8004, 0x810c, 0x810c, 0x810f, 0xa118, -+ 0xa291, 0x0000, 0xa6b1, 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1682, -+ 0x8407, 0x8004, 0x8004, 0xa318, 0xa291, 0x0000, 0xa6b1, 0x0000, -+ 0xa5a9, 0x0000, 0x731a, 0x721e, 0x7622, 0x7526, 0x78b0, 0xa084, -+ 0xfffc, 0x78b2, 0x0078, 0x1690, 0x78b0, 0xa085, 0x0001, 0x78b2, -+ 0x0078, 0x15ae, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, 0x169b, -+ 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6, -+ 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x0040, 0x16c3, 0xa40a, 0x0040, -+ 0x16ab, 0x00c8, 0x15b0, 0x8001, 0x7892, 0xa084, 0xfc00, 0x0040, -+ 0x16b8, 0x78b0, 0xc0c5, 0x78b2, 0x2001, 0x4005, 0x0078, 0x15b0, -+ 0x7a9a, 0x7b9e, 0x7da2, 0x7ea6, 0x7c96, 0x78b0, 0xa084, 0xfcff, -+ 0x78b2, 0x0078, 0x16c7, 0x78b0, 0xa085, 0x0100, 0x78b2, 0x0078, -+ 0x15ae, 0x7960, 0x7ac8, 0x0078, 0x15ac, 0x2009, 0x6047, 0x210c, -+ 0x7808, 0xd0ec, 0x00c0, 0x15ad, 0x2011, 0x6087, 0x2214, 0x0078, -+ 0x15ac, 0x2009, 0x6048, 0x210c, 0x7808, 0xd0ec, 0x00c0, 0x15ad, -+ 0x2011, 0x6088, 0x2214, 0x0078, 0x15ac, 0x2061, 0x6040, 0x6124, -+ 0x6228, 0x8214, 0x8214, 0x8214, 0x7808, 0xd0ec, 0x00c0, 0x16f9, -+ 0x2061, 0x6080, 0x6324, 0x73da, 0x6328, 0x831c, 0x831c, 0x831c, -+ 0x73de, 0x0078, 0x15ac, 0x2009, 0x604b, 0x210c, 0x7808, 0xd0ec, -+ 0x00c0, 0x15ad, 0x2011, 0x608b, 0x2214, 0x0078, 0x15ac, 0x7910, -+ 0x0078, 0x15ad, 0x2009, 0x0202, 0x210c, 0x7808, 0xd0ec, 0x00c0, -+ 0x15ad, 0x2011, 0x0102, 0x2214, 0x0078, 0x15ac, 0x2009, 0x604d, -+ 0x210c, 0x7808, 0xd0ec, 0x00c0, 0x15ad, 0x2011, 0x608d, 0x2214, -+ 0x0078, 0x15ac, 0x7918, 0x7808, 0xd0ec, 0x00c0, 0x15ad, 0x7a1c, -+ 0x0078, 0x15ac, 0xd1fc, 0x00c0, 0x1731, 0x2011, 0x64c0, 0x0078, -+ 0x1733, 0x2011, 0x6540, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, -+ 0x8003, 0xa268, 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040, 0x1743, -+ 0x6b08, 0x0078, 0x1744, 0x6b0c, 0x0078, 0x15ab, 0x2138, 0x1078, -+ 0x1e6e, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, -+ 0x0078, 0x15ab, 0x2061, 0x6040, 0x6114, 0x7808, 0xd0ec, 0x00c0, -+ 0x15ad, 0x2061, 0x6080, 0x6214, 0x0078, 0x15ac, 0x2138, 0x1078, -+ 0x1e6e, 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, 0x77da, 0x2091, -+ 0x8001, 0x0078, 0x15ab, 0x2110, 0xa294, 0x000f, 0xa282, 0x0010, -+ 0x00c8, 0x15a6, 0x1078, 0x2a23, 0xd3f4, 0x0040, 0x1778, 0xc2ad, -+ 0x0078, 0x15ab, 0x2100, 0xc0bc, 0xa082, 0x0010, 0x00c8, 0x15a6, -+ 0xd1bc, 0x00c0, 0x1788, 0x2011, 0x6047, 0x2204, 0x0078, 0x178c, -+ 0x2011, 0x6087, 0x2204, 0xc0bd, 0x007e, 0x2100, 0xc0bc, 0x2012, -+ 0x1078, 0x297e, 0x017f, 0x0078, 0x15ad, 0x71c4, 0x2021, 0x6048, -+ 0x2404, 0x70c6, 0x2019, 0x0000, 0x0078, 0x17a4, 0x71c8, 0x2021, -+ 0x6088, 0x2404, 0x70ca, 0xc3fd, 0x2011, 0x17c3, 0x20a9, 0x0008, -+ 0x2204, 0xa106, 0x0040, 0x17b3, 0x8210, 0x00f0, 0x17a8, 0x71c4, -+ 0x72c8, 0x0078, 0x15a5, 0xa292, 0x17c3, 0x027e, 0x2122, 0x017f, -+ 0x1078, 0x29a1, 0x7808, 0xd0ec, 0x00c0, 0x17c1, 0xd3fc, 0x0040, -+ 0x179e, 0x0078, 0x15ae, 0x03e8, 0x00fa, 0x01f4, 0x02ee, 0x0004, -+ 0x0001, 0x0002, 0x0003, 0x2061, 0x6040, 0x6124, 0x6228, 0x8214, -+ 0x8214, 0x8214, 0x70c4, 0x6026, 0x70c8, 0x8003, 0x8003, 0x8003, -+ 0x602a, 0x7808, 0xd0ec, 0x00c0, 0x17f1, 0x027e, 0x017e, 0x2061, -+ 0x6080, 0x6124, 0x6228, 0x8214, 0x8214, 0x8214, 0x70d8, 0x6026, -+ 0x70dc, 0x8003, 0x8003, 0x8003, 0x602a, 0x71da, 0x72de, 0x017f, -+ 0x027f, 0x0078, 0x15ac, 0x2061, 0x6040, 0x612c, 0x70c4, 0x602e, -+ 0x7808, 0xd0ec, 0x00c0, 0x15ad, 0x2061, 0x6080, 0x622c, 0x70c8, -+ 0x602e, 0x0078, 0x15ac, 0x7910, 0x0078, 0x15ad, 0x71c4, 0xa184, -+ 0xffcf, 0x0040, 0x1812, 0x7808, 0xd0ec, 0x00c0, 0x15a6, 0x72c8, -+ 0x0078, 0x15a5, 0x007e, 0x2019, 0x0000, 0x1078, 0x2a08, 0x7808, -+ 0xd0ec, 0x0040, 0x181e, 0x017f, 0x0078, 0x15ad, 0x71c8, 0xa184, -+ 0xffcf, 0x0040, 0x1827, 0x2110, 0x71c4, 0x0078, 0x15a5, 0x007e, -+ 0xc3fd, 0x1078, 0x2a08, 0x027f, 0x017f, 0x0078, 0x15ac, 0x71c4, -+ 0xa182, 0x0010, 0x0048, 0x183b, 0x7808, 0xd0ec, 0x00c0, 0x15a6, -+ 0x72c8, 0x0078, 0x15a5, 0x2011, 0x604d, 0x2204, 0x007e, 0x2112, -+ 0x2019, 0x0000, 0x1078, 0x29e6, 0x7808, 0xd0ec, 0x0040, 0x184b, -+ 0x017f, 0x0078, 0x15ad, 0x71c8, 0xa182, 0x0010, 0x0048, 0x1854, -+ 0x2110, 0x71c4, 0x0078, 0x15a5, 0x2011, 0x608d, 0x2204, 0x007e, -+ 0x2112, 0xc3fd, 0x1078, 0x29e6, 0x027f, 0x017f, 0x0078, 0x15ac, -+ 0x71c4, 0x72c8, 0xa184, 0xfffd, 0x00c0, 0x15a5, 0xa284, 0xfffd, -+ 0x00c0, 0x15a5, 0x2100, 0x7918, 0x781a, 0x2200, 0x7a1c, 0x781e, -+ 0x0078, 0x15ac, 0x017e, 0xd1fc, 0x00c0, 0x187a, 0x2011, 0x64c0, -+ 0x0078, 0x187c, 0x2011, 0x6540, 0x8107, 0xa084, 0x000f, 0x8003, -+ 0x8003, 0x8003, 0xa268, 0xa01e, 0x72c8, 0x2091, 0x8000, 0x6800, -+ 0x007e, 0xa226, 0x0040, 0x18a8, 0x6a02, 0xa484, 0x2000, 0x0040, -+ 0x1893, 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x1899, 0xa39d, -+ 0x0008, 0xa484, 0x4000, 0x0040, 0x18a8, 0x810f, 0xa284, 0x4000, -+ 0x0040, 0x18a6, 0x1078, 0x2a65, 0x0078, 0x18a8, 0x1078, 0x2a43, -+ 0x72cc, 0x6808, 0xa206, 0x0040, 0x18ca, 0xa2a4, 0x00ff, 0x780c, -+ 0xd0e4, 0x00c0, 0x18bb, 0xa482, 0x0028, 0x0048, 0x18c7, 0x0040, -+ 0x18c7, 0x0078, 0x18bf, 0xa482, 0x0043, 0x0048, 0x18c7, 0x027f, -+ 0x72ca, 0x017f, 0x71c6, 0x2091, 0x8001, 0x0078, 0x15a7, 0x6a0a, -+ 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x017f, -+ 0x2091, 0x8001, 0x0078, 0x15ab, 0x2138, 0x1078, 0x1e6e, 0x2091, -+ 0x8000, 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, -+ 0x681e, 0x2708, 0x0078, 0x15ab, 0x70c4, 0x2061, 0x6040, 0x6114, -+ 0x6016, 0x7808, 0xd0ec, 0x00c0, 0x15ad, 0x70c8, 0x2061, 0x6080, -+ 0x6214, 0x6016, 0x0078, 0x15ac, 0x72c8, 0x73cc, 0xa182, 0x0010, -+ 0x00c8, 0x15a6, 0x1078, 0x2a87, 0xd3f4, 0x0040, 0x1900, 0xc2ad, -+ 0x0078, 0x15ab, 0x2138, 0x1078, 0x1e6e, 0x2091, 0x8000, 0x6a08, -+ 0xa295, 0x0002, 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x15ac, -+ 0x2138, 0x1078, 0x1e6e, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9, -+ 0x6a0a, 0x6804, 0xa005, 0x0040, 0x191f, 0x1078, 0x2852, 0x2091, -+ 0x8001, 0x2708, 0x0078, 0x15ac, 0x2138, 0x1078, 0x1e6e, 0x2091, -+ 0x8000, 0x6a08, 0xa295, 0x0004, 0x6a0a, 0x6804, 0xa005, 0x0040, -+ 0x1933, 0x1078, 0x2852, 0x2091, 0x8001, 0x2708, 0x0078, 0x15ac, -+ 0x2138, 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, -+ 0x8000, 0x1078, 0x1e83, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078, -+ 0x15ac, 0x2138, 0x780c, 0xd0e4, 0x00c0, 0x195d, 0xd7fc, 0x0040, -+ 0x1957, 0x1078, 0x1dd3, 0x0040, 0x195d, 0x0078, 0x15b0, 0x1078, -+ 0x1dc7, 0x0040, 0x195d, 0x0078, 0x15b0, 0x73c8, 0x72cc, 0x77c6, -+ 0x73ca, 0x72ce, 0x1078, 0x1f20, 0x00c0, 0x1987, 0x6818, 0xa005, -+ 0x0040, 0x1981, 0x2708, 0x077e, 0x1078, 0x2ab0, 0x077f, 0x00c0, -+ 0x1981, 0x2001, 0x0015, 0xd7fc, 0x00c0, 0x197a, 0x2061, 0x6040, -+ 0x0078, 0x197d, 0xc0fd, 0x2061, 0x6080, 0x7822, 0x2091, 0x8001, -+ 0x007c, 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x15b0, 0x2091, -+ 0x8001, 0x0078, 0x15ae, 0x2138, 0x780c, 0xd0e4, 0x00c0, 0x199f, -+ 0xd7fc, 0x0040, 0x1999, 0x1078, 0x1dd3, 0x0040, 0x199f, 0x0078, -+ 0x15b0, 0x1078, 0x1dc7, 0x0040, 0x199f, 0x0078, 0x15b0, 0x77c6, -+ 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, -+ 0x1078, 0x1e83, 0x2009, 0x0016, 0xd7fc, 0x00c0, 0x19b3, 0x2061, -+ 0x6040, 0x0078, 0x19b6, 0x2061, 0x6080, 0xc1fd, 0x606b, 0x0003, -+ 0x6083, 0x0000, 0x677a, 0x6087, 0x000f, 0x7922, 0x61f0, 0xc1dc, -+ 0x61f2, 0x1078, 0x2852, 0x2091, 0x8001, 0x007c, 0x77c8, 0x77ca, -+ 0x2138, 0x77c6, 0x780c, 0xd0e4, 0x00c0, 0x19dd, 0xd7fc, 0x0040, -+ 0x19d7, 0x1078, 0x1dd3, 0x0040, 0x19dd, 0x0078, 0x15b0, 0x1078, -+ 0x1dc7, 0x0040, 0x19dd, 0x0078, 0x15b0, 0xa7bc, 0xff00, 0x2091, -+ 0x8000, 0x2009, 0x0017, 0xd7fc, 0x00c0, 0x19ea, 0x2061, 0x6040, -+ 0x0078, 0x19ed, 0x2061, 0x6080, 0xc1fd, 0x6083, 0x0000, 0x606b, -+ 0x0002, 0x677a, 0x6087, 0x000f, 0x7922, 0x61f0, 0xc1dc, 0x61f2, -+ 0x1078, 0x2852, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0010, -+ 0x70c8, 0xa005, 0x0040, 0x1a07, 0x60f0, 0xc0fd, 0x60f2, 0x1078, -+ 0x1e83, 0x70c8, 0x6836, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1a07, -+ 0x2091, 0x8001, 0x007c, 0x2019, 0x0000, 0x2011, 0x0000, 0x7808, -+ 0xd0ec, 0x00c0, 0x1a2f, 0x72c8, 0x780c, 0xd0e4, 0x00c0, 0x1a2f, -+ 0xd284, 0x0040, 0x1a29, 0x1078, 0x1dd3, 0x0040, 0x1a2f, 0x0078, -+ 0x15b0, 0x1078, 0x1dc7, 0x0040, 0x1a2f, 0x0078, 0x15b0, 0x72ca, -+ 0x78b0, 0xa084, 0x0003, 0x00c0, 0x1a59, 0x2039, 0x0000, 0xd284, -+ 0x0040, 0x1a3b, 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, -+ 0x0008, 0x1078, 0x1e6e, 0x2091, 0x8000, 0x6808, 0xc0d4, 0xa80d, -+ 0x690a, 0x2091, 0x8001, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1a41, -+ 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, -+ 0x1a41, 0x2091, 0x8000, 0x7808, 0xd0ec, 0x0040, 0x1a63, 0x2069, -+ 0x0100, 0x0078, 0x1a6d, 0x72c8, 0xd284, 0x00c0, 0x1a6b, 0x2069, -+ 0x0200, 0x0078, 0x1a6d, 0x2069, 0x0100, 0x6808, 0xa084, 0xfffd, -+ 0x680a, 0x6830, 0xa084, 0x0040, 0x0040, 0x1a90, 0x684b, 0x0004, -+ 0x20a9, 0x0014, 0x6848, 0xa084, 0x0004, 0x0040, 0x1a81, 0x00f0, -+ 0x1a7a, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, -+ 0x0040, 0x1a8c, 0x00f0, 0x1a85, 0x20a9, 0x00fa, 0x00f0, 0x1a8e, -+ 0x2079, 0x6000, 0x2009, 0x0018, 0x7808, 0xd0ec, 0x00c0, 0x1a9c, -+ 0x72c8, 0xd284, 0x00c0, 0x1aa0, 0x2061, 0x6040, 0x0078, 0x1aa3, -+ 0x2061, 0x6080, 0xc1fd, 0x6083, 0x0000, 0x7922, 0x606b, 0x0001, -+ 0x6087, 0x000f, 0x60c3, 0x0000, 0x60c4, 0x60ce, 0x60d2, 0x60f0, -+ 0xd0b4, 0x0040, 0x1abf, 0xc0b4, 0x60f2, 0x0c7e, 0x60d4, 0xa065, -+ 0x6008, 0xc0d4, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x60f0, -+ 0xa084, 0x77ff, 0x60f2, 0x78b0, 0xa085, 0x0002, 0x78b2, 0x83ff, -+ 0x0040, 0x1acb, 0x007c, 0x681b, 0x0048, 0x2091, 0x8001, 0x007c, -+ 0x73cc, 0x1078, 0x1a15, 0x69ec, 0x6a48, 0xa185, 0x1800, 0x684a, -+ 0xa185, 0x0040, 0x68ee, 0x73cc, 0x2021, 0x0004, 0x20a9, 0x09ff, -+ 0x00f0, 0x1ae0, 0x8421, 0x00c0, 0x1ade, 0x8319, 0x00c0, 0x1adc, -+ 0x69ee, 0x6a4a, 0x2091, 0x8001, 0x007c, 0xd7fc, 0x00c0, 0x1af4, -+ 0x2069, 0x6040, 0x0078, 0x1af6, 0x2069, 0x6080, 0x71c4, 0x71c6, -+ 0x6912, 0x81ff, 0x00c0, 0x1afe, 0x68c3, 0x0001, 0x78b0, 0xa084, -+ 0xfffd, 0x78b2, 0xa084, 0x0001, 0x00c0, 0x1b08, 0x1078, 0x1f79, -+ 0x007c, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1b12, 0x2029, -+ 0x0000, 0x2520, 0x71c4, 0x73c8, 0x72cc, 0x71c6, 0x73ca, 0x72ce, -+ 0x2079, 0x6000, 0x7de2, 0x7cde, 0x7bda, 0x7ad6, 0x1078, 0x1e25, -+ 0x0040, 0x1c14, 0x20a9, 0x0005, 0x20a1, 0x6012, 0x2091, 0x8000, -+ 0x41a1, 0x2091, 0x8001, 0x2009, 0x0040, 0x1078, 0x21f4, 0x0040, -+ 0x1b35, 0x1078, 0x1e43, 0x0078, 0x1c14, 0x6004, 0xa08c, 0x00ff, -+ 0xa18e, 0x0009, 0x00c0, 0x1b40, 0x007e, 0x1078, 0x2750, 0x007f, -+ 0xa084, 0xff00, 0x8007, 0x8009, 0x0040, 0x1bb3, 0x0c7e, 0x2c68, -+ 0x1078, 0x1e25, 0x0040, 0x1b86, 0x2c00, 0x689e, 0x8109, 0x00c0, -+ 0x1b47, 0x609f, 0x0000, 0x0c7f, 0x0c7e, 0x7de0, 0x7cdc, 0x7bd8, -+ 0x7ad4, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, -+ 0x0000, 0x7de2, 0x7cde, 0x7bda, 0x7ad6, 0x2c68, 0x689c, 0xa065, -+ 0x0040, 0x1bb2, 0x2009, 0x0040, 0x1078, 0x21f4, 0x00c0, 0x1b9c, -+ 0x6004, 0xa084, 0x00ff, 0xa086, 0x0002, 0x00c0, 0x1b86, 0x6004, -+ 0xa084, 0x00ff, 0xa086, 0x000a, 0x00c0, 0x1b82, 0x017e, 0x1078, -+ 0x274c, 0x017f, 0x2d00, 0x6002, 0x0078, 0x1b55, 0x0c7f, 0x0c7e, -+ 0x609c, 0x1078, 0x1edb, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1c18, -+ 0x2009, 0x000c, 0x6008, 0xa085, 0x0200, 0x600a, 0x1078, 0x1ddf, -+ 0x1078, 0x1e43, 0x0078, 0x1c14, 0x0c7f, 0x0c7e, 0x609c, 0x1078, -+ 0x1edb, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1c18, 0x2009, 0x000c, -+ 0x6007, 0x0103, 0x601b, 0x0003, 0x1078, 0x1ddf, 0x1078, 0x1e43, -+ 0x0078, 0x1c14, 0x0c7f, 0x780c, 0xd0e4, 0x00c0, 0x1bd8, 0x6114, -+ 0xd1fc, 0x0040, 0x1bc1, 0x1078, 0x1dd3, 0x0040, 0x1bd8, 0x0078, -+ 0x1bc5, 0x1078, 0x1dc7, 0x0040, 0x1bd8, 0x2029, 0x0000, 0x2520, -+ 0x2009, 0x0018, 0x73c8, 0x72cc, 0x6087, 0x0103, 0x601b, 0x0021, -+ 0x1078, 0x1ddf, 0x1078, 0x1e43, 0x2001, 0x4007, 0x0078, 0x15b0, -+ 0x74c4, 0x73c8, 0x72cc, 0x6014, 0x2091, 0x8000, 0x0e7e, 0x2009, -+ 0x0012, 0xd0fc, 0x00c0, 0x1be8, 0x2071, 0x6040, 0x0078, 0x1beb, -+ 0x2071, 0x6080, 0xc1fd, 0x7922, 0x706b, 0x0005, 0x71f0, 0xc1dc, -+ 0x71f2, 0x736e, 0x7272, 0x7476, 0x707a, 0x707f, 0x0000, 0x2c00, -+ 0x7082, 0xa02e, 0x2530, 0x611c, 0x61a2, 0xa184, 0x0060, 0x0040, -+ 0x1c03, 0x1078, 0x564a, 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, -+ 0x60af, 0x0000, 0x60b3, 0x0000, 0x6714, 0x6023, 0x0000, 0x1078, -+ 0x2852, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078, 0x15b1, -+ 0x20a9, 0x0005, 0x2099, 0x6012, 0x2091, 0x8000, 0x530a, 0x2091, -+ 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, -+ 0x0000, 0x007c, 0x71c4, 0x70c7, 0x0000, 0x7916, 0x0078, 0x15ae, -+ 0x71c4, 0x71c6, 0x2168, 0x0078, 0x1c37, 0x2069, 0x1000, 0x690c, -+ 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0, 0x1c39, 0xa285, -+ 0x0000, 0x00c0, 0x1c47, 0x70c3, 0x4000, 0x0078, 0x1c49, 0x70c3, -+ 0x4003, 0x70ca, 0x0078, 0x15b1, 0x2011, 0x6064, 0xa03e, 0x7908, -+ 0xd1ec, 0x00c0, 0x1c6a, 0x77c8, 0xd7fc, 0x0040, 0x1c59, 0x2011, -+ 0x60a4, 0x220c, 0x007e, 0x037e, 0x047e, 0x1078, 0x482c, 0x70c4, -+ 0xd0fc, 0x047f, 0x037f, 0x007f, 0x00c0, 0x1c6a, 0xa184, 0x7fff, -+ 0x0078, 0x1c6e, 0x1078, 0x480c, 0xa185, 0x8000, 0x2012, 0x2710, -+ 0x0078, 0x15ac, 0x017e, 0x2100, 0xc1fc, 0x1078, 0x47fa, 0x017f, -+ 0xd1fc, 0x00c0, 0x1c7f, 0x2001, 0x6064, 0x0078, 0x1c81, 0x2001, -+ 0x60a4, 0x2004, 0xa084, 0x8000, 0x6100, 0xa10d, 0x6204, 0x6308, -+ 0x0078, 0x15ab, 0x0c7e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2091, 0x8000, -+ 0x2061, 0x0010, 0x60c4, 0xd0fc, 0x00c0, 0x1ca8, 0x2071, 0x6040, -+ 0x7808, 0xd0ec, 0x0040, 0x1ca2, 0x2079, 0x0100, 0x2019, 0x0020, -+ 0x0078, 0x1cae, 0x2079, 0x0200, 0x2019, 0x0050, 0x0078, 0x1cae, -+ 0x2071, 0x6080, 0x2079, 0x0100, 0x2019, 0x0020, 0x7094, 0xa06d, -+ 0x0040, 0x1d66, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0007, 0x0040, -+ 0x1cbd, 0xa286, 0x000f, 0x00c0, 0x1d66, 0x691c, 0xa184, 0x00c0, -+ 0x0040, 0x1d66, 0xa186, 0x00c0, 0x0040, 0x1d66, 0x6824, 0xa084, -+ 0xff00, 0xa085, 0x0019, 0x6826, 0x2368, 0x7830, 0xa084, 0x0040, -+ 0x00c0, 0x1ccd, 0xa184, 0x0080, 0x00c0, 0x1d36, 0x78e4, 0xa084, -+ 0x0007, 0x8001, 0x00c0, 0x1cd6, 0x71a4, 0x81ff, 0x0040, 0x1cec, -+ 0x6807, 0x0010, 0x6908, 0x6808, 0xa106, 0x00c0, 0x1ce2, 0x6804, -+ 0xa084, 0x0010, 0x00c0, 0x1ce7, 0x78b8, 0xa084, 0x801f, 0x00c0, -+ 0x1cec, 0x7848, 0xa085, 0x000c, 0x784a, 0x71a4, 0x81ff, 0x0040, -+ 0x1d0b, 0x70a7, 0x0000, 0x6807, 0x0018, 0x6804, 0xa084, 0x0008, -+ 0x00c0, 0x1cfd, 0x6807, 0x0008, 0x6804, 0xa084, 0x0008, 0x00c0, -+ 0x1d04, 0x6807, 0x0002, 0x61c4, 0xa18c, 0x0003, 0x0040, 0x1d61, -+ 0x62c8, 0x63cc, 0x61c6, 0x62ca, 0x63ce, 0x7848, 0xa084, 0x000c, -+ 0x00c0, 0x1d15, 0x0e7e, 0x2071, 0x6000, 0x724e, 0x7352, 0xae80, -+ 0x0013, 0x0e7f, 0x1078, 0x54f9, 0x78a3, 0x0000, 0x7858, 0xa084, -+ 0xedff, 0x785a, 0x70a8, 0xa080, 0x00d9, 0x781a, 0x0f7f, 0x0e7f, -+ 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x0078, 0x15ae, 0x78e4, 0xa084, -+ 0x0007, 0x00c0, 0x1d36, 0x78b8, 0xa084, 0x801f, 0x00c0, 0x1d3b, -+ 0x7848, 0xa085, 0x000c, 0x784a, 0x7848, 0xa084, 0x000c, 0x00c0, -+ 0x1d44, 0x71a4, 0x81ff, 0x0040, 0x1d61, 0x6807, 0x0010, 0x70a7, -+ 0x0000, 0x6807, 0x0018, 0x6804, 0xa084, 0x0008, 0x00c0, 0x1d53, -+ 0x6807, 0x0008, 0x6804, 0xa084, 0x0008, 0x00c0, 0x1d5a, 0x6807, -+ 0x0002, 0x70a8, 0xa080, 0x00a7, 0x0078, 0x1d2d, 0x0f7f, 0x0e7f, -+ 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x15b0, -+ 0x795c, 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, 0x15a6, 0x795e, -+ 0x0078, 0x15ae, 0x795c, 0x71c6, 0x0078, 0x15ae, 0x7900, 0x71c6, -+ 0x71c4, 0x7902, 0x0078, 0x15ae, 0x7900, 0x71c6, 0x0078, 0x15ae, -+ 0x7904, 0x70c4, 0x7806, 0x0078, 0x15ad, 0x7804, 0x70c6, 0x0078, -+ 0x15ae, 0xd1fc, 0x00c0, 0x1d98, 0x2011, 0x64c0, 0x0078, 0x1d9a, -+ 0x2011, 0x6540, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xa268, 0x6a14, 0xd2b4, 0x0040, 0x1da9, 0x2011, 0x0001, 0x0078, -+ 0x1dab, 0x2011, 0x0000, 0x6b0c, 0x6800, 0x70da, 0x0078, 0x15ab, -+ 0x780c, 0xd0f4, 0x0040, 0x1dbb, 0x2001, 0x4007, 0x70db, 0x0000, -+ 0xa005, 0x0078, 0x1dc6, 0xd0fc, 0x0040, 0x1dc5, 0x2001, 0x4007, -+ 0x70db, 0x0001, 0xa005, 0x0078, 0x1dc6, 0xa006, 0x007c, 0x780c, -+ 0xd0f4, 0x0040, 0x1dd1, 0x2001, 0x4007, 0x70db, 0x0000, 0x0078, -+ 0x1dd2, 0xa006, 0x007c, 0x780c, 0xd0fc, 0x0040, 0x1ddd, 0x2001, -+ 0x4007, 0x70db, 0x0001, 0x0078, 0x1dde, 0xa006, 0x007c, 0xac80, -+ 0x0001, 0x1078, 0x205e, 0x007c, 0x7112, 0x7003, 0x0001, 0x7007, -+ 0x0001, 0x2099, 0x0030, 0x20a9, 0x0020, 0xac80, 0x0001, 0x20a0, -+ 0x7008, 0xd0fc, 0x0040, 0x1df0, 0x7007, 0x0002, 0xa08c, 0x01e0, -+ 0x00c0, 0x1e20, 0x53a5, 0x7888, 0xa005, 0x0040, 0x1e1f, 0x1078, -+ 0x1e25, 0x0040, 0x1e0d, 0x2c00, 0x788e, 0x20a9, 0x0020, 0xac80, -+ 0x0001, 0x20a0, 0x53a5, 0x0078, 0x1e1f, 0x788b, 0x0000, 0x7218, -+ 0x731c, 0x7420, 0x7524, 0xa292, 0x0040, 0xa39b, 0x0000, 0xa4a3, -+ 0x0000, 0xa5ab, 0x0000, 0x721a, 0x731e, 0x7422, 0x7526, 0xa006, -+ 0x7003, 0x0000, 0x7007, 0x0004, 0x007c, 0x2091, 0x8000, 0x7840, -+ 0xa065, 0x0040, 0x1e2f, 0x2c04, 0x7842, 0x2063, 0x0000, 0x2091, -+ 0x8001, 0x007c, 0x0f7e, 0x2079, 0x6000, 0x7840, 0xa06d, 0x0040, -+ 0x1e41, 0x2d04, 0x7842, 0x6803, 0x0000, 0x6807, 0x0000, 0x680b, -+ 0x0000, 0x0f7f, 0x007c, 0x2091, 0x8000, 0x0f7e, 0x2079, 0x6000, -+ 0x7840, 0x2062, 0x2c00, 0xa005, 0x00c0, 0x1e50, 0x1078, 0x2bfa, -+ 0x7842, 0x0f7f, 0x2091, 0x8001, 0x007c, 0x0f7e, 0x2079, 0x6000, -+ 0x7840, 0x206a, 0x2d00, 0x7842, 0x0f7f, 0x007c, 0x2011, 0xac00, -+ 0x7a42, 0x7bc8, 0x8319, 0x0040, 0x1e6b, 0xa280, 0x0037, 0x2012, -+ 0x2010, 0x0078, 0x1e62, 0x2013, 0x0000, 0x007c, 0x017e, 0x2069, -+ 0x85c0, 0xd7fc, 0x00c0, 0x1e76, 0x2069, 0x65c0, 0xa784, 0x0f00, -+ 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, -+ 0xad68, 0x017f, 0x007c, 0x1078, 0x1e6e, 0x2900, 0x682a, 0x2a00, -+ 0x682e, 0x6808, 0xa084, 0xf9ef, 0xa80d, 0x690a, 0x0e7e, 0xd7fc, -+ 0x00c0, 0x1e98, 0x2009, 0x6054, 0x2071, 0x6040, 0x0078, 0x1e9c, -+ 0x2009, 0x6094, 0x2071, 0x6080, 0x210c, 0x6804, 0xa005, 0x0040, -+ 0x1eac, 0xa116, 0x00c0, 0x1eac, 0x2060, 0x6000, 0x6806, 0x017e, -+ 0x200b, 0x0000, 0x0078, 0x1eaf, 0x2009, 0x0000, 0x017e, 0x6804, -+ 0xa065, 0x0040, 0x1ebe, 0x6000, 0x6806, 0x1078, 0x1ef5, 0x1078, -+ 0x2240, 0x6810, 0x8001, 0x6812, 0x00c0, 0x1eaf, 0x017f, 0x6902, -+ 0x6906, 0x2d00, 0x2060, 0x1078, 0x2d8b, 0x0e7f, 0x007c, 0xa065, -+ 0x0040, 0x1eda, 0x2008, 0x609c, 0xa005, 0x0040, 0x1ed5, 0x2062, -+ 0x609f, 0x0000, 0xa065, 0x0078, 0x1ecb, 0x2079, 0x6000, 0x7840, -+ 0x7942, 0x2062, 0x007c, 0xa065, 0x0040, 0x1ef4, 0x2008, 0x609c, -+ 0xa005, 0x0040, 0x1ee9, 0x2062, 0x609f, 0x0000, 0xa065, 0x0078, -+ 0x1edf, 0x0f7e, 0x2079, 0x6000, 0x2091, 0x8000, 0x7840, 0x7942, -+ 0x0f7f, 0x2062, 0x2091, 0x8001, 0x007c, 0x6007, 0x0103, 0x608f, -+ 0x0000, 0x20a9, 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, -+ 0x40a4, 0x6828, 0x601a, 0x682c, 0x6022, 0x007c, 0x0e7e, 0xd7fc, -+ 0x00c0, 0x1f10, 0x2071, 0x6040, 0x2031, 0x60c0, 0x0078, 0x1f14, -+ 0x2071, 0x6080, 0x2031, 0x62c0, 0x7054, 0xa08c, 0x0200, 0x00c0, -+ 0x1f1e, 0xa608, 0x2d0a, 0x8000, 0x7056, 0xa006, 0x0e7f, 0x007c, -+ 0x0f7e, 0xd7fc, 0x00c0, 0x1f28, 0x2079, 0x6040, 0x0078, 0x1f2a, -+ 0x2079, 0x6080, 0x1078, 0x1e6e, 0x2091, 0x8000, 0x6804, 0x7806, -+ 0xa065, 0x0040, 0x1f77, 0x0078, 0x1f3b, 0x2c00, 0x7806, 0x6000, -+ 0xa065, 0x0040, 0x1f77, 0x6010, 0xa306, 0x00c0, 0x1f35, 0x600c, -+ 0xa206, 0x00c0, 0x1f35, 0x2c28, 0x7850, 0xac06, 0x00c0, 0x1f4a, -+ 0x0078, 0x1f74, 0x6804, 0xac06, 0x00c0, 0x1f58, 0x6000, 0x2060, -+ 0x6806, 0xa005, 0x00c0, 0x1f58, 0x6803, 0x0000, 0x0078, 0x1f62, -+ 0x6400, 0x7804, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1f62, -+ 0x2c00, 0x6802, 0x2560, 0x0f7f, 0x1078, 0x1ef5, 0x0f7e, 0x601b, -+ 0x0005, 0x6023, 0x0020, 0x0f7f, 0x1078, 0x2240, 0x0f7e, 0x6810, -+ 0x8001, 0x1050, 0x2bfa, 0x6812, 0xa085, 0xffff, 0xa005, 0x0f7f, -+ 0x007c, 0x077e, 0x2700, 0x2039, 0x0000, 0xd0fc, 0x0040, 0x1f81, -+ 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x2091, -+ 0x8000, 0x1078, 0x1e83, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1f89, -+ 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, -+ 0x1f89, 0x2091, 0x8001, 0x077f, 0x007c, 0x2061, 0x0000, 0x6018, -+ 0xa084, 0x0001, 0x00c0, 0x1fbe, 0x7808, 0xd08c, 0x0040, 0x1faf, -+ 0xc08c, 0x780a, 0xc7fc, 0x2069, 0x6040, 0x0078, 0x1fb4, 0xc08d, -+ 0x780a, 0x2069, 0x6080, 0xc7fd, 0x2091, 0x8000, 0x6818, 0x681b, -+ 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0, 0x1fbf, 0x007c, 0xa08c, -+ 0xfff0, 0x0040, 0x1fc5, 0x1078, 0x2bfa, 0x0079, 0x1fc7, 0x1fd7, -+ 0x1fda, 0x1fe0, 0x1fe4, 0x1fd8, 0x1fe8, 0x1fee, 0x1fd8, 0x1fd8, -+ 0x2193, 0x21c4, 0x21c8, 0x21ce, 0x1fd8, 0x1fd8, 0x1fd8, 0x007c, -+ 0x1078, 0x2bfa, 0x1078, 0x1f79, 0x2001, 0x8001, 0x0078, 0x21e3, -+ 0x2001, 0x8003, 0x0078, 0x21e3, 0x2001, 0x8004, 0x0078, 0x21e3, -+ 0x1078, 0x1f79, 0x2001, 0x8006, 0x0078, 0x21e3, 0x2001, 0x8007, -+ 0x0078, 0x21e3, 0x2030, 0x2138, 0xa782, 0x0021, 0x0048, 0x1ffa, -+ 0x2009, 0x0020, 0x2600, 0x1078, 0x2014, 0x00c0, 0x2013, 0xa7ba, -+ 0x0020, 0x0048, 0x2012, 0x0040, 0x2012, 0x2708, 0xa6b0, 0x0020, -+ 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, -+ 0x0078, 0x1ff4, 0xa006, 0x007c, 0x81ff, 0x0040, 0x2039, 0x2099, -+ 0x0030, 0x20a0, 0x700c, 0xa084, 0x03ff, 0x0040, 0x2026, 0x7007, -+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x2021, 0x21a8, 0x810b, -+ 0x7112, 0x7003, 0x0001, 0x7007, 0x0001, 0x7008, 0x800b, 0x00c8, -+ 0x202d, 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x2039, 0x53a5, -+ 0xa006, 0x7003, 0x0000, 0x007c, 0x2030, 0x2138, 0xa782, 0x0021, -+ 0x0048, 0x2044, 0x2009, 0x0020, 0x2600, 0x1078, 0x205e, 0x00c0, -+ 0x205d, 0xa7ba, 0x0020, 0x0048, 0x205c, 0x0040, 0x205c, 0x2708, -+ 0xa6b0, 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, -+ 0xa5a9, 0x0000, 0x0078, 0x203e, 0xa006, 0x007c, 0x81ff, 0x0040, -+ 0x2096, 0x2098, 0x20a1, 0x0030, 0x700c, 0xa084, 0x03ff, 0x0040, -+ 0x2069, 0x21a8, 0x810b, 0x7112, 0x7018, 0x007e, 0x701c, 0x007e, -+ 0x7020, 0x007e, 0x7024, 0x007e, 0x721a, 0x731e, 0x7422, 0x7526, -+ 0x7003, 0x0000, 0x53a6, 0x7007, 0x0001, 0x7010, 0xa084, 0xf000, -+ 0x0040, 0x2086, 0x7007, 0x0008, 0x0078, 0x208a, 0x7108, 0x8103, -+ 0x00c8, 0x207d, 0x007f, 0x7026, 0x007f, 0x7022, 0x007f, 0x701e, -+ 0x007f, 0x701a, 0x7007, 0x0002, 0xa184, 0x01e0, 0x7003, 0x0000, -+ 0x7007, 0x0004, 0x007c, 0x0e7e, 0x6914, 0xd1fc, 0x0040, 0x20a4, -+ 0x2071, 0x6080, 0x0078, 0x20a6, 0x2071, 0x6040, 0x2d08, 0x70b4, -+ 0x6802, 0xa005, 0x00c0, 0x20ad, 0x71ba, 0x71b6, 0x0e7f, 0x007c, -+ 0x0f7e, 0x6114, 0xd1fc, 0x0040, 0x20b9, 0x2079, 0x6080, 0x0078, -+ 0x20bb, 0x2079, 0x6040, 0x2c08, 0x78b4, 0x6002, 0xa005, 0x00c0, -+ 0x20c2, 0x79ba, 0x79b6, 0x0f7f, 0x007c, 0x2091, 0x8000, 0x0f7e, -+ 0x6114, 0xd1fc, 0x0040, 0x20d0, 0x2079, 0x6080, 0x0078, 0x20d2, -+ 0x2079, 0x6040, 0x6003, 0x0000, 0x2c08, 0x78b8, 0xa065, 0x00c0, -+ 0x20dc, 0x79b6, 0x0078, 0x20dd, 0x6102, 0x79ba, 0x0f7f, 0x2091, -+ 0x8001, 0x1078, 0x2885, 0x007c, 0x70b4, 0xa06d, 0x0040, 0x20ef, -+ 0x6800, 0x70b6, 0xa005, 0x00c0, 0x20ee, 0x70ba, 0x8dff, 0x007c, -+ 0x0d7e, 0x0c7e, 0x0f7e, 0xd3fc, 0x0040, 0x20fa, 0x2079, 0x6080, -+ 0x0078, 0x20fc, 0x2079, 0x6040, 0xaf80, 0x002d, 0x2060, 0x6000, -+ 0xa005, 0x0040, 0x2125, 0x2068, 0x6814, 0xa306, 0x00c0, 0x210e, -+ 0x6828, 0xa084, 0x00ff, 0xa406, 0x0040, 0x2111, 0x2d60, 0x0078, -+ 0x20ff, 0x6800, 0xa005, 0x6002, 0x00c0, 0x211d, 0xaf80, 0x002d, -+ 0xac06, 0x0040, 0x211c, 0x2c00, 0x78ba, 0x0d7e, 0x689c, 0xa005, -+ 0x0040, 0x2124, 0x1078, 0x1ec7, 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, -+ 0xa005, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0xd0fc, 0x0040, 0x2134, -+ 0x2079, 0x6080, 0x0078, 0x2136, 0x2079, 0x6040, 0xaf80, 0x002d, -+ 0x2060, 0x6000, 0xa005, 0x0040, 0x215b, 0x2068, 0x6814, 0xa084, -+ 0x00ff, 0xa306, 0x0040, 0x2147, 0x2d60, 0x0078, 0x2139, 0x6800, -+ 0xa005, 0x6002, 0x00c0, 0x2153, 0xaf80, 0x002d, 0xac06, 0x0040, -+ 0x2152, 0x2c00, 0x78ba, 0x0d7e, 0x689c, 0xa005, 0x0040, 0x215a, -+ 0x1078, 0x1ec7, 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, 0xa005, 0x007c, -+ 0x0d7e, 0x0c7e, 0x0f7e, 0xd3fc, 0x0040, 0x216a, 0x2079, 0x6080, -+ 0x0078, 0x216c, 0x2079, 0x6040, 0xaf80, 0x002d, 0x2060, 0x6000, -+ 0xa06d, 0x0040, 0x218e, 0x6814, 0xa306, 0x0040, 0x217a, 0x2d60, -+ 0x0078, 0x216f, 0x6800, 0xa005, 0x6002, 0x00c0, 0x2186, 0xaf80, -+ 0x002d, 0xac06, 0x0040, 0x2185, 0x2c00, 0x78ba, 0x0d7e, 0x689c, -+ 0xa005, 0x0040, 0x218d, 0x1078, 0x1ec7, 0x007f, 0x0f7f, 0x0c7f, -+ 0x0d7f, 0xa005, 0x007c, 0x2091, 0x8000, 0xd7fc, 0x00c0, 0x219c, -+ 0x2069, 0x6040, 0x0078, 0x219e, 0x2069, 0x6080, 0x6800, 0xa086, -+ 0x0000, 0x0040, 0x21a8, 0x2091, 0x8001, 0x681b, 0x0009, 0x007c, -+ 0x6878, 0xd7fc, 0x00c0, 0x21ae, 0x0078, 0x21af, 0xc0fd, 0xa0bc, -+ 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x1078, -+ 0x1e83, 0x8738, 0xa784, 0x001f, 0x00c0, 0x21b7, 0x2091, 0x8001, -+ 0x2001, 0x800a, 0x0078, 0x21e3, 0x2001, 0x800c, 0x0078, 0x21e3, -+ 0x1078, 0x1f79, 0x2001, 0x800d, 0x0078, 0x21e3, 0x780c, 0xd0e4, -+ 0x00c0, 0x21e1, 0xd0ec, 0x0040, 0x21db, 0xd7fc, 0x0040, 0x21db, -+ 0x78e8, 0x0078, 0x21dc, 0x78e4, 0x70c6, 0x2001, 0x800e, 0x0078, -+ 0x21e3, 0x0078, 0x1fd8, 0x70c2, 0xd7fc, 0x00c0, 0x21eb, 0x70db, -+ 0x0000, 0x0078, 0x21ed, 0x70db, 0x0001, 0x2061, 0x0000, 0x601b, -+ 0x0001, 0x2091, 0x4080, 0x007c, 0xac80, 0x0001, 0x81ff, 0x0040, -+ 0x221f, 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x03ff, 0x0040, -+ 0x2201, 0x7018, 0x007e, 0x701c, 0x007e, 0x7020, 0x007e, 0x7024, -+ 0x007e, 0x7112, 0x81ac, 0x721a, 0x731e, 0x7422, 0x7526, 0x7003, -+ 0x0001, 0x7007, 0x0001, 0x7008, 0x800b, 0x00c8, 0x2213, 0x7007, -+ 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x221f, 0x53a5, 0xa006, 0x7003, -+ 0x0000, 0x7007, 0x0004, 0x007f, 0x7026, 0x007f, 0x7022, 0x007f, -+ 0x701e, 0x007f, 0x701a, 0x007c, 0x2011, 0x0020, 0x2009, 0x0010, -+ 0x6b0a, 0x6c0e, 0x6803, 0xfd00, 0x6807, 0x0018, 0x6a1a, 0x2d00, -+ 0xa0e8, 0x0008, 0xa290, 0x0004, 0x8109, 0x00c0, 0x2230, 0x007c, -+ 0x6004, 0x2c08, 0x2063, 0x0000, 0x7860, 0x8000, 0x7862, 0x7864, -+ 0xa005, 0x7966, 0x0040, 0x224f, 0x2c02, 0x0078, 0x2250, 0x796a, -+ 0x007c, 0x6807, 0x0103, 0x0c7e, 0x2061, 0x6000, 0x2d08, 0x206b, -+ 0x0000, 0x6060, 0x8000, 0x6062, 0x6064, 0xa005, 0x6166, 0x0040, -+ 0x2264, 0x2d02, 0x0078, 0x2265, 0x616a, 0x0c7f, 0x007c, 0x2091, -+ 0x8000, 0x7860, 0x8001, 0x7862, 0x2c04, 0x786a, 0xa005, 0x00c0, -+ 0x2272, 0x7866, 0x2091, 0x8001, 0x609c, 0xa005, 0x0040, 0x228f, -+ 0x0c7e, 0x2060, 0x2008, 0x609c, 0xa005, 0x0040, 0x2287, 0x2062, -+ 0x609f, 0x0000, 0xa065, 0x609c, 0xa005, 0x00c0, 0x227f, 0x2091, -+ 0x8000, 0x7840, 0x7942, 0x2062, 0x2091, 0x8001, 0x0c7f, 0x2091, -+ 0x8000, 0x7840, 0x2062, 0x609f, 0x0000, 0x2c00, 0xa005, 0x00c0, -+ 0x229b, 0x1078, 0x2bfa, 0x7842, 0x2091, 0x8001, 0x007c, 0x7868, -+ 0xa065, 0x0040, 0x22b1, 0x2091, 0x8000, 0x7860, 0x8001, 0x7862, -+ 0x2c04, 0x786a, 0xa005, 0x00c0, 0x22af, 0x7866, 0x8000, 0x2091, -+ 0x8001, 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, -+ 0x00c8, 0x22bb, 0xa200, 0x00f0, 0x22b6, 0x8086, 0x818e, 0x007c, -+ 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x22e1, 0xa11a, 0x00c8, -+ 0x22e1, 0x8213, 0x818d, 0x0048, 0x22d4, 0xa11a, 0x00c8, 0x22d5, -+ 0x00f0, 0x22c9, 0x0078, 0x22d9, 0xa11a, 0x2308, 0x8210, 0x00f0, -+ 0x22c9, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080, 0x007f, 0x157f, -+ 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078, 0x22dd, 0x7d70, -+ 0x70d0, 0xa506, 0x0040, 0x237c, 0x7808, 0xd0ec, 0x0040, 0x2304, -+ 0x0e7e, 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, -+ 0x2301, 0x7008, 0x0e7f, 0xa086, 0x0008, 0x0040, 0x2304, 0x0078, -+ 0x237c, 0x0e7f, 0x0078, 0x237c, 0x1078, 0x1e25, 0x0040, 0x237c, -+ 0x796c, 0x2500, 0x8000, 0xa112, 0x2009, 0x0040, 0x00c8, 0x2313, -+ 0xa006, 0x0078, 0x231b, 0x72d0, 0xa206, 0x0040, 0x231b, 0x788b, -+ 0x0001, 0x2009, 0x0080, 0x0c7e, 0x1078, 0x1de4, 0x0c7f, 0x0040, -+ 0x2364, 0x1078, 0x1e43, 0x788b, 0x0000, 0x7884, 0x8000, 0x7886, -+ 0xa086, 0x0002, 0x0040, 0x2342, 0x8507, 0x8004, 0x8004, 0x7978, -+ 0xa108, 0x711a, 0x00c8, 0x2340, 0x7974, 0xa189, 0x0000, 0x711e, -+ 0x7980, 0xa189, 0x0000, 0x7122, 0x797c, 0xa189, 0x0000, 0x7126, -+ 0x0078, 0x237c, 0x6014, 0xd0fc, 0x00c0, 0x234a, 0x2069, 0x6040, -+ 0x0078, 0x234c, 0x2069, 0x6080, 0x2091, 0x8000, 0x681b, 0x0002, -+ 0x7888, 0xa005, 0x0040, 0x235a, 0x788b, 0x0000, 0x788c, 0x2060, -+ 0x0078, 0x2342, 0x7887, 0x0000, 0x78b0, 0xa085, 0x0003, 0x78b2, -+ 0x2091, 0x8001, 0x0078, 0x237c, 0x7887, 0x0000, 0x1078, 0x2721, -+ 0x6004, 0xa084, 0x000f, 0x1078, 0x237d, 0x7888, 0xa005, 0x0040, -+ 0x2378, 0x788c, 0x2060, 0x6004, 0xa084, 0x000f, 0x1078, 0x237d, -+ 0x788b, 0x0000, 0x0078, 0x22e7, 0x007c, 0x0079, 0x237f, 0x238f, -+ 0x23ad, 0x23cd, 0x238f, 0x23ea, 0x239e, 0x2564, 0x257b, 0x238f, -+ 0x23ab, 0x23cb, 0x2434, 0x24aa, 0x2502, 0x2514, 0x257b, 0x2039, -+ 0x0400, 0x78c0, 0xa705, 0x78c2, 0x6008, 0xa705, 0x600a, 0x1078, -+ 0x25ff, 0x609c, 0x78be, 0x1078, 0x2709, 0x007c, 0x78c0, 0xa084, -+ 0x0100, 0x0040, 0x23a5, 0x0078, 0x238f, 0x601c, 0xa085, 0x0080, -+ 0x601e, 0x0078, 0x23b4, 0x1078, 0x2750, 0x78c0, 0xa084, 0x0100, -+ 0x0040, 0x23b4, 0x0078, 0x238f, 0x78c3, 0x0000, 0x6004, 0x8007, -+ 0xa084, 0x00ff, 0x78b6, 0x8001, 0x0040, 0x23c8, 0x1078, 0x25ff, -+ 0x0040, 0x23c8, 0x78c0, 0xa085, 0x0100, 0x78c2, 0x0078, 0x23ca, -+ 0x0078, 0x261f, 0x007c, 0x1078, 0x274c, 0x78c0, 0xa08c, 0x0e00, -+ 0x00c0, 0x23d6, 0xa084, 0x0100, 0x00c0, 0x23d8, 0x0078, 0x238f, -+ 0x1078, 0x25ff, 0x00c0, 0x23e9, 0x6104, 0xa18c, 0x00ff, 0xa186, -+ 0x0007, 0x0040, 0x25c0, 0xa186, 0x000f, 0x0040, 0x25c0, 0x0078, -+ 0x261f, 0x007c, 0x78c0, 0xa084, 0x0100, 0x0040, 0x23f1, 0x0078, -+ 0x238f, 0x78c3, 0x0000, 0x6714, 0x1078, 0x1e6e, 0x2011, 0x0001, -+ 0x20a9, 0x0001, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, 0x2416, -+ 0x2011, 0x0001, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001, -+ 0x0040, 0x2416, 0xa7bc, 0x8000, 0x2011, 0x0002, 0x20a9, 0x0100, -+ 0xa08e, 0x0002, 0x0040, 0x2416, 0x0078, 0x2431, 0x157e, 0x1078, -+ 0x1e6e, 0x157f, 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, -+ 0x6808, 0xa084, 0xffde, 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, -+ 0x00f0, 0x241a, 0x8211, 0x0040, 0x2431, 0x20a9, 0x0100, 0x0078, -+ 0x241a, 0x1078, 0x1e43, 0x007c, 0x6114, 0x1078, 0x276d, 0x6900, -+ 0xa184, 0x0001, 0x0040, 0x244e, 0x6028, 0xa084, 0x00ff, 0x00c0, -+ 0x25df, 0x6800, 0xa084, 0x0001, 0x0040, 0x25e7, 0x6803, 0x0000, -+ 0x680b, 0x0000, 0x6807, 0x0000, 0x0078, 0x25ef, 0x2011, 0x0001, -+ 0x6020, 0xd0f4, 0x0040, 0x2456, 0xa295, 0x0002, 0xd0c4, 0x0040, -+ 0x245b, 0xa295, 0x0008, 0xd0cc, 0x0040, 0x2460, 0xa295, 0x0400, -+ 0x601c, 0xa084, 0x0002, 0x0040, 0x2467, 0xa295, 0x0004, 0x602c, -+ 0xa08c, 0x00ff, 0xa182, 0x0002, 0x0048, 0x25eb, 0xa182, 0x001b, -+ 0x00c8, 0x25eb, 0x0040, 0x25eb, 0x690e, 0x602c, 0x8007, 0xa08c, -+ 0x00ff, 0xa182, 0x0002, 0x0048, 0x25eb, 0xa182, 0x001b, 0x00c8, -+ 0x25eb, 0x0040, 0x25eb, 0x6912, 0x6134, 0xa184, 0x000f, 0x0040, -+ 0x2491, 0x8000, 0xd0a4, 0x0040, 0x248e, 0x8001, 0xa18c, 0xfff0, -+ 0xa10d, 0x6922, 0x6030, 0xa005, 0x00c0, 0x2498, 0x2001, 0x001e, -+ 0x8000, 0x6816, 0x6028, 0xa084, 0x00ff, 0x0040, 0x25e7, 0x6806, -+ 0x6028, 0x8007, 0xa084, 0x00ff, 0x0040, 0x25e7, 0x680a, 0x6a02, -+ 0x0078, 0x25ef, 0x6014, 0xd0fc, 0x00c0, 0x24b2, 0x2001, 0x6064, -+ 0x0078, 0x24b4, 0x2001, 0x60a4, 0x2004, 0xa084, 0x8000, 0x0040, -+ 0x25e7, 0x6114, 0x1078, 0x276d, 0x2091, 0x8000, 0x6a04, 0x6b08, -+ 0x6418, 0xa484, 0x0003, 0x0040, 0x24d8, 0x6128, 0xa18c, 0x00ff, -+ 0x8001, 0x00c0, 0x24d1, 0x2100, 0xa210, 0x0048, 0x24fe, 0x0078, -+ 0x24d8, 0x8001, 0x00c0, 0x24fe, 0x2100, 0xa212, 0x0048, 0x24fe, -+ 0xa484, 0x000c, 0x0040, 0x24f2, 0x6128, 0x810f, 0xa18c, 0x00ff, -+ 0xa082, 0x0004, 0x00c0, 0x24ea, 0x2100, 0xa318, 0x0048, 0x24fe, -+ 0x0078, 0x24f2, 0xa082, 0x0004, 0x00c0, 0x24fe, 0x2100, 0xa31a, -+ 0x0048, 0x24fe, 0x6030, 0xa005, 0x0040, 0x24f8, 0x8000, 0x6816, -+ 0x6a06, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x25ef, 0x2091, 0x8001, -+ 0x0078, 0x25eb, 0x6114, 0x1078, 0x276d, 0x2091, 0x8000, 0x6b08, -+ 0x8318, 0x0048, 0x2510, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x25fd, -+ 0x2091, 0x8001, 0x0078, 0x25eb, 0x6024, 0x8007, 0xa084, 0x00ff, -+ 0x0040, 0x253a, 0xa086, 0x0080, 0x00c0, 0x2562, 0x20a9, 0x0008, -+ 0x6014, 0xd0fc, 0x00c0, 0x2528, 0x2069, 0xa7e0, 0x0078, 0x252a, -+ 0x2069, 0xa900, 0x2091, 0x8000, 0x6800, 0xa084, 0xfcff, 0x6802, -+ 0xade8, 0x0009, 0x0070, 0x2536, 0x0078, 0x252c, 0x2091, 0x8001, -+ 0x0078, 0x25ef, 0x6028, 0xa015, 0x0040, 0x2562, 0x6114, 0x1078, -+ 0x276d, 0x0d7e, 0xade8, 0x0007, 0x2091, 0x8000, 0x6800, 0xa00d, -+ 0x0040, 0x255f, 0xa206, 0x0040, 0x2550, 0x2168, 0x0078, 0x2546, -+ 0x0c7e, 0x2160, 0x6000, 0x6802, 0x1078, 0x1e43, 0x0c7f, 0x0d7f, -+ 0x6808, 0x8000, 0x680a, 0x2091, 0x8001, 0x0078, 0x25fd, 0x2091, -+ 0x8001, 0x0d7f, 0x0078, 0x25e7, 0x6114, 0x1078, 0x276d, 0x6800, -+ 0xa084, 0x0001, 0x0040, 0x25d7, 0x2091, 0x8000, 0x6a04, 0x8210, -+ 0x0048, 0x2577, 0x6a06, 0x2091, 0x8001, 0x0078, 0x25fd, 0x2091, -+ 0x8001, 0x0078, 0x25eb, 0x6114, 0x1078, 0x276d, 0x60ce, 0x60bb, -+ 0x0000, 0x6018, 0xa08c, 0xff00, 0x6820, 0xa084, 0x00ff, 0xa105, -+ 0x601a, 0x6900, 0xa184, 0x0008, 0x0040, 0x2592, 0x6020, 0xa085, -+ 0x0100, 0x6022, 0xa184, 0x0001, 0x0040, 0x25e7, 0xa184, 0x0100, -+ 0x00c0, 0x25d3, 0xa184, 0x0200, 0x00c0, 0x25cf, 0x681c, 0xa005, -+ 0x00c0, 0x25db, 0x6004, 0xa084, 0x00ff, 0xa086, 0x000f, 0x00c0, -+ 0x25ab, 0x1078, 0x2750, 0x78c3, 0x0000, 0x6004, 0x8007, 0xa084, -+ 0x00ff, 0x78b6, 0x8001, 0x609f, 0x0000, 0x0040, 0x25c0, 0x1078, -+ 0x25ff, 0x0040, 0x25c0, 0x78c0, 0xa085, 0x0100, 0x78c2, 0x007c, -+ 0x78bb, 0x0000, 0x78bf, 0x0000, 0x6024, 0xa084, 0xff00, 0x6026, -+ 0x1078, 0x4611, 0x00c0, 0x25cd, 0x007c, 0x0078, 0x20c5, 0x2009, -+ 0x0017, 0x0078, 0x25f1, 0x2009, 0x000e, 0x0078, 0x25f1, 0x2009, -+ 0x0007, 0x0078, 0x25f1, 0x2009, 0x0035, 0x0078, 0x25f1, 0x2009, -+ 0x003e, 0x0078, 0x25f1, 0x2009, 0x0004, 0x0078, 0x25f1, 0x2009, -+ 0x0006, 0x0078, 0x25f1, 0x2009, 0x0016, 0x0078, 0x25f1, 0x2009, -+ 0x0001, 0x6024, 0xa084, 0xff00, 0xa105, 0x6026, 0x2091, 0x8000, -+ 0x1078, 0x2240, 0x2091, 0x8001, 0x007c, 0x0078, 0x1e43, 0x609f, -+ 0x0000, 0x78b8, 0xa06d, 0x2c00, 0x78ba, 0x00c0, 0x260a, 0x78be, -+ 0x0078, 0x2612, 0x689e, 0x2d00, 0x6002, 0x78bc, 0xad06, 0x00c0, -+ 0x2612, 0x6002, 0x78b4, 0x8001, 0x78b6, 0x00c0, 0x261e, 0x78c0, -+ 0xa084, 0xfeff, 0x78c2, 0x78bc, 0x2060, 0xa006, 0x007c, 0x0e7e, -+ 0xa02e, 0x2530, 0x65ae, 0x65b2, 0x601c, 0x60a2, 0x2048, 0xa984, -+ 0xe1ff, 0x601e, 0xa984, 0x0060, 0x0040, 0x2630, 0x1078, 0x564a, -+ 0x6596, 0x65a6, 0x669a, 0x66aa, 0x6714, 0x2071, 0x6080, 0xd7fc, -+ 0x00c0, 0x263c, 0x2071, 0x6040, 0xa784, 0x0f00, 0x800b, 0xa784, -+ 0x001f, 0x0040, 0x2647, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, -+ 0x71e0, 0xa168, 0x2700, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, -+ 0x8003, 0x71e4, 0xa100, 0x60c6, 0x2091, 0x8000, 0x780c, 0xd0c4, -+ 0x0040, 0x266c, 0xd0ec, 0x0040, 0x2668, 0xd7fc, 0x00c0, 0x2665, -+ 0xd0f4, 0x00c0, 0x2673, 0x0078, 0x266c, 0xd0fc, 0x00c0, 0x2673, -+ 0x7808, 0xd0f4, 0x00c0, 0x2673, 0x6e08, 0xd684, 0x0040, 0x26a1, -+ 0xd9fc, 0x00c0, 0x26a1, 0x2091, 0x8001, 0x1078, 0x1ef5, 0x2091, -+ 0x8000, 0x1078, 0x2240, 0x2091, 0x8001, 0x78bb, 0x0000, 0x78bf, -+ 0x0000, 0x780c, 0xd0e4, 0x00c0, 0x2707, 0x780c, 0xd0c4, 0x0040, -+ 0x2707, 0xd0ec, 0x0040, 0x2699, 0xd7fc, 0x00c0, 0x2694, 0xd0f4, -+ 0x00c0, 0x269d, 0x0078, 0x2707, 0xd0fc, 0x00c0, 0x269d, 0x0078, -+ 0x2707, 0x7808, 0xd0f4, 0x0040, 0x2707, 0x601b, 0x0021, 0x0078, -+ 0x2707, 0x6024, 0xa096, 0x0001, 0x00c0, 0x26a8, 0x8000, 0x6026, -+ 0x6a10, 0x6814, 0xa202, 0x0048, 0x26b7, 0x0040, 0x26b7, 0x2091, -+ 0x8001, 0x2039, 0x0200, 0x1078, 0x2709, 0x0078, 0x2707, 0x2c08, -+ 0xd9fc, 0x0040, 0x26df, 0x6800, 0xa065, 0x0040, 0x26df, 0x6a04, -+ 0x7000, 0xa084, 0x0002, 0x0040, 0x26d5, 0x7050, 0xa206, 0x00c0, -+ 0x26d5, 0x6b04, 0x2160, 0x2304, 0x6002, 0xa005, 0x00c0, 0x26d1, -+ 0x6902, 0x2260, 0x6102, 0x0078, 0x26eb, 0x2d00, 0x2060, 0x1078, -+ 0x2d8b, 0x6e08, 0x2160, 0x6202, 0x6906, 0x0078, 0x26eb, 0x6800, -+ 0x6902, 0xa065, 0x0040, 0x26e7, 0x6102, 0x0078, 0x26e8, 0x6906, -+ 0x2160, 0x6003, 0x0000, 0x2160, 0xd9fc, 0x0040, 0x26f6, 0xa6b4, -+ 0xffdc, 0x6e0a, 0x682b, 0x0000, 0x682f, 0x0000, 0x6810, 0x8000, -+ 0x6812, 0x2091, 0x8001, 0xd6b4, 0x0040, 0x2703, 0xa6b6, 0x0040, -+ 0x6e0a, 0x1078, 0x1f06, 0x78bf, 0x0000, 0x78bb, 0x0000, 0x0e7f, -+ 0x007c, 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x1078, 0x2240, -+ 0x2091, 0x8001, 0x78bc, 0xa065, 0x0040, 0x271c, 0x609c, 0x78be, -+ 0x609f, 0x0000, 0x0078, 0x270c, 0x78bb, 0x0000, 0x78bf, 0x0000, -+ 0x007c, 0x796c, 0x7870, 0x7b88, 0xd384, 0x0040, 0x272b, 0x8000, -+ 0xa112, 0x0048, 0x2730, 0xc384, 0x8000, 0xa112, 0x00c8, 0x273d, -+ 0x7a78, 0x721a, 0x7a74, 0x721e, 0x7a80, 0x7222, 0x7a7c, 0x7226, -+ 0xa006, 0xd384, 0x0040, 0x273d, 0x8000, 0x7872, 0x70d2, 0x7814, -+ 0xa005, 0x0040, 0x274b, 0x8001, 0x7816, 0x00c0, 0x274b, 0x0068, -+ 0x274b, 0x2091, 0x4080, 0x007c, 0x2039, 0x2764, 0x0078, 0x2752, -+ 0x2039, 0x276a, 0x2704, 0xa005, 0x0040, 0x2763, 0xac00, 0x2068, -+ 0x6908, 0x6810, 0x6912, 0x680a, 0x690c, 0x6814, 0x6916, 0x680e, -+ 0x8738, 0x0078, 0x2752, 0x007c, 0x0003, 0x0009, 0x000f, 0x0015, -+ 0x001b, 0x0000, 0x0015, 0x001b, 0x0000, 0x0c7e, 0x6014, 0x1078, -+ 0x47fa, 0x2c68, 0x0c7f, 0x007c, 0x78af, 0x0000, 0x2009, 0x6001, -+ 0x2104, 0xd084, 0x0040, 0x27a3, 0x6004, 0xa086, 0x0103, 0x00c0, -+ 0x27a3, 0x6114, 0x6018, 0xa105, 0x00c0, 0x27a3, 0x0d7e, 0x2069, -+ 0x0000, 0x6818, 0xd084, 0x00c0, 0x27a2, 0x600c, 0x70c6, 0x6010, -+ 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001, 0x2091, 0x4080, 0x0d7f, -+ 0x1078, 0x2267, 0x0068, 0x27d7, 0x7868, 0xa065, 0x00c0, 0x2776, -+ 0x0078, 0x27d7, 0x0d7f, 0x1078, 0x27da, 0x0040, 0x27d2, 0x6204, -+ 0xa294, 0x00ff, 0xa296, 0x0003, 0x0040, 0x27b5, 0x6204, 0xa296, -+ 0x0110, 0x00c0, 0x27c3, 0x78af, 0x0001, 0x6204, 0xa294, 0xff00, -+ 0x8217, 0x8211, 0x0040, 0x27c3, 0x85ff, 0x00c0, 0x27d2, 0x8210, -+ 0xa202, 0x00c8, 0x27d2, 0x057e, 0x1078, 0x27e9, 0x057f, 0x00c0, -+ 0x27d2, 0x8528, 0x78ac, 0xa005, 0x00c0, 0x27d2, 0x7868, 0xa065, -+ 0x00c0, 0x2776, 0x85ff, 0x0040, 0x27d9, 0x2091, 0x4080, 0x7894, -+ 0x70d6, 0x007c, 0x7b90, 0x7994, 0x70d4, 0xa102, 0x00c0, 0x27e3, -+ 0x2300, 0xa005, 0x007c, 0x0048, 0x27e7, 0xa302, 0x007c, 0x8002, -+ 0x007c, 0xa184, 0xff00, 0x0040, 0x27f6, 0x810f, 0x810c, 0x810c, -+ 0x8004, 0x8004, 0x8007, 0xa100, 0x0078, 0x27f9, 0x8107, 0x8004, -+ 0x8004, 0x7a9c, 0x7b98, 0x7ca4, 0x7da0, 0xa210, 0xa006, 0xa319, -+ 0xa421, 0xa529, 0x2009, 0x0020, 0x6004, 0xa086, 0x0103, 0x00c0, -+ 0x280f, 0x6028, 0xa005, 0x00c0, 0x280f, 0x2009, 0x000c, 0x1078, -+ 0x1ddf, 0x0040, 0x2832, 0x78a8, 0x8000, 0x78aa, 0xa086, 0x0002, -+ 0x00c0, 0x2840, 0x6014, 0xd0fc, 0x00c0, 0x2822, 0x2069, 0x6040, -+ 0x0078, 0x2824, 0x2069, 0x6080, 0x2091, 0x8000, 0x681b, 0x0003, -+ 0x78ab, 0x0000, 0x78b0, 0xa085, 0x0300, 0x78b2, 0x2091, 0x8001, -+ 0x0078, 0x2840, 0x78ab, 0x0000, 0x1078, 0x2267, 0x7990, 0x7894, -+ 0x8000, 0xa10a, 0x00c8, 0x283d, 0xa006, 0x7896, 0x70d6, 0xa006, -+ 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x2138, 0xd7fc, 0x00c0, -+ 0x284d, 0x2009, 0x605a, 0x0078, 0x284f, 0x2009, 0x609a, 0x2091, -+ 0x8000, 0x200a, 0x0f7e, 0xd7fc, 0x00c0, 0x2866, 0x2009, 0x6040, -+ 0x2001, 0x6002, 0x2004, 0xd0ec, 0x0040, 0x2862, 0x2079, 0x0100, -+ 0x0078, 0x286a, 0x2079, 0x0200, 0x0078, 0x286a, 0x2009, 0x6080, -+ 0x2079, 0x0100, 0x2104, 0xa086, 0x0000, 0x00c0, 0x2883, 0xd7fc, -+ 0x00c0, 0x2876, 0x2009, 0x6044, 0x0078, 0x2878, 0x2009, 0x6084, -+ 0x2104, 0xa005, 0x00c0, 0x2883, 0x7830, 0xa084, 0x00c0, 0x00c0, -+ 0x2883, 0x781b, 0x004b, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x2c00, -+ 0xa005, 0x00c0, 0x2890, 0xa188, 0x0005, 0x2104, 0x0078, 0x2891, -+ 0x6014, 0xd0fc, 0x00c0, 0x28a4, 0x2071, 0x6040, 0x2001, 0x6002, -+ 0x2004, 0xd0ec, 0x0040, 0x28a0, 0x2079, 0x0100, 0x0078, 0x28a8, -+ 0x2079, 0x0200, 0x0078, 0x28a8, 0x2071, 0x6080, 0x2079, 0x0100, -+ 0x2091, 0x8000, 0x7000, 0xa086, 0x0000, 0x00c0, 0x28da, 0x0078, -+ 0x28ce, 0x2c00, 0xa005, 0x00c0, 0x28ba, 0xa188, 0x0005, 0x2104, -+ 0x0078, 0x28bb, 0x6014, 0xd0fc, 0x00c0, 0x28cc, 0x2001, 0x6002, -+ 0x2004, 0xd0ec, 0x0040, 0x28c8, 0x2079, 0x0100, 0x0078, 0x28ce, -+ 0x2079, 0x0200, 0x0078, 0x28ce, 0x2079, 0x0100, 0x7830, 0xa084, -+ 0x00c0, 0x00c0, 0x28da, 0x2c00, 0xa005, 0x00c0, 0x28d8, 0x2104, -+ 0x781b, 0x004d, 0x2091, 0x8001, 0x0e7f, 0x0f7f, 0x007c, 0x2009, -+ 0x0002, 0x2069, 0x6000, 0x6808, 0xd0ec, 0x00c0, 0x2942, 0x2071, -+ 0x6080, 0x2079, 0x0100, 0x2021, 0x62bf, 0x784b, 0x000f, 0x0098, -+ 0x28fb, 0x7838, 0x0078, 0x28ed, 0x784b, 0x000f, 0x00a8, 0x28fb, -+ 0x7838, 0x0078, 0x28f4, 0x20a9, 0x0060, 0x789b, 0x0000, 0x78af, -+ 0x0000, 0x78af, 0x0000, 0x00f0, 0x28ff, 0x70ab, 0x009d, 0x2019, -+ 0x5df1, 0x1078, 0x2958, 0x680c, 0xd0e4, 0x0040, 0x2919, 0x789b, -+ 0x0020, 0x20a9, 0x0010, 0x78af, 0x0000, 0x78af, 0x1020, 0x00f0, -+ 0x2913, 0x7003, 0x0000, 0x017e, 0xd18c, 0x2009, 0x0000, 0x0040, -+ 0x2922, 0xc1bd, 0x1078, 0x2b31, 0x017f, 0x701c, 0xa084, 0x000f, -+ 0x007e, 0x680c, 0xd0e4, 0x007f, 0x00c0, 0x2932, 0xa085, 0x6340, -+ 0x0078, 0x2934, 0xa085, 0x62c0, 0x7806, 0x780f, 0xb204, 0x7843, -+ 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x704f, 0x0008, 0x745a, -+ 0x7057, 0x0000, 0x8109, 0x0040, 0x2957, 0x2071, 0x6040, 0x6808, -+ 0xd0ec, 0x0040, 0x2951, 0x2079, 0x0100, 0x2021, 0x60bf, 0x0078, -+ 0x28ed, 0x2079, 0x0200, 0x2021, 0x60bf, 0x0078, 0x28f4, 0x007c, -+ 0x137e, 0x147e, 0x157e, 0x047e, 0xaf80, 0x002b, 0x20a0, 0x2304, -+ 0xa005, 0x789a, 0x0040, 0x2979, 0x8318, 0x2324, 0x8318, 0x2398, -+ 0x24a8, 0xa484, 0xff00, 0x0040, 0x2971, 0xa482, 0x0100, 0x20a9, -+ 0x0100, 0x2020, 0x53a6, 0xa005, 0x00c0, 0x2968, 0x3318, 0x0078, -+ 0x295f, 0x047f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0f7e, -+ 0xd1bc, 0x00c0, 0x2993, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x298f, 0x2079, 0x0100, 0x0078, 0x2995, 0x2079, -+ 0x0200, 0x0078, 0x2995, 0x2079, 0x0100, 0xa18c, 0x000f, 0x7804, -+ 0xa084, 0xfff0, 0xa105, 0x7806, 0x0f7f, 0x017f, 0x1078, 0x2b31, -+ 0x007c, 0xd3fc, 0x00c0, 0x29b4, 0x007e, 0x2001, 0x6002, 0x2004, -+ 0xd0ec, 0x007f, 0x0040, 0x29b0, 0x2011, 0x0101, 0x0078, 0x29b6, -+ 0x2011, 0x0201, 0x0078, 0x29b6, 0x2011, 0x0101, 0x20a9, 0x0009, -+ 0x810b, 0x00f0, 0x29b8, 0xa18c, 0x0e00, 0x2204, 0xa084, 0xf1ff, -+ 0xa105, 0x2012, 0x007c, 0x2019, 0x0002, 0x2001, 0x6002, 0x2004, -+ 0xd0ec, 0x0040, 0x29d0, 0x8319, 0x2009, 0x0101, 0x0078, 0x29d2, -+ 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x00f0, 0x29d4, 0xa294, -+ 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a, 0x8319, 0x0040, -+ 0x29e5, 0x2009, 0x0201, 0x0078, 0x29d2, 0x007c, 0xd3fc, 0x00c0, -+ 0x29f9, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, -+ 0x29f5, 0x2011, 0x0101, 0x0078, 0x29fb, 0x2011, 0x0201, 0x0078, -+ 0x29fb, 0x2011, 0x0101, 0x20a9, 0x000c, 0x810b, 0x00f0, 0x29fd, -+ 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105, 0x2012, 0x007c, -+ 0xd3fc, 0x00c0, 0x2a1b, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x2a17, 0x2011, 0x0102, 0x0078, 0x2a1d, 0x2011, -+ 0x0202, 0x0078, 0x2a1d, 0x2011, 0x0102, 0x2204, 0xa084, 0xffcf, -+ 0xa105, 0x2012, 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x2a37, 0x007e, -+ 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2a33, 0x2061, -+ 0x0100, 0x0078, 0x2a39, 0x2061, 0x0200, 0x0078, 0x2a39, 0x2061, -+ 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0020, 0x609a, 0x62ac, -+ 0x63ac, 0x0c7f, 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x2a57, 0x007e, -+ 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2a53, 0x2061, -+ 0x0100, 0x0078, 0x2a59, 0x2061, 0x0200, 0x0078, 0x2a59, 0x2061, -+ 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0022, 0x609a, 0x60a4, -+ 0xa084, 0xffdf, 0x60ae, 0x0c7f, 0x007c, 0x0c7e, 0xd1bc, 0x00c0, -+ 0x2a79, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, -+ 0x2a75, 0x2061, 0x0100, 0x0078, 0x2a7b, 0x2061, 0x0200, 0x0078, -+ 0x2a7b, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0022, -+ 0x609a, 0x60a4, 0xa085, 0x0020, 0x60ae, 0x0c7f, 0x007c, 0x0c7e, -+ 0xd1bc, 0x00c0, 0x2a9b, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x2a97, 0x2061, 0x0100, 0x0078, 0x2a9d, 0x2061, -+ 0x0200, 0x0078, 0x2a9d, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, -+ 0xa080, 0x0020, 0x609a, 0x60a4, 0xd2ac, 0x0040, 0x2aa9, 0xc2ac, -+ 0xc3f5, 0x62ae, 0x2010, 0x60a4, 0x63ae, 0x2018, 0x0c7f, 0x007c, -+ 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040, 0x2b0f, -+ 0xd1fc, 0x00c0, 0x2abf, 0x2061, 0xa6c0, 0x0078, 0x2ac1, 0x2061, -+ 0xa7d0, 0x1078, 0x2b17, 0x0040, 0x2af4, 0x20a9, 0x0101, 0xd1fc, -+ 0x00c0, 0x2ace, 0x2061, 0xa5c0, 0x0078, 0x2ad0, 0x2061, 0xa6d0, -+ 0x0c7e, 0x1078, 0x2b17, 0x0040, 0x2adb, 0x0c7f, 0x8c60, 0x00f0, -+ 0x2ad0, 0x0078, 0x2b0f, 0x007f, 0xd1fc, 0x00c0, 0x2ae5, 0x2071, -+ 0x6040, 0xa082, 0xa5c0, 0x0078, 0x2ae9, 0x2071, 0x6080, 0xa082, -+ 0xa6d0, 0x707e, 0x717a, 0x2001, 0x0004, 0x706a, 0x7087, 0x000f, -+ 0x1078, 0x2845, 0x0078, 0x2b0b, 0x60d0, 0xa005, 0x00c0, 0x2b0f, -+ 0xd1fc, 0x00c0, 0x2aff, 0x2071, 0x6040, 0x0078, 0x2b01, 0x2071, -+ 0x6080, 0x717a, 0x2c00, 0x7082, 0x2001, 0x0006, 0x706a, 0x7087, -+ 0x000f, 0x1078, 0x2845, 0x2001, 0x0000, 0x0078, 0x2b11, 0x2001, -+ 0x0001, 0x2091, 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04, -+ 0xa005, 0x0040, 0x2b2e, 0x2060, 0x6010, 0xa306, 0x00c0, 0x2b2b, -+ 0x600c, 0xa206, 0x00c0, 0x2b2b, 0x6014, 0xa106, 0x00c0, 0x2b2b, -+ 0xa006, 0x0078, 0x2b30, 0x6000, 0x0078, 0x2b18, 0xa085, 0x0001, -+ 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0xd1bc, 0x00c0, 0x2b49, 0x2079, -+ 0x6040, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, -+ 0x2b45, 0x2071, 0x0100, 0x0078, 0x2b4d, 0x2071, 0x0200, 0x0078, -+ 0x2b4d, 0x2079, 0x6080, 0x2071, 0x0100, 0x791c, 0xa18c, 0x000f, -+ 0x70ec, 0xa084, 0x0100, 0x007f, 0x0040, 0x2b64, 0x810b, 0x810b, -+ 0x810b, 0x810b, 0xd0bc, 0x00c0, 0x2b61, 0xa18d, 0x0f00, 0x0078, -+ 0x2b63, 0xa18d, 0x0800, 0x2104, 0x0e7f, 0x0f7f, 0x007c, 0x2001, -+ 0x6001, 0x2004, 0xd0ac, 0x00c0, 0x2b78, 0x68e4, 0xa08c, 0x0020, -+ 0x0040, 0x2b78, 0xa084, 0x0006, 0x00c0, 0x2b78, 0x1078, 0x2b79, -+ 0x007c, 0x6014, 0x0e7e, 0x037e, 0x2018, 0x2071, 0x6540, 0xd0fc, -+ 0x00c0, 0x2b84, 0x2071, 0x64c0, 0x8007, 0xa084, 0x000f, 0x8003, -+ 0x8003, 0x8003, 0xae70, 0x7004, 0xa084, 0x000a, 0x00c0, 0x2bea, -+ 0x7108, 0xa194, 0xff00, 0x0040, 0x2bea, 0xa18c, 0x00ff, 0x2001, -+ 0x000a, 0xa106, 0x0040, 0x2bb7, 0x2001, 0x000c, 0xa106, 0x0040, -+ 0x2bbb, 0x2001, 0x0012, 0xa106, 0x0040, 0x2bbf, 0x2001, 0x0014, -+ 0xa106, 0x0040, 0x2bc3, 0x2001, 0x0019, 0xa106, 0x0040, 0x2bc7, -+ 0x2001, 0x0032, 0xa106, 0x0040, 0x2bcb, 0x0078, 0x2bcf, 0x2009, -+ 0x000c, 0x0078, 0x2bd0, 0x2009, 0x0012, 0x0078, 0x2bd0, 0x2009, -+ 0x0014, 0x0078, 0x2bd0, 0x2009, 0x0019, 0x0078, 0x2bd0, 0x2009, -+ 0x0020, 0x0078, 0x2bd0, 0x2009, 0x003f, 0x0078, 0x2bd0, 0xa016, -+ 0x2100, 0xa205, 0x700a, 0x7004, 0xa085, 0x000a, 0x7006, 0x2071, -+ 0x6000, 0x7004, 0xd0bc, 0x0040, 0x2bea, 0xd3fc, 0x00c0, 0x2be5, -+ 0x73ee, 0x2071, 0x6040, 0x0078, 0x2be8, 0x73f2, 0x2071, 0x6080, -+ 0x701b, 0x800f, 0x037f, 0x0e7f, 0x007c, 0x2001, 0x6003, 0x2004, -+ 0xd0e4, 0x00c0, 0x2bf9, 0x7804, 0xa084, 0xff1f, 0xa085, 0x6340, -+ 0x7806, 0x007c, 0x0068, 0x2bfa, 0x2091, 0x8000, 0x2071, 0x0000, -+ 0x007e, 0x7018, 0xd084, 0x00c0, 0x2c01, 0x007f, 0x2071, 0x0010, -+ 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db, 0x090b, 0x70df, -+ 0x0001, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, -+ 0x2c17, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0xa594, 0x003f, 0xa49c, -+ 0x0003, 0xa484, 0x000f, 0x0079, 0x2c25, 0x2c37, 0x2c37, 0x2c37, -+ 0x30a9, 0x4547, 0x2c35, 0x2c5f, 0x2c62, 0x2c35, 0x2c35, 0x2c35, -+ 0x2c35, 0x2c35, 0x2c35, 0x2c35, 0x2c35, 0x1078, 0x2bfa, 0x8507, -+ 0xa084, 0x001f, 0x0079, 0x2c3c, 0x2c65, 0x30a9, 0x32d8, 0x33f3, -+ 0x341e, 0x36b7, 0x39f0, 0x3a6f, 0x3aed, 0x3b81, 0x3c6c, 0x3d13, -+ 0x2c5f, 0x31d4, 0x39bf, 0x2c5c, 0x49b9, 0x49e0, 0x4bd7, 0x4be3, -+ 0x4cc7, 0x2c5c, 0x2c5c, 0x4dae, 0x4db2, 0x49b7, 0x2c5c, 0x4b1d, -+ 0x2c5c, 0x484c, 0x2c62, 0x2c5c, 0x1078, 0x2bfa, 0x007c, 0x781b, -+ 0x004f, 0x007c, 0x781b, 0x00d6, 0x007c, 0x724a, 0xa584, 0x0001, -+ 0x00c0, 0x485e, 0x0040, 0x2c78, 0x1078, 0x2bfa, 0x7003, 0x0000, -+ 0x7053, 0x0000, 0x704b, 0x0000, 0x7043, 0x0000, 0x1078, 0x44fa, -+ 0x7064, 0xa06d, 0x0040, 0x2c85, 0x70f4, 0xa084, 0x0001, 0x7168, -+ 0xa105, 0x00c0, 0x2c85, 0x0078, 0x2df1, 0x7068, 0xa084, 0x0007, -+ 0x0079, 0x2c8a, 0x2c92, 0x2d10, 0x2d19, 0x2d24, 0x2d2f, 0x2dd7, -+ 0x2d3a, 0x2d10, 0x7830, 0xd0bc, 0x00c0, 0x2c5e, 0x71f0, 0xd1bc, -+ 0x00c0, 0x2c5e, 0xd1b4, 0x00c0, 0x2cee, 0x70c0, 0xa086, 0x0001, -+ 0x0040, 0x2c5e, 0x1078, 0x44e0, 0x00c0, 0x2c5e, 0x70d0, 0xa06d, -+ 0x6800, 0xa065, 0xa055, 0x789b, 0x0010, 0x6b0c, 0x7baa, 0x6808, -+ 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886, 0x0001, 0x0040, -+ 0x2cbc, 0x69c0, 0x7daa, 0x79aa, 0x68c4, 0xa04d, 0x6e1c, 0x7830, -+ 0xd0bc, 0x00c0, 0x2c5e, 0x2001, 0x0010, 0x0078, 0x2f58, 0x7064, -+ 0xa005, 0x00c0, 0x2c5e, 0x1078, 0x44e0, 0x00c0, 0x2c5e, 0x0c7e, -+ 0x0d7e, 0x70d0, 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, 0x0010, -+ 0x6b0c, 0x7baa, 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, -+ 0xa886, 0x0001, 0x0040, 0x2ce7, 0x69c0, 0x7daa, 0x79aa, 0x68c4, -+ 0xa04d, 0x6e1c, 0x2001, 0x0020, 0x0078, 0x2f58, 0x1078, 0x44bc, -+ 0x00c0, 0x2c5e, 0x70d8, 0xa06d, 0x6814, 0xc0fc, 0x8007, 0x7882, -+ 0x68b4, 0x785a, 0x781b, 0x004f, 0x704c, 0xc08d, 0x780a, 0x68c0, -+ 0x703e, 0x70f0, 0xc0b4, 0x70f2, 0x70d4, 0xa065, 0x68c4, 0x705e, -+ 0x7003, 0x0002, 0x2d00, 0x7052, 0xad80, 0x0009, 0x7042, 0x007c, -+ 0x1078, 0x44bc, 0x00c0, 0x2d18, 0x781b, 0x0048, 0x7003, 0x0004, -+ 0x007c, 0x1078, 0x44bc, 0x00c0, 0x2d23, 0x2011, 0x000c, 0x1078, -+ 0x2d4a, 0x7003, 0x0004, 0x007c, 0x1078, 0x44bc, 0x00c0, 0x2d2e, -+ 0x2011, 0x0006, 0x1078, 0x2d4a, 0x7003, 0x0004, 0x007c, 0x1078, -+ 0x44bc, 0x00c0, 0x2d39, 0x2011, 0x000d, 0x1078, 0x2d4a, 0x7003, -+ 0x0004, 0x007c, 0x1078, 0x44bc, 0x00c0, 0x2d49, 0x2011, 0x0006, -+ 0x1078, 0x2d4a, 0x7080, 0x7083, 0x0000, 0x2068, 0x7052, 0x7003, -+ 0x0001, 0x007c, 0x7178, 0xc1fc, 0x8107, 0x7882, 0x789b, 0x0010, -+ 0xa286, 0x000c, 0x00c0, 0x2d59, 0x7aaa, 0x2001, 0x0001, 0x0078, -+ 0x2d6e, 0xa18c, 0x001f, 0xa18d, 0x00c0, 0x79aa, 0xa286, 0x000d, -+ 0x0040, 0x2d67, 0x7aaa, 0x2001, 0x0002, 0x0078, 0x2d6e, 0x78ab, -+ 0x0020, 0x717c, 0x79aa, 0x7aaa, 0x2001, 0x0004, 0x789b, 0x0060, -+ 0x78aa, 0x785b, 0x0004, 0x781b, 0x00e7, 0x1078, 0x44fa, 0x7087, -+ 0x000f, 0x70f0, 0xd0b4, 0x0040, 0x2d8a, 0xc0b4, 0x70f2, 0x0c7e, -+ 0x70d4, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, -+ 0x601a, 0x0c7f, 0x007c, 0x7010, 0xa005, 0x00c0, 0x2d99, 0x70f0, -+ 0xd0b4, 0x0040, 0x2d9a, 0x70d4, 0xac06, 0x00c0, 0x2d9a, 0x1078, -+ 0x2d79, 0x007c, 0x017e, 0x71c0, 0xa186, 0x0001, 0x0040, 0x2dcc, -+ 0x0d7e, 0x027e, 0x2100, 0x2011, 0x0001, 0xa212, 0x70d0, 0x2068, -+ 0x6800, 0xac06, 0x0040, 0x2db3, 0x8211, 0x0040, 0x2dca, 0x1078, -+ 0x2dce, 0x0078, 0x2da8, 0x0c7e, 0x2100, 0x2011, 0x0001, 0xa212, -+ 0x70d0, 0x2068, 0x6800, 0x2060, 0x6008, 0xa084, 0xfbef, 0x600a, -+ 0x8211, 0x0040, 0x2dc7, 0x1078, 0x2dce, 0x0078, 0x2dba, 0x70c3, -+ 0x0001, 0x0c7f, 0x027f, 0x0d7f, 0x017f, 0x007c, 0xade8, 0x0005, -+ 0x70c8, 0xad06, 0x00c0, 0x2dd6, 0x70c4, 0x2068, 0x007c, 0x1078, -+ 0x44bc, 0x00c0, 0x2c5e, 0x7080, 0x2068, 0x7778, 0x1078, 0x43a8, -+ 0x2c50, 0x1078, 0x45c9, 0x789b, 0x0010, 0x6814, 0xa084, 0x001f, -+ 0xc0bd, 0x78aa, 0x6e1c, 0x2041, 0x0001, 0x2001, 0x0004, 0x0078, -+ 0x2f5e, 0x1078, 0x44bc, 0x00c0, 0x2c5e, 0x789b, 0x0010, 0x7064, -+ 0x2068, 0x6f14, 0x1078, 0x2d79, 0x1078, 0x43a8, 0x2c50, 0x1078, -+ 0x45c9, 0x6824, 0xa005, 0x0040, 0x2e0d, 0xa082, 0x0006, 0x0048, -+ 0x2e0b, 0x0078, 0x2e0d, 0x6827, 0x0005, 0x6b14, 0xa39c, 0x001f, -+ 0xa39d, 0x00c0, 0x2960, 0x6000, 0x2a60, 0xa084, 0x8000, 0x0040, -+ 0x2e1d, 0xa684, 0x0001, 0x0040, 0x2e1f, 0xa39c, 0xffbf, 0x7baa, -+ 0x2031, 0x0020, 0x2041, 0x0001, 0x2001, 0x0003, 0x0078, 0x2f5e, -+ 0xc28d, 0x72f2, 0x72dc, 0xa200, 0xa015, 0x7158, 0x8108, 0xa12a, -+ 0x0048, 0x2e33, 0x71dc, 0x2164, 0x6504, 0x85ff, 0x00c0, 0x2e4e, -+ 0x715a, 0x8421, 0x00c0, 0x2e2e, 0x70f0, 0xd08c, 0x0040, 0x2e46, -+ 0x70ec, 0xa005, 0x00c0, 0x2e46, 0x70ef, 0x000a, 0x7048, 0xa005, -+ 0x0040, 0x485e, 0x007c, 0x2200, 0x0078, 0x2e38, 0x70f0, 0xc08c, -+ 0x70f2, 0x70ef, 0x0000, 0x6034, 0xa005, 0x00c0, 0x2e4b, 0x6708, -+ 0xa784, 0x073f, 0x0040, 0x2e78, 0xd7d4, 0x00c0, 0x2e4b, 0xa784, -+ 0x0021, 0x00c0, 0x2e4b, 0xd78c, 0x0040, 0x2e6b, 0xd794, 0x0040, -+ 0x2e4b, 0xc794, 0x670a, 0xa784, 0x0218, 0x00c0, 0x2e4b, 0xd7c4, -+ 0x0040, 0x2e78, 0x6018, 0xa005, 0x00c0, 0x2e4b, 0xc7c4, 0x670a, -+ 0x2568, 0x6823, 0x0000, 0x6e1c, 0xa684, 0x000e, 0x6318, 0x0040, -+ 0x2e89, 0x601c, 0xa302, 0x0048, 0x2e8c, 0x0040, 0x2e8c, 0x0078, -+ 0x2e4b, 0x83ff, 0x00c0, 0x2e4b, 0x2d58, 0x2c50, 0x715a, 0x68d3, -+ 0x0000, 0xd7bc, 0x00c0, 0x2e97, 0x7024, 0x6022, 0x603a, 0xc7bc, -+ 0x670a, 0x68c4, 0xa065, 0xa04d, 0x6100, 0x2a60, 0x2041, 0x0001, -+ 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0xd1fc, 0x0040, 0x2eab, -+ 0xd684, 0x0040, 0x2ead, 0xa39c, 0xffbf, 0xd6a4, 0x0040, 0x2eb2, -+ 0xa39d, 0x0020, 0xa684, 0x000e, 0x00c0, 0x2f03, 0xc7a5, 0x670a, -+ 0x2c00, 0x68ca, 0x77c0, 0xa786, 0x0001, 0x00c0, 0x2ed9, 0x70f0, -+ 0xd0b4, 0x00c0, 0x2ed9, 0x7000, 0xa082, 0x0001, 0x00c8, 0x2ed9, -+ 0x7010, 0xa005, 0x00c0, 0x2ed9, 0x1078, 0x44e0, 0x00c0, 0x2ed9, -+ 0x7830, 0xd0bc, 0x00c0, 0x2ed9, 0x789b, 0x0010, 0x7baa, 0x0078, -+ 0x2f56, 0x8739, 0x77c2, 0x2750, 0x77cc, 0xa7b0, 0x0005, 0x70c8, -+ 0xa606, 0x00c0, 0x2ee4, 0x76c4, 0x76ce, 0x2c3a, 0x8738, 0x2d3a, -+ 0x8738, 0x283a, 0x8738, 0x233a, 0x8738, 0x253a, 0x7830, 0xd0bc, -+ 0x0040, 0x2efa, 0x2091, 0x303d, 0x70f0, 0xa084, 0x303d, 0x2091, -+ 0x8000, 0x2090, 0xaad5, 0x0000, 0x0040, 0x2f02, 0x8421, 0x2200, -+ 0x00c0, 0x2e2d, 0x007c, 0xd1dc, 0x0040, 0x3ffb, 0x2029, 0x0020, -+ 0xd69c, 0x00c0, 0x2f10, 0x8528, 0xd68c, 0x00c0, 0x2f10, 0x8528, -+ 0x8840, 0x6f14, 0x610c, 0x8108, 0xa18c, 0x00ff, 0x70e8, 0xa160, -+ 0x2c64, 0x8cff, 0x0040, 0x2f2e, 0x6014, 0xa706, 0x00c0, 0x2f18, -+ 0x60bc, 0x8001, 0x60be, 0x00c0, 0x2f13, 0x2a60, 0x6008, 0xc0c5, -+ 0x600a, 0x2200, 0x8421, 0x00c0, 0x2e2d, 0x007c, 0x2a60, 0x610e, -+ 0x69c2, 0x2c00, 0x68ca, 0x8840, 0x6008, 0xc0d5, 0x600a, 0x77c0, -+ 0xa786, 0x0001, 0x00c0, 0x2ed9, 0x70f0, 0xd0b4, 0x00c0, 0x2ed9, -+ 0x7000, 0xa082, 0x0001, 0x00c8, 0x2ed9, 0x7010, 0xa005, 0x00c0, -+ 0x2ed9, 0x1078, 0x44e0, 0x00c0, 0x2ed9, 0x7830, 0xd0bc, 0x00c0, -+ 0x2ed9, 0x789b, 0x0010, 0x7baa, 0x7daa, 0x79aa, 0x2001, 0x0002, -+ 0x007e, 0x6018, 0x8000, 0x601a, 0x0078, 0x2f5f, 0x007e, 0x2960, -+ 0x6104, 0x2a60, 0xa184, 0x0018, 0x0040, 0x2f7a, 0xa184, 0x0010, -+ 0x0040, 0x2f6e, 0x1078, 0x4201, 0x00c0, 0x2f9a, 0xd19c, 0x0040, -+ 0x2f7a, 0x69a0, 0xa184, 0x0600, 0x00c0, 0x2f7a, 0x1078, 0x40f5, -+ 0x0078, 0x2f9a, 0x69a0, 0xa184, 0x1e00, 0x0040, 0x2fa4, 0xd1dc, -+ 0x0040, 0x2f90, 0x0c7e, 0x2960, 0x6000, 0xc0ed, 0x6002, 0x6104, -+ 0xc1a5, 0x6106, 0x0c7f, 0x1078, 0x4201, 0x00c0, 0x2f9a, 0x69a0, -+ 0xd1cc, 0x0040, 0x2f97, 0x1078, 0x4147, 0x0078, 0x2f9a, 0xd1d4, -+ 0x00c0, 0x2f76, 0x69a0, 0xd1e4, 0x0040, 0x2fa4, 0x6914, 0xa18c, -+ 0xff00, 0x810f, 0x1078, 0x2a43, 0x027f, 0xa68c, 0x00e0, 0xa684, -+ 0x0060, 0x0040, 0x2fb0, 0xa086, 0x0060, 0x00c0, 0x2fb0, 0xc1f5, -+ 0xa18d, 0x0104, 0x69b6, 0x789b, 0x0060, 0x2800, 0x78aa, 0x6818, -+ 0xc0fd, 0x681a, 0xd6bc, 0x0040, 0x2fcb, 0xc0fc, 0x708b, 0x0000, -+ 0xa08a, 0x000d, 0x0050, 0x2fc9, 0xa08a, 0x000c, 0x718a, 0x2001, -+ 0x000c, 0x800c, 0x718e, 0x78aa, 0x3518, 0x3340, 0x3428, 0x80ac, -+ 0xaf80, 0x002b, 0x20a0, 0x789b, 0x0000, 0xad80, 0x000b, 0x2098, -+ 0x53a6, 0x23a8, 0x2898, 0x25a0, 0xa286, 0x0020, 0x00c0, 0x2ffe, -+ 0x70f0, 0xc0b5, 0x70f2, 0x2c00, 0x70d6, 0x2d00, 0x70da, 0xa286, -+ 0x0002, 0x0040, 0x302a, 0x70c0, 0x8000, 0x70c2, 0x74d0, 0xa498, -+ 0x0005, 0x70c8, 0xa306, 0x00c0, 0x2ff6, 0x73c4, 0x73d2, 0xa286, -+ 0x0010, 0x0040, 0x2c5e, 0x0d7f, 0x0c7f, 0x007c, 0x7000, 0xa005, -+ 0x00c0, 0x2fe0, 0xa286, 0x0002, 0x00c0, 0x3044, 0x1078, 0x44bc, -+ 0x00c0, 0x2fe0, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x68b4, 0x785a, -+ 0x781b, 0x004f, 0x704c, 0xc08d, 0x780a, 0x127e, 0x0d7e, 0x0c7e, -+ 0x70f0, 0xa084, 0x2700, 0x2090, 0x0c7f, 0x0d7f, 0x127f, 0x2900, -+ 0x705e, 0x68c0, 0x703e, 0x7003, 0x0002, 0x2d00, 0x7052, 0xad80, -+ 0x0009, 0x7042, 0x7830, 0xd0bc, 0x0040, 0x3036, 0x2091, 0x303d, -+ 0x70f0, 0xa084, 0x303d, 0x2091, 0x8000, 0x2090, 0x70c0, 0xa005, -+ 0x00c0, 0x303b, 0x007c, 0x8421, 0x0040, 0x303a, 0x7254, 0x70dc, -+ 0xa200, 0xa015, 0x0078, 0x2e2d, 0xa286, 0x0010, 0x00c0, 0x306f, -+ 0x1078, 0x44bc, 0x00c0, 0x2fe0, 0x6814, 0xc0fc, 0x8007, 0x7882, -+ 0x68b4, 0x785a, 0x781b, 0x004f, 0x704c, 0xc08d, 0x780a, 0x70c0, -+ 0x8000, 0x70c2, 0x74d0, 0xa490, 0x0005, 0x70c8, 0xa206, 0x00c0, -+ 0x3062, 0x72c4, 0x72d2, 0x2900, 0x705e, 0x68c0, 0x703e, 0x7003, -+ 0x0002, 0x2d00, 0x7052, 0xad80, 0x0009, 0x7042, 0x007c, 0x6bb4, -+ 0xa39d, 0x2000, 0x7b5a, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x6b94, -+ 0x7bd6, 0x7bde, 0x6e98, 0x7ed2, 0x7eda, 0x781b, 0x004f, 0x2900, -+ 0x705e, 0x7202, 0x704c, 0xc08d, 0x780a, 0x7200, 0x2300, 0xa605, -+ 0x0040, 0x309b, 0x70f0, 0xa084, 0x2700, 0xa086, 0x2300, 0x00c0, -+ 0x3095, 0x2009, 0x0000, 0x0078, 0x3097, 0x2009, 0x0001, 0xa284, -+ 0x000f, 0x1079, 0x309f, 0xad80, 0x0009, 0x7042, 0x007c, 0x30a7, -+ 0x591e, 0x591e, 0x590b, 0x591e, 0x30a7, 0x30a7, 0x30a7, 0x1078, -+ 0x2bfa, 0x1078, 0x44bc, 0x1078, 0x2bed, 0x7808, 0xa084, 0xfffc, -+ 0x780a, 0x0f7e, 0x2079, 0x6000, 0x78b0, 0x0f7f, 0xd084, 0x0040, -+ 0x30d2, 0x7068, 0xa086, 0x0001, 0x00c0, 0x30c0, 0x0078, 0x31a7, -+ 0x7068, 0xa086, 0x0005, 0x00c0, 0x30d0, 0x7080, 0x2068, 0x681b, -+ 0x0004, 0x6817, 0x0000, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, -+ 0x706b, 0x0000, 0x70c3, 0x0000, 0x70c4, 0x70ce, 0x70d2, 0x70f4, -+ 0xc084, 0x70f6, 0x1078, 0x2d79, 0x2011, 0x0004, 0x7168, 0xa186, -+ 0x0001, 0x0040, 0x30f2, 0xa186, 0x0007, 0x00c0, 0x30eb, 0x701b, -+ 0x0005, 0x0078, 0x30f2, 0x701b, 0x0001, 0x70f0, 0xc0dd, 0x70f2, -+ 0x0078, 0x30f2, 0x2001, 0x6008, 0x203c, 0xd7fc, 0x00c0, 0x30fe, -+ 0xae86, 0x6040, 0x0040, 0x3102, 0x0078, 0x3108, 0xae86, 0x6080, -+ 0x00c0, 0x3108, 0xa784, 0x00ff, 0xa086, 0x0018, 0x0040, 0x310f, -+ 0x7014, 0x7012, 0xa005, 0x00c0, 0x310f, 0x70c3, 0x0001, 0x067e, -+ 0x1078, 0x55ac, 0x157e, 0x20a9, 0x0010, 0x2039, 0x0000, 0x1078, -+ 0x42de, 0xa7b8, 0x0100, 0x00f0, 0x3117, 0x157f, 0x067f, 0x7000, -+ 0x0079, 0x3122, 0x315a, 0x3135, 0x3135, 0x312a, 0x315a, 0x315a, -+ 0x315a, 0x315a, 0x7064, 0xa005, 0x0040, 0x315a, 0xad06, 0x00c0, -+ 0x3135, 0x6800, 0x7066, 0x0078, 0x3147, 0x6820, 0xd084, 0x00c0, -+ 0x3143, 0x6f14, 0x1078, 0x43a8, 0x6008, 0xc0d4, 0x600a, 0x1078, -+ 0x3fd3, 0x0078, 0x3147, 0x7060, 0x2060, 0x6800, 0x6002, 0xa684, -+ 0x5f00, 0x681e, 0x6818, 0xd0fc, 0x0040, 0x314f, 0x6a1a, 0x6817, -+ 0x0000, 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, -+ 0x1078, 0x2251, 0x2011, 0x0004, 0xb284, 0x0400, 0x00c0, 0x3164, -+ 0x2021, 0xa6c0, 0x0078, 0x3166, 0x2021, 0xa7d0, 0x1078, 0x31b5, -+ 0xb284, 0x0400, 0x0040, 0x3170, 0x2021, 0x6099, 0x0078, 0x3172, -+ 0x2021, 0x6059, 0x1078, 0x31b5, 0x157e, 0x20a9, 0x0101, 0xb284, -+ 0x0400, 0x00c0, 0x317f, 0x2021, 0xa5c0, 0x0078, 0x3181, 0x2021, -+ 0xa6d0, 0x1078, 0x31b5, 0x8420, 0x00f0, 0x3181, 0xb284, 0x0300, -+ 0x0040, 0x318e, 0x2061, 0x65c0, 0x0078, 0x3190, 0x2061, 0x85c0, -+ 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, 0x6110, 0x81ff, 0x0040, -+ 0x319d, 0xa102, 0x0050, 0x319d, 0x6012, 0x601b, 0x0000, 0xace0, -+ 0x0010, 0x00f0, 0x3194, 0x8421, 0x00c0, 0x3192, 0x157f, 0x7090, -+ 0xa084, 0x8000, 0x0040, 0x31ae, 0x1078, 0x4639, 0x706b, 0x0000, -+ 0x7003, 0x0000, 0x7053, 0x0000, 0x007c, 0x047e, 0x2404, 0xa005, -+ 0x0040, 0x31d0, 0x2068, 0x6800, 0x007e, 0x6a1a, 0x6817, 0x0000, -+ 0x682b, 0x0000, 0x68b4, 0xa084, 0x5f00, 0x681e, 0x6820, 0xa084, -+ 0x00ff, 0xc09d, 0x6822, 0x1078, 0x2251, 0x007f, 0x0078, 0x31b7, -+ 0x047f, 0x2023, 0x0000, 0x007c, 0xa282, 0x0003, 0x0050, 0x31da, -+ 0x1078, 0x2bfa, 0x1078, 0x2bed, 0x2300, 0x0079, 0x31df, 0x31e2, -+ 0x326d, 0x328a, 0xa282, 0x0002, 0x0040, 0x31e8, 0x1078, 0x2bfa, -+ 0x7068, 0x706b, 0x0000, 0x7087, 0x0000, 0x0079, 0x31ef, 0x31f7, -+ 0x31f7, 0x31f9, 0x3239, 0x4007, 0x31f7, 0x3239, 0x31f7, 0x1078, -+ 0x2bfa, 0x7778, 0x1078, 0x42de, 0x7778, 0xa7bc, 0x8f00, 0x1078, -+ 0x43a8, 0x6018, 0xa005, 0x0040, 0x3230, 0xd7fc, 0x00c0, 0x320c, -+ 0x2021, 0xa6c0, 0x0078, 0x320e, 0x2021, 0xa7d0, 0x2009, 0x0005, -+ 0x2011, 0x0010, 0x1078, 0x32a5, 0x0040, 0x3230, 0x157e, 0x20a9, -+ 0x0101, 0xd7fc, 0x00c0, 0x3220, 0x2021, 0xa5c0, 0x0078, 0x3222, -+ 0x2021, 0xa6d0, 0x047e, 0x2009, 0x0005, 0x2011, 0x0010, 0x1078, -+ 0x32a5, 0x047f, 0x0040, 0x322f, 0x8420, 0x00f0, 0x3222, 0x157f, -+ 0x8738, 0xa784, 0x001f, 0x00c0, 0x31ff, 0x0078, 0x2c6e, 0x0078, -+ 0x2c6e, 0x7778, 0x1078, 0x43a8, 0x6018, 0xa005, 0x0040, 0x326b, -+ 0xd7fc, 0x00c0, 0x3247, 0x2021, 0xa6c0, 0x0078, 0x3249, 0x2021, -+ 0xa7d0, 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x32a5, 0x0040, -+ 0x326b, 0x157e, 0x20a9, 0x0101, 0xd7fc, 0x00c0, 0x325b, 0x2021, -+ 0xa5c0, 0x0078, 0x325d, 0x2021, 0xa6d0, 0x047e, 0x2009, 0x0005, -+ 0x2011, 0x0020, 0x1078, 0x32a5, 0x047f, 0x0040, 0x326a, 0x8420, -+ 0x00f0, 0x325d, 0x157f, 0x0078, 0x2c6e, 0x2200, 0x0079, 0x3270, -+ 0x3273, 0x3275, 0x3275, 0x1078, 0x2bfa, 0x2009, 0x0012, 0x7068, -+ 0xa086, 0x0002, 0x0040, 0x327e, 0x2009, 0x000e, 0x6818, 0xd0fc, -+ 0x0040, 0x3283, 0x691a, 0x706b, 0x0000, 0x70f0, 0xc0dd, 0x70f2, -+ 0x0078, 0x445a, 0x2200, 0x0079, 0x328d, 0x3292, 0x3275, 0x3290, -+ 0x1078, 0x2bfa, 0x1078, 0x55ac, 0x7000, 0xa086, 0x0002, 0x00c0, -+ 0x3f81, 0x1078, 0x3fe8, 0x6008, 0xa084, 0xfbef, 0x600a, 0x1078, -+ 0x3f72, 0x0040, 0x3f81, 0x0078, 0x2c6e, 0x2404, 0xa005, 0x0040, -+ 0x32d4, 0x2068, 0x2d04, 0x007e, 0x6814, 0xa706, 0x0040, 0x32b4, -+ 0x2d20, 0x007f, 0x0078, 0x32a6, 0x007f, 0x2022, 0x6817, 0x0000, -+ 0x682b, 0x0000, 0x68b4, 0xa084, 0x5f00, 0x681e, 0x691a, 0x6820, -+ 0xa084, 0x00ff, 0xa205, 0x6822, 0x682b, 0x0000, 0x1078, 0x2251, -+ 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, 0xf9ef, 0x600a, 0x1078, -+ 0x2d9a, 0x1078, 0x3fe8, 0x007c, 0xa085, 0x0001, 0x0078, 0x32d3, -+ 0x2300, 0x0079, 0x32db, 0x32e0, 0x32de, 0x3385, 0x1078, 0x2bfa, -+ 0x78ec, 0xa084, 0x0001, 0x00c0, 0x32f4, 0x7000, 0xa086, 0x0004, -+ 0x00c0, 0x32ec, 0x0078, 0x332a, 0x1078, 0x3fe8, 0x6008, 0xa084, -+ 0xf9ef, 0x600a, 0x0078, 0x3f81, 0x78e4, 0xa005, 0x00d0, 0x332a, -+ 0x3208, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, -+ 0x3305, 0xa18c, 0x0300, 0x0078, 0x3307, 0xa18c, 0x0400, 0x0040, -+ 0x330d, 0x0018, 0x2c5e, 0x0078, 0x330f, 0x0028, 0x2c5e, 0x2008, -+ 0xa084, 0x0030, 0x00c0, 0x3317, 0x781b, 0x004f, 0x007c, 0x78ec, -+ 0xa084, 0x0003, 0x0040, 0x3314, 0xa184, 0x0007, 0x0079, 0x3320, -+ 0x3361, 0x336b, 0x3354, 0x3328, 0x44b1, 0x44b1, 0x3328, 0x3378, -+ 0x1078, 0x2bfa, 0x7000, 0xa086, 0x0004, 0x00c0, 0x3344, 0x7068, -+ 0xa086, 0x0002, 0x00c0, 0x333a, 0x2011, 0x0002, 0x2019, 0x0000, -+ 0x0078, 0x31d4, 0x7068, 0xa086, 0x0006, 0x0040, 0x3334, 0x7068, -+ 0xa086, 0x0004, 0x0040, 0x3334, 0x79e4, 0xa184, 0x0030, 0x0040, -+ 0x334e, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x3350, 0x0078, 0x39bf, -+ 0x2001, 0x0003, 0x0078, 0x36cb, 0x6818, 0xd0fc, 0x0040, 0x335a, -+ 0x681b, 0x001d, 0x1078, 0x42bd, 0x782b, 0x3008, 0x781b, 0x0058, -+ 0x007c, 0x6818, 0xd0fc, 0x0040, 0x3367, 0x681b, 0x001d, 0x1078, -+ 0x42bd, 0x0078, 0x4484, 0x6818, 0xd0fc, 0x0040, 0x3371, 0x681b, -+ 0x001d, 0x1078, 0x42bd, 0x782b, 0x3008, 0x781b, 0x00d3, 0x007c, -+ 0x6818, 0xd0fc, 0x0040, 0x337e, 0x681b, 0x001d, 0x1078, 0x42bd, -+ 0x782b, 0x3008, 0x781b, 0x009b, 0x007c, 0xa584, 0x000f, 0x00c0, -+ 0x33a4, 0x1078, 0x2bed, 0x7000, 0x0079, 0x338e, 0x2c6e, 0x3396, -+ 0x3398, 0x3f81, 0x3f81, 0x3f81, 0x3396, 0x3396, 0x1078, 0x2bfa, -+ 0x1078, 0x3fe8, 0x6008, 0xa084, 0xfbef, 0x600a, 0x1078, 0x3f72, -+ 0x0040, 0x3f81, 0x0078, 0x2c6e, 0x78e4, 0xa005, 0x00d0, 0x332a, -+ 0x3208, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, -+ 0x33b5, 0xa18c, 0x0300, 0x0078, 0x33b7, 0xa18c, 0x0400, 0x0040, -+ 0x33bd, 0x0018, 0x332a, 0x0078, 0x33bf, 0x0028, 0x332a, 0x2008, -+ 0xa084, 0x0030, 0x00c0, 0x33c7, 0x781b, 0x004f, 0x007c, 0x78ec, -+ 0xa084, 0x0003, 0x0040, 0x33c4, 0xa184, 0x0007, 0x0079, 0x33d0, -+ 0x33e1, 0x33e5, 0x33da, 0x33d8, 0x44b1, 0x44b1, 0x33d8, 0x44a9, -+ 0x1078, 0x2bfa, 0x1078, 0x42c5, 0x782b, 0x3008, 0x781b, 0x0058, -+ 0x007c, 0x1078, 0x42c5, 0x0078, 0x4484, 0x1078, 0x42c5, 0x782b, -+ 0x3008, 0x781b, 0x00d3, 0x007c, 0x1078, 0x42c5, 0x782b, 0x3008, -+ 0x781b, 0x009b, 0x007c, 0x2300, 0x0079, 0x33f6, 0x33fb, 0x33f9, -+ 0x33fd, 0x1078, 0x2bfa, 0x0078, 0x3b81, 0x681b, 0x0016, 0x78a3, -+ 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x3b81, 0x78ec, 0xa084, -+ 0x0003, 0x0040, 0x3b81, 0xa184, 0x0100, 0x0040, 0x3401, 0xa184, -+ 0x0007, 0x0079, 0x3413, 0x341b, 0x33e5, 0x3354, 0x445a, 0x44b1, -+ 0x44b1, 0x445a, 0x44a9, 0x1078, 0x446a, 0x007c, 0xa282, 0x0005, -+ 0x0050, 0x3424, 0x1078, 0x2bfa, 0x2300, 0x0079, 0x3427, 0x342a, -+ 0x367d, 0x368a, 0x2200, 0x0079, 0x342d, 0x3447, 0x3434, 0x3447, -+ 0x3432, 0x3660, 0x1078, 0x2bfa, 0x789b, 0x0018, 0x78a8, 0xa084, -+ 0x00ff, 0xa082, 0x0020, 0x0048, 0x429c, 0xa08a, 0x0004, 0x00c8, -+ 0x429c, 0x0079, 0x3443, 0x429c, 0x429c, 0x429c, 0x4246, 0x789b, -+ 0x0018, 0x79a8, 0xa184, 0x0080, 0x0040, 0x3458, 0x0078, 0x429c, -+ 0x7000, 0xa005, 0x00c0, 0x344e, 0x2011, 0x0004, 0x0078, 0x3d26, -+ 0xa184, 0x00ff, 0xa08a, 0x0010, 0x00c8, 0x429c, 0x0079, 0x3460, -+ 0x3472, 0x3470, 0x3488, 0x348c, 0x355f, 0x429c, 0x429c, 0x3561, -+ 0x429c, 0x429c, 0x365c, 0x365c, 0x429c, 0x429c, 0x429c, 0x365e, -+ 0x1078, 0x2bfa, 0xa684, 0x1000, 0x0040, 0x347e, 0x2001, 0x0500, -+ 0x8000, 0x8000, 0x783a, 0x781b, 0x0094, 0x007c, 0x6818, 0xd0fc, -+ 0x0040, 0x3486, 0x681b, 0x001d, 0x0078, 0x3476, 0x0078, 0x445a, -+ 0x681b, 0x001d, 0x0078, 0x42aa, 0x6920, 0x6922, 0xa684, 0x1800, -+ 0x00c0, 0x34f1, 0x6820, 0xa084, 0x0001, 0x00c0, 0x34f7, 0x6818, -+ 0xa086, 0x0008, 0x00c0, 0x349e, 0x681b, 0x0000, 0xd6d4, 0x0040, -+ 0x355c, 0xd6bc, 0x0040, 0x34dd, 0x708b, 0x0000, 0x6818, 0xa084, -+ 0x003f, 0xa08a, 0x000d, 0x0050, 0x34dd, 0xa08a, 0x000c, 0x718a, -+ 0x2001, 0x000c, 0x800c, 0x718e, 0x789b, 0x0061, 0x78aa, 0x157e, -+ 0x137e, 0x147e, 0x017e, 0xb28c, 0x0300, 0x0040, 0x34cf, 0x007e, -+ 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x34cb, 0x20a1, -+ 0x012b, 0x0078, 0x34d1, 0x20a1, 0x022b, 0x0078, 0x34d1, 0x20a1, -+ 0x012b, 0x017f, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, -+ 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6038, 0xa005, 0x00c0, -+ 0x34ec, 0x681c, 0xa084, 0x000e, 0x0040, 0x42aa, 0x1078, 0x42c9, -+ 0x782b, 0x3008, 0x0078, 0x34ee, 0x8001, 0x603a, 0x781b, 0x005a, -+ 0x007c, 0xd6e4, 0x0040, 0x34f7, 0x781b, 0x0067, 0x007c, 0xa684, -+ 0x0060, 0x0040, 0x3559, 0xd6dc, 0x0040, 0x3559, 0xd6fc, 0x00c0, -+ 0x3503, 0x0078, 0x351a, 0xc6fc, 0x7e5a, 0x6eb6, 0x7adc, 0x79d8, -+ 0x78d0, 0x801b, 0x00c8, 0x350d, 0x8000, 0xa084, 0x003f, 0xa108, -+ 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, -+ 0xa303, 0x68ae, 0xd6f4, 0x0040, 0x3520, 0xc6f4, 0x7e5a, 0x6eb6, -+ 0x7000, 0xa086, 0x0003, 0x00c0, 0x352e, 0x007e, 0x1078, 0x55ac, -+ 0x1078, 0x591e, 0x007f, 0x781b, 0x0066, 0x007c, 0xa006, 0x1078, -+ 0x5a6b, 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0040, -+ 0x353d, 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x7cda, -+ 0x6ba6, 0x7bd6, 0x7bde, 0x2300, 0xa405, 0x00c0, 0x354d, 0xc6f5, -+ 0x7e5a, 0x6eb6, 0x781b, 0x0066, 0x007c, 0x781b, 0x0066, 0x2200, -+ 0xa115, 0x00c0, 0x3556, 0x1078, 0x591e, 0x007c, 0x1078, 0x5972, -+ 0x007c, 0x781b, 0x0067, 0x007c, 0x781b, 0x005a, 0x007c, 0x1078, -+ 0x2bfa, 0x0078, 0x35b1, 0x6920, 0xd1c4, 0x0040, 0x3576, 0xc1c4, -+ 0x6922, 0x0c7e, 0x705c, 0x2060, 0x6000, 0xc0e4, 0x6002, 0x6004, -+ 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x35a5, 0xd1cc, 0x0040, -+ 0x35a5, 0xc1cc, 0x6922, 0x0c7e, 0x705c, 0x2060, 0x6000, 0xc0ec, -+ 0x6002, 0x6004, 0xc0a4, 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xd19c, -+ 0x0040, 0x35a5, 0x1078, 0x43a4, 0x1078, 0x40f5, 0x88ff, 0x0040, -+ 0x35a5, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, -+ 0xd6d4, 0x00c0, 0x35a0, 0x782b, 0x3008, 0x781b, 0x0058, 0x007c, -+ 0x782b, 0x3008, 0x781b, 0x0067, 0x007c, 0x7e58, 0xd6d4, 0x00c0, -+ 0x35ac, 0x781b, 0x005a, 0x007c, 0x781b, 0x0067, 0x007c, 0x0078, -+ 0x42a3, 0xa01e, 0x7990, 0xa18c, 0x0007, 0x00c0, 0x35be, 0x6820, -+ 0xa084, 0x0100, 0x0040, 0x35af, 0x2009, 0x0008, 0x789b, 0x0010, -+ 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, 0x00c0, 0x35f5, 0x2300, -+ 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, 0x35ed, 0x0048, 0x35d2, -+ 0x0078, 0x35ef, 0xa380, 0x0002, 0xa102, 0x00c8, 0x35ed, 0x6920, -+ 0xa18c, 0xfcff, 0x6922, 0x0c7e, 0x705c, 0x2060, 0x6000, 0xa084, -+ 0xefef, 0x6002, 0x6004, 0xa084, 0xffe5, 0x6006, 0x0c7f, 0x7e58, -+ 0xa6b4, 0xfffb, 0x7e5a, 0x0078, 0x35a6, 0x0078, 0x3563, 0x24a8, -+ 0x7aa8, 0x00f0, 0x35ef, 0x0078, 0x35c0, 0xa284, 0x00f0, 0xa086, -+ 0x0020, 0x00c0, 0x364d, 0x8318, 0x8318, 0x2300, 0xa102, 0x0040, -+ 0x3605, 0x0048, 0x3605, 0x0078, 0x364a, 0xa286, 0x0023, 0x0040, -+ 0x35af, 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58, 0xa684, 0xfff1, -+ 0xc0a5, 0x2030, 0x7e5a, 0x6008, 0xc0a5, 0x600a, 0x0c7e, 0x705c, -+ 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd1a4, 0x0040, 0x3626, -+ 0x1078, 0x43a4, 0x1078, 0x4201, 0x0078, 0x3634, 0x0c7e, 0x705c, -+ 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd19c, 0x0040, 0x35a5, -+ 0x1078, 0x43a4, 0x1078, 0x40f5, 0x88ff, 0x0040, 0x35a5, 0x789b, -+ 0x0060, 0x2800, 0x78aa, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3645, -+ 0x782b, 0x3008, 0x781b, 0x0058, 0x007c, 0x782b, 0x3008, 0x781b, -+ 0x0067, 0x007c, 0x7aa8, 0x0078, 0x35c0, 0x8318, 0x2300, 0xa102, -+ 0x0040, 0x3656, 0x0048, 0x3656, 0x0078, 0x35c0, 0xa284, 0x0080, -+ 0x00c0, 0x42aa, 0x0078, 0x42a3, 0x0078, 0x42aa, 0x0078, 0x429c, -+ 0x705c, 0xa04d, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa08e, -+ 0x0001, 0x0040, 0x366d, 0x1078, 0x2bfa, 0x7aa8, 0xa294, 0x00ff, -+ 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x429c, 0x0079, -+ 0x3679, 0x429c, 0x4041, 0x429c, 0x41a4, 0xa282, 0x0000, 0x00c0, -+ 0x3683, 0x1078, 0x2bfa, 0x1078, 0x42bd, 0x782b, 0x3008, 0x781b, -+ 0x0067, 0x007c, 0xa282, 0x0003, 0x00c0, 0x3690, 0x1078, 0x2bfa, -+ 0xd4fc, 0x00c0, 0x36b0, 0x7068, 0xa005, 0x0040, 0x3699, 0x1078, -+ 0x2bfa, 0x6f14, 0x777a, 0xa7bc, 0x8f00, 0x1078, 0x43a8, 0x6008, -+ 0xa085, 0x0021, 0x600a, 0x8738, 0xa784, 0x001f, 0x00c0, 0x369d, -+ 0x1078, 0x42c1, 0x706b, 0x0002, 0x701b, 0x0009, 0x0078, 0x36b2, -+ 0x1078, 0x42cd, 0x782b, 0x3008, 0x781b, 0x0067, 0x007c, 0xa282, -+ 0x0004, 0x0050, 0x36bd, 0x1078, 0x2bfa, 0x2300, 0x0079, 0x36c0, -+ 0x36c3, 0x37f4, 0x3825, 0xa286, 0x0003, 0x0040, 0x36c9, 0x1078, -+ 0x2bfa, 0x2001, 0x0000, 0x7046, 0x68d0, 0xa005, 0x0040, 0x36d2, -+ 0x7003, 0x0003, 0x68a0, 0xd0ec, 0x0040, 0x36d9, 0x6008, 0xc08d, -+ 0x600a, 0x7000, 0xa084, 0x000f, 0x0079, 0x36de, 0x2c6e, 0x36eb, -+ 0x36e8, 0x390e, 0x39a6, 0x2c6e, 0x36e6, 0x36e6, 0x1078, 0x2bfa, -+ 0x6008, 0xc0d4, 0x600a, 0xd6e4, 0x00c0, 0x36f4, 0x1078, 0x55ac, -+ 0x2009, 0x0000, 0x0078, 0x379c, 0x7868, 0xa08c, 0x00ff, 0x0040, -+ 0x3733, 0xa186, 0x0008, 0x00c0, 0x370a, 0x6008, 0xc0a4, 0x600a, -+ 0x1078, 0x3f72, 0x0040, 0x3733, 0x1078, 0x3fe8, 0x1078, 0x55ac, -+ 0x0078, 0x371b, 0xa186, 0x0028, 0x00c0, 0x3733, 0x6018, 0xa005, -+ 0x0040, 0x36fd, 0x8001, 0x0040, 0x36fd, 0x8001, 0x0040, 0x36fd, -+ 0x601e, 0x0078, 0x36fd, 0x6820, 0xd084, 0x0040, 0x2c6e, 0xc084, -+ 0x6822, 0x1078, 0x2d8b, 0x7060, 0x0c7e, 0x2060, 0x6800, 0x6002, -+ 0x0c7f, 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0, 0x3730, 0x6002, -+ 0x6006, 0x0078, 0x2c6e, 0x017e, 0x81ff, 0x00c0, 0x3755, 0x71f0, -+ 0xd1bc, 0x00c0, 0x3755, 0xd1b4, 0x0040, 0x3755, 0x1078, 0x44bc, -+ 0x00c0, 0x3755, 0x0d7e, 0x70d8, 0xa06d, 0x6814, 0xc0fc, 0x8007, -+ 0x7882, 0x68b4, 0x785a, 0x781b, 0x004f, 0x704c, 0xc08d, 0x780a, -+ 0xc1b4, 0x71f2, 0x7003, 0x0030, 0x0d7f, 0x1078, 0x383b, 0x017f, -+ 0x81ff, 0x0040, 0x379c, 0xa684, 0x5f00, 0x681e, 0x682b, 0x0000, -+ 0x6f14, 0xa186, 0x0002, 0x00c0, 0x379d, 0x1078, 0x2d79, 0x1078, -+ 0x2d9a, 0x6820, 0xa084, 0x0800, 0x00c0, 0x379d, 0x8717, 0xa294, -+ 0x000f, 0x8213, 0x8213, 0x8213, 0xb284, 0x0300, 0x0040, 0x377c, -+ 0xa290, 0x64c0, 0x0078, 0x377e, 0xa290, 0x6540, 0xa290, 0x0000, -+ 0x221c, 0xd3c4, 0x00c0, 0x3786, 0x0078, 0x378c, 0x8210, 0x2204, -+ 0xa085, 0x0018, 0x2012, 0x8211, 0xd3d4, 0x0040, 0x3797, 0x68a0, -+ 0xd0c4, 0x00c0, 0x3797, 0x1078, 0x38bd, 0x0078, 0x2c6e, 0x6008, -+ 0xc08d, 0x600a, 0x0078, 0x379d, 0x692a, 0x6916, 0x6818, 0xd0fc, -+ 0x0040, 0x37a4, 0x7044, 0x681a, 0xa68c, 0x5f00, 0x691e, 0x6010, -+ 0xa005, 0x0040, 0x37b0, 0x8001, 0x00d0, 0x37b0, 0x1078, 0x2bfa, -+ 0x6012, 0x6018, 0xa005, 0x0040, 0x37b9, 0x8001, 0x601a, 0x00c0, -+ 0x37bc, 0x6008, 0xc0a4, 0x600a, 0x6820, 0xd084, 0x00c0, 0x37c8, -+ 0x6800, 0xa005, 0x00c0, 0x37c5, 0x6002, 0x6006, 0x0078, 0x37cc, -+ 0x7060, 0x2060, 0x6800, 0x6002, 0x2061, 0x6000, 0x6807, 0x0103, -+ 0x2d08, 0x206b, 0x0000, 0x6060, 0x8000, 0x6062, 0x6064, 0xa005, -+ 0x6166, 0x0040, 0x37de, 0x2d02, 0x0078, 0x37df, 0x616a, 0x7000, -+ 0xa086, 0x0030, 0x00c0, 0x2c6e, 0x7003, 0x0002, 0x70d8, 0xa06d, -+ 0x68c0, 0x703e, 0x70d4, 0xa065, 0x68c4, 0x705e, 0x2d00, 0x7052, -+ 0xad80, 0x0009, 0x7042, 0x007c, 0xa282, 0x0004, 0x0048, 0x37fa, -+ 0x1078, 0x2bfa, 0x2200, 0x0079, 0x37fd, 0x37f8, 0x3801, 0x380d, -+ 0x3801, 0x7000, 0xa086, 0x0005, 0x0040, 0x380a, 0x1078, 0x42bd, -+ 0x782b, 0x3008, 0x781b, 0x0067, 0x007c, 0x7890, 0x8007, 0x8001, -+ 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, -+ 0xa186, 0x0003, 0x0040, 0x3822, 0xa186, 0x0000, 0x0040, 0x3822, -+ 0x0078, 0x429c, 0x781b, 0x0067, 0x007c, 0x6820, 0xc095, 0x6822, -+ 0x82ff, 0x00c0, 0x382f, 0x1078, 0x42bd, 0x0078, 0x3836, 0x8211, -+ 0x0040, 0x3834, 0x1078, 0x2bfa, 0x1078, 0x42cd, 0x782b, 0x3008, -+ 0x781b, 0x0067, 0x007c, 0xa684, 0x0060, 0x00c0, 0x3849, 0x2d00, -+ 0xa005, 0x0040, 0x38bc, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, -+ 0x38bc, 0xd6dc, 0x00c0, 0x3861, 0x68b4, 0xd0dc, 0x00c0, 0x3861, -+ 0x6998, 0x6a94, 0x692e, 0x6a32, 0x7044, 0xa005, 0x00c0, 0x385e, -+ 0x2200, 0xa105, 0x0040, 0x3860, 0x7047, 0x0015, 0x0078, 0x55ac, -+ 0x007c, 0xd6ac, 0x0040, 0x388b, 0xd6f4, 0x0040, 0x386d, 0x682f, -+ 0x0000, 0x6833, 0x0000, 0x0078, 0x55ac, 0x68b4, 0xa084, 0x4000, -+ 0xa635, 0xd6f4, 0x00c0, 0x3867, 0x7044, 0xa005, 0x00c0, 0x387a, -+ 0x7047, 0x0015, 0xd6dc, 0x00c0, 0x3885, 0x68b4, 0xd0dc, 0x0040, -+ 0x3885, 0x69a8, 0x6aa4, 0x0078, 0x3887, 0x79d8, 0x7adc, 0x692e, -+ 0x6a32, 0x0078, 0x55ac, 0xd6f4, 0x0040, 0x3894, 0x682f, 0x0000, -+ 0x6833, 0x0000, 0x0078, 0x55ac, 0x68b4, 0xa084, 0x4800, 0xa635, -+ 0xd6f4, 0x00c0, 0x388e, 0x7044, 0xa005, 0x00c0, 0x38a1, 0x7047, -+ 0x0015, 0x79d8, 0x7adc, 0x78d0, 0x80fb, 0x00c8, 0x38a8, 0x8000, -+ 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x692e, 0x6a32, 0x2100, -+ 0xa205, 0x00c0, 0x38b5, 0x0078, 0x55ac, 0x7000, 0xa086, 0x0006, -+ 0x0040, 0x38bc, 0x0078, 0x55ac, 0x007c, 0x6008, 0xc0cd, 0xd3cc, -+ 0x0040, 0x38c3, 0xc08d, 0x600a, 0x6818, 0x68ba, 0x681b, 0x0006, -+ 0x688f, 0x0000, 0x6893, 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942, -+ 0x682f, 0x0003, 0x6833, 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, -+ 0x689b, 0x0020, 0x68b3, 0x0000, 0x68af, 0x0000, 0x7000, 0x0079, -+ 0x38e1, 0x2c6e, 0x38f3, 0x38eb, 0x38e9, 0x38e9, 0x38e9, 0x38e9, -+ 0x38e9, 0x1078, 0x2bfa, 0x6820, 0xd084, 0x00c0, 0x38f3, 0x1078, -+ 0x3fd3, 0x0078, 0x38f9, 0x7060, 0x2c50, 0x2060, 0x6800, 0x6002, -+ 0x2a60, 0xb28c, 0x0300, 0x0040, 0x3901, 0x2021, 0x6059, 0x0078, -+ 0x3903, 0x2021, 0x6099, 0x2404, 0xa005, 0x0040, 0x390a, 0x2020, -+ 0x0078, 0x3903, 0x2d22, 0x206b, 0x0000, 0x007c, 0x1078, 0x3fda, -+ 0x1078, 0x3fe8, 0x6008, 0xc0cc, 0x600a, 0x789b, 0x000e, 0x6f14, -+ 0x6817, 0x0002, 0xb28c, 0x0300, 0x0040, 0x3922, 0x2009, 0x0000, -+ 0x0078, 0x3924, 0x2009, 0x0001, 0x1078, 0x5ab0, 0xd6dc, 0x0040, -+ 0x392c, 0x691c, 0xc1ed, 0x691e, 0x68b8, 0xd0fc, 0x00c0, 0x3933, -+ 0x681a, 0x0078, 0x3942, 0x6818, 0xd0fc, 0x0040, 0x3942, 0x7868, -+ 0xa08c, 0x00ff, 0x0040, 0x3940, 0x681b, 0x001e, 0x0078, 0x3942, -+ 0x681b, 0x0000, 0xb284, 0x0300, 0x00c0, 0x394a, 0x2021, 0x6099, -+ 0x0078, 0x394c, 0x2021, 0x6059, 0x2404, 0xad06, 0x0040, 0x3951, -+ 0x7460, 0x6800, 0x2022, 0x68d3, 0x0000, 0x70f4, 0xc084, 0x70f6, -+ 0x6a3c, 0x6940, 0x6a32, 0x692e, 0x68c4, 0x2060, 0x6000, 0xd0a4, -+ 0x0040, 0x3996, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, -+ 0x0d7e, 0x0f7e, 0x157e, 0x147e, 0x2079, 0x6000, 0x1078, 0x1e83, -+ 0x147f, 0x157f, 0x0f7f, 0x70e8, 0x2010, 0x2009, 0x0101, 0x027e, -+ 0x2204, 0xa06d, 0x0040, 0x3986, 0x6814, 0xa706, 0x0040, 0x3983, -+ 0x6800, 0x0078, 0x3979, 0x6820, 0xc0d5, 0x6822, 0x027f, 0x8210, -+ 0x8109, 0x00c0, 0x3977, 0x0d7f, 0x706b, 0x0003, 0x7083, 0x0000, -+ 0x777a, 0x7087, 0x000f, 0x71f0, 0xc1dc, 0x71f2, 0x6818, 0xa086, -+ 0x0002, 0x00c0, 0x39a2, 0x6817, 0x0000, 0x682b, 0x0000, 0x681c, -+ 0xc0ec, 0x681e, 0x1078, 0x2251, 0x0078, 0x2c6e, 0x1078, 0x383b, -+ 0x682b, 0x0000, 0x789b, 0x000e, 0x6f14, 0x1078, 0x44ff, 0xa08c, -+ 0x00ff, 0x6916, 0x6818, 0xd0fc, 0x0040, 0x39b8, 0x7044, 0x681a, -+ 0xa68c, 0x5f00, 0x691e, 0x706b, 0x0000, 0x0078, 0x2c6e, 0x7000, -+ 0xa005, 0x00c0, 0x39c5, 0x0078, 0x2c6e, 0xa006, 0x1078, 0x55ac, -+ 0x6817, 0x0000, 0x6920, 0xd1ac, 0x00c0, 0x39d0, 0x681b, 0x0014, -+ 0xa68c, 0x5f00, 0x691e, 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff, -+ 0x6822, 0x7000, 0x0079, 0x39dc, 0x2c6e, 0x39e9, 0x39e6, 0x39eb, -+ 0x39eb, 0x39eb, 0x39e4, 0x39e4, 0x1078, 0x2bfa, 0x6008, 0xc0d4, -+ 0x600a, 0x1078, 0x3fe8, 0x6008, 0xc0a4, 0x600a, 0x0078, 0x3f98, -+ 0x2300, 0x0079, 0x39f3, 0x39f6, 0x39f8, 0x3a6d, 0x1078, 0x2bfa, -+ 0xd6fc, 0x00c0, 0x3a53, 0x7000, 0xa00d, 0x0079, 0x39ff, 0x2c6e, -+ 0x3a0f, 0x3a09, 0x3a3f, 0x3a0f, 0x3a4a, 0x3a07, 0x3a07, 0x1078, -+ 0x2bfa, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684, -+ 0x0060, 0x0040, 0x3a3f, 0xa086, 0x0060, 0x00c0, 0x3a3c, 0xc6ac, -+ 0xc6f4, 0xc6ed, 0x7e5a, 0x6eb6, 0x681c, 0xc0ac, 0x681e, 0xa186, -+ 0x0002, 0x0040, 0x3a2e, 0x1078, 0x55ac, 0x69ac, 0x68b0, 0xa115, -+ 0x0040, 0x3a2e, 0x1078, 0x5972, 0x0078, 0x3a30, 0x1078, 0x591e, -+ 0x781b, 0x0067, 0x71f0, 0xd1b4, 0x00c0, 0x2c5e, 0x70c0, 0xa086, -+ 0x0001, 0x00c0, 0x2cc7, 0x007c, 0xd6ec, 0x0040, 0x3a19, 0x6818, -+ 0xd0fc, 0x0040, 0x3a4a, 0x681b, 0x0015, 0xd6f4, 0x0040, 0x3a4a, -+ 0x681b, 0x0007, 0x1078, 0x446a, 0x007c, 0x78cb, 0x0000, 0x781b, -+ 0x00cf, 0x0078, 0x2c5e, 0xc6fc, 0x7e5a, 0x7adc, 0x79d8, 0x78d0, -+ 0x79d2, 0x801b, 0x00c8, 0x3a5d, 0x8000, 0xa084, 0x003f, 0xa108, -+ 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, -+ 0xa303, 0x68ae, 0x781b, 0x0067, 0x007c, 0x1078, 0x2bfa, 0x2300, -+ 0x0079, 0x3a72, 0x3a75, 0x3a77, 0x3ad7, 0x1078, 0x2bfa, 0xd6fc, -+ 0x00c0, 0x3ac7, 0x7000, 0xa00d, 0x0079, 0x3a7e, 0x2c6e, 0x3a8e, -+ 0x3a88, 0x3abe, 0x3a8e, 0x3ac4, 0x3a86, 0x3a86, 0x1078, 0x2bfa, -+ 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684, 0x0060, -+ 0x0040, 0x3abe, 0xa086, 0x0060, 0x00c0, 0x3abb, 0xa6b4, 0xbfbf, -+ 0xc6ed, 0x7e5a, 0x6eb6, 0xa186, 0x0002, 0x0040, 0x3aaa, 0x1078, -+ 0x55ac, 0x69ac, 0x68b0, 0xa115, 0x0040, 0x3aaa, 0x1078, 0x5972, -+ 0x0078, 0x3aac, 0x1078, 0x591e, 0x781b, 0x0067, 0x681c, 0xc0b4, -+ 0x681e, 0x71f0, 0xd1b4, 0x00c0, 0x2c5e, 0x70c0, 0xa086, 0x0001, -+ 0x00c0, 0x2cc7, 0x007c, 0xd6ec, 0x0040, 0x3a98, 0x6818, 0xd0fc, -+ 0x0040, 0x3ac4, 0x681b, 0x0007, 0x781b, 0x00d3, 0x007c, 0xc6fc, -+ 0x7e5a, 0x7adc, 0x79d8, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, -+ 0x2200, 0xa303, 0x68ae, 0x79d2, 0x781b, 0x0067, 0x007c, 0xd6dc, -+ 0x0040, 0x3ae0, 0x782b, 0x3009, 0x781b, 0x0067, 0x0078, 0x2c5e, -+ 0x6820, 0xc095, 0x6822, 0x1078, 0x4450, 0xc6dd, 0x1078, 0x42bd, -+ 0x782b, 0x3008, 0x781b, 0x0067, 0x007c, 0x2300, 0x0079, 0x3af0, -+ 0x3af3, 0x3af5, 0x3af7, 0x1078, 0x2bfa, 0x0078, 0x42aa, 0x7d98, -+ 0xd6d4, 0x00c0, 0x3b34, 0x79e4, 0xd1ac, 0x0040, 0x3b06, 0x78ec, -+ 0xa084, 0x0003, 0x0040, 0x3b06, 0x782b, 0x3009, 0x789b, 0x0060, -+ 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x7d9a, 0x79e4, 0xd1ac, -+ 0x0040, 0x3b17, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x3b30, 0x2001, -+ 0x6002, 0x2004, 0xd0e4, 0x00c0, 0x3b2c, 0x6820, 0xd0c4, 0x0040, -+ 0x3b2c, 0x0c7e, 0x705c, 0x2060, 0x6004, 0xc09d, 0x6006, 0x6008, -+ 0xa084, 0x00ff, 0x600a, 0x0c7f, 0x2001, 0x0014, 0x0078, 0x36cb, -+ 0xa184, 0x0007, 0x0079, 0x3b6b, 0x7a90, 0xa294, 0x0007, 0x789b, -+ 0x0060, 0x79a8, 0x81ff, 0x0040, 0x3b68, 0x789b, 0x0010, 0x7ba8, -+ 0xa384, 0x0001, 0x00c0, 0x3b5b, 0x7ba8, 0x7ba8, 0xa386, 0x0001, -+ 0x00c0, 0x3b4e, 0x2009, 0xfff7, 0x0078, 0x3b54, 0xa386, 0x0003, -+ 0x00c0, 0x3b5b, 0x2009, 0xffef, 0x0c7e, 0x705c, 0x2060, 0x6004, -+ 0xa104, 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, -+ 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c, 0xfcff, 0x6922, -+ 0x7d9a, 0x0078, 0x445a, 0x3361, 0x336b, 0x3b75, 0x3b7b, 0x3b73, -+ 0x3b73, 0x445a, 0x445a, 0x1078, 0x2bfa, 0x6920, 0xa18c, 0xfcff, -+ 0x6922, 0x0078, 0x4462, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0078, -+ 0x445a, 0x79e4, 0xa184, 0x0030, 0x0040, 0x3b8b, 0x78ec, 0xa084, -+ 0x0003, 0x00c0, 0x3bb9, 0x7000, 0xa086, 0x0004, 0x00c0, 0x3ba5, -+ 0x7068, 0xa086, 0x0002, 0x00c0, 0x3b9b, 0x2011, 0x0002, 0x2019, -+ 0x0000, 0x0078, 0x31d4, 0x7068, 0xa086, 0x0006, 0x0040, 0x3b95, -+ 0x7068, 0xa086, 0x0004, 0x0040, 0x3b95, 0x7000, 0xa086, 0x0000, -+ 0x0040, 0x2c5e, 0x6820, 0xd0ac, 0x00c0, 0x36cb, 0x6818, 0xa08e, -+ 0x0002, 0x0040, 0x3bb7, 0xc0fd, 0x681a, 0x2001, 0x0014, 0x0078, -+ 0x36cb, 0xa184, 0x0007, 0x0079, 0x3bbd, 0x445a, 0x445a, 0x3bc5, -+ 0x445a, 0x44b1, 0x44b1, 0x445a, 0x445a, 0xd6bc, 0x0040, 0x3c09, -+ 0x7188, 0x81ff, 0x0040, 0x3c09, 0xa182, 0x000d, 0x00d0, 0x3bd4, -+ 0x708b, 0x0000, 0x0078, 0x3bd9, 0xa182, 0x000c, 0x708a, 0x2009, -+ 0x000c, 0x789b, 0x0061, 0x79aa, 0x157e, 0x137e, 0x147e, 0x708c, -+ 0x8114, 0xa210, 0x728e, 0xa080, 0x000b, 0xad00, 0x2098, 0x017e, -+ 0xb28c, 0x0300, 0x0040, 0x3bfc, 0x007e, 0x2001, 0x6002, 0x2004, -+ 0xd0ec, 0x007f, 0x0040, 0x3bf8, 0x20a1, 0x012b, 0x0078, 0x3bfe, -+ 0x20a1, 0x022b, 0x0078, 0x3bfe, 0x20a1, 0x012b, 0x017f, 0x789b, -+ 0x0000, 0x8108, 0x81ac, 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078, -+ 0x4462, 0xd6d4, 0x00c0, 0x3c5c, 0x6820, 0xd084, 0x0040, 0x4462, -+ 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x3c1b, 0xa086, 0x0060, -+ 0x00c0, 0x3c1b, 0xc1f5, 0xc194, 0x795a, 0x69b6, 0x789b, 0x0060, -+ 0x78ab, 0x0000, 0x789b, 0x0061, 0x6818, 0xc0fd, 0x681a, 0x78aa, -+ 0x8008, 0x810c, 0x0040, 0x4001, 0xa18c, 0x00f8, 0x00c0, 0x4001, -+ 0x157e, 0x137e, 0x147e, 0x017e, 0xb28c, 0x0300, 0x0040, 0x3c48, -+ 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x3c44, -+ 0x20a1, 0x012b, 0x0078, 0x3c4a, 0x20a1, 0x022b, 0x0078, 0x3c4a, -+ 0x20a1, 0x012b, 0x017f, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, -+ 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, 0xc0fc, -+ 0x8007, 0x7882, 0x0078, 0x4462, 0x6818, 0xd0fc, 0x0040, 0x3c62, -+ 0x681b, 0x0008, 0x6820, 0xc0ad, 0x6822, 0x1078, 0x42c5, 0x78cb, -+ 0x0000, 0x781b, 0x00cb, 0x007c, 0x2300, 0x0079, 0x3c6f, 0x3c74, -+ 0x3d11, 0x3c72, 0x1078, 0x2bfa, 0x7000, 0xa084, 0x000f, 0x0079, -+ 0x3c79, 0x2c6e, 0x3cc1, 0x3c83, 0x3c8c, 0x3c81, 0x2c6e, 0x3c81, -+ 0x3c81, 0x1078, 0x2bfa, 0x681c, 0xd0ec, 0x0040, 0x3c9d, 0x6008, -+ 0xc08d, 0x600a, 0x0078, 0x3c9d, 0x68d0, 0xa005, 0x00c0, 0x3cc1, -+ 0x6920, 0xa18d, 0x0001, 0x6922, 0x68d3, 0x0001, 0x70f4, 0xc085, -+ 0x70f6, 0x6800, 0x7066, 0x0078, 0x3cae, 0x6920, 0xc185, 0x6922, -+ 0x6800, 0x6006, 0xa005, 0x00c0, 0x3ca6, 0x6002, 0x6008, 0xc0d4, -+ 0x600a, 0x681c, 0xa084, 0x000e, 0x00c0, 0x3cb8, 0x2009, 0xa7d0, -+ 0xb284, 0x0300, 0x0040, 0x3cbd, 0x2009, 0xa6c0, 0x0078, 0x3cbd, -+ 0x702c, 0x68be, 0x713c, 0x70e8, 0xa108, 0x2104, 0x6802, 0x2d0a, -+ 0x7162, 0x6eb6, 0xa684, 0x0060, 0x00c0, 0x3ccb, 0xa684, 0x7fff, -+ 0x68b6, 0x0078, 0x3d0f, 0xd6dc, 0x00c0, 0x3cd9, 0xa684, 0x7fff, -+ 0x68b6, 0x6894, 0x68a6, 0x6898, 0x68aa, 0x1078, 0x55ac, 0x0078, -+ 0x3d0f, 0xd6ac, 0x0040, 0x3cec, 0x68d0, 0xa005, 0x0040, 0x3ce4, -+ 0x1078, 0x5ab0, 0x0078, 0x3ce6, 0x1078, 0x55ac, 0x79d8, 0x7adc, -+ 0x69aa, 0x6aa6, 0x0078, 0x3cf2, 0x1078, 0x43bc, 0x69aa, 0x6aa6, -+ 0x1078, 0x55ac, 0xd6fc, 0x0040, 0x3d0f, 0xa684, 0x7fff, 0x68b6, -+ 0x7adc, 0x79d8, 0xd6ac, 0x00c0, 0x3d07, 0x78d0, 0x801b, 0x00c8, -+ 0x3d02, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, -+ 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x0078, -+ 0x2c6e, 0x0078, 0x42aa, 0x7043, 0x0000, 0xa282, 0x0006, 0x0050, -+ 0x3d1b, 0x1078, 0x2bfa, 0x7000, 0xa086, 0x0007, 0x1040, 0x45de, -+ 0x2300, 0x0079, 0x3d23, 0x3d26, 0x3d5d, 0x3d7e, 0x2200, 0x0079, -+ 0x3d29, 0x3d5b, 0x42aa, 0x3d2f, 0x3d5b, 0x3da1, 0x3e14, 0x7003, -+ 0x0005, 0xb284, 0x0300, 0x0040, 0x3d39, 0x2001, 0xaa20, 0x0078, -+ 0x3d3b, 0x2001, 0xaa57, 0x2068, 0x7052, 0x157e, 0x20a9, 0x0037, -+ 0x2003, 0x0000, 0x8000, 0x00f0, 0x3d40, 0x157f, 0xad80, 0x0009, -+ 0x7042, 0xb284, 0x0300, 0x0040, 0x3d51, 0x6817, 0x0000, 0x0078, -+ 0x3d53, 0x6817, 0x8000, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, -+ 0x0003, 0x0078, 0x429c, 0x1078, 0x2bfa, 0x2200, 0xa086, 0x0003, -+ 0x0040, 0x3da1, 0x7003, 0x0005, 0xb284, 0x0300, 0x0040, 0x3d6c, -+ 0x2001, 0xaa20, 0x0078, 0x3d6e, 0x2001, 0xaa57, 0x2068, 0x7052, -+ 0xad80, 0x0009, 0x7042, 0x2200, 0x0079, 0x3d76, 0x42aa, 0x3d7c, -+ 0x3d7c, 0x3da1, 0x3d7c, 0x42aa, 0x1078, 0x2bfa, 0x7003, 0x0005, -+ 0xb284, 0x0300, 0x0040, 0x3d88, 0x2001, 0xaa20, 0x0078, 0x3d8a, -+ 0x2001, 0xaa57, 0x2068, 0x7052, 0xad80, 0x0009, 0x7042, 0x2200, -+ 0x0079, 0x3d92, 0x3d9a, 0x3d98, 0x3d98, 0x3d9a, 0x3d98, 0x3d9a, -+ 0x1078, 0x2bfa, 0x1078, 0x42cd, 0x782b, 0x3008, 0x781b, 0x0067, -+ 0x007c, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3db3, 0x70f0, 0xc0b5, -+ 0x70f2, 0x2c00, 0x70d6, 0x2d00, 0x70da, 0x0078, 0x3db8, 0x1078, -+ 0x55ac, 0x0078, 0x3db8, 0x7000, 0xa086, 0x0003, 0x0040, 0x3daf, -+ 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, -+ 0xa484, 0x001f, 0xa215, 0x2069, 0xa6c0, 0xb284, 0x0300, 0x00c0, -+ 0x3dcc, 0xc2fd, 0x2069, 0xa7d0, 0x2d04, 0x2d08, 0x7162, 0xa06d, -+ 0x0040, 0x3dd9, 0x6814, 0xa206, 0x0040, 0x3df9, 0x6800, 0x0078, -+ 0x3dcd, 0x7003, 0x0005, 0xd2fc, 0x00c0, 0x3de2, 0x2001, 0xaa20, -+ 0x0078, 0x3de4, 0x2001, 0xaa57, 0x2068, 0x7052, 0x157e, 0x20a9, -+ 0x0037, 0x2003, 0x0000, 0x8000, 0x00f0, 0x3de9, 0x157f, 0xad80, -+ 0x0009, 0x7042, 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, -+ 0x0003, 0x6eb4, 0x7e5a, 0x6920, 0xa184, 0x0c00, 0x0040, 0x3e9e, -+ 0x7068, 0xa086, 0x0006, 0x00c0, 0x3e0b, 0x7078, 0xa206, 0x00c0, -+ 0x3e0b, 0x706a, 0x7082, 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, -+ 0x1078, 0x42c5, 0x0078, 0x3e9e, 0x7200, 0xa286, 0x0002, 0x00c0, -+ 0x3e26, 0x70f0, 0xc0b5, 0x70f2, 0x2c00, 0x70d6, 0x2d00, 0x70da, -+ 0x0078, 0x3e2a, 0x1078, 0x55ac, 0x0078, 0x3e2a, 0xa286, 0x0003, -+ 0x0040, 0x3e22, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, -+ 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0xb284, 0x0300, 0x00c0, -+ 0x3e3a, 0xc2fd, 0x79a8, 0x79a8, 0xa18c, 0x00ff, 0x2118, 0x70e8, -+ 0xa168, 0x2d04, 0x2d08, 0x7162, 0xa06d, 0x0040, 0x3e4e, 0x6814, -+ 0xa206, 0x0040, 0x3e77, 0x6800, 0x0078, 0x3e42, 0x7003, 0x0005, -+ 0xb284, 0x0300, 0x0040, 0x3e58, 0x2001, 0xaa20, 0x0078, 0x3e5a, -+ 0x2001, 0xaa57, 0x2068, 0x7052, 0x157e, 0x20a9, 0x0037, 0x2003, -+ 0x0000, 0x8000, 0x00f0, 0x3e5f, 0x157f, 0xad80, 0x0009, 0x7042, -+ 0xb284, 0x0300, 0x0040, 0x3e6f, 0xc2fc, 0x0078, 0x3e70, 0xc2fd, -+ 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, -+ 0x6920, 0xa184, 0x0c00, 0x0040, 0x3e9e, 0xd0dc, 0x0040, 0x3e93, -+ 0x7068, 0xa086, 0x0004, 0x00c0, 0x3e8f, 0x7078, 0xa206, 0x00c0, -+ 0x3e8f, 0x707c, 0xa306, 0x00c0, 0x3e8f, 0x706a, 0x7082, 0x1078, -+ 0x42c9, 0x0078, 0x3e9e, 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, -+ 0x1078, 0x42c5, 0x7083, 0x0000, 0x0078, 0x3e9e, 0x68c4, 0x705e, -+ 0xc6ec, 0xa684, 0x0060, 0x0040, 0x3ee9, 0x6b98, 0x6c94, 0x69ac, -+ 0x68b0, 0xa105, 0x00c0, 0x3ecb, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, -+ 0xa684, 0x0060, 0xa086, 0x0060, 0x0040, 0x3eef, 0x68d0, 0xa005, -+ 0x0040, 0x3ec3, 0x7003, 0x0003, 0x682b, 0x0000, 0xc6ed, 0x1078, -+ 0x590b, 0x0078, 0x3eef, 0xd6f4, 0x00c0, 0x3eef, 0xc6ed, 0x1078, -+ 0x591e, 0x0078, 0x3eef, 0x68b0, 0xa31a, 0x2100, 0xa423, 0x2400, -+ 0xa305, 0x0040, 0x3ef1, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68d0, -+ 0xa005, 0x0040, 0x3ee1, 0x7003, 0x0003, 0x1078, 0x590b, 0x0078, -+ 0x3ef1, 0xd6f4, 0x00c0, 0x3ee8, 0xc6ed, 0x68b0, 0x1078, 0x5972, -+ 0xc6f4, 0x2019, 0x0000, 0x2021, 0x0000, 0x0078, 0x3ef1, 0xa6b4, -+ 0xb7ff, 0x7e5a, 0x2009, 0x0067, 0xa684, 0x0004, 0x0040, 0x3f11, -+ 0x78e4, 0xa084, 0x0030, 0x0040, 0x3f09, 0x78ec, 0xa084, 0x0003, -+ 0x0040, 0x3f09, 0x782b, 0x3008, 0x2019, 0x0000, 0x2320, 0x0078, -+ 0x3f11, 0x0f7e, 0x2079, 0x6000, 0x1078, 0x55ac, 0x0f7f, 0x0040, -+ 0x2c6e, 0x791a, 0x2d00, 0x7052, 0x68c8, 0x2060, 0x71f0, 0x2001, -+ 0x6001, 0x2004, 0xd0c4, 0x00c0, 0x3f65, 0x70f8, 0xa02d, 0x0040, -+ 0x3f3e, 0xd1bc, 0x0040, 0x3f58, 0x7a80, 0xa294, 0x0f00, 0x70fc, -+ 0xa206, 0x0040, 0x3f2f, 0x78e0, 0xa504, 0x00c0, 0x3f65, 0x70fa, -+ 0xc1bc, 0x71f2, 0x0078, 0x3f65, 0x2031, 0x0001, 0x852c, 0x0048, -+ 0x3f3d, 0x8633, 0x8210, 0x0078, 0x3f36, 0x007c, 0x7de0, 0xa594, -+ 0xff00, 0x0040, 0x3f4b, 0x2011, 0x0008, 0x852f, 0x1078, 0x3f34, -+ 0x8637, 0x0078, 0x3f4d, 0x1078, 0x3f34, 0x8217, 0x7880, 0xa084, -+ 0x0f00, 0xa206, 0x0040, 0x3f65, 0x72fe, 0x76fa, 0x0078, 0x3f65, -+ 0x7a80, 0xa294, 0x0f00, 0x70fc, 0xa236, 0x0040, 0x3f55, 0x78e0, -+ 0xa534, 0x0040, 0x3f55, 0xc1bd, 0x71f2, 0xd1b4, 0x00c0, 0x2c5e, -+ 0x2300, 0xa405, 0x0040, 0x2c5e, 0x70c0, 0xa086, 0x0001, 0x00c0, -+ 0x2cc7, 0x007c, 0x6020, 0xa005, 0x0040, 0x3f80, 0x8001, 0x6022, -+ 0x6008, 0xa085, 0x0008, 0x600a, 0x700b, 0x0100, 0x7028, 0x6026, -+ 0x007c, 0xa006, 0x1078, 0x55ac, 0x7000, 0xa086, 0x0002, 0x0040, -+ 0x3f8e, 0x7068, 0xa086, 0x0005, 0x00c0, 0x3f98, 0x682b, 0x0000, -+ 0x6817, 0x0000, 0x681b, 0x0001, 0x6823, 0x0040, 0x681f, 0x0100, -+ 0x7000, 0xa084, 0x000f, 0x0079, 0x3f9d, 0x2c6e, 0x3fad, 0x3fa7, -+ 0x3fcf, 0x3fb7, 0x3fb5, 0x3fa5, 0x3fa5, 0x1078, 0x2bfa, 0x1078, -+ 0x3fda, 0x1078, 0x3fd3, 0x0078, 0x3fb3, 0x1078, 0x3fda, 0x7060, -+ 0x2060, 0x6800, 0x6002, 0x1078, 0x2251, 0x0078, 0x2c6e, 0x7068, -+ 0x706b, 0x0000, 0x7087, 0x0000, 0x0079, 0x3fbe, 0x3fcb, 0x3fcb, -+ 0x3fc6, 0x3fc6, 0x3fc6, 0x3fcb, 0x3fc6, 0x3fcb, 0x77f0, 0xc7dd, -+ 0x77f2, 0x0079, 0x31ef, 0x706b, 0x0000, 0x0078, 0x2c6e, 0x681b, -+ 0x0000, 0x0078, 0x390e, 0x6800, 0xa005, 0x00c0, 0x3fd8, 0x6002, -+ 0x6006, 0x007c, 0x6010, 0xa005, 0x0040, 0x3fe3, 0x8001, 0x00d0, -+ 0x3fe3, 0x1078, 0x2bfa, 0x6012, 0x6008, 0xc0a4, 0x600a, 0x007c, -+ 0x6018, 0xa005, 0x0040, 0x3fee, 0x8001, 0x601a, 0x007c, 0x1078, -+ 0x44fa, 0x681b, 0x0018, 0x0078, 0x402d, 0x1078, 0x44fa, 0x681b, -+ 0x0019, 0x0078, 0x402d, 0x1078, 0x44fa, 0x681b, 0x001a, 0x0078, -+ 0x402d, 0x1078, 0x44fa, 0x681b, 0x0003, 0x0078, 0x402d, 0x7778, -+ 0x1078, 0x43a8, 0x717c, 0xa18c, 0x00ff, 0xd7fc, 0x00c0, 0x4014, -+ 0xa1e8, 0xa5c0, 0x0078, 0x4016, 0xa1e8, 0xa6d0, 0x2d04, 0x2d08, -+ 0x2068, 0xa005, 0x00c0, 0x401f, 0x7082, 0x0078, 0x2c6e, 0x6814, -+ 0x7278, 0xa206, 0x0040, 0x4027, 0x6800, 0x0078, 0x4017, 0x6800, -+ 0x200a, 0x681b, 0x0005, 0x7083, 0x0000, 0x1078, 0x3fda, 0x6820, -+ 0xd084, 0x00c0, 0x4035, 0x1078, 0x3fd3, 0x1078, 0x3fe8, 0x681f, -+ 0x0000, 0x6823, 0x0020, 0x682b, 0x0000, 0x1078, 0x2251, 0x0078, -+ 0x2c6e, 0xa282, 0x0003, 0x00c0, 0x429c, 0x7da8, 0xa5ac, 0x00ff, -+ 0x7ca8, 0xa4a4, 0x00ff, 0x6920, 0xc1bd, 0x6922, 0xd1c4, 0x0040, -+ 0x409f, 0xc1c4, 0x6922, 0xa4a4, 0x00ff, 0x0040, 0x408c, 0xa482, -+ 0x000c, 0x0048, 0x405f, 0x0040, 0x405f, 0x2021, 0x000c, 0x2500, -+ 0xa086, 0x000a, 0x0040, 0x4066, 0x852b, 0x852b, 0x1078, 0x4334, -+ 0x0040, 0x406e, 0x1078, 0x4162, 0x0078, 0x4095, 0x1078, 0x4320, -+ 0x0c7e, 0x2960, 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x418d, -+ 0x0c7f, 0x6920, 0xc1c5, 0x6922, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, -+ 0x00c0, 0x4087, 0x782b, 0x3008, 0x781b, 0x0058, 0x007c, 0x782b, -+ 0x3008, 0x781b, 0x0067, 0x007c, 0x0c7e, 0x2960, 0x6004, 0xa084, -+ 0xfff5, 0x6006, 0x1078, 0x418d, 0x0c7f, 0x7e58, 0xd6d4, 0x00c0, -+ 0x409c, 0x781b, 0x005a, 0x007c, 0x781b, 0x0067, 0x007c, 0x0c7e, -+ 0x705c, 0x2060, 0x6100, 0xd1e4, 0x0040, 0x40e8, 0x6208, 0x8217, -+ 0xa294, 0x00ff, 0xa282, 0x000c, 0x0048, 0x40b2, 0x0040, 0x40b2, -+ 0x2011, 0x000c, 0x2400, 0xa202, 0x00c8, 0x40b7, 0x2220, 0x6208, -+ 0xa294, 0x00ff, 0x2001, 0x6003, 0x2004, 0xd0e4, 0x00c0, 0x40cc, -+ 0x78ec, 0xd0e4, 0x0040, 0x40cc, 0xa282, 0x000a, 0x00c8, 0x40d2, -+ 0x2011, 0x000a, 0x0078, 0x40d2, 0xa282, 0x000c, 0x00c8, 0x40d2, -+ 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x40d7, 0x2228, 0x1078, -+ 0x4324, 0x2500, 0xa086, 0x000a, 0x0040, 0x40e0, 0x852b, 0x852b, -+ 0x1078, 0x4334, 0x0040, 0x40e8, 0x1078, 0x4162, 0x0078, 0x40ec, -+ 0x1078, 0x4320, 0x1078, 0x418d, 0x7858, 0xc095, 0x785a, 0x0c7f, -+ 0x782b, 0x3008, 0x781b, 0x0067, 0x007c, 0x0c7e, 0x2960, 0x6000, -+ 0xd0e4, 0x00c0, 0x410b, 0xa084, 0x0040, 0x00c0, 0x4105, 0x6104, -+ 0xa18c, 0xfff5, 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, -+ 0x0000, 0x0078, 0x4136, 0x68a0, 0xd0cc, 0x00c0, 0x4105, 0x6208, -+ 0xa294, 0x00ff, 0x2001, 0x6003, 0x2004, 0xd0e4, 0x00c0, 0x4124, -+ 0x78ec, 0xd0e4, 0x0040, 0x4124, 0xa282, 0x000b, 0x00c8, 0x4124, -+ 0x2011, 0x000a, 0x0078, 0x412a, 0xa282, 0x000c, 0x00c8, 0x412a, -+ 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000c, -+ 0x0048, 0x4136, 0x0040, 0x4136, 0x2019, 0x000c, 0x78ab, 0x0001, -+ 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, -+ 0x6820, 0xc0c5, 0x6822, 0x1078, 0x2d79, 0x0c7f, 0x007c, 0x0c7e, -+ 0x2960, 0x6104, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019, -+ 0x0000, 0x0078, 0x4153, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, -+ 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xc0c5, 0x6822, -+ 0x0c7f, 0x007c, 0x0c7e, 0x715c, 0x2160, 0x1078, 0x4169, 0x0c7f, -+ 0x007c, 0x2008, 0xa084, 0xfff0, 0xa425, 0x7c86, 0x6018, 0x789a, -+ 0x7cae, 0x6412, 0x78a4, 0xa084, 0xfff0, 0xa18c, 0x000f, 0xa105, -+ 0x78a6, 0x6016, 0x788a, 0xa4a4, 0x000f, 0x8427, 0x8204, 0x8004, -+ 0xa084, 0x00ff, 0xa405, 0x600e, 0x78ec, 0xd08c, 0x00c0, 0x418c, -+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x007c, 0x0c7e, 0x705c, 0x2060, -+ 0x1078, 0x4194, 0x0c7f, 0x007c, 0x6018, 0x789a, 0x78a4, 0xa084, -+ 0xfff0, 0x78a6, 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886, 0x600c, -+ 0xa084, 0x00ff, 0x600e, 0x007c, 0xa282, 0x0002, 0x00c0, 0x429c, -+ 0x7aa8, 0x6920, 0xc1bd, 0x6922, 0xd1cc, 0x0040, 0x41e3, 0xc1cc, -+ 0x6922, 0xa294, 0x00ff, 0xa282, 0x0002, 0x00c8, 0x429c, 0x1078, -+ 0x4227, 0x1078, 0x418d, 0xa980, 0x0001, 0x200c, 0x1078, 0x43a4, -+ 0x1078, 0x40f5, 0x88ff, 0x0040, 0x41d9, 0x789b, 0x0060, 0x2800, -+ 0x78aa, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x41d4, 0x782b, -+ 0x3008, 0x781b, 0x0058, 0x007c, 0x782b, 0x3008, 0x781b, 0x0067, -+ 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x41e0, 0x781b, 0x005a, 0x007c, -+ 0x781b, 0x0067, 0x007c, 0xa282, 0x0002, 0x00c8, 0x41eb, 0xa284, -+ 0x0001, 0x0040, 0x41f3, 0x715c, 0xa188, 0x0000, 0x210c, 0xd1ec, -+ 0x00c0, 0x41f3, 0xa016, 0x1078, 0x4311, 0x1078, 0x4227, 0x1078, -+ 0x418d, 0x7858, 0xc095, 0x785a, 0x782b, 0x3008, 0x781b, 0x0067, -+ 0x007c, 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011, 0x0001, 0xd0ec, -+ 0x00c0, 0x4215, 0xa084, 0x0080, 0x00c0, 0x4213, 0xc1a4, 0x6106, -+ 0xa006, 0x0078, 0x4224, 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, -+ 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x1078, 0x2d79, -+ 0x6820, 0xa085, 0x0200, 0x6822, 0x027f, 0x0c7f, 0x007c, 0x0c7e, -+ 0x705c, 0x2060, 0x1078, 0x422e, 0x0c7f, 0x007c, 0x82ff, 0x0040, -+ 0x4233, 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, 0x78a4, -+ 0xa084, 0xffbf, 0xa205, 0x78a6, 0x788a, 0x6016, 0x6004, 0x78ec, -+ 0xd08c, 0x00c0, 0x4245, 0xc0a4, 0x6006, 0x007c, 0x007e, 0x7000, -+ 0xa086, 0x0003, 0x0040, 0x424f, 0x007f, 0x0078, 0x4252, 0x007f, -+ 0x0078, 0x4299, 0xd6ac, 0x0040, 0x4299, 0x7888, 0xa084, 0x0040, -+ 0x0040, 0x4299, 0x7bb8, 0xa384, 0x003f, 0x831b, 0x00c8, 0x4261, -+ 0x8000, 0xa005, 0x0040, 0x4276, 0x831b, 0x00c8, 0x426a, 0x8001, -+ 0x0040, 0x4296, 0xd6f4, 0x0040, 0x4276, 0x78b8, 0x801b, 0x00c8, -+ 0x4272, 0x8000, 0xa084, 0x003f, 0x00c0, 0x4296, 0xc6f4, 0x7e5a, -+ 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, 0x00c8, 0x4281, 0xa291, -+ 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x1078, 0x5a6b, 0x781b, -+ 0x0066, 0xb284, 0x0300, 0x0040, 0x4291, 0x2001, 0x0000, 0x0078, -+ 0x4293, 0x2001, 0x0001, 0x1078, 0x588c, 0x007c, 0x781b, 0x0066, -+ 0x007c, 0x781b, 0x0067, 0x007c, 0x1078, 0x42d1, 0x782b, 0x3008, -+ 0x781b, 0x0067, 0x007c, 0x1078, 0x42bd, 0x782b, 0x3008, 0x781b, -+ 0x0067, 0x007c, 0x6827, 0x0002, 0x1078, 0x42c5, 0x78e4, 0xa084, -+ 0x0030, 0x0040, 0x2c6e, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2c6e, -+ 0x782b, 0x3008, 0x781b, 0x0067, 0x007c, 0x2001, 0x0005, 0x0078, -+ 0x42d3, 0x2001, 0x000c, 0x0078, 0x42d3, 0x2001, 0x0006, 0x0078, -+ 0x42d3, 0x2001, 0x000d, 0x0078, 0x42d3, 0x2001, 0x0009, 0x0078, -+ 0x42d3, 0x2001, 0x0007, 0x789b, 0x0010, 0x78aa, 0x789b, 0x0060, -+ 0x78ab, 0x0001, 0xc695, 0x7e5a, 0x0078, 0x2d79, 0x077e, 0x873f, -+ 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703, 0x017e, 0xb28c, 0x0300, -+ 0x0040, 0x42ee, 0xa0e0, 0x64c0, 0x0078, 0x42f0, 0xa0e0, 0x6540, -+ 0x017f, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, 0x000f, 0x0040, -+ 0x4300, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, 0xc09d, 0x6006, -+ 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040, 0x0040, 0x430f, -+ 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004, 0xc0a5, 0x6006, 0x077f, -+ 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, -+ 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab, 0x0004, 0x0078, 0x2d79, -+ 0x2021, 0x0000, 0x2029, 0x0032, 0x789b, 0x0010, 0x78ab, 0x0001, -+ 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7caa, 0x789b, 0x0060, -+ 0x78ab, 0x0005, 0x0078, 0x2d79, 0x157e, 0x2001, 0x6003, 0x2004, -+ 0xd0e4, 0x00c0, 0x4367, 0x2009, 0x439b, 0x20a9, 0x0009, 0x2510, -+ 0xa582, 0x000a, 0x0040, 0x4362, 0x0048, 0x4362, 0x8108, 0x95a9, -+ 0xa582, 0x0030, 0x0040, 0x437d, 0x0048, 0x437d, 0x8108, 0x95a9, -+ 0x2019, 0x000a, 0x2011, 0x0064, 0x2200, 0xa502, 0x0040, 0x437d, -+ 0x0048, 0x437d, 0x8108, 0x2300, 0xa210, 0x00f0, 0x4354, 0x157f, -+ 0x0078, 0x437b, 0x2510, 0x8213, 0x8213, 0x0078, 0x437d, 0x2009, -+ 0x438d, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, 0x0032, 0x2200, -+ 0xa502, 0x0040, 0x437d, 0x0048, 0x437d, 0x8108, 0x2300, 0xa210, -+ 0x00f0, 0x436f, 0x157f, 0xa006, 0x007c, 0x157f, 0xa582, 0x0064, -+ 0x00c8, 0x438a, 0x7808, 0xa085, 0x0070, 0x780a, 0x704c, 0xa085, -+ 0x0070, 0x704e, 0x2104, 0xa005, 0x007c, 0x1209, 0x3002, 0x3202, -+ 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, 0x7a06, -+ 0x0c07, 0x0c07, 0x0e07, 0x10e1, 0x330a, 0x5805, 0x5a05, 0x6a06, -+ 0x6c06, 0x7c07, 0x7e07, 0x0e00, 0x789b, 0x0010, 0xa046, 0x007c, -+ 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, -+ 0x8003, 0xa105, 0xd7fc, 0x0040, 0x43b9, 0xa0e0, 0x85c0, 0x0078, -+ 0x43bb, 0xa0e0, 0x65c0, 0x007c, 0x79d8, 0x7adc, 0x78d0, 0x801b, -+ 0x00c8, 0x43c3, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, -+ 0x007c, 0x0e7e, 0x0f7e, 0xd084, 0x0040, 0x43d6, 0x2079, 0x0100, -+ 0x2009, 0x6080, 0x2071, 0x6080, 0x0078, 0x43e6, 0x2001, 0x6002, -+ 0x2004, 0xd0ec, 0x0040, 0x43e0, 0x2079, 0x0100, 0x0078, 0x43e2, -+ 0x2079, 0x0200, 0x2009, 0x6040, 0x2071, 0x6040, 0x2091, 0x8000, -+ 0x2104, 0xa084, 0x000f, 0x0079, 0x43ed, 0x43f7, 0x43f7, 0x43f7, -+ 0x43f7, 0x43f7, 0x43f7, 0x43f5, 0x444a, 0x1078, 0x2bfa, 0x69b4, -+ 0xc1f5, 0xa18c, 0xff9f, 0x69b6, 0xa005, 0x0040, 0x4447, 0x7858, -+ 0xa084, 0xff9f, 0xa085, 0x6000, 0x785a, 0x7828, 0xa086, 0x1814, -+ 0x00c0, 0x4447, 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0, -+ 0x440c, 0x784b, 0x0008, 0x7848, 0xa084, 0x0008, 0x00c0, 0x4413, -+ 0x7830, 0xd0bc, 0x00c0, 0x4447, 0x3200, 0x007e, 0x2001, 0x6002, -+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x4429, 0xa084, 0x0300, 0x0078, -+ 0x442b, 0xa084, 0x0400, 0x0040, 0x4431, 0x0018, 0x4447, 0x0078, -+ 0x4433, 0x0028, 0x4447, 0x79e4, 0xa184, 0x0030, 0x0040, 0x4447, -+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x4447, 0x681c, 0xd0ac, 0x00c0, -+ 0x4445, 0x1078, 0x446a, 0x0078, 0x4447, 0x781b, 0x00d3, 0x0f7f, -+ 0x0e7f, 0x007c, 0x70a7, 0x0000, 0x1078, 0x46d0, 0x0078, 0x4447, -+ 0x2001, 0x6001, 0x2004, 0xd0ac, 0x00c0, 0x4459, 0x6814, 0x1078, -+ 0x2b7a, 0x007c, 0x781b, 0x0067, 0x007c, 0x782b, 0x3008, 0x781b, -+ 0x0067, 0x007c, 0x781b, 0x005a, 0x007c, 0x782b, 0x3008, 0x781b, -+ 0x0058, 0x007c, 0x2009, 0x6017, 0x210c, 0xa186, 0x0000, 0x0040, -+ 0x447c, 0xa186, 0x0001, 0x0040, 0x4481, 0x701b, 0x000b, 0x706b, -+ 0x0001, 0x781b, 0x0048, 0x007c, 0x78cb, 0x0000, 0x781b, 0x00cf, -+ 0x007c, 0x701b, 0x000a, 0x007c, 0x2009, 0x6017, 0x210c, 0xa186, -+ 0x0000, 0x0040, 0x449a, 0xa186, 0x0001, 0x0040, 0x4497, 0x701b, -+ 0x000b, 0x706b, 0x0001, 0x781b, 0x0048, 0x0078, 0x2c5e, 0x701b, -+ 0x000a, 0x007c, 0x782b, 0x3008, 0x78cb, 0x0000, 0x781b, 0x00cf, -+ 0x007c, 0x781b, 0x00d3, 0x007c, 0x782b, 0x3008, 0x781b, 0x00d3, -+ 0x007c, 0x781b, 0x009b, 0x007c, 0x782b, 0x3008, 0x781b, 0x009b, -+ 0x007c, 0x6818, 0xd0fc, 0x0040, 0x44b7, 0x681b, 0x001d, 0x706b, -+ 0x0001, 0x781b, 0x0048, 0x007c, 0x7830, 0xa084, 0x00c0, 0x00c0, -+ 0x44df, 0x7808, 0xa084, 0xfffc, 0x780a, 0x0005, 0x0005, 0x0005, -+ 0x0005, 0x78ec, 0xa084, 0x0021, 0x00c0, 0x44dc, 0x2001, 0x6003, -+ 0x2004, 0xd0e4, 0x00c0, 0x44da, 0x7804, 0xa084, 0xff1f, 0xa085, -+ 0x00e0, 0x7806, 0xa006, 0x007c, 0x704c, 0xc08d, 0x780a, 0x007c, -+ 0x7830, 0xa084, 0x0080, 0x00c0, 0x44f9, 0x78ec, 0xa084, 0x0002, -+ 0x00c0, 0x44f9, 0x7808, 0xc08c, 0x780a, 0x0005, 0x0005, 0x0005, -+ 0x0005, 0x78ec, 0xa084, 0x0002, 0x0040, 0x44f9, 0x7808, 0xc08d, -+ 0x780a, 0x007c, 0x704c, 0xc08d, 0x704e, 0x780a, 0x007c, 0x7830, -+ 0xa084, 0x0040, 0x00c0, 0x44ff, 0x3200, 0x007e, 0x2001, 0x6002, -+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x4511, 0xa084, 0x0300, 0x0078, -+ 0x4513, 0xa084, 0x0400, 0x0040, 0x4519, 0x0098, 0x451d, 0x0078, -+ 0x451b, 0x00a8, 0x451d, 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, -+ 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, -+ 0x0040, 0x4541, 0x3200, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x4537, 0xa084, 0x0300, 0x0078, 0x4539, 0xa084, -+ 0x0400, 0x0040, 0x453f, 0x0098, 0x453b, 0x0078, 0x4541, 0x00a8, -+ 0x453f, 0x78ac, 0x007e, 0x704c, 0x780a, 0x007f, 0x007c, 0x78ec, -+ 0xa084, 0x0002, 0x00c0, 0x5596, 0xa784, 0x007d, 0x00c0, 0x4553, -+ 0x2700, 0x1078, 0x2bfa, 0xa784, 0x0001, 0x00c0, 0x39bf, 0xa784, -+ 0x0070, 0x0040, 0x4563, 0x0c7e, 0x2d60, 0x2f68, 0x1078, 0x2b67, -+ 0x2d78, 0x2c68, 0x0c7f, 0xa784, 0x0008, 0x0040, 0x4570, 0x784b, -+ 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x39bf, 0x0078, 0x445a, -+ 0xa784, 0x0004, 0x0040, 0x459f, 0x78b8, 0xa084, 0x4001, 0x0040, -+ 0x459f, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x39bf, -+ 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001, 0x00c0, 0x459f, 0x78c0, -+ 0xa085, 0x4800, 0x2030, 0x7e5a, 0x781b, 0x00d3, 0x007c, 0x784b, -+ 0x0008, 0x6818, 0xd0fc, 0x0040, 0x459c, 0x681b, 0x0015, 0xd6f4, -+ 0x0040, 0x459c, 0x681b, 0x0007, 0x1078, 0x446a, 0x007c, 0x681b, -+ 0x0003, 0x7858, 0xa084, 0x5f00, 0x681e, 0x682f, 0x0000, 0x6833, -+ 0x0000, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x332a, -+ 0x3200, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x007f, 0x0040, -+ 0x45bd, 0xa084, 0x0300, 0x0078, 0x45bf, 0xa084, 0x0400, 0x0040, -+ 0x45c5, 0x0018, 0x2c5e, 0x0078, 0x45c7, 0x0028, 0x2c5e, 0x0078, -+ 0x42a3, 0x6b14, 0x8307, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0xd3fc, 0x0040, 0x45d7, 0xa080, 0x6540, 0x0078, 0x45d9, 0xa080, -+ 0x64c0, 0x2060, 0x2048, 0x705e, 0x2a60, 0x007c, 0x7000, 0x0079, -+ 0x45e1, 0x45e9, 0x45e9, 0x45ea, 0x45f2, 0x45e9, 0x45e9, 0x45e9, -+ 0x45f5, 0x007c, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, -+ 0x601a, 0x007c, 0x1078, 0x55ac, 0x007c, 0x7094, 0xa005, 0x0040, -+ 0x4610, 0x2068, 0xb284, 0x0300, 0x0040, 0x4602, 0x2009, 0x0000, -+ 0x0078, 0x4604, 0x2009, 0x0001, 0x017e, 0x1078, 0x209b, 0x017f, -+ 0x017e, 0x1078, 0x552b, 0x017f, 0x1078, 0x552c, 0x7097, 0x0000, -+ 0x007c, 0x0e7e, 0x2091, 0x8000, 0x6014, 0xd0fc, 0x00c0, 0x461c, -+ 0x2071, 0x6040, 0x0078, 0x461e, 0x2071, 0x6080, 0x7000, 0xa086, -+ 0x0007, 0x00c0, 0x462f, 0x6110, 0x70b0, 0xa106, 0x00c0, 0x462f, -+ 0x0e7f, 0x1078, 0x20b0, 0x1078, 0x4635, 0xa006, 0x007c, 0x2091, -+ 0x8001, 0x0e7f, 0xa085, 0x0001, 0x007c, 0x0f7e, 0x0e7e, 0x0078, -+ 0x28b1, 0x785b, 0x0000, 0x70a3, 0x000e, 0x2009, 0x0100, 0x017e, -+ 0x7094, 0xa06d, 0x0040, 0x4648, 0x7097, 0x0000, 0x0078, 0x464e, -+ 0x70a7, 0x0000, 0x1078, 0x20e4, 0x0040, 0x4654, 0x70a0, 0x6826, -+ 0x1078, 0x4781, 0x0078, 0x4648, 0x017f, 0x077e, 0x157e, 0x0c7e, -+ 0x0d7e, 0x20a9, 0x0020, 0x3238, 0xa7bc, 0x0300, 0x0040, 0x4665, -+ 0x2061, 0xa7e0, 0xc7fc, 0x0078, 0x4668, 0x2061, 0xa900, 0xc7fd, -+ 0x6000, 0xa105, 0x6002, 0x601c, 0xa06d, 0x0040, 0x4678, 0x6800, -+ 0x601e, 0x1078, 0x1e55, 0x6008, 0x8000, 0x600a, 0x0078, 0x466b, -+ 0x6018, 0xa06d, 0x0040, 0x4682, 0x6800, 0x601a, 0x1078, 0x1e55, -+ 0x0078, 0x4678, 0xace0, 0x0009, 0x0070, 0x4688, 0x0078, 0x4668, -+ 0x7090, 0xa084, 0x8000, 0x0040, 0x468f, 0x1078, 0x480c, 0x0d7f, -+ 0x0c7f, 0x157f, 0x077f, 0x007c, 0x6804, 0xa084, 0x000f, 0x0079, -+ 0x4699, 0x46a9, 0x46a9, 0x46a9, 0x46a9, 0x46a9, 0x46a9, 0x46ab, -+ 0x46bd, 0x46a9, 0x46a9, 0x46a9, 0x46a9, 0x46a9, 0x46cb, 0x46a9, -+ 0x46ab, 0x1078, 0x2bfa, 0x007e, 0x7830, 0xd0b4, 0x0040, 0x46b6, -+ 0x784b, 0x0004, 0x7848, 0xd094, 0x00c0, 0x46b2, 0x007f, 0x1078, -+ 0x52d3, 0x1078, 0x1e55, 0x0078, 0x46cf, 0x6827, 0x000b, 0x007e, -+ 0x7830, 0xd0b4, 0x0040, 0x46ca, 0x784b, 0x0004, 0x7848, 0xd094, -+ 0x00c0, 0x46c6, 0x007f, 0x1078, 0x52d3, 0x1078, 0x4781, 0x007c, -+ 0x0f7e, 0x6814, 0xd0fc, 0x00c0, 0x46e7, 0x2001, 0x6002, 0x2004, -+ 0xd0ec, 0x0040, 0x46e1, 0x2079, 0x0100, 0x0098, 0x4706, 0x0078, -+ 0x46eb, 0x2079, 0x0200, 0x00a8, 0x4706, 0x0078, 0x46eb, 0x2079, -+ 0x0100, 0x0098, 0x4706, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x4706, -+ 0x0d7e, 0x1078, 0x5539, 0x2d00, 0x682e, 0x2009, 0x0004, 0x2001, -+ 0x0000, 0x6827, 0x0084, 0x1078, 0x54df, 0x1078, 0x4781, 0x0d7f, -+ 0x70a8, 0xa080, 0x00af, 0x781a, 0x0078, 0x474f, 0x7948, 0x6814, -+ 0xd0fc, 0x00c0, 0x4719, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x0040, -+ 0x4715, 0x0098, 0x471e, 0x0078, 0x471b, 0x00a8, 0x471e, 0x0078, -+ 0x471b, 0x0098, 0x471e, 0x794a, 0x0078, 0x46f0, 0x7948, 0x7828, -+ 0x007e, 0xa084, 0xf000, 0xa086, 0x1000, 0x007f, 0x00c0, 0x471b, -+ 0xd0b4, 0x00c0, 0x471b, 0xd0ac, 0x0040, 0x4732, 0xa185, 0x0004, -+ 0x0078, 0x4734, 0xa185, 0x000c, 0x784a, 0x789b, 0x000e, 0x78ab, -+ 0x0002, 0x7858, 0xa084, 0x00ff, 0xa085, 0x0400, 0x785a, 0x70a8, -+ 0xa080, 0x0097, 0x781a, 0x6827, 0x0284, 0x682c, 0x6836, 0x6830, -+ 0x683a, 0x2009, 0x0004, 0x2001, 0x0000, 0x1078, 0x54df, 0x0f7f, -+ 0x007c, 0x0d7e, 0x6b14, 0x1078, 0x2160, 0x0040, 0x475e, 0x2068, -+ 0x6827, 0x0002, 0x1078, 0x4781, 0x0078, 0x4753, 0x0d7f, 0x007c, -+ 0x0d7e, 0x6b14, 0x6c28, 0xa4a4, 0x00ff, 0x1078, 0x20f0, 0x0040, -+ 0x476e, 0x2068, 0x6827, 0x0002, 0x1078, 0x4781, 0x0d7f, 0x007c, -+ 0x0d7e, 0x6814, 0xa09c, 0x00ff, 0x1078, 0x212a, 0x0040, 0x477f, -+ 0x2068, 0x6827, 0x0002, 0x1078, 0x4781, 0x0078, 0x4774, 0x0d7f, -+ 0x007c, 0x0c7e, 0x6914, 0x6814, 0x1078, 0x47fa, 0x6904, 0xa18c, -+ 0x00ff, 0xa186, 0x0006, 0x0040, 0x479d, 0xa186, 0x000d, 0x0040, -+ 0x47c1, 0xa186, 0x0017, 0x00c0, 0x4799, 0x1078, 0x1e55, 0x0c7f, -+ 0x007c, 0x1078, 0x2253, 0x0c7f, 0x007c, 0x6004, 0x8001, 0x0048, -+ 0x47ba, 0x6006, 0x2009, 0x0000, 0xa684, 0x0001, 0x00c0, 0x47aa, -+ 0xa18d, 0x8000, 0xa684, 0x0004, 0x0040, 0x47b0, 0xa18d, 0x0002, -+ 0x691e, 0x6823, 0x0000, 0x711c, 0x810f, 0x6818, 0xa105, 0x681a, -+ 0x0078, 0x4799, 0x6100, 0xa184, 0x0001, 0x0040, 0x4795, 0x1078, -+ 0x2bfa, 0x6018, 0xa005, 0x00c0, 0x47d0, 0x6008, 0x8001, 0x0048, -+ 0x47d0, 0x600a, 0x601c, 0x6802, 0x2d00, 0x601e, 0x0078, 0x47e8, -+ 0xac88, 0x0006, 0x2104, 0xa005, 0x0040, 0x47d9, 0x2008, 0x0078, -+ 0x47d2, 0x6802, 0x2d0a, 0x6008, 0x8001, 0x0048, 0x47e6, 0x600a, -+ 0x6018, 0x2068, 0x6800, 0x601a, 0x0078, 0x47ca, 0x0c7f, 0x007c, -+ 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0d7e, 0x1078, 0x1e32, 0x2da0, -+ 0x137f, 0x20a9, 0x0037, 0x53a3, 0x0c7f, 0x147f, 0x137f, 0x157f, -+ 0x0078, 0x4799, 0xd0fc, 0x00c0, 0x4801, 0x2061, 0xa7e0, 0x0078, -+ 0x4803, 0x2061, 0xa900, 0xa184, 0x001f, 0xac60, 0x8003, 0x8003, -+ 0x8003, 0xac00, 0x2060, 0x007c, 0xd7fc, 0x00c0, 0x481f, 0x2019, -+ 0x6053, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x0040, 0x481b, 0x2021, -+ 0x0102, 0x0078, 0x4823, 0x2021, 0x0202, 0x0078, 0x4823, 0x2019, -+ 0x6093, 0x2021, 0x0102, 0x2304, 0xa085, 0x0001, 0x201a, 0x2404, -+ 0xa085, 0x0001, 0x2022, 0x007c, 0xd7fc, 0x00c0, 0x483f, 0x2019, -+ 0x6053, 0x2001, 0x6002, 0x2004, 0xd0ec, 0x0040, 0x483b, 0x2021, -+ 0x0102, 0x0078, 0x4843, 0x2021, 0x0202, 0x0078, 0x4843, 0x2019, -+ 0x6093, 0x2021, 0x0102, 0x2304, 0xa084, 0xfffe, 0x201a, 0x2404, -+ 0xa084, 0xfffe, 0x2022, 0x007c, 0x7990, 0xa18c, 0xfff8, 0x7992, -+ 0x70a8, 0xa080, 0x00d7, 0x781a, 0x0078, 0x2c5e, 0x7097, 0x0000, -+ 0x7003, 0x0000, 0x704b, 0x0001, 0x7043, 0x0000, 0x1078, 0x20e4, -+ 0x0040, 0x488c, 0x70ef, 0x0000, 0x68cc, 0x2060, 0x6100, 0xa184, -+ 0x0300, 0x0040, 0x4877, 0x6827, 0x000e, 0xa084, 0x0200, 0x0040, -+ 0x4873, 0x6827, 0x0017, 0x1078, 0x4781, 0x0078, 0x4856, 0x7000, -+ 0xa086, 0x0007, 0x00c0, 0x4905, 0x6910, 0x70b0, 0xa106, 0x0040, -+ 0x4885, 0x2d60, 0x1078, 0x20b0, 0x007c, 0x2d00, 0x7096, 0xad80, -+ 0x000f, 0x7042, 0x0078, 0x4897, 0x7010, 0xa005, 0x00c0, 0x4895, -+ 0x7048, 0xa086, 0x0001, 0x0040, 0x2c78, 0x0078, 0x2c5e, 0xa036, -+ 0x691c, 0xa184, 0x0002, 0x0040, 0x489f, 0xa6b5, 0x0004, 0xa184, -+ 0x00c0, 0x8003, 0x8003, 0x8007, 0xa080, 0x49b3, 0x2004, 0xa635, -+ 0x1078, 0x2d79, 0x6820, 0xa084, 0x0400, 0x0040, 0x48b9, 0x789b, -+ 0x0018, 0x78ab, 0x0003, 0x789b, 0x0081, 0x78ab, 0x0001, 0xa6b5, -+ 0x5000, 0x6820, 0xa084, 0x8000, 0x0040, 0x48c7, 0xa6b5, 0x0400, -+ 0x789b, 0x000e, 0x6824, 0x8007, 0x78aa, 0x0078, 0x48e7, 0x681c, -+ 0xd0fc, 0x00c0, 0x48d5, 0xa6b5, 0x0800, 0x6820, 0xd0c4, 0x0040, -+ 0x48e7, 0xa6b5, 0x4000, 0x0078, 0x48e7, 0x6820, 0xd0c4, 0x0040, -+ 0x48dd, 0xa6b5, 0x4000, 0x0078, 0x48e7, 0x789b, 0x0018, 0x78ab, -+ 0x0002, 0x789b, 0x0081, 0x78ab, 0x0001, 0xa6b5, 0x1000, 0xa684, -+ 0x0200, 0x0040, 0x4901, 0x682c, 0x78d2, 0x6830, 0x78d6, 0xa684, -+ 0x0100, 0x0040, 0x48ff, 0x682c, 0xa084, 0x0001, 0x0040, 0x48ff, -+ 0x7888, 0xa084, 0x0040, 0x0040, 0x48ff, 0xa6b5, 0x8000, 0x1078, -+ 0x550e, 0x7e5a, 0x6eb6, 0x0078, 0x5558, 0x1078, 0x44bc, 0x00c0, -+ 0x49ad, 0x2041, 0x0001, 0x2031, 0x1000, 0x1078, 0x2d79, 0x789b, -+ 0x0018, 0x6814, 0xa084, 0x001f, 0xa085, 0x0080, 0x78aa, 0x691c, -+ 0xa184, 0x0002, 0x0040, 0x4924, 0xa6b5, 0x0004, 0x78ab, 0x0020, -+ 0x6828, 0x78aa, 0xa8c0, 0x0002, 0x681c, 0xd0f4, 0x0040, 0x492d, -+ 0x2c50, 0x1078, 0x45c9, 0x1078, 0x5424, 0x6820, 0xa084, 0x8000, -+ 0x0040, 0x493b, 0xa6b5, 0x0400, 0x789b, 0x000e, 0x6824, 0x8007, -+ 0x78aa, 0x0078, 0x4949, 0x681c, 0xa084, 0x8000, 0x00c0, 0x4949, -+ 0xa6b5, 0x0800, 0x6820, 0xa084, 0x0100, 0x0040, 0x4949, 0xa6b5, -+ 0x4000, 0x681c, 0xa084, 0x00c0, 0x8003, 0x8003, 0x8007, 0xa080, -+ 0x49b3, 0x2004, 0xa635, 0xa684, 0x0100, 0x0040, 0x4963, 0x682c, -+ 0xa084, 0x0001, 0x0040, 0x4963, 0x7888, 0xa084, 0x0040, 0x0040, -+ 0x4963, 0xa6b5, 0x8000, 0x789b, 0x007e, 0x7eae, 0x6eb6, 0x6814, -+ 0xc0fc, 0x8007, 0x78aa, 0x7882, 0x2810, 0x7aaa, 0x7830, 0xa084, -+ 0x00c0, 0x00c0, 0x49ad, 0x6914, 0xd1fc, 0x00c0, 0x4985, 0x2001, -+ 0x6002, 0x2004, 0xd0ec, 0x0040, 0x4981, 0x0018, 0x49ad, 0x0078, -+ 0x4987, 0x0028, 0x49ad, 0x0078, 0x4987, 0x0018, 0x49ad, 0x127e, -+ 0x0d7e, 0x0c7e, 0x70f0, 0xa084, 0x2700, 0x2090, 0x0c7f, 0x0d7f, -+ 0x127f, 0xa684, 0x0200, 0x0040, 0x499b, 0x682c, 0x78d2, 0x6830, -+ 0x78d6, 0x1078, 0x550e, 0x70a8, 0xa080, 0x00dc, 0x781a, 0x1078, -+ 0x44fa, 0x2d00, 0x7096, 0x7052, 0x6810, 0x70b2, 0x7003, 0x0007, -+ 0xad80, 0x000f, 0x7042, 0x0078, 0x2c5e, 0x1078, 0x209b, 0x1078, -+ 0x44fa, 0x0078, 0x2c5e, 0x0000, 0x0300, 0x0200, 0x0000, 0x1078, -+ 0x2bfa, 0x1078, 0x2bed, 0x2300, 0x0079, 0x49be, 0x49c3, 0x49c1, -+ 0x49c8, 0x1078, 0x2bfa, 0x71a8, 0xa188, 0x0097, 0x791a, 0x007c, -+ 0x1078, 0x552c, 0x6924, 0xa184, 0x00ff, 0xa086, 0x000a, 0x0040, -+ 0x49da, 0xa184, 0xff00, 0xa085, 0x000a, 0x6826, 0x1078, 0x209b, -+ 0x0078, 0x4856, 0x2001, 0x000a, 0x1078, 0x54ae, 0x0078, 0x4856, -+ 0xa282, 0x0005, 0x0050, 0x49e6, 0x1078, 0x2bfa, 0x7000, 0xa084, -+ 0x000f, 0x10c0, 0x45de, 0x1078, 0x1e32, 0x00c0, 0x4a08, 0x2069, -+ 0xffff, 0xa684, 0x0004, 0x0040, 0x49f9, 0x2001, 0x2800, 0x0078, -+ 0x49fb, 0x2001, 0x0800, 0x71a8, 0xa188, 0x0097, 0x789b, 0x000e, -+ 0x8007, 0x78aa, 0x2031, 0x0400, 0x7e5a, 0x791a, 0x0078, 0x2c5e, -+ 0x6807, 0x0106, 0x680b, 0x0000, 0x689f, 0x0000, 0x6827, 0x0000, -+ 0xa386, 0x0002, 0x00c0, 0x4a28, 0xa286, 0x0002, 0x00c0, 0x4a28, -+ 0x78a0, 0xa005, 0x00c0, 0x4a28, 0xd4fc, 0x00c0, 0x4a28, 0x78e4, -+ 0xa084, 0x0008, 0x0040, 0x4a28, 0xa6b5, 0x0008, 0x2019, 0x0000, -+ 0x1078, 0x4e89, 0x2d00, 0x7096, 0x7052, 0x7003, 0x0007, 0x7043, -+ 0x0000, 0x6020, 0xa084, 0x000f, 0x680e, 0x6824, 0xa084, 0x0080, -+ 0x0040, 0x4a3e, 0x1078, 0x4f59, 0x0078, 0x2c5e, 0x2300, 0x0079, -+ 0x4a41, 0x4a44, 0x4ac5, 0x4ade, 0x2200, 0x0079, 0x4a47, 0x4a4c, -+ 0x4a5c, 0x4a82, 0x4a8e, 0x4ab1, 0x2029, 0x0001, 0xa026, 0x2011, -+ 0x0000, 0x1078, 0x5092, 0x0079, 0x4a55, 0x4a5a, 0x2c5e, 0x4856, -+ 0x4a5a, 0x4a5a, 0x1078, 0x2bfa, 0x7990, 0xa18c, 0x0007, 0x00c0, -+ 0x4a63, 0x2009, 0x0008, 0x2011, 0x0001, 0xa684, 0x0004, 0x0040, -+ 0x4a6b, 0x2011, 0x0003, 0x2220, 0xa12a, 0x2011, 0x0001, 0x1078, -+ 0x5092, 0x0079, 0x4a73, 0x4a78, 0x2c5e, 0x4856, 0x4a80, 0x4a7a, -+ 0x0078, 0x555e, 0x709f, 0x4a7e, 0x0078, 0x2c5e, 0x0078, 0x4a78, -+ 0x1078, 0x2bfa, 0xa684, 0x0010, 0x0040, 0x4a8c, 0x1078, 0x4f1a, -+ 0x0040, 0x4a8c, 0x0078, 0x2c5e, 0x0078, 0x4f9a, 0x6000, 0xa084, -+ 0x0002, 0x0040, 0x4aab, 0x70a8, 0xa080, 0x0085, 0x781a, 0x0d7e, -+ 0x1078, 0x5539, 0x2d00, 0x682e, 0x6827, 0x0000, 0x1078, 0x4781, -+ 0x0d7f, 0x1078, 0x1e55, 0x7003, 0x0000, 0x7043, 0x0000, 0x7053, -+ 0x0000, 0x0078, 0x4856, 0xa684, 0x0004, 0x00c0, 0x4ab1, 0x0078, -+ 0x555e, 0x6000, 0xa084, 0x0004, 0x00c0, 0x4ac3, 0x6000, 0xa084, -+ 0x0001, 0x0040, 0x4ac3, 0x709f, 0x4ac3, 0x2001, 0x0007, 0x1078, -+ 0x54a6, 0x0078, 0x5564, 0x0078, 0x555e, 0x2200, 0x0079, 0x4ac8, -+ 0x4acd, 0x4acf, 0x4acd, 0x4acd, 0x4acd, 0x1078, 0x2bfa, 0x709b, -+ 0x4ad3, 0x0078, 0x556c, 0x78e4, 0xa084, 0x0008, 0x00c0, 0x4acf, -+ 0x1078, 0x5496, 0x709f, 0x4adc, 0x0078, 0x555e, 0x2200, 0x0079, -+ 0x4ae1, 0x4ae6, 0x4ae8, 0x4ae8, 0x4ae6, 0x4ae6, 0x1078, 0x2bfa, -+ 0x78e4, 0xa084, 0x0008, 0x0040, 0x4afd, 0x709b, 0x4af1, 0x0078, -+ 0x556c, 0x2011, 0x0004, 0x1078, 0x508c, 0x0079, 0x4af7, 0x4b09, -+ 0x2c5e, 0x4856, 0x4b09, 0x4b13, 0x4b17, 0x690c, 0x81ff, 0x0040, -+ 0x4b09, 0x8109, 0x00c0, 0x4b08, 0x6827, 0x000f, 0x0078, 0x4bbd, -+ 0x690e, 0x709f, 0x4b11, 0x2001, 0x0003, 0x1078, 0x54a6, 0x0078, -+ 0x5564, 0x0078, 0x555e, 0x709f, 0x4b09, 0x0078, 0x2c5e, 0x709f, -+ 0x4b1b, 0x0078, 0x2c5e, 0x0078, 0x4b11, 0xa282, 0x0003, 0x0050, -+ 0x4b23, 0x1078, 0x2bfa, 0xa386, 0x0002, 0x00c0, 0x4b3b, 0xa286, -+ 0x0002, 0x00c0, 0x4b41, 0x78a0, 0xa005, 0x00c0, 0x4b41, 0xd4fc, -+ 0x00c0, 0x4b41, 0x78e4, 0xa084, 0x0008, 0x0040, 0x4b3b, 0xa6b5, -+ 0x0008, 0x2019, 0x0000, 0xa684, 0x0008, 0x0040, 0x4b41, 0x1078, -+ 0x4ef7, 0x6810, 0x70b2, 0x7003, 0x0007, 0x2300, 0x0079, 0x4b48, -+ 0x4b4b, 0x4b78, 0x4b80, 0x2200, 0x0079, 0x4b4e, 0x4b53, 0x4b51, -+ 0x4b6c, 0x1078, 0x2bfa, 0x7990, 0xa1ac, 0x0007, 0xa026, 0x2011, -+ 0x0001, 0x1078, 0x5092, 0x0079, 0x4b5d, 0x4b62, 0x2c5e, 0x4856, -+ 0x4b6a, 0x4b64, 0x0078, 0x555e, 0x709f, 0x4b68, 0x0078, 0x2c5e, -+ 0x0078, 0x4b62, 0x1078, 0x2bfa, 0xa684, 0x0010, 0x0040, 0x4b76, -+ 0x1078, 0x4f1a, 0x0040, 0x4b76, 0x0078, 0x2c5e, 0x0078, 0x4f9a, -+ 0x2200, 0x0079, 0x4b7b, 0x4b7e, 0x4b7e, 0x4b7e, 0x1078, 0x2bfa, -+ 0x2200, 0x0079, 0x4b83, 0x4b86, 0x4b88, 0x4b88, 0x1078, 0x2bfa, -+ 0x78e4, 0xa084, 0x0008, 0x0040, 0x4b9d, 0x709b, 0x4b91, 0x0078, -+ 0x556c, 0x2011, 0x0004, 0x1078, 0x508c, 0x0079, 0x4b97, 0x4ba9, -+ 0x2c5e, 0x4856, 0x4ba9, 0x4bb3, 0x4bb7, 0x690c, 0x81ff, 0x0040, -+ 0x4ba9, 0x8109, 0x00c0, 0x4ba8, 0x6827, 0x000f, 0x0078, 0x4bbd, -+ 0x690e, 0x709f, 0x4bb1, 0x2001, 0x0003, 0x1078, 0x54a6, 0x0078, -+ 0x5564, 0x0078, 0x555e, 0x709f, 0x4ba9, 0x0078, 0x2c5e, 0x709f, -+ 0x4bbb, 0x0078, 0x2c5e, 0x0078, 0x4bb1, 0x70a8, 0xa080, 0x0085, -+ 0x781a, 0x0d7e, 0x6824, 0x007e, 0x1078, 0x5539, 0x007f, 0x6826, -+ 0x2d00, 0x682e, 0x1078, 0x4781, 0x0d7f, 0x1078, 0x54ae, 0x7003, -+ 0x0000, 0x7043, 0x0000, 0x7053, 0x0000, 0x0078, 0x4856, 0x2300, -+ 0x0079, 0x4bda, 0x4bdf, 0x4be1, 0x4bdd, 0x1078, 0x2bfa, 0x7098, -+ 0x007a, 0x7098, 0x007a, 0xa282, 0x0002, 0x0050, 0x4be9, 0x1078, -+ 0x2bfa, 0xa684, 0x0200, 0x0040, 0x4bf3, 0x1078, 0x552b, 0x1078, -+ 0x5074, 0x1078, 0x552c, 0x2300, 0x0079, 0x4bf6, 0x4bf9, 0x4c2c, -+ 0x4c92, 0xad86, 0xffff, 0x00c0, 0x4bfe, 0x007c, 0xa286, 0x0001, -+ 0x0040, 0x4c04, 0x1078, 0x2bfa, 0xa684, 0x0200, 0x0040, 0x4c0c, -+ 0x1078, 0x552b, 0x1078, 0x552c, 0x6924, 0xa184, 0x00ff, 0xa086, -+ 0x000a, 0x00c0, 0x4c16, 0xa184, 0xff00, 0x6826, 0x2001, 0x0001, -+ 0x1078, 0x54ae, 0x78b8, 0xa084, 0xc001, 0x0040, 0x4c28, 0x7848, -+ 0xa085, 0x0008, 0x784a, 0x7848, 0xa084, 0x0008, 0x00c0, 0x4c23, -+ 0x7003, 0x0000, 0x0078, 0x4856, 0x2200, 0x0079, 0x4c2f, 0x4c31, -+ 0x4c62, 0x709b, 0x4c35, 0x0078, 0x556c, 0x2011, 0x000d, 0x1078, -+ 0x508c, 0x0079, 0x4c3b, 0x4c42, 0x2c5e, 0x4856, 0x4c4a, 0x4c52, -+ 0x4c58, 0x4c5a, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x0078, 0x5558, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x0078, 0x5558, 0x709f, 0x4c56, 0x0078, 0x2c5e, 0x0078, 0x4c42, -+ 0x1078, 0x2bfa, 0x709f, 0x4c5e, 0x0078, 0x2c5e, 0x1078, 0x5572, -+ 0x0078, 0x2c5e, 0x709b, 0x4c66, 0x0078, 0x556c, 0x2011, 0x0012, -+ 0x1078, 0x508c, 0x0079, 0x4c6c, 0x4c72, 0x2c5e, 0x4856, 0x4c7e, -+ 0x4c86, 0x4c8c, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x70a8, 0xa080, 0x00af, 0x781a, 0x0078, 0x2c5e, 0xa6b4, 0x00ff, -+ 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x0078, 0x5558, 0x709f, 0x4c8a, -+ 0x0078, 0x2c5e, 0x0078, 0x4c72, 0x709f, 0x4c90, 0x0078, 0x2c5e, -+ 0x0078, 0x4c7e, 0xa286, 0x0001, 0x0040, 0x4c98, 0x1078, 0x2bfa, -+ 0x709b, 0x4c9c, 0x0078, 0x556c, 0x2011, 0x0015, 0x1078, 0x508c, -+ 0x0079, 0x4ca2, 0x4ca7, 0x2c5e, 0x4856, 0x4cb5, 0x4cc1, 0xa6b4, -+ 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x783b, 0x1301, 0x70a8, -+ 0xa080, 0x00bb, 0x781a, 0x0078, 0x2c5e, 0xa6b4, 0x00ff, 0xa6b5, -+ 0x0400, 0x6eb6, 0x7e5a, 0x70a8, 0xa080, 0x00af, 0x781a, 0x0078, -+ 0x2c5e, 0x709f, 0x4cc5, 0x0078, 0x2c5e, 0x0078, 0x4ca7, 0xa282, -+ 0x0003, 0x0050, 0x4ccd, 0x1078, 0x2bfa, 0x2300, 0x0079, 0x4cd0, -+ 0x4cd3, 0x4d14, 0x4d79, 0xa286, 0x0001, 0x0040, 0x4cd9, 0x1078, -+ 0x2bfa, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x4ce6, -+ 0x1078, 0x4781, 0x7003, 0x0000, 0x0078, 0x4856, 0x683b, 0x0000, -+ 0x6837, 0x0000, 0xa684, 0x0200, 0x0040, 0x4cf4, 0x1078, 0x552b, -+ 0x1078, 0x5074, 0x1078, 0x552c, 0x6924, 0xa184, 0x00ff, 0xa086, -+ 0x000a, 0x00c0, 0x4cfe, 0xa184, 0xff00, 0x6826, 0x2001, 0x0001, -+ 0x1078, 0x54ae, 0x78b8, 0xa084, 0xc001, 0x0040, 0x4d10, 0x7848, -+ 0xa085, 0x0008, 0x784a, 0x7848, 0xa084, 0x0008, 0x00c0, 0x4d0b, -+ 0x7003, 0x0000, 0x0078, 0x4856, 0xa684, 0x0200, 0x0040, 0x4d1c, -+ 0x1078, 0x5074, 0x1078, 0x552c, 0x2200, 0x0079, 0x4d1f, 0x4d21, -+ 0x4d54, 0x709b, 0x4d25, 0x0078, 0x556c, 0x2011, 0x000d, 0x1078, -+ 0x508c, 0x0079, 0x4d2b, 0x4d32, 0x2c5e, 0x4856, 0x4d3a, 0x4d42, -+ 0x4d48, 0x4d4a, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, -+ 0x0078, 0x5558, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, -+ 0x0078, 0x5558, 0x709f, 0x4d46, 0x0078, 0x2c5e, 0x0078, 0x4d32, -+ 0x1078, 0x2bfa, 0x709f, 0x4d50, 0x1078, 0x552c, 0x0078, 0x2c5e, -+ 0x1078, 0x5572, 0x0078, 0x2c5e, 0x709b, 0x4d58, 0x0078, 0x556c, -+ 0x2011, 0x0005, 0x1078, 0x508c, 0x0079, 0x4d5e, 0x4d63, 0x2c5e, -+ 0x4856, 0x4d6b, 0x4d73, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, -+ 0x7e5a, 0x0078, 0x5558, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, -+ 0x7e5a, 0x0078, 0x5558, 0x709f, 0x4d77, 0x0078, 0x2c5e, 0x0078, -+ 0x4d63, 0xa286, 0x0001, 0x0040, 0x4d7f, 0x1078, 0x2bfa, 0x709b, -+ 0x4d83, 0x0078, 0x556c, 0x2011, 0x0006, 0x1078, 0x508c, 0x0079, -+ 0x4d89, 0x4d8e, 0x2c5e, 0x4856, 0x4d94, 0x4d9e, 0xa6b5, 0x0800, -+ 0x6eb6, 0x7e5a, 0x0078, 0x5558, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, -+ 0x6eb6, 0xa6b5, 0x4000, 0x7e5a, 0x0078, 0x5558, 0x709f, 0x4da2, -+ 0x0078, 0x2c5e, 0x0078, 0x4d8e, 0x2300, 0x0079, 0x4da7, 0x4dac, -+ 0x4daa, 0x4daa, 0x1078, 0x2bfa, 0x1078, 0x2bfa, 0x2300, 0x719c, -+ 0xa005, 0x017a, 0x6810, 0x70b2, 0xa282, 0x0003, 0x0050, 0x4dba, -+ 0x1078, 0x2bfa, 0x2300, 0x0079, 0x4dbd, 0x4dc0, 0x4dce, 0x4df0, -+ 0xa684, 0x0200, 0x0040, 0x4dc8, 0x1078, 0x552b, 0x1078, 0x552c, -+ 0x2001, 0x0001, 0x1078, 0x54ae, 0x0078, 0x2c5e, 0xa286, 0x0002, -+ 0x0040, 0x4dd7, 0x82ff, 0x0040, 0x4dd7, 0x1078, 0x2bfa, 0x709b, -+ 0x4ddb, 0x0078, 0x556c, 0x2011, 0x0018, 0x1078, 0x508c, 0x0079, -+ 0x4de1, 0x4de6, 0x2c5e, 0x4856, 0x4de8, 0x4dea, 0x0078, 0x5558, -+ 0x0078, 0x5558, 0x709f, 0x4dee, 0x0078, 0x2c5e, 0x0078, 0x4de6, -+ 0x2200, 0x0079, 0x4df3, 0x4df5, 0x4e0e, 0x709b, 0x4df9, 0x0078, -+ 0x556c, 0x2011, 0x0017, 0x1078, 0x508c, 0x0079, 0x4dff, 0x4e04, -+ 0x2c5e, 0x4856, 0x4e06, 0x4e08, 0x0078, 0x5558, 0x0078, 0x5558, -+ 0x709f, 0x4e0c, 0x0078, 0x2c5e, 0x0078, 0x4e04, 0xd4fc, 0x00c0, -+ 0x4e6b, 0xa684, 0x0100, 0x0040, 0x4e19, 0x1078, 0x552b, 0x1078, -+ 0x5074, 0x78d8, 0x78d2, 0x78dc, 0x78d6, 0xa6b4, 0xefff, 0x7e5a, -+ 0x709b, 0x4e24, 0x0078, 0x556c, 0x2011, 0x000d, 0x1078, 0x508c, -+ 0x0079, 0x4e2a, 0x4e31, 0x2c5e, 0x4856, 0x4e31, 0x4e59, 0x4e5f, -+ 0x4e61, 0x78d8, 0x79dc, 0xa105, 0x00c0, 0x4e43, 0x78b8, 0xa084, -+ 0x801f, 0x00c0, 0x4e43, 0x70a7, 0x0000, 0x7858, 0xa084, 0xfdff, -+ 0x785a, 0x0078, 0x5558, 0xa684, 0x0100, 0x0040, 0x4e57, 0x1078, -+ 0x552c, 0x1078, 0x54d4, 0x027e, 0x037e, 0x682c, 0x78d2, 0x6830, -+ 0x78d6, 0x70a7, 0x0000, 0x017f, 0x007f, 0x1078, 0x5972, 0x0078, -+ 0x5558, 0x709f, 0x4e5d, 0x0078, 0x2c5e, 0x0078, 0x4e31, 0x1078, -+ 0x2bfa, 0x709f, 0x4e67, 0x1078, 0x552c, 0x0078, 0x2c5e, 0x1078, -+ 0x5572, 0x0078, 0x2c5e, 0x1078, 0x552c, 0x6918, 0xd1a4, 0x0040, -+ 0x4e79, 0x6827, 0x000f, 0x1078, 0x54ae, 0x1078, 0x552c, 0x0078, -+ 0x2c5e, 0x709f, 0x4e81, 0x2001, 0x0003, 0x1078, 0x54a6, 0x0078, -+ 0x5564, 0x1078, 0x550e, 0x682c, 0x78d2, 0x6830, 0x78d6, 0x0078, -+ 0x5558, 0x70ac, 0x6812, 0x70b2, 0x8000, 0x70ae, 0x681b, 0x0000, -+ 0xa684, 0x0008, 0x0040, 0x4eac, 0x157e, 0x137e, 0x147e, 0x7890, -+ 0x8004, 0x8004, 0x8004, 0x8004, 0xa084, 0x000f, 0x681a, 0x80ac, -+ 0x789b, 0x0000, 0xaf80, 0x002b, 0x2098, 0xad80, 0x000b, 0x20a0, -+ 0x53a5, 0x147f, 0x137f, 0x157f, 0xa6c4, 0x0f00, 0xa684, 0x0002, -+ 0x00c0, 0x4ebb, 0x692c, 0x810d, 0x810d, 0x810d, 0xa184, 0x0007, -+ 0x2008, 0x0078, 0x4ece, 0x789b, 0x0010, 0x79ac, 0xa184, 0x0020, -+ 0x0040, 0x4ece, 0x017e, 0x2009, 0x0005, 0x2001, 0x3d00, 0x1078, -+ 0x54df, 0x6824, 0xa085, 0x003b, 0x6826, 0x017f, 0xa184, 0x001f, -+ 0xa805, 0x017e, 0x3208, 0xa18c, 0x0300, 0x0040, 0x4eda, 0xc0fc, -+ 0x0078, 0x4edb, 0xc0fd, 0x017f, 0x6816, 0x1078, 0x47fa, 0x68ce, -+ 0xa684, 0x0004, 0x0040, 0x4eea, 0xa18c, 0xff00, 0x78a8, 0xa084, -+ 0x00ff, 0xa105, 0x682a, 0xa6b4, 0x00ff, 0x6000, 0xa084, 0x0008, -+ 0x0040, 0x4ef4, 0xa6b5, 0x4000, 0x6eb6, 0x7e5a, 0x007c, 0x157e, -+ 0x137e, 0x147e, 0x6918, 0x7890, 0x8004, 0x8004, 0x8004, 0x8004, -+ 0xa084, 0x000f, 0x007e, 0xa100, 0x681a, 0x007f, 0x8000, 0x8004, -+ 0x0040, 0x4f16, 0x20a8, 0x8104, 0xa080, 0x000b, 0xad00, 0x20a0, -+ 0x789b, 0x0000, 0xaf80, 0x002b, 0x2098, 0x53a5, 0x147f, 0x137f, -+ 0x157f, 0x007c, 0x682c, 0xd0b4, 0x00c0, 0x4f29, 0xd0ac, 0x00c0, -+ 0x4f25, 0x2011, 0x0010, 0x0078, 0x4f31, 0x2011, 0x000c, 0x0078, -+ 0x4f31, 0xa084, 0x0020, 0x00c0, 0x4f30, 0x620c, 0x0078, 0x4f31, -+ 0x6210, 0x6b18, 0x2300, 0xa202, 0x0040, 0x4f51, 0x2018, 0xa382, -+ 0x000e, 0x0048, 0x4f41, 0x0040, 0x4f41, 0x2019, 0x000e, 0x0078, -+ 0x4f45, 0x7858, 0xa084, 0xffef, 0x785a, 0x783b, 0x1b01, 0x7893, -+ 0x0000, 0x7ba2, 0x70a8, 0xa080, 0x0094, 0x781a, 0xa085, 0x0001, -+ 0x007c, 0x7858, 0xa084, 0xffef, 0x785a, 0x7893, 0x0000, 0xa006, -+ 0x007c, 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x4f66, -+ 0xa196, 0x000f, 0x0040, 0x4f66, 0x6807, 0x0117, 0x6914, 0x6814, -+ 0x1078, 0x47fa, 0x6100, 0x8104, 0x00c8, 0x4f82, 0x601c, 0xa005, -+ 0x0040, 0x4f76, 0x2001, 0x0800, 0x0078, 0x4f84, 0x0d7e, 0x6824, -+ 0x007e, 0x1078, 0x5539, 0x007f, 0x6826, 0x2d00, 0x682e, 0x1078, -+ 0x4781, 0x0d7f, 0x2001, 0x0200, 0x6924, 0xa18c, 0x00ff, 0xa10d, -+ 0x6926, 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, -+ 0x6822, 0x2031, 0x0400, 0x6eb6, 0x7e5a, 0x71a8, 0xa188, 0x0097, -+ 0x791a, 0x007c, 0x1078, 0x2d79, 0x6814, 0x2040, 0xa684, 0x0002, -+ 0x00c0, 0x4fb0, 0x692c, 0x810d, 0x810d, 0x810d, 0xa184, 0x0007, -+ 0x2008, 0xa805, 0x6816, 0x1078, 0x47fa, 0x68ce, 0x0078, 0x4fb4, -+ 0x6914, 0x6814, 0x1078, 0x47fa, 0x6100, 0x8104, 0x00c8, 0x5012, -+ 0xa184, 0x0300, 0x0040, 0x4fc0, 0x6807, 0x0117, 0x0078, 0x4fde, -+ 0x6004, 0xa005, 0x00c0, 0x4fe7, 0x6807, 0x0117, 0x601c, 0xa005, -+ 0x00c0, 0x4fd4, 0x0d7e, 0x1078, 0x5539, 0x6827, 0x0034, 0x2d00, -+ 0x682e, 0x1078, 0x4781, 0x0d7f, 0xa684, 0x0004, 0x0040, 0x4fde, -+ 0x2031, 0x0400, 0x2001, 0x2800, 0x0078, 0x4fe2, 0x2031, 0x0400, -+ 0x2001, 0x0800, 0x71a8, 0xa188, 0x0097, 0x0078, 0x504f, 0x6018, -+ 0xa005, 0x00c0, 0x4fd4, 0x601c, 0xa005, 0x00c0, 0x4fd4, 0x689f, -+ 0x0000, 0x6827, 0x003d, 0xa684, 0x0001, 0x0040, 0x505d, 0xd694, -+ 0x00c0, 0x500b, 0x6100, 0xd1d4, 0x0040, 0x500b, 0x692c, 0xa18c, -+ 0x00ff, 0x0040, 0x505d, 0xa186, 0x0003, 0x0040, 0x505d, 0xa186, -+ 0x0012, 0x0040, 0x505d, 0xa6b5, 0x0800, 0x71a8, 0xa188, 0x00b3, -+ 0x0078, 0x5058, 0x6807, 0x0117, 0x2031, 0x0400, 0x692c, 0xa18c, -+ 0x00ff, 0xa186, 0x0012, 0x00c0, 0x5023, 0x2001, 0x506a, 0x2009, -+ 0x0001, 0x0078, 0x5034, 0xa186, 0x0003, 0x00c0, 0x502d, 0x2001, -+ 0x506b, 0x2009, 0x0012, 0x0078, 0x5034, 0x2001, 0x0200, 0x71a8, -+ 0xa188, 0x0097, 0x0078, 0x504f, 0x6a34, 0xa29d, 0x0000, 0x00c0, -+ 0x503c, 0xa006, 0x0078, 0x502f, 0x007e, 0x2100, 0xa21a, 0x007f, -+ 0x00c8, 0x5043, 0x2208, 0x1078, 0x54f9, 0x78a3, 0x0000, 0x681c, -+ 0xa085, 0x0040, 0x681e, 0x71a8, 0xa188, 0x00d9, 0xa006, 0x6826, -+ 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, -+ 0x6eb6, 0x7e5a, 0x791a, 0x0078, 0x2c5e, 0x6eb6, 0x1078, 0x4781, -+ 0x6810, 0x70b2, 0x7003, 0x0007, 0x7097, 0x0000, 0x7053, 0x0000, -+ 0x0078, 0x2c5e, 0x0023, 0x0070, 0x0005, 0x0000, 0x0a00, 0x0000, -+ 0x0000, 0x0025, 0x0000, 0x0000, 0x683b, 0x0000, 0x6837, 0x0000, -+ 0xa684, 0x0200, 0x0040, 0x508b, 0x78b8, 0xa08c, 0x001f, 0xa084, -+ 0x8000, 0x0040, 0x5084, 0x8108, 0x78d8, 0xa100, 0x6836, 0x78dc, -+ 0xa081, 0x0000, 0x683a, 0x007c, 0x7990, 0x810f, 0xa5ac, 0x0007, -+ 0x2021, 0x0000, 0xa480, 0x0010, 0x789a, 0x79a8, 0xa18c, 0x00ff, -+ 0xa184, 0x0080, 0x00c0, 0x50ba, 0xa182, 0x0020, 0x00c8, 0x50d8, -+ 0xa182, 0x0012, 0x00c8, 0x5496, 0x2100, 0x1079, 0x50a8, 0x007c, -+ 0x5496, 0x52eb, 0x5496, 0x5496, 0x50e5, 0x50e8, 0x512f, 0x516d, -+ 0x51a1, 0x51a4, 0x5496, 0x5496, 0x5150, 0x5213, 0x524d, 0x5496, -+ 0x5496, 0x5274, 0xa184, 0x0020, 0x00c0, 0x52a8, 0xa18c, 0x001f, -+ 0x6814, 0xa084, 0x001f, 0xa106, 0x0040, 0x50d5, 0x70a8, 0xa080, -+ 0x0085, 0x781a, 0x2001, 0x0014, 0x1078, 0x54ae, 0x1078, 0x552c, -+ 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x2001, 0x0000, 0x007c, -+ 0xa182, 0x0024, 0x00c8, 0x5496, 0xa184, 0x0003, 0x1079, 0x50a8, -+ 0x007c, 0x5496, 0x5496, 0x5496, 0x5496, 0x1078, 0x5496, 0x007c, -+ 0x2200, 0x0079, 0x50eb, 0x5277, 0x5277, 0x511c, 0x511c, 0x511c, -+ 0x511c, 0x511c, 0x511c, 0x511c, 0x511c, 0x511a, 0x511c, 0x5104, -+ 0x510d, 0x510d, 0x510d, 0x511c, 0x511c, 0x5124, 0x5127, 0x5277, -+ 0x5127, 0x511c, 0x511c, 0x511c, 0x0c7e, 0x077e, 0x6f14, 0x1078, -+ 0x42de, 0x077f, 0x0c7f, 0x0078, 0x511c, 0x6818, 0xd0a4, 0x0040, -+ 0x511c, 0x6827, 0x0033, 0x1078, 0x54ae, 0x1078, 0x552c, 0x2001, -+ 0x0001, 0x007c, 0x1078, 0x53ae, 0x6827, 0x02b3, 0x2009, 0x000b, -+ 0x2001, 0x4800, 0x0078, 0x52ab, 0x1078, 0x5486, 0x007c, 0x6827, -+ 0x0093, 0x2009, 0x000b, 0x2001, 0x4800, 0x0078, 0x5293, 0x2d58, -+ 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x5139, 0x6807, -+ 0x0117, 0x6827, 0x0002, 0x1078, 0x5539, 0x6827, 0x0036, 0x6932, -+ 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x4751, 0x1078, 0x52d3, 0x2b68, -+ 0x1078, 0x4781, 0x0d7f, 0x1078, 0x4781, 0x2001, 0x0002, 0x007c, -+ 0x1078, 0x52d3, 0x2001, 0x0017, 0x1078, 0x54ae, 0x7097, 0x0000, -+ 0x6914, 0xd1fc, 0x0040, 0x5160, 0x2009, 0x6086, 0x0078, 0x5162, -+ 0x2009, 0x6046, 0x200b, 0x0006, 0x70a3, 0x0017, 0x2009, 0x0200, -+ 0x1078, 0x463f, 0x2001, 0x0001, 0x007c, 0x2200, 0x0079, 0x5170, -+ 0x5277, 0x52a8, 0x52a8, 0x52a8, 0x5191, 0x52ba, 0x5199, 0x52ba, -+ 0x52ba, 0x52bd, 0x52bd, 0x52c2, 0x52c2, 0x5189, 0x5189, 0x52a8, -+ 0x52a8, 0x52ba, 0x52a8, 0x5199, 0x5277, 0x5199, 0x5199, 0x5199, -+ 0x5199, 0x6827, 0x0084, 0x2009, 0x000b, 0x2001, 0x4300, 0x0078, -+ 0x52cc, 0x6827, 0x000d, 0x2009, 0x000b, 0x2001, 0x4300, 0x0078, -+ 0x52ab, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, 0x4300, 0x0078, -+ 0x5293, 0x2001, 0x0000, 0x007c, 0x2200, 0x0079, 0x51a7, 0x5277, -+ 0x520b, 0x520b, 0x520b, 0x520b, 0x51c0, 0x51c0, 0x51c0, 0x51c0, -+ 0x51c0, 0x51c0, 0x51c0, 0x51c0, 0x520b, 0x520b, 0x520b, 0x520b, -+ 0x51e8, 0x520b, 0x520b, 0x51e8, 0x51e8, 0x51e8, 0x51e8, 0x5277, -+ 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x51e8, 0x690c, -+ 0xa184, 0x000f, 0x0040, 0x52ba, 0x8001, 0x0040, 0x51d5, 0xa18c, -+ 0xfff0, 0xa105, 0x680e, 0x0078, 0x52ba, 0x70a8, 0xa080, 0x0085, -+ 0x781a, 0x6827, 0x000f, 0x1078, 0x4f59, 0x1078, 0x54ae, 0x7003, -+ 0x0000, 0x7043, 0x0000, 0x7053, 0x0000, 0x2001, 0x0002, 0x007c, -+ 0x6918, 0xa184, 0x000f, 0x0040, 0x52ba, 0x8001, 0x0040, 0x51f6, -+ 0xa18c, 0xfff0, 0xa105, 0x681a, 0x0078, 0x52ba, 0x70a8, 0xa080, -+ 0x0085, 0x781a, 0x6827, 0x008f, 0x2009, 0x000b, 0x2001, 0x4300, -+ 0x1078, 0x54df, 0x1078, 0x54ae, 0x1078, 0x552c, 0x7003, 0x0000, -+ 0x2001, 0x0002, 0x007c, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, -+ 0x4300, 0x0078, 0x5293, 0xa684, 0x0004, 0x00c0, 0x5227, 0x6804, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x5496, 0x1078, 0x52d3, -+ 0x6807, 0x0117, 0x1078, 0x4781, 0x2001, 0x0002, 0x007c, 0x6000, -+ 0xa084, 0x0004, 0x0040, 0x5496, 0x2d58, 0x6804, 0xa084, 0x00ff, -+ 0xa086, 0x0006, 0x00c0, 0x5236, 0x6807, 0x0117, 0x6827, 0x0002, -+ 0x1078, 0x5539, 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, -+ 0x1078, 0x4760, 0x1078, 0x52d3, 0x2b68, 0x1078, 0x4781, 0x0d7f, -+ 0x1078, 0x4781, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084, 0x0004, -+ 0x0040, 0x5496, 0x2d58, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0006, -+ 0x00c0, 0x525c, 0x6807, 0x0117, 0x6827, 0x0002, 0x2d58, 0x1078, -+ 0x5539, 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, -+ 0x4770, 0x1078, 0x52d3, 0x2b68, 0x1078, 0x4781, 0x0d7f, 0x1078, -+ 0x4781, 0x2001, 0x0002, 0x007c, 0x1078, 0x5496, 0x007c, 0x70a8, -+ 0xa080, 0x0085, 0x781a, 0x2001, 0x0001, 0x1078, 0x54ae, 0x1078, -+ 0x552c, 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078, 0x54df, -+ 0x1078, 0x552b, 0x1078, 0x5074, 0x1078, 0x4f59, 0x1078, 0x552c, -+ 0x2001, 0x0001, 0x007c, 0x1078, 0x54df, 0x1078, 0x552b, 0x1078, -+ 0x5074, 0x70a8, 0xa080, 0x0085, 0x781a, 0x2001, 0x0013, 0x1078, -+ 0x54ae, 0x1078, 0x552c, 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, -+ 0x1078, 0x5496, 0x007c, 0x1078, 0x54df, 0x1078, 0x552b, 0x1078, -+ 0x5074, 0x1078, 0x4f59, 0x1078, 0x552c, 0x1078, 0x5572, 0x2001, -+ 0x0001, 0x007c, 0x2001, 0x0003, 0x007c, 0x1078, 0x53ae, 0x2001, -+ 0x0000, 0x007c, 0x0c7e, 0x077e, 0x6f14, 0x1078, 0x42de, 0x077f, -+ 0x0c7f, 0x2001, 0x0000, 0x007c, 0x1078, 0x54df, 0x1078, 0x5496, -+ 0x2001, 0x0006, 0x007c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, -+ 0x0040, 0x52de, 0xa186, 0x000f, 0x00c0, 0x52e2, 0x1078, 0x552b, -+ 0x1078, 0x5074, 0x70a8, 0xa080, 0x0085, 0x781a, 0x1078, 0x552c, -+ 0x7003, 0x0000, 0x007c, 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, -+ 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x5496, 0x1079, 0x52f8, 0x007c, -+ 0x5496, 0x52fc, 0x5496, 0x53b5, 0xa282, 0x0003, 0x0040, 0x5303, -+ 0x1078, 0x5496, 0x007c, 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, -+ 0x00ff, 0x69b8, 0xa184, 0x0100, 0x0040, 0x5342, 0xa18c, 0xfeff, -+ 0x69ba, 0x78a0, 0xa005, 0x00c0, 0x5342, 0xa4a4, 0x00ff, 0x0040, -+ 0x5336, 0xa482, 0x000c, 0x0040, 0x531f, 0x00c8, 0x5329, 0x852b, -+ 0x852b, 0x1078, 0x4334, 0x0040, 0x5329, 0x1078, 0x4162, 0x0078, -+ 0x5338, 0x1078, 0x5474, 0x1078, 0x418d, 0x69b8, 0xa18d, 0x0100, -+ 0x69ba, 0xa6b5, 0x1000, 0x7e5a, 0x0078, 0x533b, 0x1078, 0x418d, -+ 0xa6b4, 0xefff, 0x7e5a, 0x70a8, 0xa080, 0x0097, 0x781a, 0x2001, -+ 0x0001, 0x007c, 0x0c7e, 0x1078, 0x539c, 0x6200, 0xd2e4, 0x0040, -+ 0x538b, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c, 0x0048, -+ 0x5355, 0x0040, 0x5355, 0x2011, 0x000c, 0x2400, 0xa202, 0x00c8, -+ 0x535a, 0x2220, 0x6208, 0xa294, 0x00ff, 0x2001, 0x6003, 0x2004, -+ 0xd0e4, 0x00c0, 0x536f, 0x78ec, 0xd0e4, 0x0040, 0x536f, 0xa282, -+ 0x000a, 0x00c8, 0x5375, 0x2011, 0x000a, 0x0078, 0x5375, 0xa282, -+ 0x000c, 0x00c8, 0x5375, 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, -+ 0x537a, 0x2228, 0x1078, 0x5477, 0x2500, 0xa086, 0x000a, 0x0040, -+ 0x5383, 0x852b, 0x852b, 0x1078, 0x4334, 0x0040, 0x538b, 0x1078, -+ 0x4169, 0x0078, 0x538f, 0x1078, 0x5474, 0x1078, 0x4194, 0xa6b5, -+ 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, 0xa080, 0x00c4, 0x781a, -+ 0x2001, 0x0004, 0x0c7f, 0x007c, 0x6814, 0x8007, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0x6914, 0xd1fc, 0x00c0, 0x53ab, 0xa0e0, -+ 0x64c0, 0x0078, 0x53ad, 0xa0e0, 0x6540, 0x007c, 0x0c7e, 0x1078, -+ 0x539c, 0x1078, 0x4194, 0x0c7f, 0x007c, 0xa282, 0x0002, 0x00c0, -+ 0x5496, 0x7aa8, 0xa294, 0x00ff, 0x69b8, 0xa184, 0x0200, 0x0040, -+ 0x53ec, 0xa18c, 0xfdff, 0x69ba, 0x78a0, 0xa005, 0x00c0, 0x53ec, -+ 0xa282, 0x0002, 0x00c8, 0x429c, 0x1078, 0x544c, 0x1078, 0x4227, -+ 0x1078, 0x418d, 0xa684, 0x0100, 0x0040, 0x53e2, 0x682c, 0xa084, -+ 0x0001, 0x0040, 0x53e2, 0xc6fc, 0x7888, 0xa084, 0x0040, 0x0040, -+ 0x53e2, 0xc6fd, 0xa6b5, 0x1000, 0x7e5a, 0x70a8, 0xa080, 0x0097, -+ 0x781a, 0x2001, 0x0001, 0x007c, 0x0c7e, 0x1078, 0x539c, 0xa284, -+ 0xfffe, 0x0040, 0x53f7, 0x2011, 0x0001, 0x0078, 0x53fb, 0xa284, -+ 0x0001, 0x0040, 0x5401, 0x6100, 0xd1ec, 0x00c0, 0x5401, 0x2011, -+ 0x0000, 0x1078, 0x543e, 0x1078, 0x422e, 0x1078, 0x4194, 0xa684, -+ 0x0100, 0x0040, 0x5417, 0x682c, 0xa084, 0x0001, 0x0040, 0x5417, -+ 0xc6fc, 0x7888, 0xa084, 0x0040, 0x0040, 0x5417, 0xc6fd, 0xa6b5, -+ 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, 0xa080, 0x00c4, 0x781a, -+ 0x2001, 0x0004, 0x0c7f, 0x007c, 0x0c7e, 0x2960, 0x6000, 0x2011, -+ 0x0001, 0xa084, 0x2000, 0x00c0, 0x542f, 0x2011, 0x0000, 0x78ab, -+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004, -+ 0x68b8, 0xa085, 0x0200, 0x68ba, 0x0c7f, 0x007c, 0x789b, 0x0018, -+ 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, -+ 0x0081, 0x78ab, 0x0004, 0x007c, 0x0c7e, 0x705c, 0x2060, 0x6000, -+ 0xa084, 0x1000, 0x00c0, 0x545a, 0x2029, 0x0032, 0x2021, 0x0000, -+ 0x0078, 0x546c, 0x6408, 0xa4ac, 0x00ff, 0xa582, 0x000c, 0x00c8, -+ 0x5463, 0x2029, 0x000c, 0x8427, 0xa4a4, 0x00ff, 0xa482, 0x000c, -+ 0x0048, 0x546c, 0x2021, 0x000c, 0x1078, 0x5477, 0x68b8, 0xa085, -+ 0x0100, 0x68ba, 0x0c7f, 0x007c, 0xa026, 0x2029, 0x0032, 0x789b, -+ 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, -+ 0x7caa, 0x789b, 0x0081, 0x78ab, 0x0005, 0x007c, 0x2001, 0x0003, -+ 0x1078, 0x54a6, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, -+ 0xa080, 0x00c4, 0x781a, 0x2001, 0x0005, 0x007c, 0x2001, 0x0007, -+ 0x1078, 0x54a6, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, -+ 0xa080, 0x00c4, 0x781a, 0x2001, 0x0004, 0x007c, 0x789b, 0x0018, -+ 0x78aa, 0x789b, 0x0081, 0x78ab, 0x0001, 0x007c, 0x6904, 0xa18c, -+ 0x00ff, 0xa196, 0x0007, 0x0040, 0x54bc, 0xa196, 0x000f, 0x0040, -+ 0x54bc, 0x1078, 0x1e55, 0x007c, 0x6924, 0xa194, 0x003f, 0x00c0, -+ 0x54c5, 0xa18c, 0xffc0, 0xa105, 0x6826, 0x1078, 0x4781, 0x691c, -+ 0xa184, 0x0100, 0x0040, 0x54d3, 0x6914, 0x2100, 0x1078, 0x47fa, -+ 0x6204, 0x8210, 0x6206, 0x007c, 0x692c, 0x6834, 0x682e, 0xa112, -+ 0x6930, 0x6838, 0x6832, 0xa11b, 0xa200, 0xa301, 0x007c, 0x0c7e, -+ 0xade0, 0x0018, 0x6003, 0x0070, 0x6106, 0x600b, 0x0000, 0x600f, -+ 0x0a00, 0x6013, 0x0000, 0x6017, 0x0000, 0x8007, 0x601a, 0x601f, -+ 0x0000, 0x6023, 0x0000, 0x0c7f, 0x6824, 0xa085, 0x0080, 0x6826, -+ 0x007c, 0x157e, 0x137e, 0x147e, 0x2098, 0xaf80, 0x002d, 0x20a0, -+ 0x81ac, 0x0040, 0x5504, 0x53a6, 0xa184, 0x0001, 0x0040, 0x550a, -+ 0x3304, 0x78be, 0x147f, 0x137f, 0x157f, 0x007c, 0x70a4, 0x0e7e, -+ 0x007e, 0x007f, 0x0e7f, 0xa005, 0x6918, 0x017e, 0x6914, 0x017e, -+ 0x6928, 0x017e, 0x017f, 0x017f, 0x017f, 0x10c0, 0x2bfa, 0x70a7, -+ 0x8000, 0x6814, 0xd0fc, 0x0040, 0x5528, 0xc185, 0x0078, 0x5529, -+ 0xc184, 0x0078, 0x591e, 0x007c, 0x71a4, 0x81ff, 0x0040, 0x5538, -+ 0x7848, 0xa085, 0x0008, 0x784a, 0x70a7, 0x0000, 0x1078, 0x55ac, -+ 0x007c, 0x0c7e, 0x0d7e, 0x1078, 0x1e32, 0x0c7f, 0x157e, 0x137e, -+ 0x147e, 0x2da0, 0x2c98, 0x20a9, 0x0037, 0x53a3, 0x147f, 0x137f, -+ 0x157f, 0x6807, 0x010d, 0x680b, 0x0000, 0x701c, 0x8007, 0x681a, -+ 0x6823, 0x0000, 0x681f, 0x0000, 0x689f, 0x0000, 0x0c7f, 0x007c, -+ 0x70a8, 0xa080, 0x0097, 0x781a, 0x0078, 0x2c5e, 0x70a8, 0xa080, -+ 0x0088, 0x781a, 0x0078, 0x2c5e, 0x783b, 0x1700, 0x70a8, 0xa080, -+ 0x00c4, 0x781a, 0x0078, 0x2c5e, 0x70a8, 0xa080, 0x00cd, 0x781a, -+ 0x0078, 0x2c5e, 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, -+ 0x557f, 0xa196, 0x000f, 0x0040, 0x557f, 0x6807, 0x0117, 0x6824, -+ 0xa084, 0x00ff, 0xa085, 0x0200, 0x6826, 0x8007, 0x789b, 0x000e, -+ 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, 0x2031, 0x0400, 0x6eb6, -+ 0x7e5a, 0x71a8, 0xa188, 0x0097, 0x791a, 0x007c, 0x1078, 0x552c, -+ 0x7848, 0xa085, 0x000c, 0x784a, 0x70a8, 0xa080, 0x0085, 0x781a, -+ 0x2009, 0x000b, 0x2001, 0x4400, 0x1078, 0x54df, 0x2001, 0x0013, -+ 0x1078, 0x54ae, 0x0078, 0x4856, 0x127e, 0x70f0, 0xa084, 0x4600, -+ 0x8004, 0x2090, 0x7204, 0x700c, 0xa215, 0x7008, 0xc09c, 0xa205, -+ 0x00c0, 0x55c1, 0x7007, 0x0004, 0x7003, 0x0000, 0x127f, 0x2000, -+ 0x007c, 0x7000, 0xd084, 0x0040, 0x5600, 0x7108, 0x0005, 0x7008, -+ 0xa106, 0x00c0, 0x55c5, 0xa184, 0x0003, 0x0040, 0x562c, 0xa184, -+ 0x01e0, 0x00c0, 0x562c, 0xd1f4, 0x00c0, 0x55c5, 0xa184, 0x3000, -+ 0xa086, 0x1000, 0x0040, 0x55c5, 0x2011, 0x0180, 0x710c, 0x8211, -+ 0x0040, 0x55ea, 0x7008, 0xd0f4, 0x00c0, 0x55c5, 0x700c, 0xa106, -+ 0x0040, 0x55df, 0x7007, 0x0012, 0x7108, 0x0005, 0x7008, 0xa106, -+ 0x00c0, 0x55ec, 0xa184, 0x0003, 0x0040, 0x562c, 0xd194, 0x0040, -+ 0x55ec, 0xd1f4, 0x0040, 0x562c, 0x7007, 0x0002, 0x0078, 0x55c5, -+ 0x7108, 0xd1fc, 0x0040, 0x560b, 0x1078, 0x5792, 0x8aff, 0x0040, -+ 0x55b2, 0x0078, 0x5600, 0x700c, 0xa08c, 0x03ff, 0x0040, 0x5631, -+ 0x7004, 0xd084, 0x0040, 0x5623, 0x7014, 0xa005, 0x00c0, 0x561f, -+ 0x7010, 0xa005, 0x0040, 0x5623, 0xa102, 0x00c8, 0x5600, 0x7007, -+ 0x0010, 0x0078, 0x562c, 0x8aff, 0x0040, 0x5631, 0x1078, 0x5a15, -+ 0x00c0, 0x5626, 0x0040, 0x5600, 0x1078, 0x56da, 0x127f, 0x2000, -+ 0x007c, 0x7204, 0x700c, 0xa215, 0x7108, 0xc19c, 0x8103, 0x00c8, -+ 0x5640, 0xa205, 0x00c0, 0x562c, 0x7007, 0x0002, 0x0078, 0x5631, -+ 0xa205, 0x00c0, 0x562c, 0x7003, 0x0000, 0x7007, 0x0004, 0x127f, -+ 0x2000, 0x007c, 0x017e, 0x6104, 0xa18c, 0x00ff, 0xa186, 0x0007, -+ 0x0040, 0x5656, 0xa18e, 0x000f, 0x00c0, 0x5659, 0x6040, 0x0078, -+ 0x565a, 0x6428, 0x017f, 0x84ff, 0x0040, 0x5684, 0x2c70, 0x7004, -+ 0xa0bc, 0x000f, 0xa7b8, 0x5694, 0x273c, 0x87fb, 0x00c0, 0x5672, -+ 0x0048, 0x566c, 0x1078, 0x2bfa, 0x609c, 0xa075, 0x0040, 0x5684, -+ 0x0078, 0x565f, 0x2704, 0xae68, 0x6808, 0xa630, 0x680c, 0xa529, -+ 0x8421, 0x0040, 0x5684, 0x8738, 0x2704, 0xa005, 0x00c0, 0x5673, -+ 0x709c, 0xa075, 0x00c0, 0x565f, 0x007c, 0x0000, 0x0005, 0x0009, -+ 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, 0x0009, -+ 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x5689, 0x5686, 0x0000, -+ 0x0000, 0x8000, 0x0000, 0x5689, 0x0000, 0x5691, 0x568e, 0x0000, -+ 0x0000, 0x0000, 0x0000, 0x5691, 0x0000, 0x568c, 0x568c, 0x0000, -+ 0x0000, 0x8000, 0x0000, 0x568c, 0x0000, 0x5692, 0x5692, 0x0000, -+ 0x0000, 0x0000, 0x0000, 0x5692, 0x2079, 0x6000, 0x2071, 0x0010, -+ 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x7808, 0xd0ec, -+ 0x0040, 0x56c8, 0x2009, 0x0001, 0x2071, 0x0020, 0x0078, 0x56cc, -+ 0x2009, 0x0002, 0x2071, 0x0050, 0x7007, 0x000a, 0x7007, 0x0002, -+ 0x7003, 0x0000, 0x8109, 0x0040, 0x56d9, 0x2071, 0x0020, 0x0078, -+ 0x56cc, 0x007c, 0x2019, 0x0000, 0x7004, 0x8004, 0x00c8, 0x5761, -+ 0x7108, 0x7008, 0xa106, 0x00c0, 0x56e0, 0xa184, 0x01e0, 0x0040, -+ 0x56ed, 0x1078, 0x57d8, 0x0078, 0x5789, 0x7007, 0x0012, 0x7108, -+ 0x7008, 0xa106, 0x00c0, 0x56ef, 0xa184, 0x01e0, 0x0040, 0x56fa, -+ 0x1078, 0x57d8, 0x7808, 0xd0ec, 0x0040, 0x5714, 0x2001, 0x04fd, -+ 0x2004, 0xa086, 0x0003, 0x00c0, 0x5718, 0xa184, 0x4000, 0x0040, -+ 0x571c, 0xa382, 0x0003, 0x00c8, 0x571c, 0xa184, 0x0004, 0x0040, -+ 0x56ef, 0x8318, 0x0078, 0x56ef, 0x780c, 0xd0ec, 0x00c0, 0x571c, -+ 0xa184, 0x4000, 0x00c0, 0x56ef, 0xa19c, 0x300c, 0xa386, 0x2004, -+ 0x0040, 0x5739, 0xa386, 0x0008, 0x0040, 0x5744, 0x7004, 0xd084, -+ 0x00c0, 0x5735, 0x7108, 0x7008, 0xa106, 0x00c0, 0x572a, 0xa184, -+ 0x0003, 0x0040, 0x5735, 0x0078, 0x57d8, 0xa386, 0x200c, 0x00c0, -+ 0x56ef, 0x7200, 0x8204, 0x0048, 0x5744, 0x730c, 0xa384, 0x03ff, -+ 0x0040, 0x5744, 0x1078, 0x2bfa, 0x7108, 0x7008, 0xa106, 0x00c0, -+ 0x5744, 0xa184, 0x01e0, 0x0040, 0x5751, 0x1078, 0x57d8, 0x0078, -+ 0x5789, 0x7007, 0x0012, 0x7000, 0xd084, 0x00c0, 0x5761, 0x7310, -+ 0x7014, 0xa305, 0x0040, 0x5761, 0x710c, 0xa184, 0x03ff, 0x00c0, -+ 0x56da, 0x7108, 0x7008, 0xa106, 0x00c0, 0x5761, 0xa184, 0x01e0, -+ 0x0040, 0x576e, 0x1078, 0x57d8, 0x0078, 0x5789, 0x7007, 0x0012, -+ 0x7007, 0x0008, 0x7004, 0xd09c, 0x00c0, 0x5772, 0x7108, 0x7008, -+ 0xa106, 0x00c0, 0x5776, 0xa184, 0x01e0, 0x0040, 0x5783, 0x1078, -+ 0x57d8, 0x0078, 0x5789, 0x7007, 0x0012, 0x7108, 0xd1fc, 0x00c0, -+ 0x5776, 0x7003, 0x0000, 0x007c, 0x157e, 0x7108, 0x1078, 0x5792, -+ 0x157f, 0x007c, 0x7204, 0x7500, 0xa184, 0x01e0, 0x00c0, 0x57d8, -+ 0x7108, 0xa184, 0x01e0, 0x00c0, 0x57d8, 0xa184, 0x0007, 0x0079, -+ 0x57a1, 0x57ab, 0x57bc, 0x57a9, 0x57bc, 0x57a9, 0x582f, 0x57a9, -+ 0x582d, 0x1078, 0x2bfa, 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, -+ 0x8aff, 0x00c0, 0x57b7, 0x2049, 0x0000, 0x0078, 0x57bb, 0x1078, -+ 0x5a15, 0x00c0, 0x57b7, 0x007c, 0x7004, 0xa084, 0x0010, 0xc08d, -+ 0x7006, 0x7004, 0xd084, 0x00c0, 0x57d0, 0x7108, 0x7008, 0xa106, -+ 0x00c0, 0x57c5, 0xa184, 0x0003, 0x0040, 0x57d0, 0x0078, 0x57d8, -+ 0x8aff, 0x0040, 0x57d7, 0x1078, 0x5a15, 0x00c0, 0x57d3, 0x007c, -+ 0x7007, 0x0012, 0x7108, 0x00e0, 0x57db, 0x2091, 0x6000, 0x00e0, -+ 0x57df, 0x2091, 0x6000, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, -+ 0xd09c, 0x00c0, 0x57e7, 0x7007, 0x0012, 0x7108, 0xd1fc, 0x00c0, -+ 0x57eb, 0x7003, 0x0000, 0x7000, 0xa005, 0x00c0, 0x57ff, 0x7004, -+ 0xa005, 0x00c0, 0x57ff, 0x700c, 0xa005, 0x0040, 0x5801, 0x0078, -+ 0x57e3, 0x2049, 0x0000, 0xb284, 0x0100, 0x0040, 0x580b, 0x2001, -+ 0x0000, 0x0078, 0x580d, 0x2001, 0x0001, 0x1078, 0x43c9, 0xb284, -+ 0x0100, 0x0040, 0x5817, 0x2001, 0x6064, 0x0078, 0x5819, 0x2001, -+ 0x60a4, 0x2004, 0xa084, 0x8000, 0x0040, 0x5826, 0x6824, 0xa005, -+ 0x00c0, 0x5828, 0x6827, 0x0004, 0x0078, 0x5828, 0x681b, 0x0002, -+ 0x007c, 0x1078, 0x2bfa, 0x1078, 0x2bfa, 0x1078, 0x5877, 0x7210, -+ 0x7114, 0x700c, 0xa09c, 0x03ff, 0x2800, 0xa300, 0xa211, 0xa189, -+ 0x0000, 0x1078, 0x5877, 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, -+ 0xa322, 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040, 0x5852, -+ 0x00c8, 0x5852, 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, -+ 0x0078, 0x5839, 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, -+ 0x0040, 0x585e, 0xa7ba, 0x568e, 0x0078, 0x5860, 0xa7ba, 0x5686, -+ 0x007f, 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7108, -+ 0x7008, 0xa106, 0x00c0, 0x5867, 0xa184, 0x01e0, 0x0040, 0x5872, -+ 0x1078, 0x57d8, 0x7007, 0x0012, 0x1078, 0x56da, 0x007c, 0x8a50, -+ 0x8739, 0x2704, 0xa004, 0x00c0, 0x588b, 0x6000, 0xa064, 0x00c0, -+ 0x5882, 0x2d60, 0x6004, 0xa084, 0x000f, 0xa080, 0x56a4, 0x203c, -+ 0x87fb, 0x1040, 0x2bfa, 0x007c, 0x127e, 0x0d7e, 0x70f0, 0xa084, -+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x6884, 0x2060, 0x6888, 0x6b8c, -+ 0x6c90, 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, 0x6804, -+ 0xa084, 0x0008, 0x007f, 0x0040, 0x58a9, 0xa0b8, 0x568e, 0x0078, -+ 0x58ab, 0xa0b8, 0x5686, 0xb284, 0x0100, 0x0040, 0x58b2, 0x7e18, -+ 0x0078, 0x58b3, 0x7e1c, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, -+ 0xa186, 0x0007, 0x0040, 0x58c0, 0xa18e, 0x000f, 0x00c0, 0x58c8, -+ 0x681c, 0xa084, 0x0040, 0x0040, 0x58cd, 0xc685, 0x0078, 0x58cd, -+ 0x681c, 0xd0b4, 0x0040, 0x58cd, 0xc685, 0x700c, 0xa084, 0x03ff, -+ 0x0040, 0x58d8, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, 0x58d4, -+ 0x2400, 0xa305, 0x00c0, 0x58de, 0x0078, 0x5904, 0x2c58, 0x2704, -+ 0x6104, 0xac60, 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, -+ 0xa184, 0x0008, 0x0040, 0x58f4, 0x6010, 0xa081, 0x0000, 0x7022, -+ 0x6014, 0xa081, 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, -+ 0x620c, 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, -+ 0x1078, 0x5a43, 0x0078, 0x5906, 0x1078, 0x5a15, 0x00c0, 0x5904, -+ 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x70f0, 0xa084, 0x4600, -+ 0x8004, 0x2090, 0x0d7f, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, -+ 0x5915, 0x7003, 0x0008, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, -+ 0x70f0, 0xa084, 0x4600, 0x8004, 0x2090, 0x0d7f, 0x700c, 0xa084, -+ 0x03ff, 0x0040, 0x5931, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, -+ 0x592d, 0x6814, 0xd0fc, 0x0040, 0x5938, 0x7e1c, 0x0078, 0x5939, -+ 0x7e18, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, -+ 0x0040, 0x5946, 0xa18e, 0x000f, 0x00c0, 0x5950, 0x681c, 0xa084, -+ 0x0040, 0x0040, 0x594c, 0xc685, 0x6840, 0x2050, 0x0078, 0x5957, -+ 0x681c, 0xd0ac, 0x00c0, 0x5955, 0xc685, 0x6828, 0x2050, 0x2d60, -+ 0x6004, 0xa0bc, 0x000f, 0xa7b8, 0x5694, 0x273c, 0x87fb, 0x00c0, -+ 0x596b, 0x0048, 0x5965, 0x1078, 0x2bfa, 0x689c, 0xa065, 0x0040, -+ 0x596f, 0x0078, 0x5958, 0x1078, 0x5a15, 0x00c0, 0x596b, 0x127f, -+ 0x2000, 0x007c, 0x127e, 0x007e, 0x017e, 0x0d7e, 0x70f0, 0xa084, -+ 0x4600, 0x8004, 0x2090, 0xb284, 0x0100, 0x0040, 0x5982, 0x7e18, -+ 0x0078, 0x5983, 0x7e1c, 0x0d7f, 0x037f, 0x047f, 0xa6b5, 0x000c, -+ 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x5993, 0xa18e, -+ 0x000f, 0x00c0, 0x599b, 0x681c, 0xa084, 0x0040, 0x0040, 0x59a0, -+ 0xc685, 0x0078, 0x59a0, 0x681c, 0xd0b4, 0x0040, 0x59a0, 0xc685, -+ 0x2049, 0x5972, 0x017e, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, -+ 0x0040, 0x59ae, 0xa18e, 0x000f, 0x00c0, 0x59b1, 0x6840, 0x0078, -+ 0x59b2, 0x6828, 0x017f, 0xa055, 0x0d7e, 0x0040, 0x5a11, 0x2d70, -+ 0x2e60, 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x5694, 0x273c, 0x87fb, -+ 0x00c0, 0x59cd, 0x0048, 0x59c6, 0x1078, 0x2bfa, 0x709c, 0xa075, -+ 0x2060, 0x0040, 0x5a11, 0x0078, 0x59b9, 0x2704, 0xae68, 0x6808, -+ 0xa422, 0x680c, 0xa31b, 0x0048, 0x59e6, 0x8a51, 0x00c0, 0x59da, -+ 0x1078, 0x2bfa, 0x8738, 0x2704, 0xa005, 0x00c0, 0x59ce, 0x709c, -+ 0xa075, 0x2060, 0x0040, 0x5a11, 0x0078, 0x59b9, 0x8422, 0x8420, -+ 0x831a, 0xa399, 0x0000, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, -+ 0xa11b, 0x00c8, 0x59f5, 0x1078, 0x2bfa, 0x017e, 0x3208, 0xa18c, -+ 0x0100, 0x0040, 0x5a0b, 0x007e, 0x2001, 0x6002, 0x2004, 0xd0ec, -+ 0x007f, 0x0040, 0x5a07, 0x2071, 0x0020, 0x0078, 0x5a0d, 0x2071, -+ 0x0050, 0x0078, 0x5a0d, 0x2071, 0x0020, 0x017f, 0x0d7f, 0x0078, -+ 0x58cd, 0x0d7f, 0x127f, 0x2000, 0x007c, 0x7008, 0x007e, 0xa084, -+ 0x01e0, 0x007f, 0x0040, 0x5a1e, 0xa006, 0x007c, 0xa084, 0x0003, -+ 0xa086, 0x0003, 0x00c0, 0x5a25, 0x007c, 0x2704, 0xac08, 0x2104, -+ 0x701a, 0x8108, 0x2104, 0x701e, 0x8108, 0x2104, 0x7012, 0x8108, -+ 0x2104, 0x7016, 0x6004, 0xa084, 0x0008, 0x0040, 0x5a3d, 0x8108, -+ 0x2104, 0x7022, 0x8108, 0x2104, 0x7026, 0x7602, 0x7004, 0xa084, -+ 0x0010, 0xc085, 0x7006, 0x8738, 0x2704, 0xa005, 0x00c0, 0x5a56, -+ 0x609c, 0xa005, 0x0040, 0x5a68, 0x2060, 0x6004, 0xa084, 0x000f, -+ 0xa080, 0x5694, 0x203c, 0x87fb, 0x1040, 0x2bfa, 0x8a51, 0x0040, -+ 0x5a67, 0x7008, 0x007e, 0xa084, 0x01e0, 0x007f, 0x0040, 0x5a63, -+ 0xa006, 0x0078, 0x5a68, 0xa084, 0x0003, 0xa086, 0x0003, 0x007c, -+ 0x2051, 0x0000, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x70f0, 0xa084, -+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x087f, 0x7108, 0xa184, 0x0003, -+ 0x00c0, 0x5a90, 0x017e, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, -+ 0x0040, 0x5a86, 0xa18e, 0x000f, 0x00c0, 0x5a89, 0x6840, 0x0078, -+ 0x5a8a, 0x6828, 0x017f, 0xa005, 0x0040, 0x5aa0, 0x0078, 0x55c1, -+ 0x7108, 0xd1fc, 0x0040, 0x5a98, 0x1078, 0x5792, 0x0078, 0x5a75, -+ 0x7007, 0x0010, 0x7108, 0xd1fc, 0x0040, 0x5a9a, 0x1078, 0x5792, -+ 0x7008, 0xa086, 0x0008, 0x00c0, 0x5a75, 0x7000, 0xa005, 0x00c0, -+ 0x5a75, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, -+ 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, 0x70f0, 0xa084, -+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x2049, 0x5ab0, 0x69b0, 0xad80, -+ 0x0011, 0xa100, 0x20a0, 0xb284, 0x0100, 0x0040, 0x5ad5, 0x2001, -+ 0x6002, 0x2004, 0xd0ec, 0x0040, 0x5ad1, 0x2099, 0x0031, 0x0078, -+ 0x5ad7, 0x2099, 0x0032, 0x0078, 0x5ad7, 0x2099, 0x0031, 0x700c, -+ 0xa084, 0x03ff, 0x0040, 0x5af5, 0x6928, 0xa100, 0x682a, 0x7007, -+ 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0040, 0x5aea, 0x8000, -+ 0x80ac, 0x53a5, 0x700c, 0xa084, 0x03ff, 0x0040, 0x5af5, 0x7007, -+ 0x0004, 0x7004, 0xd094, 0x00c0, 0x5af1, 0x0c7f, 0x2049, 0x0000, -+ 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f, 0x2000, 0x007c, -+ 0x2091, 0x6000, 0x2091, 0x8000, 0x78b0, 0xa005, 0x00c0, 0x5b17, -+ 0x7970, 0x70d0, 0xa106, 0x00c0, 0x5b17, 0x7814, 0xa005, 0x0040, -+ 0x5b17, 0x7817, 0x0000, 0x0068, 0x5b17, 0x2091, 0x4080, 0x7828, -+ 0x8001, 0x782a, 0x00c0, 0x5b9f, 0x782c, 0x782a, 0x7808, 0xd0ec, -+ 0x00c0, 0x5b98, 0x2061, 0x85c0, 0x2069, 0x6080, 0xc7fd, 0x68ec, -+ 0xa005, 0x0040, 0x5b32, 0x8001, 0x68ee, 0xa005, 0x00c0, 0x5b32, -+ 0x1078, 0x5d6b, 0x6800, 0xa084, 0x000f, 0x0040, 0x5b47, 0xa086, -+ 0x0001, 0x0040, 0x5b47, 0x6840, 0xa00d, 0x0040, 0x5b47, 0x2104, -+ 0xa005, 0x0040, 0x5b47, 0x8001, 0x200a, 0x0040, 0x5cc9, 0x6810, -+ 0xa005, 0x0040, 0x5b6b, 0x8001, 0x6812, 0x00c0, 0x5b6b, 0x68c3, -+ 0x0001, 0xd7fc, 0x00c0, 0x5b60, 0x7808, 0xd0ec, 0x0040, 0x5b5c, -+ 0x2009, 0x0102, 0x0078, 0x5b62, 0x2009, 0x0202, 0x0078, 0x5b62, -+ 0x2009, 0x0102, 0x684c, 0xc08d, 0x200a, 0x6868, 0xa005, 0x0040, -+ 0x5b6b, 0x1078, 0x2852, 0x6884, 0xa005, 0x0040, 0x5b78, 0x8001, -+ 0x6886, 0x00c0, 0x5b78, 0x686b, 0x0000, 0x68f0, 0xc0dd, 0x68f2, -+ 0x68f0, 0xd0fc, 0x0040, 0x5b95, 0xc0fc, 0x68f2, 0x20a9, 0x0200, -+ 0x6034, 0xa005, 0x0040, 0x5b91, 0x8001, 0x6036, 0x68f0, 0xc0fd, -+ 0x68f2, 0x00c0, 0x5b91, 0x6010, 0xa005, 0x0040, 0x5b91, 0x1078, -+ 0x2852, 0xace0, 0x0010, 0x00f0, 0x5b80, 0xd7fc, 0x0040, 0x5b9f, -+ 0x2061, 0x65c0, 0x2069, 0x6040, 0xc7fc, 0x0078, 0x5b27, 0x1078, -+ 0x5bc8, 0x7830, 0x8001, 0x7832, 0x00c0, 0x5bc1, 0x7834, 0x7832, -+ 0x2061, 0x65c0, 0x2069, 0x6040, 0xc7fc, 0x6808, 0xa005, 0x0040, -+ 0x5bb3, 0x1078, 0x5c32, 0xd7fc, 0x00c0, 0x5bc1, 0x7808, 0xd0ec, -+ 0x00c0, 0x5bc1, 0x2061, 0x85c0, 0x2069, 0x6080, 0xc7fd, 0x0078, -+ 0x5bad, 0x780c, 0xd0e4, 0x00c0, 0x5bc5, 0x2091, 0x8001, 0x007c, -+ 0x7838, 0x8001, 0x783a, 0x00c0, 0x5c31, 0x783c, 0x783a, 0x2069, -+ 0x6040, 0xc7fc, 0x7808, 0x2079, 0x0200, 0xd0ec, 0x0040, 0x5bda, -+ 0x2079, 0x0100, 0x68f8, 0xa005, 0x0040, 0x5be6, 0x7de0, 0xa504, -+ 0x00c0, 0x5be6, 0x68fa, 0x68f0, 0xc0bc, 0x68f2, 0x2079, 0x6000, -+ 0x680c, 0xa005, 0x00c0, 0x5bee, 0x2001, 0x0101, 0x8001, 0x680e, -+ 0xd7fc, 0x00c0, 0x5bf7, 0xa080, 0xa5c0, 0x0078, 0x5bf9, 0xa080, -+ 0xa6d0, 0x2040, 0x2004, 0xa065, 0x0040, 0x5c23, 0x6024, 0xa005, -+ 0x0040, 0x5c1f, 0x8001, 0x6026, 0x00c0, 0x5c1f, 0x6800, 0xa005, -+ 0x0040, 0x5c12, 0x6850, 0xac06, 0x00c0, 0x5c12, 0x1078, 0x5cc9, -+ 0x0078, 0x5c23, 0x6868, 0xa005, 0x0040, 0x5c1a, 0x6027, 0x0001, -+ 0x0078, 0x5c1f, 0x1078, 0x5c7c, 0x2804, 0x0078, 0x5bfb, 0x6000, -+ 0x2c40, 0x0078, 0x5bfb, 0xd7fc, 0x00c0, 0x5c31, 0x7808, 0xd0ec, -+ 0x00c0, 0x5c31, 0x2069, 0x6080, 0xc7fd, 0x2079, 0x0100, 0x0078, -+ 0x5bda, 0x007c, 0xa00e, 0x20a9, 0x0200, 0x6008, 0xd09c, 0x0040, -+ 0x5c6b, 0x6024, 0xa005, 0x0040, 0x5c41, 0x8001, 0x6026, 0x0078, -+ 0x5c69, 0x6008, 0xc09c, 0xd084, 0x00c0, 0x5c49, 0xd0ac, 0x0040, -+ 0x5c63, 0x600a, 0x6004, 0xa005, 0x0040, 0x5c6b, 0x0d7e, 0x0c7e, -+ 0x017e, 0x2068, 0x6010, 0x8001, 0x6012, 0x1078, 0x3fd3, 0x2d00, -+ 0x2c68, 0x2060, 0x1078, 0x1ef5, 0x1078, 0x2240, 0x017f, 0x0c7f, -+ 0x0d7f, 0x0078, 0x5c6b, 0xc0bd, 0x600a, 0xa18d, 0x0001, 0x0078, -+ 0x5c6b, 0xa18d, 0x0100, 0xace0, 0x0010, 0x00f0, 0x5c35, 0xa184, -+ 0x0001, 0x0040, 0x5c7a, 0xa18c, 0xfffe, 0x690a, 0x1078, 0x2852, -+ 0x0078, 0x5c7b, 0x690a, 0x007c, 0x2c00, 0x6882, 0x6714, 0x6f7a, -+ 0x6017, 0x0000, 0x602b, 0x0000, 0x601b, 0x0006, 0x60b4, 0xa084, -+ 0x5f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0060, 0x6022, -+ 0x6000, 0x2042, 0x6860, 0xac06, 0x00c0, 0x5c98, 0x2800, 0x6862, -+ 0x1078, 0x1e6e, 0x6818, 0xa005, 0x0040, 0x5cc8, 0x8001, 0x681a, -+ 0x681a, 0x6808, 0xc0a4, 0x680a, 0x6810, 0x8001, 0x0050, 0x5cc8, -+ 0x6812, 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x1078, 0x2251, -+ 0xd7fc, 0x00c0, 0x5cb7, 0x2069, 0x6040, 0x0078, 0x5cb9, 0x2069, -+ 0x6080, 0x690c, 0xa184, 0x0100, 0x2001, 0x0006, 0x00c0, 0x5cc5, -+ 0x6883, 0x0000, 0x697e, 0x2001, 0x0004, 0x2708, 0x1078, 0x2845, -+ 0x007c, 0x0d7e, 0x0e7e, 0x2d70, 0xd7fc, 0x00c0, 0x5cdb, 0x7808, -+ 0xd0ec, 0x0040, 0x5cd7, 0x2069, 0x0100, 0x0078, 0x5cdd, 0x2069, -+ 0x0200, 0x0078, 0x5cdd, 0x2069, 0x0100, 0x7000, 0xa084, 0x000f, -+ 0x0040, 0x5d27, 0xa086, 0x0007, 0x00c0, 0x5cef, 0x0f7e, 0x2d78, -+ 0x7094, 0x2068, 0x1078, 0x4694, 0x0f7f, 0x0078, 0x5d27, 0x7050, -+ 0x2060, 0x1078, 0x2b67, 0x601b, 0x0006, 0x6858, 0xa084, 0x5f00, -+ 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f, -+ 0x0000, 0x6033, 0x0000, 0x6808, 0xa084, 0xfffd, 0x680a, 0x6830, -+ 0xd0b4, 0x0040, 0x5d23, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, -+ 0xd094, 0x0040, 0x5d15, 0x00f0, 0x5d0f, 0x684b, 0x0009, 0x20a9, -+ 0x0014, 0x6848, 0xd084, 0x0040, 0x5d1f, 0x00f0, 0x5d19, 0x20a9, -+ 0x00fa, 0x00f0, 0x5d21, 0x681b, 0x0048, 0x706b, 0x0007, 0x0e7f, -+ 0x0d7f, 0x007c, 0x2079, 0x6000, 0x1078, 0x5d5e, 0x1078, 0x5d44, -+ 0x1078, 0x5d51, 0x2009, 0x0002, 0x2069, 0x6080, 0x680b, 0x0000, -+ 0x680f, 0x0000, 0x6813, 0x0000, 0x8109, 0x0040, 0x5d43, 0x2069, -+ 0x6040, 0x0078, 0x5d36, 0x007c, 0x7808, 0xd0ec, 0x0040, 0x5d4c, -+ 0x2019, 0x00cc, 0x0078, 0x5d4e, 0x2019, 0x007b, 0x7b32, 0x7b36, -+ 0x007c, 0x780c, 0xd0e4, 0x00c0, 0x5d59, 0x2019, 0x0040, 0x0078, -+ 0x5d5b, 0x2019, 0x0026, 0x7b3a, 0x7b3e, 0x007c, 0x780c, 0xd0e4, -+ 0x00c0, 0x5d66, 0x2019, 0x3f94, 0x0078, 0x5d68, 0x2019, 0x2626, -+ 0x7b2a, 0x7b2e, 0x007c, 0x6a54, 0xa285, 0x0000, 0x0040, 0x5d93, -+ 0x6958, 0x6bdc, 0xa300, 0x0c7e, 0x2164, 0x6304, 0x83ff, 0x00c0, -+ 0x5d83, 0x8211, 0x0040, 0x5d87, 0x8108, 0xa11a, 0x0048, 0x5d74, -+ 0x69dc, 0x0078, 0x5d74, 0x68ef, 0x000a, 0x0c7f, 0x007c, 0x6954, -+ 0x6adc, 0x2264, 0x6008, 0xc0b5, 0x600a, 0x8210, 0x8109, 0x00c0, -+ 0x5d89, 0x6956, 0x0c7f, 0x007c, 0x00e0, 0x5d94, 0x2091, 0x6000, -+ 0x00e0, 0x5d98, 0x2091, 0x6000, 0x70ec, 0xd0dc, 0x00c0, 0x5da5, -+ 0xd0d4, 0x0040, 0x5dce, 0x0078, 0x5dd1, 0x2008, 0x7808, 0xd0ec, -+ 0x0040, 0x5db8, 0xd1c4, 0x00c0, 0x5df0, 0x780c, 0xc0c5, 0x780e, -+ 0x7808, 0xc0f5, 0x780a, 0xd0ec, 0x0040, 0x5dec, 0x0078, 0x5de8, -+ 0xae8e, 0x0100, 0x0040, 0x5dc5, 0x780c, 0xc0f5, 0xc0c5, 0x780e, -+ 0xd0d4, 0x00c0, 0x5dec, 0x0078, 0x5de8, 0x780c, 0xc0fd, 0xc0c5, -+ 0x780e, 0xd0d4, 0x00c0, 0x5dec, 0x0078, 0x5de8, 0xd0e4, 0x0040, -+ 0x5dee, 0x00e0, 0x5dd1, 0x2091, 0x6000, 0x2009, 0x000c, 0x00e0, -+ 0x5dd7, 0x2091, 0x6000, 0x8109, 0x00c0, 0x5dd7, 0x70e4, 0xa084, -+ 0x01ff, 0xa086, 0x01ff, 0x00c0, 0x5de8, 0x70ec, 0x0078, 0x5da5, -+ 0x7804, 0xd08c, 0x0040, 0x5dee, 0x681b, 0x000c, 0x70a0, 0x70a2, -+ 0x007c, 0x0020, 0x002b, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0014, 0x0014, 0x9849, 0x0014, -+ 0x0014, 0x98ec, 0x98d6, 0x0014, 0x0014, 0x0014, 0x0080, 0x0140, -+ 0x0000, 0x0201, 0x0604, 0x0c08, 0x2120, 0x4022, 0xf880, 0x0018, -+ 0x300b, 0xa201, 0x0014, 0xa200, 0x0014, 0xa200, 0x0214, 0xa202, -+ 0x3806, 0x7102, 0x805f, 0x9481, 0x8839, 0x20c3, 0x0864, 0xa834, -+ 0x28c1, 0x9cb9, 0xa203, 0x300c, 0x2846, 0x8161, 0x846a, 0x8300, -+ 0x1856, 0x883a, 0xa804, 0x28f2, 0x9c9d, 0xa8f4, 0x300c, 0x28e1, -+ 0x9c9d, 0x2822, 0xa207, 0x64a4, 0x2001, 0xa811, 0xa206, 0x64c0, -+ 0x6de0, 0x67a0, 0x6fc0, 0x882b, 0x1814, 0x883b, 0x7824, 0x68c1, -+ 0x7864, 0x883e, 0xa802, 0x8576, 0x8677, 0x80df, 0x94a1, 0x206c, -+ 0x28c1, 0x9cb9, 0x2045, 0x2104, 0x20a1, 0x2080, 0x7961, 0xa8df, -+ 0xa209, 0x0904, 0xa20e, 0xa808, 0xa205, 0xa300, 0x1872, 0x879a, -+ 0x883c, 0x1fe2, 0xc601, 0xa20a, 0x8000, 0x85a1, 0x806f, 0x9422, -+ 0x84a2, 0x856e, 0x0704, 0x9c9d, 0x0014, 0xa204, 0xa300, 0x3009, -+ 0x19e2, 0xf864, 0x856e, 0x883f, 0x08e6, 0xa8f7, 0xf881, 0xa8eb, -+ 0xc007, 0xf8c1, 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfb02, 0x1de2, -+ 0x0014, 0x8532, 0xf241, 0x0014, 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, -+ 0x0014, 0xa208, 0x6043, 0x8008, 0x1dc1, 0x0016, 0x8300, 0x8160, -+ 0x842a, 0xf041, 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, -+ 0x20d5, 0x8822, 0x0016, 0x3008, 0x2845, 0x1011, 0xa8fd, 0x2802, -+ 0x1011, 0xa8fd, 0xa894, 0x283e, 0x1011, 0xa8fd, 0xa20b, 0x7102, -+ 0x805f, 0x9481, 0x0017, 0x300c, 0xa300, 0x1de2, 0xd387, 0x0210, -+ 0xa800, 0x26e0, 0x873a, 0xfb02, 0x19f2, 0x1fe2, 0x0014, 0xa20d, -+ 0x3806, 0x0210, 0x9cbe, 0x0704, 0x0017, 0x60ff, 0x300c, 0x8720, -+ 0xa211, 0x7102, 0x805f, 0x9481, 0x8000, 0x8300, 0x8772, 0x8837, -+ 0x2101, 0xa821, 0x10d2, 0x78e2, 0x9d5c, 0xa8fc, 0xd984, 0xf0e2, -+ 0xf0a1, 0xa820, 0x0014, 0x8831, 0xd166, 0x8830, 0x800f, 0x9401, -+ 0xb520, 0xc802, 0x8820, 0xa80f, 0x2301, 0xa80d, 0x10d2, 0x78e4, -+ 0x9d5c, 0x8821, 0x8820, 0xa8e6, 0xf123, 0xf142, 0xf101, 0xa855, -+ 0x10d2, 0x70f6, 0x8832, 0x8203, 0x870c, 0xd99e, 0x6001, 0x0014, -+ 0x6848, 0x0214, 0x8827, 0x300a, 0x0013, 0xa21b, 0x8300, 0x2001, -+ 0xa843, 0x8201, 0x1852, 0xd183, 0x8834, 0x8001, 0xa801, 0x3027, -+ 0x84a8, 0x1a56, 0x8833, 0x0014, 0xa218, 0x6981, 0x9d63, 0x692b, -+ 0x6902, 0x1a34, 0xa806, 0x8080, 0x9521, 0xc002, 0x1a94, 0xa801, -+ 0x1a14, 0x7021, 0x0014, 0xa300, 0x69e4, 0x8023, 0x16e1, 0x8001, -+ 0x10f1, 0x6946, 0xa213, 0x1462, 0xa213, 0x8000, 0x16e1, 0xa808, -+ 0x6161, 0x0014, 0xa214, 0x61c2, 0x8002, 0x14e1, 0x8004, 0x16e1, -+ 0x0101, 0x300a, 0x8827, 0x0014, 0x11c2, 0x211e, 0x870e, 0xa21d, -+ 0x0014, 0x9d63, 0x0014, 0xa300, 0x8181, 0x842a, 0x84a8, 0x1ce6, -+ 0x882c, 0x0016, 0xa212, 0x8300, 0x10d2, 0x70e4, 0x0004, 0x8007, -+ 0x9424, 0xcc1a, 0x9d5c, 0xa8f8, 0x878e, 0x0016, 0xa21c, 0x1035, -+ 0xa8bb, 0xa210, 0x3807, 0x300c, 0x817e, 0x872b, 0x8772, 0x0014, -+ 0x0000, 0xd27a -+}; -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/asm_12160.h 2003-07-19 17:06:32.000000000 -0700 -@@ -0,0 +1,4198 @@ -+/* @(#)asm_12160.h 1.3 */ -+/* -+ * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Qlogic, Inc. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms are permitted provided -+ * that the following conditions are met: -+ * 1. Redistribution of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistribution in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+/************************************************************************ -+ * * -+ * --- ISP12160A Initiator/Target RISC Firmware --- * -+ * 32 LUN Support * -+ * * -+ ************************************************************************/ -+#ifndef ISP_TARGET_MODE -+/* -+ * Firmware Version 10.04.32 (12:03 May 09, 2001) -+ */ -+static const u_int16_t isp_12160_risc_code[] = { -+ 0x0804, 0x1041, 0x0000, 0x35e6, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, 0x2c31, -+ 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, 0x4320, -+ 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, 0x5350, -+ 0x3132, 0x3136, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056, -+ 0x6572, 0x7369, 0x6f6e, 0x2031, 0x302e, 0x3034, 0x2020, 0x2043, -+ 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3030, 0x2050, -+ 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, 0x3030, 0x2020, -+ 0x2400, 0x20c9, 0x8fff, 0x2071, 0x0200, 0x70a0, 0x70a2, 0x2001, -+ 0x01ff, 0x2004, 0xd0fc, 0x1120, 0x2071, 0x0100, 0x70a0, 0x70a2, -+ 0x20c1, 0x0020, 0x2089, 0x1221, 0x2071, 0x0010, 0x70c3, 0x0004, -+ 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, 0x000a, -+ 0x2001, 0x04fd, 0x2004, 0x70d6, 0x2009, 0xfeff, 0x2130, 0x2128, -+ 0xa1a2, 0x4600, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, -+ 0xa192, 0x9000, 0x2009, 0x0000, 0x2001, 0x0032, 0x080c, 0x1de8, -+ 0x2218, 0x2079, 0x4600, 0x2fa0, 0x2408, 0x2011, 0x0000, 0x20a9, -+ 0x0040, 0x42a4, 0x8109, 0x1dd8, 0x2009, 0xff00, 0x3400, 0xa102, -+ 0x0218, 0x0110, 0x20a8, 0x42a4, 0x781b, 0x0064, 0x7814, 0xc0cd, -+ 0xc0d5, 0x7816, 0x2071, 0x0200, 0x00d6, 0x2069, 0x4640, 0x080c, -+ 0x459a, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1130, 0x2069, 0x4680, -+ 0x2071, 0x0100, 0x080c, 0x459a, 0x7814, 0xc0d4, 0x7816, 0x00de, -+ 0x7eca, 0x7cc2, 0x7bc6, 0x7867, 0x0000, 0x7800, 0xc08d, 0x7802, -+ 0x2031, 0x0030, 0x78af, 0x0101, 0x7823, 0x0002, 0x7827, 0x0002, -+ 0x2009, 0x0002, 0x2069, 0x4640, 0x681b, 0x0003, 0x6823, 0x0007, -+ 0x6827, 0x00fa, 0x682b, 0x0008, 0x682f, 0x0028, 0x6837, 0x0006, -+ 0x6833, 0x0008, 0x683b, 0x0000, 0x8109, 0x0500, 0x68cf, 0x000a, -+ 0x68bf, 0x46c0, 0x2079, 0x4600, 0x68d3, 0x762d, 0x68c3, 0x4bc0, -+ 0x68c7, 0x4ac0, 0x68cb, 0x8bc0, 0x68a7, 0x8e44, 0x68ab, 0x8e49, -+ 0x68af, 0x8e44, 0x68b3, 0x8e44, 0x68a3, 0x0001, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x11c8, 0x2069, 0x4680, 0x0870, 0x68cf, 0x000a, -+ 0x68bf, 0x48c0, 0x68d3, 0x7839, 0x68c3, 0x6bc0, 0x68c7, 0x4b40, -+ 0x68cb, 0x8cd0, 0x68a7, 0x8e49, 0x68ab, 0x8e4e, 0x68af, 0x8e49, -+ 0x68b3, 0x8e49, 0x68a3, 0x0001, 0x00e6, 0x2069, 0x4ac0, 0x2071, -+ 0x0200, 0x70ec, 0xd0e4, 0x2019, 0x1809, 0x2021, 0x0009, 0x1120, -+ 0x2019, 0x180c, 0x2021, 0x000c, 0x080c, 0x1d58, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x1188, 0x2069, 0x4b40, 0x2071, 0x0100, 0x70ec, -+ 0xd0e4, 0x2019, 0x1809, 0x2021, 0x0009, 0x1120, 0x2019, 0x180c, -+ 0x2021, 0x000c, 0x080c, 0x1d58, 0x00ee, 0x2011, 0x0002, 0x2069, -+ 0x4bc0, 0x2009, 0x0002, 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, -+ 0x0040, 0x7bc8, 0xa386, 0xfeff, 0x1128, 0x6817, 0x0100, 0x681f, -+ 0x0064, 0x0020, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, 0x0010, -+ 0x1f04, 0x1135, 0x8109, 0x1d38, 0x2001, 0x01ff, 0x2004, 0xd0fc, -+ 0x1128, 0x8211, 0x0118, 0x2069, 0x6bc0, 0x08d8, 0x080c, 0x22cf, -+ 0x080c, 0x4015, 0x080c, 0x1b6d, 0x080c, 0x4553, 0x2091, 0x2200, -+ 0x2079, 0x4600, 0x2071, 0x0050, 0x2091, 0x2400, 0x2079, 0x4600, -+ 0x2071, 0x0020, 0x2091, 0x2600, 0x2079, 0x0200, 0x2071, 0x4640, -+ 0x2091, 0x2800, 0x2079, 0x0100, 0x2071, 0x4680, 0x2091, 0x2000, -+ 0x2079, 0x4600, 0x2071, 0x0010, 0x3200, 0xa085, 0x303d, 0x2090, -+ 0x2071, 0x0010, 0x70c3, 0x0000, 0x1004, 0x118c, 0x70c0, 0xa086, -+ 0x0002, 0x1110, 0x080c, 0x13ba, 0x2039, 0x0000, 0x080c, 0x12ab, -+ 0x78ac, 0xa005, 0x1180, 0x0e04, 0x119a, 0x786c, 0xa065, 0x0110, -+ 0x080c, 0x207a, 0x080c, 0x1e09, 0x0e04, 0x11af, 0x786c, 0xa065, -+ 0x0110, 0x080c, 0x207a, 0x0e04, 0x11af, 0x2009, 0x4647, 0x2011, -+ 0x4687, 0x2104, 0x220c, 0xa105, 0x0110, 0x080c, 0x1c7c, 0x2071, -+ 0x4640, 0x70a0, 0xa005, 0x01e8, 0x744c, 0xa485, 0x0000, 0x01c8, -+ 0x2079, 0x0200, 0x2091, 0x8000, 0x72d0, 0xa28c, 0x303d, 0x2190, -+ 0x080c, 0x2720, 0x2091, 0x8000, 0x2091, 0x303d, 0x0e04, 0x11d1, -+ 0x2079, 0x4600, 0x786c, 0xa065, 0x0120, 0x2071, 0x0010, 0x080c, -+ 0x207a, 0x1d04, 0x11d9, 0x2079, 0x4600, 0x2071, 0x0010, 0x080c, -+ 0x4370, 0x2071, 0x4680, 0x70a0, 0xa005, 0x0188, 0x704c, 0xa025, -+ 0x0170, 0x2079, 0x0100, 0x2091, 0x8000, 0x72d0, 0xa28c, 0x303d, -+ 0x2190, 0x080c, 0x2720, 0x2091, 0x8000, 0x2091, 0x303d, 0x2079, -+ 0x4600, 0x2071, 0x0010, 0x0e04, 0x11fa, 0x786c, 0xa065, 0x0110, -+ 0x080c, 0x207a, 0x1d04, 0x118e, 0x080c, 0x4370, 0x0804, 0x118e, -+ 0x3c00, 0xa084, 0x0007, 0x0002, 0x120c, 0x120c, 0x120e, 0x120e, -+ 0x1213, 0x1213, 0x1218, 0x1218, 0x080c, 0x254c, 0x2091, 0x2400, -+ 0x080c, 0x40ad, 0x0005, 0x2091, 0x2200, 0x080c, 0x40ad, 0x0005, -+ 0x2091, 0x2200, 0x080c, 0x40ad, 0x2091, 0x2400, 0x080c, 0x40ad, -+ 0x0005, 0x1241, 0x1241, 0x1242, 0x1242, 0x124d, 0x124d, 0x124d, -+ 0x124d, 0x1256, 0x1256, 0x1261, 0x1261, 0x124d, 0x124d, 0x124d, -+ 0x124d, 0x1270, 0x1270, 0x1270, 0x1270, 0x1270, 0x1270, 0x1270, -+ 0x1270, 0x1270, 0x1270, 0x1270, 0x1270, 0x1270, 0x1270, 0x1270, -+ 0x1270, 0x0cf8, 0x0006, 0x0106, 0x0126, 0x2091, 0x2800, 0x080c, -+ 0x2569, 0x012e, 0x010e, 0x000e, 0x000d, 0x0006, 0x0106, 0x0126, -+ 0x080c, 0x1200, 0x012e, 0x010e, 0x000e, 0x000d, 0x0006, 0x0106, -+ 0x0126, 0x2091, 0x2600, 0x080c, 0x2569, 0x012e, 0x010e, 0x000e, -+ 0x000d, 0x0006, 0x0106, 0x0126, 0x2091, 0x2600, 0x080c, 0x2569, -+ 0x2091, 0x2800, 0x080c, 0x2569, 0x012e, 0x010e, 0x000e, 0x000d, -+ 0x0006, 0x0106, 0x0126, 0x00d6, 0x00e6, 0x00f6, 0x2079, 0x4600, -+ 0x2071, 0x0200, 0x2069, 0x4640, 0x3d00, 0xd08c, 0x0130, 0x70ec, -+ 0xa084, 0x1c00, 0x78e2, 0x080c, 0x459a, 0x3d00, 0xd084, 0x0150, -+ 0x2069, 0x4680, 0x2071, 0x0100, 0x70ec, 0xa084, 0x1c00, 0x78e6, -+ 0x080c, 0x459a, 0x080c, 0x24fd, 0x00fe, 0x00ee, 0x00de, 0x012e, -+ 0x010e, 0x000e, 0x000d, 0x7008, 0x800b, 0x1240, 0x7007, 0x0002, -+ 0xa08c, 0x01e0, 0x1120, 0xd09c, 0x0108, 0x0887, 0x0897, 0x70c3, -+ 0x4002, 0x0804, 0x13bd, 0x0e04, 0x131e, 0x2061, 0x0000, 0x6018, -+ 0xd084, 0x1904, 0x131e, 0x7828, 0xa005, 0x1120, 0x0004, 0x131f, -+ 0x0804, 0x131e, 0xd0fc, 0x0130, 0x0006, 0x080c, 0x1b0a, 0x000e, -+ 0x0150, 0x0028, 0x0006, 0x080c, 0x1aff, 0x000e, 0x0120, 0x2001, -+ 0x4007, 0x0804, 0x13bc, 0x7910, 0xd0fc, 0x1128, 0x2061, 0x4640, -+ 0xc19c, 0xc7fc, 0x0020, 0x2061, 0x4680, 0xc19d, 0xc7fd, 0x6060, -+ 0xa005, 0x1904, 0x131e, 0x7912, 0x607e, 0x7828, 0xc0fc, 0xa086, -+ 0x0018, 0x1120, 0x00c6, 0x080c, 0x1916, 0x00ce, 0x782b, 0x0000, -+ 0x6078, 0xa065, 0x01e0, 0x00c6, 0x609c, 0x080c, 0x1bd4, 0x00ce, -+ 0x609f, 0x0000, 0x080c, 0x1a41, 0x2009, 0x0018, 0x6087, 0x0103, -+ 0x7810, 0x0006, 0x84ff, 0x1110, 0x85ff, 0x0110, 0xc0c5, 0x7812, -+ 0x080c, 0x1b15, 0x000e, 0x7812, 0x1198, 0x080c, 0x1b60, 0x7810, -+ 0xd09c, 0x1118, 0x2061, 0x4640, 0x0020, 0x2061, 0x4680, 0xc09c, -+ 0x7812, 0x607b, 0x0000, 0x60d0, 0xd0c4, 0x0130, 0xc0c4, 0x60d2, -+ 0x2001, 0x4005, 0x0804, 0x13bc, 0x0804, 0x13ba, 0x0005, 0xa006, -+ 0x70c2, 0x70c6, 0x70ca, 0x70ce, 0x70da, 0x70c0, 0xa03d, 0xa08a, -+ 0x0040, 0x1a04, 0x136c, 0x0002, 0x13ba, 0x1408, 0x13d6, 0x143c, -+ 0x1470, 0x1470, 0x13ce, 0x1a59, 0x147a, 0x13c8, 0x13da, 0x13db, -+ 0x13dc, 0x13dd, 0x1a5d, 0x13c8, 0x1487, 0x14db, 0x1931, 0x1a53, -+ 0x13de, 0x17ba, 0x17f0, 0x1822, 0x1868, 0x1777, 0x1784, 0x1797, -+ 0x17a9, 0x15b0, 0x13c8, 0x150d, 0x1518, 0x1526, 0x1534, 0x154b, -+ 0x1559, 0x155c, 0x156a, 0x1578, 0x1582, 0x1596, 0x15a2, 0x13c8, -+ 0x13c8, 0x13c8, 0x13c8, 0x15bd, 0x15ce, 0x15e8, 0x161c, 0x1645, -+ 0x1657, 0x165a, 0x1685, 0x16be, 0x16d0, 0x1745, 0x1755, 0x13c8, -+ 0x13c8, 0x13c8, 0x13c8, 0x1767, 0x2100, 0xa08a, 0x0040, 0x1a04, -+ 0x13c8, 0x0002, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x1a7f, -+ 0x1a85, 0x13c8, 0x13c8, 0x13c8, 0x1a89, 0x1ac9, 0x13c8, 0x13c8, -+ 0x13c8, 0x13c8, 0x1403, 0x146b, 0x1482, 0x14d6, 0x192c, 0x13c8, -+ 0x13c8, 0x18fb, 0x13c8, 0x1acd, 0x1a71, 0x1a7b, 0x13c8, 0x13c8, -+ 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, -+ 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, -+ 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, -+ 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, 0x13c8, -+ 0x13c8, 0x13c8, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0028, 0x73ce, -+ 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0e04, 0x13bd, 0x2061, -+ 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x0005, -+ 0x70c3, 0x4001, 0x0c90, 0x70c3, 0x4006, 0x0c78, 0x2099, 0x0041, -+ 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0c20, 0x70c4, 0x70c3, -+ 0x0004, 0x0807, 0x08f8, 0x08f0, 0x08e8, 0x08e0, 0x2091, 0x8000, -+ 0x70c3, 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, -+ 0x70d3, 0x000a, 0x2001, 0x0004, 0x70d6, 0x2079, 0x0000, 0x781b, -+ 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x041a, 0x2051, -+ 0x0445, 0x2061, 0x0447, 0x20c1, 0x0020, 0x2091, 0x5000, 0x2091, -+ 0x4080, 0x0804, 0x0418, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0018, -+ 0x2029, 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x20a0, -+ 0x2099, 0x0030, 0x7003, 0x0001, 0x7007, 0x0006, 0x731a, 0x721e, -+ 0x7422, 0x7526, 0x2021, 0x0040, 0x81ff, 0x0904, 0x13ba, 0xa182, -+ 0x0040, 0x1210, 0x2120, 0xa006, 0x2008, 0x8403, 0x7012, 0x7007, -+ 0x0004, 0x7007, 0x0001, 0x7008, 0xd0fc, 0x0de8, 0x7007, 0x0002, -+ 0xa084, 0x01e0, 0x0120, 0x70c3, 0x4002, 0x0804, 0x13bd, 0x24a8, -+ 0x53a5, 0x0c10, 0x0804, 0x13ba, 0x2029, 0x0000, 0x2520, 0x71d0, -+ 0x72c8, 0x73cc, 0x70c4, 0x2098, 0x20a1, 0x0030, 0x7003, 0x0000, -+ 0x7007, 0x0006, 0x731a, 0x721e, 0x7422, 0x7526, 0x2021, 0x0040, -+ 0x7007, 0x0006, 0x81ff, 0x0904, 0x13ba, 0xa182, 0x0040, 0x1210, -+ 0x2120, 0xa006, 0x2008, 0x8403, 0x7012, 0x24a8, 0x53a6, 0x7007, -+ 0x0001, 0x7008, 0xd0fc, 0x0de8, 0xa084, 0x01e0, 0x0d48, 0x70c3, -+ 0x4002, 0x0804, 0x13bd, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0878, -+ 0x71c4, 0x70c8, 0x2114, 0xa79e, 0x0004, 0x1108, 0x200a, 0x72ca, -+ 0x0804, 0x13b9, 0x70c7, 0x000a, 0x70cb, 0x0004, 0x70cf, 0x0020, -+ 0x0804, 0x13ba, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0018, 0x2029, -+ 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6, 0x72ca, -+ 0x73ce, 0x74d2, 0xa005, 0x05e8, 0xa40a, 0x0108, 0x1240, 0x8001, -+ 0x7872, 0xa084, 0xfc00, 0x0138, 0x78ac, 0xc085, 0x78ae, 0x2001, -+ 0x4005, 0x0804, 0x13bc, 0x7b7e, 0x7a7a, 0x7e86, 0x7d82, 0x7c76, -+ 0xa48c, 0xff00, 0x0170, 0x8407, 0x8004, 0x8004, 0x810c, 0x810c, -+ 0x810f, 0xa118, 0xa291, 0x0000, 0xa6b1, 0x0000, 0xa581, 0x0000, -+ 0x0050, 0x8407, 0x8004, 0x8004, 0xa318, 0xa291, 0x0000, 0xa6b1, -+ 0x0000, 0xa581, 0x0000, 0x731a, 0x721e, 0x7622, 0x7026, 0xa605, -+ 0x0118, 0x7a10, 0xc2c5, 0x7a12, 0x78ac, 0xa084, 0xfffc, 0x78ae, -+ 0x0018, 0x78ac, 0xc085, 0x78ae, 0x0804, 0x13ba, 0x75d8, 0x76dc, -+ 0x75da, 0x76de, 0x0018, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, -+ 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x0500, -+ 0xa40a, 0x0110, 0x1a04, 0x13bc, 0x8001, 0x7892, 0xa084, 0xfc00, -+ 0x0138, 0x78ac, 0xc0c5, 0x78ae, 0x2001, 0x4005, 0x0804, 0x13bc, -+ 0x7a9a, 0x7b9e, 0x7da2, 0x7ea6, 0x2600, 0xa505, 0x0118, 0x7a10, -+ 0xc2c5, 0x7a12, 0x7c96, 0x78ac, 0xa084, 0xfcff, 0x78ae, 0x0018, -+ 0x78ac, 0xc0c5, 0x78ae, 0x0804, 0x13ba, 0x2009, 0x0000, 0x786c, -+ 0xa065, 0x0118, 0x8108, 0x6000, 0x0cd8, 0x7ac4, 0x0804, 0x13b8, -+ 0x2009, 0x4648, 0x210c, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, -+ 0x13b9, 0x2011, 0x4688, 0x2214, 0x0804, 0x13b8, 0x2009, 0x4649, -+ 0x210c, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x13b9, 0x2011, -+ 0x4689, 0x2214, 0x0804, 0x13b8, 0x2061, 0x4640, 0x6128, 0x622c, -+ 0x8214, 0x8214, 0x8214, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1148, -+ 0x2061, 0x4680, 0x6328, 0x73da, 0x632c, 0x831c, 0x831c, 0x831c, -+ 0x73de, 0x0804, 0x13b8, 0x2009, 0x464c, 0x210c, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x1904, 0x13b9, 0x2011, 0x468c, 0x2214, 0x0804, -+ 0x13b8, 0x7918, 0x0804, 0x13b9, 0x2009, 0x0202, 0x210c, 0x2001, -+ 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x13b9, 0x2011, 0x0102, 0x2214, -+ 0x0804, 0x13b8, 0x2009, 0x464d, 0x210c, 0x2001, 0x01ff, 0x2004, -+ 0xd0fc, 0x1904, 0x13b9, 0x2011, 0x468d, 0x2214, 0x0804, 0x13b8, -+ 0x7920, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x13b9, 0x7a24, -+ 0x0804, 0x13b8, 0x2011, 0x4b40, 0x71c4, 0xd1fc, 0x1110, 0x2011, -+ 0x4ac0, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa268, -+ 0x6a00, 0x6b08, 0x6c1c, 0x74da, 0x0804, 0x13b7, 0x77c4, 0x080c, -+ 0x1b7b, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, -+ 0x0804, 0x13b7, 0x2061, 0x4640, 0x6118, 0x2001, 0x01ff, 0x2004, -+ 0xd0fc, 0x1904, 0x13b9, 0x2061, 0x4680, 0x6218, 0x0804, 0x13b8, -+ 0x77c4, 0x080c, 0x1b7b, 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, -+ 0x77da, 0x2091, 0x8001, 0x0804, 0x13b7, 0x71c4, 0x2110, 0xa294, -+ 0x000f, 0xa282, 0x0010, 0x1a04, 0x13b3, 0x080c, 0x238b, 0xa384, -+ 0x4000, 0x0110, 0xa295, 0x0020, 0x0804, 0x13b7, 0x71c4, 0x2100, -+ 0xc0bc, 0xa082, 0x0010, 0x1a04, 0x13b3, 0xd1bc, 0x1120, 0x2011, -+ 0x4648, 0x2204, 0x0020, 0x2011, 0x4688, 0x2204, 0xc0bd, 0x0006, -+ 0x2100, 0xc0bc, 0x2012, 0x080c, 0x2331, 0x001e, 0x0804, 0x13b9, -+ 0x71c4, 0x2021, 0x4649, 0x2404, 0x70c6, 0x2019, 0x0000, 0x0030, -+ 0x71c8, 0x2021, 0x4689, 0x2404, 0x70ca, 0xc3fd, 0x2011, 0x1614, -+ 0x20a9, 0x0008, 0x2204, 0xa106, 0x0138, 0x8210, 0x1f04, 0x15fa, -+ 0x71c4, 0x72c8, 0x0804, 0x13b2, 0xa292, 0x1614, 0x0026, 0x2122, -+ 0x001e, 0x080c, 0x2343, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1110, -+ 0xd3fc, 0x09f0, 0x0804, 0x13ba, 0x03e8, 0x00fa, 0x01f4, 0x02ee, -+ 0x0004, 0x0001, 0x0002, 0x0003, 0x2061, 0x4640, 0x6128, 0x622c, -+ 0x8214, 0x8214, 0x8214, 0x70c4, 0x602a, 0x70c8, 0x8003, 0x8003, -+ 0x8003, 0x602e, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x11a0, 0x0026, -+ 0x0016, 0x2061, 0x4680, 0x6128, 0x622c, 0x8214, 0x8214, 0x8214, -+ 0x70d8, 0x602a, 0x70dc, 0x8003, 0x8003, 0x8003, 0x602e, 0x71da, -+ 0x72de, 0x001e, 0x002e, 0x0804, 0x13b8, 0x2061, 0x4640, 0x6130, -+ 0x70c4, 0x6032, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x13b9, -+ 0x2061, 0x4680, 0x6230, 0x70c8, 0x6032, 0x0804, 0x13b8, 0x7918, -+ 0x0804, 0x13b9, 0x71c4, 0xa184, 0xf0cf, 0x0148, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x1904, 0x13b3, 0x72c8, 0x0804, 0x13b2, 0x0006, -+ 0x2019, 0x0000, 0x080c, 0x237f, 0x2001, 0x01ff, 0x2004, 0xd0fc, -+ 0x0118, 0x001e, 0x0804, 0x13b9, 0x71c8, 0xa184, 0xf0cf, 0x0128, -+ 0x0006, 0x2110, 0x71c4, 0x0804, 0x13b2, 0x0006, 0xc3fd, 0x080c, -+ 0x237f, 0x002e, 0x001e, 0x0804, 0x13b8, 0x71c4, 0xa182, 0x0010, -+ 0x0248, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x13b3, 0x72c8, -+ 0x0804, 0x13b2, 0x2011, 0x464d, 0x2204, 0x0006, 0x8104, 0x1208, -+ 0x8108, 0x2112, 0x2019, 0x0000, 0x080c, 0x236c, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x0118, 0x001e, 0x0804, 0x13b9, 0x71c8, 0xa182, -+ 0x0010, 0x0228, 0x0006, 0x2110, 0x71c4, 0x0804, 0x13b2, 0x2011, -+ 0x468d, 0x2204, 0x0006, 0x8104, 0x1208, 0x8108, 0x2112, 0xc3fd, -+ 0x080c, 0x236c, 0x002e, 0x001e, 0x0804, 0x13b8, 0x71c4, 0x72c8, -+ 0xa184, 0xfffd, 0x1904, 0x13b2, 0xa284, 0xfffd, 0x1904, 0x13b2, -+ 0x2100, 0x7920, 0x7822, 0x2200, 0x7a24, 0x7826, 0x0804, 0x13b8, -+ 0x2011, 0x4b40, 0x71c4, 0xd1fc, 0x1110, 0x2011, 0x4ac0, 0x8107, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa268, 0x72c8, 0x73cc, -+ 0x74d8, 0x71c6, 0x6800, 0x70ca, 0x73ce, 0x74da, 0x2091, 0x8000, -+ 0x6a02, 0xd2ac, 0x1118, 0x2021, 0x0000, 0x0090, 0xa484, 0x00ff, -+ 0xa082, 0x0002, 0x1a04, 0x1741, 0x843f, 0xa7bc, 0x00ff, 0x0140, -+ 0xa786, 0x0002, 0x1904, 0x1741, 0xa484, 0x00ff, 0x0904, 0x1741, -+ 0x2061, 0x0200, 0xd1fc, 0x0110, 0x2061, 0x0100, 0x2029, 0x0009, -+ 0x2031, 0x0062, 0x843f, 0xa7bc, 0x00ff, 0x0130, 0x8307, 0xa084, -+ 0x00ff, 0x1110, 0xa73d, 0x1138, 0x2041, 0x0019, 0xa384, 0x00ff, -+ 0xa082, 0x001a, 0x0210, 0xa4a4, 0x00ff, 0x8307, 0xa084, 0x00ff, -+ 0x0188, 0xa842, 0x02f0, 0xa086, 0x0010, 0x1120, 0xa39c, 0x00ff, -+ 0xa39d, 0x0f00, 0xa3bc, 0x00ff, 0x2500, 0xa702, 0x0290, 0x2600, -+ 0xa702, 0x1278, 0x2039, 0x003a, 0x6804, 0xa705, 0x6806, 0x6b0a, -+ 0x6b0c, 0x73ce, 0x681c, 0x70da, 0x6c1e, 0x2091, 0x8001, 0x0804, -+ 0x13ba, 0x2091, 0x8001, 0x0804, 0x13b4, 0x77c4, 0x080c, 0x1b7b, -+ 0x2091, 0x8000, 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, -+ 0x70cc, 0x681e, 0x2708, 0x0804, 0x13b7, 0x70c4, 0x2061, 0x4640, -+ 0x6118, 0x601a, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x13b9, -+ 0x70c8, 0x2061, 0x4680, 0x6218, 0x601a, 0x0804, 0x13b8, 0x71c4, -+ 0x72c8, 0x73cc, 0xa182, 0x0010, 0x1a04, 0x13b3, 0x080c, 0x23af, -+ 0xa384, 0x4000, 0x0110, 0xa295, 0x0020, 0x0804, 0x13b7, 0x77c4, -+ 0x080c, 0x1b7b, 0x2091, 0x8000, 0x6a08, 0xc28d, 0x6a0a, 0x2091, -+ 0x8001, 0x2708, 0x0804, 0x13b8, 0x77c4, 0x080c, 0x1b7b, 0x2091, -+ 0x8000, 0x6a08, 0xa294, 0xfff9, 0x6a0a, 0x6804, 0xa005, 0x0110, -+ 0x080c, 0x22ae, 0x2091, 0x8001, 0x2708, 0x0804, 0x13b8, 0x77c4, -+ 0x080c, 0x1b7b, 0x2091, 0x8000, 0x6a08, 0xc295, 0x6a0a, 0x6804, -+ 0xa005, 0x0110, 0x080c, 0x22ae, 0x2091, 0x8001, 0x2708, 0x0804, -+ 0x13b8, 0x77c4, 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, -+ 0x2091, 0x8000, 0x080c, 0x1b93, 0x2091, 0x8001, 0x2708, 0x6a08, -+ 0x0804, 0x13b8, 0x77c4, 0xd7fc, 0x0128, 0x080c, 0x1b0a, 0x0138, -+ 0x0804, 0x13bc, 0x080c, 0x1aff, 0x0110, 0x0804, 0x13bc, 0x73c8, -+ 0x72cc, 0x77c6, 0x73ca, 0x72ce, 0x080c, 0x1c0b, 0x11e8, 0x6818, -+ 0xa005, 0x01a0, 0x2708, 0x0076, 0x080c, 0x23ce, 0x007e, 0x1170, -+ 0x2001, 0x0015, 0xd7fc, 0x1118, 0x2061, 0x4640, 0x0018, 0xc0fd, -+ 0x2061, 0x4680, 0x782a, 0x2091, 0x8001, 0x0005, 0x2091, 0x8001, -+ 0x2001, 0x4005, 0x0804, 0x13bc, 0x2091, 0x8001, 0x0804, 0x13ba, -+ 0x77c4, 0xd7fc, 0x0128, 0x080c, 0x1b0a, 0x0138, 0x0804, 0x13bc, -+ 0x080c, 0x1aff, 0x0110, 0x0804, 0x13bc, 0x77c6, 0x2041, 0x0021, -+ 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x080c, 0x1b93, -+ 0x2009, 0x0016, 0xd7fc, 0x1118, 0x2061, 0x4640, 0x0018, 0x2061, -+ 0x4680, 0xc1fd, 0x6063, 0x0003, 0x607b, 0x0000, 0x6772, 0x607f, -+ 0x000f, 0x792a, 0x61d0, 0xc1c4, 0x61d2, 0x080c, 0x22ae, 0x2091, -+ 0x8001, 0x0005, 0x77c8, 0x77ca, 0x77c4, 0x77c6, 0xd7fc, 0x0128, -+ 0x080c, 0x1b0a, 0x0138, 0x0804, 0x13bc, 0x080c, 0x1aff, 0x0110, -+ 0x0804, 0x13bc, 0xa7bc, 0xff00, 0x2091, 0x8000, 0x2009, 0x0017, -+ 0xd7fc, 0x1118, 0x2061, 0x4640, 0x0018, 0x2061, 0x4680, 0xc1fd, -+ 0x607b, 0x0000, 0x6063, 0x0002, 0x6772, 0x607f, 0x000f, 0x792a, -+ 0x61d0, 0xc1c4, 0x61d2, 0x080c, 0x22ae, 0x2091, 0x8001, 0x2041, -+ 0x0021, 0x2049, 0x0005, 0x2051, 0x0030, 0x2091, 0x8000, 0x70c8, -+ 0xa005, 0x0118, 0x60d0, 0xc0fd, 0x60d2, 0x080c, 0x1b93, 0x70c8, -+ 0x6836, 0x8738, 0xa784, 0x001f, 0x1dc0, 0x2091, 0x8001, 0x0005, -+ 0x2019, 0x0000, 0x72c8, 0xd284, 0x0128, 0x080c, 0x1b0a, 0x0138, -+ 0x0804, 0x13bc, 0x080c, 0x1aff, 0x0110, 0x0804, 0x13bc, 0x72c8, -+ 0x72ca, 0x78ac, 0xa084, 0x0003, 0x1508, 0x2039, 0x0000, 0xd284, -+ 0x0108, 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, -+ 0x080c, 0x1b7b, 0x2091, 0x8000, 0x6808, 0xc0d4, 0xa80d, 0x690a, -+ 0x2091, 0x8001, 0x8738, 0xa784, 0x001f, 0x1d90, 0xa7bc, 0xff00, -+ 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x1d50, 0x2091, 0x8000, -+ 0x72c8, 0x2069, 0x0100, 0xd284, 0x1110, 0x2069, 0x0200, 0x6808, -+ 0xa084, 0xfffd, 0x680a, 0x6830, 0xd0b4, 0x01b0, 0x684b, 0x0004, -+ 0x20a9, 0x0014, 0x6848, 0xd094, 0x0110, 0x1f04, 0x18b2, 0x684b, -+ 0x0009, 0x20a9, 0x0014, 0x6848, 0xd084, 0x0110, 0x1f04, 0x18bb, -+ 0x20a9, 0x00fa, 0x1f04, 0x18c2, 0x2079, 0x4600, 0x2009, 0x0018, -+ 0x72c8, 0xd284, 0x1118, 0x2061, 0x4640, 0x0018, 0x2061, 0x4680, -+ 0xc1fd, 0x607b, 0x0000, 0x792a, 0x6063, 0x0001, 0x607f, 0x000f, -+ 0x60a3, 0x0000, 0x60a4, 0x60ae, 0x60b2, 0x60d0, 0xd0b4, 0x0160, -+ 0xc0b4, 0x60d2, 0x00c6, 0x60b4, 0xa065, 0x6008, 0xc0d4, 0x600a, -+ 0x6018, 0x8001, 0x601a, 0x00ce, 0x60d0, 0xa084, 0x7eff, 0x60d2, -+ 0x78ac, 0xc08d, 0x78ae, 0x83ff, 0x0108, 0x0005, 0x681b, 0x0054, -+ 0x2091, 0x8001, 0x0005, 0x73cc, 0x080c, 0x186a, 0x69ec, 0x6a48, -+ 0xa185, 0x1800, 0x684a, 0xa185, 0x0040, 0x68ee, 0x73cc, 0x2021, -+ 0x0004, 0x20a9, 0x09ff, 0x1f04, 0x190b, 0x8421, 0x1dd0, 0x8319, -+ 0x1db0, 0x69ee, 0x6a4a, 0x2091, 0x8001, 0x0005, 0xd7fc, 0x1118, -+ 0x2069, 0x4640, 0x0010, 0x2069, 0x4680, 0x71c4, 0x71c6, 0x6916, -+ 0x81ff, 0x1110, 0x68a3, 0x0001, 0x78ac, 0xc08c, 0x78ae, 0xd084, -+ 0x1110, 0x080c, 0x1c5b, 0x0005, 0x75d8, 0x74dc, 0x75da, 0x74de, -+ 0x0010, 0xa02e, 0x2520, 0x71c4, 0x73c8, 0x72cc, 0x71c6, 0x73ca, -+ 0x72ce, 0x2079, 0x4600, 0x7dde, 0x7cda, 0x7bd6, 0x7ad2, 0x080c, -+ 0x1b58, 0x0904, 0x1a3d, 0x20a9, 0x0005, 0x20a1, 0x4614, 0x2091, -+ 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, 0x0040, 0x080c, 0x1d24, -+ 0x0120, 0x080c, 0x1b60, 0x0804, 0x1a3d, 0x6004, 0xa08c, 0x00ff, -+ 0xa18e, 0x0009, 0x1120, 0x0006, 0x080c, 0x205f, 0x000e, 0xa084, -+ 0xff00, 0x8007, 0x8009, 0x0904, 0x19e1, 0x00c6, 0x2c68, 0x080c, -+ 0x1b58, 0x05a8, 0x2c00, 0x689e, 0x8109, 0x1dc0, 0x609f, 0x0000, -+ 0x00ce, 0x00c6, 0x7ddc, 0x7cd8, 0x7bd4, 0x7ad0, 0xa290, 0x0040, -+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x7dde, 0x7cda, -+ 0x7bd6, 0x7ad2, 0x2c68, 0x689c, 0xa065, 0x0904, 0x19e0, 0x2009, -+ 0x0040, 0x080c, 0x1d24, 0x15a0, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0002, 0x1168, 0x6004, 0xa084, 0x00ff, 0xa086, 0x000a, 0x1120, -+ 0x0016, 0x080c, 0x205c, 0x001e, 0x2d00, 0x6002, 0x0898, 0x00ce, -+ 0x00c6, 0x609c, 0x080c, 0x1bd4, 0x00ce, 0x609f, 0x0000, 0x080c, -+ 0x1a41, 0x2009, 0x0018, 0x6008, 0xc0cd, 0x600a, 0x6004, 0x6086, -+ 0x7810, 0x0006, 0x84ff, 0x1110, 0x85ff, 0x0110, 0xc0c5, 0x7812, -+ 0x080c, 0x1b15, 0x000e, 0x7812, 0x080c, 0x1b60, 0x0804, 0x1a3d, -+ 0x00ce, 0x00c6, 0x609c, 0x080c, 0x1bd4, 0x00ce, 0x609f, 0x0000, -+ 0x080c, 0x1a41, 0x2009, 0x0018, 0x6087, 0x0103, 0x601b, 0x0003, -+ 0x7810, 0x0006, 0x84ff, 0x1110, 0x85ff, 0x0110, 0xc0c5, 0x7812, -+ 0x080c, 0x1b15, 0x000e, 0x7812, 0x080c, 0x1b60, 0x0804, 0x1a3d, -+ 0x00ce, 0x6114, 0xd1fc, 0x0120, 0x080c, 0x1b0a, 0x01f0, 0x0018, -+ 0x080c, 0x1aff, 0x01d0, 0x080c, 0x1a41, 0x2009, 0x0018, 0x6087, -+ 0x0103, 0x601b, 0x0021, 0x7810, 0x0006, 0x84ff, 0x1110, 0x85ff, -+ 0x0110, 0xc0c5, 0x7812, 0x080c, 0x1b15, 0x000e, 0x7812, 0x080c, -+ 0x1b60, 0x2001, 0x4007, 0x0804, 0x13bc, 0x74c4, 0x73c8, 0x72cc, -+ 0x6014, 0x2091, 0x8000, 0x00e6, 0x2009, 0x0012, 0xd0fc, 0x1118, -+ 0x2071, 0x4640, 0x0018, 0x2071, 0x4680, 0xc1fd, 0x792a, 0x7063, -+ 0x0005, 0x71d0, 0xc1c4, 0x71d2, 0x7366, 0x726a, 0x746e, 0x7072, -+ 0x7077, 0x0000, 0x2c00, 0x707a, 0xa02e, 0x2530, 0x611c, 0xa184, -+ 0x0060, 0x0110, 0x080c, 0x3fc1, 0x00ee, 0x6596, 0x65a6, 0x669a, -+ 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, 0x6714, 0x6023, 0x0000, -+ 0x080c, 0x22ae, 0x2091, 0x8001, 0x0005, 0x70c3, 0x4005, 0x0804, -+ 0x13bd, 0x20a9, 0x0005, 0x2099, 0x4614, 0x2091, 0x8000, 0x530a, -+ 0x2091, 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, -+ 0xa5a9, 0x0000, 0x0005, 0x71c4, 0x70c7, 0x0000, 0x791e, 0x0804, -+ 0x13ba, 0x71c4, 0x71c6, 0x2168, 0x0010, 0x2069, 0x1000, 0x690c, -+ 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x1dd8, 0xa285, 0x0000, -+ 0x1118, 0x70c3, 0x4000, 0x0010, 0x70c3, 0x4003, 0x70ca, 0x0804, -+ 0x13bd, 0x7964, 0x71c6, 0x71c4, 0xa182, 0x0003, 0x1a04, 0x13b3, -+ 0x7966, 0x0804, 0x13ba, 0x7964, 0x71c6, 0x0804, 0x13ba, 0x7900, -+ 0x71c6, 0x71c4, 0x7902, 0x0804, 0x13ba, 0x7900, 0x71c6, 0x0804, -+ 0x13ba, 0x70c4, 0x2011, 0x0000, 0xa08c, 0x000d, 0x0160, 0x810c, -+ 0x0230, 0x8210, 0x810c, 0x810c, 0x0210, 0x8210, 0x810c, 0x81ff, -+ 0x1904, 0x13b4, 0x8210, 0x7a0e, 0xd28c, 0x0538, 0x7910, 0xc1cd, -+ 0x7912, 0x2009, 0x0021, 0x2019, 0x0003, 0xd284, 0x01c0, 0x8108, -+ 0x2019, 0x0041, 0x2011, 0x8e4e, 0x2312, 0x2019, 0x0042, 0x8210, -+ 0x2312, 0x2019, 0x0043, 0x8210, 0x2312, 0x2019, 0x0046, 0x8210, -+ 0x2312, 0x2019, 0x0047, 0x8210, 0x2312, 0x2019, 0x0006, 0x2011, -+ 0x8e53, 0x2112, 0x2011, 0x8e73, 0x2312, 0x7904, 0x7806, 0x0804, -+ 0x13b9, 0x7804, 0x70c6, 0x0804, 0x13ba, 0x71c4, 0xd1fc, 0x1118, -+ 0x2011, 0x4ac0, 0x0010, 0x2011, 0x4b40, 0x8107, 0xa084, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa268, 0x2011, 0x0000, 0x6814, 0xd0fc, -+ 0x0110, 0xa295, 0x0200, 0xd0b4, 0x0110, 0xa295, 0x0001, 0x6b0c, -+ 0x6800, 0x70da, 0x0804, 0x13b7, 0x7814, 0xd0f4, 0x0130, 0x2001, -+ 0x4007, 0x70db, 0x0000, 0xa005, 0x0048, 0xd0fc, 0x0130, 0x2001, -+ 0x4007, 0x70db, 0x0001, 0xa005, 0x0008, 0xa006, 0x0005, 0x7814, -+ 0xd0f4, 0x0130, 0x2001, 0x4007, 0x70db, 0x0000, 0xa005, 0x0008, -+ 0xa006, 0x0005, 0x7814, 0xd0fc, 0x0130, 0x2001, 0x4007, 0x70db, -+ 0x0001, 0xa005, 0x0008, 0xa006, 0x0005, 0x7112, 0x721a, 0x731e, -+ 0x7810, 0xd0c4, 0x0110, 0x7422, 0x7526, 0xac80, 0x0001, 0x8108, -+ 0x810c, 0x81a9, 0x8098, 0x20a1, 0x0030, 0x7003, 0x0000, 0x6084, -+ 0x20a2, 0x53a6, 0x7007, 0x0001, 0x7974, 0xa184, 0xff00, 0x0140, -+ 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, 0x0018, -+ 0x8107, 0x8004, 0x8004, 0x797c, 0xa108, 0x7a78, 0xa006, 0xa211, -+ 0x7d10, 0xd5c4, 0x0120, 0x7b84, 0xa319, 0x7c80, 0xa421, 0x7008, -+ 0xd0fc, 0x0de8, 0x7003, 0x0001, 0x7007, 0x0006, 0x711a, 0x721e, -+ 0x7d10, 0xd5c4, 0x0110, 0x7322, 0x7426, 0xa084, 0x01e0, 0x0005, -+ 0x7848, 0xa065, 0x0120, 0x2c04, 0x784a, 0x2063, 0x0000, 0x0005, -+ 0x00f6, 0x2079, 0x4600, 0x7848, 0x2062, 0x2c00, 0xa005, 0x1110, -+ 0x080c, 0x254c, 0x784a, 0x00fe, 0x0005, 0x2011, 0x9000, 0x7a4a, -+ 0x7bc4, 0x8319, 0x0128, 0xa280, 0x0032, 0x2012, 0x2010, 0x0cc8, -+ 0x2013, 0x0000, 0x0005, 0x0016, 0x0026, 0xd7fc, 0x1118, 0x2011, -+ 0x4bc0, 0x0010, 0x2011, 0x6bc0, 0xa784, 0x0f00, 0x800b, 0xa784, -+ 0x001f, 0x0120, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa268, -+ 0x002e, 0x001e, 0x0005, 0x0c39, 0x2900, 0x682a, 0x2a00, 0x682e, -+ 0x6808, 0xa084, 0xf9ef, 0xa80d, 0x690a, 0x00e6, 0xd7fc, 0x1128, -+ 0x2009, 0x4652, 0x2071, 0x4640, 0x0020, 0x2009, 0x4692, 0x2071, -+ 0x4680, 0x210c, 0x6804, 0xa005, 0x0148, 0xa116, 0x1138, 0x2060, -+ 0x6000, 0x6806, 0x0016, 0x200b, 0x0000, 0x0018, 0x2009, 0x0000, -+ 0x0016, 0x6804, 0xa065, 0x0178, 0x6000, 0x6806, 0x0421, 0x080c, -+ 0x1d95, 0x6810, 0x7908, 0x8109, 0x790a, 0x8001, 0x6812, 0x1d88, -+ 0x7910, 0xc1a5, 0x7912, 0x001e, 0x6902, 0x6906, 0x2d00, 0x2060, -+ 0x080c, 0x2693, 0x00ee, 0x0005, 0xa065, 0x0160, 0x2008, 0x609c, -+ 0xa005, 0x0128, 0x2062, 0x609f, 0x0000, 0xa065, 0x0cc0, 0x7848, -+ 0x794a, 0x2062, 0x0005, 0x6007, 0x0103, 0x608f, 0x0000, 0x20a9, -+ 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, -+ 0x601a, 0x682c, 0x6022, 0x0005, 0x00e6, 0xd7fc, 0x1128, 0x2071, -+ 0x4640, 0x2031, 0x46c0, 0x0020, 0x2071, 0x4680, 0x2031, 0x48c0, -+ 0x704c, 0xa08c, 0x0200, 0x1128, 0xa608, 0x2d0a, 0x8000, 0x704e, -+ 0xa006, 0x00ee, 0x0005, 0x00f6, 0xd7fc, 0x1118, 0x2079, 0x4640, -+ 0x0010, 0x2079, 0x4680, 0x080c, 0x1b7b, 0x2091, 0x8000, 0x6804, -+ 0x780a, 0xa065, 0x05f0, 0x0030, 0x2c00, 0x780a, 0x2060, 0x6000, -+ 0xa065, 0x05b8, 0x6010, 0xa306, 0x1db8, 0x600c, 0xa206, 0x1da0, -+ 0x2c28, 0x7848, 0xac06, 0x1108, 0x0448, 0x6804, 0xac06, 0x1140, -+ 0x6000, 0x2060, 0x6806, 0xa005, 0x1118, 0x6803, 0x0000, 0x0048, -+ 0x6400, 0x7808, 0x2060, 0x6402, 0xa486, 0x0000, 0x1110, 0x2c00, -+ 0x6802, 0x2560, 0x080c, 0x1be3, 0x601b, 0x0005, 0x6023, 0x0020, -+ 0x00fe, 0x080c, 0x1d95, 0x00f6, 0x7908, 0x8109, 0x790a, 0x6810, -+ 0x8001, 0x6812, 0x1118, 0x7810, 0xc0a5, 0x7812, 0x2001, 0xffff, -+ 0xa005, 0x00fe, 0x0005, 0x0076, 0x2700, 0x2039, 0x0000, 0xd0fc, -+ 0x0108, 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, -+ 0x2091, 0x8000, 0x080c, 0x1b93, 0x8738, 0xa784, 0x001f, 0x1dd0, -+ 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x1d90, -+ 0x2091, 0x8001, 0x007e, 0x0005, 0x786c, 0x2009, 0x8e74, 0x210c, -+ 0xa10d, 0x0118, 0xa065, 0x0804, 0x207a, 0x2061, 0x0000, 0x6018, -+ 0xd084, 0x11b8, 0x7810, 0xd08c, 0x0130, 0xc08c, 0x7812, 0xc7fc, -+ 0x2069, 0x4640, 0x0028, 0xc08d, 0x7812, 0x2069, 0x4680, 0xc7fd, -+ 0x2091, 0x8000, 0x681c, 0x681f, 0x0000, 0x2091, 0x8001, 0xa005, -+ 0x1108, 0x0005, 0xa08c, 0xfff0, 0x0110, 0x080c, 0x254c, 0x0002, -+ 0x1cb8, 0x1cbb, 0x1cc1, 0x1cc5, 0x1cb9, 0x1cc9, 0x1cb9, 0x1cb9, -+ 0x1cb9, 0x1ccf, 0x1cfb, 0x1cfe, 0x1d03, 0x1d0c, 0x1cb9, 0x1cb9, -+ 0x0005, 0x080c, 0x254c, 0x080c, 0x1c5b, 0x2001, 0x8001, 0x0804, -+ 0x1d15, 0x2001, 0x8003, 0x0804, 0x1d15, 0x2001, 0x8004, 0x0804, -+ 0x1d15, 0x080c, 0x1c5b, 0x2001, 0x8006, 0x0804, 0x1d15, 0x2091, -+ 0x8000, 0x0076, 0xd7fc, 0x1128, 0x2069, 0x4640, 0x2039, 0x0009, -+ 0x0020, 0x2069, 0x4680, 0x2039, 0x0009, 0x6800, 0xa086, 0x0000, -+ 0x0128, 0x000e, 0x6f1e, 0x2091, 0x8001, 0x0005, 0x6870, 0x007e, -+ 0xa0bc, 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, -+ 0x080c, 0x1b93, 0x8738, 0xa784, 0x001f, 0x1dd0, 0x2091, 0x8001, -+ 0x2001, 0x800a, 0x00d0, 0x2001, 0x800c, 0x00b8, 0x080c, 0x1c5b, -+ 0x2001, 0x800d, 0x0090, 0xd7fc, 0x0110, 0x78e4, 0x0008, 0x78e0, -+ 0x70c6, 0x2001, 0x800e, 0x0048, 0xd7fc, 0x0110, 0x78ec, 0x0008, -+ 0x78e8, 0x70c6, 0x2001, 0x800f, 0x0000, 0x70c2, 0xd7fc, 0x1118, -+ 0x70db, 0x0000, 0x0010, 0x70db, 0x0001, 0x2061, 0x0000, 0x601b, -+ 0x0001, 0x2091, 0x4080, 0x0005, 0xac80, 0x0001, 0x81ff, 0x0518, -+ 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x07ff, 0x0100, 0x7018, -+ 0x0006, 0x701c, 0x0006, 0x7020, 0x0006, 0x7024, 0x0006, 0x7112, -+ 0x81ac, 0x721a, 0x731e, 0x7422, 0x7526, 0x7003, 0x0001, 0x7007, -+ 0x0001, 0x7008, 0x800b, 0x1ee8, 0x7007, 0x0002, 0xa08c, 0x01e0, -+ 0x1110, 0x53a5, 0xa006, 0x7003, 0x0000, 0x7007, 0x0004, 0x000e, -+ 0x7026, 0x000e, 0x7022, 0x000e, 0x701e, 0x000e, 0x701a, 0x0005, -+ 0x2011, 0x0020, 0x2009, 0x0010, 0x6b0a, 0x6c0e, 0x681f, 0x0201, -+ 0x6803, 0xfd20, 0x6807, 0x0038, 0x6a1a, 0x2d00, 0xa0e8, 0x0008, -+ 0xa290, 0x0004, 0x8109, 0x1d80, 0x0005, 0x70ec, 0xd0dc, 0x1520, -+ 0x2029, 0x0001, 0x7814, 0xd0cc, 0x1160, 0x70ec, 0xd0e4, 0x2019, -+ 0x0c0a, 0x2021, 0x000a, 0x1120, 0x2019, 0x0c0c, 0x2021, 0x000c, -+ 0x0070, 0x70ec, 0xd0e4, 0x1128, 0x2019, 0x180c, 0x2021, 0x000c, -+ 0x0030, 0x2019, 0x1809, 0x2021, 0x0009, 0xa5ad, 0x0200, 0x6b0a, -+ 0x6c0e, 0x6d1e, 0x6807, 0x0038, 0x0005, 0x6004, 0x6086, 0x2c08, -+ 0x2063, 0x0000, 0x7868, 0xa005, 0x796a, 0x0110, 0x2c02, 0x0008, -+ 0x796e, 0x0005, 0x00c6, 0x2061, 0x4600, 0x6887, 0x0103, 0x2d08, -+ 0x206b, 0x0000, 0x6068, 0xa005, 0x616a, 0x0110, 0x2d02, 0x0008, -+ 0x616e, 0x00ce, 0x0005, 0x2091, 0x8000, 0x2c04, 0x786e, 0xa005, -+ 0x1108, 0x786a, 0x2091, 0x8001, 0x609c, 0xa005, 0x0188, 0x00c6, -+ 0x2060, 0x2008, 0x609c, 0xa005, 0x0138, 0x2062, 0x609f, 0x0000, -+ 0xa065, 0x609c, 0xa005, 0x1dc8, 0x7848, 0x794a, 0x2062, 0x00ce, -+ 0x7848, 0x2062, 0x609f, 0x0000, 0xac85, 0x0000, 0x1110, 0x080c, -+ 0x254c, 0x784a, 0x0005, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, -+ 0x818e, 0x1208, 0xa200, 0x1f04, 0x1ddf, 0x8086, 0x818e, 0x0005, -+ 0x0156, 0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, 0x12a8, 0x8213, -+ 0x818d, 0x0228, 0xa11a, 0x1220, 0x1f04, 0x1def, 0x0028, 0xa11a, -+ 0x2308, 0x8210, 0x1f04, 0x1def, 0x0006, 0x3200, 0xa084, 0xefff, -+ 0x2080, 0x000e, 0x015e, 0x0005, 0x0006, 0x3200, 0xa085, 0x1000, -+ 0x0cb8, 0x7d74, 0x70d0, 0xa506, 0x0904, 0x1ebd, 0x7810, 0x2050, -+ 0x080c, 0x1b58, 0x0904, 0x1ebd, 0xa046, 0x7970, 0x2500, 0x8000, -+ 0xa112, 0x2009, 0x0040, 0x1208, 0x0030, 0x72d0, 0xa206, 0x0118, -+ 0x8840, 0x2009, 0x0080, 0x00c6, 0x7112, 0x7007, 0x0001, 0x2099, -+ 0x0030, 0x20a9, 0x0020, 0xac80, 0x0001, 0x20a0, 0x2061, 0x0000, -+ 0x88ff, 0x0110, 0x080c, 0x1b58, 0x7008, 0xd0fc, 0x0de8, 0x7007, -+ 0x0002, 0x2091, 0x8001, 0xa08c, 0x01e0, 0x1538, 0x53a5, 0x8cff, -+ 0x1120, 0x88ff, 0x0904, 0x1eaa, 0x0050, 0x2c00, 0x788e, 0x20a9, -+ 0x0020, 0xac80, 0x0001, 0x20a0, 0x53a5, 0x0804, 0x1eaa, 0xa046, -+ 0x7218, 0x731c, 0xdac4, 0x0110, 0x7420, 0x7524, 0xa292, 0x0040, -+ 0xa39b, 0x0000, 0xa4a3, 0x0000, 0xa5ab, 0x0000, 0x721a, 0x731e, -+ 0xdac4, 0x0118, 0x7422, 0x7526, 0xa006, 0x7007, 0x0004, 0x0904, -+ 0x1eaa, 0x8cff, 0x0110, 0x080c, 0x1b60, 0x00ce, 0x080c, 0x1b60, -+ 0xa046, 0x7888, 0x8000, 0x788a, 0xa086, 0x0002, 0x01c0, 0x7a7c, -+ 0x7b78, 0xdac4, 0x0110, 0x7c84, 0x7d80, 0x7974, 0x8107, 0x8004, -+ 0x8004, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, -+ 0x721a, 0x731e, 0xdac4, 0x0588, 0x7422, 0x7526, 0x0470, 0x6014, -+ 0xd0fc, 0x1118, 0x2069, 0x4640, 0x0010, 0x2069, 0x4680, 0x2091, -+ 0x8000, 0x681f, 0x0002, 0x88ff, 0x0120, 0xa046, 0x788c, 0x2060, -+ 0x0c70, 0x788b, 0x0000, 0x78ac, 0xa085, 0x0003, 0x78ae, 0x2091, -+ 0x8001, 0x0098, 0x00ce, 0x788b, 0x0000, 0x080c, 0x2035, 0x6004, -+ 0xa084, 0x000f, 0x0059, 0x88ff, 0x0130, 0x788c, 0x2060, 0x6004, -+ 0xa084, 0x000f, 0x0019, 0x0804, 0x1e09, 0x0005, 0x0002, 0x1ecf, -+ 0x1eea, 0x1f03, 0x1ecf, 0x1f10, 0x1ee0, 0x1ecf, 0x1ecf, 0x1ecf, -+ 0x1ee8, 0x1f01, 0x1ecf, 0x1ecf, 0x1ecf, 0x1ecf, 0x1ecf, 0x2039, -+ 0x0400, 0x78bc, 0xa705, 0x78be, 0x6008, 0xa705, 0x600a, 0x080c, -+ 0x1f4c, 0x609c, 0x78ba, 0x609f, 0x0000, 0x080c, 0x2021, 0x0005, -+ 0x78bc, 0xd0c4, 0x0108, 0x0c58, 0x601c, 0xc0bd, 0x601e, 0x0030, -+ 0x080c, 0x205f, 0x78bc, 0xd0c4, 0x0108, 0x0c08, 0x78bf, 0x0000, -+ 0x6004, 0x8007, 0xa084, 0x00ff, 0x78b2, 0x8001, 0x0138, 0x080c, -+ 0x1f4c, 0x0120, 0x78bc, 0xc0c5, 0x78be, 0x0010, 0x0804, 0x1f67, -+ 0x0005, 0x080c, 0x205c, 0x78bc, 0xa08c, 0x0e00, 0x1110, 0xd0c4, -+ 0x1108, 0x0828, 0x080c, 0x1f4c, 0x1110, 0x0804, 0x1f67, 0x0005, -+ 0x78bc, 0xd0c4, 0x0110, 0x0804, 0x1ecf, 0x78bf, 0x0000, 0x6714, -+ 0x2011, 0x0001, 0x22a8, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0188, -+ 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001, 0x0150, 0xa7bc, -+ 0x8000, 0x2011, 0x0002, 0x20a9, 0x0100, 0xa08e, 0x0002, 0x0108, -+ 0x00c0, 0x080c, 0x1b7b, 0x2d00, 0x2091, 0x8000, 0x682b, 0x0000, -+ 0x682f, 0x0000, 0x6808, 0xa084, 0xffde, 0x680a, 0xade8, 0x0010, -+ 0x2091, 0x8001, 0x1f04, 0x1f34, 0x8211, 0x0118, 0x20a9, 0x0100, -+ 0x0c58, 0x080c, 0x1b60, 0x0005, 0x609f, 0x0000, 0x78b4, 0xa06d, -+ 0x2c00, 0x78b6, 0x1110, 0x78ba, 0x0038, 0x689e, 0x2d00, 0x6002, -+ 0x78b8, 0xad06, 0x1108, 0x6002, 0x78b0, 0x8001, 0x78b2, 0x1130, -+ 0x78bc, 0xc0c4, 0x78be, 0x78b8, 0x2060, 0xa006, 0x0005, 0x00e6, -+ 0xa02e, 0x2530, 0x7dba, 0x7db6, 0x65ae, 0x65b2, 0x601c, 0x60a2, -+ 0x2048, 0xa984, 0xe1ff, 0x601e, 0xa984, 0x0060, 0x0110, 0x080c, -+ 0x3fc1, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x6714, 0x2071, 0x4680, -+ 0xd7fc, 0x1110, 0x2071, 0x4640, 0xa784, 0x0f00, 0x800b, 0xa784, -+ 0x001f, 0x0120, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0x71c0, -+ 0xa168, 0x2700, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, -+ 0x71c4, 0xa100, 0x60c2, 0x2091, 0x8000, 0x7814, 0xd0c4, 0x0138, -+ 0xd7fc, 0x1118, 0xd0f4, 0x1140, 0x0010, 0xd0fc, 0x1128, 0x6e08, -+ 0xd684, 0x01f0, 0xd9fc, 0x11e0, 0x2091, 0x8001, 0x080c, 0x1be3, -+ 0x2091, 0x8000, 0x080c, 0x1d95, 0x2091, 0x8001, 0x7814, 0xd0c4, -+ 0x0904, 0x201f, 0xd7fc, 0x1120, 0xd0f4, 0x1130, 0x0804, 0x201f, -+ 0xd0fc, 0x1110, 0x0804, 0x201f, 0x601b, 0x0021, 0x0804, 0x201f, -+ 0x6024, 0xa096, 0x0001, 0x1110, 0x8000, 0x6026, 0x6a10, 0x6814, -+ 0xa202, 0x0268, 0x0160, 0x2091, 0x8001, 0x2039, 0x0200, 0x609c, -+ 0x78ba, 0x609f, 0x0000, 0x080c, 0x2021, 0x0804, 0x201f, 0x2c08, -+ 0xd9fc, 0x01f0, 0x6800, 0xa065, 0x01d8, 0x6a04, 0x7000, 0xa084, -+ 0x0002, 0x0168, 0x7048, 0xa206, 0x1150, 0x6b04, 0x2160, 0x2304, -+ 0x6002, 0xa005, 0x1108, 0x6902, 0x2260, 0x6102, 0x0098, 0x2d00, -+ 0x2060, 0x080c, 0x2693, 0x6e08, 0x2160, 0x6202, 0x6906, 0x0050, -+ 0x6800, 0x6902, 0xa065, 0x0110, 0x6102, 0x0008, 0x6906, 0x2160, -+ 0x6003, 0x0000, 0x2160, 0xd9fc, 0x0118, 0xa6b4, 0xfffc, 0x6e0a, -+ 0x6810, 0x7d08, 0x8528, 0x7d0a, 0x8000, 0x6812, 0x2091, 0x8001, -+ 0xd6b4, 0x0128, 0xa6b6, 0x0040, 0x6e0a, 0x080c, 0x1bf4, 0x00ee, -+ 0x0005, 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x080c, 0x1d95, -+ 0x2091, 0x8001, 0x78b8, 0xa065, 0x0128, 0x609c, 0x78ba, 0x609f, -+ 0x0000, 0x0c78, 0x78b6, 0x78ba, 0x0005, 0x7970, 0x7874, 0x2818, -+ 0xd384, 0x0118, 0x8000, 0xa112, 0x0220, 0x8000, 0xa112, 0x1278, -+ 0xc384, 0x7a7c, 0x721a, 0x7a78, 0x721e, 0xdac4, 0x0120, 0x7a84, -+ 0x7222, 0x7a80, 0x7226, 0xa006, 0xd384, 0x0108, 0x8000, 0x7876, -+ 0x70d2, 0x781c, 0xa005, 0x0138, 0x8001, 0x781e, 0x1120, 0x0e04, -+ 0x205b, 0x2091, 0x4080, 0x0005, 0x2039, 0x2071, 0x0010, 0x2039, -+ 0x2077, 0x2704, 0xa005, 0x0160, 0xac00, 0x2068, 0x6908, 0x6810, -+ 0x6912, 0x680a, 0x690c, 0x6814, 0x6916, 0x680e, 0x8738, 0x0c88, -+ 0x0005, 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, 0x0000, 0x0015, -+ 0x001b, 0x0000, 0x2041, 0x0000, 0x780c, 0x0002, 0x2223, 0x21fe, -+ 0x2082, 0x20f2, 0x2039, 0x8e74, 0x2734, 0x7d10, 0x00c0, 0x6084, -+ 0xa086, 0x0103, 0x1904, 0x20dc, 0x6114, 0x6018, 0xa105, 0x0120, -+ 0x86ff, 0x11d8, 0x0804, 0x20dc, 0x8603, 0xa080, 0x8e55, 0x620c, -+ 0x2202, 0x8000, 0x6210, 0x2202, 0x080c, 0x1db3, 0x8630, 0xa68e, -+ 0x000f, 0x0904, 0x215d, 0x786c, 0xa065, 0x1d08, 0x7808, 0xa602, -+ 0x1220, 0xd5ac, 0x1110, 0x263a, 0x0005, 0xa682, 0x0003, 0x1a04, -+ 0x215d, 0x2091, 0x8000, 0x2069, 0x0000, 0x6818, 0xd084, 0x11f8, -+ 0x2011, 0x8e55, 0x2204, 0x70c6, 0x8210, 0x2204, 0x70ca, 0xd684, -+ 0x1130, 0x8210, 0x2204, 0x70da, 0x8210, 0x2204, 0x70de, 0xa685, -+ 0x8020, 0x70c2, 0x681b, 0x0001, 0x2091, 0x4080, 0x7810, 0xa084, -+ 0xffcf, 0x7812, 0x2091, 0x8001, 0x203b, 0x0000, 0x0005, 0x7810, -+ 0xc0ad, 0x7812, 0x0804, 0x215d, 0x263a, 0x080c, 0x2229, 0x1904, -+ 0x2245, 0x786c, 0xa065, 0x1904, 0x2087, 0x2091, 0x8000, 0x7810, -+ 0xa084, 0xffcf, 0x86ff, 0x0108, 0xc0ad, 0x7812, 0x2091, 0x8001, -+ 0x0804, 0x2245, 0x2039, 0x8e74, 0x2734, 0x7d10, 0x00a0, 0x6084, -+ 0xa086, 0x0103, 0x1904, 0x2147, 0x6114, 0x6018, 0xa105, 0x0120, -+ 0x86ff, 0x11b8, 0x0804, 0x2147, 0xa680, 0x8e55, 0x620c, 0x2202, -+ 0x080c, 0x1db3, 0x8630, 0xa68e, 0x001e, 0x0904, 0x215d, 0x786c, -+ 0xa065, 0x1d28, 0x7808, 0xa602, 0x1220, 0xd5ac, 0x1110, 0x263a, -+ 0x0005, 0xa682, 0x0006, 0x1a04, 0x215d, 0x2091, 0x8000, 0x2069, -+ 0x0000, 0x6818, 0xd084, 0x11f8, 0x2011, 0x8e55, 0x2009, 0x8e4e, -+ 0x26a8, 0x211c, 0x2204, 0x201a, 0x8108, 0x8210, 0x1f04, 0x2129, -+ 0xa685, 0x8030, 0x70c2, 0x681b, 0x0001, 0x2091, 0x4080, 0x7810, -+ 0xa084, 0xffcf, 0x7812, 0x2091, 0x8001, 0xa006, 0x2009, 0x8e75, -+ 0x200a, 0x203a, 0x0005, 0x7810, 0xc0ad, 0x7812, 0x00b0, 0x263a, -+ 0x080c, 0x2229, 0x1904, 0x2245, 0x786c, 0xa065, 0x1904, 0x20f7, -+ 0x2091, 0x8000, 0x7810, 0xa084, 0xffcf, 0x86ff, 0x0108, 0xc0ad, -+ 0x7812, 0x2091, 0x8001, 0x0804, 0x2245, 0x2091, 0x8000, 0x7007, -+ 0x0004, 0x7994, 0x70d4, 0xa102, 0x0228, 0x0168, 0x7b90, 0xa302, -+ 0x1150, 0x0010, 0x8002, 0x1138, 0x263a, 0x7810, 0xc0ad, 0x7812, -+ 0x2091, 0x8001, 0x0005, 0xa184, 0xff00, 0x0140, 0x810f, 0x810c, -+ 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, 0x0018, 0x8107, 0x8004, -+ 0x8004, 0x7a9c, 0xa210, 0x721a, 0x7a98, 0xa006, 0xa211, 0x721e, -+ 0xd4c4, 0x0130, 0x7aa4, 0xa211, 0x7222, 0x7aa0, 0xa211, 0x7226, -+ 0x20a1, 0x0030, 0x7003, 0x0000, 0x2009, 0x8e54, 0x260a, 0x8109, -+ 0x2198, 0x2104, 0xd084, 0x0108, 0x8633, 0xa6b0, 0x0002, 0x26a8, -+ 0x53a6, 0x8603, 0x7012, 0x7007, 0x0001, 0x7990, 0x7894, 0x8000, -+ 0xa10a, 0x1208, 0xa006, 0x2028, 0x7974, 0xa184, 0xff00, 0x0140, -+ 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, 0x0018, -+ 0x8107, 0x8004, 0x8004, 0x797c, 0xa108, 0x7a78, 0xa006, 0xa211, -+ 0xd4c4, 0x0120, 0x7b84, 0xa319, 0x7c80, 0xa421, 0x7008, 0xd0fc, -+ 0x0de8, 0xa084, 0x01e0, 0x01d0, 0x7d10, 0x2031, 0x8e54, 0x2634, -+ 0x78a8, 0x8000, 0x78aa, 0xd08c, 0x1138, 0x7007, 0x0006, 0x7004, -+ 0xd094, 0x1de8, 0x0804, 0x215f, 0x2069, 0x4647, 0x206b, 0x0003, -+ 0x78ac, 0xa085, 0x0300, 0x78ae, 0xa006, 0x0048, 0x2030, 0x75d6, -+ 0x2091, 0x4080, 0x7d96, 0x7d10, 0xa5ac, 0xffcf, 0x7d12, 0x2091, -+ 0x8001, 0x78aa, 0x7007, 0x0006, 0x263a, 0x7003, 0x0001, 0x711a, -+ 0x721e, 0xd5c4, 0x0110, 0x7322, 0x7426, 0x0005, 0x6084, 0xa086, -+ 0x0103, 0x11d8, 0x6114, 0x6018, 0xa105, 0x11b8, 0x2069, 0x0000, -+ 0x6818, 0xd084, 0x1190, 0x600c, 0x70c6, 0x6010, 0x70ca, 0x70c3, -+ 0x8020, 0x681b, 0x0001, 0x2091, 0x4080, 0x080c, 0x1db3, 0x0e04, -+ 0x221c, 0x786c, 0xa065, 0x1d10, 0x0005, 0x0059, 0x1530, 0x786c, -+ 0xa065, 0x19e0, 0x0410, 0x0029, 0x1500, 0x786c, 0xa065, 0x1dd8, -+ 0x00e0, 0x6084, 0xa086, 0x0103, 0x1168, 0x6018, 0xc0fc, 0x601a, -+ 0xa086, 0x0004, 0x1138, 0x7804, 0xd0a4, 0x0120, 0x080c, 0x1db3, -+ 0xa006, 0x0005, 0x0079, 0x1118, 0xa085, 0x0001, 0x0005, 0x00b9, -+ 0x1110, 0x2041, 0x0001, 0x7d10, 0x0005, 0x88ff, 0x0110, 0x2091, -+ 0x4080, 0x0005, 0x7b90, 0x7994, 0x70d4, 0xa102, 0x1118, 0xa385, -+ 0x0000, 0x0005, 0x0210, 0xa302, 0x0005, 0x8002, 0x0005, 0xa184, -+ 0xff00, 0x0140, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, -+ 0xa100, 0x0018, 0x8107, 0x8004, 0x8004, 0x7a9c, 0x7b98, 0x7ca4, -+ 0x7da0, 0xa210, 0xa006, 0xa319, 0xa421, 0xa529, 0x2009, 0x0018, -+ 0x6028, 0xa005, 0x0110, 0x2009, 0x0040, 0x080c, 0x1b15, 0x01d0, -+ 0x78a8, 0x8000, 0x78aa, 0xd08c, 0x1510, 0x6014, 0xd0fc, 0x1118, -+ 0x2069, 0x4640, 0x0010, 0x2069, 0x4680, 0x2091, 0x8000, 0x681f, -+ 0x0003, 0x78ab, 0x0000, 0x78ac, 0xa085, 0x0300, 0x78ae, 0x2091, -+ 0x8001, 0x0068, 0x78ab, 0x0000, 0x080c, 0x1db3, 0x7990, 0x7894, -+ 0x8000, 0xa10a, 0x1208, 0xa006, 0x7896, 0x70d6, 0xa006, 0x2071, -+ 0x0010, 0x2091, 0x8001, 0x0005, 0xd7fc, 0x1118, 0x2009, 0x4658, -+ 0x0010, 0x2009, 0x4698, 0x2091, 0x8000, 0x200a, 0x00f6, 0x2009, -+ 0x4680, 0x2079, 0x0100, 0xd7fc, 0x1120, 0x2009, 0x4640, 0x2079, -+ 0x0200, 0x2104, 0xa086, 0x0000, 0x1180, 0xd7fc, 0x1118, 0x2009, -+ 0x4645, 0x0010, 0x2009, 0x4685, 0x2104, 0xa005, 0x1130, 0x7830, -+ 0xa084, 0x00c0, 0x1110, 0x781b, 0x0052, 0x00fe, 0x0005, 0x2009, -+ 0x0002, 0x2069, 0x4600, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, -+ 0x2324, 0x2071, 0x4680, 0x2079, 0x0100, 0x2021, 0x48bf, 0x784b, -+ 0x000f, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x0118, 0x2019, 0x3e0f, -+ 0x0030, 0x20a1, 0x012b, 0x2019, 0x3e0f, 0xd184, 0x0110, 0x20a1, -+ 0x022b, 0x2304, 0xa005, 0x0140, 0x789a, 0x8318, 0x23ac, 0x8318, -+ 0x2398, 0x53a6, 0x3318, 0x0ca8, 0x789b, 0x0000, 0x789b, 0x0020, -+ 0x20a9, 0x0010, 0x78af, 0x0000, 0x78af, 0x2020, 0x1f04, 0x2302, -+ 0x7003, 0x0000, 0x0016, 0xd18c, 0x2009, 0x0000, 0x0108, 0xc1bd, -+ 0x080c, 0x2443, 0x001e, 0x7020, 0xa084, 0x000f, 0xa085, 0x6300, -+ 0x7806, 0x780f, 0x9000, 0x7843, 0x00d8, 0x7853, 0x0090, 0x780b, -+ 0x2f08, 0x7452, 0x704f, 0x0000, 0x8109, 0x0140, 0x2071, 0x4640, -+ 0x2079, 0x0200, 0x2021, 0x46bf, 0x0804, 0x22df, 0x080c, 0x24fd, -+ 0x0005, 0x0016, 0x2011, 0x0101, 0xd1bc, 0x1110, 0x2011, 0x0201, -+ 0xa18c, 0x000f, 0x2204, 0xa084, 0xfff0, 0xa105, 0x2012, 0x001e, -+ 0x080c, 0x2443, 0x0005, 0x2011, 0x0101, 0xd3fc, 0x1110, 0x2011, -+ 0x0201, 0x20a9, 0x0009, 0x810b, 0x1f04, 0x234b, 0xa18c, 0x0e00, -+ 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, 0x0005, 0x2019, 0x0002, -+ 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x1f04, 0x235c, 0xa294, -+ 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a, 0x8319, 0x0118, -+ 0x2009, 0x0201, 0x0c78, 0x0005, 0x2011, 0x0101, 0xd3fc, 0x1110, -+ 0x2011, 0x0201, 0x20a9, 0x000c, 0x810b, 0x1f04, 0x2374, 0xa18c, -+ 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105, 0x2012, 0x0005, 0x2011, -+ 0x0102, 0xd3fc, 0x1110, 0x2011, 0x0202, 0x2204, 0xa084, 0xf0cf, -+ 0xa105, 0x2012, 0x0005, 0x00c6, 0x2061, 0x0100, 0xd1bc, 0x1110, -+ 0x2061, 0x0200, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0020, 0x609a, -+ 0x62ac, 0x63ac, 0x00ce, 0x0005, 0x00c6, 0x2061, 0x0100, 0xd1bc, -+ 0x1110, 0x2061, 0x0200, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0022, -+ 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x00ce, 0x0005, 0x00c6, -+ 0x2061, 0x0100, 0xd1bc, 0x1110, 0x2061, 0x0200, 0xc1bc, 0x8103, -+ 0x8003, 0xa080, 0x0020, 0x609a, 0x60a4, 0xa28c, 0x0020, 0x0118, -+ 0xc2ac, 0xa39d, 0x4000, 0xc3ec, 0xd3b4, 0x1108, 0xc3ed, 0x62ae, -+ 0x2010, 0x60a4, 0x63ae, 0x2018, 0x00ce, 0x0005, 0x2091, 0x8000, -+ 0x00c6, 0x00e6, 0x6818, 0xa005, 0x0904, 0x2427, 0xd1fc, 0x0118, -+ 0x2061, 0x8dd0, 0x0010, 0x2061, 0x8cc0, 0x080c, 0x242f, 0x0560, -+ 0x20a9, 0x0101, 0xd1fc, 0x0118, 0x2061, 0x8cd0, 0x0010, 0x2061, -+ 0x8bc0, 0x00c6, 0x080c, 0x242f, 0x0128, 0x00ce, 0x8c60, 0x1f04, -+ 0x23e9, 0x04a8, 0x000e, 0xd1fc, 0x0128, 0xa082, 0x8cd0, 0x2071, -+ 0x4680, 0x0020, 0xa082, 0x8bc0, 0x2071, 0x4640, 0x7076, 0x7172, -+ 0x2138, 0x2001, 0x0004, 0x7062, 0x707f, 0x000f, 0x71d0, 0xc1c4, -+ 0x71d2, 0x080c, 0x22a4, 0x00c0, 0xd1fc, 0x1118, 0x2071, 0x4640, -+ 0x0010, 0x2071, 0x4680, 0x6020, 0xc0dd, 0x6022, 0x7172, 0x2138, -+ 0x2c00, 0x707a, 0x2001, 0x0006, 0x7062, 0x707f, 0x000f, 0x71d0, -+ 0xc1c4, 0x71d2, 0x080c, 0x22a4, 0x2001, 0x0000, 0x0010, 0x2001, -+ 0x0001, 0x2091, 0x8001, 0xa005, 0x00ee, 0x00ce, 0x0005, 0x2c04, -+ 0xa005, 0x0170, 0x2060, 0x6010, 0xa306, 0x1140, 0x600c, 0xa206, -+ 0x1128, 0x6014, 0xa106, 0x1110, 0xa006, 0x0020, 0x6000, 0x0c80, -+ 0xa085, 0x0001, 0x0005, 0x00f6, 0x00e6, 0x0016, 0x2079, 0x4680, -+ 0x2071, 0x0100, 0xd1bc, 0x1120, 0x2079, 0x4640, 0x2071, 0x0200, -+ 0x7920, 0xa18c, 0x000f, 0x70ec, 0xd0c4, 0x1110, 0x001e, 0x0060, -+ 0x810b, 0x810b, 0x810b, 0x810b, 0x000e, 0xa18d, 0x0800, 0xd0bc, -+ 0x1110, 0xa18d, 0x0f00, 0x2104, 0x00ee, 0x00fe, 0x0005, 0x2001, -+ 0x4601, 0x2004, 0xd0ac, 0x1138, 0x68e4, 0xd0ac, 0x0120, 0xa084, -+ 0x0006, 0x1108, 0x0009, 0x0005, 0x6014, 0x00e6, 0x0036, 0x2018, -+ 0x2071, 0x4b40, 0xd0fc, 0x1110, 0x2071, 0x4ac0, 0x8007, 0xa084, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0xae70, 0x7004, 0xa084, 0x000a, -+ 0x1904, 0x24fa, 0x7108, 0xa194, 0xff00, 0x0904, 0x24fa, 0xa18c, -+ 0x00ff, 0x701c, 0xa084, 0xff00, 0x01c0, 0x7004, 0xa085, 0x003a, -+ 0x7006, 0x2001, 0x0009, 0xa102, 0x16d8, 0x2001, 0x000a, 0xa102, -+ 0x16d0, 0x2001, 0x000c, 0xa102, 0x16c8, 0x701c, 0xa084, 0x00ff, -+ 0x701e, 0x7004, 0xa084, 0xffdf, 0x7006, 0x2001, 0x000a, 0xa106, -+ 0x01a8, 0x2001, 0x000c, 0xa106, 0x01a0, 0x2001, 0x0012, 0xa106, -+ 0x0198, 0x2001, 0x0014, 0xa106, 0x0190, 0x2001, 0x0019, 0xa106, -+ 0x0188, 0x2001, 0x0032, 0xa106, 0x0180, 0x00d8, 0x2009, 0x000c, -+ 0x00d0, 0x2009, 0x0012, 0x00b8, 0x2009, 0x0014, 0x00a0, 0x2009, -+ 0x0019, 0x0088, 0x2009, 0x0020, 0x0070, 0x2009, 0x003f, 0x0058, -+ 0x2009, 0x000a, 0x0040, 0x2009, 0x000c, 0x0028, 0x2009, 0x0019, -+ 0x0010, 0x2011, 0x0000, 0x2100, 0xa205, 0x700a, 0x7004, 0xa085, -+ 0x000a, 0x7006, 0x2071, 0x4600, 0x7004, 0xd0bc, 0x0158, 0xd3fc, -+ 0x1120, 0x73ea, 0x2071, 0x4640, 0x0018, 0x73ee, 0x2071, 0x4680, -+ 0x701f, 0x000d, 0x003e, 0x00ee, 0x0005, 0x2001, 0x01ff, 0x2004, -+ 0xd0fc, 0x11d0, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x12a0, -+ 0x2071, 0x0200, 0x71ec, 0xa18c, 0x1c00, 0x810f, 0x810c, 0x810c, -+ 0x2079, 0x0100, 0x78ec, 0xa084, 0x1c00, 0x8007, 0x8004, 0x8004, -+ 0xa105, 0xa08a, 0x0007, 0x0208, 0x0005, 0x0002, 0x254b, 0x2532, -+ 0x254b, 0x2532, 0x2525, 0x253f, 0x2525, 0x7008, 0xa084, 0xc3ff, -+ 0xa085, 0x3000, 0x700a, 0x7808, 0xa084, 0xc3ff, 0xa085, 0x3000, -+ 0x780a, 0x0005, 0x7008, 0xa084, 0xc3ff, 0xa085, 0x2000, 0x700a, -+ 0x7808, 0xa084, 0xc3ff, 0xa085, 0x2000, 0x780a, 0x0005, 0x7008, -+ 0xa084, 0xc3ff, 0xa085, 0x0c00, 0x700a, 0x7808, 0xa084, 0xc3ff, -+ 0xa085, 0x0c00, 0x780a, 0x0005, 0x0e04, 0x254c, 0x2091, 0x8000, -+ 0x2071, 0x0000, 0x0006, 0x7018, 0xd084, 0x1de8, 0x000e, 0x2071, -+ 0x0010, 0x70ca, 0x000e, 0x70c6, 0x70c3, 0x8002, 0x70db, 0x0a04, -+ 0x70df, 0x0020, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, -+ 0x0cf8, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x78a0, 0x708a, 0x758e, -+ 0x7492, 0x7696, 0x779a, 0xa594, 0x003f, 0xd4f4, 0x0138, 0xd7bc, -+ 0x1128, 0xa784, 0x007d, 0x1904, 0x3c74, 0x0871, 0xa49c, 0x000f, -+ 0xa382, 0x0004, 0x0320, 0xa3a6, 0x0007, 0x1930, 0x2418, 0x8507, -+ 0xa084, 0x000f, 0x0002, 0x2b49, 0x2c34, 0x2c72, 0x2ed8, 0x3256, -+ 0x32ad, 0x3353, 0x33e2, 0x34b6, 0x3588, 0x259e, 0x259b, 0x2970, -+ 0x2a56, 0x322a, 0x259b, 0x080c, 0x254c, 0x0005, 0xa006, 0x0038, -+ 0x7808, 0xc08d, 0x780a, 0xa006, 0x7002, 0x704a, 0x7042, 0x70ce, -+ 0x705c, 0xa005, 0x1904, 0x26ec, 0x7060, 0xa084, 0x0007, 0x0002, -+ 0x25b8, 0x2626, 0x262e, 0x2637, 0x2640, 0x26d2, 0x2649, 0x2626, -+ 0x7830, 0xd0bc, 0x1d10, 0x71d0, 0xd1bc, 0x19f8, 0xd1b4, 0x1904, -+ 0x2603, 0x70a0, 0xa086, 0x0001, 0x09c0, 0x70b0, 0xa06d, 0x6800, -+ 0xa065, 0xa055, 0x789b, 0x0080, 0x6b0c, 0x7baa, 0x6808, 0xa045, -+ 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886, 0x0001, 0x0118, 0x69bc, -+ 0x7daa, 0x79aa, 0x68c0, 0xa04d, 0x6e1c, 0x2001, 0x0010, 0x0804, -+ 0x281f, 0x705c, 0xa005, 0x1904, 0x259d, 0x00c6, 0x00d6, 0x70b0, -+ 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, 0x0080, 0x6b0c, 0x7baa, -+ 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886, 0x0001, -+ 0x0118, 0x69bc, 0x7daa, 0x79aa, 0x68c0, 0xa04d, 0x6e1c, 0x2001, -+ 0x0020, 0x0804, 0x281f, 0x080c, 0x3c33, 0x1904, 0x259d, 0x781b, -+ 0x0068, 0x70b8, 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, -+ 0x6898, 0x78d2, 0x78da, 0x7808, 0xc08d, 0x780a, 0x68bc, 0x703e, -+ 0xc1b4, 0x71d2, 0x70b4, 0xa065, 0x68c0, 0x7056, 0x7003, 0x0002, -+ 0x2d00, 0x704a, 0xad80, 0x0009, 0x7042, 0x0005, 0x080c, 0x3c33, -+ 0x1120, 0x781b, 0x0054, 0x7003, 0x0004, 0x0005, 0x080c, 0x3c33, -+ 0x1128, 0x2011, 0x000c, 0x0419, 0x7003, 0x0004, 0x0005, 0x080c, -+ 0x3c33, 0x1128, 0x2011, 0x0006, 0x00d1, 0x7003, 0x0004, 0x0005, -+ 0x080c, 0x3c33, 0x1128, 0x2011, 0x000d, 0x0089, 0x7003, 0x0004, -+ 0x0005, 0x080c, 0x3c33, 0x1150, 0x2011, 0x0006, 0x0041, 0x7078, -+ 0x707b, 0x0000, 0x2068, 0x704a, 0x7003, 0x0004, 0x0005, 0x7170, -+ 0xc1fc, 0x8107, 0x7882, 0x789b, 0x0080, 0xa286, 0x000c, 0x1120, -+ 0x7aaa, 0x2001, 0x0001, 0x0098, 0xa18c, 0x001f, 0xa18d, 0x00c0, -+ 0x79aa, 0xa286, 0x000d, 0x0120, 0x7aaa, 0x2001, 0x0002, 0x0038, -+ 0x78ab, 0x0020, 0x7174, 0x79aa, 0x7aaa, 0x2001, 0x0004, 0x789b, -+ 0x0060, 0x78aa, 0x785b, 0x0004, 0x781b, 0x0113, 0x080c, 0x3c46, -+ 0x707f, 0x000f, 0x70d0, 0xd0b4, 0x0168, 0xc0b4, 0x70d2, 0x00c6, -+ 0x70b4, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, -+ 0x601a, 0x00ce, 0x0005, 0x7014, 0xa005, 0x1138, 0x70d0, 0xd0b4, -+ 0x0128, 0x70b4, 0xac06, 0x1110, 0x0c29, 0x0005, 0x0016, 0x71a0, -+ 0xa186, 0x0001, 0x0528, 0x00d6, 0x0026, 0x2100, 0x2011, 0x0001, -+ 0xa212, 0x70b0, 0x2068, 0x6800, 0xac06, 0x0120, 0x8211, 0x01b0, -+ 0x00c9, 0x0cc8, 0x00c6, 0x2100, 0x2011, 0x0001, 0xa212, 0x70b0, -+ 0x2068, 0x6800, 0x2060, 0x6008, 0xa084, 0xfbef, 0x600a, 0x8211, -+ 0x0110, 0x0041, 0x0cb0, 0x70a3, 0x0001, 0x00ce, 0x002e, 0x00de, -+ 0x001e, 0x0005, 0xade8, 0x0005, 0x70a8, 0xad06, 0x1110, 0x70a4, -+ 0x2068, 0x0005, 0x080c, 0x3c33, 0x1904, 0x259d, 0x7078, 0x2068, -+ 0x7770, 0x080c, 0x3b6f, 0x2c50, 0x080c, 0x3cce, 0x789b, 0x0080, -+ 0x6814, 0xa084, 0x001f, 0xc0bd, 0x78aa, 0x6e1c, 0x2041, 0x0001, -+ 0x2001, 0x0004, 0x0804, 0x2824, 0x080c, 0x3c33, 0x1904, 0x259d, -+ 0x789b, 0x0080, 0x705c, 0x2068, 0x6f14, 0x70d0, 0xd0b4, 0x0168, -+ 0xc0b4, 0x70d2, 0x00c6, 0x70b4, 0xa065, 0x6008, 0xa084, 0xfbef, -+ 0x600a, 0x6018, 0x8001, 0x601a, 0x00ce, 0x080c, 0x3b6f, 0x2c50, -+ 0x080c, 0x3cce, 0x6824, 0xa005, 0x0130, 0xa082, 0x0006, 0x0208, -+ 0x0010, 0x6827, 0x0005, 0x6814, 0xa084, 0x001f, 0xc0bd, 0x78aa, -+ 0x2031, 0x0020, 0x2041, 0x0001, 0x2001, 0x0003, 0x0804, 0x2824, -+ 0xc28d, 0x72d2, 0x72bc, 0xa200, 0xa015, 0x7150, 0x8108, 0xa12a, -+ 0x0208, 0x71bc, 0x2164, 0x6504, 0x85ff, 0x1170, 0x7152, 0x8421, -+ 0x1da8, 0x70d0, 0xd08c, 0x0128, 0x70cc, 0xa005, 0x1110, 0x70cf, -+ 0x000a, 0x0005, 0x2200, 0x0c90, 0x70d0, 0xc08c, 0x70d2, 0x70cf, -+ 0x0000, 0x6034, 0xa005, 0x1db0, 0x6708, 0xa784, 0x073f, 0x01d0, -+ 0xd7d4, 0x1d80, 0xa784, 0x0021, 0x1d68, 0xa784, 0x0002, 0x0130, -+ 0xa784, 0x0004, 0x0d38, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0218, -+ 0x1d08, 0xa784, 0x0100, 0x0130, 0x6018, 0xa005, 0x19d8, 0xa7bc, -+ 0xfeff, 0x670a, 0x2568, 0x6823, 0x0000, 0x6e1c, 0xa684, 0x000e, -+ 0x6318, 0x0128, 0x601c, 0xa302, 0x0220, 0x0118, 0x0858, 0x83ff, -+ 0x1948, 0x2d58, 0x2c50, 0x7152, 0xd7bc, 0x1120, 0x7028, 0x6022, -+ 0x603a, 0x0010, 0xc7bc, 0x670a, 0x68c0, 0xa065, 0xa04d, 0x6100, -+ 0x2a60, 0x2041, 0x0001, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, -+ 0xd1fc, 0x0110, 0xd684, 0x0110, 0xa39c, 0xffbf, 0xd6a4, 0x0110, -+ 0xa39d, 0x0020, 0xa684, 0x000e, 0x1904, 0x27d6, 0xc7a5, 0x670a, -+ 0x2c00, 0x68c6, 0x77a0, 0xa786, 0x0001, 0x1178, 0x70d0, 0xd0b4, -+ 0x1160, 0x7000, 0xa082, 0x0002, 0x1240, 0x7830, 0xd0bc, 0x1128, -+ 0x789b, 0x0080, 0x7baa, 0x0804, 0x281d, 0x8739, 0x77a2, 0x2750, -+ 0x77ac, 0xa7b0, 0x0005, 0x70a8, 0xa606, 0x1108, 0x76a4, 0x76ae, -+ 0x2c3a, 0x8738, 0x2d3a, 0x8738, 0x283a, 0x8738, 0x233a, 0x8738, -+ 0x253a, 0x7830, 0xd0bc, 0x0150, 0x2091, 0x8000, 0x2091, 0x303d, -+ 0x70d0, 0xa084, 0x303d, 0x2091, 0x8000, 0x2090, 0xaad5, 0x0000, -+ 0x0120, 0x8421, 0x2200, 0x1904, 0x2725, 0x0005, 0xd1dc, 0x0904, -+ 0x37ce, 0x2029, 0x0020, 0xd69c, 0x1120, 0x8528, 0xd68c, 0x1108, -+ 0x8528, 0x8840, 0x6f14, 0x610c, 0x8108, 0xa18c, 0x00ff, 0x70c8, -+ 0xa160, 0x2c64, 0x8cff, 0x0188, 0x6014, 0xa706, 0x1dd0, 0x60b8, -+ 0x8001, 0x60ba, 0x1d88, 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, -+ 0x2200, 0x8421, 0x1904, 0x2725, 0x0005, 0x2a60, 0x610e, 0x69be, -+ 0x2c00, 0x68c6, 0x8840, 0x6008, 0xc0d5, 0x600a, 0x77a0, 0xa786, -+ 0x0001, 0x1904, 0x27ad, 0x70d0, 0xd0b4, 0x1904, 0x27ad, 0x7000, -+ 0xa082, 0x0002, 0x1a04, 0x27ad, 0x7830, 0xd0bc, 0x1904, 0x27ad, -+ 0x789b, 0x0080, 0x7baa, 0x7daa, 0x79aa, 0x2001, 0x0002, 0x0006, -+ 0x6018, 0x8000, 0x601a, 0x0008, 0x0006, 0x2960, 0x6104, 0x2a60, -+ 0x080c, 0x3ce1, 0x1590, 0xa184, 0x0018, 0x0180, 0xa184, 0x0010, -+ 0x0118, 0x080c, 0x3977, 0x1548, 0xa184, 0x0008, 0x0138, 0x69a0, -+ 0xa184, 0x0600, 0x1118, 0x080c, 0x3895, 0x00f8, 0x69a0, 0xa184, -+ 0x1e00, 0x0528, 0xa184, 0x0800, 0x0178, 0x00c6, 0x2960, 0x6000, -+ 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d, 0x0010, 0x6106, 0x00ce, -+ 0x080c, 0x3977, 0x1150, 0x69a0, 0xa184, 0x0200, 0x0118, 0x080c, -+ 0x38da, 0x0018, 0xa184, 0x0400, 0x19f0, 0x69a0, 0xa184, 0x1000, -+ 0x0130, 0x6914, 0xa18c, 0xff00, 0x810f, 0x080c, 0x239c, 0x002e, -+ 0xa68c, 0x00e0, 0xa684, 0x0060, 0x0128, 0xa086, 0x0060, 0x1110, -+ 0xa18d, 0x4000, 0xa18d, 0x0104, 0x69b6, 0x789b, 0x0060, 0x2800, -+ 0x78aa, 0x6818, 0xc0fd, 0x681a, 0xd6bc, 0x0168, 0xc0fc, 0x7083, -+ 0x0000, 0xa08a, 0x000d, 0x0328, 0xa08a, 0x000c, 0x7182, 0x2001, -+ 0x000c, 0x800c, 0x7186, 0x78aa, 0x3518, 0x3340, 0x3428, 0x8000, -+ 0x80ac, 0xaf80, 0x002b, 0x20a0, 0x789b, 0x0000, 0xad80, 0x000b, -+ 0x2098, 0x53a6, 0x23a8, 0x2898, 0x25a0, 0xa286, 0x0020, 0x1508, -+ 0x70d0, 0xc0b5, 0x70d2, 0x2c00, 0x70b6, 0x2d00, 0x70ba, 0x6814, -+ 0xc0fc, 0x8007, 0x7882, 0xa286, 0x0002, 0x0904, 0x28f5, 0x70a0, -+ 0x8000, 0x70a2, 0x74b0, 0xa498, 0x0005, 0x70a8, 0xa306, 0x1108, -+ 0x73a4, 0x73b2, 0xa286, 0x0010, 0x0904, 0x259d, 0x00de, 0x00ce, -+ 0x0005, 0x7000, 0xa005, 0x19e0, 0xa286, 0x0002, 0x1904, 0x290c, -+ 0x080c, 0x3c33, 0x19a8, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x2091, -+ 0x8000, 0x781b, 0x0068, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, -+ 0x6898, 0x78d2, 0x78da, 0x2091, 0x8001, 0x7808, 0xc08d, 0x780a, -+ 0x0126, 0x00d6, 0x00c6, 0x70d0, 0xa084, 0x2e00, 0x2090, 0x00ce, -+ 0x00de, 0x012e, 0x2900, 0x7056, 0x68bc, 0x703e, 0x7003, 0x0002, -+ 0x2d00, 0x704a, 0xad80, 0x0009, 0x7042, 0x7830, 0xd0bc, 0x0140, -+ 0x2091, 0x303d, 0x70d0, 0xa084, 0x303d, 0x2091, 0x8000, 0x2090, -+ 0x70a0, 0xa005, 0x1108, 0x0005, 0x8421, 0x0de8, 0x724c, 0x70bc, -+ 0xa200, 0xa015, 0x0804, 0x2725, 0xa286, 0x0010, 0x1560, 0x080c, -+ 0x3c33, 0x1904, 0x28a0, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x781b, -+ 0x0068, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, -+ 0x78da, 0x7808, 0xc08d, 0x780a, 0x70a0, 0x8000, 0x70a2, 0x74b0, -+ 0xa490, 0x0005, 0x70a8, 0xa206, 0x1108, 0x72a4, 0x72b2, 0x2900, -+ 0x7056, 0x68bc, 0x703e, 0x7003, 0x0002, 0x2d00, 0x704a, 0xad80, -+ 0x0009, 0x7042, 0x0005, 0x6bb4, 0xa39d, 0x2000, 0x7b5a, 0x6814, -+ 0xc0fc, 0x8007, 0x7882, 0x6b94, 0x7bd6, 0x7bde, 0x6e98, 0x7ed2, -+ 0x7eda, 0x781b, 0x0068, 0x2900, 0x7056, 0x7202, 0x7808, 0xc08d, -+ 0x780a, 0x2300, 0xa605, 0x0170, 0x70d0, 0xa084, 0x2e00, 0xa086, -+ 0x2600, 0x1118, 0x2009, 0x0000, 0x0010, 0x2009, 0x0001, 0xa284, -+ 0x000f, 0x0023, 0xad80, 0x0009, 0x7042, 0x0005, 0x296e, 0x41d9, -+ 0x41d9, 0x41c7, 0x41d9, 0x296e, 0x296e, 0x296e, 0x080c, 0x254c, -+ 0x7808, 0xa084, 0xfffd, 0x780a, 0x00f6, 0x2079, 0x4600, 0x78ac, -+ 0x00fe, 0xd084, 0x01b0, 0x7060, 0xa086, 0x0001, 0x0904, 0x2a32, -+ 0x7060, 0xa086, 0x0005, 0x1158, 0x7078, 0x2068, 0x681b, 0x0004, -+ 0x6817, 0x0000, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, 0x7063, -+ 0x0000, 0x70a3, 0x0000, 0x70a4, 0x70ae, 0x70b2, 0x080c, 0x2682, -+ 0x0156, 0x2011, 0x0004, 0x7160, 0xa186, 0x0001, 0x0160, 0xa186, -+ 0x0007, 0x1118, 0x701f, 0x0005, 0x0030, 0x701f, 0x0001, 0x70d0, -+ 0xc0c5, 0x70d2, 0x0000, 0x2001, 0x460a, 0x2004, 0xa084, 0x00ff, -+ 0xa086, 0x0018, 0x0130, 0x7018, 0x7016, 0xa005, 0x1110, 0x70a3, -+ 0x0001, 0x0066, 0x080c, 0x3f26, 0x20a9, 0x0010, 0x2039, 0x0000, -+ 0x080c, 0x3a66, 0xa7b8, 0x0100, 0x1f04, 0x29c0, 0x006e, 0x7000, -+ 0x0002, 0x29fd, 0x29db, 0x29db, 0x29d3, 0x29fd, 0x29fd, 0x29fd, -+ 0x29d1, 0x080c, 0x254c, 0x705c, 0xa005, 0x0538, 0xad06, 0x1118, -+ 0x6800, 0x705e, 0x0080, 0x6820, 0xd084, 0x1148, 0x6f14, 0x080c, -+ 0x3b6f, 0x6008, 0xc0d4, 0x600a, 0x080c, 0x37a4, 0x0020, 0x7058, -+ 0x2060, 0x6800, 0x6002, 0xa684, 0x5f00, 0x681e, 0x6818, 0xd0fc, -+ 0x0108, 0x6a1a, 0x6817, 0x0000, 0x682b, 0x0000, 0x6820, 0xa084, -+ 0x00ff, 0xc09d, 0x6822, 0x080c, 0x1da2, 0x2011, 0x0004, 0x74c8, -+ 0xa4a0, 0x0100, 0x04b1, 0xaea0, 0x0017, 0x0499, 0x20a9, 0x0101, -+ 0x74c8, 0x0479, 0x8420, 0x1f04, 0x2a09, 0x70c0, 0x2060, 0x2021, -+ 0x0002, 0x20a9, 0x0100, 0x6110, 0x81ff, 0x0198, 0x6018, 0x0016, -+ 0x0006, 0x2011, 0x4602, 0x220c, 0xa102, 0x2012, 0x000e, 0x001e, -+ 0xa102, 0x0338, 0x6012, 0x1128, 0x2011, 0x4604, 0x2204, 0xc0a5, -+ 0x2012, 0x601b, 0x0000, 0xace0, 0x0010, 0x1f04, 0x2a13, 0x8421, -+ 0x1d00, 0x015e, 0x7063, 0x0000, 0x7003, 0x0000, 0x704b, 0x0000, -+ 0x0005, 0x0046, 0x2404, 0xa005, 0x01a8, 0x2068, 0x6800, 0x0006, -+ 0x6a1a, 0x6817, 0x0000, 0x682b, 0x0000, 0x68b4, 0xa084, 0x5f00, -+ 0x681e, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, 0x080c, 0x1da2, -+ 0x000e, 0x0c48, 0x004e, 0x2023, 0x0000, 0x0005, 0xa282, 0x0003, -+ 0x0310, 0x080c, 0x254c, 0x2300, 0x0002, 0x2a60, 0x2add, 0x2af7, -+ 0xa282, 0x0002, 0x0110, 0x080c, 0x254c, 0x7060, 0x7063, 0x0000, -+ 0x707f, 0x0000, 0x0022, 0x77d0, 0xc7c5, 0x77d2, 0x0002, 0x2a77, -+ 0x2a77, 0x2a79, 0x2ab1, 0x37d8, 0x2a77, 0x2ab1, 0x2a77, 0x080c, -+ 0x254c, 0x7770, 0x080c, 0x3a66, 0x7770, 0xa7bc, 0x8f00, 0x080c, -+ 0x3b6f, 0x6018, 0xa005, 0x0528, 0xd7fc, 0x1118, 0x2021, 0x8cc0, -+ 0x0010, 0x2021, 0x8dd0, 0x2009, 0x0005, 0x2011, 0x0010, 0x080c, -+ 0x2b11, 0x01b8, 0x0156, 0x20a9, 0x0101, 0xd7fc, 0x1118, 0x2021, -+ 0x8bc0, 0x0010, 0x2021, 0x8cd0, 0x0046, 0x2009, 0x0005, 0x2011, -+ 0x0010, 0x080c, 0x2b11, 0x004e, 0x0118, 0x8420, 0x1f04, 0x2a9c, -+ 0x015e, 0x8738, 0xa784, 0x001f, 0x1990, 0x0804, 0x25a0, 0x0804, -+ 0x25a0, 0x7770, 0x080c, 0x3b6f, 0x6018, 0xa005, 0x0520, 0xd7fc, -+ 0x1118, 0x2021, 0x8cc0, 0x0010, 0x2021, 0x8dd0, 0x2009, 0x0005, -+ 0x2011, 0x0020, 0x080c, 0x2b11, 0x01b0, 0x0156, 0x20a9, 0x0101, -+ 0xd7fc, 0x1118, 0x2021, 0x8bc0, 0x0010, 0x2021, 0x8cd0, 0x0046, -+ 0x2009, 0x0005, 0x2011, 0x0020, 0x04e1, 0x004e, 0x0118, 0x8420, -+ 0x1f04, 0x2acf, 0x015e, 0x0804, 0x25a0, 0x2200, 0x0002, 0x2ae2, -+ 0x2ae4, 0x2ae4, 0x080c, 0x254c, 0x2009, 0x0012, 0x7060, 0xa086, -+ 0x0002, 0x0110, 0x2009, 0x000e, 0x6818, 0xd0fc, 0x0108, 0x691a, -+ 0x7063, 0x0000, 0x70d0, 0xc0c5, 0x70d2, 0x0804, 0x3be5, 0x2200, -+ 0x0002, 0x2afe, 0x2ae4, 0x2afc, 0x080c, 0x254c, 0x080c, 0x3f26, -+ 0x7000, 0xa086, 0x0002, 0x1904, 0x375d, 0x080c, 0x37be, 0x6008, -+ 0xa084, 0xfbef, 0x600a, 0x080c, 0x374f, 0x0904, 0x375d, 0x0804, -+ 0x25a0, 0x2404, 0xa005, 0x0590, 0x2068, 0x2d04, 0x0006, 0x6814, -+ 0xa706, 0x0118, 0x2d20, 0x000e, 0x0ca8, 0x000e, 0x2022, 0x691a, -+ 0x6817, 0x0000, 0x682b, 0x0000, 0x68b4, 0xa084, 0x5f00, 0x681e, -+ 0x6820, 0xa084, 0x00ff, 0xa205, 0x6822, 0x080c, 0x1da2, 0x2021, -+ 0x4602, 0x241c, 0x8319, 0x2322, 0x6010, 0x8001, 0x6012, 0x1128, -+ 0x2021, 0x4604, 0x2404, 0xc0a5, 0x2022, 0x6008, 0xa084, 0xf9ef, -+ 0x600a, 0x080c, 0x269e, 0x080c, 0x37be, 0x0005, 0xa085, 0x0001, -+ 0x0ce0, 0x2300, 0x0002, 0x2b50, 0x2b4e, 0x2bcb, 0x080c, 0x254c, -+ 0x78e4, 0xa005, 0x17b0, 0x3208, 0xa18c, 0x0800, 0x0118, 0x0104, -+ 0x259d, 0x0010, 0x0304, 0x259d, 0x2008, 0xa084, 0x0030, 0x1110, -+ 0x0804, 0x322a, 0x78ec, 0xa084, 0x0003, 0x0dd0, 0x7884, 0xd0fc, -+ 0x1118, 0xa184, 0x0007, 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, -+ 0x1118, 0x2001, 0x0000, 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, -+ 0x0118, 0xa184, 0x0007, 0x0010, 0x2001, 0x0001, 0x0002, 0x2bae, -+ 0x2bb7, 0x2ba4, 0x2b87, 0x3c29, 0x3c29, 0x2b87, 0x2bc1, 0x080c, -+ 0x254c, 0x7000, 0xa086, 0x0004, 0x1190, 0x7060, 0xa086, 0x0002, -+ 0x1130, 0x2011, 0x0002, 0x2019, 0x0000, 0x0804, 0x2a56, 0x7060, -+ 0xa086, 0x0006, 0x0db0, 0x7060, 0xa086, 0x0004, 0x0d90, 0x79e4, -+ 0x2001, 0x0003, 0x0804, 0x2f18, 0x6818, 0xd0fc, 0x0110, 0x681b, -+ 0x001d, 0x080c, 0x3a3c, 0x781b, 0x006e, 0x0005, 0x6818, 0xd0fc, -+ 0x0110, 0x681b, 0x001d, 0x080c, 0x3a3c, 0x0804, 0x3c07, 0x6818, -+ 0xd0fc, 0x0110, 0x681b, 0x001d, 0x080c, 0x3a3c, 0x781b, 0x00fa, -+ 0x0005, 0x6818, 0xd0fc, 0x0110, 0x681b, 0x001d, 0x080c, 0x3a3c, -+ 0x781b, 0x00cb, 0x0005, 0xa584, 0x000f, 0x11c0, 0x7000, 0x0002, -+ 0x25a0, 0x2bd8, 0x2bda, 0x375d, 0x375d, 0x375d, 0x2bd8, 0x2bd8, -+ 0x080c, 0x254c, 0x080c, 0x37be, 0x6008, 0xa084, 0xfbef, 0x600a, -+ 0x080c, 0x374f, 0x0904, 0x375d, 0x0804, 0x25a0, 0x78e4, 0xa005, -+ 0x1b04, 0x2b89, 0x3208, 0xa18c, 0x0800, 0x0118, 0x0104, 0x2b89, -+ 0x0010, 0x0304, 0x2b89, 0x2008, 0xa084, 0x0030, 0x1118, 0x781b, -+ 0x0068, 0x0005, 0x78ec, 0xa084, 0x0003, 0x0dc8, 0x7884, 0xd0fc, -+ 0x1118, 0xa184, 0x0007, 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, -+ 0x1118, 0x2001, 0x0000, 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, -+ 0x0118, 0xa184, 0x0007, 0x0010, 0x2001, 0x0001, 0x0002, 0x2c26, -+ 0x2c2a, 0x2c21, 0x2c1f, 0x3c29, 0x3c29, 0x2c1f, 0x3c23, 0x080c, -+ 0x254c, 0x080c, 0x3a42, 0x781b, 0x006e, 0x0005, 0x080c, 0x3a42, -+ 0x0804, 0x3c07, 0x080c, 0x3a42, 0x781b, 0x00fa, 0x0005, 0x080c, -+ 0x3a42, 0x781b, 0x00cb, 0x0005, 0x2300, 0x0002, 0x2c3b, 0x2c39, -+ 0x2c3d, 0x080c, 0x254c, 0x0804, 0x33e2, 0x681b, 0x0016, 0x78a3, -+ 0x0000, 0x79e4, 0xa184, 0x0030, 0x0904, 0x33e2, 0x78ec, 0xa084, -+ 0x0003, 0x0904, 0x33e2, 0xa184, 0x0100, 0x0d98, 0x7884, 0xd0fc, -+ 0x1118, 0xa184, 0x0007, 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, -+ 0x1118, 0x2001, 0x0000, 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, -+ 0x0118, 0xa184, 0x0007, 0x0010, 0x2001, 0x0001, 0x0002, 0x2c6f, -+ 0x2c2a, 0x2ba4, 0x3be5, 0x3c29, 0x3c29, 0x3be5, 0x3c23, 0x080c, -+ 0x3bf1, 0x0005, 0xa282, 0x0005, 0x0310, 0x080c, 0x254c, 0x7898, -+ 0x2040, 0x2300, 0x0002, 0x2c7e, 0x2ea8, 0x2eb2, 0x2200, 0x0002, -+ 0x2c9a, 0x2c87, 0x2c9a, 0x2c85, 0x2e8a, 0x080c, 0x254c, 0x789b, -+ 0x0018, 0x78a8, 0x2010, 0xa084, 0x00ff, 0xa082, 0x0020, 0x0a04, -+ 0x3a0b, 0xa08a, 0x0004, 0x1a04, 0x3a0b, 0x0002, 0x3a0b, 0x3a0b, -+ 0x3a0b, 0x39c1, 0x789b, 0x0018, 0x79a8, 0xa184, 0x0080, 0x0148, -+ 0x0804, 0x3a0b, 0x7000, 0xa005, 0x1dd8, 0x2011, 0x0004, 0x0804, -+ 0x3594, 0xa184, 0x00ff, 0xa08a, 0x0010, 0x1a04, 0x3a0b, 0x0002, -+ 0x2cc2, 0x2cc0, 0x2cd4, 0x2cd8, 0x2d86, 0x3a0b, 0x3a0b, 0x2d88, -+ 0x3a0b, 0x3a0b, 0x2e86, 0x2e86, 0x3a0b, 0x3a0b, 0x3a0b, 0x2e88, -+ 0x080c, 0x254c, 0xd6e4, 0x0140, 0x2001, 0x0300, 0x8000, 0x8000, -+ 0x783a, 0x781b, 0x00c7, 0x0005, 0x6818, 0xd0fc, 0x0118, 0x681b, -+ 0x001d, 0x0c90, 0x0804, 0x3be5, 0x681b, 0x001d, 0x0804, 0x3a36, -+ 0x6920, 0x6922, 0xa684, 0x1800, 0x1904, 0x2d29, 0x6820, 0xd084, -+ 0x1904, 0x2d31, 0x6818, 0xa086, 0x0008, 0x1110, 0x681b, 0x0000, -+ 0xd6d4, 0x0568, 0xd6bc, 0x0558, 0x7083, 0x0000, 0x6818, 0xa084, -+ 0x003f, 0xa08a, 0x000d, 0x0718, 0xa08a, 0x000c, 0x7182, 0x2001, -+ 0x000c, 0x800c, 0x7186, 0x789b, 0x0061, 0x78aa, 0x0156, 0x0136, -+ 0x0146, 0x0016, 0x3208, 0xa18c, 0x0600, 0x0118, 0x20a1, 0x022b, -+ 0x0010, 0x20a1, 0x012b, 0x001e, 0x789b, 0x0000, 0x8000, 0x80ac, -+ 0xad80, 0x000b, 0x2098, 0x53a6, 0x014e, 0x013e, 0x015e, 0x6038, -+ 0xa005, 0x1150, 0x681c, 0xa084, 0x000e, 0x0904, 0x3a36, 0x080c, -+ 0x3a48, 0x782b, 0x3008, 0x0010, 0x8001, 0x603a, 0x781b, 0x0071, -+ 0x0005, 0xd6e4, 0x0130, 0x781b, 0x0083, 0x0005, 0x781b, 0x0083, -+ 0x0005, 0xa684, 0x0060, 0x0dd0, 0xd6dc, 0x0dc0, 0xd6fc, 0x01a0, -+ 0xc6fc, 0x7e5a, 0x6eb6, 0x7adc, 0x79d8, 0x78d0, 0x8007, 0xa084, -+ 0x007f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, -+ 0x6b94, 0x2200, 0xa303, 0x68ae, 0xd6f4, 0x0118, 0xc6f4, 0x7e5a, -+ 0x6eb6, 0x7000, 0xa086, 0x0003, 0x1148, 0x0006, 0x080c, 0x3f26, -+ 0x080c, 0x41d9, 0x000e, 0x781b, 0x0080, 0x0005, 0xa006, 0x080c, -+ 0x42b5, 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0120, -+ 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x7cda, 0x6ba6, -+ 0x7bd6, 0x7bde, 0x2300, 0xa405, 0x1130, 0xc6f5, 0x7e5a, 0x6eb6, -+ 0x781b, 0x0080, 0x0005, 0x781b, 0x0080, 0x2200, 0xa115, 0x1118, -+ 0x080c, 0x41d9, 0x0005, 0x080c, 0x4206, 0x0005, 0x080c, 0x254c, -+ 0x0804, 0x2e1c, 0x00c6, 0x7054, 0x2060, 0x6920, 0xa18c, 0xecff, -+ 0x6922, 0x6000, 0xa084, 0xcfdf, 0x6002, 0x080c, 0x38f4, 0xa006, -+ 0x2040, 0x2038, 0x080c, 0x399c, 0x0804, 0x2e10, 0x00c6, 0x7054, -+ 0x2060, 0x2c48, 0x7aa8, 0xa294, 0x00ff, 0xa286, 0x0004, 0x11d8, -+ 0x6920, 0xd1e4, 0x1170, 0x2039, 0x0000, 0x2041, 0x0000, 0x2031, -+ 0x0000, 0xa006, 0x2010, 0x080c, 0x38f7, 0x080c, 0x399c, 0x0804, -+ 0x2e10, 0xa18c, 0xecff, 0x6922, 0x6104, 0xa18c, 0xffdd, 0x6106, -+ 0x6000, 0xc0ac, 0x6002, 0xa286, 0x0003, 0x01d0, 0x6104, 0xa184, -+ 0x0010, 0x0548, 0x080c, 0x3b6b, 0x080c, 0x3977, 0x88ff, 0x0518, -+ 0x00ce, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, -+ 0xd6d4, 0x1118, 0x781b, 0x006e, 0x0005, 0x781b, 0x0082, 0x0005, -+ 0x6920, 0xd1cc, 0x0130, 0xa18c, 0xfdff, 0x6922, 0x6000, 0xc0ec, -+ 0x6002, 0x2039, 0x0000, 0x2041, 0x0000, 0x2031, 0x0000, 0xa006, -+ 0x2010, 0x080c, 0x399c, 0xa286, 0x0001, 0x0158, 0x6104, 0xa184, -+ 0x0008, 0x01b0, 0x080c, 0x3b6b, 0x080c, 0x3895, 0x88ff, 0x1980, -+ 0x0078, 0x6920, 0xd1c4, 0x0130, 0xa18c, 0xfeff, 0x6922, 0x6000, -+ 0xc0e4, 0x6002, 0x2031, 0x0000, 0xa006, 0x2010, 0x080c, 0x38f7, -+ 0x00ce, 0x7e58, 0xd6d4, 0x1118, 0x781b, 0x0071, 0x0005, 0x781b, -+ 0x0083, 0x0005, 0x0804, 0x3a32, 0x2808, 0x789b, 0x0080, 0x2019, -+ 0x0080, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, 0x11b8, 0x2300, -+ 0xa102, 0xa086, 0x0001, 0x0904, 0x2d8a, 0x7ca8, 0xa4a4, 0x00ff, -+ 0xa480, 0x0002, 0xa300, 0x2018, 0xa102, 0x0a04, 0x2d9e, 0x0904, -+ 0x2d9e, 0x24a8, 0x7aa8, 0x1f04, 0x2e3a, 0x0c18, 0xa284, 0x00f0, -+ 0xa082, 0x0020, 0x06b8, 0x2200, 0xa082, 0x0021, 0x1698, 0x7aa8, -+ 0x8318, 0x8318, 0x2100, 0xa302, 0x0aa0, 0xa286, 0x0023, 0x0950, -+ 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58, 0xa684, 0xfff1, 0xc0a5, -+ 0x2030, 0x7e5a, 0x6008, 0xc0a5, 0x600a, 0x78a0, 0x8001, 0x0904, -+ 0x2e10, 0x20a8, 0x7998, 0x789b, 0x0060, 0x78aa, 0x2011, 0x0080, -+ 0x799a, 0x78a8, 0x7998, 0x7a9a, 0x78aa, 0x7a98, 0x1f04, 0x2e68, -+ 0xc695, 0x7e5a, 0xd6d4, 0x1118, 0x781b, 0x006e, 0x0005, 0x781b, -+ 0x0082, 0x0005, 0x8318, 0x2100, 0xa302, 0x0a04, 0x2e21, 0xa284, -+ 0x0080, 0x1904, 0x3a36, 0x78a0, 0xa005, 0x08c8, 0x0804, 0x3a36, -+ 0x0804, 0x3a0b, 0x7054, 0xa04d, 0x789b, 0x0018, 0x78a8, 0xa084, -+ 0x00ff, 0xa08e, 0x0001, 0x0110, 0x080c, 0x254c, 0x7aa8, 0xa294, -+ 0x00ff, 0x784b, 0x0008, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0005, -+ 0x1a04, 0x3a0b, 0x0002, 0x3a0b, 0x380c, 0x3a0b, 0x3927, 0x3d31, -+ 0xa282, 0x0000, 0x1110, 0x080c, 0x254c, 0x080c, 0x3a3c, 0x781b, -+ 0x0082, 0x0005, 0xa282, 0x0003, 0x1110, 0x080c, 0x254c, 0xd4fc, -+ 0x11d0, 0x7060, 0xa005, 0x0110, 0x080c, 0x254c, 0x6f14, 0x7772, -+ 0xa7bc, 0x8f00, 0x080c, 0x3b6f, 0x6008, 0xa085, 0x0021, 0x600a, -+ 0x8738, 0xa784, 0x001f, 0x1db0, 0x080c, 0x3a3f, 0x7063, 0x0002, -+ 0x701f, 0x0009, 0x0010, 0x080c, 0x3a4b, 0x781b, 0x0082, 0x0005, -+ 0xa282, 0x0004, 0x0310, 0x080c, 0x254c, 0x2300, 0x0002, 0x2ee2, -+ 0x3078, 0x30b4, 0xa286, 0x0003, 0x0598, 0x7200, 0x7cd8, 0x7ddc, -+ 0x7fd0, 0x71d0, 0xd1b4, 0x0528, 0xd1bc, 0x1518, 0x2001, 0x4601, -+ 0x2004, 0xd0c4, 0x11f0, 0x7868, 0xa084, 0x00ff, 0x11d0, 0xa282, -+ 0x0002, 0x12b8, 0x00d6, 0x783b, 0x8300, 0x781b, 0x0059, 0x70b8, -+ 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, -+ 0x78da, 0xc1b4, 0x71d2, 0x7003, 0x0030, 0x00de, 0x2001, 0x0000, -+ 0x0058, 0x783b, 0x1300, 0x781b, 0x0057, 0x2001, 0x0000, 0x0020, -+ 0x7200, 0x7cd8, 0x7ddc, 0x7fd0, 0x7046, 0x68a0, 0xd0ec, 0x0118, -+ 0x6008, 0xc08d, 0x600a, 0xa284, 0x000f, 0x0002, 0x3059, 0x2f33, -+ 0x2f30, 0x3184, 0x320f, 0x25a0, 0x2f2e, 0x2f2e, 0x080c, 0x254c, -+ 0x6008, 0xc0d4, 0x600a, 0xd6e4, 0x0120, 0x7044, 0xa086, 0x0014, -+ 0x11e8, 0x080c, 0x3f26, 0x2009, 0x0000, 0x6818, 0xd0fc, 0x0108, -+ 0x7044, 0xa086, 0x0014, 0x0168, 0x6818, 0xa086, 0x0008, 0x1904, -+ 0x301b, 0x7858, 0xd09c, 0x0904, 0x301b, 0x6820, 0xd0ac, 0x0904, -+ 0x301b, 0x681b, 0x0014, 0x2009, 0x0002, 0x04a8, 0x7868, 0xa08c, -+ 0x00ff, 0x0588, 0xa186, 0x0008, 0x1158, 0x6008, 0xc0a4, 0x600a, -+ 0x080c, 0x374f, 0x0540, 0x080c, 0x37be, 0x080c, 0x3f26, 0x0060, -+ 0xa186, 0x0028, 0x1500, 0x6018, 0xa005, 0x0d78, 0x8001, 0x0d68, -+ 0x8001, 0x0d58, 0x601e, 0x0c48, 0x6820, 0xd084, 0x0904, 0x25a0, -+ 0xc084, 0x6822, 0x080c, 0x2693, 0x7058, 0x00c6, 0x2060, 0x6800, -+ 0x6002, 0x00ce, 0x6004, 0x6802, 0xa005, 0x2d00, 0x1108, 0x6002, -+ 0x6006, 0x0804, 0x25a0, 0x0016, 0x81ff, 0x15f0, 0x7000, 0xa086, -+ 0x0030, 0x05d0, 0x71d0, 0xd1bc, 0x15b8, 0xd1b4, 0x11e8, 0x705c, -+ 0xa005, 0x1590, 0x70a0, 0xa086, 0x0001, 0x0570, 0x7003, 0x0000, -+ 0x0046, 0x0056, 0x0076, 0x0066, 0x00c6, 0x00d6, 0x080c, 0x25c5, -+ 0x00de, 0x00ce, 0x006e, 0x007e, 0x005e, 0x004e, 0x71d0, 0xd1b4, -+ 0x11d8, 0x7003, 0x0040, 0x00c0, 0x080c, 0x3c33, 0x11a8, 0x781b, -+ 0x0068, 0x00d6, 0x70b8, 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6, -+ 0x78de, 0x6898, 0x78d2, 0x78da, 0xc1b4, 0x71d2, 0x7003, 0x0030, -+ 0x7808, 0xc08d, 0x780a, 0x00de, 0x080c, 0x30dc, 0x001e, 0x81ff, -+ 0x0904, 0x301b, 0xa684, 0xdf00, 0x681e, 0x682b, 0x0000, 0x6f14, -+ 0xa186, 0x0002, 0x1904, 0x301c, 0x6818, 0xa086, 0x0014, 0x1130, -+ 0x2008, 0xd6e4, 0x0118, 0x7868, 0xa08c, 0x00ff, 0x080c, 0x3a55, -+ 0x080c, 0x269e, 0x6820, 0xd0dc, 0x1578, 0x8717, 0xa294, 0x000f, -+ 0x8213, 0x8213, 0x8213, 0xb284, 0x0600, 0x0118, 0xa290, 0x4ac0, -+ 0x0010, 0xa290, 0x4b40, 0xa290, 0x0000, 0x221c, 0xd3c4, 0x0170, -+ 0x6820, 0xd0e4, 0x0128, 0xa084, 0xefff, 0x6822, 0xc3ac, 0x2312, -+ 0x8210, 0x2204, 0xa085, 0x0038, 0x2012, 0x8211, 0xd3d4, 0x0138, -+ 0x68a0, 0xd0c4, 0x1120, 0x080c, 0x3144, 0x0804, 0x25a0, 0x6008, -+ 0xc08d, 0x600a, 0x0008, 0x692a, 0x6916, 0x6818, 0xd0fc, 0x0110, -+ 0x7044, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x6410, 0x84ff, 0x0168, -+ 0x2009, 0x4602, 0x2104, 0x8001, 0x200a, 0x8421, 0x6412, 0x1128, -+ 0x2021, 0x4604, 0x2404, 0xc0a5, 0x2022, 0x6018, 0xa005, 0x0118, -+ 0x8001, 0x601a, 0x1118, 0x6008, 0xc0a4, 0x600a, 0x6820, 0xd084, -+ 0x1130, 0x6800, 0xa005, 0x1108, 0x6002, 0x6006, 0x0020, 0x7058, -+ 0x2060, 0x6800, 0x6002, 0x2061, 0x4600, 0x6887, 0x0103, 0x2d08, -+ 0x206b, 0x0000, 0x6068, 0xa005, 0x616a, 0x0110, 0x2d02, 0x0008, -+ 0x616e, 0x7200, 0xa286, 0x0030, 0x0158, 0xa286, 0x0040, 0x1904, -+ 0x25a0, 0x7003, 0x0002, 0x7048, 0x2068, 0x68c4, 0x2060, 0x0005, -+ 0x7003, 0x0002, 0x70b8, 0xa06d, 0x68bc, 0x703e, 0x70b4, 0xa065, -+ 0x68c0, 0x7056, 0x2d00, 0x704a, 0xad80, 0x0009, 0x7042, 0x0005, -+ 0xa282, 0x0004, 0x0210, 0x080c, 0x254c, 0x2200, 0x0002, 0x3083, -+ 0x3092, 0x309e, 0x3092, 0xa586, 0x1300, 0x0160, 0xa586, 0x8300, -+ 0x1d90, 0x7003, 0x0000, 0x6018, 0x8001, 0x601a, 0x6008, 0xa084, -+ 0xfbef, 0x600a, 0x7000, 0xa086, 0x0005, 0x0128, 0x080c, 0x3a3c, -+ 0x781b, 0x0082, 0x0005, 0x781b, 0x0083, 0x0005, 0x7890, 0x8007, -+ 0x8001, 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, -+ 0x00ff, 0xa186, 0x0003, 0x0128, 0xa186, 0x0000, 0x0110, 0x0804, -+ 0x3a0b, 0x781b, 0x0083, 0x0005, 0x6820, 0xc095, 0x6822, 0x82ff, -+ 0x1118, 0x080c, 0x3a3c, 0x0030, 0x8211, 0x0110, 0x080c, 0x254c, -+ 0x080c, 0x3a4b, 0x781b, 0x0082, 0x0005, 0x080c, 0x3c46, 0x7830, -+ 0xa084, 0x00c0, 0x1170, 0x0016, 0x3208, 0xa18c, 0x0800, 0x001e, -+ 0x0118, 0x0104, 0x30d9, 0x0010, 0x0304, 0x30d9, 0x791a, 0xa006, -+ 0x0005, 0xa085, 0x0001, 0x0005, 0xa684, 0x0060, 0x1130, 0x682f, -+ 0x0000, 0x6833, 0x0000, 0x0804, 0x3143, 0xd6dc, 0x1198, 0x68b4, -+ 0xd0dc, 0x1180, 0x6998, 0x6a94, 0x692e, 0x6a32, 0x7044, 0xa005, -+ 0x1130, 0x2200, 0xa105, 0x0904, 0x3f26, 0x7047, 0x0015, 0x0804, -+ 0x3f26, 0x0005, 0xd6ac, 0x01f0, 0xd6f4, 0x0130, 0x682f, 0x0000, -+ 0x6833, 0x0000, 0x0804, 0x3f26, 0x68b4, 0xa084, 0x4000, 0xa635, -+ 0xd6f4, 0x1da0, 0x7044, 0xa005, 0x1110, 0x7047, 0x0015, 0xd6dc, -+ 0x1128, 0x68b4, 0xd0dc, 0x0110, 0x6ca8, 0x6da4, 0x6c2e, 0x6d32, -+ 0x0804, 0x3f26, 0xd6f4, 0x0130, 0x682f, 0x0000, 0x6833, 0x0000, -+ 0x0804, 0x3f26, 0x68b4, 0xa084, 0x4800, 0xa635, 0xd6f4, 0x1da0, -+ 0x7044, 0xa005, 0x1110, 0x7047, 0x0015, 0x2408, 0x2510, 0x2700, -+ 0x8007, 0xa084, 0x007f, 0xa108, 0xa291, 0x0000, 0x692e, 0x6a32, -+ 0x2100, 0xa205, 0x1110, 0x0804, 0x3f26, 0x7000, 0xa086, 0x0006, -+ 0x0110, 0x0804, 0x3f26, 0x0005, 0x6946, 0x6008, 0xc0cd, 0xd3cc, -+ 0x0108, 0xc08d, 0x600a, 0x6818, 0x683a, 0x681b, 0x0006, 0x688f, -+ 0x0000, 0x6893, 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942, 0x682f, -+ 0x0003, 0x6833, 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, 0x689b, -+ 0x0020, 0x7000, 0x0002, 0x25a0, 0x3173, 0x316d, 0x316b, 0x316b, -+ 0x316b, 0x316b, 0x316b, 0x080c, 0x254c, 0x6820, 0xd084, 0x1118, -+ 0x080c, 0x37a4, 0x0030, 0x7058, 0x2c50, 0x2060, 0x6800, 0x6002, -+ 0x2a60, 0xaea0, 0x0017, 0x2404, 0xa005, 0x0110, 0x2020, 0x0cd8, -+ 0x2d22, 0x206b, 0x0000, 0x0005, 0x080c, 0x37aa, 0x080c, 0x37be, -+ 0x6008, 0xc0cc, 0x600a, 0x682b, 0x0000, 0x789b, 0x000e, 0x6f14, -+ 0x6938, 0x691a, 0x6944, 0x6916, 0x2009, 0x0000, 0xae86, 0x4640, -+ 0x0110, 0x2009, 0x0001, 0x080c, 0x42ec, 0xd6dc, 0x01c8, 0x691c, -+ 0xc1ed, 0x691e, 0x6828, 0xa082, 0x000e, 0x0290, 0x6848, 0xa084, -+ 0x000f, 0xa086, 0x000b, 0x1160, 0x685c, 0xa086, 0x0047, 0x1140, -+ 0x2001, 0x4601, 0x2004, 0xd0ac, 0x1118, 0x2700, 0x080c, 0x2475, -+ 0x6818, 0xd0fc, 0x0140, 0x681b, 0x0000, 0x7868, 0xa08c, 0x00ff, -+ 0x0110, 0x681b, 0x001e, 0xaea0, 0x0017, 0x6800, 0x2022, 0x6a3c, -+ 0x6940, 0x6a32, 0x692e, 0x68c0, 0x2060, 0x6000, 0xd0a4, 0x0580, -+ 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x00d6, 0x00f6, -+ 0x0156, 0x0146, 0x2079, 0x4600, 0x080c, 0x1b93, 0x014e, 0x015e, -+ 0x00fe, 0x70c8, 0x2010, 0x2009, 0x0101, 0x0026, 0x2204, 0xa06d, -+ 0x0140, 0x6814, 0xa706, 0x0110, 0x6800, 0x0cc8, 0x6820, 0xc0d5, -+ 0x6822, 0x002e, 0x8210, 0x8109, 0x1d80, 0x00de, 0x7063, 0x0003, -+ 0x707b, 0x0000, 0x7772, 0x707f, 0x000f, 0x71d0, 0xc1c4, 0x71d2, -+ 0x6818, 0xa086, 0x0002, 0x1138, 0x6817, 0x0000, 0x682b, 0x0000, -+ 0x681c, 0xc0ec, 0x681e, 0x080c, 0x1da2, 0x0804, 0x25a0, 0x7cd8, -+ 0x7ddc, 0x7fd0, 0x080c, 0x30dc, 0x682b, 0x0000, 0x789b, 0x000e, -+ 0x6f14, 0x080c, 0x3c4a, 0xa08c, 0x00ff, 0x6916, 0x6818, 0xd0fc, -+ 0x0110, 0x7044, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x7063, 0x0000, -+ 0x0804, 0x25a0, 0x7000, 0xa005, 0x1110, 0x0804, 0x25a0, 0xa006, -+ 0x080c, 0x3f26, 0x6920, 0xd1ac, 0x1110, 0x681b, 0x0014, 0xa68c, -+ 0xdf00, 0x691e, 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff, 0x6822, -+ 0x7000, 0x0002, 0x25a0, 0x324c, 0x324c, 0x324f, 0x324f, 0x324f, -+ 0x324a, 0x324a, 0x080c, 0x254c, 0x6818, 0x0804, 0x2f18, 0x6008, -+ 0xc0a4, 0x600a, 0x6817, 0x0000, 0x0804, 0x3772, 0x2300, 0x0002, -+ 0x325b, 0x325d, 0x32ab, 0x080c, 0x254c, 0xd6fc, 0x1904, 0x2d38, -+ 0x7000, 0xa00d, 0x0002, 0x25a0, 0x326d, 0x326d, 0x3297, 0x326d, -+ 0x32a8, 0x326b, 0x326b, 0x080c, 0x254c, 0xa684, 0x0060, 0x0538, -+ 0xa086, 0x0060, 0x1510, 0xc6ac, 0xc6f4, 0xc6ed, 0x7e5a, 0x6eb6, -+ 0x681c, 0xc0ac, 0x681e, 0xa186, 0x0002, 0x0148, 0x080c, 0x3f26, -+ 0x69ac, 0x68b0, 0xa115, 0x0118, 0x080c, 0x4206, 0x0010, 0x080c, -+ 0x41d9, 0x781b, 0x0083, 0x71d0, 0xd1b4, 0x1904, 0x259d, 0x70a0, -+ 0xa086, 0x0001, 0x1904, 0x25e1, 0x0005, 0xd6ec, 0x09f0, 0x6818, -+ 0xd0fc, 0x0170, 0xd6f4, 0x1130, 0x681b, 0x0015, 0x781b, 0x0083, -+ 0x0804, 0x259d, 0x681b, 0x0007, 0x682f, 0x0000, 0x6833, 0x0000, -+ 0x080c, 0x3bf1, 0x0005, 0x080c, 0x254c, 0x2300, 0x0002, 0x32b4, -+ 0x32d6, 0x332e, 0x080c, 0x254c, 0x7000, 0x0002, 0x32be, 0x32c0, -+ 0x32c7, 0x32be, 0x32be, 0x32be, 0x32be, 0x32be, 0x080c, 0x254c, -+ 0x69ac, 0x68b0, 0xa115, 0x0118, 0x080c, 0x4206, 0x0010, 0x080c, -+ 0x41d9, 0x681c, 0xc0b4, 0x681e, 0x70d0, 0xd0b4, 0x1904, 0x259d, -+ 0x70a0, 0xa086, 0x0001, 0x1904, 0x25e1, 0x0005, 0xd6fc, 0x1904, -+ 0x331e, 0x7000, 0xa00d, 0x0002, 0x25a0, 0x32ec, 0x32e6, 0x3316, -+ 0x32ec, 0x331b, 0x32e4, 0x32e4, 0x080c, 0x254c, 0x6894, 0x78d6, -+ 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684, 0x0060, 0x0538, 0xa086, -+ 0x0060, 0x1510, 0xa6b4, 0xbfbf, 0xc6ed, 0x7e5a, 0x6eb6, 0xa186, -+ 0x0002, 0x0148, 0x080c, 0x3f26, 0x69ac, 0x68b0, 0xa115, 0x0118, -+ 0x080c, 0x4206, 0x0010, 0x080c, 0x41d9, 0x781b, 0x0083, 0x681c, -+ 0xc0b4, 0x681e, 0x71d0, 0xd1b4, 0x1904, 0x259d, 0x70a0, 0xa086, -+ 0x0001, 0x1904, 0x25e1, 0x0005, 0xd6ec, 0x09f0, 0x6818, 0xd0fc, -+ 0x0110, 0x681b, 0x0007, 0x781b, 0x00fb, 0x0005, 0xc6fc, 0x7e5a, -+ 0x7adc, 0x79d8, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, -+ 0xa303, 0x68ae, 0x79d2, 0x781b, 0x0083, 0x0005, 0xd6dc, 0x0130, -+ 0x782b, 0x3009, 0x781b, 0x0083, 0x0804, 0x259d, 0x7884, 0xc0ac, -+ 0x7886, 0x78e4, 0xa084, 0x0008, 0x1150, 0xa484, 0x0200, 0x0108, -+ 0xc6f5, 0xc6dd, 0x7e5a, 0x781b, 0x0083, 0x0804, 0x259d, 0x6820, -+ 0xc095, 0x6822, 0x080c, 0x3bdc, 0xc6dd, 0x080c, 0x3a3c, 0x781b, -+ 0x0082, 0x0804, 0x259d, 0x2300, 0x0002, 0x3358, 0x335a, 0x335c, -+ 0x080c, 0x254c, 0x0804, 0x3a36, 0x7d98, 0xd6d4, 0x15a8, 0x79e4, -+ 0xd1ac, 0x0130, 0x78ec, 0xa084, 0x0003, 0x0110, 0x782b, 0x3009, -+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x7d9a, -+ 0x79e4, 0xd1ac, 0x0120, 0x78ec, 0xa084, 0x0003, 0x1120, 0x2001, -+ 0x0014, 0x0804, 0x2f18, 0x7884, 0xd0fc, 0x1118, 0xa184, 0x0007, -+ 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, 0x1118, 0x2001, 0x0000, -+ 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, 0x0118, 0xa184, 0x0007, -+ 0x0010, 0x2001, 0x0001, 0x04c2, 0x7a90, 0xa294, 0x0007, 0x789b, -+ 0x0060, 0x79a8, 0x81ff, 0x0568, 0x789b, 0x0080, 0x7ba8, 0xa384, -+ 0x0001, 0x11d0, 0x7ba8, 0x7ba8, 0xa386, 0x0004, 0x1118, 0x2009, -+ 0xffdf, 0x0058, 0xa386, 0x0001, 0x1118, 0x2009, 0xfff7, 0x0028, -+ 0xa386, 0x0003, 0x1148, 0x2009, 0xffef, 0x00c6, 0x7054, 0x2060, -+ 0x6004, 0xa104, 0x6006, 0x00ce, 0x789b, 0x0060, 0x78ab, 0x0000, -+ 0xa684, 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c, 0xecff, -+ 0x6922, 0x7d9a, 0x0804, 0x3be5, 0x2bae, 0x2bb7, 0x33d6, 0x33dc, -+ 0x33d4, 0x33d4, 0x3be5, 0x3be5, 0x080c, 0x254c, 0x6920, 0xa18c, -+ 0xfcff, 0x6922, 0x0804, 0x3beb, 0x6920, 0xa18c, 0xfcff, 0x6922, -+ 0x0804, 0x3be5, 0x79e4, 0xa184, 0x0030, 0x0120, 0x78ec, 0xa084, -+ 0x0003, 0x1570, 0x7000, 0xa086, 0x0004, 0x1190, 0x7060, 0xa086, -+ 0x0002, 0x1130, 0x2011, 0x0002, 0x2019, 0x0000, 0x0804, 0x2a56, -+ 0x7060, 0xa086, 0x0006, 0x0db0, 0x7060, 0xa086, 0x0004, 0x0d90, -+ 0x7000, 0xa086, 0x0000, 0x0904, 0x259d, 0x6920, 0xa184, 0x0420, -+ 0x0128, 0xc1d4, 0x6922, 0x6818, 0x0804, 0x2f18, 0x6818, 0xa08e, -+ 0x0002, 0x0120, 0xc0fd, 0x681a, 0x2001, 0x0014, 0x0804, 0x2f18, -+ 0x7884, 0xd0fc, 0x1118, 0xa184, 0x0007, 0x0090, 0xa184, 0x0007, -+ 0xa086, 0x0004, 0x1118, 0x2001, 0x0000, 0x0050, 0xa184, 0x0007, -+ 0xa086, 0x0005, 0x0118, 0xa184, 0x0007, 0x0010, 0x2001, 0x0001, -+ 0x0002, 0x3be5, 0x3be5, 0x3439, 0x3be5, 0x3c29, 0x3c29, 0x3be5, -+ 0x3be5, 0xd6bc, 0x0570, 0x7180, 0x81ff, 0x0558, 0xa182, 0x000d, -+ 0x1318, 0x7083, 0x0000, 0x0028, 0xa182, 0x000c, 0x7082, 0x2009, -+ 0x000c, 0x789b, 0x0061, 0x79aa, 0x0156, 0x0136, 0x0146, 0x7084, -+ 0x8114, 0xa210, 0x7286, 0xa080, 0x000b, 0xad00, 0x2098, 0xb284, -+ 0x0600, 0x0118, 0x20a1, 0x022b, 0x0010, 0x20a1, 0x012b, 0x789b, -+ 0x0000, 0x8108, 0x81ac, 0x53a6, 0x014e, 0x013e, 0x015e, 0x0804, -+ 0x3beb, 0xd6d4, 0x1904, 0x34ac, 0x6820, 0xd084, 0x0904, 0x3beb, -+ 0xa68c, 0x0060, 0xa684, 0x0060, 0x0120, 0xa086, 0x0060, 0x1108, -+ 0xc1f5, 0xc194, 0x795a, 0x69b6, 0x789b, 0x0060, 0x78ab, 0x0000, -+ 0x789b, 0x0061, 0x6818, 0xc0fd, 0x681a, 0x78aa, 0x8008, 0x810c, -+ 0x0904, 0x37d3, 0xa18c, 0x00f8, 0x1904, 0x37d3, 0x0156, 0x0136, -+ 0x0146, 0x0016, 0x20a1, 0x012b, 0x3208, 0xa18c, 0x0600, 0x0110, -+ 0x20a1, 0x022b, 0x001e, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, -+ 0x000b, 0x2098, 0x53a6, 0x014e, 0x013e, 0x015e, 0x6814, 0xc0fc, -+ 0x8007, 0x7882, 0x0804, 0x3beb, 0x6818, 0xd0fc, 0x0110, 0x681b, -+ 0x0008, 0x080c, 0x3a3c, 0x781b, 0x00ed, 0x0005, 0x2300, 0x0002, -+ 0x34bd, 0x357a, 0x34bb, 0x080c, 0x254c, 0x7cd8, 0x7ddc, 0x7fd0, -+ 0x82ff, 0x1528, 0x7200, 0xa286, 0x0003, 0x0904, 0x2ee6, 0x71d0, -+ 0xd1bc, 0x11f8, 0xd1b4, 0x01e8, 0x2001, 0x4601, 0x2004, 0xd0c4, -+ 0x11c0, 0x00d6, 0x783b, 0x8800, 0x781b, 0x0059, 0x70b8, 0xa06d, -+ 0x68b4, 0xc0a5, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, -+ 0x78da, 0xc1b4, 0x71d2, 0x7003, 0x0030, 0x00de, 0x0030, 0x7200, -+ 0x0020, 0x783b, 0x1800, 0x781b, 0x0057, 0xa284, 0x000f, 0x0002, -+ 0x3565, 0x3522, 0x34fa, 0x2f15, 0x34f8, 0x3565, 0x34f8, 0x34f8, -+ 0x080c, 0x254c, 0x681c, 0xd0ec, 0x0118, 0x6008, 0xc08d, 0x600a, -+ 0x6920, 0xc185, 0x6922, 0x6800, 0x6006, 0xa005, 0x1108, 0x6002, -+ 0x6008, 0xc0d4, 0x600a, 0x681c, 0xa084, 0x000e, 0x1120, 0x71c8, -+ 0xa188, 0x0100, 0x0028, 0x7030, 0x68ba, 0x713c, 0x70c8, 0xa108, -+ 0x2104, 0x6802, 0x2d0a, 0x715a, 0xd6dc, 0x1120, 0xc6fc, 0x6eb6, -+ 0x0804, 0x3565, 0x6eb6, 0xa684, 0x0060, 0x1120, 0xa684, 0x7fff, -+ 0x68b6, 0x04d8, 0xd6dc, 0x1150, 0xa684, 0x7fff, 0x68b6, 0x6894, -+ 0x68a6, 0x6898, 0x68aa, 0x080c, 0x3f26, 0x0478, 0xd6ac, 0x0140, -+ 0xa006, 0x080c, 0x3f26, 0x2408, 0x2510, 0x69aa, 0x6aa6, 0x0068, -+ 0x2408, 0x2510, 0x2700, 0x8007, 0xa084, 0x007f, 0xa108, 0xa291, -+ 0x0000, 0x69aa, 0x6aa6, 0x080c, 0x3f26, 0xd6fc, 0x01b0, 0xa684, -+ 0x7fff, 0x68b6, 0x2510, 0x2408, 0xd6ac, 0x1138, 0x2700, 0x8007, -+ 0xa084, 0x007f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, -+ 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x7000, 0xa086, 0x0030, -+ 0x1904, 0x25a0, 0x7003, 0x0002, 0x70b8, 0xa06d, 0x68bc, 0x703e, -+ 0x70b4, 0xa065, 0x68c0, 0x7056, 0x2d00, 0x704a, 0xad80, 0x0009, -+ 0x7042, 0x0005, 0xa586, 0x8800, 0x1148, 0x7003, 0x0000, 0x6018, -+ 0x8001, 0x601a, 0x6008, 0xa084, 0xfbef, 0x600a, 0x0804, 0x3a36, -+ 0x7043, 0x0000, 0xa282, 0x0006, 0x0310, 0x080c, 0x254c, 0x2300, -+ 0x0002, 0x3594, 0x35a5, 0x35af, 0x2200, 0x0002, 0x359c, 0x3a36, -+ 0x359e, 0x359c, 0x35e0, 0x362e, 0x080c, 0x254c, 0x7a80, 0xa294, -+ 0x0f00, 0x080c, 0x3682, 0x0804, 0x3a0b, 0x00c1, 0x0002, 0x3a36, -+ 0x35ad, 0x35ad, 0x35e0, 0x35ad, 0x3a36, 0x080c, 0x254c, 0x0071, -+ 0x0002, 0x35b9, 0x35b7, 0x35b7, 0x35b9, 0x35b7, 0x35b9, 0x080c, -+ 0x254c, 0x080c, 0x3a4b, 0x781b, 0x0082, 0x0005, 0x7000, 0xa086, -+ 0x0002, 0x1150, 0x080c, 0x37be, 0x0010, 0x080c, 0x3f26, 0x6008, -+ 0xa084, 0xfbef, 0x600a, 0x0020, 0x7000, 0xa086, 0x0003, 0x0da8, -+ 0x7003, 0x0005, 0x2001, 0x8de0, 0xae8e, 0x4640, 0x0110, 0x2001, -+ 0x8e12, 0x2068, 0x704a, 0xad80, 0x0009, 0x7042, 0x2200, 0x0005, -+ 0x7000, 0xa086, 0x0002, 0x1158, 0x70d0, 0xc0b5, 0x70d2, 0x2c00, -+ 0x70b6, 0x2d00, 0x70ba, 0x0038, 0x080c, 0x3f26, 0x0020, 0x7000, -+ 0xa086, 0x0003, 0x0dc8, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, -+ 0x789b, 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0x2069, 0x8cc0, -+ 0xb284, 0x0600, 0x1118, 0xc2fd, 0x2069, 0x8dd0, 0x2d04, 0x2d08, -+ 0x715a, 0xa06d, 0x0128, 0x6814, 0xa206, 0x0120, 0x6800, 0x0cb8, -+ 0x080c, 0x3682, 0x6eb4, 0x7e5a, 0x6920, 0xa184, 0x0c00, 0x0904, -+ 0x36a8, 0x7060, 0xa086, 0x0006, 0x1128, 0x7070, 0xa206, 0x1110, -+ 0x7062, 0x707a, 0x681b, 0x0005, 0xc1ad, 0x681b, 0x0005, 0xc1ad, -+ 0xc1d4, 0x6922, 0x080c, 0x3a42, 0x0804, 0x36a8, 0x7200, 0xa286, -+ 0x0002, 0x1158, 0x70d0, 0xc0b5, 0x70d2, 0x2c00, 0x70b6, 0x2d00, -+ 0x70ba, 0x0030, 0x080c, 0x3f26, 0x0018, 0xa286, 0x0003, 0x0dd0, -+ 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, -+ 0xa484, 0x001f, 0xa215, 0xae86, 0x4640, 0x0108, 0xc2fd, 0x79a8, -+ 0x79a8, 0xa18c, 0x00ff, 0x2118, 0x70c8, 0xa168, 0x2d04, 0x2d08, -+ 0x715a, 0xa06d, 0x0128, 0x6814, 0xa206, 0x0118, 0x6800, 0x0cb8, -+ 0x0409, 0x6eb4, 0x6920, 0xa184, 0x0c00, 0x0904, 0x36a8, 0xd0dc, -+ 0x0178, 0x7060, 0xa086, 0x0004, 0x1140, 0x7070, 0xa206, 0x1128, -+ 0x7074, 0xa306, 0x1110, 0x7062, 0x707a, 0x080c, 0x3a48, 0x0480, -+ 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, 0x080c, 0x3a42, 0x707b, -+ 0x0000, 0x0430, 0x7003, 0x0005, 0xb284, 0x0600, 0x0118, 0x2001, -+ 0x8de0, 0x0010, 0x2001, 0x8e12, 0x2068, 0x704a, 0x0156, 0x20a9, -+ 0x0032, 0x2003, 0x0000, 0x8000, 0x1f04, 0x3691, 0x015e, 0xb284, -+ 0x0600, 0x0110, 0xc2fc, 0x0008, 0xc2fd, 0x6a16, 0xad80, 0x0009, -+ 0x7042, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x0005, -+ 0xc6ec, 0xa6ac, 0x0060, 0x0904, 0x36ef, 0x6b98, 0x6c94, 0x69ac, -+ 0x68b0, 0xa105, 0x11e0, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa586, -+ 0x0060, 0x05c8, 0xd6f4, 0x1108, 0xc6ed, 0xa6b4, 0xb7ff, 0x7e5a, -+ 0x2009, 0x0083, 0xd69c, 0x0128, 0x2009, 0x0082, 0x2019, 0x0000, -+ 0x2320, 0x791a, 0xd6ec, 0x0588, 0x080c, 0x41d9, 0x0470, 0x68b0, -+ 0xa31a, 0x2100, 0xa423, 0x2400, 0xa305, 0x01f8, 0x7bd2, 0x7bda, -+ 0x7cd6, 0x7cde, 0x68b0, 0xd6f4, 0x1108, 0xc6ed, 0xc6f4, 0x7e5a, -+ 0x2011, 0x0083, 0xd69c, 0x0128, 0x2011, 0x0082, 0x2019, 0x0000, -+ 0x2320, 0x7a1a, 0xd6ec, 0x0188, 0x080c, 0x4206, 0x0070, 0x2019, -+ 0x0000, 0x2320, 0x0010, 0xa6b4, 0xb7ff, 0x7e5a, 0x2009, 0x0083, -+ 0xd69c, 0x0110, 0x2009, 0x0082, 0x791a, 0x68c0, 0x7056, 0x2d00, -+ 0x704a, 0x68c4, 0x2060, 0x71d0, 0x2001, 0x4601, 0x2004, 0xd0c4, -+ 0x15c8, 0x70d4, 0xa02d, 0x01b8, 0xd1bc, 0x0548, 0x7a80, 0xa294, -+ 0x0f00, 0x70d8, 0xa206, 0x0118, 0x78e0, 0xa504, 0x1558, 0x70d6, -+ 0xc1bc, 0x71d2, 0x0438, 0x2031, 0x0001, 0x852c, 0x0218, 0x8633, -+ 0x8210, 0x0cd8, 0x0005, 0x7de0, 0xa594, 0xff00, 0x0130, 0x2011, -+ 0x0008, 0x852f, 0x0c81, 0x8637, 0x0008, 0x0c69, 0x8217, 0x7880, -+ 0xa084, 0x0f00, 0xa206, 0x0170, 0x72da, 0x76d6, 0x0058, 0x7a80, -+ 0xa294, 0x0f00, 0x70d8, 0xa236, 0x0dc0, 0x78e0, 0xa534, 0x0da8, -+ 0xc1bd, 0x71d2, 0xd1b4, 0x1904, 0x259d, 0x2300, 0xa405, 0x0904, -+ 0x259d, 0x70a0, 0xa086, 0x0001, 0x1904, 0x25e1, 0x0005, 0x6020, -+ 0xa005, 0x0150, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, 0x600a, -+ 0x700f, 0x0100, 0x702c, 0x6026, 0x0005, 0xa006, 0x080c, 0x3f26, -+ 0x7000, 0xa086, 0x0002, 0x0120, 0x7060, 0xa086, 0x0005, 0x1150, -+ 0x682b, 0x0000, 0x6817, 0x0000, 0x681b, 0x0001, 0x6823, 0x0040, -+ 0x681f, 0x0100, 0x7000, 0xa084, 0x000f, 0x0002, 0x25a0, 0x3783, -+ 0x3780, 0x37a0, 0x378c, 0x25a0, 0x377e, 0x377e, 0x080c, 0x254c, -+ 0x0449, 0x0411, 0x0028, 0x0431, 0x7058, 0x2060, 0x6800, 0x6002, -+ 0x080c, 0x1da2, 0x0804, 0x25a0, 0x7060, 0x7063, 0x0000, 0x707f, -+ 0x0000, 0x0002, 0x379c, 0x379c, 0x379a, 0x379a, 0x379a, 0x379c, -+ 0x379a, 0x379c, 0x0804, 0x2a6b, 0x7063, 0x0000, 0x0804, 0x25a0, -+ 0x681b, 0x0000, 0x0804, 0x3184, 0x6800, 0xa005, 0x1108, 0x6002, -+ 0x6006, 0x0005, 0x6410, 0x84ff, 0x0168, 0x2009, 0x4602, 0x2104, -+ 0x8001, 0x200a, 0x8421, 0x6412, 0x1128, 0x2021, 0x4604, 0x2404, -+ 0xc0a5, 0x2022, 0x6008, 0xc0a4, 0x600a, 0x0005, 0x6018, 0xa005, -+ 0x0110, 0x8001, 0x601a, 0x0005, 0x080c, 0x3c46, 0x681b, 0x0018, -+ 0x0490, 0x080c, 0x3c46, 0x681b, 0x0019, 0x0468, 0x080c, 0x3c46, -+ 0x681b, 0x001a, 0x0440, 0x080c, 0x3c46, 0x681b, 0x0003, 0x0418, -+ 0x7770, 0x080c, 0x3b6f, 0x7174, 0xa18c, 0x00ff, 0x3210, 0xa294, -+ 0x0600, 0x0118, 0xa1e8, 0x8bc0, 0x0010, 0xa1e8, 0x8cd0, 0x2d04, -+ 0x2d08, 0x2068, 0xa005, 0x1118, 0x707a, 0x0804, 0x25a0, 0x6814, -+ 0x7270, 0xa206, 0x0110, 0x6800, 0x0c98, 0x6800, 0x200a, 0x681b, -+ 0x0005, 0x707b, 0x0000, 0x080c, 0x37aa, 0x6820, 0xd084, 0x1110, -+ 0x080c, 0x37a4, 0x080c, 0x37be, 0x681f, 0x0000, 0x6823, 0x0020, -+ 0x080c, 0x1da2, 0x0804, 0x25a0, 0xa282, 0x0003, 0x1904, 0x3a10, -+ 0x7da8, 0xa5ac, 0x00ff, 0x7ea8, 0xa6b4, 0x00ff, 0x6920, 0xc1bd, -+ 0x6922, 0xd1c4, 0x05b0, 0xc1c4, 0x6922, 0xa6b4, 0x00ff, 0x0530, -+ 0xa682, 0x0018, 0x0218, 0x0110, 0x2031, 0x0018, 0xa686, 0x0010, -+ 0x1108, 0x8630, 0x852b, 0x852b, 0x2041, 0x0000, 0x080c, 0x3ac9, -+ 0x0118, 0x080c, 0x38f7, 0x00a0, 0x080c, 0x3a95, 0x080c, 0x38f4, -+ 0x6920, 0xc1c5, 0x6922, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x1118, -+ 0x781b, 0x006e, 0x0005, 0x781b, 0x0082, 0x0005, 0x080c, 0x38f4, -+ 0x7e58, 0xd6d4, 0x1118, 0x781b, 0x0071, 0x0005, 0x781b, 0x0083, -+ 0x0005, 0x00c6, 0x7054, 0x2060, 0x6100, 0xd1e4, 0x0598, 0x6208, -+ 0x8217, 0xa294, 0x00ff, 0xa282, 0x0018, 0x0218, 0x0110, 0x2011, -+ 0x0018, 0x2600, 0xa202, 0x1208, 0x2230, 0xa686, 0x0010, 0x1108, -+ 0x8630, 0x6208, 0xa294, 0x00ff, 0x78ec, 0xd0e4, 0x0130, 0xa282, -+ 0x000a, 0x1240, 0x2011, 0x000a, 0x0028, 0xa282, 0x000c, 0x1210, -+ 0x2011, 0x000c, 0x2200, 0xa502, 0x1208, 0x2228, 0x080c, 0x3a99, -+ 0x852b, 0x852b, 0x2041, 0x0000, 0x080c, 0x3ac9, 0x0118, 0x080c, -+ 0x38f7, 0x0020, 0x080c, 0x3a95, 0x080c, 0x38f4, 0x7858, 0xc095, -+ 0x785a, 0x00ce, 0x781b, 0x0082, 0x0005, 0x00c6, 0x2960, 0x6000, -+ 0xd0e4, 0x1188, 0xd0b4, 0x1150, 0x6010, 0xa084, 0x000f, 0x1130, -+ 0x6104, 0xa18c, 0xfff5, 0x6106, 0x00ce, 0x0005, 0x2011, 0x0032, -+ 0x2019, 0x0000, 0x00f0, 0x68a0, 0xd0cc, 0x1dc0, 0x6208, 0xa294, -+ 0x00ff, 0x78ec, 0xd0e4, 0x0130, 0xa282, 0x000b, 0x1218, 0x2011, -+ 0x000a, 0x0028, 0xa282, 0x000c, 0x1210, 0x2011, 0x000c, 0x6308, -+ 0x831f, 0xa39c, 0x00ff, 0xa382, 0x0018, 0x0218, 0x0110, 0x2019, -+ 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, -+ 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xc0c5, 0x6822, 0x080c, 0x3a55, -+ 0x00ce, 0x0005, 0x00c6, 0x2960, 0x6104, 0xa18c, 0xfff5, 0x6106, -+ 0x2011, 0x0032, 0x2019, 0x0000, 0x0000, 0x78ab, 0x0001, 0x78ab, -+ 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, -+ 0xc0c5, 0x6822, 0x00ce, 0x0005, 0xa006, 0x2030, 0x2010, 0x00c6, -+ 0x7154, 0x2160, 0x2018, 0x2008, 0xa084, 0xffe0, 0xa635, 0x7e86, -+ 0x6018, 0x789a, 0x7eae, 0x6612, 0x78a4, 0xa084, 0x7770, 0xa18c, -+ 0x000f, 0xa105, 0x2029, 0x4605, 0x252c, 0xd5cc, 0x0140, 0xd3a4, -+ 0x0110, 0xa085, 0x0800, 0xd3fc, 0x0110, 0xa085, 0x8080, 0x78a6, -+ 0x6016, 0x788a, 0xa6b4, 0x001f, 0x8637, 0x8204, 0x8004, 0xa605, -+ 0x600e, 0x6004, 0xa084, 0xffd5, 0x6006, 0x00ce, 0x0005, 0xa282, -+ 0x0002, 0x1904, 0x3a1a, 0x7aa8, 0x6920, 0xc1bd, 0x6922, 0xd1cc, -+ 0x0568, 0xc1cc, 0x6922, 0xa294, 0x00ff, 0xa282, 0x0002, 0x1a04, -+ 0x3a0b, 0x080c, 0x399e, 0x080c, 0x38f4, 0xa980, 0x0001, 0x200c, -+ 0x080c, 0x3b6b, 0x080c, 0x3895, 0x88ff, 0x0178, 0x789b, 0x0060, -+ 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x1118, 0x781b, -+ 0x006e, 0x0005, 0x781b, 0x0082, 0x0005, 0x7e58, 0xd6d4, 0x1118, -+ 0x781b, 0x0071, 0x0005, 0x781b, 0x0083, 0x0005, 0xa282, 0x0002, -+ 0x1218, 0xa284, 0x0001, 0x0140, 0x7154, 0xa188, 0x0000, 0x210c, -+ 0xd1ec, 0x1110, 0x2011, 0x0000, 0x080c, 0x3a87, 0x0479, 0x080c, -+ 0x38f4, 0x7858, 0xc095, 0x785a, 0x781b, 0x0082, 0x0005, 0x00c6, -+ 0x0026, 0x2960, 0x6000, 0x2011, 0x0001, 0xd0ec, 0x1158, 0xd0bc, -+ 0x1138, 0x6014, 0xd0b4, 0x1120, 0xc1a4, 0x6106, 0xa006, 0x0088, -+ 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, -+ 0x7aaa, 0xa8c0, 0x0004, 0x080c, 0x3a55, 0x6820, 0xa085, 0x0200, -+ 0x6822, 0x002e, 0x00ce, 0x0005, 0x8807, 0xa715, 0x00c6, 0x2009, -+ 0x0000, 0x7054, 0x2060, 0x82ff, 0x0110, 0x2009, 0x0040, 0x6018, -+ 0xa080, 0x0002, 0x789a, 0x78a4, 0xa084, 0xff9f, 0xa105, 0xc0ec, -+ 0xd0b4, 0x1108, 0xc0ed, 0x6100, 0xd1f4, 0x0110, 0xa085, 0x0020, -+ 0x78a6, 0x6016, 0x788a, 0x6004, 0xa084, 0xffef, 0x6006, 0x00ce, -+ 0x0005, 0x0006, 0x7000, 0xa086, 0x0003, 0x0110, 0x000e, 0x0010, -+ 0x000e, 0x0488, 0xd6ac, 0x0578, 0x7888, 0xa084, 0x0040, 0x0558, -+ 0x7bb8, 0x8307, 0xa084, 0x007f, 0x1508, 0x8207, 0xa084, 0x00ff, -+ 0xa09e, 0x0001, 0x1904, 0x3a32, 0xd6f4, 0x11d0, 0x79d8, 0x7adc, -+ 0xa108, 0xa291, 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x080c, -+ 0x42b5, 0x781b, 0x0080, 0xb284, 0x0600, 0x0118, 0x2001, 0x0000, -+ 0x0010, 0x2001, 0x0001, 0x080c, 0x4172, 0x0005, 0x080c, 0x254c, -+ 0x781b, 0x0080, 0x0005, 0x781b, 0x0083, 0x0005, 0x2039, 0x0000, -+ 0x2041, 0x0000, 0x2031, 0x0000, 0xa006, 0x2010, 0x080c, 0x38f7, -+ 0x080c, 0x399c, 0x7e58, 0x080c, 0x3a4e, 0x781b, 0x0082, 0x0005, -+ 0x0cd1, 0x6820, 0xc0c4, 0x6822, 0x00c6, 0x7054, 0x2060, 0x080c, -+ 0x3921, 0x00b0, 0x0c81, 0x6820, 0xc0cc, 0x6822, 0x00c6, 0x7054, -+ 0x2060, 0x080c, 0x39bb, 0x0060, 0x0c31, 0x6820, 0xa084, 0xecff, -+ 0x6822, 0x00c6, 0x7054, 0x2060, 0x6004, 0xa084, 0xffc5, 0x6006, -+ 0x00ce, 0x0005, 0x0049, 0x781b, 0x0082, 0x0005, 0x6827, 0x0002, -+ 0x0049, 0x781b, 0x0082, 0x0005, 0x2001, 0x0005, 0x0088, 0x2001, -+ 0x000c, 0x0070, 0x6820, 0xc0d5, 0x6822, 0x2001, 0x0006, 0x0040, -+ 0x2001, 0x000d, 0x0028, 0x2001, 0x0009, 0x0010, 0x2001, 0x0007, -+ 0x789b, 0x007e, 0x78aa, 0xc69d, 0x7e5a, 0x70d0, 0xd0b4, 0x0168, -+ 0xc0b4, 0x70d2, 0x00c6, 0x70b4, 0xa065, 0x6008, 0xa084, 0xfbef, -+ 0x600a, 0x6018, 0x8001, 0x601a, 0x00ce, 0x0005, 0x0076, 0x873f, -+ 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703, 0xa0e0, 0x4ac0, 0xae8e, -+ 0x4640, 0x0110, 0xa0e0, 0x4b40, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, -+ 0xa184, 0x7fe0, 0x78ae, 0x6012, 0x79a4, 0xa184, 0x773f, 0x78a6, -+ 0x6016, 0x6004, 0xa085, 0x0038, 0x6006, 0x007e, 0x0005, 0x789b, -+ 0x0080, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, -+ 0x789b, 0x0060, 0x78ab, 0x0004, 0x0800, 0x2031, 0x0000, 0x2029, -+ 0x0032, 0x789b, 0x0080, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, -+ 0x0001, 0x7daa, 0x7eaa, 0x789b, 0x0060, 0x78ab, 0x0005, 0x0804, -+ 0x3a55, 0x0156, 0x8007, 0xa084, 0x00ff, 0x8003, 0x8003, 0xa080, -+ 0x0020, 0x789a, 0x79a4, 0xa18c, 0xffe0, 0x2021, 0x3b54, 0x2019, -+ 0x0011, 0x20a9, 0x000e, 0x2011, 0x0032, 0x2404, 0xa084, 0xffe0, -+ 0xa106, 0x0128, 0x8420, 0x2300, 0xa210, 0x1f04, 0x3abd, 0x015e, -+ 0x0005, 0x0156, 0x04f8, 0x2021, 0x3b62, 0x20a9, 0x0009, 0x2011, -+ 0x0029, 0xa582, 0x0028, 0x0550, 0x8420, 0x95a9, 0x2011, 0x0033, -+ 0xa582, 0x0033, 0x0618, 0x8420, 0x95a9, 0x2019, 0x000a, 0x2011, -+ 0x0065, 0x2200, 0xa502, 0x02d0, 0x8420, 0x2300, 0xa210, 0x1f04, -+ 0x3ae1, 0x015e, 0x0088, 0x2021, 0x3b54, 0x2019, 0x0011, 0x20a9, -+ 0x000e, 0x2011, 0x0033, 0x2200, 0xa502, 0x0240, 0x8420, 0x2300, -+ 0xa210, 0x1f04, 0x3af3, 0x015e, 0xa006, 0x0005, 0x8211, 0x015e, -+ 0xa582, 0x0064, 0x1220, 0x7808, 0xa085, 0x0070, 0x780a, 0x2404, -+ 0xa005, 0x0005, 0xa886, 0x0002, 0x01e8, 0x2021, 0x3b40, 0x20a9, -+ 0x000d, 0x2011, 0x0028, 0xa582, 0x0028, 0x0d48, 0x8420, 0x2019, -+ 0x0019, 0x2011, 0x0033, 0x2200, 0xa502, 0x0e00, 0x8420, 0x2300, -+ 0xa210, 0x1f04, 0x3b1b, 0x015e, 0x2011, 0x0184, 0xa582, 0x0185, -+ 0x0ab0, 0x0890, 0x2021, 0x3b4f, 0x20a9, 0x0003, 0x2011, 0x0024, -+ 0xa586, 0x0024, 0x0960, 0x8420, 0x2011, 0x0028, 0xa586, 0x0028, -+ 0x0930, 0x8420, 0x2019, 0x0019, 0x2011, 0x0033, 0x0804, 0x3af3, -+ 0x1021, 0x2202, 0x3403, 0x4604, 0x5805, 0x6a06, 0x7c07, 0x4610, -+ 0x4612, 0x5812, 0x5a12, 0x6a14, 0x6c14, 0x6e14, 0x7e17, 0x9021, -+ 0xb002, 0xe204, 0xe210, 0xe210, 0x1209, 0x3002, 0x3202, 0x4203, -+ 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, 0x7a06, 0x0c07, -+ 0x0c07, 0x0e07, 0x10e1, 0x330a, 0x5805, 0x5a05, 0x6a06, 0x6c06, -+ 0x7c07, 0x7e07, 0x0e00, 0x789b, 0x0080, 0xa046, 0x0005, 0xa784, -+ 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, 0x8003, -+ 0xa105, 0xd7fc, 0x0118, 0xa0e0, 0x6bc0, 0x0010, 0xa0e0, 0x4bc0, -+ 0x0005, 0x00e6, 0x00f6, 0xd084, 0x0138, 0x2079, 0x0100, 0x2009, -+ 0x4680, 0x2071, 0x4680, 0x0030, 0x2009, 0x4640, 0x2079, 0x0200, -+ 0x2071, 0x4640, 0x2091, 0x8000, 0x2104, 0xa084, 0x000f, 0x0002, -+ 0x3ba2, 0x3ba2, 0x3ba2, 0x3ba2, 0x3ba2, 0x3ba2, 0x3ba0, 0x3ba0, -+ 0x080c, 0x254c, 0x69b4, 0xc1f5, 0xa18c, 0xff9f, 0x69b6, 0xa005, -+ 0x0580, 0x7858, 0xa084, 0xff9f, 0xa085, 0x6000, 0x785a, 0x7828, -+ 0xa086, 0x1814, 0x1530, 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, -+ 0x1de0, 0x784b, 0x0008, 0x7848, 0xa084, 0x0008, 0x1de0, 0x7830, -+ 0xd0bc, 0x11b8, 0xb284, 0x0800, 0x0118, 0x0104, 0x3bd9, 0x0010, -+ 0x0304, 0x3bd9, 0x79e4, 0xa184, 0x0030, 0x0158, 0x78ec, 0xa084, -+ 0x0003, 0x0138, 0x681c, 0xd0ac, 0x1110, 0x00d9, 0x0010, 0x781b, -+ 0x00fb, 0x00fe, 0x00ee, 0x0005, 0x2001, 0x4601, 0x2004, 0xd0ac, -+ 0x1118, 0x6814, 0x080c, 0x2475, 0x0005, 0x781b, 0x0083, 0x0005, -+ 0x781b, 0x0082, 0x0005, 0x781b, 0x0071, 0x0005, 0x781b, 0x006e, -+ 0x0005, 0x2009, 0x4619, 0x210c, 0xa186, 0x0000, 0x0150, 0xa186, -+ 0x0001, 0x0150, 0x701f, 0x000b, 0x7063, 0x0001, 0x781b, 0x0054, -+ 0x0005, 0x781b, 0x00f3, 0x0005, 0x701f, 0x000a, 0x0005, 0x2009, -+ 0x4619, 0x210c, 0xa186, 0x0000, 0x0168, 0xa186, 0x0001, 0x0138, -+ 0x701f, 0x000b, 0x7063, 0x0001, 0x781b, 0x0054, 0x0005, 0x701f, -+ 0x000a, 0x0005, 0x781b, 0x00f2, 0x0005, 0x781b, 0x00fb, 0x0005, -+ 0x781b, 0x00fa, 0x0005, 0x781b, 0x00cc, 0x0005, 0x781b, 0x00cb, -+ 0x0005, 0x6818, 0xd0fc, 0x0110, 0x681b, 0x001d, 0x7063, 0x0001, -+ 0x781b, 0x0054, 0x0005, 0x7830, 0xa084, 0x00c0, 0x1170, 0x7808, -+ 0xc08c, 0x780a, 0xe000, 0xe000, 0xe000, 0xe000, 0x78ec, 0xa084, -+ 0x0021, 0x0118, 0x7808, 0xc08d, 0x780a, 0x0005, 0x7808, 0xc08d, -+ 0x780a, 0x0005, 0x7830, 0xa084, 0x0040, 0x1de0, 0xb284, 0x0800, -+ 0x0118, 0x1104, 0x3c58, 0x0010, 0x1304, 0x3c58, 0x78ac, 0x0005, -+ 0x7808, 0xa084, 0xfffd, 0x780a, 0xe000, 0xe000, 0xe000, 0xe000, -+ 0x78ec, 0xa084, 0x0021, 0x0140, 0xb284, 0x0800, 0x0118, 0x1104, -+ 0x3c67, 0x0010, 0x1304, 0x3c6a, 0x78ac, 0x0006, 0x7808, 0xa085, -+ 0x0002, 0x780a, 0x000e, 0x0005, 0xa784, 0x0001, 0x1904, 0x322a, -+ 0xa784, 0x0070, 0x0140, 0x00c6, 0x2d60, 0x2f68, 0x080c, 0x2467, -+ 0x2d78, 0x2c68, 0x00ce, 0xa784, 0x0008, 0x0148, 0x784b, 0x0008, -+ 0x78ec, 0xa084, 0x0003, 0x0904, 0x322a, 0x0804, 0x3be5, 0xa784, -+ 0x0004, 0x01c8, 0x78b8, 0xa084, 0x8000, 0x01a8, 0x784b, 0x0008, -+ 0x78ec, 0xa084, 0x0003, 0x0904, 0x322a, 0x78e4, 0xa084, 0x0007, -+ 0xa086, 0x0001, 0x1140, 0x78c0, 0xa685, 0x4800, 0x2030, 0x7e5a, -+ 0x781b, 0x00fb, 0x0005, 0xa784, 0x0080, 0x0140, 0x7884, 0xd0fc, -+ 0x0128, 0x080c, 0x3a32, 0x681b, 0x0022, 0x0005, 0x681b, 0x0003, -+ 0x7858, 0xa084, 0x5f00, 0x681e, 0x682f, 0x0000, 0x6833, 0x0000, -+ 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0904, 0x2b89, 0xb284, -+ 0x0800, 0x0110, 0x0104, 0x259d, 0x0304, 0x259d, 0x6b14, 0x8307, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xd3fc, 0x0118, 0xa080, -+ 0x4b40, 0x0010, 0xa080, 0x4ac0, 0x2060, 0x2048, 0x7056, 0x2a60, -+ 0x0005, 0x00c6, 0x2960, 0x6000, 0xd0ac, 0x0904, 0x3d2f, 0x68a0, -+ 0xd1ac, 0x1120, 0xa084, 0x0e00, 0x0904, 0x3d2d, 0x6108, 0x8117, -+ 0xa18c, 0x00ff, 0x631c, 0x832f, 0xd0dc, 0x0110, 0xa39d, 0x0001, -+ 0xd0cc, 0x11c8, 0xa584, 0x00ff, 0x0138, 0x78ec, 0xd0e4, 0x0110, -+ 0x8213, 0x00b8, 0x2029, 0x0000, 0xa182, 0x000c, 0x1290, 0x78ec, -+ 0xd0e4, 0x1118, 0x2009, 0x000c, 0x0060, 0xa182, 0x000b, 0x1248, -+ 0x2009, 0x000a, 0x0030, 0x2009, 0x0032, 0x2011, 0x0000, 0x2029, -+ 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0006, 0x78ab, 0x0004, 0x79aa, -+ 0x78ab, 0x0000, 0x7aaa, 0x7baa, 0x7daa, 0xa8c0, 0x0008, 0x6820, -+ 0xa085, 0x1000, 0x6822, 0x080c, 0x3a55, 0xa085, 0x0001, 0x00ce, -+ 0x0005, 0xa282, 0x0006, 0x1904, 0x3a24, 0x7da8, 0x7eac, 0x8637, -+ 0xa5ac, 0x00ff, 0xa6b4, 0x00ff, 0x7fac, 0x8747, 0xa7bc, 0x00ff, -+ 0xa8c4, 0x00ff, 0x6920, 0xc1bd, 0x6922, 0xd1e4, 0x0904, 0x3da3, -+ 0xa18c, 0xecff, 0x6922, 0xa782, 0x0002, 0x1a04, 0x39fe, 0xa6b4, -+ 0x00ff, 0x0904, 0x3da0, 0xa682, 0x0031, 0x1a04, 0x39fe, 0xa582, -+ 0x0009, 0x0a04, 0x39fe, 0xa882, 0x0003, 0x1a04, 0x39fe, 0xa886, -+ 0x0002, 0x01d0, 0xa886, 0x0000, 0x1904, 0x39fe, 0x2001, 0x000c, -+ 0x79ec, 0xd1e4, 0x0110, 0x2001, 0x000a, 0xa502, 0x1290, 0x080c, -+ 0x39fe, 0x00c6, 0x2960, 0x6004, 0xa085, 0x001a, 0x6006, 0x6000, -+ 0xc0ac, 0x6002, 0x00ce, 0x0005, 0xa786, 0x0000, 0x0904, 0x39fe, -+ 0x8634, 0xa682, 0x0018, 0x0228, 0x0120, 0x2031, 0x0018, 0x0804, -+ 0x3df1, 0xa686, 0x0010, 0x1108, 0x8630, 0x852b, 0x852b, 0x080c, -+ 0x3ac9, 0x0904, 0x39fe, 0x080c, 0x38f7, 0x080c, 0x399c, 0x7e58, -+ 0xd6d4, 0x1118, 0x781b, 0x0071, 0x0005, 0x781b, 0x0083, 0x0005, -+ 0x080c, 0x38f4, 0x0c90, 0xa886, 0x0002, 0x1108, 0x8634, 0x7154, -+ 0xa188, 0x0000, 0x210c, 0xd1ac, 0x0904, 0x39fe, 0xd1ec, 0x1120, -+ 0x2039, 0x0000, 0x2041, 0x0000, 0xd1e4, 0x1120, 0x2031, 0x0000, -+ 0x2041, 0x0000, 0xa782, 0x0002, 0x12c8, 0x621c, 0xa284, 0x00ff, -+ 0xa706, 0x0110, 0x2039, 0x0000, 0xa605, 0x0190, 0x6108, 0x811f, -+ 0xa39c, 0x00ff, 0x0168, 0xa302, 0x1208, 0x2330, 0x8807, 0xa705, -+ 0xa086, 0x0201, 0x0160, 0xa886, 0x0000, 0x0168, 0x2039, 0x0000, -+ 0x2041, 0x0000, 0x2031, 0x0000, 0xa006, 0x2010, 0x0070, 0xa284, -+ 0xff00, 0x1108, 0x2040, 0xa184, 0x00ff, 0xa502, 0x0108, 0x2128, -+ 0x852b, 0x852b, 0x080c, 0x3ac9, 0x0d58, 0x080c, 0x38f7, 0x080c, -+ 0x399c, 0x789b, 0x0080, 0x78ab, 0x0001, 0x78ab, 0x0006, 0x78ab, -+ 0x0004, 0x7daa, 0x78ab, 0x0000, 0x7eaa, 0x7faa, 0x2800, 0x78aa, -+ 0x789b, 0x0060, 0x78ab, 0x0008, 0x6820, 0xc0e5, 0x6822, 0x080c, -+ 0x3a55, 0x7858, 0xc095, 0x785a, 0x781b, 0x0082, 0x0005, 0x0020, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, -+ 0x0020, 0x0062, 0x0009, 0x0014, 0x0014, 0x9855, 0x984d, 0x0014, -+ 0x9911, 0x98ff, 0x0014, 0x0014, 0x0090, 0x00e7, 0x0100, 0x0402, -+ 0x2008, 0xf880, 0x0018, 0x0017, 0x840f, 0xd8c1, 0x0014, 0x0016, -+ 0xa20a, 0x0014, 0x300b, 0xa20c, 0x0014, 0x2500, 0x0013, 0x2500, -+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, -+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0xa200, 0x3806, -+ 0x8839, 0x20c4, 0x0864, 0xa850, 0x3008, 0x28c1, 0x9d18, 0xa201, -+ 0x300c, 0x2847, 0x8161, 0x846a, 0x8000, 0x84a4, 0x1856, 0x883a, -+ 0xa808, 0x28e2, 0x9cce, 0xa8f3, 0x0864, 0xa83e, 0x300c, 0xa801, -+ 0x3008, 0x28e1, 0x9cce, 0x28a2, 0x7163, 0xa831, 0x2021, 0xa818, -+ 0xa205, 0x870c, 0xd8de, 0x64a0, 0x6de0, 0x6fc0, 0x67a4, 0x6c80, -+ 0x0212, 0xa205, 0x883d, 0x882b, 0x1814, 0x883b, 0x7027, 0x85f2, -+ 0xa737, 0xa532, 0xf003, 0x8576, 0x8677, 0xa813, 0x883e, 0xa811, -+ 0x2882, 0x7162, 0xa814, 0x280a, 0xa204, 0x64c0, 0x6de0, 0x67a0, -+ 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, 0x8677, 0xa802, 0x7861, -+ 0x883e, 0x206a, 0x28c1, 0x9d18, 0x2042, 0x2101, 0xa8ca, 0x2902, -+ 0xa20e, 0xa80b, 0xa207, 0x0014, 0xa203, 0x8000, 0x85a4, 0x1872, -+ 0x879a, 0x883c, 0x1fe2, 0xf601, 0xa208, 0x856e, 0x7121, 0x0014, -+ 0x0704, 0x3008, 0x9cce, 0x0014, 0xa202, 0x8000, 0x85a4, 0x3009, -+ 0x84a8, 0x19e2, 0xf844, 0x856e, 0x883f, 0x08e6, 0xa8f5, 0xf861, -+ 0xa8eb, 0xf801, 0x0014, 0xf881, 0x0016, 0x85b2, 0x80f0, 0x9532, -+ 0xfaa2, 0x1de2, 0x0014, 0x8532, 0xf221, 0x0014, 0x1de2, 0x84a8, -+ 0xd6e0, 0x1fe6, 0x0014, 0x3008, 0x8000, 0x2849, 0x1011, 0xa8fc, -+ 0x3008, 0x8000, 0xa000, 0x2081, 0x2802, 0x1011, 0xa8fc, 0xa889, -+ 0x3008, 0x20a1, 0x283c, 0x1011, 0xa8fc, 0xa209, 0x0017, 0x300c, -+ 0x8000, 0x85a4, 0x1de2, 0xdac1, 0x0014, 0x0210, 0xa801, 0x0014, -+ 0x26e0, 0x873a, 0xfaa3, 0x19f2, 0x26e0, 0x18f2, 0x0014, 0xa20b, -+ 0x0014, 0xa20d, 0x3806, 0x0210, 0x9d22, 0x0704, 0xa206, 0x6865, -+ 0x817e, 0x842a, 0x1dc1, 0x8823, 0x0016, 0x6042, 0x8008, 0xa8fa, -+ 0x8160, 0x842a, 0x8180, 0xf021, 0x3008, 0x84a8, 0x11d7, 0x7042, -+ 0x20dd, 0x0011, 0x20d5, 0x8822, 0x0016, 0x0000, 0x0126, 0x70d0, -+ 0xa084, 0x4c00, 0x8004, 0x2090, 0x7204, 0x7008, 0xc09c, 0xa205, -+ 0x11a0, 0x720c, 0x82ff, 0x0128, 0x8aff, 0x1178, 0x7200, 0xd284, -+ 0x1160, 0x7804, 0xd0cc, 0x0110, 0x080c, 0x4328, 0x7007, 0x0008, -+ 0x7003, 0x0008, 0x012e, 0x2000, 0x0005, 0x7000, 0xa084, 0x0003, -+ 0x7002, 0xc69c, 0xd084, 0x0588, 0x7108, 0xe000, 0x7008, 0xa106, -+ 0x1dd8, 0xa184, 0x0003, 0x0904, 0x3fa2, 0xa184, 0x01e0, 0x1904, -+ 0x3fa2, 0xd1f4, 0x1d88, 0xa184, 0x3000, 0xa086, 0x1000, 0x0d60, -+ 0x2011, 0x0180, 0x710c, 0x8211, 0x0130, 0x7008, 0xd0f4, 0x1d20, -+ 0x700c, 0xa106, 0x0dc0, 0x7007, 0x0012, 0x7108, 0xe000, 0x7008, -+ 0xa106, 0x1dd8, 0xa184, 0x0003, 0x0568, 0xd194, 0x0db0, 0xd1f4, -+ 0x0548, 0x7007, 0x0002, 0x0880, 0x0428, 0x7108, 0xd1fc, 0x0130, -+ 0x080c, 0x40ae, 0x8aff, 0x0904, 0x3f2c, 0x0cb8, 0x700c, 0xa08c, -+ 0x07ff, 0x01e8, 0x7004, 0xd084, 0x0178, 0x7014, 0xa005, 0x1148, -+ 0x7010, 0x7310, 0xa306, 0x1de0, 0x2300, 0xa005, 0x0128, 0xa102, -+ 0x1e20, 0x7007, 0x0010, 0x0030, 0x8aff, 0x0148, 0x080c, 0x426b, -+ 0x1de8, 0x09d8, 0x080c, 0x4034, 0x012e, 0x2000, 0x0005, 0x7204, -+ 0x7108, 0xc19c, 0x8103, 0x1218, 0x7007, 0x0002, 0x0cc0, 0xa205, -+ 0x1d88, 0x7007, 0x0008, 0x7003, 0x0008, 0x0006, 0x2001, 0x4601, -+ 0x2004, 0xd0cc, 0x0110, 0x080c, 0x4328, 0x000e, 0x012e, 0x2000, -+ 0x0005, 0x6428, 0x84ff, 0x0508, 0x2c70, 0x7004, 0xa0bc, 0x000f, -+ 0xa7b8, 0x3ff5, 0x273c, 0x87fb, 0x1148, 0x0210, 0x080c, 0x254c, -+ 0x609c, 0xa075, 0x0190, 0x0c88, 0x2039, 0x3fea, 0x2704, 0xae68, -+ 0x6808, 0xa630, 0x680c, 0xa529, 0x8421, 0x0138, 0x8738, 0x2704, -+ 0xa005, 0x1da8, 0x709c, 0xa075, 0x1d00, 0x0005, 0x0000, 0x0005, -+ 0x0009, 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, -+ 0x0009, 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x3fea, 0x3fe7, -+ 0x0000, 0x0000, 0x8000, 0x0000, 0x3fea, 0x0000, 0x3ff2, 0x3fef, -+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3ff2, 0x0000, 0x3fed, 0x3fed, -+ 0x0000, 0x0000, 0x8000, 0x0000, 0x3fed, 0x0000, 0x3ff3, 0x3ff3, -+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3ff3, 0x2079, 0x4600, 0x2071, -+ 0x0010, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0001, 0x2009, -+ 0x0002, 0x2071, 0x0050, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, -+ 0x0000, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1128, 0x8109, 0x0118, -+ 0x2071, 0x0020, 0x0c80, 0x0005, 0x7004, 0x8004, 0x1a04, 0x408a, -+ 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x01e0, 0x0120, 0x080c, -+ 0x40e6, 0x0804, 0x40aa, 0x7007, 0x0012, 0x2019, 0x0000, 0x7108, -+ 0x7008, 0xa106, 0x1de0, 0xa184, 0x01e0, 0x0120, 0x080c, 0x40e6, -+ 0x0804, 0x40aa, 0xa19c, 0x300c, 0xa386, 0x2004, 0x0190, 0xa386, -+ 0x0008, 0x01c0, 0x7004, 0xd084, 0x1148, 0x7108, 0x7008, 0xa106, -+ 0x1de0, 0xa184, 0x0003, 0x0110, 0x0804, 0x40e6, 0xa386, 0x200c, -+ 0x19f0, 0x7200, 0x8204, 0x0230, 0x730c, 0xa384, 0x07ff, 0x0110, -+ 0x080c, 0x254c, 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x01e0, -+ 0x0118, 0x080c, 0x40e6, 0x0470, 0x7007, 0x0012, 0x7000, 0xd084, -+ 0x1148, 0x7310, 0x7014, 0xa305, 0x0128, 0x710c, 0xa184, 0x07ff, -+ 0x1904, 0x4034, 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x01e0, -+ 0x0118, 0x080c, 0x40e6, 0x00b0, 0x7007, 0x0012, 0x7007, 0x0008, -+ 0x7004, 0xd09c, 0x1de8, 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, -+ 0x01e0, 0x0118, 0x080c, 0x40e6, 0x0028, 0x7007, 0x0012, 0x7108, -+ 0x8103, 0x0e88, 0x7003, 0x0008, 0x0005, 0x7108, 0xa184, 0x01e0, -+ 0x15a8, 0x7108, 0xa184, 0x01e0, 0x1588, 0xa184, 0x0007, 0x0002, -+ 0x40c2, 0x40d0, 0x40c0, 0x40d0, 0x40c0, 0x4120, 0x40c0, 0x411e, -+ 0x080c, 0x254c, 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x8aff, -+ 0x1118, 0x2049, 0x0000, 0x0005, 0x080c, 0x426b, 0x1de8, 0x0005, -+ 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x7004, 0xd084, 0x1140, -+ 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x0003, 0x0108, 0x0030, -+ 0x8aff, 0x0118, 0x080c, 0x426b, 0x1de8, 0x0005, 0x7007, 0x0012, -+ 0x7108, 0x1d04, 0x40e9, 0x2091, 0x6000, 0x1d04, 0x40ed, 0x2091, -+ 0x6000, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xd09c, 0x1de8, -+ 0x7007, 0x0012, 0x7108, 0xd1fc, 0x1dd8, 0x7003, 0x0000, 0x7000, -+ 0xa005, 0x1130, 0x7004, 0xa005, 0x1118, 0x700c, 0xa005, 0x0108, -+ 0x0c40, 0x2049, 0x0000, 0xb284, 0x0200, 0x0118, 0x2001, 0x0000, -+ 0x0010, 0x2001, 0x0001, 0x080c, 0x3b81, 0x681b, 0x0002, 0x2051, -+ 0x0000, 0x0005, 0x080c, 0x254c, 0x080c, 0x254c, 0x080c, 0x415f, -+ 0x7210, 0x7114, 0x700c, 0xa09c, 0x07ff, 0x2800, 0xa300, 0xa211, -+ 0xa189, 0x0000, 0x04a1, 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, -+ 0xa322, 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0140, 0x1238, -+ 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0c58, 0x2b60, -+ 0x8a07, 0x0006, 0x6004, 0xd09c, 0x0118, 0xa7ba, 0x3fef, 0x0010, -+ 0xa7ba, 0x3fe7, 0x000e, 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, -+ 0x6b8e, 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x01e0, 0x0110, -+ 0x080c, 0x40e6, 0x7007, 0x0012, 0x080c, 0x4034, 0x0005, 0x8a50, -+ 0x8739, 0x2704, 0xa004, 0x1168, 0x6000, 0xa064, 0x1108, 0x2d60, -+ 0x6004, 0xa084, 0x000f, 0xa080, 0x4005, 0x203c, 0x87fb, 0x090c, -+ 0x254c, 0x0005, 0x0126, 0x00d6, 0x70d0, 0xa084, 0x4c00, 0x8004, -+ 0x2090, 0x00de, 0x6884, 0x2060, 0x6888, 0x6b8c, 0x6c90, 0x8057, -+ 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x0006, 0x6804, 0xa084, 0x0008, -+ 0x000e, 0x0118, 0xa0b8, 0x3fef, 0x0010, 0xa0b8, 0x3fe7, 0xb284, -+ 0x0200, 0x0110, 0x7e20, 0x0008, 0x7e24, 0xa6b5, 0x000c, 0x681c, -+ 0xd0b4, 0x0108, 0xc685, 0x2400, 0xa305, 0x0518, 0x2c58, 0x2704, -+ 0x6104, 0xac60, 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, -+ 0xd19c, 0x0140, 0x6010, 0xa081, 0x0000, 0x7022, 0x6014, 0xa081, -+ 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c, 0x2300, -+ 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x080c, 0x4292, -+ 0x0010, 0x080c, 0x426b, 0x1de8, 0x012e, 0x2000, 0x0005, 0x0126, -+ 0x00d6, 0x70d0, 0xa084, 0x4c00, 0x8004, 0x2090, 0x00de, 0x7007, -+ 0x0004, 0x7004, 0xd094, 0x1de8, 0x7003, 0x0008, 0x012e, 0x2000, -+ 0x0005, 0x0126, 0x00d6, 0x70d0, 0xa084, 0x4c00, 0x8004, 0x2090, -+ 0x00de, 0x7e20, 0xb284, 0x0200, 0x1108, 0x7e24, 0xa6b5, 0x000c, -+ 0x681c, 0xd0ac, 0x1118, 0xc685, 0x7003, 0x0000, 0x6828, 0x2050, -+ 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8, 0x3ff5, 0x273c, 0x87fb, -+ 0x1138, 0x0210, 0x080c, 0x254c, 0x689c, 0xa065, 0x0120, 0x0c88, -+ 0x080c, 0x426b, 0x1de8, 0x012e, 0x2000, 0x0005, 0x0126, 0x0006, -+ 0x0016, 0x00d6, 0x70d0, 0xa084, 0x4c00, 0x8004, 0x2090, 0x7e20, -+ 0xb284, 0x0200, 0x1108, 0x7e24, 0x00de, 0x003e, 0x004e, 0xa6b5, -+ 0x000c, 0x681c, 0xd0b4, 0x0128, 0xc685, 0x7003, 0x0000, 0x7007, -+ 0x0004, 0x2049, 0x4206, 0x6828, 0xa055, 0x00d6, 0x0904, 0x4267, -+ 0x2d70, 0x2e60, 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x3ff5, 0x273c, -+ 0x87fb, 0x1140, 0x0210, 0x080c, 0x254c, 0x709c, 0xa075, 0x2060, -+ 0x0570, 0x0c80, 0x2704, 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b, -+ 0x0268, 0x8a51, 0x1110, 0x080c, 0x254c, 0x8738, 0x2704, 0xa005, -+ 0x1d90, 0x709c, 0xa075, 0x2060, 0x01d0, 0x08e0, 0x8422, 0x8420, -+ 0x831a, 0xa399, 0x0000, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, -+ 0xa11b, 0x1210, 0x080c, 0x254c, 0xb284, 0x0200, 0x0118, 0x2071, -+ 0x0050, 0x0010, 0x2071, 0x0020, 0x00de, 0x0804, 0x419b, 0x00de, -+ 0x012e, 0x2000, 0x0005, 0x7008, 0x0006, 0xa084, 0x01e0, 0x000e, -+ 0x0110, 0xa006, 0x0005, 0xa084, 0x0003, 0xa086, 0x0003, 0x1108, -+ 0x0005, 0x2704, 0xac78, 0x7800, 0x701a, 0x7804, 0x701e, 0x7808, -+ 0x7012, 0x780c, 0x7016, 0x6004, 0xd09c, 0x0120, 0x7810, 0x7022, -+ 0x7814, 0x7026, 0x7602, 0x7004, 0xa084, 0x0010, 0xc085, 0x7006, -+ 0x2079, 0x4600, 0x8a51, 0x01e8, 0x8738, 0x2704, 0xa005, 0x1168, -+ 0x609c, 0xa005, 0x01b8, 0x2060, 0x6004, 0xa084, 0x000f, 0xa080, -+ 0x3ff5, 0x203c, 0x87fb, 0x090c, 0x254c, 0x7008, 0x0006, 0xa084, -+ 0x01e0, 0x000e, 0x0110, 0xa006, 0x0028, 0xa084, 0x0003, 0xa086, -+ 0x0003, 0x0005, 0x2051, 0x0000, 0x0005, 0x0126, 0x0006, 0x00d6, -+ 0x70d0, 0xa084, 0x4c00, 0x8004, 0x2090, 0x00de, 0x008e, 0x7108, -+ 0xa184, 0x0003, 0x1128, 0x6828, 0xa005, 0x0178, 0x0804, 0x3f45, -+ 0x7108, 0xd1fc, 0x0118, 0x080c, 0x40ae, 0x0c88, 0x7007, 0x0010, -+ 0x7108, 0xd1fc, 0x0de8, 0x080c, 0x40ae, 0x7008, 0xa086, 0x0008, -+ 0x1d30, 0x7000, 0xa005, 0x1d18, 0x7003, 0x0000, 0x2049, 0x0000, -+ 0x0006, 0x2001, 0x4601, 0x2004, 0xd0cc, 0x0110, 0x080c, 0x4328, -+ 0x000e, 0x012e, 0x2000, 0x0005, 0x0126, 0x0146, 0x0136, 0x0156, -+ 0x00c6, 0x00d6, 0x70d0, 0xa084, 0x4c00, 0x8004, 0x2090, 0x00de, -+ 0x2049, 0x42ec, 0xad80, 0x0011, 0x20a0, 0xb284, 0x0200, 0x0118, -+ 0x2099, 0x0032, 0x0010, 0x2099, 0x0031, 0x700c, 0xa084, 0x07ff, -+ 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0118, -+ 0x8000, 0x80ac, 0x53a5, 0x700c, 0xa084, 0x07ff, 0x0130, 0x7007, -+ 0x0004, 0x7004, 0xa084, 0x0004, 0x1de0, 0x00ce, 0x2049, 0x0000, -+ 0x7003, 0x0000, 0x015e, 0x013e, 0x014e, 0x012e, 0x2000, 0x0005, -+ 0x6814, 0xd0fc, 0x0904, 0x436b, 0x7000, 0xd084, 0x05e0, 0x7e24, -+ 0xa6b5, 0x0004, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x1de0, -+ 0x7118, 0x0016, 0x711c, 0x0016, 0x7120, 0x0016, 0x7124, 0x0016, -+ 0x701b, 0x0000, 0x701f, 0x3fff, 0x7023, 0x0000, 0x7027, 0x0000, -+ 0x7013, 0x0004, 0x7017, 0x0000, 0x7602, 0x7007, 0x0001, 0x2001, -+ 0xffff, 0x2009, 0x0031, 0x200a, 0x200a, 0x7108, 0x7008, 0xa106, -+ 0x1de0, 0xd1fc, 0x0dd0, 0x002e, 0x7226, 0x002e, 0x7222, 0x002e, -+ 0x721e, 0x002e, 0x721a, 0x7007, 0x0002, 0x7008, 0xa086, 0x0008, -+ 0x0110, 0x0804, 0x40e6, 0x7007, 0x0004, 0x7003, 0x0000, 0x0005, -+ 0x2091, 0x8000, 0x2091, 0x6000, 0x78ac, 0xa005, 0x1168, 0x7974, -+ 0x70d0, 0xa106, 0x1148, 0x781c, 0xa005, 0x0130, 0x781f, 0x0000, -+ 0x0e04, 0x4384, 0x2091, 0x4080, 0x2069, 0x4680, 0xd7fc, 0x1110, -+ 0x2069, 0x4640, 0x6800, 0xa084, 0x000f, 0x1198, 0x68d0, 0xd0b4, -+ 0x0180, 0xd0bc, 0x1170, 0x00f6, 0x2079, 0x0100, 0xd7fc, 0x1110, -+ 0x2079, 0x0200, 0x7830, 0xa084, 0x00c0, 0x1110, 0x080c, 0x22ae, -+ 0x00fe, 0x7830, 0x8001, 0x7832, 0x1904, 0x440b, 0x7834, 0x7832, -+ 0x2061, 0x6bc0, 0x2069, 0x4680, 0xc7fd, 0x68cc, 0xa005, 0x0128, -+ 0x8001, 0x68ce, 0x1110, 0x080c, 0x4577, 0x6800, 0xa084, 0x000f, -+ 0x0168, 0xa086, 0x0001, 0x0150, 0x6840, 0xa00d, 0x0138, 0x2104, -+ 0xa005, 0x0120, 0x8001, 0x200a, 0x0904, 0x4514, 0x6814, 0xa005, -+ 0x01a8, 0x8001, 0x6816, 0x1190, 0x68a3, 0x0001, 0x00f6, 0xd7fc, -+ 0x1118, 0x2079, 0x0200, 0x0010, 0x2079, 0x0100, 0x080c, 0x3c46, -+ 0x00fe, 0x6860, 0xa005, 0x0110, 0x080c, 0x22ae, 0x687c, 0xa005, -+ 0x0140, 0x8001, 0x687e, 0x1128, 0x6863, 0x0000, 0x68d0, 0xc0c5, -+ 0x68d2, 0x68d0, 0xd0fc, 0x01b0, 0xc0fc, 0x68d2, 0x20a9, 0x0200, -+ 0x6034, 0xa005, 0x0158, 0x8001, 0x6036, 0x68d0, 0xc0fd, 0x68d2, -+ 0x1128, 0x6010, 0xa005, 0x0110, 0x080c, 0x22ae, 0xace0, 0x0010, -+ 0x1f04, 0x43f0, 0xd7fc, 0x0138, 0x2061, 0x4bc0, 0x2069, 0x4640, -+ 0xc7fc, 0x0804, 0x43ad, 0x0459, 0x7838, 0x8001, 0x783a, 0x11a0, -+ 0x783c, 0x783a, 0x2061, 0x4bc0, 0x2069, 0x4640, 0xc7fc, 0x680c, -+ 0xa005, 0x0110, 0x080c, 0x4487, 0xd7fc, 0x1130, 0x2061, 0x6bc0, -+ 0x2069, 0x4680, 0xc7fd, 0x0c98, 0x7810, 0xd0cc, 0x0168, 0xd0ac, -+ 0x1120, 0xd0a4, 0x0148, 0xc0ad, 0x7812, 0x2091, 0x8001, 0x0e04, -+ 0x4433, 0x080c, 0x207a, 0x0005, 0x2091, 0x8001, 0x0005, 0x7840, -+ 0x8001, 0x7842, 0x1904, 0x4486, 0x7844, 0x7842, 0x2069, 0x4640, -+ 0xc7fc, 0x2079, 0x0200, 0x68d4, 0xa005, 0x0138, 0x7de0, 0xa504, -+ 0x1120, 0x68d6, 0x68d0, 0xc0bc, 0x68d2, 0x2079, 0x4600, 0x6810, -+ 0xa005, 0x1110, 0x2001, 0x0101, 0x8001, 0x6812, 0xd7fc, 0x0118, -+ 0xa080, 0x8cd0, 0x0010, 0xa080, 0x8bc0, 0x2040, 0x2004, 0xa065, -+ 0x01e0, 0x6024, 0xa005, 0x01b0, 0x8001, 0x6026, 0x1198, 0x6800, -+ 0xa005, 0x0130, 0x6848, 0xac06, 0x1118, 0x080c, 0x4514, 0x0068, -+ 0x6860, 0xa005, 0x0118, 0x6027, 0x0001, 0x0020, 0x080c, 0x44c8, -+ 0x2804, 0x0c28, 0x6000, 0x2c40, 0x0c10, 0xd7fc, 0x1138, 0x2069, -+ 0x4680, 0xc7fd, 0x2079, 0x0100, 0x0804, 0x4443, 0x0005, 0x2009, -+ 0x0000, 0x20a9, 0x0200, 0x6008, 0xd09c, 0x0558, 0x6024, 0xa005, -+ 0x0118, 0x8001, 0x6026, 0x0418, 0x6008, 0xc09c, 0xd084, 0x1110, -+ 0xd0ac, 0x01c0, 0x600a, 0x6004, 0xa005, 0x01d8, 0x00d6, 0x00c6, -+ 0x0016, 0x2068, 0x6010, 0x8001, 0x6012, 0x080c, 0x37a4, 0x2d00, -+ 0x2c68, 0x2060, 0x080c, 0x1be3, 0x080c, 0x1d95, 0x001e, 0x00ce, -+ 0x00de, 0x0038, 0xc0bd, 0x600a, 0xa18d, 0x0001, 0x0010, 0xa18d, -+ 0x0100, 0xace0, 0x0010, 0x1f04, 0x448b, 0xa184, 0x0001, 0x0130, -+ 0xa18c, 0xfffe, 0x690e, 0x080c, 0x22ae, 0x0008, 0x690e, 0x0005, -+ 0x2c00, 0x687a, 0x6714, 0x6f72, 0x6017, 0x0000, 0x602b, 0x0000, -+ 0x601b, 0x0006, 0x60b4, 0xa084, 0x5f00, 0x601e, 0x6020, 0xa084, -+ 0x00ff, 0xa085, 0x0060, 0x6022, 0x6000, 0x2042, 0x6858, 0xac06, -+ 0x1110, 0x2800, 0x685a, 0x080c, 0x1b7b, 0x6818, 0xa005, 0x0110, -+ 0x8001, 0x681a, 0x6808, 0xc0a4, 0x680a, 0x6810, 0x7908, 0x8109, -+ 0x790a, 0x8001, 0x1310, 0x080c, 0x254c, 0x6812, 0x1118, 0x7910, -+ 0xc1a5, 0x7912, 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x080c, -+ 0x1da2, 0xd7fc, 0x1118, 0x2069, 0x4640, 0x0010, 0x2069, 0x4680, -+ 0x6910, 0xa184, 0x0100, 0x2001, 0x0006, 0x1118, 0x6976, 0x2001, -+ 0x0004, 0x080c, 0x22a4, 0x0005, 0x00d6, 0x6948, 0x2160, 0xd7fc, -+ 0x1118, 0x2069, 0x0200, 0x0010, 0x2069, 0x0100, 0x080c, 0x2467, -+ 0x601b, 0x0006, 0x6858, 0xa084, 0x5f00, 0x601e, 0x6020, 0xa084, -+ 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f, 0x0000, 0x6033, 0x0000, -+ 0x6808, 0xa084, 0xfffd, 0x680a, 0x6830, 0xd0b4, 0x01b0, 0x684b, -+ 0x0004, 0x20a9, 0x0014, 0x6848, 0xd094, 0x0110, 0x1f04, 0x453b, -+ 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xd084, 0x0110, 0x1f04, -+ 0x4544, 0x20a9, 0x00fa, 0x1f04, 0x454b, 0x681b, 0x0054, 0x00de, -+ 0x6863, 0x0007, 0x0005, 0x2079, 0x4600, 0x00e1, 0x0089, 0x00a9, -+ 0x2009, 0x0002, 0x2069, 0x4680, 0x680f, 0x0000, 0x6813, 0x0000, -+ 0x6817, 0x0000, 0x8109, 0x0118, 0x2069, 0x4640, 0x0ca8, 0x0005, -+ 0x2019, 0x00a3, 0x7b3a, 0x7b3e, 0x0005, 0x2019, 0x0033, 0x7b42, -+ 0x7b46, 0x0005, 0x2019, 0x32dd, 0x7b32, 0x7b36, 0x0005, 0x6a4c, -+ 0xa285, 0x0000, 0x01f0, 0x6950, 0x6bbc, 0xa300, 0x00c6, 0x2164, -+ 0x6304, 0x83ff, 0x1138, 0x8211, 0x0148, 0x8108, 0xa11a, 0x0eb8, -+ 0x69bc, 0x0ca8, 0x68cf, 0x000a, 0x00ce, 0x0005, 0x694c, 0x6abc, -+ 0x2264, 0x6008, 0xc0b5, 0x600a, 0x8210, 0x8109, 0x1dc8, 0x694e, -+ 0x00ce, 0x0005, 0x1d04, 0x459a, 0x2091, 0x6000, 0x1d04, 0x459e, -+ 0x2091, 0x6000, 0x70ec, 0xd0dc, 0x1118, 0xd0d4, 0x0190, 0x0098, -+ 0xae8e, 0x0100, 0x0138, 0x7814, 0xc0f5, 0xc0c5, 0x7816, 0xd0d4, -+ 0x1578, 0x0458, 0x7814, 0xc0fd, 0xc0c5, 0x7816, 0xd0d4, 0x1540, -+ 0x0420, 0xd0e4, 0x0538, 0x1d04, 0x45bb, 0x2091, 0x6000, 0x2009, -+ 0x000c, 0x1d04, 0x45c1, 0x2091, 0x6000, 0x8109, 0x1dd0, 0x70e4, -+ 0xa084, 0x01ff, 0xa086, 0x01ff, 0x1110, 0x70ec, 0x08c8, 0xae8e, -+ 0x0100, 0x0128, 0x7814, 0xc0f4, 0xd0fc, 0x1130, 0x0020, 0x7814, -+ 0xc0fc, 0xd0f4, 0x1108, 0xc0c4, 0x7816, 0x7804, 0xd08c, 0x0110, -+ 0x681f, 0x000c, 0x70a0, 0x70a2, 0x0005, 0x7c12 -+}; -+#else -+/* -+ * Firmware Version 11.12.01 (12:37 May 24, 2000) -+ */ -+static const u_int16_t isp_12160_risc_code[] = { -+ 0x0804, 0x103a, 0x0000, 0x4bd8, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x3520, 0x514c, 0x4f47, 0x4943, -+ 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350, -+ 0x3132, 0x3430, 0x2049, 0x2f54, 0x2046, 0x6972, 0x6d77, 0x6172, -+ 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2031, 0x312e, 0x3132, -+ 0x2020, 0x2043, 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, -+ 0x3030, 0x2050, 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, -+ 0x3031, 0x2024, 0x2071, 0x0200, 0x70a0, 0x70a2, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x1120, 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1, -+ 0x0020, 0x2089, 0x128f, 0x0030, 0x2001, 0x04fc, 0x2004, 0xa086, -+ 0x1216, 0x0d40, 0x2071, 0x0010, 0x70c3, 0x0004, 0x70c7, 0x4953, -+ 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, 0x000b, 0x2001, 0x04fd, -+ 0x70d6, 0x20c1, 0x0022, 0x20c9, 0x10ff, 0x2009, 0xfeff, 0x200b, -+ 0xa5a5, 0xe000, 0xe000, 0x2114, 0xa286, 0xa5a5, 0x0120, 0x20c1, -+ 0x0020, 0x20c9, 0x5cff, 0x2009, 0x0200, 0xa18e, 0x0400, 0x1168, -+ 0x3808, 0xa18e, 0x0020, 0x1148, 0x70c3, 0x8010, 0x2061, 0x0000, -+ 0x601b, 0x0001, 0x2091, 0x4080, 0x0cf8, 0x2009, 0xfeff, 0x2130, -+ 0x2128, 0x3800, 0xa084, 0x0003, 0x0006, 0x0118, 0xa1a2, 0x1100, -+ 0x0010, 0xa1a2, 0x5cff, 0x000e, 0x8424, 0x8424, 0x8424, 0x8424, -+ 0x8424, 0x8424, 0x2009, 0xb33f, 0xa005, 0x0128, 0x2079, 0x1100, -+ 0xa192, 0x1100, 0x0020, 0x2079, 0x5d00, 0xa192, 0x5d00, 0x2009, -+ 0x0000, 0x2001, 0x0037, 0x080c, 0x20ea, 0x2218, 0x2fa0, 0x2408, -+ 0x2011, 0x0000, 0x20a9, 0x0040, 0x42a4, 0x8109, 0x1dd8, 0x2079, -+ 0xb340, 0x2001, 0x04fc, 0x2004, 0xa086, 0x1280, 0x11e8, 0x780c, -+ 0xc0ed, 0xc0d5, 0x780e, 0x7813, 0x0064, 0x2071, 0x0200, 0x00d6, -+ 0x2069, 0xb380, 0x080c, 0x59b8, 0x2001, 0x01ff, 0x2004, 0xd0fc, -+ 0x1130, 0x2069, 0xb3c0, 0x2071, 0x0100, 0x080c, 0x59b8, 0x780c, -+ 0xc0d4, 0x780e, 0x00de, 0x0090, 0x2001, 0x04fc, 0x2004, 0xa086, -+ 0x1216, 0x1128, 0x7813, 0x0064, 0x780c, 0xc0cd, 0x08c8, 0x780c, -+ 0xc0e5, 0x780e, 0x7813, 0x003c, 0x2011, 0x000c, 0x2009, 0xb38c, -+ 0x220a, 0x2009, 0xb3cc, 0x220a, 0x7eca, 0x7cc2, 0x7bc6, 0x785b, -+ 0x0000, 0x7800, 0xc08d, 0x7802, 0x2031, 0x0030, 0x78af, 0x0101, -+ 0x781b, 0x0002, 0x781f, 0x0002, 0x2009, 0x0002, 0x2069, 0xb380, -+ 0x6817, 0x0003, 0x681f, 0x0007, 0x6823, 0x00fa, 0x6827, 0x0008, -+ 0x682b, 0x0028, 0x6837, 0x0006, 0x682f, 0x0008, 0x683b, 0x0000, -+ 0x8109, 0x0508, 0x68ef, 0x000a, 0x68df, 0xb400, 0x2079, 0xb340, -+ 0x780c, 0xd0e4, 0x1118, 0x68f3, 0x7629, 0x0010, 0x68f3, 0x760d, -+ 0x68e3, 0xba00, 0x68e7, 0xb800, 0x68eb, 0xfa00, 0x68c7, 0xfece, -+ 0x68cb, 0xfed3, 0x68cf, 0xfece, 0x68d3, 0xfece, 0x68c3, 0x0001, -+ 0x2069, 0xb3c0, 0x0868, 0x68ef, 0x000a, 0x68df, 0xb600, 0x68f3, -+ 0x7819, 0x68e3, 0xda00, 0x68e7, 0xb900, 0x68eb, 0xfb10, 0x68c7, -+ 0xfed3, 0x68cb, 0xfed8, 0x68cf, 0xfed3, 0x68d3, 0xfed3, 0x68c3, -+ 0x0001, 0x00e6, 0x2069, 0xb800, 0x2071, 0x0200, 0x70ec, 0xd0e4, -+ 0x2019, 0x1c09, 0x2021, 0x0009, 0x1120, 0x2019, 0x1c0c, 0x2021, -+ 0x000c, 0x080c, 0x200a, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1188, -+ 0x2069, 0xb900, 0x2071, 0x0100, 0x70ec, 0xd0e4, 0x2019, 0x1c09, -+ 0x2021, 0x0009, 0x1120, 0x2019, 0x1c0c, 0x2021, 0x000c, 0x080c, -+ 0x200a, 0x00ee, 0x2011, 0x0002, 0x2069, 0xba00, 0x2009, 0x0002, -+ 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, 0x0040, 0x7bc8, 0xa386, -+ 0xfeff, 0x1128, 0x6817, 0x0100, 0x681f, 0x0064, 0x0020, 0x6817, -+ 0x0064, 0x681f, 0x0002, 0xade8, 0x0010, 0x1f04, 0x1182, 0x8109, -+ 0x1d38, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1128, 0x8211, 0x0118, -+ 0x2069, 0xda00, 0x08d8, 0x080c, 0x2680, 0x080c, 0x53c4, 0x080c, -+ 0x1caf, 0x080c, 0x595f, 0x2091, 0x2200, 0x2079, 0xb340, 0x7808, -+ 0xd0ec, 0x0118, 0x2071, 0x0020, 0x0010, 0x2071, 0x0050, 0x2091, -+ 0x2400, 0x2079, 0xb340, 0x2071, 0x0020, 0x2091, 0x2600, 0x2079, -+ 0xb340, 0x7808, 0xd0ec, 0x0118, 0x2079, 0x0100, 0x0010, 0x2079, -+ 0x0200, 0x2071, 0xb380, 0x2091, 0x2800, 0x2079, 0x0100, 0x2071, -+ 0xb3c0, 0x2091, 0x2000, 0x2079, 0xb340, 0x2071, 0x0010, 0x3200, -+ 0xa085, 0x303d, 0x2090, 0x70c3, 0x0000, 0x1004, 0x11e5, 0x70c0, -+ 0xa086, 0x0002, 0x1110, 0x080c, 0x142c, 0x2039, 0x0000, 0x080c, -+ 0x130a, 0x78ac, 0xa005, 0x11a0, 0x0e04, 0x11f5, 0x7864, 0xa065, -+ 0x0120, 0x2029, 0x0000, 0x080c, 0x252c, 0x080c, 0x210b, 0x0e04, -+ 0x120c, 0x7864, 0xa065, 0x0120, 0x2029, 0x0000, 0x080c, 0x252c, -+ 0x0e04, 0x120c, 0x2009, 0xb386, 0x2011, 0xb3c6, 0x2104, 0x220c, -+ 0xa105, 0x0110, 0x080c, 0x1dd0, 0x00e6, 0x00f6, 0x2071, 0xb380, -+ 0x70c0, 0xa005, 0x01f8, 0x7454, 0xa485, 0x0000, 0x01d8, 0x2079, -+ 0x0200, 0x2091, 0x8000, 0x72f0, 0xa28c, 0x303d, 0x2190, 0x080c, -+ 0x2b7f, 0x2091, 0x8000, 0x2091, 0x303d, 0x0e04, 0x1232, 0x00fe, -+ 0x7864, 0xa065, 0x0130, 0x00ee, 0x2029, 0x0000, 0x080c, 0x252c, -+ 0x00e6, 0x00f6, 0x1d04, 0x123a, 0x00fe, 0x00ee, 0x080c, 0x577e, -+ 0x00e6, 0x00f6, 0x2071, 0xb3c0, 0x70c0, 0xa005, 0x0190, 0x7454, -+ 0xa485, 0x0000, 0x0170, 0x2079, 0x0100, 0x2091, 0x8000, 0x72f0, -+ 0xa28c, 0x303d, 0x2190, 0x080c, 0x2b7f, 0x2091, 0x8000, 0x2091, -+ 0x303d, 0x00fe, 0x00ee, 0x0e04, 0x125b, 0x7864, 0xa065, 0x0118, -+ 0xa02e, 0x080c, 0x252c, 0x1d04, 0x11e7, 0x080c, 0x577e, 0x0804, -+ 0x11e7, 0x3c00, 0xa084, 0x0007, 0x0002, 0x1275, 0x1275, 0x1277, -+ 0x1277, 0x127c, 0x127c, 0x1281, 0x1281, 0x3c00, 0xa084, 0x0003, -+ 0x0002, 0x1275, 0x1275, 0x128a, 0x128a, 0x080c, 0x297f, 0x2091, -+ 0x2400, 0x080c, 0x547f, 0x0005, 0x2091, 0x2200, 0x080c, 0x547f, -+ 0x0005, 0x2091, 0x2200, 0x080c, 0x547f, 0x2091, 0x2400, 0x080c, -+ 0x547f, 0x0005, 0x2091, 0x2200, 0x080c, 0x547f, 0x0005, 0x12af, -+ 0x12af, 0x12b0, 0x12b0, 0x12bb, 0x12bb, 0x12bb, 0x12bb, 0x12c4, -+ 0x12c4, 0x12cf, 0x12cf, 0x12bb, 0x12bb, 0x12bb, 0x12bb, 0x12de, -+ 0x12de, 0x12de, 0x12de, 0x12de, 0x12de, 0x12de, 0x12de, 0x12de, -+ 0x12de, 0x12de, 0x12de, 0x12de, 0x12de, 0x12de, 0x12de, 0x0cf8, -+ 0x0006, 0x0106, 0x0126, 0x2091, 0x2800, 0x080c, 0x299c, 0x012e, -+ 0x010e, 0x000e, 0x000d, 0x0006, 0x0106, 0x0126, 0x080c, 0x1261, -+ 0x012e, 0x010e, 0x000e, 0x000d, 0x0006, 0x0106, 0x0126, 0x2091, -+ 0x2600, 0x080c, 0x299c, 0x012e, 0x010e, 0x000e, 0x000d, 0x0006, -+ 0x0106, 0x0126, 0x2091, 0x2600, 0x080c, 0x299c, 0x2091, 0x2800, -+ 0x080c, 0x299c, 0x012e, 0x010e, 0x000e, 0x000d, 0x0006, 0x0106, -+ 0x0126, 0x00d6, 0x00e6, 0x00f6, 0x2079, 0xb340, 0x2071, 0x0200, -+ 0x2069, 0xb380, 0x3d00, 0xd08c, 0x0130, 0x70ec, 0xa084, 0x1c00, -+ 0x78e2, 0x080c, 0x59b8, 0x3d00, 0xd084, 0x0150, 0x2069, 0xb3c0, -+ 0x2071, 0x0100, 0x70ec, 0xa084, 0x1c00, 0x78e6, 0x080c, 0x59b8, -+ 0x080c, 0x2930, 0x00fe, 0x00ee, 0x00de, 0x012e, 0x010e, 0x000e, -+ 0x000d, 0x0005, 0x0e04, 0x1381, 0x2061, 0x0000, 0x6018, 0xa084, -+ 0x0001, 0x1904, 0x1381, 0x7820, 0xa005, 0x1120, 0x0004, 0x1382, -+ 0x0804, 0x1381, 0x7908, 0xd1f4, 0x0120, 0x2001, 0x4007, 0x0804, -+ 0x142e, 0x790c, 0xd1ec, 0x01a0, 0xd0fc, 0x0148, 0x0006, 0x080c, -+ 0x1c2f, 0x000e, 0x0168, 0x2001, 0x4007, 0x0804, 0x142e, 0x0006, -+ 0x080c, 0x1c25, 0x000e, 0x0120, 0x2001, 0x4007, 0x0804, 0x142e, -+ 0x7908, 0xd0fc, 0x1128, 0x2061, 0xb380, 0xc19c, 0xc7fc, 0x0020, -+ 0x2061, 0xb3c0, 0xc19d, 0xc7fd, 0x6068, 0xa005, 0x15d0, 0x790a, -+ 0x6087, 0x0000, 0x7820, 0xc0fc, 0xa086, 0x0018, 0x1120, 0x00c6, -+ 0x080c, 0x196b, 0x00ce, 0x7823, 0x0000, 0x6080, 0xa065, 0x0190, -+ 0x00c6, 0x609c, 0x080c, 0x1d24, 0x00ce, 0x609f, 0x0000, 0x080c, -+ 0x1a81, 0x2009, 0x000c, 0x6007, 0x0103, 0x080c, 0x1c39, 0x1198, -+ 0x080c, 0x1c95, 0x7808, 0xd09c, 0x1118, 0x2061, 0xb380, 0x0018, -+ 0x2061, 0xb3c0, 0xc09c, 0x6083, 0x0000, 0x780a, 0x60f0, 0xd0c4, -+ 0x0130, 0xc0c4, 0x60f2, 0x2001, 0x4005, 0x0804, 0x142e, 0x0804, -+ 0x142c, 0x0005, 0x7808, 0xd0f4, 0x0120, 0x2001, 0x4007, 0x0804, -+ 0x142e, 0x70c3, 0x0000, 0x70c7, 0x0000, 0x70cb, 0x0000, 0x70cf, -+ 0x0000, 0x70db, 0x0000, 0x71c4, 0x7a08, 0xd2ec, 0x0108, 0xc1fc, -+ 0x70c0, 0xa03d, 0xa092, 0x0030, 0x1208, 0x0032, 0x2200, 0xa092, -+ 0x0050, 0x1a04, 0x143a, 0x0482, 0x142c, 0x14a7, 0x1448, 0x14bb, -+ 0x14ca, 0x14d0, 0x1440, 0x1a99, 0x14d4, 0x143a, 0x144c, 0x144d, -+ 0x144e, 0x144f, 0x1a9d, 0x143a, 0x14e1, 0x1532, 0x1988, 0x1a93, -+ 0x1450, 0x17f5, 0x182e, 0x1863, 0x18a8, 0x17b0, 0x17be, 0x17d1, -+ 0x17e4, 0x1600, 0x143a, 0x155f, 0x1563, 0x1571, 0x157f, 0x1596, -+ 0x15a4, 0x15a7, 0x15b5, 0x15c3, 0x15cd, 0x15e6, 0x15f2, 0x143a, -+ 0x143a, 0x143a, 0x143a, 0x160d, 0x1618, 0x1631, 0x1665, 0x168e, -+ 0x16a0, 0x16a3, 0x16cd, 0x1705, 0x1717, 0x1784, 0x1794, 0x143a, -+ 0x1475, 0x143a, 0x143a, 0x17a6, 0x143a, 0x143a, 0x143a, 0x143a, -+ 0x143a, 0x1bc9, 0x1bcf, 0x143a, 0x143a, 0x143a, 0x1bd3, 0x1be2, -+ 0x143a, 0x143a, 0x143a, 0x143a, 0x14a2, 0x14b6, 0x14dc, 0x152d, -+ 0x1983, 0x1ab1, 0x1ad3, 0x1950, 0x1ae9, 0x1bf0, 0x1bbb, 0x1bc5, -+ 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, -+ 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, -+ 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, -+ 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, 0x143a, -+ 0x143a, 0x143a, 0x143a, 0x143a, 0x72ca, 0x71c6, 0x2001, 0x4006, -+ 0x0028, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0e04, -+ 0x142f, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091, -+ 0x4080, 0x0005, 0x70c3, 0x4001, 0x0c90, 0x70c3, 0x4006, 0x0c78, -+ 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0c20, -+ 0x70c4, 0x70c3, 0x0004, 0x0807, 0x08f8, 0x08f0, 0x08e8, 0x08e0, -+ 0x2091, 0x8000, 0x70c3, 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, -+ 0x70cf, 0x2020, 0x70d3, 0x000b, 0x2001, 0x000c, 0x70d6, 0x2079, -+ 0x0000, 0x781b, 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, -+ 0x041a, 0x2051, 0x0445, 0x2061, 0x0447, 0x20c1, 0x0020, 0x2091, -+ 0x5000, 0x2091, 0x4080, 0x0804, 0x0418, 0x00d6, 0x70c4, 0x7904, -+ 0xd19c, 0x0180, 0x70c7, 0x0001, 0x2069, 0xfed8, 0x2d14, 0x72ca, -+ 0x8d68, 0x2d14, 0x72ce, 0x8d68, 0x2d14, 0x72da, 0x8d68, 0x2d14, -+ 0x72de, 0x0010, 0x70c7, 0x0000, 0xa005, 0x0178, 0xc19d, 0x72c8, -+ 0x2069, 0xfed8, 0x226a, 0x72cc, 0x8d68, 0x226a, 0x72d8, 0x8d68, -+ 0x226a, 0x72dc, 0x8d68, 0x226a, 0x0008, 0xc19c, 0x7906, 0x00de, -+ 0x0804, 0x142c, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0018, 0x2029, -+ 0x0000, 0x2520, 0x71d0, 0x73c8, 0x72cc, 0x70c4, 0x080c, 0x1e1f, -+ 0x0904, 0x142c, 0x70c3, 0x4002, 0x0804, 0x142c, 0x75d8, 0x74dc, -+ 0x75da, 0x74de, 0x0018, 0x2029, 0x0000, 0x2520, 0x71d0, 0x73c8, -+ 0x72cc, 0x70c4, 0x080c, 0x1e5e, 0x0904, 0x142c, 0x70c3, 0x4002, -+ 0x0804, 0x142c, 0x71c4, 0x70c8, 0x2114, 0x200a, 0x0804, 0x142a, -+ 0x71c4, 0x2114, 0x0804, 0x142a, 0x70c7, 0x000b, 0x70cb, 0x000c, -+ 0x70cf, 0x0001, 0x0804, 0x142c, 0x75d8, 0x76dc, 0x75da, 0x76de, -+ 0x0018, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0, -+ 0x70c6, 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x05c8, 0xa40a, 0x0110, -+ 0x1a04, 0x142e, 0x8001, 0x786a, 0xa084, 0xfc00, 0x0138, 0x78ac, -+ 0xc085, 0x78ae, 0x2001, 0x4005, 0x0804, 0x142e, 0x7a72, 0x7b76, -+ 0x7d7a, 0x7e7e, 0x7c6e, 0xa48c, 0xff00, 0x0170, 0x8407, 0x8004, -+ 0x8004, 0x810c, 0x810c, 0x810f, 0xa118, 0xa291, 0x0000, 0xa6b1, -+ 0x0000, 0xa5a9, 0x0000, 0x0050, 0x8407, 0x8004, 0x8004, 0xa318, -+ 0xa291, 0x0000, 0xa6b1, 0x0000, 0xa5a9, 0x0000, 0x731a, 0x721e, -+ 0x7622, 0x7526, 0x78ac, 0xa084, 0xfffc, 0x78ae, 0x0020, 0x78ac, -+ 0xa085, 0x0001, 0x78ae, 0x0804, 0x142c, 0x75d8, 0x76dc, 0x75da, -+ 0x76de, 0x0018, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, -+ 0x74d4, 0x70c6, 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x01d0, 0xa40a, -+ 0x0110, 0x1a04, 0x142e, 0x8001, 0x788e, 0xa084, 0xfc00, 0x0138, -+ 0x78ac, 0xc0c5, 0x78ae, 0x2001, 0x4005, 0x0804, 0x142e, 0x7a96, -+ 0x7b9a, 0x7d9e, 0x7ea2, 0x7c92, 0x78ac, 0xa084, 0xfcff, 0x78ae, -+ 0x0020, 0x78ac, 0xa085, 0x0100, 0x78ae, 0x0804, 0x142c, 0x795c, -+ 0x7ac4, 0x0804, 0x142a, 0x2009, 0xb387, 0x210c, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x1904, 0x142b, 0x2011, 0xb3c7, 0x2214, 0x0804, -+ 0x142a, 0x2009, 0xb388, 0x210c, 0x2001, 0x01ff, 0x2004, 0xd0fc, -+ 0x1904, 0x142b, 0x2011, 0xb3c8, 0x2214, 0x0804, 0x142a, 0x2061, -+ 0xb380, 0x6124, 0x6228, 0x8214, 0x8214, 0x8214, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x1148, 0x2061, 0xb3c0, 0x6324, 0x73da, 0x6328, -+ 0x831c, 0x831c, 0x831c, 0x73de, 0x0804, 0x142a, 0x2009, 0xb38b, -+ 0x210c, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x142b, 0x2011, -+ 0xb3cb, 0x2214, 0x0804, 0x142a, 0x7910, 0x0804, 0x142b, 0x2009, -+ 0x0202, 0x210c, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x142b, -+ 0x2011, 0x0102, 0x2214, 0x0804, 0x142a, 0x2009, 0xb38d, 0x210c, -+ 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x142b, 0x2011, 0xb3cd, -+ 0x2214, 0x0804, 0x142a, 0x7918, 0x2001, 0x01ff, 0x2004, 0xd0fc, -+ 0x1904, 0x142b, 0x7a1c, 0x0804, 0x142a, 0x2011, 0xb900, 0x71c4, -+ 0xd1fc, 0x1110, 0x2011, 0xb800, 0x8107, 0xa084, 0x000f, 0x8003, -+ 0x8003, 0x8003, 0x8003, 0xa268, 0x6a00, 0x6b08, 0x6c1c, 0x74da, -+ 0xd29c, 0x0110, 0x6820, 0x70de, 0x0804, 0x1429, 0x2138, 0x080c, -+ 0x1cc4, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, -+ 0x0804, 0x1429, 0x2061, 0xb380, 0x6114, 0x2001, 0x01ff, 0x2004, -+ 0xd0fc, 0x1904, 0x142b, 0x2061, 0xb3c0, 0x6214, 0x0804, 0x142a, -+ 0x2138, 0x080c, 0x1cc4, 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, -+ 0x77da, 0x2091, 0x8001, 0x0804, 0x1429, 0x2110, 0xa294, 0x000f, -+ 0xa282, 0x0010, 0x1a04, 0x1425, 0x080c, 0x27a4, 0x0804, 0x1429, -+ 0x2100, 0xc0bc, 0xa082, 0x0010, 0x1a04, 0x1425, 0xd1bc, 0x1120, -+ 0x2011, 0xb387, 0x2204, 0x0020, 0x2011, 0xb3c7, 0x2204, 0xc0bd, -+ 0x0006, 0x2100, 0xc0bc, 0x2012, 0x080c, 0x2713, 0x001e, 0x0804, -+ 0x142b, 0x71c4, 0x2021, 0xb388, 0x2404, 0x70c6, 0x2019, 0x0000, -+ 0x0030, 0x71c8, 0x2021, 0xb3c8, 0x2404, 0x70ca, 0xc3fd, 0x2011, -+ 0x165d, 0x20a9, 0x0008, 0x2205, 0xa106, 0x0138, 0x8210, 0x1f04, -+ 0x1643, 0x71c4, 0x72c8, 0x0804, 0x1424, 0xa292, 0x165d, 0x0026, -+ 0x2122, 0x001e, 0x080c, 0x2732, 0x2001, 0x01ff, 0x2004, 0xd0fc, -+ 0x1110, 0xd3fc, 0x09f0, 0x0804, 0x142c, 0x03e8, 0x00fa, 0x01f4, -+ 0x02ee, 0x0004, 0x0001, 0x0002, 0x0003, 0x2061, 0xb380, 0x6124, -+ 0x6228, 0x8214, 0x8214, 0x8214, 0x70c4, 0x6026, 0x70c8, 0x8003, -+ 0x8003, 0x8003, 0x602a, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x11a0, -+ 0x0026, 0x0016, 0x2061, 0xb3c0, 0x6124, 0x6228, 0x8214, 0x8214, -+ 0x8214, 0x70d8, 0x6026, 0x70dc, 0x8003, 0x8003, 0x8003, 0x602a, -+ 0x71da, 0x72de, 0x001e, 0x002e, 0x0804, 0x142a, 0x2061, 0xb380, -+ 0x612c, 0x70c4, 0x602e, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, -+ 0x142b, 0x2061, 0xb3c0, 0x622c, 0x70c8, 0x602e, 0x0804, 0x142a, -+ 0x7910, 0x0804, 0x142b, 0x71c4, 0xa184, 0xf0cf, 0x0148, 0x2001, -+ 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x1425, 0x72c8, 0x0804, 0x1424, -+ 0x0006, 0x2019, 0x0000, 0x080c, 0x278d, 0x2001, 0x01ff, 0x2004, -+ 0xd0fc, 0x0118, 0x001e, 0x0804, 0x142b, 0x71c8, 0xa184, 0xf0cf, -+ 0x0120, 0x2110, 0x71c4, 0x0804, 0x1424, 0x0006, 0xc3fd, 0x080c, -+ 0x278d, 0x002e, 0x001e, 0x0804, 0x142a, 0x71c4, 0xa182, 0x0010, -+ 0x0248, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x1425, 0x72c8, -+ 0x0804, 0x1424, 0x2011, 0xb38d, 0x2204, 0x0006, 0x8104, 0x1208, -+ 0x8108, 0x2112, 0x2019, 0x0000, 0x080c, 0x276f, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x0118, 0x001e, 0x0804, 0x142b, 0x71c8, 0xa182, -+ 0x0010, 0x0220, 0x2110, 0x71c4, 0x0804, 0x1424, 0x2011, 0xb3cd, -+ 0x2204, 0x0006, 0x8104, 0x1208, 0x8108, 0x2112, 0xc3fd, 0x080c, -+ 0x276f, 0x002e, 0x001e, 0x0804, 0x142a, 0x71c4, 0x72c8, 0xa184, -+ 0xfffd, 0x1904, 0x1424, 0xa284, 0xfffd, 0x1904, 0x1424, 0x2100, -+ 0x7918, 0x781a, 0x2200, 0x7a1c, 0x781e, 0x0804, 0x142a, 0x2011, -+ 0xb900, 0x71c4, 0xd1fc, 0x1110, 0x2011, 0xb800, 0x8107, 0xa084, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0x8003, 0xa268, 0x72c8, 0x73cc, -+ 0x74d8, 0xd29c, 0x0130, 0x75dc, 0x75de, 0x6d22, 0x2001, 0x0002, -+ 0x682a, 0x71c6, 0x6800, 0x70ca, 0x73ce, 0x74da, 0x2091, 0x8000, -+ 0x6a02, 0xd2ac, 0x1110, 0xa026, 0x0078, 0xa484, 0x00ff, 0xa082, -+ 0x0002, 0x16f0, 0x843f, 0xa7bc, 0x00ff, 0x0130, 0xa786, 0x0002, -+ 0x15b8, 0xa484, 0x00ff, 0x05a0, 0x2029, 0x0009, 0x2031, 0x0062, -+ 0x843f, 0xa7bc, 0x00ff, 0x0130, 0x8307, 0xa084, 0x00ff, 0x1110, -+ 0xa73d, 0x1530, 0x2041, 0x001d, 0x8307, 0xa084, 0x00ff, 0x0188, -+ 0xa842, 0x02f0, 0xa086, 0x0010, 0x1120, 0xa39c, 0x00ff, 0xa39d, -+ 0x0f00, 0xa3bc, 0x00ff, 0x2500, 0xa702, 0x0290, 0x2600, 0xa702, -+ 0x1278, 0x2039, 0x003a, 0x6804, 0xa705, 0x6806, 0x6b0a, 0x6b0c, -+ 0x73ce, 0x681c, 0x70da, 0x6c1e, 0x2091, 0x8001, 0x0804, 0x142c, -+ 0x2091, 0x8001, 0x0804, 0x1426, 0x2138, 0x080c, 0x1cc4, 0x2091, -+ 0x8000, 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, -+ 0x681e, 0x2708, 0x0804, 0x1429, 0x70c4, 0x2061, 0xb380, 0x6114, -+ 0x6016, 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x142b, 0x70c8, -+ 0x2061, 0xb3c0, 0x6214, 0x6016, 0x0804, 0x142a, 0x72c8, 0x73cc, -+ 0xa182, 0x0010, 0x1a04, 0x1425, 0x080c, 0x27de, 0x0804, 0x1429, -+ 0x2138, 0x080c, 0x1cc4, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0002, -+ 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0804, 0x142a, 0x2138, 0x080c, -+ 0x1cc4, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9, 0x6a0a, 0x6804, -+ 0xa005, 0x0110, 0x080c, 0x260c, 0x2091, 0x8001, 0x2708, 0x0804, -+ 0x142a, 0x2138, 0x080c, 0x1cc4, 0x2091, 0x8000, 0x6a08, 0xa295, -+ 0x0004, 0x6a0a, 0x6804, 0xa005, 0x0110, 0x080c, 0x260c, 0x2091, -+ 0x8001, 0x2708, 0x0804, 0x142a, 0x2138, 0x2041, 0x0001, 0x2049, -+ 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x080c, 0x1cd8, 0x2091, -+ 0x8001, 0x2708, 0x6a08, 0x0804, 0x142a, 0x2138, 0x780c, 0xd0e4, -+ 0x1160, 0xd7fc, 0x0128, 0x080c, 0x1c2f, 0x0138, 0x0804, 0x142e, -+ 0x080c, 0x1c25, 0x0110, 0x0804, 0x142e, 0x73c8, 0x72cc, 0x77c6, -+ 0x73ca, 0x72ce, 0x080c, 0x1d63, 0x11e8, 0x6818, 0xa005, 0x01a0, -+ 0x2708, 0x0076, 0x080c, 0x27fe, 0x007e, 0x1170, 0x2001, 0x0015, -+ 0xd7fc, 0x1118, 0x2061, 0xb380, 0x0018, 0xc0fd, 0x2061, 0xb3c0, -+ 0x7822, 0x2091, 0x8001, 0x0005, 0x2091, 0x8001, 0x2001, 0x4005, -+ 0x0804, 0x142e, 0x2091, 0x8001, 0x0804, 0x142c, 0x2138, 0x780c, -+ 0xd0e4, 0x1160, 0xd7fc, 0x0128, 0x080c, 0x1c2f, 0x0138, 0x0804, -+ 0x142e, 0x080c, 0x1c25, 0x0110, 0x0804, 0x142e, 0x77c6, 0x2041, -+ 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x080c, -+ 0x1cd8, 0x2009, 0x0016, 0xd7fc, 0x1118, 0x2061, 0xb380, 0x0018, -+ 0x2061, 0xb3c0, 0xc1fd, 0x606b, 0x0003, 0x6083, 0x0000, 0x677a, -+ 0x6087, 0x000f, 0x7922, 0x61f0, 0xc1c4, 0x61f2, 0x080c, 0x260c, -+ 0x2091, 0x8001, 0x0005, 0x77c8, 0x77ca, 0x2138, 0x77c6, 0x780c, -+ 0xd0e4, 0x1160, 0xd7fc, 0x0128, 0x080c, 0x1c2f, 0x0138, 0x0804, -+ 0x142e, 0x080c, 0x1c25, 0x0110, 0x0804, 0x142e, 0xa7bc, 0xff00, -+ 0x2091, 0x8000, 0x2009, 0x0017, 0xd7fc, 0x1118, 0x2061, 0xb380, -+ 0x0018, 0x2061, 0xb3c0, 0xc1fd, 0x6083, 0x0000, 0x606b, 0x0002, -+ 0x677a, 0x6087, 0x000f, 0x7922, 0x61f0, 0xc1c4, 0x61f2, 0x080c, -+ 0x260c, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0010, 0x70c8, -+ 0xa005, 0x0118, 0x60f0, 0xc0fd, 0x60f2, 0x080c, 0x1cd8, 0x70c8, -+ 0x6836, 0x8738, 0xa784, 0x001f, 0x1dc0, 0x2091, 0x8001, 0x0005, -+ 0x2019, 0x0000, 0x2011, 0x0000, 0x7808, 0xd0ec, 0x1180, 0x72c8, -+ 0x780c, 0xd0e4, 0x1160, 0xd284, 0x0128, 0x080c, 0x1c2f, 0x0138, -+ 0x0804, 0x142e, 0x080c, 0x1c25, 0x0110, 0x0804, 0x142e, 0x72ca, -+ 0x78ac, 0xa084, 0x0003, 0x1508, 0x2039, 0x0000, 0xd284, 0x0108, -+ 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x080c, -+ 0x1cc4, 0x2091, 0x8000, 0x6808, 0xc0d4, 0xa80d, 0x690a, 0x2091, -+ 0x8001, 0x8738, 0xa784, 0x001f, 0x1d90, 0xa7bc, 0xff00, 0x873f, -+ 0x8738, 0x873f, 0xa784, 0x0f00, 0x1d50, 0x2091, 0x8000, 0x7808, -+ 0xd0ec, 0x0118, 0x2069, 0x0100, 0x0040, 0x72c8, 0xd284, 0x1118, -+ 0x2069, 0x0200, 0x0010, 0x2069, 0x0100, 0x6808, 0xa084, 0xfffd, -+ 0x680a, 0x6830, 0xa084, 0x0040, 0x01c0, 0x684b, 0x0004, 0x20a9, -+ 0x0014, 0x6848, 0xa084, 0x0004, 0x0110, 0x1f04, 0x1901, 0x684b, -+ 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0110, 0x1f04, -+ 0x190b, 0x20a9, 0x00fa, 0x1f04, 0x1913, 0x2079, 0xb340, 0x2009, -+ 0x0018, 0x7808, 0xd0ec, 0x1118, 0x72c8, 0xd284, 0x1118, 0x2061, -+ 0xb380, 0x0018, 0x2061, 0xb3c0, 0xc1fd, 0x6083, 0x0000, 0x7922, -+ 0x606b, 0x0001, 0x6087, 0x000f, 0x60c3, 0x0000, 0x60c4, 0x60ce, -+ 0x60d2, 0x60f0, 0xd0b4, 0x0160, 0xc0b4, 0x60f2, 0x00c6, 0x60d4, -+ 0xa065, 0x6008, 0xc0d4, 0x600a, 0x6018, 0x8001, 0x601a, 0x00ce, -+ 0x60f0, 0xa084, 0x7eff, 0x60f2, 0x78ac, 0xa085, 0x0002, 0x78ae, -+ 0x83ff, 0x0108, 0x0005, 0x681b, 0x0050, 0x2091, 0x8001, 0x0005, -+ 0x73cc, 0x080c, 0x18aa, 0x69ec, 0x6a48, 0xa185, 0x1800, 0x684a, -+ 0xa185, 0x0040, 0x68ee, 0x73cc, 0x2021, 0x0004, 0x20a9, 0x09ff, -+ 0x1f04, 0x1960, 0x8421, 0x1dd0, 0x8319, 0x1db0, 0x69ee, 0x6a4a, -+ 0x2091, 0x8001, 0x0005, 0xd7fc, 0x1118, 0x2069, 0xb380, 0x0010, -+ 0x2069, 0xb3c0, 0x71c4, 0x71c6, 0x6912, 0x81ff, 0x1110, 0x68c3, -+ 0x0001, 0x78ac, 0xa084, 0xfffd, 0x78ae, 0xa084, 0x0001, 0x1110, -+ 0x080c, 0x1daf, 0x0005, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0018, -+ 0x2029, 0x0000, 0x2520, 0x71c4, 0x73c8, 0x72cc, 0x71c6, 0x73ca, -+ 0x72ce, 0x2079, 0xb340, 0x7dde, 0x7cda, 0x7bd6, 0x7ad2, 0x080c, -+ 0x1c79, 0x0904, 0x1a7d, 0x20a9, 0x0005, 0x20a1, 0xb351, 0x2091, -+ 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, 0x0040, 0x080c, 0x1fd6, -+ 0x0120, 0x080c, 0x1c95, 0x0804, 0x1a7d, 0x6004, 0xa08c, 0x00ff, -+ 0xa18e, 0x0009, 0x1120, 0x0006, 0x080c, 0x250a, 0x000e, 0xa084, -+ 0xff00, 0x8007, 0x8009, 0x0904, 0x1a24, 0x00c6, 0x2c68, 0x080c, -+ 0x1c79, 0x05a8, 0x2c00, 0x689e, 0x8109, 0x1dc0, 0x609f, 0x0000, -+ 0x00ce, 0x00c6, 0x7ddc, 0x7cd8, 0x7bd4, 0x7ad0, 0xa290, 0x0040, -+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x7dde, 0x7cda, -+ 0x7bd6, 0x7ad2, 0x2c68, 0x689c, 0xa065, 0x0904, 0x1a23, 0x2009, -+ 0x0040, 0x080c, 0x1fd6, 0x1548, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0002, 0x1168, 0x6004, 0xa084, 0x00ff, 0xa086, 0x000a, 0x1120, -+ 0x0016, 0x080c, 0x2507, 0x001e, 0x2d00, 0x6002, 0x0898, 0x00ce, -+ 0x00c6, 0x609c, 0x080c, 0x1d24, 0x00ce, 0x609f, 0x0000, 0x080c, -+ 0x1a81, 0x2009, 0x000c, 0x6008, 0xa085, 0x0200, 0x600a, 0x080c, -+ 0x1c39, 0x080c, 0x1c95, 0x0804, 0x1a7d, 0x00ce, 0x00c6, 0x609c, -+ 0x080c, 0x1d24, 0x00ce, 0x609f, 0x0000, 0x080c, 0x1a81, 0x2009, -+ 0x000c, 0x6007, 0x0103, 0x601b, 0x0003, 0x080c, 0x1c39, 0x080c, -+ 0x1c95, 0x0804, 0x1a7d, 0x00ce, 0x780c, 0xd0e4, 0x11e8, 0x6114, -+ 0xd1fc, 0x0120, 0x080c, 0x1c2f, 0x01b8, 0x0018, 0x080c, 0x1c25, -+ 0x0198, 0x2029, 0x0000, 0x2520, 0x2009, 0x0018, 0x73c8, 0x72cc, -+ 0x6087, 0x0103, 0x601b, 0x0021, 0x080c, 0x1c39, 0x080c, 0x1c95, -+ 0x2001, 0x4007, 0x0804, 0x142e, 0x74c4, 0x73c8, 0x72cc, 0x6014, -+ 0x2091, 0x8000, 0x00e6, 0x2009, 0x0012, 0xd0fc, 0x1118, 0x2071, -+ 0xb380, 0x0018, 0x2071, 0xb3c0, 0xc1fd, 0x7922, 0x706b, 0x0005, -+ 0x71f0, 0xc1c4, 0x71f2, 0x736e, 0x7272, 0x7476, 0x707a, 0x707f, -+ 0x0000, 0x2c00, 0x7082, 0xa02e, 0x2530, 0x611c, 0x61a2, 0xa184, -+ 0x0060, 0x0110, 0x080c, 0x5365, 0x00ee, 0x6596, 0x65a6, 0x669a, -+ 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, 0x6714, 0x6023, 0x0000, -+ 0x080c, 0x260c, 0x2091, 0x8001, 0x0005, 0x70c3, 0x4005, 0x0804, -+ 0x142f, 0x20a9, 0x0005, 0x2099, 0xb351, 0x2091, 0x8000, 0x530a, -+ 0x2091, 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, -+ 0xa5a9, 0x0000, 0x0005, 0x71c4, 0x70c7, 0x0000, 0x7916, 0x0804, -+ 0x142c, 0x71c4, 0x71c6, 0x2168, 0x0010, 0x2069, 0x1000, 0x690c, -+ 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x1dd8, 0xa285, 0x0000, -+ 0x1118, 0x70c3, 0x4000, 0x0010, 0x70c3, 0x4003, 0x70ca, 0x0804, -+ 0x142f, 0x2011, 0xb3a4, 0xa03e, 0x7908, 0xd1ec, 0x11a0, 0x77c8, -+ 0xd7fc, 0x0110, 0x2011, 0xb3e4, 0x220c, 0x0006, 0x0036, 0x0046, -+ 0x080c, 0x44c8, 0x70c4, 0xd0fc, 0x004e, 0x003e, 0x000e, 0x1118, -+ 0xa184, 0x7fff, 0x0020, 0x080c, 0x44ac, 0xa185, 0x8000, 0x2012, -+ 0x2710, 0x0804, 0x142a, 0x0016, 0x2100, 0xc1fc, 0x080c, 0x449c, -+ 0x001e, 0xd1fc, 0x1118, 0x2001, 0xb3a4, 0x0010, 0x2001, 0xb3e4, -+ 0x2004, 0xa084, 0x8000, 0x6100, 0xa10d, 0x6204, 0x6308, 0x0804, -+ 0x1429, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2091, 0x8000, 0x2061, -+ 0x0010, 0x60c4, 0xd0fc, 0x1178, 0x2071, 0xb380, 0x7808, 0xd0ec, -+ 0x0128, 0x2079, 0x0100, 0x2019, 0x0020, 0x0058, 0x2079, 0x0200, -+ 0x2019, 0x0050, 0x0030, 0x2071, 0xb3c0, 0x2079, 0x0100, 0x2019, -+ 0x0020, 0x7094, 0xa06d, 0x0904, 0x1bb1, 0x6a04, 0xa294, 0x00ff, -+ 0xa286, 0x0007, 0x0120, 0xa286, 0x000f, 0x1904, 0x1bb1, 0x691c, -+ 0xa184, 0x00c0, 0x0904, 0x1bb1, 0xa186, 0x00c0, 0x0904, 0x1bb1, -+ 0x6824, 0xa084, 0xff00, 0xa085, 0x0019, 0x6826, 0x2368, 0x7830, -+ 0xa084, 0x0040, 0x1de0, 0xa184, 0x0080, 0x1904, 0x1b87, 0x78e4, -+ 0xa084, 0x0007, 0x8001, 0x1dd8, 0x71a4, 0x81ff, 0x0150, 0x6807, -+ 0x0010, 0x6908, 0x6808, 0xa106, 0x1de0, 0x6804, 0xa084, 0x0010, -+ 0x1de0, 0x78b8, 0x8007, 0xa084, 0x007f, 0x1dd8, 0x7848, 0xa085, -+ 0x000c, 0x784a, 0x71a4, 0x81ff, 0x0180, 0x70a7, 0x0000, 0x6807, -+ 0x0018, 0x6804, 0xa084, 0x0008, 0x1de0, 0x6807, 0x0008, 0x6804, -+ 0xa084, 0x0008, 0x1de0, 0x6807, 0x0002, 0x61c4, 0xa18c, 0x0003, -+ 0x0904, 0x1bad, 0x62c8, 0x63cc, 0x61c6, 0x62ca, 0x63ce, 0x7848, -+ 0xa084, 0x000c, 0x1de0, 0x00e6, 0x2071, 0xb340, 0x724a, 0x734e, -+ 0xae80, 0x0012, 0x00ee, 0x080c, 0x51f4, 0x78a3, 0x0000, 0x7858, -+ 0xa084, 0xedff, 0x785a, 0x70a8, 0xa080, 0x00f3, 0x781a, 0x00fe, -+ 0x00ee, 0x00de, 0x00ce, 0x2091, 0x8001, 0x0804, 0x142c, 0x78e4, -+ 0xa084, 0x0007, 0x1de0, 0x78b8, 0x8007, 0xa084, 0x007f, 0x1dd8, -+ 0x7848, 0xa085, 0x000c, 0x784a, 0x7848, 0xa084, 0x000c, 0x1de0, -+ 0x71a4, 0x81ff, 0x0190, 0x6807, 0x0010, 0x70a7, 0x0000, 0x6807, -+ 0x0018, 0x6804, 0xa084, 0x0008, 0x1de0, 0x6807, 0x0008, 0x6804, -+ 0xa084, 0x0008, 0x1de0, 0x6807, 0x0002, 0x70a8, 0xa080, 0x00b7, -+ 0x0868, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x2091, 0x8001, 0x2001, -+ 0x4005, 0x0804, 0x142e, 0x7958, 0x71c6, 0x71c4, 0xa182, 0x0003, -+ 0x1a04, 0x1425, 0x795a, 0x0804, 0x142c, 0x7958, 0x71c6, 0x0804, -+ 0x142c, 0x7900, 0x71c6, 0x71c4, 0x7902, 0x0804, 0x142c, 0x7900, -+ 0x71c6, 0x0804, 0x142c, 0x7904, 0x70c4, 0x7806, 0xd094, 0x0140, -+ 0x70c8, 0x78f2, 0x70cc, 0x78f6, 0x70d8, 0x78fa, 0x70dc, 0x78fe, -+ 0x0804, 0x142b, 0x7804, 0x70c6, 0xd094, 0x0140, 0x78f0, 0x70ca, -+ 0x78f4, 0x70ce, 0x78f8, 0x70da, 0x78fc, 0x70de, 0x0804, 0x142c, -+ 0x71c4, 0xd1fc, 0x1118, 0x2011, 0xb800, 0x0010, 0x2011, 0xb900, -+ 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0x8003, 0xa268, -+ 0x2011, 0x0000, 0x6814, 0xd0fc, 0x0110, 0xa295, 0x0200, 0xd0b4, -+ 0x0110, 0xa295, 0x0001, 0x6b0c, 0x6800, 0x70da, 0x6820, 0x70de, -+ 0x0804, 0x1429, 0x780c, 0xd0f4, 0x0130, 0x2001, 0x4007, 0x70db, -+ 0x0000, 0xa005, 0x0048, 0xd0fc, 0x0130, 0x2001, 0x4007, 0x70db, -+ 0x0001, 0xa005, 0x0008, 0xa006, 0x0005, 0x780c, 0xd0f4, 0x0128, -+ 0x2001, 0x4007, 0x70db, 0x0000, 0x0008, 0xa006, 0x0005, 0x780c, -+ 0xd0fc, 0x0128, 0x2001, 0x4007, 0x70db, 0x0001, 0x0008, 0xa006, -+ 0x0005, 0xac80, 0x0001, 0x080c, 0x1e7a, 0x0005, 0x7112, 0x7003, -+ 0x0001, 0x7007, 0x0001, 0x2099, 0x0030, 0x20a9, 0x0020, 0xac80, -+ 0x0001, 0x20a0, 0x7008, 0xd0fc, 0x0de8, 0x7007, 0x0002, 0xa08c, -+ 0x01e0, 0x1510, 0x53a5, 0x7884, 0xa005, 0x01e8, 0x0411, 0x0148, -+ 0x2c00, 0x788a, 0x20a9, 0x0020, 0xac80, 0x0001, 0x20a0, 0x53a5, -+ 0x0090, 0x7887, 0x0000, 0x7218, 0x731c, 0x7420, 0x7524, 0xa292, -+ 0x0040, 0xa39b, 0x0000, 0xa4a3, 0x0000, 0xa5ab, 0x0000, 0x721a, -+ 0x731e, 0x7422, 0x7526, 0xa006, 0x7003, 0x0000, 0x7007, 0x0004, -+ 0x0005, 0x2091, 0x8000, 0x783c, 0xa065, 0x0120, 0x2c04, 0x783e, -+ 0x2063, 0x0000, 0x2091, 0x8001, 0x0005, 0x00f6, 0x2079, 0xb340, -+ 0x783c, 0xa06d, 0x0140, 0x2d04, 0x783e, 0x6803, 0x0000, 0x6807, -+ 0x0000, 0x680b, 0x0000, 0x00fe, 0x0005, 0x2091, 0x8000, 0x00f6, -+ 0x2079, 0xb340, 0x783c, 0x2062, 0x2c00, 0xa005, 0x1110, 0x080c, -+ 0x297f, 0x783e, 0x00fe, 0x2091, 0x8001, 0x0005, 0x00f6, 0x2079, -+ 0xb340, 0x783c, 0x206a, 0x2d00, 0x783e, 0x00fe, 0x0005, 0x3800, -+ 0xa084, 0x0003, 0x0118, 0x2011, 0x1100, 0x0010, 0x2011, 0x5d00, -+ 0x7a3e, 0x7bc4, 0x8319, 0x0128, 0xa280, 0x0037, 0x2012, 0x2010, -+ 0x0cc8, 0x2013, 0x0000, 0x0005, 0x0016, 0x2069, 0xda00, 0xd7fc, -+ 0x1110, 0x2069, 0xba00, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, -+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xad68, 0x001e, 0x0005, -+ 0x0c59, 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084, 0xf9ef, -+ 0xa80d, 0x690a, 0x00e6, 0xd7fc, 0x1128, 0x2009, 0xb394, 0x2071, -+ 0xb380, 0x0020, 0x2009, 0xb3d4, 0x2071, 0xb3c0, 0x210c, 0x6804, -+ 0xa005, 0x0148, 0xa116, 0x1138, 0x2060, 0x6000, 0x6806, 0x0016, -+ 0x200b, 0x0000, 0x0018, 0x2009, 0x0000, 0x0016, 0x6804, 0xa065, -+ 0x0148, 0x6000, 0x6806, 0x04b9, 0x080c, 0x2076, 0x6810, 0x8001, -+ 0x6812, 0x1da0, 0x001e, 0x6902, 0x6906, 0x2d00, 0x2060, 0x080c, -+ 0x2af4, 0x00ee, 0x0005, 0xa065, 0x0170, 0x2008, 0x609c, 0xa005, -+ 0x0128, 0x2062, 0x609f, 0x0000, 0xa065, 0x0cc0, 0x2079, 0xb340, -+ 0x783c, 0x793e, 0x2062, 0x0005, 0xa065, 0x01a0, 0x2008, 0x609c, -+ 0xa005, 0x0128, 0x2062, 0x609f, 0x0000, 0xa065, 0x0cc0, 0x00f6, -+ 0x2079, 0xb340, 0x2091, 0x8000, 0x783c, 0x793e, 0x00fe, 0x2062, -+ 0x2091, 0x8001, 0x0005, 0x6007, 0x0103, 0x608f, 0x0000, 0x20a9, -+ 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, -+ 0x601a, 0x682c, 0x6022, 0x0005, 0x00e6, 0xd7fc, 0x1128, 0x2071, -+ 0xb380, 0x2031, 0xb400, 0x0020, 0x2071, 0xb3c0, 0x2031, 0xb600, -+ 0x7054, 0xa08c, 0x0200, 0x1128, 0xa608, 0x2d0a, 0x8000, 0x7056, -+ 0xa006, 0x00ee, 0x0005, 0x00f6, 0xd7fc, 0x1118, 0x2079, 0xb380, -+ 0x0010, 0x2079, 0xb3c0, 0x080c, 0x1cc4, 0x2091, 0x8000, 0x6804, -+ 0x7806, 0xa065, 0x05d0, 0x0028, 0x2c00, 0x7806, 0x6000, 0xa065, -+ 0x05a0, 0x6010, 0xa306, 0x1dc0, 0x600c, 0xa206, 0x1da8, 0x2c28, -+ 0x7850, 0xac06, 0x1108, 0x0430, 0x6804, 0xac06, 0x1140, 0x6000, -+ 0x2060, 0x6806, 0xa005, 0x1118, 0x6803, 0x0000, 0x0048, 0x6400, -+ 0x7804, 0x2060, 0x6402, 0xa486, 0x0000, 0x1110, 0x2c00, 0x6802, -+ 0x2560, 0x00fe, 0x080c, 0x1d3b, 0x00f6, 0x601b, 0x0005, 0x6023, -+ 0x0020, 0x00fe, 0x080c, 0x2076, 0x00f6, 0x6810, 0x8001, 0x0b0c, -+ 0x297f, 0x6812, 0xa085, 0xffff, 0xa005, 0x00fe, 0x0005, 0x0076, -+ 0x2700, 0x2039, 0x0000, 0xd0fc, 0x0108, 0xc7fd, 0x2041, 0x0021, -+ 0x2049, 0x0004, 0x2051, 0x0008, 0x2091, 0x8000, 0x080c, 0x1cd8, -+ 0x8738, 0xa784, 0x001f, 0x1dd0, 0xa7bc, 0xff00, 0x873f, 0x8738, -+ 0x873f, 0xa784, 0x0f00, 0x1d90, 0x2091, 0x8001, 0x007e, 0x0005, -+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x11b8, 0x7808, 0xd08c, -+ 0x0130, 0xc08c, 0x780a, 0xc7fc, 0x2069, 0xb380, 0x0028, 0xc08d, -+ 0x780a, 0x2069, 0xb3c0, 0xc7fd, 0x2091, 0x8000, 0x6818, 0x681b, -+ 0x0000, 0x2091, 0x8001, 0xa005, 0x1108, 0x0005, 0xa08c, 0xfff0, -+ 0x0110, 0x080c, 0x297f, 0x0002, 0x1e04, 0x1e07, 0x1e0d, 0x1e11, -+ 0x1e05, 0x1e15, 0x1e1b, 0x1e05, 0x1e05, 0x1f85, 0x1faf, 0x1fb2, -+ 0x1fb7, 0x1e05, 0x1e05, 0x1e05, 0x0005, 0x080c, 0x297f, 0x080c, -+ 0x1daf, 0x2001, 0x8001, 0x0804, 0x1fc7, 0x2001, 0x8003, 0x0804, -+ 0x1fc7, 0x2001, 0x8004, 0x0804, 0x1fc7, 0x080c, 0x1daf, 0x2001, -+ 0x8006, 0x0804, 0x1fc7, 0x2001, 0x8007, 0x0804, 0x1fc7, 0x2030, -+ 0x2138, 0xa782, 0x0021, 0x0210, 0x2009, 0x0020, 0x2600, 0x0099, -+ 0x1188, 0xa7ba, 0x0020, 0x0268, 0x0160, 0x2708, 0xa6b0, 0x0020, -+ 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, -+ 0x0c40, 0xa006, 0x0005, 0x81ff, 0x01f0, 0x2099, 0x0030, 0x20a0, -+ 0x700c, 0xa084, 0x07ff, 0x0130, 0x7007, 0x0004, 0x7004, 0xa084, -+ 0x0004, 0x1de0, 0x21a8, 0x810b, 0x7112, 0x7003, 0x0001, 0x7007, -+ 0x0001, 0x7008, 0x800b, 0x1ee8, 0x7007, 0x0002, 0xa08c, 0x01e0, -+ 0x1110, 0x53a5, 0xa006, 0x7003, 0x0000, 0x0005, 0x2030, 0x2138, -+ 0xa782, 0x0021, 0x0210, 0x2009, 0x0020, 0x2600, 0x0099, 0x1188, -+ 0xa7ba, 0x0020, 0x0268, 0x0160, 0x2708, 0xa6b0, 0x0020, 0xa290, -+ 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x0c40, -+ 0xa006, 0x0005, 0x81ff, 0x0588, 0x2098, 0x20a1, 0x0030, 0x700c, -+ 0xa084, 0x07ff, 0x0100, 0x21a8, 0x810b, 0x7112, 0x7018, 0x0006, -+ 0x701c, 0x0006, 0x7020, 0x0006, 0x7024, 0x0006, 0x721a, 0x731e, -+ 0x7422, 0x7526, 0x7003, 0x0000, 0x53a6, 0x7007, 0x0001, 0x7010, -+ 0xa084, 0xf000, 0x0118, 0x7007, 0x0008, 0x0018, 0x7108, 0x8103, -+ 0x1eb0, 0x000e, 0x7026, 0x000e, 0x7022, 0x000e, 0x701e, 0x000e, -+ 0x701a, 0x7007, 0x0002, 0xa184, 0x01e0, 0x7003, 0x0000, 0x7007, -+ 0x0004, 0x0005, 0x00e6, 0x6914, 0xd1fc, 0x0118, 0x2071, 0xb3c0, -+ 0x0010, 0x2071, 0xb380, 0x2d08, 0x70b4, 0x6802, 0xa005, 0x1108, -+ 0x71ba, 0x71b6, 0x00ee, 0x0005, 0x00f6, 0x6114, 0xd1fc, 0x0118, -+ 0x2079, 0xb3c0, 0x0010, 0x2079, 0xb380, 0x2c08, 0x78b4, 0x6002, -+ 0xa005, 0x1108, 0x79ba, 0x79b6, 0x00fe, 0x0005, 0x2091, 0x8000, -+ 0x00f6, 0x6114, 0xd1fc, 0x0118, 0x2079, 0xb3c0, 0x0010, 0x2079, -+ 0xb380, 0x6003, 0x0000, 0x2c08, 0x78b8, 0xa065, 0x1110, 0x79b6, -+ 0x0008, 0x6102, 0x79ba, 0x00fe, 0x2091, 0x8001, 0x080c, 0x2636, -+ 0x0005, 0x70b4, 0xa06d, 0x0130, 0x6800, 0x70b6, 0xa005, 0x1108, -+ 0x70ba, 0x8dff, 0x0005, 0x00d6, 0x00c6, 0x00f6, 0xd3fc, 0x0118, -+ 0x2079, 0xb3c0, 0x0010, 0x2079, 0xb380, 0xaf80, 0x002d, 0x2060, -+ 0x6000, 0xa005, 0x01e0, 0x2068, 0x6814, 0xa306, 0x1128, 0x6828, -+ 0xa084, 0x00ff, 0xa406, 0x0110, 0x2d60, 0x0c90, 0x6800, 0xa005, -+ 0x6002, 0x1130, 0xaf80, 0x002d, 0xac06, 0x0108, 0x2c00, 0x78ba, -+ 0x00d6, 0x689c, 0xa005, 0x0110, 0x080c, 0x1d13, 0x000e, 0x00fe, -+ 0x00ce, 0x00de, 0xa005, 0x0005, 0x00d6, 0x00c6, 0x00f6, 0xd0fc, -+ 0x0118, 0x2079, 0xb3c0, 0x0010, 0x2079, 0xb380, 0xaf80, 0x002d, -+ 0x2060, 0x6000, 0xa005, 0x01c8, 0x2068, 0x6814, 0xa084, 0x00ff, -+ 0xa306, 0x0110, 0x2d60, 0x0ca8, 0x6800, 0xa005, 0x6002, 0x1130, -+ 0xaf80, 0x002d, 0xac06, 0x0108, 0x2c00, 0x78ba, 0x00d6, 0x689c, -+ 0xa005, 0x0110, 0x080c, 0x1d13, 0x000e, 0x00fe, 0x00ce, 0x00de, -+ 0xa005, 0x0005, 0x00d6, 0x00c6, 0x00f6, 0xd3fc, 0x0118, 0x2079, -+ 0xb3c0, 0x0010, 0x2079, 0xb380, 0xaf80, 0x002d, 0x2060, 0x6000, -+ 0xa06d, 0x01b0, 0x6814, 0xa306, 0x0110, 0x2d60, 0x0cc0, 0x6800, -+ 0xa005, 0x6002, 0x1130, 0xaf80, 0x002d, 0xac06, 0x0108, 0x2c00, -+ 0x78ba, 0x00d6, 0x689c, 0xa005, 0x0110, 0x080c, 0x1d13, 0x000e, -+ 0x00fe, 0x00ce, 0x00de, 0xa005, 0x0005, 0x2091, 0x8000, 0xd7fc, -+ 0x1118, 0x2069, 0xb380, 0x0010, 0x2069, 0xb3c0, 0x6800, 0xa086, -+ 0x0000, 0x0128, 0x2091, 0x8001, 0x681b, 0x0009, 0x0005, 0x6878, -+ 0xd7fc, 0x1108, 0x0008, 0xc0fd, 0xa0bc, 0xff00, 0x2041, 0x0021, -+ 0x2049, 0x0004, 0x2051, 0x0010, 0x080c, 0x1cd8, 0x8738, 0xa784, -+ 0x001f, 0x1dd0, 0x2091, 0x8001, 0x2001, 0x800a, 0x00c0, 0x2001, -+ 0x800c, 0x00a8, 0x080c, 0x1daf, 0x2001, 0x800d, 0x0080, 0x780c, -+ 0xd0e4, 0x1158, 0xd0ec, 0x0120, 0xd7fc, 0x0110, 0x78e4, 0x0008, -+ 0x78e0, 0x70c6, 0x2001, 0x800e, 0x0010, 0x0804, 0x1e05, 0x70c2, -+ 0xd7fc, 0x1118, 0x70db, 0x0000, 0x0010, 0x70db, 0x0001, 0x2061, -+ 0x0000, 0x601b, 0x0001, 0x2091, 0x4080, 0x0005, 0xac80, 0x0001, -+ 0x81ff, 0x0518, 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x07ff, -+ 0x0100, 0x7018, 0x0006, 0x701c, 0x0006, 0x7020, 0x0006, 0x7024, -+ 0x0006, 0x7112, 0x81ac, 0x721a, 0x731e, 0x7422, 0x7526, 0x7003, -+ 0x0001, 0x7007, 0x0001, 0x7008, 0x800b, 0x1ee8, 0x7007, 0x0002, -+ 0xa08c, 0x01e0, 0x1110, 0x53a5, 0xa006, 0x7003, 0x0000, 0x7007, -+ 0x0004, 0x000e, 0x7026, 0x000e, 0x7022, 0x000e, 0x701e, 0x000e, -+ 0x701a, 0x0005, 0x2011, 0x0020, 0x2009, 0x0010, 0x6b0a, 0x6c0e, -+ 0x681f, 0x0201, 0x6803, 0xfd20, 0x6807, 0x0038, 0x6a1a, 0x6823, -+ 0x0200, 0x6827, 0x0000, 0x2d00, 0xa0e8, 0x0010, 0xa290, 0x0004, -+ 0x8109, 0x1d60, 0x0005, 0x70ec, 0xd0dc, 0x1520, 0x2029, 0x0001, -+ 0x780c, 0xd0cc, 0x1160, 0x70ec, 0xd0e4, 0x2019, 0x0c0a, 0x2021, -+ 0x000a, 0x1120, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x0070, 0x70ec, -+ 0xd0e4, 0x1128, 0x2019, 0x1c0c, 0x2021, 0x000c, 0x0030, 0x2019, -+ 0x1c09, 0x2021, 0x0009, 0xa5ad, 0x0200, 0x6b0a, 0x6c0e, 0x6d1e, -+ 0x6807, 0x0038, 0x0005, 0x7018, 0x0006, 0x701c, 0x0006, 0x7020, -+ 0x0006, 0x7024, 0x0006, 0x721a, 0x731e, 0x7422, 0x7526, 0x7003, -+ 0x0000, 0x7007, 0x0001, 0x7010, 0xa084, 0xf000, 0x0118, 0x7007, -+ 0x0008, 0x0018, 0x7108, 0x8103, 0x1eb0, 0x000e, 0x7026, 0x000e, -+ 0x7022, 0x000e, 0x701e, 0x000e, 0x701a, 0x7007, 0x0002, 0xa184, -+ 0x01e0, 0x7003, 0x0000, 0x7007, 0x0004, 0x0005, 0x6004, 0x2c08, -+ 0x2063, 0x0000, 0x785c, 0x8000, 0x785e, 0x7860, 0xa005, 0x7962, -+ 0x0110, 0x2c02, 0x0008, 0x7966, 0x0005, 0x6807, 0x0103, 0x00c6, -+ 0x2061, 0xb340, 0x2d08, 0x206b, 0x0000, 0x605c, 0x8000, 0x605e, -+ 0x6060, 0xa005, 0x6162, 0x0110, 0x2d02, 0x0008, 0x6166, 0x00ce, -+ 0x0005, 0x2091, 0x8000, 0x785c, 0x8001, 0x785e, 0x2c04, 0x7866, -+ 0xa005, 0x1108, 0x7862, 0x2091, 0x8001, 0x609c, 0xa005, 0x01a8, -+ 0x00c6, 0x2060, 0x2008, 0x609c, 0xa005, 0x0138, 0x2062, 0x609f, -+ 0x0000, 0xa065, 0x609c, 0xa005, 0x1dc8, 0x2091, 0x8000, 0x783c, -+ 0x793e, 0x2062, 0x2091, 0x8001, 0x00ce, 0x2091, 0x8000, 0x783c, -+ 0x2062, 0x609f, 0x0000, 0x2c00, 0xa005, 0x1110, 0x080c, 0x297f, -+ 0x783e, 0x2091, 0x8001, 0x0005, 0x7864, 0xa065, 0x0168, 0x2091, -+ 0x8000, 0x785c, 0x8001, 0x785e, 0x2c04, 0x7866, 0xa005, 0x1110, -+ 0x7862, 0x8000, 0x2091, 0x8001, 0x0005, 0x20a9, 0x0010, 0xa006, -+ 0x8004, 0x8086, 0x818e, 0x1208, 0xa200, 0x1f04, 0x20e1, 0x8086, -+ 0x818e, 0x0005, 0x0156, 0x20a9, 0x0010, 0xa005, 0x01b8, 0xa11a, -+ 0x12a8, 0x8213, 0x818d, 0x0228, 0xa11a, 0x1220, 0x1f04, 0x20f1, -+ 0x0028, 0xa11a, 0x2308, 0x8210, 0x1f04, 0x20f1, 0x0006, 0x3200, -+ 0xa084, 0xefff, 0x2080, 0x000e, 0x015e, 0x0005, 0x0006, 0x3200, -+ 0xa085, 0x1000, 0x0cb8, 0x7d6c, 0x70d0, 0xa506, 0x0904, 0x218e, -+ 0x7808, 0xd0ec, 0x0190, 0x00e6, 0x2091, 0x8000, 0x2071, 0x0020, -+ 0x7004, 0xa005, 0x1138, 0x7008, 0x00ee, 0xa086, 0x0008, 0x0128, -+ 0x0804, 0x218e, 0x00ee, 0x0804, 0x218e, 0x080c, 0x1c79, 0x0904, -+ 0x218e, 0x7968, 0x2500, 0x8000, 0xa112, 0x2009, 0x0040, 0x1210, -+ 0xa006, 0x0038, 0x72d0, 0xa206, 0x0120, 0x7887, 0x0001, 0x2009, -+ 0x0080, 0x00c6, 0x080c, 0x1c3e, 0x00ce, 0x05d8, 0x080c, 0x1c95, -+ 0x7887, 0x0000, 0x7880, 0x8000, 0x7882, 0xa086, 0x0002, 0x01a0, -+ 0x8507, 0x8004, 0x8004, 0x7974, 0xa108, 0x711a, 0x1260, 0x7970, -+ 0xa189, 0x0000, 0x711e, 0x797c, 0xa189, 0x0000, 0x7122, 0x7978, -+ 0xa189, 0x0000, 0x7126, 0x0490, 0x6014, 0xd0fc, 0x1118, 0x2069, -+ 0xb380, 0x0010, 0x2069, 0xb3c0, 0x2091, 0x8000, 0x681b, 0x0002, -+ 0x7884, 0xa005, 0x0128, 0x7887, 0x0000, 0x7888, 0x2060, 0x0c60, -+ 0x7883, 0x0000, 0x78ac, 0xa085, 0x0003, 0x78ae, 0x2091, 0x8001, -+ 0x00a8, 0x7883, 0x0000, 0x080c, 0x24c9, 0x6004, 0xa084, 0x000f, -+ 0x0071, 0x7884, 0xa005, 0x0130, 0x7888, 0x2060, 0x6004, 0xa084, -+ 0x000f, 0x0029, 0x7887, 0x0000, 0x0804, 0x210b, 0x0005, 0x0002, -+ 0x21a0, 0x21bb, 0x21d6, 0x21a0, 0x21ef, 0x21af, 0x2341, 0x2357, -+ 0x21a0, 0x21b9, 0x21d4, 0x2232, 0x22a0, 0x22e9, 0x22fa, 0x2357, -+ 0x2039, 0x0400, 0x78bc, 0xa705, 0x78be, 0x6008, 0xa705, 0x600a, -+ 0x080c, 0x23ca, 0x609c, 0x78ba, 0x080c, 0x24b3, 0x0005, 0x78bc, -+ 0xa084, 0x0100, 0x0108, 0x0c60, 0x601c, 0xa085, 0x0080, 0x601e, -+ 0x0038, 0x080c, 0x250a, 0x78bc, 0xa084, 0x0100, 0x0108, 0x0c00, -+ 0x78bf, 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78b2, 0x8001, -+ 0x0140, 0x080c, 0x23ca, 0x0128, 0x78bc, 0xa085, 0x0100, 0x78be, -+ 0x0010, 0x0804, 0x23e6, 0x0005, 0x080c, 0x2507, 0x78bc, 0xa08c, -+ 0x0e00, 0x1118, 0xa084, 0x0100, 0x1108, 0x0810, 0x080c, 0x23ca, -+ 0x1168, 0x6104, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0904, 0x2394, -+ 0xa186, 0x000f, 0x0904, 0x2394, 0x0804, 0x23e6, 0x0005, 0x78bc, -+ 0xa084, 0x0100, 0x0110, 0x0804, 0x21a0, 0x78bf, 0x0000, 0x6714, -+ 0x080c, 0x1cc4, 0x2011, 0x0001, 0x20a9, 0x0001, 0x6018, 0xa084, -+ 0x00ff, 0xa005, 0x0198, 0x2011, 0x0001, 0xa7bc, 0xff00, 0x20a9, -+ 0x0020, 0xa08e, 0x0001, 0x0150, 0xa7bc, 0x8000, 0x2011, 0x0002, -+ 0x20a9, 0x0100, 0xa08e, 0x0002, 0x0108, 0x00c8, 0x0156, 0x080c, -+ 0x1cc4, 0x015e, 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, -+ 0x6808, 0xa084, 0xffde, 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, -+ 0x1f04, 0x221a, 0x8211, 0x0118, 0x20a9, 0x0100, 0x0c58, 0x080c, -+ 0x1c95, 0x0005, 0x6114, 0x080c, 0x2525, 0x6900, 0xa184, 0x0001, -+ 0x0190, 0x6028, 0xa084, 0x00ff, 0x1904, 0x23ae, 0x6800, 0xa084, -+ 0x0001, 0x0904, 0x23b4, 0x6803, 0x0000, 0x680b, 0x0000, 0x6807, -+ 0x0000, 0x0804, 0x23ba, 0x2011, 0x0001, 0x6020, 0xd0f4, 0x0110, -+ 0xa295, 0x0002, 0xd0c4, 0x0110, 0xa295, 0x0008, 0xd0cc, 0x0110, -+ 0xa295, 0x0400, 0x601c, 0xa084, 0x0002, 0x0110, 0xa295, 0x0004, -+ 0x602c, 0xa08c, 0x00ff, 0xa182, 0x0002, 0x0a04, 0x23b7, 0xa182, -+ 0x001b, 0x1a04, 0x23b7, 0x0904, 0x23b7, 0x690e, 0x602c, 0x8007, -+ 0xa08c, 0x00ff, 0xa182, 0x0002, 0x0a04, 0x23b7, 0xa182, 0x001b, -+ 0x1a04, 0x23b7, 0x0904, 0x23b7, 0x6912, 0x6134, 0xa184, 0x000f, -+ 0x0138, 0x8000, 0xd0a4, 0x0108, 0x8001, 0xa18c, 0xfff0, 0xa10d, -+ 0x6922, 0x6030, 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6816, -+ 0x6028, 0xa084, 0x00ff, 0x0904, 0x23b4, 0x6806, 0x6028, 0x8007, -+ 0xa084, 0x00ff, 0x0904, 0x23b4, 0x680a, 0x6a02, 0x0804, 0x23ba, -+ 0x6014, 0xd0fc, 0x1118, 0x2001, 0xb3a4, 0x0010, 0x2001, 0xb3e4, -+ 0x2004, 0xa084, 0x8000, 0x0904, 0x23b4, 0x6114, 0x080c, 0x2525, -+ 0x2091, 0x8000, 0x6a04, 0x6b08, 0x6418, 0xa484, 0x0003, 0x0170, -+ 0x6128, 0xa18c, 0x00ff, 0x8001, 0x1120, 0x2100, 0xa210, 0x0628, -+ 0x0028, 0x8001, 0x1510, 0x2100, 0xa212, 0x02f8, 0xa484, 0x000c, -+ 0x0188, 0x6128, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004, 0x1120, -+ 0x2100, 0xa318, 0x0290, 0x0030, 0xa082, 0x0004, 0x1170, 0x2100, -+ 0xa31a, 0x0258, 0x6030, 0xa005, 0x0110, 0x8000, 0x6816, 0x6a06, -+ 0x6b0a, 0x2091, 0x8001, 0x0804, 0x23ba, 0x2091, 0x8001, 0x0804, -+ 0x23b7, 0x6114, 0x080c, 0x2525, 0x2091, 0x8000, 0x6b08, 0x8318, -+ 0x0228, 0x6b0a, 0x2091, 0x8001, 0x0804, 0x23c8, 0x2091, 0x8001, -+ 0x0804, 0x23b7, 0x6024, 0x8007, 0xa084, 0x00ff, 0x01e0, 0xa086, -+ 0x0080, 0x15e8, 0x20a9, 0x0008, 0x6014, 0xd0fc, 0x1118, 0x2069, -+ 0xfc20, 0x0010, 0x2069, 0xfd40, 0x2091, 0x8000, 0x6800, 0xa084, -+ 0xfcff, 0x6802, 0xade8, 0x0009, 0x0f04, 0x2317, 0x0cb8, 0x2091, -+ 0x8001, 0x0804, 0x23ba, 0x6028, 0xa015, 0x0508, 0x6114, 0x080c, -+ 0x2525, 0x00d6, 0xade8, 0x0007, 0x2091, 0x8000, 0x6800, 0xa00d, -+ 0x0198, 0xa206, 0x0110, 0x2168, 0x0cc8, 0x00c6, 0x2160, 0x6000, -+ 0x6802, 0x080c, 0x1c95, 0x00ce, 0x00de, 0x6808, 0x8000, 0x680a, -+ 0x2091, 0x8001, 0x0804, 0x23c8, 0x2091, 0x8001, 0x00de, 0x0804, -+ 0x23b4, 0x6114, 0x080c, 0x2525, 0x6800, 0xa084, 0x0001, 0x0904, -+ 0x23a8, 0x2091, 0x8000, 0x6a04, 0x8210, 0x0228, 0x6a06, 0x2091, -+ 0x8001, 0x0804, 0x23c8, 0x2091, 0x8001, 0x0804, 0x23b7, 0x6114, -+ 0x080c, 0x2525, 0x60ce, 0x60bb, 0x0000, 0x6018, 0xa08c, 0xff00, -+ 0x6820, 0xa084, 0x00ff, 0xa105, 0x601a, 0x6900, 0xa184, 0x0008, -+ 0x0120, 0x6020, 0xa085, 0x0100, 0x6022, 0xa184, 0x0001, 0x0904, -+ 0x23b4, 0xa184, 0x0100, 0x1588, 0xa184, 0x0200, 0x1558, 0x681c, -+ 0xa005, 0x1588, 0x6004, 0xa084, 0x00ff, 0xa086, 0x000f, 0x1110, -+ 0x080c, 0x250a, 0x78bf, 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, -+ 0x78b2, 0x8001, 0x609f, 0x0000, 0x0138, 0x04e1, 0x0128, 0x78bc, -+ 0xa085, 0x0100, 0x78be, 0x0005, 0x78b7, 0x0000, 0x78bb, 0x0000, -+ 0x6024, 0xa084, 0xff00, 0x6026, 0x080c, 0x42ef, 0x1108, 0x0005, -+ 0x0804, 0x1ed6, 0x2009, 0x0017, 0x00b8, 0x2009, 0x000e, 0x00a0, -+ 0x2009, 0x0007, 0x0088, 0x2009, 0x0035, 0x0070, 0x2009, 0x003e, -+ 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, 0x2009, -+ 0x0016, 0x0010, 0x2009, 0x0001, 0x6024, 0xa084, 0xff00, 0xa105, -+ 0x6026, 0x2091, 0x8000, 0x080c, 0x2076, 0x2091, 0x8001, 0x0005, -+ 0x0804, 0x1c95, 0x609f, 0x0000, 0x78b4, 0xa06d, 0x2c00, 0x78b6, -+ 0x1110, 0x78ba, 0x0038, 0x689e, 0x2d00, 0x6002, 0x78b8, 0xad06, -+ 0x1108, 0x6002, 0x78b0, 0x8001, 0x78b2, 0x1138, 0x78bc, 0xa084, -+ 0xfeff, 0x78be, 0x78b8, 0x2060, 0xa006, 0x0005, 0x00e6, 0xa02e, -+ 0x2530, 0x65ae, 0x65b2, 0x601c, 0x60a2, 0x2048, 0xa984, 0xe1ff, -+ 0x601e, 0xa984, 0x0060, 0x0110, 0x080c, 0x5365, 0x6596, 0x65a6, -+ 0x669a, 0x66aa, 0x6714, 0x2071, 0xb3c0, 0xd7fc, 0x1110, 0x2071, -+ 0xb380, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x0120, 0x8003, -+ 0x8003, 0x8003, 0x8003, 0xa105, 0x71e0, 0xa168, 0x2700, 0x8007, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0x8003, 0x71e4, 0xa100, -+ 0x60c6, 0x2091, 0x8000, 0x780c, 0xd0c4, 0x0160, 0xd0ec, 0x0138, -+ 0xd7fc, 0x1118, 0xd0f4, 0x1158, 0x0028, 0xd0fc, 0x1140, 0x7808, -+ 0xd0f4, 0x1128, 0x6e08, 0xd684, 0x0560, 0xd9fc, 0x1550, 0x2091, -+ 0x8001, 0x080c, 0x1d3b, 0x2091, 0x8000, 0x080c, 0x2076, 0x2091, -+ 0x8001, 0x78b7, 0x0000, 0x78bb, 0x0000, 0x780c, 0xd0e4, 0x1904, -+ 0x24b1, 0x780c, 0xd0c4, 0x0904, 0x24b1, 0xd0ec, 0x0150, 0xd7fc, -+ 0x1120, 0xd0f4, 0x1150, 0x0804, 0x24b1, 0xd0fc, 0x1130, 0x0804, -+ 0x24b1, 0x7808, 0xd0f4, 0x0904, 0x24b1, 0x601b, 0x0021, 0x0804, -+ 0x24b1, 0x6024, 0xa096, 0x0001, 0x1110, 0x8000, 0x6026, 0x6a10, -+ 0x6814, 0xa202, 0x0248, 0x0140, 0x2091, 0x8001, 0x2039, 0x0200, -+ 0x080c, 0x24b3, 0x0804, 0x24b1, 0x2c08, 0xd9fc, 0x01f0, 0x6800, -+ 0xa065, 0x01d8, 0x6a04, 0x7000, 0xa084, 0x0002, 0x0168, 0x7050, -+ 0xa206, 0x1150, 0x6b04, 0x2160, 0x2304, 0x6002, 0xa005, 0x1108, -+ 0x6902, 0x2260, 0x6102, 0x0098, 0x2d00, 0x2060, 0x080c, 0x2af4, -+ 0x6e08, 0x2160, 0x6202, 0x6906, 0x0050, 0x6800, 0x6902, 0xa065, -+ 0x0110, 0x6102, 0x0008, 0x6906, 0x2160, 0x6003, 0x0000, 0x2160, -+ 0xd9fc, 0x0138, 0xa6b4, 0xffdc, 0x6e0a, 0x682b, 0x0000, 0x682f, -+ 0x0000, 0x6810, 0x8000, 0x6812, 0x2091, 0x8001, 0xd6b4, 0x0128, -+ 0xa6b6, 0x0040, 0x6e0a, 0x080c, 0x1d4c, 0x78bb, 0x0000, 0x78b7, -+ 0x0000, 0x00ee, 0x0005, 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, -+ 0x080c, 0x2076, 0x2091, 0x8001, 0x78b8, 0xa065, 0x0128, 0x609c, -+ 0x78ba, 0x609f, 0x0000, 0x0c90, 0x78b7, 0x0000, 0x78bb, 0x0000, -+ 0x0005, 0x7968, 0x786c, 0x7b84, 0xd384, 0x0118, 0x8000, 0xa112, -+ 0x0220, 0xc384, 0x8000, 0xa112, 0x1260, 0x7a74, 0x721a, 0x7a70, -+ 0x721e, 0x7a7c, 0x7222, 0x7a78, 0x7226, 0xa006, 0xd384, 0x0108, -+ 0x8000, 0x786e, 0x70d2, 0x7904, 0xd19c, 0x01b0, 0x0146, 0x00c6, -+ 0x20a1, 0x0030, 0x20a2, 0x20a3, 0x0000, 0x7013, 0x0004, 0x2061, -+ 0xfed8, 0x2c14, 0x8c60, 0x2c1c, 0x8c60, 0x2c24, 0x8c60, 0x2c2c, -+ 0x080c, 0x204b, 0x00ce, 0x014e, 0x7814, 0xa005, 0x0138, 0x8001, -+ 0x7816, 0x1120, 0x0e04, 0x2506, 0x2091, 0x4080, 0x0005, 0x2039, -+ 0x251c, 0x0010, 0x2039, 0x2522, 0x2704, 0xa005, 0x0160, 0xac00, -+ 0x2068, 0x6908, 0x6810, 0x6912, 0x680a, 0x690c, 0x6814, 0x6916, -+ 0x680e, 0x8738, 0x0c88, 0x0005, 0x0003, 0x0009, 0x000f, 0x0015, -+ 0x001b, 0x0000, 0x0015, 0x001b, 0x0000, 0x00c6, 0x6014, 0x080c, -+ 0x449c, 0x2c68, 0x00ce, 0x0005, 0x78ab, 0x0000, 0x2009, 0xb341, -+ 0x2104, 0xd084, 0x0510, 0x6004, 0xa086, 0x0103, 0x11f0, 0x6114, -+ 0x6018, 0xa105, 0x11d0, 0x00d6, 0x2069, 0x0000, 0x6818, 0xd084, -+ 0x1198, 0x600c, 0x70c6, 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b, -+ 0x0001, 0x2091, 0x4080, 0x00de, 0x080c, 0x2099, 0x0e04, 0x257e, -+ 0x7864, 0xa065, 0x19d8, 0x0450, 0x00de, 0x0459, 0x0518, 0x6204, -+ 0xa294, 0x00ff, 0xa296, 0x0003, 0x0130, 0x6204, 0xa296, 0x0110, -+ 0x1168, 0x78ab, 0x0001, 0x6204, 0xa294, 0xff00, 0x8217, 0x8211, -+ 0x0128, 0x85ff, 0x1178, 0x8210, 0xa202, 0x1260, 0x0056, 0x00f1, -+ 0x005e, 0x1140, 0x8528, 0x78a8, 0xa005, 0x1120, 0x7864, 0xa065, -+ 0x1904, 0x252e, 0x85ff, 0x0120, 0x2091, 0x4080, 0x7890, 0x70d6, -+ 0x0005, 0x7b8c, 0x7990, 0x70d4, 0xa102, 0x1118, 0x2300, 0xa005, -+ 0x0005, 0x0210, 0xa302, 0x0005, 0x8002, 0x0005, 0xa184, 0xff00, -+ 0x0140, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, -+ 0x0018, 0x8107, 0x8004, 0x8004, 0x7a98, 0x7b94, 0x7ca0, 0x7d9c, -+ 0xa210, 0xa006, 0xa319, 0xa421, 0xa529, 0x2009, 0x0020, 0x6004, -+ 0xa086, 0x0103, 0x1128, 0x6028, 0xa005, 0x1110, 0x2009, 0x000c, -+ 0x080c, 0x1c39, 0x01e0, 0x78a4, 0x8000, 0x78a6, 0xa086, 0x0002, -+ 0x1904, 0x25fc, 0x6014, 0xd0fc, 0x1118, 0x2069, 0xb380, 0x0010, -+ 0x2069, 0xb3c0, 0x2091, 0x8000, 0x681b, 0x0003, 0x78a7, 0x0000, -+ 0x78ac, 0xa085, 0x0300, 0x78ae, 0x2091, 0x8001, 0x0468, 0x78a7, -+ 0x0000, 0x080c, 0x2099, 0x798c, 0x7890, 0x8000, 0xa10a, 0x1208, -+ 0xa006, 0x7892, 0x70d6, 0x7904, 0xd19c, 0x01e8, 0x0006, 0x0146, -+ 0x00c6, 0x20a1, 0x0030, 0x20a2, 0xa006, 0x20a2, 0x7013, 0x0004, -+ 0x2061, 0xfed8, 0x2c14, 0xa290, 0x0004, 0x8c60, 0x2c1c, 0xa319, -+ 0x8c60, 0x2c24, 0xa421, 0x8c60, 0x2c2c, 0xa529, 0x080c, 0x204b, -+ 0x00ce, 0x014e, 0x000e, 0xa006, 0x2071, 0x0010, 0x2091, 0x8001, -+ 0x0005, 0x2138, 0xd7fc, 0x1118, 0x2009, 0xb39a, 0x0010, 0x2009, -+ 0xb3da, 0x2091, 0x8000, 0x200a, 0x00f6, 0xd7fc, 0x1168, 0x2009, -+ 0xb380, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x0118, 0x2079, 0x0100, -+ 0x0038, 0x2079, 0x0200, 0x0020, 0x2009, 0xb3c0, 0x2079, 0x0100, -+ 0x2104, 0xa086, 0x0000, 0x1180, 0xd7fc, 0x1118, 0x2009, 0xb384, -+ 0x0010, 0x2009, 0xb3c4, 0x2104, 0xa005, 0x1130, 0x7830, 0xa084, -+ 0x00c0, 0x1110, 0x781b, 0x0053, 0x00fe, 0x0005, 0x00f6, 0x00e6, -+ 0x2c00, 0xa005, 0x1120, 0xa188, 0x0005, 0x2104, 0x0008, 0x6014, -+ 0xd0fc, 0x1168, 0x2071, 0xb380, 0x2001, 0xb342, 0x2004, 0xd0ec, -+ 0x0118, 0x2079, 0x0100, 0x0038, 0x2079, 0x0200, 0x0020, 0x2071, -+ 0xb3c0, 0x2079, 0x0100, 0x2091, 0x8000, 0x7000, 0xa086, 0x0000, -+ 0x1510, 0x00b8, 0x2c00, 0xa005, 0x1120, 0xa188, 0x0005, 0x2104, -+ 0x0008, 0x6014, 0xd0fc, 0x1158, 0x2001, 0xb342, 0x2004, 0xd0ec, -+ 0x0118, 0x2079, 0x0100, 0x0028, 0x2079, 0x0200, 0x0010, 0x2079, -+ 0x0100, 0x7830, 0xa084, 0x00c0, 0x1130, 0x2c00, 0xa005, 0x1108, -+ 0x2104, 0x781b, 0x0055, 0x2091, 0x8001, 0x00ee, 0x00fe, 0x0005, -+ 0x2009, 0x0002, 0x2069, 0xb340, 0x6808, 0xd0ec, 0x1904, 0x26d5, -+ 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x1904, 0x26d5, 0x2071, 0xb3c0, -+ 0x2079, 0x0100, 0x2021, 0xb5ff, 0x784b, 0x000f, 0x1104, 0x26a0, -+ 0x7838, 0x0cd0, 0x784b, 0x000f, 0x1304, 0x26a0, 0x7838, 0x0cd0, -+ 0x20a9, 0x0060, 0x789b, 0x0000, 0x78af, 0x0000, 0x78af, 0x0000, -+ 0x1f04, 0x26a4, 0x70ab, 0x009d, 0x2019, 0x5a04, 0x04e1, 0x7003, -+ 0x0000, 0x0016, 0xd18c, 0x2009, 0x0000, 0x0108, 0xc1bd, 0x080c, -+ 0x286a, 0x001e, 0x701c, 0xa084, 0x000f, 0x0006, 0x680c, 0xd0e4, -+ 0x000e, 0x1118, 0xa085, 0x6300, 0x0010, 0xa085, 0x62c0, 0x7806, -+ 0x780f, 0x9200, 0x7843, 0x00d8, 0x7853, 0x0080, 0x780b, 0x2f08, -+ 0x704f, 0x2f08, 0x745a, 0x7057, 0x0000, 0x8109, 0x0188, 0x2071, -+ 0xb380, 0x6808, 0xd0ec, 0x0130, 0x2079, 0x0100, 0x2021, 0xb3ff, -+ 0x0804, 0x2694, 0x2079, 0x0200, 0x2021, 0xb3ff, 0x0804, 0x269a, -+ 0x080c, 0x2930, 0x0005, 0x0136, 0x0146, 0x0156, 0x0046, 0x0016, -+ 0x3808, 0x20c1, 0x0020, 0xaf80, 0x002b, 0x20a0, 0x2304, 0xa005, -+ 0x789a, 0x0190, 0x8318, 0x2324, 0x8318, 0x2398, 0x24a8, 0xa484, -+ 0xff00, 0x0120, 0xa482, 0x0100, 0x20a9, 0x0100, 0x2020, 0x53a6, -+ 0xa005, 0x1da0, 0x3318, 0x0c50, 0x21c0, 0x001e, 0x004e, 0x015e, -+ 0x014e, 0x013e, 0x0005, 0x0016, 0x00f6, 0xd1bc, 0x1168, 0x0006, -+ 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0x2079, 0x0100, -+ 0x0028, 0x2079, 0x0200, 0x0010, 0x2079, 0x0100, 0xa18c, 0x000f, -+ 0x7804, 0xa084, 0xfff0, 0xa105, 0x7806, 0x00fe, 0x001e, 0x080c, -+ 0x286a, 0x0005, 0xd3fc, 0x1168, 0x0006, 0x2001, 0xb342, 0x2004, -+ 0xd0ec, 0x000e, 0x0118, 0x2011, 0x0101, 0x0028, 0x2011, 0x0201, -+ 0x0010, 0x2011, 0x0101, 0x20a9, 0x0009, 0x810b, 0x1f04, 0x2745, -+ 0xa18c, 0x0e00, 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, 0x0005, -+ 0x2019, 0x0002, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x0120, 0x8319, -+ 0x2009, 0x0101, 0x0010, 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, -+ 0x1f04, 0x275f, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, -+ 0x200a, 0x8319, 0x0118, 0x2009, 0x0201, 0x0c78, 0x0005, 0xd3fc, -+ 0x1168, 0x0006, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, -+ 0x2011, 0x0101, 0x0028, 0x2011, 0x0201, 0x0010, 0x2011, 0x0101, -+ 0x20a9, 0x000c, 0x810b, 0x1f04, 0x2782, 0xa18c, 0xf000, 0x2204, -+ 0xa084, 0x0fff, 0xa105, 0x2012, 0x0005, 0xd3fc, 0x1168, 0x0006, -+ 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0x2011, 0x0102, -+ 0x0028, 0x2011, 0x0202, 0x0010, 0x2011, 0x0102, 0x2204, 0xa084, -+ 0xf0cf, 0xa105, 0x2012, 0x0005, 0x00c6, 0xd1bc, 0x1168, 0x0006, -+ 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0x2061, 0x0100, -+ 0x0028, 0x2061, 0x0200, 0x0010, 0x2061, 0x0100, 0xc1bc, 0x8103, -+ 0x8003, 0xa080, 0x0020, 0x609a, 0x62ac, 0x63ac, 0x00ce, 0x0005, -+ 0x00c6, 0xd1bc, 0x1168, 0x0006, 0x2001, 0xb342, 0x2004, 0xd0ec, -+ 0x000e, 0x0118, 0x2061, 0x0100, 0x0028, 0x2061, 0x0200, 0x0010, -+ 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0022, 0x609a, -+ 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x00ce, 0x0005, 0x00c6, 0xd1bc, -+ 0x1168, 0x0006, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, -+ 0x2061, 0x0100, 0x0028, 0x2061, 0x0200, 0x0010, 0x2061, 0x0100, -+ 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0020, 0x609a, 0x60a4, 0x62ae, -+ 0x2010, 0x60a4, 0x63ae, 0x2018, 0x00ce, 0x0005, 0x2091, 0x8000, -+ 0x00c6, 0x00e6, 0x6818, 0xa005, 0x0904, 0x284e, 0xd1fc, 0x1118, -+ 0x2061, 0xfb00, 0x0010, 0x2061, 0xfc10, 0x080c, 0x2856, 0x0538, -+ 0x20a9, 0x0101, 0xd1fc, 0x1118, 0x2061, 0xfa00, 0x0010, 0x2061, -+ 0xfb10, 0x00c6, 0x04d9, 0x0128, 0x00ce, 0x8c60, 0x1f04, 0x2819, -+ 0x0468, 0x000e, 0xd1fc, 0x1128, 0x2071, 0xb380, 0xa082, 0xfa00, -+ 0x0020, 0x2071, 0xb3c0, 0xa082, 0xfb10, 0x707e, 0x717a, 0x2001, -+ 0x0004, 0x706a, 0x7087, 0x000f, 0x080c, 0x2601, 0x00a0, 0x60d0, -+ 0xa005, 0x11a0, 0xd1fc, 0x1118, 0x2071, 0xb380, 0x0010, 0x2071, -+ 0xb3c0, 0x717a, 0x2c00, 0x7082, 0x2001, 0x0006, 0x706a, 0x7087, -+ 0x000f, 0x080c, 0x2601, 0x2001, 0x0000, 0x0010, 0x2001, 0x0001, -+ 0x2091, 0x8001, 0xa005, 0x00ee, 0x00ce, 0x0005, 0x2c04, 0xa005, -+ 0x0170, 0x2060, 0x6010, 0xa306, 0x1140, 0x600c, 0xa206, 0x1128, -+ 0x6014, 0xa106, 0x1110, 0xa006, 0x0020, 0x6000, 0x0c80, 0xa085, -+ 0x0001, 0x0005, 0x00f6, 0x00e6, 0x0016, 0xd1bc, 0x1178, 0x2079, -+ 0xb380, 0x0006, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, -+ 0x2071, 0x0100, 0x0038, 0x2071, 0x0200, 0x0020, 0x2079, 0xb3c0, -+ 0x2071, 0x0100, 0x791c, 0xa18c, 0x000f, 0x70ec, 0xa084, 0x0100, -+ 0x000e, 0x0160, 0x810b, 0x810b, 0x810b, 0x810b, 0xd0bc, 0x1118, -+ 0xa18d, 0x0f00, 0x0010, 0xa18d, 0x0800, 0x2104, 0x00ee, 0x00fe, -+ 0x0005, 0x2001, 0xb341, 0x2004, 0xd0ac, 0x1140, 0x68e4, 0xa08c, -+ 0x0020, 0x0120, 0xa084, 0x0006, 0x1108, 0x0009, 0x0005, 0x6014, -+ 0x00e6, 0x0036, 0x2018, 0x2071, 0xb900, 0xd0fc, 0x1110, 0x2071, -+ 0xb800, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0x8003, -+ 0xae70, 0x7004, 0xa084, 0x000a, 0x1904, 0x292d, 0x7108, 0xa194, -+ 0xff00, 0x0904, 0x292d, 0xa18c, 0x00ff, 0x701c, 0xa084, 0xff00, -+ 0x01c0, 0x7004, 0xa085, 0x003a, 0x7006, 0x2001, 0x0009, 0xa102, -+ 0x16d8, 0x2001, 0x000a, 0xa102, 0x16d0, 0x2001, 0x000c, 0xa102, -+ 0x16c8, 0x701c, 0xa084, 0x00ff, 0x701e, 0x7004, 0xa084, 0xffdf, -+ 0x7006, 0x2001, 0x000a, 0xa106, 0x01a8, 0x2001, 0x000c, 0xa106, -+ 0x01a0, 0x2001, 0x0012, 0xa106, 0x0198, 0x2001, 0x0014, 0xa106, -+ 0x0190, 0x2001, 0x0019, 0xa106, 0x0188, 0x2001, 0x0032, 0xa106, -+ 0x0180, 0x00d8, 0x2009, 0x000c, 0x00c8, 0x2009, 0x0012, 0x00b0, -+ 0x2009, 0x0014, 0x0098, 0x2009, 0x0019, 0x0080, 0x2009, 0x0020, -+ 0x0068, 0x2009, 0x003f, 0x0050, 0x2009, 0x000a, 0x0038, 0x2009, -+ 0x000c, 0x0020, 0x2009, 0x0019, 0x0008, 0xa016, 0x2100, 0xa205, -+ 0x700a, 0x7004, 0xa085, 0x000a, 0x7006, 0x2071, 0xb340, 0x7004, -+ 0xd0bc, 0x0158, 0xd3fc, 0x1120, 0x73ea, 0x2071, 0xb380, 0x0018, -+ 0x73ee, 0x2071, 0xb3c0, 0x701b, 0x800f, 0x003e, 0x00ee, 0x0005, -+ 0x2001, 0x01ff, 0x2004, 0xd0fc, 0x11d0, 0x2001, 0x04fd, 0x2004, -+ 0xa082, 0x0005, 0x12a0, 0x2071, 0x0200, 0x71ec, 0xa18c, 0x1c00, -+ 0x810f, 0x810c, 0x810c, 0x2079, 0x0100, 0x78ec, 0xa084, 0x1c00, -+ 0x8007, 0x8004, 0x8004, 0xa105, 0xa08a, 0x0007, 0x0208, 0x0005, -+ 0x0002, 0x297e, 0x2965, 0x297e, 0x2965, 0x2958, 0x2972, 0x2958, -+ 0x7008, 0xa084, 0xc3ff, 0xa085, 0x3000, 0x700a, 0x7808, 0xa084, -+ 0xc3ff, 0xa085, 0x3000, 0x780a, 0x0005, 0x7008, 0xa084, 0xc3ff, -+ 0xa085, 0x2000, 0x700a, 0x7808, 0xa084, 0xc3ff, 0xa085, 0x2000, -+ 0x780a, 0x0005, 0x7008, 0xa084, 0xc3ff, 0xa085, 0x0c00, 0x700a, -+ 0x7808, 0xa084, 0xc3ff, 0xa085, 0x0c00, 0x780a, 0x0005, 0x0e04, -+ 0x297f, 0x2091, 0x8000, 0x2071, 0x0000, 0x0006, 0x7018, 0xd084, -+ 0x1de8, 0x000e, 0x2071, 0x0010, 0x70ca, 0x000e, 0x70c6, 0x70c3, -+ 0x8002, 0x70db, 0x0b0c, 0x70df, 0x0001, 0x2071, 0x0000, 0x701b, -+ 0x0001, 0x2091, 0x4080, 0x0cf8, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, -+ 0xa594, 0x003f, 0xa49c, 0x0003, 0xa484, 0x000f, 0x0002, 0x29b8, -+ 0x29b8, 0x29b8, 0x2dbc, 0x4117, 0x29b7, 0x29e0, 0x29e3, 0x29b7, -+ 0x29b7, 0x29b7, 0x29b7, 0x29b7, 0x29b7, 0x29b7, 0x29b7, 0x0839, -+ 0x8507, 0xa084, 0x003f, 0x0002, 0x29e6, 0x2dbc, 0x2fa8, 0x30d0, -+ 0x310e, 0x338a, 0x3681, 0x36f3, 0x3767, 0x3804, 0x38ee, 0x397e, -+ 0x29e0, 0x2ec1, 0x3653, 0x29dd, 0x464c, 0x466f, 0x4832, 0x483d, -+ 0x4910, 0x29dd, 0x29dd, 0x49e6, 0x49ea, 0x464a, 0x29dd, 0x478d, -+ 0x29dd, 0x44e4, 0x29e3, 0x4ad8, 0x4af6, 0x080c, 0x297f, 0x0005, -+ 0x781b, 0x0057, 0x0005, 0x781b, 0x00e1, 0x0005, 0x724a, 0xa584, -+ 0x0001, 0x1904, 0x44f6, 0x0160, 0x080c, 0x297f, 0x7003, 0x0000, -+ 0x7053, 0x0000, 0x704b, 0x0000, 0x7043, 0x0000, 0x080c, 0x40d4, -+ 0x7064, 0xa06d, 0x0140, 0x70f4, 0xa084, 0x0001, 0x7168, 0xa105, -+ 0x1110, 0x0804, 0x2b4d, 0x7068, 0xa084, 0x0007, 0x0002, 0x2a0f, -+ 0x2a87, 0x2a8f, 0x2a98, 0x2aa1, 0x2b33, 0x2aaa, 0x2a87, 0x7830, -+ 0xd0bc, 0x1968, 0x71f0, 0xd1bc, 0x1950, 0xd1b4, 0x1904, 0x2a65, -+ 0x70c0, 0xa086, 0x0001, 0x0918, 0x080c, 0x40bd, 0x1900, 0x70d0, -+ 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, 0x0090, 0x6b0c, 0x7baa, -+ 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886, 0x0001, -+ 0x0118, 0x69c0, 0x7daa, 0x79aa, 0x68c4, 0xa04d, 0x6e1c, 0x7830, -+ 0xd0bc, 0x1904, 0x29df, 0x2001, 0x0010, 0x0804, 0x2c89, 0x7064, -+ 0xa005, 0x1904, 0x29df, 0x080c, 0x40bd, 0x1904, 0x29df, 0x00c6, -+ 0x00d6, 0x70d0, 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, 0x0090, -+ 0x6b0c, 0x7baa, 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, -+ 0xa886, 0x0001, 0x0118, 0x69c0, 0x7daa, 0x79aa, 0x68c4, 0xa04d, -+ 0x6e1c, 0x2001, 0x0020, 0x0804, 0x2c89, 0x080c, 0x40a8, 0x1904, -+ 0x29df, 0x70d8, 0xa06d, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x68b4, -+ 0x785a, 0x781b, 0x0057, 0x704c, 0xc08d, 0x780a, 0x68c0, 0x703e, -+ 0x70f0, 0xc0b4, 0x70f2, 0x70d4, 0xa065, 0x68c4, 0x705e, 0x7003, -+ 0x0002, 0x2d00, 0x7052, 0xad80, 0x0009, 0x7042, 0x0005, 0x080c, -+ 0x40a8, 0x1120, 0x781b, 0x0050, 0x7003, 0x0004, 0x0005, 0x080c, -+ 0x40a8, 0x1128, 0x2011, 0x000c, 0x0419, 0x7003, 0x0004, 0x0005, -+ 0x080c, 0x40a8, 0x1128, 0x2011, 0x0006, 0x00d1, 0x7003, 0x0004, -+ 0x0005, 0x080c, 0x40a8, 0x1128, 0x2011, 0x000d, 0x0089, 0x7003, -+ 0x0004, 0x0005, 0x080c, 0x40a8, 0x1150, 0x2011, 0x0006, 0x0041, -+ 0x7080, 0x7083, 0x0000, 0x2068, 0x7052, 0x7003, 0x0001, 0x0005, -+ 0x7178, 0xc1fc, 0x8107, 0x7882, 0x789b, 0x0090, 0xa286, 0x000c, -+ 0x1120, 0x7aaa, 0x2001, 0x0001, 0x0098, 0xa18c, 0x001f, 0xa18d, -+ 0x00c0, 0x79aa, 0xa286, 0x000d, 0x0120, 0x7aaa, 0x2001, 0x0002, -+ 0x0038, 0x78ab, 0x0020, 0x717c, 0x79aa, 0x7aaa, 0x2001, 0x0004, -+ 0x789b, 0x0060, 0x78aa, 0x785b, 0x0004, 0x781b, 0x00ef, 0x080c, -+ 0x40d4, 0x7087, 0x000f, 0x70f0, 0xd0b4, 0x0168, 0xc0b4, 0x70f2, -+ 0x00c6, 0x70d4, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, -+ 0x8001, 0x601a, 0x00ce, 0x0005, 0x7010, 0xa005, 0x1138, 0x70f0, -+ 0xd0b4, 0x0128, 0x70d4, 0xac06, 0x1110, 0x0c29, 0x0005, 0x0016, -+ 0x71c0, 0xa186, 0x0001, 0x0528, 0x00d6, 0x0026, 0x2100, 0x2011, -+ 0x0001, 0xa212, 0x70d0, 0x2068, 0x6800, 0xac06, 0x0120, 0x8211, -+ 0x01b0, 0x00c9, 0x0cc8, 0x00c6, 0x2100, 0x2011, 0x0001, 0xa212, -+ 0x70d0, 0x2068, 0x6800, 0x2060, 0x6008, 0xa084, 0xfbef, 0x600a, -+ 0x8211, 0x0110, 0x0041, 0x0cb0, 0x70c3, 0x0001, 0x00ce, 0x002e, -+ 0x00de, 0x001e, 0x0005, 0xade8, 0x0005, 0x70c8, 0xad06, 0x1110, -+ 0x70c4, 0x2068, 0x0005, 0x080c, 0x40a8, 0x1904, 0x29df, 0x7080, -+ 0x2068, 0x7778, 0x080c, 0x3fb3, 0x2c50, 0x080c, 0x418d, 0x789b, -+ 0x0090, 0x6814, 0xa084, 0x001f, 0xc0bd, 0x78aa, 0x6e1c, 0x2041, -+ 0x0001, 0x2001, 0x0004, 0x0804, 0x2c8e, 0x080c, 0x40a8, 0x1904, -+ 0x29df, 0x789b, 0x0090, 0x7064, 0x2068, 0x6f14, 0x080c, 0x2ae3, -+ 0x080c, 0x3fb3, 0x2c50, 0x080c, 0x418d, 0x6824, 0xa005, 0x0130, -+ 0xa082, 0x0006, 0x0208, 0x0010, 0x6827, 0x0005, 0x6b14, 0xa39c, -+ 0x001f, 0xa39d, 0x00c0, 0x2960, 0x6000, 0x2a60, 0xa084, 0x8000, -+ 0x0118, 0xa684, 0x0001, 0x0110, 0xa39c, 0xffbf, 0x7baa, 0x2031, -+ 0x0020, 0x2041, 0x0001, 0x2001, 0x0003, 0x0804, 0x2c8e, 0xc28d, -+ 0x72f2, 0x72dc, 0xa200, 0xa015, 0x7158, 0x8108, 0xa12a, 0x0208, -+ 0x71dc, 0x2164, 0x6504, 0x85ff, 0x1190, 0x715a, 0x8421, 0x1da8, -+ 0x70f0, 0xd08c, 0x0128, 0x70ec, 0xa005, 0x1110, 0x70ef, 0x000a, -+ 0x7048, 0xa005, 0x0904, 0x44f6, 0x0005, 0x2200, 0x0c70, 0x70f0, -+ 0xc08c, 0x70f2, 0x70ef, 0x0000, 0x6034, 0xa005, 0x1db0, 0x6708, -+ 0xa784, 0x073f, 0x01a8, 0xd7d4, 0x1d80, 0xa784, 0x0021, 0x1d68, -+ 0xd78c, 0x0120, 0xd794, 0x0d48, 0xc794, 0x670a, 0xa784, 0x0218, -+ 0x1d20, 0xd7c4, 0x0128, 0x6018, 0xa005, 0x19f8, 0xc7c4, 0x670a, -+ 0x2568, 0x6823, 0x0000, 0x6e1c, 0xa684, 0x000e, 0x6318, 0x0128, -+ 0x601c, 0xa302, 0x0220, 0x0118, 0x0880, 0x83ff, 0x1970, 0x2d58, -+ 0x2c50, 0x715a, 0x68d3, 0x0000, 0xd7bc, 0x1118, 0x7024, 0x6022, -+ 0x603a, 0xc7bc, 0x670a, 0x68c4, 0xa065, 0xa04d, 0x6100, 0x2a60, -+ 0x2041, 0x0001, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0xd1fc, -+ 0x0110, 0xd684, 0x0110, 0xa39c, 0xffbf, 0xd6a4, 0x0110, 0xa39d, -+ 0x0020, 0xa684, 0x000e, 0x1904, 0x2c39, 0xc7a5, 0x670a, 0x2c00, -+ 0x68ca, 0x77c0, 0xa786, 0x0001, 0x11a8, 0x70f0, 0xd0b4, 0x1190, -+ 0x7000, 0xa082, 0x0001, 0x1270, 0x7010, 0xa005, 0x1158, 0x080c, -+ 0x40bd, 0x1140, 0x7830, 0xd0bc, 0x1128, 0x789b, 0x0090, 0x7baa, -+ 0x0804, 0x2c87, 0x8739, 0x77c2, 0x2750, 0x77cc, 0xa7b0, 0x0005, -+ 0x70c8, 0xa606, 0x1108, 0x76c4, 0x76ce, 0x2c3a, 0x8738, 0x2d3a, -+ 0x8738, 0x283a, 0x8738, 0x233a, 0x8738, 0x253a, 0x7830, 0xd0bc, -+ 0x0140, 0x2091, 0x303d, 0x70f0, 0xa084, 0x303d, 0x2091, 0x8000, -+ 0x2090, 0xaad5, 0x0000, 0x0120, 0x8421, 0x2200, 0x1904, 0x2b84, -+ 0x0005, 0xd1dc, 0x0904, 0x3c0a, 0x2029, 0x0020, 0xd69c, 0x1120, -+ 0x8528, 0xd68c, 0x1108, 0x8528, 0x8840, 0x6f14, 0x610c, 0x8108, -+ 0xa18c, 0x00ff, 0x70e8, 0xa160, 0x2c64, 0x8cff, 0x0180, 0x6014, -+ 0xa706, 0x1dd0, 0x60bc, 0x8001, 0x60be, 0x1d88, 0x2a60, 0x6008, -+ 0xc0c5, 0x600a, 0x2200, 0x8421, 0x1904, 0x2b84, 0x0005, 0x2a60, -+ 0x610e, 0x69c2, 0x2c00, 0x68ca, 0x8840, 0x6008, 0xc0d5, 0x600a, -+ 0x77c0, 0xa786, 0x0001, 0x1904, 0x2c12, 0x70f0, 0xd0b4, 0x1904, -+ 0x2c12, 0x7000, 0xa082, 0x0001, 0x1a04, 0x2c12, 0x7010, 0xa005, -+ 0x1904, 0x2c12, 0x080c, 0x40bd, 0x1904, 0x2c12, 0x7830, 0xd0bc, -+ 0x1904, 0x2c12, 0x789b, 0x0090, 0x7baa, 0x7daa, 0x79aa, 0x2001, -+ 0x0002, 0x0006, 0x6018, 0x8000, 0x601a, 0x0008, 0x0006, 0x2960, -+ 0x6104, 0x2a60, 0x080c, 0x41d0, 0x1560, 0xa184, 0x0018, 0x0178, -+ 0xa184, 0x0010, 0x0118, 0x080c, 0x3dc6, 0x1518, 0xd19c, 0x0138, -+ 0x69a0, 0xa184, 0x0600, 0x1118, 0x080c, 0x3cd1, 0x00d0, 0x69a0, -+ 0xa184, 0x1e00, 0x01f8, 0xd1dc, 0x0168, 0x00c6, 0x2960, 0x6000, -+ 0xc0ed, 0x6002, 0x6104, 0xc1a5, 0x6106, 0x00ce, 0x080c, 0x3dc6, -+ 0x1140, 0x69a0, 0xd1cc, 0x0118, 0x080c, 0x3d18, 0x0010, 0xd1d4, -+ 0x1d18, 0x69a0, 0xd1e4, 0x0130, 0x6914, 0xa18c, 0xff00, 0x810f, -+ 0x080c, 0x27c0, 0x002e, 0xa68c, 0x00e0, 0xa684, 0x0060, 0x0120, -+ 0xa086, 0x0060, 0x1108, 0xc1f5, 0xa18d, 0x0104, 0x69b6, 0x789b, -+ 0x0060, 0x2800, 0x78aa, 0x6818, 0xc0fd, 0x681a, 0xd6bc, 0x0168, -+ 0xc0fc, 0x708b, 0x0000, 0xa08a, 0x000d, 0x0328, 0xa08a, 0x000c, -+ 0x718a, 0x2001, 0x000c, 0x800c, 0x718e, 0x78aa, 0x3518, 0x3340, -+ 0x3428, 0x80ac, 0xaf80, 0x002b, 0x20a0, 0x789b, 0x0000, 0xad80, -+ 0x000b, 0x2098, 0x53a6, 0x23a8, 0x2898, 0x25a0, 0xa286, 0x0020, -+ 0x11e0, 0x70f0, 0xc0b5, 0x70f2, 0x2c00, 0x70d6, 0x2d00, 0x70da, -+ 0xa286, 0x0002, 0x05d8, 0x70c0, 0x8000, 0x70c2, 0x74d0, 0xa498, -+ 0x0005, 0x70c8, 0xa306, 0x1108, 0x73c4, 0x73d2, 0xa286, 0x0010, -+ 0x0904, 0x29df, 0x00de, 0x00ce, 0x0005, 0x7000, 0xa005, 0x1d08, -+ 0xa286, 0x0002, 0x15d0, 0x080c, 0x40a8, 0x19d8, 0x6814, 0xc0fc, -+ 0x8007, 0x7882, 0x68b4, 0x785a, 0x781b, 0x0057, 0x704c, 0xc08d, -+ 0x780a, 0x0126, 0x00d6, 0x00c6, 0x70f0, 0xa084, 0x2e00, 0x2090, -+ 0x00ce, 0x00de, 0x012e, 0x2900, 0x705e, 0x68c0, 0x703e, 0x7003, -+ 0x0002, 0x2d00, 0x7052, 0xad80, 0x0009, 0x7042, 0x7830, 0xd0bc, -+ 0x0140, 0x2091, 0x303d, 0x70f0, 0xa084, 0x303d, 0x2091, 0x8000, -+ 0x2090, 0x70c0, 0xa005, 0x1108, 0x0005, 0x8421, 0x0de8, 0x7254, -+ 0x70dc, 0xa200, 0xa015, 0x0804, 0x2b84, 0xa286, 0x0010, 0x1530, -+ 0x080c, 0x40a8, 0x1904, 0x2d01, 0x6814, 0xc0fc, 0x8007, 0x7882, -+ 0x68b4, 0x785a, 0x781b, 0x0057, 0x704c, 0xc08d, 0x780a, 0x70c0, -+ 0x8000, 0x70c2, 0x74d0, 0xa490, 0x0005, 0x70c8, 0xa206, 0x1108, -+ 0x72c4, 0x72d2, 0x2900, 0x705e, 0x68c0, 0x703e, 0x7003, 0x0002, -+ 0x2d00, 0x7052, 0xad80, 0x0009, 0x7042, 0x0005, 0x6bb4, 0xa39d, -+ 0x2000, 0x7b5a, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x6b94, 0x7bd6, -+ 0x7bde, 0x6e98, 0x7ed2, 0x7eda, 0x781b, 0x0057, 0x2900, 0x705e, -+ 0x7202, 0x704c, 0xc08d, 0x780a, 0x7200, 0x2300, 0xa605, 0x0170, -+ 0x70f0, 0xa084, 0x2e00, 0xa086, 0x2600, 0x1118, 0x2009, 0x0000, -+ 0x0010, 0x2009, 0x0001, 0xa284, 0x000f, 0x0023, 0xad80, 0x0009, -+ 0x7042, 0x0005, 0x2dba, 0x55dc, 0x55dc, 0x55ca, 0x55dc, 0x2dba, -+ 0x2dba, 0x2dba, 0x080c, 0x297f, 0x080c, 0x40a8, 0x7808, 0xa084, -+ 0xfffc, 0x780a, 0x00f6, 0x2079, 0xb340, 0x78ac, 0x00fe, 0xd084, -+ 0x01b8, 0x7068, 0xa086, 0x0001, 0x1110, 0x0804, 0x2e97, 0x7068, -+ 0xa086, 0x0005, 0x1158, 0x7080, 0x2068, 0x681b, 0x0004, 0x6817, -+ 0x0000, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, 0x706b, 0x0000, -+ 0x70c3, 0x0000, 0x70c4, 0x70ce, 0x70d2, 0x70f4, 0xc084, 0x70f6, -+ 0x080c, 0x2ae3, 0x2011, 0x0004, 0x7168, 0xa186, 0x0001, 0x0160, -+ 0xa186, 0x0007, 0x1118, 0x701b, 0x0005, 0x0030, 0x701b, 0x0001, -+ 0x70f0, 0xc0c5, 0x70f2, 0x0000, 0x2001, 0xb348, 0x203c, 0xd7fc, -+ 0x1120, 0xae86, 0xb380, 0x0120, 0x0040, 0xae86, 0xb3c0, 0x1128, -+ 0xa784, 0x00ff, 0xa086, 0x0018, 0x0130, 0x7014, 0x7012, 0xa005, -+ 0x1110, 0x70c3, 0x0001, 0x0066, 0x080c, 0x52e3, 0x0156, 0x20a9, -+ 0x0010, 0x2039, 0x0000, 0x080c, 0x3ec6, 0xa7b8, 0x0100, 0x1f04, -+ 0x2e1b, 0x015e, 0x006e, 0x7000, 0x0002, 0x2e57, 0x2e35, 0x2e35, -+ 0x2e2d, 0x2e57, 0x2e57, 0x2e57, 0x2e57, 0x7064, 0xa005, 0x0538, -+ 0xad06, 0x1118, 0x6800, 0x7066, 0x0080, 0x6820, 0xd084, 0x1148, -+ 0x6f14, 0x080c, 0x3fb3, 0x6008, 0xc0d4, 0x600a, 0x080c, 0x3be8, -+ 0x0020, 0x7060, 0x2060, 0x6800, 0x6002, 0xa684, 0x5f00, 0x681e, -+ 0x6818, 0xd0fc, 0x0108, 0x6a1a, 0x6817, 0x0000, 0x682b, 0x0000, -+ 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, 0x080c, 0x2085, 0x2011, -+ 0x0004, 0xb284, 0x0800, 0x1118, 0x2021, 0xfb00, 0x0010, 0x2021, -+ 0xfc10, 0x080c, 0x2ea4, 0xb284, 0x0800, 0x0118, 0x2021, 0xb3d9, -+ 0x0010, 0x2021, 0xb399, 0x04c1, 0x0156, 0x20a9, 0x0101, 0xb284, -+ 0x0800, 0x1118, 0x2021, 0xfa00, 0x0010, 0x2021, 0xfb10, 0x0461, -+ 0x8420, 0x1f04, 0x2e77, 0xb284, 0x0600, 0x0118, 0x2061, 0xba00, -+ 0x0010, 0x2061, 0xda00, 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, -+ 0x6110, 0x81ff, 0x0118, 0xa102, 0x0308, 0x6012, 0x601b, 0x0000, -+ 0xace0, 0x0010, 0x1f04, 0x2e87, 0x8421, 0x1d78, 0x015e, 0x7090, -+ 0xa084, 0x8000, 0x0110, 0x080c, 0x4312, 0x706b, 0x0000, 0x7003, -+ 0x0000, 0x7053, 0x0000, 0x0005, 0x0046, 0x2404, 0xa005, 0x01a8, -+ 0x2068, 0x6800, 0x0006, 0x6a1a, 0x6817, 0x0000, 0x682b, 0x0000, -+ 0x68b4, 0xa084, 0x5f00, 0x681e, 0x6820, 0xa084, 0x00ff, 0xc09d, -+ 0x6822, 0x080c, 0x2085, 0x000e, 0x0c48, 0x004e, 0x2023, 0x0000, -+ 0x0005, 0xa282, 0x0003, 0x0310, 0x080c, 0x297f, 0x2300, 0x0002, -+ 0x2ecb, 0x2f45, 0x2f5f, 0xa282, 0x0002, 0x0110, 0x080c, 0x297f, -+ 0x7068, 0x706b, 0x0000, 0x7087, 0x0000, 0x000a, 0x0002, 0x2edf, -+ 0x2edf, 0x2ee1, 0x2f19, 0x3c14, 0x2edf, 0x2f19, 0x2edf, 0x080c, -+ 0x297f, 0x7778, 0x080c, 0x3ec6, 0x7778, 0xa7bc, 0x8f00, 0x080c, -+ 0x3fb3, 0x6018, 0xa005, 0x0528, 0xd7fc, 0x1118, 0x2021, 0xfb00, -+ 0x0010, 0x2021, 0xfc10, 0x2009, 0x0005, 0x2011, 0x0010, 0x080c, -+ 0x2f79, 0x01b8, 0x0156, 0x20a9, 0x0101, 0xd7fc, 0x1118, 0x2021, -+ 0xfa00, 0x0010, 0x2021, 0xfb10, 0x0046, 0x2009, 0x0005, 0x2011, -+ 0x0010, 0x080c, 0x2f79, 0x004e, 0x0118, 0x8420, 0x1f04, 0x2f04, -+ 0x015e, 0x8738, 0xa784, 0x001f, 0x1990, 0x0804, 0x29ee, 0x0804, -+ 0x29ee, 0x7778, 0x080c, 0x3fb3, 0x6018, 0xa005, 0x0520, 0xd7fc, -+ 0x1118, 0x2021, 0xfb00, 0x0010, 0x2021, 0xfc10, 0x2009, 0x0005, -+ 0x2011, 0x0020, 0x080c, 0x2f79, 0x01b0, 0x0156, 0x20a9, 0x0101, -+ 0xd7fc, 0x1118, 0x2021, 0xfa00, 0x0010, 0x2021, 0xfb10, 0x0046, -+ 0x2009, 0x0005, 0x2011, 0x0020, 0x04e1, 0x004e, 0x0118, 0x8420, -+ 0x1f04, 0x2f37, 0x015e, 0x0804, 0x29ee, 0x2200, 0x0002, 0x2f4a, -+ 0x2f4c, 0x2f4c, 0x080c, 0x297f, 0x2009, 0x0012, 0x7068, 0xa086, -+ 0x0002, 0x0110, 0x2009, 0x000e, 0x6818, 0xd0fc, 0x0108, 0x691a, -+ 0x706b, 0x0000, 0x70f0, 0xc0c5, 0x70f2, 0x0804, 0x404b, 0x2200, -+ 0x0002, 0x2f66, 0x2f4c, 0x2f64, 0x080c, 0x297f, 0x080c, 0x52e3, -+ 0x7000, 0xa086, 0x0002, 0x1904, 0x3b9e, 0x080c, 0x3bfa, 0x6008, -+ 0xa084, 0xfbef, 0x600a, 0x080c, 0x3b90, 0x0904, 0x3b9e, 0x0804, -+ 0x29ee, 0x2404, 0xa005, 0x0548, 0x2068, 0x2d04, 0x0006, 0x6814, -+ 0xa706, 0x0118, 0x2d20, 0x000e, 0x0ca8, 0x000e, 0x2022, 0x6817, -+ 0x0000, 0x682b, 0x0000, 0x68b4, 0xa084, 0x5f00, 0x681e, 0x691a, -+ 0x6820, 0xa084, 0x00ff, 0xa205, 0x6822, 0x682b, 0x0000, 0x080c, -+ 0x2085, 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, 0xf9ef, 0x600a, -+ 0x080c, 0x2aff, 0x080c, 0x3bfa, 0x0005, 0xa085, 0x0001, 0x0ce0, -+ 0x2300, 0x0002, 0x2faf, 0x2fad, 0x3057, 0x080c, 0x297f, 0x78ec, -+ 0xa084, 0x0001, 0x1170, 0x7000, 0xa086, 0x0004, 0x1110, 0x0804, -+ 0x3006, 0x080c, 0x3bfa, 0x6008, 0xa084, 0xf9ef, 0x600a, 0x0804, -+ 0x3b9e, 0x78e4, 0xa005, 0x1b04, 0x3006, 0x3208, 0x0006, 0x2001, -+ 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0xa18c, 0x0600, 0x0010, -+ 0xa18c, 0x0800, 0x0118, 0x0104, 0x29df, 0x0010, 0x0304, 0x29df, -+ 0x2008, 0xa084, 0x0030, 0x1118, 0x781b, 0x0057, 0x0005, 0x78ec, -+ 0xa084, 0x0003, 0x0dc8, 0x7884, 0xd0fc, 0x1118, 0xa184, 0x0007, -+ 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, 0x1118, 0x2001, 0x0000, -+ 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, 0x0118, 0xa184, 0x0007, -+ 0x0010, 0x2001, 0x0001, 0x0002, 0x3036, 0x303f, 0x302a, 0x3004, -+ 0x409e, 0x409e, 0x3004, 0x304b, 0x080c, 0x297f, 0x7000, 0xa086, -+ 0x0004, 0x1190, 0x7068, 0xa086, 0x0002, 0x1130, 0x2011, 0x0002, -+ 0x2019, 0x0000, 0x0804, 0x2ec1, 0x7068, 0xa086, 0x0006, 0x0db0, -+ 0x7068, 0xa086, 0x0004, 0x0d90, 0x79e4, 0xa184, 0x0030, 0x0120, -+ 0x78ec, 0xa084, 0x0003, 0x1110, 0x0804, 0x3653, 0x2001, 0x0003, -+ 0x0804, 0x339b, 0x6818, 0xd0fc, 0x0110, 0x681b, 0x001d, 0x080c, -+ 0x3eaa, 0x782b, 0x3008, 0x781b, 0x005d, 0x0005, 0x6818, 0xd0fc, -+ 0x0110, 0x681b, 0x001d, 0x080c, 0x3eaa, 0x0804, 0x4073, 0x6818, -+ 0xd0fc, 0x0110, 0x681b, 0x001d, 0x080c, 0x3eaa, 0x782b, 0x3008, -+ 0x781b, 0x00dd, 0x0005, 0x6818, 0xd0fc, 0x0110, 0x681b, 0x001d, -+ 0x080c, 0x3eaa, 0x782b, 0x3008, 0x781b, 0x00a4, 0x0005, 0xa584, -+ 0x000f, 0x11c0, 0x7000, 0x0002, 0x29ee, 0x3064, 0x3066, 0x3b9e, -+ 0x3b9e, 0x3b9e, 0x3064, 0x3064, 0x080c, 0x297f, 0x080c, 0x3bfa, -+ 0x6008, 0xa084, 0xfbef, 0x600a, 0x080c, 0x3b90, 0x0904, 0x3b9e, -+ 0x0804, 0x29ee, 0x78e4, 0xa005, 0x1b04, 0x3006, 0x3208, 0x0006, -+ 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0xa18c, 0x0600, -+ 0x0010, 0xa18c, 0x0800, 0x0118, 0x0104, 0x3006, 0x0010, 0x0304, -+ 0x3006, 0x2008, 0xa084, 0x0030, 0x1118, 0x781b, 0x0057, 0x0005, -+ 0x78ec, 0xa084, 0x0003, 0x0dc8, 0x7884, 0xd0fc, 0x1118, 0xa184, -+ 0x0007, 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, 0x1118, 0x2001, -+ 0x0000, 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, 0x0118, 0xa184, -+ 0x0007, 0x0010, 0x2001, 0x0001, 0x0002, 0x30be, 0x30c2, 0x30b7, -+ 0x30b5, 0x409e, 0x409e, 0x30b5, 0x4096, 0x080c, 0x297f, 0x080c, -+ 0x3eb0, 0x782b, 0x3008, 0x781b, 0x005d, 0x0005, 0x080c, 0x3eb0, -+ 0x0804, 0x4073, 0x080c, 0x3eb0, 0x782b, 0x3008, 0x781b, 0x00dd, -+ 0x0005, 0x080c, 0x3eb0, 0x782b, 0x3008, 0x781b, 0x00a4, 0x0005, -+ 0x2300, 0x0002, 0x30d7, 0x30d5, 0x30d9, 0x080c, 0x297f, 0x0804, -+ 0x3804, 0x681b, 0x0016, 0x78a3, 0x0000, 0x79e4, 0xa184, 0x0030, -+ 0x0904, 0x3804, 0x78ec, 0xa084, 0x0003, 0x0904, 0x3804, 0xa184, -+ 0x0100, 0x0d98, 0x7884, 0xd0fc, 0x1118, 0xa184, 0x0007, 0x0090, -+ 0xa184, 0x0007, 0xa086, 0x0004, 0x1118, 0x2001, 0x0000, 0x0050, -+ 0xa184, 0x0007, 0xa086, 0x0005, 0x0118, 0xa184, 0x0007, 0x0010, -+ 0x2001, 0x0001, 0x0002, 0x310b, 0x30c2, 0x302a, 0x404b, 0x409e, -+ 0x409e, 0x404b, 0x4096, 0x080c, 0x405b, 0x0005, 0xa282, 0x0005, -+ 0x0310, 0x080c, 0x297f, 0x7898, 0x2040, 0x2300, 0x0002, 0x311a, -+ 0x3356, 0x3362, 0x2200, 0x0002, 0x3136, 0x3123, 0x3136, 0x3121, -+ 0x3338, 0x080c, 0x297f, 0x789b, 0x0018, 0x78a8, 0x2010, 0xa084, -+ 0x00ff, 0xa082, 0x0020, 0x0a04, 0x3e69, 0xa08a, 0x0004, 0x1a04, -+ 0x3e69, 0x0002, 0x3e69, 0x3e69, 0x3e69, 0x3e1d, 0x789b, 0x0018, -+ 0x79a8, 0xa184, 0x0080, 0x0148, 0x0804, 0x3e69, 0x7000, 0xa005, -+ 0x1dd8, 0x2011, 0x0004, 0x0804, 0x398f, 0xa184, 0x00ff, 0xa08a, -+ 0x0010, 0x1a04, 0x3e69, 0x0002, 0x315e, 0x315c, 0x3171, 0x3175, -+ 0x3234, 0x3e69, 0x3e69, 0x3236, 0x3e69, 0x3e69, 0x3334, 0x3334, -+ 0x3e69, 0x3e69, 0x3e69, 0x3336, 0x080c, 0x297f, 0xa684, 0x1000, -+ 0x0140, 0x2001, 0x0500, 0x8000, 0x8000, 0x783a, 0x781b, 0x009d, -+ 0x0005, 0x6818, 0xd0fc, 0x0118, 0x681b, 0x001d, 0x0c90, 0x0804, -+ 0x404b, 0x681b, 0x001d, 0x0804, 0x3e98, 0x6920, 0x6922, 0xa684, -+ 0x1800, 0x1904, 0x31d1, 0x6820, 0xa084, 0x0001, 0x1904, 0x31d6, -+ 0x6818, 0xa086, 0x0008, 0x1110, 0x681b, 0x0000, 0xd6d4, 0x0904, -+ 0x3231, 0xd6bc, 0x05a0, 0x708b, 0x0000, 0x6818, 0xa084, 0x003f, -+ 0xa08a, 0x000d, 0x0760, 0xa08a, 0x000c, 0x718a, 0x2001, 0x000c, -+ 0x800c, 0x718e, 0x789b, 0x0061, 0x78aa, 0x0156, 0x0136, 0x0146, -+ 0x0016, 0xb28c, 0x0600, 0x0168, 0x0006, 0x2001, 0xb342, 0x2004, -+ 0xd0ec, 0x000e, 0x0118, 0x20a1, 0x012b, 0x0028, 0x20a1, 0x022b, -+ 0x0010, 0x20a1, 0x012b, 0x001e, 0x789b, 0x0000, 0x8000, 0x80ac, -+ 0xad80, 0x000b, 0x2098, 0x53a6, 0x014e, 0x013e, 0x015e, 0x6038, -+ 0xa005, 0x1150, 0x681c, 0xa084, 0x000e, 0x0904, 0x3e98, 0x080c, -+ 0x3eb3, 0x782b, 0x3008, 0x0010, 0x8001, 0x603a, 0x781b, 0x005f, -+ 0x0005, 0xd6e4, 0x0118, 0x781b, 0x006c, 0x0005, 0xa684, 0x0060, -+ 0x0904, 0x322e, 0xd6dc, 0x0904, 0x322e, 0xd6fc, 0x1108, 0x00a0, -+ 0xc6fc, 0x7e5a, 0x6eb6, 0x7adc, 0x79d8, 0x78d0, 0x8007, 0xa084, -+ 0x007f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, -+ 0x6b94, 0x2200, 0xa303, 0x68ae, 0xd6f4, 0x0118, 0xc6f4, 0x7e5a, -+ 0x6eb6, 0x7000, 0xa086, 0x0003, 0x1148, 0x0006, 0x080c, 0x52e3, -+ 0x080c, 0x55dc, 0x000e, 0x781b, 0x006b, 0x0005, 0xa006, 0x080c, -+ 0x56fb, 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0120, -+ 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x7cda, 0x6ba6, -+ 0x7bd6, 0x7bde, 0x2300, 0xa405, 0x1130, 0xc6f5, 0x7e5a, 0x6eb6, -+ 0x781b, 0x006b, 0x0005, 0x781b, 0x006b, 0x2200, 0xa115, 0x1118, -+ 0x080c, 0x55dc, 0x0005, 0x080c, 0x5622, 0x0005, 0x781b, 0x006c, -+ 0x0005, 0x781b, 0x005f, 0x0005, 0x080c, 0x297f, 0x0804, 0x32cc, -+ 0x00c6, 0x705c, 0x2060, 0x6920, 0xa18c, 0xecff, 0x6922, 0x6000, -+ 0xa084, 0xcfdf, 0x6002, 0x080c, 0x3d32, 0xa006, 0x2040, 0x2038, -+ 0x080c, 0x3de9, 0x0804, 0x32c0, 0x00c6, 0x705c, 0x2060, 0x2c48, -+ 0x7aa8, 0xa294, 0x00ff, 0xa286, 0x0004, 0x11e8, 0x6920, 0xd1e4, -+ 0x1180, 0x2039, 0x0000, 0x2041, 0x0000, 0x2031, 0x0000, 0xa006, -+ 0x2010, 0x080c, 0x3d35, 0x2029, 0x0000, 0x080c, 0x3de9, 0x0804, -+ 0x32c0, 0xa18c, 0xecff, 0x6922, 0x6104, 0xa18c, 0xffdd, 0x6106, -+ 0x6000, 0xc0ac, 0x6002, 0xa286, 0x0003, 0x01c0, 0x6104, 0xa184, -+ 0x0010, 0x0548, 0x080c, 0x3faf, 0x080c, 0x3dc6, 0x88ff, 0x0518, -+ 0x00ce, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, -+ 0xd6d4, 0x1110, 0x0804, 0x4056, 0x0804, 0x3ccc, 0x6920, 0xd1cc, -+ 0x0130, 0xa18c, 0xfdff, 0x6922, 0x6000, 0xc0ec, 0x6002, 0x2039, -+ 0x0000, 0x2041, 0x0000, 0x2031, 0x0000, 0xa006, 0x2010, 0x2029, -+ 0x0000, 0x080c, 0x3de9, 0xa286, 0x0001, 0x0158, 0x6104, 0xa184, -+ 0x0008, 0x01b0, 0x080c, 0x3faf, 0x080c, 0x3cd1, 0x88ff, 0x1980, -+ 0x0078, 0x6920, 0xd1c4, 0x0130, 0xa18c, 0xfeff, 0x6922, 0x6000, -+ 0xc0e4, 0x6002, 0x2031, 0x0000, 0xa006, 0x2010, 0x080c, 0x3d35, -+ 0x00ce, 0x7e58, 0xd6d4, 0x1118, 0x781b, 0x005f, 0x0005, 0x781b, -+ 0x006c, 0x0005, 0x0804, 0x3e92, 0x2808, 0x789b, 0x0090, 0x2019, -+ 0x0090, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, 0x11b8, 0x2300, -+ 0xa102, 0xa086, 0x0001, 0x0904, 0x3238, 0x7ca8, 0xa4a4, 0x00ff, -+ 0xa480, 0x0002, 0xa300, 0x2018, 0xa102, 0x0a04, 0x324c, 0x0904, -+ 0x324c, 0x24a8, 0x7aa8, 0x1f04, 0x32ea, 0x0c18, 0xa284, 0x00f0, -+ 0xa082, 0x0020, 0x06a8, 0x2200, 0xa082, 0x0021, 0x1688, 0x7aa8, -+ 0x8318, 0x8318, 0x2100, 0xa302, 0x0aa0, 0xa286, 0x0023, 0x0950, -+ 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58, 0xa684, 0xfff1, 0xc0a5, -+ 0x2030, 0x7e5a, 0x6008, 0xc0a5, 0x600a, 0x78a0, 0x8001, 0x0904, -+ 0x32c0, 0x20a8, 0x7998, 0x789b, 0x0060, 0x78aa, 0x2011, 0x0090, -+ 0x799a, 0x78a8, 0x7998, 0x7a9a, 0x78aa, 0x7a98, 0x1f04, 0x3318, -+ 0xc695, 0x7e5a, 0xd6d4, 0x1110, 0x0804, 0x4056, 0x0804, 0x3ccc, -+ 0x8318, 0x2100, 0xa302, 0x0a04, 0x32d1, 0xa284, 0x0080, 0x1904, -+ 0x3e98, 0x78a0, 0xa005, 0x08d8, 0x0804, 0x3e98, 0x0804, 0x3e69, -+ 0x705c, 0xa04d, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa08e, -+ 0x0001, 0x0110, 0x080c, 0x297f, 0x7aa8, 0xa294, 0x00ff, 0x784b, -+ 0x0008, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0005, 0x1a04, 0x3e69, -+ 0x0002, 0x3e69, 0x3c48, 0x3e69, 0x3d77, 0x4218, 0xa282, 0x0000, -+ 0x1110, 0x080c, 0x297f, 0x080c, 0x3eaa, 0x782b, 0x3008, 0x781b, -+ 0x006c, 0x0005, 0xa282, 0x0003, 0x1110, 0x080c, 0x297f, 0xd4fc, -+ 0x11d0, 0x7068, 0xa005, 0x0110, 0x080c, 0x297f, 0x6f14, 0x777a, -+ 0xa7bc, 0x8f00, 0x080c, 0x3fb3, 0x6008, 0xa085, 0x0021, 0x600a, -+ 0x8738, 0xa784, 0x001f, 0x1db0, 0x080c, 0x3ead, 0x706b, 0x0002, -+ 0x701b, 0x0009, 0x0010, 0x080c, 0x3eb6, 0x782b, 0x3008, 0x781b, -+ 0x006c, 0x0005, 0xa282, 0x0004, 0x0310, 0x080c, 0x297f, 0x2300, -+ 0x0002, 0x3394, 0x34a8, 0x34d4, 0xa286, 0x0003, 0x0110, 0x080c, -+ 0x297f, 0x2001, 0x0000, 0x7046, 0x68d0, 0xa005, 0x0110, 0x7003, -+ 0x0003, 0x68a0, 0xd0ec, 0x0118, 0x6008, 0xc08d, 0x600a, 0x7000, -+ 0xa084, 0x000f, 0x0002, 0x29ee, 0x33b8, 0x33b5, 0x359e, 0x363b, -+ 0x29ee, 0x33b3, 0x33b3, 0x080c, 0x297f, 0x6008, 0xc0d4, 0x600a, -+ 0xd6e4, 0x1130, 0x080c, 0x52e3, 0x2009, 0x0000, 0x0804, 0x345a, -+ 0x7868, 0xa08c, 0x00ff, 0x0588, 0xa186, 0x0008, 0x1158, 0x6008, -+ 0xc0a4, 0x600a, 0x080c, 0x3b90, 0x0540, 0x080c, 0x3bfa, 0x080c, -+ 0x52e3, 0x0060, 0xa186, 0x0028, 0x1500, 0x6018, 0xa005, 0x0d78, -+ 0x8001, 0x0d68, 0x8001, 0x0d58, 0x601e, 0x0c48, 0x6820, 0xd084, -+ 0x0904, 0x29ee, 0xc084, 0x6822, 0x080c, 0x2af4, 0x7060, 0x00c6, -+ 0x2060, 0x6800, 0x6002, 0x00ce, 0x6004, 0x6802, 0xa005, 0x2d00, -+ 0x1108, 0x6002, 0x6006, 0x0804, 0x29ee, 0x0016, 0x81ff, 0x11d8, -+ 0x71f0, 0xd1bc, 0x11c0, 0xd1b4, 0x01b0, 0x080c, 0x40a8, 0x1198, -+ 0x00d6, 0x70d8, 0xa06d, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x68b4, -+ 0x785a, 0x781b, 0x0057, 0x704c, 0xc08d, 0x780a, 0xc1b4, 0x71f2, -+ 0x7003, 0x0030, 0x00de, 0x080c, 0x34e7, 0x001e, 0x81ff, 0x0904, -+ 0x345a, 0xa684, 0x5f00, 0x681e, 0x682b, 0x0000, 0x6f14, 0xa186, -+ 0x0002, 0x15c8, 0x080c, 0x2ae3, 0x080c, 0x2aff, 0x6820, 0xa084, -+ 0x0800, 0x1588, 0x8717, 0xa294, 0x000f, 0x8213, 0x8213, 0x8213, -+ 0x8213, 0xb284, 0x0600, 0x0118, 0xa290, 0xb800, 0x0010, 0xa290, -+ 0xb900, 0xa290, 0x0000, 0x221c, 0xd3c4, 0x1108, 0x0070, 0x6820, -+ 0xd0e4, 0x0128, 0xa084, 0xefff, 0x6822, 0xc3ac, 0x2312, 0x8210, -+ 0x2204, 0xa085, 0x0038, 0x2012, 0x8211, 0xd3d4, 0x0138, 0x68a0, -+ 0xd0c4, 0x1120, 0x080c, 0x3555, 0x0804, 0x29ee, 0x6008, 0xc08d, -+ 0x600a, 0x0008, 0x692a, 0x6916, 0x6818, 0xd0fc, 0x0110, 0x7044, -+ 0x681a, 0xa68c, 0x5f00, 0x691e, 0x6010, 0xa005, 0x0120, 0x8001, -+ 0x1310, 0x080c, 0x297f, 0x6012, 0x6018, 0xa005, 0x0118, 0x8001, -+ 0x601a, 0x1118, 0x6008, 0xc0a4, 0x600a, 0x6820, 0xd084, 0x1130, -+ 0x6800, 0xa005, 0x1108, 0x6002, 0x6006, 0x0020, 0x7060, 0x2060, -+ 0x6800, 0x6002, 0x2061, 0xb340, 0x6807, 0x0103, 0x2d08, 0x206b, -+ 0x0000, 0x605c, 0x8000, 0x605e, 0x6060, 0xa005, 0x6162, 0x0110, -+ 0x2d02, 0x0008, 0x6166, 0x7000, 0xa086, 0x0030, 0x1904, 0x29ee, -+ 0x7003, 0x0002, 0x70d8, 0xa06d, 0x68c0, 0x703e, 0x70d4, 0xa065, -+ 0x68c4, 0x705e, 0x2d00, 0x7052, 0xad80, 0x0009, 0x7042, 0x0005, -+ 0xa282, 0x0004, 0x0210, 0x080c, 0x297f, 0x2200, 0x0002, 0x34ab, -+ 0x34b3, 0x34be, 0x34b3, 0x7000, 0xa086, 0x0005, 0x0120, 0x080c, -+ 0x3eaa, 0x782b, 0x3008, 0x781b, 0x006c, 0x0005, 0x7890, 0x8007, -+ 0x8001, 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, -+ 0x00ff, 0xa186, 0x0003, 0x0128, 0xa186, 0x0000, 0x0110, 0x0804, -+ 0x3e69, 0x781b, 0x006c, 0x0005, 0x6820, 0xc095, 0x6822, 0x82ff, -+ 0x1118, 0x080c, 0x3eaa, 0x0030, 0x8211, 0x0110, 0x080c, 0x297f, -+ 0x080c, 0x3eb6, 0x782b, 0x3008, 0x781b, 0x006c, 0x0005, 0xa684, -+ 0x0060, 0x1150, 0x2d00, 0xa005, 0x0904, 0x3554, 0x682f, 0x0000, -+ 0x6833, 0x0000, 0x0804, 0x3554, 0xd6dc, 0x1190, 0x68b4, 0xd0dc, -+ 0x1178, 0x6998, 0x6a94, 0x692e, 0x6a32, 0x7044, 0xa005, 0x1128, -+ 0x2200, 0xa105, 0x0120, 0x7047, 0x0015, 0x0804, 0x52e3, 0x0005, -+ 0xd6ac, 0x0508, 0xd6f4, 0x0130, 0x682f, 0x0000, 0x6833, 0x0000, -+ 0x0804, 0x52e3, 0x68b4, 0xa084, 0x4000, 0xa635, 0xd6f4, 0x1da0, -+ 0x7044, 0xa005, 0x1110, 0x7047, 0x0015, 0xd6dc, 0x1130, 0x68b4, -+ 0xd0dc, 0x0118, 0x69a8, 0x6aa4, 0x0010, 0x79d8, 0x7adc, 0x692e, -+ 0x6a32, 0x0804, 0x52e3, 0xd6f4, 0x0130, 0x682f, 0x0000, 0x6833, -+ 0x0000, 0x0804, 0x52e3, 0x68b4, 0xa084, 0x4800, 0xa635, 0xd6f4, -+ 0x1da0, 0x7044, 0xa005, 0x1110, 0x7047, 0x0015, 0x79d8, 0x7adc, -+ 0x78d0, 0x8007, 0xa084, 0x007f, 0xa108, 0xa291, 0x0000, 0x692e, -+ 0x6a32, 0x2100, 0xa205, 0x1110, 0x0804, 0x52e3, 0x7000, 0xa086, -+ 0x0006, 0x0110, 0x0804, 0x52e3, 0x0005, 0x6008, 0xc0cd, 0xd3cc, -+ 0x0108, 0xc08d, 0x600a, 0x6818, 0x68ba, 0x681b, 0x0006, 0x688f, -+ 0x0000, 0x6893, 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942, 0x682f, -+ 0x0003, 0x6833, 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, 0x689b, -+ 0x0020, 0x68b3, 0x0000, 0x68af, 0x0000, 0x7000, 0x0002, 0x29ee, -+ 0x3587, 0x3581, 0x357f, 0x357f, 0x357f, 0x357f, 0x357f, 0x080c, -+ 0x297f, 0x6820, 0xd084, 0x1118, 0x080c, 0x3be8, 0x0030, 0x7060, -+ 0x2c50, 0x2060, 0x6800, 0x6002, 0x2a60, 0xb28c, 0x0600, 0x0118, -+ 0x2021, 0xb399, 0x0010, 0x2021, 0xb3d9, 0x2404, 0xa005, 0x0110, -+ 0x2020, 0x0cd8, 0x2d22, 0x206b, 0x0000, 0x0005, 0x080c, 0x3bee, -+ 0x080c, 0x3bfa, 0x6008, 0xc0cc, 0x600a, 0x789b, 0x000e, 0x6f14, -+ 0x6817, 0x0002, 0xb28c, 0x0600, 0x0118, 0x2009, 0x0000, 0x0010, -+ 0x2009, 0x0001, 0x080c, 0x5736, 0xd6dc, 0x01c8, 0x691c, 0xc1ed, -+ 0x691e, 0x6828, 0xa082, 0x000e, 0x0290, 0x6848, 0xa084, 0x000f, -+ 0xa086, 0x000b, 0x1160, 0x685c, 0xa086, 0x0047, 0x1140, 0x2001, -+ 0xb341, 0x2004, 0xd0ac, 0x1118, 0x2700, 0x080c, 0x28a8, 0x68b8, -+ 0xd0fc, 0x1110, 0x681a, 0x0060, 0x6818, 0xd0fc, 0x0148, 0x7868, -+ 0xa08c, 0x00ff, 0x0118, 0x681b, 0x001e, 0x0010, 0x681b, 0x0000, -+ 0xb284, 0x0600, 0x1118, 0x2021, 0xb3d9, 0x0010, 0x2021, 0xb399, -+ 0x2404, 0xad06, 0x0108, 0x7460, 0x6800, 0x2022, 0x68d3, 0x0000, -+ 0x70f4, 0xc084, 0x70f6, 0x6a3c, 0x6940, 0x6a32, 0x692e, 0x68c4, -+ 0x2060, 0x6000, 0xd0a4, 0x0580, 0x2041, 0x0021, 0x2049, 0x0005, -+ 0x2051, 0x0020, 0x00d6, 0x00f6, 0x0156, 0x0146, 0x2079, 0xb340, -+ 0x080c, 0x1cd8, 0x014e, 0x015e, 0x00fe, 0x70e8, 0x2010, 0x2009, -+ 0x0101, 0x0026, 0x2204, 0xa06d, 0x0140, 0x6814, 0xa706, 0x0110, -+ 0x6800, 0x0cc8, 0x6820, 0xc0d5, 0x6822, 0x002e, 0x8210, 0x8109, -+ 0x1d80, 0x00de, 0x706b, 0x0003, 0x7083, 0x0000, 0x777a, 0x7087, -+ 0x000f, 0x71f0, 0xc1c4, 0x71f2, 0x6818, 0xa086, 0x0002, 0x1138, -+ 0x6817, 0x0000, 0x682b, 0x0000, 0x681c, 0xc0ec, 0x681e, 0x080c, -+ 0x2085, 0x0804, 0x29ee, 0x080c, 0x34e7, 0x682b, 0x0000, 0x789b, -+ 0x000e, 0x6f14, 0x080c, 0x40d9, 0xa08c, 0x00ff, 0x6916, 0x6818, -+ 0xd0fc, 0x0110, 0x7044, 0x681a, 0xa68c, 0x5f00, 0x691e, 0x706b, -+ 0x0000, 0x0804, 0x29ee, 0x7000, 0xa005, 0x1110, 0x0804, 0x29ee, -+ 0xa006, 0x080c, 0x52e3, 0x6817, 0x0000, 0x6920, 0xd1ac, 0x1110, -+ 0x681b, 0x0014, 0xa68c, 0x5f00, 0x691e, 0x682b, 0x0000, 0x6820, -+ 0xa084, 0x00ff, 0x6822, 0x7000, 0x0002, 0x29ee, 0x367a, 0x3677, -+ 0x367c, 0x367c, 0x367c, 0x3675, 0x3675, 0x080c, 0x297f, 0x6008, -+ 0xc0d4, 0x600a, 0x080c, 0x3bfa, 0x6008, 0xc0a4, 0x600a, 0x0804, -+ 0x3bb3, 0x2300, 0x0002, 0x3686, 0x3688, 0x36f1, 0x080c, 0x297f, -+ 0xd6fc, 0x1904, 0x36da, 0x7000, 0xa00d, 0x0002, 0x29ee, 0x369e, -+ 0x3698, 0x36c8, 0x369e, 0x36d1, 0x3696, 0x3696, 0x080c, 0x297f, -+ 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684, 0x0060, -+ 0x0538, 0xa086, 0x0060, 0x1510, 0xc6ac, 0xc6f4, 0xc6ed, 0x7e5a, -+ 0x6eb6, 0x681c, 0xc0ac, 0x681e, 0xa186, 0x0002, 0x0148, 0x080c, -+ 0x52e3, 0x69ac, 0x68b0, 0xa115, 0x0118, 0x080c, 0x5622, 0x0010, -+ 0x080c, 0x55dc, 0x781b, 0x006c, 0x71f0, 0xd1b4, 0x1904, 0x29df, -+ 0x70c0, 0xa086, 0x0001, 0x1904, 0x2a3f, 0x0005, 0xd6ec, 0x09f0, -+ 0x6818, 0xd0fc, 0x0130, 0x681b, 0x0015, 0xd6f4, 0x0110, 0x681b, -+ 0x0007, 0x080c, 0x405b, 0x0005, 0x78cb, 0x0000, 0x781b, 0x00d8, -+ 0x0804, 0x29df, 0xc6fc, 0x7e5a, 0x7adc, 0x79d8, 0x78d0, 0x79d2, -+ 0x8007, 0xa084, 0x007f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, -+ 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x781b, 0x006c, -+ 0x0005, 0x080c, 0x297f, 0x2300, 0x0002, 0x36f8, 0x36fa, 0x3752, -+ 0x080c, 0x297f, 0xd6fc, 0x1904, 0x3742, 0x7000, 0xa00d, 0x0002, -+ 0x29ee, 0x3710, 0x370a, 0x373a, 0x3710, 0x373f, 0x3708, 0x3708, -+ 0x080c, 0x297f, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, -+ 0xa684, 0x0060, 0x0538, 0xa086, 0x0060, 0x1510, 0xa6b4, 0xbfbf, -+ 0xc6ed, 0x7e5a, 0x6eb6, 0xa186, 0x0002, 0x0148, 0x080c, 0x52e3, -+ 0x69ac, 0x68b0, 0xa115, 0x0118, 0x080c, 0x5622, 0x0010, 0x080c, -+ 0x55dc, 0x781b, 0x006c, 0x681c, 0xc0b4, 0x681e, 0x71f0, 0xd1b4, -+ 0x1904, 0x29df, 0x70c0, 0xa086, 0x0001, 0x1904, 0x2a3f, 0x0005, -+ 0xd6ec, 0x09f0, 0x6818, 0xd0fc, 0x0110, 0x681b, 0x0007, 0x781b, -+ 0x00dd, 0x0005, 0xc6fc, 0x7e5a, 0x7adc, 0x79d8, 0x6b98, 0x2100, -+ 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x79d2, 0x781b, -+ 0x006c, 0x0005, 0xd6dc, 0x0130, 0x782b, 0x3009, 0x781b, 0x006c, -+ 0x0804, 0x29df, 0x6820, 0xc095, 0x6822, 0x080c, 0x4042, 0xc6dd, -+ 0x080c, 0x3eaa, 0x782b, 0x3008, 0x781b, 0x006c, 0x0005, 0x2300, -+ 0x0002, 0x376c, 0x376e, 0x3770, 0x080c, 0x297f, 0x0804, 0x3e98, -+ 0x7d98, 0xd6d4, 0x1904, 0x37bc, 0x79e4, 0xd1ac, 0x0130, 0x78ec, -+ 0xa084, 0x0003, 0x0110, 0x782b, 0x3009, 0x789b, 0x0060, 0x78ab, -+ 0x0000, 0xa684, 0xfffb, 0x785a, 0x7d9a, 0x79e4, 0xd1ac, 0x0120, -+ 0x78ec, 0xa084, 0x0003, 0x11b8, 0x2001, 0xb342, 0x2004, 0xd0e4, -+ 0x1170, 0x6820, 0xd0c4, 0x0158, 0x00c6, 0x705c, 0x2060, 0x6004, -+ 0xc09d, 0x6006, 0x6008, 0xa084, 0x00ff, 0x600a, 0x00ce, 0x2001, -+ 0x0014, 0x0804, 0x339b, 0x7884, 0xd0fc, 0x1118, 0xa184, 0x0007, -+ 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, 0x1118, 0x2001, 0x0000, -+ 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, 0x0118, 0xa184, 0x0007, -+ 0x0010, 0x2001, 0x0001, 0x0492, 0x7a90, 0xa294, 0x0007, 0x789b, -+ 0x0060, 0x79a8, 0x81ff, 0x0538, 0x789b, 0x0090, 0x7ba8, 0xa384, -+ 0x0001, 0x11a0, 0x7ba8, 0x7ba8, 0xa386, 0x0001, 0x1118, 0x2009, -+ 0xfff7, 0x0028, 0xa386, 0x0003, 0x1148, 0x2009, 0xffef, 0x00c6, -+ 0x705c, 0x2060, 0x6004, 0xa104, 0x6006, 0x00ce, 0x789b, 0x0060, -+ 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, -+ 0xa18c, 0xfcff, 0x6922, 0x7d9a, 0x0804, 0x404b, 0x3036, 0x303f, -+ 0x37f8, 0x37fe, 0x37f6, 0x37f6, 0x404b, 0x404b, 0x080c, 0x297f, -+ 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0804, 0x4053, 0x6920, 0xa18c, -+ 0xfcff, 0x6922, 0x0804, 0x404b, 0x79e4, 0xa184, 0x0030, 0x0120, -+ 0x78ec, 0xa084, 0x0003, 0x1548, 0x7000, 0xa086, 0x0004, 0x1190, -+ 0x7068, 0xa086, 0x0002, 0x1130, 0x2011, 0x0002, 0x2019, 0x0000, -+ 0x0804, 0x2ec1, 0x7068, 0xa086, 0x0006, 0x0db0, 0x7068, 0xa086, -+ 0x0004, 0x0d90, 0x7000, 0xa086, 0x0000, 0x0904, 0x29df, 0x6820, -+ 0xd0ac, 0x1904, 0x339b, 0x6818, 0xa08e, 0x0002, 0x0120, 0xc0fd, -+ 0x681a, 0x2001, 0x0014, 0x0804, 0x339b, 0x7884, 0xd0fc, 0x1118, -+ 0xa184, 0x0007, 0x0090, 0xa184, 0x0007, 0xa086, 0x0004, 0x1118, -+ 0x2001, 0x0000, 0x0050, 0xa184, 0x0007, 0xa086, 0x0005, 0x0118, -+ 0xa184, 0x0007, 0x0010, 0x2001, 0x0001, 0x0002, 0x404b, 0x404b, -+ 0x3856, 0x404b, 0x409e, 0x409e, 0x404b, 0x404b, 0xd6bc, 0x05d0, -+ 0x7188, 0x81ff, 0x05b8, 0xa182, 0x000d, 0x1318, 0x708b, 0x0000, -+ 0x0028, 0xa182, 0x000c, 0x708a, 0x2009, 0x000c, 0x789b, 0x0061, -+ 0x79aa, 0x0156, 0x0136, 0x0146, 0x708c, 0x8114, 0xa210, 0x728e, -+ 0xa080, 0x000b, 0xad00, 0x2098, 0x0016, 0xb28c, 0x0600, 0x0168, -+ 0x0006, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0x20a1, -+ 0x012b, 0x0028, 0x20a1, 0x022b, 0x0010, 0x20a1, 0x012b, 0x001e, -+ 0x789b, 0x0000, 0x8108, 0x81ac, 0x53a6, 0x014e, 0x013e, 0x015e, -+ 0x0804, 0x4053, 0xd6d4, 0x1904, 0x38df, 0x6820, 0xd084, 0x0904, -+ 0x4053, 0xa68c, 0x0060, 0xa684, 0x0060, 0x0120, 0xa086, 0x0060, -+ 0x1108, 0xc1f5, 0xc194, 0x795a, 0x69b6, 0x789b, 0x0060, 0x78ab, -+ 0x0000, 0x789b, 0x0061, 0x6818, 0xc0fd, 0x681a, 0x78aa, 0x8008, -+ 0x810c, 0x0904, 0x3c0f, 0xa18c, 0x00f8, 0x1904, 0x3c0f, 0x0156, -+ 0x0136, 0x0146, 0x0016, 0xb28c, 0x0600, 0x0168, 0x0006, 0x2001, -+ 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0x20a1, 0x012b, 0x0028, -+ 0x20a1, 0x022b, 0x0010, 0x20a1, 0x012b, 0x001e, 0x789b, 0x0000, -+ 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x014e, 0x013e, -+ 0x015e, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x0804, 0x4053, 0x6818, -+ 0xd0fc, 0x0110, 0x681b, 0x0008, 0x6820, 0xc0ad, 0x6822, 0x080c, -+ 0x3eb0, 0x78cb, 0x0000, 0x781b, 0x00d4, 0x0005, 0x2300, 0x0002, -+ 0x38f5, 0x397c, 0x38f3, 0x080c, 0x297f, 0x7000, 0xa084, 0x000f, -+ 0x0002, 0x29ee, 0x3939, 0x3903, 0x390a, 0x3901, 0x29ee, 0x3901, -+ 0x3901, 0x080c, 0x297f, 0x681c, 0xd0ec, 0x0198, 0x6008, 0xc08d, -+ 0x600a, 0x0078, 0x68d0, 0xa005, 0x1560, 0x6920, 0xa18d, 0x0001, -+ 0x6922, 0x68d3, 0x0001, 0x70f4, 0xc085, 0x70f6, 0x6800, 0x7066, -+ 0x0078, 0x6920, 0xc185, 0x6922, 0x6800, 0x6006, 0xa005, 0x1108, -+ 0x6002, 0x6008, 0xc0d4, 0x600a, 0x681c, 0xa084, 0x000e, 0x1140, -+ 0x2009, 0xfc10, 0xb284, 0x0600, 0x0140, 0x2009, 0xfb00, 0x0028, -+ 0x702c, 0x68be, 0x713c, 0x70e8, 0xa108, 0x2104, 0x6802, 0x2d0a, -+ 0x7162, 0x6eb6, 0xa684, 0x0060, 0x1120, 0xa684, 0x7fff, 0x68b6, -+ 0x04c8, 0xd6dc, 0x1150, 0xa684, 0x7fff, 0x68b6, 0x6894, 0x68a6, -+ 0x6898, 0x68aa, 0x080c, 0x52e3, 0x0468, 0xd6ac, 0x0168, 0x68d0, -+ 0xa005, 0x0118, 0x080c, 0x5736, 0x0010, 0x080c, 0x52e3, 0x79d8, -+ 0x7adc, 0x69aa, 0x6aa6, 0x0030, 0x080c, 0x3fc5, 0x69aa, 0x6aa6, -+ 0x080c, 0x52e3, 0xd6fc, 0x01b0, 0xa684, 0x7fff, 0x68b6, 0x7adc, -+ 0x79d8, 0xd6ac, 0x1138, 0x78d0, 0x8007, 0xa084, 0x007f, 0xa108, -+ 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, -+ 0xa303, 0x68ae, 0x0804, 0x29ee, 0x0804, 0x3e98, 0x7043, 0x0000, -+ 0xa282, 0x0006, 0x0310, 0x080c, 0x297f, 0x7000, 0xa086, 0x0007, -+ 0x090c, 0x41a1, 0x2300, 0x0002, 0x398f, 0x39c1, 0x39de, 0x2200, -+ 0x0002, 0x39bf, 0x3e98, 0x3997, 0x39bf, 0x39fe, 0x3a65, 0x7003, -+ 0x0005, 0xb284, 0x0600, 0x0118, 0x2001, 0xfe60, 0x0010, 0x2001, -+ 0xfe97, 0x2068, 0x7052, 0x0156, 0x20a9, 0x0037, 0x2003, 0x0000, -+ 0x8000, 0x1f04, 0x39a6, 0x015e, 0xad80, 0x0009, 0x7042, 0xb284, -+ 0x0600, 0x0118, 0x6817, 0x0000, 0x0010, 0x6817, 0x8000, 0x68b7, -+ 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x0804, 0x3e69, 0x080c, -+ 0x297f, 0x2200, 0xa086, 0x0003, 0x05c8, 0x7003, 0x0005, 0xb284, -+ 0x0600, 0x0118, 0x2001, 0xfe60, 0x0010, 0x2001, 0xfe97, 0x2068, -+ 0x7052, 0xad80, 0x0009, 0x7042, 0x2200, 0x0002, 0x3e98, 0x39dc, -+ 0x39dc, 0x39fe, 0x39dc, 0x3e98, 0x080c, 0x297f, 0x7003, 0x0005, -+ 0xb284, 0x0600, 0x0118, 0x2001, 0xfe60, 0x0010, 0x2001, 0xfe97, -+ 0x2068, 0x7052, 0xad80, 0x0009, 0x7042, 0x2200, 0x0002, 0x39f7, -+ 0x39f5, 0x39f5, 0x39f7, 0x39f5, 0x39f7, 0x080c, 0x297f, 0x080c, -+ 0x3eb6, 0x782b, 0x3008, 0x781b, 0x006c, 0x0005, 0x7000, 0xa086, -+ 0x0002, 0x1158, 0x70f0, 0xc0b5, 0x70f2, 0x2c00, 0x70d6, 0x2d00, -+ 0x70da, 0x0038, 0x080c, 0x52e3, 0x0020, 0x7000, 0xa086, 0x0003, -+ 0x0dc8, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, -+ 0x7ca8, 0xa484, 0x001f, 0xa215, 0x2069, 0xfb00, 0xb284, 0x0600, -+ 0x1118, 0xc2fd, 0x2069, 0xfc10, 0x2d04, 0x2d08, 0x7162, 0xa06d, -+ 0x0128, 0x6814, 0xa206, 0x0500, 0x6800, 0x0cb8, 0x7003, 0x0005, -+ 0xd2fc, 0x1118, 0x2001, 0xfe60, 0x0010, 0x2001, 0xfe97, 0x2068, -+ 0x7052, 0x0156, 0x20a9, 0x0037, 0x2003, 0x0000, 0x8000, 0x1f04, -+ 0x3a3c, 0x015e, 0xad80, 0x0009, 0x7042, 0x6a16, 0x68b7, 0x0700, -+ 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6920, 0xa184, -+ 0x0c00, 0x0904, 0x3adc, 0x7068, 0xa086, 0x0006, 0x1128, 0x7078, -+ 0xa206, 0x1110, 0x706a, 0x7082, 0x681b, 0x0005, 0xc1ad, 0xc1d4, -+ 0x6922, 0x080c, 0x3eb0, 0x0804, 0x3adc, 0x7200, 0xa286, 0x0002, -+ 0x1158, 0x70f0, 0xc0b5, 0x70f2, 0x2c00, 0x70d6, 0x2d00, 0x70da, -+ 0x0030, 0x080c, 0x52e3, 0x0018, 0xa286, 0x0003, 0x0dd0, 0x7003, -+ 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484, -+ 0x001f, 0xa215, 0xb284, 0x0600, 0x1108, 0xc2fd, 0x79a8, 0x79a8, -+ 0xa18c, 0x00ff, 0x2118, 0x70e8, 0xa168, 0x2d04, 0x2d08, 0x7162, -+ 0xa06d, 0x0128, 0x6814, 0xa206, 0x0538, 0x6800, 0x0cb8, 0x7003, -+ 0x0005, 0xb284, 0x0600, 0x0118, 0x2001, 0xfe60, 0x0010, 0x2001, -+ 0xfe97, 0x2068, 0x7052, 0x0156, 0x20a9, 0x0037, 0x2003, 0x0000, -+ 0x8000, 0x1f04, 0x3aa6, 0x015e, 0xad80, 0x0009, 0x7042, 0xb284, -+ 0x0600, 0x0110, 0xc2fc, 0x0008, 0xc2fd, 0x6a16, 0x68b7, 0x0700, -+ 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x6920, 0xa184, 0x0c00, -+ 0x01d8, 0xd0dc, 0x0178, 0x7068, 0xa086, 0x0004, 0x1140, 0x7078, -+ 0xa206, 0x1128, 0x707c, 0xa306, 0x1110, 0x706a, 0x7082, 0x080c, -+ 0x3eb3, 0x0050, 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, 0x080c, -+ 0x3eb0, 0x7083, 0x0000, 0x0000, 0x68c4, 0x705e, 0xc6ec, 0xa684, -+ 0x0060, 0x05d0, 0x6b98, 0x6c94, 0x69ac, 0x68b0, 0xa105, 0x11d0, -+ 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa684, 0x0060, 0xa086, 0x0060, -+ 0x0580, 0x68d0, 0xa005, 0x0140, 0x7003, 0x0003, 0x682b, 0x0000, -+ 0xc6ed, 0x080c, 0x55ca, 0x0428, 0xd6f4, 0x1518, 0xc6ed, 0x080c, -+ 0x55dc, 0x00f8, 0x68b0, 0xa31a, 0x2100, 0xa423, 0x2400, 0xa305, -+ 0x01d0, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68d0, 0xa005, 0x0128, -+ 0x7003, 0x0003, 0x080c, 0x55ca, 0x0070, 0xd6f4, 0x1120, 0xc6ed, -+ 0x68b0, 0x080c, 0x5622, 0xc6f4, 0x2019, 0x0000, 0x2021, 0x0000, -+ 0x0010, 0xa6b4, 0xb7ff, 0x7e5a, 0x2009, 0x006c, 0xa684, 0x0004, -+ 0x01b0, 0x78e4, 0xa084, 0x0030, 0x0150, 0x78ec, 0xa084, 0x0003, -+ 0x0130, 0x782b, 0x3008, 0x2019, 0x0000, 0x2320, 0x0040, 0x00f6, -+ 0x2079, 0xb340, 0x080c, 0x52e3, 0x00fe, 0x0904, 0x29ee, 0x791a, -+ 0x2d00, 0x7052, 0x68c8, 0x2060, 0x71f0, 0x2001, 0xb341, 0x2004, -+ 0xd0c4, 0x15c8, 0x70f8, 0xa02d, 0x01b8, 0xd1bc, 0x0548, 0x7a80, -+ 0xa294, 0x0f00, 0x70fc, 0xa206, 0x0118, 0x78e0, 0xa504, 0x1558, -+ 0x70fa, 0xc1bc, 0x71f2, 0x0438, 0x2031, 0x0001, 0x852c, 0x0218, -+ 0x8633, 0x8210, 0x0cd8, 0x0005, 0x7de0, 0xa594, 0xff00, 0x0130, -+ 0x2011, 0x0008, 0x852f, 0x0c81, 0x8637, 0x0008, 0x0c69, 0x8217, -+ 0x7880, 0xa084, 0x0f00, 0xa206, 0x0170, 0x72fe, 0x76fa, 0x0058, -+ 0x7a80, 0xa294, 0x0f00, 0x70fc, 0xa236, 0x0dc0, 0x78e0, 0xa534, -+ 0x0da8, 0xc1bd, 0x71f2, 0xd1b4, 0x1904, 0x29df, 0x2300, 0xa405, -+ 0x0904, 0x29df, 0x70c0, 0xa086, 0x0001, 0x1904, 0x2a3f, 0x0005, -+ 0x6020, 0xa005, 0x0150, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, -+ 0x600a, 0x700b, 0x0100, 0x7028, 0x6026, 0x0005, 0xa006, 0x080c, -+ 0x52e3, 0x7000, 0xa086, 0x0002, 0x0120, 0x7068, 0xa086, 0x0005, -+ 0x1150, 0x682b, 0x0000, 0x6817, 0x0000, 0x681b, 0x0001, 0x6823, -+ 0x0040, 0x681f, 0x0100, 0x7000, 0xa084, 0x000f, 0x0002, 0x29ee, -+ 0x3bc4, 0x3bc1, 0x3be4, 0x3bcd, 0x3bcb, 0x3bbf, 0x3bbf, 0x080c, -+ 0x297f, 0x0461, 0x0429, 0x0028, 0x0449, 0x7060, 0x2060, 0x6800, -+ 0x6002, 0x080c, 0x2085, 0x0804, 0x29ee, 0x7068, 0x706b, 0x0000, -+ 0x7087, 0x0000, 0x0002, 0x3be0, 0x3be0, 0x3bdb, 0x3bdb, 0x3bdb, -+ 0x3be0, 0x3bdb, 0x3be0, 0x77f0, 0xc7c5, 0x77f2, 0x0804, 0x2ed6, -+ 0x706b, 0x0000, 0x0804, 0x29ee, 0x681b, 0x0000, 0x0804, 0x359e, -+ 0x6800, 0xa005, 0x1108, 0x6002, 0x6006, 0x0005, 0x6010, 0xa005, -+ 0x0120, 0x8001, 0x1310, 0x080c, 0x297f, 0x6012, 0x6008, 0xc0a4, -+ 0x600a, 0x0005, 0x6018, 0xa005, 0x0110, 0x8001, 0x601a, 0x0005, -+ 0x080c, 0x40d4, 0x681b, 0x0018, 0x0480, 0x080c, 0x40d4, 0x681b, -+ 0x0019, 0x0458, 0x080c, 0x40d4, 0x681b, 0x001a, 0x0430, 0x080c, -+ 0x40d4, 0x681b, 0x0003, 0x0408, 0x7778, 0x080c, 0x3fb3, 0x717c, -+ 0xa18c, 0x00ff, 0xd7fc, 0x1118, 0xa1e8, 0xfa00, 0x0010, 0xa1e8, -+ 0xfb10, 0x2d04, 0x2d08, 0x2068, 0xa005, 0x1118, 0x7082, 0x0804, -+ 0x29ee, 0x6814, 0x7278, 0xa206, 0x0110, 0x6800, 0x0c98, 0x6800, -+ 0x200a, 0x681b, 0x0005, 0x7083, 0x0000, 0x080c, 0x3bee, 0x6820, -+ 0xd084, 0x1110, 0x080c, 0x3be8, 0x080c, 0x3bfa, 0x681f, 0x0000, -+ 0x6823, 0x0020, 0x682b, 0x0000, 0x080c, 0x2085, 0x0804, 0x29ee, -+ 0xa282, 0x0003, 0x1904, 0x3e70, 0x7da8, 0xa5ac, 0x00ff, 0x7ea8, -+ 0xa6b4, 0x00ff, 0x6920, 0xc1bd, 0x6922, 0xd1c4, 0x05a0, 0xc1c4, -+ 0x6922, 0xa6b4, 0x00ff, 0x0520, 0xa682, 0x001c, 0x0218, 0x0110, -+ 0x2031, 0x001c, 0xa686, 0x0010, 0x1108, 0x8630, 0x852b, 0x852b, -+ 0x2041, 0x0000, 0x080c, 0x3f0c, 0x0118, 0x080c, 0x3d35, 0x0090, -+ 0x080c, 0x3ef8, 0x080c, 0x3d32, 0x6920, 0xc1c5, 0x6922, 0x7e58, -+ 0xc695, 0x7e5a, 0xd6d4, 0x1110, 0x0804, 0x4056, 0x0804, 0x3ccc, -+ 0x080c, 0x3d32, 0x7e58, 0xd6d4, 0x1118, 0x781b, 0x005f, 0x0005, -+ 0x781b, 0x006c, 0x0005, 0x00c6, 0x705c, 0x2060, 0x6100, 0xd1e4, -+ 0x0598, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x001c, 0x0218, -+ 0x0110, 0x2011, 0x001c, 0x2600, 0xa202, 0x1208, 0x2230, 0xa686, -+ 0x0010, 0x1108, 0x8630, 0x6208, 0xa294, 0x00ff, 0x78ec, 0xd0e4, -+ 0x0130, 0xa282, 0x000a, 0x1240, 0x2011, 0x000a, 0x0028, 0xa282, -+ 0x000c, 0x1210, 0x2011, 0x000c, 0x2200, 0xa502, 0x1208, 0x2228, -+ 0x080c, 0x3efc, 0x852b, 0x852b, 0x2041, 0x0000, 0x080c, 0x3f0c, -+ 0x0118, 0x080c, 0x3d35, 0x0020, 0x080c, 0x3ef8, 0x080c, 0x3d32, -+ 0x7858, 0xc095, 0x785a, 0x00ce, 0x782b, 0x3008, 0x781b, 0x006c, -+ 0x0005, 0x00c6, 0x2960, 0x6000, 0xd0e4, 0x1170, 0xa084, 0x0040, -+ 0x1130, 0x6104, 0xa18c, 0xfff5, 0x6106, 0x00ce, 0x0005, 0x2011, -+ 0x0032, 0x2019, 0x0000, 0x0418, 0x68a0, 0xd0cc, 0x1dc0, 0x6208, -+ 0xa294, 0x00ff, 0x2001, 0xb343, 0x2004, 0xd0e4, 0x1148, 0x78ec, -+ 0xd0e4, 0x0130, 0xa282, 0x000b, 0x1218, 0x2011, 0x000a, 0x0028, -+ 0xa282, 0x000c, 0x1210, 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, -+ 0x00ff, 0xa382, 0x001c, 0x0218, 0x0110, 0x2019, 0x001c, 0x78ab, -+ 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, -+ 0x0005, 0x6820, 0xc0c5, 0x6822, 0x080c, 0x2ae3, 0x00ce, 0x0005, -+ 0x00c6, 0x2960, 0x6104, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, -+ 0x2019, 0x0000, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, -+ 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xc0c5, 0x6822, -+ 0x00ce, 0x0005, 0xa006, 0x2030, 0x2010, 0x00c6, 0x715c, 0x2160, -+ 0x0029, 0x00ce, 0x0005, 0xa006, 0x2030, 0x2010, 0x2018, 0x2008, -+ 0xa084, 0xffe0, 0xa635, 0x7e86, 0x6018, 0x789a, 0x7eae, 0x6612, -+ 0x78a4, 0xa084, 0x7770, 0xa18c, 0x000f, 0xa105, 0x0056, 0x2029, -+ 0xb343, 0x252c, 0xd5cc, 0x005e, 0x0140, 0xd3a4, 0x0110, 0xa085, -+ 0x0800, 0xd3fc, 0x0110, 0xa085, 0x8080, 0x78a6, 0x0006, 0x78ec, -+ 0xd08c, 0x0130, 0x6028, 0xd08c, 0x0118, 0x000e, 0xc0bc, 0x0008, -+ 0x000e, 0x6016, 0x788a, 0xa6b4, 0x001f, 0x8637, 0x8204, 0x8004, -+ 0xa605, 0x600e, 0x6004, 0xa084, 0xffd5, 0x6006, 0x0005, 0xa282, -+ 0x0002, 0x1904, 0x3e7a, 0x7aa8, 0x6920, 0xc1bd, 0x6922, 0xd1cc, -+ 0x0558, 0xc1cc, 0x6922, 0xa294, 0x00ff, 0xa282, 0x0002, 0x1a04, -+ 0x3e69, 0x080c, 0x3deb, 0x080c, 0x3d32, 0xa980, 0x0001, 0x200c, -+ 0x080c, 0x3faf, 0x080c, 0x3cd1, 0x88ff, 0x0168, 0x789b, 0x0060, -+ 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x1110, 0x0804, -+ 0x4056, 0x0804, 0x3ccc, 0x7e58, 0xd6d4, 0x1118, 0x781b, 0x005f, -+ 0x0005, 0x781b, 0x006c, 0x0005, 0xa282, 0x0002, 0x1218, 0xa284, -+ 0x0001, 0x0138, 0x715c, 0xa188, 0x0000, 0x210c, 0xd1ec, 0x1108, -+ 0xa016, 0x080c, 0x3ee9, 0x0479, 0x080c, 0x3d32, 0x7858, 0xc095, -+ 0x785a, 0x782b, 0x3008, 0x781b, 0x006c, 0x0005, 0x00c6, 0x0026, -+ 0x2960, 0x6000, 0x2011, 0x0001, 0xd0ec, 0x1148, 0xa084, 0x0080, -+ 0x1120, 0xc1a4, 0x6106, 0xa006, 0x0088, 0x2011, 0x0000, 0x78ab, -+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004, -+ 0x080c, 0x2ae3, 0x6820, 0xa085, 0x0200, 0x6822, 0x002e, 0x00ce, -+ 0x0005, 0x8807, 0xa715, 0x00c6, 0x705c, 0x2060, 0x0011, 0x00ce, -+ 0x0005, 0x2009, 0x0000, 0x82ff, 0x0110, 0x2009, 0x0040, 0x6018, -+ 0xa080, 0x0002, 0x789a, 0x78a4, 0xa084, 0xff9f, 0xa105, 0xc0ec, -+ 0xd0b4, 0x1108, 0xc0ed, 0x6100, 0xd1f4, 0x0110, 0xa085, 0x0020, -+ 0x78a6, 0x0006, 0x6000, 0xd09c, 0x0140, 0x6028, 0xd08c, 0x0128, -+ 0x000e, 0xd0bc, 0x0118, 0xc0bc, 0x0008, 0x000e, 0xe016, 0x788a, -+ 0x6004, 0xa084, 0xffef, 0x6006, 0x0005, 0x0006, 0x7000, 0xa086, -+ 0x0003, 0x0110, 0x000e, 0x0010, 0x000e, 0x0488, 0xd6ac, 0x0578, -+ 0x7888, 0xa084, 0x0040, 0x0558, 0x7bb8, 0x8307, 0xa084, 0x007f, -+ 0x1508, 0x8207, 0xa084, 0x00ff, 0xa09e, 0x0001, 0x1904, 0x3e92, -+ 0xd6f4, 0x11d0, 0x79d8, 0x7adc, 0xa108, 0xa291, 0x0000, 0x79d2, -+ 0x79da, 0x7ad6, 0x7ade, 0x080c, 0x56fb, 0x781b, 0x006b, 0xb284, -+ 0x0600, 0x0118, 0x2001, 0x0000, 0x0010, 0x2001, 0x0001, 0x080c, -+ 0x555b, 0x0005, 0x080c, 0x297f, 0x781b, 0x006b, 0x0005, 0x781b, -+ 0x006c, 0x0005, 0x2039, 0x0000, 0x2041, 0x0000, 0x2031, 0x0000, -+ 0xa006, 0x2010, 0x080c, 0x3d35, 0x2029, 0x0000, 0x080c, 0x3de9, -+ 0x7e58, 0x080c, 0x3eb9, 0x782b, 0x3008, 0x781b, 0x006c, 0x0005, -+ 0x0cc1, 0x6820, 0xc0c4, 0x6822, 0x00c6, 0x705c, 0x2060, 0x080c, -+ 0x3d72, 0x00b0, 0x0c71, 0x6820, 0xc0cc, 0x6822, 0x00c6, 0x705c, -+ 0x2060, 0x080c, 0x3e18, 0x0060, 0x0c21, 0x6820, 0xa084, 0xecff, -+ 0x6822, 0x00c6, 0x705c, 0x2060, 0x6004, 0xa084, 0xffc5, 0x6006, -+ 0x00ce, 0x0005, 0x00b9, 0x782b, 0x3008, 0x781b, 0x006c, 0x0005, -+ 0x6827, 0x0002, 0x00a9, 0x78e4, 0xa084, 0x0030, 0x0904, 0x29ee, -+ 0x78ec, 0xa084, 0x0003, 0x0904, 0x29ee, 0x782b, 0x3008, 0x781b, -+ 0x006c, 0x0005, 0x2001, 0x0005, 0x0070, 0x2001, 0x000c, 0x0058, -+ 0x2001, 0x0006, 0x0040, 0x2001, 0x000d, 0x0028, 0x2001, 0x0009, -+ 0x0010, 0x2001, 0x0007, 0x789b, 0x0090, 0x78aa, 0x789b, 0x0060, -+ 0x78ab, 0x0001, 0xc695, 0x7e5a, 0x0804, 0x2ae3, 0x0076, 0x873f, -+ 0xa7bc, 0x000f, 0x873b, 0x873b, 0x873b, 0x8703, 0xb28c, 0x0600, -+ 0x0118, 0xa0e0, 0xb800, 0x0010, 0xa0e0, 0xb900, 0xa7b8, 0x0020, -+ 0x7f9a, 0x79a4, 0xa184, 0x7fe0, 0x78ae, 0x6012, 0x79a4, 0xa184, -+ 0x773f, 0x78a6, 0x6016, 0x6004, 0xa085, 0x0038, 0x6006, 0x007e, -+ 0x0005, 0x789b, 0x0090, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, -+ 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab, 0x0004, 0x0804, 0x2ae3, -+ 0x2021, 0x0000, 0x2029, 0x0032, 0x789b, 0x0090, 0x78ab, 0x0001, -+ 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7caa, 0x789b, 0x0060, -+ 0x78ab, 0x0005, 0x0804, 0x2ae3, 0x0156, 0x0804, 0x3f4e, 0x2021, -+ 0x3fa6, 0x20a9, 0x0009, 0x2011, 0x0029, 0xa582, 0x0028, 0x0550, -+ 0x8420, 0x95a9, 0x2011, 0x0033, 0xa582, 0x0033, 0x0618, 0x8420, -+ 0x95a9, 0x2019, 0x000a, 0x2011, 0x0065, 0x2200, 0xa502, 0x02d0, -+ 0x8420, 0x2300, 0xa210, 0x1f04, 0x3f25, 0x015e, 0x0088, 0x2021, -+ 0x3f98, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011, 0x0033, 0x2200, -+ 0xa502, 0x0240, 0x8420, 0x2300, 0xa210, 0x1f04, 0x3f37, 0x015e, -+ 0xa006, 0x0005, 0x8211, 0x015e, 0xa582, 0x0064, 0x1220, 0x7808, -+ 0xa085, 0x0070, 0x780a, 0x2405, 0xa005, 0x0005, 0xa886, 0x0002, -+ 0x01e8, 0x2021, 0x3f84, 0x20a9, 0x000d, 0x2011, 0x0028, 0xa582, -+ 0x0028, 0x0d48, 0x8420, 0x2019, 0x0019, 0x2011, 0x0033, 0x2200, -+ 0xa502, 0x0e00, 0x8420, 0x2300, 0xa210, 0x1f04, 0x3f5f, 0x015e, -+ 0x2011, 0x0184, 0xa582, 0x0185, 0x0ab0, 0x0890, 0x2021, 0x3f93, -+ 0x20a9, 0x0003, 0x2011, 0x0024, 0xa586, 0x0024, 0x0960, 0x8420, -+ 0x2011, 0x0028, 0xa586, 0x0028, 0x0930, 0x8420, 0x2019, 0x0019, -+ 0x2011, 0x0033, 0x0804, 0x3f37, 0x1021, 0x2202, 0x3403, 0x4604, -+ 0x5805, 0x6a06, 0x7c07, 0x4610, 0x4612, 0x5812, 0x5a12, 0x6a14, -+ 0x6c14, 0x6e14, 0x7e17, 0x9021, 0xb002, 0xe204, 0xe210, 0xe210, -+ 0x1209, 0x3002, 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, -+ 0x6805, 0x7806, 0x7a06, 0x0c07, 0x0c07, 0x0e07, 0x10e1, 0x330a, -+ 0x5805, 0x5a05, 0x6a06, 0x6c06, 0x7c07, 0x7e07, 0x0e00, 0x789b, -+ 0x0090, 0xa046, 0x0005, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, -+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xd7fc, 0x0118, 0xa0e0, -+ 0xda00, 0x0010, 0xa0e0, 0xba00, 0x0005, 0x79d8, 0x7adc, 0x78d0, -+ 0x8007, 0xa084, 0x007f, 0xa108, 0xa291, 0x0000, 0x0005, 0x00e6, -+ 0x00f6, 0xd084, 0x0138, 0x2079, 0x0100, 0x2009, 0xb3c0, 0x2071, -+ 0xb3c0, 0x0070, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x0118, 0x2079, -+ 0x0100, 0x0010, 0x2079, 0x0200, 0x2009, 0xb380, 0x2071, 0xb380, -+ 0x2091, 0x8000, 0x2104, 0xa084, 0x000f, 0x0002, 0x3ff8, 0x3ff8, -+ 0x3ff8, 0x3ff8, 0x3ff8, 0x3ff8, 0x3ff6, 0x403d, 0x080c, 0x297f, -+ 0x69b4, 0xc1f5, 0xa18c, 0xff9f, 0x69b6, 0xa005, 0x05d8, 0x7858, -+ 0xa084, 0xff9f, 0xa085, 0x6000, 0x785a, 0x7828, 0xa086, 0x1814, -+ 0x1588, 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, 0x1de0, 0x784b, -+ 0x0008, 0x7848, 0xa084, 0x0008, 0x1de0, 0x7830, 0xd0bc, 0x1510, -+ 0x3200, 0x0006, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, -+ 0xa084, 0x0600, 0x0010, 0xa084, 0x0800, 0x0118, 0x0104, 0x403a, -+ 0x0010, 0x0304, 0x403a, 0x79e4, 0xa184, 0x0030, 0x0158, 0x78ec, -+ 0xa084, 0x0003, 0x0138, 0x681c, 0xd0ac, 0x1110, 0x0421, 0x0010, -+ 0x781b, 0x00dd, 0x00fe, 0x00ee, 0x0005, 0x70a7, 0x0000, 0x080c, -+ 0x4397, 0x0cc0, 0x2001, 0xb341, 0x2004, 0xd0ac, 0x1118, 0x6814, -+ 0x080c, 0x28a8, 0x0005, 0x781b, 0x006c, 0x0005, 0x782b, 0x3008, -+ 0x781b, 0x006c, 0x0005, 0x781b, 0x005f, 0x0005, 0x782b, 0x3008, -+ 0x781b, 0x005d, 0x0005, 0x2009, 0xb356, 0x210c, 0xa186, 0x0000, -+ 0x0150, 0xa186, 0x0001, 0x0160, 0x701b, 0x000b, 0x706b, 0x0001, -+ 0x781b, 0x0050, 0x0005, 0x78cb, 0x0000, 0x781b, 0x00d8, 0x0005, -+ 0x701b, 0x000a, 0x0005, 0x2009, 0xb356, 0x210c, 0xa186, 0x0000, -+ 0x0170, 0xa186, 0x0001, 0x0140, 0x701b, 0x000b, 0x706b, 0x0001, -+ 0x781b, 0x0050, 0x0804, 0x29df, 0x701b, 0x000a, 0x0005, 0x782b, -+ 0x3008, 0x78cb, 0x0000, 0x781b, 0x00d8, 0x0005, 0x781b, 0x00dd, -+ 0x0005, 0x782b, 0x3008, 0x781b, 0x00dd, 0x0005, 0x781b, 0x00a4, -+ 0x0005, 0x782b, 0x3008, 0x781b, 0x00a4, 0x0005, 0x6818, 0xd0fc, -+ 0x0110, 0x681b, 0x001d, 0x706b, 0x0001, 0x781b, 0x0050, 0x0005, -+ 0x7830, 0xa084, 0x00c0, 0x1180, 0x7808, 0xa084, 0xfffc, 0x780a, -+ 0xe000, 0xe000, 0xe000, 0xe000, 0x78ec, 0xa084, 0x0021, 0x1108, -+ 0x0005, 0x704c, 0xc08d, 0x780a, 0x0005, 0x7830, 0xa084, 0x0080, -+ 0x1190, 0x78ec, 0xa084, 0x0002, 0x1170, 0x7808, 0xc08c, 0x780a, -+ 0xe000, 0xe000, 0xe000, 0xe000, 0x78ec, 0xa084, 0x0002, 0x0118, -+ 0x7808, 0xc08d, 0x780a, 0x0005, 0x704c, 0xc08d, 0x704e, 0x780a, -+ 0x0005, 0x7830, 0xa084, 0x0040, 0x1de0, 0x3200, 0x0006, 0x2001, -+ 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0xa084, 0x0600, 0x0010, -+ 0xa084, 0x0800, 0x0118, 0x1104, 0x40f2, 0x0010, 0x1304, 0x40f2, -+ 0x78ac, 0x0005, 0x7808, 0xa084, 0xfffd, 0x780a, 0xe000, 0xe000, -+ 0xe000, 0xe000, 0x78ec, 0xa084, 0x0021, 0x0198, 0x3200, 0x0006, -+ 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0xa084, 0x0600, -+ 0x0010, 0xa084, 0x0800, 0x0118, 0x1104, 0x410c, 0x0010, 0x1304, -+ 0x410f, 0x78ac, 0x0006, 0x704c, 0x780a, 0x000e, 0x0005, 0x78ec, -+ 0xa084, 0x0002, 0x1904, 0x52a1, 0xa784, 0x007d, 0x1118, 0x2700, -+ 0x080c, 0x297f, 0xa784, 0x0001, 0x1904, 0x3653, 0xa784, 0x0070, -+ 0x0140, 0x00c6, 0x2d60, 0x2f68, 0x080c, 0x2899, 0x2d78, 0x2c68, -+ 0x00ce, 0xa784, 0x0008, 0x0148, 0x784b, 0x0008, 0x78ec, 0xa084, -+ 0x0003, 0x0904, 0x3653, 0x0804, 0x404b, 0xa784, 0x0004, 0x0538, -+ 0x78b8, 0xa084, 0x8000, 0x0518, 0x784b, 0x0008, 0x78ec, 0xa084, -+ 0x0003, 0x0904, 0x3653, 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001, -+ 0x11b0, 0x78c0, 0xa085, 0x4800, 0x2030, 0x7e5a, 0x781b, 0x00dd, -+ 0x0005, 0x784b, 0x0008, 0x6818, 0xd0fc, 0x0130, 0x681b, 0x0015, -+ 0xd6f4, 0x0110, 0x681b, 0x0007, 0x080c, 0x405b, 0x0005, 0x681b, -+ 0x0003, 0x7858, 0xa084, 0x5f00, 0x681e, 0x682f, 0x0000, 0x6833, -+ 0x0000, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0904, 0x3006, -+ 0x3200, 0x0006, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, -+ 0xa084, 0x0600, 0x0010, 0xa084, 0x0800, 0x0118, 0x0104, 0x29df, -+ 0x0010, 0x0304, 0x29df, 0x0804, 0x3e92, 0x6b14, 0x8307, 0xa084, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0x8003, 0xd3fc, 0x0118, 0xa080, -+ 0xb900, 0x0010, 0xa080, 0xb800, 0x2060, 0x2048, 0x705e, 0x2a60, -+ 0x0005, 0x7000, 0x0002, 0x41ab, 0x41ab, 0x41ac, 0x41b4, 0x41ab, -+ 0x41ab, 0x41ab, 0x41b7, 0x0005, 0x6008, 0xa084, 0xfbef, 0x600a, -+ 0x6018, 0x8001, 0x601a, 0x0005, 0x080c, 0x52e3, 0x0005, 0x7094, -+ 0xa005, 0x01a8, 0x2068, 0xb284, 0x0600, 0x0118, 0x2009, 0x0000, -+ 0x0010, 0x2009, 0x0001, 0x0016, 0x080c, 0x1eb2, 0x001e, 0x0016, -+ 0x080c, 0x5222, 0x001e, 0x080c, 0x5223, 0x7097, 0x0000, 0x0005, -+ 0x00c6, 0x2960, 0x6000, 0xd0ac, 0x0904, 0x4216, 0xd1ac, 0x05e0, -+ 0x6108, 0x8117, 0xa18c, 0x00ff, 0x631c, 0x832f, 0x68a0, 0xd0cc, -+ 0x11c8, 0xa584, 0x00ff, 0x0138, 0x78ec, 0xd0e4, 0x0110, 0x8213, -+ 0x00b8, 0x2029, 0x0000, 0xa182, 0x000c, 0x1290, 0x78ec, 0xd0e4, -+ 0x1118, 0x2009, 0x000c, 0x0060, 0xa182, 0x000b, 0x1248, 0x2009, -+ 0x000a, 0x0030, 0x2009, 0x0032, 0x2011, 0x0000, 0x2029, 0x0000, -+ 0x78ab, 0x0001, 0x78ab, 0x0006, 0x78ab, 0x0004, 0x79aa, 0x78ab, -+ 0x0000, 0x7aaa, 0x7baa, 0x7daa, 0xa8c0, 0x0008, 0x6820, 0xa085, -+ 0x1000, 0x6822, 0x080c, 0x2ae3, 0xa085, 0x0001, 0x00ce, 0x0005, -+ 0xa282, 0x0006, 0x1904, 0x3e84, 0x7da8, 0x7eac, 0x8637, 0xa5ac, -+ 0x00ff, 0xa6b4, 0x00ff, 0x7fac, 0x8747, 0xa7bc, 0x00ff, 0xa8c4, -+ 0x00ff, 0x6920, 0xc1bd, 0x6922, 0xd1e4, 0x0904, 0x4286, 0xa18c, -+ 0xecff, 0x6922, 0xa782, 0x0002, 0x1a04, 0x3e5a, 0xa6b4, 0x00ff, -+ 0x0904, 0x4283, 0xa682, 0x0039, 0x1a04, 0x3e5a, 0xa582, 0x0009, -+ 0x0a04, 0x3e5a, 0xa882, 0x0003, 0x1a04, 0x3e5a, 0xa886, 0x0002, -+ 0x01d0, 0xa886, 0x0000, 0x1904, 0x3e5a, 0x2001, 0x000c, 0x79ec, -+ 0xd1e4, 0x0110, 0x2001, 0x000a, 0xa502, 0x1290, 0x080c, 0x3e5a, -+ 0x00c6, 0x2960, 0x6004, 0xa085, 0x001a, 0x6006, 0x6000, 0xc0ac, -+ 0x6002, 0x00ce, 0x0005, 0xa786, 0x0000, 0x0904, 0x3e5a, 0x8634, -+ 0xa686, 0x0010, 0x1108, 0x8630, 0x852b, 0x852b, 0x080c, 0x3f0c, -+ 0x0904, 0x3e5a, 0x2029, 0x0000, 0x080c, 0x3d35, 0x2029, 0x0000, -+ 0x080c, 0x3de9, 0x7e58, 0xd6d4, 0x1118, 0x781b, 0x005f, 0x0005, -+ 0x781b, 0x006c, 0x0005, 0x080c, 0x3d32, 0x0c80, 0xa886, 0x0002, -+ 0x1108, 0x8634, 0x715c, 0xa188, 0x0000, 0x210c, 0xd1ac, 0x0904, -+ 0x3e5a, 0xd1ec, 0x1120, 0x2039, 0x0000, 0x2041, 0x0000, 0xd1e4, -+ 0x1118, 0xa036, 0x2041, 0x0000, 0xa782, 0x0002, 0x12c8, 0x621c, -+ 0xa284, 0x00ff, 0xa706, 0x0110, 0x2039, 0x0000, 0xa605, 0x0190, -+ 0x6108, 0x811f, 0xa39c, 0x00ff, 0x0168, 0xa302, 0x1208, 0x2330, -+ 0x8807, 0xa705, 0xa086, 0x0201, 0x0160, 0xa886, 0x0000, 0x0168, -+ 0x2039, 0x0000, 0x2041, 0x0000, 0x2031, 0x0000, 0xa006, 0x2010, -+ 0x0070, 0xa284, 0xff00, 0x1108, 0x2040, 0xa184, 0x00ff, 0xa502, -+ 0x0108, 0x2128, 0x852b, 0x852b, 0x080c, 0x3f0c, 0x0d58, 0x080c, -+ 0x3d35, 0x2029, 0x0000, 0x080c, 0x3de9, 0x789b, 0x0090, 0x78ab, -+ 0x0001, 0x78ab, 0x0006, 0x78ab, 0x0004, 0x78ab, 0x0000, 0x7daa, -+ 0x7eaa, 0x7faa, 0x2800, 0x78aa, 0x789b, 0x0060, 0x78ab, 0x0005, -+ 0x080c, 0x2ae3, 0x7858, 0xc095, 0x785a, 0x0804, 0x1e66, 0x00e6, -+ 0x2091, 0x8000, 0x6014, 0xd0fc, 0x1118, 0x2071, 0xb380, 0x0010, -+ 0x2071, 0xb3c0, 0x7000, 0xa086, 0x0007, 0x1150, 0x6110, 0x70b0, -+ 0xa106, 0x1130, 0x00ee, 0x080c, 0x1ec4, 0x0041, 0xa006, 0x0005, -+ 0x2091, 0x8001, 0x00ee, 0xa085, 0x0001, 0x0005, 0x00f6, 0x00e6, -+ 0x0804, 0x265a, 0x785b, 0x0000, 0x70a3, 0x000e, 0x2009, 0x0100, -+ 0x0016, 0x7094, 0xa06d, 0x0118, 0x7097, 0x0000, 0x0028, 0x70a7, -+ 0x0000, 0x080c, 0x1ef1, 0x0128, 0x70a0, 0x6826, 0x080c, 0x4432, -+ 0x0cb0, 0x001e, 0x0076, 0x0156, 0x00c6, 0x00d6, 0x20a9, 0x0020, -+ 0x3238, 0xa7bc, 0x0600, 0x0120, 0x2061, 0xfc20, 0xc7fc, 0x0018, -+ 0x2061, 0xfd40, 0xc7fd, 0x6000, 0xa105, 0x6002, 0x601c, 0xa06d, -+ 0x0140, 0x6800, 0x601e, 0x080c, 0x1ca6, 0x6008, 0x8000, 0x600a, -+ 0x0ca8, 0x6018, 0xa06d, 0x0128, 0x6800, 0x601a, 0x080c, 0x1ca6, -+ 0x0cc0, 0xace0, 0x0009, 0x0f04, 0x4356, 0x0c28, 0x7090, 0xa084, -+ 0x8000, 0x0110, 0x080c, 0x44ac, 0x00de, 0x00ce, 0x015e, 0x007e, -+ 0x0005, 0x6804, 0xa084, 0x000f, 0x0002, 0x4375, 0x4375, 0x4375, -+ 0x4375, 0x4375, 0x4375, 0x4377, 0x4386, 0x4375, 0x4375, 0x4375, -+ 0x4375, 0x4375, 0x4392, 0x4375, 0x4377, 0x080c, 0x297f, 0x0006, -+ 0x7830, 0xd0b4, 0x0128, 0x784b, 0x0004, 0x7848, 0xd094, 0x1de8, -+ 0x000e, 0x080c, 0x4f11, 0x080c, 0x1ca6, 0x0080, 0x6827, 0x000b, -+ 0x0006, 0x7830, 0xd0b4, 0x0128, 0x784b, 0x0004, 0x7848, 0xd094, -+ 0x1de8, 0x000e, 0x080c, 0x4f11, 0x080c, 0x4432, 0x0005, 0x00f6, -+ 0x6814, 0xd0fc, 0x1178, 0x2001, 0xb342, 0x2004, 0xd0ec, 0x0128, -+ 0x2079, 0x0100, 0x1104, 0x43c8, 0x0048, 0x2079, 0x0200, 0x1304, -+ 0x43c8, 0x0020, 0x2079, 0x0100, 0x1104, 0x43c8, 0x7830, 0xa084, -+ 0x00c0, 0x11b0, 0x00d6, 0x080c, 0x522f, 0x2d00, 0x682e, 0x2009, -+ 0x0004, 0x2001, 0x0000, 0x6827, 0x0084, 0x080c, 0x51da, 0x080c, -+ 0x4432, 0x00de, 0x70a8, 0xa080, 0x00bf, 0x781a, 0x0804, 0x4408, -+ 0x7948, 0x6814, 0xd0fc, 0x1158, 0x2001, 0xb342, 0x2004, 0xd0ec, -+ 0x0118, 0x1104, 0x43db, 0x0028, 0x1304, 0x43db, 0x0010, 0x1104, -+ 0x43db, 0x794a, 0x08b8, 0x7948, 0x7828, 0x0006, 0xa084, 0xf000, -+ 0xa086, 0x1000, 0x000e, 0x1da8, 0xd0b4, 0x1d98, 0xd0ac, 0x0118, -+ 0xa185, 0x0004, 0x0010, 0xa185, 0x000c, 0x784a, 0x789b, 0x000e, -+ 0x78ab, 0x0002, 0x7858, 0xa084, 0x00ff, 0xa085, 0x0400, 0x785a, -+ 0x70a8, 0xa080, 0x00a1, 0x781a, 0x6827, 0x0284, 0x682c, 0x6836, -+ 0x6830, 0x683a, 0x2009, 0x0004, 0x2001, 0x0000, 0x080c, 0x51da, -+ 0x00fe, 0x0005, 0x00d6, 0x6b14, 0x080c, 0x1f5a, 0x0128, 0x2068, -+ 0x6827, 0x0002, 0x00f9, 0x0cc0, 0x00de, 0x0005, 0x00d6, 0x6b14, -+ 0x6c28, 0xa4a4, 0x00ff, 0x080c, 0x1efb, 0x0120, 0x2068, 0x6827, -+ 0x0002, 0x0081, 0x00de, 0x0005, 0x00d6, 0x6814, 0xa09c, 0x00ff, -+ 0x080c, 0x1f2c, 0x0128, 0x2068, 0x6827, 0x0002, 0x0019, 0x0cc0, -+ 0x00de, 0x0005, 0x00c6, 0x6914, 0x6814, 0x080c, 0x449c, 0x6904, -+ 0xa18c, 0x00ff, 0xa186, 0x0006, 0x0170, 0xa186, 0x000d, 0x0550, -+ 0xa186, 0x0017, 0x1120, 0x080c, 0x1ca6, 0x00ce, 0x0005, 0x080c, -+ 0x2087, 0x00ce, 0x0005, 0x6004, 0x8001, 0x02b0, 0x6006, 0x2009, -+ 0x0000, 0xa684, 0x0001, 0x1110, 0xa18d, 0x8000, 0xa684, 0x0004, -+ 0x0110, 0xa18d, 0x0002, 0x691e, 0x6823, 0x0000, 0x711c, 0x810f, -+ 0x6818, 0xa105, 0x681a, 0x0c18, 0x6100, 0xa184, 0x0001, 0x09d8, -+ 0x080c, 0x297f, 0x6018, 0xa005, 0x1148, 0x6008, 0x8001, 0x0230, -+ 0x600a, 0x601c, 0x6802, 0x2d00, 0x601e, 0x00a0, 0xac88, 0x0006, -+ 0x2104, 0xa005, 0x0110, 0x2008, 0x0cd8, 0x6802, 0x2d0a, 0x6008, -+ 0x8001, 0x0230, 0x600a, 0x6018, 0x2068, 0x6800, 0x601a, 0x0c48, -+ 0x00ce, 0x0005, 0x0156, 0x0136, 0x0146, 0x00c6, 0x00d6, 0x080c, -+ 0x1c85, 0x2da0, 0x013e, 0x20a9, 0x0037, 0x53a3, 0x00ce, 0x014e, -+ 0x013e, 0x015e, 0x0804, 0x4447, 0xd0fc, 0x1118, 0x2061, 0xfc20, -+ 0x0010, 0x2061, 0xfd40, 0xa184, 0x001f, 0xac60, 0x8003, 0x8003, -+ 0x8003, 0xac00, 0x2060, 0x0005, 0xd7fc, 0x1168, 0x2019, 0xb393, -+ 0x2001, 0xb342, 0x2004, 0xd0ec, 0x0118, 0x2021, 0x0102, 0x0038, -+ 0x2021, 0x0202, 0x0020, 0x2019, 0xb3d3, 0x2021, 0x0102, 0x2304, -+ 0xa085, 0x0001, 0x201a, 0x2404, 0xa085, 0x0001, 0x2022, 0x0005, -+ 0xd7fc, 0x1168, 0x2019, 0xb393, 0x2001, 0xb342, 0x2004, 0xd0ec, -+ 0x0118, 0x2021, 0x0102, 0x0038, 0x2021, 0x0202, 0x0020, 0x2019, -+ 0xb3d3, 0x2021, 0x0102, 0x2304, 0xa084, 0xfffe, 0x201a, 0x2404, -+ 0xa084, 0xfffe, 0x2022, 0x0005, 0x7990, 0xa18c, 0xfff8, 0x7992, -+ 0x70a8, 0xa080, 0x00f1, 0x781a, 0x0804, 0x29df, 0x7097, 0x0000, -+ 0x7003, 0x0000, 0x704b, 0x0001, 0x7043, 0x0000, 0x080c, 0x1ef1, -+ 0x0528, 0x70ef, 0x0000, 0x68cc, 0x2060, 0x6100, 0xa184, 0x0300, -+ 0x0150, 0x6827, 0x000e, 0xa084, 0x0200, 0x0110, 0x6827, 0x0017, -+ 0x080c, 0x4432, 0x0c18, 0x7000, 0xa086, 0x0007, 0x1904, 0x4597, -+ 0x6910, 0x70b0, 0xa106, 0x0120, 0x2d60, 0x080c, 0x1ec4, 0x0005, -+ 0x2d00, 0x7096, 0xad80, 0x000f, 0x7042, 0x0050, 0x7010, 0xa005, -+ 0x1128, 0x7048, 0xa086, 0x0001, 0x0904, 0x29f8, 0x0804, 0x29df, -+ 0xa036, 0x691c, 0xa184, 0x0002, 0x0110, 0xa6b5, 0x0004, 0xa184, -+ 0x00c0, 0x8003, 0x8003, 0x8007, 0xa080, 0x4646, 0x2005, 0xa635, -+ 0x080c, 0x2ae3, 0x6820, 0xa084, 0x0400, 0x0150, 0x789b, 0x0018, -+ 0x78ab, 0x0003, 0x789b, 0x0081, 0x78ab, 0x0001, 0xa6b5, 0x5000, -+ 0x6820, 0xa084, 0x8000, 0x0140, 0xa6b5, 0x0400, 0x789b, 0x000e, -+ 0x6824, 0x8007, 0x78aa, 0x00d8, 0x681c, 0xd0fc, 0x1140, 0xa6b5, -+ 0x0800, 0x6820, 0xd0c4, 0x0198, 0xa6b5, 0x4000, 0x0080, 0x6820, -+ 0xd0c4, 0x0118, 0xa6b5, 0x4000, 0x0050, 0x789b, 0x0018, 0x78ab, -+ 0x0002, 0x789b, 0x0081, 0x78ab, 0x0001, 0xa6b5, 0x1000, 0xa684, -+ 0x0200, 0x0508, 0x00c6, 0x080c, 0x4fc6, 0x6028, 0xd08c, 0x0138, -+ 0x6020, 0x00ce, 0x6930, 0x6a2c, 0x080c, 0x52b7, 0x0028, 0x00ce, -+ 0x682c, 0x78d2, 0x6830, 0x78d6, 0xa684, 0x0100, 0x0150, 0x682c, -+ 0xa084, 0x0001, 0x0130, 0x7888, 0xa084, 0x0040, 0x0110, 0xa6b5, -+ 0x8000, 0x080c, 0x5207, 0x7e5a, 0x6eb6, 0x0804, 0x524e, 0x080c, -+ 0x40a8, 0x1904, 0x4640, 0x2041, 0x0001, 0x2031, 0x1000, 0x080c, -+ 0x2ae3, 0x789b, 0x0018, 0x6814, 0xa084, 0x001f, 0xa085, 0x0080, -+ 0x78aa, 0x691c, 0xa184, 0x0002, 0x0140, 0xa6b5, 0x0004, 0x78ab, -+ 0x0020, 0x6828, 0x78aa, 0xa8c0, 0x0002, 0x681c, 0xd0f4, 0x0128, -+ 0x2c50, 0x080c, 0x418d, 0x080c, 0x5044, 0x6820, 0xa084, 0x8000, -+ 0x0140, 0xa6b5, 0x0400, 0x789b, 0x000e, 0x6824, 0x8007, 0x78aa, -+ 0x0060, 0x681c, 0xa084, 0x8000, 0x1140, 0xa6b5, 0x0800, 0x6820, -+ 0xa084, 0x0100, 0x0110, 0xa6b5, 0x4000, 0x681c, 0xa084, 0x00c0, -+ 0x8003, 0x8003, 0x8007, 0xa080, 0x4646, 0x2005, 0xa635, 0xa684, -+ 0x0100, 0x0150, 0x682c, 0xa084, 0x0001, 0x0130, 0x7888, 0xa084, -+ 0x0040, 0x0110, 0xa6b5, 0x8000, 0x789b, 0x007e, 0x7eae, 0x6eb6, -+ 0x6814, 0xc0fc, 0x8007, 0x78aa, 0x7882, 0x2810, 0x7aaa, 0x7830, -+ 0xa084, 0x00c0, 0x1904, 0x4640, 0x6914, 0xd1fc, 0x1158, 0x2001, -+ 0xb342, 0x2004, 0xd0ec, 0x0118, 0x0104, 0x4640, 0x0028, 0x0304, -+ 0x4640, 0x0010, 0x0104, 0x4640, 0x0126, 0x00d6, 0x00c6, 0x70f0, -+ 0xa084, 0x2e00, 0x2090, 0x00ce, 0x00de, 0x012e, 0xa684, 0x0200, -+ 0x01a8, 0x00c6, 0x080c, 0x4fc6, 0x6028, 0xd08c, 0x0140, 0x6020, -+ 0xa005, 0x0128, 0x6930, 0x6a2c, 0x080c, 0x52b7, 0x0020, 0x682c, -+ 0x78d2, 0x6830, 0x78d6, 0x00ce, 0x080c, 0x5207, 0x70a8, 0xa080, -+ 0x00fc, 0x781a, 0x080c, 0x40d4, 0x2d00, 0x7096, 0x7052, 0x6810, -+ 0x70b2, 0x7003, 0x0007, 0xad80, 0x000f, 0x7042, 0x0804, 0x29df, -+ 0x080c, 0x1eb2, 0x080c, 0x40d4, 0x0804, 0x29df, 0x0000, 0x0300, -+ 0x0200, 0x0000, 0x080c, 0x297f, 0x2300, 0x0002, 0x4651, 0x4651, -+ 0x4658, 0x080c, 0x297f, 0x71a8, 0xa188, 0x00a1, 0x791a, 0x0005, -+ 0x080c, 0x5223, 0x6924, 0xa184, 0x00ff, 0xa086, 0x000a, 0x0148, -+ 0xa184, 0xff00, 0xa085, 0x000a, 0x6826, 0x080c, 0x1eb2, 0x0804, -+ 0x44ee, 0x2001, 0x000a, 0x080c, 0x5184, 0x0804, 0x44ee, 0xa282, -+ 0x0005, 0x0310, 0x080c, 0x297f, 0x7000, 0xa084, 0x000f, 0x190c, -+ 0x41a1, 0x080c, 0x1c85, 0x11b8, 0x2069, 0xffff, 0xa684, 0x0004, -+ 0x0118, 0x2001, 0x2800, 0x0010, 0x2001, 0x0800, 0x71a8, 0xa188, -+ 0x00a1, 0x789b, 0x000e, 0x8007, 0x78aa, 0x2031, 0x0400, 0x7e5a, -+ 0x791a, 0x0804, 0x29df, 0x6807, 0x0106, 0x680b, 0x0000, 0x689f, -+ 0x0000, 0x6827, 0x0000, 0xa386, 0x0002, 0x1180, 0xa286, 0x0002, -+ 0x1168, 0x78a0, 0xa005, 0x1150, 0xd4fc, 0x1140, 0x78e4, 0xa084, -+ 0x0008, 0x0120, 0xa6b5, 0x0008, 0x2019, 0x0000, 0x080c, 0x4b0c, -+ 0x2d00, 0x7096, 0x7052, 0x7003, 0x0007, 0x7043, 0x0000, 0x6020, -+ 0xa084, 0x000f, 0x680e, 0x6824, 0xa084, 0x0080, 0x0120, 0x080c, -+ 0x4bc9, 0x0804, 0x29df, 0x2300, 0x0002, 0x46c8, 0x473d, 0x4754, -+ 0x2200, 0x0002, 0x46cf, 0x46de, 0x4700, 0x470a, 0x472b, 0x2029, -+ 0x0001, 0xa026, 0x2011, 0x0000, 0x080c, 0x4ce3, 0x0002, 0x46dc, -+ 0x29df, 0x44ee, 0x46dc, 0x46dc, 0x080c, 0x297f, 0x7990, 0xa18c, -+ 0x0007, 0x1110, 0x2009, 0x0008, 0x2011, 0x0001, 0xa684, 0x0004, -+ 0x0110, 0x2011, 0x0003, 0x2220, 0xa12a, 0x2011, 0x0001, 0x080c, -+ 0x4ce3, 0x0002, 0x46f7, 0x29df, 0x44ee, 0x46fe, 0x46f9, 0x0804, -+ 0x526b, 0x709f, 0x46fd, 0x0804, 0x29df, 0x0cc8, 0x080c, 0x297f, -+ 0xa684, 0x0010, 0x0128, 0x080c, 0x4b94, 0x0110, 0x0804, 0x29df, -+ 0x0804, 0x4c05, 0x6000, 0xa084, 0x0002, 0x01c0, 0x70a8, 0xa080, -+ 0x008f, 0x781a, 0x00d6, 0x080c, 0x522f, 0x2d00, 0x682e, 0x6827, -+ 0x0000, 0x080c, 0x4432, 0x00de, 0x080c, 0x1ca6, 0x7003, 0x0000, -+ 0x7043, 0x0000, 0x7053, 0x0000, 0x0804, 0x44ee, 0xa684, 0x0004, -+ 0x1110, 0x0804, 0x526b, 0x6000, 0xa084, 0x0004, 0x1160, 0x6000, -+ 0xa084, 0x0001, 0x0140, 0x709f, 0x473b, 0x2001, 0x0007, 0x080c, -+ 0x517c, 0x0804, 0x5271, 0x0804, 0x526b, 0x2200, 0x0002, 0x4744, -+ 0x4746, 0x4744, 0x4744, 0x4744, 0x080c, 0x297f, 0x709b, 0x474a, -+ 0x0804, 0x5279, 0x78e4, 0xa084, 0x0008, 0x1dc0, 0x080c, 0x516d, -+ 0x709f, 0x4752, 0x0804, 0x526b, 0x2200, 0x0002, 0x475b, 0x475d, -+ 0x475d, 0x475b, 0x475b, 0x080c, 0x297f, 0x78e4, 0xa084, 0x0008, -+ 0x0178, 0x709b, 0x4765, 0x0804, 0x5279, 0x2011, 0x0004, 0x080c, -+ 0x4cdd, 0x0002, 0x477a, 0x29df, 0x44ee, 0x477a, 0x4784, 0x4788, -+ 0x690c, 0x81ff, 0x0138, 0x8109, 0x1120, 0x6827, 0x000f, 0x0804, -+ 0x4818, 0x690e, 0x709f, 0x4782, 0x2001, 0x0003, 0x080c, 0x517c, -+ 0x0804, 0x5271, 0x0804, 0x526b, 0x709f, 0x477a, 0x0804, 0x29df, -+ 0x709f, 0x478c, 0x0804, 0x29df, 0x0ca8, 0xa282, 0x0003, 0x0310, -+ 0x080c, 0x297f, 0xa386, 0x0002, 0x1180, 0xa286, 0x0002, 0x1190, -+ 0x78a0, 0xa005, 0x1178, 0xd4fc, 0x1168, 0x78e4, 0xa084, 0x0008, -+ 0x0120, 0xa6b5, 0x0008, 0x2019, 0x0000, 0xa684, 0x0008, 0x0110, -+ 0x080c, 0x4b72, 0x6810, 0x70b2, 0x7003, 0x0007, 0x2300, 0x0002, -+ 0x47b3, 0x47db, 0x47e2, 0x2200, 0x0002, 0x47ba, 0x47b8, 0x47d1, -+ 0x080c, 0x297f, 0x7990, 0xa1ac, 0x0007, 0xa026, 0x2011, 0x0001, -+ 0x080c, 0x4ce3, 0x0002, 0x47c8, 0x29df, 0x44ee, 0x47cf, 0x47ca, -+ 0x0804, 0x526b, 0x709f, 0x47ce, 0x0804, 0x29df, 0x0cc8, 0x080c, -+ 0x297f, 0xa684, 0x0010, 0x0128, 0x080c, 0x4b94, 0x0110, 0x0804, -+ 0x29df, 0x0804, 0x4c05, 0x2200, 0x0002, 0x47e0, 0x47e0, 0x47e0, -+ 0x080c, 0x297f, 0x2200, 0x0002, 0x47e7, 0x47e9, 0x47e9, 0x080c, -+ 0x297f, 0x78e4, 0xa084, 0x0008, 0x0178, 0x709b, 0x47f1, 0x0804, -+ 0x5279, 0x2011, 0x0004, 0x080c, 0x4cdd, 0x0002, 0x4805, 0x29df, -+ 0x44ee, 0x4805, 0x480f, 0x4813, 0x690c, 0x81ff, 0x0130, 0x8109, -+ 0x1118, 0x6827, 0x000f, 0x00a0, 0x690e, 0x709f, 0x480d, 0x2001, -+ 0x0003, 0x080c, 0x517c, 0x0804, 0x5271, 0x0804, 0x526b, 0x709f, -+ 0x4805, 0x0804, 0x29df, 0x709f, 0x4817, 0x0804, 0x29df, 0x0ca8, -+ 0x70a8, 0xa080, 0x008f, 0x781a, 0x00d6, 0x6824, 0x0006, 0x080c, -+ 0x522f, 0x000e, 0x6826, 0x2d00, 0x682e, 0x080c, 0x4432, 0x00de, -+ 0x080c, 0x5184, 0x7003, 0x0000, 0x7043, 0x0000, 0x7053, 0x0000, -+ 0x0804, 0x44ee, 0x2300, 0x0002, 0x4839, 0x483b, 0x4837, 0x080c, -+ 0x297f, 0x7098, 0x0807, 0x7098, 0x0807, 0xa282, 0x0002, 0x0310, -+ 0x080c, 0x297f, 0xa684, 0x0200, 0x0130, 0x080c, 0x5222, 0x080c, -+ 0x4cca, 0x080c, 0x5223, 0x2300, 0x0002, 0x4850, 0x487e, 0x48de, -+ 0xad86, 0xffff, 0x1108, 0x0005, 0xa286, 0x0001, 0x0110, 0x080c, -+ 0x297f, 0xa684, 0x0200, 0x0120, 0x080c, 0x5222, 0x080c, 0x5223, -+ 0x6924, 0xa184, 0x00ff, 0xa086, 0x000a, 0x1118, 0xa184, 0xff00, -+ 0x6826, 0x2001, 0x0001, 0x080c, 0x5184, 0x78b8, 0x8007, 0xa084, -+ 0x007f, 0x0140, 0x7848, 0xa085, 0x0008, 0x784a, 0x7848, 0xa084, -+ 0x0008, 0x1de0, 0x7003, 0x0000, 0x0804, 0x44ee, 0x2200, 0x0002, -+ 0x4882, 0x48b1, 0x709b, 0x4886, 0x0804, 0x5279, 0x2011, 0x000d, -+ 0x080c, 0x4cdd, 0x0002, 0x4892, 0x29df, 0x44ee, 0x489a, 0x48a2, -+ 0x48a7, 0x48a9, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x0804, 0x524e, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, -+ 0x0804, 0x524e, 0x709f, 0x48a6, 0x0804, 0x29df, 0x0c58, 0x080c, -+ 0x297f, 0x709f, 0x48ad, 0x0804, 0x29df, 0x080c, 0x527f, 0x0804, -+ 0x29df, 0x709b, 0x48b5, 0x0804, 0x5279, 0x2011, 0x0012, 0x080c, -+ 0x4cdd, 0x0002, 0x48c0, 0x29df, 0x44ee, 0x48cc, 0x48d4, 0x48d9, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x70a8, 0xa080, -+ 0x00bf, 0x781a, 0x0804, 0x29df, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, -+ 0x6eb6, 0x7e5a, 0x0804, 0x524e, 0x709f, 0x48d8, 0x0804, 0x29df, -+ 0x0c38, 0x709f, 0x48dd, 0x0804, 0x29df, 0x0c70, 0xa286, 0x0001, -+ 0x0110, 0x080c, 0x297f, 0x709b, 0x48e7, 0x0804, 0x5279, 0x2011, -+ 0x0015, 0x080c, 0x4cdd, 0x0002, 0x48f1, 0x29df, 0x44ee, 0x48ff, -+ 0x490b, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x783b, -+ 0x1301, 0x70a8, 0xa080, 0x00cb, 0x781a, 0x0804, 0x29df, 0xa6b4, -+ 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x70a8, 0xa080, 0x00bf, -+ 0x781a, 0x0804, 0x29df, 0x709f, 0x490f, 0x0804, 0x29df, 0x0c08, -+ 0xa282, 0x0003, 0x0310, 0x080c, 0x297f, 0x2300, 0x0002, 0x491a, -+ 0x4956, 0x49b5, 0xa286, 0x0001, 0x0110, 0x080c, 0x297f, 0x6804, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x1130, 0x080c, 0x4432, 0x7003, -+ 0x0000, 0x0804, 0x44ee, 0x683b, 0x0000, 0x6837, 0x0000, 0xa684, -+ 0x0200, 0x0130, 0x080c, 0x5222, 0x080c, 0x4cca, 0x080c, 0x5223, -+ 0x6924, 0xa184, 0x00ff, 0xa086, 0x000a, 0x1118, 0xa184, 0xff00, -+ 0x6826, 0x2001, 0x0001, 0x080c, 0x5184, 0x78b8, 0x8007, 0xa084, -+ 0x007f, 0x0140, 0x7848, 0xa085, 0x0008, 0x784a, 0x7848, 0xa084, -+ 0x0008, 0x1de0, 0x7003, 0x0000, 0x0804, 0x44ee, 0xa684, 0x0200, -+ 0x0120, 0x080c, 0x4cca, 0x080c, 0x5223, 0x2200, 0x0002, 0x4961, -+ 0x4992, 0x709b, 0x4965, 0x0804, 0x5279, 0x2011, 0x000d, 0x080c, -+ 0x4cdd, 0x0002, 0x4971, 0x29df, 0x44ee, 0x4979, 0x4981, 0x4986, -+ 0x4988, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0804, -+ 0x524e, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0804, -+ 0x524e, 0x709f, 0x4985, 0x0804, 0x29df, 0x0c58, 0x080c, 0x297f, -+ 0x709f, 0x498e, 0x080c, 0x5223, 0x0804, 0x29df, 0x080c, 0x527f, -+ 0x0804, 0x29df, 0x709b, 0x4996, 0x0804, 0x5279, 0x2011, 0x0005, -+ 0x080c, 0x4cdd, 0x0002, 0x49a0, 0x29df, 0x44ee, 0x49a8, 0x49b0, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0804, 0x524e, -+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0804, 0x524e, -+ 0x709f, 0x49b4, 0x0804, 0x29df, 0x0c58, 0xa286, 0x0001, 0x0110, -+ 0x080c, 0x297f, 0x709b, 0x49be, 0x0804, 0x5279, 0x2011, 0x0006, -+ 0x080c, 0x4cdd, 0x0002, 0x49c8, 0x29df, 0x44ee, 0x49ce, 0x49d8, -+ 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0804, 0x524e, 0xa6b4, 0x00ff, -+ 0xa6b5, 0x0800, 0x6eb6, 0xa6b5, 0x4000, 0x7e5a, 0x0804, 0x524e, -+ 0x709f, 0x49dc, 0x0804, 0x29df, 0x0c58, 0x2300, 0x0002, 0x49e4, -+ 0x49e2, 0x49e2, 0x080c, 0x297f, 0x080c, 0x297f, 0x2300, 0x719c, -+ 0xa005, 0x0817, 0x6810, 0x70b2, 0xa282, 0x0003, 0x0310, 0x080c, -+ 0x297f, 0x2300, 0x0002, 0x49f6, 0x4a03, 0x4a21, 0xa684, 0x0200, -+ 0x0120, 0x080c, 0x5222, 0x080c, 0x5223, 0x2001, 0x0001, 0x080c, -+ 0x5184, 0x0804, 0x29df, 0xa286, 0x0002, 0x0120, 0x82ff, 0x0110, -+ 0x080c, 0x297f, 0x709b, 0x4a0e, 0x0804, 0x5279, 0x2011, 0x0018, -+ 0x080c, 0x4cdd, 0x0002, 0x4a18, 0x29df, 0x44ee, 0x4a1a, 0x4a1c, -+ 0x0804, 0x524e, 0x0804, 0x524e, 0x709f, 0x4a20, 0x0804, 0x29df, -+ 0x0cb8, 0x2200, 0x0002, 0x4a25, 0x4a3c, 0x709b, 0x4a29, 0x0804, -+ 0x5279, 0x2011, 0x0017, 0x080c, 0x4cdd, 0x0002, 0x4a33, 0x29df, -+ 0x44ee, 0x4a35, 0x4a37, 0x0804, 0x524e, 0x0804, 0x524e, 0x709f, -+ 0x4a3b, 0x0804, 0x29df, 0x0cb8, 0xd4fc, 0x1904, 0x4abb, 0xa684, -+ 0x0100, 0x0120, 0x080c, 0x5222, 0x080c, 0x4cca, 0x00c6, 0x080c, -+ 0x4fc6, 0x6028, 0xd08c, 0x0190, 0x612c, 0x7adc, 0x080c, 0x20dd, -+ 0x2110, 0x2008, 0x6024, 0xa210, 0xa189, 0x0000, 0x78d8, 0xa210, -+ 0xa189, 0x0000, 0x602c, 0x080c, 0x52b7, 0x0020, 0x78d8, 0x78d2, -+ 0x78dc, 0x78d6, 0x00ce, 0xa6b4, 0xefff, 0x7e5a, 0x709b, 0x4a6a, -+ 0x0804, 0x5279, 0x2011, 0x000d, 0x080c, 0x4cdd, 0x0002, 0x4a76, -+ 0x29df, 0x44ee, 0x4a76, 0x4aaa, 0x4aaf, 0x4ab1, 0x78d8, 0x79dc, -+ 0xa105, 0x1168, 0x78b8, 0x8007, 0xa084, 0x007f, 0x1140, 0x70a7, -+ 0x0000, 0x7858, 0xa084, 0xfdff, 0x785a, 0x0804, 0x524e, 0xa684, -+ 0x0100, 0x01f0, 0x080c, 0x5223, 0x080c, 0x51cf, 0x0026, 0x0036, -+ 0x00c6, 0x080c, 0x4fc6, 0x6028, 0xd08c, 0x0138, 0x6020, 0x00ce, -+ 0x6930, 0x6a2c, 0x080c, 0x52b7, 0x0028, 0x00ce, 0x682c, 0x78d2, -+ 0x6830, 0x78d6, 0x70a7, 0x0000, 0x001e, 0x000e, 0x080c, 0x5622, -+ 0x0804, 0x524e, 0x709f, 0x4aae, 0x0804, 0x29df, 0x0838, 0x080c, -+ 0x297f, 0x709f, 0x4ab7, 0x080c, 0x5223, 0x0804, 0x29df, 0x080c, -+ 0x527f, 0x0804, 0x29df, 0x080c, 0x5223, 0x6918, 0xd1a4, 0x0140, -+ 0x6827, 0x000f, 0x080c, 0x5184, 0x080c, 0x5223, 0x0804, 0x29df, -+ 0x709f, 0x4ad0, 0x2001, 0x0003, 0x080c, 0x517c, 0x0804, 0x5271, -+ 0x080c, 0x5207, 0x682c, 0x78d2, 0x6830, 0x78d6, 0x0804, 0x524e, -+ 0xa282, 0x0002, 0x0310, 0x080c, 0x297f, 0x2300, 0x0002, 0x4ae2, -+ 0x4af2, 0x4af4, 0xa286, 0x0001, 0x0110, 0x080c, 0x297f, 0x00c6, -+ 0x080c, 0x4fc6, 0x6224, 0x2009, 0x0000, 0x602c, 0x080c, 0x52b7, -+ 0x0804, 0x524e, 0x080c, 0x297f, 0x080c, 0x297f, 0x0026, 0x002e, -+ 0xa684, 0x0200, 0x0130, 0x080c, 0x5222, 0x080c, 0x4cca, 0x080c, -+ 0x5223, 0x2300, 0x0002, 0x4b06, 0x4b08, 0x4b0a, 0x0804, 0x4850, -+ 0x0804, 0x487e, 0x0804, 0x48de, 0x70ac, 0x6812, 0x70b2, 0x8000, -+ 0x70ae, 0x681b, 0x0000, 0xa684, 0x0008, 0x01c0, 0x0156, 0x0136, -+ 0x0146, 0x7890, 0x8004, 0x8004, 0x8004, 0x8004, 0xa084, 0x000f, -+ 0x681a, 0x80ac, 0x789b, 0x0000, 0xaf80, 0x002b, 0x2098, 0xad80, -+ 0x000b, 0x20a0, 0x53a5, 0x014e, 0x013e, 0x015e, 0xa6c4, 0x0f00, -+ 0xa684, 0x0002, 0x1140, 0x692c, 0x810d, 0x810d, 0x810d, 0xa184, -+ 0x0007, 0x2008, 0x0090, 0x789b, 0x0090, 0x79ac, 0xa184, 0x0020, -+ 0x0160, 0x0016, 0x2009, 0x0005, 0x2001, 0x3d00, 0x080c, 0x51da, -+ 0x6824, 0xa085, 0x003b, 0x6826, 0x001e, 0xa184, 0x001f, 0xa805, -+ 0x0016, 0x3208, 0xa18c, 0x0600, 0x0110, 0xc0fc, 0x0008, 0xc0fd, -+ 0x001e, 0x6816, 0x080c, 0x449c, 0x68ce, 0xa684, 0x0004, 0x0130, -+ 0xa18c, 0xff00, 0x78a8, 0xa084, 0x00ff, 0xa105, 0x682a, 0xa6b4, -+ 0x00ff, 0x6000, 0xa084, 0x0008, 0x0110, 0xa6b5, 0x4000, 0x6eb6, -+ 0x7e5a, 0x0005, 0x0156, 0x0136, 0x0146, 0x6918, 0x7890, 0x8004, -+ 0x8004, 0x8004, 0x8004, 0xa084, 0x000f, 0x0006, 0xa100, 0x681a, -+ 0x000e, 0x8000, 0x8004, 0x0160, 0x20a8, 0x8104, 0xa080, 0x000b, -+ 0xad00, 0x20a0, 0x789b, 0x0000, 0xaf80, 0x002b, 0x2098, 0x53a5, -+ 0x014e, 0x013e, 0x015e, 0x0005, 0x682c, 0xd0b4, 0x1140, 0xd0ac, -+ 0x1118, 0x2011, 0x0010, 0x0048, 0x2011, 0x000c, 0x0030, 0xa084, -+ 0x0020, 0x1110, 0x620c, 0x0008, 0x6210, 0x6b18, 0x2300, 0xa202, -+ 0x01c0, 0x2018, 0xa382, 0x000e, 0x0220, 0x0118, 0x2019, 0x000e, -+ 0x0020, 0x7858, 0xa084, 0xffef, 0x785a, 0x783b, 0x1b01, 0x7893, -+ 0x0000, 0x7ba2, 0x70a8, 0xa080, 0x009e, 0x781a, 0xa085, 0x0001, -+ 0x0005, 0x7858, 0xa084, 0xffef, 0x785a, 0x7893, 0x0000, 0xa006, -+ 0x0005, 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0128, 0xa196, -+ 0x000f, 0x0110, 0x6807, 0x0117, 0x6914, 0x6814, 0x080c, 0x449c, -+ 0x6100, 0x8104, 0x1290, 0x601c, 0xa005, 0x0118, 0x2001, 0x0800, -+ 0x0070, 0x00d6, 0x6824, 0x0006, 0x080c, 0x522f, 0x000e, 0x6826, -+ 0x2d00, 0x682e, 0x080c, 0x4432, 0x00de, 0x2001, 0x0200, 0x6924, -+ 0xa18c, 0x00ff, 0xa10d, 0x6926, 0x8007, 0x789b, 0x000e, 0x78aa, -+ 0x6820, 0xa085, 0x8000, 0x6822, 0x2031, 0x0400, 0x6eb6, 0x7e5a, -+ 0x71a8, 0xa188, 0x00a1, 0x791a, 0x0005, 0x080c, 0x2ae3, 0x6814, -+ 0x2040, 0xa684, 0x0002, 0x1168, 0x692c, 0x810d, 0x810d, 0x810d, -+ 0xa184, 0x0007, 0x2008, 0xa805, 0x6816, 0x080c, 0x449c, 0x68ce, -+ 0x0020, 0x6914, 0x6814, 0x080c, 0x449c, 0x6100, 0x8104, 0x1a04, -+ 0x4c70, 0xa184, 0x0300, 0x0118, 0x6807, 0x0117, 0x00d0, 0x6004, -+ 0xa005, 0x1500, 0x6807, 0x0117, 0x601c, 0xa005, 0x1150, 0x00d6, -+ 0x080c, 0x522f, 0x6827, 0x0034, 0x2d00, 0x682e, 0x080c, 0x4432, -+ 0x00de, 0xa684, 0x0004, 0x0128, 0x2031, 0x0400, 0x2001, 0x2800, -+ 0x0020, 0x2031, 0x0400, 0x2001, 0x0800, 0x71a8, 0xa188, 0x00a1, -+ 0x0804, 0x4ca5, 0x6018, 0xa005, 0x1d60, 0x601c, 0xa005, 0x1d48, -+ 0x689f, 0x0000, 0x6827, 0x003d, 0xa684, 0x0001, 0x0904, 0x4cb3, -+ 0xd694, 0x1180, 0x6100, 0xd1d4, 0x0168, 0x692c, 0xa18c, 0x00ff, -+ 0x0904, 0x4cb3, 0xa186, 0x0003, 0x0904, 0x4cb3, 0xa186, 0x0012, -+ 0x0904, 0x4cb3, 0xa6b5, 0x0800, 0x71a8, 0xa188, 0x00c3, 0x04f0, -+ 0x6807, 0x0117, 0x2031, 0x0400, 0x692c, 0xa18c, 0x00ff, 0xa186, -+ 0x0012, 0x1128, 0x2001, 0x4cc0, 0x2009, 0x0001, 0x0070, 0xa186, -+ 0x0003, 0x1128, 0x2001, 0x4cc1, 0x2009, 0x0012, 0x0030, 0x2001, -+ 0x0200, 0x71a8, 0xa188, 0x00a1, 0x00c0, 0x6a34, 0xa29d, 0x0000, -+ 0x1110, 0xa006, 0x0cb0, 0x0006, 0x2100, 0xa21a, 0x000e, 0x1208, -+ 0x2208, 0x080c, 0x51f4, 0x78a3, 0x0000, 0x681c, 0xa085, 0x0040, -+ 0x681e, 0x71a8, 0xa188, 0x00f3, 0xa006, 0x6826, 0x8007, 0x789b, -+ 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, 0x6eb6, 0x7e5a, -+ 0x791a, 0x0804, 0x29df, 0x6eb6, 0x080c, 0x4432, 0x6810, 0x70b2, -+ 0x7003, 0x0007, 0x7097, 0x0000, 0x7053, 0x0000, 0x0804, 0x29df, -+ 0x0023, 0x0070, 0x0005, 0x0000, 0x0a00, 0x0000, 0x0000, 0x0025, -+ 0x0000, 0x0000, 0x683b, 0x0000, 0x6837, 0x0000, 0xa684, 0x0200, -+ 0x0158, 0x78b8, 0x8007, 0xa08c, 0x007f, 0x78d8, 0xa100, 0x6836, -+ 0x78dc, 0xa081, 0x0000, 0x683a, 0x0005, 0x7990, 0x810f, 0xa5ac, -+ 0x0007, 0x2021, 0x0000, 0xa480, 0x0090, 0x789a, 0x79a8, 0xa18c, -+ 0x00ff, 0xa184, 0x0080, 0x11e0, 0xa182, 0x0020, 0x16b0, 0xa182, -+ 0x0012, 0x1a04, 0x516d, 0x2100, 0x000b, 0x0005, 0x516d, 0x4f27, -+ 0x516d, 0x516d, 0x4d31, 0x4d34, 0x4d78, 0x4db3, 0x4de6, 0x4de9, -+ 0x516d, 0x516d, 0x4d98, 0x4e54, 0x4e8c, 0x516d, 0x516d, 0x4eb2, -+ 0xa184, 0x0020, 0x1904, 0x4ee6, 0xa18c, 0x001f, 0x6814, 0xa084, -+ 0x001f, 0xa106, 0x0178, 0x70a8, 0xa080, 0x008f, 0x781a, 0x2001, -+ 0x0014, 0x080c, 0x5184, 0x080c, 0x5223, 0x7003, 0x0000, 0x2001, -+ 0x0002, 0x0005, 0x2001, 0x0000, 0x0005, 0xa182, 0x0024, 0x1a04, -+ 0x516d, 0xa184, 0x0003, 0x0853, 0x0005, 0x516d, 0x516d, 0x516d, -+ 0x516d, 0x080c, 0x516d, 0x0005, 0x2200, 0x0002, 0x4eb5, 0x4eb5, -+ 0x4d65, 0x4d65, 0x4d65, 0x4d65, 0x4d65, 0x4d65, 0x4d65, 0x4d65, -+ 0x4d63, 0x4d65, 0x4d4f, 0x4d57, 0x4d57, 0x4d57, 0x4d65, 0x4d65, -+ 0x4d6d, 0x4d70, 0x4eb5, 0x4d70, 0x4d65, 0x4d65, 0x4d65, 0x00c6, -+ 0x0076, 0x6f14, 0x080c, 0x3ec6, 0x007e, 0x00ce, 0x0070, 0x6818, -+ 0xd0a4, 0x0158, 0x6827, 0x0033, 0x080c, 0x5184, 0x080c, 0x5223, -+ 0x2001, 0x0001, 0x0005, 0x080c, 0x4fd7, 0x6827, 0x02b3, 0x2009, -+ 0x000b, 0x2001, 0x4800, 0x0804, 0x4ee9, 0x080c, 0x515e, 0x0005, -+ 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, 0x4800, 0x0804, 0x4ed1, -+ 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1110, 0x6807, -+ 0x0117, 0x6827, 0x0002, 0x080c, 0x522f, 0x6827, 0x0036, 0x6932, -+ 0x2d00, 0x682e, 0x00d6, 0x080c, 0x440a, 0x080c, 0x4f11, 0x2b68, -+ 0x080c, 0x4432, 0x00de, 0x080c, 0x4432, 0x2001, 0x0002, 0x0005, -+ 0x080c, 0x4f11, 0x2001, 0x0017, 0x080c, 0x5184, 0x7097, 0x0000, -+ 0x6914, 0xd1fc, 0x0118, 0x2009, 0xb3c6, 0x0010, 0x2009, 0xb386, -+ 0x200b, 0x0006, 0x70a3, 0x0017, 0x2009, 0x0200, 0x080c, 0x4318, -+ 0x2001, 0x0001, 0x0005, 0x2200, 0x0002, 0x4eb5, 0x4ee6, 0x4ee6, -+ 0x4ee6, 0x4dd6, 0x4ef8, 0x4dde, 0x4ef8, 0x4ef8, 0x4efb, 0x4efb, -+ 0x4f00, 0x4f00, 0x4dce, 0x4dce, 0x4ee6, 0x4ee6, 0x4ef8, 0x4ee6, -+ 0x4dde, 0x4eb5, 0x4dde, 0x4dde, 0x4dde, 0x4dde, 0x6827, 0x0084, -+ 0x2009, 0x000b, 0x2001, 0x4300, 0x0804, 0x4f0a, 0x6827, 0x000d, -+ 0x2009, 0x000b, 0x2001, 0x4300, 0x0804, 0x4ee9, 0x6827, 0x0093, -+ 0x2009, 0x000b, 0x2001, 0x4300, 0x0804, 0x4ed1, 0x2001, 0x0000, -+ 0x0005, 0x2200, 0x0002, 0x4eb5, 0x4e4c, 0x4e4c, 0x4e4c, 0x4e4c, -+ 0x4e04, 0x4e04, 0x4e04, 0x4e04, 0x4e04, 0x4e04, 0x4e04, 0x4e04, -+ 0x4e4c, 0x4e4c, 0x4e4c, 0x4e4c, 0x4e2a, 0x4e4c, 0x4e4c, 0x4e2a, -+ 0x4e2a, 0x4e2a, 0x4e2a, 0x4eb5, 0x6804, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x1500, 0x690c, 0xa184, 0x000f, 0x0904, 0x4ef8, 0x8001, -+ 0x0130, 0xa18c, 0xfff0, 0xa105, 0x680e, 0x0804, 0x4ef8, 0x70a8, -+ 0xa080, 0x008f, 0x781a, 0x6827, 0x000f, 0x080c, 0x4bc9, 0x080c, -+ 0x5184, 0x7003, 0x0000, 0x7043, 0x0000, 0x7053, 0x0000, 0x2001, -+ 0x0002, 0x0005, 0x6918, 0xa184, 0x000f, 0x0904, 0x4ef8, 0x8001, -+ 0x0130, 0xa18c, 0xfff0, 0xa105, 0x681a, 0x0804, 0x4ef8, 0x70a8, -+ 0xa080, 0x008f, 0x781a, 0x6827, 0x008f, 0x2009, 0x000b, 0x2001, -+ 0x4300, 0x080c, 0x51da, 0x080c, 0x5184, 0x080c, 0x5223, 0x7003, -+ 0x0000, 0x2001, 0x0002, 0x0005, 0x6827, 0x0093, 0x2009, 0x000b, -+ 0x2001, 0x4300, 0x0804, 0x4ed1, 0xa684, 0x0004, 0x1180, 0x6804, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x1904, 0x516d, 0x080c, 0x4f11, -+ 0x6807, 0x0117, 0x080c, 0x4432, 0x2001, 0x0002, 0x0005, 0x6000, -+ 0xa084, 0x0004, 0x0904, 0x516d, 0x2d58, 0x6804, 0xa084, 0x00ff, -+ 0xa086, 0x0006, 0x1110, 0x6807, 0x0117, 0x6827, 0x0002, 0x080c, -+ 0x522f, 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x00d6, 0x080c, -+ 0x4416, 0x080c, 0x4f11, 0x2b68, 0x080c, 0x4432, 0x00de, 0x080c, -+ 0x4432, 0x2001, 0x0002, 0x0005, 0x6000, 0xa084, 0x0004, 0x0904, -+ 0x516d, 0x2d58, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0006, 0x1110, -+ 0x6807, 0x0117, 0x6827, 0x0002, 0x2d58, 0x080c, 0x522f, 0x6827, -+ 0x0036, 0x6932, 0x2d00, 0x682e, 0x00d6, 0x080c, 0x4424, 0x080c, -+ 0x4f11, 0x2b68, 0x080c, 0x4432, 0x00de, 0x080c, 0x4432, 0x2001, -+ 0x0002, 0x0005, 0x080c, 0x516d, 0x0005, 0x70a8, 0xa080, 0x008f, -+ 0x781a, 0x2001, 0x0001, 0x080c, 0x5184, 0x080c, 0x5223, 0x7003, -+ 0x0000, 0x2001, 0x0002, 0x0005, 0x080c, 0x51da, 0x080c, 0x5222, -+ 0x080c, 0x4cca, 0x080c, 0x4bc9, 0x080c, 0x5223, 0x2001, 0x0001, -+ 0x0005, 0x080c, 0x51da, 0x080c, 0x5222, 0x080c, 0x4cca, 0x70a8, -+ 0xa080, 0x008f, 0x781a, 0x2001, 0x0013, 0x080c, 0x5184, 0x080c, -+ 0x5223, 0x7003, 0x0000, 0x2001, 0x0002, 0x0005, 0x080c, 0x516d, -+ 0x0005, 0x080c, 0x51da, 0x080c, 0x5222, 0x080c, 0x4cca, 0x080c, -+ 0x4bc9, 0x080c, 0x5223, 0x080c, 0x527f, 0x2001, 0x0001, 0x0005, -+ 0x2001, 0x0003, 0x0005, 0x080c, 0x4fd7, 0x2001, 0x0000, 0x0005, -+ 0x00c6, 0x0076, 0x6f14, 0x080c, 0x3ec6, 0x007e, 0x00ce, 0x2001, -+ 0x0000, 0x0005, 0x080c, 0x51da, 0x080c, 0x516d, 0x2001, 0x0006, -+ 0x0005, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0118, 0xa186, -+ 0x000f, 0x1120, 0x080c, 0x5222, 0x080c, 0x4cca, 0x70a8, 0xa080, -+ 0x008f, 0x781a, 0x080c, 0x5223, 0x7003, 0x0000, 0x0005, 0x7aa8, -+ 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0005, 0x1a04, -+ 0x516d, 0x000b, 0x0005, 0x516d, 0x4f38, 0x516d, 0x4fdd, 0x50a0, -+ 0xa282, 0x0003, 0x1904, 0x516d, 0x7da8, 0xa5ac, 0x00ff, 0x7ea8, -+ 0xa6b4, 0x00ff, 0x69b8, 0xa184, 0x0100, 0x05a0, 0xa18c, 0xfeff, -+ 0x69ba, 0x78a0, 0xa005, 0x1570, 0xa6b4, 0x00ff, 0x01f0, 0xa682, -+ 0x001d, 0x1270, 0xa686, 0x0010, 0x1108, 0x8631, 0x852b, 0x852b, -+ 0x2041, 0x0000, 0x080c, 0x3f0c, 0x0118, 0x080c, 0x3d35, 0x0078, -+ 0x080c, 0x508e, 0x080c, 0x3d32, 0x69b8, 0xa18d, 0x0100, 0x69ba, -+ 0x7e58, 0xa6b5, 0x1000, 0x7e5a, 0x0030, 0x080c, 0x3d32, 0x7e58, -+ 0xa6b4, 0xefff, 0x7e5a, 0x70a8, 0xa080, 0x00a1, 0x781a, 0x2001, -+ 0x0001, 0x0005, 0x00c6, 0x080c, 0x4fc6, 0x6200, 0xd2e4, 0x05a0, -+ 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x001c, 0x0218, 0x0110, -+ 0x2011, 0x001c, 0x2600, 0xa202, 0x1208, 0x2230, 0xa686, 0x0010, -+ 0x1108, 0x8631, 0x6208, 0xa294, 0x00ff, 0x78ec, 0xd0e4, 0x0130, -+ 0xa282, 0x000a, 0x1240, 0x2011, 0x000a, 0x0028, 0xa282, 0x000c, -+ 0x1210, 0x2011, 0x000c, 0x2200, 0xa502, 0x1208, 0x2228, 0x2620, -+ 0x080c, 0x5091, 0x852b, 0x852b, 0x2041, 0x0000, 0x080c, 0x3f0c, -+ 0x0118, 0x080c, 0x3d3e, 0x0020, 0x080c, 0x508e, 0x080c, 0x3d3b, -+ 0x7e58, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, 0xa080, -+ 0x00de, 0x781a, 0x2001, 0x0004, 0x00ce, 0x0005, 0x6814, 0x8007, -+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0x8003, 0x6914, 0xd1fc, -+ 0x1118, 0xa0e0, 0xb800, 0x0010, 0xa0e0, 0xb900, 0x0005, 0x00c6, -+ 0x0c69, 0x080c, 0x3d3b, 0x00ce, 0x0005, 0xa282, 0x0002, 0x1904, -+ 0x516d, 0x7aa8, 0xa294, 0x00ff, 0x69b8, 0xa184, 0x0200, 0x0540, -+ 0xa18c, 0xfdff, 0x69ba, 0x78a0, 0xa005, 0x1510, 0xa282, 0x0002, -+ 0x1a04, 0x3e69, 0x080c, 0x506b, 0x080c, 0x3deb, 0x080c, 0x3d32, -+ 0x7e58, 0xa684, 0x0100, 0x0150, 0x682c, 0xa084, 0x0001, 0x0130, -+ 0xc6fc, 0x7888, 0xa084, 0x0040, 0x0108, 0xc6fd, 0xa6b5, 0x1000, -+ 0x7e5a, 0x70a8, 0xa080, 0x00a1, 0x781a, 0x2001, 0x0001, 0x0005, -+ 0x00c6, 0x080c, 0x4fc6, 0x6028, 0xc08c, 0x602a, 0xa284, 0xfffe, -+ 0x0118, 0x2011, 0x0001, 0x0018, 0xa284, 0x0001, 0x0128, 0x6100, -+ 0xd1ec, 0x1110, 0x2011, 0x0000, 0x04c1, 0x080c, 0x3df1, 0x080c, -+ 0x3d3b, 0x7e58, 0xa684, 0x0100, 0x0150, 0x682c, 0xa084, 0x0001, -+ 0x0130, 0xc6fc, 0x7888, 0xa084, 0x0040, 0x0108, 0xc6fd, 0xa6b5, -+ 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, 0xa080, 0x00de, 0x781a, -+ 0x2001, 0x0004, 0x00ce, 0x0005, 0x00c6, 0x2960, 0x6000, 0x2011, -+ 0x0001, 0xa084, 0x2000, 0x1110, 0x2011, 0x0000, 0x78ab, 0x0001, -+ 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x68b8, -+ 0xa085, 0x0200, 0x68ba, 0x00ce, 0x0005, 0x789b, 0x0018, 0x78ab, -+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0081, -+ 0x78ab, 0x0004, 0x0005, 0x00c6, 0x705c, 0x2060, 0x6000, 0xa084, -+ 0x1000, 0x1128, 0x2029, 0x0032, 0x2021, 0x0000, 0x0080, 0x6408, -+ 0xa4ac, 0x00ff, 0xa582, 0x000c, 0x1210, 0x2029, 0x000c, 0x8427, -+ 0xa4a4, 0x00ff, 0xa482, 0x001c, 0x0210, 0x2021, 0x001c, 0x0049, -+ 0x68b8, 0xa085, 0x0100, 0x68ba, 0x00ce, 0x0005, 0xa026, 0x2029, -+ 0x0032, 0x789b, 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, -+ 0x0001, 0x7daa, 0x7caa, 0x789b, 0x0081, 0x78ab, 0x0005, 0x0005, -+ 0x080c, 0x4fc6, 0x6000, 0xd09c, 0x1118, 0x080c, 0x516d, 0x0005, -+ 0xa282, 0x0006, 0x0118, 0x080c, 0x516d, 0x0005, 0x7aa8, 0xa294, -+ 0x00ff, 0x7e5a, 0x7ea8, 0x7ea8, 0xa6b4, 0x00ff, 0x7fa8, 0xa7bc, -+ 0x00ff, 0xa782, 0x0002, 0x0218, 0x080c, 0x516d, 0x0005, 0x78a8, -+ 0x2040, 0xa8c4, 0x00ff, 0xa882, 0x0003, 0x0218, 0x080c, 0x516d, -+ 0x0005, 0xa886, 0x0001, 0x1118, 0x080c, 0x516d, 0x0005, 0x2600, -+ 0xa005, 0x1120, 0x080c, 0x4fd7, 0x0804, 0x513e, 0xa682, 0x001c, -+ 0x0218, 0x0110, 0x2031, 0x001c, 0x88ff, 0x0168, 0x87ff, 0x1118, -+ 0x080c, 0x516d, 0x0005, 0x6000, 0xd0ec, 0x0118, 0x78ec, 0xd0e4, -+ 0x1110, 0x2041, 0x0000, 0x87ff, 0x1178, 0xa282, 0x000a, 0x0230, -+ 0x0128, 0xa282, 0x0061, 0x1128, 0x0120, 0x00b8, 0x2011, 0x000a, -+ 0x00a0, 0x2011, 0x0061, 0x0088, 0x78ec, 0xd0e4, 0x1108, 0x0c68, -+ 0xa282, 0x0009, 0x0228, 0x0120, 0xa282, 0x0019, 0x0230, 0x0018, -+ 0x2011, 0x0009, 0x0010, 0x2011, 0x0019, 0x0086, 0x0076, 0x0066, -+ 0x8213, 0x8213, 0x2228, 0x080c, 0x3f0c, 0x006e, 0x007e, 0x008e, -+ 0x1128, 0x080c, 0x4fd7, 0xa016, 0xa036, 0x0400, 0x87ff, 0x0150, -+ 0xa8ac, 0x0002, 0x0138, 0x6520, 0x85ff, 0x0120, 0x6528, 0xc58d, -+ 0x652a, 0x0018, 0x6528, 0xc58c, 0x652a, 0x2620, 0x88ff, 0x0108, -+ 0x8634, 0xa69e, 0x0010, 0x1108, 0x8631, 0x0026, 0x080c, 0x3d3e, -+ 0x080c, 0x3df1, 0x2430, 0x002e, 0x8214, 0x8214, 0x789b, 0x0018, -+ 0x78ab, 0x0001, 0x78ab, 0x0006, 0x78ab, 0x0004, 0x7aaa, 0x78ab, -+ 0x0000, 0x7eaa, 0x7faa, 0x2800, 0x78aa, 0x789b, 0x0081, 0x78ab, -+ 0x0008, 0x7e58, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, -+ 0xa080, 0x00de, 0x781a, 0x2001, 0x0004, 0x0005, 0x2001, 0x0003, -+ 0x00d9, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, 0xa080, -+ 0x00de, 0x781a, 0x2001, 0x0005, 0x0005, 0x2001, 0x0007, 0x0061, -+ 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70a8, 0xa080, 0x00de, -+ 0x781a, 0x2001, 0x0004, 0x0005, 0x789b, 0x0018, 0x78aa, 0x789b, -+ 0x0081, 0x78ab, 0x0001, 0x0005, 0x6904, 0xa18c, 0x00ff, 0xa196, -+ 0x0007, 0x0130, 0xa196, 0x000f, 0x0118, 0x080c, 0x1ca6, 0x0005, -+ 0x6924, 0xa194, 0x003f, 0x1120, 0xa18c, 0xffc0, 0xa105, 0x6826, -+ 0x6a1c, 0xd29c, 0x1530, 0xa086, 0x0001, 0x1518, 0x2001, 0xb341, -+ 0x2004, 0xd094, 0x01f0, 0x0e04, 0x51c1, 0x0156, 0x00e6, 0x0036, -+ 0x0046, 0x0056, 0x2071, 0x0010, 0x7bf0, 0x7af4, 0x7cf8, 0x7dfc, -+ 0x2009, 0x0002, 0xad80, 0x0003, 0x080c, 0x1e7a, 0x005e, 0x004e, -+ 0x003e, 0x00ee, 0x015e, 0x1128, 0x2091, 0x4080, 0x080c, 0x1ca6, -+ 0x0010, 0x080c, 0x4432, 0x691c, 0xa184, 0x0100, 0x0138, 0x6914, -+ 0x2100, 0x080c, 0x449c, 0x6204, 0x8210, 0x6206, 0x0005, 0x692c, -+ 0x6834, 0x682e, 0xa112, 0x6930, 0x6838, 0x6832, 0xa11b, 0xa200, -+ 0xa301, 0x0005, 0x00c6, 0xade0, 0x0018, 0x6003, 0x0070, 0x6106, -+ 0x600b, 0x0000, 0x600f, 0x0a00, 0x6013, 0x0000, 0x6017, 0x0000, -+ 0x8007, 0x601a, 0x601f, 0x0000, 0x6023, 0x0000, 0x00ce, 0x6824, -+ 0xa085, 0x0080, 0x6826, 0x0005, 0x0156, 0x0136, 0x0146, 0x2098, -+ 0xaf80, 0x002d, 0x20a0, 0x81ac, 0x0108, 0x53a6, 0xa184, 0x0001, -+ 0x0110, 0x3304, 0x78be, 0x014e, 0x013e, 0x015e, 0x0005, 0x70a4, -+ 0x00e6, 0x0006, 0x000e, 0x00ee, 0xa005, 0x6918, 0x0016, 0x6914, -+ 0x0016, 0x6928, 0x0016, 0x001e, 0x001e, 0x001e, 0x190c, 0x297f, -+ 0x70a7, 0x8000, 0x6814, 0xd0fc, 0x0110, 0xc185, 0x0008, 0xc184, -+ 0x0804, 0x55dc, 0x0005, 0x71a4, 0x81ff, 0x0140, 0x7848, 0xa085, -+ 0x0008, 0x784a, 0x70a7, 0x0000, 0x080c, 0x52e3, 0x0005, 0x00c6, -+ 0x00d6, 0x080c, 0x1c85, 0x00ce, 0x0156, 0x0136, 0x0146, 0x2da0, -+ 0x2c98, 0x20a9, 0x0037, 0x53a3, 0x014e, 0x013e, 0x015e, 0x6807, -+ 0x010d, 0x680b, 0x0000, 0x701c, 0x8007, 0x681a, 0x6823, 0x0000, -+ 0x681f, 0x0000, 0x689f, 0x0000, 0x00ce, 0x0005, 0x00c6, 0x080c, -+ 0x4fc6, 0x6028, 0xd08c, 0x00ce, 0x0180, 0x7814, 0xa084, 0x0001, -+ 0x0130, 0x70a8, 0xa080, 0x011c, 0x781a, 0x0804, 0x29df, 0x70a8, -+ 0xa080, 0x0135, 0x781a, 0x0804, 0x29df, 0x70a8, 0xa080, 0x00a1, -+ 0x781a, 0x0804, 0x29df, 0x70a8, 0xa080, 0x0092, 0x781a, 0x0804, -+ 0x29df, 0x783b, 0x1700, 0x70a8, 0xa080, 0x00de, 0x781a, 0x0804, -+ 0x29df, 0x70a8, 0xa080, 0x00e7, 0x781a, 0x0804, 0x29df, 0x6904, -+ 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0128, 0xa196, 0x000f, 0x0110, -+ 0x6807, 0x0117, 0x6824, 0xa084, 0x00ff, 0xa085, 0x0200, 0x6826, -+ 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, -+ 0x2031, 0x0400, 0x6eb6, 0x7e5a, 0x71a8, 0xa188, 0x00a1, 0x791a, -+ 0x0005, 0x080c, 0x5223, 0x7848, 0xa085, 0x000c, 0x784a, 0x70a8, -+ 0xa080, 0x008f, 0x781a, 0x2009, 0x000b, 0x2001, 0x4400, 0x080c, -+ 0x51da, 0x2001, 0x0013, 0x080c, 0x5184, 0x0804, 0x44ee, 0x81ff, -+ 0x1110, 0xa21a, 0x0218, 0x080c, 0x20ea, 0x0070, 0x7ad2, 0x7ada, -+ 0x2200, 0x2011, 0x0001, 0x6027, 0x0000, 0x7ad6, 0x78df, 0x0000, -+ 0x7b14, 0xc384, 0x7b16, 0x0088, 0x81ff, 0x1130, 0x6027, 0x0000, -+ 0x7b14, 0xc384, 0x7b16, 0x0020, 0x6126, 0x7b14, 0xc385, 0x7b16, -+ 0x78d2, 0x78da, 0x7ad6, 0x8211, 0x7ade, 0x6232, 0x602e, 0x6028, -+ 0xc085, 0x602a, 0x0005, 0x0126, 0x70f0, 0xa084, 0x4c00, 0x8004, -+ 0x2090, 0x7204, 0x700c, 0xa215, 0x7008, 0xc09c, 0xa205, 0x1138, -+ 0x7007, 0x0004, 0x7003, 0x0000, 0x012e, 0x2000, 0x0005, 0x7000, -+ 0xd084, 0x0580, 0x7108, 0xe000, 0x7008, 0xa106, 0x1dd8, 0xa184, -+ 0x0003, 0x0904, 0x534b, 0xa184, 0x01e0, 0x1904, 0x534b, 0xd1f4, -+ 0x1d88, 0xa184, 0x3000, 0xa086, 0x1000, 0x0d60, 0x2011, 0x0180, -+ 0x710c, 0x8211, 0x0130, 0x7008, 0xd0f4, 0x1d20, 0x700c, 0xa106, -+ 0x0dc0, 0x7007, 0x0012, 0x7108, 0xe000, 0x7008, 0xa106, 0x1dd8, -+ 0xa184, 0x0003, 0x0540, 0xd194, 0x0db0, 0xd1f4, 0x0520, 0x7007, -+ 0x0002, 0x0880, 0x7108, 0xd1fc, 0x0130, 0x080c, 0x5484, 0x8aff, -+ 0x0904, 0x52e9, 0x0cb8, 0x700c, 0xa08c, 0x07ff, 0x01c8, 0x7004, -+ 0xd084, 0x0158, 0x7014, 0xa005, 0x1128, 0x7010, 0xa005, 0x0128, -+ 0xa102, 0x1e40, 0x7007, 0x0010, 0x0030, 0x8aff, 0x0148, 0x080c, -+ 0x56ad, 0x1de8, 0x09f8, 0x080c, 0x53ee, 0x012e, 0x2000, 0x0005, -+ 0x7204, 0x700c, 0xa215, 0x7108, 0xc19c, 0x8103, 0x1228, 0xa205, -+ 0x1d90, 0x7007, 0x0002, 0x0ca0, 0xa205, 0x1d68, 0x7003, 0x0000, -+ 0x7007, 0x0004, 0x012e, 0x2000, 0x0005, 0x0016, 0x6104, 0xa18c, -+ 0x00ff, 0xa186, 0x0007, 0x0118, 0xa18e, 0x000f, 0x1110, 0x6040, -+ 0x0008, 0x6428, 0x001e, 0x84ff, 0x01f8, 0x2c70, 0x7004, 0xa0bc, -+ 0x000f, 0xa7b8, 0x53a4, 0x273d, 0x87fb, 0x1138, 0x0210, 0x080c, -+ 0x297f, 0x609c, 0xa075, 0x0180, 0x0c88, 0x2705, 0xae68, 0x6808, -+ 0xa630, 0x680c, 0xa529, 0x8421, 0x0138, 0x8738, 0x2705, 0xa005, -+ 0x1da8, 0x709c, 0xa075, 0x1d10, 0x0005, 0x0000, 0x0005, 0x0009, -+ 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, 0x0009, -+ 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x5399, 0x5396, 0x0000, -+ 0x0000, 0x8000, 0x0000, 0x5399, 0x0000, 0x53a1, 0x539e, 0x0000, -+ 0x0000, 0x0000, 0x0000, 0x53a1, 0x0000, 0x539c, 0x539c, 0x0000, -+ 0x0000, 0x8000, 0x0000, 0x539c, 0x0000, 0x53a2, 0x53a2, 0x0000, -+ 0x0000, 0x0000, 0x0000, 0x53a2, 0x2079, 0xb340, 0x2071, 0x0010, -+ 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x7808, 0xd0ec, -+ 0x0128, 0x2009, 0x0001, 0x2071, 0x0020, 0x0060, 0x2001, 0x01ff, -+ 0x2004, 0xd0fc, 0x0118, 0x2009, 0x0001, 0x0010, 0x2009, 0x0002, -+ 0x2071, 0x0050, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, -+ 0x8109, 0x0118, 0x2071, 0x0020, 0x0ca8, 0x0005, 0x2019, 0x0000, -+ 0x7004, 0x8004, 0x1a04, 0x545c, 0x7108, 0x7008, 0xa106, 0x1de0, -+ 0xa184, 0x01e0, 0x0120, 0x080c, 0x54be, 0x0804, 0x547c, 0x7007, -+ 0x0012, 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x01e0, 0x0110, -+ 0x080c, 0x54be, 0x7808, 0xd0ec, 0x0188, 0x2001, 0x04fd, 0x2004, -+ 0xa086, 0x0003, 0x1170, 0xa184, 0x4000, 0x0170, 0xa382, 0x0003, -+ 0x1258, 0xa184, 0x0004, 0x0d28, 0x8318, 0x0c18, 0x780c, 0xd0ec, -+ 0x1118, 0xa184, 0x4000, 0x19e8, 0xa19c, 0x300c, 0xa386, 0x2004, -+ 0x0190, 0xa386, 0x0008, 0x01c0, 0x7004, 0xd084, 0x1148, 0x7108, -+ 0x7008, 0xa106, 0x1de0, 0xa184, 0x0003, 0x0110, 0x0804, 0x54be, -+ 0xa386, 0x200c, 0x1930, 0x7200, 0x8204, 0x0230, 0x730c, 0xa384, -+ 0x07ff, 0x0110, 0x080c, 0x297f, 0x7108, 0x7008, 0xa106, 0x1de0, -+ 0xa184, 0x01e0, 0x0118, 0x080c, 0x54be, 0x0470, 0x7007, 0x0012, -+ 0x7000, 0xd084, 0x1148, 0x7310, 0x7014, 0xa305, 0x0128, 0x710c, -+ 0xa184, 0x07ff, 0x1904, 0x53ee, 0x7108, 0x7008, 0xa106, 0x1de0, -+ 0xa184, 0x01e0, 0x0118, 0x080c, 0x54be, 0x00b0, 0x7007, 0x0012, -+ 0x7007, 0x0008, 0x7004, 0xd09c, 0x1de8, 0x7108, 0x7008, 0xa106, -+ 0x1de0, 0xa184, 0x01e0, 0x0118, 0x080c, 0x54be, 0x0028, 0x7007, -+ 0x0012, 0x7108, 0xd1fc, 0x1d88, 0x7003, 0x0000, 0x0005, 0x0156, -+ 0x7108, 0x0011, 0x015e, 0x0005, 0x7204, 0x7500, 0xa184, 0x01e0, -+ 0x15a8, 0x7108, 0xa184, 0x01e0, 0x1588, 0xa184, 0x0007, 0x0002, -+ 0x549a, 0x54a8, 0x5498, 0x54a8, 0x5498, 0x5508, 0x5498, 0x5506, -+ 0x080c, 0x297f, 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x8aff, -+ 0x1118, 0x2049, 0x0000, 0x0018, 0x080c, 0x56ad, 0x1de8, 0x0005, -+ 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x7004, 0xd084, 0x1140, -+ 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x0003, 0x0108, 0x0030, -+ 0x8aff, 0x0118, 0x080c, 0x56ad, 0x1de8, 0x0005, 0x7007, 0x0012, -+ 0x7108, 0x1d04, 0x54c1, 0x2091, 0x6000, 0x1d04, 0x54c5, 0x2091, -+ 0x6000, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xd09c, 0x1de8, -+ 0x7007, 0x0012, 0x7108, 0xd1fc, 0x1dd8, 0x7003, 0x0000, 0x7000, -+ 0xa005, 0x1130, 0x7004, 0xa005, 0x1118, 0x700c, 0xa005, 0x0108, -+ 0x0c40, 0x2049, 0x0000, 0xb284, 0x0200, 0x0118, 0x2001, 0x0000, -+ 0x0010, 0x2001, 0x0001, 0x080c, 0x3fcf, 0xb284, 0x0200, 0x0118, -+ 0x2001, 0xb3a4, 0x0010, 0x2001, 0xb3e4, 0x2004, 0xa084, 0x8000, -+ 0x0130, 0x6824, 0xa005, 0x1128, 0x6827, 0x0004, 0x0010, 0x681b, -+ 0x0002, 0x0005, 0x080c, 0x297f, 0x080c, 0x297f, 0x080c, 0x5548, -+ 0x7210, 0x7114, 0x700c, 0xa09c, 0x07ff, 0x2800, 0xa300, 0xa211, -+ 0xa189, 0x0000, 0x04a9, 0x2705, 0x2c58, 0xac60, 0x6308, 0x2200, -+ 0xa322, 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0140, 0x1238, -+ 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0c58, 0x2b60, -+ 0x8a07, 0x0006, 0x6004, 0xa084, 0x0008, 0x0118, 0xa7ba, 0x539e, -+ 0x0010, 0xa7ba, 0x5396, 0x000e, 0xa73d, 0x2c00, 0x6886, 0x6f8a, -+ 0x6c92, 0x6b8e, 0x7108, 0x7008, 0xa106, 0x1de0, 0xa184, 0x01e0, -+ 0x0110, 0x080c, 0x54be, 0x7007, 0x0012, 0x080c, 0x53ee, 0x0005, -+ 0x8a50, 0x8739, 0x2705, 0xa004, 0x1168, 0x6000, 0xa064, 0x1108, -+ 0x2d60, 0x6004, 0xa084, 0x000f, 0xa080, 0x53b4, 0x203d, 0x87fb, -+ 0x090c, 0x297f, 0x0005, 0x0126, 0x00d6, 0x70f0, 0xa084, 0x4c00, -+ 0x8004, 0x2090, 0x00de, 0x6884, 0x2060, 0x6888, 0x6b8c, 0x6c90, -+ 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x0006, 0x6804, 0xa084, -+ 0x0008, 0x000e, 0x0118, 0xa0b8, 0x539e, 0x0010, 0xa0b8, 0x5396, -+ 0xb284, 0x0200, 0x0110, 0x7e18, 0x0008, 0x7e1c, 0xa6b5, 0x000c, -+ 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0118, 0xa18e, 0x000f, -+ 0x1130, 0x681c, 0xa084, 0x0040, 0x0130, 0xc685, 0x0020, 0x681c, -+ 0xd0b4, 0x0108, 0xc685, 0x700c, 0xa084, 0x07ff, 0x0128, 0x7007, -+ 0x0004, 0x7004, 0xd094, 0x1de8, 0x2400, 0xa305, 0x1108, 0x0420, -+ 0x2c58, 0x2705, 0x6104, 0xac60, 0x6000, 0xa400, 0x701a, 0x6004, -+ 0xa301, 0x701e, 0xa184, 0x0008, 0x0140, 0x6010, 0xa081, 0x0000, -+ 0x7022, 0x6014, 0xa081, 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, -+ 0x7012, 0x620c, 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, -+ 0x2b60, 0x080c, 0x56d8, 0x0010, 0x080c, 0x56ad, 0x1de8, 0x012e, -+ 0x2000, 0x0005, 0x0126, 0x00d6, 0x70f0, 0xa084, 0x4c00, 0x8004, -+ 0x2090, 0x00de, 0x7007, 0x0004, 0x7004, 0xd094, 0x1de8, 0x7003, -+ 0x0008, 0x012e, 0x2000, 0x0005, 0x0126, 0x00d6, 0x70f0, 0xa084, -+ 0x4c00, 0x8004, 0x2090, 0x00de, 0x700c, 0xa084, 0x07ff, 0x0128, -+ 0x7007, 0x0004, 0x7004, 0xd094, 0x1de8, 0x6814, 0xd0fc, 0x0110, -+ 0x7e1c, 0x0008, 0x7e18, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, -+ 0xa186, 0x0007, 0x0118, 0xa18e, 0x000f, 0x1140, 0x681c, 0xa084, -+ 0x0040, 0x0108, 0xc685, 0x6840, 0x2050, 0x0030, 0x681c, 0xd0ac, -+ 0x1108, 0xc685, 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, -+ 0xa7b8, 0x53a4, 0x273d, 0x87fb, 0x1138, 0x0210, 0x080c, 0x297f, -+ 0x689c, 0xa065, 0x0120, 0x0c88, 0x080c, 0x56ad, 0x1de8, 0x012e, -+ 0x2000, 0x0005, 0x0126, 0x0006, 0x0016, 0x00d6, 0x70f0, 0xa084, -+ 0x4c00, 0x8004, 0x2090, 0xb284, 0x0200, 0x0110, 0x7e18, 0x0008, -+ 0x7e1c, 0x00de, 0x003e, 0x004e, 0xa6b5, 0x000c, 0x6904, 0xa18c, -+ 0x00ff, 0xa186, 0x0007, 0x0118, 0xa18e, 0x000f, 0x1130, 0x681c, -+ 0xa084, 0x0040, 0x0130, 0xc685, 0x0020, 0x681c, 0xd0b4, 0x0108, -+ 0xc685, 0x2049, 0x5622, 0x0016, 0x6904, 0xa18c, 0x00ff, 0xa186, -+ 0x0007, 0x0118, 0xa18e, 0x000f, 0x1110, 0x6840, 0x0008, 0x6828, -+ 0x001e, 0xa055, 0x00d6, 0x0904, 0x56a9, 0x2d70, 0x2e60, 0x7004, -+ 0xa0bc, 0x000f, 0xa7b8, 0x53a4, 0x273d, 0x87fb, 0x1140, 0x0210, -+ 0x080c, 0x297f, 0x709c, 0xa075, 0x2060, 0x05d8, 0x0c80, 0x2705, -+ 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0268, 0x8a51, 0x1110, -+ 0x080c, 0x297f, 0x8738, 0x2705, 0xa005, 0x1d90, 0x709c, 0xa075, -+ 0x2060, 0x0538, 0x08e0, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, -+ 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1210, 0x080c, -+ 0x297f, 0x0016, 0x3208, 0xa18c, 0x0200, 0x0168, 0x0006, 0x2001, -+ 0xb342, 0x2004, 0xd0ec, 0x000e, 0x0118, 0x2071, 0x0020, 0x0028, -+ 0x2071, 0x0050, 0x0010, 0x2071, 0x0020, 0x001e, 0x00de, 0x0804, -+ 0x5593, 0x00de, 0x012e, 0x2000, 0x0005, 0x7008, 0x0006, 0xa084, -+ 0x01e0, 0x000e, 0x0110, 0xa006, 0x0005, 0xa084, 0x0003, 0xa086, -+ 0x0003, 0x1108, 0x0005, 0x2705, 0xac08, 0x2104, 0x701a, 0x8108, -+ 0x2104, 0x701e, 0x8108, 0x2104, 0x7012, 0x8108, 0x2104, 0x7016, -+ 0x6004, 0xa084, 0x0008, 0x0130, 0x8108, 0x2104, 0x7022, 0x8108, -+ 0x2104, 0x7026, 0x7602, 0x7004, 0xa084, 0x0010, 0xc085, 0x7006, -+ 0x8738, 0x2705, 0xa005, 0x1168, 0x609c, 0xa005, 0x01c8, 0x2060, -+ 0x6004, 0xa084, 0x000f, 0xa080, 0x53a4, 0x203d, 0x87fb, 0x090c, -+ 0x297f, 0x8a51, 0x0160, 0x7008, 0x0006, 0xa084, 0x01e0, 0x000e, -+ 0x0110, 0xa006, 0x0028, 0xa084, 0x0003, 0xa086, 0x0003, 0x0005, -+ 0x2051, 0x0000, 0x0005, 0x0126, 0x0006, 0x00d6, 0x70f0, 0xa084, -+ 0x4c00, 0x8004, 0x2090, 0x00de, 0x008e, 0x7108, 0xa184, 0x0003, -+ 0x1190, 0x0016, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0118, -+ 0xa18e, 0x000f, 0x1110, 0x6840, 0x0008, 0x6828, 0x001e, 0xa005, -+ 0x0178, 0x0804, 0x52f7, 0x7108, 0xd1fc, 0x0118, 0x080c, 0x5484, -+ 0x0c20, 0x7007, 0x0010, 0x7108, 0xd1fc, 0x0de8, 0x080c, 0x5484, -+ 0x7008, 0xa086, 0x0008, 0x19c8, 0x7000, 0xa005, 0x19b0, 0x7003, -+ 0x0000, 0x2049, 0x0000, 0x012e, 0x2000, 0x0005, 0x0126, 0x0146, -+ 0x0136, 0x0156, 0x00c6, 0x00d6, 0x70f0, 0xa084, 0x4c00, 0x8004, -+ 0x2090, 0x00de, 0x2049, 0x5736, 0x69b0, 0xad80, 0x0011, 0xa100, -+ 0x20a0, 0xb284, 0x0200, 0x0158, 0x2001, 0xb342, 0x2004, 0xd0ec, -+ 0x0118, 0x2099, 0x0031, 0x0028, 0x2099, 0x0032, 0x0010, 0x2099, -+ 0x0031, 0x700c, 0xa084, 0x07ff, 0x01b0, 0x6928, 0xa100, 0x682a, -+ 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0118, 0x8000, -+ 0x80ac, 0x53a5, 0x700c, 0xa084, 0x07ff, 0x0128, 0x7007, 0x0004, -+ 0x7004, 0xd094, 0x1de8, 0x00ce, 0x2049, 0x0000, 0x7003, 0x0000, -+ 0x015e, 0x013e, 0x014e, 0x012e, 0x2000, 0x0005, 0x2091, 0x6000, -+ 0x2091, 0x8000, 0x78ac, 0xa005, 0x1168, 0x796c, 0x70d0, 0xa106, -+ 0x1148, 0x7814, 0xa005, 0x0130, 0x7817, 0x0000, 0x0e04, 0x5792, -+ 0x2091, 0x4080, 0x7824, 0x8001, 0x7826, 0x1904, 0x5806, 0x7828, -+ 0x7826, 0x7808, 0xd0ec, 0x1904, 0x57ff, 0x2061, 0xda00, 0x2069, -+ 0xb3c0, 0xc7fd, 0x68ec, 0xa005, 0x0130, 0x8001, 0x68ee, 0xa005, -+ 0x1110, 0x080c, 0x5995, 0x6800, 0xa084, 0x000f, 0x0168, 0xa086, -+ 0x0001, 0x0150, 0x6840, 0xa00d, 0x0138, 0x2104, 0xa005, 0x0120, -+ 0x8001, 0x200a, 0x0904, 0x5907, 0x6810, 0xa005, 0x01d0, 0x8001, -+ 0x6812, 0x11b8, 0x68c3, 0x0001, 0xd7fc, 0x1148, 0x7808, 0xd0ec, -+ 0x0118, 0x2009, 0x0102, 0x0028, 0x2009, 0x0202, 0x0010, 0x2009, -+ 0x0102, 0x684c, 0xc08d, 0x200a, 0x6868, 0xa005, 0x0110, 0x080c, -+ 0x260c, 0x6884, 0xa005, 0x0140, 0x8001, 0x6886, 0x1128, 0x686b, -+ 0x0000, 0x68f0, 0xc0c5, 0x68f2, 0x68f0, 0xd0fc, 0x01b0, 0xc0fc, -+ 0x68f2, 0x20a9, 0x0200, 0x6034, 0xa005, 0x0158, 0x8001, 0x6036, -+ 0x68f0, 0xc0fd, 0x68f2, 0x1128, 0x6010, 0xa005, 0x0110, 0x080c, -+ 0x260c, 0xace0, 0x0010, 0x1f04, 0x57eb, 0xd7fc, 0x0138, 0x2061, -+ 0xba00, 0x2069, 0xb380, 0xc7fc, 0x0804, 0x57a2, 0x0409, 0x782c, -+ 0x8001, 0x782e, 0x11b8, 0x7830, 0x782e, 0x2061, 0xba00, 0x2069, -+ 0xb380, 0xc7fc, 0x6808, 0xa005, 0x0110, 0x080c, 0x5880, 0xd7fc, -+ 0x1148, 0x7808, 0xd0ec, 0x1130, 0x2061, 0xda00, 0x2069, 0xb3c0, -+ 0xc7fd, 0x0c80, 0x780c, 0xd0e4, 0x1100, 0x2091, 0x8001, 0x0005, -+ 0x7834, 0x8001, 0x7836, 0x1904, 0x587f, 0x7838, 0x7836, 0x2069, -+ 0xb380, 0xc7fc, 0x7808, 0x2079, 0x0200, 0xd0ec, 0x0110, 0x2079, -+ 0x0100, 0x68f8, 0xa005, 0x0138, 0x7de0, 0xa504, 0x1120, 0x68fa, -+ 0x68f0, 0xc0bc, 0x68f2, 0x2079, 0xb340, 0x680c, 0xa005, 0x1110, -+ 0x2001, 0x0101, 0x8001, 0x680e, 0xd7fc, 0x1118, 0xa080, 0xfa00, -+ 0x0010, 0xa080, 0xfb10, 0x2040, 0x2004, 0xa065, 0x01e0, 0x6024, -+ 0xa005, 0x01b0, 0x8001, 0x6026, 0x1198, 0x6800, 0xa005, 0x0130, -+ 0x6850, 0xac06, 0x1118, 0x080c, 0x5907, 0x0068, 0x6868, 0xa005, -+ 0x0118, 0x6027, 0x0001, 0x0020, 0x080c, 0x58c0, 0x2804, 0x0c28, -+ 0x6000, 0x2c40, 0x0c10, 0xd7fc, 0x1150, 0x7808, 0xd0ec, 0x1138, -+ 0x2069, 0xb3c0, 0xc7fd, 0x2079, 0x0100, 0x0804, 0x5839, 0x0005, -+ 0xa00e, 0x20a9, 0x0200, 0x6008, 0xd09c, 0x0558, 0x6024, 0xa005, -+ 0x0118, 0x8001, 0x6026, 0x0418, 0x6008, 0xc09c, 0xd084, 0x1110, -+ 0xd0ac, 0x01c0, 0x600a, 0x6004, 0xa005, 0x01d8, 0x00d6, 0x00c6, -+ 0x0016, 0x2068, 0x6010, 0x8001, 0x6012, 0x080c, 0x3be8, 0x2d00, -+ 0x2c68, 0x2060, 0x080c, 0x1d3b, 0x080c, 0x2076, 0x001e, 0x00ce, -+ 0x00de, 0x0038, 0xc0bd, 0x600a, 0xa18d, 0x0001, 0x0010, 0xa18d, -+ 0x0100, 0xace0, 0x0010, 0x1f04, 0x5883, 0xa184, 0x0001, 0x0130, -+ 0xa18c, 0xfffe, 0x690a, 0x080c, 0x260c, 0x0008, 0x690a, 0x0005, -+ 0x2c00, 0x6882, 0x6714, 0x6f7a, 0x6017, 0x0000, 0x602b, 0x0000, -+ 0x601b, 0x0006, 0x60b4, 0xa084, 0x5f00, 0x601e, 0x6020, 0xa084, -+ 0x00ff, 0xa085, 0x0060, 0x6022, 0x6000, 0x2042, 0x6860, 0xac06, -+ 0x1110, 0x2800, 0x6862, 0x080c, 0x1cc4, 0x6818, 0xa005, 0x0530, -+ 0x8001, 0x681a, 0x681a, 0x6808, 0xc0a4, 0x680a, 0x6810, 0x8001, -+ 0x03e8, 0x6812, 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x080c, -+ 0x2085, 0xd7fc, 0x1118, 0x2069, 0xb380, 0x0010, 0x2069, 0xb3c0, -+ 0x690c, 0xa184, 0x0100, 0x2001, 0x0006, 0x1128, 0x6883, 0x0000, -+ 0x697e, 0x2001, 0x0004, 0x2708, 0x080c, 0x2601, 0x0005, 0x00d6, -+ 0x00e6, 0x2d70, 0xd7fc, 0x1148, 0x7808, 0xd0ec, 0x0118, 0x2069, -+ 0x0100, 0x0028, 0x2069, 0x0200, 0x0010, 0x2069, 0x0100, 0x7000, -+ 0xa084, 0x000f, 0x0904, 0x595c, 0xa086, 0x0007, 0x1140, 0x00f6, -+ 0x2d78, 0x7094, 0x2068, 0x080c, 0x4361, 0x00fe, 0x04a8, 0x7050, -+ 0x2060, 0x080c, 0x2899, 0x601b, 0x0006, 0x6858, 0xa084, 0x5f00, -+ 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f, -+ 0x0000, 0x6033, 0x0000, 0x6808, 0xa084, 0xfffd, 0x680a, 0x6830, -+ 0xd0b4, 0x01b0, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, 0xd094, -+ 0x0110, 0x1f04, 0x5946, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, -+ 0xd084, 0x0110, 0x1f04, 0x594f, 0x20a9, 0x00fa, 0x1f04, 0x5956, -+ 0x681b, 0x0050, 0x706b, 0x0007, 0x00ee, 0x00de, 0x0005, 0x2079, -+ 0xb340, 0x0441, 0x0089, 0x00d9, 0x2009, 0x0002, 0x2069, 0xb3c0, -+ 0x680b, 0x0000, 0x680f, 0x0000, 0x6813, 0x0000, 0x8109, 0x0118, -+ 0x2069, 0xb380, 0x0ca8, 0x0005, 0x7808, 0xd0ec, 0x0118, 0x2019, -+ 0x00cc, 0x0010, 0x2019, 0x007b, 0x7b2e, 0x7b32, 0x0005, 0x780c, -+ 0xd0e4, 0x1118, 0x2019, 0x0040, 0x0010, 0x2019, 0x0026, 0x7b36, -+ 0x7b3a, 0x0005, 0x780c, 0xd0e4, 0x1118, 0x2019, 0x3f94, 0x0010, -+ 0x2019, 0x2624, 0x7b26, 0x7b2a, 0x0005, 0x6a54, 0xa285, 0x0000, -+ 0x01f0, 0x6958, 0x6bdc, 0xa300, 0x00c6, 0x2164, 0x6304, 0x83ff, -+ 0x1138, 0x8211, 0x0148, 0x8108, 0xa11a, 0x0eb8, 0x69dc, 0x0ca8, -+ 0x68ef, 0x000a, 0x00ce, 0x0005, 0x6954, 0x6adc, 0x2264, 0x6008, -+ 0xc0b5, 0x600a, 0x8210, 0x8109, 0x1dc8, 0x6956, 0x00ce, 0x0005, -+ 0x1d04, 0x59b8, 0x2091, 0x6000, 0x1d04, 0x59bc, 0x2091, 0x6000, -+ 0x70ec, 0xd0dc, 0x1118, 0xd0d4, 0x0508, 0x0410, 0x2008, 0x7808, -+ 0xd0ec, 0x0158, 0xd1c4, 0x15b8, 0x780c, 0xc0c5, 0x780e, 0x7808, -+ 0xc0f5, 0x780a, 0xd0ec, 0x0558, 0x0438, 0xae8e, 0x0100, 0x0138, -+ 0x780c, 0xc0f5, 0xc0c5, 0x780e, 0xd0d4, 0x1508, 0x00e8, 0x780c, -+ 0xc0fd, 0xc0c5, 0x780e, 0xd0d4, 0x11d0, 0x00b0, 0xd0e4, 0x01c8, -+ 0x1d04, 0x59e8, 0x2091, 0x6000, 0x2009, 0x000c, 0x1d04, 0x59ee, -+ 0x2091, 0x6000, 0x8109, 0x1dd0, 0x70e4, 0xa084, 0x01ff, 0xa086, -+ 0x01ff, 0x1110, 0x70ec, 0x0850, 0x7804, 0xd08c, 0x0110, 0x681b, -+ 0x000c, 0x70a0, 0x70a2, 0x0005, 0x0020, 0x002b, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, -+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0014, -+ 0x0014, 0x9851, 0x0014, 0x0014, 0x98f4, 0x98e1, 0x0014, 0x0014, -+ 0x0014, 0x0080, 0x01a3, 0x0000, 0x0201, 0x0604, 0x0c08, 0x2120, -+ 0x4022, 0xf880, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, -+ 0x0000, 0x0000, 0x0000, 0x300b, 0xa201, 0x0014, 0xa200, 0x0014, -+ 0xa200, 0x0214, 0xa202, 0x3806, 0x8839, 0x20c3, 0x0864, 0xa838, -+ 0x28c1, 0x9cc2, 0xa203, 0x300c, 0x2846, 0x8161, 0x846a, 0x8300, -+ 0x1856, 0x883a, 0xa804, 0x28f2, 0x9ca6, 0xa8f4, 0x300c, 0x28e1, -+ 0x9ca6, 0x28a2, 0x7162, 0xa820, 0x2822, 0xa207, 0x64a7, 0x2882, -+ 0x7163, 0xa81a, 0x2001, 0xa80f, 0xa206, 0x64c0, 0x6de0, 0x67a0, -+ 0x6fc0, 0x882b, 0x1814, 0x883b, 0x7824, 0x68c1, 0x7864, 0x883e, -+ 0xa802, 0x8576, 0x8677, 0x206c, 0x28c1, 0x9cc2, 0x2045, 0x2104, -+ 0x20a1, 0x2080, 0x7961, 0xa8db, 0xa209, 0x0904, 0xa20e, 0xa808, -+ 0xa205, 0xa300, 0x1872, 0x879a, 0x883c, 0x1fe2, 0xc601, 0xa20a, -+ 0x8000, 0x85a1, 0x806f, 0x9422, 0x84a2, 0x856e, 0x0704, 0x9ca6, -+ 0x0014, 0xa204, 0xa300, 0x3009, 0x19e2, 0xf864, 0x856e, 0x883f, -+ 0x08e6, 0xa8f7, 0xf881, 0xa8eb, 0xc007, 0xf8c1, 0x0016, 0x85b2, -+ 0x80f0, 0x9532, 0xfb02, 0x1de2, 0x0014, 0x8532, 0xf241, 0x0014, -+ 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, 0x0014, 0xa208, 0x6043, 0x8008, -+ 0x1dc1, 0x0016, 0x8160, 0x842a, 0x8190, 0xf041, 0x3008, 0x84a8, -+ 0x11d7, 0x7042, 0x20dd, 0x0011, 0x20d5, 0x8822, 0x0016, 0x3008, -+ 0x2846, 0x1011, 0xa8fd, 0x2081, 0x2802, 0x1011, 0xa8fc, 0xa88f, -+ 0x20a1, 0x283d, 0x1011, 0xa8fc, 0xa20b, 0x0017, 0x300c, 0xa300, -+ 0x1de2, 0xd387, 0x0210, 0xa800, 0x26e0, 0x873a, 0xfb02, 0x19f2, -+ 0x1fe2, 0x0014, 0xa20d, 0x3806, 0x0210, 0x9cc7, 0x0704, 0x0017, -+ 0x60ff, 0x300c, 0x807f, 0x9521, 0x85a1, 0x806f, 0x9422, 0x84a2, -+ 0x8720, 0xa211, 0x9d72, 0x8772, 0x8837, 0x2101, 0xa821, 0x10d3, -+ 0x78e2, 0x9d76, 0xa8fc, 0xd984, 0xf0e2, 0xf0a1, 0xa820, 0x0014, -+ 0x8831, 0xd166, 0x8830, 0x800f, 0x9401, 0xb520, 0xc802, 0x8820, -+ 0xa80f, 0x2301, 0xa80d, 0x10d3, 0x78e4, 0x9d76, 0x8821, 0x8820, -+ 0xa8e6, 0xf123, 0xf142, 0xf101, 0xa865, 0x10d3, 0x70f6, 0x8832, -+ 0x8203, 0x870c, 0xd99e, 0x6001, 0x0014, 0x6848, 0x0214, 0x8827, -+ 0x300a, 0x0013, 0xa21b, 0x9d72, 0x2001, 0xa853, 0x8201, 0x1852, -+ 0xd183, 0x8834, 0x8001, 0xa801, 0x3027, 0x84a8, 0x1a56, 0x8833, -+ 0x0014, 0xa218, 0x6981, 0x9d7d, 0x6926, 0x6908, 0x8080, 0x9521, -+ 0xc003, 0x1ab4, 0xa809, 0xa80a, 0x1a34, 0xa806, 0x8080, 0x9521, -+ 0xc002, 0x1a94, 0xa801, 0x1a14, 0x7021, 0x0014, 0xa300, 0x69e4, -+ 0x8023, 0x16e1, 0x8001, 0x10f1, 0x6946, 0xa213, 0x1462, 0xa213, -+ 0x8000, 0x16e1, 0xa808, 0x6161, 0x0014, 0xa214, 0x61c2, 0x8002, -+ 0x14e1, 0x8004, 0x16e1, 0x0101, 0x300a, 0x8827, 0x0012, 0x8080, -+ 0x940c, 0xc81d, 0x8001, 0x8492, 0x0013, 0x8000, 0x84a4, 0x8190, -+ 0x0016, 0x11c3, 0x211e, 0x870e, 0xa21d, 0x0014, 0x9d7d, 0x0014, -+ 0xa300, 0x8181, 0x842a, 0x84a8, 0x1ce6, 0x882c, 0x0016, 0xa212, -+ 0x9d72, 0x10d3, 0x70e4, 0x0004, 0x800f, 0x9426, 0xcc1a, 0x9d76, -+ 0xa8f8, 0x878e, 0x0016, 0xa21c, 0x1035, 0x7965, 0x8001, 0x9405, -+ 0xc001, 0xa817, 0xa82f, 0xa8a5, 0xa210, 0x3807, 0x300c, 0x807f, -+ 0x9521, 0x85a1, 0x806f, 0x9422, 0x84a2, 0x817e, 0x872b, 0x8772, -+ 0x7965, 0x8001, 0x9405, 0xc001, 0xa804, 0xa81c, 0xa892, 0x0014, -+ 0xa8a6, 0xa21f, 0x8080, 0xa521, 0x85a1, 0x8090, 0xa422, 0x84a2, -+ 0x6981, 0x9d7d, 0x6923, 0x6903, 0x18b4, 0xa802, 0xa809, 0x1894, -+ 0x807f, 0x9521, 0x85a1, 0x806f, 0x9422, 0x84a2, 0x7021, 0x0014, -+ 0xa300, 0x0014, 0xa220, 0x8080, 0xa521, 0x85a1, 0x8090, 0xa422, -+ 0x84a2, 0x6981, 0x9d7d, 0x6923, 0x6903, 0x18b4, 0xa802, 0xa80c, -+ 0x1894, 0x807f, 0x9521, 0x85a1, 0x806f, 0x9422, 0x84a2, 0x80fd, -+ 0x9405, 0x8485, 0x7021, 0x0014, 0xa300, 0xa8ca, 0x0000, 0x0710 -+}; -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/asm_2100.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,8147 @@ -+/* @(#)asm_2100.h 1.5 */ -+/* -+ * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Qlogic, Inc. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms are permitted provided -+ * that the following conditions are met: -+ * 1. Redistribution of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistribution in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+/* -+ * Some very early boards have problems loading firmware that is larger than -+ * 0x8000 words. In order to be able to provide at least *some* support -+ * for such ancient cards, an alternate firmware set is provided. This firmware -+ * isn't all that great, but, hey, it's better than nothing. -+ * -+ * Define USE_SMALLER_2100_FIRMWARE to select this. -+ */ -+#ifndef USE_SMALLER_2100_FIRMWARE -+/************************************************************************ -+ * * -+ * --- ISP2100 Fabric Initiator/Target Firmware --- * -+ * with expanded LUN addressing * -+ * and FcTape (FCP-2) support * -+ * * -+ ************************************************************************/ -+/* -+ * Firmware Version 1.19.24 (14:02 Jul 16, 2002) -+ */ -+static const u_int16_t isp_2100_risc_code[] = { -+ 0x0078, 0x102d, 0x0000, 0x95f1, 0x0000, 0x0001, 0x0013, 0x0018, -+ 0x0017, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, -+ 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, -+ 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3231, 0x3030, 0x2046, 0x6972, -+ 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, -+ 0x312e, 0x3139, 0x2020, 0x2020, 0x2400, 0x2091, 0x2000, 0x20c1, -+ 0x0021, 0x2039, 0xffff, 0x2019, 0xaaaa, 0x2760, 0x2069, 0x7fff, -+ 0x20c1, 0x0020, 0x2c2c, 0x2d34, 0x2762, 0x236a, 0x2c24, 0x2d04, -+ 0x266a, 0x2562, 0xa406, 0x00c0, 0x1052, 0x20c1, 0x0021, 0x2c2c, -+ 0x2362, 0x2c04, 0x2562, 0xa306, 0x0040, 0x1052, 0x20c1, 0x0020, -+ 0x2039, 0x8fff, 0x20a1, 0xad00, 0x2708, 0x810d, 0x810d, 0x810d, -+ 0x810d, 0xa18c, 0x000f, 0x2001, 0x000a, 0xa112, 0xa00e, 0x21a8, -+ 0x41a4, 0x3400, 0x8211, 0x00c0, 0x105f, 0x2708, 0x3400, 0xa102, -+ 0x0040, 0x106f, 0x0048, 0x106f, 0x20a8, 0xa00e, 0x41a4, 0x20a1, -+ 0xa5f1, 0x2009, 0x0000, 0x20a9, 0x070f, 0x41a4, 0x3400, 0x20c9, -+ 0xaaff, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x25c7, -+ 0x2051, 0xa600, 0x2a70, 0x7762, 0xa786, 0x8fff, 0x0040, 0x1092, -+ 0x705f, 0xcd00, 0x705b, 0xccf1, 0x7067, 0x0200, 0x706b, 0x0200, -+ 0x0078, 0x109a, 0x705b, 0xbd01, 0x7067, 0x0100, 0x706b, 0x0100, -+ 0x705f, 0xbd00, 0x1078, 0x12df, 0x1078, 0x13ca, 0x1078, 0x1577, -+ 0x1078, 0x1ce9, 0x1078, 0x42ec, 0x1078, 0x76bf, 0x1078, 0x1355, -+ 0x1078, 0x2ac0, 0x1078, 0x4e93, 0x1078, 0x49a3, 0x1078, 0x594a, -+ 0x1078, 0x2263, 0x1078, 0x5c43, 0x1078, 0x5485, 0x1078, 0x2162, -+ 0x1078, 0x2240, 0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x10cf, -+ 0x7820, 0xa086, 0x0002, 0x00c0, 0x10cf, 0x7823, 0x4000, 0x0068, -+ 0x10c7, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, -+ 0x7003, 0x0000, 0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000, -+ 0xa08e, 0x0003, 0x00c0, 0x10ef, 0x1078, 0x365e, 0x1078, 0x2ae8, -+ 0x1078, 0x4ee3, 0x1078, 0x4b66, 0x2009, 0x0100, 0x2104, 0xa082, -+ 0x0002, 0x0048, 0x10f3, 0x1078, 0x5966, 0x0078, 0x10d6, 0x1079, -+ 0x10f7, 0x0078, 0x10dc, 0x1078, 0x7197, 0x0078, 0x10eb, 0x1101, -+ 0x1102, 0x11be, 0x10ff, 0x1246, 0x12dc, 0x12dd, 0x12de, 0x1078, -+ 0x1332, 0x007c, 0x127e, 0x0f7e, 0x2091, 0x8000, 0x7000, 0xa086, -+ 0x0001, 0x00c0, 0x1198, 0x1078, 0x3aec, 0x2079, 0x0100, 0x7844, -+ 0xa005, 0x00c0, 0x1198, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x1078, -+ 0x1adf, 0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, -+ 0x8010, 0x73c4, 0x1078, 0x361b, 0x2001, 0xffff, 0x1078, 0x5ae6, -+ 0x723c, 0xc284, 0x723e, 0x2001, 0xa60c, 0x2014, 0xc2ac, 0x2202, -+ 0x1078, 0x6f9f, 0x2011, 0x0004, 0x1078, 0x8d1b, 0x1078, 0x489e, -+ 0x1078, 0x42d4, 0x0040, 0x1144, 0x7087, 0x0001, 0x70bf, 0x0000, -+ 0x1078, 0x3c9e, 0x0078, 0x1198, 0x1078, 0x4967, 0x0040, 0x114d, -+ 0x7a0c, 0xc2b4, 0x7a0e, 0x0078, 0x1159, 0x1078, 0x90a6, 0x70cc, -+ 0xd09c, 0x00c0, 0x1159, 0x7098, 0xa005, 0x0040, 0x1159, 0x1078, -+ 0x42b8, 0x70d7, 0x0000, 0x70d3, 0x0000, 0x72cc, 0x2079, 0xa652, -+ 0x7804, 0xd0ac, 0x0040, 0x1165, 0xc295, 0x72ce, 0xa296, 0x0004, -+ 0x0040, 0x1186, 0x2011, 0x0001, 0x1078, 0x8d1b, 0x7093, 0x0000, -+ 0x7097, 0xffff, 0x7003, 0x0002, 0x0f7f, 0x1078, 0x2677, 0x2011, -+ 0x0005, 0x1078, 0x70e0, 0x1078, 0x62d1, 0x0c7e, 0x2061, 0x0100, -+ 0x60e3, 0x0008, 0x0c7f, 0x127f, 0x0078, 0x119a, 0x7093, 0x0000, -+ 0x7097, 0xffff, 0x7003, 0x0002, 0x2011, 0x0005, 0x1078, 0x70e0, -+ 0x1078, 0x62d1, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, -+ 0x0f7f, 0x127f, 0x007c, 0x0c7e, 0x20a9, 0x0082, 0x2009, 0x007e, -+ 0x017e, 0x027e, 0x037e, 0x2110, 0x027e, 0x2019, 0x0029, 0x1078, -+ 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f, 0x027f, 0x017f, 0x1078, -+ 0x298e, 0x8108, 0x00f0, 0x11a0, 0x0c7f, 0x706f, 0x0000, 0x7070, -+ 0xa084, 0x00ff, 0x7072, 0x709b, 0x0000, 0x007c, 0x127e, 0x2091, -+ 0x8000, 0x7000, 0xa086, 0x0002, 0x00c0, 0x1244, 0x7094, 0xa086, -+ 0xffff, 0x0040, 0x11d1, 0x1078, 0x2677, 0x1078, 0x62d1, 0x0078, -+ 0x1244, 0x70cc, 0xd09c, 0x0040, 0x11fd, 0xd084, 0x0040, 0x11fd, -+ 0x0f7e, 0x2079, 0x0100, 0x790c, 0xc1b5, 0x790e, 0x0f7f, 0xd08c, -+ 0x0040, 0x11fd, 0x70d0, 0xa086, 0xffff, 0x0040, 0x11f9, 0x1078, -+ 0x27f7, 0x1078, 0x62d1, 0x70cc, 0xd094, 0x00c0, 0x1244, 0x2011, -+ 0x0001, 0x2019, 0x0000, 0x1078, 0x282f, 0x1078, 0x62d1, 0x0078, -+ 0x1244, 0x70d4, 0xa005, 0x00c0, 0x1244, 0x7090, 0xa005, 0x00c0, -+ 0x1244, 0x1078, 0x4967, 0x00c0, 0x1244, 0x2001, 0xa653, 0x2004, -+ 0xd0ac, 0x0040, 0x1227, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009, -+ 0x0000, 0x017e, 0x1078, 0x45c4, 0x00c0, 0x121a, 0x6000, 0xd0ec, -+ 0x00c0, 0x1222, 0x017f, 0x8108, 0x00f0, 0x1211, 0x0c7f, 0x157f, -+ 0x0078, 0x1227, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x1244, 0x7003, -+ 0x0003, 0x7097, 0xffff, 0x2001, 0x0000, 0x1078, 0x24e8, 0x1078, -+ 0x3699, 0x2001, 0xa8b2, 0x2004, 0xa086, 0x0005, 0x00c0, 0x123c, -+ 0x2011, 0x0000, 0x1078, 0x70e0, 0x2011, 0x0000, 0x1078, 0x70ea, -+ 0x1078, 0x62d1, 0x1078, 0x639b, 0x127f, 0x007c, 0x017e, 0x0f7e, -+ 0x127e, 0x2091, 0x8000, 0x2079, 0x0100, 0x2009, 0x00f7, 0x1078, -+ 0x42a1, 0x7940, 0xa18c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0040, -+ 0x125b, 0x7827, 0x0040, 0xd19c, 0x0040, 0x1260, 0x7827, 0x0008, -+ 0x007e, 0x037e, 0x157e, 0xa006, 0x1078, 0x5ae6, 0x7900, 0xa18a, -+ 0x0003, 0x0050, 0x1289, 0x7954, 0xd1ac, 0x00c0, 0x1289, 0x2009, -+ 0x00f8, 0x1078, 0x42a1, 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9, -+ 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x1281, 0x7824, 0xd0ac, 0x00c0, -+ 0x12ca, 0x00f0, 0x1279, 0x2001, 0x0001, 0x1078, 0x24e8, 0x0078, -+ 0x12d5, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0050, 0x00e0, -+ 0x128f, 0x2091, 0x6000, 0x00f0, 0x128f, 0x7853, 0x0400, 0x782f, -+ 0x0000, 0x2009, 0x00f8, 0x1078, 0x42a1, 0x20a9, 0x000e, 0x0005, -+ 0x00f0, 0x129f, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843, 0x0010, -+ 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040, 0x12b4, -+ 0x7824, 0xd0ac, 0x00c0, 0x12ca, 0x8319, 0x00c0, 0x12aa, 0x2009, -+ 0xa632, 0x2104, 0x8000, 0x200a, 0xa084, 0xfff0, 0x0040, 0x12c4, -+ 0x200b, 0x0000, 0x1078, 0x2588, 0x2001, 0x0001, 0x1078, 0x24e8, -+ 0x0078, 0x12d3, 0x2001, 0xa632, 0x2003, 0x0000, 0x7828, 0xc09d, -+ 0x782a, 0x7827, 0x0048, 0x7853, 0x0400, 0x157f, 0x037f, 0x007f, -+ 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c, 0x007c, 0x2a70, -+ 0x2061, 0xa8ad, 0x2063, 0x0001, 0x6007, 0x0013, 0x600b, 0x0018, -+ 0x600f, 0x0017, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048, -+ 0x12f5, 0x7053, 0xffff, 0x0078, 0x12f7, 0x7053, 0x0000, 0x7057, -+ 0xffff, 0x706f, 0x0000, 0x7073, 0x0000, 0x1078, 0x90a6, 0x2061, -+ 0xa88d, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f, -+ 0x0200, 0x6013, 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f, -+ 0x07d0, 0x2061, 0xa895, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b, -+ 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b, -+ 0x0001, 0x601f, 0x0000, 0x2061, 0xa8a5, 0x6003, 0x514c, 0x6007, -+ 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001, 0xa626, 0x2003, -+ 0x0000, 0x007c, 0x2091, 0x8000, 0x0068, 0x1334, 0x007e, 0x017e, -+ 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, 0x133a, 0x017f, 0x792e, -+ 0x007f, 0x782a, 0x007f, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002, -+ 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2079, 0xa600, -+ 0x7803, 0x0005, 0x0078, 0x1352, 0x007c, 0x2071, 0xa600, 0x715c, -+ 0x712e, 0x2021, 0x0001, 0xa190, 0x002d, 0xa298, 0x002d, 0x0048, -+ 0x136b, 0x7060, 0xa302, 0x00c8, 0x136b, 0x220a, 0x2208, 0x2310, -+ 0x8420, 0x0078, 0x135d, 0x200b, 0x0000, 0x74aa, 0x74ae, 0x007c, -+ 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa600, 0x70ac, 0xa0ea, -+ 0x0010, 0x00c8, 0x137e, 0xa06e, 0x0078, 0x1388, 0x8001, 0x70ae, -+ 0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, -+ 0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa600, 0x127e, 0x2091, -+ 0x8000, 0x70ac, 0x8001, 0x00c8, 0x1398, 0xa06e, 0x0078, 0x13a1, -+ 0x70ae, 0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, -+ 0x0000, 0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, -+ 0x2071, 0xa600, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70ac, 0x8000, -+ 0x70ae, 0x127f, 0x0e7f, 0x007c, 0x8dff, 0x0040, 0x13c0, 0x6804, -+ 0x6807, 0x0000, 0x007e, 0x1078, 0x13a4, 0x0d7f, 0x0078, 0x13b4, -+ 0x007c, 0x0e7e, 0x2071, 0xa600, 0x70ac, 0xa08a, 0x0010, 0xa00d, -+ 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa8d6, 0x7007, 0x0000, 0x701b, -+ 0x0000, 0x701f, 0x0000, 0x2071, 0x0000, 0x7010, 0xa085, 0x8004, -+ 0x7012, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x0e7e, 0x2270, -+ 0x700b, 0x0000, 0x2071, 0xa8d6, 0x7018, 0xa088, 0xa8df, 0x220a, -+ 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x00c0, 0x13f6, -+ 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1408, 0x0f7f, 0x0e7f, 0x127f, -+ 0x007c, 0x0e7e, 0x2071, 0xa8d6, 0x7004, 0xa005, 0x00c0, 0x1406, -+ 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1408, 0x0f7f, 0x0e7f, 0x007c, -+ 0x7000, 0x0079, 0x140b, 0x140f, 0x1479, 0x1496, 0x1496, 0x7018, -+ 0x711c, 0xa106, 0x00c0, 0x1417, 0x7007, 0x0000, 0x007c, 0x0d7e, -+ 0xa180, 0xa8df, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007, -+ 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c, -+ 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804, -+ 0x0d7f, 0xd084, 0x0040, 0x1439, 0x7007, 0x0001, 0x1078, 0x143e, -+ 0x007c, 0x7007, 0x0002, 0x1078, 0x1454, 0x007c, 0x017e, 0x027e, -+ 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1449, 0x2110, -+ 0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803, -+ 0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e, 0x147e, -+ 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c, -+ 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1468, 0x2110, 0xa006, -+ 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020, 0x3300, -+ 0x7016, 0x7803, 0x0001, 0x157f, 0x147f, 0x137f, 0x027f, 0x017f, -+ 0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0xa6fa, 0x20a1, 0x0018, -+ 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000, -+ 0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, 0x700b, -+ 0xa6f5, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e, 0x147e, -+ 0x157e, 0x2001, 0xa729, 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026, -+ 0x2001, 0xa72a, 0x20ac, 0x53a6, 0x2099, 0xa72b, 0x20a1, 0x0018, -+ 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000, -+ 0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b, -+ 0xa726, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0e7e, -+ 0x2071, 0xa8d6, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803, 0x0002, -+ 0xd1fc, 0x0040, 0x14d0, 0xa18c, 0x0700, 0x7004, 0x1079, 0x14d4, -+ 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x1408, 0x14dc, 0x1509, 0x1531, -+ 0x1564, 0x14da, 0x0078, 0x14da, 0xa18c, 0x0700, 0x00c0, 0x1502, -+ 0x137e, 0x147e, 0x157e, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803, -+ 0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f, -+ 0x137f, 0x700c, 0xa005, 0x0040, 0x151e, 0x1078, 0x143e, 0x007c, -+ 0x7008, 0xa080, 0x0002, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, -+ 0x1408, 0x007c, 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x0078, -+ 0x14fd, 0xa18c, 0x0700, 0x00c0, 0x1514, 0x700c, 0xa005, 0x0040, -+ 0x151e, 0x1078, 0x1454, 0x007c, 0x7008, 0xa080, 0x0002, 0x2003, -+ 0x0200, 0x7007, 0x0000, 0x1078, 0x1408, 0x007c, 0x0d7e, 0x7008, -+ 0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e, 0x783c, -+ 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078, 0x1408, -+ 0x007c, 0xa18c, 0x0700, 0x00c0, 0x155e, 0x137e, 0x147e, 0x157e, -+ 0x2001, 0xa6f8, 0x2004, 0xa080, 0x000d, 0x20a0, 0x2099, 0x0014, -+ 0x7803, 0x0040, 0x20a9, 0x0020, 0x53a5, 0x2001, 0xa6fa, 0x2004, -+ 0xd0bc, 0x0040, 0x1554, 0x2001, 0xa703, 0x2004, 0xa080, 0x000d, -+ 0x20a0, 0x20a9, 0x0020, 0x53a5, 0x157f, 0x147f, 0x137f, 0x7007, -+ 0x0000, 0x1078, 0x4f8c, 0x1078, 0x1408, 0x007c, 0x2011, 0x8003, -+ 0x1078, 0x361b, 0x0078, 0x1562, 0xa18c, 0x0700, 0x00c0, 0x1571, -+ 0x2001, 0xa728, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x1408, -+ 0x007c, 0x2011, 0x8004, 0x1078, 0x361b, 0x0078, 0x1575, 0x127e, -+ 0x2091, 0x2100, 0x2079, 0x0030, 0x2071, 0xa8e7, 0x7803, 0x0004, -+ 0x7003, 0x0000, 0x700f, 0xa8ed, 0x7013, 0xa8ed, 0x780f, 0x0076, -+ 0x7803, 0x0004, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007, 0x0079, -+ 0x1591, 0x1599, 0x15df, 0x1599, 0x1599, 0x1599, 0x15c4, 0x15a8, -+ 0x159d, 0xa085, 0x0001, 0x0078, 0x15f9, 0x684c, 0xd0bc, 0x0040, -+ 0x1599, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078, 0x15e7, -+ 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0, 0x1599, 0x684c, 0xd0bc, -+ 0x0040, 0x1599, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804, 0x681a, -+ 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, -+ 0x6832, 0x6858, 0x0078, 0x15ef, 0xa18c, 0x00ff, 0xa186, 0x0015, -+ 0x00c0, 0x1599, 0x684c, 0xd0ac, 0x0040, 0x1599, 0x6804, 0x681a, -+ 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, -+ 0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0078, 0x15ef, 0x684c, -+ 0xd0ac, 0x0040, 0x1599, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c, -+ 0x000f, 0xa188, 0x206a, 0x210c, 0x6932, 0x2d08, 0x691a, 0x6826, -+ 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980, -+ 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a, -+ 0x2004, 0x82ff, 0x0040, 0x161c, 0xa280, 0x0004, 0x0d7e, 0x206c, -+ 0x684c, 0xd0dc, 0x00c0, 0x1618, 0x1078, 0x158c, 0x0040, 0x1618, -+ 0x0d7f, 0xa280, 0x0000, 0x2003, 0x0002, 0xa016, 0x0078, 0x161c, -+ 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e, 0x027e, -+ 0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005, 0x00c0, -+ 0x1630, 0x7206, 0x2001, 0x1651, 0x007e, 0x2260, 0x0078, 0x17e0, -+ 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108, 0xa182, -+ 0xa908, 0x0048, 0x163d, 0x2009, 0xa8ed, 0x710e, 0x7010, 0xa102, -+ 0xa082, 0x0009, 0x0040, 0x1648, 0xa080, 0x001b, 0x00c0, 0x164b, -+ 0x2009, 0x0138, 0x200a, 0x7000, 0xa005, 0x00c0, 0x1651, 0x1078, -+ 0x17c1, 0x127f, 0x007c, 0x127e, 0x027e, 0x037e, 0x0c7e, 0x007e, -+ 0x2091, 0x2100, 0x007f, 0x047f, 0x037f, 0x027f, 0x0d7e, 0x0c7e, -+ 0x2460, 0x6110, 0x2168, 0x6a62, 0x6b5e, 0xa005, 0x0040, 0x16dd, -+ 0x6808, 0xa005, 0x0040, 0x174a, 0x7000, 0xa005, 0x00c0, 0x1672, -+ 0x0078, 0x16d2, 0x700c, 0x7110, 0xa106, 0x00c0, 0x1753, 0x7004, -+ 0xa406, 0x00c0, 0x16d2, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, -+ 0x168f, 0x047e, 0x1078, 0x1913, 0x047f, 0x2460, 0x6010, 0xa080, -+ 0x0002, 0x2004, 0xa005, 0x0040, 0x174a, 0x0078, 0x166c, 0x2001, -+ 0x0207, 0x2004, 0xd09c, 0x00c0, 0x167b, 0x7804, 0xa084, 0x6000, -+ 0x0040, 0x16a0, 0xa086, 0x6000, 0x0040, 0x16a0, 0x0078, 0x167b, -+ 0x7100, 0xa186, 0x0002, 0x00c0, 0x16c0, 0x0e7e, 0x2b68, 0x6818, -+ 0x2060, 0x1078, 0x203f, 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0, -+ 0x16b5, 0x7108, 0x720c, 0x0078, 0x16b7, 0x7110, 0x7214, 0x6810, -+ 0xa100, 0x6812, 0x6814, 0xa201, 0x6816, 0x0e7f, 0x0078, 0x16c4, -+ 0xa186, 0x0001, 0x00c0, 0x16cc, 0x7820, 0x6910, 0xa100, 0x6812, -+ 0x7824, 0x6914, 0xa101, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, -+ 0x7004, 0x2060, 0x6100, 0xa18e, 0x0004, 0x00c0, 0x1753, 0x2009, -+ 0x0048, 0x1078, 0x775c, 0x0078, 0x1753, 0x6808, 0xa005, 0x0040, -+ 0x174a, 0x7000, 0xa005, 0x00c0, 0x16e7, 0x0078, 0x174a, 0x700c, -+ 0x7110, 0xa106, 0x00c0, 0x16f0, 0x7004, 0xa406, 0x00c0, 0x174a, -+ 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, 0x1704, 0x047e, 0x1078, -+ 0x1913, 0x047f, 0x2460, 0x6010, 0xa080, 0x0002, 0x2004, 0xa005, -+ 0x0040, 0x174a, 0x0078, 0x16e1, 0x2001, 0x0207, 0x2004, 0xd09c, -+ 0x00c0, 0x16f0, 0x2001, 0x0005, 0x2004, 0xd08c, 0x00c0, 0x16f6, -+ 0x7804, 0xa084, 0x6000, 0x0040, 0x171b, 0xa086, 0x6000, 0x0040, -+ 0x171b, 0x0078, 0x16f0, 0x7007, 0x0000, 0xa016, 0x2218, 0x7000, -+ 0xa08e, 0x0001, 0x0040, 0x173c, 0xa08e, 0x0002, 0x00c0, 0x174a, -+ 0x0c7e, 0x0e7e, 0x6818, 0x2060, 0x1078, 0x203f, 0x2804, 0xac70, -+ 0x6034, 0xd09c, 0x00c0, 0x1738, 0x7308, 0x720c, 0x0078, 0x173a, -+ 0x7310, 0x7214, 0x0e7f, 0x0c7f, 0x7820, 0xa318, 0x7824, 0xa211, -+ 0x6810, 0xa300, 0x6812, 0x6814, 0xa201, 0x6816, 0x7803, 0x0004, -+ 0x7003, 0x0000, 0x6100, 0xa18e, 0x0004, 0x00c0, 0x1753, 0x2009, -+ 0x0048, 0x1078, 0x775c, 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e, -+ 0x0e7e, 0x027e, 0x037e, 0x047e, 0x057e, 0x2071, 0xa8e7, 0x7000, -+ 0xa086, 0x0000, 0x0040, 0x17ba, 0x7004, 0xac06, 0x00c0, 0x17ab, -+ 0x2079, 0x0030, 0x7000, 0xa086, 0x0003, 0x0040, 0x17ab, 0x7804, -+ 0xd0fc, 0x00c0, 0x17a7, 0x20e1, 0x6000, 0x2011, 0x0032, 0x2001, -+ 0x0208, 0x200c, 0x2001, 0x0209, 0x2004, 0xa106, 0x00c0, 0x176f, -+ 0x8211, 0x00c0, 0x1777, 0x7804, 0xd0fc, 0x00c0, 0x17a7, 0x1078, -+ 0x1b22, 0x027e, 0x057e, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, -+ 0x178d, 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, -+ 0x0000, 0x057f, 0x027f, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, -+ 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0078, 0x17ab, 0x1078, -+ 0x1913, 0x0078, 0x175f, 0x157e, 0x20a9, 0x0009, 0x2009, 0xa8ed, -+ 0x2104, 0xac06, 0x00c0, 0x17b5, 0x200a, 0xa188, 0x0003, 0x00f0, -+ 0x17b0, 0x157f, 0x057f, 0x047f, 0x037f, 0x027f, 0x0e7f, 0x0f7f, -+ 0x007c, 0x700c, 0x7110, 0xa106, 0x00c0, 0x17c9, 0x7003, 0x0000, -+ 0x007c, 0x2104, 0x7006, 0x2060, 0x8108, 0x211c, 0x8108, 0x2124, -+ 0x8108, 0xa182, 0xa908, 0x0048, 0x17d7, 0x2009, 0xa8ed, 0x7112, -+ 0x700c, 0xa106, 0x00c0, 0x17e0, 0x2001, 0x0138, 0x2003, 0x0008, -+ 0x8cff, 0x00c0, 0x17e7, 0x1078, 0x1b4d, 0x0078, 0x1854, 0x6010, -+ 0x2068, 0x2d58, 0x6828, 0xa406, 0x00c0, 0x17f2, 0x682c, 0xa306, -+ 0x0040, 0x182f, 0x601c, 0xa086, 0x0008, 0x0040, 0x182f, 0x6024, -+ 0xd0f4, 0x00c0, 0x181c, 0xd0d4, 0x0040, 0x1818, 0x6038, 0xa402, -+ 0x6034, 0xa303, 0x0040, 0x1806, 0x00c8, 0x1818, 0x643a, 0x6336, -+ 0x6c2a, 0x6b2e, 0x047e, 0x037e, 0x2400, 0x6c7c, 0xa402, 0x6812, -+ 0x2300, 0x6b80, 0xa303, 0x6816, 0x037f, 0x047f, 0x0078, 0x181c, -+ 0x1078, 0x9053, 0x0040, 0x17e3, 0x2001, 0xa674, 0x2004, 0xd0b4, -+ 0x00c0, 0x182b, 0x6018, 0x2004, 0xd0bc, 0x00c0, 0x182b, 0x6817, -+ 0x7fff, 0x6813, 0xffff, 0x1078, 0x208a, 0x00c0, 0x17e3, 0x0c7e, -+ 0x7004, 0x2060, 0x6024, 0xc0d4, 0x6026, 0x0c7f, 0x684c, 0xd0f4, -+ 0x0040, 0x1840, 0x6817, 0xffff, 0x6813, 0xffff, 0x0078, 0x17e3, -+ 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, -+ 0x000f, 0x2009, 0x0011, 0x1078, 0x1855, 0x0040, 0x1853, 0x2009, -+ 0x0001, 0x1078, 0x1855, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x18ec, -+ 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1877, 0xd0f4, 0x00c0, -+ 0x1887, 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x1867, 0x18ce, -+ 0x188e, 0x188e, 0x18ce, 0x18ce, 0x18c6, 0x18ce, 0x188e, 0x18ce, -+ 0x1894, 0x1894, 0x18ce, 0x18ce, 0x18ce, 0x18bd, 0x1894, 0xc0fc, -+ 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0x0d7e, 0xd99c, 0x0040, -+ 0x18d1, 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x18d1, 0xc0f4, -+ 0x6852, 0x6b6c, 0x6a70, 0x0d7e, 0x0078, 0x18d8, 0x6b08, 0x6a0c, -+ 0x6d00, 0x6c04, 0x0078, 0x18d1, 0x7b0c, 0xd3bc, 0x0040, 0x18b5, -+ 0x7004, 0x0e7e, 0x2070, 0x701c, 0x0e7f, 0xa086, 0x0008, 0x00c0, -+ 0x18b5, 0x7b08, 0xa39c, 0x0fff, 0x2d20, 0x0d7f, 0x0d7e, 0x6a14, -+ 0x82ff, 0x00c0, 0x18b0, 0x6810, 0xa302, 0x0048, 0x18b0, 0x6b10, -+ 0x2011, 0x0000, 0x2468, 0x0078, 0x18b7, 0x6b10, 0x6a14, 0x6d00, -+ 0x6c04, 0x6f08, 0x6e0c, 0x0078, 0x18d1, 0x0d7f, 0x0d7e, 0x6834, -+ 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x18ce, 0x0d7f, 0x1078, -+ 0x2026, 0x00c0, 0x1855, 0xa00e, 0x0078, 0x18ec, 0x0d7f, 0x1078, -+ 0x1332, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, -+ 0x7000, 0x8000, 0x7002, 0x0d7f, 0x6828, 0xa300, 0x682a, 0x682c, -+ 0xa201, 0x682e, 0x2300, 0x6b10, 0xa302, 0x6812, 0x2200, 0x6a14, -+ 0xa203, 0x6816, 0x1078, 0x2026, 0x007c, 0x1078, 0x1332, 0x1078, -+ 0x1c97, 0x7004, 0x2060, 0x0d7e, 0x6010, 0x2068, 0x7003, 0x0000, -+ 0x1078, 0x1af4, 0x1078, 0x8d06, 0x0040, 0x190c, 0x6808, 0x8001, -+ 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x682b, 0xffff, 0x682f, -+ 0xffff, 0x6850, 0xc0bd, 0x6852, 0x0d7f, 0x1078, 0x8a01, 0x0078, -+ 0x1adb, 0x1078, 0x1332, 0x127e, 0x2091, 0x2100, 0x007e, 0x017e, -+ 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, -+ 0x00c0, 0x18ef, 0xa184, 0x0003, 0xa086, 0x0003, 0x0040, 0x1911, -+ 0x7000, 0x0079, 0x192b, 0x1933, 0x1935, 0x1a34, 0x1ab2, 0x1ac9, -+ 0x1933, 0x1933, 0x1933, 0x1078, 0x1332, 0x8001, 0x7002, 0xa184, -+ 0x0880, 0x00c0, 0x194a, 0x8aff, 0x0040, 0x19d4, 0x2009, 0x0001, -+ 0x1078, 0x1855, 0x0040, 0x1adb, 0x2009, 0x0001, 0x1078, 0x1855, -+ 0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x00c0, -+ 0x19b2, 0x027e, 0x037e, 0x017e, 0x7808, 0xd0ec, 0x00c0, 0x1962, -+ 0x7c20, 0x7d24, 0x7e30, 0x7f34, 0x7803, 0x0009, 0x7003, 0x0004, -+ 0x0078, 0x1964, 0x1078, 0x1bd7, 0x017f, 0xd194, 0x0040, 0x196b, -+ 0x8aff, 0x0040, 0x19a1, 0x6b28, 0x6a2c, 0x2400, 0x686e, 0xa31a, -+ 0x2500, 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x0c7e, 0x7004, 0x2060, -+ 0x6024, 0xd0f4, 0x00c0, 0x197e, 0x633a, 0x6236, 0x0c7f, 0x2400, -+ 0x6910, 0xa100, 0x6812, 0x2500, 0x6914, 0xa101, 0x6816, 0x037f, -+ 0x027f, 0x2600, 0x681e, 0x2700, 0x6822, 0x1078, 0x203f, 0x2a00, -+ 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x6850, 0xc0fd, 0x6852, -+ 0x6808, 0x8001, 0x680a, 0x00c0, 0x19a7, 0x684c, 0xd0e4, 0x0040, -+ 0x19a7, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x7000, -+ 0xa086, 0x0004, 0x0040, 0x1adb, 0x7003, 0x0000, 0x1078, 0x17c1, -+ 0x0078, 0x1adb, 0x057e, 0x7d0c, 0xd5bc, 0x00c0, 0x19b9, 0x1078, -+ 0xa57e, 0x057f, 0x1078, 0x1af4, 0x0f7e, 0x7004, 0x2078, 0x1078, -+ 0x4963, 0x0040, 0x19c6, 0x7824, 0xc0f5, 0x7826, 0x0f7f, 0x682b, -+ 0xffff, 0x682f, 0xffff, 0x6808, 0x8001, 0x680a, 0x697c, 0x6912, -+ 0x6980, 0x6916, 0x0078, 0x1adb, 0x7004, 0x0c7e, 0x2060, 0x6024, -+ 0x0c7f, 0xd0f4, 0x0040, 0x19e1, 0x6808, 0x8001, 0x680a, 0x0078, -+ 0x19f5, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005, 0x00c0, 0x19f9, -+ 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0, 0x19f5, 0x7004, -+ 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x1078, 0x17c1, 0x0078, -+ 0x1adb, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914, 0xa183, 0x0000, -+ 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa192, 0x0841, 0x00c8, -+ 0x18ef, 0xa188, 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, -+ 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b, 0x810b, 0x1078, 0x1b5e, -+ 0x7803, 0x0004, 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, -+ 0x0040, 0x1a1e, 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x0076, -+ 0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, -+ 0x1078, 0x1b92, 0x0040, 0x19f5, 0x8001, 0x7002, 0xd194, 0x0040, -+ 0x1a46, 0x7804, 0xd0fc, 0x00c0, 0x191b, 0x8aff, 0x0040, 0x1adb, -+ 0x2009, 0x0001, 0x1078, 0x1855, 0x0078, 0x1adb, 0xa184, 0x0880, -+ 0x00c0, 0x1a53, 0x8aff, 0x0040, 0x1adb, 0x2009, 0x0001, 0x1078, -+ 0x1855, 0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, -+ 0x00c0, 0x1a93, 0x027e, 0x037e, 0x7808, 0xd0ec, 0x00c0, 0x1a66, -+ 0x7803, 0x0009, 0x7003, 0x0004, 0x0078, 0x1a68, 0x1078, 0x1bd7, -+ 0x6b28, 0x6a2c, 0x1078, 0x203f, 0x0d7e, 0x0f7e, 0x2d78, 0x2804, -+ 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1a83, 0x6808, 0x2008, 0xa31a, -+ 0x680c, 0xa213, 0x7810, 0xa100, 0x7812, 0x690c, 0x7814, 0xa101, -+ 0x7816, 0x0078, 0x1a8f, 0x6810, 0x2008, 0xa31a, 0x6814, 0xa213, -+ 0x7810, 0xa100, 0x7812, 0x6914, 0x7814, 0xa101, 0x7816, 0x0f7f, -+ 0x0d7f, 0x0078, 0x196d, 0x057e, 0x7d0c, 0x1078, 0xa57e, 0x057f, -+ 0x1078, 0x1af4, 0x0f7e, 0x7004, 0x2078, 0x1078, 0x4963, 0x0040, -+ 0x1aa4, 0x7824, 0xc0f5, 0x7826, 0x0f7f, 0x682b, 0xffff, 0x682f, -+ 0xffff, 0x6808, 0x8001, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, -+ 0x0078, 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, -+ 0x0040, 0x1ac5, 0x6808, 0x8001, 0x680a, 0x00c0, 0x1ac5, 0x7004, -+ 0x2060, 0x2009, 0x0048, 0x1078, 0x775c, 0x1078, 0x17c1, 0x0078, -+ 0x1adb, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6010, -+ 0xa005, 0x0040, 0x1ac5, 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28, -+ 0x6b2c, 0x1078, 0x17e0, 0x017f, 0x007f, 0x127f, 0x007c, 0x127e, -+ 0x2091, 0x2100, 0x7000, 0xa086, 0x0003, 0x00c0, 0x1af2, 0x700c, -+ 0x7110, 0xa106, 0x0040, 0x1af2, 0x20e1, 0x9028, 0x700f, 0xa8ed, -+ 0x7013, 0xa8ed, 0x127f, 0x007c, 0x0c7e, 0x1078, 0x1b22, 0x20e1, -+ 0x9028, 0x700c, 0x7110, 0xa106, 0x0040, 0x1b19, 0x2104, 0xa005, -+ 0x0040, 0x1b08, 0x2060, 0x6010, 0x2060, 0x6008, 0x8001, 0x600a, -+ 0xa188, 0x0003, 0xa182, 0xa908, 0x0048, 0x1b10, 0x2009, 0xa8ed, -+ 0x7112, 0x700c, 0xa106, 0x00c0, 0x1af9, 0x2011, 0x0008, 0x0078, -+ 0x1af9, 0x2001, 0x015d, 0x2003, 0x0000, 0x2001, 0x0138, 0x2202, -+ 0x0c7f, 0x007c, 0x2001, 0x0138, 0x2014, 0x2003, 0x0000, 0x2021, -+ 0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc, 0x00c0, 0x1b3f, 0x2001, -+ 0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0, 0x1b3f, 0x2001, 0x0111, -+ 0x201c, 0x83ff, 0x00c0, 0x1b3f, 0x8421, 0x00c0, 0x1b29, 0x007c, -+ 0x2011, 0x0201, 0x2009, 0x003c, 0x2204, 0xa005, 0x00c0, 0x1b4c, -+ 0x8109, 0x00c0, 0x1b44, 0x007c, 0x007c, 0x1078, 0x1b40, 0x0040, -+ 0x1b55, 0x780c, 0xd0a4, 0x0040, 0x1b5b, 0x1078, 0x1af4, 0xa085, -+ 0x0001, 0x0078, 0x1b5d, 0x1078, 0x1b92, 0x007c, 0x0e7e, 0x2071, -+ 0x0200, 0x7808, 0xa084, 0xf000, 0xa10d, 0x1078, 0x1b22, 0x2019, -+ 0x5000, 0x8319, 0x0040, 0x1b7c, 0x2001, 0xa908, 0x2004, 0xa086, -+ 0x0000, 0x0040, 0x1b7c, 0x2001, 0x0021, 0xd0fc, 0x0040, 0x1b69, -+ 0x1078, 0x1eaa, 0x0078, 0x1b67, 0x20e1, 0x7000, 0x7324, 0x7420, -+ 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e, 0x702f, -+ 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0138, 0x2202, -+ 0x0e7f, 0x007c, 0x027e, 0x2001, 0x015d, 0x2001, 0x0000, 0x7908, -+ 0xa18c, 0x0fff, 0xa182, 0x0ffd, 0x0048, 0x1ba0, 0x2009, 0x0000, -+ 0xa190, 0x0007, 0xa294, 0x1ff8, 0x8214, 0x8214, 0x8214, 0x2001, -+ 0x020a, 0x82ff, 0x0040, 0x1bb5, 0x20e1, 0x6000, 0x200c, 0x200c, -+ 0x200c, 0x200c, 0x8211, 0x00c0, 0x1bae, 0x20e1, 0x7000, 0x200c, -+ 0x200c, 0x7003, 0x0000, 0x20e1, 0x6000, 0x2001, 0x0208, 0x200c, -+ 0x2001, 0x0209, 0x2004, 0xa106, 0x0040, 0x1bd4, 0x1078, 0x1b40, -+ 0x0040, 0x1bd2, 0x7908, 0xd1ec, 0x00c0, 0x1bd4, 0x790c, 0xd1a4, -+ 0x0040, 0x1b97, 0x1078, 0x1af4, 0xa006, 0x027f, 0x007c, 0x7c20, -+ 0x7d24, 0x7e30, 0x7f34, 0x700c, 0x7110, 0xa106, 0x0040, 0x1c69, -+ 0x7004, 0x017e, 0x210c, 0xa106, 0x017f, 0x0040, 0x1c69, 0x0d7e, -+ 0x0c7e, 0x216c, 0x2d00, 0xa005, 0x0040, 0x1c67, 0x681c, 0xa086, -+ 0x0008, 0x0040, 0x1c67, 0x6824, 0xd0d4, 0x00c0, 0x1c67, 0x6810, -+ 0x2068, 0x6850, 0xd0fc, 0x0040, 0x1c29, 0x8108, 0x2104, 0x6b2c, -+ 0xa306, 0x00c0, 0x1c67, 0x8108, 0x2104, 0x6a28, 0xa206, 0x00c0, -+ 0x1c67, 0x6850, 0xc0fc, 0xc0f5, 0x6852, 0x686c, 0x7822, 0x6870, -+ 0x7826, 0x681c, 0x7832, 0x6820, 0x7836, 0x6818, 0x2060, 0x6034, -+ 0xd09c, 0x0040, 0x1c24, 0x6830, 0x2004, 0xac68, 0x6808, 0x783a, -+ 0x680c, 0x783e, 0x0078, 0x1c65, 0xa006, 0x783a, 0x783e, 0x0078, -+ 0x1c65, 0x8108, 0x2104, 0xa005, 0x00c0, 0x1c67, 0x6b2c, 0xa306, -+ 0x00c0, 0x1c67, 0x8108, 0x2104, 0xa005, 0x00c0, 0x1c67, 0x6a28, -+ 0xa206, 0x00c0, 0x1c67, 0x6850, 0xc0f5, 0x6852, 0x6830, 0x2004, -+ 0x6918, 0xa160, 0xa180, 0x000d, 0x2004, 0xd09c, 0x00c0, 0x1c57, -+ 0x6008, 0x7822, 0x686e, 0x600c, 0x7826, 0x6872, 0x6000, 0x7832, -+ 0x6004, 0x7836, 0xa006, 0x783a, 0x783e, 0x0078, 0x1c65, 0x6010, -+ 0x7822, 0x686e, 0x6014, 0x7826, 0x6872, 0x6000, 0x7832, 0x6004, -+ 0x7836, 0x6008, 0x783a, 0x600c, 0x783e, 0x7803, 0x0011, 0x0c7f, -+ 0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0x027e, 0x2071, 0xa8e7, -+ 0x2079, 0x0030, 0x2011, 0x0050, 0x7000, 0xa086, 0x0000, 0x0040, -+ 0x1c92, 0x8211, 0x0040, 0x1c90, 0x2001, 0x0005, 0x2004, 0xd08c, -+ 0x0040, 0x1c79, 0x7904, 0xa18c, 0x0780, 0x017e, 0x1078, 0x1913, -+ 0x017f, 0x81ff, 0x00c0, 0x1c90, 0x2011, 0x0050, 0x0078, 0x1c74, -+ 0xa085, 0x0001, 0x027f, 0x017f, 0x0e7f, 0x0f7f, 0x007c, 0x7803, -+ 0x0004, 0x2009, 0x0064, 0x7804, 0xd0ac, 0x0040, 0x1ce8, 0x8109, -+ 0x00c0, 0x1c9b, 0x2009, 0x0100, 0x210c, 0xa18a, 0x0003, 0x1048, -+ 0x1332, 0x1078, 0x1fca, 0x0e7e, 0x0f7e, 0x2071, 0xa8d6, 0x2079, -+ 0x0010, 0x7004, 0xa086, 0x0000, 0x0040, 0x1ce0, 0x7800, 0x007e, -+ 0x7820, 0x007e, 0x7830, 0x007e, 0x7834, 0x007e, 0x7838, 0x007e, -+ 0x783c, 0x007e, 0x7803, 0x0004, 0x7823, 0x0000, 0x0005, 0x0005, -+ 0x2079, 0x0030, 0x7804, 0xd0ac, 0x10c0, 0x1332, 0x2079, 0x0010, -+ 0x007f, 0x783e, 0x007f, 0x783a, 0x007f, 0x7836, 0x007f, 0x7832, -+ 0x007f, 0x7822, 0x007f, 0x7802, 0x0f7f, 0x0e7f, 0x0078, 0x1ce6, -+ 0x0f7f, 0x0e7f, 0x7804, 0xd0ac, 0x10c0, 0x1332, 0x1078, 0x639b, -+ 0x007c, 0x0e7e, 0x2071, 0xa908, 0x7003, 0x0000, 0x0e7f, 0x007c, -+ 0x0d7e, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1d6b, -+ 0x6934, 0xa184, 0x0007, 0x0079, 0x1cfd, 0x1d05, 0x1d56, 0x1d05, -+ 0x1d05, 0x1d05, 0x1d3b, 0x1d18, 0x1d07, 0x1078, 0x1332, 0x684c, -+ 0xd0b4, 0x0040, 0x1e79, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, -+ 0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x1d5e, -+ 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1d05, 0x684c, -+ 0xd0b4, 0x0040, 0x1e79, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, -+ 0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, -+ 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832, -+ 0x6958, 0x0078, 0x1d67, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, -+ 0x1d6b, 0x684c, 0xd0b4, 0x0040, 0x1e79, 0x6804, 0x681a, 0xa080, -+ 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832, -+ 0x6958, 0xa006, 0x682e, 0x682a, 0x0078, 0x1d67, 0x684c, 0xd0b4, -+ 0x0040, 0x18ed, 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, -+ 0x6834, 0xa084, 0x000f, 0xa080, 0x206a, 0x2004, 0x6832, 0x6926, -+ 0x684c, 0xc0dd, 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020, -+ 0x7804, 0xd0fc, 0x10c0, 0x1eaa, 0x0e7e, 0x0d7e, 0x2071, 0xa908, -+ 0x7000, 0xa005, 0x00c0, 0x1df0, 0x0c7e, 0x7206, 0xa280, 0x0004, -+ 0x205c, 0x7004, 0x2068, 0x7803, 0x0004, 0x6818, 0x0d7e, 0x2068, -+ 0x686c, 0x7812, 0x6890, 0x0f7e, 0x20e1, 0x9040, 0x2079, 0x0200, -+ 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x0f7f, 0x0d7f, 0x2b68, -+ 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, -+ 0x000f, 0x6908, 0x2001, 0x04fd, 0x2004, 0xa086, 0x0007, 0x0040, -+ 0x1db2, 0xa184, 0x0007, 0x0040, 0x1db2, 0x017e, 0x2009, 0x0008, -+ 0xa102, 0x017f, 0xa108, 0x791a, 0x7116, 0x701e, 0x680c, 0xa081, -+ 0x0000, 0x781e, 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, -+ 0x6814, 0xa106, 0x00c0, 0x1dc9, 0x6928, 0x6810, 0xa106, 0x0040, -+ 0x1dd6, 0x037e, 0x047e, 0x6b14, 0x6c10, 0x1078, 0x208a, 0x047f, -+ 0x037f, 0x0040, 0x1dd6, 0x0c7f, 0x0078, 0x1df0, 0x8aff, 0x00c0, -+ 0x1dde, 0x0c7f, 0xa085, 0x0001, 0x0078, 0x1df0, 0x127e, 0x2091, -+ 0x8000, 0x2079, 0x0020, 0x2009, 0x0001, 0x1078, 0x1df4, 0x0040, -+ 0x1ded, 0x2009, 0x0001, 0x1078, 0x1df4, 0x127f, 0x0c7f, 0xa006, -+ 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x077e, 0x067e, 0x057e, 0x047e, -+ 0x037e, 0x027e, 0x8aff, 0x0040, 0x1e72, 0x700c, 0x7214, 0xa23a, -+ 0x7010, 0x7218, 0xa203, 0x0048, 0x1e71, 0xa705, 0x0040, 0x1e71, -+ 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1e24, 0x0d7e, 0x2804, -+ 0xac68, 0x2900, 0x0079, 0x1e14, 0x1e53, 0x1e34, 0x1e34, 0x1e53, -+ 0x1e53, 0x1e4b, 0x1e53, 0x1e34, 0x1e53, 0x1e3a, 0x1e3a, 0x1e53, -+ 0x1e53, 0x1e53, 0x1e42, 0x1e3a, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, -+ 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1e57, 0x0d7e, 0x2804, 0xac68, -+ 0x6f08, 0x6e0c, 0x0078, 0x1e56, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, -+ 0x0078, 0x1e56, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, -+ 0x0078, 0x1e56, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086, -+ 0x001e, 0x00c0, 0x1e53, 0x0d7f, 0x1078, 0x2026, 0x00c0, 0x1dfa, -+ 0xa00e, 0x0078, 0x1e72, 0x0d7f, 0x1078, 0x1332, 0x0d7f, 0x7b22, -+ 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, -+ 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x700c, -+ 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x1078, 0x2026, 0x0078, -+ 0x1e72, 0xa006, 0x027f, 0x037f, 0x047f, 0x057f, 0x067f, 0x077f, -+ 0x007c, 0x1078, 0x1332, 0x027e, 0x2001, 0x0105, 0x2003, 0x0010, -+ 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, -+ 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x1e92, 0x6850, -+ 0xc0bd, 0x6852, 0x0d7f, 0x0c7e, 0x1078, 0x8a01, 0x0c7f, 0x2001, -+ 0xa8c0, 0x2004, 0xac06, 0x00c0, 0x1ea7, 0x20e1, 0x9040, 0x1078, -+ 0x738a, 0x2011, 0x0000, 0x1078, 0x70ea, 0x1078, 0x639b, 0x027f, -+ 0x0078, 0x1f76, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e, -+ 0x0e7e, 0x0d7e, 0x0c7e, 0x2079, 0x0020, 0x2071, 0xa908, 0x2b68, -+ 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, -+ 0x1e7b, 0x7000, 0x0079, 0x1ec4, 0x1f76, 0x1ec8, 0x1f43, 0x1f74, -+ 0x8001, 0x7002, 0xd19c, 0x00c0, 0x1edc, 0x8aff, 0x0040, 0x1efb, -+ 0x2009, 0x0001, 0x1078, 0x1df4, 0x0040, 0x1f76, 0x2009, 0x0001, -+ 0x1078, 0x1df4, 0x0078, 0x1f76, 0x7803, 0x0004, 0xd194, 0x0040, -+ 0x1eec, 0x6850, 0xc0fc, 0x6852, 0x8aff, 0x00c0, 0x1ef1, 0x684c, -+ 0xc0f5, 0x684e, 0x0078, 0x1ef1, 0x1078, 0x203f, 0x6850, 0xc0fd, -+ 0x6852, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, -+ 0x0000, 0x0078, 0x1f76, 0x711c, 0x81ff, 0x0040, 0x1f11, 0x7918, -+ 0x7922, 0x7827, 0x0000, 0x7803, 0x0001, 0x7000, 0x8000, 0x7002, -+ 0x700c, 0xa100, 0x700e, 0x7010, 0xa081, 0x0000, 0x7012, 0x0078, -+ 0x1f76, 0x0f7e, 0x027e, 0x781c, 0x007e, 0x7818, 0x007e, 0x2079, -+ 0x0100, 0x7a14, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x037e, -+ 0x2019, 0x1000, 0x8319, 0x1040, 0x1332, 0x7820, 0xd0bc, 0x00c0, -+ 0x1f22, 0x037f, 0x79c8, 0x007f, 0xa102, 0x017f, 0x007e, 0x017e, -+ 0x79c4, 0x007f, 0xa103, 0x78c6, 0x007f, 0x78ca, 0xa284, 0x0004, -+ 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f, 0x7803, 0x0008, 0x7003, -+ 0x0000, 0x0078, 0x1f76, 0x8001, 0x7002, 0xd194, 0x0040, 0x1f58, -+ 0x7804, 0xd0fc, 0x00c0, 0x1eba, 0xd19c, 0x00c0, 0x1f72, 0x8aff, -+ 0x0040, 0x1f76, 0x2009, 0x0001, 0x1078, 0x1df4, 0x0078, 0x1f76, -+ 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x203f, 0x0d7e, 0x2804, -+ 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1f6b, 0x6808, 0xa31a, 0x680c, -+ 0xa213, 0x0078, 0x1f6f, 0x6810, 0xa31a, 0x6814, 0xa213, 0x0d7f, -+ 0x0078, 0x1eec, 0x0078, 0x1eec, 0x1078, 0x1332, 0x0c7f, 0x0d7f, -+ 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f, 0x007c, 0x0f7e, 0x0e7e, -+ 0x2071, 0xa908, 0x7000, 0xa086, 0x0000, 0x0040, 0x1fc7, 0x2079, -+ 0x0020, 0x017e, 0x2009, 0x0207, 0x210c, 0xd194, 0x0040, 0x1fa4, -+ 0x2009, 0x020c, 0x210c, 0xa184, 0x0003, 0x0040, 0x1fa4, 0x1078, -+ 0xa5d2, 0x2001, 0x0133, 0x2004, 0xa005, 0x1040, 0x1332, 0x20e1, -+ 0x9040, 0x2001, 0x020c, 0x2102, 0x2009, 0x0206, 0x2104, 0x2009, -+ 0x0203, 0x210c, 0xa106, 0x00c0, 0x1faf, 0x20e1, 0x9040, 0x7804, -+ 0xd0fc, 0x0040, 0x1f8a, 0x1078, 0x1eaa, 0x7000, 0xa086, 0x0000, -+ 0x00c0, 0x1f8a, 0x017f, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, -+ 0x1fbd, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f, -+ 0x0f7f, 0x007c, 0x027e, 0x0c7e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2071, -+ 0xa908, 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0040, 0x2003, -+ 0x7004, 0x2060, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x1fed, -+ 0x6850, 0xc0b5, 0x6852, 0x680c, 0x7a1c, 0xa206, 0x00c0, 0x1fed, -+ 0x6808, 0x7a18, 0xa206, 0x0040, 0x2009, 0x2001, 0x0105, 0x2003, -+ 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, -+ 0x2060, 0x1078, 0x8a01, 0x20e1, 0x9040, 0x1078, 0x738a, 0x2011, -+ 0x0000, 0x1078, 0x70ea, 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x027f, -+ 0x007c, 0x6810, 0x6a14, 0xa205, 0x00c0, 0x1fed, 0x684c, 0xc0dc, -+ 0x684e, 0x2c10, 0x1078, 0x1cf0, 0x2001, 0x0105, 0x2003, 0x0010, -+ 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x2069, 0xa8b1, -+ 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x2003, 0x8840, 0x2804, -+ 0xa005, 0x00c0, 0x203a, 0x6004, 0xa005, 0x0040, 0x203c, 0x681a, -+ 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x206a, 0x2044, 0x88ff, -+ 0x1040, 0x1332, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50, -+ 0x8841, 0x2804, 0xa005, 0x00c0, 0x2059, 0x2c00, 0xad06, 0x0040, -+ 0x204e, 0x6000, 0xa005, 0x00c0, 0x204e, 0x2d00, 0x2060, 0x681a, -+ 0x6034, 0xa084, 0x000f, 0xa080, 0x207a, 0x2044, 0x88ff, 0x1040, -+ 0x1332, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d, 0x0021, -+ 0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b, 0x0021, 0x0027, -+ 0x0000, 0x0000, 0x0000, 0x205f, 0x205b, 0x0000, 0x0000, 0x2069, -+ 0x0000, 0x205f, 0x0000, 0x2066, 0x2063, 0x0000, 0x0000, 0x0000, -+ 0x2069, 0x2066, 0x0000, 0x2061, 0x2061, 0x0000, 0x0000, 0x2069, -+ 0x0000, 0x2061, 0x0000, 0x2067, 0x2067, 0x0000, 0x0000, 0x0000, -+ 0x2069, 0x2067, 0x0a7e, 0x097e, 0x087e, 0x6b2e, 0x6c2a, 0x6858, -+ 0xa055, 0x0040, 0x212d, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0, -+ 0x206a, 0xa986, 0x0007, 0x0040, 0x20a5, 0xa986, 0x000e, 0x0040, -+ 0x20a5, 0xa986, 0x000f, 0x00c0, 0x20a9, 0x605c, 0xa422, 0x6060, -+ 0xa31a, 0x2804, 0xa045, 0x00c0, 0x20b7, 0x0050, 0x20b1, 0x0078, -+ 0x212d, 0x6004, 0xa065, 0x0040, 0x212d, 0x0078, 0x2094, 0x2804, -+ 0xa005, 0x0040, 0x20d5, 0xac68, 0xd99c, 0x00c0, 0x20c5, 0x6808, -+ 0xa422, 0x680c, 0xa31b, 0x0078, 0x20c9, 0x6810, 0xa422, 0x6814, -+ 0xa31b, 0x0048, 0x20f4, 0x2300, 0xa405, 0x0040, 0x20db, 0x8a51, -+ 0x0040, 0x212d, 0x8840, 0x0078, 0x20b7, 0x6004, 0xa065, 0x0040, -+ 0x212d, 0x0078, 0x2094, 0x8a51, 0x0040, 0x212d, 0x8840, 0x2804, -+ 0xa005, 0x00c0, 0x20ee, 0x6004, 0xa065, 0x0040, 0x212d, 0x6034, -+ 0xa0cc, 0x000f, 0xa9c0, 0x206a, 0x2804, 0x2040, 0x2b68, 0x6850, -+ 0xc0fc, 0x6852, 0x0078, 0x2121, 0x8422, 0x8420, 0x831a, 0xa399, -+ 0x0000, 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0, -+ 0x210f, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048, -+ 0x1332, 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x211b, 0x6910, -+ 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x1332, 0x6800, -+ 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd, -+ 0x6852, 0x2c00, 0x681a, 0x2800, 0x6832, 0x2a00, 0x6826, 0x007f, -+ 0x007f, 0x007f, 0xa006, 0x0078, 0x2132, 0x087f, 0x097f, 0x0a7f, -+ 0xa085, 0x0001, 0x007c, 0x2001, 0x0005, 0x2004, 0xa084, 0x0007, -+ 0x0079, 0x213a, 0x2142, 0x2143, 0x2146, 0x2149, 0x214e, 0x2151, -+ 0x2156, 0x215b, 0x007c, 0x1078, 0x1eaa, 0x007c, 0x1078, 0x1913, -+ 0x007c, 0x1078, 0x1913, 0x1078, 0x1eaa, 0x007c, 0x1078, 0x14be, -+ 0x007c, 0x1078, 0x1eaa, 0x1078, 0x14be, 0x007c, 0x1078, 0x1913, -+ 0x1078, 0x14be, 0x007c, 0x1078, 0x1913, 0x1078, 0x1eaa, 0x1078, -+ 0x14be, 0x007c, 0x127e, 0x2091, 0x2300, 0x2079, 0x0200, 0x2071, -+ 0xab80, 0x2069, 0xa600, 0x2009, 0x0004, 0x7912, 0x7817, 0x0004, -+ 0x1078, 0x251f, 0x781b, 0x0002, 0x20e1, 0x8700, 0x127f, 0x007c, -+ 0x127e, 0x2091, 0x2300, 0x781c, 0xa084, 0x0007, 0x0079, 0x2180, -+ 0x21a4, 0x2188, 0x218c, 0x2190, 0x2196, 0x219a, 0x219e, 0x21a2, -+ 0x1078, 0x548e, 0x0078, 0x21a4, 0x1078, 0x54da, 0x0078, 0x21a4, -+ 0x1078, 0x548e, 0x1078, 0x54da, 0x0078, 0x21a4, 0x1078, 0x21a6, -+ 0x0078, 0x21a4, 0x1078, 0x21a6, 0x0078, 0x21a4, 0x1078, 0x21a6, -+ 0x0078, 0x21a4, 0x1078, 0x21a6, 0x127f, 0x007c, 0x007e, 0x017e, -+ 0x027e, 0x1078, 0xa5d2, 0x7930, 0xa184, 0x0003, 0x0040, 0x21c9, -+ 0x2001, 0xa8c0, 0x2004, 0xa005, 0x0040, 0x21c5, 0x2001, 0x0133, -+ 0x2004, 0xa005, 0x1040, 0x1332, 0x0c7e, 0x2001, 0xa8c0, 0x2064, -+ 0x1078, 0x8a01, 0x0c7f, 0x0078, 0x21f2, 0x20e1, 0x9040, 0x0078, -+ 0x21f2, 0xa184, 0x0030, 0x0040, 0x21da, 0x6a00, 0xa286, 0x0003, -+ 0x00c0, 0x21d4, 0x0078, 0x21d6, 0x1078, 0x4224, 0x20e1, 0x9010, -+ 0x0078, 0x21f2, 0xa184, 0x00c0, 0x0040, 0x21ec, 0x0e7e, 0x037e, -+ 0x047e, 0x057e, 0x2071, 0xa8e7, 0x1078, 0x1af4, 0x057f, 0x047f, -+ 0x037f, 0x0e7f, 0x0078, 0x21f2, 0xa184, 0x0300, 0x0040, 0x21f2, -+ 0x20e1, 0x9020, 0x7932, 0x027f, 0x017f, 0x007f, 0x007c, 0x017e, -+ 0x0e7e, 0x0f7e, 0x2071, 0xa600, 0x7128, 0x2001, 0xa890, 0x2102, -+ 0x2001, 0xa898, 0x2102, 0xa182, 0x0211, 0x00c8, 0x220b, 0x2009, -+ 0x0008, 0x0078, 0x2235, 0xa182, 0x0259, 0x00c8, 0x2213, 0x2009, -+ 0x0007, 0x0078, 0x2235, 0xa182, 0x02c1, 0x00c8, 0x221b, 0x2009, -+ 0x0006, 0x0078, 0x2235, 0xa182, 0x0349, 0x00c8, 0x2223, 0x2009, -+ 0x0005, 0x0078, 0x2235, 0xa182, 0x0421, 0x00c8, 0x222b, 0x2009, -+ 0x0004, 0x0078, 0x2235, 0xa182, 0x0581, 0x00c8, 0x2233, 0x2009, -+ 0x0003, 0x0078, 0x2235, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, -+ 0x7817, 0x0004, 0x1078, 0x251f, 0x0f7f, 0x0e7f, 0x017f, 0x007c, -+ 0x127e, 0x2091, 0x2200, 0x2061, 0x0100, 0x2071, 0xa600, 0x6024, -+ 0x6026, 0x6053, 0x0030, 0x6033, 0x00ef, 0x60e7, 0x0000, 0x60eb, -+ 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f, -+ 0x0080, 0x602f, 0x0000, 0x6007, 0x0eaf, 0x600f, 0x00ff, 0x602b, -+ 0x002f, 0x127f, 0x007c, 0x2001, 0xa630, 0x2003, 0x0000, 0x2001, -+ 0xa62f, 0x2003, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200, 0x007e, -+ 0x017e, 0x027e, 0x6124, 0xa184, 0x002c, 0x00c0, 0x227b, 0xa184, -+ 0x0007, 0x0079, 0x2281, 0xa195, 0x0004, 0xa284, 0x0007, 0x0079, -+ 0x2281, 0x22ad, 0x2289, 0x228d, 0x2291, 0x2297, 0x229b, 0x22a1, -+ 0x22a7, 0x1078, 0x5c56, 0x0078, 0x22ad, 0x1078, 0x5d45, 0x0078, -+ 0x22ad, 0x1078, 0x5d45, 0x1078, 0x5c56, 0x0078, 0x22ad, 0x1078, -+ 0x22b2, 0x0078, 0x22ad, 0x1078, 0x5c56, 0x1078, 0x22b2, 0x0078, -+ 0x22ad, 0x1078, 0x5d45, 0x1078, 0x22b2, 0x0078, 0x22ad, 0x1078, -+ 0x5d45, 0x1078, 0x5c56, 0x1078, 0x22b2, 0x027f, 0x017f, 0x007f, -+ 0x127f, 0x007c, 0x6124, 0xd1ac, 0x0040, 0x23ac, 0x017e, 0x047e, -+ 0x0c7e, 0x644c, 0xa486, 0xf0f0, 0x00c0, 0x22c5, 0x2061, 0x0100, -+ 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74c6, 0xa48c, 0xff00, -+ 0x7034, 0xd084, 0x0040, 0x22dd, 0xa186, 0xf800, 0x00c0, 0x22dd, -+ 0x703c, 0xd084, 0x00c0, 0x22dd, 0xc085, 0x703e, 0x037e, 0x2418, -+ 0x2011, 0x8016, 0x1078, 0x361b, 0x037f, 0xa196, 0xff00, 0x0040, -+ 0x231f, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116, 0x0040, 0x231f, -+ 0x7130, 0xd184, 0x00c0, 0x231f, 0x2011, 0xa653, 0x2214, 0xd2ec, -+ 0x0040, 0x22fa, 0xc18d, 0x7132, 0x2011, 0xa653, 0x2214, 0xd2ac, -+ 0x00c0, 0x231f, 0x6240, 0xa294, 0x0010, 0x0040, 0x2306, 0x6248, -+ 0xa294, 0xff00, 0xa296, 0xff00, 0x0040, 0x231f, 0x7030, 0xd08c, -+ 0x0040, 0x2371, 0x7034, 0xd08c, 0x00c0, 0x2316, 0x2001, 0xa60c, -+ 0x200c, 0xd1ac, 0x00c0, 0x2371, 0xc1ad, 0x2102, 0x037e, 0x73c4, -+ 0x2011, 0x8013, 0x1078, 0x361b, 0x037f, 0x0078, 0x2371, 0x7034, -+ 0xd08c, 0x00c0, 0x232b, 0x2001, 0xa60c, 0x200c, 0xd1ac, 0x00c0, -+ 0x2371, 0xc1ad, 0x2102, 0x037e, 0x73c4, 0x2011, 0x8013, 0x1078, -+ 0x361b, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011, 0xa653, 0x220c, -+ 0xd1a4, 0x0040, 0x2355, 0x017e, 0x2009, 0x0001, 0x2011, 0x0100, -+ 0x1078, 0x5bf1, 0x2019, 0x000e, 0x1078, 0xa195, 0xa484, 0x00ff, -+ 0xa080, 0x29c0, 0x200c, 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006, -+ 0x2009, 0x000e, 0x1078, 0xa21d, 0x017f, 0xd1ac, 0x00c0, 0x2362, -+ 0x017e, 0x2009, 0x0000, 0x2019, 0x0004, 0x1078, 0x284f, 0x017f, -+ 0x0078, 0x2371, 0x157e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x1078, -+ 0x45c4, 0x00c0, 0x236d, 0x1078, 0x42f8, 0x8108, 0x00f0, 0x2367, -+ 0x157f, 0x0c7f, 0x047f, 0x0f7e, 0x2079, 0xa8c4, 0x783c, 0xa086, -+ 0x0000, 0x0040, 0x2383, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079, -+ 0x0140, 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003, 0x1078, 0x70e0, -+ 0x2011, 0x0002, 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e, 0x2019, -+ 0x0000, 0x1078, 0x7058, 0x037f, 0x60e3, 0x0000, 0x017f, 0x2001, -+ 0xa600, 0x2014, 0xa296, 0x0004, 0x00c0, 0x23a4, 0xd19c, 0x00c0, -+ 0x23ac, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0xa622, -+ 0x2003, 0x0000, 0x6027, 0x0020, 0xd194, 0x0040, 0x2490, 0x0f7e, -+ 0x2079, 0xa8c4, 0x783c, 0xa086, 0x0001, 0x00c0, 0x23d0, 0x017e, -+ 0x6027, 0x0004, 0x783f, 0x0000, 0x2079, 0x0140, 0x7803, 0x1000, -+ 0x7803, 0x0000, 0x2079, 0xa8b1, 0x7807, 0x0000, 0x7833, 0x0000, -+ 0x1078, 0x62d1, 0x1078, 0x639b, 0x017f, 0x0f7f, 0x0078, 0x2490, -+ 0x0f7f, 0x017e, 0x3900, 0xa082, 0xa9e3, 0x00c8, 0x23db, 0x017e, -+ 0x1078, 0x747a, 0x017f, 0x6220, 0xd2b4, 0x0040, 0x2446, 0x1078, -+ 0x5acb, 0x1078, 0x6e0f, 0x6027, 0x0004, 0x0f7e, 0x2019, 0xa8ba, -+ 0x2304, 0xa07d, 0x0040, 0x241c, 0x7804, 0xa086, 0x0032, 0x00c0, -+ 0x241c, 0x0d7e, 0x0c7e, 0x0e7e, 0x2069, 0x0140, 0x618c, 0x6288, -+ 0x7818, 0x608e, 0x7808, 0x608a, 0x6043, 0x0002, 0x2001, 0x0003, -+ 0x8001, 0x00c0, 0x2400, 0x6043, 0x0000, 0x6803, 0x1000, 0x6803, -+ 0x0000, 0x618e, 0x628a, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x7810, -+ 0x2070, 0x7037, 0x0103, 0x2f60, 0x1078, 0x772d, 0x0e7f, 0x0c7f, -+ 0x0d7f, 0x0f7f, 0x017f, 0x007c, 0x0f7f, 0x0d7e, 0x2069, 0x0140, -+ 0x6804, 0xa084, 0x4000, 0x0040, 0x2429, 0x6803, 0x1000, 0x6803, -+ 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0xa8b1, 0x6028, 0xa09a, 0x00c8, -+ 0x00c8, 0x2439, 0x8000, 0x602a, 0x0c7f, 0x1078, 0x6e01, 0x0078, -+ 0x248f, 0x2019, 0xa8ba, 0x2304, 0xa065, 0x0040, 0x2443, 0x2009, -+ 0x0027, 0x1078, 0x775c, 0x0c7f, 0x0078, 0x248f, 0xd2bc, 0x0040, -+ 0x248f, 0x1078, 0x5ad8, 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e, -+ 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x245b, 0x6803, -+ 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0xa8b1, 0x6044, -+ 0xa09a, 0x00c8, 0x00c8, 0x247e, 0x8000, 0x6046, 0x603c, 0x0c7f, -+ 0xa005, 0x0040, 0x248f, 0x2009, 0x07d0, 0x1078, 0x5ad0, 0xa080, -+ 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0, 0x247a, 0x6017, 0x0012, -+ 0x0078, 0x248f, 0x6017, 0x0016, 0x0078, 0x248f, 0x037e, 0x2019, -+ 0x0001, 0x1078, 0x7058, 0x037f, 0x2019, 0xa8c0, 0x2304, 0xa065, -+ 0x0040, 0x248e, 0x2009, 0x004f, 0x1078, 0x775c, 0x0c7f, 0x017f, -+ 0xd19c, 0x0040, 0x24e4, 0x7034, 0xd0ac, 0x00c0, 0x24c1, 0x017e, -+ 0x157e, 0x6027, 0x0008, 0x602f, 0x0020, 0x20a9, 0x000a, 0x00f0, -+ 0x249f, 0x602f, 0x0000, 0x6150, 0xa185, 0x1400, 0x6052, 0x20a9, -+ 0x0320, 0x00e0, 0x24a9, 0x2091, 0x6000, 0x6020, 0xd09c, 0x00c0, -+ 0x24b8, 0x157f, 0x6152, 0x017f, 0x6027, 0x0008, 0x0078, 0x24e4, -+ 0x1078, 0x2577, 0x00f0, 0x24a9, 0x157f, 0x6152, 0x017f, 0x6027, -+ 0x0008, 0x017e, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078, -+ 0x70e0, 0x2011, 0x0002, 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e, -+ 0x2019, 0x0000, 0x1078, 0x7058, 0x037f, 0x60e3, 0x0000, 0x1078, -+ 0xa5ad, 0x1078, 0xa5cb, 0x2001, 0xa600, 0x2003, 0x0004, 0x6027, -+ 0x0008, 0x1078, 0x1246, 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c, -+ 0x007e, 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000, -+ 0x2071, 0xa600, 0x71bc, 0x70be, 0xa116, 0x0040, 0x2518, 0x81ff, -+ 0x0040, 0x2500, 0x2011, 0x8011, 0x1078, 0x361b, 0x0078, 0x2518, -+ 0x2011, 0x8012, 0x1078, 0x361b, 0x2001, 0xa672, 0x2004, 0xd0fc, -+ 0x00c0, 0x2518, 0x037e, 0x0c7e, 0x1078, 0x6f9f, 0x2061, 0x0100, -+ 0x2019, 0x0028, 0x2009, 0x0000, 0x1078, 0x284f, 0x0c7f, 0x037f, -+ 0x127f, 0x0f7f, 0x0e7f, 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e, -+ 0x0f7e, 0x007e, 0x027e, 0x2061, 0x0100, 0xa190, 0x253b, 0x2204, -+ 0x60f2, 0x2011, 0x2548, 0x6000, 0xa082, 0x0003, 0x00c8, 0x2534, -+ 0x2001, 0x00ff, 0x0078, 0x2535, 0x2204, 0x60ee, 0x027f, 0x007f, -+ 0x0f7f, 0x0c7f, 0x007c, 0x0840, 0x0840, 0x0840, 0x0580, 0x0420, -+ 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8, -+ 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028, 0xa18c, 0x00ff, -+ 0x2130, 0xa094, 0xff00, 0x00c0, 0x2558, 0x81ff, 0x0040, 0x255c, -+ 0x1078, 0x5761, 0x0078, 0x2563, 0xa080, 0x29c0, 0x200c, 0xa18c, -+ 0xff00, 0x810f, 0xa006, 0x007c, 0xa080, 0x29c0, 0x200c, 0xa18c, -+ 0x00ff, 0x007c, 0x0c7e, 0x2061, 0xa600, 0x6030, 0x0040, 0x2573, -+ 0xc09d, 0x0078, 0x2574, 0xc09c, 0x6032, 0x0c7f, 0x007c, 0x007e, -+ 0x157e, 0x0f7e, 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd08c, -+ 0x00c0, 0x2584, 0x00f0, 0x257e, 0x0f7f, 0x157f, 0x007f, 0x007c, -+ 0x0c7e, 0x007e, 0x2061, 0x0100, 0x6030, 0x007e, 0x6048, 0x007e, -+ 0x60e4, 0x007e, 0x60e8, 0x007e, 0x6050, 0x007e, 0x60f0, 0x007e, -+ 0x60ec, 0x007e, 0x600c, 0x007e, 0x6004, 0x007e, 0x6028, 0x007e, -+ 0x60e0, 0x007e, 0x602f, 0x0100, 0x602f, 0x0000, 0x0005, 0x0005, -+ 0x0005, 0x0005, 0x602f, 0x0040, 0x602f, 0x0000, 0x007f, 0x60e2, -+ 0x007f, 0x602a, 0x007f, 0x6006, 0x007f, 0x600e, 0x007f, 0x60ee, -+ 0x007f, 0x60f2, 0x007f, 0x6052, 0x007f, 0x60ea, 0x007f, 0x60e6, -+ 0x007f, 0x604a, 0x007f, 0x6032, 0x007f, 0x0c7f, 0x007c, 0x25e7, -+ 0x25eb, 0x25ef, 0x25f5, 0x25fb, 0x2601, 0x2607, 0x260f, 0x2617, -+ 0x261d, 0x2623, 0x262b, 0x2633, 0x263b, 0x2643, 0x264d, 0x2657, -+ 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, -+ 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x2657, 0x107e, -+ 0x007e, 0x0078, 0x2670, 0x107e, 0x007e, 0x0078, 0x2670, 0x107e, -+ 0x007e, 0x1078, 0x226c, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, -+ 0x226c, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x0078, -+ 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e, -+ 0x007e, 0x1078, 0x226c, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e, -+ 0x007e, 0x1078, 0x226c, 0x1078, 0x2133, 0x0078, 0x2670, 0x107e, -+ 0x007e, 0x1078, 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, -+ 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078, -+ 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078, -+ 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x1078, -+ 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x2133, 0x1078, -+ 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, 0x226c, 0x1078, -+ 0x2133, 0x1078, 0x2178, 0x0078, 0x2670, 0x107e, 0x007e, 0x1078, -+ 0x226c, 0x1078, 0x2133, 0x1078, 0x2178, 0x0078, 0x2670, 0x0005, -+ 0x0078, 0x2657, 0xb084, 0x003c, 0x8004, 0x8004, 0x0079, 0x2660, -+ 0x2670, 0x25ed, 0x25f1, 0x25f7, 0x25fd, 0x2603, 0x2609, 0x2611, -+ 0x2619, 0x261f, 0x2625, 0x262d, 0x2635, 0x263d, 0x2645, 0x264f, -+ 0x0008, 0x265a, 0x007f, 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e, -+ 0x027e, 0x047e, 0x2021, 0x0000, 0x1078, 0x4967, 0x00c0, 0x2772, -+ 0x70cc, 0xd09c, 0x0040, 0x268e, 0xd084, 0x00c0, 0x268e, 0xd0bc, -+ 0x00c0, 0x2772, 0x1078, 0x2776, 0x0078, 0x2772, 0xd0cc, 0x00c0, -+ 0x2772, 0xd094, 0x0040, 0x2698, 0x7097, 0xffff, 0x0078, 0x2772, -+ 0x2001, 0x010c, 0x203c, 0x7284, 0xd284, 0x0040, 0x2701, 0xd28c, -+ 0x00c0, 0x2701, 0x037e, 0x7394, 0xa38e, 0xffff, 0x0040, 0x26ab, -+ 0x83ff, 0x00c0, 0x26ad, 0x2019, 0x0001, 0x8314, 0xa2e0, 0xacc0, -+ 0x2c04, 0xa38c, 0x0001, 0x0040, 0x26ba, 0xa084, 0xff00, 0x8007, -+ 0x0078, 0x26bc, 0xa084, 0x00ff, 0xa70e, 0x0040, 0x26f6, 0xa08e, -+ 0x0000, 0x0040, 0x26f6, 0xa08e, 0x00ff, 0x00c0, 0x26d3, 0x7230, -+ 0xd284, 0x00c0, 0x26fc, 0x7284, 0xc28d, 0x7286, 0x7097, 0xffff, -+ 0x037f, 0x0078, 0x2701, 0x2009, 0x0000, 0x1078, 0x254d, 0x1078, -+ 0x455c, 0x00c0, 0x26f9, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, -+ 0x00c0, 0x26f0, 0x7030, 0xd08c, 0x0040, 0x26ea, 0x6000, 0xd0bc, -+ 0x0040, 0x26f0, 0x1078, 0x278c, 0x0040, 0x26f9, 0x0078, 0x26f6, -+ 0x1078, 0x28c4, 0x1078, 0x27b9, 0x0040, 0x26f9, 0x8318, 0x0078, -+ 0x26ad, 0x7396, 0x0078, 0x26fe, 0x7097, 0xffff, 0x037f, 0x0078, -+ 0x2772, 0xa780, 0x29c0, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x2041, -+ 0x007e, 0x7094, 0xa096, 0xffff, 0x00c0, 0x2713, 0x2009, 0x0000, -+ 0x28a8, 0x0078, 0x271f, 0xa812, 0x0048, 0x271b, 0x2008, 0xa802, -+ 0x20a8, 0x0078, 0x271f, 0x7097, 0xffff, 0x0078, 0x2772, 0x2700, -+ 0x157e, 0x017e, 0xa106, 0x0040, 0x2766, 0xc484, 0x1078, 0x45c4, -+ 0x0040, 0x2730, 0x1078, 0x455c, 0x00c0, 0x276f, 0x0078, 0x2731, -+ 0xc485, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2740, -+ 0x7030, 0xd08c, 0x0040, 0x275e, 0x6000, 0xd0bc, 0x00c0, 0x275e, -+ 0x7284, 0xd28c, 0x0040, 0x2756, 0x6004, 0xa084, 0x00ff, 0xa082, -+ 0x0006, 0x0048, 0x2766, 0xd484, 0x00c0, 0x2752, 0x1078, 0x457f, -+ 0x0078, 0x2754, 0x1078, 0x298e, 0x0078, 0x2766, 0x1078, 0x28c4, -+ 0x1078, 0x27b9, 0x0040, 0x276f, 0x0078, 0x2766, 0x1078, 0x2959, -+ 0x0040, 0x2766, 0x1078, 0x278c, 0x0040, 0x276f, 0x017f, 0x8108, -+ 0x157f, 0x00f0, 0x271f, 0x7097, 0xffff, 0x0078, 0x2772, 0x017f, -+ 0x157f, 0x7196, 0x047f, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x017e, -+ 0x7097, 0x0001, 0x2009, 0x007e, 0x1078, 0x455c, 0x00c0, 0x2789, -+ 0x1078, 0x28c4, 0x1078, 0x27b9, 0x0040, 0x2789, 0x70cc, 0xc0bd, -+ 0x70ce, 0x017f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, -+ 0x2c68, 0x2001, 0xa657, 0x2004, 0xa084, 0x00ff, 0x6842, 0x1078, -+ 0x76c7, 0x0040, 0x27b4, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, -+ 0x0000, 0x1078, 0x44ee, 0x2001, 0x0000, 0x1078, 0x4502, 0x127e, -+ 0x2091, 0x8000, 0x7090, 0x8000, 0x7092, 0x127f, 0x2009, 0x0004, -+ 0x1078, 0x775c, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, -+ 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x2001, 0xa657, -+ 0x2004, 0xa084, 0x00ff, 0x6842, 0x1078, 0x9187, 0x0040, 0x27f2, -+ 0x2d00, 0x601a, 0x6800, 0xc0c4, 0x6802, 0x68a0, 0xa086, 0x007e, -+ 0x0040, 0x27db, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, -+ 0x27db, 0x1078, 0x2880, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, -+ 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x127e, 0x2091, 0x8000, -+ 0x7090, 0x8000, 0x7092, 0x127f, 0x2009, 0x0002, 0x1078, 0x775c, -+ 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e, -+ 0x027e, 0x2009, 0x0080, 0x1078, 0x455c, 0x00c0, 0x2805, 0x1078, -+ 0x2808, 0x0040, 0x2805, 0x70d3, 0xffff, 0x027f, 0x0c7f, 0x007c, -+ 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x76c7, 0x0040, -+ 0x282a, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, -+ 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x127e, 0x2091, 0x8000, -+ 0x70d4, 0x8000, 0x70d6, 0x127f, 0x2009, 0x0002, 0x1078, 0x775c, -+ 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e, -+ 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2009, 0x007f, 0x1078, 0x455c, -+ 0x00c0, 0x284b, 0x2c68, 0x1078, 0x76c7, 0x0040, 0x284b, 0x2d00, -+ 0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x2009, 0x0022, 0x1078, -+ 0x775c, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x0c7f, 0x007c, 0x0e7e, -+ 0x0c7e, 0x067e, 0x037e, 0x027e, 0x1078, 0x5f0e, 0x1078, 0x5eae, -+ 0x1078, 0x8068, 0x2130, 0x81ff, 0x0040, 0x2864, 0x20a9, 0x007e, -+ 0x2009, 0x0000, 0x0078, 0x2868, 0x20a9, 0x007f, 0x2009, 0x0000, -+ 0x017e, 0x1078, 0x45c4, 0x00c0, 0x2871, 0x1078, 0x47e9, 0x1078, -+ 0x42f8, 0x017f, 0x8108, 0x00f0, 0x2868, 0x86ff, 0x00c0, 0x287a, -+ 0x1078, 0x119b, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c, -+ 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, -+ 0x027e, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, -+ 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f, 0x017f, 0x2e60, -+ 0x1078, 0x47e9, 0x6210, 0x6314, 0x1078, 0x42f8, 0x6212, 0x6316, -+ 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x007e, -+ 0x6018, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x00c0, 0x28ba, 0x2071, -+ 0xa600, 0x7090, 0xa005, 0x0040, 0x28b7, 0x8001, 0x7092, 0x007f, -+ 0x0e7f, 0x007c, 0x2071, 0xa600, 0x70d4, 0xa005, 0x0040, 0x28b7, -+ 0x8001, 0x70d6, 0x0078, 0x28b7, 0x6000, 0xc08c, 0x6002, 0x007c, -+ 0x0f7e, 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x157e, 0x2178, -+ 0x81ff, 0x00c0, 0x28d7, 0x20a9, 0x0001, 0x0078, 0x28f2, 0x2001, -+ 0xa653, 0x2004, 0xd0c4, 0x0040, 0x28ee, 0xd0a4, 0x0040, 0x28ee, -+ 0x047e, 0x6018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, -+ 0xa006, 0x2009, 0x002d, 0x1078, 0xa21d, 0x047f, 0x20a9, 0x00ff, -+ 0x2011, 0x0000, 0x027e, 0xa28e, 0x007e, 0x0040, 0x2936, 0xa28e, -+ 0x007f, 0x0040, 0x2936, 0xa28e, 0x0080, 0x0040, 0x2936, 0xa288, -+ 0xa735, 0x210c, 0x81ff, 0x0040, 0x2936, 0x8fff, 0x1040, 0x2942, -+ 0x0c7e, 0x2160, 0x2001, 0x0001, 0x1078, 0x4972, 0x0c7f, 0x2019, -+ 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, -+ 0x0c7e, 0x027e, 0x2160, 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, -+ 0x00c0, 0x2926, 0x6007, 0x0404, 0x0078, 0x292b, 0x2001, 0x0004, -+ 0x8007, 0xa215, 0x6206, 0x027f, 0x0c7f, 0x017e, 0x2c08, 0x1078, -+ 0x9f8b, 0x017f, 0x077f, 0x2160, 0x1078, 0x47e9, 0x027f, 0x8210, -+ 0x00f0, 0x28f2, 0x157f, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, -+ 0x0f7f, 0x007c, 0x047e, 0x027e, 0x017e, 0x2001, 0xa653, 0x2004, -+ 0xd0c4, 0x0040, 0x2955, 0xd0a4, 0x0040, 0x2955, 0xa006, 0x2220, -+ 0x8427, 0x2009, 0x0029, 0x1078, 0xa21d, 0x017f, 0x027f, 0x047f, -+ 0x007c, 0x017e, 0x027e, 0x037e, 0x0c7e, 0x7284, 0x82ff, 0x0040, -+ 0x2987, 0xa290, 0xa653, 0x2214, 0xd2ac, 0x00c0, 0x2987, 0x2100, -+ 0x1078, 0x2564, 0x81ff, 0x0040, 0x2989, 0x2019, 0x0001, 0x8314, -+ 0xa2e0, 0xacc0, 0x2c04, 0xd384, 0x0040, 0x297b, 0xa084, 0xff00, -+ 0x8007, 0x0078, 0x297d, 0xa084, 0x00ff, 0xa116, 0x0040, 0x2989, -+ 0xa096, 0x00ff, 0x0040, 0x2987, 0x8318, 0x0078, 0x296f, 0xa085, -+ 0x0001, 0x0c7f, 0x037f, 0x027f, 0x017f, 0x007c, 0x017e, 0x0c7e, -+ 0x127e, 0x2091, 0x8000, 0x017e, 0x027e, 0x037e, 0x2110, 0x027e, -+ 0x2019, 0x0029, 0x1078, 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f, -+ 0x027f, 0x017f, 0xa180, 0xa735, 0x2004, 0xa065, 0x0040, 0x29b7, -+ 0x017e, 0x0c7e, 0x1078, 0x9187, 0x017f, 0x1040, 0x1332, 0x611a, -+ 0x1078, 0x2880, 0x1078, 0x772d, 0x017f, 0x1078, 0x457f, 0x127f, -+ 0x0c7f, 0x017f, 0x007c, 0x2001, 0xa633, 0x2004, 0xd0cc, 0x007c, -+ 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, -+ 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, -+ 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, -+ 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, -+ 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, -+ 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, -+ 0x8098, 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, -+ 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, -+ 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, -+ 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, -+ 0x8055, 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, -+ 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, -+ 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, -+ 0x802e, 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, -+ 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, -+ 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, -+ 0x3800, 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, -+ 0x3400, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, -+ 0x3200, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, -+ 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, -+ 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, -+ 0x8000, 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, -+ 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, -+ 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, -+ 0x8000, 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, -+ 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, -+ 0x8000, 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, -+ 0x0500, 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, -+ 0x0100, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x2071, 0xa682, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a, -+ 0x703e, 0x7033, 0xa692, 0x7037, 0xa692, 0x7007, 0x0001, 0x2061, -+ 0xa6d2, 0x6003, 0x0002, 0x007c, 0x0090, 0x2ae7, 0x0068, 0x2ae7, -+ 0x2071, 0xa682, 0x2b78, 0x7818, 0xd084, 0x00c0, 0x2ae7, 0x2a60, -+ 0x7820, 0xa08e, 0x0069, 0x00c0, 0x2bd7, 0x0079, 0x2b6b, 0x007c, -+ 0x2071, 0xa682, 0x7004, 0x0079, 0x2aed, 0x2af1, 0x2af2, 0x2afc, -+ 0x2b0e, 0x007c, 0x0090, 0x2afb, 0x0068, 0x2afb, 0x2b78, 0x7818, -+ 0xd084, 0x0040, 0x2b1a, 0x007c, 0x2b78, 0x2061, 0xa6d2, 0x6008, -+ 0xa08e, 0x0100, 0x0040, 0x2b09, 0xa086, 0x0200, 0x0040, 0x2bcf, -+ 0x007c, 0x7014, 0x2068, 0x2a60, 0x7018, 0x007a, 0x7010, 0x2068, -+ 0x6834, 0xa086, 0x0103, 0x0040, 0x2b16, 0x007c, 0x2a60, 0x2b78, -+ 0x7018, 0x007a, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x00c8, 0x2b23, -+ 0x61bc, 0x0079, 0x2b2b, 0x2100, 0xa08a, 0x003f, 0x00c8, 0x2bcb, -+ 0x61bc, 0x0079, 0x2b6b, 0x2bad, 0x2bdf, 0x2be7, 0x2beb, 0x2bf3, -+ 0x2bf9, 0x2bfd, 0x2c09, 0x2c0d, 0x2c17, 0x2c1b, 0x2bcb, 0x2bcb, -+ 0x2bcb, 0x2c1f, 0x2bcb, 0x2c2f, 0x2c46, 0x2c5d, 0x2cdd, 0x2ce2, -+ 0x2d0f, 0x2d69, 0x2d7a, 0x2d98, 0x2dd9, 0x2de3, 0x2df0, 0x2e03, -+ 0x2e22, 0x2e2b, 0x2e68, 0x2e6e, 0x2bcb, 0x2e8a, 0x2bcb, 0x2bcb, -+ 0x2bcb, 0x2bcb, 0x2bcb, 0x2e91, 0x2e9b, 0x2bcb, 0x2bcb, 0x2bcb, -+ 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2ea3, 0x2bcb, 0x2bcb, -+ 0x2bcb, 0x2bcb, 0x2bcb, 0x2eb5, 0x2ece, 0x2bcb, 0x2bcb, 0x2bcb, -+ 0x2bcb, 0x2bcb, 0x2bcb, 0x2ee0, 0x2f37, 0x2f95, 0x2fa9, 0x2bcb, -+ 0x2bcb, 0x2bcb, 0x398e, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, -+ 0x2bcb, 0x2bcb, 0x2bcb, 0x2c17, 0x2c1b, 0x2fc0, 0x2bcb, 0x2fcd, -+ 0x3a26, 0x3a83, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, -+ 0x2bcb, 0x2bcb, 0x2bcb, 0x301a, 0x314f, 0x316b, 0x3177, 0x31da, -+ 0x3233, 0x323e, 0x327d, 0x328c, 0x329b, 0x329e, 0x2fd1, 0x32c2, -+ 0x331e, 0x332b, 0x343c, 0x356f, 0x3599, 0x36a6, 0x2bcb, 0x36b6, -+ 0x36f0, 0x37bf, 0x2bcb, 0x2bcb, 0x2bcb, 0x2bcb, 0x3827, 0x3843, -+ 0x38bd, 0x3977, 0x713c, 0x0078, 0x2bad, 0x2021, 0x4000, 0x1078, -+ 0x35f5, 0x127e, 0x2091, 0x8000, 0x0068, 0x2bba, 0x7818, 0xd084, -+ 0x0040, 0x2bbd, 0x127f, 0x0078, 0x2bb1, 0x7c22, 0x7926, 0x7a2a, -+ 0x7b2e, 0x781b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, -+ 0x5000, 0x127f, 0x007c, 0x2021, 0x4001, 0x0078, 0x2baf, 0x2021, -+ 0x4002, 0x0078, 0x2baf, 0x2021, 0x4003, 0x0078, 0x2baf, 0x2021, -+ 0x4005, 0x0078, 0x2baf, 0x2021, 0x4006, 0x0078, 0x2baf, 0xa02e, -+ 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078, 0x3604, 0x7823, -+ 0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, -+ 0x7930, 0x0078, 0x3608, 0x7924, 0x7828, 0x2114, 0x200a, 0x0078, -+ 0x2bad, 0x7924, 0x2114, 0x0078, 0x2bad, 0x2099, 0x0009, 0x20a1, -+ 0x0009, 0x20a9, 0x0007, 0x53a3, 0x7924, 0x7a28, 0x7b2c, 0x0078, -+ 0x2bad, 0x7824, 0x2060, 0x0078, 0x2c21, 0x2009, 0x0001, 0x2011, -+ 0x0013, 0x2019, 0x0018, 0x783b, 0x0017, 0x0078, 0x2bad, 0x7d38, -+ 0x7c3c, 0x0078, 0x2be1, 0x7d38, 0x7c3c, 0x0078, 0x2bed, 0x2061, -+ 0x1000, 0x610c, 0xa006, 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0, -+ 0x2c23, 0x2010, 0xa005, 0x0040, 0x2bad, 0x0078, 0x2bd3, 0x2069, -+ 0xa652, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x2bdb, 0x8019, 0x0040, -+ 0x2bdb, 0x684a, 0x6942, 0x782c, 0x6852, 0x7828, 0x6856, 0xa006, -+ 0x685a, 0x685e, 0x1078, 0x4eae, 0x0078, 0x2bad, 0x2069, 0xa652, -+ 0x7824, 0x7934, 0xa11a, 0x00c8, 0x2bdb, 0x8019, 0x0040, 0x2bdb, -+ 0x684e, 0x6946, 0x782c, 0x6862, 0x7828, 0x6866, 0xa006, 0x686a, -+ 0x686e, 0x1078, 0x4a3e, 0x0078, 0x2bad, 0xa02e, 0x2520, 0x81ff, -+ 0x00c0, 0x2bd7, 0x7924, 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1, -+ 0xa689, 0x41a1, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x2009, 0x0020, -+ 0x1078, 0x3604, 0x701b, 0x2c75, 0x007c, 0x6834, 0x2008, 0xa084, -+ 0x00ff, 0xa096, 0x0011, 0x0040, 0x2c85, 0xa096, 0x0019, 0x0040, -+ 0x2c85, 0xa096, 0x0015, 0x00c0, 0x2bd7, 0x810f, 0xa18c, 0x00ff, -+ 0x0040, 0x2bd7, 0x710e, 0x700c, 0x8001, 0x0040, 0x2cb6, 0x700e, -+ 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x2009, 0x0020, 0x2061, 0xa6d2, -+ 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399, 0x0000, -+ 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x1078, 0x3604, 0x701b, 0x2ca9, -+ 0x007c, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040, 0x2cb4, -+ 0xa096, 0x000a, 0x00c0, 0x2bd7, 0x0078, 0x2c8b, 0x7010, 0x2068, -+ 0x6838, 0xc0fd, 0x683a, 0x1078, 0x4431, 0x00c0, 0x2cc4, 0x7007, -+ 0x0003, 0x701b, 0x2cc6, 0x007c, 0x1078, 0x4b51, 0x127e, 0x2091, -+ 0x8000, 0x20a9, 0x0005, 0x2099, 0xa689, 0x530a, 0x2100, 0xa210, -+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, -+ 0x2009, 0x0020, 0x127f, 0x0078, 0x3608, 0x61a4, 0x7824, 0x60a6, -+ 0x0078, 0x2bad, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, -+ 0x782b, 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, -+ 0x3f00, 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, -+ 0x8007, 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, -+ 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, -+ 0x00f0, 0xa08a, 0x0003, 0x00c8, 0x0427, 0x0078, 0x0423, 0x81ff, -+ 0x00c0, 0x2bd7, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x45c4, -+ 0x00c0, 0x2bdb, 0x7e38, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048, -+ 0x2d23, 0x0078, 0x2bdb, 0x7c28, 0x7d2c, 0x1078, 0x47a4, 0xd28c, -+ 0x00c0, 0x2d2e, 0x1078, 0x4736, 0x0078, 0x2d30, 0x1078, 0x4772, -+ 0x00c0, 0x2d5a, 0x2061, 0xad00, 0x127e, 0x2091, 0x8000, 0x6000, -+ 0xa086, 0x0000, 0x0040, 0x2d48, 0x6010, 0xa06d, 0x0040, 0x2d48, -+ 0x683c, 0xa406, 0x00c0, 0x2d48, 0x6840, 0xa506, 0x0040, 0x2d53, -+ 0x127f, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02, 0x00c8, -+ 0x2bd7, 0x0078, 0x2d34, 0x1078, 0x8a01, 0x127f, 0x0040, 0x2bd7, -+ 0x0078, 0x2bad, 0xa00e, 0x2001, 0x0005, 0x1078, 0x4b51, 0x127e, -+ 0x2091, 0x8000, 0x1078, 0x8f85, 0x1078, 0x4a73, 0x127f, 0x0078, -+ 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, 0x0040, 0x2bdb, -+ 0x1078, 0x4673, 0x0040, 0x2bd7, 0x1078, 0x47b2, 0x0040, 0x2bd7, -+ 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, -+ 0x2bdb, 0x1078, 0x482f, 0x0040, 0x2bd7, 0x2019, 0x0005, 0x1078, -+ 0x47d3, 0x0040, 0x2bd7, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb, -+ 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x5a52, 0x0078, 0x2bad, -+ 0x127e, 0x2091, 0x8000, 0x81ff, 0x0040, 0x2da2, 0x2009, 0x0001, -+ 0x0078, 0x2dd3, 0x2029, 0x00ff, 0x6450, 0x2400, 0xa506, 0x0040, -+ 0x2dcd, 0x2508, 0x1078, 0x45c4, 0x00c0, 0x2dcd, 0x1078, 0x482f, -+ 0x00c0, 0x2db8, 0x2009, 0x0002, 0x62ac, 0x2518, 0x0078, 0x2dd3, -+ 0x2019, 0x0004, 0x1078, 0x47d3, 0x00c0, 0x2dc2, 0x2009, 0x0006, -+ 0x0078, 0x2dd3, 0x7824, 0xa08a, 0x1000, 0x00c8, 0x2dd6, 0x8003, -+ 0x800b, 0x810b, 0xa108, 0x1078, 0x5a52, 0x8529, 0x00c8, 0x2da5, -+ 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078, 0x2bd7, 0x127f, 0x0078, -+ 0x2bdb, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x46e7, 0x1078, -+ 0x47a4, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, -+ 0x0040, 0x2bdb, 0x1078, 0x46d6, 0x1078, 0x47a4, 0x0078, 0x2bad, -+ 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, -+ 0x4775, 0x0040, 0x2bd7, 0x1078, 0x4484, 0x1078, 0x472f, 0x1078, -+ 0x47a4, 0x0078, 0x2bad, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, -+ 0x4673, 0x0040, 0x2bd7, 0x62a0, 0x2019, 0x0005, 0x0c7e, 0x1078, -+ 0x47e9, 0x0c7f, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, -+ 0x5e0a, 0x2009, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x1078, 0x47a4, -+ 0x0078, 0x2bad, 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x47a4, -+ 0x2208, 0x0078, 0x2bad, 0x157e, 0x0d7e, 0x0e7e, 0x2069, 0xa714, -+ 0x6810, 0x6914, 0xa10a, 0x00c8, 0x2e37, 0x2009, 0x0000, 0x6816, -+ 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x00ff, 0x2069, 0xa735, -+ 0x2d04, 0xa075, 0x0040, 0x2e4c, 0x704c, 0x1078, 0x2e56, 0xa210, -+ 0x7080, 0x1078, 0x2e56, 0xa318, 0x8d68, 0x00f0, 0x2e40, 0x2300, -+ 0xa218, 0x0e7f, 0x0d7f, 0x157f, 0x0078, 0x2bad, 0x0f7e, 0x017e, -+ 0xa07d, 0x0040, 0x2e65, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff, -+ 0x0040, 0x2e65, 0x2178, 0x0078, 0x2e5d, 0x017f, 0x0f7f, 0x007c, -+ 0x2069, 0xa714, 0x6910, 0x62a8, 0x0078, 0x2bad, 0x81ff, 0x00c0, -+ 0x2bd7, 0x6150, 0xa190, 0x29c0, 0x2214, 0xa294, 0x00ff, 0x6070, -+ 0xa084, 0xff00, 0xa215, 0x636c, 0x67cc, 0xd79c, 0x0040, 0x2e84, -+ 0x2031, 0x0001, 0x0078, 0x2e86, 0x2031, 0x0000, 0x7e3a, 0x7f3e, -+ 0x0078, 0x2bad, 0x6140, 0x6244, 0x2019, 0xa8a2, 0x231c, 0x0078, -+ 0x2bad, 0x127e, 0x2091, 0x8000, 0x6134, 0x6338, 0xa006, 0x2010, -+ 0x127f, 0x0078, 0x2bad, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x6244, -+ 0x6338, 0x0078, 0x2bad, 0x6140, 0x6244, 0x7824, 0x6042, 0x7b28, -+ 0x6346, 0x2069, 0xa652, 0x831f, 0xa305, 0x6816, 0x782c, 0x2069, -+ 0xa8a2, 0x2d1c, 0x206a, 0x0078, 0x2bad, 0x017e, 0x127e, 0x2091, -+ 0x8000, 0x7824, 0x6036, 0xd094, 0x0040, 0x2ec8, 0x7828, 0xa085, -+ 0x0001, 0x2009, 0xa8ab, 0x200a, 0x2001, 0xffff, 0x1078, 0x5ae6, -+ 0x782c, 0x603a, 0x127f, 0x017f, 0x0078, 0x2bad, 0x1078, 0x35e4, -+ 0x0040, 0x2bdb, 0x7828, 0xa00d, 0x0040, 0x2bdb, 0x782c, 0xa005, -+ 0x0040, 0x2bdb, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078, 0x2bad, -+ 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x0c7e, -+ 0x2061, 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, -+ 0x00c0, 0x2ef7, 0x6030, 0xa085, 0xff00, 0x0078, 0x2f06, 0xa182, -+ 0x007f, 0x00c8, 0x2f30, 0xa188, 0x29c0, 0x210c, 0xa18c, 0x00ff, -+ 0x6030, 0xa116, 0x0040, 0x2f30, 0x810f, 0xa105, 0x127e, 0x2091, -+ 0x8000, 0x007e, 0x1078, 0x76c7, 0x007f, 0x0040, 0x2f2c, 0x601a, -+ 0x600b, 0xbc09, 0x601f, 0x0001, 0x1078, 0x35ba, 0x0040, 0x2f33, -+ 0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd, -+ 0x683a, 0x701b, 0x2f8e, 0x2d00, 0x6012, 0x2009, 0x0032, 0x1078, -+ 0x775c, 0x127f, 0x0c7f, 0x007c, 0x127f, 0x0c7f, 0x0078, 0x2bd7, -+ 0x0c7f, 0x0078, 0x2bdb, 0x1078, 0x772d, 0x0078, 0x2f2c, 0x2001, -+ 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x0c7e, 0x2061, -+ 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x00c0, -+ 0x2f4e, 0x6030, 0xa085, 0xff00, 0x0078, 0x2f5d, 0xa182, 0x007f, -+ 0x00c8, 0x2f87, 0xa188, 0x29c0, 0x210c, 0xa18c, 0x00ff, 0x6030, -+ 0xa116, 0x0040, 0x2f87, 0x810f, 0xa105, 0x127e, 0x2091, 0x8000, -+ 0x007e, 0x1078, 0x76c7, 0x007f, 0x0040, 0x2f83, 0x601a, 0x600b, -+ 0xbc05, 0x601f, 0x0001, 0x1078, 0x35ba, 0x0040, 0x2f8a, 0x6837, -+ 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, -+ 0x701b, 0x2f8e, 0x2d00, 0x6012, 0x2009, 0x0032, 0x1078, 0x775c, -+ 0x127f, 0x0c7f, 0x007c, 0x127f, 0x0c7f, 0x0078, 0x2bd7, 0x0c7f, -+ 0x0078, 0x2bdb, 0x1078, 0x772d, 0x0078, 0x2f83, 0x6830, 0xa086, -+ 0x0100, 0x0040, 0x2bd7, 0x0078, 0x2bad, 0x2061, 0xa933, 0x127e, -+ 0x2091, 0x8000, 0x6000, 0xd084, 0x0040, 0x2fa6, 0x6104, 0x6208, -+ 0x2019, 0xa612, 0x231c, 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078, -+ 0x2bdb, 0x81ff, 0x00c0, 0x2bd7, 0x127e, 0x2091, 0x8000, 0x6248, -+ 0x6064, 0xa202, 0x0048, 0x2fbd, 0xa085, 0x0001, 0x1078, 0x256a, -+ 0x1078, 0x3c9e, 0x127f, 0x0078, 0x2bad, 0x127f, 0x0078, 0x2bdb, -+ 0x127e, 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, 0xa640, 0x20a0, -+ 0xa006, 0x40a4, 0x127f, 0x0078, 0x2bad, 0x7d38, 0x7c3c, 0x0078, -+ 0x2c5f, 0x7824, 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x00c8, 0x2bd7, -+ 0x6250, 0xa084, 0xff00, 0x8007, 0xa206, 0x00c0, 0x2fe9, 0x2001, -+ 0xa640, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, -+ 0x3608, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb, -+ 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2bd7, 0x0c7e, -+ 0x1078, 0x35ba, 0x0c7f, 0x0040, 0x2bd7, 0x6837, 0x0000, 0x6838, -+ 0xc0fd, 0x683a, 0x1078, 0x8e4a, 0x0040, 0x2bd7, 0x7007, 0x0003, -+ 0x701b, 0x300b, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7, -+ 0xad80, 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, -+ 0x0078, 0x3608, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x1078, 0x42dd, -+ 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604, -+ 0x701b, 0x302b, 0x007c, 0xade8, 0x000d, 0x6800, 0xa005, 0x0040, -+ 0x2bdb, 0x6804, 0xd0ac, 0x0040, 0x3038, 0xd0a4, 0x0040, 0x2bdb, -+ 0xd094, 0x0040, 0x3043, 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18c, -+ 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x304e, 0x0c7e, 0x2061, -+ 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f, 0x2009, 0x0100, -+ 0x210c, 0xa18a, 0x0002, 0x0048, 0x3063, 0xd084, 0x0040, 0x3063, -+ 0x6a28, 0xa28a, 0x007f, 0x00c8, 0x2bdb, 0xa288, 0x29c0, 0x210c, -+ 0xa18c, 0x00ff, 0x6156, 0xd0dc, 0x0040, 0x306c, 0x6828, 0xa08a, -+ 0x007f, 0x00c8, 0x2bdb, 0x6052, 0x6808, 0xa08a, 0x0100, 0x0048, -+ 0x2bdb, 0xa08a, 0x0841, 0x00c8, 0x2bdb, 0xa084, 0x0007, 0x00c0, -+ 0x2bdb, 0x680c, 0xa005, 0x0040, 0x2bdb, 0x6810, 0xa005, 0x0040, -+ 0x2bdb, 0x6848, 0x6940, 0xa10a, 0x00c8, 0x2bdb, 0x8001, 0x0040, -+ 0x2bdb, 0x684c, 0x6944, 0xa10a, 0x00c8, 0x2bdb, 0x8001, 0x0040, -+ 0x2bdb, 0x6804, 0xd0fc, 0x0040, 0x30c2, 0x1078, 0x35ba, 0x0040, -+ 0x2bd7, 0x2009, 0x0014, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0xa290, -+ 0x0038, 0xa399, 0x0000, 0x1078, 0x3604, 0x701b, 0x30a8, 0x007c, -+ 0xade8, 0x000d, 0x20a9, 0x0014, 0x2d98, 0x2069, 0xa66e, 0x2da0, -+ 0x53a3, 0x7010, 0xa0e8, 0x000d, 0x2001, 0xa672, 0x200c, 0xd1e4, -+ 0x0040, 0x30c2, 0x0c7e, 0x2061, 0x0100, 0x6004, 0xa085, 0x0b00, -+ 0x6006, 0x0c7f, 0x20a9, 0x001c, 0x2d98, 0x2069, 0xa652, 0x2da0, -+ 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x6142, 0x8007, 0xa084, 0x00ff, -+ 0x6046, 0x1078, 0x4eae, 0x1078, 0x49ce, 0x1078, 0x4a3e, 0x6000, -+ 0xa086, 0x0000, 0x00c0, 0x314d, 0x6808, 0x602a, 0x1078, 0x21f7, -+ 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, -+ 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040, 0x30fa, -+ 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, -+ 0x0078, 0x30fc, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, -+ 0x1078, 0x5b19, 0x6904, 0xd1fc, 0x0040, 0x312f, 0x0c7e, 0x2009, -+ 0x0000, 0x20a9, 0x0001, 0x6b70, 0xd384, 0x0040, 0x312c, 0x0078, -+ 0x3116, 0x839d, 0x00c8, 0x312c, 0x3508, 0x8109, 0x1078, 0x5480, -+ 0x6878, 0x6016, 0x6874, 0x2008, 0xa084, 0xff00, 0x8007, 0x600a, -+ 0xa184, 0x00ff, 0x6006, 0x8108, 0x00c0, 0x312a, 0x6003, 0x0003, -+ 0x0078, 0x312c, 0x6003, 0x0001, 0x00f0, 0x3111, 0x0c7f, 0x0c7e, -+ 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x0c7f, 0x1078, -+ 0x3819, 0x0040, 0x313d, 0x1078, 0x256a, 0x60c0, 0xa005, 0x0040, -+ 0x3149, 0x6003, 0x0001, 0x2091, 0x301d, 0x1078, 0x4224, 0x0078, -+ 0x314d, 0x6003, 0x0004, 0x2091, 0x301d, 0x0078, 0x2bad, 0x6000, -+ 0xa086, 0x0000, 0x0040, 0x2bd7, 0x2069, 0xa652, 0x7830, 0x6842, -+ 0x7834, 0x6846, 0x6804, 0xd0fc, 0x0040, 0x3162, 0x2009, 0x0030, -+ 0x0078, 0x3164, 0x2009, 0x001c, 0x2d00, 0x7a2c, 0x7b28, 0x7c3c, -+ 0x7d38, 0x0078, 0x3608, 0xa006, 0x1078, 0x256a, 0x81ff, 0x00c0, -+ 0x2bd7, 0x1078, 0x42dd, 0x1078, 0x4224, 0x0078, 0x2bad, 0x81ff, -+ 0x00c0, 0x2bd7, 0x6184, 0x81ff, 0x0040, 0x3191, 0x703f, 0x0000, -+ 0x2001, 0xacc0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, -+ 0x127e, 0x2091, 0x8000, 0x1078, 0x3608, 0x701b, 0x2baa, 0x127f, -+ 0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0xacc0, 0x20a9, 0x0040, -+ 0x20a1, 0xacc0, 0x2019, 0xffff, 0x43a4, 0x6550, 0xa588, 0x29c0, -+ 0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100, -+ 0xa506, 0x0040, 0x31c3, 0x1078, 0x45c4, 0x00c0, 0x31c3, 0x6014, -+ 0x821c, 0x0048, 0x31bb, 0xa398, 0xacc0, 0xa085, 0xff00, 0x8007, -+ 0x201a, 0x0078, 0x31c2, 0xa398, 0xacc0, 0x2324, 0xa4a4, 0xff00, -+ 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x00c8, 0x31ca, -+ 0x0078, 0x31a7, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x0d7f, -+ 0x20a9, 0x0040, 0x20a1, 0xacc0, 0x2099, 0xacc0, 0x1078, 0x4281, -+ 0x0078, 0x3180, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x0c7e, 0x1078, -+ 0x35ba, 0x0c7f, 0x00c0, 0x31e8, 0x2009, 0x0002, 0x0078, 0x2bd7, -+ 0x2001, 0xa653, 0x2004, 0xd0b4, 0x0040, 0x320f, 0x6000, 0xd08c, -+ 0x00c0, 0x320f, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, -+ 0x320f, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x8e9e, -+ 0x00c0, 0x3206, 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003, -+ 0x701b, 0x320b, 0x007c, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x20a9, -+ 0x002b, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004, -+ 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078, 0x4281, -+ 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, -+ 0x1078, 0x4281, 0x2d00, 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c, -+ 0x7d38, 0x0078, 0x3608, 0x81ff, 0x00c0, 0x2bd7, 0x1078, 0x35d2, -+ 0x0040, 0x2bdb, 0x1078, 0x47bd, 0x0078, 0x2bad, 0x81ff, 0x00c0, -+ 0x2bd7, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb, 0x1078, 0x35e4, -+ 0x0040, 0x2bdb, 0x1078, 0x482f, 0x0040, 0x2bd7, 0x2019, 0x0004, -+ 0x1078, 0x47d3, 0x7924, 0x810f, 0x7a28, 0x1078, 0x3259, 0x0078, -+ 0x2bad, 0xa186, 0x00ff, 0x0040, 0x3261, 0x1078, 0x3271, 0x0078, -+ 0x3270, 0x2029, 0x007e, 0x2061, 0xa600, 0x6450, 0x2400, 0xa506, -+ 0x0040, 0x326d, 0x2508, 0x1078, 0x3271, 0x8529, 0x00c8, 0x3266, -+ 0x007c, 0x1078, 0x45c4, 0x00c0, 0x327c, 0x2200, 0x8003, 0x800b, -+ 0x810b, 0xa108, 0x1078, 0x5a52, 0x007c, 0x81ff, 0x00c0, 0x2bd7, -+ 0x1078, 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7, -+ 0x1078, 0x47c8, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, 0x1078, -+ 0x35d2, 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7, 0x1078, -+ 0x47b2, 0x0078, 0x2bad, 0x6100, 0x0078, 0x2bad, 0x1078, 0x35e4, -+ 0x0040, 0x2bdb, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, -+ 0x2bd7, 0x0d7e, 0xace8, 0x000a, 0x7924, 0xd184, 0x0040, 0x32b2, -+ 0xace8, 0x0006, 0x680c, 0x8007, 0x783e, 0x6808, 0x8007, 0x783a, -+ 0x6b04, 0x831f, 0x6a00, 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200, -+ 0x0078, 0x2bad, 0xa006, 0x1078, 0x256a, 0x7824, 0xa084, 0x00ff, -+ 0xa086, 0x00ff, 0x0040, 0x32cf, 0x81ff, 0x00c0, 0x2bd7, 0x1078, -+ 0x42dd, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2bdb, 0x7924, 0xa18c, -+ 0xff00, 0x810f, 0xa186, 0x00ff, 0x0040, 0x32e5, 0xa182, 0x007f, -+ 0x00c8, 0x2bdb, 0x2100, 0x1078, 0x2564, 0x027e, 0x0c7e, 0x127e, -+ 0x2091, 0x8000, 0x2061, 0xa8c4, 0x601b, 0x0000, 0x601f, 0x0000, -+ 0x2011, 0x0003, 0x1078, 0x70e0, 0x2011, 0x0002, 0x1078, 0x70ea, -+ 0x1078, 0x6fc4, 0x037e, 0x2019, 0x0000, 0x1078, 0x7058, 0x037f, -+ 0x2061, 0x0100, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a, -+ 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, 0x4259, -+ 0x1078, 0x5add, 0x7924, 0xa18c, 0xff00, 0x810f, 0x7a28, 0x1078, -+ 0x3259, 0x127f, 0x0c7f, 0x027f, 0x0078, 0x2bad, 0x7924, 0xa18c, -+ 0xff00, 0x810f, 0x0c7e, 0x1078, 0x455c, 0x2c08, 0x0c7f, 0x00c0, -+ 0x2bdb, 0x0078, 0x2bad, 0x81ff, 0x0040, 0x3332, 0x2009, 0x0001, -+ 0x0078, 0x2bd7, 0x60cc, 0xd09c, 0x00c0, 0x333a, 0x2009, 0x0005, -+ 0x0078, 0x2bd7, 0x1078, 0x35ba, 0x00c0, 0x3342, 0x2009, 0x0002, -+ 0x0078, 0x2bd7, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, -+ 0x3604, 0x701b, 0x334c, 0x007c, 0x2009, 0x0080, 0x1078, 0x45c4, -+ 0x00c0, 0x3359, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x0040, -+ 0x335d, 0x2021, 0x400a, 0x0078, 0x2baf, 0x0d7e, 0xade8, 0x000d, -+ 0x6900, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, -+ 0x0100, 0x0040, 0x33d0, 0xa0be, 0x0112, 0x0040, 0x33d0, 0xa0be, -+ 0x0113, 0x0040, 0x33d0, 0xa0be, 0x0114, 0x0040, 0x33d0, 0xa0be, -+ 0x0117, 0x0040, 0x33d0, 0xa0be, 0x011a, 0x0040, 0x33d0, 0xa0be, -+ 0x0121, 0x0040, 0x33c6, 0xa0be, 0x0131, 0x0040, 0x33c6, 0xa0be, -+ 0x0171, 0x0040, 0x33d0, 0xa0be, 0x0173, 0x0040, 0x33d0, 0xa0be, -+ 0x01a1, 0x00c0, 0x3398, 0x6830, 0x8007, 0x6832, 0x0078, 0x33d6, -+ 0xa0be, 0x0212, 0x0040, 0x33cc, 0xa0be, 0x0213, 0x0040, 0x33cc, -+ 0xa0be, 0x0214, 0x0040, 0x33be, 0xa0be, 0x0217, 0x0040, 0x33b8, -+ 0xa0be, 0x021a, 0x00c0, 0x33b1, 0x6838, 0x8007, 0x683a, 0x0078, -+ 0x33d0, 0xa0be, 0x0300, 0x0040, 0x33d0, 0x0d7f, 0x0078, 0x2bdb, -+ 0xad80, 0x0010, 0x20a9, 0x0007, 0x1078, 0x3418, 0xad80, 0x000e, -+ 0x20a9, 0x0001, 0x1078, 0x3418, 0x0078, 0x33d0, 0xad80, 0x000c, -+ 0x1078, 0x3426, 0x0078, 0x33d6, 0xad80, 0x000e, 0x1078, 0x3426, -+ 0xad80, 0x000c, 0x20a9, 0x0001, 0x1078, 0x3418, 0x0c7e, 0x1078, -+ 0x35ba, 0x0040, 0x3409, 0x6838, 0xc0fd, 0x683a, 0x6837, 0x0119, -+ 0x6853, 0x0000, 0x684f, 0x0020, 0x685b, 0x0001, 0x810b, 0x697e, -+ 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92, 0x6996, 0x689b, -+ 0x0000, 0x0c7f, 0x0d7f, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, -+ 0x6823, 0x0000, 0x6804, 0x2068, 0x1078, 0x8e66, 0x00c0, 0x3404, -+ 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x340f, -+ 0x007c, 0x0c7f, 0x0d7f, 0x2009, 0x0002, 0x0078, 0x2bd7, 0x6820, -+ 0xa086, 0x8001, 0x00c0, 0x2bad, 0x2009, 0x0004, 0x0078, 0x2bd7, -+ 0x017e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, 0x8108, -+ 0x280a, 0x8108, 0x00f0, 0x341a, 0x017f, 0x007c, 0x017e, 0x0a7e, -+ 0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, 0x8000, -+ 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, 0x280a, -+ 0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x81ff, 0x0040, 0x3443, 0x2009, -+ 0x0001, 0x0078, 0x2bd7, 0x60cc, 0xd09c, 0x00c0, 0x344b, 0x2009, -+ 0x0005, 0x0078, 0x2bd7, 0x7924, 0x2140, 0xa18c, 0xff00, 0x810f, -+ 0xa182, 0x0080, 0x0048, 0x2bdb, 0xa182, 0x00ff, 0x00c8, 0x2bdb, -+ 0x7a2c, 0x7b28, 0x606c, 0xa306, 0x00c0, 0x3466, 0x6070, 0xa24e, -+ 0x0040, 0x2bdb, 0xa9cc, 0xff00, 0x0040, 0x2bdb, 0x0c7e, 0x1078, -+ 0x350f, 0x2c68, 0x0c7f, 0x0040, 0x349e, 0xa0c6, 0x4000, 0x00c0, -+ 0x3484, 0x0c7e, 0x007e, 0x2d60, 0x2009, 0x0000, 0x1078, 0x489b, -+ 0x00c0, 0x347b, 0xc185, 0x6000, 0xd0bc, 0x0040, 0x3480, 0xc18d, -+ 0x007f, 0x0c7f, 0x0078, 0x349b, 0xa0c6, 0x4007, 0x00c0, 0x348b, -+ 0x2408, 0x0078, 0x349b, 0xa0c6, 0x4008, 0x00c0, 0x3493, 0x2708, -+ 0x2610, 0x0078, 0x349b, 0xa0c6, 0x4009, 0x00c0, 0x3499, 0x0078, -+ 0x349b, 0x2001, 0x4006, 0x2020, 0x0078, 0x2baf, 0x2d00, 0x7022, -+ 0x017e, 0x0b7e, 0x0c7e, 0x0e7e, 0x2c70, 0x1078, 0x76c7, 0x0040, -+ 0x34e4, 0x2d00, 0x601a, 0x2001, 0xa657, 0x2004, 0xa084, 0x00ff, -+ 0x6842, 0x2e58, 0x0e7f, 0x0e7e, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, -+ 0x2b70, 0x00c0, 0x34c5, 0x1078, 0x772d, 0x0e7f, 0x0c7f, 0x0b7f, -+ 0x017f, 0x2009, 0x0002, 0x0078, 0x2bd7, 0x6837, 0x0000, 0x2d00, -+ 0x6012, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x2880, 0x127f, 0x601f, 0x0001, 0x2001, 0x0000, -+ 0x1078, 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x2009, 0x0002, -+ 0x1078, 0x775c, 0xa085, 0x0001, 0x0e7f, 0x0c7f, 0x0b7f, 0x017f, -+ 0x00c0, 0x34ee, 0x2009, 0x0003, 0x0078, 0x2bd7, 0x7007, 0x0003, -+ 0x701b, 0x34f3, 0x007c, 0x6830, 0xa086, 0x0100, 0x7020, 0x2060, -+ 0x00c0, 0x3501, 0x2009, 0x0004, 0x6204, 0xa294, 0x00ff, 0x0078, -+ 0x2bd7, 0x2009, 0x0000, 0x1078, 0x489b, 0x00c0, 0x3508, 0xc185, -+ 0x6000, 0xd0bc, 0x0040, 0x350d, 0xc18d, 0x0078, 0x2bad, 0x0e7e, -+ 0x0d7e, 0x2029, 0x0000, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071, -+ 0xa7b5, 0x2e04, 0xa005, 0x00c0, 0x3524, 0x2100, 0xa406, 0x00c0, -+ 0x3555, 0x2428, 0x0078, 0x3555, 0x2068, 0x6f10, 0x2700, 0xa306, -+ 0x00c0, 0x3546, 0x6e14, 0x2600, 0xa206, 0x00c0, 0x3546, 0x2400, -+ 0xa106, 0x00c0, 0x3542, 0x2d60, 0xd884, 0x0040, 0x356a, 0x6004, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x356a, 0x2001, 0x4000, -+ 0x0078, 0x356b, 0x2001, 0x4007, 0x0078, 0x356b, 0x2400, 0xa106, -+ 0x00c0, 0x3555, 0x6e14, 0x87ff, 0x00c0, 0x3551, 0x86ff, 0x0040, -+ 0x3521, 0x2001, 0x4008, 0x0078, 0x356b, 0x8420, 0x8e70, 0x00f0, -+ 0x3519, 0x85ff, 0x00c0, 0x3564, 0x2001, 0x4009, 0x0078, 0x356b, -+ 0x2001, 0x0001, 0x0078, 0x356b, 0x1078, 0x455c, 0x00c0, 0x3560, -+ 0x6312, 0x6216, 0xa006, 0xa005, 0x0d7f, 0x0e7f, 0x007c, 0x81ff, -+ 0x00c0, 0x2bd7, 0x1078, 0x35ba, 0x0040, 0x2bd7, 0x6837, 0x0000, -+ 0x6838, 0xc0fd, 0x683a, 0x7824, 0xa005, 0x0040, 0x2bdb, 0xa096, -+ 0x00ff, 0x0040, 0x3587, 0xa092, 0x0004, 0x00c8, 0x2bdb, 0x2010, -+ 0x2d18, 0x1078, 0x282f, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, -+ 0x3592, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7, 0x0078, -+ 0x2bad, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0080, 0x0048, -+ 0x2bdb, 0xa182, 0x00ff, 0x00c8, 0x2bdb, 0x127e, 0x2091, 0x8000, -+ 0x1078, 0x8d4b, 0x00c0, 0x35b7, 0xa190, 0xa735, 0x2204, 0xa065, -+ 0x0040, 0x35b7, 0x1078, 0x42f8, 0x127f, 0x0078, 0x2bad, 0x127f, -+ 0x0078, 0x2bd7, 0x1078, 0x138b, 0x0040, 0x35d1, 0xa006, 0x6802, -+ 0x7010, 0xa005, 0x00c0, 0x35c9, 0x2d00, 0x7012, 0x7016, 0x0078, -+ 0x35cf, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, -+ 0x000d, 0x007c, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x45c4, -+ 0x00c0, 0x35e1, 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048, -+ 0x35e2, 0xa066, 0x8cff, 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff, -+ 0x1078, 0x45c4, 0x00c0, 0x35f2, 0xa6b4, 0x00ff, 0xa682, 0x4000, -+ 0x0048, 0x35f3, 0xa066, 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff, -+ 0x0040, 0x3600, 0x2168, 0x6904, 0x1078, 0x13a4, 0x0078, 0x35f7, -+ 0x7112, 0x7116, 0x017f, 0x007c, 0x2031, 0x0001, 0x0078, 0x360a, -+ 0x2031, 0x0000, 0x2061, 0xa6d2, 0x6606, 0x6112, 0x600e, 0x6226, -+ 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002, -+ 0x701b, 0x2bad, 0x007c, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079, -+ 0x0000, 0x2001, 0xa690, 0x2004, 0xa005, 0x00c0, 0x3636, 0x0068, -+ 0x3636, 0x7818, 0xd084, 0x00c0, 0x3636, 0x7a22, 0x7b26, 0x7c2a, -+ 0x781b, 0x0001, 0x2091, 0x4080, 0x0078, 0x365b, 0x017e, 0x0c7e, -+ 0x0e7e, 0x2071, 0xa682, 0x7138, 0xa182, 0x0008, 0x0048, 0x3644, -+ 0x7030, 0x2060, 0x0078, 0x3655, 0x7030, 0xa0e0, 0x0008, 0xac82, -+ 0xa6d2, 0x0048, 0x364d, 0x2061, 0xa692, 0x2c00, 0x7032, 0x81ff, -+ 0x00c0, 0x3653, 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x640a, -+ 0x0e7f, 0x0c7f, 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071, -+ 0xa682, 0x7038, 0xa005, 0x0040, 0x3697, 0x127e, 0x2091, 0x8000, -+ 0x0068, 0x3696, 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, -+ 0x3695, 0x0c7e, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826, -+ 0x6008, 0x782a, 0x781b, 0x0001, 0x2091, 0x4080, 0x7038, 0x8001, -+ 0x703a, 0xa005, 0x00c0, 0x368b, 0x7033, 0xa692, 0x7037, 0xa692, -+ 0x0c7f, 0x0078, 0x3695, 0xac80, 0x0008, 0xa0fa, 0xa6d2, 0x0048, -+ 0x3693, 0x2001, 0xa692, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f, -+ 0x007c, 0x027e, 0x2001, 0xa653, 0x2004, 0xd0c4, 0x0040, 0x36a4, -+ 0x2011, 0x8014, 0x1078, 0x361b, 0x027f, 0x007c, 0x81ff, 0x00c0, -+ 0x2bd7, 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0xc085, 0xc0ac, -+ 0x6032, 0x1078, 0x4224, 0x127f, 0x0078, 0x2bad, 0x81ff, 0x00c0, -+ 0x2bd7, 0x6000, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x2001, 0xa653, -+ 0x2004, 0xd0ac, 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb, -+ 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x36d3, 0x7828, -+ 0xa005, 0x0040, 0x2bad, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, 0x0040, -+ 0x2bd7, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, -+ 0x1078, 0x8f12, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x36e9, -+ 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2bd7, 0x0078, 0x2bad, -+ 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2bd7, 0x7f24, -+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x35ba, 0x0040, 0x2bd7, -+ 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000, -+ 0xad80, 0x0005, 0x7026, 0x20a0, 0x1078, 0x45c4, 0x00c0, 0x376d, -+ 0x6004, 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0040, 0x371d, 0xa0c4, -+ 0xff00, 0xa8c6, 0x0600, 0x00c0, 0x376d, 0x2001, 0xa653, 0x2004, -+ 0xd0ac, 0x00c0, 0x372a, 0x1078, 0x489b, 0x00c0, 0x372a, 0xd79c, -+ 0x0040, 0x376d, 0xd794, 0x00c0, 0x3730, 0xd784, 0x0040, 0x373c, -+ 0xac80, 0x0006, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078, -+ 0x3426, 0xd794, 0x0040, 0x3745, 0xac80, 0x000a, 0x2098, 0x3400, -+ 0x20a9, 0x0004, 0x53a3, 0x1078, 0x3426, 0x21a2, 0xd794, 0x0040, -+ 0x3765, 0xac80, 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3, -+ 0xac80, 0x0003, 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400, -+ 0x20a9, 0x0002, 0x53a3, 0x1078, 0x3418, 0xac80, 0x0026, 0x2098, -+ 0x20a9, 0x0002, 0x53a3, 0x0078, 0x3766, 0x94a0, 0xd794, 0x0040, -+ 0x376b, 0xa6b0, 0x000b, 0xa6b0, 0x0005, 0x8108, 0xd78c, 0x0040, -+ 0x3777, 0xa186, 0x0100, 0x0040, 0x3788, 0x0078, 0x377b, 0xa186, -+ 0x007e, 0x0040, 0x3788, 0xd794, 0x0040, 0x3782, 0xa686, 0x0020, -+ 0x0078, 0x3784, 0xa686, 0x0028, 0x0040, 0x3791, 0x0078, 0x370c, -+ 0x86ff, 0x00c0, 0x378f, 0x7120, 0x810b, 0x0078, 0x2bad, 0x702f, -+ 0x0001, 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, 0x2061, 0xa6d2, -+ 0x6007, 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, 0x632a, 0x642e, -+ 0x6532, 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002, 0x701b, 0x37a9, -+ 0x007c, 0x702c, 0xa005, 0x00c0, 0x37bb, 0x711c, 0x7024, 0x20a0, -+ 0x7728, 0x2031, 0x0000, 0x2061, 0xa6d2, 0x6224, 0x6328, 0x642c, -+ 0x6530, 0x0078, 0x370c, 0x7120, 0x810b, 0x0078, 0x2bad, 0x2029, -+ 0x007e, 0x7924, 0x7a28, 0x7b2c, 0x7c38, 0xa184, 0xff00, 0x8007, -+ 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa184, -+ 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, -+ 0xa284, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, -+ 0x0048, 0x2bdb, 0xa284, 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb, -+ 0xa502, 0x0048, 0x2bdb, 0xa384, 0xff00, 0x8007, 0xa0e2, 0x0020, -+ 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa384, 0x00ff, 0xa0e2, -+ 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, 0xa484, 0xff00, -+ 0x8007, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, 0x2bdb, -+ 0xa484, 0x00ff, 0xa0e2, 0x0020, 0x0048, 0x2bdb, 0xa502, 0x0048, -+ 0x2bdb, 0x2061, 0xa8a5, 0x6102, 0x6206, 0x630a, 0x640e, 0x0078, -+ 0x2bad, 0x007e, 0x2001, 0xa653, 0x2004, 0xd0cc, 0x007f, 0x007c, -+ 0x007e, 0x2001, 0xa672, 0x2004, 0xd0bc, 0x007f, 0x007c, 0x6164, -+ 0x7a24, 0x6300, 0x82ff, 0x00c0, 0x3830, 0x7926, 0x0078, 0x2bad, -+ 0x83ff, 0x00c0, 0x2bdb, 0x2001, 0xfff0, 0xa200, 0x00c8, 0x2bdb, -+ 0x2019, 0xffff, 0x6068, 0xa302, 0xa200, 0x0048, 0x2bdb, 0x7926, -+ 0x6266, 0x0078, 0x2bad, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, -+ 0x00c0, 0x2bd7, 0x7c28, 0x7d24, 0x7e38, 0x7f2c, 0x1078, 0x35ba, -+ 0x0040, 0x2bd7, 0x2009, 0x0000, 0x2019, 0x0000, 0x7023, 0x0000, -+ 0x702f, 0x0000, 0xad80, 0x0003, 0x7026, 0x20a0, 0xa1e0, 0xa735, -+ 0x2c64, 0x8cff, 0x0040, 0x387d, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x0040, 0x3872, 0x6004, 0xa084, 0xff00, 0xa086, 0x0600, -+ 0x00c0, 0x387d, 0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105, -+ 0x8007, 0x20a2, 0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff, -+ 0x0040, 0x3888, 0xa386, 0x002a, 0x0040, 0x3891, 0x0078, 0x385e, -+ 0x83ff, 0x00c0, 0x388f, 0x7120, 0x810c, 0x0078, 0x2bad, 0x702f, -+ 0x0001, 0x711e, 0x7020, 0xa300, 0x7022, 0x2061, 0xa6d2, 0x6007, -+ 0x0000, 0x6312, 0x7024, 0x600e, 0x6426, 0x652a, 0x662e, 0x6732, -+ 0x2c10, 0x1078, 0x13db, 0x7007, 0x0002, 0x701b, 0x38a8, 0x007c, -+ 0x702c, 0xa005, 0x00c0, 0x38b9, 0x711c, 0x7024, 0x20a0, 0x2019, -+ 0x0000, 0x2061, 0xa6d2, 0x6424, 0x6528, 0x662c, 0x6730, 0x0078, -+ 0x385e, 0x7120, 0x810c, 0x0078, 0x2bad, 0x81ff, 0x00c0, 0x2bd7, -+ 0x60cc, 0xd09c, 0x0040, 0x2bd7, 0x1078, 0x35ba, 0x0040, 0x2bd7, -+ 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604, 0x701b, -+ 0x38d2, 0x007c, 0x0d7e, 0xade8, 0x000d, 0x6828, 0xa0be, 0x7000, -+ 0x0040, 0x38e5, 0xa0be, 0x7100, 0x0040, 0x38e5, 0xa0be, 0x7200, -+ 0x0040, 0x38e5, 0x0d7f, 0x0078, 0x2bdb, 0x6820, 0x6924, 0x1078, -+ 0x254d, 0x00c0, 0x3910, 0x1078, 0x455c, 0x00c0, 0x3910, 0x7122, -+ 0x6612, 0x6516, 0x6e18, 0x0c7e, 0x1078, 0x35ba, 0x0040, 0x3910, -+ 0x1078, 0x35ba, 0x0040, 0x3910, 0x0c7f, 0x0d7f, 0x6837, 0x0000, -+ 0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x1078, -+ 0x8e82, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x3913, 0x007c, -+ 0x0d7f, 0x0078, 0x2bd7, 0x7120, 0x1078, 0x298e, 0x6820, 0xa086, -+ 0x8001, 0x0040, 0x2bd7, 0x2d00, 0x701e, 0x6804, 0xa080, 0x0002, -+ 0x007e, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x1078, 0x4281, 0x007f, -+ 0xade8, 0x000d, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x2061, 0xa6d2, -+ 0x6007, 0x0000, 0x6e00, 0x6f28, 0xa7c6, 0x7000, 0x00c0, 0x393a, -+ 0x0078, 0x393e, 0xa7c6, 0x7100, 0x00c0, 0x3946, 0xa6c2, 0x0004, -+ 0x0048, 0x2bdb, 0x2009, 0x0004, 0x0078, 0x3608, 0xa7c6, 0x7200, -+ 0x00c0, 0x2bdb, 0xa6c2, 0x0054, 0x0048, 0x2bdb, 0x600e, 0x6013, -+ 0x002a, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x13db, -+ 0x7007, 0x0002, 0x701b, 0x395d, 0x007c, 0x701c, 0x2068, 0x6804, -+ 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x007e, 0x20a9, 0x002a, -+ 0x2098, 0x20a0, 0x1078, 0x4281, 0x007f, 0x2009, 0x002a, 0x2061, -+ 0xa6d2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0078, 0x3608, 0x81ff, -+ 0x00c0, 0x2bd7, 0x792c, 0x2001, 0xa89d, 0x2102, 0x1078, 0x35d2, -+ 0x0040, 0x2bdb, 0x1078, 0x4673, 0x0040, 0x2bd7, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x47de, 0x127f, 0x0078, 0x2bad, 0x7824, 0xd08c, -+ 0x00c0, 0x3995, 0xd084, 0x0040, 0x31da, 0x1078, 0x35e4, 0x0040, -+ 0x2bdb, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, 0x00c0, 0x39a3, 0x2009, -+ 0x0002, 0x0078, 0x2bd7, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, -+ 0x0040, 0x39b0, 0xa08e, 0x0004, 0x0040, 0x39b0, 0xa08e, 0x0005, -+ 0x00c0, 0x39dd, 0x7824, 0xd08c, 0x0040, 0x39bb, 0x6000, 0xc08c, -+ 0x6002, 0x0078, 0x39c5, 0x2001, 0xa653, 0x2004, 0xd0b4, 0x0040, -+ 0x320f, 0x6000, 0xd08c, 0x00c0, 0x320f, 0x6837, 0x0000, 0x6838, -+ 0xc0fd, 0x683a, 0x1078, 0x8e9e, 0x00c0, 0x39d2, 0x2009, 0x0003, -+ 0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x39d7, 0x007c, 0x1078, -+ 0x35e4, 0x0040, 0x2bdb, 0x0078, 0x320f, 0x2009, 0xa62f, 0x210c, -+ 0x81ff, 0x0040, 0x39e7, 0x2009, 0x0001, 0x0078, 0x2bd7, 0x2001, -+ 0xa600, 0x2004, 0xa086, 0x0003, 0x0040, 0x39f2, 0x2009, 0x0007, -+ 0x0078, 0x2bd7, 0x2001, 0xa653, 0x2004, 0xd0ac, 0x0040, 0x39fc, -+ 0x2009, 0x0008, 0x0078, 0x2bd7, 0x609c, 0xd0a4, 0x00c0, 0x3a03, -+ 0xd0ac, 0x00c0, 0x320f, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, -+ 0xc0fd, 0x683a, 0x1078, 0x8f12, 0x00c0, 0x3a12, 0x2009, 0x0003, -+ 0x0078, 0x2bd7, 0x7007, 0x0003, 0x701b, 0x3a17, 0x007c, 0x6830, -+ 0xa086, 0x0100, 0x00c0, 0x3a20, 0x2009, 0x0004, 0x0078, 0x2bd7, -+ 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x0078, 0x39b2, 0x81ff, 0x2009, -+ 0x0001, 0x00c0, 0x2bd7, 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, -+ 0x00c0, 0x2bd7, 0x2001, 0xa653, 0x2004, 0xd0ac, 0x2009, 0x0008, -+ 0x00c0, 0x2bd7, 0x1078, 0x35e4, 0x0040, 0x2bdb, 0x6004, 0xa084, -+ 0x00ff, 0xa086, 0x0006, 0x2009, 0x0009, 0x00c0, 0x2bd7, 0x0c7e, -+ 0x1078, 0x35ba, 0x0c7f, 0x2009, 0x0002, 0x0040, 0x2bd7, 0x6837, -+ 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x7928, 0xa194, -+ 0xff00, 0xa18c, 0x00ff, 0xa006, 0x82ff, 0x00c0, 0x3a65, 0xc0ed, -+ 0x6952, 0x792c, 0x6956, 0x0078, 0x3a6e, 0xa28e, 0x0100, 0x00c0, -+ 0x2bdb, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, 0x683e, 0x1078, -+ 0x90bd, 0x2009, 0x0003, 0x0040, 0x2bd7, 0x7007, 0x0003, 0x701b, -+ 0x3a7a, 0x007c, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0040, -+ 0x2bd7, 0x0078, 0x2bad, 0x81ff, 0x2009, 0x0001, 0x00c0, 0x2bd7, -+ 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x00c0, 0x2bd7, 0x1078, -+ 0x35e4, 0x0040, 0x2bdb, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, -+ 0x2009, 0x0009, 0x00c0, 0x2bd7, 0x0c7e, 0x1078, 0x35ba, 0x0c7f, -+ 0x2009, 0x0002, 0x0040, 0x2bd7, 0xad80, 0x000f, 0x2009, 0x0008, -+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x3604, 0x701b, 0x3ab1, -+ 0x007c, 0x0d7e, 0xade8, 0x000f, 0x6800, 0xa086, 0x0500, 0x00c0, -+ 0x3ac4, 0x6804, 0xa005, 0x00c0, 0x3ac4, 0x6808, 0xa084, 0xff00, -+ 0x00c0, 0x3ac4, 0x0078, 0x3ac7, 0x0d7f, 0x00c0, 0x2bdb, 0x0d7f, -+ 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x0c7e, -+ 0x1078, 0x35e4, 0x00c0, 0x3ad7, 0x0c7f, 0x0078, 0x2bdb, 0x1078, -+ 0x9119, 0x2009, 0x0003, 0x0c7f, 0x0040, 0x2bd7, 0x7007, 0x0003, -+ 0x701b, 0x3ae3, 0x007c, 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, -+ 0x0040, 0x2bd7, 0x0078, 0x2bad, 0x127e, 0x0c7e, 0x0e7e, 0x2061, -+ 0x0100, 0x2071, 0xa600, 0x6044, 0xd0a4, 0x00c0, 0x3b15, 0xd084, -+ 0x0040, 0x3afe, 0x1078, 0x3c75, 0x0078, 0x3b11, 0xd08c, 0x0040, -+ 0x3b05, 0x1078, 0x3b8c, 0x0078, 0x3b11, 0xd094, 0x0040, 0x3b0c, -+ 0x1078, 0x3b60, 0x0078, 0x3b11, 0xd09c, 0x0040, 0x3b11, 0x1078, -+ 0x3b1f, 0x0e7f, 0x0c7f, 0x127f, 0x007c, 0x017e, 0x6128, 0xd19c, -+ 0x00c0, 0x3b1c, 0xc19d, 0x612a, 0x017f, 0x0078, 0x3b11, 0x624c, -+ 0xa286, 0xf0f0, 0x00c0, 0x3b30, 0x6048, 0xa086, 0xf0f0, 0x0040, -+ 0x3b30, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0078, 0x3b5f, -+ 0xa294, 0xff00, 0xa296, 0xf700, 0x0040, 0x3b45, 0x7134, 0xd1a4, -+ 0x00c0, 0x3b45, 0x6240, 0xa294, 0x0010, 0x0040, 0x3b45, 0x2009, -+ 0x00f7, 0x1078, 0x42a1, 0x0078, 0x3b5f, 0x6043, 0x0040, 0x6043, -+ 0x0000, 0x7077, 0x0000, 0x708f, 0x0001, 0x70b3, 0x0000, 0x70cf, -+ 0x0000, 0x2009, 0xacc0, 0x200b, 0x0000, 0x7087, 0x0000, 0x707b, -+ 0x000f, 0x2009, 0x000f, 0x2011, 0x41d5, 0x1078, 0x5add, 0x007c, -+ 0x157e, 0x7078, 0xa005, 0x00c0, 0x3b8a, 0x2011, 0x41d5, 0x1078, -+ 0x5a45, 0x6040, 0xa094, 0x0010, 0xa285, 0x0020, 0x6042, 0x20a9, -+ 0x00c8, 0x6044, 0xd08c, 0x00c0, 0x3b83, 0x00f0, 0x3b71, 0x6242, -+ 0x708b, 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, 0x0080, 0x6042, -+ 0x6242, 0x0078, 0x3b8a, 0x6242, 0x708b, 0x0000, 0x707f, 0x0000, -+ 0x0078, 0x3b8a, 0x157f, 0x007c, 0x707c, 0xa08a, 0x0003, 0x00c8, -+ 0x3b95, 0x1079, 0x3b98, 0x0078, 0x3b97, 0x1078, 0x1332, 0x007c, -+ 0x3b9b, 0x3bea, 0x3c74, 0x0f7e, 0x707f, 0x0001, 0x20e1, 0xa000, -+ 0x20e1, 0x8700, 0x1078, 0x21f7, 0x20e1, 0x9080, 0x20e1, 0x4000, -+ 0x2079, 0xab00, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, -+ 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, -+ 0x781f, 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, -+ 0x782f, 0x0000, 0x2079, 0xab0c, 0x207b, 0x1101, 0x7807, 0x0000, -+ 0x2099, 0xa605, 0x20a1, 0xab0e, 0x20a9, 0x0004, 0x53a3, 0x2079, -+ 0xab12, 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0xab00, 0x20a1, -+ 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, -+ 0x1078, 0x420b, 0x0f7f, 0x7083, 0x0000, 0x6043, 0x0008, 0x6043, -+ 0x0000, 0x007c, 0x0d7e, 0x7080, 0x7083, 0x0000, 0xa025, 0x0040, -+ 0x3c5e, 0x6020, 0xd0b4, 0x00c0, 0x3c5c, 0x718c, 0x81ff, 0x0040, -+ 0x3c4b, 0xa486, 0x000c, 0x00c0, 0x3c56, 0xa480, 0x0018, 0x8004, -+ 0x20a8, 0x2011, 0xab80, 0x2019, 0xab00, 0x220c, 0x2304, 0xa106, -+ 0x00c0, 0x3c22, 0x8210, 0x8318, 0x00f0, 0x3c05, 0x6043, 0x0004, -+ 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x707f, 0x0002, -+ 0x708b, 0x0002, 0x2009, 0x07d0, 0x2011, 0x41dc, 0x1078, 0x5add, -+ 0x0078, 0x3c5c, 0x2069, 0xab80, 0x6930, 0xa18e, 0x1101, 0x00c0, -+ 0x3c56, 0x6834, 0xa005, 0x00c0, 0x3c56, 0x6900, 0xa18c, 0x00ff, -+ 0x00c0, 0x3c36, 0x6804, 0xa005, 0x0040, 0x3c4b, 0x2011, 0xab8e, -+ 0x2019, 0xa605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0048, -+ 0x3c49, 0x00c0, 0x3c56, 0x8210, 0x8318, 0x00f0, 0x3c3c, 0x0078, -+ 0x3c56, 0x708f, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, -+ 0xab80, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008, -+ 0x6043, 0x0000, 0x0078, 0x3c5e, 0x0d7f, 0x007c, 0x6020, 0xd0b4, -+ 0x00c0, 0x3c5c, 0x60c3, 0x000c, 0x2011, 0xa8bb, 0x2013, 0x0000, -+ 0x7083, 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, -+ 0x1078, 0x6e06, 0x0078, 0x3c5c, 0x007c, 0x7088, 0xa08a, 0x001d, -+ 0x00c8, 0x3c7e, 0x1079, 0x3c81, 0x0078, 0x3c80, 0x1078, 0x1332, -+ 0x007c, 0x3cab, 0x3cba, 0x3ce9, 0x3d02, 0x3d2e, 0x3d5a, 0x3d86, -+ 0x3dbc, 0x3de8, 0x3e10, 0x3e53, 0x3e7d, 0x3e9f, 0x3eb5, 0x3edb, -+ 0x3eee, 0x3ef7, 0x3f2b, 0x3f57, 0x3f83, 0x3faf, 0x3fe5, 0x4030, -+ 0x405f, 0x4081, 0x40c3, 0x40e9, 0x4102, 0x4103, 0x0c7e, 0x2061, -+ 0xa600, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0xa084, 0xfff9, -+ 0x6006, 0x0c7f, 0x007c, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, -+ 0x0002, 0x708b, 0x0001, 0x2009, 0x07d0, 0x2011, 0x41dc, 0x1078, -+ 0x5add, 0x007c, 0x0f7e, 0x7080, 0xa086, 0x0014, 0x00c0, 0x3ce7, -+ 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x3ce7, 0x2079, 0xab80, -+ 0x7a30, 0xa296, 0x1102, 0x00c0, 0x3ce5, 0x7834, 0xa005, 0x00c0, -+ 0x3ce5, 0x7a38, 0xd2fc, 0x0040, 0x3cdb, 0x70b0, 0xa005, 0x00c0, -+ 0x3cdb, 0x70b3, 0x0001, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x708b, -+ 0x0010, 0x1078, 0x3ef7, 0x0078, 0x3ce7, 0x1078, 0x4224, 0x0f7f, -+ 0x007c, 0x708b, 0x0003, 0x6043, 0x0004, 0x2011, 0x41dc, 0x1078, -+ 0x5a45, 0x1078, 0x4289, 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9, -+ 0x000a, 0x20a3, 0x0000, 0x00f0, 0x3cf9, 0x60c3, 0x0014, 0x1078, -+ 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3d2c, 0x2011, -+ 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3d2a, 0x2079, -+ 0xab80, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x3d2a, 0x7834, 0xa005, -+ 0x00c0, 0x3d2a, 0x7a38, 0xd2fc, 0x0040, 0x3d24, 0x70b0, 0xa005, -+ 0x00c0, 0x3d24, 0x70b3, 0x0001, 0x708b, 0x0004, 0x1078, 0x3d2e, -+ 0x0078, 0x3d2c, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, 0x0005, -+ 0x1078, 0x4289, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, -+ 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3d4c, 0x7074, 0xa005, 0x00c0, -+ 0x3d4c, 0x7150, 0xa186, 0xffff, 0x0040, 0x3d4c, 0x1078, 0x419d, -+ 0x0040, 0x3d4c, 0x1078, 0x42b8, 0x20a9, 0x0008, 0x2298, 0x26a0, -+ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, -+ 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3d84, 0x2011, -+ 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3d82, 0x2079, -+ 0xab80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x3d82, 0x7834, 0xa005, -+ 0x00c0, 0x3d82, 0x7a38, 0xd2fc, 0x0040, 0x3d7c, 0x70b0, 0xa005, -+ 0x00c0, 0x3d7c, 0x70b3, 0x0001, 0x708b, 0x0006, 0x1078, 0x3d86, -+ 0x0078, 0x3d84, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, 0x0007, -+ 0x1078, 0x4289, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, -+ 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3dae, 0x7074, 0xa005, 0x00c0, -+ 0x3dae, 0x7154, 0xa186, 0xffff, 0x0040, 0x3dae, 0xa180, 0x29c0, -+ 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x419d, 0x0040, 0x3dae, -+ 0x1078, 0x3820, 0x0040, 0x3dae, 0x1078, 0x256a, 0x20a9, 0x0008, -+ 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, -+ 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, -+ 0x3de6, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, -+ 0x3de4, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3de4, -+ 0x7834, 0xa005, 0x00c0, 0x3de4, 0x7a38, 0xd2fc, 0x0040, 0x3dde, -+ 0x70b0, 0xa005, 0x00c0, 0x3dde, 0x70b3, 0x0001, 0x708b, 0x0008, -+ 0x1078, 0x3de8, 0x0078, 0x3de6, 0x1078, 0x4224, 0x0f7f, 0x007c, -+ 0x708b, 0x0009, 0x1078, 0x4289, 0x20a3, 0x1105, 0x20a3, 0x0100, -+ 0x3430, 0x1078, 0x42d4, 0x00c0, 0x3e01, 0x7074, 0xa005, 0x00c0, -+ 0x3e01, 0x1078, 0x4104, 0x00c0, 0x3e0b, 0xa085, 0x0001, 0x1078, -+ 0x256a, 0x20a9, 0x0008, 0x2099, 0xab8e, 0x26a0, 0x53a6, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c, -+ 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3e51, 0x2011, 0x41dc, 0x1078, -+ 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3e4f, 0x2079, 0xab80, 0x7a30, -+ 0xa296, 0x1105, 0x00c0, 0x3e4f, 0x7834, 0x2011, 0x0100, 0xa21e, -+ 0x00c0, 0x3e3a, 0x7a38, 0xd2fc, 0x0040, 0x3e34, 0x70b0, 0xa005, -+ 0x00c0, 0x3e34, 0x70b3, 0x0001, 0x708b, 0x000a, 0x1078, 0x3e53, -+ 0x0078, 0x3e51, 0xa005, 0x00c0, 0x3e4f, 0x7a38, 0xd2fc, 0x0040, -+ 0x3e47, 0x70b0, 0xa005, 0x00c0, 0x3e47, 0x70b3, 0x0001, 0x7087, -+ 0x0000, 0x708b, 0x000e, 0x1078, 0x3edb, 0x0078, 0x3e51, 0x1078, -+ 0x4224, 0x0f7f, 0x007c, 0x708b, 0x000b, 0x2011, 0xab0e, 0x22a0, -+ 0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, -+ 0x0000, 0x41a4, 0x1078, 0x4289, 0x20a3, 0x1106, 0x20a3, 0x0000, -+ 0x1078, 0x42d4, 0x0040, 0x3e70, 0x2013, 0x0000, 0x0078, 0x3e74, -+ 0x6030, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, -+ 0x60c3, 0x0084, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, -+ 0x0040, 0x3e9d, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084, -+ 0x00c0, 0x3e9b, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1106, 0x00c0, -+ 0x3e9b, 0x7834, 0xa005, 0x00c0, 0x3e9b, 0x708b, 0x000c, 0x1078, -+ 0x3e9f, 0x0078, 0x3e9d, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, -+ 0x000d, 0x1078, 0x4289, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099, -+ 0xab8e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0084, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, -+ 0x0040, 0x3ed9, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084, -+ 0x00c0, 0x3ed7, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1107, 0x00c0, -+ 0x3ed7, 0x7834, 0xa005, 0x00c0, 0x3ed7, 0x7087, 0x0001, 0x1078, -+ 0x427b, 0x708b, 0x000e, 0x1078, 0x3edb, 0x0078, 0x3ed9, 0x1078, -+ 0x4224, 0x0f7f, 0x007c, 0x708b, 0x000f, 0x7083, 0x0000, 0x608b, -+ 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, -+ 0x07d0, 0x2011, 0x41dc, 0x1078, 0x5a38, 0x007c, 0x7080, 0xa005, -+ 0x0040, 0x3ef6, 0x2011, 0x41dc, 0x1078, 0x5a45, 0x007c, 0x708b, -+ 0x0011, 0x1078, 0x42d4, 0x00c0, 0x3f14, 0x716c, 0x81ff, 0x0040, -+ 0x3f14, 0x2009, 0x0000, 0x7070, 0xa084, 0x00ff, 0x1078, 0x254d, -+ 0xa186, 0x007e, 0x0040, 0x3f14, 0xa186, 0x0080, 0x0040, 0x3f14, -+ 0x2011, 0xab8e, 0x1078, 0x419d, 0x20e1, 0x9080, 0x20e1, 0x4000, -+ 0x2099, 0xab80, 0x20a1, 0x020b, 0x7480, 0xa480, 0x0018, 0xa080, -+ 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014, -+ 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3f55, -+ 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3f53, -+ 0x2079, 0xab80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x3f53, 0x7834, -+ 0xa005, 0x00c0, 0x3f53, 0x7a38, 0xd2fc, 0x0040, 0x3f4d, 0x70b0, -+ 0xa005, 0x00c0, 0x3f4d, 0x70b3, 0x0001, 0x708b, 0x0012, 0x1078, -+ 0x3f57, 0x0078, 0x3f55, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, -+ 0x0013, 0x1078, 0x4295, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, -+ 0x2011, 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3f75, 0x7074, 0xa005, -+ 0x00c0, 0x3f75, 0x7150, 0xa186, 0xffff, 0x0040, 0x3f75, 0x1078, -+ 0x419d, 0x0040, 0x3f75, 0x1078, 0x42b8, 0x20a9, 0x0008, 0x2298, -+ 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, -+ 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x3fad, -+ 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, 0x00c0, 0x3fab, -+ 0x2079, 0xab80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3fab, 0x7834, -+ 0xa005, 0x00c0, 0x3fab, 0x7a38, 0xd2fc, 0x0040, 0x3fa5, 0x70b0, -+ 0xa005, 0x00c0, 0x3fa5, 0x70b3, 0x0001, 0x708b, 0x0014, 0x1078, -+ 0x3faf, 0x0078, 0x3fad, 0x1078, 0x4224, 0x0f7f, 0x007c, 0x708b, -+ 0x0015, 0x1078, 0x4295, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, -+ 0x2011, 0xab8e, 0x1078, 0x42d4, 0x00c0, 0x3fd7, 0x7074, 0xa005, -+ 0x00c0, 0x3fd7, 0x7154, 0xa186, 0xffff, 0x0040, 0x3fd7, 0xa180, -+ 0x29c0, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x419d, 0x0040, -+ 0x3fd7, 0x1078, 0x3820, 0x0040, 0x3fd7, 0x1078, 0x256a, 0x20a9, -+ 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, -+ 0x0040, 0x402e, 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0014, -+ 0x00c0, 0x402c, 0x2079, 0xab80, 0x7a30, 0xa296, 0x1105, 0x00c0, -+ 0x402c, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0, 0x400b, 0x7a38, -+ 0xd2fc, 0x0040, 0x4009, 0x70b0, 0xa005, 0x00c0, 0x4009, 0x70b3, -+ 0x0001, 0x0078, 0x401a, 0xa005, 0x00c0, 0x402c, 0x7a38, 0xd2fc, -+ 0x0040, 0x4018, 0x70b0, 0xa005, 0x00c0, 0x4018, 0x70b3, 0x0001, -+ 0x7087, 0x0000, 0x7a38, 0xd2f4, 0x0040, 0x4026, 0x2001, 0xa674, -+ 0x2004, 0xd0a4, 0x00c0, 0x4026, 0x70cf, 0x0008, 0x708b, 0x0016, -+ 0x1078, 0x4030, 0x0078, 0x402e, 0x1078, 0x4224, 0x0f7f, 0x007c, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xab80, 0x20a1, 0x020b, -+ 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0xab8e, 0x708b, 0x0017, -+ 0x1078, 0x42d4, 0x00c0, 0x4050, 0x7074, 0xa005, 0x00c0, 0x4050, -+ 0x1078, 0x4104, 0x00c0, 0x405a, 0xa085, 0x0001, 0x1078, 0x256a, -+ 0x20a9, 0x0008, 0x2099, 0xab8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x420b, 0x007c, 0x0f7e, -+ 0x7080, 0xa005, 0x0040, 0x407f, 0x2011, 0x41dc, 0x1078, 0x5a45, -+ 0xa086, 0x0084, 0x00c0, 0x407d, 0x2079, 0xab80, 0x7a30, 0xa296, -+ 0x1106, 0x00c0, 0x407d, 0x7834, 0xa005, 0x00c0, 0x407d, 0x708b, -+ 0x0018, 0x1078, 0x4081, 0x0078, 0x407f, 0x1078, 0x4224, 0x0f7f, -+ 0x007c, 0x708b, 0x0019, 0x1078, 0x4295, 0x20a3, 0x1106, 0x20a3, -+ 0x0000, 0x3430, 0x2099, 0xab8e, 0x2039, 0xab0e, 0x27a0, 0x20a9, -+ 0x0040, 0x53a3, 0x1078, 0x42d4, 0x00c0, 0x40b5, 0x2728, 0x2514, -+ 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, -+ 0xa205, 0x202a, 0x6030, 0x2310, 0x8214, 0xa2a0, 0xab0e, 0x2414, -+ 0xa38c, 0x0001, 0x0040, 0x40b0, 0xa294, 0xff00, 0x0078, 0x40b3, -+ 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9, -+ 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, -+ 0x1078, 0x420b, 0x007c, 0x0f7e, 0x7080, 0xa005, 0x0040, 0x40e7, -+ 0x2011, 0x41dc, 0x1078, 0x5a45, 0xa086, 0x0084, 0x00c0, 0x40e5, -+ 0x2079, 0xab80, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x40e5, 0x7834, -+ 0xa005, 0x00c0, 0x40e5, 0x7087, 0x0001, 0x1078, 0x427b, 0x708b, -+ 0x001a, 0x1078, 0x40e9, 0x0078, 0x40e7, 0x1078, 0x4224, 0x0f7f, -+ 0x007c, 0x708b, 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, -+ 0xab80, 0x20a1, 0x020b, 0x7480, 0xa480, 0x0018, 0xa080, 0x0007, -+ 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x1078, -+ 0x420b, 0x007c, 0x007c, 0x007c, 0x087e, 0x097e, 0x2029, 0xa653, -+ 0x252c, 0x20a9, 0x0008, 0x2041, 0xab0e, 0x28a0, 0x2099, 0xab8e, -+ 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x411a, -+ 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0, -+ 0x412c, 0xd5d4, 0x0040, 0x4127, 0x8210, 0x0078, 0x4128, 0x8211, -+ 0x00f0, 0x411a, 0x0078, 0x4194, 0x82ff, 0x00c0, 0x413e, 0xd5d4, -+ 0x0040, 0x4138, 0xa1a6, 0x3fff, 0x0040, 0x4124, 0x0078, 0x413c, -+ 0xa1a6, 0x3fff, 0x0040, 0x4194, 0xa18d, 0xc000, 0x20a9, 0x0010, -+ 0x2019, 0x0001, 0xd5d4, 0x0040, 0x4147, 0x2019, 0x0010, 0x2120, -+ 0xd5d4, 0x0040, 0x414e, 0x8423, 0x0078, 0x414f, 0x8424, 0x00c8, -+ 0x415c, 0xd5d4, 0x0040, 0x4157, 0x8319, 0x0078, 0x4158, 0x8318, -+ 0x00f0, 0x4148, 0x0078, 0x4194, 0x23a8, 0x2021, 0x0001, 0x8426, -+ 0x8425, 0x00f0, 0x4160, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040, -+ 0x4174, 0x007e, 0x2039, 0x0007, 0x2200, 0xa73a, 0x007f, 0x27a8, -+ 0xa5a8, 0x0010, 0x00f0, 0x4170, 0x7552, 0xa5c8, 0x29c0, 0x292c, -+ 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0000, -+ 0x7572, 0x2018, 0x2304, 0xa405, 0x201a, 0x7077, 0x0001, 0x26a0, -+ 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0xa085, 0x0001, 0x0078, 0x419a, 0xa006, 0x0078, 0x419a, 0xa006, -+ 0x1078, 0x1332, 0x097f, 0x087f, 0x007c, 0x2118, 0x2021, 0x0000, -+ 0x2001, 0x0007, 0xa39a, 0x0010, 0x0048, 0x41aa, 0x8420, 0x8001, -+ 0x0078, 0x41a2, 0x2118, 0x84ff, 0x0040, 0x41b3, 0xa39a, 0x0010, -+ 0x8421, 0x00c0, 0x41ae, 0x2021, 0x0001, 0x83ff, 0x0040, 0x41bc, -+ 0x8423, 0x8319, 0x00c0, 0x41b8, 0xa238, 0x2704, 0xa42c, 0x00c0, -+ 0x41d4, 0xa405, 0x203a, 0x7152, 0xa1a0, 0x29c0, 0x242c, 0xa5ac, -+ 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0000, 0x7572, -+ 0x7077, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e, 0x2071, 0xa600, -+ 0x707b, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e, 0x2001, 0x0002, -+ 0x1078, 0x5ae6, 0x2079, 0x0100, 0x2071, 0x0140, 0x1078, 0x6e0f, -+ 0x7004, 0xa084, 0x4000, 0x0040, 0x41f1, 0x7003, 0x1000, 0x7003, -+ 0x0000, 0x127e, 0x2091, 0x8000, 0x2071, 0xa622, 0x2073, 0x0000, -+ 0x7840, 0x027e, 0x017e, 0x2009, 0x00f7, 0x1078, 0x42a1, 0x017f, -+ 0xa094, 0x0010, 0xa285, 0x0080, 0x7842, 0x7a42, 0x027f, 0x127f, -+ 0x0f7f, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x2011, 0xa8bb, -+ 0x2013, 0x0000, 0x7083, 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3, -+ 0x0056, 0x60a7, 0x9575, 0x1078, 0x6e06, 0x2009, 0x07d0, 0x2011, -+ 0x41dc, 0x1078, 0x5add, 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e, -+ 0x2091, 0x8000, 0x2011, 0x0003, 0x1078, 0x70e0, 0x2011, 0x0002, -+ 0x1078, 0x70ea, 0x1078, 0x6fc4, 0x037e, 0x2019, 0x0000, 0x1078, -+ 0x7058, 0x037f, 0x2009, 0x00f7, 0x1078, 0x42a1, 0x2061, 0xa8c4, -+ 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, 0xa600, 0x6003, 0x0001, -+ 0x2061, 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, -+ 0x2011, 0x4259, 0x1078, 0x5a38, 0x127f, 0x0c7f, 0x027f, 0x017f, -+ 0x007c, 0x0e7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2001, 0x0001, -+ 0x1078, 0x5ae6, 0x2071, 0x0100, 0x1078, 0x6e0f, 0x2071, 0x0140, -+ 0x7004, 0xa084, 0x4000, 0x0040, 0x4271, 0x7003, 0x1000, 0x7003, -+ 0x0000, 0x2001, 0x0001, 0x1078, 0x24e8, 0x1078, 0x4224, 0x127f, -+ 0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1, 0xacc0, 0x2099, -+ 0xab8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x00f0, 0x4281, -+ 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xab00, 0x20a1, -+ 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x2099, 0xab80, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, -+ 0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f, 0x2001, 0xa62f, -+ 0x2004, 0xa005, 0x00c0, 0x42b2, 0x6030, 0xa084, 0x00ff, 0xa105, -+ 0x0078, 0x42b4, 0xa185, 0x00f7, 0x604a, 0x007f, 0x0c7f, 0x007c, -+ 0x017e, 0x047e, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x42cb, -+ 0xa006, 0x2020, 0x2009, 0x002a, 0x1078, 0xa21d, 0x2001, 0xa60c, -+ 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0000, 0x1078, -+ 0x284f, 0x047f, 0x017f, 0x007c, 0x007e, 0x2001, 0xa60c, 0x2004, -+ 0xd09c, 0x0040, 0x42db, 0x007f, 0x007c, 0x007e, 0x017e, 0x127e, -+ 0x2091, 0x8000, 0x2001, 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102, -+ 0x127f, 0x017f, 0x007f, 0x007c, 0x157e, 0x20a9, 0x00ff, 0x2009, -+ 0xa735, 0xa006, 0x200a, 0x8108, 0x00f0, 0x42f2, 0x157f, 0x007c, -+ 0x0d7e, 0x037e, 0x157e, 0x137e, 0x147e, 0x2069, 0xa652, 0xa006, -+ 0x6002, 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x29c0, -+ 0x231c, 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, -+ 0x23a0, 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, -+ 0x603e, 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, -+ 0x6066, 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, -+ 0x6086, 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60ae, -+ 0x61a2, 0x0d7e, 0x60a4, 0xa06d, 0x0040, 0x4338, 0x1078, 0x13a4, -+ 0x60a7, 0x0000, 0x60a8, 0xa06d, 0x0040, 0x4340, 0x1078, 0x13a4, -+ 0x60ab, 0x0000, 0x0d7f, 0xa006, 0x604a, 0x6810, 0x603a, 0x680c, -+ 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, 0x147f, 0x137f, 0x157f, -+ 0x037f, 0x0d7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x6944, 0x6e48, -+ 0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8, 0x4424, 0xa18c, 0xff00, -+ 0x810f, 0xa182, 0x00ff, 0x00c8, 0x442a, 0x2001, 0xa60c, 0x2004, -+ 0xa084, 0x0003, 0x0040, 0x4385, 0x2001, 0xa60c, 0x2004, 0xd084, -+ 0x00c0, 0x4405, 0xa188, 0xa735, 0x2104, 0xa065, 0x0040, 0x4405, -+ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x4405, 0x6000, -+ 0xd0c4, 0x0040, 0x4405, 0x0078, 0x4392, 0xa188, 0xa735, 0x2104, -+ 0xa065, 0x0040, 0x43e9, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, -+ 0x00c0, 0x43ef, 0x60a4, 0xa00d, 0x0040, 0x439a, 0x1078, 0x4817, -+ 0x0040, 0x43e3, 0x60a8, 0xa00d, 0x0040, 0x43b4, 0x1078, 0x486a, -+ 0x00c0, 0x43b4, 0x694c, 0xd1fc, 0x00c0, 0x43aa, 0x1078, 0x44df, -+ 0x0078, 0x43de, 0x1078, 0x4484, 0x694c, 0xd1ec, 0x00c0, 0x43de, -+ 0x1078, 0x46d6, 0x0078, 0x43de, 0x694c, 0xa184, 0xa000, 0x0040, -+ 0x43ce, 0xd1ec, 0x0040, 0x43c7, 0xd1fc, 0x0040, 0x43c3, 0x1078, -+ 0x46e7, 0x0078, 0x43ca, 0x1078, 0x46e7, 0x0078, 0x43ce, 0xd1fc, -+ 0x0040, 0x43ce, 0x1078, 0x4484, 0x0078, 0x43de, 0x6050, 0xa00d, -+ 0x0040, 0x43d9, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x0078, -+ 0x43de, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x1078, 0x5da9, -+ 0xa006, 0x127f, 0x007c, 0x2001, 0x0005, 0x2009, 0x0000, 0x0078, -+ 0x442e, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x442e, 0xa082, -+ 0x0006, 0x00c8, 0x4405, 0x60a0, 0xd0bc, 0x00c0, 0x4401, 0x6100, -+ 0xd1fc, 0x0040, 0x4392, 0x2001, 0x0029, 0x2009, 0x1000, 0x0078, -+ 0x442e, 0x2001, 0x0028, 0x0078, 0x4420, 0x2009, 0xa60c, 0x210c, -+ 0xd18c, 0x0040, 0x440f, 0x2001, 0x0004, 0x0078, 0x4420, 0xd184, -+ 0x0040, 0x4416, 0x2001, 0x0004, 0x0078, 0x4420, 0x2001, 0x0029, -+ 0x6100, 0xd1fc, 0x0040, 0x4420, 0x2009, 0x1000, 0x0078, 0x442e, -+ 0x2009, 0x0000, 0x0078, 0x442e, 0x2001, 0x0029, 0x2009, 0x0000, -+ 0x0078, 0x442e, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x127f, -+ 0x007c, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8, -+ 0x447e, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x00c8, 0x4464, -+ 0xa188, 0xa735, 0x2104, 0xa065, 0x0040, 0x4464, 0x6004, 0xa084, -+ 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x446a, 0x684c, 0xd0ec, 0x0040, -+ 0x4457, 0x1078, 0x46e7, 0x1078, 0x4484, 0x0078, 0x445f, 0x1078, -+ 0x4484, 0x684c, 0xd0fc, 0x0040, 0x445f, 0x1078, 0x46d6, 0x1078, -+ 0x472f, 0xa006, 0x0078, 0x4482, 0x2001, 0x0028, 0x2009, 0x0000, -+ 0x0078, 0x4482, 0xa082, 0x0006, 0x00c8, 0x4478, 0x6100, 0xd1fc, -+ 0x0040, 0x444d, 0x2001, 0x0029, 0x2009, 0x1000, 0x0078, 0x4482, -+ 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x4482, 0x2001, 0x0029, -+ 0x2009, 0x0000, 0xa005, 0x007c, 0x127e, 0x2091, 0x8000, 0x6050, -+ 0xa00d, 0x0040, 0x4492, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, -+ 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078, -+ 0x4490, 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, 0x44af, -+ 0x0e7e, 0x2071, 0xa8b1, 0x7004, 0xa086, 0x0002, 0x0040, 0x44b6, -+ 0x0e7f, 0x604c, 0x6802, 0x2d00, 0x604e, 0x127f, 0x007c, 0x2d00, -+ 0x6052, 0x604e, 0x6803, 0x0000, 0x0078, 0x44ad, 0x701c, 0xac06, -+ 0x00c0, 0x44a8, 0x604c, 0x2070, 0x7000, 0x6802, 0x2d00, 0x7002, -+ 0x0e7f, 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x604c, 0xa06d, -+ 0x0040, 0x44d1, 0x6800, 0xa005, 0x00c0, 0x44cf, 0x6052, 0x604e, -+ 0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, 0x44de, 0x6800, -+ 0xa005, 0x00c0, 0x44dc, 0x6052, 0x604e, 0xad05, 0x007c, 0x6803, -+ 0x0000, 0x6084, 0xa00d, 0x0040, 0x44e9, 0x2d00, 0x200a, 0x6086, -+ 0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x44e8, 0x127e, 0x0c7e, -+ 0x027e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005, 0x0040, -+ 0x44fc, 0xc285, 0x0078, 0x44fd, 0xc284, 0x6202, 0x027f, 0x0c7f, -+ 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260, -+ 0x6204, 0x007e, 0xa086, 0x0006, 0x00c0, 0x4521, 0x609c, 0xd0ac, -+ 0x0040, 0x4521, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x4521, -+ 0xa284, 0xff00, 0x8007, 0xa086, 0x0007, 0x00c0, 0x4521, 0x2011, -+ 0x0600, 0x007f, 0xa294, 0xff00, 0xa215, 0x6206, 0x007e, 0xa086, -+ 0x0006, 0x00c0, 0x4531, 0x6290, 0x82ff, 0x00c0, 0x4531, 0x1078, -+ 0x1332, 0x007f, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, -+ 0x8000, 0x6218, 0x2260, 0x6204, 0x007e, 0xa086, 0x0006, 0x00c0, -+ 0x4553, 0x609c, 0xd0a4, 0x0040, 0x4553, 0x2001, 0xa653, 0x2004, -+ 0xd0ac, 0x00c0, 0x4553, 0xa284, 0x00ff, 0xa086, 0x0007, 0x00c0, -+ 0x4553, 0x2011, 0x0006, 0x007f, 0xa294, 0x00ff, 0x8007, 0xa215, -+ 0x6206, 0x0c7f, 0x127f, 0x007c, 0x027e, 0xa182, 0x00ff, 0x0048, -+ 0x4565, 0xa085, 0x0001, 0x0078, 0x457d, 0xa190, 0xa735, 0x2204, -+ 0xa065, 0x00c0, 0x457c, 0x017e, 0x0d7e, 0x1078, 0x1370, 0x2d60, -+ 0x0d7f, 0x017f, 0x0040, 0x4561, 0x2c00, 0x2012, 0x60a7, 0x0000, -+ 0x60ab, 0x0000, 0x1078, 0x42f8, 0xa006, 0x027f, 0x007c, 0x127e, -+ 0x2091, 0x8000, 0x027e, 0xa182, 0x00ff, 0x0048, 0x458b, 0xa085, -+ 0x0001, 0x0078, 0x45c1, 0x0d7e, 0xa190, 0xa735, 0x2204, 0xa06d, -+ 0x0040, 0x45bf, 0x2013, 0x0000, 0x0d7e, 0x0c7e, 0x2d60, 0x60a4, -+ 0xa06d, 0x0040, 0x459d, 0x1078, 0x13a4, 0x60a8, 0xa06d, 0x0040, -+ 0x45a3, 0x1078, 0x13a4, 0x0c7f, 0x0d7f, 0x0d7e, 0x0c7e, 0x68ac, -+ 0x2060, 0x8cff, 0x0040, 0x45bb, 0x600c, 0x007e, 0x6010, 0x2068, -+ 0x1078, 0x8d06, 0x0040, 0x45b6, 0x1078, 0x13b4, 0x1078, 0x772d, -+ 0x0c7f, 0x0078, 0x45a9, 0x0c7f, 0x0d7f, 0x1078, 0x13a4, 0x0d7f, -+ 0xa006, 0x027f, 0x127f, 0x007c, 0x017e, 0xa182, 0x00ff, 0x0048, -+ 0x45cd, 0xa085, 0x0001, 0x0078, 0x45d4, 0xa188, 0xa735, 0x2104, -+ 0xa065, 0x0040, 0x45c9, 0xa006, 0x017f, 0x007c, 0x0d7e, 0x157e, -+ 0x137e, 0x147e, 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, -+ 0x6002, 0x2069, 0xab8e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138, -+ 0xa10a, 0x0048, 0x45ec, 0x603a, 0x6814, 0x6066, 0x2099, 0xab96, -+ 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0xab9a, -+ 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0xabae, -+ 0x6808, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, -+ 0x60a0, 0xa086, 0x007e, 0x00c0, 0x4611, 0x2069, 0xab8e, 0x690c, -+ 0x616e, 0xa182, 0x0211, 0x00c8, 0x4619, 0x2009, 0x0008, 0x0078, -+ 0x4643, 0xa182, 0x0259, 0x00c8, 0x4621, 0x2009, 0x0007, 0x0078, -+ 0x4643, 0xa182, 0x02c1, 0x00c8, 0x4629, 0x2009, 0x0006, 0x0078, -+ 0x4643, 0xa182, 0x0349, 0x00c8, 0x4631, 0x2009, 0x0005, 0x0078, -+ 0x4643, 0xa182, 0x0421, 0x00c8, 0x4639, 0x2009, 0x0004, 0x0078, -+ 0x4643, 0xa182, 0x0581, 0x00c8, 0x4641, 0x2009, 0x0003, 0x0078, -+ 0x4643, 0x2009, 0x0002, 0x6192, 0x147f, 0x137f, 0x157f, 0x0d7f, -+ 0x007c, 0x017e, 0x027e, 0x0e7e, 0x2071, 0xab8d, 0x2e04, 0x6896, -+ 0x2071, 0xab8e, 0x7004, 0x689a, 0x701c, 0x689e, 0x6a00, 0x2009, -+ 0xa672, 0x210c, 0xd0bc, 0x0040, 0x4663, 0xd1ec, 0x0040, 0x4663, -+ 0xc2ad, 0x0078, 0x4664, 0xc2ac, 0xd0c4, 0x0040, 0x466d, 0xd1e4, -+ 0x0040, 0x466d, 0xc2bd, 0x0078, 0x466e, 0xc2bc, 0x6a02, 0x0e7f, -+ 0x027f, 0x017f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4, -+ 0xa06d, 0x0040, 0x4697, 0x6900, 0x81ff, 0x00c0, 0x46ab, 0x6a04, -+ 0xa282, 0x0010, 0x00c8, 0x46b0, 0xad88, 0x0004, 0x20a9, 0x0010, -+ 0x2104, 0xa086, 0xffff, 0x0040, 0x4692, 0x8108, 0x00f0, 0x4688, -+ 0x1078, 0x1332, 0x260a, 0x8210, 0x6a06, 0x0078, 0x46ab, 0x1078, -+ 0x138b, 0x0040, 0x46b0, 0x2d00, 0x60a6, 0x6803, 0x0000, 0xad88, -+ 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x00f0, 0x46a3, -+ 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, -+ 0xa006, 0x0078, 0x46ad, 0x127e, 0x2091, 0x8000, 0x0d7e, 0x60a4, -+ 0xa00d, 0x0040, 0x46d3, 0x2168, 0x6800, 0xa005, 0x00c0, 0x46cf, -+ 0x1078, 0x4817, 0x00c0, 0x46d3, 0x200b, 0xffff, 0x6804, 0xa08a, -+ 0x0002, 0x0048, 0x46cf, 0x8001, 0x6806, 0x0078, 0x46d3, 0x1078, -+ 0x13a4, 0x60a7, 0x0000, 0x0d7f, 0x127f, 0x007c, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x487f, 0x0078, 0x46df, 0x1078, 0x4484, 0x1078, -+ 0x4775, 0x00c0, 0x46dd, 0x1078, 0x472f, 0x127f, 0x007c, 0x0d7e, -+ 0x127e, 0x2091, 0x8000, 0x60a8, 0xa06d, 0x0040, 0x470b, 0x6950, -+ 0x81ff, 0x00c0, 0x471f, 0x6a54, 0xa282, 0x0010, 0x00c8, 0x472c, -+ 0xad88, 0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0040, -+ 0x4706, 0x8108, 0x00f0, 0x46fc, 0x1078, 0x1332, 0x260a, 0x8210, -+ 0x6a56, 0x0078, 0x471f, 0x1078, 0x138b, 0x0040, 0x472c, 0x2d00, -+ 0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, 0x20a9, 0x0010, 0x200b, -+ 0xffff, 0x8108, 0x00f0, 0x4717, 0x6857, 0x0001, 0x6e62, 0x0078, -+ 0x4723, 0x1078, 0x44df, 0x1078, 0x4739, 0x00c0, 0x4721, 0xa085, -+ 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x4729, 0x127e, -+ 0x2091, 0x8000, 0x1078, 0x5da9, 0x127f, 0x007c, 0xa01e, 0x0078, -+ 0x473b, 0x2019, 0x0001, 0xa00e, 0x127e, 0x2091, 0x8000, 0x604c, -+ 0x2068, 0x6000, 0xd0dc, 0x00c0, 0x4759, 0x8dff, 0x0040, 0x4770, -+ 0x83ff, 0x0040, 0x4751, 0x6848, 0xa606, 0x0040, 0x475e, 0x0078, -+ 0x4759, 0x683c, 0xa406, 0x00c0, 0x4759, 0x6840, 0xa506, 0x0040, -+ 0x475e, 0x2d08, 0x6800, 0x2068, 0x0078, 0x4745, 0x1078, 0x7233, -+ 0x6a00, 0x604c, 0xad06, 0x00c0, 0x4768, 0x624e, 0x0078, 0x476b, -+ 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x4770, 0x6152, 0x8dff, -+ 0x127f, 0x007c, 0xa01e, 0x0078, 0x4777, 0x2019, 0x0001, 0xa00e, -+ 0x6080, 0x2068, 0x8dff, 0x0040, 0x47a3, 0x83ff, 0x0040, 0x4786, -+ 0x6848, 0xa606, 0x0040, 0x4793, 0x0078, 0x478e, 0x683c, 0xa406, -+ 0x00c0, 0x478e, 0x6840, 0xa506, 0x0040, 0x4793, 0x2d08, 0x6800, -+ 0x2068, 0x0078, 0x477a, 0x6a00, 0x6080, 0xad06, 0x00c0, 0x479b, -+ 0x6282, 0x0078, 0x479e, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, -+ 0x47a3, 0x6186, 0x8dff, 0x007c, 0xa016, 0x1078, 0x4810, 0x00c0, -+ 0x47ab, 0x2011, 0x0001, 0x1078, 0x4863, 0x00c0, 0x47b1, 0xa295, -+ 0x0002, 0x007c, 0x1078, 0x489b, 0x0040, 0x47ba, 0x1078, 0x8dca, -+ 0x0078, 0x47bc, 0xa085, 0x0001, 0x007c, 0x1078, 0x489b, 0x0040, -+ 0x47c5, 0x1078, 0x8d62, 0x0078, 0x47c7, 0xa085, 0x0001, 0x007c, -+ 0x1078, 0x489b, 0x0040, 0x47d0, 0x1078, 0x8dac, 0x0078, 0x47d2, -+ 0xa085, 0x0001, 0x007c, 0x1078, 0x489b, 0x0040, 0x47db, 0x1078, -+ 0x8d7e, 0x0078, 0x47dd, 0xa085, 0x0001, 0x007c, 0x1078, 0x489b, -+ 0x0040, 0x47e6, 0x1078, 0x8de8, 0x0078, 0x47e8, 0xa085, 0x0001, -+ 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091, 0x8000, 0x6080, 0xa06d, -+ 0x0040, 0x4808, 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847, -+ 0x0000, 0x1078, 0x8f7d, 0x007e, 0x6000, 0xd0fc, 0x0040, 0x4802, -+ 0x1078, 0xa4ed, 0x007f, 0x1078, 0x4a73, 0x007f, 0x0078, 0x47ef, -+ 0x6083, 0x0000, 0x6087, 0x0000, 0x0d7f, 0x007f, 0x127f, 0x007c, -+ 0x60a4, 0xa00d, 0x00c0, 0x4817, 0xa085, 0x0001, 0x007c, 0x0e7e, -+ 0x2170, 0x7000, 0xa005, 0x00c0, 0x482c, 0x20a9, 0x0010, 0xae88, -+ 0x0004, 0x2104, 0xa606, 0x0040, 0x482c, 0x8108, 0x00f0, 0x4821, -+ 0xa085, 0x0001, 0x0078, 0x482d, 0xa006, 0x0e7f, 0x007c, 0x0d7e, -+ 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x00c0, 0x483d, 0x1078, -+ 0x138b, 0x0040, 0x484f, 0x2d00, 0x60a6, 0x6803, 0x0001, 0x6807, -+ 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, -+ 0x00f0, 0x4845, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006, -+ 0x0078, 0x484c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d, -+ 0x0040, 0x4860, 0x60a7, 0x0000, 0x1078, 0x13a4, 0xa085, 0x0001, -+ 0x127f, 0x0d7f, 0x007c, 0x60a8, 0xa00d, 0x00c0, 0x486a, 0xa085, -+ 0x0001, 0x007c, 0x0e7e, 0x2170, 0x7050, 0xa005, 0x00c0, 0x487d, -+ 0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0040, 0x487d, -+ 0x8108, 0x00f0, 0x4874, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x127e, -+ 0x2091, 0x8000, 0x1078, 0x4863, 0x00c0, 0x4899, 0x200b, 0xffff, -+ 0x0d7e, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, 0x0048, 0x4894, -+ 0x8001, 0x6856, 0x0078, 0x4898, 0x1078, 0x13a4, 0x60ab, 0x0000, -+ 0x0d7f, 0x127f, 0x007c, 0x609c, 0xd0a4, 0x007c, 0x0f7e, 0x71b0, -+ 0x81ff, 0x00c0, 0x48b9, 0x71cc, 0xd19c, 0x0040, 0x48b9, 0x2001, -+ 0x007e, 0xa080, 0xa735, 0x2004, 0xa07d, 0x0040, 0x48b9, 0x7804, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x48b9, 0x7800, 0xc0ed, -+ 0x7802, 0x2079, 0xa652, 0x7804, 0xd0a4, 0x0040, 0x48df, 0x157e, -+ 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x45c4, -+ 0x00c0, 0x48d9, 0x6004, 0xa084, 0xff00, 0x8007, 0xa096, 0x0004, -+ 0x0040, 0x48d6, 0xa086, 0x0006, 0x00c0, 0x48d9, 0x6000, 0xc0ed, -+ 0x6002, 0x017f, 0x8108, 0x00f0, 0x48c5, 0x0c7f, 0x157f, 0x1078, -+ 0x4967, 0x0040, 0x48e8, 0x2001, 0xa8a1, 0x200c, 0x0078, 0x48f0, -+ 0x2079, 0xa652, 0x7804, 0xd0a4, 0x0040, 0x48f4, 0x2009, 0x07d0, -+ 0x2011, 0x48f6, 0x1078, 0x5add, 0x0f7f, 0x007c, 0x2011, 0x48f6, -+ 0x1078, 0x5a45, 0x1078, 0x4967, 0x0040, 0x491e, 0x2001, 0xa7b3, -+ 0x2004, 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102, 0x2001, 0xa653, -+ 0x2004, 0xd0a4, 0x0040, 0x4912, 0x2009, 0x07d0, 0x2011, 0x48f6, -+ 0x1078, 0x5add, 0x0e7e, 0x2071, 0xa600, 0x706f, 0x0000, 0x7073, -+ 0x0000, 0x1078, 0x2677, 0x0e7f, 0x0078, 0x4956, 0x157e, 0x0c7e, -+ 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x45c4, 0x00c0, -+ 0x4950, 0x6000, 0xd0ec, 0x0040, 0x4950, 0x047e, 0x62a0, 0xa294, -+ 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, 0x1078, 0xa21d, 0x6000, -+ 0xc0e5, 0xc0ec, 0x6002, 0x6004, 0xa084, 0x00ff, 0xa085, 0x0700, -+ 0x6006, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, -+ 0x1078, 0x5e0a, 0x2009, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x047f, -+ 0x017f, 0x8108, 0x00f0, 0x4924, 0x0c7f, 0x157f, 0x007c, 0x0c7e, -+ 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c, 0x7818, -+ 0x2004, 0xd0ac, 0x007c, 0x7818, 0x2004, 0xd0bc, 0x007c, 0x0f7e, -+ 0x2001, 0xa7b3, 0x2004, 0xa07d, 0x0040, 0x4970, 0x7800, 0xd0ec, -+ 0x0f7f, 0x007c, 0x127e, 0x027e, 0x2091, 0x8000, 0x007e, 0x62a0, -+ 0xa290, 0xa735, 0x2204, 0xac06, 0x10c0, 0x1332, 0x007f, 0x6200, -+ 0xa005, 0x0040, 0x4986, 0xc2fd, 0x0078, 0x4987, 0xc2fc, 0x6202, -+ 0x027f, 0x127f, 0x007c, 0x2011, 0xa633, 0x2204, 0xd0cc, 0x0040, -+ 0x4998, 0x2001, 0xa89f, 0x200c, 0x2011, 0x4999, 0x1078, 0x5add, -+ 0x007c, 0x2011, 0x4999, 0x1078, 0x5a45, 0x2011, 0xa633, 0x2204, -+ 0xc0cc, 0x2012, 0x007c, 0x2071, 0xa714, 0x7003, 0x0001, 0x7007, -+ 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f, -+ 0x0000, 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b, -+ 0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xa87d, 0x7003, -+ 0xa714, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xa85d, 0x7013, -+ 0x0020, 0x7017, 0x0040, 0x7037, 0x0000, 0x007c, 0x017e, 0x0e7e, -+ 0x2071, 0xa835, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001, -+ 0xa653, 0x2004, 0xd0fc, 0x00c0, 0x49e8, 0x2001, 0xa653, 0x2004, -+ 0xa00e, 0xd09c, 0x0040, 0x49e5, 0x8108, 0x7102, 0x0078, 0x4a3b, -+ 0x2001, 0xa672, 0x200c, 0xa184, 0x000f, 0x2009, 0xa673, 0x210c, -+ 0x0079, 0x49f2, 0x49dd, 0x4a13, 0x4a1b, 0x4a26, 0x4a2c, 0x49dd, -+ 0x49dd, 0x49dd, 0x4a02, 0x49dd, 0x49dd, 0x49dd, 0x49dd, 0x49dd, -+ 0x49dd, 0x49dd, 0x7003, 0x0004, 0x137e, 0x147e, 0x157e, 0x2099, -+ 0xa676, 0x20a1, 0xa886, 0x20a9, 0x0004, 0x53a3, 0x157f, 0x147f, -+ 0x137f, 0x0078, 0x4a3b, 0x708f, 0x0005, 0x7007, 0x0122, 0x2001, -+ 0x0002, 0x0078, 0x4a21, 0x708f, 0x0002, 0x7007, 0x0121, 0x2001, -+ 0x0003, 0x7002, 0x7097, 0x0001, 0x0078, 0x4a38, 0x7007, 0x0122, -+ 0x2001, 0x0002, 0x0078, 0x4a30, 0x7007, 0x0121, 0x2001, 0x0003, -+ 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007, 0x709a, -+ 0xa184, 0x00ff, 0x7092, 0x0e7f, 0x017f, 0x007c, 0x0e7e, 0x2071, -+ 0xa714, 0x684c, 0xa005, 0x00c0, 0x4a4c, 0x7028, 0xc085, 0x702a, -+ 0xa085, 0x0001, 0x0078, 0x4a71, 0x6a60, 0x7236, 0x6b64, 0x733a, -+ 0x6868, 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, -+ 0x6844, 0x7032, 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, -+ 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, -+ 0xa319, 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, -+ 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x027e, 0x6838, 0xd0fc, 0x00c0, -+ 0x4ac9, 0x6804, 0xa00d, 0x0040, 0x4a8f, 0x0d7e, 0x2071, 0xa600, -+ 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, -+ 0x00c0, 0x4a82, 0x702e, 0x70ac, 0xa200, 0x70ae, 0x0d7f, 0x2071, -+ 0xa714, 0x701c, 0xa005, 0x00c0, 0x4adb, 0x0068, 0x4ad9, 0x2071, -+ 0xa835, 0x7200, 0x82ff, 0x0040, 0x4ad9, 0x6934, 0xa186, 0x0103, -+ 0x00c0, 0x4aec, 0x6948, 0x6844, 0xa105, 0x00c0, 0x4acc, 0x2009, -+ 0x8020, 0x2200, 0x0079, 0x4aac, 0x4ad9, 0x4ab1, 0x4b09, 0x4b17, -+ 0x4ad9, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4ad9, 0x7122, -+ 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, -+ 0x2071, 0xa600, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70ac, 0x8000, -+ 0x70ae, 0x027f, 0x0e7f, 0x007c, 0x6844, 0xa086, 0x0100, 0x00c0, -+ 0x4ad9, 0x6868, 0xa005, 0x00c0, 0x4ad9, 0x2009, 0x8020, 0x0078, -+ 0x4aa9, 0x2071, 0xa714, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000, -+ 0x7012, 0x7018, 0xa06d, 0x711a, 0x0040, 0x4ae9, 0x6902, 0x0078, -+ 0x4aea, 0x711e, 0x0078, 0x4ac9, 0xa18c, 0x00ff, 0xa186, 0x0017, -+ 0x0040, 0x4afa, 0xa186, 0x001e, 0x0040, 0x4afa, 0xa18e, 0x001f, -+ 0x00c0, 0x4ad9, 0x684c, 0xd0cc, 0x0040, 0x4ad9, 0x6850, 0xa084, -+ 0x00ff, 0xa086, 0x0001, 0x00c0, 0x4ad9, 0x2009, 0x8021, 0x0078, -+ 0x4aa9, 0x7084, 0x8008, 0xa092, 0x001e, 0x00c8, 0x4ad9, 0x7186, -+ 0xae90, 0x0003, 0xa210, 0x683c, 0x2012, 0x0078, 0x4b27, 0x7084, -+ 0x8008, 0xa092, 0x000f, 0x00c8, 0x4ad9, 0x7186, 0xae90, 0x0003, -+ 0x8003, 0xa210, 0x683c, 0x2012, 0x8210, 0x6840, 0x2012, 0x7088, -+ 0xa10a, 0x0048, 0x4ac0, 0x718c, 0x7084, 0xa10a, 0x0048, 0x4ac0, -+ 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4ac0, 0x2071, 0xa835, -+ 0x7000, 0xa086, 0x0002, 0x00c0, 0x4b47, 0x1078, 0x4dc3, 0x2071, -+ 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4ac0, 0x1078, -+ 0x4dee, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, -+ 0x4ac0, 0x007e, 0x684c, 0x007e, 0x6837, 0x0103, 0x20a9, 0x001c, -+ 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x007f, 0xa084, -+ 0x00ff, 0x684e, 0x007f, 0x684a, 0x6952, 0x007c, 0x2071, 0xa714, -+ 0x7004, 0x0079, 0x4b6b, 0x4b75, 0x4b86, 0x4d94, 0x4d95, 0x4dbc, -+ 0x4dc2, 0x4b76, 0x4d82, 0x4d23, 0x4da5, 0x007c, 0x127e, 0x2091, -+ 0x8000, 0x0068, 0x4b85, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091, -+ 0x4080, 0x7007, 0x0001, 0x700b, 0x0000, 0x127f, 0x2069, 0xa8c4, -+ 0x6844, 0xa005, 0x0050, 0x4bae, 0x00c0, 0x4bae, 0x127e, 0x2091, -+ 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xa720, 0x2004, 0xa10a, -+ 0x0040, 0x4ba9, 0x0068, 0x4bad, 0x2069, 0x0000, 0x6818, 0xd084, -+ 0x00c0, 0x4bad, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, -+ 0x4080, 0x2069, 0xa8c4, 0x6847, 0xffff, 0x127f, 0x2069, 0xa600, -+ 0x6848, 0x6964, 0xa102, 0x2069, 0xa835, 0x688a, 0x6984, 0x701c, -+ 0xa06d, 0x0040, 0x4bc0, 0x81ff, 0x0040, 0x4c08, 0x0078, 0x4bd6, -+ 0x81ff, 0x0040, 0x4cda, 0x2071, 0xa835, 0x7184, 0x7088, 0xa10a, -+ 0x00c8, 0x4bd6, 0x7190, 0x2071, 0xa8c4, 0x7040, 0xa005, 0x0040, -+ 0x4bd6, 0x00d0, 0x4cda, 0x7142, 0x0078, 0x4cda, 0x2071, 0xa835, -+ 0x718c, 0x127e, 0x2091, 0x8000, 0x7084, 0xa10a, 0x0048, 0x4cf7, -+ 0x0068, 0x4c8c, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x4c8c, -+ 0x2001, 0xffff, 0x2071, 0xa8c4, 0x7042, 0x2071, 0xa835, 0x7000, -+ 0xa086, 0x0002, 0x00c0, 0x4bfe, 0x1078, 0x4dc3, 0x2071, 0x0000, -+ 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4c8c, 0x1078, 0x4dee, -+ 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x4c8c, -+ 0x2071, 0xa835, 0x7000, 0xa005, 0x0040, 0x4cb9, 0x6934, 0xa186, -+ 0x0103, 0x00c0, 0x4c8f, 0x684c, 0xd0bc, 0x00c0, 0x4cb9, 0x6948, -+ 0x6844, 0xa105, 0x00c0, 0x4cac, 0x2009, 0x8020, 0x2071, 0xa835, -+ 0x7000, 0x0079, 0x4c23, 0x4cb9, 0x4c71, 0x4c49, 0x4c5b, 0x4c28, -+ 0x137e, 0x147e, 0x157e, 0x2099, 0xa676, 0x20a1, 0xa886, 0x20a9, -+ 0x0004, 0x53a3, 0x157f, 0x147f, 0x137f, 0x2071, 0xa87d, 0xad80, -+ 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002, 0x700b, 0x0000, -+ 0x2e10, 0x1078, 0x13db, 0x2071, 0xa714, 0x7007, 0x0009, 0x0078, -+ 0x4cda, 0x7084, 0x8008, 0xa092, 0x001e, 0x00c8, 0x4cda, 0xae90, -+ 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071, 0xa714, 0x1078, -+ 0x4e4c, 0x0078, 0x4cda, 0x7084, 0x8008, 0xa092, 0x000f, 0x00c8, -+ 0x4cda, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, 0x8210, -+ 0x6840, 0x2012, 0x7186, 0x2071, 0xa714, 0x1078, 0x4e4c, 0x0078, -+ 0x4cda, 0x127e, 0x2091, 0x8000, 0x0068, 0x4c8c, 0x2071, 0x0000, -+ 0x7018, 0xd084, 0x00c0, 0x4c8c, 0x7122, 0x683c, 0x7026, 0x6840, -+ 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x127f, 0x2071, 0xa714, -+ 0x1078, 0x4e4c, 0x0078, 0x4cda, 0x127f, 0x0078, 0x4cda, 0xa18c, -+ 0x00ff, 0xa186, 0x0017, 0x0040, 0x4c9d, 0xa186, 0x001e, 0x0040, -+ 0x4c9d, 0xa18e, 0x001f, 0x00c0, 0x4cb9, 0x684c, 0xd0cc, 0x0040, -+ 0x4cb9, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x4cb9, -+ 0x2009, 0x8021, 0x0078, 0x4c1e, 0x6844, 0xa086, 0x0100, 0x00c0, -+ 0x4cb9, 0x6868, 0xa005, 0x00c0, 0x4cb9, 0x2009, 0x8020, 0x0078, -+ 0x4c1e, 0x2071, 0xa714, 0x1078, 0x4e60, 0x0040, 0x4cda, 0x2071, -+ 0xa714, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, -+ 0x00c0, 0x4cd1, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0040, 0x4cd1, -+ 0x710e, 0x7007, 0x0003, 0x1078, 0x4e80, 0x7050, 0xa086, 0x0100, -+ 0x0040, 0x4d95, 0x127e, 0x2091, 0x8000, 0x2071, 0xa714, 0x7008, -+ 0xa086, 0x0001, 0x00c0, 0x4cf5, 0x0068, 0x4cf5, 0x2009, 0x000d, -+ 0x7030, 0x200a, 0x2091, 0x4080, 0x700b, 0x0000, 0x7004, 0xa086, -+ 0x0006, 0x00c0, 0x4cf5, 0x7007, 0x0001, 0x127f, 0x007c, 0x2071, -+ 0xa714, 0x1078, 0x4e60, 0x0040, 0x4d20, 0x2071, 0xa835, 0x7084, -+ 0x700a, 0x20a9, 0x0020, 0x2099, 0xa836, 0x20a1, 0xa85d, 0x53a3, -+ 0x7087, 0x0000, 0x2071, 0xa714, 0x2069, 0xa87d, 0x706c, 0x6826, -+ 0x7070, 0x682a, 0x7074, 0x682e, 0x7078, 0x6832, 0x2d10, 0x1078, -+ 0x13db, 0x7007, 0x0008, 0x2001, 0xffff, 0x2071, 0xa8c4, 0x7042, -+ 0x127f, 0x0078, 0x4cda, 0x2069, 0xa87d, 0x6808, 0xa08e, 0x0000, -+ 0x0040, 0x4d81, 0xa08e, 0x0200, 0x0040, 0x4d7f, 0xa08e, 0x0100, -+ 0x00c0, 0x4d81, 0x127e, 0x2091, 0x8000, 0x0068, 0x4d7c, 0x2069, -+ 0x0000, 0x6818, 0xd084, 0x00c0, 0x4d7c, 0x702c, 0x7130, 0x8108, -+ 0xa102, 0x0048, 0x4d4a, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, -+ 0x0078, 0x4d54, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, 0x4d54, -+ 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000, -+ 0x2001, 0xa85a, 0x2004, 0xa005, 0x00c0, 0x4d73, 0x6934, 0x2069, -+ 0xa835, 0x689c, 0x699e, 0x2069, 0xa8c4, 0xa102, 0x00c0, 0x4d6c, -+ 0x6844, 0xa005, 0x00d0, 0x4d7a, 0x2001, 0xa85b, 0x200c, 0x810d, -+ 0x6946, 0x0078, 0x4d7a, 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, -+ 0x2091, 0x4080, 0x7007, 0x0001, 0x127f, 0x0078, 0x4d81, 0x7007, -+ 0x0005, 0x007c, 0x701c, 0xa06d, 0x0040, 0x4d93, 0x1078, 0x4e60, -+ 0x0040, 0x4d93, 0x7007, 0x0003, 0x1078, 0x4e80, 0x7050, 0xa086, -+ 0x0100, 0x0040, 0x4d95, 0x007c, 0x007c, 0x7050, 0xa09e, 0x0100, -+ 0x00c0, 0x4d9e, 0x7007, 0x0004, 0x0078, 0x4dbc, 0xa086, 0x0200, -+ 0x00c0, 0x4da4, 0x7007, 0x0005, 0x007c, 0x2001, 0xa87f, 0x2004, -+ 0xa08e, 0x0100, 0x00c0, 0x4db1, 0x7007, 0x0001, 0x1078, 0x4e4c, -+ 0x007c, 0xa08e, 0x0000, 0x0040, 0x4db0, 0xa08e, 0x0200, 0x00c0, -+ 0x4db0, 0x7007, 0x0005, 0x007c, 0x1078, 0x4e16, 0x7006, 0x1078, -+ 0x4e4c, 0x007c, 0x007c, 0x0e7e, 0x157e, 0x2071, 0xa835, 0x7184, -+ 0x81ff, 0x0040, 0x4deb, 0xa006, 0x7086, 0xae80, 0x0003, 0x2071, -+ 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x0070, 0x4de8, 0x2014, -+ 0x722a, 0x8000, 0x0070, 0x4de8, 0x2014, 0x722e, 0x8000, 0x0070, -+ 0x4de8, 0x2014, 0x723a, 0x8000, 0x0070, 0x4de8, 0x2014, 0x723e, -+ 0xa180, 0x8030, 0x7022, 0x157f, 0x0e7f, 0x007c, 0x0e7e, 0x157e, -+ 0x2071, 0xa835, 0x7184, 0x81ff, 0x0040, 0x4e13, 0xa006, 0x7086, -+ 0xae80, 0x0003, 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, -+ 0x2014, 0x722a, 0x8000, 0x0070, 0x4e0c, 0x2014, 0x723a, 0x8000, -+ 0x2014, 0x723e, 0x0078, 0x4e10, 0x2001, 0x8020, 0x0078, 0x4e12, -+ 0x2001, 0x8042, 0x7022, 0x157f, 0x0e7f, 0x007c, 0x702c, 0x7130, -+ 0x8108, 0xa102, 0x0048, 0x4e23, 0xa00e, 0x7034, 0x706e, 0x7038, -+ 0x7072, 0x0078, 0x4e2d, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, -+ 0x4e2d, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, 0x8001, -+ 0x700e, 0x00c0, 0x4e43, 0x127e, 0x2091, 0x8000, 0x0068, 0x4e46, -+ 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x700b, -+ 0x0000, 0x127f, 0x007c, 0x2001, 0x0007, 0x007c, 0x2001, 0x0006, -+ 0x700b, 0x0001, 0x127f, 0x007c, 0x701c, 0xa06d, 0x0040, 0x4e5f, -+ 0x127e, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, -+ 0xa005, 0x00c0, 0x4e5c, 0x701a, 0x127f, 0x1078, 0x13a4, 0x007c, -+ 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0040, 0x4e6f, 0x2304, -+ 0x230c, 0xa10e, 0x0040, 0x4e6f, 0xa006, 0x0078, 0x4e7f, 0x732c, -+ 0x8319, 0x7130, 0xa102, 0x00c0, 0x4e79, 0x2300, 0xa005, 0x0078, -+ 0x4e7f, 0x0048, 0x4e7e, 0xa302, 0x0078, 0x4e7f, 0x8002, 0x007c, -+ 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000, 0x127e, -+ 0x2091, 0x8000, 0x2009, 0xa8d6, 0x2104, 0xc08d, 0x200a, 0x127f, -+ 0x1078, 0x13f9, 0x007c, 0x2071, 0xa6e2, 0x7003, 0x0000, 0x7007, -+ 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000, 0x7053, -+ 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000, 0x708b, -+ 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x007c, 0x0e7e, 0x2071, -+ 0xa6e2, 0x6848, 0xa005, 0x00c0, 0x4ebc, 0x7028, 0xc085, 0x702a, -+ 0xa085, 0x0001, 0x0078, 0x4ee1, 0x6a50, 0x7236, 0x6b54, 0x733a, -+ 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e, -+ 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006, -+ 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, -+ 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000, -+ 0xa006, 0x0e7f, 0x007c, 0x2b78, 0x2071, 0xa6e2, 0x7004, 0x1079, -+ 0x4f41, 0x700c, 0x0079, 0x4eec, 0x4ef1, 0x4ee6, 0x4ee6, 0x4ee6, -+ 0x4ee6, 0x007c, 0x700c, 0x0079, 0x4ef5, 0x4efa, 0x4f3f, 0x4f3f, -+ 0x4f40, 0x4f40, 0x7830, 0x7930, 0xa106, 0x0040, 0x4f04, 0x7830, -+ 0x7930, 0xa106, 0x00c0, 0x4f2a, 0x7030, 0xa10a, 0x0040, 0x4f2a, -+ 0x00c8, 0x4f0c, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x00c8, 0x4f2b, -+ 0x1078, 0x1370, 0x0040, 0x4f2a, 0x2d00, 0x705a, 0x7063, 0x0040, -+ 0x2001, 0x0003, 0x7057, 0x0000, 0x127e, 0x007e, 0x2091, 0x8000, -+ 0x2009, 0xa8d6, 0x2104, 0xc085, 0x200a, 0x007f, 0x700e, 0x127f, -+ 0x1078, 0x13f9, 0x007c, 0x1078, 0x1370, 0x0040, 0x4f2a, 0x2d00, -+ 0x705a, 0x1078, 0x1370, 0x00c0, 0x4f37, 0x0078, 0x4f16, 0x2d00, -+ 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, 0x0078, 0x4f1a, 0x007c, -+ 0x007c, 0x4f52, 0x4f53, 0x4f8a, 0x4f8b, 0x4f3f, 0x4fc1, 0x4fc6, -+ 0x4ffd, 0x4ffe, 0x5019, 0x501a, 0x501b, 0x501c, 0x501d, 0x501e, -+ 0x509e, 0x50c8, 0x007c, 0x700c, 0x0079, 0x4f56, 0x4f5b, 0x4f5e, -+ 0x4f6e, 0x4f89, 0x4f89, 0x1078, 0x4ef2, 0x007c, 0x127e, 0x8001, -+ 0x700e, 0x7058, 0x007e, 0x1078, 0x5464, 0x0040, 0x4f6b, 0x2091, -+ 0x8000, 0x1078, 0x4ef2, 0x0d7f, 0x0078, 0x4f77, 0x127e, 0x8001, -+ 0x700e, 0x1078, 0x5464, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, -+ 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x0020, -+ 0x00c8, 0x4f86, 0x1079, 0x4fa1, 0x127f, 0x007c, 0x127f, 0x1078, -+ 0x501f, 0x007c, 0x007c, 0x007c, 0x0e7e, 0x2071, 0xa6e2, 0x700c, -+ 0x0079, 0x4f92, 0x4f97, 0x4f97, 0x4f97, 0x4f99, 0x4f9d, 0x0e7f, -+ 0x007c, 0x700f, 0x0001, 0x0078, 0x4f9f, 0x700f, 0x0002, 0x0e7f, -+ 0x007c, 0x501f, 0x501f, 0x503b, 0x501f, 0x5171, 0x501f, 0x501f, -+ 0x501f, 0x501f, 0x501f, 0x503b, 0x51bb, 0x5208, 0x5261, 0x5277, -+ 0x501f, 0x501f, 0x5057, 0x503b, 0x501f, 0x501f, 0x5078, 0x5338, -+ 0x5356, 0x501f, 0x5057, 0x501f, 0x501f, 0x501f, 0x501f, 0x506d, -+ 0x5356, 0x7020, 0x2068, 0x1078, 0x13a4, 0x007c, 0x700c, 0x0079, -+ 0x4fc9, 0x4fce, 0x4fd1, 0x4fe1, 0x4ffc, 0x4ffc, 0x1078, 0x4ef2, -+ 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e, 0x1078, 0x5464, -+ 0x0040, 0x4fde, 0x2091, 0x8000, 0x1078, 0x4ef2, 0x0d7f, 0x0078, -+ 0x4fea, 0x127e, 0x8001, 0x700e, 0x1078, 0x5464, 0x7058, 0x2068, -+ 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, -+ 0x00ff, 0xa08a, 0x001a, 0x00c8, 0x4ff9, 0x1079, 0x4fff, 0x127f, -+ 0x007c, 0x127f, 0x1078, 0x501f, 0x007c, 0x007c, 0x007c, 0x501f, -+ 0x503b, 0x515b, 0x501f, 0x503b, 0x501f, 0x503b, 0x503b, 0x501f, -+ 0x503b, 0x515b, 0x503b, 0x503b, 0x503b, 0x503b, 0x503b, 0x501f, -+ 0x503b, 0x515b, 0x501f, 0x501f, 0x503b, 0x501f, 0x501f, 0x501f, -+ 0x503b, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x7007, -+ 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x4a73, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, -+ 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, -+ 0x4a73, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, -+ 0xc0ed, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x4a73, 0x127f, -+ 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, -+ 0x127e, 0x2091, 0x8000, 0x1078, 0x4a73, 0x127f, 0x007c, 0x6834, -+ 0x8007, 0xa084, 0x00ff, 0x0040, 0x502d, 0x8001, 0x00c0, 0x5064, -+ 0x7007, 0x0001, 0x0078, 0x513a, 0x7007, 0x0006, 0x7012, 0x2d00, -+ 0x7016, 0x701a, 0x704b, 0x513a, 0x007c, 0x684c, 0xa084, 0x00c0, -+ 0xa086, 0x00c0, 0x00c0, 0x5078, 0x7007, 0x0001, 0x0078, 0x5373, -+ 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, -+ 0x20a1, 0xa70d, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x00c8, -+ 0x5049, 0x6884, 0xa08a, 0x0002, 0x00c8, 0x5049, 0x82ff, 0x00c0, -+ 0x509a, 0x6888, 0x698c, 0xa105, 0x0040, 0x509a, 0x2001, 0x510a, -+ 0x0078, 0x509d, 0xa280, 0x5100, 0x2004, 0x70c6, 0x7010, 0xa015, -+ 0x0040, 0x50e8, 0x1078, 0x1370, 0x00c0, 0x50a9, 0x7007, 0x000f, -+ 0x007c, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x6000, 0x6836, 0x6004, -+ 0xad00, 0x7096, 0x6008, 0xa20a, 0x00c8, 0x50b8, 0xa00e, 0x2200, -+ 0x7112, 0x620c, 0x8003, 0x800b, 0xa296, 0x0004, 0x0040, 0x50c1, -+ 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x1078, 0x13db, -+ 0x7090, 0xa08e, 0x0100, 0x0040, 0x50dc, 0xa086, 0x0200, 0x0040, -+ 0x50d4, 0x7007, 0x0010, 0x007c, 0x7020, 0x2068, 0x1078, 0x13a4, -+ 0x7014, 0x2068, 0x0078, 0x5049, 0x7020, 0x2068, 0x7018, 0x6802, -+ 0x6807, 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a, 0x0078, 0x509e, -+ 0x7014, 0x2068, 0x7007, 0x0001, 0x6884, 0xa005, 0x00c0, 0x50f7, -+ 0x6888, 0x698c, 0xa105, 0x0040, 0x50f7, 0x1078, 0x510e, 0x6834, -+ 0xa084, 0x00ff, 0xa086, 0x001e, 0x0040, 0x5373, 0x0078, 0x513a, -+ 0x5102, 0x5106, 0x0002, 0x0011, 0x0007, 0x0004, 0x000a, 0x000f, -+ 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, 0x0004, 0x0f7e, 0x0e7e, -+ 0x0c7e, 0x077e, 0x067e, 0x6f88, 0x6e8c, 0x6804, 0x2060, 0xacf0, -+ 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, 0x700c, 0x7816, 0x7008, -+ 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, 0x7e0e, 0x7f0a, 0x8109, -+ 0x0040, 0x5130, 0xaef2, 0x0004, 0xaffa, 0x0006, 0x0078, 0x511d, -+ 0x6004, 0xa065, 0x00c0, 0x5117, 0x067f, 0x077f, 0x0c7f, 0x0e7f, -+ 0x0f7f, 0x007c, 0x2009, 0xa62f, 0x210c, 0x81ff, 0x00c0, 0x5155, -+ 0x6838, 0xa084, 0x00ff, 0x683a, 0x1078, 0x4353, 0x00c0, 0x5149, -+ 0x007c, 0x1078, 0x4b51, 0x127e, 0x2091, 0x8000, 0x1078, 0x8f7d, -+ 0x1078, 0x4a73, 0x127f, 0x0078, 0x5148, 0x2001, 0x0028, 0x2009, -+ 0x0000, 0x0078, 0x5149, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, -+ 0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x516a, 0x7007, 0x0006, -+ 0x0078, 0x5170, 0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x107a, -+ 0x007c, 0x7007, 0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, -+ 0xa084, 0x00ff, 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x519a, -+ 0x2009, 0x0000, 0x20a9, 0x00ff, 0xa096, 0x0002, 0x0040, 0x519a, -+ 0xa005, 0x00c0, 0x51ad, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078, -+ 0x45c4, 0x00c0, 0x51ad, 0x067e, 0x6e50, 0x1078, 0x46b3, 0x067f, -+ 0x0078, 0x51ad, 0x047e, 0x2011, 0xa60c, 0x2224, 0xc484, 0xc48c, -+ 0x2412, 0x047f, 0x0c7e, 0x1078, 0x45c4, 0x00c0, 0x51a9, 0x1078, -+ 0x4852, 0x8108, 0x00f0, 0x51a3, 0x0c7f, 0x684c, 0xd084, 0x00c0, -+ 0x51b4, 0x1078, 0x13a4, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, -+ 0x4a73, 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, -+ 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x51ff, 0x2061, 0xa933, -+ 0x6100, 0xd184, 0x0040, 0x51df, 0x6858, 0xa084, 0x00ff, 0x00c0, -+ 0x5202, 0x6000, 0xd084, 0x0040, 0x51ff, 0x6004, 0xa005, 0x00c0, -+ 0x5205, 0x6003, 0x0000, 0x600b, 0x0000, 0x0078, 0x51fc, 0x2011, -+ 0x0001, 0x6860, 0xa005, 0x00c0, 0x51e7, 0x2001, 0x001e, 0x8000, -+ 0x6016, 0x6858, 0xa084, 0x00ff, 0x0040, 0x51ff, 0x6006, 0x6858, -+ 0x8007, 0xa084, 0x00ff, 0x0040, 0x51ff, 0x600a, 0x6858, 0x8000, -+ 0x00c0, 0x51fb, 0xc28d, 0x6202, 0x127f, 0x0078, 0x5453, 0x127f, -+ 0x0078, 0x544b, 0x127f, 0x0078, 0x5443, 0x127f, 0x0078, 0x5447, -+ 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xa653, 0x2004, -+ 0xd0a4, 0x0040, 0x525e, 0x2061, 0xa933, 0x6000, 0xd084, 0x0040, -+ 0x525e, 0x6204, 0x6308, 0xd08c, 0x00c0, 0x5250, 0x6c48, 0xa484, -+ 0x0003, 0x0040, 0x5236, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x00c0, -+ 0x522f, 0x2100, 0xa210, 0x0048, 0x525b, 0x0078, 0x5236, 0x8001, -+ 0x00c0, 0x525b, 0x2100, 0xa212, 0x0048, 0x525b, 0xa484, 0x000c, -+ 0x0040, 0x5250, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004, -+ 0x00c0, 0x5248, 0x2100, 0xa318, 0x0048, 0x525b, 0x0078, 0x5250, -+ 0xa082, 0x0004, 0x00c0, 0x525b, 0x2100, 0xa31a, 0x0048, 0x525b, -+ 0x6860, 0xa005, 0x0040, 0x5256, 0x8000, 0x6016, 0x6206, 0x630a, -+ 0x127f, 0x0078, 0x5453, 0x127f, 0x0078, 0x544f, 0x127f, 0x0078, -+ 0x544b, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0xa933, -+ 0x6300, 0xd38c, 0x00c0, 0x5271, 0x6308, 0x8318, 0x0048, 0x5274, -+ 0x630a, 0x127f, 0x0078, 0x5461, 0x127f, 0x0078, 0x544f, 0x127e, -+ 0x0c7e, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0040, -+ 0x528b, 0x0c7e, 0x2061, 0xa933, 0x6000, 0xa084, 0xfcff, 0x6002, -+ 0x0c7f, 0x0078, 0x52ba, 0x6858, 0xa005, 0x0040, 0x52d1, 0x685c, -+ 0xa065, 0x0040, 0x52cd, 0x2001, 0xa62f, 0x2004, 0xa005, 0x0040, -+ 0x529d, 0x1078, 0x8ec6, 0x0078, 0x52ab, 0x6013, 0x0400, 0x6037, -+ 0x0000, 0x694c, 0xd1a4, 0x0040, 0x52a7, 0x6950, 0x6136, 0x2009, -+ 0x0041, 0x1078, 0x775c, 0x6958, 0xa18c, 0xff00, 0xa186, 0x2000, -+ 0x00c0, 0x52ba, 0x027e, 0x2009, 0x0000, 0x2011, 0xfdff, 0x1078, -+ 0x5bf1, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x52c9, 0x2061, 0xa933, -+ 0x6000, 0xd08c, 0x00c0, 0x52c9, 0x6008, 0x8000, 0x0048, 0x52cd, -+ 0x600a, 0x0c7f, 0x127f, 0x0078, 0x5453, 0x0c7f, 0x127f, 0x0078, -+ 0x544b, 0x6954, 0xa186, 0x0045, 0x0040, 0x5306, 0xa186, 0x002a, -+ 0x00c0, 0x52e1, 0x2001, 0xa60c, 0x200c, 0xc194, 0x2102, 0x0078, -+ 0x52ba, 0xa186, 0x0020, 0x0040, 0x52fa, 0xa186, 0x0029, 0x0040, -+ 0x52ed, 0xa186, 0x002d, 0x00c0, 0x52cd, 0x6944, 0xa18c, 0xff00, -+ 0x810f, 0x1078, 0x45c4, 0x00c0, 0x52ba, 0x6000, 0xc0e4, 0x6002, -+ 0x0078, 0x52ba, 0x685c, 0xa065, 0x0040, 0x52cd, 0x6007, 0x0024, -+ 0x2001, 0xa8a3, 0x2004, 0x6016, 0x0078, 0x52ba, 0x685c, 0xa065, -+ 0x0040, 0x52cd, 0x0e7e, 0x6860, 0xa075, 0x2001, 0xa62f, 0x2004, -+ 0xa005, 0x0040, 0x531e, 0x1078, 0x8ec6, 0x8eff, 0x0040, 0x531b, -+ 0x2e60, 0x1078, 0x8ec6, 0x0e7f, 0x0078, 0x52ba, 0x6024, 0xc0dc, -+ 0xc0d5, 0x6026, 0x2e60, 0x6007, 0x003a, 0x6870, 0xa005, 0x0040, -+ 0x532f, 0x6007, 0x003b, 0x6874, 0x602a, 0x6878, 0x6012, 0x6003, -+ 0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0e7f, 0x0078, 0x52ba, -+ 0x2061, 0xa933, 0x6000, 0xd084, 0x0040, 0x5352, 0xd08c, 0x00c0, -+ 0x5461, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048, 0x534c, 0x6206, -+ 0x2091, 0x8001, 0x0078, 0x5461, 0x2091, 0x8001, 0x6853, 0x0016, -+ 0x0078, 0x545a, 0x6853, 0x0007, 0x0078, 0x545a, 0x6834, 0x8007, -+ 0xa084, 0x00ff, 0x00c0, 0x5360, 0x1078, 0x502d, 0x0078, 0x5372, -+ 0x2030, 0x8001, 0x00c0, 0x536a, 0x7007, 0x0001, 0x1078, 0x5373, -+ 0x0078, 0x5372, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, -+ 0x704b, 0x5373, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, 0xa03e, -+ 0x2009, 0xa62f, 0x210c, 0x81ff, 0x00c0, 0x53ff, 0x2009, 0xa60c, -+ 0x210c, 0xd194, 0x00c0, 0x5431, 0x6848, 0x2070, 0xae82, 0xad00, -+ 0x0048, 0x53ef, 0x2001, 0xa616, 0x2004, 0xae02, 0x00c8, 0x53ef, -+ 0x2061, 0xa933, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001, 0x00c0, -+ 0x53d2, 0x711c, 0xa186, 0x0006, 0x00c0, 0x53da, 0x7018, 0xa005, -+ 0x0040, 0x53ff, 0x2004, 0xd0e4, 0x00c0, 0x542b, 0x7024, 0xd0dc, -+ 0x00c0, 0x5435, 0x6853, 0x0000, 0x6803, 0x0000, 0x2d08, 0x7010, -+ 0xa005, 0x00c0, 0x53be, 0x7112, 0x684c, 0xd0f4, 0x00c0, 0x5439, -+ 0x2e60, 0x1078, 0x5b27, 0x127f, 0x0e7f, 0x007c, 0x2068, 0x6800, -+ 0xa005, 0x00c0, 0x53be, 0x6902, 0x2168, 0x684c, 0xd0f4, 0x00c0, -+ 0x5439, 0x127f, 0x0e7f, 0x007c, 0x127f, 0x0e7f, 0x6853, 0x0006, -+ 0x0078, 0x545a, 0xd184, 0x0040, 0x53cc, 0xd1c4, 0x00c0, 0x53f3, -+ 0x0078, 0x53f7, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078, 0x45c4, -+ 0x00c0, 0x542b, 0x6000, 0xd0e4, 0x00c0, 0x542b, 0x711c, 0xa186, -+ 0x0007, 0x00c0, 0x53ef, 0x6853, 0x0002, 0x0078, 0x542d, 0x6853, -+ 0x0008, 0x0078, 0x542d, 0x6853, 0x000e, 0x0078, 0x542d, 0x6853, -+ 0x0017, 0x0078, 0x542d, 0x6853, 0x0035, 0x0078, 0x542d, 0x2001, -+ 0xa672, 0x2004, 0xd0fc, 0x0040, 0x5427, 0x6848, 0x2070, 0xae82, -+ 0xad00, 0x0048, 0x5427, 0x6058, 0xae02, 0x00c8, 0x5427, 0x711c, -+ 0xa186, 0x0006, 0x00c0, 0x5427, 0x7018, 0xa005, 0x0040, 0x5427, -+ 0x2004, 0xd0bc, 0x0040, 0x5427, 0x2039, 0x0001, 0x7000, 0xa086, -+ 0x0007, 0x00c0, 0x537e, 0x7003, 0x0002, 0x0078, 0x537e, 0x6853, -+ 0x0028, 0x0078, 0x542d, 0x6853, 0x0029, 0x127f, 0x0e7f, 0x0078, -+ 0x545a, 0x6853, 0x002a, 0x0078, 0x542d, 0x6853, 0x0045, 0x0078, -+ 0x542d, 0x2e60, 0x2019, 0x0002, 0x6017, 0x0014, 0x1078, 0x9dc7, -+ 0x127f, 0x0e7f, 0x007c, 0x2009, 0x003e, 0x0078, 0x5455, 0x2009, -+ 0x0004, 0x0078, 0x5455, 0x2009, 0x0006, 0x0078, 0x5455, 0x2009, -+ 0x0016, 0x0078, 0x5455, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, -+ 0xa105, 0x6856, 0x2091, 0x8000, 0x1078, 0x4a73, 0x2091, 0x8001, -+ 0x007c, 0x1078, 0x13a4, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102, -+ 0x0048, 0x5471, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0078, -+ 0x547d, 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, 0x547d, 0x7074, -+ 0xa081, 0x0000, 0x7076, 0xa085, 0x0001, 0x7932, 0x7132, 0x007c, -+ 0x0d7e, 0x1078, 0x5b1e, 0x0d7f, 0x007c, 0x0d7e, 0x2011, 0x0004, -+ 0x2204, 0xa085, 0x8002, 0x2012, 0x0d7f, 0x007c, 0x20e1, 0x0002, -+ 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0040, 0x549c, -+ 0xa086, 0x1000, 0x00c0, 0x54d3, 0x20e1, 0x0000, 0x3d00, 0xa094, -+ 0xff00, 0x8217, 0xa084, 0xf000, 0xa086, 0x3000, 0x00c0, 0x54b7, -+ 0xa184, 0xff00, 0x8007, 0xa086, 0x0008, 0x00c0, 0x54d3, 0x1078, -+ 0x29bb, 0x00c0, 0x54d3, 0x1078, 0x56b2, 0x0078, 0x54ce, 0x20e1, -+ 0x0004, 0x3d60, 0xd1bc, 0x00c0, 0x54be, 0x3e60, 0xac84, 0x000f, -+ 0x00c0, 0x54d3, 0xac82, 0xad00, 0x0048, 0x54d3, 0x6858, 0xac02, -+ 0x00c8, 0x54d3, 0x2009, 0x0047, 0x1078, 0x775c, 0x7a1c, 0xd284, -+ 0x00c0, 0x548e, 0x007c, 0xa016, 0x1078, 0x15fa, 0x0078, 0x54ce, -+ 0x0078, 0x54d3, 0x781c, 0xd08c, 0x0040, 0x5502, 0x157e, 0x137e, -+ 0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0076, 0x00c0, -+ 0x5518, 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0, 0x5507, 0x1078, -+ 0x554e, 0x0040, 0x5518, 0x20e1, 0x3000, 0x7828, 0x7828, 0x1078, -+ 0x556c, 0x147f, 0x137f, 0x157f, 0x2009, 0xa8b9, 0x2104, 0xa005, -+ 0x00c0, 0x5503, 0x007c, 0x1078, 0x62d1, 0x0078, 0x5502, 0xa484, -+ 0x7000, 0x00c0, 0x5518, 0x1078, 0x554e, 0x0040, 0x552c, 0x7000, -+ 0xa084, 0xff00, 0xa086, 0x8100, 0x0040, 0x54f3, 0x0078, 0x552c, -+ 0x1078, 0xa54f, 0xd5a4, 0x0040, 0x5528, 0x047e, 0x1078, 0x1b22, -+ 0x047f, 0x20e1, 0x9010, 0x2001, 0x0138, 0x2202, 0x0078, 0x5530, -+ 0x1078, 0x554e, 0x6883, 0x0000, 0x20e1, 0x3000, 0x7828, 0x7828, -+ 0x1078, 0x5537, 0x147f, 0x137f, 0x157f, 0x0078, 0x5502, 0x2001, -+ 0xa60e, 0x2004, 0xd08c, 0x0040, 0x554d, 0x2001, 0xa600, 0x2004, -+ 0xa086, 0x0003, 0x00c0, 0x554d, 0x027e, 0x037e, 0x2011, 0x8048, -+ 0x2518, 0x1078, 0x361b, 0x037f, 0x027f, 0x007c, 0xa484, 0x01ff, -+ 0x6882, 0xa005, 0x0040, 0x5560, 0xa080, 0x001f, 0xa084, 0x03f8, -+ 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x007c, -+ 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, -+ 0xa085, 0x0001, 0x0078, 0x555f, 0x7000, 0xa084, 0xff00, 0xa08c, -+ 0xf000, 0x8007, 0xa196, 0x0000, 0x00c0, 0x5579, 0x0078, 0x57ba, -+ 0x007c, 0xa196, 0x2000, 0x00c0, 0x558a, 0x6900, 0xa18e, 0x0001, -+ 0x00c0, 0x5586, 0x1078, 0x3aec, 0x0078, 0x5578, 0x1078, 0x5592, -+ 0x0078, 0x5578, 0xa196, 0x8000, 0x00c0, 0x5578, 0x1078, 0x5871, -+ 0x0078, 0x5578, 0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, -+ 0x0001, 0x0040, 0x559f, 0xa196, 0x0023, 0x00c0, 0x56aa, 0xa08e, -+ 0x0023, 0x00c0, 0x55d4, 0x1078, 0x591d, 0x0040, 0x56aa, 0x7124, -+ 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x55b8, 0x7034, 0xa005, -+ 0x00c0, 0x56aa, 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x56aa, -+ 0xa08e, 0x0214, 0x0040, 0x55c0, 0xa08e, 0x0210, 0x00c0, 0x55c6, -+ 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x56aa, 0xa08e, 0x0100, -+ 0x00c0, 0x56aa, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x0016, -+ 0x1078, 0x775c, 0x0078, 0x56aa, 0xa08e, 0x0022, 0x00c0, 0x56aa, -+ 0x7030, 0xa08e, 0x0300, 0x00c0, 0x55e5, 0x7034, 0xa005, 0x00c0, -+ 0x56aa, 0x2009, 0x0017, 0x0078, 0x5676, 0xa08e, 0x0500, 0x00c0, -+ 0x55f1, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x0018, 0x0078, -+ 0x5676, 0xa08e, 0x2010, 0x00c0, 0x55f9, 0x2009, 0x0019, 0x0078, -+ 0x5676, 0xa08e, 0x2110, 0x00c0, 0x5601, 0x2009, 0x001a, 0x0078, -+ 0x5676, 0xa08e, 0x5200, 0x00c0, 0x560d, 0x7034, 0xa005, 0x00c0, -+ 0x56aa, 0x2009, 0x001b, 0x0078, 0x5676, 0xa08e, 0x5000, 0x00c0, -+ 0x5619, 0x7034, 0xa005, 0x00c0, 0x56aa, 0x2009, 0x001c, 0x0078, -+ 0x5676, 0xa08e, 0x1300, 0x00c0, 0x5621, 0x2009, 0x0034, 0x0078, -+ 0x5676, 0xa08e, 0x1200, 0x00c0, 0x562d, 0x7034, 0xa005, 0x00c0, -+ 0x56aa, 0x2009, 0x0024, 0x0078, 0x5676, 0xa08c, 0xff00, 0xa18e, -+ 0x2400, 0x00c0, 0x5637, 0x2009, 0x002d, 0x0078, 0x5676, 0xa08c, -+ 0xff00, 0xa18e, 0x5300, 0x00c0, 0x5641, 0x2009, 0x002a, 0x0078, -+ 0x5676, 0xa08e, 0x0f00, 0x00c0, 0x5649, 0x2009, 0x0020, 0x0078, -+ 0x5676, 0xa08e, 0x5300, 0x00c0, 0x564f, 0x0078, 0x566c, 0xa08e, -+ 0x6104, 0x00c0, 0x566c, 0x2011, 0xab8d, 0x8208, 0x2204, 0xa082, -+ 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015, 0x211c, 0x8108, -+ 0x047e, 0x2124, 0x1078, 0x361b, 0x047f, 0x8108, 0x00f0, 0x565c, -+ 0x2009, 0x0023, 0x0078, 0x5676, 0xa08e, 0x6000, 0x00c0, 0x5674, -+ 0x2009, 0x003f, 0x0078, 0x5676, 0x2009, 0x001d, 0x017e, 0x2011, -+ 0xab83, 0x2204, 0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x56ac, -+ 0x1078, 0x455c, 0x00c0, 0x56ac, 0x6612, 0x6516, 0x86ff, 0x0040, -+ 0x569c, 0x017f, 0x017e, 0xa186, 0x0017, 0x00c0, 0x569c, 0x686c, -+ 0xa606, 0x00c0, 0x569c, 0x6870, 0xa506, 0xa084, 0xff00, 0x00c0, -+ 0x569c, 0x6000, 0xc0f5, 0x6002, 0x0c7e, 0x1078, 0x76c7, 0x0040, -+ 0x56af, 0x017f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0x017f, -+ 0x1078, 0x775c, 0x0c7f, 0x007c, 0x017f, 0x0078, 0x56aa, 0x0c7f, -+ 0x0078, 0x56ac, 0x0c7e, 0x1078, 0x570f, 0x00c0, 0x570d, 0xa28e, -+ 0x0033, 0x00c0, 0x56de, 0x1078, 0x591d, 0x0040, 0x570d, 0x7124, -+ 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x56d0, 0x7034, 0xa005, -+ 0x00c0, 0x570d, 0x2009, 0x0015, 0x1078, 0x775c, 0x0078, 0x570d, -+ 0xa08e, 0x0100, 0x00c0, 0x570d, 0x7034, 0xa005, 0x00c0, 0x570d, -+ 0x2009, 0x0016, 0x1078, 0x775c, 0x0078, 0x570d, 0xa28e, 0x0032, -+ 0x00c0, 0x570d, 0x7030, 0xa08e, 0x1400, 0x00c0, 0x570d, 0x2009, -+ 0x0038, 0x017e, 0x2011, 0xab83, 0x2204, 0x8211, 0x220c, 0x1078, -+ 0x254d, 0x00c0, 0x570c, 0x1078, 0x455c, 0x00c0, 0x570c, 0x6612, -+ 0x6516, 0x0c7e, 0x1078, 0x76c7, 0x0040, 0x570b, 0x017f, 0x611a, -+ 0x601f, 0x0004, 0x7120, 0x610a, 0x017f, 0x1078, 0x775c, 0x1078, -+ 0x62d1, 0x0078, 0x570d, 0x0c7f, 0x017f, 0x0c7f, 0x007c, 0x0f7e, -+ 0x0d7e, 0x027e, 0x017e, 0x137e, 0x147e, 0x157e, 0x3c00, 0x007e, -+ 0x2079, 0x0030, 0x2069, 0x0200, 0x1078, 0x1c6a, 0x00c0, 0x5750, -+ 0x1078, 0x1b40, 0x0040, 0x575d, 0x7908, 0xa18c, 0x1fff, 0xa182, -+ 0x0011, 0x00c8, 0x575a, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, -+ 0x2099, 0x020a, 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, -+ 0x7a0c, 0x7808, 0xa080, 0x0007, 0xa084, 0x1ff8, 0xa08a, 0x0140, -+ 0x10c8, 0x1332, 0x80ac, 0x20e1, 0x6000, 0x2099, 0x020a, 0x53a5, -+ 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, 0xa294, 0x0070, -+ 0x007f, 0x20e0, 0x157f, 0x147f, 0x137f, 0x017f, 0x027f, 0x0d7f, -+ 0x0f7f, 0x007c, 0xa016, 0x1078, 0x15fa, 0xa085, 0x0001, 0x0078, -+ 0x5750, 0x047e, 0x0e7e, 0x0d7e, 0x2028, 0x2130, 0xa696, 0x00ff, -+ 0x00c0, 0x5782, 0xa596, 0xfffd, 0x00c0, 0x5772, 0x2009, 0x007f, -+ 0x0078, 0x57b5, 0xa596, 0xfffe, 0x00c0, 0x577a, 0x2009, 0x007e, -+ 0x0078, 0x57b5, 0xa596, 0xfffc, 0x00c0, 0x5782, 0x2009, 0x0080, -+ 0x0078, 0x57b5, 0x2011, 0x0000, 0x2021, 0x0081, 0x20a9, 0x007e, -+ 0x2071, 0xa7b6, 0x2e1c, 0x83ff, 0x00c0, 0x5794, 0x82ff, 0x00c0, -+ 0x57a9, 0x2410, 0x0078, 0x57a9, 0x2368, 0x6f10, 0x007e, 0x2100, -+ 0xa706, 0x007f, 0x6b14, 0x00c0, 0x57a3, 0xa346, 0x00c0, 0x57a3, -+ 0x2408, 0x0078, 0x57b5, 0x87ff, 0x00c0, 0x57a9, 0x83ff, 0x0040, -+ 0x578e, 0x8420, 0x8e70, 0x00f0, 0x578a, 0x82ff, 0x00c0, 0x57b4, -+ 0xa085, 0x0001, 0x0078, 0x57b6, 0x2208, 0xa006, 0x0d7f, 0x0e7f, -+ 0x047f, 0x007c, 0xa084, 0x0007, 0x0079, 0x57bf, 0x007c, 0x57c7, -+ 0x57c7, 0x57c7, 0x5933, 0x57c7, 0x57c8, 0x57e1, 0x5858, 0x007c, -+ 0x7110, 0xd1bc, 0x0040, 0x57e0, 0x7120, 0x2160, 0xac8c, 0x000f, -+ 0x00c0, 0x57e0, 0xac8a, 0xad00, 0x0048, 0x57e0, 0x6858, 0xac02, -+ 0x00c8, 0x57e0, 0x7124, 0x610a, 0x2009, 0x0046, 0x1078, 0x775c, -+ 0x007c, 0x0c7e, 0xa484, 0x01ff, 0x0040, 0x5833, 0x7110, 0xd1bc, -+ 0x00c0, 0x5833, 0x2011, 0xab83, 0x2204, 0x8211, 0x220c, 0x1078, -+ 0x254d, 0x00c0, 0x5833, 0x1078, 0x455c, 0x00c0, 0x5833, 0x6612, -+ 0x6516, 0x6000, 0xd0ec, 0x00c0, 0x5833, 0x6204, 0xa294, 0xff00, -+ 0x8217, 0xa286, 0x0006, 0x00c0, 0x5818, 0x0c7e, 0x1078, 0x76c7, -+ 0x017f, 0x0040, 0x5835, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, -+ 0x7130, 0x6122, 0x2009, 0x0044, 0x1078, 0x775c, 0x0078, 0x5833, -+ 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x5833, 0x611a, 0x601f, -+ 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x582b, 0x6007, -+ 0x0005, 0x0078, 0x582d, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, -+ 0x5dd7, 0x1078, 0x62d1, 0x0c7f, 0x007c, 0x2001, 0xa60d, 0x2004, -+ 0xd0ec, 0x0040, 0x583f, 0x2011, 0x8049, 0x1078, 0x361b, 0x0c7e, -+ 0x1078, 0x9187, 0x017f, 0x0040, 0x5833, 0x611a, 0x601f, 0x0006, -+ 0x7120, 0x610a, 0x7130, 0x6122, 0x6013, 0x0300, 0x6003, 0x0001, -+ 0x6007, 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x5833, -+ 0x7110, 0xd1bc, 0x0040, 0x5870, 0x7020, 0x2060, 0xac84, 0x000f, -+ 0x00c0, 0x5870, 0xac82, 0xad00, 0x0048, 0x5870, 0x6858, 0xac02, -+ 0x00c8, 0x5870, 0x7124, 0x610a, 0x2009, 0x0045, 0x1078, 0x775c, -+ 0x007c, 0x007e, 0x1078, 0x29bb, 0x007f, 0x00c0, 0x5887, 0x7110, -+ 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x00c0, 0x5887, 0xa084, -+ 0x000f, 0xa08a, 0x0006, 0x00c8, 0x5887, 0x1079, 0x5888, 0x007c, -+ 0x588e, 0x588f, 0x588e, 0x588e, 0x58ff, 0x590e, 0x007c, 0x7110, -+ 0xd1bc, 0x0040, 0x5897, 0x702c, 0xd084, 0x0040, 0x58fe, 0x700c, -+ 0x7108, 0x1078, 0x254d, 0x00c0, 0x58fe, 0x1078, 0x455c, 0x00c0, -+ 0x58fe, 0x6612, 0x6516, 0x6204, 0x7110, 0xd1bc, 0x0040, 0x58c9, -+ 0xa28c, 0x00ff, 0xa186, 0x0004, 0x0040, 0x58b2, 0xa186, 0x0006, -+ 0x00c0, 0x58ef, 0x0c7e, 0x1078, 0x591d, 0x0c7f, 0x0040, 0x58fe, -+ 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f, -+ 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x1078, 0x775c, 0x0078, -+ 0x58fe, 0xa28c, 0x00ff, 0xa186, 0x0006, 0x0040, 0x58de, 0xa186, -+ 0x0004, 0x0040, 0x58de, 0xa294, 0xff00, 0x8217, 0xa286, 0x0004, -+ 0x0040, 0x58de, 0xa286, 0x0006, 0x00c0, 0x58ef, 0x0c7e, 0x1078, -+ 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f, 0x0005, 0x7120, -+ 0x610a, 0x2009, 0x0088, 0x1078, 0x775c, 0x0078, 0x58fe, 0x0c7e, -+ 0x1078, 0x76c7, 0x017f, 0x0040, 0x58fe, 0x611a, 0x601f, 0x0004, -+ 0x7120, 0x610a, 0x2009, 0x0001, 0x1078, 0x775c, 0x007c, 0x7110, -+ 0xd1bc, 0x0040, 0x590d, 0x1078, 0x591d, 0x0040, 0x590d, 0x7124, -+ 0x610a, 0x2009, 0x0089, 0x1078, 0x775c, 0x007c, 0x7110, 0xd1bc, -+ 0x0040, 0x591c, 0x1078, 0x591d, 0x0040, 0x591c, 0x7124, 0x610a, -+ 0x2009, 0x008a, 0x1078, 0x775c, 0x007c, 0x7020, 0x2060, 0xac84, -+ 0x000f, 0x00c0, 0x5930, 0xac82, 0xad00, 0x0048, 0x5930, 0x2001, -+ 0xa616, 0x2004, 0xac02, 0x00c8, 0x5930, 0xa085, 0x0001, 0x007c, -+ 0xa006, 0x0078, 0x592f, 0x7110, 0xd1bc, 0x00c0, 0x5949, 0x7024, -+ 0x2060, 0xac84, 0x000f, 0x00c0, 0x5949, 0xac82, 0xad00, 0x0048, -+ 0x5949, 0x6858, 0xac02, 0x00c8, 0x5949, 0x2009, 0x0051, 0x1078, -+ 0x775c, 0x007c, 0x2071, 0xa8c4, 0x7003, 0x0003, 0x700f, 0x0361, -+ 0xa006, 0x701a, 0x7012, 0x7017, 0xad00, 0x7007, 0x0000, 0x7026, -+ 0x702b, 0x6e1c, 0x7032, 0x7037, 0x6e70, 0x703b, 0x0002, 0x703f, -+ 0x0000, 0x7043, 0xffff, 0x7047, 0xffff, 0x007c, 0x2071, 0xa8c4, -+ 0x00e0, 0x5a32, 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x00c0, -+ 0x59de, 0x700f, 0x0361, 0x7007, 0x0001, 0x127e, 0x2091, 0x8000, -+ 0x7138, 0x8109, 0x713a, 0x00c0, 0x59dc, 0x703b, 0x0002, 0x2009, -+ 0x0100, 0x2104, 0xa082, 0x0003, 0x00c8, 0x59dc, 0x703c, 0xa086, -+ 0x0001, 0x00c0, 0x59b9, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, -+ 0x4000, 0x0040, 0x5997, 0x6803, 0x1000, 0x0078, 0x599e, 0x6804, -+ 0xa084, 0x1000, 0x0040, 0x599e, 0x6803, 0x0100, 0x6803, 0x0000, -+ 0x703f, 0x0000, 0x2069, 0xa8b1, 0x6804, 0xa082, 0x0006, 0x00c0, -+ 0x59ab, 0x6807, 0x0000, 0x6830, 0xa082, 0x0003, 0x00c0, 0x59b2, -+ 0x6833, 0x0000, 0x1078, 0x62d1, 0x1078, 0x639b, 0x0d7f, 0x0078, -+ 0x59dc, 0x0d7e, 0x2069, 0xa600, 0x6948, 0x6864, 0xa102, 0x00c8, -+ 0x59db, 0x2069, 0xa8b1, 0x6804, 0xa086, 0x0000, 0x00c0, 0x59db, -+ 0x6830, 0xa086, 0x0000, 0x00c0, 0x59db, 0x703f, 0x0001, 0x6807, -+ 0x0006, 0x6833, 0x0003, 0x2069, 0x0100, 0x6830, 0x689e, 0x2069, -+ 0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078, 0x59e1, 0x127e, 0x2091, -+ 0x8000, 0x7024, 0xa00d, 0x0040, 0x59f9, 0x7020, 0x8001, 0x7022, -+ 0x00c0, 0x59f9, 0x7023, 0x0009, 0x8109, 0x7126, 0xa186, 0x03e8, -+ 0x00c0, 0x59f4, 0x7028, 0x107a, 0x81ff, 0x00c0, 0x59f9, 0x7028, -+ 0x107a, 0x7030, 0xa00d, 0x0040, 0x5a10, 0x702c, 0x8001, 0x702e, -+ 0x00c0, 0x5a10, 0x702f, 0x0009, 0x8109, 0x7132, 0x0040, 0x5a0e, -+ 0xa184, 0x007f, 0x1040, 0x6ea2, 0x0078, 0x5a10, 0x7034, 0x107a, -+ 0x7040, 0xa005, 0x0040, 0x5a18, 0x0050, 0x5a18, 0x8001, 0x7042, -+ 0x7044, 0xa005, 0x0040, 0x5a20, 0x0050, 0x5a20, 0x8001, 0x7046, -+ 0x7018, 0xa00d, 0x0040, 0x5a31, 0x7008, 0x8001, 0x700a, 0x00c0, -+ 0x5a31, 0x700b, 0x0009, 0x8109, 0x711a, 0x00c0, 0x5a31, 0x701c, -+ 0x107a, 0x127f, 0x7004, 0x0079, 0x5a35, 0x5a5c, 0x5a5d, 0x5a79, -+ 0x0e7e, 0x2071, 0xa8c4, 0x7018, 0xa005, 0x00c0, 0x5a43, 0x711a, -+ 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071, -+ 0xa8c4, 0x701c, 0xa206, 0x00c0, 0x5a4f, 0x701a, 0x701e, 0x007f, -+ 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa8c4, 0x6088, 0xa102, 0x0048, -+ 0x5a5a, 0x618a, 0x0e7f, 0x007c, 0x007c, 0x7110, 0x1078, 0x45c4, -+ 0x00c0, 0x5a6f, 0x6088, 0x8001, 0x0048, 0x5a6f, 0x608a, 0x00c0, -+ 0x5a6f, 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x8108, -+ 0xa182, 0x00ff, 0x0048, 0x5a77, 0xa00e, 0x7007, 0x0002, 0x7112, -+ 0x007c, 0x7014, 0x2060, 0x127e, 0x2091, 0x8000, 0x603c, 0xa005, -+ 0x0040, 0x5a88, 0x8001, 0x603e, 0x00c0, 0x5a88, 0x1078, 0x8f9c, -+ 0x6014, 0xa005, 0x0040, 0x5ab2, 0x8001, 0x6016, 0x00c0, 0x5ab2, -+ 0x611c, 0xa186, 0x0003, 0x0040, 0x5a99, 0xa186, 0x0006, 0x00c0, -+ 0x5ab0, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0048, 0x5ab0, -+ 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048, 0x5aa9, 0x2001, -+ 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x0078, 0x5ab2, -+ 0x1078, 0x8abe, 0x127f, 0xac88, 0x0010, 0x7116, 0x2001, 0xcd00, -+ 0xa102, 0x0048, 0x5abf, 0x7017, 0xad00, 0x7007, 0x0000, 0x007c, -+ 0x0e7e, 0x2071, 0xa8c4, 0x7027, 0x07d0, 0x7023, 0x0009, 0x703b, -+ 0x0002, 0x0e7f, 0x007c, 0x2001, 0xa8cd, 0x2003, 0x0000, 0x007c, -+ 0x0e7e, 0x2071, 0xa8c4, 0x7132, 0x702f, 0x0009, 0x0e7f, 0x007c, -+ 0x2011, 0xa8d0, 0x2013, 0x0000, 0x007c, 0x0e7e, 0x2071, 0xa8c4, -+ 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x027e, 0x0e7e, -+ 0x0f7e, 0x2079, 0xa600, 0x7a34, 0xd294, 0x0040, 0x5b15, 0x2071, -+ 0xa8ac, 0x2e14, 0xa0fe, 0x0000, 0x0040, 0x5b02, 0xa0fe, 0x0001, -+ 0x0040, 0x5b06, 0xa0fe, 0x0002, 0x00c0, 0x5b11, 0xa292, 0x0085, -+ 0x0078, 0x5b08, 0xa292, 0x0005, 0x0078, 0x5b08, 0xa292, 0x0002, -+ 0x2272, 0x0040, 0x5b0d, 0x00c8, 0x5b15, 0x2011, 0x8037, 0x1078, -+ 0x361b, 0x2011, 0xa8ab, 0x2204, 0x2072, 0x0f7f, 0x0e7f, 0x027f, -+ 0x007c, 0x0c7e, 0x2061, 0xa933, 0x0c7f, 0x007c, 0xa184, 0x000f, -+ 0x8003, 0x8003, 0x8003, 0xa080, 0xa933, 0x2060, 0x007c, 0x6854, -+ 0xa08a, 0x199a, 0x0048, 0x5b2e, 0x2001, 0x1999, 0xa005, 0x00c0, -+ 0x5b3d, 0x0c7e, 0x2061, 0xa933, 0x6014, 0x0c7f, 0xa005, 0x00c0, -+ 0x5b42, 0x2001, 0x001e, 0x0078, 0x5b42, 0xa08e, 0xffff, 0x00c0, -+ 0x5b42, 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c, -+ 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x5b9e, 0xd0b4, 0x00c0, -+ 0x5b59, 0xd0bc, 0x00c0, 0x5b8b, 0x2009, 0x0006, 0x1078, 0x5bc3, -+ 0x007c, 0xd0fc, 0x0040, 0x5b64, 0xa084, 0x0003, 0x0040, 0x5b64, -+ 0xa086, 0x0003, 0x00c0, 0x5bbc, 0x6024, 0xd0d4, 0x0040, 0x5b6e, -+ 0xc0d4, 0x6026, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, 0xa674, -+ 0x2104, 0xd084, 0x0040, 0x5b83, 0x6118, 0xa188, 0x0027, 0x2104, -+ 0xd08c, 0x00c0, 0x5b83, 0x87ff, 0x00c0, 0x5b82, 0x2009, 0x0042, -+ 0x1078, 0x775c, 0x007c, 0x87ff, 0x00c0, 0x5b8a, 0x2009, 0x0043, -+ 0x1078, 0x775c, 0x007c, 0xd0fc, 0x0040, 0x5b96, 0xa084, 0x0003, -+ 0x0040, 0x5b96, 0xa086, 0x0003, 0x00c0, 0x5bbc, 0x87ff, 0x00c0, -+ 0x5b9d, 0x2009, 0x0042, 0x1078, 0x775c, 0x007c, 0xd0fc, 0x0040, -+ 0x5baf, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0040, 0x5bb3, 0x87ff, -+ 0x00c0, 0x5bae, 0x2009, 0x0041, 0x1078, 0x775c, 0x007c, 0x1078, -+ 0x5bc1, 0x0078, 0x5bae, 0x87ff, 0x00c0, 0x5bae, 0x2009, 0x0043, -+ 0x1078, 0x775c, 0x0078, 0x5bae, 0x2009, 0x0004, 0x1078, 0x5bc3, -+ 0x007c, 0x2009, 0x0001, 0x0d7e, 0x6010, 0xa0ec, 0xf000, 0x0040, -+ 0x5bef, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0, -+ 0x5be5, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x00c0, 0x5be5, -+ 0x0c7e, 0x2061, 0xa933, 0x6200, 0xd28c, 0x00c0, 0x5be4, 0x6204, -+ 0x8210, 0x0048, 0x5be4, 0x6206, 0x0c7f, 0x1078, 0x4a73, 0x6010, -+ 0xa06d, 0x077e, 0x2039, 0x0000, 0x10c0, 0x5b27, 0x077f, 0x0d7f, -+ 0x007c, 0x157e, 0x0c7e, 0x2061, 0xa933, 0x6000, 0x81ff, 0x0040, -+ 0x5bfc, 0xa205, 0x0078, 0x5bfd, 0xa204, 0x6002, 0x0c7f, 0x157f, -+ 0x007c, 0x6800, 0xd08c, 0x00c0, 0x5c0d, 0x6808, 0xa005, 0x0040, -+ 0x5c0d, 0x8001, 0x680a, 0xa085, 0x0001, 0x007c, 0x20a9, 0x0010, -+ 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x5c17, 0xa200, 0x00f0, -+ 0x5c12, 0x8086, 0x818e, 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, -+ 0x0040, 0x5c3d, 0xa11a, 0x00c8, 0x5c3d, 0x8213, 0x818d, 0x0048, -+ 0x5c30, 0xa11a, 0x00c8, 0x5c31, 0x00f0, 0x5c25, 0x0078, 0x5c35, -+ 0xa11a, 0x2308, 0x8210, 0x00f0, 0x5c25, 0x007e, 0x3200, 0xa084, -+ 0xf7ff, 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, -+ 0x0800, 0x0078, 0x5c39, 0x127e, 0x2091, 0x2200, 0x2079, 0xa8b1, -+ 0x127f, 0x0d7e, 0x2069, 0xa8b1, 0x6803, 0x0005, 0x2069, 0x0004, -+ 0x2d04, 0xa085, 0x8001, 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027, -+ 0x0001, 0x7804, 0xa084, 0x0007, 0x0079, 0x5c5e, 0x5c68, 0x5c8d, -+ 0x5ce8, 0x5c6e, 0x5c8d, 0x5c68, 0x5c66, 0x5c66, 0x1078, 0x1332, -+ 0x1078, 0x5acb, 0x1078, 0x62d1, 0x0c7f, 0x007c, 0x62c0, 0x82ff, -+ 0x00c0, 0x5c74, 0x0c7f, 0x007c, 0x2011, 0x41dc, 0x1078, 0x5a45, -+ 0x7828, 0xa092, 0x00c8, 0x00c8, 0x5c83, 0x8000, 0x782a, 0x1078, -+ 0x421b, 0x0078, 0x5c72, 0x1078, 0x41dc, 0x7807, 0x0003, 0x7827, -+ 0x0000, 0x782b, 0x0000, 0x0078, 0x5c72, 0x1078, 0x5acb, 0x3c00, -+ 0x007e, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x007f, 0x20e0, -+ 0x82ff, 0x0040, 0x5cab, 0x62c0, 0x82ff, 0x00c0, 0x5cab, 0x782b, -+ 0x0000, 0x7824, 0xa065, 0x1040, 0x1332, 0x2009, 0x0013, 0x1078, -+ 0x775c, 0x0c7f, 0x007c, 0x3900, 0xa082, 0xa9e3, 0x00c8, 0x5cb2, -+ 0x1078, 0x747a, 0x0c7e, 0x7824, 0xa065, 0x1040, 0x1332, 0x7804, -+ 0xa086, 0x0004, 0x0040, 0x5d2d, 0x7828, 0xa092, 0x2710, 0x00c8, -+ 0x5cc8, 0x8000, 0x782a, 0x0c7f, 0x1078, 0x6e01, 0x0078, 0x5ca9, -+ 0x6104, 0xa186, 0x0003, 0x00c0, 0x5cdf, 0x0e7e, 0x2071, 0xa600, -+ 0x70d8, 0x0e7f, 0xd08c, 0x0040, 0x5cdf, 0x0c7e, 0x0e7e, 0x2061, -+ 0x0100, 0x2071, 0xa600, 0x1078, 0x4224, 0x0e7f, 0x0c7f, 0x1078, -+ 0xa5c4, 0x2009, 0x0014, 0x1078, 0x775c, 0x0c7f, 0x0078, 0x5ca9, -+ 0x2001, 0xa8cd, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x00c0, 0x5cfc, -+ 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x1332, 0x2009, 0x0013, -+ 0x1078, 0x77b3, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x3900, 0xa082, -+ 0xa9e3, 0x00c8, 0x5d05, 0x1078, 0x747a, 0x7824, 0xa005, 0x1040, -+ 0x1332, 0x781c, 0xa06d, 0x1040, 0x1332, 0x6800, 0xc0dc, 0x6802, -+ 0x7924, 0x2160, 0x1078, 0x772d, 0x693c, 0x81ff, 0x1040, 0x1332, -+ 0x8109, 0x693e, 0x6854, 0xa015, 0x0040, 0x5d21, 0x7a1e, 0x0078, -+ 0x5d23, 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x0d7f, -+ 0x0c7f, 0x1078, 0x62d1, 0x0078, 0x5cfa, 0x6104, 0xa186, 0x0002, -+ 0x0040, 0x5d38, 0xa186, 0x0004, 0x0040, 0x5d38, 0x0078, 0x5cbc, -+ 0x7808, 0xac06, 0x0040, 0x5cbc, 0x1078, 0x61cd, 0x1078, 0x5dd7, -+ 0x0c7f, 0x1078, 0x62d1, 0x0078, 0x5ca9, 0x0c7e, 0x6027, 0x0002, -+ 0x62c8, 0x82ff, 0x00c0, 0x5d61, 0x62c4, 0x82ff, 0x00c0, 0x5d61, -+ 0x793c, 0xa1e5, 0x0000, 0x0040, 0x5d5b, 0x2009, 0x0049, 0x1078, -+ 0x775c, 0x0c7f, 0x007c, 0x2011, 0xa8d0, 0x2013, 0x0000, 0x0078, -+ 0x5d59, 0x3908, 0xa192, 0xa9e3, 0x00c8, 0x5d68, 0x1078, 0x747a, -+ 0x6017, 0x0010, 0x793c, 0x81ff, 0x0040, 0x5d5b, 0x7944, 0xa192, -+ 0x7530, 0x00c8, 0x5d85, 0x8108, 0x7946, 0x793c, 0xa188, 0x0007, -+ 0x210c, 0xa18e, 0x0006, 0x00c0, 0x5d81, 0x6017, 0x0012, 0x0078, -+ 0x5d59, 0x6017, 0x0016, 0x0078, 0x5d59, 0x7848, 0xc085, 0x784a, -+ 0x0078, 0x5d59, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, -+ 0x600f, 0x0000, 0x2c08, 0x2061, 0xa8b1, 0x6020, 0x8000, 0x6022, -+ 0x6010, 0xa005, 0x0040, 0x5da5, 0xa080, 0x0003, 0x2102, 0x6112, -+ 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x6116, 0x6112, 0x0078, -+ 0x5da0, 0x0d7e, 0x2069, 0xa8b1, 0x6000, 0xd0d4, 0x0040, 0x5dbe, -+ 0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x00c0, 0x5db9, 0x2c00, -+ 0x681e, 0x6804, 0xa084, 0x0007, 0x0079, 0x62d9, 0xc0d5, 0x6002, -+ 0x6818, 0xa005, 0x0040, 0x5dd0, 0x6056, 0x605b, 0x0000, 0x007e, -+ 0x2c00, 0x681a, 0x0d7f, 0x685a, 0x2069, 0xa8b1, 0x0078, 0x5db0, -+ 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078, 0x5db0, 0x007e, -+ 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, -+ 0x2061, 0xa8b1, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0040, -+ 0x5df2, 0xa080, 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f, -+ 0x007f, 0x007c, 0x610e, 0x610a, 0x0078, 0x5ded, 0x0c7e, 0x600f, -+ 0x0000, 0x2c08, 0x2061, 0xa8b1, 0x6034, 0xa005, 0x0040, 0x5e06, -+ 0xa080, 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136, -+ 0x0078, 0x5e04, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x057e, -+ 0x037e, 0x027e, 0x017e, 0x007e, 0x127e, 0xa02e, 0x2071, 0xa8b1, -+ 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x5e8c, -+ 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x5e87, 0x87ff, -+ 0x0040, 0x5e2e, 0x6020, 0xa106, 0x00c0, 0x5e87, 0x703c, 0xac06, -+ 0x00c0, 0x5e44, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x7033, -+ 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, -+ 0x0000, 0x037f, 0x2029, 0x0001, 0x7038, 0xac36, 0x00c0, 0x5e4a, -+ 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5e58, 0x2c00, 0xaf36, -+ 0x0040, 0x5e56, 0x2f00, 0x7036, 0x0078, 0x5e58, 0x7037, 0x0000, -+ 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5e61, 0x7e0e, 0x0078, -+ 0x5e62, 0x2678, 0x600f, 0x0000, 0x1078, 0x8d06, 0x0040, 0x5e82, -+ 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5e9d, 0x6837, -+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x017e, 0x037e, 0x077e, 0x1078, -+ 0x8f7d, 0x1078, 0xa4e2, 0x1078, 0x4a73, 0x077f, 0x037f, 0x017f, -+ 0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x5e1d, 0x2c78, -+ 0x600c, 0x2060, 0x0078, 0x5e1d, 0x85ff, 0x0040, 0x5e91, 0x1078, -+ 0x639b, 0x127f, 0x007f, 0x017f, 0x027f, 0x037f, 0x057f, 0x067f, -+ 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, -+ 0x00c0, 0x5e6f, 0x017e, 0x037e, 0x077e, 0x1078, 0xa4e2, 0x1078, -+ 0xa1ca, 0x077f, 0x037f, 0x017f, 0x0078, 0x5e82, 0x007e, 0x067e, -+ 0x0c7e, 0x0d7e, 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091, 0x8000, -+ 0x2079, 0xa8b1, 0x7838, 0xa065, 0x0040, 0x5eef, 0x600c, 0x007e, -+ 0x600f, 0x0000, 0x783c, 0xac06, 0x00c0, 0x5ed6, 0x037e, 0x2019, -+ 0x0001, 0x1078, 0x7058, 0x7833, 0x0000, 0x783f, 0x0000, 0x7843, -+ 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, 0x037f, 0x1078, 0x8d06, -+ 0x0040, 0x5eea, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, -+ 0x5ef8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73, -+ 0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x007f, 0x0078, 0x5ebb, 0x7e3a, -+ 0x7e36, 0x127f, 0x0f7f, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, -+ 0x601c, 0xa086, 0x0006, 0x00c0, 0x5ee1, 0x1078, 0xa1ca, 0x0078, -+ 0x5eea, 0x017e, 0x027e, 0x087e, 0x2041, 0x0000, 0x1078, 0x5f1b, -+ 0x1078, 0x5fdb, 0x087f, 0x027f, 0x017f, 0x007c, 0x0f7e, 0x127e, -+ 0x2079, 0xa8b1, 0x2091, 0x8000, 0x1078, 0x6076, 0x1078, 0x60ec, -+ 0x127f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, -+ 0x017e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x7614, -+ 0x2660, 0x2678, 0x8cff, 0x0040, 0x5fb5, 0x6018, 0xa080, 0x0028, -+ 0x2004, 0xa206, 0x00c0, 0x5fb0, 0x88ff, 0x0040, 0x5f3b, 0x6020, -+ 0xa106, 0x00c0, 0x5fb0, 0x7024, 0xac06, 0x00c0, 0x5f6b, 0x2069, -+ 0x0100, 0x68c0, 0xa005, 0x0040, 0x5f66, 0x1078, 0x5acb, 0x1078, -+ 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7027, 0x0000, 0x037e, -+ 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x5f5b, 0x6803, -+ 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, -+ 0x5f63, 0x6827, 0x0001, 0x037f, 0x0078, 0x5f6b, 0x6003, 0x0009, -+ 0x630a, 0x0078, 0x5fb0, 0x7014, 0xac36, 0x00c0, 0x5f71, 0x660c, -+ 0x7616, 0x7010, 0xac36, 0x00c0, 0x5f7f, 0x2c00, 0xaf36, 0x0040, -+ 0x5f7d, 0x2f00, 0x7012, 0x0078, 0x5f7f, 0x7013, 0x0000, 0x660c, -+ 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5f88, 0x7e0e, 0x0078, 0x5f89, -+ 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, -+ 0x5fa9, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5fbe, 0x6837, 0x0103, -+ 0x6b4a, 0x6847, 0x0000, 0x017e, 0x037e, 0x087e, 0x1078, 0x8f7d, -+ 0x1078, 0xa4e2, 0x1078, 0x4a73, 0x087f, 0x037f, 0x017f, 0x1078, -+ 0x8eb9, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x0c7f, 0x0078, 0x5f2a, -+ 0x2c78, 0x600c, 0x2060, 0x0078, 0x5f2a, 0x127f, 0x007f, 0x017f, -+ 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, -+ 0x0006, 0x00c0, 0x5fcf, 0x017e, 0x037e, 0x087e, 0x1078, 0xa4e2, -+ 0x1078, 0xa1ca, 0x087f, 0x037f, 0x017f, 0x0078, 0x5fa9, 0x601c, -+ 0xa086, 0x0002, 0x00c0, 0x5fa9, 0x6004, 0xa086, 0x0085, 0x0040, -+ 0x5f96, 0x0078, 0x5fa9, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, -+ 0xa280, 0xa735, 0x2004, 0xa065, 0x0040, 0x6072, 0x0f7e, 0x0e7e, -+ 0x0d7e, 0x067e, 0x2071, 0xa8b1, 0x6654, 0x7018, 0xac06, 0x00c0, -+ 0x5ff2, 0x761a, 0x701c, 0xac06, 0x00c0, 0x5ffe, 0x86ff, 0x00c0, -+ 0x5ffd, 0x7018, 0x701e, 0x0078, 0x5ffe, 0x761e, 0x6058, 0xa07d, -+ 0x0040, 0x6003, 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x6009, 0x2f00, -+ 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, -+ 0x6002, 0x1078, 0x44d3, 0x0040, 0x606e, 0x7624, 0x86ff, 0x0040, -+ 0x605c, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x605c, 0x0d7e, -+ 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x6053, 0x1078, 0x5acb, -+ 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7027, 0x0000, -+ 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x603c, -+ 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, -+ 0x0040, 0x6044, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, -+ 0xa005, 0x0040, 0x604d, 0x8001, 0x603e, 0x2660, 0x1078, 0x8ec6, -+ 0x0c7f, 0x0078, 0x605c, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, -+ 0x630a, 0x0c7f, 0x0078, 0x6011, 0x8dff, 0x0040, 0x606a, 0x6837, -+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x8f7d, 0x1078, 0xa4e2, -+ 0x1078, 0x4a73, 0x1078, 0x7233, 0x0078, 0x6011, 0x067f, 0x0d7f, -+ 0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f, 0x007c, 0x007e, 0x067e, -+ 0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814, 0xa065, 0x0040, 0x60d0, -+ 0x600c, 0x007e, 0x600f, 0x0000, 0x7824, 0xac06, 0x00c0, 0x60b5, -+ 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x60af, 0x1078, 0x5acb, -+ 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, 0x7827, 0x0000, -+ 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x60a4, -+ 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, -+ 0x0040, 0x60ac, 0x6827, 0x0001, 0x037f, 0x0078, 0x60b5, 0x6003, -+ 0x0009, 0x630a, 0x2c30, 0x0078, 0x60cd, 0x6010, 0x2068, 0x1078, -+ 0x8d06, 0x0040, 0x60c9, 0x601c, 0xa086, 0x0003, 0x00c0, 0x60d7, -+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078, -+ 0x8eb9, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x007f, 0x0078, 0x607d, -+ 0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c, -+ 0xa086, 0x0006, 0x00c0, 0x60e0, 0x1078, 0xa1ca, 0x0078, 0x60c9, -+ 0x601c, 0xa086, 0x0002, 0x00c0, 0x60c9, 0x6004, 0xa086, 0x0085, -+ 0x0040, 0x60c0, 0x0078, 0x60c9, 0x007e, 0x067e, 0x0c7e, 0x0d7e, -+ 0x7818, 0xa065, 0x0040, 0x615a, 0x6054, 0x007e, 0x6057, 0x0000, -+ 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x44d3, -+ 0x0040, 0x6157, 0x7e24, 0x86ff, 0x0040, 0x6149, 0xa680, 0x0004, -+ 0x2004, 0xad06, 0x00c0, 0x6149, 0x0d7e, 0x2069, 0x0100, 0x68c0, -+ 0xa005, 0x0040, 0x6140, 0x1078, 0x5acb, 0x1078, 0x6e0f, 0x68c3, -+ 0x0000, 0x1078, 0x7378, 0x7827, 0x0000, 0x037e, 0x2069, 0x0140, -+ 0x6b04, 0xa384, 0x1000, 0x0040, 0x6129, 0x6803, 0x0100, 0x6803, -+ 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x6131, 0x6827, -+ 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x613a, -+ 0x8001, 0x603e, 0x2660, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x6149, -+ 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078, -+ 0x60fe, 0x8dff, 0x0040, 0x6153, 0x6837, 0x0103, 0x6b4a, 0x6847, -+ 0x0000, 0x1078, 0x4a73, 0x1078, 0x7233, 0x0078, 0x60fe, 0x007f, -+ 0x0078, 0x60f1, 0x781e, 0x781a, 0x0d7f, 0x0c7f, 0x067f, 0x007f, -+ 0x007c, 0x0e7e, 0x0d7e, 0x067e, 0x6000, 0xd0dc, 0x0040, 0x6181, -+ 0x604c, 0xa06d, 0x0040, 0x6181, 0x6848, 0xa606, 0x00c0, 0x6181, -+ 0x2071, 0xa8b1, 0x7024, 0xa035, 0x0040, 0x6181, 0xa080, 0x0004, -+ 0x2004, 0xad06, 0x00c0, 0x6181, 0x6000, 0xc0dc, 0x6002, 0x1078, -+ 0x6185, 0x067f, 0x0d7f, 0x0e7f, 0x007c, 0x0f7e, 0x2079, 0x0100, -+ 0x78c0, 0xa005, 0x00c0, 0x6194, 0x0c7e, 0x2660, 0x6003, 0x0009, -+ 0x630a, 0x0c7f, 0x0078, 0x61cb, 0x1078, 0x6e0f, 0x78c3, 0x0000, -+ 0x1078, 0x7378, 0x7027, 0x0000, 0x037e, 0x2079, 0x0140, 0x7b04, -+ 0xa384, 0x1000, 0x0040, 0x61a8, 0x7803, 0x0100, 0x7803, 0x0000, -+ 0x2079, 0x0100, 0x7824, 0xd084, 0x0040, 0x61b0, 0x7827, 0x0001, -+ 0x1078, 0x7378, 0x037f, 0x1078, 0x44d3, 0x0c7e, 0x603c, 0xa005, -+ 0x0040, 0x61bc, 0x8001, 0x603e, 0x2660, 0x1078, 0x772d, 0x0c7f, -+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x8f7d, 0x1078, -+ 0x4a73, 0x1078, 0x7233, 0x0f7f, 0x007c, 0x0e7e, 0x0c7e, 0x2071, -+ 0xa8b1, 0x7004, 0xa084, 0x0007, 0x0079, 0x61d6, 0x61e0, 0x61e3, -+ 0x61fc, 0x6218, 0x6262, 0x61e0, 0x61e0, 0x61de, 0x1078, 0x1332, -+ 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x61f1, 0x7020, -+ 0x8001, 0x7022, 0x600c, 0xa015, 0x0040, 0x61f8, 0x7216, 0x600f, -+ 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, -+ 0x7216, 0x7212, 0x0078, 0x61f1, 0x6018, 0x2060, 0x1078, 0x44d3, -+ 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0040, 0x620d, -+ 0x6054, 0xa015, 0x0040, 0x6214, 0x721e, 0x7007, 0x0000, 0x7027, -+ 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7218, 0x721e, 0x0078, 0x620d, -+ 0x7024, 0xa065, 0x0040, 0x625f, 0x700c, 0xac06, 0x00c0, 0x622f, -+ 0x1078, 0x7233, 0x600c, 0xa015, 0x0040, 0x622b, 0x720e, 0x600f, -+ 0x0000, 0x0078, 0x625d, 0x720e, 0x720a, 0x0078, 0x625d, 0x7014, -+ 0xac06, 0x00c0, 0x6242, 0x1078, 0x7233, 0x600c, 0xa015, 0x0040, -+ 0x623e, 0x7216, 0x600f, 0x0000, 0x0078, 0x625d, 0x7216, 0x7212, -+ 0x0078, 0x625d, 0x601c, 0xa086, 0x0003, 0x00c0, 0x625d, 0x6018, -+ 0x2060, 0x1078, 0x44d3, 0x6000, 0xc0dc, 0x6002, 0x1078, 0x7233, -+ 0x701c, 0xa065, 0x0040, 0x625d, 0x6054, 0xa015, 0x0040, 0x625b, -+ 0x721e, 0x0078, 0x625d, 0x7218, 0x721e, 0x7027, 0x0000, 0x0c7f, -+ 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x626f, 0x1078, 0x7233, -+ 0x600c, 0xa015, 0x0040, 0x6276, 0x720e, 0x600f, 0x0000, 0x1078, -+ 0x7378, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x720e, 0x720a, -+ 0x0078, 0x626f, 0x0d7e, 0x2069, 0xa8b1, 0x6830, 0xa084, 0x0003, -+ 0x0079, 0x6282, 0x6288, 0x628a, 0x62b4, 0x6288, 0x1078, 0x1332, -+ 0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001, 0x0040, 0x62aa, -+ 0x683c, 0xa065, 0x0040, 0x629b, 0x600c, 0xa015, 0x0040, 0x62a6, -+ 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011, -+ 0xa8d0, 0x2013, 0x0000, 0x0c7f, 0x0d7f, 0x007c, 0x683a, 0x6836, -+ 0x0078, 0x629b, 0x6843, 0x0000, 0x6838, 0xa065, 0x0040, 0x629b, -+ 0x6003, 0x0003, 0x0078, 0x629b, 0x0c7e, 0x6843, 0x0000, 0x6847, -+ 0x0000, 0x684b, 0x0000, 0x683c, 0xa065, 0x0040, 0x62ce, 0x600c, -+ 0xa015, 0x0040, 0x62ca, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, -+ 0x0078, 0x62ce, 0x683f, 0x0000, 0x683a, 0x6836, 0x0c7f, 0x0d7f, -+ 0x007c, 0x0d7e, 0x2069, 0xa8b1, 0x6804, 0xa084, 0x0007, 0x0079, -+ 0x62d9, 0x62e3, 0x638a, 0x638a, 0x638a, 0x638a, 0x638c, 0x638a, -+ 0x62e1, 0x1078, 0x1332, 0x6820, 0xa005, 0x00c0, 0x62e9, 0x0d7f, -+ 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x62f8, 0x6807, 0x0004, -+ 0x6826, 0x682b, 0x0000, 0x1078, 0x63d4, 0x0c7f, 0x0d7f, 0x007c, -+ 0x6814, 0xa065, 0x0040, 0x6306, 0x6807, 0x0001, 0x6826, 0x682b, -+ 0x0000, 0x1078, 0x63d4, 0x0c7f, 0x0d7f, 0x007c, 0x0e7e, 0x037e, -+ 0x6a1c, 0xa2f5, 0x0000, 0x0040, 0x6385, 0x704c, 0xa00d, 0x0040, -+ 0x6315, 0x7088, 0xa005, 0x0040, 0x632d, 0x7054, 0xa075, 0x0040, -+ 0x631e, 0xa20e, 0x0040, 0x6385, 0x0078, 0x6323, 0x6818, 0xa20e, -+ 0x0040, 0x6385, 0x2070, 0x704c, 0xa00d, 0x0040, 0x6315, 0x7088, -+ 0xa005, 0x00c0, 0x6315, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, -+ 0x00c8, 0x6315, 0x1078, 0x76fc, 0x0040, 0x6385, 0x8318, 0x733e, -+ 0x6112, 0x2e10, 0x621a, 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, -+ 0x6032, 0xa180, 0x0014, 0x2003, 0x0000, 0xa180, 0x0015, 0x2004, -+ 0xa08a, 0x199a, 0x0048, 0x634e, 0x2001, 0x1999, 0x8003, 0x801b, -+ 0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78, 0x71a0, 0xd1bc, -+ 0x0040, 0x6367, 0x7100, 0xd1f4, 0x0040, 0x6363, 0x7114, 0xa18c, -+ 0x00ff, 0x0078, 0x636c, 0x2009, 0x0000, 0x0078, 0x636c, 0xa1e0, -+ 0x29c0, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x1078, -+ 0x6965, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, -+ 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, -+ 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, 0x037f, 0x0e7f, 0x0c7f, -+ 0x0078, 0x6383, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, -+ 0x6398, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x63d4, -+ 0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, 0x2069, 0xa8b1, 0x6830, -+ 0xa086, 0x0000, 0x00c0, 0x63bb, 0x6838, 0xa07d, 0x0040, 0x63bb, -+ 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x127e, -+ 0x0f7e, 0x2091, 0x2200, 0x027f, 0x1078, 0x1d6d, 0x00c0, 0x63be, -+ 0x127f, 0x1078, 0x6cb3, 0x0d7f, 0x0f7f, 0x007c, 0x127f, 0x6843, -+ 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0040, 0x63d0, 0x6a3a, -+ 0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x63bb, -+ 0x683a, 0x6836, 0x0078, 0x63ca, 0x601c, 0xa084, 0x000f, 0x1079, -+ 0x63da, 0x007c, 0x63e3, 0x63e8, 0x6809, 0x6922, 0x63e8, 0x6809, -+ 0x6922, 0x63e3, 0x63e8, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x007c, -+ 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0044, -+ 0x10c8, 0x1332, 0x6118, 0x2178, 0x79a0, 0xd1bc, 0x0040, 0x6405, -+ 0x7900, 0xd1f4, 0x0040, 0x6401, 0x7914, 0xa18c, 0x00ff, 0x0078, -+ 0x640a, 0x2009, 0x0000, 0x0078, 0x640a, 0xa1f8, 0x29c0, 0x2f0c, -+ 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa08a, 0x0040, -+ 0x00c8, 0x645c, 0x1079, 0x641a, 0x0f7f, 0x0c7f, 0x147f, 0x137f, -+ 0x157f, 0x007c, 0x64c2, 0x650a, 0x6532, 0x65cd, 0x65fd, 0x6605, -+ 0x662c, 0x663d, 0x664e, 0x6656, 0x666e, 0x6656, 0x66d9, 0x663d, -+ 0x66fa, 0x6702, 0x664e, 0x6702, 0x6713, 0x645a, 0x645a, 0x645a, -+ 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, 0x645a, -+ 0x6eef, 0x6f14, 0x6f29, 0x6f4c, 0x6f6d, 0x662c, 0x645a, 0x662c, -+ 0x6656, 0x645a, 0x6532, 0x65cd, 0x645a, 0x749c, 0x6656, 0x645a, -+ 0x74bc, 0x6656, 0x645a, 0x645a, 0x64bd, 0x646b, 0x645a, 0x74e1, -+ 0x7558, 0x7640, 0x645a, 0x7651, 0x6626, 0x766d, 0x645a, 0x6f82, -+ 0x645a, 0x645a, 0x1078, 0x1332, 0x2100, 0x1079, 0x6465, 0x0f7f, -+ 0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c, 0x6469, 0x6469, 0x6469, -+ 0x649f, 0x1078, 0x1332, 0x0d7e, 0x20a1, 0x020b, 0x1078, 0x6731, -+ 0x7810, 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, 0x20a3, 0x0800, -+ 0x683c, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x6dfb, 0x0d7f, 0x007c, -+ 0x0d7e, 0x7818, 0x2068, 0x68a0, 0xa082, 0x007e, 0x0048, 0x649c, -+ 0xa085, 0x0001, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x649a, 0x0d7e, -+ 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x0500, 0x20a3, 0x0000, -+ 0x7810, 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, 0x20a2, 0x6810, -+ 0x20a2, 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, 0x20a2, 0x60c3, -+ 0x0010, 0x1078, 0x6dfb, 0x0d7f, 0x007c, 0x6030, 0x609a, 0x1078, -+ 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x5200, -+ 0x20a3, 0x0000, 0x0d7e, 0x2069, 0xa652, 0x6804, 0xd084, 0x0040, -+ 0x64dc, 0x6828, 0x20a3, 0x0000, 0x017e, 0x1078, 0x2564, 0x21a2, -+ 0x017f, 0x0d7f, 0x0078, 0x64e1, 0x0d7f, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x20a9, 0x0004, -+ 0x2099, 0xa601, 0x53a6, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, -+ 0x007f, 0x0048, 0x64fb, 0x2001, 0xa61b, 0x20a6, 0x2001, 0xa61c, -+ 0x20a6, 0x0078, 0x6501, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, -+ 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, -+ 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x0500, -+ 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f, -+ 0x0048, 0x6522, 0x2001, 0xa61b, 0x20a6, 0x2001, 0xa61c, 0x20a6, -+ 0x0078, 0x6528, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2, -+ 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x60c3, 0x0010, 0x1078, -+ 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x6731, 0x0c7e, 0x7818, -+ 0x2060, 0x2001, 0x0000, 0x1078, 0x4972, 0x0c7f, 0x7818, 0xa080, -+ 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, 0x654d, 0x20a3, 0x0400, -+ 0x620c, 0xc2b4, 0x620e, 0x0078, 0x654f, 0x20a3, 0x0300, 0x20a3, -+ 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, -+ 0x659c, 0x2099, 0xa88d, 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304, -+ 0xa084, 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, -+ 0xa605, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xa601, 0x53a6, 0x20a9, -+ 0x0010, 0x20a3, 0x0000, 0x00f0, 0x6579, 0x2099, 0xa895, 0x3304, -+ 0xc0dd, 0x20a2, 0x2001, 0xa672, 0x2004, 0xd0e4, 0x0040, 0x6594, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x9398, 0x9398, 0x9398, 0x33a6, -+ 0x20a9, 0x0004, 0x0078, 0x6596, 0x20a9, 0x0007, 0x20a3, 0x0000, -+ 0x00f0, 0x6596, 0x0078, 0x65bc, 0x2099, 0xa88d, 0x20a9, 0x0008, -+ 0x53a6, 0x20a9, 0x0004, 0x2099, 0xa605, 0x53a6, 0x20a9, 0x0004, -+ 0x2099, 0xa601, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, -+ 0x65ad, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x65b3, 0x2099, -+ 0xa895, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, -+ 0x00f0, 0x65be, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x65c4, -+ 0x60c3, 0x0074, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, -+ 0x6731, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, -+ 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, -+ 0x2079, 0xa652, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x65e9, 0xa085, -+ 0x0020, 0xd1a4, 0x0040, 0x65ee, 0xa085, 0x0010, 0xa085, 0x0002, -+ 0x0d7e, 0x0078, 0x66b7, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, -+ 0x6731, 0x20a3, 0x5000, 0x0078, 0x654f, 0x20a1, 0x020b, 0x1078, -+ 0x6731, 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, -+ 0x1078, 0x67b9, 0x0078, 0x6630, 0x20a1, 0x020b, 0x1078, 0x67c2, -+ 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0004, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, -+ 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, -+ 0x2a00, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, -+ 0x1078, 0x67c2, 0x20a3, 0x0200, 0x0078, 0x654f, 0x20a1, 0x020b, -+ 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0xa005, -+ 0x0040, 0x6665, 0x20a2, 0x0078, 0x6667, 0x20a3, 0x0003, 0x7810, -+ 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x0d7e, 0x20a1, -+ 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, -+ 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0, 0x6694, -+ 0x6998, 0xa184, 0xc000, 0x00c0, 0x6690, 0xd1ec, 0x0040, 0x668c, -+ 0x20a3, 0x2100, 0x0078, 0x6696, 0x20a3, 0x0100, 0x0078, 0x6696, -+ 0x20a3, 0x0400, 0x0078, 0x6696, 0x20a3, 0x0700, 0xa006, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0xa652, 0x7904, -+ 0x0f7f, 0xd1ac, 0x00c0, 0x66a6, 0xa085, 0x0020, 0xd1a4, 0x0040, -+ 0x66ab, 0xa085, 0x0010, 0x2009, 0xa674, 0x210c, 0xd184, 0x0040, -+ 0x66b5, 0x699c, 0xd18c, 0x0040, 0x66b7, 0xa085, 0x0002, 0x027e, -+ 0x2009, 0xa672, 0x210c, 0xd1e4, 0x0040, 0x66c5, 0xc0c5, 0xa094, -+ 0x0030, 0xa296, 0x0010, 0x0040, 0x66cf, 0xd1ec, 0x0040, 0x66cf, -+ 0xa094, 0x0030, 0xa296, 0x0010, 0x0040, 0x66cf, 0xc0bd, 0x027f, -+ 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x1078, 0x6dfb, 0x0d7f, -+ 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0210, 0x20a3, -+ 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, -+ 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0200, -+ 0x0078, 0x64c8, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100, -+ 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, -+ 0x1078, 0x6dfb, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, -+ 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, -+ 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, -+ 0x027e, 0x037e, 0x047e, 0x2019, 0x3200, 0x2021, 0x0800, 0x0078, -+ 0x6738, 0x027e, 0x037e, 0x047e, 0x2019, 0x2200, 0x2021, 0x0100, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014, -+ 0xa286, 0x007e, 0x00c0, 0x674b, 0xa385, 0x00ff, 0x20a2, 0x20a3, -+ 0xfffe, 0x0078, 0x6780, 0xa286, 0x007f, 0x00c0, 0x6757, 0x0d7e, -+ 0xa385, 0x00ff, 0x20a2, 0x20a3, 0xfffd, 0x0078, 0x676e, 0xd2bc, -+ 0x0040, 0x6776, 0xa286, 0x0080, 0x0d7e, 0x00c0, 0x6766, 0xa385, -+ 0x00ff, 0x20a2, 0x20a3, 0xfffc, 0x0078, 0x676e, 0xa2e8, 0xa735, -+ 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6784, 0x0d7e, 0xa2e8, -+ 0xa735, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x0d7f, -+ 0x20a3, 0x0000, 0x6230, 0x22a2, 0xa485, 0x0029, 0x20a2, 0x047f, -+ 0x037f, 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, -+ 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, -+ 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff, -+ 0x2011, 0xfffc, 0x22a2, 0x0d7e, 0x2069, 0xa61b, 0x2da6, 0x8d68, -+ 0x2da6, 0x0d7f, 0x20a3, 0x2029, 0x20a3, 0x0000, 0x0078, 0x678b, -+ 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02, 0x20a3, 0x0000, -+ 0x007c, 0x027e, 0x037e, 0x047e, 0x2019, 0x3300, 0x2021, 0x0800, -+ 0x0078, 0x67c9, 0x027e, 0x037e, 0x047e, 0x2019, 0x2300, 0x2021, -+ 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xa092, 0x007e, 0x0048, 0x67e6, 0x0d7e, 0xa0e8, 0xa735, -+ 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x67f4, 0x0d7e, 0xa0e8, -+ 0xa735, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x0d7f, -+ 0x20a3, 0x0000, 0x6230, 0x22a2, 0xa485, 0x0098, 0x20a2, 0x20a3, -+ 0x0000, 0x047f, 0x037f, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, -+ 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, -+ 0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085, 0x1048, 0x1332, -+ 0xa08a, 0x008c, 0x10c8, 0x1332, 0x6118, 0x2178, 0x79a0, 0xd1bc, -+ 0x0040, 0x6827, 0x7900, 0xd1f4, 0x0040, 0x6823, 0x7914, 0xa18c, -+ 0x00ff, 0x0078, 0x682c, 0x2009, 0x0000, 0x0078, 0x682c, 0xa1f8, -+ 0x29c0, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, -+ 0xa082, 0x0085, 0x1079, 0x6837, 0x0f7f, 0x0c7f, 0x007c, 0x6840, -+ 0x684b, 0x6866, 0x683e, 0x683e, 0x683e, 0x6840, 0x1078, 0x1332, -+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x6879, 0x60c3, 0x0000, 0x1078, -+ 0x6dfb, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, 0x68ad, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x7810, 0x20a2, -+ 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x147f, 0x007c, 0x147e, 0x20a1, -+ 0x020b, 0x1078, 0x68ee, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x6dfb, 0x147f, -+ 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, -+ 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x6898, 0x0d7e, 0xa0e8, -+ 0xa735, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, -+ 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x68a7, -+ 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, -+ 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, -+ 0x0009, 0x20a3, 0x0000, 0x0078, 0x678b, 0x027e, 0x20e1, 0x9080, -+ 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e, -+ 0x0048, 0x68cc, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, -+ 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68, -+ 0x2da6, 0x0d7f, 0x0078, 0x68db, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, -+ 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3, -+ 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0099, 0x20a3, 0x0000, 0x1078, -+ 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x7a10, 0x22a2, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x027e, 0x20e1, -+ 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, -+ 0x007e, 0x0048, 0x690d, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, -+ 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6, -+ 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x691c, 0x0d7e, 0xa0e8, 0xa735, -+ 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x0d7f, -+ 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0099, 0x20a3, 0x0000, -+ 0x0078, 0x68df, 0x0c7e, 0x0f7e, 0x2c78, 0x7804, 0xa08a, 0x0040, -+ 0x1048, 0x1332, 0xa08a, 0x0053, 0x10c8, 0x1332, 0x7918, 0x2160, -+ 0x61a0, 0xd1bc, 0x0040, 0x6941, 0x6100, 0xd1f4, 0x0040, 0x693d, -+ 0x6114, 0xa18c, 0x00ff, 0x0078, 0x6946, 0x2009, 0x0000, 0x0078, -+ 0x6946, 0xa1e0, 0x29c0, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, -+ 0x619a, 0xa082, 0x0040, 0x1079, 0x6950, 0x0f7f, 0x0c7f, 0x007c, -+ 0x6965, 0x6a73, 0x6a14, 0x6c27, 0x6963, 0x6963, 0x6963, 0x6963, -+ 0x6963, 0x6963, 0x6963, 0x714c, 0x715d, 0x716e, 0x717f, 0x6963, -+ 0x767e, 0x6963, 0x713b, 0x1078, 0x1332, 0x0d7e, 0x157e, 0x147e, -+ 0x780b, 0xffff, 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7910, 0x2168, -+ 0x6948, 0x7922, 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, -+ 0xa184, 0x000f, 0x00c0, 0x6980, 0x2001, 0x0005, 0x0078, 0x698a, -+ 0xd184, 0x0040, 0x6987, 0x2001, 0x0004, 0x0078, 0x698a, 0xa084, -+ 0x0006, 0x8004, 0x017e, 0x2008, 0x7830, 0xa084, 0x00ff, 0x8007, -+ 0xa105, 0x017f, 0x20a2, 0xd1ac, 0x0040, 0x699a, 0x20a3, 0x0002, -+ 0x0078, 0x69a6, 0xd1b4, 0x0040, 0x69a1, 0x20a3, 0x0001, 0x0078, -+ 0x69a6, 0x20a3, 0x0000, 0x2230, 0x0078, 0x69a8, 0x6a80, 0x6e7c, -+ 0x20a9, 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000, -+ 0x00f0, 0x69ac, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, -+ 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0xa8cd, -+ 0x2003, 0x07d0, 0x2001, 0xa8cc, 0x2003, 0x0009, 0x2001, 0xa8d2, -+ 0x2003, 0x0002, 0x1078, 0x158c, 0x147f, 0x157f, 0x0d7f, 0x007c, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014, -+ 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xd0bc, 0x0040, 0x69f6, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, -+ 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6a05, 0x0d7e, 0xa0e8, -+ 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, -+ 0x0d7f, 0x20a3, 0x0000, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a3, -+ 0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, -+ 0x20a1, 0x020b, 0x1078, 0x6a34, 0x7810, 0x2068, 0x6860, 0x20a2, -+ 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x147f, -+ 0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x6a52, -+ 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2, -+ 0x6814, 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, -+ 0x0078, 0x6a61, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, -+ 0x0500, 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230, -+ 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2, -+ 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, 0x7810, -+ 0xa0ec, 0xf000, 0x0040, 0x6a8b, 0xa06d, 0x1078, 0x495f, 0x0040, -+ 0x6a8b, 0x684c, 0xa084, 0x2020, 0xa086, 0x2020, 0x00c0, 0x6a8b, -+ 0x7824, 0xc0cd, 0x7826, 0x20a1, 0x020b, 0x1078, 0x6be0, 0xa016, -+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, -+ 0x00c0, 0x6aa2, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x6aaa, -+ 0x0078, 0x6aa5, 0xa006, 0x1079, 0x6aaa, 0x147f, 0x137f, 0x157f, -+ 0x0d7f, 0x007c, 0x6ab4, 0x6b4c, 0x6b57, 0x6b81, 0x6b95, 0x6bb1, -+ 0x6bbc, 0x6ab2, 0x1078, 0x1332, 0x017e, 0x037e, 0x694c, 0xa18c, -+ 0x0003, 0x0040, 0x6abf, 0xa186, 0x0003, 0x00c0, 0x6ace, 0x6b78, -+ 0x7824, 0xd0cc, 0x0040, 0x6ac5, 0xc3e5, 0x23a2, 0x6868, 0x20a2, -+ 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x6b8c, 0xa186, 0x0001, -+ 0x10c0, 0x1332, 0x6b78, 0x7824, 0xd0cc, 0x0040, 0x6ad8, 0xc3e5, -+ 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, -+ 0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0040, -+ 0x6b46, 0xd3c4, 0x0040, 0x6aee, 0x687c, 0xa108, 0xd3cc, 0x0040, -+ 0x6af3, 0x6874, 0xa108, 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020, -+ 0x201c, 0x831f, 0x23a2, 0x8000, 0x00f0, 0x6af8, 0x157f, 0x22a2, -+ 0x22a2, 0x22a2, 0xa184, 0x0003, 0x0040, 0x6b46, 0x20a1, 0x020b, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x007e, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xd0bc, 0x0040, 0x6b26, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, -+ 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6b35, 0x0d7e, 0xa0e8, -+ 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, -+ 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x007f, 0x7b24, 0xd3cc, -+ 0x0040, 0x6b3e, 0x20a3, 0x0889, 0x0078, 0x6b40, 0x20a3, 0x0898, -+ 0x20a2, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x037f, -+ 0x017f, 0x1078, 0x6dfb, 0x007c, 0x2011, 0x0008, 0x7824, 0xd0cc, -+ 0x0040, 0x6b53, 0xc2e5, 0x22a2, 0xa016, 0x0078, 0x6b8a, 0x2011, -+ 0x0302, 0x7824, 0xd0cc, 0x0040, 0x6b5e, 0xc2e5, 0x22a2, 0xa016, -+ 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, -+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, -+ 0x22a2, 0x20a3, 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, -+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x1078, 0x6dfb, -+ 0x007c, 0x2011, 0x0028, 0x7824, 0xd0cc, 0x0040, 0x6b88, 0xc2e5, -+ 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, -+ 0x60c3, 0x0018, 0x1078, 0x6dfb, 0x007c, 0x2011, 0x0100, 0x7824, -+ 0xd0cc, 0x0040, 0x6b9c, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2, -+ 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x7834, 0xa084, -+ 0x00ff, 0x20a2, 0x22a2, 0x22a2, 0x60c3, 0x0020, 0x1078, 0x6dfb, -+ 0x007c, 0x2011, 0x0008, 0x7824, 0xd0cc, 0x0040, 0x6bb8, 0xc2e5, -+ 0x22a2, 0xa016, 0x0078, 0x6b8a, 0x037e, 0x7b10, 0xa384, 0xff00, -+ 0x7812, 0xa384, 0x00ff, 0x8001, 0x00c0, 0x6bcf, 0x7824, 0xd0cc, -+ 0x0040, 0x6bcb, 0xc2e5, 0x22a2, 0x037f, 0x0078, 0x6b8a, 0x047e, -+ 0x2021, 0x0800, 0x007e, 0x7824, 0xd0cc, 0x007f, 0x0040, 0x6bd9, -+ 0xc4e5, 0x24a2, 0x047f, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x6b8c, -+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xd0bc, 0x0040, 0x6bfe, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, -+ 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x6c0d, 0x0d7e, 0xa0e8, -+ 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, -+ 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x7824, 0xd0cc, 0x0040, -+ 0x6c15, 0x20a3, 0x0889, 0x0078, 0x6c17, 0x20a3, 0x0898, 0x20a3, -+ 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, -+ 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, -+ 0x157e, 0x137e, 0x147e, 0x017e, 0x037e, 0x7810, 0xa084, 0x0700, -+ 0x8007, 0x1079, 0x6c3a, 0x037f, 0x017f, 0x147f, 0x137f, 0x157f, -+ 0x0d7f, 0x007c, 0x6c42, 0x6c42, 0x6c44, 0x6c42, 0x6c42, 0x6c42, -+ 0x6c69, 0x6c42, 0x1078, 0x1332, 0x7910, 0xa18c, 0xf8ff, 0xa18d, -+ 0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x6c73, -+ 0x0d7e, 0x2069, 0xa652, 0x6804, 0xd0bc, 0x0040, 0x6c5e, 0x682c, -+ 0xa084, 0x00ff, 0x8007, 0x20a2, 0x0078, 0x6c60, 0x20a3, 0x3f00, -+ 0x0d7f, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078, 0x6dfb, -+ 0x007c, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x6c73, 0x20a3, -+ 0x7f00, 0x0078, 0x6c61, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, -+ 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x6c91, 0x0d7e, -+ 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, -+ 0x20a2, 0x2069, 0xa61b, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, -+ 0x6ca0, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, 0x6810, 0xa085, 0x0100, -+ 0x20a2, 0x6814, 0x20a2, 0x0d7f, 0x20a3, 0x0000, 0x6230, 0x22a2, -+ 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x1078, 0x6dea, 0x22a2, -+ 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x057e, 0x047e, -+ 0x037e, 0x2061, 0x0100, 0x2071, 0xa600, 0x6130, 0x7818, 0x2068, -+ 0x68a0, 0x2028, 0xd0bc, 0x00c0, 0x6cca, 0x6910, 0x6a14, 0x6430, -+ 0x0078, 0x6cce, 0x6910, 0x6a14, 0x736c, 0x7470, 0x781c, 0xa086, -+ 0x0006, 0x0040, 0x6d2d, 0xd5bc, 0x0040, 0x6cde, 0xa185, 0x0100, -+ 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x6ce5, 0xa185, 0x0100, -+ 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x6073, 0x0809, 0x6077, -+ 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, -+ 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, -+ 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, -+ 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, -+ 0xa582, 0x0080, 0x0048, 0x6d17, 0x6a00, 0xd2f4, 0x0040, 0x6d15, -+ 0x6a14, 0xa294, 0x00ff, 0x0078, 0x6d17, 0x2011, 0x0000, 0x629e, -+ 0x6017, 0x0016, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005, -+ 0x0040, 0x6d24, 0x2009, 0x1b58, 0x1078, 0x5ad0, 0x037f, 0x047f, -+ 0x057f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c, -+ 0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x6d85, 0xd5bc, 0x0040, -+ 0x6d41, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, -+ 0x6d48, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, -+ 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, -+ 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, -+ 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c, -+ 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080, 0x7928, 0xa109, -+ 0x792a, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, -+ 0x0000, 0xa582, 0x0080, 0x0048, 0x6d80, 0x6a00, 0xd2f4, 0x0040, -+ 0x6d7e, 0x6a14, 0xa294, 0x00ff, 0x0078, 0x6d80, 0x2011, 0x0000, -+ 0x629e, 0x6017, 0x0012, 0x0078, 0x6d1a, 0xd5bc, 0x0040, 0x6d90, -+ 0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x6d97, -+ 0xa185, 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x1078, -+ 0x495f, 0x0040, 0x6dad, 0x0d7e, 0x7810, 0xa06d, 0x684c, 0x0d7f, -+ 0xa084, 0x2020, 0xa086, 0x2020, 0x00c0, 0x6dad, 0x7824, 0xc0cd, -+ 0x7826, 0x6073, 0x0889, 0x0078, 0x6daf, 0x6073, 0x0898, 0x6077, -+ 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, -+ 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, -+ 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, -+ 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, -+ 0x0048, 0x6ddd, 0x6a00, 0xd2f4, 0x0040, 0x6ddb, 0x6a14, 0xa294, -+ 0x00ff, 0x0078, 0x6ddd, 0x2011, 0x0000, 0x629e, 0x7824, 0xd0cc, -+ 0x0040, 0x6de6, 0x6017, 0x0016, 0x0078, 0x6d1a, 0x6017, 0x0012, -+ 0x0078, 0x6d1a, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, -+ 0x00ff, 0x2202, 0x8217, 0x007c, 0x0d7e, 0x2069, 0xa8b1, 0x6843, -+ 0x0001, 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, -+ 0x9575, 0x1078, 0x6e06, 0x1078, 0x5ac0, 0x007c, 0x007e, 0x6014, -+ 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e, -+ 0x0c7e, 0x2061, 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, -+ 0x6016, 0x0c7f, 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e, -+ 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040, -+ 0x6e59, 0x1078, 0x6e0f, 0x6803, 0x1000, 0x6803, 0x0000, 0x0c7e, -+ 0x2061, 0xa8b1, 0x6128, 0xa192, 0x00c8, 0x00c8, 0x6e44, 0x8108, -+ 0x612a, 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x6e54, 0x1078, 0x5ac0, -+ 0x1078, 0x6e06, 0x0078, 0x6e54, 0x6124, 0xa1e5, 0x0000, 0x0040, -+ 0x6e51, 0x1078, 0xa5c4, 0x1078, 0x5acb, 0x2009, 0x0014, 0x1078, -+ 0x775c, 0x0c7f, 0x0078, 0x6e54, 0x027f, 0x017f, 0x0d7f, 0x0c7f, -+ 0x007c, 0x2001, 0xa8cd, 0x2004, 0xa005, 0x00c0, 0x6e54, 0x0c7e, -+ 0x2061, 0xa8b1, 0x6128, 0xa192, 0x0003, 0x00c8, 0x6e44, 0x8108, -+ 0x612a, 0x0c7f, 0x1078, 0x5ac0, 0x1078, 0x4224, 0x0078, 0x6e54, -+ 0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x027e, 0x1078, 0x5ad8, 0x2071, -+ 0xa8b1, 0x713c, 0x81ff, 0x0040, 0x6e9a, 0x2061, 0x0100, 0x2069, -+ 0x0140, 0x6904, 0xa194, 0x4000, 0x0040, 0x6ea0, 0x6803, 0x1000, -+ 0x6803, 0x0000, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x037f, -+ 0x713c, 0x2160, 0x1078, 0xa5c4, 0x2009, 0x004a, 0x1078, 0x775c, -+ 0x0078, 0x6e9a, 0x027f, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, -+ 0x0078, 0x6e8a, 0x0e7e, 0x2071, 0xa8b1, 0x7048, 0xd084, 0x0040, -+ 0x6ebc, 0x713c, 0x81ff, 0x0040, 0x6ebc, 0x2071, 0x0100, 0xa188, -+ 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x6eba, 0x7017, 0x0012, -+ 0x0078, 0x6ebc, 0x7017, 0x0016, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e, -+ 0x0c7e, 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091, 0x8000, -+ 0x6018, 0x2068, 0x6ca0, 0x2071, 0xa8b1, 0x7018, 0x2068, 0x8dff, -+ 0x0040, 0x6ee6, 0x68a0, 0xa406, 0x0040, 0x6eda, 0x6854, 0x2068, -+ 0x0078, 0x6ecf, 0x6010, 0x2060, 0x643c, 0x6540, 0x6648, 0x2d60, -+ 0x1078, 0x4736, 0x0040, 0x6ee6, 0xa085, 0x0001, 0x127f, 0x007f, -+ 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x20a1, -+ 0x020b, 0x1078, 0x6731, 0x20a3, 0x1200, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x781c, 0xa086, 0x0004, 0x00c0, 0x6f01, 0x6098, 0x0078, -+ 0x6f02, 0x6030, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a9, -+ 0x0010, 0xa006, 0x20a2, 0x00f0, 0x6f0a, 0x20a2, 0x20a2, 0x60c3, -+ 0x002c, 0x1078, 0x6dfb, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, -+ 0x1078, 0x6731, 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x147f, 0x157f, -+ 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, -+ 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006, 0x2011, 0xa640, 0x2019, -+ 0xa641, 0x23a6, 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0, -+ 0x6f39, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, -+ 0x6dfb, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e, -+ 0x20a1, 0x020b, 0x1078, 0x6799, 0x1078, 0x67b0, 0x7810, 0xa080, -+ 0x0000, 0x2004, 0xa080, 0x0015, 0x2098, 0x7808, 0xa088, 0x0002, -+ 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003, 0x60c2, 0x1078, 0x6dfb, -+ 0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1, -+ 0x020b, 0x1078, 0x6731, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x147f, -+ 0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e, 0x20a1, 0x020b, -+ 0x1078, 0x6731, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0017, -+ 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0x8003, 0x60c2, -+ 0x1078, 0x6dfb, 0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x0e7e, -+ 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x700c, -+ 0x2060, 0x8cff, 0x0040, 0x6fbb, 0x1078, 0x8f00, 0x00c0, 0x6fb2, -+ 0x1078, 0x7c83, 0x600c, 0x007e, 0x1078, 0x772d, 0x1078, 0x7233, -+ 0x0c7f, 0x0078, 0x6fa9, 0x700f, 0x0000, 0x700b, 0x0000, 0x127f, -+ 0x007f, 0x0c7f, 0x0e7f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, -+ 0x0d7e, 0x0c7e, 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069, -+ 0x0100, 0x2079, 0x0140, 0x2071, 0xa8b1, 0x7024, 0x2060, 0x8cff, -+ 0x0040, 0x7014, 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x5acb, -+ 0x2009, 0x0013, 0x1078, 0x775c, 0x20a9, 0x01f4, 0x6824, 0xd094, -+ 0x0040, 0x6ff7, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, -+ 0x7009, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x7009, 0xd084, -+ 0x0040, 0x6ffe, 0x6827, 0x0001, 0x0078, 0x7000, 0x00f0, 0x6fe6, -+ 0x7804, 0xa084, 0x1000, 0x0040, 0x7009, 0x7803, 0x0100, 0x7803, -+ 0x0000, 0x6824, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, -+ 0x0f7f, 0x157f, 0x127f, 0x007c, 0x2001, 0xa600, 0x2004, 0xa096, -+ 0x0001, 0x0040, 0x704e, 0xa096, 0x0004, 0x0040, 0x704e, 0x1078, -+ 0x5acb, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x41dc, 0x1078, -+ 0x5a45, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x703c, 0x6827, -+ 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x704e, 0x7803, 0x1000, -+ 0x7803, 0x0000, 0x0078, 0x704e, 0xd084, 0x0040, 0x7043, 0x6827, -+ 0x0001, 0x0078, 0x7045, 0x00f0, 0x702b, 0x7804, 0xa084, 0x1000, -+ 0x0040, 0x704e, 0x7803, 0x0100, 0x7803, 0x0000, 0x007f, 0x017f, -+ 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, -+ 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e, -+ 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, -+ 0xa8b1, 0x703c, 0x2060, 0x8cff, 0x0040, 0x70d6, 0x68af, 0x95f5, -+ 0x6817, 0x0010, 0x2009, 0x00fa, 0x8109, 0x00c0, 0x7074, 0x68c7, -+ 0x0000, 0x68cb, 0x0008, 0x1078, 0x5ad8, 0x1078, 0x1f7e, 0x047e, -+ 0x057e, 0x2009, 0x017f, 0x212c, 0x200b, 0x00a5, 0x2021, 0x0169, -+ 0x2404, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x70a5, 0x68c7, -+ 0x0000, 0x68cb, 0x0008, 0x0e7e, 0x0f7e, 0x2079, 0x0020, 0x2071, -+ 0xa908, 0x6814, 0xa084, 0x0004, 0xa085, 0x0012, 0x6816, 0x7803, -+ 0x0008, 0x7003, 0x0000, 0x0f7f, 0x0e7f, 0x250a, 0x057f, 0x047f, -+ 0xa39d, 0x0000, 0x00c0, 0x70b0, 0x2009, 0x0049, 0x1078, 0x775c, -+ 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040, 0x70c3, 0x6827, 0x0004, -+ 0x7804, 0xa084, 0x4000, 0x0040, 0x70d5, 0x7803, 0x1000, 0x7803, -+ 0x0000, 0x0078, 0x70d5, 0xd08c, 0x0040, 0x70ca, 0x6827, 0x0002, -+ 0x0078, 0x70cc, 0x00f0, 0x70b2, 0x7804, 0xa084, 0x1000, 0x0040, -+ 0x70d5, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f, -+ 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, -+ 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0xa8b1, 0x6a06, 0x127f, -+ 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0xa8b1, -+ 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, -+ 0x007e, 0x127e, 0x2071, 0xa8b1, 0x7614, 0x2660, 0x2678, 0x2091, -+ 0x8000, 0x8cff, 0x0040, 0x7134, 0x601c, 0xa206, 0x00c0, 0x712f, -+ 0x7014, 0xac36, 0x00c0, 0x710e, 0x660c, 0x7616, 0x7010, 0xac36, -+ 0x00c0, 0x711c, 0x2c00, 0xaf36, 0x0040, 0x711a, 0x2f00, 0x7012, -+ 0x0078, 0x711c, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, -+ 0x0040, 0x7125, 0x7e0e, 0x0078, 0x7126, 0x2678, 0x600f, 0x0000, -+ 0x1078, 0x8ec6, 0x1078, 0x7233, 0x0c7f, 0x0078, 0x7101, 0x2c78, -+ 0x600c, 0x2060, 0x0078, 0x7101, 0x127f, 0x007f, 0x067f, 0x0c7f, -+ 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, -+ 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, -+ 0x20a3, 0x1000, 0x0078, 0x718e, 0x157e, 0x147e, 0x20a1, 0x020b, -+ 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, -+ 0x20a2, 0x20a3, 0x4000, 0x0078, 0x718e, 0x157e, 0x147e, 0x20a1, -+ 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x718e, 0x157e, 0x147e, -+ 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x718e, 0x157e, -+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x69d0, 0x7810, 0x20a2, 0xa006, -+ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078, 0x723e, -+ 0x60c3, 0x0020, 0x1078, 0x6dfb, 0x147f, 0x157f, 0x007c, 0x127e, -+ 0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4, 0x00c0, -+ 0x71a6, 0xd1bc, 0x00c0, 0x71f0, 0x0078, 0x7230, 0x2009, 0x017f, -+ 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140, 0x20a9, -+ 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040, 0x71e7, -+ 0x6020, 0xd0b4, 0x0040, 0x71e7, 0x6024, 0xd094, 0x00c0, 0x71e7, -+ 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x71e7, 0x00f0, -+ 0x71b3, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, -+ 0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91, 0x6043, -+ 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024, 0xd094, 0x00c0, -+ 0x71e6, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x71dd, 0x027f, 0x0d7f, -+ 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0078, 0x7230, -+ 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, -+ 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, -+ 0x0040, 0x7229, 0x6020, 0xd0bc, 0x0040, 0x7229, 0x2104, 0xa084, -+ 0x000f, 0xa086, 0x0004, 0x00c0, 0x7229, 0x00f0, 0x71fd, 0x027e, -+ 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff, 0xa10d, -+ 0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001, 0x6043, -+ 0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x7223, -+ 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, -+ 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0xa8b1, 0x7020, 0xa005, -+ 0x0040, 0x723c, 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9, 0x0008, -+ 0x20a2, 0x00f0, 0x7240, 0x20a2, 0x20a2, 0x007c, 0x0f7e, 0x0e7e, -+ 0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, -+ 0x2071, 0xa8b1, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff, -+ 0x0040, 0x72e2, 0x8cff, 0x0040, 0x72e2, 0x601c, 0xa086, 0x0006, -+ 0x00c0, 0x72dd, 0x88ff, 0x0040, 0x726d, 0x2800, 0xac06, 0x00c0, -+ 0x72dd, 0x2039, 0x0000, 0x0078, 0x7278, 0x6018, 0xa206, 0x00c0, -+ 0x72dd, 0x85ff, 0x0040, 0x7278, 0x6020, 0xa106, 0x00c0, 0x72dd, -+ 0x7024, 0xac06, 0x00c0, 0x72a8, 0x2069, 0x0100, 0x68c0, 0xa005, -+ 0x0040, 0x72a3, 0x1078, 0x5acb, 0x6817, 0x0008, 0x68c3, 0x0000, -+ 0x1078, 0x7378, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, -+ 0xa384, 0x1000, 0x0040, 0x7298, 0x6803, 0x0100, 0x6803, 0x0000, -+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x72a0, 0x6827, 0x0001, -+ 0x037f, 0x0078, 0x72a8, 0x6003, 0x0009, 0x630a, 0x0078, 0x72dd, -+ 0x7014, 0xac36, 0x00c0, 0x72ae, 0x660c, 0x7616, 0x7010, 0xac36, -+ 0x00c0, 0x72bc, 0x2c00, 0xaf36, 0x0040, 0x72ba, 0x2f00, 0x7012, -+ 0x0078, 0x72bc, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, -+ 0x0040, 0x72c5, 0x7e0e, 0x0078, 0x72c6, 0x2678, 0x89ff, 0x00c0, -+ 0x72d5, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, -+ 0x72d3, 0x1078, 0xa1ca, 0x1078, 0x8ec6, 0x1078, 0x7233, 0x88ff, -+ 0x00c0, 0x72ec, 0x0c7f, 0x0078, 0x7257, 0x2c78, 0x600c, 0x2060, -+ 0x0078, 0x7257, 0xa006, 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f, -+ 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, -+ 0x0001, 0x0078, 0x72e3, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, -+ 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x7638, -+ 0x2660, 0x2678, 0x8cff, 0x0040, 0x7367, 0x601c, 0xa086, 0x0006, -+ 0x00c0, 0x7362, 0x87ff, 0x0040, 0x7313, 0x2700, 0xac06, 0x00c0, -+ 0x7362, 0x0078, 0x731e, 0x6018, 0xa206, 0x00c0, 0x7362, 0x85ff, -+ 0x0040, 0x731e, 0x6020, 0xa106, 0x00c0, 0x7362, 0x703c, 0xac06, -+ 0x00c0, 0x7332, 0x037e, 0x2019, 0x0001, 0x1078, 0x7058, 0x7033, -+ 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x704b, -+ 0x0000, 0x037f, 0x7038, 0xac36, 0x00c0, 0x7338, 0x660c, 0x763a, -+ 0x7034, 0xac36, 0x00c0, 0x7346, 0x2c00, 0xaf36, 0x0040, 0x7344, -+ 0x2f00, 0x7036, 0x0078, 0x7346, 0x7037, 0x0000, 0x660c, 0x067e, -+ 0x2c00, 0xaf06, 0x0040, 0x734f, 0x7e0e, 0x0078, 0x7350, 0x2678, -+ 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x735a, -+ 0x1078, 0xa1ca, 0x1078, 0x8ec6, 0x87ff, 0x00c0, 0x7371, 0x0c7f, -+ 0x0078, 0x7302, 0x2c78, 0x600c, 0x2060, 0x0078, 0x7302, 0xa006, -+ 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, -+ 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa7bd, 0x0001, 0x0078, 0x7368, -+ 0x0e7e, 0x2071, 0xa8b1, 0x2001, 0xa600, 0x2004, 0xa086, 0x0002, -+ 0x00c0, 0x7386, 0x7007, 0x0005, 0x0078, 0x7388, 0x7007, 0x0000, -+ 0x0e7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, 0x027e, 0x007e, -+ 0x127e, 0x2091, 0x8000, 0x2071, 0xa8b1, 0x2c10, 0x7638, 0x2660, -+ 0x2678, 0x8cff, 0x0040, 0x73c8, 0x2200, 0xac06, 0x00c0, 0x73c3, -+ 0x7038, 0xac36, 0x00c0, 0x73a6, 0x660c, 0x763a, 0x7034, 0xac36, -+ 0x00c0, 0x73b4, 0x2c00, 0xaf36, 0x0040, 0x73b2, 0x2f00, 0x7036, -+ 0x0078, 0x73b4, 0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0040, -+ 0x73bc, 0x7e0e, 0x0078, 0x73bd, 0x2678, 0x600f, 0x0000, 0xa085, -+ 0x0001, 0x0078, 0x73c8, 0x2c78, 0x600c, 0x2060, 0x0078, 0x7399, -+ 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, -+ 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091, -+ 0x8000, 0x2071, 0xa8b1, 0x760c, 0x2660, 0x2678, 0x8cff, 0x0040, -+ 0x7469, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x7464, -+ 0x7024, 0xac06, 0x00c0, 0x740f, 0x2069, 0x0100, 0x68c0, 0xa005, -+ 0x0040, 0x743d, 0x1078, 0x6e0f, 0x68c3, 0x0000, 0x1078, 0x7378, -+ 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, -+ 0x0040, 0x7406, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, -+ 0x6824, 0xd084, 0x0040, 0x740e, 0x6827, 0x0001, 0x037f, 0x700c, -+ 0xac36, 0x00c0, 0x7415, 0x660c, 0x760e, 0x7008, 0xac36, 0x00c0, -+ 0x7423, 0x2c00, 0xaf36, 0x0040, 0x7421, 0x2f00, 0x700a, 0x0078, -+ 0x7423, 0x700b, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, -+ 0x742c, 0x7e0e, 0x0078, 0x742d, 0x2678, 0x600f, 0x0000, 0x1078, -+ 0x8eec, 0x00c0, 0x7441, 0x1078, 0x28a6, 0x1078, 0x8f00, 0x00c0, -+ 0x745d, 0x1078, 0x7c83, 0x0078, 0x745d, 0x1078, 0x7378, 0x0078, -+ 0x740f, 0x1078, 0x8f00, 0x00c0, 0x7449, 0x1078, 0x7c83, 0x0078, -+ 0x745d, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x745d, 0x601c, -+ 0xa086, 0x0003, 0x00c0, 0x7471, 0x6837, 0x0103, 0x6b4a, 0x6847, -+ 0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x1078, 0x8ec6, 0x1078, -+ 0x7233, 0x0c7f, 0x0078, 0x73de, 0x2c78, 0x600c, 0x2060, 0x0078, -+ 0x73de, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, -+ 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x745d, 0x1078, 0xa1ca, -+ 0x0078, 0x745d, 0x037e, 0x157e, 0x137e, 0x147e, 0x3908, 0xa006, -+ 0xa190, 0x0020, 0x221c, 0xa39e, 0x2676, 0x00c0, 0x748b, 0x8210, -+ 0x8000, 0x0078, 0x7482, 0xa005, 0x0040, 0x7497, 0x20a9, 0x0020, -+ 0x2198, 0x8211, 0xa282, 0x0020, 0x20c8, 0x20a0, 0x53a3, 0x147f, -+ 0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078, -+ 0x67c2, 0x20a3, 0x0200, 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x2099, 0xa8a5, 0x20a9, 0x0004, 0x53a6, -+ 0x20a3, 0x0004, 0x20a3, 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x1078, 0x6dfb, 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078, 0x67c2, -+ 0x20a3, 0x0214, 0x20a3, 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, -+ 0xff00, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x7810, 0xa084, 0x00ff, 0x20a2, 0x7828, 0x20a2, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x6dfb, -+ 0x007c, 0x0d7e, 0x017e, 0x2f68, 0x2009, 0x0035, 0x1078, 0x91bc, -+ 0x00c0, 0x7551, 0x20a1, 0x020b, 0x1078, 0x6731, 0x20a3, 0x1300, -+ 0x20a3, 0x0000, 0x7828, 0x2068, 0x681c, 0xa086, 0x0003, 0x0040, -+ 0x752d, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e, 0x00c0, -+ 0x7507, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x0078, 0x7542, 0xa286, -+ 0x007f, 0x00c0, 0x7511, 0x20a3, 0x00ff, 0x20a3, 0xfffd, 0x0078, -+ 0x7542, 0xd2bc, 0x0040, 0x7527, 0xa286, 0x0080, 0x00c0, 0x751e, -+ 0x20a3, 0x00ff, 0x20a3, 0xfffc, 0x0078, 0x7542, 0xa2e8, 0xa735, -+ 0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x0078, 0x7542, 0x20a3, -+ 0x0000, 0x6098, 0x20a2, 0x0078, 0x7542, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xa082, 0x007e, 0x0048, 0x753e, 0x0d7e, 0x2069, 0xa61b, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x7542, 0x20a3, 0x0000, -+ 0x6030, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x000c, 0x1078, 0x6dfb, 0x017f, 0x0d7f, -+ 0x007c, 0x7817, 0x0001, 0x7803, 0x0006, 0x017f, 0x0d7f, 0x007c, -+ 0x0d7e, 0x027e, 0x7928, 0x2168, 0x691c, 0xa186, 0x0006, 0x0040, -+ 0x757a, 0xa186, 0x0003, 0x0040, 0x75d5, 0xa186, 0x0005, 0x0040, -+ 0x75b8, 0xa186, 0x0004, 0x0040, 0x75a8, 0xa186, 0x0008, 0x0040, -+ 0x75c2, 0x7807, 0x0037, 0x7813, 0x1700, 0x1078, 0x7640, 0x027f, -+ 0x0d7f, 0x007c, 0x1078, 0x75fd, 0x2009, 0x4000, 0x6800, 0x0079, -+ 0x7581, 0x7594, 0x75a2, 0x7596, 0x75a2, 0x759d, 0x7594, 0x7594, -+ 0x75a2, 0x75a2, 0x75a2, 0x75a2, 0x7594, 0x7594, 0x7594, 0x7594, -+ 0x7594, 0x75a2, 0x7594, 0x75a2, 0x1078, 0x1332, 0x6824, 0xd0e4, -+ 0x0040, 0x759d, 0xd0cc, 0x0040, 0x75a0, 0xa00e, 0x0078, 0x75a2, -+ 0x2009, 0x2000, 0x6828, 0x20a2, 0x682c, 0x20a2, 0x0078, 0x75f3, -+ 0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000, -+ 0x6a00, 0xa286, 0x0002, 0x00c0, 0x75b6, 0xa00e, 0x0078, 0x75f3, -+ 0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000, -+ 0x0078, 0x75f3, 0x1078, 0x75fd, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x2009, 0x4000, 0xa286, 0x0005, 0x0040, 0x75d2, 0xa286, 0x0002, -+ 0x00c0, 0x75d3, 0xa00e, 0x0078, 0x75f3, 0x1078, 0x75fd, 0x6810, -+ 0x2068, 0x697c, 0x6810, 0xa112, 0x6980, 0x6814, 0xa103, 0x20a2, -+ 0x22a2, 0x7928, 0xa180, 0x0000, 0x2004, 0xa08e, 0x0002, 0x0040, -+ 0x75f1, 0xa08e, 0x0004, 0x0040, 0x75f1, 0x2009, 0x4000, 0x0078, -+ 0x75f3, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, 0x60c3, 0x0018, -+ 0x1078, 0x6dfb, 0x027f, 0x0d7f, 0x007c, 0x037e, 0x047e, 0x057e, -+ 0x067e, 0x20a1, 0x020b, 0x1078, 0x67c2, 0xa006, 0x20a3, 0x0200, -+ 0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xa092, 0x007e, 0x0048, 0x7623, 0x0d7e, 0x2069, 0xa61b, -+ 0x2d2c, 0x8d68, 0x2d34, 0xa0e8, 0xa735, 0x2d6c, 0x6b10, 0x6c14, -+ 0x0d7f, 0x0078, 0x7629, 0x2019, 0x0000, 0x6498, 0x2029, 0x0000, -+ 0x6630, 0x7828, 0xa080, 0x0007, 0x2004, 0xa086, 0x0003, 0x00c0, -+ 0x7637, 0x25a2, 0x26a2, 0x23a2, 0x24a2, 0x0078, 0x763b, 0x23a2, -+ 0x24a2, 0x25a2, 0x26a2, 0x067f, 0x057f, 0x047f, 0x037f, 0x007c, -+ 0x20a1, 0x020b, 0x1078, 0x67c2, 0x20a3, 0x0100, 0x20a3, 0x0000, -+ 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, -+ 0x007c, 0x20a1, 0x020b, 0x1078, 0x6728, 0x20a3, 0x1400, 0x20a3, -+ 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x7828, 0x20a2, 0x782c, -+ 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, 0x20a2, 0x20a3, 0x0000, -+ 0x60c3, 0x0010, 0x1078, 0x6dfb, 0x007c, 0x20a1, 0x020b, 0x1078, -+ 0x67b9, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0x20a2, 0x7810, -+ 0x20a2, 0x60c3, 0x0008, 0x1078, 0x6dfb, 0x007c, 0x147e, 0x20a1, -+ 0x020b, 0x1078, 0x7689, 0x60c3, 0x0000, 0x1078, 0x6dfb, 0x147f, -+ 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xd0bc, 0x0040, 0x76a6, 0x0d7e, 0xa0e8, 0xa735, 0x2d6c, -+ 0x6810, 0xa085, 0x0300, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xa61b, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x76ae, 0x20a3, 0x0300, -+ 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0819, -+ 0x20a3, 0x0000, 0x1078, 0x6dea, 0x22a2, 0x20a3, 0x0000, 0x2fa2, -+ 0x7a08, 0x22a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x007c, 0x2061, -+ 0xad00, 0x2a70, 0x7064, 0x704a, 0x704f, 0xad00, 0x007c, 0x0e7e, -+ 0x127e, 0x2071, 0xa600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0010, -+ 0x0048, 0x76f9, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, -+ 0x76e5, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8, 0x76e1, 0x0078, -+ 0x76d4, 0x2061, 0xad00, 0x0078, 0x76d4, 0x6003, 0x0008, 0x8529, -+ 0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8, 0x76f5, 0x754e, -+ 0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704f, 0xad00, 0x0078, -+ 0x76f0, 0xa006, 0x0078, 0x76f2, 0x0e7e, 0x2071, 0xa600, 0x7548, -+ 0xa582, 0x0010, 0x0048, 0x772a, 0x704c, 0x2060, 0x6000, 0xa086, -+ 0x0000, 0x0040, 0x7717, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8, -+ 0x7713, 0x0078, 0x7706, 0x2061, 0xad00, 0x0078, 0x7706, 0x6003, -+ 0x0008, 0x8529, 0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8, -+ 0x7726, 0x754e, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704f, 0xad00, -+ 0x0078, 0x7722, 0xa006, 0x0078, 0x7724, 0xac82, 0xad00, 0x1048, -+ 0x1332, 0x2001, 0xa616, 0x2004, 0xac02, 0x10c8, 0x1332, 0xa006, -+ 0x6006, 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, -+ 0x6003, 0x0000, 0x6022, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036, -+ 0x603a, 0x603e, 0x2061, 0xa600, 0x6048, 0x8000, 0x604a, 0xa086, -+ 0x0001, 0x0040, 0x7754, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, -+ 0x62d1, 0x127f, 0x0078, 0x7753, 0x601c, 0xa084, 0x000f, 0x0079, -+ 0x7761, 0x776a, 0x777b, 0x7797, 0x77b3, 0x920e, 0x922a, 0x9246, -+ 0x776a, 0x777b, 0xa186, 0x0013, 0x00c0, 0x7773, 0x1078, 0x61cd, -+ 0x1078, 0x62d1, 0x007c, 0xa18e, 0x0047, 0x00c0, 0x777a, 0xa016, -+ 0x1078, 0x15fa, 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, -+ 0x1332, 0x1079, 0x7785, 0x067f, 0x007c, 0x7795, 0x7b00, 0x7cb2, -+ 0x7795, 0x7d36, 0x77cf, 0x7795, 0x7795, 0x7a92, 0x80f6, 0x7795, -+ 0x7795, 0x7795, 0x7795, 0x7795, 0x7795, 0x1078, 0x1332, 0x067e, -+ 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x77a1, 0x067f, -+ 0x007c, 0x77b1, 0x87c3, 0x77b1, 0x77b1, 0x77b1, 0x77b1, 0x77b1, -+ 0x77b1, 0x8766, 0x8951, 0x77b1, 0x87f3, 0x8879, 0x87f3, 0x8879, -+ 0x77b1, 0x1078, 0x1332, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, -+ 0x1332, 0x1079, 0x77bd, 0x067f, 0x007c, 0x77cd, 0x813d, 0x820e, -+ 0x8368, 0x84e4, 0x77cd, 0x77cd, 0x77cd, 0x8116, 0x870e, 0x8712, -+ 0x77cd, 0x77cd, 0x77cd, 0x77cd, 0x8742, 0x1078, 0x1332, 0xa1b6, -+ 0x0015, 0x00c0, 0x77d7, 0x1078, 0x772d, 0x0078, 0x77dd, 0xa1b6, -+ 0x0016, 0x10c0, 0x1332, 0x1078, 0x772d, 0x007c, 0x20a9, 0x000e, -+ 0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, -+ 0x9398, 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, -+ 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x77ec, -+ 0x0e7e, 0x1078, 0x8d06, 0x0040, 0x7803, 0x6010, 0x2070, 0x7007, -+ 0x0000, 0x7037, 0x0103, 0x0e7f, 0x1078, 0x772d, 0x007c, 0x0d7e, -+ 0x037e, 0x7330, 0xa386, 0x0200, 0x00c0, 0x7814, 0x6018, 0x2068, -+ 0x6813, 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0040, 0x781e, -+ 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x1078, 0x772d, -+ 0x037f, 0x0d7f, 0x007c, 0x017e, 0x20a9, 0x002a, 0xae80, 0x000c, -+ 0x2098, 0x6010, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x20a9, 0x002a, -+ 0x6010, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x20a0, 0x53a3, -+ 0x0e7e, 0x6010, 0x2004, 0x2070, 0x7037, 0x0103, 0x0e7f, 0x1078, -+ 0x772d, 0x017f, 0x007c, 0x0e7e, 0x0d7e, 0x603f, 0x0000, 0x2c68, -+ 0x017e, 0x2009, 0x0035, 0x1078, 0x91bc, 0x017f, 0x00c0, 0x785f, -+ 0x027e, 0x6228, 0x2268, 0x027f, 0x2071, 0xab8c, 0x6b1c, 0xa386, -+ 0x0003, 0x0040, 0x7863, 0xa386, 0x0006, 0x0040, 0x7867, 0x1078, -+ 0x772d, 0x0078, 0x7869, 0x1078, 0x786c, 0x0078, 0x7869, 0x1078, -+ 0x7938, 0x0d7f, 0x0e7f, 0x007c, 0x0f7e, 0x6810, 0x2078, 0xa186, -+ 0x0015, 0x0040, 0x791d, 0xa18e, 0x0016, 0x00c0, 0x7936, 0x700c, -+ 0xa08c, 0xff00, 0xa186, 0x1700, 0x0040, 0x7882, 0xa186, 0x0300, -+ 0x00c0, 0x78f8, 0x8fff, 0x00c0, 0x788c, 0x6800, 0xa086, 0x000f, -+ 0x0040, 0x78db, 0x0078, 0x7934, 0x6808, 0xa086, 0xffff, 0x00c0, -+ 0x7921, 0x784c, 0xa084, 0x0060, 0xa086, 0x0020, 0x00c0, 0x78a2, -+ 0x797c, 0x7810, 0xa106, 0x00c0, 0x7921, 0x7980, 0x7814, 0xa106, -+ 0x00c0, 0x7921, 0x1078, 0x8eb9, 0x6830, 0x7852, 0x784c, 0xc0dc, -+ 0xc0f4, 0xc0d4, 0x784e, 0x027e, 0xa00e, 0x6a14, 0x2001, 0x000a, -+ 0x1078, 0x5c1c, 0x7854, 0xa20a, 0x0048, 0x78b7, 0x8011, 0x7a56, -+ 0x82ff, 0x027f, 0x00c0, 0x78c3, 0x0c7e, 0x2d60, 0x1078, 0x8ae0, -+ 0x0c7f, 0x0078, 0x7934, 0x0c7e, 0x0d7e, 0x2f68, 0x6838, 0xd0fc, -+ 0x00c0, 0x78ce, 0x1078, 0x4353, 0x0078, 0x78d0, 0x1078, 0x4431, -+ 0x0d7f, 0x0c7f, 0x00c0, 0x7921, 0x0c7e, 0x2d60, 0x1078, 0x772d, -+ 0x0c7f, 0x0078, 0x7934, 0x0c7e, 0x1078, 0x9187, 0x0040, 0x78f1, -+ 0x6013, 0x0000, 0x6818, 0x601a, 0x601f, 0x0003, 0x6904, 0x0c7e, -+ 0x2d60, 0x1078, 0x772d, 0x0c7f, 0x1078, 0x775c, 0x0c7f, 0x0078, -+ 0x7934, 0x2001, 0xa8a4, 0x2004, 0x683e, 0x0c7f, 0x0078, 0x7934, -+ 0x7008, 0xa086, 0x000b, 0x00c0, 0x7912, 0x6018, 0x200c, 0xc1bc, -+ 0x2102, 0x0c7e, 0x2d60, 0x7853, 0x0003, 0x6007, 0x0085, 0x6003, -+ 0x000b, 0x601f, 0x0002, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f, -+ 0x0078, 0x7934, 0x700c, 0xa086, 0x2a00, 0x00c0, 0x7921, 0x2001, -+ 0xa8a4, 0x2004, 0x683e, 0x0078, 0x7934, 0x1078, 0x7953, 0x0078, -+ 0x7936, 0x8fff, 0x1040, 0x1332, 0x0c7e, 0x0d7e, 0x2d60, 0x2f68, -+ 0x6837, 0x0103, 0x684b, 0x0003, 0x1078, 0x89cf, 0x1078, 0x8eb9, -+ 0x1078, 0x8ec6, 0x0d7f, 0x0c7f, 0x1078, 0x772d, 0x0f7f, 0x007c, -+ 0xa186, 0x0015, 0x00c0, 0x7942, 0x2001, 0xa8a4, 0x2004, 0x683e, -+ 0x0078, 0x7950, 0xa18e, 0x0016, 0x00c0, 0x7952, 0x0c7e, 0x2d00, -+ 0x2060, 0x1078, 0xa495, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x0c7f, -+ 0x1078, 0x772d, 0x007c, 0x027e, 0x037e, 0x047e, 0x7228, 0x7c80, -+ 0x7b7c, 0xd2f4, 0x0040, 0x7962, 0x2001, 0xa8a4, 0x2004, 0x683e, -+ 0x0078, 0x79c6, 0x0c7e, 0x2d60, 0x1078, 0x89f3, 0x0c7f, 0x6804, -+ 0xa086, 0x0050, 0x00c0, 0x797a, 0x0c7e, 0x2d00, 0x2060, 0x6003, -+ 0x0001, 0x6007, 0x0050, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f, -+ 0x0078, 0x79c6, 0x6800, 0xa086, 0x000f, 0x0040, 0x799c, 0x8fff, -+ 0x1040, 0x1332, 0x6824, 0xd0dc, 0x00c0, 0x799c, 0x6800, 0xa086, -+ 0x0004, 0x00c0, 0x79a1, 0x784c, 0xd0ac, 0x0040, 0x79a1, 0x784c, -+ 0xc0dc, 0xc0f4, 0x784e, 0x7850, 0xc0f4, 0xc0fc, 0x7852, 0x2001, -+ 0x0001, 0x682e, 0x0078, 0x79c0, 0x2001, 0x0007, 0x682e, 0x0078, -+ 0x79c0, 0x784c, 0xd0b4, 0x00c0, 0x79ae, 0xd0ac, 0x0040, 0x799c, -+ 0x784c, 0xd0f4, 0x00c0, 0x799c, 0x0078, 0x798f, 0xd2ec, 0x00c0, -+ 0x799c, 0x7024, 0xa306, 0x00c0, 0x79b9, 0x7020, 0xa406, 0x0040, -+ 0x799c, 0x7020, 0x6836, 0x7024, 0x683a, 0x2001, 0x0005, 0x682e, -+ 0x1078, 0x8ff0, 0x1078, 0x62d1, 0x0078, 0x79c8, 0x1078, 0x772d, -+ 0x047f, 0x037f, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x027e, 0x6034, -+ 0x2068, 0x6a1c, 0xa286, 0x0007, 0x0040, 0x7a35, 0xa286, 0x0002, -+ 0x0040, 0x7a35, 0xa286, 0x0000, 0x0040, 0x7a35, 0x6808, 0x6338, -+ 0xa306, 0x00c0, 0x7a35, 0x2071, 0xab8c, 0xa186, 0x0015, 0x0040, -+ 0x7a2f, 0xa18e, 0x0016, 0x00c0, 0x7a02, 0x6030, 0xa084, 0x00ff, -+ 0xa086, 0x0001, 0x00c0, 0x7a02, 0x700c, 0xa086, 0x2a00, 0x00c0, -+ 0x7a02, 0x6034, 0xa080, 0x0009, 0x200c, 0xc1dd, 0xc1f5, 0x2102, -+ 0x0078, 0x7a2f, 0x0c7e, 0x6034, 0x2060, 0x6104, 0xa186, 0x004b, -+ 0x0040, 0x7a22, 0xa186, 0x004c, 0x0040, 0x7a22, 0xa186, 0x004d, -+ 0x0040, 0x7a22, 0xa186, 0x004e, 0x0040, 0x7a22, 0xa186, 0x0052, -+ 0x0040, 0x7a22, 0x6010, 0x2068, 0x1078, 0x8d06, 0x1040, 0x1332, -+ 0x6853, 0x0003, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, -+ 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7f, 0x0078, 0x7a35, 0x6034, -+ 0x2068, 0x2001, 0xa8a4, 0x2004, 0x683e, 0x1078, 0x772d, 0x027f, -+ 0x0d7f, 0x0e7f, 0x007c, 0x0d7e, 0x20a9, 0x000e, 0x2e98, 0x6010, -+ 0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x00c0, 0x7a73, 0x6018, 0x2068, -+ 0x157e, 0x037e, 0x027e, 0xae90, 0x000c, 0xa290, 0x0004, 0x20a9, -+ 0x0004, 0xad98, 0x000a, 0x1078, 0x80de, 0x027f, 0x037f, 0x157f, -+ 0x00c0, 0x7a76, 0x157e, 0x037e, 0x027e, 0xae90, 0x000c, 0xa290, -+ 0x0008, 0x20a9, 0x0004, 0xad98, 0x0006, 0x1078, 0x80de, 0x027f, -+ 0x037f, 0x157f, 0x00c0, 0x7a76, 0x7038, 0x680a, 0x703c, 0x680e, -+ 0x6800, 0xc08d, 0x6802, 0x0d7f, 0x0078, 0x77f8, 0x1078, 0x2880, -+ 0x0c7e, 0x1078, 0x76c7, 0x2f00, 0x601a, 0x6013, 0x0000, 0x601f, -+ 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x1078, -+ 0x4502, 0x1078, 0x4535, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0c7f, -+ 0x0078, 0x7a73, 0x2100, 0xa1b2, 0x0044, 0x10c8, 0x1332, 0xa1b2, -+ 0x0040, 0x00c8, 0x7af7, 0x0079, 0x7a9d, 0x7aeb, 0x7adf, 0x7aeb, -+ 0x7aeb, 0x7aeb, 0x7aeb, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, -+ 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, -+ 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, -+ 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7aeb, 0x7aeb, -+ 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7add, -+ 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7aeb, -+ 0x7aeb, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, 0x7add, -+ 0x7add, 0x7add, 0x7aeb, 0x7add, 0x7add, 0x1078, 0x1332, 0x6003, -+ 0x0001, 0x6106, 0x1078, 0x5dd7, 0x127e, 0x2091, 0x8000, 0x1078, -+ 0x62d1, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x5dd7, -+ 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x2600, -+ 0x0079, 0x7afa, 0x7afe, 0x7afe, 0x7afe, 0x7aeb, 0x1078, 0x1332, -+ 0x6004, 0xa0b2, 0x0044, 0x10c8, 0x1332, 0xa1b6, 0x0013, 0x00c0, -+ 0x7b10, 0xa0b2, 0x0040, 0x00c8, 0x7c79, 0x2008, 0x0079, 0x7bbf, -+ 0xa1b6, 0x0027, 0x00c0, 0x7b7c, 0x1078, 0x61cd, 0x6004, 0x1078, -+ 0x8eec, 0x0040, 0x7b2d, 0x1078, 0x8f00, 0x0040, 0x7b74, 0xa08e, -+ 0x0021, 0x0040, 0x7b78, 0xa08e, 0x0022, 0x0040, 0x7b74, 0xa08e, -+ 0x003d, 0x0040, 0x7b78, 0x0078, 0x7b6f, 0x1078, 0x28a6, 0x2001, -+ 0x0007, 0x1078, 0x4502, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078, -+ 0x7c83, 0xa186, 0x007e, 0x00c0, 0x7b42, 0x2001, 0xa633, 0x2014, -+ 0xc285, 0x2202, 0x017e, 0x027e, 0x037e, 0x2110, 0x027e, 0x2019, -+ 0x0028, 0x1078, 0x73d0, 0x027f, 0x1078, 0xa4f1, 0x037f, 0x027f, -+ 0x017f, 0x017e, 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, 0x1078, -+ 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x0c7e, 0x6018, -+ 0xa065, 0x0040, 0x7b65, 0x1078, 0x47e9, 0x0c7f, 0x2c08, 0x1078, -+ 0x9f8b, 0x077f, 0x037f, 0x027f, 0x017f, 0x1078, 0x457f, 0x1078, -+ 0x772d, 0x1078, 0x62d1, 0x007c, 0x1078, 0x7c83, 0x0078, 0x7b6f, -+ 0x1078, 0x7ca6, 0x0078, 0x7b6f, 0xa186, 0x0014, 0x00c0, 0x7b73, -+ 0x1078, 0x61cd, 0x1078, 0x2880, 0x1078, 0x8eec, 0x00c0, 0x7b9b, -+ 0x1078, 0x28a6, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078, 0x7c83, -+ 0xa186, 0x007e, 0x00c0, 0x7b99, 0x2001, 0xa633, 0x200c, 0xc185, -+ 0x2102, 0x0078, 0x7b6f, 0x1078, 0x8f00, 0x00c0, 0x7ba3, 0x1078, -+ 0x7c83, 0x0078, 0x7b6f, 0x6004, 0xa08e, 0x0032, 0x00c0, 0x7bb4, -+ 0x0e7e, 0x0f7e, 0x2071, 0xa682, 0x2079, 0x0000, 0x1078, 0x2bd7, -+ 0x0f7f, 0x0e7f, 0x0078, 0x7b6f, 0x6004, 0xa08e, 0x0021, 0x0040, -+ 0x7b9f, 0xa08e, 0x0022, 0x1040, 0x7c83, 0x0078, 0x7b6f, 0x7c01, -+ 0x7c03, 0x7c07, 0x7c0b, 0x7c0f, 0x7c13, 0x7bff, 0x7bff, 0x7bff, -+ 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, -+ 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, -+ 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7c17, 0x7c29, 0x7bff, -+ 0x7c2b, 0x7c29, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7c29, -+ 0x7c29, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, 0x7bff, -+ 0x7bff, 0x7c5c, 0x7c29, 0x7bff, 0x7c23, 0x7bff, 0x7bff, 0x7bff, -+ 0x7c25, 0x7bff, 0x7bff, 0x7bff, 0x7c29, 0x7bff, 0x7bff, 0x1078, -+ 0x1332, 0x0078, 0x7c29, 0x2001, 0x000b, 0x0078, 0x7c36, 0x2001, -+ 0x0003, 0x0078, 0x7c36, 0x2001, 0x0005, 0x0078, 0x7c36, 0x2001, -+ 0x0001, 0x0078, 0x7c36, 0x2001, 0x0009, 0x0078, 0x7c36, 0x1078, -+ 0x61cd, 0x6003, 0x0005, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x1078, -+ 0x62d1, 0x0078, 0x7c35, 0x0078, 0x7c29, 0x0078, 0x7c29, 0x1078, -+ 0x4502, 0x0078, 0x7c6e, 0x1078, 0x61cd, 0x6003, 0x0004, 0x2001, -+ 0xa8a2, 0x2004, 0x6016, 0x1078, 0x62d1, 0x007c, 0x1078, 0x4502, -+ 0x1078, 0x61cd, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002, -+ 0x037e, 0x2019, 0xa65d, 0x2304, 0xa084, 0xff00, 0x00c0, 0x7c4d, -+ 0x2019, 0xa8a2, 0x231c, 0x0078, 0x7c56, 0x8007, 0xa09a, 0x0004, -+ 0x0048, 0x7c48, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, -+ 0x1078, 0x62d1, 0x0078, 0x7c35, 0x0e7e, 0x0f7e, 0x2071, 0xa682, -+ 0x2079, 0x0000, 0x1078, 0x2bd7, 0x0f7f, 0x0e7f, 0x1078, 0x61cd, -+ 0x1078, 0x772d, 0x1078, 0x62d1, 0x0078, 0x7c35, 0x1078, 0x61cd, -+ 0x6003, 0x0002, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x1078, 0x62d1, -+ 0x007c, 0x2600, 0x2008, 0x0079, 0x7c7d, 0x7c81, 0x7c81, 0x7c81, -+ 0x7c6e, 0x1078, 0x1332, 0x0e7e, 0x1078, 0x8d06, 0x0040, 0x7c9f, -+ 0x6010, 0x2070, 0x7038, 0xd0fc, 0x0040, 0x7c9f, 0x7007, 0x0000, -+ 0x017e, 0x6004, 0xa08e, 0x0021, 0x0040, 0x7ca1, 0xa08e, 0x003d, -+ 0x0040, 0x7ca1, 0x017f, 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f, -+ 0x007c, 0x017f, 0x1078, 0x7ca6, 0x0078, 0x7c9f, 0x0e7e, 0xacf0, -+ 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x7023, 0x8001, -+ 0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0x00ff, -+ 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1332, 0x6604, 0xa6b6, 0x0043, -+ 0x00c0, 0x7cc6, 0x1078, 0x9134, 0x0078, 0x7d25, 0x6604, 0xa6b6, -+ 0x0033, 0x00c0, 0x7ccf, 0x1078, 0x90d8, 0x0078, 0x7d25, 0x6604, -+ 0xa6b6, 0x0028, 0x00c0, 0x7cd8, 0x1078, 0x8f2f, 0x0078, 0x7d25, -+ 0x6604, 0xa6b6, 0x0029, 0x00c0, 0x7ce1, 0x1078, 0x8f49, 0x0078, -+ 0x7d25, 0x6604, 0xa6b6, 0x001f, 0x00c0, 0x7cea, 0x1078, 0x77de, -+ 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0000, 0x00c0, 0x7cf3, 0x1078, -+ 0x7a3b, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0022, 0x00c0, 0x7cfc, -+ 0x1078, 0x7807, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0035, 0x00c0, -+ 0x7d05, 0x1078, 0x7843, 0x0078, 0x7d25, 0x6604, 0xa6b6, 0x0039, -+ 0x00c0, 0x7d0e, 0x1078, 0x79cc, 0x0078, 0x7d25, 0x6604, 0xa6b6, -+ 0x003d, 0x00c0, 0x7d17, 0x1078, 0x7823, 0x0078, 0x7d25, 0xa1b6, -+ 0x0015, 0x00c0, 0x7d1f, 0x1079, 0x7d2a, 0x0078, 0x7d25, 0xa1b6, -+ 0x0016, 0x00c0, 0x7d26, 0x1079, 0x7e7f, 0x007c, 0x1078, 0x7773, -+ 0x0078, 0x7d25, 0x7d4e, 0x7d51, 0x7d4e, 0x7d9c, 0x7d4e, 0x7e13, -+ 0x7e8b, 0x7d4e, 0x7d4e, 0x7e57, 0x7d4e, 0x7e6d, 0xa1b6, 0x0048, -+ 0x0040, 0x7d42, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, -+ 0x15fa, 0x007c, 0x0e7e, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, -+ 0x7037, 0x0103, 0x0e7f, 0x1078, 0x772d, 0x007c, 0x0005, 0x0005, -+ 0x007c, 0x0e7e, 0x2071, 0xa600, 0x7080, 0xa086, 0x0074, 0x00c0, -+ 0x7d85, 0x1078, 0x9f5f, 0x00c0, 0x7d77, 0x0d7e, 0x6018, 0x2068, -+ 0x7030, 0xd08c, 0x0040, 0x7d6a, 0x6800, 0xd0bc, 0x0040, 0x7d6a, -+ 0xc0c5, 0x6802, 0x1078, 0x7d89, 0x0d7f, 0x2001, 0x0006, 0x1078, -+ 0x4502, 0x1078, 0x28a6, 0x1078, 0x772d, 0x0078, 0x7d87, 0x2001, -+ 0x000a, 0x1078, 0x4502, 0x1078, 0x28a6, 0x6003, 0x0001, 0x6007, -+ 0x0001, 0x1078, 0x5dd7, 0x0078, 0x7d87, 0x1078, 0x7dff, 0x0e7f, -+ 0x007c, 0x6800, 0xd084, 0x0040, 0x7d9b, 0x2001, 0x0000, 0x1078, -+ 0x44ee, 0x2069, 0xa652, 0x6804, 0xd0a4, 0x0040, 0x7d9b, 0x2001, -+ 0x0006, 0x1078, 0x4535, 0x007c, 0x0d7e, 0x2011, 0xa620, 0x2204, -+ 0xa086, 0x0074, 0x00c0, 0x7dfb, 0x6018, 0x2068, 0x6aa0, 0xa286, -+ 0x007e, 0x00c0, 0x7daf, 0x1078, 0x7f9b, 0x0078, 0x7dfd, 0x1078, -+ 0x7f91, 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, 0xa286, 0x0080, -+ 0x00c0, 0x7dd3, 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6010, 0xa005, -+ 0x0040, 0x7dc9, 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6833, -+ 0x0200, 0x2001, 0x0006, 0x1078, 0x4502, 0x1078, 0x28a6, 0x1078, -+ 0x772d, 0x0078, 0x7dfd, 0x0e7e, 0x2071, 0xa633, 0x2e04, 0xd09c, -+ 0x0040, 0x7dee, 0x2071, 0xab80, 0x7108, 0x720c, 0xa18c, 0x00ff, -+ 0x00c0, 0x7de6, 0xa284, 0xff00, 0x0040, 0x7dee, 0x6018, 0x2070, -+ 0x70a0, 0xd0bc, 0x00c0, 0x7dee, 0x7112, 0x7216, 0x0e7f, 0x2001, -+ 0x0004, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, -+ 0x5dd7, 0x0078, 0x7dfd, 0x1078, 0x7dff, 0x0d7f, 0x007c, 0x2001, -+ 0x0007, 0x1078, 0x4502, 0x2001, 0xa600, 0x2004, 0xa086, 0x0003, -+ 0x00c0, 0x7e0e, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078, 0x28a6, -+ 0x1078, 0x772d, 0x007c, 0x0e7e, 0x2071, 0xa600, 0x7080, 0xa086, -+ 0x0014, 0x00c0, 0x7e51, 0x7000, 0xa086, 0x0003, 0x00c0, 0x7e26, -+ 0x6010, 0xa005, 0x00c0, 0x7e26, 0x1078, 0x3699, 0x0d7e, 0x6018, -+ 0x2068, 0x1078, 0x4649, 0x1078, 0x7d89, 0x0d7f, 0x1078, 0x8043, -+ 0x00c0, 0x7e51, 0x0d7e, 0x6018, 0x2068, 0x6890, 0x0d7f, 0xa005, -+ 0x0040, 0x7e51, 0x2001, 0x0006, 0x1078, 0x4502, 0x0e7e, 0x6010, -+ 0xa005, 0x0040, 0x7e4a, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, -+ 0x7033, 0x0200, 0x0e7f, 0x1078, 0x28a6, 0x1078, 0x772d, 0x0078, -+ 0x7e55, 0x1078, 0x7c83, 0x1078, 0x7dff, 0x0e7f, 0x007c, 0x2011, -+ 0xa620, 0x2204, 0xa086, 0x0014, 0x00c0, 0x7e6a, 0x2001, 0x0002, -+ 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x5dd7, -+ 0x0078, 0x7e6c, 0x1078, 0x7dff, 0x007c, 0x2011, 0xa620, 0x2204, -+ 0xa086, 0x0004, 0x00c0, 0x7e7c, 0x2001, 0x0007, 0x1078, 0x4502, -+ 0x1078, 0x772d, 0x0078, 0x7e7e, 0x1078, 0x7dff, 0x007c, 0x7d4e, -+ 0x7e97, 0x7d4e, 0x7ed2, 0x7d4e, 0x7f44, 0x7e8b, 0x7d4e, 0x7d4e, -+ 0x7f59, 0x7d4e, 0x7f6c, 0x6604, 0xa686, 0x0003, 0x0040, 0x7e13, -+ 0xa6b6, 0x001e, 0x00c0, 0x7e96, 0x1078, 0x772d, 0x007c, 0x0d7e, -+ 0x0c7e, 0x1078, 0x7f7f, 0x00c0, 0x7ead, 0x2001, 0x0000, 0x1078, -+ 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, -+ 0x0002, 0x1078, 0x5dd7, 0x0078, 0x7ecf, 0x2009, 0xab8e, 0x2104, -+ 0xa086, 0x0009, 0x00c0, 0x7ec2, 0x6018, 0x2068, 0x6840, 0xa084, -+ 0x00ff, 0xa005, 0x0040, 0x7ecd, 0x8001, 0x6842, 0x6017, 0x000a, -+ 0x0078, 0x7ecf, 0x2009, 0xab8f, 0x2104, 0xa084, 0xff00, 0xa086, -+ 0x1900, 0x00c0, 0x7ecd, 0x0078, 0x7ea1, 0x1078, 0x7dff, 0x0c7f, -+ 0x0d7f, 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7ee6, 0x2001, 0x0000, -+ 0x1078, 0x44ee, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003, 0x0001, -+ 0x6007, 0x0002, 0x1078, 0x5dd7, 0x0078, 0x7f12, 0x1078, 0x7c83, -+ 0x2009, 0xab8e, 0x2134, 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0040, -+ 0x7f13, 0xa686, 0x000b, 0x0040, 0x7f10, 0x2009, 0xab8f, 0x2104, -+ 0xa084, 0xff00, 0x00c0, 0x7f00, 0xa686, 0x0009, 0x0040, 0x7f13, -+ 0xa086, 0x1900, 0x00c0, 0x7f10, 0xa686, 0x0009, 0x0040, 0x7f13, -+ 0x2001, 0x0004, 0x1078, 0x4502, 0x1078, 0x772d, 0x0078, 0x7f12, -+ 0x1078, 0x7dff, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, -+ 0x0040, 0x7f21, 0x6838, 0xd0fc, 0x0040, 0x7f21, 0x0d7f, 0x0078, -+ 0x7f10, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, -+ 0x7f32, 0x8001, 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f, -+ 0x0078, 0x7f12, 0x68a0, 0xa086, 0x007e, 0x00c0, 0x7f3f, 0x0e7e, -+ 0x2071, 0xa600, 0x1078, 0x42b8, 0x0e7f, 0x0078, 0x7f41, 0x1078, -+ 0x2880, 0x0d7f, 0x0078, 0x7f10, 0x1078, 0x7f8e, 0x00c0, 0x7f54, -+ 0x2001, 0x0004, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0003, -+ 0x1078, 0x5dd7, 0x0078, 0x7f58, 0x1078, 0x7c83, 0x1078, 0x7dff, -+ 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7f69, 0x2001, 0x0008, 0x1078, -+ 0x4502, 0x6003, 0x0001, 0x6007, 0x0005, 0x1078, 0x5dd7, 0x0078, -+ 0x7f6b, 0x1078, 0x7dff, 0x007c, 0x1078, 0x7f8e, 0x00c0, 0x7f7c, -+ 0x2001, 0x000a, 0x1078, 0x4502, 0x6003, 0x0001, 0x6007, 0x0001, -+ 0x1078, 0x5dd7, 0x0078, 0x7f7e, 0x1078, 0x7dff, 0x007c, 0x2009, -+ 0xab8e, 0x2104, 0xa086, 0x0003, 0x00c0, 0x7f8d, 0x2009, 0xab8f, -+ 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001, -+ 0x007c, 0x0c7e, 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x45d6, -+ 0x017f, 0x0c7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x037e, 0x017e, -+ 0x6018, 0x2068, 0x2071, 0xa633, 0x2e04, 0xa085, 0x0003, 0x2072, -+ 0x1078, 0x8014, 0x0040, 0x7fd9, 0x2009, 0xa633, 0x2104, 0xc0cd, -+ 0x200a, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, 0x7fc2, 0xa006, -+ 0x2020, 0x2009, 0x002a, 0x1078, 0xa21d, 0x2001, 0xa60c, 0x200c, -+ 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0001, 0x1078, 0x284f, -+ 0x2071, 0xa600, 0x1078, 0x2677, 0x0c7e, 0x157e, 0x20a9, 0x0081, -+ 0x2009, 0x007f, 0x1078, 0x298e, 0x8108, 0x00f0, 0x7fd2, 0x157f, -+ 0x0c7f, 0x1078, 0x7f91, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, -+ 0xab80, 0x2079, 0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0xa61b, -+ 0x206a, 0x78e6, 0x007e, 0x8e70, 0x2e04, 0x2069, 0xa61c, 0x206a, -+ 0x78ea, 0xa084, 0xff00, 0x017f, 0xa105, 0x2009, 0xa626, 0x200a, -+ 0x2069, 0xab8e, 0x2071, 0xa89e, 0x6810, 0x2072, 0x6814, 0x7006, -+ 0x6818, 0x700a, 0x681c, 0x700e, 0x1078, 0x906e, 0x2001, 0x0006, -+ 0x1078, 0x4502, 0x1078, 0x28a6, 0x1078, 0x772d, 0x017f, 0x037f, -+ 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x027e, 0x037e, 0x0e7e, 0x157e, -+ 0x2019, 0xa626, 0x231c, 0x83ff, 0x0040, 0x803e, 0x2071, 0xab80, -+ 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, 0xff00, 0xa205, 0xa306, -+ 0x00c0, 0x803e, 0x2011, 0xab96, 0xad98, 0x000a, 0x20a9, 0x0004, -+ 0x1078, 0x80de, 0x00c0, 0x803e, 0x2011, 0xab9a, 0xad98, 0x0006, -+ 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x803e, 0x157f, 0x0e7f, -+ 0x037f, 0x027f, 0x007c, 0x0e7e, 0x2071, 0xab8c, 0x7004, 0xa086, -+ 0x0014, 0x00c0, 0x8066, 0x7008, 0xa086, 0x0800, 0x00c0, 0x8066, -+ 0x700c, 0xd0ec, 0x0040, 0x8064, 0xa084, 0x0f00, 0xa086, 0x0100, -+ 0x00c0, 0x8064, 0x7024, 0xd0a4, 0x00c0, 0x8061, 0xd0ac, 0x0040, -+ 0x8064, 0xa006, 0x0078, 0x8066, 0xa085, 0x0001, 0x0e7f, 0x007c, -+ 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e, -+ 0x127e, 0x2091, 0x8000, 0x2029, 0xa8ba, 0x252c, 0x2021, 0xa8c0, -+ 0x2424, 0x2061, 0xad00, 0x2071, 0xa600, 0x7248, 0x7064, 0xa202, -+ 0x00c8, 0x80cc, 0x1078, 0xa242, 0x0040, 0x80c4, 0x671c, 0xa786, -+ 0x0001, 0x0040, 0x80c4, 0xa786, 0x0007, 0x0040, 0x80c4, 0x2500, -+ 0xac06, 0x0040, 0x80c4, 0x2400, 0xac06, 0x0040, 0x80c4, 0x0c7e, -+ 0x6000, 0xa086, 0x0004, 0x00c0, 0x809f, 0x1078, 0x1757, 0xa786, -+ 0x0008, 0x00c0, 0x80ae, 0x1078, 0x8f00, 0x00c0, 0x80ae, 0x0c7f, -+ 0x1078, 0x7c83, 0x1078, 0x8ec6, 0x0078, 0x80c4, 0x6010, 0x2068, -+ 0x1078, 0x8d06, 0x0040, 0x80c1, 0xa786, 0x0003, 0x00c0, 0x80d6, -+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078, -+ 0x8eb9, 0x1078, 0x8ec6, 0x0c7f, 0xace0, 0x0010, 0x7058, 0xac02, -+ 0x00c8, 0x80cc, 0x0078, 0x807d, 0x127f, 0x007f, 0x027f, 0x047f, -+ 0x057f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006, -+ 0x00c0, 0x80b8, 0x1078, 0xa1ca, 0x0078, 0x80c1, 0x220c, 0x2304, -+ 0xa106, 0x00c0, 0x80e9, 0x8210, 0x8318, 0x00f0, 0x80de, 0xa006, -+ 0x007c, 0x2304, 0xa102, 0x0048, 0x80f1, 0x2001, 0x0001, 0x0078, -+ 0x80f3, 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a, -+ 0x0044, 0x10c8, 0x1332, 0x1078, 0x8eec, 0x0040, 0x8105, 0x1078, -+ 0x8f00, 0x0040, 0x8112, 0x0078, 0x810b, 0x1078, 0x28a6, 0x1078, -+ 0x8f00, 0x0040, 0x8112, 0x1078, 0x61cd, 0x1078, 0x772d, 0x1078, -+ 0x62d1, 0x007c, 0x1078, 0x7c83, 0x0078, 0x810b, 0xa182, 0x0040, -+ 0x0079, 0x811a, 0x812d, 0x812d, 0x812d, 0x812d, 0x812d, 0x812d, -+ 0x812d, 0x812d, 0x812d, 0x812d, 0x812d, 0x812f, 0x812f, 0x812f, -+ 0x812f, 0x812d, 0x812d, 0x812d, 0x812f, 0x1078, 0x1332, 0x600b, -+ 0xffff, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0, -+ 0x8146, 0x6004, 0xa082, 0x0040, 0x0079, 0x81d1, 0xa186, 0x0027, -+ 0x00c0, 0x8168, 0x1078, 0x61cd, 0x1078, 0x2880, 0x0d7e, 0x6110, -+ 0x2168, 0x1078, 0x8d06, 0x0040, 0x8162, 0x6837, 0x0103, 0x684b, -+ 0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x1078, 0x4a73, -+ 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c, -+ 0xa186, 0x0014, 0x00c0, 0x8171, 0x6004, 0xa082, 0x0040, 0x0079, -+ 0x8199, 0xa186, 0x0046, 0x0040, 0x817d, 0xa186, 0x0045, 0x0040, -+ 0x817d, 0xa186, 0x0047, 0x10c0, 0x1332, 0x2001, 0x0109, 0x2004, -+ 0xd084, 0x0040, 0x8196, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, -+ 0x027e, 0x1078, 0x5c56, 0x027f, 0x017f, 0x007f, 0x127f, 0x6000, -+ 0xa086, 0x0002, 0x00c0, 0x8196, 0x0078, 0x820e, 0x1078, 0x7773, -+ 0x007c, 0x81ae, 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ac, -+ 0x81ac, 0x81ac, 0x81ac, 0x81ac, 0x81ca, 0x81ca, 0x81ca, 0x81ca, -+ 0x81ac, 0x81ca, 0x81ac, 0x81ca, 0x1078, 0x1332, 0x1078, 0x61cd, -+ 0x0d7e, 0x6110, 0x2168, 0x1078, 0x8d06, 0x0040, 0x81c4, 0x6837, -+ 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ec, 0x6852, -+ 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d, 0x1078, -+ 0x62d1, 0x007c, 0x1078, 0x61cd, 0x1078, 0x772d, 0x1078, 0x62d1, -+ 0x007c, 0x81e6, 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81e4, -+ 0x81e4, 0x81e4, 0x81e4, 0x81e4, 0x81f8, 0x81f8, 0x81f8, 0x81f8, -+ 0x81e4, 0x8207, 0x81e4, 0x81f8, 0x1078, 0x1332, 0x1078, 0x61cd, -+ 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002, 0x1078, 0x62d1, -+ 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x007c, -+ 0x1078, 0x61cd, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x2001, 0xa8a4, -+ 0x2004, 0x603e, 0x6003, 0x000f, 0x1078, 0x62d1, 0x007c, 0x1078, -+ 0x61cd, 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c, 0xa182, 0x0040, -+ 0x0079, 0x8212, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x8227, -+ 0x8327, 0x8359, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, -+ 0x8225, 0x8225, 0x8225, 0x8225, 0x8225, 0x1078, 0x1332, 0x0e7e, -+ 0x0d7e, 0x603f, 0x0000, 0x2071, 0xab80, 0x7124, 0x610a, 0x2071, -+ 0xab8c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0040, -+ 0x82e9, 0xa68c, 0x0c00, 0x0040, 0x825e, 0x0f7e, 0x2c78, 0x1078, -+ 0x4963, 0x0f7f, 0x0040, 0x825a, 0x684c, 0xd0ac, 0x0040, 0x825a, -+ 0x6024, 0xd0dc, 0x00c0, 0x825a, 0x6850, 0xd0bc, 0x00c0, 0x825a, -+ 0x7318, 0x6814, 0xa306, 0x00c0, 0x8301, 0x731c, 0x6810, 0xa306, -+ 0x00c0, 0x8301, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, -+ 0xa186, 0x0002, 0x0040, 0x8291, 0xa186, 0x0028, 0x00c0, 0x826e, -+ 0x1078, 0x8eda, 0x684b, 0x001c, 0x0078, 0x8293, 0xd6dc, 0x0040, -+ 0x828a, 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0040, 0x8288, 0x6914, -+ 0x6a10, 0x2100, 0xa205, 0x0040, 0x8288, 0x7018, 0xa106, 0x00c0, -+ 0x8285, 0x701c, 0xa206, 0x0040, 0x8288, 0x6962, 0x6a5e, 0xc6dc, -+ 0x0078, 0x8293, 0xd6d4, 0x0040, 0x8291, 0x684b, 0x0007, 0x0078, -+ 0x8293, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4, -+ 0x0040, 0x82bc, 0xa686, 0x0100, 0x00c0, 0x82a7, 0x2001, 0xab99, -+ 0x2004, 0xa005, 0x00c0, 0x82a7, 0xc6c4, 0x0078, 0x8236, 0x7328, -+ 0x732c, 0x6b56, 0x83ff, 0x0040, 0x82bc, 0xa38a, 0x0009, 0x0048, -+ 0x82b3, 0x2019, 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90, -+ 0x0019, 0x1078, 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x8317, 0x7124, -+ 0x695a, 0x81ff, 0x0040, 0x8317, 0xa192, 0x0021, 0x00c8, 0x82d5, -+ 0x2071, 0xab98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, -+ 0x89e2, 0x1078, 0x91f4, 0x0078, 0x8317, 0x6838, 0xd0fc, 0x0040, -+ 0x82de, 0x2009, 0x0020, 0x695a, 0x0078, 0x82c8, 0x0f7e, 0x2d78, -+ 0x1078, 0x897a, 0x0f7f, 0x1078, 0x91f4, 0x1078, 0x89cf, 0x0078, -+ 0x8319, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x8307, -+ 0x684c, 0xd0ac, 0x0040, 0x8307, 0x6024, 0xd0dc, 0x00c0, 0x8307, -+ 0x6850, 0xd0bc, 0x00c0, 0x8307, 0x6810, 0x6914, 0xa105, 0x0040, -+ 0x8307, 0x1078, 0x8fbf, 0x0d7f, 0x0e7f, 0x0078, 0x8326, 0x684b, -+ 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x8317, -+ 0x6810, 0x6914, 0xa115, 0x0040, 0x8317, 0x1078, 0x84d5, 0x1078, -+ 0x4a73, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x1078, 0x8f89, -+ 0x0d7f, 0x0e7f, 0x00c0, 0x8326, 0x1078, 0x772d, 0x007c, 0x0f7e, -+ 0x6003, 0x0003, 0x2079, 0xab8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, -+ 0x6010, 0x2078, 0x784c, 0xd0ac, 0x0040, 0x833e, 0x6003, 0x0002, -+ 0x0f7f, 0x007c, 0x2130, 0x2228, 0x0078, 0x834a, 0x2400, 0x797c, -+ 0xa10a, 0x2300, 0x7a80, 0xa213, 0x2600, 0xa102, 0x2500, 0xa203, -+ 0x0048, 0x833a, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x603f, -+ 0x0000, 0x2c10, 0x1078, 0x1cf0, 0x1078, 0x5df6, 0x1078, 0x639b, -+ 0x007c, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0004, 0x6110, -+ 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x15fa, 0x007c, -+ 0xa182, 0x0040, 0x0079, 0x836c, 0x837f, 0x837f, 0x837f, 0x837f, -+ 0x837f, 0x8381, 0x8424, 0x837f, 0x837f, 0x843a, 0x84ab, 0x837f, -+ 0x837f, 0x837f, 0x837f, 0x84ba, 0x837f, 0x837f, 0x837f, 0x1078, -+ 0x1332, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0xab8c, 0x6110, -+ 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, -+ 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x841f, -+ 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x83a2, 0x7018, 0x7862, -+ 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x841f, 0x1078, 0x138b, -+ 0x1040, 0x1332, 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, -+ 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, -+ 0xa68c, 0x0c00, 0x0040, 0x83c0, 0x7318, 0x6b62, 0x731c, 0x6b5e, -+ 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x83dc, 0xa186, 0x0028, -+ 0x00c0, 0x83ce, 0x684b, 0x001c, 0x0078, 0x83de, 0xd6dc, 0x0040, -+ 0x83d5, 0x684b, 0x0015, 0x0078, 0x83de, 0xd6d4, 0x0040, 0x83dc, -+ 0x684b, 0x0007, 0x0078, 0x83de, 0x684b, 0x0000, 0x6f4e, 0x7850, -+ 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x83fc, 0x7328, -+ 0x732c, 0x6b56, 0x83ff, 0x0040, 0x83fc, 0xa38a, 0x0009, 0x0048, -+ 0x83f3, 0x2019, 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90, -+ 0x0019, 0x1078, 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x841f, 0x7124, -+ 0x695a, 0x81ff, 0x0040, 0x841f, 0xa192, 0x0021, 0x00c8, 0x8413, -+ 0x2071, 0xab98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, -+ 0x89e2, 0x0078, 0x841f, 0x7838, 0xd0fc, 0x0040, 0x841c, 0x2009, -+ 0x0020, 0x695a, 0x0078, 0x8408, 0x2d78, 0x1078, 0x897a, 0x0d7f, -+ 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079, -+ 0xab8c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, -+ 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x1cf0, 0x1078, -+ 0x6df4, 0x007c, 0x0d7e, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, -+ 0x0040, 0x8446, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x6003, 0x0002, -+ 0x1078, 0x627a, 0x1078, 0x639b, 0x6110, 0x2168, 0x694c, 0xd1e4, -+ 0x0040, 0x84a9, 0xd1cc, 0x0040, 0x8480, 0x6948, 0x6838, 0xd0fc, -+ 0x0040, 0x8478, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90, -+ 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, -+ 0x2012, 0x8318, 0x8210, 0x00f0, 0x8467, 0x157f, 0x007f, 0x6852, -+ 0x007f, 0x684e, 0x017f, 0x2168, 0x1078, 0x13b4, 0x0078, 0x84a3, -+ 0x017e, 0x1078, 0x13b4, 0x0d7f, 0x1078, 0x89cf, 0x0078, 0x84a3, -+ 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0040, -+ 0x849f, 0xa086, 0x0028, 0x00c0, 0x8491, 0x684b, 0x001c, 0x0078, -+ 0x84a1, 0xd1dc, 0x0040, 0x8498, 0x684b, 0x0015, 0x0078, 0x84a1, -+ 0xd1d4, 0x0040, 0x849f, 0x684b, 0x0007, 0x0078, 0x84a1, 0x684b, -+ 0x0000, 0x1078, 0x4a73, 0x1078, 0x8f89, 0x00c0, 0x84a9, 0x1078, -+ 0x772d, 0x0d7f, 0x007c, 0x2019, 0x0001, 0x1078, 0x7058, 0x6003, -+ 0x0002, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x1078, 0x627a, 0x1078, -+ 0x639b, 0x007c, 0x1078, 0x627a, 0x1078, 0x2880, 0x0d7e, 0x6110, -+ 0x2168, 0x1078, 0x8d06, 0x0040, 0x84cf, 0x6837, 0x0103, 0x684b, -+ 0x0029, 0x6847, 0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, -+ 0x1078, 0x772d, 0x1078, 0x639b, 0x007c, 0x684b, 0x0015, 0xd1fc, -+ 0x0040, 0x84e1, 0x684b, 0x0007, 0x8002, 0x8000, 0x810a, 0xa189, -+ 0x0000, 0x6962, 0x685e, 0x007c, 0xa182, 0x0040, 0x0079, 0x84e8, -+ 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fd, 0x84fb, 0x85d0, -+ 0x85dc, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, 0x84fb, -+ 0x84fb, 0x84fb, 0x84fb, 0x1078, 0x1332, 0x077e, 0x0f7e, 0x0e7e, -+ 0x0d7e, 0x2071, 0xab8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, -+ 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x851b, 0xa684, -+ 0x00ff, 0x00c0, 0x851b, 0x6024, 0xd0f4, 0x0040, 0x851b, 0x1078, -+ 0x8fbf, 0x0078, 0x85cb, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, -+ 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x85c0, 0xa694, -+ 0xff00, 0xa284, 0x0c00, 0x0040, 0x8531, 0x7018, 0x7862, 0x701c, -+ 0x785e, 0xa284, 0x0300, 0x0040, 0x85bd, 0xa686, 0x0100, 0x00c0, -+ 0x8543, 0x2001, 0xab99, 0x2004, 0xa005, 0x00c0, 0x8543, 0xc6c4, -+ 0x7e46, 0x0078, 0x8524, 0x1078, 0x138b, 0x1040, 0x1332, 0x2d00, -+ 0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, -+ 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, -+ 0x0040, 0x855e, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, -+ 0xa186, 0x0002, 0x0040, 0x857a, 0xa186, 0x0028, 0x00c0, 0x856c, -+ 0x684b, 0x001c, 0x0078, 0x857c, 0xd6dc, 0x0040, 0x8573, 0x684b, -+ 0x0015, 0x0078, 0x857c, 0xd6d4, 0x0040, 0x857a, 0x684b, 0x0007, -+ 0x0078, 0x857c, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, -+ 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x859a, 0x7328, 0x732c, 0x6b56, -+ 0x83ff, 0x0040, 0x859a, 0xa38a, 0x0009, 0x0048, 0x8591, 0x2019, -+ 0x0008, 0x037e, 0x2308, 0x2019, 0xab98, 0xad90, 0x0019, 0x1078, -+ 0x89e2, 0x037f, 0xd6cc, 0x0040, 0x85bd, 0x7124, 0x695a, 0x81ff, -+ 0x0040, 0x85bd, 0xa192, 0x0021, 0x00c8, 0x85b1, 0x2071, 0xab98, -+ 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x89e2, 0x0078, -+ 0x85bd, 0x7838, 0xd0fc, 0x0040, 0x85ba, 0x2009, 0x0020, 0x695a, -+ 0x0078, 0x85a6, 0x2d78, 0x1078, 0x897a, 0xd6dc, 0x00c0, 0x85c3, -+ 0xa006, 0x0078, 0x85c9, 0x2001, 0x0001, 0x2071, 0xab8c, 0x7218, -+ 0x731c, 0x1078, 0x1653, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, -+ 0x2001, 0xa8a4, 0x2004, 0x603e, 0x20e1, 0x0005, 0x3d18, 0x3e20, -+ 0x2c10, 0x1078, 0x15fa, 0x007c, 0x2001, 0xa8a4, 0x2004, 0x603e, -+ 0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040, -+ 0x870c, 0x603f, 0x0000, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x0f7f, -+ 0x0040, 0x8622, 0x6814, 0x6910, 0xa115, 0x0040, 0x8622, 0x6a60, -+ 0xa206, 0x00c0, 0x85ff, 0x685c, 0xa106, 0x0040, 0x8622, 0x684c, -+ 0xc0e4, 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, 0x0000, -+ 0x6024, 0xd0f4, 0x00c0, 0x8617, 0x697c, 0x6810, 0xa102, 0x603a, -+ 0x6980, 0x6814, 0xa103, 0x6036, 0x6024, 0xc0f5, 0x6026, 0x0d7e, -+ 0x6018, 0x2068, 0x683c, 0x8000, 0x683e, 0x0d7f, 0x1078, 0x8fbf, -+ 0x0078, 0x870c, 0x694c, 0xd1cc, 0x0040, 0x86d1, 0x6948, 0x6838, -+ 0xd0fc, 0x0040, 0x8689, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, -+ 0x0f7e, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0040, -+ 0x865c, 0xa086, 0x0028, 0x00c0, 0x8643, 0x684b, 0x001c, 0x784b, -+ 0x001c, 0x0078, 0x8667, 0xd1dc, 0x0040, 0x8653, 0x684b, 0x0015, -+ 0x784b, 0x0015, 0x1078, 0x916c, 0x0040, 0x8651, 0x7944, 0xc1dc, -+ 0x7946, 0x0078, 0x8667, 0xd1d4, 0x0040, 0x865c, 0x684b, 0x0007, -+ 0x784b, 0x0007, 0x0078, 0x8667, 0x684c, 0xd0ac, 0x0040, 0x8667, -+ 0x6810, 0x6914, 0xa115, 0x0040, 0x8667, 0x1078, 0x84d5, 0x6848, -+ 0x784a, 0x6860, 0x7862, 0x685c, 0x785e, 0xad90, 0x000d, 0xaf98, -+ 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318, -+ 0x8210, 0x00f0, 0x8675, 0x157f, 0x0f7f, 0x007f, 0x6852, 0x007f, -+ 0x684e, 0x1078, 0x91f4, 0x017f, 0x2168, 0x1078, 0x13b4, 0x0078, -+ 0x8706, 0x017e, 0x0f7e, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, -+ 0x0002, 0x0040, 0x86b6, 0xa086, 0x0028, 0x00c0, 0x869d, 0x684b, -+ 0x001c, 0x784b, 0x001c, 0x0078, 0x86c1, 0xd1dc, 0x0040, 0x86ad, -+ 0x684b, 0x0015, 0x784b, 0x0015, 0x1078, 0x916c, 0x0040, 0x86ab, -+ 0x7944, 0xc1dc, 0x7946, 0x0078, 0x86c1, 0xd1d4, 0x0040, 0x86b6, -+ 0x684b, 0x0007, 0x784b, 0x0007, 0x0078, 0x86c1, 0x684c, 0xd0ac, -+ 0x0040, 0x86c1, 0x6810, 0x6914, 0xa115, 0x0040, 0x86c1, 0x1078, -+ 0x84d5, 0x6860, 0x7862, 0x685c, 0x785e, 0x684c, 0x784e, 0x0f7f, -+ 0x1078, 0x13b4, 0x0d7f, 0x1078, 0x91f4, 0x1078, 0x89cf, 0x0078, -+ 0x8706, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, -+ 0x0040, 0x86f7, 0xa086, 0x0028, 0x00c0, 0x86e2, 0x684b, 0x001c, -+ 0x0078, 0x8704, 0xd1dc, 0x0040, 0x86f0, 0x684b, 0x0015, 0x1078, -+ 0x916c, 0x0040, 0x86ee, 0x6944, 0xc1dc, 0x6946, 0x0078, 0x8704, -+ 0xd1d4, 0x0040, 0x86f7, 0x684b, 0x0007, 0x0078, 0x8704, 0x684b, -+ 0x0000, 0x684c, 0xd0ac, 0x0040, 0x8704, 0x6810, 0x6914, 0xa115, -+ 0x0040, 0x8704, 0x1078, 0x84d5, 0x1078, 0x4a73, 0x1078, 0x8f89, -+ 0x00c0, 0x870c, 0x1078, 0x772d, 0x0d7f, 0x007c, 0x1078, 0x61cd, -+ 0x0078, 0x8714, 0x1078, 0x627a, 0x1078, 0x8d06, 0x0040, 0x8733, -+ 0x0d7e, 0x6110, 0x2168, 0x6837, 0x0103, 0x2009, 0xa60c, 0x210c, -+ 0xd18c, 0x00c0, 0x873e, 0xd184, 0x00c0, 0x873a, 0x6108, 0x694a, -+ 0xa18e, 0x0029, 0x00c0, 0x872e, 0x1078, 0xa4e2, 0x6847, 0x0000, -+ 0x1078, 0x4a73, 0x0d7f, 0x1078, 0x772d, 0x1078, 0x62d1, 0x1078, -+ 0x639b, 0x007c, 0x684b, 0x0004, 0x0078, 0x872e, 0x684b, 0x0004, -+ 0x0078, 0x872e, 0xa182, 0x0040, 0x0079, 0x8746, 0x8759, 0x8759, -+ 0x8759, 0x8759, 0x8759, 0x875b, 0x8759, 0x875e, 0x8759, 0x8759, -+ 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, 0x8759, -+ 0x8759, 0x1078, 0x1332, 0x1078, 0x772d, 0x007c, 0x007e, 0x027e, -+ 0xa016, 0x1078, 0x15fa, 0x027f, 0x007f, 0x007c, 0xa182, 0x0085, -+ 0x0079, 0x876a, 0x8773, 0x8771, 0x8771, 0x877f, 0x8771, 0x8771, -+ 0x8771, 0x1078, 0x1332, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, -+ 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x027e, -+ 0x057e, 0x0d7e, 0x0e7e, 0x2071, 0xab80, 0x7224, 0x6212, 0x7220, -+ 0x1078, 0x8cf2, 0x0040, 0x87a4, 0x2268, 0x6800, 0xa086, 0x0000, -+ 0x0040, 0x87a4, 0x6018, 0x6d18, 0xa52e, 0x00c0, 0x87a4, 0x0c7e, -+ 0x2d60, 0x1078, 0x89f3, 0x0c7f, 0x0040, 0x87a4, 0x6803, 0x0002, -+ 0x6007, 0x0086, 0x0078, 0x87a6, 0x6007, 0x0087, 0x6003, 0x0001, -+ 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0f7e, 0x2278, 0x1078, 0x4963, -+ 0x0f7f, 0x0040, 0x87be, 0x6824, 0xd0ec, 0x0040, 0x87be, 0x0c7e, -+ 0x2260, 0x603f, 0x0000, 0x1078, 0x8fbf, 0x0c7f, 0x0e7f, 0x0d7f, -+ 0x057f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x87d4, 0x6004, -+ 0xa08a, 0x0085, 0x1048, 0x1332, 0xa08a, 0x008c, 0x10c8, 0x1332, -+ 0xa082, 0x0085, 0x0079, 0x87e3, 0xa186, 0x0027, 0x0040, 0x87dc, -+ 0xa186, 0x0014, 0x10c0, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6, -+ 0x1078, 0x62d1, 0x007c, 0x87ea, 0x87ec, 0x87ec, 0x87ea, 0x87ea, -+ 0x87ea, 0x87ea, 0x1078, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6, -+ 0x1078, 0x62d1, 0x007c, 0xa186, 0x0013, 0x00c0, 0x87fd, 0x6004, -+ 0xa082, 0x0085, 0x2008, 0x0078, 0x8838, 0xa186, 0x0027, 0x00c0, -+ 0x8820, 0x1078, 0x61cd, 0x1078, 0x2880, 0x0d7e, 0x6010, 0x2068, -+ 0x1078, 0x8d06, 0x0040, 0x8816, 0x6837, 0x0103, 0x6847, 0x0000, -+ 0x684b, 0x0029, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078, -+ 0x772d, 0x1078, 0x62d1, 0x007c, 0x1078, 0x7773, 0x0078, 0x881b, -+ 0xa186, 0x0014, 0x00c0, 0x881c, 0x1078, 0x61cd, 0x0d7e, 0x6010, -+ 0x2068, 0x1078, 0x8d06, 0x0040, 0x8816, 0x6837, 0x0103, 0x6847, -+ 0x0000, 0x684b, 0x0006, 0x6850, 0xc0ec, 0x6852, 0x0078, 0x8812, -+ 0x0079, 0x883a, 0x8843, 0x8841, 0x8841, 0x8841, 0x8841, 0x8841, -+ 0x885e, 0x1078, 0x1332, 0x1078, 0x61cd, 0x6030, 0xa08c, 0xff00, -+ 0x810f, 0xa186, 0x0039, 0x0040, 0x8851, 0xa186, 0x0035, 0x00c0, -+ 0x8855, 0x2001, 0xa8a2, 0x0078, 0x8857, 0x2001, 0xa8a3, 0x2004, -+ 0x6016, 0x6003, 0x000c, 0x1078, 0x62d1, 0x007c, 0x1078, 0x61cd, -+ 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x886c, -+ 0xa186, 0x0035, 0x00c0, 0x8870, 0x2001, 0xa8a2, 0x0078, 0x8872, -+ 0x2001, 0xa8a3, 0x2004, 0x6016, 0x6003, 0x000e, 0x1078, 0x62d1, -+ 0x007c, 0xa182, 0x008c, 0x00c8, 0x8883, 0xa182, 0x0085, 0x0048, -+ 0x8883, 0x0079, 0x8886, 0x1078, 0x7773, 0x007c, 0x888d, 0x888d, -+ 0x888d, 0x888d, 0x888f, 0x88ec, 0x888d, 0x1078, 0x1332, 0x0f7e, -+ 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x0040, 0x88a2, 0x6030, 0xa08c, -+ 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x8903, 0xa186, 0x0035, -+ 0x0040, 0x8903, 0x0d7e, 0x1078, 0x8d06, 0x00c0, 0x88ab, 0x1078, -+ 0x8eb9, 0x0078, 0x88ce, 0x6010, 0x2068, 0x684c, 0xd0e4, 0x00c0, -+ 0x88b3, 0x1078, 0x8eb9, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, -+ 0x88bf, 0x684b, 0x0006, 0xc0ec, 0x6852, 0x0078, 0x88ca, 0xd0bc, -+ 0x0040, 0x88c6, 0x684b, 0x0002, 0x0078, 0x88ca, 0x684b, 0x0005, -+ 0x1078, 0x8f85, 0x6847, 0x0000, 0x1078, 0x4a73, 0x2c68, 0x1078, -+ 0x76c7, 0x0040, 0x88e7, 0x6003, 0x0001, 0x6007, 0x001e, 0x2009, -+ 0xab8e, 0x210c, 0x6136, 0x2009, 0xab8f, 0x210c, 0x613a, 0x6918, -+ 0x611a, 0x6920, 0x6122, 0x601f, 0x0001, 0x1078, 0x5d8a, 0x2d60, -+ 0x1078, 0x772d, 0x0d7f, 0x007c, 0x0f7e, 0x2c78, 0x1078, 0x4963, -+ 0x0f7f, 0x0040, 0x8929, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, -+ 0x0035, 0x0040, 0x8903, 0xa186, 0x001e, 0x0040, 0x8903, 0xa186, -+ 0x0039, 0x00c0, 0x8929, 0x0d7e, 0x2c68, 0x1078, 0x91bc, 0x00c0, -+ 0x894d, 0x1078, 0x76c7, 0x0040, 0x8926, 0x6106, 0x6003, 0x0001, -+ 0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, 0x692c, 0x612e, -+ 0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, 0x6938, 0x613a, -+ 0x6920, 0x6122, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x2d60, 0x0078, -+ 0x894d, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x894d, -+ 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x893c, 0xc0ec, 0x6852, -+ 0x684b, 0x0006, 0x0078, 0x8947, 0xd0bc, 0x0040, 0x8943, 0x684b, -+ 0x0002, 0x0078, 0x8947, 0x684b, 0x0005, 0x1078, 0x8f85, 0x6847, -+ 0x0000, 0x1078, 0x4a73, 0x1078, 0x8eb9, 0x0d7f, 0x1078, 0x772d, -+ 0x007c, 0x017e, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, -+ 0x8961, 0x6837, 0x0103, 0x684b, 0x0028, 0x6847, 0x0000, 0x1078, -+ 0x4a73, 0x0d7f, 0x017f, 0xa186, 0x0013, 0x0040, 0x8973, 0xa186, -+ 0x0014, 0x0040, 0x8973, 0xa186, 0x0027, 0x0040, 0x8973, 0x1078, -+ 0x7773, 0x0078, 0x8979, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078, -+ 0x62d1, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001, -+ 0xa182, 0x0101, 0x00c8, 0x8986, 0x0078, 0x8988, 0x2009, 0x0100, -+ 0x2130, 0x2069, 0xab98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, -+ 0xaf90, 0x001d, 0x1078, 0x89e2, 0xa6b2, 0x0020, 0x7804, 0xa06d, -+ 0x0040, 0x899c, 0x1078, 0x13b4, 0x1078, 0x138b, 0x0040, 0x89c6, -+ 0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a, -+ 0x003d, 0x00c8, 0x89b2, 0x2608, 0xad90, 0x000f, 0x1078, 0x89e2, -+ 0x0078, 0x89c6, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90, -+ 0x000f, 0x1078, 0x89e2, 0x0078, 0x899c, 0x0f7f, 0x852f, 0xa5ad, -+ 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x89cb, 0x0f7f, 0x852f, -+ 0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e, -+ 0x8dff, 0x0040, 0x89e0, 0x6804, 0xa07d, 0x0040, 0x89de, 0x6807, -+ 0x0000, 0x1078, 0x4a73, 0x2f68, 0x0078, 0x89d3, 0x1078, 0x4a73, -+ 0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040, 0x89e8, 0x8108, -+ 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0, -+ 0x89ea, 0x157f, 0x007c, 0x067e, 0x127e, 0x2091, 0x8000, 0x2031, -+ 0x0001, 0x601c, 0xa084, 0x000f, 0x1079, 0x8a0f, 0x127f, 0x067f, -+ 0x007c, 0x127e, 0x2091, 0x8000, 0x067e, 0x2031, 0x0000, 0x601c, -+ 0xa084, 0x000f, 0x1079, 0x8a0f, 0x067f, 0x127f, 0x007c, 0x8a29, -+ 0x8a17, 0x8a24, 0x8a45, 0x8a17, 0x8a24, 0x8a45, 0x8a24, 0x1078, -+ 0x1332, 0x037e, 0x2019, 0x0010, 0x1078, 0x9dc7, 0x601f, 0x0006, -+ 0x6003, 0x0007, 0x037f, 0x007c, 0xa006, 0x007c, 0xa085, 0x0001, -+ 0x007c, 0x0d7e, 0x86ff, 0x00c0, 0x8a40, 0x6010, 0x2068, 0x1078, -+ 0x8d06, 0x0040, 0x8a42, 0xa00e, 0x2001, 0x0005, 0x1078, 0x4b51, -+ 0x1078, 0x8f85, 0x1078, 0x4a73, 0x1078, 0x772d, 0xa085, 0x0001, -+ 0x0d7f, 0x007c, 0xa006, 0x0078, 0x8a40, 0x6000, 0xa08a, 0x0010, -+ 0x10c8, 0x1332, 0x1079, 0x8a4d, 0x007c, 0x8a5d, 0x8a82, 0x8a5f, -+ 0x8aa5, 0x8a7e, 0x8a5d, 0x8a24, 0x8a29, 0x8a29, 0x8a24, 0x8a24, -+ 0x8a24, 0x8a24, 0x8a24, 0x8a24, 0x8a24, 0x1078, 0x1332, 0x86ff, -+ 0x00c0, 0x8a7b, 0x601c, 0xa086, 0x0006, 0x0040, 0x8a7b, 0x0d7e, -+ 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, 0x8a70, 0x1078, 0x8f85, -+ 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078, -+ 0x5d8a, 0x1078, 0x62d1, 0xa085, 0x0001, 0x007c, 0x1078, 0x1757, -+ 0x0078, 0x8a5f, 0x0e7e, 0x2071, 0xa8b1, 0x7024, 0xac06, 0x00c0, -+ 0x8a8b, 0x1078, 0x6fc4, 0x601c, 0xa084, 0x000f, 0xa086, 0x0006, -+ 0x00c0, 0x8a9d, 0x087e, 0x097e, 0x2049, 0x0001, 0x2c40, 0x1078, -+ 0x7246, 0x097f, 0x087f, 0x0078, 0x8a9f, 0x1078, 0x6ebe, 0x0e7f, -+ 0x00c0, 0x8a5f, 0x1078, 0x8a24, 0x007c, 0x037e, 0x0e7e, 0x2071, -+ 0xa8b1, 0x703c, 0xac06, 0x00c0, 0x8ab5, 0x2019, 0x0000, 0x1078, -+ 0x7058, 0x0e7f, 0x037f, 0x0078, 0x8a5f, 0x1078, 0x738a, 0x0e7f, -+ 0x037f, 0x00c0, 0x8a5f, 0x1078, 0x8a24, 0x007c, 0x0c7e, 0x601c, -+ 0xa084, 0x000f, 0x1079, 0x8ac6, 0x0c7f, 0x007c, 0x8ad5, 0x8b47, -+ 0x8c7f, 0x8ae0, 0x8ec6, 0x8ad5, 0x9db8, 0x772d, 0x8b47, 0x1078, -+ 0x8f00, 0x00c0, 0x8ad5, 0x1078, 0x7c83, 0x007c, 0x1078, 0x61cd, -+ 0x1078, 0x62d1, 0x1078, 0x772d, 0x007c, 0x6017, 0x0001, 0x007c, -+ 0x1078, 0x8d06, 0x0040, 0x8ae8, 0x6010, 0xa080, 0x0019, 0x2c02, -+ 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8af0, 0x007c, -+ 0x8b00, 0x8b02, 0x8b24, 0x8b36, 0x8b43, 0x8b00, 0x8ad5, 0x8ad5, -+ 0x8ad5, 0x8b36, 0x8b36, 0x8b00, 0x8b00, 0x8b00, 0x8b00, 0x8b40, -+ 0x1078, 0x1332, 0x0e7e, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052, -+ 0x2071, 0xa8b1, 0x7024, 0xac06, 0x0040, 0x8b20, 0x1078, 0x6ebe, -+ 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x2001, 0xa8a3, -+ 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0e7f, 0x007c, -+ 0x6017, 0x0001, 0x0078, 0x8b1e, 0x0d7e, 0x6010, 0x2068, 0x6850, -+ 0xc0b5, 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, -+ 0x0002, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x007c, 0x0d7e, 0x6017, -+ 0x0001, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x007c, -+ 0x1078, 0x772d, 0x007c, 0x1078, 0x1757, 0x0078, 0x8b24, 0x6000, -+ 0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8b4f, 0x007c, 0x8b5f, -+ 0x8add, 0x8b61, 0x8b5f, 0x8b61, 0x8b61, 0x8ad6, 0x8b5f, 0x8acf, -+ 0x8acf, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x8b5f, 0x1078, -+ 0x1332, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff, 0x0d7f, -+ 0xa08a, 0x000c, 0x10c8, 0x1332, 0x1079, 0x8b6f, 0x007c, 0x8b7b, -+ 0x8c23, 0x8b7d, 0x8bbd, 0x8b7d, 0x8bbd, 0x8b7d, 0x8b8a, 0x8b7b, -+ 0x8bbd, 0x8b7b, 0x8ba7, 0x1078, 0x1332, 0x6004, 0xa08e, 0x0016, -+ 0x0040, 0x8bb8, 0xa08e, 0x0004, 0x0040, 0x8bb8, 0xa08e, 0x0002, -+ 0x0040, 0x8bb8, 0x6004, 0x1078, 0x8f00, 0x0040, 0x8c3e, 0xa08e, -+ 0x0021, 0x0040, 0x8c42, 0xa08e, 0x0022, 0x0040, 0x8c3e, 0xa08e, -+ 0x003d, 0x0040, 0x8c42, 0xa08e, 0x0039, 0x0040, 0x8c46, 0xa08e, -+ 0x0035, 0x0040, 0x8c46, 0xa08e, 0x001e, 0x0040, 0x8bba, 0xa08e, -+ 0x0001, 0x00c0, 0x8bb6, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084, -+ 0x00ff, 0x0d7f, 0xa086, 0x0006, 0x0040, 0x8bb8, 0x1078, 0x2880, -+ 0x1078, 0x7c83, 0x1078, 0x8ec6, 0x007c, 0x0c7e, 0x0d7e, 0x6104, -+ 0xa186, 0x0016, 0x0040, 0x8c13, 0xa186, 0x0002, 0x00c0, 0x8be6, -+ 0x6018, 0x2068, 0x68a0, 0xd0bc, 0x00c0, 0x8c6a, 0x6840, 0xa084, -+ 0x00ff, 0xa005, 0x0040, 0x8be6, 0x8001, 0x6842, 0x6013, 0x0000, -+ 0x601f, 0x0007, 0x6017, 0x0398, 0x1078, 0x76c7, 0x0040, 0x8be6, -+ 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078, 0x8c13, 0x0d7f, 0x0c7f, -+ 0x6004, 0xa08e, 0x0002, 0x00c0, 0x8c04, 0x6018, 0xa080, 0x0028, -+ 0x2004, 0xa086, 0x007e, 0x00c0, 0x8c04, 0x2009, 0xa633, 0x2104, -+ 0xc085, 0x200a, 0x0e7e, 0x2071, 0xa600, 0x1078, 0x42b8, 0x0e7f, -+ 0x1078, 0x7c83, 0x0078, 0x8c08, 0x1078, 0x7c83, 0x1078, 0x2880, -+ 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x28a6, 0x127f, 0x0e7f, -+ 0x1078, 0x8ec6, 0x007c, 0x2001, 0x0002, 0x1078, 0x4502, 0x6003, -+ 0x0001, 0x6007, 0x0002, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0d7f, -+ 0x0c7f, 0x0078, 0x8c12, 0x0c7e, 0x0d7e, 0x6104, 0xa186, 0x0016, -+ 0x0040, 0x8c13, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, -+ 0x0040, 0x8be6, 0x8001, 0x6842, 0x6003, 0x0001, 0x1078, 0x5dd7, -+ 0x1078, 0x62d1, 0x0d7f, 0x0c7f, 0x0078, 0x8c12, 0x1078, 0x7c83, -+ 0x0078, 0x8bba, 0x1078, 0x7ca6, 0x0078, 0x8bba, 0x0d7e, 0x2c68, -+ 0x6104, 0x1078, 0x91bc, 0x0d7f, 0x0040, 0x8c52, 0x1078, 0x772d, -+ 0x0078, 0x8c69, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, -+ 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6038, -+ 0x600a, 0x2001, 0xa8a3, 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078, -+ 0x62d1, 0x007c, 0x0d7f, 0x0c7f, 0x1078, 0x7c83, 0x1078, 0x2880, -+ 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x28a6, 0x6013, 0x0000, -+ 0x601f, 0x0007, 0x6017, 0x0398, 0x127f, 0x0e7f, 0x007c, 0x6000, -+ 0xa08a, 0x0010, 0x10c8, 0x1332, 0x1079, 0x8c87, 0x007c, 0x8c97, -+ 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, 0x8c97, -+ 0x8ad5, 0x8c97, 0x8add, 0x8c99, 0x8add, 0x8ca7, 0x8c97, 0x1078, -+ 0x1332, 0x6004, 0xa086, 0x008b, 0x0040, 0x8ca7, 0x6007, 0x008b, -+ 0x6003, 0x000d, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x007c, 0x1078, -+ 0x8eb9, 0x1078, 0x8d06, 0x0040, 0x8cdf, 0x1078, 0x2880, 0x0d7e, -+ 0x1078, 0x8d06, 0x0040, 0x8cc1, 0x6010, 0x2068, 0x6837, 0x0103, -+ 0x684b, 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x1078, -+ 0x4a73, 0x2c68, 0x1078, 0x76c7, 0x0040, 0x8ccf, 0x6818, 0x601a, -+ 0x0c7e, 0x2d60, 0x1078, 0x8ec6, 0x0c7f, 0x0078, 0x8cd0, 0x2d60, -+ 0x0d7f, 0x6013, 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, -+ 0x0001, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0078, 0x8cf1, 0x6030, -+ 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0040, 0x8ceb, 0xa186, -+ 0x0035, 0x00c0, 0x8cef, 0x1078, 0x2880, 0x0078, 0x8cc1, 0x1078, -+ 0x8ec6, 0x007c, 0xa284, 0x000f, 0x00c0, 0x8d03, 0xa282, 0xad00, -+ 0x0048, 0x8d03, 0x2001, 0xa616, 0x2004, 0xa202, 0x00c8, 0x8d03, -+ 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x8d02, 0x027e, 0x0e7e, -+ 0x2071, 0xa600, 0x6210, 0x705c, 0xa202, 0x0048, 0x8d18, 0x7060, -+ 0xa202, 0x00c8, 0x8d18, 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c, -+ 0xa006, 0x0078, 0x8d15, 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e, -+ 0x2091, 0x8000, 0x2061, 0xad00, 0x2071, 0xa600, 0x7348, 0x7064, -+ 0xa302, 0x00c8, 0x8d45, 0x601c, 0xa206, 0x00c0, 0x8d3d, 0x1078, -+ 0x902b, 0x0040, 0x8d3d, 0x1078, 0x8f00, 0x00c0, 0x8d39, 0x1078, -+ 0x7c83, 0x0c7e, 0x1078, 0x772d, 0x0c7f, 0xace0, 0x0010, 0x7058, -+ 0xac02, 0x00c8, 0x8d45, 0x0078, 0x8d26, 0x127f, 0x007f, 0x037f, -+ 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x017e, 0xa188, 0xa735, -+ 0x210c, 0x81ff, 0x0040, 0x8d59, 0x2061, 0xa9b3, 0x611a, 0x1078, -+ 0x2880, 0xa006, 0x0078, 0x8d5e, 0xa085, 0x0001, 0x017f, 0x0c7f, -+ 0x0e7f, 0x007c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, -+ 0x1078, 0x76c7, 0x057f, 0x0040, 0x8d7b, 0x6612, 0x651a, 0x601f, -+ 0x0003, 0x2009, 0x004b, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, -+ 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8d77, 0x0c7e, 0x057e, -+ 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x76c7, 0x057f, -+ 0x0040, 0x8da9, 0x6013, 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, -+ 0x2560, 0x1078, 0x47e9, 0x0c7f, 0x1078, 0x5f01, 0x077e, 0x2039, -+ 0x0000, 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f, 0x2009, -+ 0x004c, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, -+ 0x007c, 0xa006, 0x0078, 0x8da5, 0x0f7e, 0x0c7e, 0x047e, 0x0c7e, -+ 0x1078, 0x76c7, 0x2c78, 0x0c7f, 0x0040, 0x8dc6, 0x7e12, 0x2c00, -+ 0x781a, 0x781f, 0x0003, 0x2021, 0x0005, 0x1078, 0x8e11, 0x2f60, -+ 0x2009, 0x004d, 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f, -+ 0x0f7f, 0x007c, 0x0f7e, 0x0c7e, 0x047e, 0x0c7e, 0x1078, 0x76c7, -+ 0x2c78, 0x0c7f, 0x0040, 0x8de4, 0x7e12, 0x2c00, 0x781a, 0x781f, -+ 0x0003, 0x2021, 0x0005, 0x1078, 0x8e11, 0x2f60, 0x2009, 0x004e, -+ 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f, 0x0f7f, 0x007c, -+ 0x0f7e, 0x0c7e, 0x047e, 0x0c7e, 0x1078, 0x76c7, 0x2c78, 0x0c7f, -+ 0x0040, 0x8e0d, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021, -+ 0x0004, 0x1078, 0x8e11, 0x2001, 0xa89d, 0x2004, 0xd0fc, 0x0040, -+ 0x8e06, 0x2f60, 0x1078, 0x772d, 0x0078, 0x8e0b, 0x2f60, 0x2009, -+ 0x0052, 0x1078, 0x775c, 0xa085, 0x0001, 0x047f, 0x0c7f, 0x0f7f, -+ 0x007c, 0x097e, 0x077e, 0x127e, 0x2091, 0x8000, 0x1078, 0x4775, -+ 0x0040, 0x8e1e, 0x2001, 0x8e16, 0x0078, 0x8e24, 0x1078, 0x4739, -+ 0x0040, 0x8e2d, 0x2001, 0x8e1e, 0x007e, 0xa00e, 0x2400, 0x1078, -+ 0x4b51, 0x1078, 0x4a73, 0x007f, 0x007a, 0x2418, 0x1078, 0x6161, -+ 0x62a0, 0x087e, 0x2041, 0x0001, 0x2039, 0x0001, 0x2608, 0x1078, -+ 0x5f1b, 0x087f, 0x1078, 0x5e0a, 0x2f08, 0x2648, 0x1078, 0x9f8b, -+ 0x613c, 0x81ff, 0x1040, 0x5fdb, 0x1078, 0x62d1, 0x127f, 0x077f, -+ 0x097f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, -+ 0x76c7, 0x017f, 0x0040, 0x8e63, 0x660a, 0x611a, 0x601f, 0x0001, -+ 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x775c, 0xa085, 0x0001, -+ 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8e60, 0x0c7e, 0x127e, -+ 0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x8e7f, -+ 0x660a, 0x611a, 0x601f, 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021, -+ 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, -+ 0x0078, 0x8e7c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, -+ 0x76c7, 0x017f, 0x0040, 0x8e9b, 0x660a, 0x611a, 0x601f, 0x0001, -+ 0x2d00, 0x6012, 0x2009, 0x003d, 0x1078, 0x775c, 0xa085, 0x0001, -+ 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8e98, 0x0c7e, 0x127e, -+ 0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x8eb6, -+ 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078, -+ 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, -+ 0x8eb3, 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040, -+ 0x8ec3, 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x007e, 0x6000, -+ 0xa086, 0x0000, 0x0040, 0x8ed8, 0x6013, 0x0000, 0x601f, 0x0007, -+ 0x2001, 0xa8a3, 0x2004, 0x6016, 0x1078, 0xa495, 0x603f, 0x0000, -+ 0x007f, 0x007c, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0xa653, 0x2634, -+ 0xd6e4, 0x0040, 0x8ee8, 0x6618, 0x2660, 0x6e48, 0x1078, 0x46e7, -+ 0x0d7f, 0x0c7f, 0x067f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, -+ 0x0002, 0x0040, 0x8efd, 0xa08e, 0x0003, 0x0040, 0x8efd, 0xa08e, -+ 0x0004, 0x0040, 0x8efd, 0xa085, 0x0001, 0x017f, 0x007f, 0x007c, -+ 0x007e, 0x0d7e, 0x6010, 0xa06d, 0x0040, 0x8f0d, 0x6838, 0xd0fc, -+ 0x0040, 0x8f0d, 0xa006, 0x0078, 0x8f0f, 0xa085, 0x0001, 0x0d7f, -+ 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, -+ 0x76c7, 0x017f, 0x0040, 0x8f2c, 0x611a, 0x601f, 0x0001, 0x2d00, -+ 0x6012, 0x1078, 0x2880, 0x2009, 0x0028, 0x1078, 0x775c, 0xa085, -+ 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x8f29, 0xa186, -+ 0x0015, 0x00c0, 0x8f44, 0x2011, 0xa620, 0x2204, 0xa086, 0x0074, -+ 0x00c0, 0x8f44, 0x1078, 0x7f91, 0x6003, 0x0001, 0x6007, 0x0029, -+ 0x1078, 0x5dd7, 0x0078, 0x8f48, 0x1078, 0x7c83, 0x1078, 0x772d, -+ 0x007c, 0xa186, 0x0016, 0x00c0, 0x8f53, 0x2001, 0x0004, 0x1078, -+ 0x4502, 0x0078, 0x8f74, 0xa186, 0x0015, 0x00c0, 0x8f78, 0x2011, -+ 0xa620, 0x2204, 0xa086, 0x0014, 0x00c0, 0x8f78, 0x0d7e, 0x6018, -+ 0x2068, 0x1078, 0x4649, 0x0d7f, 0x1078, 0x8043, 0x00c0, 0x8f78, -+ 0x0d7e, 0x6018, 0x2068, 0x6890, 0x0d7f, 0xa005, 0x0040, 0x8f78, -+ 0x2001, 0x0006, 0x1078, 0x4502, 0x1078, 0x77f8, 0x0078, 0x8f7c, -+ 0x1078, 0x7c83, 0x1078, 0x772d, 0x007c, 0x6848, 0xa086, 0x0005, -+ 0x00c0, 0x8f84, 0x1078, 0x8f85, 0x007c, 0x6850, 0xc0ad, 0x6852, -+ 0x007c, 0x0e7e, 0x2071, 0xab8c, 0x7014, 0xd0e4, 0x0040, 0x8f9a, -+ 0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, 0x1078, 0x5d8a, -+ 0x1078, 0x62d1, 0x0e7f, 0x007c, 0x0c7e, 0x0f7e, 0x2c78, 0x1078, -+ 0x4963, 0x0f7f, 0x0040, 0x8fa9, 0x601c, 0xa084, 0x000f, 0x1079, -+ 0x8fab, 0x0c7f, 0x007c, 0x8ad5, 0x8fb6, 0x8fb9, 0x8fbc, 0xa25d, -+ 0xa279, 0xa27c, 0x8ad5, 0x8ad5, 0x1078, 0x1332, 0x0005, 0x0005, -+ 0x007c, 0x0005, 0x0005, 0x007c, 0x1078, 0x8fbf, 0x007c, 0x0f7e, -+ 0x2c78, 0x1078, 0x4963, 0x0040, 0x8fee, 0x1078, 0x76c7, 0x00c0, -+ 0x8fcf, 0x2001, 0xa8a4, 0x2004, 0x783e, 0x0078, 0x8fee, 0x7818, -+ 0x601a, 0x781c, 0xa086, 0x0003, 0x0040, 0x8fdc, 0x7808, 0x6036, -+ 0x2f00, 0x603a, 0x0078, 0x8fe0, 0x7808, 0x603a, 0x2f00, 0x6036, -+ 0x602a, 0x601f, 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x7920, -+ 0x6122, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x2f60, 0x0f7f, 0x007c, -+ 0x017e, 0x0f7e, 0x682c, 0x6032, 0xa08e, 0x0001, 0x0040, 0x9001, -+ 0xa086, 0x0005, 0x0040, 0x9005, 0xa006, 0x602a, 0x602e, 0x0078, -+ 0x9016, 0x6824, 0xc0f4, 0xc0d5, 0x6826, 0x6810, 0x2078, 0x787c, -+ 0x6938, 0xa102, 0x7880, 0x6934, 0xa103, 0x00c8, 0x8ffc, 0x6834, -+ 0x602a, 0x6838, 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036, -+ 0x6808, 0x603a, 0x6918, 0x611a, 0x6920, 0x6122, 0x601f, 0x0001, -+ 0x6007, 0x0039, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x6803, 0x0002, -+ 0x0f7f, 0x017f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0034, -+ 0x0040, 0x9050, 0xa08e, 0x0035, 0x0040, 0x9050, 0xa08e, 0x0036, -+ 0x0040, 0x9050, 0xa08e, 0x0037, 0x0040, 0x9050, 0xa08e, 0x0038, -+ 0x0040, 0x9050, 0xa08e, 0x0039, 0x0040, 0x9050, 0xa08e, 0x003a, -+ 0x0040, 0x9050, 0xa08e, 0x003b, 0x0040, 0x9050, 0xa085, 0x0001, -+ 0x017f, 0x007f, 0x007c, 0x0f7e, 0x2c78, 0x1078, 0x4963, 0x00c0, -+ 0x905d, 0xa085, 0x0001, 0x0078, 0x906c, 0x6024, 0xd0f4, 0x00c0, -+ 0x906b, 0xc0f5, 0x6026, 0x6010, 0x2078, 0x7828, 0x603a, 0x782c, -+ 0x6036, 0x1078, 0x1757, 0xa006, 0x0f7f, 0x007c, 0x007e, 0x017e, -+ 0x027e, 0x037e, 0x0e7e, 0x2001, 0xa89e, 0x200c, 0x8000, 0x2014, -+ 0x2001, 0x0032, 0x1078, 0x5c1c, 0x2001, 0xa8a2, 0x82ff, 0x00c0, -+ 0x9083, 0x2011, 0x0014, 0x2202, 0x2001, 0xa8a0, 0x200c, 0x8000, -+ 0x2014, 0x2071, 0xa88d, 0x711a, 0x721e, 0x2001, 0x0064, 0x1078, -+ 0x5c1c, 0x2001, 0xa8a3, 0x82ff, 0x00c0, 0x9098, 0x2011, 0x0014, -+ 0x2202, 0x2009, 0xa8a4, 0xa280, 0x000a, 0x200a, 0x1078, 0x498b, -+ 0x0e7f, 0x037f, 0x027f, 0x017f, 0x007f, 0x007c, 0x007e, 0x0e7e, -+ 0x2001, 0xa8a2, 0x2003, 0x0028, 0x2001, 0xa8a3, 0x2003, 0x0014, -+ 0x2071, 0xa88d, 0x701b, 0x0000, 0x701f, 0x07d0, 0x2001, 0xa8a4, -+ 0x2003, 0x001e, 0x0e7f, 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, -+ 0x8000, 0x0c7e, 0x1078, 0x76c7, 0x017f, 0x0040, 0x90d5, 0x611a, -+ 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0033, 0x1078, 0x775c, -+ 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x90d2, -+ 0x0d7e, 0x0e7e, 0x0f7e, 0x2071, 0xa600, 0xa186, 0x0015, 0x00c0, -+ 0x9107, 0x7080, 0xa086, 0x0018, 0x00c0, 0x9107, 0x6010, 0x2068, -+ 0x6a3c, 0xd2e4, 0x00c0, 0x90fb, 0x2c78, 0x1078, 0x6490, 0x0040, -+ 0x910f, 0x706c, 0x6a50, 0xa206, 0x00c0, 0x9103, 0x7070, 0x6a54, -+ 0xa206, 0x00c0, 0x9103, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, -+ 0x0000, 0x1078, 0x28c8, 0x1078, 0x77f8, 0x0078, 0x910b, 0x1078, -+ 0x7c83, 0x1078, 0x772d, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x7050, -+ 0xa080, 0x29c0, 0x2004, 0x6a54, 0xa206, 0x0040, 0x90fb, 0x0078, -+ 0x9103, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x76c7, -+ 0x017f, 0x0040, 0x9131, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, -+ 0x2009, 0x0043, 0x1078, 0x775c, 0xa085, 0x0001, 0x127f, 0x0c7f, -+ 0x007c, 0xa006, 0x0078, 0x912e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2071, -+ 0xa600, 0xa186, 0x0015, 0x00c0, 0x915a, 0x7080, 0xa086, 0x0004, -+ 0x00c0, 0x915a, 0x6010, 0xa0e8, 0x000f, 0x2c78, 0x1078, 0x6490, -+ 0x0040, 0x9162, 0x706c, 0x6a08, 0xa206, 0x00c0, 0x9156, 0x7070, -+ 0x6a0c, 0xa206, 0x00c0, 0x9156, 0x1078, 0x2880, 0x1078, 0x77f8, -+ 0x0078, 0x915e, 0x1078, 0x7c83, 0x1078, 0x772d, 0x0f7f, 0x0e7f, -+ 0x0d7f, 0x007c, 0x7050, 0xa080, 0x29c0, 0x2004, 0x6a0c, 0xa206, -+ 0x0040, 0x9154, 0x0078, 0x9156, 0x017e, 0x027e, 0x684c, 0xd0ac, -+ 0x0040, 0x9184, 0x6914, 0x6a10, 0x2100, 0xa205, 0x0040, 0x9184, -+ 0x6860, 0xa106, 0x00c0, 0x9180, 0x685c, 0xa206, 0x0040, 0x9184, -+ 0x6962, 0x6a5e, 0xa085, 0x0001, 0x027f, 0x017f, 0x007c, 0x0e7e, -+ 0x127e, 0x2071, 0xa600, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001, -+ 0x0048, 0x91b9, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, -+ 0x91a5, 0xace0, 0x0010, 0x7058, 0xac02, 0x00c8, 0x91a1, 0x0078, -+ 0x9194, 0x2061, 0xad00, 0x0078, 0x9194, 0x6003, 0x0008, 0x8529, -+ 0x754a, 0xaca8, 0x0010, 0x7058, 0xa502, 0x00c8, 0x91b5, 0x754e, -+ 0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704f, 0xad00, 0x0078, -+ 0x91b0, 0xa006, 0x0078, 0x91b2, 0x0c7e, 0x027e, 0x017e, 0xa186, -+ 0x0035, 0x0040, 0x91c6, 0x6a34, 0x0078, 0x91c7, 0x6a28, 0x1078, -+ 0x8cf2, 0x0040, 0x91f0, 0x2260, 0x611c, 0xa186, 0x0003, 0x0040, -+ 0x91d5, 0xa186, 0x0006, 0x00c0, 0x91ec, 0x6834, 0xa206, 0x0040, -+ 0x91e4, 0x6838, 0xa206, 0x00c0, 0x91ec, 0x6108, 0x6834, 0xa106, -+ 0x00c0, 0x91ec, 0x0078, 0x91e9, 0x6008, 0x6938, 0xa106, 0x00c0, -+ 0x91ec, 0x6018, 0x6918, 0xa106, 0x017f, 0x027f, 0x0c7f, 0x007c, -+ 0xa085, 0x0001, 0x0078, 0x91ec, 0x6944, 0xd1cc, 0x0040, 0x920d, -+ 0xa18c, 0x00ff, 0xa18e, 0x0002, 0x00c0, 0x920d, 0xad88, 0x001e, -+ 0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, 0x00c0, 0x920d, -+ 0x6810, 0x6914, 0xa115, 0x10c0, 0x84d5, 0x007c, 0x067e, 0x6000, -+ 0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x9218, 0x067f, 0x007c, -+ 0x9228, 0x96df, 0x97fb, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228, -+ 0x9262, 0x988e, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228, 0x9228, -+ 0x1078, 0x1332, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1332, -+ 0x1079, 0x9234, 0x067f, 0x007c, 0x9244, 0x9d53, 0x9244, 0x9244, -+ 0x9244, 0x9244, 0x9244, 0x9244, 0x9d11, 0x9da1, 0x9244, 0xa3b0, -+ 0xa3e4, 0xa3b0, 0xa3e4, 0x9244, 0x1078, 0x1332, 0x067e, 0x6000, -+ 0xa0b2, 0x0010, 0x10c8, 0x1332, 0x1079, 0x9250, 0x067f, 0x007c, -+ 0x9260, 0x99eb, 0x9ac7, 0x9af5, 0x9b70, 0x9260, 0x9c76, 0x9c1e, -+ 0x989a, 0x9ce5, 0x9cfb, 0x9260, 0x9260, 0x9260, 0x9260, 0x9260, -+ 0x1078, 0x1332, 0xa1b2, 0x0044, 0x10c8, 0x1332, 0x2100, 0x0079, -+ 0x9269, 0x92a9, 0x9498, 0x92a9, 0x92a9, 0x92a9, 0x94a0, 0x92a9, -+ 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, -+ 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, -+ 0x92ab, 0x9311, 0x9320, 0x9377, 0x9396, 0x9415, 0x9485, 0x92a9, -+ 0x92a9, 0x94a4, 0x92a9, 0x92a9, 0x94b7, 0x94c2, 0x92a9, 0x92a9, -+ 0x92a9, 0x92a9, 0x92a9, 0x94fa, 0x92a9, 0x92a9, 0x9509, 0x92a9, -+ 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x9522, 0x92a9, 0x92a9, -+ 0x92a9, 0x95af, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, 0x92a9, -+ 0x9629, 0x1078, 0x1332, 0x1078, 0x4967, 0x00c0, 0x92bb, 0x2001, -+ 0xa633, 0x2004, 0xd0cc, 0x00c0, 0x92bb, 0xa084, 0x0009, 0xa086, -+ 0x0008, 0x00c0, 0x92c3, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, -+ 0x0000, 0x0078, 0x9493, 0x1078, 0x4957, 0x0e7e, 0x0c7e, 0x037e, -+ 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e, 0x2019, 0x0029, -+ 0x1078, 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x2c08, -+ 0x1078, 0x9f8b, 0x077f, 0x017f, 0x2e60, 0x1078, 0x47e9, 0x017f, -+ 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x6618, 0x0c7e, 0x2660, 0x1078, -+ 0x45d6, 0x0c7f, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, -+ 0x0006, 0x0048, 0x9303, 0x1078, 0x9ebf, 0x00c0, 0x9371, 0x1078, -+ 0x9e50, 0x00c0, 0x92ff, 0x6007, 0x0008, 0x0078, 0x9493, 0x6007, -+ 0x0009, 0x0078, 0x9493, 0x1078, 0xa09f, 0x0040, 0x930d, 0x1078, -+ 0x9ebf, 0x0040, 0x92f7, 0x0078, 0x9371, 0x6013, 0x1900, 0x0078, -+ 0x92ff, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6106, 0x1078, 0x9e05, -+ 0x6007, 0x0006, 0x0078, 0x9493, 0x6007, 0x0007, 0x0078, 0x9493, -+ 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0, 0x9664, -+ 0x0d7e, 0x6618, 0x2668, 0x6e04, 0xa684, 0x00ff, 0xa082, 0x0006, -+ 0x00c8, 0x9336, 0x2001, 0x0001, 0x1078, 0x44ee, 0xa6b4, 0xff00, -+ 0x8637, 0xa686, 0x0006, 0x0040, 0x9353, 0xa686, 0x0004, 0x0040, -+ 0x9353, 0x6e04, 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0040, 0x9353, -+ 0xa686, 0x0004, 0x0040, 0x9353, 0xa686, 0x0005, 0x0040, 0x9353, -+ 0x0d7f, 0x0078, 0x9371, 0x1078, 0x9f25, 0x00c0, 0x936c, 0xa686, -+ 0x0006, 0x00c0, 0x9365, 0x027e, 0x6218, 0xa290, 0x0028, 0x2214, -+ 0x2009, 0x0000, 0x1078, 0x28c8, 0x027f, 0x1078, 0x4649, 0x6007, -+ 0x000a, 0x0d7f, 0x0078, 0x9493, 0x6007, 0x000b, 0x0d7f, 0x0078, -+ 0x9493, 0x1078, 0x2880, 0x6007, 0x0001, 0x0078, 0x9493, 0x1078, -+ 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6618, -+ 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa686, 0x0707, 0x0040, 0x9371, -+ 0x027e, 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x1078, -+ 0x28c8, 0x027f, 0x6007, 0x000c, 0x0078, 0x9493, 0x1078, 0x4967, -+ 0x00c0, 0x93a3, 0x2001, 0xa633, 0x2004, 0xa084, 0x0009, 0xa086, -+ 0x0008, 0x00c0, 0x93ab, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, -+ 0x0000, 0x0078, 0x9493, 0x1078, 0x4957, 0x6618, 0xa6b0, 0x0001, -+ 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x93ef, 0xa6b4, -+ 0xff00, 0x8637, 0xa686, 0x0004, 0x0040, 0x93c2, 0xa686, 0x0006, -+ 0x00c0, 0x9371, 0x1078, 0x9f34, 0x00c0, 0x93ca, 0x6007, 0x000e, -+ 0x0078, 0x9493, 0x047e, 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, -+ 0x00ff, 0x8427, 0x047e, 0x1078, 0x2880, 0x047f, 0x017e, 0xa006, -+ 0x2009, 0xa653, 0x210c, 0xd1a4, 0x0040, 0x93e9, 0x2009, 0x0029, -+ 0x1078, 0xa21d, 0x6018, 0x0d7e, 0x2068, 0x6800, 0xc0e5, 0x6802, -+ 0x0d7f, 0x017f, 0x047f, 0x6007, 0x0001, 0x0078, 0x9493, 0x2001, -+ 0x0001, 0x1078, 0x44ee, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9, -+ 0x0004, 0x2019, 0xa605, 0x2011, 0xab90, 0x1078, 0x80de, 0x037f, -+ 0x027f, 0x017f, 0x157f, 0xa005, 0x0040, 0x940f, 0xa6b4, 0xff00, -+ 0x8637, 0xa686, 0x0006, 0x0040, 0x93c2, 0x0078, 0x9371, 0x6013, -+ 0x1900, 0x6007, 0x0009, 0x0078, 0x9493, 0x1078, 0x4967, 0x00c0, -+ 0x9422, 0x2001, 0xa633, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, -+ 0x00c0, 0x942a, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, 0x0000, -+ 0x0078, 0x9493, 0x1078, 0x4957, 0x6618, 0xa6b0, 0x0001, 0x2634, -+ 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x9472, 0xa6b4, 0xff00, -+ 0x8637, 0xa686, 0x0004, 0x0040, 0x9441, 0xa686, 0x0006, 0x00c0, -+ 0x9371, 0x1078, 0x9f5f, 0x00c0, 0x944d, 0x1078, 0x9e50, 0x00c0, -+ 0x944d, 0x6007, 0x0010, 0x0078, 0x9493, 0x047e, 0x6418, 0xa4a0, -+ 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x047e, 0x1078, 0x2880, -+ 0x047f, 0x017e, 0xa006, 0x2009, 0xa653, 0x210c, 0xd1a4, 0x0040, -+ 0x946c, 0x2009, 0x0029, 0x1078, 0xa21d, 0x6018, 0x0d7e, 0x2068, -+ 0x6800, 0xc0e5, 0x6802, 0x0d7f, 0x017f, 0x047f, 0x6007, 0x0001, -+ 0x0078, 0x9493, 0x1078, 0xa09f, 0x0040, 0x947f, 0xa6b4, 0xff00, -+ 0x8637, 0xa686, 0x0006, 0x0040, 0x9441, 0x0078, 0x9371, 0x6013, -+ 0x1900, 0x6007, 0x0009, 0x0078, 0x9493, 0x1078, 0x29bb, 0x00c0, -+ 0x9664, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0, -+ 0x9371, 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x007c, -+ 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x0078, 0x9497, -+ 0x6007, 0x0005, 0x0078, 0x949a, 0x1078, 0xa41c, 0x00c0, 0x9664, -+ 0x1078, 0x29bb, 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371, -+ 0x6007, 0x0020, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x007c, 0x1078, -+ 0x29bb, 0x00c0, 0x9664, 0x6007, 0x0023, 0x6003, 0x0001, 0x1078, -+ 0x5dd7, 0x007c, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, -+ 0x00c0, 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371, 0x017e, 0x027e, -+ 0x2011, 0xab90, 0x2214, 0x2c08, 0xa006, 0x1078, 0xa1e6, 0x00c0, -+ 0x94e9, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x2011, 0xab89, -+ 0x2214, 0xa296, 0xffff, 0x00c0, 0x94f3, 0x6007, 0x0025, 0x0078, -+ 0x94f3, 0x6004, 0xa086, 0x0024, 0x00c0, 0x94f0, 0x1078, 0x772d, -+ 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x5dd7, 0x027f, -+ 0x017f, 0x007c, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x6106, 0x1078, -+ 0x9687, 0x6007, 0x002b, 0x0078, 0x9493, 0x6007, 0x002c, 0x0078, -+ 0x9493, 0x1078, 0xa41c, 0x00c0, 0x9664, 0x1078, 0x29bb, 0x00c0, -+ 0x9664, 0x1078, 0x9667, 0x00c0, 0x9371, 0x6106, 0x1078, 0x968c, -+ 0x00c0, 0x951e, 0x6007, 0x002e, 0x0078, 0x9493, 0x6007, 0x002f, -+ 0x0078, 0x9493, 0x1078, 0x29bb, 0x00c0, 0x9664, 0x0e7e, 0x0d7e, -+ 0x0c7e, 0x6018, 0xa080, 0x0001, 0x200c, 0xa184, 0x00ff, 0xa086, -+ 0x0006, 0x0040, 0x953f, 0xa184, 0xff00, 0x8007, 0xa086, 0x0006, -+ 0x0040, 0x953f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0078, 0x9498, 0x2001, -+ 0xa672, 0x2004, 0xd0e4, 0x0040, 0x95ab, 0x2071, 0xab8c, 0x7010, -+ 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, 0x2001, 0xa653, 0x2004, -+ 0xd0a4, 0x0040, 0x955d, 0x6018, 0x2068, 0x6810, 0xa106, 0x00c0, -+ 0x955d, 0x6814, 0xa206, 0x0040, 0x9581, 0x2001, 0xa653, 0x2004, -+ 0xd0ac, 0x00c0, 0x959f, 0x2069, 0xa600, 0x6870, 0xa206, 0x00c0, -+ 0x959f, 0x686c, 0xa106, 0x00c0, 0x959f, 0x7210, 0x1078, 0x8cf2, -+ 0x0040, 0x95a5, 0x1078, 0xa28e, 0x0040, 0x95a5, 0x622a, 0x6007, -+ 0x0036, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x0c7f, 0x0d7f, 0x0e7f, -+ 0x007c, 0x7214, 0xa286, 0xffff, 0x0040, 0x9593, 0x1078, 0x8cf2, -+ 0x0040, 0x95a5, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, 0x00c0, -+ 0x95a5, 0x0078, 0x956e, 0x7210, 0x2c08, 0xa085, 0x0001, 0x1078, -+ 0xa1e6, 0x2c10, 0x2160, 0x0040, 0x95a5, 0x0078, 0x956e, 0x6007, -+ 0x0037, 0x6013, 0x1500, 0x0078, 0x9579, 0x6007, 0x0037, 0x6013, -+ 0x1700, 0x0078, 0x9579, 0x6007, 0x0012, 0x0078, 0x9579, 0x1078, -+ 0x29bb, 0x00c0, 0x9664, 0x6018, 0xa080, 0x0001, 0x2004, 0xa084, -+ 0xff00, 0x8007, 0xa086, 0x0006, 0x00c0, 0x9498, 0x0e7e, 0x0d7e, -+ 0x0c7e, 0x2001, 0xa672, 0x2004, 0xd0e4, 0x0040, 0x9621, 0x2069, -+ 0xa600, 0x2071, 0xab8c, 0x7008, 0x6036, 0x720c, 0x623a, 0xa286, -+ 0xffff, 0x00c0, 0x95de, 0x7208, 0x0c7e, 0x2c08, 0xa085, 0x0001, -+ 0x1078, 0xa1e6, 0x2c10, 0x0c7f, 0x0040, 0x9615, 0x1078, 0x8cf2, -+ 0x0040, 0x9615, 0x0c7e, 0x027e, 0x2260, 0x1078, 0x89f3, 0x027f, -+ 0x0c7f, 0x7118, 0xa18c, 0xff00, 0x810f, 0xa186, 0x0001, 0x0040, -+ 0x95ff, 0xa186, 0x0005, 0x0040, 0x95f9, 0xa186, 0x0007, 0x00c0, -+ 0x9609, 0xa280, 0x0004, 0x2004, 0xa005, 0x0040, 0x9609, 0x057e, -+ 0x7510, 0x7614, 0x1078, 0xa2a3, 0x057f, 0x0c7f, 0x0d7f, 0x0e7f, -+ 0x007c, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, 0x2a00, 0x6003, -+ 0x0001, 0x1078, 0x5d8a, 0x0078, 0x9605, 0x6007, 0x003b, 0x602b, -+ 0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x0078, -+ 0x9605, 0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, 0x0078, -+ 0x9579, 0x0e7e, 0x027e, 0x1078, 0x4967, 0x0040, 0x965e, 0x1078, -+ 0x4957, 0x1078, 0xa4a9, 0x00c0, 0x965c, 0x2071, 0xa600, 0x70cc, -+ 0xc085, 0x70ce, 0x0f7e, 0x2079, 0x0100, 0x7298, 0xa284, 0x00ff, -+ 0x706e, 0x78e6, 0xa284, 0xff00, 0x7270, 0xa205, 0x7072, 0x78ea, -+ 0x0f7f, 0x70d7, 0x0000, 0x2001, 0xa653, 0x2004, 0xd0a4, 0x0040, -+ 0x9655, 0x2011, 0xa8ca, 0x2013, 0x07d0, 0xd0ac, 0x00c0, 0x965e, -+ 0x1078, 0x2677, 0x0078, 0x965e, 0x1078, 0xa4d9, 0x027f, 0x0e7f, -+ 0x1078, 0x772d, 0x0078, 0x9497, 0x1078, 0x772d, 0x007c, 0x0d7e, -+ 0x067e, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, -+ 0x0006, 0x0040, 0x9684, 0xa686, 0x0004, 0x0040, 0x9684, 0x6e04, -+ 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0040, 0x9684, 0xa686, 0x0004, -+ 0x0040, 0x9684, 0xa085, 0x0001, 0x067f, 0x0d7f, 0x007c, 0x0d7e, -+ 0x1078, 0x96bb, 0x0d7f, 0x007c, 0x0d7e, 0x1078, 0x96ca, 0x00c0, -+ 0x96b4, 0x680c, 0xa08c, 0xff00, 0x6820, 0xa084, 0x00ff, 0xa115, -+ 0x6212, 0x6824, 0x602a, 0xd1e4, 0x0040, 0x96a2, 0x2009, 0x0001, -+ 0x0078, 0x96b0, 0xd1ec, 0x0040, 0x96b4, 0x6920, 0xa18c, 0x00ff, -+ 0x6824, 0x1078, 0x254d, 0x00c0, 0x96b4, 0x2110, 0x2009, 0x0000, -+ 0x1078, 0x28c8, 0x0078, 0x96b8, 0xa085, 0x0001, 0x0078, 0x96b9, -+ 0xa006, 0x0d7f, 0x007c, 0x2069, 0xab8d, 0x6800, 0xa082, 0x0010, -+ 0x00c8, 0x96c8, 0x6013, 0x0000, 0xa085, 0x0001, 0x0078, 0x96c9, -+ 0xa006, 0x007c, 0x6013, 0x0000, 0x2069, 0xab8c, 0x6808, 0xa084, -+ 0xff00, 0xa086, 0x0800, 0x00c0, 0x96de, 0x6800, 0xa084, 0x00ff, -+ 0xa08e, 0x0014, 0x0040, 0x96de, 0xa08e, 0x0010, 0x007c, 0x6004, -+ 0xa0b2, 0x0044, 0x10c8, 0x1332, 0xa1b6, 0x0013, 0x00c0, 0x96eb, -+ 0x2008, 0x0079, 0x96fe, 0xa1b6, 0x0027, 0x0040, 0x96f3, 0xa1b6, -+ 0x0014, 0x10c0, 0x1332, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078, -+ 0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c, 0x973e, 0x9740, -+ 0x973e, 0x973e, 0x973e, 0x9740, 0x974c, 0x97d6, 0x9799, 0x97d6, -+ 0x97ad, 0x97d6, 0x974c, 0x97d6, 0x97ce, 0x97d6, 0x97ce, 0x97d6, -+ 0x97d6, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e, 0x973e, -+ 0x973e, 0x973e, 0x973e, 0x973e, 0x9740, 0x973e, 0x97d6, 0x973e, -+ 0x973e, 0x97d6, 0x973e, 0x97d6, 0x97d6, 0x973e, 0x973e, 0x973e, -+ 0x973e, 0x97d6, 0x97d6, 0x973e, 0x97d6, 0x97d6, 0x973e, 0x973e, -+ 0x973e, 0x973e, 0x973e, 0x9740, 0x97d6, 0x97d6, 0x973e, 0x973e, -+ 0x97d6, 0x97d6, 0x973e, 0x973e, 0x973e, 0x973e, 0x1078, 0x1332, -+ 0x1078, 0x61cd, 0x2001, 0xa8a2, 0x2004, 0x6016, 0x6003, 0x0002, -+ 0x1078, 0x62d1, 0x0078, 0x97dc, 0x0f7e, 0x2079, 0xa652, 0x7804, -+ 0x0f7f, 0xd0ac, 0x00c0, 0x97d6, 0x2001, 0x0000, 0x1078, 0x44ee, -+ 0x6018, 0xa080, 0x0004, 0x2004, 0xa086, 0x00ff, 0x0040, 0x97d6, -+ 0x0c7e, 0x6018, 0x2060, 0x6000, 0xd0f4, 0x00c0, 0x9770, 0x6010, -+ 0xa005, 0x0040, 0x9770, 0x0c7f, 0x1078, 0x3699, 0x0078, 0x97d6, -+ 0x0c7f, 0x2001, 0xa600, 0x2004, 0xa086, 0x0002, 0x00c0, 0x977f, -+ 0x0f7e, 0x2079, 0xa600, 0x7890, 0x8000, 0x7892, 0x0f7f, 0x2001, -+ 0x0002, 0x1078, 0x4502, 0x1078, 0x61cd, 0x601f, 0x0001, 0x6003, -+ 0x0001, 0x6007, 0x0002, 0x1078, 0x5dd7, 0x1078, 0x62d1, 0x0c7e, -+ 0x6118, 0x2160, 0x2009, 0x0001, 0x1078, 0x5a52, 0x0c7f, 0x0078, -+ 0x97dc, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00, -+ 0x8637, 0xa686, 0x0006, 0x0040, 0x97d6, 0xa686, 0x0004, 0x0040, -+ 0x97d6, 0x2001, 0x0004, 0x0078, 0x97d4, 0x2001, 0xa600, 0x2004, -+ 0xa086, 0x0003, 0x00c0, 0x97b6, 0x1078, 0x3699, 0x2001, 0x0006, -+ 0x1078, 0x97dd, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, -+ 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x97d6, 0x2001, 0x0006, -+ 0x0078, 0x97d4, 0x2001, 0x0004, 0x0078, 0x97d4, 0x2001, 0x0006, -+ 0x1078, 0x97dd, 0x0078, 0x97d6, 0x1078, 0x4535, 0x1078, 0x61cd, -+ 0x1078, 0x772d, 0x1078, 0x62d1, 0x007c, 0x017e, 0x0d7e, 0x6118, -+ 0x2168, 0x6900, 0xd184, 0x0040, 0x97f8, 0x6104, 0xa18e, 0x000a, -+ 0x00c0, 0x97f0, 0x699c, 0xd1a4, 0x00c0, 0x97f0, 0x2001, 0x0007, -+ 0x1078, 0x4502, 0x2001, 0x0000, 0x1078, 0x44ee, 0x1078, 0x28a6, -+ 0x0d7f, 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, -+ 0xff00, 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1332, 0xa1b6, -+ 0x0015, 0x00c0, 0x980f, 0x1079, 0x9816, 0x0078, 0x9815, 0xa1b6, -+ 0x0016, 0x10c0, 0x1332, 0x1079, 0x9822, 0x007c, 0x7d4e, 0x7d4e, -+ 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x9877, 0x982e, 0x7d4e, 0x7d4e, -+ 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, -+ 0x9877, 0x987f, 0x7d4e, 0x7d4e, 0x7d4e, 0x7d4e, 0x0f7e, 0x2079, -+ 0xa652, 0x7804, 0xd0ac, 0x00c0, 0x9855, 0x6018, 0xa07d, 0x0040, -+ 0x9855, 0x7800, 0xd0f4, 0x00c0, 0x9841, 0x7810, 0xa005, 0x00c0, -+ 0x9855, 0x2001, 0x0000, 0x1078, 0x44ee, 0x2001, 0x0002, 0x1078, -+ 0x4502, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, -+ 0x5dd7, 0x1078, 0x62d1, 0x0078, 0x9875, 0x2011, 0xab83, 0x2204, -+ 0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x9875, 0x0c7e, 0x1078, -+ 0x45c4, 0x0040, 0x9868, 0x0c7f, 0x1078, 0x772d, 0x0078, 0x9875, -+ 0x6010, 0x007e, 0x6014, 0x007e, 0x1078, 0x42f8, 0x007f, 0x6016, -+ 0x007f, 0x6012, 0x0c7f, 0x1078, 0x772d, 0x0f7f, 0x007c, 0x6604, -+ 0xa6b6, 0x001e, 0x00c0, 0x987e, 0x1078, 0x772d, 0x007c, 0x1078, -+ 0x7f8e, 0x00c0, 0x988b, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, -+ 0x5dd7, 0x0078, 0x988d, 0x1078, 0x772d, 0x007c, 0x6004, 0xa08a, -+ 0x0044, 0x10c8, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078, -+ 0x62d1, 0x007c, 0xa182, 0x0040, 0x0079, 0x989e, 0x98b1, 0x98b1, -+ 0x98b1, 0x98b1, 0x98b3, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, -+ 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, 0x98b1, -+ 0x98b1, 0x1078, 0x1332, 0x0d7e, 0x0e7e, 0x0f7e, 0x157e, 0x047e, -+ 0x027e, 0x6218, 0xa280, 0x002b, 0x2004, 0xa005, 0x0040, 0x98c4, -+ 0x2021, 0x0000, 0x1078, 0xa472, 0x6106, 0x2071, 0xab80, 0x7444, -+ 0xa4a4, 0xff00, 0x0040, 0x991b, 0xa486, 0x2000, 0x00c0, 0x98d6, -+ 0x2009, 0x0001, 0x2011, 0x0200, 0x1078, 0x5bf1, 0x1078, 0x138b, -+ 0x1040, 0x1332, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803, -+ 0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6008, 0x68b2, -+ 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x694a, 0x017e, 0xa084, -+ 0xff00, 0x6846, 0x684f, 0x0000, 0x6857, 0x0036, 0x1078, 0x4a73, -+ 0x017f, 0xa486, 0x2000, 0x00c0, 0x9903, 0x2019, 0x0017, 0x1078, -+ 0xa195, 0x0078, 0x997d, 0xa486, 0x0400, 0x00c0, 0x990d, 0x2019, -+ 0x0002, 0x1078, 0xa146, 0x0078, 0x997d, 0xa486, 0x0200, 0x00c0, -+ 0x9913, 0x1078, 0xa12b, 0xa486, 0x1000, 0x00c0, 0x9919, 0x1078, -+ 0xa17a, 0x0078, 0x997d, 0x2069, 0xa933, 0x6a00, 0xd284, 0x0040, -+ 0x99e7, 0xa284, 0x0300, 0x00c0, 0x99df, 0x6804, 0xa005, 0x0040, -+ 0x99c5, 0x2d78, 0x6003, 0x0007, 0x1078, 0x1370, 0x0040, 0x9984, -+ 0x7800, 0xd08c, 0x00c0, 0x9937, 0x7804, 0x8001, 0x7806, 0x6013, -+ 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000, 0x6008, -+ 0x68b2, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, -+ 0x6986, 0x6846, 0x7928, 0x698a, 0x792c, 0x698e, 0x7930, 0x6992, -+ 0x7934, 0x6996, 0x6853, 0x003d, 0x7244, 0xa294, 0x0003, 0xa286, -+ 0x0002, 0x00c0, 0x995f, 0x684f, 0x0040, 0x0078, 0x9969, 0xa286, -+ 0x0001, 0x00c0, 0x9967, 0x684f, 0x0080, 0x0078, 0x9969, 0x684f, -+ 0x0000, 0x20a9, 0x000a, 0x2001, 0xab90, 0xad90, 0x0015, 0x200c, -+ 0x810f, 0x2112, 0x8000, 0x8210, 0x00f0, 0x996f, 0x200c, 0x6982, -+ 0x8000, 0x200c, 0x697e, 0x1078, 0x4a73, 0x027f, 0x047f, 0x157f, -+ 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x2001, 0xa60e, 0x2004, 0xd084, -+ 0x0040, 0x998e, 0x1078, 0x138b, 0x00c0, 0x9930, 0x6013, 0x0100, -+ 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1, -+ 0x0078, 0x997d, 0x2069, 0xab92, 0x2d04, 0xa084, 0xff00, 0xa086, -+ 0x1200, 0x00c0, 0x99b9, 0x2069, 0xab80, 0x686c, 0xa084, 0x00ff, -+ 0x017e, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112, 0x017f, 0x6003, -+ 0x0001, 0x6007, 0x0043, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, -+ 0x997d, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, -+ 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x997d, 0x2001, 0xa60d, 0x2004, -+ 0xd0ec, 0x0040, 0x99cf, 0x2011, 0x8049, 0x1078, 0x361b, 0x6013, -+ 0x0300, 0x0078, 0x99d5, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, -+ 0x0041, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x997d, 0x6013, -+ 0x0500, 0x0078, 0x99d5, 0x6013, 0x0600, 0x0078, 0x999a, 0x6013, -+ 0x0200, 0x0078, 0x999a, 0xa186, 0x0013, 0x00c0, 0x99fd, 0x6004, -+ 0xa08a, 0x0040, 0x1048, 0x1332, 0xa08a, 0x0053, 0x10c8, 0x1332, -+ 0xa082, 0x0040, 0x2008, 0x0079, 0x9a82, 0xa186, 0x0051, 0x0040, -+ 0x9a0a, 0xa186, 0x0047, 0x00c0, 0x9a23, 0x6004, 0xa086, 0x0041, -+ 0x0040, 0x9a31, 0x2001, 0x0109, 0x2004, 0xd084, 0x0040, 0x9a31, -+ 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x1078, 0x5c56, -+ 0x027f, 0x017f, 0x007f, 0x127f, 0x6000, 0xa086, 0x0002, 0x00c0, -+ 0x9a31, 0x0078, 0x9ac7, 0xa186, 0x0027, 0x0040, 0x9a2b, 0xa186, -+ 0x0014, 0x10c0, 0x1332, 0x6004, 0xa082, 0x0040, 0x2008, 0x0079, -+ 0x9a34, 0x1078, 0x7773, 0x007c, 0x9a47, 0x9a49, 0x9a49, 0x9a71, -+ 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, -+ 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x9a47, 0x1078, -+ 0x1332, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x037e, 0x0d7e, 0x6010, -+ 0xa06d, 0x0040, 0x9a6e, 0xad84, 0xf000, 0x0040, 0x9a6e, 0x6003, -+ 0x0002, 0x6018, 0x2004, 0xd0bc, 0x00c0, 0x9a6e, 0x2019, 0x0004, -+ 0x1078, 0xa1ca, 0x6013, 0x0000, 0x6014, 0xa005, 0x00c0, 0x9a6c, -+ 0x2001, 0xa8a3, 0x2004, 0x6016, 0x6003, 0x0007, 0x0d7f, 0x037f, -+ 0x007c, 0x0d7e, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x1078, 0x8d06, -+ 0x0040, 0x9a7e, 0x6010, 0x2068, 0x1078, 0x13a4, 0x1078, 0x8ec6, -+ 0x0d7f, 0x007c, 0x9a95, 0x9ab4, 0x9a9e, 0x9ac1, 0x9a95, 0x9a95, -+ 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, -+ 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x9a95, 0x1078, 0x1332, 0x6010, -+ 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x1078, 0x61cd, -+ 0x6010, 0xa080, 0x0013, 0x2004, 0xd0b4, 0x0040, 0x9aaf, 0x6003, -+ 0x0007, 0x2009, 0x0043, 0x1078, 0x775c, 0x0078, 0x9ab1, 0x6003, -+ 0x0002, 0x1078, 0x62d1, 0x007c, 0x1078, 0x61cd, 0x1078, 0xa423, -+ 0x00c0, 0x9abe, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x1078, 0x62d1, -+ 0x007c, 0x1078, 0x61cd, 0x2009, 0x0041, 0x0078, 0x9c1e, 0xa182, -+ 0x0040, 0x0079, 0x9acb, 0x9ade, 0x9ae0, 0x9ade, 0x9ade, 0x9ade, -+ 0x9ade, 0x9ade, 0x9ae1, 0x9ade, 0x9ade, 0x9ade, 0x9ade, 0x9ade, -+ 0x9ade, 0x9ade, 0x9ade, 0x9ade, 0x9aec, 0x9ade, 0x1078, 0x1332, -+ 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, -+ 0x2c10, 0x1078, 0x15fa, 0x007c, 0x0d7e, 0x1078, 0x5bc1, 0x0d7f, -+ 0x1078, 0xa495, 0x1078, 0x772d, 0x007c, 0xa182, 0x0040, 0x0079, -+ 0x9af9, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, -+ 0x9b0e, 0x9b0c, 0x9b11, 0x9b3c, 0x9b0c, 0x9b0c, 0x9b0c, 0x9b0c, -+ 0x9b3c, 0x9b0c, 0x9b0c, 0x9b0c, 0x1078, 0x1332, 0x1078, 0x7773, -+ 0x007c, 0x1078, 0x627a, 0x1078, 0x639b, 0x6010, 0x0d7e, 0x2068, -+ 0x684c, 0xd0fc, 0x0040, 0x9b27, 0xa08c, 0x0003, 0xa18e, 0x0002, -+ 0x0040, 0x9b2f, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x9c1e, 0x6003, -+ 0x0007, 0x6017, 0x0000, 0x1078, 0x5bc1, 0x0d7f, 0x007c, 0x1078, -+ 0xa423, 0x0040, 0x9b35, 0x0d7f, 0x007c, 0x1078, 0x5bc1, 0x1078, -+ 0x772d, 0x0d7f, 0x0078, 0x9b2e, 0x037e, 0x1078, 0x627a, 0x1078, -+ 0x639b, 0x6010, 0x0d7e, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0040, -+ 0x9b5c, 0x684c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x9b58, -+ 0x687c, 0x632c, 0xa31a, 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a, -+ 0x6003, 0x0002, 0x0078, 0x9b6d, 0x2019, 0x0004, 0x1078, 0xa1ca, -+ 0x6014, 0xa005, 0x00c0, 0x9b69, 0x2001, 0xa8a3, 0x2004, 0x8003, -+ 0x6016, 0x6013, 0x0000, 0x6003, 0x0007, 0x0d7f, 0x037f, 0x007c, -+ 0xa186, 0x0013, 0x00c0, 0x9b7e, 0x6004, 0xa086, 0x0042, 0x10c0, -+ 0x1332, 0x1078, 0x61cd, 0x1078, 0x62d1, 0x007c, 0xa186, 0x0027, -+ 0x0040, 0x9b86, 0xa186, 0x0014, 0x00c0, 0x9b96, 0x6004, 0xa086, -+ 0x0042, 0x10c0, 0x1332, 0x2001, 0x0007, 0x1078, 0x4535, 0x1078, -+ 0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c, 0xa182, 0x0040, -+ 0x0079, 0x9b9a, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, -+ 0x9bad, 0x9baf, 0x9bbb, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, -+ 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x9bad, 0x1078, 0x1332, 0x037e, -+ 0x047e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x15fa, -+ 0x047f, 0x037f, 0x007c, 0x6010, 0x0d7e, 0x2068, 0x6810, 0x6a14, -+ 0x6118, 0x210c, 0xd1bc, 0x0040, 0x9bda, 0x6124, 0xd1f4, 0x00c0, -+ 0x9bda, 0x007e, 0x047e, 0x057e, 0x6c7c, 0xa422, 0x6d80, 0x2200, -+ 0xa52b, 0x602c, 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x057f, -+ 0x047f, 0x007f, 0xa20d, 0x00c0, 0x9bee, 0x684c, 0xd0fc, 0x0040, -+ 0x9be6, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x9c1e, 0x6003, 0x0007, -+ 0x6017, 0x0000, 0x1078, 0x5bc1, 0x0d7f, 0x007c, 0x007e, 0x0f7e, -+ 0x2c78, 0x1078, 0x4963, 0x0f7f, 0x007f, 0x0040, 0x9bfb, 0x6003, -+ 0x0002, 0x0d7f, 0x007c, 0x2009, 0xa60d, 0x210c, 0xd19c, 0x0040, -+ 0x9c05, 0x6003, 0x0007, 0x0078, 0x9c07, 0x6003, 0x0006, 0x1078, -+ 0x9c0d, 0x1078, 0x5bc3, 0x0d7f, 0x007c, 0xd2fc, 0x0040, 0x9c19, -+ 0x8002, 0x8000, 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0078, -+ 0x9c1b, 0x2009, 0x0015, 0x6a6a, 0x6866, 0x007c, 0xa182, 0x0040, -+ 0x0048, 0x9c24, 0x0079, 0x9c31, 0xa186, 0x0013, 0x0040, 0x9c2c, -+ 0xa186, 0x0014, 0x10c0, 0x1332, 0x6024, 0xd0dc, 0x1040, 0x1332, -+ 0x007c, 0x9c44, 0x9c4b, 0x9c57, 0x9c63, 0x9c44, 0x9c44, 0x9c44, -+ 0x9c72, 0x9c44, 0x9c46, 0x9c46, 0x9c44, 0x9c44, 0x9c44, 0x9c44, -+ 0x9c44, 0x9c44, 0x9c44, 0x9c44, 0x1078, 0x1332, 0x6024, 0xd0dc, -+ 0x1040, 0x1332, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, -+ 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, 0x127f, 0x007c, 0x6003, -+ 0x0001, 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091, 0x8000, 0x1078, -+ 0x62d1, 0x127f, 0x007c, 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078, -+ 0x1cf0, 0x127e, 0x2091, 0x8000, 0x1078, 0x5df6, 0x1078, 0x639b, -+ 0x127f, 0x007c, 0xa016, 0x1078, 0x15fa, 0x007c, 0x127e, 0x2091, -+ 0x8000, 0x037e, 0x0d7e, 0xa182, 0x0040, 0x1079, 0x9c83, 0x0d7f, -+ 0x037f, 0x127f, 0x007c, 0x9c93, 0x9c95, 0x9caa, 0x9cc9, 0x9c93, -+ 0x9c93, 0x9c93, 0x9ce1, 0x9c93, 0x9c93, 0x9c93, 0x9c93, 0x9c93, -+ 0x9c93, 0x9c93, 0x9c93, 0x1078, 0x1332, 0x6010, 0x2068, 0x684c, -+ 0xd0fc, 0x0040, 0x9cbf, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0040, -+ 0x9cbf, 0x6003, 0x0001, 0x6106, 0x1078, 0x5d8a, 0x1078, 0x62d1, -+ 0x0078, 0x9ce4, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x9cbf, -+ 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0040, 0x9cbf, 0x6003, 0x0001, -+ 0x6106, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0078, 0x9ce4, 0x6013, -+ 0x0000, 0x6017, 0x0000, 0x2019, 0x0004, 0x1078, 0xa1ca, 0x0078, -+ 0x9ce4, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x9cbf, 0xa09c, -+ 0x0003, 0xa39e, 0x0003, 0x0040, 0x9cbf, 0x6003, 0x0003, 0x6106, -+ 0x2c10, 0x1078, 0x1cf0, 0x1078, 0x5df6, 0x1078, 0x639b, 0x0078, -+ 0x9ce4, 0xa016, 0x1078, 0x15fa, 0x007c, 0x1078, 0x61cd, 0x6110, -+ 0x81ff, 0x0040, 0x9cf6, 0x0d7e, 0x2168, 0x1078, 0xa4e2, 0x037e, -+ 0x2019, 0x0029, 0x1078, 0xa1ca, 0x037f, 0x0d7f, 0x1078, 0x8ec6, -+ 0x1078, 0x62d1, 0x007c, 0x1078, 0x627a, 0x6110, 0x81ff, 0x0040, -+ 0x9d0c, 0x0d7e, 0x2168, 0x1078, 0xa4e2, 0x037e, 0x2019, 0x0029, -+ 0x1078, 0xa1ca, 0x037f, 0x0d7f, 0x1078, 0x8ec6, 0x1078, 0x639b, -+ 0x007c, 0xa182, 0x0085, 0x0079, 0x9d15, 0x9d1e, 0x9d1c, 0x9d1c, -+ 0x9d2a, 0x9d1c, 0x9d1c, 0x9d1c, 0x1078, 0x1332, 0x6003, 0x000b, -+ 0x6106, 0x1078, 0x5d8a, 0x127e, 0x2091, 0x8000, 0x1078, 0x62d1, -+ 0x127f, 0x007c, 0x027e, 0x0e7e, 0x1078, 0xa41c, 0x0040, 0x9d34, -+ 0x1078, 0x772d, 0x0078, 0x9d50, 0x2071, 0xab80, 0x7224, 0x6212, -+ 0x7220, 0x1078, 0xa069, 0x0040, 0x9d41, 0x6007, 0x0086, 0x0078, -+ 0x9d4a, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x00c0, 0x9d4a, -+ 0x6007, 0x0086, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1, -+ 0x0e7f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x9d64, 0x6004, -+ 0xa08a, 0x0085, 0x1048, 0x1332, 0xa08a, 0x008c, 0x10c8, 0x1332, -+ 0xa082, 0x0085, 0x0079, 0x9d7b, 0xa186, 0x0027, 0x0040, 0x9d70, -+ 0xa186, 0x0014, 0x0040, 0x9d70, 0x1078, 0x7773, 0x0078, 0x9d7a, -+ 0x2001, 0x0007, 0x1078, 0x4535, 0x1078, 0x61cd, 0x1078, 0x8ec6, -+ 0x1078, 0x62d1, 0x007c, 0x9d82, 0x9d84, 0x9d84, 0x9d82, 0x9d82, -+ 0x9d82, 0x9d82, 0x1078, 0x1332, 0x1078, 0x61cd, 0x1078, 0x8ec6, -+ 0x1078, 0x62d1, 0x007c, 0xa182, 0x0085, 0x1048, 0x1332, 0xa182, -+ 0x008c, 0x10c8, 0x1332, 0xa182, 0x0085, 0x0079, 0x9d97, 0x9d9e, -+ 0x9d9e, 0x9d9e, 0x9da0, 0x9d9e, 0x9d9e, 0x9d9e, 0x1078, 0x1332, -+ 0x007c, 0xa186, 0x0013, 0x0040, 0x9db1, 0xa186, 0x0014, 0x0040, -+ 0x9db1, 0xa186, 0x0027, 0x0040, 0x9db1, 0x1078, 0x7773, 0x0078, -+ 0x9db7, 0x1078, 0x61cd, 0x1078, 0x8ec6, 0x1078, 0x62d1, 0x007c, -+ 0x037e, 0x1078, 0xa495, 0x603f, 0x0000, 0x2019, 0x000b, 0x1078, -+ 0x9dc7, 0x601f, 0x0006, 0x6003, 0x0007, 0x037f, 0x007c, 0x127e, -+ 0x037e, 0x2091, 0x8000, 0x087e, 0x2c40, 0x097e, 0x2049, 0x0000, -+ 0x1078, 0x7246, 0x097f, 0x087f, 0x00c0, 0x9e02, 0x077e, 0x2c38, -+ 0x1078, 0x72f3, 0x077f, 0x00c0, 0x9e02, 0x6000, 0xa086, 0x0000, -+ 0x0040, 0x9e02, 0x601c, 0xa086, 0x0007, 0x0040, 0x9e02, 0x0d7e, -+ 0x6000, 0xa086, 0x0004, 0x00c0, 0x9df3, 0x1078, 0xa495, 0x601f, -+ 0x0007, 0x1078, 0x1757, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, -+ 0x9dfb, 0x1078, 0xa1ca, 0x0d7f, 0x6013, 0x0000, 0x1078, 0xa495, -+ 0x601f, 0x0007, 0x037f, 0x127f, 0x007c, 0x0f7e, 0x0c7e, 0x037e, -+ 0x157e, 0x2079, 0xab80, 0x7938, 0x783c, 0x1078, 0x254d, 0x00c0, -+ 0x9e49, 0x017e, 0x0c7e, 0x1078, 0x45c4, 0x00c0, 0x9e49, 0x017f, -+ 0x027f, 0x027e, 0x017e, 0x2019, 0x0029, 0x1078, 0x73d0, 0x1078, -+ 0x5f01, 0x077e, 0x2039, 0x0000, 0x1078, 0x5e0a, 0x077f, 0x017f, -+ 0x077e, 0x2039, 0x0000, 0x1078, 0x9f8b, 0x077f, 0x1078, 0x47e9, -+ 0x027e, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, -+ 0x9e3d, 0xa286, 0x0004, 0x00c0, 0x9e40, 0x62a0, 0x1078, 0x2942, -+ 0x027f, 0x017f, 0x1078, 0x42f8, 0x6612, 0x6516, 0xa006, 0x0078, -+ 0x9e4b, 0x0c7f, 0x017f, 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c, -+ 0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x2009, 0xa620, 0x2104, 0xa086, -+ 0x0074, 0x00c0, 0x9eb3, 0x2069, 0xab8e, 0x690c, 0xa182, 0x0100, -+ 0x0048, 0x9ea3, 0x6908, 0xa184, 0x8000, 0x0040, 0x9eaf, 0x6018, -+ 0x2070, 0x7010, 0xa084, 0x00ff, 0x0040, 0x9e72, 0x7000, 0xd0f4, -+ 0x0040, 0x9e76, 0xa184, 0x0800, 0x0040, 0x9eaf, 0x6910, 0xa18a, -+ 0x0001, 0x0048, 0x9ea7, 0x6914, 0x2069, 0xabae, 0x6904, 0x81ff, -+ 0x00c0, 0x9e9b, 0x690c, 0xa182, 0x0100, 0x0048, 0x9ea3, 0x6908, -+ 0x81ff, 0x00c0, 0x9e9f, 0x6910, 0xa18a, 0x0001, 0x0048, 0x9ea7, -+ 0x6918, 0xa18a, 0x0001, 0x0048, 0x9eaf, 0x0078, 0x9eb9, 0x6013, -+ 0x0100, 0x0078, 0x9eb5, 0x6013, 0x0300, 0x0078, 0x9eb5, 0x6013, -+ 0x0500, 0x0078, 0x9eb5, 0x6013, 0x0700, 0x0078, 0x9eb5, 0x6013, -+ 0x0900, 0x0078, 0x9eb5, 0x6013, 0x0b00, 0x0078, 0x9eb5, 0x6013, -+ 0x0f00, 0x0078, 0x9eb5, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0078, -+ 0x9eba, 0xa006, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x0c7e, -+ 0x0d7e, 0x027e, 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04, 0xa394, -+ 0x00ff, 0xa286, 0x0006, 0x0040, 0x9ee3, 0xa286, 0x0004, 0x0040, -+ 0x9ee3, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, 0x9ee3, -+ 0xa286, 0x0004, 0x0040, 0x9ee3, 0x0c7e, 0x2d60, 0x1078, 0x45d6, -+ 0x0c7f, 0x0078, 0x9f1e, 0x2011, 0xab96, 0xad98, 0x000a, 0x20a9, -+ 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f1f, 0x2011, 0xab9a, 0xad98, -+ 0x0006, 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f1f, 0x047e, -+ 0x017e, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0xa653, -+ 0x210c, 0xd1a4, 0x0040, 0x9f0b, 0x2009, 0x0029, 0x1078, 0xa21d, -+ 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, 0x1078, 0x5f01, 0x077e, -+ 0x2039, 0x0000, 0x1078, 0x5e0a, 0x2c08, 0x1078, 0x9f8b, 0x077f, -+ 0x2001, 0x0007, 0x1078, 0x4535, 0x017f, 0x047f, 0xa006, 0x157f, -+ 0x037f, 0x027f, 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069, 0xab8e, -+ 0x6800, 0xa086, 0x0800, 0x0040, 0x9f31, 0x6013, 0x0000, 0x0078, -+ 0x9f32, 0xa006, 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e, 0x027e, -+ 0x037e, 0x157e, 0x2079, 0xab8c, 0x7930, 0x7834, 0x1078, 0x254d, -+ 0x00c0, 0x9f58, 0x1078, 0x45c4, 0x00c0, 0x9f58, 0x2011, 0xab90, -+ 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x80de, 0x00c0, 0x9f58, -+ 0x2011, 0xab94, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x80de, -+ 0x157f, 0x037f, 0x027f, 0x017f, 0x0f7f, 0x0c7f, 0x007c, 0x0c7e, -+ 0x007e, 0x017e, 0x027e, 0x037e, 0x157e, 0x2011, 0xab83, 0x2204, -+ 0x8211, 0x220c, 0x1078, 0x254d, 0x00c0, 0x9f84, 0x1078, 0x45c4, -+ 0x00c0, 0x9f84, 0x2011, 0xab96, 0xac98, 0x000a, 0x20a9, 0x0004, -+ 0x1078, 0x80de, 0x00c0, 0x9f84, 0x2011, 0xab9a, 0xac98, 0x0006, -+ 0x20a9, 0x0004, 0x1078, 0x80de, 0x157f, 0x037f, 0x027f, 0x017f, -+ 0x007f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x087e, 0x077e, 0x067e, -+ 0x057e, 0x047e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2740, 0x2029, -+ 0xa8ba, 0x252c, 0x2021, 0xa8c0, 0x2424, 0x2061, 0xad00, 0x2071, -+ 0xa600, 0x7648, 0x7064, 0x81ff, 0x0040, 0x9fb2, 0x007e, 0xa186, -+ 0xa9b3, 0x007f, 0x0040, 0x9fb2, 0x8001, 0xa602, 0x00c8, 0xa01c, -+ 0x0078, 0x9fb5, 0xa606, 0x0040, 0xa01c, 0x2100, 0xac06, 0x0040, -+ 0xa012, 0x1078, 0xa242, 0x0040, 0xa012, 0x671c, 0xa786, 0x0001, -+ 0x0040, 0xa037, 0xa786, 0x0004, 0x0040, 0xa037, 0xa786, 0x0007, -+ 0x0040, 0xa012, 0x2500, 0xac06, 0x0040, 0xa012, 0x2400, 0xac06, -+ 0x0040, 0xa012, 0x1078, 0xa256, 0x00c0, 0xa012, 0x88ff, 0x0040, -+ 0x9fdd, 0x6020, 0xa906, 0x00c0, 0xa012, 0x0d7e, 0x6000, 0xa086, -+ 0x0004, 0x00c0, 0x9fe7, 0x017e, 0x1078, 0x1757, 0x017f, 0xa786, -+ 0x0008, 0x00c0, 0x9ff6, 0x1078, 0x8f00, 0x00c0, 0x9ff6, 0x1078, -+ 0x7c83, 0x0d7f, 0x1078, 0x8ec6, 0x0078, 0xa012, 0x6010, 0x2068, -+ 0x1078, 0x8d06, 0x0040, 0xa00f, 0xa786, 0x0003, 0x00c0, 0xa026, -+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0xa4e2, 0x017e, -+ 0x1078, 0x8f7d, 0x1078, 0x4a73, 0x017f, 0x1078, 0x8eb9, 0x0d7f, -+ 0x1078, 0x8ec6, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02, -+ 0x00c8, 0xa01c, 0x0078, 0x9f9f, 0x127f, 0x027f, 0x047f, 0x057f, -+ 0x067f, 0x077f, 0x087f, 0x0c7f, 0x0e7f, 0x007c, 0xa786, 0x0006, -+ 0x00c0, 0xa000, 0xa386, 0x0005, 0x0040, 0xa034, 0x1078, 0xa4e2, -+ 0x1078, 0xa1ca, 0x0078, 0xa00f, 0x0d7f, 0x0078, 0xa012, 0x1078, -+ 0xa256, 0x00c0, 0xa012, 0x81ff, 0x0040, 0xa012, 0xa180, 0x0001, -+ 0x2004, 0xa086, 0x0018, 0x0040, 0xa04c, 0xa180, 0x0001, 0x2004, -+ 0xa086, 0x002d, 0x00c0, 0xa012, 0x6000, 0xa086, 0x0002, 0x00c0, -+ 0xa012, 0x1078, 0x8eec, 0x0040, 0xa05d, 0x1078, 0x8f00, 0x00c0, -+ 0xa012, 0x1078, 0x7c83, 0x0078, 0xa065, 0x1078, 0x28a6, 0x1078, -+ 0x8f00, 0x00c0, 0xa065, 0x1078, 0x7c83, 0x1078, 0x8ec6, 0x0078, -+ 0xa012, 0x0c7e, 0x0e7e, 0x017e, 0x2c08, 0x2170, 0xa006, 0x1078, -+ 0xa1e6, 0x017f, 0x0040, 0xa079, 0x601c, 0xa084, 0x000f, 0x1079, -+ 0xa07c, 0x0e7f, 0x0c7f, 0x007c, 0xa084, 0xa084, 0xa084, 0xa084, -+ 0xa084, 0xa084, 0xa086, 0xa084, 0xa006, 0x007c, 0x047e, 0x017e, -+ 0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, -+ 0x2009, 0x0020, 0x1078, 0xa21d, 0x017f, 0x047f, 0x037e, 0x2019, -+ 0x0002, 0x1078, 0x9dc7, 0x037f, 0xa085, 0x0001, 0x007c, 0x2001, -+ 0x0001, 0x1078, 0x44ee, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9, -+ 0x0004, 0x2019, 0xa605, 0x2011, 0xab96, 0x1078, 0x80de, 0x037f, -+ 0x027f, 0x017f, 0x157f, 0xa005, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, -+ 0x087e, 0x077e, 0x067e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2740, -+ 0x2061, 0xad00, 0x2079, 0x0001, 0x8fff, 0x0040, 0xa11d, 0x2071, -+ 0xa600, 0x7648, 0x7064, 0x8001, 0xa602, 0x00c8, 0xa11d, 0x88ff, -+ 0x0040, 0xa0d8, 0x2800, 0xac06, 0x00c0, 0xa113, 0x2079, 0x0000, -+ 0x1078, 0xa242, 0x0040, 0xa113, 0x2400, 0xac06, 0x0040, 0xa113, -+ 0x671c, 0xa786, 0x0006, 0x00c0, 0xa113, 0xa786, 0x0007, 0x0040, -+ 0xa113, 0x88ff, 0x00c0, 0xa0f7, 0x6018, 0xa206, 0x00c0, 0xa113, -+ 0x85ff, 0x0040, 0xa0f7, 0x6020, 0xa106, 0x00c0, 0xa113, 0x0d7e, -+ 0x6000, 0xa086, 0x0004, 0x00c0, 0xa103, 0x1078, 0xa495, 0x601f, -+ 0x0007, 0x1078, 0x1757, 0x6010, 0x2068, 0x1078, 0x8d06, 0x0040, -+ 0xa10d, 0x047e, 0x1078, 0xa1ca, 0x047f, 0x0d7f, 0x1078, 0x8ec6, -+ 0x88ff, 0x00c0, 0xa127, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, -+ 0xac02, 0x00c8, 0xa11d, 0x0078, 0xa0c4, 0xa006, 0x127f, 0x027f, -+ 0x067f, 0x077f, 0x087f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5, -+ 0x0001, 0x0078, 0xa11e, 0x077e, 0x057e, 0x087e, 0x2041, 0x0000, -+ 0x2029, 0x0001, 0x2c20, 0x2019, 0x0002, 0x6218, 0x097e, 0x2049, -+ 0x0000, 0x1078, 0x7246, 0x097f, 0x087f, 0x2039, 0x0000, 0x1078, -+ 0x72f3, 0x1078, 0xa0b5, 0x057f, 0x077f, 0x007c, 0x027e, 0x047e, -+ 0x057e, 0x077e, 0x0c7e, 0x157e, 0x2c20, 0x2128, 0x20a9, 0x007f, -+ 0x2009, 0x0000, 0x017e, 0x037e, 0x1078, 0x45c4, 0x00c0, 0xa16e, -+ 0x2c10, 0x057e, 0x087e, 0x2041, 0x0000, 0x2508, 0x2029, 0x0001, -+ 0x097e, 0x2049, 0x0000, 0x1078, 0x7246, 0x097f, 0x087f, 0x2039, -+ 0x0000, 0x1078, 0x72f3, 0x1078, 0xa0b5, 0x057f, 0x037f, 0x017f, -+ 0x8108, 0x00f0, 0xa152, 0x157f, 0x0c7f, 0x077f, 0x057f, 0x047f, -+ 0x027f, 0x007c, 0x077e, 0x057e, 0x6218, 0x087e, 0x2041, 0x0000, -+ 0x2029, 0x0001, 0x2019, 0x0048, 0x097e, 0x2049, 0x0000, 0x1078, -+ 0x7246, 0x097f, 0x087f, 0x2039, 0x0000, 0x1078, 0x72f3, 0x2c20, -+ 0x1078, 0xa0b5, 0x057f, 0x077f, 0x007c, 0x027e, 0x047e, 0x057e, -+ 0x077e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, 0x007f, 0x2009, 0x0000, -+ 0x017e, 0x037e, 0x1078, 0x45c4, 0x00c0, 0xa1be, 0x2c10, 0x087e, -+ 0x2041, 0x0000, 0x2828, 0x047e, 0x2021, 0x0001, 0x1078, 0xa472, -+ 0x047f, 0x097e, 0x2049, 0x0000, 0x1078, 0x7246, 0x097f, 0x087f, -+ 0x2039, 0x0000, 0x1078, 0x72f3, 0x1078, 0xa0b5, 0x037f, 0x017f, -+ 0x8108, 0x00f0, 0xa1a0, 0x157f, 0x0c7f, 0x077f, 0x057f, 0x047f, -+ 0x027f, 0x007c, 0x017e, 0x0f7e, 0xad82, 0xcd00, 0x0048, 0xa1e3, -+ 0xad82, 0xffff, 0x00c8, 0xa1e3, 0x6800, 0xa07d, 0x0040, 0xa1e0, -+ 0x6803, 0x0000, 0x6b52, 0x1078, 0x4a73, 0x2f68, 0x0078, 0xa1d4, -+ 0x6b52, 0x1078, 0x4a73, 0x0f7f, 0x017f, 0x007c, 0x0e7e, 0x047e, -+ 0x037e, 0x2061, 0xad00, 0xa005, 0x00c0, 0xa1f6, 0x2071, 0xa600, -+ 0x7448, 0x7064, 0x8001, 0xa402, 0x00c8, 0xa218, 0x2100, 0xac06, -+ 0x0040, 0xa20a, 0x6000, 0xa086, 0x0000, 0x0040, 0xa20a, 0x6008, -+ 0xa206, 0x00c0, 0xa20a, 0x6018, 0xa1a0, 0x0006, 0x2424, 0xa406, -+ 0x0040, 0xa214, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, 0xac02, -+ 0x00c8, 0xa218, 0x0078, 0xa1f6, 0xa085, 0x0001, 0x0078, 0xa219, -+ 0xa006, 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e, 0x007e, 0x1078, -+ 0x138b, 0x007f, 0x1040, 0x1332, 0x6837, 0x010d, 0x685e, 0x027e, -+ 0x2010, 0x1078, 0x8cf2, 0x2001, 0x0000, 0x0040, 0xa233, 0x2200, -+ 0xa080, 0x0008, 0x2004, 0x027f, 0x684a, 0x6956, 0x6c46, 0x684f, -+ 0x0000, 0xa006, 0x68b2, 0x6802, 0x683a, 0x685a, 0x1078, 0x4a73, -+ 0x0d7f, 0x007c, 0x6700, 0xa786, 0x0000, 0x0040, 0xa255, 0xa786, -+ 0x0001, 0x0040, 0xa255, 0xa786, 0x000a, 0x0040, 0xa255, 0xa786, -+ 0x0009, 0x0040, 0xa255, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018, -+ 0x2070, 0x70a0, 0xa206, 0x0e7f, 0x007c, 0x017e, 0x6004, 0xa08e, -+ 0x001e, 0x00c0, 0xa277, 0x8007, 0x6130, 0xa18c, 0x00ff, 0xa105, -+ 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0005, 0x2001, -+ 0xa8a3, 0x2004, 0x6016, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x017f, -+ 0x007c, 0x0005, 0x0005, 0x007c, 0x6024, 0xd0e4, 0x0040, 0xa28d, -+ 0xd0cc, 0x0040, 0xa287, 0x1078, 0x8fbf, 0x0078, 0xa28d, 0x1078, -+ 0xa495, 0x1078, 0x5bc1, 0x1078, 0x772d, 0x007c, 0xa280, 0x0007, -+ 0x2004, 0xa084, 0x000f, 0x0079, 0xa295, 0xa29e, 0xa29e, 0xa29e, -+ 0xa2a0, 0xa29e, 0xa2a0, 0xa2a0, 0xa29e, 0xa2a0, 0xa006, 0x007c, -+ 0xa085, 0x0001, 0x007c, 0xa280, 0x0007, 0x2004, 0xa084, 0x000f, -+ 0x0079, 0xa2aa, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3, 0xa2b3, -+ 0xa2be, 0xa2b3, 0xa2b3, 0x6007, 0x003b, 0x602b, 0x0009, 0x6013, -+ 0x2a00, 0x6003, 0x0001, 0x1078, 0x5d8a, 0x007c, 0x0c7e, 0x2260, -+ 0x1078, 0xa495, 0x603f, 0x0000, 0x6024, 0xc0f4, 0xc0cc, 0x6026, -+ 0x0c7f, 0x0d7e, 0x2268, 0xa186, 0x0007, 0x00c0, 0xa31f, 0x6810, -+ 0xa005, 0x0040, 0xa2dc, 0xa080, 0x0013, 0x2004, 0xd0fc, 0x00c0, -+ 0xa2dc, 0x0d7f, 0x0078, 0xa2b3, 0x6007, 0x003a, 0x6003, 0x0001, -+ 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7e, 0x2d60, 0x6100, 0xa186, -+ 0x0002, 0x00c0, 0xa3ad, 0x6010, 0xa005, 0x00c0, 0xa2f6, 0x6000, -+ 0xa086, 0x0007, 0x10c0, 0x1332, 0x0078, 0xa3ad, 0xa08c, 0xf000, -+ 0x00c0, 0xa302, 0x0078, 0xa302, 0x2068, 0x6800, 0xa005, 0x00c0, -+ 0xa2fc, 0x2d00, 0xa080, 0x0013, 0x2004, 0xa084, 0x0003, 0xa086, -+ 0x0002, 0x00c0, 0xa31b, 0x6010, 0x2068, 0x684c, 0xc0dc, 0xc0f4, -+ 0x684e, 0x6850, 0xc0f4, 0xc0fc, 0x6852, 0x2009, 0x0043, 0x1078, -+ 0x9c1e, 0x0078, 0xa3ad, 0x2009, 0x0041, 0x0078, 0xa3a7, 0xa186, -+ 0x0005, 0x00c0, 0xa366, 0x6810, 0xa080, 0x0013, 0x2004, 0xd0bc, -+ 0x00c0, 0xa32d, 0x0d7f, 0x0078, 0xa2b3, 0xd0b4, 0x0040, 0xa335, -+ 0xd0fc, 0x1040, 0x1332, 0x0078, 0xa2cf, 0x6007, 0x003a, 0x6003, -+ 0x0001, 0x1078, 0x5d8a, 0x1078, 0x62d1, 0x0c7e, 0x2d60, 0x6100, -+ 0xa186, 0x0002, 0x0040, 0xa348, 0xa186, 0x0004, 0x00c0, 0xa3ad, -+ 0x2071, 0xa8e7, 0x7000, 0xa086, 0x0003, 0x00c0, 0xa355, 0x7004, -+ 0xac06, 0x00c0, 0xa355, 0x7003, 0x0000, 0x6810, 0xa080, 0x0013, -+ 0x200c, 0xc1f4, 0xc1dc, 0x2102, 0x8000, 0x200c, 0xc1f4, 0xc1fc, -+ 0xc1bc, 0x2102, 0x2009, 0x0042, 0x0078, 0xa3a7, 0x037e, 0x0d7e, -+ 0x0d7e, 0x1078, 0x138b, 0x037f, 0x1040, 0x1332, 0x6837, 0x010d, -+ 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x6b5e, 0x6857, -+ 0x0045, 0x2c00, 0x6862, 0x6034, 0x6872, 0x2360, 0x6024, 0xc0dd, -+ 0x6026, 0x6018, 0xa080, 0x0028, 0x2004, 0xa084, 0x00ff, 0x8007, -+ 0x6320, 0x6b4a, 0x6846, 0x684f, 0x0000, 0x6d6a, 0x6e66, 0x686f, -+ 0x0001, 0x1078, 0x4a73, 0x2019, 0x0045, 0x6008, 0x2068, 0x1078, -+ 0x9dc7, 0x2d00, 0x600a, 0x601f, 0x0006, 0x6003, 0x0007, 0x6017, -+ 0x0000, 0x603f, 0x0000, 0x0d7f, 0x037f, 0x0078, 0xa3ae, 0x603f, -+ 0x0000, 0x6003, 0x0007, 0x1078, 0x9c1e, 0x0c7f, 0x0d7f, 0x007c, -+ 0xa186, 0x0013, 0x00c0, 0xa3ba, 0x6004, 0xa082, 0x0085, 0x2008, -+ 0x0079, 0xa3d4, 0xa186, 0x0027, 0x00c0, 0xa3cd, 0x1078, 0x61cd, -+ 0x037e, 0x0d7e, 0x6010, 0x2068, 0x2019, 0x0004, 0x1078, 0xa1ca, -+ 0x0d7f, 0x037f, 0x1078, 0x62d1, 0x007c, 0xa186, 0x0014, 0x0040, -+ 0xa3be, 0x1078, 0x7773, 0x007c, 0xa3dd, 0xa3db, 0xa3db, 0xa3db, -+ 0xa3db, 0xa3db, 0xa3dd, 0x1078, 0x1332, 0x1078, 0x61cd, 0x6003, -+ 0x000c, 0x1078, 0x62d1, 0x007c, 0xa182, 0x008c, 0x00c8, 0xa3ee, -+ 0xa182, 0x0085, 0x0048, 0xa3ee, 0x0079, 0xa3f1, 0x1078, 0x7773, -+ 0x007c, 0xa3f8, 0xa3f8, 0xa3f8, 0xa3f8, 0xa3fa, 0xa419, 0xa3f8, -+ 0x1078, 0x1332, 0x0d7e, 0x2c68, 0x1078, 0x76c7, 0x0040, 0xa414, -+ 0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0xab8e, 0x210c, 0x6136, -+ 0x2009, 0xab8f, 0x210c, 0x613a, 0x600b, 0xffff, 0x6918, 0x611a, -+ 0x601f, 0x0004, 0x1078, 0x5d8a, 0x2d60, 0x1078, 0x772d, 0x0d7f, -+ 0x007c, 0x1078, 0x772d, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x7000, -+ 0xd0ec, 0x0e7f, 0x007c, 0x6010, 0xa08c, 0xf000, 0x0040, 0xa471, -+ 0xa080, 0x0013, 0x200c, 0xd1ec, 0x0040, 0xa471, 0x2001, 0xa672, -+ 0x2004, 0xd0ec, 0x0040, 0xa471, 0x6003, 0x0002, 0x6024, 0xc0e5, -+ 0x6026, 0xd1ac, 0x0040, 0xa44f, 0x0f7e, 0x2c78, 0x1078, 0x495f, -+ 0x0f7f, 0x0040, 0xa44f, 0x2001, 0xa8a4, 0x2004, 0x603e, 0x2009, -+ 0xa672, 0x210c, 0xd1f4, 0x00c0, 0xa46f, 0x0078, 0xa461, 0x2009, -+ 0xa672, 0x210c, 0xd1f4, 0x0040, 0xa45b, 0x6024, 0xc0e4, 0x6026, -+ 0xa006, 0x0078, 0xa471, 0x2001, 0xa8a4, 0x200c, 0x8103, 0xa100, -+ 0x603e, 0x6018, 0xa088, 0x002b, 0x2104, 0xa005, 0x0040, 0xa46c, -+ 0xa088, 0x0003, 0x0078, 0xa464, 0x2c0a, 0x600f, 0x0000, 0xa085, -+ 0x0001, 0x007c, 0x017e, 0x0c7e, 0x0e7e, 0x6120, 0xa2f0, 0x002b, -+ 0x2e04, 0x2060, 0x8cff, 0x0040, 0xa491, 0x84ff, 0x00c0, 0xa484, -+ 0x6020, 0xa106, 0x00c0, 0xa48c, 0x600c, 0x2072, 0x1078, 0x5bc1, -+ 0x1078, 0x772d, 0x0078, 0xa48e, 0xacf0, 0x0003, 0x2e64, 0x0078, -+ 0xa47a, 0x0e7f, 0x0c7f, 0x017f, 0x007c, 0x0d7e, 0x6018, 0xa0e8, -+ 0x002b, 0x2d04, 0xa005, 0x0040, 0xa4a7, 0xac06, 0x0040, 0xa4a5, -+ 0x2d04, 0xa0e8, 0x0003, 0x0078, 0xa499, 0x600c, 0x206a, 0x0d7f, -+ 0x007c, 0x027e, 0x037e, 0x157e, 0x2011, 0xa626, 0x2204, 0xa084, -+ 0x00ff, 0x2019, 0xab8e, 0x2334, 0xa636, 0x00c0, 0xa4d5, 0x8318, -+ 0x2334, 0x2204, 0xa084, 0xff00, 0xa636, 0x00c0, 0xa4d5, 0x2011, -+ 0xab90, 0x6018, 0xa098, 0x000a, 0x20a9, 0x0004, 0x1078, 0x80de, -+ 0x00c0, 0xa4d5, 0x2011, 0xab94, 0x6018, 0xa098, 0x0006, 0x20a9, -+ 0x0004, 0x1078, 0x80de, 0x00c0, 0xa4d5, 0x157f, 0x037f, 0x027f, -+ 0x007c, 0x0e7e, 0x2071, 0xa600, 0x1078, 0x42b8, 0x1078, 0x2677, -+ 0x0e7f, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x7000, 0xd0fc, 0x0040, -+ 0xa4eb, 0x1078, 0xa4ed, 0x0e7f, 0x007c, 0x6850, 0xc0e5, 0x6852, -+ 0x007c, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x057e, 0x047e, 0x027e, -+ 0x017e, 0x127e, 0x2091, 0x8000, 0x2029, 0xa8ba, 0x252c, 0x2021, -+ 0xa8c0, 0x2424, 0x2061, 0xad00, 0x2071, 0xa600, 0x7648, 0x7064, -+ 0xa606, 0x0040, 0xa545, 0x671c, 0xa786, 0x0001, 0x0040, 0xa514, -+ 0xa786, 0x0008, 0x00c0, 0xa53b, 0x2500, 0xac06, 0x0040, 0xa53b, -+ 0x2400, 0xac06, 0x0040, 0xa53b, 0x1078, 0xa242, 0x0040, 0xa53b, -+ 0x1078, 0xa256, 0x00c0, 0xa53b, 0x6000, 0xa086, 0x0004, 0x00c0, -+ 0xa52d, 0x017e, 0x1078, 0x1757, 0x017f, 0x1078, 0x8eec, 0x00c0, -+ 0xa533, 0x1078, 0x28a6, 0x1078, 0x8f00, 0x00c0, 0xa539, 0x1078, -+ 0x7c83, 0x1078, 0x8ec6, 0xace0, 0x0010, 0x2001, 0xa616, 0x2004, -+ 0xac02, 0x00c8, 0xa545, 0x0078, 0xa504, 0x127f, 0x017f, 0x027f, -+ 0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0x127e, -+ 0x007e, 0x0e7e, 0x017e, 0x2091, 0x8000, 0x2071, 0xa640, 0xd5a4, -+ 0x0040, 0xa55d, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0xa563, -+ 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0xa579, 0x2500, 0xa084, -+ 0x0007, 0xa08e, 0x0003, 0x0040, 0xa579, 0xa08e, 0x0004, 0x0040, -+ 0xa579, 0xa08e, 0x0005, 0x0040, 0xa579, 0x2071, 0xa64a, 0x1078, -+ 0xa5ba, 0x017f, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, -+ 0x0e7e, 0x017e, 0x2091, 0x8000, 0x2071, 0xa640, 0xd5a4, 0x0040, -+ 0xa58c, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0xa592, 0x7030, -+ 0x8000, 0x7032, 0xd5ac, 0x0040, 0xa5a8, 0x2500, 0xa084, 0x0007, -+ 0xa08e, 0x0003, 0x0040, 0xa5a8, 0xa08e, 0x0004, 0x0040, 0xa5a8, -+ 0xa08e, 0x0005, 0x0040, 0xa5a8, 0x2071, 0xa64a, 0x1078, 0xa5ba, -+ 0x017f, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e, -+ 0x2091, 0x8000, 0x2071, 0xa642, 0x1078, 0xa5ba, 0x0e7f, 0x007f, -+ 0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, 0x00c8, 0xa5c3, 0x8e70, -+ 0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, 0x2071, 0xa640, 0x1078, -+ 0xa5ba, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0xa644, 0x1078, 0xa5ba, -+ 0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, -+ 0xa640, 0x7044, 0x8000, 0x7046, 0x0e7f, 0x007f, 0x127f, 0x007c, -+ 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, -+ 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, -+ 0xa50c -+}; -+#else -+/* -+ * Firmware Version 1.15.37 (15:36 May 03, 1999) -+ */ -+static const u_int16_t isp_2100_risc_code[] = { -+ 0x0078, 0x1029, 0x0000, 0x66e6, 0x0000, 0x2043, 0x4f50, 0x5952, -+ 0x4947, 0x4854, 0x2031, 0x3939, 0x3620, 0x514c, 0x4f47, 0x4943, -+ 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350, -+ 0x3231, 0x3030, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056, -+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3135, 0x2020, 0x2020, -+ 0x2400, 0x20c1, 0x0021, 0x20a1, 0x76e6, 0x2009, 0x0000, 0x20a9, -+ 0x071a, 0x41a4, 0x3400, 0x20c9, 0x7bff, 0x2091, 0x2000, 0x2059, -+ 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x209a, 0x2051, 0x7700, -+ 0x2a70, 0x705b, 0x9600, 0x705f, 0xffff, 0x7057, 0x95f9, 0x7063, -+ 0x0300, 0x1078, 0x127a, 0x20a1, 0x7e00, 0x715c, 0x810d, 0x810d, -+ 0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0007, 0xa112, 0xa00e, -+ 0x21a8, 0x41a4, 0x3400, 0x8211, 0x00c0, 0x1058, 0x715c, 0x3400, -+ 0xa102, 0x0040, 0x1068, 0x0048, 0x1068, 0x20a8, 0xa00e, 0x41a4, -+ 0x1078, 0x1241, 0x1078, 0x1366, 0x1078, 0x14eb, 0x1078, 0x19c0, -+ 0x1078, 0x362b, 0x1078, 0x5cac, 0x1078, 0x12f1, 0x1078, 0x2429, -+ 0x1078, 0x3d6e, 0x1078, 0x3b46, 0x1078, 0x45af, 0x1078, 0x1e55, -+ 0x1078, 0x47ef, 0x1078, 0x428f, 0x1078, 0x1d74, 0x1078, 0x1e34, -+ 0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x109d, 0x7820, 0xa086, -+ 0x0002, 0x00c0, 0x109d, 0x7823, 0x4000, 0x0068, 0x1095, 0x781b, -+ 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, 0x7003, 0x0000, -+ 0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003, -+ 0x00c0, 0x10bd, 0x1078, 0x2d9c, 0x1078, 0x2451, 0x1078, 0x3dbe, -+ 0x1078, 0x3c31, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048, -+ 0x10c1, 0x1078, 0x45c7, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078, -+ 0x10aa, 0x1078, 0x597e, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x1143, -+ 0x10cd, 0x11be, 0x123e, 0x123f, 0x1240, 0x1078, 0x12cd, 0x007c, -+ 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2ec1, 0x2079, 0x0100, -+ 0x7844, 0xa005, 0x00c0, 0x1134, 0x2011, 0x3558, 0x1078, 0x4689, -+ 0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010, -+ 0x73b8, 0x1078, 0x2d59, 0x1078, 0x57c9, 0x2011, 0x0004, 0x1078, -+ 0x6a6d, 0x1078, 0x3ae0, 0x70c7, 0x0000, 0x70c3, 0x0000, 0x1078, -+ 0x1137, 0x72bc, 0x2079, 0x7751, 0x7804, 0xd0ac, 0x0040, 0x1101, -+ 0xc295, 0x72be, 0xa296, 0x0004, 0x0040, 0x1122, 0x2011, 0x0001, -+ 0x1078, 0x6a6d, 0x708b, 0x0000, 0x708f, 0xffff, 0x7003, 0x0002, -+ 0x0f7f, 0x1078, 0x214a, 0x2011, 0x0005, 0x1078, 0x58d8, 0x1078, -+ 0x4d96, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x127f, -+ 0x0078, 0x1136, 0x708b, 0x0000, 0x708f, 0xffff, 0x7003, 0x0002, -+ 0x2011, 0x0005, 0x1078, 0x58d8, 0x1078, 0x4d96, 0x0c7e, 0x2061, -+ 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x0f7f, 0x127f, 0x007c, 0x0c7e, -+ 0x20a9, 0x0082, 0x2009, 0x007e, 0x1078, 0x3834, 0x8108, 0x00f0, -+ 0x113c, 0x0c7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x708c, 0xa086, -+ 0xffff, 0x0040, 0x1151, 0x1078, 0x214a, 0x1078, 0x4d96, 0x0078, -+ 0x11bc, 0x70bc, 0xd09c, 0x0040, 0x1179, 0xd084, 0x0040, 0x1179, -+ 0x0f7e, 0x2079, 0x0100, 0x790c, 0xc1b5, 0x790e, 0x0f7f, 0xd08c, -+ 0x0040, 0x1179, 0x70c0, 0xa086, 0xffff, 0x0040, 0x1175, 0x1078, -+ 0x223f, 0x1078, 0x4d96, 0x2011, 0x0001, 0x2019, 0x0000, 0x1078, -+ 0x2277, 0x1078, 0x4d96, 0x0078, 0x11bc, 0x70c4, 0xa005, 0x00c0, -+ 0x11bc, 0x7088, 0xa005, 0x00c0, 0x11bc, 0x2001, 0x7752, 0x2004, -+ 0xd0ac, 0x0040, 0x119f, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009, -+ 0x0000, 0x017e, 0x1078, 0x384c, 0x00c0, 0x1192, 0x6000, 0xd0ec, -+ 0x00c0, 0x119a, 0x017f, 0x8108, 0x00f0, 0x1189, 0x0c7f, 0x157f, -+ 0x0078, 0x119f, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x11bc, 0x7003, -+ 0x0003, 0x708f, 0xffff, 0x2001, 0x0000, 0x1078, 0x2025, 0x1078, -+ 0x2dd7, 0x2001, 0x7937, 0x2004, 0xa086, 0x0005, 0x00c0, 0x11b4, -+ 0x2011, 0x0000, 0x1078, 0x58d8, 0x2011, 0x0000, 0x1078, 0x58e2, -+ 0x1078, 0x4d96, 0x1078, 0x4e56, 0x127f, 0x007c, 0x017e, 0x0f7e, -+ 0x127e, 0x2091, 0x8000, 0x2079, 0x0100, 0x7940, 0xa18c, 0x0010, -+ 0x7942, 0x7924, 0xd1b4, 0x0040, 0x11cf, 0x7827, 0x0040, 0xd19c, -+ 0x0040, 0x11d4, 0x7827, 0x0008, 0x007e, 0x037e, 0x157e, 0x7900, -+ 0xa18a, 0x0003, 0x0050, 0x11fa, 0x7954, 0xd1ac, 0x00c0, 0x11fa, -+ 0x2009, 0x00f8, 0x1078, 0x35fa, 0x7843, 0x0090, 0x7843, 0x0010, -+ 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x11f2, 0x7824, 0xd0ac, -+ 0x00c0, 0x122e, 0x00f0, 0x11ea, 0x2001, 0x0001, 0x1078, 0x2025, -+ 0x0078, 0x1237, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0008, -+ 0x00e0, 0x1200, 0x2091, 0x6000, 0x00f0, 0x1200, 0x7853, 0x0400, -+ 0x782f, 0x0000, 0x2009, 0x00f8, 0x1078, 0x35fa, 0x20a9, 0x000e, -+ 0x0005, 0x00f0, 0x1210, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843, -+ 0x0010, 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040, -+ 0x1225, 0x7824, 0xd0ac, 0x00c0, 0x122e, 0x8319, 0x00c0, 0x121b, -+ 0x2001, 0x0001, 0x1078, 0x2025, 0x0078, 0x1235, 0x7828, 0xc09d, -+ 0x782a, 0x7827, 0x0008, 0x7827, 0x0040, 0x7853, 0x0400, 0x157f, -+ 0x037f, 0x007f, 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c, -+ 0x007c, 0x2a70, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048, -+ 0x124d, 0x704f, 0xffff, 0x0078, 0x124f, 0x704f, 0x0000, 0x7053, -+ 0xffff, 0x7067, 0x0000, 0x706b, 0x0000, 0x2061, 0x7920, 0x6003, -+ 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f, 0x0200, 0x6013, -+ 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f, 0x07d0, 0x2061, -+ 0x7928, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b, 0x0000, 0x600f, -+ 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b, 0x0001, 0x601f, -+ 0x0000, 0x007c, 0x1078, 0x12a0, 0x2011, 0x0000, 0x81ff, 0x0040, -+ 0x129f, 0xa186, 0x0001, 0x00c0, 0x128f, 0x705f, 0x8fff, 0x7057, -+ 0x8601, 0x7063, 0x0100, 0x705b, 0x8600, 0x0078, 0x129d, 0xa186, -+ 0x0002, 0x00c0, 0x1297, 0x2011, 0x0000, 0x0078, 0x129d, 0xa186, -+ 0x0005, 0x00c0, 0x129d, 0x2011, 0x0001, 0x1078, 0x12c7, 0x007c, -+ 0x2009, 0x0000, 0x2011, 0x0000, 0x1078, 0x12c7, 0x2019, 0xaaaa, -+ 0x2061, 0xffff, 0x2362, 0x2c24, 0x2061, 0x7fff, 0x2c04, 0xa406, -+ 0x0040, 0x12b5, 0xc18d, 0x0078, 0x12c2, 0xc185, 0x2011, 0x0001, -+ 0x1078, 0x12c7, 0x2061, 0xffff, 0x2362, 0x2c04, 0xa306, 0x00c0, -+ 0x12c2, 0xc195, 0x2011, 0x0001, 0x1078, 0x12c7, 0x007c, 0x3800, -+ 0xa084, 0xfffc, 0xa205, 0x20c0, 0x007c, 0x2091, 0x8000, 0x0068, -+ 0x12cf, 0x007e, 0x017e, 0x2079, 0x0000, 0x7818, 0xa084, 0x0000, -+ 0x00c0, 0x12d5, 0x017f, 0x792e, 0x007f, 0x782a, 0x007f, 0x7826, -+ 0x3900, 0x783a, 0x7823, 0x8002, 0x781b, 0x0001, 0x2091, 0x5000, -+ 0x2091, 0x4080, 0x2079, 0x7700, 0x7803, 0x0005, 0x0078, 0x12ee, -+ 0x007c, 0x2071, 0x7700, 0x7158, 0x712e, 0x2021, 0x0001, 0xa190, -+ 0x002d, 0xa298, 0x002d, 0x0048, 0x1307, 0x705c, 0xa302, 0x00c8, -+ 0x1307, 0x220a, 0x2208, 0x2310, 0x8420, 0x0078, 0x12f9, 0x200b, -+ 0x0000, 0x749e, 0x74a2, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, -+ 0x2071, 0x7700, 0x70a0, 0xa0ea, 0x0010, 0x00c8, 0x131a, 0xa06e, -+ 0x0078, 0x1324, 0x8001, 0x70a2, 0x702c, 0x2068, 0x2d04, 0x702e, -+ 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c, 0x0e7e, -+ 0x2071, 0x7700, 0x127e, 0x2091, 0x8000, 0x70a0, 0x8001, 0x00c8, -+ 0x1334, 0xa06e, 0x0078, 0x133d, 0x70a2, 0x702c, 0x2068, 0x2d04, -+ 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c, -+ 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7700, 0x702c, 0x206a, -+ 0x2d00, 0x702e, 0x70a0, 0x8000, 0x70a2, 0x127f, 0x0e7f, 0x007c, -+ 0x8dff, 0x0040, 0x135c, 0x6804, 0x6807, 0x0000, 0x007e, 0x1078, -+ 0x1340, 0x0d7f, 0x0078, 0x1350, 0x007c, 0x0e7e, 0x2071, 0x7700, -+ 0x70a0, 0xa08a, 0x0010, 0xa00d, 0x0e7f, 0x007c, 0x0e7e, 0x2071, -+ 0x7959, 0x7007, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x2071, -+ 0x0000, 0x7010, 0xa085, 0x8004, 0x7012, 0x0e7f, 0x007c, 0x0e7e, -+ 0x2270, 0x700b, 0x0000, 0x2071, 0x7959, 0x7018, 0xa088, 0x7962, -+ 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x00c0, -+ 0x138f, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x13a0, 0x0f7f, 0x0e7f, -+ 0x007c, 0x0e7e, 0x2071, 0x7959, 0x7004, 0xa005, 0x00c0, 0x139e, -+ 0x0f7e, 0x2079, 0x0010, 0x1078, 0x13a0, 0x0f7f, 0x0e7f, 0x007c, -+ 0x7000, 0x0079, 0x13a3, 0x13a7, 0x1411, 0x142e, 0x142e, 0x7018, -+ 0x711c, 0xa106, 0x00c0, 0x13af, 0x7007, 0x0000, 0x007c, 0x0d7e, -+ 0xa180, 0x7962, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007, -+ 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c, -+ 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804, -+ 0x0d7f, 0xd084, 0x0040, 0x13d1, 0x7007, 0x0001, 0x1078, 0x13d6, -+ 0x007c, 0x7007, 0x0002, 0x1078, 0x13ec, 0x007c, 0x017e, 0x027e, -+ 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x13e1, 0x2110, -+ 0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803, -+ 0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e, 0x147e, -+ 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c, -+ 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1400, 0x2110, 0xa006, -+ 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803, -+ 0x0001, 0x3300, 0x7016, 0x157f, 0x147f, 0x137f, 0x027f, 0x017f, -+ 0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0x77e5, 0x20a1, 0x0018, -+ 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000, -+ 0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, 0x700b, -+ 0x77e0, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e, 0x147e, -+ 0x157e, 0x2001, 0x7814, 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026, -+ 0x2001, 0x7815, 0x20ac, 0x53a6, 0x2099, 0x7816, 0x20a1, 0x0018, -+ 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000, -+ 0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b, -+ 0x7811, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0e7e, -+ 0x2071, 0x7959, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803, 0x0002, -+ 0xd1fc, 0x0040, 0x1471, 0xa18c, 0x0700, 0x0040, 0x146e, 0x7008, -+ 0xa080, 0x0002, 0x2003, 0x0200, 0x0078, 0x1471, 0x7004, 0x1079, -+ 0x1475, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x13a0, 0x147d, 0x149f, -+ 0x14b9, 0x14e2, 0x147b, 0x0078, 0x147b, 0x137e, 0x147e, 0x157e, -+ 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x7010, 0x20a8, -+ 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f, 0x137f, 0x700c, 0xa005, -+ 0x0040, 0x14a6, 0x1078, 0x13d6, 0x007c, 0x7008, 0xa080, 0x0002, -+ 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x13a0, 0x007c, 0x700c, -+ 0xa005, 0x0040, 0x14a6, 0x1078, 0x13ec, 0x007c, 0x0d7e, 0x7008, -+ 0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e, 0x783c, -+ 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078, 0x13a0, -+ 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x77e3, 0x2004, 0xa080, -+ 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020, -+ 0x53a5, 0x2001, 0x77e5, 0x2004, 0xd0bc, 0x0040, 0x14d8, 0x2001, -+ 0x77ee, 0x2004, 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5, -+ 0x157f, 0x147f, 0x137f, 0x7007, 0x0000, 0x1078, 0x3e67, 0x1078, -+ 0x13a0, 0x007c, 0x2001, 0x7813, 0x2003, 0x0100, 0x7007, 0x0000, -+ 0x1078, 0x13a0, 0x007c, 0x127e, 0x2091, 0x2100, 0x2079, 0x0030, -+ 0x2071, 0x796a, 0x7003, 0x0000, 0x700f, 0x7970, 0x7013, 0x7970, -+ 0x780f, 0x0070, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007, 0x0079, -+ 0x1501, 0x1509, 0x154f, 0x1509, 0x1509, 0x1509, 0x1534, 0x1518, -+ 0x150d, 0xa085, 0x0001, 0x0078, 0x1569, 0x684c, 0xd0bc, 0x0040, -+ 0x1509, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078, 0x1557, -+ 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0, 0x1509, 0x684c, 0xd0bc, -+ 0x0040, 0x1509, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804, 0x681a, -+ 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1c7e, 0x2004, -+ 0x6832, 0x6858, 0x0078, 0x155f, 0xa18c, 0x00ff, 0xa186, 0x0015, -+ 0x00c0, 0x1509, 0x684c, 0xd0ac, 0x0040, 0x1509, 0x6804, 0x681a, -+ 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1c7e, 0x2004, -+ 0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0078, 0x155f, 0x684c, -+ 0xd0ac, 0x0040, 0x1509, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c, -+ 0x000f, 0xa188, 0x1c7e, 0x210c, 0x6932, 0x2d08, 0x691a, 0x6826, -+ 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980, -+ 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a, -+ 0x2004, 0x82ff, 0x0040, 0x1584, 0xa280, 0x0004, 0x0d7e, 0x206c, -+ 0x684c, 0xd0dc, 0x00c0, 0x1580, 0x1078, 0x14fc, 0x10c0, 0x12cd, -+ 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e, 0x027e, -+ 0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005, 0x00c0, -+ 0x1598, 0x7206, 0x2001, 0x15ac, 0x007e, 0x2260, 0x0078, 0x16c4, -+ 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108, 0xa182, -+ 0x798b, 0x0048, 0x15a5, 0x2009, 0x7970, 0x710e, 0x7000, 0xa005, -+ 0x00c0, 0x15ac, 0x1078, 0x16ad, 0x127f, 0x007c, 0x127e, 0x027e, -+ 0x037e, 0x0c7e, 0x007e, 0x2091, 0x2100, 0x007f, 0x047f, 0x037f, -+ 0x027f, 0x0d7e, 0x0c7e, 0x2460, 0x6110, 0x2168, 0x6a62, 0x6b5e, -+ 0xa005, 0x0040, 0x1600, 0x6808, 0xa005, 0x0040, 0x1666, 0x7000, -+ 0xa005, 0x00c0, 0x15cd, 0x0078, 0x15fa, 0x700c, 0x7110, 0xa106, -+ 0x00c0, 0x166a, 0x7004, 0xa406, 0x00c0, 0x15fa, 0x2001, 0x0005, -+ 0x2004, 0xd08c, 0x0040, 0x15e3, 0x047e, 0x1078, 0x1785, 0x047f, -+ 0x2460, 0x0078, 0x15c3, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, -+ 0x15d6, 0x7804, 0xa084, 0x6000, 0x0040, 0x15f4, 0xa086, 0x6000, -+ 0x0040, 0x15f4, 0x0078, 0x15d6, 0x7803, 0x0004, 0x7003, 0x0000, -+ 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x5d41, 0x0078, 0x166a, -+ 0x6808, 0xa005, 0x0040, 0x1666, 0x7000, 0xa005, 0x00c0, 0x160a, -+ 0x0078, 0x1666, 0x700c, 0x7110, 0xa106, 0x00c0, 0x1613, 0x7004, -+ 0xa406, 0x00c0, 0x1666, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, -+ 0x1620, 0x047e, 0x1078, 0x1785, 0x047f, 0x2460, 0x0078, 0x1600, -+ 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x1613, 0x2001, 0x0005, -+ 0x2004, 0xd08c, 0x00c0, 0x1619, 0x7804, 0xa084, 0x6000, 0x0040, -+ 0x1637, 0xa086, 0x6000, 0x0040, 0x1637, 0x0078, 0x1613, 0x7007, -+ 0x0000, 0xa016, 0x2218, 0x7000, 0xa08e, 0x0001, 0x0040, 0x1658, -+ 0xa08e, 0x0002, 0x00c0, 0x1666, 0x0c7e, 0x0e7e, 0x6818, 0x2060, -+ 0x1078, 0x1c53, 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0, 0x1654, -+ 0x7308, 0x720c, 0x0078, 0x1656, 0x7310, 0x7214, 0x0e7f, 0x0c7f, -+ 0x7820, 0xa318, 0x7824, 0xa211, 0x6810, 0xa300, 0x6812, 0x6814, -+ 0xa201, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x2009, 0x0048, -+ 0x1078, 0x5d41, 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e, 0x0e7e, -+ 0x2071, 0x796a, 0x7000, 0xa086, 0x0000, 0x0040, 0x16aa, 0x7004, -+ 0xac06, 0x00c0, 0x169b, 0x2079, 0x0030, 0x7804, 0xd0fc, 0x00c0, -+ 0x1697, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x167d, 0x7803, -+ 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1689, 0x7803, 0x0002, 0x7803, -+ 0x0009, 0x7003, 0x0003, 0x7007, 0x0000, 0x0078, 0x169b, 0x1078, -+ 0x1785, 0x0078, 0x1672, 0x157e, 0x20a9, 0x0009, 0x2009, 0x7970, -+ 0x2104, 0xac06, 0x00c0, 0x16a5, 0x200a, 0xa188, 0x0003, 0x00f0, -+ 0x16a0, 0x157f, 0x0e7f, 0x0f7f, 0x007c, 0x700c, 0x7110, 0xa106, -+ 0x00c0, 0x16b5, 0x7003, 0x0000, 0x007c, 0x2104, 0x7006, 0x2060, -+ 0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0x798b, 0x0048, -+ 0x16c3, 0x2009, 0x7970, 0x7112, 0x8cff, 0x00c0, 0x16cb, 0x1078, -+ 0x1950, 0x0078, 0x16f2, 0x6010, 0x2068, 0x2d58, 0x6828, 0xa406, -+ 0x00c0, 0x16d6, 0x682c, 0xa306, 0x0040, 0x16da, 0x1078, 0x1c9e, -+ 0x00c0, 0x16c7, 0x684c, 0xd0f4, 0x00c0, 0x16c7, 0x6824, 0x2050, -+ 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x2009, -+ 0x0011, 0x1078, 0x16f3, 0x0040, 0x16f1, 0x2009, 0x0001, 0x1078, -+ 0x16f3, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x1780, 0xa03e, 0x2730, -+ 0x6850, 0xd0fc, 0x00c0, 0x1712, 0x0d7e, 0x2804, 0xac68, 0x2900, -+ 0x0079, 0x1702, 0x1762, 0x1722, 0x1722, 0x1762, 0x1762, 0x175a, -+ 0x1762, 0x1722, 0x1762, 0x1728, 0x1728, 0x1762, 0x1762, 0x1762, -+ 0x1751, 0x1728, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, -+ 0x0d7e, 0xd99c, 0x0040, 0x1765, 0x2804, 0xac68, 0x6f08, 0x6e0c, -+ 0x0078, 0x1765, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078, 0x1765, -+ 0x7b0c, 0xd3bc, 0x0040, 0x1749, 0x7004, 0x0e7e, 0x2070, 0x701c, -+ 0x0e7f, 0xa086, 0x0008, 0x00c0, 0x1749, 0x7b08, 0xa39c, 0x0fff, -+ 0x2d20, 0x0d7f, 0x0d7e, 0x6a14, 0x82ff, 0x00c0, 0x1744, 0x6810, -+ 0xa302, 0x0048, 0x1744, 0x6b10, 0x2011, 0x0000, 0x2468, 0x0078, -+ 0x174b, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0078, -+ 0x1765, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, -+ 0x00c0, 0x1762, 0x0d7f, 0x1078, 0x1c3a, 0x00c0, 0x16f3, 0xa00e, -+ 0x0078, 0x1780, 0x0d7f, 0x1078, 0x12cd, 0x7b22, 0x7a26, 0x7d32, -+ 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, 0x7002, 0x0d7f, -+ 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x2300, 0x6b10, -+ 0xa302, 0x6812, 0x2200, 0x6a14, 0xa203, 0x6816, 0x1078, 0x1c3a, -+ 0x007c, 0x1078, 0x12cd, 0x1078, 0x12cd, 0x127e, 0x2091, 0x2100, -+ 0x007e, 0x017e, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, -+ 0xa184, 0x0700, 0x00c0, 0x1783, 0xa184, 0x0003, 0xa086, 0x0003, -+ 0x0040, 0x1783, 0x7000, 0x0079, 0x179d, 0x17a5, 0x17a7, 0x187f, -+ 0x18e7, 0x18fe, 0x17a5, 0x17a5, 0x17a5, 0x1078, 0x12cd, 0x8001, -+ 0x7002, 0xa184, 0x0880, 0x00c0, 0x17bc, 0x8aff, 0x0040, 0x181f, -+ 0x2009, 0x0001, 0x1078, 0x16f3, 0x0040, 0x1910, 0x2009, 0x0001, -+ 0x1078, 0x16f3, 0x0078, 0x1910, 0x7803, 0x0004, 0x7003, 0x0000, -+ 0xd1bc, 0x00c0, 0x1807, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x7820, -+ 0x686e, 0xa31a, 0x7824, 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x7820, -+ 0x6910, 0xa100, 0x6812, 0x7824, 0x6914, 0xa101, 0x6816, 0x037f, -+ 0x027f, 0x7830, 0x681e, 0x7834, 0x6822, 0x1078, 0x1c53, 0x2a00, -+ 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x6850, -+ 0xc0fd, 0x6852, 0x6808, 0x8001, 0x680a, 0x00c0, 0x17f9, 0x684c, -+ 0xd0e4, 0x0040, 0x17f9, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, -+ 0x5d41, 0x7808, 0xd0ec, 0x00c0, 0x1803, 0x7803, 0x0009, 0x7003, -+ 0x0004, 0x0078, 0x1910, 0x1078, 0x16ad, 0x0078, 0x1910, 0x057e, -+ 0x7d0c, 0xd5bc, 0x00c0, 0x180e, 0x1078, 0x7692, 0x057f, 0x1078, -+ 0x1914, 0x682b, 0xffff, 0x682f, 0xffff, 0x697c, 0x6912, 0x6980, -+ 0x6916, 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x1910, 0x684c, -+ 0xc0f5, 0x684e, 0x7814, 0xa005, 0x00c0, 0x1837, 0x7003, 0x0000, -+ 0x6808, 0x8001, 0x680a, 0x00c0, 0x1833, 0x7004, 0x2060, 0x2009, -+ 0x0048, 0x1078, 0x5d41, 0x1078, 0x16ad, 0x0078, 0x1910, 0x7814, -+ 0x6910, 0xa102, 0x6812, 0x6914, 0xa183, 0x0000, 0x6816, 0x7814, -+ 0x7908, 0xa18c, 0x0fff, 0xa188, 0x0007, 0x8114, 0x8214, 0x8214, -+ 0xa10a, 0x8104, 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b, 0x810b, -+ 0x1078, 0x197b, 0x7803, 0x0004, 0x780f, 0xffff, 0x7803, 0x0001, -+ 0x7804, 0xd0fc, 0x0040, 0x1858, 0x7803, 0x0002, 0x7803, 0x0004, -+ 0x780f, 0x0070, 0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, -+ 0x1078, 0x5d41, 0x1078, 0x199e, 0x0040, 0x1833, 0x7908, 0xd1ec, -+ 0x00c0, 0x1876, 0x2009, 0x0009, 0x0078, 0x1878, 0x2009, 0x0019, -+ 0x7902, 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x1910, 0x8001, -+ 0x7002, 0xd194, 0x0040, 0x1891, 0x7804, 0xd0fc, 0x00c0, 0x178d, -+ 0x8aff, 0x0040, 0x1910, 0x2009, 0x0001, 0x1078, 0x16f3, 0x0078, -+ 0x1910, 0xa184, 0x0880, 0x00c0, 0x189e, 0x8aff, 0x0040, 0x1910, -+ 0x2009, 0x0001, 0x1078, 0x16f3, 0x0078, 0x1910, 0x7803, 0x0004, -+ 0x7003, 0x0000, 0xd1bc, 0x00c0, 0x18d2, 0x027e, 0x037e, 0x6b28, -+ 0x6a2c, 0x1078, 0x1c53, 0x0d7e, 0x0f7e, 0x2d78, 0x2804, 0xac68, -+ 0x6034, 0xd09c, 0x00c0, 0x18c2, 0x6808, 0x2008, 0xa31a, 0x680c, -+ 0xa213, 0x7810, 0xa100, 0x7812, 0x690c, 0x7814, 0xa101, 0x7816, -+ 0x0078, 0x18ce, 0x6810, 0x2008, 0xa31a, 0x6814, 0xa213, 0x7810, -+ 0xa100, 0x7812, 0x6914, 0x7814, 0xa101, 0x7816, 0x0f7f, 0x0d7f, -+ 0x0078, 0x17c7, 0x057e, 0x7d0c, 0x1078, 0x7692, 0x057f, 0x1078, -+ 0x1914, 0x682b, 0xffff, 0x682f, 0xffff, 0x697c, 0x6912, 0x6980, -+ 0x6916, 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x1910, 0x7803, -+ 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, 0x0040, 0x18fa, 0x6808, -+ 0x8001, 0x680a, 0x00c0, 0x18fa, 0x7004, 0x2060, 0x2009, 0x0048, -+ 0x1078, 0x5d41, 0x1078, 0x16ad, 0x0078, 0x1910, 0x7803, 0x0004, -+ 0x7003, 0x0000, 0x7004, 0x2060, 0x6010, 0xa005, 0x0040, 0x18fa, -+ 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28, 0x6b2c, 0x1078, 0x16c4, -+ 0x017f, 0x007f, 0x127f, 0x007c, 0x1078, 0x1925, 0x20e1, 0x9028, -+ 0x700f, 0x7970, 0x7013, 0x7970, 0x2001, 0x015d, 0x200c, 0x810a, -+ 0x2102, 0x2001, 0x0138, 0x2202, 0x007c, 0x2001, 0x0138, 0x2014, -+ 0x2003, 0x0000, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc, -+ 0x00c0, 0x1942, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0, -+ 0x1942, 0x2001, 0x0111, 0x201c, 0x83ff, 0x00c0, 0x1942, 0x8421, -+ 0x00c0, 0x192c, 0x007c, 0x2011, 0x0201, 0x2009, 0x003c, 0x2204, -+ 0xa005, 0x00c0, 0x194f, 0x8109, 0x00c0, 0x1947, 0x007c, 0x007c, -+ 0x1078, 0x1943, 0x0040, 0x1978, 0x7908, 0xd1ec, 0x00c0, 0x1968, -+ 0x1078, 0x199e, 0x0040, 0x1968, 0x7803, 0x0009, 0x7904, 0xd1fc, -+ 0x0040, 0x195e, 0x7803, 0x0006, 0x1078, 0x1943, 0x0040, 0x1978, -+ 0x780c, 0xd0a4, 0x00c0, 0x1978, 0x7007, 0x0000, 0x1078, 0x199e, -+ 0x0040, 0x197a, 0x7803, 0x0019, 0x7003, 0x0003, 0x0078, 0x197a, -+ 0x1078, 0x1914, 0x007c, 0x3c00, 0x007e, 0x0e7e, 0x2071, 0x0200, -+ 0x7808, 0xa084, 0xf000, 0xa10d, 0x1078, 0x1925, 0x20e1, 0x7000, -+ 0x7324, 0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, -+ 0x712e, 0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, -+ 0x0138, 0x2202, 0x0e7f, 0x007f, 0x20e0, 0x007c, 0x3c00, 0x007e, -+ 0x7908, 0xa18c, 0x0fff, 0xa182, 0x0009, 0x0048, 0x19ab, 0xa085, -+ 0x0001, 0x0078, 0x19bd, 0x2001, 0x020a, 0x81ff, 0x0040, 0x19b6, -+ 0x20e1, 0x6000, 0x200c, 0x200c, 0x200c, 0x200c, 0x20e1, 0x7000, -+ 0x200c, 0x200c, 0x7003, 0x0000, 0xa006, 0x007f, 0x20e0, 0x007c, -+ 0x0e7e, 0x2071, 0x798b, 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e, -+ 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1a42, 0x6934, -+ 0xa184, 0x0007, 0x0079, 0x19d4, 0x19dc, 0x1a2d, 0x19dc, 0x19dc, -+ 0x19dc, 0x1a12, 0x19ef, 0x19de, 0x1078, 0x12cd, 0x684c, 0xd0b4, -+ 0x0040, 0x1b46, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, -+ 0x687c, 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x1a35, 0x6834, -+ 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x19dc, 0x684c, 0xd0b4, -+ 0x0040, 0x1b46, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, -+ 0x687c, 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d, -+ 0x2004, 0xa084, 0x000f, 0xa080, 0x1c7e, 0x2004, 0x6832, 0x6958, -+ 0x0078, 0x1a3e, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, 0x1a42, -+ 0x684c, 0xd0b4, 0x0040, 0x1b46, 0x6804, 0x681a, 0xa080, 0x000d, -+ 0x2004, 0xa084, 0x000f, 0xa080, 0x1c7e, 0x2004, 0x6832, 0x6958, -+ 0xa006, 0x682e, 0x682a, 0x0078, 0x1a3e, 0x684c, 0xd0b4, 0x0040, -+ 0x1781, 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834, -+ 0xa084, 0x000f, 0xa080, 0x1c7e, 0x2004, 0x6832, 0x6926, 0x684c, -+ 0xc0dd, 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020, 0x7804, -+ 0xd0fc, 0x10c0, 0x1b4a, 0x0e7e, 0x0d7e, 0x2071, 0x798b, 0x7000, -+ 0xa005, 0x00c0, 0x1ac0, 0x0c7e, 0x7206, 0xa280, 0x0004, 0x205c, -+ 0x7004, 0x2068, 0x7803, 0x0004, 0x6818, 0x0d7e, 0x2068, 0x686c, -+ 0x7812, 0x6890, 0x0f7e, 0x20e1, 0x9040, 0x2079, 0x0200, 0x781a, -+ 0x2079, 0x0100, 0x8004, 0x78d6, 0x0f7f, 0x0d7f, 0x2b68, 0x6824, -+ 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, -+ 0x6908, 0xa184, 0x0007, 0x0040, 0x1a82, 0x017e, 0x2009, 0x0008, -+ 0xa102, 0x017f, 0xa108, 0x791a, 0x7116, 0x701e, 0x680c, 0xa081, -+ 0x0000, 0x781e, 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, -+ 0x6814, 0xa106, 0x00c0, 0x1a99, 0x6928, 0x6810, 0xa106, 0x0040, -+ 0x1aa6, 0x037e, 0x047e, 0x6b14, 0x6c10, 0x1078, 0x1c9e, 0x047f, -+ 0x037f, 0x0040, 0x1aa6, 0x0c7f, 0x0078, 0x1ac0, 0x8aff, 0x00c0, -+ 0x1aae, 0x0c7f, 0xa085, 0x0001, 0x0078, 0x1ac0, 0x127e, 0x2091, -+ 0x8000, 0x2079, 0x0020, 0x2009, 0x0001, 0x1078, 0x1ac4, 0x0040, -+ 0x1abd, 0x2009, 0x0001, 0x1078, 0x1ac4, 0x127f, 0x0c7f, 0xa006, -+ 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x077e, 0x067e, 0x057e, 0x047e, -+ 0x037e, 0x027e, 0x8aff, 0x0040, 0x1b3f, 0x700c, 0x7214, 0xa202, -+ 0x7010, 0x7218, 0xa203, 0x0048, 0x1b3e, 0xa03e, 0x2730, 0x6850, -+ 0xd0fc, 0x00c0, 0x1af1, 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, -+ 0x1ae1, 0x1b20, 0x1b01, 0x1b01, 0x1b20, 0x1b20, 0x1b18, 0x1b20, -+ 0x1b01, 0x1b20, 0x1b07, 0x1b07, 0x1b20, 0x1b20, 0x1b20, 0x1b0f, -+ 0x1b07, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0xd99c, -+ 0x0040, 0x1b24, 0x0d7e, 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, -+ 0x1b23, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078, 0x1b23, 0x6b10, -+ 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0078, 0x1b23, 0x0d7f, -+ 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1b20, -+ 0x0d7f, 0x1078, 0x1c3a, 0x00c0, 0x1aca, 0xa00e, 0x0078, 0x1b3f, -+ 0x0d7f, 0x1078, 0x12cd, 0x0d7f, 0x7b22, 0x7a26, 0x7d32, 0x7c36, -+ 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, 0x7002, 0x6828, 0xa300, -+ 0x682a, 0x682c, 0xa201, 0x682e, 0x700c, 0xa300, 0x700e, 0x7010, -+ 0xa201, 0x7012, 0x1078, 0x1c3a, 0x0078, 0x1b3f, 0xa006, 0x027f, -+ 0x037f, 0x047f, 0x057f, 0x067f, 0x077f, 0x007c, 0x1078, 0x12cd, -+ 0x1078, 0x12cd, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e, -+ 0x0e7e, 0x0d7e, 0x0c7e, 0x2079, 0x0020, 0x2071, 0x798b, 0x2b68, -+ 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, -+ 0x1b48, 0x7000, 0x0079, 0x1b64, 0x1c0b, 0x1b68, 0x1bd8, 0x1c09, -+ 0x8001, 0x7002, 0xd19c, 0x00c0, 0x1b7c, 0x8aff, 0x0040, 0x1b9b, -+ 0x2009, 0x0001, 0x1078, 0x1ac4, 0x0040, 0x1c0b, 0x2009, 0x0001, -+ 0x1078, 0x1ac4, 0x0078, 0x1c0b, 0x7803, 0x0004, 0xd194, 0x0040, -+ 0x1b8c, 0x6850, 0xc0fc, 0x6852, 0x8aff, 0x00c0, 0x1b91, 0x684c, -+ 0xc0f5, 0x684e, 0x0078, 0x1b91, 0x1078, 0x1c53, 0x6850, 0xc0fd, -+ 0x6852, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, -+ 0x0000, 0x0078, 0x1c0b, 0x711c, 0x81ff, 0x0040, 0x1bb1, 0x7918, -+ 0x7922, 0x7827, 0x0000, 0x7803, 0x0001, 0x7000, 0x8000, 0x7002, -+ 0x700c, 0xa100, 0x700e, 0x7010, 0xa081, 0x0000, 0x7012, 0x0078, -+ 0x1c0b, 0x0f7e, 0x027e, 0x781c, 0x007e, 0x7818, 0x007e, 0x2079, -+ 0x0100, 0x7a14, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x7820, -+ 0xd0bc, 0x00c0, 0x1bbf, 0x79c8, 0x007f, 0xa102, 0x78ca, 0x79c4, -+ 0x007f, 0xa102, 0x78c6, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, -+ 0x027f, 0x0f7f, 0x7803, 0x0008, 0x7003, 0x0000, 0x0078, 0x1c0b, -+ 0x8001, 0x7002, 0xd194, 0x0040, 0x1bed, 0x7804, 0xd0fc, 0x00c0, -+ 0x1b5a, 0xd19c, 0x00c0, 0x1c07, 0x8aff, 0x0040, 0x1c0b, 0x2009, -+ 0x0001, 0x1078, 0x1ac4, 0x0078, 0x1c0b, 0x027e, 0x037e, 0x6b28, -+ 0x6a2c, 0x1078, 0x1c53, 0x0d7e, 0x2804, 0xac68, 0x6034, 0xd09c, -+ 0x00c0, 0x1c00, 0x6808, 0xa31a, 0x680c, 0xa213, 0x0078, 0x1c04, -+ 0x6810, 0xa31a, 0x6814, 0xa213, 0x0d7f, 0x0078, 0x1b8c, 0x0078, -+ 0x1b8c, 0x1078, 0x12cd, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x017f, -+ 0x007f, 0x127f, 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x798b, 0x7000, -+ 0xa086, 0x0000, 0x0040, 0x1c37, 0x2079, 0x0020, 0x20e1, 0x9040, -+ 0x7804, 0xd0fc, 0x0040, 0x1c1e, 0x1078, 0x1b4a, 0x7000, 0xa086, -+ 0x0000, 0x00c0, 0x1c1e, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, -+ 0x1c2d, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f, -+ 0x0f7f, 0x007c, 0x8840, 0x2804, 0xa005, 0x00c0, 0x1c4e, 0x6004, -+ 0xa005, 0x0040, 0x1c50, 0x681a, 0x2060, 0x6034, 0xa084, 0x000f, -+ 0xa080, 0x1c7e, 0x2044, 0x88ff, 0x1040, 0x12cd, 0x8a51, 0x007c, -+ 0x2051, 0x0000, 0x007c, 0x8a50, 0x8841, 0x2804, 0xa005, 0x00c0, -+ 0x1c6d, 0x2c00, 0xad06, 0x0040, 0x1c62, 0x6000, 0xa005, 0x00c0, -+ 0x1c62, 0x2d00, 0x2060, 0x681a, 0x6034, 0xa084, 0x000f, 0xa080, -+ 0x1c8e, 0x2044, 0x88ff, 0x1040, 0x12cd, 0x007c, 0x0000, 0x0011, -+ 0x0015, 0x0019, 0x001d, 0x0021, 0x0025, 0x0029, 0x0000, 0x000f, -+ 0x0015, 0x001b, 0x0021, 0x0027, 0x0000, 0x0000, 0x0000, 0x1c73, -+ 0x1c6f, 0x0000, 0x0000, 0x1c7d, 0x0000, 0x1c73, 0x0000, 0x1c7a, -+ 0x1c77, 0x0000, 0x0000, 0x0000, 0x1c7d, 0x1c7a, 0x0000, 0x1c75, -+ 0x1c75, 0x0000, 0x0000, 0x1c7d, 0x0000, 0x1c75, 0x0000, 0x1c7b, -+ 0x1c7b, 0x0000, 0x0000, 0x0000, 0x1c7d, 0x1c7b, 0x0a7e, 0x097e, -+ 0x087e, 0x6858, 0xa055, 0x0040, 0x1d3f, 0x2d60, 0x6034, 0xa0cc, -+ 0x000f, 0xa9c0, 0x1c7e, 0xa986, 0x0007, 0x0040, 0x1cb7, 0xa986, -+ 0x000e, 0x0040, 0x1cb7, 0xa986, 0x000f, 0x00c0, 0x1cbb, 0x605c, -+ 0xa422, 0x6060, 0xa31a, 0x2804, 0xa045, 0x00c0, 0x1cc9, 0x0050, -+ 0x1cc3, 0x0078, 0x1d3f, 0x6004, 0xa065, 0x0040, 0x1d3f, 0x0078, -+ 0x1ca6, 0x2804, 0xa005, 0x0040, 0x1ce7, 0xac68, 0xd99c, 0x00c0, -+ 0x1cd7, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0078, 0x1cdb, 0x6810, -+ 0xa422, 0x6814, 0xa31b, 0x0048, 0x1d06, 0x2300, 0xa405, 0x0040, -+ 0x1ced, 0x8a51, 0x0040, 0x1d3f, 0x8840, 0x0078, 0x1cc9, 0x6004, -+ 0xa065, 0x0040, 0x1d3f, 0x0078, 0x1ca6, 0x8a51, 0x0040, 0x1d3f, -+ 0x8840, 0x2804, 0xa005, 0x00c0, 0x1d00, 0x6004, 0xa065, 0x0040, -+ 0x1d3f, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x1c7e, 0x2804, 0x2040, -+ 0x2b68, 0x6850, 0xc0fc, 0x6852, 0x0078, 0x1d33, 0x8422, 0x8420, -+ 0x831a, 0xa399, 0x0000, 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, -+ 0xd99c, 0x00c0, 0x1d21, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, -+ 0xa11b, 0x1048, 0x12cd, 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, -+ 0x1d2d, 0x6910, 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, -+ 0x12cd, 0x6800, 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, -+ 0x6850, 0xc0fd, 0x6852, 0x2c00, 0x681a, 0x2800, 0x6832, 0x2a00, -+ 0x6826, 0x007f, 0x007f, 0x007f, 0xa006, 0x0078, 0x1d44, 0x087f, -+ 0x097f, 0x0a7f, 0xa085, 0x0001, 0x007c, 0x2001, 0x0005, 0x2004, -+ 0xa084, 0x0007, 0x0079, 0x1d4c, 0x1d54, 0x1d55, 0x1d58, 0x1d5b, -+ 0x1d60, 0x1d63, 0x1d68, 0x1d6d, 0x007c, 0x1078, 0x1b4a, 0x007c, -+ 0x1078, 0x1785, 0x007c, 0x1078, 0x1785, 0x1078, 0x1b4a, 0x007c, -+ 0x1078, 0x1456, 0x007c, 0x1078, 0x1b4a, 0x1078, 0x1456, 0x007c, -+ 0x1078, 0x1785, 0x1078, 0x1456, 0x007c, 0x1078, 0x1785, 0x1078, -+ 0x1b4a, 0x1078, 0x1456, 0x007c, 0x127e, 0x2091, 0x2300, 0x2079, -+ 0x0200, 0x2071, 0x7c80, 0x2069, 0x7700, 0x2009, 0x0004, 0x7912, -+ 0x7817, 0x0004, 0x1078, 0x2052, 0x781b, 0x0002, 0x20e1, 0x8700, -+ 0x127f, 0x007c, 0x127e, 0x2091, 0x2300, 0x781c, 0xa084, 0x0007, -+ 0x0079, 0x1d92, 0x1db6, 0x1d9a, 0x1d9e, 0x1da2, 0x1da8, 0x1dac, -+ 0x1db0, 0x1db4, 0x1078, 0x4298, 0x0078, 0x1db6, 0x1078, 0x42c7, -+ 0x0078, 0x1db6, 0x1078, 0x4298, 0x1078, 0x42c7, 0x0078, 0x1db6, -+ 0x1078, 0x1db8, 0x0078, 0x1db6, 0x1078, 0x1db8, 0x0078, 0x1db6, -+ 0x1078, 0x1db8, 0x0078, 0x1db6, 0x1078, 0x1db8, 0x127f, 0x007c, -+ 0x007e, 0x017e, 0x027e, 0x7930, 0xa184, 0x0003, 0x0040, 0x1dc2, -+ 0x1078, 0x12cd, 0xa184, 0x0030, 0x0040, 0x1dd3, 0x6a00, 0xa286, -+ 0x0003, 0x00c0, 0x1dcd, 0x1078, 0x12cd, 0x1078, 0x3591, 0x20e1, -+ 0x9010, 0x0078, 0x1ddf, 0xa184, 0x00c0, 0x0040, 0x1dd9, 0x1078, -+ 0x12cd, 0xa184, 0x0300, 0x0040, 0x1ddf, 0x20e1, 0x9020, 0x7932, -+ 0x027f, 0x017f, 0x007f, 0x007c, 0x017e, 0x0e7e, 0x0f7e, 0x2071, -+ 0x7700, 0x7128, 0x2001, 0x7923, 0x2102, 0x2001, 0x792b, 0x2102, -+ 0xa182, 0x0211, 0x00c8, 0x1df8, 0x2009, 0x0008, 0x0078, 0x1e22, -+ 0xa182, 0x0259, 0x00c8, 0x1e00, 0x2009, 0x0007, 0x0078, 0x1e22, -+ 0xa182, 0x02c1, 0x00c8, 0x1e08, 0x2009, 0x0006, 0x0078, 0x1e22, -+ 0xa182, 0x0349, 0x00c8, 0x1e10, 0x2009, 0x0005, 0x0078, 0x1e22, -+ 0xa182, 0x0421, 0x00c8, 0x1e18, 0x2009, 0x0004, 0x0078, 0x1e22, -+ 0xa182, 0x0581, 0x00c8, 0x1e20, 0x2009, 0x0003, 0x0078, 0x1e22, -+ 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, 0xa182, 0x0005, 0x00c8, -+ 0x1e2c, 0x7916, 0x0078, 0x1e2e, 0x7817, 0x0004, 0x1078, 0x2052, -+ 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x127e, 0x2091, 0x2200, 0x2061, -+ 0x0100, 0x2071, 0x7700, 0x6024, 0x6026, 0x6033, 0x00ef, 0x60e7, -+ 0x0000, 0x60eb, 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, -+ 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x0caf, 0x600f, -+ 0x00ff, 0x602b, 0x002f, 0x127f, 0x007c, 0x2001, 0x772d, 0x2003, -+ 0x0000, 0x2001, 0x772c, 0x2003, 0x0001, 0x007c, 0x127e, 0x2091, -+ 0x2200, 0x007e, 0x017e, 0x027e, 0x6124, 0xa184, 0x002c, 0x00c0, -+ 0x1e6d, 0xa184, 0x0007, 0x0079, 0x1e73, 0xa195, 0x0004, 0xa284, -+ 0x0007, 0x0079, 0x1e73, 0x1e9f, 0x1e7b, 0x1e7f, 0x1e83, 0x1e89, -+ 0x1e8d, 0x1e93, 0x1e99, 0x1078, 0x4802, 0x0078, 0x1e9f, 0x1078, -+ 0x48f1, 0x0078, 0x1e9f, 0x1078, 0x48f1, 0x1078, 0x4802, 0x0078, -+ 0x1e9f, 0x1078, 0x1ea4, 0x0078, 0x1e9f, 0x1078, 0x4802, 0x1078, -+ 0x1ea4, 0x0078, 0x1e9f, 0x1078, 0x48f1, 0x1078, 0x1ea4, 0x0078, -+ 0x1e9f, 0x1078, 0x48f1, 0x1078, 0x4802, 0x1078, 0x1ea4, 0x027f, -+ 0x017f, 0x007f, 0x127f, 0x007c, 0xd1ac, 0x0040, 0x1f58, 0x017e, -+ 0x047e, 0x0c7e, 0x644c, 0x74ba, 0xa48c, 0xff00, 0xa196, 0xff00, -+ 0x0040, 0x1ed3, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116, 0x0040, -+ 0x1ed3, 0x7130, 0xd18c, 0x00c0, 0x1ed3, 0x2011, 0x7752, 0x2214, -+ 0xd2ec, 0x0040, 0x1ec7, 0xc18d, 0x7132, 0x0078, 0x1ed3, 0x6240, -+ 0xa294, 0x0010, 0x0040, 0x1f15, 0x6248, 0xa294, 0xff00, 0xa296, -+ 0xff00, 0x00c0, 0x1f15, 0x037e, 0x73b8, 0x2011, 0x8013, 0x1078, -+ 0x2d59, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011, 0x7752, 0x220c, -+ 0xd1a4, 0x0040, 0x1efd, 0x017e, 0x2009, 0x0001, 0x2011, 0x0100, -+ 0x1078, 0x47d0, 0x2019, 0x000e, 0x1078, 0x75d9, 0xa484, 0x00ff, -+ 0xa080, 0x2329, 0x200c, 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006, -+ 0x2009, 0x000e, 0x1078, 0x7641, 0x017f, 0xd1ac, 0x00c0, 0x1f06, -+ 0x2019, 0x0004, 0x1078, 0x2293, 0x0078, 0x1f15, 0x157e, 0x20a9, -+ 0x007f, 0x2009, 0x0000, 0x1078, 0x384c, 0x00c0, 0x1f11, 0x1078, -+ 0x3637, 0x8108, 0x00f0, 0x1f0b, 0x157f, 0x0c7f, 0x047f, 0x6043, -+ 0x0000, 0x2009, 0x00f7, 0x1078, 0x35fa, 0x0f7e, 0x2079, 0x7949, -+ 0x783c, 0xa086, 0x0000, 0x0040, 0x1f2d, 0x6027, 0x0004, 0x783f, -+ 0x0000, 0x2079, 0x0140, 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003, -+ 0x1078, 0x58d8, 0x2011, 0x0002, 0x1078, 0x58e2, 0x1078, 0x57ee, -+ 0x1078, 0x4706, 0x037e, 0x2019, 0x0000, 0x1078, 0x5880, 0x037f, -+ 0x60e3, 0x0000, 0x017f, 0x2001, 0x7700, 0x2014, 0xa296, 0x0004, -+ 0x00c0, 0x1f50, 0xd19c, 0x00c0, 0x1f50, 0x6228, 0xc29d, 0x622a, -+ 0x2003, 0x0001, 0x2001, 0x7720, 0x2003, 0x0000, 0x6027, 0x0020, -+ 0xd194, 0x0040, 0x1ff9, 0x0f7e, 0x2079, 0x7949, 0x783c, 0xa086, -+ 0x0001, 0x00c0, 0x1f7c, 0x017e, 0x6027, 0x0004, 0x783f, 0x0000, -+ 0x2079, 0x0140, 0x7803, 0x1000, 0x7803, 0x0000, 0x2079, 0x7936, -+ 0x7807, 0x0000, 0x7833, 0x0000, 0x1078, 0x4d96, 0x1078, 0x4e56, -+ 0x017f, 0x0f7f, 0x0078, 0x1ff9, 0x0f7f, 0x017e, 0x6220, 0xd2b4, -+ 0x0040, 0x1fb1, 0x1078, 0x4706, 0x1078, 0x569c, 0x6027, 0x0004, -+ 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x1f94, -+ 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0x7936, -+ 0x6028, 0xa09a, 0x0002, 0x00c8, 0x1fa4, 0x8000, 0x602a, 0x0c7f, -+ 0x1078, 0x568e, 0x0078, 0x1ff8, 0x2019, 0x793f, 0x2304, 0xa065, -+ 0x0040, 0x1fae, 0x2009, 0x0027, 0x1078, 0x5d41, 0x0c7f, 0x0078, -+ 0x1ff8, 0xd2bc, 0x0040, 0x1ff8, 0x1078, 0x4714, 0x6017, 0x0010, -+ 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, -+ 0x0040, 0x1fc6, 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, -+ 0x2061, 0x7936, 0x6044, 0xa09a, 0x0002, 0x00c8, 0x1fe7, 0x8000, -+ 0x6046, 0x603c, 0x0c7f, 0xa005, 0x0040, 0x1ff8, 0x1078, 0x470b, -+ 0xa080, 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0, 0x1fe3, 0x6017, -+ 0x0012, 0x0078, 0x1ff8, 0x6017, 0x0016, 0x0078, 0x1ff8, 0x037e, -+ 0x2019, 0x0001, 0x1078, 0x5880, 0x037f, 0x2019, 0x7945, 0x2304, -+ 0xa065, 0x0040, 0x1ff7, 0x2009, 0x004f, 0x1078, 0x5d41, 0x0c7f, -+ 0x017f, 0xd19c, 0x0040, 0x2021, 0x017e, 0x6028, 0xc09c, 0x602a, -+ 0x2011, 0x0003, 0x1078, 0x58d8, 0x2011, 0x0002, 0x1078, 0x58e2, -+ 0x1078, 0x57ee, 0x1078, 0x4706, 0x037e, 0x2019, 0x0000, 0x1078, -+ 0x5880, 0x037f, 0x60e3, 0x0000, 0x1078, 0x76b0, 0x1078, 0x76ce, -+ 0x2001, 0x7700, 0x2003, 0x0004, 0x6027, 0x0008, 0x1078, 0x11be, -+ 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c, 0x007e, 0x017e, 0x027e, -+ 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7700, 0x71b0, -+ 0x70b2, 0xa116, 0x0040, 0x204b, 0x81ff, 0x0040, 0x203d, 0x2011, -+ 0x8011, 0x1078, 0x2d59, 0x0078, 0x204b, 0x2011, 0x8012, 0x1078, -+ 0x2d59, 0x037e, 0x0c7e, 0x2061, 0x0100, 0x2019, 0x0028, 0x1078, -+ 0x2293, 0x0c7f, 0x037f, 0x127f, 0x0f7f, 0x0e7f, 0x027f, 0x017f, -+ 0x007f, 0x007c, 0x0c7e, 0x0f7e, 0x007e, 0x027e, 0x2061, 0x0100, -+ 0xa190, 0x206d, 0x2204, 0x60f2, 0xa192, 0x0005, 0x00c8, 0x2064, -+ 0xa190, 0x2076, 0x0078, 0x2066, 0x2011, 0x207a, 0x2204, 0x60ee, -+ 0x027f, 0x007f, 0x0f7f, 0x0c7f, 0x007c, 0x0840, 0x0840, 0x0840, -+ 0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, -+ 0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0x2028, -+ 0x2130, 0xa094, 0xff00, 0x00c0, 0x2088, 0x81ff, 0x0040, 0x208c, -+ 0x1078, 0x444b, 0x0078, 0x2093, 0xa080, 0x2329, 0x200c, 0xa18c, -+ 0xff00, 0x810f, 0xa006, 0x007c, 0xa080, 0x2329, 0x200c, 0xa18c, -+ 0x00ff, 0x007c, 0x20ba, 0x20be, 0x20c2, 0x20c8, 0x20ce, 0x20d4, -+ 0x20da, 0x20e2, 0x20ea, 0x20f0, 0x20f6, 0x20fe, 0x2106, 0x210e, -+ 0x2116, 0x2120, 0x212a, 0x212a, 0x212a, 0x212a, 0x212a, 0x212a, -+ 0x212a, 0x212a, 0x212a, 0x212a, 0x212a, 0x212a, 0x212a, 0x212a, -+ 0x212a, 0x212a, 0x107e, 0x007e, 0x0078, 0x2143, 0x107e, 0x007e, -+ 0x0078, 0x2143, 0x107e, 0x007e, 0x1078, 0x1e5e, 0x0078, 0x2143, -+ 0x107e, 0x007e, 0x1078, 0x1e5e, 0x0078, 0x2143, 0x107e, 0x007e, -+ 0x1078, 0x1d45, 0x0078, 0x2143, 0x107e, 0x007e, 0x1078, 0x1d45, -+ 0x0078, 0x2143, 0x107e, 0x007e, 0x1078, 0x1e5e, 0x1078, 0x1d45, -+ 0x0078, 0x2143, 0x107e, 0x007e, 0x1078, 0x1e5e, 0x1078, 0x1d45, -+ 0x0078, 0x2143, 0x107e, 0x007e, 0x1078, 0x1d8a, 0x0078, 0x2143, -+ 0x107e, 0x007e, 0x1078, 0x1d8a, 0x0078, 0x2143, 0x107e, 0x007e, -+ 0x1078, 0x1e5e, 0x1078, 0x1d8a, 0x0078, 0x2143, 0x107e, 0x007e, -+ 0x1078, 0x1e5e, 0x1078, 0x1d8a, 0x0078, 0x2143, 0x107e, 0x007e, -+ 0x1078, 0x1d45, 0x1078, 0x1d8a, 0x0078, 0x2143, 0x107e, 0x007e, -+ 0x1078, 0x1d45, 0x1078, 0x1d8a, 0x0078, 0x2143, 0x107e, 0x007e, -+ 0x1078, 0x1e5e, 0x1078, 0x1d45, 0x1078, 0x1d8a, 0x0078, 0x2143, -+ 0x107e, 0x007e, 0x1078, 0x1e5e, 0x1078, 0x1d45, 0x1078, 0x1d8a, -+ 0x0078, 0x2143, 0x0005, 0x0078, 0x212a, 0xb084, 0x003c, 0x8004, -+ 0x8004, 0x0079, 0x2133, 0x2143, 0x20c0, 0x20c4, 0x20ca, 0x20d0, -+ 0x20d6, 0x20dc, 0x20e4, 0x20ec, 0x20f2, 0x20f8, 0x2100, 0x2108, -+ 0x2110, 0x2118, 0x2122, 0x0008, 0x212d, 0x007f, 0x107f, 0x2091, -+ 0x8001, 0x007c, 0x0c7e, 0x027e, 0x2041, 0x007e, 0x70bc, 0xd09c, -+ 0x0040, 0x2154, 0x2041, 0x007f, 0x2001, 0x010c, 0x203c, 0x727c, -+ 0x82ff, 0x0040, 0x219f, 0x037e, 0x738c, 0xa38e, 0xffff, 0x00c0, -+ 0x2163, 0x2019, 0x0001, 0x8314, 0xa2e0, 0x7dc0, 0x2c04, 0xa38c, -+ 0x0001, 0x0040, 0x2170, 0xa084, 0xff00, 0x8007, 0x0078, 0x2172, -+ 0xa084, 0x00ff, 0xa70e, 0x0040, 0x2194, 0xa08e, 0x00ff, 0x0040, -+ 0x219a, 0x2009, 0x0000, 0x1078, 0x207f, 0x1078, 0x3811, 0x00c0, -+ 0x2197, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x218e, -+ 0x1078, 0x21f1, 0x0040, 0x2197, 0x0078, 0x2194, 0x1078, 0x22f5, -+ 0x1078, 0x2218, 0x0040, 0x2197, 0x8318, 0x0078, 0x2163, 0x738e, -+ 0x0078, 0x219c, 0x708f, 0xffff, 0x037f, 0x0078, 0x21ee, 0xa780, -+ 0x2329, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x708c, 0xa096, 0xffff, -+ 0x0040, 0x21b1, 0xa812, 0x00c8, 0x21c1, 0x708f, 0xffff, 0x0078, -+ 0x21eb, 0x2009, 0x0000, 0x70bc, 0xd09c, 0x0040, 0x21bc, 0xd094, -+ 0x0040, 0x21bc, 0x2009, 0x007e, 0x2100, 0xa802, 0x20a8, 0x0078, -+ 0x21c5, 0x2008, 0x2810, 0xa202, 0x20a8, 0x2700, 0x157e, 0x017e, -+ 0xa106, 0x0040, 0x21e2, 0x1078, 0x3811, 0x00c0, 0x21eb, 0x6004, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x21dc, 0x1078, 0x21f1, -+ 0x0040, 0x21eb, 0x0078, 0x21e2, 0x1078, 0x22f5, 0x1078, 0x2218, -+ 0x0040, 0x21eb, 0x017f, 0x8108, 0x157f, 0x00f0, 0x21c5, 0x708f, -+ 0xffff, 0x0078, 0x21ee, 0x017f, 0x157f, 0x718e, 0x027f, 0x0c7f, -+ 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x5cb4, -+ 0x0040, 0x2213, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, -+ 0x1078, 0x37e0, 0x2001, 0x0000, 0x1078, 0x37f4, 0x127e, 0x2091, -+ 0x8000, 0x7088, 0x8000, 0x708a, 0x127f, 0x2009, 0x0004, 0x1078, -+ 0x5d41, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, -+ 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x5cb4, 0x0040, -+ 0x223a, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, -+ 0x37e0, 0x2001, 0x0002, 0x1078, 0x37f4, 0x127e, 0x2091, 0x8000, -+ 0x7088, 0x8000, 0x708a, 0x127f, 0x2009, 0x0002, 0x1078, 0x5d41, -+ 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e, -+ 0x027e, 0x2009, 0x0080, 0x1078, 0x3811, 0x00c0, 0x224d, 0x1078, -+ 0x2250, 0x0040, 0x224d, 0x70c3, 0xffff, 0x027f, 0x0c7f, 0x007c, -+ 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x5cb4, 0x0040, -+ 0x2272, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, -+ 0x37e0, 0x2001, 0x0002, 0x1078, 0x37f4, 0x127e, 0x2091, 0x8000, -+ 0x70c4, 0x8000, 0x70c6, 0x127f, 0x2009, 0x0002, 0x1078, 0x5d41, -+ 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0c7e, -+ 0x0d7e, 0x2009, 0x007f, 0x1078, 0x3811, 0x00c0, 0x2290, 0x2c68, -+ 0x1078, 0x5cb4, 0x0040, 0x2290, 0x2d00, 0x601a, 0x6312, 0x601f, -+ 0x0001, 0x620a, 0x2009, 0x0022, 0x1078, 0x5d41, 0xa085, 0x0001, -+ 0x0d7f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x067e, 0x037e, 0x027e, -+ 0x1078, 0x4a85, 0x1078, 0x4a35, 0x1078, 0x6219, 0x20a9, 0x007f, -+ 0x2009, 0x0000, 0x017e, 0x1078, 0x384c, 0x00c0, 0x22ab, 0x1078, -+ 0x3a36, 0x1078, 0x3637, 0x017f, 0x8108, 0x00f0, 0x22a2, 0x027f, -+ 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x037e, -+ 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e, 0x2019, 0x0029, -+ 0x1078, 0x4a7e, 0x1078, 0x49c1, 0x2c08, 0x1078, 0x747b, 0x017f, -+ 0x2e60, 0x1078, 0x3a36, 0x6210, 0x6314, 0x1078, 0x3637, 0x6212, -+ 0x6316, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, -+ 0x007e, 0x6018, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x00c0, 0x22eb, -+ 0x2071, 0x7700, 0x7088, 0xa005, 0x0040, 0x22e8, 0x8001, 0x708a, -+ 0x007f, 0x0e7f, 0x007c, 0x2071, 0x7700, 0x70c4, 0xa005, 0x0040, -+ 0x22e8, 0x8001, 0x70c6, 0x0078, 0x22e8, 0x6000, 0xc08c, 0x6002, -+ 0x007c, 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x157e, 0x81ff, -+ 0x00c0, 0x2306, 0x20a9, 0x0001, 0x0078, 0x230a, 0x20a9, 0x007f, -+ 0x2011, 0x0000, 0x027e, 0xa2e0, 0x7820, 0x2c64, 0x8cff, 0x0040, -+ 0x231c, 0x2019, 0x0029, 0x1078, 0x4a7e, 0x1078, 0x49c1, 0x2c08, -+ 0x1078, 0x747b, 0x1078, 0x3a36, 0x027f, 0x8210, 0x00f0, 0x230a, -+ 0x027e, 0x027f, 0x157f, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, -+ 0x007c, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, -+ 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, -+ 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, -+ 0x77c5, 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, -+ 0x72b3, 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, -+ 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, -+ 0x809b, 0x8098, 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, -+ 0x8081, 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, -+ 0x8073, 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, -+ 0x5b69, 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, -+ 0x8056, 0x8055, 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, -+ 0x804c, 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, -+ 0x803c, 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, -+ 0x4831, 0x802e, 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, -+ 0x8026, 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, -+ 0x8017, 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, -+ 0x8000, 0x3800, 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, -+ 0x8000, 0x3400, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x3300, 0x3200, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x3100, 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, -+ 0x2c00, 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, -+ 0x2800, 0x8000, 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, -+ 0x8000, 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, -+ 0x8000, 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, -+ 0x1500, 0x8000, 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, -+ 0x8000, 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, -+ 0x8000, 0x8000, 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, -+ 0x8000, 0x0500, 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, -+ 0x8000, 0x0100, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x2071, 0x776d, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, -+ 0x703a, 0x703e, 0x7033, 0x777d, 0x7037, 0x777d, 0x7007, 0x0001, -+ 0x2061, 0x77bd, 0x6003, 0x0002, 0x007c, 0x0090, 0x2450, 0x0068, -+ 0x2450, 0x2071, 0x776d, 0x2b78, 0x7818, 0xd084, 0x00c0, 0x2450, -+ 0x2a60, 0x7820, 0xa08e, 0x0069, 0x00c0, 0x2537, 0x0079, 0x24d4, -+ 0x007c, 0x2071, 0x776d, 0x7004, 0x0079, 0x2456, 0x245a, 0x245b, -+ 0x2465, 0x2477, 0x007c, 0x0090, 0x2464, 0x0068, 0x2464, 0x2b78, -+ 0x7818, 0xd084, 0x0040, 0x2483, 0x007c, 0x2b78, 0x2061, 0x77bd, -+ 0x6008, 0xa08e, 0x0100, 0x0040, 0x2472, 0xa086, 0x0200, 0x0040, -+ 0x252f, 0x007c, 0x7014, 0x2068, 0x2a60, 0x7018, 0x007a, 0x7010, -+ 0x2068, 0x6834, 0xa086, 0x0103, 0x0040, 0x247f, 0x007c, 0x2a60, -+ 0x2b78, 0x7018, 0x007a, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x00c8, -+ 0x248c, 0x61b0, 0x0079, 0x2494, 0x2100, 0xa08a, 0x0036, 0x00c8, -+ 0x252b, 0x61b0, 0x0079, 0x24d4, 0x250d, 0x253f, 0x2547, 0x254b, -+ 0x2553, 0x2559, 0x255d, 0x2566, 0x256a, 0x2572, 0x2576, 0x252b, -+ 0x252b, 0x252b, 0x257a, 0x252b, 0x258a, 0x25a1, 0x25b8, 0x2634, -+ 0x2639, 0x2666, 0x26c0, 0x26d1, 0x26ef, 0x2722, 0x272c, 0x2739, -+ 0x274c, 0x2766, 0x276f, 0x27ac, 0x27b2, 0x252b, 0x27c2, 0x252b, -+ 0x252b, 0x252b, 0x252b, 0x252b, 0x27c6, 0x27cc, 0x252b, 0x252b, -+ 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x27d4, 0x252b, -+ 0x252b, 0x252b, 0x252b, 0x252b, 0x27e1, 0x27e7, 0x252b, 0x252b, -+ 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, -+ 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, -+ 0x252b, 0x252b, 0x252b, 0x252b, 0x2572, 0x2576, 0x252b, 0x252b, -+ 0x27f9, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, 0x252b, -+ 0x252b, 0x252b, 0x252b, 0x252b, 0x2846, 0x2913, 0x2927, 0x292e, -+ 0x2991, 0x29e2, 0x29ed, 0x2a2c, 0x2a3b, 0x2a4a, 0x2a4d, 0x27fd, -+ 0x2a76, 0x2abd, 0x2aca, 0x2bc5, 0x2cb3, 0x2cda, 0x2de4, 0x2df2, -+ 0x2dff, 0x2e39, 0x713c, 0x0078, 0x250d, 0x2021, 0x4000, 0x1078, -+ 0x2d33, 0x127e, 0x2091, 0x8000, 0x0068, 0x251a, 0x7818, 0xd084, -+ 0x0040, 0x251d, 0x127f, 0x0078, 0x2511, 0x781b, 0x0001, 0x7c22, -+ 0x7926, 0x7a2a, 0x7b2e, 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, -+ 0x5000, 0x127f, 0x007c, 0x2021, 0x4001, 0x0078, 0x250f, 0x2021, -+ 0x4002, 0x0078, 0x250f, 0x2021, 0x4003, 0x0078, 0x250f, 0x2021, -+ 0x4005, 0x0078, 0x250f, 0x2021, 0x4006, 0x0078, 0x250f, 0xa02e, -+ 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078, 0x2d42, 0x7823, -+ 0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, -+ 0x7930, 0x0078, 0x2d46, 0x7924, 0x7828, 0x2114, 0x200a, 0x0078, -+ 0x250d, 0x7924, 0x2114, 0x0078, 0x250d, 0x2099, 0x0009, 0x20a1, -+ 0x0009, 0x20a9, 0x0007, 0x53a3, 0x0078, 0x250d, 0x7824, 0x2060, -+ 0x0078, 0x257c, 0x2009, 0x0001, 0x2011, 0x000f, 0x2019, 0x0025, -+ 0x0078, 0x250d, 0x7d38, 0x7c3c, 0x0078, 0x2541, 0x7d38, 0x7c3c, -+ 0x0078, 0x254d, 0x2061, 0x1000, 0x610c, 0xa006, 0x2c14, 0xa200, -+ 0x8c60, 0x8109, 0x00c0, 0x257e, 0x2010, 0xa005, 0x0040, 0x250d, -+ 0x0078, 0x2533, 0x2061, 0x7751, 0x7824, 0x7930, 0xa11a, 0x00c8, -+ 0x253b, 0x8019, 0x0040, 0x253b, 0x604a, 0x6142, 0x782c, 0x6052, -+ 0x7828, 0x6056, 0xa006, 0x605a, 0x605e, 0x1078, 0x3d89, 0x0078, -+ 0x250d, 0x2061, 0x7751, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x253b, -+ 0x8019, 0x0040, 0x253b, 0x604e, 0x6146, 0x782c, 0x6062, 0x7828, -+ 0x6066, 0xa006, 0x606a, 0x606e, 0x1078, 0x3b5f, 0x0078, 0x250d, -+ 0xa02e, 0x2520, 0x81ff, 0x00c0, 0x2537, 0x7924, 0x7b28, 0x7a2c, -+ 0x20a9, 0x0005, 0x20a1, 0x7774, 0x41a1, 0x1078, 0x2cf8, 0x0040, -+ 0x2537, 0x2009, 0x0020, 0x1078, 0x2d42, 0x701b, 0x25d0, 0x007c, -+ 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011, 0x0040, 0x25dc, -+ 0xa096, 0x0019, 0x00c0, 0x2537, 0x810f, 0xa18c, 0x00ff, 0x0040, -+ 0x2537, 0x710e, 0x700c, 0x8001, 0x0040, 0x260d, 0x700e, 0x1078, -+ 0x2cf8, 0x0040, 0x2537, 0x2009, 0x0020, 0x2061, 0x77bd, 0x6224, -+ 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, -+ 0x0000, 0xa5a9, 0x0000, 0x1078, 0x2d42, 0x701b, 0x2600, 0x007c, -+ 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040, 0x260b, 0xa096, -+ 0x000a, 0x00c0, 0x2537, 0x0078, 0x25e2, 0x7010, 0x2068, 0x6838, -+ 0xc0fd, 0x683a, 0x1078, 0x3744, 0x00c0, 0x261b, 0x7007, 0x0003, -+ 0x701b, 0x261d, 0x007c, 0x1078, 0x3c22, 0x127e, 0x2091, 0x8000, -+ 0x20a9, 0x0005, 0x2099, 0x7774, 0x530a, 0x2100, 0xa210, 0xa399, -+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, -+ 0x0020, 0x127f, 0x0078, 0x2d46, 0x6198, 0x7824, 0x609a, 0x0078, -+ 0x250d, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, -+ 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, -+ 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, -+ 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, -+ 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, -+ 0xa08a, 0x0003, 0x00c8, 0x0427, 0x0078, 0x0423, 0x81ff, 0x00c0, -+ 0x2537, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x384c, 0x00c0, -+ 0x253b, 0x7e38, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048, 0x267a, -+ 0x0078, 0x253b, 0x7c28, 0x7d2c, 0x1078, 0x39fd, 0xd28c, 0x00c0, -+ 0x2685, 0x1078, 0x3991, 0x0078, 0x2687, 0x1078, 0x39cb, 0x00c0, -+ 0x26b1, 0x2061, 0x7e00, 0x127e, 0x2091, 0x8000, 0x6000, 0xa086, -+ 0x0000, 0x0040, 0x269f, 0x6010, 0xa06d, 0x0040, 0x269f, 0x683c, -+ 0xa406, 0x00c0, 0x269f, 0x6840, 0xa506, 0x0040, 0x26aa, 0x127f, -+ 0xace0, 0x0008, 0x2001, 0x7715, 0x2004, 0xac02, 0x00c8, 0x2537, -+ 0x0078, 0x268b, 0x1078, 0x6852, 0x127f, 0x0040, 0x2537, 0x0078, -+ 0x250d, 0xa00e, 0x2001, 0x0005, 0x1078, 0x3c22, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x6c5c, 0x1078, 0x3b92, 0x127f, 0x0078, 0x250d, -+ 0x81ff, 0x00c0, 0x2537, 0x1078, 0x2d10, 0x0040, 0x253b, 0x1078, -+ 0x38d5, 0x0040, 0x2537, 0x1078, 0x3a0a, 0x0040, 0x2537, 0x0078, -+ 0x250d, 0x81ff, 0x00c0, 0x2537, 0x1078, 0x2d22, 0x0040, 0x253b, -+ 0x1078, 0x3a71, 0x0040, 0x2537, 0x2019, 0x0005, 0x1078, 0x3a2b, -+ 0x0040, 0x2537, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x253b, 0x8003, -+ 0x800b, 0x810b, 0xa108, 0x1078, 0x4696, 0x0078, 0x250d, 0x127e, -+ 0x2091, 0x8000, 0x81ff, 0x00c0, 0x271c, 0x2029, 0x00ff, 0x644c, -+ 0x2400, 0xa506, 0x0040, 0x2716, 0x2508, 0x1078, 0x384c, 0x00c0, -+ 0x2716, 0x1078, 0x3a71, 0x0040, 0x271c, 0x2019, 0x0004, 0x1078, -+ 0x3a2b, 0x0040, 0x271c, 0x7824, 0xa08a, 0x1000, 0x00c8, 0x271f, -+ 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4696, 0x8529, 0x00c8, -+ 0x26f8, 0x127f, 0x0078, 0x250d, 0x127f, 0x0078, 0x2537, 0x127f, -+ 0x0078, 0x253b, 0x1078, 0x2d10, 0x0040, 0x253b, 0x1078, 0x3942, -+ 0x1078, 0x39fd, 0x0078, 0x250d, 0x81ff, 0x00c0, 0x2537, 0x1078, -+ 0x2d10, 0x0040, 0x253b, 0x1078, 0x3931, 0x1078, 0x39fd, 0x0078, -+ 0x250d, 0x81ff, 0x00c0, 0x2537, 0x1078, 0x2d10, 0x0040, 0x253b, -+ 0x1078, 0x39ce, 0x0040, 0x2537, 0x1078, 0x378d, 0x1078, 0x398a, -+ 0x1078, 0x39fd, 0x0078, 0x250d, 0x1078, 0x2d10, 0x0040, 0x253b, -+ 0x1078, 0x38d5, 0x0040, 0x2537, 0x62a0, 0x2019, 0x0005, 0x0c7e, -+ 0x1078, 0x3a36, 0x0c7f, 0x1078, 0x4a7e, 0x1078, 0x49c1, 0x2c08, -+ 0x1078, 0x747b, 0x1078, 0x39fd, 0x0078, 0x250d, 0x1078, 0x2d10, -+ 0x0040, 0x253b, 0x1078, 0x39fd, 0x2208, 0x0078, 0x250d, 0x157e, -+ 0x0d7e, 0x0e7e, 0x2069, 0x77ff, 0x6810, 0x6914, 0xa10a, 0x00c8, -+ 0x277b, 0x2009, 0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, -+ 0x20a9, 0x007e, 0x2069, 0x7820, 0x2d04, 0xa075, 0x0040, 0x2790, -+ 0x704c, 0x1078, 0x279a, 0xa210, 0x7080, 0x1078, 0x279a, 0xa318, -+ 0x8d68, 0x00f0, 0x2784, 0x2300, 0xa218, 0x0e7f, 0x0d7f, 0x157f, -+ 0x0078, 0x250d, 0x0f7e, 0x017e, 0xa07d, 0x0040, 0x27a9, 0x2001, -+ 0x0000, 0x8000, 0x2f0c, 0x81ff, 0x0040, 0x27a9, 0x2178, 0x0078, -+ 0x27a1, 0x017f, 0x0f7f, 0x007c, 0x2069, 0x77ff, 0x6910, 0x629c, -+ 0x0078, 0x250d, 0x81ff, 0x00c0, 0x2537, 0x614c, 0xa190, 0x2329, -+ 0x2214, 0xa294, 0x00ff, 0x6068, 0xa084, 0xff00, 0xa215, 0x6364, -+ 0x0078, 0x250d, 0x613c, 0x6240, 0x0078, 0x250d, 0x1078, 0x2d22, -+ 0x0040, 0x253b, 0x0078, 0x250d, 0x1078, 0x2d22, 0x0040, 0x253b, -+ 0x6244, 0x6338, 0x0078, 0x250d, 0x613c, 0x6240, 0x7824, 0x603e, -+ 0x7b28, 0x6342, 0x2069, 0x7751, 0x831f, 0xa305, 0x6816, 0x0078, -+ 0x250d, 0x1078, 0x2d22, 0x0040, 0x253b, 0x0078, 0x250d, 0x1078, -+ 0x2d22, 0x0040, 0x253b, 0x7828, 0xa00d, 0x0040, 0x253b, 0x782c, -+ 0xa005, 0x0040, 0x253b, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078, -+ 0x250d, 0x7d38, 0x7c3c, 0x0078, 0x25ba, 0x7824, 0xa09c, 0x00ff, -+ 0xa39a, 0x0003, 0x00c8, 0x2537, 0x624c, 0xa084, 0xff00, 0x8007, -+ 0xa206, 0x00c0, 0x2815, 0x2001, 0x7740, 0x2009, 0x000c, 0x7a2c, -+ 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2d46, 0x81ff, 0x00c0, 0x2537, -+ 0x1078, 0x2d22, 0x0040, 0x253b, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x00c0, 0x2537, 0x0c7e, 0x1078, 0x2cf8, 0x0c7f, 0x0040, -+ 0x2537, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x6b56, -+ 0x0040, 0x2537, 0x7007, 0x0003, 0x701b, 0x2837, 0x007c, 0x6830, -+ 0xa086, 0x0100, 0x0040, 0x2537, 0xad80, 0x000e, 0x2009, 0x000c, -+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2d46, 0x1078, 0x2cf8, -+ 0x0040, 0x2537, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, -+ 0x1078, 0x2d42, 0x701b, 0x2855, 0x007c, 0xade8, 0x000d, 0x6800, -+ 0xa005, 0x0040, 0x253b, 0x6804, 0xd0ac, 0x0040, 0x2862, 0xd0a4, -+ 0x0040, 0x253b, 0xd094, 0x0040, 0x286d, 0x0c7e, 0x2061, 0x0100, -+ 0x6104, 0xa18c, 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x2878, -+ 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f, -+ 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0048, 0x288d, 0xd084, -+ 0x0040, 0x288d, 0x6a28, 0xa28a, 0x007f, 0x00c8, 0x253b, 0xa288, -+ 0x2329, 0x210c, 0xa18c, 0x00ff, 0x6152, 0xd0dc, 0x0040, 0x2896, -+ 0x6828, 0xa08a, 0x007f, 0x00c8, 0x253b, 0x604e, 0x6808, 0xa08a, -+ 0x0100, 0x0048, 0x253b, 0xa08a, 0x0841, 0x00c8, 0x253b, 0xa084, -+ 0x0007, 0x00c0, 0x253b, 0x680c, 0xa005, 0x0040, 0x253b, 0x6810, -+ 0xa005, 0x0040, 0x253b, 0x6848, 0x6940, 0xa10a, 0x00c8, 0x253b, -+ 0x8001, 0x0040, 0x253b, 0x684c, 0x6944, 0xa10a, 0x00c8, 0x253b, -+ 0x8001, 0x0040, 0x253b, 0x20a9, 0x001c, 0x2d98, 0x2069, 0x7751, -+ 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x613e, 0x8007, 0xa084, -+ 0x00ff, 0x6042, 0x1078, 0x3d89, 0x1078, 0x3b5f, 0x6000, 0xa086, -+ 0x0000, 0x00c0, 0x2911, 0x6808, 0x602a, 0x1078, 0x1de4, 0x6818, -+ 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, -+ 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040, 0x28f1, 0x6830, -+ 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0078, -+ 0x28f3, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x1078, -+ 0x4722, 0x0c7e, 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, -+ 0x0c7f, 0x60b4, 0xa005, 0x0040, 0x290d, 0x6003, 0x0001, 0x2091, -+ 0x301d, 0x1078, 0x3591, 0x0078, 0x2911, 0x6003, 0x0004, 0x2091, -+ 0x301d, 0x0078, 0x250d, 0x6000, 0xa086, 0x0000, 0x0040, 0x2537, -+ 0x2069, 0x7751, 0x7830, 0x6842, 0x7834, 0x6846, 0x2d00, 0x2009, -+ 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2d46, 0x81ff, -+ 0x00c0, 0x2537, 0x1078, 0x3591, 0x0078, 0x250d, 0x81ff, 0x00c0, -+ 0x2537, 0x617c, 0x81ff, 0x0040, 0x2948, 0x703f, 0x0000, 0x2001, -+ 0x7dc0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x127e, -+ 0x2091, 0x8000, 0x1078, 0x2d46, 0x701b, 0x250a, 0x127f, 0x007c, -+ 0x703f, 0x0001, 0x0d7e, 0x2069, 0x7dc0, 0x20a9, 0x0040, 0x20a1, -+ 0x7dc0, 0x2019, 0xffff, 0x43a4, 0x654c, 0xa588, 0x2329, 0x210c, -+ 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, -+ 0x0040, 0x297a, 0x1078, 0x384c, 0x00c0, 0x297a, 0x6014, 0x821c, -+ 0x0048, 0x2972, 0xa398, 0x7dc0, 0xa085, 0xff00, 0x8007, 0x201a, -+ 0x0078, 0x2979, 0xa398, 0x7dc0, 0x2324, 0xa4a4, 0xff00, 0xa405, -+ 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x00c8, 0x2981, 0x0078, -+ 0x295e, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x0d7f, 0x20a9, -+ 0x0040, 0x20a1, 0x7dc0, 0x2099, 0x7dc0, 0x1078, 0x35da, 0x0078, -+ 0x2937, 0x1078, 0x2d22, 0x0040, 0x253b, 0x0c7e, 0x1078, 0x2cf8, -+ 0x0c7f, 0x0040, 0x2537, 0x2001, 0x7752, 0x2004, 0xd0b4, 0x0040, -+ 0x29be, 0x6000, 0xd08c, 0x00c0, 0x29be, 0x6004, 0xa084, 0x00ff, -+ 0xa086, 0x0006, 0x00c0, 0x29be, 0x6837, 0x0000, 0x6838, 0xc0fd, -+ 0x683a, 0x1078, 0x6b8e, 0x0040, 0x2537, 0x7007, 0x0003, 0x701b, -+ 0x29ba, 0x007c, 0x1078, 0x2d22, 0x0040, 0x253b, 0x20a9, 0x002b, -+ 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004, 0xac80, -+ 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078, 0x35da, 0x20a9, -+ 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, 0x1078, -+ 0x35da, 0x2d00, 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, -+ 0x0078, 0x2d46, 0x81ff, 0x00c0, 0x2537, 0x1078, 0x2d10, 0x0040, -+ 0x253b, 0x1078, 0x3a15, 0x0078, 0x250d, 0x81ff, 0x00c0, 0x2537, -+ 0x7828, 0xa08a, 0x1000, 0x00c8, 0x253b, 0x1078, 0x2d22, 0x0040, -+ 0x253b, 0x1078, 0x3a71, 0x0040, 0x2537, 0x2019, 0x0004, 0x1078, -+ 0x3a2b, 0x7924, 0x810f, 0x7a28, 0x1078, 0x2a08, 0x0078, 0x250d, -+ 0xa186, 0x00ff, 0x0040, 0x2a10, 0x1078, 0x2a20, 0x0078, 0x2a1f, -+ 0x2029, 0x007e, 0x2061, 0x7700, 0x644c, 0x2400, 0xa506, 0x0040, -+ 0x2a1c, 0x2508, 0x1078, 0x2a20, 0x8529, 0x00c8, 0x2a15, 0x007c, -+ 0x1078, 0x384c, 0x00c0, 0x2a2b, 0x2200, 0x8003, 0x800b, 0x810b, -+ 0xa108, 0x1078, 0x4696, 0x007c, 0x81ff, 0x00c0, 0x2537, 0x1078, -+ 0x2d10, 0x0040, 0x253b, 0x1078, 0x38d5, 0x0040, 0x2537, 0x1078, -+ 0x3a20, 0x0078, 0x250d, 0x81ff, 0x00c0, 0x2537, 0x1078, 0x2d10, -+ 0x0040, 0x253b, 0x1078, 0x38d5, 0x0040, 0x2537, 0x1078, 0x3a0a, -+ 0x0078, 0x250d, 0x6100, 0x0078, 0x250d, 0x1078, 0x2d22, 0x0040, -+ 0x253b, 0x6004, 0xa086, 0x0707, 0x0040, 0x253b, 0x2001, 0x7700, -+ 0x2004, 0xa086, 0x0003, 0x00c0, 0x2537, 0x0d7e, 0xace8, 0x000a, -+ 0x7924, 0xd184, 0x0040, 0x2a66, 0xace8, 0x0006, 0x680c, 0x8007, -+ 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00, 0x8217, -+ 0x0d7f, 0x6100, 0xa18c, 0x0200, 0x0078, 0x250d, 0x7824, 0xa084, -+ 0x00ff, 0xa086, 0x00ff, 0x0040, 0x2a80, 0x81ff, 0x00c0, 0x2537, -+ 0x7828, 0xa08a, 0x1000, 0x00c8, 0x253b, 0x7924, 0xa18c, 0xff00, -+ 0x810f, 0xa186, 0x00ff, 0x0040, 0x2a94, 0xa182, 0x007f, 0x00c8, -+ 0x253b, 0x2100, 0x1078, 0x2094, 0x027e, 0x0c7e, 0x127e, 0x2091, -+ 0x8000, 0x2061, 0x7949, 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, -+ 0x0100, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, -+ 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011, 0x35b6, 0x1078, -+ 0x4719, 0x7924, 0xa18c, 0xff00, 0x810f, 0x7a28, 0x1078, 0x2a08, -+ 0x127f, 0x0c7f, 0x027f, 0x0078, 0x250d, 0x7924, 0xa18c, 0xff00, -+ 0x810f, 0x0c7e, 0x1078, 0x3811, 0x2c08, 0x0c7f, 0x00c0, 0x253b, -+ 0x0078, 0x250d, 0x81ff, 0x00c0, 0x2537, 0x60bc, 0xd09c, 0x0040, -+ 0x2537, 0x1078, 0x2cf8, 0x0040, 0x2537, 0x6823, 0x0000, 0x7924, -+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x2d42, 0x701b, 0x2ae1, -+ 0x007c, 0x2009, 0x0080, 0x1078, 0x384c, 0x00c0, 0x2aee, 0x6004, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x0040, 0x2af2, 0x2021, 0x400a, -+ 0x0078, 0x250f, 0x0d7e, 0xade8, 0x000d, 0x6900, 0x6a08, 0x6b0c, -+ 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0040, 0x2b65, -+ 0xa0be, 0x0112, 0x0040, 0x2b65, 0xa0be, 0x0113, 0x0040, 0x2b65, -+ 0xa0be, 0x0114, 0x0040, 0x2b65, 0xa0be, 0x0117, 0x0040, 0x2b65, -+ 0xa0be, 0x011a, 0x0040, 0x2b65, 0xa0be, 0x0121, 0x0040, 0x2b5b, -+ 0xa0be, 0x0131, 0x0040, 0x2b5b, 0xa0be, 0x0171, 0x0040, 0x2b65, -+ 0xa0be, 0x0173, 0x0040, 0x2b65, 0xa0be, 0x01a1, 0x00c0, 0x2b2d, -+ 0x6830, 0x8007, 0x6832, 0x0078, 0x2b6b, 0xa0be, 0x0212, 0x0040, -+ 0x2b61, 0xa0be, 0x0213, 0x0040, 0x2b61, 0xa0be, 0x0214, 0x0040, -+ 0x2b53, 0xa0be, 0x0217, 0x0040, 0x2b4d, 0xa0be, 0x021a, 0x00c0, -+ 0x2b46, 0x6838, 0x8007, 0x683a, 0x0078, 0x2b65, 0xa0be, 0x0300, -+ 0x0040, 0x2b65, 0x0d7f, 0x0078, 0x253b, 0xad80, 0x0010, 0x20a9, -+ 0x0007, 0x1078, 0x2ba1, 0xad80, 0x000e, 0x20a9, 0x0001, 0x1078, -+ 0x2ba1, 0x0078, 0x2b65, 0xad80, 0x000c, 0x1078, 0x2baf, 0x0078, -+ 0x2b6b, 0xad80, 0x000e, 0x1078, 0x2baf, 0xad80, 0x000c, 0x20a9, -+ 0x0001, 0x1078, 0x2ba1, 0x0c7e, 0x1078, 0x2cf8, 0x0040, 0x2b96, -+ 0x6838, 0xc0fd, 0x683a, 0x6837, 0x0119, 0x684f, 0x0020, 0x685b, -+ 0x0001, 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, -+ 0x6d92, 0x6996, 0x689b, 0x0000, 0x0c7f, 0x0d7f, 0x6837, 0x0000, -+ 0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x1078, 0x6b72, 0x0040, -+ 0x2537, 0x7007, 0x0003, 0x701b, 0x2b9a, 0x007c, 0x0c7f, 0x0d7f, -+ 0x0078, 0x2537, 0x6820, 0xa086, 0x8001, 0x0040, 0x2537, 0x0078, -+ 0x250d, 0x017e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, -+ 0x8108, 0x280a, 0x8108, 0x00f0, 0x2ba3, 0x017f, 0x007c, 0x017e, -+ 0x0a7e, 0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, -+ 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, -+ 0x280a, 0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x81ff, 0x00c0, 0x2537, -+ 0x7924, 0x2140, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0080, 0x0048, -+ 0x253b, 0xa182, 0x00ff, 0x00c8, 0x253b, 0x7a2c, 0x7b28, 0x6064, -+ 0xa306, 0x00c0, 0x2be3, 0x6068, 0xa24e, 0x0040, 0x253b, 0xa9cc, -+ 0xff00, 0x0040, 0x253b, 0x0c7e, 0x1078, 0x2c57, 0x2c68, 0x0c7f, -+ 0x0040, 0x2c0a, 0xa0c6, 0x4000, 0x00c0, 0x2bf0, 0x0078, 0x2c07, -+ 0xa0c6, 0x4007, 0x00c0, 0x2bf7, 0x2408, 0x0078, 0x2c07, 0xa0c6, -+ 0x4008, 0x00c0, 0x2bff, 0x2708, 0x2610, 0x0078, 0x2c07, 0xa0c6, -+ 0x4009, 0x00c0, 0x2c05, 0x0078, 0x2c07, 0x2001, 0x4006, 0x2020, -+ 0x0078, 0x250f, 0x017e, 0x0b7e, 0x0c7e, 0x0e7e, 0x2c70, 0x1078, -+ 0x5cb4, 0x0040, 0x2c45, 0x2d00, 0x601a, 0x2e58, 0x0e7f, 0x0e7e, -+ 0x0c7e, 0x1078, 0x2cf8, 0x0c7f, 0x2b70, 0x0040, 0x2537, 0x6837, -+ 0x0000, 0x2d00, 0x6012, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, -+ 0x127e, 0x2091, 0x8000, 0x1078, 0x22b5, 0x127f, 0x601f, 0x0001, -+ 0x2001, 0x0000, 0x1078, 0x37e0, 0x2001, 0x0002, 0x1078, 0x37f4, -+ 0x127e, 0x2091, 0x8000, 0x7088, 0x8000, 0x708a, 0x127f, 0x2009, -+ 0x0002, 0x1078, 0x5d41, 0xa085, 0x0001, 0x0e7f, 0x0c7f, 0x0b7f, -+ 0x017f, 0x0040, 0x2537, 0x7007, 0x0003, 0x701b, 0x2c50, 0x007c, -+ 0x6830, 0xa086, 0x0100, 0x00c0, 0x250d, 0x0078, 0x2537, 0x0e7e, -+ 0x0d7e, 0x2029, 0x0000, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071, -+ 0x78a0, 0x2e04, 0xa005, 0x00c0, 0x2c6b, 0x2100, 0xa406, 0x0040, -+ 0x2ca8, 0x0078, 0x2c9c, 0x2068, 0x6f10, 0x2700, 0xa306, 0x00c0, -+ 0x2c8d, 0x6e14, 0x2600, 0xa206, 0x00c0, 0x2c8d, 0x2400, 0xa106, -+ 0x00c0, 0x2c89, 0x2d60, 0xd884, 0x0040, 0x2cae, 0x6004, 0xa084, -+ 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2cae, 0x2001, 0x4000, 0x0078, -+ 0x2caf, 0x2001, 0x4007, 0x0078, 0x2caf, 0x2400, 0xa106, 0x00c0, -+ 0x2c9c, 0x6e14, 0x87ff, 0x00c0, 0x2c98, 0x86ff, 0x0040, 0x2ca8, -+ 0x2001, 0x4008, 0x0078, 0x2caf, 0x8420, 0x8e70, 0x00f0, 0x2c61, -+ 0x2001, 0x4009, 0x0078, 0x2caf, 0x2001, 0x0001, 0x0078, 0x2caf, -+ 0x1078, 0x3811, 0x00c0, 0x2ca4, 0x6312, 0x6216, 0xa006, 0xa005, -+ 0x0d7f, 0x0e7f, 0x007c, 0x81ff, 0x00c0, 0x2537, 0x1078, 0x2cf8, -+ 0x0040, 0x2537, 0x6837, 0x0000, 0x7824, 0xa005, 0x0040, 0x253b, -+ 0xa096, 0x00ff, 0x0040, 0x2cc8, 0xa092, 0x0004, 0x00c8, 0x253b, -+ 0x2010, 0x2d18, 0x1078, 0x2277, 0x0040, 0x2537, 0x7007, 0x0003, -+ 0x701b, 0x2cd3, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2537, -+ 0x0078, 0x250d, 0x81ff, 0x00c0, 0x2537, 0x7924, 0xa18c, 0xff00, -+ 0x810f, 0xa182, 0x0080, 0x0048, 0x253b, 0xa182, 0x00ff, 0x00c8, -+ 0x253b, 0x127e, 0x2091, 0x8000, 0x1078, 0x6a99, 0x00c0, 0x2cf5, -+ 0x1078, 0x3834, 0x127f, 0x0078, 0x250d, 0x127f, 0x0078, 0x2537, -+ 0x1078, 0x1327, 0x0040, 0x2d0f, 0xa006, 0x6802, 0x7010, 0xa005, -+ 0x00c0, 0x2d07, 0x2d00, 0x7012, 0x7016, 0x0078, 0x2d0d, 0x7014, -+ 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, 0x000d, 0x007c, -+ 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x384c, 0x00c0, 0x2d1f, -+ 0x7e28, 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048, 0x2d20, 0xa066, -+ 0x8cff, 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x1078, 0x384c, -+ 0x00c0, 0x2d30, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0048, 0x2d31, -+ 0xa066, 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff, 0x0040, 0x2d3e, -+ 0x2168, 0x6904, 0x1078, 0x1340, 0x0078, 0x2d35, 0x7112, 0x7116, -+ 0x017f, 0x007c, 0x2031, 0x0001, 0x0078, 0x2d48, 0x2031, 0x0000, -+ 0x2061, 0x77bd, 0x6606, 0x6112, 0x600e, 0x6226, 0x632a, 0x642e, -+ 0x6532, 0x2c10, 0x1078, 0x1377, 0x7007, 0x0002, 0x701b, 0x250d, -+ 0x007c, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, -+ 0x777b, 0x2004, 0xa005, 0x00c0, 0x2d74, 0x0068, 0x2d74, 0x7818, -+ 0xd084, 0x00c0, 0x2d74, 0x781b, 0x0001, 0x7a22, 0x7b26, 0x7c2a, -+ 0x2091, 0x4080, 0x0078, 0x2d99, 0x017e, 0x0c7e, 0x0e7e, 0x2071, -+ 0x776d, 0x7138, 0xa182, 0x0008, 0x0048, 0x2d82, 0x7030, 0x2060, -+ 0x0078, 0x2d93, 0x7030, 0xa0e0, 0x0008, 0xac82, 0x77bd, 0x0048, -+ 0x2d8b, 0x2061, 0x777d, 0x2c00, 0x7032, 0x81ff, 0x00c0, 0x2d91, -+ 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x640a, 0x0e7f, 0x0c7f, -+ 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071, 0x776d, 0x7038, -+ 0xa005, 0x0040, 0x2dd5, 0x127e, 0x2091, 0x8000, 0x0068, 0x2dd4, -+ 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, 0x2dd3, 0x0c7e, -+ 0x781b, 0x0001, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826, -+ 0x6008, 0x782a, 0x2091, 0x4080, 0x7038, 0x8001, 0x703a, 0xa005, -+ 0x00c0, 0x2dc9, 0x7033, 0x777d, 0x7037, 0x777d, 0x0c7f, 0x0078, -+ 0x2dd3, 0xac80, 0x0008, 0xa0fa, 0x77bd, 0x0048, 0x2dd1, 0x2001, -+ 0x777d, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f, 0x007c, 0x027e, -+ 0x2001, 0x7752, 0x2004, 0xd0c4, 0x0040, 0x2de2, 0x2011, 0x8014, -+ 0x1078, 0x2d59, 0x027f, 0x007c, 0x81ff, 0x00c0, 0x2537, 0x127e, -+ 0x2091, 0x8000, 0x6030, 0xc08d, 0x6032, 0x1078, 0x3591, 0x127f, -+ 0x0078, 0x250d, 0x7824, 0x2008, 0xa18c, 0xfffd, 0x00c0, 0x2dfd, -+ 0x61c8, 0xa10d, 0x61ca, 0x0078, 0x250d, 0x0078, 0x253b, 0x81ff, -+ 0x00c0, 0x2537, 0x6000, 0xa086, 0x0003, 0x00c0, 0x2537, 0x2001, -+ 0x7752, 0x2004, 0xd0a4, 0x00c0, 0x2537, 0x1078, 0x2d22, 0x0040, -+ 0x253b, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2e1c, -+ 0x7828, 0xa005, 0x0040, 0x250d, 0x0c7e, 0x1078, 0x2cf8, 0x0c7f, -+ 0x0040, 0x2537, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, -+ 0x683a, 0x1078, 0x6bfb, 0x0040, 0x2537, 0x7007, 0x0003, 0x701b, -+ 0x2e32, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2537, 0x0078, -+ 0x250d, 0x2001, 0x7700, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2537, -+ 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x2cf8, 0x0040, -+ 0x2537, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, -+ 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x1078, 0x384c, 0x00c0, -+ 0x2e7f, 0x6004, 0xa0c6, 0x0707, 0x0040, 0x2e7f, 0xa084, 0x00ff, -+ 0xa0c6, 0x0006, 0x00c0, 0x2e7f, 0x87ff, 0x0040, 0x2e72, 0xac80, -+ 0x0006, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078, 0x2baf, -+ 0x0078, 0x2e7b, 0xac80, 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, -+ 0x53a3, 0x1078, 0x2baf, 0x21a2, 0x94a0, 0xa6b0, 0x0005, 0x8108, -+ 0xa186, 0x007e, 0x0040, 0x2e8a, 0xa686, 0x0028, 0x0040, 0x2e93, -+ 0x0078, 0x2e55, 0x86ff, 0x00c0, 0x2e91, 0x7120, 0x810b, 0x0078, -+ 0x250d, 0x702f, 0x0001, 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, -+ 0x2061, 0x77bd, 0x6007, 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, -+ 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x1377, 0x7007, 0x0002, -+ 0x701b, 0x2eab, 0x007c, 0x702c, 0xa005, 0x00c0, 0x2ebd, 0x711c, -+ 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, 0x77bd, 0x6224, -+ 0x6328, 0x642c, 0x6530, 0x0078, 0x2e55, 0x7120, 0x810b, 0x0078, -+ 0x250d, 0x127e, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071, 0x7700, -+ 0x6044, 0xd0a4, 0x00c0, 0x2eea, 0xd084, 0x0040, 0x2ed3, 0x1078, -+ 0x3015, 0x0078, 0x2ee6, 0xd08c, 0x0040, 0x2eda, 0x1078, 0x2f2c, -+ 0x0078, 0x2ee6, 0xd094, 0x0040, 0x2ee1, 0x1078, 0x2f0f, 0x0078, -+ 0x2ee6, 0xd09c, 0x0040, 0x2ee6, 0x1078, 0x2ef4, 0x0e7f, 0x0c7f, -+ 0x127f, 0x007c, 0x017e, 0x6128, 0xd19c, 0x00c0, 0x2ef1, 0xc19d, -+ 0x612a, 0x017f, 0x0078, 0x2ee6, 0x6043, 0x0040, 0x6043, 0x0000, -+ 0x706f, 0x0000, 0x7087, 0x0001, 0x70a7, 0x0000, 0x70bf, 0x0000, -+ 0x2009, 0x7dc0, 0x200b, 0x0000, 0x707f, 0x0000, 0x7073, 0x000f, -+ 0x2009, 0x000f, 0x2011, 0x3551, 0x1078, 0x4719, 0x007c, 0x7070, -+ 0xa005, 0x00c0, 0x2f2b, 0x2011, 0x3551, 0x1078, 0x4689, 0x6043, -+ 0x0020, 0x6043, 0x0000, 0x6044, 0xd08c, 0x00c0, 0x2f27, 0x7083, -+ 0x0000, 0x6043, 0x0090, 0x6043, 0x0010, 0x0078, 0x2f2b, 0x7077, -+ 0x0000, 0x0078, 0x2f2b, 0x007c, 0x7074, 0xa08a, 0x0003, 0x00c8, -+ 0x2f35, 0x1079, 0x2f38, 0x0078, 0x2f37, 0x1078, 0x12cd, 0x007c, -+ 0x2f3b, 0x2f8a, 0x3014, 0x0f7e, 0x7077, 0x0001, 0x20e1, 0xa000, -+ 0x20e1, 0x8700, 0x1078, 0x1de4, 0x20e1, 0x9080, 0x20e1, 0x4000, -+ 0x2079, 0x7c00, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, -+ 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, -+ 0x781f, 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, -+ 0x782f, 0x0000, 0x2079, 0x7c0c, 0x207b, 0x1101, 0x7807, 0x0000, -+ 0x2099, 0x7705, 0x20a1, 0x7c0e, 0x20a9, 0x0004, 0x53a3, 0x2079, -+ 0x7c12, 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0x7c00, 0x20a1, -+ 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, -+ 0x1078, 0x3578, 0x0f7f, 0x707b, 0x0000, 0x6043, 0x0008, 0x6043, -+ 0x0000, 0x007c, 0x0d7e, 0x7078, 0x707b, 0x0000, 0xa025, 0x0040, -+ 0x2ffe, 0x6020, 0xd0b4, 0x00c0, 0x2ffc, 0x7184, 0x81ff, 0x0040, -+ 0x2fe5, 0xa486, 0x000c, 0x00c0, 0x2ff0, 0xa480, 0x0018, 0x8004, -+ 0x20a8, 0x2011, 0x7c80, 0x2019, 0x7c00, 0x220c, 0x2304, 0xa106, -+ 0x00c0, 0x2fbc, 0x8210, 0x8318, 0x00f0, 0x2fa5, 0x6043, 0x0004, -+ 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x7077, 0x0002, -+ 0x7083, 0x0002, 0x0078, 0x2ffc, 0x2069, 0x7c80, 0x6930, 0xa18e, -+ 0x1101, 0x00c0, 0x2ff0, 0x6834, 0xa005, 0x00c0, 0x2ff0, 0x6900, -+ 0xa18c, 0x00ff, 0x00c0, 0x2fd0, 0x6804, 0xa005, 0x0040, 0x2fe5, -+ 0x2011, 0x7c8e, 0x2019, 0x7705, 0x20a9, 0x0004, 0x220c, 0x2304, -+ 0xa102, 0x0048, 0x2fe3, 0x00c0, 0x2ff0, 0x8210, 0x8318, 0x00f0, -+ 0x2fd6, 0x0078, 0x2ff0, 0x7087, 0x0000, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x2099, 0x7c80, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, -+ 0x6043, 0x0008, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2ffc, -+ 0x60c3, 0x000c, 0x1078, 0x3578, 0x0d7f, 0x007c, 0x6020, 0xd0b4, -+ 0x00c0, 0x2ffc, 0x60c3, 0x000c, 0x2011, 0x7940, 0x2013, 0x0000, -+ 0x707b, 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, -+ 0x1078, 0x5693, 0x0078, 0x2ffc, 0x007c, 0x7080, 0xa08a, 0x001d, -+ 0x00c8, 0x301e, 0x1079, 0x3021, 0x0078, 0x3020, 0x1078, 0x12cd, -+ 0x007c, 0x3045, 0x3054, 0x3085, 0x309a, 0x30ca, 0x30f2, 0x3122, -+ 0x314c, 0x317c, 0x31a2, 0x31eb, 0x320d, 0x3231, 0x3247, 0x326f, -+ 0x3282, 0x328b, 0x32a4, 0x32d2, 0x32fa, 0x3328, 0x3352, 0x339a, -+ 0x33cb, 0x33ed, 0x342b, 0x3451, 0x346a, 0x3477, 0x7003, 0x0007, -+ 0x6004, 0xa084, 0xfff9, 0x6006, 0x007c, 0x608b, 0xbc94, 0x608f, -+ 0xf0f0, 0x6043, 0x0002, 0x7083, 0x0001, 0x2009, 0x07d0, 0x2011, -+ 0x3558, 0x1078, 0x467c, 0x007c, 0x0f7e, 0x7078, 0xa086, 0x0014, -+ 0x00c0, 0x3083, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x3083, -+ 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x3081, 0x7834, -+ 0xa005, 0x00c0, 0x3081, 0x7a38, 0xd2fc, 0x0040, 0x3077, 0x70a4, -+ 0xa005, 0x00c0, 0x3077, 0x1078, 0x3611, 0x70a7, 0x0001, 0x2011, -+ 0x3558, 0x1078, 0x4689, 0x7083, 0x0010, 0x1078, 0x328b, 0x0078, -+ 0x3083, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0003, 0x6043, -+ 0x0004, 0x1078, 0x35e2, 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9, -+ 0x000a, 0x20a3, 0x0000, 0x00f0, 0x3091, 0x60c3, 0x0014, 0x1078, -+ 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x30c8, 0x2011, -+ 0x3558, 0x1078, 0x4689, 0xa086, 0x0014, 0x00c0, 0x30c4, 0x2079, -+ 0x7c80, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x30c4, 0x7834, 0xa005, -+ 0x00c0, 0x30c4, 0x7a38, 0xd2fc, 0x0040, 0x30be, 0x70a4, 0xa005, -+ 0x00c0, 0x30be, 0x1078, 0x3611, 0x70a7, 0x0001, 0x7083, 0x0004, -+ 0x1078, 0x30ca, 0x0078, 0x30c8, 0x7083, 0x0002, 0x707b, 0x0000, -+ 0x0f7f, 0x007c, 0x7083, 0x0005, 0x1078, 0x35e2, 0x20a3, 0x1103, -+ 0x20a3, 0x0000, 0x3430, 0x2011, 0x7c8e, 0x706c, 0xa005, 0x00c0, -+ 0x30e4, 0x714c, 0xa186, 0xffff, 0x0040, 0x30e4, 0x1078, 0x351c, -+ 0x0040, 0x30e4, 0x1078, 0x3611, 0x20a9, 0x0008, 0x2298, 0x26a0, -+ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, -+ 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x3120, 0x2011, -+ 0x3558, 0x1078, 0x4689, 0xa086, 0x0014, 0x00c0, 0x311c, 0x2079, -+ 0x7c80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x311c, 0x7834, 0xa005, -+ 0x00c0, 0x311c, 0x7a38, 0xd2fc, 0x0040, 0x3116, 0x70a4, 0xa005, -+ 0x00c0, 0x3116, 0x1078, 0x3611, 0x70a7, 0x0001, 0x7083, 0x0006, -+ 0x1078, 0x3122, 0x0078, 0x3120, 0x7083, 0x0002, 0x707b, 0x0000, -+ 0x0f7f, 0x007c, 0x7083, 0x0007, 0x1078, 0x35e2, 0x20a3, 0x1104, -+ 0x20a3, 0x0000, 0x3430, 0x2011, 0x7c8e, 0x706c, 0xa005, 0x00c0, -+ 0x313e, 0x7150, 0xa186, 0xffff, 0x0040, 0x313e, 0xa180, 0x2329, -+ 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x351c, 0x20a9, 0x0008, -+ 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, -+ 0x0014, 0x1078, 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, -+ 0x317a, 0x2011, 0x3558, 0x1078, 0x4689, 0xa086, 0x0014, 0x00c0, -+ 0x3176, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3176, -+ 0x7834, 0xa005, 0x00c0, 0x3176, 0x7a38, 0xd2fc, 0x0040, 0x3170, -+ 0x70a4, 0xa005, 0x00c0, 0x3170, 0x1078, 0x3611, 0x70a7, 0x0001, -+ 0x7083, 0x0008, 0x1078, 0x317c, 0x0078, 0x317a, 0x7083, 0x0002, -+ 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0009, 0x1078, 0x35e2, -+ 0x20a3, 0x1105, 0x20a3, 0x0100, 0x3430, 0x706c, 0xa005, 0x00c0, -+ 0x318f, 0x1078, 0x3486, 0x0040, 0x319f, 0x0078, 0x3199, 0x20a9, -+ 0x0008, 0x2099, 0x7c8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x60c3, 0x0014, 0x1078, 0x3578, 0x0078, 0x31a1, 0x1078, -+ 0x303e, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x31e9, 0x2011, -+ 0x3558, 0x1078, 0x4689, 0xa086, 0x0014, 0x00c0, 0x31e5, 0x2079, -+ 0x7c80, 0x7a30, 0xa296, 0x1105, 0x00c0, 0x31e5, 0x7834, 0x2011, -+ 0x0100, 0xa21e, 0x00c0, 0x31ce, 0x7a38, 0xd2fc, 0x0040, 0x31c8, -+ 0x70a4, 0xa005, 0x00c0, 0x31c8, 0x1078, 0x3611, 0x70a7, 0x0001, -+ 0x7083, 0x000a, 0x1078, 0x31eb, 0x0078, 0x31e9, 0xa005, 0x00c0, -+ 0x31e5, 0x7a38, 0xd2fc, 0x0040, 0x31dd, 0x70a4, 0xa005, 0x00c0, -+ 0x31dd, 0x1078, 0x3611, 0x70a7, 0x0001, 0x707f, 0x0000, 0x7083, -+ 0x000e, 0x1078, 0x326f, 0x0078, 0x31e9, 0x7083, 0x0002, 0x707b, -+ 0x0000, 0x0f7f, 0x007c, 0x7083, 0x000b, 0x2011, 0x7c0e, 0x22a0, -+ 0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, -+ 0x0000, 0x41a4, 0x1078, 0x35e2, 0x20a3, 0x1106, 0x20a3, 0x0000, -+ 0x6030, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, -+ 0x60c3, 0x0084, 0x1078, 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, -+ 0x0040, 0x322f, 0x2011, 0x3558, 0x1078, 0x4689, 0xa086, 0x0084, -+ 0x00c0, 0x322b, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1106, 0x00c0, -+ 0x322b, 0x7834, 0xa005, 0x00c0, 0x322b, 0x7083, 0x000c, 0x1078, -+ 0x3231, 0x0078, 0x322f, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, -+ 0x007c, 0x7083, 0x000d, 0x1078, 0x35e2, 0x20a3, 0x1107, 0x20a3, -+ 0x0000, 0x2099, 0x7c8e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x0084, 0x1078, 0x3578, 0x007c, 0x0f7e, -+ 0x7078, 0xa005, 0x0040, 0x326d, 0x2011, 0x3558, 0x1078, 0x4689, -+ 0xa086, 0x0084, 0x00c0, 0x3269, 0x2079, 0x7c80, 0x7a30, 0xa296, -+ 0x1107, 0x00c0, 0x3269, 0x7834, 0xa005, 0x00c0, 0x3269, 0x707f, -+ 0x0001, 0x1078, 0x35d4, 0x7083, 0x000e, 0x1078, 0x326f, 0x0078, -+ 0x326d, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, -+ 0x000f, 0x707b, 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, -+ 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, 0x3558, 0x1078, -+ 0x467c, 0x007c, 0x7078, 0xa005, 0x0040, 0x328a, 0x2011, 0x3558, -+ 0x1078, 0x4689, 0x007c, 0x7083, 0x0011, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x2099, 0x7c80, 0x20a1, 0x020b, 0x7478, 0xa480, 0x0018, -+ 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, -+ 0x0014, 0x1078, 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, -+ 0x32d0, 0x2011, 0x3558, 0x1078, 0x4689, 0xa086, 0x0014, 0x00c0, -+ 0x32ce, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x32ce, -+ 0x7834, 0xa005, 0x00c0, 0x32ce, 0x7a38, 0xd2fc, 0x0040, 0x32c8, -+ 0x70a4, 0xa005, 0x00c0, 0x32c8, 0x1078, 0x3611, 0x70a7, 0x0001, -+ 0x7083, 0x0012, 0x1078, 0x32d2, 0x0078, 0x32d0, 0x707b, 0x0000, -+ 0x0f7f, 0x007c, 0x7083, 0x0013, 0x1078, 0x35ee, 0x20a3, 0x1103, -+ 0x20a3, 0x0000, 0x3430, 0x2011, 0x7c8e, 0x706c, 0xa005, 0x00c0, -+ 0x32ec, 0x714c, 0xa186, 0xffff, 0x0040, 0x32ec, 0x1078, 0x351c, -+ 0x0040, 0x32ec, 0x1078, 0x3611, 0x20a9, 0x0008, 0x2298, 0x26a0, -+ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, -+ 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x3326, 0x2011, -+ 0x3558, 0x1078, 0x4689, 0xa086, 0x0014, 0x00c0, 0x3324, 0x2079, -+ 0x7c80, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x3324, 0x7834, 0xa005, -+ 0x00c0, 0x3324, 0x7a38, 0xd2fc, 0x0040, 0x331e, 0x70a4, 0xa005, -+ 0x00c0, 0x331e, 0x1078, 0x3611, 0x70a7, 0x0001, 0x7083, 0x0014, -+ 0x1078, 0x3328, 0x0078, 0x3326, 0x707b, 0x0000, 0x0f7f, 0x007c, -+ 0x7083, 0x0015, 0x1078, 0x35ee, 0x20a3, 0x1104, 0x20a3, 0x0000, -+ 0x3430, 0x2011, 0x7c8e, 0x706c, 0xa006, 0x00c0, 0x3344, 0x7150, -+ 0xa186, 0xffff, 0x0040, 0x3344, 0xa180, 0x2329, 0x200c, 0xa18c, -+ 0xff00, 0x810f, 0x1078, 0x351c, 0x20a9, 0x0008, 0x2298, 0x26a0, -+ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, -+ 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x3398, 0x2011, -+ 0x3558, 0x1078, 0x4689, 0xa086, 0x0014, 0x00c0, 0x3396, 0x2079, -+ 0x7c80, 0x7a30, 0xa296, 0x1105, 0x00c0, 0x3396, 0x7834, 0x2011, -+ 0x0100, 0xa21e, 0x00c0, 0x337f, 0x7a38, 0xd2f4, 0x0040, 0x3372, -+ 0x70bf, 0x0008, 0xd2fc, 0x0040, 0x337d, 0x70a4, 0xa005, 0x00c0, -+ 0x337d, 0x1078, 0x3611, 0x70a7, 0x0001, 0x0078, 0x3390, 0xa005, -+ 0x00c0, 0x3396, 0x7a38, 0xd2fc, 0x0040, 0x338e, 0x70a4, 0xa005, -+ 0x00c0, 0x338e, 0x1078, 0x3611, 0x70a7, 0x0001, 0x707f, 0x0000, -+ 0x7083, 0x0016, 0x1078, 0x339a, 0x0078, 0x3398, 0x707b, 0x0000, -+ 0x0f7f, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7c80, -+ 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0x7c8e, -+ 0x7083, 0x0017, 0x0078, 0x33ae, 0x7083, 0x001b, 0x706c, 0xa005, -+ 0x00c0, 0x33b8, 0x1078, 0x3486, 0x0040, 0x33c8, 0x0078, 0x33c2, -+ 0x20a9, 0x0008, 0x2099, 0x7c8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x3578, 0x0078, 0x33ca, -+ 0x1078, 0x303e, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x33eb, -+ 0x2011, 0x3558, 0x1078, 0x4689, 0xa086, 0x0084, 0x00c0, 0x33e9, -+ 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x33e9, 0x7834, -+ 0xa005, 0x00c0, 0x33e9, 0x7083, 0x0018, 0x1078, 0x33ed, 0x0078, -+ 0x33eb, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0019, 0x1078, -+ 0x35ee, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0x7c8e, -+ 0x2039, 0x7c0e, 0x27a0, 0x20a9, 0x0040, 0x53a3, 0x2728, 0x2514, -+ 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, -+ 0xa205, 0x202a, 0x6030, 0x2310, 0x8214, 0xa2a0, 0x7c0e, 0x2414, -+ 0xa38c, 0x0001, 0x0040, 0x3418, 0xa294, 0xff00, 0x0078, 0x341b, -+ 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9, -+ 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, -+ 0x1078, 0x3578, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x344f, -+ 0x2011, 0x3558, 0x1078, 0x4689, 0xa086, 0x0084, 0x00c0, 0x344d, -+ 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x344d, 0x7834, -+ 0xa005, 0x00c0, 0x344d, 0x707f, 0x0001, 0x1078, 0x35d4, 0x7083, -+ 0x001a, 0x1078, 0x3451, 0x0078, 0x344f, 0x707b, 0x0000, 0x0f7f, -+ 0x007c, 0x7083, 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, -+ 0x7c80, 0x20a1, 0x020b, 0x7478, 0xa480, 0x0018, 0xa080, 0x0007, -+ 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x1078, -+ 0x3578, 0x007c, 0x7078, 0xa005, 0x0040, 0x3476, 0x2011, 0x3558, -+ 0x1078, 0x4689, 0x7083, 0x001c, 0x1078, 0x3477, 0x007c, 0x707b, -+ 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0001, 0x2009, -+ 0x07d0, 0x2011, 0x3558, 0x1078, 0x467c, 0x007c, 0x087e, 0x097e, -+ 0x2029, 0x7752, 0x252c, 0x20a9, 0x0008, 0x2041, 0x7c0e, 0x28a0, -+ 0x2099, 0x7c8e, 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, -+ 0x0040, 0x349c, 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, -+ 0xffff, 0x00c0, 0x34ae, 0xd5d4, 0x0040, 0x34a9, 0x8210, 0x0078, -+ 0x34aa, 0x8211, 0x00f0, 0x349c, 0x0078, 0x3513, 0x82ff, 0x00c0, -+ 0x34c0, 0xd5d4, 0x0040, 0x34ba, 0xa1a6, 0x3fff, 0x0040, 0x34a6, -+ 0x0078, 0x34be, 0xa1a6, 0x3fff, 0x0040, 0x3513, 0xa18d, 0xc000, -+ 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0040, 0x34c9, 0x2019, -+ 0x0010, 0x2120, 0xd5d4, 0x0040, 0x34d0, 0x8423, 0x0078, 0x34d1, -+ 0x8424, 0x00c8, 0x34de, 0xd5d4, 0x0040, 0x34d9, 0x8319, 0x0078, -+ 0x34da, 0x8318, 0x00f0, 0x34ca, 0x0078, 0x3513, 0x23a8, 0x2021, -+ 0x0001, 0x8426, 0x8425, 0x00f0, 0x34e2, 0x2328, 0x8529, 0xa2be, -+ 0x0007, 0x0040, 0x34f6, 0x007e, 0x2039, 0x0007, 0x2200, 0xa73a, -+ 0x007f, 0x27a8, 0xa5a8, 0x0010, 0x00f0, 0x34f2, 0x754e, 0xa5c8, -+ 0x2329, 0x292c, 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, -+ 0x2018, 0x2304, 0xa405, 0x201a, 0x706f, 0x0001, 0x26a0, 0x2898, -+ 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0xa085, -+ 0x0001, 0x0078, 0x3519, 0xa006, 0x0078, 0x3519, 0xa006, 0x1078, -+ 0x12cd, 0x097f, 0x087f, 0x007c, 0x2118, 0x2021, 0x0000, 0x2001, -+ 0x0007, 0xa39a, 0x0010, 0x0048, 0x3529, 0x8420, 0x8001, 0x0078, -+ 0x3521, 0x2118, 0x84ff, 0x0040, 0x3532, 0xa39a, 0x0010, 0x8421, -+ 0x00c0, 0x352d, 0x2021, 0x0001, 0x83ff, 0x0040, 0x353b, 0x8423, -+ 0x8319, 0x00c0, 0x3537, 0xa238, 0x2704, 0xa42c, 0x00c0, 0x3550, -+ 0xa405, 0x203a, 0x714e, 0xa1a0, 0x2329, 0x242c, 0xa5ac, 0x00ff, -+ 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0001, 0xa084, 0x0000, -+ 0x007c, 0x0e7e, 0x2071, 0x7700, 0x7073, 0x0000, 0x0e7f, 0x007c, -+ 0x0e7e, 0x0f7e, 0x2079, 0x0100, 0x2071, 0x0140, 0x1078, 0x569c, -+ 0x7004, 0xa084, 0x4000, 0x0040, 0x3569, 0x7003, 0x1000, 0x7003, -+ 0x0000, 0x127e, 0x2091, 0x8000, 0x2071, 0x7720, 0x2073, 0x0000, -+ 0x7843, 0x0090, 0x7843, 0x0010, 0x127f, 0x0f7f, 0x0e7f, 0x007c, -+ 0x127e, 0x2091, 0x8000, 0x2011, 0x7940, 0x2013, 0x0000, 0x707b, -+ 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, -+ 0x1078, 0x5693, 0x2009, 0x07d0, 0x2011, 0x3558, 0x1078, 0x4719, -+ 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x2009, -+ 0x00f7, 0x1078, 0x35fa, 0x2061, 0x7949, 0x601b, 0x0000, 0x601f, -+ 0x0000, 0x2061, 0x7700, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043, -+ 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011, 0x35b6, 0x1078, -+ 0x467c, 0x127f, 0x0c7f, 0x027f, 0x017f, 0x007c, 0x0e7e, 0x007e, -+ 0x127e, 0x2091, 0x8000, 0x2071, 0x0100, 0x1078, 0x569c, 0x2071, -+ 0x0140, 0x7004, 0xa084, 0x4000, 0x0040, 0x35ca, 0x7003, 0x1000, -+ 0x7003, 0x0000, 0x2001, 0x0001, 0x1078, 0x2025, 0x1078, 0x3591, -+ 0x127f, 0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1, 0x7dc0, -+ 0x2099, 0x7c8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x00f0, -+ 0x35da, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7c00, -+ 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1, 0x9080, -+ 0x20e1, 0x4000, 0x2099, 0x7c80, 0x20a1, 0x020b, 0x20a9, 0x000c, -+ 0x53a6, 0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f, 0x2001, -+ 0x772c, 0x2004, 0xa005, 0x00c0, 0x360b, 0x6030, 0xa084, 0x00ff, -+ 0xa105, 0x0078, 0x360d, 0xa185, 0x00f7, 0x604a, 0x007f, 0x0c7f, -+ 0x007c, 0x017e, 0x047e, 0x2001, 0x7752, 0x2004, 0xd0a4, 0x0040, -+ 0x3624, 0xa006, 0x2020, 0x2009, 0x002a, 0x1078, 0x7641, 0x2001, -+ 0x770c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x1078, 0x2293, -+ 0x047f, 0x017f, 0x007c, 0x157e, 0x20a9, 0x00ff, 0x2009, 0x7820, -+ 0xa006, 0x200a, 0x8108, 0x00f0, 0x3631, 0x157f, 0x007c, 0x0d7e, -+ 0x037e, 0x157e, 0x137e, 0x147e, 0x2069, 0x7751, 0xa006, 0x6002, -+ 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2329, 0x231c, -+ 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0, -+ 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e, -+ 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066, -+ 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086, -+ 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x61a2, 0x0d7e, -+ 0x60a4, 0xa06d, 0x0040, 0x3676, 0x1078, 0x1340, 0x60a7, 0x0000, -+ 0x60a8, 0xa06d, 0x0040, 0x367e, 0x1078, 0x1340, 0x60ab, 0x0000, -+ 0x0d7f, 0xa006, 0x604a, 0x6810, 0x603a, 0x680c, 0x6046, 0x6814, -+ 0xa084, 0x00ff, 0x6042, 0x147f, 0x137f, 0x157f, 0x037f, 0x0d7f, -+ 0x007c, 0x127e, 0x2091, 0x8000, 0x6944, 0x6e48, 0xa684, 0x3fff, -+ 0xa082, 0x4000, 0x00c8, 0x3737, 0xa18c, 0xff00, 0x810f, 0xa182, -+ 0x00ff, 0x00c8, 0x373d, 0x2001, 0x770c, 0x2004, 0xa084, 0x0003, -+ 0x00c0, 0x3720, 0xa188, 0x7820, 0x2104, 0xa065, 0x0040, 0x370e, -+ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x3714, 0x60a4, -+ 0xa00d, 0x0040, 0x36bf, 0x1078, 0x3a5c, 0x0040, 0x3708, 0x60a8, -+ 0xa00d, 0x0040, 0x36d9, 0x1078, 0x3aac, 0x00c0, 0x36d9, 0x694c, -+ 0xd1fc, 0x00c0, 0x36cf, 0x1078, 0x37d1, 0x0078, 0x3703, 0x1078, -+ 0x37a2, 0x694c, 0xd1ec, 0x00c0, 0x3703, 0x1078, 0x3931, 0x0078, -+ 0x3703, 0x694c, 0xa184, 0xa000, 0x0040, 0x36f3, 0xd1ec, 0x0040, -+ 0x36ec, 0xd1fc, 0x0040, 0x36e8, 0x1078, 0x3942, 0x0078, 0x36ef, -+ 0x1078, 0x3942, 0x0078, 0x36f3, 0xd1fc, 0x0040, 0x36f3, 0x1078, -+ 0x37a2, 0x0078, 0x3703, 0x6050, 0xa00d, 0x0040, 0x36fe, 0x2d00, -+ 0x200a, 0x6803, 0x0000, 0x6052, 0x0078, 0x3703, 0x2d00, 0x6052, -+ 0x604e, 0x6803, 0x0000, 0x1078, 0x4960, 0xa006, 0x127f, 0x007c, -+ 0x2001, 0x0005, 0x2009, 0x0000, 0x0078, 0x3741, 0x2001, 0x0028, -+ 0x2009, 0x0000, 0x0078, 0x3741, 0xa082, 0x0006, 0x00c8, 0x3720, -+ 0x60a0, 0xd0bc, 0x0040, 0x36b7, 0x2001, 0x0028, 0x0078, 0x3733, -+ 0x2009, 0x770c, 0x210c, 0xd18c, 0x0040, 0x372a, 0x2001, 0x0004, -+ 0x0078, 0x3733, 0xd184, 0x0040, 0x3731, 0x2001, 0x0004, 0x0078, -+ 0x3733, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x3741, 0x2001, -+ 0x0029, 0x2009, 0x0000, 0x0078, 0x3741, 0x2001, 0x0029, 0x2009, -+ 0x0000, 0xa005, 0x127f, 0x007c, 0x6944, 0x6e48, 0xa684, 0x3fff, -+ 0xa082, 0x4000, 0x00c8, 0x3787, 0xa18c, 0xff00, 0x810f, 0xa182, -+ 0x00ff, 0x00c8, 0x3777, 0xa188, 0x7820, 0x2104, 0xa065, 0x0040, -+ 0x3777, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x377d, -+ 0x684c, 0xd0ec, 0x0040, 0x376a, 0x1078, 0x3942, 0x1078, 0x37a2, -+ 0x0078, 0x3772, 0x1078, 0x37a2, 0x684c, 0xd0fc, 0x0040, 0x3772, -+ 0x1078, 0x3931, 0x1078, 0x398a, 0xa006, 0x0078, 0x378b, 0x2001, -+ 0x0028, 0x2009, 0x0000, 0x0078, 0x378b, 0xa082, 0x0006, 0x0048, -+ 0x3760, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x378b, 0x2001, -+ 0x0029, 0x2009, 0x0000, 0xa005, 0x007c, 0x127e, 0x2091, 0x8000, -+ 0x6050, 0xa00d, 0x0040, 0x379b, 0x2d00, 0x200a, 0x6803, 0x0000, -+ 0x6052, 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, -+ 0x0078, 0x3799, 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, -+ 0x37ae, 0x6802, 0x2d00, 0x604e, 0x127f, 0x007c, 0x2d00, 0x6052, -+ 0x604e, 0x6803, 0x0000, 0x0078, 0x37ac, 0x127e, 0x2091, 0x8000, -+ 0x604c, 0xa06d, 0x0040, 0x37c3, 0x6800, 0xa005, 0x00c0, 0x37c1, -+ 0x6052, 0x604e, 0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, -+ 0x37d0, 0x6800, 0xa005, 0x00c0, 0x37ce, 0x6052, 0x604e, 0xad05, -+ 0x007c, 0x6803, 0x0000, 0x6084, 0xa00d, 0x0040, 0x37db, 0x2d00, -+ 0x200a, 0x6086, 0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x37da, -+ 0x127e, 0x0c7e, 0x027e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, -+ 0xa005, 0x0040, 0x37ee, 0xc285, 0x0078, 0x37ef, 0xc284, 0x6202, -+ 0x027f, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, -+ 0x6218, 0x2260, 0x6204, 0xa294, 0xff00, 0xa215, 0x6206, 0x0c7f, -+ 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260, -+ 0x6204, 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206, 0x0c7f, 0x127f, -+ 0x007c, 0x027e, 0xa182, 0x00ff, 0x0048, 0x381a, 0xa085, 0x0001, -+ 0x0078, 0x3832, 0xa190, 0x7820, 0x2204, 0xa065, 0x00c0, 0x3831, -+ 0x017e, 0x0d7e, 0x1078, 0x130c, 0x2d60, 0x0d7f, 0x017f, 0x0040, -+ 0x3816, 0x2c00, 0x2012, 0x60a7, 0x0000, 0x60ab, 0x0000, 0x1078, -+ 0x3637, 0xa006, 0x027f, 0x007c, 0x027e, 0xa182, 0x00ff, 0x0048, -+ 0x383d, 0xa085, 0x0001, 0x0078, 0x384a, 0x0d7e, 0xa190, 0x7820, -+ 0x2204, 0xa06d, 0x0040, 0x3848, 0x2013, 0x0000, 0x1078, 0x1340, -+ 0x0d7f, 0xa006, 0x027f, 0x007c, 0x017e, 0xa182, 0x00ff, 0x0048, -+ 0x3855, 0xa085, 0x0001, 0x0078, 0x385c, 0xa188, 0x7820, 0x2104, -+ 0xa065, 0x0040, 0x3851, 0xa006, 0x017f, 0x007c, 0x0d7e, 0x157e, -+ 0x137e, 0x147e, 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, -+ 0x6002, 0x2069, 0x7c8e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138, -+ 0xa10a, 0x0048, 0x3874, 0x603a, 0x6814, 0x6066, 0x2099, 0x7c96, -+ 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0x7c9a, -+ 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0x7cae, -+ 0x6808, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, -+ 0xa182, 0x0211, 0x00c8, 0x3898, 0x2009, 0x0008, 0x0078, 0x38c2, -+ 0xa182, 0x0259, 0x00c8, 0x38a0, 0x2009, 0x0007, 0x0078, 0x38c2, -+ 0xa182, 0x02c1, 0x00c8, 0x38a8, 0x2009, 0x0006, 0x0078, 0x38c2, -+ 0xa182, 0x0349, 0x00c8, 0x38b0, 0x2009, 0x0005, 0x0078, 0x38c2, -+ 0xa182, 0x0421, 0x00c8, 0x38b8, 0x2009, 0x0004, 0x0078, 0x38c2, -+ 0xa182, 0x0581, 0x00c8, 0x38c0, 0x2009, 0x0003, 0x0078, 0x38c2, -+ 0x2009, 0x0002, 0x6192, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, -+ 0x0e7e, 0x2071, 0x7c8d, 0x2e04, 0x6896, 0x2071, 0x7c8e, 0x7004, -+ 0x689a, 0x701c, 0x689e, 0x0e7f, 0x007c, 0x0d7e, 0x127e, 0x2091, -+ 0x8000, 0x60a4, 0xa06d, 0x0040, 0x38f9, 0x6900, 0x81ff, 0x00c0, -+ 0x390d, 0x6a04, 0xa282, 0x0010, 0x00c8, 0x3912, 0xad88, 0x0004, -+ 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0040, 0x38f4, 0x8108, -+ 0x00f0, 0x38ea, 0x1078, 0x12cd, 0x260a, 0x8210, 0x6a06, 0x0078, -+ 0x390d, 0x1078, 0x130c, 0x0040, 0x3912, 0x2d00, 0x60a6, 0x6803, -+ 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, -+ 0x00f0, 0x3905, 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x127f, -+ 0x0d7f, 0x007c, 0xa006, 0x0078, 0x390f, 0x127e, 0x2091, 0x8000, -+ 0x1078, 0x3a55, 0x00c0, 0x392f, 0x200b, 0xffff, 0x0d7e, 0x60a4, -+ 0x2068, 0x6804, 0xa08a, 0x0002, 0x0048, 0x392a, 0x8001, 0x6806, -+ 0x0078, 0x392e, 0x1078, 0x1340, 0x60a7, 0x0000, 0x0d7f, 0x127f, -+ 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x3ac1, 0x0078, 0x393a, -+ 0x1078, 0x378d, 0x1078, 0x39ce, 0x00c0, 0x3938, 0x1078, 0x398a, -+ 0x127f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a8, 0xa06d, -+ 0x0040, 0x3966, 0x6950, 0x81ff, 0x00c0, 0x397a, 0x6a54, 0xa282, -+ 0x0010, 0x00c8, 0x3987, 0xad88, 0x0018, 0x20a9, 0x0010, 0x2104, -+ 0xa086, 0xffff, 0x0040, 0x3961, 0x8108, 0x00f0, 0x3957, 0x1078, -+ 0x12cd, 0x260a, 0x8210, 0x6a56, 0x0078, 0x397a, 0x1078, 0x130c, -+ 0x0040, 0x3987, 0x2d00, 0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, -+ 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x00f0, 0x3972, 0x6857, -+ 0x0001, 0x6e62, 0x0078, 0x397e, 0x1078, 0x37d1, 0x1078, 0x3994, -+ 0x00c0, 0x397c, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006, -+ 0x0078, 0x3984, 0x127e, 0x2091, 0x8000, 0x1078, 0x4960, 0x127f, -+ 0x007c, 0xa01e, 0x0078, 0x3996, 0x2019, 0x0001, 0xa00e, 0x127e, -+ 0x2091, 0x8000, 0x604c, 0x2068, 0x6000, 0xd0dc, 0x00c0, 0x39b4, -+ 0x8dff, 0x0040, 0x39c9, 0x83ff, 0x0040, 0x39ac, 0x6848, 0xa606, -+ 0x0040, 0x39b9, 0x0078, 0x39b4, 0x683c, 0xa406, 0x00c0, 0x39b4, -+ 0x6840, 0xa506, 0x0040, 0x39b9, 0x2d08, 0x6800, 0x2068, 0x0078, -+ 0x39a0, 0x6a00, 0x604c, 0xad06, 0x00c0, 0x39c1, 0x624e, 0x0078, -+ 0x39c4, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x39c9, 0x6152, -+ 0x8dff, 0x127f, 0x007c, 0xa01e, 0x0078, 0x39d0, 0x2019, 0x0001, -+ 0xa00e, 0x6080, 0x2068, 0x8dff, 0x0040, 0x39fc, 0x83ff, 0x0040, -+ 0x39df, 0x6848, 0xa606, 0x0040, 0x39ec, 0x0078, 0x39e7, 0x683c, -+ 0xa406, 0x00c0, 0x39e7, 0x6840, 0xa506, 0x0040, 0x39ec, 0x2d08, -+ 0x6800, 0x2068, 0x0078, 0x39d3, 0x6a00, 0x6080, 0xad06, 0x00c0, -+ 0x39f4, 0x6282, 0x0078, 0x39f7, 0xa180, 0x0000, 0x2202, 0x82ff, -+ 0x00c0, 0x39fc, 0x6186, 0x8dff, 0x007c, 0x1078, 0x3a55, 0x00c0, -+ 0x3a03, 0x2011, 0x0001, 0x1078, 0x3aa5, 0x00c0, 0x3a09, 0xa295, -+ 0x0002, 0x007c, 0x1078, 0x3add, 0x0040, 0x3a12, 0x1078, 0x6b2b, -+ 0x0078, 0x3a14, 0xa085, 0x0001, 0x007c, 0x1078, 0x3add, 0x0040, -+ 0x3a1d, 0x1078, 0x6aba, 0x0078, 0x3a1f, 0xa085, 0x0001, 0x007c, -+ 0x1078, 0x3add, 0x0040, 0x3a28, 0x1078, 0x6b00, 0x0078, 0x3a2a, -+ 0xa085, 0x0001, 0x007c, 0x1078, 0x3add, 0x0040, 0x3a33, 0x1078, -+ 0x6ad6, 0x0078, 0x3a35, 0xa085, 0x0001, 0x007c, 0x127e, 0x007e, -+ 0x0d7e, 0x2091, 0x8000, 0x6080, 0xa06d, 0x0040, 0x3a4d, 0x6800, -+ 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x6c54, -+ 0x1078, 0x3b92, 0x007f, 0x0078, 0x3a3c, 0x6083, 0x0000, 0x6087, -+ 0x0000, 0x0d7f, 0x007f, 0x127f, 0x007c, 0x60a4, 0xa00d, 0x00c0, -+ 0x3a5c, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x2170, 0x7000, 0xa005, -+ 0x00c0, 0x3a6f, 0x20a9, 0x0010, 0xae88, 0x0004, 0x2104, 0xa606, -+ 0x0040, 0x3a6f, 0x8108, 0x00f0, 0x3a66, 0xa085, 0x0001, 0x0e7f, -+ 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x00c0, -+ 0x3a7f, 0x1078, 0x130c, 0x0040, 0x3a91, 0x2d00, 0x60a6, 0x6803, -+ 0x0001, 0x6807, 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, -+ 0xffff, 0x8108, 0x00f0, 0x3a87, 0xa085, 0x0001, 0x127f, 0x0d7f, -+ 0x007c, 0xa006, 0x0078, 0x3a8e, 0x0d7e, 0x127e, 0x2091, 0x8000, -+ 0x60a4, 0xa06d, 0x0040, 0x3aa2, 0x60a7, 0x0000, 0x1078, 0x1340, -+ 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0x60a8, 0xa00d, 0x00c0, -+ 0x3aac, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x2170, 0x7050, 0xa005, -+ 0x00c0, 0x3abf, 0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, -+ 0x0040, 0x3abf, 0x8108, 0x00f0, 0x3ab6, 0xa085, 0x0001, 0x0e7f, -+ 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x3aa5, 0x00c0, 0x3adb, -+ 0x200b, 0xffff, 0x0d7e, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, -+ 0x0048, 0x3ad6, 0x8001, 0x6856, 0x0078, 0x3ada, 0x1078, 0x1340, -+ 0x60ab, 0x0000, 0x0d7f, 0x127f, 0x007c, 0x609c, 0xd0a4, 0x007c, -+ 0x0f7e, 0x2079, 0x7751, 0x7804, 0xd0a4, 0x0040, 0x3b09, 0x157e, -+ 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x384c, -+ 0x00c0, 0x3afd, 0x6004, 0xa084, 0xff00, 0x8007, 0xa086, 0x0006, -+ 0x00c0, 0x3afd, 0x6000, 0xc0ed, 0x6002, 0x017f, 0x8108, 0x00f0, -+ 0x3aed, 0x0c7f, 0x157f, 0x2009, 0x07d0, 0x2011, 0x3b0b, 0x1078, -+ 0x4719, 0x0f7f, 0x007c, 0x2011, 0x3b0b, 0x1078, 0x4689, 0x157e, -+ 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x384c, -+ 0x00c0, 0x3b37, 0x6000, 0xd0ec, 0x0040, 0x3b37, 0x047e, 0x62a0, -+ 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, 0x1078, 0x7641, -+ 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x2019, 0x0029, 0x1078, 0x4a7e, -+ 0x1078, 0x49c1, 0x2009, 0x0000, 0x1078, 0x747b, 0x047f, 0x017f, -+ 0x8108, 0x00f0, 0x3b15, 0x0c7f, 0x157f, 0x007c, 0x0c7e, 0x6018, -+ 0x2060, 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c, 0x2071, 0x77ff, -+ 0x7003, 0x0001, 0x7007, 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, -+ 0x701b, 0x0000, 0x701f, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, -+ 0x705b, 0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x007c, 0x0e7e, -+ 0x2071, 0x77ff, 0x684c, 0xa005, 0x00c0, 0x3b6d, 0x7028, 0xc085, -+ 0x702a, 0xa085, 0x0001, 0x0078, 0x3b90, 0x6a60, 0x7236, 0x6b64, -+ 0x733a, 0x6868, 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, -+ 0x702e, 0x6844, 0x7032, 0x2009, 0x000d, 0x200a, 0x8007, 0x8006, -+ 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, -+ 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, -+ 0x0e7f, 0x007c, 0x0e7e, 0x6838, 0xd0fc, 0x00c0, 0x3be3, 0x6804, -+ 0xa00d, 0x0040, 0x3bb1, 0x0d7e, 0x0e7e, 0x2071, 0x7700, 0x027e, -+ 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, -+ 0x00c0, 0x3ba2, 0x702e, 0x70a0, 0xa200, 0x70a2, 0x027f, 0x0e7f, -+ 0x0d7f, 0x2071, 0x77ff, 0x701c, 0xa005, 0x00c0, 0x3bf4, 0x0068, -+ 0x3bf2, 0x2071, 0x7751, 0x7004, 0xd09c, 0x0040, 0x3bf2, 0x6934, -+ 0xa186, 0x0103, 0x00c0, 0x3c05, 0x6948, 0x6844, 0xa105, 0x00c0, -+ 0x3be5, 0x2009, 0x8020, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, -+ 0x3bf2, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, -+ 0x2091, 0x4080, 0x2071, 0x7700, 0x702c, 0x206a, 0x2d00, 0x702e, -+ 0x70a0, 0x8000, 0x70a2, 0x0e7f, 0x007c, 0x6844, 0xa086, 0x0100, -+ 0x00c0, 0x3bf2, 0x6868, 0xa005, 0x00c0, 0x3bf2, 0x2009, 0x8020, -+ 0x0078, 0x3bcb, 0x2071, 0x77ff, 0x2d08, 0x206b, 0x0000, 0x7010, -+ 0x8000, 0x7012, 0x7018, 0xa06d, 0x711a, 0x0040, 0x3c02, 0x6902, -+ 0x0078, 0x3c03, 0x711e, 0x0078, 0x3be3, 0xa18c, 0x00ff, 0xa186, -+ 0x0017, 0x0040, 0x3c13, 0xa186, 0x001e, 0x0040, 0x3c13, 0xa18e, -+ 0x001f, 0x00c0, 0x3bf2, 0x684c, 0xd0cc, 0x0040, 0x3bf2, 0x6850, -+ 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x3bf2, 0x2009, 0x8021, -+ 0x0078, 0x3bcb, 0x007e, 0x6837, 0x0103, 0x20a9, 0x001c, 0xad80, -+ 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x007f, 0x684a, 0x6952, -+ 0x007c, 0x2071, 0x77ff, 0x7004, 0x0079, 0x3c36, 0x3c3e, 0x3c4d, -+ 0x3cdd, 0x3cde, 0x3cee, 0x3cf4, 0x3c3f, 0x3ccb, 0x007c, 0x127e, -+ 0x2091, 0x8000, 0x0068, 0x3c4c, 0x2009, 0x000d, 0x7030, 0x200a, -+ 0x2091, 0x4080, 0x7007, 0x0001, 0x127f, 0x701c, 0xa06d, 0x0040, -+ 0x3cca, 0x0e7e, 0x2071, 0x7751, 0x7004, 0xd09c, 0x0040, 0x3cac, -+ 0x6934, 0xa186, 0x0103, 0x00c0, 0x3c82, 0x6948, 0x6844, 0xa105, -+ 0x00c0, 0x3c9f, 0x2009, 0x8020, 0x127e, 0x2091, 0x8000, 0x0068, -+ 0x3c7e, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x3c7e, 0x7122, -+ 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, -+ 0x127f, 0x0e7f, 0x1078, 0x3d27, 0x0078, 0x3cca, 0x127f, 0x0e7f, -+ 0x0078, 0x3cca, 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0040, 0x3c90, -+ 0xa186, 0x001e, 0x0040, 0x3c90, 0xa18e, 0x001f, 0x00c0, 0x3cac, -+ 0x684c, 0xd0cc, 0x0040, 0x3cac, 0x6850, 0xa084, 0x00ff, 0xa086, -+ 0x0001, 0x00c0, 0x3cac, 0x2009, 0x8021, 0x0078, 0x3c64, 0x6844, -+ 0xa086, 0x0100, 0x00c0, 0x3cac, 0x6868, 0xa005, 0x00c0, 0x3cac, -+ 0x2009, 0x8020, 0x0078, 0x3c64, 0x0e7f, 0x1078, 0x3d3b, 0x0040, -+ 0x3cca, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, -+ 0x00c0, 0x3cc1, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0040, 0x3cc1, -+ 0x710e, 0x7007, 0x0003, 0x1078, 0x3d5b, 0x7050, 0xa086, 0x0100, -+ 0x0040, 0x3cde, 0x007c, 0x701c, 0xa06d, 0x0040, 0x3cdc, 0x1078, -+ 0x3d3b, 0x0040, 0x3cdc, 0x7007, 0x0003, 0x1078, 0x3d5b, 0x7050, -+ 0xa086, 0x0100, 0x0040, 0x3cde, 0x007c, 0x007c, 0x7050, 0xa09e, -+ 0x0100, 0x00c0, 0x3ce7, 0x7007, 0x0004, 0x0078, 0x3cee, 0xa086, -+ 0x0200, 0x00c0, 0x3ced, 0x7007, 0x0005, 0x007c, 0x1078, 0x3cf5, -+ 0x7006, 0x1078, 0x3d27, 0x007c, 0x007c, 0x702c, 0x7130, 0x8108, -+ 0xa102, 0x0048, 0x3d02, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, -+ 0x0078, 0x3d0c, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, 0x3d0c, -+ 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, 0x8001, 0x700e, -+ 0x00c0, 0x3d20, 0x127e, 0x2091, 0x8000, 0x0068, 0x3d23, 0x2001, -+ 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x127f, 0x007c, -+ 0x2001, 0x0007, 0x007c, 0x2001, 0x0006, 0x127f, 0x007c, 0x701c, -+ 0xa06d, 0x0040, 0x3d3a, 0x127e, 0x2091, 0x8000, 0x7010, 0x8001, -+ 0x7012, 0x2d04, 0x701e, 0xa005, 0x00c0, 0x3d37, 0x701a, 0x127f, -+ 0x1078, 0x1340, 0x007c, 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, -+ 0x0040, 0x3d4a, 0x2304, 0x230c, 0xa10e, 0x0040, 0x3d4a, 0xa006, -+ 0x0078, 0x3d5a, 0x732c, 0x8319, 0x7130, 0xa102, 0x00c0, 0x3d54, -+ 0x2300, 0xa005, 0x0078, 0x3d5a, 0x0048, 0x3d59, 0xa302, 0x0078, -+ 0x3d5a, 0x8002, 0x007c, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, -+ 0x7053, 0x0000, 0x127e, 0x2091, 0x8000, 0x2009, 0x7959, 0x2104, -+ 0xc08d, 0x200a, 0x127f, 0x1078, 0x1391, 0x007c, 0x2071, 0x77cd, -+ 0x7003, 0x0000, 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, -+ 0x704f, 0x0000, 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, -+ 0x7083, 0x0000, 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, -+ 0x007c, 0x0e7e, 0x2071, 0x77cd, 0x6848, 0xa005, 0x00c0, 0x3d97, -+ 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078, 0x3dbc, 0x6a50, -+ 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, -+ 0x707e, 0x6848, 0x702e, 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, -+ 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, -+ 0x2100, 0xa319, 0x7272, 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, -+ 0x0001, 0x700f, 0x0000, 0xa006, 0x0e7f, 0x007c, 0x2b78, 0x2071, -+ 0x77cd, 0x7004, 0x1079, 0x3e1c, 0x700c, 0x0079, 0x3dc7, 0x3dcc, -+ 0x3dc1, 0x3dc1, 0x3dc1, 0x3dc1, 0x007c, 0x700c, 0x0079, 0x3dd0, -+ 0x3dd5, 0x3e1a, 0x3e1a, 0x3e1b, 0x3e1b, 0x7830, 0x7930, 0xa106, -+ 0x0040, 0x3ddf, 0x7830, 0x7930, 0xa106, 0x00c0, 0x3e05, 0x7030, -+ 0xa10a, 0x0040, 0x3e05, 0x00c8, 0x3de7, 0x712c, 0xa10a, 0xa18a, -+ 0x0002, 0x00c8, 0x3e06, 0x1078, 0x130c, 0x0040, 0x3e05, 0x2d00, -+ 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, 0x7057, 0x0000, 0x127e, -+ 0x007e, 0x2091, 0x8000, 0x2009, 0x7959, 0x2104, 0xc085, 0x200a, -+ 0x007f, 0x700e, 0x127f, 0x1078, 0x1391, 0x007c, 0x1078, 0x130c, -+ 0x0040, 0x3e05, 0x2d00, 0x705a, 0x1078, 0x130c, 0x00c0, 0x3e12, -+ 0x0078, 0x3df1, 0x2d00, 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, -+ 0x0078, 0x3df5, 0x007c, 0x007c, 0x3e2d, 0x3e2e, 0x3e65, 0x3e66, -+ 0x3e1a, 0x3e9c, 0x3ea1, 0x3ed8, 0x3ed9, 0x3ef4, 0x3ef5, 0x3ef6, -+ 0x3ef7, 0x3ef8, 0x3ef9, 0x3f62, 0x3f8c, 0x007c, 0x700c, 0x0079, -+ 0x3e31, 0x3e36, 0x3e39, 0x3e49, 0x3e64, 0x3e64, 0x1078, 0x3dcd, -+ 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e, 0x1078, 0x426e, -+ 0x0040, 0x3e46, 0x2091, 0x8000, 0x1078, 0x3dcd, 0x0d7f, 0x0078, -+ 0x3e52, 0x127e, 0x8001, 0x700e, 0x1078, 0x426e, 0x7058, 0x2068, -+ 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, -+ 0x00ff, 0xa08a, 0x0020, 0x00c8, 0x3e61, 0x1079, 0x3e7c, 0x127f, -+ 0x007c, 0x127f, 0x1078, 0x3efa, 0x007c, 0x007c, 0x007c, 0x0e7e, -+ 0x2071, 0x77cd, 0x700c, 0x0079, 0x3e6d, 0x3e72, 0x3e72, 0x3e72, -+ 0x3e74, 0x3e78, 0x0e7f, 0x007c, 0x700f, 0x0001, 0x0078, 0x3e7a, -+ 0x700f, 0x0002, 0x0e7f, 0x007c, 0x3efa, 0x3efa, 0x3f16, 0x3efa, -+ 0x4001, 0x3efa, 0x3efa, 0x3efa, 0x3efa, 0x3efa, 0x3f16, 0x4040, -+ 0x408a, 0x40e3, 0x40f7, 0x3efa, 0x3efa, 0x3f32, 0x3f16, 0x3efa, -+ 0x3efa, 0x3f48, 0x4182, 0x41a0, 0x3efa, 0x3f32, 0x3efa, 0x3efa, -+ 0x3efa, 0x3efa, 0x3f48, 0x41a0, 0x7020, 0x2068, 0x1078, 0x1340, -+ 0x007c, 0x700c, 0x0079, 0x3ea4, 0x3ea9, 0x3eac, 0x3ebc, 0x3ed7, -+ 0x3ed7, 0x1078, 0x3dcd, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, -+ 0x007e, 0x1078, 0x426e, 0x0040, 0x3eb9, 0x2091, 0x8000, 0x1078, -+ 0x3dcd, 0x0d7f, 0x0078, 0x3ec5, 0x127e, 0x8001, 0x700e, 0x1078, -+ 0x426e, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, -+ 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a, 0x00c8, 0x3ed4, -+ 0x1079, 0x3eda, 0x127f, 0x007c, 0x127f, 0x1078, 0x3efa, 0x007c, -+ 0x007c, 0x007c, 0x3efa, 0x3f16, 0x3feb, 0x3efa, 0x3f16, 0x3efa, -+ 0x3f16, 0x3f16, 0x3efa, 0x3f16, 0x3feb, 0x3f16, 0x3f16, 0x3f16, -+ 0x3f16, 0x3f16, 0x3efa, 0x3f16, 0x3feb, 0x3efa, 0x3efa, 0x3f16, -+ 0x3efa, 0x3efa, 0x3efa, 0x3f16, 0x007c, 0x007c, 0x007c, 0x007c, -+ 0x007c, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, -+ 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3b92, 0x127f, 0x007c, -+ 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x127e, -+ 0x2091, 0x8000, 0x1078, 0x3b92, 0x127f, 0x007c, 0x7007, 0x0001, -+ 0x6838, 0xa084, 0x00ff, 0xc0ed, 0x683a, 0x127e, 0x2091, 0x8000, -+ 0x1078, 0x3b92, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, -+ 0x00ff, 0xc0dd, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3b92, -+ 0x127f, 0x007c, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0040, 0x3f08, -+ 0x8001, 0x00c0, 0x3f3f, 0x7007, 0x0001, 0x0078, 0x3fc8, 0x7007, -+ 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x3fc8, 0x007c, -+ 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, -+ 0x20a1, 0x77f8, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x00c8, -+ 0x3f24, 0x6884, 0xa08a, 0x0003, 0x00c8, 0x3f24, 0xa080, 0x3fb9, -+ 0x2004, 0x70c6, 0x7010, 0xa015, 0x0040, 0x3fac, 0x1078, 0x130c, -+ 0x00c0, 0x3f6d, 0x7007, 0x000f, 0x007c, 0x2d00, 0x7022, 0x70c4, -+ 0x2060, 0x6000, 0x6836, 0x6004, 0xad00, 0x7096, 0x6008, 0xa20a, -+ 0x00c8, 0x3f7c, 0xa00e, 0x2200, 0x7112, 0x620c, 0x8003, 0x800b, -+ 0xa296, 0x0004, 0x0040, 0x3f85, 0xa108, 0x719a, 0x810b, 0x719e, -+ 0xae90, 0x0022, 0x1078, 0x1377, 0x7090, 0xa08e, 0x0100, 0x0040, -+ 0x3fa0, 0xa086, 0x0200, 0x0040, 0x3f98, 0x7007, 0x0010, 0x007c, -+ 0x7020, 0x2068, 0x1078, 0x1340, 0x7014, 0x2068, 0x0078, 0x3f24, -+ 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000, 0x2d08, 0x2068, -+ 0x6906, 0x711a, 0x0078, 0x3f62, 0x7014, 0x2068, 0x7007, 0x0001, -+ 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0040, 0x41bd, 0x0078, -+ 0x3fc8, 0x3fbc, 0x3fc0, 0x3fc4, 0x0002, 0x0011, 0x0007, 0x0004, -+ 0x000a, 0x000f, 0x0005, 0x0006, 0x0012, 0x000f, 0x0005, 0x0006, -+ 0x2009, 0x772c, 0x210c, 0x81ff, 0x00c0, 0x3fe5, 0x6838, 0xa084, -+ 0x00ff, 0x683a, 0x6853, 0x0000, 0x1078, 0x3691, 0x00c0, 0x3fd9, -+ 0x007c, 0x1078, 0x3c22, 0x127e, 0x2091, 0x8000, 0x1078, 0x6c54, -+ 0x1078, 0x3b92, 0x127f, 0x0078, 0x3fd8, 0x2001, 0x0028, 0x2009, -+ 0x0000, 0x0078, 0x3fd9, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, -+ 0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x3ffa, 0x7007, 0x0006, -+ 0x0078, 0x4000, 0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x107a, -+ 0x007c, 0x7007, 0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, -+ 0xa084, 0x00ff, 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x402a, -+ 0x2009, 0x0000, 0x20a9, 0x007e, 0xa096, 0x0002, 0x0040, 0x402a, -+ 0xa005, 0x00c0, 0x403d, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078, -+ 0x384c, 0x00c0, 0x403d, 0x067e, 0x6e50, 0x1078, 0x3915, 0x067f, -+ 0x0078, 0x403d, 0x047e, 0x2011, 0x770c, 0x2224, 0xc484, 0xc48c, -+ 0x2412, 0x047f, 0x0c7e, 0x1078, 0x384c, 0x00c0, 0x4039, 0x1078, -+ 0x3a94, 0x8108, 0x00f0, 0x4033, 0x0c7f, 0x1078, 0x1340, 0x007c, -+ 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0x7752, 0x2004, -+ 0xd0a4, 0x0040, 0x4081, 0x2009, 0x0000, 0x1078, 0x428a, 0x6100, -+ 0xd184, 0x0040, 0x4066, 0x6858, 0xa084, 0x00ff, 0x00c0, 0x4084, -+ 0x6000, 0xd084, 0x0040, 0x4081, 0x6004, 0xa005, 0x00c0, 0x4087, -+ 0x6003, 0x0000, 0x600b, 0x0000, 0x0078, 0x407e, 0x2011, 0x0001, -+ 0x6860, 0xa005, 0x00c0, 0x406e, 0x2001, 0x001e, 0x8000, 0x6016, -+ 0x6858, 0xa084, 0x00ff, 0x0040, 0x4081, 0x6006, 0x6858, 0x8007, -+ 0xa084, 0x00ff, 0x0040, 0x4081, 0x600a, 0x6202, 0x127f, 0x0078, -+ 0x425d, 0x127f, 0x0078, 0x4255, 0x127f, 0x0078, 0x424d, 0x127f, -+ 0x0078, 0x4251, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, -+ 0x7752, 0x2004, 0xd0a4, 0x0040, 0x40e0, 0x2009, 0x0000, 0x1078, -+ 0x428a, 0x6000, 0xa084, 0x0001, 0x0040, 0x40e0, 0x6204, 0x6308, -+ 0x6c48, 0xa484, 0x0003, 0x0040, 0x40b8, 0x6958, 0xa18c, 0x00ff, -+ 0x8001, 0x00c0, 0x40b1, 0x2100, 0xa210, 0x0048, 0x40dd, 0x0078, -+ 0x40b8, 0x8001, 0x00c0, 0x40dd, 0x2100, 0xa212, 0x0048, 0x40dd, -+ 0xa484, 0x000c, 0x0040, 0x40d2, 0x6958, 0x810f, 0xa18c, 0x00ff, -+ 0xa082, 0x0004, 0x00c0, 0x40ca, 0x2100, 0xa318, 0x0048, 0x40dd, -+ 0x0078, 0x40d2, 0xa082, 0x0004, 0x00c0, 0x40dd, 0x2100, 0xa31a, -+ 0x0048, 0x40dd, 0x6860, 0xa005, 0x0040, 0x40d8, 0x8000, 0x6016, -+ 0x6206, 0x630a, 0x127f, 0x0078, 0x425d, 0x127f, 0x0078, 0x4259, -+ 0x127f, 0x0078, 0x4255, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, -+ 0x2009, 0x0000, 0x1078, 0x428a, 0x6308, 0x8318, 0x0048, 0x40f4, -+ 0x630a, 0x127f, 0x0078, 0x426b, 0x127f, 0x0078, 0x4259, 0x127e, -+ 0x0c7e, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0040, -+ 0x410d, 0x2009, 0x0000, 0x0c7e, 0x1078, 0x4727, 0x6000, 0x2001, -+ 0xfcff, 0x6002, 0x0c7f, 0x0078, 0x4144, 0x6858, 0xa005, 0x0040, -+ 0x4159, 0x685c, 0xa065, 0x0040, 0x4155, 0x2001, 0x772c, 0x2004, -+ 0xa005, 0x0040, 0x411f, 0x1078, 0x6bb6, 0x0078, 0x4125, 0x6013, -+ 0x0400, 0x2009, 0x0041, 0x1078, 0x5d41, 0x6958, 0xa18c, 0xe600, -+ 0xa186, 0x2000, 0x0040, 0x413c, 0xa186, 0x0400, 0x0040, 0x413c, -+ 0x2009, 0x0000, 0x0c7e, 0x1078, 0x4727, 0x6000, 0xa084, 0xfdff, -+ 0x6002, 0x0c7f, 0x0078, 0x4144, 0x027e, 0x2009, 0x0000, 0x2011, -+ 0xfdff, 0x1078, 0x47d0, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x4151, -+ 0x2009, 0x0000, 0x1078, 0x4727, 0x6008, 0x8000, 0x0048, 0x4151, -+ 0x600a, 0x0c7f, 0x127f, 0x0078, 0x425d, 0x0c7f, 0x127f, 0x0078, -+ 0x4255, 0x6954, 0xa186, 0x002a, 0x00c0, 0x4165, 0x2001, 0x770c, -+ 0x200c, 0xc194, 0x2102, 0x0078, 0x4144, 0xa186, 0x0020, 0x0040, -+ 0x417a, 0xa186, 0x0029, 0x00c0, 0x4155, 0x6944, 0xa18c, 0xff00, -+ 0x810f, 0x1078, 0x384c, 0x00c0, 0x4144, 0x6000, 0xc0e4, 0x6002, -+ 0x0078, 0x4144, 0x685c, 0xa065, 0x0040, 0x4155, 0x6017, 0x0014, -+ 0x0078, 0x4144, 0x2009, 0x0000, 0x1078, 0x428a, 0x6000, 0xa084, -+ 0x0001, 0x0040, 0x419c, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048, -+ 0x4196, 0x6206, 0x2091, 0x8001, 0x0078, 0x426b, 0x2091, 0x8001, -+ 0x6853, 0x0016, 0x0078, 0x4264, 0x6853, 0x0007, 0x0078, 0x4264, -+ 0x6834, 0x8007, 0xa084, 0x00ff, 0x00c0, 0x41aa, 0x1078, 0x3f08, -+ 0x0078, 0x41bc, 0x2030, 0x8001, 0x00c0, 0x41b4, 0x7007, 0x0001, -+ 0x1078, 0x41bd, 0x0078, 0x41bc, 0x7007, 0x0006, 0x7012, 0x2d00, -+ 0x7016, 0x701a, 0x704b, 0x41bd, 0x007c, 0x0e7e, 0x2009, 0x772c, -+ 0x210c, 0x81ff, 0x00c0, 0x423f, 0x2009, 0x770c, 0x210c, 0xd194, -+ 0x00c0, 0x4249, 0x6848, 0x2070, 0xae82, 0x7e00, 0x0048, 0x422e, -+ 0x2001, 0x7715, 0x2004, 0xae02, 0x00c8, 0x422e, 0x2009, 0x0000, -+ 0x1078, 0x428a, 0x6100, 0xa184, 0x0001, 0x0040, 0x4214, 0xa184, -+ 0x0100, 0x00c0, 0x4232, 0xa184, 0x0200, 0x00c0, 0x4236, 0x601c, -+ 0xa005, 0x00c0, 0x423a, 0x711c, 0xa186, 0x0006, 0x00c0, 0x4219, -+ 0x6853, 0x0000, 0x6803, 0x0000, 0x2d08, 0x127e, 0x2091, 0x8000, -+ 0x7010, 0xa005, 0x00c0, 0x420b, 0x7112, 0x7018, 0xa065, 0x0040, -+ 0x423e, 0x6000, 0xd0e4, 0x00c0, 0x4243, 0x2e60, 0x1078, 0x4730, -+ 0x127f, 0x0e7f, 0x007c, 0x2068, 0x6800, 0xa005, 0x00c0, 0x420b, -+ 0x6902, 0x127f, 0x0e7f, 0x007c, 0x0e7f, 0x6853, 0x0006, 0x0078, -+ 0x4264, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078, 0x384c, 0x00c0, -+ 0x4244, 0x6000, 0xd0e4, 0x00c0, 0x4244, 0x711c, 0xa186, 0x0007, -+ 0x00c0, 0x422e, 0x6853, 0x0002, 0x0078, 0x4246, 0x6853, 0x0008, -+ 0x0078, 0x4246, 0x6853, 0x000e, 0x0078, 0x4246, 0x6853, 0x0017, -+ 0x0078, 0x4246, 0x6853, 0x0035, 0x0078, 0x4246, 0x127f, 0x6853, -+ 0x0028, 0x0078, 0x4246, 0x127f, 0x6853, 0x0029, 0x0e7f, 0x0078, -+ 0x4264, 0x6853, 0x002a, 0x0078, 0x4246, 0x2009, 0x003e, 0x0078, -+ 0x425f, 0x2009, 0x0004, 0x0078, 0x425f, 0x2009, 0x0006, 0x0078, -+ 0x425f, 0x2009, 0x0016, 0x0078, 0x425f, 0x2009, 0x0001, 0x6854, -+ 0xa084, 0xff00, 0xa105, 0x6856, 0x2091, 0x8000, 0x1078, 0x3b92, -+ 0x2091, 0x8001, 0x007c, 0x1078, 0x1340, 0x007c, 0x702c, 0x7130, -+ 0x8108, 0xa102, 0x0048, 0x427b, 0xa00e, 0x7034, 0x7072, 0x7038, -+ 0x7076, 0x0078, 0x4287, 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, -+ 0x4287, 0x7074, 0xa081, 0x0000, 0x7076, 0xa085, 0x0001, 0x7932, -+ 0x7132, 0x007c, 0x0d7e, 0x1078, 0x4727, 0x0d7f, 0x007c, 0x0d7e, -+ 0x2011, 0x0004, 0x2204, 0xa085, 0x8002, 0x2012, 0x0d7f, 0x007c, -+ 0x20e1, 0x0002, 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, -+ 0x0040, 0x42a6, 0xa086, 0x1000, 0x00c0, 0x42c2, 0x20e1, 0x0004, -+ 0x3d60, 0xd1bc, 0x00c0, 0x42ad, 0x3e60, 0xac84, 0x0007, 0x00c0, -+ 0x42c2, 0xac82, 0x7e00, 0x0048, 0x42c2, 0x6854, 0xac02, 0x00c8, -+ 0x42c2, 0x2009, 0x0047, 0x1078, 0x5d41, 0x7a1c, 0xd284, 0x00c0, -+ 0x4298, 0x007c, 0xa016, 0x1078, 0x156a, 0x0078, 0x42bd, 0x157e, -+ 0x137e, 0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0070, -+ 0x00c0, 0x42f0, 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0, 0x42f0, -+ 0x1078, 0x42fd, 0x0040, 0x42f0, 0x20e1, 0x3000, 0x7828, 0x7828, -+ 0x1078, 0x431b, 0x147f, 0x137f, 0x157f, 0x2009, 0x793e, 0x2104, -+ 0xa005, 0x00c0, 0x42ec, 0x007c, 0x1078, 0x4d96, 0x0078, 0x42eb, -+ 0x1078, 0x7674, 0x1078, 0x42fd, 0x20e1, 0x3000, 0x7828, 0x7828, -+ 0x147f, 0x137f, 0x157f, 0x0078, 0x42eb, 0xa484, 0x01ff, 0x687a, -+ 0xa005, 0x0040, 0x430f, 0xa080, 0x001f, 0xa084, 0x03f8, 0x80ac, -+ 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x007c, 0x20a9, -+ 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0xa085, -+ 0x0001, 0x0078, 0x430e, 0x7000, 0xa084, 0xff00, 0xa08c, 0xf000, -+ 0x8007, 0xa196, 0x0000, 0x00c0, 0x4328, 0x0078, 0x449c, 0x007c, -+ 0xa196, 0x2000, 0x00c0, 0x4339, 0x6900, 0xa18e, 0x0001, 0x00c0, -+ 0x4335, 0x1078, 0x2ec1, 0x0078, 0x4327, 0x1078, 0x4341, 0x0078, -+ 0x4327, 0xa196, 0x8000, 0x00c0, 0x4327, 0x1078, 0x4522, 0x0078, -+ 0x4327, 0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, 0x0001, -+ 0x0040, 0x434e, 0xa196, 0x0023, 0x00c0, 0x4443, 0xa08e, 0x0023, -+ 0x00c0, 0x437f, 0x1078, 0x4599, 0x0040, 0x4443, 0x7124, 0x610a, -+ 0x7030, 0xa08e, 0x0200, 0x00c0, 0x4367, 0x7034, 0xa005, 0x00c0, -+ 0x4443, 0x2009, 0x0015, 0x1078, 0x5d41, 0x0078, 0x4443, 0xa08e, -+ 0x0210, 0x00c0, 0x4371, 0x2009, 0x0015, 0x1078, 0x5d41, 0x0078, -+ 0x4443, 0xa08e, 0x0100, 0x00c0, 0x4443, 0x7034, 0xa005, 0x00c0, -+ 0x4443, 0x2009, 0x0016, 0x1078, 0x5d41, 0x0078, 0x4443, 0xa08e, -+ 0x0022, 0x00c0, 0x4443, 0x7030, 0xa08e, 0x0300, 0x00c0, 0x4390, -+ 0x7034, 0xa005, 0x00c0, 0x4443, 0x2009, 0x0017, 0x0078, 0x440f, -+ 0xa08e, 0x0500, 0x00c0, 0x439c, 0x7034, 0xa005, 0x00c0, 0x4443, -+ 0x2009, 0x0018, 0x0078, 0x440f, 0xa08e, 0x2010, 0x00c0, 0x43a4, -+ 0x2009, 0x0019, 0x0078, 0x440f, 0xa08e, 0x2110, 0x00c0, 0x43ac, -+ 0x2009, 0x001a, 0x0078, 0x440f, 0xa08e, 0x5200, 0x00c0, 0x43b8, -+ 0x7034, 0xa005, 0x00c0, 0x4443, 0x2009, 0x001b, 0x0078, 0x440f, -+ 0xa08e, 0x5000, 0x00c0, 0x43c4, 0x7034, 0xa005, 0x00c0, 0x4443, -+ 0x2009, 0x001c, 0x0078, 0x440f, 0xa08e, 0x1200, 0x00c0, 0x43d0, -+ 0x7034, 0xa005, 0x00c0, 0x4443, 0x2009, 0x0024, 0x0078, 0x440f, -+ 0xa08c, 0xff00, 0xa18e, 0x2400, 0x00c0, 0x43da, 0x2009, 0x002d, -+ 0x0078, 0x440f, 0xa08c, 0xff00, 0xa18e, 0x5300, 0x00c0, 0x43e4, -+ 0x2009, 0x002a, 0x0078, 0x440f, 0xa08e, 0x0f00, 0x00c0, 0x43ec, -+ 0x2009, 0x0020, 0x0078, 0x440f, 0xa08e, 0x5300, 0x00c0, 0x43f2, -+ 0x0078, 0x440d, 0xa08e, 0x6104, 0x00c0, 0x440d, 0x2011, 0x7c8d, -+ 0x8208, 0x2204, 0xa082, 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, -+ 0x8015, 0x211c, 0x8108, 0x2124, 0x1078, 0x2d59, 0x8108, 0x00f0, -+ 0x43ff, 0x2009, 0x0023, 0x0078, 0x440f, 0x2009, 0x001d, 0x017e, -+ 0x2011, 0x7c83, 0x2204, 0x8211, 0x220c, 0x1078, 0x207f, 0x00c0, -+ 0x4445, 0x1078, 0x3811, 0x00c0, 0x4445, 0x6612, 0x6516, 0x86ff, -+ 0x0040, 0x4435, 0x017f, 0x017e, 0xa186, 0x0017, 0x00c0, 0x4435, -+ 0x6864, 0xa606, 0x00c0, 0x4435, 0x6868, 0xa506, 0xa084, 0xff00, -+ 0x00c0, 0x4435, 0x6000, 0xc0f5, 0x6002, 0x0c7e, 0x1078, 0x5cb4, -+ 0x0040, 0x4448, 0x017f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, -+ 0x017f, 0x1078, 0x5d41, 0x0c7f, 0x007c, 0x017f, 0x0078, 0x4443, -+ 0x0c7f, 0x0078, 0x4445, 0x0e7e, 0x0d7e, 0x2028, 0x2130, 0xa696, -+ 0x00ff, 0x00c0, 0x446b, 0xa596, 0xfffd, 0x00c0, 0x445b, 0x2009, -+ 0x007f, 0x0078, 0x4498, 0xa596, 0xfffe, 0x00c0, 0x4463, 0x2009, -+ 0x007e, 0x0078, 0x4498, 0xa596, 0xfffc, 0x00c0, 0x446b, 0x2009, -+ 0x0080, 0x0078, 0x4498, 0x2011, 0x0000, 0x2021, 0x007e, 0x20a9, -+ 0x0082, 0x2071, 0x789e, 0x2e1c, 0x83ff, 0x00c0, 0x447d, 0x82ff, -+ 0x00c0, 0x448c, 0x2410, 0x0078, 0x448c, 0x2368, 0x6b10, 0x007e, -+ 0x2100, 0xa31e, 0x007f, 0x00c0, 0x448c, 0x6b14, 0xa31e, 0x00c0, -+ 0x448c, 0x2408, 0x0078, 0x4498, 0x8420, 0x8e70, 0x00f0, 0x4473, -+ 0x82ff, 0x00c0, 0x4497, 0xa085, 0x0001, 0x0078, 0x4499, 0x2208, -+ 0xa006, 0x0d7f, 0x0e7f, 0x007c, 0xa084, 0x0007, 0x0079, 0x44a1, -+ 0x007c, 0x44a9, 0x44a9, 0x44a9, 0x44a9, 0x44a9, 0x44aa, 0x44c3, -+ 0x450b, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x44c2, 0x7120, 0x2160, -+ 0xac8c, 0x0007, 0x00c0, 0x44c2, 0xac8a, 0x7e00, 0x0048, 0x44c2, -+ 0x6854, 0xac02, 0x00c8, 0x44c2, 0x7124, 0x610a, 0x2009, 0x0046, -+ 0x1078, 0x5d41, 0x007c, 0x0c7e, 0x7110, 0xd1bc, 0x00c0, 0x4509, -+ 0x2011, 0x7c83, 0x2204, 0x8211, 0x220c, 0x1078, 0x207f, 0x00c0, -+ 0x4509, 0x1078, 0x384c, 0x00c0, 0x4509, 0x6204, 0xa294, 0xff00, -+ 0x8217, 0xa286, 0x0006, 0x00c0, 0x44ee, 0x0c7e, 0x1078, 0x5cb4, -+ 0x017f, 0x0040, 0x4509, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, -+ 0x2009, 0x0044, 0x1078, 0x5d41, 0x0078, 0x4509, 0x0c7e, 0x1078, -+ 0x5cb4, 0x017f, 0x0040, 0x4509, 0x611a, 0x601f, 0x0004, 0x7120, -+ 0x610a, 0xa286, 0x0004, 0x00c0, 0x4501, 0x6007, 0x0005, 0x0078, -+ 0x4503, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x498e, 0x1078, -+ 0x4d96, 0x0c7f, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4521, 0x7020, -+ 0x2060, 0xac84, 0x0007, 0x00c0, 0x4521, 0xac82, 0x7e00, 0x0048, -+ 0x4521, 0x6854, 0xac02, 0x00c8, 0x4521, 0x2009, 0x0045, 0x1078, -+ 0x5d41, 0x007c, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, -+ 0x00c0, 0x4532, 0xa084, 0x000f, 0xa08a, 0x0006, 0x10c8, 0x12cd, -+ 0x1079, 0x4533, 0x007c, 0x4539, 0x453a, 0x4539, 0x4539, 0x457b, -+ 0x458a, 0x007c, 0x7110, 0xd1bc, 0x00c0, 0x457a, 0x700c, 0x7108, -+ 0x1078, 0x207f, 0x00c0, 0x457a, 0x1078, 0x3811, 0x00c0, 0x457a, -+ 0x6612, 0x6516, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, -+ 0x00c0, 0x4563, 0x0c7e, 0x1078, 0x5cb4, 0x017f, 0x0040, 0x457a, -+ 0x611a, 0x601f, 0x0005, 0x7120, 0x610a, 0x2009, 0x0088, 0x1078, -+ 0x5d41, 0x0078, 0x457a, 0x0c7e, 0x1078, 0x5cb4, 0x017f, 0x0040, -+ 0x457a, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, -+ 0x00c0, 0x4576, 0x2009, 0x0005, 0x0078, 0x4578, 0x2009, 0x0001, -+ 0x1078, 0x5d41, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4589, 0x1078, -+ 0x4599, 0x0040, 0x4589, 0x7124, 0x610a, 0x2009, 0x0089, 0x1078, -+ 0x5d41, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4598, 0x1078, 0x4599, -+ 0x0040, 0x4598, 0x7124, 0x610a, 0x2009, 0x008a, 0x1078, 0x5d41, -+ 0x007c, 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0, 0x45ac, 0xac82, -+ 0x7e00, 0x0048, 0x45ac, 0x2001, 0x7715, 0x2004, 0xac02, 0x00c8, -+ 0x45ac, 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x45ab, 0x2071, -+ 0x7949, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7012, -+ 0x7017, 0x7e00, 0x7007, 0x0000, 0x7026, 0x702b, 0x56a9, 0x7032, -+ 0x7037, 0x56ea, 0x703b, 0x0002, 0x703f, 0x0000, 0x007c, 0x2071, -+ 0x7949, 0x00e0, 0x4676, 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, -+ 0x00c0, 0x463f, 0x700f, 0x0361, 0x7007, 0x0001, 0x127e, 0x2091, -+ 0x8000, 0x7138, 0x8109, 0x713a, 0x00c0, 0x463d, 0x703b, 0x0002, -+ 0x2009, 0x0100, 0x2104, 0xa082, 0x0003, 0x00c8, 0x463d, 0x703c, -+ 0xa086, 0x0001, 0x00c0, 0x461a, 0x0d7e, 0x2069, 0x0140, 0x6804, -+ 0xa084, 0x4000, 0x0040, 0x45f8, 0x6803, 0x1000, 0x0078, 0x45ff, -+ 0x6804, 0xa084, 0x1000, 0x0040, 0x45ff, 0x6803, 0x0100, 0x6803, -+ 0x0000, 0x703f, 0x0000, 0x2069, 0x7936, 0x6804, 0xa082, 0x0006, -+ 0x00c0, 0x460c, 0x6807, 0x0000, 0x6830, 0xa082, 0x0003, 0x00c0, -+ 0x4613, 0x6833, 0x0000, 0x1078, 0x4d96, 0x1078, 0x4e56, 0x0d7f, -+ 0x0078, 0x463d, 0x0d7e, 0x2069, 0x7700, 0x6944, 0x6860, 0xa102, -+ 0x00c8, 0x463c, 0x2069, 0x7936, 0x6804, 0xa086, 0x0000, 0x00c0, -+ 0x463c, 0x6830, 0xa086, 0x0000, 0x00c0, 0x463c, 0x703f, 0x0001, -+ 0x6807, 0x0006, 0x6833, 0x0003, 0x2069, 0x0100, 0x6830, 0x689e, -+ 0x2069, 0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078, 0x4642, 0x127e, -+ 0x2091, 0x8000, 0x7024, 0xa00d, 0x0040, 0x4653, 0x7020, 0x8001, -+ 0x7022, 0x00c0, 0x4653, 0x7023, 0x0009, 0x8109, 0x7126, 0x00c0, -+ 0x4653, 0x7028, 0x107a, 0x7030, 0xa00d, 0x0040, 0x4664, 0x702c, -+ 0x8001, 0x702e, 0x00c0, 0x4664, 0x702f, 0x0009, 0x8109, 0x7132, -+ 0x00c0, 0x4664, 0x7034, 0x107a, 0x7018, 0xa00d, 0x0040, 0x4675, -+ 0x7008, 0x8001, 0x700a, 0x00c0, 0x4675, 0x700b, 0x0009, 0x8109, -+ 0x711a, 0x00c0, 0x4675, 0x701c, 0x107a, 0x127f, 0x7004, 0x0079, -+ 0x4679, 0x46a0, 0x46a1, 0x46bd, 0x0e7e, 0x2071, 0x7949, 0x7018, -+ 0xa005, 0x00c0, 0x4687, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, -+ 0x007c, 0x0e7e, 0x007e, 0x2071, 0x7949, 0x701c, 0xa206, 0x00c0, -+ 0x4693, 0x701a, 0x701e, 0x007f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, -+ 0x7949, 0x6088, 0xa102, 0x0048, 0x469e, 0x618a, 0x0e7f, 0x007c, -+ 0x007c, 0x7110, 0x1078, 0x384c, 0x00c0, 0x46b3, 0x6088, 0x8001, -+ 0x0048, 0x46b3, 0x608a, 0x00c0, 0x46b3, 0x127e, 0x2091, 0x8000, -+ 0x1078, 0x4d96, 0x127f, 0x8108, 0xa182, 0x00ff, 0x0048, 0x46bb, -+ 0xa00e, 0x7007, 0x0002, 0x7112, 0x007c, 0x7014, 0x2060, 0x127e, -+ 0x2091, 0x8000, 0x6014, 0xa005, 0x0040, 0x46ec, 0x8001, 0x6016, -+ 0x00c0, 0x46ec, 0x611c, 0xa186, 0x0003, 0x0040, 0x46d3, 0xa186, -+ 0x0006, 0x00c0, 0x46ea, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, -+ 0x0048, 0x46ea, 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048, -+ 0x46e3, 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, -+ 0x0078, 0x46ec, 0x1078, 0x68e3, 0x127f, 0xac88, 0x0008, 0x7116, -+ 0x2001, 0x7716, 0x2004, 0xa102, 0x0048, 0x46fa, 0x7017, 0x7e00, -+ 0x7007, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7949, 0x7027, 0x07d0, -+ 0x7023, 0x0009, 0x703b, 0x0002, 0x0e7f, 0x007c, 0x2001, 0x7952, -+ 0x2003, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7949, 0x7033, 0x07d0, -+ 0x702f, 0x0009, 0x0e7f, 0x007c, 0x2011, 0x7955, 0x2013, 0x0000, -+ 0x007c, 0x0e7e, 0x2071, 0x7949, 0x711a, 0x721e, 0x700b, 0x0009, -+ 0x0e7f, 0x007c, 0x0c7e, 0x2061, 0x79da, 0x0c7f, 0x007c, 0xa184, -+ 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x79da, 0x2060, 0x007c, -+ 0x6854, 0xa08a, 0x199a, 0x0048, 0x4737, 0x2001, 0x1999, 0xa005, -+ 0x00c0, 0x4747, 0x6944, 0x0c7e, 0x1078, 0x4727, 0x6014, 0x0c7f, -+ 0xa005, 0x00c0, 0x474c, 0x2001, 0x001e, 0x0078, 0x474c, 0xa08e, -+ 0xffff, 0x00c0, 0x474c, 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, -+ 0x6116, 0x684c, 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x4787, -+ 0xd0b4, 0x00c0, 0x4763, 0xd0bc, 0x00c0, 0x4775, 0x2009, 0x0006, -+ 0x1078, 0x47aa, 0x007c, 0xd0fc, 0x0040, 0x4770, 0xa084, 0x0003, -+ 0xa08e, 0x0003, 0x0040, 0x47a3, 0xa08e, 0x0000, 0x00c0, 0x47a3, -+ 0x2009, 0x0043, 0x1078, 0x5d41, 0x007c, 0xd0fc, 0x0040, 0x4782, -+ 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x47a3, 0xa08e, 0x0000, -+ 0x00c0, 0x47a3, 0x2009, 0x0042, 0x1078, 0x5d41, 0x007c, 0xd0fc, -+ 0x0040, 0x4799, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x47a3, -+ 0xa08e, 0x0002, 0x0040, 0x479d, 0x2009, 0x0041, 0x1078, 0x5d41, -+ 0x007c, 0x1078, 0x47a8, 0x0078, 0x4798, 0x2009, 0x0043, 0x1078, -+ 0x5d41, 0x0078, 0x4798, 0x2009, 0x0004, 0x1078, 0x47aa, 0x007c, -+ 0x2009, 0x0001, 0x6010, 0xa0ec, 0xf000, 0x0040, 0x47cf, 0x2068, -+ 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0, 0x47c9, 0x694c, -+ 0xa18c, 0x8100, 0xa18e, 0x8100, 0x00c0, 0x47c9, 0x0c7e, 0x2009, -+ 0x0000, 0x1078, 0x4727, 0x6204, 0x8210, 0x0048, 0x47c8, 0x6206, -+ 0x0c7f, 0x1078, 0x3b92, 0x6010, 0xa06d, 0x10c0, 0x4730, 0x007c, -+ 0x157e, 0x0c7e, 0x20a9, 0x0010, 0x2061, 0x79da, 0x6000, 0x81ff, -+ 0x0040, 0x47dd, 0xa205, 0x0078, 0x47de, 0xa204, 0x6002, 0xace0, -+ 0x0008, 0x00f0, 0x47d6, 0x0c7f, 0x157f, 0x007c, 0x6808, 0xa005, -+ 0x0040, 0x47ee, 0x8001, 0x680a, 0xa085, 0x0001, 0x007c, 0x127e, -+ 0x2091, 0x2200, 0x2079, 0x7936, 0x127f, 0x0d7e, 0x2069, 0x7936, -+ 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001, 0x206a, -+ 0x0d7f, 0x007c, 0x0c7e, 0x6027, 0x0001, 0x7804, 0xa084, 0x0007, -+ 0x0079, 0x480a, 0x4814, 0x4839, 0x4894, 0x481a, 0x4839, 0x4812, -+ 0x4812, 0x4812, 0x1078, 0x12cd, 0x1078, 0x4706, 0x1078, 0x4d96, -+ 0x0c7f, 0x007c, 0x62c0, 0x82ff, 0x00c0, 0x4820, 0x0c7f, 0x007c, -+ 0x2011, 0x3558, 0x1078, 0x4689, 0x7828, 0xa092, 0x0002, 0x00c8, -+ 0x482f, 0x8000, 0x782a, 0x1078, 0x3588, 0x0078, 0x481e, 0x1078, -+ 0x3558, 0x7807, 0x0003, 0x7827, 0x0000, 0x782b, 0x0000, 0x0078, -+ 0x481e, 0x1078, 0x4706, 0x3c00, 0x007e, 0x2011, 0x0209, 0x20e1, -+ 0x4000, 0x2214, 0x007f, 0x20e0, 0x82ff, 0x0040, 0x4857, 0x62c0, -+ 0x82ff, 0x00c0, 0x4857, 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, -+ 0x12cd, 0x2009, 0x0013, 0x1078, 0x5d41, 0x0c7f, 0x007c, 0x3900, -+ 0xa082, 0x7a7a, 0x00c8, 0x485e, 0x1078, 0x5c44, 0x0c7e, 0x7824, -+ 0xa065, 0x1040, 0x12cd, 0x7804, 0xa086, 0x0004, 0x0040, 0x48d9, -+ 0x7828, 0xa092, 0x2710, 0x00c8, 0x4874, 0x8000, 0x782a, 0x0c7f, -+ 0x1078, 0x568e, 0x0078, 0x4855, 0x6104, 0xa186, 0x0003, 0x00c0, -+ 0x488b, 0x0e7e, 0x2071, 0x7700, 0x70c8, 0x0e7f, 0xd08c, 0x0040, -+ 0x488b, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071, 0x7700, 0x1078, -+ 0x3591, 0x0e7f, 0x0c7f, 0x1078, 0x76c7, 0x2009, 0x0014, 0x1078, -+ 0x5d41, 0x0c7f, 0x0078, 0x4855, 0x2001, 0x7952, 0x2003, 0x0000, -+ 0x62c0, 0x82ff, 0x00c0, 0x48a8, 0x782b, 0x0000, 0x7824, 0xa065, -+ 0x1040, 0x12cd, 0x2009, 0x0013, 0x1078, 0x5d8f, 0x0c7f, 0x007c, -+ 0x0c7e, 0x0d7e, 0x3900, 0xa082, 0x7a7a, 0x00c8, 0x48b1, 0x1078, -+ 0x5c44, 0x7824, 0xa005, 0x1040, 0x12cd, 0x781c, 0xa06d, 0x1040, -+ 0x12cd, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160, 0x1078, 0x5d1a, -+ 0x693c, 0x81ff, 0x1040, 0x12cd, 0x8109, 0x693e, 0x6854, 0xa015, -+ 0x0040, 0x48cd, 0x7a1e, 0x0078, 0x48cf, 0x7918, 0x791e, 0x7807, -+ 0x0000, 0x7827, 0x0000, 0x0d7f, 0x0c7f, 0x1078, 0x4d96, 0x0078, -+ 0x48a6, 0x6104, 0xa186, 0x0002, 0x0040, 0x48e4, 0xa186, 0x0004, -+ 0x0040, 0x48e4, 0x0078, 0x4868, 0x7808, 0xac06, 0x0040, 0x4868, -+ 0x1078, 0x4c9d, 0x1078, 0x498e, 0x0c7f, 0x1078, 0x4d96, 0x0078, -+ 0x4855, 0x0c7e, 0x6027, 0x0002, 0x2011, 0x7955, 0x2013, 0x0000, -+ 0x62c8, 0x82ff, 0x00c0, 0x490b, 0x62c4, 0x82ff, 0x00c0, 0x490b, -+ 0x793c, 0xa1e5, 0x0000, 0x0040, 0x4909, 0x2009, 0x0049, 0x1078, -+ 0x5d41, 0x0c7f, 0x007c, 0x3908, 0xa192, 0x7a7a, 0x00c8, 0x4912, -+ 0x1078, 0x5c44, 0x6017, 0x0010, 0x793c, 0x81ff, 0x0040, 0x4909, -+ 0x7944, 0xa192, 0x7530, 0x00c8, 0x4931, 0x8108, 0x7946, 0x1078, -+ 0x470b, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, -+ 0x492d, 0x6017, 0x0012, 0x0078, 0x4909, 0x6017, 0x0016, 0x0078, -+ 0x4909, 0x037e, 0x2019, 0x0001, 0x1078, 0x5880, 0x037f, 0x1078, -+ 0x76c7, 0x793c, 0x2160, 0x2009, 0x004a, 0x1078, 0x5d41, 0x0078, -+ 0x4909, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, -+ 0x0000, 0x2c08, 0x2061, 0x7936, 0x6020, 0x8000, 0x6022, 0x6010, -+ 0xa005, 0x0040, 0x495c, 0xa080, 0x0003, 0x2102, 0x6112, 0x127f, -+ 0x0c7f, 0x017f, 0x007f, 0x007c, 0x6116, 0x6112, 0x0078, 0x4957, -+ 0x0d7e, 0x2069, 0x7936, 0x6000, 0xd0d4, 0x0040, 0x4975, 0x6820, -+ 0x8000, 0x6822, 0xa086, 0x0001, 0x00c0, 0x4970, 0x2c00, 0x681e, -+ 0x6804, 0xa084, 0x0007, 0x0079, 0x4d9e, 0xc0d5, 0x6002, 0x6818, -+ 0xa005, 0x0040, 0x4987, 0x6056, 0x605b, 0x0000, 0x007e, 0x2c00, -+ 0x681a, 0x0d7f, 0x685a, 0x2069, 0x7936, 0x0078, 0x4967, 0x6056, -+ 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078, 0x4967, 0x007e, 0x017e, -+ 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, -+ 0x7936, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0040, 0x49a9, -+ 0xa080, 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f, 0x007f, -+ 0x007c, 0x610e, 0x610a, 0x0078, 0x49a4, 0x0c7e, 0x600f, 0x0000, -+ 0x2c08, 0x2061, 0x7936, 0x6034, 0xa005, 0x0040, 0x49bd, 0xa080, -+ 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136, 0x0078, -+ 0x49bb, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, -+ 0x127e, 0x2071, 0x7936, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, -+ 0x8cff, 0x0040, 0x4a23, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, -+ 0x00c0, 0x4a1e, 0x703c, 0xac06, 0x00c0, 0x49e3, 0x6003, 0x000a, -+ 0x630a, 0x0078, 0x4a1e, 0x7038, 0xac36, 0x00c0, 0x49e9, 0x660c, -+ 0x763a, 0x7034, 0xac36, 0x00c0, 0x49f7, 0x2c00, 0xaf36, 0x0040, -+ 0x49f5, 0x2f00, 0x7036, 0x0078, 0x49f7, 0x7037, 0x0000, 0x660c, -+ 0x067e, 0x2c00, 0xaf06, 0x0040, 0x4a00, 0x7e0e, 0x0078, 0x4a01, -+ 0x2678, 0x600f, 0x0000, 0x1078, 0x6a58, 0x0040, 0x4a19, 0x6010, -+ 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x4a2c, 0x6837, 0x0103, -+ 0x6b4a, 0x6847, 0x0000, 0x1078, 0x6c54, 0x1078, 0x3b92, 0x1078, -+ 0x6ba9, 0x1078, 0x6bb6, 0x0c7f, 0x0078, 0x49d0, 0x2c78, 0x600c, -+ 0x2060, 0x0078, 0x49d0, 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, -+ 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, -+ 0x4a0e, 0x1078, 0x75fd, 0x0078, 0x4a19, 0x007e, 0x067e, 0x0c7e, -+ 0x0d7e, 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091, 0x8000, 0x2079, -+ 0x7936, 0x7838, 0xa065, 0x0040, 0x4a6c, 0x600c, 0x007e, 0x600f, -+ 0x0000, 0x783c, 0xac06, 0x00c0, 0x4a53, 0x6003, 0x000a, 0x630a, -+ 0x2c30, 0x0078, 0x4a69, 0x1078, 0x6a58, 0x0040, 0x4a67, 0x6010, -+ 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x4a75, 0x6837, 0x0103, -+ 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3b92, 0x1078, 0x6ba9, 0x1078, -+ 0x6bb6, 0x007f, 0x0078, 0x4a42, 0x7e3a, 0x7e36, 0x127f, 0x0f7f, -+ 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c, 0xa086, 0x0006, -+ 0x00c0, 0x4a5e, 0x1078, 0x75fd, 0x0078, 0x4a67, 0x027e, 0x1078, -+ 0x4a92, 0x1078, 0x4b2b, 0x027f, 0x007c, 0x0f7e, 0x127e, 0x2079, -+ 0x7936, 0x2091, 0x8000, 0x1078, 0x4bc2, 0x1078, 0x4c2a, 0x127f, -+ 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, -+ 0x127e, 0x2091, 0x8000, 0x2071, 0x7936, 0x7614, 0x2660, 0x2678, -+ 0x8cff, 0x0040, 0x4b1a, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, -+ 0x00c0, 0x4b15, 0x7024, 0xac06, 0x00c0, 0x4ad8, 0x2069, 0x0100, -+ 0x68c0, 0xa005, 0x0040, 0x4ad3, 0x1078, 0x569c, 0x68c3, 0x0000, -+ 0x1078, 0x5b4a, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, -+ 0xa384, 0x1000, 0x0040, 0x4ac8, 0x6803, 0x0100, 0x6803, 0x0000, -+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4ad0, 0x6827, 0x0001, -+ 0x037f, 0x0078, 0x4ad8, 0x6003, 0x0009, 0x630a, 0x0078, 0x4b15, -+ 0x7014, 0xac36, 0x00c0, 0x4ade, 0x660c, 0x7616, 0x7010, 0xac36, -+ 0x00c0, 0x4aec, 0x2c00, 0xaf36, 0x0040, 0x4aea, 0x2f00, 0x7012, -+ 0x0078, 0x4aec, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, -+ 0x0040, 0x4af5, 0x7e0e, 0x0078, 0x4af6, 0x2678, 0x600f, 0x0000, -+ 0x6010, 0x2068, 0x1078, 0x6a58, 0x0040, 0x4b0e, 0x601c, 0xa086, -+ 0x0003, 0x00c0, 0x4b22, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, -+ 0x1078, 0x6c54, 0x1078, 0x3b92, 0x1078, 0x6ba9, 0x1078, 0x6bb6, -+ 0x1078, 0x5a1a, 0x0c7f, 0x0078, 0x4aa0, 0x2c78, 0x600c, 0x2060, -+ 0x0078, 0x4aa0, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, -+ 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x4b03, 0x1078, -+ 0x75fd, 0x0078, 0x4b0e, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, -+ 0xa280, 0x7820, 0x2004, 0xa065, 0x0040, 0x4bbe, 0x0f7e, 0x0e7e, -+ 0x0d7e, 0x067e, 0x2071, 0x7936, 0x6654, 0x7018, 0xac06, 0x00c0, -+ 0x4b42, 0x761a, 0x701c, 0xac06, 0x00c0, 0x4b4e, 0x86ff, 0x00c0, -+ 0x4b4d, 0x7018, 0x701e, 0x0078, 0x4b4e, 0x761e, 0x6058, 0xa07d, -+ 0x0040, 0x4b53, 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x4b59, 0x2f00, -+ 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, -+ 0x6002, 0x1078, 0x37c5, 0x0040, 0x4bba, 0x7624, 0x86ff, 0x0040, -+ 0x4baa, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x4baa, 0x0d7e, -+ 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4ba1, 0x1078, 0x569c, -+ 0x68c3, 0x0000, 0x1078, 0x5b4a, 0x7027, 0x0000, 0x037e, 0x2069, -+ 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x4b8a, 0x6803, 0x0100, -+ 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4b92, -+ 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, -+ 0x4b9b, 0x8001, 0x603e, 0x2660, 0x1078, 0x6bb6, 0x0c7f, 0x0078, -+ 0x4baa, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, -+ 0x0078, 0x4b61, 0x8dff, 0x0040, 0x4bb6, 0x6837, 0x0103, 0x6b4a, -+ 0x6847, 0x0000, 0x1078, 0x6c54, 0x1078, 0x3b92, 0x1078, 0x5a1a, -+ 0x0078, 0x4b61, 0x067f, 0x0d7f, 0x0e7f, 0x0f7f, 0x127f, 0x007f, -+ 0x0c7f, 0x007c, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x0000, -+ 0x7814, 0xa065, 0x0040, 0x4c1a, 0x600c, 0x007e, 0x600f, 0x0000, -+ 0x7824, 0xac06, 0x00c0, 0x4bff, 0x2069, 0x0100, 0x68c0, 0xa005, -+ 0x0040, 0x4bf9, 0x1078, 0x569c, 0x68c3, 0x0000, 0x1078, 0x5b4a, -+ 0x7827, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, -+ 0x0040, 0x4bee, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, -+ 0x6824, 0xd084, 0x0040, 0x4bf6, 0x6827, 0x0001, 0x037f, 0x0078, -+ 0x4bff, 0x6003, 0x0009, 0x630a, 0x2c30, 0x0078, 0x4c17, 0x6010, -+ 0x2068, 0x1078, 0x6a58, 0x0040, 0x4c13, 0x601c, 0xa086, 0x0003, -+ 0x00c0, 0x4c21, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, -+ 0x3b92, 0x1078, 0x6ba9, 0x1078, 0x6bb6, 0x1078, 0x5a1a, 0x007f, -+ 0x0078, 0x4bc9, 0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, -+ 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x4c0a, 0x1078, 0x75fd, -+ 0x0078, 0x4c13, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x7818, 0xa065, -+ 0x0040, 0x4c96, 0x6054, 0x007e, 0x6057, 0x0000, 0x605b, 0x0000, -+ 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x37c5, 0x0040, 0x4c93, -+ 0x7e24, 0x86ff, 0x0040, 0x4c85, 0xa680, 0x0004, 0x2004, 0xad06, -+ 0x00c0, 0x4c85, 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, -+ 0x4c7c, 0x1078, 0x569c, 0x68c3, 0x0000, 0x1078, 0x5b4a, 0x7827, -+ 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, -+ 0x4c65, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, -+ 0xd084, 0x0040, 0x4c6d, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, -+ 0x603c, 0xa005, 0x0040, 0x4c76, 0x8001, 0x603e, 0x2660, 0x1078, -+ 0x6bb6, 0x0c7f, 0x0078, 0x4c85, 0x0d7f, 0x0c7e, 0x2660, 0x6003, -+ 0x0009, 0x630a, 0x0c7f, 0x0078, 0x4c3c, 0x8dff, 0x0040, 0x4c8f, -+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3b92, 0x1078, -+ 0x5a1a, 0x0078, 0x4c3c, 0x007f, 0x0078, 0x4c2f, 0x781e, 0x781a, -+ 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x0e7e, 0x0c7e, 0x2071, -+ 0x7936, 0x7004, 0xa084, 0x0007, 0x0079, 0x4ca6, 0x4cb0, 0x4cb3, -+ 0x4ccc, 0x4ce8, 0x4d2d, 0x4cb0, 0x4cb0, 0x4cae, 0x1078, 0x12cd, -+ 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x4cc1, 0x7020, -+ 0x8001, 0x7022, 0x600c, 0xa015, 0x0040, 0x4cc8, 0x7216, 0x600f, -+ 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, -+ 0x7216, 0x7212, 0x0078, 0x4cc1, 0x6018, 0x2060, 0x1078, 0x37c5, -+ 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0040, 0x4cdd, -+ 0x6054, 0xa015, 0x0040, 0x4ce4, 0x721e, 0x7007, 0x0000, 0x7027, -+ 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7218, 0x721e, 0x0078, 0x4cdd, -+ 0x7024, 0xa065, 0x0040, 0x4d2a, 0x700c, 0xac06, 0x00c0, 0x4cff, -+ 0x1078, 0x5a1a, 0x600c, 0xa015, 0x0040, 0x4cfb, 0x720e, 0x600f, -+ 0x0000, 0x0078, 0x4d28, 0x720e, 0x720a, 0x0078, 0x4d28, 0x7014, -+ 0xac06, 0x00c0, 0x4d12, 0x1078, 0x5a1a, 0x600c, 0xa015, 0x0040, -+ 0x4d0e, 0x7216, 0x600f, 0x0000, 0x0078, 0x4d28, 0x7216, 0x7212, -+ 0x0078, 0x4d28, 0x6018, 0x2060, 0x1078, 0x37c5, 0x6000, 0xc0dc, -+ 0x6002, 0x1078, 0x5a1a, 0x701c, 0xa065, 0x0040, 0x4d28, 0x6054, -+ 0xa015, 0x0040, 0x4d26, 0x721e, 0x0078, 0x4d28, 0x7218, 0x721e, -+ 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, -+ 0x4d3a, 0x1078, 0x5a1a, 0x600c, 0xa015, 0x0040, 0x4d41, 0x720e, -+ 0x600f, 0x0000, 0x1078, 0x5b4a, 0x7027, 0x0000, 0x0c7f, 0x0e7f, -+ 0x007c, 0x720e, 0x720a, 0x0078, 0x4d3a, 0x0d7e, 0x2069, 0x7936, -+ 0x6830, 0xa084, 0x0003, 0x0079, 0x4d4d, 0x4d53, 0x4d55, 0x4d7b, -+ 0x4d53, 0x1078, 0x12cd, 0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, -+ 0x0001, 0x0040, 0x4d71, 0x683c, 0xa065, 0x0040, 0x4d66, 0x600c, -+ 0xa015, 0x0040, 0x4d6d, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, -+ 0x683f, 0x0000, 0x0c7f, 0x0d7f, 0x007c, 0x683a, 0x6836, 0x0078, -+ 0x4d66, 0x6843, 0x0000, 0x6838, 0xa065, 0x0040, 0x4d66, 0x6003, -+ 0x0003, 0x0078, 0x4d66, 0x0c7e, 0x6843, 0x0000, 0x6847, 0x0000, -+ 0x683c, 0xa065, 0x0040, 0x4d93, 0x600c, 0xa015, 0x0040, 0x4d8f, -+ 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, 0x0078, 0x4d93, 0x683f, -+ 0x0000, 0x683a, 0x6836, 0x0c7f, 0x0d7f, 0x007c, 0x0d7e, 0x2069, -+ 0x7936, 0x6804, 0xa084, 0x0007, 0x0079, 0x4d9e, 0x4da8, 0x4e45, -+ 0x4e45, 0x4e45, 0x4e45, 0x4e47, 0x4e45, 0x4da6, 0x1078, 0x12cd, -+ 0x6820, 0xa005, 0x00c0, 0x4dae, 0x0d7f, 0x007c, 0x0c7e, 0x680c, -+ 0xa065, 0x0040, 0x4dbd, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, -+ 0x1078, 0x4e8d, 0x0c7f, 0x0d7f, 0x007c, 0x6814, 0xa065, 0x0040, -+ 0x4dcb, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x1078, 0x4e8d, -+ 0x0c7f, 0x0d7f, 0x007c, 0x0e7e, 0x037e, 0x6a1c, 0xa2f5, 0x0000, -+ 0x0040, 0x4e40, 0x704c, 0xa00d, 0x0040, 0x4dda, 0x7088, 0xa005, -+ 0x0040, 0x4df2, 0x7054, 0xa075, 0x0040, 0x4de3, 0xa20e, 0x0040, -+ 0x4e40, 0x0078, 0x4de8, 0x6818, 0xa20e, 0x0040, 0x4e40, 0x2070, -+ 0x704c, 0xa00d, 0x0040, 0x4dda, 0x7088, 0xa005, 0x00c0, 0x4dda, -+ 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, 0x00c8, 0x4dda, 0x1078, -+ 0x5ce9, 0x0040, 0x4e40, 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a, -+ 0xa180, 0x0015, 0x2004, 0xa08a, 0x199a, 0x0048, 0x4e09, 0x2001, -+ 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, -+ 0x2c78, 0x71a0, 0xd1bc, 0x0040, 0x4e22, 0x7100, 0xd1f4, 0x0040, -+ 0x4e1e, 0x7114, 0xa18c, 0x00ff, 0x0078, 0x4e27, 0x2009, 0x0000, -+ 0x0078, 0x4e27, 0xa1e0, 0x2329, 0x2c0c, 0xa18c, 0x00ff, 0x2061, -+ 0x0100, 0x619a, 0x1078, 0x52de, 0x7300, 0xc3dd, 0x7302, 0x6807, -+ 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, -+ 0x0001, 0x7807, 0x0040, 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, -+ 0x037f, 0x0e7f, 0x0c7f, 0x0078, 0x4e3e, 0x0d7f, 0x007c, 0x0c7e, -+ 0x680c, 0xa065, 0x0040, 0x4e53, 0x6807, 0x0004, 0x6826, 0x682b, -+ 0x0000, 0x1078, 0x4e8d, 0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, -+ 0x2069, 0x7936, 0x6830, 0xa086, 0x0000, 0x00c0, 0x4e74, 0x6838, -+ 0xa07d, 0x0040, 0x4e74, 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, -+ 0x127e, 0x0f7e, 0x2091, 0x2200, 0x027f, 0x1078, 0x1a44, 0x00c0, -+ 0x4e77, 0x127f, 0x1078, 0x5571, 0x0d7f, 0x0f7f, 0x007c, 0x127f, -+ 0x6843, 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0040, 0x4e89, -+ 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, -+ 0x4e74, 0x683a, 0x6836, 0x0078, 0x4e83, 0x601c, 0xa084, 0x000f, -+ 0x1079, 0x4e93, 0x007c, 0x4e9c, 0x4ea1, 0x51a8, 0x529e, 0x4ea1, -+ 0x51a8, 0x529e, 0x4e9c, 0x4ea1, 0x1078, 0x4c9d, 0x1078, 0x4d96, -+ 0x007c, 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, -+ 0x0030, 0x10c8, 0x12cd, 0x6118, 0x2178, 0x79a0, 0xd1bc, 0x0040, -+ 0x4ebe, 0x7900, 0xd1f4, 0x0040, 0x4eba, 0x7914, 0xa18c, 0x00ff, -+ 0x0078, 0x4ec3, 0x2009, 0x0000, 0x0078, 0x4ec3, 0xa1f8, 0x2329, -+ 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0x1079, -+ 0x4ecf, 0x0f7f, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c, 0x4f01, -+ 0x4f39, 0x4f51, 0x4fd0, 0x4ffd, 0x5005, 0x5026, 0x5037, 0x5048, -+ 0x5050, 0x5061, 0x5050, 0x50a9, 0x5037, 0x50ca, 0x50d2, 0x5048, -+ 0x50d2, 0x50e3, 0x4eff, 0x4eff, 0x4eff, 0x4eff, 0x4eff, 0x4eff, -+ 0x4eff, 0x4eff, 0x4eff, 0x4eff, 0x4eff, 0x4eff, 0x5758, 0x576d, -+ 0x5790, 0x57b4, 0x5026, 0x4eff, 0x5026, 0x5050, 0x4eff, 0x4f51, -+ 0x4fd0, 0x4eff, 0x5c64, 0x5050, 0x4eff, 0x5c87, 0x5050, 0x1078, -+ 0x12cd, 0x20a1, 0x020b, 0x1078, 0x50f8, 0x20a3, 0x5200, 0x20a3, -+ 0x0000, 0x0d7e, 0x2069, 0x7751, 0x6804, 0xd084, 0x0040, 0x4f1b, -+ 0x6828, 0x20a3, 0x0000, 0x017e, 0x1078, 0x2094, 0x21a2, 0x017f, -+ 0x0d7f, 0x0078, 0x4f20, 0x0d7f, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a9, 0x0004, 0x2099, 0x7705, 0x53a6, 0x20a9, 0x0004, 0x2099, -+ 0x7701, 0x53a6, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, 0x5688, -+ 0x007c, 0x20a1, 0x020b, 0x1078, 0x50f8, 0x20a3, 0x0500, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2, 0x20a9, -+ 0x0004, 0x2099, 0x7705, 0x53a6, 0x60c3, 0x0010, 0x1078, 0x5688, -+ 0x007c, 0x20a1, 0x020b, 0x1078, 0x50f8, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xa086, 0x007e, 0x00c0, 0x4f64, 0x20a3, 0x0400, 0x620c, -+ 0xc2b4, 0x620e, 0x0078, 0x4f66, 0x20a3, 0x0300, 0x20a3, 0x0000, -+ 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, 0x4f9f, -+ 0x2099, 0x7920, 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304, 0xa084, -+ 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0x7705, -+ 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7701, 0x53a6, 0x20a9, 0x0010, -+ 0x20a3, 0x0000, 0x00f0, 0x4f90, 0x2099, 0x7928, 0x33a6, 0x20a9, -+ 0x0007, 0x20a3, 0x0000, 0x00f0, 0x4f99, 0x0078, 0x4fbf, 0x2099, -+ 0x7920, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7705, -+ 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7701, 0x53a6, 0x20a9, 0x0008, -+ 0x20a3, 0x0000, 0x00f0, 0x4fb0, 0x20a9, 0x0008, 0x20a3, 0x0000, -+ 0x00f0, 0x4fb6, 0x2099, 0x7928, 0x20a9, 0x0008, 0x53a6, 0x20a9, -+ 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4fc1, 0x20a9, 0x000a, 0x20a3, -+ 0x0000, 0x00f0, 0x4fc7, 0x60c3, 0x0074, 0x1078, 0x5688, 0x007c, -+ 0x20a1, 0x020b, 0x1078, 0x50f8, 0x20a3, 0x2010, 0x20a3, 0x0014, -+ 0x20a3, 0x0800, 0x20a3, 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, -+ 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x7751, 0x7904, 0x0f7f, 0xd1ac, -+ 0x00c0, 0x4fec, 0xa085, 0x0020, 0xd1a4, 0x0040, 0x4ff1, 0xa085, -+ 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0014, 0x1078, 0x5688, 0x007c, 0x20a1, 0x020b, 0x1078, -+ 0x50f8, 0x20a3, 0x5000, 0x0078, 0x4f66, 0x20a1, 0x020b, 0x1078, -+ 0x50f8, 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x60c3, 0x0014, 0x1078, 0x5688, 0x007c, 0x20a1, 0x020b, -+ 0x1078, 0x516f, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x5688, 0x007c, 0x20a1, -+ 0x020b, 0x1078, 0x516f, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, -+ 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x1078, 0x5688, 0x007c, -+ 0x20a1, 0x020b, 0x1078, 0x516f, 0x20a3, 0x0200, 0x0078, 0x4f66, -+ 0x20a1, 0x020b, 0x1078, 0x516f, 0x20a3, 0x0100, 0x20a3, 0x0000, -+ 0x20a3, 0x0003, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x5688, -+ 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078, 0x516f, 0x20a3, 0x0210, -+ 0x20a3, 0x0014, 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, -+ 0x0014, 0x00c0, 0x5087, 0x6998, 0xa184, 0xc000, 0x00c0, 0x5083, -+ 0xd1ec, 0x0040, 0x507f, 0x20a3, 0x2100, 0x0078, 0x5089, 0x20a3, -+ 0x0100, 0x0078, 0x5089, 0x20a3, 0x0400, 0x0078, 0x5089, 0x20a3, -+ 0x0700, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, -+ 0x2079, 0x7751, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x5099, 0xa085, -+ 0x0020, 0xd1a4, 0x0040, 0x509e, 0xa085, 0x0010, 0xa085, 0x0002, -+ 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x1078, 0x5688, 0x0d7f, -+ 0x007c, 0x20a1, 0x020b, 0x1078, 0x516f, 0x20a3, 0x0210, 0x20a3, -+ 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, -+ 0x5688, 0x007c, 0x20a1, 0x020b, 0x1078, 0x516f, 0x20a3, 0x0200, -+ 0x0078, 0x4f07, 0x20a1, 0x020b, 0x1078, 0x516f, 0x20a3, 0x0100, -+ 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, -+ 0x1078, 0x5688, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, -+ 0x020b, 0x1078, 0x516f, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, -+ 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x1078, 0x5688, 0x007c, -+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, -+ 0x2014, 0xa286, 0x007e, 0x00c0, 0x510b, 0x20a3, 0x22ff, 0x20a3, -+ 0xfffe, 0x0078, 0x5139, 0xa286, 0x007f, 0x00c0, 0x5116, 0x0d7e, -+ 0x20a3, 0x22ff, 0x20a3, 0xfffd, 0x0078, 0x512d, 0xd2bc, 0x0040, -+ 0x5135, 0xa286, 0x0080, 0x0d7e, 0x00c0, 0x5124, 0x20a3, 0x22ff, -+ 0x20a3, 0xfffc, 0x0078, 0x512d, 0xa2e8, 0x7820, 0x2d6c, 0x6810, -+ 0xa085, 0x2200, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, -+ 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x513d, 0x20a3, 0x2200, 0x6298, -+ 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0129, 0x20a3, -+ 0x0000, 0x1078, 0x5677, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, -+ 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x027e, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, -+ 0x22a2, 0x0d7e, 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, -+ 0x20a3, 0x2029, 0x20a3, 0x0000, 0x0078, 0x5141, 0x20a3, 0x0100, -+ 0x20a3, 0x0000, 0x20a3, 0xfc02, 0x20a3, 0x0000, 0x007c, 0x027e, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, -+ 0xa092, 0x007e, 0x0048, 0x518e, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, -+ 0x6810, 0xa085, 0x2300, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x5196, 0x20a3, 0x2300, -+ 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0198, -+ 0x20a3, 0x0000, 0x1078, 0x5677, 0x22a2, 0x20a3, 0x0000, 0x7a08, -+ 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, -+ 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085, 0x1048, 0x12cd, 0xa08a, -+ 0x008c, 0x10c8, 0x12cd, 0x6118, 0x2178, 0x79a0, 0xd1bc, 0x0040, -+ 0x51c6, 0x7900, 0xd1f4, 0x0040, 0x51c2, 0x7914, 0xa18c, 0x00ff, -+ 0x0078, 0x51cb, 0x2009, 0x0000, 0x0078, 0x51cb, 0xa1f8, 0x2329, -+ 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa082, -+ 0x0085, 0x1079, 0x51d6, 0x0f7f, 0x0c7f, 0x007c, 0x51df, 0x51ea, -+ 0x5204, 0x51dd, 0x51dd, 0x51dd, 0x51df, 0x1078, 0x12cd, 0x147e, -+ 0x20a1, 0x020b, 0x1078, 0x5217, 0x60c3, 0x0000, 0x1078, 0x5688, -+ 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, 0x5244, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x2fa2, 0x20a3, 0x0000, -+ 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, -+ 0x1078, 0x5688, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, -+ 0x5271, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x60c3, 0x0004, 0x1078, 0x5688, 0x147f, 0x007c, 0x027e, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, -+ 0xa092, 0x007e, 0x0048, 0x5236, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, -+ 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x523e, 0x20a3, 0x8100, -+ 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0009, -+ 0x20a3, 0x0000, 0x0078, 0x5141, 0x027e, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, -+ 0x5263, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810, 0xa085, 0x8400, -+ 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, -+ 0x0d7f, 0x0078, 0x526b, 0x20a3, 0x8400, 0x6298, 0x22a2, 0x20a3, -+ 0x0000, 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078, -+ 0x519a, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, -+ 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x5290, 0x0d7e, 0xa0e8, -+ 0x7820, 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, -+ 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x5298, -+ 0x20a3, 0x8500, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, -+ 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078, 0x519a, 0x0c7e, 0x0f7e, -+ 0x2c78, 0x7804, 0xa08a, 0x0040, 0x1048, 0x12cd, 0xa08a, 0x0050, -+ 0x10c8, 0x12cd, 0x7918, 0x2160, 0x61a0, 0xd1bc, 0x0040, 0x52bd, -+ 0x6100, 0xd1f4, 0x0040, 0x52b9, 0x6114, 0xa18c, 0x00ff, 0x0078, -+ 0x52c2, 0x2009, 0x0000, 0x0078, 0x52c2, 0xa1e0, 0x2329, 0x2c0c, -+ 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x1079, -+ 0x52cc, 0x0f7f, 0x0c7f, 0x007c, 0x52de, 0x53c4, 0x536c, 0x54ec, -+ 0x52dc, 0x52dc, 0x52dc, 0x52dc, 0x52dc, 0x52dc, 0x52dc, 0x5933, -+ 0x5944, 0x5955, 0x5966, 0x52dc, 0x1078, 0x12cd, 0x0d7e, 0x157e, -+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x532f, 0x7910, 0x2168, 0x6948, -+ 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, 0x0006, -+ 0x8004, 0x20a2, 0xd1ac, 0x0040, 0x52f9, 0x20a3, 0x0002, 0x0078, -+ 0x5305, 0xd1b4, 0x0040, 0x5300, 0x20a3, 0x0001, 0x0078, 0x5305, -+ 0x20a3, 0x0000, 0x2230, 0x0078, 0x5307, 0x6a80, 0x6e7c, 0x20a9, -+ 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000, 0x00f0, -+ 0x530b, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, -+ 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0x7952, 0x2003, -+ 0x07d0, 0x2001, 0x7951, 0x2003, 0x0009, 0x2001, 0x7957, 0x2003, -+ 0x0002, 0x1078, 0x14fc, 0x147f, 0x157f, 0x0d7f, 0x007c, 0x20e1, -+ 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, -+ 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028, 0x2004, -+ 0xd0bc, 0x0040, 0x5355, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810, -+ 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, -+ 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x535d, 0x20a3, 0x0600, 0x6198, -+ 0x21a2, 0x20a3, 0x0000, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a3, -+ 0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, -+ 0x20a1, 0x020b, 0x1078, 0x538c, 0x7810, 0x2068, 0x6860, 0x20a2, -+ 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x1078, 0x5688, 0x147f, -+ 0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x53aa, -+ 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2, -+ 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, -+ 0x0078, 0x53b2, 0x20a3, 0x0500, 0x6298, 0x22a2, 0x20a3, 0x0000, -+ 0x6230, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x1078, 0x5677, -+ 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, -+ 0x20a1, 0x020b, 0x1078, 0x54b4, 0x7810, 0x2068, 0xa016, 0x22a2, -+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, 0x00c0, -+ 0x53e1, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x53e9, 0x0078, -+ 0x53e4, 0xa006, 0x1079, 0x53e9, 0x147f, 0x137f, 0x157f, 0x0d7f, -+ 0x007c, 0x53f3, 0x5455, 0x5459, 0x547c, 0x5489, 0x549b, 0x549f, -+ 0x53f1, 0x1078, 0x12cd, 0x017e, 0x037e, 0x694c, 0xa18c, 0x0003, -+ 0xa186, 0x0000, 0x00c0, 0x5406, 0x6b78, 0x23a2, 0x6868, 0x20a2, -+ 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x5480, 0xa186, 0x0001, -+ 0x00c0, 0x5450, 0x6b78, 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, -+ 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018, -+ 0xa384, 0x0300, 0x0040, 0x544f, 0xd3c4, 0x0040, 0x5421, 0x687c, -+ 0xa108, 0xd3cc, 0x0040, 0x5426, 0x6874, 0xa108, 0x157e, 0x20a9, -+ 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2, 0x8000, 0x00f0, -+ 0x542b, 0x157f, 0x22a2, 0x22a2, 0x22a2, 0xa184, 0x0003, 0x0040, -+ 0x544f, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, -+ 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, -+ 0x0898, 0x20a2, 0x1078, 0x5677, 0x22a2, 0x20a3, 0x0000, 0x61c2, -+ 0x037f, 0x017f, 0x1078, 0x5688, 0x007c, 0x20a3, 0x0008, 0x0078, -+ 0x547e, 0x20a3, 0x0302, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0012, -+ 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, -+ 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a, 0x22a2, 0x22a2, -+ 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, -+ 0x0032, 0x1078, 0x5688, 0x007c, 0x20a3, 0x0028, 0x22a2, 0x22a2, -+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x1078, 0x5688, -+ 0x007c, 0x20a3, 0x0100, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, -+ 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0020, -+ 0x1078, 0x5688, 0x007c, 0x20a3, 0x0008, 0x0078, 0x547e, 0x037e, -+ 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff, 0x8001, 0x00c0, -+ 0x54ad, 0x22a2, 0x037f, 0x0078, 0x547e, 0x20a3, 0x0800, 0x22a2, -+ 0x20a2, 0x037f, 0x0078, 0x5480, 0x027e, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x54d2, -+ 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, -+ 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, -+ 0x0078, 0x54da, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000, -+ 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a3, 0x0000, 0x1078, 0x5677, -+ 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, -+ 0x017e, 0x037e, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x54ff, -+ 0x037f, 0x017f, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x5507, -+ 0x5507, 0x5509, 0x5507, 0x5507, 0x5507, 0x552e, 0x5507, 0x1078, -+ 0x12cd, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, 0x7912, 0x20a1, -+ 0x020b, 0x2009, 0x0003, 0x1078, 0x5538, 0x0d7e, 0x2069, 0x7751, -+ 0x6804, 0xd0bc, 0x0040, 0x5523, 0x682c, 0xa084, 0x00ff, 0x8007, -+ 0x20a2, 0x0078, 0x5525, 0x20a3, 0x3f00, 0x0d7f, 0x22a2, 0x22a2, -+ 0x22a2, 0x60c3, 0x0001, 0x1078, 0x5688, 0x007c, 0x20a1, 0x020b, -+ 0x2009, 0x0003, 0x1078, 0x5538, 0x20a3, 0x7f00, 0x0078, 0x5526, -+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xd0bc, 0x0040, 0x5556, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, -+ 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, -+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x555e, 0x20a3, 0x0100, -+ 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0888, -+ 0xa18d, 0x0008, 0x21a2, 0x1078, 0x5677, 0x22a2, 0x20a3, 0x0000, -+ 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, -+ 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x057e, 0x047e, 0x037e, 0x2061, -+ 0x0100, 0x2071, 0x7700, 0x6130, 0x7818, 0x2068, 0x68a0, 0x2028, -+ 0xd0bc, 0x00c0, 0x558a, 0xa080, 0x2329, 0x2014, 0xa294, 0x00ff, -+ 0x0078, 0x558e, 0x6910, 0x6a14, 0x7364, 0x7468, 0x781c, 0xa086, -+ 0x0006, 0x0040, 0x55e2, 0xd5bc, 0x0040, 0x559e, 0xa185, 0x0100, -+ 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x55a4, 0x6063, 0x0100, -+ 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0809, 0x6077, 0x0008, -+ 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, -+ 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, -+ 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, -+ 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, -+ 0x0080, 0x0048, 0x55d6, 0x6a00, 0xd2f4, 0x0040, 0x55d4, 0x6a14, -+ 0xa294, 0x00ff, 0x0078, 0x55d6, 0x2011, 0x0000, 0x629e, 0x6017, -+ 0x0016, 0x1078, 0x470b, 0x037f, 0x047f, 0x057f, 0x0c7f, 0x0d7f, -+ 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, 0xa086, -+ 0x0002, 0x0040, 0x5631, 0xd5bc, 0x0040, 0x55f6, 0xa185, 0x0100, -+ 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x55fc, 0x6063, 0x0100, -+ 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0880, 0x6077, 0x0008, -+ 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, -+ 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7060, 0x608a, 0x705c, -+ 0x608e, 0x7080, 0x60c6, 0x707c, 0x60ca, 0x686c, 0x60ce, 0x60ab, -+ 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0048, -+ 0x562c, 0x6a00, 0xd2f4, 0x0040, 0x562a, 0x6a14, 0xa294, 0x00ff, -+ 0x0078, 0x562c, 0x2011, 0x0000, 0x629e, 0x6017, 0x0012, 0x0078, -+ 0x55d9, 0xd5bc, 0x0040, 0x563c, 0xa185, 0x0700, 0x6062, 0x6266, -+ 0x636a, 0x646e, 0x0078, 0x5642, 0x6063, 0x0700, 0x6266, 0x606b, -+ 0x0000, 0x616e, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, 0x8000, -+ 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, -+ 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, -+ 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, -+ 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0048, 0x5672, 0x6a00, -+ 0xd2f4, 0x0040, 0x5670, 0x6a14, 0xa294, 0x00ff, 0x0078, 0x5672, -+ 0x2011, 0x0000, 0x629e, 0x6017, 0x0016, 0x0078, 0x55d9, 0x7a18, -+ 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, -+ 0x007c, 0x0d7e, 0x2069, 0x7936, 0x6843, 0x0001, 0x0d7f, 0x007c, -+ 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x5693, -+ 0x1078, 0x46fb, 0x007c, 0x007e, 0x6014, 0xa084, 0x0004, 0xa085, -+ 0x0009, 0x6016, 0x007f, 0x007c, 0x007e, 0x0c7e, 0x2061, 0x0100, -+ 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, 0x6016, 0x0c7f, 0x007f, -+ 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e, 0x1078, 0x4706, 0x2061, -+ 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040, 0x56e6, -+ 0x1078, 0x569c, 0x6803, 0x1000, 0x6803, 0x0000, 0x0c7e, 0x2061, -+ 0x7936, 0x6128, 0xa192, 0x0002, 0x00c8, 0x56d3, 0x8108, 0x612a, -+ 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x56e1, 0x1078, 0x46fb, 0x1078, -+ 0x5693, 0x0078, 0x56e1, 0x6124, 0xa1e5, 0x0000, 0x0040, 0x56de, -+ 0x1078, 0x76c7, 0x2009, 0x0014, 0x1078, 0x5d41, 0x0c7f, 0x0078, -+ 0x56e1, 0x027f, 0x017f, 0x0d7f, 0x0c7f, 0x007c, 0x1078, 0x3591, -+ 0x0078, 0x56e1, 0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x027e, 0x1078, -+ 0x4714, 0x2071, 0x7936, 0x713c, 0x81ff, 0x0040, 0x5714, 0x2061, -+ 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040, 0x571a, -+ 0x6803, 0x1000, 0x6803, 0x0000, 0x037e, 0x2019, 0x0001, 0x1078, -+ 0x5880, 0x037f, 0x713c, 0x2160, 0x1078, 0x76c7, 0x2009, 0x004a, -+ 0x1078, 0x5d41, 0x0078, 0x5714, 0x027f, 0x017f, 0x0e7f, 0x0d7f, -+ 0x0c7f, 0x007c, 0x7144, 0xa192, 0x0002, 0x00c8, 0x5704, 0x8108, -+ 0x7146, 0x1078, 0x470b, 0x0078, 0x5714, 0x0e7e, 0x0d7e, 0x0c7e, -+ 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091, 0x8000, 0x6018, -+ 0x2068, 0x6ca0, 0x2071, 0x7936, 0x7018, 0x2068, 0x8dff, 0x0040, -+ 0x574f, 0x68a0, 0xa406, 0x0040, 0x5741, 0x6854, 0x2068, 0x0078, -+ 0x5736, 0x6010, 0x2060, 0x643c, 0x6540, 0x6e48, 0x2d60, 0x1078, -+ 0x3991, 0x0040, 0x574f, 0x1078, 0x5a1a, 0xa085, 0x0001, 0x127f, -+ 0x007f, 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, -+ 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x50f8, 0x20a3, 0x0f00, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, -+ 0x1078, 0x5688, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1, -+ 0x020b, 0x1078, 0x516f, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a9, -+ 0x0006, 0x2011, 0x7740, 0x2019, 0x7741, 0x23a6, 0x22a6, 0xa398, -+ 0x0002, 0xa290, 0x0002, 0x00f0, 0x577d, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x60c3, 0x001c, 0x1078, 0x5688, 0x147f, 0x157f, 0x007c, -+ 0x157e, 0x147e, 0x017e, 0x027e, 0x20a1, 0x020b, 0x1078, 0x514f, -+ 0x1078, 0x5166, 0x7810, 0x007e, 0xa080, 0x0015, 0x2098, 0x7808, -+ 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003, 0x60c2, -+ 0x007f, 0xa080, 0x0001, 0x2004, 0x7812, 0x1078, 0x5688, 0x027f, -+ 0x017f, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, -+ 0x1078, 0x50f8, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x5688, 0x147f, 0x157f, -+ 0x007c, 0x0e7e, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, -+ 0x7936, 0x700c, 0x2060, 0x8cff, 0x0040, 0x57e5, 0x1078, 0x6be3, -+ 0x00c0, 0x57dc, 0x1078, 0x5f6d, 0x600c, 0x007e, 0x1078, 0x5d1a, -+ 0x1078, 0x5a1a, 0x0c7f, 0x0078, 0x57d3, 0x700f, 0x0000, 0x700b, -+ 0x0000, 0x127f, 0x007f, 0x0c7f, 0x0e7f, 0x007c, 0x127e, 0x157e, -+ 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e, 0x007e, 0x2091, -+ 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x7936, 0x7024, -+ 0x2060, 0x8cff, 0x0040, 0x583e, 0x1078, 0x569c, 0x68c3, 0x0000, -+ 0x1078, 0x4706, 0x2009, 0x0013, 0x1078, 0x5d41, 0x20a9, 0x01f4, -+ 0x6824, 0xd094, 0x0040, 0x5821, 0x6827, 0x0004, 0x7804, 0xa084, -+ 0x4000, 0x0040, 0x5833, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, -+ 0x5833, 0xd084, 0x0040, 0x5828, 0x6827, 0x0001, 0x0078, 0x582a, -+ 0x00f0, 0x5810, 0x7804, 0xa084, 0x1000, 0x0040, 0x5833, 0x7803, -+ 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f, 0x027f, 0x0c7f, -+ 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, 0x2001, 0x7700, -+ 0x2004, 0xa096, 0x0001, 0x0040, 0x5876, 0xa096, 0x0004, 0x0040, -+ 0x5876, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x3558, 0x1078, -+ 0x4689, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x5864, 0x6827, -+ 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5876, 0x7803, 0x1000, -+ 0x7803, 0x0000, 0x0078, 0x5876, 0xd084, 0x0040, 0x586b, 0x6827, -+ 0x0001, 0x0078, 0x586d, 0x00f0, 0x5853, 0x7804, 0xa084, 0x1000, -+ 0x0040, 0x5876, 0x7803, 0x0100, 0x7803, 0x0000, 0x007f, 0x017f, -+ 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, -+ 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e, -+ 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, -+ 0x7936, 0x703c, 0x2060, 0x8cff, 0x0040, 0x58ce, 0x6817, 0x0010, -+ 0x68cb, 0x0000, 0x68c7, 0x0000, 0x1078, 0x4714, 0x1078, 0x1c13, -+ 0xa39d, 0x0000, 0x00c0, 0x58a8, 0x2009, 0x0049, 0x1078, 0x5d41, -+ 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040, 0x58bb, 0x6827, 0x0004, -+ 0x7804, 0xa084, 0x4000, 0x0040, 0x58cd, 0x7803, 0x1000, 0x7803, -+ 0x0000, 0x0078, 0x58cd, 0xd094, 0x0040, 0x58c2, 0x6827, 0x0002, -+ 0x0078, 0x58c4, 0x00f0, 0x58aa, 0x7804, 0xa084, 0x1000, 0x0040, -+ 0x58cd, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f, -+ 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, -+ 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0x7936, 0x6a06, 0x127f, -+ 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0x7936, -+ 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, -+ 0x007e, 0x127e, 0x2071, 0x7936, 0x7614, 0x2660, 0x2678, 0x2091, -+ 0x8000, 0x8cff, 0x0040, 0x592c, 0x601c, 0xa206, 0x00c0, 0x5927, -+ 0x7014, 0xac36, 0x00c0, 0x5906, 0x660c, 0x7616, 0x7010, 0xac36, -+ 0x00c0, 0x5914, 0x2c00, 0xaf36, 0x0040, 0x5912, 0x2f00, 0x7012, -+ 0x0078, 0x5914, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, -+ 0x0040, 0x591d, 0x7e0e, 0x0078, 0x591e, 0x2678, 0x600f, 0x0000, -+ 0x1078, 0x6bb6, 0x1078, 0x5a1a, 0x0c7f, 0x0078, 0x58f9, 0x2c78, -+ 0x600c, 0x2060, 0x0078, 0x58f9, 0x127f, 0x007f, 0x067f, 0x0c7f, -+ 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, -+ 0x532f, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, -+ 0x20a3, 0x4000, 0x0078, 0x5975, 0x157e, 0x147e, 0x20a1, 0x020b, -+ 0x1078, 0x532f, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, -+ 0x20a2, 0x20a3, 0x2000, 0x0078, 0x5975, 0x157e, 0x147e, 0x20a1, -+ 0x020b, 0x1078, 0x532f, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x5975, 0x157e, 0x147e, -+ 0x20a1, 0x020b, 0x1078, 0x532f, 0x7810, 0x20a2, 0xa006, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078, 0x5a25, 0x60c3, -+ 0x0020, 0x1078, 0x5688, 0x147f, 0x157f, 0x007c, 0x127e, 0x0c7e, -+ 0x2091, 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4, 0x00c0, 0x598d, -+ 0xd1bc, 0x00c0, 0x59d7, 0x0078, 0x5a17, 0x2009, 0x017f, 0x200b, -+ 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140, 0x20a9, 0x001e, -+ 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040, 0x59ce, 0x6020, -+ 0xd0b4, 0x0040, 0x59ce, 0x6024, 0xd094, 0x00c0, 0x59ce, 0x2104, -+ 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x59ce, 0x00f0, 0x599a, -+ 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff, -+ 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91, 0x6043, 0x0001, -+ 0x6043, 0x0000, 0x608a, 0x628e, 0x6024, 0xd094, 0x00c0, 0x59cd, -+ 0x6a04, 0xa294, 0x4000, 0x00c0, 0x59c4, 0x027f, 0x0d7f, 0x007f, -+ 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0078, 0x5a17, 0x2009, -+ 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140, -+ 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040, -+ 0x5a10, 0x6020, 0xd0bc, 0x0040, 0x5a10, 0x2104, 0xa084, 0x000f, -+ 0xa086, 0x0004, 0x00c0, 0x5a10, 0x00f0, 0x59e4, 0x027e, 0x6164, -+ 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff, 0xa10d, 0x6088, -+ 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001, 0x6043, 0x0000, -+ 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x5a0a, 0x027f, -+ 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0c7f, -+ 0x127f, 0x007c, 0x0e7e, 0x2071, 0x7936, 0x7020, 0xa005, 0x0040, -+ 0x5a23, 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9, 0x0008, 0x20a2, -+ 0x00f0, 0x5a27, 0x20a2, 0x20a2, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, -+ 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, -+ 0x7936, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff, 0x0040, -+ 0x5abd, 0x8cff, 0x0040, 0x5abd, 0x601c, 0xa086, 0x0006, 0x00c0, -+ 0x5ab8, 0x88ff, 0x0040, 0x5a54, 0x2800, 0xac06, 0x00c0, 0x5ab8, -+ 0x2039, 0x0000, 0x0078, 0x5a58, 0x6018, 0xa206, 0x00c0, 0x5ab8, -+ 0x7024, 0xac06, 0x00c0, 0x5a86, 0x2069, 0x0100, 0x68c0, 0xa005, -+ 0x0040, 0x5a81, 0x6817, 0x0008, 0x68c3, 0x0000, 0x1078, 0x5b4a, -+ 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, -+ 0x0040, 0x5a76, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, -+ 0x6824, 0xd084, 0x0040, 0x5a7e, 0x6827, 0x0001, 0x037f, 0x0078, -+ 0x5a86, 0x6003, 0x0009, 0x630a, 0x0078, 0x5ab8, 0x7014, 0xac36, -+ 0x00c0, 0x5a8c, 0x660c, 0x7616, 0x7010, 0xac36, 0x00c0, 0x5a9a, -+ 0x2c00, 0xaf36, 0x0040, 0x5a98, 0x2f00, 0x7012, 0x0078, 0x5a9a, -+ 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5aa3, -+ 0x7e0e, 0x0078, 0x5aa4, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, -+ 0x1078, 0x6a58, 0x0040, 0x5aae, 0x1078, 0x75fd, 0x1078, 0x6bb6, -+ 0x1078, 0x5a1a, 0x88ff, 0x00c0, 0x5ac7, 0x0c7f, 0x0078, 0x5a3e, -+ 0x2c78, 0x600c, 0x2060, 0x0078, 0x5a3e, 0xa006, 0x127f, 0x007f, -+ 0x067f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, -+ 0x0000, 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x5abe, 0x0f7e, 0x0e7e, -+ 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, -+ 0x2071, 0x7936, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040, 0x5b39, -+ 0x601c, 0xa086, 0x0006, 0x00c0, 0x5b34, 0x88ff, 0x0040, 0x5aee, -+ 0x2800, 0xac06, 0x00c0, 0x5b34, 0x0078, 0x5af2, 0x6018, 0xa206, -+ 0x00c0, 0x5b34, 0x703c, 0xac06, 0x00c0, 0x5b04, 0x037e, 0x2019, -+ 0x0001, 0x1078, 0x5880, 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, -+ 0x0000, 0x7047, 0x0000, 0x037f, 0x7038, 0xac36, 0x00c0, 0x5b0a, -+ 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5b18, 0x2c00, 0xaf36, -+ 0x0040, 0x5b16, 0x2f00, 0x7036, 0x0078, 0x5b18, 0x7037, 0x0000, -+ 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5b21, 0x7e0e, 0x0078, -+ 0x5b22, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x6a58, -+ 0x0040, 0x5b2c, 0x1078, 0x75fd, 0x1078, 0x6bb6, 0x88ff, 0x00c0, -+ 0x5b43, 0x0c7f, 0x0078, 0x5add, 0x2c78, 0x600c, 0x2060, 0x0078, -+ 0x5add, 0xa006, 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f, -+ 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, 0x0001, -+ 0x0078, 0x5b3a, 0x0e7e, 0x2071, 0x7936, 0x2001, 0x7700, 0x2004, -+ 0xa086, 0x0002, 0x00c0, 0x5b58, 0x7007, 0x0005, 0x0078, 0x5b5a, -+ 0x7007, 0x0000, 0x0e7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, -+ 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7936, 0x2c10, -+ 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040, 0x5b9a, 0x2200, 0xac06, -+ 0x00c0, 0x5b95, 0x7038, 0xac36, 0x00c0, 0x5b78, 0x660c, 0x763a, -+ 0x7034, 0xac36, 0x00c0, 0x5b86, 0x2c00, 0xaf36, 0x0040, 0x5b84, -+ 0x2f00, 0x7036, 0x0078, 0x5b86, 0x7037, 0x0000, 0x660c, 0x2c00, -+ 0xaf06, 0x0040, 0x5b8e, 0x7e0e, 0x0078, 0x5b8f, 0x2678, 0x600f, -+ 0x0000, 0xa085, 0x0001, 0x0078, 0x5b9a, 0x2c78, 0x600c, 0x2060, -+ 0x0078, 0x5b6b, 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0e7f, -+ 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, -+ 0x127e, 0x2091, 0x8000, 0x2071, 0x7936, 0x760c, 0x2660, 0x2678, -+ 0x8cff, 0x0040, 0x5c33, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, -+ 0x00c0, 0x5c2e, 0x7024, 0xac06, 0x00c0, 0x5be1, 0x2069, 0x0100, -+ 0x68c0, 0xa005, 0x0040, 0x5be1, 0x1078, 0x569c, 0x68c3, 0x0000, -+ 0x1078, 0x5b4a, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, -+ 0xa384, 0x1000, 0x0040, 0x5bd8, 0x6803, 0x0100, 0x6803, 0x0000, -+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x5be0, 0x6827, 0x0001, -+ 0x037f, 0x700c, 0xac36, 0x00c0, 0x5be7, 0x660c, 0x760e, 0x7008, -+ 0xac36, 0x00c0, 0x5bf5, 0x2c00, 0xaf36, 0x0040, 0x5bf3, 0x2f00, -+ 0x700a, 0x0078, 0x5bf5, 0x700b, 0x0000, 0x660c, 0x067e, 0x2c00, -+ 0xaf06, 0x0040, 0x5bfe, 0x7e0e, 0x0078, 0x5bff, 0x2678, 0x600f, -+ 0x0000, 0x1078, 0x6bcf, 0x00c0, 0x5c09, 0x1078, 0x22d7, 0x0078, -+ 0x5c25, 0x1078, 0x6be3, 0x00c0, 0x5c11, 0x1078, 0x5f6d, 0x0078, -+ 0x5c25, 0x6010, 0x2068, 0x1078, 0x6a58, 0x0040, 0x5c25, 0x601c, -+ 0xa086, 0x0003, 0x00c0, 0x5c3b, 0x6837, 0x0103, 0x6b4a, 0x6847, -+ 0x0000, 0x1078, 0x3b92, 0x1078, 0x6ba9, 0x6003, 0x0000, 0x1078, -+ 0x6bb6, 0x1078, 0x5a1a, 0x0c7f, 0x0078, 0x5bb0, 0x2c78, 0x600c, -+ 0x2060, 0x0078, 0x5bb0, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, -+ 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x5c1c, -+ 0x1078, 0x75fd, 0x0078, 0x5c25, 0x037e, 0x157e, 0x137e, 0x147e, -+ 0x3908, 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e, 0x2149, 0x00c0, -+ 0x5c55, 0x8210, 0x8000, 0x0078, 0x5c4c, 0xa005, 0x0040, 0x5c5f, -+ 0x20a9, 0x0020, 0x2198, 0xa110, 0x22a0, 0x22c8, 0x53a3, 0x147f, -+ 0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078, -+ 0x516f, 0x20a3, 0x0200, 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x514c, 0x20a3, 0x4f47, 0x20a3, -+ 0x4943, 0x20a3, 0x2020, 0x20a3, 0x0004, 0x20a3, 0x7878, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x1078, 0x5688, 0x0d7f, 0x007c, 0x20a1, -+ 0x020b, 0x1078, 0x516f, 0x20a3, 0x0210, 0x20a3, 0x0018, 0x20a3, -+ 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7810, -+ 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, -+ 0x0018, 0x1078, 0x5688, 0x007c, 0x2061, 0x7e00, 0x2a70, 0x7060, -+ 0x7046, 0x704b, 0x7e00, 0x007c, 0x0e7e, 0x127e, 0x2071, 0x7700, -+ 0x2091, 0x8000, 0x7544, 0xa582, 0x0001, 0x0048, 0x5ce6, 0x7048, -+ 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, 0x5cd2, 0xace0, 0x0008, -+ 0x7054, 0xac02, 0x00c8, 0x5cce, 0x0078, 0x5cc1, 0x2061, 0x7e00, -+ 0x0078, 0x5cc1, 0x6003, 0x0008, 0x8529, 0x7546, 0xaca8, 0x0008, -+ 0x7054, 0xa502, 0x00c8, 0x5ce2, 0x754a, 0xa085, 0x0001, 0x127f, -+ 0x0e7f, 0x007c, 0x704b, 0x7e00, 0x0078, 0x5cdd, 0xa006, 0x0078, -+ 0x5cdf, 0x0e7e, 0x2071, 0x7700, 0x7544, 0xa582, 0x0001, 0x0048, -+ 0x5d17, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, 0x5d04, -+ 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5d00, 0x0078, 0x5cf3, -+ 0x2061, 0x7e00, 0x0078, 0x5cf3, 0x6003, 0x0008, 0x8529, 0x7546, -+ 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x5d13, 0x754a, 0xa085, -+ 0x0001, 0x0e7f, 0x007c, 0x704b, 0x7e00, 0x0078, 0x5d0f, 0xa006, -+ 0x0078, 0x5d11, 0xac82, 0x7e00, 0x1048, 0x12cd, 0x2001, 0x7715, -+ 0x2004, 0xac02, 0x10c8, 0x12cd, 0xa006, 0x6006, 0x600a, 0x600e, -+ 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, 0x6003, 0x0000, 0x2061, -+ 0x7700, 0x6044, 0x8000, 0x6046, 0xa086, 0x0001, 0x0040, 0x5d39, -+ 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x4d96, 0x127f, 0x0078, -+ 0x5d38, 0x601c, 0xa084, 0x000f, 0x0079, 0x5d46, 0x5d4f, 0x5d57, -+ 0x5d73, 0x5d8f, 0x6c60, 0x6c7c, 0x6c98, 0x5d4f, 0x5d57, 0xa18e, -+ 0x0047, 0x00c0, 0x5d56, 0xa016, 0x1078, 0x156a, 0x007c, 0x067e, -+ 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12cd, 0x1079, 0x5d61, 0x067f, -+ 0x007c, 0x5d71, 0x5e58, 0x5f88, 0x5d71, 0x5fdf, 0x5d71, 0x5d71, -+ 0x5d71, 0x5e07, 0x6298, 0x5d71, 0x5d71, 0x5d71, 0x5d71, 0x5d71, -+ 0x5d71, 0x1078, 0x12cd, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, -+ 0x12cd, 0x1079, 0x5d7d, 0x067f, 0x007c, 0x5d8d, 0x5d8d, 0x5d8d, -+ 0x5d8d, 0x5d8d, 0x5d8d, 0x5d8d, 0x5d8d, 0x670c, 0x67d2, 0x5d8d, -+ 0x6725, 0x677e, 0x6725, 0x677e, 0x5d8d, 0x1078, 0x12cd, 0x067e, -+ 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12cd, 0x1079, 0x5d99, 0x067f, -+ 0x007c, 0x5da9, 0x62d6, 0x637c, 0x643e, 0x6596, 0x5da9, 0x5da9, -+ 0x5da9, 0x62b4, 0x66c1, 0x66c5, 0x5da9, 0x5da9, 0x5da9, 0x5da9, -+ 0x66eb, 0x1078, 0x12cd, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, -+ 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398, 0x94a0, 0x3318, -+ 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8, 0x0002, 0xa398, -+ 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x5db9, 0x0e7e, 0x1078, 0x6a58, -+ 0x0040, 0x5dd0, 0x6010, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, -+ 0x0e7f, 0x1078, 0x5d1a, 0x007c, 0x0d7e, 0x037e, 0x7330, 0xa386, -+ 0x0200, 0x00c0, 0x5de1, 0x6018, 0x2068, 0x6813, 0x00ff, 0x6817, -+ 0xfffd, 0x6010, 0xa005, 0x0040, 0x5deb, 0x2068, 0x6807, 0x0000, -+ 0x6837, 0x0103, 0x6b32, 0x1078, 0x5d1a, 0x037f, 0x0d7f, 0x007c, -+ 0x0d7e, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0xa1b6, -+ 0x0015, 0x00c0, 0x5e04, 0x6018, 0x2068, 0x7038, 0x680a, 0x703c, -+ 0x680e, 0x6800, 0xc08d, 0x6802, 0x0d7f, 0x0078, 0x5dc5, 0x2100, -+ 0xa1b2, 0x0030, 0x10c8, 0x12cd, 0x0079, 0x5e0e, 0x5e40, 0x5e4c, -+ 0x5e40, 0x5e40, 0x5e40, 0x5e40, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, -+ 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, -+ 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, -+ 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e40, 0x5e3e, 0x5e40, -+ 0x5e40, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e40, 0x5e3e, -+ 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x5e3e, 0x1078, 0x12cd, -+ 0x6003, 0x0001, 0x6106, 0x1078, 0x498e, 0x127e, 0x2091, 0x8000, -+ 0x1078, 0x4d96, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, -+ 0x498e, 0x127e, 0x2091, 0x8000, 0x1078, 0x4d96, 0x127f, 0x007c, -+ 0x6004, 0xa0b2, 0x0030, 0x10c8, 0x12cd, 0xa1b6, 0x0013, 0x00c0, -+ 0x5e64, 0x2008, 0x0079, 0x5eeb, 0xa1b6, 0x0027, 0x00c0, 0x5eb9, -+ 0x1078, 0x4c9d, 0x6004, 0x1078, 0x6bcf, 0x0040, 0x5e7d, 0x1078, -+ 0x6be3, 0x0040, 0x5eb1, 0xa08e, 0x0021, 0x0040, 0x5eb5, 0xa08e, -+ 0x0022, 0x0040, 0x5eb1, 0x0078, 0x5eac, 0x1078, 0x22d7, 0x2001, -+ 0x0007, 0x1078, 0x37f4, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078, -+ 0x5f6d, 0xa186, 0x007e, 0x00c0, 0x5e92, 0x2001, 0x772f, 0x2014, -+ 0xc285, 0x2202, 0x017e, 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, -+ 0x1078, 0x4a7e, 0x1078, 0x49c1, 0x0c7e, 0x6018, 0xa065, 0x0040, -+ 0x5ea3, 0x1078, 0x3a36, 0x0c7f, 0x2c08, 0x1078, 0x747b, 0x037f, -+ 0x027f, 0x017f, 0x1078, 0x3834, 0x1078, 0x5d1a, 0x1078, 0x4d96, -+ 0x007c, 0x1078, 0x5f6d, 0x0078, 0x5eac, 0x1078, 0x5f7c, 0x0078, -+ 0x5eac, 0xa186, 0x0014, 0x00c0, 0x5eb0, 0x1078, 0x4c9d, 0x1078, -+ 0x22b5, 0x1078, 0x6bcf, 0x00c0, 0x5ed8, 0x1078, 0x22d7, 0x6018, -+ 0xa080, 0x0028, 0x200c, 0x1078, 0x5f6d, 0xa186, 0x007e, 0x00c0, -+ 0x5ed6, 0x2001, 0x772f, 0x200c, 0xc185, 0x2102, 0x0078, 0x5eac, -+ 0x1078, 0x6be3, 0x00c0, 0x5ee0, 0x1078, 0x5f6d, 0x0078, 0x5eac, -+ 0x6004, 0xa08e, 0x0021, 0x0040, 0x5edc, 0xa08e, 0x0022, 0x1040, -+ 0x5f7c, 0x0078, 0x5eac, 0x5f1d, 0x5f1f, 0x5f23, 0x5f27, 0x5f2b, -+ 0x5f2f, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, -+ 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, -+ 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, 0x5f1b, -+ 0x5f1b, 0x5f33, 0x5f39, 0x5f1b, 0x5f43, 0x5f39, 0x5f1b, 0x5f1b, -+ 0x5f1b, 0x5f1b, 0x5f1b, 0x5f39, 0x5f39, 0x5f1b, 0x5f1b, 0x5f1b, -+ 0x5f1b, 0x5f1b, 0x5f1b, 0x1078, 0x12cd, 0x0078, 0x5f39, 0x2001, -+ 0x000b, 0x0078, 0x5f4c, 0x2001, 0x0003, 0x0078, 0x5f4c, 0x2001, -+ 0x0005, 0x0078, 0x5f4c, 0x2001, 0x0001, 0x0078, 0x5f4c, 0x2001, -+ 0x0009, 0x0078, 0x5f4c, 0x1078, 0x12cd, 0x0078, 0x5f4b, 0x1078, -+ 0x37f4, 0x1078, 0x4c9d, 0x6003, 0x0002, 0x6017, 0x0028, 0x1078, -+ 0x4d96, 0x0078, 0x5f4b, 0x1078, 0x4c9d, 0x6003, 0x0004, 0x6017, -+ 0x0028, 0x1078, 0x4d96, 0x007c, 0x1078, 0x37f4, 0x1078, 0x4c9d, -+ 0x6003, 0x0002, 0x037e, 0x2019, 0x775c, 0x2304, 0xa084, 0xff00, -+ 0x00c0, 0x5f5e, 0x2019, 0x0028, 0x0078, 0x5f67, 0x8007, 0xa09a, -+ 0x0004, 0x0048, 0x5f5a, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, -+ 0x037f, 0x1078, 0x4d96, 0x0078, 0x5f4b, 0x0e7e, 0x1078, 0x6a58, -+ 0x0040, 0x5f7a, 0x6010, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, -+ 0x7033, 0x0100, 0x0e7f, 0x007c, 0x0e7e, 0xacf0, 0x0004, 0x2e74, -+ 0x7000, 0x2070, 0x7037, 0x0103, 0x7023, 0x8001, 0x0e7f, 0x007c, -+ 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0x00ff, 0x0d7f, 0xa0b2, -+ 0x000c, 0x10c8, 0x12cd, 0x6604, 0xa6b6, 0x0028, 0x00c0, 0x5f9c, -+ 0x1078, 0x6c18, 0x0078, 0x5fce, 0x6604, 0xa6b6, 0x0029, 0x00c0, -+ 0x5fa5, 0x1078, 0x6c32, 0x0078, 0x5fce, 0x6604, 0xa6b6, 0x001f, -+ 0x00c0, 0x5fae, 0x1078, 0x5dab, 0x0078, 0x5fce, 0x6604, 0xa6b6, -+ 0x0000, 0x00c0, 0x5fb7, 0x1078, 0x5df0, 0x0078, 0x5fce, 0x6604, -+ 0xa6b6, 0x0022, 0x00c0, 0x5fc0, 0x1078, 0x5dd4, 0x0078, 0x5fce, -+ 0xa1b6, 0x0015, 0x00c0, 0x5fc8, 0x1079, 0x5fd3, 0x0078, 0x5fce, -+ 0xa1b6, 0x0016, 0x00c0, 0x5fcf, 0x1079, 0x6110, 0x007c, 0x1078, -+ 0x5d4f, 0x0078, 0x5fce, 0x5ff7, 0x5ffa, 0x5ff7, 0x603b, 0x5ff7, -+ 0x60ac, 0x5ff7, 0x5ff7, 0x5ff7, 0x60e8, 0x5ff7, 0x60fe, 0xa1b6, -+ 0x0048, 0x0040, 0x5feb, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, -+ 0x1078, 0x156a, 0x007c, 0x0e7e, 0xacf0, 0x0004, 0x2e74, 0x7000, -+ 0x2070, 0x7037, 0x0103, 0x0e7f, 0x1078, 0x5d1a, 0x007c, 0x0005, -+ 0x0005, 0x007c, 0x0e7e, 0x2071, 0x7700, 0x7078, 0xa086, 0x0074, -+ 0x00c0, 0x6024, 0x1078, 0x744f, 0x00c0, 0x6016, 0x0d7e, 0x6018, -+ 0x2068, 0x1078, 0x6028, 0x0d7f, 0x2001, 0x0006, 0x1078, 0x37f4, -+ 0x1078, 0x22d7, 0x1078, 0x5d1a, 0x0078, 0x6026, 0x2001, 0x000a, -+ 0x1078, 0x37f4, 0x1078, 0x22d7, 0x6003, 0x0001, 0x6007, 0x0001, -+ 0x1078, 0x498e, 0x0078, 0x6026, 0x1078, 0x609c, 0x0e7f, 0x007c, -+ 0x6800, 0xd084, 0x0040, 0x603a, 0x2001, 0x0000, 0x1078, 0x37e0, -+ 0x2069, 0x7751, 0x6804, 0xd0a4, 0x0040, 0x603a, 0x2001, 0x0006, -+ 0x1078, 0x3802, 0x007c, 0x0d7e, 0x2011, 0x771e, 0x2204, 0xa086, -+ 0x0074, 0x00c0, 0x6098, 0x1078, 0x61ea, 0x6018, 0x2068, 0xa080, -+ 0x0028, 0x2014, 0xa286, 0x007e, 0x0040, 0x6063, 0xa286, 0x0080, -+ 0x00c0, 0x608c, 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6010, 0xa005, -+ 0x0040, 0x6082, 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6833, -+ 0x0200, 0x0078, 0x6082, 0x0e7e, 0x0f7e, 0x6813, 0x00ff, 0x6817, -+ 0xfffe, 0x2071, 0x772f, 0x2e04, 0xa085, 0x0003, 0x2072, 0x2071, -+ 0x7c80, 0x2079, 0x0100, 0x2e04, 0xa084, 0x00ff, 0x2069, 0x7719, -+ 0x206a, 0x78e6, 0x8e70, 0x2e04, 0x2069, 0x771a, 0x206a, 0x78ea, -+ 0x0f7f, 0x0e7f, 0x2001, 0x0006, 0x1078, 0x37f4, 0x1078, 0x22d7, -+ 0x1078, 0x5d1a, 0x0078, 0x609a, 0x2001, 0x0004, 0x1078, 0x37f4, -+ 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x498e, 0x0078, 0x609a, -+ 0x1078, 0x609c, 0x0d7f, 0x007c, 0x2001, 0x7700, 0x2004, 0xa086, -+ 0x0003, 0x0040, 0x60a7, 0x2001, 0x0007, 0x1078, 0x37f4, 0x1078, -+ 0x22d7, 0x1078, 0x5d1a, 0x007c, 0x0e7e, 0x2071, 0x7700, 0x7078, -+ 0xa086, 0x0014, 0x00c0, 0x60e2, 0x7000, 0xa086, 0x0003, 0x00c0, -+ 0x60bf, 0x6010, 0xa005, 0x00c0, 0x60bf, 0x1078, 0x2dd7, 0x0d7e, -+ 0x6018, 0x2068, 0x1078, 0x38c8, 0x1078, 0x6028, 0x0d7f, 0x1078, -+ 0x61f4, 0x00c0, 0x60e2, 0x2001, 0x0006, 0x1078, 0x37f4, 0x0e7e, -+ 0x6010, 0xa005, 0x0040, 0x60db, 0x2070, 0x7007, 0x0000, 0x7037, -+ 0x0103, 0x7033, 0x0200, 0x0e7f, 0x1078, 0x22d7, 0x1078, 0x5d1a, -+ 0x0078, 0x60e6, 0x1078, 0x5f6d, 0x1078, 0x609c, 0x0e7f, 0x007c, -+ 0x2011, 0x771e, 0x2204, 0xa086, 0x0014, 0x00c0, 0x60fb, 0x2001, -+ 0x0002, 0x1078, 0x37f4, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, -+ 0x498e, 0x0078, 0x60fd, 0x1078, 0x609c, 0x007c, 0x2011, 0x771e, -+ 0x2204, 0xa086, 0x0004, 0x00c0, 0x610d, 0x2001, 0x0007, 0x1078, -+ 0x37f4, 0x1078, 0x5d1a, 0x0078, 0x610f, 0x1078, 0x609c, 0x007c, -+ 0x5ff7, 0x611c, 0x5ff7, 0x6142, 0x5ff7, 0x619d, 0x5ff7, 0x5ff7, -+ 0x5ff7, 0x61b2, 0x5ff7, 0x61c5, 0x0c7e, 0x1078, 0x61d8, 0x00c0, -+ 0x6131, 0x2001, 0x0000, 0x1078, 0x37e0, 0x2001, 0x0002, 0x1078, -+ 0x37f4, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x498e, 0x0078, -+ 0x6140, 0x2009, 0x7c8f, 0x2104, 0xa084, 0xff00, 0xa086, 0x1900, -+ 0x00c0, 0x613e, 0x1078, 0x5d1a, 0x0078, 0x6140, 0x1078, 0x609c, -+ 0x0c7f, 0x007c, 0x1078, 0x61e7, 0x00c0, 0x6156, 0x2001, 0x0000, -+ 0x1078, 0x37e0, 0x2001, 0x0002, 0x1078, 0x37f4, 0x6003, 0x0001, -+ 0x6007, 0x0002, 0x1078, 0x498e, 0x0078, 0x6178, 0x1078, 0x5f6d, -+ 0x2009, 0x7c8e, 0x2134, 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x0040, -+ 0x6179, 0x2009, 0x7c8f, 0x2104, 0xa084, 0xff00, 0xa086, 0x1900, -+ 0x00c0, 0x6176, 0xa686, 0x0009, 0x0040, 0x6179, 0x2001, 0x0004, -+ 0x1078, 0x37f4, 0x1078, 0x5d1a, 0x0078, 0x6178, 0x1078, 0x609c, -+ 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6a58, 0x0040, 0x6187, -+ 0x6838, 0xd0fc, 0x0040, 0x6187, 0x0d7f, 0x0078, 0x6176, 0x6018, -+ 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, 0x6198, 0x8001, -+ 0x6842, 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f, 0x0078, 0x6178, -+ 0x1078, 0x22b5, 0x0d7f, 0x0078, 0x6176, 0x1078, 0x61e7, 0x00c0, -+ 0x61ad, 0x2001, 0x0004, 0x1078, 0x37f4, 0x6003, 0x0001, 0x6007, -+ 0x0003, 0x1078, 0x498e, 0x0078, 0x61b1, 0x1078, 0x5f6d, 0x1078, -+ 0x609c, 0x007c, 0x1078, 0x61e7, 0x00c0, 0x61c2, 0x2001, 0x0008, -+ 0x1078, 0x37f4, 0x6003, 0x0001, 0x6007, 0x0005, 0x1078, 0x498e, -+ 0x0078, 0x61c4, 0x1078, 0x609c, 0x007c, 0x1078, 0x61e7, 0x00c0, -+ 0x61d5, 0x2001, 0x000a, 0x1078, 0x37f4, 0x6003, 0x0001, 0x6007, -+ 0x0001, 0x1078, 0x498e, 0x0078, 0x61d7, 0x1078, 0x609c, 0x007c, -+ 0x2009, 0x7c8e, 0x2104, 0xa086, 0x0003, 0x00c0, 0x61e6, 0x2009, -+ 0x7c8f, 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, -+ 0x0001, 0x007c, 0x0c7e, 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, -+ 0x385e, 0x017f, 0x0c7f, 0x007c, 0x0e7e, 0x2071, 0x7c8c, 0x7004, -+ 0xa086, 0x0014, 0x00c0, 0x6217, 0x7008, 0xa086, 0x0800, 0x00c0, -+ 0x6217, 0x700c, 0xd0ec, 0x0040, 0x6215, 0xa084, 0x0f00, 0xa086, -+ 0x0100, 0x00c0, 0x6215, 0x7024, 0xd0a4, 0x0040, 0x6215, 0xd08c, -+ 0x0040, 0x6215, 0xa006, 0x0078, 0x6217, 0xa085, 0x0001, 0x0e7f, -+ 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, -+ 0x007e, 0x127e, 0x2091, 0x8000, 0x2029, 0x793f, 0x252c, 0x2021, -+ 0x7945, 0x2424, 0x2061, 0x7e00, 0x2071, 0x7700, 0x7244, 0x7060, -+ 0xa202, 0x00c8, 0x626e, 0x1078, 0x7659, 0x0040, 0x6266, 0x671c, -+ 0xa786, 0x0001, 0x0040, 0x6266, 0xa786, 0x0007, 0x0040, 0x6266, -+ 0x2500, 0xac06, 0x0040, 0x6266, 0x2400, 0xac06, 0x0040, 0x6266, -+ 0x0c7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x6250, 0x1078, 0x166e, -+ 0x6010, 0x2068, 0x1078, 0x6a58, 0x0040, 0x6263, 0xa786, 0x0003, -+ 0x00c0, 0x6278, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, -+ 0x3b92, 0x1078, 0x6ba9, 0x1078, 0x6bb6, 0x0c7f, 0xace0, 0x0008, -+ 0x7054, 0xac02, 0x00c8, 0x626e, 0x0078, 0x622e, 0x127f, 0x007f, -+ 0x027f, 0x047f, 0x057f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, -+ 0xa786, 0x0006, 0x00c0, 0x625a, 0x1078, 0x75fd, 0x0078, 0x6263, -+ 0x220c, 0x2304, 0xa106, 0x00c0, 0x628b, 0x8210, 0x8318, 0x00f0, -+ 0x6280, 0xa006, 0x007c, 0x2304, 0xa102, 0x0048, 0x6293, 0x2001, -+ 0x0001, 0x0078, 0x6295, 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, -+ 0x6004, 0xa08a, 0x0030, 0x10c8, 0x12cd, 0x1078, 0x6bcf, 0x0040, -+ 0x62a7, 0x1078, 0x6be3, 0x0040, 0x62b0, 0x0078, 0x62a9, 0x1078, -+ 0x22d7, 0x1078, 0x4c9d, 0x1078, 0x5d1a, 0x1078, 0x4d96, 0x007c, -+ 0x1078, 0x5f6d, 0x0078, 0x62a9, 0xa182, 0x0040, 0x0079, 0x62b8, -+ 0x62c8, 0x62c8, 0x62c8, 0x62c8, 0x62c8, 0x62c8, 0x62c8, 0x62c8, -+ 0x62c8, 0x62c8, 0x62c8, 0x62ca, 0x62ca, 0x62ca, 0x62ca, 0x62c8, -+ 0x1078, 0x12cd, 0x6003, 0x0001, 0x6106, 0x1078, 0x4941, 0x127e, -+ 0x2091, 0x8000, 0x1078, 0x4d96, 0x127f, 0x007c, 0xa186, 0x0013, -+ 0x00c0, 0x62df, 0x6004, 0xa082, 0x0040, 0x0079, 0x6355, 0xa186, -+ 0x0027, 0x00c0, 0x62fc, 0x1078, 0x4c9d, 0x1078, 0x22b5, 0x0d7e, -+ 0x6110, 0x2168, 0x1078, 0x6a58, 0x0040, 0x62f6, 0x6837, 0x0103, -+ 0x684b, 0x0029, 0x1078, 0x3b92, 0x1078, 0x6ba9, 0x0d7f, 0x1078, -+ 0x5d1a, 0x1078, 0x4d96, 0x007c, 0xa186, 0x0014, 0x00c0, 0x6305, -+ 0x6004, 0xa082, 0x0040, 0x0079, 0x6325, 0xa186, 0x0047, 0x10c0, -+ 0x12cd, 0x2001, 0x0109, 0x2004, 0xd084, 0x0040, 0x6322, 0x127e, -+ 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x1078, 0x4802, 0x027f, -+ 0x017f, 0x007f, 0x127f, 0x6000, 0xa086, 0x0002, 0x00c0, 0x6322, -+ 0x0078, 0x637c, 0x1078, 0x5d4f, 0x007c, 0x6337, 0x6335, 0x6335, -+ 0x6335, 0x6335, 0x6335, 0x6335, 0x6335, 0x6335, 0x6335, 0x6335, -+ 0x634e, 0x634e, 0x634e, 0x634e, 0x6335, 0x1078, 0x12cd, 0x1078, -+ 0x4c9d, 0x0d7e, 0x6110, 0x2168, 0x1078, 0x6a58, 0x0040, 0x6348, -+ 0x6837, 0x0103, 0x684b, 0x0006, 0x1078, 0x3b92, 0x1078, 0x6ba9, -+ 0x0d7f, 0x1078, 0x5d1a, 0x1078, 0x4d96, 0x007c, 0x1078, 0x4c9d, -+ 0x1078, 0x5d1a, 0x1078, 0x4d96, 0x007c, 0x6367, 0x6365, 0x6365, -+ 0x6365, 0x6365, 0x6365, 0x6365, 0x6365, 0x6365, 0x6365, 0x6365, -+ 0x6375, 0x6375, 0x6375, 0x6375, 0x6365, 0x1078, 0x12cd, 0x1078, -+ 0x4c9d, 0x6003, 0x0002, 0x1078, 0x4d96, 0x6010, 0xa088, 0x0013, -+ 0x2104, 0xa085, 0x0400, 0x200a, 0x007c, 0x1078, 0x4c9d, 0x6003, -+ 0x000f, 0x1078, 0x4d96, 0x007c, 0xa182, 0x0040, 0x0079, 0x6380, -+ 0x6390, 0x6390, 0x6390, 0x6390, 0x6390, 0x6392, 0x641b, 0x6433, -+ 0x6390, 0x6390, 0x6390, 0x6390, 0x6390, 0x6390, 0x6390, 0x6390, -+ 0x1078, 0x12cd, 0x0e7e, 0x0d7e, 0x2071, 0x7c8c, 0x6110, 0x2168, -+ 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0040, 0x63ff, 0xa68c, 0x00ff, -+ 0xa186, 0x0002, 0x0040, 0x63c4, 0xa186, 0x0028, 0x00c0, 0x63ae, -+ 0x1078, 0x6bbd, 0x684b, 0x001c, 0x0078, 0x63c6, 0xd6dc, 0x0040, -+ 0x63b9, 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, -+ 0x63c6, 0xd6d4, 0x0040, 0x63c4, 0x684b, 0x0007, 0x7318, 0x6b62, -+ 0x731c, 0x6b5e, 0x0078, 0x63c6, 0x684b, 0x0000, 0x6837, 0x0103, -+ 0x6e46, 0xa01e, 0xd6c4, 0x0040, 0x63d9, 0x7328, 0x732c, 0x6b56, -+ 0x037e, 0x2308, 0x2019, 0x7c98, 0xad90, 0x0019, 0x1078, 0x6841, -+ 0x037f, 0xd6cc, 0x0040, 0x640f, 0x7124, 0x695a, 0xa192, 0x0021, -+ 0x00c8, 0x63ed, 0x2071, 0x7c98, 0x831c, 0x2300, 0xae18, 0xad90, -+ 0x001d, 0x1078, 0x6841, 0x0078, 0x640f, 0x6838, 0xd0fc, 0x0040, -+ 0x63f6, 0x2009, 0x0020, 0x695a, 0x0078, 0x63e2, 0x0f7e, 0x2d78, -+ 0x1078, 0x67d9, 0x0f7f, 0x1078, 0x682e, 0x0078, 0x6411, 0x684b, -+ 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x640f, -+ 0x6810, 0x6914, 0xa115, 0x0040, 0x640f, 0x1078, 0x6587, 0x1078, -+ 0x3b92, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x0d7f, 0x0e7f, -+ 0x1078, 0x5d1a, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079, 0x7c8c, -+ 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, -+ 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x19c7, 0x1078, 0x49ad, -+ 0x1078, 0x4e56, 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, -+ 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x156a, 0x007c, 0xa182, 0x0040, -+ 0x0079, 0x6442, 0x6452, 0x6452, 0x6452, 0x6452, 0x6452, 0x6454, -+ 0x64eb, 0x6452, 0x6452, 0x6501, 0x6563, 0x6452, 0x6452, 0x6452, -+ 0x6452, 0x656e, 0x1078, 0x12cd, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, -+ 0x2071, 0x7c8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, -+ 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, -+ 0x86ff, 0x0040, 0x64e6, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, -+ 0x6475, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, -+ 0x64e6, 0x1078, 0x1327, 0x1040, 0x12cd, 0x2d00, 0x784a, 0x7f4c, -+ 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, -+ 0x7840, 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, -+ 0x64af, 0xa186, 0x0028, 0x00c0, 0x6499, 0x684b, 0x001c, 0x0078, -+ 0x64b1, 0xd6dc, 0x0040, 0x64a4, 0x684b, 0x0015, 0x7318, 0x6b62, -+ 0x731c, 0x6b5e, 0x0078, 0x64b1, 0xd6d4, 0x0040, 0x64af, 0x684b, -+ 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x64b1, 0x684b, -+ 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, -+ 0x0040, 0x64c6, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, -+ 0x7c98, 0xad90, 0x0019, 0x1078, 0x6841, 0x037f, 0xd6cc, 0x0040, -+ 0x64e6, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x64da, 0x2071, -+ 0x7c98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x6841, -+ 0x0078, 0x64e6, 0x7838, 0xd0fc, 0x0040, 0x64e3, 0x2009, 0x0020, -+ 0x695a, 0x0078, 0x64cf, 0x2d78, 0x1078, 0x67d9, 0x0d7f, 0x0e7f, -+ 0x0f7f, 0x077f, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079, 0x7c8c, -+ 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, -+ 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x19c7, 0x1078, 0x5681, -+ 0x007c, 0x0d7e, 0x6003, 0x0002, 0x1078, 0x4d45, 0x1078, 0x4e56, -+ 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040, 0x6561, 0xd1cc, 0x0040, -+ 0x653c, 0x6948, 0x6838, 0xd0fc, 0x0040, 0x6534, 0x017e, 0x684c, -+ 0x007e, 0x6850, 0x007e, 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, -+ 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x00f0, -+ 0x6523, 0x157f, 0x007f, 0x6852, 0x007f, 0x684e, 0x017f, 0x2168, -+ 0x1078, 0x1350, 0x0078, 0x655f, 0x017e, 0x1078, 0x1350, 0x0d7f, -+ 0x1078, 0x682e, 0x0078, 0x655f, 0x6837, 0x0103, 0x6944, 0xa184, -+ 0x00ff, 0xa186, 0x0002, 0x0040, 0x655b, 0xa086, 0x0028, 0x00c0, -+ 0x654d, 0x684b, 0x001c, 0x0078, 0x655d, 0xd1dc, 0x0040, 0x6554, -+ 0x684b, 0x0015, 0x0078, 0x655d, 0xd1d4, 0x0040, 0x655b, 0x684b, -+ 0x0007, 0x0078, 0x655d, 0x684b, 0x0000, 0x1078, 0x3b92, 0x1078, -+ 0x5d1a, 0x0d7f, 0x007c, 0x2019, 0x0001, 0x1078, 0x5880, 0x6003, -+ 0x0002, 0x1078, 0x4d45, 0x1078, 0x4e56, 0x007c, 0x1078, 0x4d45, -+ 0x1078, 0x22b5, 0x0d7e, 0x6110, 0x2168, 0x1078, 0x6a58, 0x0040, -+ 0x6581, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x3b92, 0x1078, -+ 0x6ba9, 0x0d7f, 0x1078, 0x5d1a, 0x1078, 0x4e56, 0x007c, 0x684b, -+ 0x0015, 0xd1fc, 0x0040, 0x6593, 0x684b, 0x0007, 0x8002, 0x8000, -+ 0x810a, 0xa189, 0x0000, 0x6962, 0x685e, 0x007c, 0xa182, 0x0040, -+ 0x0079, 0x659a, 0x65aa, 0x65aa, 0x65aa, 0x65aa, 0x65aa, 0x65ac, -+ 0x65aa, 0x6650, 0x6658, 0x65aa, 0x65aa, 0x65aa, 0x65aa, 0x65aa, -+ 0x65aa, 0x65aa, 0x1078, 0x12cd, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, -+ 0x2071, 0x7c8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, -+ 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, -+ 0x86ff, 0x0040, 0x6642, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, -+ 0x65cd, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, -+ 0x663f, 0x1078, 0x1327, 0x1040, 0x12cd, 0x2d00, 0x784a, 0x7f4c, -+ 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c, -+ 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186, 0x0002, -+ 0x0040, 0x6608, 0xa186, 0x0028, 0x00c0, 0x65f2, 0x684b, 0x001c, -+ 0x0078, 0x660a, 0xd6dc, 0x0040, 0x65fd, 0x684b, 0x0015, 0x7318, -+ 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x660a, 0xd6d4, 0x0040, 0x6608, -+ 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x660a, -+ 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e, -+ 0xd6c4, 0x0040, 0x661f, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, -+ 0x2019, 0x7c98, 0xad90, 0x0019, 0x1078, 0x6841, 0x037f, 0xd6cc, -+ 0x0040, 0x663f, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x6633, -+ 0x2071, 0x7c98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, -+ 0x6841, 0x0078, 0x663f, 0x7838, 0xd0fc, 0x0040, 0x663c, 0x2009, -+ 0x0020, 0x695a, 0x0078, 0x6628, 0x2d78, 0x1078, 0x67d9, 0xd6dc, -+ 0x00c0, 0x6645, 0xa006, 0x0078, 0x6649, 0x2001, 0x0001, 0x7218, -+ 0x731c, 0x1078, 0x15ae, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, -+ 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x156a, 0x007c, -+ 0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040, -+ 0x66bf, 0xd1cc, 0x0040, 0x668f, 0x6948, 0x6838, 0xd0fc, 0x0040, -+ 0x6687, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90, 0x000d, -+ 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012, -+ 0x8318, 0x8210, 0x00f0, 0x6676, 0x157f, 0x007f, 0x6852, 0x007f, -+ 0x684e, 0x017f, 0x2168, 0x1078, 0x1350, 0x0078, 0x66bd, 0x017e, -+ 0x1078, 0x1350, 0x0d7f, 0x1078, 0x682e, 0x0078, 0x66bd, 0x6837, -+ 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x66ae, -+ 0xa086, 0x0028, 0x00c0, 0x66a0, 0x684b, 0x001c, 0x0078, 0x66bb, -+ 0xd1dc, 0x0040, 0x66a7, 0x684b, 0x0015, 0x0078, 0x66bb, 0xd1d4, -+ 0x0040, 0x66ae, 0x684b, 0x0007, 0x0078, 0x66bb, 0x684b, 0x0000, -+ 0x684c, 0xd0ac, 0x0040, 0x66bb, 0x6810, 0x6914, 0xa115, 0x0040, -+ 0x66bb, 0x1078, 0x6587, 0x1078, 0x3b92, 0x1078, 0x5d1a, 0x0d7f, -+ 0x007c, 0x1078, 0x4c9d, 0x0078, 0x66c7, 0x1078, 0x4d45, 0x1078, -+ 0x6a58, 0x0040, 0x66de, 0x0d7e, 0x6110, 0x2168, 0x6837, 0x0103, -+ 0x2009, 0x770c, 0x210c, 0xd18c, 0x00c0, 0x66e7, 0xd184, 0x00c0, -+ 0x66e3, 0x6108, 0x694a, 0x1078, 0x3b92, 0x0d7f, 0x1078, 0x5d1a, -+ 0x1078, 0x4d96, 0x007c, 0x684b, 0x0004, 0x0078, 0x66db, 0x684b, -+ 0x0004, 0x0078, 0x66db, 0xa182, 0x0040, 0x0079, 0x66ef, 0x66ff, -+ 0x66ff, 0x66ff, 0x66ff, 0x66ff, 0x6701, 0x66ff, 0x6704, 0x66ff, -+ 0x66ff, 0x66ff, 0x66ff, 0x66ff, 0x66ff, 0x66ff, 0x66ff, 0x1078, -+ 0x12cd, 0x1078, 0x5d1a, 0x007c, 0x007e, 0x027e, 0xa016, 0x1078, -+ 0x156a, 0x027f, 0x007f, 0x007c, 0xa182, 0x0085, 0x0079, 0x6710, -+ 0x6719, 0x6717, 0x6717, 0x6717, 0x6717, 0x6717, 0x6717, 0x1078, -+ 0x12cd, 0x6003, 0x0001, 0x6106, 0x1078, 0x4941, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x4d96, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0, -+ 0x672f, 0x6004, 0xa082, 0x0085, 0x2008, 0x0079, 0x6763, 0xa186, -+ 0x0027, 0x00c0, 0x6750, 0x1078, 0x4c9d, 0x1078, 0x22b5, 0x0d7e, -+ 0x6010, 0x2068, 0x1078, 0x6a58, 0x0040, 0x6746, 0x6837, 0x0103, -+ 0x684b, 0x0029, 0x1078, 0x3b92, 0x1078, 0x6ba9, 0x0d7f, 0x1078, -+ 0x5d1a, 0x1078, 0x4d96, 0x007c, 0x1078, 0x5d4f, 0x0078, 0x674b, -+ 0xa186, 0x0014, 0x00c0, 0x674c, 0x1078, 0x4c9d, 0x0d7e, 0x6010, -+ 0x2068, 0x1078, 0x6a58, 0x0040, 0x6746, 0x6837, 0x0103, 0x684b, -+ 0x0006, 0x0078, 0x6742, 0x676c, 0x676a, 0x676a, 0x676a, 0x676a, -+ 0x676a, 0x6775, 0x1078, 0x12cd, 0x1078, 0x4c9d, 0x6017, 0x0014, -+ 0x6003, 0x000c, 0x1078, 0x4d96, 0x007c, 0x1078, 0x4c9d, 0x6017, -+ 0x0014, 0x6003, 0x000e, 0x1078, 0x4d96, 0x007c, 0xa182, 0x008c, -+ 0x00c8, 0x6788, 0xa182, 0x0085, 0x0048, 0x6788, 0x0079, 0x678b, -+ 0x1078, 0x5d4f, 0x007c, 0x6792, 0x6792, 0x6792, 0x6792, 0x6794, -+ 0x67b3, 0x6792, 0x1078, 0x12cd, 0x0d7e, 0x1078, 0x6ba9, 0x1078, -+ 0x6a58, 0x0040, 0x67af, 0x6010, 0x2068, 0x6837, 0x0103, 0x6850, -+ 0xd0b4, 0x0040, 0x67a7, 0x684b, 0x0006, 0x0078, 0x67ab, 0x684b, -+ 0x0005, 0x1078, 0x6c5c, 0x6847, 0x0000, 0x1078, 0x3b92, 0x1078, -+ 0x5d1a, 0x0d7f, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6a58, -+ 0x0040, 0x67ce, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x67c4, -+ 0x684b, 0x0006, 0x0078, 0x67c8, 0x684b, 0x0005, 0x1078, 0x6c5c, -+ 0x6847, 0x0000, 0x1078, 0x3b92, 0x1078, 0x6ba9, 0x0d7f, 0x1078, -+ 0x5d1a, 0x007c, 0x1078, 0x4c9d, 0x1078, 0x5d1a, 0x1078, 0x4d96, -+ 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001, 0xa182, -+ 0x0101, 0x00c8, 0x67e5, 0x0078, 0x67e7, 0x2009, 0x0100, 0x2130, -+ 0x2069, 0x7c98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, -+ 0x001d, 0x1078, 0x6841, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0040, -+ 0x67fb, 0x1078, 0x1350, 0x1078, 0x1327, 0x0040, 0x6825, 0x8528, -+ 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a, 0x003d, -+ 0x00c8, 0x6811, 0x2608, 0xad90, 0x000f, 0x1078, 0x6841, 0x0078, -+ 0x6825, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90, 0x000f, -+ 0x1078, 0x6841, 0x0078, 0x67fb, 0x0f7f, 0x852f, 0xa5ad, 0x0003, -+ 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x682a, 0x0f7f, 0x852f, 0xa5ad, -+ 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e, 0x8dff, -+ 0x0040, 0x683f, 0x6804, 0xa07d, 0x0040, 0x683d, 0x6807, 0x0000, -+ 0x1078, 0x3b92, 0x2f68, 0x0078, 0x6832, 0x1078, 0x3b92, 0x0f7f, -+ 0x007c, 0x157e, 0xa184, 0x0001, 0x0040, 0x6847, 0x8108, 0x810c, -+ 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0, 0x6849, -+ 0x157f, 0x007c, 0x127e, 0x2091, 0x8000, 0x601c, 0xa084, 0x000f, -+ 0x1079, 0x685c, 0x127f, 0x007c, 0x686b, 0x6864, 0x6866, 0x6884, -+ 0x6864, 0x6866, 0x6866, 0x6866, 0x1078, 0x12cd, 0xa006, 0x007c, -+ 0xa085, 0x0001, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6a58, -+ 0x0040, 0x6881, 0xa00e, 0x2001, 0x0005, 0x1078, 0x3c22, 0x1078, -+ 0x6c5c, 0x1078, 0x3b92, 0x1078, 0x5d1a, 0xa085, 0x0001, 0x0d7f, -+ 0x007c, 0xa006, 0x0078, 0x687f, 0x6000, 0xa08a, 0x0010, 0x10c8, -+ 0x12cd, 0x1079, 0x688c, 0x007c, 0x689c, 0x68b9, 0x689e, 0x68ca, -+ 0x68b5, 0x689c, 0x6866, 0x686b, 0x686b, 0x6866, 0x6866, 0x6866, -+ 0x6866, 0x6866, 0x6866, 0x6866, 0x1078, 0x12cd, 0x0d7e, 0x6010, -+ 0x2068, 0x1078, 0x6a58, 0x0040, 0x68a7, 0x1078, 0x6c5c, 0x0d7f, -+ 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078, 0x4941, -+ 0x1078, 0x4d96, 0xa085, 0x0001, 0x007c, 0x1078, 0x166e, 0x0078, -+ 0x689e, 0x0e7e, 0x2071, 0x7936, 0x7024, 0xac06, 0x00c0, 0x68c2, -+ 0x1078, 0x57ee, 0x1078, 0x5725, 0x0e7f, 0x00c0, 0x689e, 0x1078, -+ 0x6866, 0x007c, 0x037e, 0x0e7e, 0x2071, 0x7936, 0x703c, 0xac06, -+ 0x00c0, 0x68da, 0x2019, 0x0000, 0x1078, 0x5880, 0x0e7f, 0x037f, -+ 0x0078, 0x689e, 0x1078, 0x5b5c, 0x0e7f, 0x037f, 0x00c0, 0x689e, -+ 0x1078, 0x6866, 0x007c, 0x0c7e, 0x601c, 0xa084, 0x000f, 0x1079, -+ 0x68eb, 0x0c7f, 0x007c, 0x68fa, 0x6957, 0x69fc, 0x68fe, 0x68fa, -+ 0x68fa, 0x72dd, 0x5d1a, 0x6957, 0x1078, 0x6be3, 0x00c0, 0x68fa, -+ 0x1078, 0x5f6d, 0x007c, 0x6017, 0x0001, 0x007c, 0x6000, 0xa08a, -+ 0x0010, 0x10c8, 0x12cd, 0x1079, 0x6906, 0x007c, 0x6916, 0x6918, -+ 0x6938, 0x694a, 0x694a, 0x6916, 0x68fa, 0x68fa, 0x68fa, 0x694a, -+ 0x694a, 0x6916, 0x6916, 0x6916, 0x6916, 0x6954, 0x1078, 0x12cd, -+ 0x0e7e, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052, 0x2071, 0x7936, -+ 0x7024, 0xac06, 0x0040, 0x6934, 0x1078, 0x5725, 0x6007, 0x0085, -+ 0x6003, 0x000b, 0x601f, 0x0002, 0x6017, 0x0014, 0x1078, 0x4941, -+ 0x1078, 0x4d96, 0x0e7f, 0x007c, 0x6017, 0x0001, 0x0078, 0x6932, -+ 0x0d7e, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x6007, -+ 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078, 0x4941, 0x1078, -+ 0x4d96, 0x007c, 0x0d7e, 0x6017, 0x0001, 0x6010, 0x2068, 0x6850, -+ 0xc0b5, 0x6852, 0x0d7f, 0x007c, 0x1078, 0x5d1a, 0x007c, 0x6000, -+ 0xa08a, 0x0010, 0x10c8, 0x12cd, 0x1079, 0x695f, 0x007c, 0x696f, -+ 0x68fb, 0x6971, 0x696f, 0x6971, 0x696f, 0x696f, 0x696f, 0x68f4, -+ 0x68f4, 0x696f, 0x696f, 0x696f, 0x696f, 0x696f, 0x696f, 0x1078, -+ 0x12cd, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff, 0x0d7f, -+ 0xa08a, 0x000c, 0x10c8, 0x12cd, 0x1079, 0x697f, 0x007c, 0x698b, -+ 0x69aa, 0x698b, 0x69aa, 0x698b, 0x69aa, 0x698d, 0x6996, 0x698b, -+ 0x69aa, 0x698b, 0x69a3, 0x1078, 0x12cd, 0x6004, 0xa08e, 0x0004, -+ 0x0040, 0x69a5, 0xa08e, 0x0002, 0x0040, 0x69a5, 0x6004, 0x1078, -+ 0x6be3, 0x0040, 0x69f4, 0xa08e, 0x0021, 0x0040, 0x69f8, 0xa08e, -+ 0x0022, 0x0040, 0x69f4, 0x1078, 0x22b5, 0x1078, 0x5f6d, 0x1078, -+ 0x5d1a, 0x007c, 0x0c7e, 0x0d7e, 0x6104, 0xa186, 0x0016, 0x0040, -+ 0x69e4, 0xa186, 0x0002, 0x00c0, 0x69d3, 0x6018, 0x2068, 0x68a0, -+ 0xd0bc, 0x00c0, 0x69d3, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, -+ 0x69d3, 0x8001, 0x6842, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, -+ 0x0398, 0x1078, 0x5cb4, 0x0040, 0x69d3, 0x2d00, 0x601a, 0x601f, -+ 0x0001, 0x0078, 0x69e4, 0x0d7f, 0x0c7f, 0x1078, 0x5f6d, 0x1078, -+ 0x22b5, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x22d7, 0x127f, -+ 0x0e7f, 0x1078, 0x5d1a, 0x007c, 0x2001, 0x0002, 0x1078, 0x37f4, -+ 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x498e, 0x1078, 0x4d96, -+ 0x0d7f, 0x0c7f, 0x0078, 0x69e3, 0x1078, 0x5f6d, 0x0078, 0x69a7, -+ 0x1078, 0x5f7c, 0x0078, 0x69a7, 0x6000, 0xa08a, 0x0010, 0x10c8, -+ 0x12cd, 0x1079, 0x6a04, 0x007c, 0x6a14, 0x6a14, 0x6a14, 0x6a14, -+ 0x6a14, 0x6a14, 0x6a14, 0x6a14, 0x6a14, 0x68fa, 0x6a14, 0x68fb, -+ 0x6a16, 0x68fb, 0x6a1f, 0x6a14, 0x1078, 0x12cd, 0x6007, 0x008b, -+ 0x6003, 0x000d, 0x1078, 0x4941, 0x1078, 0x4d96, 0x007c, 0x1078, -+ 0x6ba9, 0x1078, 0x6a58, 0x0040, 0x6a41, 0x1078, 0x22b5, 0x0d7e, -+ 0x1078, 0x6a58, 0x0040, 0x6a34, 0x6010, 0x2068, 0x6837, 0x0103, -+ 0x684b, 0x0006, 0x1078, 0x3b92, 0x0d7f, 0x601f, 0x0001, 0x6007, -+ 0x0001, 0x6003, 0x0001, 0x1078, 0x498e, 0x1078, 0x4d96, 0x0078, -+ 0x6a43, 0x1078, 0x5d1a, 0x007c, 0xa284, 0x0007, 0x00c0, 0x6a55, -+ 0xa282, 0x7e00, 0x0048, 0x6a55, 0x2001, 0x7715, 0x2004, 0xa202, -+ 0x00c8, 0x6a55, 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x6a54, -+ 0x027e, 0x0e7e, 0x2071, 0x7700, 0x6210, 0x7058, 0xa202, 0x0048, -+ 0x6a6a, 0x705c, 0xa202, 0x00c8, 0x6a6a, 0xa085, 0x0001, 0x0e7f, -+ 0x027f, 0x007c, 0xa006, 0x0078, 0x6a67, 0x0e7e, 0x0c7e, 0x037e, -+ 0x007e, 0x127e, 0x2091, 0x8000, 0x2061, 0x7e00, 0x2071, 0x7700, -+ 0x7344, 0x7060, 0xa302, 0x00c8, 0x6a93, 0x601c, 0xa206, 0x00c0, -+ 0x6a8b, 0x1078, 0x6be3, 0x00c0, 0x6a87, 0x1078, 0x5f6d, 0x0c7e, -+ 0x1078, 0x5d1a, 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, -+ 0x6a93, 0x0078, 0x6a78, 0x127f, 0x007f, 0x037f, 0x0c7f, 0x0e7f, -+ 0x007c, 0x0e7e, 0x0c7e, 0x017e, 0xa188, 0x7820, 0x210c, 0x81ff, -+ 0x0040, 0x6ab1, 0x2061, 0x7e00, 0x2071, 0x7700, 0x017e, 0x1078, -+ 0x5cb4, 0x017f, 0x0040, 0x6ab4, 0x611a, 0x1078, 0x22b5, 0x1078, -+ 0x5d1a, 0xa006, 0x0078, 0x6ab6, 0xa085, 0x0001, 0x017f, 0x0c7f, -+ 0x0e7f, 0x007c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, -+ 0x1078, 0x5cb4, 0x057f, 0x0040, 0x6ad3, 0x6612, 0x651a, 0x601f, -+ 0x0003, 0x2009, 0x004b, 0x1078, 0x5d41, 0xa085, 0x0001, 0x127f, -+ 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6acf, 0x0c7e, 0x057e, -+ 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x5cb4, 0x057f, -+ 0x0040, 0x6afd, 0x6013, 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, -+ 0x2560, 0x1078, 0x3a36, 0x0c7f, 0x1078, 0x4a7e, 0x1078, 0x49c1, -+ 0x2c08, 0x1078, 0x747b, 0x2009, 0x004c, 0x1078, 0x5d41, 0xa085, -+ 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6af9, -+ 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, -+ 0x5cb4, 0x057f, 0x0040, 0x6b28, 0x6612, 0x651a, 0x601f, 0x0003, -+ 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, 0x3a36, 0x0c7f, 0x1078, -+ 0x4a7e, 0x1078, 0x49c1, 0x2c08, 0x1078, 0x747b, 0x2009, 0x004d, -+ 0x1078, 0x5d41, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, -+ 0xa006, 0x0078, 0x6b24, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, -+ 0x62a0, 0x0c7e, 0x1078, 0x5cb4, 0x057f, 0x0040, 0x6b53, 0x6612, -+ 0x651a, 0x601f, 0x0003, 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, -+ 0x3a36, 0x0c7f, 0x1078, 0x4a7e, 0x1078, 0x49c1, 0x2c08, 0x1078, -+ 0x747b, 0x2009, 0x004e, 0x1078, 0x5d41, 0xa085, 0x0001, 0x127f, -+ 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6b4f, 0x0c7e, 0x127e, -+ 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5cb4, 0x017f, 0x0040, 0x6b6f, -+ 0x660a, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f, -+ 0x1078, 0x5d41, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, -+ 0x0078, 0x6b6c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, -+ 0x5cb4, 0x017f, 0x0040, 0x6b8b, 0x660a, 0x611a, 0x601f, 0x0008, -+ 0x2d00, 0x6012, 0x2009, 0x0021, 0x1078, 0x5d41, 0xa085, 0x0001, -+ 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6b88, 0x0c7e, 0x127e, -+ 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5cb4, 0x017f, 0x0040, 0x6ba6, -+ 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078, -+ 0x5d41, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, -+ 0x6ba3, 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040, -+ 0x6bb3, 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x6013, 0x0000, -+ 0x601f, 0x0007, 0x6017, 0x0014, 0x007c, 0x067e, 0x0c7e, 0x0d7e, -+ 0x2031, 0x7752, 0x2634, 0xd6e4, 0x0040, 0x6bcb, 0x6618, 0x2660, -+ 0x6e48, 0x1078, 0x3942, 0x0d7f, 0x0c7f, 0x067f, 0x007c, 0x007e, -+ 0x017e, 0x6004, 0xa08e, 0x0002, 0x0040, 0x6be0, 0xa08e, 0x0003, -+ 0x0040, 0x6be0, 0xa08e, 0x0004, 0x0040, 0x6be0, 0xa085, 0x0001, -+ 0x017f, 0x007f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0000, -+ 0x0040, 0x6bf8, 0xa08e, 0x001f, 0x0040, 0x6bf8, 0xa08e, 0x0028, -+ 0x0040, 0x6bf8, 0xa08e, 0x0029, 0x0040, 0x6bf8, 0xa085, 0x0001, -+ 0x017f, 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, -+ 0x1078, 0x5cb4, 0x017f, 0x0040, 0x6c15, 0x611a, 0x601f, 0x0001, -+ 0x2d00, 0x6012, 0x1078, 0x22b5, 0x2009, 0x0028, 0x1078, 0x5d41, -+ 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6c12, -+ 0xa186, 0x0015, 0x00c0, 0x6c2d, 0x2011, 0x771e, 0x2204, 0xa086, -+ 0x0074, 0x00c0, 0x6c2d, 0x1078, 0x61ea, 0x6003, 0x0001, 0x6007, -+ 0x0029, 0x1078, 0x498e, 0x0078, 0x6c31, 0x1078, 0x5f6d, 0x1078, -+ 0x5d1a, 0x007c, 0xa186, 0x0015, 0x00c0, 0x6c4f, 0x2011, 0x771e, -+ 0x2204, 0xa086, 0x0014, 0x00c0, 0x6c4f, 0x0d7e, 0x6018, 0x2068, -+ 0x1078, 0x38c8, 0x0d7f, 0x1078, 0x61f4, 0x00c0, 0x6c4f, 0x2001, -+ 0x0006, 0x1078, 0x37f4, 0x1078, 0x5dc5, 0x0078, 0x6c53, 0x1078, -+ 0x5f6d, 0x1078, 0x5d1a, 0x007c, 0x6848, 0xa086, 0x0005, 0x00c0, -+ 0x6c5b, 0x1078, 0x6c5c, 0x007c, 0x6850, 0xc0ad, 0x6852, 0x007c, -+ 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12cd, 0x1079, 0x6c6a, -+ 0x067f, 0x007c, 0x6c7a, 0x6e51, 0x6f32, 0x6c7a, 0x6c7a, 0x6c7a, -+ 0x6c7a, 0x6c7a, 0x6cb4, 0x6fa0, 0x6c7a, 0x6c7a, 0x6c7a, 0x6c7a, -+ 0x6c7a, 0x6c7a, 0x1078, 0x12cd, 0x067e, 0x6000, 0xa0b2, 0x0010, -+ 0x10c8, 0x12cd, 0x1079, 0x6c86, 0x067f, 0x007c, 0x6c96, 0x728c, -+ 0x6c96, 0x6c96, 0x6c96, 0x6c96, 0x6c96, 0x6c96, 0x7267, 0x72d6, -+ 0x6c96, 0x6c96, 0x6c96, 0x6c96, 0x6c96, 0x6c96, 0x1078, 0x12cd, -+ 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12cd, 0x1079, 0x6ca2, -+ 0x067f, 0x007c, 0x6cb2, 0x70d8, 0x714a, 0x716c, 0x71b8, 0x6cb2, -+ 0x6cb2, 0x7212, 0x6fac, 0x724f, 0x7253, 0x6cb2, 0x6cb2, 0x6cb2, -+ 0x6cb2, 0x6cb2, 0x1078, 0x12cd, 0xa1b2, 0x0030, 0x10c8, 0x12cd, -+ 0x2100, 0x0079, 0x6cbb, 0x6ceb, 0x6dc8, 0x6ceb, 0x6ceb, 0x6ceb, -+ 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, -+ 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, -+ 0x6ceb, 0x6ceb, 0x6ced, 0x6d1c, 0x6d27, 0x6d4f, 0x6d55, 0x6d89, -+ 0x6dc1, 0x6ceb, 0x6ceb, 0x6dd0, 0x6ceb, 0x6ceb, 0x6dd7, 0x6dde, -+ 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6ceb, 0x6dfb, 0x6ceb, 0x6ceb, -+ 0x6e06, 0x6ceb, 0x6ceb, 0x1078, 0x12cd, 0x1078, 0x3b3e, 0x6618, -+ 0x0c7e, 0x2660, 0x1078, 0x385e, 0x0c7f, 0xa6b0, 0x0001, 0x2634, -+ 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x6d0e, 0x1078, 0x73b7, -+ 0x00c0, 0x6d49, 0x1078, 0x7355, 0x00c0, 0x6d0a, 0x6007, 0x0008, -+ 0x0078, 0x6dc3, 0x6007, 0x0009, 0x0078, 0x6dc3, 0x1078, 0x754c, -+ 0x0040, 0x6d18, 0x1078, 0x73b7, 0x0040, 0x6d02, 0x0078, 0x6d49, -+ 0x6013, 0x1900, 0x0078, 0x6d0a, 0x6106, 0x1078, 0x7317, 0x6007, -+ 0x0006, 0x0078, 0x6dc3, 0x6007, 0x0007, 0x0078, 0x6dc3, 0x0d7e, -+ 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, -+ 0x0040, 0x6d39, 0xa686, 0x0004, 0x0040, 0x6d39, 0x0d7f, 0x0078, -+ 0x6d49, 0x1078, 0x7415, 0x00c0, 0x6d44, 0x1078, 0x38c8, 0x6007, -+ 0x000a, 0x0d7f, 0x0078, 0x6dc3, 0x6007, 0x000b, 0x0d7f, 0x0078, -+ 0x6dc3, 0x1078, 0x22b5, 0x6007, 0x0001, 0x0078, 0x6dc3, 0x1078, -+ 0x22b5, 0x6007, 0x000c, 0x0078, 0x6dc3, 0x1078, 0x3b3e, 0x6618, -+ 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, -+ 0x6d76, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0, 0x6d49, -+ 0x1078, 0x7424, 0x00c0, 0x6d70, 0x6007, 0x000e, 0x0078, 0x6dc3, -+ 0x1078, 0x22b5, 0x6007, 0x000f, 0x0078, 0x6dc3, 0x1078, 0x754c, -+ 0x0040, 0x6d83, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, -+ 0x6d68, 0x0078, 0x6d49, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, -+ 0x6dc3, 0x1078, 0x3b3e, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, -+ 0x00ff, 0xa082, 0x0006, 0x0048, 0x6dae, 0xa6b4, 0xff00, 0x8637, -+ 0xa686, 0x0006, 0x00c0, 0x6d49, 0x1078, 0x744f, 0x00c0, 0x6da8, -+ 0x1078, 0x7355, 0x00c0, 0x6da8, 0x6007, 0x0010, 0x0078, 0x6dc3, -+ 0x1078, 0x22b5, 0x6007, 0x0011, 0x0078, 0x6dc3, 0x1078, 0x754c, -+ 0x0040, 0x6dbb, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, -+ 0x6d9c, 0x0078, 0x6d49, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, -+ 0x6dc3, 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x498e, 0x007c, -+ 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x498e, 0x0078, 0x6dc7, -+ 0x6007, 0x0020, 0x6003, 0x0001, 0x1078, 0x498e, 0x007c, 0x6007, -+ 0x0023, 0x6003, 0x0001, 0x1078, 0x498e, 0x007c, 0x017e, 0x027e, -+ 0x2011, 0x7c88, 0x2214, 0x2c08, 0x1078, 0x7614, 0x00c0, 0x6def, -+ 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x0078, 0x6df4, 0x1078, -+ 0x5d1a, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x498e, -+ 0x027f, 0x017f, 0x007c, 0x6106, 0x1078, 0x6e0d, 0x6007, 0x002b, -+ 0x0078, 0x6dc3, 0x6007, 0x002c, 0x0078, 0x6dc3, 0x6106, 0x1078, -+ 0x6e12, 0x6007, 0x002e, 0x0078, 0x6dc3, 0x0d7e, 0x1078, 0x6e38, -+ 0x0d7f, 0x007c, 0x0d7e, 0x1078, 0x6e47, 0x00c0, 0x6e31, 0x680c, -+ 0xa08c, 0xff00, 0x6824, 0xa084, 0x00ff, 0xa115, 0x6212, 0xd1e4, -+ 0x0040, 0x6e26, 0x2009, 0x0001, 0x0078, 0x6e2d, 0xd1ec, 0x0040, -+ 0x6e31, 0x2009, 0x0000, 0xa294, 0x00ff, 0x1078, 0x22f9, 0x0078, -+ 0x6e35, 0xa085, 0x0001, 0x0078, 0x6e36, 0xa006, 0x0d7f, 0x007c, -+ 0x2069, 0x7c8d, 0x6800, 0xa082, 0x0010, 0x00c8, 0x6e45, 0x6013, -+ 0x0000, 0xa085, 0x0001, 0x0078, 0x6e46, 0xa006, 0x007c, 0x6013, -+ 0x0000, 0x2069, 0x7c8c, 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, -+ 0x007c, 0x6004, 0xa0b2, 0x0030, 0x10c8, 0x12cd, 0xa1b6, 0x0013, -+ 0x00c0, 0x6e5d, 0x2008, 0x0079, 0x6e70, 0xa1b6, 0x0027, 0x0040, -+ 0x6e65, 0xa1b6, 0x0014, 0x10c0, 0x12cd, 0x2001, 0x0007, 0x1078, -+ 0x3802, 0x1078, 0x4c9d, 0x1078, 0x6bb6, 0x1078, 0x4d96, 0x007c, -+ 0x6ea0, 0x6ea2, 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea2, 0x6eaa, 0x6f0d, -+ 0x6ed0, 0x6f0d, 0x6ee4, 0x6f0d, 0x6eaa, 0x6f0d, 0x6f05, 0x6f0d, -+ 0x6f05, 0x6f0d, 0x6f0d, 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea0, -+ 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea0, 0x6ea0, -+ 0x6f0d, 0x6ea0, 0x6ea0, 0x6f0d, 0x6ea0, 0x6f0d, 0x6f0d, 0x6ea0, -+ 0x6ea0, 0x6ea0, 0x6ea0, 0x6f0d, 0x6f0d, 0x6ea0, 0x6f0d, 0x6f0d, -+ 0x1078, 0x12cd, 0x1078, 0x4c9d, 0x6003, 0x0002, 0x1078, 0x4d96, -+ 0x0078, 0x6f13, 0x0f7e, 0x2079, 0x7751, 0x7804, 0x0f7f, 0xd0ac, -+ 0x00c0, 0x6f0d, 0x2001, 0x0000, 0x1078, 0x37e0, 0x2001, 0x0002, -+ 0x1078, 0x37f4, 0x1078, 0x4c9d, 0x601f, 0x0001, 0x6003, 0x0001, -+ 0x6007, 0x0002, 0x1078, 0x498e, 0x1078, 0x4d96, 0x0c7e, 0x6118, -+ 0x2160, 0x2009, 0x0001, 0x1078, 0x4696, 0x0c7f, 0x0078, 0x6f13, -+ 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00, 0x8637, -+ 0xa686, 0x0006, 0x0040, 0x6f0d, 0xa686, 0x0004, 0x0040, 0x6f0d, -+ 0x2001, 0x0004, 0x0078, 0x6f0b, 0x2001, 0x7700, 0x2004, 0xa086, -+ 0x0003, 0x00c0, 0x6eed, 0x1078, 0x2dd7, 0x2001, 0x0006, 0x1078, -+ 0x6f14, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00, -+ 0x8637, 0xa686, 0x0006, 0x0040, 0x6f0d, 0x2001, 0x0006, 0x0078, -+ 0x6f0b, 0x2001, 0x0004, 0x0078, 0x6f0b, 0x2001, 0x0006, 0x1078, -+ 0x6f14, 0x0078, 0x6f0d, 0x1078, 0x3802, 0x1078, 0x4c9d, 0x1078, -+ 0x5d1a, 0x1078, 0x4d96, 0x007c, 0x017e, 0x0d7e, 0x6118, 0x2168, -+ 0x6900, 0xd184, 0x0040, 0x6f2f, 0x6104, 0xa18e, 0x000a, 0x00c0, -+ 0x6f27, 0x699c, 0xd1a4, 0x00c0, 0x6f27, 0x2001, 0x0007, 0x1078, -+ 0x37f4, 0x2001, 0x0000, 0x1078, 0x37e0, 0x1078, 0x22d7, 0x0d7f, -+ 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0xff00, -+ 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x12cd, 0xa1b6, 0x0015, -+ 0x00c0, 0x6f46, 0x1079, 0x6f4d, 0x0078, 0x6f4c, 0xa1b6, 0x0016, -+ 0x10c0, 0x12cd, 0x1079, 0x6f85, 0x007c, 0x5ff7, 0x5ff7, 0x5ff7, -+ 0x5ff7, 0x5ff7, 0x5ff7, 0x5ff7, 0x6f59, 0x5ff7, 0x5ff7, 0x5ff7, -+ 0x5ff7, 0x0f7e, 0x2079, 0x7751, 0x7804, 0x0f7f, 0xd0ac, 0x00c0, -+ 0x6f75, 0x2001, 0x0000, 0x1078, 0x37e0, 0x2001, 0x0002, 0x1078, -+ 0x37f4, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, -+ 0x498e, 0x1078, 0x4d96, 0x0078, 0x6f84, 0x2011, 0x7c83, 0x220c, -+ 0x017e, 0x0c7e, 0x1078, 0x384c, 0x00c0, 0x6f84, 0x1078, 0x3637, -+ 0x0c7f, 0x017f, 0x1078, 0x5d1a, 0x007c, 0x5ff7, 0x5ff7, 0x5ff7, -+ 0x5ff7, 0x5ff7, 0x5ff7, 0x5ff7, 0x6f91, 0x5ff7, 0x5ff7, 0x5ff7, -+ 0x5ff7, 0x1078, 0x61e7, 0x00c0, 0x6f9d, 0x6003, 0x0001, 0x6007, -+ 0x0001, 0x1078, 0x498e, 0x0078, 0x6f9f, 0x1078, 0x5d1a, 0x007c, -+ 0x6004, 0xa08a, 0x0030, 0x10c8, 0x12cd, 0x1078, 0x4c9d, 0x1078, -+ 0x6bb6, 0x1078, 0x4d96, 0x007c, 0xa182, 0x0040, 0x0079, 0x6fb0, -+ 0x6fc0, 0x6fc0, 0x6fc0, 0x6fc0, 0x6fc2, 0x6fc0, 0x6fc0, 0x6fc0, -+ 0x6fc0, 0x6fc0, 0x6fc0, 0x6fc0, 0x6fc0, 0x6fc0, 0x6fc0, 0x6fc0, -+ 0x1078, 0x12cd, 0x0d7e, 0x0e7e, 0x0f7e, 0x157e, 0x047e, 0x027e, -+ 0x6106, 0x2071, 0x7c80, 0x7444, 0xa4a4, 0xe600, 0x0040, 0x7026, -+ 0x2009, 0x0000, 0x0c7e, 0x1078, 0x4727, 0x2c68, 0x0c7f, 0x6a00, -+ 0xa284, 0x0001, 0x0040, 0x7091, 0x1078, 0x47e6, 0x0040, 0x70bc, -+ 0xa295, 0x0200, 0x6a02, 0x0078, 0x6feb, 0x2009, 0x0001, 0x2011, -+ 0x0200, 0x1078, 0x47d0, 0x1078, 0x1327, 0x1040, 0x12cd, 0x6003, -+ 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, -+ 0x6c5a, 0x2c00, 0x685e, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, -+ 0x694a, 0xa084, 0xff00, 0x6846, 0x684f, 0x0000, 0x6857, 0x0036, -+ 0x1078, 0x3b92, 0xa486, 0x2000, 0x00c0, 0x7014, 0x2019, 0x0017, -+ 0x1078, 0x75d9, 0x0078, 0x707e, 0xa486, 0x0400, 0x00c0, 0x701e, -+ 0x2019, 0x0002, 0x1078, 0x75d9, 0x0078, 0x707e, 0xa486, 0x0200, -+ 0x00c0, 0x7024, 0x1078, 0x75ca, 0x0078, 0x707e, 0x2009, 0x0000, -+ 0x0c7e, 0x1078, 0x4727, 0x2c68, 0x0c7f, 0x6a00, 0xa284, 0x0001, -+ 0x0040, 0x70d4, 0xa284, 0x0300, 0x00c0, 0x70cc, 0x6804, 0xa005, -+ 0x0040, 0x70bc, 0x8001, 0x6806, 0x6003, 0x0007, 0x1078, 0x130c, -+ 0x0040, 0x7085, 0x6013, 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, -+ 0x683b, 0x0000, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007, -+ 0x7130, 0x6986, 0x6846, 0x6853, 0x003d, 0x7044, 0xa084, 0x0003, -+ 0xa086, 0x0002, 0x00c0, 0x7060, 0x684f, 0x0040, 0x0078, 0x706a, -+ 0xa086, 0x0001, 0x00c0, 0x7068, 0x684f, 0x0080, 0x0078, 0x706a, -+ 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001, 0x7c90, 0xad90, 0x0015, -+ 0x200c, 0x810f, 0x2112, 0x8000, 0x8210, 0x00f0, 0x7070, 0x200c, -+ 0x6982, 0x8000, 0x200c, 0x697e, 0x1078, 0x3b92, 0x027f, 0x047f, -+ 0x157f, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x6013, 0x0100, 0x6003, -+ 0x0001, 0x6007, 0x0041, 0x1078, 0x4941, 0x1078, 0x4d96, 0x0078, -+ 0x707e, 0x2069, 0x7c92, 0x2d04, 0xa084, 0xff00, 0xa086, 0x1200, -+ 0x00c0, 0x70b0, 0x2069, 0x7c80, 0x686c, 0xa084, 0x00ff, 0x017e, -+ 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112, 0x017f, 0x6003, 0x0001, -+ 0x6007, 0x0043, 0x1078, 0x4941, 0x1078, 0x4d96, 0x0078, 0x707e, -+ 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x4941, -+ 0x1078, 0x4d96, 0x0078, 0x707e, 0x6013, 0x0300, 0x0078, 0x70c2, -+ 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x4941, -+ 0x1078, 0x4d96, 0x0078, 0x707e, 0x6013, 0x0500, 0x0078, 0x70c2, -+ 0x6013, 0x0600, 0x0078, 0x7091, 0x6013, 0x0200, 0x0078, 0x7091, -+ 0xa186, 0x0013, 0x00c0, 0x70ea, 0x6004, 0xa08a, 0x0040, 0x1048, -+ 0x12cd, 0xa08a, 0x0050, 0x10c8, 0x12cd, 0xa082, 0x0040, 0x2008, -+ 0x0079, 0x711b, 0xa186, 0x0047, 0x00c0, 0x70f0, 0x0078, 0x714a, -+ 0xa186, 0x0027, 0x0040, 0x70f8, 0xa186, 0x0014, 0x10c0, 0x12cd, -+ 0x6004, 0xa082, 0x0040, 0x2008, 0x0079, 0x70fe, 0x710e, 0x7110, -+ 0x7110, 0x710e, 0x710e, 0x710e, 0x710e, 0x710e, 0x710e, 0x710e, -+ 0x710e, 0x710e, 0x710e, 0x710e, 0x710e, 0x710e, 0x1078, 0x12cd, -+ 0x2001, 0x0007, 0x1078, 0x3802, 0x1078, 0x4c9d, 0x1078, 0x6bb6, -+ 0x1078, 0x4d96, 0x007c, 0x712b, 0x713b, 0x7134, 0x7144, 0x712b, -+ 0x712b, 0x712b, 0x712b, 0x712b, 0x712b, 0x712b, 0x712b, 0x712b, -+ 0x712b, 0x712b, 0x712b, 0x1078, 0x12cd, 0x6010, 0xa088, 0x0013, -+ 0x2104, 0xa085, 0x0400, 0x200a, 0x1078, 0x4c9d, 0x6003, 0x0002, -+ 0x1078, 0x4d96, 0x007c, 0x1078, 0x4c9d, 0x1078, 0x47a8, 0x1078, -+ 0x5d1a, 0x1078, 0x4d96, 0x007c, 0x1078, 0x4c9d, 0x2009, 0x0041, -+ 0x0078, 0x7212, 0xa182, 0x0040, 0x0079, 0x714e, 0x715e, 0x7160, -+ 0x715e, 0x715e, 0x715e, 0x715e, 0x715e, 0x7161, 0x715e, 0x715e, -+ 0x715e, 0x715e, 0x715e, 0x715e, 0x715e, 0x715e, 0x1078, 0x12cd, -+ 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, -+ 0x2c10, 0x1078, 0x156a, 0x007c, 0xa182, 0x0040, 0x0079, 0x7170, -+ 0x7180, 0x7180, 0x7180, 0x7180, 0x7180, 0x7180, 0x7180, 0x7180, -+ 0x7180, 0x7182, 0x71a5, 0x7180, 0x7180, 0x7180, 0x7180, 0x71a5, -+ 0x1078, 0x12cd, 0x1078, 0x4d45, 0x1078, 0x4e56, 0x6010, 0x0d7e, -+ 0x2068, 0x684c, 0xd0fc, 0x0040, 0x7198, 0xa08c, 0x0003, 0xa18e, -+ 0x0002, 0x0040, 0x719e, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x7212, -+ 0x6003, 0x0007, 0x1078, 0x47a8, 0x0d7f, 0x007c, 0x1078, 0x47a8, -+ 0x1078, 0x5d1a, 0x0d7f, 0x0078, 0x719d, 0x037e, 0x1078, 0x4d45, -+ 0x1078, 0x4e56, 0x6010, 0x0d7e, 0x2068, 0x2019, 0x0004, 0x1078, -+ 0x75fd, 0x1078, 0x6bb6, 0x6017, 0x0028, 0x0d7f, 0x037f, 0x007c, -+ 0xa186, 0x0013, 0x00c0, 0x71c6, 0x6004, 0xa086, 0x0042, 0x10c0, -+ 0x12cd, 0x1078, 0x4c9d, 0x1078, 0x4d96, 0x007c, 0xa186, 0x0027, -+ 0x0040, 0x71ce, 0xa186, 0x0014, 0x00c0, 0x71de, 0x6004, 0xa086, -+ 0x0042, 0x10c0, 0x12cd, 0x2001, 0x0007, 0x1078, 0x3802, 0x1078, -+ 0x4c9d, 0x1078, 0x6bb6, 0x1078, 0x4d96, 0x007c, 0xa182, 0x0040, -+ 0x0079, 0x71e2, 0x71f2, 0x71f2, 0x71f2, 0x71f2, 0x71f2, 0x71f2, -+ 0x71f2, 0x71f4, 0x7200, 0x71f2, 0x71f2, 0x71f2, 0x71f2, 0x71f2, -+ 0x71f2, 0x71f2, 0x1078, 0x12cd, 0x037e, 0x047e, 0x20e1, 0x0005, -+ 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x156a, 0x047f, 0x037f, 0x007c, -+ 0x6010, 0x0d7e, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x720c, 0x2009, -+ 0x0041, 0x0d7f, 0x0078, 0x7212, 0x6003, 0x0007, 0x1078, 0x47a8, -+ 0x0d7f, 0x007c, 0xa182, 0x0040, 0x0079, 0x7216, 0x7226, 0x7228, -+ 0x7234, 0x7240, 0x7226, 0x7226, 0x7226, 0x7226, 0x7226, 0x7226, -+ 0x7226, 0x7226, 0x7226, 0x7226, 0x7226, 0x7226, 0x1078, 0x12cd, -+ 0x6003, 0x0001, 0x6106, 0x1078, 0x4941, 0x127e, 0x2091, 0x8000, -+ 0x1078, 0x4d96, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, -+ 0x4941, 0x127e, 0x2091, 0x8000, 0x1078, 0x4d96, 0x127f, 0x007c, -+ 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078, 0x19c7, 0x127e, 0x2091, -+ 0x8000, 0x1078, 0x49ad, 0x1078, 0x4e56, 0x127f, 0x007c, 0x1078, -+ 0x4c9d, 0x0078, 0x7255, 0x1078, 0x4d45, 0x6110, 0x81ff, 0x0040, -+ 0x7262, 0x0d7e, 0x2168, 0x037e, 0x2019, 0x0029, 0x1078, 0x75fd, -+ 0x037f, 0x0d7f, 0x1078, 0x6bb6, 0x1078, 0x4d96, 0x007c, 0xa182, -+ 0x0085, 0x0079, 0x726b, 0x7272, 0x7272, 0x7272, 0x7274, 0x7272, -+ 0x7272, 0x7272, 0x1078, 0x12cd, 0x027e, 0x0e7e, 0x2071, 0x7c80, -+ 0x7220, 0x1078, 0x7517, 0x0040, 0x7281, 0x6007, 0x0086, 0x0078, -+ 0x7283, 0x6007, 0x0087, 0x6003, 0x0001, 0x1078, 0x4941, 0x1078, -+ 0x4d96, 0x0e7f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x729d, -+ 0x6004, 0xa08a, 0x0085, 0x1048, 0x12cd, 0xa08a, 0x008c, 0x10c8, -+ 0x12cd, 0xa082, 0x0085, 0x0079, 0x72b0, 0xa186, 0x0027, 0x0040, -+ 0x72a5, 0xa186, 0x0014, 0x10c0, 0x12cd, 0x2001, 0x0007, 0x1078, -+ 0x3802, 0x1078, 0x4c9d, 0x1078, 0x6bb6, 0x1078, 0x4d96, 0x007c, -+ 0x72b7, 0x72b9, 0x72b9, 0x72b7, 0x72b7, 0x72b7, 0x72b7, 0x1078, -+ 0x12cd, 0x1078, 0x4c9d, 0x1078, 0x5d1a, 0x1078, 0x4d96, 0x007c, -+ 0xa182, 0x0085, 0x1048, 0x12cd, 0xa182, 0x008c, 0x10c8, 0x12cd, -+ 0xa182, 0x0085, 0x0079, 0x72cc, 0x72d3, 0x72d3, 0x72d3, 0x72d5, -+ 0x72d3, 0x72d3, 0x72d3, 0x1078, 0x12cd, 0x007c, 0x1078, 0x4c9d, -+ 0x1078, 0x6bb6, 0x1078, 0x4d96, 0x007c, 0x037e, 0x2019, 0x000b, -+ 0x1078, 0x72e6, 0x601f, 0x0006, 0x037f, 0x007c, 0x127e, 0x037e, -+ 0x087e, 0x2091, 0x8000, 0x2c40, 0x1078, 0x5a2d, 0x00c0, 0x7313, -+ 0x1078, 0x5ace, 0x00c0, 0x7313, 0x6000, 0xa086, 0x0000, 0x0040, -+ 0x7313, 0x601c, 0xa086, 0x0007, 0x0040, 0x7313, 0x0d7e, 0x6000, -+ 0xa086, 0x0004, 0x00c0, 0x7306, 0x1078, 0x166e, 0x6010, 0x2068, -+ 0x1078, 0x6a58, 0x0040, 0x730e, 0x1078, 0x75fd, 0x0d7f, 0x6013, -+ 0x0000, 0x601f, 0x0007, 0x087f, 0x037f, 0x127f, 0x007c, 0x0f7e, -+ 0x0c7e, 0x037e, 0x157e, 0x2079, 0x7c80, 0x7838, 0xa08c, 0x00ff, -+ 0x783c, 0x1078, 0x207f, 0x00c0, 0x734e, 0x017e, 0x0c7e, 0x1078, -+ 0x384c, 0x00c0, 0x734e, 0x2011, 0x7c90, 0xac98, 0x000a, 0x20a9, -+ 0x0004, 0x1078, 0x6280, 0x00c0, 0x734e, 0x017f, 0x027f, 0x027e, -+ 0x017e, 0x2019, 0x0029, 0x1078, 0x5ba2, 0x1078, 0x4a7e, 0x1078, -+ 0x49c1, 0x017f, 0x1078, 0x747b, 0x1078, 0x3a36, 0x017f, 0x1078, -+ 0x3637, 0x6612, 0x6516, 0xa006, 0x0078, 0x7350, 0x0c7f, 0x017f, -+ 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, -+ 0x2009, 0x771e, 0x2104, 0xa086, 0x0074, 0x00c0, 0x73ac, 0x2069, -+ 0x7c8e, 0x690c, 0xa182, 0x0100, 0x0048, 0x739c, 0x6908, 0xa184, -+ 0x8000, 0x0040, 0x73a8, 0xa184, 0x0800, 0x0040, 0x73a8, 0x6910, -+ 0xa18a, 0x0001, 0x0048, 0x73a0, 0x6914, 0x2069, 0x7cae, 0x6904, -+ 0x81ff, 0x00c0, 0x7394, 0x690c, 0xa182, 0x0100, 0x0048, 0x739c, -+ 0x6908, 0x81ff, 0x00c0, 0x7398, 0x6910, 0xa18a, 0x0001, 0x0048, -+ 0x73a0, 0x6918, 0xa18a, 0x0001, 0x0048, 0x73a8, 0x0078, 0x73b2, -+ 0x6013, 0x0100, 0x0078, 0x73ae, 0x6013, 0x0300, 0x0078, 0x73ae, -+ 0x6013, 0x0500, 0x0078, 0x73ae, 0x6013, 0x0700, 0x0078, 0x73ae, -+ 0x6013, 0x0900, 0x0078, 0x73ae, 0x6013, 0x0b00, 0x0078, 0x73ae, -+ 0x6013, 0x0f00, 0x0078, 0x73ae, 0x6013, 0x2d00, 0xa085, 0x0001, -+ 0x0078, 0x73b3, 0xa006, 0x017f, 0x0d7f, 0x0c7f, 0x007c, 0x0c7e, -+ 0x0d7e, 0x027e, 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04, 0xa394, -+ 0x00ff, 0xa286, 0x0006, 0x0040, 0x73db, 0xa286, 0x0004, 0x0040, -+ 0x73db, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, 0x73db, -+ 0xa286, 0x0004, 0x0040, 0x73db, 0x0c7e, 0x2d60, 0x1078, 0x385e, -+ 0x0c7f, 0x0078, 0x740e, 0x2011, 0x7c96, 0xad98, 0x000a, 0x20a9, -+ 0x0004, 0x1078, 0x6280, 0x00c0, 0x740f, 0x2011, 0x7c9a, 0xad98, -+ 0x0006, 0x20a9, 0x0004, 0x1078, 0x6280, 0x00c0, 0x740f, 0x047e, -+ 0x017e, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x7752, -+ 0x210c, 0xd1a4, 0x0040, 0x7403, 0x2009, 0x0029, 0x1078, 0x7641, -+ 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, 0x1078, 0x4a7e, 0x1078, -+ 0x49c1, 0x2c08, 0x1078, 0x747b, 0x017f, 0x047f, 0xa006, 0x157f, -+ 0x037f, 0x027f, 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069, 0x7c8e, -+ 0x6800, 0xa086, 0x0800, 0x0040, 0x7421, 0x6013, 0x0000, 0x0078, -+ 0x7422, 0xa006, 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e, 0x027e, -+ 0x037e, 0x157e, 0x2079, 0x7c8c, 0x7930, 0x7834, 0x1078, 0x207f, -+ 0x00c0, 0x7448, 0x1078, 0x384c, 0x00c0, 0x7448, 0x2011, 0x7c90, -+ 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x6280, 0x00c0, 0x7448, -+ 0x2011, 0x7c94, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x6280, -+ 0x157f, 0x037f, 0x027f, 0x017f, 0x0f7f, 0x0c7f, 0x007c, 0x0c7e, -+ 0x007e, 0x017e, 0x027e, 0x037e, 0x157e, 0x2011, 0x7c83, 0x2204, -+ 0x8211, 0x220c, 0x1078, 0x207f, 0x00c0, 0x7474, 0x1078, 0x384c, -+ 0x00c0, 0x7474, 0x2011, 0x7c96, 0xac98, 0x000a, 0x20a9, 0x0004, -+ 0x1078, 0x6280, 0x00c0, 0x7474, 0x2011, 0x7c9a, 0xac98, 0x0006, -+ 0x20a9, 0x0004, 0x1078, 0x6280, 0x157f, 0x037f, 0x027f, 0x017f, -+ 0x007f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x057e, -+ 0x047e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2029, 0x793f, 0x252c, -+ 0x2021, 0x7945, 0x2424, 0x2061, 0x7e00, 0x2071, 0x7700, 0x7644, -+ 0x7060, 0x8001, 0xa602, 0x00c8, 0x74e0, 0x2100, 0xac06, 0x0040, -+ 0x74d6, 0x1078, 0x7659, 0x0040, 0x74d6, 0x671c, 0xa786, 0x0001, -+ 0x0040, 0x74f5, 0xa786, 0x0007, 0x0040, 0x74d6, 0x2500, 0xac06, -+ 0x0040, 0x74d6, 0x2400, 0xac06, 0x0040, 0x74d6, 0x1078, 0x766d, -+ 0x00c0, 0x74d6, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x74bc, -+ 0x017e, 0x1078, 0x166e, 0x017f, 0x6010, 0x2068, 0x1078, 0x6a58, -+ 0x0040, 0x74d3, 0xa786, 0x0003, 0x00c0, 0x74e9, 0x6837, 0x0103, -+ 0x6b4a, 0x6847, 0x0000, 0x017e, 0x1078, 0x6c54, 0x1078, 0x3b92, -+ 0x017f, 0x1078, 0x6ba9, 0x0d7f, 0x1078, 0x6bb6, 0xace0, 0x0008, -+ 0x2001, 0x7715, 0x2004, 0xac02, 0x00c8, 0x74e0, 0x0078, 0x748d, -+ 0x127f, 0x027f, 0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, -+ 0x007c, 0xa786, 0x0006, 0x00c0, 0x74c6, 0xa386, 0x0005, 0x0040, -+ 0x74d6, 0x1078, 0x75fd, 0x0078, 0x74d3, 0x1078, 0x766d, 0x00c0, -+ 0x74d6, 0xa180, 0x0001, 0x2004, 0xa086, 0x0018, 0x00c0, 0x74d6, -+ 0x6000, 0xa086, 0x0002, 0x00c0, 0x74d6, 0x1078, 0x6bcf, 0x0040, -+ 0x7511, 0x1078, 0x6be3, 0x00c0, 0x74d6, 0x1078, 0x5f6d, 0x0078, -+ 0x7513, 0x1078, 0x22d7, 0x1078, 0x6bb6, 0x0078, 0x74d6, 0x0c7e, -+ 0x0e7e, 0x017e, 0x2c08, 0x2170, 0x1078, 0x7614, 0x017f, 0x0040, -+ 0x7526, 0x601c, 0xa084, 0x000f, 0x1079, 0x7529, 0x0e7f, 0x0c7f, -+ 0x007c, 0x7531, 0x7531, 0x7531, 0x7531, 0x7531, 0x7531, 0x7533, -+ 0x7531, 0xa006, 0x007c, 0x047e, 0x017e, 0x7018, 0xa080, 0x0028, -+ 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x1078, -+ 0x7641, 0x017f, 0x047f, 0x037e, 0x2019, 0x0002, 0x1078, 0x72e6, -+ 0x037f, 0xa085, 0x0001, 0x007c, 0x2001, 0x0001, 0x1078, 0x37e0, -+ 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9, 0x0004, 0x2019, 0x7705, -+ 0x2011, 0x7c96, 0x1078, 0x6280, 0x037f, 0x027f, 0x017f, 0x157f, -+ 0xa005, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x027e, -+ 0x127e, 0x2091, 0x8000, 0x2061, 0x7e00, 0x2079, 0x0001, 0x8fff, -+ 0x0040, 0x75bd, 0x2071, 0x7700, 0x7644, 0x7060, 0x8001, 0xa602, -+ 0x00c8, 0x75bd, 0x88ff, 0x0040, 0x7583, 0x2800, 0xac06, 0x00c0, -+ 0x75b3, 0x2079, 0x0000, 0x1078, 0x7659, 0x0040, 0x75b3, 0x2400, -+ 0xac06, 0x0040, 0x75b3, 0x671c, 0xa786, 0x0006, 0x00c0, 0x75b3, -+ 0xa786, 0x0007, 0x0040, 0x75b3, 0x88ff, 0x00c0, 0x759b, 0x6018, -+ 0xa206, 0x00c0, 0x75b3, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, -+ 0x75a3, 0x1078, 0x166e, 0x6010, 0x2068, 0x1078, 0x6a58, 0x0040, -+ 0x75ad, 0x047e, 0x1078, 0x75fd, 0x047f, 0x0d7f, 0x1078, 0x6bb6, -+ 0x88ff, 0x00c0, 0x75c6, 0xace0, 0x0008, 0x2001, 0x7715, 0x2004, -+ 0xac02, 0x00c8, 0x75bd, 0x0078, 0x756f, 0xa006, 0x127f, 0x027f, -+ 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5, 0x0001, -+ 0x0078, 0x75be, 0x087e, 0x2041, 0x0000, 0x2c20, 0x2019, 0x0002, -+ 0x6218, 0x1078, 0x5a2d, 0x1078, 0x5ace, 0x1078, 0x7562, 0x087f, -+ 0x007c, 0x027e, 0x047e, 0x087e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, -+ 0x007f, 0x2009, 0x0000, 0x017e, 0x037e, 0x1078, 0x384c, 0x00c0, -+ 0x75f2, 0x2c10, 0x2041, 0x0000, 0x1078, 0x5a2d, 0x1078, 0x5ace, -+ 0x1078, 0x7562, 0x037f, 0x017f, 0x8108, 0x00f0, 0x75e3, 0x157f, -+ 0x0c7f, 0x087f, 0x047f, 0x027f, 0x007c, 0x017e, 0x0f7e, 0x8dff, -+ 0x0040, 0x7611, 0x6800, 0xa07d, 0x0040, 0x760e, 0x6803, 0x0000, -+ 0x6b52, 0x1078, 0x3b92, 0x2f68, 0x0078, 0x7602, 0x6b52, 0x1078, -+ 0x3b92, 0x0f7f, 0x017f, 0x007c, 0x0e7e, 0x047e, 0x037e, 0x2061, -+ 0x7e00, 0x2071, 0x7700, 0x7444, 0x7060, 0x8001, 0xa402, 0x00c8, -+ 0x763c, 0x2100, 0xac06, 0x0040, 0x762e, 0x6000, 0xa086, 0x0000, -+ 0x0040, 0x762e, 0x6008, 0xa206, 0x0040, 0x7638, 0xace0, 0x0008, -+ 0x2001, 0x7715, 0x2004, 0xac02, 0x00c8, 0x763c, 0x0078, 0x7619, -+ 0xa085, 0x0001, 0x0078, 0x763d, 0xa006, 0x037f, 0x047f, 0x0e7f, -+ 0x007c, 0x0d7e, 0x007e, 0x1078, 0x1327, 0x007f, 0x1040, 0x12cd, -+ 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, -+ 0x685e, 0x6956, 0x6c46, 0x684f, 0x0000, 0x1078, 0x3b92, 0x0d7f, -+ 0x007c, 0x6700, 0xa786, 0x0000, 0x0040, 0x766c, 0xa786, 0x0001, -+ 0x0040, 0x766c, 0xa786, 0x000a, 0x0040, 0x766c, 0xa786, 0x0009, -+ 0x0040, 0x766c, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018, 0x2070, -+ 0x70a0, 0xa206, 0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, -+ 0x8000, 0x2071, 0x7740, 0xd5a4, 0x0040, 0x7681, 0x7034, 0x8000, -+ 0x7036, 0xd5b4, 0x0040, 0x7687, 0x7030, 0x8000, 0x7032, 0xd5ac, -+ 0x0040, 0x768e, 0x2071, 0x774a, 0x1078, 0x76bd, 0x0e7f, 0x007f, -+ 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, -+ 0x7740, 0xd5a4, 0x0040, 0x769f, 0x7034, 0x8000, 0x7036, 0xd5b4, -+ 0x0040, 0x76a5, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0x76ac, -+ 0x2071, 0x774a, 0x1078, 0x76bd, 0x0e7f, 0x007f, 0x127f, 0x007c, -+ 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x7742, 0x1078, -+ 0x76bd, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, -+ 0x00c8, 0x76c6, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, -+ 0x2071, 0x7740, 0x1078, 0x76bd, 0x0e7f, 0x007c, 0x0e7e, 0x2071, -+ 0x7744, 0x1078, 0x76bd, 0x0e7f, 0x007c, 0x0001, 0x0002, 0x0004, -+ 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, -+ 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0x687d -+}; -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/asm_2200.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,5286 @@ -+/* @(#)asm_2200.h 1.5 */ -+/* -+ * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 by Qlogic, Inc. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms are permitted provided -+ * that the following conditions are met: -+ * 1. Redistribution of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistribution in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+/************************************************************************ -+ * * -+ * --- ISP2200 Initiator/Target Firmware --- * -+ * with Fabric (Public Loop), Point-point, and * -+ * expanded LUN addressing for FCTAPE * -+ * * -+ ************************************************************************/ -+/* -+ * Firmware Version 2.02.03 (08:58 May 02, 2002) -+ */ -+static const u_int16_t isp_2200_risc_code[] = { -+ 0x0470, 0x0000, 0x0000, 0xa3f2, 0x0000, 0x0002, 0x0002, 0x0003, -+ 0x0017, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, -+ 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, -+ 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3232, 0x3030, 0x2046, 0x6972, -+ 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, -+ 0x322e, 0x3032, 0x2e30, 0x3320, 0x2020, 0x2020, 0x2400, 0x20c1, -+ 0x0005, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9, 0xb9ff, 0x2091, -+ 0x2000, 0x2059, 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x2930, -+ 0x2051, 0xb400, 0x2a70, 0x2029, 0xec00, 0x2031, 0xffff, 0x2039, -+ 0xebe9, 0x2021, 0x0200, 0x0804, 0x1464, 0x20a1, 0xb3f2, 0xa00e, -+ 0x20a9, 0x080e, 0x41a4, 0x3400, 0x7562, 0x7666, 0x775e, 0x746a, -+ 0x746e, 0x20a1, 0xbc00, 0x7164, 0x810d, 0x810d, 0x810d, 0x810d, -+ 0xa18c, 0x000f, 0x2001, 0x000b, 0xa112, 0xa00e, 0x21a8, 0x41a4, -+ 0x3400, 0x8211, 0x1dd8, 0x7164, 0x3400, 0xa102, 0x0120, 0x0218, -+ 0x20a8, 0xa00e, 0x41a4, 0x3800, 0xd08c, 0x01d8, 0x2009, 0xb400, -+ 0x810d, 0x810d, 0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0001, -+ 0xa112, 0x20a1, 0x1000, 0xa00e, 0x21a8, 0x41a4, 0x8211, 0x1de0, -+ 0x2009, 0xb400, 0x3400, 0xa102, 0x0120, 0x0218, 0x20a8, 0xa00e, -+ 0x41a4, 0x080c, 0x140d, 0x080c, 0x162e, 0x080c, 0x17c7, 0x080c, -+ 0x1f73, 0x080c, 0x4bb9, 0x080c, 0x8562, 0x080c, 0x15b7, 0x080c, -+ 0x2e88, 0x080c, 0x5d4b, 0x080c, 0x5302, 0x080c, 0x6893, 0x080c, -+ 0x24d9, 0x080c, 0x6b26, 0x080c, 0x637c, 0x080c, 0x239b, 0x080c, -+ 0x24a7, 0x2091, 0x3009, 0x7823, 0x0000, 0x1004, 0x10c5, 0x7820, -+ 0xa086, 0x0002, 0x1150, 0x7823, 0x4000, 0x0e04, 0x10bd, 0x781b, -+ 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, 0x7003, 0x0000, -+ 0x2a70, 0x7000, 0xa08e, 0x0003, 0x1158, 0x080c, 0x3ec6, 0x080c, -+ 0x2eaf, 0x080c, 0x5d99, 0x080c, 0x54b1, 0x080c, 0x68be, 0x0c80, -+ 0x000b, 0x0c98, 0x10e4, 0x10e5, 0x1210, 0x10e2, 0x12d9, 0x140a, -+ 0x140b, 0x140c, 0x080c, 0x1511, 0x0005, 0x0126, 0x00f6, 0x2091, -+ 0x8000, 0x7000, 0xa086, 0x0001, 0x1904, 0x11ed, 0x080c, 0x1584, -+ 0x080c, 0x5a90, 0x0150, 0x080c, 0x5ab6, 0x15c0, 0x2079, 0x0100, -+ 0x7828, 0xa085, 0x1800, 0x782a, 0x0488, 0x080c, 0x59c8, 0x7000, -+ 0xa086, 0x0001, 0x1904, 0x11ed, 0x708c, 0xa086, 0x0028, 0x1904, -+ 0x11ed, 0x2001, 0x0161, 0x2003, 0x0001, 0x2079, 0x0100, 0x7827, -+ 0xffff, 0x7a28, 0xa295, 0x1e2f, 0x7a2a, 0x2011, 0x5963, 0x080c, -+ 0x6961, 0x2011, 0x5956, 0x080c, 0x6a21, 0x2011, 0x59a5, 0x080c, -+ 0x6961, 0x2011, 0x4a96, 0x080c, 0x6961, 0x2011, 0x8030, 0x2019, -+ 0x0000, 0x708b, 0x0000, 0x080c, 0x1db8, 0x00e8, 0x080c, 0x4449, -+ 0x2079, 0x0100, 0x7844, 0xa005, 0x1904, 0x11ed, 0x2011, 0x4a96, -+ 0x080c, 0x6961, 0x2011, 0x59a5, 0x080c, 0x6961, 0x080c, 0x1db8, -+ 0x2001, 0xb68d, 0x2004, 0x780e, 0x7840, 0xa084, 0xfffb, 0x7842, -+ 0x2011, 0x8010, 0x73cc, 0x080c, 0x3e8a, 0x723c, 0xc284, 0x723e, -+ 0x2001, 0xb40c, 0x200c, 0xc1ac, 0x2102, 0x080c, 0x7edf, 0x2011, -+ 0x0004, 0x080c, 0x9bf1, 0x080c, 0x520e, 0x080c, 0x5a90, 0x0158, -+ 0x080c, 0x4ba2, 0x0140, 0x708b, 0x0001, 0x70c7, 0x0000, 0x080c, -+ 0x45e6, 0x0804, 0x11ed, 0x080c, 0x52ca, 0x0120, 0x7a0c, 0xc2b4, -+ 0x7a0e, 0x0060, 0x7073, 0x0000, 0x080c, 0x9f99, 0x70d4, 0xd09c, -+ 0x1128, 0x70a0, 0xa005, 0x0110, 0x080c, 0x4b80, 0x70df, 0x0000, -+ 0x70db, 0x0000, 0x72d4, 0x080c, 0x5a90, 0x1178, 0x2011, 0x0000, -+ 0x0016, 0x080c, 0x28b1, 0x2019, 0xb68f, 0x211a, 0x001e, 0x7053, -+ 0xffff, 0x7057, 0x00ef, 0x7077, 0x0000, 0x2079, 0xb452, 0x7804, -+ 0xd0ac, 0x0108, 0xc295, 0x72d6, 0x080c, 0x5a90, 0x0118, 0xa296, -+ 0x0004, 0x0548, 0x2011, 0x0001, 0x080c, 0x9bf1, 0x709b, 0x0000, -+ 0x709f, 0xffff, 0x7003, 0x0002, 0x2079, 0x0100, 0x7827, 0x0003, -+ 0x7828, 0xa085, 0x0003, 0x782a, 0x00fe, 0x080c, 0x2a7e, 0x2011, -+ 0x0005, 0x080c, 0x801f, 0x080c, 0x7134, 0x080c, 0x5a90, 0x0148, -+ 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, 0x28b1, 0x61e2, 0x001e, -+ 0x00ce, 0x012e, 0x0420, 0x709b, 0x0000, 0x709f, 0xffff, 0x7003, -+ 0x0002, 0x00f6, 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, 0xa085, -+ 0x0003, 0x782a, 0x00fe, 0x2011, 0x0005, 0x080c, 0x801f, 0x080c, -+ 0x7134, 0x080c, 0x5a90, 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, -+ 0x080c, 0x28b1, 0x61e2, 0x001e, 0x00ce, 0x00fe, 0x012e, 0x0005, -+ 0x00c6, 0x080c, 0x5a90, 0x1118, 0x20a9, 0x0100, 0x0010, 0x20a9, -+ 0x0082, 0x080c, 0x5a90, 0x1118, 0x2009, 0x0000, 0x0010, 0x2009, -+ 0x007e, 0x080c, 0x2d5b, 0x8108, 0x1f04, 0x1201, 0x00ce, 0x7073, -+ 0x0000, 0x7074, 0xa084, 0x00ff, 0x7076, 0x70a3, 0x0000, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x7000, 0xa086, 0x0002, 0x1904, 0x12d7, -+ 0x709c, 0xa086, 0xffff, 0x0130, 0x080c, 0x2a7e, 0x080c, 0x7134, -+ 0x0804, 0x12d7, 0x70d4, 0xd0ac, 0x1110, 0xd09c, 0x0540, 0xd084, -+ 0x0530, 0x0006, 0x0016, 0x2001, 0x0103, 0x2009, 0xb68d, 0x210c, -+ 0x2102, 0x001e, 0x000e, 0xd08c, 0x01d0, 0x70d8, 0xa086, 0xffff, -+ 0x0190, 0x080c, 0x2bdd, 0x080c, 0x7134, 0x70d4, 0xd094, 0x1904, -+ 0x12d7, 0x2011, 0x0001, 0x2019, 0x0000, 0x080c, 0x2c13, 0x080c, -+ 0x7134, 0x0804, 0x12d7, 0x70dc, 0xa005, 0x1904, 0x12d7, 0x7098, -+ 0xa005, 0x1904, 0x12d7, 0x70d4, 0xd0a4, 0x0118, 0xd0b4, 0x0904, -+ 0x12d7, 0x080c, 0x52ca, 0x1904, 0x12d7, 0x2001, 0xb453, 0x2004, -+ 0xd0ac, 0x01c8, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, 0x0000, -+ 0x0016, 0x080c, 0x4f6a, 0x1118, 0x6000, 0xd0ec, 0x1138, 0x001e, -+ 0x8108, 0x1f04, 0x1268, 0x00ce, 0x015e, 0x0028, 0x001e, 0x00ce, -+ 0x015e, 0x0804, 0x12d7, 0x0006, 0x0016, 0x2001, 0x0103, 0x2009, -+ 0xb68d, 0x210c, 0x2102, 0x001e, 0x000e, 0xa006, 0x2009, 0x0700, -+ 0x20a9, 0x0002, 0x20a1, 0xb6ce, 0x40a1, 0x7070, 0x8007, 0x7174, -+ 0x810f, 0x20a9, 0x0002, 0x40a1, 0x2009, 0x0000, 0x080c, 0x14f7, -+ 0x2001, 0x0000, 0x810f, 0x20a9, 0x0002, 0x40a1, 0xa006, 0x2009, -+ 0x0200, 0x20a9, 0x0002, 0x20a1, 0xb6de, 0x40a1, 0x7030, 0xc08c, -+ 0x7032, 0x7003, 0x0003, 0x709f, 0xffff, 0x080c, 0x157d, 0xa006, -+ 0x080c, 0x2789, 0x080c, 0x3efc, 0x00f6, 0x2079, 0x0100, 0x080c, -+ 0x5ab6, 0x0150, 0x080c, 0x5a90, 0x7828, 0x0118, 0xa084, 0xe1ff, -+ 0x0010, 0xa084, 0xffdf, 0x782a, 0x00fe, 0x2001, 0xb6e1, 0x2004, -+ 0xa086, 0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x801f, 0x2011, -+ 0x0000, 0x080c, 0x8029, 0x080c, 0x7134, 0x080c, 0x71f1, 0x012e, -+ 0x0005, 0x0016, 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, -+ 0x0100, 0x2009, 0xb434, 0x2104, 0xa005, 0x1110, 0x080c, 0x28dd, -+ 0x2009, 0x00f7, 0x080c, 0x4b69, 0x7940, 0xa18c, 0x0010, 0x7942, -+ 0x7924, 0xd1b4, 0x0110, 0x7827, 0x0040, 0xd19c, 0x0110, 0x7827, -+ 0x0008, 0x0006, 0x0036, 0x0156, 0x7954, 0xd1ac, 0x1904, 0x1347, -+ 0x080c, 0x5aa2, 0x0158, 0x080c, 0x5ab6, 0x1128, 0x2001, 0xb69e, -+ 0x2003, 0x0000, 0x0070, 0x080c, 0x5a98, 0x0dc0, 0x2001, 0xb69e, -+ 0x2003, 0xaaaa, 0x2001, 0xb69f, 0x2003, 0x0001, 0x080c, 0x59c8, -+ 0x0058, 0x080c, 0x5a90, 0x0140, 0x2009, 0x00f8, 0x080c, 0x4b69, -+ 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, -+ 0x1138, 0x080c, 0x5a90, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x13f1, -+ 0x1f04, 0x1326, 0x0070, 0x7824, 0x080c, 0x5aac, 0x0118, 0xd0ac, -+ 0x1904, 0x13f1, 0xa084, 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804, -+ 0x13f1, 0x2001, 0x0001, 0x080c, 0x2789, 0x0804, 0x1400, 0x7850, -+ 0xa084, 0x0180, 0x7852, 0x782f, 0x0020, 0x20a9, 0x0046, 0x1d04, -+ 0x134f, 0x080c, 0x6a09, 0x1f04, 0x134f, 0x7850, 0xa084, 0x0180, -+ 0xa085, 0x0400, 0x7852, 0x782f, 0x0000, 0x080c, 0x5aa2, 0x0158, -+ 0x080c, 0x5ab6, 0x1128, 0x2001, 0xb69e, 0x2003, 0x0000, 0x0070, -+ 0x080c, 0x5a98, 0x0dc0, 0x2001, 0xb69e, 0x2003, 0xaaaa, 0x2001, -+ 0xb69f, 0x2003, 0x0001, 0x080c, 0x59c8, 0x0020, 0x2009, 0x00f8, -+ 0x080c, 0x4b69, 0x20a9, 0x000e, 0xe000, 0x1f04, 0x137c, 0x7850, -+ 0xa084, 0x0180, 0xa085, 0x1400, 0x7852, 0x080c, 0x5a90, 0x0120, -+ 0x7843, 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, 0x2019, 0xea60, -+ 0x7820, 0xd09c, 0x1558, 0x080c, 0x5a90, 0x05d8, 0x7824, 0xd0ac, -+ 0x1904, 0x13f1, 0x080c, 0x5ab6, 0x1508, 0x0046, 0x2021, 0x0190, -+ 0x8421, 0x1df0, 0x004e, 0x8421, 0x11c8, 0x7827, 0x0048, 0x20a9, -+ 0x01f4, 0x1d04, 0x13a9, 0x080c, 0x6a09, 0x1f04, 0x13a9, 0x7824, -+ 0xa084, 0x0068, 0x15c8, 0x2001, 0xb69e, 0x2003, 0xaaaa, 0x2001, -+ 0xb69f, 0x2003, 0x0001, 0x7003, 0x0001, 0x0498, 0x1d04, 0x13c2, -+ 0x080c, 0x6a09, 0x8319, 0x1960, 0x2009, 0xb434, 0x2104, 0x8000, -+ 0x200a, 0xa084, 0xfff0, 0x0120, 0x200b, 0x0000, 0x080c, 0x28dd, -+ 0x00d8, 0x080c, 0x5aa2, 0x1140, 0xa4a2, 0x0064, 0x1128, 0x080c, -+ 0x5a67, 0x7003, 0x0001, 0x00a8, 0x7827, 0x1800, 0xe000, 0xe000, -+ 0x7824, 0x080c, 0x5aac, 0x0110, 0xd0ac, 0x1158, 0xa084, 0x1800, -+ 0x09a8, 0x7003, 0x0001, 0x0028, 0x2001, 0x0001, 0x080c, 0x2789, -+ 0x0048, 0x2001, 0xb434, 0x2003, 0x0000, 0x7827, 0x0048, 0x7828, -+ 0xc09d, 0x782a, 0x7850, 0xa084, 0x0180, 0xa085, 0x0400, 0x7852, -+ 0x015e, 0x003e, 0x000e, 0x080c, 0x1554, 0x012e, 0x00fe, 0x004e, -+ 0x001e, 0x0005, 0x0005, 0x0005, 0x0005, 0x2a70, 0x2061, 0xb6c1, -+ 0x2063, 0x0002, 0x6007, 0x0002, 0x600b, 0x0003, 0x600f, 0x0017, -+ 0x2001, 0xb69e, 0x2003, 0x0000, 0x708b, 0x0000, 0x2009, 0x0100, -+ 0x2104, 0xa082, 0x0002, 0x0218, 0x7053, 0xffff, 0x0010, 0x7053, -+ 0x0000, 0x705b, 0xffff, 0x7073, 0x0000, 0x7077, 0x0000, 0x080c, -+ 0x9f99, 0x2061, 0xb68e, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, -+ 0x8800, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x000f, 0x601b, -+ 0x0000, 0x601f, 0x07d0, 0x2061, 0xb696, 0x6003, 0x8000, 0x6007, -+ 0x0000, 0x600b, 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, -+ 0x0000, 0x601b, 0x0001, 0x601f, 0x0000, 0x2061, 0xb6b9, 0x6003, -+ 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, 0x2020, 0x2001, -+ 0xb428, 0x2003, 0x0000, 0x0005, 0x04a0, 0x2011, 0x0000, 0x81ff, -+ 0x0570, 0xa186, 0x0001, 0x1148, 0x2031, 0x8fff, 0x2039, 0xd401, -+ 0x2021, 0x0100, 0x2029, 0xd400, 0x00e8, 0xa186, 0x0002, 0x1118, -+ 0x2011, 0x0000, 0x00b8, 0xa186, 0x0005, 0x1118, 0x2011, 0x0001, -+ 0x0088, 0xa186, 0x0009, 0x1118, 0x2011, 0x0002, 0x0058, 0xa186, -+ 0x000a, 0x1118, 0x2011, 0x0002, 0x0028, 0xa186, 0x0055, 0x1110, -+ 0x2011, 0x0003, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x0804, -+ 0x104d, 0xa00e, 0x2011, 0x0003, 0x2019, 0x14a0, 0x0804, 0x14f1, -+ 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2c14, 0x2362, 0xe000, 0xe000, -+ 0x2c04, 0xa306, 0x2262, 0x1110, 0xc1b5, 0xc1a5, 0x2011, 0x0000, -+ 0x2019, 0x14b3, 0x04f0, 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2c14, -+ 0x2362, 0xe000, 0xe000, 0x2c1c, 0x2061, 0x7fff, 0xe000, 0xe000, -+ 0x2c04, 0x2061, 0xffff, 0x2262, 0xa306, 0x0110, 0xc18d, 0x0008, -+ 0xc185, 0x2011, 0x0002, 0x2019, 0x14ce, 0x0418, 0x2061, 0xffff, -+ 0x2019, 0xaaaa, 0x2c14, 0x2362, 0xe000, 0xe000, 0x2c04, 0x2262, -+ 0xa306, 0x1180, 0x2c14, 0x2362, 0xe000, 0xe000, 0x2c1c, 0x2061, -+ 0x7fff, 0x2c04, 0x2061, 0xffff, 0x2262, 0xa306, 0x1110, 0xc195, -+ 0x0008, 0xc19d, 0x2011, 0x0001, 0x2019, 0x14ef, 0x0010, 0x0804, -+ 0x1465, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x0837, 0x2011, -+ 0x0000, 0x080c, 0x4f6a, 0x1178, 0x6004, 0xa0c4, 0x00ff, 0xa8c6, -+ 0x0006, 0x0128, 0xa0c4, 0xff00, 0xa8c6, 0x0600, 0x1120, 0xa186, -+ 0x0080, 0x0108, 0x8210, 0x8108, 0xa186, 0x0100, 0x1d50, 0x2208, -+ 0x0005, 0x2091, 0x8000, 0x0e04, 0x1513, 0x0006, 0x0016, 0x2079, -+ 0x0000, 0x7818, 0xd084, 0x1de8, 0x001e, 0x792e, 0x000e, 0x782a, -+ 0x000e, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002, 0x781b, 0x0001, -+ 0x2091, 0x5000, 0x0126, 0x0156, 0x0146, 0x20a9, 0x0010, 0x20a1, -+ 0xb80c, 0x2091, 0x2000, 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2200, -+ 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2400, 0x40a1, 0x20a9, 0x0010, -+ 0x2091, 0x2600, 0x40a1, 0x20a9, 0x0010, 0x2091, 0x2800, 0x40a1, -+ 0x014e, 0x015e, 0x012e, 0x2079, 0xb400, 0x7803, 0x0005, 0x2091, -+ 0x4080, 0x04c9, 0x0cf8, 0x0005, 0x0006, 0x080c, 0x159f, 0x1518, -+ 0x00f6, 0x2079, 0xb424, 0x2f04, 0x8000, 0x207a, 0xa082, 0x000f, -+ 0x0258, 0xa006, 0x207a, 0x2079, 0xb426, 0x2f04, 0xa084, 0x0001, -+ 0xa086, 0x0001, 0x207a, 0x0070, 0x2079, 0xb426, 0x2f7c, 0x8fff, -+ 0x1128, 0x2001, 0x0c03, 0x2003, 0x0040, 0x0020, 0x2001, 0x0c03, -+ 0x2003, 0x00c0, 0x00fe, 0x000e, 0x0005, 0x0409, 0x1120, 0x2001, -+ 0x0c03, 0x2003, 0x0080, 0x0005, 0x00d1, 0x1120, 0x2001, 0x0c03, -+ 0x2003, 0x0040, 0x0005, 0x0006, 0x0091, 0x1178, 0x2001, 0x0c03, -+ 0x2003, 0x0040, 0x2009, 0x0fff, 0x00a1, 0x2001, 0x0c03, 0x2003, -+ 0x0080, 0x2009, 0x0fff, 0x0069, 0x0c88, 0x000e, 0x0005, 0x00c6, -+ 0x2061, 0x0c00, 0x2c04, 0xa084, 0x00ff, 0xa086, 0x00aa, 0x00ce, -+ 0x0005, 0x0156, 0x0126, 0xa18c, 0x0fff, 0x21a8, 0x1d04, 0x15ae, -+ 0x2091, 0x6000, 0x1f04, 0x15ae, 0x012e, 0x015e, 0x0005, 0x2071, -+ 0xb400, 0x7160, 0x712e, 0x2021, 0x0001, 0xa190, 0x0030, 0xa298, -+ 0x0030, 0x0240, 0x7064, 0xa302, 0x1228, 0x220a, 0x2208, 0x2310, -+ 0x8420, 0x0ca8, 0x3800, 0xd08c, 0x0148, 0x7064, 0xa086, 0xb400, -+ 0x0128, 0x7067, 0xb400, 0x2011, 0x1000, 0x0c48, 0x200b, 0x0000, -+ 0x74b2, 0x74b6, 0x0005, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, -+ 0xb400, 0x70b4, 0xa0ea, 0x0010, 0x0268, 0x8001, 0x70b6, 0x702c, -+ 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x012e, -+ 0x00ee, 0x0005, 0xa06e, 0x0cd8, 0x00e6, 0x2071, 0xb400, 0x0126, -+ 0x2091, 0x8000, 0x70b4, 0x8001, 0x0260, 0x70b6, 0x702c, 0x2068, -+ 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x012e, 0x00ee, -+ 0x0005, 0xa06e, 0x0cd8, 0x00e6, 0x0126, 0x2091, 0x8000, 0x2071, -+ 0xb400, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70b4, 0x8000, 0x70b6, -+ 0x012e, 0x00ee, 0x0005, 0x8dff, 0x0138, 0x6804, 0x6807, 0x0000, -+ 0x0006, 0x0c49, 0x00de, 0x0cb8, 0x0005, 0x00e6, 0x2071, 0xb400, -+ 0x70b4, 0xa08a, 0x0010, 0xa00d, 0x00ee, 0x0005, 0x00e6, 0x2071, -+ 0xb712, 0x7007, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x2071, -+ 0x0000, 0x7010, 0xa085, 0x8004, 0x7012, 0x00ee, 0x0005, 0x00e6, -+ 0x2270, 0x700b, 0x0000, 0x2071, 0xb712, 0x7018, 0xa088, 0xb71b, -+ 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x1128, -+ 0x00f6, 0x2079, 0x0010, 0x0081, 0x00fe, 0x00ee, 0x0005, 0x00e6, -+ 0x2071, 0xb712, 0x7004, 0xa005, 0x1128, 0x00f6, 0x2079, 0x0010, -+ 0x0019, 0x00fe, 0x00ee, 0x0005, 0x7000, 0x0002, 0x166a, 0x16ce, -+ 0x16eb, 0x16eb, 0x7018, 0x711c, 0xa106, 0x1118, 0x7007, 0x0000, -+ 0x0005, 0x00d6, 0xa180, 0xb71b, 0x2004, 0x700a, 0x2068, 0x8108, -+ 0xa18c, 0x0007, 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, -+ 0x7836, 0x682c, 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, -+ 0x7016, 0x6804, 0x00de, 0xd084, 0x0120, 0x7007, 0x0001, 0x0029, -+ 0x0005, 0x7007, 0x0002, 0x00b1, 0x0005, 0x0016, 0x0026, 0x710c, -+ 0x2011, 0x0040, 0xa182, 0x0040, 0x1210, 0x2110, 0xa006, 0x700e, -+ 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803, 0x0041, 0x002e, -+ 0x001e, 0x0005, 0x0016, 0x0026, 0x0136, 0x0146, 0x0156, 0x7014, -+ 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c, 0x2011, 0x0040, -+ 0xa182, 0x0040, 0x1210, 0x2110, 0xa006, 0x700e, 0x22a8, 0x53a6, -+ 0x8203, 0x7822, 0x7803, 0x0020, 0x3300, 0x7016, 0x7803, 0x0001, -+ 0x015e, 0x014e, 0x013e, 0x002e, 0x001e, 0x0005, 0x0136, 0x0146, -+ 0x0156, 0x2099, 0xb4fa, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, -+ 0x7803, 0x0020, 0x0126, 0x2091, 0x8000, 0x7803, 0x0041, 0x7007, -+ 0x0003, 0x7000, 0xc084, 0x7002, 0x700b, 0xb4f5, 0x012e, 0x015e, -+ 0x014e, 0x013e, 0x0005, 0x0136, 0x0146, 0x0156, 0x2001, 0xb529, -+ 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026, 0x2001, 0xb52a, 0x20ac, -+ 0x53a6, 0x2099, 0xb52b, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, -+ 0x7803, 0x0020, 0x0126, 0x2091, 0x8000, 0x7803, 0x0001, 0x7007, -+ 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b, 0xb526, 0x012e, 0x015e, -+ 0x014e, 0x013e, 0x0005, 0x0016, 0x00e6, 0x2071, 0xb712, 0x00f6, -+ 0x2079, 0x0010, 0x7904, 0x7803, 0x0002, 0xd1fc, 0x0120, 0xa18c, -+ 0x0700, 0x7004, 0x0023, 0x00fe, 0x00ee, 0x001e, 0x0005, 0x1664, -+ 0x172e, 0x175c, 0x1786, 0x17b6, 0x172d, 0x0cf8, 0xa18c, 0x0700, -+ 0x1528, 0x0136, 0x0146, 0x0156, 0x7014, 0x20a0, 0x2099, 0x0014, -+ 0x7803, 0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x015e, -+ 0x014e, 0x013e, 0x700c, 0xa005, 0x0570, 0x7830, 0x7832, 0x7834, -+ 0x7836, 0x080c, 0x1695, 0x0005, 0x7008, 0xa080, 0x0002, 0x2003, -+ 0x0100, 0x7007, 0x0000, 0x080c, 0x1664, 0x0005, 0x7008, 0xa080, -+ 0x0002, 0x2003, 0x0200, 0x0ca8, 0xa18c, 0x0700, 0x1150, 0x700c, -+ 0xa005, 0x0188, 0x7830, 0x7832, 0x7834, 0x7836, 0x080c, 0x16aa, -+ 0x0005, 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x7007, 0x0000, -+ 0x080c, 0x1664, 0x0005, 0x00d6, 0x7008, 0x2068, 0x7830, 0x6826, -+ 0x7834, 0x682a, 0x7838, 0x682e, 0x783c, 0x6832, 0x680b, 0x0100, -+ 0x00de, 0x7007, 0x0000, 0x080c, 0x1664, 0x0005, 0xa18c, 0x0700, -+ 0x1540, 0x0136, 0x0146, 0x0156, 0x2001, 0xb4f8, 0x2004, 0xa080, -+ 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020, -+ 0x53a5, 0x2001, 0xb4fa, 0x2004, 0xd0bc, 0x0148, 0x2001, 0xb503, -+ 0x2004, 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5, 0x015e, -+ 0x014e, 0x013e, 0x7007, 0x0000, 0x080c, 0x5e30, 0x080c, 0x1664, -+ 0x0005, 0x2011, 0x8003, 0x080c, 0x3e8a, 0x0cf8, 0xa18c, 0x0700, -+ 0x1148, 0x2001, 0xb528, 0x2003, 0x0100, 0x7007, 0x0000, 0x080c, -+ 0x1664, 0x0005, 0x2011, 0x8004, 0x080c, 0x3e8a, 0x0cf8, 0x0126, -+ 0x2091, 0x2200, 0x2079, 0x0030, 0x2071, 0xb723, 0x7003, 0x0000, -+ 0x700f, 0xb72f, 0x7013, 0xb72f, 0x780f, 0x00f6, 0x7803, 0x0004, -+ 0x012e, 0x0005, 0x6934, 0xa184, 0x0007, 0x0002, 0x17e6, 0x1824, -+ 0x17e6, 0x17e6, 0x17e6, 0x180c, 0x17f3, 0x17ea, 0xa085, 0x0001, -+ 0x0804, 0x183e, 0x684c, 0xd0bc, 0x0dc8, 0x6860, 0x682e, 0x685c, -+ 0x682a, 0x6858, 0x04c8, 0xa18c, 0x00ff, 0xa186, 0x001e, 0x1d70, -+ 0x684c, 0xd0bc, 0x0d58, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804, -+ 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x22b6, -+ 0x2005, 0x6832, 0x6858, 0x0440, 0xa18c, 0x00ff, 0xa186, 0x0015, -+ 0x19a8, 0x684c, 0xd0ac, 0x0990, 0x6804, 0x681a, 0xa080, 0x000d, -+ 0x2004, 0xa084, 0x000f, 0xa080, 0x22b6, 0x2005, 0x6832, 0xa006, -+ 0x682e, 0x682a, 0x6858, 0x0080, 0x684c, 0xd0ac, 0x0904, 0x17e6, -+ 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c, 0x000f, 0xa188, 0x22b6, -+ 0x210d, 0x6932, 0x2d08, 0x691a, 0x6826, 0x684c, 0xc0dd, 0x684e, -+ 0xa006, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x0005, 0x684c, -+ 0xd0ac, 0x090c, 0x1511, 0x6833, 0x22b3, 0x2d08, 0x691a, 0x6858, -+ 0x8001, 0x6826, 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x682e, -+ 0x682a, 0x697c, 0x6912, 0x6980, 0x6916, 0x0005, 0x20e1, 0x0007, -+ 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x82ff, 0x01e8, 0xa280, -+ 0x0004, 0x00d6, 0x206c, 0x684c, 0xd0dc, 0x1190, 0xa280, 0x0007, -+ 0x2004, 0xa086, 0x000a, 0x1110, 0x0891, 0x0010, 0x080c, 0x17da, -+ 0x0138, 0x00de, 0xa280, 0x0000, 0x2003, 0x0002, 0xa016, 0x0020, -+ 0x6808, 0x8000, 0x680a, 0x00de, 0x0126, 0x0046, 0x0036, 0x0026, -+ 0x2091, 0x2200, 0x002e, 0x003e, 0x004e, 0x7000, 0xa005, 0x01d0, -+ 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108, 0xa182, -+ 0xb74a, 0x0210, 0x2009, 0xb72f, 0x710e, 0x7010, 0xa102, 0xa082, -+ 0x0009, 0x0118, 0xa080, 0x001b, 0x1118, 0x2009, 0x0138, 0x200a, -+ 0x012e, 0x0005, 0x7206, 0x2001, 0x18a0, 0x0006, 0x2260, 0x0804, -+ 0x19cc, 0x0126, 0x0026, 0x0036, 0x00c6, 0x0006, 0x2091, 0x2200, -+ 0x000e, 0x004e, 0x003e, 0x002e, 0x00d6, 0x00c6, 0x2460, 0x6110, -+ 0x2168, 0x6a62, 0x6b5e, 0xa005, 0x0904, 0x1901, 0x6808, 0xa005, -+ 0x0904, 0x1938, 0x7000, 0xa005, 0x1108, 0x0488, 0x700c, 0x7110, -+ 0xa106, 0x1904, 0x1940, 0x7004, 0xa406, 0x1548, 0x2001, 0x0005, -+ 0x2004, 0xd08c, 0x0168, 0x0046, 0x080c, 0x1ad5, 0x004e, 0x2460, -+ 0x6010, 0xa080, 0x0002, 0x2004, 0xa005, 0x0904, 0x1938, 0x0c10, -+ 0x2001, 0x0207, 0x2004, 0xd09c, 0x1d48, 0x7804, 0xa084, 0x6000, -+ 0x0120, 0xa086, 0x6000, 0x0108, 0x0c08, 0x7818, 0x6812, 0x781c, -+ 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6100, -+ 0xa18e, 0x0004, 0x1904, 0x1940, 0x2009, 0x0048, 0x080c, 0x85ef, -+ 0x04f8, 0x6808, 0xa005, 0x05a0, 0x7000, 0xa005, 0x0588, 0x700c, -+ 0x7110, 0xa106, 0x1118, 0x7004, 0xa406, 0x1550, 0x2001, 0x0005, -+ 0x2004, 0xd08c, 0x0160, 0x0046, 0x080c, 0x1ad5, 0x004e, 0x2460, -+ 0x6010, 0xa080, 0x0002, 0x2004, 0xa005, 0x01d0, 0x0c28, 0x2001, -+ 0x0207, 0x2004, 0xd09c, 0x1d50, 0x2001, 0x0005, 0x2004, 0xd08c, -+ 0x1d50, 0x7804, 0xa084, 0x6000, 0x0118, 0xa086, 0x6000, 0x19f0, -+ 0x7818, 0x6812, 0x781c, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, -+ 0x6100, 0xa18e, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, 0x85ef, -+ 0x00ce, 0x00de, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x0026, 0x0036, -+ 0x0046, 0x0056, 0x2071, 0xb723, 0x7000, 0xa086, 0x0000, 0x0904, -+ 0x19aa, 0x7004, 0xac06, 0x1904, 0x199c, 0x2079, 0x0030, 0x7000, -+ 0xa086, 0x0003, 0x0904, 0x199c, 0x7804, 0xd0fc, 0x15c8, 0x20e1, -+ 0x6000, 0x2011, 0x0032, 0x2001, 0x0208, 0x200c, 0x2001, 0x0209, -+ 0x2004, 0xa106, 0x1d88, 0x8211, 0x1db0, 0x7804, 0xd0fc, 0x1540, -+ 0x080c, 0x1e3f, 0x0026, 0x0056, 0x7803, 0x0004, 0x7804, 0xd0ac, -+ 0x1de8, 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, -+ 0x0000, 0x005e, 0x002e, 0x2001, 0x015d, 0x2003, 0x0000, 0x080c, -+ 0x5a90, 0x1138, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b12, 0x006e, -+ 0x0058, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x0020, -+ 0x080c, 0x1ad5, 0x0804, 0x194c, 0x0156, 0x20a9, 0x0009, 0x2009, -+ 0xb72f, 0x2104, 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, -+ 0x19a1, 0x015e, 0x005e, 0x004e, 0x003e, 0x002e, 0x00ee, 0x00fe, -+ 0x0005, 0x700c, 0x7110, 0xa106, 0x0904, 0x1a40, 0x2104, 0x7006, -+ 0x2060, 0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0xb74a, -+ 0x0210, 0x2009, 0xb72f, 0x7112, 0x700c, 0xa106, 0x1128, 0x080c, -+ 0x28b1, 0x2001, 0x0138, 0x2102, 0x8cff, 0x0598, 0x6010, 0x2068, -+ 0x2d58, 0x6828, 0xa406, 0x1590, 0x682c, 0xa306, 0x1578, 0x7004, -+ 0x2060, 0x6020, 0xc0d4, 0x6022, 0x684c, 0xd0f4, 0x0128, 0x6817, -+ 0xffff, 0x6813, 0xffff, 0x00e8, 0x6850, 0xd0f4, 0x1130, 0x7803, -+ 0x0004, 0x6810, 0x781a, 0x6814, 0x781e, 0x6824, 0x2050, 0x6818, -+ 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x2009, 0x0011, -+ 0x080c, 0x1a43, 0x0120, 0x2009, 0x0001, 0x080c, 0x1a43, 0x2d58, -+ 0x0005, 0x080c, 0x1dac, 0x0904, 0x19b1, 0x0cd0, 0x6020, 0xd0f4, -+ 0x11e0, 0xd0d4, 0x01b8, 0x6038, 0xa402, 0x6034, 0xa303, 0x0108, -+ 0x1288, 0x643a, 0x6336, 0x6c2a, 0x6b2e, 0x0046, 0x0036, 0x2400, -+ 0x6c7c, 0xa402, 0x6812, 0x2300, 0x6b80, 0xa303, 0x6816, 0x003e, -+ 0x004e, 0x0018, 0x080c, 0x9f2b, 0x09e0, 0x601c, 0xa08e, 0x0008, -+ 0x0904, 0x19d7, 0xa08e, 0x000a, 0x0904, 0x19d7, 0x2001, 0xb474, -+ 0x2004, 0xd0b4, 0x1140, 0x6018, 0x2004, 0xd0bc, 0x1120, 0x6817, -+ 0x7fff, 0x6813, 0xffff, 0x080c, 0x22d6, 0x1918, 0x0804, 0x19d7, -+ 0x7003, 0x0000, 0x0005, 0x8aff, 0x0904, 0x1aaf, 0xa03e, 0x2730, -+ 0x6850, 0xd0fc, 0x11b8, 0xd0f4, 0x1528, 0x00d6, 0x2805, 0xac68, -+ 0x2900, 0x0002, 0x1a93, 0x1a78, 0x1a78, 0x1a93, 0x1a93, 0x1a8c, -+ 0x1a93, 0x1a78, 0x1a93, 0x1a7d, 0x1a7d, 0x1a93, 0x1a93, 0x1a93, -+ 0x1a84, 0x1a7d, 0x7803, 0x0004, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, -+ 0x6d1c, 0x6c20, 0x00d6, 0xd99c, 0x0548, 0x2805, 0xac68, 0x6f08, -+ 0x6e0c, 0x0420, 0xc0f4, 0x6852, 0x6b6c, 0x6a70, 0x00d6, 0x0458, -+ 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x00c8, 0x6b10, 0x6a14, 0x6d00, -+ 0x6c04, 0x6f08, 0x6e0c, 0x0090, 0x00de, 0x00d6, 0x6834, 0xa084, -+ 0x00ff, 0xa086, 0x001e, 0x1138, 0x00de, 0x080c, 0x2278, 0x1904, -+ 0x1a43, 0xa00e, 0x00e0, 0x00de, 0x080c, 0x1511, 0x7b22, 0x7a26, -+ 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7316, 0x721a, 0x751e, 0x7422, -+ 0x7726, 0x762a, 0x7902, 0x7000, 0x8000, 0x7002, 0x00de, 0x6828, -+ 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x080c, 0x2278, 0x0005, -+ 0x080c, 0x1511, 0x080c, 0x1f26, 0x7004, 0x2060, 0x00d6, 0x6010, -+ 0x2068, 0x7003, 0x0000, 0x080c, 0x1dcd, 0x080c, 0x9beb, 0x0170, -+ 0x6808, 0x8001, 0x680a, 0x697c, 0x6912, 0x6980, 0x6916, 0x682b, -+ 0xffff, 0x682f, 0xffff, 0x6850, 0xc0bd, 0x6852, 0x00de, 0x080c, -+ 0x98c3, 0x0804, 0x1cfa, 0x080c, 0x1511, 0x0126, 0x2091, 0x2200, -+ 0x0006, 0x0016, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, -+ 0xa184, 0x0700, 0x1978, 0xa184, 0x0003, 0xa086, 0x0003, 0x0d58, -+ 0x7000, 0x0002, 0x1af2, 0x1af8, 0x1c09, 0x1cd5, 0x1ce9, 0x1af2, -+ 0x1af2, 0x1af2, 0x7804, 0xd09c, 0x1904, 0x1cfa, 0x080c, 0x1511, -+ 0x8001, 0x7002, 0xd1bc, 0x11a0, 0xd19c, 0x1904, 0x1b8d, 0xd1dc, -+ 0x1178, 0x8aff, 0x0904, 0x1b8d, 0x2009, 0x0001, 0x080c, 0x1a43, -+ 0x0904, 0x1cfa, 0x2009, 0x0001, 0x080c, 0x1a43, 0x0804, 0x1cfa, -+ 0x7803, 0x0004, 0x7003, 0x0000, 0xd1bc, 0x1904, 0x1b6d, 0x0026, -+ 0x0036, 0x7c20, 0x7d24, 0x7e30, 0x7f34, 0x7818, 0x6812, 0x781c, -+ 0x6816, 0x2001, 0x0201, 0x2004, 0xa005, 0x0140, 0x7808, 0xd0ec, -+ 0x1128, 0x7803, 0x0009, 0x7003, 0x0004, 0x0010, 0x080c, 0x1cfe, -+ 0x6b28, 0x6a2c, 0x2400, 0x686e, 0xa31a, 0x2500, 0x6872, 0xa213, -+ 0x6b2a, 0x6a2e, 0x00c6, 0x7004, 0x2060, 0x6020, 0xd0f4, 0x1110, -+ 0x633a, 0x6236, 0x00ce, 0x003e, 0x002e, 0x6e1e, 0x6f22, 0x2500, -+ 0xa405, 0x0128, 0x080c, 0x228e, 0x6850, 0xc0fd, 0x6852, 0x2a00, -+ 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x6808, 0x8001, 0x680a, -+ 0x1148, 0x684c, 0xd0e4, 0x0130, 0x7004, 0x2060, 0x2009, 0x0048, -+ 0x080c, 0x85ef, 0x7000, 0xa086, 0x0004, 0x0904, 0x1cfa, 0x7003, -+ 0x0000, 0x080c, 0x19b1, 0x0804, 0x1cfa, 0x0056, 0x7d0c, 0xd5bc, -+ 0x1110, 0x080c, 0xb38a, 0x005e, 0x080c, 0x1dcd, 0x00f6, 0x7004, -+ 0x2078, 0x080c, 0x52c6, 0x0118, 0x7820, 0xc0f5, 0x7822, 0x00fe, -+ 0x682b, 0xffff, 0x682f, 0xffff, 0x6808, 0x8001, 0x680a, 0x697c, -+ 0x791a, 0x6980, 0x791e, 0x0804, 0x1cfa, 0x7004, 0x00c6, 0x2060, -+ 0x6020, 0x00ce, 0xd0f4, 0x0120, 0x6808, 0x8001, 0x680a, 0x04c0, -+ 0x7818, 0x6812, 0x7a1c, 0x6a16, 0xd19c, 0x0160, 0xa205, 0x0150, -+ 0x7004, 0xa080, 0x0007, 0x2004, 0xa084, 0xfffd, 0xa086, 0x0008, -+ 0x1904, 0x1b10, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005, 0x1520, -+ 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x01a0, 0x7004, 0x2060, -+ 0x601c, 0xa086, 0x000a, 0x11a0, 0x0156, 0x20a9, 0x0009, 0x2009, -+ 0xb72f, 0x2104, 0xac06, 0x1108, 0x200a, 0xa188, 0x0003, 0x1f04, -+ 0x1bc1, 0x015e, 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x85ef, -+ 0x080c, 0x19b1, 0x0804, 0x1cfa, 0x7818, 0x6812, 0x781c, 0x6816, -+ 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa192, 0x0841, 0x1a04, 0x1ab2, -+ 0xa188, 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, 0x8004, -+ 0x8004, 0xa20a, 0x810b, 0x810b, 0x810b, 0x080c, 0x1e6a, 0x7803, -+ 0x0004, 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, 0x0de8, -+ 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x00f6, 0x7004, 0x7007, -+ 0x0000, 0x2060, 0x2009, 0x0048, 0x080c, 0x85ef, 0x080c, 0x1ec0, -+ 0x0838, 0x8001, 0x7002, 0xd194, 0x01b0, 0x7804, 0xd0fc, 0x1904, -+ 0x1ca5, 0xd09c, 0x0138, 0x7804, 0xd0fc, 0x1904, 0x1ca5, 0xd09c, -+ 0x1904, 0x1ca9, 0x8aff, 0x0904, 0x1cfa, 0x2009, 0x0001, 0x080c, -+ 0x1a43, 0x0804, 0x1cfa, 0xa184, 0x0888, 0x1148, 0x8aff, 0x0904, -+ 0x1cfa, 0x2009, 0x0001, 0x080c, 0x1a43, 0x0804, 0x1cfa, 0x7818, -+ 0x6812, 0x7a1c, 0x6a16, 0xa205, 0x0904, 0x1baa, 0x7803, 0x0004, -+ 0x7003, 0x0000, 0xd1bc, 0x1904, 0x1c87, 0x6834, 0xa084, 0x00ff, -+ 0xa086, 0x0029, 0x1118, 0xd19c, 0x1904, 0x1baa, 0x0026, 0x0036, -+ 0x7c20, 0x7d24, 0x7e30, 0x7f34, 0x7818, 0x6812, 0x781c, 0x6816, -+ 0x2001, 0x0201, 0x2004, 0xa005, 0x0140, 0x7808, 0xd0ec, 0x1128, -+ 0x7803, 0x0009, 0x7003, 0x0004, 0x0020, 0x0016, 0x080c, 0x1cfe, -+ 0x001e, 0x6b28, 0x6a2c, 0x080c, 0x228e, 0x00d6, 0x2805, 0xac68, -+ 0x6034, 0xd09c, 0x1128, 0x6808, 0xa31a, 0x680c, 0xa213, 0x0020, -+ 0x6810, 0xa31a, 0x6814, 0xa213, 0x00de, 0xd194, 0x0904, 0x1b32, -+ 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x6808, 0x8001, -+ 0x680a, 0x6b2a, 0x6a2e, 0x003e, 0x002e, 0x0804, 0x1bd0, 0x0056, -+ 0x7d0c, 0x080c, 0xb38a, 0x005e, 0x080c, 0x1dcd, 0x00f6, 0x7004, -+ 0x2078, 0x080c, 0x52c6, 0x0118, 0x7820, 0xc0f5, 0x7822, 0x00fe, -+ 0x682b, 0xffff, 0x682f, 0xffff, 0x6808, 0x8001, 0x680a, 0x697c, -+ 0x791a, 0x6980, 0x791e, 0x0804, 0x1cfa, 0x7804, 0xd09c, 0x0904, -+ 0x1add, 0x7c20, 0x7824, 0xa405, 0x1904, 0x1add, 0x7818, 0x6812, -+ 0x7c1c, 0x6c16, 0xa405, 0x1120, 0x7803, 0x0002, 0x0804, 0x1baa, -+ 0x751c, 0x7420, 0x7724, 0x7628, 0x7014, 0xa528, 0x7018, 0xa421, -+ 0xa7b9, 0x0000, 0xa6b1, 0x0000, 0x7830, 0xa506, 0x1150, 0x7834, -+ 0xa406, 0x1138, 0x7838, 0xa706, 0x1120, 0x783c, 0xa606, 0x0904, -+ 0x1add, 0x7803, 0x0002, 0x0804, 0x1c36, 0x7803, 0x0004, 0x7003, -+ 0x0000, 0x7004, 0xa00d, 0x0150, 0x6808, 0x8001, 0x680a, 0x1130, -+ 0x7004, 0x2060, 0x2009, 0x0048, 0x080c, 0x85ef, 0x080c, 0x19b1, -+ 0x0088, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6010, -+ 0xa005, 0x0da0, 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28, 0x6b2c, -+ 0x080c, 0x19cc, 0x001e, 0x000e, 0x012e, 0x0005, 0x700c, 0x7110, -+ 0xa106, 0x0904, 0x1da0, 0x7004, 0x0016, 0x210c, 0xa106, 0x001e, -+ 0x0904, 0x1da0, 0x00d6, 0x00c6, 0x216c, 0x2d00, 0xa005, 0x0904, -+ 0x1d9e, 0x681c, 0xa086, 0x0008, 0x0904, 0x1d9e, 0x6820, 0xd0d4, -+ 0x1904, 0x1d9e, 0x6810, 0x2068, 0x6850, 0xd0fc, 0x05a8, 0x8108, -+ 0x2104, 0x6b2c, 0xa306, 0x1904, 0x1d9e, 0x8108, 0x2104, 0x6a28, -+ 0xa206, 0x1904, 0x1d9e, 0x6850, 0xc0fc, 0xc0f5, 0x6852, 0x686c, -+ 0x7822, 0x7016, 0x6870, 0x7826, 0x701a, 0x681c, 0x7832, 0x701e, -+ 0x6820, 0x7836, 0x7022, 0x6818, 0x2060, 0x6034, 0xd09c, 0x0168, -+ 0x6830, 0x2005, 0x00d6, 0xac68, 0x6808, 0x783a, 0x7026, 0x680c, -+ 0x783e, 0x702a, 0x00de, 0x0804, 0x1d98, 0xa006, 0x783a, 0x783e, -+ 0x7026, 0x702a, 0x0804, 0x1d98, 0x8108, 0x2104, 0xa005, 0x1904, -+ 0x1d9e, 0x6b2c, 0xa306, 0x1904, 0x1d9e, 0x8108, 0x2104, 0xa005, -+ 0x15e8, 0x6a28, 0xa206, 0x15d0, 0x6850, 0xc0f5, 0x6852, 0x6830, -+ 0x2005, 0x6918, 0xa160, 0xa180, 0x000d, 0x2004, 0xd09c, 0x11a0, -+ 0x6008, 0x7822, 0x7016, 0x686e, 0x600c, 0x7826, 0x701a, 0x6872, -+ 0x6000, 0x7832, 0x701e, 0x6004, 0x7836, 0x7022, 0xa006, 0x783a, -+ 0x783e, 0x7026, 0x702a, 0x00a0, 0x6010, 0x7822, 0x7016, 0x686e, -+ 0x6014, 0x7826, 0x701a, 0x6872, 0x6000, 0x7832, 0x701e, 0x6004, -+ 0x7836, 0x7022, 0x6008, 0x783a, 0x7026, 0x600c, 0x783e, 0x702a, -+ 0x6810, 0x781a, 0x6814, 0x781e, 0x7803, 0x0011, 0x00ce, 0x00de, -+ 0x0005, 0x2011, 0x0201, 0x2009, 0x003c, 0x2204, 0xa005, 0x1118, -+ 0x8109, 0x1dd8, 0x0005, 0x0005, 0x0ca1, 0x0118, 0x780c, 0xd0a4, -+ 0x0120, 0x00d9, 0xa085, 0x0001, 0x0010, 0x080c, 0x1ec0, 0x0005, -+ 0x0126, 0x2091, 0x2200, 0x7000, 0xa086, 0x0003, 0x1160, 0x700c, -+ 0x7110, 0xa106, 0x0140, 0x080c, 0x2922, 0x20e1, 0x9028, 0x700f, -+ 0xb72f, 0x7013, 0xb72f, 0x012e, 0x0005, 0x00c6, 0x080c, 0x5a90, -+ 0x11b8, 0x2001, 0x0160, 0x2003, 0x0000, 0x2001, 0x0138, 0x2003, -+ 0x0000, 0x2011, 0x00c8, 0xe000, 0xe000, 0x8211, 0x1de0, 0x04c1, -+ 0x0066, 0x2031, 0x0000, 0x080c, 0x5b12, 0x006e, 0x00ce, 0x0005, -+ 0x080c, 0x1e3f, 0x080c, 0x2922, 0x20e1, 0x9028, 0x700c, 0x7110, -+ 0xa106, 0x01d0, 0x2104, 0xa005, 0x0130, 0x2060, 0x6010, 0x2060, -+ 0x6008, 0x8001, 0x600a, 0xa188, 0x0003, 0xa182, 0xb74a, 0x0210, -+ 0x2009, 0xb72f, 0x7112, 0x700c, 0xa106, 0x1d40, 0x080c, 0x28b1, -+ 0x2001, 0x0138, 0x2102, 0x0c10, 0x2001, 0x015d, 0x2003, 0x0000, -+ 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x00ce, 0x0005, -+ 0x080c, 0x2922, 0x20e1, 0x9028, 0x2001, 0x015d, 0x2003, 0x0000, -+ 0x00e6, 0x00c6, 0x0016, 0x2071, 0xb723, 0x700c, 0x7110, 0xa106, -+ 0x0190, 0x2104, 0xa005, 0x0130, 0x2060, 0x6010, 0x2060, 0x6008, -+ 0x8001, 0x600a, 0xa188, 0x0003, 0xa182, 0xb74a, 0x0210, 0x2009, -+ 0xb72f, 0x7112, 0x0c50, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x2001, -+ 0x0138, 0x2014, 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, -+ 0x0000, 0x080c, 0x5a90, 0x1148, 0x2021, 0x0002, 0x1d04, 0x1e4e, -+ 0x2091, 0x6000, 0x8421, 0x1dd0, 0x0005, 0x2021, 0xb015, 0x2001, -+ 0x0141, 0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0xa39c, -+ 0x0048, 0x1138, 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, -+ 0x1d70, 0x0005, 0x00e6, 0x2071, 0x0200, 0x7808, 0xa084, 0xf000, -+ 0xa10d, 0x0869, 0x2001, 0x0105, 0x2004, 0xa084, 0x0003, 0x1130, -+ 0x2001, 0xb74a, 0x2004, 0xa086, 0x0000, 0x0548, 0xa026, 0x2019, -+ 0xf000, 0x8319, 0x1148, 0x2001, 0x012b, 0x2003, 0x95f5, 0x2001, -+ 0x0129, 0x2003, 0x95f5, 0x00d8, 0x2001, 0x0105, 0x2004, 0xa084, -+ 0x0003, 0x1130, 0x2001, 0xb74a, 0x2004, 0xa086, 0x0000, 0x0178, -+ 0x2001, 0x0132, 0x2004, 0xa436, 0x0110, 0x2020, 0x0c00, 0x2001, -+ 0x0021, 0x2004, 0xd0fc, 0x09e8, 0x080c, 0x211b, 0x08c0, 0x20e1, -+ 0x7000, 0x7324, 0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, -+ 0x810f, 0x712e, 0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, -+ 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x00ee, 0x0005, -+ 0x0026, 0x2001, 0x015d, 0x2003, 0x0000, 0x7908, 0xa18c, 0x0fff, -+ 0xa182, 0x0ffd, 0x0210, 0x2009, 0x0000, 0xa190, 0x0007, 0xa294, -+ 0x1ff8, 0x8214, 0x8214, 0x8214, 0x2001, 0x020a, 0x82ff, 0x0140, -+ 0x20e1, 0x6000, 0x200c, 0x200c, 0x200c, 0x200c, 0x8211, 0x1dd0, -+ 0x20e1, 0x7000, 0x200c, 0x200c, 0x7003, 0x0000, 0x20e1, 0x6000, -+ 0x2001, 0x0208, 0x200c, 0x2001, 0x0209, 0x2004, 0xa106, 0x0158, -+ 0x080c, 0x1da1, 0x0130, 0x7908, 0xd1ec, 0x1128, 0x790c, 0xd1a4, -+ 0x0960, 0x080c, 0x1dcd, 0xa006, 0x002e, 0x0005, 0x00f6, 0x00e6, -+ 0x0016, 0x0026, 0x2071, 0xb723, 0x2079, 0x0030, 0x2011, 0x0050, -+ 0x7000, 0xa086, 0x0000, 0x01a8, 0x8211, 0x0188, 0x2001, 0x0005, -+ 0x2004, 0xd08c, 0x0dc8, 0x7904, 0xa18c, 0x0780, 0x0016, 0x080c, -+ 0x1ad5, 0x001e, 0x81ff, 0x1118, 0x2011, 0x0050, 0x0c48, 0xa085, -+ 0x0001, 0x002e, 0x001e, 0x00ee, 0x00fe, 0x0005, 0x7803, 0x0004, -+ 0x2009, 0x0064, 0x7804, 0xd0ac, 0x0904, 0x1f72, 0x8109, 0x1dd0, -+ 0x2009, 0x0100, 0x210c, 0xa18a, 0x0003, 0x0a0c, 0x1511, 0x080c, -+ 0x2222, 0x00e6, 0x00f6, 0x2071, 0xb712, 0x2079, 0x0010, 0x7004, -+ 0xa086, 0x0000, 0x0538, 0x7800, 0x0006, 0x7820, 0x0006, 0x7830, -+ 0x0006, 0x7834, 0x0006, 0x7838, 0x0006, 0x783c, 0x0006, 0x7803, -+ 0x0004, 0xe000, 0xe000, 0x2079, 0x0030, 0x7804, 0xd0ac, 0x190c, -+ 0x1511, 0x2079, 0x0010, 0x000e, 0x783e, 0x000e, 0x783a, 0x000e, -+ 0x7836, 0x000e, 0x7832, 0x000e, 0x7822, 0x000e, 0x7802, 0x00fe, -+ 0x00ee, 0x0030, 0x00fe, 0x00ee, 0x7804, 0xd0ac, 0x190c, 0x1511, -+ 0x080c, 0x71f1, 0x0005, 0x00e6, 0x2071, 0xb74a, 0x7003, 0x0000, -+ 0x00ee, 0x0005, 0x00d6, 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, -+ 0x1904, 0x1ff0, 0x6934, 0xa184, 0x0007, 0x0002, 0x1f8e, 0x1fdb, -+ 0x1f8e, 0x1f8e, 0x1f8e, 0x1fc2, 0x1fa1, 0x1f90, 0x080c, 0x1511, -+ 0x684c, 0xd0b4, 0x0904, 0x20d8, 0x6860, 0x682e, 0x6816, 0x685c, -+ 0x682a, 0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6958, 0x0804, -+ 0x1fe3, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x1d38, 0x684c, -+ 0xd0b4, 0x0904, 0x20d8, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, -+ 0x6812, 0x687c, 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, -+ 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x22b6, 0x2005, 0x6832, -+ 0x6958, 0x0450, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x1548, 0x684c, -+ 0xd0b4, 0x0904, 0x20d8, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, -+ 0xa084, 0x000f, 0xa080, 0x22b6, 0x2005, 0x6832, 0x6958, 0xa006, -+ 0x682e, 0x682a, 0x0088, 0x684c, 0xd0b4, 0x0904, 0x1ab0, 0x6958, -+ 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834, 0xa084, 0x000f, -+ 0xa080, 0x22b6, 0x2005, 0x6832, 0x6926, 0x684c, 0xc0dd, 0x684e, -+ 0x00de, 0x0005, 0x00f6, 0x2079, 0x0020, 0x7804, 0xd0fc, 0x190c, -+ 0x211b, 0x00e6, 0x00d6, 0x2071, 0xb74a, 0x7000, 0xa005, 0x1904, -+ 0x2058, 0x00c6, 0x7206, 0xa280, 0x0004, 0x205c, 0x7004, 0x2068, -+ 0x7803, 0x0004, 0x6818, 0x00d6, 0x2068, 0x686c, 0x7812, 0x6890, -+ 0x00f6, 0x20e1, 0x9040, 0x2079, 0x0200, 0x781a, 0x2079, 0x0100, -+ 0x8004, 0x78d6, 0x00fe, 0x00de, 0x2b68, 0x6824, 0x2050, 0x6818, -+ 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x6908, 0x791a, -+ 0x7116, 0x680c, 0x781e, 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, -+ 0x692c, 0x6814, 0xa106, 0x1120, 0x6928, 0x6810, 0xa106, 0x0158, -+ 0x0036, 0x0046, 0x6b14, 0x6c10, 0x080c, 0x22d6, 0x004e, 0x003e, -+ 0x0110, 0x00ce, 0x00a8, 0x8aff, 0x1120, 0x00ce, 0xa085, 0x0001, -+ 0x0078, 0x0126, 0x2091, 0x8000, 0x2079, 0x0020, 0x2009, 0x0001, -+ 0x0059, 0x0118, 0x2009, 0x0001, 0x0039, 0x012e, 0x00ce, 0xa006, -+ 0x00de, 0x00ee, 0x00fe, 0x0005, 0x0076, 0x0066, 0x0056, 0x0046, -+ 0x0036, 0x0026, 0x8aff, 0x0904, 0x20d1, 0x700c, 0x7214, 0xa23a, -+ 0x7010, 0x7218, 0xa203, 0x0a04, 0x20d0, 0xa705, 0x0904, 0x20d0, -+ 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x11a8, 0x00d6, 0x2805, 0xac68, -+ 0x2900, 0x0002, 0x20b3, 0x2098, 0x2098, 0x20b3, 0x20b3, 0x20ac, -+ 0x20b3, 0x2098, 0x20b3, 0x209d, 0x209d, 0x20b3, 0x20b3, 0x20b3, -+ 0x20a4, 0x209d, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, -+ 0xd99c, 0x0528, 0x00d6, 0x2805, 0xac68, 0x6f08, 0x6e0c, 0x00f0, -+ 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x00c8, 0x6b10, 0x6a14, 0x6d00, -+ 0x6c04, 0x6f08, 0x6e0c, 0x0090, 0x00de, 0x00d6, 0x6834, 0xa084, -+ 0x00ff, 0xa086, 0x001e, 0x1138, 0x00de, 0x080c, 0x2278, 0x1904, -+ 0x2062, 0xa00e, 0x00f0, 0x00de, 0x080c, 0x1511, 0x00de, 0x7b22, -+ 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, -+ 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x700c, -+ 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x080c, 0x2278, 0x0008, -+ 0xa006, 0x002e, 0x003e, 0x004e, 0x005e, 0x006e, 0x007e, 0x0005, -+ 0x080c, 0x1511, 0x0026, 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, -+ 0x9040, 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x00d6, -+ 0x6010, 0x2068, 0x080c, 0x9beb, 0x0118, 0x6850, 0xc0bd, 0x6852, -+ 0x601c, 0xa086, 0x0006, 0x1180, 0x2061, 0x0100, 0x62c8, 0x2001, -+ 0x00fa, 0x8001, 0x1df0, 0x60c8, 0xa206, 0x1dc0, 0x60c4, 0x686a, -+ 0x60c8, 0x6866, 0x7004, 0x2060, 0x00de, 0x00c6, 0x080c, 0x98c3, -+ 0x00ce, 0x2001, 0xb6ef, 0x2004, 0xac06, 0x1150, 0x20e1, 0x9040, -+ 0x080c, 0x8200, 0x2011, 0x0000, 0x080c, 0x8029, 0x080c, 0x71f1, -+ 0x002e, 0x0804, 0x21d5, 0x0126, 0x2091, 0x2400, 0x0006, 0x0016, -+ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x2079, 0x0020, 0x2071, 0xb74a, -+ 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, -+ 0x1904, 0x20da, 0x7000, 0x0002, 0x21d5, 0x2138, 0x21a8, 0x21d3, -+ 0x8001, 0x7002, 0xd19c, 0x1170, 0x8aff, 0x05d0, 0x2009, 0x0001, -+ 0x080c, 0x205c, 0x0904, 0x21d5, 0x2009, 0x0001, 0x080c, 0x205c, -+ 0x0804, 0x21d5, 0x7803, 0x0004, 0xd194, 0x0148, 0x6850, 0xc0fc, -+ 0x6852, 0x8aff, 0x11d8, 0x684c, 0xc0f5, 0x684e, 0x00b8, 0x0026, -+ 0x0036, 0x6b28, 0x6a2c, 0x7820, 0x686e, 0xa31a, 0x7824, 0x6872, -+ 0xa213, 0x7830, 0x681e, 0x7834, 0x6822, 0x6b2a, 0x6a2e, 0x003e, -+ 0x002e, 0x080c, 0x228e, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826, -+ 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0804, 0x21d5, -+ 0x00f6, 0x0026, 0x781c, 0x0006, 0x7818, 0x0006, 0x2079, 0x0100, -+ 0x7a14, 0xa284, 0x0184, 0xa085, 0x0012, 0x7816, 0x0036, 0x2019, -+ 0x1000, 0x8319, 0x090c, 0x1511, 0x7820, 0xd0bc, 0x1dd0, 0x003e, -+ 0x79c8, 0x000e, 0xa102, 0x001e, 0x0006, 0x0016, 0x79c4, 0x000e, -+ 0xa103, 0x78c6, 0x000e, 0x78ca, 0xa284, 0x0184, 0xa085, 0x0012, -+ 0x7816, 0x002e, 0x00fe, 0x7803, 0x0008, 0x7003, 0x0000, 0x0468, -+ 0x8001, 0x7002, 0xd194, 0x0168, 0x7804, 0xd0fc, 0x1904, 0x212b, -+ 0xd19c, 0x11f8, 0x8aff, 0x0508, 0x2009, 0x0001, 0x080c, 0x205c, -+ 0x00e0, 0x0026, 0x0036, 0x6b28, 0x6a2c, 0x080c, 0x228e, 0x00d6, -+ 0x2805, 0xac68, 0x6034, 0xd09c, 0x1128, 0x6808, 0xa31a, 0x680c, -+ 0xa213, 0x0020, 0x6810, 0xa31a, 0x6814, 0xa213, 0x00de, 0x0804, -+ 0x215b, 0x0804, 0x2157, 0x080c, 0x1511, 0x00ce, 0x00de, 0x00ee, -+ 0x00fe, 0x001e, 0x000e, 0x012e, 0x0005, 0x00f6, 0x00e6, 0x2071, -+ 0xb74a, 0x7000, 0xa086, 0x0000, 0x05d0, 0x2079, 0x0020, 0x0016, -+ 0x2009, 0x0207, 0x210c, 0xd194, 0x0198, 0x2009, 0x020c, 0x210c, -+ 0xa184, 0x0003, 0x0168, 0x080c, 0xb3d3, 0x2001, 0x0133, 0x2004, -+ 0xa005, 0x090c, 0x1511, 0x20e1, 0x9040, 0x2001, 0x020c, 0x2102, -+ 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0xa106, 0x1110, -+ 0x20e1, 0x9040, 0x7804, 0xd0fc, 0x09d8, 0x080c, 0x211b, 0x7000, -+ 0xa086, 0x0000, 0x19a8, 0x001e, 0x7803, 0x0004, 0x7804, 0xd0ac, -+ 0x1de8, 0x20e1, 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x00ee, -+ 0x00fe, 0x0005, 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2071, -+ 0xb74a, 0x2079, 0x0020, 0x7000, 0xa086, 0x0000, 0x0540, 0x7004, -+ 0x2060, 0x6010, 0x2068, 0x080c, 0x9beb, 0x0158, 0x6850, 0xc0b5, -+ 0x6852, 0x680c, 0x7a1c, 0xa206, 0x1120, 0x6808, 0x7a18, 0xa206, -+ 0x01e0, 0x2001, 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, 0x7803, -+ 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x080c, 0x98c3, 0x20e1, -+ 0x9040, 0x080c, 0x8200, 0x2011, 0x0000, 0x080c, 0x8029, 0x00fe, -+ 0x00ee, 0x00de, 0x00ce, 0x002e, 0x0005, 0x6810, 0x6a14, 0xa205, -+ 0x1d00, 0x684c, 0xc0dc, 0x684e, 0x2c10, 0x080c, 0x1f7a, 0x2001, -+ 0x0105, 0x2003, 0x0010, 0x20e1, 0x9040, 0x7803, 0x0004, 0x7003, -+ 0x0000, 0x2069, 0xb6e0, 0x6833, 0x0000, 0x683f, 0x0000, 0x08f8, -+ 0x8840, 0x2805, 0xa005, 0x1170, 0x6004, 0xa005, 0x0168, 0x681a, -+ 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x22b6, 0x2045, 0x88ff, -+ 0x090c, 0x1511, 0x8a51, 0x0005, 0x2050, 0x0005, 0x8a50, 0x8841, -+ 0x2805, 0xa005, 0x1190, 0x2c00, 0xad06, 0x0120, 0x6000, 0xa005, -+ 0x1108, 0x2d00, 0x2060, 0x681a, 0x6034, 0xa084, 0x000f, 0xa080, -+ 0x22c6, 0x2045, 0x88ff, 0x090c, 0x1511, 0x0005, 0x0000, 0x0011, -+ 0x0015, 0x0019, 0x001d, 0x0021, 0x0025, 0x0029, 0x0000, 0x000f, -+ 0x0015, 0x001b, 0x0021, 0x0027, 0x0000, 0x0000, 0x0000, 0x22ab, -+ 0x22a7, 0x0000, 0x0000, 0x22b5, 0x0000, 0x22ab, 0x0000, 0x22b2, -+ 0x22af, 0x0000, 0x0000, 0x0000, 0x22b5, 0x22b2, 0x0000, 0x22ad, -+ 0x22ad, 0x0000, 0x0000, 0x22b5, 0x0000, 0x22ad, 0x0000, 0x22b3, -+ 0x22b3, 0x0000, 0x0000, 0x0000, 0x22b5, 0x22b3, 0x00a6, 0x0096, -+ 0x0086, 0x6b2e, 0x6c2a, 0x6858, 0xa055, 0x0904, 0x2367, 0x2d60, -+ 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x22b6, 0xa986, 0x0007, 0x0130, -+ 0xa986, 0x000e, 0x0118, 0xa986, 0x000f, 0x1120, 0x605c, 0xa422, -+ 0x6060, 0xa31a, 0x2805, 0xa045, 0x1140, 0x0310, 0x0804, 0x2367, -+ 0x6004, 0xa065, 0x0904, 0x2367, 0x0c18, 0x2805, 0xa005, 0x01a8, -+ 0xac68, 0xd99c, 0x1128, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0020, -+ 0x6810, 0xa422, 0x6814, 0xa31b, 0x0620, 0x2300, 0xa405, 0x0150, -+ 0x8a51, 0x0904, 0x2367, 0x8840, 0x0c40, 0x6004, 0xa065, 0x0904, -+ 0x2367, 0x0830, 0x8a51, 0x0904, 0x2367, 0x8840, 0x2805, 0xa005, -+ 0x1158, 0x6004, 0xa065, 0x0904, 0x2367, 0x6034, 0xa0cc, 0x000f, -+ 0xa9c0, 0x22b6, 0x2805, 0x2040, 0x2b68, 0x6850, 0xc0fc, 0x6852, -+ 0x0458, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x00d6, 0x2b68, -+ 0x6c6e, 0x6b72, 0x00de, 0xd99c, 0x1168, 0x6908, 0x2400, 0xa122, -+ 0x690c, 0x2300, 0xa11b, 0x0a0c, 0x1511, 0x6800, 0xa420, 0x6804, -+ 0xa319, 0x0060, 0x6910, 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, -+ 0x0a0c, 0x1511, 0x6800, 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, -+ 0x6b22, 0x6850, 0xc0fd, 0x6852, 0x2c00, 0x681a, 0x2800, 0x6832, -+ 0x2a00, 0x6826, 0x000e, 0x000e, 0x000e, 0xa006, 0x0028, 0x008e, -+ 0x009e, 0x00ae, 0xa085, 0x0001, 0x0005, 0x2001, 0x0005, 0x2004, -+ 0xa084, 0x0007, 0x0002, 0x237b, 0x237c, 0x237f, 0x2382, 0x2387, -+ 0x238a, 0x238f, 0x2394, 0x0005, 0x080c, 0x211b, 0x0005, 0x080c, -+ 0x1ad5, 0x0005, 0x080c, 0x1ad5, 0x080c, 0x211b, 0x0005, 0x080c, -+ 0x1713, 0x0005, 0x080c, 0x211b, 0x080c, 0x1713, 0x0005, 0x080c, -+ 0x1ad5, 0x080c, 0x1713, 0x0005, 0x080c, 0x1ad5, 0x080c, 0x211b, -+ 0x080c, 0x1713, 0x0005, 0x0126, 0x2091, 0x2600, 0x2079, 0x0200, -+ 0x2071, 0xba80, 0x2069, 0xb400, 0x080c, 0x2489, 0x080c, 0x2479, -+ 0x2009, 0x0004, 0x7912, 0x7817, 0x0004, 0x080c, 0x27be, 0x781b, -+ 0x0002, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a9, 0x0080, 0x782f, -+ 0x0000, 0x1f04, 0x23b7, 0x20e1, 0x9080, 0x783b, 0x001f, 0x20e1, -+ 0x8700, 0x012e, 0x0005, 0x0126, 0x2091, 0x2600, 0x781c, 0xd0a4, -+ 0x190c, 0x2476, 0xa084, 0x0007, 0x0002, 0x23e7, 0x23d5, 0x23d8, -+ 0x23db, 0x23e0, 0x23e2, 0x23e4, 0x23e6, 0x080c, 0x6385, 0x0078, -+ 0x080c, 0x63c4, 0x0060, 0x080c, 0x6385, 0x080c, 0x63c4, 0x0038, -+ 0x0041, 0x0028, 0x0031, 0x0018, 0x0021, 0x0008, 0x0011, 0x012e, -+ 0x0005, 0x0006, 0x0016, 0x0026, 0x080c, 0xb3d3, 0x7930, 0xa184, -+ 0x0003, 0x0170, 0x2001, 0xb6ef, 0x2004, 0xa005, 0x0130, 0x2001, -+ 0x0133, 0x2004, 0xa005, 0x090c, 0x1511, 0x20e1, 0x9040, 0x04a0, -+ 0xa184, 0x0030, 0x01e0, 0x6a00, 0xa286, 0x0003, 0x1108, 0x00a0, -+ 0x080c, 0x5a90, 0x1178, 0x2001, 0xb69f, 0x2003, 0x0001, 0x2001, -+ 0xb400, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5ad4, 0x080c, -+ 0x59c8, 0x0010, 0x080c, 0x4ad9, 0x080c, 0x2479, 0x00a8, 0xa184, -+ 0x00c0, 0x0168, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0xb723, -+ 0x080c, 0x1dcd, 0x005e, 0x004e, 0x003e, 0x00ee, 0x0028, 0xa184, -+ 0x0300, 0x0110, 0x20e1, 0x9020, 0x7932, 0x002e, 0x001e, 0x000e, -+ 0x0005, 0x0016, 0x00e6, 0x00f6, 0x2071, 0xb400, 0x7128, 0x2001, -+ 0xb691, 0x2102, 0x2001, 0xb699, 0x2102, 0xa182, 0x0211, 0x1218, -+ 0x2009, 0x0008, 0x0400, 0xa182, 0x0259, 0x1218, 0x2009, 0x0007, -+ 0x00d0, 0xa182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0xa182, -+ 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, 0xa182, 0x0421, 0x1218, -+ 0x2009, 0x0004, 0x0040, 0xa182, 0x0581, 0x1218, 0x2009, 0x0003, -+ 0x0010, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, 0x7817, 0x0004, -+ 0x080c, 0x27be, 0x00fe, 0x00ee, 0x001e, 0x0005, 0x7938, 0x080c, -+ 0x1511, 0x00e6, 0x0026, 0x2071, 0x0200, 0x20e1, 0x1000, 0x7220, -+ 0x7028, 0x7020, 0xa206, 0x0de0, 0x20e1, 0x9010, 0x002e, 0x00ee, -+ 0x0005, 0x20e1, 0xa000, 0x7837, 0x0001, 0x782f, 0x0000, 0x782f, -+ 0x0000, 0x782f, 0x0000, 0x782f, 0x0000, 0x7837, 0x0005, 0x20a9, -+ 0x0210, 0x7830, 0xd0bc, 0x1110, 0x1f04, 0x2499, 0x7837, 0x0001, -+ 0x7837, 0x0000, 0xe000, 0xe000, 0x20e1, 0xa000, 0x0005, 0x0126, -+ 0x2091, 0x2800, 0x2061, 0x0100, 0x2071, 0xb400, 0x6024, 0x6026, -+ 0x6053, 0x0030, 0x080c, 0x27fd, 0x6050, 0xa084, 0xfe7f, 0x6052, -+ 0x2009, 0x00ef, 0x6132, 0x6136, 0x080c, 0x280d, 0x60e7, 0x0000, -+ 0x61ea, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f, -+ 0x0080, 0x602f, 0x0000, 0x6007, 0x0e9f, 0x601b, 0x001e, 0x600f, -+ 0x00ff, 0x2001, 0xb68d, 0x2003, 0x00ff, 0x602b, 0x002f, 0x012e, -+ 0x0005, 0x2001, 0xb432, 0x2003, 0x0000, 0x2001, 0xb431, 0x2003, -+ 0x0001, 0x0005, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, -+ 0x6124, 0xa184, 0x1e2c, 0x1118, 0xa184, 0x0007, 0x002a, 0xa195, -+ 0x0004, 0xa284, 0x0007, 0x0002, 0x2516, 0x24fc, 0x24ff, 0x2502, -+ 0x2507, 0x2509, 0x250d, 0x2511, 0x080c, 0x6b39, 0x00b8, 0x080c, -+ 0x6c14, 0x00a0, 0x080c, 0x6c14, 0x080c, 0x6b39, 0x0078, 0x0099, -+ 0x0068, 0x080c, 0x6b39, 0x0079, 0x0048, 0x080c, 0x6c14, 0x0059, -+ 0x0028, 0x080c, 0x6c14, 0x080c, 0x6b39, 0x0029, 0x002e, 0x001e, -+ 0x000e, 0x012e, 0x0005, 0x6124, 0xd19c, 0x1904, 0x272c, 0x080c, -+ 0x5a90, 0x0578, 0x7000, 0xa086, 0x0003, 0x0198, 0x6024, 0xa084, -+ 0x1800, 0x0178, 0x080c, 0x5ab6, 0x0118, 0x080c, 0x5aa2, 0x1148, -+ 0x6027, 0x0020, 0x6043, 0x0000, 0x2001, 0xb69e, 0x2003, 0xaaaa, -+ 0x0458, 0x080c, 0x5ab6, 0x15d0, 0x6024, 0xa084, 0x1800, 0x1108, -+ 0x04a8, 0x2001, 0xb69e, 0x2003, 0xaaaa, 0x2001, 0xb69f, 0x2003, -+ 0x0001, 0x2001, 0xb400, 0x2003, 0x0001, 0x080c, 0x59c8, 0x0804, -+ 0x272c, 0xd1ac, 0x1518, 0x6024, 0xd0dc, 0x1170, 0xd0e4, 0x1188, -+ 0xd0d4, 0x11a0, 0xd0cc, 0x0130, 0x708c, 0xa086, 0x0028, 0x1110, -+ 0x080c, 0x5c1f, 0x0804, 0x272c, 0x2001, 0xb69f, 0x2003, 0x0000, -+ 0x0048, 0x2001, 0xb69f, 0x2003, 0x0002, 0x0020, 0x080c, 0x5b92, -+ 0x0804, 0x272c, 0x080c, 0x5cc4, 0x0804, 0x272c, 0xd1ac, 0x0904, -+ 0x2674, 0x080c, 0x5a90, 0x11d8, 0x6027, 0x0020, 0x0006, 0x0026, -+ 0x0036, 0x080c, 0x5aac, 0x1170, 0x2001, 0xb69f, 0x2003, 0x0001, -+ 0x2001, 0xb400, 0x2003, 0x0001, 0x080c, 0x59c8, 0x003e, 0x002e, -+ 0x000e, 0x0005, 0x003e, 0x002e, 0x000e, 0x080c, 0x5a67, 0x0016, -+ 0x0046, 0x00c6, 0x644c, 0xa486, 0xf0f0, 0x1138, 0x2061, 0x0100, -+ 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74ce, 0xa48c, 0xff00, -+ 0x7034, 0xd084, 0x0178, 0xa186, 0xf800, 0x1160, 0x703c, 0xd084, -+ 0x1148, 0xc085, 0x703e, 0x0036, 0x2418, 0x2011, 0x8016, 0x080c, -+ 0x3e8a, 0x003e, 0xa196, 0xff00, 0x05b8, 0x7054, 0xa084, 0x00ff, -+ 0x810f, 0xa116, 0x0588, 0x7130, 0xd184, 0x1570, 0x2011, 0xb453, -+ 0x2214, 0xd2ec, 0x0138, 0xc18d, 0x7132, 0x2011, 0xb453, 0x2214, -+ 0xd2ac, 0x1510, 0x6240, 0xa294, 0x0010, 0x0130, 0x6248, 0xa294, -+ 0xff00, 0xa296, 0xff00, 0x01c0, 0x7030, 0xd08c, 0x0904, 0x2641, -+ 0x7034, 0xd08c, 0x1140, 0x2001, 0xb40c, 0x200c, 0xd1ac, 0x1904, -+ 0x2641, 0xc1ad, 0x2102, 0x0036, 0x73cc, 0x2011, 0x8013, 0x080c, -+ 0x3e8a, 0x003e, 0x0804, 0x2641, 0x7034, 0xd08c, 0x1140, 0x2001, -+ 0xb40c, 0x200c, 0xd1ac, 0x1904, 0x2641, 0xc1ad, 0x2102, 0x0036, -+ 0x73cc, 0x2011, 0x8013, 0x080c, 0x3e8a, 0x003e, 0x7130, 0xc185, -+ 0x7132, 0x2011, 0xb453, 0x220c, 0xd1a4, 0x01d0, 0x0016, 0x2009, -+ 0x0001, 0x2011, 0x0100, 0x080c, 0x6adf, 0x2019, 0x000e, 0x080c, -+ 0xafe8, 0xa484, 0x00ff, 0xa080, 0x2d88, 0x200d, 0xa18c, 0xff00, -+ 0x810f, 0x8127, 0xa006, 0x2009, 0x000e, 0x080c, 0xb06b, 0x001e, -+ 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c, -+ 0x2c33, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, -+ 0x080c, 0x4f6a, 0x1110, 0x080c, 0x4bc5, 0x8108, 0x1f04, 0x2638, -+ 0x015e, 0x00ce, 0x004e, 0x2011, 0x0003, 0x080c, 0x801f, 0x2011, -+ 0x0002, 0x080c, 0x8029, 0x080c, 0x7f03, 0x0036, 0x2019, 0x0000, -+ 0x080c, 0x7f8e, 0x003e, 0x60e3, 0x0000, 0x001e, 0x2001, 0xb400, -+ 0x2014, 0xa296, 0x0004, 0x1128, 0xd19c, 0x11b0, 0x6228, 0xc29d, -+ 0x622a, 0x2003, 0x0001, 0x2001, 0xb423, 0x2003, 0x0000, 0x6027, -+ 0x0020, 0x080c, 0x5ab6, 0x1140, 0x0016, 0x2009, 0x07d0, 0x2011, -+ 0x59a5, 0x080c, 0x69e7, 0x001e, 0xd194, 0x0904, 0x272c, 0x0016, -+ 0x6220, 0xd2b4, 0x0904, 0x26dd, 0x080c, 0x69d5, 0x080c, 0x7d24, -+ 0x6027, 0x0004, 0x00f6, 0x2019, 0xb6e9, 0x2304, 0xa07d, 0x0570, -+ 0x7804, 0xa086, 0x0032, 0x1550, 0x00d6, 0x00c6, 0x00e6, 0x2069, -+ 0x0140, 0x618c, 0x6288, 0x7818, 0x608e, 0x7808, 0x608a, 0x6043, -+ 0x0002, 0x2001, 0x0003, 0x8001, 0x1df0, 0x6043, 0x0000, 0x6803, -+ 0x1000, 0x6803, 0x0000, 0x618e, 0x628a, 0x080c, 0x7055, 0x080c, -+ 0x7134, 0x7810, 0x2070, 0x7037, 0x0103, 0x2f60, 0x080c, 0x85c0, -+ 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x0005, 0x00fe, 0x00d6, -+ 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0120, 0x6803, 0x1000, -+ 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061, 0xb6e0, 0x6028, 0xa09a, -+ 0x00c8, 0x1238, 0x8000, 0x602a, 0x00ce, 0x080c, 0x7d17, 0x0804, -+ 0x272b, 0x2019, 0xb6e9, 0x2304, 0xa065, 0x0120, 0x2009, 0x0027, -+ 0x080c, 0x85ef, 0x00ce, 0x0804, 0x272b, 0xd2bc, 0x0904, 0x272b, -+ 0x080c, 0x69e2, 0x6014, 0xa084, 0x0184, 0xa085, 0x0010, 0x6016, -+ 0x6027, 0x0004, 0x00d6, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, -+ 0x0120, 0x6803, 0x1000, 0x6803, 0x0000, 0x00de, 0x00c6, 0x2061, -+ 0xb6e0, 0x6044, 0xa09a, 0x00c8, 0x12f0, 0x8000, 0x6046, 0x603c, -+ 0x00ce, 0xa005, 0x0540, 0x2009, 0x07d0, 0x080c, 0x69da, 0xa080, -+ 0x0007, 0x2004, 0xa086, 0x0006, 0x1138, 0x6114, 0xa18c, 0x0184, -+ 0xa18d, 0x0012, 0x6116, 0x00b8, 0x6114, 0xa18c, 0x0184, 0xa18d, -+ 0x0016, 0x6116, 0x0080, 0x0036, 0x2019, 0x0001, 0x080c, 0x7f8e, -+ 0x003e, 0x2019, 0xb6ef, 0x2304, 0xa065, 0x0120, 0x2009, 0x004f, -+ 0x080c, 0x85ef, 0x00ce, 0x001e, 0xd19c, 0x0904, 0x2785, 0x7034, -+ 0xd0ac, 0x1560, 0x0016, 0x0156, 0x6027, 0x0008, 0x602f, 0x0020, -+ 0x20a9, 0x0006, 0x1d04, 0x273a, 0x2091, 0x6000, 0x1f04, 0x273a, -+ 0x602f, 0x0000, 0x6150, 0xa185, 0x1400, 0x6052, 0x20a9, 0x0366, -+ 0x1d04, 0x2748, 0x2091, 0x6000, 0x6020, 0xd09c, 0x1130, 0x015e, -+ 0x6152, 0x001e, 0x6027, 0x0008, 0x0480, 0x080c, 0x28cd, 0x1f04, -+ 0x2748, 0x015e, 0x6152, 0x001e, 0x6027, 0x0008, 0x0016, 0x6028, -+ 0xc09c, 0x602a, 0x2011, 0x0003, 0x080c, 0x801f, 0x2011, 0x0002, -+ 0x080c, 0x8029, 0x080c, 0x7f03, 0x0036, 0x2019, 0x0000, 0x080c, -+ 0x7f8e, 0x003e, 0x60e3, 0x0000, 0x080c, 0xb3b2, 0x080c, 0xb3cd, -+ 0xa085, 0x0001, 0x080c, 0x5ad4, 0x2001, 0xb400, 0x2003, 0x0004, -+ 0x6027, 0x0008, 0x080c, 0x12d9, 0x001e, 0xa18c, 0xffd0, 0x6126, -+ 0x0005, 0x0006, 0x0016, 0x0026, 0x00e6, 0x00f6, 0x0126, 0x2091, -+ 0x8000, 0x2071, 0xb400, 0x71c4, 0x70c6, 0xa116, 0x0500, 0x81ff, -+ 0x0128, 0x2011, 0x8011, 0x080c, 0x3e8a, 0x00c8, 0x2011, 0x8012, -+ 0x080c, 0x3e8a, 0x2001, 0xb472, 0x2004, 0xd0fc, 0x1180, 0x0036, -+ 0x00c6, 0x080c, 0x2858, 0x080c, 0x7edf, 0x2061, 0x0100, 0x2019, -+ 0x0028, 0x2009, 0x0000, 0x080c, 0x2c33, 0x00ce, 0x003e, 0x012e, -+ 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005, 0x00c6, 0x00f6, -+ 0x0006, 0x0026, 0x2061, 0x0100, 0xa190, 0x27d1, 0x2205, 0x60f2, -+ 0x2011, 0x27de, 0x2205, 0x60ee, 0x002e, 0x000e, 0x00fe, 0x00ce, -+ 0x0005, 0x0840, 0x0840, 0x0840, 0x0580, 0x0420, 0x0348, 0x02c0, -+ 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x0140, 0x00f8, -+ 0x00d0, 0x00b0, 0x00a0, 0x2028, 0xa18c, 0x00ff, 0x2130, 0xa094, -+ 0xff00, 0x1110, 0x81ff, 0x0118, 0x080c, 0x6672, 0x0038, 0xa080, -+ 0x2d88, 0x200d, 0xa18c, 0xff00, 0x810f, 0xa006, 0x0005, 0xa080, -+ 0x2d88, 0x200d, 0xa18c, 0x00ff, 0x0005, 0x00d6, 0x2069, 0x0140, -+ 0x2001, 0xb415, 0x2003, 0x00ef, 0x20a9, 0x0010, 0xa006, 0x6852, -+ 0x6856, 0x1f04, 0x2808, 0x00de, 0x0005, 0x0006, 0x00d6, 0x0026, -+ 0x2069, 0x0140, 0x2001, 0xb415, 0x2102, 0x8114, 0x8214, 0x8214, -+ 0x8214, 0x20a9, 0x0010, 0x6853, 0x0000, 0xa006, 0x82ff, 0x1128, -+ 0xa184, 0x000f, 0xa080, 0xb3e1, 0x2005, 0x6856, 0x8211, 0x1f04, -+ 0x281d, 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, 0x2061, 0xb400, -+ 0x6030, 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, 0x00ce, 0x0005, -+ 0x0156, 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, 0x0140, 0x6980, -+ 0xa116, 0x0180, 0xa112, 0x1230, 0x8212, 0x8210, 0x22a8, 0x2001, -+ 0x0402, 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, 0x1f04, 0x284d, -+ 0x680f, 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, 0x015e, 0x0005, -+ 0x2001, 0xb453, 0x2004, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0xa006, -+ 0x0046, 0x2020, 0x2009, 0x002e, 0x080c, 0xb06b, 0x004e, 0x0005, -+ 0x00f6, 0x0016, 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, 0x0548, -+ 0xa084, 0x0700, 0xa08e, 0x0300, 0x1520, 0x2011, 0x0000, 0x2009, -+ 0x0002, 0x2300, 0xa080, 0x0020, 0x2018, 0x2300, 0x080c, 0x6b05, -+ 0x2011, 0x0030, 0x2200, 0x8007, 0xa085, 0x004c, 0x78c2, 0x2009, -+ 0x0204, 0x210c, 0x2200, 0xa100, 0x2009, 0x0138, 0x200a, 0x080c, -+ 0x5a90, 0x1118, 0x2009, 0xb68f, 0x200a, 0x002e, 0x001e, 0x00fe, -+ 0x0005, 0x78c3, 0x0000, 0x0cc8, 0x0126, 0x2091, 0x2800, 0x0006, -+ 0x0016, 0x0026, 0x2001, 0x0170, 0x200c, 0x8000, 0x2014, 0xa184, -+ 0x0003, 0x0110, 0x0804, 0x1ad3, 0x002e, 0x001e, 0x000e, 0x012e, -+ 0x0005, 0x0006, 0x2001, 0x0100, 0x2004, 0xa082, 0x0005, 0x000e, -+ 0x0268, 0x2001, 0x0170, 0x200c, 0xa18c, 0x00ff, 0xa18e, 0x004c, -+ 0x1128, 0x200c, 0xa18c, 0xff00, 0x810f, 0x0010, 0x2009, 0x0000, -+ 0x2001, 0x0204, 0x2004, 0xa108, 0x0005, 0x0006, 0x0156, 0x00f6, -+ 0x2079, 0x0100, 0x20a9, 0x000a, 0x7854, 0xd08c, 0x1110, 0x1f04, -+ 0x28d4, 0x00fe, 0x015e, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, -+ 0x2061, 0x0100, 0x6030, 0x0006, 0x6048, 0x0006, 0x60e4, 0x0006, -+ 0x60e8, 0x0006, 0x6050, 0x0006, 0x60f0, 0x0006, 0x60ec, 0x0006, -+ 0x600c, 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, 0x60e0, 0x0006, -+ 0x602f, 0x0100, 0x602f, 0x0000, 0xe000, 0xe000, 0xe000, 0xe000, -+ 0x602f, 0x0040, 0x602f, 0x0000, 0x000e, 0x60e2, 0x000e, 0x602a, -+ 0x000e, 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, 0x000e, 0x60f2, -+ 0x000e, 0x6052, 0x000e, 0x60ea, 0x000e, 0x60e6, 0x000e, 0x604a, -+ 0x000e, 0x6032, 0x6036, 0x2008, 0x080c, 0x280d, 0x000e, 0x00ce, -+ 0x001e, 0x0005, 0x2009, 0x0171, 0x2104, 0xd0dc, 0x0140, 0x2009, -+ 0x0170, 0x2104, 0x200b, 0x0080, 0xe000, 0xe000, 0x200a, 0x0005, -+ 0x29c0, 0x29c4, 0x29c8, 0x29ce, 0x29d4, 0x29da, 0x29e0, 0x29e8, -+ 0x29f0, 0x29f6, 0x29fc, 0x2a04, 0x2a0c, 0x2a14, 0x2a1c, 0x2a26, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, -+ 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a32, 0x2a32, 0x2a38, 0x2a38, 0x2a3f, 0x2a3f, 0x2a46, 0x2a46, -+ 0x2a4f, 0x2a4f, 0x2a56, 0x2a56, 0x2a5f, 0x2a5f, 0x2a68, 0x2a68, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, -+ 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, 0x2a73, -+ 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, -+ 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, 0x2a30, -+ 0x0106, 0x0006, 0x0804, 0x2a7b, 0x0106, 0x0006, 0x0804, 0x2a7b, -+ 0x0106, 0x0006, 0x080c, 0x24e2, 0x0804, 0x2a7b, 0x0106, 0x0006, -+ 0x080c, 0x24e2, 0x0804, 0x2a7b, 0x0106, 0x0006, 0x080c, 0x236d, -+ 0x0804, 0x2a7b, 0x0106, 0x0006, 0x080c, 0x236d, 0x0804, 0x2a7b, -+ 0x0106, 0x0006, 0x080c, 0x24e2, 0x080c, 0x236d, 0x0804, 0x2a7b, -+ 0x0106, 0x0006, 0x080c, 0x24e2, 0x080c, 0x236d, 0x0804, 0x2a7b, -+ 0x0106, 0x0006, 0x080c, 0x23c3, 0x0804, 0x2a7b, 0x0106, 0x0006, -+ 0x080c, 0x23c3, 0x0804, 0x2a7b, 0x0106, 0x0006, 0x080c, 0x24e2, -+ 0x080c, 0x23c3, 0x0804, 0x2a7b, 0x0106, 0x0006, 0x080c, 0x24e2, -+ 0x080c, 0x23c3, 0x0804, 0x2a7b, 0x0106, 0x0006, 0x080c, 0x236d, -+ 0x080c, 0x23c3, 0x0804, 0x2a7b, 0x0106, 0x0006, 0x080c, 0x236d, -+ 0x080c, 0x23c3, 0x0804, 0x2a7b, 0x0106, 0x0006, 0x080c, 0x24e2, -+ 0x080c, 0x236d, 0x080c, 0x23c3, 0x0804, 0x2a7b, 0x0106, 0x0006, -+ 0x080c, 0x24e2, 0x080c, 0x236d, 0x080c, 0x23c3, 0x0804, 0x2a7b, -+ 0xe000, 0x0cf0, 0x0106, 0x0006, 0x080c, 0x289c, 0x0804, 0x2a7b, -+ 0x0106, 0x0006, 0x080c, 0x289c, 0x080c, 0x24e2, 0x04e0, 0x0106, -+ 0x0006, 0x080c, 0x289c, 0x080c, 0x236d, 0x04a8, 0x0106, 0x0006, -+ 0x080c, 0x289c, 0x080c, 0x24e2, 0x080c, 0x236d, 0x0460, 0x0106, -+ 0x0006, 0x080c, 0x289c, 0x080c, 0x23c3, 0x0428, 0x0106, 0x0006, -+ 0x080c, 0x289c, 0x080c, 0x24e2, 0x080c, 0x23c3, 0x00e0, 0x0106, -+ 0x0006, 0x080c, 0x289c, 0x080c, 0x236d, 0x080c, 0x23c3, 0x0098, -+ 0x0106, 0x0006, 0x080c, 0x289c, 0x080c, 0x24e2, 0x080c, 0x236d, -+ 0x080c, 0x23c3, 0x0040, 0x20d1, 0x0000, 0x20d1, 0x0001, 0x20d1, -+ 0x0000, 0x080c, 0x1511, 0x000e, 0x010e, 0x000d, 0x00c6, 0x0026, -+ 0x0046, 0x2021, 0x0000, 0x080c, 0x52ca, 0x1904, 0x2b5b, 0x72d4, -+ 0x2001, 0xb69e, 0x2004, 0xa005, 0x1110, 0xd29c, 0x0148, 0xd284, -+ 0x1138, 0xd2bc, 0x1904, 0x2b5b, 0x080c, 0x2b5f, 0x0804, 0x2b5b, -+ 0xd2cc, 0x1904, 0x2b5b, 0x080c, 0x5a90, 0x1120, 0x709f, 0xffff, -+ 0x0804, 0x2b5b, 0xd294, 0x0120, 0x709f, 0xffff, 0x0804, 0x2b5b, -+ 0x2001, 0xb415, 0x203c, 0x7288, 0xd284, 0x0904, 0x2afd, 0xd28c, -+ 0x1904, 0x2afd, 0x0036, 0x739c, 0xa38e, 0xffff, 0x1110, 0x2019, -+ 0x0001, 0x8314, 0xa2e0, 0xbbc0, 0x2c04, 0xa38c, 0x0001, 0x0120, -+ 0xa084, 0xff00, 0x8007, 0x0010, 0xa084, 0x00ff, 0xa70e, 0x0560, -+ 0xa08e, 0x0000, 0x0548, 0xa08e, 0x00ff, 0x1150, 0x7230, 0xd284, -+ 0x1538, 0x7288, 0xc28d, 0x728a, 0x709f, 0xffff, 0x003e, 0x0428, -+ 0x2009, 0x0000, 0x080c, 0x27e3, 0x080c, 0x4f0e, 0x11b8, 0x6004, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x1150, 0x7030, 0xd08c, 0x0118, -+ 0x6000, 0xd0bc, 0x0120, 0x080c, 0x2b72, 0x0140, 0x0028, 0x080c, -+ 0x2ca1, 0x080c, 0x2ba0, 0x0110, 0x8318, 0x0818, 0x739e, 0x0010, -+ 0x709f, 0xffff, 0x003e, 0x0804, 0x2b5b, 0xa780, 0x2d88, 0x203d, -+ 0xa7bc, 0xff00, 0x873f, 0x2041, 0x007e, 0x709c, 0xa096, 0xffff, -+ 0x1120, 0x2009, 0x0000, 0x28a8, 0x0050, 0xa812, 0x0220, 0x2008, -+ 0xa802, 0x20a8, 0x0020, 0x709f, 0xffff, 0x0804, 0x2b5b, 0x2700, -+ 0x0156, 0x0016, 0xa106, 0x05a0, 0xc484, 0x080c, 0x4f6a, 0x0120, -+ 0x080c, 0x4f0e, 0x15a8, 0x0008, 0xc485, 0x6004, 0xa084, 0x00ff, -+ 0xa086, 0x0006, 0x1130, 0x7030, 0xd08c, 0x01e8, 0x6000, 0xd0bc, -+ 0x11d0, 0x7288, 0xd28c, 0x0188, 0x6004, 0xa084, 0x00ff, 0xa082, -+ 0x0006, 0x02b0, 0xd484, 0x1118, 0x080c, 0x4f2d, 0x0028, 0x080c, -+ 0x2d2e, 0x0170, 0x080c, 0x2d5b, 0x0058, 0x080c, 0x2ca1, 0x080c, -+ 0x2ba0, 0x0170, 0x0028, 0x080c, 0x2d2e, 0x0110, 0x0419, 0x0140, -+ 0x001e, 0x8108, 0x015e, 0x1f04, 0x2b17, 0x709f, 0xffff, 0x0018, -+ 0x001e, 0x015e, 0x719e, 0x004e, 0x002e, 0x00ce, 0x0005, 0x00c6, -+ 0x0016, 0x709f, 0x0001, 0x2009, 0x007e, 0x080c, 0x4f0e, 0x1138, -+ 0x080c, 0x2ca1, 0x04a9, 0x0118, 0x70d4, 0xc0bd, 0x70d6, 0x001e, -+ 0x00ce, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x2001, -+ 0xb457, 0x2004, 0xa084, 0x00ff, 0x6842, 0x080c, 0x9e67, 0x01d8, -+ 0x2d00, 0x601a, 0x080c, 0x9fb8, 0x601f, 0x0001, 0x2001, 0x0000, -+ 0x080c, 0x4eac, 0x2001, 0x0000, 0x080c, 0x4ebe, 0x0126, 0x2091, -+ 0x8000, 0x7098, 0x8000, 0x709a, 0x012e, 0x2009, 0x0004, 0x080c, -+ 0x85ef, 0xa085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, -+ 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x2001, 0xb457, 0x2004, -+ 0xa084, 0x00ff, 0x6842, 0x080c, 0x9e67, 0x0550, 0x2d00, 0x601a, -+ 0x6800, 0xc0c4, 0x6802, 0x68a0, 0xa086, 0x007e, 0x0140, 0x6804, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x1110, 0x080c, 0x2c60, 0x080c, -+ 0x9fb8, 0x601f, 0x0001, 0x2001, 0x0000, 0x080c, 0x4eac, 0x2001, -+ 0x0002, 0x080c, 0x4ebe, 0x0126, 0x2091, 0x8000, 0x7098, 0x8000, -+ 0x709a, 0x012e, 0x2009, 0x0002, 0x080c, 0x85ef, 0xa085, 0x0001, -+ 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x00c6, 0x0026, 0x2009, -+ 0x0080, 0x080c, 0x4f0e, 0x1120, 0x0031, 0x0110, 0x70db, 0xffff, -+ 0x002e, 0x00ce, 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2c68, -+ 0x080c, 0x856a, 0x01d8, 0x2d00, 0x601a, 0x080c, 0x9fb8, 0x601f, -+ 0x0001, 0x2001, 0x0000, 0x080c, 0x4eac, 0x2001, 0x0002, 0x080c, -+ 0x4ebe, 0x0126, 0x2091, 0x8000, 0x70dc, 0x8000, 0x70de, 0x012e, -+ 0x2009, 0x0002, 0x080c, 0x85ef, 0xa085, 0x0001, 0x00ce, 0x00de, -+ 0x007e, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, -+ 0x2009, 0x007f, 0x080c, 0x4f0e, 0x1190, 0x2c68, 0x080c, 0x856a, -+ 0x0170, 0x2d00, 0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x080c, -+ 0x9fb8, 0x2009, 0x0022, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, -+ 0x00de, 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0066, 0x0036, 0x0026, -+ 0x080c, 0x6dc6, 0x080c, 0x6d69, 0x080c, 0x900f, 0x2130, 0x81ff, -+ 0x0128, 0x20a9, 0x007e, 0x2009, 0x0000, 0x0020, 0x20a9, 0x007f, -+ 0x2009, 0x0000, 0x0016, 0x080c, 0x4f6a, 0x1120, 0x080c, 0x516b, -+ 0x080c, 0x4bc5, 0x001e, 0x8108, 0x1f04, 0x2c4a, 0x86ff, 0x1110, -+ 0x080c, 0x11f0, 0x002e, 0x003e, 0x006e, 0x00ce, 0x00ee, 0x0005, -+ 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x6218, 0x2270, 0x72a0, -+ 0x0026, 0x2019, 0x0029, 0x080c, 0x6dba, 0x0076, 0x2039, 0x0000, -+ 0x080c, 0x6cc7, 0x2c08, 0x080c, 0xae05, 0x007e, 0x001e, 0x2e60, -+ 0x080c, 0x516b, 0x6210, 0x6314, 0x080c, 0x4bc5, 0x6212, 0x6316, -+ 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, -+ 0x6018, 0xa080, 0x0028, 0x2004, 0xa086, 0x0080, 0x0150, 0x2071, -+ 0xb400, 0x7098, 0xa005, 0x0110, 0x8001, 0x709a, 0x000e, 0x00ee, -+ 0x0005, 0x2071, 0xb400, 0x70dc, 0xa005, 0x0dc0, 0x8001, 0x70de, -+ 0x0ca8, 0x6000, 0xc08c, 0x6002, 0x0005, 0x00f6, 0x00e6, 0x00c6, -+ 0x0036, 0x0026, 0x0016, 0x0156, 0x2178, 0x81ff, 0x1118, 0x20a9, -+ 0x0001, 0x0098, 0x2001, 0xb453, 0x2004, 0xd0c4, 0x0150, 0xd0a4, -+ 0x0140, 0xa006, 0x0046, 0x2020, 0x2009, 0x002d, 0x080c, 0xb06b, -+ 0x004e, 0x20a9, 0x00ff, 0x2011, 0x0000, 0x0026, 0xa28e, 0x007e, -+ 0x0904, 0x2d0d, 0xa28e, 0x007f, 0x0904, 0x2d0d, 0xa28e, 0x0080, -+ 0x05e0, 0xa288, 0xb535, 0x210c, 0x81ff, 0x05b8, 0x8fff, 0x1148, -+ 0x2001, 0xb6be, 0x0006, 0x2003, 0x0001, 0x04d9, 0x000e, 0x2003, -+ 0x0000, 0x00c6, 0x2160, 0x2001, 0x0001, 0x080c, 0x52d4, 0x00ce, -+ 0x2019, 0x0029, 0x080c, 0x6dba, 0x0076, 0x2039, 0x0000, 0x080c, -+ 0x6cc7, 0x00c6, 0x0026, 0x2160, 0x6204, 0xa294, 0x00ff, 0xa286, -+ 0x0006, 0x1118, 0x6007, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, -+ 0xa215, 0x6206, 0x002e, 0x00ce, 0x0016, 0x2c08, 0x080c, 0xae05, -+ 0x001e, 0x007e, 0x2160, 0x080c, 0x516b, 0x002e, 0x8210, 0x1f04, -+ 0x2cc5, 0x015e, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x00fe, -+ 0x0005, 0x0046, 0x0026, 0x0016, 0x2001, 0xb453, 0x2004, 0xd0c4, -+ 0x0148, 0xd0a4, 0x0138, 0xa006, 0x2220, 0x8427, 0x2009, 0x0029, -+ 0x080c, 0xb06b, 0x001e, 0x002e, 0x004e, 0x0005, 0x0016, 0x0026, -+ 0x0036, 0x00c6, 0x7288, 0x82ff, 0x01f8, 0x2011, 0xb453, 0x2214, -+ 0xd2ac, 0x11d0, 0x2100, 0x080c, 0x27f7, 0x81ff, 0x01b8, 0x2019, -+ 0x0001, 0x8314, 0xa2e0, 0xbbc0, 0x2c04, 0xd384, 0x0120, 0xa084, -+ 0xff00, 0x8007, 0x0010, 0xa084, 0x00ff, 0xa116, 0x0138, 0xa096, -+ 0x00ff, 0x0110, 0x8318, 0x0c68, 0xa085, 0x0001, 0x00ce, 0x003e, -+ 0x002e, 0x001e, 0x0005, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, -+ 0x0016, 0x0026, 0x0036, 0x2110, 0x0026, 0x2019, 0x0029, 0x080c, -+ 0x823c, 0x002e, 0x080c, 0xb310, 0x003e, 0x002e, 0x001e, 0xa180, -+ 0xb535, 0x2004, 0xa065, 0x0158, 0x0016, 0x00c6, 0x2061, 0xb7f4, -+ 0x001e, 0x611a, 0x080c, 0x2c60, 0x001e, 0x080c, 0x4f2d, 0x012e, -+ 0x00ce, 0x001e, 0x0005, 0x2001, 0xb435, 0x2004, 0xd0cc, 0x0005, -+ 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, -+ 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, -+ 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, -+ 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, -+ 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, -+ 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, -+ 0x8098, 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, -+ 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, -+ 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, -+ 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, -+ 0x8055, 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, -+ 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, -+ 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, -+ 0x802e, 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, -+ 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, -+ 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, -+ 0x3800, 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, -+ 0x3400, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, -+ 0x3200, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, -+ 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, -+ 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, -+ 0x8000, 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, -+ 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, -+ 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, -+ 0x8000, 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, -+ 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, -+ 0x8000, 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, -+ 0x0500, 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, -+ 0x0100, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x2071, 0xb482, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a, -+ 0x703e, 0x7033, 0xb492, 0x7037, 0xb492, 0x7007, 0x0001, 0x2061, -+ 0xb4d2, 0x6003, 0x0002, 0x0005, 0x1004, 0x2eae, 0x0e04, 0x2eae, -+ 0x2071, 0xb482, 0x2b78, 0x7818, 0xd084, 0x1140, 0x2a60, 0x7820, -+ 0xa08e, 0x0069, 0x1904, 0x2f93, 0x0804, 0x2f2c, 0x0005, 0x2071, -+ 0xb482, 0x7004, 0x0002, 0x2eb7, 0x2eb8, 0x2ec1, 0x2ed2, 0x0005, -+ 0x1004, 0x2ec0, 0x0e04, 0x2ec0, 0x2b78, 0x7818, 0xd084, 0x01e8, -+ 0x0005, 0x2b78, 0x2061, 0xb4d2, 0x6008, 0xa08e, 0x0100, 0x0128, -+ 0xa086, 0x0200, 0x0904, 0x2f8d, 0x0005, 0x7014, 0x2068, 0x2a60, -+ 0x7018, 0x0807, 0x7010, 0x2068, 0x6834, 0xa086, 0x0103, 0x0108, -+ 0x0005, 0x2a60, 0x2b78, 0x7018, 0x0807, 0x2a60, 0x7820, 0xa08a, -+ 0x0040, 0x1210, 0x61c4, 0x0042, 0x2100, 0xa08a, 0x003f, 0x1a04, -+ 0x2f8a, 0x61c4, 0x0804, 0x2f2c, 0x2f6e, 0x2f99, 0x2fa1, 0x2fa5, -+ 0x2fad, 0x2fb3, 0x2fb7, 0x2fc3, 0x2fc6, 0x2fd0, 0x2fd3, 0x2f8a, -+ 0x2f8a, 0x2f8a, 0x2fd6, 0x2f8a, 0x2fe5, 0x2ffc, 0x3013, 0x308d, -+ 0x3092, 0x30bb, 0x310c, 0x311d, 0x313c, 0x3174, 0x317e, 0x318b, -+ 0x319e, 0x31bf, 0x31c8, 0x31fe, 0x3204, 0x2f8a, 0x322d, 0x2f8a, -+ 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x3234, 0x323e, 0x2f8a, 0x2f8a, -+ 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x3246, 0x2f8a, -+ 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x3258, 0x3262, 0x2f8a, 0x2f8a, -+ 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x0002, 0x328c, 0x32e0, 0x333b, -+ 0x334e, 0x2f8a, 0x337f, 0x37b2, 0x41f1, 0x2f8a, 0x2f8a, 0x2f8a, -+ 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, 0x2fd0, 0x2fd3, 0x37b4, -+ 0x2f8a, 0x37c1, 0x428a, 0x42e5, 0x4349, 0x2f8a, 0x43ac, 0x43d2, -+ 0x43f1, 0x4423, 0x2f8a, 0x2f8a, 0x2f8a, 0x37c5, 0x396a, 0x3984, -+ 0x39a2, 0x3a03, 0x3a63, 0x3a6e, 0x3aa6, 0x3ab5, 0x3ac4, 0x3ac7, -+ 0x3aea, 0x3b34, 0x3baa, 0x3bb7, 0x3cb8, 0x3de1, 0x3e0a, 0x3f08, -+ 0x3f2a, 0x3f36, 0x3f6f, 0x4033, 0x2f8a, 0x2f8a, 0x2f8a, 0x2f8a, -+ 0x409b, 0x40b6, 0x4128, 0x41da, 0x713c, 0x0000, 0x2021, 0x4000, -+ 0x080c, 0x3e67, 0x0126, 0x2091, 0x8000, 0x0e04, 0x2f7a, 0x7818, -+ 0xd084, 0x0110, 0x012e, 0x0cb0, 0x7c22, 0x7926, 0x7a2a, 0x7b2e, -+ 0x781b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, 0x5000, -+ 0x012e, 0x0005, 0x2021, 0x4001, 0x0c18, 0x2021, 0x4002, 0x0c00, -+ 0x2021, 0x4003, 0x08e8, 0x2021, 0x4005, 0x08d0, 0x2021, 0x4006, -+ 0x08b8, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0804, -+ 0x3e74, 0x7823, 0x0004, 0x7824, 0x0807, 0xa02e, 0x2520, 0x7b28, -+ 0x7a2c, 0x7824, 0x7930, 0x0804, 0x3e77, 0x7924, 0x7828, 0x2114, -+ 0x200a, 0x0804, 0x2f6e, 0x7924, 0x2114, 0x0804, 0x2f6e, 0x2099, -+ 0x0009, 0x20a1, 0x0009, 0x20a9, 0x0007, 0x53a3, 0x7924, 0x7a28, -+ 0x7b2c, 0x0804, 0x2f6e, 0x7824, 0x2060, 0x0090, 0x2009, 0x0002, -+ 0x2011, 0x0002, 0x2019, 0x0003, 0x783b, 0x0017, 0x0804, 0x2f6e, -+ 0x7d38, 0x7c3c, 0x0840, 0x7d38, 0x7c3c, 0x0888, 0x2061, 0x1000, -+ 0xe10c, 0xa006, 0x2c15, 0xa200, 0x8c60, 0x8109, 0x1dd8, 0x2010, -+ 0xa005, 0x0904, 0x2f6e, 0x0804, 0x2f90, 0x2069, 0xb452, 0x7824, -+ 0x7930, 0xa11a, 0x1a04, 0x2f96, 0x8019, 0x0904, 0x2f96, 0x684a, -+ 0x6942, 0x782c, 0x6852, 0x7828, 0x6856, 0xa006, 0x685a, 0x685e, -+ 0x080c, 0x5d66, 0x0804, 0x2f6e, 0x2069, 0xb452, 0x7824, 0x7934, -+ 0xa11a, 0x1a04, 0x2f96, 0x8019, 0x0904, 0x2f96, 0x684e, 0x6946, -+ 0x782c, 0x6862, 0x7828, 0x6866, 0xa006, 0x686a, 0x686e, 0x080c, -+ 0x5396, 0x0804, 0x2f6e, 0xa02e, 0x2520, 0x81ff, 0x1904, 0x2f93, -+ 0x7924, 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0xb489, 0x41a1, -+ 0x080c, 0x3e33, 0x0904, 0x2f93, 0x2009, 0x0020, 0x080c, 0x3e74, -+ 0x701b, 0x302b, 0x0005, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, -+ 0x0011, 0x0138, 0xa096, 0x0019, 0x0120, 0xa096, 0x0015, 0x1904, -+ 0x2f93, 0x810f, 0xa18c, 0x00ff, 0x0904, 0x2f93, 0x710e, 0x700c, -+ 0x8001, 0x0528, 0x700e, 0x080c, 0x3e33, 0x0904, 0x2f93, 0x2009, -+ 0x0020, 0x2061, 0xb4d2, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, -+ 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x080c, -+ 0x3e74, 0x701b, 0x305c, 0x0005, 0x6834, 0xa084, 0x00ff, 0xa096, -+ 0x0002, 0x0120, 0xa096, 0x000a, 0x1904, 0x2f93, 0x08c0, 0x7010, -+ 0x2068, 0x6838, 0xc0fd, 0x683a, 0x080c, 0x4e0a, 0x1128, 0x7007, -+ 0x0003, 0x701b, 0x3076, 0x0005, 0x080c, 0x549c, 0x0126, 0x2091, -+ 0x8000, 0x20a9, 0x0005, 0x2099, 0xb489, 0x530a, 0x2100, 0xa210, -+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, -+ 0x2009, 0x0020, 0x012e, 0x0804, 0x3e77, 0x61ac, 0x7824, 0x60ae, -+ 0x0804, 0x2f6e, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, -+ 0x782b, 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, -+ 0x3f00, 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, -+ 0x8007, 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, -+ 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, -+ 0x00f0, 0x0804, 0x0427, 0x81ff, 0x1904, 0x2f93, 0x7924, 0x810f, -+ 0xa18c, 0x00ff, 0x080c, 0x4f6a, 0x1904, 0x2f96, 0x7e38, 0xa684, -+ 0x3fff, 0xa082, 0x4000, 0x0210, 0x0804, 0x2f96, 0x7c28, 0x7d2c, -+ 0x080c, 0x5132, 0xd28c, 0x1118, 0x080c, 0x50db, 0x0010, 0x080c, -+ 0x510b, 0x1518, 0x2061, 0xbc00, 0x0126, 0x2091, 0x8000, 0x6000, -+ 0xa086, 0x0000, 0x0148, 0x6010, 0xa06d, 0x0130, 0x683c, 0xa406, -+ 0x1118, 0x6840, 0xa506, 0x0150, 0x012e, 0xace0, 0x0018, 0x2001, -+ 0xb417, 0x2004, 0xac02, 0x1a04, 0x2f93, 0x0c30, 0x080c, 0x98c3, -+ 0x012e, 0x0904, 0x2f93, 0x0804, 0x2f6e, 0xa00e, 0x2001, 0x0005, -+ 0x080c, 0x549c, 0x0126, 0x2091, 0x8000, 0x080c, 0x9e63, 0x080c, -+ 0x53c9, 0x012e, 0x0804, 0x2f6e, 0x81ff, 0x1904, 0x2f93, 0x080c, -+ 0x3e48, 0x0904, 0x2f96, 0x080c, 0x5030, 0x0904, 0x2f93, 0x080c, -+ 0x513e, 0x0904, 0x2f93, 0x0804, 0x2f6e, 0x81ff, 0x1904, 0x2f93, -+ 0x080c, 0x3e58, 0x0904, 0x2f96, 0x080c, 0x51aa, 0x0904, 0x2f93, -+ 0x2019, 0x0005, 0x7924, 0x080c, 0x5159, 0x0904, 0x2f93, 0x7828, -+ 0xa08a, 0x1000, 0x1a04, 0x2f96, 0x8003, 0x800b, 0x810b, 0xa108, -+ 0x080c, 0x696d, 0x0804, 0x2f6e, 0x0126, 0x2091, 0x8000, 0x81ff, -+ 0x0118, 0x2009, 0x0001, 0x0450, 0x2029, 0x00ff, 0x6450, 0x2400, -+ 0xa506, 0x01f8, 0x2508, 0x080c, 0x4f6a, 0x11d8, 0x080c, 0x51aa, -+ 0x1128, 0x2009, 0x0002, 0x62b4, 0x2518, 0x00c0, 0x2019, 0x0004, -+ 0xa00e, 0x080c, 0x5159, 0x1118, 0x2009, 0x0006, 0x0078, 0x7824, -+ 0xa08a, 0x1000, 0x1270, 0x8003, 0x800b, 0x810b, 0xa108, 0x080c, -+ 0x696d, 0x8529, 0x1ae0, 0x012e, 0x0804, 0x2f6e, 0x012e, 0x0804, -+ 0x2f93, 0x012e, 0x0804, 0x2f96, 0x080c, 0x3e48, 0x0904, 0x2f96, -+ 0x080c, 0x5096, 0x080c, 0x5132, 0x0804, 0x2f6e, 0x81ff, 0x1904, -+ 0x2f93, 0x080c, 0x3e48, 0x0904, 0x2f96, 0x080c, 0x5087, 0x080c, -+ 0x5132, 0x0804, 0x2f6e, 0x81ff, 0x1904, 0x2f93, 0x080c, 0x3e48, -+ 0x0904, 0x2f96, 0x080c, 0x510d, 0x0904, 0x2f93, 0x080c, 0x4e4e, -+ 0x080c, 0x50d4, 0x080c, 0x5132, 0x0804, 0x2f6e, 0x080c, 0x3e48, -+ 0x0904, 0x2f96, 0x080c, 0x5030, 0x0904, 0x2f93, 0x62a0, 0x2019, -+ 0x0005, 0x00c6, 0x080c, 0x516b, 0x2061, 0x0000, 0x080c, 0x6dba, -+ 0x0076, 0x2039, 0x0000, 0x080c, 0x6cc7, 0x2009, 0x0000, 0x080c, -+ 0xae05, 0x007e, 0x00ce, 0x080c, 0x5132, 0x0804, 0x2f6e, 0x080c, -+ 0x3e48, 0x0904, 0x2f96, 0x080c, 0x5132, 0x2208, 0x0804, 0x2f6e, -+ 0x0156, 0x00d6, 0x00e6, 0x2069, 0xb514, 0x6810, 0x6914, 0xa10a, -+ 0x1210, 0x2009, 0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, -+ 0x20a9, 0x007e, 0x2069, 0xb535, 0x2d04, 0xa075, 0x0130, 0x704c, -+ 0x0071, 0xa210, 0x7080, 0x0059, 0xa318, 0x8d68, 0x1f04, 0x31dc, -+ 0x2300, 0xa218, 0x00ee, 0x00de, 0x015e, 0x0804, 0x2f6e, 0x00f6, -+ 0x0016, 0xa07d, 0x0140, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff, -+ 0x0110, 0x2178, 0x0cd0, 0x001e, 0x00fe, 0x0005, 0x2069, 0xb514, -+ 0x6910, 0x62b0, 0x0804, 0x2f6e, 0x81ff, 0x1904, 0x2f93, 0x6150, -+ 0xa190, 0x2d88, 0x2215, 0xa294, 0x00ff, 0x6370, 0x83ff, 0x0108, -+ 0x6274, 0x67d4, 0xd79c, 0x0118, 0x2031, 0x0001, 0x0090, 0xd7ac, -+ 0x0118, 0x2031, 0x0003, 0x0068, 0xd7a4, 0x0118, 0x2031, 0x0002, -+ 0x0040, 0x080c, 0x5a90, 0x1118, 0x2031, 0x0004, 0x0010, 0x2031, -+ 0x0000, 0x7e3a, 0x7f3e, 0x0804, 0x2f6e, 0x6140, 0x6244, 0x2019, -+ 0xb6b6, 0x231c, 0x0804, 0x2f6e, 0x0126, 0x2091, 0x8000, 0x6134, -+ 0xa006, 0x2010, 0x6338, 0x012e, 0x0804, 0x2f6e, 0x080c, 0x3e58, -+ 0x0904, 0x2f96, 0x6244, 0x6338, 0x0804, 0x2f6e, 0x6140, 0x6244, -+ 0x7824, 0x6042, 0x7b28, 0x6346, 0x2069, 0xb452, 0x831f, 0xa305, -+ 0x6816, 0x782c, 0x2069, 0xb6b6, 0x2d1c, 0x206a, 0x0804, 0x2f6e, -+ 0x0126, 0x2091, 0x8000, 0x7824, 0x6036, 0x782c, 0x603a, 0x012e, -+ 0x0804, 0x2f6e, 0x7838, 0xa005, 0x01a8, 0x7828, 0xa025, 0x0904, -+ 0x2f96, 0x782c, 0xa02d, 0x0904, 0x2f96, 0xa00e, 0x080c, 0x4f6a, -+ 0x1120, 0x6244, 0x6338, 0x6446, 0x653a, 0xa186, 0x00ff, 0x0190, -+ 0x8108, 0x0ca0, 0x080c, 0x3e58, 0x0904, 0x2f96, 0x7828, 0xa00d, -+ 0x0904, 0x2f96, 0x782c, 0xa005, 0x0904, 0x2f96, 0x6244, 0x6146, -+ 0x6338, 0x603a, 0x0804, 0x2f6e, 0x2001, 0xb400, 0x2004, 0xa086, -+ 0x0003, 0x1904, 0x2f93, 0x00c6, 0x2061, 0x0100, 0x7924, 0x810f, -+ 0xa18c, 0x00ff, 0xa196, 0x00ff, 0x1130, 0x2001, 0xb415, 0x2004, -+ 0xa085, 0xff00, 0x0078, 0xa182, 0x007f, 0x16a0, 0xa188, 0x2d88, -+ 0x210d, 0xa18c, 0x00ff, 0x2001, 0xb415, 0x2004, 0xa116, 0x0550, -+ 0x810f, 0xa105, 0x0126, 0x2091, 0x8000, 0x0006, 0x080c, 0x856a, -+ 0x000e, 0x01e0, 0x601a, 0x600b, 0xbc09, 0x601f, 0x0001, 0x080c, -+ 0x3e33, 0x01d8, 0x6837, 0x0000, 0x7007, 0x0003, 0x6833, 0x0000, -+ 0x6838, 0xc0fd, 0x683a, 0x701b, 0x3334, 0x2d00, 0x6012, 0x2009, -+ 0x0032, 0x080c, 0x85ef, 0x012e, 0x00ce, 0x0005, 0x012e, 0x00ce, -+ 0x0804, 0x2f93, 0x00ce, 0x0804, 0x2f96, 0x080c, 0x85c0, 0x0cb0, -+ 0x2001, 0xb400, 0x2004, 0xa086, 0x0003, 0x1904, 0x2f93, 0x00c6, -+ 0x2061, 0x0100, 0x7924, 0x810f, 0xa18c, 0x00ff, 0xa196, 0x00ff, -+ 0x1130, 0x2001, 0xb415, 0x2004, 0xa085, 0xff00, 0x0078, 0xa182, -+ 0x007f, 0x16a0, 0xa188, 0x2d88, 0x210d, 0xa18c, 0x00ff, 0x2001, -+ 0xb415, 0x2004, 0xa116, 0x0550, 0x810f, 0xa105, 0x0126, 0x2091, -+ 0x8000, 0x0006, 0x080c, 0x856a, 0x000e, 0x01e0, 0x601a, 0x600b, -+ 0xbc05, 0x601f, 0x0001, 0x080c, 0x3e33, 0x01d8, 0x6837, 0x0000, -+ 0x7007, 0x0003, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x701b, -+ 0x3334, 0x2d00, 0x6012, 0x2009, 0x0032, 0x080c, 0x85ef, 0x012e, -+ 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x2f93, 0x00ce, 0x0804, -+ 0x2f96, 0x080c, 0x85c0, 0x0cb0, 0x6830, 0xa086, 0x0100, 0x0904, -+ 0x2f93, 0x0804, 0x2f6e, 0x2061, 0xb774, 0x0126, 0x2091, 0x8000, -+ 0x6000, 0xd084, 0x0140, 0x6104, 0x6208, 0x2019, 0xb412, 0x231c, -+ 0x012e, 0x0804, 0x2f6e, 0x012e, 0x0804, 0x2f96, 0x81ff, 0x1904, -+ 0x2f93, 0x080c, 0x5a90, 0x0904, 0x2f93, 0x0126, 0x2091, 0x8000, -+ 0x6248, 0x6068, 0xa202, 0x0248, 0xa085, 0x0001, 0x080c, 0x282d, -+ 0x080c, 0x45e6, 0x012e, 0x0804, 0x2f6e, 0x012e, 0x0804, 0x2f96, -+ 0x0006, 0x0016, 0x00c6, 0x00e6, 0x2001, 0xb6bf, 0x2070, 0x2061, -+ 0xb452, 0x6008, 0x2072, 0x2009, 0x0000, 0x2011, 0x1000, 0x080c, -+ 0x6b05, 0x7206, 0x00ee, 0x00ce, 0x001e, 0x000e, 0x0005, 0x0126, -+ 0x2091, 0x8000, 0x7824, 0xa084, 0x0007, 0x0002, 0x3391, 0x339a, -+ 0x33a1, 0x338e, 0x338e, 0x338e, 0x338e, 0x338e, 0x012e, 0x0804, -+ 0x2f96, 0x2009, 0x0114, 0x2104, 0xa085, 0x0800, 0x200a, 0x080c, -+ 0x350c, 0x0070, 0x2009, 0x010b, 0x200b, 0x0010, 0x080c, 0x350c, -+ 0x0038, 0x81ff, 0x0128, 0x012e, 0x2021, 0x400b, 0x0804, 0x2f70, -+ 0x0086, 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, -+ 0x080c, 0x3368, 0x2009, 0x0101, 0x210c, 0x0016, 0x2001, 0x0138, -+ 0x200c, 0x2003, 0x0001, 0x0016, 0x2001, 0x007a, 0x2034, 0x2001, -+ 0x007b, 0x202c, 0xa006, 0x2048, 0x2050, 0x2058, 0x080c, 0x3757, -+ 0x080c, 0x36bb, 0xa03e, 0x2720, 0x00f6, 0x00e6, 0x00c6, 0x2d60, -+ 0x2071, 0xb74a, 0x2079, 0x0020, 0x00d6, 0x2069, 0x0000, 0x6824, -+ 0xd0b4, 0x0140, 0x2001, 0x007d, 0x2004, 0x783e, 0x2001, 0x007c, -+ 0x2004, 0x783a, 0x00de, 0x2011, 0x0001, 0x080c, 0x3667, 0x080c, -+ 0x3667, 0x00ce, 0x00ee, 0x00fe, 0x080c, 0x35b2, 0x080c, 0x368f, -+ 0x080c, 0x360c, 0x080c, 0x3571, 0x080c, 0x35a2, 0x00f6, 0x2079, -+ 0x0100, 0x7824, 0xd094, 0x0530, 0x7814, 0xa084, 0x0184, 0xa085, -+ 0x0010, 0x7816, 0x2079, 0x0140, 0x080c, 0x34ea, 0x1110, 0x00fe, -+ 0x0430, 0x7804, 0xd0dc, 0x0dc0, 0x2079, 0x0100, 0x7827, 0x0086, -+ 0x7814, 0xa084, 0x0184, 0xa085, 0x0032, 0x7816, 0x080c, 0x34ea, -+ 0x1110, 0x00fe, 0x00a0, 0x7824, 0xd0bc, 0x0dc0, 0x7827, 0x0080, -+ 0xa026, 0x7c16, 0x7824, 0xd0ac, 0x0130, 0x8b58, 0x080c, 0x34f4, -+ 0x00fe, 0x0804, 0x34b4, 0x00fe, 0x080c, 0x34ea, 0x1150, 0x8948, -+ 0x2001, 0x007a, 0x2602, 0x2001, 0x007b, 0x2502, 0x080c, 0x34f4, -+ 0x0088, 0x87ff, 0x0140, 0x2001, 0x0201, 0x2004, 0xa005, 0x1904, -+ 0x33ee, 0x8739, 0x0038, 0x2001, 0xb723, 0x2004, 0xa086, 0x0000, -+ 0x1904, 0x33ee, 0x2001, 0x0033, 0x2003, 0x00f6, 0x8631, 0x1208, -+ 0x8529, 0x2500, 0xa605, 0x0904, 0x34b4, 0x7824, 0xd0bc, 0x0128, -+ 0x2900, 0xaa05, 0xab05, 0x1904, 0x34b4, 0x6033, 0x000d, 0x2001, -+ 0x0030, 0x2003, 0x0004, 0x7824, 0xd0ac, 0x1148, 0x2001, 0xb723, -+ 0x2003, 0x0003, 0x2001, 0x0030, 0x2003, 0x0009, 0x0040, 0x6027, -+ 0x0001, 0x2001, 0x0075, 0x2004, 0xa005, 0x0108, 0x6026, 0x2c00, -+ 0x601a, 0x20e1, 0x9040, 0x2d00, 0x681a, 0x6833, 0x000d, 0x7824, -+ 0xd0a4, 0x1180, 0x6827, 0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, -+ 0x0020, 0x6003, 0x0008, 0x2001, 0x0203, 0x2004, 0x1f04, 0x3489, -+ 0x00ce, 0x0040, 0x6827, 0x0001, 0x2001, 0x0074, 0x2004, 0xa005, -+ 0x0108, 0x6826, 0x00f6, 0x00c6, 0x2079, 0x0100, 0x2061, 0x0020, -+ 0x7827, 0x0002, 0x2001, 0x0072, 0x2004, 0xa084, 0xfff8, 0x601a, -+ 0x0006, 0x2001, 0x0073, 0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, -+ 0x00ce, 0x00fe, 0x0804, 0x33cc, 0x2061, 0x0100, 0x6027, 0x0002, -+ 0x001e, 0x61e2, 0x001e, 0x6106, 0x7824, 0xa084, 0x0003, 0xa086, -+ 0x0002, 0x0188, 0x20e1, 0x9028, 0x6050, 0xa084, 0xf7ef, 0x6052, -+ 0x602f, 0x0000, 0x602c, 0xc0ac, 0x602e, 0x604b, 0xf7f7, 0x6043, -+ 0x0090, 0x6043, 0x0010, 0x2908, 0x2a10, 0x2b18, 0x2b00, 0xaa05, -+ 0xa905, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, -+ 0x008e, 0x1118, 0x012e, 0x0804, 0x2f6e, 0x012e, 0x2021, 0x400c, -+ 0x0804, 0x2f70, 0xa085, 0x0001, 0x1d04, 0x34f3, 0x2091, 0x6000, -+ 0x8420, 0xa486, 0x0064, 0x0005, 0x2001, 0x0105, 0x2003, 0x0010, -+ 0x2001, 0x0030, 0x2003, 0x0004, 0x2001, 0x0020, 0x2003, 0x0004, -+ 0x2001, 0xb723, 0x2003, 0x0000, 0x2001, 0xb74a, 0x2003, 0x0000, -+ 0x20e1, 0xf000, 0xa026, 0x0005, 0x00f6, 0x2079, 0x0100, 0x2001, -+ 0xb415, 0x200c, 0x7932, 0x7936, 0x080c, 0x280d, 0x7850, 0xa084, -+ 0x0980, 0xa085, 0x0030, 0x7852, 0x2019, 0x01f4, 0x8319, 0x1df0, -+ 0xa084, 0x0980, 0x7852, 0x782c, 0xc0ad, 0x782e, 0x20a9, 0x0046, -+ 0x1d04, 0x3528, 0x2091, 0x6000, 0x1f04, 0x3528, 0x7850, 0xa085, -+ 0x0400, 0x7852, 0x2001, 0x0009, 0x2004, 0xa084, 0x0003, 0xa086, -+ 0x0001, 0x1118, 0x782c, 0xc0ac, 0x782e, 0x784b, 0xf7f7, 0x7843, -+ 0x0090, 0x7843, 0x0010, 0x20a9, 0x000e, 0xe000, 0x1f04, 0x3545, -+ 0x7850, 0xa085, 0x1400, 0x7852, 0x2019, 0x61a8, 0x7854, 0xe000, -+ 0xe000, 0xd08c, 0x1110, 0x8319, 0x1dc8, 0x7827, 0x0048, 0x7850, -+ 0xa085, 0x0400, 0x7852, 0x7843, 0x0040, 0x2019, 0x01f4, 0xe000, -+ 0xe000, 0x8319, 0x1de0, 0x2001, 0x0140, 0x2003, 0x0100, 0x7827, -+ 0x0020, 0x7843, 0x0000, 0x2003, 0x0000, 0x7827, 0x0048, 0x00fe, -+ 0x0005, 0x7824, 0xd0ac, 0x11c8, 0x00f6, 0x00e6, 0x2071, 0xb723, -+ 0x2079, 0x0030, 0x2001, 0x0201, 0x2004, 0xa005, 0x0160, 0x7000, -+ 0xa086, 0x0000, 0x1140, 0x0051, 0xd0bc, 0x0108, 0x8738, 0x7003, -+ 0x0003, 0x7803, 0x0019, 0x00ee, 0x00fe, 0x0005, 0x780c, 0xa08c, -+ 0x0070, 0x0178, 0x2009, 0x007a, 0x260a, 0x2009, 0x007b, 0x250a, -+ 0xd0b4, 0x0108, 0x8a50, 0xd0ac, 0x0108, 0x8948, 0xd0a4, 0x0108, -+ 0x8b58, 0x0005, 0x00f6, 0x2079, 0x0200, 0x781c, 0xd084, 0x0140, -+ 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, 0x0ca8, -+ 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0100, 0x2001, 0xb6c0, 0x2004, -+ 0x70e2, 0x2009, 0xb415, 0x210c, 0x716e, 0x7063, 0x0100, 0x7166, -+ 0x719e, 0x706b, 0x0000, 0x7073, 0x0809, 0x7077, 0x0008, 0x7078, -+ 0xa080, 0x0100, 0x707a, 0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, -+ 0xa006, 0x708a, 0x708e, 0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, -+ 0x95d5, 0x7027, 0x0080, 0x7014, 0xa084, 0x0184, 0xa085, 0x0032, -+ 0x7016, 0x080c, 0x368f, 0x080c, 0x34ea, 0x1110, 0x8421, 0x0028, -+ 0x7024, 0xd0bc, 0x0db0, 0x7027, 0x0080, 0x00f6, 0x00e6, 0x2071, -+ 0xb723, 0x2079, 0x0030, 0x00d6, 0x2069, 0x0000, 0x6824, 0xd0b4, -+ 0x0120, 0x683c, 0x783e, 0x6838, 0x783a, 0x00de, 0x2011, 0x0011, -+ 0x080c, 0x3667, 0x2011, 0x0001, 0x080c, 0x3667, 0x00ee, 0x00fe, -+ 0x7017, 0x0000, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x2071, 0xb723, -+ 0x2079, 0x0030, 0x7904, 0xd1fc, 0x0904, 0x3664, 0x7803, 0x0002, -+ 0xa026, 0xd19c, 0x1904, 0x3660, 0x7000, 0x0002, 0x3664, 0x3622, -+ 0x3646, 0x3660, 0xd1bc, 0x1150, 0xd1dc, 0x1150, 0x8001, 0x7002, -+ 0x2011, 0x0001, 0x04e1, 0x05c0, 0x04d1, 0x04b0, 0x780f, 0x0000, -+ 0x7820, 0x7924, 0x7803, 0x0004, 0x7822, 0x7926, 0x2001, 0x0201, -+ 0x200c, 0x81ff, 0x0de8, 0x080c, 0x358e, 0x2009, 0x0001, 0x7808, -+ 0xd0ec, 0x0110, 0x2009, 0x0011, 0x7902, 0x00f0, 0x8001, 0x7002, -+ 0xa184, 0x0880, 0x1138, 0x7804, 0xd0fc, 0x1940, 0x2011, 0x0001, -+ 0x00b1, 0x0090, 0x6030, 0xa092, 0x0004, 0xa086, 0x0009, 0x1120, -+ 0x6000, 0x601a, 0x2011, 0x0025, 0x6232, 0xd1dc, 0x1988, 0x0870, -+ 0x7803, 0x0004, 0x7003, 0x0000, 0x00ee, 0x00fe, 0x0005, 0x6024, -+ 0xa005, 0x0520, 0x8001, 0x6026, 0x6018, 0x6130, 0xa140, 0x2804, -+ 0x7832, 0x8840, 0x2804, 0x7836, 0x8840, 0x2804, 0x7822, 0x8840, -+ 0x2804, 0x7826, 0x8840, 0x7a02, 0x7000, 0x8000, 0x7002, 0x6018, -+ 0xa802, 0xa08a, 0x0029, 0x1138, 0x6018, 0xa080, 0x0001, 0x2004, -+ 0x601a, 0x2001, 0x000d, 0x6032, 0xa085, 0x0001, 0x0005, 0x00f6, -+ 0x00e6, 0x00c6, 0x2071, 0xb74a, 0x2079, 0x0020, 0x7904, 0xd1fc, -+ 0x01f0, 0x7803, 0x0002, 0x2d60, 0xa026, 0x7000, 0x0002, 0x36b7, -+ 0x36a2, 0x36ae, 0x8001, 0x7002, 0xd19c, 0x1188, 0x2011, 0x0001, -+ 0x080c, 0x3667, 0x0160, 0x080c, 0x3667, 0x0048, 0x8001, 0x7002, -+ 0x7804, 0xd0fc, 0x1d30, 0x2011, 0x0001, 0x080c, 0x3667, 0x00ce, -+ 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x2061, 0x0200, -+ 0x2001, 0xb6c0, 0x2004, 0x601a, 0x2061, 0x0100, 0x2001, 0xb6bf, -+ 0x2004, 0x60ce, 0x6004, 0xc0ac, 0xa085, 0x0200, 0x6006, 0x2001, -+ 0x0074, 0x2004, 0xa005, 0x01f8, 0x2038, 0x2001, 0x0076, 0x2024, -+ 0x2001, 0x0077, 0x201c, 0x080c, 0x3e33, 0x6833, 0x000d, 0x6f26, -+ 0x2d00, 0x681a, 0xa78a, 0x0007, 0x0220, 0x2138, 0x2009, 0x0007, -+ 0x0010, 0x2708, 0xa03e, 0x6818, 0xa080, 0x000d, 0x04b1, 0x1d90, -+ 0x2d00, 0x681a, 0x0088, 0x080c, 0x3e33, 0x6833, 0x000d, 0x2070, -+ 0x6827, 0x0001, 0x2d00, 0x681a, 0x2001, 0x0076, 0x2004, 0x2072, -+ 0x2001, 0x0077, 0x2004, 0x7006, 0x2061, 0x0020, 0x2079, 0x0100, -+ 0x2001, 0xb6bf, 0x2004, 0x6012, 0x20e1, 0x9040, 0x2001, 0x0072, -+ 0x2004, 0xa084, 0xfff8, 0x700a, 0x601a, 0x0006, 0x2001, 0x0073, -+ 0x2004, 0x700e, 0x601e, 0x78c6, 0x000e, 0x78ca, 0xa006, 0x603a, -+ 0x603e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0010, -+ 0x20a0, 0x2099, 0x0014, 0x7003, 0x0026, 0x7432, 0x7336, 0xa006, -+ 0x703a, 0x703e, 0x810b, 0x810b, 0x21a8, 0x810b, 0x7122, 0x7003, -+ 0x0041, 0x7004, 0xd0fc, 0x0de8, 0x7003, 0x0002, 0x7003, 0x0040, -+ 0x53a5, 0x7430, 0x7334, 0x87ff, 0x0180, 0x00c6, 0x00d6, 0x2d60, -+ 0x00c6, 0x080c, 0x3e33, 0x00ce, 0x6018, 0x2070, 0x2d00, 0x7006, -+ 0x601a, 0x00de, 0x00ce, 0xa085, 0x0001, 0x00ee, 0x0005, 0x00e6, -+ 0x2001, 0x0075, 0x2004, 0xa005, 0x0508, 0x2038, 0x2001, 0x0078, -+ 0x2024, 0x2001, 0x0079, 0x201c, 0x080c, 0x3e33, 0x2d60, 0x6833, -+ 0x000d, 0x6f26, 0x2d00, 0x681a, 0xa78a, 0x0007, 0x0220, 0x2138, -+ 0x2009, 0x0007, 0x0010, 0x2708, 0xa03e, 0x6818, 0xa080, 0x000d, -+ 0x080c, 0x3725, 0x1d88, 0x2d00, 0x681a, 0x00e0, 0x080c, 0x3e33, -+ 0x2d60, 0x6033, 0x000d, 0x2070, 0x6027, 0x0001, 0x2c00, 0x601a, -+ 0x2001, 0x0078, 0x2004, 0x2072, 0x2001, 0x0079, 0x2004, 0x7006, -+ 0x2001, 0x0072, 0x2004, 0xa084, 0xfff8, 0x700a, 0x2001, 0x0073, -+ 0x2004, 0x700e, 0x2001, 0x0030, 0x2003, 0x0004, 0x7824, 0xd0ac, -+ 0x1178, 0x2001, 0x0101, 0x200c, 0xc1ed, 0x2102, 0x6027, 0x0000, -+ 0x2001, 0xb723, 0x2003, 0x0003, 0x2001, 0x0030, 0x2003, 0x0009, -+ 0x00ee, 0x0005, 0x0804, 0x2f6e, 0x0126, 0x2091, 0x8000, 0x20a9, -+ 0x0012, 0x2001, 0xb440, 0x20a0, 0xa006, 0x40a4, 0x012e, 0x0804, -+ 0x2f6e, 0x7d38, 0x7c3c, 0x0804, 0x3015, 0x080c, 0x3e33, 0x0904, -+ 0x2f93, 0x080c, 0x5a90, 0x0110, 0x080c, 0x4baa, 0x2009, 0x001c, -+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3e74, 0x701b, 0x37d9, -+ 0x0005, 0xade8, 0x000d, 0x6800, 0xa005, 0x0904, 0x2f96, 0x6804, -+ 0xd0ac, 0x0118, 0xd0a4, 0x0904, 0x2f96, 0xd094, 0x00c6, 0x2061, -+ 0x0100, 0x6104, 0x0138, 0x6200, 0xa292, 0x0005, 0x0218, 0xa18c, -+ 0xffdf, 0x0010, 0xa18d, 0x0020, 0x6106, 0x00ce, 0xd08c, 0x00c6, -+ 0x2061, 0x0100, 0x6104, 0x0118, 0xa18d, 0x0010, 0x0010, 0xa18c, -+ 0xffef, 0x6106, 0x00ce, 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, -+ 0x0268, 0xd084, 0x0158, 0x6a28, 0xa28a, 0x007f, 0x1a04, 0x2f96, -+ 0xa288, 0x2d88, 0x210d, 0xa18c, 0x00ff, 0x615a, 0xd0dc, 0x0130, -+ 0x6828, 0xa08a, 0x007f, 0x1a04, 0x2f96, 0x6052, 0x6808, 0xa08a, -+ 0x0100, 0x0a04, 0x2f96, 0xa08a, 0x0841, 0x1a04, 0x2f96, 0xa084, -+ 0x0007, 0x1904, 0x2f96, 0x680c, 0xa005, 0x0904, 0x2f96, 0x6810, -+ 0xa005, 0x0904, 0x2f96, 0x6848, 0x6940, 0xa10a, 0x1a04, 0x2f96, -+ 0x8001, 0x0904, 0x2f96, 0x684c, 0x6944, 0xa10a, 0x1a04, 0x2f96, -+ 0x8001, 0x0904, 0x2f96, 0x6804, 0xd0fc, 0x0560, 0x080c, 0x3e33, -+ 0x0904, 0x2f93, 0x2009, 0x0014, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, -+ 0xa290, 0x0038, 0xa399, 0x0000, 0x080c, 0x3e74, 0x701b, 0x3859, -+ 0x0005, 0xade8, 0x000d, 0x20a9, 0x0014, 0x2d98, 0x2069, 0xb46e, -+ 0x2da0, 0x53a3, 0x7010, 0xa0e8, 0x000d, 0x2001, 0xb472, 0x200c, -+ 0xd1e4, 0x0140, 0x00c6, 0x2061, 0x0100, 0x6004, 0xa085, 0x0b00, -+ 0x6006, 0x00ce, 0x2009, 0xb6b1, 0x200b, 0x0000, 0x2001, 0xb474, -+ 0x2004, 0xd0ac, 0x0158, 0x7824, 0x200a, 0x2009, 0x017f, 0x200a, -+ 0x3200, 0xa084, 0x003f, 0xa085, 0x3020, 0x2090, 0x20a9, 0x001c, -+ 0x2d98, 0x2069, 0xb452, 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, -+ 0x6142, 0x8007, 0xa084, 0x00ff, 0x6046, 0x080c, 0x5d66, 0x080c, -+ 0x532d, 0x080c, 0x5396, 0x6000, 0xa086, 0x0000, 0x1904, 0x3954, -+ 0x6808, 0x602a, 0x080c, 0x2439, 0x0006, 0x2001, 0x0100, 0x2004, -+ 0xa082, 0x0005, 0x000e, 0x0268, 0x2009, 0x0170, 0x200b, 0x0080, -+ 0xe000, 0xe000, 0x200b, 0x0000, 0x0036, 0x6b08, 0x080c, 0x2868, -+ 0x003e, 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, -+ 0x831f, 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148, -+ 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, -+ 0x0010, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x8007, -+ 0x810f, 0x8217, 0x831f, 0x20a9, 0x0004, 0x20a1, 0xb6c6, 0x40a1, -+ 0x080c, 0x6a2d, 0x6904, 0xd1fc, 0x0520, 0x00c6, 0x2009, 0x0000, -+ 0x20a9, 0x0001, 0x6b70, 0xd384, 0x01c8, 0x0020, 0x839d, 0x12b0, -+ 0x3508, 0x8109, 0x080c, 0x631d, 0x6878, 0x6016, 0x6874, 0x2008, -+ 0xa084, 0xff00, 0x8007, 0x600a, 0xa184, 0x00ff, 0x6006, 0x8108, -+ 0x1118, 0x6003, 0x0003, 0x0010, 0x6003, 0x0001, 0x1f04, 0x38ee, -+ 0x00ce, 0x2069, 0xb452, 0x2001, 0xb69e, 0x6a80, 0xa294, 0x0030, -+ 0xa28e, 0x0000, 0x0170, 0xa28e, 0x0010, 0x0118, 0xa28e, 0x0020, -+ 0x0140, 0x2003, 0xaaaa, 0x080c, 0x28b1, 0x2001, 0xb68f, 0x2102, -+ 0x0008, 0x2102, 0x00c6, 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, -+ 0x0000, 0x00ce, 0x080c, 0x5a90, 0x0128, 0x080c, 0x408d, 0x0110, -+ 0x080c, 0x282d, 0x60c8, 0xa005, 0x01d0, 0x6003, 0x0001, 0x2009, -+ 0x393a, 0x00e0, 0x080c, 0x5a90, 0x1178, 0x2011, 0x5963, 0x080c, -+ 0x6961, 0x2011, 0x5956, 0x080c, 0x6a21, 0x2001, 0xb69f, 0x2003, -+ 0x0000, 0x080c, 0x59c8, 0x0040, 0x080c, 0x4ad9, 0x0028, 0x6003, -+ 0x0004, 0x2009, 0x3954, 0x0010, 0x0804, 0x2f6e, 0x2001, 0x0100, -+ 0x2004, 0xa082, 0x0005, 0x0258, 0x2001, 0x0170, 0x2004, 0xa084, -+ 0x00ff, 0xa086, 0x004c, 0x1118, 0x2091, 0x309d, 0x0817, 0x2091, -+ 0x301d, 0x0817, 0x6000, 0xa086, 0x0000, 0x0904, 0x2f93, 0x2069, -+ 0xb452, 0x7830, 0x6842, 0x7834, 0x6846, 0x6804, 0xd0fc, 0x0118, -+ 0x2009, 0x0030, 0x0010, 0x2009, 0x001c, 0x2d00, 0x7a2c, 0x7b28, -+ 0x7c3c, 0x7d38, 0x0804, 0x3e77, 0xa006, 0x080c, 0x282d, 0x81ff, -+ 0x1904, 0x2f93, 0x080c, 0x5a90, 0x1178, 0x2001, 0xb69f, 0x2003, -+ 0x0001, 0x2001, 0xb400, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, -+ 0x5ad4, 0x080c, 0x59c8, 0x0020, 0x080c, 0x4baa, 0x080c, 0x4ad9, -+ 0x0804, 0x2f6e, 0x81ff, 0x1904, 0x2f93, 0x080c, 0x5a90, 0x1110, -+ 0x0804, 0x2f93, 0x6188, 0x81ff, 0x0198, 0x703f, 0x0000, 0x2001, -+ 0xbbc0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x3e77, 0x701b, 0x2f6c, 0x012e, 0x0005, -+ 0x703f, 0x0001, 0x00d6, 0x2069, 0xbbc0, 0x20a9, 0x0040, 0x20a1, -+ 0xbbc0, 0x2019, 0xffff, 0x43a4, 0x6550, 0xa588, 0x2d88, 0x210d, -+ 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, -+ 0x01a8, 0x080c, 0x4f6a, 0x1190, 0x6014, 0x821c, 0x0238, 0xa398, -+ 0xbbc0, 0xa085, 0xff00, 0x8007, 0x201a, 0x0038, 0xa398, 0xbbc0, -+ 0x2324, 0xa4a4, 0xff00, 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, -+ 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, -+ 0x00de, 0x20a9, 0x0040, 0x20a1, 0xbbc0, 0x2099, 0xbbc0, 0x080c, -+ 0x4b49, 0x0804, 0x39af, 0x080c, 0x3e58, 0x0904, 0x2f96, 0x00c6, -+ 0x080c, 0x3e33, 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, 0x2f93, -+ 0x2001, 0xb453, 0x2004, 0xd0b4, 0x0550, 0x7824, 0xa084, 0xff00, -+ 0xa08e, 0x7e00, 0x0520, 0xa08e, 0x7f00, 0x0508, 0xa08e, 0x8000, -+ 0x01f0, 0x6000, 0xd08c, 0x11d8, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x11a8, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, -+ 0x9d6b, 0x1120, 0x2009, 0x0003, 0x0804, 0x2f93, 0x7007, 0x0003, -+ 0x701b, 0x3a3b, 0x0005, 0x080c, 0x3e58, 0x0904, 0x2f96, 0x20a9, -+ 0x002b, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004, -+ 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x080c, 0x4b49, -+ 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, -+ 0x080c, 0x4b49, 0x2d00, 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c, -+ 0x7d38, 0x0804, 0x3e77, 0x81ff, 0x1904, 0x2f93, 0x080c, 0x3e48, -+ 0x0904, 0x2f96, 0x080c, 0x5147, 0x0804, 0x2f6e, 0x81ff, 0x1904, -+ 0x2f93, 0x7828, 0xa08a, 0x1000, 0x1a04, 0x2f96, 0x080c, 0x3e58, -+ 0x0904, 0x2f96, 0x080c, 0x51aa, 0x0904, 0x2f93, 0x2019, 0x0004, -+ 0xa00e, 0x080c, 0x5159, 0x7924, 0x810f, 0x7a28, 0x0011, 0x0804, -+ 0x2f6e, 0xa186, 0x00ff, 0x0110, 0x0071, 0x0060, 0x2029, 0x007e, -+ 0x2061, 0xb400, 0x6450, 0x2400, 0xa506, 0x0110, 0x2508, 0x0019, -+ 0x8529, 0x1ec8, 0x0005, 0x080c, 0x4f6a, 0x1138, 0x2200, 0x8003, -+ 0x800b, 0x810b, 0xa108, 0x080c, 0x696d, 0x0005, 0x81ff, 0x1904, -+ 0x2f93, 0x080c, 0x3e48, 0x0904, 0x2f96, 0x080c, 0x5030, 0x0904, -+ 0x2f93, 0x080c, 0x5150, 0x0804, 0x2f6e, 0x81ff, 0x1904, 0x2f93, -+ 0x080c, 0x3e48, 0x0904, 0x2f96, 0x080c, 0x5030, 0x0904, 0x2f93, -+ 0x080c, 0x513e, 0x0804, 0x2f6e, 0x6100, 0x0804, 0x2f6e, 0x080c, -+ 0x3e58, 0x0904, 0x2f96, 0x2001, 0xb400, 0x2004, 0xa086, 0x0003, -+ 0x1904, 0x2f93, 0x00d6, 0xace8, 0x000a, 0x7924, 0xd184, 0x0110, -+ 0xace8, 0x0006, 0x680c, 0x8007, 0x783e, 0x6808, 0x8007, 0x783a, -+ 0x6b04, 0x831f, 0x6a00, 0x8217, 0x00de, 0x6100, 0xa18c, 0x0200, -+ 0x0804, 0x2f6e, 0x7824, 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x1a04, -+ 0x2f93, 0x6250, 0xa294, 0x00ff, 0xa084, 0xff00, 0x8007, 0xa206, -+ 0x1150, 0x2001, 0xb440, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, -+ 0x7d38, 0x0804, 0x3e77, 0x81ff, 0x1904, 0x2f93, 0x080c, 0x3e58, -+ 0x0904, 0x2f96, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1904, -+ 0x2f93, 0x00c6, 0x080c, 0x3e33, 0x00ce, 0x0904, 0x2f93, 0x6837, -+ 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0x9d17, 0x0904, 0x2f93, -+ 0x7007, 0x0003, 0x701b, 0x3b25, 0x0005, 0x6830, 0xa086, 0x0100, -+ 0x0904, 0x2f93, 0xad80, 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28, -+ 0x7c3c, 0x7d38, 0x0804, 0x3e77, 0xa006, 0x080c, 0x282d, 0x7824, -+ 0xa084, 0x00ff, 0xa086, 0x00ff, 0x0118, 0x81ff, 0x1904, 0x2f93, -+ 0x080c, 0x5a90, 0x0110, 0x080c, 0x4baa, 0x7828, 0xa08a, 0x1000, -+ 0x1a04, 0x2f96, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, -+ 0x0138, 0xa182, 0x007f, 0x1a04, 0x2f96, 0x2100, 0x080c, 0x27f7, -+ 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2061, 0xb6f3, 0x601b, -+ 0x0000, 0x601f, 0x0000, 0x080c, 0x5a90, 0x1178, 0x2001, 0xb69f, -+ 0x2003, 0x0001, 0x2001, 0xb400, 0x2003, 0x0001, 0xa085, 0x0001, -+ 0x080c, 0x5ad4, 0x080c, 0x59c8, 0x0420, 0x2011, 0x0003, 0x080c, -+ 0x801f, 0x2011, 0x0002, 0x080c, 0x8029, 0x080c, 0x7f03, 0x0036, -+ 0x2019, 0x0000, 0x080c, 0x7f8e, 0x003e, 0x2061, 0x0100, 0x2001, -+ 0xb415, 0x2004, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, -+ 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, 0x4b0e, 0x080c, -+ 0x69e7, 0x7924, 0xa18c, 0xff00, 0x810f, 0x080c, 0x5a90, 0x1110, -+ 0x2009, 0x00ff, 0x7a28, 0x080c, 0x3a89, 0x012e, 0x00ce, 0x002e, -+ 0x0804, 0x2f6e, 0x7924, 0xa18c, 0xff00, 0x810f, 0x00c6, 0x080c, -+ 0x4f0e, 0x2c08, 0x00ce, 0x1904, 0x2f96, 0x0804, 0x2f6e, 0x81ff, -+ 0x0120, 0x2009, 0x0001, 0x0804, 0x2f93, 0x60d4, 0xd0ac, 0x1130, -+ 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, 0x2f93, 0x080c, 0x3e33, -+ 0x1120, 0x2009, 0x0002, 0x0804, 0x2f93, 0x7924, 0x7a2c, 0x7b28, -+ 0x7c3c, 0x7d38, 0x080c, 0x3e74, 0x701b, 0x3bd7, 0x0005, 0x2009, -+ 0x0080, 0x080c, 0x4f6a, 0x1130, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x0120, 0x2021, 0x400a, 0x0804, 0x2f70, 0x00d6, 0xade8, -+ 0x000d, 0x6900, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, -+ 0xa0be, 0x0100, 0x0904, 0x3c4e, 0xa0be, 0x0112, 0x0904, 0x3c4e, -+ 0xa0be, 0x0113, 0x0904, 0x3c4e, 0xa0be, 0x0114, 0x0904, 0x3c4e, -+ 0xa0be, 0x0117, 0x0904, 0x3c4e, 0xa0be, 0x011a, 0x0904, 0x3c4e, -+ 0xa0be, 0x011c, 0x0904, 0x3c4e, 0xa0be, 0x0121, 0x05b0, 0xa0be, -+ 0x0131, 0x0598, 0xa0be, 0x0171, 0x05c8, 0xa0be, 0x0173, 0x05b0, -+ 0xa0be, 0x01a1, 0x1120, 0x6830, 0x8007, 0x6832, 0x04a8, 0xa0be, -+ 0x0212, 0x0540, 0xa0be, 0x0213, 0x0528, 0xa0be, 0x0214, 0x01b0, -+ 0xa0be, 0x0217, 0x0168, 0xa0be, 0x021a, 0x1120, 0x6838, 0x8007, -+ 0x683a, 0x00e0, 0xa0be, 0x0300, 0x01c8, 0x00de, 0x0804, 0x2f96, -+ 0xad80, 0x0010, 0x20a9, 0x0007, 0x080c, 0x3c94, 0xad80, 0x000e, -+ 0x20a9, 0x0001, 0x080c, 0x3c94, 0x0048, 0xad80, 0x000c, 0x080c, -+ 0x3ca2, 0x0050, 0xad80, 0x000e, 0x080c, 0x3ca2, 0xad80, 0x000c, -+ 0x20a9, 0x0001, 0x080c, 0x3c94, 0x00c6, 0x080c, 0x3e33, 0x0568, -+ 0x6838, 0xc0fd, 0x683a, 0x6837, 0x0119, 0x6853, 0x0000, 0x684f, -+ 0x0020, 0x685b, 0x0001, 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, -+ 0x6b8a, 0x6c8e, 0x6d92, 0x6996, 0x689b, 0x0000, 0x00ce, 0x00de, -+ 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x6823, 0x0000, 0x6804, -+ 0x2068, 0x080c, 0x9d33, 0x1120, 0x2009, 0x0003, 0x0804, 0x2f93, -+ 0x7007, 0x0003, 0x701b, 0x3c8b, 0x0005, 0x00ce, 0x00de, 0x2009, -+ 0x0002, 0x0804, 0x2f93, 0x6820, 0xa086, 0x8001, 0x1904, 0x2f6e, -+ 0x2009, 0x0004, 0x0804, 0x2f93, 0x0016, 0x2008, 0x2044, 0x8000, -+ 0x204c, 0x8000, 0x290a, 0x8108, 0x280a, 0x8108, 0x1f04, 0x3c96, -+ 0x001e, 0x0005, 0x0016, 0x00a6, 0x00b6, 0x2008, 0x2044, 0x8000, -+ 0x204c, 0x8000, 0x2054, 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, -+ 0x8108, 0x290a, 0x8108, 0x280a, 0x00be, 0x00ae, 0x001e, 0x0005, -+ 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x2f93, 0x60d4, 0xd0ac, -+ 0x1130, 0xd09c, 0x1120, 0x2009, 0x0005, 0x0804, 0x2f93, 0x7924, -+ 0x2140, 0xa18c, 0xff00, 0x810f, 0x60d4, 0xd0ac, 0x1120, 0xa182, -+ 0x0080, 0x0a04, 0x2f96, 0xa182, 0x00ff, 0x1a04, 0x2f96, 0x7a2c, -+ 0x7b28, 0x6070, 0xa306, 0x1140, 0x6074, 0xa24e, 0x0904, 0x2f96, -+ 0xa9cc, 0xff00, 0x0904, 0x2f96, 0x00c6, 0x080c, 0x3d81, 0x2c68, -+ 0x00ce, 0x0538, 0xa0c6, 0x4000, 0x1180, 0x00c6, 0x0006, 0x2d60, -+ 0x2009, 0x0000, 0x080c, 0x520b, 0x1108, 0xc185, 0x6000, 0xd0bc, -+ 0x0108, 0xc18d, 0x000e, 0x00ce, 0x0088, 0xa0c6, 0x4007, 0x1110, -+ 0x2408, 0x0060, 0xa0c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, -+ 0xa0c6, 0x4009, 0x1108, 0x0010, 0x2001, 0x4006, 0x2020, 0x0804, -+ 0x2f70, 0x2d00, 0x7022, 0x0016, 0x00b6, 0x00c6, 0x00e6, 0x2c70, -+ 0x080c, 0x856a, 0x05d8, 0x2d00, 0x601a, 0x080c, 0x9fb8, 0x2e58, -+ 0x00ee, 0x00e6, 0x00c6, 0x080c, 0x3e33, 0x00ce, 0x2b70, 0x1150, -+ 0x080c, 0x85c0, 0x00ee, 0x00ce, 0x00be, 0x001e, 0x2009, 0x0002, -+ 0x0804, 0x2f93, 0x6837, 0x0000, 0x683b, 0x0000, 0x2d00, 0x6012, -+ 0x6833, 0x0000, 0x6838, 0xc0fd, 0xd88c, 0x0108, 0xc0f5, 0x683a, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x2c60, 0x012e, 0x601f, 0x0001, -+ 0x2001, 0x0000, 0x080c, 0x4eac, 0x2001, 0x0002, 0x080c, 0x4ebe, -+ 0x2009, 0x0002, 0x080c, 0x85ef, 0xa085, 0x0001, 0x00ee, 0x00ce, -+ 0x00be, 0x001e, 0x1120, 0x2009, 0x0003, 0x0804, 0x2f93, 0x7007, -+ 0x0003, 0x701b, 0x3d64, 0x0005, 0x6830, 0xa086, 0x0100, 0x7020, -+ 0x2060, 0x1138, 0x2009, 0x0004, 0x6204, 0xa294, 0x00ff, 0x0804, -+ 0x2f93, 0x2009, 0x0000, 0x6838, 0xd0f4, 0x1904, 0x2f6e, 0x080c, -+ 0x520b, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x0804, -+ 0x2f6e, 0x00e6, 0x00d6, 0x2029, 0x0000, 0x2001, 0xb435, 0x2004, -+ 0xd0ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, 0x2071, 0xb535, -+ 0x0030, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071, 0xb5b5, 0x2e04, -+ 0xa005, 0x1130, 0x2100, 0xa406, 0x1570, 0x2428, 0xc5fd, 0x0458, -+ 0x2068, 0x6f10, 0x2700, 0xa306, 0x11b0, 0x6e14, 0x2600, 0xa206, -+ 0x1190, 0x2400, 0xa106, 0x1160, 0x2d60, 0xd884, 0x0568, 0x6004, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x1538, 0x2001, 0x4000, 0x0428, -+ 0x2001, 0x4007, 0x0410, 0x2400, 0xa106, 0x1168, 0x6e14, 0x87ff, -+ 0x1138, 0x86ff, 0x09d0, 0x2001, 0xb435, 0x2004, 0xd0ac, 0x19a8, -+ 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70, 0x1f04, 0x3d97, 0x85ff, -+ 0x1130, 0x2001, 0x4009, 0x0048, 0x2001, 0x0001, 0x0030, 0x080c, -+ 0x4f0e, 0x1dd0, 0x6312, 0x6216, 0xa006, 0xa005, 0x00de, 0x00ee, -+ 0x0005, 0x81ff, 0x1904, 0x2f93, 0x080c, 0x3e33, 0x0904, 0x2f93, -+ 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x7824, 0xa005, 0x0904, -+ 0x2f96, 0xa096, 0x00ff, 0x0120, 0xa092, 0x0004, 0x1a04, 0x2f96, -+ 0x2010, 0x2d18, 0x080c, 0x2c13, 0x0904, 0x2f93, 0x7007, 0x0003, -+ 0x701b, 0x3e03, 0x0005, 0x6830, 0xa086, 0x0100, 0x0904, 0x2f93, -+ 0x0804, 0x2f6e, 0x7924, 0xa18c, 0xff00, 0x810f, 0x60d4, 0xd0ac, -+ 0x1120, 0xa182, 0x0080, 0x0a04, 0x2f96, 0xa182, 0x00ff, 0x1a04, -+ 0x2f96, 0x0126, 0x2091, 0x8000, 0x080c, 0x9c1b, 0x1188, 0xa190, -+ 0xb535, 0x2204, 0xa065, 0x0160, 0x080c, 0x4bc5, 0x2001, 0xb435, -+ 0x2004, 0xd0ac, 0x0110, 0x6017, 0x0000, 0x012e, 0x0804, 0x2f6e, -+ 0x012e, 0x0804, 0x2f93, 0x080c, 0x15f4, 0x0188, 0xa006, 0x6802, -+ 0x7010, 0xa005, 0x1120, 0x2d00, 0x7012, 0x7016, 0x0030, 0x7014, -+ 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, 0x000d, 0x0005, -+ 0x7924, 0x810f, 0xa18c, 0x00ff, 0x080c, 0x4f6a, 0x1130, 0x7e28, -+ 0xa684, 0x3fff, 0xa082, 0x4000, 0x0208, 0xa066, 0x8cff, 0x0005, -+ 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x080c, 0x4f6a, 0x1128, 0xa6b4, -+ 0x00ff, 0xa682, 0x4000, 0x0208, 0xa066, 0x8cff, 0x0005, 0x0016, -+ 0x7110, 0x81ff, 0x0128, 0x2168, 0x6904, 0x080c, 0x160b, 0x0cc8, -+ 0x7112, 0x7116, 0x001e, 0x0005, 0x2031, 0x0001, 0x0010, 0x2031, -+ 0x0000, 0x2061, 0xb4d2, 0x6606, 0x6112, 0x600e, 0x6226, 0x632a, -+ 0x642e, 0x6532, 0x2c10, 0x080c, 0x163f, 0x7007, 0x0002, 0x701b, -+ 0x2f6e, 0x0005, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, 0x0000, -+ 0x2001, 0xb490, 0x2004, 0xa005, 0x1168, 0x0e04, 0x3ea2, 0x7818, -+ 0xd084, 0x1140, 0x7a22, 0x7b26, 0x7c2a, 0x781b, 0x0001, 0x2091, -+ 0x4080, 0x0408, 0x0016, 0x00c6, 0x00e6, 0x2071, 0xb482, 0x7138, -+ 0xa182, 0x0010, 0x0218, 0x7030, 0x2060, 0x0078, 0x7030, 0xa0e0, -+ 0x0004, 0xac82, 0xb4d2, 0x0210, 0x2061, 0xb492, 0x2c00, 0x7032, -+ 0x81ff, 0x1108, 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x640a, -+ 0x00ee, 0x00ce, 0x001e, 0x012e, 0x00fe, 0x0005, 0x00e6, 0x2071, -+ 0xb482, 0x7038, 0xa005, 0x0570, 0x0126, 0x2091, 0x8000, 0x0e04, -+ 0x3ef9, 0x00f6, 0x2079, 0x0000, 0x7818, 0xd084, 0x1508, 0x00c6, -+ 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826, 0x6008, 0x782a, -+ 0x781b, 0x0001, 0x2091, 0x4080, 0x7038, 0x8001, 0x703a, 0xa005, -+ 0x1130, 0x7033, 0xb492, 0x7037, 0xb492, 0x00ce, 0x0048, 0xac80, -+ 0x0004, 0xa0fa, 0xb4d2, 0x0210, 0x2001, 0xb492, 0x7036, 0x00ce, -+ 0x00fe, 0x012e, 0x00ee, 0x0005, 0x0026, 0x2001, 0xb453, 0x2004, -+ 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, 0x3e8a, 0x002e, 0x0005, -+ 0x81ff, 0x1904, 0x2f93, 0x0126, 0x2091, 0x8000, 0x6030, 0xc08d, -+ 0xc085, 0xc0ac, 0x6032, 0x080c, 0x5a90, 0x1178, 0x2001, 0xb69f, -+ 0x2003, 0x0001, 0x2001, 0xb400, 0x2003, 0x0001, 0xa085, 0x0001, -+ 0x080c, 0x5ad4, 0x080c, 0x59c8, 0x0010, 0x080c, 0x4ad9, 0x012e, -+ 0x0804, 0x2f6e, 0x7824, 0x2008, 0xa18c, 0xfffd, 0x1128, 0x61e0, -+ 0xa10d, 0x61e2, 0x0804, 0x2f6e, 0x0804, 0x2f96, 0x81ff, 0x1904, -+ 0x2f93, 0x6000, 0xa086, 0x0003, 0x1904, 0x2f93, 0x2001, 0xb453, -+ 0x2004, 0xd0ac, 0x1904, 0x2f93, 0x080c, 0x3e58, 0x0904, 0x2f96, -+ 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x1120, 0x7828, 0xa005, -+ 0x0904, 0x2f6e, 0x00c6, 0x080c, 0x3e33, 0x00ce, 0x0904, 0x2f93, -+ 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, -+ 0x9dfc, 0x0904, 0x2f93, 0x7007, 0x0003, 0x701b, 0x3f68, 0x0005, -+ 0x6830, 0xa086, 0x0100, 0x0904, 0x2f93, 0x0804, 0x2f6e, 0x2001, -+ 0xb400, 0x2004, 0xa086, 0x0003, 0x1904, 0x2f93, 0x7f24, 0x7a2c, -+ 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3e33, 0x0904, 0x2f93, 0x2009, -+ 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000, 0xad80, -+ 0x0005, 0x7026, 0x20a0, 0x080c, 0x4f6a, 0x1904, 0x3fe2, 0x6004, -+ 0xa0c4, 0x00ff, 0xa8c6, 0x0006, 0x0130, 0xa0c4, 0xff00, 0xa8c6, -+ 0x0600, 0x1904, 0x3fe2, 0x2001, 0xb453, 0x2004, 0xd0ac, 0x1128, -+ 0x080c, 0x520b, 0x1110, 0xd79c, 0x05e8, 0xd794, 0x1110, 0xd784, -+ 0x0158, 0xac80, 0x0006, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, -+ 0x080c, 0x3ca2, 0xd794, 0x0148, 0xac80, 0x000a, 0x2098, 0x3400, -+ 0x20a9, 0x0004, 0x53a3, 0x080c, 0x3ca2, 0x21a2, 0xd794, 0x01d8, -+ 0xac80, 0x0000, 0x2098, 0x94a0, 0x20a9, 0x0002, 0x53a3, 0xac80, -+ 0x0003, 0x20a6, 0x94a0, 0xac80, 0x0004, 0x2098, 0x3400, 0x20a9, -+ 0x0002, 0x53a3, 0x080c, 0x3c94, 0xac80, 0x0026, 0x2098, 0x20a9, -+ 0x0002, 0x53a3, 0x0008, 0x94a0, 0xd794, 0x0110, 0xa6b0, 0x000b, -+ 0xa6b0, 0x0005, 0x8108, 0x2001, 0xb435, 0x2004, 0xd0ac, 0x0118, -+ 0xa186, 0x0100, 0x0040, 0xd78c, 0x0120, 0xa186, 0x0100, 0x0170, -+ 0x0018, 0xa186, 0x007e, 0x0150, 0xd794, 0x0118, 0xa686, 0x0020, -+ 0x0010, 0xa686, 0x0028, 0x0150, 0x0804, 0x3f8b, 0x86ff, 0x1120, -+ 0x7120, 0x810b, 0x0804, 0x2f6e, 0x702f, 0x0001, 0x711e, 0x7020, -+ 0xa600, 0x7022, 0x772a, 0x2061, 0xb4d2, 0x6007, 0x0000, 0x6612, -+ 0x7024, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x080c, -+ 0x163f, 0x7007, 0x0002, 0x701b, 0x401e, 0x0005, 0x702c, 0xa005, -+ 0x1170, 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, -+ 0xb4d2, 0x6224, 0x6328, 0x642c, 0x6530, 0x0804, 0x3f8b, 0x7120, -+ 0x810b, 0x0804, 0x2f6e, 0x2029, 0x007e, 0x7924, 0x7a28, 0x7b2c, -+ 0x7c38, 0xa184, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x2f96, -+ 0xa502, 0x0a04, 0x2f96, 0xa184, 0x00ff, 0xa0e2, 0x0020, 0x0a04, -+ 0x2f96, 0xa502, 0x0a04, 0x2f96, 0xa284, 0xff00, 0x8007, 0xa0e2, -+ 0x0020, 0x0a04, 0x2f96, 0xa502, 0x0a04, 0x2f96, 0xa284, 0x00ff, -+ 0xa0e2, 0x0020, 0x0a04, 0x2f96, 0xa502, 0x0a04, 0x2f96, 0xa384, -+ 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, 0x2f96, 0xa502, 0x0a04, -+ 0x2f96, 0xa384, 0x00ff, 0xa0e2, 0x0020, 0x0a04, 0x2f96, 0xa502, -+ 0x0a04, 0x2f96, 0xa484, 0xff00, 0x8007, 0xa0e2, 0x0020, 0x0a04, -+ 0x2f96, 0xa502, 0x0a04, 0x2f96, 0xa484, 0x00ff, 0xa0e2, 0x0020, -+ 0x0a04, 0x2f96, 0xa502, 0x0a04, 0x2f96, 0x2061, 0xb6b9, 0x6102, -+ 0x6206, 0x630a, 0x640e, 0x0804, 0x2f6e, 0x0006, 0x2001, 0xb453, -+ 0x2004, 0xd0cc, 0x000e, 0x0005, 0x0006, 0x2001, 0xb472, 0x2004, -+ 0xd0bc, 0x000e, 0x0005, 0x6168, 0x7a24, 0x6300, 0x82ff, 0x1118, -+ 0x7926, 0x0804, 0x2f6e, 0x83ff, 0x1904, 0x2f96, 0x2001, 0xfff0, -+ 0xa200, 0x1a04, 0x2f96, 0x2019, 0xffff, 0x606c, 0xa302, 0xa200, -+ 0x0a04, 0x2f96, 0x7926, 0x626a, 0x0804, 0x2f6e, 0x2001, 0xb400, -+ 0x2004, 0xa086, 0x0003, 0x1904, 0x2f93, 0x7c28, 0x7d24, 0x7e38, -+ 0x7f2c, 0x080c, 0x3e33, 0x0904, 0x2f93, 0x2009, 0x0000, 0x2019, -+ 0x0000, 0x7023, 0x0000, 0x702f, 0x0000, 0xad80, 0x0003, 0x7026, -+ 0x20a0, 0xa1e0, 0xb535, 0x2c64, 0x8cff, 0x01b8, 0x6004, 0xa084, -+ 0x00ff, 0xa086, 0x0006, 0x0130, 0x6004, 0xa084, 0xff00, 0xa086, -+ 0x0600, 0x1158, 0x6014, 0x20a2, 0x94a0, 0x6010, 0x8007, 0xa105, -+ 0x8007, 0x20a2, 0x94a0, 0xa398, 0x0002, 0x8108, 0xa182, 0x00ff, -+ 0x0120, 0xa386, 0x002a, 0x0148, 0x08e0, 0x83ff, 0x1120, 0x7120, -+ 0x810c, 0x0804, 0x2f6e, 0x702f, 0x0001, 0x711e, 0x7020, 0xa300, -+ 0x7022, 0x2061, 0xb4d2, 0x6007, 0x0000, 0x6312, 0x7024, 0x600e, -+ 0x6426, 0x652a, 0x662e, 0x6732, 0x2c10, 0x080c, 0x163f, 0x7007, -+ 0x0002, 0x701b, 0x4114, 0x0005, 0x702c, 0xa005, 0x1168, 0x711c, -+ 0x7024, 0x20a0, 0x2019, 0x0000, 0x2061, 0xb4d2, 0x6424, 0x6528, -+ 0x662c, 0x6730, 0x0804, 0x40d1, 0x7120, 0x810c, 0x0804, 0x2f6e, -+ 0x81ff, 0x1904, 0x2f93, 0x60d4, 0xd0ac, 0x1118, 0xd09c, 0x0904, -+ 0x2f93, 0x080c, 0x3e33, 0x0904, 0x2f93, 0x7924, 0x7a2c, 0x7b28, -+ 0x7c3c, 0x7d38, 0x080c, 0x3e74, 0x701b, 0x413f, 0x0005, 0x00d6, -+ 0xade8, 0x000d, 0x6828, 0xa0be, 0x7000, 0x0148, 0xa0be, 0x7100, -+ 0x0130, 0xa0be, 0x7200, 0x0118, 0x00de, 0x0804, 0x2f96, 0x6820, -+ 0x6924, 0x080c, 0x27e3, 0x1510, 0x080c, 0x4f0e, 0x11f8, 0x7122, -+ 0x6612, 0x6516, 0x6e18, 0x00c6, 0x080c, 0x3e33, 0x01b8, 0x080c, -+ 0x3e33, 0x01a0, 0x00ce, 0x00de, 0x6837, 0x0000, 0x6838, 0xc0fd, -+ 0x683a, 0x6823, 0x0000, 0x6804, 0x2068, 0x080c, 0x9d4f, 0x0904, -+ 0x2f93, 0x7007, 0x0003, 0x701b, 0x4179, 0x0005, 0x00de, 0x0804, -+ 0x2f93, 0x7120, 0x080c, 0x2d5b, 0x6820, 0xa086, 0x8001, 0x0904, -+ 0x2f93, 0x2d00, 0x701e, 0x6804, 0xa080, 0x0002, 0x0006, 0x20a9, -+ 0x002a, 0x2098, 0x20a0, 0x080c, 0x4b49, 0x000e, 0xade8, 0x000d, -+ 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x2061, 0xb4d2, 0x6007, 0x0000, -+ 0x6e00, 0x6f28, 0xa7c6, 0x7000, 0x1108, 0x0018, 0xa7c6, 0x7100, -+ 0x1140, 0xa6c2, 0x0004, 0x0a04, 0x2f96, 0x2009, 0x0004, 0x0804, -+ 0x3e77, 0xa7c6, 0x7200, 0x1904, 0x2f96, 0xa6c2, 0x0054, 0x0a04, -+ 0x2f96, 0x600e, 0x6013, 0x002a, 0x6226, 0x632a, 0x642e, 0x6532, -+ 0x2c10, 0x080c, 0x163f, 0x7007, 0x0002, 0x701b, 0x41c0, 0x0005, -+ 0x701c, 0x2068, 0x6804, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, -+ 0x0006, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x080c, 0x4b49, 0x000e, -+ 0x2009, 0x002a, 0x2061, 0xb4d2, 0x6224, 0x6328, 0x642c, 0x6530, -+ 0x0804, 0x3e77, 0x81ff, 0x1904, 0x2f93, 0x792c, 0x2001, 0xb6a0, -+ 0x2102, 0x080c, 0x3e48, 0x0904, 0x2f96, 0x080c, 0x5030, 0x0904, -+ 0x2f93, 0x0126, 0x2091, 0x8000, 0x080c, 0x5162, 0x012e, 0x0804, -+ 0x2f6e, 0x7824, 0xd08c, 0x1118, 0xd084, 0x0904, 0x3a03, 0x080c, -+ 0x3e58, 0x0904, 0x2f96, 0x00c6, 0x080c, 0x3e33, 0x00ce, 0x1120, -+ 0x2009, 0x0002, 0x0804, 0x2f93, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x0128, 0xa08e, 0x0004, 0x0110, 0xa08e, 0x0005, 0x15b8, -+ 0x7824, 0xd08c, 0x0120, 0x6000, 0xc08c, 0x6002, 0x0030, 0x2001, -+ 0xb453, 0x2004, 0xd0b4, 0x0904, 0x3a3f, 0x7824, 0xa084, 0xff00, -+ 0xa08e, 0x7e00, 0x0904, 0x3a3f, 0xa08e, 0x7f00, 0x0904, 0x3a3f, -+ 0xa08e, 0x8000, 0x0904, 0x3a3f, 0x6000, 0xd08c, 0x1904, 0x3a3f, -+ 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x080c, 0x9d6b, 0x1120, -+ 0x2009, 0x0003, 0x0804, 0x2f93, 0x7007, 0x0003, 0x701b, 0x4241, -+ 0x0005, 0x080c, 0x3e58, 0x0904, 0x2f96, 0x0804, 0x3a3f, 0x2009, -+ 0xb431, 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x2f93, -+ 0x2001, 0xb400, 0x2004, 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, -+ 0x0804, 0x2f93, 0x2001, 0xb453, 0x2004, 0xd0ac, 0x0120, 0x2009, -+ 0x0008, 0x0804, 0x2f93, 0x609c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, -+ 0x3a3f, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, -+ 0x080c, 0x9dfc, 0x1120, 0x2009, 0x0003, 0x0804, 0x2f93, 0x7007, -+ 0x0003, 0x701b, 0x427c, 0x0005, 0x6830, 0xa086, 0x0100, 0x1120, -+ 0x2009, 0x0004, 0x0804, 0x2f93, 0x080c, 0x3e58, 0x0904, 0x2f96, -+ 0x0804, 0x4210, 0x81ff, 0x2009, 0x0001, 0x1904, 0x2f93, 0x6000, -+ 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, 0x2f93, 0x2001, 0xb453, -+ 0x2004, 0xd0ac, 0x2009, 0x0008, 0x1904, 0x2f93, 0x080c, 0x3e58, -+ 0x0904, 0x2f96, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x2009, -+ 0x0009, 0x1904, 0x2f93, 0x00c6, 0x080c, 0x3e33, 0x00ce, 0x2009, -+ 0x0002, 0x0904, 0x2f93, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, -+ 0xc0fd, 0x683a, 0x7928, 0xa194, 0xff00, 0xa18c, 0x00ff, 0xa006, -+ 0x82ff, 0x1128, 0xc0ed, 0x6952, 0x792c, 0x6956, 0x0048, 0xa28e, -+ 0x0100, 0x1904, 0x2f96, 0xc0e5, 0x6853, 0x0000, 0x6857, 0x0000, -+ 0x683e, 0x080c, 0x9fb9, 0x2009, 0x0003, 0x0904, 0x2f93, 0x7007, -+ 0x0003, 0x701b, 0x42dc, 0x0005, 0x6830, 0xa086, 0x0100, 0x2009, -+ 0x0004, 0x0904, 0x2f93, 0x0804, 0x2f6e, 0x81ff, 0x2009, 0x0001, -+ 0x1904, 0x2f93, 0x6000, 0xa086, 0x0003, 0x2009, 0x0007, 0x1904, -+ 0x2f93, 0x080c, 0x3e58, 0x0904, 0x2f96, 0x6004, 0xa084, 0x00ff, -+ 0xa086, 0x0006, 0x2009, 0x0009, 0x1904, 0x2f93, 0x00c6, 0x080c, -+ 0x3e33, 0x00ce, 0x2009, 0x0002, 0x0904, 0x2f93, 0xad80, 0x000f, -+ 0x2009, 0x0008, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3e74, -+ 0x701b, 0x4313, 0x0005, 0x00d6, 0xade8, 0x000f, 0x6800, 0xa086, -+ 0x0500, 0x1140, 0x6804, 0xa005, 0x1128, 0x6808, 0xa084, 0xff00, -+ 0x1108, 0x0018, 0x00de, 0x1904, 0x2f96, 0x00de, 0x6837, 0x0000, -+ 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x00c6, 0x080c, 0x3e58, -+ 0x1118, 0x00ce, 0x0804, 0x2f96, 0x080c, 0xa008, 0x2009, 0x0003, -+ 0x00ce, 0x0904, 0x2f93, 0x7007, 0x0003, 0x701b, 0x4340, 0x0005, -+ 0x6830, 0xa086, 0x0100, 0x2009, 0x0004, 0x0904, 0x2f93, 0x0804, -+ 0x2f6e, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x2f93, 0x6000, -+ 0xa086, 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, 0x2f93, 0x7e24, -+ 0x860f, 0xa18c, 0x00ff, 0xa6b4, 0x00ff, 0x080c, 0x4f6a, 0x1904, -+ 0x2f96, 0xa186, 0x007f, 0x0150, 0x6004, 0xa084, 0x00ff, 0xa086, -+ 0x0006, 0x0120, 0x2009, 0x0009, 0x0804, 0x2f93, 0x00c6, 0x080c, -+ 0x3e33, 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, 0x2f93, 0x6837, -+ 0x0000, 0x6838, 0xc0fd, 0x683a, 0x2001, 0x0100, 0x8007, 0x680a, -+ 0x080c, 0x9d86, 0x1120, 0x2009, 0x0003, 0x0804, 0x2f93, 0x7007, -+ 0x0003, 0x701b, 0x438c, 0x0005, 0x6808, 0x8007, 0xa086, 0x0100, -+ 0x1120, 0x2009, 0x0004, 0x0804, 0x2f93, 0x68b0, 0x6836, 0x6810, -+ 0x8007, 0xa084, 0x00ff, 0x800c, 0x6814, 0x8007, 0xa084, 0x00ff, -+ 0x8004, 0xa080, 0x0002, 0xa108, 0xad80, 0x0004, 0x7a2c, 0x7b28, -+ 0x7c3c, 0x7d38, 0x0804, 0x3e77, 0x080c, 0x3e33, 0x1120, 0x2009, -+ 0x0002, 0x0804, 0x2f93, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, -+ 0x8217, 0x82ff, 0x0110, 0x0804, 0x2f96, 0x2009, 0x001a, 0x7a2c, -+ 0x7b28, 0x7c3c, 0x7d38, 0x080c, 0x3e74, 0x701b, 0x43c8, 0x0005, -+ 0xad80, 0x000d, 0x2098, 0x20a9, 0x001a, 0x20a1, 0xb6c6, 0x53a3, -+ 0x0804, 0x2f6e, 0x080c, 0x3e33, 0x1120, 0x2009, 0x0002, 0x0804, -+ 0x2f93, 0x7924, 0xa194, 0xff00, 0xa18c, 0x00ff, 0x8217, 0x82ff, -+ 0x0110, 0x0804, 0x2f96, 0x2099, 0xb6c6, 0x20a0, 0x20a9, 0x001a, -+ 0x53a3, 0x2009, 0x001a, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0804, -+ 0x3e77, 0x7824, 0xa08a, 0x1000, 0x1a04, 0x2f96, 0x0126, 0x2091, -+ 0x8000, 0x8003, 0x800b, 0x810b, 0xa108, 0x00c6, 0x2061, 0xb6f3, -+ 0x6142, 0x00ce, 0x012e, 0x0804, 0x2f6e, 0x00c6, 0x080c, 0x5a90, -+ 0x1188, 0x2001, 0xb69f, 0x2003, 0x0001, 0x2001, 0xb400, 0x2003, -+ 0x0001, 0xa085, 0x0001, 0x080c, 0x5ad4, 0x080c, 0x59c8, 0x080c, -+ 0x1511, 0x0038, 0x2061, 0xb400, 0x6030, 0xc09d, 0x6032, 0x080c, -+ 0x4ad9, 0x00ce, 0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, 0x2061, -+ 0xb6f3, 0x7924, 0x6152, 0x614e, 0x6057, 0x0000, 0x604b, 0x0009, -+ 0x7838, 0x606a, 0x783c, 0x6066, 0x7828, 0x6062, 0x782c, 0x605e, -+ 0x2061, 0xb6a1, 0x2001, 0xb708, 0x600e, 0x6013, 0x0001, 0x6017, -+ 0x0002, 0x6007, 0x0000, 0x6037, 0x0000, 0x00ce, 0x012e, 0x0804, -+ 0x2f6e, 0x0126, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xb400, -+ 0x6044, 0xd0a4, 0x11b0, 0xd084, 0x0118, 0x080c, 0x45c0, 0x0068, -+ 0xd08c, 0x0118, 0x080c, 0x44e1, 0x0040, 0xd094, 0x0118, 0x080c, -+ 0x44b2, 0x0018, 0xd09c, 0x0108, 0x0061, 0x00ee, 0x00ce, 0x012e, -+ 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d, 0x612a, 0x001e, -+ 0x0ca0, 0x624c, 0xa286, 0xf0f0, 0x1150, 0x6048, 0xa086, 0xf0f0, -+ 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, 0x0490, 0xa294, -+ 0xff00, 0xa296, 0xf700, 0x0178, 0x7134, 0xd1a4, 0x1160, 0x6240, -+ 0xa295, 0x0100, 0x6242, 0xa294, 0x0010, 0x0128, 0x2009, 0x00f7, -+ 0x080c, 0x4b69, 0x00f0, 0x6040, 0xa084, 0x0010, 0xa085, 0x0140, -+ 0x6042, 0x6043, 0x0000, 0x707b, 0x0000, 0x7097, 0x0001, 0x70bb, -+ 0x0000, 0x70d7, 0x0000, 0x2009, 0xbbc0, 0x200b, 0x0000, 0x708b, -+ 0x0000, 0x707f, 0x000a, 0x2009, 0x000a, 0x2011, 0x4a8f, 0x080c, -+ 0x69e7, 0x0005, 0x0156, 0x2001, 0xb474, 0x2004, 0xd08c, 0x0110, -+ 0x7053, 0xffff, 0x707c, 0xa005, 0x1510, 0x2011, 0x4a8f, 0x080c, -+ 0x6961, 0x6040, 0xa094, 0x0010, 0xa285, 0x0020, 0x6042, 0x20a9, -+ 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04, 0x44c9, 0x6242, 0x708f, -+ 0x0000, 0x6040, 0xa094, 0x0010, 0xa285, 0x0080, 0x6042, 0x6242, -+ 0x0030, 0x6242, 0x708f, 0x0000, 0x7083, 0x0000, 0x0000, 0x015e, -+ 0x0005, 0x7080, 0xa08a, 0x0003, 0x1210, 0x0023, 0x0010, 0x080c, -+ 0x1511, 0x0005, 0x44ed, 0x453d, 0x45bf, 0x00f6, 0x7083, 0x0001, -+ 0x20e1, 0xa000, 0xe000, 0x20e1, 0x8700, 0x080c, 0x2439, 0x20e1, -+ 0x9080, 0x20e1, 0x4000, 0x2079, 0xba00, 0x207b, 0x2200, 0x7807, -+ 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, -+ 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, 0x7823, 0xffff, 0x7827, -+ 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, 0x2079, 0xba0c, 0x207b, -+ 0x1101, 0x7807, 0x0000, 0x2099, 0xb405, 0x20a1, 0xba0e, 0x20a9, -+ 0x0004, 0x53a3, 0x2079, 0xba12, 0x207b, 0x0000, 0x7807, 0x0000, -+ 0x2099, 0xba00, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, -+ 0x000c, 0x600f, 0x0000, 0x080c, 0x4ac0, 0x00fe, 0x7087, 0x0000, -+ 0x6043, 0x0008, 0x6043, 0x0000, 0x0005, 0x00d6, 0x7084, 0x7087, -+ 0x0000, 0xa025, 0x0904, 0x45a7, 0x6020, 0xd0b4, 0x1904, 0x45a5, -+ 0x7194, 0x81ff, 0x0904, 0x4595, 0xa486, 0x000c, 0x1904, 0x45a0, -+ 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0xba80, 0x2019, 0xba00, -+ 0x220c, 0x2304, 0xa106, 0x11b8, 0x8210, 0x8318, 0x1f04, 0x4558, -+ 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, -+ 0x7083, 0x0002, 0x708f, 0x0002, 0x2009, 0x07d0, 0x2011, 0x4a96, -+ 0x080c, 0x69e7, 0x0490, 0x2069, 0xba80, 0x6930, 0xa18e, 0x1101, -+ 0x1538, 0x6834, 0xa005, 0x1520, 0x6900, 0xa18c, 0x00ff, 0x1118, -+ 0x6804, 0xa005, 0x0190, 0x2011, 0xba8e, 0x2019, 0xb405, 0x20a9, -+ 0x0004, 0x220c, 0x2304, 0xa102, 0x0230, 0x1190, 0x8210, 0x8318, -+ 0x1f04, 0x4589, 0x0068, 0x7097, 0x0000, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x2099, 0xba80, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, -+ 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, 0x00de, 0x0005, 0x6040, -+ 0xa085, 0x0100, 0x6042, 0x6020, 0xd0b4, 0x1db8, 0x60c3, 0x000c, -+ 0x2011, 0xb6ea, 0x2013, 0x0000, 0x7087, 0x0000, 0x20e1, 0x9080, -+ 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x7d1b, 0x0c30, 0x0005, -+ 0x708c, 0xa08a, 0x001d, 0x1210, 0x0023, 0x0010, 0x080c, 0x1511, -+ 0x0005, 0x45f3, 0x4602, 0x462a, 0x4643, 0x4667, 0x468f, 0x46b3, -+ 0x46e4, 0x4708, 0x4730, 0x4767, 0x478f, 0x47ab, 0x47c1, 0x47e1, -+ 0x47f4, 0x47fc, 0x482c, 0x4850, 0x4878, 0x489c, 0x48cd, 0x490a, -+ 0x4939, 0x4955, 0x4994, 0x49b4, 0x49cd, 0x49ce, 0x00c6, 0x2061, -+ 0xb400, 0x6003, 0x0007, 0x2061, 0x0100, 0x6004, 0xa084, 0xfff9, -+ 0x6006, 0x00ce, 0x0005, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, -+ 0x0002, 0x708f, 0x0001, 0x2009, 0x07d0, 0x2011, 0x4a96, 0x080c, -+ 0x69e7, 0x0005, 0x00f6, 0x7084, 0xa086, 0x0014, 0x1508, 0x6043, -+ 0x0000, 0x6020, 0xd0b4, 0x11e0, 0x2079, 0xba80, 0x7a30, 0xa296, -+ 0x1102, 0x11a0, 0x7834, 0xa005, 0x1188, 0x7a38, 0xd2fc, 0x0128, -+ 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x2011, 0x4a96, 0x080c, -+ 0x6961, 0x708f, 0x0010, 0x080c, 0x47fc, 0x0010, 0x080c, 0x4ad9, -+ 0x00fe, 0x0005, 0x708f, 0x0003, 0x6043, 0x0004, 0x2011, 0x4a96, -+ 0x080c, 0x6961, 0x080c, 0x4b51, 0x20a3, 0x1102, 0x20a3, 0x0000, -+ 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, 0x463a, 0x60c3, 0x0014, -+ 0x080c, 0x4ac0, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, -+ 0x4a96, 0x080c, 0x6961, 0xa086, 0x0014, 0x11a8, 0x2079, 0xba80, -+ 0x7a30, 0xa296, 0x1102, 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, -+ 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, -+ 0x0004, 0x0029, 0x0010, 0x080c, 0x4ad9, 0x00fe, 0x0005, 0x708f, -+ 0x0005, 0x080c, 0x4b51, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, -+ 0x2011, 0xba8e, 0x080c, 0x4ba2, 0x1160, 0x7078, 0xa005, 0x1148, -+ 0x7150, 0xa186, 0xffff, 0x0128, 0x080c, 0x4a5a, 0x0110, 0x080c, -+ 0x4b80, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4ac0, 0x0005, 0x00f6, -+ 0x7084, 0xa005, 0x01f0, 0x2011, 0x4a96, 0x080c, 0x6961, 0xa086, -+ 0x0014, 0x11a8, 0x2079, 0xba80, 0x7a30, 0xa296, 0x1103, 0x1178, -+ 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, -+ 0x1110, 0x70bb, 0x0001, 0x708f, 0x0006, 0x0029, 0x0010, 0x080c, -+ 0x4ad9, 0x00fe, 0x0005, 0x708f, 0x0007, 0x080c, 0x4b51, 0x20a3, -+ 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0xba8e, 0x080c, 0x4ba2, -+ 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, 0xa186, 0xffff, 0x0170, -+ 0xa180, 0x2d88, 0x200d, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4a5a, -+ 0x0128, 0x080c, 0x4094, 0x0110, 0x080c, 0x282d, 0x20a9, 0x0008, -+ 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, -+ 0x0014, 0x080c, 0x4ac0, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, -+ 0x2011, 0x4a96, 0x080c, 0x6961, 0xa086, 0x0014, 0x11a8, 0x2079, -+ 0xba80, 0x7a30, 0xa296, 0x1104, 0x1178, 0x7834, 0xa005, 0x1160, -+ 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, -+ 0x708f, 0x0008, 0x0029, 0x0010, 0x080c, 0x4ad9, 0x00fe, 0x0005, -+ 0x708f, 0x0009, 0x080c, 0x4b51, 0x20a3, 0x1105, 0x20a3, 0x0100, -+ 0x3430, 0x080c, 0x4ba2, 0x1150, 0x7078, 0xa005, 0x1138, 0x080c, -+ 0x49cf, 0x1170, 0xa085, 0x0001, 0x080c, 0x282d, 0x20a9, 0x0008, -+ 0x2099, 0xba8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0014, 0x080c, 0x4ac0, 0x0010, 0x080c, 0x45e6, 0x0005, -+ 0x00f6, 0x7084, 0xa005, 0x0588, 0x2011, 0x4a96, 0x080c, 0x6961, -+ 0xa086, 0x0014, 0x1540, 0x2079, 0xba80, 0x7a30, 0xa296, 0x1105, -+ 0x1510, 0x7834, 0x2011, 0x0100, 0xa21e, 0x1160, 0x7a38, 0xd2fc, -+ 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x000a, -+ 0x00b1, 0x0098, 0xa005, 0x1178, 0x7a38, 0xd2fc, 0x0128, 0x70b8, -+ 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000, 0x708f, 0x000e, -+ 0x080c, 0x47e1, 0x0010, 0x080c, 0x4ad9, 0x00fe, 0x0005, 0x708f, -+ 0x000b, 0x2011, 0xba0e, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, -+ 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000, 0x41a4, 0x080c, 0x4b51, -+ 0x20a3, 0x1106, 0x20a3, 0x0000, 0x080c, 0x4ba2, 0x0118, 0x2013, -+ 0x0000, 0x0020, 0x7054, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, -+ 0x0042, 0x53a6, 0x60c3, 0x0084, 0x080c, 0x4ac0, 0x0005, 0x00f6, -+ 0x7084, 0xa005, 0x01b0, 0x2011, 0x4a96, 0x080c, 0x6961, 0xa086, -+ 0x0084, 0x1168, 0x2079, 0xba80, 0x7a30, 0xa296, 0x1106, 0x1138, -+ 0x7834, 0xa005, 0x1120, 0x708f, 0x000c, 0x0029, 0x0010, 0x080c, -+ 0x4ad9, 0x00fe, 0x0005, 0x708f, 0x000d, 0x080c, 0x4b51, 0x20a3, -+ 0x1107, 0x20a3, 0x0000, 0x2099, 0xba8e, 0x20a9, 0x0040, 0x53a6, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x080c, 0x4ac0, -+ 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, 0x2011, 0x4a96, 0x080c, -+ 0x6961, 0xa086, 0x0084, 0x1188, 0x2079, 0xba80, 0x7a30, 0xa296, -+ 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, 0x708b, 0x0001, 0x080c, -+ 0x4b43, 0x708f, 0x000e, 0x0029, 0x0010, 0x080c, 0x4ad9, 0x00fe, -+ 0x0005, 0x708f, 0x000f, 0x7087, 0x0000, 0x608b, 0xbc85, 0x608f, -+ 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, -+ 0x4a96, 0x080c, 0x6955, 0x0005, 0x7084, 0xa005, 0x0120, 0x2011, -+ 0x4a96, 0x080c, 0x6961, 0x0005, 0x708f, 0x0011, 0x080c, 0x4ba2, -+ 0x11a0, 0x7170, 0x81ff, 0x0188, 0x2009, 0x0000, 0x7074, 0xa084, -+ 0x00ff, 0x080c, 0x27e3, 0xa186, 0x007e, 0x0138, 0xa186, 0x0080, -+ 0x0120, 0x2011, 0xba8e, 0x080c, 0x4a5a, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x2099, 0xba80, 0x20a1, 0x020b, 0x7484, 0xa480, 0x0018, -+ 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, -+ 0x0014, 0x080c, 0x4ac0, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01f0, -+ 0x2011, 0x4a96, 0x080c, 0x6961, 0xa086, 0x0014, 0x11a8, 0x2079, -+ 0xba80, 0x7a30, 0xa296, 0x1103, 0x1178, 0x7834, 0xa005, 0x1160, -+ 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, -+ 0x708f, 0x0012, 0x0029, 0x0010, 0x080c, 0x4ad9, 0x00fe, 0x0005, -+ 0x708f, 0x0013, 0x080c, 0x4b5d, 0x20a3, 0x1103, 0x20a3, 0x0000, -+ 0x3430, 0x2011, 0xba8e, 0x080c, 0x4ba2, 0x1160, 0x7078, 0xa005, -+ 0x1148, 0x7150, 0xa186, 0xffff, 0x0128, 0x080c, 0x4a5a, 0x0110, -+ 0x080c, 0x4b80, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x080c, 0x4ac0, 0x0005, -+ 0x00f6, 0x7084, 0xa005, 0x01f0, 0x2011, 0x4a96, 0x080c, 0x6961, -+ 0xa086, 0x0014, 0x11a8, 0x2079, 0xba80, 0x7a30, 0xa296, 0x1104, -+ 0x1178, 0x7834, 0xa005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70b8, -+ 0xa005, 0x1110, 0x70bb, 0x0001, 0x708f, 0x0014, 0x0029, 0x0010, -+ 0x080c, 0x4ad9, 0x00fe, 0x0005, 0x708f, 0x0015, 0x080c, 0x4b5d, -+ 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0xba8e, 0x080c, -+ 0x4ba2, 0x11a8, 0x7078, 0xa005, 0x1190, 0x7158, 0xa186, 0xffff, -+ 0x0170, 0xa180, 0x2d88, 0x200d, 0xa18c, 0xff00, 0x810f, 0x080c, -+ 0x4a5a, 0x0128, 0x080c, 0x4094, 0x0110, 0x080c, 0x282d, 0x20a9, -+ 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0014, 0x080c, 0x4ac0, 0x0005, 0x00f6, 0x7084, 0xa005, -+ 0x05b8, 0x2011, 0x4a96, 0x080c, 0x6961, 0xa086, 0x0014, 0x1570, -+ 0x2079, 0xba80, 0x7a30, 0xa296, 0x1105, 0x1540, 0x7834, 0x2011, -+ 0x0100, 0xa21e, 0x1148, 0x7a38, 0xd2fc, 0x0128, 0x70b8, 0xa005, -+ 0x1110, 0x70bb, 0x0001, 0x0060, 0xa005, 0x11c0, 0x7a38, 0xd2fc, -+ 0x0128, 0x70b8, 0xa005, 0x1110, 0x70bb, 0x0001, 0x708b, 0x0000, -+ 0x7a38, 0xd2f4, 0x0138, 0x2001, 0xb474, 0x2004, 0xd0a4, 0x1110, -+ 0x70d7, 0x0008, 0x708f, 0x0016, 0x0029, 0x0010, 0x080c, 0x4ad9, -+ 0x00fe, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xba80, -+ 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0xba8e, -+ 0x708f, 0x0017, 0x080c, 0x4ba2, 0x1150, 0x7078, 0xa005, 0x1138, -+ 0x080c, 0x49cf, 0x1170, 0xa085, 0x0001, 0x080c, 0x282d, 0x20a9, -+ 0x0008, 0x2099, 0xba8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x60c3, 0x0014, 0x080c, 0x4ac0, 0x0010, 0x080c, 0x45e6, -+ 0x0005, 0x00f6, 0x7084, 0xa005, 0x01b0, 0x2011, 0x4a96, 0x080c, -+ 0x6961, 0xa086, 0x0084, 0x1168, 0x2079, 0xba80, 0x7a30, 0xa296, -+ 0x1106, 0x1138, 0x7834, 0xa005, 0x1120, 0x708f, 0x0018, 0x0029, -+ 0x0010, 0x080c, 0x4ad9, 0x00fe, 0x0005, 0x708f, 0x0019, 0x080c, -+ 0x4b5d, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0xba8e, -+ 0x2039, 0xba0e, 0x27a0, 0x20a9, 0x0040, 0x53a3, 0x080c, 0x4ba2, -+ 0x11e8, 0x2728, 0x2514, 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, -+ 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a, 0x7054, 0x2310, 0x8214, -+ 0xa2a0, 0xba0e, 0x2414, 0xa38c, 0x0001, 0x0118, 0xa294, 0xff00, -+ 0x0018, 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, -+ 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, -+ 0x0084, 0x080c, 0x4ac0, 0x0005, 0x00f6, 0x7084, 0xa005, 0x01d0, -+ 0x2011, 0x4a96, 0x080c, 0x6961, 0xa086, 0x0084, 0x1188, 0x2079, -+ 0xba80, 0x7a30, 0xa296, 0x1107, 0x1158, 0x7834, 0xa005, 0x1140, -+ 0x708b, 0x0001, 0x080c, 0x4b43, 0x708f, 0x001a, 0x0029, 0x0010, -+ 0x080c, 0x4ad9, 0x00fe, 0x0005, 0x708f, 0x001b, 0x20e1, 0x9080, -+ 0x20e1, 0x4000, 0x2099, 0xba80, 0x20a1, 0x020b, 0x7484, 0xa480, -+ 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, -+ 0x60c3, 0x0084, 0x080c, 0x4ac0, 0x0005, 0x0005, 0x0005, 0x0086, -+ 0x0096, 0x2029, 0xb453, 0x252c, 0x20a9, 0x0008, 0x2041, 0xba0e, -+ 0x28a0, 0x2099, 0xba8e, 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, -+ 0xd5d4, 0x0110, 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, -+ 0xffff, 0x1148, 0xd5d4, 0x0110, 0x8210, 0x0008, 0x8211, 0x1f04, -+ 0x49e4, 0x0804, 0x4a52, 0x82ff, 0x1160, 0xd5d4, 0x0120, 0xa1a6, -+ 0x3fff, 0x0d90, 0x0020, 0xa1a6, 0x3fff, 0x0904, 0x4a52, 0xa18d, -+ 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0110, 0x2019, -+ 0x0010, 0x2120, 0xd5d4, 0x0110, 0x8423, 0x0008, 0x8424, 0x1240, -+ 0xd5d4, 0x0110, 0x8319, 0x0008, 0x8318, 0x1f04, 0x4a0a, 0x04d0, -+ 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x1f04, 0x4a1c, 0x2328, -+ 0x8529, 0xa2be, 0x0007, 0x0158, 0x0006, 0x2039, 0x0007, 0x2200, -+ 0xa73a, 0x000e, 0x27a8, 0xa5a8, 0x0010, 0x1f04, 0x4a2b, 0x7552, -+ 0xa5c8, 0x2d88, 0x292d, 0xa5ac, 0x00ff, 0x7576, 0x6532, 0x6536, -+ 0x0016, 0x2508, 0x080c, 0x280d, 0x001e, 0x60e7, 0x0000, 0x65ea, -+ 0x2018, 0x2304, 0xa405, 0x201a, 0x707b, 0x0001, 0x26a0, 0x2898, -+ 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0xa085, -+ 0x0001, 0x0028, 0xa006, 0x0018, 0xa006, 0x080c, 0x1511, 0x009e, -+ 0x008e, 0x0005, 0x2118, 0x2021, 0x0000, 0x2001, 0x0007, 0xa39a, -+ 0x0010, 0x0218, 0x8420, 0x8001, 0x0cd0, 0x2118, 0x84ff, 0x0120, -+ 0xa39a, 0x0010, 0x8421, 0x1de0, 0x2021, 0x0001, 0x83ff, 0x0118, -+ 0x8423, 0x8319, 0x1de8, 0xa238, 0x2704, 0xa42c, 0x11b8, 0xa405, -+ 0x203a, 0x7152, 0xa1a0, 0x2d88, 0x242d, 0xa5ac, 0x00ff, 0x7576, -+ 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x280d, 0x001e, 0x60e7, -+ 0x0000, 0x65ea, 0x707b, 0x0001, 0xa084, 0x0000, 0x0005, 0x00e6, -+ 0x2071, 0xb400, 0x707f, 0x0000, 0x00ee, 0x0005, 0x00e6, 0x00f6, -+ 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, 0x7d24, 0x7004, 0xa084, -+ 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, 0x0000, 0x0126, 0x2091, -+ 0x8000, 0x2071, 0xb423, 0x2073, 0x0000, 0x7840, 0x0026, 0x0016, -+ 0x2009, 0x00f7, 0x080c, 0x4b69, 0x001e, 0xa094, 0x0010, 0xa285, -+ 0x0080, 0x7842, 0x7a42, 0x002e, 0x012e, 0x00fe, 0x00ee, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x2011, 0xb6ea, 0x2013, 0x0000, 0x7087, -+ 0x0000, 0x012e, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, -+ 0x080c, 0x7d1b, 0x2009, 0x07d0, 0x2011, 0x4a96, 0x080c, 0x69e7, -+ 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, 0x2011, -+ 0x0003, 0x080c, 0x801f, 0x2011, 0x0002, 0x080c, 0x8029, 0x080c, -+ 0x7f03, 0x0036, 0x2019, 0x0000, 0x080c, 0x7f8e, 0x003e, 0x2009, -+ 0x00f7, 0x080c, 0x4b69, 0x2061, 0xb6f3, 0x601b, 0x0000, 0x601f, -+ 0x0000, 0x2061, 0xb400, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043, -+ 0x0090, 0x6043, 0x0010, 0x2009, 0x002d, 0x2011, 0x4b0e, 0x080c, -+ 0x6955, 0x012e, 0x00ce, 0x002e, 0x001e, 0x0005, 0x00e6, 0x0006, -+ 0x0126, 0x2091, 0x8000, 0x2071, 0x0100, 0x080c, 0x7d24, 0x2071, -+ 0x0140, 0x7004, 0xa084, 0x4000, 0x0120, 0x7003, 0x1000, 0x7003, -+ 0x0000, 0x080c, 0x5a98, 0x01a8, 0x080c, 0x5ab6, 0x1190, 0x2001, -+ 0xb69e, 0x2003, 0xaaaa, 0x0016, 0x080c, 0x28b1, 0x2001, 0xb68f, -+ 0x2102, 0x001e, 0x2001, 0xb69f, 0x2003, 0x0000, 0x080c, 0x59c8, -+ 0x0030, 0x2001, 0x0001, 0x080c, 0x2789, 0x080c, 0x4ad9, 0x012e, -+ 0x000e, 0x00ee, 0x0005, 0x20a9, 0x0040, 0x20a1, 0xbbc0, 0x2099, -+ 0xba8e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x1f04, 0x4b49, -+ 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0xba00, 0x20a1, -+ 0x020b, 0x20a9, 0x000c, 0x53a6, 0x0005, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x2099, 0xba80, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, -+ 0x0005, 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f, 0x2001, 0xb431, -+ 0x2004, 0xa005, 0x1138, 0x2001, 0xb415, 0x2004, 0xa084, 0x00ff, -+ 0xa105, 0x0010, 0xa185, 0x00f7, 0x604a, 0x000e, 0x00ce, 0x0005, -+ 0x0016, 0x0046, 0x2001, 0xb453, 0x2004, 0xd0a4, 0x0158, 0xa006, -+ 0x2020, 0x2009, 0x002a, 0x080c, 0xb06b, 0x2001, 0xb40c, 0x200c, -+ 0xc195, 0x2102, 0x2019, 0x002a, 0x2009, 0x0000, 0x080c, 0x2c33, -+ 0x004e, 0x001e, 0x0005, 0x080c, 0x4ad9, 0x708f, 0x0000, 0x7087, -+ 0x0000, 0x0005, 0x0006, 0x2001, 0xb40c, 0x2004, 0xd09c, 0x0100, -+ 0x000e, 0x0005, 0x0006, 0x0016, 0x0126, 0x2091, 0x8000, 0x2001, -+ 0x0101, 0x200c, 0xa18d, 0x0006, 0x2102, 0x012e, 0x001e, 0x000e, -+ 0x0005, 0x0156, 0x20a9, 0x00ff, 0x2009, 0xb535, 0xa006, 0x200a, -+ 0x8108, 0x1f04, 0x4bbf, 0x015e, 0x0005, 0x00d6, 0x0036, 0x0156, -+ 0x0136, 0x0146, 0x2069, 0xb452, 0xa006, 0x6002, 0x6007, 0x0707, -+ 0x600a, 0x600e, 0x6012, 0xa198, 0x2d88, 0x231d, 0xa39c, 0x00ff, -+ 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0, 0x40a4, 0x20a9, -+ 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e, 0x6042, 0x604e, -+ 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066, 0x606a, 0x606e, -+ 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086, 0x608a, 0x608e, -+ 0x6092, 0x6096, 0x609a, 0x609e, 0x60ae, 0x61a2, 0x00d6, 0x60a4, -+ 0xa06d, 0x0110, 0x080c, 0x160b, 0x60a7, 0x0000, 0x60a8, 0xa06d, -+ 0x0110, 0x080c, 0x160b, 0x60ab, 0x0000, 0x00de, 0xa006, 0x604a, -+ 0x6810, 0x603a, 0x680c, 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, -+ 0x014e, 0x013e, 0x015e, 0x003e, 0x00de, 0x0005, 0x0126, 0x2091, -+ 0x8000, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, 0x1a04, -+ 0x4cd4, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x1a04, 0x4cd9, -+ 0x2001, 0xb40c, 0x2004, 0xa084, 0x0003, 0x01c0, 0x2001, 0xb40c, -+ 0x2004, 0xd084, 0x1904, 0x4cbc, 0xa188, 0xb535, 0x2104, 0xa065, -+ 0x0904, 0x4cbc, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x1904, -+ 0x4cbc, 0x6000, 0xd0c4, 0x0904, 0x4cbc, 0x0068, 0xa188, 0xb535, -+ 0x2104, 0xa065, 0x0904, 0x4ca0, 0x6004, 0xa084, 0x00ff, 0xa08e, -+ 0x0006, 0x1904, 0x4ca5, 0x60a4, 0xa00d, 0x0118, 0x080c, 0x5195, -+ 0x05d0, 0x60a8, 0xa00d, 0x0188, 0x080c, 0x51e0, 0x1170, 0x694c, -+ 0xd1fc, 0x1118, 0x080c, 0x4e9f, 0x0448, 0x080c, 0x4e4e, 0x694c, -+ 0xd1ec, 0x1520, 0x080c, 0x5087, 0x0408, 0x694c, 0xa184, 0xa000, -+ 0x0178, 0xd1ec, 0x0140, 0xd1fc, 0x0118, 0x080c, 0x5096, 0x0028, -+ 0x080c, 0x5096, 0x0028, 0xd1fc, 0x0118, 0x080c, 0x4e4e, 0x0070, -+ 0x6050, 0xa00d, 0x0130, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, -+ 0x0028, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x080c, 0x6c6f, -+ 0xa006, 0x012e, 0x0005, 0x2001, 0x0005, 0x2009, 0x0000, 0x04e8, -+ 0x2001, 0x0028, 0x2009, 0x0000, 0x04c0, 0xa082, 0x0006, 0x12a0, -+ 0x2001, 0xb435, 0x2004, 0xd0ac, 0x1160, 0x60a0, 0xd0bc, 0x1148, -+ 0x6100, 0xd1fc, 0x0904, 0x4c5b, 0x2001, 0x0029, 0x2009, 0x1000, -+ 0x0420, 0x2001, 0x0028, 0x00a8, 0x2009, 0xb40c, 0x210c, 0xd18c, -+ 0x0118, 0x2001, 0x0004, 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, -+ 0x0040, 0x2001, 0x0029, 0x6100, 0xd1fc, 0x0118, 0x2009, 0x1000, -+ 0x0060, 0x2009, 0x0000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000, -+ 0x0020, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x012e, 0x0005, -+ 0x00e6, 0x0126, 0x2091, 0x8000, 0x6844, 0x8007, 0xa084, 0x00ff, -+ 0x2008, 0xa182, 0x00ff, 0x1a04, 0x4d33, 0xa188, 0xb535, 0x2104, -+ 0xa065, 0x01c0, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x11a8, -+ 0x2c70, 0x080c, 0x856a, 0x05e8, 0x2e00, 0x601a, 0x2d00, 0x6012, -+ 0x600b, 0xffff, 0x601f, 0x000a, 0x2009, 0x0003, 0x080c, 0x85ef, -+ 0xa006, 0x0460, 0x2001, 0x0028, 0x0440, 0xa082, 0x0006, 0x1298, -+ 0x2001, 0xb435, 0x2004, 0xd0ac, 0x1158, 0x60a0, 0xd0bc, 0x1140, -+ 0x6100, 0xd1fc, 0x09e8, 0x2001, 0x0029, 0x2009, 0x1000, 0x00a8, -+ 0x2001, 0x0028, 0x0090, 0x2009, 0xb40c, 0x210c, 0xd18c, 0x0118, -+ 0x2001, 0x0004, 0x0050, 0xd184, 0x0118, 0x2001, 0x0004, 0x0028, -+ 0x2001, 0x0029, 0x0010, 0x2001, 0x0029, 0xa005, 0x012e, 0x00ee, -+ 0x0005, 0x2001, 0x002c, 0x0cc8, 0x00f6, 0x00e6, 0x0126, 0x2091, -+ 0x8000, 0x2011, 0x0000, 0x2079, 0xb400, 0x6944, 0xa18c, 0xff00, -+ 0x810f, 0xa182, 0x00ff, 0x1a04, 0x4e05, 0x2001, 0xb40c, 0x2004, -+ 0xa084, 0x0003, 0x1904, 0x4df3, 0x080c, 0x4f6a, 0x11a0, 0x6004, -+ 0xa084, 0x00ff, 0xa082, 0x0006, 0x1270, 0x6864, 0xa0c6, 0x006f, -+ 0x0150, 0x2001, 0xb435, 0x2004, 0xd0ac, 0x1904, 0x4dee, 0x60a0, -+ 0xd0bc, 0x1904, 0x4dee, 0x6864, 0xa0c6, 0x006f, 0x0118, 0x2008, -+ 0x0804, 0x4db7, 0x6968, 0x2140, 0xa18c, 0xff00, 0x810f, 0x78d4, -+ 0xd0ac, 0x1118, 0xa182, 0x0080, 0x06d0, 0xa182, 0x00ff, 0x16b8, -+ 0x6a70, 0x6b6c, 0x7870, 0xa306, 0x1160, 0x7874, 0xa24e, 0x1118, -+ 0x2208, 0x2310, 0x0460, 0xa9cc, 0xff00, 0x1118, 0x2208, 0x2310, -+ 0x0430, 0x080c, 0x3d81, 0x2c70, 0x0550, 0x2009, 0x0000, 0x2011, -+ 0x0000, 0xa0c6, 0x4000, 0x1160, 0x0006, 0x2e60, 0x080c, 0x520b, -+ 0x1108, 0xc185, 0x7000, 0xd0bc, 0x0108, 0xc18d, 0x000e, 0x0088, -+ 0xa0c6, 0x4007, 0x1110, 0x2408, 0x0060, 0xa0c6, 0x4008, 0x1118, -+ 0x2708, 0x2610, 0x0030, 0xa0c6, 0x4009, 0x1108, 0x0010, 0x2001, -+ 0x4006, 0x6866, 0x696a, 0x6a6e, 0x2001, 0x0030, 0x0450, 0x080c, -+ 0x856a, 0x1138, 0x2001, 0x4005, 0x2009, 0x0003, 0x2011, 0x0000, -+ 0x0c80, 0x2e00, 0x601a, 0x080c, 0x9fb8, 0x2d00, 0x6012, 0x601f, -+ 0x0001, 0x6838, 0xd88c, 0x0108, 0xc0f5, 0x683a, 0x0126, 0x2091, -+ 0x8000, 0x080c, 0x2c60, 0x012e, 0x2001, 0x0000, 0x080c, 0x4eac, -+ 0x2001, 0x0002, 0x080c, 0x4ebe, 0x2009, 0x0002, 0x080c, 0x85ef, -+ 0xa006, 0xa005, 0x012e, 0x00ee, 0x00fe, 0x0005, 0x2001, 0x0028, -+ 0x2009, 0x0000, 0x0cb0, 0x2009, 0xb40c, 0x210c, 0xd18c, 0x0118, -+ 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, -+ 0x2001, 0x0029, 0x2009, 0x0000, 0x0c20, 0x2001, 0x0029, 0x2009, -+ 0x0000, 0x08f8, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000, -+ 0x16b8, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff, 0x12e0, 0xa188, -+ 0xb535, 0x2104, 0xa065, 0x01b8, 0x6004, 0xa084, 0x00ff, 0xa08e, -+ 0x0006, 0x11b0, 0x684c, 0xd0ec, 0x0120, 0x080c, 0x5096, 0x0431, -+ 0x0030, 0x0421, 0x684c, 0xd0fc, 0x0110, 0x080c, 0x5087, 0x080c, -+ 0x50d4, 0xa006, 0x00c8, 0x2001, 0x0028, 0x2009, 0x0000, 0x00a0, -+ 0xa082, 0x0006, 0x1240, 0x6100, 0xd1fc, 0x0d20, 0x2001, 0x0029, -+ 0x2009, 0x1000, 0x0048, 0x2001, 0x0029, 0x2009, 0x0000, 0x0020, -+ 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x0005, 0x0126, 0x2091, -+ 0x8000, 0x6050, 0xa00d, 0x0138, 0x2d00, 0x200a, 0x6803, 0x0000, -+ 0x6052, 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, -+ 0x0cc0, 0x0126, 0x2091, 0x8000, 0x604c, 0xa005, 0x0170, 0x00e6, -+ 0x2071, 0xb6e0, 0x7004, 0xa086, 0x0002, 0x0168, 0x00ee, 0x604c, -+ 0x6802, 0x2d00, 0x604e, 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, -+ 0x6803, 0x0000, 0x0cc0, 0x701c, 0xac06, 0x1d80, 0x604c, 0x2070, -+ 0x7000, 0x6802, 0x2d00, 0x7002, 0x00ee, 0x012e, 0x0005, 0x0126, -+ 0x2091, 0x8000, 0x604c, 0xa06d, 0x0130, 0x6800, 0xa005, 0x1108, -+ 0x6052, 0x604e, 0xad05, 0x012e, 0x0005, 0x604c, 0xa06d, 0x0130, -+ 0x6800, 0xa005, 0x1108, 0x6052, 0x604e, 0xad05, 0x0005, 0x6803, -+ 0x0000, 0x6084, 0xa00d, 0x0120, 0x2d00, 0x200a, 0x6086, 0x0005, -+ 0x2d00, 0x6086, 0x6082, 0x0cd8, 0x0126, 0x00c6, 0x0026, 0x2091, -+ 0x8000, 0x6218, 0x2260, 0x6200, 0xa005, 0x0110, 0xc285, 0x0008, -+ 0xc284, 0x6202, 0x002e, 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6, -+ 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0x0006, 0xa086, 0x0006, -+ 0x1180, 0x609c, 0xd0ac, 0x0168, 0x2001, 0xb453, 0x2004, 0xd0a4, -+ 0x0140, 0xa284, 0xff00, 0x8007, 0xa086, 0x0007, 0x1110, 0x2011, -+ 0x0600, 0x000e, 0xa294, 0xff00, 0xa215, 0x6206, 0x0006, 0xa086, -+ 0x0006, 0x1128, 0x6290, 0x82ff, 0x1110, 0x080c, 0x1511, 0x000e, -+ 0x00ce, 0x012e, 0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6218, -+ 0x2260, 0x6204, 0x0006, 0xa086, 0x0006, 0x1178, 0x609c, 0xd0a4, -+ 0x0160, 0x2001, 0xb453, 0x2004, 0xd0ac, 0x1138, 0xa284, 0x00ff, -+ 0xa086, 0x0007, 0x1110, 0x2011, 0x0006, 0x000e, 0xa294, 0x00ff, -+ 0x8007, 0xa215, 0x6206, 0x00ce, 0x012e, 0x0005, 0x0026, 0xa182, -+ 0x00ff, 0x0218, 0xa085, 0x0001, 0x00b0, 0xa190, 0xb535, 0x2204, -+ 0xa065, 0x1180, 0x0016, 0x00d6, 0x080c, 0x15db, 0x2d60, 0x00de, -+ 0x001e, 0x0d80, 0x2c00, 0x2012, 0x60a7, 0x0000, 0x60ab, 0x0000, -+ 0x080c, 0x4bc5, 0xa006, 0x002e, 0x0005, 0x0126, 0x2091, 0x8000, -+ 0x0026, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, 0x0480, 0x00d6, -+ 0xa190, 0xb535, 0x2204, 0xa06d, 0x0540, 0x2013, 0x0000, 0x00d6, -+ 0x00c6, 0x2d60, 0x60a4, 0xa06d, 0x0110, 0x080c, 0x160b, 0x60a8, -+ 0xa06d, 0x0110, 0x080c, 0x160b, 0x00ce, 0x00de, 0x00d6, 0x00c6, -+ 0x68ac, 0x2060, 0x8cff, 0x0168, 0x600c, 0x0006, 0x6010, 0x2068, -+ 0x080c, 0x9beb, 0x0110, 0x080c, 0x161b, 0x080c, 0x85c0, 0x00ce, -+ 0x0c88, 0x00ce, 0x00de, 0x080c, 0x160b, 0x00de, 0xa006, 0x002e, -+ 0x012e, 0x0005, 0x0016, 0xa182, 0x00ff, 0x0218, 0xa085, 0x0001, -+ 0x0030, 0xa188, 0xb535, 0x2104, 0xa065, 0x0dc0, 0xa006, 0x001e, -+ 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x600b, 0x0000, 0x600f, -+ 0x0000, 0x6000, 0xc08c, 0x6002, 0x080c, 0x5a90, 0x1558, 0x60a0, -+ 0xa086, 0x007e, 0x2069, 0xba90, 0x0130, 0x2001, 0xb435, 0x2004, -+ 0xd0ac, 0x1500, 0x0098, 0x2d04, 0xd0e4, 0x01e0, 0x00d6, 0x2069, -+ 0xba8e, 0x00c6, 0x2061, 0xb6b2, 0x6810, 0x2062, 0x6814, 0x6006, -+ 0x6818, 0x600a, 0x681c, 0x600e, 0x00ce, 0x00de, 0x8d69, 0x2d04, -+ 0x2069, 0x0140, 0xa005, 0x1110, 0x2001, 0x0001, 0x6886, 0x2069, -+ 0xb400, 0x68a6, 0x2069, 0xba8e, 0x6808, 0x605e, 0x6810, 0x6062, -+ 0x6138, 0xa10a, 0x0208, 0x603a, 0x6814, 0x6066, 0x2099, 0xba96, -+ 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0xba9a, -+ 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0xbaae, -+ 0x6808, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, -+ 0x60a0, 0xa086, 0x007e, 0x1120, 0x2069, 0xba8e, 0x690c, 0x616e, -+ 0xa182, 0x0211, 0x1218, 0x2009, 0x0008, 0x0400, 0xa182, 0x0259, -+ 0x1218, 0x2009, 0x0007, 0x00d0, 0xa182, 0x02c1, 0x1218, 0x2009, -+ 0x0006, 0x00a0, 0xa182, 0x0349, 0x1218, 0x2009, 0x0005, 0x0070, -+ 0xa182, 0x0421, 0x1218, 0x2009, 0x0004, 0x0040, 0xa182, 0x0581, -+ 0x1218, 0x2009, 0x0003, 0x0010, 0x2009, 0x0002, 0x6192, 0x014e, -+ 0x013e, 0x015e, 0x00de, 0x0005, 0x0016, 0x0026, 0x00e6, 0x2071, -+ 0xba8d, 0x2e04, 0x6896, 0x2071, 0xba8e, 0x7004, 0x689a, 0x701c, -+ 0x689e, 0x6a00, 0x2009, 0xb472, 0x210c, 0xd0bc, 0x0120, 0xd1ec, -+ 0x0110, 0xc2ad, 0x0008, 0xc2ac, 0xd0c4, 0x0120, 0xd1e4, 0x0110, -+ 0xc2bd, 0x0008, 0xc2bc, 0x6a02, 0x00ee, 0x002e, 0x001e, 0x0005, -+ 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x01c0, 0x6900, -+ 0x81ff, 0x1540, 0x6a04, 0xa282, 0x0010, 0x1648, 0xad88, 0x0004, -+ 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0128, 0x8108, 0x1f04, -+ 0x5042, 0x080c, 0x1511, 0x260a, 0x8210, 0x6a06, 0x0098, 0x080c, -+ 0x15f4, 0x01a8, 0x2d00, 0x60a6, 0x6803, 0x0000, 0xad88, 0x0004, -+ 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x505a, 0x6807, -+ 0x0001, 0x6e12, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, 0xa006, -+ 0x0cd8, 0x0126, 0x2091, 0x8000, 0x00d6, 0x60a4, 0xa00d, 0x01a0, -+ 0x2168, 0x6800, 0xa005, 0x1160, 0x080c, 0x5195, 0x1168, 0x200b, -+ 0xffff, 0x6804, 0xa08a, 0x0002, 0x0218, 0x8001, 0x6806, 0x0020, -+ 0x080c, 0x160b, 0x60a7, 0x0000, 0x00de, 0x012e, 0x0005, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x51f3, 0x0010, 0x080c, 0x4e4e, 0x080c, -+ 0x510d, 0x1dd8, 0x080c, 0x50d4, 0x012e, 0x0005, 0x00d6, 0x0126, -+ 0x2091, 0x8000, 0x60a8, 0xa06d, 0x01c0, 0x6950, 0x81ff, 0x1540, -+ 0x6a54, 0xa282, 0x0010, 0x1670, 0xad88, 0x0018, 0x20a9, 0x0010, -+ 0x2104, 0xa086, 0xffff, 0x0128, 0x8108, 0x1f04, 0x50a8, 0x080c, -+ 0x1511, 0x260a, 0x8210, 0x6a56, 0x0098, 0x080c, 0x15f4, 0x01d0, -+ 0x2d00, 0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, 0x20a9, 0x0010, -+ 0x200b, 0xffff, 0x8108, 0x1f04, 0x50c0, 0x6857, 0x0001, 0x6e62, -+ 0x0010, 0x080c, 0x4e9f, 0x0089, 0x1de0, 0xa085, 0x0001, 0x012e, -+ 0x00de, 0x0005, 0xa006, 0x0cd8, 0x0126, 0x2091, 0x8000, 0x080c, -+ 0x6c6f, 0x012e, 0x0005, 0xa01e, 0x0010, 0x2019, 0x0001, 0xa00e, -+ 0x0126, 0x2091, 0x8000, 0x604c, 0x2068, 0x6000, 0xd0dc, 0x1170, -+ 0x8dff, 0x01f8, 0x83ff, 0x0120, 0x6848, 0xa606, 0x0158, 0x0030, -+ 0x683c, 0xa406, 0x1118, 0x6840, 0xa506, 0x0120, 0x2d08, 0x6800, -+ 0x2068, 0x0c70, 0x080c, 0x80c8, 0x6a00, 0x604c, 0xad06, 0x1110, -+ 0x624e, 0x0018, 0xa180, 0x0000, 0x2202, 0x82ff, 0x1110, 0x6152, -+ 0x8dff, 0x012e, 0x0005, 0xa01e, 0x0010, 0x2019, 0x0001, 0xa00e, -+ 0x6080, 0x2068, 0x8dff, 0x01e8, 0x83ff, 0x0120, 0x6848, 0xa606, -+ 0x0158, 0x0030, 0x683c, 0xa406, 0x1118, 0x6840, 0xa506, 0x0120, -+ 0x2d08, 0x6800, 0x2068, 0x0c70, 0x6a00, 0x6080, 0xad06, 0x1110, -+ 0x6282, 0x0018, 0xa180, 0x0000, 0x2202, 0x82ff, 0x1110, 0x6186, -+ 0x8dff, 0x0005, 0xa016, 0x080c, 0x518f, 0x1110, 0x2011, 0x0001, -+ 0x080c, 0x51da, 0x1110, 0xa295, 0x0002, 0x0005, 0x080c, 0x520b, -+ 0x0118, 0x080c, 0x9ca0, 0x0010, 0xa085, 0x0001, 0x0005, 0x080c, -+ 0x520b, 0x0118, 0x080c, 0x9c30, 0x0010, 0xa085, 0x0001, 0x0005, -+ 0x080c, 0x520b, 0x0118, 0x080c, 0x9c83, 0x0010, 0xa085, 0x0001, -+ 0x0005, 0x080c, 0x520b, 0x0118, 0x080c, 0x9c4c, 0x0010, 0xa085, -+ 0x0001, 0x0005, 0x080c, 0x520b, 0x0118, 0x080c, 0x9cbc, 0x0010, -+ 0xa085, 0x0001, 0x0005, 0x0126, 0x0006, 0x00d6, 0x2091, 0x8000, -+ 0x6080, 0xa06d, 0x01a0, 0x6800, 0x0006, 0x6837, 0x0103, 0x6b4a, -+ 0x6847, 0x0000, 0x080c, 0x9e5d, 0x0006, 0x6000, 0xd0fc, 0x0110, -+ 0x080c, 0xb30c, 0x000e, 0x080c, 0x53c9, 0x000e, 0x0c50, 0x6083, -+ 0x0000, 0x6087, 0x0000, 0x00de, 0x000e, 0x012e, 0x0005, 0x60a4, -+ 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005, 0x00e6, 0x2170, 0x7000, -+ 0xa005, 0x1168, 0x20a9, 0x0010, 0xae88, 0x0004, 0x2104, 0xa606, -+ 0x0130, 0x8108, 0x1f04, 0x519e, 0xa085, 0x0001, 0x0008, 0xa006, -+ 0x00ee, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, -+ 0x1128, 0x080c, 0x15f4, 0x01a0, 0x2d00, 0x60a6, 0x6803, 0x0001, -+ 0x6807, 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, -+ 0x8108, 0x1f04, 0x51be, 0xa085, 0x0001, 0x012e, 0x00de, 0x0005, -+ 0xa006, 0x0cd8, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0xa06d, -+ 0x0130, 0x60a7, 0x0000, 0x080c, 0x160b, 0xa085, 0x0001, 0x012e, -+ 0x00de, 0x0005, 0x60a8, 0xa00d, 0x1118, 0xa085, 0x0001, 0x0005, -+ 0x00e6, 0x2170, 0x7050, 0xa005, 0x1160, 0x20a9, 0x0010, 0xae88, -+ 0x0018, 0x2104, 0xa606, 0x0128, 0x8108, 0x1f04, 0x51e9, 0xa085, -+ 0x0001, 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x0c19, 0x1188, -+ 0x200b, 0xffff, 0x00d6, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, -+ 0x0218, 0x8001, 0x6856, 0x0020, 0x080c, 0x160b, 0x60ab, 0x0000, -+ 0x00de, 0x012e, 0x0005, 0x609c, 0xd0a4, 0x0005, 0x00f6, 0x080c, -+ 0x5a90, 0x01b0, 0x71b8, 0x81ff, 0x1198, 0x71d4, 0xd19c, 0x0180, -+ 0x2001, 0x007e, 0xa080, 0xb535, 0x2004, 0xa07d, 0x0148, 0x7804, -+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x1118, 0x7800, 0xc0ed, 0x7802, -+ 0x2079, 0xb452, 0x7804, 0xd0a4, 0x01e8, 0x0156, 0x00c6, 0x20a9, -+ 0x007f, 0x2009, 0x0000, 0x0016, 0x080c, 0x4f6a, 0x1168, 0x6004, -+ 0xa084, 0xff00, 0x8007, 0xa096, 0x0004, 0x0118, 0xa086, 0x0006, -+ 0x1118, 0x6000, 0xc0ed, 0x6002, 0x001e, 0x8108, 0x1f04, 0x5233, -+ 0x00ce, 0x015e, 0x080c, 0x52ca, 0x0120, 0x2001, 0xb6b5, 0x200c, -+ 0x0038, 0x2079, 0xb452, 0x7804, 0xd0a4, 0x0130, 0x2009, 0x07d0, -+ 0x2011, 0x525e, 0x080c, 0x69e7, 0x00fe, 0x0005, 0x2011, 0x525e, -+ 0x080c, 0x6961, 0x080c, 0x52ca, 0x01f0, 0x2001, 0xb5b3, 0x2004, -+ 0xa080, 0x0000, 0x200c, 0xc1ec, 0x2102, 0x2001, 0xb453, 0x2004, -+ 0xd0a4, 0x0130, 0x2009, 0x07d0, 0x2011, 0x525e, 0x080c, 0x69e7, -+ 0x00e6, 0x2071, 0xb400, 0x7073, 0x0000, 0x7077, 0x0000, 0x080c, -+ 0x2a7e, 0x00ee, 0x04b0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x2009, -+ 0x0000, 0x0016, 0x080c, 0x4f6a, 0x1530, 0x6000, 0xd0ec, 0x0518, -+ 0x0046, 0x62a0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, -+ 0x080c, 0xb06b, 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x6004, 0xa084, -+ 0x00ff, 0xa085, 0x0700, 0x6006, 0x2019, 0x0029, 0x080c, 0x6dba, -+ 0x0076, 0x2039, 0x0000, 0x080c, 0x6cc7, 0x2009, 0x0000, 0x080c, -+ 0xae05, 0x007e, 0x004e, 0x001e, 0x8108, 0x1f04, 0x5289, 0x00ce, -+ 0x015e, 0x0005, 0x00c6, 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, -+ 0x00ce, 0x0005, 0x7818, 0x2004, 0xd0ac, 0x0005, 0x7818, 0x2004, -+ 0xd0bc, 0x0005, 0x00f6, 0x2001, 0xb5b3, 0x2004, 0xa07d, 0x0110, -+ 0x7800, 0xd0ec, 0x00fe, 0x0005, 0x0126, 0x0026, 0x2091, 0x8000, -+ 0x0006, 0x62a0, 0xa290, 0xb535, 0x2204, 0xac06, 0x190c, 0x1511, -+ 0x000e, 0x6200, 0xa005, 0x0110, 0xc2fd, 0x0008, 0xc2fc, 0x6202, -+ 0x002e, 0x012e, 0x0005, 0x2011, 0xb435, 0x2204, 0xd0cc, 0x0138, -+ 0x2001, 0xb6b3, 0x200c, 0x2011, 0x52f8, 0x080c, 0x69e7, 0x0005, -+ 0x2011, 0x52f8, 0x080c, 0x6961, 0x2011, 0xb435, 0x2204, 0xc0cc, -+ 0x2012, 0x0005, 0x2071, 0xb514, 0x7003, 0x0001, 0x7007, 0x0000, -+ 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, -+ 0x700b, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b, 0x0020, -+ 0x705f, 0x0040, 0x707f, 0x0000, 0x2071, 0xb67d, 0x7003, 0xb514, -+ 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0xb65d, 0x7013, 0x0020, -+ 0x7017, 0x0040, 0x7037, 0x0000, 0x0005, 0x0016, 0x00e6, 0x2071, -+ 0xb635, 0xa00e, 0x7186, 0x718a, 0x7097, 0x0001, 0x2001, 0xb453, -+ 0x2004, 0xd0fc, 0x1150, 0x2001, 0xb453, 0x2004, 0xa00e, 0xd09c, -+ 0x0108, 0x8108, 0x7102, 0x0804, 0x5393, 0x2001, 0xb472, 0x200c, -+ 0xa184, 0x000f, 0x2009, 0xb473, 0x210c, 0x0002, 0x533b, 0x536e, -+ 0x5375, 0x537f, 0x5384, 0x533b, 0x533b, 0x533b, 0x535e, 0x533b, -+ 0x533b, 0x533b, 0x533b, 0x533b, 0x533b, 0x533b, 0x7003, 0x0004, -+ 0x0136, 0x0146, 0x0156, 0x2099, 0xb476, 0x20a1, 0xb686, 0x20a9, -+ 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x0428, 0x708f, 0x0005, -+ 0x7007, 0x0122, 0x2001, 0x0002, 0x0030, 0x708f, 0x0002, 0x7007, -+ 0x0121, 0x2001, 0x0003, 0x7002, 0x7097, 0x0001, 0x0088, 0x7007, -+ 0x0122, 0x2001, 0x0002, 0x0020, 0x7007, 0x0121, 0x2001, 0x0003, -+ 0x7002, 0xa006, 0x7096, 0x708e, 0xa184, 0xff00, 0x8007, 0x709a, -+ 0xa184, 0x00ff, 0x7092, 0x00ee, 0x001e, 0x0005, 0x00e6, 0x2071, -+ 0xb514, 0x684c, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a, 0xa085, -+ 0x0001, 0x0428, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868, 0x703e, -+ 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844, 0x7032, -+ 0x2009, 0x000d, 0x200a, 0x700b, 0x0000, 0x8007, 0x8006, 0x8006, -+ 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x726e, -+ 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, 0x00ee, -+ 0x0005, 0x0156, 0x00e6, 0x0026, 0x6838, 0xd0fc, 0x1904, 0x5422, -+ 0x6804, 0xa00d, 0x0188, 0x00d6, 0x2071, 0xb400, 0xa016, 0x702c, -+ 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, -+ 0x70b4, 0xa200, 0x70b6, 0x00de, 0x2071, 0xb514, 0x701c, 0xa005, -+ 0x1904, 0x5432, 0x20a9, 0x0032, 0x0f04, 0x5430, 0x0e04, 0x53ec, -+ 0x2071, 0xb635, 0x7200, 0x82ff, 0x05d8, 0x6934, 0xa186, 0x0103, -+ 0x1904, 0x5440, 0x6948, 0x6844, 0xa105, 0x1540, 0x2009, 0x8020, -+ 0x2200, 0x0002, 0x5430, 0x5407, 0x5458, 0x5464, 0x5430, 0x2071, -+ 0x0000, 0x20a9, 0x0032, 0x0f04, 0x5430, 0x7018, 0xd084, 0x1dd8, -+ 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, -+ 0x4080, 0x2071, 0xb400, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70b4, -+ 0x8000, 0x70b6, 0x002e, 0x00ee, 0x015e, 0x0005, 0x6844, 0xa086, -+ 0x0100, 0x1130, 0x6868, 0xa005, 0x1118, 0x2009, 0x8020, 0x0880, -+ 0x2071, 0xb514, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000, 0x7012, -+ 0x7018, 0xa06d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, 0x0c10, -+ 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118, -+ 0xa18e, 0x001f, 0x1d28, 0x684c, 0xd0cc, 0x0d10, 0x6850, 0xa084, -+ 0x00ff, 0xa086, 0x0001, 0x19e0, 0x2009, 0x8021, 0x0804, 0x5400, -+ 0x7084, 0x8008, 0xa092, 0x001e, 0x1a98, 0x7186, 0xae90, 0x0003, -+ 0xa210, 0x683c, 0x2012, 0x0078, 0x7084, 0x8008, 0xa092, 0x000f, -+ 0x1a38, 0x7186, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, -+ 0x8210, 0x6840, 0x2012, 0x7088, 0xa10a, 0x0a04, 0x5419, 0x718c, -+ 0x7084, 0xa10a, 0x0a04, 0x5419, 0x2071, 0x0000, 0x7018, 0xd084, -+ 0x1904, 0x5419, 0x2071, 0xb635, 0x7000, 0xa086, 0x0002, 0x1150, -+ 0x080c, 0x56e3, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, -+ 0x0804, 0x5419, 0x080c, 0x570d, 0x2071, 0x0000, 0x701b, 0x0001, -+ 0x2091, 0x4080, 0x0804, 0x5419, 0x0006, 0x684c, 0x0006, 0x6837, -+ 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, -+ 0x40a4, 0x000e, 0xa084, 0x00ff, 0x684e, 0x000e, 0x684a, 0x6952, -+ 0x0005, 0x2071, 0xb514, 0x7004, 0x0002, 0x54bf, 0x54d0, 0x56ce, -+ 0x56cf, 0x56dc, 0x56e2, 0x54c0, 0x56bf, 0x5655, 0x56ab, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x0e04, 0x54cf, 0x2009, 0x000d, 0x7030, -+ 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x700b, 0x0000, 0x012e, -+ 0x2069, 0xb6f3, 0x683c, 0xa005, 0x03f8, 0x11f0, 0x0126, 0x2091, -+ 0x8000, 0x2069, 0x0000, 0x6934, 0x2001, 0xb520, 0x2004, 0xa10a, -+ 0x0170, 0x0e04, 0x54f3, 0x2069, 0x0000, 0x6818, 0xd084, 0x1158, -+ 0x2009, 0x8040, 0x6922, 0x681b, 0x0001, 0x2091, 0x4080, 0x2069, -+ 0xb6f3, 0x683f, 0xffff, 0x012e, 0x2069, 0xb400, 0x6848, 0x6968, -+ 0xa102, 0x2069, 0xb635, 0x688a, 0x6984, 0x701c, 0xa06d, 0x0120, -+ 0x81ff, 0x0904, 0x5549, 0x00a0, 0x81ff, 0x0904, 0x560f, 0x2071, -+ 0xb635, 0x7184, 0x7088, 0xa10a, 0x1258, 0x7190, 0x2071, 0xb6f3, -+ 0x7038, 0xa005, 0x0128, 0x1b04, 0x560f, 0x713a, 0x0804, 0x560f, -+ 0x2071, 0xb635, 0x718c, 0x0126, 0x2091, 0x8000, 0x7084, 0xa10a, -+ 0x0a04, 0x562a, 0x0e04, 0x55cb, 0x2071, 0x0000, 0x7018, 0xd084, -+ 0x1904, 0x55cb, 0x2001, 0xffff, 0x2071, 0xb6f3, 0x703a, 0x2071, -+ 0xb635, 0x7000, 0xa086, 0x0002, 0x1150, 0x080c, 0x56e3, 0x2071, -+ 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, 0x55cb, 0x080c, -+ 0x570d, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091, 0x4080, 0x0804, -+ 0x55cb, 0x2071, 0xb635, 0x7000, 0xa005, 0x0904, 0x55f1, 0x6934, -+ 0xa186, 0x0103, 0x1904, 0x55ce, 0x684c, 0xd0bc, 0x1904, 0x55f1, -+ 0x6948, 0x6844, 0xa105, 0x1904, 0x55e6, 0x2009, 0x8020, 0x2071, -+ 0xb635, 0x7000, 0x0002, 0x55f1, 0x55b1, 0x5589, 0x559b, 0x5568, -+ 0x0136, 0x0146, 0x0156, 0x2099, 0xb476, 0x20a1, 0xb686, 0x20a9, -+ 0x0004, 0x53a3, 0x015e, 0x014e, 0x013e, 0x2071, 0xb67d, 0xad80, -+ 0x000f, 0x700e, 0x7013, 0x0002, 0x7007, 0x0002, 0x700b, 0x0000, -+ 0x2e10, 0x080c, 0x163f, 0x2071, 0xb514, 0x7007, 0x0009, 0x0804, -+ 0x560f, 0x7084, 0x8008, 0xa092, 0x001e, 0x1a04, 0x560f, 0xae90, -+ 0x0003, 0xa210, 0x683c, 0x2012, 0x7186, 0x2071, 0xb514, 0x080c, -+ 0x5764, 0x0804, 0x560f, 0x7084, 0x8008, 0xa092, 0x000f, 0x1a04, -+ 0x560f, 0xae90, 0x0003, 0x8003, 0xa210, 0x683c, 0x2012, 0x8210, -+ 0x6840, 0x2012, 0x7186, 0x2071, 0xb514, 0x080c, 0x5764, 0x0804, -+ 0x560f, 0x0126, 0x2091, 0x8000, 0x0e04, 0x55cb, 0x2071, 0x0000, -+ 0x7018, 0xd084, 0x1180, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, -+ 0x701b, 0x0001, 0x2091, 0x4080, 0x012e, 0x2071, 0xb514, 0x080c, -+ 0x5764, 0x0804, 0x560f, 0x012e, 0x0804, 0x560f, 0xa18c, 0x00ff, -+ 0xa186, 0x0017, 0x0130, 0xa186, 0x001e, 0x0118, 0xa18e, 0x001f, -+ 0x11c0, 0x684c, 0xd0cc, 0x01a8, 0x6850, 0xa084, 0x00ff, 0xa086, -+ 0x0001, 0x1178, 0x2009, 0x8021, 0x0804, 0x555f, 0x6844, 0xa086, -+ 0x0100, 0x1138, 0x6868, 0xa005, 0x1120, 0x2009, 0x8020, 0x0804, -+ 0x555f, 0x2071, 0xb514, 0x080c, 0x5776, 0x01c8, 0x2071, 0xb514, -+ 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, 0x1130, -+ 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0108, 0x710e, 0x7007, 0x0003, -+ 0x080c, 0x578f, 0x7050, 0xa086, 0x0100, 0x0904, 0x56cf, 0x0126, -+ 0x2091, 0x8000, 0x2071, 0xb514, 0x7008, 0xa086, 0x0001, 0x1180, -+ 0x0e04, 0x5628, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091, 0x4080, -+ 0x700b, 0x0000, 0x7004, 0xa086, 0x0006, 0x1110, 0x7007, 0x0001, -+ 0x012e, 0x0005, 0x2071, 0xb514, 0x080c, 0x5776, 0x0518, 0x2071, -+ 0xb635, 0x7084, 0x700a, 0x20a9, 0x0020, 0x2099, 0xb636, 0x20a1, -+ 0xb65d, 0x53a3, 0x7087, 0x0000, 0x2071, 0xb514, 0x2069, 0xb67d, -+ 0x706c, 0x6826, 0x7070, 0x682a, 0x7074, 0x682e, 0x7078, 0x6832, -+ 0x2d10, 0x080c, 0x163f, 0x7007, 0x0008, 0x2001, 0xffff, 0x2071, -+ 0xb6f3, 0x703a, 0x012e, 0x0804, 0x560f, 0x2069, 0xb67d, 0x6808, -+ 0xa08e, 0x0000, 0x0904, 0x56aa, 0xa08e, 0x0200, 0x0904, 0x56a8, -+ 0xa08e, 0x0100, 0x1904, 0x56aa, 0x0126, 0x2091, 0x8000, 0x0e04, -+ 0x56a6, 0x2069, 0x0000, 0x6818, 0xd084, 0x15c0, 0x702c, 0x7130, -+ 0x8108, 0xa102, 0x0230, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, -+ 0x0048, 0x706c, 0xa080, 0x0040, 0x706e, 0x1220, 0x7070, 0xa081, -+ 0x0000, 0x7072, 0x7132, 0x6936, 0x700b, 0x0000, 0x2001, 0xb65a, -+ 0x2004, 0xa005, 0x1190, 0x6934, 0x2069, 0xb635, 0x689c, 0x699e, -+ 0x2069, 0xb6f3, 0xa102, 0x1118, 0x683c, 0xa005, 0x1368, 0x2001, -+ 0xb65b, 0x200c, 0x810d, 0x693e, 0x0038, 0x2009, 0x8040, 0x6922, -+ 0x681b, 0x0001, 0x2091, 0x4080, 0x7007, 0x0001, 0x012e, 0x0010, -+ 0x7007, 0x0005, 0x0005, 0x2001, 0xb67f, 0x2004, 0xa08e, 0x0100, -+ 0x1128, 0x7007, 0x0001, 0x080c, 0x5764, 0x0005, 0xa08e, 0x0000, -+ 0x0de0, 0xa08e, 0x0200, 0x1dc8, 0x7007, 0x0005, 0x0005, 0x701c, -+ 0xa06d, 0x0158, 0x080c, 0x5776, 0x0140, 0x7007, 0x0003, 0x080c, -+ 0x578f, 0x7050, 0xa086, 0x0100, 0x0110, 0x0005, 0x0005, 0x7050, -+ 0xa09e, 0x0100, 0x1118, 0x7007, 0x0004, 0x0030, 0xa086, 0x0200, -+ 0x1110, 0x7007, 0x0005, 0x0005, 0x080c, 0x5732, 0x7006, 0x080c, -+ 0x5764, 0x0005, 0x0005, 0x00e6, 0x0156, 0x2071, 0xb635, 0x7184, -+ 0x81ff, 0x0500, 0xa006, 0x7086, 0xae80, 0x0003, 0x2071, 0x0000, -+ 0x21a8, 0x2014, 0x7226, 0x8000, 0x0f04, 0x5707, 0x2014, 0x722a, -+ 0x8000, 0x0f04, 0x5707, 0x2014, 0x722e, 0x8000, 0x0f04, 0x5707, -+ 0x2014, 0x723a, 0x8000, 0x0f04, 0x5707, 0x2014, 0x723e, 0xa180, -+ 0x8030, 0x7022, 0x015e, 0x00ee, 0x0005, 0x00e6, 0x0156, 0x2071, -+ 0xb635, 0x7184, 0x81ff, 0x01d8, 0xa006, 0x7086, 0xae80, 0x0003, -+ 0x2071, 0x0000, 0x21a8, 0x2014, 0x7226, 0x8000, 0x2014, 0x722a, -+ 0x8000, 0x0f04, 0x5729, 0x2014, 0x723a, 0x8000, 0x2014, 0x723e, -+ 0x0018, 0x2001, 0x8020, 0x0010, 0x2001, 0x8042, 0x7022, 0x015e, -+ 0x00ee, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, 0x0230, 0xa00e, -+ 0x7034, 0x706e, 0x7038, 0x7072, 0x0048, 0x706c, 0xa080, 0x0040, -+ 0x706e, 0x1220, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, -+ 0x8001, 0x700e, 0x1180, 0x0126, 0x2091, 0x8000, 0x0e04, 0x575e, -+ 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x700b, -+ 0x0000, 0x012e, 0x0005, 0x2001, 0x0007, 0x0005, 0x2001, 0x0006, -+ 0x700b, 0x0001, 0x012e, 0x0005, 0x701c, 0xa06d, 0x0170, 0x0126, -+ 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0xa005, -+ 0x1108, 0x701a, 0x012e, 0x080c, 0x160b, 0x0005, 0x2019, 0x000d, -+ 0x2304, 0x230c, 0xa10e, 0x0130, 0x2304, 0x230c, 0xa10e, 0x0110, -+ 0xa006, 0x0060, 0x732c, 0x8319, 0x7130, 0xa102, 0x1118, 0x2300, -+ 0xa005, 0x0020, 0x0210, 0xa302, 0x0008, 0x8002, 0x0005, 0x2d00, -+ 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000, 0x0126, 0x2091, -+ 0x8000, 0x2009, 0xb712, 0x2104, 0xc08d, 0x200a, 0x012e, 0x080c, -+ 0x1657, 0x0005, 0x708c, 0xa08a, 0x0029, 0x1220, 0xa082, 0x001d, -+ 0x0033, 0x0010, 0x080c, 0x1511, 0x6027, 0x1e00, 0x0005, 0x589d, -+ 0x5818, 0x5830, 0x586d, 0x588e, 0x58c8, 0x58da, 0x5830, 0x58b4, -+ 0x57bc, 0x57ea, 0x57bb, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, -+ 0xa005, 0x1180, 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069, -+ 0xb6c5, 0x2d04, 0x7002, 0x080c, 0x5b92, 0x6028, 0xa085, 0x0600, -+ 0x602a, 0x00b0, 0x708f, 0x0028, 0x2069, 0xb6c5, 0x2d04, 0x7002, -+ 0x6028, 0xa085, 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, -+ 0x2071, 0xb723, 0x080c, 0x1dcd, 0x005e, 0x004e, 0x003e, 0x00ee, -+ 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, 0x6804, 0xa005, 0x1180, -+ 0x6808, 0xa005, 0x1518, 0x708f, 0x0028, 0x2069, 0xb6c5, 0x2d04, -+ 0x7002, 0x080c, 0x5c1f, 0x6028, 0xa085, 0x0600, 0x602a, 0x00b0, -+ 0x708f, 0x0028, 0x2069, 0xb6c5, 0x2d04, 0x7002, 0x6028, 0xa085, -+ 0x0600, 0x602a, 0x00e6, 0x0036, 0x0046, 0x0056, 0x2071, 0xb723, -+ 0x080c, 0x1dcd, 0x005e, 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, -+ 0x6803, 0x0090, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x5945, 0xd1d4, -+ 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x708f, 0x0020, 0x080c, -+ 0x5945, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, -+ 0x6803, 0x0088, 0x6124, 0xd1cc, 0x1590, 0xd1dc, 0x1568, 0xd1e4, -+ 0x1540, 0xa184, 0x1e00, 0x1580, 0x60e3, 0x0001, 0x600c, 0xc0b4, -+ 0x600e, 0x080c, 0x5ac0, 0x080c, 0x2479, 0x0156, 0x6803, 0x0100, -+ 0x20a9, 0x0014, 0x6804, 0xd0dc, 0x1118, 0x1f04, 0x584a, 0x0048, -+ 0x20a9, 0x0014, 0x6803, 0x0080, 0x6804, 0xd0d4, 0x1130, 0x1f04, -+ 0x5854, 0x080c, 0x5ae1, 0x015e, 0x0078, 0x015e, 0x708f, 0x0028, -+ 0x0058, 0x708f, 0x001e, 0x0040, 0x708f, 0x001d, 0x0028, 0x708f, -+ 0x0020, 0x0010, 0x708f, 0x001f, 0x0005, 0x60e3, 0x0001, 0x600c, -+ 0xc0b4, 0x600e, 0x080c, 0x5ac0, 0x080c, 0x2479, 0x6803, 0x0080, -+ 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, 0xd1e4, 0x1130, 0xa184, -+ 0x1e00, 0x1158, 0x708f, 0x0028, 0x0040, 0x708f, 0x001e, 0x0028, -+ 0x708f, 0x001d, 0x0010, 0x708f, 0x001f, 0x0005, 0x6803, 0x00a0, -+ 0x6124, 0xd1dc, 0x1138, 0xd1e4, 0x0138, 0x080c, 0x1e18, 0x708f, -+ 0x001e, 0x0010, 0x708f, 0x001d, 0x0005, 0x080c, 0x59b7, 0x6124, -+ 0xd1dc, 0x1188, 0x080c, 0x5945, 0x0016, 0x080c, 0x1e18, 0x001e, -+ 0xd1d4, 0x1128, 0xd1e4, 0x0138, 0x708f, 0x001e, 0x0020, 0x708f, -+ 0x001f, 0x080c, 0x5945, 0x0005, 0x6803, 0x00a0, 0x6124, 0xd1d4, -+ 0x1160, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, 0x708f, -+ 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, 0x0021, 0x0005, -+ 0x080c, 0x59b7, 0x6124, 0xd1d4, 0x1150, 0xd1dc, 0x1128, 0xd1e4, -+ 0x0140, 0x708f, 0x001e, 0x0028, 0x708f, 0x001d, 0x0010, 0x708f, -+ 0x001f, 0x0005, 0x6803, 0x0090, 0x6124, 0xd1d4, 0x1178, 0xd1cc, -+ 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0158, 0x708f, 0x001e, 0x0040, -+ 0x708f, 0x001d, 0x0028, 0x708f, 0x0020, 0x0010, 0x708f, 0x001f, -+ 0x0005, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x0126, 0x2061, 0x0100, -+ 0x2069, 0x0140, 0x2071, 0xb400, 0x2091, 0x8000, 0x080c, 0x5a90, -+ 0x11e8, 0x2001, 0xb40c, 0x200c, 0xd1b4, 0x01c0, 0xc1b4, 0x2102, -+ 0x6027, 0x0200, 0xe000, 0xe000, 0x6024, 0xd0cc, 0x0158, 0x6803, -+ 0x00a0, 0x2001, 0xb69f, 0x2003, 0x0001, 0x2001, 0xb400, 0x2003, -+ 0x0001, 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x5aac, -+ 0x0150, 0x080c, 0x5aa2, 0x1138, 0x2001, 0x0001, 0x080c, 0x2789, -+ 0x080c, 0x5a67, 0x00a0, 0x080c, 0x59b4, 0x0178, 0x2001, 0x0001, -+ 0x080c, 0x2789, 0x708c, 0xa086, 0x001e, 0x0120, 0x708c, 0xa086, -+ 0x0022, 0x1118, 0x708f, 0x0025, 0x0010, 0x708f, 0x0021, 0x012e, -+ 0x00ee, 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x5956, -+ 0x080c, 0x6a21, 0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, -+ 0x5956, 0x080c, 0x6a18, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, -+ 0x0016, 0x080c, 0x7d24, 0x2071, 0xb400, 0x080c, 0x58f1, 0x001e, -+ 0x00fe, 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, -+ 0x00e6, 0x00f6, 0x0126, 0x080c, 0x7d24, 0x2061, 0x0100, 0x2069, -+ 0x0140, 0x2071, 0xb400, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, -+ 0x2011, 0x0003, 0x080c, 0x801f, 0x2011, 0x0002, 0x080c, 0x8029, -+ 0x080c, 0x7f03, 0x080c, 0x69d5, 0x0036, 0x2019, 0x0000, 0x080c, -+ 0x7f8e, 0x003e, 0x60e3, 0x0000, 0x080c, 0xb3b2, 0x080c, 0xb3cd, -+ 0x2001, 0xb400, 0x2003, 0x0004, 0x6027, 0x0008, 0x080c, 0x12d9, -+ 0x2001, 0x0001, 0x080c, 0x2789, 0x012e, 0x00fe, 0x00ee, 0x00de, -+ 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x2001, 0xb400, 0x2004, -+ 0xa086, 0x0004, 0x0140, 0x2001, 0xb69e, 0x2003, 0xaaaa, 0x2001, -+ 0xb69f, 0x2003, 0x0000, 0x0005, 0x6020, 0xd09c, 0x0005, 0x6800, -+ 0xa086, 0x00c0, 0x0160, 0x6803, 0x00c0, 0x0156, 0x20a9, 0x002d, -+ 0x1d04, 0x59c0, 0x2091, 0x6000, 0x1f04, 0x59c0, 0x015e, 0x0005, -+ 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, -+ 0xb400, 0x2001, 0xb69f, 0x200c, 0xa186, 0x0000, 0x0158, 0xa186, -+ 0x0001, 0x0158, 0xa186, 0x0002, 0x0158, 0xa186, 0x0003, 0x0158, -+ 0x0804, 0x5a55, 0x708f, 0x0022, 0x0040, 0x708f, 0x0021, 0x0028, -+ 0x708f, 0x0023, 0x0020, 0x708f, 0x0024, 0x6043, 0x0000, 0x60e3, -+ 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x2838, 0x0026, -+ 0x2011, 0x0003, 0x080c, 0x801f, 0x2011, 0x0002, 0x080c, 0x8029, -+ 0x080c, 0x7f03, 0x0036, 0x2019, 0x0000, 0x080c, 0x7f8e, 0x003e, -+ 0x002e, 0x7000, 0xa08e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, -+ 0x602b, 0x0020, 0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, -+ 0x6024, 0xd0ac, 0x0120, 0x012e, 0x015e, 0x0804, 0x5a63, 0x6800, -+ 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6904, 0xd1d4, 0x1130, 0x6803, -+ 0x0100, 0x1f04, 0x5a18, 0x080c, 0x5ae1, 0x012e, 0x015e, 0x080c, -+ 0x5aa2, 0x01a8, 0x6044, 0xa005, 0x0168, 0x6050, 0x0006, 0xa085, -+ 0x0020, 0x6052, 0x080c, 0x5ae1, 0xa006, 0x8001, 0x1df0, 0x000e, -+ 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, 0x080c, 0x5ae1, 0x0016, -+ 0x0026, 0x2009, 0x00c8, 0x2011, 0x5963, 0x080c, 0x69e7, 0x002e, -+ 0x001e, 0x2001, 0xb69f, 0x2003, 0x0004, 0x080c, 0x57a2, 0x080c, -+ 0x5aa2, 0x0148, 0x6804, 0xd0d4, 0x1130, 0xd0dc, 0x1100, 0x2001, -+ 0xb69f, 0x2003, 0x0000, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, -+ 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xb400, -+ 0x2001, 0xb69e, 0x2003, 0x0000, 0x2001, 0xb68f, 0x2003, 0x0000, -+ 0x708f, 0x0000, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001, 0x0000, -+ 0x080c, 0x2838, 0x6803, 0x0000, 0x6043, 0x0090, 0x6043, 0x0010, -+ 0x6027, 0xffff, 0x602b, 0x182f, 0x00ee, 0x00de, 0x00ce, 0x0005, -+ 0x0006, 0x2001, 0xb69e, 0x2004, 0xa086, 0xaaaa, 0x000e, 0x0005, -+ 0x0006, 0x2001, 0xb472, 0x2004, 0xa084, 0x0030, 0xa086, 0x0000, -+ 0x000e, 0x0005, 0x0006, 0x2001, 0xb472, 0x2004, 0xa084, 0x0030, -+ 0xa086, 0x0030, 0x000e, 0x0005, 0x0006, 0x2001, 0xb472, 0x2004, -+ 0xa084, 0x0030, 0xa086, 0x0010, 0x000e, 0x0005, 0x0006, 0x2001, -+ 0xb472, 0x2004, 0xa084, 0x0030, 0xa086, 0x0020, 0x000e, 0x0005, -+ 0x2001, 0xb40c, 0x2004, 0xd0a4, 0x0170, 0x080c, 0x2858, 0x0036, -+ 0x0016, 0x2009, 0x0000, 0x2019, 0x0028, 0x080c, 0x2c33, 0x001e, -+ 0x003e, 0xa006, 0x0009, 0x0005, 0x00e6, 0x2071, 0xb40c, 0x2e04, -+ 0x0118, 0xa085, 0x0010, 0x0010, 0xa084, 0xffef, 0x2072, 0x00ee, -+ 0x0005, 0x6050, 0x0006, 0x60f0, 0x0006, 0x60ec, 0x0006, 0x600c, -+ 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, 0x602f, 0x0100, 0x602f, -+ 0x0000, 0x602f, 0x0040, 0x602f, 0x0000, 0x000e, 0x602a, 0x000e, -+ 0x6006, 0x000e, 0x600e, 0x000e, 0x60ee, 0x000e, 0x60f2, 0x60e3, -+ 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x2838, 0x6800, -+ 0xa084, 0x00a0, 0xc0bd, 0x6802, 0x6803, 0x00a0, 0x000e, 0x6052, -+ 0x6050, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, -+ 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0xb400, 0x6020, -+ 0xa084, 0x0080, 0x0138, 0x2001, 0xb40c, 0x200c, 0xc1bd, 0x2102, -+ 0x0804, 0x5b8a, 0x2001, 0xb40c, 0x200c, 0xc1bc, 0x2102, 0x6028, -+ 0xa084, 0xe1ff, 0x602a, 0x6027, 0x0200, 0x6803, 0x0090, 0x20a9, -+ 0x0384, 0x6024, 0xd0cc, 0x1508, 0x1d04, 0x5b39, 0x2091, 0x6000, -+ 0x1f04, 0x5b39, 0x2011, 0x0003, 0x080c, 0x801f, 0x2011, 0x0002, -+ 0x080c, 0x8029, 0x080c, 0x7f03, 0x2019, 0x0000, 0x080c, 0x7f8e, -+ 0x6803, 0x00a0, 0x2001, 0xb69f, 0x2003, 0x0001, 0x2001, 0xb400, -+ 0x2003, 0x0001, 0xa085, 0x0001, 0x0468, 0x86ff, 0x1110, 0x080c, -+ 0x1e18, 0x60e3, 0x0000, 0x2001, 0xb68f, 0x2004, 0x080c, 0x2838, -+ 0x60e2, 0x080c, 0x2479, 0x6803, 0x0080, 0x20a9, 0x0384, 0x6027, -+ 0x1e00, 0x2009, 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0138, 0x1d04, -+ 0x5b6f, 0x2091, 0x6000, 0x1f04, 0x5b6f, 0x0820, 0x6028, 0xa085, -+ 0x1e00, 0x602a, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, -+ 0x6886, 0xa006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, -+ 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, -+ 0x00e6, 0x2061, 0x0100, 0x2071, 0xb400, 0x2069, 0x0140, 0x6020, -+ 0xa084, 0x00c0, 0x0120, 0x6884, 0xa005, 0x1904, 0x5be6, 0x6803, -+ 0x0088, 0x60e3, 0x0000, 0x6887, 0x0000, 0x2001, 0x0000, 0x080c, -+ 0x2838, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118, 0x6808, 0xa005, -+ 0x01c0, 0x6028, 0xa084, 0xfbff, 0x602a, 0x6027, 0x0400, 0x2069, -+ 0xb6c5, 0x7000, 0x206a, 0x708f, 0x0026, 0x7003, 0x0001, 0x20a9, -+ 0x0002, 0x1d04, 0x5bc9, 0x2091, 0x6000, 0x1f04, 0x5bc9, 0x0804, -+ 0x5c17, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, 0x1e00, 0x2009, -+ 0x1e00, 0xe000, 0x6024, 0xa10c, 0x0520, 0xa084, 0x1a00, 0x1508, -+ 0x1d04, 0x5bd5, 0x2091, 0x6000, 0x1f04, 0x5bd5, 0x2011, 0x0003, -+ 0x080c, 0x801f, 0x2011, 0x0002, 0x080c, 0x8029, 0x080c, 0x7f03, -+ 0x2019, 0x0000, 0x080c, 0x7f8e, 0x6803, 0x00a0, 0x2001, 0xb69f, -+ 0x2003, 0x0001, 0x2001, 0xb400, 0x2003, 0x0001, 0xa085, 0x0001, -+ 0x00b0, 0x080c, 0x2479, 0x6803, 0x0080, 0x2069, 0x0140, 0x60e3, -+ 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, -+ 0x2001, 0xb68f, 0x2004, 0x080c, 0x2838, 0x60e2, 0xa006, 0x00ee, -+ 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, -+ 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, -+ 0x2071, 0xb400, 0x6020, 0xa084, 0x00c0, 0x01e0, 0x2011, 0x0003, -+ 0x080c, 0x801f, 0x2011, 0x0002, 0x080c, 0x8029, 0x080c, 0x7f03, -+ 0x2019, 0x0000, 0x080c, 0x7f8e, 0x2069, 0x0140, 0x6803, 0x00a0, -+ 0x2001, 0xb69f, 0x2003, 0x0001, 0x2001, 0xb400, 0x2003, 0x0001, -+ 0x0804, 0x5cbc, 0x2001, 0xb40c, 0x200c, 0xd1b4, 0x1160, 0xc1b5, -+ 0x2102, 0x080c, 0x594b, 0x2069, 0x0140, 0x080c, 0x2479, 0x6803, -+ 0x0080, 0x60e3, 0x0000, 0x2069, 0x0200, 0x6804, 0xa005, 0x1118, -+ 0x6808, 0xa005, 0x01c0, 0x6028, 0xa084, 0xfdff, 0x602a, 0x6027, -+ 0x0200, 0x2069, 0xb6c5, 0x7000, 0x206a, 0x708f, 0x0027, 0x7003, -+ 0x0001, 0x20a9, 0x0002, 0x1d04, 0x5c73, 0x2091, 0x6000, 0x1f04, -+ 0x5c73, 0x0804, 0x5cbc, 0x6027, 0x1e00, 0x2009, 0x1e00, 0xe000, -+ 0x6024, 0xa10c, 0x01c8, 0xa084, 0x1c00, 0x11b0, 0x1d04, 0x5c7b, -+ 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x080c, 0x68be, 0x00ee, -+ 0x00de, 0x00ce, 0x001e, 0x000e, 0x00e6, 0x2071, 0xb6f3, 0x7018, -+ 0x00ee, 0xa005, 0x1d00, 0x0500, 0x0026, 0x2011, 0x5963, 0x080c, -+ 0x6961, 0x2011, 0x5956, 0x080c, 0x6a21, 0x002e, 0x2069, 0x0140, -+ 0x60e3, 0x0000, 0x70a4, 0xa005, 0x1118, 0x6887, 0x0001, 0x0008, -+ 0x6886, 0x2001, 0xb68f, 0x2004, 0x080c, 0x2838, 0x60e2, 0x2001, -+ 0xb40c, 0x200c, 0xc1b4, 0x2102, 0x00ee, 0x00de, 0x00ce, 0x003e, -+ 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, -+ 0x0046, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0xb400, 0x7130, -+ 0xd184, 0x1180, 0x2011, 0xb453, 0x2214, 0xd2ec, 0x0138, 0xc18d, -+ 0x7132, 0x2011, 0xb453, 0x2214, 0xd2ac, 0x1120, 0x7030, 0xd08c, -+ 0x0904, 0x5d29, 0x7130, 0xc185, 0x7132, 0x2011, 0xb453, 0x220c, -+ 0xd1a4, 0x0530, 0x0016, 0x2019, 0x000e, 0x080c, 0xafe8, 0x0156, -+ 0x20a9, 0x007f, 0x2009, 0x0000, 0xa186, 0x007e, 0x01a0, 0xa186, -+ 0x0080, 0x0188, 0x080c, 0x4f6a, 0x1170, 0x8127, 0xa006, 0x0016, -+ 0x2009, 0x000e, 0x080c, 0xb06b, 0x2009, 0x0001, 0x2011, 0x0100, -+ 0x080c, 0x6adf, 0x001e, 0x8108, 0x1f04, 0x5cf4, 0x015e, 0x001e, -+ 0xd1ac, 0x1148, 0x0016, 0x2009, 0x0000, 0x2019, 0x0004, 0x080c, -+ 0x2c33, 0x001e, 0x0070, 0x0156, 0x20a9, 0x007f, 0x2009, 0x0000, -+ 0x080c, 0x4f6a, 0x1110, 0x080c, 0x4bc5, 0x8108, 0x1f04, 0x5d20, -+ 0x015e, 0x080c, 0x1e18, 0x2011, 0x0003, 0x080c, 0x801f, 0x2011, -+ 0x0002, 0x080c, 0x8029, 0x080c, 0x7f03, 0x0036, 0x2019, 0x0000, -+ 0x080c, 0x7f8e, 0x003e, 0x60e3, 0x0000, 0x2001, 0xb400, 0x2003, -+ 0x0001, 0x080c, 0x59c8, 0x00ee, 0x00ce, 0x004e, 0x003e, 0x002e, -+ 0x001e, 0x015e, 0x0005, 0x2071, 0xb4e2, 0x7003, 0x0000, 0x7007, -+ 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000, 0x7053, -+ 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000, 0x708b, -+ 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x0005, 0x00e6, 0x2071, -+ 0xb4e2, 0x6848, 0xa005, 0x1130, 0x7028, 0xc085, 0x702a, 0xa085, -+ 0x0001, 0x0428, 0x6a50, 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, -+ 0x707a, 0x685c, 0x7042, 0x707e, 0x6848, 0x702e, 0x6840, 0x7032, -+ 0x2009, 0x000c, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, -+ 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, 0x7376, 0x7028, -+ 0xc084, 0x702a, 0x7007, 0x0001, 0x700f, 0x0000, 0xa006, 0x00ee, -+ 0x0005, 0x2b78, 0x2071, 0xb4e2, 0x7004, 0x0043, 0x700c, 0x0002, -+ 0x5da5, 0x5d9c, 0x5d9c, 0x5d9c, 0x5d9c, 0x0005, 0x5dfb, 0x5dfc, -+ 0x5e2e, 0x5e2f, 0x5df9, 0x5e7d, 0x5e82, 0x5eb3, 0x5eb4, 0x5ecf, -+ 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4, 0x5f8a, 0x5fb1, 0x700c, -+ 0x0002, 0x5dbe, 0x5df9, 0x5df9, 0x5dfa, 0x5dfa, 0x7830, 0x7930, -+ 0xa106, 0x0120, 0x7830, 0x7930, 0xa106, 0x1510, 0x7030, 0xa10a, -+ 0x01f8, 0x1210, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x12d0, 0x080c, -+ 0x15db, 0x01b0, 0x2d00, 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, -+ 0x7057, 0x0000, 0x0126, 0x0006, 0x2091, 0x8000, 0x2009, 0xb712, -+ 0x2104, 0xc085, 0x200a, 0x000e, 0x700e, 0x012e, 0x080c, 0x1657, -+ 0x0005, 0x080c, 0x15db, 0x0de0, 0x2d00, 0x705a, 0x080c, 0x15db, -+ 0x1108, 0x0c10, 0x2d00, 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, -+ 0x08f8, 0x0005, 0x0005, 0x0005, 0x700c, 0x0002, 0x5e03, 0x5e06, -+ 0x5e14, 0x5e2d, 0x5e2d, 0x080c, 0x5db7, 0x0005, 0x0126, 0x8001, -+ 0x700e, 0x7058, 0x0006, 0x080c, 0x6304, 0x0120, 0x2091, 0x8000, -+ 0x080c, 0x5db7, 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c, -+ 0x6304, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, -+ 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x003a, 0x1218, 0x00db, -+ 0x012e, 0x0005, 0x012e, 0x080c, 0x5ed5, 0x0005, 0x0005, 0x0005, -+ 0x00e6, 0x2071, 0xb4e2, 0x700c, 0x0002, 0x5e3a, 0x5e3a, 0x5e3a, -+ 0x5e3c, 0x5e3f, 0x00ee, 0x0005, 0x700f, 0x0001, 0x0010, 0x700f, -+ 0x0002, 0x00ee, 0x0005, 0x5ed5, 0x5ed5, 0x5ef1, 0x5ed5, 0x606e, -+ 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x5ef1, 0x60b0, 0x60f3, -+ 0x613c, 0x6150, 0x5ed5, 0x5ed5, 0x5f0d, 0x5ef1, 0x5ed5, 0x5ed5, -+ 0x5f67, 0x61fc, 0x6217, 0x5ed5, 0x5f0d, 0x5ed5, 0x5ed5, 0x5ed5, -+ 0x5ed5, 0x5f5d, 0x6217, 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, -+ 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x5f21, 0x5ed5, 0x5ed5, 0x5ed5, -+ 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x6322, 0x5ed5, -+ 0x5ed5, 0x5ed5, 0x5ed5, 0x5ed5, 0x5f36, 0x7020, 0x2068, 0x080c, -+ 0x160b, 0x0005, 0x700c, 0x0002, 0x5e89, 0x5e8c, 0x5e9a, 0x5eb2, -+ 0x5eb2, 0x080c, 0x5db7, 0x0005, 0x0126, 0x8001, 0x700e, 0x7058, -+ 0x0006, 0x080c, 0x6304, 0x0120, 0x2091, 0x8000, 0x080c, 0x5db7, -+ 0x00de, 0x0048, 0x0126, 0x8001, 0x700e, 0x080c, 0x6304, 0x7058, -+ 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, -+ 0xa084, 0x00ff, 0xa08a, 0x001a, 0x1218, 0x003b, 0x012e, 0x0005, -+ 0x012e, 0x0419, 0x0005, 0x0005, 0x0005, 0x5ed5, 0x5ef1, 0x605a, -+ 0x5ed5, 0x5ef1, 0x5ed5, 0x5ef1, 0x5ef1, 0x5ed5, 0x5ef1, 0x605a, -+ 0x5ef1, 0x5ef1, 0x5ef1, 0x5ef1, 0x5ef1, 0x5ed5, 0x5ef1, 0x605a, -+ 0x5ed5, 0x5ed5, 0x5ef1, 0x5ed5, 0x5ed5, 0x5ed5, 0x5ef1, 0x0005, -+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x7007, 0x0001, 0x6838, -+ 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, -+ 0x53c9, 0x012e, 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, -+ 0xc0e5, 0x683a, 0x0126, 0x2091, 0x8000, 0x080c, 0x53c9, 0x012e, -+ 0x0005, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0ed, 0x683a, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x53c9, 0x012e, 0x0005, 0x7007, -+ 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, 0x0126, 0x2091, -+ 0x8000, 0x080c, 0x53c9, 0x012e, 0x0005, 0x6834, 0x8007, 0xa084, -+ 0x00ff, 0x0988, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, 0x601a, -+ 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x601a, -+ 0x0005, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0904, 0x5ee3, 0x8001, -+ 0x1120, 0x7007, 0x0001, 0x0804, 0x6037, 0x7007, 0x0006, 0x7012, -+ 0x2d00, 0x7016, 0x701a, 0x704b, 0x6037, 0x0005, 0x6834, 0x8007, -+ 0xa084, 0x00ff, 0xa086, 0x0001, 0x1904, 0x5ee3, 0x7007, 0x0001, -+ 0x2009, 0xb431, 0x210c, 0x81ff, 0x11a8, 0x6838, 0xa084, 0x00ff, -+ 0x683a, 0x6853, 0x0000, 0x080c, 0x4d3c, 0x1108, 0x0005, 0x0126, -+ 0x2091, 0x8000, 0x6837, 0x0139, 0x684a, 0x6952, 0x080c, 0x53c9, -+ 0x012e, 0x0ca0, 0x2001, 0x0028, 0x0c90, 0x684c, 0xa084, 0x00c0, -+ 0xa086, 0x00c0, 0x1120, 0x7007, 0x0001, 0x0804, 0x622f, 0x2d00, -+ 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, -+ 0xb50d, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x1a04, 0x5eff, -+ 0x6a84, 0xa28a, 0x0002, 0x1a04, 0x5eff, 0x82ff, 0x1138, 0x6888, -+ 0x698c, 0xa105, 0x0118, 0x2001, 0x5fed, 0x0018, 0xa280, 0x5fe3, -+ 0x2005, 0x70c6, 0x7010, 0xa015, 0x0904, 0x5fcf, 0x080c, 0x15db, -+ 0x1118, 0x7007, 0x000f, 0x0005, 0x2d00, 0x7022, 0x70c4, 0x2060, -+ 0x2c05, 0x6836, 0xe004, 0xad00, 0x7096, 0xe008, 0xa20a, 0x1210, -+ 0xa00e, 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0xa296, 0x0004, -+ 0x0108, 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022, 0x080c, -+ 0x163f, 0x7090, 0xa08e, 0x0100, 0x0170, 0xa086, 0x0200, 0x0118, -+ 0x7007, 0x0010, 0x0005, 0x7020, 0x2068, 0x080c, 0x160b, 0x7014, -+ 0x2068, 0x0804, 0x5eff, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, -+ 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x5f8a, 0x7014, -+ 0x2068, 0x7007, 0x0001, 0x6884, 0xa005, 0x1128, 0x6888, 0x698c, -+ 0xa105, 0x0108, 0x00b1, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, -+ 0x0904, 0x622f, 0x04b8, 0x5fe5, 0x5fe9, 0x0002, 0x0011, 0x0007, -+ 0x0004, 0x000a, 0x000f, 0x0005, 0x0006, 0x000a, 0x0011, 0x0005, -+ 0x0004, 0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6f88, 0x6e8c, -+ 0x6804, 0x2060, 0xacf0, 0x0021, 0xacf8, 0x0027, 0x2009, 0x0005, -+ 0x700c, 0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, 0x7802, -+ 0x7e0e, 0x7f0a, 0x8109, 0x0128, 0xaef2, 0x0004, 0xaffa, 0x0006, -+ 0x0c78, 0x6004, 0xa065, 0x1d30, 0x006e, 0x007e, 0x00ce, 0x00ee, -+ 0x00fe, 0x0005, 0x2009, 0xb431, 0x210c, 0x81ff, 0x1198, 0x6838, -+ 0xa084, 0x00ff, 0x683a, 0x080c, 0x4c1e, 0x1108, 0x0005, 0x080c, -+ 0x549c, 0x0126, 0x2091, 0x8000, 0x080c, 0x9e5d, 0x080c, 0x53c9, -+ 0x012e, 0x0ca0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c80, 0x2009, -+ 0xb431, 0x210c, 0x81ff, 0x11b0, 0x6858, 0xa005, 0x01c0, 0x6838, -+ 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x080c, 0x4ce0, 0x1108, -+ 0x0005, 0x0126, 0x2091, 0x8000, 0x684a, 0x6952, 0x080c, 0x53c9, -+ 0x012e, 0x0cb0, 0x2001, 0x0028, 0x2009, 0x0000, 0x0c90, 0x2001, -+ 0x0000, 0x0c78, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, -+ 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0006, 0x0030, 0x7014, -+ 0x2068, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, 0x0001, -+ 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9, -+ 0x0001, 0xa096, 0x0001, 0x01b0, 0x2009, 0x0000, 0x20a9, 0x00ff, -+ 0xa096, 0x0002, 0x0178, 0xa005, 0x11f0, 0x6944, 0x810f, 0xa18c, -+ 0x00ff, 0x080c, 0x4f6a, 0x11b8, 0x0066, 0x6e50, 0x080c, 0x5069, -+ 0x006e, 0x0088, 0x0046, 0x2011, 0xb40c, 0x2224, 0xc484, 0x2412, -+ 0x004e, 0x00c6, 0x080c, 0x4f6a, 0x1110, 0x080c, 0x51ca, 0x8108, -+ 0x1f04, 0x609a, 0x00ce, 0x684c, 0xd084, 0x1118, 0x080c, 0x160b, -+ 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x53c9, 0x012e, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0xb453, 0x2004, -+ 0xd0a4, 0x0580, 0x2061, 0xb774, 0x6100, 0xd184, 0x0178, 0x6858, -+ 0xa084, 0x00ff, 0x1550, 0x6000, 0xd084, 0x0520, 0x6004, 0xa005, -+ 0x1538, 0x6003, 0x0000, 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, -+ 0x6860, 0xa005, 0x1110, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858, -+ 0xa084, 0x00ff, 0x0178, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff, -+ 0x0148, 0x600a, 0x6858, 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, -+ 0x0804, 0x62f3, 0x012e, 0x0804, 0x62ed, 0x012e, 0x0804, 0x62e7, -+ 0x012e, 0x0804, 0x62ea, 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, -+ 0x2001, 0xb453, 0x2004, 0xd0a4, 0x05e0, 0x2061, 0xb774, 0x6000, -+ 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, 0x1530, 0x6c48, 0xa484, -+ 0x0003, 0x0170, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x1120, 0x2100, -+ 0xa210, 0x0620, 0x0028, 0x8001, 0x1508, 0x2100, 0xa212, 0x02f0, -+ 0xa484, 0x000c, 0x0188, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, -+ 0x0004, 0x1120, 0x2100, 0xa318, 0x0288, 0x0030, 0xa082, 0x0004, -+ 0x1168, 0x2100, 0xa31a, 0x0250, 0x6860, 0xa005, 0x0110, 0x8000, -+ 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, 0x62f3, 0x012e, 0x0804, -+ 0x62f0, 0x012e, 0x0804, 0x62ed, 0x0126, 0x2091, 0x8000, 0x7007, -+ 0x0001, 0x2061, 0xb774, 0x6300, 0xd38c, 0x1120, 0x6308, 0x8318, -+ 0x0220, 0x630a, 0x012e, 0x0804, 0x6301, 0x012e, 0x0804, 0x62f0, -+ 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, -+ 0x0148, 0x00c6, 0x2061, 0xb774, 0x6000, 0xa084, 0xfcff, 0x6002, -+ 0x00ce, 0x0448, 0x6858, 0xa005, 0x05d0, 0x685c, 0xa065, 0x0598, -+ 0x2001, 0xb431, 0x2004, 0xa005, 0x0118, 0x080c, 0x9dae, 0x0068, -+ 0x6013, 0x0400, 0x6057, 0x0000, 0x694c, 0xd1a4, 0x0110, 0x6950, -+ 0x6156, 0x2009, 0x0041, 0x080c, 0x85ef, 0x6958, 0xa18c, 0xff00, -+ 0xa186, 0x2000, 0x1140, 0x0026, 0x2009, 0x0000, 0x2011, 0xfdff, -+ 0x080c, 0x6adf, 0x002e, 0x684c, 0xd0c4, 0x0148, 0x2061, 0xb774, -+ 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, 0x600a, 0x00ce, -+ 0x012e, 0x0804, 0x62f3, 0x00ce, 0x012e, 0x0804, 0x62ed, 0x6954, -+ 0xa186, 0x002e, 0x0d40, 0xa186, 0x002d, 0x0d28, 0xa186, 0x0045, -+ 0x0528, 0xa186, 0x002a, 0x1130, 0x2001, 0xb40c, 0x200c, 0xc194, -+ 0x2102, 0x08c8, 0xa186, 0x0020, 0x0170, 0xa186, 0x0029, 0x1d18, -+ 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4f6a, 0x1960, 0x6000, -+ 0xc0e4, 0x6002, 0x0840, 0x685c, 0xa065, 0x09a8, 0x6007, 0x0024, -+ 0x2001, 0xb6b6, 0x2004, 0x6016, 0x0804, 0x618b, 0x685c, 0xa065, -+ 0x0950, 0x00e6, 0x6860, 0xa075, 0x2001, 0xb431, 0x2004, 0xa005, -+ 0x0150, 0x080c, 0x9dae, 0x8eff, 0x0118, 0x2e60, 0x080c, 0x9dae, -+ 0x00ee, 0x0804, 0x618b, 0x6020, 0xc0dc, 0xc0d5, 0x6022, 0x2e60, -+ 0x6007, 0x003a, 0x6870, 0xa005, 0x0130, 0x6007, 0x003b, 0x6874, -+ 0x602a, 0x6878, 0x6012, 0x6003, 0x0001, 0x080c, 0x6c52, 0x080c, -+ 0x7134, 0x00ee, 0x0804, 0x618b, 0x2061, 0xb774, 0x6000, 0xd084, -+ 0x0190, 0xd08c, 0x1904, 0x6301, 0x0126, 0x2091, 0x8000, 0x6204, -+ 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x6301, 0x012e, 0x6853, -+ 0x0016, 0x0804, 0x62fa, 0x6853, 0x0007, 0x0804, 0x62fa, 0x6834, -+ 0x8007, 0xa084, 0x00ff, 0x1118, 0x080c, 0x5ee3, 0x0078, 0x2030, -+ 0x8001, 0x1120, 0x7007, 0x0001, 0x0051, 0x0040, 0x7007, 0x0006, -+ 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x622f, 0x0005, 0x00e6, -+ 0x0126, 0x2091, 0x8000, 0xa03e, 0x2009, 0xb431, 0x210c, 0x81ff, -+ 0x1904, 0x62ad, 0x2009, 0xb40c, 0x210c, 0xd194, 0x1904, 0x62d7, -+ 0x6848, 0x2070, 0xae82, 0xbc00, 0x0a04, 0x62a1, 0x2001, 0xb417, -+ 0x2004, 0xae02, 0x1a04, 0x62a1, 0x711c, 0xa186, 0x0006, 0x1904, -+ 0x6290, 0x7018, 0xa005, 0x0904, 0x62ad, 0x2004, 0xd0e4, 0x1904, -+ 0x62d2, 0x2061, 0xb774, 0x6100, 0xa184, 0x0301, 0xa086, 0x0001, -+ 0x1550, 0x7020, 0xd0dc, 0x1904, 0x62da, 0x6853, 0x0000, 0x6803, -+ 0x0000, 0x2d08, 0x7010, 0xa005, 0x1158, 0x7112, 0x684c, 0xd0f4, -+ 0x1904, 0x62dd, 0x2e60, 0x080c, 0x6a3b, 0x012e, 0x00ee, 0x0005, -+ 0x2068, 0x6800, 0xa005, 0x1de0, 0x6902, 0x2168, 0x684c, 0xd0f4, -+ 0x1904, 0x62dd, 0x012e, 0x00ee, 0x0005, 0x012e, 0x00ee, 0x6853, -+ 0x0006, 0x0804, 0x62fa, 0xd184, 0x0dc0, 0xd1c4, 0x11a8, 0x00b8, -+ 0x6944, 0xa18c, 0xff00, 0x810f, 0x080c, 0x4f6a, 0x15d8, 0x6000, -+ 0xd0e4, 0x15c0, 0x711c, 0xa186, 0x0007, 0x1118, 0x6853, 0x0002, -+ 0x0498, 0x6853, 0x0008, 0x0480, 0x6853, 0x000e, 0x0468, 0x6853, -+ 0x0017, 0x0450, 0x6853, 0x0035, 0x0438, 0x2001, 0xb472, 0x2004, -+ 0xd0fc, 0x01e8, 0x6848, 0x2070, 0xae82, 0xbc00, 0x02c0, 0x605c, -+ 0xae02, 0x12a8, 0x711c, 0xa186, 0x0006, 0x1188, 0x7018, 0xa005, -+ 0x0170, 0x2004, 0xd0bc, 0x0158, 0x2039, 0x0001, 0x7000, 0xa086, -+ 0x0007, 0x1904, 0x623a, 0x7003, 0x0002, 0x0804, 0x623a, 0x6853, -+ 0x0028, 0x0010, 0x6853, 0x0029, 0x012e, 0x00ee, 0x0418, 0x6853, -+ 0x002a, 0x0cd0, 0x6853, 0x0045, 0x0cb8, 0x2e60, 0x2019, 0x0002, -+ 0x6017, 0x0014, 0x080c, 0xac63, 0x012e, 0x00ee, 0x0005, 0x2009, -+ 0x003e, 0x0058, 0x2009, 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, -+ 0x2009, 0x0016, 0x0010, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, -+ 0xa105, 0x6856, 0x0126, 0x2091, 0x8000, 0x080c, 0x53c9, 0x012e, -+ 0x0005, 0x080c, 0x160b, 0x0005, 0x702c, 0x7130, 0x8108, 0xa102, -+ 0x0230, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0058, 0x7070, -+ 0xa080, 0x0040, 0x7072, 0x1230, 0x7074, 0xa081, 0x0000, 0x7076, -+ 0xa085, 0x0001, 0x7932, 0x7132, 0x0005, 0x00d6, 0x080c, 0x6a32, -+ 0x00de, 0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x7007, -+ 0x0001, 0x6a44, 0xa282, 0x0004, 0x1a04, 0x636d, 0xd284, 0x0170, -+ 0x6a4c, 0xa290, 0xb535, 0x2204, 0xa065, 0x6004, 0x05e0, 0x8007, -+ 0xa084, 0x00ff, 0xa084, 0x0006, 0x1108, 0x04a8, 0x2c10, 0x080c, -+ 0x856a, 0x1118, 0x080c, 0x9e67, 0x05a0, 0x621a, 0x6844, 0x0002, -+ 0x634c, 0x6351, 0x6354, 0x635a, 0x2019, 0x0002, 0x080c, 0xafe8, -+ 0x0060, 0x080c, 0xaf7f, 0x0048, 0x2019, 0x0002, 0x6950, 0x080c, -+ 0xaf9a, 0x0018, 0x6950, 0x080c, 0xaf7f, 0x080c, 0x85c0, 0x6857, -+ 0x0000, 0x0126, 0x2091, 0x8000, 0x080c, 0x53c9, 0x012e, 0x001e, -+ 0x002e, 0x003e, 0x00ce, 0x00de, 0x0005, 0x6857, 0x0006, 0x0c88, -+ 0x6857, 0x0002, 0x0c70, 0x6857, 0x0005, 0x0c58, 0x6857, 0x0004, -+ 0x0c40, 0x6857, 0x0007, 0x0c28, 0x00d6, 0x2011, 0x0004, 0x2204, -+ 0xa085, 0x8002, 0x2012, 0x00de, 0x0005, 0x20e1, 0x0002, 0x3d08, -+ 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0118, 0xa086, 0x1000, -+ 0x1570, 0x20e1, 0x0000, 0x3d00, 0xa094, 0xff00, 0x8217, 0xa084, -+ 0xf000, 0xa086, 0x3000, 0x1160, 0xa184, 0xff00, 0x8007, 0xa086, -+ 0x0008, 0x11e8, 0x080c, 0x2d83, 0x11d0, 0x080c, 0x65c4, 0x0098, -+ 0x20e1, 0x0004, 0x3d60, 0xd1bc, 0x1108, 0x3e60, 0xac84, 0x0007, -+ 0x1170, 0xac82, 0xbc00, 0x0258, 0x685c, 0xac02, 0x1240, 0x2009, -+ 0x0047, 0x080c, 0x85ef, 0x7a1c, 0xd284, 0x1938, 0x0005, 0xa016, -+ 0x080c, 0x1856, 0x0cc0, 0x0cd8, 0x781c, 0xd08c, 0x0500, 0x0156, -+ 0x0136, 0x0146, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0076, -+ 0x1538, 0xa484, 0x7000, 0xa086, 0x1000, 0x11a8, 0x080c, 0x643f, -+ 0x01f8, 0x20e1, 0x3000, 0x7828, 0x7828, 0x080c, 0x645b, 0x014e, -+ 0x013e, 0x015e, 0x2009, 0xb6e8, 0x2104, 0xa005, 0x1108, 0x0005, -+ 0x080c, 0x7134, 0x0ce0, 0xa484, 0x7000, 0x1548, 0x080c, 0x643f, -+ 0x01d8, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, 0x0d10, 0x00a0, -+ 0xd5a4, 0x0178, 0x0056, 0x0046, 0x080c, 0x1e3f, 0x080c, 0x2479, -+ 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, 0x004e, 0x005e, -+ 0x0048, 0x04a9, 0x6887, 0x0000, 0x080c, 0xb362, 0x20e1, 0x3000, -+ 0x7828, 0x7828, 0x00b9, 0x014e, 0x013e, 0x015e, 0x0880, 0x0439, -+ 0x1130, 0x7000, 0xa084, 0xff00, 0xa086, 0x8100, 0x1d68, 0x080c, -+ 0xb362, 0x20e1, 0x3000, 0x7828, 0x7828, 0x0056, 0x080c, 0x6839, -+ 0x005e, 0x0c40, 0x2001, 0xb40e, 0x2004, 0xd08c, 0x0178, 0x2001, -+ 0xb400, 0x2004, 0xa086, 0x0003, 0x1148, 0x0026, 0x0036, 0x2011, -+ 0x8048, 0x2518, 0x080c, 0x3e8a, 0x003e, 0x002e, 0x0005, 0xa484, -+ 0x01ff, 0x6886, 0xa005, 0x0160, 0xa080, 0x001f, 0xa084, 0x03f8, -+ 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x0005, -+ 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, -+ 0xa085, 0x0001, 0x0ca0, 0x7000, 0xa084, 0xff00, 0xa08c, 0xf000, -+ 0x8007, 0xa196, 0x0000, 0x1118, 0x0804, 0x66c9, 0x0005, 0xa196, -+ 0x2000, 0x1148, 0x6900, 0xa18e, 0x0001, 0x1118, 0x080c, 0x4449, -+ 0x0ca8, 0x0039, 0x0c98, 0xa196, 0x8000, 0x1d80, 0x080c, 0x6779, -+ 0x0c68, 0x00c6, 0x6a84, 0x82ff, 0x0904, 0x65be, 0x7110, 0xa18c, -+ 0xff00, 0x810f, 0xa196, 0x0001, 0x0120, 0xa196, 0x0023, 0x1904, -+ 0x65be, 0xa08e, 0x0023, 0x1570, 0x080c, 0x6814, 0x0904, 0x65be, -+ 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1150, 0x7034, 0xa005, -+ 0x1904, 0x65be, 0x2009, 0x0015, 0x080c, 0x85ef, 0x0804, 0x65be, -+ 0xa08e, 0x0214, 0x0118, 0xa08e, 0x0210, 0x1130, 0x2009, 0x0015, -+ 0x080c, 0x85ef, 0x0804, 0x65be, 0xa08e, 0x0100, 0x1904, 0x65be, -+ 0x7034, 0xa005, 0x1904, 0x65be, 0x2009, 0x0016, 0x080c, 0x85ef, -+ 0x0804, 0x65be, 0xa08e, 0x0022, 0x1904, 0x65be, 0x7030, 0xa08e, -+ 0x0300, 0x1580, 0x68d4, 0xd0a4, 0x0528, 0xc0b5, 0x68d6, 0x7100, -+ 0xa18c, 0x00ff, 0x6972, 0x7004, 0x6876, 0x00f6, 0x2079, 0x0100, -+ 0x79e6, 0x78ea, 0x0006, 0xa084, 0x00ff, 0x0016, 0x2008, 0x080c, -+ 0x280d, 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe, 0x080c, 0x27e3, -+ 0x6952, 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086, 0x2071, 0xb400, -+ 0x70a6, 0x00ee, 0x7034, 0xa005, 0x1904, 0x65be, 0x2009, 0x0017, -+ 0x0804, 0x6584, 0xa08e, 0x0400, 0x1158, 0x7034, 0xa005, 0x1904, -+ 0x65be, 0x68d4, 0xc0a5, 0x68d6, 0x2009, 0x0030, 0x0804, 0x6584, -+ 0xa08e, 0x0500, 0x1140, 0x7034, 0xa005, 0x1904, 0x65be, 0x2009, -+ 0x0018, 0x0804, 0x6584, 0xa08e, 0x2010, 0x1120, 0x2009, 0x0019, -+ 0x0804, 0x6584, 0xa08e, 0x2110, 0x1120, 0x2009, 0x001a, 0x0804, -+ 0x6584, 0xa08e, 0x5200, 0x1140, 0x7034, 0xa005, 0x1904, 0x65be, -+ 0x2009, 0x001b, 0x0804, 0x6584, 0xa08e, 0x5000, 0x1140, 0x7034, -+ 0xa005, 0x1904, 0x65be, 0x2009, 0x001c, 0x0804, 0x6584, 0xa08e, -+ 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, 0x6584, 0xa08e, 0x1200, -+ 0x1140, 0x7034, 0xa005, 0x1904, 0x65be, 0x2009, 0x0024, 0x0804, -+ 0x6584, 0xa08c, 0xff00, 0xa18e, 0x2400, 0x1118, 0x2009, 0x002d, -+ 0x04d8, 0xa08c, 0xff00, 0xa18e, 0x5300, 0x1118, 0x2009, 0x002a, -+ 0x0498, 0xa08e, 0x0f00, 0x1118, 0x2009, 0x0020, 0x0468, 0xa08e, -+ 0x5300, 0x1108, 0x00d8, 0xa08e, 0x6104, 0x11c0, 0x2011, 0xba8d, -+ 0x8208, 0x2204, 0xa082, 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, -+ 0x8015, 0x211c, 0x8108, 0x0046, 0x2124, 0x080c, 0x3e8a, 0x004e, -+ 0x8108, 0x1f04, 0x6567, 0x2009, 0x0023, 0x0070, 0xa08e, 0x6000, -+ 0x1118, 0x2009, 0x003f, 0x0040, 0xa08e, 0x7800, 0x1118, 0x2009, -+ 0x0045, 0x0010, 0x2009, 0x001d, 0x0016, 0x2011, 0xba83, 0x2204, -+ 0x8211, 0x220c, 0x080c, 0x27e3, 0x1598, 0x080c, 0x4f0e, 0x1580, -+ 0x6612, 0x6516, 0x86ff, 0x01e8, 0x001e, 0x0016, 0xa186, 0x0017, -+ 0x1158, 0x6870, 0xa606, 0x11a8, 0x6874, 0xa506, 0xa084, 0xff00, -+ 0x1180, 0x6000, 0xc0f5, 0x6002, 0xa186, 0x0046, 0x1150, 0x6870, -+ 0xa606, 0x1138, 0x6874, 0xa506, 0xa084, 0xff00, 0x1110, 0x001e, -+ 0x0068, 0x00c6, 0x080c, 0x856a, 0x0168, 0x001e, 0x611a, 0x601f, -+ 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x85ef, 0x00ce, 0x0005, -+ 0x001e, 0x0ce0, 0x00ce, 0x0ce0, 0x00c6, 0x0046, 0x080c, 0x6618, -+ 0x1904, 0x6615, 0xa28e, 0x0033, 0x11e8, 0x080c, 0x6814, 0x0904, -+ 0x6615, 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x1140, 0x7034, -+ 0xa005, 0x15d8, 0x2009, 0x0015, 0x080c, 0x85ef, 0x04b0, 0xa08e, -+ 0x0100, 0x1598, 0x7034, 0xa005, 0x1580, 0x2009, 0x0016, 0x080c, -+ 0x85ef, 0x0458, 0xa28e, 0x0032, 0x1540, 0x7030, 0xa08e, 0x1400, -+ 0x1520, 0x2009, 0x0038, 0x0016, 0x2011, 0xba83, 0x2204, 0x8211, -+ 0x220c, 0x080c, 0x27e3, 0x11c0, 0x080c, 0x4f0e, 0x11a8, 0x6612, -+ 0x6516, 0x00c6, 0x080c, 0x856a, 0x0170, 0x001e, 0x611a, 0x080c, -+ 0x9fb8, 0x601f, 0x0004, 0x7120, 0x610a, 0x001e, 0x080c, 0x85ef, -+ 0x080c, 0x7134, 0x0010, 0x00ce, 0x001e, 0x004e, 0x00ce, 0x0005, -+ 0x00f6, 0x00d6, 0x0026, 0x0016, 0x0136, 0x0146, 0x0156, 0x3c00, -+ 0x0006, 0x2079, 0x0030, 0x2069, 0x0200, 0x080c, 0x1efe, 0x1590, -+ 0x080c, 0x1da1, 0x05e0, 0x04f1, 0x1130, 0x7908, 0xa18c, 0x1fff, -+ 0xa182, 0x0011, 0x1688, 0x20a9, 0x000c, 0x20e1, 0x0000, 0x2ea0, -+ 0x2099, 0x020a, 0x53a5, 0x20e1, 0x2000, 0x2001, 0x020a, 0x2004, -+ 0x7a0c, 0x7808, 0xa080, 0x0007, 0xa084, 0x1ff8, 0x0419, 0x1120, -+ 0xa08a, 0x0140, 0x1a0c, 0x1511, 0x80ac, 0x20e1, 0x6000, 0x2099, -+ 0x020a, 0x53a5, 0x20e1, 0x7000, 0x6828, 0x6828, 0x7803, 0x0004, -+ 0xa294, 0x0070, 0x000e, 0x20e0, 0x015e, 0x014e, 0x013e, 0x001e, -+ 0x002e, 0x00de, 0x00fe, 0x0005, 0xa016, 0x080c, 0x1856, 0xa085, -+ 0x0001, 0x0c80, 0x0006, 0x2001, 0x0111, 0x2004, 0xa084, 0x0003, -+ 0x000e, 0x0005, 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0xa696, -+ 0x00ff, 0x1198, 0xa596, 0xfffd, 0x1120, 0x2009, 0x007f, 0x0804, -+ 0x66c4, 0xa596, 0xfffe, 0x1118, 0x2009, 0x007e, 0x04e8, 0xa596, -+ 0xfffc, 0x1118, 0x2009, 0x0080, 0x04b8, 0x2011, 0x0000, 0x2019, -+ 0xb435, 0x231c, 0xd3ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, -+ 0x2071, 0xb535, 0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, -+ 0xb5b6, 0x2e1c, 0x83ff, 0x1128, 0x82ff, 0x1198, 0x2410, 0xc2fd, -+ 0x0080, 0x2368, 0x6f10, 0x0006, 0x2100, 0xa706, 0x000e, 0x6b14, -+ 0x1120, 0xa346, 0x1110, 0x2408, 0x0078, 0x87ff, 0x1110, 0x83ff, -+ 0x0d58, 0x8420, 0x8e70, 0x1f04, 0x66a1, 0x82ff, 0x1118, 0xa085, -+ 0x0001, 0x0018, 0xc2fc, 0x2208, 0xa006, 0x00de, 0x00ee, 0x004e, -+ 0x0005, 0xa084, 0x0007, 0x000a, 0x0005, 0x66d5, 0x66d5, 0x66d5, -+ 0x6826, 0x66d5, 0x66d6, 0x66eb, 0x6764, 0x0005, 0x7110, 0xd1bc, -+ 0x0188, 0x7120, 0x2160, 0xac8c, 0x0007, 0x1160, 0xac8a, 0xbc00, -+ 0x0248, 0x685c, 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0046, -+ 0x080c, 0x85ef, 0x0005, 0x00c6, 0xa484, 0x01ff, 0x0904, 0x6742, -+ 0x7110, 0xd1bc, 0x1904, 0x6742, 0x2011, 0xba83, 0x2204, 0x8211, -+ 0x220c, 0x080c, 0x27e3, 0x1904, 0x6742, 0x080c, 0x4f0e, 0x1904, -+ 0x6742, 0x6612, 0x6516, 0x6000, 0xd0ec, 0x15e0, 0x6204, 0xa294, -+ 0xff00, 0x8217, 0xa286, 0x0006, 0x0160, 0x080c, 0x5a90, 0x11d0, -+ 0x6204, 0xa294, 0x00ff, 0xa286, 0x0006, 0x11a0, 0xa295, 0x0600, -+ 0x6206, 0x00c6, 0x080c, 0x856a, 0x001e, 0x0530, 0x611a, 0x601f, -+ 0x0006, 0x7120, 0x610a, 0x7130, 0x6152, 0x2009, 0x0044, 0x080c, -+ 0x85ef, 0x00c0, 0x00c6, 0x080c, 0x856a, 0x001e, 0x0198, 0x611a, -+ 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x1118, 0x6007, -+ 0x0005, 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x6c98, -+ 0x080c, 0x7134, 0x00ce, 0x0005, 0x2001, 0xb40d, 0x2004, 0xd0ec, -+ 0x0120, 0x2011, 0x8049, 0x080c, 0x3e8a, 0x00c6, 0x080c, 0x9e67, -+ 0x001e, 0x0d80, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x7130, -+ 0x6152, 0x6013, 0x0300, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, -+ 0x6c52, 0x080c, 0x7134, 0x08f0, 0x7110, 0xd1bc, 0x0188, 0x7020, -+ 0x2060, 0xac84, 0x0007, 0x1160, 0xac82, 0xbc00, 0x0248, 0x685c, -+ 0xac02, 0x1230, 0x7124, 0x610a, 0x2009, 0x0045, 0x080c, 0x85ef, -+ 0x0005, 0x0006, 0x080c, 0x2d83, 0x000e, 0x1168, 0x7110, 0xa18c, -+ 0xff00, 0x810f, 0xa18e, 0x0000, 0x1130, 0xa084, 0x000f, 0xa08a, -+ 0x0006, 0x1208, 0x000b, 0x0005, 0x6792, 0x6793, 0x6792, 0x6792, -+ 0x67fc, 0x6808, 0x0005, 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, -+ 0x0904, 0x67fb, 0x700c, 0x7108, 0x080c, 0x27e3, 0x1904, 0x67fb, -+ 0x080c, 0x4f0e, 0x1904, 0x67fb, 0x6612, 0x6516, 0x6204, 0x7110, -+ 0xd1bc, 0x01f8, 0xa28c, 0x00ff, 0xa186, 0x0004, 0x0118, 0xa186, -+ 0x0006, 0x15c8, 0x00c6, 0x080c, 0x6814, 0x00ce, 0x0904, 0x67fb, -+ 0x00c6, 0x080c, 0x856a, 0x001e, 0x05f0, 0x611a, 0x080c, 0x9fb8, -+ 0x601f, 0x0002, 0x7120, 0x610a, 0x2009, 0x0088, 0x080c, 0x85ef, -+ 0x0490, 0xa28c, 0x00ff, 0xa186, 0x0006, 0x0160, 0xa186, 0x0004, -+ 0x0148, 0xa294, 0xff00, 0x8217, 0xa286, 0x0004, 0x0118, 0xa286, -+ 0x0006, 0x1188, 0x00c6, 0x080c, 0x856a, 0x001e, 0x01e0, 0x611a, -+ 0x080c, 0x9fb8, 0x601f, 0x0005, 0x7120, 0x610a, 0x2009, 0x0088, -+ 0x080c, 0x85ef, 0x0080, 0x00c6, 0x080c, 0x856a, 0x001e, 0x0158, -+ 0x611a, 0x080c, 0x9fb8, 0x601f, 0x0004, 0x7120, 0x610a, 0x2009, -+ 0x0001, 0x080c, 0x85ef, 0x0005, 0x7110, 0xd1bc, 0x0140, 0x00a1, -+ 0x0130, 0x7124, 0x610a, 0x2009, 0x0089, 0x080c, 0x85ef, 0x0005, -+ 0x7110, 0xd1bc, 0x0140, 0x0041, 0x0130, 0x7124, 0x610a, 0x2009, -+ 0x008a, 0x080c, 0x85ef, 0x0005, 0x7020, 0x2060, 0xac84, 0x0007, -+ 0x1158, 0xac82, 0xbc00, 0x0240, 0x2001, 0xb417, 0x2004, 0xac02, -+ 0x1218, 0xa085, 0x0001, 0x0005, 0xa006, 0x0ce8, 0x7110, 0xd1bc, -+ 0x1178, 0x7024, 0x2060, 0xac84, 0x0007, 0x1150, 0xac82, 0xbc00, -+ 0x0238, 0x685c, 0xac02, 0x1220, 0x2009, 0x0051, 0x080c, 0x85ef, -+ 0x0005, 0x2031, 0x0105, 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, -+ 0x0005, 0x2031, 0x0207, 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, -+ 0x0005, 0x00c6, 0x00d6, 0x00f6, 0x7000, 0xa084, 0xf000, 0xa086, -+ 0xc000, 0x05b0, 0x080c, 0x856a, 0x0598, 0x0066, 0x00c6, 0x0046, -+ 0x2011, 0xba83, 0x2204, 0x8211, 0x220c, 0x080c, 0x27e3, 0x1580, -+ 0x080c, 0x4f0e, 0x1568, 0x6612, 0x6516, 0x2c00, 0x004e, 0x00ce, -+ 0x601a, 0x080c, 0x9fb8, 0x080c, 0x15f4, 0x01f0, 0x2d00, 0x6056, -+ 0x6803, 0x0000, 0x6837, 0x0000, 0x6c3a, 0xadf8, 0x000f, 0x20a9, -+ 0x000e, 0x2fa0, 0x2e98, 0x53a3, 0x006e, 0x6612, 0x6007, 0x003e, -+ 0x601f, 0x0001, 0x6003, 0x0001, 0x080c, 0x6c98, 0x080c, 0x7134, -+ 0x00fe, 0x00de, 0x00ce, 0x0005, 0x080c, 0x85c0, 0x006e, 0x0cc0, -+ 0x004e, 0x00ce, 0x0cc8, 0x2071, 0xb6f3, 0x7003, 0x0003, 0x700f, -+ 0x0361, 0xa006, 0x701a, 0x7076, 0x7012, 0x7017, 0xbc00, 0x7007, -+ 0x0000, 0x7026, 0x702b, 0x7d3b, 0x7032, 0x7037, 0x7d9b, 0x703b, -+ 0xffff, 0x703f, 0xffff, 0x7042, 0x7047, 0x4405, 0x704a, 0x705b, -+ 0x69f0, 0x2001, 0xb6a1, 0x2003, 0x0003, 0x2001, 0xb6a3, 0x2003, -+ 0x0100, 0x3a00, 0xa084, 0x0005, 0x706e, 0x0005, 0x2071, 0xb6f3, -+ 0x1d04, 0x6950, 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x1518, -+ 0x700f, 0x0361, 0x7007, 0x0001, 0x0126, 0x2091, 0x8000, 0x7040, -+ 0xa00d, 0x0128, 0x8109, 0x7142, 0x1110, 0x7044, 0x080f, 0x00c6, -+ 0x2061, 0xb400, 0x6034, 0x00ce, 0xd0cc, 0x0180, 0x3a00, 0xa084, -+ 0x0005, 0x726c, 0xa216, 0x0150, 0x706e, 0x2011, 0x8043, 0x2018, -+ 0x080c, 0x3e8a, 0x0018, 0x0126, 0x2091, 0x8000, 0x7024, 0xa00d, -+ 0x0188, 0x7020, 0x8001, 0x7022, 0x1168, 0x7023, 0x0009, 0x8109, -+ 0x7126, 0xa186, 0x03e8, 0x1110, 0x7028, 0x080f, 0x81ff, 0x1110, -+ 0x7028, 0x080f, 0x7030, 0xa00d, 0x0180, 0x702c, 0x8001, 0x702e, -+ 0x1160, 0x702f, 0x0009, 0x8109, 0x7132, 0x0128, 0xa184, 0x007f, -+ 0x090c, 0x7de0, 0x0010, 0x7034, 0x080f, 0x7038, 0xa005, 0x0118, -+ 0x0310, 0x8001, 0x703a, 0x703c, 0xa005, 0x0118, 0x0310, 0x8001, -+ 0x703e, 0x704c, 0xa00d, 0x0168, 0x7048, 0x8001, 0x704a, 0x1148, -+ 0x704b, 0x0009, 0x8109, 0x714e, 0x1120, 0x7150, 0x714e, 0x7058, -+ 0x080f, 0x7018, 0xa00d, 0x01d8, 0x0016, 0x7074, 0xa00d, 0x0158, -+ 0x7070, 0x8001, 0x7072, 0x1138, 0x7073, 0x0009, 0x8109, 0x7176, -+ 0x1110, 0x7078, 0x080f, 0x001e, 0x7008, 0x8001, 0x700a, 0x1138, -+ 0x700b, 0x0009, 0x8109, 0x711a, 0x1110, 0x701c, 0x080f, 0x012e, -+ 0x7004, 0x0002, 0x6976, 0x6977, 0x698f, 0x00e6, 0x2071, 0xb6f3, -+ 0x7018, 0xa005, 0x1120, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, -+ 0x0005, 0x00e6, 0x0006, 0x2071, 0xb6f3, 0x701c, 0xa206, 0x1110, -+ 0x701a, 0x701e, 0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0xb6f3, -+ 0x6088, 0xa102, 0x0208, 0x618a, 0x00ee, 0x0005, 0x0005, 0x7110, -+ 0x080c, 0x4f6a, 0x1158, 0x6088, 0x8001, 0x0240, 0x608a, 0x1130, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x7134, 0x012e, 0x8108, 0xa182, -+ 0x00ff, 0x0218, 0xa00e, 0x7007, 0x0002, 0x7112, 0x0005, 0x7014, -+ 0x2060, 0x0126, 0x2091, 0x8000, 0x603c, 0xa005, 0x0128, 0x8001, -+ 0x603e, 0x1110, 0x080c, 0x9ea6, 0x6014, 0xa005, 0x0500, 0x8001, -+ 0x6016, 0x11e8, 0x611c, 0xa186, 0x0003, 0x0118, 0xa186, 0x0006, -+ 0x11a0, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0270, 0xa082, -+ 0x1999, 0x6856, 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, -+ 0x800b, 0x810b, 0xa108, 0x6116, 0x0010, 0x080c, 0x997e, 0x012e, -+ 0xac88, 0x0018, 0x7116, 0x2001, 0xec00, 0xa102, 0x0220, 0x7017, -+ 0xbc00, 0x7007, 0x0000, 0x0005, 0x00e6, 0x2071, 0xb6f3, 0x7027, -+ 0x07d0, 0x7023, 0x0009, 0x00ee, 0x0005, 0x2001, 0xb6fc, 0x2003, -+ 0x0000, 0x0005, 0x00e6, 0x2071, 0xb6f3, 0x7132, 0x702f, 0x0009, -+ 0x00ee, 0x0005, 0x2011, 0xb6ff, 0x2013, 0x0000, 0x0005, 0x00e6, -+ 0x2071, 0xb6f3, 0x711a, 0x721e, 0x700b, 0x0009, 0x00ee, 0x0005, -+ 0x00c6, 0x0026, 0x7054, 0x8000, 0x7056, 0x2061, 0xb6a1, 0x6008, -+ 0xa086, 0x0000, 0x0158, 0x7068, 0x6032, 0x7064, 0x602e, 0x7060, -+ 0x602a, 0x705c, 0x6026, 0x2c10, 0x080c, 0x163f, 0x002e, 0x00ce, -+ 0x0005, 0x0006, 0x0016, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, -+ 0x68be, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x0005, -+ 0x00e6, 0x2071, 0xb6f3, 0x7176, 0x727a, 0x7073, 0x0009, 0x00ee, -+ 0x0005, 0x00e6, 0x0006, 0x2071, 0xb6f3, 0x7078, 0xa206, 0x1110, -+ 0x7076, 0x707a, 0x000e, 0x00ee, 0x0005, 0x00c6, 0x2061, 0xb774, -+ 0x00ce, 0x0005, 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, -+ 0xb774, 0x2060, 0x0005, 0x6854, 0xa08a, 0x199a, 0x0210, 0x2001, -+ 0x1999, 0xa005, 0x1150, 0x00c6, 0x2061, 0xb774, 0x6014, 0x00ce, -+ 0xa005, 0x1138, 0x2001, 0x001e, 0x0020, 0xa08e, 0xffff, 0x1108, -+ 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c, -+ 0x00c0, 0xa18e, 0x00c0, 0x05e8, 0xd0b4, 0x1138, 0xd0bc, 0x1550, -+ 0x2009, 0x0006, 0x080c, 0x6ab6, 0x0005, 0xd0fc, 0x0138, 0xa084, -+ 0x0003, 0x0120, 0xa086, 0x0003, 0x1904, 0x6ab0, 0x6020, 0xd0d4, -+ 0x0130, 0xc0d4, 0x6022, 0x6860, 0x602a, 0x685c, 0x602e, 0x2009, -+ 0xb474, 0x2104, 0xd084, 0x0138, 0x87ff, 0x1120, 0x2009, 0x0042, -+ 0x080c, 0x85ef, 0x0005, 0x87ff, 0x1120, 0x2009, 0x0043, 0x080c, -+ 0x85ef, 0x0005, 0xd0fc, 0x0130, 0xa084, 0x0003, 0x0118, 0xa086, -+ 0x0003, 0x11f0, 0x87ff, 0x1120, 0x2009, 0x0042, 0x080c, 0x85ef, -+ 0x0005, 0xd0fc, 0x0160, 0xa084, 0x0003, 0xa08e, 0x0002, 0x0148, -+ 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, 0x85ef, 0x0005, 0x0061, -+ 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x85ef, 0x0cb0, -+ 0x2009, 0x0004, 0x0019, 0x0005, 0x2009, 0x0001, 0x00d6, 0x6010, -+ 0xa0ec, 0xf000, 0x0510, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, -+ 0x0001, 0x1188, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x1158, -+ 0x00c6, 0x2061, 0xb774, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, -+ 0x0208, 0x6206, 0x00ce, 0x080c, 0x53c9, 0x6010, 0xa06d, 0x0076, -+ 0x2039, 0x0000, 0x190c, 0x6a3b, 0x007e, 0x00de, 0x0005, 0x0156, -+ 0x00c6, 0x2061, 0xb774, 0x6000, 0x81ff, 0x0110, 0xa205, 0x0008, -+ 0xa204, 0x6002, 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, -+ 0x6808, 0xa005, 0x0120, 0x8001, 0x680a, 0xa085, 0x0001, 0x0005, -+ 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, 0x1208, 0xa200, -+ 0x1f04, 0x6afc, 0x8086, 0x818e, 0x0005, 0x0156, 0x20a9, 0x0010, -+ 0xa005, 0x01b8, 0xa11a, 0x12a8, 0x8213, 0x818d, 0x0228, 0xa11a, -+ 0x1220, 0x1f04, 0x6b0c, 0x0028, 0xa11a, 0x2308, 0x8210, 0x1f04, -+ 0x6b0c, 0x0006, 0x3200, 0xa084, 0xefff, 0x2080, 0x000e, 0x015e, -+ 0x0005, 0x0006, 0x3200, 0xa085, 0x1000, 0x0cb8, 0x0126, 0x2091, -+ 0x2800, 0x2079, 0xb6e0, 0x012e, 0x00d6, 0x2069, 0xb6e0, 0x6803, -+ 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001, 0x206a, 0x00de, -+ 0x0005, 0x00c6, 0x6027, 0x0001, 0x7804, 0xa084, 0x0007, 0x0002, -+ 0x6b4a, 0x6b6b, 0x6bbe, 0x6b50, 0x6b6b, 0x6b4a, 0x6b48, 0x6b48, -+ 0x080c, 0x1511, 0x080c, 0x69d5, 0x080c, 0x7134, 0x00ce, 0x0005, -+ 0x62c0, 0x82ff, 0x1110, 0x00ce, 0x0005, 0x2011, 0x4a96, 0x080c, -+ 0x6961, 0x7828, 0xa092, 0x00c8, 0x1228, 0x8000, 0x782a, 0x080c, -+ 0x4ad0, 0x0c88, 0x080c, 0x4a96, 0x7807, 0x0003, 0x7827, 0x0000, -+ 0x782b, 0x0000, 0x0c40, 0x080c, 0x69d5, 0x3c00, 0x0006, 0x2011, -+ 0x0209, 0x20e1, 0x4000, 0x2214, 0x000e, 0x20e0, 0x82ff, 0x0178, -+ 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824, 0xa065, 0x090c, -+ 0x1511, 0x2009, 0x0013, 0x080c, 0x85ef, 0x00ce, 0x0005, 0x3900, -+ 0xa082, 0xb82c, 0x1210, 0x080c, 0x82d5, 0x00c6, 0x7824, 0xa065, -+ 0x090c, 0x1511, 0x7804, 0xa086, 0x0004, 0x0904, 0x6bfe, 0x7828, -+ 0xa092, 0x2710, 0x1230, 0x8000, 0x782a, 0x00ce, 0x080c, 0x7d17, -+ 0x0c20, 0x6104, 0xa186, 0x0003, 0x1188, 0x00e6, 0x2071, 0xb400, -+ 0x70e0, 0x00ee, 0xd08c, 0x0150, 0x00c6, 0x00e6, 0x2061, 0x0100, -+ 0x2071, 0xb400, 0x080c, 0x4ad9, 0x00ee, 0x00ce, 0x080c, 0xb3c7, -+ 0x2009, 0x0014, 0x080c, 0x85ef, 0x00ce, 0x0838, 0x2001, 0xb6fc, -+ 0x2003, 0x0000, 0x62c0, 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824, -+ 0xa065, 0x090c, 0x1511, 0x2009, 0x0013, 0x080c, 0x8643, 0x00ce, -+ 0x0005, 0x00c6, 0x00d6, 0x3900, 0xa082, 0xb82c, 0x1210, 0x080c, -+ 0x82d5, 0x7824, 0xa005, 0x090c, 0x1511, 0x781c, 0xa06d, 0x090c, -+ 0x1511, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160, 0x080c, 0x85c0, -+ 0x693c, 0x81ff, 0x090c, 0x1511, 0x8109, 0x693e, 0x6854, 0xa015, -+ 0x0110, 0x7a1e, 0x0010, 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, -+ 0x0000, 0x00de, 0x00ce, 0x080c, 0x7134, 0x0888, 0x6104, 0xa186, -+ 0x0002, 0x0128, 0xa186, 0x0004, 0x0110, 0x0804, 0x6b97, 0x7808, -+ 0xac06, 0x0904, 0x6b97, 0x080c, 0x7055, 0x080c, 0x6c98, 0x00ce, -+ 0x080c, 0x7134, 0x0804, 0x6b85, 0x00c6, 0x6027, 0x0002, 0x62c8, -+ 0x60c4, 0xa205, 0x1178, 0x793c, 0xa1e5, 0x0000, 0x0130, 0x2009, -+ 0x0049, 0x080c, 0x85ef, 0x00ce, 0x0005, 0x2011, 0xb6ff, 0x2013, -+ 0x0000, 0x0cc8, 0x3908, 0xa192, 0xb82c, 0x1210, 0x080c, 0x82d5, -+ 0x793c, 0x81ff, 0x0d90, 0x7944, 0xa192, 0x7530, 0x12b8, 0x8108, -+ 0x7946, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x1138, -+ 0x6014, 0xa084, 0x0184, 0xa085, 0x0012, 0x6016, 0x08e0, 0x6014, -+ 0xa084, 0x0184, 0xa085, 0x0016, 0x6016, 0x08a8, 0x7848, 0xc085, -+ 0x784a, 0x0888, 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, -+ 0x600f, 0x0000, 0x2c08, 0x2061, 0xb6e0, 0x6020, 0x8000, 0x6022, -+ 0x6010, 0xa005, 0x0148, 0xa080, 0x0003, 0x2102, 0x6112, 0x012e, -+ 0x00ce, 0x001e, 0x000e, 0x0005, 0x6116, 0x6112, 0x0cc0, 0x00d6, -+ 0x2069, 0xb6e0, 0x6000, 0xd0d4, 0x0168, 0x6820, 0x8000, 0x6822, -+ 0xa086, 0x0001, 0x1110, 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007, -+ 0x0804, 0x713a, 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0158, 0x6056, -+ 0x605b, 0x0000, 0x0006, 0x2c00, 0x681a, 0x00de, 0x685a, 0x2069, -+ 0xb6e0, 0x0c18, 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x08e8, -+ 0x0006, 0x0016, 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, -+ 0x2c08, 0x2061, 0xb6e0, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, -+ 0x0148, 0xa080, 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, -+ 0x000e, 0x0005, 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, -+ 0x2c08, 0x2061, 0xb6e0, 0x6034, 0xa005, 0x0130, 0xa080, 0x0003, -+ 0x2102, 0x6136, 0x00ce, 0x0005, 0x613a, 0x6136, 0x0cd8, 0x00f6, -+ 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026, -+ 0x0016, 0x0006, 0x0126, 0xa02e, 0x2071, 0xb6e0, 0x7638, 0x2660, -+ 0x2678, 0x2091, 0x8000, 0x8cff, 0x0904, 0x6d40, 0x6018, 0xa080, -+ 0x0028, 0x2004, 0xa206, 0x1904, 0x6d3b, 0x87ff, 0x0120, 0x6050, -+ 0xa106, 0x1904, 0x6d3b, 0x703c, 0xac06, 0x1190, 0x0036, 0x2019, -+ 0x0001, 0x080c, 0x7f8e, 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, -+ 0x0000, 0x7047, 0x0000, 0x704b, 0x0000, 0x003e, 0x2029, 0x0001, -+ 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, 0x7034, 0xac36, 0x1140, -+ 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, -+ 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, -+ 0x600f, 0x0000, 0x080c, 0x9beb, 0x01c8, 0x6010, 0x2068, 0x601c, -+ 0xa086, 0x0003, 0x1580, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, -+ 0x0016, 0x0036, 0x0076, 0x080c, 0x9e5d, 0x080c, 0xb303, 0x080c, -+ 0x53c9, 0x007e, 0x003e, 0x001e, 0x080c, 0x9da2, 0x080c, 0x9dae, -+ 0x00ce, 0x0804, 0x6cdb, 0x2c78, 0x600c, 0x2060, 0x0804, 0x6cdb, -+ 0x85ff, 0x0120, 0x0036, 0x080c, 0x71f1, 0x003e, 0x012e, 0x000e, -+ 0x001e, 0x002e, 0x003e, 0x005e, 0x006e, 0x007e, 0x00ce, 0x00de, -+ 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, 0x0006, 0x1158, 0x0016, -+ 0x0036, 0x0076, 0x080c, 0xb303, 0x080c, 0xb01c, 0x007e, 0x003e, -+ 0x001e, 0x08a0, 0x601c, 0xa086, 0x000a, 0x0904, 0x6d25, 0x0804, -+ 0x6d23, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x00f6, 0x2031, 0x0000, -+ 0x0126, 0x2091, 0x8000, 0x2079, 0xb6e0, 0x7838, 0xa065, 0x0568, -+ 0x600c, 0x0006, 0x600f, 0x0000, 0x783c, 0xac06, 0x1180, 0x0036, -+ 0x2019, 0x0001, 0x080c, 0x7f8e, 0x7833, 0x0000, 0x783f, 0x0000, -+ 0x7843, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000, 0x003e, 0x080c, -+ 0x9beb, 0x0178, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x11b0, -+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0x53c9, 0x080c, -+ 0x9da2, 0x080c, 0x9dae, 0x000e, 0x0888, 0x7e3a, 0x7e36, 0x012e, -+ 0x00fe, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005, 0x601c, 0xa086, -+ 0x0006, 0x1118, 0x080c, 0xb01c, 0x0c60, 0x601c, 0xa086, 0x000a, -+ 0x0d08, 0x08f0, 0x0016, 0x0026, 0x0086, 0x2041, 0x0000, 0x0099, -+ 0x080c, 0x6e88, 0x008e, 0x002e, 0x001e, 0x0005, 0x00f6, 0x0126, -+ 0x2079, 0xb6e0, 0x2091, 0x8000, 0x080c, 0x6f15, 0x080c, 0x6f87, -+ 0x012e, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, -+ 0x0016, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xb6e0, 0x7614, -+ 0x2660, 0x2678, 0x8cff, 0x0904, 0x6e5e, 0x6018, 0xa080, 0x0028, -+ 0x2004, 0xa206, 0x1904, 0x6e59, 0x88ff, 0x0120, 0x6050, 0xa106, -+ 0x1904, 0x6e59, 0x7024, 0xac06, 0x1538, 0x2069, 0x0100, 0x68c0, -+ 0xa005, 0x01f0, 0x080c, 0x69d5, 0x080c, 0x7d24, 0x68c3, 0x0000, -+ 0x080c, 0x81f0, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, -+ 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, -+ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0020, -+ 0x6003, 0x0009, 0x630a, 0x04e8, 0x7014, 0xac36, 0x1110, 0x660c, -+ 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, -+ 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, -+ 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, -+ 0x080c, 0x9beb, 0x01b8, 0x601c, 0xa086, 0x0003, 0x1540, 0x6837, -+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x0016, 0x0036, 0x0086, 0x080c, -+ 0x9e5d, 0x080c, 0xb303, 0x080c, 0x53c9, 0x008e, 0x003e, 0x001e, -+ 0x080c, 0x9da2, 0x080c, 0x9dae, 0x080c, 0x80c8, 0x00ce, 0x0804, -+ 0x6de2, 0x2c78, 0x600c, 0x2060, 0x0804, 0x6de2, 0x012e, 0x000e, -+ 0x001e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, -+ 0xa086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0086, 0x080c, 0xb303, -+ 0x080c, 0xb01c, 0x008e, 0x003e, 0x001e, 0x08e0, 0x601c, 0xa086, -+ 0x0002, 0x1128, 0x6004, 0xa086, 0x0085, 0x0908, 0x0898, 0x601c, -+ 0xa086, 0x0005, 0x1978, 0x6004, 0xa086, 0x0085, 0x0d20, 0x0850, -+ 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, 0xa280, 0xb535, 0x2004, -+ 0xa065, 0x0904, 0x6f11, 0x00f6, 0x00e6, 0x00d6, 0x0066, 0x2071, -+ 0xb6e0, 0x6654, 0x7018, 0xac06, 0x1108, 0x761a, 0x701c, 0xac06, -+ 0x1130, 0x86ff, 0x1118, 0x7018, 0x701e, 0x0008, 0x761e, 0x6058, -+ 0xa07d, 0x0108, 0x7e56, 0xa6ed, 0x0000, 0x0110, 0x2f00, 0x685a, -+ 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, -+ 0x080c, 0x4e95, 0x0904, 0x6f0d, 0x7624, 0x86ff, 0x05e8, 0xa680, -+ 0x0004, 0x2004, 0xad06, 0x15c0, 0x00d6, 0x2069, 0x0100, 0x68c0, -+ 0xa005, 0x0548, 0x080c, 0x69d5, 0x080c, 0x7d24, 0x68c3, 0x0000, -+ 0x080c, 0x81f0, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, -+ 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, -+ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x00de, -+ 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, 0x603e, 0x2660, 0x080c, -+ 0x9dae, 0x00ce, 0x0048, 0x00de, 0x00c6, 0x2660, 0x6003, 0x0009, -+ 0x630a, 0x00ce, 0x0804, 0x6eb8, 0x8dff, 0x0158, 0x6837, 0x0103, -+ 0x6b4a, 0x6847, 0x0000, 0x080c, 0x9e5d, 0x080c, 0xb303, 0x080c, -+ 0x53c9, 0x080c, 0x80c8, 0x0804, 0x6eb8, 0x006e, 0x00de, 0x00ee, -+ 0x00fe, 0x012e, 0x000e, 0x00ce, 0x0005, 0x0006, 0x0066, 0x00c6, -+ 0x00d6, 0x2031, 0x0000, 0x7814, 0xa065, 0x0904, 0x6f67, 0x600c, -+ 0x0006, 0x600f, 0x0000, 0x7824, 0xac06, 0x1540, 0x2069, 0x0100, -+ 0x68c0, 0xa005, 0x01f0, 0x080c, 0x69d5, 0x080c, 0x7d24, 0x68c3, -+ 0x0000, 0x080c, 0x81f0, 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, -+ 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, -+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, -+ 0x0028, 0x6003, 0x0009, 0x630a, 0x2c30, 0x00b0, 0x6010, 0x2068, -+ 0x080c, 0x9beb, 0x0168, 0x601c, 0xa086, 0x0003, 0x11b8, 0x6837, -+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0x53c9, 0x080c, 0x9da2, -+ 0x080c, 0x9dae, 0x080c, 0x80c8, 0x000e, 0x0804, 0x6f1c, 0x7e16, -+ 0x7e12, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005, 0x601c, 0xa086, -+ 0x0006, 0x1118, 0x080c, 0xb01c, 0x0c58, 0x601c, 0xa086, 0x0002, -+ 0x1128, 0x6004, 0xa086, 0x0085, 0x09d0, 0x0c10, 0x601c, 0xa086, -+ 0x0005, 0x19f0, 0x6004, 0xa086, 0x0085, 0x0d60, 0x08c8, 0x0006, -+ 0x0066, 0x00c6, 0x00d6, 0x7818, 0xa065, 0x0904, 0x6fed, 0x6054, -+ 0x0006, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, -+ 0x6002, 0x080c, 0x4e95, 0x0904, 0x6fea, 0x7e24, 0x86ff, 0x05e8, -+ 0xa680, 0x0004, 0x2004, 0xad06, 0x15c0, 0x00d6, 0x2069, 0x0100, -+ 0x68c0, 0xa005, 0x0548, 0x080c, 0x69d5, 0x080c, 0x7d24, 0x68c3, -+ 0x0000, 0x080c, 0x81f0, 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, -+ 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, -+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, -+ 0x00de, 0x00c6, 0x603c, 0xa005, 0x0110, 0x8001, 0x603e, 0x2660, -+ 0x080c, 0x9dae, 0x00ce, 0x0048, 0x00de, 0x00c6, 0x2660, 0x6003, -+ 0x0009, 0x630a, 0x00ce, 0x0804, 0x6f99, 0x8dff, 0x0138, 0x6837, -+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0x53c9, 0x080c, 0x80c8, -+ 0x0804, 0x6f99, 0x000e, 0x0804, 0x6f8c, 0x781e, 0x781a, 0x00de, -+ 0x00ce, 0x006e, 0x000e, 0x0005, 0x00e6, 0x00d6, 0x0066, 0x6000, -+ 0xd0dc, 0x01a0, 0x604c, 0xa06d, 0x0188, 0x6848, 0xa606, 0x1170, -+ 0x2071, 0xb6e0, 0x7024, 0xa035, 0x0148, 0xa080, 0x0004, 0x2004, -+ 0xad06, 0x1120, 0x6000, 0xc0dc, 0x6002, 0x0021, 0x006e, 0x00de, -+ 0x00ee, 0x0005, 0x00f6, 0x2079, 0x0100, 0x78c0, 0xa005, 0x1138, -+ 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x04a0, 0x080c, -+ 0x7d24, 0x78c3, 0x0000, 0x080c, 0x81f0, 0x7027, 0x0000, 0x0036, -+ 0x2079, 0x0140, 0x7b04, 0xa384, 0x1000, 0x0120, 0x7803, 0x0100, -+ 0x7803, 0x0000, 0x2079, 0x0100, 0x7824, 0xd084, 0x0110, 0x7827, -+ 0x0001, 0x080c, 0x81f0, 0x003e, 0x080c, 0x4e95, 0x00c6, 0x603c, -+ 0xa005, 0x0110, 0x8001, 0x603e, 0x2660, 0x080c, 0x85c0, 0x00ce, -+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0x9e5d, 0x080c, -+ 0x53c9, 0x080c, 0x80c8, 0x00fe, 0x0005, 0x00e6, 0x00c6, 0x2071, -+ 0xb6e0, 0x7004, 0xa084, 0x0007, 0x0002, 0x7067, 0x706a, 0x7080, -+ 0x7099, 0x70d2, 0x7067, 0x7065, 0x7065, 0x080c, 0x1511, 0x00ce, -+ 0x00ee, 0x0005, 0x7024, 0xa065, 0x0148, 0x7020, 0x8001, 0x7022, -+ 0x600c, 0xa015, 0x0150, 0x7216, 0x600f, 0x0000, 0x7007, 0x0000, -+ 0x7027, 0x0000, 0x00ce, 0x00ee, 0x0005, 0x7216, 0x7212, 0x0cb0, -+ 0x6018, 0x2060, 0x080c, 0x4e95, 0x6000, 0xc0dc, 0x6002, 0x7020, -+ 0x8001, 0x7022, 0x0120, 0x6054, 0xa015, 0x0140, 0x721e, 0x7007, -+ 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x0005, 0x7218, 0x721e, -+ 0x0cb0, 0x7024, 0xa065, 0x0598, 0x700c, 0xac06, 0x1160, 0x080c, -+ 0x80c8, 0x600c, 0xa015, 0x0120, 0x720e, 0x600f, 0x0000, 0x0428, -+ 0x720e, 0x720a, 0x0410, 0x7014, 0xac06, 0x1160, 0x080c, 0x80c8, -+ 0x600c, 0xa015, 0x0120, 0x7216, 0x600f, 0x0000, 0x00b0, 0x7216, -+ 0x7212, 0x0098, 0x6018, 0x2060, 0x080c, 0x4e95, 0x6000, 0xc0dc, -+ 0x6002, 0x080c, 0x80c8, 0x701c, 0xa065, 0x0138, 0x6054, 0xa015, -+ 0x0110, 0x721e, 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce, -+ 0x00ee, 0x0005, 0x7024, 0xa065, 0x0140, 0x080c, 0x80c8, 0x600c, -+ 0xa015, 0x0150, 0x720e, 0x600f, 0x0000, 0x080c, 0x81f0, 0x7027, -+ 0x0000, 0x00ce, 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, 0x00d6, -+ 0x2069, 0xb6e0, 0x6830, 0xa084, 0x0003, 0x0002, 0x70f4, 0x70f6, -+ 0x711a, 0x70f2, 0x080c, 0x1511, 0x00de, 0x0005, 0x00c6, 0x6840, -+ 0xa086, 0x0001, 0x01b8, 0x683c, 0xa065, 0x0130, 0x600c, 0xa015, -+ 0x0170, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, -+ 0x2011, 0xb6ff, 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, -+ 0x6836, 0x0c90, 0x6843, 0x0000, 0x6838, 0xa065, 0x0d68, 0x6003, -+ 0x0003, 0x0c50, 0x00c6, 0x6843, 0x0000, 0x6847, 0x0000, 0x684b, -+ 0x0000, 0x683c, 0xa065, 0x0168, 0x600c, 0xa015, 0x0130, 0x6a3a, -+ 0x600f, 0x0000, 0x683f, 0x0000, 0x0020, 0x683f, 0x0000, 0x683a, -+ 0x6836, 0x00ce, 0x00de, 0x0005, 0x00d6, 0x2069, 0xb6e0, 0x6804, -+ 0xa084, 0x0007, 0x0002, 0x7145, 0x71e1, 0x71e1, 0x71e1, 0x71e1, -+ 0x71e3, 0x7143, 0x7143, 0x080c, 0x1511, 0x6820, 0xa005, 0x1110, -+ 0x00de, 0x0005, 0x00c6, 0x680c, 0xa065, 0x0150, 0x6807, 0x0004, -+ 0x6826, 0x682b, 0x0000, 0x080c, 0x7233, 0x00ce, 0x00de, 0x0005, -+ 0x6814, 0xa065, 0x0150, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, -+ 0x080c, 0x7233, 0x00ce, 0x00de, 0x0005, 0x00e6, 0x0036, 0x6a1c, -+ 0xa2f5, 0x0000, 0x0904, 0x71dd, 0x704c, 0xa00d, 0x0118, 0x7088, -+ 0xa005, 0x01a0, 0x7054, 0xa075, 0x0120, 0xa20e, 0x0904, 0x71dd, -+ 0x0028, 0x6818, 0xa20e, 0x0904, 0x71dd, 0x2070, 0x704c, 0xa00d, -+ 0x0d88, 0x7088, 0xa005, 0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, -+ 0xa302, 0x1e40, 0x080c, 0x8597, 0x0904, 0x71dd, 0x8318, 0x733e, -+ 0x6112, 0x2e10, 0x621a, 0xa180, 0x0014, 0x2004, 0xa084, 0x00ff, -+ 0x605a, 0xa180, 0x0014, 0x2003, 0x0000, 0xa180, 0x0015, 0x2004, -+ 0xa08a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, -+ 0xa318, 0x6316, 0x003e, 0x00f6, 0x2c78, 0x71a0, 0x2001, 0xb435, -+ 0x2004, 0xd0ac, 0x1110, 0xd1bc, 0x0150, 0x7100, 0xd1f4, 0x0120, -+ 0x7114, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, 0x0028, 0xa1e0, -+ 0x2d88, 0x2c0d, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x080c, -+ 0x785c, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, -+ 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, -+ 0x00fe, 0x00ee, 0x00ce, 0x00de, 0x0005, 0x003e, 0x00ee, 0x00ce, -+ 0x0cd0, 0x00de, 0x0005, 0x00c6, 0x680c, 0xa065, 0x0138, 0x6807, -+ 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x7233, 0x00ce, 0x00de, -+ 0x0005, 0x00f6, 0x00d6, 0x2069, 0xb6e0, 0x6830, 0xa086, 0x0000, -+ 0x11d0, 0x2001, 0xb40c, 0x200c, 0xd1bc, 0x1560, 0x6838, 0xa07d, -+ 0x0190, 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, -+ 0x0126, 0x00f6, 0x2091, 0x2400, 0x002e, 0x080c, 0x1ff2, 0x1130, -+ 0x012e, 0x080c, 0x7b95, 0x00de, 0x00fe, 0x0005, 0x012e, 0xe000, -+ 0x6843, 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0140, 0x6a3a, -+ 0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0c60, 0x683a, -+ 0x6836, 0x0cc0, 0xc1bc, 0x2102, 0x0066, 0x2031, 0x0001, 0x080c, -+ 0x5b12, 0x006e, 0x0858, 0x601c, 0xa084, 0x000f, 0x000b, 0x0005, -+ 0x7241, 0x7246, 0x76fd, 0x7819, 0x7246, 0x76fd, 0x7819, 0x7241, -+ 0x7246, 0x080c, 0x7055, 0x080c, 0x7134, 0x0005, 0x0156, 0x0136, -+ 0x0146, 0x00c6, 0x00f6, 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1511, -+ 0x6118, 0x2178, 0x79a0, 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1110, -+ 0xd1bc, 0x0150, 0x7900, 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, -+ 0x0040, 0x2009, 0x0000, 0x0028, 0xa1f8, 0x2d88, 0x2f0d, 0xa18c, -+ 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa08a, 0x0040, 0x1a04, -+ 0x72ba, 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, 0x015e, 0x0005, -+ 0x7369, 0x73b4, 0x73e1, 0x74ae, 0x74dc, 0x74e4, 0x750a, 0x751b, -+ 0x752c, 0x7534, 0x754a, 0x7534, 0x75a4, 0x751b, 0x75c5, 0x75cd, -+ 0x752c, 0x75cd, 0x75de, 0x72b8, 0x72b8, 0x72b8, 0x72b8, 0x72b8, -+ 0x72b8, 0x72b8, 0x72b8, 0x72b8, 0x72b8, 0x72b8, 0x7e2f, 0x7e54, -+ 0x7e69, 0x7e8c, 0x7ead, 0x750a, 0x72b8, 0x750a, 0x7534, 0x72b8, -+ 0x73e1, 0x74ae, 0x72b8, 0x82f2, 0x7534, 0x72b8, 0x8312, 0x7534, -+ 0x72b8, 0x752c, 0x7362, 0x72cd, 0x72b8, 0x8337, 0x83ac, 0x8483, -+ 0x72b8, 0x8494, 0x7505, 0x84b0, 0x72b8, 0x7ec2, 0x850b, 0x72b8, -+ 0x080c, 0x1511, 0x2100, 0x0033, 0x00fe, 0x00ce, 0x014e, 0x013e, -+ 0x015e, 0x0005, 0x72cb, 0x72cb, 0x72cb, 0x7301, 0x731f, 0x7335, -+ 0x72cb, 0x72cb, 0x72cb, 0x080c, 0x1511, 0x00d6, 0x20a1, 0x020b, -+ 0x080c, 0x75fb, 0x7810, 0x2068, 0x20a3, 0x2414, 0x20a3, 0x0018, -+ 0x20a3, 0x0800, 0x683c, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x6850, 0x20a2, 0x6854, 0x20a2, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0018, 0x080c, 0x7d11, -+ 0x00de, 0x0005, 0x00d6, 0x7818, 0x2068, 0x68a0, 0x2069, 0xb400, -+ 0x6ad4, 0xd2ac, 0x1110, 0xd0bc, 0x0110, 0xa085, 0x0001, 0x00de, -+ 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x75fb, 0x20a3, 0x0500, -+ 0x20a3, 0x0000, 0x7810, 0xa0e8, 0x000f, 0x6808, 0x20a2, 0x680c, -+ 0x20a2, 0x6810, 0x20a2, 0x6814, 0x20a2, 0x6818, 0x20a2, 0x681c, -+ 0x20a2, 0x60c3, 0x0010, 0x080c, 0x7d11, 0x00de, 0x0005, 0x0156, -+ 0x0146, 0x20a1, 0x020b, 0x080c, 0x75fb, 0x20a3, 0x7800, 0x20a3, -+ 0x0000, 0x7808, 0x8007, 0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0008, -+ 0x080c, 0x7d11, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, -+ 0x020b, 0x080c, 0x7697, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, -+ 0xdf10, 0x20a3, 0x0034, 0x2099, 0xb405, 0x20a9, 0x0004, 0x53a6, -+ 0x2099, 0xb401, 0x20a9, 0x0004, 0x53a6, 0x2099, 0xb6c6, 0x20a9, -+ 0x001a, 0x3304, 0x8007, 0x20a2, 0x9398, 0x1f04, 0x7351, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x004c, 0x080c, 0x7d11, 0x014e, -+ 0x015e, 0x0005, 0x2001, 0xb415, 0x2004, 0x609a, 0x080c, 0x7d11, -+ 0x0005, 0x20a1, 0x020b, 0x080c, 0x75fb, 0x20a3, 0x5200, 0x20a3, -+ 0x0000, 0x00d6, 0x2069, 0xb452, 0x6804, 0xd084, 0x0150, 0x6828, -+ 0x20a3, 0x0000, 0x0016, 0x080c, 0x27f7, 0x21a2, 0x001e, 0x00de, -+ 0x0028, 0x00de, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, -+ 0x2099, 0xb405, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb401, 0x53a6, -+ 0x2001, 0xb435, 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xa082, 0x007f, 0x0238, 0x2001, 0xb41c, 0x20a6, 0x2001, -+ 0xb41d, 0x20a6, 0x0040, 0x20a3, 0x0000, 0x2001, 0xb415, 0x2004, -+ 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, -+ 0x001c, 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, 0x080c, 0x75fb, -+ 0x20a3, 0x0500, 0x20a3, 0x0000, 0x2001, 0xb435, 0x2004, 0xd0ac, -+ 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, 0x007f, 0x0238, -+ 0x2001, 0xb41c, 0x20a6, 0x2001, 0xb41d, 0x20a6, 0x0040, 0x20a3, -+ 0x0000, 0x2001, 0xb415, 0x2004, 0xa084, 0x00ff, 0x20a2, 0x20a9, -+ 0x0004, 0x2099, 0xb405, 0x53a6, 0x60c3, 0x0010, 0x080c, 0x7d11, -+ 0x0005, 0x20a1, 0x020b, 0x080c, 0x75fb, 0x00c6, 0x7818, 0x2060, -+ 0x2001, 0x0000, 0x080c, 0x52d4, 0x00ce, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0xa086, 0x007e, 0x1130, 0x20a3, 0x0400, 0x620c, 0xc2b4, -+ 0x620e, 0x0010, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x7818, 0xa080, -+ 0x0028, 0x2004, 0xa086, 0x007e, 0x1904, 0x7470, 0x2001, 0xb435, -+ 0x2004, 0xd0a4, 0x01c8, 0x2099, 0xb68e, 0x33a6, 0x9398, 0x20a3, -+ 0x0000, 0x9398, 0x3304, 0xa084, 0x2000, 0x20a2, 0x9398, 0x33a6, -+ 0x9398, 0x20a3, 0x0000, 0x9398, 0x2001, 0x2710, 0x20a2, 0x9398, -+ 0x33a6, 0x9398, 0x33a6, 0x00d0, 0x2099, 0xb68e, 0x33a6, 0x9398, -+ 0x33a6, 0x9398, 0x3304, 0x080c, 0x5a90, 0x1118, 0xa084, 0x37ff, -+ 0x0010, 0xa084, 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, -+ 0x2099, 0xb405, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb401, 0x53a6, -+ 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x744a, 0x20a9, 0x0008, -+ 0x20a3, 0x0000, 0x1f04, 0x7450, 0x2099, 0xb696, 0x3304, 0xc0dd, -+ 0x20a2, 0x2001, 0xb472, 0x2004, 0xd0e4, 0x0158, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x9398, 0x9398, 0x9398, 0x33a6, 0x20a9, 0x0004, -+ 0x0010, 0x20a9, 0x0007, 0x20a3, 0x0000, 0x1f04, 0x746b, 0x0468, -+ 0x2001, 0xb435, 0x2004, 0xd0a4, 0x0140, 0x2001, 0xb68f, 0x2004, -+ 0x60e3, 0x0000, 0x080c, 0x2838, 0x60e2, 0x2099, 0xb68e, 0x20a9, -+ 0x0008, 0x53a6, 0x20a9, 0x0004, 0x2099, 0xb405, 0x53a6, 0x20a9, -+ 0x0004, 0x2099, 0xb401, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, -+ 0x1f04, 0x748e, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x1f04, 0x7494, -+ 0x2099, 0xb696, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, -+ 0x0000, 0x1f04, 0x749f, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x1f04, -+ 0x74a5, 0x60c3, 0x0074, 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, -+ 0x080c, 0x75fb, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, -+ 0x20a3, 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, -+ 0x00f6, 0x2079, 0xb452, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0xa085, -+ 0x0020, 0xd1a4, 0x0110, 0xa085, 0x0010, 0xa085, 0x0002, 0x00d6, -+ 0x0804, 0x7586, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, -+ 0x0014, 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, 0x080c, 0x75fb, -+ 0x20a3, 0x5000, 0x0804, 0x73fc, 0x20a1, 0x020b, 0x080c, 0x75fb, -+ 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0014, 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, 0x080c, -+ 0x768f, 0x0020, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, 0x0200, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, -+ 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, -+ 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, -+ 0x0008, 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7697, -+ 0x20a3, 0x0200, 0x0804, 0x73fc, 0x20a1, 0x020b, 0x080c, 0x7697, -+ 0x20a3, 0x0100, 0x20a3, 0x0000, 0x7828, 0xa005, 0x0110, 0x20a2, -+ 0x0010, 0x20a3, 0x0003, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, -+ 0x7d11, 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, -+ 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, -+ 0xa086, 0x0014, 0x1178, 0x6998, 0xa184, 0xc000, 0x1140, 0xd1ec, -+ 0x0118, 0x20a3, 0x2100, 0x0040, 0x20a3, 0x0100, 0x0028, 0x20a3, -+ 0x0400, 0x0010, 0x20a3, 0x0700, 0xa006, 0x20a2, 0x20a2, 0x20a2, -+ 0x20a2, 0x20a2, 0x00f6, 0x2079, 0xb452, 0x7904, 0x00fe, 0xd1ac, -+ 0x1110, 0xa085, 0x0020, 0xd1a4, 0x0110, 0xa085, 0x0010, 0x2009, -+ 0xb474, 0x210c, 0xd184, 0x1110, 0xa085, 0x0002, 0x0026, 0x2009, -+ 0xb472, 0x210c, 0xd1e4, 0x0130, 0xc0c5, 0xa094, 0x0030, 0xa296, -+ 0x0010, 0x0140, 0xd1ec, 0x0130, 0xa094, 0x0030, 0xa296, 0x0010, -+ 0x0108, 0xc0bd, 0x002e, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, -+ 0x080c, 0x7d11, 0x00de, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7697, -+ 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x60c3, 0x0014, 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, 0x080c, -+ 0x7697, 0x20a3, 0x0200, 0x0804, 0x736f, 0x20a1, 0x020b, 0x080c, -+ 0x7697, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, -+ 0x2a00, 0x60c3, 0x0008, 0x080c, 0x7d11, 0x0005, 0x20e1, 0x9080, -+ 0x20e1, 0x4000, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, 0x0100, -+ 0x20a3, 0x0000, 0x20a3, 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, -+ 0x080c, 0x7d11, 0x0005, 0x0026, 0x0036, 0x0046, 0x2019, 0x3200, -+ 0x2021, 0x0800, 0x0038, 0x0026, 0x0036, 0x0046, 0x2019, 0x2200, -+ 0x2021, 0x0100, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, -+ 0x0028, 0x2014, 0xa286, 0x007e, 0x11a0, 0xa385, 0x00ff, 0x20a2, -+ 0x20a3, 0xfffe, 0x20a3, 0x0000, 0x2011, 0xb415, 0x2214, 0x2001, -+ 0xb69e, 0x2004, 0xa005, 0x0118, 0x2011, 0xb41d, 0x2214, 0x22a2, -+ 0x04d0, 0xa286, 0x007f, 0x1138, 0x00d6, 0xa385, 0x00ff, 0x20a2, -+ 0x20a3, 0xfffd, 0x00c8, 0x2001, 0xb435, 0x2004, 0xd0ac, 0x1110, -+ 0xd2bc, 0x01c8, 0xa286, 0x0080, 0x00d6, 0x1130, 0xa385, 0x00ff, -+ 0x20a2, 0x20a3, 0xfffc, 0x0040, 0xa2e8, 0xb535, 0x2d6c, 0x6810, -+ 0xa305, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb41c, 0x2da6, 0x8d68, -+ 0x2da6, 0x00de, 0x0080, 0x00d6, 0xa2e8, 0xb535, 0x2d6c, 0x6810, -+ 0xa305, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, -+ 0xb415, 0x2214, 0x22a2, 0xa485, 0x0029, 0x20a2, 0x004e, 0x003e, -+ 0x20a3, 0x0000, 0x080c, 0x7d00, 0x22a2, 0x20a3, 0x0000, 0x2fa2, -+ 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, -+ 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff, 0x2011, -+ 0xfffc, 0x22a2, 0x00d6, 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, -+ 0x00de, 0x20a3, 0x2029, 0x20a3, 0x0000, 0x08e0, 0x20a3, 0x0100, -+ 0x20a3, 0x0000, 0x20a3, 0xfc02, 0x20a3, 0x0000, 0x0005, 0x0026, -+ 0x0036, 0x0046, 0x2019, 0x3300, 0x2021, 0x0800, 0x0038, 0x0026, -+ 0x0036, 0x0046, 0x2019, 0x2300, 0x2021, 0x0100, 0x20e1, 0x9080, -+ 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb435, -+ 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e, 0x02d8, 0x00d6, 0xa0e8, -+ 0xb535, 0x2d6c, 0x6810, 0xa305, 0x20a2, 0x6814, 0x20a2, 0x6810, -+ 0xa005, 0x1140, 0x6814, 0xa005, 0x1128, 0x20a3, 0x00ff, 0x20a3, -+ 0xfffe, 0x0028, 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, 0x00de, -+ 0x0080, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa305, 0x20a2, -+ 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb415, 0x2214, -+ 0x22a2, 0xa485, 0x0098, 0x20a2, 0x20a3, 0x0000, 0x004e, 0x003e, -+ 0x080c, 0x7d00, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x080c, 0x7d00, -+ 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x7810, 0x20a2, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00c6, 0x00f6, 0x6004, -+ 0xa08a, 0x0085, 0x0a0c, 0x1511, 0xa08a, 0x008c, 0x1a0c, 0x1511, -+ 0x6118, 0x2178, 0x79a0, 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1110, -+ 0xd1bc, 0x0150, 0x7900, 0xd1f4, 0x0120, 0x7914, 0xa18c, 0x00ff, -+ 0x0040, 0x2009, 0x0000, 0x0028, 0xa1f8, 0x2d88, 0x2f0d, 0xa18c, -+ 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa082, 0x0085, 0x001b, -+ 0x00fe, 0x00ce, 0x0005, 0x7734, 0x773e, 0x7759, 0x7732, 0x7732, -+ 0x7732, 0x7734, 0x080c, 0x1511, 0x0146, 0x20a1, 0x020b, 0x04a1, -+ 0x60c3, 0x0000, 0x080c, 0x7d11, 0x014e, 0x0005, 0x0146, 0x20a1, -+ 0x020b, 0x080c, 0x77a5, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, -+ 0x20a2, 0x7810, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, 0x080c, 0x7d11, 0x014e, -+ 0x0005, 0x0146, 0x20a1, 0x020b, 0x080c, 0x77df, 0x20a3, 0x0003, -+ 0x20a3, 0x0300, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, -+ 0x080c, 0x7d11, 0x014e, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb435, 0x2214, -+ 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, 0xb535, -+ 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x2069, -+ 0xb41c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, -+ 0xb535, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, -+ 0x00de, 0x20a3, 0x0000, 0x2011, 0xb415, 0x2214, 0x22a2, 0x20a3, -+ 0x0009, 0x20a3, 0x0000, 0x0804, 0x7662, 0x0026, 0x20e1, 0x9080, -+ 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb435, -+ 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0288, 0x00d6, 0xa0e8, -+ 0xb535, 0x2d6c, 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, -+ 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, -+ 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814, -+ 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb415, 0x2214, 0x22a2, -+ 0x2001, 0x0099, 0x20a2, 0x20a3, 0x0000, 0x0804, 0x76ee, 0x0026, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, -+ 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1118, 0xa092, 0x007e, 0x0288, -+ 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, -+ 0x6814, 0x20a2, 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, 0x00de, -+ 0x0088, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x8500, -+ 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb415, -+ 0x2214, 0x22a2, 0x2001, 0x0099, 0x20a2, 0x20a3, 0x0000, 0x0804, -+ 0x76ee, 0x00c6, 0x00f6, 0x2c78, 0x7804, 0xa08a, 0x0040, 0x0a0c, -+ 0x1511, 0xa08a, 0x0053, 0x1a0c, 0x1511, 0x7918, 0x2160, 0x61a0, -+ 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1110, 0xd1bc, 0x0150, 0x6100, -+ 0xd1f4, 0x0120, 0x6114, 0xa18c, 0x00ff, 0x0040, 0x2009, 0x0000, -+ 0x0028, 0xa1e0, 0x2d88, 0x2c0d, 0xa18c, 0x00ff, 0x2061, 0x0100, -+ 0x619a, 0xa082, 0x0040, 0x001b, 0x00fe, 0x00ce, 0x0005, 0x785c, -+ 0x7968, 0x7905, 0x7b0a, 0x785a, 0x785a, 0x785a, 0x785a, 0x785a, -+ 0x785a, 0x785a, 0x8081, 0x8091, 0x80a1, 0x80b1, 0x785a, 0x84c1, -+ 0x785a, 0x8070, 0x080c, 0x1511, 0x00d6, 0x0156, 0x0146, 0x780b, -+ 0xffff, 0x20a1, 0x020b, 0x080c, 0x78bc, 0x7910, 0x2168, 0x6948, -+ 0x7952, 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, -+ 0x000f, 0x1118, 0x2001, 0x0005, 0x0040, 0xd184, 0x0118, 0x2001, -+ 0x0004, 0x0018, 0xa084, 0x0006, 0x8004, 0x0016, 0x2008, 0x7858, -+ 0xa084, 0x00ff, 0x8007, 0xa105, 0x001e, 0x20a2, 0xd1ac, 0x0118, -+ 0x20a3, 0x0002, 0x0048, 0xd1b4, 0x0118, 0x20a3, 0x0001, 0x0020, -+ 0x20a3, 0x0000, 0x2230, 0x0010, 0x6a80, 0x6e7c, 0x20a9, 0x0008, -+ 0x0136, 0xad88, 0x0017, 0x2198, 0x20a1, 0x021b, 0x53a6, 0x013e, -+ 0x20a1, 0x020b, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, -+ 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0xb6fc, -+ 0x2003, 0x07d0, 0x2001, 0xb6fb, 0x2003, 0x0009, 0x080c, 0x17da, -+ 0x014e, 0x015e, 0x00de, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, -+ 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, -+ 0x8217, 0x7818, 0xa080, 0x0028, 0x2004, 0x2019, 0xb435, 0x231c, -+ 0xd3ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, -+ 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb41c, -+ 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb535, -+ 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x00de, -+ 0x20a3, 0x0000, 0x2009, 0xb415, 0x210c, 0x21a2, 0x20a3, 0x0829, -+ 0x20a3, 0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x0005, 0x00d6, 0x0156, 0x0136, -+ 0x0146, 0x20a1, 0x020b, 0x00c1, 0x7810, 0x2068, 0x6860, 0x20a2, -+ 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2, -+ 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x080c, 0x7d11, 0x014e, -+ 0x013e, 0x015e, 0x00de, 0x0005, 0x0026, 0x20e1, 0x9080, 0x20e1, -+ 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0x2011, 0xb435, 0x2214, -+ 0xd2ac, 0x1110, 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, -+ 0x6810, 0xa085, 0x0500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb41c, -+ 0x2da6, 0x8d68, 0x2da6, 0x00de, 0x0088, 0x00d6, 0xa0e8, 0xb535, -+ 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2, 0x6814, 0x20a2, 0x00de, -+ 0x20a3, 0x0000, 0x2011, 0xb415, 0x2214, 0x22a2, 0x20a3, 0x0889, -+ 0x20a3, 0x0000, 0x080c, 0x7d00, 0x22a2, 0x20a3, 0x0000, 0x7a08, -+ 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, -+ 0x00d6, 0x0156, 0x0136, 0x0146, 0x7810, 0xa0ec, 0xf000, 0x0168, -+ 0xa06d, 0x080c, 0x52c2, 0x0148, 0x684c, 0xa084, 0x2020, 0xa086, -+ 0x2020, 0x1118, 0x7820, 0xc0cd, 0x7822, 0x20a1, 0x020b, 0x080c, -+ 0x7ac0, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, -+ 0xa084, 0xf000, 0x1130, 0x7810, 0xa084, 0x0700, 0x8007, 0x0043, -+ 0x0010, 0xa006, 0x002b, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, -+ 0x79a2, 0x7a37, 0x7a40, 0x7a69, 0x7a7c, 0x7a97, 0x7aa0, 0x79a0, -+ 0x080c, 0x1511, 0x0016, 0x0036, 0x694c, 0xa18c, 0x0003, 0x0118, -+ 0xa186, 0x0003, 0x1170, 0x6b78, 0x7820, 0xd0cc, 0x0108, 0xc3e5, -+ 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x003e, 0x001e, 0x0804, -+ 0x7a73, 0xa186, 0x0001, 0x190c, 0x1511, 0x6b78, 0x7820, 0xd0cc, -+ 0x0108, 0xc3e5, 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, -+ 0x6874, 0x20a2, 0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, -+ 0x0300, 0x0904, 0x7a31, 0xd3c4, 0x0110, 0x687c, 0xa108, 0xd3cc, -+ 0x0110, 0x6874, 0xa108, 0x0156, 0x20a9, 0x000d, 0xad80, 0x0020, -+ 0x201c, 0x831f, 0x23a2, 0x8000, 0x1f04, 0x79e0, 0x015e, 0x22a2, -+ 0x22a2, 0x22a2, 0xa184, 0x0003, 0x0904, 0x7a31, 0x20a1, 0x020b, -+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x0006, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, -+ 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, -+ 0x6814, 0x20a2, 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, 0x00de, -+ 0x0088, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x0700, -+ 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb415, -+ 0x2214, 0x22a2, 0x000e, 0x7b20, 0xd3cc, 0x0118, 0x20a3, 0x0889, -+ 0x0010, 0x20a3, 0x0898, 0x20a2, 0x080c, 0x7d00, 0x22a2, 0x20a3, -+ 0x0000, 0x61c2, 0x003e, 0x001e, 0x080c, 0x7d11, 0x0005, 0x2011, -+ 0x0008, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x0488, -+ 0x2011, 0x0302, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, -+ 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, -+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, -+ 0x22a2, 0x20a3, 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, -+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x080c, 0x7d11, -+ 0x0005, 0x2011, 0x0028, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, -+ 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, -+ 0x0018, 0x080c, 0x7d11, 0x0005, 0x2011, 0x0100, 0x7820, 0xd0cc, -+ 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, -+ 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x7854, 0xa084, 0x00ff, 0x20a2, -+ 0x22a2, 0x22a2, 0x60c3, 0x0020, 0x080c, 0x7d11, 0x0005, 0x2011, -+ 0x0008, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0xa016, 0x0888, -+ 0x0036, 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff, 0x8001, -+ 0x1138, 0x7820, 0xd0cc, 0x0108, 0xc2e5, 0x22a2, 0x003e, 0x0808, -+ 0x0046, 0x2021, 0x0800, 0x0006, 0x7820, 0xd0cc, 0x000e, 0x0108, -+ 0xc4e5, 0x24a2, 0x004e, 0x22a2, 0x20a2, 0x003e, 0x0804, 0x7a73, -+ 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, -+ 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2, -+ 0x6814, 0x20a2, 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, 0x00de, -+ 0x0088, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x0700, -+ 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb415, -+ 0x2214, 0x22a2, 0x7820, 0xd0cc, 0x0118, 0x20a3, 0x0889, 0x0010, -+ 0x20a3, 0x0898, 0x20a3, 0x0000, 0x080c, 0x7d00, 0x22a2, 0x20a3, -+ 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x002e, 0x0005, 0x00d6, 0x0156, 0x0136, 0x0146, 0x0016, 0x0036, -+ 0x7810, 0xa084, 0x0700, 0x8007, 0x003b, 0x003e, 0x001e, 0x014e, -+ 0x013e, 0x015e, 0x00de, 0x0005, 0x7b24, 0x7b24, 0x7b26, 0x7b24, -+ 0x7b24, 0x7b24, 0x7b48, 0x7b24, 0x080c, 0x1511, 0x7910, 0xa18c, -+ 0xf8ff, 0xa18d, 0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, -+ 0x00f9, 0x00d6, 0x2069, 0xb452, 0x6804, 0xd0bc, 0x0130, 0x682c, -+ 0xa084, 0x00ff, 0x8007, 0x20a2, 0x0010, 0x20a3, 0x3f00, 0x00de, -+ 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x080c, 0x7d11, 0x0005, -+ 0x20a1, 0x020b, 0x2009, 0x0003, 0x0019, 0x20a3, 0x7f00, 0x0c80, -+ 0x0026, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, -+ 0x2004, 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1110, 0xd0bc, 0x0188, -+ 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, -+ 0x6814, 0x20a2, 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, 0x00de, -+ 0x0088, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, 0x0100, -+ 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, 0x2011, 0xb415, -+ 0x2214, 0x22a2, 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x080c, -+ 0x7d00, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, -+ 0x0000, 0x20a3, 0x0000, 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6, -+ 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, 0x2071, 0xb400, 0x7154, -+ 0x7818, 0x2068, 0x68a0, 0x2028, 0x76d4, 0xd6ac, 0x1130, 0xd0bc, -+ 0x1120, 0x6910, 0x6a14, 0x7454, 0x0020, 0x6910, 0x6a14, 0x7370, -+ 0x7474, 0x781c, 0xa0be, 0x0006, 0x0904, 0x7c4b, 0xa0be, 0x000a, -+ 0x15e8, 0xa185, 0x0200, 0x6062, 0x6266, 0x636a, 0x646e, 0x6073, -+ 0x2029, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, -+ 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, -+ 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, -+ 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, -+ 0x609f, 0x0000, 0x080c, 0x855c, 0x2009, 0x07d0, 0x60c4, 0xa084, -+ 0xfff0, 0xa005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x69da, 0x003e, -+ 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x70d4, 0xd0ac, -+ 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, -+ 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, -+ 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, -+ 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, -+ 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, -+ 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, -+ 0x60d7, 0x0000, 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, -+ 0x6a14, 0xa294, 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, -+ 0x855c, 0x2009, 0x07d0, 0x60c4, 0xa084, 0xfff0, 0xa005, 0x0110, -+ 0x2009, 0x1b58, 0x080c, 0x69da, 0x003e, 0x004e, 0x005e, 0x00ce, -+ 0x00de, 0x00ee, 0x0005, 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, -+ 0xa086, 0x0002, 0x0904, 0x7ca1, 0x2001, 0xb435, 0x2004, 0xd0ac, -+ 0x1110, 0xd5bc, 0x0138, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, -+ 0x646e, 0x0038, 0xa185, 0x0100, 0x6062, 0x6266, 0x606b, 0x0000, -+ 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, -+ 0x00ff, 0x688e, 0x8007, 0x607a, 0x7834, 0x607e, 0x2f00, 0x6086, -+ 0x7808, 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, -+ 0x707c, 0x60ca, 0x707c, 0x792c, 0xa108, 0x792e, 0x7080, 0x7928, -+ 0xa109, 0x792a, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, -+ 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0xa294, -+ 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x080c, 0x8559, 0x0804, -+ 0x7c39, 0x2001, 0xb435, 0x2004, 0xd0ac, 0x1110, 0xd5bc, 0x0138, -+ 0xa185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, 0x0038, 0xa185, -+ 0x0700, 0x6062, 0x6266, 0x606b, 0x0000, 0x646e, 0x080c, 0x52c2, -+ 0x0180, 0x00d6, 0x7810, 0xa06d, 0x684c, 0x00de, 0xa084, 0x2020, -+ 0xa086, 0x2020, 0x1130, 0x7820, 0xc0cd, 0x7822, 0x6073, 0x0889, -+ 0x0010, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, 0x8000, 0xa084, -+ 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, -+ 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, -+ 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, -+ 0xa582, 0x0080, 0x0248, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0xa294, -+ 0x00ff, 0x0010, 0x2011, 0x0000, 0x629e, 0x7820, 0xd0cc, 0x0120, -+ 0x080c, 0x855c, 0x0804, 0x7c39, 0x080c, 0x8559, 0x0804, 0x7c39, -+ 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, -+ 0x8217, 0x0005, 0x00d6, 0x2069, 0xb6e0, 0x6843, 0x0001, 0x00de, -+ 0x0005, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x0019, -+ 0x080c, 0x69cc, 0x0005, 0x0006, 0x6014, 0xa084, 0x0004, 0xa085, -+ 0x0009, 0x6016, 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, -+ 0x0100, 0x61a4, 0x60a7, 0x95f5, 0x6014, 0xa084, 0x0004, 0xa085, -+ 0x0008, 0x6016, 0x000e, 0xe000, 0xe000, 0xe000, 0xe000, 0x61a6, -+ 0x00ce, 0x001e, 0x0005, 0x00c6, 0x00d6, 0x0016, 0x0026, 0x2061, -+ 0x0100, 0x2069, 0x0140, 0x080c, 0x5a90, 0x1198, 0x2001, 0xb6fc, -+ 0x2004, 0xa005, 0x15b8, 0x0066, 0x2031, 0x0001, 0x080c, 0x5b12, -+ 0x006e, 0x1118, 0x080c, 0x69cc, 0x0468, 0x00c6, 0x2061, 0xb6e0, -+ 0x00d8, 0x6904, 0xa194, 0x4000, 0x0550, 0x0831, 0x6803, 0x1000, -+ 0x6803, 0x0000, 0x00c6, 0x2061, 0xb6e0, 0x6128, 0xa192, 0x00c8, -+ 0x1258, 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, -+ 0x69cc, 0x080c, 0x7d1b, 0x0070, 0x6124, 0xa1e5, 0x0000, 0x0140, -+ 0x080c, 0xb3c7, 0x080c, 0x69d5, 0x2009, 0x0014, 0x080c, 0x85ef, -+ 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, -+ 0xb6fc, 0x2004, 0xa005, 0x1db0, 0x00c6, 0x2061, 0xb6e0, 0x6128, -+ 0xa192, 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x69cc, -+ 0x080c, 0x4ad9, 0x0c38, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, -+ 0x080c, 0x69e2, 0x2071, 0xb6e0, 0x713c, 0x81ff, 0x0590, 0x2061, -+ 0x0100, 0x2069, 0x0140, 0x080c, 0x5a90, 0x11a8, 0x0036, 0x2019, -+ 0x0002, 0x080c, 0x7f8e, 0x003e, 0x713c, 0x2160, 0x080c, 0xb3c7, -+ 0x2009, 0x004a, 0x080c, 0x85ef, 0x0066, 0x2031, 0x0001, 0x080c, -+ 0x5b12, 0x006e, 0x00b0, 0x6904, 0xa194, 0x4000, 0x01c0, 0x6803, -+ 0x1000, 0x6803, 0x0000, 0x0036, 0x2019, 0x0001, 0x080c, 0x7f8e, -+ 0x003e, 0x713c, 0x2160, 0x080c, 0xb3c7, 0x2009, 0x004a, 0x080c, -+ 0x85ef, 0x002e, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0c58, -+ 0x0026, 0x00e6, 0x2071, 0xb6e0, 0x7048, 0xd084, 0x01c0, 0x713c, -+ 0x81ff, 0x01a8, 0x2071, 0x0100, 0xa188, 0x0007, 0x2114, 0xa28e, -+ 0x0006, 0x1138, 0x7014, 0xa084, 0x0184, 0xa085, 0x0012, 0x7016, -+ 0x0030, 0x7014, 0xa084, 0x0184, 0xa085, 0x0016, 0x7016, 0x00ee, -+ 0x002e, 0x0005, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, -+ 0x0006, 0x0126, 0x2091, 0x8000, 0x6018, 0x2068, 0x6ca0, 0x2071, -+ 0xb6e0, 0x7018, 0x2068, 0x8dff, 0x0188, 0x68a0, 0xa406, 0x0118, -+ 0x6854, 0x2068, 0x0cc0, 0x6010, 0x2060, 0x643c, 0x6540, 0x6648, -+ 0x2d60, 0x080c, 0x50db, 0x0110, 0xa085, 0x0001, 0x012e, 0x000e, -+ 0x004e, 0x005e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x20a1, -+ 0x020b, 0x080c, 0x75fb, 0x20a3, 0x1200, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x781c, 0xa086, 0x0004, 0x1110, 0x6098, 0x0018, 0x2001, -+ 0xb415, 0x2004, 0x20a2, 0x7834, 0x20a2, 0x7838, 0x20a2, 0x20a9, -+ 0x0010, 0xa006, 0x20a2, 0x1f04, 0x7e4a, 0x20a2, 0x20a2, 0x60c3, -+ 0x002c, 0x080c, 0x7d11, 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, -+ 0x080c, 0x75fb, 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x7808, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d11, 0x014e, 0x015e, -+ 0x0005, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, -+ 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006, 0x2011, 0xb440, 0x2019, -+ 0xb441, 0x23a6, 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x1f04, -+ 0x7e79, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x080c, -+ 0x7d11, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x0016, 0x0026, -+ 0x20a1, 0x020b, 0x080c, 0x7670, 0x080c, 0x7686, 0x7810, 0xa080, -+ 0x0000, 0x2004, 0xa080, 0x0015, 0x2098, 0x7808, 0xa088, 0x0002, -+ 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003, 0x60c2, 0x080c, 0x7d11, -+ 0x002e, 0x001e, 0x014e, 0x015e, 0x0005, 0x0156, 0x0146, 0x20a1, -+ 0x020b, 0x080c, 0x75fb, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d11, 0x014e, -+ 0x015e, 0x0005, 0x0156, 0x0146, 0x0016, 0x0026, 0x20a1, 0x020b, -+ 0x080c, 0x75fb, 0x7810, 0xa080, 0x0000, 0x2004, 0xa080, 0x0017, -+ 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0x8003, 0x60c2, -+ 0x080c, 0x7d11, 0x002e, 0x001e, 0x014e, 0x015e, 0x0005, 0x00e6, -+ 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xb6e0, 0x700c, -+ 0x2060, 0x8cff, 0x0178, 0x080c, 0x9de9, 0x1110, 0x080c, 0x8bbc, -+ 0x600c, 0x0006, 0x080c, 0x9fb0, 0x080c, 0x85c0, 0x080c, 0x80c8, -+ 0x00ce, 0x0c78, 0x700f, 0x0000, 0x700b, 0x0000, 0x012e, 0x000e, -+ 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, -+ 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091, 0x8000, 0x2069, 0x0100, -+ 0x2079, 0x0140, 0x2071, 0xb6e0, 0x7024, 0x2060, 0x8cff, 0x05a0, -+ 0x080c, 0x7d24, 0x68c3, 0x0000, 0x080c, 0x69d5, 0x2009, 0x0013, -+ 0x080c, 0x85ef, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0158, 0x6827, -+ 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, 0x7803, 0x1000, 0x7803, -+ 0x0000, 0x0078, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, -+ 0x7f24, 0x7804, 0xa084, 0x1000, 0x0120, 0x7803, 0x0100, 0x7803, -+ 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, -+ 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001, 0xb400, 0x2004, 0xa096, -+ 0x0001, 0x0590, 0xa096, 0x0004, 0x0578, 0x080c, 0x69d5, 0x6814, -+ 0xa084, 0x0001, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, 0x68c3, -+ 0x0000, 0x2011, 0x4a96, 0x080c, 0x6961, 0x20a9, 0x01f4, 0x6824, -+ 0xd094, 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, -+ 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0xd084, 0x0118, 0x6827, -+ 0x0001, 0x0010, 0x1f04, 0x7f67, 0x7804, 0xa084, 0x1000, 0x0120, -+ 0x7803, 0x0100, 0x7803, 0x0000, 0x000e, 0x001e, 0x002e, 0x00ce, -+ 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x0126, 0x0156, -+ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, 0x2091, -+ 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0xb6e0, 0x703c, -+ 0x2060, 0x8cff, 0x0904, 0x8015, 0xa386, 0x0002, 0x1128, 0x6814, -+ 0xa084, 0x0002, 0x0904, 0x8015, 0x68af, 0x95f5, 0x6817, 0x0010, -+ 0x2009, 0x00fa, 0x8109, 0x1df0, 0x68c7, 0x0000, 0x68cb, 0x0008, -+ 0x080c, 0x69e2, 0x080c, 0x21dd, 0x0046, 0x2009, 0x017f, 0x200b, -+ 0x00a5, 0x2021, 0x0169, 0x2404, 0xa084, 0x000f, 0xa086, 0x0004, -+ 0x1500, 0x68af, 0x95f5, 0x68c7, 0x0000, 0x68cb, 0x0008, 0x00e6, -+ 0x00f6, 0x2079, 0x0020, 0x2071, 0xb74a, 0x6814, 0xa084, 0x0184, -+ 0xa085, 0x0012, 0x6816, 0x7803, 0x0008, 0x7003, 0x0000, 0x00fe, -+ 0x00ee, 0xa386, 0x0002, 0x1128, 0x7884, 0xa005, 0x1110, 0x7887, -+ 0x0001, 0x2001, 0xb6b1, 0x2004, 0x200a, 0x004e, 0xa39d, 0x0000, -+ 0x1120, 0x2009, 0x0049, 0x080c, 0x85ef, 0x20a9, 0x03e8, 0x6824, -+ 0xd094, 0x0158, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x01a0, -+ 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0xd08c, 0x0118, 0x6827, -+ 0x0002, 0x0010, 0x1f04, 0x7ff7, 0x7804, 0xa084, 0x1000, 0x0120, -+ 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x000e, 0x001e, 0x002e, -+ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x00d6, -+ 0x0126, 0x2091, 0x8000, 0x2069, 0xb6e0, 0x6a06, 0x012e, 0x00de, -+ 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0xb6e0, 0x6a32, -+ 0x012e, 0x00de, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0006, -+ 0x0126, 0x2071, 0xb6e0, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000, -+ 0x8cff, 0x0538, 0x601c, 0xa206, 0x1500, 0x7014, 0xac36, 0x1110, -+ 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, -+ 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, -+ 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, -+ 0x9dae, 0x080c, 0x80c8, 0x00ce, 0x08d8, 0x2c78, 0x600c, 0x2060, -+ 0x08b8, 0x012e, 0x000e, 0x006e, 0x00ce, 0x00ee, 0x00fe, 0x0005, -+ 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x78bc, 0x7810, 0x20a2, -+ 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x1000, 0x0804, -+ 0x80c0, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x78bc, 0x7810, -+ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, -+ 0x0478, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x78bc, 0x7810, -+ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, -+ 0x00f8, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x78bc, 0x7810, -+ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, -+ 0x0078, 0x0156, 0x0146, 0x20a1, 0x020b, 0x080c, 0x78bc, 0x7810, -+ 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, -+ 0x0089, 0x60c3, 0x0020, 0x080c, 0x7d11, 0x014e, 0x015e, 0x0005, -+ 0x00e6, 0x2071, 0xb6e0, 0x7020, 0xa005, 0x0110, 0x8001, 0x7022, -+ 0x00ee, 0x0005, 0x20a9, 0x0008, 0x20a2, 0x1f04, 0x80d4, 0x20a2, -+ 0x20a2, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, -+ 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xb6e0, 0x7614, 0x2660, -+ 0x2678, 0x2039, 0x0001, 0x87ff, 0x0904, 0x8169, 0x8cff, 0x0904, -+ 0x8169, 0x601c, 0xa086, 0x0006, 0x1904, 0x8164, 0x88ff, 0x0138, -+ 0x2800, 0xac06, 0x1904, 0x8164, 0x2039, 0x0000, 0x0050, 0x6018, -+ 0xa206, 0x1904, 0x8164, 0x85ff, 0x0120, 0x6050, 0xa106, 0x1904, -+ 0x8164, 0x7024, 0xac06, 0x1560, 0x2069, 0x0100, 0x68c0, 0xa005, -+ 0x0518, 0x080c, 0x69d5, 0x6820, 0xd0b4, 0x0110, 0x68a7, 0x95f5, -+ 0x6817, 0x0008, 0x68c3, 0x0000, 0x080c, 0x81f0, 0x7027, 0x0000, -+ 0x0036, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, -+ 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, -+ 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, 0x0460, -+ 0x7014, 0xac36, 0x1110, 0x660c, 0x7616, 0x7010, 0xac36, 0x1140, -+ 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, -+ 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, -+ 0x89ff, 0x1158, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, 0x9beb, -+ 0x0110, 0x080c, 0xb01c, 0x080c, 0x9dae, 0x080c, 0x80c8, 0x88ff, -+ 0x1190, 0x00ce, 0x0804, 0x80eb, 0x2c78, 0x600c, 0x2060, 0x0804, -+ 0x80eb, 0xa006, 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce, 0x00de, -+ 0x00ee, 0x00fe, 0x0005, 0x6017, 0x0000, 0x00ce, 0xa8c5, 0x0001, -+ 0x0c88, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, 0x0006, -+ 0x0126, 0x2091, 0x8000, 0x2071, 0xb6e0, 0x7638, 0x2660, 0x2678, -+ 0x8cff, 0x0904, 0x81e0, 0x601c, 0xa086, 0x0006, 0x1904, 0x81db, -+ 0x87ff, 0x0128, 0x2700, 0xac06, 0x1904, 0x81db, 0x0048, 0x6018, -+ 0xa206, 0x1904, 0x81db, 0x85ff, 0x0118, 0x6050, 0xa106, 0x15d8, -+ 0x703c, 0xac06, 0x1180, 0x0036, 0x2019, 0x0001, 0x080c, 0x7f8e, -+ 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, -+ 0x704b, 0x0000, 0x003e, 0x7038, 0xac36, 0x1110, 0x660c, 0x763a, -+ 0x7034, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x7036, -+ 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, -+ 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x080c, -+ 0x9beb, 0x0110, 0x080c, 0xb01c, 0x080c, 0x9dae, 0x87ff, 0x1190, -+ 0x00ce, 0x0804, 0x8188, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8188, -+ 0xa006, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, -+ 0x00fe, 0x0005, 0x6017, 0x0000, 0x00ce, 0xa7bd, 0x0001, 0x0c88, -+ 0x00e6, 0x2071, 0xb6e0, 0x2001, 0xb400, 0x2004, 0xa086, 0x0002, -+ 0x1118, 0x7007, 0x0005, 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, -+ 0x00f6, 0x00e6, 0x00c6, 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, -+ 0x8000, 0x2071, 0xb6e0, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, -+ 0x0518, 0x2200, 0xac06, 0x11e0, 0x7038, 0xac36, 0x1110, 0x660c, -+ 0x763a, 0x7034, 0xac36, 0x1140, 0x2c00, 0xaf36, 0x0118, 0x2f00, -+ 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0110, -+ 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0020, -+ 0x2c78, 0x600c, 0x2060, 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, -+ 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, -+ 0x0066, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0xb6e0, 0x760c, -+ 0x2660, 0x2678, 0x8cff, 0x0904, 0x82c6, 0x6018, 0xa080, 0x0028, -+ 0x2004, 0xa206, 0x1904, 0x82c1, 0x7024, 0xac06, 0x1508, 0x2069, -+ 0x0100, 0x68c0, 0xa005, 0x0904, 0x829d, 0x080c, 0x7d24, 0x68c3, -+ 0x0000, 0x080c, 0x81f0, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, -+ 0x6b04, 0xa384, 0x1000, 0x0120, 0x6803, 0x0100, 0x6803, 0x0000, -+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, -+ 0x700c, 0xac36, 0x1110, 0x660c, 0x760e, 0x7008, 0xac36, 0x1140, -+ 0x2c00, 0xaf36, 0x0118, 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, -+ 0x660c, 0x0066, 0x2c00, 0xaf06, 0x0110, 0x7e0e, 0x0008, 0x2678, -+ 0x600f, 0x0000, 0x080c, 0x9dd8, 0x1158, 0x080c, 0x2c86, 0x080c, -+ 0x9de9, 0x11f0, 0x080c, 0x8bbc, 0x00d8, 0x080c, 0x81f0, 0x08c0, -+ 0x080c, 0x9de9, 0x1118, 0x080c, 0x8bbc, 0x0090, 0x6010, 0x2068, -+ 0x080c, 0x9beb, 0x0168, 0x601c, 0xa086, 0x0003, 0x11f8, 0x6837, -+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x080c, 0x53c9, 0x080c, 0x9da2, -+ 0x080c, 0x9fb0, 0x080c, 0x9dae, 0x080c, 0x80c8, 0x00ce, 0x0804, -+ 0x824a, 0x2c78, 0x600c, 0x2060, 0x0804, 0x824a, 0x012e, 0x000e, -+ 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601c, 0xa086, -+ 0x0006, 0x1d30, 0x080c, 0xb01c, 0x0c18, 0x0036, 0x0156, 0x0136, -+ 0x0146, 0x3908, 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e, 0x2a7d, -+ 0x1118, 0x8210, 0x8000, 0x0cc8, 0xa005, 0x0138, 0x20a9, 0x0020, -+ 0x2198, 0xa110, 0x22a0, 0x22c8, 0x53a3, 0x014e, 0x013e, 0x015e, -+ 0x003e, 0x0005, 0x00d6, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, -+ 0x0200, 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x2099, 0xb6b9, 0x20a9, 0x0004, 0x53a6, 0x20a3, 0x0004, -+ 0x20a3, 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x080c, 0x7d11, -+ 0x00de, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, 0x0214, -+ 0x20a3, 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, -+ 0x7810, 0xa084, 0x00ff, 0x20a2, 0x7828, 0x20a2, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x60c3, 0x0018, 0x080c, 0x7d11, 0x0005, 0x00d6, -+ 0x0016, 0x2f68, 0x2009, 0x0035, 0x080c, 0xa09b, 0x1904, 0x83a5, -+ 0x20a1, 0x020b, 0x080c, 0x75fb, 0x20a3, 0x1300, 0x20a3, 0x0000, -+ 0x7828, 0x2068, 0x681c, 0xa086, 0x0003, 0x0580, 0x7818, 0xa080, -+ 0x0028, 0x2014, 0x2001, 0xb435, 0x2004, 0xd0ac, 0x11d0, 0xa286, -+ 0x007e, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffe, 0x04b8, 0xa286, -+ 0x007f, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffd, 0x0478, 0xd2bc, -+ 0x0180, 0xa286, 0x0080, 0x1128, 0x20a3, 0x00ff, 0x20a3, 0xfffc, -+ 0x0428, 0xa2e8, 0xb535, 0x2d6c, 0x6810, 0x20a2, 0x6814, 0x20a2, -+ 0x00e8, 0x20a3, 0x0000, 0x6098, 0x20a2, 0x00c0, 0x2001, 0xb435, -+ 0x2004, 0xd0ac, 0x1138, 0x7818, 0xa080, 0x0028, 0x2004, 0xa082, -+ 0x007e, 0x0240, 0x00d6, 0x2069, 0xb41c, 0x2da6, 0x8d68, 0x2da6, -+ 0x00de, 0x0020, 0x20a3, 0x0000, 0x6034, 0x20a2, 0x7834, 0x20a2, -+ 0x7838, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, -+ 0x080c, 0x7d11, 0x001e, 0x00de, 0x0005, 0x7817, 0x0001, 0x7803, -+ 0x0006, 0x001e, 0x00de, 0x0005, 0x00d6, 0x0026, 0x7928, 0x2168, -+ 0x691c, 0xa186, 0x0006, 0x01c0, 0xa186, 0x0003, 0x0904, 0x841b, -+ 0xa186, 0x0005, 0x0904, 0x8404, 0xa186, 0x0004, 0x05b8, 0xa186, -+ 0x0008, 0x0904, 0x840c, 0x7807, 0x0037, 0x7813, 0x1700, 0x080c, -+ 0x8483, 0x002e, 0x00de, 0x0005, 0x080c, 0x843f, 0x2009, 0x4000, -+ 0x6800, 0x0002, 0x83e5, 0x83f0, 0x83e7, 0x83f0, 0x83ec, 0x83e5, -+ 0x83e5, 0x83f0, 0x83f0, 0x83f0, 0x83f0, 0x83e5, 0x83e5, 0x83e5, -+ 0x83e5, 0x83e5, 0x83f0, 0x83e5, 0x83f0, 0x080c, 0x1511, 0x6820, -+ 0xd0e4, 0x0110, 0xd0cc, 0x0110, 0xa00e, 0x0010, 0x2009, 0x2000, -+ 0x6828, 0x20a2, 0x682c, 0x20a2, 0x0804, 0x8435, 0x080c, 0x843f, -+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x2009, 0x4000, 0x6a00, 0xa286, -+ 0x0002, 0x1108, 0xa00e, 0x0488, 0x04d1, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x2009, 0x4000, 0x0448, 0x0491, 0x20a3, 0x0000, 0x20a3, -+ 0x0000, 0x2009, 0x4000, 0xa286, 0x0005, 0x0118, 0xa286, 0x0002, -+ 0x1108, 0xa00e, 0x00d0, 0x0419, 0x6810, 0x2068, 0x697c, 0x6810, -+ 0xa112, 0x6980, 0x6814, 0xa103, 0x20a2, 0x22a2, 0x7928, 0xa180, -+ 0x0000, 0x2004, 0xa08e, 0x0002, 0x0130, 0xa08e, 0x0004, 0x0118, -+ 0x2009, 0x4000, 0x0010, 0x2009, 0x0000, 0x21a2, 0x20a3, 0x0000, -+ 0x60c3, 0x0018, 0x080c, 0x7d11, 0x002e, 0x00de, 0x0005, 0x0036, -+ 0x0046, 0x0056, 0x0066, 0x20a1, 0x020b, 0x080c, 0x7697, 0xa006, -+ 0x20a3, 0x0200, 0x20a2, 0x7934, 0x21a2, 0x7938, 0x21a2, 0x7818, -+ 0xa080, 0x0028, 0x2004, 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1118, -+ 0xa092, 0x007e, 0x0268, 0x00d6, 0x2069, 0xb41c, 0x2d2c, 0x8d68, -+ 0x2d34, 0xa0e8, 0xb535, 0x2d6c, 0x6b10, 0x6c14, 0x00de, 0x0030, -+ 0x2019, 0x0000, 0x6498, 0x2029, 0x0000, 0x6634, 0x7828, 0xa080, -+ 0x0007, 0x2004, 0xa086, 0x0003, 0x1128, 0x25a2, 0x26a2, 0x23a2, -+ 0x24a2, 0x0020, 0x23a2, 0x24a2, 0x25a2, 0x26a2, 0x006e, 0x005e, -+ 0x004e, 0x003e, 0x0005, 0x20a1, 0x020b, 0x080c, 0x7697, 0x20a3, -+ 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0009, 0x7810, 0x20a2, 0x60c3, -+ 0x0008, 0x080c, 0x7d11, 0x0005, 0x20a1, 0x020b, 0x080c, 0x75f3, -+ 0x20a3, 0x1400, 0x20a3, 0x0000, 0x7834, 0x20a2, 0x7838, 0x20a2, -+ 0x7828, 0x20a2, 0x782c, 0x20a2, 0x7830, 0xa084, 0x00ff, 0x8007, -+ 0x20a2, 0x20a3, 0x0000, 0x60c3, 0x0010, 0x080c, 0x7d11, 0x0005, -+ 0x20a1, 0x020b, 0x080c, 0x768f, 0x20a3, 0x0100, 0x20a3, 0x0000, -+ 0x7828, 0x20a2, 0x7810, 0x20a2, 0x60c3, 0x0008, 0x080c, 0x7d11, -+ 0x0005, 0x0146, 0x20a1, 0x020b, 0x0031, 0x60c3, 0x0000, 0x080c, -+ 0x7d11, 0x014e, 0x0005, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, -+ 0xa080, 0x0028, 0x2004, 0x2011, 0xb435, 0x2214, 0xd2ac, 0x1110, -+ 0xd0bc, 0x0188, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, 0xa085, -+ 0x0300, 0x20a2, 0x6814, 0x20a2, 0x2069, 0xb41c, 0x2da6, 0x8d68, -+ 0x2da6, 0x00de, 0x0078, 0x00d6, 0xa0e8, 0xb535, 0x2d6c, 0x6810, -+ 0xa085, 0x0300, 0x20a2, 0x6814, 0x20a2, 0x00de, 0x20a3, 0x0000, -+ 0x6234, 0x22a2, 0x20a3, 0x0819, 0x20a3, 0x0000, 0x080c, 0x7d00, -+ 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x7a08, 0x22a2, 0x20a3, 0x0000, -+ 0x20a3, 0x0000, 0x0005, 0x20a1, 0x020b, 0x0079, 0x7910, 0x21a2, -+ 0x20a3, 0x0000, 0x60c3, 0x0000, 0x20e1, 0x9080, 0x60a7, 0x9575, -+ 0x080c, 0x7d1b, 0x080c, 0x69cc, 0x0005, 0x0156, 0x0136, 0x0036, -+ 0x00d6, 0x00e6, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7854, 0x2068, -+ 0xadf0, 0x000f, 0x7210, 0xa296, 0x00c0, 0xa294, 0xfffd, 0x7212, -+ 0x7214, 0xa294, 0x0300, 0x7216, 0x7100, 0xa194, 0x00ff, 0x7308, -+ 0xa384, 0x00ff, 0xa08d, 0xc200, 0x7102, 0xa384, 0xff00, 0xa215, -+ 0x720a, 0x7004, 0x720c, 0x700e, 0x7206, 0x20a9, 0x000a, 0x2e98, -+ 0x53a6, 0x60a3, 0x0035, 0x6a38, 0xa294, 0x7000, 0xa286, 0x3000, -+ 0x0110, 0x60a3, 0x0037, 0x00ee, 0x00de, 0x003e, 0x013e, 0x015e, -+ 0x0005, 0x2009, 0x0092, 0x0010, 0x2009, 0x0096, 0x60ab, 0x0036, -+ 0x6116, 0x0005, 0x2061, 0xbc00, 0x2a70, 0x7068, 0x704a, 0x704f, -+ 0xbc00, 0x0005, 0x00e6, 0x0126, 0x2071, 0xb400, 0x2091, 0x8000, -+ 0x7548, 0xa582, 0x0010, 0x0608, 0x704c, 0x2060, 0x6000, 0xa086, -+ 0x0000, 0x0148, 0xace0, 0x0018, 0x705c, 0xac02, 0x1208, 0x0cb0, -+ 0x2061, 0xbc00, 0x0c98, 0x6003, 0x0008, 0x8529, 0x754a, 0xaca8, -+ 0x0018, 0x705c, 0xa502, 0x1230, 0x754e, 0xa085, 0x0001, 0x012e, -+ 0x00ee, 0x0005, 0x704f, 0xbc00, 0x0cc0, 0xa006, 0x0cc0, 0x00e6, -+ 0x2071, 0xb400, 0x7548, 0xa582, 0x0010, 0x0600, 0x704c, 0x2060, -+ 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, 0x0018, 0x705c, 0xac02, -+ 0x1208, 0x0cb0, 0x2061, 0xbc00, 0x0c98, 0x6003, 0x0008, 0x8529, -+ 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, 0x1228, 0x754e, 0xa085, -+ 0x0001, 0x00ee, 0x0005, 0x704f, 0xbc00, 0x0cc8, 0xa006, 0x0cc8, -+ 0xac82, 0xbc00, 0x0a0c, 0x1511, 0x2001, 0xb417, 0x2004, 0xac02, -+ 0x1a0c, 0x1511, 0xa006, 0x6006, 0x600a, 0x600e, 0x6012, 0x6016, -+ 0x601a, 0x601f, 0x0000, 0x6003, 0x0000, 0x6052, 0x6056, 0x6022, -+ 0x6026, 0x602a, 0x602e, 0x6032, 0x6036, 0x603a, 0x603e, 0x2061, -+ 0xb400, 0x6048, 0x8000, 0x604a, 0xa086, 0x0001, 0x0108, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x7134, 0x012e, 0x0cc0, 0x601c, -+ 0xa084, 0x000f, 0x0002, 0x85fe, 0x860d, 0x8628, 0x8643, 0xa0df, -+ 0xa0fa, 0xa115, 0x85fe, 0x860d, 0x85fe, 0x865e, 0xa186, 0x0013, -+ 0x1128, 0x080c, 0x7055, 0x080c, 0x7134, 0x0005, 0xa18e, 0x0047, -+ 0x1118, 0xa016, 0x080c, 0x1856, 0x0005, 0x0066, 0x6000, 0xa0b2, -+ 0x0010, 0x1a0c, 0x1511, 0x0013, 0x006e, 0x0005, 0x8626, 0x8a3e, -+ 0x8bf6, 0x8626, 0x8c6b, 0x871c, 0x8626, 0x8626, 0x89d0, 0x908f, -+ 0x8626, 0x8626, 0x8626, 0x8626, 0x8626, 0x8626, 0x080c, 0x1511, -+ 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1511, 0x0013, 0x006e, -+ 0x0005, 0x8641, 0x96bb, 0x8641, 0x8641, 0x8641, 0x8641, 0x8641, -+ 0x8641, 0x9666, 0x9827, 0x8641, 0x96e8, 0x975f, 0x96e8, 0x975f, -+ 0x8641, 0x080c, 0x1511, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, -+ 0x1511, 0x0013, 0x006e, 0x0005, 0x865c, 0x90d0, 0x919a, 0x92ce, -+ 0x942a, 0x865c, 0x865c, 0x865c, 0x90aa, 0x9616, 0x9619, 0x865c, -+ 0x865c, 0x865c, 0x865c, 0x9643, 0x080c, 0x1511, 0x0066, 0x6000, -+ 0xa0b2, 0x0010, 0x1a0c, 0x1511, 0x0013, 0x006e, 0x0005, 0x8677, -+ 0x8677, 0x8677, 0x86a5, 0x86f2, 0x8677, 0x8677, 0x8677, 0x8679, -+ 0x8677, 0x8677, 0x8677, 0x8677, 0x8677, 0x8677, 0x8677, 0x080c, -+ 0x1511, 0xa186, 0x0003, 0x190c, 0x1511, 0x00d6, 0x6003, 0x0003, -+ 0x6106, 0x6010, 0x2068, 0x684f, 0x0040, 0x687c, 0x680a, 0x6880, -+ 0x680e, 0x6813, 0x0000, 0x6817, 0x0000, 0x6854, 0xa092, 0x199a, -+ 0x0210, 0x2001, 0x1999, 0x8003, 0x8013, 0x8213, 0xa210, 0x6216, -+ 0x00de, 0x2c10, 0x080c, 0x1f7a, 0x080c, 0x6cb5, 0x0126, 0x2091, -+ 0x8000, 0x080c, 0x71f1, 0x012e, 0x0005, 0xa182, 0x0047, 0x0002, -+ 0x86b1, 0x86b1, 0x86b3, 0x86cc, 0x86b1, 0x86b1, 0x86b1, 0x86b1, -+ 0x86de, 0x080c, 0x1511, 0x00d6, 0x0016, 0x080c, 0x70e7, 0x080c, -+ 0x71f1, 0x6003, 0x0004, 0x6110, 0x2168, 0x684f, 0x0020, 0x685c, -+ 0x685a, 0x6874, 0x687e, 0x6878, 0x6882, 0x6897, 0x0000, 0x689b, -+ 0x0000, 0x001e, 0x00de, 0x0005, 0x080c, 0x70e7, 0x00d6, 0x6110, -+ 0x2168, 0x080c, 0x9beb, 0x0120, 0x684b, 0x0006, 0x080c, 0x53c9, -+ 0x00de, 0x080c, 0x85c0, 0x080c, 0x71f1, 0x0005, 0x080c, 0x70e7, -+ 0x080c, 0x2c60, 0x00d6, 0x6110, 0x2168, 0x080c, 0x9beb, 0x0120, -+ 0x684b, 0x0029, 0x080c, 0x53c9, 0x00de, 0x080c, 0x85c0, 0x080c, -+ 0x71f1, 0x0005, 0xa182, 0x0047, 0x0002, 0x8700, 0x870f, 0x86fe, -+ 0x86fe, 0x86fe, 0x86fe, 0x86fe, 0x86fe, 0x86fe, 0x080c, 0x1511, -+ 0x00d6, 0x6010, 0x2068, 0x684c, 0xc0f4, 0x684e, 0x00de, 0x20e1, -+ 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1856, 0x0005, 0x00d6, -+ 0x6110, 0x2168, 0x684b, 0x0000, 0x6853, 0x0000, 0x080c, 0x53c9, -+ 0x00de, 0x080c, 0x85c0, 0x0005, 0xa1b6, 0x0015, 0x1118, 0x080c, -+ 0x85c0, 0x0030, 0xa1b6, 0x0016, 0x190c, 0x1511, 0x080c, 0x85c0, -+ 0x0005, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9, -+ 0x0006, 0x3310, 0x3420, 0x9398, 0x94a0, 0x3318, 0x3428, 0x222e, -+ 0x2326, 0xa290, 0x0002, 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0, -+ 0x0002, 0x1f04, 0x8737, 0x00e6, 0x080c, 0x9beb, 0x0130, 0x6010, -+ 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x00ee, 0x080c, 0x85c0, -+ 0x0005, 0x00d6, 0x0036, 0x7330, 0xa386, 0x0200, 0x1130, 0x6018, -+ 0x2068, 0x6813, 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0130, -+ 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x080c, 0x85c0, -+ 0x003e, 0x00de, 0x0005, 0x0016, 0x20a9, 0x002a, 0xae80, 0x000c, -+ 0x2098, 0x6010, 0xa080, 0x0002, 0x20a0, 0x53a3, 0x20a9, 0x002a, -+ 0x6010, 0xa080, 0x0001, 0x2004, 0xa080, 0x0002, 0x20a0, 0x53a3, -+ 0x00e6, 0x6010, 0x2004, 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, -+ 0x85c0, 0x001e, 0x0005, 0x0016, 0x2009, 0x0000, 0x7030, 0xa086, -+ 0x0100, 0x0140, 0x7038, 0xa084, 0x00ff, 0x800c, 0x703c, 0xa084, -+ 0x00ff, 0x8004, 0xa080, 0x0004, 0xa108, 0x21a8, 0xae80, 0x000c, -+ 0x2098, 0x6010, 0xa080, 0x0002, 0x20a0, 0x080c, 0x4b49, 0x00e6, -+ 0x080c, 0x9beb, 0x0140, 0x6010, 0x2070, 0x7007, 0x0000, 0x7034, -+ 0x70b2, 0x7037, 0x0103, 0x00ee, 0x080c, 0x85c0, 0x001e, 0x0005, -+ 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2c68, 0x0016, 0x2009, 0x0035, -+ 0x080c, 0xa09b, 0x001e, 0x1168, 0x0026, 0x6228, 0x2268, 0x002e, -+ 0x2071, 0xba8c, 0x6b1c, 0xa386, 0x0003, 0x0130, 0xa386, 0x0006, -+ 0x0128, 0x080c, 0x85c0, 0x0020, 0x0031, 0x0010, 0x080c, 0x8899, -+ 0x00de, 0x00ee, 0x0005, 0x00f6, 0x6810, 0x2078, 0xa186, 0x0015, -+ 0x0904, 0x8880, 0xa18e, 0x0016, 0x1904, 0x8897, 0x700c, 0xa08c, -+ 0xff00, 0xa186, 0x1700, 0x0120, 0xa186, 0x0300, 0x1904, 0x885f, -+ 0x8fff, 0x1138, 0x6800, 0xa086, 0x000f, 0x0904, 0x8843, 0x0804, -+ 0x8895, 0x6808, 0xa086, 0xffff, 0x1904, 0x8882, 0x784c, 0xa084, -+ 0x0060, 0xa086, 0x0020, 0x1150, 0x797c, 0x7810, 0xa106, 0x1904, -+ 0x8882, 0x7980, 0x7814, 0xa106, 0x1904, 0x8882, 0x080c, 0x9da2, -+ 0x6858, 0x7852, 0x784c, 0xc0dc, 0xc0f4, 0xc0d4, 0x784e, 0x0026, -+ 0xa00e, 0x6a14, 0x2001, 0x000a, 0x080c, 0x6b05, 0x7854, 0xa20a, -+ 0x0208, 0x8011, 0x7a56, 0x82ff, 0x002e, 0x1138, 0x00c6, 0x2d60, -+ 0x080c, 0x99a2, 0x00ce, 0x0804, 0x8895, 0x00c6, 0x00d6, 0x2f68, -+ 0x6838, 0xd0fc, 0x1118, 0x080c, 0x4c1e, 0x0010, 0x080c, 0x4e0a, -+ 0x00de, 0x00ce, 0x1904, 0x8882, 0x00c6, 0x2d60, 0x080c, 0x85c0, -+ 0x00ce, 0x0804, 0x8895, 0x00c6, 0x080c, 0x9e67, 0x0190, 0x6013, -+ 0x0000, 0x6818, 0x601a, 0x080c, 0x9fb8, 0x601f, 0x0003, 0x6904, -+ 0x00c6, 0x2d60, 0x080c, 0x85c0, 0x00ce, 0x080c, 0x85ef, 0x00ce, -+ 0x04e0, 0x2001, 0xb6b8, 0x2004, 0x683e, 0x00ce, 0x04b0, 0x7008, -+ 0xa086, 0x000b, 0x11a0, 0x6018, 0x200c, 0xc1bc, 0x2102, 0x00c6, -+ 0x2d60, 0x7853, 0x0003, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, -+ 0x0002, 0x080c, 0x6c52, 0x080c, 0x7134, 0x00ce, 0x00f0, 0x700c, -+ 0xa086, 0x2a00, 0x1138, 0x2001, 0xb6b8, 0x2004, 0x683e, 0x00a8, -+ 0x0481, 0x00a8, 0x8fff, 0x090c, 0x1511, 0x00c6, 0x00d6, 0x2d60, -+ 0x2f68, 0x6837, 0x0103, 0x684b, 0x0003, 0x080c, 0x9896, 0x080c, -+ 0x9da2, 0x080c, 0x9dae, 0x00de, 0x00ce, 0x080c, 0x85c0, 0x00fe, -+ 0x0005, 0xa186, 0x0015, 0x1128, 0x2001, 0xb6b8, 0x2004, 0x683e, -+ 0x0068, 0xa18e, 0x0016, 0x1160, 0x00c6, 0x2d00, 0x2060, 0x080c, -+ 0xb2bd, 0x080c, 0x6ab4, 0x080c, 0x85c0, 0x00ce, 0x080c, 0x85c0, -+ 0x0005, 0x0026, 0x0036, 0x0046, 0x7228, 0x7c80, 0x7b7c, 0xd2f4, -+ 0x0130, 0x2001, 0xb6b8, 0x2004, 0x683e, 0x0804, 0x8913, 0x00c6, -+ 0x2d60, 0x080c, 0x98b6, 0x00ce, 0x6804, 0xa086, 0x0050, 0x1168, -+ 0x00c6, 0x2d00, 0x2060, 0x6003, 0x0001, 0x6007, 0x0050, 0x080c, -+ 0x6c52, 0x080c, 0x7134, 0x00ce, 0x04f0, 0x6800, 0xa086, 0x000f, -+ 0x01c8, 0x8fff, 0x090c, 0x1511, 0x6820, 0xd0dc, 0x1198, 0x6800, -+ 0xa086, 0x0004, 0x1198, 0x784c, 0xd0ac, 0x0180, 0x784c, 0xc0dc, -+ 0xc0f4, 0x784e, 0x7850, 0xc0f4, 0xc0fc, 0x7852, 0x2001, 0x0001, -+ 0x682e, 0x00e0, 0x2001, 0x0007, 0x682e, 0x00c0, 0x784c, 0xd0b4, -+ 0x1130, 0xd0ac, 0x0db8, 0x784c, 0xd0f4, 0x1da0, 0x0c38, 0xd2ec, -+ 0x1d88, 0x7024, 0xa306, 0x1118, 0x7020, 0xa406, 0x0d58, 0x7020, -+ 0x6836, 0x7024, 0x683a, 0x2001, 0x0005, 0x682e, 0x080c, 0x9ef4, -+ 0x080c, 0x7134, 0x0010, 0x080c, 0x85c0, 0x004e, 0x003e, 0x002e, -+ 0x0005, 0x00e6, 0x00d6, 0x0026, 0x6034, 0x2068, 0x6a1c, 0xa286, -+ 0x0007, 0x0904, 0x8977, 0xa286, 0x0002, 0x0904, 0x8977, 0xa286, -+ 0x0000, 0x0904, 0x8977, 0x6808, 0x6338, 0xa306, 0x1904, 0x8977, -+ 0x2071, 0xba8c, 0xa186, 0x0015, 0x05e0, 0xa18e, 0x0016, 0x1190, -+ 0x6030, 0xa084, 0x00ff, 0xa086, 0x0001, 0x1160, 0x700c, 0xa086, -+ 0x2a00, 0x1140, 0x6034, 0xa080, 0x0008, 0x200c, 0xc1dd, 0xc1f5, -+ 0x2102, 0x0438, 0x00c6, 0x6034, 0x2060, 0x6104, 0xa186, 0x004b, -+ 0x01a0, 0xa186, 0x004c, 0x0188, 0xa186, 0x004d, 0x0170, 0xa186, -+ 0x004e, 0x0158, 0xa186, 0x0052, 0x0140, 0x6010, 0x2068, 0x080c, -+ 0x9beb, 0x090c, 0x1511, 0x6853, 0x0003, 0x6007, 0x0085, 0x6003, -+ 0x000b, 0x601f, 0x0002, 0x080c, 0x6c52, 0x080c, 0x7134, 0x00ce, -+ 0x0030, 0x6034, 0x2070, 0x2001, 0xb6b8, 0x2004, 0x703e, 0x080c, -+ 0x85c0, 0x002e, 0x00de, 0x00ee, 0x0005, 0x00d6, 0x20a9, 0x000e, -+ 0x2e98, 0x6010, 0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x1558, 0x6018, -+ 0x2068, 0x0156, 0x0036, 0x0026, 0xae90, 0x000c, 0xa290, 0x0004, -+ 0x20a9, 0x0004, 0xad98, 0x000a, 0x080c, 0x907a, 0x002e, 0x003e, -+ 0x015e, 0x11d8, 0x0156, 0x0036, 0x0026, 0xae90, 0x000c, 0xa290, -+ 0x0008, 0x20a9, 0x0004, 0xad98, 0x0006, 0x080c, 0x907a, 0x002e, -+ 0x003e, 0x015e, 0x1150, 0x7038, 0x680a, 0x703c, 0x680e, 0x6800, -+ 0xc08d, 0x6802, 0x00de, 0x0804, 0x8743, 0x080c, 0x2c60, 0x00c6, -+ 0x080c, 0x856a, 0x2f00, 0x601a, 0x6013, 0x0000, 0x601f, 0x0001, -+ 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x080c, 0x4ebe, -+ 0x080c, 0x4eeb, 0x080c, 0x6c98, 0x080c, 0x7134, 0x00ce, 0x0c10, -+ 0x2100, 0xa1b2, 0x0080, 0x1a0c, 0x1511, 0xa1b2, 0x0040, 0x1a04, -+ 0x8a34, 0x0002, 0x8a28, 0x8a1c, 0x8a28, 0x8a28, 0x8a28, 0x8a28, -+ 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, -+ 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, -+ 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, -+ 0x8a1a, 0x8a28, 0x8a1a, 0x8a28, 0x8a28, 0x8a1a, 0x8a1a, 0x8a1a, -+ 0x8a1a, 0x8a1a, 0x8a28, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, -+ 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a28, 0x8a28, 0x8a1a, 0x8a1a, -+ 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a1a, 0x8a28, -+ 0x8a1a, 0x8a1a, 0x080c, 0x1511, 0x6003, 0x0001, 0x6106, 0x080c, -+ 0x6c98, 0x0126, 0x2091, 0x8000, 0x080c, 0x7134, 0x012e, 0x0005, -+ 0x6003, 0x0001, 0x6106, 0x080c, 0x6c98, 0x0126, 0x2091, 0x8000, -+ 0x080c, 0x7134, 0x012e, 0x0005, 0x2600, 0x0002, 0x8a28, 0x8a28, -+ 0x8a3c, 0x8a28, 0x8a28, 0x8a3c, 0x080c, 0x1511, 0x6004, 0xa0b2, -+ 0x0080, 0x1a0c, 0x1511, 0xa1b6, 0x0013, 0x0904, 0x8aee, 0xa1b6, -+ 0x0027, 0x1904, 0x8ab4, 0x080c, 0x7055, 0x6004, 0x080c, 0x9dd8, -+ 0x0190, 0x080c, 0x9de9, 0x0904, 0x8aae, 0xa08e, 0x0021, 0x0904, -+ 0x8ab1, 0xa08e, 0x0022, 0x0904, 0x8aae, 0xa08e, 0x003d, 0x0904, -+ 0x8ab1, 0x0804, 0x8aa7, 0x080c, 0x2c86, 0x2001, 0x0007, 0x080c, -+ 0x4ebe, 0x6018, 0xa080, 0x0028, 0x200c, 0x080c, 0x8bbc, 0xa186, -+ 0x007e, 0x1148, 0x2001, 0xb435, 0x2014, 0xc285, 0x080c, 0x5a90, -+ 0x1108, 0xc2ad, 0x2202, 0x0016, 0x0026, 0x0036, 0x2110, 0x0026, -+ 0x2019, 0x0028, 0x080c, 0x823c, 0x002e, 0x080c, 0xb310, 0x003e, -+ 0x002e, 0x001e, 0x0016, 0x0026, 0x0036, 0x2110, 0x2019, 0x0028, -+ 0x080c, 0x6dba, 0x0076, 0x2039, 0x0000, 0x080c, 0x6cc7, 0x00c6, -+ 0x6018, 0xa065, 0x0110, 0x080c, 0x516b, 0x00ce, 0x2c08, 0x080c, -+ 0xae05, 0x007e, 0x003e, 0x002e, 0x001e, 0x080c, 0x4f2d, 0x080c, -+ 0x9fb0, 0x080c, 0x85c0, 0x080c, 0x7134, 0x0005, 0x080c, 0x8bbc, -+ 0x0cb0, 0x080c, 0x8bea, 0x0c98, 0xa186, 0x0014, 0x1db0, 0x080c, -+ 0x7055, 0x080c, 0x2c60, 0x080c, 0x9dd8, 0x1188, 0x080c, 0x2c86, -+ 0x6018, 0xa080, 0x0028, 0x200c, 0x080c, 0x8bbc, 0xa186, 0x007e, -+ 0x1128, 0x2001, 0xb435, 0x200c, 0xc185, 0x2102, 0x08c0, 0x080c, -+ 0x9de9, 0x1118, 0x080c, 0x8bbc, 0x0890, 0x6004, 0xa08e, 0x0032, -+ 0x1158, 0x00e6, 0x00f6, 0x2071, 0xb482, 0x2079, 0x0000, 0x080c, -+ 0x2f93, 0x00fe, 0x00ee, 0x0818, 0x6004, 0xa08e, 0x0021, 0x0d50, -+ 0xa08e, 0x0022, 0x090c, 0x8bbc, 0x0804, 0x8aa7, 0xa0b2, 0x0040, -+ 0x1a04, 0x8bb1, 0x2008, 0x0002, 0x8b36, 0x8b37, 0x8b3a, 0x8b3d, -+ 0x8b40, 0x8b43, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, -+ 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, -+ 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, -+ 0x8b34, 0x8b34, 0x8b46, 0x8b55, 0x8b34, 0x8b57, 0x8b55, 0x8b34, -+ 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b55, 0x8b55, 0x8b34, 0x8b34, -+ 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b34, 0x8b91, 0x8b55, -+ 0x8b34, 0x8b51, 0x8b34, 0x8b34, 0x8b34, 0x8b52, 0x8b34, 0x8b34, -+ 0x8b34, 0x8b55, 0x8b88, 0x8b34, 0x080c, 0x1511, 0x00f0, 0x2001, -+ 0x000b, 0x0460, 0x2001, 0x0003, 0x0448, 0x2001, 0x0005, 0x0430, -+ 0x2001, 0x0001, 0x0418, 0x2001, 0x0009, 0x0400, 0x080c, 0x7055, -+ 0x6003, 0x0005, 0x2001, 0xb6b8, 0x2004, 0x603e, 0x080c, 0x7134, -+ 0x00a0, 0x0018, 0x0010, 0x080c, 0x4ebe, 0x0804, 0x8ba2, 0x080c, -+ 0x7055, 0x2001, 0xb6b6, 0x2004, 0x6016, 0x2001, 0xb6b8, 0x2004, -+ 0x603e, 0x6003, 0x0004, 0x080c, 0x7134, 0x0005, 0x080c, 0x4ebe, -+ 0x080c, 0x7055, 0x6003, 0x0002, 0x2001, 0xb6b8, 0x2004, 0x603e, -+ 0x0036, 0x2019, 0xb45d, 0x2304, 0xa084, 0xff00, 0x1120, 0x2001, -+ 0xb6b6, 0x201c, 0x0040, 0x8007, 0xa09a, 0x0004, 0x0ec0, 0x8003, -+ 0x801b, 0x831b, 0xa318, 0x6316, 0x003e, 0x080c, 0x7134, 0x08e8, -+ 0x080c, 0x7055, 0x080c, 0x9fb0, 0x080c, 0x85c0, 0x080c, 0x7134, -+ 0x08a0, 0x00e6, 0x00f6, 0x2071, 0xb482, 0x2079, 0x0000, 0x080c, -+ 0x2f93, 0x00fe, 0x00ee, 0x080c, 0x7055, 0x080c, 0x85c0, 0x080c, -+ 0x7134, 0x0818, 0x080c, 0x7055, 0x2001, 0xb6b8, 0x2004, 0x603e, -+ 0x6003, 0x0002, 0x2001, 0xb6b6, 0x2004, 0x6016, 0x080c, 0x7134, -+ 0x0005, 0x2600, 0x2008, 0x0002, 0x8bba, 0x8bba, 0x8bba, 0x8ba2, -+ 0x8ba2, 0x8bba, 0x080c, 0x1511, 0x00e6, 0x0026, 0x0016, 0x080c, -+ 0x9beb, 0x0508, 0x6010, 0x2070, 0x7034, 0xa086, 0x0139, 0x1148, -+ 0x2001, 0x0030, 0x2009, 0x0000, 0x2011, 0x4005, 0x080c, 0xa067, -+ 0x0090, 0x7038, 0xd0fc, 0x0178, 0x7007, 0x0000, 0x0016, 0x6004, -+ 0xa08e, 0x0021, 0x0160, 0xa08e, 0x003d, 0x0148, 0x001e, 0x7037, -+ 0x0103, 0x7033, 0x0100, 0x001e, 0x002e, 0x00ee, 0x0005, 0x001e, -+ 0x0009, 0x0cc8, 0x00e6, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, -+ 0x7037, 0x0103, 0x7023, 0x8001, 0x00ee, 0x0005, 0x00d6, 0x6618, -+ 0x2668, 0x6804, 0xa084, 0x00ff, 0x00de, 0xa0b2, 0x000c, 0x1a0c, -+ 0x1511, 0x6604, 0xa6b6, 0x0043, 0x1120, 0x080c, 0xa023, 0x0804, -+ 0x8c5b, 0x6604, 0xa6b6, 0x0033, 0x1120, 0x080c, 0x9fd3, 0x0804, -+ 0x8c5b, 0x6604, 0xa6b6, 0x0028, 0x1120, 0x080c, 0x9e19, 0x0804, -+ 0x8c5b, 0x6604, 0xa6b6, 0x0029, 0x1118, 0x080c, 0x9e30, 0x04d8, -+ 0x6604, 0xa6b6, 0x001f, 0x1118, 0x080c, 0x8729, 0x04a0, 0x6604, -+ 0xa6b6, 0x0000, 0x1118, 0x080c, 0x897d, 0x0468, 0x6604, 0xa6b6, -+ 0x0022, 0x1118, 0x080c, 0x8751, 0x0430, 0x6604, 0xa6b6, 0x0035, -+ 0x1118, 0x080c, 0x87b8, 0x00f8, 0x6604, 0xa6b6, 0x0039, 0x1118, -+ 0x080c, 0x8919, 0x00c0, 0x6604, 0xa6b6, 0x003d, 0x1118, 0x080c, -+ 0x876b, 0x0088, 0x6604, 0xa6b6, 0x0044, 0x1118, 0x080c, 0x878b, -+ 0x0050, 0xa1b6, 0x0015, 0x1110, 0x0053, 0x0028, 0xa1b6, 0x0016, -+ 0x1118, 0x0804, 0x8e1f, 0x0005, 0x080c, 0x8606, 0x0ce0, 0x8c82, -+ 0x8c85, 0x8c82, 0x8cc7, 0x8c82, 0x8dac, 0x8e2d, 0x8c82, 0x8c82, -+ 0x8dfb, 0x8c82, 0x8e0f, 0xa1b6, 0x0048, 0x0140, 0x20e1, 0x0005, -+ 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1856, 0x0005, 0x00e6, 0xacf0, -+ 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x00ee, 0x080c, -+ 0x85c0, 0x0005, 0xe000, 0xe000, 0x0005, 0x00e6, 0x2071, 0xb400, -+ 0x7084, 0xa086, 0x0074, 0x1530, 0x080c, 0xaddc, 0x11b0, 0x00d6, -+ 0x6018, 0x2068, 0x7030, 0xd08c, 0x0128, 0x6800, 0xd0bc, 0x0110, -+ 0xc0c5, 0x6802, 0x00d9, 0x00de, 0x2001, 0x0006, 0x080c, 0x4ebe, -+ 0x080c, 0x2c86, 0x080c, 0x85c0, 0x0078, 0x2001, 0x000a, 0x080c, -+ 0x4ebe, 0x080c, 0x2c86, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, -+ 0x6c98, 0x0010, 0x080c, 0x8d99, 0x00ee, 0x0005, 0x6800, 0xd084, -+ 0x0168, 0x2001, 0x0000, 0x080c, 0x4eac, 0x2069, 0xb452, 0x6804, -+ 0xd0a4, 0x0120, 0x2001, 0x0006, 0x080c, 0x4eeb, 0x0005, 0x00d6, -+ 0x2011, 0xb421, 0x2204, 0xa086, 0x0074, 0x1904, 0x8d96, 0x6018, -+ 0x2068, 0x6aa0, 0xa286, 0x007e, 0x1120, 0x080c, 0x8f42, 0x0804, -+ 0x8d35, 0x080c, 0x8f38, 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, -+ 0xa286, 0x0080, 0x11c0, 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6010, -+ 0xa005, 0x0138, 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6833, -+ 0x0200, 0x2001, 0x0006, 0x080c, 0x4ebe, 0x080c, 0x2c86, 0x080c, -+ 0x85c0, 0x0804, 0x8d97, 0x00e6, 0x2071, 0xb435, 0x2e04, 0xd09c, -+ 0x0188, 0x2071, 0xba80, 0x7108, 0x720c, 0xa18c, 0x00ff, 0x1118, -+ 0xa284, 0xff00, 0x0138, 0x6018, 0x2070, 0x70a0, 0xd0bc, 0x1110, -+ 0x7112, 0x7216, 0x00ee, 0x6010, 0xa005, 0x0198, 0x2068, 0x6838, -+ 0xd0f4, 0x0178, 0x6834, 0xa084, 0x00ff, 0xa086, 0x0039, 0x1958, -+ 0x2001, 0x0000, 0x2009, 0x0000, 0x2011, 0x4000, 0x080c, 0xa067, -+ 0x0840, 0x2001, 0x0004, 0x080c, 0x4ebe, 0x6003, 0x0001, 0x6007, -+ 0x0003, 0x080c, 0x6c98, 0x0804, 0x8d97, 0x685c, 0xd0e4, 0x01d8, -+ 0x080c, 0x9f63, 0x080c, 0x5a90, 0x0118, 0xd0dc, 0x1904, 0x8cf1, -+ 0x2011, 0xb435, 0x2204, 0xc0ad, 0x2012, 0x2001, 0xb68f, 0x2004, -+ 0x00f6, 0x2079, 0x0100, 0x78e3, 0x0000, 0x080c, 0x2838, 0x78e2, -+ 0x00fe, 0x0804, 0x8cf1, 0x080c, 0x9f99, 0x2011, 0xb435, 0x2204, -+ 0xc0a5, 0x2012, 0x0006, 0x080c, 0xaefe, 0x000e, 0x1904, 0x8cf1, -+ 0xc0b5, 0x2012, 0x2001, 0x0006, 0x080c, 0x4ebe, 0x2001, 0x0000, -+ 0x080c, 0x4eac, 0x00c6, 0x2009, 0x00ef, 0x00f6, 0x2079, 0x0100, -+ 0x79ea, 0x7932, 0x7936, 0x00fe, 0x080c, 0x280d, 0x00f6, 0x2079, -+ 0xb400, 0x7976, 0x2100, 0x2009, 0x0000, 0x080c, 0x27e3, 0x7952, -+ 0x00fe, 0x8108, 0x080c, 0x4f0e, 0x2c00, 0x00ce, 0x1904, 0x8cf1, -+ 0x601a, 0x2001, 0x0002, 0x080c, 0x4ebe, 0x601f, 0x0001, 0x6003, -+ 0x0001, 0x6007, 0x0002, 0x080c, 0x6c98, 0x0008, 0x0011, 0x00de, -+ 0x0005, 0x2001, 0x0007, 0x080c, 0x4ebe, 0x2001, 0xb400, 0x2004, -+ 0xa086, 0x0003, 0x1120, 0x2001, 0x0007, 0x080c, 0x4eeb, 0x080c, -+ 0x2c86, 0x080c, 0x85c0, 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, -+ 0xb400, 0x7084, 0xa086, 0x0014, 0x15f0, 0x7000, 0xa086, 0x0003, -+ 0x1128, 0x6010, 0xa005, 0x1110, 0x080c, 0x3efc, 0x00d6, 0x6018, -+ 0x2068, 0x080c, 0x500c, 0x080c, 0x8cb6, 0x00de, 0x080c, 0x8ff1, -+ 0x1550, 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, 0x0518, -+ 0x2001, 0x0006, 0x080c, 0x4ebe, 0x00e6, 0x6010, 0xa075, 0x01a8, -+ 0x7034, 0xa084, 0x00ff, 0xa086, 0x0039, 0x1148, 0x2001, 0x0000, -+ 0x2009, 0x0000, 0x2011, 0x4000, 0x080c, 0xa067, 0x0030, 0x7007, -+ 0x0000, 0x7037, 0x0103, 0x7033, 0x0200, 0x00ee, 0x080c, 0x2c86, -+ 0x080c, 0x85c0, 0x0020, 0x080c, 0x8bbc, 0x080c, 0x8d99, 0x001e, -+ 0x002e, 0x00ee, 0x0005, 0x2011, 0xb421, 0x2204, 0xa086, 0x0014, -+ 0x1158, 0x2001, 0x0002, 0x080c, 0x4ebe, 0x6003, 0x0001, 0x6007, -+ 0x0001, 0x080c, 0x6c98, 0x0010, 0x080c, 0x8d99, 0x0005, 0x2011, -+ 0xb421, 0x2204, 0xa086, 0x0004, 0x1138, 0x2001, 0x0007, 0x080c, -+ 0x4ebe, 0x080c, 0x85c0, 0x0010, 0x080c, 0x8d99, 0x0005, 0x000b, -+ 0x0005, 0x8c82, 0x8e38, 0x8c82, 0x8e6c, 0x8c82, 0x8ef4, 0x8e2d, -+ 0x8c82, 0x8c82, 0x8f07, 0x8c82, 0x8f17, 0x6604, 0xa686, 0x0003, -+ 0x0904, 0x8dac, 0xa6b6, 0x001e, 0x1110, 0x080c, 0x85c0, 0x0005, -+ 0x00d6, 0x00c6, 0x080c, 0x8f27, 0x1178, 0x2001, 0x0000, 0x080c, -+ 0x4eac, 0x2001, 0x0002, 0x080c, 0x4ebe, 0x6003, 0x0001, 0x6007, -+ 0x0002, 0x080c, 0x6c98, 0x00e8, 0x2009, 0xba8e, 0x2104, 0xa086, -+ 0x0009, 0x1160, 0x6018, 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, -+ 0x0170, 0x8001, 0x6842, 0x6017, 0x000a, 0x0058, 0x2009, 0xba8f, -+ 0x2104, 0xa084, 0xff00, 0xa086, 0x1900, 0x1108, 0x08d0, 0x080c, -+ 0x8d99, 0x00ce, 0x00de, 0x0005, 0x0026, 0x2011, 0x0000, 0x080c, -+ 0x8f35, 0x00d6, 0x2069, 0xb69e, 0x2d04, 0xa005, 0x0168, 0x6018, -+ 0x2068, 0x68a0, 0xa086, 0x007e, 0x1138, 0x2069, 0xb41d, 0x2d04, -+ 0x8000, 0x206a, 0x00de, 0x0010, 0x00de, 0x0078, 0x2001, 0x0000, -+ 0x080c, 0x4eac, 0x2001, 0x0002, 0x080c, 0x4ebe, 0x6003, 0x0001, -+ 0x6007, 0x0002, 0x080c, 0x6c98, 0x0468, 0x00d6, 0x6010, 0x2068, -+ 0x080c, 0x9beb, 0x00de, 0x0108, 0x6a34, 0x080c, 0x8bbc, 0x2009, -+ 0xba8e, 0x2134, 0xa6b4, 0x00ff, 0xa686, 0x0005, 0x01e8, 0xa686, -+ 0x000b, 0x01b0, 0x2009, 0xba8f, 0x2104, 0xa084, 0xff00, 0x1118, -+ 0xa686, 0x0009, 0x0188, 0xa086, 0x1900, 0x1150, 0xa686, 0x0009, -+ 0x0158, 0x2001, 0x0004, 0x080c, 0x4ebe, 0x080c, 0x85c0, 0x0010, -+ 0x080c, 0x8d99, 0x002e, 0x0005, 0x00d6, 0xa286, 0x0139, 0x0160, -+ 0x6010, 0x2068, 0x080c, 0x9beb, 0x0148, 0x6834, 0xa086, 0x0139, -+ 0x0118, 0x6838, 0xd0fc, 0x0110, 0x00de, 0x0c50, 0x6018, 0x2068, -+ 0x6840, 0xa084, 0x00ff, 0xa005, 0x0140, 0x8001, 0x6842, 0x6017, -+ 0x000a, 0x6007, 0x0016, 0x00de, 0x08e8, 0x68a0, 0xa086, 0x007e, -+ 0x1138, 0x00e6, 0x2071, 0xb400, 0x080c, 0x4b80, 0x00ee, 0x0010, -+ 0x080c, 0x2c60, 0x00de, 0x0860, 0x080c, 0x8f35, 0x1158, 0x2001, -+ 0x0004, 0x080c, 0x4ebe, 0x6003, 0x0001, 0x6007, 0x0003, 0x080c, -+ 0x6c98, 0x0020, 0x080c, 0x8bbc, 0x080c, 0x8d99, 0x0005, 0x0469, -+ 0x1158, 0x2001, 0x0008, 0x080c, 0x4ebe, 0x6003, 0x0001, 0x6007, -+ 0x0005, 0x080c, 0x6c98, 0x0010, 0x080c, 0x8d99, 0x0005, 0x00e9, -+ 0x1158, 0x2001, 0x000a, 0x080c, 0x4ebe, 0x6003, 0x0001, 0x6007, -+ 0x0001, 0x080c, 0x6c98, 0x0010, 0x080c, 0x8d99, 0x0005, 0x2009, -+ 0xba8e, 0x2104, 0xa086, 0x0003, 0x1138, 0x2009, 0xba8f, 0x2104, -+ 0xa084, 0xff00, 0xa086, 0x2a00, 0x0005, 0xa085, 0x0001, 0x0005, -+ 0x00c6, 0x0016, 0xac88, 0x0006, 0x2164, 0x080c, 0x4f79, 0x001e, -+ 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, 0x0016, 0x6018, -+ 0x2068, 0x2071, 0xb435, 0x2e04, 0xa085, 0x0003, 0x2072, 0x080c, -+ 0x8fc6, 0x0560, 0x2009, 0xb435, 0x2104, 0xc0cd, 0x200a, 0x2001, -+ 0xb453, 0x2004, 0xd0a4, 0x0158, 0xa006, 0x2020, 0x2009, 0x002a, -+ 0x080c, 0xb06b, 0x2001, 0xb40c, 0x200c, 0xc195, 0x2102, 0x2019, -+ 0x002a, 0x2009, 0x0001, 0x080c, 0x2c33, 0x2071, 0xb400, 0x080c, -+ 0x2a7e, 0x00c6, 0x0156, 0x20a9, 0x0081, 0x2009, 0x007f, 0x080c, -+ 0x2d5b, 0x8108, 0x1f04, 0x8f77, 0x015e, 0x00ce, 0x080c, 0x8f38, -+ 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0xba80, 0x2079, 0x0100, -+ 0x2e04, 0xa084, 0x00ff, 0x2069, 0xb41c, 0x206a, 0x78e6, 0x0006, -+ 0x8e70, 0x2e04, 0x2069, 0xb41d, 0x206a, 0x78ea, 0x7832, 0x7836, -+ 0x2010, 0xa084, 0xff00, 0x001e, 0xa105, 0x2009, 0xb428, 0x200a, -+ 0x2200, 0xa084, 0x00ff, 0x2008, 0x080c, 0x280d, 0x080c, 0x5a90, -+ 0x0170, 0x2069, 0xba8e, 0x2071, 0xb6b2, 0x6810, 0x2072, 0x6814, -+ 0x7006, 0x6818, 0x700a, 0x681c, 0x700e, 0x080c, 0x9f63, 0x0040, -+ 0x2001, 0x0006, 0x080c, 0x4ebe, 0x080c, 0x2c86, 0x080c, 0x85c0, -+ 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x0026, 0x0036, -+ 0x00e6, 0x0156, 0x2019, 0xb428, 0x231c, 0x83ff, 0x01e8, 0x2071, -+ 0xba80, 0x2e14, 0xa294, 0x00ff, 0x7004, 0xa084, 0xff00, 0xa205, -+ 0xa306, 0x1190, 0x2011, 0xba96, 0xad98, 0x000a, 0x20a9, 0x0004, -+ 0x080c, 0x907a, 0x1148, 0x2011, 0xba9a, 0xad98, 0x0006, 0x20a9, -+ 0x0004, 0x080c, 0x907a, 0x1100, 0x015e, 0x00ee, 0x003e, 0x002e, -+ 0x0005, 0x00e6, 0x2071, 0xba8c, 0x7004, 0xa086, 0x0014, 0x11a8, -+ 0x7008, 0xa086, 0x0800, 0x1188, 0x700c, 0xd0ec, 0x0160, 0xa084, -+ 0x0f00, 0xa086, 0x0100, 0x1138, 0x7024, 0xd0a4, 0x1110, 0xd0ac, -+ 0x0110, 0xa006, 0x0010, 0xa085, 0x0001, 0x00ee, 0x0005, 0x00e6, -+ 0x00d6, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006, 0x0126, -+ 0x2091, 0x8000, 0x2029, 0xb6e9, 0x252c, 0x2021, 0xb6ef, 0x2424, -+ 0x2061, 0xbc00, 0x2071, 0xb400, 0x7248, 0x7068, 0xa202, 0x16f0, -+ 0x080c, 0xb093, 0x05a0, 0x671c, 0xa786, 0x0001, 0x0580, 0xa786, -+ 0x0007, 0x0568, 0x2500, 0xac06, 0x0550, 0x2400, 0xac06, 0x0538, -+ 0x00c6, 0x6000, 0xa086, 0x0004, 0x1110, 0x080c, 0x1944, 0xa786, -+ 0x0008, 0x1148, 0x080c, 0x9de9, 0x1130, 0x00ce, 0x080c, 0x8bbc, -+ 0x080c, 0x9dae, 0x00a0, 0x6010, 0x2068, 0x080c, 0x9beb, 0x0160, -+ 0xa786, 0x0003, 0x11e8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, -+ 0x080c, 0x53c9, 0x080c, 0x9da2, 0x080c, 0x9dae, 0x00ce, 0xace0, -+ 0x0018, 0x705c, 0xac02, 0x1210, 0x0804, 0x9024, 0x012e, 0x000e, -+ 0x002e, 0x004e, 0x005e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x0005, -+ 0xa786, 0x0006, 0x1118, 0x080c, 0xb01c, 0x0c30, 0xa786, 0x000a, -+ 0x09e0, 0x08c8, 0x220c, 0x2304, 0xa106, 0x1130, 0x8210, 0x8318, -+ 0x1f04, 0x907a, 0xa006, 0x0005, 0x2304, 0xa102, 0x0218, 0x2001, -+ 0x0001, 0x0010, 0x2001, 0x0000, 0xa18d, 0x0001, 0x0005, 0x6004, -+ 0xa08a, 0x0080, 0x1a0c, 0x1511, 0x080c, 0x9dd8, 0x0120, 0x080c, -+ 0x9de9, 0x0168, 0x0028, 0x080c, 0x2c86, 0x080c, 0x9de9, 0x0138, -+ 0x080c, 0x7055, 0x080c, 0x85c0, 0x080c, 0x7134, 0x0005, 0x080c, -+ 0x8bbc, 0x0cb0, 0xa182, 0x0040, 0x0002, 0x90c0, 0x90c0, 0x90c0, -+ 0x90c0, 0x90c0, 0x90c0, 0x90c0, 0x90c0, 0x90c0, 0x90c0, 0x90c0, -+ 0x90c2, 0x90c2, 0x90c2, 0x90c2, 0x90c0, 0x90c0, 0x90c0, 0x90c2, -+ 0x080c, 0x1511, 0x600b, 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, -+ 0x6c52, 0x0126, 0x2091, 0x8000, 0x080c, 0x7134, 0x012e, 0x0005, -+ 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0040, 0x0804, 0x915c, -+ 0xa186, 0x0027, 0x11e8, 0x080c, 0x7055, 0x080c, 0x2c60, 0x00d6, -+ 0x6110, 0x2168, 0x080c, 0x9beb, 0x0168, 0x6837, 0x0103, 0x684b, -+ 0x0029, 0x6847, 0x0000, 0x694c, 0xc1c5, 0x694e, 0x080c, 0x53c9, -+ 0x080c, 0x9da2, 0x00de, 0x080c, 0x85c0, 0x080c, 0x7134, 0x0005, -+ 0xa186, 0x0014, 0x1120, 0x6004, 0xa082, 0x0040, 0x0428, 0xa186, -+ 0x0046, 0x0138, 0xa186, 0x0045, 0x0120, 0xa186, 0x0047, 0x190c, -+ 0x1511, 0x2001, 0x0109, 0x2004, 0xd084, 0x0198, 0x0126, 0x2091, -+ 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x6b39, 0x002e, 0x001e, -+ 0x000e, 0x012e, 0xe000, 0x6000, 0xa086, 0x0002, 0x1110, 0x0804, -+ 0x919a, 0x080c, 0x8606, 0x0005, 0x0002, 0x913a, 0x9138, 0x9138, -+ 0x9138, 0x9138, 0x9138, 0x9138, 0x9138, 0x9138, 0x9138, 0x9138, -+ 0x9155, 0x9155, 0x9155, 0x9155, 0x9138, 0x9155, 0x9138, 0x9155, -+ 0x080c, 0x1511, 0x080c, 0x7055, 0x00d6, 0x6110, 0x2168, 0x080c, -+ 0x9beb, 0x0168, 0x6837, 0x0103, 0x684b, 0x0006, 0x6847, 0x0000, -+ 0x6850, 0xc0ec, 0x6852, 0x080c, 0x53c9, 0x080c, 0x9da2, 0x00de, -+ 0x080c, 0x85c0, 0x080c, 0x7134, 0x0005, 0x080c, 0x7055, 0x080c, -+ 0x85c0, 0x080c, 0x7134, 0x0005, 0x0002, 0x9172, 0x9170, 0x9170, -+ 0x9170, 0x9170, 0x9170, 0x9170, 0x9170, 0x9170, 0x9170, 0x9170, -+ 0x9184, 0x9184, 0x9184, 0x9184, 0x9170, 0x9193, 0x9170, 0x9184, -+ 0x080c, 0x1511, 0x080c, 0x7055, 0x2001, 0xb6b8, 0x2004, 0x603e, -+ 0x6003, 0x0002, 0x080c, 0x7134, 0x6010, 0xa088, 0x0013, 0x2104, -+ 0xa085, 0x0400, 0x200a, 0x0005, 0x080c, 0x7055, 0x2001, 0xb6b6, -+ 0x2004, 0x6016, 0x2001, 0xb6b8, 0x2004, 0x603e, 0x6003, 0x000f, -+ 0x080c, 0x7134, 0x0005, 0x080c, 0x7055, 0x080c, 0x85c0, 0x080c, -+ 0x7134, 0x0005, 0xa182, 0x0040, 0x0002, 0x91b0, 0x91b0, 0x91b0, -+ 0x91b0, 0x91b0, 0x91b2, 0x9290, 0x92bf, 0x91b0, 0x91b0, 0x91b0, -+ 0x91b0, 0x91b0, 0x91b0, 0x91b0, 0x91b0, 0x91b0, 0x91b0, 0x91b0, -+ 0x080c, 0x1511, 0x00e6, 0x00d6, 0x603f, 0x0000, 0x2071, 0xba80, -+ 0x7124, 0x610a, 0x2071, 0xba8c, 0x6110, 0x2168, 0x7614, 0xa6b4, -+ 0x0fff, 0x86ff, 0x0904, 0x925a, 0xa68c, 0x0c00, 0x01e8, 0x00f6, -+ 0x2c78, 0x080c, 0x52c6, 0x00fe, 0x0198, 0x684c, 0xd0ac, 0x0180, -+ 0x6020, 0xd0dc, 0x1168, 0x6850, 0xd0bc, 0x1150, 0x7318, 0x6814, -+ 0xa306, 0x1904, 0x926c, 0x731c, 0x6810, 0xa306, 0x1904, 0x926c, -+ 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, 0x0002, -+ 0x0518, 0xa186, 0x0028, 0x1128, 0x080c, 0x9dc7, 0x684b, 0x001c, -+ 0x00e8, 0xd6dc, 0x01a0, 0x684b, 0x0015, 0x684c, 0xd0ac, 0x0170, -+ 0x6914, 0x6a10, 0x2100, 0xa205, 0x0148, 0x7018, 0xa106, 0x1118, -+ 0x701c, 0xa206, 0x0118, 0x6962, 0x6a5e, 0xc6dc, 0x0038, 0xd6d4, -+ 0x0118, 0x684b, 0x0007, 0x0010, 0x684b, 0x0000, 0x6837, 0x0103, -+ 0x6e46, 0xa01e, 0xd6c4, 0x01f0, 0xa686, 0x0100, 0x1140, 0x2001, -+ 0xba99, 0x2004, 0xa005, 0x1118, 0xc6c4, 0x0804, 0x91c1, 0x7328, -+ 0x732c, 0x6b56, 0x83ff, 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, -+ 0x0008, 0x0036, 0x2308, 0x2019, 0xba98, 0xad90, 0x0019, 0x080c, -+ 0x98a6, 0x003e, 0xd6cc, 0x0904, 0x927f, 0x7124, 0x695a, 0x81ff, -+ 0x0904, 0x927f, 0xa192, 0x0021, 0x1260, 0x2071, 0xba98, 0x831c, -+ 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, 0x98a6, 0x080c, 0xa0c8, -+ 0x04b0, 0x6838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, 0x0c68, -+ 0x00f6, 0x2d78, 0x080c, 0x984b, 0x00fe, 0x080c, 0xa0c8, 0x080c, -+ 0x9896, 0x0438, 0x00f6, 0x2c78, 0x080c, 0x52c6, 0x00fe, 0x0188, -+ 0x684c, 0xd0ac, 0x0170, 0x6020, 0xd0dc, 0x1158, 0x6850, 0xd0bc, -+ 0x1140, 0x684c, 0xd0f4, 0x1128, 0x080c, 0x9ec6, 0x00de, 0x00ee, -+ 0x00f0, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, -+ 0x0130, 0x6810, 0x6914, 0xa115, 0x0110, 0x080c, 0x941c, 0x080c, -+ 0x53c9, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, -+ 0x080c, 0x9e94, 0x00de, 0x00ee, 0x1110, 0x080c, 0x85c0, 0x0005, -+ 0x00f6, 0x6003, 0x0003, 0x2079, 0xba8c, 0x7c04, 0x7b00, 0x7e0c, -+ 0x7d08, 0x6010, 0x2078, 0x784c, 0xd0ac, 0x0138, 0x6003, 0x0002, -+ 0x00fe, 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0x797c, 0xa10a, -+ 0x2300, 0x7a80, 0xa213, 0x2600, 0xa102, 0x2500, 0xa203, 0x0e90, -+ 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x00fe, 0x603f, 0x0000, 0x2c10, -+ 0x080c, 0x1f7a, 0x080c, 0x6cb5, 0x080c, 0x71f1, 0x0005, 0x2001, -+ 0xb6b8, 0x2004, 0x603e, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, -+ 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1856, 0x0005, 0xa182, 0x0040, -+ 0x0002, 0x92e4, 0x92e4, 0x92e4, 0x92e4, 0x92e4, 0x92e6, 0x9379, -+ 0x92e4, 0x92e4, 0x938f, 0x93f3, 0x92e4, 0x92e4, 0x92e4, 0x92e4, -+ 0x9402, 0x92e4, 0x92e4, 0x92e4, 0x080c, 0x1511, 0x0076, 0x00f6, -+ 0x00e6, 0x00d6, 0x2071, 0xba8c, 0x6110, 0x2178, 0x7614, 0xa6b4, -+ 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, -+ 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x86ff, 0x0904, 0x9374, 0xa694, -+ 0xff00, 0xa284, 0x0c00, 0x0120, 0x7018, 0x7862, 0x701c, 0x785e, -+ 0xa284, 0x0300, 0x0904, 0x9374, 0x080c, 0x15f4, 0x090c, 0x1511, -+ 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838, -+ 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, -+ 0x0120, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, -+ 0x0002, 0x0180, 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, -+ 0xd6dc, 0x0118, 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, -+ 0x0007, 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, -+ 0x6856, 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, -+ 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, -+ 0x2019, 0xba98, 0xad90, 0x0019, 0x080c, 0x98a6, 0x003e, 0xd6cc, -+ 0x01d8, 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, -+ 0x2071, 0xba98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, -+ 0x98a6, 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, -+ 0x0c78, 0x2d78, 0x080c, 0x984b, 0x00de, 0x00ee, 0x00fe, 0x007e, -+ 0x0005, 0x00f6, 0x6003, 0x0003, 0x2079, 0xba8c, 0x7c04, 0x7b00, -+ 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, -+ 0x00fe, 0x2c10, 0x080c, 0x1f7a, 0x080c, 0x7d0a, 0x0005, 0x00d6, -+ 0x00f6, 0x2c78, 0x080c, 0x52c6, 0x00fe, 0x0120, 0x2001, 0xb6b8, -+ 0x2004, 0x603e, 0x6003, 0x0002, 0x080c, 0x70e7, 0x080c, 0x71f1, -+ 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0904, 0x93f1, 0xd1cc, 0x0540, -+ 0x6948, 0x6838, 0xd0fc, 0x01e8, 0x0016, 0x684c, 0x0006, 0x6850, -+ 0x0006, 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x0156, -+ 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0x93b9, 0x015e, -+ 0x000e, 0x6852, 0x000e, 0x684e, 0x001e, 0x2168, 0x080c, 0x161b, -+ 0x0418, 0x0016, 0x080c, 0x161b, 0x00de, 0x080c, 0x9896, 0x00e0, -+ 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x0180, -+ 0xa086, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, 0xd1dc, 0x0118, -+ 0x684b, 0x0015, 0x0038, 0xd1d4, 0x0118, 0x684b, 0x0007, 0x0010, -+ 0x684b, 0x0000, 0x080c, 0x53c9, 0x080c, 0x9e94, 0x1110, 0x080c, -+ 0x85c0, 0x00de, 0x0005, 0x2019, 0x0001, 0x080c, 0x7f8e, 0x6003, -+ 0x0002, 0x2001, 0xb6b8, 0x2004, 0x603e, 0x080c, 0x70e7, 0x080c, -+ 0x71f1, 0x0005, 0x080c, 0x70e7, 0x080c, 0x2c60, 0x00d6, 0x6110, -+ 0x2168, 0x080c, 0x9beb, 0x0150, 0x6837, 0x0103, 0x684b, 0x0029, -+ 0x6847, 0x0000, 0x080c, 0x53c9, 0x080c, 0x9da2, 0x00de, 0x080c, -+ 0x85c0, 0x080c, 0x71f1, 0x0005, 0x684b, 0x0015, 0xd1fc, 0x0138, -+ 0x684b, 0x0007, 0x8002, 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, -+ 0x685e, 0x0005, 0xa182, 0x0040, 0x0002, 0x9440, 0x9440, 0x9440, -+ 0x9440, 0x9440, 0x9442, 0x9440, 0x94fd, 0x9509, 0x9440, 0x9440, -+ 0x9440, 0x9440, 0x9440, 0x9440, 0x9440, 0x9440, 0x9440, 0x9440, -+ 0x080c, 0x1511, 0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, 0xba8c, -+ 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x00f6, 0x2c78, 0x080c, -+ 0x52c6, 0x00fe, 0x0150, 0xa684, 0x00ff, 0x1138, 0x6020, 0xd0f4, -+ 0x0120, 0x080c, 0x9ec6, 0x0804, 0x94f8, 0x7e46, 0x7f4c, 0xc7e5, -+ 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, -+ 0x86ff, 0x0904, 0x94ee, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0120, -+ 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0904, 0x94ec, -+ 0xa686, 0x0100, 0x1140, 0x2001, 0xba99, 0x2004, 0xa005, 0x1118, -+ 0xc6c4, 0x7e46, 0x0c28, 0x080c, 0x15f4, 0x090c, 0x1511, 0x2d00, -+ 0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, -+ 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x0c00, -+ 0x0120, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0xa68c, 0x00ff, 0xa186, -+ 0x0002, 0x0180, 0xa186, 0x0028, 0x1118, 0x684b, 0x001c, 0x0060, -+ 0xd6dc, 0x0118, 0x684b, 0x0015, 0x0038, 0xd6d4, 0x0118, 0x684b, -+ 0x0007, 0x0010, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, -+ 0x6856, 0xa01e, 0xd6c4, 0x0198, 0x7328, 0x732c, 0x6b56, 0x83ff, -+ 0x0170, 0xa38a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, 0x2308, -+ 0x2019, 0xba98, 0xad90, 0x0019, 0x080c, 0x98a6, 0x003e, 0xd6cc, -+ 0x01d8, 0x7124, 0x695a, 0x81ff, 0x01b8, 0xa192, 0x0021, 0x1250, -+ 0x2071, 0xba98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x080c, -+ 0x98a6, 0x0050, 0x7838, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x695a, -+ 0x0c78, 0x2d78, 0x080c, 0x984b, 0xd6dc, 0x1110, 0xa006, 0x0030, -+ 0x2001, 0x0001, 0x2071, 0xba8c, 0x7218, 0x731c, 0x080c, 0x18a9, -+ 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, 0x2001, 0xb6b8, 0x2004, -+ 0x603e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1856, -+ 0x0005, 0x2001, 0xb6b8, 0x2004, 0x603e, 0x00d6, 0x6003, 0x0002, -+ 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0904, 0x9614, 0x603f, 0x0000, -+ 0x00f6, 0x2c78, 0x080c, 0x52c6, 0x00fe, 0x0560, 0x6814, 0x6910, -+ 0xa115, 0x0540, 0x6a60, 0xa206, 0x1118, 0x685c, 0xa106, 0x0510, -+ 0x684c, 0xc0e4, 0x684e, 0x6847, 0x0000, 0x6863, 0x0000, 0x685f, -+ 0x0000, 0x6020, 0xd0f4, 0x1158, 0x697c, 0x6810, 0xa102, 0x603a, -+ 0x6980, 0x6814, 0xa103, 0x6036, 0x6020, 0xc0f5, 0x6022, 0x00d6, -+ 0x6018, 0x2068, 0x683c, 0x8000, 0x683e, 0x00de, 0x080c, 0x9ec6, -+ 0x0804, 0x9614, 0x694c, 0xd1cc, 0x0904, 0x95e4, 0x6948, 0x6838, -+ 0xd0fc, 0x0904, 0x95a7, 0x0016, 0x684c, 0x0006, 0x6850, 0x0006, -+ 0x00f6, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, -+ 0xa086, 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, -+ 0xd1dc, 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xa050, -+ 0x0118, 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, -+ 0x0007, 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, -+ 0x6914, 0xa115, 0x0110, 0x080c, 0x941c, 0x6848, 0x784a, 0x6860, -+ 0x7862, 0x685c, 0x785e, 0xad90, 0x000d, 0xaf98, 0x000d, 0x2009, -+ 0x0020, 0x0156, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, -+ 0x9593, 0x015e, 0x00fe, 0x000e, 0x6852, 0x000e, 0x684e, 0x080c, -+ 0xa0c8, 0x001e, 0x2168, 0x080c, 0x161b, 0x0804, 0x960f, 0x0016, -+ 0x00f6, 0x2178, 0x7944, 0xa184, 0x00ff, 0xa0b6, 0x0002, 0x01e0, -+ 0xa086, 0x0028, 0x1128, 0x684b, 0x001c, 0x784b, 0x001c, 0x00e8, -+ 0xd1dc, 0x0158, 0x684b, 0x0015, 0x784b, 0x0015, 0x080c, 0xa050, -+ 0x0118, 0x7944, 0xc1dc, 0x7946, 0x0080, 0xd1d4, 0x0128, 0x684b, -+ 0x0007, 0x784b, 0x0007, 0x0048, 0x684c, 0xd0ac, 0x0130, 0x6810, -+ 0x6914, 0xa115, 0x0110, 0x080c, 0x941c, 0x6860, 0x7862, 0x685c, -+ 0x785e, 0x684c, 0x784e, 0x00fe, 0x080c, 0x161b, 0x00de, 0x080c, -+ 0xa0c8, 0x080c, 0x9896, 0x0458, 0x6837, 0x0103, 0x6944, 0xa184, -+ 0x00ff, 0xa0b6, 0x0002, 0x01b0, 0xa086, 0x0028, 0x1118, 0x684b, -+ 0x001c, 0x00d8, 0xd1dc, 0x0148, 0x684b, 0x0015, 0x080c, 0xa050, -+ 0x0118, 0x6944, 0xc1dc, 0x6946, 0x0080, 0xd1d4, 0x0118, 0x684b, -+ 0x0007, 0x0058, 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0130, 0x6810, -+ 0x6914, 0xa115, 0x0110, 0x080c, 0x941c, 0x080c, 0x53c9, 0x080c, -+ 0x9e94, 0x1110, 0x080c, 0x85c0, 0x00de, 0x0005, 0x080c, 0x7055, -+ 0x0010, 0x080c, 0x70e7, 0x080c, 0x9beb, 0x01c0, 0x00d6, 0x6110, -+ 0x2168, 0x6837, 0x0103, 0x2009, 0xb40c, 0x210c, 0xd18c, 0x11c0, -+ 0xd184, 0x1198, 0x6108, 0x694a, 0xa18e, 0x0029, 0x1110, 0x080c, -+ 0xb303, 0x6847, 0x0000, 0x080c, 0x53c9, 0x00de, 0x080c, 0x85c0, -+ 0x080c, 0x7134, 0x080c, 0x71f1, 0x0005, 0x684b, 0x0004, 0x0c88, -+ 0x684b, 0x0004, 0x0c70, 0xa182, 0x0040, 0x0002, 0x9659, 0x9659, -+ 0x9659, 0x9659, 0x9659, 0x965b, 0x9659, 0x965e, 0x9659, 0x9659, -+ 0x9659, 0x9659, 0x9659, 0x9659, 0x9659, 0x9659, 0x9659, 0x9659, -+ 0x9659, 0x080c, 0x1511, 0x080c, 0x85c0, 0x0005, 0x0006, 0x0026, -+ 0xa016, 0x080c, 0x1856, 0x002e, 0x000e, 0x0005, 0xa182, 0x0085, -+ 0x0002, 0x9672, 0x9670, 0x9670, 0x967e, 0x9670, 0x9670, 0x9670, -+ 0x080c, 0x1511, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c52, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x7134, 0x012e, 0x0005, 0x0026, 0x0056, -+ 0x00d6, 0x00e6, 0x2071, 0xba80, 0x7224, 0x6212, 0x7220, 0x080c, -+ 0x9bdb, 0x01a0, 0x2268, 0x6800, 0xa086, 0x0000, 0x0178, 0x6018, -+ 0x6d18, 0xa52e, 0x1158, 0x00c6, 0x2d60, 0x080c, 0x98b6, 0x00ce, -+ 0x0128, 0x6803, 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, -+ 0x6003, 0x0001, 0x080c, 0x6c52, 0x080c, 0x7134, 0x00f6, 0x2278, -+ 0x080c, 0x52c6, 0x00fe, 0x0150, 0x6820, 0xd0ec, 0x0138, 0x00c6, -+ 0x2260, 0x603f, 0x0000, 0x080c, 0x9ec6, 0x00ce, 0x00ee, 0x00de, -+ 0x005e, 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004, 0xa08a, -+ 0x0085, 0x0a0c, 0x1511, 0xa08a, 0x008c, 0x1a0c, 0x1511, 0xa082, -+ 0x0085, 0x0072, 0xa186, 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, -+ 0x1511, 0x080c, 0x7055, 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, -+ 0x96df, 0x96e1, 0x96e1, 0x96df, 0x96df, 0x96df, 0x96df, 0x080c, -+ 0x1511, 0x080c, 0x7055, 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, -+ 0xa186, 0x0013, 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x04a8, -+ 0xa186, 0x0027, 0x11e8, 0x080c, 0x7055, 0x080c, 0x2c60, 0x00d6, -+ 0x6010, 0x2068, 0x080c, 0x9beb, 0x0150, 0x6837, 0x0103, 0x6847, -+ 0x0000, 0x684b, 0x0029, 0x080c, 0x53c9, 0x080c, 0x9da2, 0x00de, -+ 0x080c, 0x85c0, 0x080c, 0x7134, 0x0005, 0x080c, 0x8606, 0x0ce0, -+ 0xa186, 0x0014, 0x1dd0, 0x080c, 0x7055, 0x00d6, 0x6010, 0x2068, -+ 0x080c, 0x9beb, 0x0d60, 0x6837, 0x0103, 0x6847, 0x0000, 0x684b, -+ 0x0006, 0x6850, 0xc0ec, 0x6852, 0x08f0, 0x0002, 0x972f, 0x972d, -+ 0x972d, 0x972d, 0x972d, 0x972d, 0x9747, 0x080c, 0x1511, 0x080c, -+ 0x7055, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, -+ 0xa186, 0x0035, 0x1118, 0x2001, 0xb6b6, 0x0010, 0x2001, 0xb6b7, -+ 0x2004, 0x6016, 0x6003, 0x000c, 0x080c, 0x7134, 0x0005, 0x080c, -+ 0x7055, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, -+ 0xa186, 0x0035, 0x1118, 0x2001, 0xb6b6, 0x0010, 0x2001, 0xb6b7, -+ 0x2004, 0x6016, 0x6003, 0x000e, 0x080c, 0x7134, 0x0005, 0xa182, -+ 0x008c, 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x8606, -+ 0x0005, 0x9770, 0x9770, 0x9770, 0x9770, 0x9772, 0x97cb, 0x9770, -+ 0x080c, 0x1511, 0x00d6, 0x00f6, 0x2c78, 0x080c, 0x52c6, 0x00fe, -+ 0x0168, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0039, 0x0118, -+ 0xa186, 0x0035, 0x1118, 0x00de, 0x0804, 0x97de, 0x080c, 0x9beb, -+ 0x1118, 0x080c, 0x9da2, 0x00f0, 0x6010, 0x2068, 0x684c, 0xd0e4, -+ 0x1110, 0x080c, 0x9da2, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, -+ 0x684b, 0x0006, 0xc0ec, 0x6852, 0x0048, 0xd0bc, 0x0118, 0x684b, -+ 0x0002, 0x0020, 0x684b, 0x0005, 0x080c, 0x9e63, 0x6847, 0x0000, -+ 0x080c, 0x53c9, 0x2c68, 0x080c, 0x856a, 0x01c0, 0x6003, 0x0001, -+ 0x6007, 0x001e, 0x600b, 0xffff, 0x2009, 0xba8e, 0x210c, 0x6136, -+ 0x2009, 0xba8f, 0x210c, 0x613a, 0x6918, 0x611a, 0x080c, 0x9fb8, -+ 0x6950, 0x6152, 0x601f, 0x0001, 0x080c, 0x6c52, 0x2d60, 0x080c, -+ 0x85c0, 0x00de, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x52c6, 0x00fe, -+ 0x0598, 0x6030, 0xa08c, 0xff00, 0x810f, 0xa186, 0x0035, 0x0130, -+ 0xa186, 0x001e, 0x0118, 0xa186, 0x0039, 0x1530, 0x00d6, 0x2c68, -+ 0x080c, 0xa09b, 0x1904, 0x9823, 0x080c, 0x856a, 0x01d8, 0x6106, -+ 0x6003, 0x0001, 0x601f, 0x0001, 0x6918, 0x611a, 0x6928, 0x612a, -+ 0x692c, 0x612e, 0x6930, 0xa18c, 0x00ff, 0x6132, 0x6934, 0x6136, -+ 0x6938, 0x613a, 0x6950, 0x6152, 0x080c, 0x9fb8, 0x080c, 0x6c52, -+ 0x080c, 0x7134, 0x2d60, 0x00f8, 0x00d6, 0x6010, 0x2068, 0x080c, -+ 0x9beb, 0x01c8, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0128, 0xc0ec, -+ 0x6852, 0x684b, 0x0006, 0x0048, 0xd0bc, 0x0118, 0x684b, 0x0002, -+ 0x0020, 0x684b, 0x0005, 0x080c, 0x9e63, 0x6847, 0x0000, 0x080c, -+ 0x53c9, 0x080c, 0x9da2, 0x00de, 0x080c, 0x85c0, 0x0005, 0x0016, -+ 0x00d6, 0x6010, 0x2068, 0x080c, 0x9beb, 0x0140, 0x6837, 0x0103, -+ 0x684b, 0x0028, 0x6847, 0x0000, 0x080c, 0x53c9, 0x00de, 0x001e, -+ 0xa186, 0x0013, 0x0148, 0xa186, 0x0014, 0x0130, 0xa186, 0x0027, -+ 0x0118, 0x080c, 0x8606, 0x0030, 0x080c, 0x7055, 0x080c, 0x9dae, -+ 0x080c, 0x7134, 0x0005, 0x0056, 0x0066, 0x00d6, 0x00f6, 0x2029, -+ 0x0001, 0xa182, 0x0101, 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, -+ 0x2069, 0xba98, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, -+ 0x001d, 0x080c, 0x98a6, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0110, -+ 0x080c, 0x161b, 0x080c, 0x15f4, 0x0500, 0x8528, 0x6837, 0x0110, -+ 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a, 0x003d, 0x1228, 0x2608, -+ 0xad90, 0x000f, 0x0459, 0x0088, 0xa6b2, 0x003c, 0x2009, 0x003c, -+ 0x2d78, 0xad90, 0x000f, 0x0411, 0x0c28, 0x00fe, 0x852f, 0xa5ad, -+ 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0028, 0x00fe, 0x852f, 0xa5ad, -+ 0x0003, 0x7d36, 0x00de, 0x006e, 0x005e, 0x0005, 0x00f6, 0x8dff, -+ 0x0158, 0x6804, 0xa07d, 0x0130, 0x6807, 0x0000, 0x080c, 0x53c9, -+ 0x2f68, 0x0cb8, 0x080c, 0x53c9, 0x00fe, 0x0005, 0x0156, 0xa184, -+ 0x0001, 0x0108, 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, -+ 0x8318, 0x8210, 0x1f04, 0x98ad, 0x015e, 0x0005, 0x0066, 0x0126, -+ 0x2091, 0x8000, 0x2031, 0x0001, 0x601c, 0xa084, 0x000f, 0x0083, -+ 0x012e, 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, -+ 0x0000, 0x601c, 0xa084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, -+ 0x98ed, 0x98ed, 0x98e8, 0x990f, 0x98db, 0x98e8, 0x990f, 0x98e8, -+ 0x98e8, 0x98db, 0x98e8, 0x080c, 0x1511, 0x0036, 0x2019, 0x0010, -+ 0x080c, 0xac63, 0x601f, 0x0006, 0x6003, 0x0007, 0x003e, 0x0005, -+ 0xa006, 0x0005, 0xa085, 0x0001, 0x0005, 0x00d6, 0x86ff, 0x11d8, -+ 0x6010, 0x2068, 0x080c, 0x9beb, 0x01c0, 0x6834, 0xa086, 0x0139, -+ 0x1128, 0x684b, 0x0005, 0x6853, 0x0000, 0x0028, 0xa00e, 0x2001, -+ 0x0005, 0x080c, 0x549c, 0x080c, 0x9e63, 0x080c, 0x53c9, 0x080c, -+ 0x85c0, 0xa085, 0x0001, 0x00de, 0x0005, 0xa006, 0x0ce0, 0x6000, -+ 0xa08a, 0x0010, 0x1a0c, 0x1511, 0x000b, 0x0005, 0x9926, 0x9947, -+ 0x9928, 0x9966, 0x9944, 0x9926, 0x98e8, 0x98ed, 0x98ed, 0x98e8, -+ 0x98e8, 0x98e8, 0x98e8, 0x98e8, 0x98e8, 0x98e8, 0x080c, 0x1511, -+ 0x86ff, 0x11b8, 0x601c, 0xa086, 0x0006, 0x0198, 0x00d6, 0x6010, -+ 0x2068, 0x080c, 0x9beb, 0x0110, 0x080c, 0x9e63, 0x00de, 0x6007, -+ 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, 0x6c52, 0x080c, -+ 0x7134, 0xa085, 0x0001, 0x0005, 0x080c, 0x1944, 0x0c08, 0x00e6, -+ 0x2071, 0xb6e0, 0x7024, 0xac06, 0x1110, 0x080c, 0x7f03, 0x601c, -+ 0xa084, 0x000f, 0xa086, 0x0006, 0x1150, 0x0086, 0x0096, 0x2049, -+ 0x0001, 0x2c40, 0x080c, 0x80da, 0x009e, 0x008e, 0x0010, 0x080c, -+ 0x7e02, 0x00ee, 0x1928, 0x080c, 0x98e8, 0x0005, 0x0036, 0x00e6, -+ 0x2071, 0xb6e0, 0x703c, 0xac06, 0x1140, 0x2019, 0x0000, 0x080c, -+ 0x7f8e, 0x00ee, 0x003e, 0x0804, 0x9928, 0x080c, 0x8200, 0x00ee, -+ 0x003e, 0x1904, 0x9928, 0x080c, 0x98e8, 0x0005, 0x00c6, 0x601c, -+ 0xa084, 0x000f, 0x0013, 0x00ce, 0x0005, 0x9997, 0x9a04, 0x9b4a, -+ 0x99a2, 0x9dae, 0x9997, 0xac55, 0x85c0, 0x9a04, 0x9990, 0x9bb5, -+ 0x080c, 0x1511, 0x080c, 0x9de9, 0x1110, 0x080c, 0x8bbc, 0x0005, -+ 0x080c, 0x7055, 0x080c, 0x7134, 0x080c, 0x85c0, 0x0005, 0x6017, -+ 0x0001, 0x0005, 0x080c, 0x9beb, 0x0120, 0x6010, 0xa080, 0x0019, -+ 0x2c02, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1511, 0x000b, 0x0005, -+ 0x99c0, 0x99c2, 0x99e2, 0x99f4, 0x9a01, 0x99c0, 0x9997, 0x9997, -+ 0x9997, 0x99f4, 0x99f4, 0x99c0, 0x99c0, 0x99c0, 0x99c0, 0x99fe, -+ 0x080c, 0x1511, 0x00e6, 0x6010, 0x2070, 0x7050, 0xc0b5, 0x7052, -+ 0x2071, 0xb6e0, 0x7024, 0xac06, 0x0190, 0x080c, 0x7e02, 0x6007, -+ 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x2001, 0xb6b7, 0x2004, -+ 0x6016, 0x080c, 0x6c52, 0x080c, 0x7134, 0x00ee, 0x0005, 0x6017, -+ 0x0001, 0x0cd8, 0x00d6, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, -+ 0x00de, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x080c, -+ 0x6c52, 0x080c, 0x7134, 0x0005, 0x00d6, 0x6017, 0x0001, 0x6010, -+ 0x2068, 0x6850, 0xc0b5, 0x6852, 0x00de, 0x0005, 0x080c, 0x85c0, -+ 0x0005, 0x080c, 0x1944, 0x08f0, 0x6000, 0xa08a, 0x0010, 0x1a0c, -+ 0x1511, 0x000b, 0x0005, 0x9a1b, 0x999f, 0x9a1d, 0x9a1b, 0x9a1d, -+ 0x9a1d, 0x9998, 0x9a1b, 0x9992, 0x9992, 0x9a1b, 0x9a1b, 0x9a1b, -+ 0x9a1b, 0x9a1b, 0x9a1b, 0x080c, 0x1511, 0x00d6, 0x6018, 0x2068, -+ 0x6804, 0xa084, 0x00ff, 0x00de, 0xa08a, 0x000c, 0x1a0c, 0x1511, -+ 0x000b, 0x0005, 0x9a36, 0x9af0, 0x9a38, 0x9a72, 0x9a38, 0x9a72, -+ 0x9a38, 0x9a42, 0x9a36, 0x9a72, 0x9a36, 0x9a5e, 0x080c, 0x1511, -+ 0x6004, 0xa08e, 0x0016, 0x0588, 0xa08e, 0x0004, 0x0570, 0xa08e, -+ 0x0002, 0x0558, 0x6004, 0x080c, 0x9de9, 0x0904, 0x9b09, 0xa08e, -+ 0x0021, 0x0904, 0x9b0d, 0xa08e, 0x0022, 0x0904, 0x9b09, 0xa08e, -+ 0x003d, 0x0904, 0x9b0d, 0xa08e, 0x0039, 0x0904, 0x9b11, 0xa08e, -+ 0x0035, 0x0904, 0x9b11, 0xa08e, 0x001e, 0x0188, 0xa08e, 0x0001, -+ 0x1150, 0x00d6, 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff, 0x00de, -+ 0xa086, 0x0006, 0x0110, 0x080c, 0x2c60, 0x080c, 0x8bbc, 0x080c, -+ 0x9dae, 0x0005, 0x00c6, 0x00d6, 0x6104, 0xa186, 0x0016, 0x0904, -+ 0x9ae1, 0xa186, 0x0002, 0x15d8, 0x2001, 0xb435, 0x2004, 0xd08c, -+ 0x1198, 0x080c, 0x5a90, 0x1180, 0x2001, 0xb69f, 0x2003, 0x0001, -+ 0x2001, 0xb400, 0x2003, 0x0001, 0xa085, 0x0001, 0x080c, 0x5ad4, -+ 0x080c, 0x59c8, 0x0804, 0x9b33, 0x6018, 0x2068, 0x2001, 0xb435, -+ 0x2004, 0xd0ac, 0x1904, 0x9b33, 0x68a0, 0xd0bc, 0x1904, 0x9b33, -+ 0x6840, 0xa084, 0x00ff, 0xa005, 0x0190, 0x8001, 0x6842, 0x6013, -+ 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x603f, 0x0000, 0x080c, -+ 0x856a, 0x0128, 0x2d00, 0x601a, 0x601f, 0x0001, 0x0450, 0x00de, -+ 0x00ce, 0x6004, 0xa08e, 0x0002, 0x11a8, 0x6018, 0xa080, 0x0028, -+ 0x2004, 0xa086, 0x007e, 0x1170, 0x2009, 0xb435, 0x2104, 0xc085, -+ 0x200a, 0x00e6, 0x2071, 0xb400, 0x080c, 0x4b80, 0x00ee, 0x080c, -+ 0x8bbc, 0x0020, 0x080c, 0x8bbc, 0x080c, 0x2c60, 0x00e6, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x2c86, 0x012e, 0x00ee, 0x080c, 0x9dae, -+ 0x0005, 0x2001, 0x0002, 0x080c, 0x4ebe, 0x6003, 0x0001, 0x6007, -+ 0x0002, 0x080c, 0x6c98, 0x080c, 0x7134, 0x00de, 0x00ce, 0x0c80, -+ 0x00c6, 0x00d6, 0x6104, 0xa186, 0x0016, 0x0d58, 0x6018, 0x2068, -+ 0x6840, 0xa084, 0x00ff, 0xa005, 0x0904, 0x9ab7, 0x8001, 0x6842, -+ 0x6003, 0x0001, 0x080c, 0x6c98, 0x080c, 0x7134, 0x00de, 0x00ce, -+ 0x08b8, 0x080c, 0x8bbc, 0x0804, 0x9a6f, 0x080c, 0x8bea, 0x0804, -+ 0x9a6f, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xa09b, 0x00de, 0x0118, -+ 0x080c, 0x85c0, 0x00b8, 0x6004, 0x8007, 0x6130, 0xa18c, 0x00ff, -+ 0xa105, 0x6032, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, -+ 0x6038, 0x600a, 0x2001, 0xb6b7, 0x2004, 0x6016, 0x080c, 0x6c52, -+ 0x080c, 0x7134, 0x0005, 0x00de, 0x00ce, 0x080c, 0x8bbc, 0x080c, -+ 0x2c60, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2c86, 0x6013, -+ 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x603f, 0x0000, 0x012e, -+ 0x00ee, 0x0005, 0x6000, 0xa08a, 0x0010, 0x1a0c, 0x1511, 0x000b, -+ 0x0005, 0x9b61, 0x9b61, 0x9b61, 0x9b61, 0x9b61, 0x9b61, 0x9b61, -+ 0x9b61, 0x9b61, 0x9997, 0x9b61, 0x999f, 0x9b63, 0x999f, 0x9b70, -+ 0x9b61, 0x080c, 0x1511, 0x6004, 0xa086, 0x008b, 0x0148, 0x6007, -+ 0x008b, 0x6003, 0x000d, 0x080c, 0x6c52, 0x080c, 0x7134, 0x0005, -+ 0x080c, 0x9da2, 0x080c, 0x9beb, 0x0580, 0x080c, 0x2c60, 0x00d6, -+ 0x080c, 0x9beb, 0x0168, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, -+ 0x0006, 0x6847, 0x0000, 0x6850, 0xc0ed, 0x6852, 0x080c, 0x53c9, -+ 0x2c68, 0x080c, 0x856a, 0x0150, 0x6818, 0x601a, 0x080c, 0x9fb8, -+ 0x00c6, 0x2d60, 0x080c, 0x9dae, 0x00ce, 0x0008, 0x2d60, 0x00de, -+ 0x6013, 0x0000, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, -+ 0x080c, 0x6c98, 0x080c, 0x7134, 0x0078, 0x6030, 0xa08c, 0xff00, -+ 0x810f, 0xa186, 0x0039, 0x0118, 0xa186, 0x0035, 0x1118, 0x080c, -+ 0x2c60, 0x08b0, 0x080c, 0x9dae, 0x0005, 0x6000, 0xa08a, 0x0010, -+ 0x1a0c, 0x1511, 0x000b, 0x0005, 0x9bcc, 0x9bcc, 0x9bcc, 0x9bce, -+ 0x9bce, 0x9bcc, 0x9bcc, 0x9bcc, 0x9bcc, 0x9bcc, 0x9bcc, 0x9bcc, -+ 0x9bcc, 0x9bcc, 0x9bcc, 0x9bcc, 0x080c, 0x1511, 0x080c, 0x8200, -+ 0x190c, 0x1511, 0x6110, 0x2168, 0x684b, 0x0006, 0x080c, 0x53c9, -+ 0x080c, 0x85c0, 0x0005, 0xa284, 0x0007, 0x1158, 0xa282, 0xbc00, -+ 0x0240, 0x2001, 0xb417, 0x2004, 0xa202, 0x1218, 0xa085, 0x0001, -+ 0x0005, 0xa006, 0x0ce8, 0x0026, 0x6210, 0xa294, 0xf000, 0x002e, -+ 0x0005, 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, -+ 0x2061, 0xbc00, 0x2071, 0xb400, 0x7348, 0x7068, 0xa302, 0x12a8, -+ 0x601c, 0xa206, 0x1160, 0x080c, 0x9f43, 0x0148, 0x080c, 0x9de9, -+ 0x1110, 0x080c, 0x8bbc, 0x00c6, 0x080c, 0x85c0, 0x00ce, 0xace0, -+ 0x0018, 0x705c, 0xac02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e, -+ 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0xa188, 0xb535, -+ 0x210c, 0x81ff, 0x0128, 0x2061, 0xb7f4, 0x611a, 0x080c, 0x2c60, -+ 0xa006, 0x0010, 0xa085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005, -+ 0x00c6, 0x0056, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x856a, -+ 0x005e, 0x0180, 0x6612, 0x651a, 0x080c, 0x9fb8, 0x601f, 0x0003, -+ 0x2009, 0x004b, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x005e, -+ 0x00ce, 0x0005, 0xa006, 0x0cd0, 0x00c6, 0x0056, 0x0126, 0x2091, -+ 0x8000, 0x62a0, 0x00c6, 0x080c, 0x9e67, 0x005e, 0x0550, 0x6013, -+ 0x0000, 0x651a, 0x080c, 0x9fb8, 0x601f, 0x0003, 0x0016, 0x00c6, -+ 0x2560, 0x080c, 0x516b, 0x00ce, 0x080c, 0x6dba, 0x0076, 0x2039, -+ 0x0000, 0x080c, 0x6cc7, 0x2c08, 0x080c, 0xae05, 0x007e, 0x001e, -+ 0xd184, 0x0128, 0x080c, 0x85c0, 0xa085, 0x0001, 0x0030, 0x2009, -+ 0x004c, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x005e, 0x00ce, -+ 0x0005, 0xa006, 0x0cd0, 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, -+ 0x856a, 0x2c78, 0x00ce, 0x0180, 0x7e12, 0x2c00, 0x781a, 0x781f, -+ 0x0003, 0x2021, 0x0005, 0x080c, 0x9ce1, 0x2f60, 0x2009, 0x004d, -+ 0x080c, 0x85ef, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, -+ 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x856a, 0x2c78, 0x00ce, -+ 0x0178, 0x7e12, 0x2c00, 0x781a, 0x781f, 0x0003, 0x2021, 0x0005, -+ 0x0481, 0x2f60, 0x2009, 0x004e, 0x080c, 0x85ef, 0xa085, 0x0001, -+ 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x00c6, -+ 0x080c, 0x856a, 0x2c78, 0x00ce, 0x01c0, 0x7e12, 0x2c00, 0x781a, -+ 0x781f, 0x0003, 0x2021, 0x0004, 0x00a1, 0x2001, 0xb6a0, 0x2004, -+ 0xd0fc, 0x0120, 0x2f60, 0x080c, 0x85c0, 0x0028, 0x2f60, 0x2009, -+ 0x0052, 0x080c, 0x85ef, 0xa085, 0x0001, 0x004e, 0x00ce, 0x00fe, -+ 0x0005, 0x0096, 0x0076, 0x0126, 0x2091, 0x8000, 0x080c, 0x510d, -+ 0x0118, 0x2001, 0x9ce6, 0x0028, 0x080c, 0x50dd, 0x0158, 0x2001, -+ 0x9cec, 0x0006, 0xa00e, 0x2400, 0x080c, 0x549c, 0x080c, 0x53c9, -+ 0x000e, 0x0807, 0x2418, 0x080c, 0x6ff4, 0x62a0, 0x0086, 0x2041, -+ 0x0001, 0x2039, 0x0001, 0x2608, 0x080c, 0x6dd3, 0x008e, 0x080c, -+ 0x6cc7, 0x2f08, 0x2648, 0x080c, 0xae05, 0x613c, 0x81ff, 0x090c, -+ 0x6e88, 0x080c, 0x7134, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, -+ 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x856a, 0x001e, 0x0188, -+ 0x660a, 0x611a, 0x080c, 0x9fb8, 0x601f, 0x0001, 0x2d00, 0x6012, -+ 0x2009, 0x001f, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x00ce, -+ 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, -+ 0x080c, 0x856a, 0x001e, 0x0188, 0x660a, 0x611a, 0x080c, 0x9fb8, -+ 0x601f, 0x0008, 0x2d00, 0x6012, 0x2009, 0x0021, 0x080c, 0x85ef, -+ 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, -+ 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x856a, 0x001e, 0x0188, -+ 0x660a, 0x611a, 0x080c, 0x9fb8, 0x601f, 0x0001, 0x2d00, 0x6012, -+ 0x2009, 0x003d, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x00ce, -+ 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, -+ 0x080c, 0x9e67, 0x001e, 0x0180, 0x611a, 0x080c, 0x9fb8, 0x601f, -+ 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x080c, 0x85ef, 0xa085, -+ 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, 0x0cd8, 0x00c6, 0x0126, -+ 0x2091, 0x8000, 0x00c6, 0x080c, 0x856a, 0x001e, 0x0188, 0x660a, -+ 0x611a, 0x080c, 0x9fb8, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, -+ 0x0044, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, -+ 0xa006, 0x0cd8, 0x0026, 0x00d6, 0x6218, 0x2268, 0x6a3c, 0x82ff, -+ 0x0110, 0x8211, 0x6a3e, 0x00de, 0x002e, 0x0005, 0x0006, 0x6000, -+ 0xa086, 0x0000, 0x0190, 0x6013, 0x0000, 0x601f, 0x0007, 0x2001, -+ 0xb6b6, 0x2004, 0x0006, 0xa082, 0x0051, 0x000e, 0x0208, 0x8004, -+ 0x6016, 0x080c, 0xb2bd, 0x603f, 0x0000, 0x000e, 0x0005, 0x0066, -+ 0x00c6, 0x00d6, 0x2031, 0xb453, 0x2634, 0xd6e4, 0x0128, 0x6618, -+ 0x2660, 0x6e48, 0x080c, 0x5096, 0x00de, 0x00ce, 0x006e, 0x0005, -+ 0x0006, 0x0016, 0x6004, 0xa08e, 0x0002, 0x0140, 0xa08e, 0x0003, -+ 0x0128, 0xa08e, 0x0004, 0x0110, 0xa085, 0x0001, 0x001e, 0x000e, -+ 0x0005, 0x0006, 0x00d6, 0x6010, 0xa06d, 0x0148, 0x6834, 0xa086, -+ 0x0139, 0x0138, 0x6838, 0xd0fc, 0x0110, 0xa006, 0x0010, 0xa085, -+ 0x0001, 0x00de, 0x000e, 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, -+ 0x00c6, 0x080c, 0x856a, 0x001e, 0x0190, 0x611a, 0x080c, 0x9fb8, -+ 0x601f, 0x0001, 0x2d00, 0x6012, 0x080c, 0x2c60, 0x2009, 0x0028, -+ 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x00ce, 0x0005, 0xa006, -+ 0x0cd8, 0xa186, 0x0015, 0x1178, 0x2011, 0xb421, 0x2204, 0xa086, -+ 0x0074, 0x1148, 0x080c, 0x8f38, 0x6003, 0x0001, 0x6007, 0x0029, -+ 0x080c, 0x6c98, 0x0020, 0x080c, 0x8bbc, 0x080c, 0x85c0, 0x0005, -+ 0xa186, 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, 0x4ebe, 0x00e8, -+ 0xa186, 0x0015, 0x11e8, 0x2011, 0xb421, 0x2204, 0xa086, 0x0014, -+ 0x11b8, 0x00d6, 0x6018, 0x2068, 0x080c, 0x500c, 0x00de, 0x080c, -+ 0x8ff1, 0x1170, 0x00d6, 0x6018, 0x2068, 0x6890, 0x00de, 0xa005, -+ 0x0138, 0x2001, 0x0006, 0x080c, 0x4ebe, 0x080c, 0x8743, 0x0020, -+ 0x080c, 0x8bbc, 0x080c, 0x85c0, 0x0005, 0x6848, 0xa086, 0x0005, -+ 0x1108, 0x0009, 0x0005, 0x6850, 0xc0ad, 0x6852, 0x0005, 0x00e6, -+ 0x0126, 0x2071, 0xb400, 0x2091, 0x8000, 0x7548, 0xa582, 0x0001, -+ 0x0608, 0x704c, 0x2060, 0x6000, 0xa086, 0x0000, 0x0148, 0xace0, -+ 0x0018, 0x705c, 0xac02, 0x1208, 0x0cb0, 0x2061, 0xbc00, 0x0c98, -+ 0x6003, 0x0008, 0x8529, 0x754a, 0xaca8, 0x0018, 0x705c, 0xa502, -+ 0x1230, 0x754e, 0xa085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x704f, -+ 0xbc00, 0x0cc0, 0xa006, 0x0cc0, 0x00e6, 0x2071, 0xba8c, 0x7014, -+ 0xd0e4, 0x0150, 0x6013, 0x0000, 0x6003, 0x0001, 0x6007, 0x0050, -+ 0x080c, 0x6c52, 0x080c, 0x7134, 0x00ee, 0x0005, 0x00c6, 0x00f6, -+ 0x2c78, 0x080c, 0x52c6, 0x00fe, 0x0120, 0x601c, 0xa084, 0x000f, -+ 0x0013, 0x00ce, 0x0005, 0x9997, 0x9ebe, 0x9ec1, 0x9ec4, 0xb0aa, -+ 0xb0c5, 0xb0c8, 0x9997, 0x9997, 0x080c, 0x1511, 0xe000, 0xe000, -+ 0x0005, 0xe000, 0xe000, 0x0005, 0x0009, 0x0005, 0x00f6, 0x2c78, -+ 0x080c, 0x52c6, 0x0538, 0x080c, 0x856a, 0x1128, 0x2001, 0xb6b8, -+ 0x2004, 0x783e, 0x00f8, 0x7818, 0x601a, 0x080c, 0x9fb8, 0x781c, -+ 0xa086, 0x0003, 0x0128, 0x7808, 0x6036, 0x2f00, 0x603a, 0x0020, -+ 0x7808, 0x603a, 0x2f00, 0x6036, 0x602a, 0x601f, 0x0001, 0x6007, -+ 0x0035, 0x6003, 0x0001, 0x7950, 0x6152, 0x080c, 0x6c52, 0x080c, -+ 0x7134, 0x2f60, 0x00fe, 0x0005, 0x0016, 0x00f6, 0x682c, 0x6032, -+ 0xa08e, 0x0001, 0x0138, 0xa086, 0x0005, 0x0140, 0xa006, 0x602a, -+ 0x602e, 0x00a0, 0x6820, 0xc0f4, 0xc0d5, 0x6822, 0x6810, 0x2078, -+ 0x787c, 0x6938, 0xa102, 0x7880, 0x6934, 0xa103, 0x1e78, 0x6834, -+ 0x602a, 0x6838, 0xa084, 0xfffc, 0x683a, 0x602e, 0x2d00, 0x6036, -+ 0x6808, 0x603a, 0x6918, 0x611a, 0x6950, 0x6152, 0x601f, 0x0001, -+ 0x6007, 0x0039, 0x6003, 0x0001, 0x080c, 0x6c52, 0x6803, 0x0002, -+ 0x00fe, 0x001e, 0x0005, 0x00f6, 0x2c78, 0x080c, 0x52c6, 0x1118, -+ 0xa085, 0x0001, 0x0070, 0x6020, 0xd0f4, 0x1150, 0xc0f5, 0x6022, -+ 0x6010, 0x2078, 0x7828, 0x603a, 0x782c, 0x6036, 0x080c, 0x1944, -+ 0xa006, 0x00fe, 0x0005, 0x0006, 0x0016, 0x6004, 0xa08e, 0x0034, -+ 0x01b8, 0xa08e, 0x0035, 0x01a0, 0xa08e, 0x0036, 0x0188, 0xa08e, -+ 0x0037, 0x0170, 0xa08e, 0x0038, 0x0158, 0xa08e, 0x0039, 0x0140, -+ 0xa08e, 0x003a, 0x0128, 0xa08e, 0x003b, 0x0110, 0xa085, 0x0001, -+ 0x001e, 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, -+ 0x2001, 0xb6b2, 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, -+ 0x6b05, 0x2001, 0xb6b6, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, -+ 0x2001, 0xb6b4, 0x200c, 0x8000, 0x2014, 0x2071, 0xb68e, 0x711a, -+ 0x721e, 0x2001, 0x0064, 0x080c, 0x6b05, 0x2001, 0xb6b7, 0x82ff, -+ 0x1110, 0x2011, 0x0014, 0x2202, 0x2009, 0xb6b8, 0xa280, 0x000a, -+ 0x200a, 0x080c, 0x52eb, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, -+ 0x0005, 0x0006, 0x00e6, 0x2001, 0xb6b6, 0x2003, 0x0028, 0x2001, -+ 0xb6b7, 0x2003, 0x0014, 0x2071, 0xb68e, 0x701b, 0x0000, 0x701f, -+ 0x07d0, 0x2001, 0xb6b8, 0x2003, 0x001e, 0x00ee, 0x000e, 0x0005, -+ 0x00d6, 0x6054, 0xa06d, 0x0110, 0x080c, 0x160b, 0x00de, 0x0005, -+ 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x856a, -+ 0x001e, 0x0178, 0x611a, 0x0ca1, 0x601f, 0x0001, 0x2d00, 0x6012, -+ 0x2009, 0x0033, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x00ce, -+ 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xb400, -+ 0xa186, 0x0015, 0x1500, 0x7084, 0xa086, 0x0018, 0x11e0, 0x6010, -+ 0x2068, 0x6a3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x72f2, 0x01d8, -+ 0x7070, 0x6a50, 0xa206, 0x1160, 0x7074, 0x6a54, 0xa206, 0x1140, -+ 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2ca5, -+ 0x080c, 0x8743, 0x0020, 0x080c, 0x8bbc, 0x080c, 0x85c0, 0x00fe, -+ 0x00ee, 0x00de, 0x0005, 0x7054, 0x6a54, 0xa206, 0x0d48, 0x0c80, -+ 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x856a, 0x001e, -+ 0x0180, 0x611a, 0x080c, 0x9fb8, 0x601f, 0x0001, 0x2d00, 0x6012, -+ 0x2009, 0x0043, 0x080c, 0x85ef, 0xa085, 0x0001, 0x012e, 0x00ce, -+ 0x0005, 0xa006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0xb400, -+ 0xa186, 0x0015, 0x11c0, 0x7084, 0xa086, 0x0004, 0x11a0, 0x6010, -+ 0xa0e8, 0x000f, 0x2c78, 0x080c, 0x72f2, 0x01a8, 0x7070, 0x6a08, -+ 0xa206, 0x1130, 0x7074, 0x6a0c, 0xa206, 0x1110, 0x080c, 0x2c60, -+ 0x080c, 0x8743, 0x0020, 0x080c, 0x8bbc, 0x080c, 0x85c0, 0x00fe, -+ 0x00ee, 0x00de, 0x0005, 0x7054, 0x6a0c, 0xa206, 0x0d78, 0x0c80, -+ 0x0016, 0x0026, 0x684c, 0xd0ac, 0x0178, 0x6914, 0x6a10, 0x2100, -+ 0xa205, 0x0150, 0x6860, 0xa106, 0x1118, 0x685c, 0xa206, 0x0120, -+ 0x6962, 0x6a5e, 0xa085, 0x0001, 0x002e, 0x001e, 0x0005, 0x00d6, -+ 0x0036, 0x6310, 0x2368, 0x684a, 0x6952, 0xa29e, 0x4000, 0x11a0, -+ 0x00c6, 0x6318, 0x2360, 0x2009, 0x0000, 0x6838, 0xd0f4, 0x1140, -+ 0x080c, 0x520b, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, -+ 0x6a66, 0x696a, 0x00ce, 0x0080, 0x6a66, 0x3918, 0xa398, 0x0006, -+ 0x231c, 0x686b, 0x0004, 0x6b72, 0x00c6, 0x6318, 0x2360, 0x6004, -+ 0xa084, 0x00ff, 0x686e, 0x00ce, 0x080c, 0x53c9, 0x6013, 0x0000, -+ 0x003e, 0x00de, 0x0005, 0x00c6, 0x0026, 0x0016, 0xa186, 0x0035, -+ 0x0110, 0x6a34, 0x0008, 0x6a28, 0x080c, 0x9bdb, 0x01f0, 0x2260, -+ 0x611c, 0xa186, 0x0003, 0x0118, 0xa186, 0x0006, 0x1190, 0x6834, -+ 0xa206, 0x0140, 0x6838, 0xa206, 0x1160, 0x6108, 0x6834, 0xa106, -+ 0x1140, 0x0020, 0x6008, 0x6938, 0xa106, 0x1118, 0x6018, 0x6918, -+ 0xa106, 0x001e, 0x002e, 0x00ce, 0x0005, 0xa085, 0x0001, 0x0cc8, -+ 0x6944, 0xd1cc, 0x0198, 0xa18c, 0x00ff, 0xa18e, 0x0002, 0x1170, -+ 0xad88, 0x001e, 0x210c, 0xa18c, 0x0f00, 0x810f, 0xa18e, 0x0001, -+ 0x1128, 0x6810, 0x6914, 0xa115, 0x190c, 0x941c, 0x0005, 0x0066, -+ 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1511, 0x0013, 0x006e, 0x0005, -+ 0xa0f8, 0xa5cf, 0xa6f5, 0xa0f8, 0xa0f8, 0xa0f8, 0xa0f8, 0xa0f8, -+ 0xa130, 0xa779, 0xa0f8, 0xa0f8, 0xa0f8, 0xa0f8, 0xa0f8, 0xa0f8, -+ 0x080c, 0x1511, 0x0066, 0x6000, 0xa0b2, 0x0010, 0x1a0c, 0x1511, -+ 0x0013, 0x006e, 0x0005, 0xa113, 0xabfa, 0xa113, 0xa113, 0xa113, -+ 0xa113, 0xa113, 0xa113, 0xabbe, 0xac42, 0xa113, 0xb1ef, 0xb21f, -+ 0xb1ef, 0xb21f, 0xa113, 0x080c, 0x1511, 0x0066, 0x6000, 0xa0b2, -+ 0x0010, 0x1a0c, 0x1511, 0x0013, 0x006e, 0x0005, 0xa12e, 0xa8c5, -+ 0xa992, 0xa9bf, 0xaa43, 0xa12e, 0xab30, 0xaadb, 0xa785, 0xab94, -+ 0xaba9, 0xa12e, 0xa12e, 0xa12e, 0xa12e, 0xa12e, 0x080c, 0x1511, -+ 0xa1b2, 0x0080, 0x1a0c, 0x1511, 0x2100, 0xa1b2, 0x0040, 0x1a04, -+ 0xa543, 0x0002, 0xa17a, 0xa345, 0xa17a, 0xa17a, 0xa17a, 0xa34c, -+ 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, -+ 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, -+ 0xa17a, 0xa17c, 0xa1da, 0xa1e9, 0xa237, 0xa255, 0xa2d3, 0xa332, -+ 0xa17a, 0xa17a, 0xa34f, 0xa17a, 0xa17a, 0xa362, 0xa36d, 0xa17a, -+ 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa3f8, 0xa17a, 0xa17a, 0xa407, -+ 0xa17a, 0xa17a, 0xa3c3, 0xa17a, 0xa17a, 0xa17a, 0xa41f, 0xa17a, -+ 0xa17a, 0xa17a, 0xa499, 0xa17a, 0xa17a, 0xa17a, 0xa17a, 0xa17a, -+ 0xa17a, 0xa50a, 0x080c, 0x1511, 0x080c, 0x52ca, 0x1150, 0x2001, -+ 0xb435, 0x2004, 0xd0cc, 0x1128, 0xa084, 0x0009, 0xa086, 0x0008, -+ 0x1140, 0x6007, 0x0009, 0x602b, 0x0009, 0x6013, 0x0000, 0x0804, -+ 0xa340, 0x080c, 0x52ba, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, -+ 0x6218, 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029, 0x080c, 0x6dba, -+ 0x0076, 0x2039, 0x0000, 0x080c, 0x6cc7, 0x2c08, 0x080c, 0xae05, -+ 0x007e, 0x001e, 0x2e60, 0x080c, 0x516b, 0x001e, 0x002e, 0x003e, -+ 0x00ce, 0x00ee, 0x6618, 0x00c6, 0x2660, 0x080c, 0x4f79, 0x00ce, -+ 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0278, -+ 0x080c, 0xad49, 0x1904, 0xa231, 0x080c, 0xace9, 0x1120, 0x6007, -+ 0x0008, 0x0804, 0xa340, 0x6007, 0x0009, 0x0804, 0xa340, 0x080c, -+ 0xaefe, 0x0128, 0x080c, 0xad49, 0x0d78, 0x0804, 0xa231, 0x6013, -+ 0x1900, 0x0c88, 0x080c, 0x2d83, 0x1904, 0xa540, 0x6106, 0x080c, -+ 0xaca3, 0x6007, 0x0006, 0x0804, 0xa340, 0x6007, 0x0007, 0x0804, -+ 0xa340, 0x080c, 0xb253, 0x1904, 0xa540, 0x080c, 0x2d83, 0x1904, -+ 0xa540, 0x00d6, 0x6618, 0x2668, 0x6e04, 0xa684, 0x00ff, 0xa082, -+ 0x0006, 0x1220, 0x2001, 0x0001, 0x080c, 0x4eac, 0xa6b4, 0xff00, -+ 0x8637, 0xa686, 0x0006, 0x0188, 0xa686, 0x0004, 0x0170, 0x6e04, -+ 0xa6b4, 0x00ff, 0xa686, 0x0006, 0x0140, 0xa686, 0x0004, 0x0128, -+ 0xa686, 0x0005, 0x0110, 0x00de, 0x00e0, 0x080c, 0xada7, 0x11a0, -+ 0xa686, 0x0006, 0x1150, 0x0026, 0x6218, 0xa290, 0x0028, 0x2214, -+ 0x2009, 0x0000, 0x080c, 0x2ca5, 0x002e, 0x080c, 0x500c, 0x6007, -+ 0x000a, 0x00de, 0x0804, 0xa340, 0x6007, 0x000b, 0x00de, 0x0804, -+ 0xa340, 0x080c, 0x2c60, 0x6007, 0x0001, 0x0804, 0xa340, 0x080c, -+ 0xb253, 0x1904, 0xa540, 0x080c, 0x2d83, 0x1904, 0xa540, 0x6618, -+ 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa686, 0x0707, 0x0d50, 0x0026, -+ 0x6218, 0xa290, 0x0028, 0x2214, 0x2009, 0x0000, 0x080c, 0x2ca5, -+ 0x002e, 0x6007, 0x000c, 0x0804, 0xa340, 0x080c, 0x52ca, 0x1140, -+ 0x2001, 0xb435, 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, 0x1110, -+ 0x0804, 0xa189, 0x080c, 0x52ba, 0x6618, 0xa6b0, 0x0001, 0x2634, -+ 0xa684, 0x00ff, 0xa082, 0x0006, 0x06e8, 0x1138, 0x0026, 0x2001, -+ 0x0006, 0x080c, 0x4eeb, 0x002e, 0x0050, 0xa6b4, 0xff00, 0x8637, -+ 0xa686, 0x0004, 0x0120, 0xa686, 0x0006, 0x1904, 0xa231, 0x080c, -+ 0xadb4, 0x1120, 0x6007, 0x000e, 0x0804, 0xa340, 0x0046, 0x6418, -+ 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x0046, 0x080c, -+ 0x2c60, 0x004e, 0x0016, 0xa006, 0x2009, 0xb453, 0x210c, 0xd1a4, -+ 0x0158, 0x2009, 0x0029, 0x080c, 0xb06b, 0x6018, 0x00d6, 0x2068, -+ 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e, 0x6007, 0x0001, -+ 0x0804, 0xa340, 0x2001, 0x0001, 0x080c, 0x4eac, 0x0156, 0x0016, -+ 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xb405, 0x2011, 0xba90, -+ 0x080c, 0x907a, 0x003e, 0x002e, 0x001e, 0x015e, 0xa005, 0x0168, -+ 0xa6b4, 0xff00, 0x8637, 0xa682, 0x0004, 0x0a04, 0xa231, 0xa682, -+ 0x0007, 0x0a04, 0xa27f, 0x0804, 0xa231, 0x6013, 0x1900, 0x6007, -+ 0x0009, 0x0804, 0xa340, 0x080c, 0x52ca, 0x1140, 0x2001, 0xb435, -+ 0x2004, 0xa084, 0x0009, 0xa086, 0x0008, 0x1110, 0x0804, 0xa189, -+ 0x080c, 0x52ba, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, -+ 0xa082, 0x0006, 0x06b8, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0004, -+ 0x0120, 0xa686, 0x0006, 0x1904, 0xa231, 0x080c, 0xaddc, 0x1138, -+ 0x080c, 0xace9, 0x1120, 0x6007, 0x0010, 0x0804, 0xa340, 0x0046, -+ 0x6418, 0xa4a0, 0x0028, 0x2424, 0xa4a4, 0x00ff, 0x8427, 0x0046, -+ 0x080c, 0x2c60, 0x004e, 0x0016, 0xa006, 0x2009, 0xb453, 0x210c, -+ 0xd1a4, 0x0158, 0x2009, 0x0029, 0x080c, 0xb06b, 0x6018, 0x00d6, -+ 0x2068, 0x6800, 0xc0e5, 0x6802, 0x00de, 0x001e, 0x004e, 0x6007, -+ 0x0001, 0x00f0, 0x080c, 0xaefe, 0x0140, 0xa6b4, 0xff00, 0x8637, -+ 0xa686, 0x0006, 0x0950, 0x0804, 0xa231, 0x6013, 0x1900, 0x6007, -+ 0x0009, 0x0070, 0x080c, 0x2d83, 0x1904, 0xa540, 0x080c, 0xb253, -+ 0x1904, 0xa540, 0x080c, 0xa568, 0x1904, 0xa231, 0x6007, 0x0012, -+ 0x6003, 0x0001, 0x080c, 0x6c98, 0x0005, 0x6007, 0x0001, 0x6003, -+ 0x0001, 0x080c, 0x6c98, 0x0cc0, 0x6007, 0x0005, 0x0cc0, 0x080c, -+ 0xb253, 0x1904, 0xa540, 0x080c, 0x2d83, 0x1904, 0xa540, 0x080c, -+ 0xa568, 0x1904, 0xa231, 0x6007, 0x0020, 0x6003, 0x0001, 0x080c, -+ 0x6c98, 0x0005, 0x080c, 0x2d83, 0x1904, 0xa540, 0x6007, 0x0023, -+ 0x6003, 0x0001, 0x080c, 0x6c98, 0x0005, 0x080c, 0xb253, 0x1904, -+ 0xa540, 0x080c, 0x2d83, 0x1904, 0xa540, 0x080c, 0xa568, 0x1904, -+ 0xa231, 0x0016, 0x0026, 0x2011, 0xba91, 0x2214, 0xa286, 0xffff, -+ 0x0190, 0x2c08, 0x080c, 0x9bdb, 0x01e0, 0x2260, 0x2011, 0xba90, -+ 0x2214, 0x6008, 0xa206, 0x11a8, 0x6018, 0xa190, 0x0006, 0x2214, -+ 0xa206, 0x01e8, 0x0070, 0x2011, 0xba90, 0x2214, 0x2c08, 0xa006, -+ 0x080c, 0xb03d, 0x11a0, 0x2011, 0xba91, 0x2214, 0xa286, 0xffff, -+ 0x01c0, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x2011, 0xba89, -+ 0x2214, 0xa296, 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, 0x601c, -+ 0xa086, 0x0007, 0x1d70, 0x6004, 0xa086, 0x0024, 0x1110, 0x080c, -+ 0x85c0, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, 0x6c98, -+ 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, 0x4eac, 0x0156, -+ 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0xb405, 0x2011, -+ 0xba96, 0x080c, 0x907a, 0x003e, 0x002e, 0x001e, 0x015e, 0x0120, -+ 0x6007, 0x0031, 0x0804, 0xa340, 0x080c, 0x8d99, 0x080c, 0x5a90, -+ 0x11b0, 0x0006, 0x0026, 0x0036, 0x080c, 0x5aac, 0x1158, 0x2001, -+ 0xb69f, 0x2003, 0x0001, 0x2001, 0xb400, 0x2003, 0x0001, 0x080c, -+ 0x59c8, 0x0010, 0x080c, 0x5a67, 0x003e, 0x002e, 0x000e, 0x0005, -+ 0x080c, 0x2d83, 0x1904, 0xa540, 0x6106, 0x080c, 0xa584, 0x6007, -+ 0x002b, 0x0804, 0xa340, 0x6007, 0x002c, 0x0804, 0xa340, 0x080c, -+ 0xb253, 0x1904, 0xa540, 0x080c, 0x2d83, 0x1904, 0xa540, 0x080c, -+ 0xa568, 0x1904, 0xa231, 0x6106, 0x080c, 0xa588, 0x1120, 0x6007, -+ 0x002e, 0x0804, 0xa340, 0x6007, 0x002f, 0x0804, 0xa340, 0x080c, -+ 0x2d83, 0x1904, 0xa540, 0x00e6, 0x00d6, 0x00c6, 0x6018, 0xa080, -+ 0x0001, 0x200c, 0xa184, 0x00ff, 0xa086, 0x0006, 0x0158, 0xa184, -+ 0xff00, 0x8007, 0xa086, 0x0006, 0x0128, 0x00ce, 0x00de, 0x00ee, -+ 0x0804, 0xa345, 0x2001, 0xb472, 0x2004, 0xd0e4, 0x0904, 0xa496, -+ 0x2071, 0xba8c, 0x7010, 0x6036, 0x7014, 0x603a, 0x7108, 0x720c, -+ 0x2001, 0xb453, 0x2004, 0xd0a4, 0x0140, 0x6018, 0x2068, 0x6810, -+ 0xa106, 0x1118, 0x6814, 0xa206, 0x01f8, 0x2001, 0xb453, 0x2004, -+ 0xd0ac, 0x1590, 0x2069, 0xb400, 0x6874, 0xa206, 0x1568, 0x6870, -+ 0xa106, 0x1550, 0x7210, 0x080c, 0x9bdb, 0x0558, 0x080c, 0xb0d7, -+ 0x0540, 0x622a, 0x6007, 0x0036, 0x6003, 0x0001, 0x080c, 0x6c52, -+ 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7214, 0xa286, 0xffff, 0x0150, -+ 0x080c, 0x9bdb, 0x01b0, 0xa280, 0x0002, 0x2004, 0x7110, 0xa106, -+ 0x1180, 0x0c08, 0x7210, 0x2c08, 0xa085, 0x0001, 0x080c, 0xb03d, -+ 0x2c10, 0x2160, 0x0130, 0x08b8, 0x6007, 0x0037, 0x6013, 0x1500, -+ 0x08d8, 0x6007, 0x0037, 0x6013, 0x1700, 0x08b0, 0x6007, 0x0012, -+ 0x0898, 0x080c, 0x2d83, 0x1904, 0xa540, 0x6018, 0xa080, 0x0001, -+ 0x2004, 0xa084, 0xff00, 0x8007, 0xa086, 0x0006, 0x1904, 0xa345, -+ 0x00e6, 0x00d6, 0x00c6, 0x2001, 0xb472, 0x2004, 0xd0e4, 0x0904, -+ 0xa502, 0x2069, 0xb400, 0x2071, 0xba8c, 0x7008, 0x6036, 0x720c, -+ 0x623a, 0xa286, 0xffff, 0x1150, 0x7208, 0x00c6, 0x2c08, 0xa085, -+ 0x0001, 0x080c, 0xb03d, 0x2c10, 0x00ce, 0x0588, 0x080c, 0x9bdb, -+ 0x0570, 0x00c6, 0x0026, 0x2260, 0x080c, 0x98b6, 0x002e, 0x00ce, -+ 0x7118, 0xa18c, 0xff00, 0x810f, 0xa186, 0x0001, 0x0158, 0xa186, -+ 0x0005, 0x0118, 0xa186, 0x0007, 0x1178, 0xa280, 0x0004, 0x2004, -+ 0xa005, 0x0150, 0x0056, 0x7510, 0x7614, 0x080c, 0xb0ee, 0x005e, -+ 0x00ce, 0x00de, 0x00ee, 0x0005, 0x6007, 0x003b, 0x602b, 0x0009, -+ 0x6013, 0x2a00, 0x6003, 0x0001, 0x080c, 0x6c52, 0x0c88, 0x6007, -+ 0x003b, 0x602b, 0x0009, 0x6013, 0x1700, 0x6003, 0x0001, 0x080c, -+ 0x6c52, 0x0c30, 0x6007, 0x003b, 0x602b, 0x000b, 0x6013, 0x0000, -+ 0x0804, 0xa46c, 0x00e6, 0x0026, 0x080c, 0x52ca, 0x0558, 0x080c, -+ 0x52ba, 0x080c, 0xb2ce, 0x1520, 0x2071, 0xb400, 0x70d4, 0xc085, -+ 0x70d6, 0x00f6, 0x2079, 0x0100, 0x72a0, 0xa284, 0x00ff, 0x7072, -+ 0x78e6, 0xa284, 0xff00, 0x7274, 0xa205, 0x7076, 0x78ea, 0x00fe, -+ 0x70df, 0x0000, 0x2001, 0xb453, 0x2004, 0xd0a4, 0x0120, 0x2011, -+ 0xb6f9, 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2a7e, 0x0010, -+ 0x080c, 0xb2fa, 0x002e, 0x00ee, 0x080c, 0x85c0, 0x0804, 0xa344, -+ 0x080c, 0x85c0, 0x0005, 0x2600, 0x0002, 0xa54e, 0xa54e, 0xa54e, -+ 0xa54e, 0xa54e, 0xa550, 0xa54e, 0xa54e, 0xa54e, 0x080c, 0x1511, -+ 0x080c, 0xb253, 0x1d68, 0x080c, 0x2d83, 0x1d50, 0x0089, 0x1138, -+ 0x6007, 0x0045, 0x6003, 0x0001, 0x080c, 0x6c98, 0x0005, 0x080c, -+ 0x2c60, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x6c98, 0x0005, -+ 0x00d6, 0x0066, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, -+ 0xa686, 0x0006, 0x0170, 0xa686, 0x0004, 0x0158, 0x6e04, 0xa6b4, -+ 0x00ff, 0xa686, 0x0006, 0x0128, 0xa686, 0x0004, 0x0110, 0xa085, -+ 0x0001, 0x006e, 0x00de, 0x0005, 0x00d6, 0x0449, 0x00de, 0x0005, -+ 0x00d6, 0x0491, 0x11f0, 0x680c, 0xa08c, 0xff00, 0x6820, 0xa084, -+ 0x00ff, 0xa115, 0x6212, 0x6824, 0x602a, 0xd1e4, 0x0118, 0x2009, -+ 0x0001, 0x0060, 0xd1ec, 0x0168, 0x6920, 0xa18c, 0x00ff, 0x6824, -+ 0x080c, 0x27e3, 0x1130, 0x2110, 0x2009, 0x0000, 0x080c, 0x2ca5, -+ 0x0018, 0xa085, 0x0001, 0x0008, 0xa006, 0x00de, 0x0005, 0x2069, -+ 0xba8d, 0x6800, 0xa082, 0x0010, 0x1228, 0x6013, 0x0000, 0xa085, -+ 0x0001, 0x0008, 0xa006, 0x0005, 0x6013, 0x0000, 0x2069, 0xba8c, -+ 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, 0x1140, 0x6800, 0xa084, -+ 0x00ff, 0xa08e, 0x0014, 0x0110, 0xa08e, 0x0010, 0x0005, 0x6004, -+ 0xa0b2, 0x0080, 0x1a0c, 0x1511, 0xa1b6, 0x0013, 0x1130, 0x2008, -+ 0xa1b2, 0x0040, 0x1a04, 0xa6cf, 0x0092, 0xa1b6, 0x0027, 0x0120, -+ 0xa1b6, 0x0014, 0x190c, 0x1511, 0x2001, 0x0007, 0x080c, 0x4eeb, -+ 0x080c, 0x7055, 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, 0xa62f, -+ 0xa631, 0xa62f, 0xa62f, 0xa62f, 0xa631, 0xa643, 0xa6c8, 0xa693, -+ 0xa6c8, 0xa6a4, 0xa6c8, 0xa643, 0xa6c8, 0xa6c0, 0xa6c8, 0xa6c0, -+ 0xa6c8, 0xa6c8, 0xa62f, 0xa62f, 0xa62f, 0xa62f, 0xa62f, 0xa62f, -+ 0xa62f, 0xa62f, 0xa62f, 0xa62f, 0xa62f, 0xa631, 0xa62f, 0xa6c8, -+ 0xa62f, 0xa62f, 0xa6c8, 0xa62f, 0xa6c5, 0xa6c8, 0xa62f, 0xa62f, -+ 0xa62f, 0xa62f, 0xa6c8, 0xa6c8, 0xa62f, 0xa6c8, 0xa6c8, 0xa62f, -+ 0xa63d, 0xa62f, 0xa62f, 0xa62f, 0xa62f, 0xa6c4, 0xa6c8, 0xa62f, -+ 0xa62f, 0xa6c8, 0xa6c8, 0xa62f, 0xa62f, 0xa62f, 0xa62f, 0x080c, -+ 0x1511, 0x080c, 0x7055, 0x2001, 0xb6b6, 0x2004, 0x6016, 0x6003, -+ 0x0002, 0x080c, 0x7134, 0x0804, 0xa6ce, 0x2001, 0x0000, 0x080c, -+ 0x4eac, 0x0804, 0xa6c8, 0x00f6, 0x2079, 0xb452, 0x7804, 0x00fe, -+ 0xd0ac, 0x1904, 0xa6c8, 0x2001, 0x0000, 0x080c, 0x4eac, 0x6018, -+ 0xa080, 0x0004, 0x2004, 0xa086, 0x00ff, 0x1140, 0x00f6, 0x2079, -+ 0xb400, 0x7898, 0x8000, 0x789a, 0x00fe, 0x00e0, 0x00c6, 0x6018, -+ 0x2060, 0x6000, 0xd0f4, 0x1140, 0x6010, 0xa005, 0x0128, 0x00ce, -+ 0x080c, 0x3efc, 0x0804, 0xa6c8, 0x00ce, 0x2001, 0xb400, 0x2004, -+ 0xa086, 0x0002, 0x1138, 0x00f6, 0x2079, 0xb400, 0x7898, 0x8000, -+ 0x789a, 0x00fe, 0x2001, 0x0002, 0x080c, 0x4ebe, 0x080c, 0x7055, -+ 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x6c98, -+ 0x080c, 0x7134, 0x00c6, 0x6118, 0x2160, 0x2009, 0x0001, 0x080c, -+ 0x696d, 0x00ce, 0x04d8, 0x6618, 0x00d6, 0x2668, 0x6e04, 0x00de, -+ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0550, 0xa686, 0x0004, -+ 0x0538, 0x2001, 0x0004, 0x0410, 0x2001, 0xb400, 0x2004, 0xa086, -+ 0x0003, 0x1110, 0x080c, 0x3efc, 0x2001, 0x0006, 0x04a1, 0x6618, -+ 0x00d6, 0x2668, 0x6e04, 0x00de, 0xa6b4, 0xff00, 0x8637, 0xa686, -+ 0x0006, 0x0170, 0x2001, 0x0006, 0x0048, 0x2001, 0x0004, 0x0030, -+ 0x2001, 0x0006, 0x0401, 0x0020, 0x0018, 0x0010, 0x080c, 0x4eeb, -+ 0x080c, 0x7055, 0x080c, 0x85c0, 0x080c, 0x7134, 0x0005, 0x2600, -+ 0x0002, 0xa6da, 0xa6da, 0xa6da, 0xa6da, 0xa6da, 0xa6dc, 0xa6da, -+ 0xa6da, 0xa6da, 0x080c, 0x1511, 0x080c, 0x7055, 0x080c, 0x85c0, -+ 0x080c, 0x7134, 0x0005, 0x0016, 0x00d6, 0x6118, 0x2168, 0x6900, -+ 0xd184, 0x0140, 0x080c, 0x4ebe, 0x2001, 0x0000, 0x080c, 0x4eac, -+ 0x080c, 0x2c86, 0x00de, 0x001e, 0x0005, 0x00d6, 0x6618, 0x2668, -+ 0x6804, 0xa084, 0xff00, 0x8007, 0x00de, 0xa0b2, 0x000c, 0x1a0c, -+ 0x1511, 0xa1b6, 0x0015, 0x1110, 0x003b, 0x0028, 0xa1b6, 0x0016, -+ 0x190c, 0x1511, 0x006b, 0x0005, 0x8c82, 0x8c82, 0x8c82, 0x8c82, -+ 0x8c82, 0x8c82, 0xa765, 0xa724, 0x8c82, 0x8c82, 0x8c82, 0x8c82, -+ 0x8c82, 0x8c82, 0x8c82, 0x8c82, 0x8c82, 0x8c82, 0xa765, 0xa76c, -+ 0x8c82, 0x8c82, 0x8c82, 0x8c82, 0x00f6, 0x2079, 0xb452, 0x7804, -+ 0xd0ac, 0x11e0, 0x6018, 0xa07d, 0x01c8, 0x7800, 0xd0f4, 0x1118, -+ 0x7810, 0xa005, 0x1198, 0x2001, 0x0000, 0x080c, 0x4eac, 0x2001, -+ 0x0002, 0x080c, 0x4ebe, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, -+ 0x0002, 0x080c, 0x6c98, 0x080c, 0x7134, 0x00e8, 0x2011, 0xba83, -+ 0x2204, 0x8211, 0x220c, 0x080c, 0x27e3, 0x11a8, 0x00c6, 0x080c, -+ 0x4f6a, 0x0120, 0x00ce, 0x080c, 0x85c0, 0x0068, 0x6010, 0x0006, -+ 0x6014, 0x0006, 0x080c, 0x4bc5, 0x000e, 0x6016, 0x000e, 0x6012, -+ 0x00ce, 0x080c, 0x85c0, 0x00fe, 0x0005, 0x6604, 0xa6b6, 0x001e, -+ 0x1110, 0x080c, 0x85c0, 0x0005, 0x080c, 0x8f35, 0x1138, 0x6003, -+ 0x0001, 0x6007, 0x0001, 0x080c, 0x6c98, 0x0010, 0x080c, 0x85c0, -+ 0x0005, 0x6004, 0xa08a, 0x0080, 0x1a0c, 0x1511, 0x080c, 0x7055, -+ 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, 0xa182, 0x0040, 0x0002, -+ 0xa79b, 0xa79b, 0xa79b, 0xa79b, 0xa79d, 0xa79b, 0xa79b, 0xa79b, -+ 0xa79b, 0xa79b, 0xa79b, 0xa79b, 0xa79b, 0xa79b, 0xa79b, 0xa79b, -+ 0xa79b, 0xa79b, 0xa79b, 0x080c, 0x1511, 0x00d6, 0x00e6, 0x00f6, -+ 0x0156, 0x0046, 0x0026, 0x6218, 0xa280, 0x002b, 0x2004, 0xa005, -+ 0x0120, 0x2021, 0x0000, 0x080c, 0xb29f, 0x6106, 0x2071, 0xba80, -+ 0x7444, 0xa4a4, 0xff00, 0x0904, 0xa801, 0xa486, 0x2000, 0x1130, -+ 0x2009, 0x0001, 0x2011, 0x0200, 0x080c, 0x6adf, 0x080c, 0x15f4, -+ 0x090c, 0x1511, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803, -+ 0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6008, 0x68b2, -+ 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x694a, 0x0016, 0xa084, -+ 0xff00, 0x6846, 0x684f, 0x0000, 0x6853, 0x0000, 0x6857, 0x0036, -+ 0x080c, 0x53c9, 0x001e, 0xa486, 0x2000, 0x1130, 0x2019, 0x0017, -+ 0x080c, 0xafe8, 0x0804, 0xa85e, 0xa486, 0x0400, 0x1130, 0x2019, -+ 0x0002, 0x080c, 0xaf9a, 0x0804, 0xa85e, 0xa486, 0x0200, 0x1110, -+ 0x080c, 0xaf7f, 0xa486, 0x1000, 0x1110, 0x080c, 0xafcd, 0x0804, -+ 0xa85e, 0x2069, 0xb774, 0x6a00, 0xd284, 0x0904, 0xa8c1, 0xa284, -+ 0x0300, 0x1904, 0xa8ba, 0x6804, 0xa005, 0x0904, 0xa8a2, 0x2d78, -+ 0x6003, 0x0007, 0x080c, 0x15db, 0x0904, 0xa865, 0x7800, 0xd08c, -+ 0x1118, 0x7804, 0x8001, 0x7806, 0x6013, 0x0000, 0x6803, 0x0000, -+ 0x6837, 0x0116, 0x683b, 0x0000, 0x6008, 0x68b2, 0x2c00, 0x684a, -+ 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x6986, 0x6846, 0x7928, -+ 0x698a, 0x792c, 0x698e, 0x7930, 0x6992, 0x7934, 0x6996, 0x6853, -+ 0x003d, 0x7244, 0xa294, 0x0003, 0xa286, 0x0002, 0x1118, 0x684f, -+ 0x0040, 0x0040, 0xa286, 0x0001, 0x1118, 0x684f, 0x0080, 0x0010, -+ 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001, 0xba90, 0xad90, 0x0015, -+ 0x200c, 0x810f, 0x2112, 0x8000, 0x8210, 0x1f04, 0xa850, 0x200c, -+ 0x6982, 0x8000, 0x200c, 0x697e, 0x080c, 0x53c9, 0x002e, 0x004e, -+ 0x015e, 0x00fe, 0x00ee, 0x00de, 0x0005, 0x2001, 0xb40e, 0x2004, -+ 0xd084, 0x0120, 0x080c, 0x15f4, 0x1904, 0xa816, 0x6013, 0x0100, -+ 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x6c52, 0x080c, 0x7134, -+ 0x0c28, 0x2069, 0xba92, 0x2d04, 0xa084, 0xff00, 0xa086, 0x1200, -+ 0x11a8, 0x2069, 0xba80, 0x686c, 0xa084, 0x00ff, 0x0016, 0x6110, -+ 0xa18c, 0x0700, 0xa10d, 0x6112, 0x001e, 0x6003, 0x0001, 0x6007, -+ 0x0043, 0x080c, 0x6c52, 0x080c, 0x7134, 0x0840, 0x6013, 0x0200, -+ 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x6c52, 0x080c, 0x7134, -+ 0x0804, 0xa85e, 0x2001, 0xb40d, 0x2004, 0xd0ec, 0x0120, 0x2011, -+ 0x8049, 0x080c, 0x3e8a, 0x6013, 0x0300, 0x0010, 0x6013, 0x0100, -+ 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x6c52, 0x080c, 0x7134, -+ 0x0804, 0xa85e, 0x6013, 0x0500, 0x0c98, 0x6013, 0x0600, 0x0804, -+ 0xa879, 0x6013, 0x0200, 0x0804, 0xa879, 0xa186, 0x0013, 0x1170, -+ 0x6004, 0xa08a, 0x0040, 0x0a0c, 0x1511, 0xa08a, 0x0053, 0x1a0c, -+ 0x1511, 0xa082, 0x0040, 0x2008, 0x0804, 0xa94f, 0xa186, 0x0051, -+ 0x0138, 0xa186, 0x0047, 0x11d8, 0x6004, 0xa086, 0x0041, 0x0518, -+ 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, 0x0126, 0x2091, 0x2800, -+ 0x0006, 0x0016, 0x0026, 0x080c, 0x6b39, 0x002e, 0x001e, 0x000e, -+ 0x012e, 0x6000, 0xa086, 0x0002, 0x1170, 0x0804, 0xa992, 0xa186, -+ 0x0027, 0x0120, 0xa186, 0x0014, 0x190c, 0x1511, 0x6004, 0xa082, -+ 0x0040, 0x2008, 0x001a, 0x080c, 0x8606, 0x0005, 0xa919, 0xa91b, -+ 0xa91b, 0xa93f, 0xa919, 0xa919, 0xa919, 0xa919, 0xa919, 0xa919, -+ 0xa919, 0xa919, 0xa919, 0xa919, 0xa919, 0xa919, 0xa919, 0xa919, -+ 0xa919, 0x080c, 0x1511, 0x080c, 0x7055, 0x080c, 0x7134, 0x0036, -+ 0x00d6, 0x6010, 0xa06d, 0x01c0, 0xad84, 0xf000, 0x01a8, 0x6003, -+ 0x0002, 0x6018, 0x2004, 0xd0bc, 0x1178, 0x2019, 0x0004, 0x080c, -+ 0xb01c, 0x6013, 0x0000, 0x6014, 0xa005, 0x1120, 0x2001, 0xb6b7, -+ 0x2004, 0x6016, 0x6003, 0x0007, 0x00de, 0x003e, 0x0005, 0x00d6, -+ 0x080c, 0x7055, 0x080c, 0x7134, 0x080c, 0x9beb, 0x0120, 0x6010, -+ 0x2068, 0x080c, 0x160b, 0x080c, 0x9dae, 0x00de, 0x0005, 0x0002, -+ 0xa963, 0xa980, 0xa96c, 0xa98c, 0xa963, 0xa963, 0xa963, 0xa963, -+ 0xa963, 0xa963, 0xa963, 0xa963, 0xa963, 0xa963, 0xa963, 0xa963, -+ 0xa963, 0xa963, 0xa963, 0x080c, 0x1511, 0x6010, 0xa088, 0x0013, -+ 0x2104, 0xa085, 0x0400, 0x200a, 0x080c, 0x7055, 0x6010, 0xa080, -+ 0x0013, 0x2004, 0xd0b4, 0x0138, 0x6003, 0x0007, 0x2009, 0x0043, -+ 0x080c, 0x85ef, 0x0010, 0x6003, 0x0002, 0x080c, 0x7134, 0x0005, -+ 0x080c, 0x7055, 0x080c, 0xb25a, 0x1120, 0x080c, 0x6ab4, 0x080c, -+ 0x85c0, 0x080c, 0x7134, 0x0005, 0x080c, 0x7055, 0x2009, 0x0041, -+ 0x0804, 0xaadb, 0xa182, 0x0040, 0x0002, 0xa9a8, 0xa9aa, 0xa9a8, -+ 0xa9a8, 0xa9a8, 0xa9a8, 0xa9a8, 0xa9ab, 0xa9a8, 0xa9a8, 0xa9a8, -+ 0xa9a8, 0xa9a8, 0xa9a8, 0xa9a8, 0xa9a8, 0xa9a8, 0xa9b6, 0xa9a8, -+ 0x080c, 0x1511, 0x0005, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, -+ 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1856, 0x0005, 0x00d6, 0x080c, -+ 0x6ab4, 0x00de, 0x080c, 0xb2bd, 0x080c, 0x85c0, 0x0005, 0xa182, -+ 0x0040, 0x0002, 0xa9d5, 0xa9d5, 0xa9d5, 0xa9d5, 0xa9d5, 0xa9d5, -+ 0xa9d5, 0xa9d7, 0xa9d5, 0xa9da, 0xaa13, 0xa9d5, 0xa9d5, 0xa9d5, -+ 0xa9d5, 0xaa13, 0xa9d5, 0xa9d5, 0xa9d5, 0x080c, 0x1511, 0x080c, -+ 0x8606, 0x0005, 0x2001, 0xb472, 0x2004, 0xd0e4, 0x0158, 0x2001, -+ 0x0100, 0x2004, 0xa082, 0x0005, 0x0228, 0x2001, 0x011f, 0x2004, -+ 0x6036, 0x0010, 0x6037, 0x0000, 0x080c, 0x70e7, 0x080c, 0x71f1, -+ 0x6010, 0x00d6, 0x2068, 0x684c, 0xd0fc, 0x0150, 0xa08c, 0x0003, -+ 0xa18e, 0x0002, 0x0168, 0x2009, 0x0041, 0x00de, 0x0804, 0xaadb, -+ 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x6ab4, 0x00de, 0x0005, -+ 0x080c, 0xb25a, 0x0110, 0x00de, 0x0005, 0x080c, 0x6ab4, 0x080c, -+ 0x85c0, 0x00de, 0x0ca0, 0x0036, 0x080c, 0x70e7, 0x080c, 0x71f1, -+ 0x6010, 0x00d6, 0x2068, 0x6018, 0x2004, 0xd0bc, 0x0188, 0x684c, -+ 0xa084, 0x0003, 0xa086, 0x0002, 0x0140, 0x687c, 0x632c, 0xa31a, -+ 0x632e, 0x6880, 0x6328, 0xa31b, 0x632a, 0x6003, 0x0002, 0x0080, -+ 0x2019, 0x0004, 0x080c, 0xb01c, 0x6014, 0xa005, 0x1128, 0x2001, -+ 0xb6b7, 0x2004, 0x8003, 0x6016, 0x6013, 0x0000, 0x6003, 0x0007, -+ 0x00de, 0x003e, 0x0005, 0xa186, 0x0013, 0x1150, 0x6004, 0xa086, -+ 0x0042, 0x190c, 0x1511, 0x080c, 0x7055, 0x080c, 0x7134, 0x0005, -+ 0xa186, 0x0027, 0x0118, 0xa186, 0x0014, 0x1180, 0x6004, 0xa086, -+ 0x0042, 0x190c, 0x1511, 0x2001, 0x0007, 0x080c, 0x4eeb, 0x080c, -+ 0x7055, 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, 0xa182, 0x0040, -+ 0x0002, 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, -+ 0xaa7e, 0xaa8a, 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, -+ 0xaa7c, 0xaa7c, 0xaa7c, 0xaa7c, 0x080c, 0x1511, 0x0036, 0x0046, -+ 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x080c, 0x1856, 0x004e, -+ 0x003e, 0x0005, 0x6010, 0x00d6, 0x2068, 0x6810, 0x6a14, 0x0006, -+ 0x0046, 0x0056, 0x6c7c, 0xa422, 0x6d80, 0x2200, 0xa52b, 0x602c, -+ 0xa420, 0x642e, 0x6028, 0xa529, 0x652a, 0x005e, 0x004e, 0x000e, -+ 0xa20d, 0x1178, 0x684c, 0xd0fc, 0x0120, 0x2009, 0x0041, 0x00de, -+ 0x0490, 0x6003, 0x0007, 0x6017, 0x0000, 0x080c, 0x6ab4, 0x00de, -+ 0x0005, 0x0006, 0x00f6, 0x2c78, 0x080c, 0x52c6, 0x00fe, 0x000e, -+ 0x0120, 0x6003, 0x0002, 0x00de, 0x0005, 0x2009, 0xb40d, 0x210c, -+ 0xd19c, 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, 0x0021, -+ 0x080c, 0x6ab6, 0x00de, 0x0005, 0xd2fc, 0x0140, 0x8002, 0x8000, -+ 0x8212, 0xa291, 0x0000, 0x2009, 0x0009, 0x0010, 0x2009, 0x0015, -+ 0x6a6a, 0x6866, 0x0005, 0xa182, 0x0040, 0x0208, 0x0062, 0xa186, -+ 0x0013, 0x0120, 0xa186, 0x0014, 0x190c, 0x1511, 0x6020, 0xd0dc, -+ 0x090c, 0x1511, 0x0005, 0xaafe, 0xab05, 0xab11, 0xab1d, 0xaafe, -+ 0xaafe, 0xaafe, 0xab2c, 0xaafe, 0xab00, 0xab00, 0xaafe, 0xaafe, -+ 0xaafe, 0xaafe, 0xab00, 0xaafe, 0xab00, 0xaafe, 0x080c, 0x1511, -+ 0x6020, 0xd0dc, 0x090c, 0x1511, 0x0005, 0x6003, 0x0001, 0x6106, -+ 0x080c, 0x6c52, 0x0126, 0x2091, 0x8000, 0x080c, 0x7134, 0x012e, -+ 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c52, 0x0126, 0x2091, -+ 0x8000, 0x080c, 0x7134, 0x012e, 0x0005, 0x6003, 0x0003, 0x6106, -+ 0x2c10, 0x080c, 0x1f7a, 0x0126, 0x2091, 0x8000, 0x080c, 0x6cb5, -+ 0x080c, 0x71f1, 0x012e, 0x0005, 0xa016, 0x080c, 0x1856, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x0036, 0x00d6, 0xa182, 0x0040, 0x0023, -+ 0x00de, 0x003e, 0x012e, 0x0005, 0xab4c, 0xab4e, 0xab60, 0xab7b, -+ 0xab4c, 0xab4c, 0xab4c, 0xab90, 0xab4c, 0xab4c, 0xab4c, 0xab4c, -+ 0xab4c, 0xab4c, 0xab4c, 0xab4c, 0x080c, 0x1511, 0x6010, 0x2068, -+ 0x684c, 0xd0fc, 0x01f8, 0xa09c, 0x0003, 0xa39e, 0x0003, 0x01d0, -+ 0x6003, 0x0001, 0x6106, 0x080c, 0x6c52, 0x080c, 0x7134, 0x0498, -+ 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0168, 0xa09c, 0x0003, 0xa39e, -+ 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x6c52, 0x080c, -+ 0x7134, 0x0408, 0x6013, 0x0000, 0x6017, 0x0000, 0x2019, 0x0004, -+ 0x080c, 0xb01c, 0x00c0, 0x6010, 0x2068, 0x684c, 0xd0fc, 0x0d90, -+ 0xa09c, 0x0003, 0xa39e, 0x0003, 0x0d68, 0x6003, 0x0003, 0x6106, -+ 0x2c10, 0x080c, 0x1f7a, 0x080c, 0x6cb5, 0x080c, 0x71f1, 0x0018, -+ 0xa016, 0x080c, 0x1856, 0x0005, 0x080c, 0x7055, 0x6110, 0x81ff, -+ 0x0158, 0x00d6, 0x2168, 0x080c, 0xb303, 0x0036, 0x2019, 0x0029, -+ 0x080c, 0xb01c, 0x003e, 0x00de, 0x080c, 0x9dae, 0x080c, 0x7134, -+ 0x0005, 0x080c, 0x70e7, 0x6110, 0x81ff, 0x0158, 0x00d6, 0x2168, -+ 0x080c, 0xb303, 0x0036, 0x2019, 0x0029, 0x080c, 0xb01c, 0x003e, -+ 0x00de, 0x080c, 0x9dae, 0x080c, 0x71f1, 0x0005, 0xa182, 0x0085, -+ 0x0002, 0xabca, 0xabc8, 0xabc8, 0xabd6, 0xabc8, 0xabc8, 0xabc8, -+ 0x080c, 0x1511, 0x6003, 0x000b, 0x6106, 0x080c, 0x6c52, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x7134, 0x012e, 0x0005, 0x0026, 0x00e6, -+ 0x080c, 0xb253, 0x0118, 0x080c, 0x85c0, 0x00c8, 0x2071, 0xba80, -+ 0x7224, 0x6212, 0x7220, 0x080c, 0xaeca, 0x0118, 0x6007, 0x0086, -+ 0x0040, 0x6007, 0x0087, 0x7224, 0xa296, 0xffff, 0x1110, 0x6007, -+ 0x0086, 0x6003, 0x0001, 0x080c, 0x6c52, 0x080c, 0x7134, 0x00ee, -+ 0x002e, 0x0005, 0xa186, 0x0013, 0x1160, 0x6004, 0xa08a, 0x0085, -+ 0x0a0c, 0x1511, 0xa08a, 0x008c, 0x1a0c, 0x1511, 0xa082, 0x0085, -+ 0x00a2, 0xa186, 0x0027, 0x0130, 0xa186, 0x0014, 0x0118, 0x080c, -+ 0x8606, 0x0050, 0x2001, 0x0007, 0x080c, 0x4eeb, 0x080c, 0x7055, -+ 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, 0xac24, 0xac26, 0xac26, -+ 0xac24, 0xac24, 0xac24, 0xac24, 0x080c, 0x1511, 0x080c, 0x7055, -+ 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, 0xa182, 0x0085, 0x0a0c, -+ 0x1511, 0xa182, 0x008c, 0x1a0c, 0x1511, 0xa182, 0x0085, 0x0002, -+ 0xac3f, 0xac3f, 0xac3f, 0xac41, 0xac3f, 0xac3f, 0xac3f, 0x080c, -+ 0x1511, 0x0005, 0xa186, 0x0013, 0x0148, 0xa186, 0x0014, 0x0130, -+ 0xa186, 0x0027, 0x0118, 0x080c, 0x8606, 0x0030, 0x080c, 0x7055, -+ 0x080c, 0x9dae, 0x080c, 0x7134, 0x0005, 0x0036, 0x080c, 0xb2bd, -+ 0x603f, 0x0000, 0x2019, 0x000b, 0x0031, 0x601f, 0x0006, 0x6003, -+ 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091, 0x8000, 0x0086, -+ 0x2c40, 0x0096, 0x2049, 0x0000, 0x080c, 0x80da, 0x009e, 0x008e, -+ 0x1578, 0x0076, 0x2c38, 0x080c, 0x8179, 0x007e, 0x1548, 0x6000, -+ 0xa086, 0x0000, 0x0528, 0x601c, 0xa086, 0x0007, 0x0508, 0x00d6, -+ 0x6000, 0xa086, 0x0004, 0x1150, 0x080c, 0xb2bd, 0x601f, 0x0007, -+ 0x2001, 0xb6b6, 0x2004, 0x6016, 0x080c, 0x1944, 0x6010, 0x2068, -+ 0x080c, 0x9beb, 0x0110, 0x080c, 0xb01c, 0x00de, 0x6013, 0x0000, -+ 0x080c, 0xb2bd, 0x601f, 0x0007, 0x2001, 0xb6b6, 0x2004, 0x6016, -+ 0x003e, 0x012e, 0x0005, 0x00f6, 0x00c6, 0x0036, 0x0156, 0x2079, -+ 0xba80, 0x7938, 0x783c, 0x080c, 0x27e3, 0x15b0, 0x0016, 0x00c6, -+ 0x080c, 0x4f6a, 0x1578, 0x001e, 0x002e, 0x0026, 0x0016, 0x2019, -+ 0x0029, 0x080c, 0x823c, 0x080c, 0x6dba, 0x0076, 0x2039, 0x0000, -+ 0x080c, 0x6cc7, 0x007e, 0x001e, 0x0076, 0x2039, 0x0000, 0x080c, -+ 0xae05, 0x007e, 0x080c, 0x516b, 0x0026, 0x6204, 0xa294, 0xff00, -+ 0x8217, 0xa286, 0x0006, 0x0118, 0xa286, 0x0004, 0x1118, 0x62a0, -+ 0x080c, 0x2d19, 0x002e, 0x001e, 0x080c, 0x4bc5, 0x6612, 0x6516, -+ 0xa006, 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, 0x00ce, 0x00fe, -+ 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x2009, 0xb421, 0x2104, -+ 0xa086, 0x0074, 0x1904, 0xad3e, 0x2069, 0xba8e, 0x690c, 0xa182, -+ 0x0100, 0x06c0, 0x6908, 0xa184, 0x8000, 0x05e8, 0x2001, 0xb69e, -+ 0x2004, 0xa005, 0x1160, 0x6018, 0x2070, 0x7010, 0xa084, 0x00ff, -+ 0x0118, 0x7000, 0xd0f4, 0x0118, 0xa184, 0x0800, 0x0560, 0x6910, -+ 0xa18a, 0x0001, 0x0610, 0x6914, 0x2069, 0xbaae, 0x6904, 0x81ff, -+ 0x1198, 0x690c, 0xa182, 0x0100, 0x02a8, 0x6908, 0x81ff, 0x1178, -+ 0x6910, 0xa18a, 0x0001, 0x0288, 0x6918, 0xa18a, 0x0001, 0x0298, -+ 0x00d0, 0x6013, 0x0100, 0x00a0, 0x6013, 0x0300, 0x0088, 0x6013, -+ 0x0500, 0x0070, 0x6013, 0x0700, 0x0058, 0x6013, 0x0900, 0x0040, -+ 0x6013, 0x0b00, 0x0028, 0x6013, 0x0f00, 0x0010, 0x6013, 0x2d00, -+ 0xa085, 0x0001, 0x0008, 0xa006, 0x001e, 0x00ee, 0x00de, 0x00ce, -+ 0x0005, 0x00c6, 0x00d6, 0x0026, 0x0036, 0x0156, 0x6218, 0x2268, -+ 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, 0x0190, 0xa286, 0x0004, -+ 0x0178, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006, 0x0148, 0xa286, -+ 0x0004, 0x0130, 0x00c6, 0x2d60, 0x080c, 0x4f79, 0x00ce, 0x04c0, -+ 0x2011, 0xba96, 0xad98, 0x000a, 0x20a9, 0x0004, 0x080c, 0x907a, -+ 0x1580, 0x2011, 0xba9a, 0xad98, 0x0006, 0x20a9, 0x0004, 0x080c, -+ 0x907a, 0x1538, 0x0046, 0x0016, 0x6aa0, 0xa294, 0x00ff, 0x8227, -+ 0xa006, 0x2009, 0xb453, 0x210c, 0xd1a4, 0x0138, 0x2009, 0x0029, -+ 0x080c, 0xb06b, 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, 0x080c, -+ 0x6dba, 0x0076, 0x2039, 0x0000, 0x080c, 0x6cc7, 0x2c08, 0x080c, -+ 0xae05, 0x007e, 0x2001, 0x0007, 0x080c, 0x4eeb, 0x001e, 0x004e, -+ 0xa006, 0x015e, 0x003e, 0x002e, 0x00de, 0x00ce, 0x0005, 0x00d6, -+ 0x2069, 0xba8e, 0x6800, 0xa086, 0x0800, 0x0118, 0x6013, 0x0000, -+ 0x0008, 0xa006, 0x00de, 0x0005, 0x00c6, 0x00f6, 0x0016, 0x0026, -+ 0x0036, 0x0156, 0x2079, 0xba8c, 0x7930, 0x7834, 0x080c, 0x27e3, -+ 0x11a0, 0x080c, 0x4f6a, 0x1188, 0x2011, 0xba90, 0xac98, 0x000a, -+ 0x20a9, 0x0004, 0x080c, 0x907a, 0x1140, 0x2011, 0xba94, 0xac98, -+ 0x0006, 0x20a9, 0x0004, 0x080c, 0x907a, 0x015e, 0x003e, 0x002e, -+ 0x001e, 0x00fe, 0x00ce, 0x0005, 0x00c6, 0x0006, 0x0016, 0x0026, -+ 0x0036, 0x0156, 0x2011, 0xba83, 0x2204, 0x8211, 0x220c, 0x080c, -+ 0x27e3, 0x11a0, 0x080c, 0x4f6a, 0x1188, 0x2011, 0xba96, 0xac98, -+ 0x000a, 0x20a9, 0x0004, 0x080c, 0x907a, 0x1140, 0x2011, 0xba9a, -+ 0xac98, 0x0006, 0x20a9, 0x0004, 0x080c, 0x907a, 0x015e, 0x003e, -+ 0x002e, 0x001e, 0x000e, 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0086, -+ 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0126, 0x2091, 0x8000, -+ 0x2740, 0x2029, 0xb6e9, 0x252c, 0x2021, 0xb6ef, 0x2424, 0x2061, -+ 0xbc00, 0x2071, 0xb400, 0x7648, 0x7068, 0x81ff, 0x0150, 0x0006, -+ 0xa186, 0xb7f4, 0x000e, 0x0128, 0x8001, 0xa602, 0x1a04, 0xae86, -+ 0x0018, 0xa606, 0x0904, 0xae86, 0x2100, 0xac06, 0x0904, 0xae7d, -+ 0x080c, 0xb093, 0x0904, 0xae7d, 0x671c, 0xa786, 0x0001, 0x0904, -+ 0xaea1, 0xa786, 0x0004, 0x0904, 0xaea1, 0xa786, 0x0007, 0x05e8, -+ 0x2500, 0xac06, 0x05d0, 0x2400, 0xac06, 0x05b8, 0x080c, 0xb0a3, -+ 0x15a0, 0x88ff, 0x0118, 0x6050, 0xa906, 0x1578, 0x00d6, 0x6000, -+ 0xa086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1944, 0x001e, 0xa786, -+ 0x0008, 0x1148, 0x080c, 0x9de9, 0x1130, 0x080c, 0x8bbc, 0x00de, -+ 0x080c, 0x9dae, 0x00d0, 0x6010, 0x2068, 0x080c, 0x9beb, 0x0190, -+ 0xa786, 0x0003, 0x1528, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, -+ 0x080c, 0xb303, 0x0016, 0x080c, 0x9e5d, 0x080c, 0x53c9, 0x001e, -+ 0x080c, 0x9da2, 0x00de, 0x080c, 0x9dae, 0xace0, 0x0018, 0x2001, -+ 0xb417, 0x2004, 0xac02, 0x1210, 0x0804, 0xae19, 0x012e, 0x002e, -+ 0x004e, 0x005e, 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x0005, -+ 0xa786, 0x0006, 0x1150, 0xa386, 0x0005, 0x0128, 0x080c, 0xb303, -+ 0x080c, 0xb01c, 0x08f8, 0x00de, 0x0c00, 0xa786, 0x000a, 0x0968, -+ 0x0850, 0x080c, 0xb0a3, 0x19c8, 0x81ff, 0x09b8, 0xa180, 0x0001, -+ 0x2004, 0xa086, 0x0018, 0x0130, 0xa180, 0x0001, 0x2004, 0xa086, -+ 0x002d, 0x1958, 0x6000, 0xa086, 0x0002, 0x1938, 0x080c, 0x9dd8, -+ 0x0130, 0x080c, 0x9de9, 0x1908, 0x080c, 0x8bbc, 0x0038, 0x080c, -+ 0x2c86, 0x080c, 0x9de9, 0x1110, 0x080c, 0x8bbc, 0x080c, 0x9dae, -+ 0x0804, 0xae7d, 0x00c6, 0x00e6, 0x0016, 0x2c08, 0x2170, 0xa006, -+ 0x080c, 0xb03d, 0x001e, 0x0120, 0x601c, 0xa084, 0x000f, 0x001b, -+ 0x00ee, 0x00ce, 0x0005, 0xaee3, 0xaee3, 0xaee3, 0xaee3, 0xaee3, -+ 0xaee3, 0xaee5, 0xaee3, 0xa006, 0x0005, 0x0046, 0x0016, 0x7018, -+ 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, -+ 0x0020, 0x080c, 0xb06b, 0x001e, 0x004e, 0x0036, 0x2019, 0x0002, -+ 0x080c, 0xac63, 0x003e, 0xa085, 0x0001, 0x0005, 0x2001, 0x0001, -+ 0x080c, 0x4eac, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, -+ 0x2019, 0xb405, 0x2011, 0xba96, 0x080c, 0x907a, 0x003e, 0x002e, -+ 0x001e, 0x015e, 0xa005, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, -+ 0x0076, 0x0066, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, -+ 0xbc00, 0x2079, 0x0001, 0x8fff, 0x0904, 0xaf72, 0x2071, 0xb400, -+ 0x7648, 0x7068, 0x8001, 0xa602, 0x1a04, 0xaf72, 0x88ff, 0x0128, -+ 0x2800, 0xac06, 0x15b0, 0x2079, 0x0000, 0x080c, 0xb093, 0x0588, -+ 0x2400, 0xac06, 0x0570, 0x671c, 0xa786, 0x0006, 0x1550, 0xa786, -+ 0x0007, 0x0538, 0x88ff, 0x1140, 0x6018, 0xa206, 0x1510, 0x85ff, -+ 0x0118, 0x6050, 0xa106, 0x11e8, 0x00d6, 0x6000, 0xa086, 0x0004, -+ 0x1150, 0x080c, 0xb2bd, 0x601f, 0x0007, 0x2001, 0xb6b6, 0x2004, -+ 0x6016, 0x080c, 0x1944, 0x6010, 0x2068, 0x080c, 0x9beb, 0x0120, -+ 0x0046, 0x080c, 0xb01c, 0x004e, 0x00de, 0x080c, 0x9dae, 0x88ff, -+ 0x1198, 0xace0, 0x0018, 0x2001, 0xb417, 0x2004, 0xac02, 0x1210, -+ 0x0804, 0xaf23, 0xa006, 0x012e, 0x002e, 0x006e, 0x007e, 0x008e, -+ 0x00ce, 0x00ee, 0x00fe, 0x0005, 0xa8c5, 0x0001, 0x0ca0, 0x0076, -+ 0x0056, 0x0086, 0x2041, 0x0000, 0x2029, 0x0001, 0x2c20, 0x2019, -+ 0x0002, 0x6218, 0x0096, 0x2049, 0x0000, 0x080c, 0x80da, 0x009e, -+ 0x008e, 0x2039, 0x0000, 0x080c, 0x8179, 0x080c, 0xaf14, 0x005e, -+ 0x007e, 0x0005, 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, -+ 0x2c20, 0x2128, 0x20a9, 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, -+ 0x080c, 0x4f6a, 0x11b0, 0x2c10, 0x0056, 0x0086, 0x2041, 0x0000, -+ 0x2508, 0x2029, 0x0001, 0x0096, 0x2049, 0x0000, 0x080c, 0x80da, -+ 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x8179, 0x080c, 0xaf14, -+ 0x005e, 0x003e, 0x001e, 0x8108, 0x1f04, 0xafa6, 0x015e, 0x00ce, -+ 0x007e, 0x005e, 0x004e, 0x002e, 0x0005, 0x0076, 0x0056, 0x6218, -+ 0x0086, 0x2041, 0x0000, 0x2029, 0x0001, 0x2019, 0x0048, 0x0096, -+ 0x2049, 0x0000, 0x080c, 0x80da, 0x009e, 0x008e, 0x2039, 0x0000, -+ 0x080c, 0x8179, 0x2c20, 0x080c, 0xaf14, 0x005e, 0x007e, 0x0005, -+ 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, 0x20a9, -+ 0x007f, 0x2009, 0x0000, 0x0016, 0x0036, 0x080c, 0x4f6a, 0x11c0, -+ 0x2c10, 0x0086, 0x2041, 0x0000, 0x2828, 0x0046, 0x2021, 0x0001, -+ 0x080c, 0xb29f, 0x004e, 0x0096, 0x2049, 0x0000, 0x080c, 0x80da, -+ 0x009e, 0x008e, 0x2039, 0x0000, 0x080c, 0x8179, 0x080c, 0xaf14, -+ 0x003e, 0x001e, 0x8108, 0x1f04, 0xaff3, 0x015e, 0x00ce, 0x007e, -+ 0x005e, 0x004e, 0x002e, 0x0005, 0x0016, 0x00f6, 0x3800, 0xd08c, -+ 0x0130, 0xad82, 0x1000, 0x02b0, 0xad82, 0xb400, 0x0230, 0xad82, -+ 0xec00, 0x0280, 0xad82, 0xffff, 0x1268, 0x6800, 0xa07d, 0x0138, -+ 0x6803, 0x0000, 0x6b52, 0x080c, 0x53c9, 0x2f68, 0x0cb0, 0x6b52, -+ 0x080c, 0x53c9, 0x00fe, 0x001e, 0x0005, 0x00e6, 0x0046, 0x0036, -+ 0x2061, 0xbc00, 0xa005, 0x1138, 0x2071, 0xb400, 0x7448, 0x7068, -+ 0x8001, 0xa402, 0x12d8, 0x2100, 0xac06, 0x0168, 0x6000, 0xa086, -+ 0x0000, 0x0148, 0x6008, 0xa206, 0x1130, 0x6018, 0xa1a0, 0x0006, -+ 0x2424, 0xa406, 0x0140, 0xace0, 0x0018, 0x2001, 0xb417, 0x2004, -+ 0xac02, 0x1220, 0x0c40, 0xa085, 0x0001, 0x0008, 0xa006, 0x003e, -+ 0x004e, 0x00ee, 0x0005, 0x00d6, 0x0006, 0x080c, 0x15f4, 0x000e, -+ 0x090c, 0x1511, 0x6837, 0x010d, 0x685e, 0x0026, 0x2010, 0x080c, -+ 0x9bdb, 0x2001, 0x0000, 0x0120, 0x2200, 0xa080, 0x0014, 0x2004, -+ 0x002e, 0x684a, 0x6956, 0x6c46, 0x684f, 0x0000, 0x2001, 0xb6be, -+ 0x2004, 0x6852, 0xa006, 0x68b2, 0x6802, 0x683a, 0x685a, 0x080c, -+ 0x53c9, 0x00de, 0x0005, 0x6700, 0xa786, 0x0000, 0x0158, 0xa786, -+ 0x0001, 0x0140, 0xa786, 0x000a, 0x0128, 0xa786, 0x0009, 0x0110, -+ 0xa085, 0x0001, 0x0005, 0x00e6, 0x6018, 0x2070, 0x70a0, 0xa206, -+ 0x00ee, 0x0005, 0x0016, 0x6004, 0xa08e, 0x001e, 0x11a0, 0x8007, -+ 0x6130, 0xa18c, 0x00ff, 0xa105, 0x6032, 0x6007, 0x0085, 0x6003, -+ 0x000b, 0x601f, 0x0005, 0x2001, 0xb6b7, 0x2004, 0x6016, 0x080c, -+ 0x6c52, 0x080c, 0x7134, 0x001e, 0x0005, 0xe000, 0xe000, 0x0005, -+ 0x6020, 0xd0e4, 0x0158, 0xd0cc, 0x0118, 0x080c, 0x9ec6, 0x0030, -+ 0x080c, 0xb2bd, 0x080c, 0x6ab4, 0x080c, 0x85c0, 0x0005, 0xa280, -+ 0x0007, 0x2004, 0xa084, 0x000f, 0x0002, 0xb0e6, 0xb0e6, 0xb0e6, -+ 0xb0eb, 0xb0e6, 0xb0e8, 0xb0e8, 0xb0e6, 0xb0e8, 0xa006, 0x0005, -+ 0x00c6, 0x2260, 0x00ce, 0xa085, 0x0001, 0x0005, 0xa280, 0x0007, -+ 0x2004, 0xa084, 0x000f, 0x0002, 0xb0fd, 0xb0fd, 0xb0fd, 0xb0fd, -+ 0xb0fd, 0xb0fd, 0xb108, 0xb0fd, 0xb0fd, 0x6007, 0x003b, 0x602b, -+ 0x0009, 0x6013, 0x2a00, 0x6003, 0x0001, 0x080c, 0x6c52, 0x0005, -+ 0x00c6, 0x2260, 0x080c, 0xb2bd, 0x603f, 0x0000, 0x6020, 0xc0f4, -+ 0xc0cc, 0x6022, 0x6037, 0x0000, 0x00ce, 0x00d6, 0x2268, 0xa186, -+ 0x0007, 0x1904, 0xb163, 0x6810, 0xa005, 0x0138, 0xa080, 0x0013, -+ 0x2004, 0xd0fc, 0x1110, 0x00de, 0x08c0, 0x6007, 0x003a, 0x6003, -+ 0x0001, 0x080c, 0x6c52, 0x080c, 0x7134, 0x00c6, 0x2d60, 0x6100, -+ 0xa186, 0x0002, 0x1904, 0xb1ec, 0x6010, 0xa005, 0x1138, 0x6000, -+ 0xa086, 0x0007, 0x190c, 0x1511, 0x0804, 0xb1ec, 0xa08c, 0xf000, -+ 0x1130, 0x0028, 0x2068, 0x6800, 0xa005, 0x1de0, 0x2d00, 0xa080, -+ 0x0013, 0x2004, 0xa084, 0x0003, 0xa086, 0x0002, 0x1180, 0x6010, -+ 0x2068, 0x684c, 0xc0dc, 0xc0f4, 0x684e, 0x6850, 0xc0f4, 0xc0fc, -+ 0x6852, 0x2009, 0x0043, 0x080c, 0xaadb, 0x0804, 0xb1ec, 0x2009, -+ 0x0041, 0x0804, 0xb1e6, 0xa186, 0x0005, 0x15f0, 0x6810, 0xa080, -+ 0x0013, 0x2004, 0xd0bc, 0x1118, 0x00de, 0x0804, 0xb0fd, 0xd0b4, -+ 0x0128, 0xd0fc, 0x090c, 0x1511, 0x0804, 0xb11b, 0x6007, 0x003a, -+ 0x6003, 0x0001, 0x080c, 0x6c52, 0x080c, 0x7134, 0x00c6, 0x2d60, -+ 0x6100, 0xa186, 0x0002, 0x0120, 0xa186, 0x0004, 0x1904, 0xb1ec, -+ 0x2071, 0xb723, 0x7000, 0xa086, 0x0003, 0x1128, 0x7004, 0xac06, -+ 0x1110, 0x7003, 0x0000, 0x6810, 0xa080, 0x0013, 0x200c, 0xc1f4, -+ 0xc1dc, 0x2102, 0x8000, 0x200c, 0xc1f4, 0xc1fc, 0xc1bc, 0x2102, -+ 0x2009, 0x0042, 0x0804, 0xb1e6, 0x0036, 0x00d6, 0x00d6, 0x080c, -+ 0x15f4, 0x003e, 0x090c, 0x1511, 0x6837, 0x010d, 0x6803, 0x0000, -+ 0x683b, 0x0000, 0x685b, 0x0000, 0x6b5e, 0x6857, 0x0045, 0x2c00, -+ 0x6862, 0x6034, 0x6872, 0x2360, 0x6020, 0xc0dd, 0x6022, 0x6018, -+ 0xa080, 0x0028, 0x2004, 0xa084, 0x00ff, 0x8007, 0x6350, 0x6b4a, -+ 0x6846, 0x684f, 0x0000, 0x6853, 0x0000, 0x6d6a, 0x6e66, 0x686f, -+ 0x0001, 0x080c, 0x53c9, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, -+ 0xac63, 0x2d00, 0x600a, 0x601f, 0x0006, 0x6003, 0x0007, 0x6017, -+ 0x0000, 0x603f, 0x0000, 0x00de, 0x003e, 0x0038, 0x603f, 0x0000, -+ 0x6003, 0x0007, 0x080c, 0xaadb, 0x00ce, 0x00de, 0x0005, 0xa186, -+ 0x0013, 0x1128, 0x6004, 0xa082, 0x0085, 0x2008, 0x00c2, 0xa186, -+ 0x0027, 0x1178, 0x080c, 0x7055, 0x0036, 0x00d6, 0x6010, 0x2068, -+ 0x2019, 0x0004, 0x080c, 0xb01c, 0x00de, 0x003e, 0x080c, 0x7134, -+ 0x0005, 0xa186, 0x0014, 0x0d70, 0x080c, 0x8606, 0x0005, 0xb218, -+ 0xb216, 0xb216, 0xb216, 0xb216, 0xb216, 0xb218, 0x080c, 0x1511, -+ 0x080c, 0x7055, 0x6003, 0x000c, 0x080c, 0x7134, 0x0005, 0xa182, -+ 0x008c, 0x1220, 0xa182, 0x0085, 0x0208, 0x001a, 0x080c, 0x8606, -+ 0x0005, 0xb230, 0xb230, 0xb230, 0xb230, 0xb232, 0xb250, 0xb230, -+ 0x080c, 0x1511, 0x00d6, 0x2c68, 0x080c, 0x856a, 0x01a0, 0x6003, -+ 0x0001, 0x6007, 0x001e, 0x2009, 0xba8e, 0x210c, 0x6136, 0x2009, -+ 0xba8f, 0x210c, 0x613a, 0x600b, 0xffff, 0x6918, 0x611a, 0x601f, -+ 0x0004, 0x080c, 0x6c52, 0x2d60, 0x080c, 0x85c0, 0x00de, 0x0005, -+ 0x080c, 0x85c0, 0x0005, 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0ec, -+ 0x00ee, 0x0005, 0x6010, 0xa08c, 0xf000, 0x0904, 0xb29e, 0xa080, -+ 0x0013, 0x200c, 0xd1ec, 0x05d0, 0x2001, 0xb472, 0x2004, 0xd0ec, -+ 0x05a8, 0x6003, 0x0002, 0x6020, 0xc0e5, 0x6022, 0xd1ac, 0x0180, -+ 0x00f6, 0x2c78, 0x080c, 0x52c2, 0x00fe, 0x0150, 0x2001, 0xb6b8, -+ 0x2004, 0x603e, 0x2009, 0xb472, 0x210c, 0xd1f4, 0x11e8, 0x0080, -+ 0x2009, 0xb472, 0x210c, 0xd1f4, 0x0128, 0x6020, 0xc0e4, 0x6022, -+ 0xa006, 0x00a0, 0x2001, 0xb6b8, 0x200c, 0x8103, 0xa100, 0x603e, -+ 0x6018, 0xa088, 0x002b, 0x2104, 0xa005, 0x0118, 0xa088, 0x0003, -+ 0x0cd0, 0x2c0a, 0x600f, 0x0000, 0xa085, 0x0001, 0x0005, 0x0016, -+ 0x00c6, 0x00e6, 0x6150, 0xa2f0, 0x002b, 0x2e04, 0x2060, 0x8cff, -+ 0x0180, 0x84ff, 0x1118, 0x6050, 0xa106, 0x1138, 0x600c, 0x2072, -+ 0x080c, 0x6ab4, 0x080c, 0x85c0, 0x0010, 0xacf0, 0x0003, 0x2e64, -+ 0x0c70, 0x00ee, 0x00ce, 0x001e, 0x0005, 0x00d6, 0x6018, 0xa0e8, -+ 0x002b, 0x2d04, 0xa005, 0x0140, 0xac06, 0x0120, 0x2d04, 0xa0e8, -+ 0x0003, 0x0cb8, 0x600c, 0x206a, 0x00de, 0x0005, 0x0026, 0x0036, -+ 0x0156, 0x2011, 0xb428, 0x2204, 0xa084, 0x00ff, 0x2019, 0xba8e, -+ 0x2334, 0xa636, 0x11d8, 0x8318, 0x2334, 0x2204, 0xa084, 0xff00, -+ 0xa636, 0x11a0, 0x2011, 0xba90, 0x6018, 0xa098, 0x000a, 0x20a9, -+ 0x0004, 0x080c, 0x907a, 0x1150, 0x2011, 0xba94, 0x6018, 0xa098, -+ 0x0006, 0x20a9, 0x0004, 0x080c, 0x907a, 0x1100, 0x015e, 0x003e, -+ 0x002e, 0x0005, 0x00e6, 0x2071, 0xb400, 0x080c, 0x4b80, 0x080c, -+ 0x2a7e, 0x00ee, 0x0005, 0x00e6, 0x6018, 0x2070, 0x7000, 0xd0fc, -+ 0x0108, 0x0011, 0x00ee, 0x0005, 0x6850, 0xc0e5, 0x6852, 0x0005, -+ 0x00e6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0046, 0x0026, 0x0016, -+ 0x0126, 0x2091, 0x8000, 0x2029, 0xb6e9, 0x252c, 0x2021, 0xb6ef, -+ 0x2424, 0x2061, 0xbc00, 0x2071, 0xb400, 0x7648, 0x7068, 0xa606, -+ 0x0578, 0x671c, 0xa786, 0x0001, 0x0118, 0xa786, 0x0008, 0x1500, -+ 0x2500, 0xac06, 0x01e8, 0x2400, 0xac06, 0x01d0, 0x080c, 0xb093, -+ 0x01b8, 0x080c, 0xb0a3, 0x11a0, 0x6000, 0xa086, 0x0004, 0x1120, -+ 0x0016, 0x080c, 0x1944, 0x001e, 0x080c, 0x9dd8, 0x1110, 0x080c, -+ 0x2c86, 0x080c, 0x9de9, 0x1110, 0x080c, 0x8bbc, 0x080c, 0x9dae, -+ 0xace0, 0x0018, 0x2001, 0xb417, 0x2004, 0xac02, 0x1208, 0x0858, -+ 0x012e, 0x001e, 0x002e, 0x004e, 0x005e, 0x006e, 0x007e, 0x00ce, -+ 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, -+ 0x2071, 0xb440, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, -+ 0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, -+ 0x0007, 0xa08e, 0x0003, 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, -+ 0x0005, 0x0118, 0x2071, 0xb44a, 0x04c9, 0x001e, 0x00ee, 0x000e, -+ 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x0016, 0x2091, 0x8000, -+ 0x2071, 0xb440, 0xd5a4, 0x0118, 0x7034, 0x8000, 0x7036, 0xd5b4, -+ 0x0118, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0178, 0x2500, 0xa084, -+ 0x0007, 0xa08e, 0x0003, 0x0148, 0xa08e, 0x0004, 0x0130, 0xa08e, -+ 0x0005, 0x0118, 0x2071, 0xb44a, 0x0089, 0x001e, 0x00ee, 0x000e, -+ 0x012e, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, -+ 0xb442, 0x0021, 0x00ee, 0x000e, 0x012e, 0x0005, 0x2e04, 0x8000, -+ 0x2072, 0x1220, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x0005, 0x00e6, -+ 0x2071, 0xb440, 0x0c99, 0x00ee, 0x0005, 0x00e6, 0x2071, 0xb444, -+ 0x0c69, 0x00ee, 0x0005, 0x0126, 0x0006, 0x00e6, 0x2091, 0x8000, -+ 0x2071, 0xb440, 0x7044, 0x8000, 0x7046, 0x00ee, 0x000e, 0x012e, -+ 0x0005, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, -+ 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, -+ 0x8000, 0x622c -+}; ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/asm_2300.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,6195 @@ -+/* @(#)asm_2300.h 1.6 */ -+/* -+ * Copyright (C) 2001 Qlogic, Inc. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms are permitted provided -+ * that the following conditions are met: -+ * 1. Redistribution of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistribution in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+/************************************************************************ -+ * * -+ * --- ISP2300 Initiator/Target Firmware --- * -+ * with Fabric (Public Loop), Point-point, and * -+ * expanded LUN addressing for FCTAPE * -+ * * -+ ************************************************************************/ -+/* -+ * Firmware Version 3.01.20 (15:30 Dec 19, 2002) -+ */ -+static const u_int16_t isp_2300_risc_code[] = { -+ 0x0470, 0x0000, 0x0000, 0xc060, 0x0000, 0x0003, 0x0001, 0x0014, -+ 0x0017, 0x2043, 0x4f50, 0x5952, 0x4947, 0x4854, 0x2032, 0x3030, -+ 0x3120, 0x514c, 0x4f47, 0x4943, 0x2043, 0x4f52, 0x504f, 0x5241, -+ 0x5449, 0x4f4e, 0x2049, 0x5350, 0x3233, 0x3030, 0x2046, 0x6972, -+ 0x6d77, 0x6172, 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, -+ 0x332e, 0x3031, 0x2e32, 0x3020, 0x2020, 0x2020, 0x2400, 0x20a9, -+ 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2200, 0x20a9, 0x000f, -+ 0x2001, 0x0000, 0x400f, 0x2091, 0x2400, 0x20a9, 0x000f, 0x2001, -+ 0x0000, 0x400f, 0x2091, 0x2600, 0x20a9, 0x000f, 0x2001, 0x0000, -+ 0x400f, 0x2091, 0x2800, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, -+ 0x2091, 0x2a00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, -+ 0x2c00, 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2e00, -+ 0x20a9, 0x000f, 0x2001, 0x0000, 0x400f, 0x2091, 0x2000, 0x2001, -+ 0x0000, 0x20c1, 0x0004, 0x2001, 0x017f, 0x2003, 0x0000, 0x20c9, -+ 0x14ff, 0x2059, 0x0000, 0x2b78, 0x7883, 0x0004, 0x2089, 0x240d, -+ 0x2051, 0x1100, 0x2a70, 0x20e1, 0x0001, 0x20e9, 0x0001, 0x2029, -+ 0x45c0, 0x2031, 0xffff, 0x2039, 0x45a9, 0x2021, 0x0200, 0x20e9, -+ 0x0001, 0x20a1, 0x1000, 0x900e, 0x20a9, 0x05c0, 0x4104, 0x7566, -+ 0x766a, 0x7762, 0x746e, 0x7472, 0x00e6, 0x2071, 0x13a1, 0x2472, -+ 0x00ee, 0x20a1, 0x15c0, 0x7168, 0x810d, 0x810d, 0x810d, 0x810d, -+ 0x918c, 0x000f, 0x2001, 0x0001, 0x9112, 0x900e, 0x21a8, 0x4104, -+ 0x8211, 0x1de0, 0x7168, 0x3400, 0x8001, 0x9102, 0x0120, 0x0218, -+ 0x20a8, 0x900e, 0x4104, 0x2009, 0x1100, 0x810d, 0x810d, 0x810d, -+ 0x810d, 0x810d, 0x918c, 0x001f, 0x2001, 0x0001, 0x9112, 0x20e9, -+ 0x0001, 0x20a1, 0x0800, 0x900e, 0x20a9, 0x0800, 0x4104, 0x8211, -+ 0x1dd8, 0x2009, 0x1100, 0x3400, 0x9102, 0x0120, 0x0218, 0x20a8, -+ 0x900e, 0x4104, 0x080c, 0x0f11, 0x080c, 0x10cf, 0x080c, 0x15fe, -+ 0x080c, 0x0d19, 0x080c, 0x50f4, 0x080c, 0x8e7a, 0x080c, 0x0e85, -+ 0x080c, 0x2a8c, 0x080c, 0x65b0, 0x080c, 0x58d0, 0x080c, 0x7133, -+ 0x080c, 0x1c09, 0x080c, 0x7420, 0x080c, 0x6bb9, 0x080c, 0x19df, -+ 0x080c, 0x1b7a, 0x080c, 0x1bfe, 0x2091, 0x3009, 0x7883, 0x0000, -+ 0x1004, 0x0910, 0x7880, 0x9086, 0x0002, 0x1190, 0x7883, 0x4000, -+ 0x7837, 0x4000, 0x7833, 0x0010, 0x0e04, 0x0904, 0x2091, 0x5000, -+ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x0fcd, -+ 0x2a70, 0x7003, 0x0000, 0x2a70, 0x7000, 0x908e, 0x0003, 0x1168, -+ 0x080c, 0x3fa0, 0x080c, 0x2aa2, 0x080c, 0x6610, 0x080c, 0x5dab, -+ 0x080c, 0x715a, 0x080c, 0x23a5, 0x0c70, 0x000b, 0x0c88, 0x0931, -+ 0x0932, 0x0a98, 0x092f, 0x0b68, 0x0d18, 0x0d18, 0x0d18, 0x080c, -+ 0x0d7e, 0x0005, 0x0126, 0x00f6, 0x2091, 0x8000, 0x7000, 0x9086, -+ 0x0001, 0x1904, 0x0a76, 0x7034, 0xd0b4, 0x1130, 0x0026, 0x2011, -+ 0x0080, 0x080c, 0x0e3a, 0x002e, 0x080c, 0x62e4, 0x0150, 0x080c, -+ 0x630a, 0x1580, 0x2079, 0x0100, 0x7828, 0x9085, 0x1800, 0x782a, -+ 0x0448, 0x080c, 0x621a, 0x7000, 0x9086, 0x0001, 0x1904, 0x0a76, -+ 0x7090, 0x9086, 0x0028, 0x1904, 0x0a76, 0x2001, 0x0161, 0x2003, -+ 0x0001, 0x2079, 0x0100, 0x7827, 0xffff, 0x7a28, 0x9295, 0x1e2f, -+ 0x7a2a, 0x2011, 0x61aa, 0x080c, 0x71fa, 0x2011, 0x619d, 0x080c, -+ 0x72bf, 0x2011, 0x4f57, 0x080c, 0x71fa, 0x2011, 0x8030, 0x901e, -+ 0x738e, 0x00d8, 0x080c, 0x483b, 0x2079, 0x0100, 0x7844, 0x9005, -+ 0x1904, 0x0a76, 0x2011, 0x4f57, 0x080c, 0x71fa, 0x2001, 0x0265, -+ 0x2001, 0x0205, 0x2003, 0x0000, 0x780f, 0x006b, 0x7840, 0x9084, -+ 0xfffb, 0x7842, 0x2011, 0x8010, 0x73d4, 0x080c, 0x2261, 0x080c, -+ 0x3f23, 0x7240, 0xc284, 0x7242, 0x2001, 0x110c, 0x200c, 0xc1ac, -+ 0xc1cc, 0x2102, 0x080c, 0x877f, 0x2011, 0x0004, 0x080c, 0xa948, -+ 0x080c, 0x57d9, 0x080c, 0x62e4, 0x1120, 0x080c, 0x22a5, 0x02f0, -+ 0x0410, 0x080c, 0x50b1, 0x0140, 0x708f, 0x0001, 0x70cf, 0x0000, -+ 0x080c, 0x49f2, 0x0804, 0x0a76, 0x2001, 0x1153, 0x2004, 0xd094, -+ 0x0190, 0x2011, 0x110c, 0x2204, 0xc0cd, 0x2012, 0x2001, 0x1172, -+ 0x2004, 0xd0d4, 0x1118, 0x080c, 0x22a5, 0x1278, 0x2011, 0x110c, -+ 0x2204, 0xc0bc, 0x00b0, 0x2001, 0x1172, 0x2004, 0xd0d4, 0x1db0, -+ 0x2011, 0x110c, 0x2204, 0xc0bd, 0x0060, 0x2011, 0x110c, 0x2204, -+ 0xc0bd, 0x2012, 0x080c, 0x58c6, 0x1128, 0xd0a4, 0x0118, 0x2204, -+ 0xc0fd, 0x2012, 0x080c, 0x588e, 0x0120, 0x7a0c, 0xc2b4, 0x7a0e, -+ 0x00a8, 0x7077, 0x0000, 0x080c, 0x62e4, 0x1130, 0x70a8, 0x9005, -+ 0x1168, 0x080c, 0xad47, 0x0050, 0x080c, 0xad47, 0x70d8, 0xd09c, -+ 0x1128, 0x70a8, 0x9005, 0x0110, 0x080c, 0x5092, 0x70e3, 0x0000, -+ 0x70df, 0x0000, 0x709f, 0x0000, 0x72d8, 0x080c, 0x62e4, 0x1170, -+ 0x9016, 0x0016, 0x080c, 0x205d, 0x2019, 0x1298, 0x211a, 0x001e, -+ 0x7057, 0xffff, 0x705b, 0x00ef, 0x707b, 0x0000, 0x2079, 0x1152, -+ 0x7804, 0xd0ac, 0x0108, 0xc295, 0x72da, 0x080c, 0x62e4, 0x0118, -+ 0x9296, 0x0004, 0x0548, 0x2011, 0x0001, 0x080c, 0xa948, 0x70a3, -+ 0x0000, 0x70a7, 0xffff, 0x7003, 0x0002, 0x2079, 0x0100, 0x7827, -+ 0x0003, 0x7828, 0x9085, 0x0003, 0x782a, 0x00fe, 0x080c, 0x2679, -+ 0x2011, 0x0005, 0x080c, 0x88e2, 0x080c, 0x7aa4, 0x080c, 0x62e4, -+ 0x0148, 0x00c6, 0x2061, 0x0100, 0x0016, 0x080c, 0x205d, 0x61e2, -+ 0x001e, 0x00ce, 0x012e, 0x0420, 0x70a3, 0x0000, 0x70a7, 0xffff, -+ 0x7003, 0x0002, 0x00f6, 0x2079, 0x0100, 0x7827, 0x0003, 0x7828, -+ 0x9085, 0x0003, 0x782a, 0x00fe, 0x2011, 0x0005, 0x080c, 0x88e2, -+ 0x080c, 0x7aa4, 0x080c, 0x62e4, 0x0148, 0x00c6, 0x2061, 0x0100, -+ 0x0016, 0x080c, 0x205d, 0x61e2, 0x001e, 0x00ce, 0x00fe, 0x012e, -+ 0x0005, 0x00c6, 0x080c, 0x62e4, 0x1118, 0x20a9, 0x0100, 0x0010, -+ 0x20a9, 0x0082, 0x080c, 0x62e4, 0x1110, 0x900e, 0x0010, 0x2009, -+ 0x007e, 0x080c, 0x2955, 0x8108, 0x1f04, 0x0a89, 0x00ce, 0x7077, -+ 0x0000, 0x7078, 0x9084, 0x00ff, 0x707a, 0x70ab, 0x0000, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x7000, 0x9086, 0x0002, 0x1904, 0x0b66, -+ 0x70a4, 0x9086, 0xffff, 0x0130, 0x080c, 0x2679, 0x080c, 0x7aa4, -+ 0x0804, 0x0b66, 0x70d8, 0xd0ac, 0x1110, 0xd09c, 0x0518, 0xd084, -+ 0x0508, 0x0006, 0x2001, 0x0103, 0x2003, 0x002b, 0x000e, 0xd08c, -+ 0x01c8, 0x70dc, 0x9086, 0xffff, 0x0188, 0x080c, 0x27da, 0x080c, -+ 0x7aa4, 0x70d8, 0xd094, 0x1904, 0x0b66, 0x2011, 0x0001, 0x901e, -+ 0x080c, 0x2811, 0x080c, 0x7aa4, 0x0804, 0x0b66, 0x70e0, 0x9005, -+ 0x1904, 0x0b66, 0x70a0, 0x9005, 0x1904, 0x0b66, 0x70d8, 0xd0a4, -+ 0x0118, 0xd0b4, 0x0904, 0x0b66, 0x080c, 0x588e, 0x1904, 0x0b66, -+ 0x080c, 0x58c6, 0x01c0, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, -+ 0x0016, 0x080c, 0x5608, 0x1118, 0x6000, 0xd0ec, 0x1138, 0x001e, -+ 0x8108, 0x1f04, 0x0ae8, 0x00ce, 0x015e, 0x0028, 0x001e, 0x00ce, -+ 0x015e, 0x0804, 0x0b66, 0x0006, 0x2001, 0x0103, 0x2003, 0x006b, -+ 0x000e, 0x20e9, 0x0001, 0x71b0, 0x81ff, 0x11b0, 0x9006, 0x2009, -+ 0x0200, 0x20a9, 0x0002, 0x20a1, 0x1302, 0x4001, 0x2009, 0x0700, -+ 0x20a9, 0x0002, 0x20a1, 0x12f2, 0x4001, 0x7074, 0x8007, 0x7178, -+ 0x810f, 0x20a9, 0x0002, 0x4001, 0x20a1, 0x12f6, 0x900e, 0x080c, -+ 0x0d65, 0x9006, 0x810f, 0x20a9, 0x0002, 0x4001, 0x7030, 0xc08c, -+ 0x7032, 0x7003, 0x0003, 0x70a7, 0xffff, 0x7034, 0xd0b4, 0x1130, -+ 0x0026, 0x2011, 0x0040, 0x080c, 0x0e3a, 0x002e, 0x9006, 0x080c, -+ 0x1f11, 0x0036, 0x0046, 0x2019, 0xffff, 0x2021, 0x0006, 0x080c, -+ 0x4026, 0x004e, 0x003e, 0x00f6, 0x2079, 0x0100, 0x080c, 0x630a, -+ 0x0150, 0x080c, 0x62e4, 0x7828, 0x0118, 0x9084, 0xe1ff, 0x0010, -+ 0x9084, 0xffdf, 0x782a, 0x00fe, 0x2001, 0x1305, 0x2004, 0x9086, -+ 0x0005, 0x1120, 0x2011, 0x0000, 0x080c, 0x88e2, 0x2011, 0x0000, -+ 0x080c, 0x88ec, 0x080c, 0x7aa4, 0x080c, 0x7b72, 0x012e, 0x0005, -+ 0x0016, 0x0046, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, -+ 0x7904, 0x918c, 0xfffd, 0x7906, 0x2009, 0x00f7, 0x080c, 0x507b, -+ 0x7940, 0x918c, 0x0010, 0x7942, 0x7924, 0xd1b4, 0x0110, 0x7827, -+ 0x0040, 0xd19c, 0x0110, 0x7827, 0x0008, 0x0006, 0x0036, 0x0156, -+ 0x7954, 0xd1ac, 0x1904, 0x0bf6, 0x080c, 0x2328, 0x1148, 0x2001, -+ 0x0001, 0x080c, 0x2290, 0x2001, 0x0001, 0x080c, 0x2273, 0x00b8, -+ 0x080c, 0x2330, 0x1138, 0x9006, 0x080c, 0x2290, 0x9006, 0x080c, -+ 0x2273, 0x0068, 0x080c, 0x2338, 0x1d50, 0x2001, 0x12d2, 0x2004, -+ 0xd0fc, 0x0108, 0x0020, 0x080c, 0x2089, 0x0804, 0x0cda, 0x080c, -+ 0x62f6, 0x0158, 0x080c, 0x630a, 0x1128, 0x2001, 0x12a7, 0x2003, -+ 0x0000, 0x0070, 0x080c, 0x62ec, 0x0dc0, 0x2001, 0x12a7, 0x2003, -+ 0xaaaa, 0x2001, 0x12a8, 0x2003, 0x0001, 0x080c, 0x621a, 0x0058, -+ 0x080c, 0x62e4, 0x0140, 0x2009, 0x00f8, 0x080c, 0x507b, 0x7843, -+ 0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x1138, -+ 0x080c, 0x62e4, 0x0138, 0x7824, 0xd0ac, 0x1904, 0x0cdf, 0x1f04, -+ 0x0bd5, 0x0070, 0x7824, 0x080c, 0x6300, 0x0118, 0xd0ac, 0x1904, -+ 0x0cdf, 0x9084, 0x1800, 0x0d98, 0x7003, 0x0001, 0x0804, 0x0cdf, -+ 0x2001, 0x0001, 0x080c, 0x1f11, 0x0804, 0x0cf2, 0x080c, 0x2328, -+ 0x1148, 0x2001, 0x0001, 0x080c, 0x2290, 0x2001, 0x0001, 0x080c, -+ 0x2273, 0x00b8, 0x080c, 0x2330, 0x1138, 0x9006, 0x080c, 0x2290, -+ 0x9006, 0x080c, 0x2273, 0x0068, 0x080c, 0x2338, 0x1d50, 0x2001, -+ 0x12d2, 0x2004, 0xd0fc, 0x0108, 0x0020, 0x080c, 0x2089, 0x0804, -+ 0x0cda, 0x080c, 0x2346, 0x7850, 0x9085, 0x0040, 0x7852, 0x7938, -+ 0x7850, 0x9084, 0xfbcf, 0x7852, 0x080c, 0x2340, 0x9085, 0x2000, -+ 0x7852, 0x793a, 0x20a9, 0x0046, 0x1d04, 0x0c2c, 0x080c, 0x72a5, -+ 0x1f04, 0x0c2c, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfbf, 0x7852, -+ 0x793a, 0x080c, 0x62f6, 0x0158, 0x080c, 0x630a, 0x1128, 0x2001, -+ 0x12a7, 0x2003, 0x0000, 0x0070, 0x080c, 0x62ec, 0x0dc0, 0x2001, -+ 0x12a7, 0x2003, 0xaaaa, 0x2001, 0x12a8, 0x2003, 0x0001, 0x080c, -+ 0x621a, 0x0020, 0x2009, 0x00f8, 0x080c, 0x507b, 0x20a9, 0x0028, -+ 0xa001, 0x1f04, 0x0c58, 0x7850, 0x9085, 0x1400, 0x7852, 0x080c, -+ 0x62e4, 0x0120, 0x7843, 0x0090, 0x7843, 0x0010, 0x2021, 0xe678, -+ 0x2019, 0xea60, 0x7820, 0xd09c, 0x15a0, 0x080c, 0x62e4, 0x0904, -+ 0x0cbf, 0x7824, 0xd0ac, 0x1904, 0x0cdf, 0x080c, 0x630a, 0x1548, -+ 0x0046, 0x2021, 0x0320, 0x8421, 0x1df0, 0x004e, 0x7827, 0x1800, -+ 0x080c, 0x2340, 0x7824, 0x9084, 0x1800, 0x1160, 0x9484, 0x0fff, -+ 0x1138, 0x2001, 0x110f, 0x2004, 0xd0fc, 0x0110, 0x080c, 0x0d01, -+ 0x8421, 0x1178, 0x1d04, 0x0c96, 0x080c, 0x72a5, 0x2001, 0x12a7, -+ 0x2003, 0xaaaa, 0x2001, 0x12a8, 0x2003, 0x0001, 0x7003, 0x0001, -+ 0x04f0, 0x8319, 0x1938, 0x1d04, 0x0ca7, 0x080c, 0x72a5, 0x2009, -+ 0x12d5, 0x2104, 0x9005, 0x0118, 0x8001, 0x200a, 0x1178, 0x200b, -+ 0x000a, 0x7827, 0x0048, 0x20a9, 0x0002, 0x080c, 0x2321, 0x7924, -+ 0x080c, 0x2340, 0xd19c, 0x0110, 0x080c, 0x2261, 0x00d8, 0x080c, -+ 0x62f6, 0x1140, 0x94a2, 0x03e8, 0x1128, 0x080c, 0x62be, 0x7003, -+ 0x0001, 0x00a8, 0x7827, 0x1800, 0x080c, 0x2340, 0x7824, 0x080c, -+ 0x6300, 0x0110, 0xd0ac, 0x1158, 0x9084, 0x1800, 0x0950, 0x7003, -+ 0x0001, 0x0028, 0x2001, 0x0001, 0x080c, 0x1f11, 0x0078, 0x2009, -+ 0x110c, 0x210c, 0xd19c, 0x1120, 0x7904, 0x918d, 0x0002, 0x7906, -+ 0x7827, 0x0048, 0x7828, 0x9085, 0x0028, 0x782a, 0x7850, 0x9085, -+ 0x0400, 0x7852, 0x9006, 0x78f2, 0x015e, 0x003e, 0x000e, 0x7034, -+ 0xd0b4, 0x1110, 0x080c, 0x0df3, 0x012e, 0x00fe, 0x004e, 0x001e, -+ 0x0005, 0x0006, 0x0016, 0x0036, 0x0046, 0x00b6, 0x00c6, 0x00d6, -+ 0x00e6, 0x00f6, 0x0156, 0x080c, 0x2aa2, 0x015e, 0x00fe, 0x00ee, -+ 0x00de, 0x00ce, 0x00be, 0x004e, 0x003e, 0x001e, 0x000e, 0x0005, -+ 0x0005, 0x2a70, 0x2061, 0x12e3, 0x2063, 0x0003, 0x6007, 0x0001, -+ 0x600b, 0x0014, 0x600f, 0x0017, 0x2001, 0x12a7, 0x900e, 0x2102, -+ 0x718e, 0x2001, 0x0100, 0x2004, 0x9082, 0x0002, 0x0218, 0x7057, -+ 0xffff, 0x0008, 0x7156, 0x705f, 0xffff, 0x7176, 0x717a, 0x080c, -+ 0xad47, 0x2061, 0x1297, 0x6003, 0x0909, 0x6106, 0x600b, 0x8800, -+ 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x000f, 0x611a, 0x601f, -+ 0x07d0, 0x2061, 0x129f, 0x6003, 0x8000, 0x6106, 0x610a, 0x600f, -+ 0x0200, 0x6013, 0x00ff, 0x6116, 0x601b, 0x0001, 0x611e, 0x2061, -+ 0x12c3, 0x6003, 0x514c, 0x6007, 0x4f47, 0x600b, 0x4943, 0x600f, -+ 0x2020, 0x2001, 0x112a, 0x2102, 0x0005, 0x9016, 0x080c, 0x5608, -+ 0x1178, 0x6004, 0x90c4, 0x00ff, 0x98c6, 0x0006, 0x0128, 0x90c4, -+ 0xff00, 0x98c6, 0x0600, 0x1120, 0x9186, 0x0080, 0x0108, 0x8210, -+ 0x8108, 0x9186, 0x0100, 0x1d50, 0x2208, 0x0005, 0x2091, 0x8000, -+ 0x0e04, 0x0d80, 0x0006, 0x0016, 0x2079, 0x0000, 0x001e, 0x798e, -+ 0x000e, 0x788a, 0x000e, 0x7886, 0x3900, 0x789a, 0x7883, 0x8002, -+ 0x7837, 0x8002, 0x7833, 0x0012, 0x2091, 0x5000, 0x0156, 0x00d6, -+ 0x0036, 0x0026, 0x2079, 0x0300, 0x2069, 0x137c, 0x7a18, 0x226a, -+ 0x8d68, 0x7a1c, 0x226a, 0x782c, 0x2019, 0x1389, 0x201a, 0x2019, -+ 0x138c, 0x9016, 0x7808, 0xd09c, 0x0168, 0x7820, 0x201a, 0x8210, -+ 0x8318, 0x9386, 0x13a1, 0x0108, 0x0ca8, 0x7808, 0xd09c, 0x0110, -+ 0x2011, 0xdead, 0x2019, 0x138a, 0x782c, 0x201a, 0x8318, 0x221a, -+ 0x7803, 0x0000, 0x2069, 0x135c, 0x901e, 0x20a9, 0x0020, 0x7b26, -+ 0x7a28, 0x226a, 0x8d68, 0x8318, 0x1f04, 0x0dc7, 0x002e, 0x003e, -+ 0x00de, 0x015e, 0x2079, 0x1100, 0x7803, 0x0005, 0x2091, 0x4080, -+ 0x2001, 0x0089, 0x2004, 0xd084, 0x0180, 0x2001, 0x1336, 0x2004, -+ 0x9005, 0x0128, 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, -+ 0x008a, 0x2003, 0x0002, 0x2003, 0x1001, 0x7834, 0xd0b4, 0x1108, -+ 0x04b9, 0x0cd8, 0x0005, 0x00f6, 0x0006, 0x2079, 0x1125, 0x2f04, -+ 0x8000, 0x207a, 0x080c, 0x2338, 0x1150, 0x0006, 0x2001, 0x12d2, -+ 0x2004, 0xd0fc, 0x000e, 0x1118, 0x9082, 0x7530, 0x0010, 0x9082, -+ 0x000f, 0x0258, 0x9006, 0x207a, 0x2079, 0x1128, 0x2f04, 0x9084, -+ 0x0001, 0x9086, 0x0001, 0x207a, 0x0080, 0x2079, 0x1128, 0x2f7c, -+ 0x8fff, 0x1130, 0x0026, 0x2011, 0x0080, 0x00e1, 0x002e, 0x0028, -+ 0x0026, 0x2011, 0x0000, 0x00b1, 0x002e, 0x000e, 0x00fe, 0x0005, -+ 0x0026, 0x2011, 0x0080, 0x0071, 0x002e, 0x2009, 0x0fff, 0x00b9, -+ 0x0026, 0x2011, 0x0040, 0x0031, 0x002e, 0x2009, 0x0fff, 0x0079, -+ 0x0c78, 0x0005, 0x0016, 0x3b08, 0x3a00, 0x9104, 0x918d, 0x00c0, -+ 0x21d8, 0x9084, 0xff3f, 0x9205, 0x20d0, 0x001e, 0x0005, 0x0156, -+ 0x0126, 0x918c, 0x0fff, 0x21a8, 0x1d04, 0x0e4c, 0x2091, 0x6000, -+ 0x1f04, 0x0e4c, 0x012e, 0x015e, 0x0005, 0x890b, 0x810b, 0x810b, -+ 0x810b, 0x810b, 0x810b, 0x9994, 0xfc00, 0x8217, 0x8214, 0x8214, -+ 0x0005, 0x0006, 0x814c, 0x894c, 0x894c, 0x894c, 0x894c, 0x894c, -+ 0x9284, 0x003f, 0x8007, 0x8003, 0x8003, 0x994d, 0x000e, 0x0005, -+ 0x0016, 0x0026, 0x0096, 0x3348, 0x0c01, 0x2100, 0x9300, 0x2098, -+ 0x22e0, 0x009e, 0x002e, 0x001e, 0x3518, 0x20a9, 0x0001, 0x4002, -+ 0x8007, 0x4004, 0x8319, 0x1dd8, 0x0005, 0x2071, 0x1100, 0x7164, -+ 0x712e, 0x2021, 0x0001, 0x9190, 0x0040, 0x9298, 0x0040, 0x0240, -+ 0x7068, 0x9302, 0x1228, 0x220a, 0x2208, 0x2310, 0x8420, 0x0ca8, -+ 0x200b, 0x0000, 0x74ba, 0x74be, 0x0005, 0x00e6, 0x0126, 0x2091, -+ 0x8000, 0x2071, 0x1100, 0x70bc, 0x90ea, 0x0010, 0x0268, 0x8001, -+ 0x70be, 0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, -+ 0x0000, 0x012e, 0x00ee, 0x0005, 0x906e, 0x0cd8, 0x00e6, 0x2071, -+ 0x1100, 0x0126, 0x2091, 0x8000, 0x70bc, 0x8001, 0x0270, 0x70be, -+ 0x702c, 0x2068, 0x9085, 0x0001, 0x2d04, 0x702e, 0x206b, 0x0000, -+ 0x6807, 0x0000, 0x012e, 0x00ee, 0x0005, 0x906e, 0x0cd8, 0x00e6, -+ 0x0126, 0x2091, 0x8000, 0x2071, 0x1100, 0x702c, 0x206a, 0x2d00, -+ 0x702e, 0x70bc, 0x8000, 0x70be, 0x012e, 0x00ee, 0x0005, 0x8dff, -+ 0x0138, 0x6804, 0x6807, 0x0000, 0x0006, 0x0c49, 0x00de, 0x0cb8, -+ 0x0005, 0x00d6, 0x0859, 0x0148, 0x0016, 0x0026, 0x2d08, 0x2011, -+ 0x0001, 0x080c, 0x0e61, 0x002e, 0x001e, 0x00de, 0x0005, 0x00d6, -+ 0x080c, 0x0e9d, 0x0148, 0x0016, 0x0026, 0x2d08, 0x2011, 0x0001, -+ 0x080c, 0x0e61, 0x002e, 0x001e, 0x00de, 0x0005, 0x00d6, 0x0016, -+ 0x0026, 0x080c, 0x0e55, 0x2168, 0x002e, 0x001e, 0x0801, 0x00de, -+ 0x0005, 0x00e6, 0x2071, 0x1335, 0x7007, 0x0000, 0x9006, 0x701e, -+ 0x7022, 0x7002, 0x2071, 0x0000, 0x7010, 0x9085, 0x8004, 0x7012, -+ 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x00e6, 0x2270, 0x700b, -+ 0x0000, 0x2071, 0x1335, 0x701c, 0x9088, 0x133f, 0x220a, 0x8000, -+ 0x9084, 0x0007, 0x701e, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, -+ 0x0080, 0x0089, 0x00fe, 0x00ee, 0x012e, 0x0005, 0x00e6, 0x2071, -+ 0x1335, 0x7004, 0x9005, 0x1128, 0x00f6, 0x2079, 0x0080, 0x0019, -+ 0x00fe, 0x00ee, 0x0005, 0x7004, 0x9086, 0x0000, 0x1110, 0x7007, -+ 0x0006, 0x7000, 0x0002, 0x0f5d, 0x0f5b, 0x0f5b, 0x0f5b, 0x10be, -+ 0x10be, 0x10be, 0x10be, 0x080c, 0x0d7e, 0x701c, 0x7120, 0x9106, -+ 0x1148, 0x792c, 0x9184, 0x0001, 0x1120, 0xd1fc, 0x1110, 0x7007, -+ 0x0000, 0x0005, 0x00d6, 0x9180, 0x133f, 0x2004, 0x700a, 0x2068, -+ 0x8108, 0x918c, 0x0007, 0x7122, 0x782b, 0x0026, 0x6828, 0x7802, -+ 0x682c, 0x7806, 0x6830, 0x780a, 0x6834, 0x780e, 0x6814, 0x700e, -+ 0x680c, 0x7016, 0x6810, 0x701a, 0x6804, 0x00de, 0xd084, 0x0120, -+ 0x7007, 0x0001, 0x0029, 0x0005, 0x7007, 0x0002, 0x00b1, 0x0005, -+ 0x0016, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, 0x0040, 0x1210, -+ 0x2110, 0x9006, 0x700e, 0x7212, 0x8203, 0x7812, 0x782b, 0x0020, -+ 0x782b, 0x0041, 0x002e, 0x001e, 0x0005, 0x0016, 0x0026, 0x0136, -+ 0x0146, 0x0156, 0x7014, 0x20e0, 0x7018, 0x2098, 0x20e9, 0x0000, -+ 0x20a1, 0x0088, 0x782b, 0x0026, 0x710c, 0x2011, 0x0040, 0x9182, -+ 0x0040, 0x1210, 0x2110, 0x9006, 0x700e, 0x22a8, 0x4006, 0x8203, -+ 0x7812, 0x782b, 0x0020, 0x3300, 0x701a, 0x782b, 0x0001, 0x015e, -+ 0x014e, 0x013e, 0x002e, 0x001e, 0x0005, 0x2009, 0x1335, 0x2104, -+ 0xc095, 0x200a, 0x080c, 0x0f3e, 0x0005, 0x0016, 0x00e6, 0x2071, -+ 0x1335, 0x00f6, 0x2079, 0x0080, 0x792c, 0x782b, 0x0002, 0xd1fc, -+ 0x0120, 0x918c, 0x0700, 0x7004, 0x0023, 0x00fe, 0x00ee, 0x001e, -+ 0x0005, 0x0f4b, 0x0ff2, 0x1024, 0x0ff0, 0x0ff0, 0x10ca, 0x0ff0, -+ 0x080c, 0x0d7e, 0x918c, 0x0700, 0x1548, 0x0136, 0x0146, 0x0156, -+ 0x7014, 0x20e8, 0x7018, 0x20a0, 0x20e1, 0x0000, 0x2099, 0x0088, -+ 0x782b, 0x0040, 0x7010, 0x20a8, 0x4005, 0x3400, 0x701a, 0x015e, -+ 0x014e, 0x013e, 0x700c, 0x9005, 0x0560, 0x7800, 0x7802, 0x7804, -+ 0x7806, 0x080c, 0x0f90, 0x0005, 0x7008, 0x9080, 0x0002, 0x2003, -+ 0x0100, 0x7007, 0x0000, 0x080c, 0x0f4b, 0x0005, 0x7008, 0x9080, -+ 0x0002, 0x2003, 0x0200, 0x0ca8, 0x918c, 0x0700, 0x1150, 0x700c, -+ 0x9005, 0x0178, 0x7800, 0x7802, 0x7804, 0x7806, 0x080c, 0x0fa5, -+ 0x0005, 0x7008, 0x9080, 0x0002, 0x2003, 0x0200, 0x7007, 0x0000, -+ 0x0080, 0x00d6, 0x7008, 0x2068, 0x7800, 0x682a, 0x7804, 0x682e, -+ 0x7808, 0x6832, 0x780c, 0x6836, 0x680b, 0x0100, 0x00de, 0x7007, -+ 0x0000, 0x00c6, 0x00d6, 0x7008, 0x2060, 0x9086, 0x11fb, 0x1128, -+ 0x6038, 0x080f, 0x00de, 0x00ce, 0x0078, 0x00de, 0x00ce, 0x00c6, -+ 0x00d6, 0x7008, 0x2060, 0x0059, 0x0128, 0x6038, 0x080f, 0x00de, -+ 0x00ce, 0x0005, 0x00de, 0x00ce, 0x080c, 0x0f4b, 0x0005, 0x00e6, -+ 0x2071, 0x1100, 0x8cff, 0x0140, 0x7064, 0x9c02, 0x0238, 0x9c82, -+ 0xffff, 0x1220, 0x9085, 0x0001, 0x00ee, 0x0005, 0x9006, 0x0ce0, -+ 0x603c, 0x906d, 0x090c, 0x0d7e, 0x6008, 0x908e, 0x0100, 0x0130, -+ 0x687b, 0x0030, 0x6883, 0x0000, 0x6897, 0x4002, 0x080c, 0x5b76, -+ 0x603b, 0x0000, 0x603f, 0x0000, 0x2c00, 0x2068, 0x080c, 0x0ecf, -+ 0x0005, 0x00f6, 0x603c, 0x906d, 0x090c, 0x0d7e, 0x6008, 0x908e, -+ 0x0100, 0x0128, 0x687b, 0x0001, 0x6883, 0x0000, 0x0080, 0x680c, -+ 0x2078, 0x7804, 0x9005, 0x0158, 0x680e, 0x2078, 0x9080, 0x0002, -+ 0x6012, 0x7800, 0x6016, 0x2c10, 0x080c, 0x0f22, 0x0068, 0x00d6, -+ 0x080c, 0x5b76, 0x00de, 0x687c, 0xd0f4, 0x0130, 0x6894, 0x00c6, -+ 0x2060, 0x080c, 0x8ed9, 0x00ce, 0x00fe, 0x0005, 0x0126, 0x2091, -+ 0x8000, 0x782b, 0x1001, 0x7007, 0x0005, 0x7000, 0xc094, 0x7002, -+ 0x012e, 0x0005, 0x7007, 0x0000, 0x080c, 0x0f4b, 0x0005, 0x0126, -+ 0x2091, 0x2200, 0x2079, 0x0300, 0x2071, 0x1347, 0x7003, 0x0000, -+ 0x78bf, 0x00f6, 0x00c1, 0x7803, 0x0003, 0x780f, 0x0000, 0x20a9, -+ 0x01ea, 0x2061, 0xc47d, 0x2c0d, 0x7912, 0xe104, 0x9ce0, 0x0002, -+ 0x7916, 0x1f04, 0x10e3, 0x7807, 0x0001, 0x7803, 0x0000, 0x7803, -+ 0x0001, 0x012e, 0x0005, 0x00c6, 0x7803, 0x0000, 0x7808, 0xd09c, -+ 0x0110, 0x7820, 0x0cd8, 0x2001, 0x1348, 0x2003, 0x0000, 0x78ab, -+ 0x0004, 0x78ac, 0xd0ac, 0x1de8, 0x78ab, 0x0002, 0x7807, 0x0001, -+ 0x7827, 0x0030, 0x782b, 0x0400, 0x7827, 0x0031, 0x782b, 0x135c, -+ 0x781f, 0xff00, 0x781b, 0xff00, 0x2001, 0x0200, 0x2004, 0xd0dc, -+ 0x0110, 0x781f, 0x0303, 0x2061, 0x135c, 0x602f, 0x15c0, 0x6033, -+ 0x3000, 0x603b, 0x18fe, 0x00ce, 0x0005, 0x0126, 0x2091, 0x2200, -+ 0x7808, 0xd09c, 0x0158, 0x7820, 0x908c, 0xf000, 0x1578, 0x908c, -+ 0x0fe0, 0x190c, 0x0d7e, 0x0043, 0x012e, 0x0005, 0x9084, 0x0070, -+ 0x190c, 0x0d7e, 0x012e, 0x0005, 0x115c, 0x115c, 0x1165, 0x116a, -+ 0x116e, 0x1173, 0x119a, 0x119e, 0x11ab, 0x11af, 0x115c, 0x1233, -+ 0x1237, 0x1296, 0x115c, 0x115c, 0x115c, 0x115c, 0x115c, 0x115c, -+ 0x115c, 0x115c, 0x115c, 0x115c, 0x115c, 0x115c, 0x115c, 0x1175, -+ 0x115c, 0x115c, 0x115c, 0x115c, 0x080c, 0x0d7e, 0x2009, 0x0048, -+ 0x2060, 0x080c, 0x8f53, 0x012e, 0x0005, 0x7004, 0xc085, 0xc0b5, -+ 0x7006, 0x0005, 0x7004, 0xc085, 0x7006, 0x0005, 0x080c, 0x129d, -+ 0x080c, 0x133c, 0x0005, 0x080c, 0x0d7e, 0x080c, 0x129d, 0x2060, -+ 0x6014, 0x9080, 0x000e, 0x2003, 0xffff, 0x2009, 0x0048, 0x080c, -+ 0x8f53, 0x2001, 0x015d, 0x2003, 0x0000, 0x2009, 0x03e8, 0x8109, -+ 0x0160, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x2001, 0x0218, -+ 0x2004, 0xd0ec, 0x1110, 0x080c, 0x12a2, 0x2001, 0x0307, 0x2003, -+ 0x8000, 0x0005, 0x7004, 0xc095, 0x7006, 0x0005, 0x080c, 0x129d, -+ 0x2060, 0x6014, 0x9080, 0x000e, 0x2003, 0xffff, 0x2009, 0x0048, -+ 0x080c, 0x8f53, 0x0005, 0x080c, 0x129d, 0x080c, 0x0d7e, 0x080c, -+ 0x129d, 0x080c, 0x121e, 0x7827, 0x0018, 0x79ac, 0xd1dc, 0x0540, -+ 0x7827, 0x0015, 0x7828, 0x782b, 0x0000, 0x9065, 0x0138, 0x2001, -+ 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, 0x0400, 0x7004, 0x9005, -+ 0x1180, 0x78ab, 0x0004, 0x7827, 0x0018, 0x782b, 0x0000, 0xd1bc, -+ 0x090c, 0x0d7e, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, -+ 0x0460, 0x78ab, 0x0004, 0x7803, 0x0001, 0x080c, 0x1237, 0x0005, -+ 0x7828, 0x782b, 0x0000, 0x9065, 0x090c, 0x0d7e, 0x6014, 0x2068, -+ 0x78ab, 0x0004, 0x918c, 0x0700, 0x0198, 0x080c, 0x1577, 0x080c, -+ 0xa942, 0x0158, 0x69ac, 0x6936, 0x69b0, 0x693a, 0x683f, 0xffff, -+ 0x6843, 0xffff, 0x6880, 0xc0bd, 0x6882, 0x080c, 0xa5f3, 0x0005, -+ 0x6010, 0x2004, 0xd0bc, 0x190c, 0xace0, 0x2029, 0x00c8, 0x8529, -+ 0x0128, 0x2001, 0x0201, 0x2004, 0x9005, 0x0dc8, 0x7dbc, 0x080c, -+ 0xc426, 0xd5a4, 0x1118, 0x080c, 0x12a2, 0x0005, 0x080c, 0x1577, -+ 0x0005, 0x781f, 0x0300, 0x7803, 0x0001, 0x0005, 0x0016, 0x0066, -+ 0x0076, 0x00f6, 0x2079, 0x0300, 0x7908, 0x918c, 0x0007, 0x9186, -+ 0x0003, 0x0120, 0x2001, 0x0016, 0x080c, 0x130c, 0x00fe, 0x007e, -+ 0x006e, 0x001e, 0x0005, 0x7004, 0xc09d, 0x7006, 0x0005, 0x7104, -+ 0x9184, 0x0004, 0x190c, 0x0d7e, 0xd184, 0x1189, 0xd19c, 0x0158, -+ 0xc19c, 0x7106, 0x2001, 0x020d, 0x2003, 0x0050, 0x2003, 0x0020, -+ 0x080c, 0x12a2, 0x0005, 0x81ff, 0x190c, 0x0d7e, 0x0005, 0xc184, -+ 0xd1b4, 0xc1b4, 0x7106, 0x0016, 0x00e6, 0x15c0, 0x2071, 0x0200, -+ 0x080c, 0x1330, 0x6014, 0x9005, 0x0588, 0x9080, 0x0019, 0x2004, -+ 0x9084, 0x00ff, 0x908e, 0x0029, 0x0148, 0x908e, 0x0048, 0x1530, -+ 0x00f6, 0x2c78, 0x080c, 0x137e, 0x00fe, 0x00a8, 0x00f6, 0x2c78, -+ 0x080c, 0x1436, 0x00fe, 0x2009, 0x01f4, 0x8109, 0x0160, 0x2001, -+ 0x0201, 0x2004, 0x9005, 0x0dc8, 0x2001, 0x0218, 0x2004, 0xd0ec, -+ 0x1110, 0x0401, 0x0040, 0x2001, 0x020d, 0x2003, 0x0020, 0x080c, -+ 0x10f3, 0x7803, 0x0001, 0x00ee, 0x001e, 0x0005, 0x2001, 0x020d, -+ 0x2003, 0x0050, 0x2003, 0x0020, 0x0069, 0x0ca8, 0x0031, 0x2060, -+ 0x2009, 0x0053, 0x080c, 0x8f53, 0x0005, 0x7808, 0xd09c, 0x0de8, -+ 0x7820, 0x0005, 0x080c, 0x121e, 0x00d6, 0x2069, 0x0200, 0x2009, -+ 0x01f4, 0x8109, 0x0508, 0x6804, 0x9005, 0x0dd8, 0x2001, 0x015d, -+ 0x2003, 0x0000, 0x79bc, 0xd1a4, 0x1520, 0x79b8, 0x918c, 0x0fff, -+ 0x0178, 0x9182, 0x0841, 0x1260, 0x9188, 0x0007, 0x918c, 0x0ff8, -+ 0x810c, 0x810c, 0x810c, 0x04d1, 0x6827, 0x0001, 0x8109, 0x1dd8, -+ 0x04a9, 0x6827, 0x0002, 0x0491, 0x6804, 0x9005, 0x1130, 0x682c, -+ 0xd0e4, 0x11d0, 0x6804, 0x9005, 0x0de8, 0x79b8, 0xd1ec, 0x1120, -+ 0x08c8, 0x080c, 0x1577, 0x0070, 0x7827, 0x0015, 0x782b, 0x0000, -+ 0x2001, 0x020d, 0x2003, 0x0020, 0x2001, 0x0307, 0x2003, 0x0300, -+ 0x7803, 0x0001, 0x00de, 0x0005, 0x682c, 0x9084, 0x5400, 0x9086, -+ 0x5400, 0x0d50, 0x7827, 0x0015, 0x782b, 0x0000, 0x7803, 0x0001, -+ 0x6800, 0x9085, 0x1800, 0x6802, 0x00de, 0x0005, 0x6824, 0x9084, -+ 0x0003, 0x1de0, 0x0005, 0x2001, 0x0030, 0x2c08, 0x621c, 0x0021, -+ 0x7830, 0x9086, 0x0041, 0x0005, 0x00f6, 0x2079, 0x0300, 0x0006, -+ 0x7808, 0xd09c, 0x0140, 0x0016, 0x0026, 0x00c6, 0x080c, 0x1125, -+ 0x00ce, 0x002e, 0x001e, 0x000e, 0x7832, 0x7936, 0x7a3a, 0x781b, -+ 0x8080, 0x2009, 0xff00, 0x8109, 0x0128, 0x7818, 0xd0bc, 0x1dd8, -+ 0x00fe, 0x0005, 0x792c, 0x3900, 0x8000, 0x2004, 0x080c, 0x0d7e, -+ 0x7037, 0x0001, 0x7150, 0x7037, 0x0002, 0x7050, 0x2060, 0xd1bc, -+ 0x1110, 0x7054, 0x2060, 0x0005, 0x00e6, 0x0016, 0x2071, 0x0200, -+ 0x0c79, 0x7358, 0x745c, 0x6014, 0x905d, 0x0568, 0x2b68, 0x6010, -+ 0x2004, 0xd0bc, 0x190c, 0xacbb, 0x6b42, 0x6c3e, 0x2001, 0x1174, -+ 0x2004, 0xd0b4, 0x1158, 0x601c, 0xd0e4, 0x1140, 0x6010, 0x2004, -+ 0xd0bc, 0x1120, 0x683b, 0x7fff, 0x6837, 0xffff, 0x080c, 0x191e, -+ 0x1190, 0x080c, 0x1484, 0x2a00, 0x6816, 0x0130, 0x2c00, 0x680e, -+ 0x2805, 0x680a, 0x2800, 0x6812, 0x7037, 0x0020, 0x781f, 0x0300, -+ 0x001e, 0x00ee, 0x0005, 0x7037, 0x0050, 0x7037, 0x0020, 0x001e, -+ 0x00ee, 0x080c, 0x12a2, 0x0005, 0x080c, 0x0d7e, 0x2ff0, 0x0126, -+ 0x2091, 0x2200, 0x3e60, 0x6014, 0x2068, 0x2d60, 0x903e, 0x2730, -+ 0x6964, 0x691a, 0x9184, 0x000f, 0x9088, 0x18fe, 0x2145, 0x0002, -+ 0x13a0, 0x1407, 0x13a0, 0x13a0, 0x13a0, 0x13e0, 0x13a0, 0x13a4, -+ 0x13a0, 0x13f5, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13ca, 0x13b6, -+ 0x9085, 0x0001, 0x0804, 0x142e, 0x687c, 0xd0bc, 0x0dc8, 0x6890, -+ 0x6842, 0x688c, 0x683e, 0x6888, 0x00d6, 0x2805, 0x9c68, 0x6b08, -+ 0x6a0c, 0x6d00, 0x6c04, 0x00de, 0x0804, 0x1416, 0x687c, 0xd0bc, -+ 0x0d38, 0x6890, 0x6842, 0x688c, 0x683e, 0x6888, 0x00d6, 0x2805, -+ 0x9c68, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x00de, -+ 0x0804, 0x1416, 0x687c, 0xd0bc, 0x0998, 0x6890, 0x6842, 0x688c, -+ 0x683e, 0x6804, 0x2060, 0x9080, 0x0019, 0x200c, 0x691a, 0x91cc, -+ 0x000f, 0x9980, 0x18fe, 0x2045, 0x6888, 0xd19c, 0x11e8, 0x0470, -+ 0x687c, 0xd0ac, 0x0904, 0x13a0, 0x6804, 0x2060, 0x9080, 0x0019, -+ 0x200c, 0x691a, 0x91cc, 0x000f, 0x9980, 0x18fe, 0x2045, 0x9006, -+ 0x6842, 0x683e, 0xd19c, 0x1140, 0x00c8, 0x687c, 0xd0ac, 0x0904, -+ 0x13a0, 0x9006, 0x6842, 0x683e, 0x00d6, 0x2805, 0x9c68, 0x6b10, -+ 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x00de, 0x0078, 0x687c, -+ 0xd0ac, 0x0904, 0x13a0, 0x9006, 0x6842, 0x683e, 0x00d6, 0x2805, -+ 0x9c68, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x00de, 0x6b2e, 0x6a32, -+ 0x6d1e, 0x6c22, 0x6f26, 0x6e2a, 0x6988, 0x8840, 0x281d, 0x68ac, -+ 0x6ab0, 0x6836, 0x6a3a, 0x8109, 0x6916, 0x1150, 0x3e60, 0x601c, -+ 0xc085, 0x601e, 0x687c, 0xc0dd, 0x687e, 0x9006, 0x012e, 0x0005, -+ 0x2c00, 0x680e, 0x6b0a, 0x2800, 0x6812, 0x0c80, 0x2ff0, 0x0126, -+ 0x2091, 0x2200, 0x3e60, 0x6014, 0x2068, 0x2d60, 0x680e, 0x2041, -+ 0x18fb, 0x680b, 0x18fb, 0x2805, 0x6812, 0x6964, 0x691a, 0x687c, -+ 0xd0ac, 0x090c, 0x0d7e, 0x9006, 0x6842, 0x683e, 0x00d6, 0x2805, -+ 0x9c68, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x00de, -+ 0x6b2e, 0x6a32, 0x6d1e, 0x6c22, 0x6f26, 0x6e2a, 0x68ac, 0x6ab0, -+ 0x6836, 0x6a3a, 0x6988, 0x918a, 0x0002, 0x6916, 0x1150, 0x3e60, -+ 0x601c, 0xc085, 0x601e, 0x687c, 0xc0dd, 0x687e, 0x9006, 0x012e, -+ 0x0005, 0x6804, 0x9065, 0x090c, 0x0d7e, 0x680e, 0x6064, 0x681a, -+ 0x9084, 0x000f, 0x9080, 0x18fe, 0x2015, 0x82ff, 0x090c, 0x0d7e, -+ 0x6a0a, 0x2205, 0x6812, 0x0c18, 0x903e, 0x2730, 0x6880, 0xd0fc, -+ 0x11a8, 0x00d6, 0x2805, 0x9c68, 0x2900, 0x0002, 0x14c6, 0x14ac, -+ 0x14ac, 0x14c6, 0x14c6, 0x14c0, 0x14c6, 0x14ac, 0x14c6, 0x14b1, -+ 0x14b1, 0x14c6, 0x14c6, 0x14c6, 0x14b8, 0x14b1, 0xc0fc, 0x6882, -+ 0x6b2c, 0x6a30, 0x6d1c, 0x6c20, 0x00d6, 0xd99c, 0x0510, 0x2805, -+ 0x9c68, 0x6f08, 0x6e0c, 0x00e8, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, -+ 0x00c0, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0088, -+ 0x00de, 0x00d6, 0x6864, 0x9084, 0x00ff, 0x9086, 0x001e, 0x1130, -+ 0x00de, 0x080c, 0x18be, 0x1900, 0x900e, 0x0060, 0x00de, 0x080c, -+ 0x0d7e, 0x00de, 0x6b2e, 0x6a32, 0x6d1e, 0x6c22, 0x6f26, 0x6e2a, -+ 0x080c, 0x18be, 0x0005, 0x2001, 0x020b, 0x2004, 0xd0e4, 0x0110, -+ 0xd0d4, 0x1180, 0x6014, 0x9080, 0x0021, 0x6118, 0x810c, 0x810c, -+ 0x810c, 0x81ff, 0x1118, 0x2003, 0x0001, 0x0008, 0x2102, 0x601b, -+ 0x0002, 0x0005, 0x0126, 0x00c6, 0x2091, 0x2200, 0x00ce, 0x2001, -+ 0x0037, 0x2c08, 0x080c, 0x130c, 0x7808, 0xd09c, 0x0140, 0x0016, -+ 0x0026, 0x00c6, 0x080c, 0x1125, 0x00ce, 0x002e, 0x001e, 0x6000, -+ 0x9086, 0x0004, 0x1120, 0x2009, 0x0048, 0x080c, 0x8f53, 0x012e, -+ 0x0005, 0x0126, 0x00c6, 0x2091, 0x2200, 0x00ce, 0x7908, 0x918c, -+ 0x0007, 0x9186, 0x0000, 0x0904, 0x156c, 0x9186, 0x0003, 0x0904, -+ 0x156c, 0x6020, 0x6023, 0x0000, 0x0006, 0x2031, 0x0190, 0x00c6, -+ 0x7808, 0xd09c, 0x190c, 0x1125, 0x00ce, 0x2001, 0x0038, 0x2c08, -+ 0x621c, 0x080c, 0x130c, 0x7930, 0x9186, 0x0040, 0x05c8, 0x9186, -+ 0x0042, 0x190c, 0x0d7e, 0x2001, 0x001e, 0x8001, 0x1df0, 0x8631, -+ 0x1d30, 0x080c, 0x15c6, 0x0026, 0x0056, 0x2001, 0x00d2, 0x8001, -+ 0x1df0, 0x2031, 0x2000, 0x8631, 0x1138, 0x0489, 0x601c, 0xc084, -+ 0x601e, 0x005e, 0x002e, 0x00e0, 0x2001, 0x020b, 0x2004, 0xd0e4, -+ 0x0d90, 0x2001, 0x015d, 0x2003, 0x0000, 0x78ab, 0x0004, 0x080c, -+ 0x10f3, 0x601c, 0xc084, 0x601e, 0x7803, 0x0000, 0x7803, 0x0001, -+ 0x005e, 0x002e, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, -+ 0x000e, 0x6022, 0x012e, 0x0005, 0x601c, 0xc084, 0x601e, 0x7827, -+ 0x0015, 0x7828, 0x9c06, 0x1db0, 0x782b, 0x0000, 0x0c98, 0x00f6, -+ 0x2079, 0x0300, 0x7803, 0x0000, 0x78ab, 0x0004, 0x00fe, 0x080c, -+ 0x62e4, 0x11b0, 0x2001, 0x0138, 0x2003, 0x0000, 0x2001, 0x0160, -+ 0x2003, 0x0000, 0x2011, 0x012c, 0xa001, 0xa001, 0x8211, 0x1de0, -+ 0x0081, 0x0066, 0x2031, 0x0000, 0x080c, 0x6380, 0x006e, 0x0005, -+ 0x0469, 0x0039, 0x2001, 0x0160, 0x2502, 0x2001, 0x0138, 0x2202, -+ 0x0005, 0x00e6, 0x2071, 0x0200, 0x080c, 0x235b, 0x2009, 0x003c, -+ 0x080c, 0x1b67, 0x2001, 0x015d, 0x2003, 0x0000, 0x7000, 0x9084, -+ 0x003c, 0x1de0, 0x70a0, 0x70a2, 0x7098, 0x709a, 0x709c, 0x709e, -+ 0x2001, 0x020d, 0x2003, 0x0020, 0x00f6, 0x2079, 0x0300, 0x080c, -+ 0x10f3, 0x7803, 0x0001, 0x00fe, 0x00ee, 0x0005, 0x2001, 0x0138, -+ 0x2014, 0x2003, 0x0000, 0x2001, 0x0160, 0x202c, 0x2003, 0x0000, -+ 0x080c, 0x62e4, 0x1108, 0x0005, 0x2021, 0x0260, 0x2001, 0x0141, -+ 0x201c, 0xd3dc, 0x1168, 0x2001, 0x0109, 0x201c, 0x939c, 0x0048, -+ 0x1160, 0x2001, 0x0111, 0x201c, 0x83ff, 0x1110, 0x8421, 0x1d70, -+ 0x2001, 0x015d, 0x2003, 0x0000, 0x0005, 0x0046, 0x2021, 0x0019, -+ 0x2003, 0x0048, 0xa001, 0xa001, 0x201c, 0x939c, 0x0048, 0x0120, -+ 0x8421, 0x1db0, 0x004e, 0x0c60, 0x004e, 0x0c40, 0x00e6, 0x2071, -+ 0x134a, 0x7003, 0x0000, 0x00ee, 0x0005, 0x00d6, 0x9280, 0x0005, -+ 0x206c, 0x697c, 0xd1dc, 0x1904, 0x167b, 0x6964, 0x9184, 0x0007, -+ 0x0002, 0x1619, 0x1666, 0x1619, 0x1619, 0x1619, 0x164d, 0x162c, -+ 0x161b, 0x080c, 0x0d7e, 0x687c, 0xd0b4, 0x0904, 0x176d, 0x6890, -+ 0x6842, 0x683a, 0x688c, 0x683e, 0x6836, 0x68ac, 0x6846, 0x68b0, -+ 0x684a, 0x6988, 0x0804, 0x166e, 0x6864, 0x9084, 0x00ff, 0x9086, -+ 0x001e, 0x1d38, 0x687c, 0xd0b4, 0x0904, 0x176d, 0x6890, 0x6842, -+ 0x683a, 0x688c, 0x683e, 0x6836, 0x68ac, 0x6846, 0x68b0, 0x684a, -+ 0x6804, 0x685a, 0x9080, 0x0019, 0x2004, 0x9084, 0x000f, 0x9080, -+ 0x18fe, 0x2005, 0x6812, 0x6988, 0x0450, 0x918c, 0x00ff, 0x9186, -+ 0x0015, 0x1548, 0x687c, 0xd0b4, 0x0904, 0x176d, 0x6804, 0x685a, -+ 0x9080, 0x0019, 0x2004, 0x9084, 0x000f, 0x9080, 0x18fe, 0x2005, -+ 0x6812, 0x6988, 0x9006, 0x6842, 0x683e, 0x0088, 0x687c, 0xd0b4, -+ 0x0904, 0x176d, 0x6988, 0x9006, 0x6842, 0x683e, 0x2d00, 0x685a, -+ 0x6864, 0x9084, 0x000f, 0x9080, 0x18fe, 0x2005, 0x6812, 0x6916, -+ 0x687c, 0xc0dd, 0x687e, 0x00de, 0x0005, 0x00f6, 0x2079, 0x0090, -+ 0x782c, 0xd0fc, 0x190c, 0x17b0, 0x00e6, 0x00d6, 0x2071, 0x134a, -+ 0x7000, 0x9005, 0x1904, 0x16de, 0x00c6, 0x7206, 0x9280, 0x0005, -+ 0x205c, 0x7004, 0x2068, 0x782b, 0x0004, 0x2001, 0x0200, 0x2003, -+ 0x0040, 0x6810, 0x00d6, 0x2068, 0x686c, 0x7836, 0x6890, 0x00f6, -+ 0x2079, 0x0200, 0x7803, 0x0040, 0xa001, 0xa001, 0xa001, 0xa001, -+ 0xa001, 0xa001, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x00fe, -+ 0x00de, 0x2b68, 0x6814, 0x2050, 0x6858, 0x2060, 0x6810, 0x2040, -+ 0x6064, 0x90cc, 0x000f, 0x6944, 0x791a, 0x7116, 0x6848, 0x781e, -+ 0x701a, 0x9006, 0x700e, 0x7012, 0x7004, 0x6940, 0x6838, 0x9106, -+ 0x11c8, 0x693c, 0x6834, 0x9106, 0x11a8, 0x8aff, 0x01f0, 0x0126, -+ 0x2091, 0x8000, 0x2079, 0x0090, 0x2009, 0x0001, 0x00d1, 0x0118, -+ 0x2009, 0x0001, 0x00b1, 0x012e, 0x00ce, 0x9006, 0x00de, 0x00ee, -+ 0x00fe, 0x0005, 0x0036, 0x0046, 0x6b38, 0x6c34, 0x080c, 0x191e, -+ 0x004e, 0x003e, 0x0d10, 0x00ce, 0x0c88, 0x00ce, 0x9085, 0x0001, -+ 0x0c68, 0x0076, 0x0066, 0x0056, 0x0046, 0x0036, 0x0026, 0x8aff, -+ 0x0904, 0x1766, 0x700c, 0x7214, 0x923a, 0x7010, 0x7218, 0x9203, -+ 0x0a04, 0x1765, 0x9705, 0x0904, 0x1765, 0x903e, 0x2730, 0x6880, -+ 0xd0fc, 0x11a8, 0x00d6, 0x2805, 0x9c68, 0x2900, 0x0002, 0x1748, -+ 0x172d, 0x172d, 0x1748, 0x1748, 0x1741, 0x1748, 0x172d, 0x1748, -+ 0x1732, 0x1732, 0x1748, 0x1748, 0x1748, 0x1739, 0x1732, 0xc0fc, -+ 0x6882, 0x6b2c, 0x6a30, 0x6d1c, 0x6c20, 0xd99c, 0x0528, 0x00d6, -+ 0x2805, 0x9c68, 0x6f08, 0x6e0c, 0x00f0, 0x6b08, 0x6a0c, 0x6d00, -+ 0x6c04, 0x00c8, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, -+ 0x0090, 0x00de, 0x00d6, 0x6864, 0x9084, 0x00ff, 0x9086, 0x001e, -+ 0x1138, 0x00de, 0x080c, 0x18be, 0x1904, 0x16f7, 0x900e, 0x00f0, -+ 0x00de, 0x080c, 0x0d7e, 0x00de, 0x7b12, 0x7a16, 0x7d02, 0x7c06, -+ 0x7f0a, 0x7e0e, 0x792a, 0x7000, 0x8000, 0x7002, 0x683c, 0x9300, -+ 0x683e, 0x6840, 0x9201, 0x6842, 0x700c, 0x9300, 0x700e, 0x7010, -+ 0x9201, 0x7012, 0x080c, 0x18be, 0x0008, 0x9006, 0x002e, 0x003e, -+ 0x004e, 0x005e, 0x006e, 0x007e, 0x0005, 0x080c, 0x0d7e, 0x0026, -+ 0x2001, 0x0105, 0x2003, 0x0010, 0x782b, 0x0004, 0x7003, 0x0000, -+ 0x7004, 0x2060, 0x00d6, 0x6014, 0x2068, 0x080c, 0xa942, 0x0118, -+ 0x6880, 0xc0bd, 0x6882, 0x6020, 0x9086, 0x0006, 0x1180, 0x2061, -+ 0x0100, 0x62c8, 0x2001, 0x00fa, 0x8001, 0x1df0, 0x60c8, 0x9206, -+ 0x1dc0, 0x60c4, 0x689a, 0x60c8, 0x6896, 0x7004, 0x2060, 0x00de, -+ 0x00c6, 0x080c, 0xa5f3, 0x00ce, 0x2001, 0x1313, 0x2004, 0x9c06, -+ 0x1160, 0x2009, 0x0040, 0x080c, 0x1b67, 0x080c, 0x8a8d, 0x2011, -+ 0x0000, 0x080c, 0x88ec, 0x080c, 0x7b72, 0x002e, 0x0804, 0x186a, -+ 0x0126, 0x2091, 0x2400, 0x0006, 0x0016, 0x00f6, 0x00e6, 0x00d6, -+ 0x00c6, 0x2079, 0x0090, 0x2071, 0x134a, 0x2b68, 0x6858, 0x2060, -+ 0x792c, 0x782b, 0x0002, 0x9184, 0x0700, 0x1904, 0x176f, 0x7000, -+ 0x0002, 0x186a, 0x17cd, 0x183d, 0x1868, 0x8001, 0x7002, 0xd19c, -+ 0x1170, 0x8aff, 0x05d0, 0x2009, 0x0001, 0x080c, 0x16f1, 0x0904, -+ 0x186a, 0x2009, 0x0001, 0x080c, 0x16f1, 0x0804, 0x186a, 0x782b, -+ 0x0004, 0xd194, 0x0148, 0x6880, 0xc0fc, 0x6882, 0x8aff, 0x11d8, -+ 0x687c, 0xc0f5, 0x687e, 0x00b8, 0x0026, 0x0036, 0x6b3c, 0x6a40, -+ 0x7810, 0x682e, 0x931a, 0x7814, 0x6832, 0x9213, 0x7800, 0x681e, -+ 0x7804, 0x6822, 0x6b3e, 0x6a42, 0x003e, 0x002e, 0x080c, 0x18d6, -+ 0x6880, 0xc0fd, 0x6882, 0x2a00, 0x6816, 0x2c00, 0x685a, 0x2800, -+ 0x6812, 0x7003, 0x0000, 0x0804, 0x186a, 0x00f6, 0x0026, 0x781c, -+ 0x0006, 0x7818, 0x0006, 0x2079, 0x0100, 0x7a14, 0x9284, 0x1984, -+ 0x9085, 0x0012, 0x7816, 0x0036, 0x2019, 0x1000, 0x8319, 0x090c, -+ 0x0d7e, 0x7820, 0xd0bc, 0x1dd0, 0x003e, 0x79c8, 0x000e, 0x9102, -+ 0x001e, 0x0006, 0x0016, 0x79c4, 0x000e, 0x9103, 0x78c6, 0x000e, -+ 0x78ca, 0x9284, 0x1984, 0x9085, 0x0012, 0x7816, 0x002e, 0x00fe, -+ 0x782b, 0x0008, 0x7003, 0x0000, 0x0468, 0x8001, 0x7002, 0xd194, -+ 0x0168, 0x782c, 0xd0fc, 0x1904, 0x17c0, 0xd19c, 0x11f8, 0x8aff, -+ 0x0508, 0x2009, 0x0001, 0x080c, 0x16f1, 0x00e0, 0x0026, 0x0036, -+ 0x6b3c, 0x6a40, 0x080c, 0x18d6, 0x00d6, 0x2805, 0x9c68, 0x6064, -+ 0xd09c, 0x1128, 0x6808, 0x931a, 0x680c, 0x9213, 0x0020, 0x6810, -+ 0x931a, 0x6814, 0x9213, 0x00de, 0x0804, 0x17f0, 0x0804, 0x17ec, -+ 0x080c, 0x0d7e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x001e, 0x000e, -+ 0x012e, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x134a, 0x7000, 0x9086, -+ 0x0000, 0x0904, 0x18bb, 0x2079, 0x0090, 0x2009, 0x0207, 0x210c, -+ 0xd194, 0x01b8, 0x2009, 0x020c, 0x210c, 0x9184, 0x0003, 0x0188, -+ 0x080c, 0xc46f, 0x2001, 0x0133, 0x2004, 0x9005, 0x090c, 0x0d7e, -+ 0x0016, 0x2009, 0x0040, 0x080c, 0x1b67, 0x001e, 0x2001, 0x020c, -+ 0x2102, 0x2009, 0x0206, 0x2104, 0x2009, 0x0203, 0x210c, 0x9106, -+ 0x1120, 0x2009, 0x0040, 0x080c, 0x1b67, 0x782c, 0xd0fc, 0x09a8, -+ 0x080c, 0x17b0, 0x7000, 0x9086, 0x0000, 0x1978, 0x782b, 0x0004, -+ 0x782c, 0xd0ac, 0x1de8, 0x2009, 0x0040, 0x080c, 0x1b67, 0x782b, -+ 0x0002, 0x7003, 0x0000, 0x00ee, 0x00fe, 0x0005, 0x8840, 0x2805, -+ 0x9005, 0x0110, 0x8a51, 0x0005, 0x6004, 0x9005, 0x0168, 0x685a, -+ 0x2060, 0x6064, 0x9084, 0x000f, 0x9080, 0x18fe, 0x2045, 0x88ff, -+ 0x090c, 0x0d7e, 0x8a51, 0x0005, 0x2050, 0x0005, 0x8a50, 0x8841, -+ 0x2805, 0x9005, 0x1190, 0x2c00, 0x9d06, 0x0120, 0x6000, 0x9005, -+ 0x1108, 0x2d00, 0x2060, 0x685a, 0x6064, 0x9084, 0x000f, 0x9080, -+ 0x190e, 0x2045, 0x88ff, 0x090c, 0x0d7e, 0x0005, 0x0000, 0x001d, -+ 0x0021, 0x0025, 0x0029, 0x002d, 0x0031, 0x0035, 0x0000, 0x001b, -+ 0x0021, 0x0027, 0x002d, 0x0033, 0x0000, 0x0000, 0x0000, 0x18f3, -+ 0x18ef, 0x0000, 0x0000, 0x18fd, 0x0000, 0x18f3, 0x0000, 0x18fa, -+ 0x18f7, 0x0000, 0x0000, 0x0000, 0x18fd, 0x18fa, 0x0000, 0x18f5, -+ 0x18f5, 0x0000, 0x0000, 0x18fd, 0x0000, 0x18f5, 0x0000, 0x18fb, -+ 0x18fb, 0x0000, 0x0000, 0x0000, 0x18fd, 0x18fb, 0x00a6, 0x0096, -+ 0x0086, 0x6b42, 0x6c3e, 0x6888, 0x9055, 0x0904, 0x19af, 0x2d60, -+ 0x6064, 0x90cc, 0x000f, 0x99c0, 0x18fe, 0x9986, 0x0007, 0x0130, -+ 0x9986, 0x000e, 0x0118, 0x9986, 0x000f, 0x1120, 0x608c, 0x9422, -+ 0x6090, 0x931b, 0x2805, 0x9045, 0x1140, 0x0310, 0x0804, 0x19af, -+ 0x6004, 0x9065, 0x0904, 0x19af, 0x0c18, 0x2805, 0x9005, 0x01a8, -+ 0x9c68, 0xd99c, 0x1128, 0x6808, 0x9422, 0x680c, 0x931b, 0x0020, -+ 0x6810, 0x9422, 0x6814, 0x931b, 0x0620, 0x2300, 0x9405, 0x0150, -+ 0x8a51, 0x0904, 0x19af, 0x8840, 0x0c40, 0x6004, 0x9065, 0x0904, -+ 0x19af, 0x0830, 0x8a51, 0x0904, 0x19af, 0x8840, 0x2805, 0x9005, -+ 0x1158, 0x6004, 0x9065, 0x0904, 0x19af, 0x6064, 0x90cc, 0x000f, -+ 0x99c0, 0x18fe, 0x2805, 0x2040, 0x2b68, 0x6880, 0xc0fc, 0x6882, -+ 0x0458, 0x8422, 0x8420, 0x831a, 0x9399, 0x0000, 0x00d6, 0x2b68, -+ 0x6c2e, 0x6b32, 0x00de, 0xd99c, 0x1168, 0x6908, 0x2400, 0x9122, -+ 0x690c, 0x2300, 0x911b, 0x0a0c, 0x0d7e, 0x6800, 0x9420, 0x6804, -+ 0x9319, 0x0060, 0x6910, 0x2400, 0x9122, 0x6914, 0x2300, 0x911b, -+ 0x0a0c, 0x0d7e, 0x6800, 0x9420, 0x6804, 0x9319, 0x2b68, 0x6c1e, -+ 0x6b22, 0x6880, 0xc0fd, 0x6882, 0x2c00, 0x685a, 0x2800, 0x6812, -+ 0x2a00, 0x6816, 0x000e, 0x000e, 0x000e, 0x9006, 0x0028, 0x008e, -+ 0x009e, 0x00ae, 0x9085, 0x0001, 0x0005, 0x2008, 0x9026, 0x2410, -+ 0x780f, 0x0000, 0x7810, 0x9420, 0x9291, 0x0000, 0x7814, 0x9210, -+ 0x8109, 0x1dc0, 0x9284, 0x000f, 0x9405, 0x0005, 0x2001, 0x0005, -+ 0x2004, 0x9084, 0x0007, 0x0002, 0x19de, 0x17b0, 0x19de, 0x19d4, -+ 0x19d7, 0x19da, 0x19d7, 0x19da, 0x080c, 0x17b0, 0x0005, 0x080c, -+ 0x0fd5, 0x0005, 0x080c, 0x17b0, 0x080c, 0x0fd5, 0x0005, 0x0126, -+ 0x2091, 0x2600, 0x2079, 0x0200, 0x2071, 0x0260, 0x2069, 0x1100, -+ 0x7817, 0x0000, 0x789b, 0x0814, 0x78a3, 0x0406, 0x789f, 0x0410, -+ 0x2009, 0x013b, 0x200b, 0x0400, 0x781b, 0x0002, 0x783b, 0x001f, -+ 0x7837, 0x0020, 0x7803, 0x1600, 0x012e, 0x0005, 0x2091, 0x2600, -+ 0x781c, 0xd0a4, 0x190c, 0x1b64, 0x7900, 0xd1dc, 0x1118, 0x9084, -+ 0x0006, 0x001a, 0x9084, 0x000e, 0x0002, 0x1a27, 0x1a1d, 0x6bd6, -+ 0x1a1f, 0x1a21, 0x1a21, 0x1a21, 0x1a21, 0x6bba, 0x1a1d, 0x1a23, -+ 0x1a1d, 0x1a21, 0x1a1d, 0x1a21, 0x1a1d, 0x080c, 0x0d7e, 0x080c, -+ 0x0d7e, 0x0031, 0x0020, 0x080c, 0x6bba, 0x080c, 0x6bd6, 0x0005, -+ 0x0006, 0x0016, 0x0026, 0x080c, 0xc46f, 0x7930, 0x9184, 0x0003, -+ 0x01c0, 0x2001, 0x1313, 0x2004, 0x9005, 0x0170, 0x2001, 0x0133, -+ 0x2004, 0x9005, 0x090c, 0x0d7e, 0x00c6, 0x2001, 0x1313, 0x2064, -+ 0x080c, 0xa5f3, 0x00ce, 0x0460, 0x2009, 0x0040, 0x080c, 0x1b67, -+ 0x0438, 0x9184, 0x0014, 0x01b0, 0x6a00, 0x9286, 0x0003, 0x0180, -+ 0x080c, 0x62e4, 0x1158, 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, -+ 0x1100, 0x2003, 0x0001, 0x080c, 0x621a, 0x0010, 0x080c, 0x4faa, -+ 0x0099, 0x0070, 0x9184, 0x1400, 0x0110, 0x0071, 0x0048, 0x9184, -+ 0x0140, 0x0110, 0x0049, 0x0020, 0x9184, 0x8000, 0x0108, 0x0021, -+ 0x002e, 0x001e, 0x000e, 0x0005, 0x00e6, 0x0036, 0x0046, 0x0056, -+ 0x2071, 0x1347, 0x080c, 0x1577, 0x005e, 0x004e, 0x003e, 0x00ee, -+ 0x0005, 0x0126, 0x2091, 0x2e00, 0x2071, 0x1100, 0x7128, 0x2001, -+ 0x129a, 0x2102, 0x2001, 0x12a2, 0x2102, 0x2001, 0x013b, 0x2102, -+ 0x2079, 0x0200, 0x9198, 0x0007, 0x831c, 0x831c, 0x831c, 0x2320, -+ 0x9182, 0x0224, 0x1228, 0x2011, 0x0004, 0x8423, 0x8423, 0x0088, -+ 0x9182, 0x02d4, 0x1228, 0x2011, 0x0003, 0x8403, 0x9420, 0x0048, -+ 0x9182, 0x0444, 0x1220, 0x2011, 0x0002, 0x8423, 0x0010, 0x2011, -+ 0x0001, 0x9482, 0x0110, 0x8002, 0x8020, 0x8301, 0x9402, 0x0110, -+ 0x0208, 0x8321, 0x8217, 0x8203, 0x9405, 0x2001, 0x0201, 0x789e, -+ 0x9198, 0x0007, 0x831c, 0x831c, 0x831c, 0x9398, 0x0003, 0x2320, -+ 0x9182, 0x0204, 0x1228, 0x2011, 0x0004, 0x8423, 0x8423, 0x0088, -+ 0x9182, 0x02b4, 0x1228, 0x2011, 0x0003, 0x8403, 0x9420, 0x0048, -+ 0x9182, 0x041c, 0x1220, 0x2011, 0x0002, 0x8423, 0x0010, 0x2011, -+ 0x0001, 0x9482, 0x010c, 0x8002, 0x8020, 0x8301, 0x9402, 0x0110, -+ 0x0208, 0x8321, 0x8217, 0x8203, 0x9405, 0x78a3, 0x0200, 0x9198, -+ 0x0007, 0x831c, 0x831c, 0x831c, 0x9398, 0x0005, 0x2320, 0x9182, -+ 0x0204, 0x1230, 0x2011, 0x0008, 0x8423, 0x8423, 0x8423, 0x0488, -+ 0x9182, 0x024c, 0x1240, 0x2011, 0x0007, 0x8403, 0x8003, 0x9400, -+ 0x9400, 0x9420, 0x0430, 0x9182, 0x02bc, 0x1238, 0x2011, 0x0006, -+ 0x8403, 0x8003, 0x9400, 0x9420, 0x00e0, 0x9182, 0x034c, 0x1230, -+ 0x2011, 0x0005, 0x8403, 0x8003, 0x9420, 0x0098, 0x9182, 0x042c, -+ 0x1228, 0x2011, 0x0004, 0x8423, 0x8423, 0x0058, 0x9182, 0x059c, -+ 0x1228, 0x2011, 0x0003, 0x8403, 0x9420, 0x0018, 0x2011, 0x0002, -+ 0x8423, 0x9482, 0x0228, 0x8002, 0x8020, 0x8301, 0x9402, 0x0110, -+ 0x0208, 0x8321, 0x8217, 0x8203, 0x9405, 0x789a, 0x012e, 0x0005, -+ 0x0006, 0x00d6, 0x2069, 0x0200, 0x6814, 0x9084, 0xffc0, 0x910d, -+ 0x6916, 0x00de, 0x000e, 0x0005, 0x00d6, 0x2069, 0x0200, 0x9005, -+ 0x6810, 0x0110, 0xc0a5, 0x0008, 0xc0a4, 0x6812, 0x00de, 0x0005, -+ 0x0006, 0x00d6, 0x2069, 0x0200, 0x6810, 0x9084, 0xfff8, 0x910d, -+ 0x6912, 0x00de, 0x000e, 0x0005, 0x7938, 0x080c, 0x0d7e, 0x00f6, -+ 0x2079, 0x0200, 0x7902, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, -+ 0xa001, 0x7902, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, -+ 0x00fe, 0x0005, 0x0126, 0x2091, 0x2800, 0x2061, 0x0100, 0x2071, -+ 0x1100, 0x2009, 0x0000, 0x080c, 0x2355, 0x080c, 0x2261, 0x6054, -+ 0x8004, 0x8004, 0x8004, 0x8004, 0x9084, 0x000c, 0x6150, 0x918c, -+ 0xfff3, 0x9105, 0x6052, 0x6050, 0x9084, 0xfbff, 0x9085, 0x2000, -+ 0x6052, 0x2009, 0x12d7, 0x2011, 0x12d8, 0x6358, 0x939c, 0x38f0, -+ 0x2320, 0x080c, 0x22a5, 0x1238, 0x939d, 0x4003, 0x94a5, 0x8603, -+ 0x230a, 0x2412, 0x0030, 0x939d, 0x0203, 0x94a5, 0x8603, 0x230a, -+ 0x2412, 0x9006, 0x080c, 0x2290, 0x9006, 0x080c, 0x2273, 0x20a9, -+ 0x0012, 0x1d04, 0x1bb9, 0x2091, 0x6000, 0x1f04, 0x1bb9, 0x602f, -+ 0x0100, 0x602f, 0x0000, 0x6050, 0x9085, 0x0400, 0x9084, 0xdfff, -+ 0x6052, 0x6024, 0x6026, 0x080c, 0x1f7d, 0x2009, 0x00ef, 0x6132, -+ 0x6136, 0x080c, 0x1f8d, 0x60e7, 0x0000, 0x61ea, 0x60e3, 0x0008, -+ 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, -+ 0x6007, 0x049f, 0x60bb, 0x0000, 0x20a9, 0x0018, 0x60bf, 0x0000, -+ 0x1f04, 0x1be6, 0x60bb, 0x0000, 0x60bf, 0x0108, 0x60bf, 0x0012, -+ 0x60bf, 0x0320, 0x60bf, 0x0018, 0x601b, 0x00f0, 0x601f, 0x001e, -+ 0x600f, 0x006b, 0x602b, 0x402f, 0x012e, 0x0005, 0x00f6, 0x2079, -+ 0x0140, 0x78c3, 0x0080, 0x78c3, 0x0083, 0x78c3, 0x0000, 0x00fe, -+ 0x0005, 0x2001, 0x1134, 0x2003, 0x0000, 0x2001, 0x1133, 0x2003, -+ 0x0001, 0x0005, 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, -+ 0x6124, 0x9184, 0x5e2c, 0x1118, 0x9184, 0x0007, 0x002a, 0x9195, -+ 0x0004, 0x9284, 0x0007, 0x0002, 0x1c46, 0x1c2c, 0x1c2f, 0x1c32, -+ 0x1c37, 0x1c39, 0x1c3d, 0x1c41, 0x080c, 0x745c, 0x00b8, 0x080c, -+ 0x752d, 0x00a0, 0x080c, 0x752d, 0x080c, 0x745c, 0x0078, 0x0099, -+ 0x0068, 0x080c, 0x745c, 0x0079, 0x0048, 0x080c, 0x752d, 0x0059, -+ 0x0028, 0x080c, 0x752d, 0x080c, 0x745c, 0x0029, 0x002e, 0x001e, -+ 0x000e, 0x012e, 0x0005, 0x6124, 0x6028, 0xd09c, 0x0118, 0xd19c, -+ 0x1904, 0x1e92, 0xd1f4, 0x0110, 0x080c, 0x0d7e, 0x080c, 0x62e4, -+ 0x05d0, 0x7000, 0x9086, 0x0003, 0x01f0, 0x6024, 0x9084, 0x1800, -+ 0x01d0, 0x080c, 0x630a, 0x0118, 0x080c, 0x62f6, 0x11a0, 0x6027, -+ 0x0020, 0x6043, 0x0000, 0x709c, 0x9005, 0x1140, 0x709f, 0x0001, -+ 0x00d6, 0x2069, 0x0140, 0x080c, 0x633e, 0x00de, 0x2001, 0x12a7, -+ 0x2003, 0xaaaa, 0x0458, 0x080c, 0x630a, 0x15d0, 0x6024, 0x9084, -+ 0x1800, 0x1108, 0x04a8, 0x2001, 0x12a7, 0x2003, 0xaaaa, 0x2001, -+ 0x12a8, 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, 0x0001, 0x080c, -+ 0x621a, 0x0804, 0x1e92, 0xd1ac, 0x1518, 0x6024, 0xd0dc, 0x1170, -+ 0xd0e4, 0x1188, 0xd0d4, 0x11a0, 0xd0cc, 0x0130, 0x7090, 0x9086, -+ 0x0028, 0x1110, 0x080c, 0x6492, 0x0804, 0x1e92, 0x2001, 0x12a8, -+ 0x2003, 0x0000, 0x0048, 0x2001, 0x12a8, 0x2003, 0x0002, 0x0020, -+ 0x080c, 0x6404, 0x0804, 0x1e92, 0x080c, 0x6531, 0x0804, 0x1e92, -+ 0xd1ac, 0x0904, 0x1db5, 0x080c, 0x62e4, 0x11d8, 0x6027, 0x0020, -+ 0x0006, 0x0026, 0x0036, 0x080c, 0x6300, 0x1170, 0x2001, 0x12a8, -+ 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, 0x0001, 0x080c, 0x621a, -+ 0x003e, 0x002e, 0x000e, 0x0005, 0x003e, 0x002e, 0x000e, 0x080c, -+ 0x62be, 0x0016, 0x0046, 0x00c6, 0x644c, 0x9486, 0xf0f0, 0x1138, -+ 0x2061, 0x0100, 0x644a, 0x6043, 0x0090, 0x6043, 0x0010, 0x74d6, -+ 0x948c, 0xff00, 0x7034, 0xd084, 0x0178, 0x9186, 0xf800, 0x1160, -+ 0x7040, 0xd084, 0x1148, 0xc085, 0x7042, 0x0036, 0x2418, 0x2011, -+ 0x8016, 0x080c, 0x3f23, 0x003e, 0x9196, 0xff00, 0x05a8, 0x7058, -+ 0x9084, 0x00ff, 0x810f, 0x81ff, 0x0110, 0x9116, 0x0568, 0x7130, -+ 0xd184, 0x1550, 0x080c, 0x2987, 0x0128, 0xc18d, 0x7132, 0x080c, -+ 0x58c6, 0x1510, 0x6240, 0x9294, 0x0010, 0x0130, 0x6248, 0x9294, -+ 0xff00, 0x9296, 0xff00, 0x01c0, 0x7030, 0xd08c, 0x0904, 0x1d83, -+ 0x7034, 0xd08c, 0x1140, 0x2001, 0x110c, 0x200c, 0xd1ac, 0x1904, -+ 0x1d83, 0xc1ad, 0x2102, 0x0036, 0x73d4, 0x2011, 0x8013, 0x080c, -+ 0x3f23, 0x003e, 0x0804, 0x1d83, 0x7034, 0xd08c, 0x1140, 0x2001, -+ 0x110c, 0x200c, 0xd1ac, 0x1904, 0x1d83, 0xc1ad, 0x2102, 0x0036, -+ 0x73d4, 0x2011, 0x8013, 0x080c, 0x3f23, 0x003e, 0x7130, 0xc185, -+ 0x7132, 0x2011, 0x1153, 0x220c, 0xd1a4, 0x01f0, 0x0016, 0x2009, -+ 0x0001, 0x2011, 0x0100, 0x080c, 0x73af, 0x2019, 0x000e, 0x00c6, -+ 0x2061, 0x0000, 0x080c, 0xc0b9, 0x00ce, 0x9484, 0x00ff, 0x9080, -+ 0x298c, 0x200d, 0x918c, 0xff00, 0x810f, 0x8127, 0x9006, 0x2009, -+ 0x000e, 0x080c, 0xc12f, 0x001e, 0xd1ac, 0x1140, 0x0016, 0x900e, -+ 0x2019, 0x0004, 0x080c, 0x2831, 0x001e, 0x0068, 0x0156, 0x20a9, -+ 0x007f, 0x900e, 0x080c, 0x5608, 0x1110, 0x080c, 0x5100, 0x8108, -+ 0x1f04, 0x1d7a, 0x015e, 0x00ce, 0x004e, 0x2011, 0x0003, 0x080c, -+ 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, 0x080c, 0x87a2, 0x0036, -+ 0x901e, 0x080c, 0x8847, 0x003e, 0x60e3, 0x0000, 0x001e, 0x2001, -+ 0x1100, 0x2014, 0x9296, 0x0004, 0x1170, 0xd19c, 0x11b0, 0x2011, -+ 0x110c, 0x2214, 0xd29c, 0x1120, 0x6204, 0x9295, 0x0002, 0x6206, -+ 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0x1124, 0x2003, -+ 0x0000, 0x080c, 0x483b, 0x6027, 0x0020, 0xd194, 0x0904, 0x1e92, -+ 0x0016, 0x6220, 0xd2b4, 0x0904, 0x1e3e, 0x080c, 0x7271, 0x080c, -+ 0x85a2, 0x6027, 0x0004, 0x00f6, 0x2019, 0x130d, 0x2304, 0x907d, -+ 0x0904, 0x1e0f, 0x7804, 0x9086, 0x0032, 0x1904, 0x1e0f, 0x00d6, -+ 0x00c6, 0x00e6, 0x2069, 0x0140, 0x7810, 0x685e, 0x7808, 0x685a, -+ 0x6043, 0x0002, 0x2001, 0x0003, 0x8001, 0x1df0, 0x6043, 0x0000, -+ 0x2001, 0x003c, 0x8001, 0x1df0, 0x2001, 0x1000, 0x080c, 0x2401, -+ 0x9006, 0x080c, 0x2401, 0x2001, 0x001e, 0x8001, 0x0240, 0x20a9, -+ 0x0009, 0x080c, 0x2321, 0x6904, 0xd1dc, 0x1140, 0x0cb0, 0x2001, -+ 0x0100, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, 0x080c, 0x79ab, -+ 0x080c, 0x7aa4, 0x7814, 0x2070, 0x7067, 0x0103, 0x2f60, 0x080c, -+ 0x8ed9, 0x00ee, 0x00ce, 0x00de, 0x00fe, 0x001e, 0x0005, 0x00fe, -+ 0x00d6, 0x2069, 0x0140, 0x6804, 0x9084, 0x4000, 0x0138, 0x2001, -+ 0x1000, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, 0x00de, 0x00c6, -+ 0x2061, 0x1304, 0x6028, 0x909a, 0x00c8, 0x1238, 0x8000, 0x602a, -+ 0x00ce, 0x080c, 0x857e, 0x0804, 0x1e91, 0x2061, 0x0100, 0x62c0, -+ 0x080c, 0x8dc7, 0x2019, 0x130d, 0x2304, 0x9065, 0x0120, 0x2009, -+ 0x0027, 0x080c, 0x8f53, 0x00ce, 0x0804, 0x1e91, 0xd2bc, 0x05f0, -+ 0x080c, 0x727e, 0x6014, 0x9084, 0x1984, 0x9085, 0x0010, 0x6016, -+ 0x6027, 0x0004, 0x00d6, 0x2069, 0x0140, 0x6804, 0x9084, 0x4000, -+ 0x0138, 0x2001, 0x1000, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, -+ 0x00de, 0x00c6, 0x2061, 0x1304, 0x6044, 0x909a, 0x00c8, 0x1608, -+ 0x8000, 0x6046, 0x603c, 0x00ce, 0x9005, 0x0558, 0x2009, 0x07d0, -+ 0x080c, 0x7276, 0x9080, 0x0008, 0x2004, 0x9086, 0x0006, 0x1138, -+ 0x6114, 0x918c, 0x1984, 0x918d, 0x0012, 0x6116, 0x00d0, 0x6114, -+ 0x918c, 0x1984, 0x918d, 0x0016, 0x6116, 0x0098, 0x6027, 0x0004, -+ 0x0080, 0x0036, 0x2019, 0x0001, 0x080c, 0x8847, 0x003e, 0x2019, -+ 0x1313, 0x2304, 0x9065, 0x0120, 0x2009, 0x004f, 0x080c, 0x8f53, -+ 0x00ce, 0x001e, 0xd19c, 0x0904, 0x1f0d, 0x7034, 0xd0ac, 0x1904, -+ 0x1edb, 0x0016, 0x0156, 0x6027, 0x0008, 0x080c, 0x2346, 0x6050, -+ 0x9085, 0x0040, 0x6052, 0x6050, 0x9084, 0xfbcf, 0x6052, 0x080c, -+ 0x2340, 0x9085, 0x2000, 0x6052, 0x20a9, 0x0012, 0x1d04, 0x1eae, -+ 0x2091, 0x6000, 0x1f04, 0x1eae, 0x6050, 0x9085, 0x0400, 0x9084, -+ 0xdfbf, 0x6052, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x1ebc, 0x6150, -+ 0x9185, 0x1400, 0x6052, 0x20a9, 0x0366, 0x1d04, 0x1ec5, 0x2091, -+ 0x6000, 0x6020, 0xd09c, 0x1130, 0x015e, 0x6152, 0x001e, 0x6027, -+ 0x0008, 0x04d8, 0x080c, 0x2304, 0x1f04, 0x1ec5, 0x015e, 0x6152, -+ 0x001e, 0x6027, 0x0008, 0x0016, 0x6028, 0xc09c, 0x602a, 0x2011, -+ 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, 0x080c, -+ 0x87a2, 0x0036, 0x901e, 0x080c, 0x8847, 0x003e, 0x60e3, 0x0000, -+ 0x080c, 0xc44e, 0x080c, 0xc469, 0x2001, 0x1172, 0x2004, 0xd0fc, -+ 0x1120, 0x9085, 0x0001, 0x080c, 0x6331, 0x9006, 0x080c, 0x2401, -+ 0x2009, 0x0002, 0x080c, 0x2355, 0x2001, 0x1100, 0x2003, 0x0004, -+ 0x6027, 0x0008, 0x080c, 0x0b68, 0x001e, 0x918c, 0xffd0, 0x6126, -+ 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x00f6, 0x0126, -+ 0x2091, 0x8000, 0x2071, 0x1100, 0x71cc, 0x70ce, 0x9116, 0x05d8, -+ 0x81ff, 0x01a0, 0x2009, 0x0000, 0x080c, 0x2355, 0x2011, 0x8011, -+ 0x2019, 0x010e, 0x231c, 0x939e, 0x0007, 0x1118, 0x2019, 0x0001, -+ 0x0010, 0x2019, 0x0000, 0x080c, 0x3f23, 0x0428, 0x2001, 0x12e0, -+ 0x200c, 0x81ff, 0x1140, 0x2001, 0x0109, 0x2004, 0xd0b4, 0x0118, -+ 0x2019, 0x0003, 0x0008, 0x2118, 0x2011, 0x8012, 0x080c, 0x3f23, -+ 0x2001, 0x1172, 0x2004, 0xd0fc, 0x1170, 0x00c6, 0x080c, 0x1fd8, -+ 0x080c, 0x877f, 0x2061, 0x0100, 0x2019, 0x0028, 0x2009, 0x0002, -+ 0x080c, 0x2831, 0x00ce, 0x012e, 0x00fe, 0x00ee, 0x003e, 0x002e, -+ 0x001e, 0x000e, 0x0005, 0x2028, 0x918c, 0x00ff, 0x2130, 0x9094, -+ 0xff00, 0x1110, 0x81ff, 0x0118, 0x080c, 0x6e62, 0x0038, 0x9080, -+ 0x298c, 0x200d, 0x918c, 0xff00, 0x810f, 0x9006, 0x0005, 0x9080, -+ 0x298c, 0x200d, 0x918c, 0x00ff, 0x0005, 0x00d6, 0x2069, 0x0140, -+ 0x2001, 0x1116, 0x2003, 0x00ef, 0x20a9, 0x0010, 0x9006, 0x6852, -+ 0x6856, 0x1f04, 0x1f88, 0x00de, 0x0005, 0x0006, 0x00d6, 0x0026, -+ 0x2069, 0x0140, 0x2001, 0x1116, 0x2102, 0x8114, 0x8214, 0x8214, -+ 0x8214, 0x20a9, 0x0010, 0x6853, 0x0000, 0x9006, 0x82ff, 0x1128, -+ 0x9184, 0x000f, 0x9080, 0xc84f, 0x2005, 0x6856, 0x8211, 0x1f04, -+ 0x1f9d, 0x002e, 0x00de, 0x000e, 0x0005, 0x00c6, 0x2061, 0x1100, -+ 0x6030, 0x0110, 0xc09d, 0x0008, 0xc09c, 0x6032, 0x00ce, 0x0005, -+ 0x0156, 0x00d6, 0x0026, 0x0016, 0x0006, 0x2069, 0x0140, 0x6980, -+ 0x9116, 0x0180, 0x9112, 0x1230, 0x8212, 0x8210, 0x22a8, 0x2001, -+ 0x0402, 0x0018, 0x22a8, 0x2001, 0x0404, 0x680e, 0x1f04, 0x1fcd, -+ 0x680f, 0x0000, 0x000e, 0x001e, 0x002e, 0x00de, 0x015e, 0x0005, -+ 0x2001, 0x1153, 0x2004, 0xd0c4, 0x0150, 0xd0a4, 0x0140, 0x9006, -+ 0x0046, 0x2020, 0x2009, 0x002e, 0x080c, 0xc12f, 0x004e, 0x0005, -+ 0x00f6, 0x0016, 0x0026, 0x2079, 0x0140, 0x78c4, 0xd0dc, 0x0904, -+ 0x2045, 0x080c, 0x22a5, 0x0660, 0x9084, 0x0700, 0x908e, 0x0600, -+ 0x1120, 0x2011, 0x4000, 0x900e, 0x0458, 0x908e, 0x0500, 0x1120, -+ 0x2011, 0x8000, 0x900e, 0x0420, 0x908e, 0x0400, 0x1120, 0x9016, -+ 0x2009, 0x0001, 0x00e8, 0x908e, 0x0300, 0x1120, 0x9016, 0x2009, -+ 0x0002, 0x00b0, 0x908e, 0x0200, 0x1120, 0x9016, 0x2009, 0x0004, -+ 0x0078, 0x908e, 0x0100, 0x1548, 0x9016, 0x2009, 0x0008, 0x0040, -+ 0x9084, 0x0700, 0x908e, 0x0300, 0x1500, 0x2011, 0x0030, 0x0058, -+ 0x2300, 0x9080, 0x0020, 0x2018, 0x080c, 0x73f0, 0x928c, 0xff00, -+ 0x0110, 0x2011, 0x00ff, 0x2200, 0x8007, 0x9085, 0x004c, 0x78c2, -+ 0x2009, 0x0138, 0x220a, 0x080c, 0x62e4, 0x1118, 0x2009, 0x1298, -+ 0x220a, 0x002e, 0x001e, 0x00fe, 0x0005, 0x78c3, 0x0000, 0x0cc8, -+ 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x2001, 0x0170, -+ 0x200c, 0x8000, 0x2014, 0x9184, 0x0003, 0x0110, 0x080c, 0x0d7e, -+ 0x002e, 0x001e, 0x000e, 0x012e, 0x0005, 0x2001, 0x0171, 0x2004, -+ 0xd0dc, 0x0168, 0x2001, 0x0170, 0x200c, 0x918c, 0x00ff, 0x918e, -+ 0x004c, 0x1128, 0x200c, 0x918c, 0xff00, 0x810f, 0x0005, 0x900e, -+ 0x2001, 0x0227, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, -+ 0x2001, 0x0226, 0x2004, 0x8007, 0x9084, 0x00ff, 0x8004, 0x9108, -+ 0x0005, 0x0018, 0x000c, 0x0018, 0x0020, 0x1000, 0x0800, 0x1000, -+ 0x1800, 0x0156, 0x0006, 0x0016, 0x0026, 0x00e6, 0x2001, 0x12ca, -+ 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d7e, 0x0033, 0x00ee, 0x002e, -+ 0x001e, 0x000e, 0x015e, 0x0005, 0x20a3, 0x20c1, 0x20e5, 0x20e7, -+ 0x2110, 0x2112, 0x2114, 0x2001, 0x0001, 0x080c, 0x1f11, 0x080c, -+ 0x22fd, 0x2001, 0x12cc, 0x2003, 0x0000, 0x7828, 0x9084, 0xe1d7, -+ 0x782a, 0x9006, 0x20a9, 0x0009, 0x080c, 0x22b9, 0x2001, 0x12ca, -+ 0x2003, 0x0006, 0x2009, 0x001e, 0x2011, 0x2115, 0x080c, 0x7283, -+ 0x0005, 0x2009, 0x12cf, 0x200b, 0x0000, 0x2001, 0x12d4, 0x2003, -+ 0x0036, 0x2001, 0x12d3, 0x2003, 0x002a, 0x2001, 0x12cc, 0x2003, -+ 0x0001, 0x9006, 0x080c, 0x2273, 0x2001, 0xffff, 0x20a9, 0x0009, -+ 0x080c, 0x22b9, 0x2001, 0x12ca, 0x2003, 0x0006, 0x2009, 0x001e, -+ 0x2011, 0x2115, 0x080c, 0x7283, 0x0005, 0x080c, 0x0d7e, 0x2001, -+ 0x12d4, 0x2003, 0x0036, 0x2001, 0x12cc, 0x2003, 0x0003, 0x7a38, -+ 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, -+ 0x0001, 0x080c, 0x2273, 0x2001, 0x12d0, 0x2003, 0x0000, 0x2001, -+ 0xffff, 0x20a9, 0x0009, 0x080c, 0x22b9, 0x2001, 0x12ca, 0x2003, -+ 0x0006, 0x2009, 0x001e, 0x2011, 0x2115, 0x080c, 0x7283, 0x0005, -+ 0x080c, 0x0d7e, 0x080c, 0x0d7e, 0x0005, 0x0006, 0x0016, 0x0026, -+ 0x00e6, 0x00f6, 0x0156, 0x0126, 0x2091, 0x8000, 0x2079, 0x0100, -+ 0x2001, 0x12cc, 0x2004, 0x908a, 0x0007, 0x1a0c, 0x0d7e, 0x0043, -+ 0x012e, 0x015e, 0x00fe, 0x00ee, 0x002e, 0x001e, 0x000e, 0x0005, -+ 0x2137, 0x2157, 0x2197, 0x21c7, 0x21eb, 0x21fb, 0x21fd, 0x080c, -+ 0x22ad, 0x11b0, 0x7850, 0x9084, 0xefff, 0x7852, 0x2009, 0x12d2, -+ 0x2104, 0x7a38, 0x9294, 0x0005, 0x9296, 0x0004, 0x0110, 0xc08d, -+ 0x0008, 0xc085, 0x200a, 0x2001, 0x12ca, 0x2003, 0x0001, 0x0030, -+ 0x080c, 0x2221, 0x2001, 0xffff, 0x080c, 0x20b2, 0x0005, 0x080c, -+ 0x21ff, 0x05e0, 0x2009, 0x12d3, 0x2104, 0x8001, 0x200a, 0x080c, -+ 0x22ad, 0x1178, 0x7850, 0x9084, 0xefff, 0x7852, 0x7a38, 0x9294, -+ 0x0005, 0x9296, 0x0005, 0x0518, 0x2009, 0x12d2, 0x2104, 0xc085, -+ 0x200a, 0x2009, 0x12cf, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, -+ 0x0118, 0x080c, 0x2207, 0x00c0, 0x200b, 0x0000, 0x7a38, 0x9294, -+ 0x0006, 0x9296, 0x0004, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, -+ 0x080c, 0x2290, 0x2001, 0x12cc, 0x2003, 0x0002, 0x0028, 0x2001, -+ 0x12ca, 0x2003, 0x0003, 0x0010, 0x080c, 0x20d4, 0x0005, 0x080c, -+ 0x21ff, 0x0560, 0x2009, 0x12d3, 0x2104, 0x8001, 0x200a, 0x080c, -+ 0x22ad, 0x1168, 0x7850, 0x9084, 0xefff, 0x7852, 0x2001, 0x12ca, -+ 0x2003, 0x0003, 0x2001, 0x12cb, 0x2003, 0x0000, 0x00b8, 0x2009, -+ 0x12d3, 0x2104, 0x9005, 0x1118, 0x080c, 0x2245, 0x0010, 0x080c, -+ 0x2214, 0x080c, 0x2207, 0x2009, 0x12cf, 0x200b, 0x0000, 0x2001, -+ 0x12cc, 0x2003, 0x0001, 0x080c, 0x20d4, 0x0000, 0x0005, 0x04b9, -+ 0x0508, 0x080c, 0x22ad, 0x11b8, 0x7850, 0x9084, 0xefff, 0x7852, -+ 0x2009, 0x12d0, 0x2104, 0x8000, 0x200a, 0x9086, 0x0007, 0x0108, -+ 0x0078, 0x2001, 0x12d5, 0x2003, 0x000a, 0x2009, 0x12d2, 0x2104, -+ 0xc0fd, 0x200a, 0x0038, 0x0419, 0x2001, 0x12cc, 0x2003, 0x0004, -+ 0x080c, 0x20ff, 0x0005, 0x0099, 0x0168, 0x080c, 0x22ad, 0x1138, -+ 0x7850, 0x9084, 0xefff, 0x7852, 0x080c, 0x20eb, 0x0018, 0x0079, -+ 0x080c, 0x20ff, 0x0005, 0x080c, 0x0d7e, 0x080c, 0x0d7e, 0x2009, -+ 0x12d4, 0x2104, 0x8001, 0x200a, 0x090c, 0x2261, 0x0005, 0x7a38, -+ 0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, 0x2001, -+ 0x0001, 0x080c, 0x2290, 0x0005, 0x7a38, 0x9294, 0x0006, 0x9296, -+ 0x0006, 0x0110, 0x9006, 0x0010, 0x2001, 0x0001, 0x080c, 0x2273, -+ 0x0005, 0x2009, 0x12cf, 0x2104, 0x8000, 0x200a, 0x9086, 0x0005, -+ 0x0108, 0x0070, 0x200b, 0x0000, 0x7a38, 0x9294, 0x0006, 0x9296, -+ 0x0006, 0x0118, 0x2001, 0x0000, 0x0010, 0x2001, 0x0001, 0x04d9, -+ 0x7a38, 0x9294, 0x0005, 0x9296, 0x0005, 0x0110, 0x9006, 0x0010, -+ 0x2001, 0x0001, 0x080c, 0x2290, 0x0005, 0x0086, 0x2001, 0x12d2, -+ 0x2004, 0x9084, 0x7fff, 0x090c, 0x0d7e, 0x2009, 0x12d1, 0x2144, -+ 0x8846, 0x280a, 0x9844, 0x0dd8, 0xd08c, 0x1120, 0xd084, 0x1120, -+ 0x080c, 0x0d7e, 0x9006, 0x0010, 0x2001, 0x0001, 0x00a1, 0x008e, -+ 0x0005, 0x0006, 0x0156, 0x2001, 0x12ca, 0x20a9, 0x0009, 0x2003, -+ 0x0000, 0x8000, 0x1f04, 0x2267, 0x2001, 0x12d1, 0x2003, 0x8000, -+ 0x015e, 0x000e, 0x0005, 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, -+ 0x0158, 0x7838, 0x9084, 0xfff9, 0x9085, 0x0004, 0x783a, 0x2009, -+ 0x12d7, 0x210c, 0x795a, 0x0050, 0x7838, 0x9084, 0xfffb, 0x9085, -+ 0x0006, 0x783a, 0x2009, 0x12d8, 0x210c, 0x795a, 0x00fe, 0x0005, -+ 0x00f6, 0x2079, 0x0100, 0x9085, 0x0000, 0x0138, 0x7838, 0x9084, -+ 0xfffa, 0x9085, 0x0004, 0x783a, 0x0030, 0x7838, 0x9084, 0xfffb, -+ 0x9085, 0x0005, 0x783a, 0x00fe, 0x0005, 0x0006, 0x2001, 0x0100, -+ 0x2004, 0x9082, 0x0007, 0x000e, 0x0005, 0x0156, 0x20a9, 0x0064, -+ 0x7820, 0x080c, 0x2340, 0xd09c, 0x1110, 0x1f04, 0x22b0, 0x015e, -+ 0x0005, 0x0126, 0x0016, 0x0006, 0x2091, 0x8000, 0x080c, 0x2346, -+ 0x7850, 0x9085, 0x0040, 0x7852, 0x7850, 0x9084, 0xfbcf, 0x7852, -+ 0x080c, 0x2340, 0x9085, 0x2000, 0x7852, 0x000e, 0x2008, 0x9186, -+ 0x0000, 0x1118, 0x783b, 0x0007, 0x0090, 0x9186, 0x0001, 0x1118, -+ 0x783b, 0x0006, 0x0060, 0x9186, 0x0002, 0x1118, 0x783b, 0x0005, -+ 0x0030, 0x9186, 0x0003, 0x1118, 0x783b, 0x0004, 0x0000, 0x0006, -+ 0x1d04, 0x22e8, 0x080c, 0x72a5, 0x1f04, 0x22e8, 0x7850, 0x9085, -+ 0x0400, 0x9084, 0xdfbf, 0x7852, 0x080c, 0x2340, 0x9085, 0x1000, -+ 0x7852, 0x000e, 0x001e, 0x012e, 0x0005, 0x080c, 0x2346, 0x7850, -+ 0x9084, 0xffcf, 0x7852, 0x0005, 0x0006, 0x0156, 0x00f6, 0x2079, -+ 0x0100, 0x20a9, 0x000a, 0x7854, 0xd0ac, 0x1130, 0x7820, 0xd0e4, -+ 0x1140, 0x1f04, 0x230e, 0x0028, 0x7854, 0xd08c, 0x1110, 0x1f04, -+ 0x2314, 0x00fe, 0x015e, 0x000e, 0x0005, 0x7820, 0x0409, 0xd09c, -+ 0x0005, 0x1d04, 0x2321, 0x080c, 0x72a5, 0x1f04, 0x2321, 0x0005, -+ 0x0006, 0x2001, 0x12d6, 0x2004, 0x9086, 0x0000, 0x000e, 0x0005, -+ 0x0006, 0x2001, 0x12d6, 0x2004, 0x9086, 0x0001, 0x000e, 0x0005, -+ 0x0006, 0x2001, 0x12d6, 0x2004, 0x9086, 0x0002, 0x000e, 0x0005, -+ 0xa001, 0xa001, 0xa001, 0xa001, 0xa001, 0x0005, 0x0006, 0x0016, -+ 0x2009, 0x0140, 0x2104, 0x080c, 0x6300, 0x1110, 0xc0bd, 0x0008, -+ 0xc0bc, 0x200a, 0x001e, 0x000e, 0x0005, 0x0006, 0x2001, 0x12e0, -+ 0x2102, 0x000e, 0x0005, 0x2009, 0x0171, 0x2104, 0xd0dc, 0x0140, -+ 0x2009, 0x0170, 0x2104, 0x200b, 0x0080, 0xa001, 0xa001, 0x200a, -+ 0x0005, 0x0036, 0x0046, 0x2001, 0x0141, 0x200c, 0x918c, 0xff00, -+ 0x9186, 0x2000, 0x0118, 0x9186, 0x0100, 0x1560, 0x2009, 0x017f, -+ 0x200b, 0x00a2, 0x2009, 0x0169, 0x2019, 0x0160, 0x2324, 0x2011, -+ 0x0003, 0x2104, 0x9084, 0x0007, 0x9086, 0x0003, 0x11b8, 0x2304, -+ 0x9402, 0x02a0, 0x1d98, 0x8211, 0x1da0, 0x84ff, 0x0170, 0x2001, -+ 0x0141, 0x200c, 0x918c, 0xff00, 0x9186, 0x0100, 0x0130, 0x2009, -+ 0x110c, 0x2104, 0xc0dd, 0x200a, 0x0008, 0x0419, 0x2001, 0x017f, -+ 0x2003, 0x0000, 0x004e, 0x003e, 0x0005, 0x2001, 0x110c, 0x2004, -+ 0xd0dc, 0x01b0, 0x2001, 0x0160, 0x2004, 0x9005, 0x0140, 0x2001, -+ 0x0141, 0x2004, 0x9084, 0xff00, 0x9086, 0x0100, 0x1148, 0x0126, -+ 0x2091, 0x8000, 0x0016, 0x0026, 0x0021, 0x002e, 0x001e, 0x012e, -+ 0x0005, 0x00c6, 0x2061, 0x0100, 0x6014, 0x0006, 0x2001, 0x0161, -+ 0x2003, 0x0000, 0x6017, 0x0018, 0xa001, 0xa001, 0x602f, 0x0008, -+ 0x6104, 0x918e, 0x0010, 0x6106, 0x918e, 0x0010, 0x6106, 0x6017, -+ 0x0040, 0x2001, 0x1000, 0x0429, 0x9006, 0x0419, 0x001e, 0x9184, -+ 0x0003, 0x01c0, 0x0036, 0x2019, 0x0141, 0x2304, 0x9084, 0xff00, -+ 0x9086, 0x0800, 0x1dd0, 0x919c, 0xffe4, 0x9184, 0x0001, 0x0118, -+ 0x9385, 0x0009, 0x6016, 0x9184, 0x0002, 0x0118, 0x9385, 0x0012, -+ 0x6016, 0x003e, 0x2001, 0x110c, 0x200c, 0xc1dc, 0x2102, 0x00ce, -+ 0x0005, 0x0016, 0x0026, 0x2009, 0x0140, 0x2114, 0x9294, 0x0001, -+ 0x9215, 0x220a, 0x002e, 0x001e, 0x0005, 0x2678, 0x2678, 0x249d, -+ 0x249d, 0x24a9, 0x24a9, 0x24b5, 0x24b5, 0x24c3, 0x24c3, 0x24cf, -+ 0x24cf, 0x24dd, 0x24dd, 0x24eb, 0x24eb, 0x24fd, 0x24fd, 0x2509, -+ 0x2509, 0x2517, 0x2517, 0x2535, 0x2535, 0x2555, 0x2555, 0x2525, -+ 0x2525, 0x2545, 0x2545, 0x2563, 0x2563, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x2575, 0x2575, 0x2581, -+ 0x2581, 0x258f, 0x258f, 0x259d, 0x259d, 0x25ad, 0x25ad, 0x25bb, -+ 0x25bb, 0x25cb, 0x25cb, 0x25db, 0x25db, 0x25ed, 0x25ed, 0x25fb, -+ 0x25fb, 0x260b, 0x260b, 0x262d, 0x262d, 0x264f, 0x264f, 0x261b, -+ 0x261b, 0x263e, 0x263e, 0x265e, 0x265e, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, -+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1c12, 0x0804, -+ 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, -+ 0x0156, 0x080c, 0x19c6, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x19c6, 0x080c, -+ 0x1c12, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x19fe, 0x0804, 0x2670, 0x0106, -+ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, -+ 0x1c12, 0x080c, 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x19c6, 0x080c, -+ 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x19c6, 0x080c, 0x1c12, 0x080c, -+ 0x19fe, 0x0804, 0x2670, 0xa001, 0x0cf0, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1125, 0x0804, -+ 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, -+ 0x0156, 0x080c, 0x1c12, 0x080c, 0x1125, 0x0804, 0x2670, 0x0106, -+ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, -+ 0x19c6, 0x080c, 0x1125, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1c12, 0x080c, -+ 0x1125, 0x080c, 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x19c6, 0x080c, -+ 0x1c12, 0x080c, 0x1125, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x19c6, 0x080c, -+ 0x1125, 0x080c, 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x1125, 0x080c, -+ 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x19c6, 0x080c, 0x1c12, 0x080c, -+ 0x1125, 0x080c, 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x0804, -+ 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, -+ 0x0156, 0x080c, 0x2048, 0x080c, 0x1c12, 0x0804, 0x2670, 0x0106, -+ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, -+ 0x2048, 0x080c, 0x19c6, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, -+ 0x19c6, 0x080c, 0x1c12, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, -+ 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, 0x1c12, 0x080c, -+ 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, 0x19c6, 0x080c, -+ 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, 0x19c6, 0x080c, -+ 0x1c12, 0x080c, 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, -+ 0x1125, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, 0x1c12, 0x080c, -+ 0x1125, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, 0x19c6, 0x080c, -+ 0x1125, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, 0x01c6, 0x01d6, -+ 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, 0x1c12, 0x080c, -+ 0x1125, 0x080c, 0x19fe, 0x0804, 0x2670, 0x0106, 0x0006, 0x0126, -+ 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, 0x080c, -+ 0x19c6, 0x080c, 0x1c12, 0x080c, 0x1125, 0x0490, 0x0106, 0x0006, -+ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, -+ 0x080c, 0x19c6, 0x080c, 0x1125, 0x080c, 0x19fe, 0x0408, 0x0106, -+ 0x0006, 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, -+ 0x2048, 0x080c, 0x1125, 0x080c, 0x19fe, 0x0090, 0x0106, 0x0006, -+ 0x0126, 0x01c6, 0x01d6, 0x0136, 0x0146, 0x0156, 0x080c, 0x2048, -+ 0x080c, 0x19c6, 0x080c, 0x1c12, 0x080c, 0x1125, 0x080c, 0x19fe, -+ 0x015e, 0x014e, 0x013e, 0x01de, 0x01ce, 0x012e, 0x000e, 0x010e, -+ 0x000d, 0x00c6, 0x0026, 0x0046, 0x9026, 0x080c, 0x588e, 0x1904, -+ 0x275a, 0x72d8, 0x2001, 0x12a7, 0x2004, 0x9005, 0x1110, 0xd29c, -+ 0x0148, 0xd284, 0x1138, 0xd2bc, 0x1904, 0x275a, 0x080c, 0x275e, -+ 0x0804, 0x275a, 0xd2cc, 0x1904, 0x275a, 0x080c, 0x62e4, 0x1120, -+ 0x70a7, 0xffff, 0x0804, 0x275a, 0xd294, 0x0120, 0x70a7, 0xffff, -+ 0x0804, 0x275a, 0x080c, 0x2982, 0x0120, 0x70a7, 0xffff, 0x0804, -+ 0x275a, 0x2001, 0x1116, 0x203c, 0x728c, 0xd284, 0x0904, 0x26fd, -+ 0xd28c, 0x1904, 0x26fd, 0x0036, 0x73a4, 0x938e, 0xffff, 0x1110, -+ 0x2019, 0x0001, 0x8314, 0x92e0, 0x1580, 0x2c04, 0x938c, 0x0001, -+ 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, 0x9084, 0x00ff, 0x970e, -+ 0x0558, 0x908e, 0x0000, 0x0540, 0x908e, 0x00ff, 0x1150, 0x7230, -+ 0xd284, 0x1530, 0x728c, 0xc28d, 0x728e, 0x70a7, 0xffff, 0x003e, -+ 0x0420, 0x900e, 0x080c, 0x1f63, 0x080c, 0x55b3, 0x11b8, 0x6004, -+ 0x9084, 0x00ff, 0x9086, 0x0006, 0x1150, 0x7030, 0xd08c, 0x0118, -+ 0x6000, 0xd0bc, 0x0120, 0x080c, 0x2771, 0x0140, 0x0028, 0x080c, -+ 0x28a1, 0x080c, 0x279e, 0x0110, 0x8318, 0x0820, 0x73a6, 0x0010, -+ 0x70a7, 0xffff, 0x003e, 0x0804, 0x275a, 0x9780, 0x298c, 0x203d, -+ 0x97bc, 0xff00, 0x873f, 0x2041, 0x007e, 0x70a4, 0x9096, 0xffff, -+ 0x1118, 0x900e, 0x28a8, 0x0050, 0x9812, 0x0220, 0x2008, 0x9802, -+ 0x20a8, 0x0020, 0x70a7, 0xffff, 0x0804, 0x275a, 0x2700, 0x0156, -+ 0x0016, 0x9106, 0x05a0, 0xc484, 0x080c, 0x5608, 0x0120, 0x080c, -+ 0x55b3, 0x15a8, 0x0008, 0xc485, 0x6004, 0x9084, 0x00ff, 0x9086, -+ 0x0006, 0x1130, 0x7030, 0xd08c, 0x01e8, 0x6000, 0xd0bc, 0x11d0, -+ 0x728c, 0xd28c, 0x0188, 0x6004, 0x9084, 0x00ff, 0x9082, 0x0006, -+ 0x02b0, 0xd484, 0x1118, 0x080c, 0x55d0, 0x0028, 0x080c, 0x292a, -+ 0x0170, 0x080c, 0x2955, 0x0058, 0x080c, 0x28a1, 0x080c, 0x279e, -+ 0x0170, 0x0028, 0x080c, 0x292a, 0x0110, 0x0419, 0x0140, 0x001e, -+ 0x8108, 0x015e, 0x1f04, 0x2716, 0x70a7, 0xffff, 0x0018, 0x001e, -+ 0x015e, 0x71a6, 0x004e, 0x002e, 0x00ce, 0x0005, 0x00c6, 0x0016, -+ 0x70a7, 0x0001, 0x2009, 0x007e, 0x080c, 0x55b3, 0x1138, 0x080c, -+ 0x28a1, 0x04a1, 0x0118, 0x70d8, 0xc0bd, 0x70da, 0x001e, 0x00ce, -+ 0x0005, 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x2001, 0x1157, -+ 0x2004, 0x9084, 0x00ff, 0x6842, 0x080c, 0x8f26, 0x01d0, 0x2d00, -+ 0x6012, 0x080c, 0xad70, 0x6023, 0x0001, 0x9006, 0x080c, 0x5556, -+ 0x2001, 0x0000, 0x080c, 0x5568, 0x0126, 0x2091, 0x8000, 0x70a0, -+ 0x8000, 0x70a2, 0x012e, 0x2009, 0x0004, 0x080c, 0x8f53, 0x9085, -+ 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, 0x0005, 0x0016, 0x0076, -+ 0x00d6, 0x00c6, 0x2c68, 0x2001, 0x1157, 0x2004, 0x9084, 0x00ff, -+ 0x6842, 0x080c, 0x8f26, 0x0548, 0x2d00, 0x6012, 0x6800, 0xc0c4, -+ 0x6802, 0x68a0, 0x9086, 0x007e, 0x0140, 0x6804, 0x9084, 0x00ff, -+ 0x9086, 0x0006, 0x1110, 0x080c, 0x2862, 0x080c, 0xad70, 0x6023, -+ 0x0001, 0x9006, 0x080c, 0x5556, 0x2001, 0x0002, 0x080c, 0x5568, -+ 0x0126, 0x2091, 0x8000, 0x70a0, 0x8000, 0x70a2, 0x012e, 0x2009, -+ 0x0002, 0x080c, 0x8f53, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, -+ 0x001e, 0x0005, 0x00c6, 0x0026, 0x2009, 0x0080, 0x080c, 0x55b3, -+ 0x1120, 0x0031, 0x0110, 0x70df, 0xffff, 0x002e, 0x00ce, 0x0005, -+ 0x0016, 0x0076, 0x00d6, 0x00c6, 0x2c68, 0x080c, 0x8e83, 0x01e0, -+ 0x2d00, 0x6012, 0x080c, 0xad70, 0x6023, 0x0001, 0x9006, 0x080c, -+ 0x5556, 0x2001, 0x0002, 0x080c, 0x5568, 0x0126, 0x2091, 0x8000, -+ 0x080c, 0x2862, 0x70e0, 0x8000, 0x70e2, 0x012e, 0x2009, 0x0002, -+ 0x080c, 0x8f53, 0x9085, 0x0001, 0x00ce, 0x00de, 0x007e, 0x001e, -+ 0x0005, 0x00c6, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2009, 0x007f, -+ 0x080c, 0x55b3, 0x1190, 0x2c68, 0x080c, 0x8e83, 0x0170, 0x2d00, -+ 0x6012, 0x6316, 0x6023, 0x0001, 0x620a, 0x080c, 0xad70, 0x2009, -+ 0x0022, 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x00de, 0x00ce, -+ 0x0005, 0x00e6, 0x00c6, 0x0066, 0x0036, 0x0026, 0x21f0, 0x080c, -+ 0x76fb, 0x080c, 0x768d, 0x080c, 0x9ce7, 0x3e08, 0x2130, 0x81ff, -+ 0x0120, 0x20a9, 0x007e, 0x900e, 0x0018, 0x20a9, 0x007f, 0x900e, -+ 0x0016, 0x080c, 0x5608, 0x1140, 0x9686, 0x0002, 0x1118, 0x6000, -+ 0xd0bc, 0x1110, 0x080c, 0x5100, 0x001e, 0x8108, 0x1f04, 0x2848, -+ 0x86ff, 0x1110, 0x080c, 0x0a79, 0x002e, 0x003e, 0x006e, 0x00ce, -+ 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x6210, -+ 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029, 0x080c, 0x76f0, 0x0076, -+ 0x2039, 0x0000, 0x080c, 0x75ee, 0x2c08, 0x080c, 0xbec2, 0x007e, -+ 0x001e, 0x2e60, 0x6210, 0x6314, 0x080c, 0x5100, 0x6212, 0x6316, -+ 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x0005, 0x00e6, 0x0006, -+ 0x6010, 0x9080, 0x0028, 0x2004, 0x9086, 0x0080, 0x0150, 0x2071, -+ 0x1100, 0x70a0, 0x9005, 0x0110, 0x8001, 0x70a2, 0x000e, 0x00ee, -+ 0x0005, 0x2071, 0x1100, 0x70e0, 0x9005, 0x0dc0, 0x8001, 0x70e2, -+ 0x0ca8, 0x6000, 0xc08c, 0x6002, 0x0005, 0x00f6, 0x00e6, 0x00c6, -+ 0x0036, 0x0026, 0x0016, 0x0156, 0x2178, 0x81ff, 0x1118, 0x20a9, -+ 0x0001, 0x0090, 0x2001, 0x1153, 0x2004, 0xd0c4, 0x0150, 0xd0a4, -+ 0x0140, 0x9006, 0x0046, 0x2020, 0x2009, 0x002d, 0x080c, 0xc12f, -+ 0x004e, 0x20a9, 0x00ff, 0x9016, 0x0026, 0x928e, 0x007e, 0x0904, -+ 0x2909, 0x928e, 0x007f, 0x05e8, 0x928e, 0x0080, 0x05d0, 0x9288, -+ 0x1000, 0x210c, 0x81ff, 0x05a8, 0x8fff, 0x1148, 0x2001, 0x12c8, -+ 0x0006, 0x2003, 0x0001, 0x04c9, 0x000e, 0x2003, 0x0000, 0x00c6, -+ 0x2160, 0x2001, 0x0001, 0x080c, 0x5898, 0x00ce, 0x2019, 0x0029, -+ 0x080c, 0x76f0, 0x0076, 0x2039, 0x0000, 0x080c, 0x75ee, 0x00c6, -+ 0x0026, 0x2160, 0x6204, 0x9294, 0x00ff, 0x9286, 0x0006, 0x1118, -+ 0x6007, 0x0404, 0x0028, 0x2001, 0x0004, 0x8007, 0x9215, 0x6206, -+ 0x002e, 0x00ce, 0x0016, 0x2c08, 0x080c, 0xbec2, 0x001e, 0x007e, -+ 0x2160, 0x002e, 0x8210, 0x1f04, 0x28c4, 0x015e, 0x001e, 0x002e, -+ 0x003e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x0046, 0x0026, 0x0016, -+ 0x2001, 0x1153, 0x2004, 0xd0c4, 0x0148, 0xd0a4, 0x0138, 0x9006, -+ 0x2220, 0x8427, 0x2009, 0x0029, 0x080c, 0xc12f, 0x001e, 0x002e, -+ 0x004e, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x728c, 0x82ff, -+ 0x01e8, 0x080c, 0x58c6, 0x11d0, 0x2100, 0x080c, 0x1f77, 0x81ff, -+ 0x01b8, 0x2019, 0x0001, 0x8314, 0x92e0, 0x1580, 0x2c04, 0xd384, -+ 0x0120, 0x9084, 0xff00, 0x8007, 0x0010, 0x9084, 0x00ff, 0x9116, -+ 0x0138, 0x9096, 0x00ff, 0x0110, 0x8318, 0x0c68, 0x9085, 0x0001, -+ 0x00ce, 0x003e, 0x002e, 0x001e, 0x0005, 0x0016, 0x00c6, 0x0126, -+ 0x2091, 0x8000, 0x0016, 0x0026, 0x0036, 0x2110, 0x0026, 0x2019, -+ 0x0029, 0x080c, 0x8ac9, 0x002e, 0x080c, 0xc3d4, 0x003e, 0x002e, -+ 0x001e, 0x9180, 0x1000, 0x2004, 0x9065, 0x0158, 0x0016, 0x00c6, -+ 0x2061, 0x1389, 0x001e, 0x6112, 0x080c, 0x2862, 0x001e, 0x080c, -+ 0x55d0, 0x012e, 0x00ce, 0x001e, 0x0005, 0x2001, 0x1136, 0x2004, -+ 0xd0cc, 0x0005, 0x2001, 0x1174, 0x2004, 0xd0bc, 0x0005, 0x2011, -+ 0x1153, 0x2214, 0xd2ec, 0x0005, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, -+ 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, -+ 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, -+ 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc, 0x80ba, 0x75b9, -+ 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1, 0x80ae, 0x71ad, -+ 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, -+ 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797, 0x6690, 0x658f, -+ 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c, 0x607a, 0x8079, -+ 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071, 0x806e, 0x5e6d, -+ 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66, 0x5965, 0x5863, -+ 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454, 0x5353, 0x5252, -+ 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a, 0x4d49, 0x8047, -+ 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039, 0x8036, 0x4b35, -+ 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d, 0x462c, 0x452b, -+ 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123, 0x401f, 0x3f1e, -+ 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f, 0x3a08, 0x8004, -+ 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700, 0x3600, 0x8000, -+ 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000, 0x8000, 0x2f00, -+ 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000, 0x8000, 0x2b00, -+ 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700, 0x2600, 0x2500, -+ 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100, 0x2000, 0x1f00, -+ 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00, 0x1a00, 0x8000, -+ 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x1800, -+ 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400, 0x1300, 0x1200, -+ 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00, 0x0d00, 0x0c00, -+ 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800, 0x0700, 0x8000, -+ 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400, 0x0300, 0x8000, -+ 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, -+ 0x8000, 0x8000, 0x8000, 0x8000, 0x2071, 0x1193, 0x7003, 0x0002, -+ 0x9006, 0x7012, 0x7016, 0x7042, 0x7046, 0x703a, 0x703e, 0x7033, -+ 0x11aa, 0x7037, 0x11aa, 0x7007, 0x0001, 0x2061, 0x11ea, 0x6003, -+ 0x0002, 0x0005, 0x2071, 0x1193, 0x7004, 0x0002, 0x2aaa, 0x2aab, -+ 0x2ab2, 0x2ac3, 0x0005, 0x1004, 0x2ab1, 0x0e04, 0x2ab1, 0x2b78, -+ 0x0430, 0x0005, 0x2b78, 0x2061, 0x11ea, 0x6008, 0x908e, 0x0100, -+ 0x0128, 0x9086, 0x0200, 0x0904, 0x2b92, 0x0005, 0x7014, 0x2068, -+ 0x2a60, 0x7018, 0x0807, 0x7010, 0x2068, 0x6864, 0x9094, 0x00ff, -+ 0x9296, 0x0029, 0x1120, 0x6a78, 0xd2fc, 0x0128, 0x0005, 0x9086, -+ 0x0103, 0x0108, 0x0005, 0x2a60, 0x2b78, 0x7018, 0x0807, 0x2a60, -+ 0x7880, 0x908a, 0x0040, 0x1210, 0x61cc, 0x0042, 0x2100, 0x908a, -+ 0x003f, 0x1a04, 0x2b8f, 0x61cc, 0x0804, 0x2b26, 0x2b68, 0x2b9e, -+ 0x2ba8, 0x2bac, 0x2bb6, 0x2bbc, 0x2bc0, 0x2bd0, 0x2bd3, 0x2bdd, -+ 0x2be2, 0x2be7, 0x2bf2, 0x2bfd, 0x2c0c, 0x2c1b, 0x2c29, 0x2c40, -+ 0x2c5b, 0x2cf4, 0x2cf9, 0x2d37, 0x2de5, 0x2df6, 0x2e15, 0x2b8f, -+ 0x2b8f, 0x2b8f, 0x2e4d, 0x2e6b, 0x2e74, 0x2ea3, 0x2ea9, 0x2b8f, -+ 0x2ed2, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2edd, 0x2ee6, -+ 0x2eee, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, -+ 0x2ef0, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2f0d, 0x2f64, -+ 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x0002, 0x2f8e, -+ 0x2fe1, 0x303b, 0x3053, 0x3083, 0x3301, 0x2b8f, 0x44b5, 0x2b8f, -+ 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2b8f, 0x2bdd, -+ 0x2be2, 0x376a, 0x2b8f, 0x3781, 0x454f, 0x45a5, 0x464b, 0x2b8f, -+ 0x46b0, 0x46e0, 0x4705, 0x4813, 0x4736, 0x478d, 0x2b8f, 0x3785, -+ 0x394a, 0x3960, 0x3980, 0x39e5, 0x3a4e, 0x3a59, 0x3ac1, 0x3ad0, -+ 0x3adf, 0x3ae2, 0x3b05, 0x3b77, 0x3bf0, 0x3bfd, 0x3cfe, 0x3e22, -+ 0x3e4b, 0x4032, 0x4054, 0x4060, 0x40d5, 0x419b, 0x2b8f, 0x2b8f, -+ 0x2b8f, 0x2b8f, 0x4203, 0x421e, 0x43b9, 0x4473, 0x7144, 0x0000, -+ 0x2021, 0x4000, 0x080c, 0x3eff, 0x0126, 0x2091, 0x8000, 0x0e04, -+ 0x2b72, 0x0010, 0x012e, 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, -+ 0x7833, 0x0011, 0x0010, 0x7833, 0x0010, 0x7c82, 0x7986, 0x7a8a, -+ 0x7b8e, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, -+ 0x0fcd, 0x7007, 0x0001, 0x2091, 0x5000, 0x012e, 0x0005, 0x2021, -+ 0x4001, 0x08c0, 0x2021, 0x4002, 0x08a8, 0x2021, 0x4003, 0x0890, -+ 0x2021, 0x4005, 0x0878, 0x2021, 0x4006, 0x0860, 0x2039, 0x0001, -+ 0x902e, 0x2520, 0x7b88, 0x7a8c, 0x7884, 0x7990, 0x0804, 0x3f0c, -+ 0x7883, 0x0004, 0x7884, 0x0807, 0x2039, 0x0001, 0x902e, 0x2520, -+ 0x7b88, 0x7a8c, 0x7884, 0x7990, 0x0804, 0x3f0f, 0x7984, 0x7888, -+ 0x2114, 0x200a, 0x0804, 0x2b68, 0x7984, 0x2114, 0x0804, 0x2b68, -+ 0x20e1, 0x0000, 0x2099, 0x0021, 0x20e9, 0x0000, 0x20a1, 0x0021, -+ 0x20a9, 0x001f, 0x4003, 0x7984, 0x7a88, 0x7b8c, 0x0804, 0x2b68, -+ 0x7884, 0x2060, 0x04d8, 0x2009, 0x0003, 0x2011, 0x0001, 0x2019, -+ 0x0014, 0x789b, 0x0017, 0x0804, 0x2b68, 0x2039, 0x0001, 0x7d98, -+ 0x7c9c, 0x0800, 0x2039, 0x0001, 0x7d98, 0x7c9c, 0x0848, 0x79a0, -+ 0x9182, 0x0040, 0x0210, 0x0804, 0x2b9b, 0x2138, 0x7d98, 0x7c9c, -+ 0x0804, 0x2ba2, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, 0x2b9b, -+ 0x2138, 0x7d98, 0x7c9c, 0x0804, 0x2bb0, 0x79a0, 0x9182, 0x0040, -+ 0x0210, 0x0804, 0x2b9b, 0x21e8, 0x7984, 0x7888, 0x20a9, 0x0001, -+ 0x21a0, 0x4004, 0x0804, 0x2b68, 0x2061, 0x0800, 0xe10c, 0x9006, -+ 0x2c15, 0x9200, 0x8c60, 0x8109, 0x1dd8, 0x2010, 0x9005, 0x0904, -+ 0x2b68, 0x0804, 0x2b95, 0x79a0, 0x9182, 0x0040, 0x0210, 0x0804, -+ 0x2b9b, 0x21e0, 0x20a9, 0x0001, 0x7984, 0x2198, 0x4012, 0x0804, -+ 0x2b68, 0x2069, 0x1152, 0x7884, 0x7990, 0x911a, 0x1a04, 0x2b9b, -+ 0x8019, 0x0904, 0x2b9b, 0x684a, 0x6942, 0x788c, 0x6852, 0x7888, -+ 0x6856, 0x9006, 0x685a, 0x685e, 0x080c, 0x65bd, 0x0804, 0x2b68, -+ 0x2069, 0x1152, 0x7884, 0x7994, 0x911a, 0x1a04, 0x2b9b, 0x8019, -+ 0x0904, 0x2b9b, 0x684e, 0x6946, 0x788c, 0x6862, 0x7888, 0x6866, -+ 0x9006, 0x686a, 0x686e, 0x0126, 0x2091, 0x8000, 0x080c, 0x5946, -+ 0x012e, 0x0804, 0x2b68, 0x902e, 0x2520, 0x81ff, 0x1904, 0x2b98, -+ 0x7984, 0x7b88, 0x7a8c, 0x20a9, 0x0005, 0x20e9, 0x0001, 0x20a1, -+ 0x119a, 0x4101, 0x080c, 0x3eb9, 0x0904, 0x2b98, 0x2009, 0x0020, -+ 0x2039, 0x0001, 0x080c, 0x3f0c, 0x701b, 0x2c77, 0x0005, 0x6864, -+ 0x2008, 0x9084, 0x00ff, 0x9096, 0x0011, 0x0150, 0x9096, 0x0019, -+ 0x0138, 0x9096, 0x0015, 0x0120, 0x9096, 0x0029, 0x1904, 0x2b98, -+ 0x810f, 0x918c, 0x00ff, 0x0904, 0x2b98, 0x710e, 0x700c, 0x8001, -+ 0x0538, 0x700e, 0x080c, 0x3eb9, 0x0904, 0x2b98, 0x2009, 0x0020, -+ 0x2061, 0x11ea, 0x6228, 0x632c, 0x6430, 0x6534, 0x9290, 0x0040, -+ 0x9399, 0x0000, 0x94a1, 0x0000, 0x95a9, 0x0000, 0x2039, 0x0001, -+ 0x080c, 0x3f0c, 0x701b, 0x2cad, 0x0005, 0x6864, 0x9084, 0x00ff, -+ 0x9096, 0x0002, 0x0120, 0x9096, 0x000a, 0x1904, 0x2b98, 0x08b0, -+ 0x7010, 0x2068, 0x6868, 0xc0fd, 0x686a, 0x6864, 0x9084, 0x00ff, -+ 0x9096, 0x0029, 0x1160, 0xc2fd, 0x6a7a, 0x080c, 0x51e5, 0x0150, -+ 0x0126, 0x2091, 0x8000, 0x687a, 0x6982, 0x012e, 0x0050, 0x080c, -+ 0x54d0, 0x1128, 0x7007, 0x0003, 0x701b, 0x2cd9, 0x0005, 0x080c, -+ 0x5d95, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x20e1, 0x0001, -+ 0x2099, 0x119a, 0x400a, 0x2100, 0x9210, 0x9399, 0x0000, 0x94a1, -+ 0x0000, 0x95a9, 0x0000, 0x9d80, 0x0019, 0x2009, 0x0020, 0x012e, -+ 0x2039, 0x0001, 0x0804, 0x3f0f, 0x61b4, 0x7884, 0x60b6, 0x0804, -+ 0x2b68, 0x2091, 0x8000, 0x7837, 0x4000, 0x7833, 0x0010, 0x7883, -+ 0x4000, 0x7887, 0x4953, 0x788b, 0x5020, 0x788f, 0x2020, 0x2009, -+ 0x017f, 0x2104, 0x7892, 0x3f00, 0x7896, 0x2061, 0x0100, 0x6200, -+ 0x2061, 0x0200, 0x603c, 0x8007, 0x9205, 0x789a, 0x2009, 0x04fd, -+ 0x2104, 0x789e, 0x2091, 0x5000, 0x2091, 0x4080, 0x2001, 0x0089, -+ 0x2004, 0xd084, 0x0180, 0x2001, 0x1336, 0x2004, 0x9005, 0x0128, -+ 0x2001, 0x008b, 0x2004, 0xd0fc, 0x0dd8, 0x2001, 0x008a, 0x2003, -+ 0x0002, 0x2003, 0x1001, 0x2071, 0x0080, 0x0804, 0x0427, 0x81ff, -+ 0x1904, 0x2b98, 0x7984, 0x810f, 0x918c, 0x00ff, 0x080c, 0x5608, -+ 0x1904, 0x2b9b, 0x7e98, 0x9684, 0x3fff, 0x9082, 0x4000, 0x0210, -+ 0x0804, 0x2b9b, 0x7c88, 0x7d8c, 0x080c, 0x5758, 0x080c, 0x5728, -+ 0x0000, 0x1518, 0x2061, 0x15c0, 0x0126, 0x2091, 0x8000, 0x6000, -+ 0x9086, 0x0000, 0x0148, 0x6014, 0x906d, 0x0130, 0x686c, 0x9406, -+ 0x1118, 0x6870, 0x9506, 0x0150, 0x012e, 0x9ce0, 0x0018, 0x2001, -+ 0x1118, 0x2004, 0x9c02, 0x1a04, 0x2b98, 0x0c30, 0x080c, 0xa5f3, -+ 0x012e, 0x0904, 0x2b98, 0x0804, 0x2b68, 0x900e, 0x2001, 0x0005, -+ 0x080c, 0x5d95, 0x0126, 0x2091, 0x8000, 0x080c, 0xac07, 0x080c, -+ 0x5b76, 0x012e, 0x0804, 0x2b68, 0x00f6, 0x2d78, 0x7998, 0x810f, -+ 0x918c, 0x00ff, 0x080c, 0x5608, 0x1904, 0x2dd2, 0x7ea4, 0x9684, -+ 0x3fff, 0x9082, 0x4000, 0x0208, 0x04e8, 0x7c9c, 0x7da0, 0x080c, -+ 0x5758, 0x080c, 0x5728, 0x1520, 0x2061, 0x15c0, 0x0126, 0x2091, -+ 0x8000, 0x6000, 0x9086, 0x0000, 0x0148, 0x6014, 0x906d, 0x0130, -+ 0x686c, 0x9406, 0x1118, 0x6870, 0x9506, 0x0158, 0x012e, 0x9ce0, -+ 0x0018, 0x2001, 0x1118, 0x2004, 0x9c02, 0x2009, 0x000d, 0x12b0, -+ 0x0c28, 0x080c, 0xa5f3, 0x012e, 0x2009, 0x0003, 0x0178, 0x00e0, -+ 0x900e, 0x2001, 0x0005, 0x080c, 0x5d95, 0x0126, 0x2091, 0x8000, -+ 0x080c, 0xac07, 0x080c, 0x5b76, 0x012e, 0x0070, 0x7897, 0x4005, -+ 0x799a, 0x0010, 0x7897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, -+ 0x0030, 0x2f68, 0x00fe, 0x0005, 0x7897, 0x4000, 0x9006, 0x918d, -+ 0x0001, 0x2008, 0x2f68, 0x00fe, 0x0005, 0x81ff, 0x1904, 0x2b98, -+ 0x080c, 0x3ece, 0x0904, 0x2b9b, 0x080c, 0x56ca, 0x0904, 0x2b98, -+ 0x080c, 0x575e, 0x0904, 0x2b98, 0x0804, 0x2b68, 0x81ff, 0x1904, -+ 0x2b98, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x080c, 0x57a6, 0x0904, -+ 0x2b98, 0x2019, 0x0005, 0x7984, 0x080c, 0x5779, 0x0904, 0x2b98, -+ 0x7888, 0x908a, 0x1000, 0x1a04, 0x2b9b, 0x8003, 0x800b, 0x810b, -+ 0x9108, 0x080c, 0x7206, 0x0804, 0x2b68, 0x0126, 0x2091, 0x8000, -+ 0x81ff, 0x0118, 0x2009, 0x0001, 0x0450, 0x2029, 0x00ff, 0x6454, -+ 0x2400, 0x9506, 0x01f8, 0x2508, 0x080c, 0x5608, 0x11d8, 0x080c, -+ 0x57a6, 0x1128, 0x2009, 0x0002, 0x62bc, 0x2518, 0x00c0, 0x2019, -+ 0x0004, 0x900e, 0x080c, 0x5779, 0x1118, 0x2009, 0x0006, 0x0078, -+ 0x7884, 0x908a, 0x1000, 0x1270, 0x8003, 0x800b, 0x810b, 0x9108, -+ 0x080c, 0x7206, 0x8529, 0x1ae0, 0x012e, 0x0804, 0x2b68, 0x012e, -+ 0x0804, 0x2b98, 0x012e, 0x0804, 0x2b9b, 0x080c, 0x3ece, 0x0904, -+ 0x2b9b, 0x080c, 0x56ca, 0x0904, 0x2b98, 0x62a0, 0x2019, 0x0005, -+ 0x00c6, 0x2061, 0x0000, 0x080c, 0x76f0, 0x0076, 0x2039, 0x0000, -+ 0x080c, 0x75ee, 0x900e, 0x080c, 0xbec2, 0x007e, 0x00ce, 0x080c, -+ 0x5758, 0x0804, 0x2b68, 0x080c, 0x3ece, 0x0904, 0x2b9b, 0x080c, -+ 0x5758, 0x2208, 0x0804, 0x2b68, 0x0156, 0x00d6, 0x00e6, 0x2069, -+ 0x1240, 0x6810, 0x6914, 0x910a, 0x1208, 0x900e, 0x6816, 0x9016, -+ 0x901e, 0x20a9, 0x007e, 0x2069, 0x1000, 0x2d04, 0x9075, 0x0118, -+ 0x704c, 0x0059, 0x9210, 0x8d68, 0x1f04, 0x2e85, 0x2300, 0x9218, -+ 0x00ee, 0x00de, 0x015e, 0x0804, 0x2b68, 0x00f6, 0x0016, 0x907d, -+ 0x0138, 0x9006, 0x8000, 0x2f0c, 0x81ff, 0x0110, 0x2178, 0x0cd0, -+ 0x001e, 0x00fe, 0x0005, 0x2069, 0x1240, 0x6910, 0x62b8, 0x0804, -+ 0x2b68, 0x81ff, 0x1904, 0x2b98, 0x6154, 0x9190, 0x298c, 0x2215, -+ 0x9294, 0x00ff, 0x6374, 0x83ff, 0x0108, 0x6278, 0x67d8, 0xd79c, -+ 0x0118, 0x2031, 0x0001, 0x0090, 0xd7ac, 0x0118, 0x2031, 0x0003, -+ 0x0068, 0xd7a4, 0x0118, 0x2031, 0x0002, 0x0040, 0x080c, 0x62e4, -+ 0x1118, 0x2031, 0x0004, 0x0010, 0x2031, 0x0000, 0x7e9a, 0x7f9e, -+ 0x0804, 0x2b68, 0x6144, 0x6248, 0x2019, 0x12c0, 0x231c, 0x2001, -+ 0x12c1, 0x2004, 0x789a, 0x0804, 0x2b68, 0x0126, 0x2091, 0x8000, -+ 0x6134, 0x6238, 0x633c, 0x012e, 0x0804, 0x2b68, 0x080c, 0x3ef0, -+ 0x0904, 0x2b9b, 0x6244, 0x6338, 0x0804, 0x2b68, 0x080c, 0x0d7e, -+ 0x6144, 0x6248, 0x7884, 0x6046, 0x7b88, 0x634a, 0x2069, 0x1152, -+ 0x831f, 0x9305, 0x6816, 0x788c, 0x2069, 0x12c0, 0x2d1c, 0x206a, -+ 0x7e98, 0x9682, 0x0014, 0x1210, 0x2031, 0x07d0, 0x2069, 0x12c1, -+ 0x2d04, 0x266a, 0x789a, 0x0804, 0x2b68, 0x0126, 0x2091, 0x8000, -+ 0x7884, 0x6036, 0xd0c4, 0x01a8, 0x00d6, 0x78a8, 0x2009, 0x12d7, -+ 0x200a, 0x78ac, 0x2011, 0x12d8, 0x2012, 0x2069, 0x0100, 0x6838, -+ 0x9086, 0x0007, 0x1118, 0x2214, 0x6a5a, 0x0010, 0x210c, 0x695a, -+ 0x00de, 0x7884, 0xd0b4, 0x0120, 0x3b00, 0x9084, 0xff3f, 0x20d8, -+ 0x7888, 0x603a, 0x2011, 0x0114, 0x220c, 0x7888, 0xd08c, 0x0118, -+ 0x918d, 0x0080, 0x0010, 0x918c, 0xff7f, 0x2112, 0x788c, 0x603e, -+ 0x012e, 0x0804, 0x2b68, 0x00f6, 0x2079, 0x1100, 0x7a34, 0x6898, -+ 0x9084, 0xfeff, 0x9215, 0x689c, 0x9084, 0xfeff, 0x8002, 0x9214, -+ 0xd2b4, 0x0120, 0x3b00, 0x9084, 0xff3f, 0x20d8, 0x7834, 0xd0c4, -+ 0x0108, 0xc2c5, 0x7a36, 0x6897, 0x4000, 0x900e, 0x9085, 0x0001, -+ 0x2001, 0x0000, 0x00fe, 0x0005, 0x7898, 0x9005, 0x01a8, 0x7888, -+ 0x9025, 0x0904, 0x2b9b, 0x788c, 0x902d, 0x0904, 0x2b9b, 0x900e, -+ 0x080c, 0x5608, 0x1120, 0x6244, 0x6338, 0x6446, 0x653a, 0x9186, -+ 0x00ff, 0x0190, 0x8108, 0x0ca0, 0x080c, 0x3ef0, 0x0904, 0x2b9b, -+ 0x7888, 0x900d, 0x0904, 0x2b9b, 0x788c, 0x9005, 0x0904, 0x2b9b, -+ 0x6244, 0x6146, 0x6338, 0x603a, 0x0804, 0x2b68, 0x2001, 0x1100, -+ 0x2004, 0x9086, 0x0003, 0x1904, 0x2b98, 0x00c6, 0x2061, 0x0100, -+ 0x7984, 0x810f, 0x918c, 0x00ff, 0x9196, 0x00ff, 0x1130, 0x2001, -+ 0x1116, 0x2004, 0x9085, 0xff00, 0x0078, 0x9182, 0x007f, 0x1698, -+ 0x9188, 0x298c, 0x210d, 0x918c, 0x00ff, 0x2001, 0x1116, 0x2004, -+ 0x9116, 0x0548, 0x810f, 0x9105, 0x0126, 0x2091, 0x8000, 0x0006, -+ 0x080c, 0x8e83, 0x000e, 0x01d8, 0x6012, 0x600b, 0xbc09, 0x6023, -+ 0x0001, 0x080c, 0x3eb9, 0x01d0, 0x9006, 0x6866, 0x7007, 0x0003, -+ 0x6832, 0x6868, 0xc0fd, 0x686a, 0x701b, 0x3034, 0x2d00, 0x6016, -+ 0x2009, 0x0032, 0x080c, 0x8f53, 0x012e, 0x00ce, 0x0005, 0x012e, -+ 0x00ce, 0x0804, 0x2b98, 0x00ce, 0x0804, 0x2b9b, 0x080c, 0x8ed9, -+ 0x0cb0, 0x2001, 0x1100, 0x2004, 0x9086, 0x0003, 0x1904, 0x2b98, -+ 0x00c6, 0x2061, 0x0100, 0x7984, 0x810f, 0x918c, 0x00ff, 0x9196, -+ 0x00ff, 0x1130, 0x2001, 0x1116, 0x2004, 0x9085, 0xff00, 0x0078, -+ 0x9182, 0x007f, 0x1698, 0x9188, 0x298c, 0x210d, 0x918c, 0x00ff, -+ 0x2001, 0x1116, 0x2004, 0x9116, 0x0548, 0x810f, 0x9105, 0x0126, -+ 0x2091, 0x8000, 0x0006, 0x080c, 0x8e83, 0x000e, 0x01d8, 0x6012, -+ 0x600b, 0xbc05, 0x6023, 0x0001, 0x080c, 0x3eb9, 0x01d0, 0x9006, -+ 0x6866, 0x7007, 0x0003, 0x6832, 0x6868, 0xc0fd, 0x686a, 0x701b, -+ 0x3034, 0x2d00, 0x6016, 0x2009, 0x0032, 0x080c, 0x8f53, 0x012e, -+ 0x00ce, 0x0005, 0x012e, 0x00ce, 0x0804, 0x2b98, 0x00ce, 0x0804, -+ 0x2b9b, 0x080c, 0x8ed9, 0x0cb0, 0x6830, 0x9086, 0x0100, 0x0904, -+ 0x2b98, 0x0804, 0x2b68, 0x2061, 0x1354, 0x0126, 0x2091, 0x8000, -+ 0x6000, 0xd084, 0x0168, 0x6104, 0x6208, 0x2a60, 0x634c, 0x606c, -+ 0x789a, 0x60bc, 0x789e, 0x60b8, 0x78aa, 0x012e, 0x0804, 0x2b68, -+ 0x900e, 0x2110, 0x0c90, 0x81ff, 0x1904, 0x2b98, 0x080c, 0x62e4, -+ 0x0904, 0x2b98, 0x0126, 0x2091, 0x8000, 0x624c, 0x606c, 0x9202, -+ 0x0248, 0x9085, 0x0001, 0x080c, 0x1fad, 0x080c, 0x49f2, 0x012e, -+ 0x0804, 0x2b68, 0x012e, 0x0804, 0x2b9b, 0x0006, 0x0016, 0x00c6, -+ 0x00e6, 0x2001, 0x12e1, 0x2070, 0x2061, 0x1152, 0x6008, 0x2072, -+ 0x900e, 0x2011, 0x1400, 0x080c, 0x73f0, 0x7206, 0x00ee, 0x00ce, -+ 0x001e, 0x000e, 0x0005, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0128, -+ 0x012e, 0x2021, 0x400b, 0x0804, 0x2b6a, 0x7884, 0xd0fc, 0x0148, -+ 0x2001, 0x002a, 0x2004, 0x9082, 0x00e1, 0x02a8, 0x012e, 0x0804, -+ 0x2b9b, 0x2001, 0x002a, 0x2004, 0x2069, 0x1152, 0x6908, 0x9102, -+ 0x1218, 0x012e, 0x0804, 0x2b9b, 0x614c, 0x606c, 0x9106, 0x0118, -+ 0x012e, 0x0804, 0x2b98, 0x60d8, 0xd0ac, 0x0dd0, 0x7884, 0xd0fc, -+ 0x0904, 0x30fd, 0x00c6, 0x080c, 0x3eb9, 0x00ce, 0x0d88, 0x6867, -+ 0x0000, 0x7884, 0x680a, 0x7898, 0x680e, 0x789c, 0x6812, 0x2001, -+ 0x002e, 0x2004, 0x681a, 0x2001, 0x002f, 0x2004, 0x681e, 0x2001, -+ 0x0030, 0x2004, 0x6822, 0x2001, 0x0031, 0x2004, 0x6826, 0x2001, -+ 0x0034, 0x2004, 0x682a, 0x2001, 0x0035, 0x2004, 0x682e, 0x2001, -+ 0x002a, 0x2004, 0x9080, 0x0003, 0x9084, 0x00fc, 0x8004, 0x6816, -+ 0x080c, 0x3262, 0x0928, 0x7010, 0x2068, 0x6d2c, 0x6c28, 0x6b1c, -+ 0x6a18, 0x6930, 0x6808, 0xd0b4, 0x1120, 0x2029, 0x0000, 0x2021, -+ 0x0000, 0x9d80, 0x001b, 0x2039, 0x0001, 0x080c, 0x3f0c, 0x701b, -+ 0x31c0, 0x701f, 0x0001, 0x012e, 0x0005, 0x0046, 0x0086, 0x0096, -+ 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, 0x306d, -+ 0x2001, 0x12d9, 0x2003, 0x0000, 0x2021, 0x000a, 0x2061, 0x0100, -+ 0x6104, 0x0016, 0x60bb, 0x0000, 0x60bf, 0x32e1, 0x60bf, 0x0012, -+ 0x080c, 0x32d2, 0x080c, 0x3290, 0x00f6, 0x00e6, 0x00c6, 0x2d60, -+ 0x2071, 0x134a, 0x2079, 0x0090, 0x00d6, 0x2069, 0x0000, 0x6884, -+ 0xd0b4, 0x0140, 0x2001, 0x0035, 0x2004, 0x780e, 0x2001, 0x0034, -+ 0x2004, 0x780a, 0x00de, 0x2011, 0x0001, 0x080c, 0x360c, 0x00ce, -+ 0x00ee, 0x00fe, 0x080c, 0x3542, 0x080c, 0x3472, 0x05b8, 0x2001, -+ 0x020b, 0x2004, 0x9084, 0x0140, 0x1db8, 0x080c, 0x3634, 0x00f6, -+ 0x2079, 0x0300, 0x78bc, 0x00fe, 0x908c, 0x0070, 0x1560, 0x2071, -+ 0x0200, 0x7037, 0x0000, 0x7050, 0x9084, 0xff00, 0x9086, 0x3200, -+ 0x1510, 0x7037, 0x0001, 0x7050, 0x9084, 0xff00, 0x9086, 0xe100, -+ 0x11d0, 0x7037, 0x0000, 0x7054, 0x7037, 0x0000, 0x715c, 0x9106, -+ 0x1190, 0x2001, 0x111e, 0x2004, 0x9106, 0x1168, 0x00c6, 0x2061, -+ 0x0100, 0x6024, 0x9084, 0x1e00, 0x00ce, 0x0138, 0x080c, 0x347c, -+ 0x080c, 0x328b, 0x0058, 0x080c, 0x328b, 0x080c, 0x35a4, 0x080c, -+ 0x3538, 0x2001, 0x020b, 0x2004, 0xd0e4, 0x0dd8, 0x2001, 0x032a, -+ 0x2003, 0x0004, 0x2061, 0x0100, 0x6027, 0x0002, 0x001e, 0x6106, -+ 0x2011, 0x020d, 0x2013, 0x0020, 0x60bb, 0x0000, 0x60bf, 0x0108, -+ 0x60bf, 0x0012, 0x2001, 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, -+ 0x080c, 0x10cf, 0x2009, 0x0028, 0x080c, 0x1b67, 0x2001, 0x0227, -+ 0x200c, 0x2102, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, -+ 0x009e, 0x008e, 0x004e, 0x2001, 0x12d9, 0x2004, 0x9005, 0x1118, -+ 0x012e, 0x0804, 0x2b68, 0x012e, 0x2021, 0x400c, 0x0804, 0x2b6a, -+ 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0076, 0x00d6, 0x0156, -+ 0x7010, 0x2068, 0x701c, 0x20a8, 0x8000, 0x701e, 0x6804, 0x9005, -+ 0x05d0, 0x2068, 0x1f04, 0x31ce, 0x2061, 0x11ea, 0x6228, 0x632c, -+ 0x6430, 0x6534, 0x6930, 0x6808, 0xd0b4, 0x1120, 0x2029, 0x0000, -+ 0x2021, 0x0000, 0x00d6, 0x7010, 0x2068, 0x6864, 0x00de, 0x9086, -+ 0x0103, 0x0148, 0x9d80, 0x001b, 0x2039, 0x0001, 0x080c, 0x3f0c, -+ 0x701b, 0x31c0, 0x0078, 0x9d80, 0x001b, 0x21a8, 0x20a0, 0x2098, -+ 0x0006, 0x080c, 0x504f, 0x000e, 0x2039, 0x0001, 0x080c, 0x3f0f, -+ 0x701b, 0x31c0, 0x015e, 0x00de, 0x007e, 0x005e, 0x004e, 0x003e, -+ 0x002e, 0x001e, 0x0005, 0x7010, 0x2068, 0x6864, 0x9086, 0x0103, -+ 0x1118, 0x701b, 0x3260, 0x0410, 0x7010, 0x2068, 0x6868, 0xc0fd, -+ 0x686a, 0x2009, 0x007f, 0x080c, 0x55b3, 0x0110, 0x9006, 0x0010, -+ 0x080c, 0xadbf, 0x015e, 0x00de, 0x007e, 0x005e, 0x004e, 0x003e, -+ 0x002e, 0x001e, 0x0904, 0x2b98, 0x0016, 0x0026, 0x0036, 0x0046, -+ 0x0056, 0x0076, 0x00d6, 0x0156, 0x701b, 0x3239, 0x7007, 0x0003, -+ 0x0848, 0x0076, 0x6830, 0x9086, 0x0100, 0x2021, 0x400c, 0x0904, -+ 0x2b6a, 0x6d10, 0x6c0c, 0x6b24, 0x6a20, 0x6930, 0x6808, 0xd0b4, -+ 0x1120, 0x2029, 0x0000, 0x2021, 0x0000, 0x9d80, 0x001b, 0x21a8, -+ 0x20a0, 0x2098, 0x0006, 0x080c, 0x504f, 0x000e, 0x2039, 0x0001, -+ 0x080c, 0x3f0f, 0x007e, 0x701b, 0x31c0, 0x701f, 0x0001, 0x0005, -+ 0x0804, 0x2b68, 0x0156, 0x00c6, 0x6814, 0x908a, 0x001e, 0x0218, -+ 0x6833, 0x001e, 0x0010, 0x6832, 0x0078, 0x81ff, 0x0168, 0x0016, -+ 0x080c, 0x3eb9, 0x001e, 0x0130, 0x6800, 0x2060, 0x6008, 0x680a, -+ 0x2100, 0x0c58, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ce, 0x015e, -+ 0x0005, 0x0006, 0x00f6, 0x2079, 0x0000, 0x7880, 0x9086, 0x0044, -+ 0x00fe, 0x000e, 0x0005, 0x2001, 0x12d9, 0x2003, 0x0001, 0x0005, -+ 0x00f6, 0x00e6, 0x00c6, 0x2061, 0x0200, 0x2001, 0x12e2, 0x2004, -+ 0x601a, 0x2061, 0x0100, 0x2001, 0x12e1, 0x2004, 0x60ce, 0x6104, -+ 0xc1ac, 0x6106, 0x080c, 0x3eb9, 0x6813, 0x0019, 0x2070, 0x6817, -+ 0x0001, 0x2d00, 0x685a, 0x2001, 0x002e, 0x2004, 0x2072, 0x2001, -+ 0x002f, 0x2004, 0x7006, 0x2061, 0x0090, 0x2079, 0x0100, 0x2001, -+ 0x12e1, 0x2004, 0x6036, 0x2009, 0x0040, 0x080c, 0x1b67, 0x2001, -+ 0x002a, 0x2004, 0x9084, 0xfff8, 0x700a, 0x601a, 0x700f, 0x0000, -+ 0x601f, 0x0000, 0x78ca, 0x9006, 0x600a, 0x600e, 0x00ce, 0x00ee, -+ 0x00fe, 0x0005, 0x00e6, 0x080c, 0x3eb9, 0x2d60, 0x6013, 0x0019, -+ 0x2070, 0x6017, 0x0001, 0x2c00, 0x605a, 0x2001, 0x0030, 0x2004, -+ 0x2072, 0x2001, 0x0031, 0x2004, 0x7006, 0x2001, 0x002a, 0x2004, -+ 0x9084, 0xfff8, 0x700a, 0x700f, 0x0000, 0x2001, 0x032a, 0x2003, -+ 0x0004, 0x2001, 0x0300, 0x2003, 0x0000, 0x2001, 0x020d, 0x2003, -+ 0x0000, 0x2001, 0x0004, 0x200c, 0x918d, 0x0002, 0x2102, 0x00ee, -+ 0x0005, 0x0126, 0x2091, 0x8000, 0x81ff, 0x0148, 0x080c, 0x2338, -+ 0x1130, 0x9006, 0x080c, 0x2290, 0x9006, 0x080c, 0x2273, 0x7884, -+ 0x9084, 0x0007, 0x0002, 0x331e, 0x3327, 0x3330, 0x331b, 0x331b, -+ 0x331b, 0x331b, 0x331b, 0x012e, 0x0804, 0x2b9b, 0x2009, 0x0114, -+ 0x2104, 0x9085, 0x0800, 0x200a, 0x080c, 0x349a, 0x0080, 0x2009, -+ 0x0114, 0x2104, 0x9085, 0x4000, 0x200a, 0x080c, 0x349a, 0x0038, -+ 0x81ff, 0x0128, 0x012e, 0x2021, 0x400b, 0x0804, 0x2b6a, 0x0086, -+ 0x0096, 0x00a6, 0x00b6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x080c, -+ 0x306d, 0x2009, 0x0101, 0x210c, 0x0016, 0x2001, 0x0032, 0x2034, -+ 0x2001, 0x0033, 0x202c, 0x9006, 0x2048, 0x2050, 0x2058, 0x080c, -+ 0x3700, 0x080c, 0x3660, 0x903e, 0x2720, 0x00f6, 0x00e6, 0x00c6, -+ 0x2d60, 0x2071, 0x134a, 0x2079, 0x0090, 0x00d6, 0x2069, 0x0000, -+ 0x6884, 0xd0b4, 0x0140, 0x2001, 0x0035, 0x2004, 0x780e, 0x2001, -+ 0x0034, 0x2004, 0x780a, 0x00de, 0x2011, 0x0001, 0x080c, 0x360c, -+ 0x080c, 0x360c, 0x00ce, 0x00ee, 0x00fe, 0x080c, 0x3542, 0x00f6, -+ 0x2079, 0x0000, 0x7884, 0x00fe, 0xd0bc, 0x0178, 0x2001, 0x0201, -+ 0x200c, 0x81ff, 0x0150, 0x080c, 0x3520, 0x2900, 0x9a05, 0x9b05, -+ 0x0120, 0x080c, 0x347c, 0x0804, 0x342b, 0x080c, 0x3634, 0x080c, -+ 0x35a4, 0x080c, 0x3503, 0x080c, 0x3538, 0x00f6, 0x2079, 0x0100, -+ 0x7824, 0xd0ac, 0x0130, 0x8b58, 0x080c, 0x347c, 0x00fe, 0x0804, -+ 0x342b, 0x00fe, 0x080c, 0x3472, 0x1150, 0x8948, 0x2001, 0x0032, -+ 0x2602, 0x2001, 0x0033, 0x2502, 0x080c, 0x347c, 0x0080, 0x87ff, -+ 0x0138, 0x2001, 0x0201, 0x2004, 0x9005, 0x1908, 0x8739, 0x0038, -+ 0x2001, 0x1347, 0x2004, 0x9086, 0x0000, 0x1904, 0x3377, 0x2001, -+ 0x032f, 0x2003, 0x00f6, 0x8631, 0x1208, 0x8529, 0x2500, 0x9605, -+ 0x0904, 0x342b, 0x7884, 0xd0bc, 0x0128, 0x2900, 0x9a05, 0x9b05, -+ 0x1904, 0x342b, 0x6013, 0x0019, 0x2001, 0x032a, 0x2003, 0x0004, -+ 0x7884, 0xd0ac, 0x1148, 0x2001, 0x1347, 0x2003, 0x0003, 0x2001, -+ 0x032a, 0x2003, 0x0009, 0x0040, 0x6017, 0x0001, 0x2001, 0x002d, -+ 0x2004, 0x9005, 0x0108, 0x6016, 0x2c00, 0x605a, 0x2009, 0x0040, -+ 0x080c, 0x1b67, 0x2d00, 0x685a, 0x6813, 0x0019, 0x7884, 0xd0a4, -+ 0x1180, 0x6817, 0x0000, 0x00c6, 0x20a9, 0x0004, 0x2061, 0x0090, -+ 0x602b, 0x0008, 0x2001, 0x0203, 0x2004, 0x1f04, 0x3400, 0x00ce, -+ 0x0040, 0x6817, 0x0001, 0x2001, 0x002c, 0x2004, 0x9005, 0x0108, -+ 0x6816, 0x00f6, 0x00c6, 0x2079, 0x0100, 0x2061, 0x0090, 0x7827, -+ 0x0002, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0x601a, 0x0006, -+ 0x2001, 0x002b, 0x2004, 0x601e, 0x78c6, 0x000e, 0x78ca, 0x00ce, -+ 0x00fe, 0x0804, 0x3355, 0x001e, 0x2001, 0x032a, 0x2003, 0x0004, -+ 0x2061, 0x0100, 0x6027, 0x0002, 0x6106, 0x2011, 0x020d, 0x2013, -+ 0x0020, 0x2001, 0x0004, 0x200c, 0x918c, 0xfffd, 0x2102, 0x080c, -+ 0x10cf, 0x7884, 0x9084, 0x0003, 0x9086, 0x0002, 0x01a0, 0x2009, -+ 0x0028, 0x080c, 0x1b67, 0x2001, 0x0227, 0x200c, 0x2102, 0x6050, -+ 0x9084, 0xb7ef, 0x6052, 0x602f, 0x0000, 0x604b, 0xf7f7, 0x6043, -+ 0x0090, 0x6043, 0x0010, 0x2908, 0x2a10, 0x2b18, 0x2b00, 0x9a05, -+ 0x9905, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x00be, 0x00ae, 0x009e, -+ 0x008e, 0x1118, 0x012e, 0x0804, 0x2b68, 0x012e, 0x2021, 0x400c, -+ 0x0804, 0x2b6a, 0x9085, 0x0001, 0x1d04, 0x347b, 0x2091, 0x6000, -+ 0x8420, 0x9486, 0x0064, 0x0005, 0x2001, 0x0105, 0x2003, 0x0010, -+ 0x2001, 0x032a, 0x2003, 0x0004, 0x2001, 0x009a, 0x2003, 0x0004, -+ 0x2001, 0x1347, 0x2003, 0x0000, 0x2001, 0x134a, 0x2003, 0x0000, -+ 0x2009, 0x0048, 0x080c, 0x1b67, 0x2001, 0x0227, 0x2024, 0x2402, -+ 0x9026, 0x0005, 0x00f6, 0x2079, 0x0100, 0x2001, 0x1116, 0x200c, -+ 0x7932, 0x7936, 0x080c, 0x1f8d, 0x7850, 0x9084, 0xfbff, 0x9085, -+ 0x0030, 0x7852, 0x2019, 0x01f4, 0x8319, 0x1df0, 0x9084, 0xffcf, -+ 0x9085, 0x2000, 0x7852, 0x20a9, 0x0046, 0x1d04, 0x34b5, 0x2091, -+ 0x6000, 0x1f04, 0x34b5, 0x7850, 0x9085, 0x0400, 0x9084, 0xdfff, -+ 0x7852, 0x2001, 0x0021, 0x2004, 0x9084, 0x0003, 0x9086, 0x0001, -+ 0x1120, 0x7850, 0x9084, 0xdfff, 0x7852, 0x784b, 0xf7f7, 0x7843, -+ 0x0090, 0x7843, 0x0010, 0x20a9, 0x0028, 0xa001, 0x1f04, 0x34d5, -+ 0x7850, 0x9085, 0x1400, 0x7852, 0x2019, 0x61a8, 0x7854, 0xa001, -+ 0xa001, 0xd08c, 0x1110, 0x8319, 0x1dc8, 0x7827, 0x0048, 0x7850, -+ 0x9085, 0x0400, 0x7852, 0x7843, 0x0040, 0x2019, 0x01f4, 0xa001, -+ 0xa001, 0x8319, 0x1de0, 0x2001, 0x0100, 0x080c, 0x2401, 0x7827, -+ 0x0020, 0x7843, 0x0000, 0x2001, 0x0000, 0x080c, 0x2401, 0x7827, -+ 0x0048, 0x00fe, 0x0005, 0x7884, 0xd0ac, 0x11c8, 0x00f6, 0x00e6, -+ 0x2071, 0x1347, 0x2079, 0x0320, 0x2001, 0x0201, 0x2004, 0x9005, -+ 0x0160, 0x7000, 0x9086, 0x0000, 0x1140, 0x0051, 0xd0bc, 0x0108, -+ 0x8738, 0x7003, 0x0003, 0x782b, 0x0019, 0x00ee, 0x00fe, 0x0005, -+ 0x00f6, 0x2079, 0x0300, 0x78bc, 0x00fe, 0x908c, 0x0070, 0x0178, -+ 0x2009, 0x0032, 0x260a, 0x2009, 0x0033, 0x250a, 0xd0b4, 0x0108, -+ 0x8a50, 0xd0ac, 0x0108, 0x8948, 0xd0a4, 0x0108, 0x8b58, 0x0005, -+ 0x00f6, 0x2079, 0x0200, 0x781c, 0xd084, 0x0110, 0x7837, 0x0050, -+ 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0100, 0x2001, 0x12e2, 0x2004, -+ 0x70e2, 0x080c, 0x3281, 0x1188, 0x2001, 0x111e, 0x2004, 0x2009, -+ 0x111d, 0x210c, 0x918c, 0x00ff, 0x706e, 0x716a, 0x7066, 0x918d, -+ 0x3200, 0x7162, 0x7073, 0xe109, 0x0080, 0x702c, 0x9085, 0x0002, -+ 0x702e, 0x2009, 0x1116, 0x210c, 0x716e, 0x7063, 0x0100, 0x7166, -+ 0x719e, 0x706b, 0x0000, 0x7073, 0x0809, 0x7077, 0x0008, 0x7078, -+ 0x9080, 0x0100, 0x707a, 0x7080, 0x8000, 0x7082, 0x7087, 0xaaaa, -+ 0x9006, 0x708a, 0x708e, 0x707e, 0x70d6, 0x70ab, 0x0036, 0x70af, -+ 0x95d5, 0x7014, 0x9084, 0x1984, 0x9085, 0x0012, 0x7016, 0x080c, -+ 0x3634, 0x00f6, 0x2071, 0x1347, 0x2079, 0x0320, 0x00d6, 0x2069, -+ 0x0000, 0x6884, 0xd0b4, 0x0120, 0x689c, 0x780e, 0x6898, 0x780a, -+ 0x00de, 0x2011, 0x0011, 0x080c, 0x360c, 0x2011, 0x0001, 0x080c, -+ 0x360c, 0x00fe, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x2071, 0x1347, -+ 0x2079, 0x0320, 0x792c, 0xd1fc, 0x0904, 0x3609, 0x782b, 0x0002, -+ 0x9026, 0xd19c, 0x1904, 0x3605, 0x7000, 0x0002, 0x3609, 0x35ba, -+ 0x35ea, 0x3605, 0xd1bc, 0x1170, 0xd1dc, 0x1190, 0x8001, 0x7002, -+ 0x2011, 0x0001, 0x080c, 0x360c, 0x0904, 0x3609, 0x080c, 0x360c, -+ 0x0804, 0x3609, 0x00f6, 0x2079, 0x0300, 0x78bf, 0x0000, 0x00fe, -+ 0x7810, 0x7914, 0x782b, 0x0004, 0x7812, 0x7916, 0x2001, 0x0201, -+ 0x200c, 0x81ff, 0x0de8, 0x080c, 0x3520, 0x2009, 0x0001, 0x00f6, -+ 0x2079, 0x0300, 0x78b8, 0x00fe, 0xd0ec, 0x0110, 0x2009, 0x0011, -+ 0x792a, 0x00f8, 0x8001, 0x7002, 0x9184, 0x0880, 0x1140, 0x782c, -+ 0xd0fc, 0x1904, 0x35ae, 0x2011, 0x0001, 0x00b1, 0x0090, 0x6010, -+ 0x9092, 0x0004, 0x9086, 0x0015, 0x1120, 0x6000, 0x605a, 0x2011, -+ 0x0031, 0x6212, 0xd1dc, 0x1960, 0x0828, 0x782b, 0x0004, 0x7003, -+ 0x0000, 0x00ee, 0x00fe, 0x0005, 0x6014, 0x9005, 0x0520, 0x8001, -+ 0x6016, 0x6058, 0x6110, 0x9140, 0x2804, 0x7802, 0x8840, 0x2804, -+ 0x7806, 0x8840, 0x2804, 0x7812, 0x8840, 0x2804, 0x7816, 0x8840, -+ 0x7a2a, 0x7000, 0x8000, 0x7002, 0x6058, 0x9802, 0x908a, 0x0029, -+ 0x1138, 0x6058, 0x9080, 0x0001, 0x2004, 0x605a, 0x2001, 0x0019, -+ 0x6012, 0x9085, 0x0001, 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x2071, -+ 0x134a, 0x2079, 0x0090, 0x792c, 0xd1fc, 0x01f0, 0x782b, 0x0002, -+ 0x2d60, 0x9026, 0x7000, 0x0002, 0x365c, 0x3647, 0x3653, 0x8001, -+ 0x7002, 0xd19c, 0x1188, 0x2011, 0x0001, 0x080c, 0x360c, 0x0160, -+ 0x080c, 0x360c, 0x0048, 0x8001, 0x7002, 0x782c, 0xd0fc, 0x1d30, -+ 0x2011, 0x0001, 0x080c, 0x360c, 0x00ce, 0x00ee, 0x00fe, 0x0005, -+ 0x00f6, 0x00e6, 0x00c6, 0x2061, 0x0200, 0x2001, 0x12e2, 0x2004, -+ 0x601a, 0x2061, 0x0100, 0x2001, 0x12e1, 0x2004, 0x60ce, 0x6104, -+ 0xc1ac, 0x6106, 0x2001, 0x002c, 0x2004, 0x9005, 0x01f8, 0x2038, -+ 0x2001, 0x002e, 0x2024, 0x2001, 0x002f, 0x201c, 0x080c, 0x3eb9, -+ 0x6813, 0x0019, 0x6f16, 0x2d00, 0x685a, 0x978a, 0x0007, 0x0220, -+ 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, 0x6858, 0x9080, -+ 0x0019, 0x04c1, 0x1d90, 0x2d00, 0x685a, 0x0088, 0x080c, 0x3eb9, -+ 0x6813, 0x0019, 0x2070, 0x6817, 0x0001, 0x2d00, 0x685a, 0x2001, -+ 0x002e, 0x2004, 0x2072, 0x2001, 0x002f, 0x2004, 0x7006, 0x2061, -+ 0x0090, 0x2079, 0x0100, 0x2001, 0x12e1, 0x2004, 0x6036, 0x2009, -+ 0x0040, 0x080c, 0x1b67, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, -+ 0x700a, 0x601a, 0x0006, 0x2001, 0x002b, 0x2004, 0x700e, 0x601e, -+ 0x78c6, 0x000e, 0x78ca, 0x9006, 0x600a, 0x600e, 0x00ce, 0x00ee, -+ 0x00fe, 0x0005, 0x00e6, 0x2071, 0x0080, 0x20e9, 0x0001, 0x20a0, -+ 0x20e1, 0x0000, 0x2099, 0x0088, 0x702b, 0x0026, 0x7402, 0x7306, -+ 0x9006, 0x700a, 0x700e, 0x810b, 0x810b, 0x21a8, 0x810b, 0x7112, -+ 0x702b, 0x0041, 0x702c, 0xd0fc, 0x0de8, 0x702b, 0x0002, 0x702b, -+ 0x0040, 0x4005, 0x7400, 0x7304, 0x87ff, 0x0180, 0x00c6, 0x00d6, -+ 0x2d60, 0x00c6, 0x080c, 0x3eb9, 0x00ce, 0x6058, 0x2070, 0x2d00, -+ 0x7006, 0x605a, 0x00de, 0x00ce, 0x9085, 0x0001, 0x00ee, 0x0005, -+ 0x00e6, 0x2001, 0x002d, 0x2004, 0x9005, 0x0508, 0x2038, 0x2001, -+ 0x0030, 0x2024, 0x2001, 0x0031, 0x201c, 0x080c, 0x3eb9, 0x2d60, -+ 0x6813, 0x0019, 0x6f16, 0x2d00, 0x685a, 0x978a, 0x0007, 0x0220, -+ 0x2138, 0x2009, 0x0007, 0x0010, 0x2708, 0x903e, 0x6858, 0x9080, -+ 0x0019, 0x080c, 0x36ca, 0x1d88, 0x2d00, 0x685a, 0x00e0, 0x080c, -+ 0x3eb9, 0x2d60, 0x6013, 0x0019, 0x2070, 0x6017, 0x0001, 0x2c00, -+ 0x605a, 0x2001, 0x0030, 0x2004, 0x2072, 0x2001, 0x0031, 0x2004, -+ 0x7006, 0x2001, 0x002a, 0x2004, 0x9084, 0xfff8, 0x700a, 0x2001, -+ 0x002b, 0x2004, 0x700e, 0x2001, 0x032a, 0x2003, 0x0004, 0x7884, -+ 0xd0ac, 0x1180, 0x2001, 0x0101, 0x200c, 0x918d, 0x0200, 0x2102, -+ 0x6017, 0x0000, 0x2001, 0x1347, 0x2003, 0x0003, 0x2001, 0x032a, -+ 0x2003, 0x0009, 0x2001, 0x0300, 0x2003, 0x0000, 0x2001, 0x020d, -+ 0x2003, 0x0000, 0x2001, 0x0004, 0x200c, 0x918d, 0x0002, 0x2102, -+ 0x00ee, 0x0005, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0012, 0x2001, -+ 0x1140, 0x20e9, 0x0001, 0x20a0, 0x9006, 0x4004, 0x2009, 0x013c, -+ 0x200a, 0x012e, 0x7880, 0x9086, 0x0052, 0x0108, 0x0005, 0x0804, -+ 0x2b68, 0x7d98, 0x7c9c, 0x0804, 0x2c5d, 0x080c, 0x62e4, 0x0110, -+ 0x080c, 0x50b9, 0x2069, 0x1152, 0x2d00, 0x2009, 0x0030, 0x7a8c, -+ 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x080c, 0x3f0c, 0x701b, -+ 0x379a, 0x0005, 0x2001, 0x110d, 0x2004, 0xd0b4, 0x1130, 0x3b00, -+ 0x3a08, 0xc194, 0xc095, 0x20d8, 0x21d0, 0x2069, 0x1152, 0x6800, -+ 0x9005, 0x0904, 0x2b9b, 0x6804, 0xd0ac, 0x0118, 0xd0a4, 0x0904, -+ 0x2b9b, 0xd094, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0138, 0x6200, -+ 0x9292, 0x0005, 0x0218, 0x918c, 0xffdf, 0x0010, 0x918d, 0x0020, -+ 0x6106, 0x00ce, 0xd08c, 0x00c6, 0x2061, 0x0100, 0x6104, 0x0118, -+ 0x918d, 0x0010, 0x0010, 0x918c, 0xffef, 0x6106, 0x00ce, 0xd084, -+ 0x0158, 0x6a28, 0x928a, 0x007f, 0x1a04, 0x2b9b, 0x9288, 0x298c, -+ 0x210d, 0x918c, 0x00ff, 0x615e, 0xd0dc, 0x0130, 0x6828, 0x908a, -+ 0x007f, 0x1a04, 0x2b9b, 0x6056, 0x6888, 0x9084, 0x0030, 0x8004, -+ 0x8004, 0x8004, 0x8004, 0x0006, 0x2009, 0x12e8, 0x9080, 0x2081, -+ 0x2005, 0x200a, 0x000e, 0x2009, 0x12e9, 0x9080, 0x2085, 0x2005, -+ 0x200a, 0x6808, 0x908a, 0x0100, 0x0a04, 0x2b9b, 0x908a, 0x0841, -+ 0x1a04, 0x2b9b, 0x9084, 0x0007, 0x1904, 0x2b9b, 0x680c, 0x9005, -+ 0x0904, 0x2b9b, 0x6810, 0x9005, 0x0904, 0x2b9b, 0x6848, 0x6940, -+ 0x910a, 0x1a04, 0x2b9b, 0x8001, 0x0904, 0x2b9b, 0x684c, 0x6944, -+ 0x910a, 0x1a04, 0x2b9b, 0x8001, 0x0904, 0x2b9b, 0x6980, 0xd1e4, -+ 0x0140, 0x00c6, 0x2061, 0x0100, 0x6004, 0x9085, 0x0100, 0x6006, -+ 0x00ce, 0x2009, 0x12bb, 0x200b, 0x0000, 0x2001, 0x1174, 0x2004, -+ 0xd0c4, 0x0140, 0x7884, 0x200a, 0x2009, 0x017f, 0x200a, 0x3b00, -+ 0xc085, 0x20d8, 0x6814, 0x908c, 0x00ff, 0x6146, 0x8007, 0x9084, -+ 0x00ff, 0x604a, 0x080c, 0x65bd, 0x080c, 0x58f4, 0x080c, 0x5946, -+ 0x6808, 0x602a, 0x080c, 0x1a81, 0x2009, 0x0170, 0x200b, 0x0080, -+ 0xa001, 0xa001, 0x200b, 0x0000, 0x0036, 0x6b08, 0x080c, 0x1fe8, -+ 0x003e, 0x6000, 0x9086, 0x0000, 0x1904, 0x393a, 0x6818, 0x691c, -+ 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, 0x611a, -+ 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0148, 0x6830, 0x6934, 0x6a38, -+ 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0010, 0x9084, 0xf0ff, -+ 0x6006, 0x610a, 0x620e, 0x6312, 0x8007, 0x810f, 0x8217, 0x831f, -+ 0x20a9, 0x0004, 0x20a1, 0x12ea, 0x20e9, 0x0001, 0x4001, 0x080c, -+ 0x72cb, 0x00c6, 0x900e, 0x20a9, 0x0001, 0x6b70, 0xd384, 0x0510, -+ 0x0068, 0x2009, 0x0100, 0x210c, 0x918e, 0x0008, 0x1110, 0x839d, -+ 0x0010, 0x83f5, 0x3e18, 0x12b0, 0x3508, 0x8109, 0x080c, 0x6b21, -+ 0x6878, 0x6016, 0x6874, 0x2008, 0x9084, 0xff00, 0x8007, 0x600a, -+ 0x9184, 0x00ff, 0x6006, 0x8108, 0x1118, 0x6003, 0x0003, 0x0010, -+ 0x6003, 0x0001, 0x1f04, 0x3891, 0x00ce, 0x00c6, 0x2061, 0x12d6, -+ 0x6a88, 0x9284, 0xc000, 0x2010, 0x9286, 0x0000, 0x1158, 0x2063, -+ 0x0000, 0x2001, 0x0001, 0x080c, 0x2290, 0x2001, 0x0001, 0x080c, -+ 0x2273, 0x0090, 0x9286, 0x4000, 0x1148, 0x2063, 0x0001, 0x9006, -+ 0x080c, 0x2290, 0x9006, 0x080c, 0x2273, 0x0030, 0x9286, 0x8000, -+ 0x1d30, 0x2063, 0x0002, 0x0c98, 0x00ce, 0x6888, 0xd0ec, 0x0130, -+ 0x2011, 0x0114, 0x2204, 0x9085, 0x0100, 0x2012, 0x6a80, 0x9284, -+ 0x0030, 0x9086, 0x0030, 0x1128, 0x9294, 0xffcf, 0x9295, 0x0020, -+ 0x6a82, 0x2001, 0x12a7, 0x6a80, 0x9294, 0x0030, 0x928e, 0x0000, -+ 0x0170, 0x928e, 0x0010, 0x0118, 0x928e, 0x0020, 0x0140, 0x2003, -+ 0xaaaa, 0x080c, 0x205d, 0x2001, 0x1298, 0x2102, 0x0008, 0x2102, -+ 0x00c6, 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x00ce, -+ 0x080c, 0x62e4, 0x0128, 0x080c, 0x41f5, 0x0110, 0x080c, 0x1fad, -+ 0x60d0, 0x9005, 0x01d0, 0x6003, 0x0001, 0x2009, 0x3920, 0x00e0, -+ 0x080c, 0x62e4, 0x1178, 0x2011, 0x61aa, 0x080c, 0x71fa, 0x2011, -+ 0x619d, 0x080c, 0x72bf, 0x2001, 0x12a8, 0x2003, 0x0000, 0x080c, -+ 0x621a, 0x0040, 0x080c, 0x4faa, 0x0028, 0x6003, 0x0004, 0x2009, -+ 0x393a, 0x0010, 0x0804, 0x2b68, 0x2001, 0x0170, 0x2004, 0x9084, -+ 0x00ff, 0x9086, 0x004c, 0x1118, 0x2091, 0x30bd, 0x0817, 0x2091, -+ 0x303d, 0x0817, 0x6000, 0x9086, 0x0000, 0x0904, 0x2b98, 0x2069, -+ 0x1152, 0x7890, 0x6842, 0x7894, 0x6846, 0x2d00, 0x2009, 0x0030, -+ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x0804, 0x3f0f, -+ 0x9006, 0x080c, 0x1fad, 0x81ff, 0x1904, 0x2b98, 0x080c, 0x62e4, -+ 0x1188, 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, -+ 0x0001, 0x080c, 0x2987, 0x0118, 0x6130, 0xc18d, 0x6132, 0x080c, -+ 0x621a, 0x0020, 0x080c, 0x50b9, 0x080c, 0x4faa, 0x0804, 0x2b68, -+ 0x81ff, 0x1904, 0x2b98, 0x080c, 0x62e4, 0x1110, 0x0804, 0x2b98, -+ 0x618c, 0x81ff, 0x01a8, 0x7047, 0x0000, 0x2001, 0x1580, 0x2009, -+ 0x0040, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0126, 0x2091, 0x8000, -+ 0x2039, 0x0001, 0x080c, 0x3f0f, 0x701b, 0x2b66, 0x012e, 0x0005, -+ 0x7047, 0x0001, 0x00d6, 0x2069, 0x1580, 0x20a9, 0x0040, 0x20e9, -+ 0x0001, 0x20a1, 0x1580, 0x2019, 0xffff, 0x4304, 0x6554, 0x9588, -+ 0x298c, 0x210d, 0x918c, 0x00ff, 0x216a, 0x900e, 0x2011, 0x0002, -+ 0x2100, 0x9506, 0x01a8, 0x080c, 0x5608, 0x1190, 0x6014, 0x821c, -+ 0x0238, 0x9398, 0x1580, 0x9085, 0xff00, 0x8007, 0x201a, 0x0038, -+ 0x9398, 0x1580, 0x2324, 0x94a4, 0xff00, 0x9405, 0x201a, 0x8210, -+ 0x8108, 0x9182, 0x0080, 0x1208, 0x0c18, 0x8201, 0x8007, 0x2d0c, -+ 0x9105, 0x206a, 0x00de, 0x20a9, 0x0040, 0x20a1, 0x1580, 0x2099, -+ 0x1580, 0x080c, 0x504f, 0x0804, 0x398d, 0x080c, 0x3ef0, 0x0904, -+ 0x2b9b, 0x00c6, 0x080c, 0x3eb9, 0x00ce, 0x1120, 0x2009, 0x0002, -+ 0x0804, 0x2b98, 0x2001, 0x1153, 0x2004, 0xd0b4, 0x0568, 0x7884, -+ 0x9084, 0xff00, 0x908e, 0x7e00, 0x0538, 0x908e, 0x7f00, 0x0520, -+ 0x908e, 0x8000, 0x0508, 0x080c, 0x2982, 0x1148, 0x6000, 0xd08c, -+ 0x11d8, 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x11a8, 0x6867, -+ 0x0000, 0x6868, 0xc0fd, 0x686a, 0x080c, 0xaabe, 0x1120, 0x2009, -+ 0x0003, 0x0804, 0x2b98, 0x7007, 0x0003, 0x701b, 0x3a20, 0x0005, -+ 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x20a9, 0x002b, 0x20e1, 0x0001, -+ 0x2c98, 0x9de8, 0x0002, 0x20e9, 0x0001, 0x2da0, 0x4003, 0x20a9, -+ 0x0004, 0x9d80, 0x0006, 0x20a0, 0x9c80, 0x0006, 0x2098, 0x080c, -+ 0x504f, 0x20a9, 0x0004, 0x9d80, 0x000a, 0x20a0, 0x9c80, 0x000a, -+ 0x2098, 0x080c, 0x504f, 0x2d00, 0x2039, 0x0001, 0x2009, 0x002b, -+ 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804, 0x3f0f, 0x81ff, 0x1904, -+ 0x2b98, 0x080c, 0x3ece, 0x0904, 0x2b9b, 0x080c, 0x5767, 0x0804, -+ 0x2b68, 0x81ff, 0x1904, 0x2b98, 0x7888, 0x908a, 0x1000, 0x1a04, -+ 0x2b9b, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x080c, 0x57a6, 0x0904, -+ 0x2b98, 0x2019, 0x0004, 0x900e, 0x080c, 0x5779, 0x7984, 0x810f, -+ 0x7a88, 0x0491, 0x0804, 0x2b68, 0x00f6, 0x2d78, 0x789c, 0x908a, -+ 0x1000, 0x12c0, 0x080c, 0x3eee, 0x01a8, 0x080c, 0x57a6, 0x2009, -+ 0x0002, 0x0160, 0x2019, 0x0004, 0x080c, 0x5779, 0x2009, 0x0003, -+ 0x0128, 0x7998, 0x7a9c, 0x810f, 0x00b9, 0x0070, 0x7897, 0x4005, -+ 0x799a, 0x0010, 0x7897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, -+ 0x0030, 0x2f68, 0x00fe, 0x0005, 0x7897, 0x4000, 0x900e, 0x9085, -+ 0x0001, 0x2f68, 0x00fe, 0x0005, 0x9186, 0x00ff, 0x0110, 0x0071, -+ 0x0060, 0x2029, 0x007e, 0x2061, 0x1100, 0x6454, 0x2400, 0x9506, -+ 0x0110, 0x2508, 0x0019, 0x8529, 0x1ec8, 0x0005, 0x080c, 0x5608, -+ 0x1138, 0x2200, 0x8003, 0x800b, 0x810b, 0x9108, 0x080c, 0x7206, -+ 0x0005, 0x81ff, 0x1904, 0x2b98, 0x080c, 0x3ece, 0x0904, 0x2b9b, -+ 0x080c, 0x56ca, 0x0904, 0x2b98, 0x080c, 0x5770, 0x0804, 0x2b68, -+ 0x81ff, 0x1904, 0x2b98, 0x080c, 0x3ece, 0x0904, 0x2b9b, 0x080c, -+ 0x56ca, 0x0904, 0x2b98, 0x080c, 0x575e, 0x0804, 0x2b68, 0x6100, -+ 0x0804, 0x2b68, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x2001, 0x1100, -+ 0x2004, 0x9086, 0x0003, 0x1904, 0x2b98, 0x00d6, 0x9ce8, 0x000a, -+ 0x7984, 0xd184, 0x0110, 0x9ce8, 0x0006, 0x680c, 0x8007, 0x789e, -+ 0x6808, 0x8007, 0x789a, 0x6b04, 0x831f, 0x6a00, 0x8217, 0x00de, -+ 0x6100, 0x918c, 0x0200, 0x0804, 0x2b68, 0x7884, 0x909c, 0x007f, -+ 0x939a, 0x0003, 0x1a04, 0x2b98, 0x6254, 0x9294, 0x00ff, 0x9084, -+ 0xff00, 0x8007, 0x9206, 0x1560, 0x2031, 0x1148, 0x2009, 0x013c, -+ 0x2136, 0x2001, 0x1140, 0x2009, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, -+ 0x7d98, 0x2039, 0x0001, 0x0006, 0x7884, 0x9084, 0x0080, 0x1118, -+ 0x000e, 0x0804, 0x3f0f, 0x000e, 0x2031, 0x0000, 0x2061, 0x11ea, -+ 0x6606, 0x6116, 0x670e, 0x6012, 0x622a, 0x632e, 0x6432, 0x6536, -+ 0x2c10, 0x080c, 0x0f22, 0x7007, 0x0002, 0x701b, 0x3b62, 0x0005, -+ 0x81ff, 0x1904, 0x2b98, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x6004, -+ 0x9084, 0x00ff, 0x9086, 0x0006, 0x1904, 0x2b98, 0x00c6, 0x080c, -+ 0x3eb9, 0x00ce, 0x0904, 0x2b98, 0x6867, 0x0000, 0x6868, 0xc0fd, -+ 0x686a, 0x080c, 0xaa65, 0x0904, 0x2b98, 0x7007, 0x0003, 0x701b, -+ 0x3b66, 0x0005, 0x080c, 0x376a, 0x0804, 0x2b68, 0x6830, 0x9086, -+ 0x0100, 0x0904, 0x2b98, 0x9d80, 0x001b, 0x2009, 0x000c, 0x7a8c, -+ 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x0804, 0x3f0f, 0x9006, -+ 0x080c, 0x1fad, 0x7884, 0x9084, 0x00ff, 0x9086, 0x00ff, 0x0118, -+ 0x81ff, 0x1904, 0x2b98, 0x080c, 0x62e4, 0x0110, 0x080c, 0x50b9, -+ 0x7888, 0x908a, 0x1000, 0x1a04, 0x2b9b, 0x7984, 0x918c, 0xff00, -+ 0x810f, 0x9186, 0x00ff, 0x0138, 0x9182, 0x007f, 0x1a04, 0x2b9b, -+ 0x2100, 0x080c, 0x1f77, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, -+ 0x2061, 0x1317, 0x601b, 0x0000, 0x601f, 0x0000, 0x080c, 0x62e4, -+ 0x1178, 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, -+ 0x0001, 0x9085, 0x0001, 0x080c, 0x6331, 0x080c, 0x621a, 0x0438, -+ 0x2011, 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, -+ 0x080c, 0x87a2, 0x0036, 0x901e, 0x080c, 0x8847, 0x003e, 0x2061, -+ 0x0100, 0x2001, 0x1116, 0x2004, 0x9084, 0x00ff, 0x810f, 0x9105, -+ 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x12d3, 0x200b, -+ 0x0000, 0x2009, 0x002d, 0x2011, 0x4fe1, 0x080c, 0x7283, 0x7984, -+ 0x918c, 0xff00, 0x810f, 0x080c, 0x62e4, 0x1110, 0x2009, 0x00ff, -+ 0x7a88, 0x080c, 0x3aa4, 0x012e, 0x00ce, 0x002e, 0x0804, 0x2b68, -+ 0x7984, 0x918c, 0xff00, 0x810f, 0x00c6, 0x080c, 0x55b3, 0x2c08, -+ 0x00ce, 0x1904, 0x2b9b, 0x0804, 0x2b68, 0x81ff, 0x0120, 0x2009, -+ 0x0001, 0x0804, 0x2b98, 0x60d8, 0xd0ac, 0x1130, 0xd09c, 0x1120, -+ 0x2009, 0x0005, 0x0804, 0x2b98, 0x080c, 0x3eb9, 0x1120, 0x2009, -+ 0x0002, 0x0804, 0x2b98, 0x7984, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, -+ 0x2039, 0x0001, 0x080c, 0x3f0c, 0x701b, 0x3c1f, 0x0005, 0x2009, -+ 0x0080, 0x080c, 0x5608, 0x1130, 0x6004, 0x9084, 0x00ff, 0x9086, -+ 0x0006, 0x0120, 0x2021, 0x400a, 0x0804, 0x2b6a, 0x00d6, 0x9de8, -+ 0x0019, 0x6900, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820, -+ 0x90be, 0x0100, 0x0904, 0x3c99, 0x90be, 0x0112, 0x0904, 0x3c99, -+ 0x90be, 0x0113, 0x0904, 0x3c99, 0x90be, 0x0114, 0x0904, 0x3c99, -+ 0x90be, 0x0117, 0x0904, 0x3c99, 0x90be, 0x011a, 0x0904, 0x3c99, -+ 0x90be, 0x011c, 0x0904, 0x3c99, 0x90be, 0x0121, 0x05c8, 0x90be, -+ 0x0131, 0x05b0, 0x90be, 0x0171, 0x05e0, 0x90be, 0x0173, 0x05c8, -+ 0x90be, 0x01a1, 0x1120, 0x6830, 0x8007, 0x6832, 0x04b8, 0x90be, -+ 0x0212, 0x0558, 0x90be, 0x0213, 0x0540, 0x90be, 0x0214, 0x01c8, -+ 0x90be, 0x0217, 0x0180, 0x90be, 0x021a, 0x1120, 0x6838, 0x8007, -+ 0x683a, 0x00f8, 0x90be, 0x021f, 0x01e0, 0x90be, 0x0300, 0x01c8, -+ 0x00de, 0x0804, 0x2b9b, 0x9d80, 0x0010, 0x20a9, 0x0007, 0x080c, -+ 0x3cda, 0x9d80, 0x000e, 0x20a9, 0x0001, 0x080c, 0x3cda, 0x0048, -+ 0x9d80, 0x000c, 0x080c, 0x3ce8, 0x0048, 0x9d80, 0x000e, 0x080c, -+ 0x3ce8, 0x9d80, 0x000c, 0x20a9, 0x0001, 0x04e1, 0x00c6, 0x080c, -+ 0x3eb9, 0x0548, 0x6868, 0xc0fd, 0x686a, 0x6867, 0x0119, 0x9006, -+ 0x6882, 0x687f, 0x0020, 0x688b, 0x0001, 0x810b, 0x69ae, 0x68b2, -+ 0x6ab6, 0x6bba, 0x6cbe, 0x6dc2, 0x69c6, 0x68ca, 0x00ce, 0x00de, -+ 0x6866, 0x6822, 0x6868, 0xc0fd, 0x686a, 0x6804, 0x2068, 0x080c, -+ 0xaa81, 0x1120, 0x2009, 0x0003, 0x0804, 0x2b98, 0x7007, 0x0003, -+ 0x701b, 0x3cd1, 0x0005, 0x00ce, 0x00de, 0x2009, 0x0002, 0x0804, -+ 0x2b98, 0x6820, 0x9086, 0x8001, 0x1904, 0x2b68, 0x2009, 0x0004, -+ 0x0804, 0x2b98, 0x0016, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, -+ 0x290a, 0x8108, 0x280a, 0x8108, 0x1f04, 0x3cdc, 0x001e, 0x0005, -+ 0x0016, 0x00a6, 0x00b6, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, -+ 0x2054, 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, -+ 0x8108, 0x280a, 0x00be, 0x00ae, 0x001e, 0x0005, 0x81ff, 0x0120, -+ 0x2009, 0x0001, 0x0804, 0x2b98, 0x60d8, 0xd0ac, 0x1130, 0xd09c, -+ 0x1120, 0x2009, 0x0005, 0x0804, 0x2b98, 0x7984, 0x2140, 0x918c, -+ 0xff00, 0x810f, 0x60d8, 0xd0ac, 0x1120, 0x9182, 0x0080, 0x0a04, -+ 0x2b9b, 0x9182, 0x00ff, 0x1a04, 0x2b9b, 0x7a8c, 0x7b88, 0x6074, -+ 0x9306, 0x1140, 0x6078, 0x924e, 0x0904, 0x2b9b, 0x99cc, 0xff00, -+ 0x0904, 0x2b9b, 0x00c6, 0x080c, 0x3dc2, 0x2c68, 0x00ce, 0x0530, -+ 0x90c6, 0x4000, 0x1178, 0x00c6, 0x0006, 0x2d60, 0x900e, 0x080c, -+ 0x57d6, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, 0x000e, -+ 0x00ce, 0x0088, 0x90c6, 0x4007, 0x1110, 0x2408, 0x0060, 0x90c6, -+ 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0x90c6, 0x4009, 0x1108, -+ 0x0010, 0x2001, 0x4006, 0x2020, 0x0804, 0x2b6a, 0x2d00, 0x7022, -+ 0x0016, 0x00b6, 0x00c6, 0x00e6, 0x2c70, 0x080c, 0x8f26, 0x05c0, -+ 0x2d00, 0x6012, 0x080c, 0xad70, 0x2e58, 0x00ee, 0x00e6, 0x00c6, -+ 0x080c, 0x3eb9, 0x00ce, 0x2b70, 0x1150, 0x080c, 0x8ed9, 0x00ee, -+ 0x00ce, 0x00be, 0x001e, 0x2009, 0x0002, 0x0804, 0x2b98, 0x900e, -+ 0x6966, 0x696a, 0x2d00, 0x6016, 0x6932, 0x6868, 0xc0fd, 0xd88c, -+ 0x0108, 0xc0f5, 0x686a, 0x0126, 0x2091, 0x8000, 0x080c, 0x2862, -+ 0x012e, 0x6023, 0x0001, 0x9006, 0x080c, 0x5556, 0x2001, 0x0002, -+ 0x080c, 0x5568, 0x2009, 0x0002, 0x080c, 0x8f53, 0x9085, 0x0001, -+ 0x00ee, 0x00ce, 0x00be, 0x001e, 0x1120, 0x2009, 0x0003, 0x0804, -+ 0x2b98, 0x7007, 0x0003, 0x701b, 0x3da6, 0x0005, 0x6830, 0x9086, -+ 0x0100, 0x7020, 0x2060, 0x1138, 0x2009, 0x0004, 0x6204, 0x9294, -+ 0x00ff, 0x0804, 0x47e3, 0x900e, 0x6868, 0xd0f4, 0x1904, 0x2b68, -+ 0x080c, 0x57d6, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, -+ 0x0804, 0x2b68, 0x00e6, 0x00d6, 0x2029, 0x0000, 0x2001, 0x1136, -+ 0x2004, 0xd0ac, 0x0138, 0x2021, 0x0000, 0x20a9, 0x00ff, 0x2071, -+ 0x1000, 0x0030, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071, 0x1080, -+ 0x2e04, 0x9005, 0x1130, 0x2100, 0x9406, 0x1570, 0x2428, 0xc5fd, -+ 0x0458, 0x2068, 0x6f10, 0x2700, 0x9306, 0x11b0, 0x6e14, 0x2600, -+ 0x9206, 0x1190, 0x2400, 0x9106, 0x1160, 0x2d60, 0xd884, 0x0568, -+ 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1538, 0x2001, 0x4000, -+ 0x0428, 0x2001, 0x4007, 0x0410, 0x2400, 0x9106, 0x1168, 0x6e14, -+ 0x87ff, 0x1138, 0x86ff, 0x09d0, 0x2001, 0x1136, 0x2004, 0xd0ac, -+ 0x19a8, 0x2001, 0x4008, 0x0090, 0x8420, 0x8e70, 0x1f04, 0x3dd8, -+ 0x85ff, 0x1130, 0x2001, 0x4009, 0x0048, 0x2001, 0x0001, 0x0030, -+ 0x080c, 0x55b3, 0x1dd0, 0x6312, 0x6216, 0x9006, 0x9005, 0x00de, -+ 0x00ee, 0x0005, 0x81ff, 0x1904, 0x2b98, 0x080c, 0x3eb9, 0x0904, -+ 0x2b98, 0x6867, 0x0000, 0x6868, 0xc0fd, 0x686a, 0x7884, 0x9005, -+ 0x0904, 0x2b9b, 0x9096, 0x00ff, 0x0120, 0x9092, 0x0004, 0x1a04, -+ 0x2b9b, 0x2010, 0x2d18, 0x080c, 0x2811, 0x0904, 0x2b98, 0x7007, -+ 0x0003, 0x701b, 0x3e44, 0x0005, 0x6830, 0x9086, 0x0100, 0x0904, -+ 0x2b98, 0x0804, 0x2b68, 0x7984, 0x918c, 0xff00, 0x810f, 0x60d8, -+ 0xd0ac, 0x1120, 0x9182, 0x0080, 0x0a04, 0x2b9b, 0x9182, 0x00ff, -+ 0x1a04, 0x2b9b, 0x0126, 0x2091, 0x8000, 0x080c, 0xa972, 0x1188, -+ 0x9190, 0x1000, 0x2204, 0x9065, 0x0160, 0x080c, 0x5100, 0x2001, -+ 0x1136, 0x2004, 0xd0ac, 0x0110, 0x6017, 0x0000, 0x012e, 0x0804, -+ 0x2b68, 0x012e, 0x0804, 0x2b98, 0x00f6, 0x2d78, 0x7998, 0x918c, -+ 0xff00, 0x810f, 0x2001, 0x1136, 0x2004, 0xd0ac, 0x1118, 0x9182, -+ 0x0080, 0x02e8, 0x9182, 0x00ff, 0x12d0, 0x0126, 0x2091, 0x8000, -+ 0x080c, 0xa972, 0x1530, 0x9190, 0x1000, 0x2204, 0x9065, 0x0528, -+ 0x080c, 0x5100, 0x2001, 0x1136, 0x2004, 0xd0ac, 0x0110, 0x6017, -+ 0x0000, 0x012e, 0x0070, 0x7897, 0x4005, 0x799a, 0x0010, 0x7897, -+ 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x2f68, 0x00fe, -+ 0x0005, 0x7897, 0x4000, 0x900e, 0x9085, 0x0001, 0x2f68, 0x00fe, -+ 0x0005, 0x012e, 0x2009, 0x0003, 0x0c30, 0x012e, 0x2009, 0x000a, -+ 0x0c10, 0x080c, 0x0eb6, 0x0188, 0x9006, 0x6802, 0x7010, 0x9005, -+ 0x1120, 0x2d00, 0x7012, 0x7016, 0x0030, 0x7014, 0x6802, 0x2060, -+ 0x2d00, 0x6006, 0x7016, 0x9d80, 0x0019, 0x0005, 0x7984, 0x810f, -+ 0x918c, 0x00ff, 0x080c, 0x5608, 0x1130, 0x7e88, 0x9684, 0x3fff, -+ 0x9082, 0x4000, 0x0208, 0x9066, 0x8cff, 0x0005, 0x7998, 0x810f, -+ 0x918c, 0x00ff, 0x080c, 0x5608, 0x1130, 0x7e9c, 0x9684, 0x3fff, -+ 0x9082, 0x4000, 0x0208, 0x9066, 0x8cff, 0x0005, 0x7e98, 0x0008, -+ 0x7e84, 0x860f, 0x918c, 0x00ff, 0x080c, 0x5608, 0x1128, 0x96b4, -+ 0x00ff, 0x9682, 0x4000, 0x0208, 0x9066, 0x8cff, 0x0005, 0x0016, -+ 0x7110, 0x81ff, 0x0128, 0x2168, 0x6904, 0x080c, 0x0ecf, 0x0cc8, -+ 0x7112, 0x7116, 0x001e, 0x0005, 0x2031, 0x0001, 0x0010, 0x2031, -+ 0x0000, 0x2061, 0x11ea, 0x6606, 0x6116, 0x670e, 0x6012, 0x622a, -+ 0x632e, 0x6432, 0x6536, 0x2c10, 0x080c, 0x0f22, 0x7007, 0x0002, -+ 0x701b, 0x2b68, 0x0005, 0x00f6, 0x0126, 0x2091, 0x8000, 0x2079, -+ 0x0000, 0x2001, 0x11a3, 0x2004, 0x9005, 0x1190, 0x0e04, 0x3f40, -+ 0x7a36, 0x7833, 0x0012, 0x7a82, 0x7b86, 0x7c8a, 0x2091, 0x4080, -+ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x0fcd, 0x0804, 0x3f9d, -+ 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0x1193, 0x703c, 0x9005, -+ 0x1540, 0x7140, 0x9182, 0x0010, 0x0288, 0x7030, 0x2060, 0x080c, -+ 0x0eb6, 0x0904, 0x3f96, 0x684b, 0x0000, 0x2d00, 0x703e, 0x2001, -+ 0x0002, 0x9080, 0x18fe, 0x2005, 0x6846, 0x0098, 0x7030, 0x90e0, -+ 0x0004, 0x2001, 0x11aa, 0x9c82, 0x11ea, 0x0210, 0x2061, 0x11aa, -+ 0x2c00, 0x7032, 0x7140, 0x81ff, 0x1108, 0x7036, 0x8108, 0x7142, -+ 0x0428, 0x7140, 0x8108, 0x7142, 0x703c, 0x2078, 0x7944, 0x2105, -+ 0x9f60, 0x8108, 0x2105, 0x9005, 0x7946, 0x11c0, 0x080c, 0x0eb6, -+ 0x1130, 0x8109, 0x7946, 0x7140, 0x8109, 0x7142, 0x0078, 0x9006, -+ 0x6806, 0x684a, 0x7846, 0x2f00, 0x6802, 0x2d00, 0x7806, 0x703e, -+ 0x2001, 0x0002, 0x9080, 0x18fe, 0x2005, 0x6846, 0x2262, 0x6306, -+ 0x640a, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x012e, 0x00fe, 0x0005, -+ 0x00e6, 0x2071, 0x1193, 0x7040, 0x9005, 0x0904, 0x4024, 0x0126, -+ 0x2091, 0x8000, 0x0e04, 0x4023, 0x00f6, 0x2079, 0x0000, 0x00c6, -+ 0x00d6, 0x0086, 0x9006, 0x2040, 0x7038, 0x2068, 0x9005, 0x01c0, -+ 0x6948, 0x2105, 0x9d60, 0x8108, 0x2105, 0x9005, 0x694a, 0x1190, -+ 0x6804, 0x9005, 0x090c, 0x0d7e, 0x703a, 0x2d40, 0x2068, 0x6803, -+ 0x0000, 0x2001, 0x0002, 0x9080, 0x18fe, 0x2005, 0x684a, 0x0010, -+ 0x7034, 0x2060, 0x2c04, 0x7836, 0x7833, 0x0012, 0x7882, 0x6004, -+ 0x7886, 0x6008, 0x788a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, -+ 0xd084, 0x190c, 0x0fcd, 0x88ff, 0x0118, 0x2868, 0x080c, 0x0ecf, -+ 0x7040, 0x8001, 0x7042, 0x9005, 0x1170, 0x7038, 0x2068, 0x9005, -+ 0x0128, 0x080c, 0x0ecf, 0x9006, 0x703a, 0x703e, 0x7033, 0x11aa, -+ 0x7037, 0x11aa, 0x0420, 0x7038, 0x9005, 0x1508, 0x7230, 0x2c00, -+ 0x9206, 0x0148, 0x9c80, 0x0004, 0x90fa, 0x11ea, 0x0210, 0x2001, -+ 0x11aa, 0x7036, 0x00a0, 0x9006, 0x7036, 0x7032, 0x703c, 0x9005, -+ 0x090c, 0x0d7e, 0x2068, 0x6800, 0x9005, 0x1de0, 0x2d00, 0x703a, -+ 0x2001, 0x0002, 0x9080, 0x18fe, 0x2005, 0x684a, 0x0000, 0x008e, -+ 0x00de, 0x00ce, 0x00fe, 0x012e, 0x00ee, 0x0005, 0x0026, 0x2001, -+ 0x1153, 0x2004, 0xd0c4, 0x0120, 0x2011, 0x8014, 0x080c, 0x3f23, -+ 0x002e, 0x0005, 0x81ff, 0x1904, 0x2b98, 0x0126, 0x2091, 0x8000, -+ 0x6030, 0xc08d, 0xc085, 0xc0ac, 0x6032, 0x080c, 0x62e4, 0x1178, -+ 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, 0x0001, -+ 0x9085, 0x0001, 0x080c, 0x6331, 0x080c, 0x621a, 0x0010, 0x080c, -+ 0x4faa, 0x012e, 0x0804, 0x2b68, 0x7884, 0x2008, 0x918c, 0xfffd, -+ 0x1128, 0x61e4, 0x910d, 0x61e6, 0x0804, 0x2b68, 0x0804, 0x2b9b, -+ 0x81ff, 0x1904, 0x2b98, 0x6000, 0x9086, 0x0003, 0x1904, 0x2b98, -+ 0x080c, 0x58c6, 0x1904, 0x2b98, 0x080c, 0x3ef0, 0x0904, 0x2b9b, -+ 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1120, 0x7888, 0x9005, -+ 0x0904, 0x2b68, 0x00c6, 0x080c, 0x3eb9, 0x00ce, 0x0904, 0x2b98, -+ 0x9006, 0x6866, 0x6832, 0x6868, 0xc0fd, 0x686a, 0x080c, 0xab41, -+ 0x0904, 0x2b98, 0x7007, 0x0003, 0x701b, 0x40ce, 0x0005, 0x00f6, -+ 0x2d78, 0x2061, 0x1100, 0x6000, 0x9086, 0x0003, 0x2009, 0x0007, -+ 0x11d0, 0x080c, 0x58c6, 0x2009, 0x0008, 0x11a8, 0x080c, 0x3eee, -+ 0x01b0, 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1118, 0x789c, -+ 0x9005, 0x01b8, 0x2f68, 0x6868, 0xc0fc, 0x686a, 0x080c, 0xab41, -+ 0x11c8, 0x2009, 0x0003, 0x7897, 0x4005, 0x799a, 0x0010, 0x7897, -+ 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x2f68, 0x00fe, -+ 0x0005, 0x7897, 0x4000, 0x9006, 0x918d, 0x0001, 0x2008, 0x2f68, -+ 0x00fe, 0x0005, 0x9006, 0x2f68, 0x00fe, 0x0005, 0x6830, 0x9086, -+ 0x0100, 0x1904, 0x2b68, 0x0804, 0x47e3, 0x2001, 0x1100, 0x2004, -+ 0x9086, 0x0003, 0x1904, 0x2b98, 0x7f84, 0x7a8c, 0x7b88, 0x7c9c, -+ 0x7d98, 0x080c, 0x3eb9, 0x0904, 0x2b98, 0x900e, 0x2130, 0x7122, -+ 0x712e, 0x9d80, 0x0005, 0x7026, 0x20a0, 0x20e1, 0x0001, 0x20e9, -+ 0x0001, 0x080c, 0x5608, 0x1904, 0x4149, 0x6004, 0x90c4, 0x00ff, -+ 0x98c6, 0x0006, 0x0130, 0x90c4, 0xff00, 0x98c6, 0x0600, 0x1904, -+ 0x4149, 0x080c, 0x58c6, 0x1130, 0x080c, 0x57d6, 0x1118, 0xd79c, -+ 0x0904, 0x4149, 0xd794, 0x1110, 0xd784, 0x0158, 0x9c80, 0x0006, -+ 0x2098, 0x3400, 0x20a9, 0x0004, 0x4003, 0x080c, 0x3ce8, 0xd794, -+ 0x0148, 0x9c80, 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x4003, -+ 0x080c, 0x3ce8, 0x21a2, 0x3400, 0x8000, 0x20a0, 0xd794, 0x01d8, -+ 0x9c80, 0x0000, 0x2098, 0x20a9, 0x0002, 0x4003, 0x9c80, 0x0003, -+ 0x2098, 0x20a9, 0x0001, 0x4005, 0x9c80, 0x0004, 0x2098, 0x3400, -+ 0x20a9, 0x0002, 0x4003, 0x080c, 0x3cda, 0x9c80, 0x0026, 0x2098, -+ 0x20a9, 0x0002, 0x4003, 0xd794, 0x0110, 0x96b0, 0x000b, 0x96b0, -+ 0x0005, 0x8108, 0x2001, 0x1136, 0x2004, 0xd0ac, 0x0118, 0x9186, -+ 0x0100, 0x0040, 0xd78c, 0x0120, 0x9186, 0x0100, 0x0170, 0x0018, -+ 0x9186, 0x007e, 0x0150, 0xd794, 0x0118, 0x9686, 0x0020, 0x0010, -+ 0x9686, 0x0028, 0x0150, 0x0804, 0x40ed, 0x86ff, 0x1120, 0x7120, -+ 0x810b, 0x0804, 0x2b68, 0x702f, 0x0001, 0x711e, 0x7020, 0x9600, -+ 0x7022, 0x772a, 0x2061, 0x11ea, 0x6007, 0x0000, 0x6616, 0x7024, -+ 0x600f, 0x0001, 0x6012, 0x622a, 0x632e, 0x6432, 0x6536, 0x2c10, -+ 0x080c, 0x0f22, 0x7007, 0x0002, 0x701b, 0x4187, 0x0005, 0x702c, -+ 0x9005, 0x1168, 0x711c, 0x7024, 0x20a0, 0x7728, 0x9036, 0x2061, -+ 0x11ea, 0x6228, 0x632c, 0x6430, 0x6534, 0x0804, 0x40ed, 0x7120, -+ 0x810b, 0x0804, 0x2b68, 0x2029, 0x007e, 0x7984, 0x7a88, 0x7b8c, -+ 0x7c98, 0x9184, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x2b9b, -+ 0x9502, 0x0a04, 0x2b9b, 0x9184, 0x00ff, 0x90e2, 0x0020, 0x0a04, -+ 0x2b9b, 0x9502, 0x0a04, 0x2b9b, 0x9284, 0xff00, 0x8007, 0x90e2, -+ 0x0020, 0x0a04, 0x2b9b, 0x9502, 0x0a04, 0x2b9b, 0x9284, 0x00ff, -+ 0x90e2, 0x0020, 0x0a04, 0x2b9b, 0x9502, 0x0a04, 0x2b9b, 0x9384, -+ 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, 0x2b9b, 0x9502, 0x0a04, -+ 0x2b9b, 0x9384, 0x00ff, 0x90e2, 0x0020, 0x0a04, 0x2b9b, 0x9502, -+ 0x0a04, 0x2b9b, 0x9484, 0xff00, 0x8007, 0x90e2, 0x0020, 0x0a04, -+ 0x2b9b, 0x9502, 0x0a04, 0x2b9b, 0x9484, 0x00ff, 0x90e2, 0x0020, -+ 0x0a04, 0x2b9b, 0x9502, 0x0a04, 0x2b9b, 0x2061, 0x12c3, 0x6102, -+ 0x6206, 0x630a, 0x640e, 0x0804, 0x2b68, 0x0006, 0x2001, 0x1153, -+ 0x2004, 0xd0cc, 0x000e, 0x0005, 0x0006, 0x2001, 0x1172, 0x2004, -+ 0xd0bc, 0x000e, 0x0005, 0x616c, 0x7a84, 0x6300, 0x82ff, 0x1118, -+ 0x7986, 0x0804, 0x2b68, 0x83ff, 0x1904, 0x2b9b, 0x2001, 0xfff0, -+ 0x9200, 0x1a04, 0x2b9b, 0x2019, 0xffff, 0x6070, 0x9302, 0x9200, -+ 0x0a04, 0x2b9b, 0x7986, 0x626e, 0x0804, 0x2b68, 0x2001, 0x1100, -+ 0x2004, 0x9086, 0x0003, 0x1904, 0x2b98, 0x7c88, 0x7d84, 0x7e98, -+ 0x7f8c, 0x080c, 0x3eb9, 0x0904, 0x2b98, 0x900e, 0x901e, 0x7322, -+ 0x732e, 0x9d80, 0x0003, 0x7026, 0x20a0, 0x91e0, 0x1000, 0x2c64, -+ 0x8cff, 0x01d8, 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x0130, -+ 0x6004, 0x9084, 0xff00, 0x9086, 0x0600, 0x1178, 0x00d6, 0x3468, -+ 0x6014, 0x206a, 0x8d68, 0x6010, 0x8007, 0x9105, 0x8007, 0x206a, -+ 0x8d68, 0x2da0, 0x00de, 0x9398, 0x0002, 0x8108, 0x9182, 0x00ff, -+ 0x0120, 0x9386, 0x002a, 0x0148, 0x08c0, 0x83ff, 0x1120, 0x7120, -+ 0x810c, 0x0804, 0x2b68, 0x702f, 0x0001, 0x711e, 0x7020, 0x9300, -+ 0x7022, 0x2061, 0x11ea, 0x6007, 0x0000, 0x6316, 0x7024, 0x6012, -+ 0x600f, 0x0001, 0x642a, 0x652e, 0x6632, 0x6736, 0x2c10, 0x080c, -+ 0x0f22, 0x7007, 0x0002, 0x701b, 0x427e, 0x0005, 0x702c, 0x9005, -+ 0x1160, 0x711c, 0x7024, 0x20a0, 0x901e, 0x2061, 0x11ea, 0x6428, -+ 0x652c, 0x6630, 0x6734, 0x0804, 0x4235, 0x7120, 0x810c, 0x0804, -+ 0x2b68, 0x00f6, 0x2d78, 0x00e6, 0x2001, 0x1100, 0x2004, 0x9086, -+ 0x0003, 0x2009, 0x0007, 0x1904, 0x4311, 0x2071, 0x1193, 0x7454, -+ 0x84ff, 0x2009, 0x000e, 0x1904, 0x4311, 0x7c9c, 0x7d98, 0x7ea4, -+ 0x7fa0, 0x080c, 0x0e9d, 0x2009, 0x0002, 0x0904, 0x4311, 0x2d00, -+ 0x7056, 0x900e, 0x901e, 0x734e, 0x735a, 0x9d80, 0x0003, 0x7052, -+ 0x20a0, 0x91e0, 0x1000, 0x2c64, 0x8cff, 0x01d8, 0x6004, 0x9084, -+ 0x00ff, 0x9086, 0x0006, 0x0130, 0x6004, 0x9084, 0xff00, 0x9086, -+ 0x0600, 0x1178, 0x00d6, 0x3468, 0x6014, 0x206a, 0x8d68, 0x6010, -+ 0x8007, 0x9105, 0x8007, 0x206a, 0x8d68, 0x2da0, 0x00de, 0x9398, -+ 0x0002, 0x8108, 0x9182, 0x00ff, 0x0120, 0x9386, 0x002a, 0x01b8, -+ 0x08c0, 0x83ff, 0x1190, 0x714c, 0x810c, 0x7897, 0x4000, 0x799a, -+ 0x7154, 0x81ff, 0x090c, 0x0d7e, 0x2168, 0x080c, 0x0ecf, 0x9006, -+ 0x7056, 0x918d, 0x0001, 0x2008, 0x0420, 0x705b, 0x0001, 0x714a, -+ 0x704c, 0x9300, 0x704e, 0x2061, 0x11fb, 0x6007, 0x0000, 0x6316, -+ 0x7050, 0x6012, 0x600f, 0x0001, 0x642a, 0x652e, 0x6632, 0x6736, -+ 0x603b, 0x431d, 0x2f00, 0x603e, 0x2c10, 0x080c, 0x0f22, 0x9006, -+ 0x0040, 0x7897, 0x4005, 0x799a, 0x900e, 0x9085, 0x0001, 0x2001, -+ 0x0030, 0x00ee, 0x2f68, 0x00fe, 0x0005, 0x00f6, 0x603c, 0x907d, -+ 0x090c, 0x0d7e, 0x00e6, 0x2071, 0x1193, 0x6008, 0x908e, 0x0100, -+ 0x0138, 0x787b, 0x0030, 0x7883, 0x0000, 0x7897, 0x4002, 0x00a8, -+ 0x7058, 0x9005, 0x1148, 0x7148, 0x7050, 0x20a0, 0x901e, 0x6428, -+ 0x652c, 0x6630, 0x6734, 0x0400, 0x787b, 0x0000, 0x7883, 0x0000, -+ 0x7897, 0x4000, 0x714c, 0x810c, 0x799a, 0x7154, 0x81ff, 0x090c, -+ 0x0d7e, 0x2168, 0x080c, 0x0ecf, 0x7057, 0x0000, 0x2f68, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x603b, 0x0000, 0x603f, -+ 0x0000, 0x00ee, 0x00fe, 0x0005, 0x91e0, 0x1000, 0x2c64, 0x8cff, -+ 0x01d8, 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x0130, 0x6004, -+ 0x9084, 0xff00, 0x9086, 0x0600, 0x1178, 0x00d6, 0x3468, 0x6014, -+ 0x206a, 0x8d68, 0x6010, 0x8007, 0x9105, 0x8007, 0x206a, 0x8d68, -+ 0x2da0, 0x00de, 0x9398, 0x0002, 0x8108, 0x9182, 0x00ff, 0x0120, -+ 0x9386, 0x002a, 0x0520, 0x08c0, 0x83ff, 0x11f8, 0x714c, 0x810c, -+ 0x799a, 0x7897, 0x4000, 0x7154, 0x81ff, 0x090c, 0x0d7e, 0x2168, -+ 0x080c, 0x0ecf, 0x9006, 0x7056, 0x918d, 0x0001, 0x2008, 0x2f68, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x2061, 0x11fb, -+ 0x603b, 0x0000, 0x603f, 0x0000, 0x0088, 0x705b, 0x0001, 0x714a, -+ 0x704c, 0x9300, 0x704e, 0x2061, 0x11fb, 0x6316, 0x642a, 0x652e, -+ 0x6632, 0x6736, 0x2c10, 0x080c, 0x0f22, 0x9006, 0x00ee, 0x00fe, -+ 0x0005, 0x81ff, 0x1904, 0x2b98, 0x60d8, 0xd0ac, 0x1118, 0xd09c, -+ 0x0904, 0x2b98, 0x080c, 0x3eb9, 0x0904, 0x2b98, 0x7984, 0x7a8c, -+ 0x7b88, 0x7c9c, 0x7d98, 0x2039, 0x0001, 0x080c, 0x3f0c, 0x701b, -+ 0x43d2, 0x0005, 0x00d6, 0x9de8, 0x0019, 0x6828, 0x90be, 0x7000, -+ 0x0148, 0x90be, 0x7100, 0x0130, 0x90be, 0x7200, 0x0118, 0x00de, -+ 0x0804, 0x2b9b, 0x6820, 0x6924, 0x080c, 0x1f63, 0x1510, 0x080c, -+ 0x55b3, 0x11f8, 0x7122, 0x6612, 0x6516, 0x6e18, 0x00c6, 0x080c, -+ 0x3eb9, 0x01b8, 0x080c, 0x3eb9, 0x01a0, 0x00ce, 0x00de, 0x6867, -+ 0x0000, 0x6868, 0xc0fd, 0x686a, 0x6823, 0x0000, 0x6804, 0x2068, -+ 0x080c, 0xaaa2, 0x0904, 0x2b98, 0x7007, 0x0003, 0x701b, 0x440c, -+ 0x0005, 0x00de, 0x0804, 0x2b98, 0x7120, 0x080c, 0x2955, 0x6820, -+ 0x9086, 0x8001, 0x0904, 0x2b98, 0x2d00, 0x701e, 0x6804, 0x9080, -+ 0x0002, 0x0006, 0x20a9, 0x002a, 0x2098, 0x20a0, 0x080c, 0x504f, -+ 0x000e, 0x9de8, 0x0019, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x2061, -+ 0x11ea, 0x6007, 0x0000, 0x6e00, 0x6f28, 0x97c6, 0x7000, 0x1108, -+ 0x0018, 0x97c6, 0x7100, 0x1150, 0x96c2, 0x0004, 0x0a04, 0x2b9b, -+ 0x2009, 0x0004, 0x2039, 0x0001, 0x0804, 0x3f0f, 0x97c6, 0x7200, -+ 0x1904, 0x2b9b, 0x96c2, 0x0054, 0x0a04, 0x2b9b, 0x600f, 0x0001, -+ 0x6012, 0x6017, 0x002a, 0x622a, 0x632e, 0x6432, 0x6536, 0x2c10, -+ 0x080c, 0x0f22, 0x7007, 0x0002, 0x701b, 0x4457, 0x0005, 0x701c, -+ 0x2068, 0x6804, 0x9080, 0x0001, 0x2004, 0x9080, 0x0002, 0x0006, -+ 0x20a9, 0x002a, 0x2098, 0x20a0, 0x080c, 0x504f, 0x000e, 0x2061, -+ 0x11ea, 0x6228, 0x632c, 0x6430, 0x6534, 0x2039, 0x0001, 0x2009, -+ 0x002a, 0x0804, 0x3f0f, 0x81ff, 0x1904, 0x2b98, 0x798c, 0x2001, -+ 0x12a9, 0x2102, 0x080c, 0x3ece, 0x0904, 0x2b9b, 0x080c, 0x56ca, -+ 0x0904, 0x2b98, 0x0126, 0x2091, 0x8000, 0x080c, 0x5782, 0x012e, -+ 0x0804, 0x2b68, 0x00f6, 0x69a0, 0x2001, 0x12a9, 0x2102, 0x2d78, -+ 0x080c, 0x3ede, 0x0170, 0x080c, 0x56ca, 0x2009, 0x0002, 0x0128, -+ 0x080c, 0x5782, 0x1180, 0x2009, 0x0003, 0x7897, 0x4005, 0x799a, -+ 0x0010, 0x7897, 0x4006, 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, -+ 0x2f68, 0x00fe, 0x0005, 0x7897, 0x4000, 0x900e, 0x9085, 0x0001, -+ 0x2001, 0x0000, 0x2f68, 0x00fe, 0x0005, 0x7884, 0xd08c, 0x1118, -+ 0xd084, 0x0904, 0x39e5, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x00c6, -+ 0x080c, 0x3eb9, 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, 0x2b98, -+ 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x0128, 0x908e, 0x0004, -+ 0x0110, 0x908e, 0x0005, 0x15b8, 0x7884, 0xd08c, 0x0120, 0x6000, -+ 0xc08c, 0x6002, 0x0030, 0x2001, 0x1153, 0x2004, 0xd0b4, 0x0904, -+ 0x3a24, 0x7884, 0x9084, 0xff00, 0x908e, 0x7e00, 0x0904, 0x3a24, -+ 0x908e, 0x7f00, 0x0904, 0x3a24, 0x908e, 0x8000, 0x0904, 0x3a24, -+ 0x6000, 0xd08c, 0x1904, 0x3a24, 0x6867, 0x0000, 0x6868, 0xc0fd, -+ 0x686a, 0x080c, 0xaabe, 0x1120, 0x2009, 0x0003, 0x0804, 0x2b98, -+ 0x7007, 0x0003, 0x701b, 0x4505, 0x0005, 0x080c, 0x3ef0, 0x0904, -+ 0x2b9b, 0x0804, 0x3a24, 0x080c, 0x2982, 0x0108, 0x0005, 0x2009, -+ 0x1133, 0x210c, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, 0x2b98, -+ 0x2001, 0x1100, 0x2004, 0x9086, 0x0003, 0x0120, 0x2009, 0x0007, -+ 0x0804, 0x2b98, 0x080c, 0x58c6, 0x0120, 0x2009, 0x0008, 0x0804, -+ 0x2b98, 0x609c, 0xd0a4, 0x1118, 0xd0ac, 0x1904, 0x3a24, 0x9006, -+ 0x6866, 0x6832, 0x6868, 0xc0fd, 0x686a, 0x080c, 0xab41, 0x1120, -+ 0x2009, 0x0003, 0x0804, 0x2b98, 0x7007, 0x0003, 0x701b, 0x4541, -+ 0x0005, 0x6830, 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, -+ 0x47e3, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x0804, 0x44d4, 0x81ff, -+ 0x2009, 0x0001, 0x1904, 0x2b98, 0x6000, 0x9086, 0x0003, 0x2009, -+ 0x0007, 0x1904, 0x2b98, 0x080c, 0x58c6, 0x2009, 0x0008, 0x1904, -+ 0x2b98, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x6004, 0x9084, 0x00ff, -+ 0x9086, 0x0006, 0x2009, 0x0009, 0x1904, 0x2b98, 0x00c6, 0x080c, -+ 0x3eb9, 0x00ce, 0x2009, 0x0002, 0x0904, 0x2b98, 0x9006, 0x6866, -+ 0x6832, 0x6868, 0xc0fd, 0x686a, 0x7988, 0x9194, 0xff00, 0x918c, -+ 0x00ff, 0x9006, 0x82ff, 0x1128, 0xc0ed, 0x6952, 0x798c, 0x6956, -+ 0x0038, 0x928e, 0x0100, 0x1904, 0x2b9b, 0xc0e5, 0x6952, 0x6956, -+ 0x683e, 0x080c, 0xad71, 0x2009, 0x0003, 0x0904, 0x2b98, 0x7007, -+ 0x0003, 0x701b, 0x459c, 0x0005, 0x6830, 0x9086, 0x0100, 0x2009, -+ 0x0004, 0x0904, 0x2b98, 0x0804, 0x2b68, 0x81ff, 0x2009, 0x0001, -+ 0x1904, 0x2b98, 0x6000, 0x9086, 0x0003, 0x2009, 0x0007, 0x1904, -+ 0x2b98, 0x080c, 0x3ef0, 0x0904, 0x2b9b, 0x6004, 0x9084, 0x00ff, -+ 0x9086, 0x0006, 0x2009, 0x0009, 0x1904, 0x2b98, 0x00c6, 0x080c, -+ 0x3eb9, 0x00ce, 0x2009, 0x0002, 0x0904, 0x2b98, 0x9d80, 0x001b, -+ 0x2039, 0x0001, 0x2009, 0x0008, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, -+ 0x080c, 0x3f0c, 0x701b, 0x45d5, 0x0005, 0x00d6, 0x9de8, 0x001b, -+ 0x6800, 0x9086, 0x0500, 0x1138, 0x6804, 0x9005, 0x1120, 0x6808, -+ 0x9084, 0xff00, 0x0118, 0x00de, 0x1904, 0x2b9b, 0x00de, 0x6866, -+ 0x6832, 0x6868, 0xc0fd, 0x686a, 0x00c6, 0x080c, 0x3ef0, 0x1118, -+ 0x00ce, 0x0804, 0x2b9b, 0x2009, 0x0043, 0x080c, 0xadda, 0x2009, -+ 0x0003, 0x00ce, 0x0904, 0x2b98, 0x7007, 0x0003, 0x701b, 0x4601, -+ 0x0005, 0x6830, 0x9086, 0x0100, 0x2009, 0x0004, 0x0904, 0x2b98, -+ 0x0804, 0x2b68, 0x00f6, 0x00c6, 0x2d78, 0x2061, 0x1100, 0x6000, -+ 0x9086, 0x0003, 0x2009, 0x0007, 0x1528, 0x080c, 0x3eee, 0x0530, -+ 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x2009, 0x0009, 0x11d0, -+ 0x9fe8, 0x0031, 0x6800, 0x9086, 0x0500, 0x11c0, 0x6804, 0x9005, -+ 0x11a8, 0x6808, 0x9084, 0xff00, 0x1188, 0x080c, 0x3eee, 0x1108, -+ 0x0068, 0x2f68, 0x2009, 0x004b, 0x080c, 0xadda, 0x2009, 0x0003, -+ 0x0108, 0x0078, 0x7897, 0x4005, 0x799a, 0x0010, 0x7897, 0x4006, -+ 0x900e, 0x9085, 0x0001, 0x2001, 0x0030, 0x00ce, 0x2f68, 0x00fe, -+ 0x0005, 0x9006, 0x0cd0, 0x81ff, 0x0120, 0x2009, 0x0001, 0x0804, -+ 0x2b98, 0x6000, 0x9086, 0x0003, 0x0120, 0x2009, 0x0007, 0x0804, -+ 0x2b98, 0x7e84, 0x860f, 0x918c, 0x00ff, 0x96b4, 0x00ff, 0x080c, -+ 0x5608, 0x1904, 0x2b9b, 0x9186, 0x007f, 0x0150, 0x6004, 0x9084, -+ 0x00ff, 0x9086, 0x0006, 0x0120, 0x2009, 0x0009, 0x0804, 0x2b98, -+ 0x00c6, 0x080c, 0x3eb9, 0x00ce, 0x1120, 0x2009, 0x0002, 0x0804, -+ 0x2b98, 0x6867, 0x0000, 0x6868, 0xc0fd, 0x686a, 0x2001, 0x0100, -+ 0x8007, 0x680a, 0x080c, 0xaad9, 0x1120, 0x2009, 0x0003, 0x0804, -+ 0x2b98, 0x7007, 0x0003, 0x701b, 0x468e, 0x0005, 0x6808, 0x8007, -+ 0x9086, 0x0100, 0x1120, 0x2009, 0x0004, 0x0804, 0x2b98, 0x68e0, -+ 0x6866, 0x6810, 0x8007, 0x9084, 0x00ff, 0x800c, 0x6814, 0x8007, -+ 0x9084, 0x00ff, 0x8004, 0x9080, 0x0002, 0x9108, 0x9d80, 0x0004, -+ 0x2039, 0x0001, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x0804, 0x3f0f, -+ 0x080c, 0x3eb9, 0x1120, 0x2009, 0x0002, 0x0804, 0x2b98, 0x7984, -+ 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff, 0x0110, 0x0804, -+ 0x2b9b, 0x2009, 0x001a, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x2039, -+ 0x0001, 0x080c, 0x3f0c, 0x701b, 0x46ce, 0x0005, 0x2001, 0x112c, -+ 0x2003, 0x0001, 0x9d80, 0x0019, 0x2098, 0x20e1, 0x0001, 0x20a9, -+ 0x001a, 0x20a1, 0x12ea, 0x20e9, 0x0001, 0x4003, 0x0804, 0x2b68, -+ 0x080c, 0x3eb9, 0x1120, 0x2009, 0x0002, 0x0804, 0x2b98, 0x7984, -+ 0x9194, 0xff00, 0x918c, 0x00ff, 0x8217, 0x82ff, 0x0110, 0x0804, -+ 0x2b9b, 0x2099, 0x12ea, 0x20a0, 0x20e9, 0x0001, 0x20a9, 0x001a, -+ 0x20e1, 0x0001, 0x4003, 0x2009, 0x001a, 0x7a8c, 0x7b88, 0x7c9c, -+ 0x7d98, 0x2039, 0x0001, 0x0804, 0x3f0f, 0x7884, 0x908a, 0x1000, -+ 0x1a04, 0x2b9b, 0x0126, 0x2091, 0x8000, 0x8003, 0x800b, 0x810b, -+ 0x9108, 0x00c6, 0x2061, 0x1317, 0x6142, 0x00ce, 0x012e, 0x0804, -+ 0x2b68, 0x00c6, 0x080c, 0x62e4, 0x1180, 0x2001, 0x12a8, 0x2003, -+ 0x0001, 0x2001, 0x1100, 0x2003, 0x0001, 0x9085, 0x0001, 0x080c, -+ 0x6331, 0x080c, 0x621a, 0x080c, 0x0d7e, 0x2061, 0x1100, 0x6030, -+ 0xc09d, 0x6032, 0x080c, 0x4faa, 0x00ce, 0x0005, 0x00c6, 0x2001, -+ 0x1100, 0x2004, 0x908e, 0x0000, 0x0904, 0x2b98, 0x7884, 0x9005, -+ 0x0188, 0x7888, 0x2061, 0x12d6, 0x2c0c, 0x2062, 0x080c, 0x2328, -+ 0x01a0, 0x080c, 0x2330, 0x0188, 0x080c, 0x2338, 0x0170, 0x2162, -+ 0x0804, 0x2b9b, 0x2061, 0x0100, 0x6038, 0x9086, 0x0007, 0x1118, -+ 0x2009, 0x0001, 0x0010, 0x2009, 0x0000, 0x7884, 0x9086, 0x0002, -+ 0x1548, 0x2061, 0x0100, 0x6028, 0xc09c, 0x602a, 0x0026, 0x2011, -+ 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, 0x002e, -+ 0x080c, 0x87a2, 0x0036, 0x901e, 0x080c, 0x8847, 0x003e, 0x60e3, -+ 0x0000, 0x080c, 0xc44e, 0x080c, 0xc469, 0x9085, 0x0001, 0x080c, -+ 0x6331, 0x9006, 0x080c, 0x2401, 0x2001, 0x1100, 0x2003, 0x0004, -+ 0x6027, 0x0008, 0x00ce, 0x0804, 0x2b68, 0x81ff, 0x0120, 0x2009, -+ 0x0001, 0x0804, 0x2b98, 0x6000, 0x9086, 0x0003, 0x0120, 0x2009, -+ 0x0007, 0x0804, 0x2b98, 0x7e84, 0x860f, 0x918c, 0x00ff, 0x96b4, -+ 0x00ff, 0x080c, 0x5608, 0x1904, 0x2b9b, 0x9186, 0x007f, 0x0150, -+ 0x6004, 0x9084, 0x00ff, 0x9086, 0x0006, 0x0120, 0x2009, 0x0009, -+ 0x0804, 0x2b98, 0x00c6, 0x080c, 0x3eb9, 0x00ce, 0x1120, 0x2009, -+ 0x0002, 0x0804, 0x2b98, 0x6867, 0x0000, 0x6868, 0xc0fd, 0x686a, -+ 0x080c, 0xaaf5, 0x1120, 0x2009, 0x0003, 0x0804, 0x2b98, 0x7007, -+ 0x0003, 0x701b, 0x47cc, 0x0005, 0x6830, 0x9086, 0x0100, 0x1120, -+ 0x2009, 0x0004, 0x0804, 0x2b98, 0x68e0, 0x6866, 0x6834, 0x8007, -+ 0x800c, 0x9d80, 0x000c, 0x7a8c, 0x7b88, 0x7c9c, 0x7d98, 0x2039, -+ 0x0001, 0x0804, 0x3f0f, 0x6898, 0x9086, 0x000d, 0x1904, 0x2b98, -+ 0x2021, 0x4005, 0x0126, 0x2091, 0x8000, 0x0e04, 0x47f0, 0x0010, -+ 0x012e, 0x0cc0, 0x7c36, 0x9486, 0x4000, 0x0118, 0x7833, 0x0011, -+ 0x0010, 0x7833, 0x0010, 0x7883, 0x4005, 0x6998, 0x7986, 0x69a4, -+ 0x799a, 0x69a8, 0x799e, 0x080c, 0x3eff, 0x2091, 0x4080, 0x2001, -+ 0x0089, 0x2004, 0xd084, 0x190c, 0x0fcd, 0x7007, 0x0001, 0x2091, -+ 0x5000, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, 0x00c6, 0x2061, -+ 0x1317, 0x7984, 0x6152, 0x614e, 0x6057, 0x0000, 0x604b, 0x0009, -+ 0x7898, 0x606a, 0x789c, 0x6066, 0x7888, 0x6062, 0x788c, 0x605e, -+ 0x2061, 0x12aa, 0x2001, 0x132c, 0x6012, 0x600f, 0x0001, 0x6017, -+ 0x0001, 0x601b, 0x0002, 0x6007, 0x0000, 0x603b, 0x0000, 0x00ce, -+ 0x012e, 0x0804, 0x2b68, 0x0126, 0x0156, 0x0136, 0x0146, 0x01c6, -+ 0x01d6, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2061, 0x0100, 0x2069, -+ 0x0200, 0x2071, 0x1100, 0x6044, 0xd0a4, 0x11e8, 0xd084, 0x0118, -+ 0x080c, 0x49ce, 0x0068, 0xd08c, 0x0118, 0x080c, 0x48e1, 0x0040, -+ 0xd094, 0x0118, 0x080c, 0x48b4, 0x0018, 0xd09c, 0x0108, 0x0099, -+ 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, 0x013e, -+ 0x015e, 0x012e, 0x0005, 0x0016, 0x6128, 0xd19c, 0x1110, 0xc19d, -+ 0x612a, 0x001e, 0x0c68, 0x624c, 0x9286, 0xf0f0, 0x1150, 0x6048, -+ 0x9086, 0xf0f0, 0x0130, 0x624a, 0x6043, 0x0090, 0x6043, 0x0010, -+ 0x0490, 0x9294, 0xff00, 0x9296, 0xf700, 0x0178, 0x7134, 0xd1a4, -+ 0x1160, 0x6240, 0x9295, 0x0100, 0x6242, 0x9294, 0x0010, 0x0128, -+ 0x2009, 0x00f7, 0x080c, 0x507b, 0x00f0, 0x6040, 0x9084, 0x0010, -+ 0x9085, 0x0140, 0x6042, 0x6043, 0x0000, 0x707f, 0x0000, 0x709b, -+ 0x0001, 0x70c3, 0x0000, 0x70db, 0x0000, 0x2009, 0x1580, 0x200b, -+ 0x0000, 0x708f, 0x0000, 0x7083, 0x000f, 0x2009, 0x000f, 0x2011, -+ 0x4f50, 0x080c, 0x7283, 0x0005, 0x2001, 0x1174, 0x2004, 0xd08c, -+ 0x0110, 0x7057, 0xffff, 0x7080, 0x9005, 0x1510, 0x2011, 0x4f50, -+ 0x080c, 0x71fa, 0x6040, 0x9094, 0x0010, 0x9285, 0x0020, 0x6042, -+ 0x20a9, 0x00c8, 0x6044, 0xd08c, 0x1168, 0x1f04, 0x48ca, 0x6242, -+ 0x7093, 0x0000, 0x6040, 0x9094, 0x0010, 0x9285, 0x0080, 0x6042, -+ 0x6242, 0x0030, 0x6242, 0x7093, 0x0000, 0x7087, 0x0000, 0x0000, -+ 0x0005, 0x7084, 0x908a, 0x0003, 0x1a0c, 0x0d7e, 0x000b, 0x0005, -+ 0x48eb, 0x4932, 0x49cd, 0x00f6, 0x7087, 0x0001, 0x6803, 0x00fc, -+ 0x20a9, 0x0004, 0x6800, 0x9084, 0x00fc, 0x0120, 0x1f04, 0x48f2, -+ 0x080c, 0x0d7e, 0x68a0, 0x68a2, 0x689c, 0x689e, 0x6898, 0x689a, -+ 0xa001, 0x6803, 0x1600, 0x6837, 0x0020, 0x080c, 0x50d5, 0x2079, -+ 0x1500, 0x7833, 0x1101, 0x7837, 0x0000, 0x20e1, 0x0001, 0x2099, -+ 0x1105, 0x20e9, 0x0001, 0x20a1, 0x150e, 0x20a9, 0x0004, 0x4003, -+ 0x080c, 0x8dc3, 0x20e1, 0x0001, 0x2099, 0x1500, 0x20e9, 0x0000, -+ 0x20a1, 0x0240, 0x20a9, 0x0014, 0x4003, 0x60c3, 0x000c, 0x600f, -+ 0x0000, 0x080c, 0x4f86, 0x00fe, 0x9006, 0x708a, 0x6043, 0x0008, -+ 0x6042, 0x0005, 0x00f6, 0x7088, 0x708b, 0x0000, 0x9025, 0x0904, -+ 0x49aa, 0x6020, 0xd0b4, 0x1904, 0x49a8, 0x7198, 0x81ff, 0x0904, -+ 0x4996, 0x9486, 0x000c, 0x1904, 0x49a3, 0x9480, 0x0018, 0x8004, -+ 0x20a8, 0x080c, 0x50ce, 0x2011, 0x0260, 0x2019, 0x1500, 0x220c, -+ 0x2304, 0x9106, 0x11e8, 0x8210, 0x8318, 0x1f04, 0x494f, 0x6043, -+ 0x0004, 0x2061, 0x0140, 0x605b, 0xbc94, 0x605f, 0xf0f0, 0x2061, -+ 0x0100, 0x6043, 0x0006, 0x7087, 0x0002, 0x7093, 0x0002, 0x2009, -+ 0x07d0, 0x2011, 0x4f57, 0x080c, 0x7283, 0x080c, 0x50d5, 0x04c0, -+ 0x080c, 0x50ce, 0x2079, 0x0260, 0x7930, 0x918e, 0x1101, 0x1558, -+ 0x7834, 0x9005, 0x1540, 0x7900, 0x918c, 0x00ff, 0x1118, 0x7804, -+ 0x9005, 0x0190, 0x080c, 0x50ce, 0x2011, 0x026e, 0x2019, 0x1105, -+ 0x20a9, 0x0004, 0x220c, 0x2304, 0x9102, 0x0230, 0x11a0, 0x8210, -+ 0x8318, 0x1f04, 0x498a, 0x0078, 0x709b, 0x0000, 0x080c, 0x50ce, -+ 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0001, 0x20a1, 0x1500, -+ 0x20a9, 0x0014, 0x4003, 0x6043, 0x0008, 0x6043, 0x0000, 0x0010, -+ 0x00fe, 0x0005, 0x6040, 0x9085, 0x0100, 0x6042, 0x6020, 0xd0b4, -+ 0x1db8, 0x080c, 0x8dc3, 0x20e1, 0x0001, 0x2099, 0x1500, 0x20e9, -+ 0x0000, 0x20a1, 0x0240, 0x20a9, 0x0014, 0x4003, 0x60c3, 0x000c, -+ 0x2011, 0x130e, 0x2013, 0x0000, 0x708b, 0x0000, 0x60a3, 0x0056, -+ 0x60a7, 0x9575, 0x080c, 0x8599, 0x08d8, 0x0005, 0x7090, 0x908a, -+ 0x001d, 0x1a0c, 0x0d7e, 0x000b, 0x0005, 0x49ff, 0x4a12, 0x4a3b, -+ 0x4a5b, 0x4a81, 0x4ab0, 0x4ad6, 0x4b0e, 0x4b34, 0x4b62, 0x4b9b, -+ 0x4bd3, 0x4bf1, 0x4c1c, 0x4c3e, 0x4c55, 0x4c5d, 0x4c91, 0x4cb7, -+ 0x4ce6, 0x4d0c, 0x4d44, 0x4d7e, 0x4db3, 0x4dd1, 0x4e2a, 0x4e4c, -+ 0x4e76, 0x4e76, 0x00c6, 0x2061, 0x1100, 0x6003, 0x0007, 0x2061, -+ 0x0100, 0x6004, 0x9084, 0xfff9, 0x6006, 0x00ce, 0x0005, 0x2061, -+ 0x0140, 0x605b, 0xbc94, 0x605f, 0xf0f0, 0x2061, 0x0100, 0x6043, -+ 0x0002, 0x7093, 0x0001, 0x2009, 0x07d0, 0x2011, 0x4f57, 0x080c, -+ 0x7283, 0x0005, 0x00f6, 0x7088, 0x9086, 0x0014, 0x1510, 0x6042, -+ 0x6020, 0xd0b4, 0x11f0, 0x080c, 0x50ce, 0x2079, 0x0260, 0x7a30, -+ 0x9296, 0x1102, 0x11a0, 0x7834, 0x9005, 0x1188, 0x7a38, 0xd2fc, -+ 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x2011, 0x4f57, -+ 0x080c, 0x71fa, 0x7093, 0x0010, 0x080c, 0x4c5d, 0x0010, 0x708b, -+ 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0003, 0x6043, 0x0004, -+ 0x2011, 0x4f57, 0x080c, 0x71fa, 0x080c, 0x505d, 0x2079, 0x0240, -+ 0x7833, 0x1102, 0x7837, 0x0000, 0x20a9, 0x0008, 0x9f88, 0x000e, -+ 0x200b, 0x0000, 0x8108, 0x1f04, 0x4a50, 0x60c3, 0x0014, 0x080c, -+ 0x4f86, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011, -+ 0x4f57, 0x080c, 0x71fa, 0x9086, 0x0014, 0x11b8, 0x080c, 0x50ce, -+ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1102, 0x1178, 0x7834, 0x9005, -+ 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, -+ 0x0001, 0x7093, 0x0004, 0x0029, 0x0010, 0x080c, 0x50aa, 0x00fe, -+ 0x0005, 0x00f6, 0x7093, 0x0005, 0x080c, 0x505d, 0x2079, 0x0240, -+ 0x7833, 0x1103, 0x7837, 0x0000, 0x080c, 0x50ce, 0x080c, 0x50b1, -+ 0x1170, 0x707c, 0x9005, 0x1158, 0x7154, 0x9186, 0xffff, 0x0138, -+ 0x2011, 0x0008, 0x080c, 0x4f04, 0x0168, 0x080c, 0x5092, 0x20a9, -+ 0x0008, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, -+ 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x4f86, 0x00fe, 0x0005, -+ 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011, 0x4f57, 0x080c, 0x71fa, -+ 0x9086, 0x0014, 0x11b8, 0x080c, 0x50ce, 0x2079, 0x0260, 0x7a30, -+ 0x9296, 0x1103, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, -+ 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0006, -+ 0x0029, 0x0010, 0x080c, 0x50aa, 0x00fe, 0x0005, 0x00f6, 0x7093, -+ 0x0007, 0x080c, 0x505d, 0x2079, 0x0240, 0x7833, 0x1104, 0x7837, -+ 0x0000, 0x080c, 0x50ce, 0x080c, 0x50b1, 0x11b8, 0x707c, 0x9005, -+ 0x11a0, 0x715c, 0x9186, 0xffff, 0x0180, 0x9180, 0x298c, 0x200d, -+ 0x918c, 0xff00, 0x810f, 0x2011, 0x0008, 0x080c, 0x4f04, 0x0180, -+ 0x080c, 0x41fc, 0x0110, 0x080c, 0x1fad, 0x20a9, 0x0008, 0x20e1, -+ 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, -+ 0x60c3, 0x0014, 0x080c, 0x4f86, 0x00fe, 0x0005, 0x00f6, 0x7088, -+ 0x9005, 0x0500, 0x2011, 0x4f57, 0x080c, 0x71fa, 0x9086, 0x0014, -+ 0x11b8, 0x080c, 0x50ce, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, -+ 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, -+ 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0008, 0x0029, 0x0010, -+ 0x080c, 0x50aa, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0009, 0x080c, -+ 0x505d, 0x2079, 0x0240, 0x7833, 0x1105, 0x7837, 0x0100, 0x080c, -+ 0x50b1, 0x1150, 0x707c, 0x9005, 0x1138, 0x080c, 0x4e77, 0x1188, -+ 0x9085, 0x0001, 0x080c, 0x1fad, 0x20a9, 0x0008, 0x080c, 0x50ce, -+ 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, -+ 0x4003, 0x60c3, 0x0014, 0x080c, 0x4f86, 0x0010, 0x080c, 0x49f2, -+ 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x0598, 0x2011, 0x4f57, -+ 0x080c, 0x71fa, 0x9086, 0x0014, 0x1550, 0x080c, 0x50ce, 0x2079, -+ 0x0260, 0x7a30, 0x9296, 0x1105, 0x1510, 0x7834, 0x2011, 0x0100, -+ 0x921e, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, -+ 0x70c3, 0x0001, 0x7093, 0x000a, 0x00b1, 0x0098, 0x9005, 0x1178, -+ 0x7a38, 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, -+ 0x708f, 0x0000, 0x7093, 0x000e, 0x080c, 0x4c3e, 0x0010, 0x080c, -+ 0x50aa, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x000b, 0x2011, 0x150e, -+ 0x20e9, 0x0001, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x4304, -+ 0x080c, 0x505d, 0x2079, 0x0240, 0x7833, 0x1106, 0x7837, 0x0000, -+ 0x080c, 0x50b1, 0x0118, 0x2013, 0x0000, 0x0020, 0x7058, 0x9085, -+ 0x0100, 0x2012, 0x20a9, 0x0040, 0x2009, 0x024e, 0x2011, 0x150e, -+ 0x220e, 0x8210, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, -+ 0x6812, 0x2009, 0x0240, 0x1f04, 0x4bc0, 0x60c3, 0x0084, 0x080c, -+ 0x4f86, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01c0, 0x2011, -+ 0x4f57, 0x080c, 0x71fa, 0x9086, 0x0084, 0x1178, 0x080c, 0x50ce, -+ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1106, 0x1138, 0x7834, 0x9005, -+ 0x1120, 0x7093, 0x000c, 0x0029, 0x0010, 0x080c, 0x50aa, 0x00fe, -+ 0x0005, 0x00f6, 0x7093, 0x000d, 0x080c, 0x505d, 0x2079, 0x0240, -+ 0x7833, 0x1107, 0x7837, 0x0000, 0x080c, 0x50ce, 0x20a9, 0x0040, -+ 0x2011, 0x026e, 0x2009, 0x024e, 0x220e, 0x8210, 0x8108, 0x9186, -+ 0x0260, 0x1150, 0x6810, 0x8000, 0x6812, 0x2009, 0x0240, 0x6814, -+ 0x8000, 0x6816, 0x2011, 0x0260, 0x1f04, 0x4c04, 0x60c3, 0x0084, -+ 0x080c, 0x4f86, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01e0, -+ 0x2011, 0x4f57, 0x080c, 0x71fa, 0x9086, 0x0084, 0x1198, 0x080c, -+ 0x50ce, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, -+ 0x9005, 0x1140, 0x708f, 0x0001, 0x080c, 0x502f, 0x7093, 0x000e, -+ 0x0029, 0x0010, 0x080c, 0x50aa, 0x00fe, 0x0005, 0x7093, 0x000f, -+ 0x708b, 0x0000, 0x2061, 0x0140, 0x605b, 0xbc85, 0x605f, 0xb5b5, -+ 0x2061, 0x0100, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, -+ 0x2011, 0x4f57, 0x080c, 0x71ee, 0x0005, 0x7088, 0x9005, 0x0120, -+ 0x2011, 0x4f57, 0x080c, 0x71fa, 0x0005, 0x7093, 0x0011, 0x080c, -+ 0x8dc3, 0x080c, 0x50ce, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, -+ 0x0000, 0x20a1, 0x0240, 0x7488, 0x9480, 0x0018, 0x9080, 0x0007, -+ 0x9084, 0x03f8, 0x8004, 0x20a8, 0x4003, 0x080c, 0x50b1, 0x11a0, -+ 0x7174, 0x81ff, 0x0188, 0x900e, 0x7078, 0x9084, 0x00ff, 0x0160, -+ 0x080c, 0x1f63, 0x9186, 0x007e, 0x0138, 0x9186, 0x0080, 0x0120, -+ 0x2011, 0x0008, 0x080c, 0x4f04, 0x60c3, 0x0014, 0x080c, 0x4f86, -+ 0x0005, 0x00f6, 0x7088, 0x9005, 0x0500, 0x2011, 0x4f57, 0x080c, -+ 0x71fa, 0x9086, 0x0014, 0x11b8, 0x080c, 0x50ce, 0x2079, 0x0260, -+ 0x7a30, 0x9296, 0x1103, 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, -+ 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, -+ 0x0012, 0x0029, 0x0010, 0x708b, 0x0000, 0x00fe, 0x0005, 0x00f6, -+ 0x7093, 0x0013, 0x080c, 0x506b, 0x2079, 0x0240, 0x7833, 0x1103, -+ 0x7837, 0x0000, 0x080c, 0x50ce, 0x080c, 0x50b1, 0x1170, 0x707c, -+ 0x9005, 0x1158, 0x7154, 0x9186, 0xffff, 0x0138, 0x2011, 0x0008, -+ 0x080c, 0x4f04, 0x0168, 0x080c, 0x5092, 0x20a9, 0x0008, 0x20e1, -+ 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, -+ 0x60c3, 0x0014, 0x080c, 0x4f86, 0x00fe, 0x0005, 0x00f6, 0x7088, -+ 0x9005, 0x0500, 0x2011, 0x4f57, 0x080c, 0x71fa, 0x9086, 0x0014, -+ 0x11b8, 0x080c, 0x50ce, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1104, -+ 0x1178, 0x7834, 0x9005, 0x1160, 0x7a38, 0xd2fc, 0x0128, 0x70c0, -+ 0x9005, 0x1110, 0x70c3, 0x0001, 0x7093, 0x0014, 0x0029, 0x0010, -+ 0x708b, 0x0000, 0x00fe, 0x0005, 0x00f6, 0x7093, 0x0015, 0x080c, -+ 0x506b, 0x2079, 0x0240, 0x7833, 0x1104, 0x7837, 0x0000, 0x080c, -+ 0x50ce, 0x080c, 0x50b1, 0x11b8, 0x707c, 0x9005, 0x11a0, 0x715c, -+ 0x9186, 0xffff, 0x0180, 0x9180, 0x298c, 0x200d, 0x918c, 0xff00, -+ 0x810f, 0x2011, 0x0008, 0x080c, 0x4f04, 0x0180, 0x080c, 0x41fc, -+ 0x0110, 0x080c, 0x1fad, 0x20a9, 0x0008, 0x20e1, 0x0000, 0x2099, -+ 0x026e, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, -+ 0x080c, 0x4f86, 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x05a0, -+ 0x2011, 0x4f57, 0x080c, 0x71fa, 0x9086, 0x0014, 0x1558, 0x080c, -+ 0x50ce, 0x2079, 0x0260, 0x7a30, 0x9296, 0x1105, 0x1518, 0x7834, -+ 0x2011, 0x0100, 0x921e, 0x1148, 0x7a38, 0xd2fc, 0x0128, 0x70c0, -+ 0x9005, 0x1110, 0x70c3, 0x0001, 0x0060, 0x9005, 0x1198, 0x7a38, -+ 0xd2fc, 0x0128, 0x70c0, 0x9005, 0x1110, 0x70c3, 0x0001, 0x708f, -+ 0x0000, 0x7a38, 0xd2f4, 0x0110, 0x70db, 0x0008, 0x7093, 0x0016, -+ 0x0029, 0x0010, 0x708b, 0x0000, 0x00fe, 0x0005, 0x080c, 0x8dc3, -+ 0x080c, 0x50ce, 0x20e1, 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, -+ 0x20a1, 0x0240, 0x20a9, 0x000e, 0x4003, 0x2011, 0x026e, 0x7093, -+ 0x0017, 0x080c, 0x50b1, 0x1150, 0x707c, 0x9005, 0x1138, 0x080c, -+ 0x4e77, 0x1188, 0x9085, 0x0001, 0x080c, 0x1fad, 0x20a9, 0x0008, -+ 0x080c, 0x50ce, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, -+ 0x20a1, 0x024e, 0x4003, 0x60c3, 0x0014, 0x080c, 0x4f86, 0x0010, -+ 0x080c, 0x49f2, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01c0, 0x2011, -+ 0x4f57, 0x080c, 0x71fa, 0x9086, 0x0084, 0x1178, 0x080c, 0x50ce, -+ 0x2079, 0x0260, 0x7a30, 0x9296, 0x1106, 0x1138, 0x7834, 0x9005, -+ 0x1120, 0x7093, 0x0018, 0x0029, 0x0010, 0x708b, 0x0000, 0x00fe, -+ 0x0005, 0x00f6, 0x7093, 0x0019, 0x080c, 0x506b, 0x2079, 0x0240, -+ 0x7833, 0x1106, 0x7837, 0x0000, 0x080c, 0x50ce, 0x2009, 0x026e, -+ 0x2039, 0x150e, 0x20a9, 0x0040, 0x213e, 0x8738, 0x8108, 0x9186, -+ 0x0280, 0x1128, 0x6814, 0x8000, 0x6816, 0x2009, 0x0260, 0x1f04, -+ 0x4de4, 0x2039, 0x150e, 0x080c, 0x50b1, 0x11e8, 0x2728, 0x2514, -+ 0x8207, 0x9084, 0x00ff, 0x8000, 0x2018, 0x9294, 0x00ff, 0x8007, -+ 0x9205, 0x202a, 0x7058, 0x2310, 0x8214, 0x92a0, 0x150e, 0x2414, -+ 0x938c, 0x0001, 0x0118, 0x9294, 0xff00, 0x0018, 0x9294, 0x00ff, -+ 0x8007, 0x9215, 0x2222, 0x20a9, 0x0040, 0x2009, 0x024e, 0x270e, -+ 0x8738, 0x8108, 0x9186, 0x0260, 0x1128, 0x6810, 0x8000, 0x6812, -+ 0x2009, 0x0240, 0x1f04, 0x4e17, 0x60c3, 0x0084, 0x080c, 0x4f86, -+ 0x00fe, 0x0005, 0x00f6, 0x7088, 0x9005, 0x01e0, 0x2011, 0x4f57, -+ 0x080c, 0x71fa, 0x9086, 0x0084, 0x1198, 0x080c, 0x50ce, 0x2079, -+ 0x0260, 0x7a30, 0x9296, 0x1107, 0x1158, 0x7834, 0x9005, 0x1140, -+ 0x708f, 0x0001, 0x080c, 0x502f, 0x7093, 0x001a, 0x0029, 0x0010, -+ 0x708b, 0x0000, 0x00fe, 0x0005, 0x7093, 0x001b, 0x080c, 0x8dc3, -+ 0x080c, 0x50ce, 0x2011, 0x0260, 0x2009, 0x0240, 0x7488, 0x9480, -+ 0x0018, 0x9080, 0x0007, 0x9084, 0x03f8, 0x8004, 0x20a8, 0x220e, -+ 0x8210, 0x8108, 0x9186, 0x0260, 0x1150, 0x6810, 0x8000, 0x6812, -+ 0x2009, 0x0240, 0x6814, 0x8000, 0x6816, 0x2011, 0x0260, 0x1f04, -+ 0x4e5f, 0x60c3, 0x0084, 0x080c, 0x4f86, 0x0005, 0x0005, 0x0086, -+ 0x0096, 0x2029, 0x1153, 0x252c, 0x20a9, 0x0008, 0x2041, 0x150e, -+ 0x20e9, 0x0001, 0x28a0, 0x080c, 0x50ce, 0x20e1, 0x0000, 0x2099, -+ 0x026e, 0x4003, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0108, -+ 0x9016, 0x2800, 0x9200, 0x200c, 0x91a6, 0xffff, 0x1148, 0xd5d4, -+ 0x0110, 0x8210, 0x0008, 0x8211, 0x1f04, 0x4e91, 0x0804, 0x4f00, -+ 0x82ff, 0x1160, 0xd5d4, 0x0120, 0x91a6, 0x3fff, 0x0d90, 0x0020, -+ 0x91a6, 0x3fff, 0x0904, 0x4f00, 0x918d, 0xc000, 0x20a9, 0x0010, -+ 0x2019, 0x0001, 0xd5d4, 0x0110, 0x2019, 0x0010, 0x2120, 0xd5d4, -+ 0x0110, 0x8423, 0x0008, 0x8424, 0x1240, 0xd5d4, 0x0110, 0x8319, -+ 0x0008, 0x8318, 0x1f04, 0x4eb7, 0x04d8, 0x23a8, 0x2021, 0x0001, -+ 0x8426, 0x8425, 0x1f04, 0x4ec9, 0x2328, 0x8529, 0x92be, 0x0007, -+ 0x0158, 0x0006, 0x2039, 0x0007, 0x2200, 0x973a, 0x000e, 0x27a8, -+ 0x95a8, 0x0010, 0x1f04, 0x4ed8, 0x7556, 0x95c8, 0x298c, 0x292d, -+ 0x95ac, 0x00ff, 0x757a, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, -+ 0x1f8d, 0x001e, 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, 0x9405, -+ 0x201a, 0x707f, 0x0001, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x20e1, -+ 0x0001, 0x2898, 0x20a9, 0x0008, 0x4003, 0x9085, 0x0001, 0x0008, -+ 0x9006, 0x009e, 0x008e, 0x0005, 0x0156, 0x01c6, 0x01d6, 0x0136, -+ 0x0146, 0x22a8, 0x20e1, 0x0000, 0x2099, 0x026e, 0x20e9, 0x0000, -+ 0x2011, 0x024e, 0x22a0, 0x4003, 0x014e, 0x013e, 0x01de, 0x01ce, -+ 0x015e, 0x2118, 0x9026, 0x2001, 0x0007, 0x939a, 0x0010, 0x0218, -+ 0x8420, 0x8001, 0x0cd0, 0x2118, 0x84ff, 0x0120, 0x939a, 0x0010, -+ 0x8421, 0x1de0, 0x2021, 0x0001, 0x83ff, 0x0118, 0x8423, 0x8319, -+ 0x1de8, 0x9238, 0x2029, 0x026e, 0x9528, 0x2504, 0x942c, 0x11b8, -+ 0x9405, 0x203a, 0x7156, 0x91a0, 0x298c, 0x242d, 0x95ac, 0x00ff, -+ 0x757a, 0x6532, 0x6536, 0x0016, 0x2508, 0x080c, 0x1f8d, 0x001e, -+ 0x60e7, 0x0000, 0x65ea, 0x707f, 0x0001, 0x9084, 0x0000, 0x0005, -+ 0x00e6, 0x2071, 0x1100, 0x7083, 0x0000, 0x00ee, 0x0005, 0x00e6, -+ 0x00f6, 0x2079, 0x0100, 0x2071, 0x0140, 0x080c, 0x501e, 0x080c, -+ 0x85a2, 0x7004, 0x9084, 0x4000, 0x0138, 0x2001, 0x1000, 0x080c, -+ 0x2401, 0x9006, 0x080c, 0x2401, 0x0126, 0x2091, 0x8000, 0x2071, -+ 0x1124, 0x2073, 0x0000, 0x7840, 0x0026, 0x0016, 0x2009, 0x00f7, -+ 0x080c, 0x507b, 0x001e, 0x9094, 0x0010, 0x9285, 0x0080, 0x7842, -+ 0x7a42, 0x002e, 0x012e, 0x00fe, 0x00ee, 0x0005, 0x0126, 0x2091, -+ 0x8000, 0x2011, 0x130e, 0x2013, 0x0000, 0x708b, 0x0000, 0x012e, -+ 0x60a3, 0x0056, 0x60a7, 0x9575, 0x080c, 0x8599, 0x6144, 0xd184, -+ 0x0120, 0x7190, 0x918d, 0x2000, 0x0018, 0x7184, 0x918d, 0x1000, -+ 0x2011, 0x12d3, 0x2112, 0x2009, 0x07d0, 0x2011, 0x4f57, 0x080c, -+ 0x7283, 0x0005, 0x0016, 0x0026, 0x00c6, 0x0126, 0x2091, 0x8000, -+ 0x2011, 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, -+ 0x080c, 0x87a2, 0x0036, 0x901e, 0x080c, 0x8847, 0x003e, 0x2009, -+ 0x00f7, 0x080c, 0x507b, 0x2061, 0x1317, 0x900e, 0x611a, 0x611e, -+ 0x2061, 0x1100, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043, 0x0090, -+ 0x6043, 0x0010, 0x2009, 0x12d3, 0x200b, 0x0000, 0x2009, 0x002d, -+ 0x2011, 0x4fe1, 0x080c, 0x71ee, 0x012e, 0x00ce, 0x002e, 0x001e, -+ 0x0005, 0x00e6, 0x0006, 0x0126, 0x2091, 0x8000, 0x04b9, 0x2071, -+ 0x0100, 0x080c, 0x85a2, 0x2071, 0x0140, 0x7004, 0x9084, 0x4000, -+ 0x0138, 0x2001, 0x1000, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, -+ 0x080c, 0x62ec, 0x01a8, 0x080c, 0x630a, 0x1190, 0x2001, 0x12a7, -+ 0x2003, 0xaaaa, 0x0016, 0x080c, 0x205d, 0x2001, 0x1298, 0x2102, -+ 0x001e, 0x2001, 0x12a8, 0x2003, 0x0000, 0x080c, 0x621a, 0x0050, -+ 0x2009, 0x0001, 0x080c, 0x2355, 0x2001, 0x0001, 0x080c, 0x1f11, -+ 0x080c, 0x4faa, 0x012e, 0x000e, 0x00ee, 0x0005, 0x2001, 0x110d, -+ 0x2004, 0xd0bc, 0x0158, 0x0026, 0x0036, 0x2011, 0x8017, 0x2001, -+ 0x12d3, 0x201c, 0x080c, 0x3f23, 0x003e, 0x002e, 0x0005, 0x20a9, -+ 0x0012, 0x20e9, 0x0001, 0x20a1, 0x1580, 0x080c, 0x50ce, 0x20e9, -+ 0x0000, 0x2099, 0x026e, 0x0099, 0x20a9, 0x0020, 0x080c, 0x50c8, -+ 0x2099, 0x0260, 0x20a1, 0x1592, 0x0051, 0x20a9, 0x000e, 0x080c, -+ 0x50cb, 0x2099, 0x0260, 0x20a1, 0x15b2, 0x0009, 0x0005, 0x0016, -+ 0x0026, 0x3410, 0x3308, 0x2104, 0x8007, 0x2012, 0x8108, 0x8210, -+ 0x1f04, 0x5053, 0x002e, 0x001e, 0x0005, 0x080c, 0x8dc3, 0x20e1, -+ 0x0001, 0x2099, 0x1500, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, -+ 0x000c, 0x4003, 0x0005, 0x080c, 0x8dc3, 0x080c, 0x50ce, 0x20e1, -+ 0x0000, 0x2099, 0x0260, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, -+ 0x000c, 0x4003, 0x0005, 0x00c6, 0x0006, 0x2061, 0x0100, 0x810f, -+ 0x2001, 0x1133, 0x2004, 0x9005, 0x1138, 0x2001, 0x1116, 0x2004, -+ 0x9084, 0x00ff, 0x9105, 0x0010, 0x9185, 0x00f7, 0x604a, 0x000e, -+ 0x00ce, 0x0005, 0x0016, 0x0046, 0x080c, 0x58cb, 0x0158, 0x9006, -+ 0x2020, 0x2009, 0x002a, 0x080c, 0xc12f, 0x2001, 0x110c, 0x200c, -+ 0xc195, 0x2102, 0x2019, 0x002a, 0x900e, 0x080c, 0x2831, 0x004e, -+ 0x001e, 0x0005, 0x080c, 0x4faa, 0x7093, 0x0000, 0x708b, 0x0000, -+ 0x0005, 0x0006, 0x2001, 0x110c, 0x2004, 0xd09c, 0x0100, 0x000e, -+ 0x0005, 0x0006, 0x0016, 0x0126, 0x2091, 0x8000, 0x2001, 0x0101, -+ 0x200c, 0x918d, 0x0006, 0x2102, 0x012e, 0x001e, 0x000e, 0x0005, -+ 0x2009, 0x0001, 0x0020, 0x2009, 0x0002, 0x0008, 0x900e, 0x6814, -+ 0x9084, 0xffc0, 0x910d, 0x6916, 0x0005, 0x00f6, 0x0156, 0x0146, -+ 0x01d6, 0x9006, 0x20a9, 0x0080, 0x20e9, 0x0001, 0x20a1, 0x1500, -+ 0x4004, 0x2079, 0x1500, 0x7803, 0x2200, 0x7807, 0x00ef, 0x780f, -+ 0x00ef, 0x7813, 0x0138, 0x7823, 0xffff, 0x7827, 0xffff, 0x01de, -+ 0x014e, 0x015e, 0x00fe, 0x0005, 0x0156, 0x20a9, 0x00ff, 0x2009, -+ 0x1000, 0x9006, 0x200a, 0x8108, 0x1f04, 0x50fa, 0x015e, 0x0005, -+ 0x00d6, 0x0036, 0x0156, 0x0136, 0x0146, 0x2069, 0x1152, 0x9006, -+ 0x6002, 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0x9198, 0x298c, -+ 0x231d, 0x939c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0x9c98, 0x0006, -+ 0x20e9, 0x0001, 0x23a0, 0x4004, 0x20a9, 0x0004, 0x9c98, 0x000a, -+ 0x23a0, 0x4004, 0x603e, 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, -+ 0x605e, 0x6062, 0x6066, 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, -+ 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x60ae, 0x61a2, -+ 0x00d6, 0x60a4, 0x906d, 0x0110, 0x080c, 0x0ecf, 0x60a7, 0x0000, -+ 0x00de, 0x9006, 0x604a, 0x6810, 0x603a, 0x680c, 0x6046, 0x6814, -+ 0x9084, 0x00ff, 0x6042, 0x014e, 0x013e, 0x015e, 0x003e, 0x00de, -+ 0x0005, 0x0126, 0x2091, 0x8000, 0x6974, 0x6e78, 0x9684, 0x3fff, -+ 0x9082, 0x4000, 0x1a04, 0x51c0, 0x918c, 0xff00, 0x810f, 0x9182, -+ 0x00ff, 0x1a04, 0x51c4, 0x2001, 0x110c, 0x2004, 0x9084, 0x0003, -+ 0x1904, 0x51ca, 0x9188, 0x1000, 0x2104, 0x9065, 0x0500, 0x6004, -+ 0x9084, 0x00ff, 0x908e, 0x0006, 0x11f0, 0x60a4, 0x900d, 0x1904, -+ 0x51df, 0x6050, 0x900d, 0x1148, 0x6802, 0x2d00, 0x6052, 0x604e, -+ 0x080c, 0x758b, 0x9006, 0x012e, 0x0005, 0x2d00, 0x200a, 0x6803, -+ 0x0000, 0x6052, 0x0ca8, 0x2001, 0x0005, 0x900e, 0x04c0, 0x2001, -+ 0x0028, 0x900e, 0x04a0, 0x9082, 0x0006, 0x1298, 0x2001, 0x1136, -+ 0x2004, 0xd0ac, 0x1158, 0x60a0, 0xd0bc, 0x1140, 0x6100, 0xd1fc, -+ 0x09a0, 0x2001, 0x0029, 0x2009, 0x1000, 0x0408, 0x2001, 0x0028, -+ 0x00a8, 0x2009, 0x110c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, -+ 0x0068, 0xd184, 0x0118, 0x2001, 0x0004, 0x0040, 0x2001, 0x0029, -+ 0x6100, 0xd1fc, 0x0118, 0x2009, 0x1000, 0x0048, 0x900e, 0x0038, -+ 0x2001, 0x0029, 0x900e, 0x0018, 0x2001, 0x0029, 0x900e, 0x9005, -+ 0x012e, 0x0005, 0x2001, 0x110c, 0x2004, 0xd084, 0x19d0, 0x9188, -+ 0x1000, 0x2104, 0x9065, 0x09a8, 0x6004, 0x9084, 0x00ff, 0x908e, -+ 0x0006, 0x1978, 0x6000, 0xd0c4, 0x0960, 0x0804, 0x5175, 0x080c, -+ 0x5791, 0x0904, 0x518b, 0x0804, 0x5179, 0x00e6, 0x0126, 0x2091, -+ 0x8000, 0x6874, 0x8007, 0x9084, 0x00ff, 0x2008, 0x9182, 0x00ff, -+ 0x1a04, 0x5247, 0x9188, 0x1000, 0x2104, 0x9065, 0x0538, 0x6004, -+ 0x908c, 0x00ff, 0x918e, 0x0006, 0x0128, 0x908c, 0xff00, 0x918e, -+ 0x0600, 0x11f8, 0x2c70, 0x687c, 0xd0fc, 0x0138, 0x6894, 0x9005, -+ 0x0120, 0x2060, 0x2d00, 0x6016, 0x0058, 0x080c, 0x8e83, 0x05e8, -+ 0x2e00, 0x6012, 0x2d00, 0x6016, 0x600b, 0xffff, 0x6023, 0x000a, -+ 0x2009, 0x0003, 0x080c, 0x8f53, 0x9006, 0x0460, 0x2001, 0x0028, -+ 0x0440, 0x9082, 0x0006, 0x1298, 0x2001, 0x1136, 0x2004, 0xd0ac, -+ 0x1158, 0x60a0, 0xd0bc, 0x1140, 0x6100, 0xd1fc, 0x0998, 0x2001, -+ 0x0029, 0x2009, 0x1000, 0x00a8, 0x2001, 0x0028, 0x0090, 0x2009, -+ 0x110c, 0x210c, 0xd18c, 0x0118, 0x2001, 0x0004, 0x0050, 0xd184, -+ 0x0118, 0x2001, 0x0004, 0x0028, 0x2001, 0x0029, 0x0010, 0x2001, -+ 0x0029, 0x9005, 0x012e, 0x00ee, 0x0005, 0x2001, 0x002c, 0x0cc8, -+ 0x00f6, 0x00e6, 0x0126, 0x2091, 0x8000, 0x68e0, 0x9005, 0x1568, -+ 0x68dc, 0x9082, 0x0101, 0x1648, 0x68c8, 0x9005, 0x1530, 0x68c4, -+ 0x9082, 0x0101, 0x1610, 0x6974, 0x2079, 0x1100, 0x918c, 0xff00, -+ 0x810f, 0x9182, 0x00ff, 0x12e8, 0x7830, 0x9084, 0x0003, 0x1130, -+ 0x6a98, 0x6b94, 0x6878, 0x9084, 0x0007, 0x00ea, 0x7930, 0xd18c, -+ 0x0118, 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, -+ 0x0010, 0x2001, 0x0029, 0x900e, 0x0038, 0x2001, 0x002c, 0x900e, -+ 0x0018, 0x2001, 0x0029, 0x900e, 0x9006, 0x0008, 0x9005, 0x012e, -+ 0x00ee, 0x00fe, 0x0005, 0x52e3, 0x529b, 0x52b4, 0x52e3, 0x52e3, -+ 0x52e3, 0x52e3, 0x52e3, 0x2100, 0x9082, 0x007e, 0x1280, 0x080c, -+ 0x55b3, 0x2c70, 0x0148, 0x7010, 0x9306, 0x1904, 0x52eb, 0x7014, -+ 0x9206, 0x1904, 0x52eb, 0x0028, 0x7312, 0x7216, 0x0010, 0x080c, -+ 0x3dc2, 0x2c70, 0x0158, 0x04b8, 0x080c, 0x5608, 0x15a0, 0x2c70, -+ 0x7010, 0x9306, 0x1580, 0x7014, 0x9206, 0x1568, 0x080c, 0x8e83, -+ 0x0530, 0x2e00, 0x6012, 0x080c, 0xad70, 0x2d00, 0x6016, 0x600b, -+ 0xffff, 0x6023, 0x000a, 0x6878, 0x9086, 0x0001, 0x1170, 0x080c, -+ 0x2862, 0x9006, 0x080c, 0x5556, 0x2001, 0x0002, 0x080c, 0x5568, -+ 0x2001, 0x0200, 0x706e, 0x7093, 0x0002, 0x2009, 0x0003, 0x080c, -+ 0x8f53, 0x9006, 0x0068, 0x2001, 0x0001, 0x900e, 0x0038, 0x2001, -+ 0x002c, 0x900e, 0x0018, 0x2001, 0x0028, 0x900e, 0x9005, 0x0000, -+ 0x012e, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x00e6, 0x0126, 0x2091, -+ 0x8000, 0x6894, 0x90c6, 0x0015, 0x0904, 0x54b0, 0x90c6, 0x0056, -+ 0x0904, 0x54b4, 0x90c6, 0x0066, 0x0904, 0x54b8, 0x90c6, 0x0071, -+ 0x0904, 0x54bc, 0x90c6, 0x0074, 0x0904, 0x54c0, 0x90c6, 0x007c, -+ 0x0904, 0x54c4, 0x90c6, 0x007e, 0x0904, 0x54c8, 0x90c6, 0x0037, -+ 0x0904, 0x54cc, 0x9016, 0x2079, 0x1100, 0x6974, 0x918c, 0xff00, -+ 0x810f, 0x9182, 0x00ff, 0x1a04, 0x54ab, 0x080c, 0x5608, 0x11a0, -+ 0x6004, 0x9084, 0x00ff, 0x9082, 0x0006, 0x1270, 0x6894, 0x90c6, -+ 0x006f, 0x0150, 0x2001, 0x1136, 0x2004, 0xd0ac, 0x1904, 0x5496, -+ 0x60a0, 0xd0bc, 0x1904, 0x5496, 0x6894, 0x90c6, 0x006f, 0x0158, -+ 0x90c6, 0x005e, 0x0904, 0x53df, 0x90c6, 0x0064, 0x0904, 0x5413, -+ 0x2008, 0x0804, 0x53aa, 0x6998, 0x2140, 0x918c, 0xff00, 0x810f, -+ 0x78d8, 0xd0ac, 0x1120, 0x9182, 0x0080, 0x0a04, 0x53aa, 0x9182, -+ 0x00ff, 0x1a04, 0x53aa, 0x6aa0, 0x6b9c, 0x7874, 0x9306, 0x1168, -+ 0x7878, 0x924e, 0x1120, 0x2208, 0x2310, 0x0804, 0x53aa, 0x99cc, -+ 0xff00, 0x1118, 0x2208, 0x2310, 0x04e8, 0x080c, 0x3dc2, 0x2c70, -+ 0x0904, 0x53b2, 0x900e, 0x9016, 0x90c6, 0x4000, 0x1520, 0x0006, -+ 0x2e60, 0x080c, 0x57d6, 0x1108, 0xc185, 0x7000, 0xd0bc, 0x0108, -+ 0xc18d, 0x20a9, 0x0004, 0x9d80, 0x0031, 0x20a0, 0x20e9, 0x0001, -+ 0x9e80, 0x0006, 0x2098, 0x080c, 0x504f, 0x20a9, 0x0004, 0x9d80, -+ 0x0035, 0x20a0, 0x20e9, 0x0001, 0x9e80, 0x000a, 0x2098, 0x080c, -+ 0x504f, 0x000e, 0x0088, 0x90c6, 0x4007, 0x1110, 0x2408, 0x0060, -+ 0x90c6, 0x4008, 0x1118, 0x2708, 0x2610, 0x0030, 0x90c6, 0x4009, -+ 0x1108, 0x0010, 0x2001, 0x4006, 0x6896, 0x699a, 0x6a9e, 0x2001, -+ 0x0030, 0x0440, 0x080c, 0x8e83, 0x1130, 0x2001, 0x4005, 0x2009, -+ 0x0003, 0x9016, 0x0c88, 0x2e00, 0x6012, 0x080c, 0xad70, 0x2d00, -+ 0x6016, 0x6023, 0x0001, 0x6868, 0xd88c, 0x0108, 0xc0f5, 0x686a, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x2862, 0x012e, 0x9006, 0x080c, -+ 0x5556, 0x2001, 0x0002, 0x080c, 0x5568, 0x2009, 0x0002, 0x080c, -+ 0x8f53, 0x9006, 0x9005, 0x012e, 0x00ee, 0x00fe, 0x0005, 0x7800, -+ 0x9086, 0x0003, 0x0118, 0x2009, 0x0007, 0x0448, 0x6e98, 0x860f, -+ 0x918c, 0x00ff, 0x96b4, 0x00ff, 0x080c, 0x5608, 0x0120, 0x2009, -+ 0x000a, 0x0804, 0x53aa, 0x9186, 0x007f, 0x0148, 0x6004, 0x9084, -+ 0x00ff, 0x9086, 0x0006, 0x0118, 0x2009, 0x0009, 0x0080, 0x00d6, -+ 0x080c, 0x0e9d, 0x1120, 0x00de, 0x2009, 0x0002, 0x0040, 0x2d00, -+ 0x00de, 0x6806, 0x080c, 0xaaf5, 0x1960, 0x2009, 0x0003, 0x2001, -+ 0x4005, 0x0804, 0x53ac, 0x6e98, 0x860f, 0x918c, 0x00ff, 0x96b4, -+ 0x00ff, 0x080c, 0x5608, 0x0120, 0x2009, 0x000a, 0x0804, 0x53aa, -+ 0x00d6, 0x080c, 0x0e9d, 0x1128, 0x00de, 0x2009, 0x0002, 0x0804, -+ 0x547a, 0x2d00, 0x00de, 0x6806, 0x00d6, 0x2068, 0x20a9, 0x002b, -+ 0x20e1, 0x0001, 0x2c98, 0x9de8, 0x0002, 0x20e9, 0x0001, 0x2da0, -+ 0x4003, 0x20a9, 0x0004, 0x9d80, 0x0006, 0x20a0, 0x9c80, 0x0006, -+ 0x2098, 0x080c, 0x504f, 0x20a9, 0x0004, 0x9d80, 0x000a, 0x20a0, -+ 0x9c80, 0x000a, 0x2098, 0x080c, 0x504f, 0x00de, 0x687b, 0x0000, -+ 0x6883, 0x0000, 0x6897, 0x4000, 0xd684, 0x1170, 0x2001, 0x1153, -+ 0x2004, 0xd0b4, 0x1118, 0x689b, 0x000b, 0x0400, 0x6000, 0xd08c, -+ 0x0118, 0x689b, 0x000c, 0x00d0, 0x6004, 0x9084, 0x00ff, 0x9086, -+ 0x0006, 0x0118, 0x689b, 0x0009, 0x0088, 0x7800, 0x9086, 0x0003, -+ 0x0118, 0x689b, 0x0007, 0x0050, 0x080c, 0xaabe, 0x1904, 0x53d9, -+ 0x2009, 0x0003, 0x2001, 0x4005, 0x0804, 0x53ac, 0x687b, 0x0030, -+ 0x6897, 0x4005, 0x6804, 0x2009, 0x002b, 0x6aa0, 0x6b9c, 0x6ca8, -+ 0x6da4, 0x2031, 0x0000, 0x2039, 0x0001, 0x2041, 0x1078, 0x080c, -+ 0x9367, 0x1904, 0x53d9, 0x2009, 0x0002, 0x0c20, 0x2001, 0x0028, -+ 0x900e, 0x0804, 0x53da, 0x2009, 0x110c, 0x210c, 0xd18c, 0x0118, -+ 0x2001, 0x0004, 0x0038, 0xd184, 0x0118, 0x2001, 0x0004, 0x0010, -+ 0x2001, 0x0029, 0x900e, 0x2001, 0x0029, 0x900e, 0x0804, 0x53da, -+ 0x080c, 0x2d84, 0x0804, 0x53db, 0x080c, 0x460a, 0x0804, 0x53db, -+ 0x080c, 0x3a74, 0x0804, 0x53db, 0x080c, 0x3e74, 0x0804, 0x53db, -+ 0x080c, 0x408f, 0x0804, 0x53db, 0x080c, 0x4291, 0x0804, 0x53db, -+ 0x080c, 0x448a, 0x0804, 0x53db, 0x080c, 0x2f43, 0x0804, 0x53db, -+ 0x6974, 0x6e78, 0x9684, 0x3fff, 0x9082, 0x4000, 0x1648, 0x918c, -+ 0xff00, 0x810f, 0x9182, 0x00ff, 0x1280, 0x9188, 0x1000, 0x2104, -+ 0x9065, 0x0158, 0x6004, 0x9084, 0x00ff, 0x908e, 0x0006, 0x1148, -+ 0x00e1, 0x080c, 0x5721, 0x9006, 0x00b0, 0x2001, 0x0028, 0x900e, -+ 0x0090, 0x9082, 0x0006, 0x1240, 0x6100, 0xd1fc, 0x0d88, 0x2001, -+ 0x0029, 0x2009, 0x1000, 0x0038, 0x2001, 0x0029, 0x900e, 0x0018, -+ 0x2001, 0x0029, 0x900e, 0x9005, 0x0005, 0x0126, 0x2091, 0x8000, -+ 0x6050, 0x900d, 0x0138, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, -+ 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0cc0, -+ 0x0126, 0x2091, 0x8000, 0x604c, 0x9005, 0x0170, 0x00e6, 0x2071, -+ 0x1304, 0x7004, 0x9086, 0x0002, 0x0168, 0x00ee, 0x604c, 0x6802, -+ 0x2d00, 0x604e, 0x012e, 0x0005, 0x2d00, 0x6052, 0x604e, 0x6803, -+ 0x0000, 0x0cc0, 0x701c, 0x9c06, 0x1d80, 0x604c, 0x2070, 0x7000, -+ 0x6802, 0x2d00, 0x7002, 0x00ee, 0x012e, 0x0005, 0x0126, 0x2091, -+ 0x8000, 0x604c, 0x906d, 0x0130, 0x6800, 0x9005, 0x1108, 0x6052, -+ 0x604e, 0x9d05, 0x012e, 0x0005, 0x604c, 0x906d, 0x0130, 0x6800, -+ 0x9005, 0x1108, 0x6052, 0x604e, 0x9d05, 0x0005, 0x0126, 0x00c6, -+ 0x0026, 0x2091, 0x8000, 0x6210, 0x2260, 0x6200, 0x9005, 0x0110, -+ 0xc285, 0x0008, 0xc284, 0x6202, 0x002e, 0x00ce, 0x012e, 0x0005, -+ 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2260, 0x6204, 0x0006, -+ 0x9086, 0x0006, 0x1170, 0x609c, 0xd0ac, 0x0158, 0x080c, 0x58cb, -+ 0x0140, 0x9284, 0xff00, 0x8007, 0x9086, 0x0007, 0x1110, 0x2011, -+ 0x0600, 0x000e, 0x9294, 0xff00, 0x9215, 0x6206, 0x0006, 0x9086, -+ 0x0006, 0x1120, 0x6290, 0x82ff, 0x090c, 0x0d7e, 0x000e, 0x00ce, -+ 0x012e, 0x0005, 0x0126, 0x00c6, 0x2091, 0x8000, 0x6210, 0x2260, -+ 0x6204, 0x0006, 0x9086, 0x0006, 0x1168, 0x609c, 0xd0a4, 0x0150, -+ 0x080c, 0x58c6, 0x1138, 0x9284, 0x00ff, 0x9086, 0x0007, 0x1110, -+ 0x2011, 0x0006, 0x000e, 0x9294, 0x00ff, 0x8007, 0x9215, 0x6206, -+ 0x00ce, 0x012e, 0x0005, 0x0026, 0x9182, 0x00ff, 0x0218, 0x9085, -+ 0x0001, 0x00a0, 0x9190, 0x1000, 0x2204, 0x9065, 0x1170, 0x0016, -+ 0x00d6, 0x080c, 0x0e9d, 0x2d60, 0x00de, 0x001e, 0x0d80, 0x2c00, -+ 0x2012, 0x9006, 0x60a6, 0x080c, 0x5100, 0x9006, 0x002e, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x0026, 0x9182, 0x00ff, 0x0218, 0x9085, -+ 0x0001, 0x0458, 0x00d6, 0x9190, 0x1000, 0x2204, 0x906d, 0x0518, -+ 0x2013, 0x0000, 0x00d6, 0x00c6, 0x2d60, 0x60a4, 0x906d, 0x0110, -+ 0x080c, 0x0ecf, 0x00ce, 0x00de, 0x00d6, 0x00c6, 0x68ac, 0x2060, -+ 0x8cff, 0x0168, 0x600c, 0x0006, 0x6014, 0x2068, 0x080c, 0xa942, -+ 0x0110, 0x080c, 0x0edf, 0x080c, 0x8ed9, 0x00ce, 0x0c88, 0x00ce, -+ 0x00de, 0x080c, 0x0ecf, 0x00de, 0x9006, 0x002e, 0x012e, 0x0005, -+ 0x0016, 0x9182, 0x00ff, 0x0218, 0x9085, 0x0001, 0x0030, 0x9188, -+ 0x1000, 0x2104, 0x9065, 0x0dc0, 0x9006, 0x001e, 0x0005, 0x00d6, -+ 0x0156, 0x0136, 0x0146, 0x9006, 0x600a, 0x600e, 0x6000, 0xc08c, -+ 0x6002, 0x080c, 0x62e4, 0x1520, 0x60a0, 0x9086, 0x007e, 0x0130, -+ 0x2001, 0x1136, 0x2004, 0xd0ac, 0x11d8, 0x0078, 0x7040, 0xd0e4, -+ 0x01b8, 0x00c6, 0x2061, 0x12bc, 0x7048, 0x2062, 0x704c, 0x6006, -+ 0x7050, 0x600a, 0x7054, 0x600e, 0x00ce, 0x703c, 0x2069, 0x0140, -+ 0x9005, 0x1110, 0x2001, 0x0001, 0x6886, 0x2069, 0x1100, 0x68ae, -+ 0x7040, 0x605e, 0x7048, 0x6062, 0x6138, 0x910a, 0x0208, 0x603a, -+ 0x704c, 0x6066, 0x20e1, 0x0000, 0x2099, 0x0276, 0x9c88, 0x000a, -+ 0x20e9, 0x0001, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2099, 0x027a, -+ 0x9c88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x4003, 0x2069, 0x0200, -+ 0x6817, 0x0001, 0x7040, 0x606a, 0x7144, 0x616e, 0x7048, 0x6072, -+ 0x7050, 0x6076, 0x2069, 0x0200, 0x6817, 0x0000, 0x60a0, 0x9086, -+ 0x007e, 0x1110, 0x7144, 0x616e, 0x9182, 0x0211, 0x1218, 0x2009, -+ 0x0008, 0x0400, 0x9182, 0x0259, 0x1218, 0x2009, 0x0007, 0x00d0, -+ 0x9182, 0x02c1, 0x1218, 0x2009, 0x0006, 0x00a0, 0x9182, 0x0349, -+ 0x1218, 0x2009, 0x0005, 0x0070, 0x9182, 0x0421, 0x1218, 0x2009, -+ 0x0004, 0x0040, 0x9182, 0x0581, 0x1218, 0x2009, 0x0003, 0x0010, -+ 0x2009, 0x0002, 0x6192, 0x014e, 0x013e, 0x015e, 0x00de, 0x0005, -+ 0x0016, 0x0026, 0x00e6, 0x2071, 0x0260, 0x7034, 0x6896, 0x703c, -+ 0x689a, 0x7054, 0x689e, 0x6a00, 0x2009, 0x1172, 0x210c, 0xd0bc, -+ 0x0120, 0xd1ec, 0x0110, 0xc2ad, 0x0008, 0xc2ac, 0xd0c4, 0x0120, -+ 0xd1e4, 0x0110, 0xc2bd, 0x0008, 0xc2bc, 0x6a02, 0x00ee, 0x002e, -+ 0x001e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x60a4, 0x906d, -+ 0x01c0, 0x6900, 0x81ff, 0x1540, 0x6a04, 0x9282, 0x0010, 0x1648, -+ 0x9d88, 0x0004, 0x20a9, 0x0010, 0x2104, 0x9086, 0xffff, 0x0128, -+ 0x8108, 0x1f04, 0x56dc, 0x080c, 0x0d7e, 0x260a, 0x8210, 0x6a06, -+ 0x0098, 0x080c, 0x0eb6, 0x01a8, 0x2d00, 0x60a6, 0x6803, 0x0000, -+ 0x9d88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, -+ 0x56f4, 0x6807, 0x0001, 0x6e12, 0x9085, 0x0001, 0x012e, 0x00de, -+ 0x0005, 0x9006, 0x0cd8, 0x0126, 0x2091, 0x8000, 0x00d6, 0x60a4, -+ 0x900d, 0x01a0, 0x2168, 0x6800, 0x9005, 0x1160, 0x080c, 0x5791, -+ 0x1168, 0x200b, 0xffff, 0x6804, 0x908a, 0x0002, 0x0218, 0x8001, -+ 0x6806, 0x0020, 0x080c, 0x0ecf, 0x60a7, 0x0000, 0x00de, 0x012e, -+ 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x758b, 0x012e, 0x0005, -+ 0x901e, 0x0010, 0x2019, 0x0001, 0x900e, 0x0126, 0x2091, 0x8000, -+ 0x604c, 0x2068, 0x6000, 0xd0dc, 0x1170, 0x8dff, 0x01f8, 0x83ff, -+ 0x0120, 0x6878, 0x9606, 0x0158, 0x0030, 0x686c, 0x9406, 0x1118, -+ 0x6870, 0x9506, 0x0120, 0x2d08, 0x6800, 0x2068, 0x0c70, 0x080c, -+ 0x895e, 0x6a00, 0x604c, 0x9d06, 0x1110, 0x624e, 0x0018, 0x9180, -+ 0x0000, 0x2202, 0x82ff, 0x1110, 0x6152, 0x8dff, 0x012e, 0x0005, -+ 0x9016, 0x0489, 0x1110, 0x2011, 0x0001, 0x0005, 0x080c, 0x57d6, -+ 0x0118, 0x080c, 0xa9f4, 0x0010, 0x9085, 0x0001, 0x0005, 0x080c, -+ 0x57d6, 0x0118, 0x080c, 0xa987, 0x0010, 0x9085, 0x0001, 0x0005, -+ 0x080c, 0x57d6, 0x0118, 0x080c, 0xa9d7, 0x0010, 0x9085, 0x0001, -+ 0x0005, 0x080c, 0x57d6, 0x0118, 0x080c, 0xa9a3, 0x0010, 0x9085, -+ 0x0001, 0x0005, 0x080c, 0x57d6, 0x0118, 0x080c, 0xaa10, 0x0010, -+ 0x9085, 0x0001, 0x0005, 0x60a4, 0x900d, 0x1118, 0x9085, 0x0001, -+ 0x0005, 0x00e6, 0x2170, 0x7000, 0x9005, 0x1168, 0x20a9, 0x0010, -+ 0x9e88, 0x0004, 0x2104, 0x9606, 0x0130, 0x8108, 0x1f04, 0x579a, -+ 0x9085, 0x0001, 0x0008, 0x9006, 0x00ee, 0x0005, 0x00d6, 0x0126, -+ 0x2091, 0x8000, 0x60a4, 0x906d, 0x1128, 0x080c, 0x0eb6, 0x01a0, -+ 0x2d00, 0x60a6, 0x6803, 0x0001, 0x6807, 0x0000, 0x9d88, 0x0004, -+ 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x1f04, 0x57ba, 0x9085, -+ 0x0001, 0x012e, 0x00de, 0x0005, 0x9006, 0x0cd8, 0x00d6, 0x0126, -+ 0x2091, 0x8000, 0x60a4, 0x906d, 0x0130, 0x60a7, 0x0000, 0x080c, -+ 0x0ecf, 0x9085, 0x0001, 0x012e, 0x00de, 0x0005, 0x609c, 0xd0a4, -+ 0x0005, 0x00f6, 0x080c, 0x62e4, 0x01b0, 0x71c0, 0x81ff, 0x1198, -+ 0x71d8, 0xd19c, 0x0180, 0x2001, 0x007e, 0x9080, 0x1000, 0x2004, -+ 0x907d, 0x0148, 0x7804, 0x9084, 0x00ff, 0x9086, 0x0006, 0x1118, -+ 0x7800, 0xc0ed, 0x7802, 0x2079, 0x1152, 0x7804, 0xd0a4, 0x01e0, -+ 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, 0x080c, 0x5608, -+ 0x1168, 0x6004, 0x9084, 0xff00, 0x8007, 0x9096, 0x0004, 0x0118, -+ 0x9086, 0x0006, 0x1118, 0x6000, 0xc0ed, 0x6002, 0x001e, 0x8108, -+ 0x1f04, 0x57fd, 0x00ce, 0x015e, 0x080c, 0x588e, 0x0120, 0x2001, -+ 0x12bf, 0x200c, 0x0038, 0x2079, 0x1152, 0x7804, 0xd0a4, 0x0130, -+ 0x2009, 0x07d0, 0x2011, 0x5828, 0x080c, 0x7283, 0x00fe, 0x0005, -+ 0x2011, 0x5828, 0x080c, 0x71fa, 0x080c, 0x588e, 0x01d8, 0x2001, -+ 0x107e, 0x2004, 0x9080, 0x0000, 0x200c, 0xc1ec, 0x2102, 0x080c, -+ 0x58cb, 0x0130, 0x2009, 0x07d0, 0x2011, 0x5828, 0x080c, 0x7283, -+ 0x00e6, 0x2071, 0x1100, 0x9006, 0x7076, 0x707a, 0x080c, 0x2679, -+ 0x00ee, 0x0498, 0x0156, 0x00c6, 0x20a9, 0x007f, 0x900e, 0x0016, -+ 0x080c, 0x5608, 0x1520, 0x6000, 0xd0ec, 0x0508, 0x0046, 0x62a0, -+ 0x9294, 0x00ff, 0x8227, 0x9006, 0x2009, 0x0029, 0x080c, 0xc12f, -+ 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x6004, 0x9084, 0x00ff, 0x9085, -+ 0x0700, 0x6006, 0x2019, 0x0029, 0x080c, 0x76f0, 0x0076, 0x903e, -+ 0x080c, 0x75ee, 0x900e, 0x080c, 0xbec2, 0x007e, 0x004e, 0x001e, -+ 0x8108, 0x1f04, 0x584f, 0x00ce, 0x015e, 0x0005, 0x00c6, 0x6010, -+ 0x2060, 0x6000, 0xc0ec, 0x6002, 0x00ce, 0x0005, 0x7810, 0x2004, -+ 0xd0ac, 0x0005, 0x7810, 0x2004, 0xd0bc, 0x0005, 0x00f6, 0x2001, -+ 0x107e, 0x2004, 0x907d, 0x0110, 0x7800, 0xd0ec, 0x00fe, 0x0005, -+ 0x0126, 0x0026, 0x2091, 0x8000, 0x0006, 0x62a0, 0x9290, 0x1000, -+ 0x2204, 0x9c06, 0x190c, 0x0d7e, 0x000e, 0x6200, 0x9005, 0x0110, -+ 0xc2fd, 0x0008, 0xc2fc, 0x6202, 0x002e, 0x012e, 0x0005, 0x2011, -+ 0x1136, 0x2204, 0xd0cc, 0x0138, 0x2001, 0x12bd, 0x200c, 0x2011, -+ 0x58bc, 0x080c, 0x7283, 0x0005, 0x2011, 0x58bc, 0x080c, 0x71fa, -+ 0x2011, 0x1136, 0x2204, 0xc0cc, 0x2012, 0x0005, 0x2001, 0x1153, -+ 0x2004, 0xd0ac, 0x0005, 0x2001, 0x1153, 0x2004, 0xd0a4, 0x0005, -+ 0x2071, 0x1240, 0x7003, 0x0001, 0x7007, 0x0000, 0x9006, 0x7012, -+ 0x7016, 0x701a, 0x701e, 0x700a, 0x7046, 0x2071, 0x1286, 0x7003, -+ 0x1240, 0x7007, 0x0000, 0x700b, 0x0000, 0x700f, 0x0001, 0x7013, -+ 0x1266, 0x7017, 0x0020, 0x701b, 0x0040, 0x703b, 0x0000, 0x2001, -+ 0x1262, 0x2003, 0x0000, 0x0005, 0x0016, 0x00e6, 0x2071, 0x1263, -+ 0x900e, 0x710a, 0x2001, 0x1153, 0x2004, 0xd0fc, 0x1148, 0x2001, -+ 0x1153, 0x2004, 0x900e, 0xd09c, 0x0108, 0x8108, 0x7102, 0x04d8, -+ 0x2001, 0x1172, 0x200c, 0x9184, 0x000f, 0x0002, 0x58ff, 0x58ff, -+ 0x58ff, 0x58ff, 0x58ff, 0x591e, 0x592c, 0x58ff, 0x592f, 0x58ff, -+ 0x58ff, 0x58ff, 0x58ff, 0x58ff, 0x58ff, 0x58ff, 0x7003, 0x0003, -+ 0x2009, 0x1173, 0x210c, 0x9184, 0xff00, 0x8007, 0x9005, 0x1110, -+ 0x2001, 0x0002, 0x7006, 0x00b8, 0x7003, 0x0005, 0x0c88, 0x7003, -+ 0x0004, 0x0136, 0x0146, 0x0156, 0x20e1, 0x0001, 0x2099, 0x1176, -+ 0x20e9, 0x0001, 0x20a1, 0x1290, 0x20a9, 0x0004, 0x4003, 0x015e, -+ 0x014e, 0x013e, 0x0000, 0x00ee, 0x001e, 0x0005, 0x00e6, 0x2071, -+ 0x0050, 0x684c, 0x9005, 0x1158, 0x00e6, 0x2071, 0x1240, 0x7028, -+ 0xc085, 0x702a, 0x00ee, 0x9085, 0x0001, 0x0804, 0x5998, 0x6844, -+ 0x9005, 0x01d8, 0x900e, 0x0156, 0x20a9, 0x0006, 0x8003, 0x2011, -+ 0x0100, 0x2214, 0x9296, 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5, -+ 0x3e08, 0x1f04, 0x595e, 0x015e, 0x6a60, 0x9200, 0x7002, 0x6864, -+ 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6860, 0x7002, 0x6864, -+ 0x7006, 0x6868, 0x700a, 0x686c, 0x700e, 0x6844, 0x9005, 0x1110, -+ 0x7012, 0x7016, 0x684c, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, -+ 0x7037, 0x0019, 0x702b, 0x0001, 0x00e6, 0x2071, 0x1240, 0x7028, -+ 0xc084, 0x702a, 0x7007, 0x0001, 0x700b, 0x0000, 0x00ee, 0x9006, -+ 0x00ee, 0x0005, 0x6868, 0xd0fc, 0x11d0, 0x00e6, 0x0026, 0x2001, -+ 0x1263, 0x2004, 0x9005, 0x0904, 0x5b7b, 0x687c, 0xd0bc, 0x1904, -+ 0x5b7b, 0x6978, 0x6874, 0x9105, 0x1904, 0x5b7b, 0x2001, 0x1263, -+ 0x2004, 0x0002, 0x5b7b, 0x59dc, 0x5a16, 0x5a16, 0x5efd, 0x0005, -+ 0x6868, 0xd0fc, 0x1500, 0x00e6, 0x0026, 0x2009, 0x1263, 0x210c, -+ 0x81ff, 0x0904, 0x5b7b, 0x687c, 0xd0cc, 0x0904, 0x5b7b, 0x6880, -+ 0x9084, 0x00ff, 0x9086, 0x0001, 0x1904, 0x5b7b, 0x9186, 0x0003, -+ 0x0904, 0x5a16, 0x9186, 0x0004, 0x0904, 0x5efd, 0x684f, 0x8021, -+ 0x6853, 0x0017, 0x0028, 0x0005, 0x684f, 0x8020, 0x6853, 0x0016, -+ 0x2071, 0x1240, 0x701c, 0x9005, 0x1904, 0x5d24, 0x0e04, 0x5d6d, -+ 0x2071, 0x0000, 0x684c, 0x7082, 0x6850, 0x7032, 0x686c, 0x7086, -+ 0x7036, 0x6870, 0x708a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, -+ 0xd084, 0x190c, 0x0fcd, 0x2071, 0x1100, 0x2011, 0x0001, 0x6804, -+ 0x900d, 0x702c, 0x1148, 0x206a, 0x2d00, 0x702e, 0x70bc, 0x9200, -+ 0x70be, 0x002e, 0x00ee, 0x0005, 0x00d6, 0x2168, 0x6904, 0x206a, -+ 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x00de, 0x0c68, 0x684f, 0x0000, -+ 0x00f6, 0x2079, 0x0050, 0x2071, 0x1240, 0x206b, 0x0000, 0x7010, -+ 0x9005, 0x1904, 0x5b0a, 0x782c, 0x908c, 0x0780, 0x190c, 0x5f3b, -+ 0x8004, 0x8004, 0x8004, 0x9084, 0x0003, 0x0002, 0x5a34, 0x5b0a, -+ 0x5a5a, 0x5aa3, 0x080c, 0x0d7e, 0x2071, 0x1100, 0x8d07, 0x8005, -+ 0x8005, 0xc0d5, 0x7822, 0x6804, 0x900d, 0x1170, 0x2071, 0x1317, -+ 0x703c, 0x9005, 0x1328, 0x2001, 0x1264, 0x2004, 0x8005, 0x703e, -+ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, 0x2168, 0x6904, -+ 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, -+ 0x70be, 0x0c20, 0x2071, 0x1100, 0x8d07, 0x8005, 0x8005, 0xc0d5, -+ 0x7822, 0x6804, 0x900d, 0x1588, 0x7824, 0x00e6, 0x2071, 0x0040, -+ 0x712c, 0xd19c, 0x1148, 0x2009, 0x112f, 0x210c, 0x918a, 0x0010, -+ 0x0218, 0x7022, 0x00ee, 0x0060, 0x00ee, 0xc0d4, 0x8006, 0x8006, -+ 0x806f, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70bc, 0x8000, 0x70be, -+ 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd0a4, 0x19e8, 0x2071, -+ 0x1317, 0x703c, 0x9005, 0x1328, 0x2001, 0x1264, 0x2004, 0x8005, -+ 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x9016, 0x702c, 0x2168, -+ 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, 0x70bc, -+ 0x9200, 0x70be, 0x0808, 0x00d6, 0x00e6, 0x7824, 0xc0d4, 0x8006, -+ 0x8006, 0x806f, 0x2071, 0x1100, 0x702c, 0x206a, 0x2d00, 0x702e, -+ 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, -+ 0xd0a4, 0x1d58, 0x00ee, 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, -+ 0xd09c, 0x11b8, 0x00de, 0x8d07, 0x8005, 0x8005, 0xc0d5, 0x7822, -+ 0x6804, 0x900d, 0x1560, 0x2071, 0x1317, 0x703c, 0x9005, 0x1328, -+ 0x2001, 0x1264, 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, -+ 0x0005, 0x00de, 0x2d08, 0x7010, 0x8000, 0x7012, 0x7018, 0x906d, -+ 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, 0x2168, 0x6804, 0x900d, -+ 0x1170, 0x2071, 0x1317, 0x703c, 0x9005, 0x1328, 0x2001, 0x1264, -+ 0x2004, 0x8005, 0x703e, 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2071, -+ 0x1100, 0x9016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, -+ 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x00fe, 0x002e, -+ 0x00ee, 0x0005, 0x2d08, 0x7010, 0x8000, 0x7012, 0x7018, 0x906d, -+ 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, 0x2168, 0x6804, 0x900d, -+ 0x1904, 0x5b63, 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd09c, -+ 0x11b0, 0x701c, 0x906d, 0x0198, 0x7010, 0x8001, 0x7012, 0x1108, -+ 0x701a, 0x2d04, 0x701e, 0x8d07, 0x8005, 0x8005, 0xc0d5, 0x7822, -+ 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd09c, 0x0d50, 0x782c, -+ 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd0a4, 0x01b8, 0x00e6, 0x7824, -+ 0xc0d4, 0x8006, 0x8006, 0x806f, 0x2071, 0x1100, 0x702c, 0x206a, -+ 0x2d00, 0x702e, 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, -+ 0x190c, 0x5f3b, 0xd0a4, 0x1d58, 0x00ee, 0x2071, 0x1317, 0x703c, -+ 0x9005, 0x1328, 0x2001, 0x1264, 0x2004, 0x8005, 0x703e, 0x00fe, -+ 0x002e, 0x00ee, 0x0005, 0x00e6, 0x2071, 0x1100, 0x9016, 0x702c, -+ 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, -+ 0x70bc, 0x9200, 0x70be, 0x00ee, 0x0804, 0x5b1a, 0x6868, 0xd0fc, -+ 0x1500, 0x00e6, 0x0026, 0x684f, 0x0000, 0x00f6, 0x2079, 0x0050, -+ 0x2071, 0x1240, 0x206b, 0x0000, 0x7010, 0x9005, 0x1904, 0x5c9c, -+ 0x782c, 0x908c, 0x0780, 0x190c, 0x5f3b, 0x8004, 0x8004, 0x8004, -+ 0x9084, 0x0003, 0x0002, 0x5b9a, 0x5c9c, 0x5bb6, 0x5c29, 0x080c, -+ 0x0d7e, 0x0005, 0x2071, 0x1100, 0x8d07, 0x8005, 0x8005, 0xc0d5, -+ 0x7822, 0x6804, 0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, 0x0005, -+ 0x9016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, -+ 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x0c70, 0x2071, 0x1100, -+ 0x8d07, 0x8005, 0x8005, 0xc0d5, 0x7822, 0x6804, 0x900d, 0x1904, -+ 0x5c1a, 0x7830, 0x8007, 0x9084, 0x001f, 0x9082, 0x0005, 0x1220, -+ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x7824, 0x00e6, 0x2071, 0x0040, -+ 0x712c, 0xd19c, 0x1148, 0x2009, 0x112f, 0x210c, 0x918a, 0x0010, -+ 0x0218, 0x7022, 0x00ee, 0x0060, 0x00ee, 0xc0d4, 0x8006, 0x8006, -+ 0x806f, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70bc, 0x8000, 0x70be, -+ 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd0a4, 0x19e8, 0x0e04, -+ 0x5c11, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, -+ 0x6836, 0x6833, 0x0013, 0x00de, 0x2001, 0x1251, 0x200c, 0xc184, -+ 0x2102, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, -+ 0x0fcd, 0x2009, 0x1262, 0x200b, 0x0000, 0x00fe, 0x002e, 0x00ee, -+ 0x0005, 0x2001, 0x1251, 0x200c, 0xc185, 0x2102, 0x00fe, 0x002e, -+ 0x00ee, 0x0005, 0x9016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, -+ 0x2d00, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, 0x0804, -+ 0x5bcc, 0x00d6, 0x00e6, 0x7824, 0xc0d4, 0x8006, 0x8006, 0x806f, -+ 0x2071, 0x1100, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70bc, 0x8000, -+ 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd0a4, 0x1d58, -+ 0x00ee, 0x0e04, 0x5c71, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, -+ 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x7044, 0xc084, -+ 0x7046, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, -+ 0x0fcd, 0x2009, 0x1262, 0x200b, 0x0000, 0x782c, 0x9094, 0x0780, -+ 0x190c, 0x5f3b, 0xd09c, 0x1188, 0x00de, 0x8d07, 0x8005, 0x8005, -+ 0xc0d5, 0x7822, 0x6804, 0x900d, 0x11e0, 0x00fe, 0x002e, 0x00ee, -+ 0x0005, 0x7044, 0xc085, 0x7046, 0x0c40, 0x00de, 0x2d08, 0x7010, -+ 0x8000, 0x7012, 0x7018, 0x906d, 0x711a, 0x0110, 0x6902, 0x0008, -+ 0x711e, 0x2168, 0x6804, 0x900d, 0x1120, 0x00fe, 0x002e, 0x00ee, -+ 0x0005, 0x2071, 0x1100, 0x9016, 0x702c, 0x2168, 0x6904, 0x206a, -+ 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, 0x70be, -+ 0x00fe, 0x002e, 0x00ee, 0x0005, 0x2d08, 0x7010, 0x8000, 0x7012, -+ 0x7018, 0x906d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, 0x2168, -+ 0x6804, 0x900d, 0x1904, 0x5d11, 0x782c, 0x9094, 0x0780, 0x190c, -+ 0x5f3b, 0xd09c, 0x11c8, 0x701c, 0x906d, 0x01b0, 0x684c, 0x9005, -+ 0x1198, 0x7010, 0x8001, 0x7012, 0x1108, 0x701a, 0x2d04, 0x701e, -+ 0x8d07, 0x8005, 0x8005, 0xc0d5, 0x7822, 0x782c, 0x9094, 0x0780, -+ 0x190c, 0x5f3b, 0xd09c, 0x0d38, 0x782c, 0x9094, 0x0780, 0x190c, -+ 0x5f3b, 0xd0a4, 0x05d0, 0x00e6, 0x7824, 0xc0d4, 0x8006, 0x8006, -+ 0x806f, 0x2071, 0x1100, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70bc, -+ 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd0a4, -+ 0x1d58, 0x00ee, 0x0e04, 0x5d0a, 0x7838, 0x7938, 0x910e, 0x1de0, -+ 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x7044, -+ 0xc084, 0x7046, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, -+ 0x190c, 0x0fcd, 0x2009, 0x1262, 0x200b, 0x0000, 0x00fe, 0x002e, -+ 0x00ee, 0x0005, 0x7044, 0xc085, 0x7046, 0x00fe, 0x002e, 0x00ee, -+ 0x0005, 0x00e6, 0x2071, 0x1100, 0x9016, 0x702c, 0x2168, 0x6904, -+ 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, 0x70bc, 0x9200, -+ 0x70be, 0x00ee, 0x0804, 0x5cac, 0x2071, 0x1240, 0x206b, 0x0000, -+ 0x2d08, 0x7010, 0x8000, 0x7012, 0x7018, 0x906d, 0x711a, 0x0110, -+ 0x6902, 0x0008, 0x711e, 0x2168, 0x6804, 0x900d, 0x1128, 0x1e04, -+ 0x5d4d, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1100, 0x9016, 0x702c, -+ 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, -+ 0x70bc, 0x9200, 0x70be, 0x0e04, 0x5d39, 0x2071, 0x1240, 0x701c, -+ 0x2068, 0x684c, 0x900d, 0x0d28, 0x2071, 0x0000, 0x7182, 0x6850, -+ 0x7032, 0x686c, 0x7086, 0x7036, 0x6870, 0x708a, 0x2091, 0x4080, -+ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x0fcd, 0x2071, 0x1240, -+ 0x080c, 0x5f27, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1240, 0x206b, -+ 0x0000, 0x2d08, 0x7010, 0x8000, 0x7012, 0x7018, 0x906d, 0x711a, -+ 0x0110, 0x6902, 0x0008, 0x711e, 0x2168, 0x6804, 0x900d, 0x1118, -+ 0x002e, 0x00ee, 0x0005, 0x2071, 0x1100, 0x9016, 0x702c, 0x2168, -+ 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, 0x702e, 0x70bc, -+ 0x9200, 0x70be, 0x002e, 0x00ee, 0x0005, 0x0006, 0x687c, 0x0006, -+ 0x6867, 0x0103, 0x20a9, 0x001c, 0x9d80, 0x001d, 0x20a0, 0x9006, -+ 0x20e9, 0x0001, 0x4004, 0x000e, 0x9084, 0x00ff, 0x687e, 0x000e, -+ 0x687a, 0x6982, 0x0005, 0x2071, 0x1240, 0x7004, 0x0002, 0x5db7, -+ 0x5db8, 0x5efc, 0x5eea, 0x5db5, 0x5efc, 0x080c, 0x0d7e, 0x0005, -+ 0x2001, 0x1263, 0x2004, 0x0002, 0x5dc2, 0x5dc2, 0x5e1a, 0x5e1b, -+ 0x5e85, 0x5e1b, 0x0126, 0x2091, 0x8000, 0x1e0c, 0x5f40, 0x701c, -+ 0x906d, 0x01e0, 0x684c, 0x9005, 0x01d8, 0x0e04, 0x5de6, 0x694c, -+ 0x2071, 0x0000, 0x7182, 0x6850, 0x7032, 0x686c, 0x7086, 0x7036, -+ 0x6870, 0x708a, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, -+ 0x190c, 0x0fcd, 0x2071, 0x1240, 0x080c, 0x5f27, 0x012e, 0x0488, -+ 0x2001, 0x005b, 0x2004, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd09c, -+ 0x2071, 0x1240, 0x1528, 0x2071, 0x1240, 0x700f, 0x0001, 0x6964, -+ 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, -+ 0x8101, 0x0108, 0x710e, 0x8d07, 0x8005, 0x8005, 0xc0d5, 0x00d6, -+ 0x2069, 0x0050, 0x6822, 0x00de, 0x2071, 0x1240, 0x701c, 0x2068, -+ 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0x9005, 0x1108, 0x701a, -+ 0x012e, 0x0005, 0x0005, 0x00d6, 0x2008, 0x2069, 0x1317, 0x683c, -+ 0x9005, 0x0760, 0x0158, 0x9186, 0x0003, 0x0540, 0x2001, 0x1113, -+ 0x2004, 0x2009, 0x13a1, 0x210c, 0x9102, 0x1500, 0x0126, 0x2091, -+ 0x8000, 0x2069, 0x0050, 0x693c, 0x6838, 0x9106, 0x0190, 0x0e04, -+ 0x5e4d, 0x2069, 0x0000, 0x6837, 0x8040, 0x6833, 0x0012, 0x6883, -+ 0x8040, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, -+ 0x0fcd, 0x2069, 0x1317, 0x683f, 0xffff, 0x012e, 0x00de, 0x0126, -+ 0x2091, 0x8000, 0x1e0c, 0x5fb5, 0x701c, 0x906d, 0x0560, 0x2001, -+ 0x005b, 0x2004, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd09c, 0x1518, -+ 0x2071, 0x1240, 0x700f, 0x0001, 0x6964, 0x9184, 0x00ff, 0x9086, -+ 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, 0x8101, 0x0108, 0x710e, -+ 0x8d07, 0x8005, 0x8005, 0xc0d5, 0x00d6, 0x2069, 0x0050, 0x6822, -+ 0x00de, 0x701c, 0x2068, 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, -+ 0x9005, 0x1108, 0x701a, 0x012e, 0x0005, 0x0126, 0x2091, 0x8000, -+ 0x1e0c, 0x5f40, 0x701c, 0x906d, 0x0548, 0x684c, 0x9086, 0x0004, -+ 0x1538, 0x0136, 0x0146, 0x0156, 0x2099, 0x1176, 0x20e1, 0x0001, -+ 0x20a1, 0x1290, 0x20e9, 0x0001, 0x20a9, 0x0004, 0x4003, 0x015e, -+ 0x014e, 0x013e, 0x2071, 0x1286, 0x9d80, 0x001b, 0x700f, 0x0001, -+ 0x7012, 0x7017, 0x0002, 0x7007, 0x0002, 0x700b, 0x0000, 0x2e10, -+ 0x080c, 0x0f22, 0x2071, 0x1240, 0x7007, 0x0003, 0x012e, 0x0005, -+ 0x2001, 0x005b, 0x2004, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd09c, -+ 0x2071, 0x1240, 0x1d98, 0x2071, 0x1240, 0x700f, 0x0001, 0x6964, -+ 0x9184, 0x00ff, 0x9086, 0x0003, 0x1130, 0x810f, 0x918c, 0x00ff, -+ 0x8101, 0x0108, 0x710e, 0x8d07, 0x8005, 0x8005, 0xc0d5, 0x00d6, -+ 0x2069, 0x0050, 0x6822, 0x00de, 0x2071, 0x1240, 0x701c, 0x2068, -+ 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0x9005, 0x1978, 0x701a, -+ 0x012e, 0x0005, 0x2001, 0x1288, 0x2004, 0x908e, 0x0100, 0x1120, -+ 0x7007, 0x0001, 0x04a1, 0x0005, 0x908e, 0x0000, 0x0de0, 0x908e, -+ 0x0200, 0x1dc8, 0x080c, 0x5f3b, 0x0005, 0x684f, 0x0004, 0x206b, -+ 0x0000, 0x2d08, 0x2071, 0x1240, 0x7010, 0x8000, 0x7012, 0x7018, -+ 0x906d, 0x711a, 0x0110, 0x6902, 0x0008, 0x711e, 0x2168, 0x6804, -+ 0x900d, 0x1118, 0x002e, 0x00ee, 0x0005, 0x2071, 0x1100, 0x9016, -+ 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x1dc8, -+ 0x702e, 0x70bc, 0x9200, 0x70be, 0x002e, 0x00ee, 0x0005, 0x0126, -+ 0x2091, 0x8000, 0x701c, 0x906d, 0x0160, 0x7010, 0x8001, 0x7012, -+ 0x2d04, 0x701e, 0x9005, 0x1108, 0x701a, 0x012e, 0x080c, 0x0ecf, -+ 0x0005, 0x012e, 0x0005, 0x2011, 0x8004, 0x080c, 0x3f23, 0x0cf8, -+ 0x00f6, 0x2079, 0x0050, 0x7044, 0xd084, 0x01d8, 0xc084, 0x7046, -+ 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, -+ 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, -+ 0xd084, 0x190c, 0x0fcd, 0x2009, 0x1262, 0x200b, 0x0000, 0x00fe, -+ 0x0005, 0x782c, 0x9094, 0x0780, 0x19b1, 0xd0a4, 0x0dc0, 0x2001, -+ 0x1263, 0x2004, 0x9086, 0x0004, 0x0140, 0x2009, 0x1262, 0x2104, -+ 0x8000, 0x200a, 0x9082, 0x000f, 0x0e50, 0x00e6, 0x2071, 0x1100, -+ 0x7824, 0x00e6, 0x2071, 0x0040, 0x712c, 0xd19c, 0x1148, 0x2009, -+ 0x112f, 0x210c, 0x918a, 0x0010, 0x0218, 0x7022, 0x00ee, 0x0060, -+ 0x00ee, 0xc0d4, 0x8006, 0x8006, 0x806f, 0x702c, 0x206a, 0x2d00, -+ 0x702e, 0x70bc, 0x8000, 0x70be, 0x782c, 0x9094, 0x0780, 0x190c, -+ 0x5f3b, 0xd0a4, 0x19e8, 0x7838, 0x7938, 0x910e, 0x1de0, 0x00d6, -+ 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, 0x2091, 0x4080, -+ 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x0fcd, 0x2009, 0x1262, -+ 0x200b, 0x0000, 0x00ee, 0x00fe, 0x0005, 0x00f6, 0x2079, 0x0050, -+ 0x7044, 0xd084, 0x01b8, 0xc084, 0x7046, 0x7838, 0x7938, 0x910e, -+ 0x1de0, 0x00d6, 0x2069, 0x0000, 0x6836, 0x6833, 0x0013, 0x00de, -+ 0x2091, 0x4080, 0x2001, 0x0089, 0x2004, 0xd084, 0x190c, 0x0fcd, -+ 0x00fe, 0x0005, 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd0a4, -+ 0x0db8, 0x00e6, 0x2071, 0x1100, 0x7824, 0xc0d4, 0x8006, 0x8006, -+ 0x806f, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70bc, 0x8000, 0x70be, -+ 0x782c, 0x9094, 0x0780, 0x190c, 0x5f3b, 0xd0a4, 0x1d68, 0x00d6, -+ 0x2069, 0x0050, 0x693c, 0x2069, 0x1263, 0x6808, 0x690a, 0x2069, -+ 0x1317, 0x9102, 0x1118, 0x683c, 0x9005, 0x1328, 0x2001, 0x1264, -+ 0x200c, 0x810d, 0x693e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x7090, -+ 0x908a, 0x0029, 0x1a0c, 0x0d7e, 0x9082, 0x001d, 0x001b, 0x6027, -+ 0x1e00, 0x0005, 0x60da, 0x6064, 0x6080, 0x60a8, 0x60c9, 0x6109, -+ 0x611b, 0x6080, 0x60f1, 0x601f, 0x604d, 0x601e, 0x0005, 0x00d6, -+ 0x2069, 0x0200, 0x6804, 0x9005, 0x1180, 0x6808, 0x9005, 0x1518, -+ 0x7093, 0x0028, 0x2069, 0x12c9, 0x2d04, 0x7002, 0x080c, 0x6404, -+ 0x6028, 0x9085, 0x0600, 0x602a, 0x00b0, 0x7093, 0x0028, 0x2069, -+ 0x12c9, 0x2d04, 0x7002, 0x6028, 0x9085, 0x0600, 0x602a, 0x00e6, -+ 0x0036, 0x0046, 0x0056, 0x2071, 0x1347, 0x080c, 0x1577, 0x005e, -+ 0x004e, 0x003e, 0x00ee, 0x00de, 0x0005, 0x00d6, 0x2069, 0x0200, -+ 0x6804, 0x9005, 0x1178, 0x6808, 0x9005, 0x1160, 0x7093, 0x0028, -+ 0x2069, 0x12c9, 0x2d04, 0x7002, 0x080c, 0x6492, 0x6028, 0x9085, -+ 0x0600, 0x602a, 0x00de, 0x0005, 0x0006, 0x2001, 0x0090, 0x080c, -+ 0x2401, 0x000e, 0x6124, 0xd1e4, 0x1190, 0x080c, 0x618c, 0xd1d4, -+ 0x1160, 0xd1dc, 0x1138, 0xd1cc, 0x0150, 0x7093, 0x0020, 0x080c, -+ 0x618c, 0x0028, 0x7093, 0x001d, 0x0010, 0x7093, 0x001f, 0x0005, -+ 0x2001, 0x0088, 0x080c, 0x2401, 0x6124, 0xd1cc, 0x11d8, 0xd1dc, -+ 0x11b0, 0xd1e4, 0x1188, 0x9184, 0x1e00, 0x11c8, 0x60e3, 0x0001, -+ 0x600c, 0xc0b4, 0x600e, 0x080c, 0x6314, 0x2001, 0x0080, 0x080c, -+ 0x2401, 0x7093, 0x0028, 0x0058, 0x7093, 0x001e, 0x0040, 0x7093, -+ 0x001d, 0x0028, 0x7093, 0x0020, 0x0010, 0x7093, 0x001f, 0x0005, -+ 0x60e3, 0x0001, 0x600c, 0xc0b4, 0x600e, 0x080c, 0x6314, 0x2001, -+ 0x0080, 0x080c, 0x2401, 0x6124, 0xd1d4, 0x1180, 0xd1dc, 0x1158, -+ 0xd1e4, 0x1130, 0x9184, 0x1e00, 0x1158, 0x7093, 0x0028, 0x0040, -+ 0x7093, 0x001e, 0x0028, 0x7093, 0x001d, 0x0010, 0x7093, 0x001f, -+ 0x0005, 0x2001, 0x00a0, 0x080c, 0x2401, 0x6124, 0xd1dc, 0x1138, -+ 0xd1e4, 0x0138, 0x080c, 0x15a1, 0x7093, 0x001e, 0x0010, 0x7093, -+ 0x001d, 0x0005, 0x080c, 0x6205, 0x6124, 0xd1dc, 0x1188, 0x080c, -+ 0x618c, 0x0016, 0x080c, 0x15a1, 0x001e, 0xd1d4, 0x1128, 0xd1e4, -+ 0x0138, 0x7093, 0x001e, 0x0020, 0x7093, 0x001f, 0x080c, 0x618c, -+ 0x0005, 0x0006, 0x2001, 0x00a0, 0x080c, 0x2401, 0x000e, 0x6124, -+ 0xd1d4, 0x1160, 0xd1cc, 0x1150, 0xd1dc, 0x1128, 0xd1e4, 0x0140, -+ 0x7093, 0x001e, 0x0028, 0x7093, 0x001d, 0x0010, 0x7093, 0x0021, -+ 0x0005, 0x080c, 0x6205, 0x6124, 0xd1d4, 0x1150, 0xd1dc, 0x1128, -+ 0xd1e4, 0x0140, 0x7093, 0x001e, 0x0028, 0x7093, 0x001d, 0x0010, -+ 0x7093, 0x001f, 0x0005, 0x0006, 0x2001, 0x0090, 0x080c, 0x2401, -+ 0x000e, 0x6124, 0xd1d4, 0x1178, 0xd1cc, 0x1150, 0xd1dc, 0x1128, -+ 0xd1e4, 0x0158, 0x7093, 0x001e, 0x0040, 0x7093, 0x001d, 0x0028, -+ 0x7093, 0x0020, 0x0010, 0x7093, 0x001f, 0x0005, 0x0016, 0x00c6, -+ 0x00d6, 0x00e6, 0x0126, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, -+ 0x1100, 0x2091, 0x8000, 0x080c, 0x62e4, 0x11f8, 0x2001, 0x110c, -+ 0x200c, 0xd1b4, 0x01d0, 0xc1b4, 0x2102, 0x6027, 0x0200, 0x080c, -+ 0x2340, 0x6024, 0xd0cc, 0x0168, 0x2001, 0x00a0, 0x080c, 0x2401, -+ 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, 0x0001, -+ 0x0428, 0x6028, 0xc0cd, 0x602a, 0x0408, 0x080c, 0x6300, 0x0150, -+ 0x080c, 0x62f6, 0x1138, 0x2001, 0x0001, 0x080c, 0x1f11, 0x080c, -+ 0x62be, 0x00a0, 0x080c, 0x6202, 0x0178, 0x2001, 0x0001, 0x080c, -+ 0x1f11, 0x7090, 0x9086, 0x001e, 0x0120, 0x7090, 0x9086, 0x0022, -+ 0x1118, 0x7093, 0x0025, 0x0010, 0x7093, 0x0021, 0x012e, 0x00ee, -+ 0x00de, 0x00ce, 0x001e, 0x0005, 0x0026, 0x2011, 0x619d, 0x080c, -+ 0x72bf, 0x002e, 0x0016, 0x0026, 0x2009, 0x0064, 0x2011, 0x619d, -+ 0x080c, 0x72b6, 0x002e, 0x001e, 0x0005, 0x00e6, 0x00f6, 0x0016, -+ 0x080c, 0x85a2, 0x2071, 0x1100, 0x080c, 0x6136, 0x001e, 0x00fe, -+ 0x00ee, 0x0005, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, -+ 0x00f6, 0x0126, 0x080c, 0x85a2, 0x2061, 0x0100, 0x2069, 0x0140, -+ 0x2071, 0x1100, 0x2091, 0x8000, 0x6028, 0xc09c, 0x602a, 0x2011, -+ 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, 0x080c, -+ 0x87a2, 0x080c, 0x7271, 0x0036, 0x901e, 0x080c, 0x8847, 0x003e, -+ 0x60e3, 0x0000, 0x080c, 0xc44e, 0x080c, 0xc469, 0x2009, 0x0004, -+ 0x080c, 0x2355, 0x080c, 0x2261, 0x2001, 0x1100, 0x2003, 0x0004, -+ 0x6027, 0x0008, 0x080c, 0x0b68, 0x2001, 0x0001, 0x080c, 0x1f11, -+ 0x012e, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, -+ 0x0005, 0x0026, 0x00e6, 0x2011, 0x61aa, 0x2071, 0x1317, 0x701c, -+ 0x9206, 0x1118, 0x7018, 0x9005, 0x0110, 0x9085, 0x0001, 0x00ee, -+ 0x002e, 0x0005, 0x6020, 0xd09c, 0x0005, 0x6800, 0x9084, 0xfffe, -+ 0x9086, 0x00c0, 0x0170, 0x2001, 0x00c0, 0x080c, 0x2401, 0x0156, -+ 0x20a9, 0x002d, 0x1d04, 0x6212, 0x2091, 0x6000, 0x1f04, 0x6212, -+ 0x015e, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2069, -+ 0x0140, 0x2071, 0x1100, 0x2001, 0x12a8, 0x200c, 0x9186, 0x0000, -+ 0x0158, 0x9186, 0x0001, 0x0158, 0x9186, 0x0002, 0x0158, 0x9186, -+ 0x0003, 0x0158, 0x0804, 0x62ac, 0x7093, 0x0022, 0x0040, 0x7093, -+ 0x0021, 0x0028, 0x7093, 0x0023, 0x0010, 0x7093, 0x0024, 0x60e3, -+ 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, 0x1fb8, 0x0026, -+ 0x2011, 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, -+ 0x080c, 0x87a2, 0x0036, 0x901e, 0x080c, 0x8847, 0x003e, 0x002e, -+ 0x7000, 0x908e, 0x0004, 0x0118, 0x602b, 0x0028, 0x0010, 0x602b, -+ 0x0020, 0x0156, 0x0126, 0x2091, 0x8000, 0x20a9, 0x0005, 0x6024, -+ 0xd0ac, 0x0120, 0x012e, 0x015e, 0x0804, 0x62ba, 0x6800, 0x9084, -+ 0x00a1, 0xc0bd, 0x6802, 0x080c, 0x2340, 0x6904, 0xd1d4, 0x1140, -+ 0x2001, 0x0100, 0x080c, 0x2401, 0x1f04, 0x6267, 0x080c, 0x633e, -+ 0x012e, 0x015e, 0x080c, 0x62f6, 0x01a8, 0x6044, 0x9005, 0x0168, -+ 0x6050, 0x0006, 0x9085, 0x0020, 0x6052, 0x080c, 0x633e, 0x9006, -+ 0x8001, 0x1df0, 0x000e, 0x6052, 0x0028, 0x6804, 0xd0d4, 0x1110, -+ 0x080c, 0x633e, 0x0016, 0x0026, 0x7000, 0x908e, 0x0004, 0x0130, -+ 0x2009, 0x00c8, 0x2011, 0x61aa, 0x080c, 0x7283, 0x002e, 0x001e, -+ 0x2001, 0x12a8, 0x2003, 0x0004, 0x080c, 0x6007, 0x080c, 0x62f6, -+ 0x0148, 0x6804, 0xd0d4, 0x1130, 0xd0dc, 0x1100, 0x2001, 0x12a8, -+ 0x2003, 0x0000, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, -+ 0x00e6, 0x2061, 0x0100, 0x2069, 0x0140, 0x2071, 0x1100, 0x2001, -+ 0x12a7, 0x2003, 0x0000, 0x2001, 0x1298, 0x2003, 0x0000, 0x9006, -+ 0x7092, 0x60e2, 0x6886, 0x080c, 0x1fb8, 0x9006, 0x080c, 0x2401, -+ 0x6043, 0x0090, 0x6043, 0x0010, 0x6027, 0xffff, 0x602b, 0x182f, -+ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0006, 0x2001, 0x12a7, 0x2004, -+ 0x9086, 0xaaaa, 0x000e, 0x0005, 0x0006, 0x2001, 0x1172, 0x2004, -+ 0x9084, 0x0030, 0x9086, 0x0000, 0x000e, 0x0005, 0x0006, 0x2001, -+ 0x1172, 0x2004, 0x9084, 0x0030, 0x9086, 0x0030, 0x000e, 0x0005, -+ 0x0006, 0x2001, 0x1172, 0x2004, 0x9084, 0x0030, 0x9086, 0x0010, -+ 0x000e, 0x0005, 0x0006, 0x2001, 0x1172, 0x2004, 0x9084, 0x0030, -+ 0x9086, 0x0020, 0x000e, 0x0005, 0x0036, 0x0016, 0x2001, 0x110c, -+ 0x2004, 0x908c, 0x0013, 0x0190, 0x9084, 0x0011, 0x0120, 0x080c, -+ 0x1fd8, 0x900e, 0x0028, 0x080c, 0x58c6, 0x1dc8, 0x2009, 0x0002, -+ 0x2019, 0x0028, 0x080c, 0x2831, 0x9006, 0x0019, 0x001e, 0x003e, -+ 0x0005, 0x00e6, 0x2071, 0x110c, 0x2e04, 0x0118, 0x9085, 0x0010, -+ 0x0010, 0x9084, 0xffef, 0x2072, 0x00ee, 0x0005, 0x6050, 0x0006, -+ 0x60ec, 0x0006, 0x600c, 0x0006, 0x6004, 0x0006, 0x6028, 0x0006, -+ 0x0016, 0x6138, 0x6050, 0x9084, 0xfbff, 0x9085, 0x2000, 0x6052, -+ 0x613a, 0x20a9, 0x0012, 0x1d04, 0x6353, 0x2091, 0x6000, 0x1f04, -+ 0x6353, 0x602f, 0x0100, 0x602f, 0x0000, 0x6050, 0x9085, 0x0400, -+ 0x9084, 0xdfff, 0x6052, 0x613a, 0x001e, 0x602f, 0x0040, 0x602f, -+ 0x0000, 0x000e, 0x602a, 0x000e, 0x6006, 0x000e, 0x600e, 0x000e, -+ 0x60ee, 0x60e3, 0x0000, 0x6887, 0x0001, 0x2001, 0x0001, 0x080c, -+ 0x1fb8, 0x2001, 0x00a0, 0x080c, 0x2401, 0x000e, 0x6052, 0x0005, -+ 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, 0x00e6, 0x2061, -+ 0x0100, 0x2069, 0x0140, 0x2071, 0x1100, 0x6020, 0x9084, 0x0080, -+ 0x0138, 0x2001, 0x110c, 0x200c, 0xc1c5, 0x2102, 0x0804, 0x63fc, -+ 0x2001, 0x110c, 0x200c, 0xc1c4, 0x2102, 0x6028, 0x9084, 0xe1ff, -+ 0x602a, 0x6027, 0x0200, 0x2001, 0x0090, 0x080c, 0x2401, 0x20a9, -+ 0x0366, 0x6024, 0xd0cc, 0x1510, 0x1d04, 0x63a9, 0x2091, 0x6000, -+ 0x1f04, 0x63a9, 0x2011, 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, -+ 0x080c, 0x88ec, 0x080c, 0x87a2, 0x901e, 0x080c, 0x8847, 0x2001, -+ 0x00a0, 0x080c, 0x2401, 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, -+ 0x1100, 0x2003, 0x0001, 0x9085, 0x0001, 0x0470, 0x86ff, 0x1110, -+ 0x080c, 0x15a1, 0x60e3, 0x0000, 0x2001, 0x1298, 0x2004, 0x080c, -+ 0x1fb8, 0x60e2, 0x2001, 0x0080, 0x080c, 0x2401, 0x20a9, 0x0366, -+ 0x6027, 0x1e00, 0x2009, 0x1e00, 0x080c, 0x2340, 0x6024, 0x910c, -+ 0x0138, 0x1d04, 0x63e0, 0x2091, 0x6000, 0x1f04, 0x63e0, 0x0810, -+ 0x6028, 0x9085, 0x1e00, 0x602a, 0x70ac, 0x9005, 0x1118, 0x6887, -+ 0x0001, 0x0008, 0x6886, 0x9006, 0x00ee, 0x00de, 0x00ce, 0x003e, -+ 0x002e, 0x001e, 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, -+ 0x00c6, 0x00d6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1100, 0x2069, -+ 0x0140, 0x6020, 0x9084, 0x00c0, 0x0120, 0x6884, 0x9005, 0x1904, -+ 0x6458, 0x2001, 0x0088, 0x080c, 0x2401, 0x9006, 0x60e2, 0x6886, -+ 0x080c, 0x1fb8, 0x2069, 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, -+ 0x9005, 0x01c0, 0x6028, 0x9084, 0xfbff, 0x602a, 0x6027, 0x0400, -+ 0x2069, 0x12c9, 0x7000, 0x206a, 0x7093, 0x0026, 0x7003, 0x0001, -+ 0x20a9, 0x0002, 0x1d04, 0x643a, 0x2091, 0x6000, 0x1f04, 0x643a, -+ 0x0804, 0x648a, 0x2069, 0x0140, 0x20a9, 0x0384, 0x6027, 0x1e00, -+ 0x2009, 0x1e00, 0x080c, 0x2340, 0x6024, 0x910c, 0x0528, 0x9084, -+ 0x1a00, 0x1510, 0x1d04, 0x6446, 0x2091, 0x6000, 0x1f04, 0x6446, -+ 0x2011, 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, 0x88ec, -+ 0x080c, 0x87a2, 0x901e, 0x080c, 0x8847, 0x2001, 0x00a0, 0x080c, -+ 0x2401, 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, -+ 0x0001, 0x9085, 0x0001, 0x00b0, 0x2001, 0x0080, 0x080c, 0x2401, -+ 0x2069, 0x0140, 0x60e3, 0x0000, 0x70ac, 0x9005, 0x1118, 0x6887, -+ 0x0001, 0x0008, 0x6886, 0x2001, 0x1298, 0x2004, 0x080c, 0x1fb8, -+ 0x60e2, 0x9006, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, -+ 0x015e, 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x00c6, 0x00d6, -+ 0x00e6, 0x2061, 0x0100, 0x2071, 0x1100, 0x6020, 0x9084, 0x00c0, -+ 0x01e8, 0x2011, 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, -+ 0x88ec, 0x080c, 0x87a2, 0x901e, 0x080c, 0x8847, 0x2069, 0x0140, -+ 0x2001, 0x00a0, 0x080c, 0x2401, 0x2001, 0x12a8, 0x2003, 0x0001, -+ 0x2001, 0x1100, 0x2003, 0x0001, 0x0804, 0x6529, 0x2001, 0x110c, -+ 0x200c, 0xd1b4, 0x1160, 0xc1b5, 0x2102, 0x080c, 0x6192, 0x2069, -+ 0x0140, 0x2001, 0x0080, 0x080c, 0x2401, 0x60e3, 0x0000, 0x2069, -+ 0x0200, 0x6804, 0x9005, 0x1118, 0x6808, 0x9005, 0x0180, 0x6028, -+ 0x9084, 0xfdff, 0x602a, 0x6027, 0x0200, 0x2069, 0x12c9, 0x7000, -+ 0x206a, 0x7093, 0x0027, 0x7003, 0x0001, 0x0804, 0x6529, 0x6027, -+ 0x1e00, 0x2009, 0x1e00, 0x080c, 0x2340, 0x6024, 0x910c, 0x01c8, -+ 0x9084, 0x1c00, 0x11b0, 0x1d04, 0x64e7, 0x0006, 0x0016, 0x00c6, -+ 0x00d6, 0x00e6, 0x080c, 0x715a, 0x00ee, 0x00de, 0x00ce, 0x001e, -+ 0x000e, 0x00e6, 0x2071, 0x1317, 0x7018, 0x00ee, 0x9005, 0x19f8, -+ 0x0500, 0x0026, 0x2011, 0x61aa, 0x080c, 0x71fa, 0x2011, 0x619d, -+ 0x080c, 0x72bf, 0x002e, 0x2069, 0x0140, 0x60e3, 0x0000, 0x70ac, -+ 0x9005, 0x1118, 0x6887, 0x0001, 0x0008, 0x6886, 0x2001, 0x1298, -+ 0x2004, 0x080c, 0x1fb8, 0x60e2, 0x2001, 0x110c, 0x200c, 0xc1b4, -+ 0x2102, 0x00ee, 0x00de, 0x00ce, 0x003e, 0x002e, 0x001e, 0x015e, -+ 0x0005, 0x0156, 0x0016, 0x0026, 0x0036, 0x0046, 0x00c6, 0x00e6, -+ 0x2061, 0x0100, 0x2071, 0x1100, 0x7130, 0xd184, 0x1170, 0x080c, -+ 0x2987, 0x0138, 0xc18d, 0x7132, 0x2011, 0x1153, 0x2214, 0xd2ac, -+ 0x1120, 0x7030, 0xd08c, 0x0904, 0x658f, 0x2011, 0x1153, 0x220c, -+ 0xd1a4, 0x0528, 0x0016, 0x2019, 0x000e, 0x080c, 0xc0b9, 0x0156, -+ 0x20a9, 0x007f, 0x900e, 0x9186, 0x007e, 0x01a0, 0x9186, 0x0080, -+ 0x0188, 0x080c, 0x5608, 0x1170, 0x8127, 0x9006, 0x0016, 0x2009, -+ 0x000e, 0x080c, 0xc12f, 0x2009, 0x0001, 0x2011, 0x0100, 0x080c, -+ 0x73af, 0x001e, 0x8108, 0x1f04, 0x655b, 0x015e, 0x001e, 0xd1ac, -+ 0x1148, 0x0016, 0x2009, 0x0002, 0x2019, 0x0004, 0x080c, 0x2831, -+ 0x001e, 0x0068, 0x0156, 0x20a9, 0x007f, 0x900e, 0x080c, 0x5608, -+ 0x1110, 0x080c, 0x5100, 0x8108, 0x1f04, 0x6586, 0x015e, 0x080c, -+ 0x15a1, 0x2011, 0x0003, 0x080c, 0x88e2, 0x2011, 0x0002, 0x080c, -+ 0x88ec, 0x080c, 0x87a2, 0x0036, 0x901e, 0x080c, 0x8847, 0x003e, -+ 0x60e3, 0x0000, 0x2001, 0x1100, 0x2003, 0x0001, 0x080c, 0x621a, -+ 0x00ee, 0x00ce, 0x004e, 0x003e, 0x002e, 0x001e, 0x015e, 0x0005, -+ 0x2071, 0x120c, 0x7003, 0x0000, 0x7007, 0x0000, 0x708f, 0x0000, -+ 0x7093, 0x0001, 0x70c7, 0x0000, 0x0005, 0x00e6, 0x2071, 0x0040, -+ 0x6848, 0x9005, 0x1120, 0x9085, 0x0001, 0x0804, 0x660e, 0x6840, -+ 0x9005, 0x01d8, 0x900e, 0x0156, 0x20a9, 0x0006, 0x8003, 0x2011, -+ 0x0100, 0x2214, 0x9296, 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5, -+ 0x3e08, 0x1f04, 0x65ce, 0x015e, 0x6a50, 0x9200, 0x7002, 0x6854, -+ 0x9101, 0x7006, 0x9006, 0x7012, 0x7016, 0x6850, 0x7002, 0x6854, -+ 0x7006, 0x6858, 0x700a, 0x685c, 0x700e, 0x6840, 0x9005, 0x1110, -+ 0x7012, 0x7016, 0x6848, 0x701a, 0x701c, 0x9085, 0x0040, 0x701e, -+ 0x2001, 0x0019, 0x7036, 0x702b, 0x0001, 0x2001, 0x0004, 0x200c, -+ 0x918c, 0xfff7, 0x918d, 0x8000, 0x2102, 0x00d6, 0x2069, 0x120c, -+ 0x6807, 0x0001, 0x00de, 0x080c, 0x6b26, 0x9006, 0x00ee, 0x0005, -+ 0x2079, 0x0040, 0x2071, 0x120c, 0x7004, 0x0002, 0x6620, 0x6621, -+ 0x6bb3, 0x66b3, 0x67a9, 0x661e, 0x661e, 0x67d2, 0x080c, 0x0d7e, -+ 0x0005, 0x2079, 0x0040, 0x782c, 0x908c, 0x0780, 0x190c, 0x6bb4, -+ 0xd0a4, 0x0508, 0x7824, 0xc0d4, 0x8006, 0x8006, 0x806f, 0x9006, -+ 0x6802, 0x6806, 0x6864, 0x9084, 0x00ff, 0x908a, 0x0040, 0x12c0, -+ 0x04d3, 0x2001, 0x1100, 0x200c, 0x9186, 0x0003, 0x1160, 0x7104, -+ 0x9186, 0x0004, 0x0140, 0x9186, 0x0007, 0x0128, 0x9186, 0x0003, -+ 0x19d0, 0x080c, 0x66b3, 0x782c, 0xd09c, 0x090c, 0x6b26, 0x0005, -+ 0x9082, 0x005a, 0x1218, 0x2100, 0x0023, 0x0c18, 0x080c, 0x66ec, -+ 0x0c90, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, -+ 0x66ec, 0x670e, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, -+ 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, -+ 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66f8, 0x66ec, 0x688e, -+ 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66f8, 0x68cf, 0x6910, -+ 0x6957, 0x696b, 0x66ec, 0x66ec, 0x670e, 0x66f8, 0x66ec, 0x66ec, -+ 0x6782, 0x6a16, 0x6a31, 0x66ec, 0x670e, 0x66ec, 0x66ec, 0x66ec, -+ 0x66ec, 0x6778, 0x6a31, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, -+ 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x6722, 0x66ec, 0x66ec, 0x66ec, -+ 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x6b59, 0x66ec, -+ 0x66ec, 0x66ec, 0x66ec, 0x66ec, 0x6736, 0x66ec, 0x66ec, 0x66ec, -+ 0x66ec, 0x66ec, 0x66ec, 0x2079, 0x0040, 0x7004, 0x9086, 0x0003, -+ 0x11b0, 0x782c, 0x080c, 0x6b52, 0xd0a4, 0x0188, 0x7824, 0xc0d4, -+ 0x8006, 0x8006, 0x806f, 0x9006, 0x6802, 0x6806, 0x6864, 0x9084, -+ 0x00ff, 0x908a, 0x001a, 0x1210, 0x002b, 0x0c38, 0x00e9, 0x080c, -+ 0x6b26, 0x0005, 0x66ec, 0x66f8, 0x687a, 0x66ec, 0x66f8, 0x66ec, -+ 0x66f8, 0x66f8, 0x66ec, 0x66f8, 0x687a, 0x66f8, 0x66f8, 0x66f8, -+ 0x66f8, 0x66f8, 0x66ec, 0x66f8, 0x687a, 0x66ec, 0x66ec, 0x66f8, -+ 0x66ec, 0x66ec, 0x66ec, 0x66f8, 0x00e6, 0x2071, 0x120c, 0x2009, -+ 0x0400, 0x0071, 0x00ee, 0x0005, 0x2009, 0x1000, 0x0049, 0x0005, -+ 0x2009, 0x2000, 0x0029, 0x0005, 0x2009, 0x0800, 0x0009, 0x0005, -+ 0x7007, 0x0001, 0x6868, 0x9084, 0x00ff, 0x9105, 0x686a, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x0005, 0x6864, 0x8007, -+ 0x9084, 0x00ff, 0x0d08, 0x8001, 0x1120, 0x7007, 0x0001, 0x0804, -+ 0x683b, 0x7007, 0x0003, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, -+ 0x683b, 0x0005, 0x6864, 0x8007, 0x9084, 0x00ff, 0x0968, 0x8001, -+ 0x1120, 0x7007, 0x0001, 0x0804, 0x6853, 0x7007, 0x0003, 0x7012, -+ 0x2d00, 0x7016, 0x701a, 0x704b, 0x6853, 0x0005, 0x6864, 0x8007, -+ 0x9084, 0x00ff, 0x9086, 0x0001, 0x1904, 0x66f4, 0x7007, 0x0001, -+ 0x2009, 0x1133, 0x210c, 0x81ff, 0x11a8, 0x6868, 0x9084, 0x00ff, -+ 0x686a, 0x6883, 0x0000, 0x080c, 0x52f4, 0x1108, 0x0005, 0x0126, -+ 0x2091, 0x8000, 0x6867, 0x0139, 0x687a, 0x6982, 0x080c, 0x5b76, -+ 0x012e, 0x0ca0, 0x6994, 0x9186, 0x0071, 0x0d38, 0x9186, 0x0064, -+ 0x0d20, 0x9186, 0x007c, 0x0d08, 0x9186, 0x0028, 0x09f0, 0x9186, -+ 0x0038, 0x09d8, 0x9186, 0x0078, 0x09c0, 0x9186, 0x005f, 0x09a8, -+ 0x6897, 0x4005, 0x689b, 0x0001, 0x2001, 0x0030, 0x900e, 0x08b8, -+ 0x687c, 0x9084, 0x00c0, 0x9086, 0x00c0, 0x1120, 0x7007, 0x0001, -+ 0x0804, 0x6a48, 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0x20e1, -+ 0x0001, 0x20e9, 0x0001, 0x9080, 0x0030, 0x2098, 0x20a1, 0x1239, -+ 0x4003, 0x6888, 0x7012, 0x9082, 0x0401, 0x1a04, 0x66fc, 0x6ab4, -+ 0x928a, 0x0002, 0x1a04, 0x66fc, 0x82ff, 0x1138, 0x68b8, 0x69bc, -+ 0x9105, 0x0118, 0x2001, 0x680e, 0x0018, 0x9280, 0x6804, 0x2005, -+ 0x70ce, 0x7010, 0x9015, 0x0904, 0x67f0, 0x080c, 0x0e9d, 0x1118, -+ 0x7007, 0x0004, 0x0005, 0x2d00, 0x7022, 0x70cc, 0x2060, 0xe000, -+ 0x6866, 0xe004, 0x9d00, 0x709e, 0x709b, 0x0001, 0xe008, 0x920a, -+ 0x1210, 0x900e, 0x2200, 0x7112, 0xe20c, 0x8003, 0x800b, 0x9296, -+ 0x0004, 0x0108, 0x9108, 0x71a2, 0x810b, 0x71a6, 0x9e90, 0x0023, -+ 0x080c, 0x0f22, 0x7094, 0x908e, 0x0100, 0x0170, 0x9086, 0x0200, -+ 0x0118, 0x7007, 0x0007, 0x0005, 0x7020, 0x2068, 0x080c, 0x0ecf, -+ 0x7014, 0x2068, 0x0804, 0x66fc, 0x7020, 0x2068, 0x7018, 0x6802, -+ 0x6807, 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a, 0x0804, 0x67a9, -+ 0x7014, 0x2068, 0x7007, 0x0001, 0x68b4, 0x9005, 0x1128, 0x68b8, -+ 0x69bc, 0x9105, 0x0108, 0x00b1, 0x6864, 0x9084, 0x00ff, 0x9086, -+ 0x001e, 0x0904, 0x6a48, 0x04b8, 0x6806, 0x680a, 0x0002, 0x001d, -+ 0x0007, 0x0004, 0x000a, 0x001b, 0x0005, 0x0006, 0x000a, 0x001d, -+ 0x0005, 0x0004, 0x00f6, 0x00e6, 0x00c6, 0x0076, 0x0066, 0x6fb8, -+ 0x6ebc, 0x6804, 0x2060, 0x9cf0, 0x002d, 0x9cf8, 0x0033, 0x2009, -+ 0x0005, 0x700c, 0x7816, 0x7008, 0x7812, 0x7004, 0x7806, 0x7000, -+ 0x7802, 0x7e0e, 0x7f0a, 0x8109, 0x0128, 0x9ef2, 0x0004, 0x9ffa, -+ 0x0006, 0x0c78, 0x6004, 0x9065, 0x1d30, 0x006e, 0x007e, 0x00ce, -+ 0x00ee, 0x00fe, 0x0005, 0x2009, 0x1133, 0x210c, 0x81ff, 0x1178, -+ 0x080c, 0x5151, 0x1108, 0x0005, 0x080c, 0x5d95, 0x0126, 0x2091, -+ 0x8000, 0x080c, 0xac01, 0x080c, 0x5b76, 0x012e, 0x0ca0, 0x2001, -+ 0x0028, 0x900e, 0x0c88, 0x2009, 0x1133, 0x210c, 0x81ff, 0x11d8, -+ 0x6888, 0x9005, 0x01e0, 0x6883, 0x0000, 0x687c, 0xd0f4, 0x0120, -+ 0x080c, 0x5250, 0x1138, 0x0005, 0x9006, 0x687a, 0x080c, 0x51e5, -+ 0x1108, 0x0005, 0x0126, 0x2091, 0x8000, 0x687a, 0x6982, 0x080c, -+ 0x5b76, 0x012e, 0x0cb0, 0x2001, 0x0028, 0x900e, 0x0c98, 0x2001, -+ 0x0000, 0x0c80, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, -+ 0x7010, 0x8001, 0x7012, 0x0118, 0x7007, 0x0003, 0x0030, 0x7014, -+ 0x2068, 0x7007, 0x0001, 0x7048, 0x080f, 0x0005, 0x7007, 0x0001, -+ 0x6974, 0x810f, 0x918c, 0x00ff, 0x6878, 0x9084, 0x00ff, 0x20a9, -+ 0x0001, 0x9096, 0x0001, 0x01a8, 0x900e, 0x20a9, 0x00ff, 0x9096, -+ 0x0002, 0x0178, 0x9005, 0x11f0, 0x6974, 0x810f, 0x918c, 0x00ff, -+ 0x080c, 0x5608, 0x11b8, 0x0066, 0x6e80, 0x080c, 0x5703, 0x006e, -+ 0x0088, 0x0046, 0x2011, 0x110c, 0x2224, 0xc484, 0x2412, 0x004e, -+ 0x00c6, 0x080c, 0x5608, 0x1110, 0x080c, 0x57c6, 0x8108, 0x1f04, -+ 0x68b9, 0x00ce, 0x687c, 0xd084, 0x1118, 0x080c, 0x0ecf, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x0005, 0x0126, -+ 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x58cb, 0x0580, 0x2061, -+ 0x1354, 0x6100, 0xd184, 0x0178, 0x6888, 0x9084, 0x00ff, 0x1550, -+ 0x6000, 0xd084, 0x0520, 0x6004, 0x9005, 0x1538, 0x6003, 0x0000, -+ 0x600b, 0x0000, 0x00c8, 0x2011, 0x0001, 0x6890, 0x9005, 0x1110, -+ 0x2001, 0x001e, 0x8000, 0x6016, 0x6888, 0x9084, 0x00ff, 0x0178, -+ 0x6006, 0x6888, 0x8007, 0x9084, 0x00ff, 0x0148, 0x600a, 0x6888, -+ 0x8000, 0x1108, 0xc28d, 0x6202, 0x012e, 0x0804, 0x6b10, 0x012e, -+ 0x0804, 0x6b0a, 0x012e, 0x0804, 0x6b04, 0x012e, 0x0804, 0x6b07, -+ 0x0126, 0x2091, 0x8000, 0x7007, 0x0001, 0x080c, 0x58cb, 0x05e0, -+ 0x2061, 0x1354, 0x6000, 0xd084, 0x05b8, 0x6204, 0x6308, 0xd08c, -+ 0x1530, 0x6c78, 0x9484, 0x0003, 0x0170, 0x6988, 0x918c, 0x00ff, -+ 0x8001, 0x1120, 0x2100, 0x9210, 0x0620, 0x0028, 0x8001, 0x1508, -+ 0x2100, 0x9212, 0x02f0, 0x9484, 0x000c, 0x0188, 0x6988, 0x810f, -+ 0x918c, 0x00ff, 0x9082, 0x0004, 0x1120, 0x2100, 0x9318, 0x0288, -+ 0x0030, 0x9082, 0x0004, 0x1168, 0x2100, 0x931a, 0x0250, 0x6890, -+ 0x9005, 0x0110, 0x8000, 0x6016, 0x6206, 0x630a, 0x012e, 0x0804, -+ 0x6b10, 0x012e, 0x0804, 0x6b0d, 0x012e, 0x0804, 0x6b0a, 0x0126, -+ 0x2091, 0x8000, 0x7007, 0x0001, 0x2061, 0x1354, 0x6300, 0xd38c, -+ 0x1120, 0x6308, 0x8318, 0x0220, 0x630a, 0x012e, 0x0804, 0x6b1e, -+ 0x012e, 0x0804, 0x6b0d, 0x0126, 0x00c6, 0x2091, 0x8000, 0x7007, -+ 0x0001, 0x687c, 0xd0ac, 0x0148, 0x00c6, 0x2061, 0x1354, 0x6000, -+ 0x9084, 0xfcff, 0x6002, 0x00ce, 0x0440, 0x6888, 0x9005, 0x05c8, -+ 0x688c, 0x9065, 0x0590, 0x2001, 0x1133, 0x2004, 0x9005, 0x0118, -+ 0x080c, 0x8f09, 0x0068, 0x6017, 0x0400, 0x605b, 0x0000, 0x697c, -+ 0xd1a4, 0x0110, 0x6980, 0x615a, 0x2009, 0x0041, 0x080c, 0x8f53, -+ 0x6988, 0x918c, 0xff00, 0x9186, 0x2000, 0x1138, 0x0026, 0x900e, -+ 0x2011, 0xfdff, 0x080c, 0x73af, 0x002e, 0x687c, 0xd0c4, 0x0148, -+ 0x2061, 0x1354, 0x6000, 0xd08c, 0x1120, 0x6008, 0x8000, 0x0208, -+ 0x600a, 0x00ce, 0x012e, 0x0804, 0x6b10, 0x00ce, 0x012e, 0x0804, -+ 0x6b0a, 0x6984, 0x9186, 0x002e, 0x0d40, 0x9186, 0x002d, 0x0d28, -+ 0x9186, 0x0045, 0x0528, 0x9186, 0x002a, 0x1130, 0x2001, 0x110c, -+ 0x200c, 0xc194, 0x2102, 0x08c8, 0x9186, 0x0020, 0x0170, 0x9186, -+ 0x0029, 0x1d18, 0x6974, 0x918c, 0xff00, 0x810f, 0x080c, 0x5608, -+ 0x1960, 0x6000, 0xc0e4, 0x6002, 0x0840, 0x688c, 0x9065, 0x09a8, -+ 0x6007, 0x0024, 0x2001, 0x12c0, 0x2004, 0x601a, 0x0804, 0x69a5, -+ 0x688c, 0x9065, 0x0950, 0x00e6, 0x6890, 0x9075, 0x2001, 0x1133, -+ 0x2004, 0x9005, 0x0150, 0x080c, 0x8f09, 0x8eff, 0x0118, 0x2e60, -+ 0x080c, 0x8f09, 0x00ee, 0x0804, 0x69a5, 0x6024, 0xc0dc, 0xc0d5, -+ 0x6026, 0x2e60, 0x6007, 0x003a, 0x68a0, 0x9005, 0x0130, 0x6007, -+ 0x003b, 0x68a4, 0x602e, 0x68a8, 0x6016, 0x6003, 0x0001, 0x080c, -+ 0x756e, 0x080c, 0x7aa4, 0x00ee, 0x0804, 0x69a5, 0x2061, 0x1354, -+ 0x6000, 0xd084, 0x0190, 0xd08c, 0x1904, 0x6b1e, 0x0126, 0x2091, -+ 0x8000, 0x6204, 0x8210, 0x0220, 0x6206, 0x012e, 0x0804, 0x6b1e, -+ 0x012e, 0x6883, 0x0016, 0x0804, 0x6b17, 0x6883, 0x0007, 0x0804, -+ 0x6b17, 0x6864, 0x8007, 0x9084, 0x00ff, 0x0130, 0x8001, 0x1138, -+ 0x7007, 0x0001, 0x0069, 0x0005, 0x080c, 0x66f4, 0x0040, 0x7007, -+ 0x0003, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x6a48, 0x0005, -+ 0x00e6, 0x0126, 0x2091, 0x8000, 0x903e, 0x2061, 0x1100, 0x61cc, -+ 0x81ff, 0x1904, 0x6aca, 0x6130, 0xd194, 0x1904, 0x6af4, 0x6878, -+ 0x2070, 0x9e82, 0x15c0, 0x0a04, 0x6abe, 0x6060, 0x9e02, 0x1a04, -+ 0x6abe, 0x7120, 0x9186, 0x0006, 0x1904, 0x6aad, 0x7010, 0x9005, -+ 0x0904, 0x6aca, 0x2004, 0xd0e4, 0x1904, 0x6aef, 0x2061, 0x1354, -+ 0x6100, 0x9184, 0x0301, 0x9086, 0x0001, 0x1590, 0x7024, 0xd0dc, -+ 0x1904, 0x6af7, 0x6883, 0x0000, 0x6803, 0x0000, 0x2d08, 0x7014, -+ 0x9005, 0x1198, 0x7116, 0x687c, 0xd0f4, 0x1904, 0x6afa, 0x2001, -+ 0x1153, 0x2004, 0xd09c, 0x1118, 0x687c, 0xc0cc, 0x687e, 0x2e60, -+ 0x080c, 0x72d9, 0x012e, 0x00ee, 0x0005, 0x2068, 0x6800, 0x9005, -+ 0x1de0, 0x6902, 0x2168, 0x687c, 0xd0f4, 0x1904, 0x6afa, 0x012e, -+ 0x00ee, 0x0005, 0x012e, 0x00ee, 0x6883, 0x0006, 0x0804, 0x6b17, -+ 0xd184, 0x0dc0, 0xd1c4, 0x11a8, 0x00b8, 0x6974, 0x918c, 0xff00, -+ 0x810f, 0x080c, 0x5608, 0x15d8, 0x6000, 0xd0e4, 0x15c0, 0x7120, -+ 0x9186, 0x0007, 0x1118, 0x6883, 0x0002, 0x0498, 0x6883, 0x0008, -+ 0x0480, 0x6883, 0x000e, 0x0468, 0x6883, 0x0017, 0x0450, 0x6883, -+ 0x0035, 0x0438, 0x2001, 0x1172, 0x2004, 0xd0fc, 0x01e8, 0x6878, -+ 0x2070, 0x9e82, 0x15c0, 0x02c0, 0x6060, 0x9e02, 0x12a8, 0x7120, -+ 0x9186, 0x0006, 0x1188, 0x7010, 0x9005, 0x0170, 0x2004, 0xd0bc, -+ 0x0158, 0x2039, 0x0001, 0x7000, 0x9086, 0x0007, 0x1904, 0x6a53, -+ 0x7003, 0x0002, 0x0804, 0x6a53, 0x6883, 0x0028, 0x0010, 0x6883, -+ 0x0029, 0x012e, 0x00ee, 0x0418, 0x6883, 0x002a, 0x0cd0, 0x6883, -+ 0x0045, 0x0cb8, 0x2e60, 0x2019, 0x0002, 0x601b, 0x0014, 0x080c, -+ 0xbd23, 0x012e, 0x00ee, 0x0005, 0x2009, 0x003e, 0x0058, 0x2009, -+ 0x0004, 0x0040, 0x2009, 0x0006, 0x0028, 0x2009, 0x0016, 0x0010, -+ 0x2009, 0x0001, 0x6884, 0x9084, 0xff00, 0x9105, 0x6886, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x0005, 0x080c, 0x0ecf, -+ 0x0005, 0x00d6, 0x080c, 0x72d0, 0x00de, 0x0005, 0x00d6, 0x00e6, -+ 0x0126, 0x2091, 0x8000, 0x2071, 0x0040, 0x702c, 0xd084, 0x01f0, -+ 0x908c, 0x0780, 0x190c, 0x6bb4, 0xd09c, 0x11c0, 0x2071, 0x1100, -+ 0x70bc, 0x90ea, 0x0010, 0x0290, 0x8001, 0x70be, 0x702c, 0x2068, -+ 0x2d04, 0x702e, 0x9006, 0x206a, 0x6806, 0x2071, 0x0040, 0x8d07, -+ 0x8005, 0x8005, 0xc0d5, 0x7022, 0x702c, 0x0c10, 0x012e, 0x00ee, -+ 0x00de, 0x0005, 0x0006, 0x9084, 0x0780, 0x190c, 0x6bb4, 0x000e, -+ 0x0005, 0x00d6, 0x00c6, 0x0036, 0x0026, 0x0016, 0x7007, 0x0001, -+ 0x6a74, 0x9282, 0x0004, 0x1a04, 0x6ba4, 0x697c, 0x9188, 0x1000, -+ 0x2104, 0x9065, 0x6004, 0xd284, 0x0140, 0x05e0, 0x8007, 0x9084, -+ 0x00ff, 0x9084, 0x0006, 0x1108, 0x04a8, 0x2c10, 0x080c, 0x8e83, -+ 0x1118, 0x080c, 0x8f26, 0x05a0, 0x6212, 0x6874, 0x0002, 0x6b83, -+ 0x6b88, 0x6b8b, 0x6b91, 0x2019, 0x0002, 0x080c, 0xc0b9, 0x0060, -+ 0x080c, 0xc05a, 0x0048, 0x2019, 0x0002, 0x6980, 0x080c, 0xc072, -+ 0x0018, 0x6980, 0x080c, 0xc05a, 0x080c, 0x8ed9, 0x6887, 0x0000, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x001e, 0x002e, -+ 0x003e, 0x00ce, 0x00de, 0x0005, 0x6887, 0x0006, 0x0c88, 0x6887, -+ 0x0002, 0x0c70, 0x6887, 0x0005, 0x0c58, 0x6887, 0x0004, 0x0c40, -+ 0x6887, 0x0007, 0x0c28, 0x0005, 0x2011, 0x8003, 0x080c, 0x3f23, -+ 0x0cf8, 0x0005, 0x00f6, 0x2079, 0x0300, 0x2001, 0x0200, 0x200c, -+ 0xc1e5, 0xc1dc, 0x2102, 0x2009, 0x0218, 0x210c, 0xd1ec, 0x1120, -+ 0x080c, 0x12a2, 0x00fe, 0x0005, 0x2001, 0x020d, 0x2003, 0x0020, -+ 0x2001, 0x0307, 0x2003, 0x0300, 0x00fe, 0x0005, 0x781c, 0xd08c, -+ 0x05d8, 0x7d44, 0x7c40, 0x9584, 0x00f6, 0x1508, 0x9484, 0x7000, -+ 0x0138, 0x908a, 0x2000, 0x1258, 0x9584, 0x0700, 0x8007, 0x0498, -+ 0x7000, 0x9084, 0xff00, 0x9086, 0x8100, 0x0db0, 0x00b0, 0x9484, -+ 0x0fff, 0x1130, 0x7000, 0x9084, 0xff00, 0x9086, 0x8100, 0x11b0, -+ 0x080c, 0xc426, 0x080c, 0x709e, 0x7817, 0x0140, 0x0098, 0x9584, -+ 0x0076, 0x1118, 0x080c, 0x70fb, 0x19c8, 0xd5a4, 0x0138, 0x0046, -+ 0x0056, 0x080c, 0x1a74, 0x005e, 0x004e, 0x0020, 0x080c, 0xc426, -+ 0x7817, 0x0140, 0x080c, 0x6c56, 0x2001, 0x130d, 0x2004, 0x9005, -+ 0x090c, 0x7aa4, 0x0005, 0x0002, 0x6c2d, 0x6eb5, 0x6c24, 0x6c24, -+ 0x6c24, 0x6c24, 0x6c24, 0x6c24, 0x7817, 0x0140, 0x2001, 0x130d, -+ 0x2004, 0x9005, 0x090c, 0x7aa4, 0x0005, 0x7000, 0x908c, 0xff00, -+ 0x9194, 0xf000, 0x810f, 0x9484, 0x0fff, 0x688a, 0x9286, 0x2000, -+ 0x1148, 0x6800, 0x9086, 0x0001, 0x1118, 0x080c, 0x483b, 0x0068, -+ 0x0451, 0x0058, 0x9286, 0x3000, 0x1118, 0x080c, 0x6e02, 0x0028, -+ 0x9286, 0x8000, 0x1110, 0x080c, 0x6fc8, 0x7817, 0x0140, 0x2001, -+ 0x130d, 0x2004, 0x9005, 0x090c, 0x7aa4, 0x0005, 0x2001, 0x110f, -+ 0x2004, 0xd08c, 0x0178, 0x2001, 0x1100, 0x2004, 0x9086, 0x0003, -+ 0x1148, 0x0026, 0x0036, 0x2011, 0x8048, 0x2518, 0x080c, 0x3f23, -+ 0x003e, 0x002e, 0x0005, 0x00c6, 0x7010, 0x9084, 0xff00, 0x8007, -+ 0x9096, 0x0001, 0x0120, 0x9096, 0x0023, 0x1904, 0x6dd3, 0x9186, -+ 0x0023, 0x1550, 0x080c, 0x7061, 0x0904, 0x6dd3, 0x7124, 0x610a, -+ 0x7030, 0x908e, 0x0200, 0x1130, 0x2009, 0x0015, 0x080c, 0x8f53, -+ 0x0804, 0x6dd3, 0x908e, 0x0214, 0x0118, 0x908e, 0x0210, 0x1130, -+ 0x2009, 0x0015, 0x080c, 0x8f53, 0x0804, 0x6dd3, 0x908e, 0x0100, -+ 0x1904, 0x6dd3, 0x7034, 0x9005, 0x1904, 0x6dd3, 0x2009, 0x0016, -+ 0x080c, 0x8f53, 0x0804, 0x6dd3, 0x9186, 0x0022, 0x1904, 0x6dd3, -+ 0x7030, 0x908e, 0x0300, 0x1580, 0x68d8, 0xd0a4, 0x0528, 0xc0b5, -+ 0x68da, 0x7100, 0x918c, 0x00ff, 0x6976, 0x7004, 0x687a, 0x00f6, -+ 0x2079, 0x0100, 0x79e6, 0x78ea, 0x0006, 0x9084, 0x00ff, 0x0016, -+ 0x2008, 0x080c, 0x1f8d, 0x7932, 0x7936, 0x001e, 0x000e, 0x00fe, -+ 0x080c, 0x1f63, 0x6956, 0x703c, 0x00e6, 0x2071, 0x0140, 0x7086, -+ 0x2071, 0x1100, 0x70ae, 0x00ee, 0x7034, 0x9005, 0x1904, 0x6dd3, -+ 0x2009, 0x0017, 0x0804, 0x6d92, 0x908e, 0x0400, 0x1158, 0x7034, -+ 0x9005, 0x1904, 0x6dd3, 0x68d8, 0xc0a5, 0x68da, 0x2009, 0x0030, -+ 0x0804, 0x6d92, 0x908e, 0x0500, 0x1140, 0x7034, 0x9005, 0x1904, -+ 0x6dd3, 0x2009, 0x0018, 0x0804, 0x6d92, 0x908e, 0x2010, 0x1120, -+ 0x2009, 0x0019, 0x0804, 0x6d92, 0x908e, 0x2110, 0x1120, 0x2009, -+ 0x001a, 0x0804, 0x6d92, 0x908e, 0x5200, 0x1140, 0x7034, 0x9005, -+ 0x1904, 0x6dd3, 0x2009, 0x001b, 0x0804, 0x6d92, 0x908e, 0x5000, -+ 0x1140, 0x7034, 0x9005, 0x1904, 0x6dd3, 0x2009, 0x001c, 0x0804, -+ 0x6d92, 0x908e, 0x1300, 0x1120, 0x2009, 0x0034, 0x0804, 0x6d92, -+ 0x908e, 0x1200, 0x1140, 0x7034, 0x9005, 0x1904, 0x6dd3, 0x2009, -+ 0x0024, 0x0804, 0x6d92, 0x908c, 0xff00, 0x918e, 0x2400, 0x1120, -+ 0x2009, 0x002d, 0x0804, 0x6d92, 0x908c, 0xff00, 0x918e, 0x5300, -+ 0x1120, 0x2009, 0x002a, 0x0804, 0x6d92, 0x908e, 0x0f00, 0x1120, -+ 0x2009, 0x0020, 0x0804, 0x6d92, 0x908e, 0x5300, 0x1108, 0x00d8, -+ 0x908e, 0x6104, 0x11c0, 0x2011, 0x026d, 0x8208, 0x2204, 0x9082, -+ 0x0004, 0x8004, 0x8004, 0x20a8, 0x2011, 0x8015, 0x211c, 0x8108, -+ 0x0046, 0x2124, 0x080c, 0x3f23, 0x004e, 0x8108, 0x1f04, 0x6d54, -+ 0x2009, 0x0023, 0x0478, 0x908e, 0x6000, 0x1118, 0x2009, 0x003f, -+ 0x0448, 0x908e, 0x7800, 0x1118, 0x2009, 0x0045, 0x0418, 0x908e, -+ 0x1000, 0x1118, 0x2009, 0x004e, 0x00e8, 0x908e, 0x6300, 0x1118, -+ 0x2009, 0x004a, 0x00b8, 0x908c, 0xff00, 0x918e, 0x5600, 0x1118, -+ 0x2009, 0x004f, 0x0078, 0x908c, 0xff00, 0x918e, 0x5700, 0x1118, -+ 0x2009, 0x0050, 0x0038, 0x2009, 0x001d, 0x6834, 0xd0d4, 0x0110, -+ 0x2009, 0x004c, 0x0016, 0x2011, 0x0263, 0x2204, 0x8211, 0x220c, -+ 0x080c, 0x1f63, 0x15d0, 0x080c, 0x55b3, 0x15b8, 0x6612, 0x6516, -+ 0x86ff, 0x01e8, 0x001e, 0x0016, 0x9186, 0x0017, 0x1158, 0x6874, -+ 0x9606, 0x11a8, 0x6878, 0x9506, 0x9084, 0xff00, 0x1180, 0x6000, -+ 0xc0f5, 0x6002, 0x9186, 0x0046, 0x1150, 0x6874, 0x9606, 0x1138, -+ 0x6878, 0x9506, 0x9084, 0xff00, 0x1110, 0x001e, 0x00a0, 0x00c6, -+ 0x080c, 0x8e83, 0x001e, 0x0198, 0x6112, 0x6023, 0x0004, 0x7120, -+ 0x610a, 0x001e, 0x9186, 0x004c, 0x1110, 0x6023, 0x000a, 0x0016, -+ 0x001e, 0x080c, 0x8f53, 0x00ce, 0x0005, 0x001e, 0x0ce0, 0x2001, -+ 0x110d, 0x2004, 0xd0ec, 0x0120, 0x2011, 0x8049, 0x080c, 0x3f23, -+ 0x00c6, 0x080c, 0x8f26, 0x001e, 0x0d80, 0x6112, 0x6023, 0x0004, -+ 0x7120, 0x610a, 0x001e, 0x0016, 0x9186, 0x0017, 0x0118, 0x9186, -+ 0x0030, 0x1128, 0x6007, 0x0009, 0x6017, 0x2900, 0x0020, 0x6007, -+ 0x0051, 0x6017, 0x0000, 0x602f, 0x0009, 0x6003, 0x0001, 0x080c, -+ 0x75be, 0x0898, 0x080c, 0x297d, 0x1140, 0x7010, 0x9084, 0xff00, -+ 0x8007, 0x908e, 0x0008, 0x1108, 0x0009, 0x0005, 0x00c6, 0x0046, -+ 0x7000, 0x908c, 0xff00, 0x810f, 0x9186, 0x0033, 0x11e8, 0x080c, -+ 0x7061, 0x0904, 0x6e5f, 0x7124, 0x610a, 0x7030, 0x908e, 0x0200, -+ 0x1140, 0x7034, 0x9005, 0x15d8, 0x2009, 0x0015, 0x080c, 0x8f53, -+ 0x04b0, 0x908e, 0x0100, 0x1598, 0x7034, 0x9005, 0x1580, 0x2009, -+ 0x0016, 0x080c, 0x8f53, 0x0458, 0x9186, 0x0032, 0x1540, 0x7030, -+ 0x908e, 0x1400, 0x1520, 0x2009, 0x0038, 0x0016, 0x2011, 0x0263, -+ 0x2204, 0x8211, 0x220c, 0x080c, 0x1f63, 0x11c0, 0x080c, 0x55b3, -+ 0x11a8, 0x6612, 0x6516, 0x00c6, 0x080c, 0x8e83, 0x0170, 0x001e, -+ 0x6112, 0x080c, 0xad70, 0x6023, 0x0004, 0x7120, 0x610a, 0x001e, -+ 0x080c, 0x8f53, 0x080c, 0x7aa4, 0x0010, 0x00ce, 0x001e, 0x004e, -+ 0x00ce, 0x0005, 0x0046, 0x00e6, 0x00d6, 0x2028, 0x2130, 0x9696, -+ 0x00ff, 0x11a8, 0x9592, 0xfffc, 0x0290, 0x9596, 0xfffd, 0x1118, -+ 0x2009, 0x007f, 0x04e8, 0x9596, 0xfffe, 0x1118, 0x2009, 0x007e, -+ 0x04b8, 0x9596, 0xfffc, 0x1118, 0x2009, 0x0080, 0x0488, 0x9016, -+ 0x2019, 0x1136, 0x231c, 0xd3ac, 0x0130, 0x9026, 0x20a9, 0x00ff, -+ 0x2071, 0x1000, 0x0030, 0x2021, 0x0081, 0x20a9, 0x007e, 0x2071, -+ 0x1081, 0x2e1c, 0x93ed, 0x0000, 0x1128, 0x82ff, 0x1170, 0x2410, -+ 0xc2fd, 0x0058, 0x6f10, 0x2600, 0x9706, 0x6814, 0x1120, 0x9546, -+ 0x1110, 0x2408, 0x0068, 0x9745, 0x0d80, 0x8420, 0x8e70, 0x1f04, -+ 0x6e91, 0x82ff, 0x1118, 0x9085, 0x0001, 0x0018, 0xc2fc, 0x2208, -+ 0x9006, 0x00de, 0x00ee, 0x004e, 0x0005, 0x7000, 0x908c, 0xff00, -+ 0x810f, 0x9184, 0x000f, 0x004a, 0x7817, 0x0140, 0x2001, 0x130d, -+ 0x2004, 0x9005, 0x090c, 0x7aa4, 0x0005, 0x6ed5, 0x6ed5, 0x6ed5, -+ 0x7073, 0x6ed5, 0x6ede, 0x6f0b, 0x6f9b, 0x6ed5, 0x6ed5, 0x6ed5, -+ 0x6ed5, 0x6ed5, 0x6ed5, 0x6ed5, 0x6ed5, 0x7817, 0x0140, 0x2001, -+ 0x130d, 0x2004, 0x9005, 0x090c, 0x7aa4, 0x0005, 0x7110, 0xd1bc, -+ 0x0508, 0x7120, 0x2160, 0x9c8c, 0x0007, 0x11e0, 0x9c8a, 0x15c0, -+ 0x02c8, 0x6860, 0x9c02, 0x12b0, 0x7008, 0x9084, 0x00ff, 0x6110, -+ 0x9188, 0x0004, 0x210c, 0x9106, 0x1168, 0x700c, 0x6110, 0x9188, -+ 0x0005, 0x210c, 0x9106, 0x1130, 0x7124, 0x610a, 0x2009, 0x0046, -+ 0x080c, 0x8f53, 0x7817, 0x0140, 0x2001, 0x130d, 0x2004, 0x9005, -+ 0x090c, 0x7aa4, 0x0005, 0x00c6, 0x9484, 0x0fff, 0x0904, 0x6f71, -+ 0x7110, 0xd1bc, 0x1904, 0x6f71, 0x7108, 0x700c, 0x2028, 0x918c, -+ 0x00ff, 0x2130, 0x9094, 0xff00, 0x15c0, 0x81ff, 0x15b0, 0x9080, -+ 0x298c, 0x200d, 0x918c, 0xff00, 0x810f, 0x2001, 0x0080, 0x9106, -+ 0x0904, 0x6f71, 0x080c, 0x55b3, 0x1904, 0x6f71, 0x6612, 0x6516, -+ 0x6000, 0xd0ec, 0x15f0, 0x6204, 0x9294, 0xff00, 0x8217, 0x9286, -+ 0x0006, 0x1188, 0x00c6, 0x080c, 0x8e83, 0x001e, 0x05e0, 0x6112, -+ 0x6023, 0x0006, 0x7120, 0x610a, 0x7130, 0x6156, 0x2009, 0x0044, -+ 0x080c, 0xb7dd, 0x0430, 0x6204, 0x9294, 0x00ff, 0x9286, 0x0006, -+ 0x1140, 0x9295, 0x0600, 0x6206, 0x0c28, 0x190c, 0x6e62, 0x11c8, -+ 0x0888, 0x00c6, 0x080c, 0x8e83, 0x001e, 0x0198, 0x6112, 0x6023, -+ 0x0004, 0x7120, 0x610a, 0x9286, 0x0004, 0x1118, 0x6007, 0x0005, -+ 0x0010, 0x6007, 0x0001, 0x6003, 0x0001, 0x080c, 0x75be, 0x080c, -+ 0x7aa4, 0x7817, 0x0140, 0x2001, 0x130d, 0x2004, 0x9005, 0x090c, -+ 0x7aa4, 0x00ce, 0x0005, 0x2001, 0x110d, 0x2004, 0xd0ec, 0x0120, -+ 0x2011, 0x8049, 0x080c, 0x3f23, 0x00c6, 0x080c, 0x8f26, 0x001e, -+ 0x0d40, 0x6112, 0x6023, 0x0006, 0x7120, 0x610a, 0x7130, 0x6156, -+ 0x6017, 0x0300, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x756e, -+ 0x080c, 0x7aa4, 0x08b0, 0x7110, 0xd1bc, 0x0508, 0x7020, 0x2060, -+ 0x9c84, 0x0007, 0x11e0, 0x9c82, 0x15c0, 0x02c8, 0x6860, 0x9c02, -+ 0x12b0, 0x7008, 0x9084, 0x00ff, 0x6110, 0x9188, 0x0004, 0x210c, -+ 0x9106, 0x1168, 0x700c, 0x6110, 0x9188, 0x0005, 0x210c, 0x9106, -+ 0x1130, 0x7124, 0x610a, 0x2009, 0x0045, 0x080c, 0x8f53, 0x7817, -+ 0x0140, 0x2001, 0x130d, 0x2004, 0x9005, 0x090c, 0x7aa4, 0x0005, -+ 0x080c, 0x297d, 0x1168, 0x7010, 0x9084, 0xff00, 0x8007, 0x9086, -+ 0x0000, 0x1130, 0x9184, 0x000f, 0x908a, 0x0006, 0x1208, 0x000b, -+ 0x0005, 0x6fdf, 0x6fe0, 0x6fdf, 0x6fdf, 0x7049, 0x7055, 0x0005, -+ 0x7110, 0xd1bc, 0x0120, 0x702c, 0xd084, 0x0904, 0x7048, 0x700c, -+ 0x7108, 0x080c, 0x1f63, 0x1904, 0x7048, 0x080c, 0x55b3, 0x1904, -+ 0x7048, 0x6612, 0x6516, 0x6204, 0x7110, 0xd1bc, 0x01f8, 0x928c, -+ 0x00ff, 0x9186, 0x0004, 0x0118, 0x9186, 0x0006, 0x15c8, 0x00c6, -+ 0x080c, 0x7061, 0x00ce, 0x0904, 0x7048, 0x00c6, 0x080c, 0x8e83, -+ 0x001e, 0x05f0, 0x6112, 0x080c, 0xad70, 0x6023, 0x0002, 0x7120, -+ 0x610a, 0x2009, 0x0088, 0x080c, 0x8f53, 0x0490, 0x928c, 0x00ff, -+ 0x9186, 0x0006, 0x0160, 0x9186, 0x0004, 0x0148, 0x9294, 0xff00, -+ 0x8217, 0x9286, 0x0004, 0x0118, 0x9286, 0x0006, 0x1188, 0x00c6, -+ 0x080c, 0x8e83, 0x001e, 0x01e0, 0x6112, 0x080c, 0xad70, 0x6023, -+ 0x0005, 0x7120, 0x610a, 0x2009, 0x0088, 0x080c, 0x8f53, 0x0080, -+ 0x00c6, 0x080c, 0x8e83, 0x001e, 0x0158, 0x6112, 0x080c, 0xad70, -+ 0x6023, 0x0004, 0x7120, 0x610a, 0x2009, 0x0001, 0x080c, 0x8f53, -+ 0x0005, 0x7110, 0xd1bc, 0x0140, 0x00a1, 0x0130, 0x7124, 0x610a, -+ 0x2009, 0x0089, 0x080c, 0x8f53, 0x0005, 0x7110, 0xd1bc, 0x0140, -+ 0x0041, 0x0130, 0x7124, 0x610a, 0x2009, 0x008a, 0x080c, 0x8f53, -+ 0x0005, 0x7020, 0x2060, 0x9c84, 0x0007, 0x1158, 0x9c82, 0x15c0, -+ 0x0240, 0x2001, 0x1118, 0x2004, 0x9c02, 0x1218, 0x9085, 0x0001, -+ 0x0005, 0x9006, 0x0ce8, 0x7110, 0xd1bc, 0x11f8, 0x7024, 0x2060, -+ 0x9c84, 0x0007, 0x11d0, 0x9c82, 0x15c0, 0x02b8, 0x6860, 0x9c02, -+ 0x12a0, 0x7008, 0x9084, 0x00ff, 0x6110, 0x9188, 0x0004, 0x210c, -+ 0x9106, 0x1158, 0x700c, 0x6110, 0x9188, 0x0005, 0x210c, 0x9106, -+ 0x1120, 0x2009, 0x0051, 0x080c, 0x8f53, 0x7817, 0x0140, 0x2001, -+ 0x130d, 0x2004, 0x9005, 0x090c, 0x7aa4, 0x0005, 0x2031, 0x0105, -+ 0x0069, 0x0005, 0x2031, 0x0206, 0x0049, 0x0005, 0x2031, 0x0207, -+ 0x0029, 0x0005, 0x2031, 0x0213, 0x0009, 0x0005, 0x00c6, 0x00d6, -+ 0x00f6, 0x7000, 0x9084, 0xf000, 0x9086, 0xc000, 0x05c8, 0x080c, -+ 0x8e83, 0x05b0, 0x0066, 0x00c6, 0x0046, 0x2011, 0x0263, 0x2204, -+ 0x8211, 0x220c, 0x080c, 0x1f63, 0x1598, 0x080c, 0x55b3, 0x1580, -+ 0x6612, 0x6516, 0x2c00, 0x004e, 0x00ce, 0x6012, 0x080c, 0xad70, -+ 0x080c, 0x0eb6, 0x0508, 0x2d00, 0x605a, 0x9006, 0x6802, 0x6866, -+ 0x6c6a, 0x9df8, 0x001b, 0x20a9, 0x000e, 0x20e9, 0x0001, 0x20e1, -+ 0x0000, 0x2fa0, 0x2e98, 0x4003, 0x006e, 0x6616, 0x6007, 0x003e, -+ 0x6023, 0x0001, 0x6003, 0x0001, 0x080c, 0x75be, 0x080c, 0x7aa4, -+ 0x00fe, 0x00de, 0x00ce, 0x0005, 0x080c, 0x8ed9, 0x006e, 0x0cc0, -+ 0x004e, 0x00ce, 0x0cc8, 0x00c6, 0x7000, 0x908c, 0xff00, 0x9184, -+ 0xf000, 0x810f, 0x9086, 0x2000, 0x1540, 0x9186, 0x0022, 0x11d0, -+ 0x2001, 0x0111, 0x2004, 0x9005, 0x1510, 0x7030, 0x908e, 0x0400, -+ 0x01f0, 0x908e, 0x6000, 0x01d8, 0x908e, 0x5400, 0x01c0, 0x908e, -+ 0x0300, 0x1138, 0x2009, 0x1136, 0x210c, 0xd18c, 0x1180, 0xd1a4, -+ 0x1170, 0x0058, 0x9186, 0x0023, 0x1140, 0x080c, 0x7061, 0x0128, -+ 0x6004, 0x9086, 0x0002, 0x0118, 0x0000, 0x9006, 0x0010, 0x9085, -+ 0x0001, 0x00ce, 0x0005, 0x2071, 0x1317, 0x7003, 0x0003, 0x700f, -+ 0x0361, 0x9006, 0x701a, 0x7072, 0x7012, 0x7017, 0x15c0, 0x7007, -+ 0x0000, 0x7026, 0x702b, 0x85b8, 0x7032, 0x7037, 0x861b, 0x703b, -+ 0xffff, 0x703f, 0xffff, 0x7042, 0x7047, 0x4719, 0x704a, 0x705b, -+ 0x728c, 0x2001, 0x12aa, 0x2003, 0x0003, 0x2001, 0x12ac, 0x2003, -+ 0x0100, 0x0005, 0x2071, 0x1317, 0x1d04, 0x71e9, 0x2091, 0x6000, -+ 0x700c, 0x8001, 0x700e, 0x1500, 0x2001, 0x1174, 0x2004, 0xd0c4, -+ 0x0158, 0x3a00, 0xd08c, 0x1140, 0x20d1, 0x0000, 0x20d1, 0x0001, -+ 0x20d1, 0x0000, 0x080c, 0x0d7e, 0x700f, 0x0361, 0x7007, 0x0001, -+ 0x0126, 0x2091, 0x8000, 0x7040, 0x900d, 0x0148, 0x8109, 0x7142, -+ 0x1130, 0x7044, 0x080f, 0x0018, 0x0126, 0x2091, 0x8000, 0x7024, -+ 0x900d, 0x0188, 0x7020, 0x8001, 0x7022, 0x1168, 0x7023, 0x0009, -+ 0x8109, 0x7126, 0x9186, 0x03e8, 0x1110, 0x7028, 0x080f, 0x81ff, -+ 0x1110, 0x7028, 0x080f, 0x7030, 0x900d, 0x0180, 0x702c, 0x8001, -+ 0x702e, 0x1160, 0x702f, 0x0009, 0x8109, 0x7132, 0x0128, 0x9184, -+ 0x007f, 0x090c, 0x8696, 0x0010, 0x7034, 0x080f, 0x7038, 0x9005, -+ 0x0118, 0x0310, 0x8001, 0x703a, 0x703c, 0x9005, 0x0118, 0x0310, -+ 0x8001, 0x703e, 0x704c, 0x900d, 0x0168, 0x7048, 0x8001, 0x704a, -+ 0x1148, 0x704b, 0x0009, 0x8109, 0x714e, 0x1120, 0x7150, 0x714e, -+ 0x7058, 0x080f, 0x7018, 0x900d, 0x01d8, 0x0016, 0x7070, 0x900d, -+ 0x0158, 0x706c, 0x8001, 0x706e, 0x1138, 0x706f, 0x0009, 0x8109, -+ 0x7172, 0x1110, 0x7074, 0x080f, 0x001e, 0x7008, 0x8001, 0x700a, -+ 0x1138, 0x700b, 0x0009, 0x8109, 0x711a, 0x1110, 0x701c, 0x080f, -+ 0x012e, 0x7004, 0x0002, 0x720f, 0x7210, 0x7228, 0x00e6, 0x2071, -+ 0x1317, 0x7018, 0x9005, 0x1120, 0x711a, 0x721e, 0x700b, 0x0009, -+ 0x00ee, 0x0005, 0x00e6, 0x0006, 0x2071, 0x1317, 0x701c, 0x9206, -+ 0x1110, 0x701a, 0x701e, 0x000e, 0x00ee, 0x0005, 0x00e6, 0x2071, -+ 0x1317, 0x6088, 0x9102, 0x0208, 0x618a, 0x00ee, 0x0005, 0x0005, -+ 0x7110, 0x080c, 0x5608, 0x1158, 0x6088, 0x8001, 0x0240, 0x608a, -+ 0x1130, 0x0126, 0x2091, 0x8000, 0x080c, 0x7aa4, 0x012e, 0x8108, -+ 0x9182, 0x00ff, 0x0218, 0x900e, 0x7007, 0x0002, 0x7112, 0x0005, -+ 0x7014, 0x2060, 0x0126, 0x2091, 0x8000, 0x6040, 0x9005, 0x0128, -+ 0x8001, 0x6042, 0x1110, 0x080c, 0xac18, 0x6018, 0x9005, 0x0518, -+ 0x8001, 0x601a, 0x1500, 0x6120, 0x9186, 0x0003, 0x0118, 0x9186, -+ 0x0006, 0x11b8, 0x6014, 0x2068, 0x6884, 0x908a, 0x199a, 0x0288, -+ 0x9082, 0x1999, 0x6886, 0x908a, 0x199a, 0x0210, 0x2001, 0x1999, -+ 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, 0x687c, 0x9084, 0x1000, -+ 0x0110, 0x080c, 0xa6b1, 0x012e, 0x9c88, 0x0018, 0x7116, 0x2001, -+ 0x45c0, 0x9102, 0x0220, 0x7017, 0x15c0, 0x7007, 0x0000, 0x0005, -+ 0x00e6, 0x2071, 0x1317, 0x7027, 0x07d0, 0x7023, 0x0009, 0x00ee, -+ 0x0005, 0x2001, 0x1320, 0x2003, 0x0000, 0x0005, 0x00e6, 0x2071, -+ 0x1317, 0x7132, 0x702f, 0x0009, 0x00ee, 0x0005, 0x2011, 0x1323, -+ 0x2013, 0x0000, 0x0005, 0x00e6, 0x2071, 0x1317, 0x711a, 0x721e, -+ 0x700b, 0x0009, 0x00ee, 0x0005, 0x00c6, 0x0026, 0x7054, 0x8000, -+ 0x7056, 0x2061, 0x12aa, 0x6008, 0x9086, 0x0000, 0x0158, 0x7068, -+ 0x6036, 0x7064, 0x6032, 0x7060, 0x602e, 0x705c, 0x602a, 0x2c10, -+ 0x080c, 0x0f22, 0x002e, 0x00ce, 0x0005, 0x0006, 0x0016, 0x00c6, -+ 0x00d6, 0x00e6, 0x00f6, 0x0156, 0x080c, 0x715a, 0x015e, 0x00fe, -+ 0x00ee, 0x00de, 0x00ce, 0x001e, 0x000e, 0x0005, 0x00e6, 0x2071, -+ 0x1317, 0x7172, 0x7276, 0x706f, 0x0009, 0x00ee, 0x0005, 0x00e6, -+ 0x0006, 0x2071, 0x1317, 0x7074, 0x9206, 0x1110, 0x7072, 0x7076, -+ 0x000e, 0x00ee, 0x0005, 0x00c6, 0x2061, 0x1354, 0x00ce, 0x0005, -+ 0x9184, 0x000f, 0x8003, 0x8003, 0x8003, 0x9080, 0x1354, 0x2060, -+ 0x0005, 0x6884, 0x908a, 0x199a, 0x1630, 0x9005, 0x1150, 0x00c6, -+ 0x2061, 0x1354, 0x6014, 0x00ce, 0x9005, 0x1130, 0x2001, 0x001e, -+ 0x0018, 0x908e, 0xffff, 0x01a8, 0x8003, 0x800b, 0x810b, 0x9108, -+ 0x611a, 0x687c, 0x908c, 0x00c0, 0x918e, 0x00c0, 0x0904, 0x735c, -+ 0xd0b4, 0x1160, 0xd0bc, 0x15e0, 0x2009, 0x0006, 0x080c, 0x7386, -+ 0x0005, 0x900e, 0x0c68, 0x2001, 0x1999, 0x08b8, 0xd0fc, 0x0160, -+ 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, 0x1904, 0x7380, 0x908c, -+ 0x2020, 0x918e, 0x2020, 0x01a8, 0x6024, 0xd0d4, 0x11d0, 0x2009, -+ 0x1174, 0x2104, 0xd084, 0x1138, 0x87ff, 0x1120, 0x2009, 0x0043, -+ 0x0804, 0x8f53, 0x0005, 0x87ff, 0x1de8, 0x2009, 0x0042, 0x0804, -+ 0x8f53, 0x6110, 0x210c, 0xd1ac, 0x0d38, 0x6024, 0xc0cd, 0x6026, -+ 0x0c18, 0xc0d4, 0x6026, 0x6890, 0x602e, 0x688c, 0x6032, 0x08f8, -+ 0xd0fc, 0x0160, 0x908c, 0x0003, 0x0120, 0x918e, 0x0003, 0x1904, -+ 0x7380, 0x908c, 0x2020, 0x918e, 0x2020, 0x0170, 0x0076, 0x00f6, -+ 0x2c78, 0x080c, 0x137e, 0x00fe, 0x007e, 0x87ff, 0x1120, 0x2009, -+ 0x0042, 0x080c, 0x8f53, 0x0005, 0x6110, 0x210c, 0xd1ac, 0x0d70, -+ 0x6124, 0xc1cd, 0x6126, 0x0c50, 0xd0fc, 0x0188, 0x908c, 0x2020, -+ 0x918e, 0x2020, 0x01a8, 0x9084, 0x0003, 0x908e, 0x0002, 0x0148, -+ 0x87ff, 0x1120, 0x2009, 0x0041, 0x080c, 0x8f53, 0x0005, 0x00a1, -+ 0x0ce8, 0x87ff, 0x1dd8, 0x2009, 0x0043, 0x080c, 0x8f53, 0x0cb0, -+ 0x6110, 0x210c, 0xd1ac, 0x0d38, 0x6124, 0xc1cd, 0x6126, 0x0c18, -+ 0x2009, 0x0004, 0x0019, 0x0005, 0x2009, 0x0001, 0x00d6, 0x6014, -+ 0x90ec, 0xf000, 0x0510, 0x2068, 0x6982, 0x6800, 0x6016, 0x9186, -+ 0x0001, 0x1188, 0x697c, 0x918c, 0x8100, 0x918e, 0x8100, 0x1158, -+ 0x00c6, 0x2061, 0x1354, 0x6200, 0xd28c, 0x1120, 0x6204, 0x8210, -+ 0x0208, 0x6206, 0x00ce, 0x080c, 0x59b8, 0x6014, 0x906d, 0x0076, -+ 0x2039, 0x0000, 0x190c, 0x72d9, 0x007e, 0x00de, 0x0005, 0x0156, -+ 0x00c6, 0x2061, 0x1354, 0x6000, 0x81ff, 0x0110, 0x9205, 0x0008, -+ 0x9204, 0x6002, 0x00ce, 0x015e, 0x0005, 0x6800, 0xd08c, 0x1138, -+ 0x6808, 0x9005, 0x0120, 0x8001, 0x680a, 0x9085, 0x0001, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x0036, 0x0046, 0x20a9, 0x0010, 0x9006, -+ 0x8004, 0x2019, 0x0100, 0x231c, 0x93a6, 0x0008, 0x1118, 0x8086, -+ 0x818e, 0x0020, 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x1208, 0x9200, -+ 0x1f04, 0x73d1, 0x93a6, 0x0008, 0x1118, 0x8086, 0x818e, 0x0020, -+ 0x80f6, 0x3e00, 0x81f6, 0x3e08, 0x004e, 0x003e, 0x012e, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x0076, 0x0156, 0x20a9, 0x0010, 0x9005, -+ 0x0510, 0x911a, 0x1600, 0x8213, 0x2039, 0x0100, 0x273c, 0x97be, -+ 0x0008, 0x1110, 0x818d, 0x0010, 0x81f5, 0x3e08, 0x0228, 0x911a, -+ 0x1220, 0x1f04, 0x73fb, 0x0028, 0x911a, 0x2308, 0x8210, 0x1f04, -+ 0x73fb, 0x0006, 0x3200, 0x9084, 0xefff, 0x2080, 0x000e, 0x015e, -+ 0x007e, 0x012e, 0x0005, 0x0006, 0x3200, 0x9085, 0x1000, 0x0ca8, -+ 0x0126, 0x2091, 0x2800, 0x2079, 0x1304, 0x012e, 0x00d6, 0x2069, -+ 0x1304, 0x6803, 0x0005, 0x0156, 0x0146, 0x01d6, 0x20e9, 0x0000, -+ 0x2069, 0x0200, 0x080c, 0x8dc3, 0x0401, 0x080c, 0x8dae, 0x00e9, -+ 0x080c, 0x8db1, 0x00d1, 0x080c, 0x8db4, 0x00b9, 0x080c, 0x8db7, -+ 0x00a1, 0x080c, 0x8dba, 0x0089, 0x080c, 0x8dbd, 0x0071, 0x080c, -+ 0x8dc0, 0x0059, 0x01de, 0x014e, 0x015e, 0x2069, 0x0004, 0x2d04, -+ 0x9085, 0x8001, 0x206a, 0x00de, 0x0005, 0x20a9, 0x0020, 0x20a1, -+ 0x0240, 0x9006, 0x4004, 0x0005, 0x00c6, 0x6027, 0x0001, 0x7804, -+ 0x9084, 0x0007, 0x0002, 0x746d, 0x7491, 0x74db, 0x7473, 0x7491, -+ 0x746d, 0x746b, 0x746b, 0x080c, 0x0d7e, 0x080c, 0x7271, 0x080c, -+ 0x7aa4, 0x00ce, 0x0005, 0x62c0, 0x82ff, 0x1110, 0x00ce, 0x0005, -+ 0x2011, 0x4f57, 0x080c, 0x71fa, 0x7828, 0x9092, 0x00c8, 0x1228, -+ 0x8000, 0x782a, 0x080c, 0x4f94, 0x0c88, 0x62c0, 0x080c, 0x8dc7, -+ 0x080c, 0x4f57, 0x7807, 0x0003, 0x7827, 0x0000, 0x782b, 0x0000, -+ 0x0c28, 0x080c, 0x7271, 0x6220, 0xd2a4, 0x0178, 0x62c0, 0x82ff, -+ 0x1160, 0x782b, 0x0000, 0x7824, 0x9065, 0x090c, 0x0d7e, 0x2009, -+ 0x0013, 0x080c, 0x8f53, 0x00ce, 0x0005, 0x00c6, 0x7824, 0x9065, -+ 0x090c, 0x0d7e, 0x7804, 0x9086, 0x0004, 0x0904, 0x7517, 0x7828, -+ 0x9092, 0xc350, 0x1230, 0x8000, 0x782a, 0x00ce, 0x080c, 0x857e, -+ 0x0c50, 0x2011, 0x0130, 0x2214, 0x080c, 0x8dc7, 0x6104, 0x9186, -+ 0x0003, 0x1188, 0x00e6, 0x2071, 0x1100, 0x70e4, 0x00ee, 0xd08c, -+ 0x0150, 0x00c6, 0x00e6, 0x2061, 0x0100, 0x2071, 0x1100, 0x080c, -+ 0x4faa, 0x00ee, 0x00ce, 0x080c, 0xc463, 0x2009, 0x0014, 0x080c, -+ 0x8f53, 0x00ce, 0x0840, 0x2001, 0x1320, 0x2003, 0x0000, 0x62c0, -+ 0x82ff, 0x1160, 0x782b, 0x0000, 0x7824, 0x9065, 0x090c, 0x0d7e, -+ 0x2009, 0x0013, 0x080c, 0x8fab, 0x00ce, 0x0005, 0x00c6, 0x00d6, -+ 0x7824, 0x9005, 0x090c, 0x0d7e, 0x781c, 0x906d, 0x090c, 0x0d7e, -+ 0x080c, 0x8dc7, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160, 0x080c, -+ 0x8ed9, 0x693c, 0x81ff, 0x090c, 0x0d7e, 0x8109, 0x693e, 0x6854, -+ 0x9015, 0x0110, 0x7a1e, 0x0010, 0x7918, 0x791e, 0x7807, 0x0000, -+ 0x7827, 0x0000, 0x00de, 0x00ce, 0x080c, 0x7aa4, 0x08a8, 0x6104, -+ 0x9186, 0x0002, 0x0128, 0x9186, 0x0004, 0x0110, 0x0804, 0x74af, -+ 0x7808, 0x9c06, 0x0904, 0x74af, 0x080c, 0x79ab, 0x080c, 0x75be, -+ 0x00ce, 0x080c, 0x7aa4, 0x0804, 0x74a3, 0x00c6, 0x6024, 0x6027, -+ 0x0002, 0xd0f4, 0x1580, 0x62c8, 0x60c4, 0x9205, 0x1170, 0x783c, -+ 0x9065, 0x0130, 0x2009, 0x0049, 0x080c, 0x8f53, 0x00ce, 0x0005, -+ 0x2011, 0x1323, 0x2013, 0x0000, 0x0cc8, 0x793c, 0x81ff, 0x0dc0, -+ 0x7944, 0x9192, 0x7530, 0x12f0, 0x8108, 0x7946, 0x793c, 0x9188, -+ 0x0008, 0x210c, 0x918e, 0x0006, 0x1138, 0x6014, 0x9084, 0x1984, -+ 0x9085, 0x0012, 0x6016, 0x0c10, 0x6014, 0x9084, 0x1984, 0x9085, -+ 0x0016, 0x6016, 0x08d8, 0x793c, 0x2160, 0x2009, 0x004a, 0x080c, -+ 0x8f53, 0x08a0, 0x7848, 0xc085, 0x784a, 0x0880, 0x0006, 0x0016, -+ 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, -+ 0x1304, 0x6020, 0x8000, 0x6022, 0x6010, 0x9005, 0x0148, 0x9080, -+ 0x0003, 0x2102, 0x6112, 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, -+ 0x6116, 0x6112, 0x0cc0, 0x00d6, 0x2069, 0x1304, 0x6000, 0xd0d4, -+ 0x01b8, 0x6820, 0x8000, 0x6822, 0x9086, 0x0001, 0x1110, 0x2c00, -+ 0x681e, 0x2001, 0x110c, 0x2004, 0xd0fc, 0x0118, 0x00de, 0x0804, -+ 0x7aa4, 0x6804, 0x9084, 0x0007, 0x0804, 0x7abb, 0x00de, 0x0005, -+ 0xc0d5, 0x6002, 0x6818, 0x9005, 0x0158, 0x6056, 0x605b, 0x0000, -+ 0x0006, 0x2c00, 0x681a, 0x00de, 0x685a, 0x2069, 0x1304, 0x08c8, -+ 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x0898, 0x0006, 0x0016, -+ 0x00c6, 0x0126, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, -+ 0x1304, 0x6020, 0x8000, 0x6022, 0x6008, 0x9005, 0x0148, 0x9080, -+ 0x0003, 0x2102, 0x610a, 0x012e, 0x00ce, 0x001e, 0x000e, 0x0005, -+ 0x610e, 0x610a, 0x0cc0, 0x00c6, 0x600f, 0x0000, 0x2c08, 0x2061, -+ 0x1304, 0x6034, 0x9005, 0x0130, 0x9080, 0x0003, 0x2102, 0x6136, -+ 0x00ce, 0x0005, 0x613a, 0x6136, 0x00ce, 0x0005, 0x00f6, 0x00e6, -+ 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0056, 0x0036, 0x0026, 0x0016, -+ 0x0006, 0x0126, 0x902e, 0x2071, 0x1304, 0x7638, 0x2660, 0x2678, -+ 0x2091, 0x8000, 0x8cff, 0x0904, 0x7664, 0x6010, 0x9080, 0x0028, -+ 0x2004, 0x9206, 0x1904, 0x765f, 0x87ff, 0x0120, 0x6054, 0x9106, -+ 0x1904, 0x765f, 0x703c, 0x9c06, 0x1178, 0x0036, 0x2019, 0x0001, -+ 0x080c, 0x8847, 0x7033, 0x0000, 0x9006, 0x703e, 0x7042, 0x7046, -+ 0x704a, 0x003e, 0x2029, 0x0001, 0x7038, 0x9c36, 0x1110, 0x660c, -+ 0x763a, 0x7034, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, -+ 0x7036, 0x0010, 0x7037, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, -+ 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x080c, 0xa942, -+ 0x01c8, 0x6014, 0x2068, 0x6020, 0x9086, 0x0003, 0x1580, 0x6867, -+ 0x0103, 0x6b7a, 0x6877, 0x0000, 0x0016, 0x0036, 0x0076, 0x080c, -+ 0xac01, 0x080c, 0xc3c7, 0x080c, 0x5b76, 0x007e, 0x003e, 0x001e, -+ 0x080c, 0xab11, 0x080c, 0x8f09, 0x00ce, 0x0804, 0x7602, 0x2c78, -+ 0x600c, 0x2060, 0x0804, 0x7602, 0x85ff, 0x0120, 0x0036, 0x080c, -+ 0x7b72, 0x003e, 0x012e, 0x000e, 0x001e, 0x002e, 0x003e, 0x005e, -+ 0x006e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6020, -+ 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0076, 0x080c, 0xc3c7, -+ 0x080c, 0xc0e9, 0x007e, 0x003e, 0x001e, 0x08a0, 0x6020, 0x9086, -+ 0x000a, 0x0904, 0x7649, 0x0804, 0x7647, 0x0006, 0x0066, 0x00c6, -+ 0x00d6, 0x00f6, 0x9036, 0x0126, 0x2091, 0x8000, 0x2079, 0x1304, -+ 0x7838, 0x9065, 0x0904, 0x76db, 0x600c, 0x0006, 0x600f, 0x0000, -+ 0x783c, 0x9c06, 0x1168, 0x0036, 0x2019, 0x0001, 0x080c, 0x8847, -+ 0x7833, 0x0000, 0x901e, 0x7b3e, 0x7b42, 0x7b46, 0x7b4a, 0x003e, -+ 0x080c, 0xa942, 0x0518, 0x6014, 0x2068, 0x6020, 0x9086, 0x0003, -+ 0x1558, 0x3e08, 0x918e, 0x0002, 0x1180, 0x6010, 0x9005, 0x0168, -+ 0x9080, 0x0000, 0x2004, 0xd0bc, 0x0140, 0x6040, 0x9005, 0x1180, -+ 0x2001, 0x12c2, 0x2004, 0x6042, 0x0058, 0x6867, 0x0103, 0x6b7a, -+ 0x6877, 0x0000, 0x080c, 0x5b76, 0x080c, 0xab11, 0x080c, 0x8f09, -+ 0x000e, 0x0804, 0x7699, 0x7e3a, 0x7e36, 0x012e, 0x00fe, 0x00de, -+ 0x00ce, 0x006e, 0x000e, 0x0005, 0x6020, 0x9086, 0x0006, 0x1118, -+ 0x080c, 0xc0e9, 0x0c58, 0x6020, 0x9086, 0x000a, 0x0d00, 0x08e8, -+ 0x0016, 0x0026, 0x0086, 0x9046, 0x0099, 0x080c, 0x77c0, 0x008e, -+ 0x002e, 0x001e, 0x0005, 0x00f6, 0x0126, 0x2079, 0x1304, 0x2091, -+ 0x8000, 0x080c, 0x7851, 0x080c, 0x78c5, 0x012e, 0x00fe, 0x0005, -+ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0016, 0x0006, 0x0126, -+ 0x2091, 0x8000, 0x2071, 0x1304, 0x7614, 0x2660, 0x2678, 0x8cff, -+ 0x0904, 0x7796, 0x6010, 0x9080, 0x0028, 0x2004, 0x9206, 0x1904, -+ 0x7791, 0x88ff, 0x0120, 0x6054, 0x9106, 0x1904, 0x7791, 0x7024, -+ 0x9c06, 0x1550, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0508, 0x080c, -+ 0x7271, 0x080c, 0x85a2, 0x68c3, 0x0000, 0x080c, 0x8a7d, 0x7027, -+ 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, -+ 0x2001, 0x0100, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, 0x2069, -+ 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0020, -+ 0x6003, 0x0009, 0x630a, 0x04e8, 0x7014, 0x9c36, 0x1110, 0x660c, -+ 0x7616, 0x7010, 0x9c36, 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, -+ 0x7012, 0x0010, 0x7013, 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, -+ 0x0110, 0x7e0e, 0x0008, 0x2678, 0x600f, 0x0000, 0x6014, 0x2068, -+ 0x080c, 0xa942, 0x01b8, 0x6020, 0x9086, 0x0003, 0x1540, 0x6867, -+ 0x0103, 0x6b7a, 0x6877, 0x0000, 0x0016, 0x0036, 0x0086, 0x080c, -+ 0xac01, 0x080c, 0xc3c7, 0x080c, 0x5b76, 0x008e, 0x003e, 0x001e, -+ 0x080c, 0xab11, 0x080c, 0x8f09, 0x080c, 0x895e, 0x00ce, 0x0804, -+ 0x7717, 0x2c78, 0x600c, 0x2060, 0x0804, 0x7717, 0x012e, 0x000e, -+ 0x001e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6020, -+ 0x9086, 0x0006, 0x1158, 0x0016, 0x0036, 0x0086, 0x080c, 0xc3c7, -+ 0x080c, 0xc0e9, 0x008e, 0x003e, 0x001e, 0x08e0, 0x6020, 0x9086, -+ 0x0002, 0x1128, 0x6004, 0x9086, 0x0085, 0x0908, 0x0898, 0x6020, -+ 0x9086, 0x0005, 0x1978, 0x6004, 0x9086, 0x0085, 0x0d20, 0x0850, -+ 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, 0x9280, 0x1000, 0x2004, -+ 0x9065, 0x0904, 0x784d, 0x00f6, 0x00e6, 0x00d6, 0x0066, 0x2071, -+ 0x1304, 0x6654, 0x7018, 0x9c06, 0x1108, 0x761a, 0x701c, 0x9c06, -+ 0x1130, 0x86ff, 0x1118, 0x7018, 0x701e, 0x0008, 0x761e, 0x6058, -+ 0x907d, 0x0108, 0x7e56, 0x96ed, 0x0000, 0x0110, 0x2f00, 0x685a, -+ 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, -+ 0x080c, 0x554c, 0x0904, 0x7849, 0x7624, 0x86ff, 0x0904, 0x7838, -+ 0x9680, 0x0005, 0x2004, 0x9d06, 0x15d8, 0x00d6, 0x2069, 0x0100, -+ 0x68c0, 0x9005, 0x0560, 0x080c, 0x7271, 0x080c, 0x85a2, 0x68c3, -+ 0x0000, 0x080c, 0x8a7d, 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, -+ 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2401, -+ 0x9006, 0x080c, 0x2401, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, -+ 0x6827, 0x0001, 0x003e, 0x00de, 0x00c6, 0x603c, 0x9005, 0x0110, -+ 0x8001, 0x603e, 0x2660, 0x080c, 0x8f09, 0x00ce, 0x0048, 0x00de, -+ 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x77f0, -+ 0x8dff, 0x0158, 0x6867, 0x0103, 0x6b7a, 0x6877, 0x0000, 0x080c, -+ 0xac01, 0x080c, 0xc3c7, 0x080c, 0x5b76, 0x080c, 0x895e, 0x0804, -+ 0x77f0, 0x006e, 0x00de, 0x00ee, 0x00fe, 0x012e, 0x000e, 0x00ce, -+ 0x0005, 0x0006, 0x0066, 0x00c6, 0x00d6, 0x9036, 0x7814, 0x9065, -+ 0x0904, 0x78a5, 0x600c, 0x0006, 0x600f, 0x0000, 0x7824, 0x9c06, -+ 0x1558, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0508, 0x080c, 0x7271, -+ 0x080c, 0x85a2, 0x68c3, 0x0000, 0x080c, 0x8a7d, 0x7827, 0x0000, -+ 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, -+ 0x0100, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, 0x2069, 0x0100, -+ 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, 0x0028, 0x6003, -+ 0x0009, 0x630a, 0x2c30, 0x00b0, 0x6014, 0x2068, 0x080c, 0xa942, -+ 0x0168, 0x6020, 0x9086, 0x0003, 0x11b8, 0x6867, 0x0103, 0x6b7a, -+ 0x6877, 0x0000, 0x080c, 0x5b76, 0x080c, 0xab11, 0x080c, 0x8f09, -+ 0x080c, 0x895e, 0x000e, 0x0804, 0x7857, 0x7e16, 0x7e12, 0x00de, -+ 0x00ce, 0x006e, 0x000e, 0x0005, 0x6020, 0x9086, 0x0006, 0x1118, -+ 0x080c, 0xc0e9, 0x0c58, 0x6020, 0x9086, 0x0002, 0x1128, 0x6004, -+ 0x9086, 0x0085, 0x09d0, 0x0c10, 0x6020, 0x9086, 0x0005, 0x19f0, -+ 0x6004, 0x9086, 0x0085, 0x0d60, 0x08c8, 0x0006, 0x0066, 0x00c6, -+ 0x00d6, 0x7818, 0x9065, 0x0904, 0x7940, 0x6054, 0x0006, 0x9006, -+ 0x6056, 0x605a, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x080c, 0x554c, -+ 0x0904, 0x793d, 0x7e24, 0x86ff, 0x0904, 0x7930, 0x9680, 0x0005, -+ 0x2004, 0x9d06, 0x1904, 0x7930, 0x00d6, 0x2069, 0x0100, 0x68c0, -+ 0x9005, 0x05e8, 0x080c, 0x7271, 0x080c, 0x85a2, 0x68c3, 0x0000, -+ 0x080c, 0x8a7d, 0x7827, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, -+ 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, 0x2401, 0x9006, -+ 0x080c, 0x2401, 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, -+ 0x0001, 0x003e, 0x00de, 0x00c6, 0x3e08, 0x918e, 0x0002, 0x1168, -+ 0x6000, 0xd0bc, 0x0150, 0x9680, 0x0010, 0x200c, 0x81ff, 0x1508, -+ 0x2009, 0x12c2, 0x210c, 0x2102, 0x00e0, 0x603c, 0x9005, 0x0110, -+ 0x8001, 0x603e, 0x2660, 0x080c, 0x8f09, 0x00ce, 0x0048, 0x00de, -+ 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, 0x00ce, 0x0804, 0x78d6, -+ 0x8dff, 0x0138, 0x6867, 0x0103, 0x6b7a, 0x6877, 0x0000, 0x080c, -+ 0x5b76, 0x080c, 0x895e, 0x0804, 0x78d6, 0x000e, 0x0804, 0x78ca, -+ 0x781e, 0x781a, 0x00de, 0x00ce, 0x006e, 0x000e, 0x0005, 0x00e6, -+ 0x00d6, 0x0066, 0x6000, 0xd0dc, 0x01a0, 0x604c, 0x906d, 0x0188, -+ 0x6878, 0x9606, 0x1170, 0x2071, 0x1304, 0x7024, 0x9035, 0x0148, -+ 0x9080, 0x0005, 0x2004, 0x9d06, 0x1120, 0x6000, 0xc0dc, 0x6002, -+ 0x0021, 0x006e, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x2079, 0x0100, -+ 0x78c0, 0x9005, 0x1138, 0x00c6, 0x2660, 0x6003, 0x0009, 0x630a, -+ 0x00ce, 0x04b8, 0x080c, 0x85a2, 0x78c3, 0x0000, 0x080c, 0x8a7d, -+ 0x7027, 0x0000, 0x0036, 0x2079, 0x0140, 0x7b04, 0x9384, 0x1000, -+ 0x0138, 0x2001, 0x0100, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, -+ 0x2079, 0x0100, 0x7824, 0xd084, 0x0110, 0x7827, 0x0001, 0x080c, -+ 0x8a7d, 0x003e, 0x080c, 0x554c, 0x00c6, 0x603c, 0x9005, 0x0110, -+ 0x8001, 0x603e, 0x2660, 0x080c, 0x8ed9, 0x00ce, 0x6867, 0x0103, -+ 0x6b7a, 0x6877, 0x0000, 0x080c, 0xac01, 0x080c, 0x5b76, 0x080c, -+ 0x895e, 0x00fe, 0x0005, 0x00e6, 0x00c6, 0x2001, 0x110c, 0x2014, -+ 0xc2e4, 0x2202, 0x2071, 0x1304, 0x7004, 0x9084, 0x0007, 0x0002, -+ 0x79c2, 0x79c5, 0x79db, 0x7a03, 0x7a40, 0x79c2, 0x79c0, 0x79c0, -+ 0x080c, 0x0d7e, 0x00ce, 0x00ee, 0x0005, 0x7024, 0x9065, 0x0148, -+ 0x7020, 0x8001, 0x7022, 0x600c, 0x9015, 0x0150, 0x7216, 0x600f, -+ 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x0005, -+ 0x7216, 0x7212, 0x0cb0, 0x6010, 0x2060, 0x080c, 0x554c, 0x6000, -+ 0xc0dc, 0x6002, 0x7007, 0x0000, 0x7027, 0x0000, 0x7020, 0x8001, -+ 0x7022, 0x1140, 0x2001, 0x110c, 0x2014, 0xd2ec, 0x1178, 0x00ce, -+ 0x00ee, 0x0005, 0x6054, 0x9015, 0x0120, 0x721e, 0x080c, 0x7aa4, -+ 0x0cb0, 0x7218, 0x721e, 0x080c, 0x7aa4, 0x0c88, 0xc2ec, 0x2202, -+ 0x080c, 0x7b72, 0x0c60, 0x7024, 0x9065, 0x05b8, 0x700c, 0x9c06, -+ 0x1160, 0x080c, 0x895e, 0x600c, 0x9015, 0x0120, 0x720e, 0x600f, -+ 0x0000, 0x0448, 0x720e, 0x720a, 0x0430, 0x7014, 0x9c06, 0x1160, -+ 0x080c, 0x895e, 0x600c, 0x9015, 0x0120, 0x7216, 0x600f, 0x0000, -+ 0x00d0, 0x7216, 0x7212, 0x00b8, 0x6020, 0x9086, 0x0003, 0x1198, -+ 0x6010, 0x2060, 0x080c, 0x554c, 0x6000, 0xc0dc, 0x6002, 0x080c, -+ 0x895e, 0x701c, 0x9065, 0x0138, 0x6054, 0x9015, 0x0110, 0x721e, -+ 0x0010, 0x7218, 0x721e, 0x7027, 0x0000, 0x00ce, 0x00ee, 0x0005, -+ 0x7024, 0x9065, 0x0140, 0x080c, 0x895e, 0x600c, 0x9015, 0x0150, -+ 0x720e, 0x600f, 0x0000, 0x080c, 0x8a7d, 0x7027, 0x0000, 0x00ce, -+ 0x00ee, 0x0005, 0x720e, 0x720a, 0x0cb0, 0x00d6, 0x2069, 0x1304, -+ 0x6830, 0x9084, 0x0003, 0x0002, 0x7a62, 0x7a64, 0x7a88, 0x7a60, -+ 0x080c, 0x0d7e, 0x00de, 0x0005, 0x00c6, 0x6840, 0x9086, 0x0001, -+ 0x01b8, 0x683c, 0x9065, 0x0130, 0x600c, 0x9015, 0x0170, 0x6a3a, -+ 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x2011, 0x1323, -+ 0x2013, 0x0000, 0x00ce, 0x00de, 0x0005, 0x683a, 0x6836, 0x0c90, -+ 0x6843, 0x0000, 0x6838, 0x9065, 0x0d68, 0x6003, 0x0003, 0x0c50, -+ 0x00c6, 0x9006, 0x6842, 0x6846, 0x684a, 0x683c, 0x9065, 0x0160, -+ 0x600c, 0x9015, 0x0130, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, -+ 0x0018, 0x683e, 0x683a, 0x6836, 0x00ce, 0x00de, 0x0005, 0xc1e5, -+ 0x2001, 0x110c, 0x2102, 0x0005, 0x2001, 0x110c, 0x200c, 0xd1ec, -+ 0x0138, 0xc1ec, 0x2102, 0x080c, 0x7b72, 0x2001, 0x110c, 0x200c, -+ 0x9184, 0x0600, 0x9086, 0x0600, 0x0d50, 0x00d6, 0x2069, 0x1304, -+ 0x6804, 0x9084, 0x0007, 0x0002, 0x7ac6, 0x7b51, 0x7b51, 0x7b51, -+ 0x7b51, 0x7b53, 0x7ac4, 0x7ac4, 0x080c, 0x0d7e, 0x6820, 0x9005, -+ 0x1110, 0x00de, 0x0005, 0x00c6, 0x680c, 0x9065, 0x0150, 0x6807, -+ 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x7bb7, 0x00ce, 0x00de, -+ 0x0005, 0x6814, 0x9065, 0x0150, 0x6807, 0x0001, 0x6826, 0x682b, -+ 0x0000, 0x080c, 0x7bb7, 0x00ce, 0x00de, 0x0005, 0x00e6, 0x6a1c, -+ 0x92f5, 0x0000, 0x0904, 0x7b4e, 0x704c, 0x900d, 0x0118, 0x7088, -+ 0x9005, 0x01a0, 0x7054, 0x9075, 0x0120, 0x920e, 0x0904, 0x7b4e, -+ 0x0028, 0x6818, 0x920e, 0x0904, 0x7b4e, 0x2070, 0x704c, 0x900d, -+ 0x0d88, 0x7088, 0x9005, 0x1d70, 0x2e00, 0x681e, 0x733c, 0x7038, -+ 0x9302, 0x1e40, 0x080c, 0x8eb0, 0x0904, 0x7b4e, 0x8318, 0x733e, -+ 0x6116, 0x2e10, 0x6212, 0x9180, 0x0020, 0x2004, 0x9084, 0x00ff, -+ 0x605e, 0x9180, 0x0020, 0x2003, 0x0000, 0x9180, 0x0021, 0x2004, -+ 0x908a, 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, -+ 0x9318, 0x631a, 0x00f6, 0x2c78, 0x2061, 0x0100, 0x609b, 0x0000, -+ 0x00d6, 0x00e6, 0x2069, 0x0200, 0x2071, 0x0240, 0x080c, 0x81a1, -+ 0x00ee, 0x00de, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, -+ 0x6b26, 0x682b, 0x0000, 0x7823, 0x0003, 0x7803, 0x0001, 0x7807, -+ 0x0040, 0x00fe, 0x00ee, 0x00ce, 0x00de, 0x0005, 0x00ee, 0x00ce, -+ 0x0cd8, 0x00de, 0x0005, 0x00c6, 0x680c, 0x9065, 0x0138, 0x6807, -+ 0x0004, 0x6826, 0x682b, 0x0000, 0x080c, 0x7bb7, 0x00ce, 0x00de, -+ 0x0005, 0x2001, 0x110c, 0x2014, 0xc2ed, 0x2202, 0x00de, 0x00fe, -+ 0x0005, 0x2001, 0x110c, 0x2014, 0xd2e4, 0x0120, 0xc2e4, 0x2202, -+ 0x080c, 0x7ab5, 0x00f6, 0x00d6, 0x2069, 0x1304, 0x6830, 0x9086, -+ 0x0000, 0x11f0, 0x2001, 0x110c, 0x200c, 0xd1c4, 0x11e0, 0x6838, -+ 0x907d, 0x01b0, 0x6a04, 0x9296, 0x0000, 0x19d8, 0x6833, 0x0001, -+ 0x683e, 0x6847, 0x0000, 0x684b, 0x0000, 0x0126, 0x00f6, 0x2091, -+ 0x2400, 0x002e, 0x080c, 0x167d, 0x1178, 0x012e, 0x080c, 0x83f0, -+ 0x00de, 0x00fe, 0x0005, 0xc1c4, 0x2102, 0x0066, 0x2031, 0x0001, -+ 0x080c, 0x6380, 0x006e, 0x08d8, 0x012e, 0x6843, 0x0000, 0x7803, -+ 0x0002, 0x780c, 0x9015, 0x0140, 0x6a3a, 0x780f, 0x0000, 0x6833, -+ 0x0000, 0x683f, 0x0000, 0x0c20, 0x683a, 0x6836, 0x0cc0, 0x6020, -+ 0x9084, 0x000f, 0x000b, 0x0005, 0x7bcb, 0x7bd0, 0x8097, 0x8157, -+ 0x7bd0, 0x8097, 0x8157, 0x7bcb, 0x7bd0, 0x7bcb, 0x7bcb, 0x7bcb, -+ 0x7bcb, 0x7bcb, 0x7bcb, 0x080c, 0x79ab, 0x080c, 0x7aa4, 0x0005, -+ 0x0156, 0x0136, 0x0146, 0x01c6, 0x01d6, 0x00c6, 0x00d6, 0x00e6, -+ 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, 0x6004, 0x908a, 0x0053, -+ 0x1a0c, 0x0d7e, 0x6110, 0x2178, 0x79a0, 0x2011, 0x1136, 0x2214, -+ 0xd2ac, 0x1110, 0xd1bc, 0x0148, 0x7900, 0xd1f4, 0x0120, 0x7914, -+ 0x918c, 0x00ff, 0x0038, 0x900e, 0x0028, 0x91f8, 0x298c, 0x2f0d, -+ 0x918c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0x908a, 0x0040, -+ 0x1a04, 0x7c4f, 0x0053, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, -+ 0x01ce, 0x014e, 0x013e, 0x015e, 0x0005, 0x7dc3, 0x7e04, 0x7e33, -+ 0x7ee5, 0x7f08, 0x7f0e, 0x7f1c, 0x7f25, 0x7f32, 0x7f38, 0x7f4a, -+ 0x7f38, 0x7fa1, 0x7f25, 0x7fae, 0x7fb4, 0x7f32, 0x7fb4, 0x7fc1, -+ 0x7c4d, 0x7c4d, 0x7c4d, 0x7c4d, 0x7c4d, 0x7c4d, 0x7c4d, 0x7c4d, -+ 0x7c4d, 0x7c4d, 0x7c4d, 0x86e5, 0x86fc, 0x8707, 0x8728, 0x8757, -+ 0x7f1c, 0x7c4d, 0x7f1c, 0x7f38, 0x7c4d, 0x7e33, 0x7ee5, 0x7c4d, -+ 0x8b65, 0x7f38, 0x7c4d, 0x8b81, 0x7f38, 0x7c4d, 0x7f32, 0x7dbc, -+ 0x7c6f, 0x7c4d, 0x8b98, 0x8c05, 0x8cda, 0x7c4d, 0x8ce7, 0x7f19, -+ 0x8cfd, 0x7c4d, 0x8762, 0x8d37, 0x7c4d, 0x080c, 0x0d7e, 0x2100, -+ 0x0053, 0x00fe, 0x00ee, 0x00de, 0x00ce, 0x01de, 0x01ce, 0x014e, -+ 0x013e, 0x015e, 0x0005, 0x7c6d, 0x7c6d, 0x7c6d, 0x7c95, 0x7d39, -+ 0x7d49, 0x7c6d, 0x7c6d, 0x7c6d, 0x7d8e, 0x7d9d, 0x7caf, 0x7c6d, -+ 0x7cc9, 0x7cfa, 0x8de7, 0x8e2c, 0x7f38, 0x080c, 0x0d7e, 0x00d6, -+ 0x080c, 0x7fd5, 0x7003, 0x2414, 0x7007, 0x0018, 0x700b, 0x0800, -+ 0x7814, 0x2068, 0x683c, 0x700e, 0x6850, 0x7022, 0x6854, 0x7026, -+ 0x60c3, 0x0018, 0x080c, 0x8576, 0x00de, 0x0005, 0x00d6, 0x7810, -+ 0x2068, 0x68a0, 0x2069, 0x1100, 0x6ad8, 0xd2ac, 0x1110, 0xd0bc, -+ 0x0110, 0x9085, 0x0001, 0x00de, 0x0005, 0x00d6, 0x080c, 0x7fd5, -+ 0x7003, 0x0500, 0x7814, 0x90e8, 0x001b, 0x6808, 0x700a, 0x680c, -+ 0x700e, 0x6810, 0x7012, 0x6814, 0x7016, 0x6818, 0x701a, 0x681c, -+ 0x701e, 0x60c3, 0x0010, 0x080c, 0x8576, 0x00de, 0x0005, 0x00d6, -+ 0x080c, 0x7fd5, 0x7003, 0x0500, 0x7814, 0x90e8, 0x0031, 0x6808, -+ 0x700a, 0x680c, 0x700e, 0x6810, 0x7012, 0x6814, 0x7016, 0x6818, -+ 0x701a, 0x681c, 0x701e, 0x60c3, 0x0010, 0x080c, 0x8576, 0x00de, -+ 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x080c, 0x7fd5, 0x20e9, -+ 0x0000, 0x20e1, 0x0001, 0x2001, 0x12dd, 0x2003, 0x0000, 0x7814, -+ 0x2068, 0x6814, 0x8003, 0x60c2, 0x6830, 0x20a8, 0x9d80, 0x001b, -+ 0x2098, 0x2001, 0x12dd, 0x0016, 0x200c, 0x2001, 0x0001, 0x080c, -+ 0x1b4c, 0x080c, 0xb539, 0x9006, 0x080c, 0x1b4c, 0x001e, 0x6804, -+ 0x9005, 0x0110, 0x2068, 0x0c40, 0x04b9, 0x080c, 0x8576, 0x012e, -+ 0x00de, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x080c, 0x804b, -+ 0x20e9, 0x0000, 0x20e1, 0x0001, 0x2001, 0x12dd, 0x2003, 0x0000, -+ 0x7814, 0x2068, 0x686f, 0x0200, 0x6873, 0x0000, 0x6814, 0x8003, -+ 0x60c2, 0x6830, 0x20a8, 0x9d80, 0x001b, 0x2098, 0x2001, 0x12dd, -+ 0x0016, 0x200c, 0x080c, 0xb539, 0x001e, 0x6804, 0x9005, 0x0110, -+ 0x2068, 0x0c78, 0x0049, 0x7814, 0x2068, 0x080c, 0x0edf, 0x080c, -+ 0x8576, 0x012e, 0x00de, 0x0005, 0x60c0, 0x8004, 0x9084, 0x0003, -+ 0x9005, 0x0130, 0x9082, 0x0004, 0x20a3, 0x0000, 0x8000, 0x1de0, -+ 0x0005, 0x080c, 0x7fd5, 0x7003, 0x7800, 0x7007, 0x0000, 0x7808, -+ 0x8007, 0x700a, 0x700f, 0x0000, 0x60c3, 0x0008, 0x080c, 0x8576, -+ 0x0005, 0x00d6, 0x00e6, 0x080c, 0x804b, 0x2073, 0x0200, 0x8e70, -+ 0x2073, 0x0000, 0x8e70, 0x2073, 0xdf10, 0x8e70, 0x2073, 0x0034, -+ 0x8e70, 0x2069, 0x1105, 0x20a9, 0x0004, 0x2d76, 0x8d68, 0x8e70, -+ 0x1f04, 0x7d5d, 0x2069, 0x1101, 0x20a9, 0x0004, 0x2d76, 0x8d68, -+ 0x8e70, 0x1f04, 0x7d66, 0x2069, 0x12ea, 0x20a9, 0x001a, 0x9e86, -+ 0x0260, 0x1148, 0x00c6, 0x2061, 0x0200, 0x6010, 0x8000, 0x6012, -+ 0x00ce, 0x2071, 0x0240, 0x2d04, 0x8007, 0x2072, 0x8d68, 0x8e70, -+ 0x1f04, 0x7d6f, 0x2073, 0x0000, 0x8e70, 0x2073, 0x0000, 0x60c3, -+ 0x004c, 0x080c, 0x8576, 0x00ee, 0x00de, 0x0005, 0x080c, 0x7fd5, -+ 0x7003, 0x6300, 0x7007, 0x0028, 0x700b, 0x0000, 0x7808, 0x700e, -+ 0x60c3, 0x0008, 0x080c, 0x8576, 0x0005, 0x00d6, 0x0026, 0x0016, -+ 0x080c, 0x804b, 0x7003, 0x0200, 0x7814, 0x700e, 0x00e6, 0x9ef0, -+ 0x0004, 0x2009, 0x0001, 0x2011, 0x000c, 0x2073, 0x0800, 0x8e70, -+ 0x2073, 0x0000, 0x00ee, 0x7206, 0x710a, 0x62c2, 0x080c, 0x8576, -+ 0x001e, 0x002e, 0x00de, 0x0005, 0x2001, 0x1116, 0x2004, 0x609a, -+ 0x080c, 0x8576, 0x0005, 0x080c, 0x7fd5, 0x7003, 0x5200, 0x2069, -+ 0x1152, 0x6804, 0xd084, 0x0130, 0x6828, 0x0016, 0x080c, 0x1f77, -+ 0x710e, 0x001e, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1105, -+ 0x20e9, 0x0000, 0x20a1, 0x0250, 0x4003, 0x20a9, 0x0004, 0x2099, -+ 0x1101, 0x20a1, 0x0254, 0x4003, 0x2001, 0x1136, 0x2004, 0xd0ac, -+ 0x1138, 0x7810, 0x9080, 0x0028, 0x2004, 0x9082, 0x007f, 0x0248, -+ 0x2001, 0x111d, 0x2004, 0x7032, 0x2001, 0x111e, 0x2004, 0x7036, -+ 0x0030, 0x2001, 0x1116, 0x2004, 0x9084, 0x00ff, 0x7036, 0x60c3, -+ 0x001c, 0x080c, 0x8576, 0x0005, 0x080c, 0x7fd5, 0x7003, 0x0500, -+ 0x2001, 0x1136, 0x2004, 0xd0ac, 0x1138, 0x7810, 0x9080, 0x0028, -+ 0x2004, 0x9082, 0x007f, 0x0248, 0x2001, 0x111d, 0x2004, 0x700a, -+ 0x2001, 0x111e, 0x2004, 0x700e, 0x0030, 0x2001, 0x1116, 0x2004, -+ 0x9084, 0x00ff, 0x700e, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, -+ 0x1105, 0x20e9, 0x0000, 0x20a1, 0x0250, 0x4003, 0x60c3, 0x0010, -+ 0x080c, 0x8576, 0x0005, 0x080c, 0x7fd5, 0x00c6, 0x7810, 0x2060, -+ 0x9006, 0x080c, 0x5898, 0x00ce, 0x7810, 0x9080, 0x0028, 0x2004, -+ 0x9086, 0x007e, 0x1130, 0x7003, 0x0400, 0x620c, 0xc2b4, 0x620e, -+ 0x0068, 0x7814, 0x00d6, 0x906d, 0x0130, 0x689b, 0x0000, 0x68a7, -+ 0x0000, 0x68ab, 0x0000, 0x00de, 0x7003, 0x0300, 0x7810, 0x9080, -+ 0x0028, 0x2004, 0x9086, 0x007e, 0x1904, 0x7eab, 0x00d6, 0x2069, -+ 0x1297, 0x2001, 0x1136, 0x2004, 0xd0a4, 0x0178, 0x6800, 0x700a, -+ 0x6808, 0x9084, 0x2000, 0x7012, 0x680c, 0x7016, 0x701f, 0x2710, -+ 0x6818, 0x7022, 0x681c, 0x7026, 0x0080, 0x6800, 0x700a, 0x6804, -+ 0x700e, 0x6808, 0x080c, 0x62e4, 0x1118, 0x9084, 0x37ff, 0x0010, -+ 0x9084, 0x3fff, 0x7012, 0x680c, 0x7016, 0x00de, 0x20a9, 0x0004, -+ 0x20e1, 0x0001, 0x2099, 0x1105, 0x20e9, 0x0000, 0x20a1, 0x0256, -+ 0x4003, 0x20a9, 0x0004, 0x2099, 0x1101, 0x20a1, 0x025a, 0x4003, -+ 0x00d6, 0x080c, 0x8dae, 0x2069, 0x129f, 0x2071, 0x024e, 0x6800, -+ 0xc0dd, 0x7002, 0x2001, 0x1172, 0x2004, 0xd0e4, 0x0110, 0x680c, -+ 0x700e, 0x00de, 0x04a8, 0x2001, 0x1136, 0x2004, 0xd0a4, 0x0170, -+ 0x0016, 0x2001, 0x1298, 0x200c, 0x60e0, 0x9106, 0x0130, 0x2100, -+ 0x60e3, 0x0000, 0x080c, 0x1fb8, 0x61e2, 0x001e, 0x20e1, 0x0001, -+ 0x2099, 0x1297, 0x20e9, 0x0000, 0x20a1, 0x024e, 0x20a9, 0x0008, -+ 0x4003, 0x20a9, 0x0004, 0x2099, 0x1105, 0x20a1, 0x0256, 0x4003, -+ 0x20a9, 0x0004, 0x2099, 0x1101, 0x20a1, 0x025a, 0x4003, 0x080c, -+ 0x8dae, 0x20a1, 0x024e, 0x20a9, 0x0008, 0x2099, 0x129f, 0x4003, -+ 0x60c3, 0x0074, 0x080c, 0x8576, 0x0005, 0x080c, 0x7fd5, 0x7003, -+ 0x2010, 0x7007, 0x0014, 0x700b, 0x0800, 0x700f, 0x2000, 0x9006, -+ 0x00f6, 0x2079, 0x1152, 0x7904, 0x00fe, 0xd1ac, 0x1110, 0x9085, -+ 0x0020, 0xd1a4, 0x0110, 0x9085, 0x0010, 0x9085, 0x0002, 0x00d6, -+ 0x0804, 0x7f85, 0x7026, 0x60c3, 0x0014, 0x080c, 0x8576, 0x0005, -+ 0x080c, 0x7fd5, 0x7003, 0x5000, 0x0804, 0x7e56, 0x080c, 0x7fd5, -+ 0x7003, 0x2110, 0x7007, 0x0014, 0x60c3, 0x0014, 0x080c, 0x8576, -+ 0x0005, 0x080c, 0x8042, 0x0010, 0x080c, 0x804b, 0x7003, 0x0200, -+ 0x60c3, 0x0004, 0x080c, 0x8576, 0x0005, 0x080c, 0x804b, 0x7003, -+ 0x0100, 0x700b, 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x080c, -+ 0x8576, 0x0005, 0x080c, 0x804b, 0x7003, 0x0200, 0x0804, 0x7e56, -+ 0x080c, 0x804b, 0x7003, 0x0100, 0x782c, 0x9005, 0x0110, 0x700a, -+ 0x0010, 0x700b, 0x0003, 0x7814, 0x700e, 0x60c3, 0x0008, 0x080c, -+ 0x8576, 0x0005, 0x00d6, 0x080c, 0x804b, 0x7003, 0x0210, 0x7007, -+ 0x0014, 0x700b, 0x0800, 0x7810, 0x2068, 0x6894, 0x9086, 0x0014, -+ 0x1198, 0x699c, 0x9184, 0x0030, 0x0190, 0x6998, 0x9184, 0xc000, -+ 0x1140, 0xd1ec, 0x0118, 0x700f, 0x2100, 0x0058, 0x700f, 0x0100, -+ 0x0040, 0x700f, 0x0400, 0x0028, 0x700f, 0x0700, 0x0010, 0x700f, -+ 0x0800, 0x00f6, 0x2079, 0x1152, 0x7904, 0x00fe, 0xd1ac, 0x1110, -+ 0x9085, 0x0020, 0xd1a4, 0x0110, 0x9085, 0x0010, 0x2009, 0x1174, -+ 0x210c, 0xd184, 0x1110, 0x9085, 0x0002, 0x0026, 0x2009, 0x1172, -+ 0x210c, 0xd1e4, 0x0130, 0xc0c5, 0x9094, 0x0030, 0x9296, 0x0010, -+ 0x0140, 0xd1ec, 0x0130, 0x9094, 0x0030, 0x9296, 0x0010, 0x0108, -+ 0xc0bd, 0x002e, 0x7026, 0x60c3, 0x0014, 0x00de, 0x080c, 0x8576, -+ 0x0005, 0x080c, 0x804b, 0x7003, 0x0210, 0x7007, 0x0014, 0x700f, -+ 0x0100, 0x60c3, 0x0014, 0x080c, 0x8576, 0x0005, 0x080c, 0x804b, -+ 0x7003, 0x0200, 0x0804, 0x7dc7, 0x080c, 0x804b, 0x7003, 0x0100, -+ 0x700b, 0x0003, 0x700f, 0x2a00, 0x60c3, 0x0008, 0x080c, 0x8576, -+ 0x0005, 0x080c, 0x804b, 0x7003, 0x0100, 0x700b, 0x000b, 0x60c3, -+ 0x0008, 0x080c, 0x8576, 0x0005, 0x0026, 0x00d6, 0x0036, 0x0046, -+ 0x2019, 0x3200, 0x2021, 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036, -+ 0x0046, 0x2019, 0x2200, 0x2021, 0x0100, 0x080c, 0x8dc3, 0x7810, -+ 0x2068, 0x6810, 0x9305, 0x7002, 0x6814, 0x7006, 0x6aa0, 0x2069, -+ 0x1100, 0x6858, 0x700e, 0x9286, 0x007e, 0x1168, 0x9385, 0x00ff, -+ 0x7002, 0x7007, 0xfffe, 0x2001, 0x12a7, 0x2004, 0x9005, 0x01e8, -+ 0x6a78, 0x720e, 0x00d0, 0x9286, 0x007f, 0x1130, 0x9385, 0x00ff, -+ 0x7002, 0x7007, 0xfffd, 0x0068, 0x68d8, 0xd0ac, 0x1110, 0xd2bc, -+ 0x0160, 0x9286, 0x0080, 0x1128, 0x9385, 0x00ff, 0x7002, 0x7007, -+ 0xfffc, 0x6874, 0x700a, 0x6878, 0x700e, 0x9485, 0x0029, 0x7012, -+ 0x004e, 0x003e, 0x00de, 0x080c, 0x8565, 0x721a, 0x9f95, 0x0000, -+ 0x7222, 0x7027, 0xffff, 0x2071, 0x024c, 0x002e, 0x0005, 0x0026, -+ 0x080c, 0x8dc3, 0x7003, 0x02ff, 0x7007, 0xfffc, 0x00d6, 0x2069, -+ 0x1100, 0x6874, 0x700a, 0x6878, 0x700e, 0x00de, 0x7013, 0x2029, -+ 0x0c10, 0x7003, 0x0100, 0x7007, 0x0000, 0x700b, 0xfc02, 0x700f, -+ 0x0000, 0x0005, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, 0x3300, -+ 0x2021, 0x0800, 0x0040, 0x0026, 0x00d6, 0x0036, 0x0046, 0x2019, -+ 0x2300, 0x2021, 0x0100, 0x080c, 0x8dc3, 0x7810, 0x2068, 0x6810, -+ 0x9305, 0x7002, 0x6814, 0x7006, 0x68a0, 0x2069, 0x1100, 0x6a58, -+ 0x720e, 0x6ad8, 0xd2ac, 0x1118, 0x9092, 0x007e, 0x02a0, 0x7810, -+ 0x00c6, 0x2060, 0x6010, 0x9005, 0x1140, 0x6014, 0x9005, 0x1128, -+ 0x700b, 0x00ff, 0x700f, 0xfffe, 0x0020, 0x6874, 0x700a, 0x6878, -+ 0x700e, 0x00ce, 0x0000, 0x9485, 0x0098, 0x7012, 0x004e, 0x003e, -+ 0x00de, 0x080c, 0x8565, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, -+ 0x2071, 0x024c, 0x002e, 0x0005, 0x080c, 0x8565, 0x721a, 0x7a08, -+ 0x7222, 0x7814, 0x7026, 0x2071, 0x024c, 0x002e, 0x0005, 0x00c6, -+ 0x00d6, 0x00e6, 0x00f6, 0x2069, 0x0200, 0x2071, 0x0240, 0x6004, -+ 0x908a, 0x0085, 0x0a0c, 0x0d7e, 0x908a, 0x0092, 0x1a0c, 0x0d7e, -+ 0x6110, 0x2178, 0x79a0, 0x2011, 0x1136, 0x2214, 0xd2ac, 0x1110, -+ 0xd1bc, 0x0148, 0x7900, 0xd1f4, 0x0120, 0x7914, 0x918c, 0x00ff, -+ 0x0038, 0x900e, 0x0028, 0x91f8, 0x298c, 0x2f0d, 0x918c, 0x00ff, -+ 0x2c78, 0x2061, 0x0100, 0x619a, 0x9082, 0x0085, 0x002b, 0x00fe, -+ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x80db, 0x80e1, 0x80ed, 0x80d9, -+ 0x80d9, 0x80d9, 0x80db, 0x80d9, 0x80d9, 0x80d9, 0x80d9, 0x80d9, -+ 0x80d9, 0x080c, 0x0d7e, 0x00e1, 0x60c3, 0x0000, 0x080c, 0x8576, -+ 0x0005, 0x04a9, 0x7808, 0x700a, 0x7814, 0x700e, 0x7017, 0xffff, -+ 0x60c3, 0x000c, 0x080c, 0x8576, 0x0005, 0x080c, 0x8137, 0x7003, -+ 0x0003, 0x7007, 0x0300, 0x60c3, 0x0004, 0x080c, 0x8576, 0x0005, -+ 0x0026, 0x080c, 0x8dc3, 0x7810, 0x2068, 0x6810, 0x9085, 0x8100, -+ 0x7002, 0x6814, 0x7006, 0x68a0, 0x2069, 0x1100, 0x6ad8, 0xd2ac, -+ 0x1118, 0x9092, 0x007e, 0x0240, 0x6874, 0x700a, 0x6878, 0x700e, -+ 0x7013, 0x0009, 0x0804, 0x801b, 0x6a58, 0x720e, 0x0cc8, 0x0026, -+ 0x080c, 0x8dc3, 0x7810, 0x2068, 0x6810, 0x9085, 0x8400, 0x7002, -+ 0x6814, 0x7006, 0x68a0, 0x2069, 0x1100, 0x6ad8, 0xd2ac, 0x1118, -+ 0x9092, 0x007e, 0x0248, 0x6874, 0x700a, 0x6878, 0x700e, 0x2001, -+ 0x0099, 0x7012, 0x0804, 0x808c, 0x6a58, 0x720e, 0x0cc0, 0x0026, -+ 0x080c, 0x8dc3, 0x7810, 0x2068, 0x6810, 0x9085, 0x8500, 0x7002, -+ 0x6814, 0x7006, 0x68a0, 0x2069, 0x1100, 0x6ad8, 0xd2ac, 0x1118, -+ 0x9092, 0x007e, 0x0248, 0x6874, 0x700a, 0x6878, 0x700e, 0x2001, -+ 0x0099, 0x7012, 0x0804, 0x808c, 0x6a58, 0x720e, 0x0cc0, 0x00c6, -+ 0x00d6, 0x00e6, 0x00f6, 0x2c78, 0x2069, 0x0200, 0x2071, 0x0240, -+ 0x7804, 0x908a, 0x0040, 0x0a0c, 0x0d7e, 0x908a, 0x0054, 0x1a0c, -+ 0x0d7e, 0x7910, 0x2160, 0x61a0, 0x2011, 0x1136, 0x2214, 0xd2ac, -+ 0x1110, 0xd1bc, 0x0148, 0x6100, 0xd1f4, 0x0120, 0x6114, 0x918c, -+ 0x00ff, 0x0038, 0x900e, 0x0028, 0x91e0, 0x298c, 0x2c0d, 0x918c, -+ 0x00ff, 0x2061, 0x0100, 0x619a, 0x9082, 0x0040, 0x002b, 0x00fe, -+ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x81a1, 0x825f, 0x8226, 0x8391, -+ 0x819f, 0x819f, 0x819f, 0x819f, 0x819f, 0x819f, 0x819f, 0x893a, -+ 0x8942, 0x894a, 0x8952, 0x819f, 0x8d0a, 0x819f, 0x8932, 0x080c, -+ 0x0d7e, 0x780b, 0xffff, 0x080c, 0x81f4, 0x7914, 0x2168, 0x6978, -+ 0x7956, 0x7132, 0x697c, 0x9184, 0x000f, 0x1118, 0x2001, 0x0005, -+ 0x0040, 0xd184, 0x0118, 0x2001, 0x0004, 0x0018, 0x9084, 0x0006, -+ 0x8004, 0x2010, 0x785c, 0x9084, 0x00ff, 0x8007, 0x9205, 0x7042, -+ 0xd1ac, 0x0128, 0x7047, 0x0002, 0x080c, 0x137e, 0x0050, 0xd1b4, -+ 0x0118, 0x7047, 0x0001, 0x0028, 0x7047, 0x0000, 0x9016, 0x2230, -+ 0x0010, 0x6ab0, 0x6eac, 0x726a, 0x766e, 0x20a9, 0x0008, 0x20e9, -+ 0x0000, 0x9d88, 0x0023, 0x20e1, 0x0001, 0x2198, 0x20a1, 0x0252, -+ 0x2069, 0x0200, 0x6813, 0x0018, 0x4003, 0x6813, 0x0008, 0x60c3, -+ 0x0020, 0x6017, 0x0009, 0x2001, 0x1320, 0x2003, 0x07d0, 0x2001, -+ 0x131f, 0x2003, 0x0009, 0x0005, 0x00d6, 0x6813, 0x0008, 0x7a10, -+ 0x2268, 0x6a8c, 0x8210, 0x9294, 0x00ff, 0x6a8e, 0x8217, 0x721a, -+ 0x6a10, 0x9295, 0x0600, 0x7202, 0x6a14, 0x7206, 0x68a0, 0x6900, -+ 0x2069, 0x1100, 0x6bd8, 0xd3ac, 0x1138, 0xd0bc, 0x0188, 0xd1f4, -+ 0x0118, 0x9294, 0x00ff, 0x629a, 0x6a74, 0x720a, 0x6a78, 0x720e, -+ 0x7013, 0x0829, 0x2f10, 0x7222, 0x7027, 0xffff, 0x00de, 0x0005, -+ 0x9294, 0x00ff, 0x629a, 0x6a58, 0x720e, 0x0c90, 0x00d6, 0x0081, -+ 0x7814, 0x2068, 0x6890, 0x7002, 0x688c, 0x7006, 0x68b0, 0x700a, -+ 0x68ac, 0x700e, 0x60c3, 0x000c, 0x00de, 0x080c, 0x8576, 0x0005, -+ 0x00d6, 0x6813, 0x0008, 0x7810, 0x2068, 0x6810, 0x9085, 0x0500, -+ 0x7002, 0x6814, 0x7006, 0x68a0, 0x2069, 0x1100, 0x6ad8, 0xd2ac, -+ 0x1110, 0xd0bc, 0x0188, 0x6874, 0x700a, 0x6878, 0x700e, 0x7013, -+ 0x0889, 0x080c, 0x8565, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, -+ 0x2071, 0x024c, 0x00de, 0x0005, 0x6a58, 0x720e, 0x0c80, 0x00d6, -+ 0x080c, 0x8364, 0x7814, 0x2068, 0x9084, 0xf000, 0x1130, 0x7814, -+ 0x9084, 0x0700, 0x8007, 0x002b, 0x0010, 0x9006, 0x0013, 0x00de, -+ 0x0005, 0x827b, 0x82e8, 0x82f8, 0x831f, 0x832c, 0x833e, 0x8346, -+ 0x8279, 0x080c, 0x0d7e, 0x0016, 0x0036, 0x697c, 0x918c, 0x0003, -+ 0x0118, 0x9186, 0x0003, 0x11a0, 0x6ba8, 0x7824, 0xd0cc, 0x1170, -+ 0x7316, 0x6898, 0x701a, 0x6894, 0x701e, 0x003e, 0x001e, 0x2001, -+ 0x12e8, 0x2004, 0x60c2, 0x080c, 0x8576, 0x0005, 0xc3e5, 0x0c80, -+ 0x9186, 0x0001, 0x190c, 0x0d7e, 0x6ba8, 0x7824, 0xd0cc, 0x1904, -+ 0x82e5, 0x7316, 0x6898, 0x701a, 0x6894, 0x701e, 0x68a4, 0x7026, -+ 0x68ac, 0x702e, 0x2009, 0x0018, 0x9384, 0x0300, 0x0580, 0xd3c4, -+ 0x0110, 0x68ac, 0x9108, 0xd3cc, 0x0110, 0x68a4, 0x9108, 0x2011, -+ 0x0258, 0x0156, 0x20a9, 0x0008, 0x9d80, 0x002c, 0x201c, 0x831f, -+ 0x2312, 0x8000, 0x8210, 0x1f04, 0x82be, 0x0016, 0x00d6, 0x2069, -+ 0x0200, 0x080c, 0x8dae, 0x00de, 0x001e, 0x2011, 0x0240, 0x20a9, -+ 0x0005, 0x201c, 0x831f, 0x2312, 0x8000, 0x8210, 0x1f04, 0x82d1, -+ 0x015e, 0x9184, 0x0003, 0x0118, 0x2019, 0x0245, 0x201a, 0x61c2, -+ 0x003e, 0x001e, 0x080c, 0x8576, 0x0005, 0xc3e5, 0x0804, 0x82a1, -+ 0x2011, 0x0008, 0x2001, 0x110e, 0x2004, 0xd0a4, 0x0110, 0x2011, -+ 0x0028, 0x7824, 0xd0cc, 0x1110, 0x7216, 0x0478, 0x0ce8, 0xc2e5, -+ 0x2011, 0x0302, 0x0016, 0x782c, 0x701a, 0x7930, 0x711e, 0x9105, -+ 0x0108, 0xc2dd, 0x001e, 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, -+ 0x7027, 0x0012, 0x702f, 0x0008, 0x7043, 0x7000, 0x7047, 0x0500, -+ 0x704f, 0x000a, 0x2069, 0x0200, 0x6813, 0x0009, 0x2071, 0x0240, -+ 0x700b, 0x2500, 0x60c3, 0x0032, 0x080c, 0x8576, 0x0005, 0x2011, -+ 0x0028, 0x7824, 0xd0cc, 0x1130, 0x7216, 0x60c3, 0x0018, 0x080c, -+ 0x8576, 0x0005, 0x0cc8, 0xc2e5, 0x2011, 0x0100, 0x7824, 0xd0cc, -+ 0x0108, 0xc2e5, 0x7216, 0x702f, 0x0008, 0x7858, 0x9084, 0x00ff, -+ 0x7036, 0x60c3, 0x0020, 0x080c, 0x8576, 0x0005, 0x2011, 0x0008, -+ 0x7824, 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x08f8, 0x0036, 0x7b14, -+ 0x9384, 0xff00, 0x7816, 0x9384, 0x00ff, 0x8001, 0x1138, 0x7824, -+ 0xd0cc, 0x0108, 0xc2e5, 0x7216, 0x003e, 0x0878, 0x0046, 0x2021, -+ 0x0800, 0x0006, 0x7824, 0xd0cc, 0x000e, 0x0108, 0xc4e5, 0x7416, -+ 0x004e, 0x701e, 0x003e, 0x0808, 0x00d6, 0x6813, 0x0008, 0x7a10, -+ 0x2268, 0x6810, 0x9085, 0x0700, 0x7002, 0x6814, 0x7006, 0x68a0, -+ 0x2069, 0x1100, 0x6ad8, 0xd2ac, 0x1110, 0xd0bc, 0x01a0, 0x6874, -+ 0x700a, 0x6878, 0x700e, 0x7824, 0xd0cc, 0x1180, 0x7013, 0x0898, -+ 0x080c, 0x8565, 0x721a, 0x7a08, 0x7222, 0x2f10, 0x7226, 0x2071, -+ 0x024c, 0x00de, 0x0005, 0x6a58, 0x720e, 0x0c68, 0x7013, 0x0889, -+ 0x0c78, 0x0016, 0x7814, 0x9084, 0x0700, 0x8007, 0x0013, 0x001e, -+ 0x0005, 0x83a1, 0x83a1, 0x83a3, 0x83a1, 0x83a1, 0x83a1, 0x83c0, -+ 0x83a1, 0x080c, 0x0d7e, 0x7914, 0x918c, 0xf8ff, 0x918d, 0x0600, -+ 0x7916, 0x2009, 0x0003, 0x00d1, 0x00d6, 0x2069, 0x1152, 0x6804, -+ 0xd0bc, 0x0130, 0x682c, 0x9084, 0x00ff, 0x8007, 0x7032, 0x0010, -+ 0x7033, 0x3f00, 0x00de, 0x60c3, 0x0001, 0x080c, 0x8576, 0x0005, -+ 0x2009, 0x0003, 0x0019, 0x7033, 0x7f00, 0x0ca8, 0x00d6, 0x0016, -+ 0x080c, 0x8dc3, 0x001e, 0x7810, 0x2068, 0x6810, 0x9085, 0x0100, -+ 0x7002, 0x6814, 0x7006, 0x68a0, 0x2069, 0x1100, 0x6ad8, 0xd2ac, -+ 0x1110, 0xd0bc, 0x0190, 0x6a74, 0x720a, 0x6a78, 0x720e, 0x7013, -+ 0x0888, 0x918d, 0x0008, 0x7116, 0x080c, 0x8565, 0x721a, 0x7a08, -+ 0x7222, 0x2f10, 0x7226, 0x00de, 0x0005, 0x6a58, 0x720e, 0x0c78, -+ 0x00e6, 0x00d6, 0x00c6, 0x0056, 0x0046, 0x0036, 0x2061, 0x0100, -+ 0x2071, 0x1100, 0x7158, 0x7810, 0x2068, 0x68a0, 0x2028, 0x6910, -+ 0x6a14, 0x76d8, 0xd6ac, 0x1128, 0xd0bc, 0x1118, 0x901e, 0x7458, -+ 0x0010, 0x7374, 0x7478, 0x7820, 0x90be, 0x0006, 0x0904, 0x84dd, -+ 0x90be, 0x000a, 0x1904, 0x8496, 0x609f, 0x0000, 0x7814, 0x2070, -+ 0x707c, 0xd0fc, 0x0904, 0x845d, 0x7790, 0x9784, 0xff00, 0x9105, -+ 0x6062, 0x873f, 0x9784, 0xff00, 0x0006, 0x7814, 0x9080, 0x001e, -+ 0x2004, 0x9005, 0x000e, 0x1160, 0x7794, 0x87ff, 0x0548, 0x2039, -+ 0x0098, 0x9705, 0x6072, 0x7808, 0x6082, 0x2f00, 0x6086, 0x0470, -+ 0x9185, 0x2200, 0x6062, 0x6073, 0x0129, 0x6077, 0x0000, 0x609f, -+ 0x0000, 0x2001, 0x1136, 0x2004, 0x9084, 0x0020, 0x11d8, 0x2001, -+ 0x1136, 0x2004, 0x9084, 0x0008, 0x0140, 0x7814, 0x9080, 0x001d, -+ 0x2004, 0x8007, 0x9082, 0x0080, 0x1268, 0x6814, 0x609e, 0x0050, -+ 0x2039, 0x0029, 0x9705, 0x6072, 0x0028, 0x9185, 0x0200, 0x6062, -+ 0x6073, 0x2029, 0x2f00, 0x6082, 0x7808, 0x6086, 0x6266, 0x636a, -+ 0x646e, 0x6077, 0x0000, 0x688c, 0x8000, 0x9084, 0x00ff, 0x688e, -+ 0x8007, 0x607a, 0x607f, 0x0000, 0x7038, 0x608a, 0x7034, 0x608e, -+ 0x7048, 0x60c6, 0x7044, 0x60ca, 0x686c, 0x60ce, 0x60af, 0x95d5, -+ 0x60d7, 0x0000, 0x080c, 0x8da8, 0x2009, 0x07d0, 0x60c4, 0x9084, -+ 0xfff0, 0x9005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7276, 0x003e, -+ 0x004e, 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x9185, 0x0100, -+ 0x6062, 0x6266, 0x636a, 0x646e, 0x6073, 0x0809, 0x6077, 0x0008, -+ 0x60af, 0x95d5, 0x60d7, 0x0000, 0x688c, 0x8000, 0x9084, 0x00ff, -+ 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, -+ 0x6086, 0x7814, 0x2070, 0x7038, 0x608a, 0x7034, 0x608e, 0x7048, -+ 0x60c6, 0x7044, 0x60ca, 0x686c, 0x60ce, 0x9582, 0x0080, 0x0240, -+ 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0x9294, 0x00ff, 0x0008, 0x9016, -+ 0x629e, 0x080c, 0x8da8, 0x2009, 0x07d0, 0x60c4, 0x9084, 0xfff0, -+ 0x9005, 0x0110, 0x2009, 0x1b58, 0x080c, 0x7276, 0x003e, 0x004e, -+ 0x005e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x7814, 0x2070, 0x707c, -+ 0x9084, 0x0003, 0x9086, 0x0002, 0x05e8, 0x9185, 0x0100, 0x6062, -+ 0x6266, 0x636a, 0x646e, 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, -+ 0x8000, 0x9084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x7838, 0x607e, -+ 0x2f00, 0x6086, 0x7808, 0x6082, 0x7090, 0x608a, 0x708c, 0x608e, -+ 0x70b0, 0x60c6, 0x70ac, 0x60ca, 0x70ac, 0x7930, 0x9108, 0x7932, -+ 0x70b0, 0x792c, 0x9109, 0x792e, 0x686c, 0x60ce, 0x60af, 0x95d5, -+ 0x60d7, 0x0000, 0x9582, 0x0080, 0x0240, 0x6a00, 0xd2f4, 0x0120, -+ 0x6a14, 0x9294, 0x00ff, 0x0008, 0x9016, 0x629e, 0x080c, 0x8d83, -+ 0x0804, 0x84cb, 0x9185, 0x0700, 0x6062, 0x6266, 0x636a, 0x646e, -+ 0x7824, 0xd0cc, 0x7826, 0x0118, 0x6073, 0x0889, 0x0010, 0x6073, -+ 0x0898, 0x6077, 0x0000, 0x688c, 0x8000, 0x9084, 0x00ff, 0x688e, -+ 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, -+ 0x7038, 0x608a, 0x7034, 0x608e, 0x7048, 0x60c6, 0x7044, 0x60ca, -+ 0x686c, 0x60ce, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x9582, 0x0080, -+ 0x0240, 0x6a00, 0xd2f4, 0x0120, 0x6a14, 0x9294, 0x00ff, 0x0008, -+ 0x9016, 0x629e, 0x7824, 0xd0cc, 0x0120, 0x080c, 0x8da8, 0x0804, -+ 0x84cb, 0x080c, 0x8d83, 0x0804, 0x84cb, 0x7a10, 0x9280, 0x0023, -+ 0x2014, 0x8210, 0x9294, 0x00ff, 0x2202, 0x8217, 0x0005, 0x00d6, -+ 0x2069, 0x1304, 0x6843, 0x0001, 0x00de, 0x0005, 0x60a3, 0x0056, -+ 0x60a7, 0x9575, 0x00f1, 0x080c, 0x7268, 0x0005, 0x0016, 0x2001, -+ 0x110c, 0x200c, 0x9184, 0x0600, 0x9086, 0x0600, 0x0128, 0x0089, -+ 0x080c, 0x7268, 0x001e, 0x0005, 0xc1e5, 0x2001, 0x110c, 0x2102, -+ 0x2001, 0x1305, 0x2003, 0x0000, 0x2001, 0x130d, 0x2003, 0x0000, -+ 0x0c88, 0x0006, 0x6014, 0x9084, 0x1804, 0x9085, 0x0009, 0x6016, -+ 0x000e, 0x0005, 0x0016, 0x00c6, 0x0006, 0x2061, 0x0100, 0x61a4, -+ 0x60a7, 0x95f5, 0x6014, 0x9084, 0x1804, 0x9085, 0x0008, 0x6016, -+ 0x000e, 0xa001, 0xa001, 0xa001, 0x61a6, 0x00ce, 0x001e, 0x0005, -+ 0x00c6, 0x00d6, 0x0016, 0x0026, 0x2061, 0x0100, 0x2069, 0x0140, -+ 0x080c, 0x62e4, 0x1198, 0x2001, 0x1320, 0x2004, 0x9005, 0x15d0, -+ 0x0066, 0x2031, 0x0001, 0x080c, 0x6380, 0x006e, 0x1118, 0x080c, -+ 0x7268, 0x0480, 0x00c6, 0x2061, 0x1304, 0x00f0, 0x6904, 0x9194, -+ 0x4000, 0x0568, 0x0839, 0x2001, 0x1000, 0x080c, 0x2401, 0x9006, -+ 0x080c, 0x2401, 0x00c6, 0x2061, 0x1304, 0x6128, 0x9192, 0x00c8, -+ 0x1258, 0x8108, 0x612a, 0x6124, 0x00ce, 0x81ff, 0x0198, 0x080c, -+ 0x7268, 0x080c, 0x8599, 0x0070, 0x6124, 0x91e5, 0x0000, 0x0140, -+ 0x080c, 0xc463, 0x080c, 0x7271, 0x2009, 0x0014, 0x080c, 0x8f53, -+ 0x00ce, 0x0000, 0x002e, 0x001e, 0x00de, 0x00ce, 0x0005, 0x2001, -+ 0x1320, 0x2004, 0x9005, 0x1db0, 0x00c6, 0x2061, 0x1304, 0x6128, -+ 0x9192, 0x0003, 0x1e08, 0x8108, 0x612a, 0x00ce, 0x080c, 0x7268, -+ 0x080c, 0x4faa, 0x0c38, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x0026, -+ 0x080c, 0x727e, 0x2071, 0x1304, 0x713c, 0x81ff, 0x0904, 0x868e, -+ 0x2061, 0x0100, 0x2069, 0x0140, 0x080c, 0x62e4, 0x11b0, 0x0036, -+ 0x2019, 0x0002, 0x080c, 0x8847, 0x003e, 0x713c, 0x2160, 0x080c, -+ 0xc463, 0x2009, 0x004a, 0x080c, 0x8f53, 0x0066, 0x2031, 0x0001, -+ 0x080c, 0x6380, 0x006e, 0x0804, 0x868e, 0x6904, 0x9194, 0x4000, -+ 0x0904, 0x8694, 0x2001, 0x1000, 0x080c, 0x2401, 0x9006, 0x080c, -+ 0x2401, 0x00c6, 0x703c, 0x9065, 0x090c, 0x0d7e, 0x6020, 0x00ce, -+ 0x9086, 0x0006, 0x1528, 0x61c8, 0x60c4, 0x9105, 0x1508, 0x2009, -+ 0x110c, 0x2104, 0xd0d4, 0x01e0, 0x6214, 0x9294, 0x1800, 0x1128, -+ 0x6224, 0x9294, 0x0002, 0x1510, 0x0030, 0xc0d4, 0x200a, 0xd0cc, -+ 0x0110, 0x080c, 0x2369, 0x6014, 0x9084, 0xe7fd, 0x9085, 0x0010, -+ 0x6016, 0x703c, 0x2060, 0x2009, 0x0049, 0x080c, 0x8f53, 0x0070, -+ 0x0036, 0x2019, 0x0001, 0x080c, 0x8847, 0x003e, 0x713c, 0x2160, -+ 0x080c, 0xc463, 0x2009, 0x004a, 0x080c, 0x8f53, 0x002e, 0x001e, -+ 0x00ee, 0x00de, 0x00ce, 0x0005, 0x0804, 0x8651, 0x0026, 0x00e6, -+ 0x2071, 0x1304, 0x7048, 0xd084, 0x01c0, 0x713c, 0x81ff, 0x01a8, -+ 0x2071, 0x0100, 0x9188, 0x0008, 0x2114, 0x928e, 0x0006, 0x1138, -+ 0x7014, 0x9084, 0x1984, 0x9085, 0x0012, 0x7016, 0x0030, 0x7014, -+ 0x9084, 0x1984, 0x9085, 0x0016, 0x7016, 0x00ee, 0x002e, 0x0005, -+ 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0056, 0x0046, 0x0006, 0x0126, -+ 0x2091, 0x8000, 0x6010, 0x2068, 0x6ca0, 0x2071, 0x1304, 0x7018, -+ 0x2068, 0x8dff, 0x0188, 0x68a0, 0x9406, 0x0118, 0x6854, 0x2068, -+ 0x0cc0, 0x6014, 0x2060, 0x646c, 0x6570, 0x6678, 0x2d60, 0x080c, -+ 0x5728, 0x0110, 0x9085, 0x0001, 0x012e, 0x000e, 0x004e, 0x005e, -+ 0x006e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x080c, 0x7fd5, 0x7003, -+ 0x1200, 0x7820, 0x9086, 0x0004, 0x1110, 0x6098, 0x0018, 0x2001, -+ 0x1116, 0x2004, 0x700e, 0x7838, 0x7012, 0x783c, 0x7016, 0x60c3, -+ 0x002c, 0x080c, 0x8576, 0x0005, 0x080c, 0x7fd5, 0x7003, 0x0f00, -+ 0x7808, 0x700e, 0x60c3, 0x0008, 0x080c, 0x8576, 0x0005, 0x0156, -+ 0x080c, 0x804b, 0x7003, 0x0200, 0x2011, 0x1148, 0x63f0, 0x2312, -+ 0x20a9, 0x0006, 0x2011, 0x1140, 0x2019, 0x1141, 0x9ef0, 0x0002, -+ 0x2376, 0x8e70, 0x2276, 0x8e70, 0x9398, 0x0002, 0x9290, 0x0002, -+ 0x1f04, 0x8718, 0x60c3, 0x001c, 0x080c, 0x8576, 0x015e, 0x0005, -+ 0x0016, 0x0026, 0x080c, 0x8027, 0x080c, 0x8039, 0x9e80, 0x0004, -+ 0x20e9, 0x0000, 0x20a0, 0x7814, 0x9080, 0x0000, 0x2004, 0x9080, -+ 0x0021, 0x20e1, 0x0001, 0x2098, 0x7808, 0x9088, 0x0002, 0x21a8, -+ 0x9192, 0x0010, 0x1250, 0x4003, 0x9080, 0x0004, 0x8003, 0x60c2, -+ 0x080c, 0x8576, 0x002e, 0x001e, 0x0005, 0x20a9, 0x0010, 0x4003, -+ 0x080c, 0x8dae, 0x20a1, 0x0240, 0x22a8, 0x4003, 0x0c68, 0x080c, -+ 0x7fd5, 0x7003, 0x6200, 0x7808, 0x700e, 0x60c3, 0x0008, 0x080c, -+ 0x8576, 0x0005, 0x0016, 0x0026, 0x080c, 0x7fd5, 0x20e9, 0x0000, -+ 0x20a1, 0x024c, 0x7814, 0x9080, 0x0000, 0x2004, 0x9080, 0x0023, -+ 0x20e1, 0x0001, 0x2098, 0x7808, 0x9088, 0x0002, 0x21a8, 0x4003, -+ 0x8003, 0x60c2, 0x080c, 0x8576, 0x002e, 0x001e, 0x0005, 0x00e6, -+ 0x00c6, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x1304, 0x700c, -+ 0x2060, 0x8cff, 0x0178, 0x080c, 0xab2e, 0x1110, 0x080c, 0x97dc, -+ 0x600c, 0x0006, 0x080c, 0xad68, 0x080c, 0x8ed9, 0x080c, 0x895e, -+ 0x00ce, 0x0c78, 0x2c00, 0x700e, 0x700a, 0x012e, 0x000e, 0x00ce, -+ 0x00ee, 0x0005, 0x0126, 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, -+ 0x0026, 0x0016, 0x0006, 0x2091, 0x8000, 0x2001, 0x110c, 0x200c, -+ 0x918c, 0xe7ff, 0x2102, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, -+ 0x1304, 0x7024, 0x2060, 0x8cff, 0x0904, 0x87ff, 0x080c, 0x85a2, -+ 0x6ac0, 0x68c3, 0x0000, 0x080c, 0x7271, 0x00c6, 0x2061, 0x0100, -+ 0x080c, 0x8dc7, 0x00ce, 0x2009, 0x0013, 0x080c, 0x8f53, 0x20a9, -+ 0x01f4, 0x6824, 0xd094, 0x0170, 0x6827, 0x0004, 0x7804, 0x9084, -+ 0x4000, 0x01d0, 0x2001, 0x1000, 0x080c, 0x2401, 0x9006, 0x080c, -+ 0x2401, 0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, 0x1f04, -+ 0x87d1, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, -+ 0x2401, 0x9006, 0x080c, 0x2401, 0x6824, 0x000e, 0x001e, 0x002e, -+ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x2001, -+ 0x1100, 0x2004, 0x9096, 0x0001, 0x05c0, 0x9096, 0x0004, 0x05a8, -+ 0x080c, 0x7271, 0x6814, 0x9084, 0x0001, 0x0110, 0x68a7, 0x95f5, -+ 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x4f57, 0x080c, 0x71fa, -+ 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0170, 0x6827, 0x0004, 0x7804, -+ 0x9084, 0x4000, 0x01d0, 0x7803, 0x1000, 0x080c, 0x2401, 0x9006, -+ 0x080c, 0x2401, 0x0090, 0xd084, 0x0118, 0x6827, 0x0001, 0x0010, -+ 0x1f04, 0x881a, 0x7804, 0x9084, 0x1000, 0x0138, 0x2001, 0x0100, -+ 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, 0x000e, 0x001e, 0x002e, -+ 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, 0x012e, 0x0005, 0x0126, -+ 0x0156, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0026, 0x0016, 0x0006, -+ 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2001, 0x110c, -+ 0x200c, 0x918c, 0xdbff, 0x2102, 0x2071, 0x1304, 0x703c, 0x2060, -+ 0x8cff, 0x0904, 0x88d8, 0x9386, 0x0002, 0x1128, 0x6814, 0x9084, -+ 0x0002, 0x0904, 0x88d8, 0x68af, 0x95f5, 0x6817, 0x0010, 0x2009, -+ 0x00fa, 0x8109, 0x1df0, 0x69c6, 0x68cb, 0x0008, 0x080c, 0x727e, -+ 0x080c, 0x1872, 0x0046, 0x2009, 0x017f, 0x200b, 0x00a5, 0x2021, -+ 0x0169, 0x2404, 0x9084, 0x000f, 0x9086, 0x0004, 0x11f8, 0x68af, -+ 0x95f5, 0x68c6, 0x68cb, 0x0008, 0x00e6, 0x00f6, 0x2079, 0x0090, -+ 0x2071, 0x134a, 0x6814, 0x9084, 0x1984, 0x9085, 0x0012, 0x6816, -+ 0x782b, 0x0008, 0x7003, 0x0000, 0x00fe, 0x00ee, 0x9386, 0x0002, -+ 0x1128, 0x7884, 0x9005, 0x1110, 0x7887, 0x0001, 0x2001, 0x12bb, -+ 0x2004, 0x200a, 0x004e, 0x939d, 0x0000, 0x1120, 0x2009, 0x0049, -+ 0x080c, 0x8f53, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0170, 0x6827, -+ 0x0004, 0x7804, 0x9084, 0x4000, 0x01d0, 0x2001, 0x1000, 0x080c, -+ 0x2401, 0x9006, 0x080c, 0x2401, 0x0090, 0xd08c, 0x0118, 0x6827, -+ 0x0002, 0x0010, 0x1f04, 0x88b4, 0x7804, 0x9084, 0x1000, 0x0138, -+ 0x2001, 0x0100, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, 0x6824, -+ 0x000e, 0x001e, 0x002e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x015e, -+ 0x012e, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, 0x2069, 0x1304, -+ 0x6a06, 0x012e, 0x00de, 0x0005, 0x00d6, 0x0126, 0x2091, 0x8000, -+ 0x2069, 0x1304, 0x6a32, 0x012e, 0x00de, 0x0005, 0x00f6, 0x00e6, -+ 0x00c6, 0x0066, 0x0006, 0x0126, 0x2071, 0x1304, 0x7614, 0x2660, -+ 0x2678, 0x2091, 0x8000, 0x8cff, 0x0530, 0x6020, 0x9206, 0x11f8, -+ 0x7014, 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010, 0x9c36, 0x1140, -+ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, 0x0000, -+ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, -+ 0x600f, 0x0000, 0x080c, 0x8f09, 0x04c9, 0x00ce, 0x08e0, 0x2c78, -+ 0x600c, 0x2060, 0x08c0, 0x012e, 0x000e, 0x006e, 0x00ce, 0x00ee, -+ 0x00fe, 0x0005, 0x080c, 0x81f4, 0x7814, 0x7032, 0x7042, 0x7047, -+ 0x1000, 0x00f8, 0x080c, 0x81f4, 0x7814, 0x7032, 0x7042, 0x7047, -+ 0x4000, 0x00b8, 0x080c, 0x81f4, 0x7814, 0x7032, 0x7042, 0x7047, -+ 0x2000, 0x0078, 0x080c, 0x81f4, 0x7814, 0x7032, 0x7042, 0x7047, -+ 0x0400, 0x0038, 0x080c, 0x81f4, 0x7814, 0x7032, 0x7042, 0x7047, -+ 0x0200, 0x60c3, 0x0020, 0x080c, 0x8576, 0x0005, 0x00e6, 0x2071, -+ 0x1304, 0x7020, 0x9005, 0x0110, 0x8001, 0x7022, 0x00ee, 0x0005, -+ 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0076, 0x0066, 0x0006, 0x0126, -+ 0x2091, 0x8000, 0x2071, 0x1304, 0x7614, 0x2660, 0x2678, 0x2039, -+ 0x0001, 0x87ff, 0x0904, 0x89fa, 0x8cff, 0x0904, 0x89fa, 0x6020, -+ 0x9086, 0x0006, 0x1904, 0x89f5, 0x88ff, 0x0138, 0x2800, 0x9c06, -+ 0x1904, 0x89f5, 0x2039, 0x0000, 0x0050, 0x6010, 0x9206, 0x1904, -+ 0x89f5, 0x85ff, 0x0120, 0x6054, 0x9106, 0x1904, 0x89f5, 0x7024, -+ 0x9c06, 0x1578, 0x2069, 0x0100, 0x68c0, 0x9005, 0x0530, 0x080c, -+ 0x7271, 0x6820, 0xd0b4, 0x0110, 0x68a7, 0x95f5, 0x6817, 0x0008, -+ 0x68c3, 0x0000, 0x080c, 0x8a7d, 0x7027, 0x0000, 0x0036, 0x2069, -+ 0x0140, 0x6b04, 0x9384, 0x1000, 0x0138, 0x2001, 0x0100, 0x080c, -+ 0x2401, 0x9006, 0x080c, 0x2401, 0x2069, 0x0100, 0x6824, 0xd084, -+ 0x0110, 0x6827, 0x0001, 0x003e, 0x0020, 0x6003, 0x0009, 0x630a, -+ 0x0460, 0x7014, 0x9c36, 0x1110, 0x660c, 0x7616, 0x7010, 0x9c36, -+ 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7012, 0x0010, 0x7013, -+ 0x0000, 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, -+ 0x2678, 0x89ff, 0x1158, 0x600f, 0x0000, 0x6014, 0x2068, 0x080c, -+ 0xa942, 0x0110, 0x080c, 0xc0e9, 0x080c, 0x8f09, 0x080c, 0x895e, -+ 0x88ff, 0x1190, 0x00ce, 0x0804, 0x8979, 0x2c78, 0x600c, 0x2060, -+ 0x0804, 0x8979, 0x9006, 0x012e, 0x000e, 0x006e, 0x007e, 0x00ce, -+ 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, 0x0000, 0x00ce, 0x98c5, -+ 0x0001, 0x0c88, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0026, -+ 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x1304, 0x7638, 0x2660, -+ 0x2678, 0x8cff, 0x0904, 0x8a6d, 0x6020, 0x9086, 0x0006, 0x1904, -+ 0x8a68, 0x87ff, 0x0128, 0x2700, 0x9c06, 0x1904, 0x8a68, 0x0040, -+ 0x6010, 0x9206, 0x15e8, 0x85ff, 0x0118, 0x6054, 0x9106, 0x15c0, -+ 0x703c, 0x9c06, 0x1168, 0x0036, 0x2019, 0x0001, 0x080c, 0x8847, -+ 0x7033, 0x0000, 0x9006, 0x703e, 0x7042, 0x7046, 0x704a, 0x003e, -+ 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36, 0x1140, -+ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, 0x0000, -+ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, -+ 0x600f, 0x0000, 0x6014, 0x2068, 0x080c, 0xa942, 0x0110, 0x080c, -+ 0xc0e9, 0x080c, 0x8f09, 0x87ff, 0x1190, 0x00ce, 0x0804, 0x8a19, -+ 0x2c78, 0x600c, 0x2060, 0x0804, 0x8a19, 0x9006, 0x012e, 0x000e, -+ 0x002e, 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x601b, -+ 0x0000, 0x00ce, 0x97bd, 0x0001, 0x0c88, 0x00e6, 0x2071, 0x1304, -+ 0x2001, 0x1100, 0x2004, 0x9086, 0x0002, 0x1118, 0x7007, 0x0005, -+ 0x0010, 0x7007, 0x0000, 0x00ee, 0x0005, 0x00f6, 0x00e6, 0x00c6, -+ 0x0066, 0x0026, 0x0006, 0x0126, 0x2091, 0x8000, 0x2071, 0x1304, -+ 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0518, 0x2200, 0x9c06, -+ 0x11e0, 0x7038, 0x9c36, 0x1110, 0x660c, 0x763a, 0x7034, 0x9c36, -+ 0x1140, 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x7036, 0x0010, 0x7037, -+ 0x0000, 0x660c, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, -+ 0x600f, 0x0000, 0x9085, 0x0001, 0x0020, 0x2c78, 0x600c, 0x2060, -+ 0x08d8, 0x012e, 0x000e, 0x002e, 0x006e, 0x00ce, 0x00ee, 0x00fe, -+ 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x00c6, 0x0066, 0x0006, 0x0126, -+ 0x2091, 0x8000, 0x2071, 0x1304, 0x760c, 0x2660, 0x2678, 0x8cff, -+ 0x0904, 0x8b56, 0x6010, 0x9080, 0x0028, 0x2004, 0x9206, 0x1904, -+ 0x8b51, 0x7024, 0x9c06, 0x1520, 0x2069, 0x0100, 0x68c0, 0x9005, -+ 0x0904, 0x8b2d, 0x080c, 0x85a2, 0x68c3, 0x0000, 0x080c, 0x8a7d, -+ 0x7027, 0x0000, 0x0036, 0x2069, 0x0140, 0x6b04, 0x9384, 0x1000, -+ 0x0138, 0x2001, 0x0100, 0x080c, 0x2401, 0x9006, 0x080c, 0x2401, -+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0110, 0x6827, 0x0001, 0x003e, -+ 0x700c, 0x9c36, 0x1110, 0x660c, 0x760e, 0x7008, 0x9c36, 0x1140, -+ 0x2c00, 0x9f36, 0x0118, 0x2f00, 0x700a, 0x0010, 0x700b, 0x0000, -+ 0x660c, 0x0066, 0x2c00, 0x9f06, 0x0110, 0x7e0e, 0x0008, 0x2678, -+ 0x600f, 0x0000, 0x080c, 0xab1d, 0x1158, 0x080c, 0x2886, 0x080c, -+ 0xab2e, 0x11f0, 0x080c, 0x97dc, 0x00d8, 0x080c, 0x8a7d, 0x08c0, -+ 0x080c, 0xab2e, 0x1118, 0x080c, 0x97dc, 0x0090, 0x6014, 0x2068, -+ 0x080c, 0xa942, 0x0168, 0x6020, 0x9086, 0x0003, 0x11f8, 0x6867, -+ 0x0103, 0x6b7a, 0x6877, 0x0000, 0x080c, 0x5b76, 0x080c, 0xab11, -+ 0x080c, 0xad68, 0x080c, 0x8f09, 0x080c, 0x895e, 0x00ce, 0x0804, -+ 0x8ad7, 0x2c78, 0x600c, 0x2060, 0x0804, 0x8ad7, 0x012e, 0x000e, -+ 0x006e, 0x00ce, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x6020, 0x9086, -+ 0x0006, 0x1d30, 0x080c, 0xc0e9, 0x0c18, 0x00d6, 0x080c, 0x804b, -+ 0x7003, 0x0200, 0x7007, 0x0014, 0x60c3, 0x0014, 0x20e1, 0x0001, -+ 0x2099, 0x12c3, 0x20e9, 0x0000, 0x20a1, 0x0250, 0x20a9, 0x0004, -+ 0x4003, 0x7023, 0x0004, 0x7027, 0x7878, 0x080c, 0x8576, 0x00de, -+ 0x0005, 0x080c, 0x804b, 0x7003, 0x0214, 0x7007, 0x0018, 0x700b, -+ 0x0800, 0x7814, 0x9084, 0xff00, 0x700e, 0x7814, 0x9084, 0x00ff, -+ 0x7022, 0x782c, 0x7026, 0x60c3, 0x0018, 0x080c, 0x8576, 0x0005, -+ 0x00d6, 0x0016, 0x00d6, 0x2f68, 0x2009, 0x0035, 0x080c, 0xaf4e, -+ 0x00de, 0x1904, 0x8bfe, 0x080c, 0x7fd5, 0x7003, 0x1300, 0x782c, -+ 0x2068, 0x6820, 0x9086, 0x0003, 0x0570, 0x7810, 0x9080, 0x0028, -+ 0x2014, 0x2001, 0x1136, 0x2004, 0xd0ac, 0x11d0, 0x9286, 0x007e, -+ 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffe, 0x04a8, 0x9286, 0x007f, -+ 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffd, 0x0468, 0xd2bc, 0x0180, -+ 0x9286, 0x0080, 0x1128, 0x700b, 0x00ff, 0x700f, 0xfffc, 0x0418, -+ 0x92e8, 0x1000, 0x2d6c, 0x6810, 0x700a, 0x6814, 0x700e, 0x00d8, -+ 0x6098, 0x700e, 0x00c0, 0x2001, 0x1136, 0x2004, 0xd0ac, 0x1138, -+ 0x7810, 0x9080, 0x0028, 0x2004, 0x9082, 0x007e, 0x0250, 0x00d6, -+ 0x2069, 0x111d, 0x2d04, 0x700a, 0x8d68, 0x2d04, 0x700e, 0x00de, -+ 0x0010, 0x6034, 0x700e, 0x7838, 0x7012, 0x783c, 0x7016, 0x60c3, -+ 0x000c, 0x001e, 0x00de, 0x080c, 0x8576, 0x0005, 0x781b, 0x0001, -+ 0x7803, 0x0006, 0x001e, 0x00de, 0x0005, 0x792c, 0x9180, 0x0008, -+ 0x200c, 0x9186, 0x0006, 0x01b0, 0x9186, 0x0003, 0x0904, 0x8c75, -+ 0x9186, 0x0005, 0x0904, 0x8c5e, 0x9186, 0x0004, 0x05c8, 0x9186, -+ 0x0008, 0x0904, 0x8c66, 0x7807, 0x0037, 0x7817, 0x1700, 0x080c, -+ 0x8cda, 0x0005, 0x080c, 0x8c9a, 0x00d6, 0x0026, 0x792c, 0x2168, -+ 0x2009, 0x4000, 0x6800, 0x0002, 0x8c3f, 0x8c4a, 0x8c41, 0x8c4a, -+ 0x8c46, 0x8c3f, 0x8c3f, 0x8c4a, 0x8c4a, 0x8c4a, 0x8c4a, 0x8c3f, -+ 0x8c3f, 0x8c3f, 0x8c3f, 0x8c3f, 0x8c4a, 0x8c3f, 0x8c4a, 0x080c, -+ 0x0d7e, 0x6824, 0xd0e4, 0x0110, 0xd0cc, 0x0110, 0x900e, 0x0010, -+ 0x2009, 0x2000, 0x682c, 0x7022, 0x6830, 0x7026, 0x0804, 0x8c92, -+ 0x080c, 0x8c9a, 0x00d6, 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, -+ 0x6a00, 0x9286, 0x0002, 0x1108, 0x900e, 0x04a0, 0x04d9, 0x00d6, -+ 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x0460, 0x0499, 0x00d6, -+ 0x0026, 0x792c, 0x2168, 0x2009, 0x4000, 0x9286, 0x0005, 0x0118, -+ 0x9286, 0x0002, 0x1108, 0x900e, 0x00e8, 0x0421, 0x00d6, 0x0026, -+ 0x792c, 0x2168, 0x6814, 0x2068, 0x69ac, 0x6834, 0x9112, 0x69b0, -+ 0x6838, 0x9103, 0x7022, 0x7226, 0x792c, 0x9180, 0x0000, 0x2004, -+ 0x908e, 0x0002, 0x0130, 0x908e, 0x0004, 0x0118, 0x2009, 0x4000, -+ 0x0008, 0x900e, 0x712a, 0x60c3, 0x0018, 0x002e, 0x00de, 0x080c, -+ 0x8576, 0x0005, 0x0036, 0x0046, 0x0056, 0x0066, 0x080c, 0x804b, -+ 0x9006, 0x7003, 0x0200, 0x7938, 0x710a, 0x793c, 0x710e, 0x7810, -+ 0x9080, 0x0028, 0x2004, 0x2011, 0x1136, 0x2214, 0xd2ac, 0x1118, -+ 0x9092, 0x007e, 0x0268, 0x00d6, 0x2069, 0x111d, 0x2d2c, 0x8d68, -+ 0x2d34, 0x90e8, 0x1000, 0x2d6c, 0x6b10, 0x6c14, 0x00de, 0x0028, -+ 0x901e, 0x6498, 0x2029, 0x0000, 0x6634, 0x782c, 0x9080, 0x0008, -+ 0x2004, 0x9086, 0x0003, 0x1128, 0x7512, 0x7616, 0x731a, 0x741e, -+ 0x0020, 0x7312, 0x7416, 0x751a, 0x761e, 0x006e, 0x005e, 0x004e, -+ 0x003e, 0x0005, 0x080c, 0x804b, 0x7003, 0x0100, 0x700b, 0x0009, -+ 0x7814, 0x700e, 0x60c3, 0x0008, 0x080c, 0x8576, 0x0005, 0x080c, -+ 0x7fcc, 0x7003, 0x1400, 0x7838, 0x700a, 0x783c, 0x700e, 0x782c, -+ 0x7012, 0x7830, 0x7016, 0x7834, 0x9084, 0x00ff, 0x8007, 0x701a, -+ 0x60c3, 0x0010, 0x080c, 0x8576, 0x0005, 0x080c, 0x8042, 0x7003, -+ 0x0100, 0x782c, 0x700a, 0x7814, 0x700e, 0x60c3, 0x0008, 0x080c, -+ 0x8576, 0x0005, 0x0029, 0x60c3, 0x0000, 0x080c, 0x8576, 0x0005, -+ 0x00d6, 0x080c, 0x8dc3, 0x7810, 0x2068, 0x6810, 0x9085, 0x0300, -+ 0x7002, 0x6814, 0x7006, 0x68a0, 0x2069, 0x1100, 0x6ad8, 0xd2ac, -+ 0x1110, 0xd0bc, 0x0188, 0x6874, 0x700a, 0x6878, 0x700e, 0x7013, -+ 0x0819, 0x080c, 0x8565, 0x721a, 0x2f10, 0x7222, 0x7a08, 0x7226, -+ 0x2071, 0x024c, 0x00de, 0x0005, 0x6234, 0x720e, 0x0c80, 0x0059, -+ 0x7914, 0x712a, 0x60c3, 0x0000, 0x60a7, 0x9575, 0x080c, 0x8599, -+ 0x080c, 0x7268, 0x0005, 0x0036, 0x00d6, 0x00e6, 0x7858, 0x2068, -+ 0x9df0, 0x001b, 0x7210, 0x9296, 0x00c0, 0x9294, 0xfffd, 0x7212, -+ 0x7214, 0x9294, 0x0300, 0x7216, 0x7100, 0x9194, 0x00ff, 0x7308, -+ 0x9384, 0x00ff, 0x908d, 0xc200, 0x7102, 0x9384, 0xff00, 0x9215, -+ 0x720a, 0x7004, 0x720c, 0x700e, 0x7206, 0x00d6, 0x2069, 0x0200, -+ 0x080c, 0x8dc3, 0x00de, 0x20e9, 0x0000, 0x20a1, 0x0240, 0x20a9, -+ 0x000a, 0x20e1, 0x0001, 0x2e98, 0x4003, 0x60a3, 0x0035, 0x6a68, -+ 0x9294, 0x7000, 0x9286, 0x3000, 0x0110, 0x60a3, 0x0037, 0x00ee, -+ 0x00de, 0x003e, 0x0005, 0x900e, 0x7814, 0x9080, 0x001f, 0x2004, -+ 0xd0fc, 0x01d8, 0x9084, 0x0003, 0x11c0, 0x2001, 0x110c, 0x2004, -+ 0xd0bc, 0x0198, 0x7824, 0xd0cc, 0x1180, 0xd0c4, 0x1170, 0x7814, -+ 0x9080, 0x002a, 0x2004, 0x9005, 0x1140, 0x2001, 0x110c, 0x200c, -+ 0xc1d5, 0x2102, 0x2009, 0x12e9, 0x210c, 0x918d, 0x0092, 0x0010, -+ 0x2009, 0x0096, 0x60ab, 0x0036, 0x6116, 0x0005, 0x2009, 0x0009, -+ 0x00a0, 0x2009, 0x000a, 0x0088, 0x2009, 0x000b, 0x0070, 0x2009, -+ 0x000c, 0x0058, 0x2009, 0x000d, 0x0040, 0x2009, 0x000e, 0x0028, -+ 0x2009, 0x000f, 0x0010, 0x2009, 0x0008, 0x6912, 0x0005, 0x00d6, -+ 0x9290, 0x0018, 0x8214, 0x20e9, 0x0000, 0x2069, 0x0200, 0x6813, -+ 0x0000, 0x22a8, 0x9284, 0x00e0, 0x0128, 0x20a9, 0x0020, 0x9292, -+ 0x0020, 0x0008, 0x9016, 0x20a1, 0x0240, 0x9006, 0x4004, 0x82ff, -+ 0x0120, 0x6810, 0x8000, 0x6812, 0x0c60, 0x00de, 0x0005, 0x00d6, -+ 0x0156, 0x080c, 0x804b, 0x7a14, 0x82ff, 0x0138, 0x7003, 0x0100, -+ 0x700b, 0x0003, 0x60c3, 0x0008, 0x0490, 0x7003, 0x0200, 0x7007, -+ 0x0000, 0x2069, 0x1100, 0x901e, 0x6800, 0x9086, 0x0004, 0x1110, -+ 0xc38d, 0x0060, 0x080c, 0x62e4, 0x1110, 0xc3ad, 0x0008, 0xc3a5, -+ 0x6ad8, 0xd29c, 0x1110, 0xd2ac, 0x0108, 0xc39d, 0x730e, 0x2011, -+ 0x1148, 0x63f0, 0x2312, 0x20a9, 0x0006, 0x2011, 0x1140, 0x2019, -+ 0x1141, 0x2071, 0x0250, 0x2376, 0x8e70, 0x2276, 0x8e70, 0x9398, -+ 0x0002, 0x9290, 0x0002, 0x1f04, 0x8e1b, 0x60c3, 0x0040, 0x080c, -+ 0x8576, 0x015e, 0x00de, 0x0005, 0x0156, 0x080c, 0x804b, 0x7a14, -+ 0x82ff, 0x0168, 0x9286, 0xffff, 0x0118, 0x9282, 0x000e, 0x1238, -+ 0x7003, 0x0100, 0x700b, 0x0003, 0x60c3, 0x0008, 0x04b8, 0x7003, -+ 0x0200, 0x7007, 0x001c, 0x700f, 0x0001, 0x2011, 0x12f4, 0x2204, -+ 0x8007, 0x701a, 0x8210, 0x2204, 0x8007, 0x701e, 0x2001, 0x1136, -+ 0x2004, 0xd0ac, 0x1138, 0x7810, 0x9080, 0x0028, 0x2004, 0x9082, -+ 0x007f, 0x0248, 0x2001, 0x111d, 0x2004, 0x7022, 0x2001, 0x111e, -+ 0x2004, 0x7026, 0x0030, 0x2001, 0x1116, 0x2004, 0x9084, 0x00ff, -+ 0x7026, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x2099, 0x1105, 0x20e9, -+ 0x0000, 0x20a1, 0x0256, 0x4003, 0x60c3, 0x001c, 0x080c, 0x8576, -+ 0x015e, 0x0005, 0x2061, 0x15c0, 0x2071, 0x1100, 0x706c, 0x704e, -+ 0x7053, 0x15c0, 0x0005, 0x00e6, 0x0126, 0x2071, 0x1100, 0x2091, -+ 0x8000, 0x754c, 0x9582, 0x0010, 0x0608, 0x7050, 0x2060, 0x6000, -+ 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018, 0x7060, 0x9c02, 0x1208, -+ 0x0cb0, 0x2061, 0x15c0, 0x0c98, 0x6003, 0x0008, 0x8529, 0x754e, -+ 0x9ca8, 0x0018, 0x7060, 0x9502, 0x1230, 0x7552, 0x9085, 0x0001, -+ 0x012e, 0x00ee, 0x0005, 0x7053, 0x15c0, 0x0cc0, 0x9006, 0x0cc0, -+ 0x00e6, 0x2071, 0x1100, 0x754c, 0x9582, 0x0010, 0x0600, 0x7050, -+ 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018, 0x7060, -+ 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x15c0, 0x0c98, 0x6003, 0x0008, -+ 0x8529, 0x754e, 0x9ca8, 0x0018, 0x7060, 0x9502, 0x1228, 0x7552, -+ 0x9085, 0x0001, 0x00ee, 0x0005, 0x7053, 0x15c0, 0x0cc8, 0x9006, -+ 0x0cc8, 0x9c82, 0x15c0, 0x0a0c, 0x0d7e, 0x2001, 0x1118, 0x2004, -+ 0x9c02, 0x1a0c, 0x0d7e, 0x9006, 0x6006, 0x600a, 0x600e, 0x6016, -+ 0x601a, 0x6012, 0x6023, 0x0000, 0x6003, 0x0000, 0x601e, 0x6056, -+ 0x605a, 0x6026, 0x602a, 0x602e, 0x6032, 0x6036, 0x603a, 0x603e, -+ 0x6042, 0x2061, 0x1100, 0x604c, 0x8000, 0x604e, 0x9086, 0x0001, -+ 0x0108, 0x0005, 0x0126, 0x2091, 0x8000, 0x080c, 0x7aa4, 0x012e, -+ 0x0cc0, 0x0006, 0x6000, 0x9086, 0x0000, 0x01b0, 0x601c, 0xd084, -+ 0x190c, 0x1509, 0x6017, 0x0000, 0x6023, 0x0007, 0x2001, 0x12c0, -+ 0x2004, 0x0006, 0x9082, 0x0051, 0x000e, 0x0208, 0x8004, 0x601a, -+ 0x080c, 0xc381, 0x6043, 0x0000, 0x000e, 0x0005, 0x00e6, 0x0126, -+ 0x2071, 0x1100, 0x2091, 0x8000, 0x754c, 0x9582, 0x0001, 0x0608, -+ 0x7050, 0x2060, 0x6000, 0x9086, 0x0000, 0x0148, 0x9ce0, 0x0018, -+ 0x7060, 0x9c02, 0x1208, 0x0cb0, 0x2061, 0x15c0, 0x0c98, 0x6003, -+ 0x0008, 0x8529, 0x754e, 0x9ca8, 0x0018, 0x7060, 0x9502, 0x1230, -+ 0x7552, 0x9085, 0x0001, 0x012e, 0x00ee, 0x0005, 0x7053, 0x15c0, -+ 0x0cc0, 0x9006, 0x0cc0, 0x6020, 0x9084, 0x000f, 0x0002, 0x8f66, -+ 0x8f75, 0x8f90, 0x8fab, 0xaf90, 0xafab, 0xafc6, 0x8f66, 0x8f75, -+ 0x8f66, 0x8fc7, 0x8f66, 0x8f66, 0x8f66, 0x8f66, 0x9186, 0x0013, -+ 0x1128, 0x080c, 0x79ab, 0x080c, 0x7aa4, 0x0005, 0x9186, 0x0047, -+ 0x1118, 0x9016, 0x080c, 0x137c, 0x0005, 0x0066, 0x6000, 0x90b2, -+ 0x0016, 0x1a0c, 0x0d7e, 0x0013, 0x006e, 0x0005, 0x8f8e, 0x9655, -+ 0x9815, 0x8f8e, 0x98a2, 0x9248, 0x8f8e, 0x8f8e, 0x95e1, 0x9d9e, -+ 0x8f8e, 0x8f8e, 0x8f8e, 0x8f8e, 0x8f8e, 0x8f8e, 0x080c, 0x0d7e, -+ 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d7e, 0x0013, 0x006e, -+ 0x0005, 0x8fa9, 0xa3c8, 0x8fa9, 0x8fa9, 0x8fa9, 0x8fa9, 0x8fa9, -+ 0x8fa9, 0xa36e, 0xa544, 0x8fa9, 0xa3fb, 0xa478, 0xa3fb, 0xa478, -+ 0x8fa9, 0x080c, 0x0d7e, 0x6000, 0x9082, 0x0016, 0x1a0c, 0x0d7e, -+ 0x6000, 0x0002, 0x8fc5, 0x9ddf, 0x9eaf, 0x9fd9, 0xa13a, 0x8fc5, -+ 0x8fc5, 0x8fc5, 0x9db9, 0xa31e, 0xa321, 0x8fc5, 0x8fc5, 0x8fc5, -+ 0x8fc5, 0xa34b, 0x8fc5, 0x8fc5, 0x8fc5, 0x080c, 0x0d7e, 0x0066, -+ 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d7e, 0x0013, 0x006e, 0x0005, -+ 0x8fe0, 0x8fe0, 0x901f, 0x90ad, 0x910e, 0x8fe0, 0x8fe0, 0x8fe0, -+ 0x8fe2, 0x8fe0, 0x8fe0, 0x8fe0, 0x8fe0, 0x8fe0, 0x8fe0, 0x8fe0, -+ 0x080c, 0x0d7e, 0x9186, 0x004c, 0x0588, 0x9186, 0x0003, 0x190c, -+ 0x0d7e, 0x00d6, 0x601c, 0xc0ed, 0x601e, 0x6003, 0x0003, 0x6106, -+ 0x6014, 0x2068, 0x687c, 0x9084, 0x8000, 0xc0b5, 0x687e, 0x68ac, -+ 0x6846, 0x68b0, 0x684a, 0x9006, 0x6836, 0x683a, 0x6884, 0x9092, -+ 0x199a, 0x0210, 0x2001, 0x1999, 0x8003, 0x8013, 0x8213, 0x9210, -+ 0x621a, 0x00de, 0x2c10, 0x080c, 0x1605, 0x080c, 0x75db, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x7b72, 0x012e, 0x0005, 0x6010, 0x9080, -+ 0x0028, 0x2024, 0x8427, 0x2c00, 0x080c, 0x912f, 0x0005, 0x00d6, -+ 0x00f6, 0x2079, 0x1100, 0x7a88, 0x9290, 0x0018, 0x6014, 0x2068, -+ 0x6c78, 0x0046, 0x68e0, 0x9005, 0x1140, 0x68dc, 0x921a, 0x0140, -+ 0x0220, 0x687b, 0x0007, 0x2010, 0x0028, 0x687b, 0x0015, 0x0010, -+ 0x687b, 0x0000, 0x8214, 0x6883, 0x0000, 0x6a02, 0x0006, 0x0016, -+ 0x0026, 0x00c6, 0x00d6, 0x00e6, 0x00f6, 0x2400, 0x9005, 0x1108, -+ 0x009a, 0x2100, 0x9086, 0x0015, 0x1118, 0x2001, 0x0001, 0x0038, -+ 0x2100, 0x9086, 0x0016, 0x0118, 0x2001, 0x0001, 0x002a, 0x94a4, -+ 0x0007, 0x8423, 0x9405, 0x0002, 0x907e, 0x907e, 0x9079, 0x907c, -+ 0x907e, 0x9076, 0x906c, 0x906c, 0x906c, 0x906c, 0x906c, 0x906c, -+ 0x906c, 0x906c, 0x906c, 0x906c, 0x00fe, 0x00ee, 0x00de, 0x00ce, -+ 0x002e, 0x001e, 0x000e, 0x000e, 0x080c, 0x0d7e, 0x080c, 0x9a2c, -+ 0x0028, 0x080c, 0x9b03, 0x0010, 0x080c, 0x9bfa, 0x00fe, 0x00ee, -+ 0x00de, 0x00ce, 0x002e, 0x001e, 0x2c00, 0x6896, 0x000e, 0x080c, -+ 0x91df, 0x01e8, 0x6804, 0x680e, 0x200c, 0x9080, 0x0002, 0x6acc, -+ 0x6bd0, 0x6cd4, 0x6dd8, 0x2039, 0x0001, 0x2031, 0x0000, 0x2041, -+ 0x1091, 0x080c, 0x9367, 0x0158, 0x000e, 0x9005, 0x0118, 0x00fe, -+ 0x00de, 0x0005, 0x00fe, 0x00de, 0x080c, 0x8ed9, 0x0005, 0x2001, -+ 0x002c, 0x900e, 0x080c, 0x923d, 0x0c78, 0x9182, 0x0047, 0x0002, -+ 0x90b9, 0x90b9, 0x90bb, 0x90e8, 0x90b9, 0x90b9, 0x90b9, 0x90b9, -+ 0x90fa, 0x080c, 0x0d7e, 0x00d6, 0x0016, 0x080c, 0x7a55, 0x080c, -+ 0x7b72, 0x6003, 0x0004, 0x6114, 0x2168, 0x687c, 0xd0fc, 0x0188, -+ 0x6878, 0x9005, 0x1158, 0x6894, 0x9005, 0x0140, 0x2001, 0x0000, -+ 0x900e, 0x080c, 0x923d, 0x080c, 0x8ed9, 0x0078, 0x6003, 0x0002, -+ 0x0060, 0x687f, 0x0020, 0x688c, 0x688a, 0x68a4, 0x68ae, 0x68a8, -+ 0x68b2, 0x68c7, 0x0000, 0x68cb, 0x0000, 0x001e, 0x00de, 0x0005, -+ 0x080c, 0x7a55, 0x00d6, 0x6114, 0x2168, 0x080c, 0xa942, 0x0120, -+ 0x687b, 0x0006, 0x080c, 0x5b76, 0x00de, 0x080c, 0x8ed9, 0x080c, -+ 0x7b72, 0x0005, 0x080c, 0x7a55, 0x080c, 0x2862, 0x00d6, 0x6114, -+ 0x2168, 0x080c, 0xa942, 0x0120, 0x687b, 0x0029, 0x080c, 0x5b76, -+ 0x00de, 0x080c, 0x8ed9, 0x080c, 0x7b72, 0x0005, 0x9182, 0x0047, -+ 0x0002, 0x911e, 0x9120, 0x911e, 0x911e, 0x911e, 0x911e, 0x911e, -+ 0x911e, 0x911e, 0x911e, 0x911e, 0x911e, 0x9120, 0x080c, 0x0d7e, -+ 0x00d6, 0x080c, 0x1303, 0x6114, 0x2168, 0x687b, 0x0000, 0x6883, -+ 0x0000, 0x080c, 0x5b76, 0x00de, 0x080c, 0x8ed9, 0x0005, 0x0026, -+ 0x0036, 0x0056, 0x0066, 0x00d6, 0x00f6, 0x0006, 0x080c, 0x0eb6, -+ 0x000e, 0x090c, 0x0d7e, 0x20e9, 0x0001, 0x9d88, 0x0019, 0x21a0, -+ 0x900e, 0x20a9, 0x0020, 0x4104, 0x687a, 0x2079, 0x1100, 0x7988, -+ 0x9188, 0x0018, 0x918c, 0x0fff, 0x6972, 0x6c76, 0x2d78, 0x00f6, -+ 0x2001, 0x0205, 0x2003, 0x0000, 0x901e, 0x2029, 0x0001, 0x9182, -+ 0x0034, 0x1228, 0x9f90, 0x001f, 0x080c, 0xa5c9, 0x04c0, 0x2130, -+ 0x2009, 0x0034, 0x9f90, 0x001f, 0x080c, 0xa5c9, 0x96b2, 0x0034, -+ 0x7804, 0x906d, 0x0110, 0x080c, 0x0edf, 0x080c, 0x0eb6, 0x01d0, -+ 0x8528, 0x6867, 0x0110, 0x686b, 0x0000, 0x2d20, 0x7c06, 0x968a, -+ 0x003d, 0x1230, 0x2608, 0x9d90, 0x001b, 0x080c, 0xa5c9, 0x00b8, -+ 0x96b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0x9d90, 0x001b, 0x080c, -+ 0xa5c9, 0x0c18, 0x2079, 0x0200, 0x7817, 0x0000, 0x00fe, 0x852f, -+ 0x95ad, 0x0050, 0x7d66, 0x7870, 0xc0fd, 0x7872, 0x0048, 0x2079, -+ 0x0200, 0x7817, 0x0000, 0x00fe, 0x852f, 0x95ad, 0x0050, 0x7d66, -+ 0x2f68, 0x6804, 0x6807, 0x0000, 0x0006, 0x080c, 0x5b76, 0x000e, -+ 0x2068, 0x9005, 0x1db0, 0x00fe, 0x00de, 0x006e, 0x005e, 0x003e, -+ 0x002e, 0x0005, 0x00d6, 0x00f6, 0x0006, 0x080c, 0x0eb6, 0x000e, -+ 0x090c, 0x0d7e, 0x20e9, 0x0001, 0x9d88, 0x0019, 0x21a0, 0x900e, -+ 0x20a9, 0x0020, 0x4104, 0x6a66, 0x687a, 0x2079, 0x1100, 0x7988, -+ 0x810c, 0x9188, 0x000c, 0x9182, 0x001a, 0x0210, 0x2009, 0x001a, -+ 0x21a8, 0x810b, 0x6972, 0x6c76, 0x2e98, 0x9d80, 0x001f, 0x20a0, -+ 0x080c, 0x504f, 0x080c, 0x5b76, 0x00fe, 0x00de, 0x0005, 0x0016, -+ 0x00d6, 0x00f6, 0x2079, 0x0200, 0x2e98, 0x2021, 0x003e, 0x901e, -+ 0x9282, 0x0020, 0x0218, 0x2011, 0x0020, 0x2018, 0x9486, 0x003e, -+ 0x1168, 0x00d6, 0x080c, 0x0e9d, 0x2d00, 0x00de, 0x05f0, 0x6806, -+ 0x2068, 0x20e9, 0x0001, 0x9080, 0x0002, 0x20a0, 0x3300, 0x908e, -+ 0x0260, 0x0140, 0x2009, 0x0280, 0x9102, 0x920a, 0x0218, 0x2010, -+ 0x2100, 0x9318, 0x2200, 0x9402, 0x1220, 0x2410, 0x9006, 0x9398, -+ 0x0002, 0x2020, 0x22a8, 0x6800, 0x9200, 0x6802, 0x0016, 0x0026, -+ 0x3410, 0x3308, 0x2104, 0x8007, 0x2012, 0x8108, 0x8210, 0x1f04, -+ 0x921a, 0x22a0, 0x2198, 0x002e, 0x001e, 0x83ff, 0x0170, 0x3300, -+ 0x9086, 0x0280, 0x1120, 0x7814, 0x8000, 0x7816, 0x2e98, 0x2310, -+ 0x84ff, 0x0904, 0x91e5, 0x0804, 0x91e7, 0x9085, 0x0001, 0x7817, -+ 0x0000, 0x00fe, 0x00de, 0x001e, 0x0005, 0x00d6, 0x0036, 0x6314, -+ 0x2368, 0x687a, 0x6982, 0x080c, 0x5b76, 0x003e, 0x00de, 0x0005, -+ 0x91b6, 0x0015, 0x1118, 0x080c, 0x8ed9, 0x0030, 0x91b6, 0x0016, -+ 0x190c, 0x0d7e, 0x080c, 0x8ed9, 0x0005, 0x20a9, 0x000e, 0x20e1, -+ 0x0000, 0x2e98, 0x6014, 0x20e9, 0x0001, 0x20a0, 0x4003, 0x9080, -+ 0x001b, 0x2020, 0x20a9, 0x0006, 0x3310, 0x9298, 0x0001, 0x94a8, -+ 0x0001, 0x222e, 0x2326, 0x9290, 0x0002, 0x95a8, 0x0002, 0x9398, -+ 0x0002, 0x94a0, 0x0002, 0x1f04, 0x9269, 0x00e6, 0x080c, 0xa942, -+ 0x0130, 0x6014, 0x2070, 0x7007, 0x0000, 0x7067, 0x0103, 0x00ee, -+ 0x080c, 0x8ed9, 0x0005, 0x00d6, 0x0036, 0x7330, 0x9386, 0x0200, -+ 0x1130, 0x6010, 0x2068, 0x6813, 0x00ff, 0x6817, 0xfffd, 0x6014, -+ 0x9005, 0x0130, 0x2068, 0x6807, 0x0000, 0x6867, 0x0103, 0x6b32, -+ 0x080c, 0x8ed9, 0x003e, 0x00de, 0x0005, 0x0016, 0x20a9, 0x0014, -+ 0x9e80, 0x000c, 0x20e1, 0x0000, 0x2098, 0x6014, 0x9080, 0x0002, -+ 0x20e9, 0x0001, 0x20a0, 0x4003, 0x2001, 0x0205, 0x2003, 0x0001, -+ 0x2099, 0x0260, 0x20a9, 0x0016, 0x4003, 0x20a9, 0x000a, 0x6014, -+ 0x9080, 0x0001, 0x2004, 0x9080, 0x0002, 0x20a0, 0x4003, 0x2001, -+ 0x0205, 0x2003, 0x0002, 0x2099, 0x0260, 0x20a9, 0x0020, 0x4003, -+ 0x2003, 0x0000, 0x00e6, 0x6014, 0x2004, 0x2070, 0x7067, 0x0103, -+ 0x00ee, 0x080c, 0x8ed9, 0x001e, 0x0005, 0x0016, 0x900e, 0x7030, -+ 0x9086, 0x0100, 0x0140, 0x7038, 0x9084, 0x00ff, 0x800c, 0x703c, -+ 0x9084, 0x00ff, 0x8004, 0x9080, 0x0004, 0x9108, 0x9192, 0x0014, -+ 0x1218, 0x2011, 0x0000, 0x0010, 0x2009, 0x0014, 0x21a8, 0x9e80, -+ 0x000c, 0x2098, 0x6014, 0x9080, 0x0002, 0x20a0, 0x080c, 0x504f, -+ 0x82ff, 0x0170, 0x2009, 0x0205, 0x2104, 0x8000, 0x200a, 0x2e00, -+ 0x2098, 0x3400, 0x9080, 0x0014, 0x20a0, 0x22a8, 0x080c, 0x504f, -+ 0x00e6, 0x080c, 0xa942, 0x0140, 0x6014, 0x2070, 0x7007, 0x0000, -+ 0x7064, 0x70e2, 0x7067, 0x0103, 0x00ee, 0x080c, 0x8ed9, 0x001e, -+ 0x0005, 0x0016, 0x00d6, 0x7030, 0x9086, 0x0100, 0x1118, 0x2009, -+ 0x0004, 0x0010, 0x7034, 0x800c, 0x21a8, 0x9e80, 0x000c, 0x2098, -+ 0x6014, 0x2068, 0x6804, 0x9005, 0x1108, 0x2d00, 0x9080, 0x000c, -+ 0x20a0, 0x080c, 0x504f, 0x080c, 0xa942, 0x0148, 0x6804, 0x9005, -+ 0x1158, 0x6807, 0x0000, 0x6864, 0x68e2, 0x6867, 0x0103, 0x080c, -+ 0x8ed9, 0x00de, 0x001e, 0x0005, 0x00e6, 0x2070, 0x7030, 0x8007, -+ 0x9086, 0x0100, 0x1118, 0x080c, 0x97dc, 0x00b8, 0x7034, 0x8007, -+ 0x800c, 0x9e80, 0x000c, 0x687b, 0x0000, 0x6883, 0x0000, 0x6897, -+ 0x4000, 0x6aa0, 0x6b9c, 0x6ca8, 0x6da4, 0x2031, 0x0000, 0x2039, -+ 0x0001, 0x2041, 0x1078, 0x0019, 0x0d30, 0x00ee, 0x08c0, 0x00d6, -+ 0x0006, 0x080c, 0x0e9d, 0x000e, 0x0190, 0x6812, 0x000e, 0x683e, -+ 0x0006, 0x6e06, 0x2800, 0x683a, 0x6916, 0x6f0e, 0x6a2a, 0x6b2e, -+ 0x6c32, 0x6d36, 0x2d10, 0x080c, 0x0f22, 0x9085, 0x0001, 0x00de, -+ 0x0005, 0x00e6, 0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, -+ 0x9290, 0x0004, 0x2214, 0x9206, 0x1518, 0x700c, 0x6210, 0x9290, -+ 0x0005, 0x2214, 0x9206, 0x11e0, 0x6043, 0x0000, 0x2c68, 0x0016, -+ 0x2009, 0x0035, 0x080c, 0xaf4e, 0x001e, 0x1158, 0x622c, 0x2268, -+ 0x2071, 0x026c, 0x6b20, 0x9386, 0x0003, 0x0130, 0x9386, 0x0006, -+ 0x0128, 0x080c, 0x8ed9, 0x0020, 0x0039, 0x0010, 0x080c, 0x946d, -+ 0x002e, 0x00de, 0x00ee, 0x0005, 0x00f6, 0x6814, 0x2078, 0x9186, -+ 0x0015, 0x0904, 0x9454, 0x918e, 0x0016, 0x1904, 0x946b, 0x700c, -+ 0x908c, 0xff00, 0x9186, 0x1700, 0x0120, 0x9186, 0x0300, 0x1904, -+ 0x9433, 0x8fff, 0x1138, 0x6800, 0x9086, 0x000f, 0x0904, 0x9417, -+ 0x0804, 0x9469, 0x6808, 0x9086, 0xffff, 0x1904, 0x9456, 0x787c, -+ 0x9084, 0x0060, 0x9086, 0x0020, 0x1128, 0x783c, 0x7940, 0x9105, -+ 0x1904, 0x9456, 0x080c, 0xab11, 0x685c, 0x7882, 0x787c, 0xc0dc, -+ 0xc0f4, 0xc0d4, 0x787e, 0x0026, 0x900e, 0x6a18, 0x2001, 0x000a, -+ 0x080c, 0x73f0, 0x7884, 0x920a, 0x0208, 0x8011, 0x7a86, 0x82ff, -+ 0x002e, 0x1138, 0x00c6, 0x2d60, 0x080c, 0xa6d9, 0x00ce, 0x0804, -+ 0x9469, 0x00c6, 0x00d6, 0x2f68, 0x6868, 0xd0fc, 0x1118, 0x080c, -+ 0x5151, 0x0010, 0x080c, 0x54d0, 0x00de, 0x00ce, 0x1904, 0x9456, -+ 0x00c6, 0x2d60, 0x080c, 0x8ed9, 0x00ce, 0x0804, 0x9469, 0x00c6, -+ 0x080c, 0x8f26, 0x0190, 0x6017, 0x0000, 0x6810, 0x6012, 0x080c, -+ 0xad70, 0x6023, 0x0003, 0x6904, 0x00c6, 0x2d60, 0x080c, 0x8ed9, -+ 0x00ce, 0x080c, 0x8f53, 0x00ce, 0x04e0, 0x2001, 0x12c2, 0x2004, -+ 0x6842, 0x00ce, 0x04b0, 0x7008, 0x9086, 0x000b, 0x11a0, 0x6010, -+ 0x200c, 0xc1bc, 0x2102, 0x00c6, 0x2d60, 0x7883, 0x0003, 0x6007, -+ 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x756e, 0x080c, -+ 0x7aa4, 0x00ce, 0x00f0, 0x700c, 0x9086, 0x2a00, 0x1138, 0x2001, -+ 0x12c2, 0x2004, 0x6842, 0x00a8, 0x0481, 0x00a8, 0x8fff, 0x090c, -+ 0x0d7e, 0x00c6, 0x00d6, 0x2d60, 0x2f68, 0x6867, 0x0103, 0x687b, -+ 0x0003, 0x080c, 0xa5b9, 0x080c, 0xab11, 0x080c, 0x8f09, 0x00de, -+ 0x00ce, 0x080c, 0x8ed9, 0x00fe, 0x0005, 0x9186, 0x0015, 0x1128, -+ 0x2001, 0x12c2, 0x2004, 0x6842, 0x0068, 0x918e, 0x0016, 0x1160, -+ 0x00c6, 0x2d00, 0x2060, 0x080c, 0xc381, 0x080c, 0x7384, 0x080c, -+ 0x8ed9, 0x00ce, 0x080c, 0x8ed9, 0x0005, 0x0026, 0x0036, 0x0046, -+ 0x7228, 0x7cb0, 0x7bac, 0xd2f4, 0x0130, 0x2001, 0x12c2, 0x2004, -+ 0x6842, 0x0804, 0x94e9, 0x00c6, 0x2d60, 0x080c, 0xa5e6, 0x00ce, -+ 0x6804, 0x9086, 0x0050, 0x1170, 0x00c6, 0x2d00, 0x2060, 0x6003, -+ 0x0001, 0x6007, 0x0050, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x00ce, -+ 0x0804, 0x94e9, 0x6800, 0x9086, 0x000f, 0x01c8, 0x8fff, 0x090c, -+ 0x0d7e, 0x6824, 0xd0dc, 0x1198, 0x6800, 0x9086, 0x0004, 0x1198, -+ 0x787c, 0xd0ac, 0x0180, 0x7843, 0x0fff, 0x783f, 0x0fff, 0x7880, -+ 0xc0f4, 0xc0fc, 0x7882, 0x2001, 0x0001, 0x6832, 0x00e8, 0x2001, -+ 0x0007, 0x6832, 0x00c8, 0x787c, 0xd0b4, 0x1138, 0xd0ac, 0x0db8, -+ 0x7838, 0x7934, 0x9105, 0x0d98, 0x0c30, 0xd2ec, 0x1d80, 0x7024, -+ 0x9306, 0x1118, 0x7020, 0x9406, 0x0d50, 0x7020, 0x683e, 0x7024, -+ 0x683a, 0x2001, 0x0005, 0x6832, 0x080c, 0xac68, 0x080c, 0x7aa4, -+ 0x0010, 0x080c, 0x8ed9, 0x004e, 0x003e, 0x002e, 0x0005, 0x00e6, -+ 0x00d6, 0x0026, 0x7008, 0x9084, 0x00ff, 0x6210, 0x9290, 0x0004, -+ 0x2214, 0x9206, 0x1904, 0x9561, 0x700c, 0x6210, 0x9290, 0x0005, -+ 0x2214, 0x9206, 0x1904, 0x9561, 0x6038, 0x2068, 0x6a20, 0x9286, -+ 0x0007, 0x0904, 0x955f, 0x9286, 0x0002, 0x0904, 0x955f, 0x9286, -+ 0x0000, 0x0904, 0x955f, 0x6808, 0x633c, 0x9306, 0x1904, 0x955f, -+ 0x2071, 0x026c, 0x9186, 0x0015, 0x05e0, 0x918e, 0x0016, 0x1190, -+ 0x6034, 0x9084, 0x00ff, 0x9086, 0x0001, 0x1160, 0x700c, 0x9086, -+ 0x2a00, 0x1140, 0x6038, 0x9080, 0x0009, 0x200c, 0xc1dd, 0xc1f5, -+ 0x2102, 0x0438, 0x00c6, 0x6038, 0x2060, 0x6104, 0x9186, 0x004b, -+ 0x01a0, 0x9186, 0x004c, 0x0188, 0x9186, 0x004d, 0x0170, 0x9186, -+ 0x004e, 0x0158, 0x9186, 0x0052, 0x0140, 0x6014, 0x2068, 0x080c, -+ 0xa942, 0x090c, 0x0d7e, 0x6883, 0x0003, 0x6007, 0x0085, 0x6003, -+ 0x000b, 0x6023, 0x0002, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x00ce, -+ 0x0030, 0x6038, 0x2070, 0x2001, 0x12c2, 0x2004, 0x7042, 0x080c, -+ 0x8ed9, 0x002e, 0x00de, 0x00ee, 0x0005, 0x00d6, 0x00f6, 0x6014, -+ 0x2068, 0x6010, 0x2078, 0x91b6, 0x0015, 0x0130, 0x7a08, 0x7b0c, -+ 0x7c00, 0xc48c, 0x7c02, 0x0448, 0x0156, 0x0036, 0x0026, 0x9e90, -+ 0x000c, 0x9290, 0x0004, 0x20a9, 0x0004, 0x9f98, 0x000a, 0x080c, -+ 0x9d60, 0x002e, 0x003e, 0x015e, 0x15f0, 0x0156, 0x0036, 0x0026, -+ 0x9e90, 0x000c, 0x9290, 0x0008, 0x20a9, 0x0004, 0x9f98, 0x0006, -+ 0x080c, 0x9d60, 0x002e, 0x003e, 0x015e, 0x1568, 0x7238, 0x7a0a, -+ 0x733c, 0x7b0e, 0x7c00, 0xc48d, 0x7c02, 0x6804, 0x9005, 0x1120, -+ 0x00fe, 0x00de, 0x0804, 0x9275, 0x9080, 0x0002, 0x00d6, 0x2068, -+ 0x6a0a, 0x6b0e, 0x6c02, 0x00de, 0x2009, 0x002b, 0x6aa0, 0x6b9c, -+ 0x6ca8, 0x6da4, 0x2031, 0x0000, 0x2039, 0x0001, 0x2041, 0x1078, -+ 0x080c, 0x9367, 0x0128, 0x00fe, 0x00de, 0x080c, 0x8ed9, 0x0005, -+ 0x080c, 0x97dc, 0x0cc0, 0x00f6, 0x080c, 0x2862, 0x00fe, 0x00c6, -+ 0x080c, 0x8e83, 0x2f00, 0x6012, 0x6017, 0x0000, 0x6023, 0x0001, -+ 0x6007, 0x0001, 0x6003, 0x0001, 0x2001, 0x0007, 0x080c, 0x5568, -+ 0x080c, 0x5592, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x00ce, 0x0804, -+ 0x959d, 0x2100, 0x91b2, 0x0053, 0x1a0c, 0x0d7e, 0x91b2, 0x0040, -+ 0x1a04, 0x963f, 0x0002, 0x962d, 0x962d, 0x962d, 0x962d, 0x962d, -+ 0x962d, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, -+ 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, -+ 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, -+ 0x962b, 0x962b, 0x962d, 0x962b, 0x962d, 0x962d, 0x962b, 0x962b, -+ 0x962b, 0x962b, 0x962b, 0x962d, 0x962b, 0x962b, 0x962b, 0x962b, -+ 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962d, 0x962d, 0x962b, -+ 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, 0x962b, -+ 0x962d, 0x962b, 0x962b, 0x080c, 0x0d7e, 0x6003, 0x0001, 0x6106, -+ 0x9186, 0x0032, 0x0118, 0x080c, 0x75be, 0x0010, 0x080c, 0x756e, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x7aa4, 0x012e, 0x0005, 0x2600, -+ 0x0002, 0x9653, 0x9653, 0x9653, 0x962d, 0x962d, 0x9653, 0x9653, -+ 0x9653, 0x9653, 0x962d, 0x9653, 0x962d, 0x9653, 0x962d, 0x9653, -+ 0x9653, 0x9653, 0x9653, 0x080c, 0x0d7e, 0x6004, 0x90b2, 0x0053, -+ 0x1a0c, 0x0d7e, 0x91b6, 0x0013, 0x0904, 0x9702, 0x91b6, 0x0027, -+ 0x1904, 0x96c8, 0x080c, 0x79ab, 0x6004, 0x080c, 0xab1d, 0x0190, -+ 0x080c, 0xab2e, 0x0904, 0x96c2, 0x908e, 0x0021, 0x0904, 0x96c5, -+ 0x908e, 0x0022, 0x0904, 0x96c2, 0x908e, 0x003d, 0x0904, 0x96c5, -+ 0x0804, 0x96bb, 0x080c, 0x2886, 0x2001, 0x0007, 0x080c, 0x5568, -+ 0x6010, 0x9080, 0x0028, 0x200c, 0x080c, 0x97dc, 0x9186, 0x007e, -+ 0x1148, 0x2001, 0x1136, 0x2014, 0xc285, 0x080c, 0x62e4, 0x1108, -+ 0xc2ad, 0x2202, 0x0016, 0x0026, 0x0036, 0x2110, 0x0026, 0x2019, -+ 0x0028, 0x080c, 0x8ac9, 0x002e, 0x080c, 0xc3d4, 0x003e, 0x002e, -+ 0x001e, 0x0016, 0x0026, 0x0036, 0x2110, 0x2019, 0x0028, 0x080c, -+ 0x76f0, 0x0076, 0x903e, 0x080c, 0x75ee, 0x6010, 0x00c6, 0x9065, -+ 0x0100, 0x00ce, 0x2c08, 0x080c, 0xbec2, 0x007e, 0x003e, 0x002e, -+ 0x001e, 0x080c, 0x55d0, 0x080c, 0xad68, 0x080c, 0x8ed9, 0x080c, -+ 0x7aa4, 0x0005, 0x080c, 0x97dc, 0x0cb0, 0x080c, 0x9809, 0x0c98, -+ 0x9186, 0x0014, 0x1db0, 0x080c, 0x79ab, 0x080c, 0x2862, 0x080c, -+ 0xab1d, 0x1188, 0x080c, 0x2886, 0x6010, 0x9080, 0x0028, 0x200c, -+ 0x080c, 0x97dc, 0x9186, 0x007e, 0x1128, 0x2001, 0x1136, 0x200c, -+ 0xc185, 0x2102, 0x08c0, 0x080c, 0xab2e, 0x1118, 0x080c, 0x97dc, -+ 0x0890, 0x6004, 0x908e, 0x0032, 0x1158, 0x00e6, 0x00f6, 0x2071, -+ 0x1193, 0x2079, 0x0000, 0x080c, 0x2b98, 0x00fe, 0x00ee, 0x0818, -+ 0x6004, 0x908e, 0x0021, 0x0d50, 0x908e, 0x0022, 0x090c, 0x97dc, -+ 0x0804, 0x96bb, 0x90b2, 0x0040, 0x1a04, 0x97c5, 0x2008, 0x0002, -+ 0x974a, 0x974b, 0x974e, 0x9751, 0x9754, 0x9757, 0x9748, 0x9748, -+ 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, -+ 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, -+ 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x975a, 0x9769, -+ 0x9748, 0x976b, 0x9769, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, -+ 0x9769, 0x9769, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, 0x9748, -+ 0x9748, 0x9748, 0x97a5, 0x9769, 0x9748, 0x9765, 0x9748, 0x9748, -+ 0x9748, 0x9766, 0x9748, 0x9748, 0x9748, 0x9769, 0x979c, 0x9748, -+ 0x080c, 0x0d7e, 0x00f0, 0x2001, 0x000b, 0x0460, 0x2001, 0x0003, -+ 0x0448, 0x2001, 0x0005, 0x0430, 0x2001, 0x0001, 0x0418, 0x2001, -+ 0x0009, 0x0400, 0x080c, 0x79ab, 0x6003, 0x0005, 0x2001, 0x12c2, -+ 0x2004, 0x6042, 0x080c, 0x7aa4, 0x00a0, 0x0018, 0x0010, 0x080c, -+ 0x5568, 0x0804, 0x97b6, 0x080c, 0x79ab, 0x2001, 0x12c0, 0x2004, -+ 0x601a, 0x2001, 0x12c2, 0x2004, 0x6042, 0x6003, 0x0004, 0x080c, -+ 0x7aa4, 0x0005, 0x080c, 0x5568, 0x080c, 0x79ab, 0x6003, 0x0002, -+ 0x2001, 0x12c2, 0x2004, 0x6042, 0x0036, 0x2019, 0x115d, 0x2304, -+ 0x9084, 0xff00, 0x1120, 0x2001, 0x12c0, 0x201c, 0x0040, 0x8007, -+ 0x909a, 0x0004, 0x0ec0, 0x8003, 0x801b, 0x831b, 0x9318, 0x631a, -+ 0x003e, 0x080c, 0x7aa4, 0x08e8, 0x080c, 0x79ab, 0x080c, 0xad68, -+ 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x08a0, 0x00e6, 0x00f6, 0x2071, -+ 0x1193, 0x2079, 0x0000, 0x080c, 0x2b98, 0x00fe, 0x00ee, 0x080c, -+ 0x79ab, 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0818, 0x080c, 0x79ab, -+ 0x2001, 0x12c2, 0x2004, 0x6042, 0x6003, 0x0002, 0x2001, 0x12c0, -+ 0x2004, 0x601a, 0x080c, 0x7aa4, 0x0005, 0x2600, 0x2008, 0x0002, -+ 0x97da, 0x97da, 0x97da, 0x97b6, 0x97b6, 0x97da, 0x97da, 0x97da, -+ 0x97da, 0x97b6, 0x97da, 0x97b6, 0x97da, 0x97b6, 0x97da, 0x97da, -+ 0x97da, 0x97da, 0x080c, 0x0d7e, 0x00e6, 0x0026, 0x0016, 0x080c, -+ 0xa942, 0x0500, 0x6014, 0x2070, 0x7064, 0x9086, 0x0139, 0x1140, -+ 0x2001, 0x0030, 0x900e, 0x2011, 0x4005, 0x080c, 0xaec0, 0x0090, -+ 0x7068, 0xd0fc, 0x0178, 0x7007, 0x0000, 0x0016, 0x6004, 0x908e, -+ 0x0021, 0x0160, 0x908e, 0x003d, 0x0148, 0x001e, 0x7067, 0x0103, -+ 0x7033, 0x0100, 0x001e, 0x002e, 0x00ee, 0x0005, 0x001e, 0x0009, -+ 0x0cc8, 0x00e6, 0x9cf0, 0x0005, 0x2e74, 0x7000, 0x2070, 0x7067, -+ 0x0103, 0x7023, 0x8001, 0x00ee, 0x0005, 0x00d6, 0x6610, 0x2668, -+ 0x6804, 0x9084, 0x00ff, 0x00de, 0x90b2, 0x000c, 0x1a0c, 0x0d7e, -+ 0x6604, 0x96b6, 0x004d, 0x1120, 0x080c, 0xadf6, 0x0804, 0x9892, -+ 0x6604, 0x96b6, 0x0043, 0x1120, 0x080c, 0xae39, 0x0804, 0x9892, -+ 0x6604, 0x96b6, 0x004b, 0x1120, 0x080c, 0xae66, 0x0804, 0x9892, -+ 0x6604, 0x96b6, 0x0033, 0x1120, 0x080c, 0xad8b, 0x0804, 0x9892, -+ 0x6604, 0x96b6, 0x0028, 0x1120, 0x080c, 0xab5e, 0x0804, 0x9892, -+ 0x6604, 0x96b6, 0x0029, 0x1120, 0x080c, 0xab9a, 0x0804, 0x9892, -+ 0x6604, 0x96b6, 0x001f, 0x1118, 0x080c, 0x9255, 0x04d8, 0x6604, -+ 0x96b6, 0x0000, 0x1118, 0x080c, 0x9565, 0x04a0, 0x6604, 0x96b6, -+ 0x0022, 0x1118, 0x080c, 0x9283, 0x0468, 0x6604, 0x96b6, 0x0035, -+ 0x1118, 0x080c, 0x9381, 0x0430, 0x6604, 0x96b6, 0x0039, 0x1118, -+ 0x080c, 0x94ef, 0x00f8, 0x6604, 0x96b6, 0x003d, 0x1118, 0x080c, -+ 0x929d, 0x00c0, 0x6604, 0x96b6, 0x0044, 0x1118, 0x080c, 0x92d5, -+ 0x0088, 0x6604, 0x96b6, 0x0049, 0x1118, 0x080c, 0x9319, 0x0050, -+ 0x91b6, 0x0015, 0x1110, 0x0053, 0x0028, 0x91b6, 0x0016, 0x1118, -+ 0x0804, 0x9ab5, 0x0005, 0x080c, 0x8f6e, 0x0ce0, 0x98b0, 0x98b3, -+ 0x98b0, 0x98f6, 0x98b0, 0x9a2c, 0x9ac3, 0x98b0, 0x98b0, 0x9a8f, -+ 0x98b0, 0x9aa5, 0x00e6, 0x080c, 0x1303, 0x9cf0, 0x0005, 0x2e74, -+ 0x7000, 0x2070, 0x7067, 0x0103, 0x00ee, 0x080c, 0x8ed9, 0x0005, -+ 0xa001, 0xa001, 0x0005, 0x00e6, 0x2071, 0x1100, 0x7088, 0x9086, -+ 0x0074, 0x1540, 0x080c, 0xbe99, 0x11b0, 0x6010, 0x00d6, 0x2068, -+ 0x7030, 0xd08c, 0x0128, 0x6800, 0xd0bc, 0x0110, 0xc0c5, 0x6802, -+ 0x00e9, 0x00de, 0x2001, 0x0006, 0x080c, 0x5568, 0x080c, 0x2886, -+ 0x080c, 0x8ed9, 0x0088, 0x2001, 0x000a, 0x080c, 0x5568, 0x080c, -+ 0x2886, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x75be, 0x080c, -+ 0x7aa4, 0x0010, 0x080c, 0x9a13, 0x00ee, 0x0005, 0x6800, 0xd084, -+ 0x0160, 0x9006, 0x080c, 0x5556, 0x2069, 0x1152, 0x6804, 0xd0a4, -+ 0x0120, 0x2001, 0x0006, 0x080c, 0x5592, 0x0005, 0x00d6, 0x2011, -+ 0x1122, 0x2204, 0x9086, 0x0074, 0x1904, 0x9a10, 0x6010, 0x2068, -+ 0x6aa0, 0x9286, 0x007e, 0x1120, 0x080c, 0x9c04, 0x0804, 0x9971, -+ 0x080c, 0x9bfa, 0x6010, 0x2068, 0x6aa0, 0x9286, 0x0080, 0x1530, -+ 0x6813, 0x00ff, 0x6817, 0xfffc, 0x6014, 0x9005, 0x01a8, 0x2068, -+ 0x6864, 0x9084, 0x00ff, 0x9086, 0x0039, 0x1140, 0x2001, 0x0000, -+ 0x900e, 0x2011, 0x4000, 0x080c, 0xaec0, 0x0030, 0x6807, 0x0000, -+ 0x6867, 0x0103, 0x6833, 0x0200, 0x2001, 0x0006, 0x080c, 0x5568, -+ 0x080c, 0x2886, 0x080c, 0x8ed9, 0x0804, 0x9a11, 0x00e6, 0x2071, -+ 0x1136, 0x2e04, 0xd09c, 0x0188, 0x2071, 0x0260, 0x7108, 0x720c, -+ 0x918c, 0x00ff, 0x1118, 0x9284, 0xff00, 0x0138, 0x6010, 0x2070, -+ 0x70a0, 0xd0bc, 0x1110, 0x7112, 0x7216, 0x00ee, 0x6014, 0x9005, -+ 0x0190, 0x2068, 0x6868, 0xd0f4, 0x0170, 0x6864, 0x9084, 0x00ff, -+ 0x9086, 0x0039, 0x1958, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, -+ 0x080c, 0xaec0, 0x0848, 0x2001, 0x0004, 0x080c, 0x5568, 0x6003, -+ 0x0001, 0x6007, 0x0003, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0804, -+ 0x9a11, 0x685c, 0xd0e4, 0x01d8, 0x080c, 0xad0a, 0x080c, 0x62e4, -+ 0x0118, 0xd0dc, 0x1904, 0x992c, 0x2011, 0x1136, 0x2204, 0xc0ad, -+ 0x2012, 0x2001, 0x1298, 0x2004, 0x00f6, 0x2079, 0x0100, 0x78e3, -+ 0x0000, 0x080c, 0x1fb8, 0x78e2, 0x00fe, 0x0804, 0x992c, 0x080c, -+ 0xad47, 0x2011, 0x1136, 0x2204, 0xc0a5, 0x2012, 0x0006, 0x080c, -+ 0xbfdb, 0x000e, 0x1904, 0x992c, 0xc0b5, 0x2012, 0x2001, 0x0006, -+ 0x080c, 0x5568, 0x9006, 0x080c, 0x5556, 0x00c6, 0x2001, 0x110e, -+ 0x2004, 0xd09c, 0x0520, 0x00f6, 0x2079, 0x0100, 0x00e6, 0x2071, -+ 0x1100, 0x700c, 0x9084, 0x00ff, 0x78e6, 0x7076, 0x7010, 0x78ea, -+ 0x707a, 0x908c, 0x00ff, 0x00ee, 0x780c, 0xc0b5, 0x780e, 0x00fe, -+ 0x080c, 0x1f8d, 0x00f6, 0x2100, 0x900e, 0x080c, 0x1f63, 0x7956, -+ 0x00fe, 0x9186, 0x0081, 0x01d8, 0x2009, 0x0081, 0x00c8, 0x2009, -+ 0x00ef, 0x00f6, 0x2079, 0x0100, 0x79ea, 0x7932, 0x7936, 0x780c, -+ 0xc0b5, 0x780e, 0x00fe, 0x080c, 0x1f8d, 0x00f6, 0x2079, 0x1100, -+ 0x797a, 0x2100, 0x900e, 0x080c, 0x1f63, 0x7956, 0x00fe, 0x8108, -+ 0x080c, 0x55b3, 0x2c00, 0x00ce, 0x1904, 0x992c, 0x6012, 0x2009, -+ 0x110e, 0x210c, 0xd19c, 0x0168, 0x2009, 0x027c, 0x9080, 0x0004, -+ 0x210c, 0x918c, 0x00ff, 0x2102, 0x2009, 0x027d, 0x210c, 0x8000, -+ 0x2102, 0x2001, 0x0002, 0x080c, 0x5568, 0x6023, 0x0001, 0x6003, -+ 0x0001, 0x6007, 0x0002, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0008, -+ 0x0011, 0x00de, 0x0005, 0x2030, 0x2001, 0x0007, 0x080c, 0x5568, -+ 0x2001, 0x1100, 0x2004, 0x9086, 0x0003, 0x1120, 0x2001, 0x0007, -+ 0x080c, 0x5592, 0x080c, 0x2886, 0x6020, 0x9086, 0x000a, 0x1108, -+ 0x0005, 0x080c, 0x8ed9, 0x0005, 0x00e6, 0x0026, 0x0016, 0x2071, -+ 0x1100, 0x7088, 0x9086, 0x0014, 0x1904, 0x9a87, 0x7000, 0x9086, -+ 0x0003, 0x1178, 0x6014, 0x9005, 0x1160, 0x0036, 0x0046, 0x6010, -+ 0x9080, 0x0028, 0x201c, 0x2021, 0x0006, 0x080c, 0x4026, 0x004e, -+ 0x003e, 0x00d6, 0x6010, 0x2068, 0x080c, 0x56a8, 0x080c, 0x98e6, -+ 0x00de, 0x080c, 0x9cc9, 0x1598, 0x6010, 0x00d6, 0x2068, 0x6890, -+ 0x00de, 0x9005, 0x0560, 0x2001, 0x0006, 0x080c, 0x5568, 0x00e6, -+ 0x6014, 0x9075, 0x01d0, 0x7064, 0x9084, 0x00ff, 0x9086, 0x0039, -+ 0x1140, 0x2001, 0x0000, 0x900e, 0x2011, 0x4000, 0x080c, 0xaec0, -+ 0x0060, 0x7064, 0x9084, 0x00ff, 0x9086, 0x0029, 0x0130, 0x7007, -+ 0x0000, 0x7067, 0x0103, 0x7033, 0x0200, 0x00ee, 0x080c, 0x2886, -+ 0x6020, 0x9086, 0x000a, 0x0138, 0x080c, 0x8ed9, 0x0020, 0x080c, -+ 0x97dc, 0x080c, 0x9a13, 0x001e, 0x002e, 0x00ee, 0x0005, 0x2011, -+ 0x1122, 0x2204, 0x9086, 0x0014, 0x1168, 0x2001, 0x0002, 0x080c, -+ 0x5568, 0x6003, 0x0001, 0x6007, 0x0001, 0x080c, 0x75be, 0x080c, -+ 0x7aa4, 0x0010, 0x080c, 0x9a13, 0x0005, 0x2011, 0x1122, 0x2204, -+ 0x9086, 0x0004, 0x1138, 0x2001, 0x0007, 0x080c, 0x5568, 0x080c, -+ 0x8ed9, 0x0010, 0x080c, 0x9a13, 0x0005, 0x000b, 0x0005, 0x98b0, -+ 0x9ace, 0x98b0, 0x9b03, 0x98b0, 0x9bb0, 0x9ac3, 0x98b0, 0x98b0, -+ 0x9bc5, 0x98b0, 0x9bd7, 0x6604, 0x9686, 0x0003, 0x0904, 0x9a2c, -+ 0x96b6, 0x001e, 0x1110, 0x080c, 0x8ed9, 0x0005, 0x00d6, 0x00c6, -+ 0x080c, 0x9be9, 0x1180, 0x9006, 0x080c, 0x5556, 0x2001, 0x0002, -+ 0x080c, 0x5568, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x75be, -+ 0x080c, 0x7aa4, 0x00e8, 0x2009, 0x026e, 0x2104, 0x9086, 0x0009, -+ 0x1160, 0x6010, 0x2068, 0x6840, 0x9084, 0x00ff, 0x9005, 0x0170, -+ 0x8001, 0x6842, 0x601b, 0x000a, 0x0058, 0x2009, 0x026f, 0x2104, -+ 0x9084, 0xff00, 0x9086, 0x1900, 0x1108, 0x08c0, 0x080c, 0x9a13, -+ 0x00ce, 0x00de, 0x0005, 0x0026, 0x9016, 0x080c, 0x9bf7, 0x00d6, -+ 0x2069, 0x12a7, 0x2d04, 0x9005, 0x0168, 0x6010, 0x2068, 0x68a0, -+ 0x9086, 0x007e, 0x1138, 0x2069, 0x111e, 0x2d04, 0x8000, 0x206a, -+ 0x00de, 0x0010, 0x00de, 0x0088, 0x9006, 0x080c, 0x5556, 0x2001, -+ 0x0002, 0x080c, 0x5568, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, -+ 0x75be, 0x080c, 0x7aa4, 0x0804, 0x9b7e, 0x080c, 0xa942, 0x01b0, -+ 0x6014, 0x9080, 0x0019, 0x2004, 0x2010, 0x9086, 0x0139, 0x1128, -+ 0x2001, 0x0002, 0x080c, 0xaf0f, 0x00c8, 0x6014, 0x9080, 0x001a, -+ 0x2004, 0xd0fc, 0x0118, 0x2001, 0x0001, 0x0ca0, 0x2001, 0x110d, -+ 0x2004, 0xd0dc, 0x0158, 0x6010, 0x00d6, 0x2068, 0x6840, 0x00de, -+ 0x9084, 0x00ff, 0x9005, 0x1110, 0x9006, 0x0c20, 0x080c, 0x97dc, -+ 0x2009, 0x026e, 0x2134, 0x96b4, 0x00ff, 0x9686, 0x0005, 0x0500, -+ 0x9686, 0x000b, 0x01c8, 0x2009, 0x026f, 0x2104, 0x9084, 0xff00, -+ 0x1118, 0x9686, 0x0009, 0x01a0, 0x9086, 0x1900, 0x1168, 0x9686, -+ 0x0009, 0x0170, 0x2001, 0x0004, 0x080c, 0x5568, 0x2001, 0x0028, -+ 0x601a, 0x6007, 0x0052, 0x0010, 0x080c, 0x9a13, 0x002e, 0x0005, -+ 0x00d6, 0x9286, 0x0139, 0x0160, 0x6014, 0x2068, 0x080c, 0xa942, -+ 0x0148, 0x6864, 0x9086, 0x0139, 0x0118, 0x6868, 0xd0fc, 0x0110, -+ 0x00de, 0x0c50, 0x6010, 0x2068, 0x6840, 0x9084, 0x00ff, 0x9005, -+ 0x0140, 0x8001, 0x6842, 0x601b, 0x000a, 0x6007, 0x0016, 0x00de, -+ 0x08e8, 0x68a0, 0x9086, 0x007e, 0x1138, 0x00e6, 0x2071, 0x1100, -+ 0x080c, 0x5092, 0x00ee, 0x0010, 0x080c, 0x2862, 0x00de, 0x0860, -+ 0x080c, 0x9bf7, 0x1168, 0x2001, 0x0004, 0x080c, 0x5568, 0x6003, -+ 0x0001, 0x6007, 0x0003, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0020, -+ 0x080c, 0x97dc, 0x080c, 0x9a13, 0x0005, 0x0489, 0x1168, 0x2001, -+ 0x0008, 0x080c, 0x5568, 0x6003, 0x0001, 0x6007, 0x0005, 0x080c, -+ 0x75be, 0x080c, 0x7aa4, 0x0010, 0x080c, 0x9a13, 0x0005, 0x00f9, -+ 0x1168, 0x2001, 0x000a, 0x080c, 0x5568, 0x6003, 0x0001, 0x6007, -+ 0x0001, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0010, 0x080c, 0x9a13, -+ 0x0005, 0x2009, 0x026e, 0x2104, 0x9086, 0x0003, 0x1138, 0x2009, -+ 0x026f, 0x2104, 0x9084, 0xff00, 0x9086, 0x2a00, 0x0005, 0x9085, -+ 0x0001, 0x0005, 0x00c6, 0x0016, 0x9c88, 0x0004, 0x2164, 0x080c, -+ 0x5617, 0x001e, 0x00ce, 0x0005, 0x00f6, 0x00e6, 0x00d6, 0x0036, -+ 0x0016, 0x6010, 0x2068, 0x2009, 0x1136, 0x2104, 0x9085, 0x0003, -+ 0x200a, 0x080c, 0x9c9e, 0x0560, 0x2009, 0x1136, 0x2104, 0xc0cd, -+ 0x200a, 0x080c, 0x58cb, 0x0158, 0x9006, 0x2020, 0x2009, 0x002a, -+ 0x080c, 0xc12f, 0x2001, 0x110c, 0x200c, 0xc195, 0x2102, 0x2019, -+ 0x002a, 0x2009, 0x0001, 0x080c, 0x2831, 0x00e6, 0x2071, 0x1100, -+ 0x080c, 0x2679, 0x00ee, 0x00c6, 0x0156, 0x20a9, 0x0081, 0x2009, -+ 0x007f, 0x080c, 0x2955, 0x8108, 0x1f04, 0x9c39, 0x015e, 0x00ce, -+ 0x080c, 0x9bfa, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0x0260, -+ 0x2079, 0x0200, 0x7817, 0x0001, 0x2001, 0x1136, 0x200c, 0xc1c5, -+ 0x7018, 0xd0fc, 0x0110, 0xd0dc, 0x0118, 0x7038, 0xd0dc, 0x1108, -+ 0xc1c4, 0x7817, 0x0000, 0x2001, 0x1136, 0x2102, 0x2079, 0x0100, -+ 0x2e04, 0x9084, 0x00ff, 0x2069, 0x111d, 0x206a, 0x78e6, 0x0006, -+ 0x8e70, 0x2e04, 0x2069, 0x111e, 0x206a, 0x78ea, 0x7832, 0x7836, -+ 0x2010, 0x9084, 0xff00, 0x001e, 0x9105, 0x2009, 0x112a, 0x200a, -+ 0x2200, 0x9084, 0x00ff, 0x2008, 0x080c, 0x1f8d, 0x080c, 0x62e4, -+ 0x0170, 0x2071, 0x0260, 0x2069, 0x12bc, 0x7048, 0x206a, 0x704c, -+ 0x6806, 0x7050, 0x680a, 0x7054, 0x680e, 0x080c, 0xad0a, 0x0040, -+ 0x2001, 0x0006, 0x080c, 0x5568, 0x080c, 0x2886, 0x080c, 0x8ed9, -+ 0x001e, 0x003e, 0x00de, 0x00ee, 0x00fe, 0x0005, 0x0026, 0x0036, -+ 0x00e6, 0x0156, 0x2019, 0x112a, 0x231c, 0x83ff, 0x01e8, 0x2071, -+ 0x0260, 0x7200, 0x9294, 0x00ff, 0x7004, 0x9084, 0xff00, 0x9205, -+ 0x9306, 0x1190, 0x2011, 0x0276, 0x20a9, 0x0004, 0x9d98, 0x000a, -+ 0x080c, 0x9d60, 0x1148, 0x2011, 0x027a, 0x20a9, 0x0004, 0x9d98, -+ 0x0006, 0x080c, 0x9d60, 0x1100, 0x015e, 0x00ee, 0x003e, 0x002e, -+ 0x0005, 0x00e6, 0x2071, 0x0260, 0x7034, 0x9086, 0x0014, 0x11a8, -+ 0x7038, 0x9086, 0x0800, 0x1188, 0x703c, 0xd0ec, 0x0160, 0x9084, -+ 0x0f00, 0x9086, 0x0100, 0x1138, 0x7054, 0xd0a4, 0x1110, 0xd0ac, -+ 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x00ee, 0x0005, 0x00e6, -+ 0x00d6, 0x00c6, 0x0076, 0x0056, 0x0046, 0x0026, 0x0006, 0x0126, -+ 0x2091, 0x8000, 0x2029, 0x130d, 0x252c, 0x2021, 0x1313, 0x2424, -+ 0x2061, 0x15c0, 0x2071, 0x1100, 0x724c, 0x706c, 0x9202, 0x1a04, -+ 0x9d4c, 0x080c, 0xc15b, 0x0904, 0x9d45, 0x6720, 0x9786, 0x0001, -+ 0x05e0, 0x9786, 0x0007, 0x05c8, 0x2500, 0x9c06, 0x05b0, 0x2400, -+ 0x9c06, 0x0598, 0x3e08, 0x9186, 0x0002, 0x1140, 0x6010, 0x9005, -+ 0x0128, 0x9080, 0x0000, 0x2004, 0xd0bc, 0x1538, 0x00c6, 0x6000, -+ 0x9086, 0x0004, 0x1110, 0x080c, 0x1509, 0x9786, 0x0008, 0x1148, -+ 0x080c, 0xab2e, 0x1130, 0x00ce, 0x080c, 0x97dc, 0x080c, 0x8f09, -+ 0x00a0, 0x6014, 0x2068, 0x080c, 0xa942, 0x0160, 0x9786, 0x0003, -+ 0x11e8, 0x6867, 0x0103, 0x6b7a, 0x6877, 0x0000, 0x080c, 0x5b76, -+ 0x080c, 0xab11, 0x080c, 0x8f09, 0x00ce, 0x9ce0, 0x0018, 0x7060, -+ 0x9c02, 0x1210, 0x0804, 0x9cfc, 0x012e, 0x000e, 0x002e, 0x004e, -+ 0x005e, 0x007e, 0x00ce, 0x00de, 0x00ee, 0x0005, 0x9786, 0x0006, -+ 0x1118, 0x080c, 0xc0e9, 0x0c30, 0x9786, 0x000a, 0x09e0, 0x08c8, -+ 0x220c, 0x2304, 0x9106, 0x1130, 0x8210, 0x8318, 0x1f04, 0x9d60, -+ 0x9006, 0x0005, 0x2304, 0x9102, 0x0218, 0x2001, 0x0001, 0x0008, -+ 0x9006, 0x918d, 0x0001, 0x0005, 0x0136, 0x01c6, 0x0016, 0x8906, -+ 0x8006, 0x8007, 0x908c, 0x003f, 0x21e0, 0x9084, 0xffc0, 0x9300, -+ 0x2098, 0x3518, 0x20a9, 0x0001, 0x220c, 0x4002, 0x910e, 0x1140, -+ 0x8210, 0x8319, 0x1dc8, 0x9006, 0x001e, 0x01ce, 0x013e, 0x0005, -+ 0x220c, 0x9102, 0x0218, 0x2001, 0x0001, 0x0010, 0x2001, 0x0000, -+ 0x918d, 0x0001, 0x001e, 0x01ce, 0x013e, 0x0005, 0x6004, 0x908a, -+ 0x0053, 0x1a0c, 0x0d7e, 0x080c, 0xab1d, 0x0120, 0x080c, 0xab2e, -+ 0x0168, 0x0028, 0x080c, 0x2886, 0x080c, 0xab2e, 0x0138, 0x080c, -+ 0x79ab, 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, 0x080c, 0x97dc, -+ 0x0cb0, 0x9182, 0x0040, 0x0002, 0x9dcf, 0x9dcf, 0x9dcf, 0x9dcf, -+ 0x9dcf, 0x9dcf, 0x9dcf, 0x9dcf, 0x9dcf, 0x9dcf, 0x9dcf, 0x9dd1, -+ 0x9dd1, 0x9dd1, 0x9dd1, 0x9dcf, 0x9dcf, 0x9dcf, 0x9dd1, 0x080c, -+ 0x0d7e, 0x600b, 0xffff, 0x6003, 0x0001, 0x6106, 0x080c, 0x756e, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x7aa4, 0x012e, 0x0005, 0x9186, -+ 0x0013, 0x1128, 0x6004, 0x9082, 0x0040, 0x0804, 0x9e6c, 0x9186, -+ 0x0027, 0x11e8, 0x080c, 0x79ab, 0x080c, 0x2862, 0x00d6, 0x6114, -+ 0x2168, 0x080c, 0xa942, 0x0168, 0x6867, 0x0103, 0x687b, 0x0029, -+ 0x6877, 0x0000, 0x697c, 0xc1c5, 0x697e, 0x080c, 0x5b76, 0x080c, -+ 0xab11, 0x00de, 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, 0x9186, -+ 0x0014, 0x1120, 0x6004, 0x9082, 0x0040, 0x0430, 0x9186, 0x0046, -+ 0x0150, 0x9186, 0x0045, 0x0138, 0x9186, 0x0053, 0x0120, 0x9186, -+ 0x0048, 0x190c, 0x0d7e, 0x2001, 0x0109, 0x2004, 0xd084, 0x0198, -+ 0x0126, 0x2091, 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x745c, -+ 0x002e, 0x001e, 0x000e, 0x012e, 0xa001, 0x6000, 0x9086, 0x0002, -+ 0x1110, 0x0804, 0x9eaf, 0x0005, 0x0002, 0x9e4a, 0x9e48, 0x9e48, -+ 0x9e48, 0x9e48, 0x9e48, 0x9e48, 0x9e48, 0x9e48, 0x9e48, 0x9e48, -+ 0x9e65, 0x9e65, 0x9e65, 0x9e65, 0x9e48, 0x9e65, 0x9e48, 0x9e65, -+ 0x080c, 0x0d7e, 0x080c, 0x79ab, 0x00d6, 0x6114, 0x2168, 0x080c, -+ 0xa942, 0x0168, 0x6867, 0x0103, 0x687b, 0x0006, 0x6877, 0x0000, -+ 0x6880, 0xc0ec, 0x6882, 0x080c, 0x5b76, 0x080c, 0xab11, 0x00de, -+ 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, 0x080c, 0x79ab, 0x080c, -+ 0x8ed9, 0x080c, 0x7aa4, 0x0005, 0x0002, 0x9e82, 0x9e80, 0x9e80, -+ 0x9e80, 0x9e80, 0x9e80, 0x9e80, 0x9e80, 0x9e80, 0x9e80, 0x9e80, -+ 0x9e99, 0x9e99, 0x9e99, 0x9e99, 0x9e80, 0x9ea8, 0x9e80, 0x9e99, -+ 0x080c, 0x0d7e, 0x00d6, 0x080c, 0x79ab, 0x6014, 0x2068, 0x2001, -+ 0x12c2, 0x2004, 0x6042, 0x697c, 0xd1ac, 0x0140, 0x6003, 0x0004, -+ 0x687c, 0x9085, 0x0400, 0x687e, 0x00de, 0x0005, 0x6003, 0x0002, -+ 0x0cb8, 0x080c, 0x79ab, 0x2001, 0x12c0, 0x2004, 0x601a, 0x2001, -+ 0x12c2, 0x2004, 0x6042, 0x6003, 0x000f, 0x080c, 0x7aa4, 0x0005, -+ 0x080c, 0x79ab, 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, 0x9182, -+ 0x0040, 0x0002, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec8, -+ 0x9fa9, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, -+ 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, 0x9ec6, 0x9fd8, 0x080c, 0x0d7e, -+ 0x00d6, 0x6114, 0x2168, 0x7644, 0x96b4, 0x0fff, 0x86ff, 0x1518, -+ 0x6010, 0x2004, 0xd0bc, 0x1904, 0x9f94, 0x687b, 0x0000, 0x6867, -+ 0x0103, 0x6e76, 0x687c, 0xd0ac, 0x0128, 0x6834, 0x6938, 0x9115, -+ 0x190c, 0xa12c, 0x080c, 0x599a, 0x6210, 0x2268, 0x6a3c, 0x82ff, -+ 0x0110, 0x8211, 0x6a3e, 0x7044, 0xd0e4, 0x1904, 0x9f74, 0x080c, -+ 0x8ed9, 0x00de, 0x0005, 0x968c, 0x0c00, 0x0148, 0x6010, 0x2004, -+ 0xd0bc, 0x1904, 0x9f78, 0x7348, 0x6b92, 0x734c, 0x6b8e, 0x968c, -+ 0x00ff, 0x9186, 0x0002, 0x0508, 0x9186, 0x0028, 0x1118, 0x687b, -+ 0x001c, 0x00e8, 0xd6dc, 0x01a0, 0x687b, 0x0015, 0x687c, 0xd0ac, -+ 0x0170, 0x6938, 0x6a34, 0x2100, 0x9205, 0x0148, 0x7048, 0x9106, -+ 0x1118, 0x704c, 0x9206, 0x0118, 0x6992, 0x6a8e, 0xc6dc, 0x0038, -+ 0xd6d4, 0x0118, 0x687b, 0x0007, 0x0010, 0x687b, 0x0000, 0x6867, -+ 0x0103, 0x6e76, 0x901e, 0xd6c4, 0x01d8, 0x9686, 0x0100, 0x1130, -+ 0x7064, 0x9005, 0x1118, 0xc6c4, 0x0804, 0x9ece, 0x735c, 0x6b86, -+ 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008, 0x0036, -+ 0x2308, 0x2019, 0x0018, 0x9d90, 0x0025, 0x080c, 0xa5c9, 0x003e, -+ 0xd6cc, 0x0904, 0x9ee2, 0x7154, 0x698a, 0x81ff, 0x0904, 0x9ee2, -+ 0x9192, 0x0021, 0x1278, 0x8304, 0x9098, 0x0018, 0x9d90, 0x0029, -+ 0x080c, 0xa5c9, 0x2011, 0x0205, 0x2013, 0x0000, 0x080c, 0xaf7b, -+ 0x0804, 0x9ee2, 0x6868, 0xd0fc, 0x0120, 0x2009, 0x0020, 0x698a, -+ 0x0c50, 0x00f6, 0x2d78, 0x080c, 0xa568, 0x00fe, 0x080c, 0xaf7b, -+ 0x080c, 0xa5b9, 0x0804, 0x9ee4, 0x080c, 0xac0b, 0x0804, 0x9ef1, -+ 0x687c, 0xd0ac, 0x0904, 0x9efb, 0x6024, 0xd0dc, 0x1904, 0x9efb, -+ 0x6880, 0xd0bc, 0x1904, 0x9efb, 0x7348, 0x6838, 0x9306, 0x11e8, -+ 0x734c, 0x6834, 0x931e, 0x0904, 0x9efb, 0xd6d4, 0x01b0, 0x6b38, -+ 0x9305, 0x0904, 0x9efb, 0x0088, 0x687c, 0xd0ac, 0x0904, 0x9ed5, -+ 0x6838, 0x6934, 0x9105, 0x0904, 0x9ed5, 0x6024, 0xd0dc, 0x1904, -+ 0x9ed5, 0x6880, 0xd0bc, 0x1904, 0x9ed5, 0x080c, 0xac39, 0x0804, -+ 0x9ef1, 0x00f6, 0x6003, 0x0003, 0x2079, 0x026c, 0x7c04, 0x7b00, -+ 0x7e0c, 0x7d08, 0x6014, 0x2078, 0x787c, 0xd0ac, 0x0138, 0x6003, -+ 0x0002, 0x00fe, 0x0005, 0x2130, 0x2228, 0x0058, 0x2400, 0x79ac, -+ 0x910a, 0x2300, 0x7ab0, 0x9213, 0x2600, 0x9102, 0x2500, 0x9203, -+ 0x0e90, 0x7c36, 0x7b3a, 0x7e46, 0x7d4a, 0x00fe, 0x6043, 0x0000, -+ 0x2c10, 0x080c, 0x1605, 0x080c, 0x75db, 0x080c, 0x7b72, 0x0005, -+ 0x0005, 0x9182, 0x0040, 0x0002, 0x9fef, 0x9fef, 0x9fef, 0x9fef, -+ 0x9fef, 0x9ff1, 0xa085, 0x9fef, 0x9fef, 0xa09b, 0xa103, 0x9fef, -+ 0x9fef, 0x9fef, 0x9fef, 0xa112, 0x9fef, 0x9fef, 0x9fef, 0x080c, -+ 0x0d7e, 0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, 0x0260, 0x6114, -+ 0x2178, 0x7644, 0x7e76, 0x96b4, 0x0fff, 0x7f7c, 0xc7e5, 0x7f7e, -+ 0x6210, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, 0x6a3e, 0x86ff, -+ 0x0904, 0xa080, 0x9694, 0xff00, 0x9284, 0x0c00, 0x0120, 0x7048, -+ 0x7892, 0x704c, 0x788e, 0x9284, 0x0300, 0x0904, 0xa080, 0x080c, -+ 0x0eb6, 0x090c, 0x0d7e, 0x2d00, 0x787a, 0x7f7c, 0xc7cd, 0x7f7e, -+ 0x6867, 0x0103, 0x7868, 0x686a, 0x786c, 0x686e, 0x7870, 0x6872, -+ 0x6e76, 0x968c, 0x0c00, 0x0120, 0x7348, 0x6b92, 0x734c, 0x6b8e, -+ 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, 0x1118, -+ 0x687b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0x687b, 0x0015, 0x0038, -+ 0xd6d4, 0x0118, 0x687b, 0x0007, 0x0010, 0x687b, 0x0000, 0x6f7e, -+ 0x7880, 0x6882, 0x7884, 0x6886, 0x901e, 0xd6c4, 0x0190, 0x735c, -+ 0x6b86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008, -+ 0x0036, 0x2308, 0x2019, 0x0018, 0x9d90, 0x0025, 0x080c, 0xa5c9, -+ 0x003e, 0xd6cc, 0x01e8, 0x7154, 0x698a, 0x81ff, 0x01c8, 0x9192, -+ 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x9d90, 0x0029, 0x080c, -+ 0xa5c9, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0x7868, 0xd0fc, -+ 0x0120, 0x2009, 0x0020, 0x698a, 0x0c68, 0x2d78, 0x080c, 0xa568, -+ 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, 0x00f6, 0x6003, 0x0003, -+ 0x2079, 0x026c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6014, 0x2078, -+ 0x7c36, 0x7b3a, 0x7e46, 0x7d4a, 0x00fe, 0x2c10, 0x080c, 0x1605, -+ 0x080c, 0x856f, 0x0005, 0x00d6, 0x2001, 0x12c2, 0x2004, 0x6042, -+ 0x6003, 0x0002, 0x080c, 0x7a55, 0x080c, 0x7b72, 0x6114, 0x2168, -+ 0x697c, 0xd1e4, 0x0904, 0xa0fe, 0xd1cc, 0x0570, 0x6978, 0x6868, -+ 0xd0fc, 0x0500, 0x0016, 0x687c, 0x0006, 0x6880, 0x0006, 0x9d90, -+ 0x0019, 0x9198, 0x0019, 0x2009, 0x0020, 0x0156, 0x21a8, 0x2304, -+ 0x2012, 0x8318, 0x8210, 0x1f04, 0xa0bf, 0x015e, 0x000e, 0x6882, -+ 0x000e, 0x687e, 0x001e, 0x6874, 0x0006, 0x2168, 0x080c, 0x0edf, -+ 0x001e, 0x0440, 0x0016, 0x080c, 0x0edf, 0x00de, 0x6974, 0x0016, -+ 0x080c, 0xa5b9, 0x001e, 0x00f0, 0x6867, 0x0103, 0x6974, 0x9184, -+ 0x00ff, 0x90b6, 0x0002, 0x0180, 0x9086, 0x0028, 0x1118, 0x687b, -+ 0x001c, 0x0060, 0xd1dc, 0x0118, 0x687b, 0x0015, 0x0038, 0xd1d4, -+ 0x0118, 0x687b, 0x0007, 0x0010, 0x687b, 0x0000, 0x0016, 0x080c, -+ 0x599a, 0x001e, 0xd1e4, 0x1120, 0x080c, 0x8ed9, 0x00de, 0x0005, -+ 0x080c, 0xac0b, 0x0cd8, 0x2019, 0x0001, 0x080c, 0x8847, 0x6003, -+ 0x0002, 0x2001, 0x12c2, 0x2004, 0x6042, 0x080c, 0x7a55, 0x080c, -+ 0x7b72, 0x0005, 0x080c, 0x7a55, 0x080c, 0x2862, 0x00d6, 0x6114, -+ 0x2168, 0x080c, 0xa942, 0x0150, 0x6867, 0x0103, 0x687b, 0x0029, -+ 0x6877, 0x0000, 0x080c, 0x5b76, 0x080c, 0xab11, 0x00de, 0x080c, -+ 0x8ed9, 0x080c, 0x7b72, 0x0005, 0x687b, 0x0015, 0xd1fc, 0x0138, -+ 0x687b, 0x0007, 0x8002, 0x8000, 0x810a, 0x9189, 0x0000, 0x6992, -+ 0x688e, 0x0005, 0x9182, 0x0040, 0x0002, 0xa151, 0xa151, 0xa151, -+ 0xa151, 0xa151, 0xa153, 0xa151, 0xa151, 0xa1f7, 0xa151, 0xa151, -+ 0xa151, 0xa151, 0xa151, 0xa151, 0xa151, 0xa151, 0xa151, 0xa151, -+ 0xa31d, 0x080c, 0x0d7e, 0x0076, 0x00f6, 0x00e6, 0x00d6, 0x2071, -+ 0x0260, 0x6114, 0x2178, 0x7644, 0x7e76, 0x96b4, 0x0fff, 0x7f7c, -+ 0xc7e5, 0x7f7e, 0x6210, 0x2268, 0x6a3c, 0x82ff, 0x0110, 0x8211, -+ 0x6a3e, 0x86ff, 0x0904, 0xa1f0, 0x9694, 0xff00, 0x9284, 0x0c00, -+ 0x0120, 0x7048, 0x7892, 0x704c, 0x788e, 0x9284, 0x0300, 0x0904, -+ 0xa1f0, 0x9686, 0x0100, 0x1130, 0x7064, 0x9005, 0x1118, 0xc6c4, -+ 0x7e76, 0x0c38, 0x080c, 0x0eb6, 0x090c, 0x0d7e, 0x2d00, 0x787a, -+ 0x7f7c, 0x97bd, 0x0200, 0x7f7e, 0x6867, 0x0103, 0x7868, 0x686a, -+ 0x786c, 0x686e, 0x7870, 0x6872, 0x7044, 0x9084, 0xf000, 0x9635, -+ 0x6e76, 0x968c, 0x0c00, 0x0120, 0x7348, 0x6b92, 0x734c, 0x6b8e, -+ 0x968c, 0x00ff, 0x9186, 0x0002, 0x0180, 0x9186, 0x0028, 0x1118, -+ 0x687b, 0x001c, 0x0060, 0xd6dc, 0x0118, 0x687b, 0x0015, 0x0038, -+ 0xd6d4, 0x0118, 0x687b, 0x0007, 0x0010, 0x687b, 0x0000, 0x6f7e, -+ 0x7880, 0x6882, 0x7884, 0x6886, 0x901e, 0xd6c4, 0x0190, 0x735c, -+ 0x6b86, 0x83ff, 0x0170, 0x938a, 0x0009, 0x0210, 0x2019, 0x0008, -+ 0x0036, 0x2308, 0x2019, 0x0018, 0x9d90, 0x0025, 0x080c, 0xa5c9, -+ 0x003e, 0xd6cc, 0x01e8, 0x7154, 0x698a, 0x81ff, 0x01c8, 0x9192, -+ 0x0021, 0x1260, 0x8304, 0x9098, 0x0018, 0x9d90, 0x0029, 0x080c, -+ 0xa5c9, 0x2011, 0x0205, 0x2013, 0x0000, 0x0050, 0x7868, 0xd0fc, -+ 0x0120, 0x2009, 0x0020, 0x698a, 0x0c68, 0x2d78, 0x080c, 0xa568, -+ 0x080c, 0x14d3, 0x00de, 0x00ee, 0x00fe, 0x007e, 0x0005, 0x2001, -+ 0x12c2, 0x2004, 0x6042, 0x00d6, 0x6114, 0x2168, 0x683c, 0x6940, -+ 0x9105, 0x1118, 0x687c, 0xc0dc, 0x687e, 0x6003, 0x0002, 0x697c, -+ 0xd1e4, 0x0904, 0xa318, 0x6043, 0x0000, 0x6010, 0x2004, 0xd0bc, -+ 0x11f8, 0xd1cc, 0x0904, 0xa2e7, 0x6978, 0x6868, 0xd0fc, 0x0904, -+ 0xa2a8, 0x0016, 0x687c, 0x0006, 0x6880, 0x0006, 0x00f6, 0x2178, -+ 0x7974, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x0904, 0xa27b, 0x9086, -+ 0x0028, 0x15e8, 0x687b, 0x001c, 0x787b, 0x001c, 0x0804, 0xa283, -+ 0x6024, 0xd0f4, 0x11d0, 0x6838, 0x6a34, 0x9205, 0x09d0, 0x6838, -+ 0x6a90, 0x9206, 0x1120, 0x688c, 0x6a34, 0x9206, 0x0990, 0x6024, -+ 0xd0d4, 0x1148, 0x69ac, 0x6834, 0x9102, 0x603a, 0x69b0, 0x6838, -+ 0x9103, 0x603e, 0x6024, 0xc0f5, 0x6026, 0x6010, 0x00d6, 0x2068, -+ 0x683c, 0x8000, 0x683e, 0x00de, 0x9006, 0x6876, 0x6892, 0x688e, -+ 0x687c, 0xc0e4, 0x687e, 0xd0cc, 0x0130, 0x00d6, 0x6878, 0x2068, -+ 0x080c, 0x0edf, 0x00de, 0x080c, 0xac39, 0x0804, 0xa318, 0xd1dc, -+ 0x0158, 0x687b, 0x0015, 0x787b, 0x0015, 0x080c, 0xaea9, 0x0118, -+ 0x7974, 0xc1dc, 0x7976, 0x0078, 0xd1d4, 0x0128, 0x687b, 0x0007, -+ 0x787b, 0x0007, 0x0040, 0x687c, 0xd0ac, 0x0128, 0x6834, 0x6938, -+ 0x9115, 0x190c, 0xa12c, 0x687c, 0x787e, 0x6890, 0x7892, 0x688c, -+ 0x788e, 0x9d90, 0x0019, 0x9f98, 0x0019, 0x2009, 0x0020, 0x0156, -+ 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x1f04, 0xa291, 0x015e, -+ 0x00fe, 0x000e, 0x6882, 0x000e, 0x687e, 0x080c, 0xaf7b, 0x001e, -+ 0x6874, 0x0006, 0x2168, 0x080c, 0x0edf, 0x001e, 0x0804, 0xa314, -+ 0x0016, 0x00f6, 0x2178, 0x7974, 0x9184, 0x00ff, 0x90b6, 0x0002, -+ 0x01e0, 0x9086, 0x0028, 0x1128, 0x687b, 0x001c, 0x787b, 0x001c, -+ 0x00e0, 0xd1dc, 0x0158, 0x687b, 0x0015, 0x787b, 0x0015, 0x080c, -+ 0xaea9, 0x0118, 0x7974, 0xc1dc, 0x7976, 0x0078, 0xd1d4, 0x0128, -+ 0x687b, 0x0007, 0x787b, 0x0007, 0x0040, 0x687c, 0xd0ac, 0x0128, -+ 0x6834, 0x6938, 0x9115, 0x190c, 0xa12c, 0x6890, 0x7892, 0x688c, -+ 0x788e, 0x687c, 0x787e, 0x00fe, 0x080c, 0x0edf, 0x00de, 0x080c, -+ 0xaf7b, 0x6974, 0x0016, 0x080c, 0xa5b9, 0x001e, 0x0468, 0x6867, -+ 0x0103, 0x6974, 0x9184, 0x00ff, 0x90b6, 0x0002, 0x01b0, 0x9086, -+ 0x0028, 0x1118, 0x687b, 0x001c, 0x00d0, 0xd1dc, 0x0148, 0x687b, -+ 0x0015, 0x080c, 0xaea9, 0x0118, 0x6974, 0xc1dc, 0x6976, 0x0078, -+ 0xd1d4, 0x0118, 0x687b, 0x0007, 0x0050, 0x687b, 0x0000, 0x687c, -+ 0xd0ac, 0x0128, 0x6834, 0x6938, 0x9115, 0x190c, 0xa12c, 0x6974, -+ 0x0016, 0x080c, 0x599a, 0x001e, 0xd1e4, 0x1120, 0x080c, 0x8ed9, -+ 0x00de, 0x0005, 0x080c, 0xac0b, 0x0cd8, 0x0005, 0x080c, 0x79ab, -+ 0x0010, 0x080c, 0x7a55, 0x080c, 0xa942, 0x01c0, 0x00d6, 0x6114, -+ 0x2168, 0x6867, 0x0103, 0x2009, 0x110c, 0x210c, 0xd18c, 0x11c0, -+ 0xd184, 0x1198, 0x6108, 0x697a, 0x918e, 0x0029, 0x1110, 0x080c, -+ 0xc3c7, 0x6877, 0x0000, 0x080c, 0x5b76, 0x00de, 0x080c, 0x8ed9, -+ 0x080c, 0x7aa4, 0x080c, 0x7b72, 0x0005, 0x687b, 0x0004, 0x0c88, -+ 0x687b, 0x0004, 0x0c70, 0x9182, 0x0040, 0x0002, 0xa361, 0xa361, -+ 0xa361, 0xa361, 0xa361, 0xa363, 0xa361, 0xa366, 0xa361, 0xa361, -+ 0xa361, 0xa361, 0xa361, 0xa361, 0xa361, 0xa361, 0xa361, 0xa361, -+ 0xa361, 0x080c, 0x0d7e, 0x080c, 0x8ed9, 0x0005, 0x0006, 0x0026, -+ 0x9016, 0x080c, 0x137c, 0x002e, 0x000e, 0x0005, 0x9182, 0x0085, -+ 0x0002, 0xa380, 0xa37e, 0xa37e, 0xa38c, 0xa37e, 0xa37e, 0xa37e, -+ 0xa37e, 0xa37e, 0xa37e, 0xa37e, 0xa37e, 0xa37e, 0x080c, 0x0d7e, -+ 0x6003, 0x0001, 0x6106, 0x080c, 0x756e, 0x0126, 0x2091, 0x8000, -+ 0x080c, 0x7aa4, 0x012e, 0x0005, 0x0026, 0x0056, 0x00d6, 0x00e6, -+ 0x2071, 0x0260, 0x7224, 0x6216, 0x7220, 0x080c, 0xa932, 0x01a0, -+ 0x2268, 0x6800, 0x9086, 0x0000, 0x0178, 0x6010, 0x6d10, 0x952e, -+ 0x1158, 0x00c6, 0x2d60, 0x080c, 0xa5e6, 0x00ce, 0x0128, 0x6803, -+ 0x0002, 0x6007, 0x0086, 0x0010, 0x6007, 0x0087, 0x6003, 0x0001, -+ 0x080c, 0x756e, 0x080c, 0x7aa4, 0x9280, 0x0004, 0x2004, 0xd0bc, -+ 0x0150, 0x6824, 0xd0ec, 0x0138, 0x00c6, 0x2260, 0x6043, 0x0000, -+ 0x080c, 0xac39, 0x00ce, 0x00ee, 0x00de, 0x005e, 0x002e, 0x0005, -+ 0x9186, 0x0013, 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d7e, -+ 0x908a, 0x0092, 0x1a0c, 0x0d7e, 0x9082, 0x0085, 0x0072, 0x9186, -+ 0x0027, 0x0120, 0x9186, 0x0014, 0x190c, 0x0d7e, 0x080c, 0x79ab, -+ 0x080c, 0x8f09, 0x080c, 0x7aa4, 0x0005, 0xa3f2, 0xa3f4, 0xa3f4, -+ 0xa3f2, 0xa3f2, 0xa3f2, 0xa3f2, 0xa3f2, 0xa3f2, 0xa3f2, 0xa3f2, -+ 0xa3f2, 0xa3f2, 0x080c, 0x0d7e, 0x080c, 0x79ab, 0x080c, 0x8f09, -+ 0x080c, 0x7aa4, 0x0005, 0x9186, 0x0013, 0x1128, 0x6004, 0x9082, -+ 0x0085, 0x2008, 0x04a8, 0x9186, 0x0027, 0x11e8, 0x080c, 0x79ab, -+ 0x080c, 0x2862, 0x00d6, 0x6014, 0x2068, 0x080c, 0xa942, 0x0150, -+ 0x6867, 0x0103, 0x6877, 0x0000, 0x687b, 0x0029, 0x080c, 0x5b76, -+ 0x080c, 0xab11, 0x00de, 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, -+ 0x080c, 0x8f6e, 0x0ce0, 0x9186, 0x0014, 0x1dd0, 0x080c, 0x79ab, -+ 0x00d6, 0x6014, 0x2068, 0x080c, 0xa942, 0x0d60, 0x6867, 0x0103, -+ 0x6877, 0x0000, 0x687b, 0x0006, 0x6880, 0xc0ec, 0x6882, 0x08f0, -+ 0x0002, 0xa448, 0xa446, 0xa446, 0xa446, 0xa446, 0xa446, 0xa460, -+ 0xa446, 0xa446, 0xa446, 0xa446, 0xa446, 0xa446, 0x080c, 0x0d7e, -+ 0x080c, 0x79ab, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, -+ 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x12c0, 0x0010, 0x2001, -+ 0x12c1, 0x2004, 0x601a, 0x6003, 0x000c, 0x080c, 0x7aa4, 0x0005, -+ 0x080c, 0x79ab, 0x6034, 0x908c, 0xff00, 0x810f, 0x9186, 0x0039, -+ 0x0118, 0x9186, 0x0035, 0x1118, 0x2001, 0x12c0, 0x0010, 0x2001, -+ 0x12c1, 0x2004, 0x601a, 0x6003, 0x000e, 0x080c, 0x7aa4, 0x0005, -+ 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, 0x0208, 0x001a, 0x080c, -+ 0x8f6e, 0x0005, 0xa48f, 0xa48f, 0xa48f, 0xa48f, 0xa491, 0xa4ea, -+ 0xa48f, 0xa48f, 0xa48f, 0xa48f, 0xa48f, 0xa48f, 0xa48f, 0x080c, -+ 0x0d7e, 0x00d6, 0x6010, 0x2004, 0xd0bc, 0x0168, 0x6034, 0x908c, -+ 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, -+ 0x00de, 0x0804, 0xa4fb, 0x080c, 0xa942, 0x1118, 0x080c, 0xab11, -+ 0x00f0, 0x6014, 0x2068, 0x687c, 0xd0e4, 0x1110, 0x080c, 0xab11, -+ 0x6867, 0x0103, 0x6880, 0xd0b4, 0x0128, 0x687b, 0x0006, 0xc0ec, -+ 0x6882, 0x0048, 0xd0bc, 0x0118, 0x687b, 0x0002, 0x0020, 0x687b, -+ 0x0005, 0x080c, 0xac07, 0x6877, 0x0000, 0x080c, 0x5b76, 0x2c68, -+ 0x080c, 0x8e83, 0x01d0, 0x6003, 0x0001, 0x6007, 0x001e, 0x600b, -+ 0xffff, 0x2009, 0x026e, 0x210c, 0x613a, 0x2009, 0x026f, 0x210c, -+ 0x613e, 0x6910, 0x6112, 0x080c, 0xad70, 0x6954, 0x6156, 0x6023, -+ 0x0001, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x2d60, 0x080c, 0x8ed9, -+ 0x00de, 0x0005, 0x6010, 0x2004, 0xd0bc, 0x0598, 0x6034, 0x908c, -+ 0xff00, 0x810f, 0x9186, 0x0035, 0x0130, 0x9186, 0x001e, 0x0118, -+ 0x9186, 0x0039, 0x1530, 0x00d6, 0x2c68, 0x080c, 0xaf4e, 0x1904, -+ 0xa540, 0x080c, 0x8e83, 0x01d8, 0x6106, 0x6003, 0x0001, 0x6023, -+ 0x0001, 0x6910, 0x6112, 0x692c, 0x612e, 0x6930, 0x6132, 0x6934, -+ 0x918c, 0x00ff, 0x6136, 0x6938, 0x613a, 0x693c, 0x613e, 0x6954, -+ 0x6156, 0x080c, 0xad70, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x2d60, -+ 0x00f8, 0x00d6, 0x6014, 0x2068, 0x080c, 0xa942, 0x01c8, 0x6867, -+ 0x0103, 0x6880, 0xd0b4, 0x0128, 0xc0ec, 0x6882, 0x687b, 0x0006, -+ 0x0048, 0xd0bc, 0x0118, 0x687b, 0x0002, 0x0020, 0x687b, 0x0005, -+ 0x080c, 0xac07, 0x6877, 0x0000, 0x080c, 0x5b76, 0x080c, 0xab11, -+ 0x00de, 0x080c, 0x8ed9, 0x0005, 0x0016, 0x00d6, 0x6014, 0x2068, -+ 0x080c, 0xa942, 0x0140, 0x6867, 0x0103, 0x687b, 0x0028, 0x6877, -+ 0x0000, 0x080c, 0x5b76, 0x00de, 0x001e, 0x9186, 0x0013, 0x0148, -+ 0x9186, 0x0014, 0x0130, 0x9186, 0x0027, 0x0118, 0x080c, 0x8f6e, -+ 0x0030, 0x080c, 0x79ab, 0x080c, 0x8f09, 0x080c, 0x7aa4, 0x0005, -+ 0x0056, 0x0066, 0x00d6, 0x00f6, 0x2029, 0x0001, 0x9182, 0x0101, -+ 0x1208, 0x0010, 0x2009, 0x0100, 0x2130, 0x8304, 0x9098, 0x0018, -+ 0x2009, 0x0020, 0x9f90, 0x0029, 0x080c, 0xa5c9, 0x96b2, 0x0020, -+ 0x7804, 0x906d, 0x0110, 0x080c, 0x0edf, 0x080c, 0x0eb6, 0x0520, -+ 0x8528, 0x6867, 0x0110, 0x686b, 0x0000, 0x2d20, 0x7c06, 0x968a, -+ 0x003d, 0x1228, 0x2608, 0x9d90, 0x001b, 0x0499, 0x00a8, 0x96b2, -+ 0x003c, 0x2009, 0x003c, 0x2d78, 0x9d90, 0x001b, 0x0451, 0x0c28, -+ 0x2079, 0x0200, 0x7817, 0x0000, 0x00fe, 0x852f, 0x95ad, 0x0003, -+ 0x7d66, 0x95ac, 0x0000, 0x0048, 0x2079, 0x0200, 0x7817, 0x0000, -+ 0x00fe, 0x852f, 0x95ad, 0x0003, 0x7d66, 0x00de, 0x006e, 0x005e, -+ 0x0005, 0x00f6, 0x8dff, 0x0158, 0x6804, 0x907d, 0x0130, 0x6807, -+ 0x0000, 0x080c, 0x5b76, 0x2f68, 0x0cb8, 0x080c, 0x5b76, 0x00fe, -+ 0x0005, 0x00f6, 0x0156, 0x2079, 0x0200, 0x9184, 0x0001, 0x0108, -+ 0x8108, 0x810c, 0x21a8, 0x2300, 0x9e00, 0x2004, 0x8007, 0x2012, -+ 0x8318, 0x9386, 0x0020, 0x1120, 0x2018, 0x7814, 0x8000, 0x7816, -+ 0x8210, 0x1f04, 0xa5d3, 0x015e, 0x00fe, 0x0005, 0x0066, 0x0126, -+ 0x2091, 0x8000, 0x2031, 0x0001, 0x6020, 0x9084, 0x000f, 0x0083, -+ 0x012e, 0x006e, 0x0005, 0x0126, 0x2091, 0x8000, 0x0066, 0x2031, -+ 0x0000, 0x6020, 0x9084, 0x000f, 0x001b, 0x006e, 0x012e, 0x0005, -+ 0xa621, 0xa621, 0xa61c, 0xa643, 0xa60f, 0xa61c, 0xa643, 0xa61c, -+ 0xa60f, 0xa60f, 0xa61c, 0xa61c, 0xa61c, 0xa60f, 0xa60f, 0x080c, -+ 0x0d7e, 0x0036, 0x2019, 0x0010, 0x080c, 0xbd23, 0x6023, 0x0006, -+ 0x6003, 0x0007, 0x003e, 0x0005, 0x9006, 0x0005, 0x9085, 0x0001, -+ 0x0005, 0x00d6, 0x86ff, 0x11d8, 0x6014, 0x2068, 0x080c, 0xa942, -+ 0x01c0, 0x6864, 0x9086, 0x0139, 0x1128, 0x687b, 0x0005, 0x6883, -+ 0x0000, 0x0028, 0x900e, 0x2001, 0x0005, 0x080c, 0x5d95, 0x080c, -+ 0xac07, 0x080c, 0x5b76, 0x080c, 0x8f09, 0x9085, 0x0001, 0x00de, -+ 0x0005, 0x9006, 0x0ce0, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d7e, -+ 0x000b, 0x0005, 0xa65a, 0xa67b, 0xa65c, 0xa69a, 0xa678, 0xa65a, -+ 0xa61c, 0xa621, 0xa621, 0xa61c, 0xa61c, 0xa61c, 0xa61c, 0xa61c, -+ 0xa61c, 0xa61c, 0x080c, 0x0d7e, 0x86ff, 0x11b8, 0x6020, 0x9086, -+ 0x0006, 0x0198, 0x00d6, 0x6014, 0x2068, 0x080c, 0xa942, 0x0110, -+ 0x080c, 0xac07, 0x00de, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, -+ 0x0002, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x9085, 0x0001, 0x0005, -+ 0x080c, 0x1509, 0x0c08, 0x00e6, 0x2071, 0x1304, 0x7024, 0x9c06, -+ 0x1110, 0x080c, 0x87a2, 0x6020, 0x9084, 0x000f, 0x9086, 0x0006, -+ 0x1150, 0x0086, 0x0096, 0x2049, 0x0001, 0x2c40, 0x080c, 0x8968, -+ 0x009e, 0x008e, 0x0010, 0x080c, 0x86b8, 0x00ee, 0x1928, 0x080c, -+ 0xa61c, 0x0005, 0x0036, 0x00e6, 0x2071, 0x1304, 0x703c, 0x9c06, -+ 0x1138, 0x901e, 0x080c, 0x8847, 0x00ee, 0x003e, 0x0804, 0xa65c, -+ 0x080c, 0x8a8d, 0x00ee, 0x003e, 0x1904, 0xa65c, 0x080c, 0xa61c, -+ 0x0005, 0x00c6, 0x6020, 0x9084, 0x000f, 0x0013, 0x00ce, 0x0005, -+ 0xa6ce, 0xa759, 0xa8a3, 0xa6d9, 0x8f09, 0xa6ce, 0xbd15, 0x8ed9, -+ 0xa759, 0xa6c7, 0xa90e, 0xa6c7, 0xa6c7, 0xa6c7, 0xa6c7, 0x080c, -+ 0x0d7e, 0x080c, 0xab2e, 0x1110, 0x080c, 0x97dc, 0x0005, 0x080c, -+ 0x79ab, 0x080c, 0x7aa4, 0x080c, 0x8ed9, 0x0005, 0x601b, 0x0001, -+ 0x0005, 0x080c, 0xa942, 0x0120, 0x6014, 0x9080, 0x0025, 0x2c02, -+ 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d7e, 0x000b, 0x0005, 0xa6f7, -+ 0xa6f9, 0xa719, 0xa72b, 0xa738, 0xa6f7, 0xa6ce, 0xa6ce, 0xa6ce, -+ 0xa72b, 0xa72b, 0xa6f7, 0xa6f7, 0xa6f7, 0xa6f7, 0xa735, 0x080c, -+ 0x0d7e, 0x00e6, 0x6014, 0x2070, 0x7080, 0xc0b5, 0x7082, 0x2071, -+ 0x1304, 0x7024, 0x9c06, 0x0190, 0x080c, 0x86b8, 0x6007, 0x0085, -+ 0x6003, 0x000b, 0x6023, 0x0002, 0x2001, 0x12c1, 0x2004, 0x601a, -+ 0x080c, 0x756e, 0x080c, 0x7aa4, 0x00ee, 0x0005, 0x601b, 0x0001, -+ 0x0cd8, 0x00d6, 0x6014, 0x2068, 0x6880, 0xc0b5, 0x6882, 0x00de, -+ 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, 0x0002, 0x080c, 0x756e, -+ 0x080c, 0x7aa4, 0x0005, 0x00d6, 0x601b, 0x0001, 0x6014, 0x2068, -+ 0x6880, 0xc0b5, 0x6882, 0x00de, 0x0005, 0x080c, 0x8ed9, 0x0005, -+ 0x6014, 0x9005, 0x01d8, 0x9088, 0x001f, 0x210c, 0xd1e4, 0x01b0, -+ 0x9080, 0x0021, 0x2004, 0x8003, 0x800b, 0x810b, 0x9108, 0x611a, -+ 0x2001, 0x0037, 0x2c08, 0x080c, 0x130c, 0x6000, 0x9086, 0x0004, -+ 0x1120, 0x2009, 0x0048, 0x080c, 0x8f53, 0x0005, 0x080c, 0x1509, -+ 0x0800, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d7e, 0x000b, 0x0005, -+ 0xa770, 0xa6d6, 0xa772, 0xa770, 0xa772, 0xa772, 0xa6cf, 0xa770, -+ 0xa6c9, 0xa6c9, 0xa770, 0xa770, 0xa770, 0xa770, 0xa770, 0xa770, -+ 0x080c, 0x0d7e, 0x6010, 0x00d6, 0x2068, 0x6804, 0x9084, 0x00ff, -+ 0x00de, 0x908a, 0x000c, 0x1a0c, 0x0d7e, 0x000b, 0x0005, 0xa78b, -+ 0xa849, 0xa78d, 0xa7cb, 0xa78d, 0xa7cb, 0xa78d, 0xa79b, 0xa78b, -+ 0xa7cb, 0xa78b, 0xa7b7, 0x080c, 0x0d7e, 0x6004, 0x908e, 0x0016, -+ 0x05a8, 0x908e, 0x0004, 0x0590, 0x908e, 0x0002, 0x0578, 0x908e, -+ 0x0052, 0x0904, 0xa845, 0x6004, 0x080c, 0xab2e, 0x0904, 0xa862, -+ 0x908e, 0x0021, 0x0904, 0xa866, 0x908e, 0x0022, 0x0904, 0xa862, -+ 0x908e, 0x003d, 0x0904, 0xa866, 0x908e, 0x0039, 0x0904, 0xa86a, -+ 0x908e, 0x0035, 0x0904, 0xa86a, 0x908e, 0x001e, 0x0188, 0x908e, -+ 0x0001, 0x1150, 0x6010, 0x00d6, 0x2068, 0x6804, 0x9084, 0x00ff, -+ 0x00de, 0x9086, 0x0006, 0x0110, 0x080c, 0x2862, 0x080c, 0x97dc, -+ 0x080c, 0x8f09, 0x0005, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, -+ 0x0904, 0xa836, 0x9186, 0x0002, 0x15b8, 0x2001, 0x1136, 0x2004, -+ 0xd08c, 0x1178, 0x080c, 0x62e4, 0x1160, 0x2001, 0x12a8, 0x2003, -+ 0x0001, 0x2001, 0x1100, 0x2003, 0x0001, 0x080c, 0x621a, 0x0804, -+ 0xa88c, 0x6010, 0x2068, 0x2001, 0x1136, 0x2004, 0xd0ac, 0x1904, -+ 0xa88c, 0x68a0, 0xd0bc, 0x1904, 0xa88c, 0x6840, 0x9084, 0x00ff, -+ 0x9005, 0x0190, 0x8001, 0x6842, 0x6017, 0x0000, 0x6023, 0x0007, -+ 0x601b, 0x0398, 0x6043, 0x0000, 0x080c, 0x8e83, 0x0128, 0x2d00, -+ 0x6012, 0x6023, 0x0001, 0x0450, 0x00de, 0x00ce, 0x6004, 0x908e, -+ 0x0002, 0x11a8, 0x6010, 0x9080, 0x0028, 0x2004, 0x9086, 0x007e, -+ 0x1170, 0x2009, 0x1136, 0x2104, 0xc085, 0x200a, 0x00e6, 0x2071, -+ 0x1100, 0x080c, 0x5092, 0x00ee, 0x080c, 0x97dc, 0x0020, 0x080c, -+ 0x97dc, 0x080c, 0x2862, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, -+ 0x2886, 0x012e, 0x00ee, 0x080c, 0x8f09, 0x0005, 0x2001, 0x0002, -+ 0x080c, 0x5568, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, 0x75be, -+ 0x080c, 0x7aa4, 0x00de, 0x00ce, 0x0c80, 0x080c, 0x2886, 0x0804, -+ 0xa7c6, 0x00c6, 0x00d6, 0x6104, 0x9186, 0x0016, 0x0d38, 0x6010, -+ 0x2068, 0x6840, 0x9084, 0x00ff, 0x9005, 0x0904, 0xa80c, 0x8001, -+ 0x6842, 0x6003, 0x0001, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x00de, -+ 0x00ce, 0x0898, 0x080c, 0x97dc, 0x0804, 0xa7c8, 0x080c, 0x9809, -+ 0x0804, 0xa7c8, 0x00d6, 0x2c68, 0x6104, 0x080c, 0xaf4e, 0x00de, -+ 0x0118, 0x080c, 0x8ed9, 0x00b8, 0x6004, 0x8007, 0x6134, 0x918c, -+ 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, 0x000b, 0x6023, -+ 0x0002, 0x603c, 0x600a, 0x2001, 0x12c1, 0x2004, 0x601a, 0x080c, -+ 0x756e, 0x080c, 0x7aa4, 0x0005, 0x00de, 0x00ce, 0x080c, 0x97dc, -+ 0x080c, 0x2862, 0x00e6, 0x0126, 0x2091, 0x8000, 0x080c, 0x2886, -+ 0x6017, 0x0000, 0x6023, 0x0007, 0x601b, 0x0398, 0x6043, 0x0000, -+ 0x012e, 0x00ee, 0x0005, 0x6000, 0x908a, 0x0016, 0x1a0c, 0x0d7e, -+ 0x00d6, 0x0013, 0x00de, 0x0005, 0xa8bc, 0xa8bc, 0xa8bc, 0xa8bc, -+ 0xa8bc, 0xa8bc, 0xa8bc, 0xa8bc, 0xa8bc, 0xa6ce, 0xa8bc, 0xa6d6, -+ 0xa8be, 0xa6d6, 0xa8cb, 0xa8bc, 0x080c, 0x0d7e, 0x6004, 0x9086, -+ 0x008b, 0x0148, 0x6007, 0x008b, 0x6003, 0x000d, 0x080c, 0x756e, -+ 0x080c, 0x7aa4, 0x0005, 0x080c, 0xab11, 0x080c, 0xa942, 0x0570, -+ 0x080c, 0x2862, 0x080c, 0xa942, 0x0168, 0x6014, 0x2068, 0x6867, -+ 0x0103, 0x687b, 0x0006, 0x6877, 0x0000, 0x6880, 0xc0ed, 0x6882, -+ 0x080c, 0x5b76, 0x2c68, 0x080c, 0x8e83, 0x0150, 0x6810, 0x6012, -+ 0x080c, 0xad70, 0x00c6, 0x2d60, 0x080c, 0x8f09, 0x00ce, 0x0008, -+ 0x2d60, 0x6017, 0x0000, 0x6023, 0x0001, 0x6007, 0x0001, 0x6003, -+ 0x0001, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0078, 0x6034, 0x908c, -+ 0xff00, 0x810f, 0x9186, 0x0039, 0x0118, 0x9186, 0x0035, 0x1118, -+ 0x080c, 0x2862, 0x08b8, 0x080c, 0x8f09, 0x0005, 0x6000, 0x908a, -+ 0x0016, 0x1a0c, 0x0d7e, 0x000b, 0x0005, 0xa925, 0xa925, 0xa927, -+ 0xa927, 0xa927, 0xa925, 0xa925, 0xa925, 0xa925, 0xa925, 0xa925, -+ 0xa925, 0xa925, 0xa925, 0xa925, 0xa925, 0x080c, 0x0d7e, 0x080c, -+ 0x8a8d, 0x6114, 0x2168, 0x687b, 0x0006, 0x080c, 0x5b76, 0x080c, -+ 0x8ed9, 0x0005, 0x9284, 0x0007, 0x1158, 0x9282, 0x15c0, 0x0240, -+ 0x2001, 0x1118, 0x2004, 0x9202, 0x1218, 0x9085, 0x0001, 0x0005, -+ 0x9006, 0x0ce8, 0x0026, 0x6214, 0x9294, 0xf000, 0x002e, 0x0005, -+ 0x00e6, 0x00c6, 0x0036, 0x0006, 0x0126, 0x2091, 0x8000, 0x2061, -+ 0x15c0, 0x2071, 0x1100, 0x734c, 0x706c, 0x9302, 0x12a8, 0x6020, -+ 0x9206, 0x1160, 0x080c, 0xacea, 0x0148, 0x080c, 0xab2e, 0x1110, -+ 0x080c, 0x97dc, 0x00c6, 0x080c, 0x8ed9, 0x00ce, 0x9ce0, 0x0018, -+ 0x7060, 0x9c02, 0x1208, 0x0c38, 0x012e, 0x000e, 0x003e, 0x00ce, -+ 0x00ee, 0x0005, 0x00e6, 0x00c6, 0x0016, 0x9188, 0x1000, 0x210c, -+ 0x81ff, 0x0128, 0x2061, 0x1389, 0x6112, 0x080c, 0x2862, 0x9006, -+ 0x0010, 0x9085, 0x0001, 0x001e, 0x00ce, 0x00ee, 0x0005, 0x00c6, -+ 0x0056, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x8e83, 0x005e, -+ 0x0180, 0x6616, 0x6512, 0x080c, 0xad70, 0x6023, 0x0003, 0x2009, -+ 0x004b, 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x005e, 0x00ce, -+ 0x0005, 0x9006, 0x0cd0, 0x00c6, 0x0056, 0x0126, 0x2091, 0x8000, -+ 0x62a0, 0x00c6, 0x080c, 0x8f26, 0x005e, 0x0538, 0x6017, 0x0000, -+ 0x6512, 0x080c, 0xad70, 0x6023, 0x0003, 0x0016, 0x00c6, 0x2560, -+ 0x00ce, 0x080c, 0x76f0, 0x0076, 0x903e, 0x080c, 0x75ee, 0x2c08, -+ 0x080c, 0xbec2, 0x007e, 0x001e, 0xd184, 0x0128, 0x080c, 0x8ed9, -+ 0x9085, 0x0001, 0x0030, 0x2009, 0x004c, 0x080c, 0x8f53, 0x9085, -+ 0x0001, 0x012e, 0x005e, 0x00ce, 0x0005, 0x9006, 0x0cd0, 0x00f6, -+ 0x00c6, 0x0046, 0x00c6, 0x080c, 0x8e83, 0x2c78, 0x00ce, 0x0180, -+ 0x7e16, 0x2c00, 0x7812, 0x7823, 0x0003, 0x2021, 0x0005, 0x080c, -+ 0xaa35, 0x2f60, 0x2009, 0x004d, 0x080c, 0x8f53, 0x9085, 0x0001, -+ 0x004e, 0x00ce, 0x00fe, 0x0005, 0x00f6, 0x00c6, 0x0046, 0x00c6, -+ 0x080c, 0x8e83, 0x2c78, 0x00ce, 0x0178, 0x7e16, 0x2c00, 0x7812, -+ 0x7823, 0x0003, 0x2021, 0x0005, 0x0481, 0x2f60, 0x2009, 0x004e, -+ 0x080c, 0x8f53, 0x9085, 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, -+ 0x00f6, 0x00c6, 0x0046, 0x00c6, 0x080c, 0x8e83, 0x2c78, 0x00ce, -+ 0x01c0, 0x7e16, 0x2c00, 0x7812, 0x7823, 0x0003, 0x2021, 0x0004, -+ 0x00a1, 0x2001, 0x12a9, 0x2004, 0xd0fc, 0x0120, 0x2f60, 0x080c, -+ 0x8ed9, 0x0028, 0x2f60, 0x2009, 0x0052, 0x080c, 0x8f53, 0x9085, -+ 0x0001, 0x004e, 0x00ce, 0x00fe, 0x0005, 0x0096, 0x0076, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x572a, 0x0158, 0x2001, 0xaa3a, 0x0006, -+ 0x900e, 0x2400, 0x080c, 0x5d95, 0x080c, 0x5b76, 0x000e, 0x0807, -+ 0x2418, 0x080c, 0x7947, 0x62a0, 0x0086, 0x2041, 0x0001, 0x2039, -+ 0x0001, 0x2608, 0x080c, 0x7708, 0x008e, 0x080c, 0x75ee, 0x2f08, -+ 0x2648, 0x080c, 0xbec2, 0x613c, 0x81ff, 0x090c, 0x77c0, 0x080c, -+ 0x7aa4, 0x012e, 0x007e, 0x009e, 0x0005, 0x00c6, 0x0126, 0x2091, -+ 0x8000, 0x00c6, 0x080c, 0x8e83, 0x001e, 0x0188, 0x660a, 0x6112, -+ 0x080c, 0xad70, 0x6023, 0x0001, 0x2d00, 0x6016, 0x2009, 0x001f, -+ 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, -+ 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x8e83, -+ 0x001e, 0x01b0, 0x660a, 0x6112, 0x080c, 0xad70, 0x6023, 0x0008, -+ 0x2d00, 0x6016, 0x00f6, 0x2c78, 0x080c, 0x137e, 0x00fe, 0x2009, -+ 0x0021, 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, -+ 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, -+ 0x8e83, 0x001e, 0x0188, 0x660a, 0x6112, 0x080c, 0xad70, 0x6023, -+ 0x0001, 0x2d00, 0x6016, 0x2009, 0x003d, 0x080c, 0x8f53, 0x9085, -+ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, -+ 0x2091, 0x8000, 0x00c6, 0x080c, 0x8f26, 0x001e, 0x0180, 0x6112, -+ 0x080c, 0xad70, 0x6023, 0x0001, 0x2d00, 0x6016, 0x2009, 0x0000, -+ 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, -+ 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x8e83, -+ 0x001e, 0x0188, 0x660a, 0x6112, 0x080c, 0xad70, 0x6023, 0x0001, -+ 0x2d00, 0x6016, 0x2009, 0x0044, 0x080c, 0x8f53, 0x9085, 0x0001, -+ 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, -+ 0x8000, 0x00c6, 0x080c, 0x8e83, 0x001e, 0x0188, 0x660a, 0x6112, -+ 0x080c, 0xad70, 0x6023, 0x0001, 0x2d00, 0x6016, 0x2009, 0x0049, -+ 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, -+ 0x0cd8, 0x0026, 0x00d6, 0x6210, 0x2268, 0x6a3c, 0x82ff, 0x0110, -+ 0x8211, 0x6a3e, 0x00de, 0x002e, 0x0005, 0x0006, 0x0016, 0x6004, -+ 0x908e, 0x0002, 0x0140, 0x908e, 0x0003, 0x0128, 0x908e, 0x0004, -+ 0x0110, 0x9085, 0x0001, 0x001e, 0x000e, 0x0005, 0x0006, 0x00d6, -+ 0x6014, 0x906d, 0x0148, 0x6864, 0x9086, 0x0139, 0x0138, 0x6868, -+ 0xd0fc, 0x0110, 0x9006, 0x0010, 0x9085, 0x0001, 0x00de, 0x000e, -+ 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x8e83, -+ 0x001e, 0x0190, 0x6112, 0x080c, 0xad70, 0x6023, 0x0001, 0x2d00, -+ 0x6016, 0x080c, 0x2862, 0x2009, 0x0028, 0x080c, 0x8f53, 0x9085, -+ 0x0001, 0x012e, 0x00ce, 0x0005, 0x9006, 0x0cd8, 0x9186, 0x0015, -+ 0x1188, 0x2011, 0x1122, 0x2204, 0x9086, 0x0074, 0x1158, 0x080c, -+ 0x9bfa, 0x6003, 0x0001, 0x6007, 0x0029, 0x080c, 0x75be, 0x080c, -+ 0x7aa4, 0x0070, 0x6014, 0x9080, 0x001a, 0x2004, 0xd0fc, 0x0148, -+ 0x2001, 0x0001, 0x080c, 0xaf0f, 0x080c, 0x97dc, 0x080c, 0x8ed9, -+ 0x0005, 0x00d6, 0x6014, 0x906d, 0x090c, 0x0d7e, 0x687b, 0x0030, -+ 0x6883, 0x0000, 0x6897, 0x4005, 0x689b, 0x0004, 0x6867, 0x0139, -+ 0x0126, 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x00de, 0x080c, -+ 0x8ed9, 0x0c30, 0x9186, 0x0016, 0x1128, 0x2001, 0x0004, 0x080c, -+ 0x5568, 0x00e8, 0x9186, 0x0015, 0x1518, 0x2011, 0x1122, 0x2204, -+ 0x9086, 0x0014, 0x11e8, 0x6010, 0x00d6, 0x2068, 0x080c, 0x56a8, -+ 0x00de, 0x080c, 0x9cc9, 0x11a0, 0x6010, 0x00d6, 0x2068, 0x6890, -+ 0x00de, 0x9005, 0x0168, 0x2001, 0x0006, 0x080c, 0x5568, 0x6014, -+ 0x9080, 0x001a, 0x2004, 0xd0fc, 0x0170, 0x080c, 0x9275, 0x0050, -+ 0x6014, 0x9080, 0x001a, 0x2004, 0xd0fc, 0x01d0, 0x080c, 0x97dc, -+ 0x080c, 0x8ed9, 0x0005, 0x6014, 0x00d6, 0x906d, 0x090c, 0x0d7e, -+ 0x687b, 0x0000, 0x6883, 0x0000, 0x6897, 0x4000, 0x0126, 0x2091, -+ 0x8000, 0x080c, 0x5b76, 0x012e, 0x00de, 0x080c, 0x8ed9, 0x0c50, -+ 0x6014, 0x00d6, 0x906d, 0x090c, 0x0d7e, 0x687b, 0x0030, 0x6883, -+ 0x0000, 0x6897, 0x4005, 0x689b, 0x0004, 0x6867, 0x0139, 0x0126, -+ 0x2091, 0x8000, 0x080c, 0x5b76, 0x012e, 0x00de, 0x080c, 0x8ed9, -+ 0x0888, 0x6878, 0x9086, 0x0005, 0x1108, 0x0009, 0x0005, 0x6880, -+ 0xc0ad, 0x6882, 0x0005, 0x6043, 0x0000, 0x6017, 0x0000, 0x6003, -+ 0x0001, 0x6007, 0x0050, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x0005, -+ 0x00c6, 0x6010, 0x2004, 0xd0bc, 0x0120, 0x6020, 0x9084, 0x000f, -+ 0x0013, 0x00ce, 0x0005, 0xa6ce, 0xac34, 0xac34, 0xac37, 0xc172, -+ 0xc18d, 0xc190, 0xa6ce, 0xa6ce, 0xa6ce, 0xa6ce, 0xa6ce, 0xa6ce, -+ 0xa6ce, 0xa6ce, 0x080c, 0x0d7e, 0xa001, 0xa001, 0x0005, 0x0009, -+ 0x0005, 0x6010, 0x2004, 0xd0bc, 0x0550, 0x00f6, 0x2c78, 0x080c, -+ 0x8e83, 0x1128, 0x2001, 0x12c2, 0x2004, 0x7842, 0x00f8, 0x7810, -+ 0x6012, 0x080c, 0xad70, 0x7820, 0x9086, 0x0003, 0x0128, 0x7808, -+ 0x603a, 0x2f00, 0x603e, 0x0020, 0x7808, 0x603e, 0x2f00, 0x603a, -+ 0x602e, 0x6023, 0x0001, 0x6007, 0x0035, 0x6003, 0x0001, 0x7954, -+ 0x6156, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x2f60, 0x00fe, 0x0005, -+ 0x0016, 0x00f6, 0x6814, 0x2078, 0x787c, 0xd0e4, 0x0180, 0xc0e4, -+ 0x787e, 0x7877, 0x0000, 0x7893, 0x0000, 0x788f, 0x0000, 0xd0cc, -+ 0x0130, 0x7878, 0x00d6, 0x2068, 0x080c, 0x0edf, 0x00de, 0x6830, -+ 0x6036, 0x908e, 0x0001, 0x0148, 0x6803, 0x0002, 0x9086, 0x0005, -+ 0x0168, 0x9006, 0x602e, 0x6032, 0x00c8, 0x681c, 0xc085, 0x681e, -+ 0x6803, 0x0004, 0x6824, 0xc0f4, 0xc0d5, 0x6826, 0x6814, 0x2078, -+ 0x78ac, 0x6938, 0x9102, 0x78b0, 0x693c, 0x9103, 0x1e50, 0x683c, -+ 0x602e, 0x6838, 0x9084, 0xfffc, 0x683a, 0x6032, 0x2d00, 0x603a, -+ 0x6808, 0x603e, 0x6910, 0x6112, 0x6954, 0x6156, 0x6023, 0x0001, -+ 0x6007, 0x0039, 0x6003, 0x0001, 0x080c, 0x756e, 0x080c, 0x7aa4, -+ 0x00fe, 0x001e, 0x0005, 0x6024, 0xd0d4, 0x0510, 0xd0f4, 0x11f8, -+ 0x6038, 0x940a, 0x603c, 0x9303, 0x0230, 0x9105, 0x0120, 0x6024, -+ 0xc0d4, 0xc0f5, 0x0098, 0x643a, 0x633e, 0x6c3e, 0x6b42, 0x0046, -+ 0x0036, 0x2400, 0x6cac, 0x9402, 0x6836, 0x2300, 0x6bb0, 0x9303, -+ 0x683a, 0x003e, 0x004e, 0x6024, 0xc0d4, 0x0000, 0x6026, 0x0005, -+ 0xd0f4, 0x1138, 0x683c, 0x603a, 0x6840, 0x603e, 0x6024, 0xc0f5, -+ 0x6026, 0x0005, 0x0006, 0x0016, 0x6004, 0x908e, 0x0034, 0x01b8, -+ 0x908e, 0x0035, 0x01a0, 0x908e, 0x0036, 0x0188, 0x908e, 0x0037, -+ 0x0170, 0x908e, 0x0038, 0x0158, 0x908e, 0x0039, 0x0140, 0x908e, -+ 0x003a, 0x0128, 0x908e, 0x003b, 0x0110, 0x9085, 0x0001, 0x001e, -+ 0x000e, 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00e6, 0x2001, -+ 0x12bc, 0x200c, 0x8000, 0x2014, 0x2001, 0x0032, 0x080c, 0x73f0, -+ 0x2001, 0x12c0, 0x82ff, 0x1110, 0x2011, 0x0014, 0x2202, 0x2001, -+ 0x12be, 0x200c, 0x8000, 0x2014, 0x2071, 0x1297, 0x711a, 0x721e, -+ 0x2001, 0x0064, 0x080c, 0x73f0, 0x2001, 0x12c1, 0x82ff, 0x1110, -+ 0x2011, 0x0014, 0x2202, 0x2001, 0x12c2, 0x9288, 0x000a, 0x2102, -+ 0x2001, 0x136b, 0x2102, 0x2001, 0x0032, 0x080c, 0x130c, 0x080c, -+ 0x58af, 0x00ee, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, 0x0006, -+ 0x0016, 0x00e6, 0x2001, 0x12c0, 0x2003, 0x0028, 0x2001, 0x12c1, -+ 0x2003, 0x0014, 0x2071, 0x1297, 0x701b, 0x0000, 0x701f, 0x07d0, -+ 0x2001, 0x12c2, 0x2009, 0x001e, 0x2102, 0x2001, 0x136b, 0x2102, -+ 0x2001, 0x0032, 0x080c, 0x130c, 0x00ee, 0x001e, 0x000e, 0x0005, -+ 0x00d6, 0x6058, 0x906d, 0x0110, 0x080c, 0x0ecf, 0x00de, 0x0005, -+ 0x0005, 0x00c6, 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x8e83, -+ 0x001e, 0x0178, 0x6112, 0x0ca1, 0x6023, 0x0001, 0x2d00, 0x6016, -+ 0x2009, 0x0033, 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x00ce, -+ 0x0005, 0x9006, 0x0cd8, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0x1100, -+ 0x9186, 0x0015, 0x11f8, 0x7088, 0x9086, 0x0018, 0x11d8, 0x6014, -+ 0x2068, 0x6a3c, 0xd2e4, 0x1160, 0x2c78, 0x080c, 0x7c86, 0x01d0, -+ 0x7074, 0x6a50, 0x9206, 0x1158, 0x7078, 0x6a54, 0x9206, 0x1138, -+ 0x6210, 0x9290, 0x0028, 0x2214, 0x900e, 0x080c, 0x28a5, 0x080c, -+ 0x9275, 0x0020, 0x080c, 0x97dc, 0x080c, 0x8ed9, 0x00fe, 0x00ee, -+ 0x00de, 0x0005, 0x7058, 0x6a54, 0x9206, 0x0d50, 0x0c80, 0x00c6, -+ 0x0126, 0x2091, 0x8000, 0x00c6, 0x080c, 0x8e83, 0x001e, 0x0180, -+ 0x6112, 0x080c, 0xad70, 0x6023, 0x0001, 0x2d00, 0x6016, 0x2009, -+ 0x004d, 0x080c, 0x8f53, 0x9085, 0x0001, 0x012e, 0x00ce, 0x0005, -+ 0x9006, 0x0cd8, 0x00c6, 0x0126, 0x2091, 0x8000, 0x0016, 0x00c6, -+ 0x080c, 0x8e83, 0x001e, 0x0178, 0x6112, 0x080c, 0xad70, 0x6023, -+ 0x0001, 0x2d00, 0x6016, 0x001e, 0x080c, 0x8f53, 0x9085, 0x0001, -+ 0x012e, 0x00ce, 0x0005, 0x001e, 0x9006, 0x0cd0, 0x0016, 0x0026, -+ 0x0036, 0x0046, 0x0056, 0x0066, 0x00d6, 0x00e6, 0x00f6, 0x2071, -+ 0x1100, 0x9186, 0x0015, 0x1538, 0x7188, 0x6014, 0x2068, 0x6814, -+ 0x8003, 0x9106, 0x1500, 0x20e1, 0x0000, 0x2001, 0x12da, 0x2003, -+ 0x0000, 0x6014, 0x20e9, 0x0001, 0x2068, 0x6830, 0x20a8, 0x9d80, -+ 0x001b, 0x20a0, 0x2001, 0x12da, 0x0016, 0x200c, 0x080c, 0xb4ed, -+ 0x001e, 0x6804, 0x9005, 0x0110, 0x2068, 0x0c78, 0x6014, 0x2070, -+ 0x7067, 0x0103, 0x0010, 0x080c, 0x97dc, 0x080c, 0x8ed9, 0x00fe, -+ 0x00ee, 0x00de, 0x006e, 0x005e, 0x004e, 0x003e, 0x002e, 0x001e, -+ 0x0005, 0x00d6, 0x00e6, 0x00f6, 0x2071, 0x1100, 0x9186, 0x0015, -+ 0x11c0, 0x7088, 0x9086, 0x0004, 0x11a0, 0x6014, 0x90e8, 0x001b, -+ 0x2c78, 0x080c, 0x7c86, 0x01a8, 0x7074, 0x6a08, 0x9206, 0x1130, -+ 0x7078, 0x6a0c, 0x9206, 0x1110, 0x080c, 0x2862, 0x080c, 0x9275, -+ 0x0020, 0x080c, 0x97dc, 0x080c, 0x8ed9, 0x00fe, 0x00ee, 0x00de, -+ 0x0005, 0x7058, 0x6a0c, 0x9206, 0x0d78, 0x0c80, 0x00d6, 0x00e6, -+ 0x00f6, 0x2071, 0x1100, 0x9186, 0x0015, 0x11f0, 0x7088, 0x9086, -+ 0x0004, 0x11d0, 0x6014, 0x90e8, 0x0031, 0x2c78, 0x080c, 0x7c86, -+ 0x0558, 0x7074, 0x6a08, 0x9206, 0x1130, 0x7078, 0x6a0c, 0x9206, -+ 0x1110, 0x080c, 0x2862, 0x6014, 0x2068, 0x687b, 0x0000, 0x6883, -+ 0x0000, 0x6897, 0x4000, 0x0050, 0x6014, 0x2068, 0x687b, 0x0030, -+ 0x6883, 0x0000, 0x6897, 0x4005, 0x689b, 0x0004, 0x0126, 0x2091, -+ 0x8000, 0x6867, 0x0139, 0x080c, 0x5b76, 0x012e, 0x080c, 0x8ed9, -+ 0x00fe, 0x00ee, 0x00de, 0x0005, 0x7058, 0x6a0c, 0x9206, 0x09c8, -+ 0x08d0, 0x0016, 0x0026, 0x687c, 0xd0ac, 0x0178, 0x6938, 0x6a34, -+ 0x2100, 0x9205, 0x0150, 0x6890, 0x9106, 0x1118, 0x688c, 0x9206, -+ 0x0120, 0x6992, 0x6a8e, 0x9085, 0x0001, 0x002e, 0x001e, 0x0005, -+ 0x00d6, 0x0036, 0x6314, 0x2368, 0x687a, 0x6982, 0x929e, 0x4000, -+ 0x1558, 0x6310, 0x00c6, 0x2360, 0x900e, 0x6868, 0xd0f4, 0x1140, -+ 0x080c, 0x57d6, 0x1108, 0xc185, 0x6000, 0xd0bc, 0x0108, 0xc18d, -+ 0x6a96, 0x699a, 0x20a9, 0x0004, 0x20e1, 0x0001, 0x20e9, 0x0001, -+ 0x9d80, 0x0031, 0x20a0, 0x9c80, 0x0006, 0x2098, 0x080c, 0x504f, -+ 0x20a9, 0x0004, 0x9d80, 0x0035, 0x20a0, 0x9c80, 0x000a, 0x2098, -+ 0x080c, 0x504f, 0x00ce, 0x00a0, 0x6a96, 0x3918, 0x9398, 0x0006, -+ 0x231c, 0x6004, 0x9086, 0x0016, 0x0110, 0x689b, 0x0004, 0x6ba2, -+ 0x6310, 0x00c6, 0x2360, 0x6004, 0x00ce, 0x9084, 0x00ff, 0x689e, -+ 0x080c, 0x5b76, 0x6017, 0x0000, 0x003e, 0x00de, 0x0005, 0x0026, -+ 0x0036, 0x0046, 0x00e6, 0x00d6, 0x00f6, 0x6214, 0x2268, 0x6210, -+ 0x2270, 0x2079, 0x0260, 0x9096, 0x0000, 0x11a0, 0x7014, 0x9084, -+ 0x00ff, 0x900e, 0x080c, 0x1f63, 0x2118, 0x831f, 0x939c, 0xff00, -+ 0x7838, 0x9084, 0x00ff, 0x931d, 0x7c3c, 0x2011, 0x8018, 0x080c, -+ 0x3f23, 0x00a8, 0x9096, 0x0001, 0x1148, 0x8dff, 0x0180, 0x689b, -+ 0x000d, 0x7838, 0x68a6, 0x783c, 0x68aa, 0x0048, 0x9096, 0x0002, -+ 0x1130, 0x689b, 0x000d, 0x7838, 0x68a6, 0x783c, 0x68aa, 0x00fe, -+ 0x00de, 0x00ee, 0x004e, 0x003e, 0x002e, 0x0005, 0x00c6, 0x0026, -+ 0x0016, 0x9186, 0x0035, 0x0110, 0x6a38, 0x0008, 0x6a2c, 0x080c, -+ 0xa932, 0x01f0, 0x2260, 0x6120, 0x9186, 0x0003, 0x0118, 0x9186, -+ 0x0006, 0x1190, 0x6838, 0x9206, 0x0140, 0x683c, 0x9206, 0x1160, -+ 0x6108, 0x6838, 0x9106, 0x1140, 0x0020, 0x6008, 0x693c, 0x9106, -+ 0x1118, 0x6010, 0x6910, 0x9106, 0x001e, 0x002e, 0x00ce, 0x0005, -+ 0x9085, 0x0001, 0x0cc8, 0x6974, 0xd1cc, 0x0188, 0x918c, 0x00ff, -+ 0x918e, 0x0002, 0x1160, 0x69a8, 0x918c, 0x0f00, 0x810f, 0x918e, -+ 0x0001, 0x1128, 0x6834, 0x6938, 0x9115, 0x190c, 0xa12c, 0x0005, -+ 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, 0x0d7e, 0x0013, 0x006e, -+ 0x0005, 0xafa9, 0xb5ee, 0xb74e, 0xafa9, 0xafa9, 0xafa9, 0xafa9, -+ 0xafa9, 0xafe0, 0xb7d1, 0xafa9, 0xafa9, 0xafa9, 0xafa9, 0xafa9, -+ 0xafa9, 0x080c, 0x0d7e, 0x0066, 0x6000, 0x90b2, 0x0016, 0x1a0c, -+ 0x0d7e, 0x0013, 0x006e, 0x0005, 0xafc4, 0xbcae, 0xafc4, 0xafc4, -+ 0xafc4, 0xafc4, 0xafc4, 0xafc4, 0xbc5d, 0xbd02, 0xafc4, 0xc2b5, -+ 0xc2eb, 0xc2b5, 0xc2eb, 0xafc4, 0x080c, 0x0d7e, 0x6000, 0x9082, -+ 0x0016, 0x1a0c, 0x0d7e, 0x6000, 0x000a, 0x0005, 0xafde, 0xb91e, -+ 0xba17, 0xba39, 0xbaf9, 0xafde, 0xbbd0, 0xbb7b, 0xb7dd, 0xbc33, -+ 0xbc48, 0xafde, 0xafde, 0xafde, 0xafde, 0xafde, 0x080c, 0x0d7e, -+ 0x91b2, 0x0053, 0x1a0c, 0x0d7e, 0x2100, 0x91b2, 0x0040, 0x1a04, -+ 0xb414, 0x0002, 0xb02a, 0xb214, 0xb02a, 0xb02a, 0xb02a, 0xb21d, -+ 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, -+ 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, -+ 0xb02a, 0xb02c, 0xb087, 0xb096, 0xb0f8, 0xb122, 0xb1a0, 0xb1ff, -+ 0xb02a, 0xb02a, 0xb220, 0xb02a, 0xb02a, 0xb235, 0xb242, 0xb02a, -+ 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb2c9, 0xb02a, 0xb02a, 0xb2d8, -+ 0xb02a, 0xb02a, 0xb294, 0xb02a, 0xb02a, 0xb02a, 0xb2f0, 0xb02a, -+ 0xb02a, 0xb02a, 0xb368, 0xb02a, 0xb02a, 0xb02a, 0xb02a, 0xb02a, -+ 0xb02a, 0xb3dd, 0x080c, 0x0d7e, 0x080c, 0x588e, 0x1150, 0x2001, -+ 0x1136, 0x2004, 0xd0cc, 0x1128, 0x9084, 0x0009, 0x9086, 0x0008, -+ 0x1140, 0x6007, 0x0009, 0x602f, 0x0009, 0x6017, 0x0000, 0x0804, -+ 0xb20d, 0x080c, 0x587e, 0x00e6, 0x00c6, 0x0036, 0x0026, 0x0016, -+ 0x6210, 0x2270, 0x72a0, 0x0026, 0x2019, 0x0029, 0x080c, 0x76f0, -+ 0x0076, 0x903e, 0x080c, 0x75ee, 0x2c08, 0x080c, 0xbec2, 0x007e, -+ 0x001e, 0x2e60, 0x001e, 0x002e, 0x003e, 0x00ce, 0x00ee, 0x6610, -+ 0x00c6, 0x2660, 0x080c, 0x5617, 0x00ce, 0x96b0, 0x0001, 0x2634, -+ 0x9684, 0x00ff, 0x9082, 0x0006, 0x0278, 0x080c, 0xbe06, 0x1904, -+ 0xb0f2, 0x080c, 0xbda3, 0x1120, 0x6007, 0x0008, 0x0804, 0xb20d, -+ 0x6007, 0x0009, 0x0804, 0xb20d, 0x080c, 0xbfdb, 0x0128, 0x080c, -+ 0xbe06, 0x0d78, 0x0804, 0xb0f2, 0x6017, 0x1900, 0x0c88, 0x080c, -+ 0x297d, 0x1904, 0xb411, 0x6106, 0x080c, 0xbd61, 0x6007, 0x0006, -+ 0x0804, 0xb20d, 0x6007, 0x0007, 0x0804, 0xb20d, 0x080c, 0xc327, -+ 0x1904, 0xb411, 0x080c, 0x297d, 0x1904, 0xb411, 0x00d6, 0x6610, -+ 0x2668, 0x6e04, 0x9684, 0x00ff, 0x9082, 0x0006, 0x1220, 0x2001, -+ 0x0001, 0x080c, 0x5556, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, -+ 0x0188, 0x9686, 0x0004, 0x0170, 0x6e04, 0x96b4, 0x00ff, 0x9686, -+ 0x0006, 0x0140, 0x9686, 0x0004, 0x0128, 0x9686, 0x0005, 0x0110, -+ 0x00de, 0x0480, 0x00e6, 0x2071, 0x0260, 0x7034, 0x90b4, 0x0003, -+ 0x1138, 0x90b2, 0x0014, 0x0220, 0x7030, 0x9084, 0x0003, 0x0130, -+ 0x00ee, 0x6017, 0x0000, 0x602f, 0x0007, 0x00b8, 0x00ee, 0x080c, -+ 0xbe64, 0x1198, 0x9686, 0x0006, 0x1148, 0x0026, 0x6210, 0x9290, -+ 0x0028, 0x2214, 0x900e, 0x080c, 0x28a5, 0x002e, 0x080c, 0x56a8, -+ 0x6007, 0x000a, 0x00de, 0x0804, 0xb20d, 0x6007, 0x000b, 0x00de, -+ 0x0804, 0xb20d, 0x080c, 0x2862, 0x6007, 0x0001, 0x0804, 0xb20d, -+ 0x080c, 0xc327, 0x1904, 0xb411, 0x080c, 0x297d, 0x1904, 0xb411, -+ 0x2071, 0x0260, 0x7034, 0x90b4, 0x0003, 0x1950, 0x90b2, 0x0014, -+ 0x0a38, 0x7030, 0x9084, 0x0003, 0x1918, 0x6610, 0x00d6, 0x2668, -+ 0x6e04, 0x00de, 0x9686, 0x0707, 0x09e8, 0x0026, 0x6210, 0x9290, -+ 0x0028, 0x2214, 0x900e, 0x080c, 0x28a5, 0x002e, 0x6007, 0x000c, -+ 0x0804, 0xb20d, 0x080c, 0x588e, 0x1140, 0x2001, 0x1136, 0x2004, -+ 0x9084, 0x0009, 0x9086, 0x0008, 0x1110, 0x0804, 0xb039, 0x080c, -+ 0x587e, 0x6610, 0x96b0, 0x0001, 0x2634, 0x9684, 0x00ff, 0x9082, -+ 0x0006, 0x06e8, 0x1138, 0x0026, 0x2001, 0x0006, 0x080c, 0x5592, -+ 0x002e, 0x0050, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0004, 0x0120, -+ 0x9686, 0x0006, 0x1904, 0xb0f2, 0x080c, 0xbe71, 0x1120, 0x6007, -+ 0x000e, 0x0804, 0xb20d, 0x0046, 0x6410, 0x94a0, 0x0028, 0x2424, -+ 0x94a4, 0x00ff, 0x8427, 0x0046, 0x080c, 0x2862, 0x004e, 0x0016, -+ 0x9006, 0x2009, 0x1153, 0x210c, 0xd1a4, 0x0158, 0x2009, 0x0029, -+ 0x080c, 0xc12f, 0x6010, 0x00d6, 0x2068, 0x6800, 0xc0e5, 0x6802, -+ 0x00de, 0x001e, 0x004e, 0x6007, 0x0001, 0x0804, 0xb20d, 0x2001, -+ 0x0001, 0x080c, 0x5556, 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, -+ 0x0004, 0x2019, 0x1105, 0x2011, 0x0270, 0x080c, 0x9d60, 0x003e, -+ 0x002e, 0x001e, 0x015e, 0x9005, 0x0168, 0x96b4, 0xff00, 0x8637, -+ 0x9682, 0x0004, 0x0a04, 0xb0f2, 0x9682, 0x0007, 0x0a04, 0xb14c, -+ 0x0804, 0xb0f2, 0x6017, 0x1900, 0x6007, 0x0009, 0x0804, 0xb20d, -+ 0x080c, 0x588e, 0x1140, 0x2001, 0x1136, 0x2004, 0x9084, 0x0009, -+ 0x9086, 0x0008, 0x1110, 0x0804, 0xb039, 0x080c, 0x587e, 0x6610, -+ 0x96b0, 0x0001, 0x2634, 0x9684, 0x00ff, 0x9082, 0x0006, 0x06b8, -+ 0x96b4, 0xff00, 0x8637, 0x9686, 0x0004, 0x0120, 0x9686, 0x0006, -+ 0x1904, 0xb0f2, 0x080c, 0xbe99, 0x1138, 0x080c, 0xbda3, 0x1120, -+ 0x6007, 0x0010, 0x0804, 0xb20d, 0x0046, 0x6410, 0x94a0, 0x0028, -+ 0x2424, 0x94a4, 0x00ff, 0x8427, 0x0046, 0x080c, 0x2862, 0x004e, -+ 0x0016, 0x9006, 0x2009, 0x1153, 0x210c, 0xd1a4, 0x0158, 0x2009, -+ 0x0029, 0x080c, 0xc12f, 0x6010, 0x00d6, 0x2068, 0x6800, 0xc0e5, -+ 0x6802, 0x00de, 0x001e, 0x004e, 0x6007, 0x0001, 0x00f0, 0x080c, -+ 0xbfdb, 0x0140, 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x0950, -+ 0x0804, 0xb0f2, 0x6017, 0x1900, 0x6007, 0x0009, 0x0070, 0x080c, -+ 0x297d, 0x1904, 0xb411, 0x080c, 0xc327, 0x1904, 0xb411, 0x080c, -+ 0xb588, 0x1904, 0xb0f2, 0x6007, 0x0012, 0x6003, 0x0001, 0x080c, -+ 0x75be, 0x080c, 0x7aa4, 0x0005, 0x6007, 0x0001, 0x6003, 0x0001, -+ 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0cb0, 0x6007, 0x0005, 0x0c68, -+ 0x080c, 0xc327, 0x1904, 0xb411, 0x080c, 0x297d, 0x1904, 0xb411, -+ 0x080c, 0xb588, 0x1904, 0xb0f2, 0x6007, 0x0020, 0x6003, 0x0001, -+ 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0005, 0x080c, 0x297d, 0x1904, -+ 0xb411, 0x6007, 0x0023, 0x6003, 0x0001, 0x080c, 0x75be, 0x080c, -+ 0x7aa4, 0x0005, 0x080c, 0xc327, 0x1904, 0xb411, 0x080c, 0x297d, -+ 0x1904, 0xb411, 0x080c, 0xb588, 0x1904, 0xb0f2, 0x0016, 0x0026, -+ 0x00e6, 0x2071, 0x0260, 0x7244, 0x9286, 0xffff, 0x0180, 0x2c08, -+ 0x080c, 0xa932, 0x01b0, 0x2260, 0x7240, 0x6008, 0x9206, 0x1188, -+ 0x6010, 0x9190, 0x0004, 0x2214, 0x9206, 0x01b8, 0x0050, 0x7240, -+ 0x2c08, 0x9006, 0x080c, 0xc101, 0x1180, 0x7244, 0x9286, 0xffff, -+ 0x01b0, 0x2160, 0x6007, 0x0026, 0x6017, 0x1700, 0x7214, 0x9296, -+ 0xffff, 0x1180, 0x6007, 0x0025, 0x0068, 0x6020, 0x9086, 0x0007, -+ 0x1d80, 0x6004, 0x9086, 0x0024, 0x1110, 0x080c, 0x8ed9, 0x2160, -+ 0x6007, 0x0025, 0x6003, 0x0001, 0x080c, 0x75be, 0x080c, 0x7aa4, -+ 0x00ee, 0x002e, 0x001e, 0x0005, 0x2001, 0x0001, 0x080c, 0x5556, -+ 0x0156, 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0x1105, -+ 0x2011, 0x0276, 0x080c, 0x9d60, 0x003e, 0x002e, 0x001e, 0x015e, -+ 0x0120, 0x6007, 0x0031, 0x0804, 0xb20d, 0x080c, 0x9a13, 0x080c, -+ 0x62e4, 0x11b0, 0x0006, 0x0026, 0x0036, 0x080c, 0x6300, 0x1158, -+ 0x2001, 0x12a8, 0x2003, 0x0001, 0x2001, 0x1100, 0x2003, 0x0001, -+ 0x080c, 0x621a, 0x0010, 0x080c, 0x62be, 0x003e, 0x002e, 0x000e, -+ 0x0005, 0x080c, 0x297d, 0x1904, 0xb411, 0x6106, 0x080c, 0xb5a4, -+ 0x6007, 0x002b, 0x0804, 0xb20d, 0x6007, 0x002c, 0x0804, 0xb20d, -+ 0x080c, 0xc327, 0x1904, 0xb411, 0x080c, 0x297d, 0x1904, 0xb411, -+ 0x080c, 0xb588, 0x1904, 0xb0f2, 0x6106, 0x080c, 0xb5a8, 0x1120, -+ 0x6007, 0x002e, 0x0804, 0xb20d, 0x6007, 0x002f, 0x0804, 0xb20d, -+ 0x080c, 0x297d, 0x1904, 0xb411, 0x00e6, 0x00d6, 0x00c6, 0x6010, -+ 0x9080, 0x0001, 0x200c, 0x9184, 0x00ff, 0x9086, 0x0006, 0x0158, -+ 0x9184, 0xff00, 0x8007, 0x9086, 0x0006, 0x0128, 0x00ce, 0x00de, -+ 0x00ee, 0x0804, 0xb214, 0x2001, 0x1172, 0x2004, 0xd0e4, 0x0904, -+ 0xb365, 0x2071, 0x026c, 0x7010, 0x603a, 0x7014, 0x603e, 0x7108, -+ 0x720c, 0x080c, 0x58cb, 0x0140, 0x6010, 0x2068, 0x6810, 0x9106, -+ 0x1118, 0x6814, 0x9206, 0x01f8, 0x080c, 0x58c6, 0x15a0, 0x2069, -+ 0x1100, 0x6878, 0x9206, 0x1578, 0x6874, 0x9106, 0x1560, 0x7210, -+ 0x080c, 0xa932, 0x0568, 0x080c, 0xc19f, 0x0550, 0x622e, 0x6007, -+ 0x0036, 0x6003, 0x0001, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x00ce, -+ 0x00de, 0x00ee, 0x0005, 0x7214, 0x9286, 0xffff, 0x0150, 0x080c, -+ 0xa932, 0x01b0, 0x9280, 0x0002, 0x2004, 0x7110, 0x9106, 0x1180, -+ 0x08f8, 0x7210, 0x2c08, 0x9085, 0x0001, 0x080c, 0xc101, 0x2c10, -+ 0x2160, 0x0130, 0x08a8, 0x6007, 0x0037, 0x6017, 0x1500, 0x08c8, -+ 0x6007, 0x0037, 0x6017, 0x1700, 0x08a0, 0x6007, 0x0012, 0x0888, -+ 0x080c, 0x297d, 0x1904, 0xb411, 0x6010, 0x9080, 0x0001, 0x2004, -+ 0x9084, 0xff00, 0x8007, 0x9086, 0x0006, 0x1904, 0xb214, 0x00e6, -+ 0x00d6, 0x00c6, 0x2001, 0x1172, 0x2004, 0xd0e4, 0x0904, 0xb3d5, -+ 0x2069, 0x1100, 0x2071, 0x026c, 0x7008, 0x603a, 0x720c, 0x623e, -+ 0x9286, 0xffff, 0x1150, 0x7208, 0x00c6, 0x2c08, 0x9085, 0x0001, -+ 0x080c, 0xc101, 0x2c10, 0x00ce, 0x0598, 0x080c, 0xa932, 0x0580, -+ 0x00c6, 0x0026, 0x2260, 0x080c, 0xa5e6, 0x002e, 0x00ce, 0x7118, -+ 0x918c, 0xff00, 0x810f, 0x9186, 0x0001, 0x0158, 0x9186, 0x0005, -+ 0x0118, 0x9186, 0x0007, 0x1178, 0x9280, 0x0005, 0x2004, 0x9005, -+ 0x0150, 0x0056, 0x7510, 0x7614, 0x080c, 0xc1b8, 0x005e, 0x00ce, -+ 0x00de, 0x00ee, 0x0005, 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, -+ 0x2a00, 0x6003, 0x0001, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x0c78, -+ 0x6007, 0x003b, 0x602f, 0x0009, 0x6017, 0x1700, 0x6003, 0x0001, -+ 0x080c, 0x756e, 0x080c, 0x7aa4, 0x0c10, 0x6007, 0x003b, 0x602f, -+ 0x000b, 0x6017, 0x0000, 0x0804, 0xb339, 0x00e6, 0x0026, 0x080c, -+ 0x588e, 0x0548, 0x080c, 0x587e, 0x080c, 0xc392, 0x1510, 0x2071, -+ 0x1100, 0x70d8, 0xc085, 0x70da, 0x00f6, 0x2079, 0x0100, 0x72a8, -+ 0x9284, 0x00ff, 0x7076, 0x78e6, 0x9284, 0xff00, 0x7278, 0x9205, -+ 0x707a, 0x78ea, 0x00fe, 0x70e3, 0x0000, 0x080c, 0x58cb, 0x0120, -+ 0x2011, 0x131d, 0x2013, 0x07d0, 0xd0ac, 0x1128, 0x080c, 0x2679, -+ 0x0010, 0x080c, 0xc3be, 0x002e, 0x00ee, 0x080c, 0x8ed9, 0x0804, -+ 0xb213, 0x080c, 0x8ed9, 0x0005, 0x2600, 0x0002, 0xb428, 0xb428, -+ 0xb428, 0xb428, 0xb428, 0xb42a, 0xb428, 0xb428, 0xb428, 0xb428, -+ 0xb443, 0xb428, 0xb428, 0xb428, 0xb455, 0xb462, 0xb491, 0xb428, -+ 0x080c, 0x0d7e, 0x080c, 0xc327, 0x1d20, 0x080c, 0x297d, 0x1d08, -+ 0x080c, 0xb588, 0x1138, 0x6007, 0x0045, 0x6003, 0x0001, 0x080c, -+ 0x75be, 0x0005, 0x080c, 0x2862, 0x6007, 0x0001, 0x6003, 0x0001, -+ 0x080c, 0x75be, 0x0005, 0x080c, 0xc327, 0x1958, 0x080c, 0x297d, -+ 0x1940, 0x080c, 0xb588, 0x1d70, 0x703c, 0x6016, 0x6007, 0x004a, -+ 0x6003, 0x0001, 0x080c, 0x75be, 0x0005, 0x080c, 0xb496, 0x0904, -+ 0xb411, 0x6007, 0x004e, 0x6003, 0x0001, 0x080c, 0x75be, 0x080c, -+ 0x7aa4, 0x0005, 0x6007, 0x004f, 0x6017, 0x0000, 0x7134, 0x918c, -+ 0x00ff, 0x81ff, 0x01f8, 0x9186, 0x0001, 0x1160, 0x7140, 0x2001, -+ 0x12f4, 0x2004, 0x9106, 0x11a0, 0x7144, 0x2001, 0x12f5, 0x2004, -+ 0x9106, 0x0180, 0x9186, 0x0002, 0x1158, 0x2011, 0x0276, 0x20a9, -+ 0x0004, 0x6010, 0x6010, 0x9098, 0x000a, 0x080c, 0x9d60, 0x0110, -+ 0x6017, 0x0001, 0x6003, 0x0001, 0x080c, 0x75be, 0x080c, 0x7aa4, -+ 0x0005, 0x6007, 0x0050, 0x703c, 0x6016, 0x0ca0, 0x0016, 0x00d6, -+ 0x00e6, 0x01c6, 0x01d6, 0x0126, 0x2091, 0x8000, 0x2071, 0x1100, -+ 0x7088, 0x908a, 0x00f9, 0x16c8, 0x20e1, 0x0000, 0x20e9, 0x0001, -+ 0x2001, 0x12da, 0x2003, 0x0000, 0x080c, 0x0e9d, 0x0570, 0x2d00, -+ 0x6016, 0x7088, 0x8004, 0x6816, 0x908a, 0x001e, 0x02b8, 0x6833, -+ 0x001e, 0x20a9, 0x001e, 0x9d80, 0x001b, 0x20a0, 0x2001, 0x12da, -+ 0x0016, 0x200c, 0x0451, 0x001e, 0x2d70, 0x080c, 0x0e9d, 0x01a8, -+ 0x2d00, 0x7006, 0x2100, 0x81ff, 0x0168, 0x0c30, 0x6832, 0x20a8, -+ 0x9d80, 0x001b, 0x20a0, 0x2001, 0x12da, 0x0016, 0x200c, 0x00a9, -+ 0x001e, 0x0000, 0x9085, 0x0001, 0x0048, 0x2071, 0x1100, 0x708b, -+ 0x0000, 0x6014, 0x2068, 0x080c, 0x0edf, 0x9006, 0x012e, 0x01de, -+ 0x01ce, 0x00ee, 0x00de, 0x001e, 0x0005, 0x0006, 0x0016, 0x0026, -+ 0x0036, 0x00c6, 0x918c, 0xffff, 0x11a8, 0x080c, 0x1b40, 0x2099, -+ 0x026c, 0x2001, 0x0014, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, -+ 0x00f8, 0x20a8, 0x4003, 0x22a8, 0x8108, 0x080c, 0x1b40, 0x2099, -+ 0x0260, 0x0ca8, 0x080c, 0x1b40, 0x2061, 0x12da, 0x6004, 0x2098, -+ 0x6008, 0x3518, 0x9312, 0x1218, 0x23a8, 0x4003, 0x0048, 0x20a8, -+ 0x4003, 0x22a8, 0x8108, 0x080c, 0x1b40, 0x2099, 0x0260, 0x0ca8, -+ 0x2061, 0x12da, 0x2019, 0x0280, 0x3300, 0x931e, 0x0110, 0x6006, -+ 0x0020, 0x2001, 0x0260, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, -+ 0x9296, 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, -+ 0x0005, 0x0006, 0x0016, 0x0026, 0x0036, 0x00c6, 0x81ff, 0x11b8, -+ 0x080c, 0x1b58, 0x20a1, 0x024c, 0x2001, 0x0014, 0x3518, 0x9312, -+ 0x1218, 0x23a8, 0x4003, 0x0418, 0x20a8, 0x4003, 0x82ff, 0x01f8, -+ 0x22a8, 0x8108, 0x080c, 0x1b58, 0x20a1, 0x0240, 0x0c98, 0x080c, -+ 0x1b58, 0x2061, 0x12dd, 0x6004, 0x20a0, 0x6008, 0x3518, 0x9312, -+ 0x1218, 0x23a8, 0x4003, 0x0058, 0x20a8, 0x4003, 0x82ff, 0x0138, -+ 0x22a8, 0x8108, 0x080c, 0x1b58, 0x20a1, 0x0240, 0x0c98, 0x2061, -+ 0x12dd, 0x2019, 0x0260, 0x3400, 0x931e, 0x0110, 0x6006, 0x0020, -+ 0x2001, 0x0240, 0x6006, 0x8108, 0x2162, 0x9292, 0x0021, 0x9296, -+ 0xffff, 0x620a, 0x00ce, 0x003e, 0x002e, 0x001e, 0x000e, 0x0005, -+ 0x00d6, 0x0066, 0x6610, 0x2668, 0x6e04, 0x96b4, 0xff00, 0x8637, -+ 0x9686, 0x0006, 0x0170, 0x9686, 0x0004, 0x0158, 0x6e04, 0x96b4, -+ 0x00ff, 0x9686, 0x0006, 0x0128, 0x9686, 0x0004, 0x0110, 0x9085, -+ 0x0001, 0x006e, 0x00de, 0x0005, 0x00d6, 0x0441, 0x00de, 0x0005, -+ 0x00d6, 0x0489, 0x11e8, 0x680c, 0x908c, 0xff00, 0x6820, 0x9084, -+ 0x00ff, 0x9115, 0x6216, 0x6824, 0x602e, 0xd1e4, 0x0118, 0x2009, -+ 0x0001, 0x0058, 0xd1ec, 0x0160, 0x6920, 0x918c, 0x00ff, 0x6824, -+ 0x080c, 0x1f63, 0x1128, 0x2110, 0x900e, 0x080c, 0x28a5, 0x0018, -+ 0x9085, 0x0001, 0x0008, 0x9006, 0x00de, 0x0005, 0x2069, 0x026d, -+ 0x6800, 0x9082, 0x0010, 0x1228, 0x6017, 0x0000, 0x9085, 0x0001, -+ 0x0008, 0x9006, 0x0005, 0x6017, 0x0000, 0x2069, 0x026c, 0x6808, -+ 0x9084, 0xff00, 0x9086, 0x0800, 0x1140, 0x6800, 0x9084, 0x00ff, -+ 0x908e, 0x0014, 0x0110, 0x908e, 0x0010, 0x0005, 0x6004, 0x90b2, -+ 0x0053, 0x1a0c, 0x0d7e, 0x91b6, 0x0013, 0x1130, 0x2008, 0x91b2, -+ 0x0040, 0x1a04, 0xb720, 0x0092, 0x91b6, 0x0027, 0x0120, 0x91b6, -+ 0x0014, 0x190c, 0x0d7e, 0x2001, 0x0007, 0x080c, 0x5592, 0x080c, -+ 0x79ab, 0x080c, 0x8f09, 0x080c, 0x7aa4, 0x0005, 0xb64e, 0xb650, -+ 0xb64e, 0xb64e, 0xb64e, 0xb650, 0xb661, 0xb719, 0xb6b8, 0xb719, -+ 0xb6cc, 0xb719, 0xb661, 0xb719, 0xb711, 0xb719, 0xb711, 0xb719, -+ 0xb719, 0xb64e, 0xb64e, 0xb64e, 0xb64e, 0xb64e, 0xb64e, 0xb64e, -+ 0xb64e, 0xb64e, 0xb64e, 0xb64e, 0xb650, 0xb64e, 0xb719, 0xb64e, -+ 0xb64e, 0xb719, 0xb64e, 0xb716, 0xb719, 0xb64e, 0xb64e, 0xb64e, -+ 0xb64e, 0xb719, 0xb719, 0xb64e, 0xb719, 0xb719, 0xb64e, 0xb65c, -+ 0xb64e, 0xb64e, 0xb64e, 0xb64e, 0xb715, 0xb719, 0xb64e, 0xb64e, -+ 0xb719, 0xb719, 0xb64e, 0xb64e, 0xb64e, 0xb64e, 0x080c, 0x0d7e, -+ 0x080c, 0x79ab, 0x2001, 0x12c0, 0x2004, 0x601a, 0x6003, 0x0002, -+ 0x080c, 0x7aa4, 0x0804, 0xb71f, 0x9006, 0x080c, 0x5556, 0x0804, -+ 0xb719, 0x080c, 0x58c6, 0x1904, 0xb719, 0x9006, 0x080c, 0x5556, -+ 0x6010, 0x9080, 0x0004, 0x2004, 0x9086, 0x00ff, 0x1140, 0x00f6, -+ 0x2079, 0x1100, 0x78a0, 0x8000, 0x78a2, 0x00fe, 0x0438, 0x6010, -+ 0x00c6, 0x2060, 0x6000, 0xd0f4, 0x1178, 0x6010, 0x9005, 0x0160, -+ 0x0036, 0x0046, 0x63a0, 0x2021, 0x0007, 0x080c, 0x4026, 0x004e, -+ 0x003e, 0x00ce, 0x0804, 0xb719, 0x00ce, 0x080c, 0x2982, 0x1904, -+ 0xb719, 0x2001, 0x1100, 0x2004, 0x9086, 0x0002, 0x1138, 0x00f6, -+ 0x2079, 0x1100, 0x78a0, 0x8000, 0x78a2, 0x00fe, 0x2001, 0x0002, -+ 0x080c, 0x5568, 0x080c, 0x79ab, 0x6023, 0x0001, 0x6003, 0x0001, -+ 0x6007, 0x0002, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x6110, 0x00c6, -+ 0x2160, 0x2009, 0x0001, 0x080c, 0x7206, 0x00ce, 0x0804, 0xb71f, -+ 0x6610, 0x00d6, 0x2668, 0x6e04, 0x00de, 0x96b4, 0xff00, 0x8637, -+ 0x9686, 0x0006, 0x0904, 0xb719, 0x9686, 0x0004, 0x0904, 0xb719, -+ 0x2001, 0x0004, 0x0804, 0xb717, 0x2001, 0x1100, 0x2004, 0x9086, -+ 0x0003, 0x1160, 0x0036, 0x0046, 0x6010, 0x9080, 0x0028, 0x201c, -+ 0x2021, 0x0006, 0x080c, 0x4026, 0x004e, 0x003e, 0x2001, 0x0006, -+ 0x080c, 0xb73d, 0x6610, 0x00d6, 0x2668, 0x6e04, 0x00de, 0x0066, -+ 0x96b4, 0xff00, 0x8637, 0x9686, 0x0006, 0x006e, 0x0120, 0x2001, -+ 0x0006, 0x080c, 0x5592, 0x080c, 0x58c6, 0x1518, 0x2001, 0x1136, -+ 0x2004, 0xd0a4, 0x01f0, 0x00d6, 0x6610, 0x2668, 0x6e04, 0x00de, -+ 0x96b4, 0x00ff, 0x9686, 0x0006, 0x01a0, 0x00f6, 0x2079, 0x1100, -+ 0x78a0, 0x8000, 0x78a2, 0x00fe, 0x0804, 0xb69e, 0x2001, 0x0004, -+ 0x0030, 0x2001, 0x0006, 0x0449, 0x0020, 0x0018, 0x0010, 0x080c, -+ 0x5592, 0x080c, 0x79ab, 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, -+ 0x2600, 0x0002, 0xb734, 0xb734, 0xb734, 0xb734, 0xb734, 0xb736, -+ 0xb734, 0xb734, 0xb734, 0xb734, 0xb736, 0xb734, 0xb734, 0xb734, -+ 0xb736, 0xb736, 0xb736, 0xb736, 0x080c, 0x0d7e, 0x080c, 0x79ab, -+ 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, 0x0016, 0x00d6, 0x6110, -+ 0x2168, 0x6900, 0xd184, 0x0138, 0x080c, 0x5568, 0x9006, 0x080c, -+ 0x5556, 0x080c, 0x2886, 0x00de, 0x001e, 0x0005, 0x6610, 0x00d6, -+ 0x2668, 0x6804, 0x9084, 0xff00, 0x8007, 0x00de, 0x90b2, 0x000c, -+ 0x1a0c, 0x0d7e, 0x91b6, 0x0015, 0x1110, 0x003b, 0x0028, 0x91b6, -+ 0x0016, 0x190c, 0x0d7e, 0x006b, 0x0005, 0x98b0, 0x98b0, 0x98b0, -+ 0x98b0, 0x98b0, 0x98b0, 0xb7bb, 0xb77d, 0x98b0, 0x98b0, 0x98b0, -+ 0x98b0, 0x98b0, 0x98b0, 0x98b0, 0x98b0, 0x98b0, 0x98b0, 0xb7bb, -+ 0xb7c2, 0x98b0, 0x98b0, 0x98b0, 0x98b0, 0x00f6, 0x080c, 0x58c6, -+ 0x11d8, 0x6010, 0x907d, 0x01c0, 0x7800, 0xd0f4, 0x1118, 0x7810, -+ 0x9005, 0x1190, 0x9006, 0x080c, 0x5556, 0x2001, 0x0002, 0x080c, -+ 0x5568, 0x6023, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x080c, -+ 0x75be, 0x080c, 0x7aa4, 0x00e8, 0x2011, 0x0263, 0x2204, 0x8211, -+ 0x220c, 0x080c, 0x1f63, 0x11a8, 0x00c6, 0x080c, 0x5608, 0x0120, -+ 0x00ce, 0x080c, 0x8ed9, 0x0068, 0x6010, 0x0006, 0x6014, 0x0006, -+ 0x080c, 0x5100, 0x000e, 0x6016, 0x000e, 0x6012, 0x00ce, 0x080c, -+ 0x8ed9, 0x00fe, 0x0005, 0x6604, 0x96b6, 0x001e, 0x1110, 0x080c, -+ 0x8ed9, 0x0005, 0x080c, 0x9bf7, 0x1148, 0x6003, 0x0001, 0x6007, -+ 0x0001, 0x080c, 0x75be, 0x080c, 0x7aa4, 0x0010, 0x080c, 0x8ed9, -+ 0x0005, 0x6004, 0x908a, 0x0053, 0x1a0c, 0x0d7e, 0x080c, 0x79ab, -+ 0x080c, 0x8f09, 0x080c, 0x7aa4, 0x0005, 0x9182, 0x0040, 0x0002, -+ 0xb7f3, 0xb7f3, 0xb7f3, 0xb7f3, 0xb7f5, 0xb7f3, 0xb7f3, 0xb7f3, -+ 0xb7f3, 0xb7f3, 0xb7f3, 0xb7f3, 0xb7f3, 0xb7f3, 0xb7f3, 0xb7f3, -+ 0xb7f3, 0xb7f3, 0xb7f3, 0x080c, 0x0d7e, 0x00d6, 0x00e6, 0x00f6, -+ 0x0046, 0x0026, 0x6210, 0x9280, 0x002b, 0x2004, 0x9005, 0x1190, -+ 0x6106, 0x2071, 0x0260, 0x7444, 0x94a4, 0xff00, 0x0904, 0xb858, -+ 0x9486, 0x2000, 0x1158, 0x2009, 0x0001, 0x2011, 0x0200, 0x080c, -+ 0x73af, 0x0020, 0x9026, 0x080c, 0xc363, 0x0c50, 0x080c, 0x0eb6, -+ 0x090c, 0x0d7e, 0x6003, 0x0007, 0x2d00, 0x6867, 0x010d, 0x9006, -+ 0x6802, 0x686a, 0x6c8a, 0x2c00, 0x688e, 0x6008, 0x68e2, 0x6010, -+ 0x2078, 0x78a0, 0x8007, 0x7130, 0x697a, 0x0016, 0x9084, 0xff00, -+ 0x6876, 0x687f, 0x0000, 0x6883, 0x0000, 0x6887, 0x0036, 0x080c, -+ 0x5b76, 0x001e, 0x9486, 0x2000, 0x1130, 0x2019, 0x0017, 0x080c, -+ 0xc0b9, 0x0804, 0xb8b2, 0x9486, 0x0400, 0x1130, 0x2019, 0x0002, -+ 0x080c, 0xc072, 0x0804, 0xb8b2, 0x9486, 0x0200, 0x1110, 0x080c, -+ 0xc05a, 0x9486, 0x1000, 0x1110, 0x080c, 0xc0a1, 0x0804, 0xb8b2, -+ 0x2069, 0x1354, 0x6a00, 0xd284, 0x0904, 0xb91a, 0x9284, 0x0300, -+ 0x1904, 0xb913, 0x6804, 0x9005, 0x0904, 0xb8fb, 0x2d78, 0x6003, -+ 0x0007, 0x080c, 0x0e9d, 0x0904, 0xb8bc, 0x7800, 0xd08c, 0x1118, -+ 0x7804, 0x8001, 0x7806, 0x6017, 0x0000, 0x9006, 0x6802, 0x6867, -+ 0x0116, 0x686a, 0x6008, 0x68e2, 0x2c00, 0x687a, 0x6010, 0x2078, -+ 0x78a0, 0x8007, 0x7130, 0x69b6, 0x6876, 0x7928, 0x69ba, 0x792c, -+ 0x69be, 0x7930, 0x69c2, 0x7934, 0x69c6, 0x6883, 0x003d, 0x7044, -+ 0x9084, 0x0003, 0x9080, 0xb8b8, 0x2005, 0x687e, 0x20a9, 0x000a, -+ 0x2001, 0x0270, 0x9d90, 0x0021, 0x2009, 0x0205, 0x200b, 0x0080, -+ 0x20e1, 0x0000, 0x20e9, 0x0001, 0x2098, 0x22a0, 0x4003, 0x200b, -+ 0x0000, 0x2001, 0x027a, 0x200c, 0x69b2, 0x8000, 0x200c, 0x69ae, -+ 0x080c, 0x5b76, 0x002e, 0x004e, 0x00fe, 0x00ee, 0x00de, 0x0005, -+ 0x0000, 0x0080, 0x0040, 0x0000, 0x2001, 0x110f, 0x2004, 0xd084, -+ 0x0120, 0x080c, 0x0eb6, 0x1904, 0xb86d, 0x6017, 0x0100, 0x6003, -+ 0x0001, 0x6007, 0x0041, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x0c10, -+ 0x2069, 0x0260, 0x6848, 0x9084, 0xff00, 0x9086, 0x1200, 0x1198, -+ 0x686c, 0x9084, 0x00ff, 0x0016, 0x6114, 0x918c, 0x0700, 0x910d, -+ 0x6116, 0x001e, 0x6003, 0x0001, 0x6007, 0x0043, 0x080c, 0x756e, -+ 0x080c, 0x7aa4, 0x0838, 0x6868, 0x602e, 0x686c, 0x6032, 0x6017, -+ 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x756e, 0x080c, -+ 0x7aa4, 0x0804, 0xb8b2, 0x2001, 0x110d, 0x2004, 0xd0ec, 0x0120, -+ 0x2011, 0x8049, 0x080c, 0x3f23, 0x6017, 0x0300, 0x0010, 0x6017, -+ 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x080c, 0x756e, 0x080c, -+ 0x7aa4, 0x0804, 0xb8b2, 0x6017, 0x0500, 0x0c98, 0x6017, 0x0600, -+ 0x0804, 0xb8d0, 0x6017, 0x0200, 0x0804, 0xb8d0, 0x9186, 0x0013, -+ 0x1160, 0x6004, 0x908a, 0x0054, 0x1a0c, 0x0d7e, 0x9082, 0x0040, -+ 0x0a0c, 0x0d7e, 0x2008, 0x0804, 0xb9ca, 0x9186, 0x0051, 0x0140, -+ 0x9186, 0x0047, 0x11e8, 0x6004, 0x9086, 0x0041, 0x0904, 0xb97e, -+ 0x2001, 0x0109, 0x2004, 0xd084, 0x0904, 0xb97e, 0x0126, 0x2091, -+ 0x2800, 0x0006, 0x0016, 0x0026, 0x080c, 0x745c, 0x002e, 0x001e, -+ 0x000e, 0x012e, 0x6000, 0x9086, 0x0002, 0x1580, 0x0804, 0xba17, -+ 0x9186, 0x0027, 0x0530, 0x9186, 0x0048, 0x0128, 0x9186, 0x0014, -+ 0x0500, 0x190c, 0x0d7e, 0x2001, 0x0109, 0x2004, 0xd084, 0x01f0, -+ 0x00c6, 0x0126, 0x2091, 0x2800, 0x00c6, 0x2061, 0x0100, 0x0006, -+ 0x0016, 0x0026, 0x080c, 0x745c, 0x002e, 0x001e, 0x000e, 0x00ce, -+ 0x012e, 0x00ce, 0x6000, 0x9086, 0x0004, 0x190c, 0x0d7e, 0x0804, -+ 0xbaf9, 0x6004, 0x9082, 0x0040, 0x2008, 0x001a, 0x080c, 0x8f6e, -+ 0x0005, 0xb994, 0xb996, 0xb996, 0xb9ba, 0xb994, 0xb994, 0xb994, -+ 0xb994, 0xb994, 0xb994, 0xb994, 0xb994, 0xb994, 0xb994, 0xb994, -+ 0xb994, 0xb994, 0xb994, 0xb994, 0x080c, 0x0d7e, 0x080c, 0x79ab, -+ 0x080c, 0x7aa4, 0x0036, 0x00d6, 0x6014, 0x906d, 0x01c0, 0x9d84, -+ 0xf000, 0x01a8, 0x6003, 0x0002, 0x6010, 0x2004, 0xd0bc, 0x1178, -+ 0x2019, 0x0004, 0x080c, 0xc0e9, 0x6017, 0x0000, 0x6018, 0x9005, -+ 0x1120, 0x2001, 0x12c1, 0x2004, 0x601a, 0x6003, 0x0007, 0x00de, -+ 0x003e, 0x0005, 0x00d6, 0x080c, 0x79ab, 0x080c, 0x7aa4, 0x080c, -+ 0xa942, 0x0120, 0x6014, 0x2068, 0x080c, 0x0ecf, 0x080c, 0x8f09, -+ 0x00de, 0x0005, 0x0002, 0xb9de, 0xb9fb, 0xb9e7, 0xba11, 0xb9de, -+ 0xb9de, 0xb9de, 0xb9de, 0xb9de, 0xb9de, 0xb9de, 0xb9de, 0xb9de, -+ 0xb9de, 0xb9de, 0xb9de, 0xb9de, 0xb9de, 0xb9de, 0x080c, 0x0d7e, -+ 0x6014, 0x9088, 0x001f, 0x2104, 0x9085, 0x0400, 0x200a, 0x080c, -+ 0x79ab, 0x6014, 0x9080, 0x001f, 0x2004, 0xd0b4, 0x0138, 0x6003, -+ 0x0007, 0x2009, 0x0043, 0x080c, 0x8f53, 0x0010, 0x6003, 0x0004, -+ 0x080c, 0x7aa4, 0x0005, 0x080c, 0x79ab, 0x6114, 0x9184, 0xf000, -+ 0x0128, 0x9180, 0x001f, 0x200c, 0xd1ec, 0x1138, 0x080c, 0x7384, -+ 0x080c, 0x8ed9, 0x080c, 0x7aa4, 0x0005, 0x080c, 0xc32e, 0x0db0, -+ 0x0cc8, 0x080c, 0x79ab, 0x2009, 0x0041, 0x0804, 0xbb7b, 0x9182, -+ 0x0040, 0x0002, 0xba2d, 0xba2f, 0xba2d, 0xba2d, 0xba2d, 0xba2d, -+ 0xba2d, 0xba2d, 0xba2d, 0xba2d, 0xba2d, 0xba2d, 0xba2d, 0xba2d, -+ 0xba2d, 0xba2d, 0xba2d, 0xba30, 0xba2d, 0x080c, 0x0d7e, 0x0005, -+ 0x00d6, 0x080c, 0x7384, 0x00de, 0x080c, 0xc381, 0x080c, 0x8ed9, -+ 0x0005, 0x9182, 0x0040, 0x0002, 0xba4f, 0xba4f, 0xba4f, 0xba4f, -+ 0xba4f, 0xba4f, 0xba4f, 0xba51, 0xba4f, 0xba54, 0xbac4, 0xba4f, -+ 0xba4f, 0xba4f, 0xba4f, 0xbac4, 0xba4f, 0xba4f, 0xba4f, 0x080c, -+ 0x0d7e, 0x080c, 0x8f6e, 0x0005, 0x2001, 0x0105, 0x2004, 0x9084, -+ 0x1800, 0x01c8, 0x2001, 0x0132, 0x200c, 0x2001, 0x0131, 0x2004, -+ 0x9105, 0x1904, 0xbac4, 0x2009, 0x110c, 0x2104, 0xd0d4, 0x0904, -+ 0xbac4, 0xc0d4, 0x200a, 0x2009, 0x0105, 0x2104, 0x9084, 0xe7fd, -+ 0x9085, 0x0010, 0x200a, 0x2001, 0x1172, 0x2004, 0xd0e4, 0x1528, -+ 0x603b, 0x0000, 0x080c, 0x7a55, 0x6014, 0x00d6, 0x2068, 0x687c, -+ 0xd0fc, 0x0188, 0x908c, 0x0003, 0x918e, 0x0002, 0x0508, 0x2001, -+ 0x110c, 0x2004, 0xd0d4, 0x11e0, 0x080c, 0x7b69, 0x2009, 0x0041, -+ 0x00de, 0x0804, 0xbb7b, 0x080c, 0x7b69, 0x6003, 0x0007, 0x601b, -+ 0x0000, 0x080c, 0x7384, 0x00de, 0x0005, 0x2001, 0x0100, 0x2004, -+ 0x9082, 0x0005, 0x0aa8, 0x2001, 0x011f, 0x2004, 0x603a, 0x0890, -+ 0x2001, 0x110c, 0x200c, 0xc1d4, 0x2102, 0xd1cc, 0x0110, 0x080c, -+ 0x2369, 0x080c, 0x7b69, 0x6014, 0x9080, 0x001f, 0x200c, 0xd1ec, -+ 0x1130, 0x080c, 0x7384, 0x080c, 0x8ed9, 0x00de, 0x0005, 0x080c, -+ 0xc32e, 0x0db8, 0x00de, 0x0005, 0x2001, 0x110c, 0x200c, 0xc1d4, -+ 0x2102, 0x0036, 0x080c, 0x7a55, 0x080c, 0x7b69, 0x6014, 0x00d6, -+ 0x2068, 0x6010, 0x2004, 0xd0bc, 0x0188, 0x687c, 0x9084, 0x0003, -+ 0x9086, 0x0002, 0x0140, 0x68ac, 0x6330, 0x931a, 0x6332, 0x68b0, -+ 0x632c, 0x931b, 0x632e, 0x6003, 0x0002, 0x0080, 0x2019, 0x0004, -+ 0x080c, 0xc0e9, 0x6018, 0x9005, 0x1128, 0x2001, 0x12c1, 0x2004, -+ 0x8003, 0x601a, 0x6017, 0x0000, 0x6003, 0x0007, 0x00de, 0x003e, -+ 0x0005, 0x9182, 0x0040, 0x0002, 0xbb10, 0xbb10, 0xbb10, 0xbb10, -+ 0xbb10, 0xbb10, 0xbb10, 0xbb10, 0xbb12, 0xbb10, 0xbb10, 0xbb10, -+ 0xbb10, 0xbb10, 0xbb10, 0xbb10, 0xbb10, 0xbb10, 0xbb10, 0xbb57, -+ 0x080c, 0x0d7e, 0x6014, 0x00d6, 0x2068, 0x6834, 0x6a38, 0x6110, -+ 0x210c, 0xd1bc, 0x1190, 0x920d, 0x1518, 0x687c, 0xd0fc, 0x0128, -+ 0x2009, 0x0041, 0x00de, 0x0804, 0xbb7b, 0x6003, 0x0007, 0x601b, -+ 0x0000, 0x080c, 0x7384, 0x00de, 0x0005, 0x6124, 0xd1f4, 0x1d58, -+ 0x0006, 0x0046, 0x6cac, 0x9422, 0x69b0, 0x2200, 0x910b, 0x6030, -+ 0x9420, 0x6432, 0x602c, 0x9109, 0x612e, 0x004e, 0x000e, 0x08d8, -+ 0x6110, 0x210c, 0xd1bc, 0x1178, 0x2009, 0x110d, 0x210c, 0xd19c, -+ 0x0118, 0x6003, 0x0007, 0x0010, 0x6003, 0x0006, 0x00e9, 0x080c, -+ 0x7386, 0x00de, 0x0005, 0x6003, 0x0002, 0x00de, 0x0005, 0x6024, -+ 0xd0f4, 0x0128, 0x080c, 0x1303, 0x1904, 0xbb12, 0x0005, 0x6014, -+ 0x00d6, 0x2068, 0x6834, 0x6938, 0x00de, 0x9105, 0x1120, 0x080c, -+ 0x1303, 0x1904, 0xbb12, 0x0005, 0xd2fc, 0x0140, 0x8002, 0x8000, -+ 0x8212, 0x9291, 0x0000, 0x2009, 0x0009, 0x0010, 0x2009, 0x0015, -+ 0x6a9a, 0x6896, 0x0005, 0x9182, 0x0040, 0x0208, 0x0062, 0x9186, -+ 0x0013, 0x0120, 0x9186, 0x0014, 0x190c, 0x0d7e, 0x6024, 0xd0dc, -+ 0x090c, 0x0d7e, 0x0005, 0xbb9e, 0xbba5, 0xbbb1, 0xbbbd, 0xbb9e, -+ 0xbb9e, 0xbb9e, 0xbbcc, 0xbb9e, 0xbba0, 0xbba0, 0xbb9e, 0xbb9e, -+ 0xbb9e, 0xbb9e, 0xbba0, 0xbb9e, 0xbba0, 0xbb9e, 0x080c, 0x0d7e, -+ 0x6024, 0xd0dc, 0x090c, 0x0d7e, 0x0005, 0x6003, 0x0001, 0x6106, -+ 0x080c, 0x756e, 0x0126, 0x2091, 0x8000, 0x080c, 0x7aa4, 0x012e, -+ 0x0005, 0x6003, 0x0001, 0x6106, 0x080c, 0x756e, 0x0126, 0x2091, -+ 0x8000, 0x080c, 0x7aa4, 0x012e, 0x0005, 0x6003, 0x0003, 0x6106, -+ 0x2c10, 0x080c, 0x1605, 0x0126, 0x2091, 0x8000, 0x080c, 0x75db, -+ 0x080c, 0x7b72, 0x012e, 0x0005, 0x9016, 0x080c, 0x137c, 0x0005, -+ 0x0126, 0x2091, 0x8000, 0x0036, 0x00d6, 0x9182, 0x0040, 0x0023, -+ 0x00de, 0x003e, 0x012e, 0x0005, 0xbbec, 0xbbee, 0xbc00, 0xbc1a, -+ 0xbbec, 0xbbec, 0xbbec, 0xbc2f, 0xbbec, 0xbbec, 0xbbec, 0xbbec, -+ 0xbbec, 0xbbec, 0xbbec, 0xbbec, 0x080c, 0x0d7e, 0x6014, 0x2068, -+ 0x687c, 0xd0fc, 0x01f8, 0x909c, 0x0003, 0x939e, 0x0003, 0x01d0, -+ 0x6003, 0x0001, 0x6106, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x0490, -+ 0x6014, 0x2068, 0x687c, 0xd0fc, 0x0168, 0x909c, 0x0003, 0x939e, -+ 0x0003, 0x0140, 0x6003, 0x0001, 0x6106, 0x080c, 0x756e, 0x080c, -+ 0x7aa4, 0x0400, 0x901e, 0x6316, 0x631a, 0x2019, 0x0004, 0x080c, -+ 0xc0e9, 0x00c0, 0x6014, 0x2068, 0x687c, 0xd0fc, 0x0d98, 0x909c, -+ 0x0003, 0x939e, 0x0003, 0x0d70, 0x6003, 0x0003, 0x6106, 0x2c10, -+ 0x080c, 0x1605, 0x080c, 0x75db, 0x080c, 0x7b72, 0x0018, 0x9016, -+ 0x080c, 0x137c, 0x0005, 0x080c, 0x79ab, 0x6114, 0x81ff, 0x0158, -+ 0x00d6, 0x2168, 0x080c, 0xc3c7, 0x0036, 0x2019, 0x0029, 0x080c, -+ 0xc0e9, 0x003e, 0x00de, 0x080c, 0x8f09, 0x080c, 0x7aa4, 0x0005, -+ 0x080c, 0x7a55, 0x6114, 0x81ff, 0x0158, 0x00d6, 0x2168, 0x080c, -+ 0xc3c7, 0x0036, 0x2019, 0x0029, 0x080c, 0xc0e9, 0x003e, 0x00de, -+ 0x080c, 0x8f09, 0x080c, 0x7b72, 0x0005, 0x9182, 0x0085, 0x0002, -+ 0xbc6f, 0xbc6d, 0xbc6d, 0xbc7b, 0xbc6d, 0xbc6d, 0xbc6d, 0xbc6d, -+ 0xbc6d, 0xbc6d, 0xbc6d, 0xbc6d, 0xbc6d, 0x080c, 0x0d7e, 0x6003, -+ 0x000b, 0x6106, 0x080c, 0x756e, 0x0126, 0x2091, 0x8000, 0x080c, -+ 0x7aa4, 0x012e, 0x0005, 0x0026, 0x00e6, 0x080c, 0xc327, 0x0118, -+ 0x080c, 0x8ed9, 0x0440, 0x2071, 0x0260, 0x7224, 0x6216, 0x2001, -+ 0x110d, 0x2004, 0xd0e4, 0x0150, 0x6010, 0x9080, 0x0028, 0x2024, -+ 0x8427, 0x2c00, 0x2011, 0x014e, 0x080c, 0x91b2, 0x7220, 0x080c, -+ 0xbf8f, 0x0118, 0x6007, 0x0086, 0x0040, 0x6007, 0x0087, 0x7224, -+ 0x9296, 0xffff, 0x1110, 0x6007, 0x0086, 0x6003, 0x0001, 0x080c, -+ 0x756e, 0x080c, 0x7aa4, 0x00ee, 0x002e, 0x0005, 0x9186, 0x0013, -+ 0x1160, 0x6004, 0x908a, 0x0085, 0x0a0c, 0x0d7e, 0x908a, 0x0092, -+ 0x1a0c, 0x0d7e, 0x9082, 0x0085, 0x00a2, 0x9186, 0x0027, 0x0130, -+ 0x9186, 0x0014, 0x0118, 0x080c, 0x8f6e, 0x0050, 0x2001, 0x0007, -+ 0x080c, 0x5592, 0x080c, 0x79ab, 0x080c, 0x8f09, 0x080c, 0x7aa4, -+ 0x0005, 0xbcde, 0xbce0, 0xbce0, 0xbcde, 0xbcde, 0xbcde, 0xbcde, -+ 0xbcde, 0xbcde, 0xbcde, 0xbcde, 0xbcde, 0xbcde, 0x080c, 0x0d7e, -+ 0x080c, 0x79ab, 0x080c, 0x8f09, 0x080c, 0x7aa4, 0x0005, 0x9182, -+ 0x0085, 0x0a0c, 0x0d7e, 0x9182, 0x0092, 0x1a0c, 0x0d7e, 0x9182, -+ 0x0085, 0x0002, 0xbcff, 0xbcff, 0xbcff, 0xbd01, 0xbcff, 0xbcff, -+ 0xbcff, 0xbcff, 0xbcff, 0xbcff, 0xbcff, 0xbcff, 0xbcff, 0x080c, -+ 0x0d7e, 0x0005, 0x9186, 0x0013, 0x0148, 0x9186, 0x0014, 0x0130, -+ 0x9186, 0x0027, 0x0118, 0x080c, 0x8f6e, 0x0030, 0x080c, 0x79ab, -+ 0x080c, 0x8f09, 0x080c, 0x7aa4, 0x0005, 0x0036, 0x080c, 0xc381, -+ 0x6043, 0x0000, 0x2019, 0x000b, 0x0031, 0x6023, 0x0006, 0x6003, -+ 0x0007, 0x003e, 0x0005, 0x0126, 0x0036, 0x2091, 0x8000, 0x0086, -+ 0x2c40, 0x0096, 0x904e, 0x080c, 0x8968, 0x009e, 0x008e, 0x1570, -+ 0x0076, 0x2c38, 0x080c, 0x8a0a, 0x007e, 0x1540, 0x6000, 0x9086, -+ 0x0000, 0x0520, 0x6020, 0x9086, 0x0007, 0x0500, 0x00d6, 0x601c, -+ 0xd084, 0x0150, 0x080c, 0xc381, 0x2001, 0x12c0, 0x2004, 0x601a, -+ 0x080c, 0x1509, 0x6023, 0x0007, 0x6014, 0x2068, 0x080c, 0xa942, -+ 0x0110, 0x080c, 0xc0e9, 0x00de, 0x6017, 0x0000, 0x080c, 0xc381, -+ 0x6023, 0x0007, 0x2001, 0x12c0, 0x2004, 0x601a, 0x003e, 0x012e, -+ 0x0005, 0x00f6, 0x00c6, 0x0036, 0x0156, 0x2079, 0x0260, 0x7938, -+ 0x783c, 0x080c, 0x1f63, 0x1590, 0x0016, 0x00c6, 0x080c, 0x5608, -+ 0x1558, 0x001e, 0x002e, 0x0026, 0x0016, 0x2019, 0x0029, 0x080c, -+ 0x8ac9, 0x080c, 0x76f0, 0x0076, 0x903e, 0x080c, 0x75ee, 0x007e, -+ 0x001e, 0x0076, 0x903e, 0x080c, 0xbec2, 0x007e, 0x0026, 0x6204, -+ 0x9294, 0xff00, 0x8217, 0x9286, 0x0006, 0x0118, 0x9286, 0x0004, -+ 0x1118, 0x62a0, 0x080c, 0x2915, 0x002e, 0x001e, 0x080c, 0x5100, -+ 0x6612, 0x6516, 0x9006, 0x0010, 0x00ce, 0x001e, 0x015e, 0x003e, -+ 0x00ce, 0x00fe, 0x0005, 0x00c6, 0x00d6, 0x00e6, 0x0016, 0x2009, -+ 0x1122, 0x2104, 0x9086, 0x0074, 0x1904, 0xbdfb, 0x2069, 0x0260, -+ 0x6944, 0x9182, 0x0100, 0x06d8, 0x6940, 0x9184, 0x8000, 0x0904, -+ 0xbdf8, 0x2001, 0x12a7, 0x2004, 0x9005, 0x1160, 0x6010, 0x2070, -+ 0x7010, 0x9084, 0x00ff, 0x0118, 0x7000, 0xd0f4, 0x0118, 0x9184, -+ 0x0800, 0x0570, 0x6948, 0x918a, 0x0001, 0x0620, 0x694c, 0x2009, -+ 0x0205, 0x200b, 0x0001, 0x693c, 0x81ff, 0x1198, 0x6944, 0x9182, -+ 0x0100, 0x02a8, 0x6940, 0x81ff, 0x1178, 0x6948, 0x918a, 0x0001, -+ 0x0288, 0x6950, 0x918a, 0x0001, 0x0298, 0x00d0, 0x6017, 0x0100, -+ 0x00a0, 0x6017, 0x0300, 0x0088, 0x6017, 0x0500, 0x0070, 0x6017, -+ 0x0700, 0x0058, 0x6017, 0x0900, 0x0040, 0x6017, 0x0b00, 0x0028, -+ 0x6017, 0x0f00, 0x0010, 0x6017, 0x2d00, 0x9085, 0x0001, 0x0008, -+ 0x9006, 0x001e, 0x00ee, 0x00de, 0x00ce, 0x0005, 0x00c6, 0x00d6, -+ 0x0026, 0x0036, 0x0156, 0x6210, 0x2268, 0x6b04, 0x9394, 0x00ff, -+ 0x9286, 0x0006, 0x0190, 0x9286, 0x0004, 0x0178, 0x9394, 0xff00, -+ 0x8217, 0x9286, 0x0006, 0x0148, 0x9286, 0x0004, 0x0130, 0x00c6, -+ 0x2d60, 0x080c, 0x5617, 0x00ce, 0x04c0, 0x2011, 0x0276, 0x20a9, -+ 0x0004, 0x9d98, 0x000a, 0x080c, 0x9d60, 0x1580, 0x2011, 0x027a, -+ 0x20a9, 0x0004, 0x9d98, 0x0006, 0x080c, 0x9d60, 0x1538, 0x0046, -+ 0x0016, 0x6aa0, 0x9294, 0x00ff, 0x8227, 0x9006, 0x2009, 0x1153, -+ 0x210c, 0xd1a4, 0x0138, 0x2009, 0x0029, 0x080c, 0xc12f, 0x6800, -+ 0xc0e5, 0x6802, 0x2019, 0x0029, 0x080c, 0x76f0, 0x0076, 0x2039, -+ 0x0000, 0x080c, 0x75ee, 0x2c08, 0x080c, 0xbec2, 0x007e, 0x2001, -+ 0x0007, 0x080c, 0x5592, 0x001e, 0x004e, 0x9006, 0x015e, 0x003e, -+ 0x002e, 0x00de, 0x00ce, 0x0005, 0x00d6, 0x2069, 0x026e, 0x6800, -+ 0x9086, 0x0800, 0x0118, 0x6017, 0x0000, 0x0008, 0x9006, 0x00de, -+ 0x0005, 0x00c6, 0x00f6, 0x0016, 0x0026, 0x0036, 0x0156, 0x2079, -+ 0x026c, 0x7930, 0x7834, 0x080c, 0x1f63, 0x11a0, 0x080c, 0x5608, -+ 0x1188, 0x2011, 0x0270, 0x20a9, 0x0004, 0x9c98, 0x000a, 0x080c, -+ 0x9d60, 0x1140, 0x2011, 0x0274, 0x20a9, 0x0004, 0x9c98, 0x0006, -+ 0x080c, 0x9d60, 0x015e, 0x003e, 0x002e, 0x001e, 0x00fe, 0x00ce, -+ 0x0005, 0x00c6, 0x0006, 0x0016, 0x0026, 0x0036, 0x0156, 0x2011, -+ 0x0263, 0x2204, 0x8211, 0x220c, 0x080c, 0x1f63, 0x11a0, 0x080c, -+ 0x5608, 0x1188, 0x2011, 0x0276, 0x20a9, 0x0004, 0x9c98, 0x000a, -+ 0x080c, 0x9d60, 0x1140, 0x2011, 0x027a, 0x20a9, 0x0004, 0x9c98, -+ 0x0006, 0x080c, 0x9d60, 0x015e, 0x003e, 0x002e, 0x001e, 0x000e, -+ 0x00ce, 0x0005, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0056, -+ 0x0046, 0x0026, 0x0126, 0x2091, 0x8000, 0x2740, 0x2029, 0x130d, -+ 0x252c, 0x2021, 0x1313, 0x2424, 0x2061, 0x15c0, 0x2071, 0x1100, -+ 0x764c, 0x706c, 0x81ff, 0x0150, 0x0006, 0x9186, 0x1389, 0x000e, -+ 0x0128, 0x8001, 0x9602, 0x1a04, 0xbf4b, 0x0018, 0x9606, 0x0904, -+ 0xbf4b, 0x2100, 0x9c06, 0x0904, 0xbf42, 0x080c, 0xc15b, 0x0904, -+ 0xbf42, 0x6720, 0x9786, 0x0001, 0x1148, 0x080c, 0x2982, 0x0904, -+ 0xbf66, 0x6004, 0x9086, 0x0000, 0x1904, 0xbf66, 0x9786, 0x0004, -+ 0x0904, 0xbf66, 0x9786, 0x0007, 0x05e8, 0x2500, 0x9c06, 0x05d0, -+ 0x2400, 0x9c06, 0x05b8, 0x080c, 0xc16b, 0x15a0, 0x88ff, 0x0118, -+ 0x6054, 0x9906, 0x1578, 0x00d6, 0x6000, 0x9086, 0x0004, 0x1120, -+ 0x0016, 0x080c, 0x1509, 0x001e, 0x9786, 0x0008, 0x1148, 0x080c, -+ 0xab2e, 0x1130, 0x080c, 0x97dc, 0x00de, 0x080c, 0x8f09, 0x00d0, -+ 0x6014, 0x2068, 0x080c, 0xa942, 0x0190, 0x9786, 0x0003, 0x1528, -+ 0x6867, 0x0103, 0x6b7a, 0x6877, 0x0000, 0x080c, 0xc3c7, 0x0016, -+ 0x080c, 0xac01, 0x080c, 0x5b76, 0x001e, 0x080c, 0xab11, 0x00de, -+ 0x080c, 0x8f09, 0x9ce0, 0x0018, 0x2001, 0x1118, 0x2004, 0x9c02, -+ 0x1210, 0x0804, 0xbed6, 0x012e, 0x002e, 0x004e, 0x005e, 0x006e, -+ 0x007e, 0x008e, 0x00ce, 0x00ee, 0x0005, 0x9786, 0x0006, 0x1150, -+ 0x9386, 0x0005, 0x0128, 0x080c, 0xc3c7, 0x080c, 0xc0e9, 0x08f8, -+ 0x00de, 0x0c00, 0x9786, 0x000a, 0x0968, 0x0850, 0x080c, 0xc16b, -+ 0x19c8, 0x81ff, 0x09b8, 0x9180, 0x0001, 0x2004, 0x9086, 0x0018, -+ 0x0130, 0x9180, 0x0001, 0x2004, 0x9086, 0x002d, 0x1958, 0x6000, -+ 0x9086, 0x0002, 0x1938, 0x080c, 0xab1d, 0x0130, 0x080c, 0xab2e, -+ 0x1908, 0x080c, 0x97dc, 0x0038, 0x080c, 0x2886, 0x080c, 0xab2e, -+ 0x1110, 0x080c, 0x97dc, 0x080c, 0x8f09, 0x0804, 0xbf42, 0x00c6, -+ 0x00e6, 0x0016, 0x2c08, 0x2170, 0x9006, 0x080c, 0xc101, 0x001e, -+ 0x0120, 0x6020, 0x9084, 0x000f, 0x001b, 0x00ee, 0x00ce, 0x0005, -+ 0xbfae, 0xbfae, 0xbfae, 0xbfae, 0xbfae, 0xbfae, 0xbfb0, 0xbfae, -+ 0xbfae, 0xbfae, 0xbfae, 0x8f09, 0x8f09, 0xbfae, 0x9006, 0x0005, -+ 0x0046, 0x0016, 0x7010, 0x9080, 0x0028, 0x2024, 0x94a4, 0x00ff, -+ 0x8427, 0x2c00, 0x2009, 0x0020, 0x080c, 0xc12f, 0x001e, 0x004e, -+ 0x0036, 0x2019, 0x0002, 0x080c, 0xbd23, 0x003e, 0x9085, 0x0001, -+ 0x0005, 0x00d6, 0x6014, 0x906d, 0x9084, 0xf000, 0x0130, 0x080c, -+ 0xa5f3, 0x687b, 0x0005, 0x080c, 0x5b76, 0x00de, 0x080c, 0x8f09, -+ 0x9085, 0x0001, 0x0005, 0x2001, 0x0001, 0x080c, 0x5556, 0x0156, -+ 0x0016, 0x0026, 0x0036, 0x20a9, 0x0004, 0x2019, 0x1105, 0x2011, -+ 0x0276, 0x080c, 0x9d60, 0x003e, 0x002e, 0x001e, 0x015e, 0x9005, -+ 0x0005, 0x00f6, 0x00e6, 0x00c6, 0x0086, 0x0076, 0x0066, 0x0026, -+ 0x0126, 0x2091, 0x8000, 0x2740, 0x2061, 0x15c0, 0x2079, 0x0001, -+ 0x8fff, 0x0904, 0xc04d, 0x2071, 0x1100, 0x764c, 0x706c, 0x8001, -+ 0x9602, 0x1a04, 0xc04d, 0x88ff, 0x0120, 0x2800, 0x9c06, 0x15a0, -+ 0x2078, 0x080c, 0xc15b, 0x0580, 0x2400, 0x9c06, 0x0568, 0x6720, -+ 0x9786, 0x0006, 0x1548, 0x9786, 0x0007, 0x0530, 0x88ff, 0x1140, -+ 0x6010, 0x9206, 0x1508, 0x85ff, 0x0118, 0x6054, 0x9106, 0x11e0, -+ 0x00d6, 0x601c, 0xd084, 0x0150, 0x080c, 0xc381, 0x2001, 0x12c0, -+ 0x2004, 0x601a, 0x080c, 0x1509, 0x6023, 0x0007, 0x6014, 0x2068, -+ 0x080c, 0xa942, 0x0120, 0x0046, 0x080c, 0xc0e9, 0x004e, 0x00de, -+ 0x080c, 0x8f09, 0x88ff, 0x1198, 0x9ce0, 0x0018, 0x2001, 0x1118, -+ 0x2004, 0x9c02, 0x1210, 0x0804, 0xc000, 0x9006, 0x012e, 0x002e, -+ 0x006e, 0x007e, 0x008e, 0x00ce, 0x00ee, 0x00fe, 0x0005, 0x98c5, -+ 0x0001, 0x0ca0, 0x0076, 0x0056, 0x0086, 0x9046, 0x2029, 0x0001, -+ 0x2c20, 0x2019, 0x0002, 0x6210, 0x0096, 0x904e, 0x080c, 0x8968, -+ 0x009e, 0x008e, 0x903e, 0x080c, 0x8a0a, 0x080c, 0xbff1, 0x005e, -+ 0x007e, 0x0005, 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, -+ 0x2c20, 0x2128, 0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, -+ 0x5608, 0x1198, 0x2c10, 0x0056, 0x0086, 0x9046, 0x2508, 0x2029, -+ 0x0001, 0x0096, 0x904e, 0x080c, 0x8968, 0x009e, 0x008e, 0x903e, -+ 0x080c, 0x8a0a, 0x080c, 0xbff1, 0x005e, 0x003e, 0x001e, 0x8108, -+ 0x1f04, 0xc07d, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x002e, -+ 0x0005, 0x0076, 0x0056, 0x6210, 0x0086, 0x9046, 0x2029, 0x0001, -+ 0x2019, 0x0048, 0x0096, 0x904e, 0x080c, 0x8968, 0x009e, 0x008e, -+ 0x903e, 0x080c, 0x8a0a, 0x2c20, 0x080c, 0xbff1, 0x005e, 0x007e, -+ 0x0005, 0x0026, 0x0046, 0x0056, 0x0076, 0x00c6, 0x0156, 0x2c20, -+ 0x20a9, 0x007f, 0x900e, 0x0016, 0x0036, 0x080c, 0x5608, 0x11a8, -+ 0x2c10, 0x0086, 0x9046, 0x2828, 0x0046, 0x2021, 0x0001, 0x080c, -+ 0xc363, 0x004e, 0x0096, 0x904e, 0x080c, 0x8968, 0x009e, 0x008e, -+ 0x903e, 0x080c, 0x8a0a, 0x080c, 0xbff1, 0x003e, 0x001e, 0x8108, -+ 0x1f04, 0xc0c3, 0x015e, 0x00ce, 0x007e, 0x005e, 0x004e, 0x002e, -+ 0x0005, 0x0016, 0x00f6, 0x9d82, 0x45c0, 0x0280, 0x9d82, 0xffff, -+ 0x1268, 0x6800, 0x907d, 0x0138, 0x6803, 0x0000, 0x6b82, 0x080c, -+ 0x5b76, 0x2f68, 0x0cb0, 0x6b82, 0x080c, 0x5b76, 0x00fe, 0x001e, -+ 0x0005, 0x00e6, 0x0046, 0x0036, 0x2061, 0x15c0, 0x9005, 0x1138, -+ 0x2071, 0x1100, 0x744c, 0x706c, 0x8001, 0x9402, 0x12d8, 0x2100, -+ 0x9c06, 0x0168, 0x6000, 0x9086, 0x0000, 0x0148, 0x6008, 0x9206, -+ 0x1130, 0x6010, 0x91a0, 0x0004, 0x2424, 0x9406, 0x0140, 0x9ce0, -+ 0x0018, 0x2001, 0x1118, 0x2004, 0x9c02, 0x1220, 0x0c40, 0x9085, -+ 0x0001, 0x0008, 0x9006, 0x003e, 0x004e, 0x00ee, 0x0005, 0x00d6, -+ 0x0006, 0x080c, 0x0eb6, 0x000e, 0x090c, 0x0d7e, 0x6867, 0x010d, -+ 0x688e, 0x0026, 0x2010, 0x080c, 0xa932, 0x2001, 0x0000, 0x0120, -+ 0x2200, 0x9080, 0x0015, 0x2004, 0x002e, 0x687a, 0x6986, 0x6c76, -+ 0x687f, 0x0000, 0x2001, 0x12c8, 0x2004, 0x6882, 0x9006, 0x68e2, -+ 0x6802, 0x686a, 0x688a, 0x0126, 0x2091, 0x8000, 0x080c, 0x5b76, -+ 0x012e, 0x00de, 0x0005, 0x6700, 0x9786, 0x0000, 0x0158, 0x9786, -+ 0x0001, 0x0140, 0x9786, 0x000a, 0x0128, 0x9786, 0x0009, 0x0110, -+ 0x9085, 0x0001, 0x0005, 0x00e6, 0x6010, 0x2070, 0x70a0, 0x9206, -+ 0x00ee, 0x0005, 0x0016, 0x6004, 0x908e, 0x001e, 0x11a0, 0x8007, -+ 0x6134, 0x918c, 0x00ff, 0x9105, 0x6036, 0x6007, 0x0085, 0x6003, -+ 0x000b, 0x6023, 0x0005, 0x2001, 0x12c1, 0x2004, 0x601a, 0x080c, -+ 0x756e, 0x080c, 0x7aa4, 0x001e, 0x0005, 0xa001, 0xa001, 0x0005, -+ 0x6024, 0xd0e4, 0x0158, 0xd0cc, 0x0118, 0x080c, 0xac39, 0x0030, -+ 0x080c, 0xc381, 0x080c, 0x7384, 0x080c, 0x8ed9, 0x0005, 0x9280, -+ 0x0008, 0x2004, 0x9084, 0x000f, 0x0002, 0xc1b3, 0xc1b3, 0xc1b3, -+ 0xc1b5, 0xc1b3, 0xc1b5, 0xc1b5, 0xc1b3, 0xc1b5, 0xc1b3, 0xc1b3, -+ 0xc1b3, 0xc1b3, 0xc1b3, 0x9006, 0x0005, 0x9085, 0x0001, 0x0005, -+ 0x9280, 0x0008, 0x2004, 0x9084, 0x000f, 0x0002, 0xc1cc, 0xc1cc, -+ 0xc1cc, 0xc1cc, 0xc1cc, 0xc1cc, 0xc1d9, 0xc1cc, 0xc1cc, 0xc1cc, -+ 0xc1cc, 0xc1cc, 0xc1cc, 0xc1cc, 0x6007, 0x003b, 0x602f, 0x0009, -+ 0x6017, 0x2a00, 0x6003, 0x0001, 0x080c, 0x756e, 0x080c, 0x7aa4, -+ 0x0005, 0x00c6, 0x2260, 0x080c, 0xc381, 0x6043, 0x0000, 0x6024, -+ 0xc0f4, 0xc0e4, 0x6026, 0x603b, 0x0000, 0x00ce, 0x00d6, 0x2268, -+ 0x9186, 0x0007, 0x1904, 0xc234, 0x6814, 0x9005, 0x0138, 0x9080, -+ 0x001f, 0x2004, 0xd0fc, 0x1110, 0x00de, 0x08b0, 0x6007, 0x003a, -+ 0x6003, 0x0001, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x00c6, 0x2d60, -+ 0x6100, 0x9186, 0x0002, 0x1904, 0xc2b2, 0x6014, 0x9005, 0x1138, -+ 0x6000, 0x9086, 0x0007, 0x190c, 0x0d7e, 0x0804, 0xc2b2, 0x908c, -+ 0xf000, 0x1130, 0x0028, 0x2068, 0x6800, 0x9005, 0x1de0, 0x2d00, -+ 0x9080, 0x001f, 0x2004, 0x9084, 0x0003, 0x9086, 0x0002, 0x1180, -+ 0x6014, 0x2068, 0x687c, 0xc0dc, 0xc0f4, 0x687e, 0x6880, 0xc0f4, -+ 0xc0fc, 0x6882, 0x2009, 0x0043, 0x080c, 0xbb7b, 0x0804, 0xc2b2, -+ 0x2009, 0x0041, 0x0804, 0xc2ac, 0x9186, 0x0005, 0x15b8, 0x6814, -+ 0x9080, 0x001f, 0x2004, 0xd0bc, 0x1118, 0x00de, 0x0804, 0xc1cc, -+ 0xd0b4, 0x0128, 0xd0fc, 0x090c, 0x0d7e, 0x0804, 0xc1ec, 0x6007, -+ 0x003a, 0x6003, 0x0001, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x00c6, -+ 0x2d60, 0x6100, 0x9186, 0x0002, 0x0120, 0x9186, 0x0004, 0x1904, -+ 0xc2b2, 0x6814, 0x9080, 0x001f, 0x200c, 0xc1f4, 0xc1dc, 0x2102, -+ 0x8000, 0x200c, 0xc1f4, 0xc1fc, 0xc1bc, 0x2102, 0x00f6, 0x2c78, -+ 0x080c, 0x137e, 0x00fe, 0x2009, 0x0042, 0x04f0, 0x0036, 0x00d6, -+ 0x00d6, 0x080c, 0x0eb6, 0x003e, 0x090c, 0x0d7e, 0x6867, 0x010d, -+ 0x9006, 0x6802, 0x686a, 0x688a, 0x6b8e, 0x6887, 0x0045, 0x2c00, -+ 0x6892, 0x6038, 0x68a2, 0x2360, 0x6024, 0xc0dd, 0x6026, 0x6010, -+ 0x9080, 0x0028, 0x2004, 0x9084, 0x00ff, 0x8007, 0x6354, 0x6b7a, -+ 0x6876, 0x9006, 0x687e, 0x6882, 0x6d9a, 0x6e96, 0x689f, 0x0001, -+ 0x080c, 0x5b76, 0x2019, 0x0045, 0x6008, 0x2068, 0x080c, 0xbd23, -+ 0x2d00, 0x600a, 0x6023, 0x0006, 0x6003, 0x0007, 0x901e, 0x631a, -+ 0x6342, 0x00de, 0x003e, 0x0038, 0x6043, 0x0000, 0x6003, 0x0007, -+ 0x080c, 0xbb7b, 0x00ce, 0x00de, 0x0005, 0x9186, 0x0013, 0x1128, -+ 0x6004, 0x9082, 0x0085, 0x2008, 0x00c2, 0x9186, 0x0027, 0x1178, -+ 0x080c, 0x79ab, 0x0036, 0x00d6, 0x6014, 0x2068, 0x2019, 0x0004, -+ 0x080c, 0xc0e9, 0x00de, 0x003e, 0x080c, 0x7aa4, 0x0005, 0x9186, -+ 0x0014, 0x0d70, 0x080c, 0x8f6e, 0x0005, 0xc2e4, 0xc2e2, 0xc2e2, -+ 0xc2e2, 0xc2e2, 0xc2e2, 0xc2e4, 0xc2e2, 0xc2e2, 0xc2e2, 0xc2e2, -+ 0xc2e2, 0xc2e2, 0x080c, 0x0d7e, 0x080c, 0x79ab, 0x6003, 0x000c, -+ 0x080c, 0x7aa4, 0x0005, 0x9182, 0x0092, 0x1220, 0x9182, 0x0085, -+ 0x0208, 0x001a, 0x080c, 0x8f6e, 0x0005, 0xc302, 0xc302, 0xc302, -+ 0xc302, 0xc304, 0xc324, 0xc302, 0xc302, 0xc302, 0xc302, 0xc302, -+ 0xc302, 0xc302, 0x080c, 0x0d7e, 0x00d6, 0x2c68, 0x080c, 0x8e83, -+ 0x01b0, 0x6003, 0x0001, 0x6007, 0x001e, 0x2009, 0x026e, 0x210c, -+ 0x613a, 0x2009, 0x026f, 0x210c, 0x613e, 0x600b, 0xffff, 0x6910, -+ 0x6112, 0x6023, 0x0004, 0x080c, 0x756e, 0x080c, 0x7aa4, 0x2d60, -+ 0x080c, 0x8ed9, 0x00de, 0x0005, 0x080c, 0x8ed9, 0x0005, 0x00e6, -+ 0x6010, 0x2070, 0x7000, 0xd0ec, 0x00ee, 0x0005, 0x2009, 0x1172, -+ 0x210c, 0xd1ec, 0x0578, 0x6003, 0x0002, 0x6024, 0xc0e5, 0x6026, -+ 0xd0cc, 0x0150, 0x2001, 0x12c2, 0x2004, 0x6042, 0x2009, 0x1172, -+ 0x210c, 0xd1f4, 0x11e8, 0x0080, 0x2009, 0x1172, 0x210c, 0xd1f4, -+ 0x0128, 0x6024, 0xc0e4, 0x6026, 0x9006, 0x00a0, 0x2001, 0x12c2, -+ 0x200c, 0x8103, 0x9100, 0x6042, 0x6010, 0x9088, 0x002b, 0x2104, -+ 0x9005, 0x0118, 0x9088, 0x0003, 0x0cd0, 0x2c0a, 0x600f, 0x0000, -+ 0x9085, 0x0001, 0x0005, 0x0016, 0x00c6, 0x00e6, 0x6154, 0x92f0, -+ 0x002b, 0x2e04, 0x2060, 0x8cff, 0x0180, 0x84ff, 0x1118, 0x6054, -+ 0x9106, 0x1138, 0x600c, 0x2072, 0x080c, 0x7384, 0x080c, 0x8ed9, -+ 0x0010, 0x9cf0, 0x0003, 0x2e64, 0x0c70, 0x00ee, 0x00ce, 0x001e, -+ 0x0005, 0x00d6, 0x6010, 0x90e8, 0x002b, 0x2d04, 0x9005, 0x0140, -+ 0x9c06, 0x0120, 0x2d04, 0x90e8, 0x0003, 0x0cb8, 0x600c, 0x206a, -+ 0x00de, 0x0005, 0x0026, 0x0036, 0x0156, 0x2011, 0x112a, 0x2204, -+ 0x9084, 0x00ff, 0x2019, 0x026e, 0x2334, 0x9636, 0x11d8, 0x8318, -+ 0x2334, 0x2204, 0x9084, 0xff00, 0x9636, 0x11a0, 0x2011, 0x0270, -+ 0x20a9, 0x0004, 0x6010, 0x9098, 0x000a, 0x080c, 0x9d60, 0x1150, -+ 0x2011, 0x0274, 0x20a9, 0x0004, 0x6010, 0x9098, 0x0006, 0x080c, -+ 0x9d60, 0x1100, 0x015e, 0x003e, 0x002e, 0x0005, 0x00e6, 0x2071, -+ 0x1100, 0x080c, 0x5092, 0x080c, 0x2679, 0x00ee, 0x0005, 0x00e6, -+ 0x6010, 0x2070, 0x7000, 0xd0fc, 0x0108, 0x0011, 0x00ee, 0x0005, -+ 0x6880, 0xc0e5, 0x6882, 0x0005, 0x00e6, 0x00c6, 0x0076, 0x0066, -+ 0x0056, 0x0046, 0x0026, 0x0016, 0x0126, 0x2091, 0x8000, 0x2029, -+ 0x130d, 0x252c, 0x2021, 0x1313, 0x2424, 0x2061, 0x15c0, 0x2071, -+ 0x1100, 0x764c, 0x706c, 0x9606, 0x0578, 0x6720, 0x9786, 0x0001, -+ 0x0118, 0x9786, 0x0008, 0x1500, 0x2500, 0x9c06, 0x01e8, 0x2400, -+ 0x9c06, 0x01d0, 0x080c, 0xc15b, 0x01b8, 0x080c, 0xc16b, 0x11a0, -+ 0x6000, 0x9086, 0x0004, 0x1120, 0x0016, 0x080c, 0x1509, 0x001e, -+ 0x080c, 0xab1d, 0x1110, 0x080c, 0x2886, 0x080c, 0xab2e, 0x1110, -+ 0x080c, 0x97dc, 0x080c, 0x8f09, 0x9ce0, 0x0018, 0x2001, 0x1118, -+ 0x2004, 0x9c02, 0x1208, 0x0858, 0x012e, 0x001e, 0x002e, 0x004e, -+ 0x005e, 0x006e, 0x007e, 0x00ce, 0x00ee, 0x0005, 0x0126, 0x0006, -+ 0x00e6, 0x0016, 0x2091, 0x8000, 0x2071, 0x1140, 0xd5a4, 0x0118, -+ 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0118, 0x7030, 0x8000, 0x7032, -+ 0xd5ac, 0x0178, 0x2500, 0x9084, 0x0007, 0x908e, 0x0003, 0x0148, -+ 0x908e, 0x0004, 0x0130, 0x908e, 0x0005, 0x0118, 0x2071, 0x114a, -+ 0x0089, 0x001e, 0x00ee, 0x000e, 0x012e, 0x0005, 0x0126, 0x0006, -+ 0x00e6, 0x2091, 0x8000, 0x2071, 0x1142, 0x0021, 0x00ee, 0x000e, -+ 0x012e, 0x0005, 0x2e04, 0x8000, 0x2072, 0x1220, 0x8e70, 0x2e04, -+ 0x8000, 0x2072, 0x0005, 0x00e6, 0x2071, 0x1140, 0x0c99, 0x00ee, -+ 0x0005, 0x00e6, 0x2071, 0x1144, 0x0c69, 0x00ee, 0x0005, 0x0126, -+ 0x0006, 0x00e6, 0x2091, 0x8000, 0x2071, 0x1140, 0x7044, 0x8000, -+ 0x7046, 0x00ee, 0x000e, 0x012e, 0x0005, 0x8064, 0x0008, 0x0010, -+ 0x0000, 0x8066, 0x0000, 0x0101, 0x0008, 0x4404, 0x0003, 0x8060, -+ 0x0000, 0x0400, 0x0000, 0x580a, 0x0003, 0x7933, 0x0003, 0x5089, -+ 0x0003, 0x4c07, 0x000b, 0xbac0, 0x0009, 0x0082, 0x0008, 0x0c07, -+ 0x0003, 0x15fe, 0x0008, 0x3407, 0x000b, 0x808c, 0x0008, 0x0001, -+ 0x0000, 0x0000, 0x0007, 0x4047, 0x000a, 0x808c, 0x0008, 0x0002, -+ 0x0000, 0x0819, 0x000b, 0x4022, 0x0000, 0x001a, 0x0003, 0x4122, -+ 0x0008, 0x4447, 0x0002, 0x0de5, 0x000b, 0x0bfe, 0x0008, 0x11a0, -+ 0x0001, 0x11c7, 0x0003, 0x0ca0, 0x0001, 0x11c7, 0x0003, 0x9180, -+ 0x0001, 0x0004, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009, -+ 0x0008, 0x4426, 0x0003, 0x8080, 0x0001, 0x0004, 0x0000, 0x7f62, -+ 0x0008, 0x8066, 0x0000, 0x0411, 0x0000, 0x442c, 0x0003, 0x808c, -+ 0x0008, 0x0000, 0x0008, 0x03fe, 0x0000, 0x43e0, 0x0001, 0x0dc4, -+ 0x000b, 0xc2c0, 0x0009, 0x00ff, 0x0008, 0x02e0, 0x0001, 0x0dc4, -+ 0x000b, 0x9180, 0x0001, 0x0005, 0x0008, 0x7f62, 0x0008, 0x8066, -+ 0x0000, 0x0019, 0x0000, 0x443b, 0x0003, 0x0240, 0x0002, 0x09c1, -+ 0x0003, 0x00fe, 0x0000, 0x31c4, 0x000b, 0x112a, 0x0000, 0x002e, -+ 0x0008, 0x022c, 0x0008, 0x3a44, 0x0002, 0x0c07, 0x0003, 0x9780, -+ 0x0001, 0x000f, 0x0008, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0011, -+ 0x0008, 0x444a, 0x0003, 0x808c, 0x0008, 0x0002, 0x0000, 0x01fe, -+ 0x0008, 0x42e0, 0x0009, 0x0db7, 0x0003, 0x00fe, 0x0000, 0x43e0, -+ 0x0001, 0x0db7, 0x0003, 0x1734, 0x0000, 0x1530, 0x0000, 0x1632, -+ 0x0008, 0x0d2a, 0x0008, 0x9880, 0x0001, 0x0010, 0x0000, 0x7f62, -+ 0x0008, 0x8066, 0x0000, 0x1e0a, 0x0008, 0x445c, 0x000b, 0x808a, -+ 0x0008, 0x0003, 0x0008, 0x9a80, 0x0009, 0x0002, 0x0000, 0x7f62, -+ 0x0008, 0x5862, 0x000b, 0x8066, 0x0000, 0x3679, 0x0000, 0x4465, -+ 0x000b, 0x5866, 0x0003, 0x8054, 0x0008, 0x0011, 0x0008, 0x8074, -+ 0x0000, 0x1010, 0x0008, 0x1efe, 0x0000, 0x3007, 0x0003, 0x006f, -+ 0x0004, 0x0007, 0x0003, 0x1cfe, 0x0008, 0x1b80, 0x0009, 0x7f62, -+ 0x0008, 0x8066, 0x0000, 0x0231, 0x0008, 0x4474, 0x000b, 0x5875, -+ 0x000b, 0x0140, 0x0008, 0x0242, 0x0000, 0x1f43, 0x0002, 0x0c7f, -+ 0x0003, 0x0d44, 0x0000, 0x0d46, 0x0008, 0x0348, 0x0008, 0x044a, -+ 0x0008, 0x0083, 0x0003, 0x0344, 0x0008, 0x0446, 0x0008, 0x0548, -+ 0x0008, 0x064a, 0x0000, 0x5883, 0x000b, 0x8054, 0x0008, 0x0001, -+ 0x0000, 0x8074, 0x0000, 0x2020, 0x0008, 0x4000, 0x000f, 0x3a40, -+ 0x000a, 0x0c0a, 0x000b, 0x2b24, 0x0008, 0x2b24, 0x0008, 0x588d, -+ 0x0003, 0x8054, 0x0008, 0x0002, 0x0000, 0x1242, 0x0002, 0x08d7, -+ 0x0003, 0x3a45, 0x000a, 0x08c8, 0x000b, 0x1e10, 0x000a, 0x7f3c, -+ 0x0000, 0x08c5, 0x0003, 0x1d00, 0x0002, 0x7f3a, 0x0000, 0x0d60, -+ 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x449d, -+ 0x0003, 0x8060, 0x0000, 0x0400, 0x0000, 0x00fe, 0x0000, 0x34c2, -+ 0x000b, 0x1cfe, 0x0008, 0xff80, 0x0009, 0x0001, 0x0000, 0x7f62, -+ 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x44a8, 0x0003, 0x00fe, -+ 0x0000, 0x31a0, 0x0003, 0x0038, 0x0000, 0x00fe, 0x0000, 0xff80, -+ 0x0009, 0x0019, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x0009, -+ 0x0008, 0x44b2, 0x000b, 0x80c0, 0x0009, 0x00ff, 0x0008, 0x7f3e, -+ 0x0008, 0x0d60, 0x0000, 0x0efe, 0x0008, 0x1f80, 0x0001, 0x7f62, -+ 0x0008, 0x8066, 0x0000, 0x0009, 0x0008, 0x44bc, 0x0003, 0x8060, -+ 0x0000, 0x0400, 0x0000, 0x003a, 0x0008, 0x1dfe, 0x0000, 0x0099, -+ 0x000b, 0x0036, 0x0008, 0x006f, 0x0004, 0x00d7, 0x000b, 0x8074, -+ 0x0000, 0x2000, 0x0000, 0x00d7, 0x000b, 0x3a44, 0x0002, 0x09ca, -+ 0x000b, 0x8074, 0x0000, 0x1000, 0x0000, 0x2d0e, 0x0000, 0x2d0e, -+ 0x0000, 0x35a0, 0x000b, 0x26fe, 0x0008, 0x26fe, 0x0008, 0x2700, -+ 0x0008, 0x2700, 0x0008, 0x00d0, 0x0009, 0x0ce5, 0x0003, 0x8074, -+ 0x0000, 0x4040, 0x0008, 0x58d7, 0x0003, 0x5089, 0x0003, 0x3a46, -+ 0x000a, 0x0ce5, 0x0003, 0x3a47, 0x0002, 0x08e2, 0x0003, 0x8054, -+ 0x0008, 0x0004, 0x0000, 0x8074, 0x0000, 0x8000, 0x0000, 0x0126, -+ 0x000b, 0x92c0, 0x0009, 0x0f88, 0x0008, 0x0807, 0x000b, 0x9a80, -+ 0x0009, 0x0002, 0x0000, 0x7f62, 0x0008, 0x8066, 0x0000, 0x362a, -+ 0x0000, 0x44ea, 0x0003, 0x2000, 0x0000, 0x2000, 0x0000, 0x2102, -+ 0x0000, 0x2102, 0x0000, 0x2204, 0x0000, 0x2204, 0x0000, 0x2306, -+ 0x0000, 0x2306, 0x0000, 0x2408, 0x0000, 0x2408, 0x0000, 0x250a, -+ 0x0000, 0x250a, 0x0000, 0x260c, 0x0000, 0x260c, 0x0000, 0x270e, -+ 0x0000, 0x270e, 0x0000, 0x2810, 0x0000, 0x2810, 0x0000, 0x2912, -+ 0x0000, 0x2912, 0x0000, 0x9a80, 0x0009, 0x0007, 0x0000, 0x7f62, -+ 0x0008, 0x8066, 0x0000, 0x0052, 0x0000, 0x4504, 0x000b, 0x92c0, -+ 0x0009, 0x0780, 0x0008, 0x0db1, 0x0003, 0x124b, 0x0002, 0x090d, -+ 0x0003, 0x2e4d, 0x0002, 0x2e4d, 0x0002, 0x09a0, 0x000b, 0x3a46, -+ 0x000a, 0x0d1a, 0x000b, 0x590f, 0x000b, 0x8054, 0x0008, 0x0004, -+ 0x0000, 0x1243, 0x000a, 0x0924, 0x000b, 0x8010, 0x0008, 0x000d, -+ 0x0000, 0x0191, 0x0004, 0x1810, 0x0000, 0x0191, 0x0004, 0x0124, -+ 0x0003, 0x194d, 0x000a, 0x091e, 0x000b, 0x1243, 0x000a, 0x09a7, -+ 0x0003, 0x591e, 0x000b, 0x8054, 0x0008, 0x0004, 0x0000, 0x0188, -+ 0x000c, 0x1810, 0x0000, 0x0191, 0x0004, 0x8074, 0x0000, 0xf000, -+ 0x0008, 0x3a42, 0x0002, 0x0d2c, 0x000b, 0x15fe, 0x0008, 0x3445, -+ 0x000b, 0x0d30, 0x0000, 0x0007, 0x0003, 0x0d30, 0x0000, 0x8074, -+ 0x0000, 0x0501, 0x0000, 0x8010, 0x0008, 0x000c, 0x0008, 0x0191, -+ 0x0004, 0x0007, 0x0003, 0xbbe0, 0x0009, 0x0030, 0x0008, 0x0d43, -+ 0x000b, 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x0940, 0x0003, 0x15fe, -+ 0x0008, 0x3ce0, 0x0009, 0x0940, 0x0003, 0x0183, 0x0004, 0x8076, -+ 0x0008, 0x0040, 0x0000, 0x0180, 0x000b, 0x8076, 0x0008, 0x0041, -+ 0x0008, 0x0180, 0x000b, 0xbbe0, 0x0009, 0x0032, 0x0000, 0x0d48, -+ 0x0003, 0x3c1e, 0x0008, 0x0180, 0x000b, 0xbbe0, 0x0009, 0x0037, -+ 0x0000, 0x0d65, 0x0003, 0x18fe, 0x0000, 0x3ce0, 0x0009, 0x0d40, -+ 0x000b, 0x1afe, 0x0008, 0xff80, 0x0009, 0x000d, 0x0000, 0x7f62, -+ 0x0008, 0x2604, 0x0008, 0x2604, 0x0008, 0x2706, 0x0008, 0x2706, -+ 0x0008, 0x2808, 0x0000, 0x2808, 0x0000, 0x290a, 0x0000, 0x290a, -+ 0x0000, 0x8066, 0x0000, 0x0422, 0x0000, 0x455c, 0x0003, 0x0188, -+ 0x000c, 0x8054, 0x0008, 0x0004, 0x0000, 0x8074, 0x0000, 0xf000, -+ 0x0008, 0x8072, 0x0000, 0x8000, 0x0000, 0x0126, 0x000b, 0xbbe0, -+ 0x0009, 0x0038, 0x0000, 0x0d77, 0x0003, 0x18fe, 0x0000, 0x3ce0, -+ 0x0009, 0x0974, 0x000b, 0x15fe, 0x0008, 0x3ce0, 0x0009, 0x0d3c, -+ 0x0003, 0x0183, 0x0004, 0x8076, 0x0008, 0x0040, 0x0000, 0x8072, -+ 0x0000, 0x8000, 0x0000, 0x01c1, 0x000b, 0x8076, 0x0008, 0x0042, -+ 0x0008, 0x0180, 0x000b, 0xbbe0, 0x0009, 0x0016, 0x0000, 0x0d80, -+ 0x000b, 0x3a44, 0x0002, 0x0c09, 0x000b, 0x8072, 0x0000, 0x8000, -+ 0x0000, 0x8000, 0x000f, 0x0007, 0x0003, 0x8072, 0x0000, 0x8000, -+ 0x0000, 0x0007, 0x0003, 0x3d30, 0x000a, 0x7f00, 0x0000, 0xbc80, -+ 0x0001, 0x0007, 0x0000, 0x018c, 0x000b, 0x1930, 0x000a, 0x7f00, -+ 0x0000, 0x9880, 0x0001, 0x0007, 0x0000, 0x7f62, 0x0008, 0x8066, -+ 0x0000, 0x000a, 0x0008, 0x458f, 0x000b, 0x4000, 0x000f, 0x2191, -+ 0x0003, 0x0870, 0x0008, 0x4000, 0x000f, 0xbac0, 0x0009, 0x0090, -+ 0x0008, 0x099a, 0x000b, 0x8074, 0x0000, 0x0706, 0x0000, 0x019c, -+ 0x0003, 0x8074, 0x0000, 0x0703, 0x0000, 0x4000, 0x000f, 0x8010, -+ 0x0008, 0x0008, 0x0000, 0x01cf, 0x0003, 0x0188, 0x000c, 0x8010, -+ 0x0008, 0x0007, 0x0000, 0x0191, 0x0004, 0x1810, 0x0000, 0x0191, -+ 0x0004, 0x01d9, 0x000b, 0x0188, 0x000c, 0x8010, 0x0008, 0x001b, -+ 0x0008, 0x0191, 0x0004, 0x1810, 0x0000, 0x0191, 0x0004, 0x8074, -+ 0x0000, 0xf080, 0x0000, 0x0d30, 0x0000, 0x0007, 0x0003, 0x8010, -+ 0x0008, 0x0009, 0x0008, 0x01cf, 0x0003, 0x8010, 0x0008, 0x0005, -+ 0x0008, 0x01cf, 0x0003, 0x808c, 0x0008, 0x0001, 0x0000, 0x8010, -+ 0x0008, 0x0004, 0x0000, 0x4143, 0x000a, 0x0853, 0x0003, 0x3a44, -+ 0x0002, 0x0c07, 0x0003, 0x0d2a, 0x0008, 0x01cf, 0x0003, 0x8010, -+ 0x0008, 0x0003, 0x0008, 0x01d1, 0x0003, 0x8010, 0x0008, 0x000b, -+ 0x0000, 0x01d1, 0x0003, 0x8010, 0x0008, 0x0002, 0x0000, 0x01d1, -+ 0x0003, 0x3a47, 0x0002, 0x0cd7, 0x000b, 0x8010, 0x0008, 0x0006, -+ 0x0008, 0x01d1, 0x0003, 0x8074, 0x0000, 0xf000, 0x0008, 0x0191, -+ 0x0004, 0x0194, 0x0004, 0x3a40, 0x000a, 0x0807, 0x000b, 0x8010, -+ 0x0008, 0x000c, 0x0008, 0x0191, 0x0004, 0x0007, 0x0003, 0x8074, -+ 0x0000, 0xf080, 0x0000, 0x0d30, 0x0000, 0x2e4d, 0x0002, 0x2e4d, -+ 0x0002, 0x09e2, 0x000b, 0x8054, 0x0008, 0x0019, 0x0000, 0x0007, -+ 0x0003, 0x8054, 0x0008, 0x0009, 0x0008, 0x0007, 0x0003, 0x3a44, -+ 0x0002, 0x0c07, 0x0003, 0x01c4, 0x000b, 0xde59, 0xf666, 0x0001, -+ 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, -+ 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0xfe91 -+}; ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp.c 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,6714 @@ -+/* @(#)isp.c 1.86 */ -+/* -+ * Machine and OS Independent (well, as best as possible) -+ * code for the Qlogic ISP SCSI adapters. -+ * -+ * Copyright (c) 1997, 1998, 1999, 2000, 2001 by Matthew Jacob -+ * Feral Software -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice immediately at the beginning of the file, without modification, -+ * this list of conditions, and the following disclaimer. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+ -+/* -+ * Inspiration and ideas about this driver are from Erik Moe's Linux driver -+ * (qlogicisp.c) and Dave Miller's SBus version of same (qlogicisp.c). Some -+ * ideas dredged from the Solaris driver. -+ */ -+ -+/* -+ * Include header file appropriate for platform we're building on. -+ */ -+ -+#ifdef __NetBSD__ -+#include -+#endif -+#ifdef __FreeBSD__ -+#include -+#endif -+#ifdef __OpenBSD__ -+#include -+#endif -+#ifdef __linux__ -+#include "isp_linux.h" -+#endif -+#ifdef __svr4__ -+#include "isp_solaris.h" -+#endif -+ -+/* -+ * General defines -+ */ -+ -+#define MBOX_DELAY_COUNT 1000000 / 100 -+ -+/* -+ * Local static data -+ */ -+static const char portshift[] = -+ "Target %d Loop ID 0x%x (Port 0x%x) => Loop 0x%x (Port 0x%x)"; -+static const char portdup[] = -+ "Target %d duplicates Target %d- killing off both"; -+static const char retained[] = -+ "Retaining Loop ID 0x%x for Target %d (Port 0x%x)"; -+static const char lretained[] = -+ "Retained login of Target %d (Loop ID 0x%x) Port 0x%x"; -+static const char plogout[] = -+ "Logging out Target %d at Loop ID 0x%x (Port 0x%x)"; -+static const char plogierr[] = -+ "Command Error in PLOGI for Port 0x%x (0x%x)"; -+static const char nopdb[] = -+ "Could not get PDB for Device @ Port 0x%x"; -+static const char pdbmfail1[] = -+ "PDB Loop ID info for Device @ Port 0x%x does not match up (0x%x)"; -+static const char pdbmfail2[] = -+ "PDB Port info for Device @ Port 0x%x does not match up (0x%x)"; -+static const char ldumped[] = -+ "Target %d (Loop ID 0x%x) Port 0x%x dumped after login info mismatch"; -+static const char notresp[] = -+ "Not RESPONSE in RESPONSE Queue (type 0x%x) @ idx %d (next %d) nlooked %d"; -+static const char xact1[] = -+ "HBA attempted queued transaction with disconnect not set for %d.%d.%d"; -+static const char xact2[] = -+ "HBA attempted queued transaction to target routine %d on target %d bus %d"; -+static const char xact3[] = -+ "HBA attempted queued cmd for %d.%d.%d when queueing disabled"; -+static const char pskip[] = -+ "SCSI phase skipped for target %d.%d.%d"; -+static const char topology[] = -+ "Loop ID %d, AL_PA 0x%x, Port ID 0x%x, Loop State 0x%x, Topology '%s'"; -+static const char swrej[] = -+ "Fabric Nameserver rejected %s (Reason=0x%x Expl=0x%x) for Port ID 0x%x"; -+static const char finmsg[] = -+ "(%d.%d.%d): FIN dl%d resid %d STS 0x%x SKEY %c XS_ERR=0x%x"; -+static const char sc0[] = -+ "%s CHAN %d FTHRSH %d IID %d RESETD %d RETRYC %d RETRYD %d ASD 0x%x"; -+static const char sc1[] = -+ "%s RAAN 0x%x DLAN 0x%x DDMAB 0x%x CDMAB 0x%x SELTIME %d MQD %d"; -+static const char sc2[] = "%s CHAN %d TGT %d FLAGS 0x%x 0x%x/0x%x"; -+static const char sc3[] = "Generated"; -+static const char sc4[] = "NVRAM"; -+static const char bun[] = -+ "bad underrun for %d.%d (count %d, resid %d, status %s)"; -+ -+/* -+ * Local function prototypes. -+ */ -+static int isp_parse_async(struct ispsoftc *, u_int16_t); -+static int isp_handle_other_response(struct ispsoftc *, int, isphdr_t *, -+ u_int16_t *); -+static void -+isp_parse_status(struct ispsoftc *, ispstatusreq_t *, XS_T *); -+static void isp_fastpost_complete(struct ispsoftc *, u_int16_t); -+static int isp_mbox_continue(struct ispsoftc *); -+static void isp_scsi_init(struct ispsoftc *); -+static void isp_scsi_channel_init(struct ispsoftc *, int); -+static void isp_fibre_init(struct ispsoftc *); -+static void isp_mark_getpdb_all(struct ispsoftc *); -+static int isp_getmap(struct ispsoftc *, fcpos_map_t *); -+static int isp_getpdb(struct ispsoftc *, int, isp_pdb_t *); -+static u_int64_t isp_get_portname(struct ispsoftc *, int, int); -+static int isp_fclink_test(struct ispsoftc *, int); -+static char *isp2100_fw_statename(int); -+static int isp_pdb_sync(struct ispsoftc *); -+static int isp_scan_loop(struct ispsoftc *); -+static int isp_fabric_mbox_cmd(struct ispsoftc *, mbreg_t *); -+static int isp_scan_fabric(struct ispsoftc *, int); -+static void isp_register_fc4_type(struct ispsoftc *); -+static void isp_fw_state(struct ispsoftc *); -+static void isp_mboxcmd_qnw(struct ispsoftc *, mbreg_t *, int); -+static void isp_mboxcmd(struct ispsoftc *, mbreg_t *, int); -+ -+static void isp_update(struct ispsoftc *); -+static void isp_update_bus(struct ispsoftc *, int); -+static void isp_setdfltparm(struct ispsoftc *, int); -+static int isp_read_nvram(struct ispsoftc *); -+static void isp_rdnvram_word(struct ispsoftc *, int, u_int16_t *); -+static void isp_parse_nvram_1020(struct ispsoftc *, u_int8_t *); -+static void isp_parse_nvram_1080(struct ispsoftc *, int, u_int8_t *); -+static void isp_parse_nvram_12160(struct ispsoftc *, int, u_int8_t *); -+static void isp_parse_nvram_2100(struct ispsoftc *, u_int8_t *); -+ -+/* -+ * Reset Hardware. -+ * -+ * Hit the chip over the head, download new f/w if available and set it running. -+ * -+ * Locking done elsewhere. -+ */ -+ -+void -+isp_reset(struct ispsoftc *isp) -+{ -+ mbreg_t mbs; -+ u_int16_t code_org; -+ int loops, i, dodnld = 1; -+ char *btype = "????"; -+ -+ isp->isp_state = ISP_NILSTATE; -+ -+ /* -+ * Basic types (SCSI, FibreChannel and PCI or SBus) -+ * have been set in the MD code. We figure out more -+ * here. Possibly more refined types based upon PCI -+ * identification. Chip revision has been gathered. -+ * -+ * After we've fired this chip up, zero out the conf1 register -+ * for SCSI adapters and do other settings for the 2100. -+ */ -+ -+ /* -+ * Get the current running firmware revision out of the -+ * chip before we hit it over the head (if this is our -+ * first time through). Note that we store this as the -+ * 'ROM' firmware revision- which it may not be. In any -+ * case, we don't really use this yet, but we may in -+ * the future. -+ */ -+ if (isp->isp_touched == 0) { -+ /* -+ * First see whether or not we're sitting in the ISP PROM. -+ * If we've just been reset, we'll have the string "ISP " -+ * spread through outgoing mailbox registers 1-3. We do -+ * this for PCI cards because otherwise we really don't -+ * know what state the card is in and we could hang if -+ * we try this command otherwise. -+ * -+ * For SBus cards, we just do this because they almost -+ * certainly will be running firmware by now. -+ */ -+ if (ISP_READ(isp, OUTMAILBOX1) != 0x4953 || -+ ISP_READ(isp, OUTMAILBOX2) != 0x5020 || -+ ISP_READ(isp, OUTMAILBOX3) != 0x2020) { -+ /* -+ * Just in case it was paused... -+ */ -+ ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); -+ mbs.param[0] = MBOX_ABOUT_FIRMWARE; -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ isp->isp_romfw_rev[0] = mbs.param[1]; -+ isp->isp_romfw_rev[1] = mbs.param[2]; -+ isp->isp_romfw_rev[2] = mbs.param[3]; -+ } -+ } -+ isp->isp_touched = 1; -+ } -+ -+ DISABLE_INTS(isp); -+ -+ /* -+ * Set up default request/response queue in-pointer/out-pointer -+ * register indices. -+ */ -+ if (IS_23XX(isp)) { -+ isp->isp_rqstinrp = BIU_REQINP; -+ isp->isp_rqstoutrp = BIU_REQOUTP; -+ isp->isp_respinrp = BIU_RSPINP; -+ isp->isp_respoutrp = BIU_RSPOUTP; -+ } else { -+ isp->isp_rqstinrp = INMAILBOX4; -+ isp->isp_rqstoutrp = OUTMAILBOX4; -+ isp->isp_respinrp = OUTMAILBOX5; -+ isp->isp_respoutrp = INMAILBOX5; -+ } -+ -+ /* -+ * Put the board into PAUSE mode (so we can read the SXP registers -+ * or write FPM/FBM registers). -+ */ -+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); -+ -+ if (IS_FC(isp)) { -+ switch (isp->isp_type) { -+ case ISP_HA_FC_2100: -+ btype = "2100"; -+ break; -+ case ISP_HA_FC_2200: -+ btype = "2200"; -+ break; -+ case ISP_HA_FC_2300: -+ btype = "2300"; -+ break; -+ case ISP_HA_FC_2312: -+ btype = "2312"; -+ break; -+ default: -+ break; -+ } -+ /* -+ * While we're paused, reset the FPM module and FBM fifos. -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_FPM0_REGS); -+ ISP_WRITE(isp, FPM_DIAG_CONFIG, FPM_SOFT_RESET); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_FB_REGS); -+ ISP_WRITE(isp, FBM_CMD, FBMCMD_FIFO_RESET_ALL); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_RISC_REGS); -+ } else if (IS_1240(isp)) { -+ sdparam *sdp = isp->isp_param; -+ btype = "1240"; -+ isp->isp_clock = 60; -+ sdp->isp_ultramode = 1; -+ sdp++; -+ sdp->isp_ultramode = 1; -+ /* -+ * XXX: Should probably do some bus sensing. -+ */ -+ } else if (IS_ULTRA2(isp)) { -+ static const char m[] = "bus %d is in %s Mode"; -+ u_int16_t l; -+ sdparam *sdp = isp->isp_param; -+ -+ isp->isp_clock = 100; -+ -+ if (IS_1280(isp)) -+ btype = "1280"; -+ else if (IS_1080(isp)) -+ btype = "1080"; -+ else if (IS_10160(isp)) -+ btype = "10160"; -+ else if (IS_12160(isp)) -+ btype = "12160"; -+ else -+ btype = ""; -+ -+ l = ISP_READ(isp, SXP_PINS_DIFF) & ISP1080_MODE_MASK; -+ switch (l) { -+ case ISP1080_LVD_MODE: -+ sdp->isp_lvdmode = 1; -+ isp_prt(isp, ISP_LOGCONFIG, m, 0, "LVD"); -+ break; -+ case ISP1080_HVD_MODE: -+ sdp->isp_diffmode = 1; -+ isp_prt(isp, ISP_LOGCONFIG, m, 0, "Differential"); -+ break; -+ case ISP1080_SE_MODE: -+ sdp->isp_ultramode = 1; -+ isp_prt(isp, ISP_LOGCONFIG, m, 0, "Single-Ended"); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "unknown mode on bus %d (0x%x)", 0, l); -+ break; -+ } -+ -+ if (IS_DUALBUS(isp)) { -+ sdp++; -+ l = ISP_READ(isp, SXP_PINS_DIFF|SXP_BANK1_SELECT); -+ l &= ISP1080_MODE_MASK; -+ switch(l) { -+ case ISP1080_LVD_MODE: -+ sdp->isp_lvdmode = 1; -+ isp_prt(isp, ISP_LOGCONFIG, m, 1, "LVD"); -+ break; -+ case ISP1080_HVD_MODE: -+ sdp->isp_diffmode = 1; -+ isp_prt(isp, ISP_LOGCONFIG, -+ m, 1, "Differential"); -+ break; -+ case ISP1080_SE_MODE: -+ sdp->isp_ultramode = 1; -+ isp_prt(isp, ISP_LOGCONFIG, -+ m, 1, "Single-Ended"); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "unknown mode on bus %d (0x%x)", 1, l); -+ break; -+ } -+ } -+ } else { -+ sdparam *sdp = isp->isp_param; -+ i = ISP_READ(isp, BIU_CONF0) & BIU_CONF0_HW_MASK; -+ switch (i) { -+ default: -+ isp_prt(isp, ISP_LOGALL, "Unknown Chip Type 0x%x", i); -+ /* FALLTHROUGH */ -+ case 1: -+ btype = "1020"; -+ isp->isp_type = ISP_HA_SCSI_1020; -+ isp->isp_clock = 40; -+ break; -+ case 2: -+ /* -+ * Some 1020A chips are Ultra Capable, but don't -+ * run the clock rate up for that unless told to -+ * do so by the Ultra Capable bits being set. -+ */ -+ btype = "1020A"; -+ isp->isp_type = ISP_HA_SCSI_1020A; -+ isp->isp_clock = 40; -+ break; -+ case 3: -+ btype = "1040"; -+ isp->isp_type = ISP_HA_SCSI_1040; -+ isp->isp_clock = 60; -+ break; -+ case 4: -+ btype = "1040A"; -+ isp->isp_type = ISP_HA_SCSI_1040A; -+ isp->isp_clock = 60; -+ break; -+ case 5: -+ btype = "1040B"; -+ isp->isp_type = ISP_HA_SCSI_1040B; -+ isp->isp_clock = 60; -+ break; -+ case 6: -+ btype = "1040C"; -+ isp->isp_type = ISP_HA_SCSI_1040C; -+ isp->isp_clock = 60; -+ break; -+ } -+ /* -+ * Now, while we're at it, gather info about ultra -+ * and/or differential mode. -+ */ -+ if (ISP_READ(isp, SXP_PINS_DIFF) & SXP_PINS_DIFF_MODE) { -+ isp_prt(isp, ISP_LOGCONFIG, "Differential Mode"); -+ sdp->isp_diffmode = 1; -+ } else { -+ sdp->isp_diffmode = 0; -+ } -+ i = ISP_READ(isp, RISC_PSR); -+ if (isp->isp_bustype == ISP_BT_SBUS) { -+ i &= RISC_PSR_SBUS_ULTRA; -+ } else { -+ i &= RISC_PSR_PCI_ULTRA; -+ } -+ if (i != 0) { -+ isp_prt(isp, ISP_LOGCONFIG, "Ultra Mode Capable"); -+ sdp->isp_ultramode = 1; -+ /* -+ * If we're in Ultra Mode, we have to be 60MHz clock- -+ * even for the SBus version. -+ */ -+ isp->isp_clock = 60; -+ } else { -+ sdp->isp_ultramode = 0; -+ /* -+ * Clock is known. Gronk. -+ */ -+ } -+ -+ /* -+ * Machine dependent clock (if set) overrides -+ * our generic determinations. -+ */ -+ if (isp->isp_mdvec->dv_clock) { -+ if (isp->isp_mdvec->dv_clock < isp->isp_clock) { -+ isp->isp_clock = isp->isp_mdvec->dv_clock; -+ } -+ } -+ -+ } -+ -+ /* -+ * Clear instrumentation -+ */ -+ isp->isp_intcnt = isp->isp_intbogus = 0; -+ -+ /* -+ * Do MD specific pre initialization -+ */ -+ ISP_RESET0(isp); -+ -+again: -+ -+ /* -+ * Hit the chip over the head with hammer, -+ * and give the ISP a chance to recover. -+ */ -+ -+ if (IS_SCSI(isp)) { -+ ISP_WRITE(isp, BIU_ICR, BIU_ICR_SOFT_RESET); -+ /* -+ * A slight delay... -+ */ -+ USEC_DELAY(100); -+ -+ /* -+ * Clear data && control DMA engines. -+ */ -+ ISP_WRITE(isp, CDMA_CONTROL, -+ DMA_CNTRL_CLEAR_CHAN | DMA_CNTRL_RESET_INT); -+ ISP_WRITE(isp, DDMA_CONTROL, -+ DMA_CNTRL_CLEAR_CHAN | DMA_CNTRL_RESET_INT); -+ -+ -+ } else { -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_SOFT_RESET); -+ /* -+ * A slight delay... -+ */ -+ USEC_DELAY(100); -+ -+ /* -+ * Clear data && control DMA engines. -+ */ -+ ISP_WRITE(isp, CDMA2100_CONTROL, -+ DMA_CNTRL2100_CLEAR_CHAN | DMA_CNTRL2100_RESET_INT); -+ ISP_WRITE(isp, TDMA2100_CONTROL, -+ DMA_CNTRL2100_CLEAR_CHAN | DMA_CNTRL2100_RESET_INT); -+ ISP_WRITE(isp, RDMA2100_CONTROL, -+ DMA_CNTRL2100_CLEAR_CHAN | DMA_CNTRL2100_RESET_INT); -+ } -+ -+ /* -+ * Wait for ISP to be ready to go... -+ */ -+ loops = MBOX_DELAY_COUNT; -+ for (;;) { -+ if (IS_SCSI(isp)) { -+ if (!(ISP_READ(isp, BIU_ICR) & BIU_ICR_SOFT_RESET)) -+ break; -+ } else { -+ if (!(ISP_READ(isp, BIU2100_CSR) & BIU2100_SOFT_RESET)) -+ break; -+ } -+ USEC_DELAY(100); -+ if (--loops < 0) { -+ ISP_DUMPREGS(isp, "chip reset timed out"); -+ return; -+ } -+ } -+ -+ /* -+ * After we've fired this chip up, zero out the conf1 register -+ * for SCSI adapters and other settings for the 2100. -+ */ -+ -+ if (IS_SCSI(isp)) { -+ ISP_WRITE(isp, BIU_CONF1, 0); -+ } else { -+ ISP_WRITE(isp, BIU2100_CSR, 0); -+ } -+ -+ /* -+ * Reset RISC Processor -+ */ -+ ISP_WRITE(isp, HCCR, HCCR_CMD_RESET); -+ USEC_DELAY(100); -+ /* Clear semaphore register (just to be sure) */ -+ ISP_WRITE(isp, BIU_SEMA, 0); -+ -+ /* -+ * Establish some initial burst rate stuff. -+ * (only for the 1XX0 boards). This really should -+ * be done later after fetching from NVRAM. -+ */ -+ if (IS_SCSI(isp)) { -+ u_int16_t tmp = isp->isp_mdvec->dv_conf1; -+ /* -+ * Busted FIFO. Turn off all but burst enables. -+ */ -+ if (isp->isp_type == ISP_HA_SCSI_1040A) { -+ tmp &= BIU_BURST_ENABLE; -+ } -+ ISP_SETBITS(isp, BIU_CONF1, tmp); -+ if (tmp & BIU_BURST_ENABLE) { -+ ISP_SETBITS(isp, CDMA_CONF, DMA_ENABLE_BURST); -+ ISP_SETBITS(isp, DDMA_CONF, DMA_ENABLE_BURST); -+ } -+#ifdef PTI_CARDS -+ if (((sdparam *) isp->isp_param)->isp_ultramode) { -+ while (ISP_READ(isp, RISC_MTR) != 0x1313) { -+ ISP_WRITE(isp, RISC_MTR, 0x1313); -+ ISP_WRITE(isp, HCCR, HCCR_CMD_STEP); -+ } -+ } else { -+ ISP_WRITE(isp, RISC_MTR, 0x1212); -+ } -+ /* -+ * PTI specific register -+ */ -+ ISP_WRITE(isp, RISC_EMB, DUAL_BANK) -+#else -+ ISP_WRITE(isp, RISC_MTR, 0x1212); -+#endif -+ } else { -+ ISP_WRITE(isp, RISC_MTR2100, 0x1212); -+ if (IS_2200(isp) || IS_23XX(isp)) { -+ ISP_WRITE(isp, HCCR, HCCR_2X00_DISABLE_PARITY_PAUSE); -+ } -+ } -+ -+ ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); /* release paused processor */ -+ -+ /* -+ * Do MD specific post initialization -+ */ -+ ISP_RESET1(isp); -+ -+ /* -+ * Wait for everything to finish firing up. -+ * -+ * Avoid doing this on the 2312 because you can generate a PCI -+ * parity error (chip breakage). -+ */ -+ if (IS_23XX(isp)) { -+ USEC_DELAY(5); -+ } else { -+ loops = MBOX_DELAY_COUNT; -+ while (ISP_READ(isp, OUTMAILBOX0) == MBOX_BUSY) { -+ USEC_DELAY(100); -+ if (--loops < 0) { -+ isp_prt(isp, ISP_LOGERR, -+ "MBOX_BUSY never cleared on reset"); -+ return; -+ } -+ } -+ } -+ -+ /* -+ * Up until this point we've done everything by just reading or -+ * setting registers. From this point on we rely on at least *some* -+ * kind of firmware running in the card. -+ */ -+ -+ /* -+ * Do some sanity checking. -+ */ -+ mbs.param[0] = MBOX_NO_OP; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ -+ if (IS_SCSI(isp)) { -+ mbs.param[0] = MBOX_MAILBOX_REG_TEST; -+ mbs.param[1] = 0xdead; -+ mbs.param[2] = 0xbeef; -+ mbs.param[3] = 0xffff; -+ mbs.param[4] = 0x1111; -+ mbs.param[5] = 0xa5a5; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ if (mbs.param[1] != 0xdead || mbs.param[2] != 0xbeef || -+ mbs.param[3] != 0xffff || mbs.param[4] != 0x1111 || -+ mbs.param[5] != 0xa5a5) { -+ isp_prt(isp, ISP_LOGERR, -+ "Register Test Failed (0x%x 0x%x 0x%x 0x%x 0x%x)", -+ mbs.param[1], mbs.param[2], mbs.param[3], -+ mbs.param[4], mbs.param[5]); -+ return; -+ } -+ -+ } -+ -+ /* -+ * Download new Firmware, unless requested not to do so. -+ * This is made slightly trickier in some cases where the -+ * firmware of the ROM revision is newer than the revision -+ * compiled into the driver. So, where we used to compare -+ * versions of our f/w and the ROM f/w, now we just see -+ * whether we have f/w at all and whether a config flag -+ * has disabled our download. -+ */ -+ if ((isp->isp_mdvec->dv_ispfw == NULL) || -+ (isp->isp_confopts & ISP_CFG_NORELOAD)) { -+ dodnld = 0; -+ } -+ -+ if (IS_23XX(isp)) -+ code_org = ISP_CODE_ORG_2300; -+ else -+ code_org = ISP_CODE_ORG; -+ -+ if (dodnld) { -+ isp->isp_mbxworkp = (void *) &isp->isp_mdvec->dv_ispfw[1]; -+ isp->isp_mbxwrk0 = isp->isp_mdvec->dv_ispfw[3] - 1; -+ isp->isp_mbxwrk1 = code_org + 1; -+ mbs.param[0] = MBOX_WRITE_RAM_WORD; -+ mbs.param[1] = code_org; -+ mbs.param[2] = isp->isp_mdvec->dv_ispfw[0]; -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGERR, -+ "F/W download failed at word %d", -+ isp->isp_mbxwrk1 - code_org); -+ dodnld = 0; -+ goto again; -+ } -+ /* -+ * Verify that it downloaded correctly. -+ */ -+ mbs.param[0] = MBOX_VERIFY_CHECKSUM; -+ mbs.param[1] = code_org; -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGERR, "Ram Checksum Failure"); -+ return; -+ } -+ isp->isp_loaded_fw = 1; -+ } else { -+ isp->isp_loaded_fw = 0; -+ isp_prt(isp, ISP_LOGDEBUG2, "skipping f/w download"); -+ } -+ -+ /* -+ * Now start it rolling. -+ * -+ * If we didn't actually download f/w, -+ * we still need to (re)start it. -+ */ -+ -+ -+ mbs.param[0] = MBOX_EXEC_FIRMWARE; -+ mbs.param[1] = code_org; -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ /* -+ * Give it a chance to start. -+ */ -+ USEC_DELAY(500); -+ -+ if (IS_SCSI(isp)) { -+ /* -+ * Set CLOCK RATE, but only if asked to. -+ */ -+ if (isp->isp_clock) { -+ mbs.param[0] = MBOX_SET_CLOCK_RATE; -+ mbs.param[1] = isp->isp_clock; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ /* we will try not to care if this fails */ -+ } -+ } -+ -+ mbs.param[0] = MBOX_ABOUT_FIRMWARE; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ -+ /* -+ * The SBus firmware that we are using apparently does not return -+ * major, minor, micro revisions in the mailbox registers, which -+ * is really, really, annoying. -+ */ -+ if (ISP_SBUS_SUPPORTED && isp->isp_bustype == ISP_BT_SBUS) { -+ if (dodnld) { -+#ifdef ISP_TARGET_MODE -+ isp->isp_fwrev[0] = 7; -+ isp->isp_fwrev[1] = 55; -+#else -+ isp->isp_fwrev[0] = 1; -+ isp->isp_fwrev[1] = 37; -+#endif -+ isp->isp_fwrev[2] = 0; -+ } -+ } else { -+ isp->isp_fwrev[0] = mbs.param[1]; -+ isp->isp_fwrev[1] = mbs.param[2]; -+ isp->isp_fwrev[2] = mbs.param[3]; -+ } -+ isp_prt(isp, ISP_LOGCONFIG, -+ "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d", -+ btype, isp->isp_revision, dodnld? "loaded" : "resident", -+ isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]); -+ -+ if (IS_FC(isp)) { -+ /* -+ * We do not believe firmware attributes for 2100 code less -+ * than 1.17.0, unless it's the firmware we specifically -+ * are loading. -+ * -+ * Note that all 22XX and 23XX f/w is greater than 1.X.0. -+ */ -+ if (!(ISP_FW_NEWER_THAN(isp, 1, 17, 0))) { -+#ifdef USE_SMALLER_2100_FIRMWARE -+ FCPARAM(isp)->isp_fwattr = ISP_FW_ATTR_SCCLUN; -+#else -+ FCPARAM(isp)->isp_fwattr = 0; -+#endif -+ } else { -+ FCPARAM(isp)->isp_fwattr = mbs.param[6]; -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "Firmware Attributes = 0x%x", mbs.param[6]); -+ } -+ if (ISP_READ(isp, BIU2100_CSR) & BIU2100_PCI64) { -+ isp_prt(isp, ISP_LOGCONFIG, -+ "Installed in 64-Bit PCI slot"); -+ } -+ } -+ -+ if (isp->isp_romfw_rev[0] || isp->isp_romfw_rev[1] || -+ isp->isp_romfw_rev[2]) { -+ isp_prt(isp, ISP_LOGCONFIG, "Last F/W revision was %d.%d.%d", -+ isp->isp_romfw_rev[0], isp->isp_romfw_rev[1], -+ isp->isp_romfw_rev[2]); -+ } -+ -+ mbs.param[0] = MBOX_GET_FIRMWARE_STATUS; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ isp->isp_maxcmds = mbs.param[2]; -+ isp_prt(isp, ISP_LOGINFO, -+ "%d max I/O commands supported", mbs.param[2]); -+ isp_fw_state(isp); -+ -+ /* -+ * Set up DMA for the request and result mailboxes. -+ */ -+ if (ISP_MBOXDMASETUP(isp) != 0) { -+ isp_prt(isp, ISP_LOGERR, "Cannot setup DMA"); -+ return; -+ } -+ isp->isp_state = ISP_RESETSTATE; -+ -+ /* -+ * Okay- now that we have new firmware running, we now (re)set our -+ * notion of how many luns we support. This is somewhat tricky because -+ * if we haven't loaded firmware, we sometimes do not have an easy way -+ * of knowing how many luns we support. -+ * -+ * Expanded lun firmware gives you 32 luns for SCSI cards and -+ * 16384 luns for Fibre Channel cards. -+ * -+ * It turns out that even for QLogic 2100s with ROM 1.10 and above -+ * we do get a firmware attributes word returned in mailbox register 6. -+ * -+ * Because the lun is in a different position in the Request Queue -+ * Entry structure for Fibre Channel with expanded lun firmware, we -+ * can only support one lun (lun zero) when we don't know what kind -+ * of firmware we're running. -+ */ -+ if (IS_SCSI(isp)) { -+ if (dodnld) { -+ if (IS_ULTRA2(isp) || IS_ULTRA3(isp)) { -+ isp->isp_maxluns = 32; -+ } else { -+ isp->isp_maxluns = 8; -+ } -+ } else { -+ isp->isp_maxluns = 8; -+ } -+ } else { -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) { -+ isp->isp_maxluns = 16384; -+ } else { -+ isp->isp_maxluns = 16; -+ } -+ } -+} -+ -+/* -+ * Initialize Parameters of Hardware to a known state. -+ * -+ * Locks are held before coming here. -+ */ -+ -+void -+isp_init(struct ispsoftc *isp) -+{ -+ /* -+ * Must do this first to get defaults established. -+ */ -+ isp_setdfltparm(isp, 0); -+ if (IS_DUALBUS(isp)) { -+ isp_setdfltparm(isp, 1); -+ } -+ if (IS_FC(isp)) { -+ isp_fibre_init(isp); -+ } else { -+ isp_scsi_init(isp); -+ } -+} -+ -+static void -+isp_scsi_init(struct ispsoftc *isp) -+{ -+ sdparam *sdp_chan0, *sdp_chan1; -+ mbreg_t mbs; -+ -+ sdp_chan0 = isp->isp_param; -+ sdp_chan1 = sdp_chan0; -+ if (IS_DUALBUS(isp)) { -+ sdp_chan1++; -+ } -+ -+ /* -+ * If we have no role (neither target nor initiator), return. -+ */ -+ if (isp->isp_role == ISP_ROLE_NONE) { -+ return; -+ } -+ -+ /* First do overall per-card settings. */ -+ -+ /* -+ * If we have fast memory timing enabled, turn it on. -+ */ -+ if (sdp_chan0->isp_fast_mttr) { -+ ISP_WRITE(isp, RISC_MTR, 0x1313); -+ } -+ -+ /* -+ * Set Retry Delay and Count. -+ * You set both channels at the same time. -+ */ -+ mbs.param[0] = MBOX_SET_RETRY_COUNT; -+ mbs.param[1] = sdp_chan0->isp_retry_count; -+ mbs.param[2] = sdp_chan0->isp_retry_delay; -+ mbs.param[6] = sdp_chan1->isp_retry_count; -+ mbs.param[7] = sdp_chan1->isp_retry_delay; -+ -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ -+ /* -+ * Set ASYNC DATA SETUP time. This is very important. -+ */ -+ mbs.param[0] = MBOX_SET_ASYNC_DATA_SETUP_TIME; -+ mbs.param[1] = sdp_chan0->isp_async_data_setup; -+ mbs.param[2] = sdp_chan1->isp_async_data_setup; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ -+ /* -+ * Set ACTIVE Negation State. -+ */ -+ mbs.param[0] = MBOX_SET_ACT_NEG_STATE; -+ mbs.param[1] = -+ (sdp_chan0->isp_req_ack_active_neg << 4) | -+ (sdp_chan0->isp_data_line_active_neg << 5); -+ mbs.param[2] = -+ (sdp_chan1->isp_req_ack_active_neg << 4) | -+ (sdp_chan1->isp_data_line_active_neg << 5); -+ -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGERR, -+ "failed to set active negation state (%d,%d), (%d,%d)", -+ sdp_chan0->isp_req_ack_active_neg, -+ sdp_chan0->isp_data_line_active_neg, -+ sdp_chan1->isp_req_ack_active_neg, -+ sdp_chan1->isp_data_line_active_neg); -+ /* -+ * But don't return. -+ */ -+ } -+ -+ /* -+ * Set the Tag Aging limit -+ */ -+ mbs.param[0] = MBOX_SET_TAG_AGE_LIMIT; -+ mbs.param[1] = sdp_chan0->isp_tag_aging; -+ mbs.param[2] = sdp_chan1->isp_tag_aging; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGERR, "failed to set tag age limit (%d,%d)", -+ sdp_chan0->isp_tag_aging, sdp_chan1->isp_tag_aging); -+ return; -+ } -+ -+ /* -+ * Set selection timeout. -+ */ -+ mbs.param[0] = MBOX_SET_SELECT_TIMEOUT; -+ mbs.param[1] = sdp_chan0->isp_selection_timeout; -+ mbs.param[2] = sdp_chan1->isp_selection_timeout; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ -+ /* now do per-channel settings */ -+ isp_scsi_channel_init(isp, 0); -+ if (IS_DUALBUS(isp)) -+ isp_scsi_channel_init(isp, 1); -+ -+ /* -+ * Now enable request/response queues -+ */ -+ -+ if (IS_ULTRA2(isp) || IS_1240(isp)) { -+ mbs.param[0] = MBOX_INIT_RES_QUEUE_A64; -+ mbs.param[1] = RESULT_QUEUE_LEN(isp); -+ mbs.param[2] = DMA_WD1(isp->isp_result_dma); -+ mbs.param[3] = DMA_WD0(isp->isp_result_dma); -+ mbs.param[4] = 0; -+ mbs.param[6] = DMA_WD3(isp->isp_result_dma); -+ mbs.param[7] = DMA_WD2(isp->isp_result_dma); -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ isp->isp_residx = mbs.param[5]; -+ -+ mbs.param[0] = MBOX_INIT_REQ_QUEUE_A64; -+ mbs.param[1] = RQUEST_QUEUE_LEN(isp); -+ mbs.param[2] = DMA_WD1(isp->isp_rquest_dma); -+ mbs.param[3] = DMA_WD0(isp->isp_rquest_dma); -+ mbs.param[5] = 0; -+ mbs.param[6] = DMA_WD3(isp->isp_result_dma); -+ mbs.param[7] = DMA_WD2(isp->isp_result_dma); -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ isp->isp_reqidx = isp->isp_reqodx = mbs.param[4]; -+ } else { -+ mbs.param[0] = MBOX_INIT_RES_QUEUE; -+ mbs.param[1] = RESULT_QUEUE_LEN(isp); -+ mbs.param[2] = DMA_WD1(isp->isp_result_dma); -+ mbs.param[3] = DMA_WD0(isp->isp_result_dma); -+ mbs.param[4] = 0; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ isp->isp_residx = mbs.param[5]; -+ -+ mbs.param[0] = MBOX_INIT_REQ_QUEUE; -+ mbs.param[1] = RQUEST_QUEUE_LEN(isp); -+ mbs.param[2] = DMA_WD1(isp->isp_rquest_dma); -+ mbs.param[3] = DMA_WD0(isp->isp_rquest_dma); -+ mbs.param[5] = 0; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ isp->isp_reqidx = isp->isp_reqodx = mbs.param[4]; -+ } -+ -+ /* -+ * Turn on Fast Posting, LVD transitions -+ * -+ * Ultra2 F/W always has had fast posting (and LVD transitions) -+ * -+ * Ultra and older (i.e., SBus) cards may not. It's just safer -+ * to assume not for them. -+ */ -+ -+ mbs.param[0] = MBOX_SET_FW_FEATURES; -+ mbs.param[1] = 0; -+ if (IS_ULTRA2(isp)) -+ mbs.param[1] |= FW_FEATURE_LVD_NOTIFY; -+#ifndef ISP_NO_RIO -+ if (IS_ULTRA2(isp) || IS_1240(isp)) -+ mbs.param[1] |= FW_FEATURE_RIO_16BIT; -+#else -+#ifndef ISP_NO_FASTPOST -+ if (IS_ULTRA2(isp) || IS_1240(isp)) -+ mbs.param[1] |= FW_FEATURE_FAST_POST; -+#endif -+#endif -+ if (mbs.param[1] != 0) { -+ u_int16_t sfeat = mbs.param[1]; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGINFO, -+ "Enabled FW features (0x%x)", sfeat); -+ } -+ } -+ -+ /* -+ * Let the outer layers decide whether to issue a SCSI bus reset. -+ */ -+ isp->isp_state = ISP_INITSTATE; -+} -+ -+static void -+isp_scsi_channel_init(struct ispsoftc *isp, int channel) -+{ -+ sdparam *sdp; -+ mbreg_t mbs; -+ int tgt; -+ -+ sdp = isp->isp_param; -+ sdp += channel; -+ -+ /* -+ * Set (possibly new) Initiator ID. -+ */ -+ mbs.param[0] = MBOX_SET_INIT_SCSI_ID; -+ mbs.param[1] = (channel << 7) | sdp->isp_initiator_id; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ isp_prt(isp, ISP_LOGINFO, "Initiator ID is %d on Channel %d", -+ sdp->isp_initiator_id, channel); -+ -+ -+ /* -+ * Set current per-target parameters to an initial safe minimum. -+ */ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ int lun; -+ u_int16_t sdf; -+ -+ if (sdp->isp_devparam[tgt].dev_enable == 0) { -+ continue; -+ } -+#ifndef ISP_TARGET_MODE -+ sdf = sdp->isp_devparam[tgt].goal_flags; -+ sdf &= DPARM_SAFE_DFLT; -+ /* -+ * It is not quite clear when this changed over so that -+ * we could force narrow and async for 1000/1020 cards, -+ * but assume that this is only the case for loaded -+ * firmware. -+ */ -+ if (isp->isp_loaded_fw) { -+ sdf |= DPARM_NARROW | DPARM_ASYNC; -+ } -+#else -+ /* -+ * The !$*!)$!$)* f/w uses the same index into some -+ * internal table to decide how to respond to negotiations, -+ * so if we've said "let's be safe" for ID X, and ID X -+ * selects *us*, the negotiations will back to 'safe' -+ * (as in narrow/async). What the f/w *should* do is -+ * use the initiator id settings to decide how to respond. -+ */ -+ sdp->isp_devparam[tgt].goal_flags = sdf = DPARM_DEFAULT; -+#endif -+ mbs.param[0] = MBOX_SET_TARGET_PARAMS; -+ mbs.param[1] = (channel << 15) | (tgt << 8); -+ mbs.param[2] = sdf; -+ if ((sdf & DPARM_SYNC) == 0) { -+ mbs.param[3] = 0; -+ } else { -+ mbs.param[3] = -+ (sdp->isp_devparam[tgt].goal_offset << 8) | -+ (sdp->isp_devparam[tgt].goal_period); -+ } -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "Initial Settings bus%d tgt%d flags 0x%x off 0x%x per 0x%x", -+ channel, tgt, mbs.param[2], mbs.param[3] >> 8, -+ mbs.param[3] & 0xff); -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ sdf = DPARM_SAFE_DFLT; -+ mbs.param[0] = MBOX_SET_TARGET_PARAMS; -+ mbs.param[1] = (tgt << 8) | (channel << 15); -+ mbs.param[2] = sdf; -+ mbs.param[3] = 0; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ continue; -+ } -+ } -+ -+ /* -+ * We don't update any information directly from the f/w -+ * because we need to run at least one command to cause a -+ * new state to be latched up. So, we just assume that we -+ * converge to the values we just had set. -+ * -+ * Ensure that we don't believe tagged queuing is enabled yet. -+ * It turns out that sometimes the ISP just ignores our -+ * attempts to set parameters for devices that it hasn't -+ * seen yet. -+ */ -+ sdp->isp_devparam[tgt].actv_flags = sdf & ~DPARM_TQING; -+ for (lun = 0; lun < (int) isp->isp_maxluns; lun++) { -+ mbs.param[0] = MBOX_SET_DEV_QUEUE_PARAMS; -+ mbs.param[1] = (channel << 15) | (tgt << 8) | lun; -+ mbs.param[2] = sdp->isp_max_queue_depth; -+ mbs.param[3] = sdp->isp_devparam[tgt].exc_throttle; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ break; -+ } -+ } -+ } -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ if (sdp->isp_devparam[tgt].dev_refresh) { -+ isp->isp_sendmarker |= (1 << channel); -+ isp->isp_update |= (1 << channel); -+ break; -+ } -+ } -+} -+ -+/* -+ * Fibre Channel specific initialization. -+ * -+ * Locks are held before coming here. -+ */ -+static void -+isp_fibre_init(struct ispsoftc *isp) -+{ -+ fcparam *fcp; -+ isp_icb_t local, *icbp = &local; -+ mbreg_t mbs; -+ int loopid; -+ u_int64_t nwwn, pwwn; -+ -+ fcp = isp->isp_param; -+ -+ /* -+ * Do this *before* initializing the firmware. -+ */ -+ isp_mark_getpdb_all(isp); -+ fcp->isp_fwstate = FW_CONFIG_WAIT; -+ fcp->isp_loopstate = LOOP_NIL; -+ -+ /* -+ * If we have no role (neither target nor initiator), return. -+ */ -+ if (isp->isp_role == ISP_ROLE_NONE) { -+ return; -+ } -+ -+ loopid = fcp->isp_loopid; -+ MEMZERO(icbp, sizeof (*icbp)); -+ icbp->icb_version = ICB_VERSION1; -+ -+ /* -+ * Firmware Options are either retrieved from NVRAM or -+ * are patched elsewhere. We check them for sanity here -+ * and make changes based on board revision, but otherwise -+ * let others decide policy. -+ */ -+ -+ /* -+ * If this is a 2100 < revision 5, we have to turn off FAIRNESS. -+ */ -+ if ((isp->isp_type == ISP_HA_FC_2100) && isp->isp_revision < 5) { -+ fcp->isp_fwoptions &= ~ICBOPT_FAIRNESS; -+ } -+ -+ /* -+ * We have to use FULL LOGIN even though it resets the loop too much -+ * because otherwise port database entries don't get updated after -+ * a LIP- this is a known f/w bug for 2100 f/w less than 1.17.0. -+ */ -+ if (!ISP_FW_NEWER_THAN(isp, 1, 17, 0)) { -+ fcp->isp_fwoptions |= ICBOPT_FULL_LOGIN; -+ } -+ -+ /* -+ * Insist on Port Database Update Async notifications -+ */ -+ fcp->isp_fwoptions |= ICBOPT_PDBCHANGE_AE; -+ -+ /* -+ * Make sure that target role reflects into fwoptions. -+ */ -+ if (isp->isp_role & ISP_ROLE_TARGET) { -+ fcp->isp_fwoptions |= ICBOPT_TGT_ENABLE; -+ } else { -+ fcp->isp_fwoptions &= ~ICBOPT_TGT_ENABLE; -+ } -+ -+ /* -+ * Propagate all of this into the ICB structure. -+ */ -+ icbp->icb_fwoptions = fcp->isp_fwoptions; -+ icbp->icb_maxfrmlen = fcp->isp_maxfrmlen; -+ if (icbp->icb_maxfrmlen < ICB_MIN_FRMLEN || -+ icbp->icb_maxfrmlen > ICB_MAX_FRMLEN) { -+ isp_prt(isp, ISP_LOGERR, -+ "bad frame length (%d) from NVRAM- using %d", -+ fcp->isp_maxfrmlen, ICB_DFLT_FRMLEN); -+ icbp->icb_maxfrmlen = ICB_DFLT_FRMLEN; -+ } -+ icbp->icb_maxalloc = fcp->isp_maxalloc; -+ if (icbp->icb_maxalloc < 1) { -+ isp_prt(isp, ISP_LOGERR, -+ "bad maximum allocation (%d)- using 16", fcp->isp_maxalloc); -+ icbp->icb_maxalloc = 16; -+ } -+ icbp->icb_execthrottle = fcp->isp_execthrottle; -+ if (icbp->icb_execthrottle < 1) { -+ isp_prt(isp, ISP_LOGERR, -+ "bad execution throttle of %d- using 16", -+ fcp->isp_execthrottle); -+ icbp->icb_execthrottle = ICB_DFLT_THROTTLE; -+ } -+ icbp->icb_retry_delay = fcp->isp_retry_delay; -+ icbp->icb_retry_count = fcp->isp_retry_count; -+ icbp->icb_hardaddr = loopid; -+ /* -+ * Right now we just set extended options to prefer point-to-point -+ * over loop based upon some soft config options. -+ * -+ * NB: for the 2300, ICBOPT_EXTENDED is required. -+ */ -+ if (IS_2200(isp) || IS_23XX(isp)) { -+ icbp->icb_fwoptions |= ICBOPT_EXTENDED; -+ /* -+ * Prefer or force Point-To-Point instead Loop? -+ */ -+ switch(isp->isp_confopts & ISP_CFG_PORT_PREF) { -+ case ISP_CFG_NPORT: -+ icbp->icb_xfwoptions |= ICBXOPT_PTP_2_LOOP; -+ break; -+ case ISP_CFG_NPORT_ONLY: -+ icbp->icb_xfwoptions |= ICBXOPT_PTP_ONLY; -+ break; -+ case ISP_CFG_LPORT_ONLY: -+ icbp->icb_xfwoptions |= ICBXOPT_LOOP_ONLY; -+ break; -+ default: -+ icbp->icb_xfwoptions |= ICBXOPT_LOOP_2_PTP; -+ break; -+ } -+ if (IS_23XX(isp)) { -+ /* -+ * QLogic recommends that FAST Posting be turned -+ * off for 23XX cards and instead allow the HBA -+ * to write response queue entries and interrupt -+ * after a delay (ZIO). -+ * -+ * If we set ZIO, it will disable fast posting, -+ * so we don't need to clear it in fwoptions. -+ */ -+#ifndef ISP_NO_ZIO -+ icbp->icb_xfwoptions |= ICBXOPT_ZIO; -+#else -+ icbp->icb_fwoptions |= ICBOPT_FAST_POST; -+#endif -+#if 0 -+ /* -+ * Values, in 100us increments. The default -+ * is 2 (200us) if a value 0 (default) is -+ * selected. -+ */ -+ icbp->icb_idelaytimer = 2; -+#endif -+ -+ if (isp->isp_confopts & ISP_CFG_ONEGB) { -+ icbp->icb_zfwoptions |= ICBZOPT_RATE_ONEGB; -+ } else if (isp->isp_confopts & ISP_CFG_TWOGB) { -+ icbp->icb_zfwoptions |= ICBZOPT_RATE_TWOGB; -+ } else { -+ icbp->icb_zfwoptions |= ICBZOPT_RATE_AUTO; -+ } -+ } -+ } -+ -+#ifndef ISP_NO_RIO_FC -+ /* -+ * RIO seems to be enabled in 2100s for fw >= 1.17.0. -+ * -+ * I've had some questionable problems with RIO on 2200. -+ * More specifically, on a 2204 I had problems with RIO -+ * on a Linux system where I was dropping commands right -+ * and left. It's not clear to me what the actual problem -+ * was. -+ * -+ * 23XX Cards do not support RIO. Instead they support ZIO. -+ */ -+#if 0 -+ if (!IS_23XX(isp) && ISP_FW_NEWER_THAN(isp, 1, 17, 0)) { -+ icbp->icb_xfwoptions |= ICBXOPT_RIO_16BIT; -+ icbp->icb_racctimer = 4; -+ icbp->icb_idelaytimer = 8; -+ } -+#endif -+#endif -+ -+ /* -+ * For 22XX > 2.1.26 && 23XX, set someoptions. -+ * XXX: Probably okay for newer 2100 f/w too. -+ */ -+ if (ISP_FW_NEWER_THAN(isp, 2, 26, 0)) { -+ /* -+ * Turn on LIP F8 async event (1) -+ * Turn on generate AE 8013 on all LIP Resets (2) -+ * Disable LIP F7 switching (8) -+ */ -+ mbs.param[0] = MBOX_SET_FIRMWARE_OPTIONS; -+ mbs.param[1] = 0xb; -+ mbs.param[2] = 0; -+ mbs.param[3] = 0; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ } -+ icbp->icb_logintime = 30; /* 30 second login timeout */ -+ -+ if (IS_23XX(isp)) { -+ ISP_WRITE(isp, isp->isp_rqstinrp, 0); -+ ISP_WRITE(isp, isp->isp_rqstoutrp, 0); -+ ISP_WRITE(isp, isp->isp_respinrp, 0); -+ ISP_WRITE(isp, isp->isp_respoutrp, 0); -+ } -+ -+ nwwn = ISP_NODEWWN(isp); -+ pwwn = ISP_PORTWWN(isp); -+ if (nwwn && pwwn) { -+ icbp->icb_fwoptions |= ICBOPT_BOTH_WWNS; -+ MAKE_NODE_NAME_FROM_WWN(icbp->icb_nodename, nwwn); -+ MAKE_NODE_NAME_FROM_WWN(icbp->icb_portname, pwwn); -+ isp_prt(isp, ISP_LOGDEBUG1, -+ "Setting ICB Node 0x%08x%08x Port 0x%08x%08x", -+ ((u_int32_t) (nwwn >> 32)), -+ ((u_int32_t) (nwwn & 0xffffffff)), -+ ((u_int32_t) (pwwn >> 32)), -+ ((u_int32_t) (pwwn & 0xffffffff))); -+ } else { -+ isp_prt(isp, ISP_LOGDEBUG1, "Not using any WWNs"); -+ icbp->icb_fwoptions &= ~(ICBOPT_BOTH_WWNS|ICBOPT_FULL_LOGIN); -+ } -+ icbp->icb_rqstqlen = RQUEST_QUEUE_LEN(isp); -+ icbp->icb_rsltqlen = RESULT_QUEUE_LEN(isp); -+ icbp->icb_rqstaddr[RQRSP_ADDR0015] = DMA_WD0(isp->isp_rquest_dma); -+ icbp->icb_rqstaddr[RQRSP_ADDR1631] = DMA_WD1(isp->isp_rquest_dma); -+ icbp->icb_rqstaddr[RQRSP_ADDR3247] = DMA_WD2(isp->isp_rquest_dma); -+ icbp->icb_rqstaddr[RQRSP_ADDR4863] = DMA_WD3(isp->isp_rquest_dma); -+ icbp->icb_respaddr[RQRSP_ADDR0015] = DMA_WD0(isp->isp_result_dma); -+ icbp->icb_respaddr[RQRSP_ADDR1631] = DMA_WD1(isp->isp_result_dma); -+ icbp->icb_respaddr[RQRSP_ADDR3247] = DMA_WD2(isp->isp_result_dma); -+ icbp->icb_respaddr[RQRSP_ADDR4863] = DMA_WD3(isp->isp_result_dma); -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "isp_fibre_init: fwopt 0x%x xfwopt 0x%x zfwopt 0x%x", -+ icbp->icb_fwoptions, icbp->icb_xfwoptions, icbp->icb_zfwoptions); -+ -+ FC_SCRATCH_ACQUIRE(isp); -+ isp_put_icb(isp, icbp, (isp_icb_t *)fcp->isp_scratch); -+ -+ /* -+ * Init the firmware -+ */ -+ mbs.param[0] = MBOX_INIT_FIRMWARE; -+ mbs.param[1] = 0; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ mbs.param[4] = 0; -+ mbs.param[5] = 0; -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ FC_SCRATCH_RELEASE(isp); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return; -+ } -+ isp->isp_reqidx = isp->isp_reqodx = 0; -+ isp->isp_residx = 0; -+ isp->isp_sendmarker = 1; -+ -+ /* -+ * Whatever happens, we're now committed to being here. -+ */ -+ isp->isp_state = ISP_INITSTATE; -+} -+ -+/* -+ * Fibre Channel Support- get the port database for the id. -+ * -+ * Locks are held before coming here. Return 0 if success, -+ * else failure. -+ */ -+ -+static int -+isp_getmap(struct ispsoftc *isp, fcpos_map_t *map) -+{ -+ fcparam *fcp = (fcparam *) isp->isp_param; -+ mbreg_t mbs; -+ -+ mbs.param[0] = MBOX_GET_FC_AL_POSITION_MAP; -+ mbs.param[1] = 0; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ /* -+ * Unneeded. For the 2100, except for initializing f/w, registers -+ * 4/5 have to not be written to. -+ * mbs.param[4] = 0; -+ * mbs.param[5] = 0; -+ * -+ */ -+ mbs.param[6] = 0; -+ mbs.param[7] = 0; -+ FC_SCRATCH_ACQUIRE(isp); -+ isp_mboxcmd(isp, &mbs, MBLOGALL & ~MBOX_COMMAND_PARAM_ERROR); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ MEMCPY(map, fcp->isp_scratch, sizeof (fcpos_map_t)); -+ map->fwmap = mbs.param[1] != 0; -+ FC_SCRATCH_RELEASE(isp); -+ return (0); -+ } -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+} -+ -+static void -+isp_mark_getpdb_all(struct ispsoftc *isp) -+{ -+ fcparam *fcp = (fcparam *) isp->isp_param; -+ int i; -+ for (i = 0; i < MAX_FC_TARG; i++) { -+ fcp->portdb[i].valid = fcp->portdb[i].fabric_dev = 0; -+ } -+} -+ -+static int -+isp_getpdb(struct ispsoftc *isp, int id, isp_pdb_t *pdbp) -+{ -+ fcparam *fcp = (fcparam *) isp->isp_param; -+ mbreg_t mbs; -+ -+ mbs.param[0] = MBOX_GET_PORT_DB; -+ mbs.param[1] = id << 8; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ /* -+ * Unneeded. For the 2100, except for initializing f/w, registers -+ * 4/5 have to not be written to. -+ * mbs.param[4] = 0; -+ * mbs.param[5] = 0; -+ * -+ */ -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ FC_SCRATCH_ACQUIRE(isp); -+ isp_mboxcmd(isp, &mbs, MBLOGALL & ~MBOX_COMMAND_PARAM_ERROR); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ isp_get_pdb(isp, (isp_pdb_t *)fcp->isp_scratch, pdbp); -+ FC_SCRATCH_RELEASE(isp); -+ return (0); -+ } -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+} -+ -+static u_int64_t -+isp_get_portname(struct ispsoftc *isp, int loopid, int nodename) -+{ -+ u_int64_t wwn = 0; -+ mbreg_t mbs; -+ -+ mbs.param[0] = MBOX_GET_PORT_NAME; -+ mbs.param[1] = loopid << 8; -+ if (nodename) -+ mbs.param[1] |= 1; -+ isp_mboxcmd(isp, &mbs, MBLOGALL & ~MBOX_COMMAND_PARAM_ERROR); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ wwn = -+ (((u_int64_t)(mbs.param[2] & 0xff)) << 56) | -+ (((u_int64_t)(mbs.param[2] >> 8)) << 48) | -+ (((u_int64_t)(mbs.param[3] & 0xff)) << 40) | -+ (((u_int64_t)(mbs.param[3] >> 8)) << 32) | -+ (((u_int64_t)(mbs.param[6] & 0xff)) << 24) | -+ (((u_int64_t)(mbs.param[6] >> 8)) << 16) | -+ (((u_int64_t)(mbs.param[7] & 0xff)) << 8) | -+ (((u_int64_t)(mbs.param[7] >> 8))); -+ } -+ return (wwn); -+} -+ -+/* -+ * Make sure we have good FC link and know our Loop ID. -+ */ -+ -+static int -+isp_fclink_test(struct ispsoftc *isp, int usdelay) -+{ -+ static char *toponames[] = { -+ "Private Loop", -+ "FL Port", -+ "N-Port to N-Port", -+ "F Port", -+ "F Port (no FLOGI_ACC response)" -+ }; -+ mbreg_t mbs; -+ int count, check_for_fabric; -+ u_int8_t lwfs; -+ fcparam *fcp; -+ struct lportdb *lp; -+ isp_pdb_t pdb; -+ -+ fcp = isp->isp_param; -+ -+ /* -+ * XXX: Here is where we would start a 'loop dead' timeout -+ */ -+ -+ /* -+ * Wait up to N microseconds for F/W to go to a ready state. -+ */ -+ lwfs = FW_CONFIG_WAIT; -+ count = 0; -+ while (count < usdelay) { -+ u_int64_t enano; -+ u_int32_t wrk; -+ NANOTIME_T hra, hrb; -+ -+ GET_NANOTIME(&hra); -+ isp_fw_state(isp); -+ if (lwfs != fcp->isp_fwstate) { -+ isp_prt(isp, ISP_LOGINFO, "Firmware State <%s->%s>", -+ isp2100_fw_statename((int)lwfs), -+ isp2100_fw_statename((int)fcp->isp_fwstate)); -+ lwfs = fcp->isp_fwstate; -+ } -+ if (fcp->isp_fwstate == FW_READY) { -+ break; -+ } -+ GET_NANOTIME(&hrb); -+ -+ /* -+ * Get the elapsed time in nanoseconds. -+ * Always guaranteed to be non-zero. -+ */ -+ enano = NANOTIME_SUB(&hrb, &hra); -+ -+ isp_prt(isp, ISP_LOGDEBUG1, -+ "usec%d: 0x%lx->0x%lx enano 0x%x%08x", -+ count, (long) GET_NANOSEC(&hra), (long) GET_NANOSEC(&hrb), -+ (u_int32_t)(enano >> 32), (u_int32_t)(enano & 0xffffffff)); -+ -+ /* -+ * If the elapsed time is less than 1 millisecond, -+ * delay a period of time up to that millisecond of -+ * waiting. -+ * -+ * This peculiar code is an attempt to try and avoid -+ * invoking u_int64_t math support functions for some -+ * platforms where linkage is a problem. -+ */ -+ if (enano < (1000 * 1000)) { -+ count += 1000; -+ enano = (1000 * 1000) - enano; -+ while (enano > (u_int64_t) 4000000000U) { -+ USEC_SLEEP(isp, 4000000); -+ enano -= (u_int64_t) 4000000000U; -+ } -+ wrk = enano; -+ wrk /= 1000; -+ USEC_SLEEP(isp, wrk); -+ } else { -+ while (enano > (u_int64_t) 4000000000U) { -+ count += 4000000; -+ enano -= (u_int64_t) 4000000000U; -+ } -+ wrk = enano; -+ count += (wrk / 1000); -+ } -+ } -+ -+ /* -+ * If we haven't gone to 'ready' state, return. -+ */ -+ if (fcp->isp_fwstate != FW_READY) { -+ return (-1); -+ } -+ -+ /* -+ * Get our Loop ID (if possible). We really need to have it. -+ */ -+ mbs.param[0] = MBOX_GET_LOOP_ID; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ return (-1); -+ } -+ fcp->isp_loopid = mbs.param[1]; -+ if (IS_2200(isp) || IS_23XX(isp)) { -+ int topo = (int) mbs.param[6]; -+ if (topo < TOPO_NL_PORT || topo > TOPO_PTP_STUB) -+ topo = TOPO_PTP_STUB; -+ fcp->isp_topo = topo; -+ } else { -+ fcp->isp_topo = TOPO_NL_PORT; -+ } -+ fcp->isp_portid = fcp->isp_alpa = mbs.param[2] & 0xff; -+ -+ /* -+ * Check to see if we're on a fabric by trying to see if we -+ * can talk to the fabric name server. This can be a bit -+ * tricky because if we're a 2100, we should check always -+ * (in case we're connected to a server doing aliasing). -+ */ -+ fcp->isp_onfabric = 0; -+ -+ if (IS_2100(isp)) { -+ /* -+ * Don't bother with fabric if we are using really old -+ * 2100 firmware. It's just not worth it. -+ */ -+ if (ISP_FW_NEWER_THAN(isp, 1, 15, 37)) { -+ check_for_fabric = 1; -+ } else { -+ check_for_fabric = 0; -+ } -+ } else if (fcp->isp_topo == TOPO_FL_PORT || -+ fcp->isp_topo == TOPO_F_PORT) { -+ check_for_fabric = 1; -+ } else -+ check_for_fabric = 0; -+ -+ if (check_for_fabric && isp_getpdb(isp, FL_PORT_ID, &pdb) == 0) { -+ int loopid = FL_PORT_ID; -+ if (IS_2100(isp)) { -+ fcp->isp_topo = TOPO_FL_PORT; -+ } -+ -+ if (BITS2WORD(pdb.pdb_portid_bits) == 0) { -+ /* -+ * Crock. -+ */ -+ fcp->isp_topo = TOPO_NL_PORT; -+ goto not_on_fabric; -+ } -+ fcp->isp_portid = mbs.param[2] | ((int) mbs.param[3] << 16); -+ -+ /* -+ * Save the Fabric controller's port database entry. -+ */ -+ lp = &fcp->portdb[loopid]; -+ lp->node_wwn = -+ (((u_int64_t)pdb.pdb_nodename[0]) << 56) | -+ (((u_int64_t)pdb.pdb_nodename[1]) << 48) | -+ (((u_int64_t)pdb.pdb_nodename[2]) << 40) | -+ (((u_int64_t)pdb.pdb_nodename[3]) << 32) | -+ (((u_int64_t)pdb.pdb_nodename[4]) << 24) | -+ (((u_int64_t)pdb.pdb_nodename[5]) << 16) | -+ (((u_int64_t)pdb.pdb_nodename[6]) << 8) | -+ (((u_int64_t)pdb.pdb_nodename[7])); -+ lp->port_wwn = -+ (((u_int64_t)pdb.pdb_portname[0]) << 56) | -+ (((u_int64_t)pdb.pdb_portname[1]) << 48) | -+ (((u_int64_t)pdb.pdb_portname[2]) << 40) | -+ (((u_int64_t)pdb.pdb_portname[3]) << 32) | -+ (((u_int64_t)pdb.pdb_portname[4]) << 24) | -+ (((u_int64_t)pdb.pdb_portname[5]) << 16) | -+ (((u_int64_t)pdb.pdb_portname[6]) << 8) | -+ (((u_int64_t)pdb.pdb_portname[7])); -+ lp->roles = -+ (pdb.pdb_prli_svc3 & SVC3_ROLE_MASK) >> SVC3_ROLE_SHIFT; -+ lp->portid = BITS2WORD(pdb.pdb_portid_bits); -+ lp->loopid = pdb.pdb_loopid; -+ lp->loggedin = lp->valid = 1; -+ fcp->isp_onfabric = 1; -+ (void) isp_async(isp, ISPASYNC_PROMENADE, &loopid); -+ isp_register_fc4_type(isp); -+ } else { -+not_on_fabric: -+ fcp->isp_onfabric = 0; -+ fcp->portdb[FL_PORT_ID].valid = 0; -+ } -+ -+ fcp->isp_gbspeed = 1; -+ if (IS_23XX(isp)) { -+ mbs.param[0] = MBOX_GET_SET_DATA_RATE; -+ mbs.param[1] = MBGSD_GET_RATE; -+ /* mbs.param[2] undefined if we're just getting rate */ -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ if (mbs.param[1] == MBGSD_TWOGB) { -+ isp_prt(isp, ISP_LOGINFO, "2Gb link speed/s"); -+ fcp->isp_gbspeed = 2; -+ } -+ } -+ } -+ -+ isp_prt(isp, ISP_LOGCONFIG, topology, fcp->isp_loopid, fcp->isp_alpa, -+ fcp->isp_portid, fcp->isp_loopstate, toponames[fcp->isp_topo]); -+ -+ /* -+ * Announce ourselves, too. This involves synthesizing an entry. -+ */ -+ if (fcp->isp_iid_set == 0) { -+ fcp->isp_iid_set = 1; -+ fcp->isp_iid = fcp->isp_loopid; -+ lp = &fcp->portdb[fcp->isp_iid]; -+ } else { -+ lp = &fcp->portdb[fcp->isp_iid]; -+ if (fcp->isp_portid != lp->portid || -+ fcp->isp_loopid != lp->loopid || -+ fcp->isp_nodewwn != ISP_NODEWWN(isp) || -+ fcp->isp_portwwn != ISP_PORTWWN(isp)) { -+ lp->valid = 0; -+ count = fcp->isp_iid; -+ (void) isp_async(isp, ISPASYNC_PROMENADE, &count); -+ } -+ } -+ lp->loopid = fcp->isp_loopid; -+ lp->portid = fcp->isp_portid; -+ lp->node_wwn = ISP_NODEWWN(isp); -+ lp->port_wwn = ISP_PORTWWN(isp); -+ switch (isp->isp_role) { -+ case ISP_ROLE_NONE: -+ lp->roles = 0; -+ break; -+ case ISP_ROLE_TARGET: -+ lp->roles = SVC3_TGT_ROLE >> SVC3_ROLE_SHIFT; -+ break; -+ case ISP_ROLE_INITIATOR: -+ lp->roles = SVC3_INI_ROLE >> SVC3_ROLE_SHIFT; -+ break; -+ case ISP_ROLE_BOTH: -+ lp->roles = (SVC3_INI_ROLE|SVC3_TGT_ROLE) >> SVC3_ROLE_SHIFT; -+ break; -+ } -+ lp->loggedin = lp->valid = 1; -+ count = fcp->isp_iid; -+ (void) isp_async(isp, ISPASYNC_PROMENADE, &count); -+ return (0); -+} -+ -+static char * -+isp2100_fw_statename(int state) -+{ -+ switch(state) { -+ case FW_CONFIG_WAIT: return "Config Wait"; -+ case FW_WAIT_AL_PA: return "Waiting for AL_PA"; -+ case FW_WAIT_LOGIN: return "Wait Login"; -+ case FW_READY: return "Ready"; -+ case FW_LOSS_OF_SYNC: return "Loss Of Sync"; -+ case FW_ERROR: return "Error"; -+ case FW_REINIT: return "Re-Init"; -+ case FW_NON_PART: return "Nonparticipating"; -+ default: return "?????"; -+ } -+} -+ -+/* -+ * Synchronize our soft copy of the port database with what the f/w thinks -+ * (with a view toward possibly for a specific target....) -+ */ -+ -+static int -+isp_pdb_sync(struct ispsoftc *isp) -+{ -+ struct lportdb *lp; -+ fcparam *fcp = isp->isp_param; -+ isp_pdb_t pdb; -+ int loopid, base, lim; -+ -+ /* -+ * Make sure we're okay for doing this right now. -+ */ -+ if (fcp->isp_loopstate != LOOP_PDB_RCVD && -+ fcp->isp_loopstate != LOOP_FSCAN_DONE && -+ fcp->isp_loopstate != LOOP_LSCAN_DONE) { -+ return (-1); -+ } -+ -+ if (fcp->isp_topo == TOPO_FL_PORT || fcp->isp_topo == TOPO_NL_PORT || -+ fcp->isp_topo == TOPO_N_PORT) { -+ if (fcp->isp_loopstate < LOOP_LSCAN_DONE) { -+ if (isp_scan_loop(isp) != 0) { -+ return (-1); -+ } -+ } -+ } -+ fcp->isp_loopstate = LOOP_SYNCING_PDB; -+ -+ /* -+ * If we get this far, we've settled our differences with the f/w -+ * (for local loop device) and we can say that the loop state is ready. -+ */ -+ -+ if (fcp->isp_topo == TOPO_NL_PORT) { -+ fcp->loop_seen_once = 1; -+ fcp->isp_loopstate = LOOP_READY; -+ return (0); -+ } -+ -+ /* -+ * Find all Fabric Entities that didn't make it from one scan to the -+ * next and let the world know they went away. Scan the whole database. -+ */ -+ for (lp = &fcp->portdb[0]; lp < &fcp->portdb[MAX_FC_TARG]; lp++) { -+ if (lp->was_fabric_dev && lp->fabric_dev == 0) { -+ loopid = lp - fcp->portdb; -+ lp->valid = 0; /* should already be set */ -+ (void) isp_async(isp, ISPASYNC_PROMENADE, &loopid); -+ MEMZERO((void *) lp, sizeof (*lp)); -+ continue; -+ } -+ lp->was_fabric_dev = lp->fabric_dev; -+ } -+ -+ if (fcp->isp_topo == TOPO_FL_PORT) -+ base = FC_SNS_ID+1; -+ else -+ base = 0; -+ -+ if (fcp->isp_topo == TOPO_N_PORT) -+ lim = 1; -+ else -+ lim = MAX_FC_TARG; -+ -+ /* -+ * Now log in any fabric devices that the outer layer has -+ * left for us to see. This seems the most sane policy -+ * for the moment. -+ */ -+ for (lp = &fcp->portdb[base]; lp < &fcp->portdb[lim]; lp++) { -+ u_int32_t portid; -+ mbreg_t mbs; -+ -+ loopid = lp - fcp->portdb; -+ if (loopid >= FL_PORT_ID && loopid <= FC_SNS_ID) { -+ continue; -+ } -+ -+ /* -+ * Anything here? -+ */ -+ if (lp->port_wwn == 0) { -+ continue; -+ } -+ -+ /* -+ * Don't try to log into yourself. -+ */ -+ if ((portid = lp->portid) == fcp->isp_portid) { -+ continue; -+ } -+ -+ -+ /* -+ * If we'd been logged in- see if we still are and we haven't -+ * changed. If so, no need to log ourselves out, etc.. -+ * -+ * Unfortunately, our charming Qlogic f/w has decided to -+ * return a valid port database entry for a fabric device -+ * that has, in fact, gone away. And it hangs trying to -+ * log it out. -+ */ -+ if (lp->loggedin && lp->force_logout == 0 && -+ isp_getpdb(isp, lp->loopid, &pdb) == 0) { -+ int nrole; -+ u_int64_t nwwnn, nwwpn; -+ nwwnn = -+ (((u_int64_t)pdb.pdb_nodename[0]) << 56) | -+ (((u_int64_t)pdb.pdb_nodename[1]) << 48) | -+ (((u_int64_t)pdb.pdb_nodename[2]) << 40) | -+ (((u_int64_t)pdb.pdb_nodename[3]) << 32) | -+ (((u_int64_t)pdb.pdb_nodename[4]) << 24) | -+ (((u_int64_t)pdb.pdb_nodename[5]) << 16) | -+ (((u_int64_t)pdb.pdb_nodename[6]) << 8) | -+ (((u_int64_t)pdb.pdb_nodename[7])); -+ nwwpn = -+ (((u_int64_t)pdb.pdb_portname[0]) << 56) | -+ (((u_int64_t)pdb.pdb_portname[1]) << 48) | -+ (((u_int64_t)pdb.pdb_portname[2]) << 40) | -+ (((u_int64_t)pdb.pdb_portname[3]) << 32) | -+ (((u_int64_t)pdb.pdb_portname[4]) << 24) | -+ (((u_int64_t)pdb.pdb_portname[5]) << 16) | -+ (((u_int64_t)pdb.pdb_portname[6]) << 8) | -+ (((u_int64_t)pdb.pdb_portname[7])); -+ nrole = (pdb.pdb_prli_svc3 & SVC3_ROLE_MASK) >> -+ SVC3_ROLE_SHIFT; -+ if (pdb.pdb_loopid == lp->loopid && lp->portid == -+ (u_int32_t) BITS2WORD(pdb.pdb_portid_bits) && -+ nwwnn == lp->node_wwn && nwwpn == lp->port_wwn && -+ lp->roles == nrole && lp->force_logout == 0) { -+ lp->loggedin = lp->valid = 1; -+ isp_prt(isp, ISP_LOGCONFIG, lretained, -+ (int) (lp - fcp->portdb), -+ (int) lp->loopid, lp->portid); -+ continue; -+ } -+ } -+ -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate != LOOP_SYNCING_PDB) { -+ return (-1); -+ } -+ -+ /* -+ * Force a logout if we were logged in. -+ */ -+ if (lp->loggedin) { -+ if (lp->force_logout || -+ isp_getpdb(isp, lp->loopid, &pdb) == 0) { -+ mbs.param[0] = MBOX_FABRIC_LOGOUT; -+ mbs.param[1] = lp->loopid << 8; -+ mbs.param[2] = 0; -+ mbs.param[3] = 0; -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ isp_prt(isp, ISP_LOGINFO, plogout, -+ (int) (lp - fcp->portdb), lp->loopid, -+ lp->portid); -+ } -+ lp->force_logout = lp->loggedin = 0; -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate != LOOP_SYNCING_PDB) { -+ return (-1); -+ } -+ } -+ -+ /* -+ * And log in.... -+ */ -+ loopid = lp - fcp->portdb; -+ lp->loopid = FL_PORT_ID; -+ do { -+ mbs.param[0] = MBOX_FABRIC_LOGIN; -+ mbs.param[1] = loopid << 8; -+ mbs.param[2] = portid >> 16; -+ mbs.param[3] = portid & 0xffff; -+ isp_mboxcmd(isp, &mbs, MBLOGALL & ~(MBOX_LOOP_ID_USED | -+ MBOX_PORT_ID_USED | MBOX_COMMAND_ERROR)); -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate != LOOP_SYNCING_PDB) { -+ return (-1); -+ } -+ switch (mbs.param[0]) { -+ case MBOX_LOOP_ID_USED: -+ /* -+ * Try the next available loop id. -+ */ -+ loopid++; -+ break; -+ case MBOX_PORT_ID_USED: -+ /* -+ * This port is already logged in. -+ * Snaffle the loop id it's using if it's -+ * nonzero, otherwise we're hosed. -+ */ -+ if (mbs.param[1] != 0) { -+ loopid = mbs.param[1]; -+ isp_prt(isp, ISP_LOGINFO, retained, -+ loopid, (int) (lp - fcp->portdb), -+ lp->portid); -+ } else { -+ loopid = MAX_FC_TARG; -+ break; -+ } -+ /* FALLTHROUGH */ -+ case MBOX_COMMAND_COMPLETE: -+ lp->loggedin = 1; -+ lp->loopid = loopid; -+ break; -+ case MBOX_COMMAND_ERROR: -+ isp_prt(isp, ISP_LOGINFO, plogierr, -+ portid, mbs.param[1]); -+ /* FALLTHROUGH */ -+ case MBOX_ALL_IDS_USED: /* We're outta IDs */ -+ default: -+ loopid = MAX_FC_TARG; -+ break; -+ } -+ } while (lp->loopid == FL_PORT_ID && loopid < MAX_FC_TARG); -+ -+ /* -+ * If we get here and we haven't set a Loop ID, -+ * we failed to log into this device. -+ */ -+ -+ if (lp->loopid == FL_PORT_ID) { -+ lp->loopid = 0; -+ continue; -+ } -+ -+ /* -+ * Make sure we can get the approriate port information. -+ */ -+ if (isp_getpdb(isp, lp->loopid, &pdb) != 0) { -+ isp_prt(isp, ISP_LOGWARN, nopdb, lp->portid); -+ goto dump_em; -+ } -+ -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate != LOOP_SYNCING_PDB) { -+ return (-1); -+ } -+ -+ if (pdb.pdb_loopid != lp->loopid) { -+ isp_prt(isp, ISP_LOGWARN, pdbmfail1, -+ lp->portid, pdb.pdb_loopid); -+ goto dump_em; -+ } -+ -+ if (lp->portid != (u_int32_t) BITS2WORD(pdb.pdb_portid_bits)) { -+ isp_prt(isp, ISP_LOGWARN, pdbmfail2, -+ lp->portid, BITS2WORD(pdb.pdb_portid_bits)); -+ goto dump_em; -+ } -+ -+ lp->roles = -+ (pdb.pdb_prli_svc3 & SVC3_ROLE_MASK) >> SVC3_ROLE_SHIFT; -+ lp->node_wwn = -+ (((u_int64_t)pdb.pdb_nodename[0]) << 56) | -+ (((u_int64_t)pdb.pdb_nodename[1]) << 48) | -+ (((u_int64_t)pdb.pdb_nodename[2]) << 40) | -+ (((u_int64_t)pdb.pdb_nodename[3]) << 32) | -+ (((u_int64_t)pdb.pdb_nodename[4]) << 24) | -+ (((u_int64_t)pdb.pdb_nodename[5]) << 16) | -+ (((u_int64_t)pdb.pdb_nodename[6]) << 8) | -+ (((u_int64_t)pdb.pdb_nodename[7])); -+ lp->port_wwn = -+ (((u_int64_t)pdb.pdb_portname[0]) << 56) | -+ (((u_int64_t)pdb.pdb_portname[1]) << 48) | -+ (((u_int64_t)pdb.pdb_portname[2]) << 40) | -+ (((u_int64_t)pdb.pdb_portname[3]) << 32) | -+ (((u_int64_t)pdb.pdb_portname[4]) << 24) | -+ (((u_int64_t)pdb.pdb_portname[5]) << 16) | -+ (((u_int64_t)pdb.pdb_portname[6]) << 8) | -+ (((u_int64_t)pdb.pdb_portname[7])); -+ /* -+ * Check to make sure this all makes sense. -+ */ -+ if (lp->node_wwn && lp->port_wwn) { -+ lp->valid = 1; -+ loopid = lp - fcp->portdb; -+ (void) isp_async(isp, ISPASYNC_PROMENADE, &loopid); -+ continue; -+ } -+dump_em: -+ lp->valid = 0; -+ isp_prt(isp, ISP_LOGINFO, -+ ldumped, loopid, lp->loopid, lp->portid); -+ mbs.param[0] = MBOX_FABRIC_LOGOUT; -+ mbs.param[1] = lp->loopid << 8; -+ mbs.param[2] = 0; -+ mbs.param[3] = 0; -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate != LOOP_SYNCING_PDB) { -+ return (-1); -+ } -+ } -+ /* -+ * If we get here, we've for sure seen not only a valid loop -+ * but know what is or isn't on it, so mark this for usage -+ * in isp_start. -+ */ -+ fcp->loop_seen_once = 1; -+ fcp->isp_loopstate = LOOP_READY; -+ return (0); -+} -+ -+static int -+isp_scan_loop(struct ispsoftc *isp) -+{ -+ struct lportdb *lp; -+ fcparam *fcp = isp->isp_param; -+ isp_pdb_t pdb; -+ int loopid, lim, hival; -+ -+ switch (fcp->isp_topo) { -+ case TOPO_NL_PORT: -+ hival = FL_PORT_ID; -+ break; -+ case TOPO_N_PORT: -+ hival = 2; -+ break; -+ case TOPO_FL_PORT: -+ hival = FC_PORT_ID; -+ break; -+ default: -+ fcp->isp_loopstate = LOOP_LSCAN_DONE; -+ return (0); -+ } -+ fcp->isp_loopstate = LOOP_SCANNING_LOOP; -+ -+ /* -+ * make sure the temp port database is clean... -+ */ -+ MEMZERO((void *)fcp->tport, sizeof (fcp->tport)); -+ -+ /* -+ * Run through the local loop ports and get port database info -+ * for each loop ID. -+ * -+ * There's a somewhat unexplained situation where the f/w passes back -+ * the wrong database entity- if that happens, just restart (up to -+ * FL_PORT_ID times). -+ */ -+ for (lim = loopid = 0; loopid < hival; loopid++) { -+ lp = &fcp->tport[loopid]; -+ -+ /* -+ * Don't even try for ourselves... -+ */ -+ if (loopid == fcp->isp_loopid) -+ continue; -+ -+ lp->node_wwn = isp_get_portname(isp, loopid, 1); -+ if (fcp->isp_loopstate < LOOP_SCANNING_LOOP) -+ return (-1); -+ if (lp->node_wwn == 0) -+ continue; -+ lp->port_wwn = isp_get_portname(isp, loopid, 0); -+ if (fcp->isp_loopstate < LOOP_SCANNING_LOOP) -+ return (-1); -+ if (lp->port_wwn == 0) { -+ lp->node_wwn = 0; -+ continue; -+ } -+ -+ /* -+ * Get an entry.... -+ */ -+ if (isp_getpdb(isp, loopid, &pdb) != 0) { -+ if (fcp->isp_loopstate < LOOP_SCANNING_LOOP) -+ return (-1); -+ continue; -+ } -+ if (fcp->isp_loopstate < LOOP_SCANNING_LOOP) { -+ return (-1); -+ } -+ -+ /* -+ * If the returned database element doesn't match what we -+ * asked for, restart the process entirely (up to a point...). -+ */ -+ if (pdb.pdb_loopid != loopid) { -+ loopid = 0; -+ if (lim++ < hival) { -+ continue; -+ } -+ isp_prt(isp, ISP_LOGWARN, -+ "giving up on synchronizing the port database"); -+ return (-1); -+ } -+ -+ /* -+ * Save the pertinent info locally. -+ */ -+ lp->node_wwn = -+ (((u_int64_t)pdb.pdb_nodename[0]) << 56) | -+ (((u_int64_t)pdb.pdb_nodename[1]) << 48) | -+ (((u_int64_t)pdb.pdb_nodename[2]) << 40) | -+ (((u_int64_t)pdb.pdb_nodename[3]) << 32) | -+ (((u_int64_t)pdb.pdb_nodename[4]) << 24) | -+ (((u_int64_t)pdb.pdb_nodename[5]) << 16) | -+ (((u_int64_t)pdb.pdb_nodename[6]) << 8) | -+ (((u_int64_t)pdb.pdb_nodename[7])); -+ lp->port_wwn = -+ (((u_int64_t)pdb.pdb_portname[0]) << 56) | -+ (((u_int64_t)pdb.pdb_portname[1]) << 48) | -+ (((u_int64_t)pdb.pdb_portname[2]) << 40) | -+ (((u_int64_t)pdb.pdb_portname[3]) << 32) | -+ (((u_int64_t)pdb.pdb_portname[4]) << 24) | -+ (((u_int64_t)pdb.pdb_portname[5]) << 16) | -+ (((u_int64_t)pdb.pdb_portname[6]) << 8) | -+ (((u_int64_t)pdb.pdb_portname[7])); -+ lp->roles = -+ (pdb.pdb_prli_svc3 & SVC3_ROLE_MASK) >> SVC3_ROLE_SHIFT; -+ lp->portid = BITS2WORD(pdb.pdb_portid_bits); -+ lp->loopid = pdb.pdb_loopid; -+ } -+ -+ /* -+ * Mark all of the permanent local loop database entries as invalid -+ * (except our own entry). -+ */ -+ for (loopid = 0; loopid < hival; loopid++) { -+ if (loopid == fcp->isp_iid) { -+ fcp->portdb[loopid].valid = 1; -+ fcp->portdb[loopid].loopid = fcp->isp_loopid; -+ continue; -+ } -+ fcp->portdb[loopid].valid = 0; -+ } -+ -+ /* -+ * Now merge our local copy of the port database into our saved copy. -+ * Notify the outer layers of new devices arriving. -+ */ -+ for (loopid = 0; loopid < hival; loopid++) { -+ int i; -+ -+ /* -+ * If we don't have a non-zero Port WWN, we're not here. -+ */ -+ if (fcp->tport[loopid].port_wwn == 0) { -+ continue; -+ } -+ -+ /* -+ * Skip ourselves. -+ */ -+ if (loopid == fcp->isp_iid) { -+ continue; -+ } -+ -+ /* -+ * For the purposes of deciding whether this is the -+ * 'same' device or not, we only search for an identical -+ * Port WWN. Node WWNs may or may not be the same as -+ * the Port WWN, and there may be multiple different -+ * Port WWNs with the same Node WWN. It would be chaos -+ * to have multiple identical Port WWNs, so we don't -+ * allow that. -+ */ -+ -+ for (i = 0; i < hival; i++) { -+ int j; -+ if (fcp->portdb[i].port_wwn == 0) -+ continue; -+ if (fcp->portdb[i].port_wwn != -+ fcp->tport[loopid].port_wwn) -+ continue; -+ /* -+ * We found this WWN elsewhere- it's changed -+ * loopids then. We don't change it's actual -+ * position in our cached port database- we -+ * just change the actual loop ID we'd use. -+ */ -+ if (fcp->portdb[i].loopid != loopid) { -+ isp_prt(isp, ISP_LOGINFO, portshift, i, -+ fcp->portdb[i].loopid, -+ fcp->portdb[i].portid, loopid, -+ fcp->tport[loopid].portid); -+ } -+ fcp->portdb[i].portid = fcp->tport[loopid].portid; -+ fcp->portdb[i].loopid = loopid; -+ fcp->portdb[i].valid = 1; -+ fcp->portdb[i].roles = fcp->tport[loopid].roles; -+ -+ /* -+ * Now make sure this Port WWN doesn't exist elsewhere -+ * in the port database. -+ */ -+ for (j = i+1; j < hival; j++) { -+ if (fcp->portdb[i].port_wwn != -+ fcp->portdb[j].port_wwn) { -+ continue; -+ } -+ isp_prt(isp, ISP_LOGWARN, portdup, j, i); -+ /* -+ * Invalidate the 'old' *and* 'new' ones. -+ * This is really harsh and not quite right, -+ * but if this happens, we really don't know -+ * who is what at this point. -+ */ -+ fcp->portdb[i].valid = 0; -+ fcp->portdb[j].valid = 0; -+ } -+ break; -+ } -+ -+ /* -+ * If we didn't traverse the entire port database, -+ * then we found (and remapped) an existing entry. -+ * No need to notify anyone- go for the next one. -+ */ -+ if (i < hival) { -+ isp_prt(isp, ISP_LOGINFO, retained, -+ fcp->portdb[i].loopid, i, fcp->portdb[i].portid); -+ continue; -+ } -+ -+ /* -+ * We've not found this Port WWN anywhere. It's a new entry. -+ * See if we can leave it where it is (with target == loopid). -+ */ -+ if (fcp->portdb[loopid].port_wwn != 0) { -+ for (lim = 0; lim < hival; lim++) { -+ if (fcp->portdb[lim].port_wwn == 0) -+ break; -+ } -+ /* "Cannot Happen" */ -+ if (lim == hival) { -+ isp_prt(isp, ISP_LOGWARN, "Remap Overflow"); -+ continue; -+ } -+ i = lim; -+ } else { -+ i = loopid; -+ } -+ -+ /* -+ * NB: The actual loopid we use here is loopid- we may -+ * in fact be at a completely different index (target). -+ */ -+ fcp->portdb[i].loopid = loopid; -+ fcp->portdb[i].port_wwn = fcp->tport[loopid].port_wwn; -+ fcp->portdb[i].node_wwn = fcp->tport[loopid].node_wwn; -+ fcp->portdb[i].roles = fcp->tport[loopid].roles; -+ fcp->portdb[i].portid = fcp->tport[loopid].portid; -+ fcp->portdb[i].valid = 1; -+ -+ /* -+ * Tell the outside world we've arrived. -+ */ -+ (void) isp_async(isp, ISPASYNC_PROMENADE, &i); -+ } -+ -+ /* -+ * Now find all previously used targets that are now invalid and -+ * notify the outer layers that they're gone. -+ */ -+ for (lp = &fcp->portdb[0]; lp < &fcp->portdb[hival]; lp++) { -+ if (lp->valid || lp->port_wwn == 0) { -+ continue; -+ } -+ -+ /* -+ * Tell the outside world we've gone -+ * away and erase our pdb entry. -+ * -+ */ -+ loopid = lp - fcp->portdb; -+ (void) isp_async(isp, ISPASYNC_PROMENADE, &loopid); -+ MEMZERO((void *) lp, sizeof (*lp)); -+ } -+ fcp->isp_loopstate = LOOP_LSCAN_DONE; -+ return (0); -+} -+ -+ -+static int -+isp_fabric_mbox_cmd(struct ispsoftc *isp, mbreg_t *mbp) -+{ -+ isp_mboxcmd(isp, mbp, MBLOGNONE); -+ if (mbp->param[0] != MBOX_COMMAND_COMPLETE) { -+ if (FCPARAM(isp)->isp_loopstate == LOOP_SCANNING_FABRIC) { -+ FCPARAM(isp)->isp_loopstate = LOOP_PDB_RCVD; -+ } -+ if (mbp->param[0] == MBOX_COMMAND_ERROR) { -+ char tbuf[16]; -+ char *m; -+ switch (mbp->param[1]) { -+ case 1: -+ m = "No Loop"; -+ break; -+ case 2: -+ m = "Failed to allocate IOCB buffer"; -+ break; -+ case 3: -+ m = "Failed to allocate XCB buffer"; -+ break; -+ case 4: -+ m = "timeout or transmit failed"; -+ break; -+ case 5: -+ m = "no fabric loop"; -+ break; -+ case 6: -+ m = "remote device not a target"; -+ break; -+ default: -+ SNPRINTF(tbuf, sizeof tbuf, "%x", -+ mbp->param[1]); -+ m = tbuf; -+ break; -+ } -+ isp_prt(isp, ISP_LOGERR, "SNS Failed- %s", m); -+ } -+ return (-1); -+ } -+ -+ if (FCPARAM(isp)->isp_fwstate != FW_READY || -+ FCPARAM(isp)->isp_loopstate < LOOP_SCANNING_FABRIC) { -+ return (-1); -+ } -+ return(0); -+} -+ -+#ifdef ISP_USE_GA_NXT -+static int -+isp_scan_fabric(struct ispsoftc *isp, int ftype) -+{ -+ fcparam *fcp = isp->isp_param; -+ u_int32_t portid, first_portid, last_portid; -+ int hicap, last_port_same; -+ -+ if (fcp->isp_onfabric == 0) { -+ fcp->isp_loopstate = LOOP_FSCAN_DONE; -+ return (0); -+ } -+ -+ FC_SCRATCH_ACQUIRE(isp); -+ -+ /* -+ * Since Port IDs are 24 bits, we can check against having seen -+ * anything yet with this value. -+ */ -+ last_port_same = 0; -+ last_portid = 0xffffffff; /* not a port */ -+ first_portid = portid = fcp->isp_portid; -+ fcp->isp_loopstate = LOOP_SCANNING_FABRIC; -+ -+ for (hicap = 0; hicap < GA_NXT_MAX; hicap++) { -+ mbreg_t mbs; -+ sns_screq_t *rq; -+ sns_ga_nxt_rsp_t *rs0, *rs1; -+ struct lportdb lcl; -+ u_int8_t sc[SNS_GA_NXT_RESP_SIZE]; -+ -+ rq = (sns_screq_t *)sc; -+ MEMZERO((void *) rq, SNS_GA_NXT_REQ_SIZE); -+ rq->snscb_rblen = SNS_GA_NXT_RESP_SIZE >> 1; -+ rq->snscb_addr[RQRSP_ADDR0015] = DMA_WD0(fcp->isp_scdma+0x100); -+ rq->snscb_addr[RQRSP_ADDR1631] = DMA_WD1(fcp->isp_scdma+0x100); -+ rq->snscb_addr[RQRSP_ADDR3247] = DMA_WD2(fcp->isp_scdma+0x100); -+ rq->snscb_addr[RQRSP_ADDR4863] = DMA_WD3(fcp->isp_scdma+0x100); -+ rq->snscb_sblen = 6; -+ rq->snscb_data[0] = SNS_GA_NXT; -+ rq->snscb_data[4] = portid & 0xffff; -+ rq->snscb_data[5] = (portid >> 16) & 0xff; -+ isp_put_sns_request(isp, rq, (sns_screq_t *) fcp->isp_scratch); -+ MEMORYBARRIER(isp, SYNC_SFORDEV, 0, SNS_GA_NXT_REQ_SIZE); -+ mbs.param[0] = MBOX_SEND_SNS; -+ mbs.param[1] = SNS_GA_NXT_REQ_SIZE >> 1; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ /* -+ * Leave 4 and 5 alone -+ */ -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ if (isp_fabric_mbox_cmd(isp, &mbs)) { -+ if (fcp->isp_loopstate >= LOOP_SCANNING_FABRIC) { -+ fcp->isp_loopstate = LOOP_PDB_RCVD; -+ } -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ MEMORYBARRIER(isp, SYNC_SFORCPU, 0x100, SNS_GA_NXT_RESP_SIZE); -+ rs1 = (sns_ga_nxt_rsp_t *) sc; -+ rs0 = (sns_ga_nxt_rsp_t *) ((u_int8_t *)fcp->isp_scratch+0x100); -+ isp_get_ga_nxt_response(isp, rs0, rs1); -+ if (rs1->snscb_cthdr.ct_response != FS_ACC) { -+ int level; -+ if (rs1->snscb_cthdr.ct_reason == 9 && -+ rs1->snscb_cthdr.ct_explanation == 7) -+ level = ISP_LOGDEBUG0; -+ else -+ level = ISP_LOGWARN; -+ isp_prt(isp, level, swrej, "GA_NXT", -+ rs1->snscb_cthdr.ct_reason, -+ rs1->snscb_cthdr.ct_explanation, portid); -+ FC_SCRATCH_RELEASE(isp); -+ fcp->isp_loopstate = LOOP_FSCAN_DONE; -+ return (0); -+ } -+ portid = -+ (((u_int32_t) rs1->snscb_port_id[0]) << 16) | -+ (((u_int32_t) rs1->snscb_port_id[1]) << 8) | -+ (((u_int32_t) rs1->snscb_port_id[2])); -+ -+ /* -+ * XXX: We should check to make sure that this entry -+ * XXX: supports the type(s) we are interested in. -+ */ -+ /* -+ * Okay, we now have information about a fabric object. -+ * If it is the type we're interested in, tell the outer layers -+ * about it. The outer layer needs to know: Port ID, WWNN, -+ * WWPN, FC4 type, and port type. -+ * -+ * The lportdb structure is adequate for this. -+ */ -+ MEMZERO(&lcl, sizeof (lcl)); -+ lcl.port_type = rs1->snscb_port_type; -+ lcl.fc4_type = ftype; -+ lcl.portid = portid; -+ lcl.node_wwn = -+ (((u_int64_t)rs1->snscb_nodename[0]) << 56) | -+ (((u_int64_t)rs1->snscb_nodename[1]) << 48) | -+ (((u_int64_t)rs1->snscb_nodename[2]) << 40) | -+ (((u_int64_t)rs1->snscb_nodename[3]) << 32) | -+ (((u_int64_t)rs1->snscb_nodename[4]) << 24) | -+ (((u_int64_t)rs1->snscb_nodename[5]) << 16) | -+ (((u_int64_t)rs1->snscb_nodename[6]) << 8) | -+ (((u_int64_t)rs1->snscb_nodename[7])); -+ lcl.port_wwn = -+ (((u_int64_t)rs1->snscb_portname[0]) << 56) | -+ (((u_int64_t)rs1->snscb_portname[1]) << 48) | -+ (((u_int64_t)rs1->snscb_portname[2]) << 40) | -+ (((u_int64_t)rs1->snscb_portname[3]) << 32) | -+ (((u_int64_t)rs1->snscb_portname[4]) << 24) | -+ (((u_int64_t)rs1->snscb_portname[5]) << 16) | -+ (((u_int64_t)rs1->snscb_portname[6]) << 8) | -+ (((u_int64_t)rs1->snscb_portname[7])); -+ -+ /* -+ * Does this fabric object support the type we want? -+ * If not, skip it. -+ */ -+ if (rs1->snscb_fc4_types[ftype >> 5] & (1 << (ftype & 0x1f))) { -+ if (first_portid == portid) { -+ lcl.last_fabric_dev = 1; -+ } else { -+ lcl.last_fabric_dev = 0; -+ } -+ (void) isp_async(isp, ISPASYNC_FABRIC_DEV, &lcl); -+ } else { -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "PortID 0x%x doesn't support FC4 type 0x%x", -+ portid, ftype); -+ } -+ if (first_portid == portid) { -+ fcp->isp_loopstate = LOOP_FSCAN_DONE; -+ FC_SCRATCH_RELEASE(isp); -+ return (0); -+ } -+ if (portid == last_portid) { -+ if (last_port_same++ > 20) { -+ isp_prt(isp, ISP_LOGWARN, -+ "tangled fabric database detected"); -+ break; -+ } -+ } else { -+ last_port_same = 0 ; -+ last_portid = portid; -+ } -+ } -+ FC_SCRATCH_RELEASE(isp); -+ if (hicap >= GA_NXT_MAX) { -+ isp_prt(isp, ISP_LOGWARN, "fabric too big (> %d)", GA_NXT_MAX); -+ } -+ fcp->isp_loopstate = LOOP_FSCAN_DONE; -+ return (0); -+} -+#else -+#define GIDLEN ((ISP2100_SCRLEN >> 1) + 16) -+#define NGENT ((GIDLEN - 16) >> 2) -+ -+#define IGPOFF (ISP2100_SCRLEN - GIDLEN) -+#define GXOFF (256) -+ -+static int -+isp_scan_fabric(struct ispsoftc *isp, int ftype) -+{ -+ fcparam *fcp = FCPARAM(isp); -+ mbreg_t mbs; -+ int i; -+ sns_gid_ft_req_t *rq; -+ sns_gid_ft_rsp_t *rs0, *rs1; -+ -+ if (fcp->isp_onfabric == 0) { -+ fcp->isp_loopstate = LOOP_FSCAN_DONE; -+ return (0); -+ } -+ -+ FC_SCRATCH_ACQUIRE(isp); -+ fcp->isp_loopstate = LOOP_SCANNING_FABRIC; -+ -+ rq = (sns_gid_ft_req_t *)fcp->tport; -+ MEMZERO((void *) rq, SNS_GID_FT_REQ_SIZE); -+ rq->snscb_rblen = GIDLEN >> 1; -+ rq->snscb_addr[RQRSP_ADDR0015] = DMA_WD0(fcp->isp_scdma+IGPOFF); -+ rq->snscb_addr[RQRSP_ADDR1631] = DMA_WD1(fcp->isp_scdma+IGPOFF); -+ rq->snscb_addr[RQRSP_ADDR3247] = DMA_WD2(fcp->isp_scdma+IGPOFF); -+ rq->snscb_addr[RQRSP_ADDR4863] = DMA_WD3(fcp->isp_scdma+IGPOFF); -+ rq->snscb_sblen = 6; -+ rq->snscb_cmd = SNS_GID_FT; -+ rq->snscb_mword_div_2 = NGENT; -+ rq->snscb_fc4_type = ftype; -+ isp_put_gid_ft_request(isp, rq, (sns_gid_ft_req_t *) fcp->isp_scratch); -+ MEMORYBARRIER(isp, SYNC_SFORDEV, 0, SNS_GID_FT_REQ_SIZE); -+ mbs.param[0] = MBOX_SEND_SNS; -+ mbs.param[1] = SNS_GID_FT_REQ_SIZE >> 1; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ -+ /* -+ * Leave 4 and 5 alone -+ */ -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ if (isp_fabric_mbox_cmd(isp, &mbs)) { -+ if (fcp->isp_loopstate >= LOOP_SCANNING_FABRIC) { -+ fcp->isp_loopstate = LOOP_PDB_RCVD; -+ } -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ if (fcp->isp_loopstate != LOOP_SCANNING_FABRIC) { -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ MEMORYBARRIER(isp, SYNC_SFORCPU, IGPOFF, GIDLEN); -+ rs1 = (sns_gid_ft_rsp_t *) fcp->tport; -+ rs0 = (sns_gid_ft_rsp_t *) ((u_int8_t *)fcp->isp_scratch+IGPOFF); -+ isp_get_gid_ft_response(isp, rs0, rs1, NGENT); -+ if (rs1->snscb_cthdr.ct_response != FS_ACC) { -+ int level; -+ if (rs1->snscb_cthdr.ct_reason == 9 && -+ rs1->snscb_cthdr.ct_explanation == 7) -+ level = ISP_LOGDEBUG0; -+ else -+ level = ISP_LOGWARN; -+ isp_prt(isp, level, swrej, "GID_FT", -+ rs1->snscb_cthdr.ct_reason, -+ rs1->snscb_cthdr.ct_explanation, 0); -+ FC_SCRATCH_RELEASE(isp); -+ fcp->isp_loopstate = LOOP_FSCAN_DONE; -+ return (0); -+ } -+ -+ /* -+ * Okay, we now have a list of Port IDs for this class of device. -+ * Go through the list and for each one get the WWPN/WWNN for it -+ * and tell the outer layers about it. The outer layer needs to -+ * know: Port ID, WWNN, WWPN, FC4 type, and (possibly) port type. -+ * -+ * The lportdb structure is adequate for this. -+ */ -+ i = -1; -+ do { -+ sns_gxn_id_req_t grqbuf, *gq = &grqbuf; -+ sns_gxn_id_rsp_t *gs0, grsbuf, *gs1 = &grsbuf; -+ struct lportdb lcl; -+#if 0 -+ sns_gff_id_rsp_t *fs0, ffsbuf, *fs1 = &ffsbuf; -+#endif -+ -+ i++; -+ MEMZERO(&lcl, sizeof (lcl)); -+ lcl.fc4_type = ftype; -+ lcl.portid = -+ (((u_int32_t) rs1->snscb_ports[i].portid[0]) << 16) | -+ (((u_int32_t) rs1->snscb_ports[i].portid[1]) << 8) | -+ (((u_int32_t) rs1->snscb_ports[i].portid[2])); -+ -+ MEMZERO((void *) gq, sizeof (sns_gxn_id_req_t)); -+ gq->snscb_rblen = SNS_GXN_ID_RESP_SIZE >> 1; -+ gq->snscb_addr[RQRSP_ADDR0015] = DMA_WD0(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR1631] = DMA_WD1(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR3247] = DMA_WD2(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR4863] = DMA_WD3(fcp->isp_scdma+GXOFF); -+ gq->snscb_sblen = 6; -+ gq->snscb_cmd = SNS_GPN_ID; -+ gq->snscb_portid = lcl.portid; -+ isp_put_gxn_id_request(isp, gq, -+ (sns_gxn_id_req_t *) fcp->isp_scratch); -+ MEMORYBARRIER(isp, SYNC_SFORDEV, 0, SNS_GXN_ID_REQ_SIZE); -+ mbs.param[0] = MBOX_SEND_SNS; -+ mbs.param[1] = SNS_GXN_ID_REQ_SIZE >> 1; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ /* -+ * Leave 4 and 5 alone -+ */ -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ if (isp_fabric_mbox_cmd(isp, &mbs)) { -+ if (fcp->isp_loopstate >= LOOP_SCANNING_FABRIC) { -+ fcp->isp_loopstate = LOOP_PDB_RCVD; -+ } -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ if (fcp->isp_loopstate != LOOP_SCANNING_FABRIC) { -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ MEMORYBARRIER(isp, SYNC_SFORCPU, GXOFF, SNS_GXN_ID_RESP_SIZE); -+ gs0 = (sns_gxn_id_rsp_t *) ((u_int8_t *)fcp->isp_scratch+GXOFF); -+ isp_get_gxn_id_response(isp, gs0, gs1); -+ if (gs1->snscb_cthdr.ct_response != FS_ACC) { -+ isp_prt(isp, ISP_LOGWARN, swrej, "GPN_ID", -+ gs1->snscb_cthdr.ct_reason, -+ gs1->snscb_cthdr.ct_explanation, lcl.portid); -+ if (fcp->isp_loopstate != LOOP_SCANNING_FABRIC) { -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ continue; -+ } -+ lcl.port_wwn = -+ (((u_int64_t)gs1->snscb_wwn[0]) << 56) | -+ (((u_int64_t)gs1->snscb_wwn[1]) << 48) | -+ (((u_int64_t)gs1->snscb_wwn[2]) << 40) | -+ (((u_int64_t)gs1->snscb_wwn[3]) << 32) | -+ (((u_int64_t)gs1->snscb_wwn[4]) << 24) | -+ (((u_int64_t)gs1->snscb_wwn[5]) << 16) | -+ (((u_int64_t)gs1->snscb_wwn[6]) << 8) | -+ (((u_int64_t)gs1->snscb_wwn[7])); -+ -+ MEMZERO((void *) gq, sizeof (sns_gxn_id_req_t)); -+ gq->snscb_rblen = SNS_GXN_ID_RESP_SIZE >> 1; -+ gq->snscb_addr[RQRSP_ADDR0015] = DMA_WD0(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR1631] = DMA_WD1(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR3247] = DMA_WD2(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR4863] = DMA_WD3(fcp->isp_scdma+GXOFF); -+ gq->snscb_sblen = 6; -+ gq->snscb_cmd = SNS_GNN_ID; -+ gq->snscb_portid = lcl.portid; -+ isp_put_gxn_id_request(isp, gq, -+ (sns_gxn_id_req_t *) fcp->isp_scratch); -+ MEMORYBARRIER(isp, SYNC_SFORDEV, 0, SNS_GXN_ID_REQ_SIZE); -+ mbs.param[0] = MBOX_SEND_SNS; -+ mbs.param[1] = SNS_GXN_ID_REQ_SIZE >> 1; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ /* -+ * Leave 4 and 5 alone -+ */ -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ if (isp_fabric_mbox_cmd(isp, &mbs)) { -+ if (fcp->isp_loopstate >= LOOP_SCANNING_FABRIC) { -+ fcp->isp_loopstate = LOOP_PDB_RCVD; -+ } -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ if (fcp->isp_loopstate != LOOP_SCANNING_FABRIC) { -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ MEMORYBARRIER(isp, SYNC_SFORCPU, GXOFF, SNS_GXN_ID_RESP_SIZE); -+ gs0 = (sns_gxn_id_rsp_t *) ((u_int8_t *)fcp->isp_scratch+GXOFF); -+ isp_get_gxn_id_response(isp, gs0, gs1); -+ if (gs1->snscb_cthdr.ct_response != FS_ACC) { -+ isp_prt(isp, ISP_LOGWARN, swrej, "GNN_ID", -+ gs1->snscb_cthdr.ct_reason, -+ gs1->snscb_cthdr.ct_explanation, lcl.portid); -+ if (fcp->isp_loopstate != LOOP_SCANNING_FABRIC) { -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ continue; -+ } -+ lcl.node_wwn = -+ (((u_int64_t)gs1->snscb_wwn[0]) << 56) | -+ (((u_int64_t)gs1->snscb_wwn[1]) << 48) | -+ (((u_int64_t)gs1->snscb_wwn[2]) << 40) | -+ (((u_int64_t)gs1->snscb_wwn[3]) << 32) | -+ (((u_int64_t)gs1->snscb_wwn[4]) << 24) | -+ (((u_int64_t)gs1->snscb_wwn[5]) << 16) | -+ (((u_int64_t)gs1->snscb_wwn[6]) << 8) | -+ (((u_int64_t)gs1->snscb_wwn[7])); -+ -+ /* -+ * The QLogic f/w is bouncing this with a parameter error. -+ */ -+#if 0 -+ /* -+ * Try and get FC4 Features (FC-GS-3 only). -+ * We can use the sns_gxn_id_req_t for this request. -+ */ -+ MEMZERO((void *) gq, sizeof (sns_gxn_id_req_t)); -+ gq->snscb_rblen = SNS_GFF_ID_RESP_SIZE >> 1; -+ gq->snscb_addr[RQRSP_ADDR0015] = DMA_WD0(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR1631] = DMA_WD1(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR3247] = DMA_WD2(fcp->isp_scdma+GXOFF); -+ gq->snscb_addr[RQRSP_ADDR4863] = DMA_WD3(fcp->isp_scdma+GXOFF); -+ gq->snscb_sblen = 6; -+ gq->snscb_cmd = SNS_GFF_ID; -+ gq->snscb_portid = lcl.portid; -+ isp_put_gxn_id_request(isp, gq, -+ (sns_gxn_id_req_t *) fcp->isp_scratch); -+ MEMORYBARRIER(isp, SYNC_SFORDEV, 0, SNS_GXN_ID_REQ_SIZE); -+ mbs.param[0] = MBOX_SEND_SNS; -+ mbs.param[1] = SNS_GXN_ID_REQ_SIZE >> 1; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ /* -+ * Leave 4 and 5 alone -+ */ -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ if (isp_fabric_mbox_cmd(isp, &mbs)) { -+ if (fcp->isp_loopstate >= LOOP_SCANNING_FABRIC) { -+ fcp->isp_loopstate = LOOP_PDB_RCVD; -+ } -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ if (fcp->isp_loopstate != LOOP_SCANNING_FABRIC) { -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ MEMORYBARRIER(isp, SYNC_SFORCPU, GXOFF, SNS_GFF_ID_RESP_SIZE); -+ fs0 = (sns_gff_id_rsp_t *) ((u_int8_t *)fcp->isp_scratch+GXOFF); -+ isp_get_gff_id_response(isp, fs0, fs1); -+ if (fs1->snscb_cthdr.ct_response != FS_ACC) { -+ isp_prt(isp, /* ISP_LOGDEBUG0 */ ISP_LOGWARN, -+ swrej, "GFF_ID", -+ fs1->snscb_cthdr.ct_reason, -+ fs1->snscb_cthdr.ct_explanation, lcl.portid); -+ if (fcp->isp_loopstate != LOOP_SCANNING_FABRIC) { -+ FC_SCRATCH_RELEASE(isp); -+ return (-1); -+ } -+ } else { -+ int index = (ftype >> 3); -+ int bshft = (ftype & 0x7) * 4; -+ int fc4_fval = -+ (fs1->snscb_fc4_features[index] >> bshft) & 0xf; -+ if (fc4_fval & 0x1) { -+ lcl.roles |= -+ (SVC3_INI_ROLE >> SVC3_ROLE_SHIFT); -+ } -+ if (fc4_fval & 0x2) { -+ lcl.roles |= -+ (SVC3_TGT_ROLE >> SVC3_ROLE_SHIFT); -+ } -+ } -+#endif -+ -+ /* -+ * If we really want to know what kind of port type this is, -+ * we have to run another CT command. Otherwise, we'll leave -+ * it as undefined. -+ * -+ lcl.port_type = 0; -+ */ -+ if (rs1->snscb_ports[i].control & 0x80) { -+ lcl.last_fabric_dev = 1; -+ } else { -+ lcl.last_fabric_dev = 0; -+ } -+ (void) isp_async(isp, ISPASYNC_FABRIC_DEV, &lcl); -+ -+ } while ((rs1->snscb_ports[i].control & 0x80) == 0 && i < NGENT-1); -+ -+ /* -+ * If we're not at the last entry, our list isn't big enough. -+ */ -+ if ((rs1->snscb_ports[i].control & 0x80) == 0) { -+ isp_prt(isp, ISP_LOGWARN, "fabric too big for scratch area"); -+ } -+ -+ FC_SCRATCH_RELEASE(isp); -+ fcp->isp_loopstate = LOOP_FSCAN_DONE; -+ return (0); -+} -+#endif -+ -+static void -+isp_register_fc4_type(struct ispsoftc *isp) -+{ -+ fcparam *fcp = isp->isp_param; -+ u_int8_t local[SNS_RFT_ID_REQ_SIZE]; -+ sns_screq_t *reqp = (sns_screq_t *) local; -+ mbreg_t mbs; -+ -+ MEMZERO((void *) reqp, SNS_RFT_ID_REQ_SIZE); -+ reqp->snscb_rblen = SNS_RFT_ID_RESP_SIZE >> 1; -+ reqp->snscb_addr[RQRSP_ADDR0015] = DMA_WD0(fcp->isp_scdma + 0x100); -+ reqp->snscb_addr[RQRSP_ADDR1631] = DMA_WD1(fcp->isp_scdma + 0x100); -+ reqp->snscb_addr[RQRSP_ADDR3247] = DMA_WD2(fcp->isp_scdma + 0x100); -+ reqp->snscb_addr[RQRSP_ADDR4863] = DMA_WD3(fcp->isp_scdma + 0x100); -+ reqp->snscb_sblen = 22; -+ reqp->snscb_data[0] = SNS_RFT_ID; -+ reqp->snscb_data[4] = fcp->isp_portid & 0xffff; -+ reqp->snscb_data[5] = (fcp->isp_portid >> 16) & 0xff; -+ reqp->snscb_data[6] = (1 << FC4_SCSI); -+#if 0 -+ reqp->snscb_data[6] |= (1 << FC4_IP); /* ISO/IEC 8802-2 LLC/SNAP */ -+#endif -+ FC_SCRATCH_ACQUIRE(isp); -+ isp_put_sns_request(isp, reqp, (sns_screq_t *) fcp->isp_scratch); -+ mbs.param[0] = MBOX_SEND_SNS; -+ mbs.param[1] = SNS_RFT_ID_REQ_SIZE >> 1; -+ mbs.param[2] = DMA_WD1(fcp->isp_scdma); -+ mbs.param[3] = DMA_WD0(fcp->isp_scdma); -+ /* -+ * Leave 4 and 5 alone -+ */ -+ mbs.param[6] = DMA_WD3(fcp->isp_scdma); -+ mbs.param[7] = DMA_WD2(fcp->isp_scdma); -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ FC_SCRATCH_RELEASE(isp); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGDEBUG0, "Register FC4 types succeeded"); -+ } -+} -+ -+/* -+ * Start a command. Locking is assumed done in the caller. -+ */ -+ -+int -+isp_start(XS_T *xs) -+{ -+ struct ispsoftc *isp; -+ u_int16_t nxti, optr, handle; -+ u_int8_t local[QENTRY_LEN]; -+ ispreq_t *reqp, *qep; -+ int target, i; -+ -+ XS_INITERR(xs); -+ isp = XS_ISP(xs); -+ -+ /* -+ * Check to make sure we're supporting initiator role. -+ */ -+ if ((isp->isp_role & ISP_ROLE_INITIATOR) == 0) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ -+ /* -+ * Now make sure we're running. -+ */ -+ -+ if (isp->isp_state != ISP_RUNSTATE) { -+ isp_prt(isp, ISP_LOGERR, "Adapter not at RUNSTATE"); -+ XS_SETERR(xs, HBA_BOTCH); -+ return (CMD_COMPLETE); -+ } -+ -+ /* -+ * Check command CDB length, etc.. We really are limited to 16 bytes -+ * for Fibre Channel, but can do up to 44 bytes in parallel SCSI, -+ * but probably only if we're running fairly new firmware (we'll -+ * let the old f/w choke on an extended command queue entry). -+ */ -+ -+ if (XS_CDBLEN(xs) > (IS_FC(isp)? 16 : 44) || XS_CDBLEN(xs) == 0) { -+ isp_prt(isp, ISP_LOGERR, -+ "unsupported cdb length (%d, CDB[0]=0x%x)", -+ XS_CDBLEN(xs), XS_CDBP(xs)[0] & 0xff); -+ XS_SETERR(xs, HBA_BOTCH); -+ return (CMD_COMPLETE); -+ } -+ -+ /* -+ * Check to see whether we have good firmware state still or -+ * need to refresh our port database for this target. -+ */ -+ target = XS_TGT(xs); -+ if (IS_FC(isp)) { -+ fcparam *fcp = isp->isp_param; -+ struct lportdb *lp; -+#ifdef HANDLE_LOOPSTATE_IN_OUTER_LAYERS -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate != LOOP_READY) { -+ return (CMD_RQLATER); -+ } -+ -+ /* -+ * If we're not on a Fabric, we can't have a target -+ * above FL_PORT_ID-1. -+ * -+ * If we're on a fabric and *not* connected as an F-port, -+ * we can't have a target less than FC_SNS_ID+1. This -+ * keeps us from having to sort out the difference between -+ * local public loop devices and those which we might get -+ * from a switch's database. -+ */ -+ if (fcp->isp_onfabric == 0) { -+ if (target >= FL_PORT_ID) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ } else { -+ if (target >= FL_PORT_ID && target <= FC_SNS_ID) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ /* -+ * We used to exclude having local loop ports -+ * at the same time that we have fabric ports. -+ * That is, we used to exclude having ports -+ * at < FL_PORT_ID if we're FL-port. -+ * -+ * That's wrong. The only thing that could be -+ * dicey is if the switch you're connected to -+ * has these local loop ports appear on the -+ * fabric and we somehow attach them twice. -+ */ -+ } -+#else -+ /* -+ * Check for f/w being in ready state. If the f/w -+ * isn't in ready state, then we don't know our -+ * loop ID and the f/w hasn't completed logging -+ * into all targets on the loop. If this is the -+ * case, then bounce the command. We pretend this is -+ * a SELECTION TIMEOUT error if we've never gone to -+ * FW_READY state at all- in this case we may not -+ * be hooked to a loop at all and we shouldn't hang -+ * the machine for this. Otherwise, defer this command -+ * until later. -+ */ -+ if (fcp->isp_fwstate != FW_READY) { -+ /* -+ * Give ourselves at most a 250ms delay. -+ */ -+ if (isp_fclink_test(isp, 250000)) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ if (fcp->loop_seen_once) { -+ return (CMD_RQLATER); -+ } else { -+ return (CMD_COMPLETE); -+ } -+ } -+ } -+ -+ /* -+ * If we're not on a Fabric, we can't have a target -+ * above FL_PORT_ID-1. -+ * -+ * If we're on a fabric and *not* connected as an F-port, -+ * we can't have a target less than FC_SNS_ID+1. This -+ * keeps us from having to sort out the difference between -+ * local public loop devices and those which we might get -+ * from a switch's database. -+ */ -+ if (fcp->isp_onfabric == 0) { -+ if (target >= FL_PORT_ID) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ } else { -+ if (target >= FL_PORT_ID && target <= FC_SNS_ID) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ if (fcp->isp_topo != TOPO_F_PORT && -+ target < FL_PORT_ID) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ } -+ -+ /* -+ * If our loop state is such that we haven't yet received -+ * a "Port Database Changed" notification (after a LIP or -+ * a Loop Reset or firmware initialization), then defer -+ * sending commands for a little while, but only if we've -+ * seen a valid loop at one point (otherwise we can get -+ * stuck at initialization time). -+ */ -+ if (fcp->isp_loopstate < LOOP_PDB_RCVD) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ if (fcp->loop_seen_once) { -+ return (CMD_RQLATER); -+ } else { -+ return (CMD_COMPLETE); -+ } -+ } -+ -+ /* -+ * If we're in the middle of loop or fabric scanning -+ * or merging the port databases, retry this command later. -+ */ -+ if (fcp->isp_loopstate == LOOP_SCANNING_FABRIC || -+ fcp->isp_loopstate == LOOP_SCANNING_LOOP || -+ fcp->isp_loopstate == LOOP_SYNCING_PDB) { -+ return (CMD_RQLATER); -+ } -+ -+ /* -+ * If our loop state is now such that we've just now -+ * received a Port Database Change notification, then -+ * we have to go off and (re)scan the fabric. We back -+ * out and try again later if this doesn't work. -+ */ -+ if (fcp->isp_loopstate == LOOP_PDB_RCVD && fcp->isp_onfabric) { -+ if (isp_scan_fabric(isp, FC4_SCSI)) { -+ return (CMD_RQLATER); -+ } -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate < LOOP_FSCAN_DONE) { -+ return (CMD_RQLATER); -+ } -+ } -+ -+ /* -+ * If our loop state is now such that we've just now -+ * received a Port Database Change notification, then -+ * we have to go off and (re)synchronize our port -+ * database. -+ */ -+ if (fcp->isp_loopstate < LOOP_READY) { -+ if (isp_pdb_sync(isp)) { -+ return (CMD_RQLATER); -+ } -+ if (fcp->isp_fwstate != FW_READY || -+ fcp->isp_loopstate != LOOP_READY) { -+ return (CMD_RQLATER); -+ } -+ } -+ -+ /* -+ * XXX: Here's were we would cancel any loop_dead flag -+ * XXX: also cancel in dead_loop timeout that's running -+ */ -+#endif -+ -+ /* -+ * Now check whether we should even think about pursuing this. -+ */ -+ lp = &fcp->portdb[target]; -+ if (lp->valid == 0) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ if ((lp->roles & (SVC3_TGT_ROLE >> SVC3_ROLE_SHIFT)) == 0) { -+ isp_prt(isp, ISP_LOGDEBUG2, -+ "Target %d does not have target service", target); -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ return (CMD_COMPLETE); -+ } -+ /* -+ * Now turn target into what the actual Loop ID is. -+ */ -+ target = lp->loopid; -+ } -+ -+ /* -+ * Next check to see if any HBA or Device -+ * parameters need to be updated. -+ */ -+ if (isp->isp_update != 0) { -+ isp_update(isp); -+ } -+ -+ if (isp_getrqentry(isp, &nxti, &optr, (void *)&qep)) { -+ isp_prt(isp, ISP_LOGDEBUG0, "Request Queue Overflow"); -+ XS_SETERR(xs, HBA_BOTCH); -+ return (CMD_EAGAIN); -+ } -+ -+ /* -+ * Now see if we need to synchronize the ISP with respect to anything. -+ * We do dual duty here (cough) for synchronizing for busses other -+ * than which we got here to send a command to. -+ */ -+ reqp = (ispreq_t *) local; -+ if (isp->isp_sendmarker) { -+ u_int8_t n = (IS_DUALBUS(isp)? 2: 1); -+ /* -+ * Check ports to send markers for... -+ */ -+ for (i = 0; i < n; i++) { -+ if ((isp->isp_sendmarker & (1 << i)) == 0) { -+ continue; -+ } -+ MEMZERO((void *) reqp, QENTRY_LEN); -+ reqp->req_header.rqs_entry_count = 1; -+ reqp->req_header.rqs_entry_type = RQSTYPE_MARKER; -+ reqp->req_modifier = SYNC_ALL; -+ reqp->req_target = i << 7; /* insert bus number */ -+ isp_put_request(isp, reqp, qep); -+ ISP_ADD_REQUEST(isp, nxti); -+ isp->isp_sendmarker &= ~(1 << i); -+ if (isp_getrqentry(isp, &nxti, &optr, (void *) &qep)) { -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "Request Queue Overflow+"); -+ XS_SETERR(xs, HBA_BOTCH); -+ return (CMD_EAGAIN); -+ } -+ } -+ } -+ -+ MEMZERO((void *)reqp, QENTRY_LEN); -+ reqp->req_header.rqs_entry_count = 1; -+ if (IS_FC(isp)) { -+ reqp->req_header.rqs_entry_type = RQSTYPE_T2RQS; -+ } else { -+ if (XS_CDBLEN(xs) > 12) -+ reqp->req_header.rqs_entry_type = RQSTYPE_CMDONLY; -+ else -+ reqp->req_header.rqs_entry_type = RQSTYPE_REQUEST; -+ } -+ /* reqp->req_header.rqs_flags = 0; */ -+ /* reqp->req_header.rqs_seqno = 0; */ -+ if (IS_FC(isp)) { -+ /* -+ * See comment in isp_intr -+ */ -+ /* XS_RESID(xs) = 0; */ -+ -+ /* -+ * Fibre Channel always requires some kind of tag. -+ * The Qlogic drivers seem be happy not to use a tag, -+ * but this breaks for some devices (IBM drives). -+ */ -+ if (XS_TAG_P(xs)) { -+ ((ispreqt2_t *)reqp)->req_flags = XS_TAG_TYPE(xs); -+ } else { -+ /* -+ * If we don't know what tag to use, use HEAD OF QUEUE -+ * for Request Sense or Simple. -+ */ -+ if (XS_CDBP(xs)[0] == 0x3) /* REQUEST SENSE */ -+ ((ispreqt2_t *)reqp)->req_flags = REQFLAG_HTAG; -+ else -+ ((ispreqt2_t *)reqp)->req_flags = REQFLAG_STAG; -+ } -+ } else { -+ sdparam *sdp = (sdparam *)isp->isp_param; -+ sdp += XS_CHANNEL(xs); -+ if ((sdp->isp_devparam[target].actv_flags & DPARM_TQING) && -+ XS_TAG_P(xs)) { -+ reqp->req_flags = XS_TAG_TYPE(xs); -+ } -+ } -+ reqp->req_target = target | (XS_CHANNEL(xs) << 7); -+ if (IS_SCSI(isp)) { -+ reqp->req_lun_trn = XS_LUN(xs); -+ reqp->req_cdblen = XS_CDBLEN(xs); -+ } else { -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) -+ ((ispreqt2_t *)reqp)->req_scclun = XS_LUN(xs); -+ else -+ ((ispreqt2_t *)reqp)->req_lun_trn = XS_LUN(xs); -+ } -+ MEMCPY(reqp->req_cdb, XS_CDBP(xs), XS_CDBLEN(xs)); -+ -+ reqp->req_time = XS_TIME(xs) / 1000; -+ if (reqp->req_time == 0 && XS_TIME(xs)) { -+ reqp->req_time = 1; -+ } -+ -+ if (isp_save_xs(isp, xs, &handle)) { -+ isp_prt(isp, ISP_LOGDEBUG0, "out of xflist pointers"); -+ XS_SETERR(xs, HBA_BOTCH); -+ return (CMD_EAGAIN); -+ } -+ reqp->req_handle = handle; -+ -+ /* -+ * Set up DMA and/or do any bus swizzling of the request entry -+ * so that the Qlogic F/W understands what is being asked of it. -+ */ -+ i = ISP_DMASETUP(isp, xs, reqp, &nxti, optr); -+ if (i != CMD_QUEUED) { -+ isp_destroy_handle(isp, handle); -+ /* -+ * dmasetup sets actual error in packet, and -+ * return what we were given to return. -+ */ -+ return (i); -+ } -+ XS_SETERR(xs, HBA_NOERROR); -+ isp_prt(isp, ISP_LOGDEBUG2, -+ "START cmd for %d.%d.%d cmd 0x%x datalen %ld", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs), XS_CDBP(xs)[0], -+ (long) XS_XFRLEN(xs)); -+ ISP_ADD_REQUEST(isp, nxti); -+ isp->isp_nactive++; -+ return (CMD_QUEUED); -+} -+ -+/* -+ * isp control -+ * Locks (ints blocked) assumed held. -+ */ -+ -+int -+isp_control(struct ispsoftc *isp, ispctl_t ctl, void *arg) -+{ -+ XS_T *xs; -+ mbreg_t mbs; -+ int bus, tgt; -+ u_int16_t handle; -+ -+ switch (ctl) { -+ default: -+ isp_prt(isp, ISP_LOGERR, "Unknown Control Opcode 0x%x", ctl); -+ break; -+ -+ case ISPCTL_RESET_BUS: -+ /* -+ * Issue a bus reset. -+ */ -+ mbs.param[0] = MBOX_BUS_RESET; -+ mbs.param[2] = 0; -+ if (IS_SCSI(isp)) { -+ mbs.param[1] = -+ ((sdparam *) isp->isp_param)->isp_bus_reset_delay; -+ if (mbs.param[1] < 2) -+ mbs.param[1] = 2; -+ bus = *((int *) arg); -+ if (IS_DUALBUS(isp)) -+ mbs.param[2] = bus; -+ } else { -+ mbs.param[1] = 10; -+ bus = 0; -+ } -+ isp->isp_sendmarker |= (1 << bus); -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ break; -+ } -+ isp_prt(isp, ISP_LOGINFO, -+ "driver initiated bus reset of bus %d", bus); -+ return (0); -+ -+ case ISPCTL_RESET_DEV: -+ tgt = (*((int *) arg)) & 0xffff; -+ bus = (*((int *) arg)) >> 16; -+ mbs.param[0] = MBOX_ABORT_TARGET; -+ mbs.param[1] = (tgt << 8) | (bus << 15); -+ mbs.param[2] = 3; /* 'delay', in seconds */ -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ break; -+ } -+ isp_prt(isp, ISP_LOGINFO, -+ "Target %d on Bus %d Reset Succeeded", tgt, bus); -+ isp->isp_sendmarker |= (1 << bus); -+ return (0); -+ -+ case ISPCTL_ABORT_CMD: -+ xs = (XS_T *) arg; -+ tgt = XS_TGT(xs); -+ handle = isp_find_handle(isp, xs); -+ if (handle == 0) { -+ isp_prt(isp, ISP_LOGWARN, -+ "cannot find handle for command to abort"); -+ break; -+ } -+ bus = XS_CHANNEL(xs); -+ mbs.param[0] = MBOX_ABORT; -+ if (IS_FC(isp)) { -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) { -+ mbs.param[1] = tgt << 8; -+ mbs.param[4] = 0; -+ mbs.param[5] = 0; -+ mbs.param[6] = XS_LUN(xs); -+ } else { -+ mbs.param[1] = tgt << 8 | XS_LUN(xs); -+ } -+ } else { -+ mbs.param[1] = -+ (bus << 15) | (XS_TGT(xs) << 8) | XS_LUN(xs); -+ } -+ mbs.param[3] = 0; -+ mbs.param[2] = handle; -+ isp_mboxcmd(isp, &mbs, MBLOGALL & ~MBOX_COMMAND_ERROR); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ return (0); -+ } -+ /* -+ * XXX: Look for command in the REQUEST QUEUE. That is, -+ * XXX: It hasen't been picked up by firmware yet. -+ */ -+ break; -+ -+ case ISPCTL_UPDATE_PARAMS: -+ -+ isp_update(isp); -+ return (0); -+ -+ case ISPCTL_FCLINK_TEST: -+ -+ if (IS_FC(isp)) { -+ int usdelay = (arg)? *((int *) arg) : 250000; -+ return (isp_fclink_test(isp, usdelay)); -+ } -+ break; -+ -+ case ISPCTL_SCAN_FABRIC: -+ -+ if (IS_FC(isp)) { -+ int ftype = (arg)? *((int *) arg) : FC4_SCSI; -+ return (isp_scan_fabric(isp, ftype)); -+ } -+ break; -+ -+ case ISPCTL_SCAN_LOOP: -+ -+ if (IS_FC(isp)) { -+ return (isp_scan_loop(isp)); -+ } -+ break; -+ -+ case ISPCTL_PDB_SYNC: -+ -+ if (IS_FC(isp)) { -+ return (isp_pdb_sync(isp)); -+ } -+ break; -+ -+ case ISPCTL_SEND_LIP: -+ -+ if (IS_FC(isp)) { -+ mbs.param[0] = MBOX_INIT_LIP; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ return (0); -+ } -+ } -+ break; -+ -+ case ISPCTL_GET_POSMAP: -+ -+ if (IS_FC(isp) && arg) { -+ return (isp_getmap(isp, arg)); -+ } -+ break; -+ -+ case ISPCTL_RUN_MBOXCMD: -+ -+ isp_mboxcmd(isp, arg, MBLOGALL); -+ return(0); -+ -+#ifdef ISP_TARGET_MODE -+ case ISPCTL_TOGGLE_TMODE: -+ { -+ -+ /* -+ * We don't check/set against role here- that's the -+ * responsibility for the outer layer to coordinate. -+ */ -+ if (IS_SCSI(isp)) { -+ int param = *(int *)arg; -+ mbs.param[0] = MBOX_ENABLE_TARGET_MODE; -+ mbs.param[1] = param & 0xffff; -+ mbs.param[2] = param >> 16; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ break; -+ } -+ } -+ return (0); -+ } -+#endif -+ } -+ return (-1); -+} -+ -+/* -+ * Interrupt Service Routine(s). -+ * -+ * External (OS) framework has done the appropriate locking, -+ * and the locking will be held throughout this function. -+ */ -+ -+/* -+ * Limit our stack depth by sticking with the max likely number -+ * of completions on a request queue at any one time. -+ */ -+#ifndef MAX_REQUESTQ_COMPLETIONS -+#define MAX_REQUESTQ_COMPLETIONS 64 -+#endif -+ -+void -+isp_intr(struct ispsoftc *isp, u_int16_t isr, u_int16_t sema, u_int16_t mbox) -+{ -+ XS_T *complist[MAX_REQUESTQ_COMPLETIONS], *xs; -+ u_int16_t iptr, optr, junk; -+ int i, nlooked = 0, ndone = 0; -+ -+again: -+ /* -+ * Is this a mailbox related interrupt? -+ * The mailbox semaphore will be nonzero if so. -+ */ -+ if (sema) { -+ if (mbox & 0x4000) { -+ isp->isp_intmboxc++; -+ if (isp->isp_mboxbsy) { -+ int i = 0, obits = isp->isp_obits; -+ isp->isp_mboxtmp[i++] = mbox; -+ for (i = 1; i < MAX_MAILBOX; i++) { -+ if ((obits & (1 << i)) == 0) { -+ continue; -+ } -+ isp->isp_mboxtmp[i] = -+ ISP_READ(isp, MBOX_OFF(i)); -+ } -+ if (isp->isp_mbxwrk0) { -+ if (isp_mbox_continue(isp) == 0) { -+ return; -+ } -+ } -+ MBOX_NOTIFY_COMPLETE(isp); -+ } else { -+ isp_prt(isp, ISP_LOGWARN, -+ "Mbox Command Async (0x%x) with no waiters", -+ mbox); -+ } -+ } else if (isp_parse_async(isp, mbox) < 0) { -+ return; -+ } -+ if ((IS_FC(isp) && mbox != ASYNC_RIO_RESP) || -+ isp->isp_state != ISP_RUNSTATE) { -+ ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); -+ ISP_WRITE(isp, BIU_SEMA, 0); -+ return; -+ } -+ } -+ -+ /* -+ * We can't be getting this now. -+ */ -+ if (isp->isp_state != ISP_RUNSTATE) { -+ isp_prt(isp, ISP_LOGWARN, -+ "interrupt (ISR=%x SEMA=%x) when not ready", isr, sema); -+ /* -+ * Thank you very much! *Burrrp*! -+ */ -+ WRITE_RESPONSE_QUEUE_OUT_POINTER(isp, -+ READ_RESPONSE_QUEUE_IN_POINTER(isp)); -+ -+ ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); -+ ISP_WRITE(isp, BIU_SEMA, 0); -+ return; -+ } -+ -+ /* -+ * Get the current Response Queue Out Pointer. -+ * -+ * If we're a 2300, we can ask what hardware what it thinks. -+ */ -+ if (IS_23XX(isp)) { -+ optr = ISP_READ(isp, isp->isp_respoutrp); -+ /* -+ * Debug: to be taken out eventually -+ */ -+ if (isp->isp_residx != optr) { -+ isp_prt(isp, ISP_LOGWARN, "optr %x soft optr %x", -+ optr, isp->isp_residx); -+ } -+ } else { -+ optr = isp->isp_residx; -+ } -+ -+ /* -+ * You *must* read the Response Queue In Pointer -+ * prior to clearing the RISC interrupt. -+ * -+ * Debounce the 2300 if revision less than 2. -+ */ -+ if (IS_2100(isp) || (IS_2300(isp) && isp->isp_revision < 2)) { -+ i = 0; -+ do { -+ iptr = READ_RESPONSE_QUEUE_IN_POINTER(isp); -+ junk = READ_RESPONSE_QUEUE_IN_POINTER(isp); -+ } while (junk != iptr && ++i < 1000); -+ -+ if (iptr != junk) { -+ ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); -+ isp_prt(isp, ISP_LOGWARN, -+ "Response Queue Out Pointer Unstable (%x, %x)", -+ iptr, junk); -+ return; -+ } -+ } else { -+ iptr = READ_RESPONSE_QUEUE_IN_POINTER(isp); -+ } -+ isp->isp_resodx = iptr; -+ -+ -+ if (optr == iptr && sema == 0) { -+ /* -+ * There are a lot of these- reasons unknown- mostly on -+ * faster Alpha machines. -+ * -+ * I tried delaying after writing HCCR_CMD_CLEAR_RISC_INT to -+ * make sure the old interrupt went away (to avoid 'ringing' -+ * effects), but that didn't stop this from occurring. -+ */ -+ if (IS_23XX(isp)) { -+ USEC_DELAY(100); -+ iptr = READ_RESPONSE_QUEUE_IN_POINTER(isp); -+ junk = ISP_READ(isp, BIU_R2HSTSLO); -+ } else { -+ junk = ISP_READ(isp, BIU_ISR); -+ } -+ if (optr == iptr) { -+ if (IS_23XX(isp)) { -+ ; -+ } else { -+ sema = ISP_READ(isp, BIU_SEMA); -+ mbox = ISP_READ(isp, OUTMAILBOX0); -+ if ((sema & 0x3) && (mbox & 0x8000)) { -+ goto again; -+ } -+ } -+ isp->isp_intbogus++; -+ isp_prt(isp, ISP_LOGDEBUG1, -+ "bogus intr- isr %x (%x) iptr %x optr %x", -+ isr, junk, iptr, optr); -+ } -+ } -+ isp->isp_resodx = iptr; -+ ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); -+ ISP_WRITE(isp, BIU_SEMA, 0); -+ -+ if (isp->isp_rspbsy) { -+ return; -+ } -+ isp->isp_rspbsy = 1; -+ -+ while (optr != iptr) { -+ ispstatusreq_t local, *sp = &local; -+ isphdr_t *hp; -+ int type; -+ u_int16_t oop; -+ int buddaboom = 0; -+ -+ hp = (isphdr_t *) ISP_QUEUE_ENTRY(isp->isp_result, optr); -+ oop = optr; -+ optr = ISP_NXT_QENTRY(optr, RESULT_QUEUE_LEN(isp)); -+ nlooked++; -+ /* -+ * Synchronize our view of this response queue entry. -+ */ -+ MEMORYBARRIER(isp, SYNC_RESULT, oop, QENTRY_LEN); -+ -+ type = isp_get_response_type(isp, hp); -+ -+ if (type == RQSTYPE_RESPONSE) { -+ isp_get_response(isp, (ispstatusreq_t *) hp, sp); -+ } else if (type == RQSTYPE_RIO2) { -+ isp_rio2_t rio; -+ isp_get_rio2(isp, (isp_rio2_t *) hp, &rio); -+ for (i = 0; i < rio.req_header.rqs_seqno; i++) { -+ isp_fastpost_complete(isp, rio.req_handles[i]); -+ } -+ if (isp->isp_fpcchiwater < rio.req_header.rqs_seqno) -+ isp->isp_fpcchiwater = rio.req_header.rqs_seqno; -+ MEMZERO(hp, QENTRY_LEN); /* PERF */ -+ continue; -+ } else { -+ /* -+ * Somebody reachable via isp_handle_other_response -+ * may have updated the response queue pointers for -+ * us, so we reload our goal index. -+ */ -+ if (isp_handle_other_response(isp, type, hp, &optr)) { -+ iptr = isp->isp_resodx; -+ MEMZERO(hp, QENTRY_LEN); /* PERF */ -+ continue; -+ } -+ -+ /* -+ * After this point, we'll just look at the header as -+ * we don't know how to deal with the rest of the -+ * response. -+ */ -+ isp_get_response(isp, (ispstatusreq_t *) hp, sp); -+ -+ /* -+ * It really has to be a bounced request just copied -+ * from the request queue to the response queue. If -+ * not, something bad has happened. -+ */ -+ if (sp->req_header.rqs_entry_type != RQSTYPE_REQUEST) { -+ isp_prt(isp, ISP_LOGERR, notresp, -+ sp->req_header.rqs_entry_type, oop, optr, -+ nlooked); -+ if (isp->isp_dblev & ISP_LOGDEBUG0) { -+ isp_print_bytes(isp, "Queue Entry", -+ QENTRY_LEN, sp); -+ } -+ MEMZERO(hp, QENTRY_LEN); /* PERF */ -+ continue; -+ } -+ buddaboom = 1; -+ } -+ -+ if (sp->req_header.rqs_flags & 0xf) { -+#define _RQS_OFLAGS \ -+ ~(RQSFLAG_CONTINUATION|RQSFLAG_FULL|RQSFLAG_BADHEADER|RQSFLAG_BADPACKET) -+ if (sp->req_header.rqs_flags & RQSFLAG_CONTINUATION) { -+ isp_prt(isp, ISP_LOGWARN, -+ "continuation segment"); -+ WRITE_RESPONSE_QUEUE_OUT_POINTER(isp, optr); -+ continue; -+ } -+ if (sp->req_header.rqs_flags & RQSFLAG_FULL) { -+ isp_prt(isp, ISP_LOGDEBUG1, -+ "internal queues full"); -+ /* -+ * We'll synthesize a QUEUE FULL message below. -+ */ -+ } -+ if (sp->req_header.rqs_flags & RQSFLAG_BADHEADER) { -+ isp_prt(isp, ISP_LOGERR, "bad header flag"); -+ buddaboom++; -+ } -+ if (sp->req_header.rqs_flags & RQSFLAG_BADPACKET) { -+ isp_prt(isp, ISP_LOGERR, "bad request packet"); -+ buddaboom++; -+ } -+ if (sp->req_header.rqs_flags & _RQS_OFLAGS) { -+ isp_prt(isp, ISP_LOGERR, -+ "unknown flags (0x%x) in response", -+ sp->req_header.rqs_flags); -+ buddaboom++; -+ } -+#undef _RQS_OFLAGS -+ } -+ if (sp->req_handle > isp->isp_maxcmds || sp->req_handle < 1) { -+ MEMZERO(hp, QENTRY_LEN); /* PERF */ -+ isp_prt(isp, ISP_LOGERR, -+ "bad request handle %d (type 0x%x, flags 0x%x)", -+ sp->req_handle, sp->req_header.rqs_entry_type, -+ sp->req_header.rqs_flags); -+ WRITE_RESPONSE_QUEUE_OUT_POINTER(isp, optr); -+ continue; -+ } -+ xs = isp_find_xs(isp, sp->req_handle); -+ if (xs == NULL) { -+ u_int8_t ts = sp->req_completion_status & 0xff; -+ MEMZERO(hp, QENTRY_LEN); /* PERF */ -+ /* -+ * Only whine if this isn't the expected fallout of -+ * aborting the command. -+ */ -+ if (sp->req_header.rqs_entry_type != RQSTYPE_RESPONSE) { -+ isp_prt(isp, ISP_LOGERR, -+ "cannot find handle 0x%x (type 0x%x)", -+ sp->req_handle, -+ sp->req_header.rqs_entry_type); -+ } else if (ts != RQCS_ABORTED) { -+ isp_prt(isp, ISP_LOGERR, -+ "cannot find handle 0x%x (status 0x%x)", -+ sp->req_handle, ts); -+ } -+ WRITE_RESPONSE_QUEUE_OUT_POINTER(isp, optr); -+ continue; -+ } -+ isp_destroy_handle(isp, sp->req_handle); -+ if (sp->req_status_flags & RQSTF_BUS_RESET) { -+ XS_SETERR(xs, HBA_BUSRESET); -+ isp->isp_sendmarker |= (1 << XS_CHANNEL(xs)); -+ } -+ if (buddaboom) { -+ XS_SETERR(xs, HBA_BOTCH); -+ } -+ -+ if (IS_FC(isp) && (sp->req_scsi_status & RQCS_SV)) { -+ /* -+ * Fibre Channel F/W doesn't say we got status -+ * if there's Sense Data instead. I guess they -+ * think it goes w/o saying. -+ */ -+ sp->req_state_flags |= RQSF_GOT_STATUS; -+ } -+ if (sp->req_state_flags & RQSF_GOT_STATUS) { -+ *XS_STSP(xs) = sp->req_scsi_status & 0xff; -+ } -+ -+ switch (sp->req_header.rqs_entry_type) { -+ case RQSTYPE_RESPONSE: -+ XS_SET_STATE_STAT(isp, xs, sp); -+ isp_parse_status(isp, sp, xs); -+ if ((XS_NOERR(xs) || XS_ERR(xs) == HBA_NOERROR) && -+ (*XS_STSP(xs) == SCSI_BUSY)) { -+ XS_SETERR(xs, HBA_TGTBSY); -+ } -+ if (IS_SCSI(isp)) { -+ XS_RESID(xs) = sp->req_resid; -+ if ((sp->req_state_flags & RQSF_GOT_STATUS) && -+ (*XS_STSP(xs) == SCSI_CHECK) && -+ (sp->req_state_flags & RQSF_GOT_SENSE)) { -+ XS_SAVE_SENSE(xs, sp); -+ } -+ /* -+ * A new synchronous rate was negotiated for -+ * this target. Mark state such that we'll go -+ * look up that which has changed later. -+ */ -+ if (sp->req_status_flags & RQSTF_NEGOTIATION) { -+ int t = XS_TGT(xs); -+ sdparam *sdp = isp->isp_param; -+ sdp += XS_CHANNEL(xs); -+ sdp->isp_devparam[t].dev_refresh = 1; -+ isp->isp_update |= -+ (1 << XS_CHANNEL(xs)); -+ } -+ } else { -+ if (sp->req_status_flags & RQSF_XFER_COMPLETE) { -+ XS_RESID(xs) = 0; -+ } else if (sp->req_scsi_status & RQCS_RESID) { -+ XS_RESID(xs) = sp->req_resid; -+ } else { -+ XS_RESID(xs) = 0; -+ } -+ if ((sp->req_state_flags & RQSF_GOT_STATUS) && -+ (*XS_STSP(xs) == SCSI_CHECK) && -+ (sp->req_scsi_status & RQCS_SV)) { -+ XS_SAVE_SENSE(xs, sp); -+ /* solely for the benefit of debug */ -+ sp->req_state_flags |= RQSF_GOT_SENSE; -+ } -+ } -+ isp_prt(isp, ISP_LOGDEBUG2, -+ "asked for %ld got resid %ld", (long) XS_XFRLEN(xs), -+ (long) sp->req_resid); -+ break; -+ case RQSTYPE_REQUEST: -+ if (sp->req_header.rqs_flags & RQSFLAG_FULL) { -+ /* -+ * Force Queue Full status. -+ */ -+ *XS_STSP(xs) = SCSI_QFULL; -+ XS_SETERR(xs, HBA_NOERROR); -+ } else if (XS_NOERR(xs)) { -+ /* -+ * ???? -+ */ -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "Request Queue Entry bounced back"); -+ XS_SETERR(xs, HBA_BOTCH); -+ } -+ XS_RESID(xs) = XS_XFRLEN(xs); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGWARN, -+ "unhandled response queue type 0x%x", -+ sp->req_header.rqs_entry_type); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_BOTCH); -+ } -+ break; -+ } -+ -+ /* -+ * Free any dma resources. As a side effect, this may -+ * also do any cache flushing necessary for data coherence. */ -+ if (XS_XFRLEN(xs)) { -+ ISP_DMAFREE(isp, xs, sp->req_handle); -+ } -+ -+ if (((isp->isp_dblev & (ISP_LOGDEBUG2|ISP_LOGDEBUG3))) || -+ ((isp->isp_dblev & ISP_LOGDEBUG1) && ((!XS_NOERR(xs)) || -+ (*XS_STSP(xs) != SCSI_GOOD)))) { -+ char skey; -+ if (sp->req_state_flags & RQSF_GOT_SENSE) { -+ skey = XS_SNSKEY(xs) & 0xf; -+ if (skey < 10) -+ skey += '0'; -+ else -+ skey += 'a' - 10; -+ } else if (*XS_STSP(xs) == SCSI_CHECK) { -+ skey = '?'; -+ } else { -+ skey = '.'; -+ } -+ isp_prt(isp, ISP_LOGALL, finmsg, XS_CHANNEL(xs), -+ XS_TGT(xs), XS_LUN(xs), XS_XFRLEN(xs), XS_RESID(xs), -+ *XS_STSP(xs), skey, XS_ERR(xs)); -+ } -+ -+ if (isp->isp_nactive > 0) -+ isp->isp_nactive--; -+ complist[ndone++] = xs; /* defer completion call until later */ -+ MEMZERO(hp, QENTRY_LEN); /* PERF */ -+ if (ndone == MAX_REQUESTQ_COMPLETIONS) { -+ break; -+ } -+ } -+ -+ /* -+ * If we looked at any commands, then it's valid to find out -+ * what the outpointer is. It also is a trigger to update the -+ * ISP's notion of what we've seen so far. -+ */ -+ if (nlooked) { -+ WRITE_RESPONSE_QUEUE_OUT_POINTER(isp, optr); -+ /* -+ * While we're at it, read the requst queue out pointer. -+ */ -+ isp->isp_reqodx = READ_REQUEST_QUEUE_OUT_POINTER(isp); -+ if (isp->isp_rscchiwater < ndone) -+ isp->isp_rscchiwater = ndone; -+ } -+ -+ isp->isp_residx = optr; -+ isp->isp_rspbsy = 0; -+ for (i = 0; i < ndone; i++) { -+ xs = complist[i]; -+ if (xs) { -+ isp->isp_rsltccmplt++; -+ isp_done(xs); -+ } -+ } -+} -+ -+/* -+ * Support routines. -+ */ -+ -+static int -+isp_parse_async(struct ispsoftc *isp, u_int16_t mbox) -+{ -+ int rval = 0; -+ int bus; -+ -+ if (IS_DUALBUS(isp)) { -+ bus = ISP_READ(isp, OUTMAILBOX6); -+ } else { -+ bus = 0; -+ } -+ isp_prt(isp, ISP_LOGDEBUG2, "Async Mbox 0x%x", mbox); -+ -+ switch (mbox) { -+ case ASYNC_BUS_RESET: -+ isp->isp_sendmarker |= (1 << bus); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ isp_async(isp, ISPASYNC_BUS_RESET, &bus); -+ break; -+ case ASYNC_SYSTEM_ERROR: -+#ifdef ISP_FW_CRASH_DUMP -+ /* -+ * If we have crash dumps enabled, it's up to the handler -+ * for isp_async to reinit stuff and restart the firmware -+ * after performing the crash dump. The reason we do things -+ * this way is that we may need to activate a kernel thread -+ * to do all the crash dump goop. -+ */ -+ isp_async(isp, ISPASYNC_FW_CRASH, NULL); -+#else -+ isp_async(isp, ISPASYNC_FW_CRASH, NULL); -+ isp_reinit(isp); -+ isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); -+#endif -+ rval = -1; -+ break; -+ -+ case ASYNC_RQS_XFER_ERR: -+ isp_prt(isp, ISP_LOGERR, "Request Queue Transfer Error"); -+ break; -+ -+ case ASYNC_RSP_XFER_ERR: -+ isp_prt(isp, ISP_LOGERR, "Response Queue Transfer Error"); -+ break; -+ -+ case ASYNC_QWAKEUP: -+ /* -+ * We've just been notified that the Queue has woken up. -+ * We don't need to be chatty about this- just unlatch things -+ * and move on. -+ */ -+ mbox = READ_REQUEST_QUEUE_OUT_POINTER(isp); -+ break; -+ -+ case ASYNC_TIMEOUT_RESET: -+ isp_prt(isp, ISP_LOGWARN, -+ "timeout initiated SCSI bus reset of bus %d", bus); -+ isp->isp_sendmarker |= (1 << bus); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ break; -+ -+ case ASYNC_DEVICE_RESET: -+ isp_prt(isp, ISP_LOGINFO, "device reset on bus %d", bus); -+ isp->isp_sendmarker |= (1 << bus); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ break; -+ -+ case ASYNC_EXTMSG_UNDERRUN: -+ isp_prt(isp, ISP_LOGWARN, "extended message underrun"); -+ break; -+ -+ case ASYNC_SCAM_INT: -+ isp_prt(isp, ISP_LOGINFO, "SCAM interrupt"); -+ break; -+ -+ case ASYNC_HUNG_SCSI: -+ isp_prt(isp, ISP_LOGERR, -+ "stalled SCSI Bus after DATA Overrun"); -+ /* XXX: Need to issue SCSI reset at this point */ -+ break; -+ -+ case ASYNC_KILLED_BUS: -+ isp_prt(isp, ISP_LOGERR, "SCSI Bus reset after DATA Overrun"); -+ break; -+ -+ case ASYNC_BUS_TRANSIT: -+ mbox = ISP_READ(isp, OUTMAILBOX2); -+ switch (mbox & 0x1c00) { -+ case SXP_PINS_LVD_MODE: -+ isp_prt(isp, ISP_LOGINFO, "Transition to LVD mode"); -+ SDPARAM(isp)->isp_diffmode = 0; -+ SDPARAM(isp)->isp_ultramode = 0; -+ SDPARAM(isp)->isp_lvdmode = 1; -+ break; -+ case SXP_PINS_HVD_MODE: -+ isp_prt(isp, ISP_LOGINFO, -+ "Transition to Differential mode"); -+ SDPARAM(isp)->isp_diffmode = 1; -+ SDPARAM(isp)->isp_ultramode = 0; -+ SDPARAM(isp)->isp_lvdmode = 0; -+ break; -+ case SXP_PINS_SE_MODE: -+ isp_prt(isp, ISP_LOGINFO, -+ "Transition to Single Ended mode"); -+ SDPARAM(isp)->isp_diffmode = 0; -+ SDPARAM(isp)->isp_ultramode = 1; -+ SDPARAM(isp)->isp_lvdmode = 0; -+ break; -+ default: -+ isp_prt(isp, ISP_LOGWARN, -+ "Transition to Unknown Mode 0x%x", mbox); -+ break; -+ } -+ /* -+ * XXX: Set up to renegotiate again! -+ */ -+ /* Can only be for a 1080... */ -+ isp->isp_sendmarker |= (1 << bus); -+ break; -+ -+ /* -+ * We can use bus, which will always be zero for FC cards, -+ * as a mailbox pattern accumulator to be checked below. -+ */ -+ case ASYNC_RIO5: -+ bus = 0x1ce; /* outgoing mailbox regs 1-3, 6-7 */ -+ break; -+ -+ case ASYNC_RIO4: -+ bus = 0x14e; /* outgoing mailbox regs 1-3, 6 */ -+ break; -+ -+ case ASYNC_RIO3: -+ bus = 0x10e; /* outgoing mailbox regs 1-3 */ -+ break; -+ -+ case ASYNC_RIO2: -+ bus = 0x106; /* outgoing mailbox regs 1-2 */ -+ break; -+ -+ case ASYNC_RIO1: -+ case ASYNC_CMD_CMPLT: -+ bus = 0x102; /* outgoing mailbox regs 1 */ -+ break; -+ -+ case ASYNC_RIO_RESP: -+ return (rval); -+ -+ case ASYNC_CTIO_DONE: -+ { -+#ifdef ISP_TARGET_MODE -+ int handle = -+ (ISP_READ(isp, OUTMAILBOX2) << 16) | -+ (ISP_READ(isp, OUTMAILBOX1)); -+ if (isp_target_async(isp, handle, mbox)) -+ rval = -1; -+#else -+ isp_prt(isp, ISP_LOGINFO, "Fast Posting CTIO done"); -+#endif -+ isp->isp_fphccmplt++; /* count it as a fast posting intr */ -+ break; -+ } -+ case ASYNC_LIP_F8: -+ case ASYNC_LIP_OCCURRED: -+ FCPARAM(isp)->isp_lipseq = -+ ISP_READ(isp, OUTMAILBOX1); -+ FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; -+ FCPARAM(isp)->isp_loopstate = LOOP_LIP_RCVD; -+ isp->isp_sendmarker = 1; -+ isp_mark_getpdb_all(isp); -+ isp_async(isp, ISPASYNC_LIP, NULL); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ /* -+ * We've had problems with data corruption occuring on -+ * commands that complete (with no apparent error) after -+ * we receive a LIP. This has been observed mostly on -+ * Local Loop topologies. To be safe, let's just mark -+ * all active commands as dead. -+ */ -+ if (FCPARAM(isp)->isp_topo == TOPO_NL_PORT || -+ FCPARAM(isp)->isp_topo == TOPO_FL_PORT) { -+ int i, j; -+ for (i = j = 0; i < isp->isp_maxcmds; i++) { -+ XS_T *xs; -+ xs = isp->isp_xflist[i]; -+ if (xs != NULL) { -+ j++; -+ XS_SETERR(xs, HBA_BUSRESET); -+ } -+ } -+ if (j) { -+ isp_prt(isp, ISP_LOGERR, -+ "LIP destroyed %d active commands", j); -+ } -+ } -+ break; -+ -+ case ASYNC_LOOP_UP: -+ isp->isp_sendmarker = 1; -+ FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; -+ FCPARAM(isp)->isp_loopstate = LOOP_LIP_RCVD; -+ isp_mark_getpdb_all(isp); -+ isp_async(isp, ISPASYNC_LOOP_UP, NULL); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ break; -+ -+ case ASYNC_LOOP_DOWN: -+ isp->isp_sendmarker = 1; -+ FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; -+ FCPARAM(isp)->isp_loopstate = LOOP_NIL; -+ isp_mark_getpdb_all(isp); -+ isp_async(isp, ISPASYNC_LOOP_DOWN, NULL); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ break; -+ -+ case ASYNC_LOOP_RESET: -+ isp->isp_sendmarker = 1; -+ FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; -+ FCPARAM(isp)->isp_loopstate = LOOP_NIL; -+ isp_mark_getpdb_all(isp); -+ isp_async(isp, ISPASYNC_LOOP_RESET, NULL); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ break; -+ -+ case ASYNC_PDB_CHANGED: -+ isp->isp_sendmarker = 1; -+ FCPARAM(isp)->isp_loopstate = LOOP_PDB_RCVD; -+ isp_mark_getpdb_all(isp); -+ isp_async(isp, ISPASYNC_CHANGE_NOTIFY, ISPASYNC_CHANGE_PDB); -+ break; -+ -+ case ASYNC_CHANGE_NOTIFY: -+ /* -+ * Not correct, but it will force us to rescan the loop. -+ */ -+ FCPARAM(isp)->isp_loopstate = LOOP_PDB_RCVD; -+ isp_mark_getpdb_all(isp); -+ isp_async(isp, ISPASYNC_CHANGE_NOTIFY, ISPASYNC_CHANGE_SNS); -+ break; -+ -+ case ASYNC_PTPMODE: -+ if (FCPARAM(isp)->isp_onfabric) -+ FCPARAM(isp)->isp_topo = TOPO_F_PORT; -+ else -+ FCPARAM(isp)->isp_topo = TOPO_N_PORT; -+ isp_mark_getpdb_all(isp); -+ isp->isp_sendmarker = 1; -+ FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; -+ FCPARAM(isp)->isp_loopstate = LOOP_LIP_RCVD; -+ isp_async(isp, ISPASYNC_CHANGE_NOTIFY, ISPASYNC_CHANGE_OTHER); -+#ifdef ISP_TARGET_MODE -+ if (isp_target_async(isp, bus, mbox)) -+ rval = -1; -+#endif -+ isp_prt(isp, ISP_LOGINFO, "Point-to-Point mode"); -+ break; -+ -+ case ASYNC_CONNMODE: -+ mbox = ISP_READ(isp, OUTMAILBOX1); -+ isp_mark_getpdb_all(isp); -+ switch (mbox) { -+ case ISP_CONN_LOOP: -+ isp_prt(isp, ISP_LOGINFO, -+ "Point-to-Point -> Loop mode"); -+ break; -+ case ISP_CONN_PTP: -+ isp_prt(isp, ISP_LOGINFO, -+ "Loop -> Point-to-Point mode"); -+ break; -+ case ISP_CONN_BADLIP: -+ isp_prt(isp, ISP_LOGWARN, -+ "Point-to-Point -> Loop mode (BAD LIP)"); -+ break; -+ case ISP_CONN_FATAL: -+ isp_prt(isp, ISP_LOGERR, "FATAL CONNECTION ERROR"); -+#ifdef ISP_FW_CRASH_DUMP -+ isp_async(isp, ISPASYNC_FW_CRASH, NULL); -+#else -+ isp_async(isp, ISPASYNC_FW_CRASH, NULL); -+ isp_reinit(isp); -+ isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); -+#endif -+ return (-1); -+ case ISP_CONN_LOOPBACK: -+ isp_prt(isp, ISP_LOGWARN, -+ "Looped Back in Point-to-Point mode"); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGWARN, -+ "Unknown connection mode (0x%x)", mbox); -+ break; -+ } -+ isp_async(isp, ISPASYNC_CHANGE_NOTIFY, ISPASYNC_CHANGE_OTHER); -+ isp->isp_sendmarker = 1; -+ FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; -+ FCPARAM(isp)->isp_loopstate = LOOP_LIP_RCVD; -+ break; -+ -+ default: -+ isp_prt(isp, ISP_LOGWARN, "Unknown Async Code 0x%x", mbox); -+ break; -+ } -+ -+ if (bus & 0x100) { -+ int i, nh; -+ u_int16_t handles[5]; -+ -+ for (nh = 0, i = 1; i < MAX_MAILBOX; i++) { -+ if ((bus & (1 << i)) == 0) { -+ continue; -+ } -+ handles[nh++] = ISP_READ(isp, MBOX_OFF(i)); -+ } -+ for (i = 0; i < nh; i++) { -+ isp_fastpost_complete(isp, handles[i]); -+ isp_prt(isp, ISP_LOGDEBUG3, -+ "fast post completion of %u", handles[i]); -+ } -+ if (isp->isp_fpcchiwater < nh) -+ isp->isp_fpcchiwater = nh; -+ } else { -+ isp->isp_intoasync++; -+ } -+ return (rval); -+} -+ -+/* -+ * Handle other response entries. A pointer to the request queue output -+ * index is here in case we want to eat several entries at once, although -+ * this is not used currently. -+ */ -+ -+static int -+isp_handle_other_response(struct ispsoftc *isp, int type, -+ isphdr_t *hp, u_int16_t *optrp) -+{ -+ switch (type) { -+ case RQSTYPE_STATUS_CONT: -+ isp_prt(isp, ISP_LOGINFO, "Ignored Continuation Response"); -+ return (1); -+ case RQSTYPE_ATIO: -+ case RQSTYPE_CTIO: -+ case RQSTYPE_ENABLE_LUN: -+ case RQSTYPE_MODIFY_LUN: -+ case RQSTYPE_NOTIFY: -+ case RQSTYPE_NOTIFY_ACK: -+ case RQSTYPE_CTIO1: -+ case RQSTYPE_ATIO2: -+ case RQSTYPE_CTIO2: -+ case RQSTYPE_CTIO3: -+ isp->isp_rsltccmplt++; /* count as a response completion */ -+#ifdef ISP_TARGET_MODE -+ if (isp_target_notify(isp, (ispstatusreq_t *) hp, optrp)) { -+ return (1); -+ } -+#endif -+ /* FALLTHROUGH */ -+ case RQSTYPE_REQUEST: -+ default: -+ if (isp_async(isp, ISPASYNC_UNHANDLED_RESPONSE, hp)) { -+ return (1); -+ } -+ isp_prt(isp, ISP_LOGWARN, "Unhandled Response Type 0x%x", -+ isp_get_response_type(isp, hp)); -+ return (0); -+ } -+} -+ -+static void -+isp_parse_status(struct ispsoftc *isp, ispstatusreq_t *sp, XS_T *xs) -+{ -+ switch (sp->req_completion_status & 0xff) { -+ case RQCS_COMPLETE: -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_NOERROR); -+ } -+ return; -+ -+ case RQCS_INCOMPLETE: -+ if ((sp->req_state_flags & RQSF_GOT_TARGET) == 0) { -+ isp_prt(isp, ISP_LOGDEBUG1, -+ "Selection Timeout for %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ } -+ return; -+ } -+ isp_prt(isp, ISP_LOGERR, -+ "command incomplete for %d.%d.%d, state 0x%x", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs), -+ sp->req_state_flags); -+ break; -+ -+ case RQCS_DMA_ERROR: -+ isp_prt(isp, ISP_LOGERR, "DMA error for command on %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_TRANSPORT_ERROR: -+ { -+ char buf[172]; -+ SNPRINTF(buf, sizeof (buf), "states=>"); -+ if (sp->req_state_flags & RQSF_GOT_BUS) { -+ SNPRINTF(buf, sizeof (buf), "%s GOT_BUS", buf); -+ } -+ if (sp->req_state_flags & RQSF_GOT_TARGET) { -+ SNPRINTF(buf, sizeof (buf), "%s GOT_TGT", buf); -+ } -+ if (sp->req_state_flags & RQSF_SENT_CDB) { -+ SNPRINTF(buf, sizeof (buf), "%s SENT_CDB", buf); -+ } -+ if (sp->req_state_flags & RQSF_XFRD_DATA) { -+ SNPRINTF(buf, sizeof (buf), "%s XFRD_DATA", buf); -+ } -+ if (sp->req_state_flags & RQSF_GOT_STATUS) { -+ SNPRINTF(buf, sizeof (buf), "%s GOT_STS", buf); -+ } -+ if (sp->req_state_flags & RQSF_GOT_SENSE) { -+ SNPRINTF(buf, sizeof (buf), "%s GOT_SNS", buf); -+ } -+ if (sp->req_state_flags & RQSF_XFER_COMPLETE) { -+ SNPRINTF(buf, sizeof (buf), "%s XFR_CMPLT", buf); -+ } -+ SNPRINTF(buf, sizeof (buf), "%s\nstatus=>", buf); -+ if (sp->req_status_flags & RQSTF_DISCONNECT) { -+ SNPRINTF(buf, sizeof (buf), "%s Disconnect", buf); -+ } -+ if (sp->req_status_flags & RQSTF_SYNCHRONOUS) { -+ SNPRINTF(buf, sizeof (buf), "%s Sync_xfr", buf); -+ } -+ if (sp->req_status_flags & RQSTF_PARITY_ERROR) { -+ SNPRINTF(buf, sizeof (buf), "%s Parity", buf); -+ } -+ if (sp->req_status_flags & RQSTF_BUS_RESET) { -+ SNPRINTF(buf, sizeof (buf), "%s Bus_Reset", buf); -+ } -+ if (sp->req_status_flags & RQSTF_DEVICE_RESET) { -+ SNPRINTF(buf, sizeof (buf), "%s Device_Reset", buf); -+ } -+ if (sp->req_status_flags & RQSTF_ABORTED) { -+ SNPRINTF(buf, sizeof (buf), "%s Aborted", buf); -+ } -+ if (sp->req_status_flags & RQSTF_TIMEOUT) { -+ SNPRINTF(buf, sizeof (buf), "%s Timeout", buf); -+ } -+ if (sp->req_status_flags & RQSTF_NEGOTIATION) { -+ SNPRINTF(buf, sizeof (buf), "%s Negotiation", buf); -+ } -+ isp_prt(isp, ISP_LOGERR, "%s", buf); -+ isp_prt(isp, ISP_LOGERR, "transport error for %d.%d.%d:\n%s", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs), buf); -+ break; -+ } -+ case RQCS_RESET_OCCURRED: -+ isp_prt(isp, ISP_LOGWARN, -+ "bus reset destroyed command for %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ isp->isp_sendmarker |= (1 << XS_CHANNEL(xs)); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_BUSRESET); -+ } -+ return; -+ -+ case RQCS_ABORTED: -+ isp_prt(isp, ISP_LOGERR, "command aborted for %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ isp->isp_sendmarker |= (1 << XS_CHANNEL(xs)); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_ABORTED); -+ } -+ return; -+ -+ case RQCS_TIMEOUT: -+ isp_prt(isp, ISP_LOGWARN, "command timed out for %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ /* -+ * Check to see if we logged out the device. -+ */ -+ if (IS_FC(isp)) { -+ if ((sp->req_completion_status & RQSTF_LOGOUT) && -+ FCPARAM(isp)->portdb[XS_TGT(xs)].valid && -+ FCPARAM(isp)->portdb[XS_TGT(xs)].fabric_dev) { -+ FCPARAM(isp)->portdb[XS_TGT(xs)].relogin = 1; -+ } -+ } -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_CMDTIMEOUT); -+ } -+ return; -+ -+ case RQCS_DATA_OVERRUN: -+ XS_RESID(xs) = sp->req_resid; -+ isp_prt(isp, ISP_LOGERR, "data overrun for command on %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_DATAOVR); -+ } -+ return; -+ -+ case RQCS_COMMAND_OVERRUN: -+ isp_prt(isp, ISP_LOGERR, -+ "command overrun for command on %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_STATUS_OVERRUN: -+ isp_prt(isp, ISP_LOGERR, -+ "status overrun for command on %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_BAD_MESSAGE: -+ isp_prt(isp, ISP_LOGERR, -+ "msg not COMMAND COMPLETE after status %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_NO_MESSAGE_OUT: -+ isp_prt(isp, ISP_LOGERR, -+ "No MESSAGE OUT phase after selection on %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_EXT_ID_FAILED: -+ isp_prt(isp, ISP_LOGERR, "EXTENDED IDENTIFY failed %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_IDE_MSG_FAILED: -+ isp_prt(isp, ISP_LOGERR, -+ "INITIATOR DETECTED ERROR rejected by %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_ABORT_MSG_FAILED: -+ isp_prt(isp, ISP_LOGERR, "ABORT OPERATION rejected by %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_REJECT_MSG_FAILED: -+ isp_prt(isp, ISP_LOGERR, "MESSAGE REJECT rejected by %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_NOP_MSG_FAILED: -+ isp_prt(isp, ISP_LOGERR, "NOP rejected by %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_PARITY_ERROR_MSG_FAILED: -+ isp_prt(isp, ISP_LOGERR, -+ "MESSAGE PARITY ERROR rejected by %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_DEVICE_RESET_MSG_FAILED: -+ isp_prt(isp, ISP_LOGWARN, -+ "BUS DEVICE RESET rejected by %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_ID_MSG_FAILED: -+ isp_prt(isp, ISP_LOGERR, "IDENTIFY rejected by %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_UNEXP_BUS_FREE: -+ isp_prt(isp, ISP_LOGERR, "%d.%d.%d had an unexpected bus free", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_DATA_UNDERRUN: -+ { -+ if (IS_FC(isp)) { -+ int ru_marked = (sp->req_scsi_status & RQCS_RU) != 0; -+ if (!ru_marked || sp->req_resid > XS_XFRLEN(xs)) { -+ isp_prt(isp, ISP_LOGWARN, bun, XS_TGT(xs), -+ XS_LUN(xs), XS_XFRLEN(xs), sp->req_resid, -+ (ru_marked)? "marked" : "not marked"); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_BOTCH); -+ } -+ return; -+ } -+ } -+ XS_RESID(xs) = sp->req_resid; -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_NOERROR); -+ } -+ return; -+ } -+ -+ case RQCS_XACT_ERR1: -+ isp_prt(isp, ISP_LOGERR, xact1, XS_CHANNEL(xs), -+ XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_XACT_ERR2: -+ isp_prt(isp, ISP_LOGERR, xact2, -+ XS_LUN(xs), XS_TGT(xs), XS_CHANNEL(xs)); -+ break; -+ -+ case RQCS_XACT_ERR3: -+ isp_prt(isp, ISP_LOGERR, xact3, -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_BAD_ENTRY: -+ isp_prt(isp, ISP_LOGERR, "Invalid IOCB entry type detected"); -+ break; -+ -+ case RQCS_QUEUE_FULL: -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "internal queues full for %d.%d.%d status 0x%x", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs), *XS_STSP(xs)); -+ -+ /* -+ * If QFULL or some other status byte is set, then this -+ * isn't an error, per se. -+ * -+ * Unfortunately, some QLogic f/w writers have, in -+ * some cases, ommitted to *set* status to QFULL. -+ * -+ -+ if (*XS_STSP(xs) != SCSI_GOOD && XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_NOERROR); -+ return; -+ } -+ -+ * -+ * -+ */ -+ -+ *XS_STSP(xs) = SCSI_QFULL; -+ XS_SETERR(xs, HBA_NOERROR); -+ return; -+ -+ case RQCS_PHASE_SKIPPED: -+ isp_prt(isp, ISP_LOGERR, pskip, XS_CHANNEL(xs), -+ XS_TGT(xs), XS_LUN(xs)); -+ break; -+ -+ case RQCS_ARQS_FAILED: -+ isp_prt(isp, ISP_LOGERR, -+ "Auto Request Sense failed for %d.%d.%d", -+ XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs)); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_ARQFAIL); -+ } -+ return; -+ -+ case RQCS_WIDE_FAILED: -+ isp_prt(isp, ISP_LOGERR, -+ "Wide Negotiation failed for %d.%d.%d", -+ XS_TGT(xs), XS_LUN(xs), XS_CHANNEL(xs)); -+ if (IS_SCSI(isp)) { -+ sdparam *sdp = isp->isp_param; -+ sdp += XS_CHANNEL(xs); -+ sdp->isp_devparam[XS_TGT(xs)].goal_flags &= ~DPARM_WIDE; -+ sdp->isp_devparam[XS_TGT(xs)].dev_update = 1; -+ isp->isp_update |= (1 << XS_CHANNEL(xs)); -+ } -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_NOERROR); -+ } -+ return; -+ -+ case RQCS_SYNCXFER_FAILED: -+ isp_prt(isp, ISP_LOGERR, -+ "SDTR Message failed for target %d.%d.%d", -+ XS_TGT(xs), XS_LUN(xs), XS_CHANNEL(xs)); -+ if (IS_SCSI(isp)) { -+ sdparam *sdp = isp->isp_param; -+ sdp += XS_CHANNEL(xs); -+ sdp->isp_devparam[XS_TGT(xs)].goal_flags &= ~DPARM_SYNC; -+ sdp->isp_devparam[XS_TGT(xs)].dev_update = 1; -+ isp->isp_update |= (1 << XS_CHANNEL(xs)); -+ } -+ break; -+ -+ case RQCS_LVD_BUSERR: -+ isp_prt(isp, ISP_LOGERR, -+ "Bad LVD condition while talking to %d.%d.%d", -+ XS_TGT(xs), XS_LUN(xs), XS_CHANNEL(xs)); -+ break; -+ -+ case RQCS_PORT_UNAVAILABLE: -+ /* -+ * No such port on the loop. Moral equivalent of SELTIMEO -+ */ -+ case RQCS_PORT_LOGGED_OUT: -+ /* -+ * It was there (maybe)- treat as a selection timeout. -+ */ -+ if ((sp->req_completion_status & 0xff) == RQCS_PORT_UNAVAILABLE) -+ isp_prt(isp, ISP_LOGINFO, -+ "port unavailable for target %d", XS_TGT(xs)); -+ else -+ isp_prt(isp, ISP_LOGINFO, -+ "port logout for target %d", XS_TGT(xs)); -+ /* -+ * If we're on a local loop, force a LIP (which is overkill) -+ * to force a re-login of this unit. If we're on fabric, -+ * then we'll have to relogin as a matter of course. -+ */ -+ if (FCPARAM(isp)->isp_topo == TOPO_NL_PORT || -+ FCPARAM(isp)->isp_topo == TOPO_FL_PORT) { -+ mbreg_t mbs; -+ mbs.param[0] = MBOX_INIT_LIP; -+ isp_mboxcmd_qnw(isp, &mbs, 1); -+ } -+ -+ /* -+ * Probably overkill. -+ */ -+ isp->isp_sendmarker = 1; -+ FCPARAM(isp)->isp_loopstate = LOOP_PDB_RCVD; -+ isp_mark_getpdb_all(isp); -+ isp_async(isp, ISPASYNC_CHANGE_NOTIFY, ISPASYNC_CHANGE_OTHER); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ } -+ return; -+ -+ case RQCS_PORT_CHANGED: -+ isp_prt(isp, ISP_LOGWARN, -+ "port changed for target %d", XS_TGT(xs)); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_SELTIMEOUT); -+ } -+ return; -+ -+ case RQCS_PORT_BUSY: -+ isp_prt(isp, ISP_LOGWARN, -+ "port busy for target %d", XS_TGT(xs)); -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_TGTBSY); -+ } -+ return; -+ -+ default: -+ isp_prt(isp, ISP_LOGERR, "Unknown Completion Status 0x%x", -+ sp->req_completion_status); -+ break; -+ } -+ if (XS_NOERR(xs)) { -+ XS_SETERR(xs, HBA_BOTCH); -+ } -+} -+ -+static void -+isp_fastpost_complete(struct ispsoftc *isp, u_int16_t fph) -+{ -+ XS_T *xs; -+ -+ if (fph == 0) { -+ return; -+ } -+ xs = isp_find_xs(isp, fph); -+ if (xs == NULL) { -+ isp_prt(isp, ISP_LOGWARN, -+ "Command for fast post handle 0x%x not found", fph); -+ return; -+ } -+ isp_destroy_handle(isp, fph); -+ -+ /* -+ * Since we don't have a result queue entry item, -+ * we must believe that SCSI status is zero and -+ * that all data transferred. -+ */ -+ XS_SET_STATE_STAT(isp, xs, NULL); -+ XS_RESID(xs) = 0; -+ *XS_STSP(xs) = SCSI_GOOD; -+ if (XS_XFRLEN(xs)) { -+ ISP_DMAFREE(isp, xs, fph); -+ } -+ if (isp->isp_nactive) -+ isp->isp_nactive--; -+ isp->isp_fphccmplt++; -+ isp_done(xs); -+} -+ -+static int -+isp_mbox_continue(struct ispsoftc *isp) -+{ -+ mbreg_t mbs; -+ u_int16_t *ptr; -+ -+ switch (isp->isp_lastmbxcmd) { -+ case MBOX_WRITE_RAM_WORD: -+ case MBOX_READ_RAM_WORD: -+ case MBOX_READ_RAM_WORD_EXTENDED: -+ break; -+ default: -+ return (1); -+ } -+ if (isp->isp_mboxtmp[0] != MBOX_COMMAND_COMPLETE) { -+ isp->isp_mbxwrk0 = 0; -+ return (-1); -+ } -+ -+ -+ /* -+ * Clear the previous interrupt. -+ */ -+ ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); -+ ISP_WRITE(isp, BIU_SEMA, 0); -+ -+ /* -+ * Continue with next word. -+ */ -+ ptr = isp->isp_mbxworkp; -+ switch (isp->isp_lastmbxcmd) { -+ case MBOX_WRITE_RAM_WORD: -+ mbs.param[2] = *ptr++; -+ mbs.param[1] = isp->isp_mbxwrk1++; -+ break; -+ case MBOX_READ_RAM_WORD: -+ case MBOX_READ_RAM_WORD_EXTENDED: -+ *ptr++ = isp->isp_mboxtmp[2]; -+ mbs.param[1] = isp->isp_mbxwrk1++; -+ break; -+ } -+ isp->isp_mbxworkp = ptr; -+ mbs.param[0] = isp->isp_lastmbxcmd; -+ isp->isp_mbxwrk0 -= 1; -+ isp_mboxcmd_qnw(isp, &mbs, 0); -+ return (0); -+} -+ -+ -+#define HIBYT(x) ((x) >> 0x8) -+#define LOBYT(x) ((x) & 0xff) -+#define ISPOPMAP(a, b) (((a) << 8) | (b)) -+static const u_int16_t mbpscsi[] = { -+ ISPOPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */ -+ ISPOPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */ -+ ISPOPMAP(0x03, 0x01), /* 0x02: MBOX_EXEC_FIRMWARE */ -+ ISPOPMAP(0x1f, 0x01), /* 0x03: MBOX_DUMP_RAM */ -+ ISPOPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */ -+ ISPOPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */ -+ ISPOPMAP(0x3f, 0x3f), /* 0x06: MBOX_MAILBOX_REG_TEST */ -+ ISPOPMAP(0x03, 0x07), /* 0x07: MBOX_VERIFY_CHECKSUM */ -+ ISPOPMAP(0x01, 0x0f), /* 0x08: MBOX_ABOUT_FIRMWARE */ -+ ISPOPMAP(0x00, 0x00), /* 0x09: */ -+ ISPOPMAP(0x00, 0x00), /* 0x0a: */ -+ ISPOPMAP(0x00, 0x00), /* 0x0b: */ -+ ISPOPMAP(0x00, 0x00), /* 0x0c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x0d: */ -+ ISPOPMAP(0x01, 0x05), /* 0x0e: MBOX_CHECK_FIRMWARE */ -+ ISPOPMAP(0x00, 0x00), /* 0x0f: */ -+ ISPOPMAP(0x1f, 0x1f), /* 0x10: MBOX_INIT_REQ_QUEUE */ -+ ISPOPMAP(0x3f, 0x3f), /* 0x11: MBOX_INIT_RES_QUEUE */ -+ ISPOPMAP(0x0f, 0x0f), /* 0x12: MBOX_EXECUTE_IOCB */ -+ ISPOPMAP(0x03, 0x03), /* 0x13: MBOX_WAKE_UP */ -+ ISPOPMAP(0x01, 0x3f), /* 0x14: MBOX_STOP_FIRMWARE */ -+ ISPOPMAP(0x0f, 0x0f), /* 0x15: MBOX_ABORT */ -+ ISPOPMAP(0x03, 0x03), /* 0x16: MBOX_ABORT_DEVICE */ -+ ISPOPMAP(0x07, 0x07), /* 0x17: MBOX_ABORT_TARGET */ -+ ISPOPMAP(0x07, 0x07), /* 0x18: MBOX_BUS_RESET */ -+ ISPOPMAP(0x03, 0x07), /* 0x19: MBOX_STOP_QUEUE */ -+ ISPOPMAP(0x03, 0x07), /* 0x1a: MBOX_START_QUEUE */ -+ ISPOPMAP(0x03, 0x07), /* 0x1b: MBOX_SINGLE_STEP_QUEUE */ -+ ISPOPMAP(0x03, 0x07), /* 0x1c: MBOX_ABORT_QUEUE */ -+ ISPOPMAP(0x03, 0x4f), /* 0x1d: MBOX_GET_DEV_QUEUE_STATUS */ -+ ISPOPMAP(0x00, 0x00), /* 0x1e: */ -+ ISPOPMAP(0x01, 0x07), /* 0x1f: MBOX_GET_FIRMWARE_STATUS */ -+ ISPOPMAP(0x01, 0x07), /* 0x20: MBOX_GET_INIT_SCSI_ID */ -+ ISPOPMAP(0x01, 0x07), /* 0x21: MBOX_GET_SELECT_TIMEOUT */ -+ ISPOPMAP(0x01, 0xc7), /* 0x22: MBOX_GET_RETRY_COUNT */ -+ ISPOPMAP(0x01, 0x07), /* 0x23: MBOX_GET_TAG_AGE_LIMIT */ -+ ISPOPMAP(0x01, 0x03), /* 0x24: MBOX_GET_CLOCK_RATE */ -+ ISPOPMAP(0x01, 0x07), /* 0x25: MBOX_GET_ACT_NEG_STATE */ -+ ISPOPMAP(0x01, 0x07), /* 0x26: MBOX_GET_ASYNC_DATA_SETUP_TIME */ -+ ISPOPMAP(0x01, 0x07), /* 0x27: MBOX_GET_PCI_PARAMS */ -+ ISPOPMAP(0x03, 0x4f), /* 0x28: MBOX_GET_TARGET_PARAMS */ -+ ISPOPMAP(0x03, 0x0f), /* 0x29: MBOX_GET_DEV_QUEUE_PARAMS */ -+ ISPOPMAP(0x01, 0x07), /* 0x2a: MBOX_GET_RESET_DELAY_PARAMS */ -+ ISPOPMAP(0x00, 0x00), /* 0x2b: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2d: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2e: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2f: */ -+ ISPOPMAP(0x03, 0x03), /* 0x30: MBOX_SET_INIT_SCSI_ID */ -+ ISPOPMAP(0x07, 0x07), /* 0x31: MBOX_SET_SELECT_TIMEOUT */ -+ ISPOPMAP(0xc7, 0xc7), /* 0x32: MBOX_SET_RETRY_COUNT */ -+ ISPOPMAP(0x07, 0x07), /* 0x33: MBOX_SET_TAG_AGE_LIMIT */ -+ ISPOPMAP(0x03, 0x03), /* 0x34: MBOX_SET_CLOCK_RATE */ -+ ISPOPMAP(0x07, 0x07), /* 0x35: MBOX_SET_ACT_NEG_STATE */ -+ ISPOPMAP(0x07, 0x07), /* 0x36: MBOX_SET_ASYNC_DATA_SETUP_TIME */ -+ ISPOPMAP(0x07, 0x07), /* 0x37: MBOX_SET_PCI_CONTROL_PARAMS */ -+ ISPOPMAP(0x4f, 0x4f), /* 0x38: MBOX_SET_TARGET_PARAMS */ -+ ISPOPMAP(0x0f, 0x0f), /* 0x39: MBOX_SET_DEV_QUEUE_PARAMS */ -+ ISPOPMAP(0x07, 0x07), /* 0x3a: MBOX_SET_RESET_DELAY_PARAMS */ -+ ISPOPMAP(0x00, 0x00), /* 0x3b: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3d: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3e: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3f: */ -+ ISPOPMAP(0x01, 0x03), /* 0x40: MBOX_RETURN_BIOS_BLOCK_ADDR */ -+ ISPOPMAP(0x3f, 0x01), /* 0x41: MBOX_WRITE_FOUR_RAM_WORDS */ -+ ISPOPMAP(0x03, 0x07), /* 0x42: MBOX_EXEC_BIOS_IOCB */ -+ ISPOPMAP(0x00, 0x00), /* 0x43: */ -+ ISPOPMAP(0x00, 0x00), /* 0x44: */ -+ ISPOPMAP(0x03, 0x03), /* 0x45: SET SYSTEM PARAMETER */ -+ ISPOPMAP(0x01, 0x03), /* 0x46: GET SYSTEM PARAMETER */ -+ ISPOPMAP(0x00, 0x00), /* 0x47: */ -+ ISPOPMAP(0x01, 0xcf), /* 0x48: GET SCAM CONFIGURATION */ -+ ISPOPMAP(0xcf, 0xcf), /* 0x49: SET SCAM CONFIGURATION */ -+ ISPOPMAP(0x03, 0x03), /* 0x4a: MBOX_SET_FIRMWARE_FEATURES */ -+ ISPOPMAP(0x01, 0x03), /* 0x4b: MBOX_GET_FIRMWARE_FEATURES */ -+ ISPOPMAP(0x00, 0x00), /* 0x4c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4d: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4e: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4f: */ -+ ISPOPMAP(0xdf, 0xdf), /* 0x50: LOAD RAM A64 */ -+ ISPOPMAP(0xdf, 0xdf), /* 0x51: DUMP RAM A64 */ -+ ISPOPMAP(0xdf, 0xff), /* 0x52: INITIALIZE REQUEST QUEUE A64 */ -+ ISPOPMAP(0xef, 0xff), /* 0x53: INITIALIZE RESPONSE QUEUE A64 */ -+ ISPOPMAP(0xcf, 0x01), /* 0x54: EXECUTE IOCB A64 */ -+ ISPOPMAP(0x07, 0x01), /* 0x55: ENABLE TARGET MODE */ -+ ISPOPMAP(0x03, 0x0f), /* 0x56: GET TARGET STATUS */ -+ ISPOPMAP(0x00, 0x00), /* 0x57: */ -+ ISPOPMAP(0x00, 0x00), /* 0x58: */ -+ ISPOPMAP(0x00, 0x00), /* 0x59: */ -+ ISPOPMAP(0x03, 0x03), /* 0x5a: SET DATA OVERRUN RECOVERY MODE */ -+ ISPOPMAP(0x01, 0x03), /* 0x5b: GET DATA OVERRUN RECOVERY MODE */ -+ ISPOPMAP(0x0f, 0x0f), /* 0x5c: SET HOST DATA */ -+ ISPOPMAP(0x01, 0x01) /* 0x5d: GET NOST DATA */ -+}; -+ -+#ifndef ISP_STRIPPED -+static char *scsi_mbcmd_names[] = { -+ "NO-OP", -+ "LOAD RAM", -+ "EXEC FIRMWARE", -+ "DUMP RAM", -+ "WRITE RAM WORD", -+ "READ RAM WORD", -+ "MAILBOX REG TEST", -+ "VERIFY CHECKSUM", -+ "ABOUT FIRMWARE", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "CHECK FIRMWARE", -+ NULL, -+ "INIT REQUEST QUEUE", -+ "INIT RESULT QUEUE", -+ "EXECUTE IOCB", -+ "WAKE UP", -+ "STOP FIRMWARE", -+ "ABORT", -+ "ABORT DEVICE", -+ "ABORT TARGET", -+ "BUS RESET", -+ "STOP QUEUE", -+ "START QUEUE", -+ "SINGLE STEP QUEUE", -+ "ABORT QUEUE", -+ "GET DEV QUEUE STATUS", -+ NULL, -+ "GET FIRMWARE STATUS", -+ "GET INIT SCSI ID", -+ "GET SELECT TIMEOUT", -+ "GET RETRY COUNT", -+ "GET TAG AGE LIMIT", -+ "GET CLOCK RATE", -+ "GET ACT NEG STATE", -+ "GET ASYNC DATA SETUP TIME", -+ "GET PCI PARAMS", -+ "GET TARGET PARAMS", -+ "GET DEV QUEUE PARAMS", -+ "GET RESET DELAY PARAMS", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "SET INIT SCSI ID", -+ "SET SELECT TIMEOUT", -+ "SET RETRY COUNT", -+ "SET TAG AGE LIMIT", -+ "SET CLOCK RATE", -+ "SET ACT NEG STATE", -+ "SET ASYNC DATA SETUP TIME", -+ "SET PCI CONTROL PARAMS", -+ "SET TARGET PARAMS", -+ "SET DEV QUEUE PARAMS", -+ "SET RESET DELAY PARAMS", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "RETURN BIOS BLOCK ADDR", -+ "WRITE FOUR RAM WORDS", -+ "EXEC BIOS IOCB", -+ NULL, -+ NULL, -+ "SET SYSTEM PARAMETER", -+ "GET SYSTEM PARAMETER", -+ NULL, -+ "GET SCAM CONFIGURATION", -+ "SET SCAM CONFIGURATION", -+ "SET FIRMWARE FEATURES", -+ "GET FIRMWARE FEATURES", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "LOAD RAM A64", -+ "DUMP RAM A64", -+ "INITIALIZE REQUEST QUEUE A64", -+ "INITIALIZE RESPONSE QUEUE A64", -+ "EXECUTE IOCB A64", -+ "ENABLE TARGET MODE", -+ "GET TARGET MODE STATE", -+ NULL, -+ NULL, -+ NULL, -+ "SET DATA OVERRUN RECOVERY MODE", -+ "GET DATA OVERRUN RECOVERY MODE", -+ "SET HOST DATA", -+ "GET NOST DATA", -+}; -+#endif -+ -+static const u_int16_t mbpfc[] = { -+ ISPOPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */ -+ ISPOPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */ -+ ISPOPMAP(0x03, 0x01), /* 0x02: MBOX_EXEC_FIRMWARE */ -+ ISPOPMAP(0xdf, 0x01), /* 0x03: MBOX_DUMP_RAM */ -+ ISPOPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */ -+ ISPOPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */ -+ ISPOPMAP(0xff, 0xff), /* 0x06: MBOX_MAILBOX_REG_TEST */ -+ ISPOPMAP(0x03, 0x05), /* 0x07: MBOX_VERIFY_CHECKSUM */ -+ ISPOPMAP(0x01, 0x4f), /* 0x08: MBOX_ABOUT_FIRMWARE */ -+ ISPOPMAP(0xdf, 0x01), /* 0x09: LOAD RAM */ -+ ISPOPMAP(0xdf, 0x01), /* 0x0a: DUMP RAM */ -+ ISPOPMAP(0x00, 0x00), /* 0x0b: */ -+ ISPOPMAP(0x00, 0x00), /* 0x0c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x0d: */ -+ ISPOPMAP(0x01, 0x05), /* 0x0e: MBOX_CHECK_FIRMWARE */ -+ ISPOPMAP(0x03, 0x07), /* 0x0f: MBOX_READ_RAM_WORD_EXTENDED(1) */ -+ ISPOPMAP(0x1f, 0x11), /* 0x10: MBOX_INIT_REQ_QUEUE */ -+ ISPOPMAP(0x2f, 0x21), /* 0x11: MBOX_INIT_RES_QUEUE */ -+ ISPOPMAP(0x0f, 0x01), /* 0x12: MBOX_EXECUTE_IOCB */ -+ ISPOPMAP(0x03, 0x03), /* 0x13: MBOX_WAKE_UP */ -+ ISPOPMAP(0x01, 0xff), /* 0x14: MBOX_STOP_FIRMWARE */ -+ ISPOPMAP(0x4f, 0x01), /* 0x15: MBOX_ABORT */ -+ ISPOPMAP(0x07, 0x01), /* 0x16: MBOX_ABORT_DEVICE */ -+ ISPOPMAP(0x07, 0x01), /* 0x17: MBOX_ABORT_TARGET */ -+ ISPOPMAP(0x03, 0x03), /* 0x18: MBOX_BUS_RESET */ -+ ISPOPMAP(0x07, 0x05), /* 0x19: MBOX_STOP_QUEUE */ -+ ISPOPMAP(0x07, 0x05), /* 0x1a: MBOX_START_QUEUE */ -+ ISPOPMAP(0x07, 0x05), /* 0x1b: MBOX_SINGLE_STEP_QUEUE */ -+ ISPOPMAP(0x07, 0x05), /* 0x1c: MBOX_ABORT_QUEUE */ -+ ISPOPMAP(0x07, 0x03), /* 0x1d: MBOX_GET_DEV_QUEUE_STATUS */ -+ ISPOPMAP(0x00, 0x00), /* 0x1e: */ -+ ISPOPMAP(0x01, 0x07), /* 0x1f: MBOX_GET_FIRMWARE_STATUS */ -+ ISPOPMAP(0x01, 0x4f), /* 0x20: MBOX_GET_LOOP_ID */ -+ ISPOPMAP(0x00, 0x00), /* 0x21: */ -+ ISPOPMAP(0x01, 0x07), /* 0x22: MBOX_GET_RETRY_COUNT */ -+ ISPOPMAP(0x00, 0x00), /* 0x23: */ -+ ISPOPMAP(0x00, 0x00), /* 0x24: */ -+ ISPOPMAP(0x00, 0x00), /* 0x25: */ -+ ISPOPMAP(0x00, 0x00), /* 0x26: */ -+ ISPOPMAP(0x00, 0x00), /* 0x27: */ -+ ISPOPMAP(0x01, 0x03), /* 0x28: MBOX_GET_FIRMWARE_OPTIONS */ -+ ISPOPMAP(0x03, 0x07), /* 0x29: MBOX_GET_PORT_QUEUE_PARAMS */ -+ ISPOPMAP(0x00, 0x00), /* 0x2a: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2b: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2d: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2e: */ -+ ISPOPMAP(0x00, 0x00), /* 0x2f: */ -+ ISPOPMAP(0x00, 0x00), /* 0x30: */ -+ ISPOPMAP(0x00, 0x00), /* 0x31: */ -+ ISPOPMAP(0x07, 0x07), /* 0x32: MBOX_SET_RETRY_COUNT */ -+ ISPOPMAP(0x00, 0x00), /* 0x33: */ -+ ISPOPMAP(0x00, 0x00), /* 0x34: */ -+ ISPOPMAP(0x00, 0x00), /* 0x35: */ -+ ISPOPMAP(0x00, 0x00), /* 0x36: */ -+ ISPOPMAP(0x00, 0x00), /* 0x37: */ -+ ISPOPMAP(0x0f, 0x01), /* 0x38: MBOX_SET_FIRMWARE_OPTIONS */ -+ ISPOPMAP(0x0f, 0x07), /* 0x39: MBOX_SET_PORT_QUEUE_PARAMS */ -+ ISPOPMAP(0x00, 0x00), /* 0x3a: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3b: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3d: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3e: */ -+ ISPOPMAP(0x00, 0x00), /* 0x3f: */ -+ ISPOPMAP(0x03, 0x01), /* 0x40: MBOX_LOOP_PORT_BYPASS */ -+ ISPOPMAP(0x03, 0x01), /* 0x41: MBOX_LOOP_PORT_ENABLE */ -+ ISPOPMAP(0x03, 0x07), /* 0x42: MBOX_GET_RESOURCE_COUNTS */ -+ ISPOPMAP(0x01, 0x01), /* 0x43: MBOX_REQUEST_NON_PARTICIPATING_MODE */ -+ ISPOPMAP(0x00, 0x00), /* 0x44: */ -+ ISPOPMAP(0x00, 0x00), /* 0x45: */ -+ ISPOPMAP(0x00, 0x00), /* 0x46: */ -+ ISPOPMAP(0xcf, 0x03), /* 0x47: GET PORT_DATABASE ENHANCED */ -+ ISPOPMAP(0x00, 0x00), /* 0x48: */ -+ ISPOPMAP(0x00, 0x00), /* 0x49: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4a: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4b: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4c: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4d: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4e: */ -+ ISPOPMAP(0x00, 0x00), /* 0x4f: */ -+ ISPOPMAP(0x00, 0x00), /* 0x50: */ -+ ISPOPMAP(0x00, 0x00), /* 0x51: */ -+ ISPOPMAP(0x00, 0x00), /* 0x52: */ -+ ISPOPMAP(0x00, 0x00), /* 0x53: */ -+ ISPOPMAP(0xcf, 0x01), /* 0x54: EXECUTE IOCB A64 */ -+ ISPOPMAP(0x00, 0x00), /* 0x55: */ -+ ISPOPMAP(0x00, 0x00), /* 0x56: */ -+ ISPOPMAP(0x00, 0x00), /* 0x57: */ -+ ISPOPMAP(0x00, 0x00), /* 0x58: */ -+ ISPOPMAP(0x00, 0x00), /* 0x59: */ -+ ISPOPMAP(0x00, 0x00), /* 0x5a: */ -+ ISPOPMAP(0x03, 0x01), /* 0x5b: MBOX_DRIVER_HEARTBEAT */ -+ ISPOPMAP(0xcf, 0x01), /* 0x5c: MBOX_FW_HEARTBEAT */ -+ ISPOPMAP(0x07, 0x03), /* 0x5d: MBOX_GET_SET_DATA_RATE */ -+ ISPOPMAP(0x00, 0x00), /* 0x5e: */ -+ ISPOPMAP(0x00, 0x00), /* 0x5f: */ -+ ISPOPMAP(0xfd, 0x31), /* 0x60: MBOX_INIT_FIRMWARE */ -+ ISPOPMAP(0x00, 0x00), /* 0x61: */ -+ ISPOPMAP(0x01, 0x01), /* 0x62: MBOX_INIT_LIP */ -+ ISPOPMAP(0xcd, 0x03), /* 0x63: MBOX_GET_FC_AL_POSITION_MAP */ -+ ISPOPMAP(0xcf, 0x01), /* 0x64: MBOX_GET_PORT_DB */ -+ ISPOPMAP(0x07, 0x01), /* 0x65: MBOX_CLEAR_ACA */ -+ ISPOPMAP(0x07, 0x01), /* 0x66: MBOX_TARGET_RESET */ -+ ISPOPMAP(0x07, 0x01), /* 0x67: MBOX_CLEAR_TASK_SET */ -+ ISPOPMAP(0x07, 0x01), /* 0x68: MBOX_ABORT_TASK_SET */ -+ ISPOPMAP(0x01, 0x07), /* 0x69: MBOX_GET_FW_STATE */ -+ ISPOPMAP(0x03, 0xcf), /* 0x6a: MBOX_GET_PORT_NAME */ -+ ISPOPMAP(0xcf, 0x01), /* 0x6b: MBOX_GET_LINK_STATUS */ -+ ISPOPMAP(0x0f, 0x01), /* 0x6c: MBOX_INIT_LIP_RESET */ -+ ISPOPMAP(0x00, 0x00), /* 0x6d: */ -+ ISPOPMAP(0xcf, 0x03), /* 0x6e: MBOX_SEND_SNS */ -+ ISPOPMAP(0x0f, 0x07), /* 0x6f: MBOX_FABRIC_LOGIN */ -+ ISPOPMAP(0x03, 0x01), /* 0x70: MBOX_SEND_CHANGE_REQUEST */ -+ ISPOPMAP(0x03, 0x03), /* 0x71: MBOX_FABRIC_LOGOUT */ -+ ISPOPMAP(0x0f, 0x0f), /* 0x72: MBOX_INIT_LIP_LOGIN */ -+ ISPOPMAP(0x00, 0x00), /* 0x73: */ -+ ISPOPMAP(0x07, 0x01), /* 0x74: LOGIN LOOP PORT */ -+ ISPOPMAP(0xcf, 0x03), /* 0x75: GET PORT/NODE NAME LIST */ -+ ISPOPMAP(0x4f, 0x01), /* 0x76: SET VENDOR ID */ -+ ISPOPMAP(0xcd, 0x01), /* 0x77: INITIALIZE IP MAILBOX */ -+ ISPOPMAP(0x00, 0x00), /* 0x78: */ -+ ISPOPMAP(0x00, 0x00), /* 0x79: */ -+ ISPOPMAP(0x00, 0x00), /* 0x7a: */ -+ ISPOPMAP(0x00, 0x00), /* 0x7b: */ -+ ISPOPMAP(0x4f, 0x03), /* 0x7c: Get ID List */ -+ ISPOPMAP(0xcf, 0x01), /* 0x7d: SEND LFA */ -+ ISPOPMAP(0x07, 0x01) /* 0x7e: Lun RESET */ -+}; -+/* -+ * Footnotes -+ * -+ * (1): this sets bits 21..16 in mailbox register #8, which we nominally -+ * do not access at this time in the core driver. The caller is -+ * responsible for setting this register first (Gross!). -+ */ -+ -+#ifndef ISP_STRIPPED -+static char *fc_mbcmd_names[] = { -+ "NO-OP", -+ "LOAD RAM", -+ "EXEC FIRMWARE", -+ "DUMP RAM", -+ "WRITE RAM WORD", -+ "READ RAM WORD", -+ "MAILBOX REG TEST", -+ "VERIFY CHECKSUM", -+ "ABOUT FIRMWARE", -+ "LOAD RAM", -+ "DUMP RAM", -+ NULL, -+ NULL, -+ "READ RAM WORD EXTENDED", -+ "CHECK FIRMWARE", -+ NULL, -+ "INIT REQUEST QUEUE", -+ "INIT RESULT QUEUE", -+ "EXECUTE IOCB", -+ "WAKE UP", -+ "STOP FIRMWARE", -+ "ABORT", -+ "ABORT DEVICE", -+ "ABORT TARGET", -+ "BUS RESET", -+ "STOP QUEUE", -+ "START QUEUE", -+ "SINGLE STEP QUEUE", -+ "ABORT QUEUE", -+ "GET DEV QUEUE STATUS", -+ NULL, -+ "GET FIRMWARE STATUS", -+ "GET LOOP ID", -+ NULL, -+ "GET RETRY COUNT", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "GET FIRMWARE OPTIONS", -+ "GET PORT QUEUE PARAMS", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "SET RETRY COUNT", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "SET FIRMWARE OPTIONS", -+ "SET PORT QUEUE PARAMS", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "LOOP PORT BYPASS", -+ "LOOP PORT ENABLE", -+ "GET RESOURCE COUNTS", -+ "REQUEST NON PARTICIPATING MODE", -+ NULL, -+ NULL, -+ NULL, -+ "GET PORT DATABASE,, ENHANCED", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "EXECUTE IOCB A64", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "DRIVER HEARTBEAT", -+ NULL, -+ "GET/SET DATA RATE", -+ NULL, -+ NULL, -+ "INIT FIRMWARE", -+ NULL, -+ "INIT LIP", -+ "GET FC-AL POSITION MAP", -+ "GET PORT DATABASE", -+ "CLEAR ACA", -+ "TARGET RESET", -+ "CLEAR TASK SET", -+ "ABORT TASK SET", -+ "GET FW STATE", -+ "GET PORT NAME", -+ "GET LINK STATUS", -+ "INIT LIP RESET", -+ NULL, -+ "SEND SNS", -+ "FABRIC LOGIN", -+ "SEND CHANGE REQUEST", -+ "FABRIC LOGOUT", -+ "INIT LIP LOGIN", -+ NULL, -+ "LOGIN LOOP PORT", -+ "GET PORT/NODE NAME LIST", -+ "SET VENDOR ID", -+ "INITIALIZE IP MAILBOX", -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+ "Get ID List", -+ "SEND LFA", -+ "Lun RESET" -+}; -+#endif -+ -+static void -+isp_mboxcmd_qnw(struct ispsoftc *isp, mbreg_t *mbp, int nodelay) -+{ -+ unsigned int ibits, obits, box, opcode; -+ const u_int16_t *mcp; -+ -+ if (IS_FC(isp)) { -+ mcp = mbpfc; -+ } else { -+ mcp = mbpscsi; -+ } -+ opcode = mbp->param[0]; -+ ibits = HIBYT(mcp[opcode]) & NMBOX_BMASK(isp); -+ obits = LOBYT(mcp[opcode]) & NMBOX_BMASK(isp); -+ for (box = 0; box < MAX_MAILBOX; box++) { -+ if (ibits & (1 << box)) { -+ ISP_WRITE(isp, MBOX_OFF(box), mbp->param[box]); -+ } -+ if (nodelay == 0) { -+ isp->isp_mboxtmp[box] = mbp->param[box] = 0; -+ } -+ } -+ if (nodelay == 0) { -+ isp->isp_lastmbxcmd = opcode; -+ isp->isp_obits = obits; -+ isp->isp_mboxbsy = 1; -+ } -+ ISP_WRITE(isp, HCCR, HCCR_CMD_SET_HOST_INT); -+ /* -+ * Oddly enough, if we're not delaying for an answer, -+ * delay a bit to give the f/w a chance to pick up the -+ * command. -+ */ -+ if (nodelay) { -+ USEC_DELAY(1000); -+ } -+} -+ -+static void -+isp_mboxcmd(struct ispsoftc *isp, mbreg_t *mbp, int logmask) -+{ -+ char *cname, *xname, tname[16], mname[16]; -+ unsigned int lim, ibits, obits, box, opcode; -+ const u_int16_t *mcp; -+ -+ if (IS_FC(isp)) { -+ mcp = mbpfc; -+ lim = (sizeof (mbpfc) / sizeof (mbpfc[0])); -+ } else { -+ mcp = mbpscsi; -+ lim = (sizeof (mbpscsi) / sizeof (mbpscsi[0])); -+ } -+ -+ if ((opcode = mbp->param[0]) >= lim) { -+ mbp->param[0] = MBOX_INVALID_COMMAND; -+ isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode); -+ return; -+ } -+ -+ ibits = HIBYT(mcp[opcode]) & NMBOX_BMASK(isp); -+ obits = LOBYT(mcp[opcode]) & NMBOX_BMASK(isp); -+ -+ if (ibits == 0 && obits == 0) { -+ mbp->param[0] = MBOX_COMMAND_PARAM_ERROR; -+ isp_prt(isp, ISP_LOGERR, "no parameters for 0x%x", opcode); -+ return; -+ } -+ -+ /* -+ * Get exclusive usage of mailbox registers. -+ */ -+ MBOX_ACQUIRE(isp); -+ -+ for (box = 0; box < MAX_MAILBOX; box++) { -+ if (ibits & (1 << box)) { -+ ISP_WRITE(isp, MBOX_OFF(box), mbp->param[box]); -+ } -+ isp->isp_mboxtmp[box] = mbp->param[box] = 0; -+ } -+ -+ isp->isp_lastmbxcmd = opcode; -+ -+ /* -+ * We assume that we can't overwrite a previous command. -+ */ -+ isp->isp_obits = obits; -+ isp->isp_mboxbsy = 1; -+ -+ /* -+ * Set Host Interrupt condition so that RISC will pick up mailbox regs. -+ */ -+ ISP_WRITE(isp, HCCR, HCCR_CMD_SET_HOST_INT); -+ -+ /* -+ * While we haven't finished the command, spin our wheels here. -+ */ -+ MBOX_WAIT_COMPLETE(isp); -+ -+ if (isp->isp_mboxbsy) { -+ /* -+ * Command timed out. -+ */ -+ isp->isp_mboxbsy = 0; -+ MBOX_RELEASE(isp); -+ return; -+ } -+ -+ /* -+ * Copy back output registers. -+ */ -+ for (box = 0; box < MAX_MAILBOX; box++) { -+ if (obits & (1 << box)) { -+ mbp->param[box] = isp->isp_mboxtmp[box]; -+ } -+ } -+ -+ MBOX_RELEASE(isp); -+ -+ if (logmask == 0 || opcode == MBOX_EXEC_FIRMWARE) { -+ return; -+ } -+#ifdef ISP_STRIPPED -+ cname = NULL; -+#else -+ cname = (IS_FC(isp))? fc_mbcmd_names[opcode] : scsi_mbcmd_names[opcode]; -+#endif -+ if (cname == NULL) { -+ cname = tname; -+ SNPRINTF(tname, sizeof tname, "opcode %x", opcode); -+ } -+ -+ /* -+ * Just to be chatty here... -+ */ -+ xname = NULL; -+ switch (mbp->param[0]) { -+ case MBOX_COMMAND_COMPLETE: -+ break; -+ case MBOX_INVALID_COMMAND: -+ if (logmask & MBLOGMASK(MBOX_COMMAND_COMPLETE)) -+ xname = "INVALID COMMAND"; -+ break; -+ case MBOX_HOST_INTERFACE_ERROR: -+ if (logmask & MBLOGMASK(MBOX_HOST_INTERFACE_ERROR)) -+ xname = "HOST INTERFACE ERROR"; -+ break; -+ case MBOX_TEST_FAILED: -+ if (logmask & MBLOGMASK(MBOX_TEST_FAILED)) -+ xname = "TEST FAILED"; -+ break; -+ case MBOX_COMMAND_ERROR: -+ if (logmask & MBLOGMASK(MBOX_COMMAND_ERROR)) -+ xname = "COMMAND ERROR"; -+ break; -+ case MBOX_COMMAND_PARAM_ERROR: -+ if (logmask & MBLOGMASK(MBOX_COMMAND_PARAM_ERROR)) -+ xname = "COMMAND PARAMETER ERROR"; -+ break; -+ case MBOX_LOOP_ID_USED: -+ if (logmask & MBLOGMASK(MBOX_LOOP_ID_USED)) -+ xname = "LOOP ID ALREADY IN USE"; -+ break; -+ case MBOX_PORT_ID_USED: -+ if (logmask & MBLOGMASK(MBOX_PORT_ID_USED)) -+ xname = "PORT ID ALREADY IN USE"; -+ break; -+ case MBOX_ALL_IDS_USED: -+ if (logmask & MBLOGMASK(MBOX_ALL_IDS_USED)) -+ xname = "ALL LOOP IDS IN USE"; -+ break; -+ case 0: /* special case */ -+ xname = "TIMEOUT"; -+ break; -+ default: -+ SNPRINTF(mname, sizeof mname, "error 0x%x", mbp->param[0]); -+ xname = mname; -+ break; -+ } -+ if (xname) -+ isp_prt(isp, ISP_LOGALL, "Mailbox Command '%s' failed (%s)", -+ cname, xname); -+} -+ -+static void -+isp_fw_state(struct ispsoftc *isp) -+{ -+ if (IS_FC(isp)) { -+ mbreg_t mbs; -+ fcparam *fcp = isp->isp_param; -+ -+ mbs.param[0] = MBOX_GET_FW_STATE; -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { -+ fcp->isp_fwstate = mbs.param[1]; -+ } -+ } -+} -+ -+static void -+isp_update(struct ispsoftc *isp) -+{ -+ int bus, upmask; -+ -+ for (bus = 0, upmask = isp->isp_update; upmask != 0; bus++) { -+ if (upmask & (1 << bus)) { -+ isp_update_bus(isp, bus); -+ } -+ upmask &= ~(1 << bus); -+ } -+} -+ -+static void -+isp_update_bus(struct ispsoftc *isp, int bus) -+{ -+ int tgt; -+ mbreg_t mbs; -+ sdparam *sdp; -+ -+ isp->isp_update &= ~(1 << bus); -+ if (IS_FC(isp)) { -+ /* -+ * There are no 'per-bus' settings for Fibre Channel. -+ */ -+ return; -+ } -+ sdp = isp->isp_param; -+ sdp += bus; -+ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ u_int16_t flags, period, offset; -+ int get; -+ -+ if (sdp->isp_devparam[tgt].dev_enable == 0) { -+ sdp->isp_devparam[tgt].dev_update = 0; -+ sdp->isp_devparam[tgt].dev_refresh = 0; -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "skipping target %d bus %d update", tgt, bus); -+ continue; -+ } -+ /* -+ * If the goal is to update the status of the device, -+ * take what's in goal_flags and try and set the device -+ * toward that. Otherwise, if we're just refreshing the -+ * current device state, get the current parameters. -+ */ -+ -+ /* -+ * Refresh overrides set -+ */ -+ if (sdp->isp_devparam[tgt].dev_refresh) { -+ mbs.param[0] = MBOX_GET_TARGET_PARAMS; -+ sdp->isp_devparam[tgt].dev_refresh = 0; -+ get = 1; -+ } else if (sdp->isp_devparam[tgt].dev_update) { -+ mbs.param[0] = MBOX_SET_TARGET_PARAMS; -+ /* -+ * Make sure goal_flags has "Renegotiate on Error" -+ * on and "Freeze Queue on Error" off. -+ */ -+ sdp->isp_devparam[tgt].goal_flags |= DPARM_RENEG; -+ sdp->isp_devparam[tgt].goal_flags &= ~DPARM_QFRZ; -+ -+ mbs.param[2] = sdp->isp_devparam[tgt].goal_flags; -+ -+ /* -+ * Insist that PARITY must be enabled -+ * if SYNC or WIDE is enabled. -+ */ -+ if ((mbs.param[2] & (DPARM_SYNC|DPARM_WIDE)) != 0) { -+ mbs.param[2] |= DPARM_PARITY; -+ } -+ -+ if ((mbs.param[2] & DPARM_SYNC) == 0) { -+ mbs.param[3] = 0; -+ } else { -+ mbs.param[3] = -+ (sdp->isp_devparam[tgt].goal_offset << 8) | -+ (sdp->isp_devparam[tgt].goal_period); -+ } -+ /* -+ * A command completion later that has -+ * RQSTF_NEGOTIATION set can cause -+ * the dev_refresh/announce cycle also. -+ * -+ * Note: It is really important to update our current -+ * flags with at least the state of TAG capabilities- -+ * otherwise we might try and send a tagged command -+ * when we have it all turned off. So change it here -+ * to say that current already matches goal. -+ */ -+ sdp->isp_devparam[tgt].actv_flags &= ~DPARM_TQING; -+ sdp->isp_devparam[tgt].actv_flags |= -+ (sdp->isp_devparam[tgt].goal_flags & DPARM_TQING); -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "bus %d set tgt %d flags 0x%x off 0x%x period 0x%x", -+ bus, tgt, mbs.param[2], mbs.param[3] >> 8, -+ mbs.param[3] & 0xff); -+ sdp->isp_devparam[tgt].dev_update = 0; -+ sdp->isp_devparam[tgt].dev_refresh = 1; -+ get = 0; -+ } else { -+ continue; -+ } -+ mbs.param[1] = (bus << 15) | (tgt << 8); -+ isp_mboxcmd(isp, &mbs, MBLOGALL); -+ if (get == 0) { -+ isp->isp_sendmarker |= (1 << bus); -+ continue; -+ } -+ flags = mbs.param[2]; -+ period = mbs.param[3] & 0xff; -+ offset = mbs.param[3] >> 8; -+ sdp->isp_devparam[tgt].actv_flags = flags; -+ sdp->isp_devparam[tgt].actv_period = period; -+ sdp->isp_devparam[tgt].actv_offset = offset; -+ get = (bus << 16) | tgt; -+ (void) isp_async(isp, ISPASYNC_NEW_TGT_PARAMS, &get); -+ } -+ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ if (sdp->isp_devparam[tgt].dev_update || -+ sdp->isp_devparam[tgt].dev_refresh) { -+ isp->isp_update |= (1 << bus); -+ break; -+ } -+ } -+} -+ -+#ifndef DEFAULT_FRAMESIZE -+#define DEFAULT_FRAMESIZE(isp) ICB_DFLT_FRMLEN -+#endif -+#ifndef DEFAULT_EXEC_THROTTLE -+#define DEFAULT_EXEC_THROTTLE(isp) ISP_EXEC_THROTTLE -+#endif -+ -+static void -+isp_setdfltparm(struct ispsoftc *isp, int channel) -+{ -+ int tgt; -+ mbreg_t mbs; -+ sdparam *sdp; -+ -+ if (IS_FC(isp)) { -+ fcparam *fcp = (fcparam *) isp->isp_param; -+ int nvfail; -+ -+ fcp += channel; -+ if (fcp->isp_gotdparms) { -+ return; -+ } -+ fcp->isp_gotdparms = 1; -+ fcp->isp_maxfrmlen = DEFAULT_FRAMESIZE(isp); -+ fcp->isp_maxalloc = ICB_DFLT_ALLOC; -+ fcp->isp_execthrottle = DEFAULT_EXEC_THROTTLE(isp); -+ fcp->isp_retry_delay = ICB_DFLT_RDELAY; -+ fcp->isp_retry_count = ICB_DFLT_RCOUNT; -+ /* Platform specific.... */ -+ fcp->isp_loopid = DEFAULT_LOOPID(isp); -+ fcp->isp_nodewwn = DEFAULT_NODEWWN(isp); -+ fcp->isp_portwwn = DEFAULT_PORTWWN(isp); -+ fcp->isp_fwoptions = 0; -+ fcp->isp_fwoptions |= ICBOPT_FAIRNESS; -+ fcp->isp_fwoptions |= ICBOPT_PDBCHANGE_AE; -+ fcp->isp_fwoptions |= ICBOPT_HARD_ADDRESS; -+#ifndef ISP_NO_FASTPOST_FC -+ fcp->isp_fwoptions |= ICBOPT_FAST_POST; -+#endif -+ if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) -+ fcp->isp_fwoptions |= ICBOPT_FULL_DUPLEX; -+ -+ /* -+ * Make sure this is turned off now until we get -+ * extended options from NVRAM -+ */ -+ fcp->isp_fwoptions &= ~ICBOPT_EXTENDED; -+ -+ /* -+ * Now try and read NVRAM unless told to not do so. -+ * This will set fcparam's isp_nodewwn && isp_portwwn. -+ */ -+ if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) { -+ nvfail = isp_read_nvram(isp); -+ if (nvfail) -+ isp->isp_confopts |= ISP_CFG_NONVRAM; -+ } else { -+ nvfail = 1; -+ } -+ /* -+ * Set node && port to override platform set defaults -+ * unless the nvram read failed (or none was done), -+ * or the platform code wants to use what had been -+ * set in the defaults. -+ */ -+ if (nvfail) { -+ isp->isp_confopts |= ISP_CFG_OWNWWPN|ISP_CFG_OWNWWNN; -+ } -+ if (isp->isp_confopts & ISP_CFG_OWNWWNN) { -+ isp_prt(isp, ISP_LOGCONFIG, "Using Node WWN 0x%08x%08x", -+ (u_int32_t) (DEFAULT_NODEWWN(isp) >> 32), -+ (u_int32_t) (DEFAULT_NODEWWN(isp) & 0xffffffff)); -+ ISP_NODEWWN(isp) = DEFAULT_NODEWWN(isp); -+ } else { -+ /* -+ * We always start out with values derived -+ * from NVRAM or our platform default. -+ */ -+ ISP_NODEWWN(isp) = fcp->isp_nodewwn; -+ } -+ if (isp->isp_confopts & ISP_CFG_OWNWWPN) { -+ isp_prt(isp, ISP_LOGCONFIG, "Using Port WWN 0x%08x%08x", -+ (u_int32_t) (DEFAULT_PORTWWN(isp) >> 32), -+ (u_int32_t) (DEFAULT_PORTWWN(isp) & 0xffffffff)); -+ ISP_PORTWWN(isp) = DEFAULT_PORTWWN(isp); -+ } else { -+ /* -+ * We always start out with values derived -+ * from NVRAM or our platform default. -+ */ -+ ISP_PORTWWN(isp) = fcp->isp_portwwn; -+ } -+ return; -+ } -+ -+ sdp = (sdparam *) isp->isp_param; -+ sdp += channel; -+ -+ /* -+ * Been there, done that, got the T-shirt... -+ */ -+ if (sdp->isp_gotdparms) { -+ return; -+ } -+ sdp->isp_gotdparms = 1; -+ -+ /* -+ * Establish some default parameters. -+ */ -+ sdp->isp_cmd_dma_burst_enable = 0; -+ sdp->isp_data_dma_burst_enabl = 1; -+ sdp->isp_fifo_threshold = 0; -+ sdp->isp_initiator_id = DEFAULT_IID(isp); -+ if (isp->isp_type >= ISP_HA_SCSI_1040) { -+ sdp->isp_async_data_setup = 9; -+ } else { -+ sdp->isp_async_data_setup = 6; -+ } -+ sdp->isp_selection_timeout = 250; -+ sdp->isp_max_queue_depth = MAXISPREQUEST(isp); -+ sdp->isp_tag_aging = 8; -+ sdp->isp_bus_reset_delay = 5; -+ /* -+ * Don't retry selection, busy or queue full automatically- reflect -+ * these back to us. -+ */ -+ sdp->isp_retry_count = 0; -+ sdp->isp_retry_delay = 0; -+ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ sdp->isp_devparam[tgt].exc_throttle = ISP_EXEC_THROTTLE; -+ sdp->isp_devparam[tgt].dev_enable = 1; -+ } -+ -+ /* -+ * If we've not been told to avoid reading NVRAM, try and read it. -+ * If we're successful reading it, we can then return because NVRAM -+ * will tell us what the desired settings are. Otherwise, we establish -+ * some reasonable 'fake' nvram and goal defaults. -+ */ -+ -+ if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) { -+ if (isp_read_nvram(isp) == 0) { -+ return; -+ } -+ } -+ -+ /* -+ * Now try and see whether we have specific values for them. -+ */ -+ if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) { -+ mbs.param[0] = MBOX_GET_ACT_NEG_STATE; -+ isp_mboxcmd(isp, &mbs, MBLOGNONE); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ sdp->isp_req_ack_active_neg = 1; -+ sdp->isp_data_line_active_neg = 1; -+ } else { -+ sdp->isp_req_ack_active_neg = -+ (mbs.param[1+channel] >> 4) & 0x1; -+ sdp->isp_data_line_active_neg = -+ (mbs.param[1+channel] >> 5) & 0x1; -+ } -+ } -+ -+ isp_prt(isp, ISP_LOGDEBUG0, sc0, sc3, -+ 0, sdp->isp_fifo_threshold, sdp->isp_initiator_id, -+ sdp->isp_bus_reset_delay, sdp->isp_retry_count, -+ sdp->isp_retry_delay, sdp->isp_async_data_setup); -+ isp_prt(isp, ISP_LOGDEBUG0, sc1, sc3, -+ sdp->isp_req_ack_active_neg, sdp->isp_data_line_active_neg, -+ sdp->isp_data_dma_burst_enabl, sdp->isp_cmd_dma_burst_enable, -+ sdp->isp_selection_timeout, sdp->isp_max_queue_depth); -+ -+ /* -+ * The trick here is to establish a default for the default (honk!) -+ * state (goal_flags). Then try and get the current status from -+ * the card to fill in the current state. We don't, in fact, set -+ * the default to the SAFE default state- that's not the goal state. -+ */ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ u_int8_t off, per; -+ sdp->isp_devparam[tgt].actv_offset = 0; -+ sdp->isp_devparam[tgt].actv_period = 0; -+ sdp->isp_devparam[tgt].actv_flags = 0; -+ -+ sdp->isp_devparam[tgt].goal_flags = -+ sdp->isp_devparam[tgt].nvrm_flags = DPARM_DEFAULT; -+ -+ /* -+ * We default to Wide/Fast for versions less than a 1040 -+ * (unless it's SBus). -+ */ -+ if (IS_ULTRA3(isp)) { -+ off = ISP_80M_SYNCPARMS >> 8; -+ per = ISP_80M_SYNCPARMS & 0xff; -+ } else if (IS_ULTRA2(isp)) { -+ off = ISP_40M_SYNCPARMS >> 8; -+ per = ISP_40M_SYNCPARMS & 0xff; -+ } else if (IS_1240(isp)) { -+ off = ISP_20M_SYNCPARMS >> 8; -+ per = ISP_20M_SYNCPARMS & 0xff; -+ } else if ((isp->isp_bustype == ISP_BT_SBUS && -+ isp->isp_type < ISP_HA_SCSI_1020A) || -+ (isp->isp_bustype == ISP_BT_PCI && -+ isp->isp_type < ISP_HA_SCSI_1040) || -+ (isp->isp_clock && isp->isp_clock < 60) || -+ (sdp->isp_ultramode == 0)) { -+ off = ISP_10M_SYNCPARMS >> 8; -+ per = ISP_10M_SYNCPARMS & 0xff; -+ } else { -+ off = ISP_20M_SYNCPARMS_1040 >> 8; -+ per = ISP_20M_SYNCPARMS_1040 & 0xff; -+ } -+ sdp->isp_devparam[tgt].goal_offset = -+ sdp->isp_devparam[tgt].nvrm_offset = off; -+ sdp->isp_devparam[tgt].goal_period = -+ sdp->isp_devparam[tgt].nvrm_period = per; -+ -+ isp_prt(isp, ISP_LOGDEBUG0, sc2, sc3, -+ channel, tgt, sdp->isp_devparam[tgt].nvrm_flags, -+ sdp->isp_devparam[tgt].nvrm_offset, -+ sdp->isp_devparam[tgt].nvrm_period); -+ } -+} -+ -+/* -+ * Re-initialize the ISP and complete all orphaned commands -+ * with a 'botched' notice. The reset/init routines should -+ * not disturb an already active list of commands. -+ * -+ * Locks held prior to coming here. -+ */ -+ -+void -+isp_reinit(struct ispsoftc *isp) -+{ -+ XS_T *xs; -+ u_int16_t handle; -+ -+ if (IS_FC(isp)) { -+ isp_mark_getpdb_all(isp); -+ } -+ isp_reset(isp); -+ if (isp->isp_state != ISP_RESETSTATE) { -+ isp_prt(isp, ISP_LOGERR, "isp_reinit cannot reset card"); -+ } else if (isp->isp_role != ISP_ROLE_NONE) { -+ isp_init(isp); -+ if (isp->isp_state == ISP_INITSTATE) { -+ isp->isp_state = ISP_RUNSTATE; -+ } -+ if (isp->isp_state != ISP_RUNSTATE) { -+ isp_prt(isp, ISP_LOGERR, -+ "isp_reinit cannot restart card"); -+ } -+ } -+ isp->isp_nactive = 0; -+ -+ for (handle = 1; (int) handle <= isp->isp_maxcmds; handle++) { -+ xs = isp_find_xs(isp, handle); -+ if (xs == NULL) { -+ continue; -+ } -+ isp_destroy_handle(isp, handle); -+ if (XS_XFRLEN(xs)) { -+ ISP_DMAFREE(isp, xs, handle); -+ XS_RESID(xs) = XS_XFRLEN(xs); -+ } else { -+ XS_RESID(xs) = 0; -+ } -+ XS_SETERR(xs, HBA_BUSRESET); -+ isp_done(xs); -+ } -+} -+ -+/* -+ * NVRAM Routines -+ */ -+static int -+isp_read_nvram(struct ispsoftc *isp) -+{ -+ int i, amt; -+ u_int8_t csum, minversion; -+ union { -+ u_int8_t _x[ISP2100_NVRAM_SIZE]; -+ u_int16_t _s[ISP2100_NVRAM_SIZE>>1]; -+ } _n; -+#define nvram_data _n._x -+#define nvram_words _n._s -+ -+ if (IS_FC(isp)) { -+ amt = ISP2100_NVRAM_SIZE; -+ minversion = 1; -+ } else if (IS_ULTRA2(isp)) { -+ amt = ISP1080_NVRAM_SIZE; -+ minversion = 0; -+ } else { -+ amt = ISP_NVRAM_SIZE; -+ minversion = 2; -+ } -+ -+ /* -+ * Just read the first two words first to see if we have a valid -+ * NVRAM to continue reading the rest with. -+ */ -+ for (i = 0; i < 2; i++) { -+ isp_rdnvram_word(isp, i, &nvram_words[i]); -+ } -+ if (nvram_data[0] != 'I' || nvram_data[1] != 'S' || -+ nvram_data[2] != 'P') { -+ if (isp->isp_bustype != ISP_BT_SBUS) { -+ isp_prt(isp, ISP_LOGWARN, "invalid NVRAM header"); -+ isp_prt(isp, ISP_LOGDEBUG0, "%x %x %x", -+ nvram_data[0], nvram_data[1], nvram_data[2]); -+ } -+ return (-1); -+ } -+ for (i = 2; i < amt>>1; i++) { -+ isp_rdnvram_word(isp, i, &nvram_words[i]); -+ } -+ for (csum = 0, i = 0; i < amt; i++) { -+ csum += nvram_data[i]; -+ } -+ if (csum != 0) { -+ isp_prt(isp, ISP_LOGWARN, "invalid NVRAM checksum"); -+ return (-1); -+ } -+ if (ISP_NVRAM_VERSION(nvram_data) < minversion) { -+ isp_prt(isp, ISP_LOGWARN, "version %d NVRAM not understood", -+ ISP_NVRAM_VERSION(nvram_data)); -+ return (-1); -+ } -+ -+ if (IS_ULTRA3(isp)) { -+ isp_parse_nvram_12160(isp, 0, nvram_data); -+ if (IS_12160(isp)) -+ isp_parse_nvram_12160(isp, 1, nvram_data); -+ } else if (IS_1080(isp)) { -+ isp_parse_nvram_1080(isp, 0, nvram_data); -+ } else if (IS_1280(isp) || IS_1240(isp)) { -+ isp_parse_nvram_1080(isp, 0, nvram_data); -+ isp_parse_nvram_1080(isp, 1, nvram_data); -+ } else if (IS_SCSI(isp)) { -+ isp_parse_nvram_1020(isp, nvram_data); -+ } else { -+ isp_parse_nvram_2100(isp, nvram_data); -+ } -+ return (0); -+#undef nvram_data -+#undef nvram_words -+} -+ -+static void -+isp_rdnvram_word(struct ispsoftc *isp, int wo, u_int16_t *rp) -+{ -+ int i, cbits; -+ u_int16_t bit, rqst; -+ -+ ISP_WRITE(isp, BIU_NVRAM, BIU_NVRAM_SELECT); -+ USEC_DELAY(2); -+ ISP_WRITE(isp, BIU_NVRAM, BIU_NVRAM_SELECT|BIU_NVRAM_CLOCK); -+ USEC_DELAY(2); -+ -+ if (IS_FC(isp)) { -+ wo &= ((ISP2100_NVRAM_SIZE >> 1) - 1); -+ if (IS_2312(isp) && isp->isp_port) { -+ wo += 128; -+ } -+ rqst = (ISP_NVRAM_READ << 8) | wo; -+ cbits = 10; -+ } else if (IS_ULTRA2(isp)) { -+ wo &= ((ISP1080_NVRAM_SIZE >> 1) - 1); -+ rqst = (ISP_NVRAM_READ << 8) | wo; -+ cbits = 10; -+ } else { -+ wo &= ((ISP_NVRAM_SIZE >> 1) - 1); -+ rqst = (ISP_NVRAM_READ << 6) | wo; -+ cbits = 8; -+ } -+ -+ /* -+ * Clock the word select request out... -+ */ -+ for (i = cbits; i >= 0; i--) { -+ if ((rqst >> i) & 1) { -+ bit = BIU_NVRAM_SELECT | BIU_NVRAM_DATAOUT; -+ } else { -+ bit = BIU_NVRAM_SELECT; -+ } -+ ISP_WRITE(isp, BIU_NVRAM, bit); -+ USEC_DELAY(2); -+ ISP_WRITE(isp, BIU_NVRAM, bit | BIU_NVRAM_CLOCK); -+ USEC_DELAY(2); -+ ISP_WRITE(isp, BIU_NVRAM, bit); -+ USEC_DELAY(2); -+ } -+ /* -+ * Now read the result back in (bits come back in MSB format). -+ */ -+ *rp = 0; -+ for (i = 0; i < 16; i++) { -+ u_int16_t rv; -+ *rp <<= 1; -+ ISP_WRITE(isp, BIU_NVRAM, BIU_NVRAM_SELECT|BIU_NVRAM_CLOCK); -+ USEC_DELAY(2); -+ rv = ISP_READ(isp, BIU_NVRAM); -+ if (rv & BIU_NVRAM_DATAIN) { -+ *rp |= 1; -+ } -+ USEC_DELAY(2); -+ ISP_WRITE(isp, BIU_NVRAM, BIU_NVRAM_SELECT); -+ USEC_DELAY(2); -+ } -+ ISP_WRITE(isp, BIU_NVRAM, 0); -+ USEC_DELAY(2); -+ ISP_SWIZZLE_NVRAM_WORD(isp, rp); -+} -+ -+static void -+isp_parse_nvram_1020(struct ispsoftc *isp, u_int8_t *nvram_data) -+{ -+ sdparam *sdp = (sdparam *) isp->isp_param; -+ int tgt; -+ -+ sdp->isp_fifo_threshold = -+ ISP_NVRAM_FIFO_THRESHOLD(nvram_data) | -+ (ISP_NVRAM_FIFO_THRESHOLD_128(nvram_data) << 2); -+ -+ if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) -+ sdp->isp_initiator_id = -+ ISP_NVRAM_INITIATOR_ID(nvram_data); -+ -+ sdp->isp_bus_reset_delay = -+ ISP_NVRAM_BUS_RESET_DELAY(nvram_data); -+ -+ sdp->isp_retry_count = -+ ISP_NVRAM_BUS_RETRY_COUNT(nvram_data); -+ -+ sdp->isp_retry_delay = -+ ISP_NVRAM_BUS_RETRY_DELAY(nvram_data); -+ -+ sdp->isp_async_data_setup = -+ ISP_NVRAM_ASYNC_DATA_SETUP_TIME(nvram_data); -+ -+ if (isp->isp_type >= ISP_HA_SCSI_1040) { -+ if (sdp->isp_async_data_setup < 9) { -+ sdp->isp_async_data_setup = 9; -+ } -+ } else { -+ if (sdp->isp_async_data_setup != 6) { -+ sdp->isp_async_data_setup = 6; -+ } -+ } -+ -+ sdp->isp_req_ack_active_neg = -+ ISP_NVRAM_REQ_ACK_ACTIVE_NEGATION(nvram_data); -+ -+ sdp->isp_data_line_active_neg = -+ ISP_NVRAM_DATA_LINE_ACTIVE_NEGATION(nvram_data); -+ -+ sdp->isp_data_dma_burst_enabl = -+ ISP_NVRAM_DATA_DMA_BURST_ENABLE(nvram_data); -+ -+ sdp->isp_cmd_dma_burst_enable = -+ ISP_NVRAM_CMD_DMA_BURST_ENABLE(nvram_data); -+ -+ sdp->isp_tag_aging = -+ ISP_NVRAM_TAG_AGE_LIMIT(nvram_data); -+ -+ sdp->isp_selection_timeout = -+ ISP_NVRAM_SELECTION_TIMEOUT(nvram_data); -+ -+ sdp->isp_max_queue_depth = -+ ISP_NVRAM_MAX_QUEUE_DEPTH(nvram_data); -+ -+ sdp->isp_fast_mttr = ISP_NVRAM_FAST_MTTR_ENABLE(nvram_data); -+ -+ isp_prt(isp, ISP_LOGDEBUG0, sc0, sc4, -+ 0, sdp->isp_fifo_threshold, sdp->isp_initiator_id, -+ sdp->isp_bus_reset_delay, sdp->isp_retry_count, -+ sdp->isp_retry_delay, sdp->isp_async_data_setup); -+ isp_prt(isp, ISP_LOGDEBUG0, sc1, sc4, -+ sdp->isp_req_ack_active_neg, sdp->isp_data_line_active_neg, -+ sdp->isp_data_dma_burst_enabl, sdp->isp_cmd_dma_burst_enable, -+ sdp->isp_selection_timeout, sdp->isp_max_queue_depth); -+ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ sdp->isp_devparam[tgt].dev_enable = -+ ISP_NVRAM_TGT_DEVICE_ENABLE(nvram_data, tgt); -+ sdp->isp_devparam[tgt].exc_throttle = -+ ISP_NVRAM_TGT_EXEC_THROTTLE(nvram_data, tgt); -+ sdp->isp_devparam[tgt].nvrm_offset = -+ ISP_NVRAM_TGT_SYNC_OFFSET(nvram_data, tgt); -+ sdp->isp_devparam[tgt].nvrm_period = -+ ISP_NVRAM_TGT_SYNC_PERIOD(nvram_data, tgt); -+ /* -+ * We probably shouldn't lie about this, but it -+ * it makes it much safer if we limit NVRAM values -+ * to sanity. -+ */ -+ if (isp->isp_type < ISP_HA_SCSI_1040) { -+ /* -+ * If we're not ultra, we can't possibly -+ * be a shorter period than this. -+ */ -+ if (sdp->isp_devparam[tgt].nvrm_period < 0x19) { -+ sdp->isp_devparam[tgt].nvrm_period = 0x19; -+ } -+ if (sdp->isp_devparam[tgt].nvrm_offset > 0xc) { -+ sdp->isp_devparam[tgt].nvrm_offset = 0x0c; -+ } -+ } else { -+ if (sdp->isp_devparam[tgt].nvrm_offset > 0x8) { -+ sdp->isp_devparam[tgt].nvrm_offset = 0x8; -+ } -+ } -+ sdp->isp_devparam[tgt].nvrm_flags = 0; -+ if (ISP_NVRAM_TGT_RENEG(nvram_data, tgt)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_RENEG; -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_ARQ; -+ if (ISP_NVRAM_TGT_TQING(nvram_data, tgt)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_TQING; -+ if (ISP_NVRAM_TGT_SYNC(nvram_data, tgt)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_SYNC; -+ if (ISP_NVRAM_TGT_WIDE(nvram_data, tgt)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_WIDE; -+ if (ISP_NVRAM_TGT_PARITY(nvram_data, tgt)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_PARITY; -+ if (ISP_NVRAM_TGT_DISC(nvram_data, tgt)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_DISC; -+ sdp->isp_devparam[tgt].actv_flags = 0; /* we don't know */ -+ isp_prt(isp, ISP_LOGDEBUG0, sc2, sc4, -+ 0, tgt, sdp->isp_devparam[tgt].nvrm_flags, -+ sdp->isp_devparam[tgt].nvrm_offset, -+ sdp->isp_devparam[tgt].nvrm_period); -+ sdp->isp_devparam[tgt].goal_offset = -+ sdp->isp_devparam[tgt].nvrm_offset; -+ sdp->isp_devparam[tgt].goal_period = -+ sdp->isp_devparam[tgt].nvrm_period; -+ sdp->isp_devparam[tgt].goal_flags = -+ sdp->isp_devparam[tgt].nvrm_flags; -+ } -+} -+ -+static void -+isp_parse_nvram_1080(struct ispsoftc *isp, int bus, u_int8_t *nvram_data) -+{ -+ sdparam *sdp = (sdparam *) isp->isp_param; -+ int tgt; -+ -+ sdp += bus; -+ -+ sdp->isp_fifo_threshold = -+ ISP1080_NVRAM_FIFO_THRESHOLD(nvram_data); -+ -+ if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) -+ sdp->isp_initiator_id = -+ ISP1080_NVRAM_INITIATOR_ID(nvram_data, bus); -+ -+ sdp->isp_bus_reset_delay = -+ ISP1080_NVRAM_BUS_RESET_DELAY(nvram_data, bus); -+ -+ sdp->isp_retry_count = -+ ISP1080_NVRAM_BUS_RETRY_COUNT(nvram_data, bus); -+ -+ sdp->isp_retry_delay = -+ ISP1080_NVRAM_BUS_RETRY_DELAY(nvram_data, bus); -+ -+ sdp->isp_async_data_setup = -+ ISP1080_NVRAM_ASYNC_DATA_SETUP_TIME(nvram_data, bus); -+ -+ sdp->isp_req_ack_active_neg = -+ ISP1080_NVRAM_REQ_ACK_ACTIVE_NEGATION(nvram_data, bus); -+ -+ sdp->isp_data_line_active_neg = -+ ISP1080_NVRAM_DATA_LINE_ACTIVE_NEGATION(nvram_data, bus); -+ -+ sdp->isp_data_dma_burst_enabl = -+ ISP1080_NVRAM_BURST_ENABLE(nvram_data); -+ -+ sdp->isp_cmd_dma_burst_enable = -+ ISP1080_NVRAM_BURST_ENABLE(nvram_data); -+ -+ sdp->isp_selection_timeout = -+ ISP1080_NVRAM_SELECTION_TIMEOUT(nvram_data, bus); -+ -+ sdp->isp_max_queue_depth = -+ ISP1080_NVRAM_MAX_QUEUE_DEPTH(nvram_data, bus); -+ -+ isp_prt(isp, ISP_LOGDEBUG0, sc0, sc4, -+ bus, sdp->isp_fifo_threshold, sdp->isp_initiator_id, -+ sdp->isp_bus_reset_delay, sdp->isp_retry_count, -+ sdp->isp_retry_delay, sdp->isp_async_data_setup); -+ isp_prt(isp, ISP_LOGDEBUG0, sc1, sc4, -+ sdp->isp_req_ack_active_neg, sdp->isp_data_line_active_neg, -+ sdp->isp_data_dma_burst_enabl, sdp->isp_cmd_dma_burst_enable, -+ sdp->isp_selection_timeout, sdp->isp_max_queue_depth); -+ -+ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ sdp->isp_devparam[tgt].dev_enable = -+ ISP1080_NVRAM_TGT_DEVICE_ENABLE(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].exc_throttle = -+ ISP1080_NVRAM_TGT_EXEC_THROTTLE(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].nvrm_offset = -+ ISP1080_NVRAM_TGT_SYNC_OFFSET(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].nvrm_period = -+ ISP1080_NVRAM_TGT_SYNC_PERIOD(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].nvrm_flags = 0; -+ if (ISP1080_NVRAM_TGT_RENEG(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_RENEG; -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_ARQ; -+ if (ISP1080_NVRAM_TGT_TQING(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_TQING; -+ if (ISP1080_NVRAM_TGT_SYNC(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_SYNC; -+ if (ISP1080_NVRAM_TGT_WIDE(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_WIDE; -+ if (ISP1080_NVRAM_TGT_PARITY(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_PARITY; -+ if (ISP1080_NVRAM_TGT_DISC(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_DISC; -+ sdp->isp_devparam[tgt].actv_flags = 0; -+ isp_prt(isp, ISP_LOGDEBUG0, sc2, sc4, -+ bus, tgt, sdp->isp_devparam[tgt].nvrm_flags, -+ sdp->isp_devparam[tgt].nvrm_offset, -+ sdp->isp_devparam[tgt].nvrm_period); -+ sdp->isp_devparam[tgt].goal_offset = -+ sdp->isp_devparam[tgt].nvrm_offset; -+ sdp->isp_devparam[tgt].goal_period = -+ sdp->isp_devparam[tgt].nvrm_period; -+ sdp->isp_devparam[tgt].goal_flags = -+ sdp->isp_devparam[tgt].nvrm_flags; -+ } -+} -+ -+static void -+isp_parse_nvram_12160(struct ispsoftc *isp, int bus, u_int8_t *nvram_data) -+{ -+ sdparam *sdp = (sdparam *) isp->isp_param; -+ int tgt; -+ -+ sdp += bus; -+ -+ sdp->isp_fifo_threshold = -+ ISP12160_NVRAM_FIFO_THRESHOLD(nvram_data); -+ -+ if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) -+ sdp->isp_initiator_id = -+ ISP12160_NVRAM_INITIATOR_ID(nvram_data, bus); -+ -+ sdp->isp_bus_reset_delay = -+ ISP12160_NVRAM_BUS_RESET_DELAY(nvram_data, bus); -+ -+ sdp->isp_retry_count = -+ ISP12160_NVRAM_BUS_RETRY_COUNT(nvram_data, bus); -+ -+ sdp->isp_retry_delay = -+ ISP12160_NVRAM_BUS_RETRY_DELAY(nvram_data, bus); -+ -+ sdp->isp_async_data_setup = -+ ISP12160_NVRAM_ASYNC_DATA_SETUP_TIME(nvram_data, bus); -+ -+ sdp->isp_req_ack_active_neg = -+ ISP12160_NVRAM_REQ_ACK_ACTIVE_NEGATION(nvram_data, bus); -+ -+ sdp->isp_data_line_active_neg = -+ ISP12160_NVRAM_DATA_LINE_ACTIVE_NEGATION(nvram_data, bus); -+ -+ sdp->isp_data_dma_burst_enabl = -+ ISP12160_NVRAM_BURST_ENABLE(nvram_data); -+ -+ sdp->isp_cmd_dma_burst_enable = -+ ISP12160_NVRAM_BURST_ENABLE(nvram_data); -+ -+ sdp->isp_selection_timeout = -+ ISP12160_NVRAM_SELECTION_TIMEOUT(nvram_data, bus); -+ -+ sdp->isp_max_queue_depth = -+ ISP12160_NVRAM_MAX_QUEUE_DEPTH(nvram_data, bus); -+ -+ isp_prt(isp, ISP_LOGDEBUG0, sc0, sc4, -+ bus, sdp->isp_fifo_threshold, sdp->isp_initiator_id, -+ sdp->isp_bus_reset_delay, sdp->isp_retry_count, -+ sdp->isp_retry_delay, sdp->isp_async_data_setup); -+ isp_prt(isp, ISP_LOGDEBUG0, sc1, sc4, -+ sdp->isp_req_ack_active_neg, sdp->isp_data_line_active_neg, -+ sdp->isp_data_dma_burst_enabl, sdp->isp_cmd_dma_burst_enable, -+ sdp->isp_selection_timeout, sdp->isp_max_queue_depth); -+ -+ for (tgt = 0; tgt < MAX_TARGETS; tgt++) { -+ sdp->isp_devparam[tgt].dev_enable = -+ ISP12160_NVRAM_TGT_DEVICE_ENABLE(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].exc_throttle = -+ ISP12160_NVRAM_TGT_EXEC_THROTTLE(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].nvrm_offset = -+ ISP12160_NVRAM_TGT_SYNC_OFFSET(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].nvrm_period = -+ ISP12160_NVRAM_TGT_SYNC_PERIOD(nvram_data, tgt, bus); -+ sdp->isp_devparam[tgt].nvrm_flags = 0; -+ if (ISP12160_NVRAM_TGT_RENEG(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_RENEG; -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_ARQ; -+ if (ISP12160_NVRAM_TGT_TQING(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_TQING; -+ if (ISP12160_NVRAM_TGT_SYNC(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_SYNC; -+ if (ISP12160_NVRAM_TGT_WIDE(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_WIDE; -+ if (ISP12160_NVRAM_TGT_PARITY(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_PARITY; -+ if (ISP12160_NVRAM_TGT_DISC(nvram_data, tgt, bus)) -+ sdp->isp_devparam[tgt].nvrm_flags |= DPARM_DISC; -+ sdp->isp_devparam[tgt].actv_flags = 0; -+ isp_prt(isp, ISP_LOGDEBUG0, sc2, sc4, -+ bus, tgt, sdp->isp_devparam[tgt].nvrm_flags, -+ sdp->isp_devparam[tgt].nvrm_offset, -+ sdp->isp_devparam[tgt].nvrm_period); -+ sdp->isp_devparam[tgt].goal_offset = -+ sdp->isp_devparam[tgt].nvrm_offset; -+ sdp->isp_devparam[tgt].goal_period = -+ sdp->isp_devparam[tgt].nvrm_period; -+ sdp->isp_devparam[tgt].goal_flags = -+ sdp->isp_devparam[tgt].nvrm_flags; -+ } -+} -+ -+static void -+isp_parse_nvram_2100(struct ispsoftc *isp, u_int8_t *nvram_data) -+{ -+ fcparam *fcp = (fcparam *) isp->isp_param; -+ u_int64_t wwn; -+ -+ /* -+ * There is NVRAM storage for both Port and Node entities- -+ * but the Node entity appears to be unused on all the cards -+ * I can find. However, we should account for this being set -+ * at some point in the future. -+ * -+ * Qlogic WWNs have an NAA of 2, but usually nothing shows up in -+ * bits 48..60. In the case of the 2202, it appears that they do -+ * use bit 48 to distinguish between the two instances on the card. -+ * The 2204, which I've never seen, *probably* extends this method. -+ */ -+ wwn = ISP2100_NVRAM_PORT_NAME(nvram_data); -+ if (wwn) { -+ isp_prt(isp, ISP_LOGCONFIG, "NVRAM Port WWN 0x%08x%08x", -+ (u_int32_t) (wwn >> 32), (u_int32_t) (wwn & 0xffffffff)); -+ if ((wwn >> 60) == 0) { -+ wwn |= (((u_int64_t) 2)<< 60); -+ } -+ } -+ fcp->isp_portwwn = wwn; -+ if (IS_2200(isp) || IS_23XX(isp)) { -+ wwn = ISP2200_NVRAM_NODE_NAME(nvram_data); -+ if (wwn) { -+ isp_prt(isp, ISP_LOGCONFIG, "NVRAM Node WWN 0x%08x%08x", -+ (u_int32_t) (wwn >> 32), -+ (u_int32_t) (wwn & 0xffffffff)); -+ if ((wwn >> 60) == 0) { -+ wwn |= (((u_int64_t) 2)<< 60); -+ } -+ } -+ } else { -+ wwn &= ~((u_int64_t) 0xfff << 48); -+ } -+ fcp->isp_nodewwn = wwn; -+ -+ /* -+ * Make sure we have both Node and Port as non-zero values. -+ */ -+ if (fcp->isp_nodewwn != 0 && fcp->isp_portwwn == 0) { -+ fcp->isp_portwwn = fcp->isp_nodewwn; -+ } else if (fcp->isp_nodewwn == 0 && fcp->isp_portwwn != 0) { -+ fcp->isp_nodewwn = fcp->isp_portwwn; -+ } -+ -+ /* -+ * Make the Node and Port values sane if they're NAA == 2. -+ * This means to clear bits 48..56 for the Node WWN and -+ * make sure that there's some non-zero value in 48..56 -+ * for the Port WWN. -+ */ -+ if (fcp->isp_nodewwn && fcp->isp_portwwn) { -+ if ((fcp->isp_nodewwn & (((u_int64_t) 0xfff) << 48)) != 0 && -+ (fcp->isp_nodewwn >> 60) == 2) { -+ fcp->isp_nodewwn &= ~((u_int64_t) 0xfff << 48); -+ } -+ if ((fcp->isp_portwwn & (((u_int64_t) 0xfff) << 48)) == 0 && -+ (fcp->isp_portwwn >> 60) == 2) { -+ fcp->isp_portwwn |= ((u_int64_t) 1 << 56); -+ } -+ } -+ -+ isp_prt(isp, ISP_LOGDEBUG0, -+ "NVRAM: maxfrmlen %d execthrottle %d fwoptions 0x%x loopid %x", -+ ISP2100_NVRAM_MAXFRAMELENGTH(nvram_data), -+ ISP2100_NVRAM_EXECUTION_THROTTLE(nvram_data), -+ ISP2100_NVRAM_OPTIONS(nvram_data), -+ ISP2100_NVRAM_HARDLOOPID(nvram_data)); -+ -+ fcp->isp_maxalloc = -+ ISP2100_NVRAM_MAXIOCBALLOCATION(nvram_data); -+ if ((isp->isp_confopts & ISP_CFG_OWNFSZ) == 0) -+ fcp->isp_maxfrmlen = -+ ISP2100_NVRAM_MAXFRAMELENGTH(nvram_data); -+ fcp->isp_retry_delay = -+ ISP2100_NVRAM_RETRY_DELAY(nvram_data); -+ fcp->isp_retry_count = -+ ISP2100_NVRAM_RETRY_COUNT(nvram_data); -+ if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) -+ fcp->isp_loopid = -+ ISP2100_NVRAM_HARDLOOPID(nvram_data); -+ if ((isp->isp_confopts & ISP_CFG_OWNEXCTHROTTLE) == 0) -+ fcp->isp_execthrottle = -+ ISP2100_NVRAM_EXECUTION_THROTTLE(nvram_data); -+ fcp->isp_fwoptions = ISP2100_NVRAM_OPTIONS(nvram_data); -+} -+ -+#ifdef ISP_FW_CRASH_DUMP -+static void isp2200_fw_dump(struct ispsoftc *); -+static void isp2300_fw_dump(struct ispsoftc *); -+ -+static void -+isp2200_fw_dump(struct ispsoftc *isp) -+{ -+ int i, j; -+ mbreg_t mbs; -+ u_int16_t *ptr; -+ -+ ptr = FCPARAM(isp)->isp_dump_data; -+ if (ptr == NULL) { -+ isp_prt(isp, ISP_LOGERR, -+ "No place to dump RISC registers and SRAM"); -+ return; -+ } -+ if (*ptr++) { -+ isp_prt(isp, ISP_LOGERR, -+ "dump area for RISC registers and SRAM already used"); -+ return; -+ } -+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); -+ for (i = 0; i < 100; i++) { -+ USEC_DELAY(100); -+ if (ISP_READ(isp, HCCR) & HCCR_PAUSE) { -+ break; -+ } -+ } -+ if (ISP_READ(isp, HCCR) & HCCR_PAUSE) { -+ /* -+ * PBIU Registers -+ */ -+ for (i = 0; i < 8; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + (i << 1)); -+ } -+ -+ /* -+ * Mailbox Registers -+ */ -+ for (i = 0; i < 8; i++) { -+ *ptr++ = ISP_READ(isp, MBOX_BLOCK + (i << 1)); -+ } -+ -+ /* -+ * DMA Registers -+ */ -+ for (i = 0; i < 48; i++) { -+ *ptr++ = ISP_READ(isp, DMA_BLOCK + 0x20 + (i << 1)); -+ } -+ -+ /* -+ * RISC H/W Registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0); -+ for (i = 0; i < 16; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0xA0 + (i << 1)); -+ } -+ -+ /* -+ * RISC GP Registers -+ */ -+ for (j = 0; j < 8; j++) { -+ ISP_WRITE(isp, BIU_BLOCK + 0xA4, 0x2000 + (j << 8)); -+ for (i = 0; i < 16; i++) { -+ *ptr++ = -+ ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ } -+ -+ /* -+ * Frame Buffer Hardware Registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x10); -+ for (i = 0; i < 16; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ -+ /* -+ * Fibre Protocol Module 0 Hardware Registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x20); -+ for (i = 0; i < 64; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ -+ /* -+ * Fibre Protocol Module 1 Hardware Registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x30); -+ for (i = 0; i < 64; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ } else { -+ isp_prt(isp, ISP_LOGERR, "RISC Would Not Pause"); -+ return; -+ } -+ isp_prt(isp, ISP_LOGALL, -+ "isp_fw_dump: RISC registers dumped successfully"); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_SOFT_RESET); -+ for (i = 0; i < 100; i++) { -+ USEC_DELAY(100); -+ if (ISP_READ(isp, OUTMAILBOX0) == 0) { -+ break; -+ } -+ } -+ if (ISP_READ(isp, OUTMAILBOX0) != 0) { -+ isp_prt(isp, ISP_LOGERR, "Board Would Not Reset"); -+ return; -+ } -+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); -+ for (i = 0; i < 100; i++) { -+ USEC_DELAY(100); -+ if (ISP_READ(isp, HCCR) & HCCR_PAUSE) { -+ break; -+ } -+ } -+ if ((ISP_READ(isp, HCCR) & HCCR_PAUSE) == 0) { -+ isp_prt(isp, ISP_LOGERR, "RISC Would Not Pause After Reset"); -+ return; -+ } -+ ISP_WRITE(isp, RISC_EMB, 0xf2); -+ ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); -+ for (i = 0; i < 100; i++) { -+ USEC_DELAY(100); -+ if ((ISP_READ(isp, HCCR) & HCCR_PAUSE) == 0) { -+ break; -+ } -+ } -+ ENABLE_INTS(isp); -+ mbs.param[0] = MBOX_READ_RAM_WORD; -+ mbs.param[1] = 0x1000; -+ isp->isp_mbxworkp = (void *) ptr; -+ isp->isp_mbxwrk0 = 0xefff; /* continuation count */ -+ isp->isp_mbxwrk1 = 0x1001; /* next SRAM address */ -+ isp_control(isp, ISPCTL_RUN_MBOXCMD, &mbs); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGWARN, -+ "RAM DUMP FAILED @ WORD %x", isp->isp_mbxwrk1); -+ return; -+ } -+ ptr = isp->isp_mbxworkp; /* finish fetch of final word */ -+ *ptr++ = isp->isp_mboxtmp[2]; -+ isp_prt(isp, ISP_LOGALL, "isp_fw_dump: SRAM dumped successfully"); -+ FCPARAM(isp)->isp_dump_data[0] = isp->isp_type; /* now used */ -+ (void) isp_async(isp, ISPASYNC_FW_DUMPED, 0); -+} -+ -+static void -+isp2300_fw_dump(struct ispsoftc *isp) -+{ -+ int i, j; -+ mbreg_t mbs; -+ u_int16_t *ptr; -+ -+ ptr = FCPARAM(isp)->isp_dump_data; -+ if (ptr == NULL) { -+ isp_prt(isp, ISP_LOGERR, -+ "No place to dump RISC registers and SRAM"); -+ return; -+ } -+ if (*ptr++) { -+ isp_prt(isp, ISP_LOGERR, -+ "dump area for RISC registers and SRAM already used"); -+ return; -+ } -+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); -+ for (i = 0; i < 100; i++) { -+ USEC_DELAY(100); -+ if (ISP_READ(isp, HCCR) & HCCR_PAUSE) { -+ break; -+ } -+ } -+ if (ISP_READ(isp, HCCR) & HCCR_PAUSE) { -+ /* -+ * PBIU registers -+ */ -+ for (i = 0; i < 8; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + (i << 1)); -+ } -+ -+ /* -+ * ReqQ-RspQ-Risc2Host Status registers -+ */ -+ for (i = 0; i < 8; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x10 + (i << 1)); -+ } -+ -+ /* -+ * Mailbox Registers -+ */ -+ for (i = 0; i < 32; i++) { -+ *ptr++ = -+ ISP_READ(isp, PCI_MBOX_REGS2300_OFF + (i << 1)); -+ } -+ -+ /* -+ * Auto Request Response DMA registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x40); -+ for (i = 0; i < 32; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ -+ /* -+ * DMA registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x50); -+ for (i = 0; i < 48; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ -+ /* -+ * RISC hardware registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0); -+ for (i = 0; i < 16; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0xA0 + (i << 1)); -+ } -+ -+ /* -+ * RISC GP? registers -+ */ -+ for (j = 0; j < 8; j++) { -+ ISP_WRITE(isp, BIU_BLOCK + 0xA4, 0x2000 + (j << 9)); -+ for (i = 0; i < 16; i++) { -+ *ptr++ = -+ ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ } -+ -+ /* -+ * frame buffer hardware registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x10); -+ for (i = 0; i < 64; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ -+ /* -+ * FPM B0 hardware registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x20); -+ for (i = 0; i < 64; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ -+ /* -+ * FPM B1 hardware registers -+ */ -+ ISP_WRITE(isp, BIU2100_CSR, 0x30); -+ for (i = 0; i < 64; i++) { -+ *ptr++ = ISP_READ(isp, BIU_BLOCK + 0x80 + (i << 1)); -+ } -+ } else { -+ isp_prt(isp, ISP_LOGERR, "RISC Would Not Pause"); -+ return; -+ } -+ isp_prt(isp, ISP_LOGALL, -+ "isp_fw_dump: RISC registers dumped successfully"); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_SOFT_RESET); -+ for (i = 0; i < 100; i++) { -+ USEC_DELAY(100); -+ if (ISP_READ(isp, OUTMAILBOX0) == 0) { -+ break; -+ } -+ } -+ if (ISP_READ(isp, OUTMAILBOX0) != 0) { -+ isp_prt(isp, ISP_LOGERR, "Board Would Not Reset"); -+ return; -+ } -+ ENABLE_INTS(isp); -+ mbs.param[0] = MBOX_READ_RAM_WORD; -+ mbs.param[1] = 0x800; -+ isp->isp_mbxworkp = (void *) ptr; -+ isp->isp_mbxwrk0 = 0xf7ff; /* continuation count */ -+ isp->isp_mbxwrk1 = 0x801; /* next SRAM address */ -+ isp_control(isp, ISPCTL_RUN_MBOXCMD, &mbs); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGWARN, -+ "RAM DUMP FAILED @ WORD %x", isp->isp_mbxwrk1); -+ return; -+ } -+ ptr = isp->isp_mbxworkp; /* finish fetch of final word */ -+ *ptr++ = isp->isp_mboxtmp[2]; -+ -+ /* -+ * We don't have access to mailbox registers 8.. onward -+ * in our 'common' device model- so we have to set it -+ * here and hope it stays the same! -+ */ -+ ISP_WRITE(isp, PCI_MBOX_REGS2300_OFF + (8 << 1), 0x1); -+ -+ mbs.param[0] = MBOX_READ_RAM_WORD_EXTENDED; -+ mbs.param[1] = 0; -+ isp->isp_mbxworkp = (void *) ptr; -+ isp->isp_mbxwrk0 = 0xffff; /* continuation count */ -+ isp->isp_mbxwrk1 = 0x1; /* next SRAM address */ -+ isp_control(isp, ISPCTL_RUN_MBOXCMD, &mbs); -+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { -+ isp_prt(isp, ISP_LOGWARN, -+ "RAM DUMP FAILED @ WORD %x", 0x10000 + isp->isp_mbxwrk1); -+ return; -+ } -+ ptr = isp->isp_mbxworkp; /* finish final word */ -+ *ptr++ = mbs.param[2]; -+ isp_prt(isp, ISP_LOGALL, "isp_fw_dump: SRAM dumped successfully"); -+ FCPARAM(isp)->isp_dump_data[0] = isp->isp_type; /* now used */ -+ (void) isp_async(isp, ISPASYNC_FW_DUMPED, 0); -+} -+ -+void -+isp_fw_dump(struct ispsoftc *isp) -+{ -+ if (IS_2200(isp)) -+ isp2200_fw_dump(isp); -+ else if (IS_23XX(isp)) -+ isp2300_fw_dump(isp); -+} -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_cb_ops.c 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,646 @@ -+/* %W% */ -+/* -+ * Qlogic ISP Host Adapter procfs and open/close entry points -+ *--------------------------------------- -+ * -+ * Copyright (c) 2003 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions, and the following disclaimer, -+ * without modification, immediately at the beginning of the file. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * Alternatively, this software may be distributed under the terms of the -+ * the GNU Public License ("GPL"). -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * Matthew Jacob -+ * Feral Software -+ * PMB #825 -+ * 5214-F Diamond Hts Blvd -+ * San Francisco, CA, 94131 -+ * mjacob@feral.com -+ * -+ *---- -+ * proc safe pretty print code courtesy of Gerard Roudier (groudier@free.fr) -+ * -+ */ -+ -+#include "isp_linux.h" -+#include "isp_ioctl.h" -+#include -+#ifdef CONFIG_PROC_FS -+ -+/* -+ * 'safe' proc pretty print code -+ */ -+struct info_str { -+ char *buffer; -+ int length; -+ off_t offset; -+ int pos; -+}; -+ -+static void -+copy_mem_info(struct info_str *info, char *data, int len) -+{ -+ if (info->pos + len > info->offset + info->length) -+ len = info->offset + info->length - info->pos; -+ -+ if (info->pos + len < info->offset) { -+ info->pos += len; -+ return; -+ } -+ -+ if (info->pos < info->offset) { -+ off_t partial; -+ -+ partial = info->offset - info->pos; -+ data += partial; -+ info->pos += partial; -+ len -= partial; -+ } -+ -+ if (len > 0) { -+ memcpy(info->buffer, data, len); -+ info->pos += len; -+ info->buffer += len; -+ } -+} -+ -+static int -+copy_info(struct info_str *info, char *fmt, ...) -+{ -+ va_list args; -+ char buf[256]; -+ int len; -+ -+ va_start(args, fmt); -+ len = vsprintf(buf, fmt, args); -+ va_end(args); -+ -+ copy_mem_info(info, buf, len); -+ return (len); -+} -+ -+ -+int -+isplinux_proc_info(char *buf, char **st, off_t off, int len, int host, int io) -+{ -+ int i; -+ struct info_str info; -+ struct ispsoftc *isp; -+ -+ isp = isplist; -+ while (isp) { -+ if (isp->isp_host->host_no == host) { -+ break; -+ } -+ isp = isp->isp_next; -+ } -+ if (isp == NULL) { -+ return (-ENODEV); -+ } -+ -+ if (io) { -+ buf[len] = 0; -+ io = -ENOSYS; -+ if (strncmp(buf, "debug=", 6) == 0) { -+ unsigned long debug; -+ char *p = &buf[6], *q; -+ debug = simple_strtoul(p, &q, 16); -+ if (q == &buf[6]) { -+ isp_prt(isp, ISP_LOGERR, "Garbled Debug Line '%s'", buf); -+ return (-EINVAL); -+ } -+ isp_prt(isp, ISP_LOGINFO, "setting debug level to 0x%lx", debug); -+ ISP_LOCKU_SOFTC(isp); -+ isp->isp_dblev = debug; -+ ISP_UNLKU_SOFTC(isp); -+ io = len; -+ } else if (strncmp(buf, "rescan", 6) == 0) { -+ if (IS_FC(isp)) { -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 1); -+ io = len; -+ } -+ } else if (strncmp(buf, "lip", 3) == 0) { -+ if (IS_FC(isp)) { -+ ISP_LOCKU_SOFTC(isp); -+ (void) isp_control(isp, ISPCTL_SEND_LIP, 0); -+ ISP_UNLKU_SOFTC(isp); -+ io = len; -+ } -+ } else if (strncmp(buf, "busreset=", 9) == 0) { -+ char *p = &buf[6], *q; -+ int bus = (int) simple_strtoul(p, &q, 16); -+ if (q == &buf[6]) { -+ isp_prt(isp, ISP_LOGERR, "Garbled Bus Reset Line '%s'", buf); -+ return (-EINVAL); -+ } -+ ISP_LOCKU_SOFTC(isp); -+ (void) isp_control(isp, ISPCTL_RESET_BUS, &bus); -+ ISP_UNLKU_SOFTC(isp); -+ io = len; -+ } else if (strncmp(buf, "devreset=", 9) == 0) { -+ char *p = &buf[6], *q; -+ int dev = (int) simple_strtoul(p, &q, 16); -+ if (q == &buf[6]) { -+ isp_prt(isp, ISP_LOGERR, "Garbled Dev Reset Line '%s'", buf); -+ return (-EINVAL); -+ } -+ /* always bus 0 */ -+ ISP_LOCKU_SOFTC(isp); -+ (void) isp_control(isp, ISPCTL_RESET_DEV, &dev); -+ ISP_UNLKU_SOFTC(isp); -+ io = len; -+ } else if (strncmp(buf, "reset", 5) == 0) { -+ ISP_LOCKU_SOFTC(isp); -+ io = isp_drain_reset(isp, "proc_reset"); -+ ISP_UNLKU_SOFTC(isp); -+ if (io == 0) -+ io = len; -+ else -+ io = -EIO; -+ } else if (strncmp(buf, "drain", 5) == 0) { -+ ISP_LOCKU_SOFTC(isp); -+ io = isp_drain(isp, "proc_reset"); -+ ISP_UNLKU_SOFTC(isp); -+ if (io == 0) -+ io = len; -+ else -+ io = -EIO; -+ } -+#ifdef ISP_FW_CRASH_DUMP -+ else if (strncmp(buf, "fwcrash", 7) == 0) { -+ if (IS_FC(isp)) { -+ ISP_LOCKU_SOFTC(isp); -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FW_CRASH_DUMP, 0); -+ ISP_UNLKU_SOFTC(isp); -+ io = len; -+ } -+ } -+#endif -+ return (io); -+ } -+ -+ ISP_LOCKU_SOFTC(isp); -+ if (st) -+ *st = buf; -+ info.buffer = buf; -+ info.length = len; -+ info.offset = off; -+ info.pos = 0; -+ -+ copy_info(&info, (char *)isplinux_info(isp->isp_host)); -+#ifdef HBA_VERSION -+ copy_info(&info, "\n HBA Version %s, built %s, %s", -+ HBA_VERSION, __DATE__, __TIME__); -+#endif -+ copy_info(&info, "\n DEVID %x role %d\n", -+ isp->isp_osinfo.device_id, isp->isp_role); -+ copy_info(&info, -+ " Interrupt Stats:\n" -+ " total=0x%08x%08x bogus=0x%08x%08x\n" -+ " MboxC=0x%08x%08x async=0x%08x%08x\n" -+ " CRslt=0x%08x%08x CPost=0x%08x%08x\n" -+ " RspnsCHiWater=0x%04x FastPostC_Hiwater=0x%04x\n", -+ (u_int32_t) (isp->isp_intcnt >> 32), -+ (u_int32_t) (isp->isp_intcnt & 0xffffffff), -+ (u_int32_t) (isp->isp_intbogus >> 32), -+ (u_int32_t) (isp->isp_intbogus & 0xffffffff), -+ (u_int32_t) (isp->isp_intmboxc >> 32), -+ (u_int32_t) (isp->isp_intmboxc & 0xffffffff), -+ (u_int32_t) (isp->isp_intoasync >> 32), -+ (u_int32_t) (isp->isp_intoasync & 0xffffffff), -+ (u_int32_t) (isp->isp_rsltccmplt >> 32), -+ (u_int32_t) (isp->isp_rsltccmplt & 0xffffffff), -+ (u_int32_t) (isp->isp_fphccmplt >> 32), -+ (u_int32_t) (isp->isp_fphccmplt & 0xffffffff), -+ isp->isp_rscchiwater, isp->isp_fpcchiwater); -+ copy_info(&info, -+ " Request In %d Request Out %d Result %d Nactv %d" -+ " HiWater %u QAVAIL %d WtQHi %d\n", -+ isp->isp_reqidx, isp->isp_reqodx, isp->isp_residx, isp->isp_nactive, -+ isp->isp_osinfo.hiwater, ISP_QAVAIL(isp), -+ isp->isp_osinfo.wqhiwater); -+ for (i = 0; i < isp->isp_maxcmds; i++) { -+ if (isp->isp_xflist[i]) { -+ copy_info(&info, " %d:%p", i, isp->isp_xflist[i]); -+ } -+ } -+ copy_info(&info, "\n"); -+ if (isp->isp_osinfo.wqnext) { -+ Scsi_Cmnd *f = isp->isp_osinfo.wqnext; -+ copy_info(&info, "WaitQ(%d)", isp->isp_osinfo.wqcnt); -+ while (f) { -+ copy_info(&info, "->%p", f); -+ f = (Scsi_Cmnd *) f->host_scribble; -+ } -+ copy_info(&info, "\n"); -+ } -+ if (isp->isp_osinfo.dqnext) { -+ Scsi_Cmnd *f = isp->isp_osinfo.dqnext; -+ copy_info(&info, "DoneQ"); -+ while (f) { -+ copy_info(&info, "->%p", f); -+ f = (Scsi_Cmnd *) f->host_scribble; -+ } -+ copy_info(&info, "\n"); -+ } -+ if (IS_FC(isp)) { -+ fcparam *fcp = isp->isp_param; -+ copy_info(&info, -+ "Loop ID: %d AL_PA 0x%x Port ID 0x%x FW State %x Loop State %x\n", -+ fcp->isp_loopid, fcp->isp_alpa, fcp->isp_portid, fcp->isp_fwstate, -+ fcp->isp_loopstate); -+ copy_info(&info, "Port WWN 0x%08x%08x Node WWN 0x%08x%08x\n", -+ (unsigned int) (ISP_PORTWWN(isp) >> 32), -+ (unsigned int) (ISP_PORTWWN(isp) & 0xffffffff), -+ (unsigned int) (ISP_NODEWWN(isp) >> 32), -+ (unsigned int) (ISP_NODEWWN(isp) & 0xffffffff)); -+ for (i = 0; i < MAX_FC_TARG; i++) { -+ if (fcp->portdb[i].valid == 0 && i < FL_PORT_ID) -+ continue; -+ if (fcp->portdb[i].port_wwn == 0) -+ continue; -+ copy_info(&info, "TGT % 3d Loop ID % 3d Port id 0x%04x, role %s" -+ "\n Port WWN 0x%08x%08x Node WWN 0x%08x%08x\n\n", i, -+ fcp->portdb[i].loopid, -+ fcp->portdb[i].portid, class3_roles[fcp->portdb[i].roles], -+ (unsigned int) (fcp->portdb[i].port_wwn >> 32), -+ (unsigned int) (fcp->portdb[i].port_wwn & 0xffffffff), -+ (unsigned int) (fcp->portdb[i].node_wwn >> 32), -+ (unsigned int) (fcp->portdb[i].node_wwn & 0xffffffff)); -+ } -+ } else { -+ sdparam *sdp = (sdparam *)isp->isp_param; -+ -+ copy_info(&info, "Initiator ID: %d\n", sdp->isp_initiator_id); -+ copy_info(&info, "Target Flag Period Offset\n"); -+ for (i = 0; i < MAX_TARGETS; i++) { -+ copy_info(&info, "%6d: 0x%04x 0x%04x 0x%x\n", -+ i, sdp->isp_devparam[i].actv_flags, -+ sdp->isp_devparam[i].actv_offset, -+ sdp->isp_devparam[i].actv_period); -+ } -+ if (IS_DUALBUS(isp)) { -+ sdp++; -+ copy_info(&info, "\nInitiator ID: %d, Channel B\n", -+ sdp->isp_initiator_id); -+ copy_info(&info, -+ "Target CurFlag DevFlag Period Offset B-Channel\n"); -+ for (i = 0; i < MAX_TARGETS; i++) { -+ copy_info(&info, "%6d: 0x%04x 0x%04x 0x%x\n", -+ i, sdp->isp_devparam[i].actv_flags, -+ sdp->isp_devparam[i].actv_offset, -+ sdp->isp_devparam[i].actv_period); -+ } -+ } -+ } -+ ISP_UNLKU_SOFTC(isp); -+ return (info.pos > info.offset ? info.pos - info.offset : 0); -+} -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+static int isp_open(struct inode *, struct file *); -+static int isp_close(struct inode *, struct file *); -+static int -+isp_ioctl(struct inode *, struct file *, unsigned int, unsigned long); -+ -+struct file_operations isp_procfs_operations = { -+ owner: THIS_MODULE, -+ open: isp_open, -+ release: isp_close, -+ ioctl: isp_ioctl, -+}; -+ -+static struct proc_dir_entry *isp_root = 0; -+ -+void -+isplinux_init_proc(struct ispsoftc *isp) -+{ -+ struct proc_dir_entry *isp_entry; -+ char tbuf[64]; -+ -+ SNPRINTF(tbuf, sizeof(tbuf), "isp%d@0x%x", isp->isp_unit, -+ isp->isp_osinfo.device_id); -+ if (isp_root == NULL) { -+ isp_root = proc_mkdir("isp", 0); -+ } -+ if (isp_root) { -+ isp_entry = create_proc_entry(tbuf, S_IFREG|S_IRUGO|S_IWUSR, isp_root); -+ if (isp_entry == NULL) { -+ return; -+ } -+ isp_entry->proc_fops = &isp_procfs_operations; -+ } -+} -+ -+void -+isplinux_undo_proc(struct ispsoftc *isp) -+{ -+ char tbuf[64]; -+ SNPRINTF(tbuf, sizeof(tbuf), "isp/isp%d@0x%x", isp->isp_unit, -+ isp->isp_osinfo.device_id); -+ remove_proc_entry(tbuf, 0); -+ remove_proc_entry("isp", 0); -+} -+ -+static struct ispsoftc * -+get_isp_from_procname(const unsigned char *name) -+{ -+ struct ispsoftc *isp; -+ -+ for (isp = isplist; isp; isp = isp->isp_next) { -+ char tbuf[32]; -+ SNPRINTF(tbuf, sizeof(tbuf), "isp%d@0x%x", isp->isp_unit, -+ isp->isp_osinfo.device_id); -+ if (strcmp(name, tbuf) == 0) { -+ return (isp); -+ } -+ } -+ return (0); -+} -+ -+static int -+isp_open(struct inode *ip, struct file *fp) -+{ -+ struct ispsoftc *isp = get_isp_from_procname(fp->f_dentry->d_name.name); -+ if (isp == NULL) { -+ return (-ENXIO); -+ } -+ if (isp->isp_isopen) { -+ return (-EBUSY); -+ } -+ isp->isp_isopen = 1; -+ fp->private_data = isp; -+ return (0); -+} -+ -+static int -+isp_close(struct inode *ip, struct file *fp) -+{ -+ struct ispsoftc *isp = fp->private_data; -+ isp->isp_isopen = 0; -+ return (0); -+} -+ -+static int -+isp_ioctl(struct inode *ip, struct file *fp, unsigned int c, unsigned long arg) -+{ -+ struct ispsoftc *isp = fp->private_data; -+ int rv, inarg, outarg; -+ fcparam *fcp; -+ -+ if (isp == (struct ispsoftc *)NULL) { -+ return -ENXIO; -+ } -+ -+ if (IS_SCSI(isp)) { -+ switch (c) { -+ case ISP_SDBLEV: -+ case ISP_RESCAN: -+ case ISP_GETROLE: -+ case ISP_SETROLE: -+ case ISP_RESETHBA: -+ break; -+ default: -+ return (-EINVAL); -+ } -+ fcp = NULL; -+ } else { -+ fcp = isp->isp_param; -+ } -+ -+ rv = 0; -+ isp_prt(isp, ISP_LOGDEBUG0, "isp_ioctl: cmd=%x", c); -+ -+ switch (c) { -+ case ISP_GET_STATS: -+ { -+ isp_stats_t stats; -+ -+ MEMZERO(&stats, sizeof stats); -+ stats.isp_stat_version = ISP_STATS_VERSION; -+ stats.isp_type = isp->isp_type; -+ stats.isp_revision = isp->isp_revision; -+ ISP_LOCK_SOFTC(isp); -+ stats.isp_stats[ISP_INTCNT] = isp->isp_intcnt; -+ stats.isp_stats[ISP_INTBOGUS] = isp->isp_intbogus; -+ stats.isp_stats[ISP_INTMBOXC] = isp->isp_intmboxc; -+ stats.isp_stats[ISP_INGOASYNC] = isp->isp_intoasync; -+ stats.isp_stats[ISP_RSLTCCMPLT] = isp->isp_rsltccmplt; -+ stats.isp_stats[ISP_FPHCCMCPLT] = isp->isp_fphccmplt; -+ stats.isp_stats[ISP_RSCCHIWAT] = isp->isp_rscchiwater; -+ stats.isp_stats[ISP_FPCCHIWAT] = isp->isp_fpcchiwater; -+ ISP_UNLK_SOFTC(isp); -+ if (COPYOUT(&stats, (void *)arg, sizeof (stats), 0)) { -+ rv = EFAULT; -+ } -+ break; -+ } -+ case ISP_CLR_STATS: -+ ISP_LOCK_SOFTC(isp); -+ isp->isp_intcnt = 0; -+ isp->isp_intbogus = 0; -+ isp->isp_intmboxc = 0; -+ isp->isp_intoasync = 0; -+ isp->isp_rsltccmplt = 0; -+ isp->isp_fphccmplt = 0; -+ isp->isp_rscchiwater = 0; -+ isp->isp_fpcchiwater = 0; -+ ISP_UNLK_SOFTC(isp); -+ break; -+#ifdef ISP_FW_CRASH_DUMP -+ case ISP_GET_FW_CRASH_DUMP: -+ { -+ u_int16_t *ptr = fcp->isp_dump_data; -+ size_t sz; -+ if (IS_2200(isp)) -+ sz = QLA2200_RISC_IMAGE_DUMP_SIZE; -+ else -+ sz = QLA2300_RISC_IMAGE_DUMP_SIZE; -+ ISP_LOCK_SOFTC(isp); -+ if (ptr && *ptr) { -+ if (COPYOUT(ptr, (void *)arg, sz, mode)) { -+ rv = EFAULT; -+ } else { -+ *ptr = 0; -+ } -+ } else { -+ rv = ENXIO; -+ } -+ ISP_UNLK_SOFTC(isp); -+ break; -+ } -+ -+ case ISP_FORCE_CRASH_DUMP: -+ ISP_LOCK_SOFTC(isp); -+ isp_async(isp, ISPASYNC_FW_CRASH, NULL); -+ ISP_UNLK_SOFTC(isp); -+ break; -+#endif -+ case ISP_SDBLEV: -+ if (COPYIN((void *)arg, &inarg, sizeof (inarg), 0)) { -+ rv = EFAULT; -+ break; -+ } -+ outarg = isp->isp_dblev; -+ isp->isp_dblev = inarg; -+ if (COPYOUT(&outarg, (void *)arg, sizeof (outarg), 0)) { -+ rv = EFAULT; -+ break; -+ } -+ break; -+ -+ case ISP_RESCAN: -+ if (IS_FC(isp)) { -+ ISP_LOCKU_SOFTC(isp); -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 0) -+ ISP_UNLKU_SOFTC(isp); -+ } -+ break; -+ -+ case ISP_GETROLE: -+ outarg = isp->isp_role; -+ if (COPYOUT(&outarg, (void *)arg, sizeof (outarg), 0)) { -+ rv = EFAULT; -+ break; -+ } -+ break; -+ -+ case ISP_SETROLE: -+ if (COPYIN((void *)arg, &inarg, sizeof (inarg), 0)) { -+ rv = EFAULT; -+ break; -+ } -+ if (inarg & ~(ISP_ROLE_INITIATOR|ISP_ROLE_TARGET)) { -+ rv = EINVAL; -+ break; -+ } -+ /* -+ * Check to see if we're already in that role. -+ */ -+ if (isp->isp_role == inarg) { -+ outarg = isp->isp_role; -+ if (COPYOUT(&outarg, (void *)arg, sizeof (outarg), mode)) { -+ rv = EFAULT; -+ } -+ break; -+ } -+ /*FALLTHROUGH*/ -+ case ISP_RESETHBA: -+ { -+ ISP_LOCK_SOFTC(isp); -+ if (c == ISP_SETROLE) { -+ outarg = isp->isp_role; -+ isp->isp_role = inarg; -+ } -+ if (isp_drain_reset(isp, "isp_ioctl")) { -+ ISP_UNLK_SOFTC(isp); -+ rv = EIO; -+ break; -+ } -+ isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); -+ ISP_UNLK_SOFTC(isp); -+ if (c == ISP_SETROLE && -+ COPYOUT(&outarg, (void *)arg, sizeof (outarg), mode)) { -+ rv = EFAULT; -+ break; -+ } -+ break; -+ } -+ case ISP_FC_LIP: -+ ISP_LOCK_SOFTC(isp); -+ if (isp_control(isp, ISPCTL_SEND_LIP, NULL)) { -+ rv = EIO; -+ } -+ ISP_UNLK_SOFTC(isp); -+ break; -+ case ISP_FC_GETDINFO: -+ { -+ struct isp_fc_device local, *ifc = &local; -+ struct lportdb *lp; -+ -+ if (COPYIN((void *)arg, ifc, sizeof (*ifc), mode)) { -+ rv = EFAULT; -+ break; -+ } -+ if (ifc->loopid < 0 || ifc->loopid >= MAX_FC_TARG) { -+ rv = EINVAL; -+ break; -+ } -+ ISP_LOCK_SOFTC(isp); -+ lp = &FCPARAM(isp)->portdb[ifc->loopid]; -+ if (lp->valid) { -+ ifc->loopid = lp->loopid; -+ ifc->portid = lp->portid; -+ ifc->node_wwn = lp->node_wwn; -+ ifc->port_wwn = lp->port_wwn; -+ rv = 0; -+ } else { -+ rv = ENODEV; -+ } -+ ISP_UNLK_SOFTC(isp); -+ if (rv == 0) { -+ if (COPYOUT((void *)ifc, (void *)arg, -+ sizeof (*ifc), mode)) { -+ rv = EFAULT; -+ } -+ } -+ break; -+ } -+ case ISP_FC_GETHINFO: -+ { -+ struct isp_hba_device local, *hba = &local; -+ MEMZERO(hba, sizeof (*hba)); -+ ISP_LOCK_SOFTC(isp); -+ hba->fc_speed = FCPARAM(isp)->isp_gbspeed; -+ hba->fc_scsi_supported = 1; -+ hba->fc_topology = FCPARAM(isp)->isp_topo + 1; -+ hba->fc_loopid = FCPARAM(isp)->isp_loopid; -+ hba->active_node_wwn = FCPARAM(isp)->isp_nodewwn; -+ hba->active_port_wwn = FCPARAM(isp)->isp_portwwn; -+ ISP_UNLK_SOFTC(isp); -+ if (COPYOUT(hba, (void *)arg, sizeof (*hba), mode)) { -+ rv = EFAULT; -+ break; -+ } -+ break; -+ } -+ default: -+ rv = EINVAL; -+ break; -+ } -+ return(rv? -rv : 0); -+} -+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) */ -+#endif -+/* -+ * mode: c -+ * Local variables: -+ * c-indent-level: 4 -+ * c-brace-imaginary-offset: 0 -+ * c-brace-offset: -4 -+ * c-argdecl-indent: 4 -+ * c-label-offset: -4 -+ * c-continued-statement-offset: 4 -+ * c-continued-brace-offset: 0 -+ * End: -+ */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_inline.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,1495 @@ -+/* @(#)isp_inline.h 1.20 */ -+/* -+ * Qlogic Host Adapter Inline Functions -+ * -+ * Copyright (c) 1999, 2000, 2001 by Matthew Jacob -+ * Feral Software -+ * All rights reserved. -+ * mjacob@feral.com -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice immediately at the beginning of the file, without modification, -+ * this list of conditions, and the following disclaimer. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ */ -+#ifndef _ISP_INLINE_H -+#define _ISP_INLINE_H -+ -+/* -+ * Handle Functions. -+ * For each outstanding command there will be a non-zero handle. -+ * There will be at most isp_maxcmds handles, and isp_lasthdls -+ * will be a seed for the last handled allocated. -+ */ -+ -+static INLINE int isp_save_xs(struct ispsoftc *, XS_T *, u_int16_t *); -+static INLINE XS_T *isp_find_xs(struct ispsoftc *, u_int16_t); -+static INLINE u_int16_t isp_find_handle(struct ispsoftc *, XS_T *); -+static INLINE int isp_handle_index(u_int16_t); -+static INLINE void isp_destroy_handle(struct ispsoftc *, u_int16_t); -+static INLINE void isp_remove_handle(struct ispsoftc *, XS_T *); -+ -+static INLINE int -+isp_save_xs(struct ispsoftc *isp, XS_T *xs, u_int16_t *handlep) -+{ -+ int i, j; -+ -+ for (j = isp->isp_lasthdls, i = 0; i < (int) isp->isp_maxcmds; i++) { -+ if (isp->isp_xflist[j] == NULL) { -+ break; -+ } -+ if (++j == isp->isp_maxcmds) { -+ j = 0; -+ } -+ } -+ if (i == isp->isp_maxcmds) { -+ return (-1); -+ } -+ isp->isp_xflist[j] = xs; -+ *handlep = j+1; -+ if (++j == isp->isp_maxcmds) -+ j = 0; -+ isp->isp_lasthdls = (u_int16_t)j; -+ return (0); -+} -+ -+static INLINE XS_T * -+isp_find_xs(struct ispsoftc *isp, u_int16_t handle) -+{ -+ if (handle < 1 || handle > (u_int16_t) isp->isp_maxcmds) { -+ return (NULL); -+ } else { -+ return (isp->isp_xflist[handle - 1]); -+ } -+} -+ -+static INLINE u_int16_t -+isp_find_handle(struct ispsoftc *isp, XS_T *xs) -+{ -+ int i; -+ if (xs != NULL) { -+ for (i = 0; i < isp->isp_maxcmds; i++) { -+ if (isp->isp_xflist[i] == xs) { -+ return ((u_int16_t) i+1); -+ } -+ } -+ } -+ return (0); -+} -+ -+static INLINE int -+isp_handle_index(u_int16_t handle) -+{ -+ return (handle-1); -+} -+ -+static INLINE void -+isp_destroy_handle(struct ispsoftc *isp, u_int16_t handle) -+{ -+ if (handle > 0 && handle <= (u_int16_t) isp->isp_maxcmds) { -+ isp->isp_xflist[isp_handle_index(handle)] = NULL; -+ } -+} -+ -+static INLINE void -+isp_remove_handle(struct ispsoftc *isp, XS_T *xs) -+{ -+ isp_destroy_handle(isp, isp_find_handle(isp, xs)); -+} -+ -+static INLINE int -+isp_getrqentry(struct ispsoftc *, u_int16_t *, u_int16_t *, void **); -+ -+static INLINE int -+isp_getrqentry(struct ispsoftc *isp, u_int16_t *iptrp, -+ u_int16_t *optrp, void **resultp) -+{ -+ volatile u_int16_t iptr, optr; -+ -+ optr = isp->isp_reqodx = READ_REQUEST_QUEUE_OUT_POINTER(isp); -+ iptr = isp->isp_reqidx; -+ *resultp = ISP_QUEUE_ENTRY(isp->isp_rquest, iptr); -+ iptr = ISP_NXT_QENTRY(iptr, RQUEST_QUEUE_LEN(isp)); -+ if (iptr == optr) { -+ return (1); -+ } -+ if (optrp) -+ *optrp = optr; -+ if (iptrp) -+ *iptrp = iptr; -+ return (0); -+} -+ -+static INLINE void isp_print_qentry (struct ispsoftc *, char *, int, void *); -+ -+ -+#define TBA (4 * (((QENTRY_LEN >> 2) * 3) + 1) + 1) -+static INLINE void -+isp_print_qentry(struct ispsoftc *isp, char *msg, int idx, void *arg) -+{ -+ char buf[TBA]; -+ int amt, i, j; -+ u_int8_t *ptr = arg; -+ -+ isp_prt(isp, ISP_LOGALL, "%s index %d=>", msg, idx); -+ for (buf[0] = 0, amt = i = 0; i < 4; i++) { -+ buf[0] = 0; -+ SNPRINTF(buf, TBA, " "); -+ for (j = 0; j < (QENTRY_LEN >> 2); j++) { -+ SNPRINTF(buf, TBA, "%s %02x", buf, ptr[amt++] & 0xff); -+ } -+ isp_prt(isp, ISP_LOGALL, buf); -+ } -+} -+ -+static INLINE void isp_print_bytes(struct ispsoftc *, char *, int, void *); -+ -+static INLINE void -+isp_print_bytes(struct ispsoftc *isp, char *msg, int amt, void *arg) -+{ -+ char buf[128]; -+ u_int8_t *ptr = arg; -+ int off; -+ -+ if (msg) -+ isp_prt(isp, ISP_LOGALL, "%s:", msg); -+ off = 0; -+ buf[0] = 0; -+ while (off < amt) { -+ int j, to; -+ to = off; -+ for (j = 0; j < 16; j++) { -+ SNPRINTF(buf, 128, "%s %02x", buf, ptr[off++] & 0xff); -+ if (off == amt) -+ break; -+ } -+ isp_prt(isp, ISP_LOGALL, "0x%08x:%s", to, buf); -+ buf[0] = 0; -+ } -+} -+ -+/* -+ * Do the common path to try and ensure that link is up, we've scanned -+ * the fabric (if we're on a fabric), and that we've synchronized this -+ * all with our own database and done the appropriate logins. -+ * -+ * We repeatedly check for firmware state and loop state after each -+ * action because things may have changed while we were doing this. -+ * Any failure or change of state causes us to return a nonzero value. -+ * -+ * We honor HBA roles in that if we're not in Initiator mode, we don't -+ * attempt to sync up the database (that's for somebody else to do, -+ * if ever). -+ * -+ * We assume we enter here with any locks held. -+ */ -+ -+static INLINE int isp_fc_runstate(struct ispsoftc *, int); -+ -+static INLINE int -+isp_fc_runstate(struct ispsoftc *isp, int tval) -+{ -+ fcparam *fcp; -+ int *tptr; -+ -+ if (IS_SCSI(isp)) -+ return (0); -+ -+ tptr = tval? &tval : NULL; -+ if (isp_control(isp, ISPCTL_FCLINK_TEST, tptr) != 0) { -+ return (-1); -+ } -+ fcp = FCPARAM(isp); -+ if (fcp->isp_fwstate != FW_READY || fcp->isp_loopstate < LOOP_PDB_RCVD) -+ return (-1); -+ if (isp_control(isp, ISPCTL_SCAN_FABRIC, NULL) != 0) { -+ return (-1); -+ } -+ if (isp_control(isp, ISPCTL_SCAN_LOOP, NULL) != 0) { -+ return (-1); -+ } -+ if ((isp->isp_role & ISP_ROLE_INITIATOR) == 0) { -+ return (0); -+ } -+ if (isp_control(isp, ISPCTL_PDB_SYNC, NULL) != 0) { -+ return (-1); -+ } -+ if (fcp->isp_fwstate != FW_READY || fcp->isp_loopstate != LOOP_READY) { -+ return (-1); -+ } -+ return (0); -+} -+ -+/* -+ * Functions to move stuff to a form that the QLogic RISC engine understands -+ * and functions to move stuff back to a form the processor understands. -+ * -+ * Each platform is required to provide the 8, 16 and 32 bit -+ * swizzle and unswizzle macros (ISP_IOX{PUT|GET}_{8,16,32}) -+ * -+ * The assumption is that swizzling and unswizzling is mostly done 'in place' -+ * (with a few exceptions for efficiency). -+ */ -+ -+static INLINE void isp_copy_out_hdr(struct ispsoftc *, isphdr_t *, isphdr_t *); -+static INLINE void isp_copy_in_hdr(struct ispsoftc *, isphdr_t *, isphdr_t *); -+static INLINE int isp_get_response_type(struct ispsoftc *, isphdr_t *); -+ -+static INLINE void -+isp_put_request(struct ispsoftc *, ispreq_t *, ispreq_t *); -+static INLINE void -+isp_put_request_t2(struct ispsoftc *, ispreqt2_t *, ispreqt2_t *); -+static INLINE void -+isp_put_request_t3(struct ispsoftc *, ispreqt3_t *, ispreqt3_t *); -+static INLINE void -+isp_put_extended_request(struct ispsoftc *, ispextreq_t *, ispextreq_t *); -+static INLINE void -+isp_put_cont_req(struct ispsoftc *, ispcontreq_t *, ispcontreq_t *); -+static INLINE void -+isp_put_cont64_req(struct ispsoftc *, ispcontreq64_t *, ispcontreq64_t *); -+static INLINE void -+isp_get_response(struct ispsoftc *, ispstatusreq_t *, ispstatusreq_t *); -+static INLINE void -+isp_get_response_x(struct ispsoftc *, ispstatus_cont_t *, ispstatus_cont_t *); -+static INLINE void -+isp_get_rio2(struct ispsoftc *, isp_rio2_t *, isp_rio2_t *); -+static INLINE void -+isp_put_icb(struct ispsoftc *, isp_icb_t *, isp_icb_t *); -+static INLINE void -+isp_get_pdb(struct ispsoftc *, isp_pdb_t *, isp_pdb_t *); -+static INLINE void -+isp_get_ct_hdr(struct ispsoftc *isp, ct_hdr_t *, ct_hdr_t *); -+static INLINE void -+isp_put_sns_request(struct ispsoftc *, sns_screq_t *, sns_screq_t *); -+static INLINE void -+isp_put_gid_ft_request(struct ispsoftc *, sns_gid_ft_req_t *, -+ sns_gid_ft_req_t *); -+static INLINE void -+isp_put_gxn_id_request(struct ispsoftc *, sns_gxn_id_req_t *, -+ sns_gxn_id_req_t *); -+static INLINE void -+isp_get_sns_response(struct ispsoftc *, sns_scrsp_t *, sns_scrsp_t *, int); -+static INLINE void -+isp_get_gid_ft_response(struct ispsoftc *, sns_gid_ft_rsp_t *, -+ sns_gid_ft_rsp_t *, int); -+static INLINE void -+isp_get_gxn_id_response(struct ispsoftc *, sns_gxn_id_rsp_t *, -+ sns_gxn_id_rsp_t *); -+static INLINE void -+isp_get_gff_id_response(struct ispsoftc *, sns_gff_id_rsp_t *, -+ sns_gff_id_rsp_t *); -+static INLINE void -+isp_get_ga_nxt_response(struct ispsoftc *, sns_ga_nxt_rsp_t *, -+ sns_ga_nxt_rsp_t *); -+#ifdef ISP_TARGET_MODE -+#ifndef _ISP_TARGET_H -+#include "isp_target.h" -+#endif -+static INLINE void -+isp_put_atio(struct ispsoftc *, at_entry_t *, at_entry_t *); -+static INLINE void -+isp_get_atio(struct ispsoftc *, at_entry_t *, at_entry_t *); -+static INLINE void -+isp_put_atio2(struct ispsoftc *, at2_entry_t *, at2_entry_t *); -+static INLINE void -+isp_get_atio2(struct ispsoftc *, at2_entry_t *, at2_entry_t *); -+static INLINE void -+isp_put_ctio(struct ispsoftc *, ct_entry_t *, ct_entry_t *); -+static INLINE void -+isp_get_ctio(struct ispsoftc *, ct_entry_t *, ct_entry_t *); -+static INLINE void -+isp_put_ctio2(struct ispsoftc *, ct2_entry_t *, ct2_entry_t *); -+static INLINE void -+isp_get_ctio2(struct ispsoftc *, ct2_entry_t *, ct2_entry_t *); -+static INLINE void -+isp_put_enable_lun(struct ispsoftc *, lun_entry_t *, lun_entry_t *); -+static INLINE void -+isp_get_enable_lun(struct ispsoftc *, lun_entry_t *, lun_entry_t *); -+static INLINE void -+isp_put_notify(struct ispsoftc *, in_entry_t *, in_entry_t *); -+static INLINE void -+isp_get_notify(struct ispsoftc *, in_entry_t *, in_entry_t *); -+static INLINE void -+isp_put_notify_fc(struct ispsoftc *, in_fcentry_t *, in_fcentry_t *); -+static INLINE void -+isp_get_notify_fc(struct ispsoftc *, in_fcentry_t *, in_fcentry_t *); -+static INLINE void -+isp_put_notify_ack(struct ispsoftc *, na_entry_t *, na_entry_t *); -+static INLINE void -+isp_get_notify_ack(struct ispsoftc *, na_entry_t *, na_entry_t *); -+static INLINE void -+isp_put_notify_ack_fc(struct ispsoftc *, na_fcentry_t *, na_fcentry_t *); -+static INLINE void -+isp_get_notify_ack_fc(struct ispsoftc *, na_fcentry_t *, na_fcentry_t *); -+#endif -+ -+#define ISP_IS_SBUS(isp) \ -+ (ISP_SBUS_SUPPORTED && (isp)->isp_bustype == ISP_BT_SBUS) -+ -+/* -+ * Swizzle/Copy Functions -+ */ -+static INLINE void -+isp_copy_out_hdr(struct ispsoftc *isp, isphdr_t *hpsrc, isphdr_t *hpdst) -+{ -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, hpsrc->rqs_entry_type, -+ &hpdst->rqs_entry_count); -+ ISP_IOXPUT_8(isp, hpsrc->rqs_entry_count, -+ &hpdst->rqs_entry_type); -+ ISP_IOXPUT_8(isp, hpsrc->rqs_seqno, -+ &hpdst->rqs_flags); -+ ISP_IOXPUT_8(isp, hpsrc->rqs_flags, -+ &hpdst->rqs_seqno); -+ } else { -+ ISP_IOXPUT_8(isp, hpsrc->rqs_entry_type, -+ &hpdst->rqs_entry_type); -+ ISP_IOXPUT_8(isp, hpsrc->rqs_entry_count, -+ &hpdst->rqs_entry_count); -+ ISP_IOXPUT_8(isp, hpsrc->rqs_seqno, -+ &hpdst->rqs_seqno); -+ ISP_IOXPUT_8(isp, hpsrc->rqs_flags, -+ &hpdst->rqs_flags); -+ } -+} -+ -+static INLINE void -+isp_copy_in_hdr(struct ispsoftc *isp, isphdr_t *hpsrc, isphdr_t *hpdst) -+{ -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXGET_8(isp, &hpsrc->rqs_entry_type, -+ hpdst->rqs_entry_count); -+ ISP_IOXGET_8(isp, &hpsrc->rqs_entry_count, -+ hpdst->rqs_entry_type); -+ ISP_IOXGET_8(isp, &hpsrc->rqs_seqno, -+ hpdst->rqs_flags); -+ ISP_IOXGET_8(isp, &hpsrc->rqs_flags, -+ hpdst->rqs_seqno); -+ } else { -+ ISP_IOXGET_8(isp, &hpsrc->rqs_entry_type, -+ hpdst->rqs_entry_type); -+ ISP_IOXGET_8(isp, &hpsrc->rqs_entry_count, -+ hpdst->rqs_entry_count); -+ ISP_IOXGET_8(isp, &hpsrc->rqs_seqno, -+ hpdst->rqs_seqno); -+ ISP_IOXGET_8(isp, &hpsrc->rqs_flags, -+ hpdst->rqs_flags); -+ } -+} -+ -+static INLINE int -+isp_get_response_type(struct ispsoftc *isp, isphdr_t *hp) -+{ -+ u_int8_t type; -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXGET_8(isp, &hp->rqs_entry_count, type); -+ } else { -+ ISP_IOXGET_8(isp, &hp->rqs_entry_type, type); -+ } -+ return ((int)type); -+} -+ -+static INLINE void -+isp_put_request(struct ispsoftc *isp, ispreq_t *rqsrc, ispreq_t *rqdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &rqsrc->req_header, &rqdst->req_header); -+ ISP_IOXPUT_32(isp, rqsrc->req_handle, &rqdst->req_handle); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, rqsrc->req_lun_trn, &rqdst->req_target); -+ ISP_IOXPUT_8(isp, rqsrc->req_target, &rqdst->req_lun_trn); -+ } else { -+ ISP_IOXPUT_8(isp, rqsrc->req_lun_trn, &rqdst->req_lun_trn); -+ ISP_IOXPUT_8(isp, rqsrc->req_target, &rqdst->req_target); -+ } -+ ISP_IOXPUT_16(isp, rqsrc->req_cdblen, &rqdst->req_cdblen); -+ ISP_IOXPUT_16(isp, rqsrc->req_flags, &rqdst->req_flags); -+ ISP_IOXPUT_16(isp, rqsrc->req_time, &rqdst->req_time); -+ ISP_IOXPUT_16(isp, rqsrc->req_seg_count, &rqdst->req_seg_count); -+ for (i = 0; i < 12; i++) { -+ ISP_IOXPUT_8(isp, rqsrc->req_cdb[i], &rqdst->req_cdb[i]); -+ } -+ for (i = 0; i < ISP_RQDSEG; i++) { -+ ISP_IOXPUT_32(isp, rqsrc->req_dataseg[i].ds_base, -+ &rqdst->req_dataseg[i].ds_base); -+ ISP_IOXPUT_32(isp, rqsrc->req_dataseg[i].ds_count, -+ &rqdst->req_dataseg[i].ds_count); -+ } -+} -+ -+static INLINE void -+isp_put_request_t2(struct ispsoftc *isp, ispreqt2_t *tqsrc, ispreqt2_t *tqdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &tqsrc->req_header, &tqdst->req_header); -+ ISP_IOXPUT_32(isp, tqsrc->req_handle, &tqdst->req_handle); -+ ISP_IOXPUT_8(isp, tqsrc->req_lun_trn, &tqdst->req_lun_trn); -+ ISP_IOXPUT_8(isp, tqsrc->req_target, &tqdst->req_target); -+ ISP_IOXPUT_16(isp, tqsrc->req_scclun, &tqdst->req_scclun); -+ ISP_IOXPUT_16(isp, tqsrc->req_flags, &tqdst->req_flags); -+ ISP_IOXPUT_16(isp, tqsrc->_res2, &tqdst->_res2); -+ ISP_IOXPUT_16(isp, tqsrc->req_time, &tqdst->req_time); -+ ISP_IOXPUT_16(isp, tqsrc->req_seg_count, &tqdst->req_seg_count); -+ for (i = 0; i < 16; i++) { -+ ISP_IOXPUT_8(isp, tqsrc->req_cdb[i], &tqdst->req_cdb[i]); -+ } -+ ISP_IOXPUT_32(isp, tqsrc->req_totalcnt, &tqdst->req_totalcnt); -+ for (i = 0; i < ISP_RQDSEG_T2; i++) { -+ ISP_IOXPUT_32(isp, tqsrc->req_dataseg[i].ds_base, -+ &tqdst->req_dataseg[i].ds_base); -+ ISP_IOXPUT_32(isp, tqsrc->req_dataseg[i].ds_count, -+ &tqdst->req_dataseg[i].ds_count); -+ } -+} -+ -+static INLINE void -+isp_put_request_t3(struct ispsoftc *isp, ispreqt3_t *tqsrc, ispreqt3_t *tqdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &tqsrc->req_header, &tqdst->req_header); -+ ISP_IOXPUT_32(isp, tqsrc->req_handle, &tqdst->req_handle); -+ ISP_IOXPUT_8(isp, tqsrc->req_lun_trn, &tqdst->req_lun_trn); -+ ISP_IOXPUT_8(isp, tqsrc->req_target, &tqdst->req_target); -+ ISP_IOXPUT_16(isp, tqsrc->req_scclun, &tqdst->req_scclun); -+ ISP_IOXPUT_16(isp, tqsrc->req_flags, &tqdst->req_flags); -+ ISP_IOXPUT_16(isp, tqsrc->_res2, &tqdst->_res2); -+ ISP_IOXPUT_16(isp, tqsrc->req_time, &tqdst->req_time); -+ ISP_IOXPUT_16(isp, tqsrc->req_seg_count, &tqdst->req_seg_count); -+ for (i = 0; i < 16; i++) { -+ ISP_IOXPUT_8(isp, tqsrc->req_cdb[i], &tqdst->req_cdb[i]); -+ } -+ ISP_IOXPUT_32(isp, tqsrc->req_totalcnt, &tqdst->req_totalcnt); -+ for (i = 0; i < ISP_RQDSEG_T3; i++) { -+ ISP_IOXPUT_32(isp, tqsrc->req_dataseg[i].ds_base, -+ &tqdst->req_dataseg[i].ds_base); -+ ISP_IOXPUT_32(isp, tqsrc->req_dataseg[i].ds_basehi, -+ &tqdst->req_dataseg[i].ds_basehi); -+ ISP_IOXPUT_32(isp, tqsrc->req_dataseg[i].ds_count, -+ &tqdst->req_dataseg[i].ds_count); -+ } -+} -+ -+static INLINE void -+isp_put_extended_request(struct ispsoftc *isp, ispextreq_t *xqsrc, -+ ispextreq_t *xqdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &xqsrc->req_header, &xqdst->req_header); -+ ISP_IOXPUT_32(isp, xqsrc->req_handle, &xqdst->req_handle); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, xqsrc->req_lun_trn, &xqdst->req_target); -+ ISP_IOXPUT_8(isp, xqsrc->req_target, &xqdst->req_lun_trn); -+ } else { -+ ISP_IOXPUT_8(isp, xqsrc->req_lun_trn, &xqdst->req_lun_trn); -+ ISP_IOXPUT_8(isp, xqsrc->req_target, &xqdst->req_target); -+ } -+ ISP_IOXPUT_16(isp, xqsrc->req_cdblen, &xqdst->req_cdblen); -+ ISP_IOXPUT_16(isp, xqsrc->req_flags, &xqdst->req_flags); -+ ISP_IOXPUT_16(isp, xqsrc->req_time, &xqdst->req_time); -+ ISP_IOXPUT_16(isp, xqsrc->req_seg_count, &xqdst->req_seg_count); -+ for (i = 0; i < 44; i++) { -+ ISP_IOXPUT_8(isp, xqsrc->req_cdb[i], &xqdst->req_cdb[i]); -+ } -+} -+ -+static INLINE void -+isp_put_cont_req(struct ispsoftc *isp, ispcontreq_t *cqsrc, ispcontreq_t *cqdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &cqsrc->req_header, &cqdst->req_header); -+ for (i = 0; i < ISP_CDSEG; i++) { -+ ISP_IOXPUT_32(isp, cqsrc->req_dataseg[i].ds_base, -+ &cqdst->req_dataseg[i].ds_base); -+ ISP_IOXPUT_32(isp, cqsrc->req_dataseg[i].ds_count, -+ &cqdst->req_dataseg[i].ds_count); -+ } -+} -+ -+static INLINE void -+isp_put_cont64_req(struct ispsoftc *isp, ispcontreq64_t *cqsrc, -+ ispcontreq64_t *cqdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &cqsrc->req_header, &cqdst->req_header); -+ for (i = 0; i < ISP_CDSEG64; i++) { -+ ISP_IOXPUT_32(isp, cqsrc->req_dataseg[i].ds_base, -+ &cqdst->req_dataseg[i].ds_base); -+ ISP_IOXPUT_32(isp, cqsrc->req_dataseg[i].ds_basehi, -+ &cqdst->req_dataseg[i].ds_basehi); -+ ISP_IOXPUT_32(isp, cqsrc->req_dataseg[i].ds_count, -+ &cqdst->req_dataseg[i].ds_count); -+ } -+} -+ -+static INLINE void -+isp_get_response(struct ispsoftc *isp, ispstatusreq_t *spsrc, -+ ispstatusreq_t *spdst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &spsrc->req_header, &spdst->req_header); -+ ISP_IOXGET_32(isp, &spsrc->req_handle, spdst->req_handle); -+ ISP_IOXGET_16(isp, &spsrc->req_scsi_status, spdst->req_scsi_status); -+ ISP_IOXGET_16(isp, &spsrc->req_completion_status, -+ spdst->req_completion_status); -+ ISP_IOXGET_16(isp, &spsrc->req_state_flags, spdst->req_state_flags); -+ ISP_IOXGET_16(isp, &spsrc->req_status_flags, spdst->req_status_flags); -+ ISP_IOXGET_16(isp, &spsrc->req_time, spdst->req_time); -+ ISP_IOXGET_16(isp, &spsrc->req_sense_len, spdst->req_sense_len); -+ ISP_IOXGET_32(isp, &spsrc->req_resid, spdst->req_resid); -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &spsrc->req_response[i], -+ spdst->req_response[i]); -+ } -+ for (i = 0; i < 32; i++) { -+ ISP_IOXGET_8(isp, &spsrc->req_sense_data[i], -+ spdst->req_sense_data[i]); -+ } -+} -+ -+static INLINE void -+isp_get_response_x(struct ispsoftc *isp, ispstatus_cont_t *cpsrc, -+ ispstatus_cont_t *cpdst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &cpsrc->req_header, &cpdst->req_header); -+ for (i = 0; i < 60; i++) { -+ ISP_IOXGET_8(isp, &cpsrc->req_sense_data[i], -+ cpdst->req_sense_data[i]); -+ } -+} -+ -+static INLINE void -+isp_get_rio2(struct ispsoftc *isp, isp_rio2_t *r2src, isp_rio2_t *r2dst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &r2src->req_header, &r2dst->req_header); -+ if (r2dst->req_header.rqs_seqno > 30) -+ r2dst->req_header.rqs_seqno = 30; -+ for (i = 0; i < r2dst->req_header.rqs_seqno; i++) { -+ ISP_IOXGET_16(isp, &r2src->req_handles[i], -+ r2dst->req_handles[i]); -+ } -+ while (i < 30) { -+ r2dst->req_handles[i++] = 0; -+ } -+} -+ -+static INLINE void -+isp_put_icb(struct ispsoftc *isp, isp_icb_t *Is, isp_icb_t *Id) -+{ -+ int i; -+ ISP_SWAP8(Is->icb_version, Is->_reserved0); -+ ISP_IOXPUT_8(isp, Is->icb_version, &Id->icb_version); -+ ISP_IOXPUT_8(isp, Is->_reserved0, &Id->_reserved0); -+ ISP_IOXPUT_16(isp, Is->icb_fwoptions, &Id->icb_fwoptions); -+ ISP_IOXPUT_16(isp, Is->icb_maxfrmlen, &Id->icb_maxfrmlen); -+ ISP_IOXPUT_16(isp, Is->icb_maxalloc, &Id->icb_maxalloc); -+ ISP_IOXPUT_16(isp, Is->icb_execthrottle, &Id->icb_execthrottle); -+ ISP_SWAP8(Is->icb_retry_count, Is->icb_retry_delay); -+ ISP_IOXPUT_8(isp, Is->icb_retry_count, &Id->icb_retry_count); -+ ISP_IOXPUT_8(isp, Is->icb_retry_delay, &Id->icb_retry_delay); -+ for (i = 0; i < 8; i++) { -+ ISP_IOXPUT_8(isp, Is->icb_portname[i], &Id->icb_portname[i]); -+ } -+ ISP_IOXPUT_16(isp, Is->icb_hardaddr, &Id->icb_hardaddr); -+ ISP_SWAP8(Is->icb_iqdevtype, Is->icb_logintime); -+ ISP_IOXPUT_8(isp, Is->icb_iqdevtype, &Id->icb_iqdevtype); -+ ISP_IOXPUT_8(isp, Is->icb_logintime, &Id->icb_logintime); -+ for (i = 0; i < 8; i++) { -+ ISP_IOXPUT_8(isp, Is->icb_nodename[i], &Id->icb_nodename[i]); -+ } -+ ISP_IOXPUT_16(isp, Is->icb_rqstout, &Id->icb_rqstout); -+ ISP_IOXPUT_16(isp, Is->icb_rspnsin, &Id->icb_rspnsin); -+ ISP_IOXPUT_16(isp, Is->icb_rqstqlen, &Id->icb_rqstqlen); -+ ISP_IOXPUT_16(isp, Is->icb_rsltqlen, &Id->icb_rsltqlen); -+ for (i = 0; i < 4; i++) { -+ ISP_IOXPUT_16(isp, Is->icb_rqstaddr[i], &Id->icb_rqstaddr[i]); -+ } -+ for (i = 0; i < 4; i++) { -+ ISP_IOXPUT_16(isp, Is->icb_respaddr[i], &Id->icb_respaddr[i]); -+ } -+ ISP_IOXPUT_16(isp, Is->icb_lunenables, &Id->icb_lunenables); -+ ISP_SWAP8(Is->icb_ccnt, Is->icb_icnt); -+ ISP_IOXPUT_8(isp, Is->icb_ccnt, &Id->icb_ccnt); -+ ISP_IOXPUT_8(isp, Is->icb_icnt, &Id->icb_icnt); -+ ISP_IOXPUT_16(isp, Is->icb_lunetimeout, &Id->icb_lunetimeout); -+ ISP_IOXPUT_16(isp, Is->icb_xfwoptions, &Id->icb_xfwoptions); -+ ISP_SWAP8(Is->icb_racctimer, Is->icb_idelaytimer); -+ ISP_IOXPUT_8(isp, Is->icb_racctimer, &Id->icb_racctimer); -+ ISP_IOXPUT_8(isp, Is->icb_idelaytimer, &Id->icb_idelaytimer); -+ ISP_IOXPUT_16(isp, Is->icb_zfwoptions, &Id->icb_zfwoptions); -+} -+ -+static INLINE void -+isp_get_pdb(struct ispsoftc *isp, isp_pdb_t *src, isp_pdb_t *dst) -+{ -+ int i; -+ ISP_IOXGET_16(isp, &src->pdb_options, dst->pdb_options); -+ ISP_IOXGET_8(isp, &src->pdb_mstate, dst->pdb_mstate); -+ ISP_IOXGET_8(isp, &src->pdb_sstate, dst->pdb_sstate); -+ for (i = 0; i < 4; i++) { -+ ISP_IOXGET_8(isp, &src->pdb_hardaddr_bits[i], -+ dst->pdb_hardaddr_bits[i]); -+ } -+ for (i = 0; i < 4; i++) { -+ ISP_IOXGET_8(isp, &src->pdb_portid_bits[i], -+ dst->pdb_portid_bits[i]); -+ } -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &src->pdb_nodename[i], dst->pdb_nodename[i]); -+ } -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &src->pdb_portname[i], dst->pdb_portname[i]); -+ } -+ ISP_IOXGET_16(isp, &src->pdb_execthrottle, dst->pdb_execthrottle); -+ ISP_IOXGET_16(isp, &src->pdb_exec_count, dst->pdb_exec_count); -+ ISP_IOXGET_8(isp, &src->pdb_retry_count, dst->pdb_retry_count); -+ ISP_IOXGET_8(isp, &src->pdb_retry_delay, dst->pdb_retry_delay); -+ ISP_IOXGET_16(isp, &src->pdb_resalloc, dst->pdb_resalloc); -+ ISP_IOXGET_16(isp, &src->pdb_curalloc, dst->pdb_curalloc); -+ ISP_IOXGET_16(isp, &src->pdb_qhead, dst->pdb_qhead); -+ ISP_IOXGET_16(isp, &src->pdb_qtail, dst->pdb_qtail); -+ ISP_IOXGET_16(isp, &src->pdb_tl_next, dst->pdb_tl_next); -+ ISP_IOXGET_16(isp, &src->pdb_tl_last, dst->pdb_tl_last); -+ ISP_IOXGET_16(isp, &src->pdb_features, dst->pdb_features); -+ ISP_IOXGET_16(isp, &src->pdb_pconcurrnt, dst->pdb_pconcurrnt); -+ ISP_IOXGET_16(isp, &src->pdb_roi, dst->pdb_roi); -+ ISP_IOXGET_8(isp, &src->pdb_target, dst->pdb_target); -+ ISP_IOXGET_8(isp, &src->pdb_initiator, dst->pdb_initiator); -+ ISP_IOXGET_16(isp, &src->pdb_rdsiz, dst->pdb_rdsiz); -+ ISP_IOXGET_16(isp, &src->pdb_ncseq, dst->pdb_ncseq); -+ ISP_IOXGET_16(isp, &src->pdb_noseq, dst->pdb_noseq); -+ ISP_IOXGET_16(isp, &src->pdb_labrtflg, dst->pdb_labrtflg); -+ ISP_IOXGET_16(isp, &src->pdb_lstopflg, dst->pdb_lstopflg); -+ ISP_IOXGET_16(isp, &src->pdb_sqhead, dst->pdb_sqhead); -+ ISP_IOXGET_16(isp, &src->pdb_sqtail, dst->pdb_sqtail); -+ ISP_IOXGET_16(isp, &src->pdb_ptimer, dst->pdb_ptimer); -+ ISP_IOXGET_16(isp, &src->pdb_nxt_seqid, dst->pdb_nxt_seqid); -+ ISP_IOXGET_16(isp, &src->pdb_fcount, dst->pdb_fcount); -+ ISP_IOXGET_16(isp, &src->pdb_prli_len, dst->pdb_prli_len); -+ ISP_IOXGET_16(isp, &src->pdb_prli_svc0, dst->pdb_prli_svc0); -+ ISP_IOXGET_16(isp, &src->pdb_prli_svc3, dst->pdb_prli_svc3); -+ ISP_IOXGET_16(isp, &src->pdb_loopid, dst->pdb_loopid); -+ ISP_IOXGET_16(isp, &src->pdb_il_ptr, dst->pdb_il_ptr); -+ ISP_IOXGET_16(isp, &src->pdb_sl_ptr, dst->pdb_sl_ptr); -+} -+ -+ -+/* -+ * CT_HDR canonicalization- only needed for SNS responses -+ */ -+static INLINE void -+isp_get_ct_hdr(struct ispsoftc *isp, ct_hdr_t *src, ct_hdr_t *dst) -+{ -+ ISP_IOXGET_8(isp, &src->ct_revision, dst->ct_revision); -+ ISP_IOXGET_8(isp, &src->ct_portid[0], dst->ct_portid[0]); -+ ISP_IOXGET_8(isp, &src->ct_portid[1], dst->ct_portid[1]); -+ ISP_IOXGET_8(isp, &src->ct_portid[2], dst->ct_portid[2]); -+ ISP_IOXGET_8(isp, &src->ct_fcs_type, dst->ct_fcs_type); -+ ISP_IOXGET_8(isp, &src->ct_fcs_subtype, dst->ct_fcs_subtype); -+ ISP_IOXGET_8(isp, &src->ct_options, dst->ct_options); -+ ISP_IOXGET_8(isp, &src->ct_res0, dst->ct_res0); -+ ISP_IOXGET_16(isp, &src->ct_response, dst->ct_response); -+ dst->ct_response = (dst->ct_response << 8) | (dst->ct_response >> 8); -+ ISP_IOXGET_16(isp, &src->ct_resid, dst->ct_resid); -+ dst->ct_resid = (dst->ct_resid << 8) | (dst->ct_resid >> 8); -+ ISP_IOXGET_8(isp, &src->ct_res1, dst->ct_res1); -+ ISP_IOXGET_8(isp, &src->ct_reason, dst->ct_reason); -+ ISP_IOXGET_8(isp, &src->ct_explanation, dst->ct_explanation); -+ ISP_IOXGET_8(isp, &src->ct_vunique, dst->ct_vunique); -+} -+ -+/* -+ * Generic SNS request - not particularly useful since the per-command data -+ * isn't always 16 bit words. -+ */ -+static INLINE void -+isp_put_sns_request(struct ispsoftc *isp, sns_screq_t *src, sns_screq_t *dst) -+{ -+ int i, nw = (int) src->snscb_sblen; -+ ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen); -+ for (i = 0; i < 4; i++) { -+ ISP_IOXPUT_16(isp, src->snscb_addr[i], &dst->snscb_addr[i]); -+ } -+ ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen); -+ for (i = 0; i < nw; i++) { -+ ISP_IOXPUT_16(isp, src->snscb_data[i], &dst->snscb_data[i]); -+ } -+ -+} -+ -+static INLINE void -+isp_put_gid_ft_request(struct ispsoftc *isp, sns_gid_ft_req_t *src, -+ sns_gid_ft_req_t *dst) -+{ -+ ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen); -+ ISP_IOXPUT_16(isp, src->snscb_res0, &dst->snscb_res0); -+ ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]); -+ ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]); -+ ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]); -+ ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]); -+ ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen); -+ ISP_IOXPUT_16(isp, src->snscb_res1, &dst->snscb_res1); -+ ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd); -+ ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2); -+ ISP_IOXPUT_32(isp, src->snscb_res3, &dst->snscb_res3); -+ ISP_IOXPUT_32(isp, src->snscb_fc4_type, &dst->snscb_fc4_type); -+} -+ -+static INLINE void -+isp_put_gxn_id_request(struct ispsoftc *isp, sns_gxn_id_req_t *src, -+ sns_gxn_id_req_t *dst) -+{ -+ ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen); -+ ISP_IOXPUT_16(isp, src->snscb_res0, &dst->snscb_res0); -+ ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]); -+ ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]); -+ ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]); -+ ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]); -+ ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen); -+ ISP_IOXPUT_16(isp, src->snscb_res1, &dst->snscb_res1); -+ ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd); -+ ISP_IOXPUT_16(isp, src->snscb_res2, &dst->snscb_res2); -+ ISP_IOXPUT_32(isp, src->snscb_res3, &dst->snscb_res3); -+ ISP_IOXPUT_32(isp, src->snscb_portid, &dst->snscb_portid); -+} -+ -+/* -+ * Generic SNS response - not particularly useful since the per-command data -+ * isn't always 16 bit words. -+ */ -+static INLINE void -+isp_get_sns_response(struct ispsoftc *isp, sns_scrsp_t *src, -+ sns_scrsp_t *dst, int nwords) -+{ -+ int i; -+ isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); -+ ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type); -+ for (i = 0; i < 3; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_port_id[i], -+ dst->snscb_port_id[i]); -+ } -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_portname[i], -+ dst->snscb_portname[i]); -+ } -+ for (i = 0; i < nwords; i++) { -+ ISP_IOXGET_16(isp, &src->snscb_data[i], dst->snscb_data[i]); -+ } -+} -+ -+static INLINE void -+isp_get_gid_ft_response(struct ispsoftc *isp, sns_gid_ft_rsp_t *src, -+ sns_gid_ft_rsp_t *dst, int nwords) -+{ -+ int i; -+ isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); -+ for (i = 0; i < nwords; i++) { -+ int j; -+ ISP_IOXGET_8(isp, -+ &src->snscb_ports[i].control, -+ dst->snscb_ports[i].control); -+ for (j = 0; j < 3; j++) { -+ ISP_IOXGET_8(isp, -+ &src->snscb_ports[i].portid[j], -+ dst->snscb_ports[i].portid[j]); -+ } -+ if (dst->snscb_ports[i].control & 0x80) { -+ break; -+ } -+ } -+} -+ -+static INLINE void -+isp_get_gxn_id_response(struct ispsoftc *isp, sns_gxn_id_rsp_t *src, -+ sns_gxn_id_rsp_t *dst) -+{ -+ int i; -+ isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); -+ for (i = 0; i < 8; i++) -+ ISP_IOXGET_8(isp, &src->snscb_wwn[i], dst->snscb_wwn[i]); -+} -+ -+static INLINE void -+isp_get_gff_id_response(struct ispsoftc *isp, sns_gff_id_rsp_t *src, -+ sns_gff_id_rsp_t *dst) -+{ -+ int i; -+ isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); -+ for (i = 0; i < 32; i++) { -+ ISP_IOXGET_32(isp, &src->snscb_fc4_features[i], -+ dst->snscb_fc4_features[i]); -+ } -+} -+ -+static INLINE void -+isp_get_ga_nxt_response(struct ispsoftc *isp, sns_ga_nxt_rsp_t *src, -+ sns_ga_nxt_rsp_t *dst) -+{ -+ int i; -+ isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); -+ ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type); -+ for (i = 0; i < 3; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_port_id[i], -+ dst->snscb_port_id[i]); -+ } -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_portname[i], -+ dst->snscb_portname[i]); -+ } -+ ISP_IOXGET_8(isp, &src->snscb_pnlen, dst->snscb_pnlen); -+ for (i = 0; i < 255; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_pname[i], dst->snscb_pname[i]); -+ } -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_nodename[i], -+ dst->snscb_nodename[i]); -+ } -+ ISP_IOXGET_8(isp, &src->snscb_nnlen, dst->snscb_nnlen); -+ for (i = 0; i < 255; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_nname[i], dst->snscb_nname[i]); -+ } -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_ipassoc[i], -+ dst->snscb_ipassoc[i]); -+ } -+ for (i = 0; i < 16; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_ipaddr[i], dst->snscb_ipaddr[i]); -+ } -+ for (i = 0; i < 4; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_svc_class[i], -+ dst->snscb_svc_class[i]); -+ } -+ for (i = 0; i < 32; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_fc4_types[i], -+ dst->snscb_fc4_types[i]); -+ } -+ for (i = 0; i < 8; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_fpname[i], dst->snscb_fpname[i]); -+ } -+ ISP_IOXGET_8(isp, &src->snscb_reserved, dst->snscb_reserved); -+ for (i = 0; i < 3; i++) { -+ ISP_IOXGET_8(isp, &src->snscb_hardaddr[i], -+ dst->snscb_hardaddr[i]); -+ } -+} -+ -+#ifdef ISP_TARGET_MODE -+static INLINE void -+isp_put_atio(struct ispsoftc *isp, at_entry_t *atsrc, at_entry_t *atdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &atsrc->at_header, &atdst->at_header); -+ ISP_IOXPUT_16(isp, atsrc->at_reserved, &atdst->at_reserved); -+ ISP_IOXPUT_16(isp, atsrc->at_handle, &atdst->at_handle); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_iid); -+ ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_lun); -+ ISP_IOXPUT_8(isp, atsrc->at_cdblen, &atdst->at_tgt); -+ ISP_IOXPUT_8(isp, atsrc->at_tgt, &atdst->at_cdblen); -+ ISP_IOXPUT_8(isp, atsrc->at_status, &atdst->at_scsi_status); -+ ISP_IOXPUT_8(isp, atsrc->at_scsi_status, &atdst->at_status); -+ ISP_IOXPUT_8(isp, atsrc->at_tag_val, &atdst->at_tag_type); -+ ISP_IOXPUT_8(isp, atsrc->at_tag_type, &atdst->at_tag_val); -+ } else { -+ ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_lun); -+ ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_iid); -+ ISP_IOXPUT_8(isp, atsrc->at_cdblen, &atdst->at_cdblen); -+ ISP_IOXPUT_8(isp, atsrc->at_tgt, &atdst->at_tgt); -+ ISP_IOXPUT_8(isp, atsrc->at_status, &atdst->at_status); -+ ISP_IOXPUT_8(isp, atsrc->at_scsi_status, -+ &atdst->at_scsi_status); -+ ISP_IOXPUT_8(isp, atsrc->at_tag_val, &atdst->at_tag_val); -+ ISP_IOXPUT_8(isp, atsrc->at_tag_type, &atdst->at_tag_type); -+ } -+ ISP_IOXPUT_32(isp, atsrc->at_flags, &atdst->at_flags); -+ for (i = 0; i < ATIO_CDBLEN; i++) { -+ ISP_IOXPUT_8(isp, atsrc->at_cdb[i], &atdst->at_cdb[i]); -+ } -+ for (i = 0; i < QLTM_SENSELEN; i++) { -+ ISP_IOXPUT_8(isp, atsrc->at_sense[i], &atdst->at_sense[i]); -+ } -+} -+ -+static INLINE void -+isp_get_atio(struct ispsoftc *isp, at_entry_t *atsrc, at_entry_t *atdst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &atsrc->at_header, &atdst->at_header); -+ ISP_IOXGET_16(isp, &atsrc->at_reserved, atdst->at_reserved); -+ ISP_IOXGET_16(isp, &atsrc->at_handle, atdst->at_handle); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_iid); -+ ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_lun); -+ ISP_IOXGET_8(isp, &atsrc->at_cdblen, atdst->at_tgt); -+ ISP_IOXGET_8(isp, &atsrc->at_tgt, atdst->at_cdblen); -+ ISP_IOXGET_8(isp, &atsrc->at_status, atdst->at_scsi_status); -+ ISP_IOXGET_8(isp, &atsrc->at_scsi_status, atdst->at_status); -+ ISP_IOXGET_8(isp, &atsrc->at_tag_val, atdst->at_tag_type); -+ ISP_IOXGET_8(isp, &atsrc->at_tag_type, atdst->at_tag_val); -+ } else { -+ ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_lun); -+ ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_iid); -+ ISP_IOXGET_8(isp, &atsrc->at_cdblen, atdst->at_cdblen); -+ ISP_IOXGET_8(isp, &atsrc->at_tgt, atdst->at_tgt); -+ ISP_IOXGET_8(isp, &atsrc->at_status, atdst->at_status); -+ ISP_IOXGET_8(isp, &atsrc->at_scsi_status, -+ atdst->at_scsi_status); -+ ISP_IOXGET_8(isp, &atsrc->at_tag_val, atdst->at_tag_val); -+ ISP_IOXGET_8(isp, &atsrc->at_tag_type, atdst->at_tag_type); -+ } -+ ISP_IOXGET_32(isp, &atsrc->at_flags, atdst->at_flags); -+ for (i = 0; i < ATIO_CDBLEN; i++) { -+ ISP_IOXGET_8(isp, &atsrc->at_cdb[i], atdst->at_cdb[i]); -+ } -+ for (i = 0; i < QLTM_SENSELEN; i++) { -+ ISP_IOXGET_8(isp, &atsrc->at_sense[i], atdst->at_sense[i]); -+ } -+} -+ -+static INLINE void -+isp_put_atio2(struct ispsoftc *isp, at2_entry_t *atsrc, at2_entry_t *atdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &atsrc->at_header, &atdst->at_header); -+ ISP_IOXPUT_32(isp, atsrc->at_reserved, &atdst->at_reserved); -+ ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_lun); -+ ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_iid); -+ ISP_IOXPUT_16(isp, atsrc->at_rxid, &atdst->at_rxid); -+ ISP_IOXPUT_16(isp, atsrc->at_flags, &atdst->at_flags); -+ ISP_IOXPUT_16(isp, atsrc->at_status, &atdst->at_status); -+ ISP_IOXPUT_8(isp, atsrc->at_crn, &atdst->at_crn); -+ ISP_IOXPUT_8(isp, atsrc->at_taskcodes, &atdst->at_taskcodes); -+ ISP_IOXPUT_8(isp, atsrc->at_taskflags, &atdst->at_taskflags); -+ ISP_IOXPUT_8(isp, atsrc->at_execodes, &atdst->at_execodes); -+ for (i = 0; i < ATIO2_CDBLEN; i++) { -+ ISP_IOXPUT_8(isp, atsrc->at_cdb[i], &atdst->at_cdb[i]); -+ } -+ ISP_IOXPUT_32(isp, atsrc->at_datalen, &atdst->at_datalen); -+ ISP_IOXPUT_16(isp, atsrc->at_scclun, &atdst->at_scclun); -+ for (i = 0; i < 4; i++) { -+ ISP_IOXPUT_16(isp, atsrc->at_wwpn[i], &atdst->at_wwpn[i]); -+ } -+ for (i = 0; i < 6; i++) { -+ ISP_IOXPUT_16(isp, atsrc->at_reserved2[i], -+ &atdst->at_reserved2[i]); -+ } -+ ISP_IOXPUT_16(isp, atsrc->at_oxid, &atdst->at_oxid); -+} -+ -+static INLINE void -+isp_get_atio2(struct ispsoftc *isp, at2_entry_t *atsrc, at2_entry_t *atdst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &atsrc->at_header, &atdst->at_header); -+ ISP_IOXGET_32(isp, &atsrc->at_reserved, atdst->at_reserved); -+ ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_lun); -+ ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_iid); -+ ISP_IOXGET_16(isp, &atsrc->at_rxid, atdst->at_rxid); -+ ISP_IOXGET_16(isp, &atsrc->at_flags, atdst->at_flags); -+ ISP_IOXGET_16(isp, &atsrc->at_status, atdst->at_status); -+ ISP_IOXGET_8(isp, &atsrc->at_crn, atdst->at_crn); -+ ISP_IOXGET_8(isp, &atsrc->at_taskcodes, atdst->at_taskcodes); -+ ISP_IOXGET_8(isp, &atsrc->at_taskflags, atdst->at_taskflags); -+ ISP_IOXGET_8(isp, &atsrc->at_execodes, atdst->at_execodes); -+ for (i = 0; i < ATIO2_CDBLEN; i++) { -+ ISP_IOXGET_8(isp, &atsrc->at_cdb[i], atdst->at_cdb[i]); -+ } -+ ISP_IOXGET_32(isp, &atsrc->at_datalen, atdst->at_datalen); -+ ISP_IOXGET_16(isp, &atsrc->at_scclun, atdst->at_scclun); -+ for (i = 0; i < 4; i++) { -+ ISP_IOXGET_16(isp, &atsrc->at_wwpn[i], atdst->at_wwpn[i]); -+ } -+ for (i = 0; i < 6; i++) { -+ ISP_IOXGET_16(isp, &atsrc->at_reserved2[i], -+ atdst->at_reserved2[i]); -+ } -+ ISP_IOXGET_16(isp, &atsrc->at_oxid, atdst->at_oxid); -+} -+ -+static INLINE void -+isp_put_ctio(struct ispsoftc *isp, ct_entry_t *ctsrc, ct_entry_t *ctdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header); -+ ISP_IOXPUT_16(isp, ctsrc->ct_reserved, &ctdst->ct_reserved); -+ ISP_IOXPUT_16(isp, ctsrc->ct_fwhandle, &ctdst->ct_fwhandle); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_lun); -+ ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_iid); -+ ISP_IOXPUT_8(isp, ctsrc->ct_tgt, &ctdst->ct_reserved2); -+ ISP_IOXPUT_8(isp, ctsrc->ct_reserved2, &ctdst->ct_tgt); -+ ISP_IOXPUT_8(isp, ctsrc->ct_status, &ctdst->ct_scsi_status); -+ ISP_IOXPUT_8(isp, ctsrc->ct_scsi_status, &ctdst->ct_status); -+ ISP_IOXPUT_8(isp, ctsrc->ct_tag_type, &ctdst->ct_tag_val); -+ ISP_IOXPUT_8(isp, ctsrc->ct_tag_val, &ctdst->ct_tag_type); -+ } else { -+ ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_iid); -+ ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_lun); -+ ISP_IOXPUT_8(isp, ctsrc->ct_tgt, &ctdst->ct_tgt); -+ ISP_IOXPUT_8(isp, ctsrc->ct_reserved2, &ctdst->ct_reserved2); -+ ISP_IOXPUT_8(isp, ctsrc->ct_scsi_status, -+ &ctdst->ct_scsi_status); -+ ISP_IOXPUT_8(isp, ctsrc->ct_status, &ctdst->ct_status); -+ ISP_IOXPUT_8(isp, ctsrc->ct_tag_type, &ctdst->ct_tag_type); -+ ISP_IOXPUT_8(isp, ctsrc->ct_tag_val, &ctdst->ct_tag_val); -+ } -+ ISP_IOXPUT_32(isp, ctsrc->ct_flags, &ctdst->ct_flags); -+ ISP_IOXPUT_32(isp, ctsrc->ct_xfrlen, &ctdst->ct_xfrlen); -+ ISP_IOXPUT_32(isp, ctsrc->ct_resid, &ctdst->ct_resid); -+ ISP_IOXPUT_16(isp, ctsrc->ct_timeout, &ctdst->ct_timeout); -+ ISP_IOXPUT_16(isp, ctsrc->ct_seg_count, &ctdst->ct_seg_count); -+ for (i = 0; i < ISP_RQDSEG; i++) { -+ ISP_IOXPUT_32(isp, ctsrc->ct_dataseg[i].ds_base, -+ &ctdst->ct_dataseg[i].ds_base); -+ ISP_IOXPUT_32(isp, ctsrc->ct_dataseg[i].ds_count, -+ &ctdst->ct_dataseg[i].ds_count); -+ } -+} -+ -+static INLINE void -+isp_get_ctio(struct ispsoftc *isp, ct_entry_t *ctsrc, ct_entry_t *ctdst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header); -+ ISP_IOXGET_16(isp, &ctsrc->ct_reserved, ctdst->ct_reserved); -+ ISP_IOXGET_16(isp, &ctsrc->ct_fwhandle, ctdst->ct_fwhandle); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXGET_8(isp, &ctsrc->ct_lun, ctdst->ct_iid); -+ ISP_IOXGET_8(isp, &ctsrc->ct_iid, ctdst->ct_lun); -+ ISP_IOXGET_8(isp, &ctsrc->ct_reserved2, ctdst->ct_tgt); -+ ISP_IOXGET_8(isp, &ctsrc->ct_tgt, ctdst->ct_reserved2); -+ ISP_IOXGET_8(isp, &ctsrc->ct_status, ctdst->ct_scsi_status); -+ ISP_IOXGET_8(isp, &ctsrc->ct_scsi_status, ctdst->ct_status); -+ ISP_IOXGET_8(isp, &ctsrc->ct_tag_val, ctdst->ct_tag_type); -+ ISP_IOXGET_8(isp, &ctsrc->ct_tag_type, ctdst->ct_tag_val); -+ } else { -+ ISP_IOXGET_8(isp, &ctsrc->ct_lun, ctdst->ct_lun); -+ ISP_IOXGET_8(isp, &ctsrc->ct_iid, ctdst->ct_iid); -+ ISP_IOXGET_8(isp, &ctsrc->ct_reserved2, ctdst->ct_reserved2); -+ ISP_IOXGET_8(isp, &ctsrc->ct_tgt, ctdst->ct_tgt); -+ ISP_IOXGET_8(isp, &ctsrc->ct_status, ctdst->ct_status); -+ ISP_IOXGET_8(isp, &ctsrc->ct_scsi_status, -+ ctdst->ct_scsi_status); -+ ISP_IOXGET_8(isp, &ctsrc->ct_tag_val, ctdst->ct_tag_val); -+ ISP_IOXGET_8(isp, &ctsrc->ct_tag_type, ctdst->ct_tag_type); -+ } -+ ISP_IOXGET_32(isp, &ctsrc->ct_flags, ctdst->ct_flags); -+ ISP_IOXGET_32(isp, &ctsrc->ct_xfrlen, ctdst->ct_xfrlen); -+ ISP_IOXGET_32(isp, &ctsrc->ct_resid, ctdst->ct_resid); -+ ISP_IOXGET_16(isp, &ctsrc->ct_timeout, ctdst->ct_timeout); -+ ISP_IOXGET_16(isp, &ctsrc->ct_seg_count, ctdst->ct_seg_count); -+ for (i = 0; i < ISP_RQDSEG; i++) { -+ ISP_IOXGET_32(isp, -+ &ctsrc->ct_dataseg[i].ds_base, -+ ctdst->ct_dataseg[i].ds_base); -+ ISP_IOXGET_32(isp, -+ &ctsrc->ct_dataseg[i].ds_count, -+ ctdst->ct_dataseg[i].ds_count); -+ } -+} -+ -+static INLINE void -+isp_put_ctio2(struct ispsoftc *isp, ct2_entry_t *ctsrc, ct2_entry_t *ctdst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header); -+ ISP_IOXPUT_16(isp, ctsrc->ct_reserved, &ctdst->ct_reserved); -+ ISP_IOXPUT_16(isp, ctsrc->ct_fwhandle, &ctdst->ct_fwhandle); -+ ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_lun); -+ ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_iid); -+ ISP_IOXPUT_16(isp, ctsrc->ct_rxid, &ctdst->ct_rxid); -+ ISP_IOXPUT_16(isp, ctsrc->ct_flags, &ctdst->ct_flags); -+ ISP_IOXPUT_16(isp, ctsrc->ct_timeout, &ctdst->ct_timeout); -+ ISP_IOXPUT_16(isp, ctsrc->ct_seg_count, &ctdst->ct_seg_count); -+ ISP_IOXPUT_32(isp, ctsrc->ct_resid, &ctdst->ct_resid); -+ ISP_IOXPUT_32(isp, ctsrc->ct_reloff, &ctdst->ct_reloff); -+ if ((ctsrc->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE0) { -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m0._reserved, -+ &ctdst->rsp.m0._reserved); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m0._reserved2, -+ &ctdst->rsp.m0._reserved2); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m0.ct_scsi_status, -+ &ctdst->rsp.m0.ct_scsi_status); -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m0.ct_xfrlen, -+ &ctdst->rsp.m0.ct_xfrlen); -+ if (ctsrc->ct_header.rqs_entry_type == RQSTYPE_CTIO2) { -+ for (i = 0; i < ISP_RQDSEG_T2; i++) { -+ ISP_IOXPUT_32(isp, -+ ctsrc->rsp.m0.ct_dataseg[i].ds_base, -+ &ctdst->rsp.m0.ct_dataseg[i].ds_base); -+ ISP_IOXPUT_32(isp, -+ ctsrc->rsp.m0.ct_dataseg[i].ds_count, -+ &ctdst->rsp.m0.ct_dataseg[i].ds_count); -+ } -+ } else if (ctsrc->ct_header.rqs_entry_type == RQSTYPE_CTIO3) { -+ for (i = 0; i < ISP_RQDSEG_T3; i++) { -+ ISP_IOXPUT_32(isp, -+ ctsrc->rsp.m0.ct_dataseg64[i].ds_base, -+ &ctdst->rsp.m0.ct_dataseg64[i].ds_base); -+ ISP_IOXPUT_32(isp, -+ ctsrc->rsp.m0.ct_dataseg64[i].ds_basehi, -+ &ctdst->rsp.m0.ct_dataseg64[i].ds_basehi); -+ ISP_IOXPUT_32(isp, -+ ctsrc->rsp.m0.ct_dataseg64[i].ds_count, -+ &ctdst->rsp.m0.ct_dataseg64[i].ds_count); -+ } -+ } else if (ctsrc->ct_header.rqs_entry_type == RQSTYPE_CTIO4) { -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m0.ct_dslist.ds_type, -+ &ctdst->rsp.m0.ct_dslist.ds_type); -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m0.ct_dslist.ds_segment, -+ &ctdst->rsp.m0.ct_dslist.ds_segment); -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m0.ct_dslist.ds_base, -+ &ctdst->rsp.m0.ct_dslist.ds_base); -+ } -+ } else if ((ctsrc->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE1) { -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m1._reserved, -+ &ctdst->rsp.m1._reserved); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m1._reserved2, -+ &ctdst->rsp.m1._reserved2); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m1.ct_senselen, -+ &ctdst->rsp.m1.ct_senselen); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m1.ct_scsi_status, -+ &ctdst->rsp.m1.ct_scsi_status); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m1.ct_resplen, -+ &ctdst->rsp.m1.ct_resplen); -+ for (i = 0; i < MAXRESPLEN; i++) { -+ ISP_IOXPUT_8(isp, ctsrc->rsp.m1.ct_resp[i], -+ &ctdst->rsp.m1.ct_resp[i]); -+ } -+ } else { -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m2._reserved, -+ &ctdst->rsp.m2._reserved); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m2._reserved2, -+ &ctdst->rsp.m2._reserved2); -+ ISP_IOXPUT_16(isp, ctsrc->rsp.m2._reserved3, -+ &ctdst->rsp.m2._reserved3); -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m2.ct_datalen, -+ &ctdst->rsp.m2.ct_datalen); -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m2.ct_fcp_rsp_iudata.ds_base, -+ &ctdst->rsp.m2.ct_fcp_rsp_iudata.ds_base); -+ ISP_IOXPUT_32(isp, ctsrc->rsp.m2.ct_fcp_rsp_iudata.ds_count, -+ &ctdst->rsp.m2.ct_fcp_rsp_iudata.ds_count); -+ } -+} -+ -+static INLINE void -+isp_get_ctio2(struct ispsoftc *isp, ct2_entry_t *ctsrc, ct2_entry_t *ctdst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header); -+ ISP_IOXGET_16(isp, &ctsrc->ct_reserved, ctdst->ct_reserved); -+ ISP_IOXGET_16(isp, &ctsrc->ct_fwhandle, ctdst->ct_fwhandle); -+ ISP_IOXGET_8(isp, &ctsrc->ct_lun, ctdst->ct_lun); -+ ISP_IOXGET_8(isp, &ctsrc->ct_iid, ctdst->ct_iid); -+ ISP_IOXGET_16(isp, &ctsrc->ct_rxid, ctdst->ct_rxid); -+ ISP_IOXGET_16(isp, &ctsrc->ct_flags, ctdst->ct_flags); -+ ISP_IOXGET_16(isp, &ctsrc->ct_status, ctdst->ct_status); -+ ISP_IOXGET_16(isp, &ctsrc->ct_timeout, ctdst->ct_timeout); -+ ISP_IOXGET_16(isp, &ctsrc->ct_seg_count, ctdst->ct_seg_count); -+ ISP_IOXGET_32(isp, &ctsrc->ct_reloff, ctdst->ct_reloff); -+ ISP_IOXGET_32(isp, &ctsrc->ct_resid, ctdst->ct_resid); -+ for (i = 0; i < 4; i++) { -+ ISP_IOXGET_32(isp, &ctsrc->rsp.fw._reserved[i], -+ ctdst->rsp.fw._reserved[i]); -+ } -+ ISP_IOXGET_16(isp, &ctsrc->rsp.fw.ct_scsi_status, -+ ctdst->rsp.fw.ct_scsi_status); -+ for (i = 0; i < QLTM_SENSELEN; i++) { -+ ISP_IOXGET_8(isp, &ctsrc->rsp.fw.ct_sense[i], -+ ctdst->rsp.fw.ct_sense[i]); -+ } -+} -+ -+static INLINE void -+isp_put_enable_lun(struct ispsoftc *isp, lun_entry_t *lesrc, lun_entry_t *ledst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &lesrc->le_header, &ledst->le_header); -+ ISP_IOXPUT_32(isp, lesrc->le_reserved, &ledst->le_reserved); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, lesrc->le_lun, &ledst->le_rsvd); -+ ISP_IOXPUT_8(isp, lesrc->le_rsvd, &ledst->le_lun); -+ ISP_IOXPUT_8(isp, lesrc->le_ops, &ledst->le_tgt); -+ ISP_IOXPUT_8(isp, lesrc->le_tgt, &ledst->le_ops); -+ ISP_IOXPUT_8(isp, lesrc->le_status, &ledst->le_reserved2); -+ ISP_IOXPUT_8(isp, lesrc->le_reserved2, &ledst->le_status); -+ ISP_IOXPUT_8(isp, lesrc->le_cmd_count, &ledst->le_in_count); -+ ISP_IOXPUT_8(isp, lesrc->le_in_count, &ledst->le_cmd_count); -+ ISP_IOXPUT_8(isp, lesrc->le_cdb6len, &ledst->le_cdb7len); -+ ISP_IOXPUT_8(isp, lesrc->le_cdb7len, &ledst->le_cdb6len); -+ } else { -+ ISP_IOXPUT_8(isp, lesrc->le_lun, &ledst->le_lun); -+ ISP_IOXPUT_8(isp, lesrc->le_rsvd, &ledst->le_rsvd); -+ ISP_IOXPUT_8(isp, lesrc->le_ops, &ledst->le_ops); -+ ISP_IOXPUT_8(isp, lesrc->le_tgt, &ledst->le_tgt); -+ ISP_IOXPUT_8(isp, lesrc->le_status, &ledst->le_status); -+ ISP_IOXPUT_8(isp, lesrc->le_reserved2, &ledst->le_reserved2); -+ ISP_IOXPUT_8(isp, lesrc->le_cmd_count, &ledst->le_cmd_count); -+ ISP_IOXPUT_8(isp, lesrc->le_in_count, &ledst->le_in_count); -+ ISP_IOXPUT_8(isp, lesrc->le_cdb6len, &ledst->le_cdb6len); -+ ISP_IOXPUT_8(isp, lesrc->le_cdb7len, &ledst->le_cdb7len); -+ } -+ ISP_IOXPUT_32(isp, lesrc->le_flags, &ledst->le_flags); -+ ISP_IOXPUT_16(isp, lesrc->le_timeout, &ledst->le_timeout); -+ for (i = 0; i < 20; i++) { -+ ISP_IOXPUT_8(isp, lesrc->le_reserved3[i], -+ &ledst->le_reserved3[i]); -+ } -+} -+ -+static INLINE void -+isp_get_enable_lun(struct ispsoftc *isp, lun_entry_t *lesrc, lun_entry_t *ledst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &lesrc->le_header, &ledst->le_header); -+ ISP_IOXGET_32(isp, &lesrc->le_reserved, ledst->le_reserved); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXGET_8(isp, &lesrc->le_lun, ledst->le_rsvd); -+ ISP_IOXGET_8(isp, &lesrc->le_rsvd, ledst->le_lun); -+ ISP_IOXGET_8(isp, &lesrc->le_ops, ledst->le_tgt); -+ ISP_IOXGET_8(isp, &lesrc->le_tgt, ledst->le_ops); -+ ISP_IOXGET_8(isp, &lesrc->le_status, ledst->le_reserved2); -+ ISP_IOXGET_8(isp, &lesrc->le_reserved2, ledst->le_status); -+ ISP_IOXGET_8(isp, &lesrc->le_cmd_count, ledst->le_in_count); -+ ISP_IOXGET_8(isp, &lesrc->le_in_count, ledst->le_cmd_count); -+ ISP_IOXGET_8(isp, &lesrc->le_cdb6len, ledst->le_cdb7len); -+ ISP_IOXGET_8(isp, &lesrc->le_cdb7len, ledst->le_cdb6len); -+ } else { -+ ISP_IOXGET_8(isp, &lesrc->le_lun, ledst->le_lun); -+ ISP_IOXGET_8(isp, &lesrc->le_rsvd, ledst->le_rsvd); -+ ISP_IOXGET_8(isp, &lesrc->le_ops, ledst->le_ops); -+ ISP_IOXGET_8(isp, &lesrc->le_tgt, ledst->le_tgt); -+ ISP_IOXGET_8(isp, &lesrc->le_status, ledst->le_status); -+ ISP_IOXGET_8(isp, &lesrc->le_reserved2, ledst->le_reserved2); -+ ISP_IOXGET_8(isp, &lesrc->le_cmd_count, ledst->le_cmd_count); -+ ISP_IOXGET_8(isp, &lesrc->le_in_count, ledst->le_in_count); -+ ISP_IOXGET_8(isp, &lesrc->le_cdb6len, ledst->le_cdb6len); -+ ISP_IOXGET_8(isp, &lesrc->le_cdb7len, ledst->le_cdb7len); -+ } -+ ISP_IOXGET_32(isp, &lesrc->le_flags, ledst->le_flags); -+ ISP_IOXGET_16(isp, &lesrc->le_timeout, ledst->le_timeout); -+ for (i = 0; i < 20; i++) { -+ ISP_IOXGET_8(isp, &lesrc->le_reserved3[i], -+ ledst->le_reserved3[i]); -+ } -+} -+ -+static INLINE void -+isp_put_notify(struct ispsoftc *isp, in_entry_t *insrc, in_entry_t *indst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &insrc->in_header, &indst->in_header); -+ ISP_IOXPUT_32(isp, insrc->in_reserved, &indst->in_reserved); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, insrc->in_lun, &indst->in_iid); -+ ISP_IOXPUT_8(isp, insrc->in_iid, &indst->in_lun); -+ ISP_IOXPUT_8(isp, insrc->in_reserved2, &indst->in_tgt); -+ ISP_IOXPUT_8(isp, insrc->in_tgt, &indst->in_reserved2); -+ ISP_IOXPUT_8(isp, insrc->in_status, &indst->in_rsvd2); -+ ISP_IOXPUT_8(isp, insrc->in_rsvd2, &indst->in_status); -+ ISP_IOXPUT_8(isp, insrc->in_tag_val, &indst->in_tag_type); -+ ISP_IOXPUT_8(isp, insrc->in_tag_type, &indst->in_tag_val); -+ } else { -+ ISP_IOXPUT_8(isp, insrc->in_lun, &indst->in_lun); -+ ISP_IOXPUT_8(isp, insrc->in_iid, &indst->in_iid); -+ ISP_IOXPUT_8(isp, insrc->in_reserved2, &indst->in_reserved2); -+ ISP_IOXPUT_8(isp, insrc->in_tgt, &indst->in_tgt); -+ ISP_IOXPUT_8(isp, insrc->in_status, &indst->in_status); -+ ISP_IOXPUT_8(isp, insrc->in_rsvd2, &indst->in_rsvd2); -+ ISP_IOXPUT_8(isp, insrc->in_tag_val, &indst->in_tag_val); -+ ISP_IOXPUT_8(isp, insrc->in_tag_type, &indst->in_tag_type); -+ } -+ ISP_IOXPUT_32(isp, insrc->in_flags, &indst->in_flags); -+ ISP_IOXPUT_16(isp, insrc->in_seqid, &indst->in_seqid); -+ for (i = 0; i < IN_MSGLEN; i++) { -+ ISP_IOXPUT_8(isp, insrc->in_msg[i], &indst->in_msg[i]); -+ } -+ for (i = 0; i < IN_RSVDLEN; i++) { -+ ISP_IOXPUT_8(isp, insrc->in_reserved3[i], -+ &indst->in_reserved3[i]); -+ } -+ for (i = 0; i < QLTM_SENSELEN; i++) { -+ ISP_IOXPUT_8(isp, insrc->in_sense[i], -+ &indst->in_sense[i]); -+ } -+} -+ -+static INLINE void -+isp_get_notify(struct ispsoftc *isp, in_entry_t *insrc, in_entry_t *indst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &insrc->in_header, &indst->in_header); -+ ISP_IOXGET_32(isp, &insrc->in_reserved, indst->in_reserved); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXGET_8(isp, &insrc->in_lun, indst->in_iid); -+ ISP_IOXGET_8(isp, &insrc->in_iid, indst->in_lun); -+ ISP_IOXGET_8(isp, &insrc->in_reserved2, indst->in_tgt); -+ ISP_IOXGET_8(isp, &insrc->in_tgt, indst->in_reserved2); -+ ISP_IOXGET_8(isp, &insrc->in_status, indst->in_rsvd2); -+ ISP_IOXGET_8(isp, &insrc->in_rsvd2, indst->in_status); -+ ISP_IOXGET_8(isp, &insrc->in_tag_val, indst->in_tag_type); -+ ISP_IOXGET_8(isp, &insrc->in_tag_type, indst->in_tag_val); -+ } else { -+ ISP_IOXGET_8(isp, &insrc->in_lun, indst->in_lun); -+ ISP_IOXGET_8(isp, &insrc->in_iid, indst->in_iid); -+ ISP_IOXGET_8(isp, &insrc->in_reserved2, indst->in_reserved2); -+ ISP_IOXGET_8(isp, &insrc->in_tgt, indst->in_tgt); -+ ISP_IOXGET_8(isp, &insrc->in_status, indst->in_status); -+ ISP_IOXGET_8(isp, &insrc->in_rsvd2, indst->in_rsvd2); -+ ISP_IOXGET_8(isp, &insrc->in_tag_val, indst->in_tag_val); -+ ISP_IOXGET_8(isp, &insrc->in_tag_type, indst->in_tag_type); -+ } -+ ISP_IOXGET_32(isp, &insrc->in_flags, indst->in_flags); -+ ISP_IOXGET_16(isp, &insrc->in_seqid, indst->in_seqid); -+ for (i = 0; i < IN_MSGLEN; i++) { -+ ISP_IOXGET_8(isp, &insrc->in_msg[i], indst->in_msg[i]); -+ } -+ for (i = 0; i < IN_RSVDLEN; i++) { -+ ISP_IOXGET_8(isp, &insrc->in_reserved3[i], -+ indst->in_reserved3[i]); -+ } -+ for (i = 0; i < QLTM_SENSELEN; i++) { -+ ISP_IOXGET_8(isp, &insrc->in_sense[i], -+ indst->in_sense[i]); -+ } -+} -+ -+static INLINE void -+isp_put_notify_fc(struct ispsoftc *isp, in_fcentry_t *insrc, -+ in_fcentry_t *indst) -+{ -+ isp_copy_out_hdr(isp, &insrc->in_header, &indst->in_header); -+ ISP_IOXPUT_32(isp, insrc->in_reserved, &indst->in_reserved); -+ ISP_IOXPUT_8(isp, insrc->in_lun, &indst->in_lun); -+ ISP_IOXPUT_8(isp, insrc->in_iid, &indst->in_iid); -+ ISP_IOXPUT_16(isp, insrc->in_scclun, &indst->in_scclun); -+ ISP_IOXPUT_32(isp, insrc->in_reserved2, &indst->in_reserved2); -+ ISP_IOXPUT_16(isp, insrc->in_status, &indst->in_status); -+ ISP_IOXPUT_16(isp, insrc->in_task_flags, &indst->in_task_flags); -+ ISP_IOXPUT_16(isp, insrc->in_seqid, &indst->in_seqid); -+} -+ -+static INLINE void -+isp_get_notify_fc(struct ispsoftc *isp, in_fcentry_t *insrc, -+ in_fcentry_t *indst) -+{ -+ isp_copy_in_hdr(isp, &insrc->in_header, &indst->in_header); -+ ISP_IOXGET_32(isp, &insrc->in_reserved, indst->in_reserved); -+ ISP_IOXGET_8(isp, &insrc->in_lun, indst->in_lun); -+ ISP_IOXGET_8(isp, &insrc->in_iid, indst->in_iid); -+ ISP_IOXGET_16(isp, &insrc->in_scclun, indst->in_scclun); -+ ISP_IOXGET_32(isp, &insrc->in_reserved2, indst->in_reserved2); -+ ISP_IOXGET_16(isp, &insrc->in_status, indst->in_status); -+ ISP_IOXGET_16(isp, &insrc->in_task_flags, indst->in_task_flags); -+ ISP_IOXGET_16(isp, &insrc->in_seqid, indst->in_seqid); -+} -+ -+static INLINE void -+isp_put_notify_ack(struct ispsoftc *isp, na_entry_t *nasrc, na_entry_t *nadst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &nasrc->na_header, &nadst->na_header); -+ ISP_IOXPUT_32(isp, nasrc->na_reserved, &nadst->na_reserved); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXPUT_8(isp, nasrc->na_lun, &nadst->na_iid); -+ ISP_IOXPUT_8(isp, nasrc->na_iid, &nadst->na_lun); -+ ISP_IOXPUT_8(isp, nasrc->na_status, &nadst->na_event); -+ ISP_IOXPUT_8(isp, nasrc->na_event, &nadst->na_status); -+ } else { -+ ISP_IOXPUT_8(isp, nasrc->na_lun, &nadst->na_lun); -+ ISP_IOXPUT_8(isp, nasrc->na_iid, &nadst->na_iid); -+ ISP_IOXPUT_8(isp, nasrc->na_status, &nadst->na_status); -+ ISP_IOXPUT_8(isp, nasrc->na_event, &nadst->na_event); -+ } -+ ISP_IOXPUT_32(isp, nasrc->na_flags, &nadst->na_flags); -+ for (i = 0; i < NA_RSVDLEN; i++) { -+ ISP_IOXPUT_16(isp, nasrc->na_reserved3[i], -+ &nadst->na_reserved3[i]); -+ } -+} -+ -+static INLINE void -+isp_get_notify_ack(struct ispsoftc *isp, na_entry_t *nasrc, na_entry_t *nadst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &nasrc->na_header, &nadst->na_header); -+ ISP_IOXGET_32(isp, &nasrc->na_reserved, nadst->na_reserved); -+ if (ISP_IS_SBUS(isp)) { -+ ISP_IOXGET_8(isp, &nasrc->na_lun, nadst->na_iid); -+ ISP_IOXGET_8(isp, &nasrc->na_iid, nadst->na_lun); -+ ISP_IOXGET_8(isp, &nasrc->na_status, nadst->na_event); -+ ISP_IOXGET_8(isp, &nasrc->na_event, nadst->na_status); -+ } else { -+ ISP_IOXGET_8(isp, &nasrc->na_lun, nadst->na_lun); -+ ISP_IOXGET_8(isp, &nasrc->na_iid, nadst->na_iid); -+ ISP_IOXGET_8(isp, &nasrc->na_status, nadst->na_status); -+ ISP_IOXGET_8(isp, &nasrc->na_event, nadst->na_event); -+ } -+ ISP_IOXGET_32(isp, &nasrc->na_flags, nadst->na_flags); -+ for (i = 0; i < NA_RSVDLEN; i++) { -+ ISP_IOXGET_16(isp, &nasrc->na_reserved3[i], -+ nadst->na_reserved3[i]); -+ } -+} -+ -+static INLINE void -+isp_put_notify_ack_fc(struct ispsoftc *isp, na_fcentry_t *nasrc, -+ na_fcentry_t *nadst) -+{ -+ int i; -+ isp_copy_out_hdr(isp, &nasrc->na_header, &nadst->na_header); -+ ISP_IOXPUT_32(isp, nasrc->na_reserved, &nadst->na_reserved); -+ ISP_IOXPUT_8(isp, nasrc->na_lun, &nadst->na_lun); -+ ISP_IOXPUT_8(isp, nasrc->na_iid, &nadst->na_iid); -+ ISP_IOXPUT_16(isp, nasrc->na_scclun, &nadst->na_scclun); -+ ISP_IOXPUT_16(isp, nasrc->na_flags, &nadst->na_flags); -+ ISP_IOXPUT_16(isp, nasrc->na_reserved2, &nadst->na_reserved2); -+ ISP_IOXPUT_16(isp, nasrc->na_status, &nadst->na_status); -+ ISP_IOXPUT_16(isp, nasrc->na_task_flags, &nadst->na_task_flags); -+ ISP_IOXPUT_16(isp, nasrc->na_seqid, &nadst->na_seqid); -+ for (i = 0; i < NA2_RSVDLEN; i++) { -+ ISP_IOXPUT_16(isp, nasrc->na_reserved3[i], -+ &nadst->na_reserved3[i]); -+ } -+} -+ -+static INLINE void -+isp_get_notify_ack_fc(struct ispsoftc *isp, na_fcentry_t *nasrc, -+ na_fcentry_t *nadst) -+{ -+ int i; -+ isp_copy_in_hdr(isp, &nasrc->na_header, &nadst->na_header); -+ ISP_IOXGET_32(isp, &nasrc->na_reserved, nadst->na_reserved); -+ ISP_IOXGET_8(isp, &nasrc->na_lun, nadst->na_lun); -+ ISP_IOXGET_8(isp, &nasrc->na_iid, nadst->na_iid); -+ ISP_IOXGET_16(isp, &nasrc->na_scclun, nadst->na_scclun); -+ ISP_IOXGET_16(isp, &nasrc->na_flags, nadst->na_flags); -+ ISP_IOXGET_16(isp, &nasrc->na_reserved2, nadst->na_reserved2); -+ ISP_IOXGET_16(isp, &nasrc->na_status, nadst->na_status); -+ ISP_IOXGET_16(isp, &nasrc->na_task_flags, nadst->na_task_flags); -+ ISP_IOXGET_16(isp, &nasrc->na_seqid, nadst->na_seqid); -+ for (i = 0; i < NA2_RSVDLEN; i++) { -+ ISP_IOXGET_16(isp, &nasrc->na_reserved3[i], -+ nadst->na_reserved3[i]); -+ } -+} -+#endif -+#endif /* _ISP_INLINE_H */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_ioctl.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,128 @@ -+/* %W% */ -+/* -+ * ioctl definitions for Qlogic FC/SCSI HBA driver -+ */ -+#define ISP_IOC (0x4D4A5100) /* 'MJQ' << 8 */ -+ -+/* -+ * This ioctl sets/retrieves the debugging level for this hba instance. -+ * Note that this is not a simple integer level- see ispvar.h for definitions. -+ * -+ * The arguments is a pointer to an integer with the new debugging level. -+ * The old value is written into this argument. -+ */ -+ -+#define ISP_SDBLEV (ISP_IOC | 1) -+ -+/* -+ * This ioctl resets the HBA. Use with caution. -+ */ -+#define ISP_RESETHBA (ISP_IOC | 2) -+ -+/* -+ * This ioctl performs a fibre chanel rescan. -+ */ -+#define ISP_RESCAN (ISP_IOC | 3) -+ -+/* -+ * This ioctl performs a reset and then will set the adapter to the -+ * role that was passed in (the old role will be returned). It almost -+ * goes w/o saying: use with caution. -+ */ -+#define ISP_SETROLE (ISP_IOC | 4) -+ -+#define ISP_ROLE_NONE 0x0 -+#define ISP_ROLE_INITIATOR 0x1 -+#define ISP_ROLE_TARGET 0x2 -+#define ISP_ROLE_BOTH (ISP_ROLE_TARGET|ISP_ROLE_INITIATOR) -+#ifndef ISP_DEFAULT_ROLES -+#define ISP_DEFAULT_ROLES ISP_ROLE_BOTH -+#endif -+ -+/* -+ * Get the current adapter role -+ */ -+#define ISP_GETROLE (ISP_IOC | 5) -+ -+/* -+ * Get/Clear Stats -+ */ -+#define ISP_STATS_VERSION 0 -+typedef struct { -+ u_int8_t isp_stat_version; -+ u_int8_t isp_type; /* (ro) reflects chip type */ -+ u_int8_t isp_revision; /* (ro) reflects chip version */ -+ u_int8_t unused1; -+ u_int32_t unused2; -+ /* -+ * Statistics Counters -+ */ -+#define ISP_NSTATS 16 -+#define ISP_INTCNT 0 -+#define ISP_INTBOGUS 1 -+#define ISP_INTMBOXC 2 -+#define ISP_INGOASYNC 3 -+#define ISP_RSLTCCMPLT 4 -+#define ISP_FPHCCMCPLT 5 -+#define ISP_RSCCHIWAT 6 -+#define ISP_FPCCHIWAT 7 -+ u_int64_t isp_stats[ISP_NSTATS]; -+} isp_stats_t; -+ -+#define ISP_GET_STATS (ISP_IOC | 6) -+#define ISP_CLR_STATS (ISP_IOC | 7) -+ -+/* -+ * Initiate a LIP -+ */ -+#define ISP_FC_LIP (ISP_IOC | 8) -+ -+/* -+ * Return the Port Database structure for the named device, or ENODEV if none. -+ * Caller fills in virtual loopid (0..255), aka 'target'. The driver returns -+ * ENODEV (if nothing valid there) or the actual loopid (for local loop devices -+ * only), 24 bit Port ID and Node and Port WWNs. -+ */ -+struct isp_fc_device { -+ u_int32_t loopid; /* 0..255 */ -+ u_int32_t portid; /* 24 bit Port ID */ -+ u_int64_t node_wwn; -+ u_int64_t port_wwn; -+}; -+#define ISP_FC_GETDINFO (ISP_IOC | 9) -+ -+/* -+ * Get F/W crash dump -+ */ -+#define ISP_GET_FW_CRASH_DUMP (ISP_IOC | 10) -+#define ISP_FORCE_CRASH_DUMP (ISP_IOC | 11) -+ -+/* -+ * Get information about this Host Adapter, including current connection -+ * topology and capabilities. -+ */ -+struct isp_hba_device { -+ u_int32_t -+ : 8, -+ : 4, -+ fc_speed : 4, /* Gbps */ -+ : 2, -+ fc_class2 : 1, -+ fc_ip_supported : 1, -+ fc_scsi_supported : 1, -+ fc_topology : 3, -+ fc_loopid : 8; -+ u_int64_t nvram_node_wwn; -+ u_int64_t nvram_port_wwn; -+ u_int64_t active_node_wwn; -+ u_int64_t active_port_wwn; -+}; -+ -+#define ISP_TOPO_UNKNOWN 0 /* connection topology unknown */ -+#define ISP_TOPO_FCAL 1 /* private or PL_DA */ -+#define ISP_TOPO_LPORT 2 /* public loop */ -+#define ISP_TOPO_NPORT 3 /* N-port */ -+#define ISP_TOPO_FPORT 4 /* F-port */ -+ -+#define ISP_FC_GETHINFO (ISP_IOC|12) -+ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_linux.c 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,3015 @@ -+/* @(#)isp_linux.c 1.66 */ -+/* -+ * Qlogic ISP Host Adapter Common Bus Linux routies -+ *--------------------------------------- -+ * -+ * Copyright (c) 1998, 1999, 2000, 2001 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions, and the following disclaimer, -+ * without modification, immediately at the beginning of the file. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * Alternatively, this software may be distributed under the terms of the -+ * the GNU Public License ("GPL"). -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * Matthew Jacob -+ * Feral Software -+ * PMB #825 -+ * 5214-F Diamond Hts Blvd -+ * San Francisco, CA, 94131 -+ * mjacob@feral.com -+ * -+ *-------- -+ * Bug fixes from Janice McLaughlin (janus@somemore.com) -+ * gratefully acknowledged. -+ * -+ */ -+ -+#define ISP_MODULE 1 -+#include "isp_linux.h" -+#include "linux/smp_lock.h" -+ -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+#define scsi_add_timer _scsi_add_timer -+#define scsi_delete_timer _scsi_delete_timer -+static INLINE void _scsi_add_timer(Scsi_Cmnd *, int, void ((*)(Scsi_Cmnd *))); -+static INLINE int _scsi_delete_timer(Scsi_Cmnd *); -+ -+static INLINE void -+scsi_add_timer(Scsi_Cmnd *SCset, int timeout, void (*complete)(Scsi_Cmnd *)) -+{ -+ if (SCset->eh_timeout.function != NULL) { -+ del_timer(&SCset->eh_timeout); -+ } -+ SCset->eh_timeout.data = (unsigned long) SCset; -+ SCset->eh_timeout.expires = jiffies + timeout; -+ SCset->eh_timeout.function = (void (*)(unsigned long))complete; -+ add_timer(&SCset->eh_timeout); -+} -+static INLINE int -+scsi_delete_timer(Scsi_Cmnd *SCset) -+{ -+ if (SCset->eh_timeout.function != NULL) { -+ del_timer(&SCset->eh_timeout); -+ } -+ SCset->eh_timeout.data = 0UL; -+ SCset->eh_timeout.function = NULL; -+ return 0; -+} -+#else -+extern void scsi_add_timer(Scsi_Cmnd *, int, void ((*)(Scsi_Cmnd *))); -+extern int scsi_delete_timer(Scsi_Cmnd *); -+#endif -+static int isp_task_thread(void *); -+ -+struct ispsoftc *isplist = NULL; -+const char *class3_roles[4] = { -+ "None", "Target", "Initiator", "Target/Initiator" -+}; -+int isp_debug = 0; -+int isp_throttle = 0; -+int isp_cmd_per_lun = 0; -+int isp_unit_seed = 0; -+int isp_disable = 0; -+int isp_nofwreload = 0; -+int isp_nonvram = 0; -+int isp_maxluns = 8; -+int isp_fcduplex = 0; -+int isp_nport_only = 0; -+int isp_loop_only = 0; -+int isp_deadloop_time = 30; /* how long to wait before assume loop dead */ -+int isp_xtime = 0; -+int isp_default_frame_size; -+int isp_default_exec_throttle; -+ -+static char *isp_roles; -+static char *isp_wwpns; -+static char *isp_wwnns; -+ -+ -+#ifdef LINUX_ISP_TARGET_MODE -+#ifndef ISP_PARENT_TARGET -+#define ISP_PARENT_TARGET scsi_target_handler -+#endif -+extern void ISP_PARENT_TARGET (qact_e, void *); -+static void isp_taction(qact_e, void *); -+static INLINE int nolunsenabled(struct ispsoftc *, int); -+static void isp_target_start_ctio(struct ispsoftc *, tmd_cmd_t *); -+static int isp_handle_platform_atio(struct ispsoftc *, at_entry_t *); -+static int isp_handle_platform_atio2(struct ispsoftc *, at2_entry_t *); -+static int isp_handle_platform_ctio(struct ispsoftc *, void *); -+static int isp_handle_platform_ctio_fastpost(struct ispsoftc *, u_int32_t); -+static void isp_target_putback_atio(struct ispsoftc *, tmd_cmd_t *); -+static void isp_complete_ctio(struct ispsoftc *, tmd_cmd_t *); -+#endif -+ -+extern int isplinux_pci_detect(Scsi_Host_Template *); -+extern void isplinux_pci_release(struct Scsi_Host *); -+ -+int -+isplinux_detect(Scsi_Host_Template *tmpt) -+{ -+ int rval; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+ extern struct proc_dir_entry proc_scsi_qlc; -+ tmpt->proc_dir = &proc_scsi_qlc; -+#else -+ tmpt->proc_name = "isp"; -+#endif -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ spin_unlock_irq(&io_request_lock); -+ rval = isplinux_pci_detect(tmpt); -+ spin_lock_irq(&io_request_lock); -+#else -+ rval = isplinux_pci_detect(tmpt); -+#endif -+ return (rval); -+} -+ -+/* io_request_lock *not* held here */ -+int -+isplinux_release(struct Scsi_Host *host) -+{ -+ struct ispsoftc *isp = (struct ispsoftc *) host->hostdata; -+#ifdef ISP_TARGET_MODE -+ isp_detach_target(isp); -+#endif -+ if (isp->isp_osinfo.task_thread) { -+ SEND_THREAD_EVENT(isp, ISP_THREAD_EXIT, 1); -+ } -+ ISP_LOCKU_SOFTC(isp); -+ isp->isp_role = ISP_ROLE_NONE; -+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); -+ if (IS_FC(isp)) { -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_FPM0_REGS); -+ ISP_WRITE(isp, FPM_DIAG_CONFIG, FPM_SOFT_RESET); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_FB_REGS); -+ ISP_WRITE(isp, FBM_CMD, FBMCMD_FIFO_RESET_ALL); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_RISC_REGS); -+ } -+ isp->dogactive = 0; -+ del_timer(&isp->isp_osinfo.timer); -+ DISABLE_INTS(isp); -+ if (isp->isp_bustype == ISP_BT_PCI) { -+ isplinux_pci_release(host); -+ } -+ ISP_UNLKU_SOFTC(isp); -+#ifdef ISP_FW_CRASH_DUMP -+ if (FCPARAM(isp)->isp_dump_data) { -+ size_t amt; -+ if (IS_2200(isp)) -+ amt = QLA2200_RISC_IMAGE_DUMP_SIZE; -+ else -+ amt = QLA2200_RISC_IMAGE_DUMP_SIZE; -+ isp_prt(isp, ISP_LOGCONFIG, "freeing crash dump area"); -+ isp_kfree(FCPARAM(isp)->isp_dump_data, amt); -+ FCPARAM(isp)->isp_dump_data = 0; -+ } -+#if defined(CONFIG_PROC_FS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ /* -+ * Undo any PROCFS stuff -+ */ -+ isplinux_undo_proc(isp); -+#endif -+ return (1); -+#endif -+} -+ -+const char * -+isplinux_info(struct Scsi_Host *host) -+{ -+ struct ispsoftc *isp = (struct ispsoftc *) host->hostdata; -+ if (IS_FC(isp)) { -+ static char *foo = "Driver for a Qlogic ISP 2X00 Host Adapter"; -+ foo[26] = '0'; -+ foo[27] = '0'; -+ if (isp->isp_type == ISP_HA_FC_2100) -+ foo[25] = '1'; -+ else if (isp->isp_type == ISP_HA_FC_2200) -+ foo[25] = '2'; -+ else if (isp->isp_type == ISP_HA_FC_2300) -+ foo[25] = '3'; -+ else if (isp->isp_type == ISP_HA_FC_2312) { -+ foo[25] = '3'; -+ foo[26] = '1'; -+ foo[27] = '2'; -+ } -+ return (foo); -+ } else if (IS_1240(isp)) { -+ return ("Driver for a Qlogic ISP 1240 Host Adapter"); -+ } else if (IS_1080(isp)) { -+ return ("Driver for a Qlogic ISP 1080 Host Adapter"); -+ } else if (IS_1280(isp)) { -+ return ("Driver for a Qlogic ISP 1280 Host Adapter"); -+ } else if (IS_10160(isp)) { -+ return ("Driver for a Qlogic ISP 10160 Host Adapter"); -+ } else if (IS_12160(isp)) { -+ return ("Driver for a Qlogic ISP 12160 Host Adapter"); -+ } else { -+ return ("Driver for a Qlogic ISP 1020/1040 Host Adapter"); -+ } -+} -+ -+static INLINE void -+isplinux_append_to_waitq(struct ispsoftc *isp, Scsi_Cmnd *Cmnd) -+{ -+ /* -+ * If we're a fibre channel card and we consider the loop to be -+ * down, we just finish the command here and now. -+ */ -+ if (IS_FC(isp) && isp->isp_deadloop) { -+ XS_INITERR(Cmnd); -+ XS_SETERR(Cmnd, DID_NO_CONNECT); -+ -+ /* -+ * Add back a timer else scsi_done drops this on the floor. -+ */ -+ scsi_add_timer(Cmnd, Cmnd->timeout_per_command, Cmnd->done); -+ isp_prt(isp, ISP_LOGDEBUG0, "giving up on target %d", XS_TGT(Cmnd)); -+ ISP_UNLK_SOFTC(isp); -+ ISP_LOCK_SCSI_DONE(isp); -+ (*Cmnd->scsi_done)(Cmnd); -+ ISP_UNLK_SCSI_DONE(isp); -+ ISP_LOCK_SOFTC(isp); -+ return; -+ } -+ -+ isp->isp_osinfo.wqcnt++; -+ if (isp->isp_osinfo.wqhiwater < isp->isp_osinfo.wqcnt) -+ isp->isp_osinfo.wqhiwater = isp->isp_osinfo.wqcnt; -+ if (isp->isp_osinfo.wqnext == NULL) { -+ isp->isp_osinfo.wqtail = isp->isp_osinfo.wqnext = Cmnd; -+ } else { -+ isp->isp_osinfo.wqtail->host_scribble = (unsigned char *) Cmnd; -+ isp->isp_osinfo.wqtail = Cmnd; -+ } -+ Cmnd->host_scribble = NULL; -+ -+ -+ /* -+ * Stop the clock for this command. -+ */ -+ (void) scsi_delete_timer(Cmnd); -+} -+ -+static INLINE void -+isplinux_insert_head_waitq(struct ispsoftc *isp, Scsi_Cmnd *Cmnd) -+{ -+ isp->isp_osinfo.wqcnt++; -+ if (isp->isp_osinfo.wqnext == NULL) { -+ isp->isp_osinfo.wqtail = isp->isp_osinfo.wqnext = Cmnd; -+ Cmnd->host_scribble = NULL; -+ } else { -+ Cmnd->host_scribble = (unsigned char *) isp->isp_osinfo.wqnext; -+ isp->isp_osinfo.wqnext = Cmnd; -+ } -+} -+ -+static INLINE Scsi_Cmnd * -+isp_remove_from_waitq(Scsi_Cmnd *Cmnd) -+{ -+ struct ispsoftc *isp; -+ Scsi_Cmnd *f; -+ if (Cmnd == NULL) -+ return (Cmnd); -+ isp = XS_ISP(Cmnd); -+ if ((f = isp->isp_osinfo.wqnext) == Cmnd) { -+ isp->isp_osinfo.wqnext = (Scsi_Cmnd *) Cmnd->host_scribble; -+ } else { -+ Scsi_Cmnd *b = f; -+ while (f) { -+ f = (Scsi_Cmnd *) b->host_scribble; -+ if (f == Cmnd) { -+ b->host_scribble = f->host_scribble; -+ if (isp->isp_osinfo.wqtail == Cmnd) -+ isp->isp_osinfo.wqtail = b; -+ break; -+ } -+ b = f; -+ } -+ } -+ if (f) { -+ f->host_scribble = NULL; -+ isp->isp_osinfo.wqcnt -= 1; -+ } -+ return (f); -+} -+ -+static INLINE void -+isplinux_runwaitq(struct ispsoftc *isp) -+{ -+ Scsi_Cmnd *f; -+ if (isp->isp_blocked || isp->isp_draining) -+ return; -+ while ((f = isp_remove_from_waitq(isp->isp_osinfo.wqnext)) != NULL) { -+ int result = isp_start(f); -+ /* -+ * Restart the timer for this command if it is queued or completing. -+ */ -+ if (result == CMD_QUEUED || result == CMD_COMPLETE) { -+ int ntime = f->timeout_per_command * (isp_xtime? isp_xtime : 1); -+ scsi_add_timer(f, ntime, f->done); -+ } -+ if (result == CMD_QUEUED) { -+ if (isp->isp_osinfo.hiwater < isp->isp_nactive) -+ isp->isp_osinfo.hiwater = isp->isp_nactive; -+ continue; -+ } -+ -+ /* -+ * If we cannot start a command on a fibre channel card, it means -+ * that loop state isn't ready for us to do so. Activate the FC -+ * thread to rediscover loop and fabric residency- but not if -+ * we consider the loop to be dead. If the loop is considered dead, -+ * we wait until a PDB Changed after a Loop UP activates the FC -+ * thread. -+ */ -+ if (result == CMD_RQLATER && IS_FC(isp) && isp->isp_deadloop == 0) { -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 0); -+ } -+ -+ /* -+ * Put the command back on the wait queue. Don't change any -+ * timer parameters for it because they were established -+ * when we originally put the command on the waitq in the first -+ * place. -+ */ -+ if (result == CMD_EAGAIN || result == CMD_RQLATER) { -+ isplinux_insert_head_waitq(isp, f); -+ break; -+ } -+ if (result == CMD_COMPLETE) { -+ isp_done(f); -+ } else { -+ panic("isplinux_runwaitq: result %d", result); -+ } -+ } -+} -+ -+static INLINE void -+isplinux_flushwaitq(struct ispsoftc *isp) -+{ -+ Scsi_Cmnd *Cmnd, *Ncmnd; -+ -+ if ((Cmnd = isp->isp_osinfo.wqnext) == NULL) { -+ return; -+ } -+ isp->isp_osinfo.wqnext = isp->isp_osinfo.wqtail = NULL; -+ isp->isp_osinfo.wqcnt = 0; -+ ISP_UNLK_SOFTC(isp); -+ do { -+ Ncmnd = (Scsi_Cmnd *) Cmnd->host_scribble; -+ Cmnd->host_scribble = NULL; -+ XS_INITERR(Cmnd); -+ XS_SETERR(Cmnd, DID_NO_CONNECT); -+ /* -+ * Add back a timer else scsi_done drops this on the floor. -+ */ -+ scsi_add_timer(Cmnd, Cmnd->timeout_per_command, Cmnd->done); -+ ISP_LOCK_SCSI_DONE(isp); -+ (*Cmnd->scsi_done)(Cmnd); -+ ISP_UNLK_SCSI_DONE(isp); -+ } while ((Cmnd = Ncmnd) != NULL); -+ ISP_LOCK_SOFTC(isp); -+} -+ -+static INLINE Scsi_Cmnd * -+isplinux_remove_from_doneq(Scsi_Cmnd *Cmnd) -+{ -+ Scsi_Cmnd *f; -+ struct ispsoftc *isp; -+ -+ if (Cmnd == NULL) -+ return (NULL); -+ isp = XS_ISP(Cmnd); -+ if (isp->isp_osinfo.dqnext == NULL) -+ return (NULL); -+ if ((f = isp->isp_osinfo.dqnext) == Cmnd) { -+ isp->isp_osinfo.dqnext = (Scsi_Cmnd *) Cmnd->host_scribble; -+ } else { -+ Scsi_Cmnd *b = f; -+ while (f) { -+ f = (Scsi_Cmnd *) b->host_scribble; -+ if (f == Cmnd) { -+ b->host_scribble = f->host_scribble; -+ if (isp->isp_osinfo.dqtail == Cmnd) -+ isp->isp_osinfo.dqtail = b; -+ break; -+ } -+ b = f; -+ } -+ } -+ if (f) { -+ f->host_scribble = NULL; -+ } -+ return (f); -+} -+ -+int -+isplinux_queuecommand(Scsi_Cmnd *Cmnd, void (*donecmd)(Scsi_Cmnd *)) -+{ -+ struct Scsi_Host *host = XS_HOST(Cmnd); -+ struct ispsoftc *isp = (struct ispsoftc *) (host->hostdata); -+ int result; -+ -+ -+ Cmnd->scsi_done = donecmd; -+ Cmnd->sense_buffer[0] = 0; -+ if (isp_xtime) { -+ Cmnd->timeout *= isp_xtime; -+ } -+ -+ ISP_DRIVER_ENTRY_LOCK(isp); -+ ISP_LOCK_SOFTC(isp); -+ -+ /* -+ * First off, see whether we need to (re)init the HBA. -+ * If we need to and fail to, pretend that this was a selection timeout. -+ */ -+ if (isp->isp_state != ISP_RUNSTATE) { -+ if (isp->isp_role != ISP_ROLE_NONE) { -+ isplinux_reinit(isp); -+ } -+ if (isp->isp_state != ISP_RUNSTATE) { -+ ISP_UNLK_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ XS_INITERR(Cmnd); -+ XS_SETERR(Cmnd, DID_NO_CONNECT); -+ (*Cmnd->scsi_done)(Cmnd); -+ return (0); -+ } -+ } -+ -+ -+ /* -+ * See if we're currently blocked. If we are, just queue up the command -+ * to be run later. -+ */ -+ if (isp->isp_blocked || isp->isp_draining) { -+ isplinux_append_to_waitq(isp, Cmnd); -+ ISP_UNLK_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ return (0); -+ } -+ -+ /* -+ * Next see if we have any stored up commands to run. If so, run them. -+ * If we get back from this with commands still ready to run, put the -+ * current command at the tail of waiting commands to be run later. -+ */ -+ -+ isplinux_runwaitq(isp); -+ if (isp->isp_osinfo.wqnext) { -+ isplinux_append_to_waitq(isp, Cmnd); -+ ISP_UNLK_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ return (0); -+ } -+ -+ /* -+ * Finally, try and run this command. -+ */ -+ -+ result = isp_start(Cmnd); -+ if (result == CMD_QUEUED) { -+ if (isp->isp_osinfo.hiwater < isp->isp_nactive) -+ isp->isp_osinfo.hiwater = isp->isp_nactive; -+ result = 0; -+ if (isp_xtime) { -+ int ntime = isp_xtime * Cmnd->timeout_per_command; -+ scsi_delete_timer(Cmnd); -+ scsi_add_timer(Cmnd, ntime, Cmnd->done); -+ } -+ } else if (result == CMD_EAGAIN) { -+ /* -+ * We ran out of request queue space (or could not -+ * get DMA resources). Tell the upper layer to try -+ * later. -+ */ -+ result = 1; -+ } else if (result == CMD_RQLATER) { -+ /* -+ * Temporarily hold off on this one. -+ * Typically this means for fibre channel -+ * that the loop is down or we're processing -+ * some other change (e.g., fabric membership -+ * change) -+ */ -+ isplinux_append_to_waitq(isp, Cmnd); -+ if (IS_FC(isp) && isp->isp_deadloop == 0) { -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 0); -+ } -+ result = 0; -+ } else if (result == CMD_COMPLETE) { -+ result = -1; -+ } else { -+ panic("unknown return code %d from isp_start", result); -+ } -+ ISP_UNLK_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ if (result == -1) { -+ Cmnd->result &= ~0xff; -+ Cmnd->result |= Cmnd->SCp.Status; -+ Cmnd->host_scribble = NULL; -+ (*Cmnd->scsi_done)(Cmnd); -+ result = 0; -+ } -+ return (result); -+} -+ -+static INLINE void isplinux_scsi_probe_done(Scsi_Cmnd *); -+ -+static INLINE void -+isplinux_scsi_probe_done(Scsi_Cmnd *Cmnd) -+{ -+ struct ispsoftc *isp = XS_ISP(Cmnd); -+ -+ /* -+ * If we haven't seen this target yet, check the command result. If -+ * it was an inquiry and it succeeded okay, then we can update our -+ * notions about this target's capabilities. -+ * -+ * If the command did *not* succeed, we also update our notions about -+ * this target's capabilities (pessimistically) - it's probably not there. -+ * All of this so we can know when we're done so we stop wasting cycles -+ * seeing whether we can enable sync mode or not. -+ */ -+ -+ if (isp->isp_psco[XS_CHANNEL(Cmnd)][XS_TGT(Cmnd)] == 0) { -+ int i, b; -+ caddr_t iqd; -+ sdparam *sdp = (sdparam *) isp->isp_param; -+ -+ sdp += XS_CHANNEL(Cmnd); -+ if (Cmnd->cmnd[0] == 0x12 && host_byte(Cmnd->result) == DID_OK) { -+ if (Cmnd->use_sg == 0) { -+ iqd = (caddr_t) Cmnd->buffer; -+ } else { -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ iqd = ((struct scatterlist *) Cmnd->request_buffer)->address; -+#else -+ struct scatterlist *sg; -+ sg = (struct scatterlist *) Cmnd->request_buffer; -+ iqd = page_address(sg->page) + sg->offset; -+#endif -+ } -+ sdp->isp_devparam[XS_TGT(Cmnd)].goal_flags &= -+ ~(DPARM_TQING|DPARM_SYNC|DPARM_WIDE); -+ if (iqd[7] & 0x2) { -+ sdp->isp_devparam[XS_TGT(Cmnd)].goal_flags |= DPARM_TQING; -+ } -+ if (iqd[7] & 0x10) { -+ sdp->isp_devparam[XS_TGT(Cmnd)].goal_flags |= DPARM_SYNC; -+ } -+ if (iqd[7] & 0x20) { -+ sdp->isp_devparam[XS_TGT(Cmnd)].goal_flags |= DPARM_WIDE; -+ } -+ sdp->isp_devparam[XS_TGT(Cmnd)].dev_update = 1; -+ isp->isp_psco[XS_CHANNEL(Cmnd)][XS_TGT(Cmnd)] = 1; -+ } else if (host_byte(Cmnd->result) != DID_OK) { -+ isp->isp_psco[XS_CHANNEL(Cmnd)][XS_TGT(Cmnd)] = 1; -+ } -+ -+ isp->isp_dutydone = 1; -+ for (b = 0; b < (IS_DUALBUS(isp)?2 : 1) && isp->isp_dutydone; b++) { -+ for (i = 0; i < MAX_TARGETS; i++) { -+ if (i != sdp->isp_initiator_id) { -+ if (isp->isp_psco[b][i] == 0) { -+ isp->isp_dutydone = 0; -+ break; -+ } -+ } -+ } -+ } -+ -+ /* -+ * Have we scanned all busses and all targets? You only get -+ * one chance (per reset) to see what devices on this bus have -+ * to offer. -+ */ -+ if (isp->isp_dutydone) { -+ for (b = 0; b < (IS_DUALBUS(isp)?2 : 1) && isp->isp_dutydone; b++) { -+ for (i = 0; i < MAX_TARGETS; i++) { -+ isp->isp_psco[b][i] = 0; -+ } -+ isp->isp_update |= (1 << b); -+ } -+ } -+ } -+} -+ -+void -+isp_done(Scsi_Cmnd *Cmnd) -+{ -+ struct ispsoftc *isp = XS_ISP(Cmnd); -+ -+ if (IS_SCSI(isp) && isp->isp_dutydone == 0) { -+ isplinux_scsi_probe_done(Cmnd); -+ } -+ -+ Cmnd->result &= ~0xff; -+ Cmnd->result |= Cmnd->SCp.Status; -+ -+ if (Cmnd->SCp.Status != GOOD) { -+ isp_prt(isp, ISP_LOGDEBUG0, "%d.%d.%d: cmd finishes with status 0x%x", -+ XS_CHANNEL(Cmnd), XS_TGT(Cmnd), XS_LUN(Cmnd), Cmnd->SCp.Status); -+ } -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,99) -+ Cmnd->resid = XS_RESID(Cmnd); -+#endif -+ /* -+ * Queue command on completion queue. -+ */ -+ if (isp->isp_osinfo.dqnext == NULL) { -+ isp->isp_osinfo.dqnext = Cmnd; -+ } else { -+ isp->isp_osinfo.dqtail->host_scribble = (unsigned char *) Cmnd; -+ } -+ isp->isp_osinfo.dqtail = Cmnd; -+ Cmnd->host_scribble = NULL; -+} -+ -+/* -+ * Error handling routines -+ */ -+ -+int -+isplinux_abort(Scsi_Cmnd *Cmnd) -+{ -+ struct ispsoftc *isp; -+ u_int16_t handle; -+ -+ if (Cmnd == NULL || XS_HOST(Cmnd) == NULL) { -+ return (FAILED); -+ } -+ -+ isp = XS_ISP(Cmnd); -+ if (Cmnd->serial_number != Cmnd->serial_number_at_timeout) { -+ isp_prt(isp, ISP_LOGWARN, "isplinux_abort: serial number mismatch"); -+ return (FAILED); -+ } -+ ISP_DRIVER_ENTRY_LOCK(isp); -+ ISP_LOCKU_SOFTC(isp); -+ handle = isp_find_handle(isp, Cmnd); -+ if (handle == 0) { -+ int wqfnd = 0; -+ Scsi_Cmnd *NewCmnd = isp_remove_from_waitq(Cmnd); -+ if (NewCmnd == NULL) { -+ NewCmnd = isplinux_remove_from_doneq(Cmnd); -+ wqfnd++; -+ } -+ ISP_UNLKU_SOFTC(isp); -+ isp_prt(isp, ISP_LOGINFO, -+ "isplinux_abort: found %d:%p for non-running cmd for %d.%d.%d", -+ wqfnd, NewCmnd, XS_CHANNEL(Cmnd), XS_TGT(Cmnd), XS_LUN(Cmnd)); -+ if (NewCmnd == NULL) { -+ ISP_DRIVER_EXIT_LOCK(isp); -+ return (FAILED); -+ } -+ } else { -+ if (isp_control(isp, ISPCTL_ABORT_CMD, Cmnd)) { -+ ISP_UNLKU_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ return (FAILED); -+ } -+ if (isp->isp_nactive > 0) -+ isp->isp_nactive--; -+ isp_destroy_handle(isp, handle); -+ ISP_UNLKU_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ isp_prt(isp, ISP_LOGINFO, -+ "isplinux_abort: aborted running cmd (handle 0x%x) for %d.%d.%d", -+ handle, XS_CHANNEL(Cmnd), XS_TGT(Cmnd), XS_LUN(Cmnd)); -+ } -+ Cmnd->result = DID_ABORT << 16; -+ (*Cmnd->scsi_done)(Cmnd); -+ return (SUCCESS); -+} -+ -+/* -+ * XXX: What does the midlayer expect for commands in process? -+ * XXX: Are we supposed to clean up dead commands ourselves? -+ */ -+int -+isplinux_bdr(Scsi_Cmnd *Cmnd) -+{ -+ struct ispsoftc *isp; -+ int arg; -+ -+ if (Cmnd == NULL || XS_HOST(Cmnd) == NULL) { -+ return (FAILED); -+ } -+ -+ isp = XS_ISP(Cmnd); -+ arg = XS_CHANNEL(Cmnd) << 16 | XS_TGT(Cmnd); -+ ISP_DRIVER_ENTRY_LOCK(isp); -+ ISP_LOCKU_SOFTC(isp); -+ arg = isp_control(isp, ISPCTL_RESET_DEV, &arg); -+ ISP_UNLKU_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ isp_prt(isp, ISP_LOGINFO, "Bus Device Reset %succesfully sent to %d.%d.%d", -+ arg == 0? "s" : "uns", XS_CHANNEL(Cmnd), XS_TGT(Cmnd), XS_LUN(Cmnd)); -+ return ((arg == 0)? SUCCESS : FAILED); -+} -+ -+/* -+ * XXX: What does the midlayer expect for commands in process? -+ */ -+int -+isplinux_sreset(Scsi_Cmnd *Cmnd) -+{ -+ struct ispsoftc *isp; -+ int arg; -+ -+ if (Cmnd == NULL || XS_HOST(Cmnd) == NULL) -+ return (FAILED); -+ -+ isp = XS_ISP(Cmnd); -+ arg = XS_CHANNEL(Cmnd); -+ ISP_DRIVER_ENTRY_LOCK(isp); -+ ISP_LOCKU_SOFTC(isp); -+ arg = isp_control(isp, ISPCTL_RESET_BUS, &arg); -+ ISP_UNLKU_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ isp_prt(isp, ISP_LOGINFO, "SCSI Bus Reset on Channel %d %succesful", -+ XS_CHANNEL(Cmnd), arg == 0? "s" : "uns"); -+ return ((arg == 0)? SUCCESS : FAILED); -+} -+ -+/* -+ * We call completion on any commands owned here- -+ * except the one we were called with. -+ */ -+int -+isplinux_hreset(Scsi_Cmnd *Cmnd) -+{ -+ Scsi_Cmnd *tmp, *dq, *wq, *xqf, *xql; -+ struct ispsoftc *isp; -+ u_int16_t handle; -+ -+ if (Cmnd == NULL || XS_HOST(Cmnd) == NULL) -+ return (FAILED); -+ -+ isp = XS_ISP(Cmnd); -+ -+ isp_prt(isp, ISP_LOGINFO, "Resetting Host Adapter"); -+ -+ ISP_DRIVER_ENTRY_LOCK(isp); -+ ISP_LOCKU_SOFTC(isp); -+ -+ /* -+ * Save pending, running, and completed commands. -+ */ -+ xql = xqf = NULL; -+ for (handle = 1; handle <= isp->isp_maxcmds; handle++) { -+ tmp = isp_find_xs(isp, handle); -+ if (tmp == NULL) { -+ continue; -+ } -+ isp_destroy_handle(isp, handle); -+ tmp->host_scribble = NULL; -+ if (xqf) { -+ xql->host_scribble = (unsigned char *) tmp; -+ } else { -+ xqf = xql = tmp; -+ } -+ xql = tmp; -+ } -+ dq = isp->isp_osinfo.dqnext; -+ isp->isp_osinfo.dqnext = NULL; -+ wq = isp->isp_osinfo.wqnext; -+ isp->isp_osinfo.wqnext = NULL; -+ isp->isp_nactive = 0; -+ -+ isplinux_reinit(isp); -+ -+ ISP_UNLKU_SOFTC(isp); -+ ISP_DRIVER_EXIT_LOCK(isp); -+ -+ /* -+ * Call completion on the detritus, skipping the one we were called with. -+ */ -+ while ((tmp = xqf) != NULL) { -+ xqf = (Scsi_Cmnd *) tmp->host_scribble; -+ tmp->host_scribble = NULL; -+ if (tmp == Cmnd) -+ continue; -+ tmp->result = DID_RESET << 16; -+ /* -+ * Get around silliness in midlayer. -+ */ -+ tmp->flags |= IS_RESETTING; -+ if (tmp->scsi_done) -+ (*tmp->scsi_done)(tmp); -+ } -+ while ((tmp = wq) != NULL) { -+ wq = (Scsi_Cmnd *) tmp->host_scribble; -+ tmp->host_scribble = NULL; -+ if (tmp == Cmnd) -+ continue; -+ tmp->result = DID_RESET << 16; -+ /* -+ * Get around silliness in midlayer. -+ */ -+ tmp->flags |= IS_RESETTING; -+ if (tmp->scsi_done) -+ (*tmp->scsi_done)(tmp); -+ } -+ while ((tmp = dq) != NULL) { -+ dq = (Scsi_Cmnd *) tmp->host_scribble; -+ tmp->host_scribble = NULL; -+ if (tmp == Cmnd) -+ continue; -+ tmp->result = DID_RESET << 16; -+ /* -+ * Get around silliness in midlayer. -+ */ -+ tmp->flags |= IS_RESETTING; -+ if (tmp->scsi_done) -+ (*tmp->scsi_done)(tmp); -+ } -+ Cmnd->result = DID_RESET << 16; -+ return (SUCCESS); -+} -+ -+ -+#ifdef LINUX_ISP_TARGET_MODE -+void -+isp_attach_target(struct ispsoftc *isp) -+{ -+ int i; -+ hba_register_t hba; -+ -+ isp->isp_osinfo.pool = isp_kzalloc(NTGT_CMDS * TMD_SIZE, GFP_KERNEL); -+ if (isp->isp_osinfo.pool == NULL) { -+ isp_prt(isp, ISP_LOGERR, "cannot allocate TMD structures"); -+ return; -+ } -+ for (i = 0; i < NTGT_CMDS-1; i++) { -+ isp->isp_osinfo.pool[i].cd_private = &isp->isp_osinfo.pool[i+1]; -+ } -+ isp->isp_osinfo.pending_t = NULL; -+ isp->isp_osinfo.tfreelist = isp->isp_osinfo.pool; -+ -+ hba.r_identity = isp; -+ sprintf(hba.r_name, "isp"); -+ hba.r_inst = isp->isp_unit; -+ hba.r_version = QR_VERSION; -+ hba.r_action = (void (*)(tact_e, void *))isp_taction; -+ if (IS_FC(isp)) { -+ hba.r_type = R_FC; -+ } else{ -+ hba.r_type = R_SCSI; -+ } -+ ISP_UNLKU_SOFTC(isp); -+ ISP_PARENT_TARGET(QOUT_HBA_REG, &hba); -+ ISP_LOCKU_SOFTC(isp); -+} -+ -+void -+isp_detach_target(struct ispsoftc *isp) -+{ -+ hba_register_t hba; -+ -+ hba.r_identity = isp; -+ sprintf(hba.r_name, "isp"); -+ hba.r_inst = isp->isp_unit; -+ hba.r_version = QR_VERSION; -+ hba.r_action = (void (*)(tact_e, void *))isp_taction; -+ if (IS_FC(isp)) { -+ hba.r_type = R_FC; -+ } else{ -+ hba.r_type = R_SCSI; -+ } -+ ISP_PARENT_TARGET(QOUT_HBA_UNREG, &hba); -+ if (isp->isp_osinfo.pool) { -+ isp_kfree(isp->isp_osinfo.pool, NTGT_CMDS * TMD_SIZE); -+ isp->isp_osinfo.pool = 0; -+ } -+} -+ -+static void -+isp_taction(qact_e action, void *arg) -+{ -+ tmd_cmd_t *tmd; -+ struct ispsoftc *isp; -+ -+ switch (action) { -+ case QIN_HBA_REG: -+ { -+ hba_register_t *hp = (hba_register_t *) arg; -+ isp = hp->r_identity; -+ isp_prt(isp, ISP_LOGINFO, "completed target registration"); -+ ISP_LOCK_SOFTC(isp); -+ isp->isp_osinfo.hcb = 1; -+ ISP_UNLK_SOFTC(isp); -+ ISP_PARENT_TARGET(QOUT_HBA_REG, hp); -+ break; -+ } -+ case QIN_ENABLE: -+ case QIN_DISABLE: -+ { -+ enadis_t *ep = arg; -+ int bus, lun, tgt, chan; -+ -+ isp = ep->cd_hba; -+ bus = (int) ep->cd_chan; -+ lun = (int) ep->cd_lun; -+ tgt = (int) ep->cd_tgt; -+ chan = (int) ep->cd_chan; -+ ep->cd_error = isp_en_dis_lun(isp, (action == QIN_ENABLE)? 1 : chan, -+ bus, tgt, lun); -+ ISP_PARENT_TARGET(action, ep); -+ break; -+ } -+ case QIN_TMD_CONT: -+ tmd = (tmd_cmd_t *) arg; -+ isp = tmd->cd_hba; -+ isp_target_start_ctio(isp, tmd); -+ break; -+ -+ case QIN_TMD_FIN: -+ tmd = (tmd_cmd_t *) arg; -+ isp = tmd->cd_hba; -+ MEMZERO(tmd, TMD_SIZE); -+ ISP_LOCK_SOFTC(isp); -+ tmd->cd_private = isp->isp_osinfo.tfreelist; -+ isp->isp_osinfo.tfreelist = tmd; -+ ISP_UNLK_SOFTC(isp); -+ break; -+ -+ case QIN_IOCTL: -+ { -+ ioctl_cmd_t *ip = arg; -+ ip->i_errno = ENOTTY; -+ ISP_PARENT_TARGET(QOUT_IOCTL, ip); -+ break; -+ } -+ case QIN_HBA_UNREG: -+ { -+ hba_register_t *hp = (hba_register_t *) arg; -+ isp = hp->r_identity; -+ isp->isp_osinfo.hcb = 0; -+ ISP_PARENT_TARGET(QOUT_HBA_REG, hp); -+ break; -+ } -+ default: -+ break; -+ } -+} -+ -+static INLINE int -+nolunsenabled(struct ispsoftc *isp, int port) -+{ -+ int i, wbase, wend; -+ -+ if (IS_FC(isp)) { -+ wbase = 0; -+ wend = TM_MAX_LUN_FC >> 5; -+ } else { -+ if (port) { -+ wend = TM_MAX_LUN_FC >> 5; -+ wbase = wend >> 1; -+ } else { -+ wend = (TM_MAX_LUN_FC >> 5) >> 1; -+ wbase = 0; -+ } -+ } -+ for (i = wbase; i < wend; i++) { -+ if (isp->isp_osinfo.lunbmap[i]) { -+ return (0); -+ } -+ } -+ return (1); -+} -+ -+ -+ -+static void -+isp_target_start_ctio(struct ispsoftc *isp, tmd_cmd_t *tmd) -+{ -+ void *qe; -+ u_int16_t *hp, save_handle; -+ u_int32_t *rp; -+ u_int16_t nxti, optr; -+ u_int8_t local[QENTRY_LEN]; -+ -+ /* -+ * If the transfer length is zero, we have to be sending status. -+ * If we're sending data, we have to have one and only one data -+ * direction set. -+ */ -+ if (tmd->cd_xfrlen == 0) { -+ if ((tmd->cd_hflags & CDFH_STSVALID) == 0) { -+ isp_prt(isp, ISP_LOGERR, "CTIO, no data, and no status is wrong"); -+ tmd->cd_error = -EINVAL; -+ tmd->cd_lflags |= CDFL_ERROR; -+ return; -+ } -+ } else { -+ if ((tmd->cd_hflags & CDFH_DATA_MASK) == 0) { -+ isp_prt(isp, ISP_LOGERR, "data CTIO with no direction is wrong"); -+ tmd->cd_error = -EINVAL; -+ tmd->cd_lflags |= CDFL_ERROR; -+ return; -+ } -+ if ((tmd->cd_hflags & CDFH_DATA_MASK) == CDFH_DATA_MASK) { -+ isp_prt(isp, ISP_LOGERR, "data CTIO with both directions is wrong"); -+ tmd->cd_error = -EINVAL; -+ tmd->cd_lflags |= CDFL_ERROR; -+ return; -+ } -+ } -+ tmd->cd_lflags &= ~CDFL_ERROR; -+ MEMZERO(local, QENTRY_LEN); -+ -+ ISP_LOCK_SOFTC(isp); -+ if (isp_getrqentry(isp, &nxti, &optr, &qe)) { -+ isp_prt(isp, ISP_LOGWARN, -+ "isp_target_start_ctio: request queue overflow"); -+ tmd->cd_error = -ENOMEM; -+ tmd->cd_lflags |= CDFL_ERROR; -+ ISP_UNLK_SOFTC(isp); -+ return; -+ } -+ -+ /* -+ * We're either moving data or completing a command here (or both). -+ */ -+ -+ if (IS_FC(isp)) { -+ ct2_entry_t *cto = (ct2_entry_t *) local; -+ u_int16_t *ssptr = NULL; -+ -+ cto->ct_header.rqs_entry_type = RQSTYPE_CTIO2; -+ cto->ct_header.rqs_entry_count = 1; -+ cto->ct_iid = tmd->cd_iid; -+ if ((FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) == 0) -+ cto->ct_lun = tmd->cd_lun; -+ else -+ cto->ct_lun = 0; -+ cto->ct_rxid = tmd->cd_tagval; -+ if (cto->ct_rxid == 0) { -+ isp_prt(isp, ISP_LOGERR, "a tagval of zero is not acceptable"); -+ tmd->cd_error = -EINVAL; -+ tmd->cd_lflags |= CDFL_ERROR; -+ ISP_UNLK_SOFTC(isp); -+ return; -+ } -+ cto->ct_flags = CT2_FASTPOST; -+ -+ if (tmd->cd_xfrlen == 0) { -+ cto->ct_flags |= CT2_FLAG_MODE1 | CT2_NO_DATA | CT2_SENDSTATUS; -+ ssptr = &cto->rsp.m1.ct_scsi_status; -+ *ssptr = tmd->cd_scsi_status; -+ if ((tmd->cd_hflags & CDFH_SNSVALID) != 0) { -+ MEMCPY(cto->rsp.m1.ct_resp, tmd->cd_sense, QLTM_SENSELEN); -+ cto->rsp.m1.ct_senselen = QLTM_SENSELEN; -+ cto->rsp.m1.ct_scsi_status |= CT2_SNSLEN_VALID; -+ } -+ } else { -+ cto->ct_flags |= CT2_FLAG_MODE0; -+ if (tmd->cd_hflags & CDFH_DATA_IN) { -+ cto->ct_flags |= CT2_DATA_IN; -+ } else { -+ cto->ct_flags |= CT2_DATA_OUT; -+ } -+ if (tmd->cd_hflags & CDFH_STSVALID) { -+ ssptr = &cto->rsp.m0.ct_scsi_status; -+ cto->ct_flags |= CT2_SENDSTATUS; -+ cto->rsp.m0.ct_scsi_status = tmd->cd_scsi_status; -+ /* -+ * It will be up to the low level mapping routine -+ * to check for sense data. -+ */ -+ } -+ /* -+ * We assume we'll transfer what we say we'll transfer. -+ * It should get added back in if we fail. -+ */ -+ tmd->cd_resid -= tmd->cd_xfrlen; -+ } -+ -+ if (ssptr && tmd->cd_resid) { -+ cto->ct_resid = tmd->cd_resid; -+ *ssptr |= CT2_DATA_UNDER; -+ } else { -+ cto->ct_resid = 0; -+ } -+ isp_prt(isp, ISP_LOGTDEBUG0, -+ "CTIO2[%x] ssts %x flags %x resid %d", -+ cto->ct_rxid, tmd->cd_scsi_status, cto->ct_flags, cto->ct_resid); -+ hp = &cto->ct_syshandle; -+ rp = &cto->ct_resid; -+ if (cto->ct_flags & CT2_SENDSTATUS) { -+ cto->ct_flags |= CT2_CCINCR; -+ } -+ } else { -+ ct_entry_t *cto = (ct_entry_t *) local; -+ -+ cto->ct_header.rqs_entry_type = RQSTYPE_CTIO; -+ cto->ct_header.rqs_entry_count = 1; -+ cto->ct_iid = tmd->cd_iid; -+ cto->ct_tgt = tmd->cd_tgt; -+ cto->ct_lun = tmd->cd_lun; -+ cto->ct_flags = 0; -+ cto->ct_fwhandle = AT_GET_HANDLE(tmd->cd_tagval); -+ if (AT_HAS_TAG(tmd->cd_tagval)) { -+ cto->ct_tag_val = AT_GET_TAG(tmd->cd_tagval); -+ cto->ct_flags |= CT_TQAE; -+ } -+ if (tmd->cd_lflags & CDFL_NODISC) { -+ cto->ct_flags |= CT_NODISC; -+ } -+ if (tmd->cd_xfrlen == 0) { -+ cto->ct_flags |= CT_NO_DATA | CT_SENDSTATUS; -+ cto->ct_scsi_status = tmd->cd_scsi_status; -+ cto->ct_resid = 0; -+ } else { -+ if (tmd->cd_hflags & CDFH_STSVALID) { -+ cto->ct_flags |= CT_SENDSTATUS; -+ } -+ if (tmd->cd_hflags & CDFH_DATA_IN) { -+ cto->ct_flags |= CT_DATA_IN; -+ } else { -+ cto->ct_flags |= CT_DATA_OUT; -+ } -+ /* -+ * We assume we'll transfer what we say we'll transfer. -+ * Otherwise, the command is dead. -+ */ -+ tmd->cd_resid -= tmd->cd_xfrlen; -+ if (tmd->cd_hflags & CDFH_STSVALID) { -+ cto->ct_resid = tmd->cd_resid; -+ } -+ } -+ isp_prt(isp, ISP_LOGTDEBUG0, "CTIO[%x] ssts %x resid %d cd_hflags %x", -+ AT_GET_HANDLE(tmd->cd_tagval), tmd->cd_scsi_status, tmd->cd_resid, -+ tmd->cd_hflags); -+ hp = &cto->ct_syshandle; -+ rp = &cto->ct_resid; -+ if (cto->ct_flags & CT_SENDSTATUS) { -+ cto->ct_flags |= CT_CCINCR; -+ } -+ } -+ -+ if (isp_save_xs(isp, (XS_T *)tmd, hp)) { -+ isp_prt(isp, ISP_LOGERR, "isp_target_start_ctio: No XFLIST pointers"); -+ tmd->cd_error = -ENOMEM; -+ tmd->cd_lflags |= CDFL_ERROR; -+ ISP_UNLK_SOFTC(isp); -+ ISP_PARENT_TARGET(QOUT_TMD_DONE, tmd); -+ return; -+ } -+ -+ /* -+ * Call the dma setup routines for this entry (and any subsequent -+ * CTIOs) if there's data to move, and then tell the f/w it's got -+ * new things to play with. As with isp_start's usage of DMA setup, -+ * any swizzling is done in the machine dependent layer. Because -+ * of this, we put the request onto the queue area first in native -+ * format. -+ */ -+ -+ save_handle = *hp; -+ switch (ISP_DMASETUP(isp, (XS_T *)tmd, (ispreq_t *) local, &nxti, optr)) { -+ case CMD_QUEUED: -+ ISP_ADD_REQUEST(isp, nxti); -+ ISP_UNLK_SOFTC(isp); -+ return; -+ -+ case CMD_EAGAIN: -+ tmd->cd_error = -ENOMEM; -+ tmd->cd_lflags |= CDFL_ERROR; -+ isp_destroy_handle(isp, save_handle); -+ break; -+ -+ case CMD_COMPLETE: -+ tmd->cd_error = *rp; /* propagated back */ -+ tmd->cd_lflags |= CDFL_ERROR; -+ isp_destroy_handle(isp, save_handle); -+ break; -+ -+ default: -+ tmd->cd_error = -EFAULT; /* probably dma mapping failure */ -+ tmd->cd_lflags |= CDFL_ERROR; -+ isp_destroy_handle(isp, save_handle); -+ break; -+ } -+ ISP_UNLK_SOFTC(isp); -+ ISP_PARENT_TARGET(QOUT_TMD_DONE, tmd); -+} -+ -+/* -+ * Handle ATIO stuff that the generic code can't. -+ * This means handling CDBs. -+ */ -+ -+static int -+isp_handle_platform_atio(struct ispsoftc *isp, at_entry_t *aep) -+{ -+ tmd_cmd_t *tmd; -+ int status; -+ -+ /* -+ * The firmware status (except for the QLTM_SVALID bit) -+ * indicates why this ATIO was sent to us. -+ * -+ * If QLTM_SVALID is set, the firware has recommended Sense Data. -+ * -+ * If the DISCONNECTS DISABLED bit is set in the flags field, -+ * we're still connected on the SCSI bus. -+ */ -+ status = aep->at_status; -+ -+ if ((status & ~QLTM_SVALID) == AT_PHASE_ERROR) { -+ /* -+ * Bus Phase Sequence error. We should have sense data -+ * suggested by the f/w. I'm not sure quite yet what -+ * to do about this. -+ */ -+ isp_prt(isp, ISP_LOGERR, "PHASE ERROR in atio"); -+ isp_endcmd(isp, aep, SCSI_BUSY, 0); -+ return (0); -+ } -+ -+ if ((status & ~QLTM_SVALID) != AT_CDB) { -+ isp_prt(isp, ISP_LOGERR, "bad atio (0x%x) leaked to platform", status); -+ isp_endcmd(isp, aep, SCSI_BUSY, 0); -+ return (0); -+ } -+ -+ if ((tmd = isp->isp_osinfo.tfreelist) == NULL) { -+ /* -+ * We're out of resources. -+ * -+ * Because we can't autofeed sense data back with a command for -+ * parallel SCSI, we can't give back a CHECK CONDITION. We'll give -+ * back a QUEUE FULL or BUSY status instead. -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "no ATIOS for lun %d from initiator %d on channel %d", -+ aep->at_lun, GET_IID_VAL(aep->at_iid), GET_BUS_VAL(aep->at_iid)); -+ if (aep->at_flags & AT_TQAE) -+ isp_endcmd(isp, aep, SCSI_QFULL, 0); -+ else -+ isp_endcmd(isp, aep, SCSI_BUSY, 0); -+ return (0); -+ } -+ isp->isp_osinfo.tfreelist = tmd->cd_private; -+ tmd->cd_lflags = CDFL_BUSY; -+ tmd->cd_chan = GET_BUS_VAL(aep->at_iid); -+ tmd->cd_iid = GET_IID_VAL(aep->at_iid); -+ tmd->cd_tgt = aep->at_tgt; -+ tmd->cd_lun = aep->at_lun; -+ if (aep->at_flags & AT_NODISC) { -+ tmd->cd_lflags |= CDFL_NODISC; -+ } -+ if (status & QLTM_SVALID) { -+ MEMCPY(tmd->cd_sense, aep->at_sense, QLTM_SENSELEN); -+ tmd->cd_lflags |= CDFL_SNSVALID; -+ } -+ MEMCPY(tmd->cd_cdb, aep->at_cdb, min(TMD_CDBLEN, ATIO_CDBLEN)); -+ AT_MAKE_TAGID(tmd->cd_tagval, aep); -+ tmd->cd_tagtype = aep->at_tag_type; -+ tmd->cd_hba = isp; -+ tmd->cd_data = NULL; -+ tmd->cd_hflags = 0; -+ tmd->cd_totlen = tmd->cd_resid = tmd->cd_xfrlen = tmd->cd_error = 0; -+ tmd->cd_scsi_status = 0; -+ isp_prt(isp, ISP_LOGTDEBUG1, -+ "ATIO[%x] CDB=0x%x bus %d iid%d->lun%d tag 0x%x ttype 0x%x %s", -+ aep->at_handle, aep->at_cdb[0] & 0xff, GET_BUS_VAL(aep->at_iid), -+ GET_IID_VAL(aep->at_iid), aep->at_lun, aep->at_tag_val & 0xff, -+ aep->at_tag_type, (aep->at_flags & AT_NODISC)? -+ "nondisc" : "disconnecting"); -+ if (isp->isp_osinfo.hcb == 0) { -+ isp_endcmd(isp, aep, SCSI_BUSY, 0); -+ } else { -+ isp->isp_osinfo.tfreelist = tmd->cd_private; -+ tmd->cd_lreserved[0].bytes[0] = QOUT_TMD_START; -+ tmd->cd_lreserved[1].ptrs[0] = isp->isp_osinfo.pending_t; -+ isp->isp_osinfo.pending_t = tmd; -+ } -+ return (0); -+} -+ -+static int -+isp_handle_platform_atio2(struct ispsoftc *isp, at2_entry_t *aep) -+{ -+ tmd_cmd_t *tmd; -+ int lun; -+ -+ /* -+ * The firmware status (except for the QLTM_SVALID bit) -+ * indicates why this ATIO was sent to us. -+ * -+ * If QLTM_SVALID is set, the firware has recommended Sense Data. -+ */ -+ if ((aep->at_status & ~QLTM_SVALID) != AT_CDB) { -+ isp_prt(isp, ISP_LOGERR, "bad atio (0x%x) leaked to platform", -+ aep->at_status); -+ isp_endcmd(isp, aep, SCSI_BUSY, 0); -+ return (0); -+ } -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) -+ lun = aep->at_scclun; -+ else -+ lun = aep->at_lun; -+ -+ /* -+ * If we're out of resources, just send a QFULL status back. -+ */ -+ if ((tmd = isp->isp_osinfo.tfreelist) == NULL) { -+ isp_endcmd(isp, aep, SCSI_QFULL, 0); -+ return (0); -+ } -+ tmd->cd_lflags = CDFL_BUSY; -+ tmd->cd_iid = aep->at_iid; -+ tmd->cd_tgt = ((fcparam *)isp->isp_param)->isp_loopid; -+ tmd->cd_lun = lun; -+ tmd->cd_chan = 0; -+ MEMCPY(tmd->cd_cdb, aep->at_cdb, min(TMD_CDBLEN, ATIO2_CDBLEN)); -+ switch (aep->at_taskflags & ATIO2_TC_ATTR_MASK) { -+ case ATIO2_TC_ATTR_SIMPLEQ: -+ tmd->cd_tagtype = MSG_SIMPLE_Q_TAG; -+ break; -+ case ATIO2_TC_ATTR_HEADOFQ: -+ tmd->cd_tagtype = MSG_HEAD_OF_Q_TAG; -+ break; -+ case ATIO2_TC_ATTR_ORDERED: -+ tmd->cd_tagtype = MSG_ORDERED_Q_TAG; -+ break; -+ case ATIO2_TC_ATTR_ACAQ: /* ?? */ -+ case ATIO2_TC_ATTR_UNTAGGED: -+ default: -+ tmd->cd_tagtype = 0; -+ break; -+ } -+ switch (aep->at_execodes & (ATIO2_EX_WRITE|ATIO2_EX_READ)) { -+ case ATIO2_EX_WRITE: -+ tmd->cd_lflags |= CDFL_DATA_OUT; -+ break; -+ case ATIO2_EX_READ: -+ tmd->cd_lflags |= CDFL_DATA_IN; -+ break; -+ case ATIO2_EX_WRITE|ATIO2_EX_READ: -+ tmd->cd_lflags |= CDFL_BIDIR; -+ isp_prt(isp, ISP_LOGWARN, "ATIO2 with both read/write set"); -+ break; -+ default: -+ break; -+ } -+ tmd->cd_tagval = aep->at_rxid; -+ tmd->cd_hba = isp; -+ tmd->cd_data = NULL; -+ tmd->cd_hflags = 0; -+ tmd->cd_totlen = aep->at_datalen; -+ tmd->cd_resid = tmd->cd_xfrlen = tmd->cd_error = 0; -+ tmd->cd_scsi_status = 0; -+ if ((isp->isp_dblev & ISP_LOGTDEBUG0) || isp->isp_osinfo.hcb == 0) { -+ const char *sstr; -+ switch (tmd->cd_lflags & CDFL_BIDIR) { -+ default: -+ sstr = "nodatadir"; -+ break; -+ case CDFL_DATA_OUT: -+ sstr = "DATA OUT"; -+ break; -+ case CDFL_DATA_IN: -+ sstr = "DATA IN"; -+ break; -+ case CDFL_DATA_OUT|CDFL_DATA_IN: -+ sstr = "BIDIR"; -+ break; -+ } -+ isp_prt(isp, ISP_LOGALL, -+ "ATIO2[%x] CDB=0x%x iid %d for lun %d tcode 0x%x dlen %d %s", -+ aep->at_rxid, aep->at_cdb[0] & 0xff, aep->at_iid, -+ lun, aep->at_taskcodes, aep->at_datalen, sstr); -+ } -+ if (isp->isp_osinfo.hcb == 0) { -+ if (aep->at_cdb[0] == INQUIRY && lun == 0) { -+ if (aep->at_cdb[1] == 0 && aep->at_cdb[2] == 0) { -+ static u_int8_t inqdata[] = { -+ DEFAULT_DEVICE_TYPE, 0x0, 0x2, 0x2, 32, 0, 0, 0x40, -+ 'L', 'I', 'N', 'U', 'X', ' ', ' ', ' ', -+ 'T', 'A', 'R', 'G', 'E', 'T', ' ', 'D', -+ 'D', 'E', 'V', 'I', 'C', 'E', ' ', ' ', -+ '0', '0', '0', '1' -+ }; -+ struct scatterlist single, *dp = &single; -+ MEMZERO(dp, sizeof (*dp)); -+ dp->address = inqdata; -+ dp->length = sizeof (inqdata); -+ tmd->cd_data = dp; -+ tmd->cd_resid = tmd->cd_xfrlen = sizeof (inqdata); -+ tmd->cd_hflags |= CDFH_DATA_IN|CDFH_STSVALID; -+ ISP_DROP_LK_SOFTC(isp); -+ isp_target_start_ctio(isp, tmd); -+ ISP_IGET_LK_SOFTC(isp); -+ } else { -+ /* -+ * Illegal field in CDB -+ * 0x24 << 24 | 0x5 << 12 | ECMD_SVALID | SCSI_CHECK -+ */ -+ isp_endcmd(isp, aep, 0x24005102, 0); -+ } -+ } else if (lun == 0) { -+ /* -+ * Not Ready, Cause Not Reportable -+ * -+ * 0x4 << 24 | 0x2 << 12 | ECMD_SVALID | SCSI_CHECK -+ */ -+ isp_endcmd(isp, aep, 0x04002102, 0); -+ } else { -+ /* -+ * Logical Unit Not Supported: -+ * 0x25 << 24 | 0x5 << 12 | ECMD_SVALID | SCSI_CHECK -+ */ -+ isp_endcmd(isp, aep, 0x25005102, 0); -+ } -+ MEMZERO(tmd, TMD_SIZE); -+ return (0); -+ } -+ isp->isp_osinfo.tfreelist = tmd->cd_private; -+ tmd->cd_lreserved[0].bytes[0] = QOUT_TMD_START; -+ tmd->cd_lreserved[1].ptrs[0] = isp->isp_osinfo.pending_t; -+ isp->isp_osinfo.pending_t = tmd; -+ return (0); -+} -+ -+static int -+isp_handle_platform_ctio(struct ispsoftc *isp, void *arg) -+{ -+ tmd_cmd_t *tmd; -+ int sentstatus, ok, resid = 0, sts; -+ -+ /* -+ * CTIO and CTIO2 are close enough.... -+ */ -+ tmd = (tmd_cmd_t *) isp_find_xs(isp, ((ct_entry_t *)arg)->ct_syshandle); -+ if (tmd == NULL) { -+ isp_prt(isp, ISP_LOGERR, "isp_handle_platform_ctio: null tmd"); -+ return (0); -+ } -+ isp_destroy_handle(isp, ((ct_entry_t *)arg)->ct_syshandle); -+ -+ if (IS_FC(isp)) { -+ ct2_entry_t *ct = arg; -+ sentstatus = ct->ct_flags & CT2_SENDSTATUS; -+ if (sentstatus) { -+ tmd->cd_lflags |= CDFL_SENTSTATUS; -+ } -+ sts = ct->ct_status & ~QLTM_SVALID; -+ ok = (ct->ct_status & ~QLTM_SVALID) == CT_OK; -+ if (ok && sentstatus && (tmd->cd_hflags & CDFH_SNSVALID)) { -+ tmd->cd_lflags |= CDFL_SENTSENSE; -+ } -+ isp_prt(isp, ISP_LOGTDEBUG1, -+ "CTIO2[%x] sts 0x%x flg 0x%x sns %d %s", -+ ct->ct_rxid, ct->ct_status, ct->ct_flags, -+ (tmd->cd_lflags & CDFL_SENTSENSE) != 0, -+ sentstatus? "FIN" : "MID"); -+ if ((ct->ct_flags & CT2_DATAMASK) != CT2_NO_DATA) { -+ resid = ct->ct_resid; -+ } -+ } else { -+ ct_entry_t *ct = arg; -+ sts = ct->ct_status & ~QLTM_SVALID; -+ sentstatus = ct->ct_flags & CT_SENDSTATUS; -+ if (sentstatus) { -+ tmd->cd_lflags |= CDFL_SENTSTATUS; -+ } -+ ok = (ct->ct_status & ~QLTM_SVALID) == CT_OK; -+ if (ok && sentstatus && (tmd->cd_hflags & CDFH_SNSVALID)) { -+ tmd->cd_lflags |= CDFL_SENTSENSE; -+ } -+ isp_prt(isp, ISP_LOGTDEBUG1, -+ "CTIO[%x] tag %x iid %x tgt %d lun %d sts 0x%x flg %x %s", -+ ct->ct_fwhandle, ct->ct_tag_val, ct->ct_iid, ct->ct_tgt, -+ ct->ct_lun, ct->ct_status, ct->ct_flags, -+ sentstatus? "FIN" : "MID"); -+ if (ct->ct_status & QLTM_SVALID) { -+ char *sp = (char *)ct; -+ sp += CTIO_SENSE_OFFSET; -+ MEMCPY(tmd->cd_sense, sp, QLTM_SENSELEN); -+ tmd->cd_lflags |= CDFL_SNSVALID; -+ } -+ if ((ct->ct_flags & CT_DATAMASK) != CT_NO_DATA) { -+ resid = ct->ct_resid; -+ } -+ } -+ tmd->cd_resid += resid; -+ -+ /* -+ * We're here either because intermediate data transfers are done -+ * and/or the final status CTIO (which may have joined with a -+ * Data Transfer) is done. -+ * -+ * In any case, for this platform, the upper layers figure out -+ * what to do next, so all we do here is collect status and -+ * pass information along. -+ */ -+ isp_prt(isp, ISP_LOGTDEBUG0, "%s CTIO done (resid %d)", -+ (sentstatus)? " FINAL " : "MIDTERM ", tmd->cd_resid); -+ -+ if (!ok) { -+ isp_prt(isp, ISP_LOGERR, "CTIO ended with badstate (0x%x)", sts); -+ tmd->cd_lflags |= CDFL_ERROR; -+ tmd->cd_error = -EIO; -+ isp_target_putback_atio(isp, tmd); -+ } else { -+ isp_complete_ctio(isp, tmd); -+ } -+ return (0); -+} -+ -+static int -+isp_handle_platform_ctio_fastpost(struct ispsoftc *isp, u_int32_t token) -+{ -+ tmd_cmd_t *tmd; -+ u_int16_t handle; -+ -+ handle = token & 0xffff; -+ tmd = (tmd_cmd_t *) isp_find_xs(isp, handle); -+ if (tmd == NULL) { -+ isp_prt(isp, ISP_LOGERR, -+ "isp_handle_platform_ctio_fastpost: null tmd"); -+ return (0); -+ } -+ isp_destroy_handle(isp, handle); -+ isp_prt(isp, ISP_LOGTDEBUG1, "CTIOx[%x] fastpost complete", tmd->cd_tagval); -+ /* -+ * In this implementation we only set fast posting for the last ctio2 -+ * of a command where we haven't sent sense data as well. -+ */ -+ tmd->cd_lflags |= CDFL_SENTSTATUS; -+ isp_complete_ctio(isp, tmd); -+ return (0); -+} -+ -+static void -+isp_target_putback_atio(struct ispsoftc *isp, tmd_cmd_t *tmd) -+{ -+ u_int16_t nxti; -+ u_int8_t local[QENTRY_LEN]; -+ void *qe; -+ -+ if (isp_getrqentry(isp, &nxti, NULL, &qe)) { -+ isp_prt(isp, ISP_LOGWARN, -+ "isp_target_putback_atio: Request Queue Overflow"); -+ /* XXXX */ -+ isp_complete_ctio(isp, tmd); -+ return; -+ } -+ MEMZERO(local, sizeof (local)); -+ if (IS_FC(isp)) { -+ at2_entry_t *at = (at2_entry_t *) local; -+ at->at_header.rqs_entry_type = RQSTYPE_ATIO2; -+ at->at_header.rqs_entry_count = 1; -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) -+ at->at_scclun = (uint16_t) tmd->cd_lun; -+ else -+ at->at_lun = (uint8_t) tmd->cd_lun; -+ at->at_status = CT_OK; -+ at->at_rxid = tmd->cd_tagval; -+ isp_put_atio2(isp, at, qe); -+ } else { -+ at_entry_t *at = (at_entry_t *)local; -+ at->at_header.rqs_entry_type = RQSTYPE_ATIO; -+ at->at_header.rqs_entry_count = 1; -+ at->at_iid = tmd->cd_iid; -+ at->at_iid |= tmd->cd_chan << 7; -+ at->at_tgt = tmd->cd_tgt; -+ at->at_lun = tmd->cd_lun; -+ at->at_status = CT_OK; -+ at->at_tag_val = AT_GET_TAG(tmd->cd_tagval); -+ at->at_handle = AT_GET_HANDLE(tmd->cd_tagval); -+ isp_put_atio(isp, at, qe); -+ } -+ ISP_TDQE(isp, "isp_target_putback_atio", isp->isp_reqidx, qe); -+ ISP_ADD_REQUEST(isp, nxti); -+ isp_complete_ctio(isp, tmd); -+} -+ -+static void -+isp_complete_ctio(struct ispsoftc *isp, tmd_cmd_t *tmd) -+{ -+ if (isp->isp_osinfo.hcb == 0) { -+ isp_prt(isp, ISP_LOGWARN, "nobody to tell about completing command"); -+ MEMZERO(tmd, TMD_SIZE); -+ tmd->cd_private = isp->isp_osinfo.tfreelist; -+ isp->isp_osinfo.tfreelist = tmd; -+ } else { -+ tmd->cd_lreserved[0].bytes[0] = QOUT_TMD_DONE; -+ tmd->cd_lreserved[1].ptrs[0] = isp->isp_osinfo.pending_t; -+ isp->isp_osinfo.pending_t = tmd; -+ } -+} -+ -+int -+isp_en_dis_lun(struct ispsoftc *isp, int enable, int bus, int tgt, int lun) -+{ -+ DECLARE_MUTEX_LOCKED(rsem); -+ u_int16_t rstat; -+ int rv, enabled, cmd; -+ -+ /* -+ * First, we can't do anything unless we have an upper -+ * level target driver to route commands to. -+ */ -+ if (isp->isp_osinfo.hcb == 0) { -+ return (-EINVAL); -+ } -+ -+ /* -+ * Second, check for sanity of enable argument. -+ */ -+ enabled = ((isp->isp_osinfo.tmflags & (1 << bus)) != 0); -+ if (enable == 0 && enabled == 0) { -+ return (-EINVAL); -+ } -+ -+ /* -+ * Third, check to see if we're enabling on fibre channel -+ * and don't yet have a notion of who the heck we are (no -+ * loop yet). -+ */ -+ if (IS_FC(isp) && !enabled) { -+ ISP_LOCK_SOFTC(isp); -+ if ((isp->isp_role & ISP_ROLE_TARGET) == 0) { -+ isp->isp_role |= ISP_ROLE_TARGET; -+ if (isp_drain_reset(isp, "lun enables")) { -+ return (-EIO); -+ } -+ } -+ ISP_UNLK_SOFTC(isp); -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 1); -+ } -+ -+ /* -+ * If this is a wildcard target, select our initiator -+ * id/loop id for use as what we enable as. -+ */ -+ -+ if (tgt == -1) { -+ if (IS_FC(isp)) { -+ tgt = ((fcparam *)isp->isp_param)->isp_loopid; -+ } else { -+ tgt = ((sdparam *)isp->isp_param)->isp_initiator_id; -+ } -+ } -+ -+ /* -+ * Do some sanity checking on lun arguments. -+ */ -+ -+ if (lun < 0 || lun >= (IS_FC(isp)? TM_MAX_LUN_FC : TM_MAX_LUN_SCSI)) { -+ return (-EINVAL); -+ } -+ -+ /* -+ * Snag the semaphore on the return state value on enables/disables. -+ */ -+ if (down_interruptible(&isp->isp_osinfo.tgt_inisem)) { -+ return (-EINTR); -+ } -+ -+ if (enable && LUN_BTST(isp, bus, lun)) { -+ up(&isp->isp_osinfo.tgt_inisem); -+ return (-EEXIST); -+ } -+ if (!enable && !LUN_BTST(isp, bus, lun)) { -+ up(&isp->isp_osinfo.tgt_inisem); -+ return (-NODEV); -+ } -+ -+ if (enable && nolunsenabled(isp, bus)) { -+ int av = (bus << 31) | ENABLE_TARGET_FLAG; -+ ISP_LOCK_SOFTC(isp); -+ rv = isp_control(isp, ISPCTL_TOGGLE_TMODE, &av); -+ ISP_UNLK_SOFTC(isp); -+ if (rv) { -+ up(&isp->isp_osinfo.tgt_inisem); -+ return (-EIO); -+ } -+ } -+ -+ ISP_LOCK_SOFTC(isp); -+ isp->isp_osinfo.rsemap = &rsem; -+ if (enable) { -+ u_int32_t seq = isp->isp_osinfo.rollinfo++; -+ int n, ulun = lun; -+ -+ cmd = RQSTYPE_ENABLE_LUN; -+ n = DFLT_INOT_CNT; -+ if (IS_FC(isp) && lun != 0) { -+ cmd = RQSTYPE_MODIFY_LUN; -+ n = 0; -+ /* -+ * For SCC firmware, we only deal with setting -+ * (enabling or modifying) lun 0. -+ */ -+ ulun = 0; -+ } -+ rstat = LUN_ERR; -+ if (isp_lun_cmd(isp, cmd, bus, tgt, ulun, DFLT_CMND_CNT, n, seq)) { -+ isp_prt(isp, ISP_LOGERR, "isp_lun_cmd failed"); -+ goto out; -+ } -+ ISP_UNLK_SOFTC(isp); -+ down(isp->isp_osinfo.rsemap); -+ ISP_LOCK_SOFTC(isp); -+ isp->isp_osinfo.rsemap = NULL; -+ rstat = isp->isp_osinfo.rstatus; -+ if (rstat != LUN_OK) { -+ isp_prt(isp, ISP_LOGERR, "MODIFY/ENABLE LUN returned 0x%x", rstat); -+ goto out; -+ } -+ } else { -+ int n, ulun = lun; -+ u_int32_t seq; -+ -+ rstat = LUN_ERR; -+ seq = isp->isp_osinfo.rollinfo++; -+ cmd = -RQSTYPE_MODIFY_LUN; -+ -+ n = DFLT_INOT_CNT; -+ if (IS_FC(isp) && lun != 0) { -+ n = 0; -+ /* -+ * For SCC firmware, we only deal with setting -+ * (enabling or modifying) lun 0. -+ */ -+ ulun = 0; -+ } -+ if (isp_lun_cmd(isp, cmd, bus, tgt, ulun, DFLT_CMND_CNT, n, seq)) { -+ isp_prt(isp, ISP_LOGERR, "isp_lun_cmd failed"); -+ goto out; -+ } -+ ISP_UNLK_SOFTC(isp); -+ down(isp->isp_osinfo.rsemap); -+ ISP_LOCK_SOFTC(isp); -+ isp->isp_osinfo.rsemap = NULL; -+ rstat = isp->isp_osinfo.rstatus; -+ if (rstat != LUN_OK) { -+ isp_prt(isp, ISP_LOGERR, "MODIFY LUN returned 0x%x", rstat); -+ goto out; -+ } -+ if (IS_FC(isp) && lun) { -+ goto out; -+ } -+ seq = isp->isp_osinfo.rollinfo++; -+ isp->isp_osinfo.rsemap = &rsem; -+ -+ rstat = LUN_ERR; -+ cmd = -RQSTYPE_ENABLE_LUN; -+ if (isp_lun_cmd(isp, cmd, bus, tgt, lun, 0, 0, seq)) { -+ isp_prt(isp, ISP_LOGERR, "isp_lun_cmd failed"); -+ goto out; -+ } -+ ISP_UNLK_SOFTC(isp); -+ down(isp->isp_osinfo.rsemap); -+ ISP_LOCK_SOFTC(isp); -+ isp->isp_osinfo.rsemap = NULL; -+ rstat = isp->isp_osinfo.rstatus; -+ if (rstat != LUN_OK) { -+ isp_prt(isp, ISP_LOGERR, "DISABLE LUN returned 0x%x", rstat); -+ goto out; -+ } -+ } -+out: -+ -+ if (rstat != LUN_OK) { -+ isp_prt(isp, ISP_LOGERR, "lun %d %sable failed", lun, -+ (enable) ? "en" : "dis"); -+ ISP_UNLK_SOFTC(isp); -+ up(&isp->isp_osinfo.tgt_inisem); -+ return (-EIO); -+ } else { -+ isp_prt(isp, ISP_LOGINFO, -+ "lun %d now %sabled for target mode on channel %d", lun, -+ (enable)? "en" : "dis", bus); -+ if (enable == 0) { -+ LUN_BCLR(isp, bus, lun); -+ if (nolunsenabled(isp, bus)) { -+ int av = bus << 31; -+ rv = isp_control(isp, ISPCTL_TOGGLE_TMODE, &av); -+ if (rv) { -+ isp_prt(isp, ISP_LOGERR, -+ "failed to disable target mode on channel %d", bus); -+ /* but proceed */ -+ ISP_UNLK_SOFTC(isp); -+ return (-EIO); -+ } -+ isp->isp_osinfo.tmflags &= ~(1 << bus); -+ isp->isp_role &= ~ISP_ROLE_TARGET; -+ if (IS_FC(isp)) { -+ if (isp_drain_reset(isp, "lun disables")) { -+ return (-EIO); -+ } -+ if ((isp->isp_role & ISP_ROLE_INITIATOR) != 0) { -+ ISP_UNLK_SOFTC(isp); -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 1); -+ ISP_LOCK_SOFTC(isp); -+ } -+ } -+ } -+ } else { -+ isp->isp_osinfo.tmflags |= (1 << bus); -+ LUN_BSET(isp, bus, lun); -+ } -+ ISP_UNLK_SOFTC(isp); -+ up(&isp->isp_osinfo.tgt_inisem); -+ return (0); -+ } -+} -+#endif -+ -+#ifdef ISP_PRIVATE_ASYNC -+#define ISP_ASYNC isp_async_level1 -+#else -+#define ISP_ASYNC isp_async -+#endif -+ -+int -+ISP_ASYNC(struct ispsoftc *isp, ispasync_t cmd, void *arg) -+{ -+ switch (cmd) { -+ case ISPASYNC_NEW_TGT_PARAMS: -+ if (IS_SCSI(isp)) { -+ sdparam *sdp = isp->isp_param; -+ char *wt; -+ int mhz, flags, bus, tgt, period; -+ -+ tgt = *((int *) arg); -+ bus = (tgt >> 16) & 0xffff; -+ tgt &= 0xffff; -+ -+ sdp += bus; -+ flags = sdp->isp_devparam[tgt].actv_flags; -+ period = sdp->isp_devparam[tgt].actv_period; -+ if ((flags & DPARM_SYNC) && period && -+ (sdp->isp_devparam[tgt].actv_offset) != 0) { -+ if (sdp->isp_lvdmode || period < 0xc) { -+ switch (period) { -+ case 0x9: -+ mhz = 80; -+ break; -+ case 0xa: -+ mhz = 40; -+ break; -+ case 0xb: -+ mhz = 33; -+ break; -+ case 0xc: -+ mhz = 25; -+ break; -+ default: -+ mhz = 1000 / (period * 4); -+ break; -+ } -+ } else { -+ mhz = 1000 / (period * 4); -+ } -+ } else { -+ mhz = 0; -+ } -+ switch (flags & (DPARM_WIDE|DPARM_TQING)) { -+ case DPARM_WIDE: -+ wt = ", 16 bit wide"; -+ break; -+ case DPARM_TQING: -+ wt = ", Tagged Queueing Enabled"; -+ break; -+ case DPARM_WIDE|DPARM_TQING: -+ wt = ", 16 bit wide, Tagged Queueing Enabled"; -+ break; -+ default: -+ wt = " "; -+ break; -+ } -+ if (mhz) { -+ isp_prt(isp, ISP_LOGINFO, -+ "Channel %d Target %d at %dMHz Max Offset %d%s", -+ bus, tgt, mhz, sdp->isp_devparam[tgt].actv_offset, wt); -+ } else { -+ isp_prt(isp, ISP_LOGINFO, "Channel %d Target %d Async Mode%s", -+ bus, tgt, wt); -+ } -+ } -+ break; -+ case ISPASYNC_LIP: -+ isp_prt(isp, ISP_LOGINFO, "LIP Received"); -+ break; -+ case ISPASYNC_LOOP_RESET: -+ isp_prt(isp, ISP_LOGINFO, "Loop Reset Received"); -+ break; -+ case ISPASYNC_BUS_RESET: -+ isp_prt(isp, ISP_LOGINFO, "SCSI bus %d reset detected", *((int *) arg)); -+ break; -+ case ISPASYNC_LOOP_DOWN: -+ isp_prt(isp, ISP_LOGINFO, "Loop DOWN"); -+ break; -+ case ISPASYNC_LOOP_UP: -+ isp_prt(isp, ISP_LOGINFO, "Loop UP"); -+ break; -+ case ISPASYNC_PROMENADE: -+ { -+ fcparam *fcp = isp->isp_param; -+ struct lportdb *lp; -+ int tgt; -+ -+ tgt = *((int *) arg); -+ lp = &fcp->portdb[tgt]; -+ -+ if (lp->valid) { -+ isp_prt(isp, ISP_LOGINFO, -+ "ID %d (Loop 0x%x) Port WWN 0x%08x%08x @ 0x%x arrived, role %s", -+ tgt, lp->loopid, (unsigned int) (lp->port_wwn >> 32), -+ (unsigned int) (lp->port_wwn & 0xffffffff), lp->portid, -+ class3_roles[fcp->portdb[tgt].roles]); -+ } else { -+ isp_prt(isp, ISP_LOGINFO, -+ "ID %d (Loop 0x%x) Port WWN 0x%08x%08x @ 0x%x departed", tgt, -+ lp->loopid, (unsigned int) (lp->port_wwn >> 32), -+ (unsigned int) (lp->port_wwn & 0xffffffff), lp->portid); -+#ifdef DEVICE_POLICY_IS_FLUID -+ MEMZERO((void *) lp, sizeof (*lp)); -+#endif -+ } -+ break; -+ } -+ case ISPASYNC_CHANGE_NOTIFY: -+ if (arg == ISPASYNC_CHANGE_PDB) { -+ isp_prt(isp, ISP_LOGINFO, -+ "Port Database Changed"); -+ } else if (arg == ISPASYNC_CHANGE_SNS) { -+ isp_prt(isp, ISP_LOGINFO, -+ "Name Server Database Changed"); -+ } -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 0); -+ break; -+ case ISPASYNC_FABRIC_DEV: -+ { -+ int target, base, lim; -+ fcparam *fcp = isp->isp_param; -+ struct lportdb *lp = NULL; -+ struct lportdb *clp = (struct lportdb *) arg; -+ char *pt; -+ -+ switch (clp->port_type) { -+ case 1: -+ pt = " N_Port"; -+ break; -+ case 2: -+ pt = " NL_Port"; -+ break; -+ case 3: -+ pt = "F/NL_Port"; -+ break; -+ case 0x7f: -+ pt = " Nx_Port"; -+ break; -+ case 0x81: -+ pt = " F_port"; -+ break; -+ case 0x82: -+ pt = " FL_Port"; -+ break; -+ case 0x84: -+ pt = " E_port"; -+ break; -+ default: -+ pt = " "; -+ break; -+ } -+ -+ isp_prt(isp, ISP_LOGINFO, -+ "%s Fabric Device @ PortID 0x%x", pt, clp->portid); -+ -+ /* -+ * If we don't have an initiator role we bail. -+ * -+ * We just use ISPASYNC_FABRIC_DEV for announcement purposes. -+ */ -+ -+ if ((isp->isp_role & ISP_ROLE_INITIATOR) == 0) { -+ break; -+ } -+ -+ /* -+ * Is this entry for us? If so, we bail. -+ */ -+ -+ if (fcp->isp_portid == clp->portid) { -+ break; -+ } -+ -+ /* -+ * Else, the default policy is to find room for it in -+ * our local port database. Later, when we execute -+ * the call to isp_pdb_sync either this newly arrived -+ * or already logged in device will be (re)announced. -+ */ -+ -+ if (fcp->isp_topo == TOPO_FL_PORT) -+ base = FC_SNS_ID+1; -+ else -+ base = 0; -+ -+ if (fcp->isp_topo == TOPO_N_PORT) -+ lim = 1; -+ else -+ lim = MAX_FC_TARG; -+ -+ /* -+ * Is it already in our list? -+ */ -+ for (target = base; target < lim; target++) { -+ if (target >= FL_PORT_ID && target <= FC_SNS_ID) { -+ continue; -+ } -+ lp = &fcp->portdb[target]; -+ if (lp->port_wwn == clp->port_wwn && -+ lp->node_wwn == clp->node_wwn) { -+ lp->fabric_dev = 1; -+ /* -+ * Propagate possibly new port id. -+ */ -+ lp->portid = clp->portid; -+ break; -+ } -+ } -+ if (target < lim) { -+ break; -+ } -+ for (target = base; target < lim; target++) { -+ if (target >= FL_PORT_ID && target <= FC_SNS_ID) { -+ continue; -+ } -+ lp = &fcp->portdb[target]; -+ if (lp->port_wwn == 0) { -+ break; -+ } -+ } -+ if (target == lim) { -+ isp_prt(isp, ISP_LOGWARN, -+ "out of space for fabric devices"); -+ break; -+ } -+ lp->port_type = clp->port_type; -+ lp->fc4_type = clp->fc4_type; -+ lp->node_wwn = clp->node_wwn; -+ lp->port_wwn = clp->port_wwn; -+ lp->portid = clp->portid; -+ lp->fabric_dev = 1; -+ break; -+ } -+#ifdef LINUX_ISP_TARGET_MODE -+ case ISPASYNC_TARGET_MESSAGE: -+ { -+ tmd_msg_t *mp = arg; -+ isp_prt(isp, ISP_LOGTDEBUG2, -+ "bus %d iid %d tgt %d lun %d ttype %x tval %x msg[0]=%x", -+ mp->nt_bus, (int) mp->nt_iid, (int) mp->nt_tgt, (int) mp->nt_lun, -+ mp->nt_tagtype, mp->nt_tagval, mp->nt_msg[0]); -+ break; -+ } -+ case ISPASYNC_TARGET_EVENT: -+ { -+ tmd_event_t *ep = arg; -+ switch (ep->ev_event) { -+ case ASYNC_CTIO_DONE: -+ /* -+ * ACK the interrupt first -+ */ -+ ISP_WRITE(isp, BIU_SEMA, 0); -+ ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT); -+ isp_handle_platform_ctio_fastpost(isp, ep->ev_bus); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGTDEBUG2, -+ "bus %d event code 0x%x", ep->ev_bus, ep->ev_event); -+ } -+ break; -+ } -+ case ISPASYNC_TARGET_ACTION: -+ switch (((isphdr_t *)arg)->rqs_entry_type) { -+ default: -+ isp_prt(isp, ISP_LOGWARN, "event 0x%x for unhandled target action", -+ ((isphdr_t *)arg)->rqs_entry_type); -+ break; -+ case RQSTYPE_ATIO: -+ (void) isp_handle_platform_atio(isp, (at_entry_t *) arg); -+ break; -+ case RQSTYPE_ATIO2: -+ (void) isp_handle_platform_atio2(isp, (at2_entry_t *)arg); -+ break; -+ case RQSTYPE_CTIO2: -+ case RQSTYPE_CTIO: -+ (void) isp_handle_platform_ctio(isp, arg); -+ break; -+ case RQSTYPE_ENABLE_LUN: -+ case RQSTYPE_MODIFY_LUN: -+ isp->isp_osinfo.rstatus = ((lun_entry_t *)arg)->le_status; -+ if (isp->isp_osinfo.rsemap) { -+ up(isp->isp_osinfo.rsemap); -+ } -+ break; -+ } -+ break; -+#endif -+ case ISPASYNC_UNHANDLED_RESPONSE: -+ break; -+ case ISPASYNC_FW_CRASH: -+ { -+ u_int16_t mbox1, mbox6; -+ mbox1 = ISP_READ(isp, OUTMAILBOX1); -+ if (IS_DUALBUS(isp)) { -+ mbox6 = ISP_READ(isp, OUTMAILBOX6); -+ } else { -+ mbox6 = 0; -+ } -+ isp_prt(isp, ISP_LOGERR, -+ "Internal F/W Error on bus %d @ RISC Address 0x%x", mbox6, mbox1); -+#ifdef ISP_FW_CRASH_DUMP -+ if (IS_FC(isp)) { -+ isp->isp_blocked = 1; -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FW_CRASH_DUMP, 0); -+ } else { -+ isp_reinit(isp); -+ isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); -+ } -+#endif -+ break; -+ } -+ case ISPASYNC_FW_RESTARTED: -+ { -+ if (IS_FC(isp)) { -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 0); -+ } -+ break; -+ } -+ default: -+ return (-1); -+ } -+ return (0); -+} -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+#include "sd.h" -+int -+isplinux_biosparam(Disk *disk, kdev_t n, int ip[]) -+{ -+ int size = disk->capacity; -+ ip[0] = 64; -+ ip[1] = 32; -+ ip[2] = size >> 11; -+ if (ip[2] > 1024) { -+ ip[0] = 255; -+ ip[1] = 63; -+ ip[2] = size / (ip[0] * ip[1]); -+ } -+ return (0); -+} -+ -+/* -+ * Set the queue depth for this device. -+ */ -+ -+void -+isplinux_sqd(struct Scsi_Host *host, Scsi_Device *devs) -+{ -+ while (devs) { -+ if (devs->host == host && devs->tagged_supported == 0) { -+ /* -+ * If this device doesn't support tagged operations, don't waste -+ * queue space for it, even if it has multiple luns. -+ */ -+ devs->queue_depth = 2; -+ } else if (devs->host == host) { -+ int depth = 2; -+ struct ispsoftc *isp = (struct ispsoftc *) host->hostdata; -+ -+ if (IS_SCSI(isp)) { -+ sdparam *sdp = isp->isp_param; -+ sdp += devs->channel; -+ depth = sdp->isp_devparam[devs->id].exc_throttle; -+ } else { -+ depth = FCPARAM(isp)->isp_execthrottle; -+ } -+ if (isp_throttle) { -+ /* -+ * This limit is due to the size of devs->queue_depth -+ */ -+ depth = (unsigned char) min(isp_throttle, 255);; -+ } -+ if (depth < 4) { -+ depth = 4; -+ } -+ devs->queue_depth = depth; -+ } -+ devs = devs->next; -+ } -+} -+ -+#else -+int -+isplinux_biosparam(struct scsi_device *sdev, struct block_device *n, -+ sector_t capacity, int ip[]) -+{ -+ int size = capacity; -+ ip[0] = 64; -+ ip[1] = 32; -+ ip[2] = size >> 11; -+ if (ip[2] > 1024) { -+ ip[0] = 255; -+ ip[1] = 63; -+ ip[2] = size / (ip[0] * ip[1]); -+ } -+ return (0); -+} -+ -+static int -+isplinux_slave_configure(Scsi_Device * device) -+{ -+ if (device->tagged_supported) { -+ /* -+ * FIX LATER -+ */ -+ scsi_adjust_queue_depth(device, MSG_ORDERED_TAG, 63); -+ } -+ return 0; -+} -+#endif -+ -+/* -+ * Periodic watchdog timer.. the main purpose here is to restart -+ * commands that were pegged on resources, etc... -+ */ -+void -+isplinux_timer(unsigned long arg) -+{ -+ Scsi_Cmnd *Cmnd; -+ struct ispsoftc *isp = (struct ispsoftc *) arg; -+ -+ ISP_ILOCK_SOFTC(isp); -+ if (IS_FC(isp)) { -+ int rql; -+ if (isp->isp_role & ISP_ROLE_INITIATOR) -+ rql = LOOP_READY; -+ else -+ rql = LOOP_LSCAN_DONE; -+ if (isp->isp_fcrswdog || FCPARAM(isp)->isp_fwstate != FW_READY || -+ FCPARAM(isp)->isp_loopstate < rql) { -+ isp->isp_fcrswdog = 0; -+ if (isp->isp_deadloop == 0 && isp->isp_role != ISP_ROLE_NONE) { -+ SEND_THREAD_EVENT(isp, ISP_THREAD_FC_RESCAN, 0); -+ } -+ } -+ } -+ isplinux_runwaitq(isp); -+ if ((Cmnd = isp->isp_osinfo.dqnext) != NULL) { -+ isp->isp_osinfo.dqnext = isp->isp_osinfo.dqtail = NULL; -+ } -+ if (isp->dogactive) { -+ isp->isp_osinfo.timer.expires = jiffies + ISP_WATCH_TIME; -+ add_timer(&isp->isp_osinfo.timer); -+ } -+ ISP_IUNLK_SOFTC(isp); -+ if (Cmnd) { -+ ISP_LOCK_SCSI_DONE(isp); -+ while (Cmnd) { -+ Scsi_Cmnd *f = (Scsi_Cmnd *) Cmnd->host_scribble; -+ Cmnd->host_scribble = NULL; -+ /* -+ * Get around silliness in midlayer. -+ */ -+ if (host_byte(Cmnd->result) == DID_RESET) { -+ Cmnd->flags |= IS_RESETTING; -+ } -+ (*Cmnd->scsi_done)(Cmnd); -+ Cmnd = f; -+ } -+ ISP_UNLK_SCSI_DONE(isp); -+ } -+} -+ -+void -+isplinux_mbtimer(unsigned long arg) -+{ -+ struct ispsoftc *isp = (struct ispsoftc *) arg; -+ ISP_ILOCK_SOFTC(isp); -+ if (isp->mbox_waiting) { -+ isp->mbox_waiting = 0; -+ up(&isp->mbox_c_sem); -+ } -+ ISP_IUNLK_SOFTC(isp); -+} -+ -+irqreturn_t -+isplinux_intr(int irq, void *arg, struct pt_regs *pt) -+{ -+ struct ispsoftc *isp = arg; -+ u_int16_t isr, sema, mbox; -+ Scsi_Cmnd *Cmnd; -+ -+ ISP_ILOCK_SOFTC(isp); -+ isp->isp_intcnt++; -+ if (ISP_READ_ISR(isp, &isr, &sema, &mbox) == 0) { -+ isp->isp_intbogus++; -+ ISP_IUNLK_SOFTC(isp); -+ return IRQ_NONE; -+ } -+ isp_intr(isp, isr, sema, mbox); -+ isplinux_runwaitq(isp); -+ if ((Cmnd = isp->isp_osinfo.dqnext) != NULL) { -+ isp->isp_osinfo.dqnext = isp->isp_osinfo.dqtail = NULL; -+ } -+#ifdef LINUX_ISP_TARGET_MODE -+ if (isp->isp_osinfo.pending_t) { -+ struct tmd_cmd *tmd = isp->isp_osinfo.pending_t; -+ isp->isp_osinfo.pending_t = NULL; -+ ISP_IUNLK_SOFTC(isp); -+ do { -+ struct tmd_cmd *next = tmd->cd_lreserved[1].ptrs[0]; -+ tmd->cd_lreserved[1].ptrs[0] = NULL; -+ ISP_PARENT_TARGET(tmd->cd_lreserved[0].bytes[0], tmd); -+ tmd = next; -+ } while (tmd != NULL); -+ } else { -+ ISP_IUNLK_SOFTC(isp); -+ } -+#else -+ ISP_IUNLK_SOFTC(isp); -+#endif -+ if (Cmnd) { -+ ISP_LOCK_SCSI_DONE(isp); -+ while (Cmnd) { -+ Scsi_Cmnd *f = (Scsi_Cmnd *) Cmnd->host_scribble; -+ Cmnd->host_scribble = NULL; -+ /* -+ * Get around silliness in midlayer. -+ */ -+ if (host_byte(Cmnd->result) == DID_RESET) { -+ Cmnd->flags |= IS_RESETTING; -+ } -+ (*Cmnd->scsi_done)(Cmnd); -+ Cmnd = f; -+ } -+ ISP_UNLK_SCSI_DONE(isp); -+ } -+ return IRQ_HANDLED; -+} -+ -+static INLINE int -+isp_parse_rolearg(struct ispsoftc *isp, char *roles) -+{ -+ char *role = roles; -+ -+ while (role && *role) { -+ unsigned int id; -+ char *eqtok, *commatok, *p, *q; -+ -+ eqtok = role; -+ eqtok = strchr(role, '='); -+ if (eqtok == NULL) -+ break; -+ *eqtok = 0; -+ commatok = strchr(eqtok+1, ','); -+ if (commatok) -+ *commatok = 0; -+ if (strncmp(role, "0x", 2) == 0) -+ q = role + 2; -+ else -+ q = role; -+ if (*q == '*') -+ id = isp->isp_osinfo.device_id; -+ else -+ id = simple_strtoul(q, &p, 16); -+ *eqtok = '='; -+ if (p != q && id == isp->isp_osinfo.device_id) { -+ p = eqtok + 1; -+ if (strcmp(p, "none") == 0) { -+ if (commatok) { -+ *commatok = ','; -+ } -+ return (ISP_ROLE_NONE); -+ } -+ if (strcmp(p, "target") == 0) { -+ if (commatok) { -+ *commatok = ','; -+ } -+ return (ISP_ROLE_TARGET); -+ } -+ if (strcmp(p, "initiator") == 0) { -+ if (commatok) { -+ *commatok = ','; -+ } -+ return (ISP_ROLE_INITIATOR); -+ } -+ if (strcmp(p, "both") == 0) { -+ if (commatok) { -+ *commatok = ','; -+ } -+ return (ISP_ROLE_BOTH); -+ } -+ break; -+ } -+ if (commatok) { -+ role = commatok+1; -+ *commatok = ','; -+ } else { -+ break; -+ } -+ } -+ return (ISP_DEFAULT_ROLES); -+} -+ -+static INLINE u_int64_t -+isp_parse_wwnarg(struct ispsoftc *isp, char *wwns) -+{ -+ char *wwnt = wwns; -+ u_int64_t wwn = 0; -+ -+ while (wwn == 0 && wwnt && *wwnt) { -+ unsigned int id; -+ char *eqtok, *commatok, *p, *q; -+ -+ eqtok = wwnt; -+ eqtok = strchr(wwnt, '='); -+ if (eqtok == NULL) -+ break; -+ *eqtok = 0; -+ commatok = strchr(eqtok+1, ','); -+ if (commatok) -+ *commatok = 0; -+ if (strncmp(wwnt, "0x", 2) == 0) -+ q = wwnt + 2; -+ else -+ q = wwnt; -+ id = simple_strtoul(q, &p, 16); -+ if (p != q && id == isp->isp_osinfo.device_id) { -+ unsigned long t, t2; -+ p = eqtok + 1; -+ while (*p) { -+ p++; -+ } -+ p -= 8; -+ if (p > eqtok + 1) { -+ char *q; -+ char c; -+ q = p; -+ t = simple_strtoul(p, &q, 16); -+ c = *p; -+ *p = 0; -+ t2 = simple_strtoul(eqtok+1, NULL, 16); -+ *p = c; -+ } else { -+ t = simple_strtoul(eqtok+1, NULL, 16); -+ t2 = 0; -+ } -+ wwn = (((u_int64_t) t2) << 32) | (u_int64_t) t; -+ } -+ *eqtok = '='; -+ if (commatok) { -+ wwnt = commatok+1; -+ *commatok = ','; -+ } else { -+ break; -+ } -+ } -+ return (wwn); -+} -+ -+void -+isplinux_common_init(struct ispsoftc *isp) -+{ -+ /* -+ * Set up config options, etc... -+ */ -+ if (isp_debug) { -+ isp->isp_dblev = isp_debug; -+ } else { -+ isp->isp_dblev = ISP_LOGCONFIG|ISP_LOGWARN|ISP_LOGERR; -+ } -+ -+ if (isp_nofwreload & (1 << isp->isp_unit)) { -+ isp->isp_confopts |= ISP_CFG_NORELOAD; -+ } -+ if (isp_nonvram & (1 << isp->isp_unit)) { -+ isp->isp_confopts |= ISP_CFG_NONVRAM; -+ } -+ if (IS_FC(isp)) { -+ if (isp_fcduplex & (1 << isp->isp_unit)) { -+ isp->isp_confopts |= ISP_CFG_FULL_DUPLEX; -+ } -+ isp->isp_defwwpn = isp_parse_wwnarg(isp, isp_wwpns); -+ if (isp->isp_defwwpn == 0) { -+ isp->isp_defwwpn = (u_int64_t) 0x400000007F7F7F01; -+ } else { -+ isp->isp_confopts |= ISP_CFG_OWNWWPN; -+ } -+ isp->isp_defwwnn = isp_parse_wwnarg(isp, isp_wwnns); -+ if (isp->isp_defwwnn == 0) { -+ isp->isp_defwwnn = (u_int64_t) 0x400000007F7F7F02; -+ } else { -+ isp->isp_confopts |= ISP_CFG_OWNWWNN; -+ } -+ isp->isp_osinfo.host->max_id = MAX_FC_TARG; -+ if (IS_2200(isp) || IS_2300(isp)) { -+ if (isp_nport_only & (1 << isp->isp_unit)) { -+ isp->isp_confopts |= ISP_CFG_NPORT_ONLY; -+ } else if (isp_loop_only & (1 << isp->isp_unit)) { -+ isp->isp_confopts |= ISP_CFG_LPORT_ONLY; -+ } else { -+ isp->isp_confopts |= ISP_CFG_NPORT; -+ } -+ } -+ isp->isp_osinfo.host->this_id = MAX_FC_TARG+1; -+#ifdef ISP_FW_CRASH_DUMP -+ if (IS_2200(isp)) -+ FCPARAM(isp)->isp_dump_data = -+ isp_kalloc(QLA2200_RISC_IMAGE_DUMP_SIZE, GFP_KERNEL); -+ else if (IS_23XX(isp)) -+ FCPARAM(isp)->isp_dump_data = -+ isp_kalloc(QLA2300_RISC_IMAGE_DUMP_SIZE, GFP_KERNEL); -+ if (FCPARAM(isp)->isp_dump_data) { -+ isp_prt(isp, ISP_LOGCONFIG, "f/w crash dump area allocated"); -+ FCPARAM(isp)->isp_dump_data[0] = 0; -+ } -+#endif -+ if (isp_default_frame_size) { -+ if (isp_default_frame_size != 512 && -+ isp_default_frame_size != 1024 && -+ isp_default_frame_size != 2048) { -+ isp_prt(isp, ISP_LOGERR, -+ "bad frame size (%d), defaulting to (%d)", -+ isp_default_frame_size, ICB_DFLT_FRMLEN); -+ isp_default_frame_size = 0; -+ } -+ } -+ if (isp_default_frame_size) { -+ isp->isp_confopts |= ISP_CFG_OWNFSZ; -+ isp->isp_osinfo.storep->fibre_scsi.default_frame_size = -+ isp_default_frame_size; -+ } else { -+ isp->isp_osinfo.storep->fibre_scsi.default_frame_size = -+ isp_default_frame_size = ICB_DFLT_FRMLEN; -+ } -+ if (isp_default_exec_throttle) { -+ if (isp_default_exec_throttle < 16 || -+ isp_default_exec_throttle > 255) { -+ isp_prt(isp, ISP_LOGERR, -+ "bad execution throttle size (%d), defaulting to (%d)", -+ isp_default_exec_throttle, ICB_DFLT_THROTTLE); -+ isp_default_exec_throttle = 0; -+ } -+ } -+ if (isp_default_exec_throttle) { -+ isp->isp_confopts |= ISP_CFG_OWNEXCTHROTTLE; -+ isp->isp_osinfo.storep->fibre_scsi.default_exec_throttle = -+ isp_default_exec_throttle; -+ } else { -+ isp->isp_osinfo.storep->fibre_scsi.default_exec_throttle = -+ ICB_DFLT_THROTTLE; -+ } -+ } else { -+ isp->isp_osinfo.host->max_id = MAX_TARGETS; -+ isp->isp_osinfo.host->this_id = 7; /* temp default */ -+ } -+ isp->isp_role = isp_parse_rolearg(isp, isp_roles); -+ -+ -+ /* -+ * Initialize locks -+ */ -+ ISP_LOCK_INIT(isp); -+ ISP_TLOCK_INIT(isp); -+ sema_init(&isp->mbox_sem, 1); -+ sema_init(&isp->mbox_c_sem, 0); -+ sema_init(&isp->fcs_sem, 1); -+ -+#if defined(CONFIG_PROC_FS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ /* -+ * Initialize any PROCFS stuff -+ */ -+ isplinux_init_proc(isp); -+#endif -+ -+ /* -+ * Start watchdog timer -+ */ -+ ISP_LOCK_SOFTC(isp); -+ init_timer(&isp->isp_osinfo.timer); -+ isp->isp_osinfo.timer.data = (unsigned long) isp; -+ isp->isp_osinfo.timer.function = isplinux_timer; -+ isp->isp_osinfo.timer.expires = jiffies + ISP_WATCH_TIME; -+ add_timer(&isp->isp_osinfo.timer); -+ isp->dogactive = 1; -+ if (IS_FC(isp)) { -+ DECLARE_MUTEX_LOCKED(sem); -+ ISP_UNLK_SOFTC(isp); -+ isp->isp_osinfo.task_ctl_sem = &sem; -+ kernel_thread(isp_task_thread, isp, 0); -+ down(&sem); -+ isp->isp_osinfo.task_ctl_sem = NULL; -+ ISP_LOCK_SOFTC(isp); -+ } -+ isplinux_reinit(isp); -+#ifdef LINUX_ISP_TARGET_MODE -+ sema_init(&isp->isp_osinfo.tgt_inisem, 1); -+#endif -+#ifdef ISP_TARGET_MODE -+ isp_attach_target(isp); -+#endif -+ ISP_UNLK_SOFTC(isp); -+} -+ -+void -+isplinux_reinit(struct ispsoftc *isp) -+{ -+ int maxluns = isp_maxluns; -+ isp_reset(isp); -+ if (isp->isp_state != ISP_RESETSTATE) { -+ isp_prt(isp, ISP_LOGERR, "failed to enter RESET state"); -+ return; -+ } -+ /* -+ * Until the midlayer starts using REPORT LUNS to dertermine how many -+ * luns there are for SCSI-3 devices and sets a reasonable limit for -+ * SCSI-2 devices, we'll follow this ruleset: -+ * -+ * If our isp_maxluns parameter is unchanged from its default, we -+ * limit ourselves to 8 luns for parallel SCSI, 256 for FC-SCSI. -+ * -+ * If somebody has set isp_maxluns away from the fefault, we follow that. -+ * -+ * We filter any value through the HBA maximum -+ */ -+ if (isp_maxluns == 8) { -+ if (IS_FC(isp)) { -+ maxluns = 256; -+ } -+ } -+ isp->isp_osinfo.host->max_lun = min(maxluns, ISP_MAX_LUNS(isp)); -+ isp_init(isp); -+ if (isp->isp_role == ISP_ROLE_NONE) { -+ return; -+ } -+ if (isp->isp_state != ISP_INITSTATE) { -+ isp_prt(isp, ISP_LOGERR, "failed to enter INIT state"); -+ return; -+ } -+ isp->isp_state = ISP_RUNSTATE; -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ isp->isp_osinfo.host->can_queue = isp->isp_maxcmds; -+#else -+ isp->isp_osinfo.host->can_queue = min(255, isp->isp_maxcmds); -+#endif -+ if (isp->isp_osinfo.host->can_queue == 0) -+ isp->isp_osinfo.host->can_queue = 1; -+ -+ if (IS_FC(isp)) { -+ isp->isp_osinfo.host->this_id = MAX_FC_TARG; -+ /* -+ * This is *not* the same as execution throttle- that is set -+ * in isplinux_sqd and is per-device. -+ * -+ * What we try and do here is take how much we can queue at -+ * a given time and spread it, reasonably, over all the luns -+ * we expect to run at a time. -+ */ -+ if (isp_cmd_per_lun) { -+ isp->isp_osinfo.host->cmd_per_lun = isp_cmd_per_lun; -+ } else { -+ /* -+ * JAWAG. -+ */ -+ isp->isp_osinfo.host->cmd_per_lun = isp->isp_maxcmds >> 3; -+ } -+ -+ /* -+ * We seem to need a bit of settle time. -+ */ -+ USEC_DELAY(1 * 1000000); -+ } else { -+ int bus; -+ -+ if (isp_cmd_per_lun) { -+ isp->isp_osinfo.host->cmd_per_lun = isp_cmd_per_lun; -+ } else { -+ /* -+ * Maximum total commands spread over either 8 targets, -+ * or 4 targets, 2 luns, etc. -+ */ -+ isp->isp_osinfo.host->cmd_per_lun = isp->isp_maxcmds >> 3; -+ } -+ -+ /* -+ * No way to give different ID's for the second bus. -+ */ -+ isp->isp_osinfo.host->this_id = SDPARAM(isp)->isp_initiator_id; -+ bus = 0; -+ (void) isp_control(isp, ISPCTL_RESET_BUS, &bus); -+ if (IS_DUALBUS(isp)) { -+ bus = 1; -+ (void) isp_control(isp, ISPCTL_RESET_BUS, &bus); -+ } -+ /* -+ * Bus Reset delay handled by firmware. -+ */ -+ } -+} -+ -+int -+isp_drain_reset(struct ispsoftc *isp, char *msg) -+{ -+ isp->isp_blocked = 1; -+ /* -+ * Drain active commands. -+ */ -+ if (isp_drain(isp, msg)) { -+ isp->isp_failed = 1; -+ isp->isp_blocked = 0; -+ return (-1); -+ } -+ isp_reinit(isp); -+ if ((isp->isp_role == ISP_ROLE_NONE && isp->isp_state < ISP_RESETSTATE) || -+ (isp->isp_role != ISP_ROLE_NONE && isp->isp_state < ISP_RUNSTATE)) { -+ isp->isp_blocked = 0; -+ return (-1); -+ } -+ isp->isp_failed = 0; -+ isp->isp_blocked = 0; -+ return (0); -+} -+ -+int -+isp_drain(struct ispsoftc *isp, char *whom) -+{ -+ int nslept; -+ -+ if (isp->isp_nactive == 0) -+ return (0); -+ -+ isp->isp_draining = 1; -+ nslept = 0; -+ isp_prt(isp, ISP_LOGDEBUG0, "draining %d commands", isp->isp_nactive); -+ while (isp->isp_nactive) { -+ USEC_SLEEP(isp, 100000); /* drops lock */ -+ if (++nslept >= (60 * 10)) { /* 60 seconds */ -+ isp_prt(isp, ISP_LOGERR, "%s: command drain timed out", whom); -+ isp->isp_draining = 0; -+ return (-1); -+ } -+ } -+ isp_prt(isp, ISP_LOGDEBUG0, "done draining commands"); -+ isp->isp_draining = 0; -+ isplinux_runwaitq(isp); -+ return (0); -+} -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+#define ISP_THREAD_CAN_EXIT isp->isp_host->loaded_as_module -+#else -+#define ISP_THREAD_CAN_EXIT 0 -+#endif -+ -+static int -+isp_task_thread(void *arg) -+{ -+ DECLARE_MUTEX_LOCKED(thread_sleep_semaphore); -+ struct ispsoftc *isp = arg; -+ unsigned long flags; -+ int action, nactions, exit_thread = 0; -+ isp_thread_action_t curactions[MAX_THREAD_ACTION]; -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ /* XXX: Not really sure why the 2.5.X changes do this */ -+ if (ISP_THREAD_CAN_EXIT) { -+ siginitsetinv(¤t->blocked, sigmask(SIGHUP)); -+ } else { -+ siginitsetinv(¤t->blocked, 0); -+ } -+ lock_kernel(); -+ daemonize(); -+ sprintf(current->comm, "isp_thrd%d", isp->isp_unit); -+#else -+ lock_kernel(); -+ daemonize("isp_thrd%d", isp->isp_unit); -+#endif -+ isp->isp_osinfo.task_thread = current; -+ isp->isp_osinfo.task_request = &thread_sleep_semaphore; -+ unlock_kernel(); -+ -+ if (isp->isp_osinfo.task_ctl_sem) { -+ up(isp->isp_osinfo.task_ctl_sem); -+ } -+ isp_prt(isp, ISP_LOGDEBUG1, "isp_task_thread starting"); -+ -+ while (exit_thread == 0) { -+ isp_prt(isp, ISP_LOGDEBUG1, "isp_task_thread sleeping"); -+ down_interruptible(&thread_sleep_semaphore); -+ if (ISP_THREAD_CAN_EXIT) { -+ if (signal_pending(current)) -+ break; -+ } -+ isp_prt(isp, ISP_LOGDEBUG1, "isp_task_thread running"); -+ -+ spin_lock_irqsave(&isp->isp_osinfo.tlock, flags); -+ nactions = isp->isp_osinfo.nt_actions; -+ isp->isp_osinfo.nt_actions = 0; -+ for (action = 0; action < nactions; action++) { -+ curactions[action] = isp->isp_osinfo.t_actions[action]; -+ isp->isp_osinfo.t_actions[action].thread_action = 0; -+ isp->isp_osinfo.t_actions[action].thread_waiter = 0; -+ } -+ spin_unlock_irqrestore(&isp->isp_osinfo.tlock, flags); -+ -+ for (action = 0; action < nactions; action++) { -+ isp_thread_action_t *tap = &curactions[action]; -+ isp_prt(isp, ISP_LOGDEBUG1, "isp_task_thread[%d]: action %d (%p)", -+ action, tap->thread_action, tap->thread_waiter); -+ switch (tap->thread_action) { -+ case ISP_THREAD_NIL: -+ break; -+#ifdef ISP_FW_CRASH_DUMP -+ case ISP_THREAD_FW_CRASH_DUMP: -+ ISP_LOCKU_SOFTC(isp); -+ FCPARAM(isp)->isp_fwstate = FW_CONFIG_WAIT; -+ FCPARAM(isp)->isp_loopstate = LOOP_NIL; -+ isp_fw_dump(isp); -+ SEND_THREAD_EVENT(isp, ISP_THREAD_REINIT, 0); -+ ISP_UNLKU_SOFTC(isp); -+ break; -+#endif -+ case ISP_THREAD_REINIT: -+ { -+ int level; -+ ISP_LOCKU_SOFTC(isp); -+ level = (isp->isp_role == ISP_ROLE_NONE)? -+ ISP_RESETSTATE : ISP_INITSTATE; -+ isp_reinit(isp); -+ if (isp->isp_state >= level) { -+ isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); -+ } else { -+ SEND_THREAD_EVENT(isp, ISP_THREAD_REINIT, 0); -+ } -+ ISP_UNLKU_SOFTC(isp); -+ break; -+ } -+ case ISP_THREAD_FC_RESCAN: -+ ISP_LOCKU_SOFTC(isp); -+ if (isp_fc_runstate(isp, 250000) == 0) { -+ isp->isp_deadloop = 0; -+ isp->isp_downcnt = 0; -+ isp->isp_fcrspend = 0; -+ isp->isp_blocked = 0; -+ isplinux_runwaitq(isp); -+ } else { -+ /* -+ * Try again in a little while. -+ */ -+ isp->isp_fcrspend = 0; -+ if (++isp->isp_downcnt == isp_deadloop_time) { -+ isp_prt(isp, ISP_LOGWARN, "assuming loop is dead"); -+ FCPARAM(isp)->loop_seen_once = 0; -+ isp->isp_deadloop = 1; -+ isp->isp_downcnt = 0; -+ isp->isp_blocked = 0; /* unblock anyway */ -+ isplinux_flushwaitq(isp); -+ } else { -+ isp->isp_fcrswdog = 1; -+ } -+ } -+ ISP_UNLKU_SOFTC(isp); -+ break; -+ case ISP_THREAD_EXIT: -+ if (ISP_THREAD_CAN_EXIT) { -+ exit_thread = 1; -+ } -+ break; -+ default: -+ break; -+ } -+ if (tap->thread_waiter) { -+ isp_prt(isp, ISP_LOGDEBUG1, "isp_task_thread signalling %p", -+ tap->thread_waiter); -+ up(tap->thread_waiter); -+ } -+ } -+ } -+ isp_prt(isp, ISP_LOGDEBUG1, "isp_task_thread exiting"); -+ isp->isp_osinfo.task_request = NULL; -+ return (0); -+} -+ -+void -+isp_prt(struct ispsoftc *isp, int level, const char *fmt, ...) -+{ -+ char buf[256]; -+ char *prefl; -+ va_list ap; -+ -+ if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) { -+ return; -+ } -+ if (level & ISP_LOGERR) { -+ prefl = KERN_ERR "%s: "; -+ } else if (level & ISP_LOGWARN) { -+ prefl = KERN_WARNING "%s: "; -+ } else if (level & ISP_LOGINFO) { -+ prefl = KERN_NOTICE "%s: "; -+ } else if (level & ISP_LOGCONFIG) { -+ prefl = KERN_INFO "%s: "; -+ } else { -+ prefl = "%s: "; -+ } -+ printk(prefl, isp->isp_name); -+ va_start(ap, fmt); -+ vsprintf(buf, fmt, ap); -+ va_end(ap); -+ printk("%s\n", buf); -+} -+ -+char * -+isp_snprintf(char *buf, size_t amt, const char *fmt, ...) -+{ -+ va_list ap; -+ ARGSUSED(amt); -+ va_start(ap, fmt); -+ (void) vsprintf(buf, fmt, ap); -+ va_end(ap); -+ return (buf); -+} -+ -+#ifdef MODULE -+#ifndef ISP_LICENSE -+#define ISP_LICENSE "Dual BSD/GPL" -+#endif -+#ifdef MODULE_LICENSE -+MODULE_LICENSE( ISP_LICENSE ); -+#endif -+MODULE_PARM(isp_debug, "i"); -+MODULE_PARM(isp_disable, "i"); -+MODULE_PARM(isp_nonvram, "i"); -+MODULE_PARM(isp_nofwreload, "i"); -+MODULE_PARM(isp_maxluns, "i"); -+MODULE_PARM(isp_throttle, "i"); -+MODULE_PARM(isp_cmd_per_lun, "i"); -+MODULE_PARM(isp_roles, "s"); -+MODULE_PARM(isp_fcduplex, "i"); -+MODULE_PARM(isp_wwpns, "s"); -+MODULE_PARM(isp_wwnns, "s"); -+MODULE_PARM(isp_nport_only, "i"); -+MODULE_PARM(isp_loop_only, "i"); -+MODULE_PARM(isp_deadloop_time, "i"); -+MODULE_PARM(isp_xtime, "i"); -+MODULE_PARM(isp_default_frame_size, "i"); -+MODULE_PARM(isp_default_exec_throttle, "i"); -+#endif -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,27) -+struct proc_dir_entry proc_scsi_qlc = { -+ PROC_SCSI_QLOGICISP, 3, "isp", S_IFDIR | S_IRUGO | S_IXUGO, 2 -+}; -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) || defined(MODULE) -+Scsi_Host_Template driver_template = QLOGICISP; -+#include "scsi_module.c" -+#endif -+/* -+ * mode: c -+ * Local variables: -+ * c-indent-level: 4 -+ * c-brace-imaginary-offset: 0 -+ * c-brace-offset: -4 -+ * c-argdecl-indent: 4 -+ * c-label-offset: -4 -+ * c-continued-statement-offset: 4 -+ * c-continued-brace-offset: 0 -+ * End: -+ */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_linux.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,1035 @@ -+/* @(#)isp_linux.h 1.51 */ -+/* -+ * Qlogic ISP SCSI Host Adapter Linux Wrapper Definitions -+ *--------------------------------------- -+ * Copyright (c) 1998, 1999, 2000, 2001 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions, and the following disclaimer, -+ * without modification, immediately at the beginning of the file. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * Alternatively, this software may be distributed under the terms of the -+ * the GNU Public License ("GPL"). -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * Matthew Jacob -+ * Feral Software -+ * PMB #825 -+ * 5214-F Diamond Hts Blvd -+ * San Francisco, CA, 94131 -+ * mjacob@feral.com -+ */ -+ -+#ifndef _ISP_LINUX_H -+#define _ISP_LINUX_H -+ -+#include -+ -+#ifndef ISP_MODULE -+#define __NO_VERSION__ -+#endif -+#ifdef LINUX_ISP_TARGET_MODE -+#define EXPORT_SYMTAB -+#endif -+ -+#include -+#ifndef KERNEL_VERSION -+#define KERNEL_VERSION(v,p,s) (((v)<<16)+(p<<8)+s) -+#endif -+#define _KVC KERNEL_VERSION -+ -+#if LINUX_VERSION_CODE <= _KVC(2,2,0) -+#error "Linux 2.0 and 2.1 kernels are not supported anymore" -+#endif -+#if LINUX_VERSION_CODE >= _KVC(2,3,0) && LINUX_VERSION_CODE < _KVC(2,4,0) -+#error "Linux 2.3 kernels are not supported" -+#endif -+ -+#ifndef UNUSED_PARAMETER -+#define UNUSED_PARAMETER(x) (void) x -+#endif -+ -+#include -+#ifdef CONFIG_SMP -+#define __SMP__ 1 -+#endif -+ -+#define COPYIN(u, k, n, m) \ -+ copy_from_user((void*)(k), (const void*)(u), (n)) -+#define COPYOUT(k, u, n, m) \ -+ copy_to_user((void*)(u), (const void*)(k), (n)) -+ -+/* -+ * Be nice and get ourselves out of the way of other drivers. -+ * Note that if all the other drivers are there, then the only -+ * thing we'd attach to that they wouldn't would be the obsolete -+ * and unavailable 1240 or the 23XX. -+ */ -+#ifdef CONFIG_SCSI_QLOGIC_ISP -+#define ISP_DISABLE_1020_SUPPORT 1 -+#endif -+#ifdef CONFIG_SCSI_QLOGIC_FC -+#define ISP_DISABLE_2100_SUPPORT 1 -+#define ISP_DISABLE_2200_SUPPORT 1 -+#endif -+#ifdef CONFIG_SCSI_QLOGIC_1280 -+#define ISP_DISABLE_1080_SUPPORT 1 -+#define ISP_DISABLE_12160_SUPPORT 1 -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+#include -+#include -+#else -+#include -+#endif -+#include -+#include -+#include -+#include "scsi.h" -+#include "hosts.h" -+ -+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,2,14) -+#define DECLARE_MUTEX_LOCKED(sem) struct semaphore sem = MUTEX_LOCKED -+#define __set_current_state(state_value) \ -+ do { current->state = (state_value); } while (0) -+static __inline void daemonize(void); -+static __inline void daemonize(void) -+{ -+ struct fs_struct *fs; -+ -+ exit_mm(current); -+ current->session = 1; -+ current->pgrp = 1; -+ current->tty = NULL; -+ exit_fs(current); /* current->fs->count--; */ -+ fs = init_task.fs; -+ current->fs = fs; -+ atomic_inc(&fs->count); -+} -+#endif -+/* -+ * These bits and pieces of keeping track of Linux versions -+ * and some of the various foo items for locking/unlocking -+ * gratefully borrowed from (amongst others) Doug Ledford -+ * and Gerard Roudier. -+ */ -+ -+#define PWRB(p, o, r) pci_write_config_byte(p->pci_dev, o, r) -+#define PWRW(p, o, r) pci_write_config_word(p->pci_dev, o, r) -+#define PWRL(p, o, r) pci_write_config_dword(p->pci_dev, o, r) -+#define PRDW(p, o, r) pci_read_config_word(p->pci_dev, o, r) -+#define PRDD(p, o, r) pci_read_config_dword(p->pci_dev, o, r) -+#define PRDB(p, o, r) pci_read_config_byte(p->pci_dev, o, r) -+ -+#ifndef bus_dvma_to_mem -+#if defined (__alpha__) -+#define bus_dvma_to_mem(p) ((p) & 0xfffffffful) -+#else -+#define bus_dvma_to_mem(p) (p) -+#endif -+#endif -+ -+#if defined (__powerpc__) -+#undef __pa -+#define __pa(x) x -+#endif -+#if defined (__i386__) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+#undef __pa -+#define __pa(x) x -+#endif -+#if defined (__sparc__) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+#undef __pa -+#define __pa(x) x -+#endif -+#if defined (__alpha__) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+#undef __pa -+#define __pa(x) x -+#endif -+ -+/* -+ * Efficiency- get rid of SBus code && tests unless we need them. -+ */ -+#if defined(__sparcv9__ ) || defined(__sparc__) -+#define ISP_SBUS_SUPPORTED 1 -+#else -+#define ISP_SBUS_SUPPORTED 0 -+#endif -+ -+#define ISP_PLATFORM_VERSION_MAJOR 2 -+#define ISP_PLATFORM_VERSION_MINOR 1 -+ -+#ifndef BIG_ENDIAN -+#define BIG_ENDIAN 4321 -+#endif -+#ifndef LITTLE_ENDIAN -+#define LITTLE_ENDIAN 1234 -+#endif -+ -+#ifdef __BIG_ENDIAN -+#define BYTE_ORDER BIG_ENDIAN -+#endif -+#ifdef __LITTLE_ENDIAN -+#define BYTE_ORDER LITTLE_ENDIAN -+#endif -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+#define DMA_ADDR_T unsigned long -+#define QLA_SG_C(sg) sg->length -+#define QLA_SG_A(sg) virt_to_bus(sg->address) -+#else -+#define DMA_ADDR_T dma_addr_t -+#define QLA_SG_C(sg) sg_dma_len(sg) -+#define QLA_SG_A(sg) sg_dma_address(sg) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,16) -+#define DMA_HTYPE_T char * -+#define QLA_HANDLE(cmd) (cmd)->SCp.ptr -+#else -+#define DMA_HTYPE_T dma_addr_t -+#define QLA_HANDLE(cmd) (cmd)->SCp.dma_handle -+#endif -+#endif -+ -+#define HANDLE_LOOPSTATE_IN_OUTER_LAYERS 1 -+#ifdef min -+#undef min -+#endif -+#ifdef max -+#undef max -+#endif -+ -+ -+/* -+ * Normally this should be taken care of by typedefs, -+ * but linux includes are a complete dog's breakfast. -+ */ -+ -+#define u_int8_t unsigned char -+#define u_int16_t unsigned short -+#define u_int32_t unsigned int -+#if BITS_PER_LONG == 64 -+#define u_int64_t unsigned long -+#else -+#define u_int64_t unsigned long long -+#endif -+#define int8_t char -+#define int16_t short -+#define int32_t int -+#define u_long unsigned long -+#define u_int unsigned int -+#define u_char unsigned char -+typedef u_long vm_offset_t; -+ -+#ifdef LINUX_ISP_TARGET_MODE -+#define DEFAULT_DEVICE_TYPE 3 -+#define NTGT_CMDS 256 -+ -+#define _WIX(isp, b, ix) (((b << 6)) | (ix >> 5)) -+#define _BIX(isp, ix) (1 << (ix & 0x1f)) -+ -+#define LUN_BTST(isp, b, ix) \ -+ (((isp)->isp_osinfo.lunbmap[_WIX(isp, b, ix)] & _BIX(isp, ix)) != 0) -+ -+#define LUN_BSET(isp, b, ix) \ -+ isp->isp_osinfo.lunbmap[_WIX(isp, b, ix)] |= _BIX(isp, ix) -+ -+#define LUN_BCLR(isp, b, ix) \ -+ isp->isp_osinfo.lunbmap[_WIX(isp, b, ix)] &= ~_BIX(isp, ix) -+ -+#endif -+ -+typedef struct { -+ enum { -+ ISP_THREAD_NIL=1, -+ ISP_THREAD_FC_RESCAN, -+ ISP_THREAD_REINIT, -+ ISP_THREAD_FW_CRASH_DUMP, -+ ISP_THREAD_EXIT -+ } thread_action; -+ struct semaphore * thread_waiter; -+} isp_thread_action_t; -+#define MAX_THREAD_ACTION 10 -+ -+union pstore; -+struct isposinfo { -+ struct ispsoftc * isp_next; -+ struct Scsi_Host * host; -+ Scsi_Cmnd *wqnext, *wqtail; -+ Scsi_Cmnd *dqnext, *dqtail; -+ union pstore *storep; -+ char hbaname[16]; -+ unsigned short instance; -+ unsigned short wqcnt; -+ unsigned short wqhiwater; -+ unsigned short hiwater; -+ struct timer_list timer; -+ struct timer_list _mbtimer; -+ struct semaphore _mbox_sem; -+ struct semaphore _mbox_c_sem; -+ struct semaphore _fcs_sem; -+ spinlock_t slock; -+ unsigned volatile int -+ _downcnt : 8, -+ : 15, -+ _isopen : 1, -+ _deadloop : 1, -+ _draining : 1, -+ _blocked : 1, -+ _fcrswdog : 1, -+ _fcrspend : 1, -+ _dogactive : 1, -+ _mbox_waiting : 1, -+ _mbintsok : 1; -+ void * misc[8]; /* private platform variant usage */ -+ unsigned long _iflags; -+ struct task_struct * task_thread; -+ struct semaphore * task_request; -+ struct semaphore * task_ctl_sem; -+ spinlock_t tlock; -+ unsigned int nt_actions; -+ unsigned int device_id; -+ isp_thread_action_t t_actions[MAX_THREAD_ACTION]; -+#ifdef LINUX_ISP_TARGET_MODE -+#define TM_WANTED 0x08 -+#define TM_BUSY 0x04 -+#define TM_TMODE_ENABLED 0x03 -+ u_int32_t rollinfo : 16, -+ rstatus : 8, -+ : 3, -+ hcb : 1, -+ tmflags : 4; -+ struct semaphore tgt_inisem; -+ struct semaphore * rsemap; -+ /* -+ * This is very inefficient, but is in fact big enough -+ * to cover a complete bitmap for Fibre Channel, as well -+ * as the dual bus SCSI cards. This works out without -+ * overflow easily because the most you can enable -+ * for the SCSI cards is 64 luns (x 2 busses). -+ * -+ * For Fibre Channel, we can run the max luns up to 16384 -+ * but we'll default to the minimum we can support here. -+ */ -+#define TM_MAX_LUN_FC 128 -+#define TM_MAX_LUN_SCSI 64 -+ u_int32_t lunbmap[TM_MAX_LUN_FC >> 5]; -+ struct tmd_cmd * pending_t; -+ struct tmd_cmd * tfreelist; -+ struct tmd_cmd * pool; -+#endif -+}; -+#define mbtimer isp_osinfo._mbtimer -+#define dogactive isp_osinfo._dogactive -+#define mbox_sem isp_osinfo._mbox_sem -+#define mbox_c_sem isp_osinfo._mbox_c_sem -+#define fcs_sem isp_osinfo._fcs_sem -+#define mbintsok isp_osinfo._mbintsok -+#define mbox_waiting isp_osinfo._mbox_waiting -+#define isp_pbuf isp_osinfo._pbuf -+#define isp_fcrspend isp_osinfo._fcrspend -+#define isp_fcrswdog isp_osinfo._fcrswdog -+#define isp_blocked isp_osinfo._blocked -+#define isp_draining isp_osinfo._draining -+#define isp_downcnt isp_osinfo._downcnt -+#define isp_isopen isp_osinfo._isopen -+#define isp_deadloop isp_osinfo._deadloop -+ -+#define iflags isp_osinfo._iflags -+ -+#define SEND_THREAD_EVENT(isp, action, dowait) \ -+if (isp->isp_osinfo.task_request) { \ -+ unsigned long flags; \ -+ spin_lock_irqsave(&isp->isp_osinfo.tlock, flags); \ -+ if (isp->isp_osinfo.nt_actions >= MAX_THREAD_ACTION) { \ -+ spin_unlock_irqrestore(&isp->isp_osinfo.tlock, flags); \ -+ isp_prt(isp, ISP_LOGERR, "thread event overflow"); \ -+ } else if (action == ISP_THREAD_FC_RESCAN && isp->isp_fcrspend) { \ -+ spin_unlock_irqrestore(&isp->isp_osinfo.tlock, flags); \ -+ } else { \ -+ DECLARE_MUTEX_LOCKED(sem); \ -+ isp_thread_action_t *tap; \ -+ tap = &isp->isp_osinfo.t_actions[isp->isp_osinfo.nt_actions++]; \ -+ tap->thread_action = action; \ -+ if (dowait) \ -+ tap->thread_waiter = &sem; \ -+ else \ -+ tap->thread_waiter = 0; \ -+ if (action == ISP_THREAD_FC_RESCAN) \ -+ isp->isp_fcrspend = 1; \ -+ up(isp->isp_osinfo.task_request); \ -+ spin_unlock_irqrestore(&isp->isp_osinfo.tlock, flags); \ -+ if (dowait) { \ -+ down(&sem); \ -+ isp_prt(isp, ISP_LOGDEBUG1, \ -+ "action %d done from %p", action, &sem); \ -+ } else { \ -+ isp_prt(isp, ISP_LOGDEBUG1, \ -+ "action %d sent", action); \ -+ } \ -+ } \ -+} -+ -+/* -+ * Locking macros... -+ */ -+#define ISP_LOCK_INIT(isp) spin_lock_init(&isp->isp_osinfo.slock) -+#define ISP_LOCK_SOFTC(isp) { \ -+ unsigned long _flags; \ -+ spin_lock_irqsave(&isp->isp_osinfo.slock, _flags); \ -+ isp->iflags = _flags; \ -+ } -+#define ISP_UNLK_SOFTC(isp) { \ -+ unsigned long _flags = isp->iflags; \ -+ spin_unlock_irqrestore(&isp->isp_osinfo.slock, _flags); \ -+ } -+ -+#define ISP_ILOCK_SOFTC ISP_LOCK_SOFTC -+#define ISP_IUNLK_SOFTC ISP_UNLK_SOFTC -+#define ISP_IGET_LK_SOFTC ISP_LOCK_SOFTC -+#define ISP_DROP_LK_SOFTC ISP_UNLK_SOFTC -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+#define ISP_LOCK_SCSI_DONE(isp) { \ -+ unsigned long _flags; \ -+ spin_lock_irqsave(&io_request_lock, _flags); \ -+ isp->iflags = _flags; \ -+ } -+#define ISP_UNLK_SCSI_DONE(isp) { \ -+ unsigned long _flags = isp->iflags; \ -+ spin_unlock_irqrestore(&io_request_lock, _flags); \ -+ } -+#else -+#define ISP_LOCK_SCSI_DONE(isp) do { } while(0) -+#define ISP_UNLK_SCSI_DONE(isp) do { } while(0) -+#endif -+#define ISP_LOCKU_SOFTC ISP_ILOCK_SOFTC -+#define ISP_UNLKU_SOFTC ISP_IUNLK_SOFTC -+#define ISP_TLOCK_INIT(isp) spin_lock_init(&isp->isp_osinfo.tlock) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+#define ISP_DRIVER_ENTRY_LOCK(isp) spin_unlock_irq(&io_request_lock) -+#define ISP_DRIVER_EXIT_LOCK(isp) spin_lock_irq(&io_request_lock) -+#else -+#define ISP_DRIVER_ENTRY_LOCK(isp) \ -+ spin_unlock_irq(isp->isp_osinfo.host->host_lock) -+#define ISP_DRIVER_EXIT_LOCK(isp) \ -+ spin_lock_irq(isp->isp_osinfo.host->host_lock) -+#endif -+ -+#define ISP_MUST_POLL(isp) (in_interrupt() || isp->mbintsok == 0) -+/* -+ * Misc SCSI defines -+ */ -+#define MSG_SIMPLE_Q_TAG 0x21 -+#define MSG_HEAD_OF_Q_TAG 0x22 -+#define MSG_ORDERED_Q_TAG 0x23 -+ -+/* -+ * Required Macros/Defines -+ */ -+ -+#define INLINE __inline -+ -+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,18) && \ -+ defined(CONFIG_HIGHMEM64G) && !defined(LINUX_ISP_TARGET_MODE) -+#define ISP_DAC_SUPPORTED 1 -+#else -+#define ISP_DAC_SUPPORTED 0 -+#endif -+ -+#define ISP2100_SCRLEN 0x800 -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+#define MEMZERO _isp_memzero -+#define MEMCPY _isp_memcpy -+#else -+#define MEMZERO(b, a) memset(b, 0, a) -+#define MEMCPY memcpy -+#endif -+#define SNPRINTF isp_snprintf -+#define USEC_DELAY _isp_usec_delay -+#define USEC_SLEEP(isp, x) \ -+ ISP_DROP_LK_SOFTC(isp); \ -+ __set_current_state(TASK_UNINTERRUPTIBLE); \ -+ (void) schedule_timeout(_usec_to_jiffies(x)); \ -+ ISP_IGET_LK_SOFTC(isp) -+ -+#define NANOTIME_T struct timeval -+/* for prior to 2.2.19, use do_gettimeofday, and, well, it'll be inaccurate */ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,18) -+#define GET_NANOTIME(ptr) \ -+ (ptr)->tv_sec = 0, (ptr)->tv_usec = 0, get_fast_time(ptr) -+#else -+#define GET_NANOTIME(ptr) \ -+ (ptr)->tv_sec = 0, (ptr)->tv_usec = 0, do_gettimeofday(ptr) -+#endif -+#define GET_NANOSEC(x) \ -+ ((u_int64_t) ((((u_int64_t)(x)->tv_sec) * 1000000 + (x)->tv_usec))) -+#define NANOTIME_SUB _isp_microtime_sub -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+#define MAXISPREQUEST(isp) 256 -+#else -+#define MAXISPREQUEST(isp) ((IS_FC(isp) || IS_ULTRA2(isp))? 1024 : 256) -+#endif -+ -+#if defined(__i386__) -+#define MEMORYBARRIER(isp, type, offset, size) barrier() -+#elif defined(__alpha__) -+#define MEMORYBARRIER(isp, type, offset, size) mb() -+#elif defined(__sparc__) -+#define MEMORYBARRIER(isp, type, offset, size) mb() -+#elif defined(__powerpc__) -+#define MEMORYBARRIER(isp, type, offset, size) \ -+ __asm__ __volatile__("eieio" ::: "memory") -+#else -+# ifdef mb -+# define MEMORYBARRIER(isp, type, offset, size) mb() -+# else -+# define MEMORYBARRIER(isp, type, offset, size) barrier() -+# endif -+#endif -+ -+#define MBOX_ACQUIRE(isp) \ -+ /* \ -+ * Try and acquire semaphore the easy way first- \ -+ * with our lock already held. \ -+ */ \ -+ if (down_trylock(&isp->mbox_sem)) { \ -+ if (in_interrupt()) { \ -+ mbp->param[0] = MBOX_HOST_INTERFACE_ERROR; \ -+ isp_prt(isp, ISP_LOGERR, "cannot acquire MBOX sema"); \ -+ return; \ -+ } \ -+ ISP_DROP_LK_SOFTC(isp); \ -+ down(&isp->mbox_sem); \ -+ ISP_IGET_LK_SOFTC(isp); \ -+ } -+ -+#define MBOX_WAIT_COMPLETE(isp) \ -+ if (ISP_MUST_POLL(isp)) { \ -+ int j, lim = 5000000; \ -+ if (isp->isp_mbxwrk0) { \ -+ lim *= 12; \ -+ } \ -+ for (j = 0; j < 5000000; j += 100) { \ -+ u_int16_t isr, sema, mbox; \ -+ if (isp->isp_mboxbsy == 0) { \ -+ break; \ -+ } \ -+ if (ISP_READ_ISR(isp, &isr, &sema, &mbox)) { \ -+ isp_intr(isp, isr, sema, mbox); \ -+ if (isp->isp_mboxbsy == 0) { \ -+ break; \ -+ } \ -+ } \ -+ ISP_DROP_LK_SOFTC(isp); \ -+ udelay(100); \ -+ ISP_IGET_LK_SOFTC(isp); \ -+ } \ -+ if (isp->isp_mboxbsy != 0) { \ -+ isp_prt(isp, ISP_LOGWARN, \ -+ "Polled Mailbox Command (0x%x) Timeout", \ -+ isp->isp_lastmbxcmd); \ -+ isp->isp_mboxbsy = 0; \ -+ } \ -+ } else { \ -+ int lim = (isp->isp_mbxwrk0)? 60 : 5; \ -+ init_timer(&isp->mbtimer); \ -+ isp->mbtimer.data = (unsigned long) isp; \ -+ isp->mbtimer.function = isplinux_mbtimer; \ -+ isp->mbtimer.expires = jiffies + (lim * HZ); \ -+ add_timer(&isp->mbtimer); \ -+ isp->mbox_waiting = 1; \ -+ ISP_DROP_LK_SOFTC(isp); \ -+ down(&isp->mbox_c_sem); \ -+ ISP_IGET_LK_SOFTC(isp); \ -+ isp->mbox_waiting = 0; \ -+ del_timer(&isp->mbtimer); \ -+ if (isp->isp_mboxbsy != 0) { \ -+ isp_prt(isp, ISP_LOGWARN, \ -+ "Interrupting Mailbox Command (0x%x) Timeout",\ -+ isp->isp_lastmbxcmd); \ -+ isp->isp_mboxbsy = 0; \ -+ } \ -+ } -+ -+#define MBOX_NOTIFY_COMPLETE(isp) \ -+ if (isp->mbox_waiting) { \ -+ isp->mbox_waiting = 0; \ -+ up(&isp->mbox_c_sem); \ -+ } \ -+ isp->isp_mboxbsy = 0 -+ -+#define MBOX_RELEASE(isp) up(&isp->mbox_sem) -+ -+#define FC_SCRATCH_ACQUIRE(isp) \ -+ /* \ -+ * Try and acquire semaphore the easy way first- \ -+ * with our lock already held. \ -+ */ \ -+ if (in_interrupt()) { \ -+ while (down_trylock(&isp->fcs_sem)) { \ -+ ISP_DROP_LK_SOFTC(isp); \ -+ USEC_DELAY(5000); \ -+ ISP_IGET_LK_SOFTC(isp); \ -+ } \ -+ } else { \ -+ ISP_DROP_LK_SOFTC(isp); \ -+ down(&isp->fcs_sem); \ -+ ISP_IGET_LK_SOFTC(isp); \ -+ } -+ -+#define FC_SCRATCH_RELEASE(isp) up(&isp->fcs_sem) -+ -+ -+#ifndef SCSI_GOOD -+#define SCSI_GOOD 0x0 -+#endif -+#ifndef SCSI_CHECK -+#define SCSI_CHECK 0x2 -+#endif -+#ifndef SCSI_BUSY -+#define SCSI_BUSY 0x8 -+#endif -+#ifndef SCSI_QFULL -+#define SCSI_QFULL 0x28 -+#endif -+ -+#define XS_T Scsi_Cmnd -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+#define XS_HOST(Cmnd) Cmnd->device->host -+#define XS_ISP(Cmnd) ((struct ispsoftc *) (Cmnd)->host->hostdata) -+#define XS_CHANNEL(Cmnd) (Cmnd)->channel -+#define XS_TGT(Cmnd) (Cmnd)->target -+#define XS_LUN(Cmnd) (Cmnd)->lun -+#else -+#define XS_HOST(Cmnd) Cmnd->device->host -+#define XS_ISP(Cmnd) \ -+ ((struct ispsoftc *) (Cmnd)->device->host->hostdata) -+#define XS_CHANNEL(Cmnd) (Cmnd)->device->channel -+#define XS_TGT(Cmnd) (Cmnd)->device->id -+#define XS_LUN(Cmnd) (Cmnd)->device->lun -+#endif -+#define XS_CDBP(Cmnd) (Cmnd)->cmnd -+#define XS_CDBLEN(Cmnd) (Cmnd)->cmd_len -+#define XS_XFRLEN(Cmnd) (Cmnd)->request_bufflen -+#define XS_TIME(Cmnd) (Cmnd)->timeout -+#define XS_RESID(Cmnd) (Cmnd)->SCp.this_residual -+#define XS_STSP(Cmnd) (&(Cmnd)->SCp.Status) -+#define XS_SNSP(Cmnd) (Cmnd)->sense_buffer -+#define XS_SNSLEN(Cmnd) (sizeof (Cmnd)->sense_buffer) -+#define XS_SNSKEY(Cmnd) ((Cmnd)->sense_buffer[2] & 0xf) -+#define XS_TAG_P(Cmnd) (Cmnd->device->tagged_supported != 0) -+#define XS_TAG_TYPE(xs) REQFLAG_STAG -+ -+#define XS_SETERR(xs, v) \ -+ if ((v) == HBA_TGTBSY) { \ -+ (xs)->SCp.Status = SCSI_BUSY; \ -+ } else { \ -+ (xs)->result &= ~0xff0000; \ -+ (xs)->result |= ((v) << 16); \ -+ } -+ -+# define HBA_NOERROR DID_OK -+# define HBA_BOTCH DID_ERROR -+# define HBA_CMDTIMEOUT DID_TIME_OUT -+# define HBA_SELTIMEOUT DID_NO_CONNECT -+# define HBA_TGTBSY 123456 /* special handling */ -+# define HBA_BUSRESET DID_RESET -+# define HBA_ABORTED DID_ABORT -+# define HBA_DATAOVR DID_ERROR -+# define HBA_ARQFAIL DID_ERROR -+ -+#define XS_ERR(xs) host_byte((xs)->result) -+ -+#define XS_NOERR(xs) host_byte((xs)->result) == DID_OK -+ -+#define XS_INITERR(xs) (xs)->result = 0, (xs)->SCp.Status = 0 -+ -+#define XS_SAVE_SENSE(Cmnd, sp) \ -+ MEMCPY(&Cmnd->sense_buffer, sp->req_sense_data, \ -+ min(sizeof Cmnd->sense_buffer, sp->req_sense_len)) -+ -+#define XS_SET_STATE_STAT(a, b, c) -+ -+#define DEFAULT_IID(x) 7 -+#define DEFAULT_LOOPID(x) 111 -+#define DEFAULT_NODEWWN(isp) (isp)->isp_defwwnn -+#define DEFAULT_PORTWWN(isp) (isp)->isp_defwwpn -+#define DEFAULT_FRAME_SIZE(isp) \ -+ (IS_SCSI(isp)? 0 : isp->isp_osinfo.storep->fibre_scsi.default_frame_size) -+#define DEFAULT_EXEC_ALLOC(isp) \ -+ (IS_SCSI(isp)? 0 : isp->isp_osinfo.storep->fibre_scsi.default_exec_alloc) -+#define ISP_NODEWWN(isp) (isp)->isp_nvramwwnn -+#define ISP_PORTWWN(isp) (isp)->isp_nvramwwpn -+ -+#define ISP_IOXPUT_8(isp, s, d) *(d) = s -+#define ISP_IOXPUT_16(isp, s, d) *(d) = cpu_to_le16(s) -+#define ISP_IOXPUT_32(isp, s, d) *(d) = cpu_to_le32(s) -+ -+#define ISP_IOXGET_8(isp, s, d) d = *(s) -+#define ISP_IOXGET_16(isp, s, d) d = le16_to_cpu(*((u_int16_t *)s)) -+#define ISP_IOXGET_32(isp, s, d) d = le32_to_cpu(*((u_int32_t *)s)) -+ -+#define ISP_SWIZZLE_NVRAM_WORD(isp, rp) *rp = le16_to_cpu(*rp) -+ -+ -+/* -+ * Includes of common header files -+ */ -+#include "ispreg.h" -+#include "ispvar.h" -+#include "ispmbox.h" -+ -+/* -+ * isp_osinfo definitions, extensions and shorthand. -+ */ -+ -+/* -+ * Parameter storage. The order of tags is important- sdparam && fcp -+ * must come first because isp->isp_params is set to point there... -+ */ -+union pstore { -+ struct { -+ sdparam _sdp[2]; /* they need to be sequential */ -+ u_char psc_opts[2][MAX_TARGETS]; -+ u_char dutydone; -+ } parallel_scsi; -+ struct { -+ fcparam fcp; -+ u_int64_t wwnn; -+ u_int64_t wwpn; -+ u_int64_t nvram_wwnn; -+ u_int64_t nvram_wwpn; -+ u_int16_t default_frame_size; -+ u_int16_t default_exec_throttle; -+ } fibre_scsi; -+}; -+#define isp_next isp_osinfo.isp_next -+#define isp_name isp_osinfo.hbaname -+#define isp_host isp_osinfo.host -+#define isp_unit isp_osinfo.instance -+#define isp_psco isp_osinfo.storep->parallel_scsi.psc_opts -+#define isp_dutydone isp_osinfo.storep->parallel_scsi.dutydone -+#define isp_defwwnn isp_osinfo.storep->fibre_scsi.wwnn -+#define isp_defwwpn isp_osinfo.storep->fibre_scsi.wwpn -+#define isp_nvramwwnn isp_osinfo.storep->fibre_scsi.nvram_wwnn -+#define isp_nvramwwpn isp_osinfo.storep->fibre_scsi.nvram_wwpn -+ -+/* -+ * Driver prototypes.. -+ */ -+void isplinux_timer(unsigned long); -+void isplinux_mbtimer(unsigned long); -+irqreturn_t isplinux_intr(int, void *, struct pt_regs *); -+void isplinux_common_init(struct ispsoftc *); -+#ifdef CONFIG_PROC_FS -+void isplinux_init_proc(struct ispsoftc *); -+void isplinux_undo_proc(struct ispsoftc *); -+#endif -+void isplinux_reinit(struct ispsoftc *); -+void isplinux_sqd(struct Scsi_Host *, Scsi_Device *); -+ -+int isp_drain_reset(struct ispsoftc *, char *); -+int isp_drain(struct ispsoftc *, char *); -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+static INLINE void _isp_memcpy(void *, void *, size_t); -+static INLINE void _isp_memzero(void *, size_t); -+#endif -+static INLINE u_int64_t _isp_microtime_sub(struct timeval *, struct timeval *); -+static INLINE void _isp_usec_delay(unsigned int); -+static INLINE unsigned long _usec_to_jiffies(unsigned int); -+ -+int isplinux_proc_info(char *, char **, off_t, int, int, int); -+int isplinux_detect(Scsi_Host_Template *); -+int isplinux_release(struct Scsi_Host *); -+#define ISPLINUX_RELEASE isplinux_release -+const char *isplinux_info(struct Scsi_Host *); -+int isplinux_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *)); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+int isplinux_biosparam(Disk *, kdev_t, int[]); -+#else -+int isplinux_biosparam(struct scsi_device *, struct block_device *, -+ sector_t, int[]); -+#endif -+ -+ -+/* -+ * Driver wide data... -+ */ -+extern int isp_debug; -+extern int isp_unit_seed; -+extern int isp_disable; -+extern int isp_nofwreload; -+extern int isp_nonvram; -+extern int isp_fcduplex; -+extern struct ispsoftc *isplist; -+extern const char *class3_roles[4]; -+ -+/* -+ * Platform private flags -+ */ -+#ifndef NULL -+#define NULL ((void *) 0) -+#endif -+ -+#define ISP_WATCH_TIME HZ -+ -+#ifndef min -+#define min(a,b) (((a)<(b))?(a):(b)) -+#endif -+#ifndef max -+#define max(a, b) (((a) > (b)) ? (a) : (b)) -+#endif -+#ifndef roundup -+#define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) -+#endif -+#ifndef ARGSUSED -+#define ARGSUSED(x) x = x -+#endif -+ -+ -+ -+ -+/* -+ * Platform specific 'inline' or support functions -+ */ -+ -+#ifdef __sparc__ -+#define _SBSWAP(isp, b, c) \ -+ if (isp->isp_bustype == ISP_BT_SBUS) { \ -+ u_int8_t tmp = b; \ -+ b = c; \ -+ c = tmp; \ -+ } -+#else -+#define _SBSWAP(a, b, c) -+#endif -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -+static INLINE void -+_isp_memcpy(void *to, void *from, size_t amt) -+{ -+ unsigned char *x = to; unsigned char *y = from; -+ while (amt-- != 0) *x++ = *y++; -+} -+ -+static INLINE void -+_isp_memzero(void *to, size_t amt) -+{ -+ unsigned char *x = to; -+ while (amt-- != 0) *x++ = 0; -+} -+ -+static INLINE unsigned long IspOrder(int); -+static INLINE unsigned long -+IspOrder(int nelem) -+{ -+ unsigned long order, rsize; -+ -+ order = 0; -+ rsize = PAGE_SIZE; -+ while (rsize < (unsigned long) ISP_QUEUE_SIZE(nelem)) { -+ order++; -+ rsize <<= 1; -+ } -+ return (order); -+} -+#endif -+ -+static INLINE u_int64_t -+_isp_microtime_sub(struct timeval *b, struct timeval *a) -+{ -+ u_int64_t elapsed; -+ struct timeval x = *b; -+ x.tv_sec -= a->tv_sec; -+ x.tv_usec -= a->tv_usec; -+ if (x.tv_usec < 0) { -+ x.tv_sec--; -+ x.tv_usec += 1000000; -+ } -+ if (x.tv_usec >= 1000000) { -+ x.tv_sec++; -+ x.tv_usec -= 1000000; -+ } -+ elapsed = GET_NANOSEC(&x); -+ if (elapsed == 0) -+ elapsed++; -+ if ((int64_t) elapsed < 0) /* !!!! */ -+ return (1000); -+ return (elapsed * 1000); -+} -+ -+static INLINE void -+_isp_usec_delay(unsigned int usecs) -+{ -+ while (usecs > 1000) { -+ mdelay(1); -+ usecs -= 1000; -+ } -+ if (usecs) -+ udelay(usecs); -+} -+ -+static INLINE unsigned long -+_usec_to_jiffies(unsigned int usecs) -+{ -+ struct timespec lt; -+ if (usecs == 0) -+ usecs++; -+ lt.tv_sec = 0; -+ lt.tv_nsec = usecs * 1000; -+ return (timespec_to_jiffies(<)); -+} -+ -+#define GetPages(a) __get_dma_pages(GFP_ATOMIC|GFP_DMA, a) -+#define RlsPages(a, b) free_pages((unsigned long) a, b) -+ -+char *isp_snprintf(char *, size_t, const char *, ...); -+ -+static INLINE void *isp_kalloc(size_t, int); -+static INLINE void *isp_kzalloc(size_t, int); -+static INLINE void isp_kfree(void *, size_t); -+ -+static INLINE void * -+isp_kalloc(size_t size, int flags) -+{ -+ void *ptr; -+ if (size > PAGE_SIZE) { -+ ptr = vmalloc(size); -+ } else { -+ ptr = kmalloc(size, flags); -+ } -+ return (ptr); -+} -+ -+static INLINE void * -+isp_kzalloc(size_t size, int flags) -+{ -+ void *ptr = isp_kalloc(size, flags); -+ if (ptr != NULL){ -+ memset(ptr, 0, size); -+ } -+ return (ptr); -+} -+ -+static INLINE void -+isp_kfree(void *ptr, size_t size) -+{ -+ if (size > PAGE_SIZE) { -+ vfree(ptr); -+ } else { -+ kfree(ptr); -+ } -+} -+ -+/* -+ * Common inline functions -+ */ -+ -+#include "isp_inline.h" -+ -+#ifdef ISP_TARGET_MODE -+void isp_attach_target(ispsoftc_t *); -+void isp_detach_target(ispsoftc_t *); -+int isp_target_async(struct ispsoftc *, int, int); -+int isp_target_notify(struct ispsoftc *, void *, u_int16_t *); -+#endif -+#ifdef LINUX_ISP_TARGET_MODE -+int isp_en_dis_lun(struct ispsoftc *, int, int, int, int); -+#endif -+/* -+ * Config data -+ */ -+ -+int isplinux_abort(Scsi_Cmnd *); -+int isplinux_bdr(Scsi_Cmnd *); -+int isplinux_sreset(Scsi_Cmnd *); -+int isplinux_hreset(Scsi_Cmnd *); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+#define QLOGICISP { \ -+ next: NULL, \ -+ module: NULL, \ -+ proc_info: isplinux_proc_info, \ -+ name: "Qlogic ISP 10X0/2X00", \ -+ detect: isplinux_detect, \ -+ release: ISPLINUX_RELEASE, \ -+ info: isplinux_info, \ -+ queuecommand: isplinux_queuecommand, \ -+ use_new_eh_code: 1, \ -+ eh_abort_handler: isplinux_abort, \ -+ eh_device_reset_handler: isplinux_bdr, \ -+ eh_bus_reset_handler: isplinux_sreset, \ -+ eh_host_reset_handler: isplinux_hreset, \ -+ bios_param: isplinux_biosparam, \ -+ can_queue: 1, \ -+ sg_tablesize: SG_ALL, \ -+ use_clustering: ENABLE_CLUSTERING, \ -+ cmd_per_lun: 1 \ -+} -+#else -+#define QLOGICISP { \ -+ module: NULL, \ -+ proc_info: isplinux_proc_info, \ -+ name: "Qlogic ISP 10X0/2X00", \ -+ detect: isplinux_detect, \ -+ release: ISPLINUX_RELEASE, \ -+ info: isplinux_info, \ -+ queuecommand: isplinux_queuecommand, \ -+ eh_abort_handler: isplinux_abort, \ -+ eh_device_reset_handler: isplinux_bdr, \ -+ eh_bus_reset_handler: isplinux_sreset, \ -+ eh_host_reset_handler: isplinux_hreset, \ -+ bios_param: isplinux_biosparam, \ -+ can_queue: 1, \ -+ sg_tablesize: SG_ALL, \ -+ use_clustering: ENABLE_CLUSTERING, \ -+ cmd_per_lun: 1, \ -+ slave_configure: isplinux_slave_configure, \ -+} -+#endif -+/* -+ * mode: c -+ * Local variables: -+ * c-indent-level: 4 -+ * c-brace-imaginary-offset: 0 -+ * c-brace-offset: -4 -+ * c-argdecl-indent: 4 -+ * c-label-offset: -4 -+ * c-continued-statement-offset: 4 -+ * c-continued-brace-offset: 0 -+ * End: -+ */ -+#endif /* _ISP_LINUX_H */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/ispmbox.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,938 @@ -+/* @(#)ispmbox.h 1.24 */ -+/* -+ * Mailbox and Queue Entry Definitions for for Qlogic ISP SCSI adapters. -+ * -+ * Copyright (c) 1997, 1998, 1999, 2000 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice immediately at the beginning of the file, without modification, -+ * this list of conditions, and the following disclaimer. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ */ -+#ifndef _ISPMBOX_H -+#define _ISPMBOX_H -+ -+/* -+ * Mailbox Command Opcodes -+ */ -+#define MBOX_NO_OP 0x0000 -+#define MBOX_LOAD_RAM 0x0001 -+#define MBOX_EXEC_FIRMWARE 0x0002 -+#define MBOX_DUMP_RAM 0x0003 -+#define MBOX_WRITE_RAM_WORD 0x0004 -+#define MBOX_READ_RAM_WORD 0x0005 -+#define MBOX_MAILBOX_REG_TEST 0x0006 -+#define MBOX_VERIFY_CHECKSUM 0x0007 -+#define MBOX_ABOUT_FIRMWARE 0x0008 -+ /* 9 */ -+ /* a */ -+ /* b */ -+ /* c */ -+ /* d */ -+#define MBOX_CHECK_FIRMWARE 0x000e -+#define MBOX_READ_RAM_WORD_EXTENDED 0x000f -+#define MBOX_INIT_REQ_QUEUE 0x0010 -+#define MBOX_INIT_RES_QUEUE 0x0011 -+#define MBOX_EXECUTE_IOCB 0x0012 -+#define MBOX_WAKE_UP 0x0013 -+#define MBOX_STOP_FIRMWARE 0x0014 -+#define MBOX_ABORT 0x0015 -+#define MBOX_ABORT_DEVICE 0x0016 -+#define MBOX_ABORT_TARGET 0x0017 -+#define MBOX_BUS_RESET 0x0018 -+#define MBOX_STOP_QUEUE 0x0019 -+#define MBOX_START_QUEUE 0x001a -+#define MBOX_SINGLE_STEP_QUEUE 0x001b -+#define MBOX_ABORT_QUEUE 0x001c -+#define MBOX_GET_DEV_QUEUE_STATUS 0x001d -+ /* 1e */ -+#define MBOX_GET_FIRMWARE_STATUS 0x001f -+#define MBOX_GET_INIT_SCSI_ID 0x0020 -+#define MBOX_GET_SELECT_TIMEOUT 0x0021 -+#define MBOX_GET_RETRY_COUNT 0x0022 -+#define MBOX_GET_TAG_AGE_LIMIT 0x0023 -+#define MBOX_GET_CLOCK_RATE 0x0024 -+#define MBOX_GET_ACT_NEG_STATE 0x0025 -+#define MBOX_GET_ASYNC_DATA_SETUP_TIME 0x0026 -+#define MBOX_GET_SBUS_PARAMS 0x0027 -+#define MBOX_GET_PCI_PARAMS MBOX_GET_SBUS_PARAMS -+#define MBOX_GET_TARGET_PARAMS 0x0028 -+#define MBOX_GET_DEV_QUEUE_PARAMS 0x0029 -+#define MBOX_GET_RESET_DELAY_PARAMS 0x002a -+ /* 2b */ -+ /* 2c */ -+ /* 2d */ -+ /* 2e */ -+ /* 2f */ -+#define MBOX_SET_INIT_SCSI_ID 0x0030 -+#define MBOX_SET_SELECT_TIMEOUT 0x0031 -+#define MBOX_SET_RETRY_COUNT 0x0032 -+#define MBOX_SET_TAG_AGE_LIMIT 0x0033 -+#define MBOX_SET_CLOCK_RATE 0x0034 -+#define MBOX_SET_ACT_NEG_STATE 0x0035 -+#define MBOX_SET_ASYNC_DATA_SETUP_TIME 0x0036 -+#define MBOX_SET_SBUS_CONTROL_PARAMS 0x0037 -+#define MBOX_SET_PCI_PARAMETERS 0x0037 -+#define MBOX_SET_TARGET_PARAMS 0x0038 -+#define MBOX_SET_DEV_QUEUE_PARAMS 0x0039 -+#define MBOX_SET_RESET_DELAY_PARAMS 0x003a -+ /* 3b */ -+ /* 3c */ -+ /* 3d */ -+ /* 3e */ -+ /* 3f */ -+#define MBOX_RETURN_BIOS_BLOCK_ADDR 0x0040 -+#define MBOX_WRITE_FOUR_RAM_WORDS 0x0041 -+#define MBOX_EXEC_BIOS_IOCB 0x0042 -+#define MBOX_SET_FW_FEATURES 0x004a -+#define MBOX_GET_FW_FEATURES 0x004b -+#define FW_FEATURE_FAST_POST 0x1 -+#define FW_FEATURE_LVD_NOTIFY 0x2 -+#define FW_FEATURE_RIO_32BIT 0x4 -+#define FW_FEATURE_RIO_16BIT 0x8 -+ -+#define MBOX_INIT_REQ_QUEUE_A64 0x0052 -+#define MBOX_INIT_RES_QUEUE_A64 0x0053 -+ -+#define MBOX_ENABLE_TARGET_MODE 0x0055 -+#define ENABLE_TARGET_FLAG 0x8000 -+#define ENABLE_TQING_FLAG 0x0004 -+#define ENABLE_MANDATORY_DISC 0x0002 -+#define MBOX_GET_TARGET_STATUS 0x0056 -+ -+/* These are for the ISP2X00 FC cards */ -+#define MBOX_GET_LOOP_ID 0x0020 -+#define MBOX_GET_FIRMWARE_OPTIONS 0x0028 -+#define MBOX_SET_FIRMWARE_OPTIONS 0x0038 -+#define MBOX_GET_RESOURCE_COUNT 0x0042 -+#define MBOX_ENHANCED_GET_PDB 0x0047 -+#define MBOX_EXEC_COMMAND_IOCB_A64 0x0054 -+#define MBOX_INIT_FIRMWARE 0x0060 -+#define MBOX_GET_INIT_CONTROL_BLOCK 0x0061 -+#define MBOX_INIT_LIP 0x0062 -+#define MBOX_GET_FC_AL_POSITION_MAP 0x0063 -+#define MBOX_GET_PORT_DB 0x0064 -+#define MBOX_CLEAR_ACA 0x0065 -+#define MBOX_TARGET_RESET 0x0066 -+#define MBOX_CLEAR_TASK_SET 0x0067 -+#define MBOX_ABORT_TASK_SET 0x0068 -+#define MBOX_GET_FW_STATE 0x0069 -+#define MBOX_GET_PORT_NAME 0x006A -+#define MBOX_GET_LINK_STATUS 0x006B -+#define MBOX_INIT_LIP_RESET 0x006C -+#define MBOX_SEND_SNS 0x006E -+#define MBOX_FABRIC_LOGIN 0x006F -+#define MBOX_SEND_CHANGE_REQUEST 0x0070 -+#define MBOX_FABRIC_LOGOUT 0x0071 -+#define MBOX_INIT_LIP_LOGIN 0x0072 -+ -+#define MBOX_DRIVER_HEARTBEAT 0x005B -+#define MBOX_FW_HEARTBEAT 0x005C -+ -+#define MBOX_GET_SET_DATA_RATE 0x005D /* 23XX only */ -+#define MBGSD_GET_RATE 0 -+#define MBGSD_SET_RATE 1 -+#define MBGSD_ONEGB 0 -+#define MBGSD_TWOGB 1 -+#define MBGSD_AUTO 2 -+ -+ -+#define ISP2100_SET_PCI_PARAM 0x00ff -+ -+#define MBOX_BUSY 0x04 -+ -+typedef struct { -+ u_int16_t param[8]; -+} mbreg_t; -+ -+/* -+ * Mailbox Command Complete Status Codes -+ */ -+#define MBOX_COMMAND_COMPLETE 0x4000 -+#define MBOX_INVALID_COMMAND 0x4001 -+#define MBOX_HOST_INTERFACE_ERROR 0x4002 -+#define MBOX_TEST_FAILED 0x4003 -+#define MBOX_COMMAND_ERROR 0x4005 -+#define MBOX_COMMAND_PARAM_ERROR 0x4006 -+#define MBOX_PORT_ID_USED 0x4007 -+#define MBOX_LOOP_ID_USED 0x4008 -+#define MBOX_ALL_IDS_USED 0x4009 -+#define MBOX_NOT_LOGGED_IN 0x400A -+#define MBLOGALL 0x000f -+#define MBLOGNONE 0x0000 -+#define MBLOGMASK(x) ((x) & 0xf) -+ -+/* -+ * Asynchronous event status codes -+ */ -+#define ASYNC_BUS_RESET 0x8001 -+#define ASYNC_SYSTEM_ERROR 0x8002 -+#define ASYNC_RQS_XFER_ERR 0x8003 -+#define ASYNC_RSP_XFER_ERR 0x8004 -+#define ASYNC_QWAKEUP 0x8005 -+#define ASYNC_TIMEOUT_RESET 0x8006 -+#define ASYNC_DEVICE_RESET 0x8007 -+#define ASYNC_EXTMSG_UNDERRUN 0x800A -+#define ASYNC_SCAM_INT 0x800B -+#define ASYNC_HUNG_SCSI 0x800C -+#define ASYNC_KILLED_BUS 0x800D -+#define ASYNC_BUS_TRANSIT 0x800E /* LVD -> HVD, eg. */ -+#define ASYNC_LIP_OCCURRED 0x8010 -+#define ASYNC_LOOP_UP 0x8011 -+#define ASYNC_LOOP_DOWN 0x8012 -+#define ASYNC_LOOP_RESET 0x8013 -+#define ASYNC_PDB_CHANGED 0x8014 -+#define ASYNC_CHANGE_NOTIFY 0x8015 -+#define ASYNC_LIP_F8 0x8016 -+#define ASYNC_CMD_CMPLT 0x8020 -+#define ASYNC_CTIO_DONE 0x8021 -+#define ASYNC_IP_XMIT_DONE 0x8022 -+#define ASYNC_IP_RECV_DONE 0x8023 -+#define ASYNC_IP_BROADCAST 0x8024 -+#define ASYNC_IP_RCVQ_LOW 0x8025 -+#define ASYNC_IP_RCVQ_EMPTY 0x8026 -+#define ASYNC_IP_RECV_DONE_ALIGNED 0x8027 -+#define ASYNC_PTPMODE 0x8030 -+#define ASYNC_RIO1 0x8031 -+#define ASYNC_RIO2 0x8032 -+#define ASYNC_RIO3 0x8033 -+#define ASYNC_RIO4 0x8034 -+#define ASYNC_RIO5 0x8035 -+#define ASYNC_CONNMODE 0x8036 -+#define ISP_CONN_LOOP 1 -+#define ISP_CONN_PTP 2 -+#define ISP_CONN_BADLIP 3 -+#define ISP_CONN_FATAL 4 -+#define ISP_CONN_LOOPBACK 5 -+#define ASYNC_RIO_RESP 0x8040 -+#define ASYNC_RIO_COMP 0x8042 -+/* -+ * 2.01.31 2200 Only. Need Bit 13 in Mailbox 1 for Set Firmware Options -+ * mailbox command to enable this. -+ */ -+#define ASYNC_QFULL_SENT 0x8049 -+ -+/* -+ * Mailbox Usages -+ */ -+ -+#define WRITE_REQUEST_QUEUE_IN_POINTER(isp, value) \ -+ ISP_WRITE(isp, isp->isp_rqstinrp, value) -+ -+#define READ_REQUEST_QUEUE_OUT_POINTER(isp) \ -+ ISP_READ(isp, isp->isp_rqstoutrp) -+ -+#define READ_RESPONSE_QUEUE_IN_POINTER(isp) \ -+ ISP_READ(isp, isp->isp_respinrp) -+ -+#define WRITE_RESPONSE_QUEUE_OUT_POINTER(isp, value) \ -+ ISP_WRITE(isp, isp->isp_respoutrp, value) -+ -+/* -+ * Command Structure Definitions -+ */ -+ -+typedef struct { -+ u_int32_t ds_base; -+ u_int32_t ds_count; -+} ispds_t; -+ -+typedef struct { -+ u_int32_t ds_base; -+ u_int32_t ds_basehi; -+ u_int32_t ds_count; -+} ispds64_t; -+ -+#define DSTYPE_32BIT 0 -+#define DSTYPE_64BIT 1 -+typedef struct { -+ u_int16_t ds_type; /* 0-> ispds_t, 1-> ispds64_t */ -+ u_int32_t ds_segment; /* unused */ -+ u_int32_t ds_base; /* 32 bit address of DSD list */ -+} ispdslist_t; -+ -+ -+/* -+ * These elements get swizzled around for SBus instances. -+ */ -+#define ISP_SWAP8(a, b) { \ -+ u_int8_t tmp; \ -+ tmp = a; \ -+ a = b; \ -+ b = tmp; \ -+} -+typedef struct { -+ u_int8_t rqs_entry_type; -+ u_int8_t rqs_entry_count; -+ u_int8_t rqs_seqno; -+ u_int8_t rqs_flags; -+} isphdr_t; -+ -+/* RQS Flag definitions */ -+#define RQSFLAG_CONTINUATION 0x01 -+#define RQSFLAG_FULL 0x02 -+#define RQSFLAG_BADHEADER 0x04 -+#define RQSFLAG_BADPACKET 0x08 -+ -+/* RQS entry_type definitions */ -+#define RQSTYPE_REQUEST 0x01 -+#define RQSTYPE_DATASEG 0x02 -+#define RQSTYPE_RESPONSE 0x03 -+#define RQSTYPE_MARKER 0x04 -+#define RQSTYPE_CMDONLY 0x05 -+#define RQSTYPE_ATIO 0x06 /* Target Mode */ -+#define RQSTYPE_CTIO 0x07 /* Target Mode */ -+#define RQSTYPE_SCAM 0x08 -+#define RQSTYPE_A64 0x09 -+#define RQSTYPE_A64_CONT 0x0a -+#define RQSTYPE_ENABLE_LUN 0x0b /* Target Mode */ -+#define RQSTYPE_MODIFY_LUN 0x0c /* Target Mode */ -+#define RQSTYPE_NOTIFY 0x0d /* Target Mode */ -+#define RQSTYPE_NOTIFY_ACK 0x0e /* Target Mode */ -+#define RQSTYPE_CTIO1 0x0f /* Target Mode */ -+#define RQSTYPE_STATUS_CONT 0x10 -+#define RQSTYPE_T2RQS 0x11 -+#define RQSTYPE_IP_XMIT 0x13 -+#define RQSTYPE_T4RQS 0x15 -+#define RQSTYPE_ATIO2 0x16 /* Target Mode */ -+#define RQSTYPE_CTIO2 0x17 /* Target Mode */ -+#define RQSTYPE_CSET0 0x18 -+#define RQSTYPE_T3RQS 0x19 -+#define RQSTYPE_IP_XMIT_64 0x1b -+#define RQSTYPE_CTIO4 0x1e /* Target Mode */ -+#define RQSTYPE_CTIO3 0x1f /* Target Mode */ -+#define RQSTYPE_RIO1 0x21 -+#define RQSTYPE_RIO2 0x22 -+#define RQSTYPE_IP_RECV 0x23 -+#define RQSTYPE_IP_RECV_CONT 0x24 -+ -+ -+#define ISP_RQDSEG 4 -+typedef struct { -+ isphdr_t req_header; -+ u_int32_t req_handle; -+ u_int8_t req_lun_trn; -+ u_int8_t req_target; -+ u_int16_t req_cdblen; -+#define req_modifier req_cdblen /* marker packet */ -+ u_int16_t req_flags; -+ u_int16_t req_reserved; -+ u_int16_t req_time; -+ u_int16_t req_seg_count; -+ u_int8_t req_cdb[12]; -+ ispds_t req_dataseg[ISP_RQDSEG]; -+} ispreq_t; -+ -+#define ispreq64_t ispreqt3_t /* same as.... */ -+#define ISP_RQDSEG_A64 2 -+ -+/* -+ * A request packet can also be a marker packet. -+ */ -+#define SYNC_DEVICE 0 -+#define SYNC_TARGET 1 -+#define SYNC_ALL 2 -+ -+#define ISP_RQDSEG_T2 3 -+typedef struct { -+ isphdr_t req_header; -+ u_int32_t req_handle; -+ u_int8_t req_lun_trn; -+ u_int8_t req_target; -+ u_int16_t req_scclun; -+ u_int16_t req_flags; -+ u_int16_t _res2; -+ u_int16_t req_time; -+ u_int16_t req_seg_count; -+ u_int8_t req_cdb[16]; -+ u_int32_t req_totalcnt; -+ ispds_t req_dataseg[ISP_RQDSEG_T2]; -+} ispreqt2_t; -+ -+#define ISP_RQDSEG_T3 2 -+typedef struct { -+ isphdr_t req_header; -+ u_int32_t req_handle; -+ u_int8_t req_lun_trn; -+ u_int8_t req_target; -+ u_int16_t req_scclun; -+ u_int16_t req_flags; -+ u_int16_t _res2; -+ u_int16_t req_time; -+ u_int16_t req_seg_count; -+ u_int8_t req_cdb[16]; -+ u_int32_t req_totalcnt; -+ ispds64_t req_dataseg[ISP_RQDSEG_T3]; -+} ispreqt3_t; -+ -+/* req_flag values */ -+#define REQFLAG_NODISCON 0x0001 -+#define REQFLAG_HTAG 0x0002 -+#define REQFLAG_OTAG 0x0004 -+#define REQFLAG_STAG 0x0008 -+#define REQFLAG_TARGET_RTN 0x0010 -+ -+#define REQFLAG_NODATA 0x0000 -+#define REQFLAG_DATA_IN 0x0020 -+#define REQFLAG_DATA_OUT 0x0040 -+#define REQFLAG_DATA_UNKNOWN 0x0060 -+ -+#define REQFLAG_DISARQ 0x0100 -+#define REQFLAG_FRC_ASYNC 0x0200 -+#define REQFLAG_FRC_SYNC 0x0400 -+#define REQFLAG_FRC_WIDE 0x0800 -+#define REQFLAG_NOPARITY 0x1000 -+#define REQFLAG_STOPQ 0x2000 -+#define REQFLAG_XTRASNS 0x4000 -+#define REQFLAG_PRIORITY 0x8000 -+ -+typedef struct { -+ isphdr_t req_header; -+ u_int32_t req_handle; -+ u_int8_t req_lun_trn; -+ u_int8_t req_target; -+ u_int16_t req_cdblen; -+ u_int16_t req_flags; -+ u_int16_t _res1; -+ u_int16_t req_time; -+ u_int16_t req_seg_count; -+ u_int8_t req_cdb[44]; -+} ispextreq_t; -+ -+#define ISP_CDSEG 7 -+typedef struct { -+ isphdr_t req_header; -+ u_int32_t _res1; -+ ispds_t req_dataseg[ISP_CDSEG]; -+} ispcontreq_t; -+ -+#define ISP_CDSEG64 5 -+typedef struct { -+ isphdr_t req_header; -+ ispds64_t req_dataseg[ISP_CDSEG64]; -+} ispcontreq64_t; -+ -+typedef struct { -+ isphdr_t req_header; -+ u_int32_t req_handle; -+ u_int16_t req_scsi_status; -+ u_int16_t req_completion_status; -+ u_int16_t req_state_flags; -+ u_int16_t req_status_flags; -+ u_int16_t req_time; -+#define req_response_len req_time /* FC only */ -+ u_int16_t req_sense_len; -+ u_int32_t req_resid; -+ u_int8_t req_response[8]; /* FC only */ -+ u_int8_t req_sense_data[32]; -+} ispstatusreq_t; -+ -+typedef struct { -+ isphdr_t req_header; -+ u_int8_t req_sense_data[60]; -+} ispstatus_cont_t; -+ -+/* -+ * For Qlogic 2X00, the high order byte of SCSI status has -+ * additional meaning. -+ */ -+#define RQCS_RU 0x800 /* Residual Under */ -+#define RQCS_RO 0x400 /* Residual Over */ -+#define RQCS_RESID (RQCS_RU|RQCS_RO) -+#define RQCS_SV 0x200 /* Sense Length Valid */ -+#define RQCS_RV 0x100 /* FCP Response Length Valid */ -+ -+/* -+ * Completion Status Codes. -+ */ -+#define RQCS_COMPLETE 0x0000 -+#define RQCS_DMA_ERROR 0x0002 -+#define RQCS_RESET_OCCURRED 0x0004 -+#define RQCS_ABORTED 0x0005 -+#define RQCS_TIMEOUT 0x0006 -+#define RQCS_DATA_OVERRUN 0x0007 -+#define RQCS_DATA_UNDERRUN 0x0015 -+#define RQCS_QUEUE_FULL 0x001C -+ -+/* 1X00 Only Completion Codes */ -+#define RQCS_INCOMPLETE 0x0001 -+#define RQCS_TRANSPORT_ERROR 0x0003 -+#define RQCS_COMMAND_OVERRUN 0x0008 -+#define RQCS_STATUS_OVERRUN 0x0009 -+#define RQCS_BAD_MESSAGE 0x000a -+#define RQCS_NO_MESSAGE_OUT 0x000b -+#define RQCS_EXT_ID_FAILED 0x000c -+#define RQCS_IDE_MSG_FAILED 0x000d -+#define RQCS_ABORT_MSG_FAILED 0x000e -+#define RQCS_REJECT_MSG_FAILED 0x000f -+#define RQCS_NOP_MSG_FAILED 0x0010 -+#define RQCS_PARITY_ERROR_MSG_FAILED 0x0011 -+#define RQCS_DEVICE_RESET_MSG_FAILED 0x0012 -+#define RQCS_ID_MSG_FAILED 0x0013 -+#define RQCS_UNEXP_BUS_FREE 0x0014 -+#define RQCS_XACT_ERR1 0x0018 -+#define RQCS_XACT_ERR2 0x0019 -+#define RQCS_XACT_ERR3 0x001A -+#define RQCS_BAD_ENTRY 0x001B -+#define RQCS_PHASE_SKIPPED 0x001D -+#define RQCS_ARQS_FAILED 0x001E -+#define RQCS_WIDE_FAILED 0x001F -+#define RQCS_SYNCXFER_FAILED 0x0020 -+#define RQCS_LVD_BUSERR 0x0021 -+ -+/* 2X00 Only Completion Codes */ -+#define RQCS_PORT_UNAVAILABLE 0x0028 -+#define RQCS_PORT_LOGGED_OUT 0x0029 -+#define RQCS_PORT_CHANGED 0x002A -+#define RQCS_PORT_BUSY 0x002B -+ -+/* -+ * 1X00 specific State Flags -+ */ -+#define RQSF_GOT_BUS 0x0100 -+#define RQSF_GOT_TARGET 0x0200 -+#define RQSF_SENT_CDB 0x0400 -+#define RQSF_XFRD_DATA 0x0800 -+#define RQSF_GOT_STATUS 0x1000 -+#define RQSF_GOT_SENSE 0x2000 -+#define RQSF_XFER_COMPLETE 0x4000 -+ -+/* -+ * 2X00 specific State Flags -+ * (same as 1X00 except RQSF_GOT_BUS/RQSF_GOT_TARGET are not available) -+ */ -+#define RQSF_DATA_IN 0x0020 -+#define RQSF_DATA_OUT 0x0040 -+#define RQSF_STAG 0x0008 -+#define RQSF_OTAG 0x0004 -+#define RQSF_HTAG 0x0002 -+/* -+ * 1X00 Status Flags -+ */ -+#define RQSTF_DISCONNECT 0x0001 -+#define RQSTF_SYNCHRONOUS 0x0002 -+#define RQSTF_PARITY_ERROR 0x0004 -+#define RQSTF_BUS_RESET 0x0008 -+#define RQSTF_DEVICE_RESET 0x0010 -+#define RQSTF_ABORTED 0x0020 -+#define RQSTF_TIMEOUT 0x0040 -+#define RQSTF_NEGOTIATION 0x0080 -+ -+/* -+ * 2X00 specific state flags -+ */ -+/* RQSF_SENT_CDB */ -+/* RQSF_XFRD_DATA */ -+/* RQSF_GOT_STATUS */ -+/* RQSF_XFER_COMPLETE */ -+ -+/* -+ * 2X00 specific status flags -+ */ -+/* RQSTF_ABORTED */ -+/* RQSTF_TIMEOUT */ -+#define RQSTF_DMA_ERROR 0x0080 -+#define RQSTF_LOGOUT 0x2000 -+ -+/* -+ * Miscellaneous -+ */ -+#ifndef ISP_EXEC_THROTTLE -+#define ISP_EXEC_THROTTLE 16 -+#endif -+ -+/* -+ * About Firmware returns an 'attribute' word in mailbox 6. -+ */ -+#define ISP_FW_ATTR_TMODE 0x01 -+#define ISP_FW_ATTR_SCCLUN 0x02 -+#define ISP_FW_ATTR_FABRIC 0x04 -+#define ISP_FW_ATTR_CLASS2 0x08 -+#define ISP_FW_ATTR_FCTAPE 0x10 -+#define ISP_FW_ATTR_IP 0x20 -+ -+/* -+ * Reduced Interrupt Operation Response Queue Entreis -+ */ -+ -+typedef struct { -+ isphdr_t req_header; -+ u_int32_t req_handles[15]; -+} isp_rio1_t; -+ -+typedef struct { -+ isphdr_t req_header; -+ u_int16_t req_handles[30]; -+} isp_rio2_t; -+ -+/* -+ * FC (ISP2100) specific data structures -+ */ -+ -+/* -+ * Initialization Control Block -+ * -+ * Version One (prime) format. -+ */ -+typedef struct isp_icb { -+ u_int8_t icb_version; -+ u_int8_t _reserved0; -+ u_int16_t icb_fwoptions; -+ u_int16_t icb_maxfrmlen; -+ u_int16_t icb_maxalloc; -+ u_int16_t icb_execthrottle; -+ u_int8_t icb_retry_count; -+ u_int8_t icb_retry_delay; -+ u_int8_t icb_portname[8]; -+ u_int16_t icb_hardaddr; -+ u_int8_t icb_iqdevtype; -+ u_int8_t icb_logintime; -+ u_int8_t icb_nodename[8]; -+ u_int16_t icb_rqstout; -+ u_int16_t icb_rspnsin; -+ u_int16_t icb_rqstqlen; -+ u_int16_t icb_rsltqlen; -+ u_int16_t icb_rqstaddr[4]; -+ u_int16_t icb_respaddr[4]; -+ u_int16_t icb_lunenables; -+ u_int8_t icb_ccnt; -+ u_int8_t icb_icnt; -+ u_int16_t icb_lunetimeout; -+ u_int16_t _reserved1; -+ u_int16_t icb_xfwoptions; -+ u_int8_t icb_racctimer; -+ u_int8_t icb_idelaytimer; -+ u_int16_t icb_zfwoptions; -+ u_int16_t _reserved2[13]; -+} isp_icb_t; -+#define ICB_VERSION1 1 -+ -+#define ICBOPT_HARD_ADDRESS 0x0001 -+#define ICBOPT_FAIRNESS 0x0002 -+#define ICBOPT_FULL_DUPLEX 0x0004 -+#define ICBOPT_FAST_POST 0x0008 -+#define ICBOPT_TGT_ENABLE 0x0010 -+#define ICBOPT_INI_DISABLE 0x0020 -+#define ICBOPT_INI_ADISC 0x0040 -+#define ICBOPT_INI_TGTTYPE 0x0080 -+#define ICBOPT_PDBCHANGE_AE 0x0100 -+#define ICBOPT_NOLIP 0x0200 -+#define ICBOPT_SRCHDOWN 0x0400 -+#define ICBOPT_PREVLOOP 0x0800 -+#define ICBOPT_STOP_ON_QFULL 0x1000 -+#define ICBOPT_FULL_LOGIN 0x2000 -+#define ICBOPT_BOTH_WWNS 0x4000 -+#define ICBOPT_EXTENDED 0x8000 -+ -+#define ICBXOPT_CLASS2_ACK0 0x0200 -+#define ICBXOPT_CLASS2 0x0100 -+#define ICBXOPT_LOOP_ONLY (0 << 4) -+#define ICBXOPT_PTP_ONLY (1 << 4) -+#define ICBXOPT_LOOP_2_PTP (2 << 4) -+#define ICBXOPT_PTP_2_LOOP (3 << 4) -+ -+/* -+ * The lower 4 bits of the xfwoptions field are the OPERATION MODE bits. -+ * RIO is not defined for the 23XX cards -+ */ -+#define ICBXOPT_RIO_OFF 0 -+#define ICBXOPT_RIO_16BIT 1 -+#define ICBXOPT_RIO_32BIT 2 -+#define ICBXOPT_RIO_16BIT_IOCB 3 -+#define ICBXOPT_RIO_32BIT_IOCB 4 -+#define ICBXOPT_ZIO 5 -+ -+#define ICBZOPT_ENA_RDXFR_RDY 0x01 -+#define ICBZOPT_ENA_OOF (1 << 6) /* out of order frame handling */ -+/* These 3 only apply to the 2300 */ -+#define ICBZOPT_RATE_ONEGB (MBGSD_ONEGB << 14) -+#define ICBZOPT_RATE_TWOGB (MBGSD_TWOGB << 14) -+#define ICBZOPT_RATE_AUTO (MBGSD_AUTO << 14) -+ -+ -+#define ICB_MIN_FRMLEN 256 -+#define ICB_MAX_FRMLEN 2112 -+#define ICB_DFLT_FRMLEN 1024 -+#define ICB_DFLT_ALLOC 256 -+#define ICB_DFLT_THROTTLE 16 -+#define ICB_DFLT_RDELAY 5 -+#define ICB_DFLT_RCOUNT 3 -+ -+ -+#define RQRSP_ADDR0015 0 -+#define RQRSP_ADDR1631 1 -+#define RQRSP_ADDR3247 2 -+#define RQRSP_ADDR4863 3 -+ -+ -+#define ICB_NNM0 7 -+#define ICB_NNM1 6 -+#define ICB_NNM2 5 -+#define ICB_NNM3 4 -+#define ICB_NNM4 3 -+#define ICB_NNM5 2 -+#define ICB_NNM6 1 -+#define ICB_NNM7 0 -+ -+#define MAKE_NODE_NAME_FROM_WWN(array, wwn) \ -+ array[ICB_NNM0] = (u_int8_t) ((wwn >> 0) & 0xff), \ -+ array[ICB_NNM1] = (u_int8_t) ((wwn >> 8) & 0xff), \ -+ array[ICB_NNM2] = (u_int8_t) ((wwn >> 16) & 0xff), \ -+ array[ICB_NNM3] = (u_int8_t) ((wwn >> 24) & 0xff), \ -+ array[ICB_NNM4] = (u_int8_t) ((wwn >> 32) & 0xff), \ -+ array[ICB_NNM5] = (u_int8_t) ((wwn >> 40) & 0xff), \ -+ array[ICB_NNM6] = (u_int8_t) ((wwn >> 48) & 0xff), \ -+ array[ICB_NNM7] = (u_int8_t) ((wwn >> 56) & 0xff) -+ -+/* -+ * FC-AL Position Map -+ * -+ * This is an at most 128 byte map that returns either -+ * the LILP or Firmware generated list of ports. -+ * -+ * We deviate a bit from the returned qlogic format to -+ * use an extra bit to say whether this was a LILP or -+ * f/w generated map. -+ */ -+typedef struct { -+ u_int8_t fwmap : 1, -+ count : 7; -+ u_int8_t map[127]; -+} fcpos_map_t; -+ -+/* -+ * Port Data Base Element -+ */ -+ -+typedef struct { -+ u_int16_t pdb_options; -+ u_int8_t pdb_mstate; -+ u_int8_t pdb_sstate; -+#define BITS2WORD(x) ((x)[0] << 16 | (x)[3] << 8 | (x)[2]) -+ u_int8_t pdb_hardaddr_bits[4]; -+ u_int8_t pdb_portid_bits[4]; -+ u_int8_t pdb_nodename[8]; -+ u_int8_t pdb_portname[8]; -+ u_int16_t pdb_execthrottle; -+ u_int16_t pdb_exec_count; -+ u_int8_t pdb_retry_count; -+ u_int8_t pdb_retry_delay; -+ u_int16_t pdb_resalloc; -+ u_int16_t pdb_curalloc; -+ u_int16_t pdb_qhead; -+ u_int16_t pdb_qtail; -+ u_int16_t pdb_tl_next; -+ u_int16_t pdb_tl_last; -+ u_int16_t pdb_features; /* PLOGI, Common Service */ -+ u_int16_t pdb_pconcurrnt; /* PLOGI, Common Service */ -+ u_int16_t pdb_roi; /* PLOGI, Common Service */ -+ u_int8_t pdb_target; -+ u_int8_t pdb_initiator; /* PLOGI, Class 3 Control Flags */ -+ u_int16_t pdb_rdsiz; /* PLOGI, Class 3 */ -+ u_int16_t pdb_ncseq; /* PLOGI, Class 3 */ -+ u_int16_t pdb_noseq; /* PLOGI, Class 3 */ -+ u_int16_t pdb_labrtflg; -+ u_int16_t pdb_lstopflg; -+ u_int16_t pdb_sqhead; -+ u_int16_t pdb_sqtail; -+ u_int16_t pdb_ptimer; -+ u_int16_t pdb_nxt_seqid; -+ u_int16_t pdb_fcount; -+ u_int16_t pdb_prli_len; -+ u_int16_t pdb_prli_svc0; -+ u_int16_t pdb_prli_svc3; -+ u_int16_t pdb_loopid; -+ u_int16_t pdb_il_ptr; -+ u_int16_t pdb_sl_ptr; -+} isp_pdb_t; -+ -+#define PDB_OPTIONS_XMITTING (1<<11) -+#define PDB_OPTIONS_LNKXMIT (1<<10) -+#define PDB_OPTIONS_ABORTED (1<<9) -+#define PDB_OPTIONS_ADISC (1<<1) -+ -+#define PDB_STATE_DISCOVERY 0 -+#define PDB_STATE_WDISC_ACK 1 -+#define PDB_STATE_PLOGI 2 -+#define PDB_STATE_PLOGI_ACK 3 -+#define PDB_STATE_PRLI 4 -+#define PDB_STATE_PRLI_ACK 5 -+#define PDB_STATE_LOGGED_IN 6 -+#define PDB_STATE_PORT_UNAVAIL 7 -+#define PDB_STATE_PRLO 8 -+#define PDB_STATE_PRLO_ACK 9 -+#define PDB_STATE_PLOGO 10 -+#define PDB_STATE_PLOG_ACK 11 -+ -+#define SVC3_TGT_ROLE 0x10 -+#define SVC3_INI_ROLE 0x20 -+#define SVC3_ROLE_MASK 0x30 -+#define SVC3_ROLE_SHIFT 4 -+ -+/* -+ * CT definition -+ * -+ * This is as the QLogic f/w documentations defines it- which is just opposite, -+ * bit wise, from what the specification defines it as. Additionally, the -+ * ct_response and ct_resid (really from FC-GS-2) need to be byte swapped. -+ */ -+ -+typedef struct { -+ u_int8_t ct_revision; -+ u_int8_t ct_portid[3]; -+ u_int8_t ct_fcs_type; -+ u_int8_t ct_fcs_subtype; -+ u_int8_t ct_options; -+ u_int8_t ct_res0; -+ u_int16_t ct_response; -+ u_int16_t ct_resid; -+ u_int8_t ct_res1; -+ u_int8_t ct_reason; -+ u_int8_t ct_explanation; -+ u_int8_t ct_vunique; -+} ct_hdr_t; -+#define FS_ACC 0x8002 -+#define FS_RJT 0x8001 -+ -+#define FC4_IP 5 /* ISO/EEC 8802-2 LLC/SNAP "Out of Order Delivery" */ -+#define FC4_SCSI 8 /* SCSI-3 via Fivre Channel Protocol (FCP) */ -+#define FC4_FC_SVC 0x20 /* Fibre Channel Services */ -+ -+#define SNS_GA_NXT 0x100 -+#define SNS_GPN_ID 0x112 -+#define SNS_GNN_ID 0x113 -+#define SNS_GFF_ID 0x11F -+#define SNS_GID_FT 0x171 -+#define SNS_RFT_ID 0x217 -+typedef struct { -+ u_int16_t snscb_rblen; /* response buffer length (words) */ -+ u_int16_t snscb_res0; -+ u_int16_t snscb_addr[4]; /* response buffer address */ -+ u_int16_t snscb_sblen; /* subcommand buffer length (words) */ -+ u_int16_t snscb_res1; -+ u_int16_t snscb_data[1]; /* variable data */ -+} sns_screq_t; /* Subcommand Request Structure */ -+ -+typedef struct { -+ u_int16_t snscb_rblen; /* response buffer length (words) */ -+ u_int16_t snscb_res0; -+ u_int16_t snscb_addr[4]; /* response buffer address */ -+ u_int16_t snscb_sblen; /* subcommand buffer length (words) */ -+ u_int16_t snscb_res1; -+ u_int16_t snscb_cmd; -+ u_int16_t snscb_res2; -+ u_int32_t snscb_res3; -+ u_int32_t snscb_port; -+} sns_ga_nxt_req_t; -+#define SNS_GA_NXT_REQ_SIZE (sizeof (sns_ga_nxt_req_t)) -+ -+typedef struct { -+ u_int16_t snscb_rblen; /* response buffer length (words) */ -+ u_int16_t snscb_res0; -+ u_int16_t snscb_addr[4]; /* response buffer address */ -+ u_int16_t snscb_sblen; /* subcommand buffer length (words) */ -+ u_int16_t snscb_res1; -+ u_int16_t snscb_cmd; -+ u_int16_t snscb_res2; -+ u_int32_t snscb_res3; -+ u_int32_t snscb_portid; -+} sns_gxn_id_req_t; -+#define SNS_GXN_ID_REQ_SIZE (sizeof (sns_gxn_id_req_t)) -+ -+typedef struct { -+ u_int16_t snscb_rblen; /* response buffer length (words) */ -+ u_int16_t snscb_res0; -+ u_int16_t snscb_addr[4]; /* response buffer address */ -+ u_int16_t snscb_sblen; /* subcommand buffer length (words) */ -+ u_int16_t snscb_res1; -+ u_int16_t snscb_cmd; -+ u_int16_t snscb_mword_div_2; -+ u_int32_t snscb_res3; -+ u_int32_t snscb_fc4_type; -+} sns_gid_ft_req_t; -+#define SNS_GID_FT_REQ_SIZE (sizeof (sns_gid_ft_req_t)) -+ -+typedef struct { -+ u_int16_t snscb_rblen; /* response buffer length (words) */ -+ u_int16_t snscb_res0; -+ u_int16_t snscb_addr[4]; /* response buffer address */ -+ u_int16_t snscb_sblen; /* subcommand buffer length (words) */ -+ u_int16_t snscb_res1; -+ u_int16_t snscb_cmd; -+ u_int16_t snscb_res2; -+ u_int32_t snscb_res3; -+ u_int32_t snscb_port; -+ u_int32_t snscb_fc4_types[8]; -+} sns_rft_id_req_t; -+#define SNS_RFT_ID_REQ_SIZE (sizeof (sns_rft_id_req_t)) -+ -+typedef struct { -+ ct_hdr_t snscb_cthdr; -+ u_int8_t snscb_port_type; -+ u_int8_t snscb_port_id[3]; -+ u_int8_t snscb_portname[8]; -+ u_int16_t snscb_data[1]; /* variable data */ -+} sns_scrsp_t; /* Subcommand Response Structure */ -+ -+typedef struct { -+ ct_hdr_t snscb_cthdr; -+ u_int8_t snscb_port_type; -+ u_int8_t snscb_port_id[3]; -+ u_int8_t snscb_portname[8]; -+ u_int8_t snscb_pnlen; /* symbolic port name length */ -+ u_int8_t snscb_pname[255]; /* symbolic port name */ -+ u_int8_t snscb_nodename[8]; -+ u_int8_t snscb_nnlen; /* symbolic node name length */ -+ u_int8_t snscb_nname[255]; /* symbolic node name */ -+ u_int8_t snscb_ipassoc[8]; -+ u_int8_t snscb_ipaddr[16]; -+ u_int8_t snscb_svc_class[4]; -+ u_int8_t snscb_fc4_types[32]; -+ u_int8_t snscb_fpname[8]; -+ u_int8_t snscb_reserved; -+ u_int8_t snscb_hardaddr[3]; -+} sns_ga_nxt_rsp_t; /* Subcommand Response Structure */ -+#define SNS_GA_NXT_RESP_SIZE (sizeof (sns_ga_nxt_rsp_t)) -+ -+typedef struct { -+ ct_hdr_t snscb_cthdr; -+ u_int8_t snscb_wwn[8]; -+} sns_gxn_id_rsp_t; -+#define SNS_GXN_ID_RESP_SIZE (sizeof (sns_gxn_id_rsp_t)) -+ -+typedef struct { -+ ct_hdr_t snscb_cthdr; -+ u_int32_t snscb_fc4_features[32]; -+} sns_gff_id_rsp_t; -+#define SNS_GFF_ID_RESP_SIZE (sizeof (sns_gff_id_rsp_t)) -+ -+typedef struct { -+ ct_hdr_t snscb_cthdr; -+ struct { -+ u_int8_t control; -+ u_int8_t portid[3]; -+ } snscb_ports[1]; -+} sns_gid_ft_rsp_t; -+#define SNS_GID_FT_RESP_SIZE(x) ((sizeof (sns_gid_ft_rsp_t)) + ((x - 1) << 2)) -+ -+#define SNS_RFT_ID_RESP_SIZE (sizeof (ct_hdr_t)) -+ -+#endif /* _ISPMBOX_H */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_pci.c 2003-07-19 17:06:34.000000000 -0700 -@@ -0,0 +1,2363 @@ -+/* @(#)isp_pci.c 1.39 */ -+/* -+ * Qlogic ISP Host Adapter PCI specific probe and attach routines -+ *--------------------------------------- -+ * Copyright (c) 1998, 1999, 2000, 2001 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions, and the following disclaimer, -+ * without modification, immediately at the beginning of the file. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * Alternatively, this software may be distributed under the terms of the -+ * the GNU Public License ("GPL"). -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * Matthew Jacob -+ * Feral Software -+ * PMB #825 -+ * 5214-F Diamond Hts Blvd -+ * San Francisco, CA, 94131 -+ * mjacob@feral.com -+ */ -+ -+#include "isp_linux.h" -+#if defined(__powerpc__) || defined(__sparc__) -+static int isp_pci_mapmem = 0xffffffff; -+#else -+static int isp_pci_mapmem = 0; -+#endif -+#if defined(__sparc__) -+#undef ioremap_nocache -+#define ioremap_nocache ioremap -+#endif -+static int isplinux_pci_init(struct Scsi_Host *); -+static u_int16_t isp_pci_rd_reg(struct ispsoftc *, int); -+static void isp_pci_wr_reg(struct ispsoftc *, int, u_int16_t); -+#if !(defined(ISP_DISABLE_1080_SUPPORT) && defined(ISP_DISABLE_12160_SUPPORT)) -+static u_int16_t isp_pci_rd_reg_1080(struct ispsoftc *, int); -+static void isp_pci_wr_reg_1080(struct ispsoftc *, int, u_int16_t); -+#endif -+static int -+isp_pci_rd_isr(struct ispsoftc *, u_int16_t *, u_int16_t *, u_int16_t *); -+#ifndef ISP_DISABLE_2300_SUPPORT -+static int -+isp_pci_rd_isr_2300(struct ispsoftc *, u_int16_t *, u_int16_t *, u_int16_t *); -+#endif -+static int isp_pci_mbxdma(struct ispsoftc *); -+static int -+isp_pci_dmasetup(struct ispsoftc *, XS_T *, ispreq_t *, u_int16_t *, u_int16_t); -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+static void isp_pci_dmateardown(struct ispsoftc *, XS_T *, u_int16_t); -+#define IS_HIGH_ISP_ADDR(addr) (addr >= (u_int64_t) 0x100000000) -+#else -+#define isp_pci_dmateardown NULL -+#define IS_HIGH_ISP_ADDR(addr) 0 -+#define sg_dma_address(sg) virt_to_bus(sg->address) -+#define sg_dma_len(sg) sg->length -+#endif -+ -+#if ISP_DAC_SUPPORTED == 1 -+#define ISP_A64 1 -+#define HIWD(x) ((x) >> 32) -+#else -+#define ISP_A64 0 -+#define HIWD(x) 0 -+#endif -+#define LOWD(x) x -+ -+static void isp_pci_reset1(struct ispsoftc *); -+static void isp_pci_dumpregs(struct ispsoftc *, const char *); -+ -+#ifndef ISP_CODE_ORG -+#define ISP_CODE_ORG 0x1000 -+#endif -+ -+#ifndef ISP_DISABLE_1020_SUPPORT -+#include "asm_1040.h" -+#define ISP_1040_RISC_CODE (u_int16_t *) isp_1040_risc_code -+#else -+#define ISP_1040_RISC_CODE NULL -+#endif -+ -+#ifndef ISP_DISABLE_1080_SUPPORT -+#include "asm_1080.h" -+#define ISP_1080_RISC_CODE (u_int16_t *) isp_1080_risc_code -+#else -+#define ISP_1080_RISC_CODE NULL -+#endif -+ -+#ifndef ISP_DISABLE_12160_SUPPORT -+#include "asm_12160.h" -+#define ISP_12160_RISC_CODE (u_int16_t *) isp_12160_risc_code -+#else -+#define ISP_12160_RISC_CODE NULL -+#endif -+ -+#ifndef ISP_DISABLE_2100_SUPPORT -+#include "asm_2100.h" -+#define ISP_2100_RISC_CODE (u_int16_t *) isp_2100_risc_code -+#else -+#define ISP_2100_RISC_CODE NULL -+#endif -+ -+#ifndef ISP_DISABLE_2200_SUPPORT -+#include "asm_2200.h" -+#define ISP_2200_RISC_CODE (u_int16_t *) isp_2200_risc_code -+#else -+#define ISP_2200_RISC_CODE NULL -+#endif -+ -+#ifndef ISP_DISABLE_2300_SUPPORT -+#include "asm_2300.h" -+#define ISP_2300_RISC_CODE (u_int16_t *) isp_2300_risc_code -+#else -+#define ISP_2300_RISC_CODE NULL -+#endif -+ -+#ifndef ISP_DISABLE_1020_SUPPORT -+static struct ispmdvec mdvec = { -+ isp_pci_rd_isr, -+ isp_pci_rd_reg, -+ isp_pci_wr_reg, -+ isp_pci_mbxdma, -+ isp_pci_dmasetup, -+ isp_pci_dmateardown, -+ NULL, -+ isp_pci_reset1, -+ isp_pci_dumpregs, -+ ISP_1040_RISC_CODE, -+ BIU_BURST_ENABLE|BIU_PCI_CONF1_FIFO_64 -+}; -+#endif -+ -+#ifndef ISP_DISABLE_1080_SUPPORT -+static struct ispmdvec mdvec_1080 = { -+ isp_pci_rd_isr, -+ isp_pci_rd_reg_1080, -+ isp_pci_wr_reg_1080, -+ isp_pci_mbxdma, -+ isp_pci_dmasetup, -+ isp_pci_dmateardown, -+ NULL, -+ isp_pci_reset1, -+ isp_pci_dumpregs, -+ ISP_1080_RISC_CODE, -+ BIU_BURST_ENABLE|BIU_PCI_CONF1_FIFO_128 -+}; -+#endif -+ -+#ifndef ISP_DISABLE_12160_SUPPORT -+static struct ispmdvec mdvec_12160 = { -+ isp_pci_rd_isr, -+ isp_pci_rd_reg_1080, -+ isp_pci_wr_reg_1080, -+ isp_pci_mbxdma, -+ isp_pci_dmasetup, -+ isp_pci_dmateardown, -+ NULL, -+ isp_pci_reset1, -+ isp_pci_dumpregs, -+ ISP_12160_RISC_CODE, -+ BIU_BURST_ENABLE|BIU_PCI_CONF1_FIFO_128 -+}; -+#endif -+ -+#ifndef ISP_DISABLE_2100_SUPPORT -+static struct ispmdvec mdvec_2100 = { -+ isp_pci_rd_isr, -+ isp_pci_rd_reg, -+ isp_pci_wr_reg, -+ isp_pci_mbxdma, -+ isp_pci_dmasetup, -+ isp_pci_dmateardown, -+ NULL, -+ isp_pci_reset1, -+ isp_pci_dumpregs, -+ ISP_2100_RISC_CODE -+}; -+#endif -+ -+#ifndef ISP_DISABLE_2200_SUPPORT -+static struct ispmdvec mdvec_2200 = { -+ isp_pci_rd_isr, -+ isp_pci_rd_reg, -+ isp_pci_wr_reg, -+ isp_pci_mbxdma, -+ isp_pci_dmasetup, -+ isp_pci_dmateardown, -+ NULL, -+ isp_pci_reset1, -+ isp_pci_dumpregs, -+ ISP_2200_RISC_CODE -+}; -+#endif -+ -+#ifndef ISP_DISABLE_2300_SUPPORT -+static struct ispmdvec mdvec_2300 = { -+ isp_pci_rd_isr_2300, -+ isp_pci_rd_reg, -+ isp_pci_wr_reg, -+ isp_pci_mbxdma, -+ isp_pci_dmasetup, -+ isp_pci_dmateardown, -+ NULL, -+ isp_pci_reset1, -+ isp_pci_dumpregs, -+ ISP_2300_RISC_CODE -+}; -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP1020 -+#define PCI_DEVICE_ID_QLOGIC_ISP1020 0x1020 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP1020 -+#define PCI_DEVICE_ID_QLOGIC_ISP1020 0x1020 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP1080 -+#define PCI_DEVICE_ID_QLOGIC_ISP1080 0x1080 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP10160 -+#define PCI_DEVICE_ID_QLOGIC_ISP10160 0x1016 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP12160 -+#define PCI_DEVICE_ID_QLOGIC_ISP12160 0x1216 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP1240 -+#define PCI_DEVICE_ID_QLOGIC_ISP1240 0x1240 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP1280 -+#define PCI_DEVICE_ID_QLOGIC_ISP1280 0x1280 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP2100 -+#define PCI_DEVICE_ID_QLOGIC_ISP2100 0x2100 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP2200 -+#define PCI_DEVICE_ID_QLOGIC_ISP2200 0x2200 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP2300 -+#define PCI_DEVICE_ID_QLOGIC_ISP2300 0x2300 -+#endif -+ -+#ifndef PCI_DEVICE_ID_QLOGIC_ISP2312 -+#define PCI_DEVICE_ID_QLOGIC_ISP2312 0x2312 -+#endif -+ -+#define PCI_DFLT_LTNCY 0x40 -+#define PCI_DFLT_LNSZ 0x10 -+#define PCI_CMD_ISP \ -+ (PCI_COMMAND_MASTER|PCI_COMMAND_INVALIDATE|PCI_COMMAND_PARITY|PCI_COMMAND_SERR) -+ -+/* -+ * Encapsulating softc... Order of elements is important. The tag -+ * pci_isp must come first because of multiple structure punning -+ * (Scsi_Host * == struct isp_pcisoftc * == struct ispsofct *). -+ */ -+struct isp_pcisoftc { -+ struct ispsoftc pci_isp; -+ struct pci_dev * pci_dev; -+ vm_offset_t port; /* I/O port address */ -+ vm_offset_t paddr; /* Physical Memory Address */ -+ vm_offset_t vaddr; /* Mapped Memory Address */ -+ vm_offset_t poff[_NREG_BLKS]; -+ union pstore params; -+}; -+ -+/* -+ * Gratefully borrowed from Gerard Roudier's sym53c8xx driver -+ */ -+static INLINE vm_offset_t -+map_pci_mem(u_long base, u_long size) -+{ -+ u_long page_base = ((u_long) base) & PAGE_MASK; -+ u_long page_offs = ((u_long) base) - page_base; -+ u_long map_size = roundup(page_offs+size, PAGE_SIZE); -+ u_long page_remapped = (u_long) ioremap_nocache(page_base, map_size); -+ (void) map_size; -+ return (vm_offset_t) (page_remapped ? (page_remapped + page_offs) : 0); -+} -+ -+static INLINE -+void unmap_pci_mem(vm_offset_t vaddr, u_long size) -+{ -+ if (vaddr) -+ iounmap((void *) (vaddr & PAGE_MASK)); -+} -+ -+static INLINE int -+map_isp_mem(struct isp_pcisoftc *isp_pci, u_short cmd, vm_offset_t mem_base) -+{ -+ if (cmd & PCI_COMMAND_MEMORY) { -+ isp_pci->paddr = __pa(mem_base); -+ isp_pci->paddr &= PCI_BASE_ADDRESS_MEM_MASK; -+ isp_pci->vaddr = map_pci_mem(isp_pci->paddr, 0xff); -+ return (isp_pci->vaddr != (vm_offset_t) 0); -+ } -+ return (0); -+} -+ -+static INLINE int -+map_isp_io(struct isp_pcisoftc *isp_pci, u_short cmd, vm_offset_t io_base) -+{ -+ if ((cmd & PCI_COMMAND_IO) && (io_base & 3) == 1) { -+ isp_pci->port = io_base & PCI_BASE_ADDRESS_IO_MASK; -+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,5,0) -+ if (check_region(isp_pci->port, 0xff)) { -+ return (0); -+ } -+#endif -+ request_region(isp_pci->port, 0xff, "isp"); -+ return (1); -+ } -+ return (0); -+} -+ -+#define ISP_PCI_BUS pcidev->bus->number -+#define ISP_PCI_DEVICE pcidev->devfn -+#define ISEARCH_RESET pcidev = NULL -+#define ISEARCH(x) \ -+ (pcidev = pci_find_device(PCI_VENDOR_ID_QLOGIC, x, pcidev)) != NULL -+#define ISEARCH_NEXT -+#define ISTORE_ARGS struct pci_dev *pcidev -+#define ISTORE_FNDARGS ISTORE_ARGS -+#define ISTORE_FNCARGS pcidev -+#define ISTORE_ISP_INFO(x) (x)->pci_dev = pcidev -+ -+static INLINE struct isp_pcisoftc * -+isplinux_pci_addhost(Scsi_Host_Template *tmpt, ISTORE_FNDARGS) -+{ -+ struct Scsi_Host *host; -+ struct ispsoftc *isp; -+ struct isp_pcisoftc *pci_isp; -+ -+ host = scsi_register(tmpt, sizeof(struct isp_pcisoftc)); -+ if (host == NULL) { -+ printk("isplinux_pci_addhost: scsi_register failed\n"); -+ return (NULL); -+ } -+ pci_isp = (struct isp_pcisoftc *) host->hostdata; -+ if (pci_isp == NULL) { -+ printk("isplinux_pci_addhost: cannot get softc out of scsi_register\n"); -+ return (NULL); -+ } -+ ISTORE_ISP_INFO(pci_isp); -+ isp = (struct ispsoftc *) pci_isp; -+ isp->isp_host = host; -+ isp->isp_osinfo.storep = &pci_isp->params; -+ if (isplinux_pci_init(host)) { -+ scsi_unregister(host); -+ return (NULL); -+ } -+ isp->isp_next = isplist; -+ isplist = isp; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,4) -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,61) -+ scsi_set_device(host, &pci_isp->pci_dev->dev); -+#else -+ scsi_set_pci_device(host, pci_isp->pci_dev); -+#endif -+#endif -+ return (pci_isp); -+} -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,18) && \ -+ LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+#include -+static int -+isp_notify_reboot(struct notifier_block *ispnb, unsigned long Event, void *b) -+{ -+ struct ispsoftc *isp; -+ switch (Event) { -+ case SYS_RESTART: -+ case SYS_HALT: -+ case SYS_POWER_OFF: -+ break; -+ default: -+ return (NOTIFY_DONE); -+ } -+ for (isp = isplist; isp != NULL; isp = isp->isp_next) { -+ ISP_LOCKU_SOFTC(isp); -+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); -+ if (IS_FC(isp)) { -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_FPM0_REGS); -+ ISP_WRITE(isp, FPM_DIAG_CONFIG, FPM_SOFT_RESET); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_FB_REGS); -+ ISP_WRITE(isp, FBM_CMD, FBMCMD_FIFO_RESET_ALL); -+ ISP_WRITE(isp, BIU2100_CSR, BIU2100_RISC_REGS); -+ } -+ ISP_UNLKU_SOFTC(isp); -+ } -+ return (NOTIFY_OK); -+} -+static struct notifier_block isp_notifier = { -+ notifier_call: isp_notify_reboot, -+ next: NULL, -+ priority: 0 -+}; -+#endif -+ -+static int isp_nfound = 0; -+int -+isplinux_pci_detect(Scsi_Host_Template *tmpt) -+{ -+ static const char *fmt = -+ "ISP SCSI and Fibre Channel Host Adapter Driver\n" -+ " Linux Platform Version %d.%d\n" -+ " Common Core Code Version %d.%d\n" -+ " Built on %s, %s\n"; -+ struct isp_pcisoftc *pci_isp; -+ ISTORE_ARGS; -+ -+ printk(fmt, ISP_PLATFORM_VERSION_MAJOR, ISP_PLATFORM_VERSION_MINOR, -+ ISP_CORE_VERSION_MAJOR, ISP_CORE_VERSION_MINOR, __DATE__ , __TIME__ ); -+ -+#ifndef ISP_DISABLE_1020_SUPPORT -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP1020); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+#endif -+ -+#ifndef ISP_DISABLE_1080_SUPPORT -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP1240); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP1080); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP1280); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+#endif -+ -+#ifndef ISP_DISABLE_12160_SUPPORT -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP10160); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP12160); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+#endif -+ -+#ifndef ISP_DISABLE_2100_SUPPORT -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP2100); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+#endif -+ -+#ifndef ISP_DISABLE_2200_SUPPORT -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP2200); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+#endif -+ -+#ifndef ISP_DISABLE_2300_SUPPORT -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP2300); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+ for (ISEARCH_RESET; ISEARCH(PCI_DEVICE_ID_QLOGIC_ISP2312); ISEARCH_NEXT) { -+ pci_isp = isplinux_pci_addhost(tmpt, ISTORE_FNCARGS); -+ if (pci_isp) { -+ isp_nfound++; -+ } -+ } -+#endif -+ /* -+ * Don't do reboot notifier stuff for 2.5.X yet -+ */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,18) && \ -+ LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ if (isp_nfound) { -+ register_reboot_notifier(&isp_notifier); -+ } -+#endif -+ return (isp_nfound); -+} -+ -+void -+isplinux_pci_release(struct Scsi_Host *host) -+{ -+ struct ispsoftc *isp = (struct ispsoftc *) host->hostdata; -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) host->hostdata; -+ free_irq(host->irq, pcs); -+ if (pcs->vaddr != 0) { -+ unmap_pci_mem(pcs->vaddr, 0xff); -+ pcs->vaddr = 0; -+ } else { -+ release_region(pcs->port, 0xff); -+ pcs->port = 0; -+ } -+ kfree(isp->isp_xflist); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ pci_free_consistent(pcs->pci_dev, RQUEST_QUEUE_LEN(isp) * QENTRY_LEN, -+ isp->isp_rquest, isp->isp_rquest_dma); -+ pci_free_consistent(pcs->pci_dev, RESULT_QUEUE_LEN(isp) * QENTRY_LEN, -+ isp->isp_result, isp->isp_result_dma); -+ if (IS_FC(isp)) { -+ pci_free_consistent(pcs->pci_dev, ISP2100_SCRLEN, -+ FCPARAM(isp)->isp_scratch, FCPARAM(isp)->isp_scdma); -+ } -+#else -+ RlsPages(isp->isp_rquest, IspOrder(RQUEST_QUEUE_LEN(isp))); -+ RlsPages(isp->isp_result, IspOrder(RESULT_QUEUE_LEN(isp))); -+ if (IS_FC(isp) && FCPARAM(isp)->isp_scratch) { -+ RlsPages(FCPARAM(isp)->isp_scratch, 1); -+ } -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,18) && \ -+ LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ if (--isp_nfound <= 0) { -+ unregister_reboot_notifier(&isp_notifier); -+ } -+#endif -+} -+ -+static int -+isplinux_pci_init(struct Scsi_Host *host) -+{ -+ static char *nomap = "cannot map either memory or I/O space"; -+ unsigned long io_base, mem_base; -+ unsigned int irq, pci_cmd_isp = PCI_CMD_ISP; -+ struct isp_pcisoftc *isp_pci; -+ u_char rev, lnsz, timer; -+ u_short vid, did, cmd; -+ char loc[32]; -+ struct ispsoftc *isp; -+ -+ isp_pci = (struct isp_pcisoftc *) host->hostdata; -+ isp = (struct ispsoftc *) isp_pci; -+ sprintf(loc, "isp@", isp_pci->pci_dev->bus->number, -+ PCI_SLOT(isp_pci->pci_dev->devfn), PCI_FUNC(isp_pci->pci_dev->devfn)); -+ if (PRDW(isp_pci, PCI_COMMAND, &cmd) || -+ PRDB(isp_pci, PCI_CACHE_LINE_SIZE, &lnsz) || -+ PRDB(isp_pci, PCI_LATENCY_TIMER, &timer) || -+ PRDB(isp_pci, PCI_CLASS_REVISION, &rev)) { -+ printk("%s: error reading PCI configuration", loc); -+ return (1); -+ } -+ vid = isp_pci->pci_dev->vendor; -+ did = isp_pci->pci_dev->device; -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ io_base = pci_resource_start(isp_pci->pci_dev, 0); -+ if (pci_resource_flags(isp_pci->pci_dev, 0) & PCI_BASE_ADDRESS_MEM_TYPE_64) -+ irq = 2; -+ else -+ irq = 1; -+ mem_base = pci_resource_start(isp_pci->pci_dev, irq); -+ if (pci_resource_flags(isp_pci->pci_dev, irq) & -+ PCI_BASE_ADDRESS_MEM_TYPE_64) { -+#if BITS_PER_LONG == 64 -+ mem_base |= pci_resource_start(isp_pci->pci_dev, irq+1) << 32; -+#else -+ isp_pci_mapmem &= ~(1 << isp->isp_unit); -+#endif -+ } -+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) */ -+ io_base = isp_pci->pci_dev->base_address[0]; -+ mem_base = isp_pci->pci_dev->base_address[1]; -+ if (mem_base & PCI_BASE_ADDRESS_MEM_TYPE_64) { -+#if BITS_PER_LONG == 64 -+ mem_base |= isp_pci->pci_dev->base_address[2] << 32; -+#else -+ isp_pci_mapmem &= ~(1 << isp->isp_unit); -+#endif -+ } -+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) */ -+ irq = isp_pci->pci_dev->irq; -+ -+ if (vid != PCI_VENDOR_ID_QLOGIC) { -+ printk("%s: 0x%04x is not QLogic's PCI Vendor ID\n", loc, vid); -+ return (1); -+ } -+ -+ isp_pci->poff[BIU_BLOCK >> _BLK_REG_SHFT] = BIU_REGS_OFF; -+ isp_pci->poff[MBOX_BLOCK >> _BLK_REG_SHFT] = PCI_MBOX_REGS_OFF; -+ isp_pci->poff[SXP_BLOCK >> _BLK_REG_SHFT] = PCI_SXP_REGS_OFF; -+ isp_pci->poff[RISC_BLOCK >> _BLK_REG_SHFT] = PCI_RISC_REGS_OFF; -+ isp_pci->poff[DMA_BLOCK >> _BLK_REG_SHFT] = DMA_REGS_OFF; -+ switch (did) { -+ case PCI_DEVICE_ID_QLOGIC_ISP1020: -+ break; -+ case PCI_DEVICE_ID_QLOGIC_ISP1080: -+ case PCI_DEVICE_ID_QLOGIC_ISP1240: -+ case PCI_DEVICE_ID_QLOGIC_ISP1280: -+ case PCI_DEVICE_ID_QLOGIC_ISP10160: -+ case PCI_DEVICE_ID_QLOGIC_ISP12160: -+ isp_pci->poff[DMA_BLOCK >> _BLK_REG_SHFT] = ISP1080_DMA_REGS_OFF; -+ break; -+ case PCI_DEVICE_ID_QLOGIC_ISP2200: -+ case PCI_DEVICE_ID_QLOGIC_ISP2100: -+ isp_pci->poff[MBOX_BLOCK >> _BLK_REG_SHFT] = PCI_MBOX_REGS2100_OFF; -+ break; -+ case PCI_DEVICE_ID_QLOGIC_ISP2300: -+ pci_cmd_isp &= ~PCI_COMMAND_INVALIDATE; /* per errata */ -+ isp_pci->poff[MBOX_BLOCK >> _BLK_REG_SHFT] = PCI_MBOX_REGS2300_OFF; -+ break; -+ case PCI_DEVICE_ID_QLOGIC_ISP2312: -+ isp->isp_port = PCI_FUNC(isp_pci->pci_dev->devfn); -+ isp_pci->poff[MBOX_BLOCK >> _BLK_REG_SHFT] = PCI_MBOX_REGS2300_OFF; -+ break; -+ default: -+ printk("%s: Device ID 0x%04x is not a known Qlogic Device", loc, did); -+ return (1); -+ } -+ -+ /* -+ * Bump unit seed- we're here, whether we complete the attachment or not. -+ */ -+ isp->isp_unit = isp_unit_seed++; -+ sprintf(isp->isp_name, "isp%d", isp->isp_unit); -+ -+ isp->isp_osinfo.device_id = -+ ((isp_pci->pci_dev->bus->number) << 16) | -+ (PCI_SLOT(isp_pci->pci_dev->devfn) << 8) | -+ (PCI_FUNC(isp_pci->pci_dev->devfn)); -+ -+ if (isp_disable & (1 << isp->isp_unit)) { -+ isp_prt(isp, ISP_LOGALL, "disabled at user request"); -+ return (1); -+ } -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ if (pci_enable_device(isp_pci->pci_dev)) { -+ printk("%s: fails to be PCI_ENABLEd\n", loc); -+ return (1); -+ } -+ (void) PRDW(isp_pci, PCI_COMMAND, &cmd); -+#endif -+ -+ if ((cmd & PCI_CMD_ISP) != pci_cmd_isp) { -+ if (isp_debug & ISP_LOGINFO) -+ printk("%s: rewriting command register from 0x%x to 0x%x\n", -+ loc, cmd, (cmd & ~PCI_CMD_ISP) | pci_cmd_isp); -+ cmd &= ~PCI_CMD_ISP; -+ cmd |= pci_cmd_isp; -+ PWRW(isp_pci, PCI_COMMAND, cmd); -+ } -+ -+ if (lnsz != PCI_DFLT_LNSZ) { -+ if (isp_debug & ISP_LOGINFO) -+ printk("%s: rewriting cache line size from 0x%x to 0x%x\n", -+ loc, lnsz, PCI_DFLT_LNSZ); -+ lnsz = PCI_DFLT_LNSZ; -+ PWRB(isp_pci, PCI_CACHE_LINE_SIZE, lnsz); -+ } -+ -+#ifdef __sparc__ -+ if (PRDB(isp_pci, PCI_MIN_GNT, &rev)) { -+ printk("%s: unable to read min grant\n", loc); -+ return (1); -+ } -+ if (rev) { -+ rev = (rev << 3) & 0xff; -+ } -+ if (rev == 0) { -+ rev = 64; -+ } -+ if (isp_debug & ISP_LOGINFO) { -+ printk("%s: rewriting latency timer from 0x%x to 0x%x\n", -+ loc, timer, rev); -+ } -+ PWRB(isp_pci, PCI_LATENCY_TIMER, rev); -+#else -+ if (timer < PCI_DFLT_LTNCY) { -+ if (isp_debug & ISP_LOGINFO) -+ printk("%s: rewriting latency timer from 0x%x to 0x%x\n", -+ loc, timer, PCI_DFLT_LTNCY); -+ timer = PCI_DFLT_LTNCY; -+ PWRB(isp_pci, PCI_LATENCY_TIMER, timer); -+ } -+#endif -+ -+ if ((cmd & (PCI_COMMAND_MEMORY|PCI_COMMAND_IO)) == 0) { -+#ifdef __powerpc__ -+ if (io_base == 0 && mem_base == 0) { -+ printk("%s: you lose- no register access defined.\n", loc); -+ return (1); -+ } -+ if (io_base) -+ cmd |= PCI_COMMAND_IO; -+ if (mem_base) -+ cmd |= PCI_COMMAND_MEMORY; -+ PWRW(isp_pci, PCI_COMMAND, cmd); -+#else -+ printk("%s: you lose- no register access defined.\n", loc); -+ return (1); -+#endif -+ } -+ -+ /* -+ * Disable the ROM. -+ */ -+ PWRL(isp_pci, PCI_ROM_ADDRESS, 0); -+ -+ /* -+ * Set up stuff... -+ */ -+ isp_pci->port = isp_pci->vaddr = 0; -+ -+ /* -+ * If we prefer to map memory space over I/O, try that first. -+ */ -+ if (isp_pci_mapmem & (1 << isp->isp_unit)) { -+ if (map_isp_mem(isp_pci, cmd, mem_base) == 0) { -+ if (map_isp_io(isp_pci, cmd, io_base) == 0) { -+ isp_prt(isp, ISP_LOGERR, nomap); -+ return (1); -+ } -+ } -+ } else { -+ if (map_isp_io(isp_pci, cmd, io_base) == 0) { -+ if (map_isp_mem(isp_pci, cmd, mem_base) == 0) { -+ isp_prt(isp, ISP_LOGERR, nomap); -+ return (1); -+ } -+ } -+ } -+ if (isp_pci->vaddr) { -+ isp_prt(isp, ISP_LOGCONFIG, -+ "mapped memory 0x%lx at 0x%lx\n", isp_pci->paddr, isp_pci->vaddr); -+ host->io_port = isp_pci->paddr; -+ } else { -+ isp_prt(isp, ISP_LOGCONFIG, -+ "mapped I/O space at 0x%lx\n", isp_pci->port); -+ host->io_port = isp_pci->port; -+ } -+ host->irq = 0; -+ isp_pci->pci_isp.isp_revision = rev; -+#ifndef ISP_DISABLE_1020_SUPPORT -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP1020) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec; -+ isp_pci->pci_isp.isp_type = ISP_HA_SCSI_UNKNOWN; -+ } -+#endif -+#ifndef ISP_DISABLE_1080_SUPPORT -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP1080) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_1080; -+ isp_pci->pci_isp.isp_type = ISP_HA_SCSI_1080; -+ } -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP1240) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_1080; -+ isp_pci->pci_isp.isp_type = ISP_HA_SCSI_1240; -+ host->max_channel = 1; -+ } -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP1280) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_1080; -+ isp_pci->pci_isp.isp_type = ISP_HA_SCSI_1280; -+ host->max_channel = 1; -+ } -+#endif -+#ifndef ISP_DISABLE_12160_SUPPORT -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP10160) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_12160; -+ isp_pci->pci_isp.isp_type = ISP_HA_SCSI_12160; -+ } -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP12160) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_12160; -+ isp_pci->pci_isp.isp_type = ISP_HA_SCSI_12160; -+ host->max_channel = 1; -+ } -+#endif -+#ifndef ISP_DISABLE_2100_SUPPORT -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP2100) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_2100; -+ isp_pci->pci_isp.isp_type = ISP_HA_FC_2100; -+ } -+#endif -+#ifndef ISP_DISABLE_2200_SUPPORT -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP2200) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_2200; -+ isp_pci->pci_isp.isp_type = ISP_HA_FC_2200; -+ } -+#endif -+#ifndef ISP_DISABLE_2300_SUPPORT -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP2300) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_2300; -+ isp_pci->pci_isp.isp_type = ISP_HA_FC_2300; -+ } -+ if (did == PCI_DEVICE_ID_QLOGIC_ISP2312) { -+ isp_pci->pci_isp.isp_mdvec = &mdvec_2300; -+ isp_pci->pci_isp.isp_type = ISP_HA_FC_2312; -+ } -+ -+ if (IS_23XX(isp)) { -+ /* -+ * Can't tell if the ROM will hang on 'ABOUT FIRMWARE' command -+ */ -+ isp->isp_touched = 1; -+ } -+#endif -+ -+ if (request_irq(irq, isplinux_intr, SA_SHIRQ, isp->isp_name, isp_pci)) { -+ isp_prt(isp, ISP_LOGERR, "could not snag irq %u (0x%x)", irq, irq); -+ goto bad; -+ } -+ host->irq = irq; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -+ host->select_queue_depths = isplinux_sqd; -+#endif -+ isp->isp_param = &isp_pci->params; -+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,19) -+ host->highmem_io = 0; -+ if (IS_FC(isp) || IS_ULTRA2(isp) || IS_1240(isp)) { -+ if (!ISP_A64 || pci_set_dma_mask(isp_pci->pci_dev, (u64) 0xffffffffffffffffULL)) { -+ if (pci_set_dma_mask(isp_pci->pci_dev, (u64)0xffffffff)) { -+ isp_prt(isp, ISP_LOGERR, "cannot set 32 bit dma mask"); -+ goto bad; -+ } else { -+ isp_prt(isp, ISP_LOGCONFIG, "enabling 32 bit DMA"); -+ host->highmem_io = 1; -+ } -+ } else { -+ isp_prt(isp, ISP_LOGCONFIG, "enabling 64 bit DMA"); -+ } -+ host->highmem_io = 1; -+ } -+#endif -+ -+ /* -+ * At this point, we're committed to keeping this adapter around. -+ */ -+ isplinux_common_init(isp); -+ return (0); -+bad: -+ if (host->irq) { -+ DISABLE_INTS(isp); -+ free_irq(host->irq, isp_pci); -+ host->irq = 0; -+ } -+ if (isp_pci->vaddr != 0) { -+ unmap_pci_mem(isp_pci->vaddr, 0xff); -+ isp_pci->vaddr = 0; -+ } else { -+ release_region(isp_pci->port, 0xff); -+ isp_pci->port = 0; -+ } -+ return (1); -+} -+ -+static INLINE u_int16_t -+ispregrd(struct isp_pcisoftc *pcs, vm_offset_t offset) -+{ -+ u_int16_t rv; -+ if (pcs->vaddr) { -+ offset += pcs->vaddr; -+ rv = readw(offset); -+ } else { -+ offset += pcs->port; -+ rv = inw(offset); -+ } -+ return (rv); -+} -+ -+static INLINE void -+ispregwr(struct isp_pcisoftc *pcs, vm_offset_t offset, u_int16_t val) -+{ -+ if (pcs->vaddr) { -+ offset += pcs->vaddr; -+ writew(val, offset); -+ } else { -+ offset += pcs->port; -+ outw(val, offset); -+ } -+ MEMORYBARRIER(isp, SYNC_REG, offset, 2); -+} -+ -+static INLINE int -+isp_pci_rd_debounced(struct isp_pcisoftc *pcs, vm_offset_t off, u_int16_t *rp) -+{ -+ u_int16_t val0, val1; -+ int i = 0; -+ do { -+ val0 = ispregrd(pcs, off); -+ val1 = ispregrd(pcs, off); -+ } while (val0 != val1 && ++i < 1000); -+ if (val0 != val1) { -+ return (1); -+ } -+ *rp = val0; -+ return (0); -+} -+ -+#define IspVirt2Off(a, x) \ -+ ((a)->poff[((x) & _BLK_REG_MASK) >> _BLK_REG_SHFT] + ((x) & 0xff)) -+ -+static int -+isp_pci_rd_isr(struct ispsoftc *isp, u_int16_t *isrp, -+ u_int16_t *semap, u_int16_t *mbp) -+{ -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ u_int16_t isr, sema; -+ -+ if (IS_2100(isp)) { -+ if (isp_pci_rd_debounced(pcs, IspVirt2Off(pcs, BIU_ISR), &isr)) { -+ return (0); -+ } -+ if (isp_pci_rd_debounced(pcs, IspVirt2Off(pcs, BIU_SEMA), &sema)) { -+ return (0); -+ } -+ } else { -+ isr = ispregrd(pcs, IspVirt2Off(pcs, BIU_ISR)); -+ sema = ispregrd(pcs, IspVirt2Off(pcs, BIU_SEMA)); -+ } -+ isp_prt(isp, ISP_LOGDEBUG3, "ISR 0x%x SEMA 0x%x", isr, sema); -+ isr &= INT_PENDING_MASK(isp); -+ sema &= BIU_SEMA_LOCK; -+ if (isr == 0 && sema == 0) { -+ return (0); -+ } -+ *isrp = isr; -+ if ((*semap = sema) != 0) { -+ if (IS_2100(isp)) { -+ if (isp_pci_rd_debounced(pcs, IspVirt2Off(pcs, OUTMAILBOX0), mbp)) { -+ return (0); -+ } -+ } else { -+ *mbp = ispregrd(pcs, IspVirt2Off(pcs, OUTMAILBOX0)); -+ } -+ } -+ return (1); -+} -+ -+#ifndef ISP_DISABLE_2300_SUPPORT -+static INLINE u_int32_t -+ispregrd32(struct isp_pcisoftc *pcs, vm_offset_t offset) -+{ -+ u_int32_t rv; -+ if (pcs->vaddr) { -+ offset += pcs->vaddr; -+ rv = readl(offset); -+ } else { -+ offset += pcs->port; -+ rv = inl(offset); -+ } -+ return (rv); -+} -+ -+static int -+isp_pci_rd_isr_2300(struct ispsoftc *isp, u_int16_t *isrp, -+ u_int16_t *semap, u_int16_t *mbox0p) -+{ -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ u_int32_t r2hisr; -+ -+ /* -+ * Avoid parity errors on the 2312. -+ */ -+ if (!(ispregrd(pcs, IspVirt2Off(pcs, BIU_ISR)) & BIU2100_ISR_RISC_INT)) { -+ *isrp = 0; -+ return (0); -+ } -+ -+ r2hisr = ispregrd32(pcs, IspVirt2Off(pcs, BIU_R2HSTSLO)); -+ isp_prt(isp, ISP_LOGDEBUG3, "RISC2HOST ISR 0x%x", r2hisr); -+ if ((r2hisr & BIU_R2HST_INTR) == 0) { -+ *isrp = 0; -+ return (0); -+ } -+ switch (r2hisr & BIU_R2HST_ISTAT_MASK) { -+ case ISPR2HST_ROM_MBX_OK: -+ case ISPR2HST_ROM_MBX_FAIL: -+ case ISPR2HST_MBX_OK: -+ case ISPR2HST_MBX_FAIL: -+ case ISPR2HST_ASYNC_EVENT: -+ *isrp = r2hisr & 0xffff; -+ *mbox0p = (r2hisr >> 16); -+ *semap = 1; -+ return (1); -+ case ISPR2HST_RIO_16: -+ *isrp = r2hisr & 0xffff; -+ *mbox0p = ASYNC_RIO1; -+ *semap = 1; -+ return (1); -+ case ISPR2HST_FPOST: -+ *isrp = r2hisr & 0xffff; -+ *mbox0p = ASYNC_CMD_CMPLT; -+ *semap = 1; -+ return (1); -+ case ISPR2HST_FPOST_CTIO: -+ *isrp = r2hisr & 0xffff; -+ *mbox0p = ASYNC_CTIO_DONE; -+ *semap = 1; -+ return (1); -+ case ISPR2HST_RSPQ_UPDATE: -+ *isrp = r2hisr & 0xffff; -+ *mbox0p = 0; -+ *semap = 0; -+ return (1); -+ default: -+ return (0); -+ } -+} -+#endif -+ -+static u_int16_t -+isp_pci_rd_reg(struct ispsoftc *isp, int regoff) -+{ -+ u_int16_t rv, oldconf = 0; -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ -+ if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { -+ /* -+ * We will assume that someone has paused the RISC processor. -+ */ -+ oldconf = ispregrd(pcs, IspVirt2Off(pcs, BIU_CONF1)); -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), oldconf | BIU_PCI_CONF1_SXP); -+ } -+ rv = ispregrd(pcs, IspVirt2Off(pcs, regoff)); -+ if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), oldconf); -+ } -+ return (rv); -+} -+ -+static void -+isp_pci_wr_reg(struct ispsoftc *isp, int regoff, u_int16_t val) -+{ -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ u_int16_t oldconf = 0; -+ if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { -+ /* -+ * We will assume that someone has paused the RISC processor. -+ */ -+ oldconf = ispregrd(pcs, IspVirt2Off(pcs, BIU_CONF1)); -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), oldconf | BIU_PCI_CONF1_SXP); -+ } -+ ispregwr(pcs, IspVirt2Off(pcs, regoff), val); -+ if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), oldconf); -+ } -+} -+ -+#if !(defined(ISP_DISABLE_1080_SUPPORT) && defined(ISP_DISABLE_12160_SUPPORT)) -+static u_int16_t -+isp_pci_rd_reg_1080(struct ispsoftc *isp, int regoff) -+{ -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ u_int16_t rv, oldconf = 0; -+ -+ if ((regoff & _BLK_REG_MASK) == SXP_BLOCK || -+ (regoff & _BLK_REG_MASK) == (SXP_BLOCK|SXP_BANK1_SELECT)) { -+ u_int16_t tmpconf; -+ /* -+ * We will assume that someone has paused the RISC processor. -+ */ -+ oldconf = ispregrd(pcs, IspVirt2Off(pcs, BIU_CONF1)); -+ tmpconf = oldconf & ~BIU_PCI1080_CONF1_DMA; -+ if (IS_1280(isp)) { -+ if (regoff & SXP_BANK1_SELECT) { -+ tmpconf |= BIU_PCI1080_CONF1_SXP0; -+ } else { -+ tmpconf |= BIU_PCI1080_CONF1_SXP1; -+ } -+ } else { -+ tmpconf |= BIU_PCI1080_CONF1_SXP0; -+ } -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), tmpconf); -+ } else if ((regoff & _BLK_REG_MASK) == DMA_BLOCK) { -+ oldconf = ispregrd(pcs, IspVirt2Off(pcs, BIU_CONF1)); -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), -+ oldconf | BIU_PCI1080_CONF1_DMA); -+ } -+ rv = ispregrd(pcs, IspVirt2Off(pcs, regoff)); -+ if (oldconf) { -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), oldconf); -+ } -+ return (rv); -+} -+ -+static void -+isp_pci_wr_reg_1080(struct ispsoftc *isp, int regoff, u_int16_t val) -+{ -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ u_int16_t oldconf = 0; -+ -+ if ((regoff & _BLK_REG_MASK) == SXP_BLOCK || -+ (regoff & _BLK_REG_MASK) == (SXP_BLOCK|SXP_BANK1_SELECT)) { -+ u_int16_t tmpconf; -+ /* -+ * We will assume that someone has paused the RISC processor. -+ */ -+ oldconf = ispregrd(pcs, IspVirt2Off(pcs, BIU_CONF1)); -+ tmpconf = oldconf & ~BIU_PCI1080_CONF1_DMA; -+ if (IS_1280(isp)) { -+ if (regoff & SXP_BANK1_SELECT) { -+ tmpconf |= BIU_PCI1080_CONF1_SXP0; -+ } else { -+ tmpconf |= BIU_PCI1080_CONF1_SXP1; -+ } -+ } else { -+ tmpconf |= BIU_PCI1080_CONF1_SXP0; -+ } -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), tmpconf); -+ } else if ((regoff & _BLK_REG_MASK) == DMA_BLOCK) { -+ oldconf = ispregrd(pcs, IspVirt2Off(pcs, BIU_CONF1)); -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), -+ oldconf | BIU_PCI1080_CONF1_DMA); -+ } -+ ispregwr(pcs, IspVirt2Off(pcs, regoff), val); -+ if (oldconf) { -+ ispregwr(pcs, IspVirt2Off(pcs, BIU_CONF1), oldconf); -+ } -+} -+#endif -+ -+static int -+isp_pci_mbxdma(struct ispsoftc *isp) -+{ -+ if (isp->isp_xflist == NULL) { -+ size_t amt = isp->isp_maxcmds * sizeof (XS_T **); -+ isp->isp_xflist = kmalloc(amt, GFP_KERNEL); -+ if (isp->isp_xflist == NULL) { -+ isp_prt(isp, ISP_LOGERR, "unable to allocate xflist array"); -+ return (1); -+ } -+ MEMZERO(isp->isp_xflist, amt); -+ } -+ if (isp->isp_rquest == NULL) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ dma_addr_t busaddr; -+ isp->isp_rquest = -+ pci_alloc_consistent(pcs->pci_dev, -+ RQUEST_QUEUE_LEN(isp) * QENTRY_LEN, &busaddr); -+ if (isp->isp_rquest == NULL) { -+ isp_prt(isp, ISP_LOGERR, "unable to allocate request queue"); -+ return (1); -+ } -+ isp->isp_rquest_dma = busaddr; -+#else -+ isp->isp_rquest = (caddr_t) GetPages(IspOrder(RQUEST_QUEUE_LEN(isp))); -+ if (isp->isp_rquest == NULL) { -+ isp_prt(isp, ISP_LOGERR, "unable to allocate request queue"); -+ return (1); -+ } -+ /* -+ * Map the Request queue. -+ */ -+ isp->isp_rquest_dma = virt_to_bus(isp->isp_rquest); -+#endif -+ if (isp->isp_rquest_dma & 0x3f) { -+ isp_prt(isp, ISP_LOGERR, "Request Queue not on 64 byte boundary"); -+ return (1); -+ } -+ MEMZERO(isp->isp_rquest, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp))); -+ } -+ -+ if (isp->isp_result == NULL) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ dma_addr_t busaddr; -+ isp->isp_result = -+ pci_alloc_consistent(pcs->pci_dev, -+ RESULT_QUEUE_LEN(isp) * QENTRY_LEN, &busaddr); -+ if (isp->isp_result == NULL) { -+ isp_prt(isp, ISP_LOGERR, "unable to allocate result queue"); -+ return (1); -+ } -+ isp->isp_result_dma = busaddr; -+#else -+ isp->isp_result = (caddr_t) GetPages(IspOrder(RESULT_QUEUE_LEN(isp))); -+ if (isp->isp_result == NULL) { -+ isp_prt(isp, ISP_LOGERR, "unable to allocate result queue"); -+ free_pages((unsigned long)isp->isp_rquest, -+ IspOrder(RQUEST_QUEUE_LEN(isp))); -+ return (1); -+ } -+ /* -+ * Map the result queue. -+ */ -+ isp->isp_result_dma = virt_to_bus(isp->isp_result); -+#endif -+ if (isp->isp_rquest_dma & 0x3f) { -+ isp_prt(isp, ISP_LOGERR, "Result Queue not on 64 byte boundary"); -+ return (1); -+ } -+ MEMZERO(isp->isp_result, ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp))); -+ } -+ -+ if (IS_FC(isp)) { -+ fcparam *fcp = isp->isp_param; -+ if (fcp->isp_scratch == NULL) { -+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,3,92) -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ dma_addr_t busaddr; -+ fcp->isp_scratch = -+ pci_alloc_consistent(pcs->pci_dev, ISP2100_SCRLEN, &busaddr); -+ if (fcp->isp_scratch == NULL) { -+ isp_prt(isp, ISP_LOGERR, "unable to allocate scratch space"); -+ return (1); -+ } -+ fcp->isp_scdma = busaddr; -+#else -+ /* -+ * Just get a page.... -+ */ -+ fcp->isp_scratch = (void *) GetPages(1); -+ if (fcp->isp_scratch == NULL) { -+ isp_prt(isp, ISP_LOGERR, "unable to allocate scratch space"); -+ return (1); -+ } -+ fcp->isp_scdma = virt_to_bus((void *)fcp->isp_scratch); -+#endif -+ MEMZERO(fcp->isp_scratch, ISP2100_SCRLEN); -+ if (fcp->isp_scdma & 0x7) { -+ isp_prt(isp, ISP_LOGERR, "scratch space not 8 byte aligned"); -+ return (1); -+ } -+ } -+ } -+ return (0); -+} -+ -+#ifdef LINUX_ISP_TARGET_MODE -+/* -+ * We need to handle DMA for target mode differently from initiator mode. -+ * -+ * DMA mapping and construction and submission of CTIO Request Entries -+ * and rendevous for completion are very tightly coupled because we start -+ * out by knowing (per platform) how much data we have to move, but we -+ * don't know, up front, how many DMA mapping segments will have to be used -+ * cover that data, so we don't know how many CTIO Request Entries we -+ * will end up using. Further, for performance reasons we may want to -+ * (on the last CTIO for Fibre Channel), send status too (if all went well). -+ * -+ * The standard vector still goes through isp_pci_dmasetup, but the callback -+ * for the DMA mapping routines comes here instead with the whole transfer -+ * mapped and a pointer to a partially filled in already allocated request -+ * queue entry. We finish the job. -+ */ -+ -+static int tdma_mk(struct ispsoftc *, tmd_cmd_t *, ct_entry_t *, -+ u_int16_t *, u_int16_t); -+#define STATUS_WITH_DATA 1 -+ -+static int -+tdma_mk(struct ispsoftc *isp, tmd_cmd_t *tcmd, ct_entry_t *cto, -+ u_int16_t *nxtip, u_int16_t optr) -+{ -+ static const char ctx[] = -+ "CTIO[%x] lun %d for iid%d flgs 0x%x sts 0x%x ssts 0x%x res %u %s"; -+ struct scatterlist *sg; -+ ct_entry_t *qe; -+ u_int8_t scsi_status; -+ u_int16_t curi, nxti, handle; -+ u_int32_t sflags; -+ int32_t resid; -+ int nth_ctio, nctios, send_status, nseg; -+ -+ -+ curi = isp->isp_reqidx; -+ qe = (ct_entry_t *) ISP_QUEUE_ENTRY(isp->isp_rquest, isp->isp_reqidx); -+ -+ cto->ct_xfrlen = 0; -+ cto->ct_seg_count = 0; -+ cto->ct_header.rqs_entry_count = 1; -+ MEMZERO(cto->ct_dataseg, sizeof (cto->ct_dataseg)); -+ -+ if (tcmd->cd_xfrlen == 0) { -+ ISP_TDQE(isp, "tdma_mk[no data]", curi, cto); -+ isp_prt(isp, ISP_LOGTDEBUG1, ctx, cto->ct_fwhandle, (int) tcmd->cd_lun, -+ (int) cto->ct_iid, cto->ct_flags, cto->ct_status, -+ cto->ct_scsi_status, cto->ct_resid, ""); -+ isp_put_ctio(isp, cto, qe); -+ return (CMD_QUEUED); -+ } -+ -+ sg = tcmd->cd_data; -+ nseg = 0; -+ resid = (int32_t) tcmd->cd_xfrlen; -+ while (resid > 0) { -+ nseg++; -+ resid -= sg_dma_len(sg); -+ sg++; -+ } -+ sg = tcmd->cd_data; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ { -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ int new_seg_cnt; -+ new_seg_cnt = pci_map_sg(pcs->pci_dev, sg, nseg, -+ (cto->ct_flags & CT_DATA_IN)? PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE); -+ if (new_seg_cnt == 0) { -+ isp_prt(isp, ISP_LOGWARN, "unable to dma map request"); -+ cto->ct_resid = -ENOMEM; -+ return (CMD_COMPLETE); -+ } -+ if (new_seg_cnt != nseg) { -+ isp_prt(isp, ISP_LOGERR, "new seg cnt != old"); -+ cto->ct_resid = -EINVAL; -+ return (CMD_COMPLETE); -+ } -+ } -+#endif -+ nctios = nseg / ISP_RQDSEG; -+ if (nseg % ISP_RQDSEG) { -+ nctios++; -+ } -+ -+ /* -+ * Save handle, and potentially any SCSI status, which -+ * we'll reinsert on the last CTIO we're going to send. -+ */ -+ handle = cto->ct_syshandle; -+ cto->ct_syshandle = 0; -+ cto->ct_header.rqs_seqno = 0; -+ send_status = (cto->ct_flags & CT_SENDSTATUS) != 0; -+ -+ if (send_status) { -+ sflags = cto->ct_flags & (CT_SENDSTATUS | CT_CCINCR); -+ cto->ct_flags &= ~(CT_SENDSTATUS|CT_CCINCR); -+ /* -+ * Preserve residual. -+ */ -+ resid = cto->ct_resid; -+ -+ /* -+ * Save actual SCSI status. -+ */ -+ scsi_status = cto->ct_scsi_status; -+ -+#ifndef STATUS_WITH_DATA -+ sflags |= CT_NO_DATA; -+ /* -+ * We can't do a status at the same time as a data CTIO, so -+ * we need to synthesize an extra CTIO at this level. -+ */ -+ nctios++; -+#endif -+ } else { -+ sflags = scsi_status = resid = 0; -+ } -+ -+ cto->ct_resid = 0; -+ cto->ct_scsi_status = 0; -+ -+ nxti = *nxtip; -+ -+ for (nth_ctio = 0; nth_ctio < nctios; nth_ctio++) { -+ int seglim; -+ -+ seglim = nseg; -+ if (seglim) { -+ int seg; -+ -+ if (seglim > ISP_RQDSEG) -+ seglim = ISP_RQDSEG; -+ -+ for (seg = 0; seg < seglim; seg++, nseg--) { -+ /* -+ * Unlike normal initiator commands, we don't do -+ * any swizzling here. -+ */ -+ cto->ct_dataseg[seg].ds_base = (u_int32_t) sg_dma_address(sg); -+ cto->ct_dataseg[seg].ds_count = (u_int32_t) sg_dma_len(sg); -+ cto->ct_xfrlen += sg_dma_len(sg); -+ sg++; -+ } -+ cto->ct_seg_count = seg; -+ } else { -+ /* -+ * This case should only happen when we're -+ * sending an extra CTIO with final status. -+ */ -+ if (send_status == 0) { -+ isp_prt(isp, ISP_LOGERR, -+ "tdma_mk ran out of segments, no status to send"); -+ return (CMD_EAGAIN); -+ } -+ } -+ -+ /* -+ * At this point, the fields ct_lun, ct_iid, ct_tagval, ct_tagtype, and -+ * ct_timeout have been carried over unchanged from what our caller had -+ * set. -+ * -+ * The dataseg fields and the seg_count fields we just got through -+ * setting. The data direction we've preserved all along and only -+ * clear it if we're now sending status. -+ */ -+ -+ if (nth_ctio == nctios - 1) { -+ /* -+ * We're the last in a sequence of CTIOs, so mark this -+ * CTIO and save the handle to the command such that when -+ * this CTIO completes we can free dma resources and -+ * do whatever else we need to do to finish the rest -+ * of the command. -+ */ -+ cto->ct_syshandle = handle; -+ cto->ct_header.rqs_seqno = 1; -+ -+ if (send_status) { -+ cto->ct_scsi_status = scsi_status; -+ cto->ct_flags |= sflags; -+ cto->ct_resid = resid; -+ } -+ if (send_status) { -+ isp_prt(isp, ISP_LOGTDEBUG1, ctx, -+ cto->ct_fwhandle, (int) tcmd->cd_lun, (int) cto->ct_iid, -+ cto->ct_flags, cto->ct_status, cto->ct_scsi_status, -+ cto->ct_resid, ""); -+ } else { -+ isp_prt(isp, ISP_LOGTDEBUG1, ctx, -+ cto->ct_fwhandle, (int) tcmd->cd_lun, (int) cto->ct_iid, -+ cto->ct_flags, cto->ct_status, cto->ct_scsi_status, -+ cto->ct_resid, ""); -+ } -+ isp_put_ctio(isp, cto, qe); -+ ISP_TDQE(isp, "last tdma_mk", curi, cto); -+ if (nctios > 1) { -+ MEMORYBARRIER(isp, SYNC_REQUEST, curi, QENTRY_LEN); -+ } -+ } else { -+ ct_entry_t *oqe = qe; -+ -+ /* -+ * Make sure handle fields are clean -+ */ -+ cto->ct_syshandle = 0; -+ cto->ct_header.rqs_seqno = 0; -+ -+ isp_prt(isp, ISP_LOGTDEBUG1, -+ "CTIO[%x] lun%d for ID%d ct_flags 0x%x", -+ cto->ct_fwhandle, (int) tcmd->cd_lun, -+ (int) cto->ct_iid, cto->ct_flags); -+ -+ /* -+ * Get a new CTIO -+ */ -+ qe = (ct_entry_t *) ISP_QUEUE_ENTRY(isp->isp_rquest, nxti); -+ nxti = ISP_NXT_QENTRY(nxti, RQUEST_QUEUE_LEN(isp)); -+ if (nxti == optr) { -+ isp_prt(isp, ISP_LOGERR, "queue overflow in tdma_mk"); -+ return (CMD_EAGAIN); -+ } -+ -+ /* -+ * Now that we're done with the old CTIO, -+ * flush it out to the request queue. -+ */ -+ ISP_TDQE(isp, "tdma_mk", curi, cto); -+ isp_put_ctio(isp, cto, oqe); -+ if (nth_ctio != 0) { -+ MEMORYBARRIER(isp, SYNC_REQUEST, curi, QENTRY_LEN); -+ } -+ curi = ISP_NXT_QENTRY(curi, RQUEST_QUEUE_LEN(isp)); -+ -+ /* -+ * Reset some fields in the CTIO so we can reuse -+ * for the next one we'll flush to the request -+ * queue. -+ */ -+ cto->ct_header.rqs_entry_type = RQSTYPE_CTIO; -+ cto->ct_header.rqs_entry_count = 1; -+ cto->ct_header.rqs_flags = 0; -+ cto->ct_status = 0; -+ cto->ct_scsi_status = 0; -+ cto->ct_xfrlen = 0; -+ cto->ct_resid = 0; -+ cto->ct_seg_count = 0; -+ MEMZERO(cto->ct_dataseg, sizeof (cto->ct_dataseg)); -+ } -+ } -+ *nxtip = nxti; -+ return (CMD_QUEUED); -+} -+ -+static int tdma_mkfc(struct ispsoftc *, tmd_cmd_t *, ct2_entry_t *, -+ u_int16_t *, u_int16_t); -+ -+ -+/* -+ * We're passed a pointer to a prototype ct2_entry_t. -+ * -+ * If it doesn't contain any data movement, it has to be for sending status, -+ * possibly with Sense Data as well, so we send a single CTIO2. This should -+ * be a Mode 1 CTIO2, and it's up to the caller to set up the Sense Data -+ * and flags appropriately. -+ * -+ * If it does contain data movement, it may *also* be for sending status -+ * (possibly with Sense Data also). It's possible to describe to the firmware -+ * what we want in one CTIO2. However, under some conditions it is not, -+ * so we must also send a *second* CTIO2 after the first one. -+ * -+ * If the data to be sent is in segments that exceeds that which we can -+ * fit into a CTIO2 (likely, as there's only room for 3 segments), we -+ * utilize normal continuation entries, which get pushed after the -+ * first CTIO2, and possibly are followed by a final CTIO2. -+ * -+ * In any case, it's up to the caller to send us a Mode 0 CTIO2 describing -+ * the data to be moved (if any) and the appropriate flags indicating -+ * status. We'll clear and set as appropriate. We'll also check to see -+ * whether Sense Data is attempting to be sent and retrieve it as appropriate. -+ * -+ * In all cases the caller should not assume that the prototype CTIO2 -+ * has been left unchanged. -+ */ -+ -+static int -+tdma_mkfc(struct ispsoftc *isp, tmd_cmd_t *tmd, ct2_entry_t *cto, -+ u_int16_t *nxtip, u_int16_t optr) -+{ -+ static const char ctx[] = -+ "CTIO2[%x] lun %d for iid %d flgs 0x%x sts 0x%x ssts 0x%x res %d %s"; -+ struct scatterlist *sg; -+ void *qe; -+ ct2_entry_t ct2, *cto2; -+ u_int16_t swd, curi, nxti; -+ u_int32_t bc; -+ long xfcnt; /* must be signed */ -+ int nseg, seg; -+ -+ nxti = *nxtip; -+ curi = isp->isp_reqidx; -+ qe = ISP_QUEUE_ENTRY(isp->isp_rquest, curi); -+ if (cto->ct_flags & CT2_FASTPOST) { -+ if ((tmd->cd_hflags & (CDFH_STSVALID|CDFH_SNSVALID)) != CDFH_STSVALID) { -+ cto->ct_flags &= ~CT2_FASTPOST; -+ } -+ } -+ -+ /* -+ * Handle commands that transfer no data right away. -+ */ -+ if (tmd->cd_xfrlen == 0) { -+ if ((cto->ct_flags & CT2_FLAG_MMASK) != CT2_FLAG_MODE1) { -+ isp_prt(isp, ISP_LOGERR, -+ "tdma_mkfc, a status CTIO2 without MODE1 set (0x%x)", -+ cto->ct_flags); -+ cto->ct_resid = -EINVAL; -+ return (CMD_COMPLETE); -+ } -+ cto->ct_header.rqs_entry_count = 1; -+ cto->ct_header.rqs_seqno = 1; -+ -+ /* ct_syshandle contains the synchronization handle set by caller */ -+ /* -+ * We preserve ct_lun, ct_iid, ct_rxid. We set the data movement -+ * flags to NO DATA and clear relative offset flags. We preserve -+ * ct_resid and the response area. We assume that if there is -+ * associated sense data that it has been appropriately set by -+ * the caller. -+ */ -+ cto->ct_flags |= CT2_NO_DATA; -+ if (cto->ct_resid > 0) -+ cto->rsp.m1.ct_scsi_status |= CT2_DATA_UNDER; -+ else if (cto->ct_resid < 0) -+ cto->rsp.m1.ct_scsi_status |= CT2_DATA_OVER; -+ cto->ct_seg_count = 0; -+ cto->ct_reloff = 0; -+ isp_prt(isp, ISP_LOGTDEBUG1, ctx, cto->ct_rxid, (int) tmd->cd_lun, -+ cto->ct_iid, cto->ct_flags, cto->ct_status, -+ cto->rsp.m1.ct_scsi_status, cto->ct_resid, ""); -+ isp_put_ctio2(isp, cto, qe); -+ ISP_TDQE(isp, "tdma_mkfc[no data]", curi, qe); -+ return (CMD_QUEUED); -+ } -+ -+ if ((cto->ct_flags & CT2_FLAG_MMASK) != CT2_FLAG_MODE0) { -+ isp_prt(isp, ISP_LOGERR, -+ "tdma_mkfc, a data CTIO2 without MODE0 set (0x%x)", cto->ct_flags); -+ cto->ct_resid = -EINVAL; -+ return (CMD_COMPLETE); -+ } -+ -+ /* -+ * First, count and map all S/G segments -+ * -+ * The byte counter has to be signed because -+ * we can have descriptors that are, in fact, -+ * longer than our data transfer count. -+ */ -+ sg = tmd->cd_data; -+ nseg = 0; -+ xfcnt = tmd->cd_xfrlen; -+ while (xfcnt > 0) { -+ nseg++; -+ xfcnt -= sg_dma_len(sg); -+ sg++; -+ } -+ sg = tmd->cd_data; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+ { -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ int new_seg_cnt; -+ new_seg_cnt = pci_map_sg(pcs->pci_dev, sg, nseg, -+ (cto->ct_flags & CT2_DATA_IN)? PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE); -+ if (new_seg_cnt == 0) { -+ isp_prt(isp, ISP_LOGWARN, "unable to dma map request"); -+ cto->ct_resid = -ENOMEM; -+ return (CMD_COMPLETE); -+ } -+ if (new_seg_cnt != nseg) { -+ isp_prt(isp, ISP_LOGERR, "new seg cnt != old"); -+ cto->ct_resid = -EINVAL; -+ return (CMD_COMPLETE); -+ } -+ } -+#endif -+ -+ /* -+ * Second, figure out whether we need to send a final separate CTIO2 -+ * -+ * The 2100/2200 firmware documentation indicates that if we have -+ * good SCSI status (0), but still have a residual, we can still -+ * describe this as part of a Mode 0 CTIO2. The 2300 firmware docs -+ * seem to indicate that if we wish to convey a non-zero residual, -+ * we can't do it as part of a Mode 0 CTIO2. To be safe, as well -+ * as follow the most likely occurrences, we'll push a second -+ * Mode 1 CTIO2 in any case that we have nonzero SCSI status -+ * or a residual. -+ */ -+ swd = cto->rsp.m0.ct_scsi_status; -+ -+ if ((cto->ct_flags & CT2_SENDSTATUS) && ((swd & 0xf) || cto->ct_resid)) { -+ cto2 = &ct2; -+ /* -+ * Copy over CTIO2 -+ */ -+ MEMCPY(cto2, cto, sizeof (ct2_entry_t)); -+ -+ /* -+ * Clear fields from first CTIO2 that now need to be cleared -+ */ -+ cto->ct_flags &= ~(CT2_SENDSTATUS|CT2_CCINCR|CT2_FASTPOST); -+ cto->ct_resid = 0; -+ cto->ct_syshandle = 0; -+ cto->rsp.m0.ct_scsi_status = 0; -+ -+ /* -+ * Reset fields in the second CTIO2 as appropriate. -+ */ -+ cto2->ct_flags &= ~(CT2_FLAG_MMASK|CT2_DATAMASK); -+ cto2->ct_flags |= CT2_NO_DATA|CT2_NO_DATA|CT2_FLAG_MODE1; -+ cto2->ct_seg_count = 0; -+ cto2->ct_reloff = 0; -+ MEMZERO(&cto2->rsp, sizeof (cto2->rsp)); -+ cto2->rsp.m1.ct_scsi_status = swd; -+ if ((swd & 0xf) == SCSI_CHECK && (swd & CT2_SNSLEN_VALID)) { -+ MEMCPY(cto2->rsp.m1.ct_resp, tmd->cd_sense, QLTM_SENSELEN); -+ cto2->rsp.m1.ct_senselen = QLTM_SENSELEN; -+ cto2->rsp.m1.ct_scsi_status |= CT2_SNSLEN_VALID; -+ } -+ } else { -+ cto2 = NULL; -+ } -+ -+ /* -+ * Third, Fill in the data segments in the first CTIO2 itself. -+ */ -+ xfcnt = tmd->cd_xfrlen; -+ cto->ct_seg_count = nseg; -+ -+ for (seg = 0; seg < min(nseg, ISP_RQDSEG_T2); seg++) { -+ cto->rsp.m0.ct_dataseg[seg].ds_base = sg_dma_address(sg); -+ bc = min(sg_dma_len(sg), xfcnt); -+ cto->rsp.m0.ct_dataseg[seg].ds_count = bc; -+ cto->rsp.m0.ct_xfrlen += bc; -+ xfcnt -= bc; -+ isp_prt(isp, ISP_LOGTDEBUG1, " ent0[%d]%lx:%lu", seg, -+ (unsigned long)sg_dma_address(sg), (unsigned long)sg_dma_len(sg)); -+ sg++; -+ } -+ -+ /* -+ * Now do any continuation segments that are required. -+ */ -+ while (seg < nseg) { -+ int curseg; -+ ispcontreq_t local, *crq = &local; -+ -+ qe = (ispcontreq_t *) ISP_QUEUE_ENTRY(isp->isp_rquest, nxti); -+ curi = nxti; -+ nxti = ISP_NXT_QENTRY(curi, RQUEST_QUEUE_LEN(isp)); -+ if (nxti == optr) { -+ isp_prt(isp, ISP_LOGTDEBUG0, -+ "tdma_mkfc: request queue overflow"); -+ cto->ct_resid = -EAGAIN; -+ return (CMD_COMPLETE); -+ } -+ cto->ct_header.rqs_entry_count++; -+ MEMZERO((void *)crq, sizeof (*crq)); -+ crq->req_header.rqs_entry_count = 1; -+ crq->req_header.rqs_entry_type = RQSTYPE_DATASEG; -+ for (curseg = 0; seg < nseg && curseg < ISP_CDSEG; curseg++, seg++) { -+ crq->req_dataseg[curseg].ds_base = sg_dma_address(sg); -+ bc = min(sg_dma_len(sg), xfcnt); -+ crq->req_dataseg[curseg].ds_count = bc; -+ cto->rsp.m0.ct_xfrlen += bc; -+ xfcnt -= bc; -+ isp_prt(isp, ISP_LOGTDEBUG1, " ent%d[%d]%lx:%lu", -+ cto->ct_header.rqs_entry_count - 1, curseg, -+ (unsigned long)sg_dma_address(sg), (unsigned long)bc); -+ sg++; -+ } -+ isp_put_cont_req(isp, crq, (ispcontreq_t *)qe); -+ MEMORYBARRIER(isp, SYNC_REQUEST, curi, QENTRY_LEN); -+ ISP_TDQE(isp, "tdma_mkfc:cont", curi, cto); -+ } -+ -+ /* -+ * If we have a final CTIO2, allocate and push *that* -+ * onto the request queue. -+ */ -+ if (cto2) { -+ qe = (ct2_entry_t *) ISP_QUEUE_ENTRY(isp->isp_rquest, nxti); -+ curi = nxti; -+ nxti = ISP_NXT_QENTRY(curi, RQUEST_QUEUE_LEN(isp)); -+ if (nxti == optr) { -+ isp_prt(isp, ISP_LOGTDEBUG0, -+ "tdma_mkfc: request queue overflow"); -+ cto->ct_resid = -EAGAIN; -+ return (CMD_COMPLETE); -+ } -+ MEMORYBARRIER(isp, SYNC_REQUEST, curi, QENTRY_LEN); -+ isp_put_ctio2(isp, cto2, (ct2_entry_t *)qe); -+ ISP_TDQE(isp, "tdma_mkfc:final", curi, cto2); -+ } -+ qe = ISP_QUEUE_ENTRY(isp->isp_rquest, isp->isp_reqidx); -+ isp_put_ctio2(isp, cto, qe); -+ ISP_TDQE(isp, "tdma_mkfc", isp->isp_reqidx, cto); -+ *nxtip = nxti; -+ return (CMD_QUEUED); -+} -+#endif -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) -+#define FOURG_SEG(x) (((u64) (x)) & 0xffffffff00000000ULL) -+ -+static int -+isp_pci_dmasetup(struct ispsoftc *isp, Scsi_Cmnd *Cmnd, ispreq_t *rq, -+ u_int16_t *nxi, u_int16_t optr) -+{ -+ struct scatterlist *sg, *savesg; -+ DMA_ADDR_T one_shot_addr, last_synthetic_addr; -+ unsigned int one_shot_length, last_synthetic_count; -+ int segcnt, seg, ovseg, seglim; -+ void *h; -+ u_int16_t nxti; -+ -+ -+#ifdef LINUX_ISP_TARGET_MODE -+ if (rq->req_header.rqs_entry_type == RQSTYPE_CTIO || -+ rq->req_header.rqs_entry_type == RQSTYPE_CTIO2) { -+ int s; -+ if (IS_SCSI(isp)) -+ s = tdma_mk(isp, (tmd_cmd_t *)Cmnd, (ct_entry_t *)rq, nxi, optr); -+ else -+ s = tdma_mkfc(isp, (tmd_cmd_t *)Cmnd, (ct2_entry_t *)rq, nxi, optr); -+ return (s); -+ } -+#endif -+ -+ nxti = *nxi; -+ h = (void *) ISP_QUEUE_ENTRY(isp->isp_rquest, isp->isp_reqidx); -+ -+ if (Cmnd->sc_data_direction == SCSI_DATA_NONE || -+ Cmnd->request_bufflen == 0) { -+ rq->req_seg_count = 1; -+ goto mbxsync; -+ } -+ -+ if (IS_FC(isp)) { -+ seglim = ISP_RQDSEG_T2; -+ ((ispreqt2_t *)rq)->req_totalcnt = Cmnd->request_bufflen; -+ if (Cmnd->sc_data_direction == SCSI_DATA_WRITE) { -+ ((ispreqt2_t *)rq)->req_flags |= REQFLAG_DATA_OUT; -+ } else if (Cmnd->sc_data_direction == SCSI_DATA_READ) { -+ ((ispreqt2_t *)rq)->req_flags |= REQFLAG_DATA_IN; -+ } else { -+ isp_prt(isp, ISP_LOGERR, -+ "unkown data direction (%x) for %d byte request (opcode 0x%x)", -+ Cmnd->sc_data_direction, Cmnd->request_bufflen, Cmnd->cmnd[0]); -+ XS_SETERR(Cmnd, HBA_BOTCH); -+ return (CMD_COMPLETE); -+ } -+ } else { -+ if (Cmnd->cmd_len > 12) -+ seglim = 0; -+ else -+ seglim = ISP_RQDSEG; -+ if (Cmnd->sc_data_direction == SCSI_DATA_WRITE) { -+ rq->req_flags |= REQFLAG_DATA_OUT; -+ } else if (Cmnd->sc_data_direction == SCSI_DATA_READ) { -+ rq->req_flags |= REQFLAG_DATA_IN; -+ } else { -+ isp_prt(isp, ISP_LOGERR, -+ "unkown data direction (%x) for %d byte request (opcode 0x%x)", -+ Cmnd->sc_data_direction, Cmnd->request_bufflen, Cmnd->cmnd[0]); -+ XS_SETERR(Cmnd, HBA_BOTCH); -+ return (CMD_COMPLETE); -+ } -+ } -+ -+ one_shot_addr = (DMA_ADDR_T) 0; -+ one_shot_length = 0; -+ if ((segcnt = Cmnd->use_sg) == 0) { -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ segcnt = 1; -+ sg = NULL; -+ one_shot_length = Cmnd->request_bufflen; -+ one_shot_addr = pci_map_single(pcs->pci_dev, -+ Cmnd->request_buffer, Cmnd->request_bufflen, -+ scsi_to_pci_dma_dir(Cmnd->sc_data_direction)); -+ QLA_HANDLE(Cmnd) = (DMA_HTYPE_T) one_shot_addr; -+ } else { -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ sg = (struct scatterlist *) Cmnd->request_buffer; -+ segcnt = pci_map_sg(pcs->pci_dev, sg, Cmnd->use_sg, -+ scsi_to_pci_dma_dir(Cmnd->sc_data_direction)); -+ } -+ if (segcnt == 0) { -+ isp_prt(isp, ISP_LOGWARN, "unable to dma map request"); -+ XS_SETERR(Cmnd, HBA_BOTCH); -+ return (CMD_EAGAIN); -+ } -+ savesg = sg; -+ -+again: -+ last_synthetic_count = 0; -+ last_synthetic_addr = 0; -+ for (seg = 0, rq->req_seg_count = 0; -+ seg < segcnt && rq->req_seg_count < seglim; -+ seg++, rq->req_seg_count++) { -+ DMA_ADDR_T addr; -+ unsigned int length; -+ -+ if (sg) { -+ length = QLA_SG_C(sg); -+ addr = QLA_SG_A(sg); -+ sg++; -+ } else { -+ length = one_shot_length; -+ addr = one_shot_addr; -+ } -+ -+ if (ISP_A64 && IS_HIGH_ISP_ADDR(addr)) { -+ if (IS_FC(isp)) { -+ if (rq->req_header.rqs_entry_type != RQSTYPE_T3RQS) { -+ rq->req_header.rqs_entry_type = RQSTYPE_T3RQS; -+ seglim = ISP_RQDSEG_T3; -+ sg = savesg; -+ goto again; -+ } -+ } else { -+ if (rq->req_header.rqs_entry_type != RQSTYPE_A64) { -+ rq->req_header.rqs_entry_type = RQSTYPE_A64; -+ seglim = ISP_RQDSEG_A64; -+ sg = savesg; -+ goto again; -+ } -+ } -+ } -+ if (ISP_A64 && rq->req_header.rqs_entry_type == RQSTYPE_T3RQS) { -+ ispreqt3_t *rq3 = (ispreqt3_t *)rq; -+ rq3->req_dataseg[rq3->req_seg_count].ds_count = length; -+ rq3->req_dataseg[rq3->req_seg_count].ds_base = LOWD(addr); -+ rq3->req_dataseg[rq3->req_seg_count].ds_basehi = HIWD(addr); -+ /* -+ * Make sure we don't cross a 4GB boundary. -+ */ -+ if (FOURG_SEG(addr) != FOURG_SEG(addr + length)) { -+ isp_prt(isp, ISP_LOGDEBUG1, "seg0[%d]%llx:%u (TRUNC'd)", -+ rq->req_seg_count, (long long)addr, length); -+ rq3->req_dataseg[rq3->req_seg_count].ds_count = -+ (unsigned int) (FOURG_SEG(addr + length) - addr); -+ addr += rq3->req_dataseg[rq3->req_seg_count].ds_count; -+ length -= rq3->req_dataseg[rq3->req_seg_count].ds_count; -+ /* -+ * Do we have space to split it here? -+ */ -+ if (rq3->req_seg_count == seglim - 1) { -+ last_synthetic_count = length; -+ last_synthetic_addr = addr; -+ } else { -+ rq3->req_seg_count++; -+ rq3->req_dataseg[rq3->req_seg_count].ds_count = length; -+ rq3->req_dataseg[rq3->req_seg_count].ds_base = LOWD(addr); -+ rq3->req_dataseg[rq3->req_seg_count].ds_basehi = HIWD(addr); -+ } -+ } -+ } else if (ISP_A64 && rq->req_header.rqs_entry_type == RQSTYPE_A64) { -+ ispreq64_t *rq6 = (ispreq64_t *)rq; -+ rq6->req_dataseg[rq6->req_seg_count].ds_count = length; -+ rq6->req_dataseg[rq6->req_seg_count].ds_base = LOWD(addr); -+ rq6->req_dataseg[rq6->req_seg_count].ds_basehi = HIWD(addr); -+ /* -+ * Make sure we don't cross a 4GB boundary. -+ */ -+ if (FOURG_SEG(addr) != FOURG_SEG(addr + length)) { -+ isp_prt(isp, ISP_LOGDEBUG1, "seg0[%d]%llx:%u (TRUNC'd)", -+ rq->req_seg_count, (long long)addr, length); -+ rq6->req_dataseg[rq6->req_seg_count].ds_count = -+ (unsigned int) (FOURG_SEG(addr + length) - addr); -+ addr += rq6->req_dataseg[rq6->req_seg_count].ds_count; -+ length -= rq6->req_dataseg[rq6->req_seg_count].ds_count; -+ /* -+ * Do we have space to split it here? -+ */ -+ if (rq6->req_seg_count == seglim - 1) { -+ last_synthetic_count = length; -+ last_synthetic_addr = LOWD(addr); -+ } else { -+ rq6->req_seg_count++; -+ rq6->req_dataseg[rq6->req_seg_count].ds_count = length; -+ rq6->req_dataseg[rq6->req_seg_count].ds_base = LOWD(addr); -+ rq6->req_dataseg[rq6->req_seg_count].ds_basehi = HIWD(addr); -+ } -+ } -+ } else if (rq->req_header.rqs_entry_type == RQSTYPE_T2RQS) { -+ ispreqt2_t *rq2 = (ispreqt2_t *)rq; -+ rq2->req_dataseg[rq2->req_seg_count].ds_count = length; -+ rq2->req_dataseg[rq2->req_seg_count].ds_base = addr; -+ } else { -+ rq->req_dataseg[rq->req_seg_count].ds_count = length; -+ rq->req_dataseg[rq->req_seg_count].ds_base = addr; -+ } -+ isp_prt(isp, ISP_LOGDEBUG1, "seg0[%d]%llx:%u", -+ rq->req_seg_count, (long long)addr, length); -+ } -+ -+ if (seg == segcnt && last_synthetic_count == 0) { -+ goto mbxsync; -+ } -+ -+ do { -+ int lim; -+ u_int16_t curip; -+ ispcontreq_t local, *crq = &local, *qep; -+ -+ curip = nxti; -+ qep = (ispcontreq_t *) ISP_QUEUE_ENTRY(isp->isp_rquest, curip); -+ nxti = ISP_NXT_QENTRY((curip), RQUEST_QUEUE_LEN(isp)); -+ if (nxti == optr) { -+ isp_pci_dmateardown(isp, Cmnd, 0); -+ isp_prt(isp, ISP_LOGDEBUG0, "out of space for continuations"); -+ XS_SETERR(Cmnd, HBA_BOTCH); -+ return (CMD_EAGAIN); -+ } -+ rq->req_header.rqs_entry_count++; -+ MEMZERO((void *)crq, sizeof (*crq)); -+ crq->req_header.rqs_entry_count = 1; -+ if (rq->req_header.rqs_entry_type == RQSTYPE_T3RQS || -+ rq->req_header.rqs_entry_type == RQSTYPE_A64) { -+ crq->req_header.rqs_entry_type = RQSTYPE_A64_CONT; -+ lim = ISP_CDSEG64; -+ } else { -+ crq->req_header.rqs_entry_type = RQSTYPE_DATASEG; -+ lim = ISP_CDSEG; -+ } -+ -+ for (ovseg = 0; (seg < segcnt || last_synthetic_count) && ovseg < lim; -+ rq->req_seg_count++, seg++, ovseg++, sg++) { -+ DMA_ADDR_T addr; -+ unsigned int length; -+ -+ if (last_synthetic_count) { -+ addr = last_synthetic_addr; -+ length = last_synthetic_count; -+ last_synthetic_count = 0; -+ sg--; -+ seg--; -+ } else { -+ addr = QLA_SG_A(sg); -+ length = QLA_SG_C(sg); -+ } -+ -+ if (length == 0) { -+ panic("zero length s-g element at line %d", __LINE__); -+ } -+ isp_prt(isp, ISP_LOGDEBUG1, "seg%d[%d]%llx:%u", -+ rq->req_header.rqs_entry_count-1, ovseg, -+ (unsigned long long) addr, length); -+ -+ if (crq->req_header.rqs_entry_type == RQSTYPE_A64_CONT) { -+ ispcontreq64_t *xrq = (ispcontreq64_t *) crq; -+ xrq->req_dataseg[ovseg].ds_count = length; -+ xrq->req_dataseg[ovseg].ds_base = LOWD(addr); -+ xrq->req_dataseg[ovseg].ds_basehi = HIWD(addr); -+ /* -+ * Make sure we don't cross a 4GB boundary. -+ */ -+ if (FOURG_SEG(addr) != FOURG_SEG(addr + length)) { -+ isp_prt(isp, ISP_LOGDEBUG1, "seg0[%d]%llx:%u (TRUNC'd)", -+ rq->req_seg_count, (long long)addr, length); -+ xrq->req_dataseg[ovseg].ds_count = -+ (unsigned int) (FOURG_SEG(addr + length) - addr); -+ addr += xrq->req_dataseg[ovseg].ds_count; -+ length -= xrq->req_dataseg[ovseg].ds_count; -+ /* -+ * Do we have space to split it here? -+ */ -+ if (ovseg == lim - 1) { -+ last_synthetic_count = length; -+ last_synthetic_addr = addr; -+ } else { -+ ovseg++; -+ xrq->req_dataseg[ovseg].ds_count = length; -+ xrq->req_dataseg[ovseg].ds_base = LOWD(addr); -+ xrq->req_dataseg[ovseg].ds_basehi = HIWD(addr); -+ } -+ } -+ continue; -+ } -+ /* -+ * We get here if we're a 32 bit continuation entry. -+ * We also check for being over 32 bits with our PCI -+ * address. If we are, we set ourselves up to do 64 -+ * bit addressing and start the whole mapping process -+ * all over again- we apparently can't really mix types -+ */ -+ if (ISP_A64 && IS_HIGH_ISP_ADDR(addr)) { -+ if (IS_FC(isp)) { -+ rq->req_header.rqs_entry_type = RQSTYPE_T3RQS; -+ seglim = ISP_RQDSEG_T3; -+ } else { -+ rq->req_header.rqs_entry_type = RQSTYPE_A64; -+ seglim = ISP_RQDSEG_A64; -+ } -+ sg = savesg; -+ nxti = *nxi; -+ rq->req_header.rqs_entry_count = 1; -+ goto again; -+ } -+ crq->req_dataseg[ovseg].ds_count = length; -+ crq->req_dataseg[ovseg].ds_base = addr; -+ } -+ MEMORYBARRIER(isp, SYNC_REQUEST, curip, QENTRY_LEN); -+ if (crq->req_header.rqs_entry_type == RQSTYPE_A64_CONT) { -+ isp_put_cont64_req(isp, -+ (ispcontreq64_t *)crq, (ispcontreq64_t *)qep); -+ } else { -+ isp_put_cont_req(isp, crq, qep); -+ } -+ } while (seg < segcnt || last_synthetic_count); -+mbxsync: -+ if (rq->req_header.rqs_entry_type == RQSTYPE_T3RQS) { -+ isp_put_request_t3(isp, (ispreqt3_t *) rq, (ispreqt3_t *) h); -+ } else if (rq->req_header.rqs_entry_type == RQSTYPE_T2RQS) { -+ isp_put_request_t2(isp, (ispreqt2_t *) rq, (ispreqt2_t *) h); -+ } else { -+ isp_put_request(isp, (ispreq_t *) rq, (ispreq_t *) h); -+ } -+ *nxi = nxti; -+ return (CMD_QUEUED); -+} -+ -+static void -+isp_pci_dmateardown(struct ispsoftc *isp, Scsi_Cmnd *Cmnd, u_int16_t handle) -+{ -+#ifdef LINUX_ISP_TARGET_MODE -+ if (Cmnd->sc_magic != SCSI_CMND_MAGIC) { -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp; -+ tmd_cmd_t *tmd = (tmd_cmd_t *) Cmnd; -+ struct scatterlist *sg = tmd->cd_data; -+ int nseg = 0; -+ -+ while (sg->address) { -+ nseg++; -+ sg++; -+ } -+ pci_unmap_sg(pcs->pci_dev, tmd->cd_data, nseg, -+ (tmd->cd_hflags & CDFH_DATA_IN)? PCI_DMA_TODEVICE : -+ PCI_DMA_FROMDEVICE); -+ } else -+#endif -+ if (Cmnd->sc_data_direction != SCSI_DATA_NONE) { -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp; -+ if (Cmnd->use_sg) { -+ pci_unmap_sg(pcs->pci_dev, (struct scatterlist *)Cmnd->buffer, -+ Cmnd->use_sg, scsi_to_pci_dma_dir(Cmnd->sc_data_direction)); -+ } else if (Cmnd->request_bufflen) { -+ DMA_ADDR_T handle = (DMA_ADDR_T) QLA_HANDLE(Cmnd); -+ pci_unmap_single(pcs->pci_dev, handle, Cmnd->request_bufflen, -+ scsi_to_pci_dma_dir(Cmnd->sc_data_direction)); -+ } -+ } -+} -+ -+#else -+ -+static int -+isp_pci_dmasetup(struct ispsoftc *isp, Scsi_Cmnd *Cmnd, ispreq_t *rq, -+ u_int16_t *nxi, u_int16_t optr) -+{ -+ struct scatterlist *sg; -+ DMA_ADDR_T one_shot_addr; -+ unsigned int one_shot_length; -+ int segcnt, seg, ovseg, seglim; -+ void *h; -+ u_int16_t nxti; -+ -+#ifdef LINUX_ISP_TARGET_MODE -+ if (rq->req_header.rqs_entry_type == RQSTYPE_CTIO || -+ rq->req_header.rqs_entry_type == RQSTYPE_CTIO2) { -+ int s; -+ if (IS_SCSI(isp)) -+ s = tdma_mk(isp, (tmd_cmd_t *)Cmnd, (ct_entry_t *)rq, nxi, optr); -+ else -+ s = tdma_mkfc(isp, (tmd_cmd_t *)Cmnd, (ct2_entry_t *)rq, nxi, optr); -+ return (s); -+ } -+#endif -+ -+ nxti = *nxi; -+ h = (void *) ISP_QUEUE_ENTRY(isp->isp_rquest, isp->isp_reqidx); -+ -+ if (Cmnd->request_bufflen == 0) { -+ rq->req_seg_count = 1; -+ goto mbxsync; -+ } -+ -+ if (IS_FC(isp)) { -+ if (rq->req_header.rqs_entry_type == RQSTYPE_T3RQS) -+ seglim = ISP_RQDSEG_T3; -+ else -+ seglim = ISP_RQDSEG_T2; -+ ((ispreqt2_t *)rq)->req_totalcnt = Cmnd->request_bufflen; -+ /* -+ * Linux doesn't make it easy to tell which direction -+ * the data is expected to go, and you really need to -+ * know this for FC. We'll have to assume that some -+ * of these commands that might be used for writes -+ * our outbounds and all else are inbound. -+ */ -+ switch (Cmnd->cmnd[0]) { -+ case FORMAT_UNIT: -+ case WRITE_6: -+ case MODE_SELECT: -+ case SEND_DIAGNOSTIC: -+ case WRITE_10: -+ case WRITE_BUFFER: -+ case WRITE_LONG: -+ case WRITE_SAME: -+ case MODE_SELECT_10: -+ case WRITE_12: -+ case WRITE_VERIFY_12: -+ case SEND_VOLUME_TAG: -+ ((ispreqt2_t *)rq)->req_flags |= REQFLAG_DATA_OUT; -+ break; -+ default: -+ ((ispreqt2_t *)rq)->req_flags |= REQFLAG_DATA_IN; -+ } -+ } else { -+ if (Cmnd->cmd_len > 12) -+ seglim = 0; -+ else -+ seglim = ISP_RQDSEG; -+ rq->req_flags |= REQFLAG_DATA_OUT | REQFLAG_DATA_IN; -+ } -+ -+ one_shot_addr = (DMA_ADDR_T) 0; -+ one_shot_length = 0; -+ if ((segcnt = Cmnd->use_sg) == 0) { -+ segcnt = 1; -+ sg = NULL; -+ one_shot_length = Cmnd->request_bufflen; -+ one_shot_addr = virt_to_bus(Cmnd->request_buffer); -+ } else { -+ sg = (struct scatterlist *) Cmnd->request_buffer; -+ } -+ if (segcnt == 0) { -+ isp_prt(isp, ISP_LOGWARN, "unable to dma map request"); -+ XS_SETERR(Cmnd, HBA_BOTCH); -+ return (CMD_EAGAIN); -+ } -+ -+ for (seg = 0, rq->req_seg_count = 0; -+ seg < segcnt && rq->req_seg_count < seglim; -+ seg++, rq->req_seg_count++) { -+ DMA_ADDR_T addr; -+ unsigned int length; -+ -+ if (sg) { -+ length = QLA_SG_C(sg); -+ addr = QLA_SG_A(sg); -+ sg++; -+ } else { -+ length = one_shot_length; -+ addr = one_shot_addr; -+ } -+ -+ if (rq->req_header.rqs_entry_type == RQSTYPE_T2RQS) { -+ ispreqt2_t *rq2 = (ispreqt2_t *)rq; -+ rq2->req_dataseg[rq2->req_seg_count].ds_count = length; -+ rq2->req_dataseg[rq2->req_seg_count].ds_base = addr; -+ } else { -+ rq->req_dataseg[rq->req_seg_count].ds_count = length; -+ rq->req_dataseg[rq->req_seg_count].ds_base = addr; -+ } -+ isp_prt(isp, ISP_LOGDEBUG1, "seg0[%d]%llx:%u from %p", seg, -+ (long long)addr, length, sg? sg->address : Cmnd->request_buffer); -+ } -+ -+ if (seg == segcnt) { -+ goto mbxsync; -+ } -+ -+ do { -+ int lim; -+ u_int16_t curip; -+ ispcontreq_t local, *crq = &local, *qep; -+ -+ curip = nxti; -+ qep = (ispcontreq_t *) ISP_QUEUE_ENTRY(isp->isp_rquest, curip); -+ nxti = ISP_NXT_QENTRY((curip), RQUEST_QUEUE_LEN(isp)); -+ if (nxti == optr) { -+ isp_prt(isp, ISP_LOGDEBUG0, "out of space for continuations"); -+ XS_SETERR(Cmnd, HBA_BOTCH); -+ return (CMD_EAGAIN); -+ } -+ rq->req_header.rqs_entry_count++; -+ MEMZERO((void *)crq, sizeof (*crq)); -+ crq->req_header.rqs_entry_count = 1; -+ if (rq->req_header.rqs_entry_type == RQSTYPE_T3RQS) { -+ lim = ISP_CDSEG64; -+ crq->req_header.rqs_entry_type = RQSTYPE_A64_CONT; -+ } else { -+ lim = ISP_CDSEG; -+ crq->req_header.rqs_entry_type = RQSTYPE_DATASEG; -+ } -+ -+ for (ovseg = 0; seg < segcnt && ovseg < lim; -+ rq->req_seg_count++, seg++, ovseg++, sg++) { -+ if (sg_dma_len(sg) == 0) { -+ panic("zero length s-g element at line %d", __LINE__); -+ } -+ crq->req_dataseg[ovseg].ds_count = QLA_SG_C(sg); -+ crq->req_dataseg[ovseg].ds_base = QLA_SG_A(sg); -+ isp_prt(isp, ISP_LOGDEBUG1, "seg%d[%d]%llx:%u from %p", -+ rq->req_header.rqs_entry_count-1, ovseg, -+ (unsigned long long) QLA_SG_A(sg), QLA_SG_C(sg), sg->address); -+ } -+ MEMORYBARRIER(isp, SYNC_REQUEST, curip, QENTRY_LEN); -+ isp_put_cont_req(isp, crq, qep); -+ } while (seg < segcnt); -+mbxsync: -+ if (rq->req_header.rqs_entry_type == RQSTYPE_T3RQS) { -+ isp_put_request_t3(isp, (ispreqt3_t *) rq, (ispreqt3_t *) h); -+ } else if (rq->req_header.rqs_entry_type == RQSTYPE_T2RQS) { -+ isp_put_request_t2(isp, (ispreqt2_t *) rq, (ispreqt2_t *) h); -+ } else { -+ isp_put_request(isp, (ispreq_t *) rq, (ispreq_t *) h); -+ } -+ *nxi = nxti; -+ return (CMD_QUEUED); -+} -+#endif -+ -+static void -+isp_pci_reset1(struct ispsoftc *isp) -+{ -+ isp_pci_wr_reg(isp, HCCR, PCI_HCCR_CMD_BIOS); -+ ENABLE_INTS(isp); -+ isp->mbintsok = 1; -+} -+ -+static void -+isp_pci_dumpregs(struct ispsoftc *isp, const char *msg) -+{ -+ struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; -+ u_int16_t csr; -+ -+ pci_read_config_word(pcs->pci_dev, PCI_COMMAND, &csr); -+ printk("%s: ", isp->isp_name); -+ if (msg) -+ printk("%s\n", msg); -+ if (IS_SCSI(isp)) -+ printk(" biu_conf1=%x", ISP_READ(isp, BIU_CONF1)); -+ else -+ printk(" biu_csr=%x", ISP_READ(isp, BIU2100_CSR)); -+ printk(" biu_icr=%x biu_isr=%x biu_sema=%x ", ISP_READ(isp, BIU_ICR), -+ ISP_READ(isp, BIU_ISR), ISP_READ(isp, BIU_SEMA)); -+ printk("risc_hccr=%x\n", ISP_READ(isp, HCCR)); -+ if (IS_SCSI(isp)) { -+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); -+ printk(" cdma_conf=%x cdma_sts=%x cdma_fifostat=%x\n", -+ ISP_READ(isp, CDMA_CONF), ISP_READ(isp, CDMA_STATUS), -+ ISP_READ(isp, CDMA_FIFO_STS)); -+ printk(" ddma_conf=%x ddma_sts=%x ddma_fifostat=%x\n", -+ ISP_READ(isp, DDMA_CONF), ISP_READ(isp, DDMA_STATUS), -+ ISP_READ(isp, DDMA_FIFO_STS)); -+ printk(" sxp_int=%x sxp_gross=%x sxp(scsi_ctrl)=%x\n", -+ ISP_READ(isp, SXP_INTERRUPT), -+ ISP_READ(isp, SXP_GROSS_ERR), -+ ISP_READ(isp, SXP_PINS_CTRL)); -+ ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); -+ } -+ printk(" mbox regs: %x %x %x %x %x\n", -+ ISP_READ(isp, OUTMAILBOX0), ISP_READ(isp, OUTMAILBOX1), -+ ISP_READ(isp, OUTMAILBOX2), ISP_READ(isp, OUTMAILBOX3), -+ ISP_READ(isp, OUTMAILBOX4)); -+ printk(" PCI Status Command/Status=%x\n", csr); -+} -+ -+#ifdef MODULE -+MODULE_PARM(isp_pci_mapmem, "i"); -+#endif -+/* -+ * mode: c -+ * Local variables: -+ * c-indent-level: 4 -+ * c-brace-imaginary-offset: 0 -+ * c-brace-offset: -4 -+ * c-argdecl-indent: 4 -+ * c-label-offset: -4 -+ * c-continued-statement-offset: 4 -+ * c-continued-brace-offset: 0 -+ * End: -+ */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/ispreg.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,1011 @@ -+/* @(#)ispreg.h 1.6 */ -+/* -+ * Machine Independent (well, as best as possible) register -+ * definitions for Qlogic ISP SCSI adapters. -+ * -+ * Copyright (c) 1997, 1998, 1999, 2000 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice immediately at the beginning of the file, without modification, -+ * this list of conditions, and the following disclaimer. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+#ifndef _ISPREG_H -+#define _ISPREG_H -+ -+/* -+ * Hardware definitions for the Qlogic ISP registers. -+ */ -+ -+/* -+ * This defines types of access to various registers. -+ * -+ * R: Read Only -+ * W: Write Only -+ * RW: Read/Write -+ * -+ * R*, W*, RW*: Read Only, Write Only, Read/Write, but only -+ * if RISC processor in ISP is paused. -+ */ -+ -+/* -+ * Offsets for various register blocks. -+ * -+ * Sad but true, different architectures have different offsets. -+ * -+ * Don't be alarmed if none of this makes sense. The original register -+ * layout set some defines in a certain pattern. Everything else has been -+ * grafted on since. For example, the ISP1080 manual will state that DMA -+ * registers start at 0x80 from the base of the register address space. -+ * That's true, but for our purposes, we define DMA_REGS_OFF for the 1080 -+ * to start at offset 0x60 because the DMA registers are all defined to -+ * be DMA_BLOCK+0x20 and so on. Clear? -+ */ -+ -+#define BIU_REGS_OFF 0x00 -+ -+#define PCI_MBOX_REGS_OFF 0x70 -+#define PCI_MBOX_REGS2100_OFF 0x10 -+#define PCI_MBOX_REGS2300_OFF 0x40 -+#define SBUS_MBOX_REGS_OFF 0x80 -+ -+#define PCI_SXP_REGS_OFF 0x80 -+#define SBUS_SXP_REGS_OFF 0x200 -+ -+#define PCI_RISC_REGS_OFF 0x80 -+#define SBUS_RISC_REGS_OFF 0x400 -+ -+/* Bless me! Chip designers have putzed it again! */ -+#define ISP1080_DMA_REGS_OFF 0x60 -+#define DMA_REGS_OFF 0x00 /* same as BIU block */ -+ -+#define SBUS_REGSIZE 0x450 -+#define PCI_REGSIZE 0x100 -+ -+/* -+ * NB: The *_BLOCK definitions have no specific hardware meaning. -+ * They serve simply to note to the MD layer which block of -+ * registers offsets are being accessed. -+ */ -+#define _NREG_BLKS 5 -+#define _BLK_REG_SHFT 13 -+#define _BLK_REG_MASK (7 << _BLK_REG_SHFT) -+#define BIU_BLOCK (0 << _BLK_REG_SHFT) -+#define MBOX_BLOCK (1 << _BLK_REG_SHFT) -+#define SXP_BLOCK (2 << _BLK_REG_SHFT) -+#define RISC_BLOCK (3 << _BLK_REG_SHFT) -+#define DMA_BLOCK (4 << _BLK_REG_SHFT) -+ -+/* -+ * Bus Interface Block Register Offsets -+ */ -+ -+#define BIU_ID_LO (BIU_BLOCK+0x0) /* R : Bus ID, Low */ -+#define BIU2100_FLASH_ADDR (BIU_BLOCK+0x0) -+#define BIU_ID_HI (BIU_BLOCK+0x2) /* R : Bus ID, High */ -+#define BIU2100_FLASH_DATA (BIU_BLOCK+0x2) -+#define BIU_CONF0 (BIU_BLOCK+0x4) /* R : Bus Configuration #0 */ -+#define BIU_CONF1 (BIU_BLOCK+0x6) /* R : Bus Configuration #1 */ -+#define BIU2100_CSR (BIU_BLOCK+0x6) -+#define BIU_ICR (BIU_BLOCK+0x8) /* RW : Bus Interface Ctrl */ -+#define BIU_ISR (BIU_BLOCK+0xA) /* R : Bus Interface Status */ -+#define BIU_SEMA (BIU_BLOCK+0xC) /* RW : Bus Semaphore */ -+#define BIU_NVRAM (BIU_BLOCK+0xE) /* RW : Bus NVRAM */ -+/* -+ * These are specific to the 2300. -+ * -+ * They *claim* you can read BIU_R2HSTSLO with a full 32 bit access -+ * and get both registers, but I'm a bit dubious about that. But the -+ * point here is that the top 16 bits are firmware defined bits that -+ * the RISC processor uses to inform the host about something- usually -+ * something which was nominally in a mailbox register. -+ */ -+#define BIU_REQINP (BIU_BLOCK+0x10) /* Request Queue In */ -+#define BIU_REQOUTP (BIU_BLOCK+0x12) /* Request Queue Out */ -+#define BIU_RSPINP (BIU_BLOCK+0x14) /* Response Queue In */ -+#define BIU_RSPOUTP (BIU_BLOCK+0x16) /* Response Queue Out */ -+ -+#define BIU_R2HSTSLO (BIU_BLOCK+0x18) -+#define BIU_R2HSTSHI (BIU_BLOCK+0x1A) -+ -+#define BIU_R2HST_INTR (1 << 15) /* RISC to Host Interrupt */ -+#define BIU_R2HST_PAUSED (1 << 8) /* RISC paused */ -+#define BIU_R2HST_ISTAT_MASK 0x3f /* intr information && status */ -+#define ISPR2HST_ROM_MBX_OK 0x1 /* ROM mailbox cmd done ok */ -+#define ISPR2HST_ROM_MBX_FAIL 0x2 /* ROM mailbox cmd done fail */ -+#define ISPR2HST_MBX_OK 0x10 /* mailbox cmd done ok */ -+#define ISPR2HST_MBX_FAIL 0x11 /* mailbox cmd done fail */ -+#define ISPR2HST_ASYNC_EVENT 0x12 /* Async Event */ -+#define ISPR2HST_RSPQ_UPDATE 0x13 /* Response Queue Update */ -+#define ISPR2HST_RQST_UPDATE 0x14 /* Resquest Queue Update */ -+#define ISPR2HST_RIO_16 0x15 /* RIO 1-16 */ -+#define ISPR2HST_FPOST 0x16 /* Low 16 bits fast post */ -+#define ISPR2HST_FPOST_CTIO 0x17 /* Low 16 bits fast post ctio */ -+ -+#define DFIFO_COMMAND (BIU_BLOCK+0x60) /* RW : Command FIFO Port */ -+#define RDMA2100_CONTROL DFIFO_COMMAND -+#define DFIFO_DATA (BIU_BLOCK+0x62) /* RW : Data FIFO Port */ -+ -+/* -+ * Putzed DMA register layouts. -+ */ -+#define CDMA_CONF (DMA_BLOCK+0x20) /* RW*: DMA Configuration */ -+#define CDMA2100_CONTROL CDMA_CONF -+#define CDMA_CONTROL (DMA_BLOCK+0x22) /* RW*: DMA Control */ -+#define CDMA_STATUS (DMA_BLOCK+0x24) /* R : DMA Status */ -+#define CDMA_FIFO_STS (DMA_BLOCK+0x26) /* R : DMA FIFO Status */ -+#define CDMA_COUNT (DMA_BLOCK+0x28) /* RW*: DMA Transfer Count */ -+#define CDMA_ADDR0 (DMA_BLOCK+0x2C) /* RW*: DMA Address, Word 0 */ -+#define CDMA_ADDR1 (DMA_BLOCK+0x2E) /* RW*: DMA Address, Word 1 */ -+#define CDMA_ADDR2 (DMA_BLOCK+0x30) /* RW*: DMA Address, Word 2 */ -+#define CDMA_ADDR3 (DMA_BLOCK+0x32) /* RW*: DMA Address, Word 3 */ -+ -+#define DDMA_CONF (DMA_BLOCK+0x40) /* RW*: DMA Configuration */ -+#define TDMA2100_CONTROL DDMA_CONF -+#define DDMA_CONTROL (DMA_BLOCK+0x42) /* RW*: DMA Control */ -+#define DDMA_STATUS (DMA_BLOCK+0x44) /* R : DMA Status */ -+#define DDMA_FIFO_STS (DMA_BLOCK+0x46) /* R : DMA FIFO Status */ -+#define DDMA_COUNT_LO (DMA_BLOCK+0x48) /* RW*: DMA Xfer Count, Low */ -+#define DDMA_COUNT_HI (DMA_BLOCK+0x4A) /* RW*: DMA Xfer Count, High */ -+#define DDMA_ADDR0 (DMA_BLOCK+0x4C) /* RW*: DMA Address, Word 0 */ -+#define DDMA_ADDR1 (DMA_BLOCK+0x4E) /* RW*: DMA Address, Word 1 */ -+/* these are for the 1040A cards */ -+#define DDMA_ADDR2 (DMA_BLOCK+0x50) /* RW*: DMA Address, Word 2 */ -+#define DDMA_ADDR3 (DMA_BLOCK+0x52) /* RW*: DMA Address, Word 3 */ -+ -+ -+/* -+ * Bus Interface Block Register Definitions -+ */ -+/* BUS CONFIGURATION REGISTER #0 */ -+#define BIU_CONF0_HW_MASK 0x000F /* Hardware revision mask */ -+/* BUS CONFIGURATION REGISTER #1 */ -+ -+#define BIU_SBUS_CONF1_PARITY 0x0100 /* Enable parity checking */ -+#define BIU_SBUS_CONF1_FCODE_MASK 0x00F0 /* Fcode cycle mask */ -+ -+#define BIU_PCI_CONF1_FIFO_128 0x0040 /* 128 bytes FIFO threshold */ -+#define BIU_PCI_CONF1_FIFO_64 0x0030 /* 64 bytes FIFO threshold */ -+#define BIU_PCI_CONF1_FIFO_32 0x0020 /* 32 bytes FIFO threshold */ -+#define BIU_PCI_CONF1_FIFO_16 0x0010 /* 16 bytes FIFO threshold */ -+#define BIU_BURST_ENABLE 0x0004 /* Global enable Bus bursts */ -+#define BIU_SBUS_CONF1_FIFO_64 0x0003 /* 64 bytes FIFO threshold */ -+#define BIU_SBUS_CONF1_FIFO_32 0x0002 /* 32 bytes FIFO threshold */ -+#define BIU_SBUS_CONF1_FIFO_16 0x0001 /* 16 bytes FIFO threshold */ -+#define BIU_SBUS_CONF1_FIFO_8 0x0000 /* 8 bytes FIFO threshold */ -+#define BIU_SBUS_CONF1_BURST8 0x0008 /* Enable 8-byte bursts */ -+#define BIU_PCI_CONF1_SXP 0x0008 /* SXP register select */ -+ -+#define BIU_PCI1080_CONF1_SXP0 0x0100 /* SXP bank #1 select */ -+#define BIU_PCI1080_CONF1_SXP1 0x0200 /* SXP bank #2 select */ -+#define BIU_PCI1080_CONF1_DMA 0x0300 /* DMA bank select */ -+ -+/* ISP2100 Bus Control/Status Register */ -+ -+#define BIU2100_ICSR_REGBSEL 0x30 /* RW: register bank select */ -+#define BIU2100_RISC_REGS (0 << 4) /* RISC Regs */ -+#define BIU2100_FB_REGS (1 << 4) /* FrameBuffer Regs */ -+#define BIU2100_FPM0_REGS (2 << 4) /* FPM 0 Regs */ -+#define BIU2100_FPM1_REGS (3 << 4) /* FPM 1 Regs */ -+#define BIU2100_PCI64 0x04 /* R: 64 Bit PCI slot */ -+#define BIU2100_FLASH_ENABLE 0x02 /* RW: Enable Flash RAM */ -+#define BIU2100_SOFT_RESET 0x01 -+/* SOFT RESET FOR ISP2100 is same bit, but in this register, not ICR */ -+ -+ -+/* BUS CONTROL REGISTER */ -+#define BIU_ICR_ENABLE_DMA_INT 0x0020 /* Enable DMA interrupts */ -+#define BIU_ICR_ENABLE_CDMA_INT 0x0010 /* Enable CDMA interrupts */ -+#define BIU_ICR_ENABLE_SXP_INT 0x0008 /* Enable SXP interrupts */ -+#define BIU_ICR_ENABLE_RISC_INT 0x0004 /* Enable Risc interrupts */ -+#define BIU_ICR_ENABLE_ALL_INTS 0x0002 /* Global enable all inter */ -+#define BIU_ICR_SOFT_RESET 0x0001 /* Soft Reset of ISP */ -+ -+#define BIU2100_ICR_ENABLE_ALL_INTS 0x8000 -+#define BIU2100_ICR_ENA_FPM_INT 0x0020 -+#define BIU2100_ICR_ENA_FB_INT 0x0010 -+#define BIU2100_ICR_ENA_RISC_INT 0x0008 -+#define BIU2100_ICR_ENA_CDMA_INT 0x0004 -+#define BIU2100_ICR_ENABLE_RXDMA_INT 0x0002 -+#define BIU2100_ICR_ENABLE_TXDMA_INT 0x0001 -+#define BIU2100_ICR_DISABLE_ALL_INTS 0x0000 -+ -+#define ENABLE_INTS(isp) (IS_SCSI(isp))? \ -+ ISP_WRITE(isp, BIU_ICR, BIU_ICR_ENABLE_RISC_INT | BIU_ICR_ENABLE_ALL_INTS) : \ -+ ISP_WRITE(isp, BIU_ICR, BIU2100_ICR_ENA_RISC_INT | BIU2100_ICR_ENABLE_ALL_INTS) -+ -+#define INTS_ENABLED(isp) ((IS_SCSI(isp))? \ -+ (ISP_READ(isp, BIU_ICR) & (BIU_ICR_ENABLE_RISC_INT|BIU_ICR_ENABLE_ALL_INTS)) :\ -+ (ISP_READ(isp, BIU_ICR) & \ -+ (BIU2100_ICR_ENA_RISC_INT|BIU2100_ICR_ENABLE_ALL_INTS))) -+ -+#define DISABLE_INTS(isp) ISP_WRITE(isp, BIU_ICR, 0) -+ -+/* BUS STATUS REGISTER */ -+#define BIU_ISR_DMA_INT 0x0020 /* DMA interrupt pending */ -+#define BIU_ISR_CDMA_INT 0x0010 /* CDMA interrupt pending */ -+#define BIU_ISR_SXP_INT 0x0008 /* SXP interrupt pending */ -+#define BIU_ISR_RISC_INT 0x0004 /* Risc interrupt pending */ -+#define BIU_ISR_IPEND 0x0002 /* Global interrupt pending */ -+ -+#define BIU2100_ISR_INT_PENDING 0x8000 /* Global interrupt pending */ -+#define BIU2100_ISR_FPM_INT 0x0020 /* FPM interrupt pending */ -+#define BIU2100_ISR_FB_INT 0x0010 /* FB interrupt pending */ -+#define BIU2100_ISR_RISC_INT 0x0008 /* Risc interrupt pending */ -+#define BIU2100_ISR_CDMA_INT 0x0004 /* CDMA interrupt pending */ -+#define BIU2100_ISR_RXDMA_INT_PENDING 0x0002 /* Global interrupt pending */ -+#define BIU2100_ISR_TXDMA_INT_PENDING 0x0001 /* Global interrupt pending */ -+ -+#define INT_PENDING(isp, isr) (IS_FC(isp)? \ -+ ((isr & BIU2100_ISR_RISC_INT) != 0) : ((isr & BIU_ISR_RISC_INT) != 0)) -+ -+#define INT_PENDING_MASK(isp) \ -+ (IS_FC(isp)? BIU2100_ISR_RISC_INT: BIU_ISR_RISC_INT) -+ -+/* BUS SEMAPHORE REGISTER */ -+#define BIU_SEMA_STATUS 0x0002 /* Semaphore Status Bit */ -+#define BIU_SEMA_LOCK 0x0001 /* Semaphore Lock Bit */ -+ -+/* NVRAM SEMAPHORE REGISTER */ -+#define BIU_NVRAM_CLOCK 0x0001 -+#define BIU_NVRAM_SELECT 0x0002 -+#define BIU_NVRAM_DATAOUT 0x0004 -+#define BIU_NVRAM_DATAIN 0x0008 -+#define ISP_NVRAM_READ 6 -+ -+/* COMNMAND && DATA DMA CONFIGURATION REGISTER */ -+#define DMA_ENABLE_SXP_DMA 0x0008 /* Enable SXP to DMA Data */ -+#define DMA_ENABLE_INTS 0x0004 /* Enable interrupts to RISC */ -+#define DMA_ENABLE_BURST 0x0002 /* Enable Bus burst trans */ -+#define DMA_DMA_DIRECTION 0x0001 /* -+ * Set DMA direction: -+ * 0 - DMA FIFO to host -+ * 1 - Host to DMA FIFO -+ */ -+ -+/* COMMAND && DATA DMA CONTROL REGISTER */ -+#define DMA_CNTRL_SUSPEND_CHAN 0x0010 /* Suspend DMA transfer */ -+#define DMA_CNTRL_CLEAR_CHAN 0x0008 /* -+ * Clear FIFO and DMA Channel, -+ * reset DMA registers -+ */ -+#define DMA_CNTRL_CLEAR_FIFO 0x0004 /* Clear DMA FIFO */ -+#define DMA_CNTRL_RESET_INT 0x0002 /* Clear DMA interrupt */ -+#define DMA_CNTRL_STROBE 0x0001 /* Start DMA transfer */ -+ -+/* -+ * Variants of same for 2100 -+ */ -+#define DMA_CNTRL2100_CLEAR_CHAN 0x0004 -+#define DMA_CNTRL2100_RESET_INT 0x0002 -+ -+ -+ -+/* DMA STATUS REGISTER */ -+#define DMA_SBUS_STATUS_PIPE_MASK 0x00C0 /* DMA Pipeline status mask */ -+#define DMA_SBUS_STATUS_CHAN_MASK 0x0030 /* Channel status mask */ -+#define DMA_SBUS_STATUS_BUS_PARITY 0x0008 /* Parity Error on bus */ -+#define DMA_SBUS_STATUS_BUS_ERR 0x0004 /* Error Detected on bus */ -+#define DMA_SBUS_STATUS_TERM_COUNT 0x0002 /* DMA Transfer Completed */ -+#define DMA_SBUS_STATUS_INTERRUPT 0x0001 /* Enable DMA channel inter */ -+ -+#define DMA_PCI_STATUS_INTERRUPT 0x8000 /* Enable DMA channel inter */ -+#define DMA_PCI_STATUS_RETRY_STAT 0x4000 /* Retry status */ -+#define DMA_PCI_STATUS_CHAN_MASK 0x3000 /* Channel status mask */ -+#define DMA_PCI_STATUS_FIFO_OVR 0x0100 /* DMA FIFO overrun cond */ -+#define DMA_PCI_STATUS_FIFO_UDR 0x0080 /* DMA FIFO underrun cond */ -+#define DMA_PCI_STATUS_BUS_ERR 0x0040 /* Error Detected on bus */ -+#define DMA_PCI_STATUS_BUS_PARITY 0x0020 /* Parity Error on bus */ -+#define DMA_PCI_STATUS_CLR_PEND 0x0010 /* DMA clear pending */ -+#define DMA_PCI_STATUS_TERM_COUNT 0x0008 /* DMA Transfer Completed */ -+#define DMA_PCI_STATUS_DMA_SUSP 0x0004 /* DMA suspended */ -+#define DMA_PCI_STATUS_PIPE_MASK 0x0003 /* DMA Pipeline status mask */ -+ -+/* DMA Status Register, pipeline status bits */ -+#define DMA_SBUS_PIPE_FULL 0x00C0 /* Both pipeline stages full */ -+#define DMA_SBUS_PIPE_OVERRUN 0x0080 /* Pipeline overrun */ -+#define DMA_SBUS_PIPE_STAGE1 0x0040 /* -+ * Pipeline stage 1 Loaded, -+ * stage 2 empty -+ */ -+#define DMA_PCI_PIPE_FULL 0x0003 /* Both pipeline stages full */ -+#define DMA_PCI_PIPE_OVERRUN 0x0002 /* Pipeline overrun */ -+#define DMA_PCI_PIPE_STAGE1 0x0001 /* -+ * Pipeline stage 1 Loaded, -+ * stage 2 empty -+ */ -+#define DMA_PIPE_EMPTY 0x0000 /* All pipeline stages empty */ -+ -+/* DMA Status Register, channel status bits */ -+#define DMA_SBUS_CHAN_SUSPEND 0x0030 /* Channel error or suspended */ -+#define DMA_SBUS_CHAN_TRANSFER 0x0020 /* Chan transfer in progress */ -+#define DMA_SBUS_CHAN_ACTIVE 0x0010 /* Chan trans to host active */ -+#define DMA_PCI_CHAN_TRANSFER 0x3000 /* Chan transfer in progress */ -+#define DMA_PCI_CHAN_SUSPEND 0x2000 /* Channel error or suspended */ -+#define DMA_PCI_CHAN_ACTIVE 0x1000 /* Chan trans to host active */ -+#define ISP_DMA_CHAN_IDLE 0x0000 /* Chan idle (normal comp) */ -+ -+ -+/* DMA FIFO STATUS REGISTER */ -+#define DMA_FIFO_STATUS_OVERRUN 0x0200 /* FIFO Overrun Condition */ -+#define DMA_FIFO_STATUS_UNDERRUN 0x0100 /* FIFO Underrun Condition */ -+#define DMA_FIFO_SBUS_COUNT_MASK 0x007F /* FIFO Byte count mask */ -+#define DMA_FIFO_PCI_COUNT_MASK 0x00FF /* FIFO Byte count mask */ -+ -+/* -+ * Mailbox Block Register Offsets -+ */ -+ -+#define INMAILBOX0 (MBOX_BLOCK+0x0) -+#define INMAILBOX1 (MBOX_BLOCK+0x2) -+#define INMAILBOX2 (MBOX_BLOCK+0x4) -+#define INMAILBOX3 (MBOX_BLOCK+0x6) -+#define INMAILBOX4 (MBOX_BLOCK+0x8) -+#define INMAILBOX5 (MBOX_BLOCK+0xA) -+#define INMAILBOX6 (MBOX_BLOCK+0xC) -+#define INMAILBOX7 (MBOX_BLOCK+0xE) -+ -+#define OUTMAILBOX0 (MBOX_BLOCK+0x0) -+#define OUTMAILBOX1 (MBOX_BLOCK+0x2) -+#define OUTMAILBOX2 (MBOX_BLOCK+0x4) -+#define OUTMAILBOX3 (MBOX_BLOCK+0x6) -+#define OUTMAILBOX4 (MBOX_BLOCK+0x8) -+#define OUTMAILBOX5 (MBOX_BLOCK+0xA) -+#define OUTMAILBOX6 (MBOX_BLOCK+0xC) -+#define OUTMAILBOX7 (MBOX_BLOCK+0xE) -+ -+#define MBOX_OFF(n) (MBOX_BLOCK + ((n) << 1)) -+#define NMBOX(isp) \ -+ (((((isp)->isp_type & ISP_HA_SCSI) >= ISP_HA_SCSI_1040A) || \ -+ ((isp)->isp_type & ISP_HA_FC))? 8 : 6) -+#define NMBOX_BMASK(isp) \ -+ (((((isp)->isp_type & ISP_HA_SCSI) >= ISP_HA_SCSI_1040A) || \ -+ ((isp)->isp_type & ISP_HA_FC))? 0xff : 0x3f) -+ -+#define MAX_MAILBOX 8 -+ -+/* -+ * Fibre Protocol Module and Frame Buffer Register Offsets/Definitions (2X00). -+ * NB: The RISC processor must be paused and the appropriate register -+ * bank selected via BIU2100_CSR bits. -+ */ -+ -+#define FPM_DIAG_CONFIG (BIU_BLOCK + 0x96) -+#define FPM_SOFT_RESET 0x0100 -+ -+#define FBM_CMD (BIU_BLOCK + 0xB8) -+#define FBMCMD_FIFO_RESET_ALL 0xA000 -+ -+ -+/* -+ * SXP Block Register Offsets -+ */ -+#define SXP_PART_ID (SXP_BLOCK+0x0) /* R : Part ID Code */ -+#define SXP_CONFIG1 (SXP_BLOCK+0x2) /* RW*: Configuration Reg #1 */ -+#define SXP_CONFIG2 (SXP_BLOCK+0x4) /* RW*: Configuration Reg #2 */ -+#define SXP_CONFIG3 (SXP_BLOCK+0x6) /* RW*: Configuration Reg #2 */ -+#define SXP_INSTRUCTION (SXP_BLOCK+0xC) /* RW*: Instruction Pointer */ -+#define SXP_RETURN_ADDR (SXP_BLOCK+0x10) /* RW*: Return Address */ -+#define SXP_COMMAND (SXP_BLOCK+0x14) /* RW*: Command */ -+#define SXP_INTERRUPT (SXP_BLOCK+0x18) /* R : Interrupt */ -+#define SXP_SEQUENCE (SXP_BLOCK+0x1C) /* RW*: Sequence */ -+#define SXP_GROSS_ERR (SXP_BLOCK+0x1E) /* R : Gross Error */ -+#define SXP_EXCEPTION (SXP_BLOCK+0x20) /* RW*: Exception Enable */ -+#define SXP_OVERRIDE (SXP_BLOCK+0x24) /* RW*: Override */ -+#define SXP_LIT_BASE (SXP_BLOCK+0x28) /* RW*: Literal Base */ -+#define SXP_USER_FLAGS (SXP_BLOCK+0x2C) /* RW*: User Flags */ -+#define SXP_USER_EXCEPT (SXP_BLOCK+0x30) /* RW*: User Exception */ -+#define SXP_BREAKPOINT (SXP_BLOCK+0x34) /* RW*: Breakpoint */ -+#define SXP_SCSI_ID (SXP_BLOCK+0x40) /* RW*: SCSI ID */ -+#define SXP_DEV_CONFIG1 (SXP_BLOCK+0x42) /* RW*: Device Config Reg #1 */ -+#define SXP_DEV_CONFIG2 (SXP_BLOCK+0x44) /* RW*: Device Config Reg #2 */ -+#define SXP_PHASE_PTR (SXP_BLOCK+0x48) /* RW*: SCSI Phase Pointer */ -+#define SXP_BUF_PTR (SXP_BLOCK+0x4C) /* RW*: SCSI Buffer Pointer */ -+#define SXP_BUF_CTR (SXP_BLOCK+0x50) /* RW*: SCSI Buffer Counter */ -+#define SXP_BUFFER (SXP_BLOCK+0x52) /* RW*: SCSI Buffer */ -+#define SXP_BUF_BYTE (SXP_BLOCK+0x54) /* RW*: SCSI Buffer Byte */ -+#define SXP_BUF_WD (SXP_BLOCK+0x56) /* RW*: SCSI Buffer Word */ -+#define SXP_BUF_WD_TRAN (SXP_BLOCK+0x58) /* RW*: SCSI Buffer Wd xlate */ -+#define SXP_FIFO (SXP_BLOCK+0x5A) /* RW*: SCSI FIFO */ -+#define SXP_FIFO_STATUS (SXP_BLOCK+0x5C) /* RW*: SCSI FIFO Status */ -+#define SXP_FIFO_TOP (SXP_BLOCK+0x5E) /* RW*: SCSI FIFO Top Resid */ -+#define SXP_FIFO_BOTTOM (SXP_BLOCK+0x60) /* RW*: SCSI FIFO Bot Resid */ -+#define SXP_TRAN_REG (SXP_BLOCK+0x64) /* RW*: SCSI Transferr Reg */ -+#define SXP_TRAN_CNT_LO (SXP_BLOCK+0x68) /* RW*: SCSI Trans Count */ -+#define SXP_TRAN_CNT_HI (SXP_BLOCK+0x6A) /* RW*: SCSI Trans Count */ -+#define SXP_TRAN_CTR_LO (SXP_BLOCK+0x6C) /* RW*: SCSI Trans Counter */ -+#define SXP_TRAN_CTR_HI (SXP_BLOCK+0x6E) /* RW*: SCSI Trans Counter */ -+#define SXP_ARB_DATA (SXP_BLOCK+0x70) /* R : SCSI Arb Data */ -+#define SXP_PINS_CTRL (SXP_BLOCK+0x72) /* RW*: SCSI Control Pins */ -+#define SXP_PINS_DATA (SXP_BLOCK+0x74) /* RW*: SCSI Data Pins */ -+#define SXP_PINS_DIFF (SXP_BLOCK+0x76) /* RW*: SCSI Diff Pins */ -+ -+/* for 1080/1280/1240 only */ -+#define SXP_BANK1_SELECT 0x100 -+ -+ -+/* SXP CONF1 REGISTER */ -+#define SXP_CONF1_ASYNCH_SETUP 0xF000 /* Asynchronous setup time */ -+#define SXP_CONF1_SELECTION_UNIT 0x0000 /* Selection time unit */ -+#define SXP_CONF1_SELECTION_TIMEOUT 0x0600 /* Selection timeout */ -+#define SXP_CONF1_CLOCK_FACTOR 0x00E0 /* Clock factor */ -+#define SXP_CONF1_SCSI_ID 0x000F /* SCSI id */ -+ -+/* SXP CONF2 REGISTER */ -+#define SXP_CONF2_DISABLE_FILTER 0x0040 /* Disable SCSI rec filters */ -+#define SXP_CONF2_REQ_ACK_PULLUPS 0x0020 /* Enable req/ack pullups */ -+#define SXP_CONF2_DATA_PULLUPS 0x0010 /* Enable data pullups */ -+#define SXP_CONF2_CONFIG_AUTOLOAD 0x0008 /* Enable dev conf auto-load */ -+#define SXP_CONF2_RESELECT 0x0002 /* Enable reselection */ -+#define SXP_CONF2_SELECT 0x0001 /* Enable selection */ -+ -+/* SXP INTERRUPT REGISTER */ -+#define SXP_INT_PARITY_ERR 0x8000 /* Parity error detected */ -+#define SXP_INT_GROSS_ERR 0x4000 /* Gross error detected */ -+#define SXP_INT_FUNCTION_ABORT 0x2000 /* Last cmd aborted */ -+#define SXP_INT_CONDITION_FAILED 0x1000 /* Last cond failed test */ -+#define SXP_INT_FIFO_EMPTY 0x0800 /* SCSI FIFO is empty */ -+#define SXP_INT_BUF_COUNTER_ZERO 0x0400 /* SCSI buf count == zero */ -+#define SXP_INT_XFER_ZERO 0x0200 /* SCSI trans count == zero */ -+#define SXP_INT_INT_PENDING 0x0080 /* SXP interrupt pending */ -+#define SXP_INT_CMD_RUNNING 0x0040 /* SXP is running a command */ -+#define SXP_INT_INT_RETURN_CODE 0x000F /* Interrupt return code */ -+ -+ -+/* SXP GROSS ERROR REGISTER */ -+#define SXP_GROSS_OFFSET_RESID 0x0040 /* Req/Ack offset not zero */ -+#define SXP_GROSS_OFFSET_UNDERFLOW 0x0020 /* Req/Ack offset underflow */ -+#define SXP_GROSS_OFFSET_OVERFLOW 0x0010 /* Req/Ack offset overflow */ -+#define SXP_GROSS_FIFO_UNDERFLOW 0x0008 /* SCSI FIFO underflow */ -+#define SXP_GROSS_FIFO_OVERFLOW 0x0004 /* SCSI FIFO overflow */ -+#define SXP_GROSS_WRITE_ERR 0x0002 /* SXP and RISC wrote to reg */ -+#define SXP_GROSS_ILLEGAL_INST 0x0001 /* Bad inst loaded into SXP */ -+ -+/* SXP EXCEPTION REGISTER */ -+#define SXP_EXCEPT_USER_0 0x8000 /* Enable user exception #0 */ -+#define SXP_EXCEPT_USER_1 0x4000 /* Enable user exception #1 */ -+#define PCI_SXP_EXCEPT_SCAM 0x0400 /* SCAM Selection enable */ -+#define SXP_EXCEPT_BUS_FREE 0x0200 /* Enable Bus Free det */ -+#define SXP_EXCEPT_TARGET_ATN 0x0100 /* Enable TGT mode atten det */ -+#define SXP_EXCEPT_RESELECTED 0x0080 /* Enable ReSEL exc handling */ -+#define SXP_EXCEPT_SELECTED 0x0040 /* Enable SEL exc handling */ -+#define SXP_EXCEPT_ARBITRATION 0x0020 /* Enable ARB exc handling */ -+#define SXP_EXCEPT_GROSS_ERR 0x0010 /* Enable gross error except */ -+#define SXP_EXCEPT_BUS_RESET 0x0008 /* Enable Bus Reset except */ -+ -+ /* SXP OVERRIDE REGISTER */ -+#define SXP_ORIDE_EXT_TRIGGER 0x8000 /* Enable external trigger */ -+#define SXP_ORIDE_STEP 0x4000 /* Enable single step mode */ -+#define SXP_ORIDE_BREAKPOINT 0x2000 /* Enable breakpoint reg */ -+#define SXP_ORIDE_PIN_WRITE 0x1000 /* Enable write to SCSI pins */ -+#define SXP_ORIDE_FORCE_OUTPUTS 0x0800 /* Force SCSI outputs on */ -+#define SXP_ORIDE_LOOPBACK 0x0400 /* Enable SCSI loopback mode */ -+#define SXP_ORIDE_PARITY_TEST 0x0200 /* Enable parity test mode */ -+#define SXP_ORIDE_TRISTATE_ENA_PINS 0x0100 /* Tristate SCSI enable pins */ -+#define SXP_ORIDE_TRISTATE_PINS 0x0080 /* Tristate SCSI pins */ -+#define SXP_ORIDE_FIFO_RESET 0x0008 /* Reset SCSI FIFO */ -+#define SXP_ORIDE_CMD_TERMINATE 0x0004 /* Terminate cur SXP com */ -+#define SXP_ORIDE_RESET_REG 0x0002 /* Reset SXP registers */ -+#define SXP_ORIDE_RESET_MODULE 0x0001 /* Reset SXP module */ -+ -+/* SXP COMMANDS */ -+#define SXP_RESET_BUS_CMD 0x300b -+ -+/* SXP SCSI ID REGISTER */ -+#define SXP_SELECTING_ID 0x0F00 /* (Re)Selecting id */ -+#define SXP_SELECT_ID 0x000F /* Select id */ -+ -+/* SXP DEV CONFIG1 REGISTER */ -+#define SXP_DCONF1_SYNC_HOLD 0x7000 /* Synchronous data hold */ -+#define SXP_DCONF1_SYNC_SETUP 0x0F00 /* Synchronous data setup */ -+#define SXP_DCONF1_SYNC_OFFSET 0x000F /* Synchronous data offset */ -+ -+ -+/* SXP DEV CONFIG2 REGISTER */ -+#define SXP_DCONF2_FLAGS_MASK 0xF000 /* Device flags */ -+#define SXP_DCONF2_WIDE 0x0400 /* Enable wide SCSI */ -+#define SXP_DCONF2_PARITY 0x0200 /* Enable parity checking */ -+#define SXP_DCONF2_BLOCK_MODE 0x0100 /* Enable blk mode xfr count */ -+#define SXP_DCONF2_ASSERTION_MASK 0x0007 /* Assersion period mask */ -+ -+ -+/* SXP PHASE POINTER REGISTER */ -+#define SXP_PHASE_STATUS_PTR 0x1000 /* Status buffer offset */ -+#define SXP_PHASE_MSG_IN_PTR 0x0700 /* Msg in buffer offset */ -+#define SXP_PHASE_COM_PTR 0x00F0 /* Command buffer offset */ -+#define SXP_PHASE_MSG_OUT_PTR 0x0007 /* Msg out buffer offset */ -+ -+ -+/* SXP FIFO STATUS REGISTER */ -+#define SXP_FIFO_TOP_RESID 0x8000 /* Top residue reg full */ -+#define SXP_FIFO_ACK_RESID 0x4000 /* Wide transfers odd resid */ -+#define SXP_FIFO_COUNT_MASK 0x001C /* Words in SXP FIFO */ -+#define SXP_FIFO_BOTTOM_RESID 0x0001 /* Bottom residue reg full */ -+ -+ -+/* SXP CONTROL PINS REGISTER */ -+#define SXP_PINS_CON_PHASE 0x8000 /* Scsi phase valid */ -+#define SXP_PINS_CON_PARITY_HI 0x0400 /* Parity pin */ -+#define SXP_PINS_CON_PARITY_LO 0x0200 /* Parity pin */ -+#define SXP_PINS_CON_REQ 0x0100 /* SCSI bus REQUEST */ -+#define SXP_PINS_CON_ACK 0x0080 /* SCSI bus ACKNOWLEDGE */ -+#define SXP_PINS_CON_RST 0x0040 /* SCSI bus RESET */ -+#define SXP_PINS_CON_BSY 0x0020 /* SCSI bus BUSY */ -+#define SXP_PINS_CON_SEL 0x0010 /* SCSI bus SELECT */ -+#define SXP_PINS_CON_ATN 0x0008 /* SCSI bus ATTENTION */ -+#define SXP_PINS_CON_MSG 0x0004 /* SCSI bus MESSAGE */ -+#define SXP_PINS_CON_CD 0x0002 /* SCSI bus COMMAND */ -+#define SXP_PINS_CON_IO 0x0001 /* SCSI bus INPUT */ -+ -+/* -+ * Set the hold time for the SCSI Bus Reset to be 250 ms -+ */ -+#define SXP_SCSI_BUS_RESET_HOLD_TIME 250 -+ -+/* SXP DIFF PINS REGISTER */ -+#define SXP_PINS_DIFF_SENSE 0x0200 /* DIFFSENS sig on SCSI bus */ -+#define SXP_PINS_DIFF_MODE 0x0100 /* DIFFM signal */ -+#define SXP_PINS_DIFF_ENABLE_OUTPUT 0x0080 /* Enable SXP SCSI data drv */ -+#define SXP_PINS_DIFF_PINS_MASK 0x007C /* Differential control pins */ -+#define SXP_PINS_DIFF_TARGET 0x0002 /* Enable SXP target mode */ -+#define SXP_PINS_DIFF_INITIATOR 0x0001 /* Enable SXP initiator mode */ -+ -+/* Ultra2 only */ -+#define SXP_PINS_LVD_MODE 0x1000 -+#define SXP_PINS_HVD_MODE 0x0800 -+#define SXP_PINS_SE_MODE 0x0400 -+ -+/* The above have to be put together with the DIFFM pin to make sense */ -+#define ISP1080_LVD_MODE (SXP_PINS_LVD_MODE) -+#define ISP1080_HVD_MODE (SXP_PINS_HVD_MODE|SXP_PINS_DIFF_MODE) -+#define ISP1080_SE_MODE (SXP_PINS_SE_MODE) -+#define ISP1080_MODE_MASK \ -+ (SXP_PINS_LVD_MODE|SXP_PINS_HVD_MODE|SXP_PINS_SE_MODE|SXP_PINS_DIFF_MODE) -+ -+/* -+ * RISC and Host Command and Control Block Register Offsets -+ */ -+ -+#define RISC_ACC RISC_BLOCK+0x0 /* RW*: Accumulator */ -+#define RISC_R1 RISC_BLOCK+0x2 /* RW*: GP Reg R1 */ -+#define RISC_R2 RISC_BLOCK+0x4 /* RW*: GP Reg R2 */ -+#define RISC_R3 RISC_BLOCK+0x6 /* RW*: GP Reg R3 */ -+#define RISC_R4 RISC_BLOCK+0x8 /* RW*: GP Reg R4 */ -+#define RISC_R5 RISC_BLOCK+0xA /* RW*: GP Reg R5 */ -+#define RISC_R6 RISC_BLOCK+0xC /* RW*: GP Reg R6 */ -+#define RISC_R7 RISC_BLOCK+0xE /* RW*: GP Reg R7 */ -+#define RISC_R8 RISC_BLOCK+0x10 /* RW*: GP Reg R8 */ -+#define RISC_R9 RISC_BLOCK+0x12 /* RW*: GP Reg R9 */ -+#define RISC_R10 RISC_BLOCK+0x14 /* RW*: GP Reg R10 */ -+#define RISC_R11 RISC_BLOCK+0x16 /* RW*: GP Reg R11 */ -+#define RISC_R12 RISC_BLOCK+0x18 /* RW*: GP Reg R12 */ -+#define RISC_R13 RISC_BLOCK+0x1a /* RW*: GP Reg R13 */ -+#define RISC_R14 RISC_BLOCK+0x1c /* RW*: GP Reg R14 */ -+#define RISC_R15 RISC_BLOCK+0x1e /* RW*: GP Reg R15 */ -+#define RISC_PSR RISC_BLOCK+0x20 /* RW*: Processor Status */ -+#define RISC_IVR RISC_BLOCK+0x22 /* RW*: Interrupt Vector */ -+#define RISC_PCR RISC_BLOCK+0x24 /* RW*: Processor Ctrl */ -+#define RISC_RAR0 RISC_BLOCK+0x26 /* RW*: Ram Address #0 */ -+#define RISC_RAR1 RISC_BLOCK+0x28 /* RW*: Ram Address #1 */ -+#define RISC_LCR RISC_BLOCK+0x2a /* RW*: Loop Counter */ -+#define RISC_PC RISC_BLOCK+0x2c /* R : Program Counter */ -+#define RISC_MTR RISC_BLOCK+0x2e /* RW*: Memory Timing */ -+#define RISC_MTR2100 RISC_BLOCK+0x30 -+ -+#define RISC_EMB RISC_BLOCK+0x30 /* RW*: Ext Mem Boundary */ -+#define DUAL_BANK 8 -+#define RISC_SP RISC_BLOCK+0x32 /* RW*: Stack Pointer */ -+#define RISC_HRL RISC_BLOCK+0x3e /* R *: Hardware Rev Level */ -+#define HCCR RISC_BLOCK+0x40 /* RW : Host Command & Ctrl */ -+#define BP0 RISC_BLOCK+0x42 /* RW : Processor Brkpt #0 */ -+#define BP1 RISC_BLOCK+0x44 /* RW : Processor Brkpt #1 */ -+#define TCR RISC_BLOCK+0x46 /* W : Test Control */ -+#define TMR RISC_BLOCK+0x48 /* W : Test Mode */ -+ -+ -+/* PROCESSOR STATUS REGISTER */ -+#define RISC_PSR_FORCE_TRUE 0x8000 -+#define RISC_PSR_LOOP_COUNT_DONE 0x4000 -+#define RISC_PSR_RISC_INT 0x2000 -+#define RISC_PSR_TIMER_ROLLOVER 0x1000 -+#define RISC_PSR_ALU_OVERFLOW 0x0800 -+#define RISC_PSR_ALU_MSB 0x0400 -+#define RISC_PSR_ALU_CARRY 0x0200 -+#define RISC_PSR_ALU_ZERO 0x0100 -+ -+#define RISC_PSR_PCI_ULTRA 0x0080 -+#define RISC_PSR_SBUS_ULTRA 0x0020 -+ -+#define RISC_PSR_DMA_INT 0x0010 -+#define RISC_PSR_SXP_INT 0x0008 -+#define RISC_PSR_HOST_INT 0x0004 -+#define RISC_PSR_INT_PENDING 0x0002 -+#define RISC_PSR_FORCE_FALSE 0x0001 -+ -+ -+/* Host Command and Control */ -+#define HCCR_CMD_NOP 0x0000 /* NOP */ -+#define HCCR_CMD_RESET 0x1000 /* Reset RISC */ -+#define HCCR_CMD_PAUSE 0x2000 /* Pause RISC */ -+#define HCCR_CMD_RELEASE 0x3000 /* Release Paused RISC */ -+#define HCCR_CMD_STEP 0x4000 /* Single Step RISC */ -+#define HCCR_2X00_DISABLE_PARITY_PAUSE 0x4001 /* -+ * Disable RISC pause on FPM -+ * parity error. -+ */ -+#define HCCR_CMD_SET_HOST_INT 0x5000 /* Set Host Interrupt */ -+#define HCCR_CMD_CLEAR_HOST_INT 0x6000 /* Clear Host Interrupt */ -+#define HCCR_CMD_CLEAR_RISC_INT 0x7000 /* Clear RISC interrupt */ -+#define HCCR_CMD_BREAKPOINT 0x8000 /* Change breakpoint enables */ -+#define PCI_HCCR_CMD_BIOS 0x9000 /* Write BIOS (disable) */ -+#define PCI_HCCR_CMD_PARITY 0xA000 /* Write parity enable */ -+#define PCI_HCCR_CMD_PARITY_ERR 0xE000 /* Generate parity error */ -+#define HCCR_CMD_TEST_MODE 0xF000 /* Set Test Mode */ -+ -+#define ISP2100_HCCR_PARITY_ENABLE_2 0x0400 -+#define ISP2100_HCCR_PARITY_ENABLE_1 0x0200 -+#define ISP2100_HCCR_PARITY_ENABLE_0 0x0100 -+#define ISP2100_HCCR_PARITY 0x0001 -+ -+#define PCI_HCCR_PARITY 0x0400 /* Parity error flag */ -+#define PCI_HCCR_PARITY_ENABLE_1 0x0200 /* Parity enable bank 1 */ -+#define PCI_HCCR_PARITY_ENABLE_0 0x0100 /* Parity enable bank 0 */ -+ -+#define HCCR_HOST_INT 0x0080 /* R : Host interrupt set */ -+#define HCCR_RESET 0x0040 /* R : reset in progress */ -+#define HCCR_PAUSE 0x0020 /* R : RISC paused */ -+ -+#define PCI_HCCR_BIOS 0x0001 /* W : BIOS enable */ -+ -+/* -+ * NVRAM Definitions (PCI cards only) -+ */ -+ -+#define ISPBSMX(c, byte, shift, mask) \ -+ (((c)[(byte)] >> (shift)) & (mask)) -+/* -+ * Qlogic 1020/1040 NVRAM is an array of 128 bytes. -+ * -+ * Some portion of the front of this is for general host adapter properties -+ * This is followed by an array of per-target parameters, and is tailed off -+ * with a checksum xor byte at offset 127. For non-byte entities data is -+ * stored in Little Endian order. -+ */ -+ -+#define ISP_NVRAM_SIZE 128 -+ -+#define ISP_NVRAM_VERSION(c) (c)[4] -+#define ISP_NVRAM_FIFO_THRESHOLD(c) ISPBSMX(c, 5, 0, 0x03) -+#define ISP_NVRAM_BIOS_DISABLE(c) ISPBSMX(c, 5, 2, 0x01) -+#define ISP_NVRAM_HBA_ENABLE(c) ISPBSMX(c, 5, 3, 0x01) -+#define ISP_NVRAM_INITIATOR_ID(c) ISPBSMX(c, 5, 4, 0x0f) -+#define ISP_NVRAM_BUS_RESET_DELAY(c) (c)[6] -+#define ISP_NVRAM_BUS_RETRY_COUNT(c) (c)[7] -+#define ISP_NVRAM_BUS_RETRY_DELAY(c) (c)[8] -+#define ISP_NVRAM_ASYNC_DATA_SETUP_TIME(c) ISPBSMX(c, 9, 0, 0x0f) -+#define ISP_NVRAM_REQ_ACK_ACTIVE_NEGATION(c) ISPBSMX(c, 9, 4, 0x01) -+#define ISP_NVRAM_DATA_LINE_ACTIVE_NEGATION(c) ISPBSMX(c, 9, 5, 0x01) -+#define ISP_NVRAM_DATA_DMA_BURST_ENABLE(c) ISPBSMX(c, 9, 6, 0x01) -+#define ISP_NVRAM_CMD_DMA_BURST_ENABLE(c) ISPBSMX(c, 9, 7, 0x01) -+#define ISP_NVRAM_TAG_AGE_LIMIT(c) (c)[10] -+#define ISP_NVRAM_LOWTRM_ENABLE(c) ISPBSMX(c, 11, 0, 0x01) -+#define ISP_NVRAM_HITRM_ENABLE(c) ISPBSMX(c, 11, 1, 0x01) -+#define ISP_NVRAM_PCMC_BURST_ENABLE(c) ISPBSMX(c, 11, 2, 0x01) -+#define ISP_NVRAM_ENABLE_60_MHZ(c) ISPBSMX(c, 11, 3, 0x01) -+#define ISP_NVRAM_SCSI_RESET_DISABLE(c) ISPBSMX(c, 11, 4, 0x01) -+#define ISP_NVRAM_ENABLE_AUTO_TERM(c) ISPBSMX(c, 11, 5, 0x01) -+#define ISP_NVRAM_FIFO_THRESHOLD_128(c) ISPBSMX(c, 11, 6, 0x01) -+#define ISP_NVRAM_AUTO_TERM_SUPPORT(c) ISPBSMX(c, 11, 7, 0x01) -+#define ISP_NVRAM_SELECTION_TIMEOUT(c) (((c)[12]) | ((c)[13] << 8)) -+#define ISP_NVRAM_MAX_QUEUE_DEPTH(c) (((c)[14]) | ((c)[15] << 8)) -+#define ISP_NVRAM_SCSI_BUS_SIZE(c) ISPBSMX(c, 16, 0, 0x01) -+#define ISP_NVRAM_SCSI_BUS_TYPE(c) ISPBSMX(c, 16, 1, 0x01) -+#define ISP_NVRAM_ADAPTER_CLK_SPEED(c) ISPBSMX(c, 16, 2, 0x01) -+#define ISP_NVRAM_SOFT_TERM_SUPPORT(c) ISPBSMX(c, 16, 3, 0x01) -+#define ISP_NVRAM_FLASH_ONBOARD(c) ISPBSMX(c, 16, 4, 0x01) -+#define ISP_NVRAM_FAST_MTTR_ENABLE(c) ISPBSMX(c, 22, 0, 0x01) -+ -+#define ISP_NVRAM_TARGOFF 28 -+#define ISP_NVARM_TARGSIZE 6 -+#define _IxT(tgt, tidx) \ -+ (ISP_NVRAM_TARGOFF + (ISP_NVARM_TARGSIZE * (tgt)) + (tidx)) -+#define ISP_NVRAM_TGT_RENEG(c, t) ISPBSMX(c, _IxT(t, 0), 0, 0x01) -+#define ISP_NVRAM_TGT_QFRZ(c, t) ISPBSMX(c, _IxT(t, 0), 1, 0x01) -+#define ISP_NVRAM_TGT_ARQ(c, t) ISPBSMX(c, _IxT(t, 0), 2, 0x01) -+#define ISP_NVRAM_TGT_TQING(c, t) ISPBSMX(c, _IxT(t, 0), 3, 0x01) -+#define ISP_NVRAM_TGT_SYNC(c, t) ISPBSMX(c, _IxT(t, 0), 4, 0x01) -+#define ISP_NVRAM_TGT_WIDE(c, t) ISPBSMX(c, _IxT(t, 0), 5, 0x01) -+#define ISP_NVRAM_TGT_PARITY(c, t) ISPBSMX(c, _IxT(t, 0), 6, 0x01) -+#define ISP_NVRAM_TGT_DISC(c, t) ISPBSMX(c, _IxT(t, 0), 7, 0x01) -+#define ISP_NVRAM_TGT_EXEC_THROTTLE(c, t) ISPBSMX(c, _IxT(t, 1), 0, 0xff) -+#define ISP_NVRAM_TGT_SYNC_PERIOD(c, t) ISPBSMX(c, _IxT(t, 2), 0, 0xff) -+#define ISP_NVRAM_TGT_SYNC_OFFSET(c, t) ISPBSMX(c, _IxT(t, 3), 0, 0x0f) -+#define ISP_NVRAM_TGT_DEVICE_ENABLE(c, t) ISPBSMX(c, _IxT(t, 3), 4, 0x01) -+#define ISP_NVRAM_TGT_LUN_DISABLE(c, t) ISPBSMX(c, _IxT(t, 3), 5, 0x01) -+ -+/* -+ * Qlogic 1080/1240 NVRAM is an array of 256 bytes. -+ * -+ * Some portion of the front of this is for general host adapter properties -+ * This is followed by an array of per-target parameters, and is tailed off -+ * with a checksum xor byte at offset 256. For non-byte entities data is -+ * stored in Little Endian order. -+ */ -+ -+#define ISP1080_NVRAM_SIZE 256 -+ -+#define ISP1080_NVRAM_VERSION(c) ISP_NVRAM_VERSION(c) -+ -+/* Offset 5 */ -+/* -+ u_int8_t bios_configuration_mode :2; -+ u_int8_t bios_disable :1; -+ u_int8_t selectable_scsi_boot_enable :1; -+ u_int8_t cd_rom_boot_enable :1; -+ u_int8_t disable_loading_risc_code :1; -+ u_int8_t enable_64bit_addressing :1; -+ u_int8_t unused_7 :1; -+ */ -+ -+/* Offsets 6, 7 */ -+/* -+ u_int8_t boot_lun_number :5; -+ u_int8_t scsi_bus_number :1; -+ u_int8_t unused_6 :1; -+ u_int8_t unused_7 :1; -+ u_int8_t boot_target_number :4; -+ u_int8_t unused_12 :1; -+ u_int8_t unused_13 :1; -+ u_int8_t unused_14 :1; -+ u_int8_t unused_15 :1; -+ */ -+ -+#define ISP1080_NVRAM_HBA_ENABLE(c) ISPBSMX(c, 16, 3, 0x01) -+ -+#define ISP1080_NVRAM_BURST_ENABLE(c) ISPBSMX(c, 16, 1, 0x01) -+#define ISP1080_NVRAM_FIFO_THRESHOLD(c) ISPBSMX(c, 16, 4, 0x0f) -+ -+#define ISP1080_NVRAM_AUTO_TERM_SUPPORT(c) ISPBSMX(c, 17, 7, 0x01) -+#define ISP1080_NVRAM_BUS0_TERM_MODE(c) ISPBSMX(c, 17, 0, 0x03) -+#define ISP1080_NVRAM_BUS1_TERM_MODE(c) ISPBSMX(c, 17, 2, 0x03) -+ -+#define ISP1080_ISP_PARAMETER(c) \ -+ (((c)[18]) | ((c)[19] << 8)) -+ -+#define ISP1080_FAST_POST(c) ISPBSMX(c, 20, 0, 0x01) -+#define ISP1080_REPORT_LVD_TRANSITION(c) ISPBSMX(c, 20, 1, 0x01) -+ -+#define ISP1080_BUS1_OFF 112 -+ -+#define ISP1080_NVRAM_INITIATOR_ID(c, b) \ -+ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 24, 0, 0x0f) -+#define ISP1080_NVRAM_BUS_RESET_DELAY(c, b) \ -+ (c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 25] -+#define ISP1080_NVRAM_BUS_RETRY_COUNT(c, b) \ -+ (c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 26] -+#define ISP1080_NVRAM_BUS_RETRY_DELAY(c, b) \ -+ (c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 27] -+ -+#define ISP1080_NVRAM_ASYNC_DATA_SETUP_TIME(c, b) \ -+ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 28, 0, 0x0f) -+#define ISP1080_NVRAM_REQ_ACK_ACTIVE_NEGATION(c, b) \ -+ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 28, 4, 0x01) -+#define ISP1080_NVRAM_DATA_LINE_ACTIVE_NEGATION(c, b) \ -+ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 28, 5, 0x01) -+#define ISP1080_NVRAM_SELECTION_TIMEOUT(c, b) \ -+ (((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 30]) | \ -+ ((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 31] << 8)) -+#define ISP1080_NVRAM_MAX_QUEUE_DEPTH(c, b) \ -+ (((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 32]) | \ -+ ((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 33] << 8)) -+ -+#define ISP1080_NVRAM_TARGOFF(b) \ -+ ((b == 0)? 40: (40 + ISP1080_BUS1_OFF)) -+#define ISP1080_NVRAM_TARGSIZE 6 -+#define _IxT8(tgt, tidx, b) \ -+ (ISP1080_NVRAM_TARGOFF((b)) + (ISP1080_NVRAM_TARGSIZE * (tgt)) + (tidx)) -+ -+#define ISP1080_NVRAM_TGT_RENEG(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 0, 0x01) -+#define ISP1080_NVRAM_TGT_QFRZ(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 1, 0x01) -+#define ISP1080_NVRAM_TGT_ARQ(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 2, 0x01) -+#define ISP1080_NVRAM_TGT_TQING(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 3, 0x01) -+#define ISP1080_NVRAM_TGT_SYNC(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 4, 0x01) -+#define ISP1080_NVRAM_TGT_WIDE(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 5, 0x01) -+#define ISP1080_NVRAM_TGT_PARITY(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 6, 0x01) -+#define ISP1080_NVRAM_TGT_DISC(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 0, (b)), 7, 0x01) -+#define ISP1080_NVRAM_TGT_EXEC_THROTTLE(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 1, (b)), 0, 0xff) -+#define ISP1080_NVRAM_TGT_SYNC_PERIOD(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 2, (b)), 0, 0xff) -+#define ISP1080_NVRAM_TGT_SYNC_OFFSET(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 3, (b)), 0, 0x0f) -+#define ISP1080_NVRAM_TGT_DEVICE_ENABLE(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 3, (b)), 4, 0x01) -+#define ISP1080_NVRAM_TGT_LUN_DISABLE(c, t, b) \ -+ ISPBSMX(c, _IxT8(t, 3, (b)), 5, 0x01) -+ -+#define ISP12160_NVRAM_HBA_ENABLE ISP1080_NVRAM_HBA_ENABLE -+#define ISP12160_NVRAM_BURST_ENABLE ISP1080_NVRAM_BURST_ENABLE -+#define ISP12160_NVRAM_FIFO_THRESHOLD ISP1080_NVRAM_FIFO_THRESHOLD -+#define ISP12160_NVRAM_AUTO_TERM_SUPPORT ISP1080_NVRAM_AUTO_TERM_SUPPORT -+#define ISP12160_NVRAM_BUS0_TERM_MODE ISP1080_NVRAM_BUS0_TERM_MODE -+#define ISP12160_NVRAM_BUS1_TERM_MODE ISP1080_NVRAM_BUS1_TERM_MODE -+#define ISP12160_ISP_PARAMETER ISP12160_ISP_PARAMETER -+#define ISP12160_FAST_POST ISP1080_FAST_POST -+#define ISP12160_REPORT_LVD_TRANSITION ISP1080_REPORT_LVD_TRANSTION -+ -+#define ISP12160_NVRAM_INITIATOR_ID \ -+ ISP1080_NVRAM_INITIATOR_ID -+#define ISP12160_NVRAM_BUS_RESET_DELAY \ -+ ISP1080_NVRAM_BUS_RESET_DELAY -+#define ISP12160_NVRAM_BUS_RETRY_COUNT \ -+ ISP1080_NVRAM_BUS_RETRY_COUNT -+#define ISP12160_NVRAM_BUS_RETRY_DELAY \ -+ ISP1080_NVRAM_BUS_RETRY_DELAY -+#define ISP12160_NVRAM_ASYNC_DATA_SETUP_TIME \ -+ ISP1080_NVRAM_ASYNC_DATA_SETUP_TIME -+#define ISP12160_NVRAM_REQ_ACK_ACTIVE_NEGATION \ -+ ISP1080_NVRAM_REQ_ACK_ACTIVE_NEGATION -+#define ISP12160_NVRAM_DATA_LINE_ACTIVE_NEGATION \ -+ ISP1080_NVRAM_DATA_LINE_ACTIVE_NEGATION -+#define ISP12160_NVRAM_SELECTION_TIMEOUT \ -+ ISP1080_NVRAM_SELECTION_TIMEOUT -+#define ISP12160_NVRAM_MAX_QUEUE_DEPTH \ -+ ISP1080_NVRAM_MAX_QUEUE_DEPTH -+ -+ -+#define ISP12160_BUS0_OFF 24 -+#define ISP12160_BUS1_OFF 136 -+ -+#define ISP12160_NVRAM_TARGOFF(b) \ -+ (((b == 0)? ISP12160_BUS0_OFF : ISP12160_BUS1_OFF) + 16) -+ -+#define ISP12160_NVRAM_TARGSIZE 6 -+#define _IxT16(tgt, tidx, b) \ -+ (ISP12160_NVRAM_TARGOFF((b))+(ISP12160_NVRAM_TARGSIZE * (tgt))+(tidx)) -+ -+#define ISP12160_NVRAM_TGT_RENEG(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 0, 0x01) -+#define ISP12160_NVRAM_TGT_QFRZ(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 1, 0x01) -+#define ISP12160_NVRAM_TGT_ARQ(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 2, 0x01) -+#define ISP12160_NVRAM_TGT_TQING(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 3, 0x01) -+#define ISP12160_NVRAM_TGT_SYNC(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 4, 0x01) -+#define ISP12160_NVRAM_TGT_WIDE(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 5, 0x01) -+#define ISP12160_NVRAM_TGT_PARITY(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 6, 0x01) -+#define ISP12160_NVRAM_TGT_DISC(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 0, (b)), 7, 0x01) -+ -+#define ISP12160_NVRAM_TGT_EXEC_THROTTLE(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 1, (b)), 0, 0xff) -+#define ISP12160_NVRAM_TGT_SYNC_PERIOD(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 2, (b)), 0, 0xff) -+ -+#define ISP12160_NVRAM_TGT_SYNC_OFFSET(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 3, (b)), 0, 0x1f) -+#define ISP12160_NVRAM_TGT_DEVICE_ENABLE(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 3, (b)), 5, 0x01) -+ -+#define ISP12160_NVRAM_PPR_OPTIONS(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 4, (b)), 0, 0x0f) -+#define ISP12160_NVRAM_PPR_WIDTH(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 4, (b)), 4, 0x03) -+#define ISP12160_NVRAM_PPR_ENABLE(c, t, b) \ -+ ISPBSMX(c, _IxT16(t, 4, (b)), 7, 0x01) -+ -+/* -+ * Qlogic 2XXX NVRAM is an array of 256 bytes. -+ * -+ * Some portion of the front of this is for general RISC engine parameters, -+ * mostly reflecting the state of the last INITIALIZE FIRMWARE mailbox command. -+ * -+ * This is followed by some general host adapter parameters, and ends with -+ * a checksum xor byte at offset 255. For non-byte entities data is stored -+ * in Little Endian order. -+ */ -+#define ISP2100_NVRAM_SIZE 256 -+/* ISP_NVRAM_VERSION is in same overall place */ -+#define ISP2100_NVRAM_RISCVER(c) (c)[6] -+#define ISP2100_NVRAM_OPTIONS(c) (c)[8] -+#define ISP2100_NVRAM_MAXFRAMELENGTH(c) (((c)[10]) | ((c)[11] << 8)) -+#define ISP2100_NVRAM_MAXIOCBALLOCATION(c) (((c)[12]) | ((c)[13] << 8)) -+#define ISP2100_NVRAM_EXECUTION_THROTTLE(c) (((c)[14]) | ((c)[15] << 8)) -+#define ISP2100_NVRAM_RETRY_COUNT(c) (c)[16] -+#define ISP2100_NVRAM_RETRY_DELAY(c) (c)[17] -+ -+#define ISP2100_NVRAM_PORT_NAME(c) (\ -+ (((u_int64_t)(c)[18]) << 56) | \ -+ (((u_int64_t)(c)[19]) << 48) | \ -+ (((u_int64_t)(c)[20]) << 40) | \ -+ (((u_int64_t)(c)[21]) << 32) | \ -+ (((u_int64_t)(c)[22]) << 24) | \ -+ (((u_int64_t)(c)[23]) << 16) | \ -+ (((u_int64_t)(c)[24]) << 8) | \ -+ (((u_int64_t)(c)[25]) << 0)) -+ -+#define ISP2100_NVRAM_HARDLOOPID(c) (c)[26] -+ -+#define ISP2200_NVRAM_NODE_NAME(c) (\ -+ (((u_int64_t)(c)[30]) << 56) | \ -+ (((u_int64_t)(c)[31]) << 48) | \ -+ (((u_int64_t)(c)[32]) << 40) | \ -+ (((u_int64_t)(c)[33]) << 32) | \ -+ (((u_int64_t)(c)[34]) << 24) | \ -+ (((u_int64_t)(c)[35]) << 16) | \ -+ (((u_int64_t)(c)[36]) << 8) | \ -+ (((u_int64_t)(c)[37]) << 0)) -+ -+#define ISP2100_NVRAM_HBA_OPTIONS(c) (c)[70] -+#define ISP2100_NVRAM_HBA_DISABLE(c) ISPBSMX(c, 70, 0, 0x01) -+#define ISP2100_NVRAM_BIOS_DISABLE(c) ISPBSMX(c, 70, 1, 0x01) -+#define ISP2100_NVRAM_LUN_DISABLE(c) ISPBSMX(c, 70, 2, 0x01) -+#define ISP2100_NVRAM_ENABLE_SELECT_BOOT(c) ISPBSMX(c, 70, 3, 0x01) -+#define ISP2100_NVRAM_DISABLE_CODELOAD(c) ISPBSMX(c, 70, 4, 0x01) -+#define ISP2100_NVRAM_SET_CACHELINESZ(c) ISPBSMX(c, 70, 5, 0x01) -+ -+#define ISP2100_NVRAM_BOOT_NODE_NAME(c) (\ -+ (((u_int64_t)(c)[72]) << 56) | \ -+ (((u_int64_t)(c)[73]) << 48) | \ -+ (((u_int64_t)(c)[74]) << 40) | \ -+ (((u_int64_t)(c)[75]) << 32) | \ -+ (((u_int64_t)(c)[76]) << 24) | \ -+ (((u_int64_t)(c)[77]) << 16) | \ -+ (((u_int64_t)(c)[78]) << 8) | \ -+ (((u_int64_t)(c)[79]) << 0)) -+ -+#define ISP2100_NVRAM_BOOT_LUN(c) (c)[80] -+ -+#define ISP2200_HBA_FEATURES(c) (c)[232] | ((c)[233] << 8) -+ -+/* -+ * Firmware Crash Dump -+ * -+ * QLogic needs specific information format when they look at firmware crashes. -+ * -+ * This is incredibly kernel memory consumptive (to say the least), so this -+ * code is only compiled in when needed. -+ */ -+ -+#define QLA2200_RISC_IMAGE_DUMP_SIZE \ -+ (1 * sizeof (u_int16_t)) + /* 'used' flag (also HBA type) */ \ -+ (352 * sizeof (u_int16_t)) + /* RISC registers */ \ -+ (61440 * sizeof (u_int16_t)) /* RISC SRAM (offset 0x1000..0xffff) */ -+#define QLA2300_RISC_IMAGE_DUMP_SIZE \ -+ (1 * sizeof (u_int16_t)) + /* 'used' flag (also HBA type) */ \ -+ (464 * sizeof (u_int16_t)) + /* RISC registers */ \ -+ (63488 * sizeof (u_int16_t)) + /* RISC SRAM (0x0800..0xffff) */ \ -+ (4096 * sizeof (u_int16_t)) + /* RISC SRAM (0x10000..0x10FFF) */ \ -+ (61440 * sizeof (u_int16_t)) /* RISC SRAM (0x11000..0x1FFFF) */ -+/* the larger of the two */ -+#define ISP_CRASH_IMAGE_SIZE QLA2300_RISC_IMAGE_DUMP_SIZE -+#endif /* _ISPREG_H */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_target.c 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,1195 @@ -+/* @(#)isp_target.c 1.21 */ -+/* -+ * Machine and OS Independent Target Mode Code for the Qlogic SCSI/FC adapters. -+ * -+ * Copyright (c) 1999, 2000, 2001 by Matthew Jacob -+ * All rights reserved. -+ * mjacob@feral.com -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice immediately at the beginning of the file, without modification, -+ * this list of conditions, and the following disclaimer. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+ -+/* -+ * Bug fixes gratefully acknowledged from: -+ * Oded Kedem -+ */ -+/* -+ * Include header file appropriate for platform we're building on. -+ */ -+ -+#ifdef __NetBSD__ -+#include -+#endif -+#ifdef __FreeBSD__ -+#include -+#endif -+#ifdef __OpenBSD__ -+#include -+#endif -+#ifdef __linux__ -+#include "isp_linux.h" -+#endif -+ -+#ifdef ISP_TARGET_MODE -+static const char atiocope[] = -+ "ATIO returned for lun %d because it was in the middle of Bus Device Reset " -+ "on bus %d"; -+static const char atior[] = -+ "ATIO returned on for lun %d on from IID %d because a Bus Reset occurred " -+ "on bus %d"; -+ -+static void isp_got_msg(struct ispsoftc *, int, in_entry_t *); -+static void isp_got_msg_fc(struct ispsoftc *, int, in_fcentry_t *); -+static void isp_notify_ack(struct ispsoftc *, void *); -+static void isp_handle_atio(struct ispsoftc *, at_entry_t *); -+static void isp_handle_atio2(struct ispsoftc *, at2_entry_t *); -+static void isp_handle_ctio(struct ispsoftc *, ct_entry_t *); -+static void isp_handle_ctio2(struct ispsoftc *, ct2_entry_t *); -+ -+/* -+ * The Qlogic driver gets an interrupt to look at response queue entries. -+ * Some of these are status completions for initiatior mode commands, but -+ * if target mode is enabled, we get a whole wad of response queue entries -+ * to be handled here. -+ * -+ * Basically the split into 3 main groups: Lun Enable/Modification responses, -+ * SCSI Command processing, and Immediate Notification events. -+ * -+ * You start by writing a request queue entry to enable target mode (and -+ * establish some resource limitations which you can modify later). -+ * The f/w responds with a LUN ENABLE or LUN MODIFY response with -+ * the status of this action. If the enable was successful, you can expect... -+ * -+ * Response queue entries with SCSI commands encapsulate show up in an ATIO -+ * (Accept Target IO) type- sometimes with enough info to stop the command at -+ * this level. Ultimately the driver has to feed back to the f/w's request -+ * queue a sequence of CTIOs (continue target I/O) that describe data to -+ * be moved and/or status to be sent) and finally finishing with sending -+ * to the f/w's response queue an ATIO which then completes the handshake -+ * with the f/w for that command. There's a lot of variations on this theme, -+ * including flags you can set in the CTIO for the Qlogic 2X00 fibre channel -+ * cards that 'auto-replenish' the f/w's ATIO count, but this is the basic -+ * gist of it. -+ * -+ * The third group that can show up in the response queue are Immediate -+ * Notification events. These include things like notifications of SCSI bus -+ * resets, or Bus Device Reset messages or other messages received. This -+ * a classic oddbins area. It can get a little weird because you then turn -+ * around and acknowledge the Immediate Notify by writing an entry onto the -+ * request queue and then the f/w turns around and gives you an acknowledgement -+ * to *your* acknowledgement on the response queue (the idea being to let -+ * the f/w tell you when the event is *really* over I guess). -+ * -+ */ -+ -+ -+/* -+ * A new response queue entry has arrived. The interrupt service code -+ * has already swizzled it into the platform dependent from canonical form. -+ * -+ * Because of the way this driver is designed, unfortunately most of the -+ * actual synchronization work has to be done in the platform specific -+ * code- we have no synchroniation primitives in the common code. -+ */ -+ -+int -+isp_target_notify(struct ispsoftc *isp, void *vptr, u_int16_t *optrp) -+{ -+ u_int16_t status, seqid; -+ union { -+ at_entry_t *atiop; -+ at2_entry_t *at2iop; -+ ct_entry_t *ctiop; -+ ct2_entry_t *ct2iop; -+ lun_entry_t *lunenp; -+ in_entry_t *inotp; -+ in_fcentry_t *inot_fcp; -+ na_entry_t *nackp; -+ na_fcentry_t *nack_fcp; -+ isphdr_t *hp; -+ void * *vp; -+#define atiop unp.atiop -+#define at2iop unp.at2iop -+#define ctiop unp.ctiop -+#define ct2iop unp.ct2iop -+#define lunenp unp.lunenp -+#define inotp unp.inotp -+#define inot_fcp unp.inot_fcp -+#define nackp unp.nackp -+#define nack_fcp unp.nack_fcp -+#define hdrp unp.hp -+ } unp; -+ u_int8_t local[QENTRY_LEN]; -+ int bus, type, rval = 1; -+ -+ type = isp_get_response_type(isp, (isphdr_t *)vptr); -+ unp.vp = vptr; -+ -+ ISP_TDQE(isp, "isp_target_notify", (int) *optrp, vptr); -+ -+ switch(type) { -+ case RQSTYPE_ATIO: -+ isp_get_atio(isp, atiop, (at_entry_t *) local); -+ isp_handle_atio(isp, (at_entry_t *) local); -+ break; -+ case RQSTYPE_CTIO: -+ isp_get_ctio(isp, ctiop, (ct_entry_t *) local); -+ isp_handle_ctio(isp, (ct_entry_t *) local); -+ break; -+ case RQSTYPE_ATIO2: -+ isp_get_atio2(isp, at2iop, (at2_entry_t *) local); -+ isp_handle_atio2(isp, (at2_entry_t *) local); -+ break; -+ case RQSTYPE_CTIO2: -+ isp_get_ctio2(isp, ct2iop, (ct2_entry_t *) local); -+ isp_handle_ctio2(isp, (ct2_entry_t *) local); -+ break; -+ case RQSTYPE_ENABLE_LUN: -+ case RQSTYPE_MODIFY_LUN: -+ isp_get_enable_lun(isp, lunenp, (lun_entry_t *) local); -+ (void) isp_async(isp, ISPASYNC_TARGET_ACTION, local); -+ break; -+ -+ case RQSTYPE_NOTIFY: -+ /* -+ * Either the ISP received a SCSI message it can't -+ * handle, or it's returning an Immed. Notify entry -+ * we sent. We can send Immed. Notify entries to -+ * increment the firmware's resource count for them -+ * (we set this initially in the Enable Lun entry). -+ */ -+ bus = 0; -+ if (IS_FC(isp)) { -+ isp_get_notify_fc(isp, inot_fcp, (in_fcentry_t *)local); -+ inot_fcp = (in_fcentry_t *) local; -+ status = inot_fcp->in_status; -+ seqid = inot_fcp->in_seqid; -+ } else { -+ isp_get_notify(isp, inotp, (in_entry_t *)local); -+ inotp = (in_entry_t *) local; -+ status = inotp->in_status & 0xff; -+ seqid = inotp->in_seqid; -+ if (IS_DUALBUS(isp)) { -+ bus = GET_BUS_VAL(inotp->in_iid); -+ SET_BUS_VAL(inotp->in_iid, 0); -+ } -+ } -+ isp_prt(isp, ISP_LOGTDEBUG0, -+ "Immediate Notify On Bus %d, status=0x%x seqid=0x%x", -+ bus, status, seqid); -+ -+ /* -+ * ACK it right away. -+ */ -+ isp_notify_ack(isp, (status == IN_RESET)? NULL : local); -+ switch (status) { -+ case IN_RESET: -+ (void) isp_async(isp, ISPASYNC_BUS_RESET, &bus); -+ break; -+ case IN_MSG_RECEIVED: -+ case IN_IDE_RECEIVED: -+ if (IS_FC(isp)) { -+ isp_got_msg_fc(isp, bus, (in_fcentry_t *)local); -+ } else { -+ isp_got_msg(isp, bus, (in_entry_t *)local); -+ } -+ break; -+ case IN_RSRC_UNAVAIL: -+ isp_prt(isp, ISP_LOGWARN, "Firmware out of ATIOs"); -+ break; -+ case IN_PORT_LOGOUT: -+ case IN_ABORT_TASK: -+ case IN_PORT_CHANGED: -+ case IN_GLOBAL_LOGO: -+ (void) isp_async(isp, ISPASYNC_TARGET_ACTION, &local); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "bad status (0x%x) in isp_target_notify", status); -+ break; -+ } -+ break; -+ -+ case RQSTYPE_NOTIFY_ACK: -+ /* -+ * The ISP is acknowledging our acknowledgement of an -+ * Immediate Notify entry for some asynchronous event. -+ */ -+ if (IS_FC(isp)) { -+ isp_get_notify_ack_fc(isp, nack_fcp, -+ (na_fcentry_t *)local); -+ nack_fcp = (na_fcentry_t *)local; -+ isp_prt(isp, ISP_LOGTDEBUG1, -+ "Notify Ack status=0x%x seqid 0x%x", -+ nack_fcp->na_status, nack_fcp->na_seqid); -+ } else { -+ isp_get_notify_ack(isp, nackp, (na_entry_t *)local); -+ nackp = (na_entry_t *)local; -+ isp_prt(isp, ISP_LOGTDEBUG1, -+ "Notify Ack event 0x%x status=0x%x seqid 0x%x", -+ nackp->na_event, nackp->na_status, nackp->na_seqid); -+ } -+ break; -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "Unknown entry type 0x%x in isp_target_notify", type); -+ rval = 0; -+ break; -+ } -+#undef atiop -+#undef at2iop -+#undef ctiop -+#undef ct2iop -+#undef lunenp -+#undef inotp -+#undef inot_fcp -+#undef nackp -+#undef nack_fcp -+#undef hdrp -+ return (rval); -+} -+ -+ -+/* -+ * Toggle (on/off) target mode for bus/target/lun -+ * -+ * The caller has checked for overlap and legality. -+ * -+ * Note that not all of bus, target or lun can be paid attention to. -+ * Note also that this action will not be complete until the f/w writes -+ * response entry. The caller is responsible for synchronizing this. -+ */ -+int -+isp_lun_cmd(struct ispsoftc *isp, int cmd, int bus, int tgt, int lun, -+ int cmd_cnt, int inot_cnt, u_int32_t opaque) -+{ -+ lun_entry_t el; -+ u_int16_t nxti, optr; -+ void *outp; -+ -+ -+ MEMZERO(&el, sizeof (el)); -+ if (IS_DUALBUS(isp)) { -+ el.le_rsvd = (bus & 0x1) << 7; -+ } -+ el.le_cmd_count = cmd_cnt; -+ el.le_in_count = inot_cnt; -+ if (cmd == RQSTYPE_ENABLE_LUN) { -+ if (IS_SCSI(isp)) { -+ el.le_flags = LUN_TQAE|LUN_DISAD; -+ el.le_cdb6len = 12; -+ el.le_cdb7len = 12; -+ } -+ } else if (cmd == -RQSTYPE_ENABLE_LUN) { -+ cmd = RQSTYPE_ENABLE_LUN; -+ el.le_cmd_count = 0; -+ el.le_in_count = 0; -+ } else if (cmd == -RQSTYPE_MODIFY_LUN) { -+ cmd = RQSTYPE_MODIFY_LUN; -+ el.le_ops = LUN_CCDECR | LUN_INDECR; -+ } else { -+ el.le_ops = LUN_CCINCR | LUN_ININCR; -+ } -+ el.le_header.rqs_entry_type = cmd; -+ el.le_header.rqs_entry_count = 1; -+ el.le_reserved = opaque; -+ if (IS_SCSI(isp)) { -+ el.le_tgt = tgt; -+ el.le_lun = lun; -+ } else if ((FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) == 0) { -+ el.le_lun = lun; -+ } -+ el.le_timeout = 2; -+ -+ if (isp_getrqentry(isp, &nxti, &optr, &outp)) { -+ isp_prt(isp, ISP_LOGERR, -+ "Request Queue Overflow in isp_lun_cmd"); -+ return (-1); -+ } -+ ISP_TDQE(isp, "isp_lun_cmd", (int) optr, &el); -+ isp_put_enable_lun(isp, &el, outp); -+ ISP_ADD_REQUEST(isp, nxti); -+ return (0); -+} -+ -+ -+int -+isp_target_put_entry(struct ispsoftc *isp, void *ap) -+{ -+ void *outp; -+ u_int16_t nxti, optr; -+ u_int8_t etype = ((isphdr_t *) ap)->rqs_entry_type; -+ -+ if (isp_getrqentry(isp, &nxti, &optr, &outp)) { -+ isp_prt(isp, ISP_LOGWARN, -+ "Request Queue Overflow in isp_target_put_entry"); -+ return (-1); -+ } -+ switch (etype) { -+ case RQSTYPE_ATIO: -+ isp_put_atio(isp, (at_entry_t *) ap, (at_entry_t *) outp); -+ break; -+ case RQSTYPE_ATIO2: -+ isp_put_atio2(isp, (at2_entry_t *) ap, (at2_entry_t *) outp); -+ break; -+ case RQSTYPE_CTIO: -+ isp_put_ctio(isp, (ct_entry_t *) ap, (ct_entry_t *) outp); -+ break; -+ case RQSTYPE_CTIO2: -+ isp_put_ctio2(isp, (ct2_entry_t *) ap, (ct2_entry_t *) outp); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "Unknown type 0x%x in isp_put_entry", etype); -+ return (-1); -+ } -+ -+ ISP_TDQE(isp, "isp_target_put_entry", (int) optr, ap); -+ ISP_ADD_REQUEST(isp, nxti); -+ return (0); -+} -+ -+int -+isp_target_put_atio(struct ispsoftc *isp, void *arg) -+{ -+ union { -+ at_entry_t _atio; -+ at2_entry_t _atio2; -+ } atun; -+ -+ MEMZERO(&atun, sizeof atun); -+ if (IS_FC(isp)) { -+ at2_entry_t *aep = arg; -+ atun._atio2.at_header.rqs_entry_type = RQSTYPE_ATIO2; -+ atun._atio2.at_header.rqs_entry_count = 1; -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) { -+ atun._atio2.at_scclun = (u_int16_t) aep->at_scclun; -+ } else { -+ atun._atio2.at_lun = (u_int8_t) aep->at_lun; -+ } -+ atun._atio2.at_iid = aep->at_iid; -+ atun._atio2.at_rxid = aep->at_rxid; -+ atun._atio2.at_status = CT_OK; -+ } else { -+ at_entry_t *aep = arg; -+ atun._atio.at_header.rqs_entry_type = RQSTYPE_ATIO; -+ atun._atio.at_header.rqs_entry_count = 1; -+ atun._atio.at_handle = aep->at_handle; -+ atun._atio.at_iid = aep->at_iid; -+ atun._atio.at_tgt = aep->at_tgt; -+ atun._atio.at_lun = aep->at_lun; -+ atun._atio.at_tag_type = aep->at_tag_type; -+ atun._atio.at_tag_val = aep->at_tag_val; -+ atun._atio.at_status = (aep->at_flags & AT_TQAE); -+ atun._atio.at_status |= CT_OK; -+ } -+ return (isp_target_put_entry(isp, &atun)); -+} -+ -+/* -+ * Command completion- both for handling cases of no resources or -+ * no blackhole driver, or other cases where we have to, inline, -+ * finish the command sanely, or for normal command completion. -+ * -+ * The 'completion' code value has the scsi status byte in the low 8 bits. -+ * If status is a CHECK CONDITION and bit 8 is nonzero, then bits 12..15 have -+ * the sense key and bits 16..23 have the ASCQ and bits 24..31 have the ASC -+ * values. -+ * -+ * NB: the key, asc, ascq, cannot be used for parallel SCSI as it doesn't -+ * NB: inline SCSI sense reporting. As such, we lose this information. XXX. -+ * -+ * For both parallel && fibre channel, we use the feature that does -+ * an automatic resource autoreplenish so we don't have then later do -+ * put of an atio to replenish the f/w's resource count. -+ */ -+ -+int -+isp_endcmd(struct ispsoftc *isp, void *arg, u_int32_t code, u_int16_t hdl) -+{ -+ int sts; -+ union { -+ ct_entry_t _ctio; -+ ct2_entry_t _ctio2; -+ } un; -+ -+ MEMZERO(&un, sizeof un); -+ sts = code & 0xff; -+ -+ if (IS_FC(isp)) { -+ at2_entry_t *aep = arg; -+ ct2_entry_t *cto = &un._ctio2; -+ -+ cto->ct_header.rqs_entry_type = RQSTYPE_CTIO2; -+ cto->ct_header.rqs_entry_count = 1; -+ cto->ct_iid = aep->at_iid; -+ if ((FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) == 0) { -+ cto->ct_lun = aep->at_lun; -+ } -+ cto->ct_rxid = aep->at_rxid; -+ cto->rsp.m1.ct_scsi_status = sts & 0xff; -+ cto->ct_flags = CT2_SENDSTATUS | CT2_NO_DATA | CT2_FLAG_MODE1; -+ if (hdl == 0) { -+ cto->ct_flags |= CT2_CCINCR; -+ } -+ if (aep->at_datalen) { -+ cto->ct_resid = aep->at_datalen; -+ cto->rsp.m1.ct_scsi_status |= CT2_DATA_UNDER; -+ } -+ if ((sts & 0xff) == SCSI_CHECK && (sts & ECMD_SVALID)) { -+ cto->rsp.m1.ct_resp[0] = 0xf0; -+ cto->rsp.m1.ct_resp[2] = (code >> 12) & 0xf; -+ cto->rsp.m1.ct_resp[7] = 8; -+ cto->rsp.m1.ct_resp[12] = (code >> 24) & 0xff; -+ cto->rsp.m1.ct_resp[13] = (code >> 16) & 0xff; -+ cto->rsp.m1.ct_senselen = 16; -+ cto->rsp.m1.ct_scsi_status |= CT2_SNSLEN_VALID; -+ } -+ cto->ct_syshandle = hdl; -+ } else { -+ at_entry_t *aep = arg; -+ ct_entry_t *cto = &un._ctio; -+ -+ cto->ct_header.rqs_entry_type = RQSTYPE_CTIO; -+ cto->ct_header.rqs_entry_count = 1; -+ cto->ct_fwhandle = aep->at_handle; -+ cto->ct_iid = aep->at_iid; -+ cto->ct_tgt = aep->at_tgt; -+ cto->ct_lun = aep->at_lun; -+ cto->ct_tag_type = aep->at_tag_type; -+ cto->ct_tag_val = aep->at_tag_val; -+ if (aep->at_flags & AT_TQAE) { -+ cto->ct_flags |= CT_TQAE; -+ } -+ cto->ct_flags = CT_SENDSTATUS | CT_NO_DATA; -+ if (hdl == 0) { -+ cto->ct_flags |= CT_CCINCR; -+ } -+ cto->ct_scsi_status = sts; -+ cto->ct_syshandle = hdl; -+ } -+ return (isp_target_put_entry(isp, &un)); -+} -+ -+int -+isp_target_async(struct ispsoftc *isp, int bus, int event) -+{ -+ tmd_event_t evt; -+ tmd_msg_t msg; -+ -+ switch (event) { -+ /* -+ * These three we handle here to propagate an effective bus reset -+ * upstream, but these do not require any immediate notify actions -+ * so we return when done. -+ */ -+ case ASYNC_LIP_F8: -+ case ASYNC_LIP_OCCURRED: -+ case ASYNC_LOOP_UP: -+ case ASYNC_LOOP_DOWN: -+ case ASYNC_LOOP_RESET: -+ case ASYNC_PTPMODE: -+ /* -+ * These don't require any immediate notify actions. We used -+ * treat them like SCSI Bus Resets, but that was just plain -+ * wrong. Let the normal CTIO completion report what occurred. -+ */ -+ return (0); -+ -+ case ASYNC_BUS_RESET: -+ case ASYNC_TIMEOUT_RESET: -+ if (IS_FC(isp)) { -+ return (0); /* we'll be getting an inotify instead */ -+ } -+ evt.ev_bus = bus; -+ evt.ev_event = event; -+ (void) isp_async(isp, ISPASYNC_TARGET_EVENT, &evt); -+ break; -+ case ASYNC_DEVICE_RESET: -+ /* -+ * Bus Device Reset resets a specific target, so -+ * we pass this as a synthesized message. -+ */ -+ MEMZERO(&msg, sizeof msg); -+ if (IS_FC(isp)) { -+ msg.nt_iid = FCPARAM(isp)->isp_loopid; -+ } else { -+ msg.nt_iid = SDPARAM(isp)->isp_initiator_id; -+ } -+ msg.nt_bus = bus; -+ msg.nt_msg[0] = MSG_BUS_DEV_RESET; -+ (void) isp_async(isp, ISPASYNC_TARGET_MESSAGE, &msg); -+ break; -+ case ASYNC_CTIO_DONE: -+ evt.ev_bus = bus; -+ evt.ev_event = event; -+ (void) isp_async(isp, ISPASYNC_TARGET_EVENT, &evt); -+ return (0); -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "isp_target_async: unknown event 0x%x", event); -+ break; -+ } -+ if (isp->isp_state == ISP_RUNSTATE) -+ isp_notify_ack(isp, NULL); -+ return(0); -+} -+ -+ -+/* -+ * Process a received message. -+ * The ISP firmware can handle most messages, there are only -+ * a few that we need to deal with: -+ * - abort: clean up the current command -+ * - abort tag and clear queue -+ */ -+ -+static void -+isp_got_msg(struct ispsoftc *isp, int bus, in_entry_t *inp) -+{ -+ u_int8_t status = inp->in_status & ~QLTM_SVALID; -+ -+ if (status == IN_IDE_RECEIVED || status == IN_MSG_RECEIVED) { -+ tmd_msg_t msg; -+ -+ MEMZERO(&msg, sizeof (msg)); -+ msg.nt_bus = bus; -+ msg.nt_iid = inp->in_iid; -+ msg.nt_tgt = inp->in_tgt; -+ msg.nt_lun = inp->in_lun; -+ msg.nt_tagtype = inp->in_tag_type; -+ msg.nt_tagval = inp->in_tag_val; -+ MEMCPY(msg.nt_msg, inp->in_msg, IN_MSGLEN); -+ (void) isp_async(isp, ISPASYNC_TARGET_MESSAGE, &msg); -+ } else { -+ isp_prt(isp, ISP_LOGERR, -+ "unknown immediate notify status 0x%x", inp->in_status); -+ } -+} -+ -+/* -+ * Synthesize a message from the task management flags in a FCP_CMND_IU. -+ */ -+static void -+isp_got_msg_fc(struct ispsoftc *isp, int bus, in_fcentry_t *inp) -+{ -+ int lun; -+ static const char f1[] = "%s from iid %d lun %d seq 0x%x"; -+ static const char f2[] = -+ "unknown %s 0x%x lun %d iid %d task flags 0x%x seq 0x%x\n"; -+ -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) { -+ lun = inp->in_scclun; -+ } else { -+ lun = inp->in_lun; -+ } -+ -+ if (inp->in_status != IN_MSG_RECEIVED) { -+ isp_prt(isp, ISP_LOGINFO, f2, "immediate notify status", -+ inp->in_status, lun, inp->in_iid, -+ inp->in_task_flags, inp->in_seqid); -+ } else { -+ tmd_msg_t msg; -+ -+ MEMZERO(&msg, sizeof (msg)); -+ msg.nt_bus = bus; -+ msg.nt_iid = inp->in_iid; -+ msg.nt_tagval = inp->in_seqid; -+ msg.nt_lun = lun; -+ -+ if (inp->in_task_flags & TASK_FLAGS_ABORT_TASK) { -+ isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK", -+ inp->in_iid, lun, inp->in_seqid); -+ msg.nt_msg[0] = MSG_ABORT_TAG; -+ } else if (inp->in_task_flags & TASK_FLAGS_CLEAR_TASK_SET) { -+ isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", -+ inp->in_iid, lun, inp->in_seqid); -+ msg.nt_msg[0] = MSG_CLEAR_QUEUE; -+ } else if (inp->in_task_flags & TASK_FLAGS_TARGET_RESET) { -+ isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", -+ inp->in_iid, lun, inp->in_seqid); -+ msg.nt_msg[0] = MSG_BUS_DEV_RESET; -+ } else if (inp->in_task_flags & TASK_FLAGS_CLEAR_ACA) { -+ isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", -+ inp->in_iid, lun, inp->in_seqid); -+ /* ???? */ -+ msg.nt_msg[0] = MSG_REL_RECOVERY; -+ } else if (inp->in_task_flags & TASK_FLAGS_TERMINATE_TASK) { -+ isp_prt(isp, ISP_LOGINFO, f1, "TERMINATE TASK", -+ inp->in_iid, lun, inp->in_seqid); -+ msg.nt_msg[0] = MSG_TERM_IO_PROC; -+ } else { -+ isp_prt(isp, ISP_LOGWARN, f2, "task flag", -+ inp->in_status, lun, inp->in_iid, -+ inp->in_task_flags, inp->in_seqid); -+ } -+ if (msg.nt_msg[0]) { -+ (void) isp_async(isp, ISPASYNC_TARGET_MESSAGE, &msg); -+ } -+ } -+} -+ -+static void -+isp_notify_ack(struct ispsoftc *isp, void *arg) -+{ -+ char storage[QENTRY_LEN]; -+ u_int16_t nxti, optr; -+ void *outp; -+ -+ if (isp_getrqentry(isp, &nxti, &optr, &outp)) { -+ isp_prt(isp, ISP_LOGWARN, -+ "Request Queue Overflow For isp_notify_ack"); -+ return; -+ } -+ -+ MEMZERO(storage, QENTRY_LEN); -+ -+ if (IS_FC(isp)) { -+ na_fcentry_t *na = (na_fcentry_t *) storage; -+ if (arg) { -+ in_fcentry_t *inp = arg; -+ MEMCPY(storage, arg, sizeof (isphdr_t)); -+ na->na_iid = inp->in_iid; -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) { -+ na->na_lun = inp->in_scclun; -+ } else { -+ na->na_lun = inp->in_lun; -+ } -+ na->na_task_flags = inp->in_task_flags; -+ na->na_seqid = inp->in_seqid; -+ na->na_flags = NAFC_RCOUNT; -+ na->na_status = inp->in_status; -+ if (inp->in_status == IN_RESET) { -+ na->na_flags |= NAFC_RST_CLRD; -+ } -+ } else { -+ na->na_flags = NAFC_RST_CLRD; -+ } -+ na->na_header.rqs_entry_type = RQSTYPE_NOTIFY_ACK; -+ na->na_header.rqs_entry_count = 1; -+ isp_put_notify_ack_fc(isp, na, (na_fcentry_t *)outp); -+ } else { -+ na_entry_t *na = (na_entry_t *) storage; -+ if (arg) { -+ in_entry_t *inp = arg; -+ MEMCPY(storage, arg, sizeof (isphdr_t)); -+ na->na_iid = inp->in_iid; -+ na->na_lun = inp->in_lun; -+ na->na_tgt = inp->in_tgt; -+ na->na_seqid = inp->in_seqid; -+ if (inp->in_status == IN_RESET) { -+ na->na_event = NA_RST_CLRD; -+ } -+ } else { -+ na->na_event = NA_RST_CLRD; -+ } -+ na->na_header.rqs_entry_type = RQSTYPE_NOTIFY_ACK; -+ na->na_header.rqs_entry_count = 1; -+ isp_put_notify_ack(isp, na, (na_entry_t *)outp); -+ } -+ ISP_TDQE(isp, "isp_notify_ack", (int) optr, storage); -+ ISP_ADD_REQUEST(isp, nxti); -+} -+ -+static void -+isp_handle_atio(struct ispsoftc *isp, at_entry_t *aep) -+{ -+ int lun; -+ lun = aep->at_lun; -+ /* -+ * The firmware status (except for the QLTM_SVALID bit) indicates -+ * why this ATIO was sent to us. -+ * -+ * If QLTM_SVALID is set, the firware has recommended Sense Data. -+ * -+ * If the DISCONNECTS DISABLED bit is set in the flags field, -+ * we're still connected on the SCSI bus - i.e. the initiator -+ * did not set DiscPriv in the identify message. We don't care -+ * about this so it's ignored. -+ */ -+ -+ switch(aep->at_status & ~QLTM_SVALID) { -+ case AT_PATH_INVALID: -+ /* -+ * ATIO rejected by the firmware due to disabled lun. -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "rejected ATIO for disabled lun %d", lun); -+ break; -+ case AT_NOCAP: -+ /* -+ * Requested Capability not available -+ * We sent an ATIO that overflowed the firmware's -+ * command resource count. -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "rejected ATIO for lun %d because of command count" -+ " overflow", lun); -+ break; -+ -+ case AT_BDR_MSG: -+ /* -+ * If we send an ATIO to the firmware to increment -+ * its command resource count, and the firmware is -+ * recovering from a Bus Device Reset, it returns -+ * the ATIO with this status. We set the command -+ * resource count in the Enable Lun entry and do -+ * not increment it. Therefore we should never get -+ * this status here. -+ */ -+ isp_prt(isp, ISP_LOGERR, atiocope, lun, -+ GET_BUS_VAL(aep->at_iid)); -+ break; -+ -+ case AT_CDB: /* Got a CDB */ -+ case AT_PHASE_ERROR: /* Bus Phase Sequence Error */ -+ /* -+ * Punt to platform specific layer. -+ */ -+ (void) isp_async(isp, ISPASYNC_TARGET_ACTION, aep); -+ break; -+ -+ case AT_RESET: -+ /* -+ * A bus reset came along and blew away this command. Why -+ * they do this in addition the async event code stuff, -+ * I dunno. -+ * -+ * Ignore it because the async event will clear things -+ * up for us. -+ */ -+ isp_prt(isp, ISP_LOGWARN, atior, lun, -+ GET_IID_VAL(aep->at_iid), GET_BUS_VAL(aep->at_iid)); -+ break; -+ -+ -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "Unknown ATIO status 0x%x from initiator %d for lun %d", -+ aep->at_status, aep->at_iid, lun); -+ (void) isp_target_put_atio(isp, aep); -+ break; -+ } -+} -+ -+static void -+isp_handle_atio2(struct ispsoftc *isp, at2_entry_t *aep) -+{ -+ int lun; -+ -+ if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) { -+ lun = aep->at_scclun; -+ } else { -+ lun = aep->at_lun; -+ } -+ -+ /* -+ * The firmware status (except for the QLTM_SVALID bit) indicates -+ * why this ATIO was sent to us. -+ * -+ * If QLTM_SVALID is set, the firware has recommended Sense Data. -+ * -+ * If the DISCONNECTS DISABLED bit is set in the flags field, -+ * we're still connected on the SCSI bus - i.e. the initiator -+ * did not set DiscPriv in the identify message. We don't care -+ * about this so it's ignored. -+ */ -+ -+ switch(aep->at_status & ~QLTM_SVALID) { -+ case AT_PATH_INVALID: -+ /* -+ * ATIO rejected by the firmware due to disabled lun. -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "rejected ATIO2 for disabled lun %d", lun); -+ break; -+ case AT_NOCAP: -+ /* -+ * Requested Capability not available -+ * We sent an ATIO that overflowed the firmware's -+ * command resource count. -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "rejected ATIO2 for lun %d- command count overflow", lun); -+ break; -+ -+ case AT_BDR_MSG: -+ /* -+ * If we send an ATIO to the firmware to increment -+ * its command resource count, and the firmware is -+ * recovering from a Bus Device Reset, it returns -+ * the ATIO with this status. We set the command -+ * resource count in the Enable Lun entry and no -+ * not increment it. Therefore we should never get -+ * this status here. -+ */ -+ isp_prt(isp, ISP_LOGERR, atiocope, lun, 0); -+ break; -+ -+ case AT_CDB: /* Got a CDB */ -+ /* -+ * Punt to platform specific layer. -+ */ -+ (void) isp_async(isp, ISPASYNC_TARGET_ACTION, aep); -+ break; -+ -+ case AT_RESET: -+ /* -+ * A bus reset came along an blew away this command. Why -+ * they do this in addition the async event code stuff, -+ * I dunno. -+ * -+ * Ignore it because the async event will clear things -+ * up for us. -+ */ -+ isp_prt(isp, ISP_LOGERR, atior, lun, aep->at_iid, 0); -+ break; -+ -+ -+ default: -+ isp_prt(isp, ISP_LOGERR, -+ "Unknown ATIO2 status 0x%x from initiator %d for lun %d", -+ aep->at_status, aep->at_iid, lun); -+ (void) isp_target_put_atio(isp, aep); -+ break; -+ } -+} -+ -+static void -+isp_handle_ctio(struct ispsoftc *isp, ct_entry_t *ct) -+{ -+ void *xs; -+ int pl = ISP_LOGTDEBUG2; -+ char *fmsg = NULL; -+ -+ if (ct->ct_syshandle) { -+ xs = isp_find_xs(isp, ct->ct_syshandle); -+ if (xs == NULL) -+ pl = ISP_LOGALL; -+ } else { -+ xs = NULL; -+ } -+ -+ switch(ct->ct_status & ~QLTM_SVALID) { -+ case CT_OK: -+ /* -+ * There are generally 3 possibilities as to why we'd get -+ * this condition: -+ * We disconnected after receiving a CDB. -+ * We sent or received data. -+ * We sent status & command complete. -+ */ -+ -+ if (ct->ct_flags & CT_SENDSTATUS) { -+ break; -+ } else if ((ct->ct_flags & CT_DATAMASK) == CT_NO_DATA) { -+ /* -+ * Nothing to do in this case. -+ */ -+ isp_prt(isp, pl, "CTIO- iid %d disconnected OK", -+ ct->ct_iid); -+ return; -+ } -+ break; -+ -+ case CT_BDR_MSG: -+ /* -+ * Bus Device Reset message received or the SCSI Bus has -+ * been Reset; the firmware has gone to Bus Free. -+ * -+ * The firmware generates an async mailbox interupt to -+ * notify us of this and returns outstanding CTIOs with this -+ * status. These CTIOs are handled in that same way as -+ * CT_ABORTED ones, so just fall through here. -+ */ -+ fmsg = "Bus Device Reset"; -+ /*FALLTHROUGH*/ -+ case CT_RESET: -+ if (fmsg == NULL) -+ fmsg = "Bus Reset"; -+ /*FALLTHROUGH*/ -+ case CT_ABORTED: -+ /* -+ * When an Abort message is received the firmware goes to -+ * Bus Free and returns all outstanding CTIOs with the status -+ * set, then sends us an Immediate Notify entry. -+ */ -+ if (fmsg == NULL) -+ fmsg = "ABORT TAG message sent by Initiator"; -+ -+ isp_prt(isp, ISP_LOGWARN, "CTIO destroyed by %s", fmsg); -+ break; -+ -+ case CT_INVAL: -+ /* -+ * CTIO rejected by the firmware due to disabled lun. -+ * "Cannot Happen". -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "Firmware rejected CTIO for disabled lun %d", -+ ct->ct_lun); -+ break; -+ -+ case CT_NOPATH: -+ /* -+ * CTIO rejected by the firmware due "no path for the -+ * nondisconnecting nexus specified". This means that -+ * we tried to access the bus while a non-disconnecting -+ * command is in process. -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "Firmware rejected CTIO for bad nexus %d/%d/%d", -+ ct->ct_iid, ct->ct_tgt, ct->ct_lun); -+ break; -+ -+ case CT_RSELTMO: -+ fmsg = "Reselection"; -+ /*FALLTHROUGH*/ -+ case CT_TIMEOUT: -+ if (fmsg == NULL) -+ fmsg = "Command"; -+ isp_prt(isp, ISP_LOGERR, "Firmware timed out on %s", fmsg); -+ break; -+ -+ case CT_PANIC: -+ if (fmsg == NULL) -+ fmsg = "Unrecoverable Error"; -+ /*FALLTHROUGH*/ -+ case CT_ERR: -+ if (fmsg == NULL) -+ fmsg = "Completed with Error"; -+ /*FALLTHROUGH*/ -+ case CT_PHASE_ERROR: -+ if (fmsg == NULL) -+ fmsg = "Phase Sequence Error"; -+ /*FALLTHROUGH*/ -+ case CT_TERMINATED: -+ if (fmsg == NULL) -+ fmsg = "terminated by TERMINATE TRANSFER"; -+ /*FALLTHROUGH*/ -+ case CT_NOACK: -+ if (fmsg == NULL) -+ fmsg = "unacknowledged Immediate Notify pending"; -+ isp_prt(isp, ISP_LOGERR, "CTIO returned by f/w- %s", fmsg); -+ break; -+ default: -+ isp_prt(isp, ISP_LOGERR, "Unknown CTIO status 0x%x", -+ ct->ct_status & ~QLTM_SVALID); -+ break; -+ } -+ -+ if (xs == NULL) { -+ /* -+ * There may be more than one CTIO for a data transfer, -+ * or this may be a status CTIO we're not monitoring. -+ * -+ * The assumption is that they'll all be returned in the -+ * order we got them. -+ */ -+ if (ct->ct_syshandle == 0) { -+ if ((ct->ct_flags & CT_SENDSTATUS) == 0) { -+ isp_prt(isp, pl, -+ "intermediate CTIO completed ok"); -+ } else { -+ isp_prt(isp, pl, -+ "unmonitored CTIO completed ok"); -+ } -+ } else { -+ isp_prt(isp, pl, -+ "NO xs for CTIO (handle 0x%x) status 0x%x", -+ ct->ct_syshandle, ct->ct_status & ~QLTM_SVALID); -+ } -+ } else { -+ /* -+ * Final CTIO completed. Release DMA resources and -+ * notify platform dependent layers. -+ */ -+ if ((ct->ct_flags & CT_DATAMASK) != CT_NO_DATA) { -+ ISP_DMAFREE(isp, xs, ct->ct_syshandle); -+ } -+ isp_prt(isp, pl, "final CTIO complete"); -+ /* -+ * The platform layer will destroy the handle if appropriate. -+ */ -+ (void) isp_async(isp, ISPASYNC_TARGET_ACTION, ct); -+ } -+} -+ -+static void -+isp_handle_ctio2(struct ispsoftc *isp, ct2_entry_t *ct) -+{ -+ XS_T *xs; -+ int pl = ISP_LOGTDEBUG2; -+ char *fmsg = NULL; -+ -+ if (ct->ct_syshandle) { -+ xs = isp_find_xs(isp, ct->ct_syshandle); -+ if (xs == NULL) -+ pl = ISP_LOGALL; -+ } else { -+ xs = NULL; -+ } -+ -+ switch(ct->ct_status & ~QLTM_SVALID) { -+ case CT_BUS_ERROR: -+ isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error"); -+ /* FALL Through */ -+ case CT_DATA_OVER: -+ case CT_DATA_UNDER: -+ case CT_OK: -+ /* -+ * There are generally 2 possibilities as to why we'd get -+ * this condition: -+ * We sent or received data. -+ * We sent status & command complete. -+ */ -+ -+ break; -+ -+ case CT_BDR_MSG: -+ /* -+ * Target Reset function received. -+ * -+ * The firmware generates an async mailbox interupt to -+ * notify us of this and returns outstanding CTIOs with this -+ * status. These CTIOs are handled in that same way as -+ * CT_ABORTED ones, so just fall through here. -+ */ -+ fmsg = "TARGET RESET Task Management Function Received"; -+ /*FALLTHROUGH*/ -+ case CT_RESET: -+ if (fmsg == NULL) -+ fmsg = "LIP Reset"; -+ /*FALLTHROUGH*/ -+ case CT_ABORTED: -+ /* -+ * When an Abort message is received the firmware goes to -+ * Bus Free and returns all outstanding CTIOs with the status -+ * set, then sends us an Immediate Notify entry. -+ */ -+ if (fmsg == NULL) -+ fmsg = "ABORT Task Management Function Received"; -+ -+ isp_prt(isp, ISP_LOGERR, "CTIO2 destroyed by %s", fmsg); -+ break; -+ -+ case CT_INVAL: -+ /* -+ * CTIO rejected by the firmware - invalid data direction. -+ */ -+ isp_prt(isp, ISP_LOGERR, "CTIO2 had wrong data directiond"); -+ break; -+ -+ case CT_RSELTMO: -+ fmsg = "failure to reconnect to initiator"; -+ /*FALLTHROUGH*/ -+ case CT_TIMEOUT: -+ if (fmsg == NULL) -+ fmsg = "command"; -+ isp_prt(isp, ISP_LOGERR, "Firmware timed out on %s", fmsg); -+ break; -+ -+ case CT_ERR: -+ fmsg = "Completed with Error"; -+ /*FALLTHROUGH*/ -+ case CT_LOGOUT: -+ if (fmsg == NULL) -+ fmsg = "Port Logout"; -+ /*FALLTHROUGH*/ -+ case CT_PORTNOTAVAIL: -+ if (fmsg == NULL) -+ fmsg = "Port not available"; -+ /*FALLTHROUGH*/ -+ case CT_PORTCHANGED: -+ if (fmsg == NULL) -+ fmsg = "Port Changed"; -+ /*FALLTHROUGH*/ -+ case CT_NOACK: -+ if (fmsg == NULL) -+ fmsg = "unacknowledged Immediate Notify pending"; -+ isp_prt(isp, ISP_LOGERR, "CTIO returned by f/w- %s", fmsg); -+ break; -+ -+ case CT_INVRXID: -+ /* -+ * CTIO rejected by the firmware because an invalid RX_ID. -+ * Just print a message. -+ */ -+ isp_prt(isp, ISP_LOGERR, -+ "CTIO2 completed with Invalid RX_ID 0x%x", ct->ct_rxid); -+ break; -+ -+ default: -+ isp_prt(isp, ISP_LOGERR, "Unknown CTIO2 status 0x%x", -+ ct->ct_status & ~QLTM_SVALID); -+ break; -+ } -+ -+ if (xs == NULL) { -+ /* -+ * There may be more than one CTIO for a data transfer, -+ * or this may be a status CTIO we're not monitoring. -+ * -+ * The assumption is that they'll all be returned in the -+ * order we got them. -+ */ -+ if (ct->ct_syshandle == 0) { -+ if ((ct->ct_flags & CT_SENDSTATUS) == 0) { -+ isp_prt(isp, pl, -+ "intermediate CTIO completed ok"); -+ } else { -+ isp_prt(isp, pl, -+ "unmonitored CTIO completed ok"); -+ } -+ } else { -+ isp_prt(isp, pl, -+ "NO xs for CTIO (handle 0x%x) status 0x%x", -+ ct->ct_syshandle, ct->ct_status & ~QLTM_SVALID); -+ } -+ } else { -+ if ((ct->ct_flags & CT2_DATAMASK) != CT2_NO_DATA) { -+ ISP_DMAFREE(isp, xs, ct->ct_syshandle); -+ } -+ if (ct->ct_flags & CT_SENDSTATUS) { -+ /* -+ * Sent status and command complete. -+ * -+ * We're now really done with this command, so we -+ * punt to the platform dependent layers because -+ * only there can we do the appropriate command -+ * complete thread synchronization. -+ */ -+ isp_prt(isp, pl, "status CTIO complete"); -+ } else { -+ /* -+ * Final CTIO completed. Release DMA resources and -+ * notify platform dependent layers. -+ */ -+ isp_prt(isp, pl, "data CTIO complete"); -+ } -+ (void) isp_async(isp, ISPASYNC_TARGET_ACTION, ct); -+ /* -+ * The platform layer will destroy the handle if appropriate. -+ */ -+ } -+} -+#endif ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_target.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,562 @@ -+/* @(#)isp_target.h 1.18 */ -+/* -+ * Qlogic Target Mode Structure and Flag Definitions -+ * -+ * Copyright (c) 1997, 1998 -+ * Patrick Stirling -+ * pms@psconsult.com -+ * All rights reserved. -+ * -+ * Additional Copyright (c) 1999, 2000, 2001 -+ * Matthew Jacob -+ * mjacob@feral.com -+ * All rights reserved. -+ * -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice immediately at the beginning of the file, without modification, -+ * this list of conditions, and the following disclaimer. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ */ -+#ifndef _ISP_TARGET_H -+#define _ISP_TARGET_H -+ -+/* -+ * Defines for all entry types -+ */ -+#define QLTM_SVALID 0x80 -+#define QLTM_SENSELEN 18 -+ -+/* -+ * Structure for Enable Lun and Modify Lun queue entries -+ */ -+typedef struct { -+ isphdr_t le_header; -+ u_int32_t le_reserved; -+ u_int8_t le_lun; -+ u_int8_t le_rsvd; -+ u_int8_t le_ops; /* Modify LUN only */ -+ u_int8_t le_tgt; /* Not for FC */ -+ u_int32_t le_flags; /* Not for FC */ -+ u_int8_t le_status; -+ u_int8_t le_reserved2; -+ u_int8_t le_cmd_count; -+ u_int8_t le_in_count; -+ u_int8_t le_cdb6len; /* Not for FC */ -+ u_int8_t le_cdb7len; /* Not for FC */ -+ u_int16_t le_timeout; -+ u_int16_t le_reserved3[20]; -+} lun_entry_t; -+ -+/* -+ * le_flags values -+ */ -+#define LUN_TQAE 0x00000002 /* bit1 Tagged Queue Action Enable */ -+#define LUN_DSSM 0x01000000 /* bit24 Disable Sending SDP Message */ -+#define LUN_DISAD 0x02000000 /* bit25 Disable autodisconnect */ -+#define LUN_DM 0x40000000 /* bit30 Disconnects Mandatory */ -+ -+/* -+ * le_ops values -+ */ -+#define LUN_CCINCR 0x01 /* increment command count */ -+#define LUN_CCDECR 0x02 /* decrement command count */ -+#define LUN_ININCR 0x40 /* increment immed. notify count */ -+#define LUN_INDECR 0x80 /* decrement immed. notify count */ -+ -+/* -+ * le_status values -+ */ -+#define LUN_OK 0x01 /* we be rockin' */ -+#define LUN_ERR 0x04 /* request completed with error */ -+#define LUN_INVAL 0x06 /* invalid request */ -+#define LUN_NOCAP 0x16 /* can't provide requested capability */ -+#define LUN_ENABLED 0x3E /* LUN already enabled */ -+ -+/* -+ * Immediate Notify Entry structure -+ */ -+#define IN_MSGLEN 8 /* 8 bytes */ -+#define IN_RSVDLEN 8 /* 8 words */ -+typedef struct { -+ isphdr_t in_header; -+ u_int32_t in_reserved; -+ u_int8_t in_lun; /* lun */ -+ u_int8_t in_iid; /* initiator */ -+ u_int8_t in_reserved2; -+ u_int8_t in_tgt; /* target */ -+ u_int32_t in_flags; -+ u_int8_t in_status; -+ u_int8_t in_rsvd2; -+ u_int8_t in_tag_val; /* tag value */ -+ u_int8_t in_tag_type; /* tag type */ -+ u_int16_t in_seqid; /* sequence id */ -+ u_int8_t in_msg[IN_MSGLEN]; /* SCSI message bytes */ -+ u_int16_t in_reserved3[IN_RSVDLEN]; -+ u_int8_t in_sense[QLTM_SENSELEN];/* suggested sense data */ -+} in_entry_t; -+ -+typedef struct { -+ isphdr_t in_header; -+ u_int32_t in_reserved; -+ u_int8_t in_lun; /* lun */ -+ u_int8_t in_iid; /* initiator */ -+ u_int16_t in_scclun; -+ u_int32_t in_reserved2; -+ u_int16_t in_status; -+ u_int16_t in_task_flags; -+ u_int16_t in_seqid; /* sequence id */ -+} in_fcentry_t; -+ -+/* -+ * Values for the in_status field -+ */ -+#define IN_REJECT 0x0D /* Message Reject message received */ -+#define IN_RESET 0x0E /* Bus Reset occurred */ -+#define IN_NO_RCAP 0x16 /* requested capability not available */ -+#define IN_IDE_RECEIVED 0x33 /* Initiator Detected Error msg received */ -+#define IN_RSRC_UNAVAIL 0x34 /* resource unavailable */ -+#define IN_MSG_RECEIVED 0x36 /* SCSI message received */ -+#define IN_ABORT_TASK 0x20 /* task named in RX_ID is being aborted (FC) */ -+#define IN_PORT_LOGOUT 0x29 /* port has logged out (FC) */ -+#define IN_PORT_CHANGED 0x2A /* port changed */ -+#define IN_GLOBAL_LOGO 0x2E /* all ports logged out */ -+#define IN_NO_NEXUS 0x3B /* Nexus not established */ -+ -+/* -+ * Values for the in_task_flags field- should only get one at a time! -+ */ -+#define TASK_FLAGS_ABORT_TASK (1<<9) -+#define TASK_FLAGS_CLEAR_TASK_SET (1<<10) -+#define TASK_FLAGS_TARGET_RESET (1<<13) -+#define TASK_FLAGS_CLEAR_ACA (1<<14) -+#define TASK_FLAGS_TERMINATE_TASK (1<<15) -+ -+#ifndef MSG_ABORT_TAG -+#define MSG_ABORT_TAG 0x06 -+#endif -+#ifndef MSG_CLEAR_QUEUE -+#define MSG_CLEAR_QUEUE 0x0e -+#endif -+#ifndef MSG_BUS_DEV_RESET -+#define MSG_BUS_DEV_RESET 0x0b -+#endif -+#ifndef MSG_REL_RECOVERY -+#define MSG_REL_RECOVERY 0x10 -+#endif -+#ifndef MSG_TERM_IO_PROC -+#define MSG_TERM_IO_PROC 0x11 -+#endif -+ -+ -+/* -+ * Notify Acknowledge Entry structure -+ */ -+#define NA_RSVDLEN 22 -+typedef struct { -+ isphdr_t na_header; -+ u_int32_t na_reserved; -+ u_int8_t na_lun; /* lun */ -+ u_int8_t na_iid; /* initiator */ -+ u_int8_t na_reserved2; -+ u_int8_t na_tgt; /* target */ -+ u_int32_t na_flags; -+ u_int8_t na_status; -+ u_int8_t na_event; -+ u_int16_t na_seqid; /* sequence id */ -+ u_int16_t na_reserved3[NA_RSVDLEN]; -+} na_entry_t; -+ -+/* -+ * Value for the na_event field -+ */ -+#define NA_RST_CLRD 0x80 /* Clear an async event notification */ -+#define NA_OK 0x01 /* Notify Acknowledge Succeeded */ -+#define NA_INVALID 0x06 /* Invalid Notify Acknowledge */ -+ -+#define NA2_RSVDLEN 21 -+typedef struct { -+ isphdr_t na_header; -+ u_int32_t na_reserved; -+ u_int8_t na_lun; /* lun */ -+ u_int8_t na_iid; /* initiator */ -+ u_int16_t na_scclun; -+ u_int16_t na_flags; -+ u_int16_t na_reserved2; -+ u_int16_t na_status; -+ u_int16_t na_task_flags; -+ u_int16_t na_seqid; /* sequence id */ -+ u_int16_t na_reserved3[NA2_RSVDLEN]; -+} na_fcentry_t; -+#define NAFC_RCOUNT 0x80 /* increment resource count */ -+#define NAFC_RST_CLRD 0x20 /* Clear LIP Reset */ -+/* -+ * Accept Target I/O Entry structure -+ */ -+#define ATIO_CDBLEN 26 -+ -+typedef struct { -+ isphdr_t at_header; -+ u_int16_t at_reserved; -+ u_int16_t at_handle; -+ u_int8_t at_lun; /* lun */ -+ u_int8_t at_iid; /* initiator */ -+ u_int8_t at_cdblen; /* cdb length */ -+ u_int8_t at_tgt; /* target */ -+ u_int32_t at_flags; -+ u_int8_t at_status; /* firmware status */ -+ u_int8_t at_scsi_status; /* scsi status */ -+ u_int8_t at_tag_val; /* tag value */ -+ u_int8_t at_tag_type; /* tag type */ -+ u_int8_t at_cdb[ATIO_CDBLEN]; /* received CDB */ -+ u_int8_t at_sense[QLTM_SENSELEN];/* suggested sense data */ -+} at_entry_t; -+ -+/* -+ * at_flags values -+ */ -+#define AT_NODISC 0x00008000 /* disconnect disabled */ -+#define AT_TQAE 0x00000002 /* Tagged Queue Action enabled */ -+ -+/* -+ * at_status values -+ */ -+#define AT_PATH_INVALID 0x07 /* ATIO sent to firmware for disabled lun */ -+#define AT_RESET 0x0E /* SCSI Bus Reset Occurred */ -+#define AT_PHASE_ERROR 0x14 /* Bus phase sequence error */ -+#define AT_NOCAP 0x16 /* Requested capability not available */ -+#define AT_BDR_MSG 0x17 /* Bus Device Reset msg received */ -+#define AT_CDB 0x3D /* CDB received */ -+ -+/* -+ * Macros to create and fetch and test concatenated handle and tag value macros -+ */ -+ -+#define AT_MAKE_TAGID(tid, aep) \ -+ tid = ((aep)->at_handle << 16); \ -+ if ((aep)->at_flags & AT_TQAE) \ -+ (tid) |= ((aep)->at_tag_val + 1) -+ -+#define CT_MAKE_TAGID(tid, ct) \ -+ tid = ((ct)->ct_fwhandle << 16); \ -+ if ((ct)->ct_flags & CT_TQAE) \ -+ (tid) |= ((ct)->ct_tag_val + 1) -+ -+#define AT_HAS_TAG(val) ((val) & 0xffff) -+#define AT_GET_TAG(val) AT_HAS_TAG(val) - 1 -+#define AT_GET_HANDLE(val) ((val) >> 16) -+ -+/* -+ * Accept Target I/O Entry structure, Type 2 -+ */ -+#define ATIO2_CDBLEN 16 -+ -+typedef struct { -+ isphdr_t at_header; -+ u_int32_t at_reserved; -+ u_int8_t at_lun; /* lun or reserved */ -+ u_int8_t at_iid; /* initiator */ -+ u_int16_t at_rxid; /* response ID */ -+ u_int16_t at_flags; -+ u_int16_t at_status; /* firmware status */ -+ u_int8_t at_crn; /* command reference number */ -+ u_int8_t at_taskcodes; -+ u_int8_t at_taskflags; -+ u_int8_t at_execodes; -+ u_int8_t at_cdb[ATIO2_CDBLEN]; /* received CDB */ -+ u_int32_t at_datalen; /* allocated data len */ -+ u_int16_t at_scclun; /* SCC Lun or reserved */ -+ u_int16_t at_wwpn[4]; /* WWPN of initiator */ -+ u_int16_t at_reserved2[6]; -+ u_int16_t at_oxid; -+} at2_entry_t; -+ -+#define ATIO2_WWPN_OFFSET 0x2A -+#define ATIO2_OXID_OFFSET 0x3E -+ -+#define ATIO2_TC_ATTR_MASK 0x7 -+#define ATIO2_TC_ATTR_SIMPLEQ 0 -+#define ATIO2_TC_ATTR_HEADOFQ 1 -+#define ATIO2_TC_ATTR_ORDERED 2 -+#define ATIO2_TC_ATTR_ACAQ 4 -+#define ATIO2_TC_ATTR_UNTAGGED 5 -+ -+#define ATIO2_EX_WRITE 0x1 -+#define ATIO2_EX_READ 0x2 -+ -+/* -+ * Continue Target I/O Entry structure -+ * Request from driver. The response from the -+ * ISP firmware is the same except that the last 18 -+ * bytes are overwritten by suggested sense data if -+ * the 'autosense valid' bit is set in the status byte. -+ */ -+typedef struct { -+ isphdr_t ct_header; -+ u_int16_t ct_reserved; -+#define ct_syshandle ct_reserved /* we use this */ -+ u_int16_t ct_fwhandle; /* required by f/w */ -+ u_int8_t ct_lun; /* lun */ -+ u_int8_t ct_iid; /* initiator id */ -+ u_int8_t ct_reserved2; -+ u_int8_t ct_tgt; /* our target id */ -+ u_int32_t ct_flags; -+ u_int8_t ct_status; /* isp status */ -+ u_int8_t ct_scsi_status; /* scsi status */ -+ u_int8_t ct_tag_val; /* tag value */ -+ u_int8_t ct_tag_type; /* tag type */ -+ u_int32_t ct_xfrlen; /* transfer length */ -+ u_int32_t ct_resid; /* residual length */ -+ u_int16_t ct_timeout; -+ u_int16_t ct_seg_count; -+ /* -+ * This is so we can share tag name space with -+ * CTIO{2,3,4} with the minimum of pain. -+ */ -+ union { -+ ispds_t ct_a[ISP_RQDSEG]; -+ } _u; -+#define ct_dataseg _u.ct_a -+} ct_entry_t; -+ -+/* -+ * For some of the dual port SCSI adapters, port (bus #) is reported -+ * in the MSbit of ct_iid. Bit fields are a bit too awkward here. -+ * -+ * Note that this does not apply to FC adapters at all which can and -+ * do report IIDs between 129 && 255 (these represent devices that have -+ * logged in across a SCSI fabric). -+ */ -+#define GET_IID_VAL(x) (x & 0x3f) -+#define GET_BUS_VAL(x) ((x >> 7) & 0x1) -+#define SET_IID_VAL(y, x) y = ((y & ~0x3f) | (x & 0x3f)) -+#define SET_BUS_VAL(y, x) y = ((y & 0x3f) | ((x & 0x1) << 7)) -+ -+/* -+ * ct_flags values -+ */ -+#define CT_TQAE 0x00000002 /* bit 1, Tagged Queue Action enable */ -+#define CT_DATA_IN 0x00000040 /* bits 6&7, Data direction */ -+#define CT_DATA_OUT 0x00000080 /* bits 6&7, Data direction */ -+#define CT_NO_DATA 0x000000C0 /* bits 6&7, Data direction */ -+#define CT_CCINCR 0x00000100 /* bit 8, autoincrement atio count */ -+#define CT_DATAMASK 0x000000C0 /* bits 6&7, Data direction */ -+#define CT_INISYNCWIDE 0x00004000 /* bit 14, Do Sync/Wide Negotiation */ -+#define CT_NODISC 0x00008000 /* bit 15, Disconnects disabled */ -+#define CT_DSDP 0x01000000 /* bit 24, Disable Save Data Pointers */ -+#define CT_SENDRDP 0x04000000 /* bit 26, Send Restore Pointers msg */ -+#define CT_SENDSTATUS 0x80000000 /* bit 31, Send SCSI status byte */ -+ -+/* -+ * ct_status values -+ * - set by the firmware when it returns the CTIO -+ */ -+#define CT_OK 0x01 /* completed without error */ -+#define CT_ABORTED 0x02 /* aborted by host */ -+#define CT_ERR 0x04 /* see sense data for error */ -+#define CT_INVAL 0x06 /* request for disabled lun */ -+#define CT_NOPATH 0x07 /* invalid ITL nexus */ -+#define CT_INVRXID 0x08 /* (FC only) Invalid RX_ID */ -+#define CT_DATA_OVER 0x09 /* (FC only) Data Overrun */ -+#define CT_RSELTMO 0x0A /* reselection timeout after 2 tries */ -+#define CT_TIMEOUT 0x0B /* timed out */ -+#define CT_RESET 0x0E /* SCSI Bus Reset occurred */ -+#define CT_PARITY 0x0F /* Uncorrectable Parity Error */ -+#define CT_BUS_ERROR 0x10 /* (FC Only) DMA PCI Error */ -+#define CT_PANIC 0x13 /* Unrecoverable Error */ -+#define CT_PHASE_ERROR 0x14 /* Bus phase sequence error */ -+#define CT_BDR_MSG 0x17 /* Bus Device Reset msg received */ -+#define CT_DATA_UNDER 0x15 /* (FC only) Data Underrun */ -+#define CT_TERMINATED 0x19 /* due to Terminate Transfer mbox cmd */ -+#define CT_PORTNOTAVAIL 0x28 /* port not available */ -+#define CT_LOGOUT 0x29 /* port logout */ -+#define CT_PORTCHANGED 0x2A /* port changed */ -+#define CT_IDE 0x33 /* Initiator Detected Error */ -+#define CT_NOACK 0x35 /* Outstanding Immed. Notify. entry */ -+ -+/* -+ * When the firmware returns a CTIO entry, it may overwrite the last -+ * part of the structure with sense data. This starts at offset 0x2E -+ * into the entry, which is in the middle of ct_dataseg[1]. Rather -+ * than define a new struct for this, I'm just using the sense data -+ * offset. -+ */ -+#define CTIO_SENSE_OFFSET 0x2E -+ -+/* -+ * Entry length in u_longs. All entries are the same size so -+ * any one will do as the numerator. -+ */ -+#define UINT32_ENTRY_SIZE (sizeof(at_entry_t)/sizeof(u_int32_t)) -+ -+/* -+ * QLA2100 CTIO (type 2) entry -+ */ -+#define MAXRESPLEN 26 -+typedef struct { -+ isphdr_t ct_header; -+ u_int16_t ct_reserved; -+ u_int16_t ct_fwhandle; /* just to match CTIO */ -+ u_int8_t ct_lun; /* lun */ -+ u_int8_t ct_iid; /* initiator id */ -+ u_int16_t ct_rxid; /* response ID */ -+ u_int16_t ct_flags; -+ u_int16_t ct_status; /* isp status */ -+ u_int16_t ct_timeout; -+ u_int16_t ct_seg_count; -+ u_int32_t ct_reloff; /* relative offset */ -+ int32_t ct_resid; /* residual length */ -+ union { -+ /* -+ * The three different modes that the target driver -+ * can set the CTIO{2,3,4} up as. -+ * -+ * The first is for sending FCP_DATA_IUs as well as -+ * (optionally) sending a terminal SCSI status FCP_RSP_IU. -+ * -+ * The second is for sending SCSI sense data in an FCP_RSP_IU. -+ * Note that no FCP_DATA_IUs will be sent. -+ * -+ * The third is for sending FCP_RSP_IUs as built specifically -+ * in system memory as located by the isp_dataseg. -+ */ -+ struct { -+ u_int32_t _reserved; -+ u_int16_t _reserved2; -+ u_int16_t ct_scsi_status; -+ u_int32_t ct_xfrlen; -+ union { -+ ispds_t ct_a[ISP_RQDSEG_T2]; /* CTIO2 */ -+ ispds64_t ct_b[ISP_RQDSEG_T3]; /* CTIO3 */ -+ ispdslist_t ct_c; /* CTIO4 */ -+ } _u; -+#define ct_dataseg _u.ct_a -+#define ct_dataseg64 _u.ct_b -+#define ct_dslist _u.ct_c -+ } m0; -+ struct { -+ u_int16_t _reserved; -+ u_int16_t _reserved2; -+ u_int16_t ct_senselen; -+ u_int16_t ct_scsi_status; -+ u_int16_t ct_resplen; -+ u_int8_t ct_resp[MAXRESPLEN]; -+ } m1; -+ struct { -+ u_int32_t _reserved; -+ u_int16_t _reserved2; -+ u_int16_t _reserved3; -+ u_int32_t ct_datalen; -+ ispds_t ct_fcp_rsp_iudata; -+ } m2; -+ /* -+ * CTIO2 returned from F/W... -+ */ -+ struct { -+ u_int32_t _reserved[4]; -+ u_int16_t ct_scsi_status; -+ u_int8_t ct_sense[QLTM_SENSELEN]; -+ } fw; -+ } rsp; -+} ct2_entry_t; -+ -+/* -+ * ct_flags values for CTIO2 -+ */ -+#define CT2_FLAG_MMASK 0x0003 -+#define CT2_FLAG_MODE0 0x0000 -+#define CT2_FLAG_MODE1 0x0001 -+#define CT2_FLAG_MODE2 0x0002 -+#define CT2_DATA_IN CT_DATA_IN -+#define CT2_DATA_OUT CT_DATA_OUT -+#define CT2_NO_DATA CT_NO_DATA -+#define CT2_DATAMASK CT_DATAMASK -+#define CT2_CCINCR 0x0100 -+#define CT2_FASTPOST 0x0200 -+#define CT2_TERMINATE 0x4000 -+#define CT2_SENDSTATUS 0x8000 -+ -+/* -+ * ct_status values are (mostly) the same as that for ct_entry. -+ */ -+ -+/* -+ * ct_scsi_status values- the low 8 bits are the normal SCSI status -+ * we know and love. The upper 8 bits are validity markers for FCP_RSP_IU -+ * fields. -+ */ -+#define CT2_RSPLEN_VALID 0x0100 -+#define CT2_SNSLEN_VALID 0x0200 -+#define CT2_DATA_OVER 0x0400 -+#define CT2_DATA_UNDER 0x0800 -+ -+/* -+ * Debug macros -+ */ -+ -+#define ISP_TDQE(isp, msg, idx, arg) \ -+ if (isp->isp_dblev & ISP_LOGTDEBUG2) isp_print_qentry(isp, msg, idx, arg) -+ -+#ifdef ISP_TARGET_FUNCTIONS -+/* -+ * The functions below are for the publicly available -+ * target mode functions that are internal to the Qlogic driver. -+ */ -+ -+/* -+ * This function handles new response queue entry appropriate for target mode. -+ */ -+int isp_target_notify(struct ispsoftc *, void *, u_int16_t *); -+ -+/* -+ * Enable/Disable/Modify a logical unit. -+ * (softc, cmd, bus, tgt, lun, cmd_cnt, inotify_cnt, opaque) -+ */ -+#define DFLT_CMND_CNT 0xfe /* unmonitored */ -+#define DFLT_INOT_CNT 16 -+int isp_lun_cmd(struct ispsoftc *, int, int, int, int, int, int, u_int32_t); -+ -+/* -+ * General request queue 'put' routine for target mode entries. -+ */ -+int isp_target_put_entry(struct ispsoftc *isp, void *); -+ -+/* -+ * General routine to put back an ATIO entry- -+ * used for replenishing f/w resource counts. -+ * The argument is a pointer to a source ATIO -+ * or ATIO2. -+ */ -+int isp_target_put_atio(struct ispsoftc *, void *); -+ -+/* -+ * General routine to send a final CTIO for a command- used mostly for -+ * local responses. -+ */ -+int isp_endcmd(struct ispsoftc *, void *, u_int32_t, u_int16_t); -+#define ECMD_SVALID 0x100 -+ -+/* -+ * Handle an asynchronous event -+ * -+ * Return nonzero if the interrupt that generated this event has been dismissed. -+ */ -+ -+int isp_target_async(struct ispsoftc *, int, int); -+#endif -+#endif /* _ISP_TARGET_H */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/isp_tpublic.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,396 @@ -+/* @(#)isp_tpublic.h 1.11 */ -+/* -+ * Qlogic ISP Host Adapter Public Target Interface Structures && Routines -+ *--------------------------------------- -+ * Copyright (c) 2000, 2001, 2002, 2003 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions, and the following disclaimer, -+ * without modification, immediately at the beginning of the file. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * Matthew Jacob -+ * Feral Software -+ * mjacob@feral.com -+ */ -+ -+/* -+ * Required software target mode message and event handling structures. -+ * -+ * The message and event structures are used by the MI layer -+ * to propagate messages and events upstream. -+ */ -+ -+#ifndef IN_MSGLEN -+#define IN_MSGLEN 8 -+#endif -+typedef struct { -+ void * nt_hba; /* HBA tag */ -+ u_int64_t nt_iid; /* inititator id */ -+ u_int64_t nt_tgt; /* target id */ -+ u_int64_t nt_lun; /* logical unit */ -+ u_int32_t nt_tagval; /* tag value */ -+ u_int8_t nt_bus; /* bus */ -+ u_int8_t nt_tagtype; /* tag type */ -+ u_int8_t nt_msg[IN_MSGLEN]; /* message content */ -+} tmd_msg_t; -+ -+typedef struct { -+ void * ev_hba; /* HBA tag */ -+ u_int32_t ev_bus; /* bus */ -+ u_int32_t ev_event; /* type of async event */ -+} tmd_event_t; -+ -+/* -+ * Suggested Software Target Mode Command Handling structure. -+ * -+ * A note about terminology: -+ * -+ * MD stands for "Machine Dependent". -+ * -+ * This driver is structured in three layers: Outer MD, core, and inner MD. -+ * The latter also is bus dependent (i.e., is cognizant of PCI bus issues -+ * as well as platform issues). -+ * -+ * -+ * "Outer Layer" means "Other Module" -+ * -+ * Some additional module that actually implements SCSI target command -+ * policy is the recipient of incoming commands and the source of the -+ * disposition for them. -+ * -+ * The command structure below is one suggested possible MD command structure, -+ * but since the handling of thbis is entirely in the MD layer, there is -+ * no explicit or implicit requirement that it be used. -+ * -+ * The cd_private tag should be used by the MD layer to keep a free list -+ * of these structures. Code outside of this driver can then use this -+ * to identify it's own unit structures. That is, when not on the MD -+ * layer's freelist, the MD layer should shove into it the identifier -+ * that the outer layer has for it- passed in on an initial QIN_HBA_REG -+ * call (see below). -+ * -+ * The cd_hba tag is a tag that uniquely identifies the HBA this target -+ * mode command is coming from. The outer layer has to pass this back -+ * unchanged to avoid chaos. -+ * -+ * The cd_iid, cd_tgt, cd_lun and cd_bus tags are used to identify the -+ * id of the initiator who sent us a command, the target claim to be, the -+ * lun on the target we claim to be, and the bus instance (for multiple -+ * bus host adapters) that this applies to (consider it an extra Port -+ * parameter). The iid, tgt and lun values are deliberately chosen to be -+ * fat so that, for example, World Wide Names can be used instead of -+ * the units that the Qlogic firmware uses (in the case where the MD -+ * layer maintains a port database, for example). -+ * -+ * The cd_tagtype field specifies what kind of command tag has been -+ * sent with the command. The cd_tagval is the tag's value (low 16 -+ * bits). It also contains (in the upper 16 bits) any command handle. -+ * -+ * -+ * N.B.: when the MD layer sends this command to outside software -+ * the outside software likely *MUST* return the same cd_tagval that -+ * was in place because this value is likely what the Qlogic f/w uses -+ * to identify a command. -+ * -+ * The cd_cdb contains storage for the passed in command descriptor block. -+ * This is the maximum size we can get out of the Qlogic f/w. There's no -+ * passed in length because whoever decodes the command to act upon it -+ * will know what the appropriate length is. -+ * -+ * The tag cd_lflags are the flags set by the MD driver when it gets -+ * command incoming or when it needs to inform any outside entities -+ * that the last requested action failed. -+ * -+ * The tag cd_hflags should be set by any outside software to indicate -+ * the validity of sense and status fields (defined below) and to indicate -+ * the direction data is expected to move. It is an error to have both -+ * CDFH_DATA_IN and CDFH_DATA_OUT set. -+ * -+ * If the CDFH_STSVALID flag is set, the command should be completed (after -+ * sending any data and/or status). If CDFH_SNSVALID is set and the MD layer -+ * can also handle sending the associated sense data (either back with an -+ * FCP RESPONSE IU for Fibre Channel or otherwise automatically handling a -+ * REQUEST SENSE from the initator for this target/lun), the MD layer will -+ * set the CDFL_SENTSENSE flag on successful transmission of the sense data. -+ * It is an error for the CDFH_SNSVALID bit to be set and CDFH_STSVALID not -+ * to be set. It is an error for the CDFH_SNSVALID be set and the associated -+ * SCSI status (cd_scsi_status) not be set to CHECK CONDITON. -+ * -+ * The tag cd_data points to a data segment to either be filled or -+ * read from depending on the direction of data movement. The tag -+ * is undefined if no data direction is set. The MD layer and outer -+ * layers must agree on the meaning of cd_data. -+ * -+ * The tag cd_totlen is the total data amount expected to be moved -+ * over the life of the command. It *may* be set by the MD layer, possibly -+ * from the datalen field of an FCP CMND IU unit. If it shows up in the outer -+ * layers set to zero and the CDB indicates data should be moved, the outer -+ * layer should set it to the amount expected to be moved. -+ * -+ * The tag cd_resid should be the total residual of data not transferred. -+ * The outer layers need to set this at the begining of command processing -+ * to equal cd_totlen. As data is successfully moved, this value is decreased. -+ * At the end of a command, any nonzero residual indicates the number of bytes -+ * requested but not moved. XXXXXXXXXXXXXXXXXXXXXXX TOO VAGUE!!! -+ * -+ * The tag cd_xfrlen is the length of the currently active data transfer. -+ * This allows several interations between any outside software and the -+ * MD layer to move data. -+ * -+ * The reason that total length and total residual have to be tracked -+ * is that fibre channel FCP DATA IU units have to have a relative -+ * offset field. -+ * -+ * N.B.: there is no necessary 1-to-1 correspondence between any one -+ * data transfer segment and the number of CTIOs that will be generated -+ * satisfy the current data transfer segment. It's not also possible to -+ * predict how big a transfer can be before it will be 'too big'. Be -+ * reasonable- a 64KB transfer is 'reasonable'. A 1MB transfer may not -+ * be. A 32MB transfer is unreasonable. The problem here has to do with -+ * how CTIOs can be used to map passed data pointers. In systems which -+ * have page based scatter-gather requirements, each PAGESIZEd chunk will -+ * consume one data segment descriptor- you get 3 or 4 of them per CTIO. -+ * The size of the REQUEST QUEUE you drop a CTIO onto is finite (typically -+ * it's 256, but on some systems it's even smaller, and note you have to -+ * sure this queue with the initiator side of this driver). -+ * -+ * The tags cd_sense and cd_scsi_status are pretty obvious. -+ * -+ * The tag cd_error is to communicate between the MD layer and outer software -+ * the current error conditions. -+ * -+ * The tag cd_lreserved, cd_hreserved are scratch areas for use for the MD -+ * and outer layers respectively. -+ * -+ */ -+ -+#ifndef TMD_CDBLEN -+#define TMD_CDBLEN 18 /* 16 bytes, plus pad for alignment */ -+#endif -+#ifndef QLTM_SENSELEN -+#define QLTM_SENSELEN 18 -+#endif -+#ifndef QCDS -+#define QCDS 8 -+#endif -+ -+typedef struct tmd_cmd { -+ void * cd_private; /* private data pointer */ -+ void * cd_hba; /* HBA tag */ -+ void * cd_data; /* 'pointer' to data */ -+ u_int64_t cd_iid; /* initiator ID */ -+ u_int64_t cd_tgt; /* target id */ -+ u_int64_t cd_lun; /* logical unit */ -+ u_int32_t cd_tagval; /* tag value */ -+ u_int32_t cd_lflags; /* flags lower level sets */ -+ u_int32_t cd_hflags; /* flags higher level sets */ -+ u_int32_t cd_totlen; /* total data requirement */ -+ u_int32_t cd_resid; /* total data residual */ -+ u_int32_t cd_xfrlen; /* current data requirement */ -+ int32_t cd_error; /* current error */ -+ u_int16_t cd_scsi_status; /* closing SCSI status */ -+ u_int8_t cd_chan; /* channel on card */ -+ u_int8_t cd_tagtype; /* tag type */ -+ u_int8_t cd_sense[QLTM_SENSELEN]; -+ u_int8_t cd_cdb[TMD_CDBLEN]; /* Command */ -+ union { -+ void * ptrs[QCDS / sizeof (void *)]; -+ u_int64_t llongs[QCDS / sizeof (u_int64_t)]; -+ u_int32_t longs[QCDS / sizeof (u_int32_t)]; -+ u_int16_t shorts[QCDS / sizeof (u_int16_t)]; -+ u_int8_t bytes[QCDS]; -+ } cd_lreserved[2], cd_hreserved[2]; -+} tmd_cmd_t; -+ -+#ifndef TMD_SIZE -+#define TMD_SIZE (sizeof (tmd_cmd_t)) -+#endif -+ -+/* -+ * Note that NODISC (obviously) doesn't apply to non-SPI transport. -+ * -+ * Note that knowing the data direction and lengh at the time of receipt of -+ * a command from the initiator is a feature only of Fibre Channel. -+ * -+ * The CDFL_BIDIR is in anticipation of the adoption of some newer -+ * features required by OSD. -+ * -+ * The principle selector for MD layer to know whether data is to -+ * be transferred in any QOUT_TMD_CONT call is cd_xfrlen- the -+ * flags CDFH_DATA_IN and CDFH_DATA_OUT define which direction. -+ */ -+#define CDFL_SNSVALID 0x01 /* sense data (from f/w) good */ -+#define CDFL_SENTSTATUS 0x02 /* last action sent status */ -+#define CDFL_DATA_IN 0x04 /* target (us) -> initiator (them) */ -+#define CDFL_DATA_OUT 0x08 /* initiator (them) -> target (us) */ -+#define CDFL_BIDIR 0x0C /* bidirectional data */ -+#define CDFL_ERROR 0x10 /* last action ended in error */ -+#define CDFL_NODISC 0x20 /* disconnects disabled */ -+#define CDFL_SENTSENSE 0x40 /* last action sent sense data */ -+#define CDFL_BUSY 0x80 /* this command is not on a free list */ -+#define CDFL_PRIVATE 0xFF000000 /* private layer flags */ -+ -+#define CDFH_SNSVALID 0x01 /* sense data (from outer layer) good */ -+#define CDFH_STSVALID 0x02 /* status valid */ -+#define CDFH_DATA_IN 0x04 /* target (us) -> initiator (them) */ -+#define CDFH_DATA_OUT 0x08 /* initiator (them) -> target (us) */ -+#define CDFH_DATA_MASK 0x0C /* mask to cover data direction */ -+#define CDFH_PRIVATE 0xFF000000 /* private layer flags */ -+ -+ -+/* -+ * Action codes set by the Qlogic MD target driver for -+ * the external layer to figure out what to do with. -+ */ -+typedef enum { -+ QOUT_HBA_REG=0, /* the argument is a pointer to a hba_register_t */ -+ QOUT_ENABLE, /* the argument is a pointer to a enadis_t */ -+ QOUT_DISABLE, /* the argument is a pointer to a enadis_t */ -+ QOUT_TMD_START, /* the argument is a pointer to a tmd_cmd_t */ -+ QOUT_TMD_DONE, /* the argument is a pointer to a tmd_cmd_t */ -+ QOUT_TEVENT, /* the argument is a pointer to a tmd_event_t */ -+ QOUT_TMSG, /* the argument is a pointer to a tmd_msg_t */ -+ QOUT_IOCTL, /* the argument is a pointer to a ioctl_cmd_t */ -+ QOUT_HBA_UNREG /* the argument is a pointer to a hba_register_t */ -+} tact_e; -+ -+/* -+ * Action codes set by the external layer for the -+ * MD Qlogic driver to figure out what to do with. -+ */ -+typedef enum { -+ QIN_HBA_REG=99, /* the argument is a pointer to a hba_register_t */ -+ QIN_ENABLE, /* the argument is a pointer to a enadis_t */ -+ QIN_DISABLE, /* the argument is a pointer to a enadis_t */ -+ QIN_TMD_CONT, /* the argument is a pointer to a tmd_cmd_t */ -+ QIN_TMD_FIN, /* the argument is a pointer to a tmd_cmd_t */ -+ QIN_IOCTL, /* the argument is a pointer to a ioctl_cmd_t */ -+ QIN_HBA_UNREG, /* the argument is a pointer to a hba_register_t */ -+} qact_e; -+ -+ -+/* -+ * A word about the START/CONT/DONE/FIN dance: -+ * -+ * When the HBA is enabled for receiving commands, one may show up -+ * without notice. When that happens, the Qlogic target mode driver -+ * gets a tmd_cmd_t, fills it with the info that just arrived, and -+ * calls the outer layer with a QOUT_TMD_START code and pointer to -+ * the tmd_cmd_t. -+ * -+ * The outer layer decodes the command, fetches data, prepares stuff, -+ * whatever, and starts by passing back the pointer with a QIN_TMD_CONT -+ * code which causes the Qlogic target mode driver to generate CTIOs to -+ * satisfy whatever action needs to be taken. When those CTIOs complete, -+ * the Qlogic target driver sends the pointer to the cmd_tmd_t back with -+ * a QOUT_TMD_DONE code. This repeats for as long as necessary. -+ * -+ * The outer layer signals it wants to end the command by settings within -+ * the tmd_cmd_t itself. When the final QIN_TMD_CONT is reported completed, -+ * the outer layer frees the tmd_cmd_t by sending the pointer to it -+ * back with a QIN_TMD_FIN code. -+ * -+ * The graph looks like: -+ * -+ * QOUT_TMD_START -> [ QIN_TMD_CONT -> QOUT_TMD_DONE ] * -> QIN_TMD_FIN. -+ * -+ */ -+ -+/* -+ * A word about ENABLE/DISABLE: the argument is a pointer to a enadis_t -+ * with cd_hba, cd_iid, cd_chan, cd_tgt and cd_lun filled out. -+ * -+ * If an error occurs in either enabling or disabling the described lun -+ * cd_error is set with an appropriate non-zero value. -+ * -+ * Logical unit zero must be the first enabled and the last disabled. -+ */ -+typedef struct { -+ void * cd_private; /* for outer layer usage */ -+ void * cd_hba; /* HBA tag */ -+ u_int64_t cd_iid; /* initiator ID */ -+ u_int64_t cd_tgt; /* target id */ -+ u_int64_t cd_lun; /* logical unit */ -+ u_int8_t cd_chan; /* channel on card */ -+ int32_t cd_error; -+} enadis_t; -+ -+/* -+ * This structure is used to register to other software modules the -+ * binding of an HBA identifier, driver name and instance and the -+ * lun width capapbilities of this target driver. It's up to each -+ * platform to figure out how it wants to do this, but a typical -+ * sequence would be for the MD layer to find some external module's -+ * entry point and start by sending a QOUT_HBA_REG with info filled -+ * in, and the external module to call back with a QIN_HBA_REG that -+ * passes back the corresponding information. -+ */ -+#define QR_VERSION 1 -+typedef struct { -+ void * r_identity; -+ void (*r_action)(qact_e, void *); -+ char r_name[8]; -+ int r_inst; -+ int r_version; -+ enum { R_FC, R_SCSI } r_type; -+} hba_register_t; -+ -+/* -+ * This structure is used to pass an encapsulated ioctl through to the -+ * MD layer. In many implementations it's often convenient to open just -+ * one device, but actions you want to take need to be taken on the -+ * underlying HBA. Rather than invent a separate protocol for each action, -+ * an ioctl passthrough seems simpler. -+ * -+ * In order to avoid cross domain copy problems, though, the caller will -+ * be responsible for allocating and providing a staging area for all ioctl -+ * related data. This, unavoidably, requires some ioctl decode capability -+ * in the outer layer code.` -+ * -+ * And also, albeit being cheesy, we'll define a few internal ioctls here. -+ */ -+typedef struct { -+ void * i_identity; /* HBA tag */ -+ void * i_syncptr; /* synchronization pointer */ -+ int i_cmd; /* ioctl command */ -+ void * i_arg; /* ioctl argument area */ -+ int i_errno; /* ioctl error return */ -+} ioctl_cmd_t; -+ -+#define QI_IOC ('Q' << 8) -+#define QI_SCSI_TINI QI_IOC|0 -+#define QI_SCSI_CMD QI_IOC|1 -+#define QI_WWPN_XLT QI_IOC|2 -+ -+/* -+ * Target handler functions. -+ * -+ * The MD target handler function (the outer layer calls this) -+ * should be be prototyped like: -+ * -+ * void target_action(qact_e, void *arg) -+ * -+ * The outer layer target handler function (the MD layer calls this) -+ * should be be prototyped like: -+ * -+ * void system_target_handler(tact_e, void *arg) -+ */ -+ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/ispvar.h 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,902 @@ -+/* @(#)ispvar.h 1.44 */ -+/* -+ * Soft Definitions for for Qlogic ISP SCSI adapters. -+ * -+ * Copyright (c) 1997, 1998, 1999, 2000 by Matthew Jacob -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice immediately at the beginning of the file, without modification, -+ * this list of conditions, and the following disclaimer. -+ * 2. The name of the author may not be used to endorse or promote products -+ * derived from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR -+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ */ -+ -+#ifndef _ISPVAR_H -+#define _ISPVAR_H -+ -+#if defined(__NetBSD__) || defined(__OpenBSD__) -+#include -+#ifdef ISP_TARGET_MODE -+#include -+#include -+#endif -+#endif -+#ifdef __FreeBSD__ -+#include -+#ifdef ISP_TARGET_MODE -+#include -+#include -+#endif -+#endif -+#ifdef __linux__ -+#include "ispmbox.h" -+#ifdef ISP_TARGET_MODE -+#include "isp_target.h" -+#include "isp_tpublic.h" -+#endif -+#endif -+ -+#define ISP_CORE_VERSION_MAJOR 2 -+#define ISP_CORE_VERSION_MINOR 7 -+ -+/* -+ * Vector for bus specific code to provide specific services. -+ */ -+struct ispsoftc; -+struct ispmdvec { -+ int (*dv_rd_isr) -+ (struct ispsoftc *, u_int16_t *, u_int16_t *, u_int16_t *); -+ u_int16_t (*dv_rd_reg) (struct ispsoftc *, int); -+ void (*dv_wr_reg) (struct ispsoftc *, int, u_int16_t); -+ int (*dv_mbxdma) (struct ispsoftc *); -+ int (*dv_dmaset) (struct ispsoftc *, -+ XS_T *, ispreq_t *, u_int16_t *, u_int16_t); -+ void (*dv_dmaclr) -+ (struct ispsoftc *, XS_T *, u_int16_t); -+ void (*dv_reset0) (struct ispsoftc *); -+ void (*dv_reset1) (struct ispsoftc *); -+ void (*dv_dregs) (struct ispsoftc *, const char *); -+ u_int16_t *dv_ispfw; /* ptr to f/w */ -+ u_int16_t dv_conf1; -+ u_int16_t dv_clock; /* clock frequency */ -+}; -+ -+/* -+ * Overall parameters -+ */ -+#define MAX_TARGETS 16 -+#define MAX_FC_TARG 256 -+#define ISP_MAX_TARGETS(isp) (IS_FC(isp)? MAX_FC_TARG : MAX_TARGETS) -+#define ISP_MAX_LUNS(isp) (isp)->isp_maxluns -+ -+/* -+ * 'Types' -+ */ -+#ifdef ISP_DAC_SUPPORTED -+typedef u_int64_t isp_dma_addr_t; -+#else -+typedef u_int32_t isp_dma_addr_t; -+#endif -+ -+/* -+ * Macros to access ISP registers through bus specific layers- -+ * mostly wrappers to vector through the mdvec structure. -+ */ -+#define ISP_READ_ISR(isp, isrp, semap, mbox0p) \ -+ (*(isp)->isp_mdvec->dv_rd_isr)(isp, isrp, semap, mbox0p) -+ -+#define ISP_READ(isp, reg) \ -+ (*(isp)->isp_mdvec->dv_rd_reg)((isp), (reg)) -+ -+#define ISP_WRITE(isp, reg, val) \ -+ (*(isp)->isp_mdvec->dv_wr_reg)((isp), (reg), (val)) -+ -+#define ISP_MBOXDMASETUP(isp) \ -+ (*(isp)->isp_mdvec->dv_mbxdma)((isp)) -+ -+#define ISP_DMASETUP(isp, xs, req, iptrp, optr) \ -+ (*(isp)->isp_mdvec->dv_dmaset)((isp), (xs), (req), (iptrp), (optr)) -+ -+#define ISP_DMAFREE(isp, xs, hndl) \ -+ if ((isp)->isp_mdvec->dv_dmaclr) \ -+ (*(isp)->isp_mdvec->dv_dmaclr)((isp), (xs), (hndl)) -+ -+#define ISP_RESET0(isp) \ -+ if ((isp)->isp_mdvec->dv_reset0) (*(isp)->isp_mdvec->dv_reset0)((isp)) -+#define ISP_RESET1(isp) \ -+ if ((isp)->isp_mdvec->dv_reset1) (*(isp)->isp_mdvec->dv_reset1)((isp)) -+#define ISP_DUMPREGS(isp, m) \ -+ if ((isp)->isp_mdvec->dv_dregs) (*(isp)->isp_mdvec->dv_dregs)((isp),(m)) -+ -+#define ISP_SETBITS(isp, reg, val) \ -+ (*(isp)->isp_mdvec->dv_wr_reg)((isp), (reg), ISP_READ((isp), (reg)) | (val)) -+ -+#define ISP_CLRBITS(isp, reg, val) \ -+ (*(isp)->isp_mdvec->dv_wr_reg)((isp), (reg), ISP_READ((isp), (reg)) & ~(val)) -+ -+/* -+ * The MEMORYBARRIER macro is defined per platform (to provide synchronization -+ * on Request and Response Queues, Scratch DMA areas, and Registers) -+ * -+ * Defined Memory Barrier Synchronization Types -+ */ -+#define SYNC_REQUEST 0 /* request queue synchronization */ -+#define SYNC_RESULT 1 /* result queue synchronization */ -+#define SYNC_SFORDEV 2 /* scratch, sync for ISP */ -+#define SYNC_SFORCPU 3 /* scratch, sync for CPU */ -+#define SYNC_REG 4 /* for registers */ -+ -+/* -+ * Request/Response Queue defines and macros. -+ * The maximum is defined per platform (and can be based on board type). -+ */ -+/* This is the size of a queue entry (request and response) */ -+#define QENTRY_LEN 64 -+/* Both request and result queue length must be a power of two */ -+#define RQUEST_QUEUE_LEN(x) MAXISPREQUEST(x) -+#ifdef ISP_TARGET_MODE -+#define RESULT_QUEUE_LEN(x) MAXISPREQUEST(x) -+#else -+#define RESULT_QUEUE_LEN(x) \ -+ (((MAXISPREQUEST(x) >> 2) < 64)? 64 : MAXISPREQUEST(x) >> 2) -+#endif -+#define ISP_QUEUE_ENTRY(q, idx) ((q) + ((idx) * QENTRY_LEN)) -+#define ISP_QUEUE_SIZE(n) ((n) * QENTRY_LEN) -+#define ISP_NXT_QENTRY(idx, qlen) (((idx) + 1) & ((qlen)-1)) -+#define ISP_QFREE(in, out, qlen) \ -+ ((in == out)? (qlen - 1) : ((in > out)? \ -+ ((qlen - 1) - (in - out)) : (out - in - 1))) -+#define ISP_QAVAIL(isp) \ -+ ISP_QFREE(isp->isp_reqidx, isp->isp_reqodx, RQUEST_QUEUE_LEN(isp)) -+ -+#define ISP_ADD_REQUEST(isp, nxti) \ -+ MEMORYBARRIER(isp, SYNC_REQUEST, isp->isp_reqidx, QENTRY_LEN); \ -+ WRITE_REQUEST_QUEUE_IN_POINTER(isp, nxti); \ -+ isp->isp_reqidx = nxti -+ -+/* -+ * SCSI Specific Host Adapter Parameters- per bus, per target -+ */ -+ -+typedef struct { -+ u_int isp_gotdparms : 1, -+ isp_req_ack_active_neg : 1, -+ isp_data_line_active_neg: 1, -+ isp_cmd_dma_burst_enable: 1, -+ isp_data_dma_burst_enabl: 1, -+ isp_fifo_threshold : 3, -+ isp_ultramode : 1, -+ isp_diffmode : 1, -+ isp_lvdmode : 1, -+ isp_fast_mttr : 1, /* fast sram */ -+ isp_initiator_id : 4, -+ isp_async_data_setup : 4; -+ u_int16_t isp_selection_timeout; -+ u_int16_t isp_max_queue_depth; -+ u_int8_t isp_tag_aging; -+ u_int8_t isp_bus_reset_delay; -+ u_int8_t isp_retry_count; -+ u_int8_t isp_retry_delay; -+ struct { -+ u_int32_t -+ exc_throttle : 8, -+ : 1, -+ dev_enable : 1, /* ignored */ -+ dev_update : 1, -+ dev_refresh : 1, -+ actv_offset : 4, -+ goal_offset : 4, -+ nvrm_offset : 4; -+ u_int8_t actv_period; /* current sync period */ -+ u_int8_t goal_period; /* goal sync period */ -+ u_int8_t nvrm_period; /* nvram sync period */ -+ u_int16_t actv_flags; /* current device flags */ -+ u_int16_t goal_flags; /* goal device flags */ -+ u_int16_t nvrm_flags; /* nvram device flags */ -+ } isp_devparam[MAX_TARGETS]; -+} sdparam; -+ -+/* -+ * Device Flags -+ */ -+#define DPARM_DISC 0x8000 -+#define DPARM_PARITY 0x4000 -+#define DPARM_WIDE 0x2000 -+#define DPARM_SYNC 0x1000 -+#define DPARM_TQING 0x0800 -+#define DPARM_ARQ 0x0400 -+#define DPARM_QFRZ 0x0200 -+#define DPARM_RENEG 0x0100 -+#define DPARM_NARROW 0x0080 -+#define DPARM_ASYNC 0x0040 -+#define DPARM_PPR 0x0020 -+#define DPARM_DEFAULT (0xFF00 & ~DPARM_QFRZ) -+#define DPARM_SAFE_DFLT (DPARM_DEFAULT & ~(DPARM_WIDE|DPARM_SYNC|DPARM_TQING)) -+ -+ -+/* technically, not really correct, as they need to be rated based upon clock */ -+#define ISP_80M_SYNCPARMS 0x0c09 -+#define ISP_40M_SYNCPARMS 0x0c0a -+#define ISP_20M_SYNCPARMS 0x0c0c -+#define ISP_20M_SYNCPARMS_1040 0x080c -+#define ISP_10M_SYNCPARMS 0x0c19 -+#define ISP_08M_SYNCPARMS 0x0c25 -+#define ISP_05M_SYNCPARMS 0x0c32 -+#define ISP_04M_SYNCPARMS 0x0c41 -+ -+/* -+ * Fibre Channel Specifics -+ */ -+#define FL_PORT_ID 0x7e /* FL_Port Special ID */ -+#define FC_PORT_ID 0x7f /* Fabric Controller Special ID */ -+#define FC_SNS_ID 0x80 /* SNS Server Special ID */ -+ -+/* #define ISP_USE_GA_NXT 1 */ /* Use GA_NXT with switches */ -+#ifndef GA_NXT_MAX -+#define GA_NXT_MAX 256 -+#endif -+ -+typedef struct { -+ u_int32_t isp_fwoptions : 16, -+ isp_gbspeed : 2, -+ isp_iid_set : 1, -+ loop_seen_once : 1, -+ isp_loopstate : 4, /* Current Loop State */ -+ isp_fwstate : 3, /* ISP F/W state */ -+ isp_gotdparms : 1, -+ isp_topo : 3, -+ isp_onfabric : 1; -+ u_int8_t isp_iid; /* 'initiator' id */ -+ u_int8_t isp_loopid; /* hard loop id */ -+ u_int8_t isp_alpa; /* ALPA */ -+ u_int32_t isp_portid; -+ volatile u_int16_t isp_lipseq; /* LIP sequence # */ -+ u_int16_t isp_fwattr; /* firmware attributes */ -+ u_int8_t isp_execthrottle; -+ u_int8_t isp_retry_delay; -+ u_int8_t isp_retry_count; -+ u_int8_t isp_reserved; -+ u_int16_t isp_maxalloc; -+ u_int16_t isp_maxfrmlen; -+ u_int64_t isp_nodewwn; -+ u_int64_t isp_portwwn; -+ /* -+ * Port Data Base. This is indexed by 'target', which is invariate. -+ * However, elements within can move around due to loop changes, -+ * so the actual loop ID passed to the F/W is in this structure. -+ * The first time the loop is seen up, loopid will match the index -+ * (except for fabric nodes which are above mapped above FC_SNS_ID -+ * and are completely virtual), but subsequent LIPs can cause things -+ * to move around. -+ */ -+ struct lportdb { -+ u_int32_t -+ port_type : 8, -+ loopid : 8, -+ fc4_type : 4, -+ last_fabric_dev : 1, -+ : 2, -+ relogin : 1, -+ force_logout : 1, -+ was_fabric_dev : 1, -+ fabric_dev : 1, -+ loggedin : 1, -+ roles : 2, -+ valid : 1; -+ u_int32_t portid; -+ u_int64_t node_wwn; -+ u_int64_t port_wwn; -+ } portdb[MAX_FC_TARG], tport[FC_PORT_ID]; -+ -+ /* -+ * Scratch DMA mapped in area to fetch Port Database stuff, etc. -+ */ -+ caddr_t isp_scratch; -+ isp_dma_addr_t isp_scdma; -+#ifdef ISP_FW_CRASH_DUMP -+ u_int16_t *isp_dump_data; -+#endif -+} fcparam; -+ -+#define FW_CONFIG_WAIT 0 -+#define FW_WAIT_AL_PA 1 -+#define FW_WAIT_LOGIN 2 -+#define FW_READY 3 -+#define FW_LOSS_OF_SYNC 4 -+#define FW_ERROR 5 -+#define FW_REINIT 6 -+#define FW_NON_PART 7 -+ -+#define LOOP_NIL 0 -+#define LOOP_LIP_RCVD 1 -+#define LOOP_PDB_RCVD 2 -+#define LOOP_SCANNING_FABRIC 3 -+#define LOOP_FSCAN_DONE 4 -+#define LOOP_SCANNING_LOOP 5 -+#define LOOP_LSCAN_DONE 6 -+#define LOOP_SYNCING_PDB 7 -+#define LOOP_READY 8 -+ -+#define TOPO_NL_PORT 0 -+#define TOPO_FL_PORT 1 -+#define TOPO_N_PORT 2 -+#define TOPO_F_PORT 3 -+#define TOPO_PTP_STUB 4 -+ -+/* -+ * Soft Structure per host adapter -+ */ -+typedef struct ispsoftc { -+ /* -+ * Platform (OS) specific data -+ */ -+ struct isposinfo isp_osinfo; -+ -+ /* -+ * Pointer to bus specific functions and data -+ */ -+ struct ispmdvec * isp_mdvec; -+ -+ /* -+ * (Mostly) nonvolatile state. Board specific parameters -+ * may contain some volatile state (e.g., current loop state). -+ */ -+ -+ void * isp_param; /* type specific */ -+ u_int16_t isp_fwrev[3]; /* Loaded F/W revision */ -+ u_int16_t isp_romfw_rev[3]; /* PROM F/W revision */ -+ u_int16_t isp_maxcmds; /* max possible I/O cmds */ -+ u_int8_t isp_type; /* HBA Chip Type */ -+ u_int8_t isp_revision; /* HBA Chip H/W Revision */ -+ u_int32_t isp_maxluns; /* maximum luns supported */ -+ -+ u_int32_t isp_clock : 8, /* input clock */ -+ : 4, -+ isp_port : 1, /* 23XX only */ -+ isp_failed : 1, /* board failed */ -+ isp_open : 1, /* opened (ioctl) */ -+ isp_touched : 1, /* board ever seen? */ -+ isp_bustype : 1, /* SBus or PCI */ -+ isp_loaded_fw : 1, /* loaded firmware */ -+ isp_role : 2, /* roles supported */ -+ isp_dblev : 12; /* debug log mask */ -+ -+ u_int32_t isp_confopts; /* config options */ -+ -+ u_int16_t isp_rqstinrp; /* register for REQINP */ -+ u_int16_t isp_rqstoutrp; /* register for REQOUTP */ -+ u_int16_t isp_respinrp; /* register for RESINP */ -+ u_int16_t isp_respoutrp; /* register for RESOUTP */ -+ -+ /* -+ * Instrumentation -+ */ -+ u_int64_t isp_intcnt; /* total int count */ -+ u_int64_t isp_intbogus; /* spurious int count */ -+ u_int64_t isp_intmboxc; /* mbox completions */ -+ u_int64_t isp_intoasync; /* other async */ -+ u_int64_t isp_rsltccmplt; /* CMDs on result q */ -+ u_int64_t isp_fphccmplt; /* CMDs via fastpost */ -+ u_int16_t isp_rscchiwater; -+ u_int16_t isp_fpcchiwater; -+ -+ /* -+ * Volatile state -+ */ -+ -+ volatile u_int32_t -+ isp_obits : 8, /* mailbox command output */ -+ isp_mboxbsy : 1, /* mailbox command active */ -+ isp_state : 3, -+ isp_sendmarker : 2, /* send a marker entry */ -+ isp_update : 2, /* update parameters */ -+ isp_nactive : 16; /* how many commands active */ -+ volatile u_int16_t isp_reqodx; /* index of last ISP pickup */ -+ volatile u_int16_t isp_reqidx; /* index of next request */ -+ volatile u_int16_t isp_residx; /* index of next result */ -+ volatile u_int16_t isp_resodx; /* index of next result */ -+ volatile u_int16_t isp_rspbsy; -+ volatile u_int16_t isp_lasthdls; /* last handle seed */ -+ volatile u_int16_t isp_mboxtmp[MAX_MAILBOX]; -+ volatile u_int16_t isp_lastmbxcmd; /* last mbox command sent */ -+ volatile u_int16_t isp_mbxwrk0; -+ volatile u_int16_t isp_mbxwrk1; -+ volatile u_int16_t isp_mbxwrk2; -+ void * isp_mbxworkp; -+ -+ /* -+ * Active commands are stored here, indexed by handle functions. -+ */ -+ XS_T **isp_xflist; -+ -+ /* -+ * request/result queue pointers and dma handles for them. -+ */ -+ caddr_t isp_rquest; -+ caddr_t isp_result; -+ isp_dma_addr_t isp_rquest_dma; -+ isp_dma_addr_t isp_result_dma; -+} ispsoftc_t; -+ -+#define SDPARAM(isp) ((sdparam *) (isp)->isp_param) -+#define FCPARAM(isp) ((fcparam *) (isp)->isp_param) -+ -+/* -+ * ISP Driver Run States -+ */ -+#define ISP_NILSTATE 0 -+#define ISP_RESETSTATE 1 -+#define ISP_INITSTATE 2 -+#define ISP_RUNSTATE 3 -+ -+/* -+ * ISP Configuration Options -+ */ -+#define ISP_CFG_NORELOAD 0x80 /* don't download f/w */ -+#define ISP_CFG_NONVRAM 0x40 /* ignore NVRAM */ -+#define ISP_CFG_TWOGB 0x20 /* force 2GB connection (23XX only) */ -+#define ISP_CFG_ONEGB 0x10 /* force 1GB connection (23XX only) */ -+#define ISP_CFG_FULL_DUPLEX 0x01 /* Full Duplex (Fibre Channel only) */ -+#define ISP_CFG_PORT_PREF 0x0C /* Mask for Port Prefs (2200 only) */ -+#define ISP_CFG_LPORT 0x00 /* prefer {N/F}L-Port connection */ -+#define ISP_CFG_NPORT 0x04 /* prefer {N/F}-Port connection */ -+#define ISP_CFG_NPORT_ONLY 0x08 /* insist on {N/F}-Port connection */ -+#define ISP_CFG_LPORT_ONLY 0x0C /* insist on {N/F}L-Port connection */ -+#define ISP_CFG_OWNWWPN 0x100 /* override NVRAM wwpn */ -+#define ISP_CFG_OWNWWNN 0x200 /* override NVRAM wwnn */ -+#define ISP_CFG_OWNFSZ 0x400 /* override NVRAM frame size */ -+#define ISP_CFG_OWNLOOPID 0x800 /* override NVRAM loopid */ -+#define ISP_CFG_OWNEXCTHROTTLE 0x1000 /* override NVRAM execution throttle */ -+ -+/* -+ * Prior to calling isp_reset for the first time, the outer layer -+ * should set isp_role to one of NONE, INITIATOR, TARGET, BOTH. -+ * -+ * If you set ISP_ROLE_NONE, the cards will be reset, new firmware loaded, -+ * NVRAM read, and defaults set, but any further initialization (e.g. -+ * INITIALIZE CONTROL BLOCK commands for 2X00 cards) won't be done. -+ * -+ * If INITIATOR MODE isn't set, attempts to run commands will be stopped -+ * at isp_start and completed with the moral equivalent of SELECTION TIMEOUT. -+ * -+ * If TARGET MODE is set, it doesn't mean that the rest of target mode support -+ * needs to be enabled, or will even work. What happens with the 2X00 cards -+ * here is that if you have enabled it with TARGET MODE as part of the ICB -+ * options, but you haven't given the f/w any ram resources for ATIOs or -+ * Immediate Notifies, the f/w just handles what it can and you never see -+ * anything. Basically, it sends a single byte of data (the first byte, -+ * which you can set as part of the INITIALIZE CONTROL BLOCK command) for -+ * INQUIRY, and sends back QUEUE FULL status for any other command. -+ * -+ */ -+#define ISP_ROLE_NONE 0x0 -+#define ISP_ROLE_INITIATOR 0x1 -+#define ISP_ROLE_TARGET 0x2 -+#define ISP_ROLE_BOTH (ISP_ROLE_TARGET|ISP_ROLE_INITIATOR) -+#define ISP_ROLE_EITHER ISP_ROLE_BOTH -+#ifndef ISP_DEFAULT_ROLES -+#define ISP_DEFAULT_ROLES ISP_ROLE_INITIATOR -+#endif -+ -+ -+/* -+ * Firmware related defines -+ */ -+#define ISP_CODE_ORG 0x1000 /* default f/w code start */ -+#define ISP_CODE_ORG_2300 0x0800 /* ..except for 2300s */ -+#define ISP_FW_REV(maj, min, mic) ((maj << 24) | (min << 16) | mic) -+#define ISP_FW_MAJOR(code) ((code >> 24) & 0xff) -+#define ISP_FW_MINOR(code) ((code >> 16) & 0xff) -+#define ISP_FW_MICRO(code) ((code >> 8) & 0xff) -+#define ISP_FW_REVX(xp) ((xp[0]<<24) | (xp[1] << 16) | xp[2]) -+#define ISP_FW_MAJORX(xp) (xp[0]) -+#define ISP_FW_MINORX(xp) (xp[1]) -+#define ISP_FW_MICROX(xp) (xp[2]) -+#define ISP_FW_NEWER_THAN(i, major, minor, micro) \ -+ (ISP_FW_REVX((i)->isp_fwrev) > ISP_FW_REV(major, minor, micro)) -+ -+/* -+ * Bus (implementation) types -+ */ -+#define ISP_BT_PCI 0 /* PCI Implementations */ -+#define ISP_BT_SBUS 1 /* SBus Implementations */ -+ -+/* -+ * If we have not otherwise defined SBus support away make sure -+ * it is defined here such that the code is included as default -+ */ -+#ifndef ISP_SBUS_SUPPORTED -+#define ISP_SBUS_SUPPORTED 1 -+#endif -+ -+/* -+ * Chip Types -+ */ -+#define ISP_HA_SCSI 0xf -+#define ISP_HA_SCSI_UNKNOWN 0x1 -+#define ISP_HA_SCSI_1020 0x2 -+#define ISP_HA_SCSI_1020A 0x3 -+#define ISP_HA_SCSI_1040 0x4 -+#define ISP_HA_SCSI_1040A 0x5 -+#define ISP_HA_SCSI_1040B 0x6 -+#define ISP_HA_SCSI_1040C 0x7 -+#define ISP_HA_SCSI_1240 0x8 -+#define ISP_HA_SCSI_1080 0x9 -+#define ISP_HA_SCSI_1280 0xa -+#define ISP_HA_SCSI_10160 0xb -+#define ISP_HA_SCSI_12160 0xc -+#define ISP_HA_FC 0xf0 -+#define ISP_HA_FC_2100 0x10 -+#define ISP_HA_FC_2200 0x20 -+#define ISP_HA_FC_2300 0x30 -+#define ISP_HA_FC_2312 0x40 -+ -+#define IS_SCSI(isp) (isp->isp_type & ISP_HA_SCSI) -+#define IS_1240(isp) (isp->isp_type == ISP_HA_SCSI_1240) -+#define IS_1080(isp) (isp->isp_type == ISP_HA_SCSI_1080) -+#define IS_1280(isp) (isp->isp_type == ISP_HA_SCSI_1280) -+#define IS_10160(isp) (isp->isp_type == ISP_HA_SCSI_10160) -+#define IS_12160(isp) (isp->isp_type == ISP_HA_SCSI_12160) -+ -+#define IS_12X0(isp) (IS_1240(isp) || IS_1280(isp)) -+#define IS_1X160(isp) (IS_10160(isp) || IS_12160(isp)) -+#define IS_DUALBUS(isp) (IS_12X0(isp) || IS_12160(isp)) -+#define IS_ULTRA2(isp) (IS_1080(isp) || IS_1280(isp) || IS_1X160(isp)) -+#define IS_ULTRA3(isp) (IS_1X160(isp)) -+ -+#define IS_FC(isp) ((isp)->isp_type & ISP_HA_FC) -+#define IS_2100(isp) ((isp)->isp_type == ISP_HA_FC_2100) -+#define IS_2200(isp) ((isp)->isp_type == ISP_HA_FC_2200) -+#define IS_23XX(isp) ((isp)->isp_type >= ISP_HA_FC_2300) -+#define IS_2300(isp) ((isp)->isp_type == ISP_HA_FC_2300) -+#define IS_2312(isp) ((isp)->isp_type == ISP_HA_FC_2312) -+ -+/* -+ * DMA cookie macros -+ */ -+#ifdef ISP_DAC_SUPPORTRED -+#define DMA_WD3(x) (((x) >> 48) & 0xffff) -+#define DMA_WD2(x) (((x) >> 32) & 0xffff) -+#else -+#define DMA_WD3(x) 0 -+#define DMA_WD2(x) 0 -+#endif -+#define DMA_WD1(x) (((x) >> 16) & 0xffff) -+#define DMA_WD0(x) (((x) & 0xffff)) -+ -+/* -+ * Core System Function Prototypes -+ */ -+ -+/* -+ * Reset Hardware. Totally. Assumes that you'll follow this with -+ * a call to isp_init. -+ */ -+void isp_reset(struct ispsoftc *); -+ -+/* -+ * Initialize Hardware to known state -+ */ -+void isp_init(struct ispsoftc *); -+ -+/* -+ * Reset the ISP and call completion for any orphaned commands. -+ */ -+void isp_reinit(struct ispsoftc *); -+ -+#ifdef ISP_FW_CRASH_DUMP -+/* -+ * Dump firmware entry point. -+ */ -+void isp_fw_dump(struct ispsoftc *isp); -+#endif -+ -+/* -+ * Internal Interrupt Service Routine -+ * -+ * The outer layers do the spade work to get the appropriate status register, -+ * semaphore register and first mailbox register (if appropriate). This also -+ * means that most spurious/bogus interrupts not for us can be filtered first. -+ */ -+void isp_intr(struct ispsoftc *, u_int16_t, u_int16_t, u_int16_t); -+ -+ -+/* -+ * Command Entry Point- Platform Dependent layers call into this -+ */ -+int isp_start(XS_T *); -+/* these values are what isp_start returns */ -+#define CMD_COMPLETE 101 /* command completed */ -+#define CMD_EAGAIN 102 /* busy- maybe retry later */ -+#define CMD_QUEUED 103 /* command has been queued for execution */ -+#define CMD_RQLATER 104 /* requeue this command later */ -+ -+/* -+ * Command Completion Point- Core layers call out from this with completed cmds -+ */ -+void isp_done(XS_T *); -+ -+/* -+ * Platform Dependent to External to Internal Control Function -+ * -+ * Assumes locks are held on entry. You should note that with many of -+ * these commands and locks may be released while this is occurring. -+ * -+ * A few notes about some of these functions: -+ * -+ * ISPCTL_FCLINK_TEST tests to make sure we have good fibre channel link. -+ * The argument is a pointer to an integer which is the time, in microseconds, -+ * we should wait to see whether we have good link. This test, if successful, -+ * lets us know our connection topology and our Loop ID/AL_PA and so on. -+ * You can't get anywhere without this. -+ * -+ * ISPCTL_SCAN_FABRIC queries the name server (if we're on a fabric) for -+ * all entities using the FC Generic Services subcommand GET ALL NEXT. -+ * For each found entity, an ISPASYNC_FABRICDEV event is generated (see -+ * below). -+ * -+ * ISPCTL_SCAN_LOOP does a local loop scan. This is only done if the connection -+ * topology is NL or FL port (private or public loop). Since the Qlogic f/w -+ * 'automatically' manages local loop connections, this function essentially -+ * notes the arrival, departure, and possible shuffling around of local loop -+ * entities. Thus for each arrival and departure this generates an isp_async -+ * event of ISPASYNC_PROMENADE (see below). -+ * -+ * ISPCTL_PDB_SYNC is somewhat misnamed. It actually is the final step, in -+ * order, of ISPCTL_FCLINK_TEST, ISPCTL_SCAN_FABRIC, and ISPCTL_SCAN_LOOP. -+ * The main purpose of ISPCTL_PDB_SYNC is to complete management of logging -+ * and logging out of fabric devices (if one is on a fabric) and then marking -+ * the 'loop state' as being ready to now be used for sending commands to -+ * devices. Originally fabric name server and local loop scanning were -+ * part of this function. It's now been separated to allow for finer control. -+ */ -+typedef enum { -+ ISPCTL_RESET_BUS, /* Reset Bus */ -+ ISPCTL_RESET_DEV, /* Reset Device */ -+ ISPCTL_ABORT_CMD, /* Abort Command */ -+ ISPCTL_UPDATE_PARAMS, /* Update Operating Parameters (SCSI) */ -+ ISPCTL_FCLINK_TEST, /* Test FC Link Status */ -+ ISPCTL_SCAN_FABRIC, /* (Re)scan Fabric Name Server */ -+ ISPCTL_SCAN_LOOP, /* (Re)scan Local Loop */ -+ ISPCTL_PDB_SYNC, /* Synchronize Port Database */ -+ ISPCTL_SEND_LIP, /* Send a LIP */ -+ ISPCTL_GET_POSMAP, /* Get FC-AL position map */ -+ ISPCTL_RUN_MBOXCMD, /* run a mailbox command */ -+ ISPCTL_TOGGLE_TMODE /* toggle target mode */ -+} ispctl_t; -+int isp_control(struct ispsoftc *, ispctl_t, void *); -+ -+ -+/* -+ * Platform Dependent to Internal to External Control Function -+ * (each platform must provide such a function) -+ * -+ * Assumes locks are held. -+ * -+ * A few notes about some of these functions: -+ * -+ * ISPASYNC_CHANGE_NOTIFY notifies the outer layer that a change has -+ * occurred that invalidates the list of fabric devices known and/or -+ * the list of known loop devices. The argument passed is a pointer -+ * whose values are defined below (local loop change, name server -+ * change, other). 'Other' may simply be a LIP, or a change in -+ * connection topology. -+ * -+ * ISPASYNC_FABRIC_DEV announces the next element in a list of -+ * fabric device names we're getting out of the name server. The -+ * argument points to a GET ALL NEXT response structure. The list -+ * is known to terminate with an entry that refers to ourselves. -+ * One of the main purposes of this function is to allow outer -+ * layers, which are OS dependent, to set policy as to which fabric -+ * devices might actually be logged into (and made visible) later -+ * at ISPCTL_PDB_SYNC time. Since there's a finite number of fabric -+ * devices that we can log into (256 less 3 'reserved' for F-port -+ * topologies), and fabrics can grow up to 8 million or so entries -+ * (24 bits of Port Address, less a wad of reserved spaces), clearly -+ * we had better let the OS determine login policy. -+ * -+ * ISPASYNC_PROMENADE has an argument that is a pointer to an integer which -+ * is an index into the portdb in the softc ('target'). Whether that entry's -+ * valid tag is set or not says whether something has arrived or departed. -+ * The name refers to a favorite pastime of many city dwellers- watching -+ * people come and go, talking of Michaelangelo, and so on.. -+ * -+ * ISPASYNC_UNHANDLED_RESPONSE gives outer layers a chance to parse a -+ * response queue entry not otherwise handled. The outer layer should -+ * return non-zero if it handled it. The 'arg' points to an unmassaged -+ * response queue entry. -+ */ -+ -+typedef enum { -+ ISPASYNC_NEW_TGT_PARAMS, /* New Target Parameters Negotiated */ -+ ISPASYNC_BUS_RESET, /* Bus Was Reset */ -+ ISPASYNC_LOOP_DOWN, /* FC Loop Down */ -+ ISPASYNC_LOOP_UP, /* FC Loop Up */ -+ ISPASYNC_LIP, /* LIP Received */ -+ ISPASYNC_LOOP_RESET, /* Loop Reset Received */ -+ ISPASYNC_CHANGE_NOTIFY, /* FC Change Notification */ -+ ISPASYNC_FABRIC_DEV, /* FC Fabric Device Arrival */ -+ ISPASYNC_PROMENADE, /* FC Objects coming && going */ -+ ISPASYNC_TARGET_MESSAGE, /* target message */ -+ ISPASYNC_TARGET_EVENT, /* target asynchronous event */ -+ ISPASYNC_TARGET_ACTION, /* other target command action */ -+ ISPASYNC_CONF_CHANGE, /* Platform Configuration Change */ -+ ISPASYNC_UNHANDLED_RESPONSE, /* Unhandled Response Entry */ -+ ISPASYNC_FW_CRASH, /* Firmware has crashed */ -+ ISPASYNC_FW_DUMPED, /* Firmware crashdump taken */ -+ ISPASYNC_FW_RESTARTED /* Firmware has been restarted */ -+} ispasync_t; -+int isp_async(struct ispsoftc *, ispasync_t, void *); -+ -+#define ISPASYNC_CHANGE_PDB ((void *) 0) -+#define ISPASYNC_CHANGE_SNS ((void *) 1) -+#define ISPASYNC_CHANGE_OTHER ((void *) 2) -+ -+/* -+ * Platform Dependent Error and Debug Printout -+ */ -+#ifdef __GNUC__ -+void isp_prt(struct ispsoftc *, int level, const char *, ...) -+ __attribute__((__format__(__printf__,3,4))); -+#else -+void isp_prt(struct ispsoftc *, int level, const char *, ...); -+#endif -+ -+#define ISP_LOGALL 0x0 /* log always */ -+#define ISP_LOGCONFIG 0x1 /* log configuration messages */ -+#define ISP_LOGINFO 0x2 /* log informational messages */ -+#define ISP_LOGWARN 0x4 /* log warning messages */ -+#define ISP_LOGERR 0x8 /* log error messages */ -+#define ISP_LOGDEBUG0 0x10 /* log simple debug messages */ -+#define ISP_LOGDEBUG1 0x20 /* log intermediate debug messages */ -+#define ISP_LOGDEBUG2 0x40 /* log most debug messages */ -+#define ISP_LOGDEBUG3 0x80 /* log high frequency debug messages */ -+#define ISP_LOGDEBUG4 0x100 /* log high frequency debug messages */ -+#define ISP_LOGTDEBUG0 0x200 /* log simple debug messages (target mode) */ -+#define ISP_LOGTDEBUG1 0x400 /* log intermediate debug messages (target) */ -+#define ISP_LOGTDEBUG2 0x800 /* log all debug messages (target) */ -+ -+/* -+ * Each Platform provides it's own isposinfo substructure of the ispsoftc -+ * defined above. -+ * -+ * Each platform must also provide the following macros/defines: -+ * -+ * -+ * INLINE - platform specific define for 'inline' functions -+ * -+ * ISP_DAC_SUPPORTED - Is DAC (Dual Address Cycle) is supported? -+ * Basically means whether or not DMA for PCI -+ * PCI cards (Ultra2 or better or FC) works -+ * above 4GB. -+ * -+ * ISP2100_SCRLEN - length for the Fibre Channel scratch DMA area -+ * -+ * MEMZERO(dst, src) platform zeroing function -+ * MEMCPY(dst, src, count) platform copying function -+ * SNPRINTF(buf, bufsize, fmt, ...) snprintf -+ * USEC_DELAY(usecs) microsecond spindelay function -+ * USEC_SLEEP(isp, usecs) microsecond sleep function -+ * -+ * NANOTIME_T nanosecond time type -+ * -+ * GET_NANOTIME(NANOTIME_T *) get current nanotime. -+ * -+ * GET_NANOSEC(NANOTIME_T *) get u_int64_t from NANOTIME_T -+ * -+ * NANOTIME_SUB(NANOTIME_T *, NANOTIME_T *) -+ * subtract two NANOTIME_T values -+ * -+ * -+ * MAXISPREQUEST(struct ispsoftc *) maximum request queue size -+ * for this particular board type -+ * -+ * MEMORYBARRIER(struct ispsoftc *, barrier_type, offset, size) -+ * -+ * Function/Macro the provides memory synchronization on -+ * various objects so that the ISP's and the system's view -+ * of the same object is consistent. -+ * -+ * MBOX_ACQUIRE(struct ispsoftc *) acquire lock on mailbox regs -+ * MBOX_WAIT_COMPLETE(struct ispsoftc *) wait for mailbox cmd to be done -+ * MBOX_NOTIFY_COMPLETE(struct ispsoftc *) notification of mbox cmd donee -+ * MBOX_RELEASE(struct ispsoftc *) release lock on mailbox regs -+ * -+ * FC_SCRATCH_ACQUIRE(struct ispsoftc *) acquire lock on FC scratch area -+ * FC_SCRATCH_RELEASE(struct ispsoftc *) acquire lock on FC scratch area -+ * -+ * SCSI_GOOD SCSI 'Good' Status -+ * SCSI_CHECK SCSI 'Check Condition' Status -+ * SCSI_BUSY SCSI 'Busy' Status -+ * SCSI_QFULL SCSI 'Queue Full' Status -+ * -+ * XS_T Platform SCSI transaction type (i.e., command for HBA) -+ * XS_ISP(xs) gets an instance out of an XS_T -+ * XS_CHANNEL(xs) gets the channel (bus # for DUALBUS cards) "" -+ * XS_TGT(xs) gets the target "" -+ * XS_LUN(xs) gets the lun "" -+ * XS_CDBP(xs) gets a pointer to the scsi CDB "" -+ * XS_CDBLEN(xs) gets the CDB's length "" -+ * XS_XFRLEN(xs) gets the associated data transfer length "" -+ * XS_TIME(xs) gets the time (in milliseconds) for this command -+ * XS_RESID(xs) gets the current residual count -+ * XS_STSP(xs) gets a pointer to the SCSI status byte "" -+ * XS_SNSP(xs) gets a pointer to the associate sense data -+ * XS_SNSLEN(xs) gets the length of sense data storage -+ * XS_SNSKEY(xs) dereferences XS_SNSP to get the current stored Sense Key -+ * XS_TAG_P(xs) predicate of whether this command should be tagged -+ * XS_TAG_TYPE(xs) which type of tag to use -+ * XS_SETERR(xs) set error state -+ * -+ * HBA_NOERROR command has no erros -+ * HBA_BOTCH hba botched something -+ * HBA_CMDTIMEOUT command timed out -+ * HBA_SELTIMEOUT selection timed out (also port logouts for FC) -+ * HBA_TGTBSY target returned a BUSY status -+ * HBA_BUSRESET bus reset destroyed command -+ * HBA_ABORTED command was aborted (by request) -+ * HBA_DATAOVR a data overrun was detected -+ * HBA_ARQFAIL Automatic Request Sense failed -+ * -+ * XS_ERR(xs) return current error state -+ * XS_NOERR(xs) there is no error currently set -+ * XS_INITERR(xs) initialize error state -+ * -+ * XS_SAVE_SENSE(xs, sp) save sense data -+ * -+ * XS_SET_STATE_STAT(isp, sp, xs) platform dependent interpreter of -+ * response queue entry status bits -+ * -+ * -+ * DEFAULT_IID(struct ispsoftc *) Default SCSI initiator ID -+ * DEFAULT_LOOPID(struct ispsoftc *) Default FC Loop ID -+ * DEFAULT_NODEWWN(struct ispsoftc *) Default Node WWN -+ * DEFAULT_PORTWWN(struct ispsoftc *) Default Port WWN -+ * DEFAULT_FRAMESIZE(struct ispsoftc *) Default Frame Size -+ * DEFAULT_EXEC_THROTTLE(struct ispsoftc *) Default Execution Throttle -+ * These establish reasonable defaults for each platform. -+ * These must be available independent of card NVRAM and are -+ * to be used should NVRAM not be readable. -+ * -+ * ISP_NODEWWN(struct ispsoftc *) FC Node WWN to use -+ * ISP_PORTWWN(struct ispsoftc *) FC Port WWN to use -+ * -+ * These are to be used after NVRAM is read. The tags -+ * in fcparam.isp_{node,port}wwn reflect the values -+ * read from NVRAM (possibly corrected for card botches). -+ * Each platform can take that information and override -+ * it or ignore and return the Node and Port WWNs to be -+ * used when sending the Qlogic f/w the Initialization Control -+ * Block. -+ * -+ * (XXX these do endian specific transformations- in transition XXX) -+ * -+ * ISP_IOXPUT_8(struct ispsoftc *, u_int8_t srcval, u_int8_t *dstptr) -+ * ISP_IOXPUT_16(struct ispsoftc *, u_int16_t srcval, u_int16_t *dstptr) -+ * ISP_IOXPUT_32(struct ispsoftc *, u_int32_t srcval, u_int32_t *dstptr) -+ * -+ * ISP_IOXGET_8(struct ispsoftc *, u_int8_t *srcptr, u_int8_t dstrval) -+ * ISP_IOXGET_16(struct ispsoftc *, u_int16_t *srcptr, u_int16_t dstrval) -+ * ISP_IOXGET_32(struct ispsoftc *, u_int32_t *srcptr, u_int32_t dstrval) -+ * -+ * ISP_SWIZZLE_NVRAM_WORD(struct ispsoftc *, u_int16_t *) -+ */ -+ -+#endif /* _ISPVAR_H */ ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/scsi/isp/Makefile 2003-07-19 17:06:33.000000000 -0700 -@@ -0,0 +1,7 @@ -+obj-$(CONFIG_SCSI_FERAL_ISP) += isp_mod.o -+ -+EXTRA_CFLAGS += -Idrivers/scsi -g -+EXTRA_LDFLAGS += -g -+ -+isp_mod-y += isp_pci.o isp_linux.o isp.o \ -+ isp_cb_ops.o isp_target.o ---- linux-2.6.0-test1/drivers/scsi/jazz_esp.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/jazz_esp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -11,7 +11,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/Kconfig 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/Kconfig 2003-07-19 17:06:33.000000000 -0700 -@@ -1834,6 +1834,15 @@ config WD33C93_PIO - - # bool 'Cyberstorm Mk III SCSI support (EXPERIMENTAL)' CONFIG_CYBERSTORMIII_SCSI - # bool 'GVP Turbo 040/060 SCSI support (EXPERIMENTAL)' CONFIG_GVP_TURBO_SCSI -+ -+config SCSI_FERAL_ISP -+ tristate "Feral ISP driver for 10x0/12x0/2x00" -+ depends on SCSI -+ help -+ Feral Driver for the following qlogic ISP chips -+ 1020/1040/1080/1280/12160/2100/2200/2300 -+ If this doesn't work, there are other drivers for these chips -+ below. - endmenu - - source "drivers/scsi/pcmcia/Kconfig" ---- linux-2.6.0-test1/drivers/scsi/lasi700.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/lasi700.c 2003-07-19 17:03:50.000000000 -0700 -@@ -128,7 +128,8 @@ lasi700_driver_callback(struct parisc_de - } - - dev_set_drvdata(&dev->dev, host); -- scsi_add_host(host, &dev->dev); -+ scsi_add_host(host, &dev->dev); /* XXX handle failure */ -+ scsi_scan_host(host); - - return 0; - -@@ -165,7 +166,6 @@ static void __exit - lasi700_exit(void) - { - unregister_parisc_driver(&lasi700_driver); -- scsi_sysfs_release_attributes(&lasi700_template); - } - - module_init(lasi700_init); ---- linux-2.6.0-test1/drivers/scsi/mac53c94.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/mac53c94.c 2003-07-19 17:03:50.000000000 -0700 -@@ -12,7 +12,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/mac_esp.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/mac_esp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -19,7 +19,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/mac_scsi.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/mac_scsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -39,7 +39,7 @@ - #include - #include - #include --#include -+#include - #include - - #include ---- linux-2.6.0-test1/drivers/scsi/Makefile 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/Makefile 2003-07-19 17:06:33.000000000 -0700 -@@ -70,6 +70,7 @@ obj-$(CONFIG_SCSI_NCR53C406A) += NCR53c4 - obj-$(CONFIG_SCSI_NCR_D700) += NCR_D700.o 53c700.o - obj-$(CONFIG_SCSI_NCR_Q720) += NCR_Q720_mod.o - obj-$(CONFIG_SCSI_SYM53C416) += sym53c416.o -+obj-$(CONFIG_SCSI_FERAL_ISP) += isp/ - obj-$(CONFIG_SCSI_QLOGIC_FAS) += qlogicfas.o - obj-$(CONFIG_SCSI_QLOGIC_ISP) += qlogicisp.o - obj-$(CONFIG_SCSI_QLOGIC_FC) += qlogicfc.o ---- linux-2.6.0-test1/drivers/scsi/mca_53c9x.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/drivers/scsi/mca_53c9x.c 2003-07-19 17:03:50.000000000 -0700 -@@ -37,7 +37,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/megaraid.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/megaraid.c 2003-07-19 17:03:50.000000000 -0700 -@@ -32,7 +32,7 @@ - - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/mesh.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/mesh.c 2003-07-19 17:03:50.000000000 -0700 -@@ -21,7 +21,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/mvme147.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/drivers/scsi/mvme147.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,6 +1,6 @@ - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/mvme16x.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/mvme16x.c 2003-07-19 17:03:50.000000000 -0700 -@@ -5,7 +5,7 @@ - */ - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/NCR53c406a.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/NCR53c406a.c 2003-07-19 17:05:05.000000000 -0700 -@@ -51,7 +51,7 @@ - #include - #include - --#include -+#include - #include - #include "scsi.h" - #include "hosts.h" -@@ -450,6 +450,7 @@ static __inline__ int NCR53c406a_pio_wri - - static int __init NCR53c406a_detect(Scsi_Host_Template * tpnt) - { -+ int present = 0; - struct Scsi_Host *shpnt = NULL; - #ifndef PORT_BASE - int i; -@@ -522,7 +523,7 @@ static int __init NCR53c406a_detect(Scsi - - DEB(printk("NCR53c406a: using port_base 0x%x\n", port_base)); - -- tpnt->present = 1; -+ present = 1; - tpnt->proc_name = "NCR53c406a"; - - shpnt = scsi_register(tpnt, 0); -@@ -576,7 +577,7 @@ static int __init NCR53c406a_detect(Scsi - sprintf(info_msg, "NCR53c406a at 0x%x, IRQ %d, %s PIO mode.", port_base, irq_level, fast_pio ? "fast" : "slow"); - #endif - -- return (tpnt->present); -+ return (present); - - #if USE_DMA - err_free_irq: ---- linux-2.6.0-test1/drivers/scsi/ncr53c8xx.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/ncr53c8xx.c 2003-07-19 17:03:50.000000000 -0700 -@@ -140,7 +140,7 @@ - #include - #include - --#include -+#include - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,35) - #include ---- linux-2.6.0-test1/drivers/scsi/NCR53C9x.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/NCR53C9x.c 2003-07-19 17:03:50.000000000 -0700 -@@ -29,7 +29,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/NCR_D700.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/NCR_D700.c 2003-07-19 17:03:50.000000000 -0700 -@@ -218,7 +218,8 @@ NCR_D700_probe_one(struct NCR_D700_priva - goto irq_failed; - } - -- scsi_add_host(host, p->dev); -+ scsi_add_host(host, p->dev); /* XXX handle failure */ -+ scsi_scan_host(host); - - p->hosts[siop] = host; - hostdata->dev = p->dev; -@@ -387,7 +388,6 @@ static int __init NCR_D700_init(void) - static void __exit NCR_D700_exit(void) - { - mca_unregister_driver(&NCR_D700_driver); -- scsi_sysfs_release_attributes(&NCR_D700_driver_template); - } - - module_init(NCR_D700_init); ---- linux-2.6.0-test1/drivers/scsi/NCR_Q720.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/NCR_Q720.c 2003-07-19 17:03:50.000000000 -0700 -@@ -85,6 +85,7 @@ NCR_Q720_probe_one(struct NCR_Q720_priva - __u8 scsr1 = readb(vaddr + NCR_Q720_SCSR_OFFSET + 1); - __u8 differential = readb(vaddr + NCR_Q720_SCSR_OFFSET) & 0x20; - __u8 version; -+ int error; - - scsi_id = scsr1 >> 4; - /* enable burst length 16 (FIXME: should allow this) */ -@@ -120,9 +121,12 @@ NCR_Q720_probe_one(struct NCR_Q720_priva - scsr1 &= ~0x01; - writeb(scsr1, vaddr + NCR_Q720_SCSR_OFFSET + 1); - -- scsi_add_host(p->hosts[siop], p->dev); -- -- return 0; -+ error = scsi_add_host(p->hosts[siop], p->dev); -+ if (error) -+ ncr53c8xx_release(p->hosts[siop]); -+ else -+ scsi_scan_host(p->hosts[siop]); -+ return error; - - fail: - return -ENODEV; -@@ -347,7 +351,6 @@ static void __exit - NCR_Q720_exit(void) - { - mca_unregister_driver(&NCR_Q720_driver); -- //scsi_sysfs_release_attributes(&NCR_Q720_driver_template); - } - - module_init(NCR_Q720_init); ---- linux-2.6.0-test1/drivers/scsi/nsp32.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/nsp32.c 2003-07-19 17:03:50.000000000 -0700 -@@ -25,7 +25,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -@@ -1820,7 +1820,8 @@ static int nsp32_detect(struct pci_dev * - goto free_irq; - } - -- scsi_add_host(host, &pdev->dev); -+ scsi_add_host(host, &pdev->dev); /* XXX handle failure */ -+ scsi_scan_host(host); - pci_set_drvdata(pdev, host); - return 0; - ---- linux-2.6.0-test1/drivers/scsi/oktagon_esp.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/scsi/oktagon_esp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -20,7 +20,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/osst.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/osst.c 2003-07-19 17:03:50.000000000 -0700 -@@ -46,7 +46,7 @@ const char * osst_version = "0.99.0"; - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/pas16.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/pas16.c 2003-07-19 17:03:50.000000000 -0700 -@@ -117,7 +117,8 @@ - #include - #include - #include --#include -+#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/pc980155.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/pc980155.c 2003-07-19 17:03:50.000000000 -0700 -@@ -11,7 +11,7 @@ - */ - - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/pci2000.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/pci2000.c 2003-07-19 17:03:50.000000000 -0700 -@@ -35,7 +35,7 @@ - ****************************************************************************/ - #define PCI2000_VERSION "1.20" - --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/pci2220i.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/pci2220i.c 2003-07-19 17:03:50.000000000 -0700 -@@ -50,7 +50,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/pcmcia/aha152x_stub.c 2003-06-14 12:18:33.000000000 -0700 -+++ 25/drivers/scsi/pcmcia/aha152x_stub.c 2003-07-19 17:03:50.000000000 -0700 -@@ -44,7 +44,7 @@ - #include - #include - #include --#include -+#include - #include - - #include "scsi.h" -@@ -278,7 +278,8 @@ static void aha152x_config_cs(dev_link_t - goto cs_failed; - } - -- scsi_add_host(host, NULL); -+ scsi_add_host(host, NULL); /* XXX handle failure */ -+ scsi_scan_host(host); - - sprintf(info->node.dev_name, "scsi%d", host->host_no); - link->dev = &info->node; ---- linux-2.6.0-test1/drivers/scsi/pcmcia/fdomain_stub.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/scsi/pcmcia/fdomain_stub.c 2003-07-19 17:03:50.000000000 -0700 -@@ -41,7 +41,7 @@ - #include - #include - #include --#include -+#include - #include - - #include "scsi.h" -@@ -254,7 +254,8 @@ static void fdomain_config(dev_link_t *l - goto cs_failed; - } - -- scsi_add_host(host, NULL); -+ scsi_add_host(host, NULL); /* XXX handle failure */ -+ scsi_scan_host(host); - - sprintf(info->node.dev_name, "scsi%d", host->host_no); - link->dev = &info->node; ---- linux-2.6.0-test1/drivers/scsi/pcmcia/nsp_cs.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/pcmcia/nsp_cs.c 2003-07-19 17:03:50.000000000 -0700 -@@ -44,7 +44,7 @@ - #include - #include - #include --#include -+#include - #include - - #include -@@ -1773,7 +1773,8 @@ static void nsp_cs_config(dev_link_t *li - req.Base+req.Size-1); - printk("\n"); - -- scsi_add_host(host, NULL); -+ scsi_add_host(host, NULL); /* XXX handle failure */ -+ scsi_scan_host(host); - link->state &= ~DEV_CONFIG_PENDING; - return; - ---- linux-2.6.0-test1/drivers/scsi/pcmcia/qlogic_stub.c 2003-06-14 12:18:22.000000000 -0700 -+++ 25/drivers/scsi/pcmcia/qlogic_stub.c 2003-07-19 17:03:50.000000000 -0700 -@@ -42,7 +42,7 @@ - #include - #include - #include --#include -+#include - #include - - #include "scsi.h" -@@ -270,7 +270,8 @@ static void qlogic_config(dev_link_t * l - link->dev = &info->node; - info->host = host; - -- scsi_add_host(host, NULL); -+ scsi_add_host(host, NULL); /* XXX handle failure */ -+ scsi_scan_host(host); - - out: - link->state &= ~DEV_CONFIG_PENDING; ---- linux-2.6.0-test1/drivers/scsi/pluto.c 2003-06-14 12:18:07.000000000 -0700 -+++ 25/drivers/scsi/pluto.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/ppa.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/ppa.c 2003-07-19 17:03:50.000000000 -0700 -@@ -15,7 +15,7 @@ - /* The following #define is to avoid a clash with hosts.c */ - #define PPA_CODE 1 - --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/ppa.h 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/scsi/ppa.h 2003-07-19 17:03:50.000000000 -0700 -@@ -82,7 +82,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/psi240i.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/psi240i.c 2003-07-19 17:03:50.000000000 -0700 -@@ -26,7 +26,7 @@ - - #include - --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/qla1280.c 2003-06-14 12:18:51.000000000 -0700 -+++ 25/drivers/scsi/qla1280.c 2003-07-19 17:03:50.000000000 -0700 -@@ -252,7 +252,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -@@ -327,7 +327,7 @@ - /* 3.16 */ - #ifdef QLA_64BIT_PTR - #define pci_dma_lo32(a) (a & 0xffffffff) --#define pci_dma_hi32(a) (a >> 32) -+#define pci_dma_hi32(a) ((a >> 16)>>16) - #else - #define pci_dma_lo32(a) (a & 0xffffffff) - #define pci_dma_hi32(a) 0 ---- linux-2.6.0-test1/drivers/scsi/qlogicfas.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/qlogicfas.c 2003-07-19 17:03:50.000000000 -0700 -@@ -127,7 +127,7 @@ - #endif - - #include --#include /* to get disk capacity */ -+#include /* to get disk capacity */ - #include - #include - #include -@@ -140,6 +140,7 @@ - - #include - #include -+#include - - #include "scsi.h" - #include "hosts.h" ---- linux-2.6.0-test1/drivers/scsi/qlogicfc.c 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/scsi/qlogicfc.c 2003-07-19 17:03:50.000000000 -0700 -@@ -50,7 +50,7 @@ - * - */ - --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/qlogicisp.c 2003-06-14 12:18:35.000000000 -0700 -+++ 25/drivers/scsi/qlogicisp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -20,7 +20,7 @@ - * General Public License for more details. - */ - --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/qlogicpti.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/scsi/qlogicpti.c 2003-07-19 17:03:50.000000000 -0700 -@@ -17,7 +17,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/scsicam.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/scsi/scsicam.c 2003-07-19 17:03:50.000000000 -0700 -@@ -15,7 +15,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include "scsi.h" ---- linux-2.6.0-test1/drivers/scsi/scsi_debug.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/scsi_debug.c 2003-07-19 17:03:50.000000000 -0700 -@@ -41,7 +41,7 @@ - #include - #include - --#include -+#include - #include "scsi.h" - #include "hosts.h" - #include -@@ -687,7 +687,7 @@ static int resp_mode_sense(unsigned char - pcontrol = (cmd[2] & 0xc0) >> 6; - pcode = cmd[2] & 0x3f; - msense_6 = (MODE_SENSE == cmd[0]); -- alloc_len = msense_6 ? cmd[4] : ((cmd[7] << 8) | cmd[6]); -+ alloc_len = msense_6 ? cmd[4] : ((cmd[7] << 8) | cmd[8]); - /* printk(KERN_INFO "msense: dbd=%d pcontrol=%d pcode=%d " - "msense_6=%d alloc_len=%d\n", dbd, pcontrol, pcode, " - "msense_6, alloc_len); */ -@@ -1701,7 +1701,8 @@ static int sdebug_driver_probe(struct de - printk(KERN_ERR "%s: scsi_add_host failed\n", __FUNCTION__); - error = -ENODEV; - scsi_host_put(hpnt); -- } -+ } else -+ scsi_scan_host(hpnt); - - - return error; ---- linux-2.6.0-test1/drivers/scsi/scsi.h 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/scsi.h 2003-07-19 17:03:50.000000000 -0700 -@@ -174,11 +174,6 @@ extern const char *scsi_extd_sense_forma - #define SCSI_MLQUEUE_DEVICE_BUSY 0x1056 - #define SCSI_MLQUEUE_EH_RETRY 0x1057 - --extern int scsi_sysfs_modify_sdev_attribute(struct device_attribute ***dev_attrs, -- struct device_attribute *attr); --extern int scsi_sysfs_modify_shost_attribute(struct class_device_attribute ***class_attrs, -- struct class_device_attribute *attr); -- - /* - * Legacy dma direction interfaces. - * ---- linux-2.6.0-test1/drivers/scsi/scsi_ioctl.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/scsi_ioctl.c 2003-07-19 17:03:50.000000000 -0700 -@@ -18,7 +18,7 @@ - #include - #include - --#include -+#include - #include "scsi.h" - #include "hosts.h" - #include ---- linux-2.6.0-test1/drivers/scsi/scsi_lib.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/scsi_lib.c 2003-07-19 17:03:50.000000000 -0700 -@@ -8,7 +8,7 @@ - */ - - #include --#include -+#include - #include - #include - #include -@@ -444,22 +444,8 @@ static void scsi_run_queue(struct reques - */ - static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd) - { -- unsigned long flags; -- -- spin_lock_irqsave(q->queue_lock, flags); -- cmd->request->special = cmd; -- if (blk_rq_tagged(cmd->request)) -- blk_queue_end_tag(q, cmd->request); -- -- /* -- * set REQ_SPECIAL - we have a command -- * clear REQ_DONTPREP - we assume the sg table has been -- * nuked so we need to set it up again. -- */ -- cmd->request->flags |= REQ_SPECIAL; - cmd->request->flags &= ~REQ_DONTPREP; -- __elv_add_request(q, cmd->request, 0, 0); -- spin_unlock_irqrestore(q->queue_lock, flags); -+ blk_insert_request(q, cmd->request, 1, cmd); - - scsi_run_queue(q); - } -@@ -1213,9 +1199,7 @@ static void scsi_request_fn(struct reque - * later time. - */ - spin_lock_irq(q->queue_lock); -- if (blk_rq_tagged(req)) -- blk_queue_end_tag(q, req); -- __elv_add_request(q, req, 0, 0); -+ blk_requeue_request(q, req); - sdev->device_busy--; - if(sdev->device_busy == 0) - blk_plug_device(q); -@@ -1426,17 +1410,17 @@ __scsi_mode_sense(struct scsi_request *s - if(scsi_status_is_good(sreq->sr_result)) { - data->header_length = header_length; - if(use_10_for_ms) { -- data->length = buffer[0]*256 + buffer[1]; -+ data->length = buffer[0]*256 + buffer[1] + 2; - data->medium_type = buffer[2]; - data->device_specific = buffer[3]; - data->longlba = buffer[4] & 0x01; - data->block_descriptor_length = buffer[6]*256 - + buffer[7]; - } else { -- data->length = buffer[0]; -+ data->length = buffer[0] + 1; - data->medium_type = buffer[1]; -- data->device_specific = buffer[3]; -- data->block_descriptor_length = buffer[4]; -+ data->device_specific = buffer[2]; -+ data->block_descriptor_length = buffer[3]; - } - } - ---- linux-2.6.0-test1/drivers/scsi/scsi_module.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/scsi_module.c 2003-07-19 17:05:05.000000000 -0700 -@@ -33,13 +33,14 @@ static int __init init_this_scsi_driver( - INIT_LIST_HEAD(&sht->legacy_hosts); - - sht->detect(sht); -- if (!sht->present) -+ if (list_empty(&sht->legacy_hosts)) - return -ENODEV; - - list_for_each_entry(shost, &sht->legacy_hosts, sht_legacy_list) { - error = scsi_add_host(shost, NULL); - if (error) - goto fail; -+ scsi_scan_host(shost); - } - return 0; - fail: ---- linux-2.6.0-test1/drivers/scsi/scsi_pc98.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/scsi/scsi_pc98.c 2003-07-19 17:03:50.000000000 -0700 -@@ -8,7 +8,7 @@ - #include - #include - #include --#include -+#include - #include - - #include "scsi.h" ---- linux-2.6.0-test1/drivers/scsi/scsi_priv.h 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/scsi_priv.h 2003-07-19 17:05:05.000000000 -0700 -@@ -90,11 +90,15 @@ extern void scsi_exit_queue(void); - - /* scsi_proc.c */ - #ifdef CONFIG_PROC_FS -+extern void scsi_proc_hostdir_add(struct scsi_host_template *); -+extern void scsi_proc_hostdir_rm(struct scsi_host_template *); - extern void scsi_proc_host_add(struct Scsi_Host *); - extern void scsi_proc_host_rm(struct Scsi_Host *); - extern int scsi_init_procfs(void); - extern void scsi_exit_procfs(void); - #else -+# define scsi_proc_hostdir_add(sht) do { } while (0) -+# define scsi_proc_hostdir_rm(sht) do { } while (0) - # define scsi_proc_host_add(shost) do { } while (0) - # define scsi_proc_host_rm(shost) do { } while (0) - # define scsi_init_procfs() (0) -@@ -102,7 +106,6 @@ extern void scsi_exit_procfs(void); - #endif /* CONFIG_PROC_FS */ - - /* scsi_scan.c */ --extern void scsi_scan_host(struct Scsi_Host *); - extern void scsi_forget_host(struct Scsi_Host *); - extern void scsi_free_sdev(struct scsi_device *); - extern void scsi_free_shost(struct Scsi_Host *); -@@ -117,11 +120,6 @@ extern void scsi_sysfs_remove_host(struc - extern int scsi_sysfs_register(void); - extern void scsi_sysfs_unregister(void); - --/* definitions for the linker default sections covering the host -- * class and device attributes */ --extern struct class_device_attribute *scsi_sysfs_shost_attrs[]; --extern struct device_attribute *scsi_sysfs_sdev_attrs[]; -- - extern struct class shost_class; - extern struct bus_type scsi_bus_type; - ---- linux-2.6.0-test1/drivers/scsi/scsi_proc.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/scsi_proc.c 2003-07-19 17:05:05.000000000 -0700 -@@ -23,7 +23,7 @@ - #include - #include - #include --#include -+#include - #include - #include - -@@ -41,6 +41,8 @@ - struct proc_dir_entry *proc_scsi; - EXPORT_SYMBOL(proc_scsi); - -+/* Protect sht->present and sht->proc_dir */ -+static DECLARE_MUTEX(global_host_template_sem); - - static int proc_scsi_read(char *buffer, char **start, off_t offset, - int length, int *eof, void *data) -@@ -77,16 +79,10 @@ out: - return ret; - } - --void scsi_proc_host_add(struct Scsi_Host *shost) -+void scsi_proc_hostdir_add(struct scsi_host_template *sht) - { -- struct scsi_host_template *sht = shost->hostt; -- struct proc_dir_entry *p; -- char name[10]; -- -- if (!sht->proc_info) -- return; -- -- if (!sht->proc_dir) { -+ down(&global_host_template_sem); -+ if (!sht->present++) { - sht->proc_dir = proc_mkdir(sht->proc_name, proc_scsi); - if (!sht->proc_dir) { - printk(KERN_ERR "%s: proc_mkdir failed for %s\n", -@@ -95,6 +91,27 @@ void scsi_proc_host_add(struct Scsi_Host - } - sht->proc_dir->owner = sht->module; - } -+ up(&global_host_template_sem); -+} -+ -+void scsi_proc_hostdir_rm(struct scsi_host_template *sht) -+{ -+ down(&global_host_template_sem); -+ if (!--sht->present && sht->proc_dir) { -+ remove_proc_entry(sht->proc_name, proc_scsi); -+ sht->proc_dir = NULL; -+ } -+ up(&global_host_template_sem); -+} -+ -+void scsi_proc_host_add(struct Scsi_Host *shost) -+{ -+ struct scsi_host_template *sht = shost->hostt; -+ struct proc_dir_entry *p; -+ char name[10]; -+ -+ if (!sht->proc_dir) -+ return; - - sprintf(name,"%d", shost->host_no); - p = create_proc_read_entry(name, S_IFREG | S_IRUGO | S_IWUSR, -@@ -107,20 +124,18 @@ void scsi_proc_host_add(struct Scsi_Host - } - - p->write_proc = proc_scsi_write_proc; -- p->owner = shost->hostt->module; -+ p->owner = sht->module; - } - - void scsi_proc_host_rm(struct Scsi_Host *shost) - { -- struct scsi_host_template *sht = shost->hostt; - char name[10]; - -- if (sht->proc_info) { -- sprintf(name,"%d", shost->host_no); -- remove_proc_entry(name, sht->proc_dir); -- if (!sht->present) -- remove_proc_entry(sht->proc_name, proc_scsi); -- } -+ if (!shost->hostt->proc_dir) -+ return; -+ -+ sprintf(name,"%d", shost->host_no); -+ remove_proc_entry(name, shost->hostt->proc_dir); - } - - static int proc_print_scsidevice(struct device *dev, void *data) ---- linux-2.6.0-test1/drivers/scsi/scsi_scan.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/scsi/scsi_scan.c 2003-07-19 17:03:50.000000000 -0700 -@@ -29,7 +29,7 @@ - #include - #include - #include --#include -+#include - - #include "scsi.h" - #include "hosts.h" -@@ -464,8 +464,7 @@ static void scsi_set_name(struct scsi_de - while (i >= 0 && type[i] == ' ') - type[i--] = '\0'; - -- snprintf(sdev->sdev_driverfs_dev.name, DEVICE_NAME_SIZE, "SCSI %s", -- type); -+ snprintf(sdev->sdev_gendev.name, DEVICE_NAME_SIZE, "SCSI %s", type); - } - - /** ---- linux-2.6.0-test1/drivers/scsi/scsi_syms.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/scsi_syms.c 2003-07-19 17:03:50.000000000 -0700 -@@ -11,7 +11,7 @@ - #include - #include - #include --#include -+#include - #include - - #include -@@ -34,6 +34,7 @@ EXPORT_SYMBOL(scsi_register_driver); - EXPORT_SYMBOL(scsi_register_interface); - EXPORT_SYMBOL(scsi_host_alloc); - EXPORT_SYMBOL(scsi_add_host); -+EXPORT_SYMBOL(scsi_scan_host); - EXPORT_SYMBOL(scsi_remove_host); - EXPORT_SYMBOL(scsi_host_get); - EXPORT_SYMBOL(scsi_host_put); ---- linux-2.6.0-test1/drivers/scsi/scsi_sysfs.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/scsi_sysfs.c 2003-07-19 17:03:50.000000000 -0700 -@@ -45,7 +45,7 @@ shost_rd_attr(cmd_per_lun, "%hd\n"); - shost_rd_attr(sg_tablesize, "%hu\n"); - shost_rd_attr(unchecked_isa_dma, "%d\n"); - --struct class_device_attribute *scsi_sysfs_shost_attrs[] = { -+static struct class_device_attribute *scsi_sysfs_shost_attrs[] = { - &class_device_attr_unique_id, - &class_device_attr_host_busy, - &class_device_attr_cmd_per_lun, -@@ -204,7 +204,7 @@ store_rescan_field (struct device *dev, - static DEVICE_ATTR(rescan, S_IWUSR, NULL, store_rescan_field) - - /* Default template for device attributes. May NOT be modified */ --struct device_attribute *scsi_sysfs_sdev_attrs[] = { -+static struct device_attribute *scsi_sysfs_sdev_attrs[] = { - &dev_attr_device_blocked, - &dev_attr_queue_depth, - &dev_attr_type, -@@ -228,6 +228,42 @@ static void scsi_device_release(struct d - scsi_free_sdev(sdev); - } - -+static struct device_attribute *attr_overridden( -+ struct device_attribute **attrs, -+ struct device_attribute *attr) -+{ -+ int i; -+ -+ if (!attrs) -+ return NULL; -+ for (i = 0; attrs[i]; i++) -+ if (!strcmp(attrs[i]->attr.name, attr->attr.name)) -+ return attrs[i]; -+ return NULL; -+} -+ -+static int attr_add(struct device *dev, struct device_attribute *attr) -+{ -+ struct device_attribute *base_attr; -+ -+ /* -+ * Spare the caller from having to copy things it's not interested in. -+ */ -+ base_attr = attr_overridden(scsi_sysfs_sdev_attrs, attr); -+ if (base_attr) { -+ /* extend permissions */ -+ attr->attr.mode |= base_attr->attr.mode; -+ -+ /* override null show/store with default */ -+ if (!attr->show) -+ attr->show = base_attr->show; -+ if (!attr->store) -+ attr->store = base_attr->store; -+ } -+ -+ return device_create_file(dev, attr); -+} -+ - /** - * scsi_device_register - register a scsi device with the scsi bus - * @sdev: scsi_device to register -@@ -239,20 +275,20 @@ int scsi_device_register(struct scsi_dev - { - int error = 0, i; - -- device_initialize(&sdev->sdev_driverfs_dev); -- sprintf(sdev->sdev_driverfs_dev.bus_id,"%d:%d:%d:%d", -+ device_initialize(&sdev->sdev_gendev); -+ sprintf(sdev->sdev_gendev.bus_id,"%d:%d:%d:%d", - sdev->host->host_no, sdev->channel, sdev->id, sdev->lun); -- sdev->sdev_driverfs_dev.parent = &sdev->host->host_gendev; -- sdev->sdev_driverfs_dev.bus = &scsi_bus_type; -- sdev->sdev_driverfs_dev.release = scsi_device_release; -+ sdev->sdev_gendev.parent = &sdev->host->shost_gendev; -+ sdev->sdev_gendev.bus = &scsi_bus_type; -+ sdev->sdev_gendev.release = scsi_device_release; - - class_device_initialize(&sdev->sdev_classdev); -- sdev->sdev_classdev.dev = &sdev->sdev_driverfs_dev; -+ sdev->sdev_classdev.dev = &sdev->sdev_gendev; - sdev->sdev_classdev.class = &sdev_class; - snprintf(sdev->sdev_classdev.class_id, BUS_ID_SIZE, "%d:%d:%d:%d", - sdev->host->host_no, sdev->channel, sdev->id, sdev->lun); - -- error = device_add(&sdev->sdev_driverfs_dev); -+ error = device_add(&sdev->sdev_gendev); - if (error) { - printk(KERN_INFO "error 1\n"); - return error; -@@ -260,16 +296,28 @@ int scsi_device_register(struct scsi_dev - error = class_device_add(&sdev->sdev_classdev); - if (error) { - printk(KERN_INFO "error 2\n"); -- device_unregister(&sdev->sdev_driverfs_dev); -+ device_unregister(&sdev->sdev_gendev); - return error; - } - -- for (i = 0; !error && sdev->host->hostt->sdev_attrs[i] != NULL; i++) -- error = device_create_file(&sdev->sdev_driverfs_dev, -- sdev->host->hostt->sdev_attrs[i]); -- -- if (error) -- scsi_device_unregister(sdev); -+ if (sdev->host->hostt->sdev_attrs) { -+ for (i = 0; sdev->host->hostt->sdev_attrs[i]; i++) { -+ error = attr_add(&sdev->sdev_gendev, -+ sdev->host->hostt->sdev_attrs[i]); -+ if (error) -+ scsi_device_unregister(sdev); -+ } -+ } -+ -+ for (i = 0; scsi_sysfs_sdev_attrs[i]; i++) { -+ if (!attr_overridden(sdev->host->hostt->sdev_attrs, -+ scsi_sysfs_sdev_attrs[i])) { -+ error = device_create_file(&sdev->sdev_gendev, -+ scsi_sysfs_sdev_attrs[i]); -+ if (error) -+ scsi_device_unregister(sdev); -+ } -+ } - - return error; - } -@@ -280,12 +328,8 @@ int scsi_device_register(struct scsi_dev - **/ - void scsi_device_unregister(struct scsi_device *sdev) - { -- int i; -- -- for (i = 0; sdev->host->hostt->sdev_attrs[i] != NULL; i++) -- device_remove_file(&sdev->sdev_driverfs_dev, sdev->host->hostt->sdev_attrs[i]); - class_device_unregister(&sdev->sdev_classdev); -- device_unregister(&sdev->sdev_driverfs_dev); -+ device_unregister(&sdev->sdev_gendev); - } - - int scsi_register_driver(struct device_driver *drv) -@@ -315,20 +359,57 @@ static void scsi_host_release(struct dev - - void scsi_sysfs_init_host(struct Scsi_Host *shost) - { -- device_initialize(&shost->host_gendev); -- snprintf(shost->host_gendev.bus_id, BUS_ID_SIZE, "host%d", -+ device_initialize(&shost->shost_gendev); -+ snprintf(shost->shost_gendev.bus_id, BUS_ID_SIZE, "host%d", - shost->host_no); -- snprintf(shost->host_gendev.name, DEVICE_NAME_SIZE, "%s", -+ snprintf(shost->shost_gendev.name, DEVICE_NAME_SIZE, "%s", - shost->hostt->proc_name); -- shost->host_gendev.release = scsi_host_release; -+ shost->shost_gendev.release = scsi_host_release; - -- class_device_initialize(&shost->class_dev); -- shost->class_dev.dev = &shost->host_gendev; -- shost->class_dev.class = &shost_class; -- snprintf(shost->class_dev.class_id, BUS_ID_SIZE, "host%d", -+ class_device_initialize(&shost->shost_classdev); -+ shost->shost_classdev.dev = &shost->shost_gendev; -+ shost->shost_classdev.class = &shost_class; -+ snprintf(shost->shost_classdev.class_id, BUS_ID_SIZE, "host%d", - shost->host_no); - } - -+static struct class_device_attribute *class_attr_overridden( -+ struct class_device_attribute **attrs, -+ struct class_device_attribute *attr) -+{ -+ int i; -+ -+ if (!attrs) -+ return NULL; -+ for (i = 0; attrs[i]; i++) -+ if (!strcmp(attrs[i]->attr.name, attr->attr.name)) -+ return attrs[i]; -+ return NULL; -+} -+ -+static int class_attr_add(struct class_device *classdev, -+ struct class_device_attribute *attr) -+{ -+ struct class_device_attribute *base_attr; -+ -+ /* -+ * Spare the caller from having to copy things it's not interested in. -+ */ -+ base_attr = class_attr_overridden(scsi_sysfs_shost_attrs, attr); -+ if (base_attr) { -+ /* extend permissions */ -+ attr->attr.mode |= base_attr->attr.mode; -+ -+ /* override null show/store with default */ -+ if (!attr->show) -+ attr->show = base_attr->show; -+ if (!attr->store) -+ attr->store = base_attr->store; -+ } -+ -+ return class_device_create_file(classdev, attr); -+} -+ - /** - * scsi_sysfs_add_host - add scsi host to subsystem - * @shost: scsi host struct to add to subsystem -@@ -336,31 +417,44 @@ void scsi_sysfs_init_host(struct Scsi_Ho - **/ - int scsi_sysfs_add_host(struct Scsi_Host *shost, struct device *dev) - { -- int i, error; -+ int error, i; - -- if (!shost->host_gendev.parent) -- shost->host_gendev.parent = dev ? dev : &legacy_bus; -+ if (!shost->shost_gendev.parent) -+ shost->shost_gendev.parent = dev ? dev : &legacy_bus; - -- error = device_add(&shost->host_gendev); -+ error = device_add(&shost->shost_gendev); - if (error) - return error; - -- error = class_device_add(&shost->class_dev); -+ error = class_device_add(&shost->shost_classdev); - if (error) - goto clean_device; - -- for (i = 0; !error && shost->hostt->shost_attrs[i] != NULL; i++) -- error = class_device_create_file(&shost->class_dev, -- shost->hostt->shost_attrs[i]); -- if (error) -- goto clean_class; -+ if (shost->hostt->shost_attrs) { -+ for (i = 0; shost->hostt->shost_attrs[i]; i++) { -+ error = class_attr_add(&shost->shost_classdev, -+ shost->hostt->shost_attrs[i]); -+ if (error) -+ goto clean_class; -+ } -+ } -+ -+ for (i = 0; scsi_sysfs_shost_attrs[i]; i++) { -+ if (!class_attr_overridden(shost->hostt->shost_attrs, -+ scsi_sysfs_shost_attrs[i])) { -+ error = class_device_create_file(&shost->shost_classdev, -+ scsi_sysfs_shost_attrs[i]); -+ if (error) -+ goto clean_class; -+ } -+ } - - return error; - - clean_class: -- class_device_del(&shost->class_dev); -+ class_device_del(&shost->shost_classdev); - clean_device: -- device_del(&shost->host_gendev); -+ device_del(&shost->shost_gendev); - - return error; - } -@@ -371,133 +465,6 @@ clean_device: - **/ - void scsi_sysfs_remove_host(struct Scsi_Host *shost) - { -- class_device_del(&shost->class_dev); -- device_del(&shost->host_gendev); --} -- --/** scsi_sysfs_modify_shost_attribute - modify or add a host class attribute -- * -- * @class_attrs:host class attribute list to be added to or modified -- * @attr: individual attribute to change or added -- * -- * returns zero if successful or error if not -- **/ --int scsi_sysfs_modify_shost_attribute( -- struct class_device_attribute ***class_attrs, -- struct class_device_attribute *attr) --{ -- int modify = -1; -- int num_attrs; -- -- if(*class_attrs == NULL) -- *class_attrs = scsi_sysfs_shost_attrs; -- -- for(num_attrs=0; (*class_attrs)[num_attrs] != NULL; num_attrs++) -- if(strcmp((*class_attrs)[num_attrs]->attr.name, -- attr->attr.name) == 0) -- modify = num_attrs; -- -- if(*class_attrs == scsi_sysfs_shost_attrs || modify < 0) { -- /* note: need space for null at the end as well */ -- struct class_device_attribute **tmp_attrs = -- kmalloc(sizeof(*tmp_attrs) * -- (num_attrs + (modify >= 0 ? 1 : 2)), -- GFP_KERNEL); -- if(tmp_attrs == NULL) -- return -ENOMEM; -- memcpy(tmp_attrs, *class_attrs, sizeof(*tmp_attrs) * -- (num_attrs + 1)); -- if(*class_attrs != scsi_sysfs_shost_attrs) -- kfree(*class_attrs); -- *class_attrs = tmp_attrs; -- } -- if(modify >= 0) { -- /* spare the caller from having to copy things it's -- * not interested in */ -- struct class_device_attribute *old_attr = -- (*class_attrs)[modify]; -- /* extend permissions */ -- attr->attr.mode |= old_attr->attr.mode; -- -- /* override null show/store with default */ -- if(attr->show == NULL) -- attr->show = old_attr->show; -- if(attr->store == NULL) -- attr->store = old_attr->store; -- (*class_attrs)[modify] = attr; -- } else { -- (*class_attrs)[num_attrs++] = attr; -- (*class_attrs)[num_attrs] = NULL; -- } -- -- return 0; --} --EXPORT_SYMBOL(scsi_sysfs_modify_shost_attribute); -- --/** scsi_sysfs_modify_sdev_attribute - modify or add a host device attribute -- * -- * @dev_attrs: pointer to the attribute list to be added to or modified -- * @attr: individual attribute to change or added -- * -- * returns zero if successful or error if not -- **/ --int scsi_sysfs_modify_sdev_attribute(struct device_attribute ***dev_attrs, -- struct device_attribute *attr) --{ -- int modify = -1; -- int num_attrs; -- -- if(*dev_attrs == NULL) -- *dev_attrs = scsi_sysfs_sdev_attrs; -- -- for(num_attrs=0; (*dev_attrs)[num_attrs] != NULL; num_attrs++) -- if(strcmp((*dev_attrs)[num_attrs]->attr.name, -- attr->attr.name) == 0) -- modify = num_attrs; -- -- if(*dev_attrs == scsi_sysfs_sdev_attrs || modify < 0) { -- /* note: need space for null at the end as well */ -- struct device_attribute **tmp_attrs = -- kmalloc(sizeof(*tmp_attrs) * -- (num_attrs + (modify >= 0 ? 1 : 2)), -- GFP_KERNEL); -- if(tmp_attrs == NULL) -- return -ENOMEM; -- memcpy(tmp_attrs, *dev_attrs, sizeof(*tmp_attrs) * -- (num_attrs + 1)); -- if(*dev_attrs != scsi_sysfs_sdev_attrs) -- kfree(*dev_attrs); -- *dev_attrs = tmp_attrs; -- } -- if(modify >= 0) { -- /* spare the caller from having to copy things it's -- * not interested in */ -- struct device_attribute *old_attr = -- (*dev_attrs)[modify]; -- /* extend permissions */ -- attr->attr.mode |= old_attr->attr.mode; -- -- /* override null show/store with default */ -- if(attr->show == NULL) -- attr->show = old_attr->show; -- if(attr->store == NULL) -- attr->store = old_attr->store; -- (*dev_attrs)[modify] = attr; -- } else { -- (*dev_attrs)[num_attrs++] = attr; -- (*dev_attrs)[num_attrs] = NULL; -- } -- -- return 0; --} --EXPORT_SYMBOL(scsi_sysfs_modify_sdev_attribute); -- --void scsi_sysfs_release_attributes(struct scsi_host_template *hostt) --{ -- if(hostt->sdev_attrs != scsi_sysfs_sdev_attrs) -- kfree(hostt->sdev_attrs); -- -- if(hostt->shost_attrs != scsi_sysfs_shost_attrs) -- kfree(hostt->shost_attrs); -+ class_device_del(&shost->shost_classdev); -+ device_del(&shost->shost_gendev); - } --EXPORT_SYMBOL(scsi_sysfs_release_attributes); ---- linux-2.6.0-test1/drivers/scsi/sd.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/sd.c 2003-07-19 17:03:50.000000000 -0700 -@@ -43,7 +43,7 @@ - #include - #include - #include --#include -+#include - #include - #include - -@@ -606,35 +606,8 @@ not_present: - - static void sd_rescan(struct device *dev) - { -- struct scsi_device *sdp = to_scsi_device(dev); - struct scsi_disk *sdkp = dev_get_drvdata(dev); -- struct gendisk *gd; -- struct scsi_request *SRpnt; -- unsigned char *buffer; -- -- if (!sdkp || sdp->online == FALSE || !sdkp->media_present) -- return; -- -- gd = sdkp->disk; -- -- SCSI_LOG_HLQUEUE(3, printk("sd_rescan: disk=%s\n", gd->disk_name)); -- -- SRpnt = scsi_allocate_request(sdp); -- if (!SRpnt) { -- printk(KERN_WARNING "(sd_rescan:) Request allocation " -- "failure.\n"); -- return; -- } -- -- if (sdkp->device->host->unchecked_isa_dma) -- buffer = kmalloc(512, GFP_DMA); -- else -- buffer = kmalloc(512, GFP_KERNEL); -- -- sd_read_capacity(sdkp, gd->disk_name, SRpnt, buffer); -- set_capacity(gd, sdkp->capacity); -- scsi_release_request(SRpnt); -- kfree(buffer); -+ sd_revalidate_disk(sdkp->disk); - } - - static struct block_device_operations sd_fops = { -@@ -1318,7 +1291,7 @@ static int sd_probe(struct device *dev) - - sd_revalidate_disk(gd); - -- gd->driverfs_dev = &sdp->sdev_driverfs_dev; -+ gd->driverfs_dev = &sdp->sdev_gendev; - gd->flags = GENHD_FL_DRIVERFS; - if (sdp->removable) - gd->flags |= GENHD_FL_REMOVABLE; ---- linux-2.6.0-test1/drivers/scsi/seagate.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/seagate.c 2003-07-19 17:03:50.000000000 -0700 -@@ -95,7 +95,7 @@ - #include - #include - #include --#include -+#include - #include - - #include ---- linux-2.6.0-test1/drivers/scsi/sg.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/sg.c 2003-07-19 17:06:39.000000000 -0700 -@@ -61,7 +61,7 @@ static int sg_version_num = 30529; /* 2 - #include - #include - --#include -+#include - #include "scsi.h" - #include "hosts.h" - #include -@@ -83,7 +83,7 @@ static void sg_proc_cleanup(void); - #define SG_ALLOW_DIO_DEF 0 - #define SG_ALLOW_DIO_CODE /* compile out by commenting this define */ - --#define SG_MAX_DEVS_MASK ((1U << KDEV_MINOR_BITS) - 1) -+#define SG_MAX_DEVS_MASK 255 - - /* - * Suppose you want to calculate the formula muldiv(x,m,d)=int(x * m / d) ---- linux-2.6.0-test1/drivers/scsi/sgiwd93.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/scsi/sgiwd93.c 2003-07-19 17:03:50.000000000 -0700 -@@ -15,7 +15,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/sim710.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/sim710.c 2003-07-19 17:03:50.000000000 -0700 -@@ -29,7 +29,7 @@ - #include - #include - --#include -+#include - #include - #include - #include -@@ -138,7 +138,8 @@ sim710_probe_common(struct device *dev, - goto out_unregister; - } - -- scsi_add_host(host, dev); -+ scsi_add_host(host, dev); /* XXX handle failure */ -+ scsi_scan_host(host); - hostdata->dev = dev; - - return 0; ---- linux-2.6.0-test1/drivers/scsi/sr.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/sr.c 2003-07-19 17:06:39.000000000 -0700 -@@ -43,7 +43,7 @@ - #include - #include - #include --#include -+#include - #include - - #include "scsi.h" -@@ -59,7 +59,7 @@ - MODULE_PARM(xa_test, "i"); /* see sr_ioctl.c */ - - --#define SR_DISKS (1 << KDEV_MINOR_BITS) -+#define SR_DISKS 256 - - #define MAX_RETRIES 3 - #define SR_TIMEOUT (30 * HZ) -@@ -533,7 +533,7 @@ static int sr_probe(struct device *dev) - - snprintf(disk->devfs_name, sizeof(disk->devfs_name), - "%s/cd", sdev->devfs_name); -- disk->driverfs_dev = &sdev->sdev_driverfs_dev; -+ disk->driverfs_dev = &sdev->sdev_gendev; - register_cdrom(&cd->cdi); - set_capacity(disk, cd->capacity); - disk->private_data = &cd->driver; ---- linux-2.6.0-test1/drivers/scsi/sr_ioctl.c 2003-06-14 12:18:24.000000000 -0700 -+++ 25/drivers/scsi/sr_ioctl.c 2003-07-19 17:03:50.000000000 -0700 -@@ -4,7 +4,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/sr_vendor.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/scsi/sr_vendor.c 2003-07-19 17:03:50.000000000 -0700 -@@ -39,7 +39,7 @@ - #include - #include - --#include -+#include - #include "scsi.h" - #include "hosts.h" - #include ---- linux-2.6.0-test1/drivers/scsi/st.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/st.c 2003-07-19 17:03:50.000000000 -0700 -@@ -32,7 +32,7 @@ static char *verstr = "20030622"; - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/sun3_scsi.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/scsi/sun3_scsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -61,7 +61,7 @@ - #include - #include - #include --#include -+#include - - #include - #include ---- linux-2.6.0-test1/drivers/scsi/sun3_scsi_vme.c 2003-06-14 12:18:52.000000000 -0700 -+++ 25/drivers/scsi/sun3_scsi_vme.c 2003-07-19 17:03:50.000000000 -0700 -@@ -23,7 +23,7 @@ - #include - #include - #include --#include -+#include - - #include - #include ---- linux-2.6.0-test1/drivers/scsi/sun3x_esp.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/sun3x_esp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/sym53c416.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/sym53c416.c 2003-07-19 17:03:50.000000000 -0700 -@@ -40,7 +40,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include "scsi.h" ---- linux-2.6.0-test1/drivers/scsi/sym53c8xx_2/sym_glue.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/sym53c8xx_2/sym_glue.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1110,6 +1110,7 @@ static int sym_eh_handler(int op, char * - int sts = -1; - struct sym_eh_wait eh, *ep = &eh; - char devname[20]; -+ unsigned long flags; - - sprintf(devname, "%s:%d:%d", sym_name(np), cmd->device->id, cmd->device->lun); - -@@ -1201,7 +1202,11 @@ finish: - ep->timer.data = (u_long)cmd; - ep->timed_out = 1; /* Be pessimistic for once :) */ - add_timer(&ep->timer); -+ local_save_flags(flags); -+ spin_unlock_irq(cmd->device->host->host_lock); - down(&ep->sem); -+ local_irq_restore(flags); -+ spin_lock(cmd->device->host->host_lock); - if (ep->timed_out) - sts = -2; - } ---- linux-2.6.0-test1/drivers/scsi/sym53c8xx_2/sym_glue.h 2003-06-14 12:18:51.000000000 -0700 -+++ 25/drivers/scsi/sym53c8xx_2/sym_glue.h 2003-07-19 17:03:50.000000000 -0700 -@@ -84,7 +84,7 @@ - #include - #include - --#include -+#include - - #ifdef __sparc__ - # include ---- linux-2.6.0-test1/drivers/scsi/sym53c8xx_2/sym_hipd.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/sym53c8xx_2/sym_hipd.c 2003-07-19 17:04:52.000000000 -0700 -@@ -800,7 +800,8 @@ static int sym_prepare_setting(hcb_p np, - * Btw, 'period' is in tenths of nanoseconds. - */ - period = (4 * div_10M[0] + np->clock_khz - 1) / np->clock_khz; -- if (period <= 250) np->minsync = 10; -+ if (period == 250) np->minsync = 9; -+ else if (period <= 250) np->minsync = 10; - else if (period <= 303) np->minsync = 11; - else if (period <= 500) np->minsync = 12; - else np->minsync = (period + 40 - 1) / 40; ---- linux-2.6.0-test1/drivers/scsi/sym53c8xx.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/scsi/sym53c8xx.c 2003-07-19 17:03:50.000000000 -0700 -@@ -123,7 +123,7 @@ - #include - #include - --#include -+#include - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,35) - #include -@@ -1327,7 +1327,7 @@ MODULE_PARM(sym53c8xx, "s"); - #define SetScsiAbortResult(cmd) SetScsiResult(cmd, DID_ABORT, 0xff) - #endif - --static void sym53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs); -+static irqreturn_t sym53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs); - static void sym53c8xx_timeout(unsigned long np); - - #define initverbose (driver_setup.verbose) -@@ -7374,7 +7374,7 @@ void ncr_complete (ncb_p np, ccb_p cp) - } - if (cp->xerr_status & XE_BAD_PHASE) { - PRINT_ADDR(cmd); -- printk ("illegal scsi phase (4/5).\n"); -+ printk ("invalid scsi phase (4/5).\n"); - } - if (cp->xerr_status & XE_SODL_UNRUN) { - PRINT_ADDR(cmd); -@@ -13660,7 +13660,7 @@ printk("sym53c8xx : command successfully - ** routine for each host that uses this IRQ. - */ - --static void sym53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs) -+static irqreturn_t sym53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs) - { - unsigned long flags; - ncb_p np = (ncb_p) dev_id; -@@ -13685,6 +13685,7 @@ static void sym53c8xx_intr(int irq, void - ncr_flush_done_cmds(done_list); - NCR_UNLOCK_SCSI_DONE(done_list->device->host, flags); - } -+ return IRQ_HANDLED; - } - - /* ---- linux-2.6.0-test1/drivers/scsi/t128.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/t128.c 2003-07-19 17:03:50.000000000 -0700 -@@ -110,7 +110,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/tmscsim.c 2003-06-14 12:18:52.000000000 -0700 -+++ 25/drivers/scsi/tmscsim.c 2003-07-19 17:03:50.000000000 -0700 -@@ -224,7 +224,7 @@ - #include - #include - #include --#include -+#include - #include - - #include "scsi.h" ---- linux-2.6.0-test1/drivers/scsi/u14-34f.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/u14-34f.c 2003-07-19 17:03:50.000000000 -0700 -@@ -414,7 +414,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/ultrastor.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/ultrastor.c 2003-07-19 17:03:50.000000000 -0700 -@@ -128,7 +128,7 @@ - */ - - #include --#include -+#include - #include - #include - #include ---- linux-2.6.0-test1/drivers/scsi/wd33c93.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/scsi/wd33c93.c 2003-07-19 17:03:50.000000000 -0700 -@@ -79,7 +79,7 @@ - #include - #include - #include --#include -+#include - #include - - #include "scsi.h" ---- linux-2.6.0-test1/drivers/scsi/wd7000.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/scsi/wd7000.c 2003-07-19 17:03:50.000000000 -0700 -@@ -174,7 +174,7 @@ - #include - #include - #include --#include -+#include - #include - #include - ---- linux-2.6.0-test1/drivers/scsi/zalon.c 2003-07-02 14:53:15.000000000 -0700 -+++ 25/drivers/scsi/zalon.c 2003-07-19 17:03:50.000000000 -0700 -@@ -7,7 +7,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -@@ -85,7 +85,7 @@ zalon_scsi_callback(struct parisc_device - { - struct gsc_irq gsc_irq; - u32 zalon_vers; -- int irq; -+ int irq, error = -ENODEV; - unsigned long zalon = dev->hpa; - unsigned long io_port = zalon + GSC_SCSI_ZALON_OFFSET; - static int unit = 0; -@@ -147,11 +147,18 @@ zalon_scsi_callback(struct parisc_device - - dev_set_drvdata(&dev->dev, host); - -- scsi_add_host(host, &dev->dev); -+ error = scsi_add_host(host, &dev->dev); -+ if (error) -+ goto fail_free_irq; - -+ scsi_scan_host(host); - return 0; -+ -+ fail_free_irq: -+ free_irq(irq, host); - fail: -- return -ENODEV; -+ ncr53c8xx_release(host); -+ return error; - } - - static struct parisc_device_id zalon_tbl[] = { ---- linux-2.6.0-test1/drivers/serial/8250.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/serial/8250.c 2003-07-19 17:04:02.000000000 -0700 -@@ -823,7 +823,7 @@ receive_chars(struct uart_8250_port *up, - if (unlikely(tty->flip.count >= TTY_FLIPBUF_SIZE)) { - tty->flip.work.func((void *)tty); - if (tty->flip.count >= TTY_FLIPBUF_SIZE) -- return; // if TTY_DONT_FLIP is set -+ return; /* if TTY_DONT_FLIP is set */ - } - ch = serial_inp(up, UART_RX); - *tty->flip.char_buf_ptr = ch; -@@ -1183,13 +1183,20 @@ static void serial8250_break_ctl(struct - serial_out(up, UART_LCR, up->lcr); - spin_unlock_irqrestore(&up->port.lock, flags); - } -+#ifdef CONFIG_KGDB -+static int kgdb_irq = -1; -+#endif - - static int serial8250_startup(struct uart_port *port) - { - struct uart_8250_port *up = (struct uart_8250_port *)port; - unsigned long flags; - int retval; -- -+#ifdef CONFIG_KGDB -+ if ( up->port.irq == kgdb_irq){ -+ return -EBUSY; -+ } -+#endif - if (up->port.type == PORT_16C950) { - /* Wake up and initialize UART */ - up->acr = 0; -@@ -1853,6 +1860,11 @@ static void __init serial8250_register_p - for (i = 0; i < UART_NR; i++) { - struct uart_8250_port *up = &serial8250_ports[i]; - -+#ifdef CONFIG_KGDB -+ if(up->port.irq == kgdb_irq){ -+ up->port.iobase = up->port.mapbase = 0; -+ } -+#endif - up->port.line = i; - up->port.ops = &serial8250_pops; - init_timer(&up->timer); -@@ -2116,7 +2128,31 @@ void serial8250_resume_port(int line, u3 - { - uart_resume_port(&serial8250_reg, &serial8250_ports[line].port, level); - } -- -+#ifdef CONFIG_KGDB -+/* -+ * Find all the ports using the given irq and shut them down. -+ * Result should be that the irq will be released. -+ */ -+void shutdown_for_kgdb(struct async_struct * info) -+{ -+ int irq = info->state->irq; -+ struct uart_8250_port *up; -+ int ttyS; -+ -+ kgdb_irq = irq; /* save for later init */ -+ for (ttyS = 0; ttyS < UART_NR; ttyS++){ -+ up = &serial8250_ports[ttyS]; -+ if( up->port.irq == irq && (irq_lists + irq)->head){ -+#ifdef CONFIG_DEBUG_SPINLOCK /* ugly business... */ -+ if(up->port.lock.magic != SPINLOCK_MAGIC){ -+ spin_lock_init(&up->port.lock); -+ } -+#endif -+ serial8250_shutdown(&up->port); -+ } -+ } -+} -+#endif - static int __init serial8250_init(void) - { - int ret, i; ---- linux-2.6.0-test1/drivers/serial/core.c 2003-07-10 18:50:31.000000000 -0700 -+++ 25/drivers/serial/core.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1667,23 +1667,25 @@ static int uart_line_info(char *buf, str - return ret + 1; - } - -- status = port->ops->get_mctrl(port); -- -- ret += sprintf(buf + ret, " tx:%d rx:%d", -- port->icount.tx, port->icount.rx); -- if (port->icount.frame) -- ret += sprintf(buf + ret, " fe:%d", -- port->icount.frame); -- if (port->icount.parity) -- ret += sprintf(buf + ret, " pe:%d", -- port->icount.parity); -- if (port->icount.brk) -- ret += sprintf(buf + ret, " brk:%d", -- port->icount.brk); -- if (port->icount.overrun) -- ret += sprintf(buf + ret, " oe:%d", -- port->icount.overrun); -- -+ if(capable(CAP_SYS_ADMIN)) -+ { -+ status = port->ops->get_mctrl(port); -+ -+ ret += sprintf(buf + ret, " tx:%d rx:%d", -+ port->icount.tx, port->icount.rx); -+ if (port->icount.frame) -+ ret += sprintf(buf + ret, " fe:%d", -+ port->icount.frame); -+ if (port->icount.parity) -+ ret += sprintf(buf + ret, " pe:%d", -+ port->icount.parity); -+ if (port->icount.brk) -+ ret += sprintf(buf + ret, " brk:%d", -+ port->icount.brk); -+ if (port->icount.overrun) -+ ret += sprintf(buf + ret, " oe:%d", -+ port->icount.overrun); -+ - #define INFOBIT(bit,str) \ - if (port->mctrl & (bit)) \ - strncat(stat_buf, (str), sizeof(stat_buf) - \ -@@ -1693,19 +1695,22 @@ static int uart_line_info(char *buf, str - strncat(stat_buf, (str), sizeof(stat_buf) - \ - strlen(stat_buf) - 2) - -- stat_buf[0] = '\0'; -- stat_buf[1] = '\0'; -- INFOBIT(TIOCM_RTS, "|RTS"); -- STATBIT(TIOCM_CTS, "|CTS"); -- INFOBIT(TIOCM_DTR, "|DTR"); -- STATBIT(TIOCM_DSR, "|DSR"); -- STATBIT(TIOCM_CAR, "|CD"); -- STATBIT(TIOCM_RNG, "|RI"); -- if (stat_buf[0]) -- stat_buf[0] = ' '; -- strcat(stat_buf, "\n"); -- -- ret += sprintf(buf + ret, stat_buf); -+ stat_buf[0] = '\0'; -+ stat_buf[1] = '\0'; -+ INFOBIT(TIOCM_RTS, "|RTS"); -+ STATBIT(TIOCM_CTS, "|CTS"); -+ INFOBIT(TIOCM_DTR, "|DTR"); -+ STATBIT(TIOCM_DSR, "|DSR"); -+ STATBIT(TIOCM_CAR, "|CD"); -+ STATBIT(TIOCM_RNG, "|RI"); -+ if (stat_buf[0]) -+ stat_buf[0] = ' '; -+ strcat(stat_buf, "\n"); -+ -+ ret += sprintf(buf + ret, stat_buf); -+ } -+#undef STATBIT -+#undef INFOBIT - return ret; - } - ---- linux-2.6.0-test1/drivers/serial/Kconfig 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/serial/Kconfig 2003-07-19 17:03:50.000000000 -0700 -@@ -404,14 +404,19 @@ config SERIAL_SUNSAB_CONSOLE - on your Sparc system as the console, you can do so by answering - Y to this option. - --config V850E_NB85E_UART -+config V850E_UART - bool "NEC V850E on-chip UART support" -- depends on V850E_NB85E || V850E2_ANNA || V850E_AS85EP1 -+ depends on V850E_MA1 || V850E_ME2 || V850E_TEG || V850E2_ANNA || V850E_AS85EP1 - default y - --config V850E_NB85E_UART_CONSOLE -+config V850E_UARTB -+ bool -+ depends V850E_UART && V850E_ME2 -+ default y -+ -+config V850E_UART_CONSOLE - bool "Use NEC V850E on-chip UART for console" -- depends on V850E_NB85E_UART -+ depends on V850E_UART - - config SERIAL98 - tristate "PC-9800 8251-based primary serial port support" -@@ -426,12 +431,12 @@ config SERIAL98_CONSOLE - - config SERIAL_CORE - tristate -- default m if SERIAL_AMBA!=y && SERIAL_CLPS711X!=y && SERIAL_21285!=y && !SERIAL_SA1100 && !SERIAL_ANAKIN && !SERIAL_UART00 && SERIAL_8250!=y && SERIAL_MUX!=y && !SERIAL_ROCKETPORT && !SERIAL_SUNCORE && !V850E_NB85E_UART && (SERIAL_AMBA=m || SERIAL_CLPS711X=m || SERIAL_21285=m || SERIAL_8250=m || SERIAL_MUX=m || SERIAL98=m) -- default y if SERIAL_AMBA=y || SERIAL_CLPS711X=y || SERIAL_21285=y || SERIAL_SA1100 || SERIAL_ANAKIN || SERIAL_UART00 || SERIAL_8250=y || SERIAL_MUX=y || SERIAL_ROCKETPORT || SERIAL_SUNCORE || V850E_NB85E_UART || SERIAL98=y -+ default m if SERIAL_AMBA!=y && SERIAL_CLPS711X!=y && SERIAL_21285!=y && !SERIAL_SA1100 && !SERIAL_ANAKIN && !SERIAL_UART00 && SERIAL_8250!=y && SERIAL_MUX!=y && !SERIAL_ROCKETPORT && !SERIAL_SUNCORE && !V850E_UART && (SERIAL_AMBA=m || SERIAL_CLPS711X=m || SERIAL_21285=m || SERIAL_8250=m || SERIAL_MUX=m || SERIAL98=m) -+ default y if SERIAL_AMBA=y || SERIAL_CLPS711X=y || SERIAL_21285=y || SERIAL_SA1100 || SERIAL_ANAKIN || SERIAL_UART00 || SERIAL_8250=y || SERIAL_MUX=y || SERIAL_ROCKETPORT || SERIAL_SUNCORE || V850E_UART || SERIAL98=y - - config SERIAL_CORE_CONSOLE - bool -- depends on SERIAL_AMBA_CONSOLE || SERIAL_CLPS711X_CONSOLE || SERIAL_21285_CONSOLE || SERIAL_SA1100_CONSOLE || SERIAL_ANAKIN_CONSOLE || SERIAL_UART00_CONSOLE || SERIAL_8250_CONSOLE || SERIAL_MUX_CONSOLE || SERIAL_SUNZILOG_CONSOLE || SERIAL_SUNSU_CONSOLE || SERIAL_SUNSAB_CONSOLE || V850E_NB85E_UART_CONSOLE || SERIAL98_CONSOLE -+ depends on SERIAL_AMBA_CONSOLE || SERIAL_CLPS711X_CONSOLE || SERIAL_21285_CONSOLE || SERIAL_SA1100_CONSOLE || SERIAL_ANAKIN_CONSOLE || SERIAL_UART00_CONSOLE || SERIAL_8250_CONSOLE || SERIAL_MUX_CONSOLE || SERIAL_SUNZILOG_CONSOLE || SERIAL_SUNSU_CONSOLE || SERIAL_SUNSAB_CONSOLE || V850E_UART_CONSOLE || SERIAL98_CONSOLE - default y - - config SERIAL_68328 ---- linux-2.6.0-test1/drivers/serial/Makefile 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/serial/Makefile 2003-07-19 17:03:50.000000000 -0700 -@@ -29,5 +29,5 @@ obj-$(CONFIG_SERIAL_MUX) += mux.o - obj-$(CONFIG_SERIAL_68328) += 68328serial.o - obj-$(CONFIG_SERIAL_68360) += 68360serial.o - obj-$(CONFIG_SERIAL_COLDFIRE) += mcfserial.o --obj-$(CONFIG_V850E_NB85E_UART) += nb85e_uart.o -+obj-$(CONFIG_V850E_UART) += v850e_uart.o - obj-$(CONFIG_SERIAL98) += serial98.o ---- linux-2.6.0-test1/drivers/serial/nb85e_uart.c 2003-06-14 12:18:30.000000000 -0700 -+++ /dev/null 2002-08-30 16:31:37.000000000 -0700 -@@ -1,610 +0,0 @@ --/* -- * drivers/serial/nb85e_uart.c -- Serial I/O using V850E/NB85E on-chip UART -- * -- * Copyright (C) 2001,02,03 NEC Corporation -- * Copyright (C) 2001,02,03 Miles Bader -- * -- * This file is subject to the terms and conditions of the GNU General -- * Public License. See the file COPYING in the main directory of this -- * archive for more details. -- * -- * Written by Miles Bader -- */ -- --#include --#include --#include --#include --#include --#include --#include --#include -- --#include --#include -- --/* Initial UART state. This may be overridden by machine-dependent headers. */ --#ifndef NB85E_UART_INIT_BAUD --#define NB85E_UART_INIT_BAUD 115200 --#endif --#ifndef NB85E_UART_INIT_CFLAGS --#define NB85E_UART_INIT_CFLAGS (B115200 | CS8 | CREAD) --#endif -- --/* XXX This should be in a header file. */ --#define NB85E_UART_BRGC_MIN 8 -- --/* A string used for prefixing printed descriptions; since the same UART -- macro is actually used on other chips than the V850E/NB85E. This must -- be a constant string. */ --#ifndef NB85E_UART_CHIP_NAME --#define NB85E_UART_CHIP_NAME "V850E/NB85E" --#endif -- -- --/* Helper functions for doing baud-rate/frequency calculations. */ -- --/* Calculate the minimum value for CKSR on this processor. */ --static inline unsigned cksr_min (void) --{ -- int min = 0; -- unsigned freq = NB85E_UART_BASE_FREQ; -- while (freq > NB85E_UART_CKSR_MAX_FREQ) { -- freq >>= 1; -- min++; -- } -- return min; --} -- --/* Minimum baud rate possible. */ --#define min_baud() \ -- ((NB85E_UART_BASE_FREQ >> NB85E_UART_CKSR_MAX) / (2 * 255) + 1) -- --/* Maximum baud rate possible. The error is quite high at max, though. */ --#define max_baud() \ -- ((NB85E_UART_BASE_FREQ >> cksr_min()) / (2 * NB85E_UART_BRGC_MIN)) -- -- --/* Low-level UART functions. */ -- --/* These masks define which control bits affect TX/RX modes, respectively. */ --#define RX_BITS \ -- (NB85E_UART_ASIM_PS_MASK | NB85E_UART_ASIM_CL_8 | NB85E_UART_ASIM_ISRM) --#define TX_BITS \ -- (NB85E_UART_ASIM_PS_MASK | NB85E_UART_ASIM_CL_8 | NB85E_UART_ASIM_SL_2) -- --/* The UART require various delays after writing control registers. */ --static inline void nb85e_uart_delay (unsigned cycles) --{ -- /* The loop takes 2 insns, so loop CYCLES / 2 times. */ -- register unsigned count = cycles >> 1; -- while (--count != 0) -- /* nothing */; --} -- --/* Configure and turn on uart channel CHAN, using the termios `control -- modes' bits in CFLAGS, and a baud-rate of BAUD. */ --void nb85e_uart_configure (unsigned chan, unsigned cflags, unsigned baud) --{ -- int flags; -- unsigned new_config = 0; /* What we'll write to the control reg. */ -- unsigned new_clk_divlog2; /* New baud-rate generate clock divider. */ -- unsigned new_brgen_count; /* New counter max for baud-rate generator.*/ -- /* These are the current values corresponding to the above. */ -- unsigned old_config, old_clk_divlog2, old_brgen_count; -- -- /* Calculate new baud-rate generator config values. */ -- -- /* Calculate the log2 clock divider and baud-rate counter values -- (note that the UART divides the resulting clock by 2, so -- multiply BAUD by 2 here to compensate). */ -- calc_counter_params (NB85E_UART_BASE_FREQ, baud * 2, -- cksr_min(), NB85E_UART_CKSR_MAX, 8/*bits*/, -- &new_clk_divlog2, &new_brgen_count); -- -- /* Figure out new configuration of control register. */ -- if (cflags & CSTOPB) -- /* Number of stop bits, 1 or 2. */ -- new_config |= NB85E_UART_ASIM_SL_2; -- if ((cflags & CSIZE) == CS8) -- /* Number of data bits, 7 or 8. */ -- new_config |= NB85E_UART_ASIM_CL_8; -- if (! (cflags & PARENB)) -- /* No parity check/generation. */ -- new_config |= NB85E_UART_ASIM_PS_NONE; -- else if (cflags & PARODD) -- /* Odd parity check/generation. */ -- new_config |= NB85E_UART_ASIM_PS_ODD; -- else -- /* Even parity check/generation. */ -- new_config |= NB85E_UART_ASIM_PS_EVEN; -- if (cflags & CREAD) -- /* Reading enabled. */ -- new_config |= NB85E_UART_ASIM_RXE; -- -- new_config |= NB85E_UART_ASIM_TXE; /* Writing is always enabled. */ -- new_config |= NB85E_UART_ASIM_CAE; -- new_config |= NB85E_UART_ASIM_ISRM; /* Errors generate a read-irq. */ -- -- /* Disable interrupts while we're twiddling the hardware. */ -- local_irq_save (flags); -- --#ifdef NB85E_UART_PRE_CONFIGURE -- NB85E_UART_PRE_CONFIGURE (chan, cflags, baud); --#endif -- -- old_config = NB85E_UART_ASIM (chan); -- old_clk_divlog2 = NB85E_UART_CKSR (chan); -- old_brgen_count = NB85E_UART_BRGC (chan); -- -- if (new_clk_divlog2 != old_clk_divlog2 -- || new_brgen_count != old_brgen_count) -- { -- /* The baud rate has changed. First, disable the UART. */ -- NB85E_UART_ASIM (chan) = 0; -- old_config = 0; -- /* Reprogram the baud-rate generator. */ -- NB85E_UART_CKSR (chan) = new_clk_divlog2; -- NB85E_UART_BRGC (chan) = new_brgen_count; -- } -- -- if (! (old_config & NB85E_UART_ASIM_CAE)) { -- /* If we are enabling the uart for the first time, start -- by turning on the enable bit, which must be done -- before turning on any other bits. */ -- NB85E_UART_ASIM (chan) = NB85E_UART_ASIM_CAE; -- /* Enabling the uart also resets it. */ -- old_config = NB85E_UART_ASIM_CAE; -- } -- -- if (new_config != old_config) { -- /* Which of the TXE/RXE bits we'll temporarily turn off -- before changing other control bits. */ -- unsigned temp_disable = 0; -- /* Which of the TXE/RXE bits will be enabled. */ -- unsigned enable = 0; -- unsigned changed_bits = new_config ^ old_config; -- -- /* Which of RX/TX will be enabled in the new configuration. */ -- if (new_config & RX_BITS) -- enable |= (new_config & NB85E_UART_ASIM_RXE); -- if (new_config & TX_BITS) -- enable |= (new_config & NB85E_UART_ASIM_TXE); -- -- /* Figure out which of RX/TX needs to be disabled; note -- that this will only happen if they're not already -- disabled. */ -- if (changed_bits & RX_BITS) -- temp_disable |= (old_config & NB85E_UART_ASIM_RXE); -- if (changed_bits & TX_BITS) -- temp_disable |= (old_config & NB85E_UART_ASIM_TXE); -- -- /* We have to turn off RX and/or TX mode before changing -- any associated control bits. */ -- if (temp_disable) -- NB85E_UART_ASIM (chan) = old_config & ~temp_disable; -- -- /* Write the new control bits, while RX/TX are disabled. */ -- if (changed_bits & ~enable) -- NB85E_UART_ASIM (chan) = new_config & ~enable; -- -- /* The UART may not be reset properly unless we -- wait at least 2 `basic-clocks' until turning -- on the TXE/RXE bits again. A `basic clock' -- is the clock used by the baud-rate generator, i.e., -- the cpu clock divided by the 2^new_clk_divlog2. */ -- nb85e_uart_delay (1 << (new_clk_divlog2 + 1)); -- -- /* Write the final version, with enable bits turned on. */ -- NB85E_UART_ASIM (chan) = new_config; -- } -- -- local_irq_restore (flags); --} -- -- --/* Low-level console. */ -- --#ifdef CONFIG_V850E_NB85E_UART_CONSOLE -- --static void nb85e_uart_cons_write (struct console *co, -- const char *s, unsigned count) --{ -- if (count > 0) { -- unsigned chan = co->index; -- unsigned irq = IRQ_INTST (chan); -- int irq_was_enabled, irq_was_pending, flags; -- -- /* We don't want to get `transmission completed' (INTST) -- interrupts, since we're busy-waiting, so we disable -- them while sending (we don't disable interrupts -- entirely because sending over a serial line is really -- slow). We save the status of INTST and restore it -- when we're done so that using printk doesn't -- interfere with normal serial transmission (other than -- interleaving the output, of course!). This should -- work correctly even if this function is interrupted -- and the interrupt printks something. */ -- -- /* Disable interrupts while fiddling with INTST. */ -- local_irq_save (flags); -- /* Get current INTST status. */ -- irq_was_enabled = nb85e_intc_irq_enabled (irq); -- irq_was_pending = nb85e_intc_irq_pending (irq); -- /* Disable INTST if necessary. */ -- if (irq_was_enabled) -- nb85e_intc_disable_irq (irq); -- /* Turn interrupts back on. */ -- local_irq_restore (flags); -- -- /* Send characters. */ -- while (count > 0) { -- int ch = *s++; -- -- if (ch == '\n') { -- /* We don't have the benefit of a tty -- driver, so translate NL into CR LF. */ -- nb85e_uart_wait_for_xmit_ok (chan); -- nb85e_uart_putc (chan, '\r'); -- } -- -- nb85e_uart_wait_for_xmit_ok (chan); -- nb85e_uart_putc (chan, ch); -- -- count--; -- } -- -- /* Restore saved INTST status. */ -- if (irq_was_enabled) { -- /* Wait for the last character we sent to be -- completely transmitted (as we'll get an INTST -- interrupt at that point). */ -- nb85e_uart_wait_for_xmit_done (chan); -- /* Clear pending interrupts received due -- to our transmission, unless there was already -- one pending, in which case we want the -- handler to be called. */ -- if (! irq_was_pending) -- nb85e_intc_clear_pending_irq (irq); -- /* ... and then turn back on handling. */ -- nb85e_intc_enable_irq (irq); -- } -- } --} -- --extern struct uart_driver nb85e_uart_driver; --static struct console nb85e_uart_cons = --{ -- .name = "ttyS", -- .write = nb85e_uart_cons_write, -- .device = uart_console_device, -- .flags = CON_PRINTBUFFER, -- .cflag = NB85E_UART_INIT_CFLAGS, -- .index = -1, -- .data = &nb85e_uart_driver, --}; -- --void nb85e_uart_cons_init (unsigned chan) --{ -- nb85e_uart_configure (chan, NB85E_UART_INIT_CFLAGS, -- NB85E_UART_INIT_BAUD); -- nb85e_uart_cons.index = chan; -- register_console (&nb85e_uart_cons); -- printk ("Console: %s on-chip UART channel %d\n", -- NB85E_UART_CHIP_NAME, chan); --} -- --#define NB85E_UART_CONSOLE &nb85e_uart_cons -- --#else /* !CONFIG_V850E_NB85E_UART_CONSOLE */ --#define NB85E_UART_CONSOLE 0 --#endif /* CONFIG_V850E_NB85E_UART_CONSOLE */ -- --/* TX/RX interrupt handlers. */ -- --static void nb85e_uart_stop_tx (struct uart_port *port, unsigned tty_stop); -- --void nb85e_uart_tx (struct uart_port *port) --{ -- struct circ_buf *xmit = &port->info->xmit; -- int stopped = uart_tx_stopped (port); -- -- if (nb85e_uart_xmit_ok (port->line)) { -- int tx_ch; -- -- if (port->x_char) { -- tx_ch = port->x_char; -- port->x_char = 0; -- } else if (!uart_circ_empty (xmit) && !stopped) { -- tx_ch = xmit->buf[xmit->tail]; -- xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); -- } else -- goto no_xmit; -- -- nb85e_uart_putc (port->line, tx_ch); -- port->icount.tx++; -- -- if (uart_circ_chars_pending (xmit) < WAKEUP_CHARS) -- uart_write_wakeup (port); -- } -- -- no_xmit: -- if (uart_circ_empty (xmit) || stopped) -- nb85e_uart_stop_tx (port, stopped); --} -- --static void nb85e_uart_tx_irq (int irq, void *data, struct pt_regs *regs) --{ -- struct uart_port *port = data; -- nb85e_uart_tx (port); --} -- --static void nb85e_uart_rx_irq (int irq, void *data, struct pt_regs *regs) --{ -- struct uart_port *port = data; -- unsigned ch_stat = TTY_NORMAL; -- unsigned ch = NB85E_UART_RXB (port->line); -- unsigned err = NB85E_UART_ASIS (port->line); -- -- if (err) { -- if (err & NB85E_UART_ASIS_OVE) { -- ch_stat = TTY_OVERRUN; -- port->icount.overrun++; -- } else if (err & NB85E_UART_ASIS_FE) { -- ch_stat = TTY_FRAME; -- port->icount.frame++; -- } else if (err & NB85E_UART_ASIS_PE) { -- ch_stat = TTY_PARITY; -- port->icount.parity++; -- } -- } -- -- port->icount.rx++; -- -- tty_insert_flip_char (port->info->tty, ch, ch_stat); -- tty_schedule_flip (port->info->tty); --} -- --/* Control functions for the serial framework. */ -- --static void nb85e_uart_nop (struct uart_port *port) { } --static int nb85e_uart_success (struct uart_port *port) { return 0; } -- --static unsigned nb85e_uart_tx_empty (struct uart_port *port) --{ -- return TIOCSER_TEMT; /* Can't detect. */ --} -- --static void nb85e_uart_set_mctrl (struct uart_port *port, unsigned mctrl) --{ --#ifdef NB85E_UART_SET_RTS -- NB85E_UART_SET_RTS (port->line, (mctrl & TIOCM_RTS)); --#endif --} -- --static unsigned nb85e_uart_get_mctrl (struct uart_port *port) --{ -- /* We don't support DCD or DSR, so consider them permanently active. */ -- int mctrl = TIOCM_CAR | TIOCM_DSR; -- -- /* We may support CTS. */ --#ifdef NB85E_UART_CTS -- mctrl |= NB85E_UART_CTS(port->line) ? TIOCM_CTS : 0; --#else -- mctrl |= TIOCM_CTS; --#endif -- -- return mctrl; --} -- --static void nb85e_uart_start_tx (struct uart_port *port, unsigned tty_start) --{ -- nb85e_intc_disable_irq (IRQ_INTST (port->line)); -- nb85e_uart_tx (port); -- nb85e_intc_enable_irq (IRQ_INTST (port->line)); --} -- --static void nb85e_uart_stop_tx (struct uart_port *port, unsigned tty_stop) --{ -- nb85e_intc_disable_irq (IRQ_INTST (port->line)); --} -- --static void nb85e_uart_start_rx (struct uart_port *port) --{ -- nb85e_intc_enable_irq (IRQ_INTSR (port->line)); --} -- --static void nb85e_uart_stop_rx (struct uart_port *port) --{ -- nb85e_intc_disable_irq (IRQ_INTSR (port->line)); --} -- --static void nb85e_uart_break_ctl (struct uart_port *port, int break_ctl) --{ -- /* Umm, do this later. */ --} -- --static int nb85e_uart_startup (struct uart_port *port) --{ -- int err; -- -- /* Alloc RX irq. */ -- err = request_irq (IRQ_INTSR (port->line), nb85e_uart_rx_irq, -- SA_INTERRUPT, "nb85e_uart", port); -- if (err) -- return err; -- -- /* Alloc TX irq. */ -- err = request_irq (IRQ_INTST (port->line), nb85e_uart_tx_irq, -- SA_INTERRUPT, "nb85e_uart", port); -- if (err) { -- free_irq (IRQ_INTSR (port->line), port); -- return err; -- } -- -- nb85e_uart_start_rx (port); -- -- return 0; --} -- --static void nb85e_uart_shutdown (struct uart_port *port) --{ -- /* Disable port interrupts. */ -- free_irq (IRQ_INTST (port->line), port); -- free_irq (IRQ_INTSR (port->line), port); -- -- /* Turn off xmit/recv enable bits. */ -- NB85E_UART_ASIM (port->line) -- &= ~(NB85E_UART_ASIM_TXE | NB85E_UART_ASIM_RXE); -- /* Then reset the channel. */ -- NB85E_UART_ASIM (port->line) = 0; --} -- --static void --nb85e_uart_set_termios (struct uart_port *port, struct termios *termios, -- struct termios *old) --{ -- unsigned cflags = termios->c_cflag; -- -- /* Restrict flags to legal values. */ -- if ((cflags & CSIZE) != CS7 && (cflags & CSIZE) != CS8) -- /* The new value of CSIZE is invalid, use the old value. */ -- cflags = (cflags & ~CSIZE) -- | (old ? (old->c_cflag & CSIZE) : CS8); -- -- termios->c_cflag = cflags; -- -- nb85e_uart_configure (port->line, cflags, -- uart_get_baud_rate (port, termios, old, -- min_baud(), max_baud())); --} -- --static const char *nb85e_uart_type (struct uart_port *port) --{ -- return port->type == PORT_NB85E_UART ? "nb85e_uart" : 0; --} -- --static void nb85e_uart_config_port (struct uart_port *port, int flags) --{ -- if (flags & UART_CONFIG_TYPE) -- port->type = PORT_NB85E_UART; --} -- --static int --nb85e_uart_verify_port (struct uart_port *port, struct serial_struct *ser) --{ -- if (ser->type != PORT_UNKNOWN && ser->type != PORT_NB85E_UART) -- return -EINVAL; -- if (ser->irq != IRQ_INTST (port->line)) -- return -EINVAL; -- return 0; --} -- --static struct uart_ops nb85e_uart_ops = { -- .tx_empty = nb85e_uart_tx_empty, -- .get_mctrl = nb85e_uart_get_mctrl, -- .set_mctrl = nb85e_uart_set_mctrl, -- .start_tx = nb85e_uart_start_tx, -- .stop_tx = nb85e_uart_stop_tx, -- .stop_rx = nb85e_uart_stop_rx, -- .enable_ms = nb85e_uart_nop, -- .break_ctl = nb85e_uart_break_ctl, -- .startup = nb85e_uart_startup, -- .shutdown = nb85e_uart_shutdown, -- .set_termios = nb85e_uart_set_termios, -- .type = nb85e_uart_type, -- .release_port = nb85e_uart_nop, -- .request_port = nb85e_uart_success, -- .config_port = nb85e_uart_config_port, -- .verify_port = nb85e_uart_verify_port, --}; -- --/* Initialization and cleanup. */ -- --static struct uart_driver nb85e_uart_driver = { -- .owner = THIS_MODULE, -- .driver_name = "nb85e_uart", -- .devfs_name = "tts/", -- .dev_name = "ttyS", -- .major = TTY_MAJOR, -- .minor = NB85E_UART_MINOR_BASE, -- .nr = NB85E_UART_NUM_CHANNELS, -- .cons = NB85E_UART_CONSOLE, --}; -- -- --static struct uart_port nb85e_uart_ports[NB85E_UART_NUM_CHANNELS]; -- --static int __init nb85e_uart_init (void) --{ -- int rval; -- -- printk (KERN_INFO "%s on-chip UART\n", NB85E_UART_CHIP_NAME); -- -- rval = uart_register_driver (&nb85e_uart_driver); -- if (rval == 0) { -- unsigned chan; -- -- for (chan = 0; chan < NB85E_UART_NUM_CHANNELS; chan++) { -- struct uart_port *port = &nb85e_uart_ports[chan]; -- -- memset (port, 0, sizeof *port); -- -- port->ops = &nb85e_uart_ops; -- port->line = chan; -- port->iotype = SERIAL_IO_MEM; -- port->flags = UPF_BOOT_AUTOCONF; -- -- /* We actually use multiple IRQs, but the serial -- framework seems to mainly use this for -- informational purposes anyway. Here we use the TX -- irq. */ -- port->irq = IRQ_INTST (chan); -- -- /* The serial framework doesn't really use these -- membase/mapbase fields for anything useful, but -- it requires that they be something non-zero to -- consider the port `valid', and also uses them -- for informational purposes. */ -- port->membase = (void *)NB85E_UART_BASE_ADDR (chan); -- port->mapbase = NB85E_UART_BASE_ADDR (chan); -- -- /* The framework insists on knowing the uart's master -- clock freq, though it doesn't seem to do anything -- useful for us with it. We must make it at least -- higher than (the maximum baud rate * 16), otherwise -- the framework will puke during its internal -- calculations, and force the baud rate to be 9600. -- To be accurate though, just repeat the calculation -- we use when actually setting the speed. -- -- The `* 8' means `* 16 / 2': 16 to account for for -- the serial framework's built-in bias, and 2 because -- there's an additional / 2 in the hardware. */ -- port->uartclk = -- (NB85E_UART_BASE_FREQ >> cksr_min()) * 8; -- -- uart_add_one_port (&nb85e_uart_driver, port); -- } -- } -- -- return rval; --} -- --static void __exit nb85e_uart_exit (void) --{ -- unsigned chan; -- -- for (chan = 0; chan < NB85E_UART_NUM_CHANNELS; chan++) -- uart_remove_one_port (&nb85e_uart_driver, -- &nb85e_uart_ports[chan]); -- -- uart_unregister_driver (&nb85e_uart_driver); --} -- --module_init (nb85e_uart_init); --module_exit (nb85e_uart_exit); -- --MODULE_AUTHOR ("Miles Bader"); --MODULE_DESCRIPTION ("NEC " NB85E_UART_CHIP_NAME " on-chip UART"); --MODULE_LICENSE ("GPL"); ---- linux-2.6.0-test1/drivers/serial/sunsu.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/serial/sunsu.c 2003-07-19 17:03:50.000000000 -0700 -@@ -102,6 +102,7 @@ struct uart_sunsu_port { - int l1_down; - #ifdef CONFIG_SERIO - struct serio serio; -+ int serio_open; - #endif - }; - -@@ -1021,12 +1022,13 @@ static int sunsu_serio_write(struct seri - - static int sunsu_serio_open(struct serio *serio) - { -+ struct uart_sunsu_port *up = serio->driver; - unsigned long flags; - int ret; - - spin_lock_irqsave(&sunsu_serio_lock, flags); -- if (serio->private == NULL) { -- serio->private = (void *) -1L; -+ if (!up->serio_open) { -+ up->serio_open = 1; - ret = 0; - } else - ret = -EBUSY; -@@ -1037,10 +1039,11 @@ static int sunsu_serio_open(struct serio - - static void sunsu_serio_close(struct serio *serio) - { -+ struct uart_sunsu_port *up = serio->driver; - unsigned long flags; - - spin_lock_irqsave(&sunsu_serio_lock, flags); -- serio->private = NULL; -+ up->serio_open = 0; - spin_unlock_irqrestore(&sunsu_serio_lock, flags); - } - ---- linux-2.6.0-test1/drivers/serial/sunzilog.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/serial/sunzilog.c 2003-07-19 17:03:50.000000000 -0700 -@@ -112,6 +112,7 @@ struct uart_sunzilog_port { - - #ifdef CONFIG_SERIO - struct serio serio; -+ int serio_open; - #endif - }; - -@@ -1311,12 +1312,13 @@ static int sunzilog_serio_write(struct s - - static int sunzilog_serio_open(struct serio *serio) - { -+ struct uart_sunzilog_port *up = serio->driver; - unsigned long flags; - int ret; - - spin_lock_irqsave(&sunzilog_serio_lock, flags); -- if (serio->private == NULL) { -- serio->private = (void *) -1L; -+ if (!up->serio_open) { -+ up->serio_open = 1; - ret = 0; - } else - ret = -EBUSY; -@@ -1327,10 +1329,11 @@ static int sunzilog_serio_open(struct se - - static void sunzilog_serio_close(struct serio *serio) - { -+ struct uart_sunzilog_port *up = serio->driver; - unsigned long flags; - - spin_lock_irqsave(&sunzilog_serio_lock, flags); -- serio->private = NULL; -+ up->serio_open = 0; - spin_unlock_irqrestore(&sunzilog_serio_lock, flags); - } - ---- /dev/null 2002-08-30 16:31:37.000000000 -0700 -+++ 25/drivers/serial/v850e_uart.c 2003-07-19 17:03:50.000000000 -0700 -@@ -0,0 +1,549 @@ -+/* -+ * drivers/serial/v850e_uart.c -- Serial I/O using V850E on-chip UART or UARTB -+ * -+ * Copyright (C) 2001,02,03 NEC Electronics Corporation -+ * Copyright (C) 2001,02,03 Miles Bader -+ * -+ * This file is subject to the terms and conditions of the GNU General -+ * Public License. See the file COPYING in the main directory of this -+ * archive for more details. -+ * -+ * Written by Miles Bader -+ */ -+ -+/* This driver supports both the original V850E UART interface (called -+ merely `UART' in the docs) and the newer `UARTB' interface, which is -+ roughly a superset of the first one. The selection is made at -+ configure time -- if CONFIG_V850E_UARTB is defined, then UARTB is -+ presumed, otherwise the old UART -- as these are on-CPU UARTS, a system -+ can never have both. -+ -+ The UARTB interface also has a 16-entry FIFO mode, which is not -+ yet supported by this driver. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+/* Initial UART state. This may be overridden by machine-dependent headers. */ -+#ifndef V850E_UART_INIT_BAUD -+#define V850E_UART_INIT_BAUD 115200 -+#endif -+#ifndef V850E_UART_INIT_CFLAGS -+#define V850E_UART_INIT_CFLAGS (B115200 | CS8 | CREAD) -+#endif -+ -+/* A string used for prefixing printed descriptions; since the same UART -+ macro is actually used on other chips than the V850E. This must be a -+ constant string. */ -+#ifndef V850E_UART_CHIP_NAME -+#define V850E_UART_CHIP_NAME "V850E" -+#endif -+ -+#define V850E_UART_MINOR_BASE 64 /* First tty minor number */ -+ -+ -+/* Low-level UART functions. */ -+ -+/* Configure and turn on uart channel CHAN, using the termios `control -+ modes' bits in CFLAGS, and a baud-rate of BAUD. */ -+void v850e_uart_configure (unsigned chan, unsigned cflags, unsigned baud) -+{ -+ int flags; -+ v850e_uart_speed_t old_speed; -+ v850e_uart_config_t old_config; -+ v850e_uart_speed_t new_speed = v850e_uart_calc_speed (baud); -+ v850e_uart_config_t new_config = v850e_uart_calc_config (cflags); -+ -+ /* Disable interrupts while we're twiddling the hardware. */ -+ local_irq_save (flags); -+ -+#ifdef V850E_UART_PRE_CONFIGURE -+ V850E_UART_PRE_CONFIGURE (chan, cflags, baud); -+#endif -+ -+ old_config = V850E_UART_CONFIG (chan); -+ old_speed = v850e_uart_speed (chan); -+ -+ if (! v850e_uart_speed_eq (old_speed, new_speed)) { -+ /* The baud rate has changed. First, disable the UART. */ -+ V850E_UART_CONFIG (chan) = V850E_UART_CONFIG_FINI; -+ old_config = 0; /* Force the uart to be re-initialized. */ -+ -+ /* Reprogram the baud-rate generator. */ -+ v850e_uart_set_speed (chan, new_speed); -+ } -+ -+ if (! (old_config & V850E_UART_CONFIG_ENABLED)) { -+ /* If we are using the uart for the first time, start by -+ enabling it, which must be done before turning on any -+ other bits. */ -+ V850E_UART_CONFIG (chan) = V850E_UART_CONFIG_INIT; -+ /* See the initial state. */ -+ old_config = V850E_UART_CONFIG (chan); -+ } -+ -+ if (new_config != old_config) { -+ /* Which of the TXE/RXE bits we'll temporarily turn off -+ before changing other control bits. */ -+ unsigned temp_disable = 0; -+ /* Which of the TXE/RXE bits will be enabled. */ -+ unsigned enable = 0; -+ unsigned changed_bits = new_config ^ old_config; -+ -+ /* Which of RX/TX will be enabled in the new configuration. */ -+ if (new_config & V850E_UART_CONFIG_RX_BITS) -+ enable |= (new_config & V850E_UART_CONFIG_RX_ENABLE); -+ if (new_config & V850E_UART_CONFIG_TX_BITS) -+ enable |= (new_config & V850E_UART_CONFIG_TX_ENABLE); -+ -+ /* Figure out which of RX/TX needs to be disabled; note -+ that this will only happen if they're not already -+ disabled. */ -+ if (changed_bits & V850E_UART_CONFIG_RX_BITS) -+ temp_disable -+ |= (old_config & V850E_UART_CONFIG_RX_ENABLE); -+ if (changed_bits & V850E_UART_CONFIG_TX_BITS) -+ temp_disable -+ |= (old_config & V850E_UART_CONFIG_TX_ENABLE); -+ -+ /* We have to turn off RX and/or TX mode before changing -+ any associated control bits. */ -+ if (temp_disable) -+ V850E_UART_CONFIG (chan) = old_config & ~temp_disable; -+ -+ /* Write the new control bits, while RX/TX are disabled. */ -+ if (changed_bits & ~enable) -+ V850E_UART_CONFIG (chan) = new_config & ~enable; -+ -+ v850e_uart_config_delay (new_config, new_speed); -+ -+ /* Write the final version, with enable bits turned on. */ -+ V850E_UART_CONFIG (chan) = new_config; -+ } -+ -+ local_irq_restore (flags); -+} -+ -+ -+/* Low-level console. */ -+ -+#ifdef CONFIG_V850E_UART_CONSOLE -+ -+static void v850e_uart_cons_write (struct console *co, -+ const char *s, unsigned count) -+{ -+ if (count > 0) { -+ unsigned chan = co->index; -+ unsigned irq = V850E_UART_TX_IRQ (chan); -+ int irq_was_enabled, irq_was_pending, flags; -+ -+ /* We don't want to get `transmission completed' -+ interrupts, since we're busy-waiting, so we disable them -+ while sending (we don't disable interrupts entirely -+ because sending over a serial line is really slow). We -+ save the status of the tx interrupt and restore it when -+ we're done so that using printk doesn't interfere with -+ normal serial transmission (other than interleaving the -+ output, of course!). This should work correctly even if -+ this function is interrupted and the interrupt printks -+ something. */ -+ -+ /* Disable interrupts while fiddling with tx interrupt. */ -+ local_irq_save (flags); -+ /* Get current tx interrupt status. */ -+ irq_was_enabled = v850e_intc_irq_enabled (irq); -+ irq_was_pending = v850e_intc_irq_pending (irq); -+ /* Disable tx interrupt if necessary. */ -+ if (irq_was_enabled) -+ v850e_intc_disable_irq (irq); -+ /* Turn interrupts back on. */ -+ local_irq_restore (flags); -+ -+ /* Send characters. */ -+ while (count > 0) { -+ int ch = *s++; -+ -+ if (ch == '\n') { -+ /* We don't have the benefit of a tty -+ driver, so translate NL into CR LF. */ -+ v850e_uart_wait_for_xmit_ok (chan); -+ v850e_uart_putc (chan, '\r'); -+ } -+ -+ v850e_uart_wait_for_xmit_ok (chan); -+ v850e_uart_putc (chan, ch); -+ -+ count--; -+ } -+ -+ /* Restore saved tx interrupt status. */ -+ if (irq_was_enabled) { -+ /* Wait for the last character we sent to be -+ completely transmitted (as we'll get an -+ interrupt interrupt at that point). */ -+ v850e_uart_wait_for_xmit_done (chan); -+ /* Clear pending interrupts received due -+ to our transmission, unless there was already -+ one pending, in which case we want the -+ handler to be called. */ -+ if (! irq_was_pending) -+ v850e_intc_clear_pending_irq (irq); -+ /* ... and then turn back on handling. */ -+ v850e_intc_enable_irq (irq); -+ } -+ } -+} -+ -+extern struct uart_driver v850e_uart_driver; -+static struct console v850e_uart_cons = -+{ -+ .name = "ttyS", -+ .write = v850e_uart_cons_write, -+ .device = uart_console_device, -+ .flags = CON_PRINTBUFFER, -+ .cflag = V850E_UART_INIT_CFLAGS, -+ .index = -1, -+ .data = &v850e_uart_driver, -+}; -+ -+void v850e_uart_cons_init (unsigned chan) -+{ -+ v850e_uart_configure (chan, V850E_UART_INIT_CFLAGS, -+ V850E_UART_INIT_BAUD); -+ v850e_uart_cons.index = chan; -+ register_console (&v850e_uart_cons); -+ printk ("Console: %s on-chip UART channel %d\n", -+ V850E_UART_CHIP_NAME, chan); -+} -+ -+/* This is what the init code actually calls. */ -+static int v850e_uart_console_init (void) -+{ -+ v850e_uart_cons_init (V850E_UART_CONSOLE_CHANNEL); -+ return 0; -+} -+console_initcall(v850e_uart_console_init); -+ -+#define V850E_UART_CONSOLE &v850e_uart_cons -+ -+#else /* !CONFIG_V850E_UART_CONSOLE */ -+#define V850E_UART_CONSOLE 0 -+#endif /* CONFIG_V850E_UART_CONSOLE */ -+ -+/* TX/RX interrupt handlers. */ -+ -+static void v850e_uart_stop_tx (struct uart_port *port, unsigned tty_stop); -+ -+void v850e_uart_tx (struct uart_port *port) -+{ -+ struct circ_buf *xmit = &port->info->xmit; -+ int stopped = uart_tx_stopped (port); -+ -+ if (v850e_uart_xmit_ok (port->line)) { -+ int tx_ch; -+ -+ if (port->x_char) { -+ tx_ch = port->x_char; -+ port->x_char = 0; -+ } else if (!uart_circ_empty (xmit) && !stopped) { -+ tx_ch = xmit->buf[xmit->tail]; -+ xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); -+ } else -+ goto no_xmit; -+ -+ v850e_uart_putc (port->line, tx_ch); -+ port->icount.tx++; -+ -+ if (uart_circ_chars_pending (xmit) < WAKEUP_CHARS) -+ uart_write_wakeup (port); -+ } -+ -+ no_xmit: -+ if (uart_circ_empty (xmit) || stopped) -+ v850e_uart_stop_tx (port, stopped); -+} -+ -+static irqreturn_t v850e_uart_tx_irq(int irq, void *data, struct pt_regs *regs) -+{ -+ struct uart_port *port = data; -+ v850e_uart_tx (port); -+ return IRQ_HANDLED; -+} -+ -+static irqreturn_t v850e_uart_rx_irq(int irq, void *data, struct pt_regs *regs) -+{ -+ struct uart_port *port = data; -+ unsigned ch_stat = TTY_NORMAL; -+ unsigned ch = v850e_uart_getc (port->line); -+ unsigned err = v850e_uart_err (port->line); -+ -+ if (err) { -+ if (err & V850E_UART_ERR_OVERRUN) { -+ ch_stat = TTY_OVERRUN; -+ port->icount.overrun++; -+ } else if (err & V850E_UART_ERR_FRAME) { -+ ch_stat = TTY_FRAME; -+ port->icount.frame++; -+ } else if (err & V850E_UART_ERR_PARITY) { -+ ch_stat = TTY_PARITY; -+ port->icount.parity++; -+ } -+ } -+ -+ port->icount.rx++; -+ -+ tty_insert_flip_char (port->info->tty, ch, ch_stat); -+ tty_schedule_flip (port->info->tty); -+ -+ return IRQ_HANDLED; -+} -+ -+ -+/* Control functions for the serial framework. */ -+ -+static void v850e_uart_nop (struct uart_port *port) { } -+static int v850e_uart_success (struct uart_port *port) { return 0; } -+ -+static unsigned v850e_uart_tx_empty (struct uart_port *port) -+{ -+ return TIOCSER_TEMT; /* Can't detect. */ -+} -+ -+static void v850e_uart_set_mctrl (struct uart_port *port, unsigned mctrl) -+{ -+#ifdef V850E_UART_SET_RTS -+ V850E_UART_SET_RTS (port->line, (mctrl & TIOCM_RTS)); -+#endif -+} -+ -+static unsigned v850e_uart_get_mctrl (struct uart_port *port) -+{ -+ /* We don't support DCD or DSR, so consider them permanently active. */ -+ int mctrl = TIOCM_CAR | TIOCM_DSR; -+ -+ /* We may support CTS. */ -+#ifdef V850E_UART_CTS -+ mctrl |= V850E_UART_CTS(port->line) ? TIOCM_CTS : 0; -+#else -+ mctrl |= TIOCM_CTS; -+#endif -+ -+ return mctrl; -+} -+ -+static void v850e_uart_start_tx (struct uart_port *port, unsigned tty_start) -+{ -+ v850e_intc_disable_irq (V850E_UART_TX_IRQ (port->line)); -+ v850e_uart_tx (port); -+ v850e_intc_enable_irq (V850E_UART_TX_IRQ (port->line)); -+} -+ -+static void v850e_uart_stop_tx (struct uart_port *port, unsigned tty_stop) -+{ -+ v850e_intc_disable_irq (V850E_UART_TX_IRQ (port->line)); -+} -+ -+static void v850e_uart_start_rx (struct uart_port *port) -+{ -+ v850e_intc_enable_irq (V850E_UART_RX_IRQ (port->line)); -+} -+ -+static void v850e_uart_stop_rx (struct uart_port *port) -+{ -+ v850e_intc_disable_irq (V850E_UART_RX_IRQ (port->line)); -+} -+ -+static void v850e_uart_break_ctl (struct uart_port *port, int break_ctl) -+{ -+ /* Umm, do this later. */ -+} -+ -+static int v850e_uart_startup (struct uart_port *port) -+{ -+ int err; -+ -+ /* Alloc RX irq. */ -+ err = request_irq (V850E_UART_RX_IRQ (port->line), v850e_uart_rx_irq, -+ SA_INTERRUPT, "v850e_uart", port); -+ if (err) -+ return err; -+ -+ /* Alloc TX irq. */ -+ err = request_irq (V850E_UART_TX_IRQ (port->line), v850e_uart_tx_irq, -+ SA_INTERRUPT, "v850e_uart", port); -+ if (err) { -+ free_irq (V850E_UART_RX_IRQ (port->line), port); -+ return err; -+ } -+ -+ v850e_uart_start_rx (port); -+ -+ return 0; -+} -+ -+static void v850e_uart_shutdown (struct uart_port *port) -+{ -+ /* Disable port interrupts. */ -+ free_irq (V850E_UART_TX_IRQ (port->line), port); -+ free_irq (V850E_UART_RX_IRQ (port->line), port); -+ -+ /* Turn off xmit/recv enable bits. */ -+ V850E_UART_CONFIG (port->line) -+ &= ~(V850E_UART_CONFIG_TX_ENABLE -+ | V850E_UART_CONFIG_RX_ENABLE); -+ /* Then reset the channel. */ -+ V850E_UART_CONFIG (port->line) = 0; -+} -+ -+static void -+v850e_uart_set_termios (struct uart_port *port, struct termios *termios, -+ struct termios *old) -+{ -+ unsigned cflags = termios->c_cflag; -+ -+ /* Restrict flags to legal values. */ -+ if ((cflags & CSIZE) != CS7 && (cflags & CSIZE) != CS8) -+ /* The new value of CSIZE is invalid, use the old value. */ -+ cflags = (cflags & ~CSIZE) -+ | (old ? (old->c_cflag & CSIZE) : CS8); -+ -+ termios->c_cflag = cflags; -+ -+ v850e_uart_configure (port->line, cflags, -+ uart_get_baud_rate (port, termios, old, -+ v850e_uart_min_baud(), -+ v850e_uart_max_baud())); -+} -+ -+static const char *v850e_uart_type (struct uart_port *port) -+{ -+ return port->type == PORT_V850E_UART ? "v850e_uart" : 0; -+} -+ -+static void v850e_uart_config_port (struct uart_port *port, int flags) -+{ -+ if (flags & UART_CONFIG_TYPE) -+ port->type = PORT_V850E_UART; -+} -+ -+static int -+v850e_uart_verify_port (struct uart_port *port, struct serial_struct *ser) -+{ -+ if (ser->type != PORT_UNKNOWN && ser->type != PORT_V850E_UART) -+ return -EINVAL; -+ if (ser->irq != V850E_UART_TX_IRQ (port->line)) -+ return -EINVAL; -+ return 0; -+} -+ -+static struct uart_ops v850e_uart_ops = { -+ .tx_empty = v850e_uart_tx_empty, -+ .get_mctrl = v850e_uart_get_mctrl, -+ .set_mctrl = v850e_uart_set_mctrl, -+ .start_tx = v850e_uart_start_tx, -+ .stop_tx = v850e_uart_stop_tx, -+ .stop_rx = v850e_uart_stop_rx, -+ .enable_ms = v850e_uart_nop, -+ .break_ctl = v850e_uart_break_ctl, -+ .startup = v850e_uart_startup, -+ .shutdown = v850e_uart_shutdown, -+ .set_termios = v850e_uart_set_termios, -+ .type = v850e_uart_type, -+ .release_port = v850e_uart_nop, -+ .request_port = v850e_uart_success, -+ .config_port = v850e_uart_config_port, -+ .verify_port = v850e_uart_verify_port, -+}; -+ -+/* Initialization and cleanup. */ -+ -+static struct uart_driver v850e_uart_driver = { -+ .owner = THIS_MODULE, -+ .driver_name = "v850e_uart", -+ .devfs_name = "tts/", -+ .dev_name = "ttyS", -+ .major = TTY_MAJOR, -+ .minor = V850E_UART_MINOR_BASE, -+ .nr = V850E_UART_NUM_CHANNELS, -+ .cons = V850E_UART_CONSOLE, -+}; -+ -+ -+static struct uart_port v850e_uart_ports[V850E_UART_NUM_CHANNELS]; -+ -+static int __init v850e_uart_init (void) -+{ -+ int rval; -+ -+ printk (KERN_INFO "%s on-chip UART\n", V850E_UART_CHIP_NAME); -+ -+ rval = uart_register_driver (&v850e_uart_driver); -+ if (rval == 0) { -+ unsigned chan; -+ -+ for (chan = 0; chan < V850E_UART_NUM_CHANNELS; chan++) { -+ struct uart_port *port = &v850e_uart_ports[chan]; -+ -+ memset (port, 0, sizeof *port); -+ -+ port->ops = &v850e_uart_ops; -+ port->line = chan; -+ port->iotype = SERIAL_IO_MEM; -+ port->flags = UPF_BOOT_AUTOCONF; -+ -+ /* We actually use multiple IRQs, but the serial -+ framework seems to mainly use this for -+ informational purposes anyway. Here we use the TX -+ irq. */ -+ port->irq = V850E_UART_TX_IRQ (chan); -+ -+ /* The serial framework doesn't really use these -+ membase/mapbase fields for anything useful, but -+ it requires that they be something non-zero to -+ consider the port `valid', and also uses them -+ for informational purposes. */ -+ port->membase = (void *)V850E_UART_BASE_ADDR (chan); -+ port->mapbase = V850E_UART_BASE_ADDR (chan); -+ -+ /* The framework insists on knowing the uart's master -+ clock freq, though it doesn't seem to do anything -+ useful for us with it. We must make it at least -+ higher than (the maximum baud rate * 16), otherwise -+ the framework will puke during its internal -+ calculations, and force the baud rate to be 9600. -+ To be accurate though, just repeat the calculation -+ we use when actually setting the speed. */ -+ port->uartclk = v850e_uart_max_clock() * 16; -+ -+ uart_add_one_port (&v850e_uart_driver, port); -+ } -+ } -+ -+ return rval; -+} -+ -+static void __exit v850e_uart_exit (void) -+{ -+ unsigned chan; -+ -+ for (chan = 0; chan < V850E_UART_NUM_CHANNELS; chan++) -+ uart_remove_one_port (&v850e_uart_driver, -+ &v850e_uart_ports[chan]); -+ -+ uart_unregister_driver (&v850e_uart_driver); -+} -+ -+module_init (v850e_uart_init); -+module_exit (v850e_uart_exit); -+ -+MODULE_AUTHOR ("Miles Bader"); -+MODULE_DESCRIPTION ("NEC " V850E_UART_CHIP_NAME " on-chip UART"); -+MODULE_LICENSE ("GPL"); ---- linux-2.6.0-test1/drivers/telephony/ixj.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/telephony/ixj.c 2003-07-19 17:03:50.000000000 -0700 -@@ -23,6 +23,7 @@ - * Fixes: David Huggins-Daines, - * Fabio Ferrari, - * Artis Kugevics, -+ * Daniele Bellucci, - * - * More information about the hardware related to this driver can be found - * at our website: http://www.quicknet.net -@@ -45,6 +46,10 @@ static char ixj_c_revision[] = "$Revisio - - /* - * $Log: ixj.c,v $ -+ * -+ * Revision 4.8 2003/07/09 19:39:00 Daniele Bellucci -+ * Audit some copy_*_user and minor cleanup. -+ * - * Revision 4.7 2001/08/13 06:19:33 craigs - * Added additional changes from Alan Cox and John Anderson for - * 2.2 to 2.4 cleanup and bounds checking -@@ -363,12 +368,9 @@ static IXJ ixj[IXJMAX]; - static IXJ *ixj_alloc(void) - { - int cnt; -- for(cnt=0; cntcid_send, (char *)arg, sizeof(PHONE_CID)); -- } -- else { -+ if (copy_from_user(&j->cid_send, (char *)arg, sizeof(PHONE_CID))) { -+ retval = -EFAULT; -+ break; -+ } -+ } else { - memset(&j->cid_send, 0, sizeof(PHONE_CID)); - } - ixj_write_cidcw(j); -@@ -6273,14 +6277,12 @@ static int ixj_ioctl(struct inode *inode - /* Fall through */ - case PHONE_RING_START: - if(arg) { -- if(copy_from_user(&j->cid_send, (char *)arg, sizeof(PHONE_CID))) -- { -+ if (copy_from_user(&j->cid_send, (char *)arg, sizeof(PHONE_CID))) { - retval = -EFAULT; - break; - } - ixj_write_cid(j); -- } -- else { -+ } else { - memset(&j->cid_send, 0, sizeof(PHONE_CID)); - } - ixj_ring_start(j); -@@ -6696,7 +6698,8 @@ static int ixj_ioctl(struct inode *inode - case IXJCTL_SET_FILTER_RAW: - if (copy_from_user(&jfr, (char *) arg, sizeof(jfr))) - retval = -EFAULT; -- retval = ixj_init_filter_raw(j, &jfr); -+ else -+ retval = ixj_init_filter_raw(j, &jfr); - break; - case IXJCTL_GET_FILTER_HIST: - if(arg<0||arg>3) -@@ -6705,8 +6708,10 @@ static int ixj_ioctl(struct inode *inode - retval = j->filter_hist[arg]; - break; - case IXJCTL_INIT_TONE: -- copy_from_user(&ti, (char *) arg, sizeof(ti)); -- retval = ixj_init_tone(j, &ti); -+ if (copy_from_user(&ti, (char *) arg, sizeof(ti))) -+ retval = -EFAULT; -+ else -+ retval = ixj_init_tone(j, &ti); - break; - case IXJCTL_TONE_CADENCE: - retval = ixj_build_cadence(j, (IXJ_CADENCE *) arg); -@@ -6715,8 +6720,10 @@ static int ixj_ioctl(struct inode *inode - retval = ixj_build_filter_cadence(j, (IXJ_FILTER_CADENCE *) arg); - break; - case IXJCTL_SIGCTL: -- if (copy_from_user(&j->sigdef, (char *)arg, sizeof(IXJ_SIGDEF))) -+ if (copy_from_user(&j->sigdef, (char *)arg, sizeof(IXJ_SIGDEF))) { - retval = -EFAULT; -+ break; -+ } - j->ixj_signals[j->sigdef.event] = j->sigdef.signal; - if(j->sigdef.event < 33) { - raise = 1; -@@ -7693,7 +7700,7 @@ MODULE_DESCRIPTION("Quicknet VoIP Teleph - MODULE_AUTHOR("Ed Okerson "); - MODULE_LICENSE("GPL"); - --void ixj_exit(void) -+static void __exit ixj_exit(void) - { - cleanup(); - } -@@ -7852,7 +7859,7 @@ int __init ixj_probe_pci(int *cnt) - return probe; - } - --int __init ixj_init(void) -+static int __init ixj_init(void) - { - int cnt = 0; - int probe = 0; ---- linux-2.6.0-test1/drivers/telephony/Kconfig 2003-06-14 12:18:00.000000000 -0700 -+++ 25/drivers/telephony/Kconfig 2003-07-19 17:03:50.000000000 -0700 -@@ -39,7 +39,7 @@ config PHONE_IXJ - - config PHONE_IXJ_PCMCIA - tristate "QuickNet Internet LineJack/PhoneJack PCMCIA support" -- depends on PHONE_IXJ -+ depends on PHONE_IXJ && PCMCIA - help - Say Y here to configure in PCMCIA service support for the Quicknet - cards manufactured by Quicknet Technologies, Inc. This changes the ---- linux-2.6.0-test1/drivers/usb/class/bluetty.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/class/bluetty.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1320,7 +1320,8 @@ int usb_bluetooth_init(void) - - bluetooth_tty_driver->owner = THIS_MODULE; - bluetooth_tty_driver->driver_name = "usb-bluetooth"; -- bluetooth_tty_driver->name = "usb/ttub/"; -+ bluetooth_tty_driver->name = "ttyUB"; -+ bluetooth_tty_driver->devfs_name = "usb/ttub/"; - bluetooth_tty_driver->major = BLUETOOTH_TTY_MAJOR; - bluetooth_tty_driver->minor_start = 0; - bluetooth_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; ---- linux-2.6.0-test1/drivers/usb/class/cdc-acm.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/class/cdc-acm.c 2003-07-19 17:03:50.000000000 -0700 -@@ -765,7 +765,8 @@ static int __init acm_init(void) - return -ENOMEM; - acm_tty_driver->owner = THIS_MODULE, - acm_tty_driver->driver_name = "acm", -- acm_tty_driver->name = "usb/acm/", -+ acm_tty_driver->name = "ttyACM", -+ acm_tty_driver->devfs_name = "usb/acm/", - acm_tty_driver->major = ACM_TTY_MAJOR, - acm_tty_driver->minor_start = 0, - acm_tty_driver->type = TTY_DRIVER_TYPE_SERIAL, ---- linux-2.6.0-test1/drivers/usb/class/usblp.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/usb/class/usblp.c 2003-07-19 17:03:50.000000000 -0700 -@@ -359,7 +359,6 @@ static int usblp_open(struct inode *inod - file->private_data = usblp; - - usblp->writeurb->transfer_buffer_length = 0; -- usblp->writeurb->status = 0; - usblp->wcomplete = 1; /* we begin writeable */ - usblp->rcomplete = 0; - -@@ -833,22 +832,15 @@ static int usblp_probe(struct usb_interf - init_waitqueue_head(&usblp->wait); - usblp->ifnum = intf->altsetting->desc.bInterfaceNumber; - -- retval = usb_register_dev(intf, &usblp_class); -- if (retval) { -- err("Not able to get a minor for this device."); -- goto abort; -- } -- usblp->minor = intf->minor; -- - usblp->writeurb = usb_alloc_urb(0, GFP_KERNEL); - if (!usblp->writeurb) { - err("out of memory"); -- goto abort_minor; -+ goto abort; - } - usblp->readurb = usb_alloc_urb(0, GFP_KERNEL); - if (!usblp->readurb) { - err("out of memory"); -- goto abort_minor; -+ goto abort; - } - - /* Malloc device ID string buffer to the largest expected length, -@@ -856,7 +848,7 @@ static int usblp_probe(struct usb_interf - * could change in length. */ - if (!(usblp->device_id_string = kmalloc(USBLP_DEVICE_ID_SIZE, GFP_KERNEL))) { - err("out of memory for device_id_string"); -- goto abort_minor; -+ goto abort; - } - - usblp->writebuf = usblp->readbuf = NULL; -@@ -868,19 +860,19 @@ static int usblp_probe(struct usb_interf - if (!(usblp->writebuf = usb_buffer_alloc(dev, USBLP_BUF_SIZE, - GFP_KERNEL, &usblp->writeurb->transfer_dma))) { - err("out of memory for write buf"); -- goto abort_minor; -+ goto abort; - } - if (!(usblp->readbuf = usb_buffer_alloc(dev, USBLP_BUF_SIZE, - GFP_KERNEL, &usblp->readurb->transfer_dma))) { - err("out of memory for read buf"); -- goto abort_minor; -+ goto abort; - } - - /* Allocate buffer for printer status */ - usblp->statusbuf = kmalloc(STATUS_BUF_SIZE, GFP_KERNEL); - if (!usblp->statusbuf) { - err("out of memory for statusbuf"); -- goto abort_minor; -+ goto abort; - } - - /* Lookup quirks for this printer. */ -@@ -894,12 +886,12 @@ static int usblp_probe(struct usb_interf - dbg("incompatible printer-class device 0x%4.4X/0x%4.4X", - dev->descriptor.idVendor, - dev->descriptor.idProduct); -- goto abort_minor; -+ goto abort; - } - - /* Setup the selected alternate setting and endpoints. */ - if (usblp_set_protocol(usblp, protocol) < 0) -- goto abort_minor; -+ goto abort; - - /* Retrieve and store the device ID string. */ - usblp_cache_device_id_string(usblp); -@@ -920,10 +912,17 @@ static int usblp_probe(struct usb_interf - - usblp->present = 1; - -+ retval = usb_register_dev(intf, &usblp_class); -+ if (retval) { -+ err("Not able to get a minor for this device."); -+ goto abort_intfdata; -+ } -+ usblp->minor = intf->minor; -+ - return 0; - --abort_minor: -- usb_deregister_dev(intf, &usblp_class); -+abort_intfdata: -+ usb_set_intfdata (intf, NULL); - abort: - if (usblp) { - if (usblp->writebuf) ---- linux-2.6.0-test1/drivers/usb/core/file.c 2003-06-14 12:18:51.000000000 -0700 -+++ 25/drivers/usb/core/file.c 2003-07-19 17:06:13.000000000 -0700 -@@ -93,7 +93,7 @@ static ssize_t show_dev(struct class_dev - { - struct usb_interface *intf = class_dev_to_usb_interface(class_dev); - dev_t dev = MKDEV(USB_MAJOR, intf->minor); -- return sprintf(buf, "%04x\n", dev); -+ return print_dev_t(buf, dev); - } - static CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, NULL); - ---- linux-2.6.0-test1/drivers/usb/core/hcd.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/core/hcd.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1293,7 +1293,8 @@ rescan: - } - - /* then kill any current requests */ -- spin_lock_irqsave (&hcd_data_lock, flags); -+ local_irq_save (flags); -+ spin_lock (&hcd_data_lock); - list_for_each_entry (urb, &dev->urb_list, urb_list) { - int tmp = urb->pipe; - -@@ -1311,13 +1312,13 @@ rescan: - if (urb->status != -EINPROGRESS) - continue; - usb_get_urb (urb); -- spin_unlock_irqrestore (&hcd_data_lock, flags); -+ spin_unlock (&hcd_data_lock); - -- spin_lock_irqsave (&urb->lock, flags); -+ spin_lock (&urb->lock); - tmp = urb->status; - if (tmp == -EINPROGRESS) - urb->status = -ESHUTDOWN; -- spin_unlock_irqrestore (&urb->lock, flags); -+ spin_unlock (&urb->lock); - - /* kick hcd unless it's already returning this */ - if (tmp == -EINPROGRESS) { -@@ -1340,7 +1341,8 @@ rescan: - /* list contents may have changed */ - goto rescan; - } -- spin_unlock_irqrestore (&hcd_data_lock, flags); -+ spin_unlock (&hcd_data_lock); -+ local_irq_restore (flags); - - /* synchronize with the hardware, so old configuration state - * clears out immediately (and will be freed). ---- linux-2.6.0-test1/drivers/usb/core/hcd-pci.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/core/hcd-pci.c 2003-07-19 17:03:50.000000000 -0700 -@@ -81,7 +81,7 @@ int usb_hcd_pci_probe (struct pci_dev *d - - if (!dev->irq) { - err ("Found HC with no IRQ. Check BIOS/PCI %s setup!", -- dev->slot_name); -+ pci_name(dev)); - return -ENODEV; - } - -@@ -99,7 +99,7 @@ int usb_hcd_pci_probe (struct pci_dev *d - retval = -EFAULT; - clean_1: - release_mem_region (resource, len); -- err ("init %s fail, %d", dev->slot_name, retval); -+ err ("init %s fail, %d", pci_name(dev), retval); - return retval; - } - -@@ -136,7 +136,7 @@ clean_2: - goto clean_1; - } else { - release_region (resource, len); -- err ("init %s fail, %d", dev->slot_name, retval); -+ err ("init %s fail, %d", pci_name(dev), retval); - return retval; - } - } -@@ -144,7 +144,7 @@ clean_2: - hcd->driver = driver; - hcd->description = driver->description; - hcd->pdev = dev; -- hcd->self.bus_name = dev->slot_name; -+ hcd->self.bus_name = pci_name(dev); - hcd->product_desc = dev->dev.name; - hcd->self.controller = &dev->dev; - hcd->controller = hcd->self.controller; -@@ -279,6 +279,7 @@ EXPORT_SYMBOL (usb_hcd_pci_remove); - /** - * usb_hcd_pci_suspend - power management suspend of a PCI-based HCD - * @dev: USB Host Controller being suspended -+ * @state: state that the controller is going into - * - * Store this function in the HCD's struct pci_driver as suspend(). - */ ---- linux-2.6.0-test1/drivers/usb/core/usb.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/core/usb.c 2003-07-19 17:03:50.000000000 -0700 -@@ -80,6 +80,23 @@ static struct device_driver usb_generic_ - - static int usb_generic_driver_data; - -+/* deallocate hcd/hardware state ... and nuke all pending urbs */ -+static void nuke_urbs(struct usb_device *dev) -+{ -+ void (*disable)(struct usb_device *, int); -+ int i; -+ -+ if (!dev || !dev->bus || !dev->bus->op || !dev->bus->op->disable) -+ return; -+ dbg("nuking urbs assigned to %s", dev->dev.bus_id); -+ -+ disable = dev->bus->op->disable; -+ for (i = 0; i < 15; i++) { -+ disable(dev, i); -+ disable(dev, USB_DIR_IN | i); -+ } -+} -+ - /* needs to be called with BKL held */ - int usb_device_probe(struct device *dev) - { -@@ -116,6 +133,9 @@ int usb_device_remove(struct device *dev - - down(&driver->serialize); - -+ /* release all urbs for this device */ -+ nuke_urbs(interface_to_usbdev(intf)); -+ - if (intf->driver && intf->driver->disconnect) - intf->driver->disconnect(intf); - -@@ -896,6 +916,9 @@ void usb_disconnect(struct usb_device ** - usb_disconnect(child); - } - -+ /* deallocate hcd/hardware state ... and nuke all pending urbs */ -+ nuke_urbs(dev); -+ - /* disconnect() drivers from interfaces (a key side effect) */ - dev_dbg (&dev->dev, "unregistering interfaces\n"); - if (dev->actconfig) { -@@ -908,16 +931,6 @@ void usb_disconnect(struct usb_device ** - } - } - -- /* deallocate hcd/hardware state */ -- if (ops->disable) { -- void (*disable)(struct usb_device *, int) = ops->disable; -- -- for (i = 0; i < 15; i++) { -- disable (dev, i); -- disable (dev, USB_DIR_IN | i); -- } -- } -- - dev_dbg (&dev->dev, "unregistering device\n"); - /* Free the device number and remove the /proc/bus/usb entry */ - if (dev->devnum > 0) { ---- linux-2.6.0-test1/drivers/usb/gadget/ether.c 2003-06-14 12:18:35.000000000 -0700 -+++ 25/drivers/usb/gadget/ether.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,5 +1,5 @@ - /* -- * ether.c -- CDC 1.1 Ethernet gadget driver -+ * ether.c -- Ethernet gadget driver, with CDC and non-CDC options - * - * Copyright (C) 2003 David Brownell - * -@@ -58,21 +58,23 @@ - /*-------------------------------------------------------------------------*/ - - /* -- * "Communications Device Class" (CDC) Ethernet class driver -+ * Ethernet gadget driver -- with CDC and non-CDC options - * - * CDC Ethernet is the standard USB solution for sending Ethernet frames - * using USB. Real hardware tends to use the same framing protocol but look - * different for control features. And Microsoft pushes their own approach - * (RNDIS) instead of the standard. -+ * -+ * There's some hardware that can't talk CDC. We make that hardware -+ * implement a "minimalist" vendor-agnostic CDC core: same framing, but -+ * link-level setup only requires activating the configuration. - */ - --#define DRIVER_DESC "CDC Ethernet Gadget" --#define DRIVER_VERSION "29 April 2003" -+#define DRIVER_DESC "Ethernet Gadget" -+#define DRIVER_VERSION "Bastille Day 2003" - - static const char shortname [] = "ether"; - static const char driver_desc [] = DRIVER_DESC; --static const char control_name [] = "Communications Control"; --static const char data_name [] = "CDC Ethernet Data"; - - #define MIN_PACKET sizeof(struct ethhdr) - #define MAX_PACKET ETH_DATA_LEN /* biggest packet we'll rx/tx */ -@@ -92,8 +94,7 @@ struct eth_dev { - const struct usb_endpoint_descriptor - *in, *out, *status; - -- struct semaphore mutex; -- struct net_device net; -+ struct net_device *net; - struct net_device_stats stats; - atomic_t tx_qlen; - -@@ -112,7 +113,7 @@ struct eth_dev { - - static unsigned qmult = 4; - --#define HS_FACTOR 15 -+#define HS_FACTOR 5 - - #define qlen(gadget) \ - (qmult*((gadget->speed == USB_SPEED_HIGH) ? HS_FACTOR : 1)) -@@ -128,7 +129,7 @@ module_param (qmult, uint, S_IRUGO|S_IWU - - /* Thanks to NetChip Technologies for donating this product ID. - * -- * DO NOT REUSE THESE IDs with any other driver!! Ever!! -+ * DO NOT REUSE THESE IDs with a protocol-incompatible driver!! Ever!! - * Instead: allocate your own, using normal USB-IF procedures. - */ - #define DRIVER_VENDOR_NUM 0x0525 /* NetChip */ -@@ -158,6 +159,11 @@ module_param (qmult, uint, S_IRUGO|S_IWU - * for some reason doesn't handle full speed bulk maxpacket of 64. - */ - -+#define DEV_CONFIG_VALUE 3 /* some hardware cares */ -+ -+/* #undef on hardware that can't implement CDC */ -+#define DEV_CONFIG_CDC -+ - /* - * NetChip 2280, PCI based. - * -@@ -172,7 +178,7 @@ module_param (qmult, uint, S_IRUGO|S_IWU - #define DRIVER_VERSION_NUM 0x0101 - #define EP0_MAXPACKET 64 - static const char EP_OUT_NAME [] = "ep-a"; --#define EP_OUT_NUM 2 -+#define EP_OUT_NUM 1 - static const char EP_IN_NAME [] = "ep-b"; - #define EP_IN_NUM 2 - static const char EP_STATUS_NAME [] = "ep-f"; -@@ -194,22 +200,21 @@ static inline void hw_optimize (struct u - #endif - - /* -- * PXA-250 UDC: widely used in second gen Linux-capable PDAs. -+ * PXA-2xx UDC: widely used in second gen Linux-capable ARM PDAs -+ * and other products. - * -- * no limitations except from set_interface: docs say "no" to a third -- * interface. and the interrupt-only endpoints don't toggle, so we'll -- * just use a bulk-capable one instead. -+ * multiple interfaces (or altsettings) aren't usable. so this hardware -+ * can't implement CDC, which needs both capabilities. - */ --#ifdef CONFIG_USB_ETH_PXA250 --#define CHIP "pxa250" -+#ifdef CONFIG_USB_ETH_PXA2XX -+#undef DEV_CONFIG_CDC -+#define CHIP "pxa2xx" - #define DRIVER_VERSION_NUM 0x0103 - #define EP0_MAXPACKET 16 --static const char EP_OUT_NAME [] = "ep12out-bulk"; --#define EP_OUT_NUM 12 --static const char EP_IN_NAME [] = "ep11in-bulk"; --#define EP_IN_NUM 11 --static const char EP_STATUS_NAME [] = "ep6in-bulk"; --#define EP_STATUS_NUM 6 -+static const char EP_OUT_NAME [] = "ep2out-bulk"; -+#define EP_OUT_NUM 2 -+static const char EP_IN_NAME [] = "ep1in-bulk"; -+#define EP_IN_NUM 1 - /* doesn't support bus-powered operation */ - #define SELFPOWER USB_CONFIG_ATT_SELFPOWER - /* supports remote wakeup, but this driver doesn't */ -@@ -247,6 +252,29 @@ static const char EP_IN_NAME [] = "ep2in - # error Configure some USB peripheral controller driver! - #endif - -+/* We normally expect hardware that can talk CDC. That involves -+ * using multiple interfaces and altsettings, and maybe a status -+ * interrupt. Driver binding to be done according to USB-IF class, -+ * though you can use different VENDOR and PRODUCT numbers if you -+ * want (and they're officially assigned). -+ * -+ * For hardware that can't talk CDC, we use the same vendor ID that -+ * ARM Linux has used for ethernet-over-usb, both with sa1100 and -+ * with pxa250. We're protocol-compatible, if the host-side drivers -+ * use the endpoint descriptors. DRIVER_VERSION_NUM is nonzero, so -+ * drivers that need to hard-wire endpoint numbers have a hook. -+ */ -+#ifdef DEV_CONFIG_CDC -+#define DEV_CONFIG_CLASS USB_CLASS_COMM -+#else -+#define DEV_CONFIG_CLASS USB_CLASS_VENDOR_SPEC -+#undef EP_STATUS_NUM -+#undef DRIVER_VENDOR_NUM -+#undef DRIVER_PRODUCT_NUM -+#define DRIVER_VENDOR_NUM 0x049f -+#define DRIVER_PRODUCT_NUM 0x505a -+#endif /* CONFIG_CDC_ETHER */ -+ - /* power usage is config specific. - * hardware that supports remote wakeup defaults to disabling it. - */ -@@ -274,7 +302,8 @@ static const char EP_IN_NAME [] = "ep2in - /*-------------------------------------------------------------------------*/ - - #define xprintk(d,level,fmt,args...) \ -- dev_printk(level , &(d)->gadget->dev , fmt , ## args) -+ printk(level "%s %s: " fmt , shortname , (d)->gadget->dev.bus_id , \ -+ ## args) - - #ifdef DEBUG - #undef DEBUG -@@ -309,7 +338,7 @@ static const char EP_IN_NAME [] = "ep2in - /* - * DESCRIPTORS ... most are static, but strings and (full) configuration - * descriptors are built on demand. Notice how most of the cdc descriptors -- * add no value to simple (typical) configurations. -+ * aren't needed in the "minimalist" mode. - */ - - #define STRING_MANUFACTURER 1 -@@ -323,15 +352,14 @@ static const char EP_IN_NAME [] = "ep2in - /* - * This device advertises one configuration. - */ --#define CONFIG_CDC_ETHER 3 -- - static const struct usb_device_descriptor - device_desc = { - .bLength = sizeof device_desc, - .bDescriptorType = USB_DT_DEVICE, - - .bcdUSB = __constant_cpu_to_le16 (0x0200), -- .bDeviceClass = USB_CLASS_COMM, -+ -+ .bDeviceClass = DEV_CONFIG_CLASS, - .bDeviceSubClass = 0, - .bDeviceProtocol = 0, - .bMaxPacketSize0 = EP0_MAXPACKET, -@@ -350,13 +378,26 @@ eth_config = { - .bDescriptorType = USB_DT_CONFIG, - - /* compute wTotalLength on the fly */ -+#ifdef DEV_CONFIG_CDC - .bNumInterfaces = 2, -- .bConfigurationValue = CONFIG_CDC_ETHER, -+#else -+ .bNumInterfaces = 1, -+#endif -+ .bConfigurationValue = DEV_CONFIG_VALUE, - .iConfiguration = STRING_PRODUCT, - .bmAttributes = USB_CONFIG_ATT_ONE | SELFPOWER | WAKEUP, - .bMaxPower = (MAX_USB_POWER + 1) / 2, - }; - -+#ifdef DEV_CONFIG_CDC -+ -+/* -+ * Compared to the "minimalist" non-CDC model, the CDC model adds -+ * three class descriptors, two interface descrioptors, and a status -+ * endpoint. Both have a "data" interface and two bulk endpoints. -+ * There are also differences in how control requests are handled. -+ */ -+ - /* master comm interface optionally has a status notification endpoint */ - - static const struct usb_interface_descriptor -@@ -446,7 +487,7 @@ static const struct ether_desc ether_des - * some drivers (like current Linux cdc-ether!) "need" it to exist even - * if they ignore the connect/disconnect notifications that real aether - * can provide. more advanced cdc configurations might want to support -- * encapsulated commands. -+ * encapsulated commands (vendor-specific, using control-OUT). - */ - - #define LOG2_STATUS_INTERVAL_MSEC 6 -@@ -494,6 +535,29 @@ data_intf = { - .bInterfaceProtocol = 0, - .iInterface = STRING_DATA, - }; -+#else -+ -+/* -+ * "Minimalist" non-CDC option is a simple vendor-neutral model that most -+ * full speed controllers can handle: one interface, two bulk endpoints. -+ */ -+ -+static const struct usb_interface_descriptor -+data_intf = { -+ .bLength = sizeof data_intf, -+ .bDescriptorType = USB_DT_INTERFACE, -+ -+ .bInterfaceNumber = 0, -+ .bAlternateSetting = 0, -+ .bNumEndpoints = 2, -+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC, -+ .bInterfaceSubClass = 0, -+ .bInterfaceProtocol = 0, -+ .iInterface = STRING_DATA, -+}; -+ -+#endif /* DEV_CONFIG_CDC */ -+ - - static const struct usb_endpoint_descriptor - fs_source_desc = { -@@ -563,12 +627,12 @@ dev_qualifier = { - .bDescriptorType = USB_DT_DEVICE_QUALIFIER, - - .bcdUSB = __constant_cpu_to_le16 (0x0200), -- .bDeviceClass = USB_CLASS_VENDOR_SPEC, -+ .bDeviceClass = DEV_CONFIG_CLASS, - - /* assumes ep0 uses the same value for both speeds ... */ - .bMaxPacketSize0 = EP0_MAXPACKET, - -- .bNumConfigurations = 2, -+ .bNumConfigurations = 1, - }; - - /* maxpacket and other transfer characteristics vary by speed. */ -@@ -581,16 +645,24 @@ dev_qualifier = { - - #endif /* !HIGHSPEED */ - -+/*-------------------------------------------------------------------------*/ -+ -+/* descriptors that are built on-demand */ -+ -+#ifdef DEV_CONFIG_CDC - /* address that the host will use ... usually assigned at random */ - static char ethaddr [2 * ETH_ALEN + 1]; -+#endif - - /* static strings, in iso 8859/1 */ - static struct usb_string strings [] = { - { STRING_MANUFACTURER, UTS_SYSNAME " " UTS_RELEASE "/" CHIP, }, - { STRING_PRODUCT, driver_desc, }, -+#ifdef DEV_CONFIG_CDC - { STRING_ETHADDR, ethaddr, }, -- { STRING_CONTROL, control_name, }, -- { STRING_DATA, data_name, }, -+ { STRING_CONTROL, "CDC Communications Control", }, -+#endif -+ { STRING_DATA, "Ethernet Data", }, - { } /* end of list */ - }; - -@@ -607,14 +679,18 @@ static int - config_buf (enum usb_device_speed speed, u8 *buf, u8 type, unsigned index) - { - const unsigned config_len = USB_DT_CONFIG_SIZE -- + 3 * USB_DT_INTERFACE_SIZE -+#ifdef DEV_CONFIG_CDC -+ + 2 * USB_DT_INTERFACE_SIZE - + sizeof header_desc - + sizeof union_desc - + sizeof ether_desc - #ifdef EP_STATUS_NUM - + USB_DT_ENDPOINT_SIZE - #endif -+#endif /* DEV_CONFIG_CDC */ -+ + USB_DT_INTERFACE_SIZE - + 2 * USB_DT_ENDPOINT_SIZE; -+ - #ifdef HIGHSPEED - int hs; - #endif -@@ -636,6 +712,7 @@ config_buf (enum usb_device_speed speed, - hs = !hs; - #endif - -+#ifdef DEV_CONFIG_CDC - /* control interface, class descriptors, optional status endpoint */ - memcpy (buf, &control_intf, USB_DT_INTERFACE_SIZE); - buf += USB_DT_INTERFACE_SIZE; -@@ -660,6 +737,7 @@ config_buf (enum usb_device_speed speed, - /* default data altsetting has no endpoints */ - memcpy (buf, &data_nop_intf, USB_DT_INTERFACE_SIZE); - buf += USB_DT_INTERFACE_SIZE; -+#endif /* DEV_CONFIG_CDC */ - - /* the "real" data interface has two endpoints */ - memcpy (buf, &data_intf, USB_DT_INTERFACE_SIZE); -@@ -684,6 +762,8 @@ config_buf (enum usb_device_speed speed, - - /*-------------------------------------------------------------------------*/ - -+static void eth_start (struct eth_dev *dev, int gfp_flags); -+ - static int - set_ether_config (struct eth_dev *dev, int gfp_flags) - { -@@ -694,7 +774,8 @@ set_ether_config (struct eth_dev *dev, i - gadget_for_each_ep (ep, gadget) { - const struct usb_endpoint_descriptor *d; - -- /* NOTE: the host isn't allowed to use these two data -+#ifdef DEV_CONFIG_CDC -+ /* With CDC, the host isn't allowed to use these two data - * endpoints in the default altsetting for the interface. - * so we don't activate them yet. - */ -@@ -714,10 +795,11 @@ set_ether_config (struct eth_dev *dev, i - dev->out_ep = ep; - dev->out = d; - continue; -+ } - - #ifdef EP_STATUS_NUM - /* optional status/notification endpoint */ -- } else if (strcmp (ep->name, EP_STATUS_NAME) == 0) { -+ else if (strcmp (ep->name, EP_STATUS_NAME) == 0) { - d = ep_desc (gadget, &hs_status_desc, &fs_status_desc); - result = usb_ep_enable (ep, d); - if (result == 0) { -@@ -726,16 +808,57 @@ set_ether_config (struct eth_dev *dev, i - dev->status = d; - continue; - } -+ } - #endif - -+#else /* !CONFIG_CDC_ETHER */ -+ -+ /* non-CDC is simpler: if the device is there, -+ * it's live with rx and tx endpoints. -+ */ -+ /* one endpoint writes data back IN to the host */ -+ if (strcmp (ep->name, EP_IN_NAME) == 0) { -+ d = ep_desc (gadget, &hs_source_desc, &fs_source_desc); -+ result = usb_ep_enable (ep, d); -+ if (result == 0) { -+ ep->driver_data = dev; -+ dev->in_ep = ep; -+ dev->in = d; -+ continue; -+ } -+ -+ /* one endpoint just reads OUT packets */ -+ } else if (strcmp (ep->name, EP_OUT_NAME) == 0) { -+ d = ep_desc (gadget, &hs_sink_desc, &fs_sink_desc); -+ result = usb_ep_enable (ep, d); -+ if (result == 0) { -+ ep->driver_data = dev; -+ dev->out_ep = ep; -+ dev->out = d; -+ continue; -+ } -+ } -+ -+#endif /* !CONFIG_CDC_ETHER */ -+ - /* ignore any other endpoints */ -- } else -+ else - continue; - - /* stop on error */ - ERROR (dev, "can't enable %s, result %d\n", ep->name, result); - break; - } -+ if (!result && (!dev->in_ep || !dev->out_ep)) -+ result = -ENODEV; -+ -+#ifndef DEV_CONFIG_CDC -+ if (result == 0) { -+ netif_carrier_on (dev->net); -+ if (netif_running (dev->net)) -+ eth_start (dev, GFP_ATOMIC); -+ } -+#endif /* !CONFIG_CDC_ETHER */ - - if (result == 0) - DEBUG (dev, "qlen %d\n", qlen (gadget)); -@@ -751,8 +874,8 @@ static void eth_reset_config (struct eth - - DEBUG (dev, "%s\n", __FUNCTION__); - -- netif_stop_queue (&dev->net); -- netif_carrier_off (&dev->net); -+ netif_stop_queue (dev->net); -+ netif_carrier_off (dev->net); - - /* just disable endpoints, forcing completion of pending i/o. - * all our completion handlers free their requests in this case. -@@ -797,7 +920,7 @@ eth_set_config (struct eth_dev *dev, uns - hw_optimize (gadget); - - switch (number) { -- case CONFIG_CDC_ETHER: -+ case DEV_CONFIG_VALUE: - result = set_ether_config (dev, gfp_flags); - break; - default: -@@ -807,8 +930,6 @@ eth_set_config (struct eth_dev *dev, uns - return result; - } - -- if (!result && (!dev->in_ep || !dev->out_ep)) -- result = -ENODEV; - if (result) - eth_reset_config (dev); - else { -@@ -896,6 +1017,7 @@ static void issue_start_status (struct e - * FIXME ugly idiom, maybe we'd be better with just - * a "cancel the whole queue" primitive since any - * unlink-one primitive has way too many error modes. -+ * here, we "know" toggle is already clear... - */ - usb_ep_disable (dev->status_ep); - usb_ep_enable (dev->status_ep, dev->status); -@@ -953,8 +1075,6 @@ static void eth_setup_complete (struct u - */ - #define CDC_SET_ETHERNET_PACKET_FILTER 0x43 /* required */ - --static void eth_start (struct eth_dev *dev, int gfp_flags); -- - /* - * The setup() callback implements all the ep0 functionality that's not - * handled lower down. CDC has a number of less-common features: -@@ -1018,6 +1138,17 @@ eth_setup (struct usb_gadget *gadget, co - value = eth_set_config (dev, ctrl->wValue, GFP_ATOMIC); - spin_unlock (&dev->lock); - break; -+#ifdef CONFIG_USB_ETH_PXA2XX -+ /* PXA UDC prevents us from using SET_INTERFACE in normal ways. -+ * And it hides GET_CONFIGURATION and GET_INTERFACE too. -+ */ -+ case USB_REQ_SET_INTERFACE: -+ spin_lock (&dev->lock); -+ value = eth_set_config (dev, DEV_CONFIG_VALUE, GFP_ATOMIC); -+ spin_unlock (&dev->lock); -+ break; -+ -+#else /* hardware that that stays out of our way */ - case USB_REQ_GET_CONFIGURATION: - if (ctrl->bRequestType != USB_DIR_IN) - break; -@@ -1056,15 +1187,15 @@ eth_setup (struct usb_gadget *gadget, co - if (ctrl->wValue == 1) { - usb_ep_enable (dev->in_ep, dev->in); - usb_ep_enable (dev->out_ep, dev->out); -- netif_carrier_on (&dev->net); -+ netif_carrier_on (dev->net); - #ifdef EP_STATUS_NUM - issue_start_status (dev); - #endif -- if (netif_running (&dev->net)) -+ if (netif_running (dev->net)) - eth_start (dev, GFP_ATOMIC); - } else { -- netif_stop_queue (&dev->net); -- netif_carrier_off (&dev->net); -+ netif_stop_queue (dev->net); -+ netif_carrier_off (dev->net); - } - value = 0; - break; -@@ -1079,12 +1210,14 @@ eth_setup (struct usb_gadget *gadget, co - - /* if carrier is on, data interface is active. */ - *(u8 *)req->buf = -- ((ctrl->wIndex == 1) && netif_carrier_ok (&dev->net)) -+ ((ctrl->wIndex == 1) && netif_carrier_ok (dev->net)) - ? 1 - : 0, - value = min (ctrl->wLength, (u16) 1); - break; -+#endif - -+#ifdef DEV_CONFIG_CDC - case CDC_SET_ETHERNET_PACKET_FILTER: - /* see 6.2.30: no data, wIndex = interface, - * wValue = packet filter bitmap -@@ -1099,6 +1232,7 @@ eth_setup (struct usb_gadget *gadget, co - */ - value = 0; - break; -+#endif /* DEV_CONFIG_CDC */ - - default: - VDEBUG (dev, -@@ -1129,8 +1263,8 @@ eth_disconnect (struct usb_gadget *gadge - unsigned long flags; - - spin_lock_irqsave (&dev->lock, flags); -- netif_stop_queue (&dev->net); -- netif_carrier_off (&dev->net); -+ netif_stop_queue (dev->net); -+ netif_carrier_off (dev->net); - eth_reset_config (dev); - spin_unlock_irqrestore (&dev->lock, flags); - -@@ -1175,10 +1309,10 @@ static int eth_ethtool_ioctl (struct net - - memset (&info, 0, sizeof info); - info.cmd = ETHTOOL_GDRVINFO; -- strncpy (info.driver, shortname, sizeof info.driver); -- strncpy (info.version, DRIVER_VERSION, sizeof info.version); -- strncpy (info.fw_version, CHIP, sizeof info.fw_version); -- strncpy (info.bus_info, dev->gadget->dev.bus_id, -+ strlcpy (info.driver, shortname, sizeof info.driver); -+ strlcpy (info.version, DRIVER_VERSION, sizeof info.version); -+ strlcpy (info.fw_version, CHIP, sizeof info.fw_version); -+ strlcpy (info.bus_info, dev->gadget->dev.bus_id, - sizeof info.bus_info); - if (copy_to_user (useraddr, &info, sizeof (info))) - return -EFAULT; -@@ -1227,7 +1361,7 @@ rx_submit (struct eth_dev *dev, struct u - int retval = 0; - size_t size; - -- size = (sizeof (struct ethhdr) + dev->net.mtu + RX_EXTRA); -+ size = (sizeof (struct ethhdr) + dev->net->mtu + RX_EXTRA); - - if ((skb = alloc_skb (size, gfp_flags)) == 0) { - DEBUG (dev, "no rx skb\n"); -@@ -1241,16 +1375,9 @@ rx_submit (struct eth_dev *dev, struct u - req->complete = rx_complete; - req->context = skb; - -- if (netif_running (&dev->net)) { -- retval = usb_ep_queue (dev->out_ep, req, gfp_flags); -- if (retval == -ENOMEM) -- defer_kevent (dev, WORK_RX_MEMORY); -- if (retval) -- DEBUG (dev, "%s %d\n", __FUNCTION__, retval); -- } else { -- DEBUG (dev, "%s stopped\n", __FUNCTION__); -- retval = -ENOLINK; -- } -+ retval = usb_ep_queue (dev->out_ep, req, gfp_flags); -+ if (retval == -ENOMEM) -+ defer_kevent (dev, WORK_RX_MEMORY); - if (retval) { - DEBUG (dev, "rx submit --> %d\n", retval); - dev_kfree_skb_any (skb); -@@ -1278,8 +1405,8 @@ static void rx_complete (struct usb_ep * - break; - } - -- skb->dev = &dev->net; -- skb->protocol = eth_type_trans (skb, &dev->net); -+ skb->dev = dev->net; -+ skb->protocol = eth_type_trans (skb, dev->net); - dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; - -@@ -1294,9 +1421,7 @@ static void rx_complete (struct usb_ep * - case -ECONNRESET: // unlink - case -ESHUTDOWN: // disconnect etc - VDEBUG (dev, "rx shutdown, code %d\n", status); -- usb_ep_free_request (dev->out_ep, req); -- req = 0; -- break; -+ goto clean; - - /* data overrun */ - case -EOVERFLOW: -@@ -1311,7 +1436,11 @@ static void rx_complete (struct usb_ep * - - if (skb) - dev_kfree_skb_any (skb); -- -+ if (!netif_running (dev->net)) { -+clean: -+ usb_ep_free_request (dev->out_ep, req); -+ req = 0; -+ } - if (req) - rx_submit (dev, req, GFP_ATOMIC); - } -@@ -1323,7 +1452,7 @@ static void eth_work (void *_dev) - if (test_bit (WORK_RX_MEMORY, &dev->todo)) { - struct usb_request *req = 0; - -- if (netif_running (&dev->net)) -+ if (netif_running (dev->net)) - req = usb_ep_alloc_request (dev->in_ep, GFP_KERNEL); - else - clear_bit (WORK_RX_MEMORY, &dev->todo); -@@ -1342,18 +1471,25 @@ static void tx_complete (struct usb_ep * - struct sk_buff *skb = req->context; - struct eth_dev *dev = ep->driver_data; - -- if (req->status) -+ switch (req->status) { -+ default: - dev->stats.tx_errors++; -- else -+ VDEBUG (dev, "tx err %d\n", req->status); -+ /* FALLTHROUGH */ -+ case -ECONNRESET: // unlink -+ case -ESHUTDOWN: // disconnect etc -+ break; -+ case 0: - dev->stats.tx_bytes += skb->len; -+ } - dev->stats.tx_packets++; - - usb_ep_free_request (ep, req); - dev_kfree_skb_any (skb); - - atomic_inc (&dev->tx_qlen); -- if (netif_carrier_ok (&dev->net)) -- netif_wake_queue (&dev->net); -+ if (netif_carrier_ok (dev->net)) -+ netif_wake_queue (dev->net); - } - - static int eth_start_xmit (struct sk_buff *skb, struct net_device *net) -@@ -1437,7 +1573,7 @@ static void eth_start (struct eth_dev *d - - /* and open the tx floodgates */ - atomic_set (&dev->tx_qlen, size); -- netif_wake_queue (&dev->net); -+ netif_wake_queue (dev->net); - } - - static int eth_open (struct net_device *net) -@@ -1445,10 +1581,8 @@ static int eth_open (struct net_device * - struct eth_dev *dev = (struct eth_dev *) net->priv; - - DEBUG (dev, "%s\n", __FUNCTION__); -- down (&dev->mutex); -- if (netif_carrier_ok (&dev->net)) -+ if (netif_carrier_ok (dev->net)) - eth_start (dev, GFP_KERNEL); -- up (&dev->mutex); - return 0; - } - -@@ -1457,7 +1591,6 @@ static int eth_stop (struct net_device * - struct eth_dev *dev = (struct eth_dev *) net->priv; - - DEBUG (dev, "%s\n", __FUNCTION__); -- down (&dev->mutex); - netif_stop_queue (net); - - DEBUG (dev, "stop stats: rx/tx %ld/%ld, errs %ld/%ld\n", -@@ -1469,7 +1602,7 @@ static int eth_stop (struct net_device * - if (dev->gadget->speed != USB_SPEED_UNKNOWN) { - usb_ep_disable (dev->in_ep); - usb_ep_disable (dev->out_ep); -- if (netif_carrier_ok (&dev->net)) { -+ if (netif_carrier_ok (dev->net)) { - DEBUG (dev, "host still using in/out endpoints\n"); - usb_ep_enable (dev->in_ep, dev->in); - usb_ep_enable (dev->out_ep, dev->out); -@@ -1480,7 +1613,6 @@ static int eth_stop (struct net_device * - #endif - } - -- up (&dev->mutex); - return 0; - } - -@@ -1492,7 +1624,6 @@ eth_unbind (struct usb_gadget *gadget) - struct eth_dev *dev = get_gadget_data (gadget); - - DEBUG (dev, "unbind\n"); -- down (&dev->mutex); - - /* we've already been disconnected ... no i/o is active */ - if (dev->req) { -@@ -1500,15 +1631,13 @@ eth_unbind (struct usb_gadget *gadget) - dev->req->buf, dev->req->dma, - USB_BUFSIZ); - usb_ep_free_request (gadget->ep0, dev->req); -+ dev->req = 0; - } - -- unregister_netdev (&dev->net); -- up (&dev->mutex); -+ unregister_netdev (dev->net); - - /* assuming we used keventd, it must quiesce too */ - flush_scheduled_work (); -- -- kfree (dev); - set_gadget_data (gadget, 0); - } - -@@ -1517,22 +1646,24 @@ eth_bind (struct usb_gadget *gadget) - { - struct eth_dev *dev; - struct net_device *net; -+ int status = -ENOMEM; -+#ifdef DEV_CONFIG_CDC - u8 node_id [ETH_ALEN]; - - /* just one upstream link at a time */ - if (ethaddr [0] != 0) - return -ENODEV; -+#endif - -- dev = kmalloc (sizeof *dev, SLAB_KERNEL); -- if (!dev) -- return -ENOMEM; -- memset (dev, 0, sizeof *dev); -+ net = alloc_etherdev (sizeof *dev); -+ if (!net) -+ return status; -+ dev = net->priv; - spin_lock_init (&dev->lock); -- init_MUTEX_LOCKED (&dev->mutex); - INIT_WORK (&dev->work, eth_work, dev); - - /* network device setup */ -- net = &dev->net; -+ dev->net = net; - SET_MODULE_OWNER (net); - net->priv = dev; - strcpy (net->name, "usb%d"); -@@ -1545,6 +1676,7 @@ eth_bind (struct usb_gadget *gadget) - net->dev_addr [0] &= 0xfe; // clear multicast bit - net->dev_addr [0] |= 0x02; // set local assignment bit (IEEE802) - -+#ifdef DEV_CONFIG_CDC - /* ... another address for the host, on the other end of the - * link, gets exported through CDC (see CDC spec table 41) - */ -@@ -1554,6 +1686,7 @@ eth_bind (struct usb_gadget *gadget) - snprintf (ethaddr, sizeof ethaddr, "%02X%02X%02X%02X%02X%02X", - node_id [0], node_id [1], node_id [2], - node_id [3], node_id [4], node_id [5]); -+#endif - - net->change_mtu = eth_change_mtu; - net->get_stats = eth_get_stats; -@@ -1567,36 +1700,38 @@ eth_bind (struct usb_gadget *gadget) - /* preallocate control response and buffer */ - dev->req = usb_ep_alloc_request (gadget->ep0, GFP_KERNEL); - if (!dev->req) -- goto enomem; -+ goto fail; - dev->req->complete = eth_setup_complete; - dev->req->buf = usb_ep_alloc_buffer (gadget->ep0, USB_BUFSIZ, - &dev->req->dma, GFP_KERNEL); - if (!dev->req->buf) { - usb_ep_free_request (gadget->ep0, dev->req); -- goto enomem; -+ goto fail; - } - - /* finish hookup to lower layer ... */ - dev->gadget = gadget; - set_gadget_data (gadget, dev); - gadget->ep0->driver_data = dev; -- -+ INFO (dev, "%s, " CHIP ", version: " DRIVER_VERSION "\n", driver_desc); -+#ifdef DEV_CONFIG_CDC -+ INFO (dev, "CDC host enet %s\n", ethaddr); -+#endif -+ - /* two kinds of host-initiated state changes: - * - iff DATA transfer is active, carrier is "on" - * - tx queueing enabled if open *and* carrier is "on" - */ -- INFO (dev, "%s, host enet %s, version: " DRIVER_VERSION "\n", -- driver_desc, ethaddr); -- register_netdev (&dev->net); -- netif_stop_queue (&dev->net); -- netif_carrier_off (&dev->net); -- -- up (&dev->mutex); -- return 0; -+ netif_stop_queue (dev->net); -+ netif_carrier_off (dev->net); - --enomem: -+ // SET_NETDEV_DEV (dev->net, &gadget->dev); -+ status = register_netdev (dev->net); -+ if (status == 0) -+ return status; -+fail: - eth_unbind (gadget); -- return -ENOMEM; -+ return status; - } - - /*-------------------------------------------------------------------------*/ ---- linux-2.6.0-test1/drivers/usb/gadget/net2280.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/gadget/net2280.c 2003-07-19 17:03:50.000000000 -0700 -@@ -2496,7 +2496,7 @@ static void net2280_remove (struct pci_d - device_remove_file (&pdev->dev, &dev_attr_registers); - pci_set_drvdata (pdev, 0); - -- INFO (dev, "unbind from pci %s\n", pdev->slot_name); -+ INFO (dev, "unbind from pci %s\n", pci_name(pdev)); - - kfree (dev); - the_controller = 0; -@@ -2518,7 +2518,7 @@ static int net2280_probe (struct pci_dev - * usb_gadget_driver_{register,unregister}() must change. - */ - if (the_controller) { -- WARN (the_controller, "ignoring %s\n", pdev->slot_name); -+ WARN (the_controller, "ignoring %s\n", pci_name(pdev)); - return -EBUSY; - } - -@@ -2534,7 +2534,7 @@ static int net2280_probe (struct pci_dev - dev->pdev = pdev; - dev->gadget.ops = &net2280_ops; - -- strcpy (dev->gadget.dev.bus_id, pdev->slot_name); -+ strcpy (dev->gadget.dev.bus_id, pci_name(pdev)); - strcpy (dev->gadget.dev.name, pdev->dev.name); - dev->gadget.dev.parent = &pdev->dev; - dev->gadget.dev.dma_mask = pdev->dev.dma_mask; ---- linux-2.6.0-test1/drivers/usb/gadget/net2280.h 2003-06-14 12:18:29.000000000 -0700 -+++ 25/drivers/usb/gadget/net2280.h 2003-07-19 17:03:50.000000000 -0700 -@@ -654,7 +654,7 @@ static inline void net2280_led_shutdown - - #define xprintk(dev,level,fmt,args...) \ - printk(level "%s %s: " fmt , driver_name , \ -- dev->pdev->slot_name , ## args) -+ pci_name(dev->pdev) , ## args) - - #ifdef DEBUG - #undef DEBUG ---- linux-2.6.0-test1/drivers/usb/gadget/zero.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/usb/gadget/zero.c 2003-07-19 17:03:50.000000000 -0700 -@@ -92,7 +92,7 @@ - - /*-------------------------------------------------------------------------*/ - --#define DRIVER_VERSION "19 Feb 2003" -+#define DRIVER_VERSION "Bastille Day 2003" - - static const char shortname [] = "zero"; - static const char longname [] = "Gadget Zero"; -@@ -160,18 +160,18 @@ static inline void hw_optimize (struct u - #endif - - /* -- * PXA-250 UDC: widely used in second gen Linux-capable PDAs. -+ * PXA-2xx UDC: widely used in second gen Linux-capable PDAs. - * - * This has fifteen fixed-function full speed endpoints, and it - * can support all USB transfer types. - * -- * It only supports three configurations (numbered 1, 2, or 3) -- * with two interfaces each ... there's partial hardware support -- * for set_configuration and set_interface, preventing some more -- * interesting config/interface/endpoint arrangements. -+ * These supports three or four configurations, with fixed numbers. -+ * The hardware interprets SET_INTERFACE, net effect is that you -+ * can't use altsettings or reset the interfaces independently. -+ * So stick to a single interface. - */ --#ifdef CONFIG_USB_ZERO_PXA250 --#define CHIP "pxa250" -+#ifdef CONFIG_USB_ZERO_PXA2XX -+#define CHIP "pxa2xx" - #define DRIVER_VERSION_NUM 0x0103 - #define EP0_MAXPACKET 16 - static const char EP_OUT_NAME [] = "ep12out-bulk"; -@@ -291,9 +291,12 @@ struct zero_dev { - - static unsigned buflen = 4096; - static unsigned qlen = 32; -+static unsigned pattern = 0; - - module_param (buflen, uint, S_IRUGO|S_IWUSR); - module_param (qlen, uint, S_IRUGO|S_IWUSR); -+module_param (pattern, uint, S_IRUGO|S_IWUSR); -+ - - /* - * Normally the "loopback" configuration is second (index 1) so -@@ -497,8 +500,8 @@ static struct usb_gadget_strings stringt - - /* - * config descriptors are also handcrafted. these must agree with code -- * that sets configurations, and with code managing interface altsettings. -- * other complexity may come from: -+ * that sets configurations, and with code managing interfaces and their -+ * altsettings. other complexity may come from: - * - * - high speed support, including "other speed config" rules - * - multiple configurations -@@ -506,7 +509,7 @@ static struct usb_gadget_strings stringt - * - embedded class or vendor-specific descriptors - * - * this handles high speed, and has a second config that could as easily -- * have been an alternate interface setting. -+ * have been an alternate interface setting (on most hardware). - * - * NOTE: to demonstrate (and test) more USB capabilities, this driver - * should include an altsetting to test interrupt transfers, including -@@ -608,16 +611,29 @@ check_read_data ( - struct usb_request *req - ) - { -- int i; -+ unsigned i; -+ u8 *buf = req->buf; - -- for (i = 0; i < req->actual; i++) { -- if (((u8 *)req->buf) [i] != 0) { -- ERROR (dev, "nonzero OUT byte from host, " -- "buf [%d] = %d\n", -- i, ((u8 *)req->buf) [i]); -- usb_ep_set_halt (ep); -- return -EINVAL; -+ for (i = 0; i < req->actual; i++, buf++) { -+ switch (pattern) { -+ /* all-zeroes has no synchronization issues */ -+ case 0: -+ if (*buf == 0) -+ continue; -+ break; -+ /* mod63 stays in sync with short-terminated transfers, -+ * or otherwise when host and gadget agree on how large -+ * each usb transfer request should be. resync is done -+ * with set_interface or set_config. -+ */ -+ case 1: -+ if (*buf == (u8)(i % 63)) -+ continue; -+ break; - } -+ ERROR (dev, "bad OUT byte, buf [%d] = %d\n", i, *buf); -+ usb_ep_set_halt (ep); -+ return -EINVAL; - } - return 0; - } -@@ -629,7 +645,18 @@ reinit_write_data ( - struct usb_request *req - ) - { -- memset (req->buf, 0, req->length); -+ unsigned i; -+ u8 *buf = req->buf; -+ -+ switch (pattern) { -+ case 0: -+ memset (req->buf, 0, req->length); -+ break; -+ case 1: -+ for (i = 0; i < req->length; i++) -+ *buf++ = (u8) (i % 63); -+ break; -+ } - } - - /* if there is only one request in the queue, there'll always be an -@@ -651,10 +678,13 @@ static void source_sink_complete (struct - break; - - /* this endpoint is normally active while we're configured */ -+ case -ECONNABORTED: /* hardware forced ep reset */ - case -ECONNRESET: /* request dequeued */ - case -ESHUTDOWN: /* disconnect from host */ - VDEBUG (dev, "%s gone (%d), %d/%d\n", ep->name, status, - req->actual, req->length); -+ if (ep == dev->out_ep) -+ check_read_data (dev, ep, req); - free_ep_req (ep, req); - return; - -@@ -693,6 +723,9 @@ source_sink_start_ep (struct usb_ep *ep, - memset (req->buf, 0, req->length); - req->complete = source_sink_complete; - -+ if (strcmp (ep->name, EP_IN_NAME) == 0) -+ reinit_write_data (ep->driver_data, ep, req); -+ - status = usb_ep_queue (ep, req, gfp_flags); - if (status) { - struct zero_dev *dev = ep->driver_data; -@@ -801,6 +834,8 @@ static void loopback_complete (struct us - * rely on the hardware driver to clean up on disconnect or - * endpoint disable. - */ -+ case -ECONNABORTED: /* hardware forced ep reset */ -+ case -ECONNRESET: /* request dequeued */ - case -ESHUTDOWN: /* disconnect from host */ - free_ep_req (ep, req); - return; -@@ -905,7 +940,7 @@ static void zero_reset_config (struct ze - * - * note that some device controller hardware will constrain what this - * code can do, perhaps by disallowing more than one configuration or -- * by limiting configuration choices (like the pxa250). -+ * by limiting configuration choices (like the pxa2xx). - */ - static int - zero_set_config (struct zero_dev *dev, unsigned number, int gfp_flags) -@@ -1046,7 +1081,8 @@ zero_setup (struct usb_gadget *gadget, c - break; - - /* until we add altsetting support, or other interfaces, -- * only 0/0 are possible. -+ * only 0/0 are possible. pxa2xx only supports 0/0 (poorly) -+ * and already killed pending endpoint I/O. - */ - case USB_REQ_SET_INTERFACE: - if (ctrl->bRequestType != USB_RECIP_INTERFACE) ---- linux-2.6.0-test1/drivers/usb/host/ohci-hcd.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/usb/host/ohci-hcd.c 2003-07-19 17:03:50.000000000 -0700 -@@ -319,6 +319,7 @@ ohci_endpoint_disable (struct usb_hcd *h - int epnum = ep & USB_ENDPOINT_NUMBER_MASK; - unsigned long flags; - struct ed *ed; -+ unsigned limit = 1000; - - /* ASSERT: any requests/urbs are being unlinked */ - /* ASSERT: nobody can be submitting urbs for this any more */ -@@ -337,6 +338,8 @@ rescan: - ed->state = ED_IDLE; - switch (ed->state) { - case ED_UNLINK: /* wait for hw to finish? */ -+ /* major IRQ delivery trouble loses INTR_SF too... */ -+ WARN_ON (limit-- == 0); - spin_unlock_irqrestore (&ohci->lock, flags); - set_current_state (TASK_UNINTERRUPTIBLE); - schedule_timeout (1); ---- linux-2.6.0-test1/drivers/usb/host/ohci-q.c 2003-06-14 12:18:34.000000000 -0700 -+++ 25/drivers/usb/host/ohci-q.c 2003-07-19 17:03:50.000000000 -0700 -@@ -43,6 +43,16 @@ finish_urb (struct ohci_hcd *ohci, struc - spin_lock (&urb->lock); - if (likely (urb->status == -EINPROGRESS)) - urb->status = 0; -+ /* report short control reads right even though the data TD always -+ * has TD_R set. (much simpler, but creates the 1-td limit.) -+ */ -+ if (unlikely (urb->transfer_flags & URB_SHORT_NOT_OK) -+ && unlikely (usb_pipecontrol (urb->pipe)) -+ && urb->actual_length < urb->transfer_buffer_length -+ && usb_pipein (urb->pipe) -+ && urb->status == 0) { -+ urb->status = -EREMOTEIO; -+ } - spin_unlock (&urb->lock); - - // what lock protects these? ---- linux-2.6.0-test1/drivers/usb/host/uhci-hcd.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/host/uhci-hcd.c 2003-07-19 17:03:50.000000000 -0700 -@@ -2007,19 +2007,17 @@ static int suspend_allowed(struct uhci_h - unsigned int io_addr = uhci->io_addr; - int i; - -- if (!uhci->hcd.pdev || -- uhci->hcd.pdev->vendor != PCI_VENDOR_ID_INTEL || -- uhci->hcd.pdev->device != PCI_DEVICE_ID_INTEL_82371AB_2) -+ if (!uhci->hcd.pdev || uhci->hcd.pdev->vendor != PCI_VENDOR_ID_INTEL) - return 1; - -- /* This is a 82371AB/EB/MB USB controller which has a bug that -- * causes false resume indications if any port has an -- * over current condition. To prevent problems, we will not -- * allow a global suspend if any ports are OC. -+ /* Some of Intel's USB controllers have a bug that causes false -+ * resume indications if any port has an over current condition. -+ * To prevent problems, we will not allow a global suspend if -+ * any ports are OC. - * -- * Some motherboards using the 82371AB/EB/MB (but not the USB portion) -- * appear to hardwire the over current inputs active to disable -- * the USB ports. -+ * Some motherboards using Intel's chipsets (but not using all -+ * the USB ports) appear to hardwire the over current inputs active -+ * to disable the USB ports. - */ - - /* check for over current condition on any port */ ---- linux-2.6.0-test1/drivers/usb/image/hpusbscsi.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/image/hpusbscsi.c 2003-07-19 17:03:50.000000000 -0700 -@@ -9,7 +9,7 @@ - #include - #include - #include --#include -+#include - #include "../../scsi/scsi.h" - #include "../../scsi/hosts.h" - -@@ -109,7 +109,8 @@ hpusbscsi_usb_probe(struct usb_interface - goto out_unlink_controlurb; - - new->host->hostdata[0] = (unsigned long)new; -- scsi_add_host(new->host, &intf->dev); -+ scsi_add_host(new->host, &intf->dev); /* XXX handle failure */ -+ scsi_scan_host(new->host); - - new->sense_command[0] = REQUEST_SENSE; - new->sense_command[4] = HPUSBSCSI_SENSE_LENGTH; -@@ -306,7 +307,10 @@ DEBUG("Getting status byte %d \n",hpusbs - if(unlikely(u->status < 0)) { - if (likely(hpusbscsi->state != HP_STATE_FREE)) - handle_usb_error(hpusbscsi); -- return; -+ if (u->status == -ECONNRESET || u->status == -ENOENT || u->status == -ESHUTDOWN) -+ return; -+ else -+ goto resub; - } - - scsi_state = hpusbscsi->scsi_state_byte; -@@ -348,6 +352,8 @@ DEBUG("Getting status byte %d \n",hpusbs - TRACE_STATE; - break; - } -+resub: -+ usb_submit_urb(u, GFP_ATOMIC); - } - - static void simple_command_callback(struct urb *u, struct pt_regs *regs) -@@ -427,7 +433,7 @@ static void simple_done (struct urb *u, - hpusbscsi->state = HP_STATE_WAIT; - } else { - issue_request_sense(hpusbscsi); -- } -+ } - } - } else { - if (likely(hpusbscsi->scallback != NULL)) ---- linux-2.6.0-test1/drivers/usb/image/microtek.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/image/microtek.c 2003-07-19 17:03:50.000000000 -0700 -@@ -134,7 +134,7 @@ - #include - - #include --#include -+#include - #include "../../scsi/scsi.h" - #include "../../scsi/hosts.h" - -@@ -817,7 +817,8 @@ static int mts_usb_probe(struct usb_inte - goto out_free_urb; - - new_desc->host->hostdata[0] = (unsigned long)new_desc; -- scsi_add_host(new_desc->host, NULL); -+ scsi_add_host(new_desc->host, NULL); /* XXX handle failure */ -+ scsi_scan_host(new_desc->host); - - usb_set_intfdata(intf, new_desc); - return 0; ---- linux-2.6.0-test1/drivers/usb/image/scanner.c 2003-06-14 12:18:05.000000000 -0700 -+++ 25/drivers/usb/image/scanner.c 2003-07-19 17:03:50.000000000 -0700 -@@ -364,6 +364,11 @@ - * Mustek, Pacific Image Electronics, Plustek, and Visioneer scanners. - * Fixed names of some other scanners. - * -+ * 0.4.14 2003-07-15 -+ * - Fixed race between open and probe (Oliver Neukum). -+ * - Added vendor/product ids for Avision, Canon, HP, Microtek and Relisys scanners. -+ * - Clean up irq urb when not enough memory is available. -+ * - * TODO - * - Performance - * - Select/poll methods -@@ -1068,6 +1073,9 @@ probe_scanner(struct usb_interface *intf - /* Ok, now initialize all the relevant values */ - if (!(scn->obuf = (char *)kmalloc(OBUF_SIZE, GFP_KERNEL))) { - err("probe_scanner(%d): Not enough memory for the output buffer.", intf->minor); -+ if (have_intr) -+ usb_unlink_urb(scn->scn_irq); -+ usb_free_urb(scn->scn_irq); - kfree(scn); - up(&scn_mutex); - return -ENOMEM; -@@ -1076,6 +1084,9 @@ probe_scanner(struct usb_interface *intf - - if (!(scn->ibuf = (char *)kmalloc(IBUF_SIZE, GFP_KERNEL))) { - err("probe_scanner(%d): Not enough memory for the input buffer.", intf->minor); -+ if (have_intr) -+ usb_unlink_urb(scn->scn_irq); -+ usb_free_urb(scn->scn_irq); - kfree(scn->obuf); - kfree(scn); - up(&scn_mutex); -@@ -1117,10 +1128,9 @@ probe_scanner(struct usb_interface *intf - info ("USB scanner device (0x%04x/0x%04x) now attached to %s", - dev->descriptor.idVendor, dev->descriptor.idProduct, name); - -- up(&scn_mutex); -- - usb_set_intfdata(intf, scn); -- -+ up(&scn_mutex); -+ - return 0; - } - ---- linux-2.6.0-test1/drivers/usb/image/scanner.h 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/usb/image/scanner.h 2003-07-19 17:03:50.000000000 -0700 -@@ -43,7 +43,7 @@ - - // #define DEBUG - --#define DRIVER_VERSION "0.4.13" -+#define DRIVER_VERSION "0.4.14" - #define DRIVER_DESC "USB Scanner Driver" - - #include -@@ -103,6 +103,7 @@ static struct usb_device_id scanner_devi - /* Avision */ - { USB_DEVICE(0x0638, 0x0268) }, /* iVina 1200U */ - { USB_DEVICE(0x0638, 0x0a10) }, /* iVina FB1600 (=Umax Astra 4500) */ -+ { USB_DEVICE(0x0638, 0x0a20) }, /* iVina FB1800 (=Umax Astra 4700) */ - /* Benq: see Acer */ - /* Brother */ - { USB_DEVICE(0x04f9, 0x010f) }, /* MFC 5100C */ -@@ -115,10 +116,12 @@ static struct usb_device_id scanner_devi - { USB_DEVICE(0x04a9, 0x2206) }, /* CanoScan N650U/N656U */ - { USB_DEVICE(0x04a9, 0x2207) }, /* CanoScan N1220U */ - { USB_DEVICE(0x04a9, 0x2208) }, /* CanoScan D660U */ -+ { USB_DEVICE(0x04a9, 0x220a) }, /* CanoScan D2400UF */ - { USB_DEVICE(0x04a9, 0x220b) }, /* CanoScan D646U */ - { USB_DEVICE(0x04a9, 0x220c) }, /* CanoScan D1250U2 */ - { USB_DEVICE(0x04a9, 0x220d) }, /* CanoScan N670U/N676U/LIDE 20 */ - { USB_DEVICE(0x04a9, 0x220e) }, /* CanoScan N1240U/LIDE 30 */ -+ { USB_DEVICE(0x04a9, 0x220f) }, /* CanoScan 8000F */ - { USB_DEVICE(0x04a9, 0x2213) }, /* LIDE 50 */ - { USB_DEVICE(0x04a9, 0x3042) }, /* FS4000US */ - /* Colorado -- See Primax/Colorado below */ -@@ -158,6 +161,7 @@ static struct usb_device_id scanner_devi - { USB_DEVICE(0x03f0, 0x0901) }, /* ScanJet 2300C */ - { USB_DEVICE(0x03F0, 0x1005) }, /* ScanJet 5400C */ - { USB_DEVICE(0x03F0, 0x1105) }, /* ScanJet 5470C */ -+ { USB_DEVICE(0x03f0, 0x1205) }, /* ScanJet 5550C */ - { USB_DEVICE(0x03f0, 0x1305) }, /* Scanjet 4570c */ - { USB_DEVICE(0x03f0, 0x1411) }, /* PSC 750 */ - { USB_DEVICE(0x03f0, 0x2005) }, /* ScanJet 3570c */ -@@ -173,6 +177,7 @@ static struct usb_device_id scanner_devi - /* Memorex */ - { USB_DEVICE(0x0461, 0x0346) }, /* 6136u - repackaged Primax ? */ - /* Microtek */ -+ { USB_DEVICE(0x05da, 0x20c9) }, /* ScanMaker 6700 */ - { USB_DEVICE(0x05da, 0x30ce) }, /* ScanMaker 3800 */ - { USB_DEVICE(0x05da, 0x30cf) }, /* ScanMaker 4800 */ - { USB_DEVICE(0x04a7, 0x0224) }, /* Scanport 3000 (actually Visioneer?)*/ -@@ -250,6 +255,7 @@ static struct usb_device_id scanner_devi - { USB_DEVICE(0x06dc, 0x0014) }, /* Winscan Pro 2448U */ - /* Relisis */ - // { USB_DEVICE(0x0475, 0x0103) }, /* Episode - undetected endpoint */ -+ { USB_DEVICE(0x0475, 0x0210) }, /* Scorpio Ultra 3 */ - /* Seiko/Epson Corp. */ - { USB_DEVICE(0x04b8, 0x0101) }, /* Perfection 636U and 636Photo */ - { USB_DEVICE(0x04b8, 0x0102) }, /* GT-2200 */ ---- linux-2.6.0-test1/drivers/usb/media/dabusb.c 2003-06-14 12:18:23.000000000 -0700 -+++ 25/drivers/usb/media/dabusb.c 2003-07-19 17:03:50.000000000 -0700 -@@ -721,7 +721,7 @@ static struct usb_class_driver dabusb_cl - - - /* --------------------------------------------------------------------- */ --static int dabusb_probe (struct usb_interface *intf, -+static int dabusb_probe (struct usb_interface *intf, - const struct usb_device_id *id) - { - struct usb_device *usbdev = interface_to_usbdev(intf); -@@ -738,9 +738,7 @@ static int dabusb_probe (struct usb_inte - if (intf->altsetting->desc.bInterfaceNumber != _DABUSB_IF && usbdev->descriptor.idProduct == 0x9999) - return -ENODEV; - -- retval = usb_register_dev(intf, &dabusb_class); -- if (retval) -- return -ENOMEM; -+ - - s = &dabusb[intf->minor]; - -@@ -766,8 +764,15 @@ static int dabusb_probe (struct usb_inte - } - } - dbg("bound to interface: %d", ifnum); -- up (&s->mutex); - usb_set_intfdata (intf, s); -+ up (&s->mutex); -+ -+ retval = usb_register_dev(intf, &dabusb_class); -+ if (retval) { -+ usb_set_intfdata (intf, NULL); -+ return -ENOMEM; -+ } -+ - return 0; - - reject: ---- linux-2.6.0-test1/drivers/usb/media/vicam.c 2003-06-26 22:07:25.000000000 -0700 -+++ 25/drivers/usb/media/vicam.c 2003-07-19 17:04:54.000000000 -0700 -@@ -611,15 +611,20 @@ vicam_ioctl(struct inode *inode, struct - - case VIDIOCSPICT: - { -- struct video_picture *vp = (struct video_picture *) arg; -+ struct video_picture vp; - -- DBG("VIDIOCSPICT depth = %d, pal = %d\n", vp->depth, -- vp->palette); -+ if (copy_from_user(&vp, arg, sizeof (vp))) { -+ retval = -EFAULT; -+ break; -+ } - -- cam->gain = vp->brightness >> 8; -+ DBG("VIDIOCSPICT depth = %d, pal = %d\n", vp.depth, -+ vp.palette); - -- if (vp->depth != 24 -- || vp->palette != VIDEO_PALETTE_RGB24) -+ cam->gain = vp.brightness >> 8; -+ -+ if (vp.depth != 24 -+ || vp.palette != VIDEO_PALETTE_RGB24) - retval = -EINVAL; - - break; -@@ -652,10 +657,15 @@ vicam_ioctl(struct inode *inode, struct - case VIDIOCSWIN: - { - -- struct video_window *vw = (struct video_window *) arg; -- DBG("VIDIOCSWIN %d x %d\n", vw->width, vw->height); -+ struct video_window vw; -+ -+ if (copy_from_user(&vw, arg, sizeof (vw))) { -+ retval = -EFAULT; -+ break; -+ } -+ DBG("VIDIOCSWIN %d x %d\n", vw.width, vw.height); - -- if ( vw->width != 320 || vw->height != 240 ) -+ if ( vw.width != 320 || vw.height != 240 ) - retval = -EFAULT; - - break; ---- linux-2.6.0-test1/drivers/usb/misc/usblcd.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/misc/usblcd.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1,4 +1,4 @@ --/***************************************************************************** -+/***************************************************************************** - * USBLCD Kernel Driver * - * See http://www.usblcd.de for Hardware and Documentation. * - * Version 1.03 * -@@ -18,7 +18,7 @@ - #include - #include - --#define DRIVER_VERSION "USBLCD Driver Version 1.03" -+#define DRIVER_VERSION "USBLCD Driver Version 1.04" - - #define USBLCD_MINOR 144 - -@@ -257,7 +257,7 @@ static int probe_lcd(struct usb_interfac - struct lcd_usb_data *lcd = &lcd_instance; - int i; - int retval; -- -+ - if (dev->descriptor.idProduct != 0x0001 ) { - warn(KERN_INFO "USBLCD model not supported."); - return -ENODEV; -@@ -274,30 +274,32 @@ static int probe_lcd(struct usb_interfac - (i & 0xF000)>>12,(i & 0xF00)>>8,(i & 0xF0)>>4,(i & 0xF), - dev->devnum); - -- retval = usb_register_dev(intf, &usb_lcd_class); -- if (retval) { -- err("Not able to get a minor for this device."); -- return -ENOMEM; -- } -+ - - lcd->present = 1; - lcd->lcd_dev = dev; - - if (!(lcd->obuf = (char *) kmalloc(OBUF_SIZE, GFP_KERNEL))) { - err("probe_lcd: Not enough memory for the output buffer"); -- usb_deregister_dev(intf, &usb_lcd_class); - return -ENOMEM; - } - dbg("probe_lcd: obuf address:%p", lcd->obuf); - - if (!(lcd->ibuf = (char *) kmalloc(IBUF_SIZE, GFP_KERNEL))) { - err("probe_lcd: Not enough memory for the input buffer"); -- usb_deregister_dev(intf, &usb_lcd_class); - kfree(lcd->obuf); - return -ENOMEM; - } - dbg("probe_lcd: ibuf address:%p", lcd->ibuf); - -+ retval = usb_register_dev(intf, &usb_lcd_class); -+ if (retval) { -+ err("Not able to get a minor for this device."); -+ kfree(lcd->obuf); -+ kfree(lcd->ibuf); -+ return -ENOMEM; -+ } -+ - usb_set_intfdata (intf, lcd); - return 0; - } ---- linux-2.6.0-test1/drivers/usb/misc/usbtest.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/misc/usbtest.c 2003-07-19 17:03:50.000000000 -0700 -@@ -47,6 +47,7 @@ struct usbtest_info { - const char *name; - u8 ep_in; /* bulk/intr source */ - u8 ep_out; /* bulk/intr sink */ -+ unsigned autoconf : 1; - int alt; - }; - -@@ -78,6 +79,61 @@ static struct usb_device *testdev_to_usb - - /*-------------------------------------------------------------------------*/ - -+static int -+get_endpoints (struct usbtest_dev *dev, struct usb_interface *intf) -+{ -+ int tmp; -+ struct usb_host_interface *alt; -+ struct usb_host_endpoint *in, *out; -+ struct usb_device *udev; -+ -+ for (tmp = 0; tmp < intf->max_altsetting; tmp++) { -+ unsigned ep; -+ -+ in = out = 0; -+ alt = intf->altsetting + tmp; -+ -+ /* take the first altsetting with in-bulk + out-bulk; -+ * ignore other endpoints and altsetttings. -+ */ -+ for (ep = 0; ep < alt->desc.bNumEndpoints; ep++) { -+ struct usb_host_endpoint *e; -+ -+ e = alt->endpoint + ep; -+ if (e->desc.bmAttributes != USB_ENDPOINT_XFER_BULK) -+ continue; -+ if (e->desc.bEndpointAddress & USB_DIR_IN) { -+ if (!in) -+ in = e; -+ } else { -+ if (!out) -+ out = e; -+ } -+ if (in && out) -+ goto found; -+ } -+ } -+ return -EINVAL; -+ -+found: -+ udev = testdev_to_usbdev (dev); -+ if (alt->desc.bAlternateSetting != 0) { -+ tmp = usb_set_interface (udev, -+ alt->desc.bInterfaceNumber, -+ alt->desc.bAlternateSetting); -+ if (tmp < 0) -+ return tmp; -+ } -+ -+ dev->in_pipe = usb_rcvbulkpipe (udev, -+ in->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); -+ dev->out_pipe = usb_sndbulkpipe (udev, -+ out->desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); -+ return 0; -+} -+ -+/*-------------------------------------------------------------------------*/ -+ - /* Support for testing basic non-queued I/O streams. - * - * These just package urbs as requests that can be easily canceled. -@@ -1275,14 +1331,26 @@ usbtest_probe (struct usb_interface *int - wtest = " intr-out"; - } - } else { -- if (info->ep_in) { -- dev->in_pipe = usb_rcvbulkpipe (udev, info->ep_in); -- rtest = " bulk-in"; -+ if (info->autoconf) { -+ int status; -+ -+ status = get_endpoints (dev, intf); -+ if (status < 0) { -+ dbg ("couldn't get endpoints, %d\n", status); -+ return status; -+ } -+ } else { -+ if (info->ep_in) -+ dev->in_pipe = usb_rcvbulkpipe (udev, -+ info->ep_in); -+ if (info->ep_out) -+ dev->out_pipe = usb_sndbulkpipe (udev, -+ info->ep_out); - } -- if (info->ep_out) { -- dev->out_pipe = usb_sndbulkpipe (udev, info->ep_out); -+ if (dev->in_pipe) -+ rtest = " bulk-in"; -+ if (dev->out_pipe) - wtest = " bulk-out"; -- } - } - - usb_set_intfdata (intf, dev); -@@ -1336,11 +1404,6 @@ static struct usbtest_info ez2_info = { - }; - - /* ezusb family device with dedicated usb test firmware, -- * or a peripheral running Linux and 'zero.c' test firmware. -- * -- * FIXME usbtest should read the descriptors, since compatible -- * test firmware might run on hardware (pxa250 for one) that -- * can't configure an ep2in-bulk. - */ - static struct usbtest_info fw_info = { - .name = "usb test device", -@@ -1349,10 +1412,20 @@ static struct usbtest_info fw_info = { - .alt = 0, - }; - -+/* peripheral running Linux and 'zero.c' test firmware, or -+ * its user-mode cousin. different versions of this use -+ * different hardware with the same vendor/product codes. -+ * host side MUST rely on the endpoint descriptors. -+ */ -+static struct usbtest_info gz_info = { -+ .name = "Linux gadget zero", -+ .autoconf = 1, -+ .alt = 0, -+}; -+ - static struct usbtest_info um_info = { -- .name = "user mode test driver", -- .ep_in = 7, -- .ep_out = 3, -+ .name = "Linux user mode test driver", -+ .autoconf = 1, - .alt = -1, - }; - -@@ -1418,7 +1491,7 @@ static struct usb_device_id id_table [] - - /* "Gadget Zero" firmware runs under Linux */ - { USB_DEVICE (0x0525, 0xa4a0), -- .driver_info = (unsigned long) &fw_info, -+ .driver_info = (unsigned long) &gz_info, - }, - - /* so does a user-mode variant */ ---- linux-2.6.0-test1/drivers/usb/net/ax8817x.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/net/ax8817x.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1208,6 +1208,7 @@ static int ax8817x_bind(struct usb_inter - net->init = ax8817x_net_init; - net->priv = ax_info; - -+ SET_NETDEV_DEV(net, &intf->dev); - ret = register_netdev(net); - if (ret < 0) { - err("%s: Failed net init (%d)\n", __FUNCTION__, ret); ---- linux-2.6.0-test1/drivers/usb/net/catc.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/net/catc.c 2003-07-19 17:03:50.000000000 -0700 -@@ -936,6 +936,7 @@ static int catc_probe(struct usb_interfa - printk("%2.2x.\n", netdev->dev_addr[i]); - usb_set_intfdata(intf, catc); - -+ SET_NETDEV_DEV(netdev, &intf->dev); - if (register_netdev(netdev) != 0) { - usb_set_intfdata(intf, NULL); - usb_free_urb(catc->ctrl_urb); ---- linux-2.6.0-test1/drivers/usb/net/kaweth.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/net/kaweth.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1123,8 +1123,9 @@ static int kaweth_probe( - if (dma_supported (&intf->dev, 0xffffffffffffffffULL)) - kaweth->net->features |= NETIF_F_HIGHDMA; - -+ SET_NETDEV_DEV(netdev, &intf->dev); - if (register_netdev(netdev) != 0) { -- kaweth_err("Error calling init_etherdev."); -+ kaweth_err("Error registering netdev."); - goto err_intfdata; - } - ---- linux-2.6.0-test1/drivers/usb/net/pegasus.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/net/pegasus.c 2003-07-19 17:03:50.000000000 -0700 -@@ -1262,7 +1262,6 @@ static int pegasus_probe(struct usb_inte - } - set_ethernet_addr(pegasus); - fill_skb_pool(pegasus); -- printk("%s: %s\n", net->name, usb_dev_id[dev_index].name); - if (pegasus->features & PEGASUS_II) { - info("setup Pegasus II specific registers"); - setup_pegasus_II(pegasus); -@@ -1273,9 +1272,11 @@ static int pegasus_probe(struct usb_inte - pegasus->phy = 1; - } - usb_set_intfdata(intf, pegasus); -+ SET_NETDEV_DEV(net, &intf->dev); - res = register_netdev(net); - if (res) - goto out4; -+ printk("%s: %s\n", net->name, usb_dev_id[dev_index].name); - return 0; - - out4: ---- linux-2.6.0-test1/drivers/usb/net/rtl8150.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/net/rtl8150.c 2003-07-19 17:03:50.000000000 -0700 -@@ -830,6 +830,7 @@ static int rtl8150_probe(struct usb_inte - - usb_set_intfdata(intf, dev); - -+ SET_NETDEV_DEV(netdev, &intf->dev); - if (register_netdev(netdev) != 0) { - err("couldn't register the device"); - goto out2; ---- linux-2.6.0-test1/drivers/usb/net/usbnet.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/usb/net/usbnet.c 2003-07-19 17:03:50.000000000 -0700 -@@ -2602,7 +2602,7 @@ usbnet_probe (struct usb_interface *udev - - dev->maxpacket = usb_maxpacket (dev->udev, dev->out, 1); - -- SET_NETDEV_DEV(dev->net, &dev->udev->dev); -+ SET_NETDEV_DEV(dev->net, &udev->dev); - status = register_netdev (dev->net); - if (status) - goto out3; ---- linux-2.6.0-test1/drivers/usb/serial/ftdi_sio.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/usb/serial/ftdi_sio.c 2003-07-19 17:03:50.000000000 -0700 -@@ -257,6 +257,7 @@ static struct usb_device_id id_table_8U2 - { USB_DEVICE_VER(FTDI_VID, FTDI_XF_634_PID, 0, 0x3ff) }, - { USB_DEVICE_VER(FTDI_VID, FTDI_XF_632_PID, 0, 0x3ff) }, - { USB_DEVICE_VER(FTDI_VID, FTDI_VNHCPCUSB_D_PID, 0, 0x3ff) }, -+ { USB_DEVICE_VER(FTDI_VID, FTDI_DSS20_PID, 0, 0x3ff) }, - { USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_0_PID, 0, 0x3ff) }, - { USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_1_PID, 0, 0x3ff) }, - { USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_2_PID, 0, 0x3ff) }, -@@ -321,6 +322,7 @@ static struct usb_device_id id_table_FT2 - { USB_DEVICE_VER(FTDI_VID, FTDI_XF_634_PID, 0x400, 0xffff) }, - { USB_DEVICE_VER(FTDI_VID, FTDI_XF_632_PID, 0x400, 0xffff) }, - { USB_DEVICE_VER(FTDI_VID, FTDI_VNHCPCUSB_D_PID, 0x400, 0xffff) }, -+ { USB_DEVICE_VER(FTDI_VID, FTDI_DSS20_PID, 0x400, 0xffff) }, - { USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_0_PID, 0x400, 0xffff) }, - { USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_1_PID, 0x400, 0xffff) }, - { USB_DEVICE_VER(FTDI_MTXORB_VID, FTDI_MTXORB_2_PID, 0x400, 0xffff) }, -@@ -396,6 +398,7 @@ static __devinitdata struct usb_device_i - { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) }, -+ { USB_DEVICE(FTDI_VID, FTDI_DSS20_PID) }, - { USB_DEVICE(FTDI_NF_RIC_VID, FTDI_NF_RIC_PID) }, - { USB_DEVICE(FTDI_VID, FTDI_VNHCPCUSB_D_PID) }, - { USB_DEVICE(FTDI_MTXORB_VID, FTDI_MTXORB_0_PID) }, ---- linux-2.6.0-test1/drivers/usb/serial/ftdi_sio.h 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/usb/serial/ftdi_sio.h 2003-07-19 17:03:50.000000000 -0700 -@@ -105,7 +105,13 @@ - #define SEALEVEL_2803_6_PID 0X2863 /* SeaLINK+8 (2803) Port 6 */ - #define SEALEVEL_2803_7_PID 0X2873 /* SeaLINK+8 (2803) Port 7 */ - #define SEALEVEL_2803_8_PID 0X2883 /* SeaLINK+8 (2803) Port 8 */ -+ -+/* -+ * DSS-20 Sync Station for Sony Ericsson P800 -+ */ - -+#define FTDI_DSS20_PID 0xFC82 -+ - /* - * Home Electronics (www.home-electro.com) USB gadgets - */ ---- linux-2.6.0-test1/drivers/usb/serial/ipaq.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/usb/serial/ipaq.c 2003-07-19 17:03:50.000000000 -0700 -@@ -125,10 +125,13 @@ static struct usb_device_id ipaq_id_tabl - { USB_DEVICE(LINKUP_VENDOR_ID, LINKUP_PRODUCT_ID) }, - { USB_DEVICE(MICROSOFT_VENDOR_ID, MICROSOFT_00CE_ID) }, - { USB_DEVICE(PORTATEC_VENDOR_ID, PORTATEC_PRODUCT_ID) }, -+ { USB_DEVICE(ROVER_VENDOR_ID, ROVER_P5_ID) }, - { USB_DEVICE(SAGEM_VENDOR_ID, SAGEM_WIRELESS_ID) }, - { USB_DEVICE(SOCKET_VENDOR_ID, SOCKET_PRODUCT_ID) }, - { USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_PRODUCT_ID) }, -+ { USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_E310_ID) }, - { USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_E740_ID) }, -+ { USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_E335_ID) }, - { USB_DEVICE(HTC_VENDOR_ID, HTC_PRODUCT_ID) }, - { USB_DEVICE(NEC_VENDOR_ID, NEC_PRODUCT_ID) }, - { USB_DEVICE(ASUS_VENDOR_ID, ASUS_A600_PRODUCT_ID) }, ---- linux-2.6.0-test1/drivers/usb/serial/ipaq.h 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/usb/serial/ipaq.h 2003-07-19 17:03:50.000000000 -0700 -@@ -61,6 +61,9 @@ - #define PORTATEC_VENDOR_ID 0x0961 - #define PORTATEC_PRODUCT_ID 0x0010 - -+#define ROVER_VENDOR_ID 0x047b -+#define ROVER_P5_ID 0x3000 -+ - #define SAGEM_VENDOR_ID 0x5e04 - #define SAGEM_WIRELESS_ID 0xce00 - -@@ -69,7 +72,9 @@ - - #define TOSHIBA_VENDOR_ID 0x0930 - #define TOSHIBA_PRODUCT_ID 0x0700 -+#define TOSHIBA_E310_ID 0x0705 - #define TOSHIBA_E740_ID 0x0706 -+#define TOSHIBA_E335_ID 0x0707 - - #define HTC_VENDOR_ID 0x0bb4 - #define HTC_PRODUCT_ID 0x00ce ---- linux-2.6.0-test1/drivers/usb/serial/usb-serial.c 2003-06-14 12:18:08.000000000 -0700 -+++ 25/drivers/usb/serial/usb-serial.c 2003-07-19 17:03:50.000000000 -0700 -@@ -530,7 +530,9 @@ static void serial_close(struct tty_stru - /* if disconnect beat us to the punch here, there's nothing to do */ - if (tty && tty->driver_data) { - __serial_close(port, filp); -+ tty->driver_data = NULL; - } -+ port->tty = NULL; - } - - static int serial_write (struct tty_struct * tty, int from_user, const unsigned char *buf, int count) ---- linux-2.6.0-test1/drivers/usb/serial/visor.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/serial/visor.c 2003-07-19 17:03:50.000000000 -0700 -@@ -509,18 +509,17 @@ static void visor_write_bulk_callback (s - { - struct usb_serial_port *port = (struct usb_serial_port *)urb->context; - -+ /* free up the transfer buffer, as usb_free_urb() does not do this */ -+ kfree (urb->transfer_buffer); -+ - if (port_paranoia_check (port, __FUNCTION__)) - return; - - dbg("%s - port %d", __FUNCTION__, port->number); - -- if (urb->status) { -- dbg("%s - nonzero write bulk status received: %d", __FUNCTION__, urb->status); -- return; -- } -- -- /* free up the transfer buffer, as usb_free_urb() does not do this */ -- kfree (urb->transfer_buffer); -+ if (urb->status) -+ dbg("%s - nonzero write bulk status received: %d", -+ __FUNCTION__, urb->status); - - schedule_work(&port->work); - } ---- linux-2.6.0-test1/drivers/usb/storage/debug.h 2003-06-14 12:18:52.000000000 -0700 -+++ 25/drivers/usb/storage/debug.h 2003-07-19 17:03:50.000000000 -0700 -@@ -46,7 +46,6 @@ - - #include - #include --#include - #include - #include "usb.h" - ---- linux-2.6.0-test1/drivers/usb/storage/isd200.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/storage/isd200.c 2003-07-19 17:03:50.000000000 -0700 -@@ -280,6 +280,7 @@ struct isd200_info { - - /* maximum number of LUNs supported */ - unsigned char MaxLUNs; -+ struct scsi_cmnd srb; - }; - - -@@ -404,15 +405,15 @@ static int isd200_action( struct us_data - void* pointer, int value ) - { - union ata_cdb ata; -- struct scsi_cmnd srb; - struct scsi_device srb_dev; - struct isd200_info *info = (struct isd200_info *)us->extra; -+ struct scsi_cmnd *srb = &info->srb; - int status; - - memset(&ata, 0, sizeof(ata)); -- memset(&srb, 0, sizeof(srb)); - memset(&srb_dev, 0, sizeof(srb_dev)); -- srb.device = &srb_dev; -+ srb->device = &srb_dev; -+ ++srb->serial_number; - - ata.generic.SignatureByte0 = info->ConfigData.ATAMajorCommand; - ata.generic.SignatureByte1 = info->ConfigData.ATAMinorCommand; -@@ -425,9 +426,9 @@ static int isd200_action( struct us_data - ata.generic.RegisterSelect = - REG_CYLINDER_LOW | REG_CYLINDER_HIGH | - REG_STATUS | REG_ERROR; -- srb.sc_data_direction = SCSI_DATA_READ; -- srb.request_buffer = pointer; -- srb.request_bufflen = value; -+ srb->sc_data_direction = SCSI_DATA_READ; -+ srb->request_buffer = pointer; -+ srb->request_bufflen = value; - break; - - case ACTION_ENUM: -@@ -437,7 +438,7 @@ static int isd200_action( struct us_data - ACTION_SELECT_5; - ata.generic.RegisterSelect = REG_DEVICE_HEAD; - ata.write.DeviceHeadByte = value; -- srb.sc_data_direction = SCSI_DATA_NONE; -+ srb->sc_data_direction = SCSI_DATA_NONE; - break; - - case ACTION_RESET: -@@ -446,7 +447,7 @@ static int isd200_action( struct us_data - ACTION_SELECT_3|ACTION_SELECT_4; - ata.generic.RegisterSelect = REG_DEVICE_CONTROL; - ata.write.DeviceControlByte = ATA_DC_RESET_CONTROLLER; -- srb.sc_data_direction = SCSI_DATA_NONE; -+ srb->sc_data_direction = SCSI_DATA_NONE; - break; - - case ACTION_REENABLE: -@@ -455,7 +456,7 @@ static int isd200_action( struct us_data - ACTION_SELECT_3|ACTION_SELECT_4; - ata.generic.RegisterSelect = REG_DEVICE_CONTROL; - ata.write.DeviceControlByte = ATA_DC_REENABLE_CONTROLLER; -- srb.sc_data_direction = SCSI_DATA_NONE; -+ srb->sc_data_direction = SCSI_DATA_NONE; - break; - - case ACTION_SOFT_RESET: -@@ -464,16 +465,16 @@ static int isd200_action( struct us_data - ata.generic.RegisterSelect = REG_DEVICE_HEAD | REG_COMMAND; - ata.write.DeviceHeadByte = info->DeviceHead; - ata.write.CommandByte = WIN_SRST; -- srb.sc_data_direction = SCSI_DATA_NONE; -+ srb->sc_data_direction = SCSI_DATA_NONE; - break; - - case ACTION_IDENTIFY: - US_DEBUGP(" isd200_action(IDENTIFY)\n"); - ata.generic.RegisterSelect = REG_COMMAND; - ata.write.CommandByte = WIN_IDENTIFY; -- srb.sc_data_direction = SCSI_DATA_READ; -- srb.request_buffer = (void *)&info->drive; -- srb.request_bufflen = sizeof(struct hd_driveid); -+ srb->sc_data_direction = SCSI_DATA_READ; -+ srb->request_buffer = (void *)&info->drive; -+ srb->request_bufflen = sizeof(struct hd_driveid); - break; - - default: -@@ -481,9 +482,9 @@ static int isd200_action( struct us_data - break; - } - -- memcpy(srb.cmnd, &ata, sizeof(ata.generic)); -- srb.cmd_len = sizeof(ata.generic); -- status = usb_stor_Bulk_transport(&srb, us); -+ memcpy(srb->cmnd, &ata, sizeof(ata.generic)); -+ srb->cmd_len = sizeof(ata.generic); -+ status = usb_stor_Bulk_transport(srb, us); - if (status == USB_STOR_TRANSPORT_GOOD) - status = ISD200_GOOD; - else { -@@ -834,7 +835,7 @@ static int isd200_try_enum(struct us_dat - int detect ) - { - int status = ISD200_GOOD; -- unsigned char regs[8]; -+ unsigned char *regs = us->iobuf; - unsigned long endTime; - struct isd200_info *info = (struct isd200_info *)us->extra; - int recheckAsMaster = FALSE; -@@ -856,7 +857,7 @@ static int isd200_try_enum(struct us_dat - break; - - status = isd200_action( us, ACTION_READ_STATUS, -- regs, sizeof(regs) ); -+ regs, 8 ); - if ( status != ISD200_GOOD ) - break; - ---- linux-2.6.0-test1/drivers/usb/storage/jumpshot.c 2003-06-14 12:17:56.000000000 -0700 -+++ 25/drivers/usb/storage/jumpshot.c 2003-07-19 17:03:50.000000000 -0700 -@@ -86,7 +86,6 @@ static inline int jumpshot_bulk_write(st - - static int jumpshot_get_status(struct us_data *us) - { -- unsigned char reply; - int rc; - - if (!us) -@@ -94,14 +93,14 @@ static int jumpshot_get_status(struct us - - // send the setup - rc = usb_stor_ctrl_transfer(us, us->recv_ctrl_pipe, -- 0, 0xA0, 0, 7, &reply, 1); -+ 0, 0xA0, 0, 7, us->iobuf, 1); - - if (rc != USB_STOR_XFER_GOOD) - return USB_STOR_TRANSPORT_ERROR; - -- if (reply != 0x50) { -+ if (us->iobuf[0] != 0x50) { - US_DEBUGP("jumpshot_get_status: 0x%2x\n", -- (unsigned short) (reply)); -+ us->iobuf[0]); - return USB_STOR_TRANSPORT_ERROR; - } - -@@ -115,7 +114,7 @@ static int jumpshot_read_data(struct us_ - unsigned char *dest, - int use_sg) - { -- unsigned char command[] = { 0, 0, 0, 0, 0, 0xe0, 0x20 }; -+ unsigned char *command = us->iobuf; - unsigned char *buffer = NULL; - unsigned char *ptr; - unsigned char thistime; -@@ -154,7 +153,8 @@ static int jumpshot_read_data(struct us_ - command[3] = (sector >> 8) & 0xFF; - command[4] = (sector >> 16) & 0xFF; - -- command[5] |= (sector >> 24) & 0x0F; -+ command[5] = 0xE0 | ((sector >> 24) & 0x0F); -+ command[6] = 0x20; - - // send the setup + command - result = usb_stor_ctrl_transfer(us, us->send_ctrl_pipe, -@@ -199,7 +199,7 @@ static int jumpshot_write_data(struct us - unsigned char *src, - int use_sg) - { -- unsigned char command[7] = { 0, 0, 0, 0, 0, 0xE0, 0x30 }; -+ unsigned char *command = us->iobuf; - unsigned char *buffer = NULL; - unsigned char *ptr; - unsigned char thistime; -@@ -240,7 +240,8 @@ static int jumpshot_write_data(struct us - command[3] = (sector >> 8) & 0xFF; - command[4] = (sector >> 16) & 0xFF; - -- command[5] |= (sector >> 24) & 0x0F; -+ command[5] = 0xE0 | ((sector >> 24) & 0x0F); -+ command[6] = 0x30; - - // send the setup + command - result = usb_stor_ctrl_transfer(us, us->send_ctrl_pipe, -@@ -291,13 +292,19 @@ static int jumpshot_write_data(struct us - static int jumpshot_id_device(struct us_data *us, - struct jumpshot_info *info) - { -- unsigned char command[2] = { 0xe0, 0xec }; -- unsigned char reply[512]; -+ unsigned char *command = us->iobuf; -+ unsigned char *reply; - int rc; - - if (!us || !info) - return USB_STOR_TRANSPORT_ERROR; - -+ command[0] = 0xE0; -+ command[1] = 0xEC; -+ reply = kmalloc(512, GFP_NOIO); -+ if (!reply) -+ return USB_STOR_TRANSPORT_ERROR; -+ - // send the setup - rc = usb_stor_ctrl_transfer(us, us->send_ctrl_pipe, - 0, 0x20, 0, 6, command, 2); -@@ -305,20 +312,27 @@ static int jumpshot_id_device(struct us_ - if (rc != USB_STOR_XFER_GOOD) { - US_DEBUGP("jumpshot_id_device: Gah! " - "send_control for read_capacity failed\n"); -- return rc; -+ rc = USB_STOR_TRANSPORT_ERROR; -+ goto leave; - } - - // read the reply - rc = jumpshot_bulk_read(us, reply, sizeof(reply)); -- if (rc != USB_STOR_XFER_GOOD) -- return USB_STOR_TRANSPORT_ERROR; -+ if (rc != USB_STOR_XFER_GOOD) { -+ rc = USB_STOR_TRANSPORT_ERROR; -+ goto leave; -+ } - - info->sectors = ((u32)(reply[117]) << 24) | - ((u32)(reply[116]) << 16) | - ((u32)(reply[115]) << 8) | - ((u32)(reply[114]) ); - -- return USB_STOR_TRANSPORT_GOOD; -+ rc = USB_STOR_TRANSPORT_GOOD; -+ -+ leave: -+ kfree(reply); -+ return rc; - } - - static int jumpshot_handle_mode_sense(struct us_data *us, ---- linux-2.6.0-test1/drivers/usb/storage/protocol.c 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/storage/protocol.c 2003-07-19 17:03:50.000000000 -0700 -@@ -130,8 +130,9 @@ static void fix_read_capacity(Scsi_Cmnd - void usb_stor_qic157_command(Scsi_Cmnd *srb, struct us_data *us) - { - /* Pad the ATAPI command with zeros -+ * - * NOTE: This only works because a Scsi_Cmnd struct field contains -- * a unsigned char cmnd[12], so we know we have storage available -+ * a unsigned char cmnd[16], so we know we have storage available - */ - for (; srb->cmd_len<12; srb->cmd_len++) - srb->cmnd[srb->cmd_len] = 0; -@@ -149,13 +150,10 @@ void usb_stor_qic157_command(Scsi_Cmnd * - - void usb_stor_ATAPI_command(Scsi_Cmnd *srb, struct us_data *us) - { -- int old_cmnd = 0; -- -- /* Fix some commands -- this is a form of mode translation -- * ATAPI devices only accept 12 byte long commands -+ /* Pad the ATAPI command with zeros - * - * NOTE: This only works because a Scsi_Cmnd struct field contains -- * a unsigned char cmnd[12], so we know we have storage available -+ * a unsigned char cmnd[16], so we know we have storage available - */ - - /* Pad the ATAPI command with zeros */ -@@ -165,60 +163,10 @@ void usb_stor_ATAPI_command(Scsi_Cmnd *s - /* set command length to 12 bytes */ - srb->cmd_len = 12; - -- /* determine the correct (or minimum) data length for these commands */ -- switch (srb->cmnd[0]) { -- -- /* change MODE_SENSE/MODE_SELECT from 6 to 10 byte commands */ -- case MODE_SENSE: -- case MODE_SELECT: -- /* save the command so we can tell what it was */ -- old_cmnd = srb->cmnd[0]; -- -- srb->cmnd[11] = 0; -- srb->cmnd[10] = 0; -- srb->cmnd[9] = 0; -- srb->cmnd[8] = srb->cmnd[4]; -- srb->cmnd[7] = 0; -- srb->cmnd[6] = 0; -- srb->cmnd[5] = 0; -- srb->cmnd[4] = 0; -- srb->cmnd[3] = 0; -- srb->cmnd[2] = srb->cmnd[2]; -- srb->cmnd[1] = srb->cmnd[1]; -- srb->cmnd[0] = srb->cmnd[0] | 0x40; -- break; -- -- /* change READ_6/WRITE_6 to READ_10/WRITE_10, which -- * are ATAPI commands */ -- case WRITE_6: -- case READ_6: -- srb->cmnd[11] = 0; -- srb->cmnd[10] = 0; -- srb->cmnd[9] = 0; -- srb->cmnd[8] = srb->cmnd[4]; -- srb->cmnd[7] = 0; -- srb->cmnd[6] = 0; -- srb->cmnd[5] = srb->cmnd[3]; -- srb->cmnd[4] = srb->cmnd[2]; -- srb->cmnd[3] = srb->cmnd[1] & 0x1F; -- srb->cmnd[2] = 0; -- srb->cmnd[1] = srb->cmnd[1] & 0xE0; -- srb->cmnd[0] = srb->cmnd[0] | 0x20; -- break; -- } /* end switch on cmnd[0] */ -- -- /* convert MODE_SELECT data here */ -- if (old_cmnd == MODE_SELECT) -- usb_stor_scsiSense6to10(srb); -- - /* send the command to the transport layer */ - usb_stor_invoke_transport(srb, us); -- if (srb->result == SAM_STAT_GOOD) { -- -- /* Fix the MODE_SENSE data if we translated the command */ -- if (old_cmnd == MODE_SENSE) -- usb_stor_scsiSense10to6(srb); - -+ if (srb->result == SAM_STAT_GOOD) { - /* fix the INQUIRY data if necessary */ - fix_inquiry_data(srb); - } -@@ -227,19 +175,23 @@ void usb_stor_ATAPI_command(Scsi_Cmnd *s - - void usb_stor_ufi_command(Scsi_Cmnd *srb, struct us_data *us) - { -- int old_cmnd = 0; -- - /* fix some commands -- this is a form of mode translation - * UFI devices only accept 12 byte long commands - * - * NOTE: This only works because a Scsi_Cmnd struct field contains -- * a unsigned char cmnd[12], so we know we have storage available -+ * a unsigned char cmnd[16], so we know we have storage available - */ - -+ /* Pad the ATAPI command with zeros */ -+ for (; srb->cmd_len<12; srb->cmd_len++) -+ srb->cmnd[srb->cmd_len] = 0; -+ - /* set command length to 12 bytes (this affects the transport layer) */ - srb->cmd_len = 12; - -- /* determine the correct (or minimum) data length for these commands */ -+ /* XXX We should be constantly re-evaluating the need for these */ -+ -+ /* determine the correct data length for these commands */ - switch (srb->cmnd[0]) { - - /* for INQUIRY, UFI devices only ever return 36 bytes */ -@@ -247,33 +199,6 @@ void usb_stor_ufi_command(Scsi_Cmnd *srb - srb->cmnd[4] = 36; - break; - -- /* change MODE_SENSE/MODE_SELECT from 6 to 10 byte commands */ -- case MODE_SENSE: -- case MODE_SELECT: -- /* save the command so we can tell what it was */ -- old_cmnd = srb->cmnd[0]; -- -- srb->cmnd[11] = 0; -- srb->cmnd[10] = 0; -- srb->cmnd[9] = 0; -- -- /* if we're sending data, we send all. If getting data, -- * get the minimum */ -- if (srb->cmnd[0] == MODE_SELECT) -- srb->cmnd[8] = srb->cmnd[4]; -- else -- srb->cmnd[8] = 8; -- -- srb->cmnd[7] = 0; -- srb->cmnd[6] = 0; -- srb->cmnd[5] = 0; -- srb->cmnd[4] = 0; -- srb->cmnd[3] = 0; -- srb->cmnd[2] = srb->cmnd[2]; -- srb->cmnd[1] = srb->cmnd[1]; -- srb->cmnd[0] = srb->cmnd[0] | 0x40; -- break; -- - /* again, for MODE_SENSE_10, we get the minimum (8) */ - case MODE_SENSE_10: - srb->cmnd[7] = 0; -@@ -284,38 +209,12 @@ void usb_stor_ufi_command(Scsi_Cmnd *srb - case REQUEST_SENSE: - srb->cmnd[4] = 18; - break; -- -- /* change READ_6/WRITE_6 to READ_10/WRITE_10, which -- * are UFI commands */ -- case WRITE_6: -- case READ_6: -- srb->cmnd[11] = 0; -- srb->cmnd[10] = 0; -- srb->cmnd[9] = 0; -- srb->cmnd[8] = srb->cmnd[4]; -- srb->cmnd[7] = 0; -- srb->cmnd[6] = 0; -- srb->cmnd[5] = srb->cmnd[3]; -- srb->cmnd[4] = srb->cmnd[2]; -- srb->cmnd[3] = srb->cmnd[1] & 0x1F; -- srb->cmnd[2] = 0; -- srb->cmnd[1] = srb->cmnd[1] & 0xE0; -- srb->cmnd[0] = srb->cmnd[0] | 0x20; -- break; - } /* end switch on cmnd[0] */ - -- /* convert MODE_SELECT data here */ -- if (old_cmnd == MODE_SELECT) -- usb_stor_scsiSense6to10(srb); -- - /* send the command to the transport layer */ - usb_stor_invoke_transport(srb, us); -- if (srb->result == SAM_STAT_GOOD) { -- -- /* Fix the MODE_SENSE data if we translated the command */ -- if (old_cmnd == MODE_SENSE) -- usb_stor_scsiSense10to6(srb); - -+ if (srb->result == SAM_STAT_GOOD) { - /* Fix the data for an INQUIRY, if necessary */ - fix_inquiry_data(srb); - } -@@ -323,68 +222,10 @@ void usb_stor_ufi_command(Scsi_Cmnd *srb - - void usb_stor_transparent_scsi_command(Scsi_Cmnd *srb, struct us_data *us) - { -- int old_cmnd = 0; -- -- /* This code supports devices which do not support {READ|WRITE}_6 -- * Apparently, neither Windows or MacOS will use these commands, -- * so some devices do not support them -- */ -- if (us->flags & US_FL_MODE_XLATE) { -- US_DEBUGP("Invoking Mode Translation\n"); -- /* save the old command for later */ -- old_cmnd = srb->cmnd[0]; -- -- switch (srb->cmnd[0]) { -- /* change READ_6/WRITE_6 to READ_10/WRITE_10 */ -- case WRITE_6: -- case READ_6: -- srb->cmd_len = 12; -- srb->cmnd[11] = 0; -- srb->cmnd[10] = 0; -- srb->cmnd[9] = 0; -- srb->cmnd[8] = srb->cmnd[4]; -- srb->cmnd[7] = 0; -- srb->cmnd[6] = 0; -- srb->cmnd[5] = srb->cmnd[3]; -- srb->cmnd[4] = srb->cmnd[2]; -- srb->cmnd[3] = srb->cmnd[1] & 0x1F; -- srb->cmnd[2] = 0; -- srb->cmnd[1] = srb->cmnd[1] & 0xE0; -- srb->cmnd[0] = srb->cmnd[0] | 0x20; -- break; -- -- /* convert MODE_SELECT data here */ -- case MODE_SENSE: -- case MODE_SELECT: -- srb->cmd_len = 12; -- srb->cmnd[11] = 0; -- srb->cmnd[10] = 0; -- srb->cmnd[9] = 0; -- srb->cmnd[8] = srb->cmnd[4]; -- srb->cmnd[7] = 0; -- srb->cmnd[6] = 0; -- srb->cmnd[5] = 0; -- srb->cmnd[4] = 0; -- srb->cmnd[3] = 0; -- srb->cmnd[2] = srb->cmnd[2]; -- srb->cmnd[1] = srb->cmnd[1]; -- srb->cmnd[0] = srb->cmnd[0] | 0x40; -- break; -- } /* switch (srb->cmnd[0]) */ -- } /* if (us->flags & US_FL_MODE_XLATE) */ -- -- /* convert MODE_SELECT data here */ -- if ((us->flags & US_FL_MODE_XLATE) && (old_cmnd == MODE_SELECT)) -- usb_stor_scsiSense6to10(srb); -- - /* send the command to the transport layer */ - usb_stor_invoke_transport(srb, us); -- if (srb->result == SAM_STAT_GOOD) { -- -- /* Fix the MODE_SENSE data if we translated the command */ -- if ((us->flags & US_FL_MODE_XLATE) && (old_cmnd == MODE_SENSE)) -- usb_stor_scsiSense10to6(srb); - -+ if (srb->result == SAM_STAT_GOOD) { - /* Fix the INQUIRY data if necessary */ - fix_inquiry_data(srb); - ---- linux-2.6.0-test1/drivers/usb/storage/protocol.h 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/storage/protocol.h 2003-07-19 17:03:50.000000000 -0700 -@@ -41,7 +41,7 @@ - #ifndef _PROTOCOL_H_ - #define _PROTOCOL_H_ - --#include -+#include - #include "scsi.h" - #include "usb.h" - ---- linux-2.6.0-test1/drivers/usb/storage/scsiglue.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/storage/scsiglue.c 2003-07-19 17:03:50.000000000 -0700 -@@ -263,7 +263,6 @@ static int proc_info (struct Scsi_Host * - - #define DO_FLAG(a) if (f & US_FL_##a) pos += sprintf(pos, " " #a) - DO_FLAG(SINGLE_LUN); -- DO_FLAG(MODE_XLATE); - DO_FLAG(SCM_MULT_TARG); - DO_FLAG(FIX_INQUIRY); - DO_FLAG(FIX_CAPACITY); -@@ -346,499 +345,3 @@ unsigned char usb_stor_sense_invalidCDB[ - [12] = 0x24 /* Invalid Field in CDB */ - }; - --#define USB_STOR_SCSI_SENSE_HDRSZ 4 --#define USB_STOR_SCSI_SENSE_10_HDRSZ 8 -- --struct usb_stor_scsi_sense_hdr --{ -- __u8* dataLength; -- __u8* mediumType; -- __u8* devSpecParms; -- __u8* blkDescLength; --}; -- --typedef struct usb_stor_scsi_sense_hdr Usb_Stor_Scsi_Sense_Hdr; -- --union usb_stor_scsi_sense_hdr_u --{ -- Usb_Stor_Scsi_Sense_Hdr hdr; -- __u8* array[USB_STOR_SCSI_SENSE_HDRSZ]; --}; -- --typedef union usb_stor_scsi_sense_hdr_u Usb_Stor_Scsi_Sense_Hdr_u; -- --struct usb_stor_scsi_sense_hdr_10 --{ -- __u8* dataLengthMSB; -- __u8* dataLengthLSB; -- __u8* mediumType; -- __u8* devSpecParms; -- __u8* reserved1; -- __u8* reserved2; -- __u8* blkDescLengthMSB; -- __u8* blkDescLengthLSB; --}; -- --typedef struct usb_stor_scsi_sense_hdr_10 Usb_Stor_Scsi_Sense_Hdr_10; -- --union usb_stor_scsi_sense_hdr_10_u --{ -- Usb_Stor_Scsi_Sense_Hdr_10 hdr; -- __u8* array[USB_STOR_SCSI_SENSE_10_HDRSZ]; --}; -- --typedef union usb_stor_scsi_sense_hdr_10_u Usb_Stor_Scsi_Sense_Hdr_10_u; -- --void usb_stor_scsiSenseParseBuffer( Scsi_Cmnd* , Usb_Stor_Scsi_Sense_Hdr_u*, -- Usb_Stor_Scsi_Sense_Hdr_10_u*, int* ); -- --int usb_stor_scsiSense10to6( Scsi_Cmnd* the10 ) --{ -- __u8 *buffer=0; -- int outputBufferSize = 0; -- int length=0; -- struct scatterlist *sg = 0; -- int i=0, j=0, element=0; -- Usb_Stor_Scsi_Sense_Hdr_u the6Locations; -- Usb_Stor_Scsi_Sense_Hdr_10_u the10Locations; -- int sb=0,si=0,db=0,di=0; -- int sgLength=0; -- -- US_DEBUGP("-- converting 10 byte sense data to 6 byte\n"); -- the10->cmnd[0] = the10->cmnd[0] & 0xBF; -- -- /* Determine buffer locations */ -- usb_stor_scsiSenseParseBuffer( the10, &the6Locations, &the10Locations, -- &length ); -- -- /* Work out minimum buffer to output */ -- outputBufferSize = *the10Locations.hdr.dataLengthLSB; -- outputBufferSize += USB_STOR_SCSI_SENSE_HDRSZ; -- -- /* Check to see if we need to trucate the output */ -- if ( outputBufferSize > length ) -- { -- printk( KERN_WARNING USB_STORAGE -- "Had to truncate MODE_SENSE_10 buffer into MODE_SENSE.\n" ); -- printk( KERN_WARNING USB_STORAGE -- "outputBufferSize is %d and length is %d.\n", -- outputBufferSize, length ); -- } -- outputBufferSize = length; -- -- /* Data length */ -- if ( *the10Locations.hdr.dataLengthMSB != 0 ) /* MSB must be zero */ -- { -- printk( KERN_WARNING USB_STORAGE -- "Command will be truncated to fit in SENSE6 buffer.\n" ); -- *the6Locations.hdr.dataLength = 0xff; -- } -- else -- { -- *the6Locations.hdr.dataLength = *the10Locations.hdr.dataLengthLSB; -- } -- -- /* Medium type and DevSpecific parms */ -- *the6Locations.hdr.mediumType = *the10Locations.hdr.mediumType; -- *the6Locations.hdr.devSpecParms = *the10Locations.hdr.devSpecParms; -- -- /* Block descriptor length */ -- if ( *the10Locations.hdr.blkDescLengthMSB != 0 ) /* MSB must be zero */ -- { -- printk( KERN_WARNING USB_STORAGE -- "Command will be truncated to fit in SENSE6 buffer.\n" ); -- *the6Locations.hdr.blkDescLength = 0xff; -- } -- else -- { -- *the6Locations.hdr.blkDescLength = *the10Locations.hdr.blkDescLengthLSB; -- } -- -- if ( the10->use_sg == 0 ) -- { -- buffer = the10->request_buffer; -- /* Copy the rest of the data */ -- memmove( &(buffer[USB_STOR_SCSI_SENSE_HDRSZ]), -- &(buffer[USB_STOR_SCSI_SENSE_10_HDRSZ]), -- outputBufferSize - USB_STOR_SCSI_SENSE_HDRSZ ); -- /* initialise last bytes left in buffer due to smaller header */ -- memset( &(buffer[outputBufferSize -- -(USB_STOR_SCSI_SENSE_10_HDRSZ-USB_STOR_SCSI_SENSE_HDRSZ)]), -- 0, -- USB_STOR_SCSI_SENSE_10_HDRSZ-USB_STOR_SCSI_SENSE_HDRSZ ); -- } -- else -- { -- sg = (struct scatterlist *) the10->request_buffer; -- /* scan through this scatterlist and figure out starting positions */ -- for ( i=0; i < the10->use_sg; i++) -- { -- sgLength = sg[i].length; -- for ( j=0; juse_sg; -- } -- element++; -- } -- } -- -- /* Now we know where to start the copy from */ -- element = USB_STOR_SCSI_SENSE_HDRSZ; -- while ( element < outputBufferSize -- -(USB_STOR_SCSI_SENSE_10_HDRSZ-USB_STOR_SCSI_SENSE_HDRSZ) ) -- { -- /* check limits */ -- if ( sb >= the10->use_sg || -- si >= sg[sb].length || -- db >= the10->use_sg || -- di >= sg[db].length ) -- { -- printk( KERN_ERR USB_STORAGE -- "Buffer overrun averted, this shouldn't happen!\n" ); -- break; -- } -- -- /* copy one byte */ -- { -- char *src = sg_address(sg[sb]) + si; -- char *dst = sg_address(sg[db]) + di; -- -- *dst = *src; -- } -- -- /* get next destination */ -- if ( sg[db].length-1 == di ) -- { -- db++; -- di=0; -- } -- else -- { -- di++; -- } -- -- /* get next source */ -- if ( sg[sb].length-1 == si ) -- { -- sb++; -- si=0; -- } -- else -- { -- si++; -- } -- -- element++; -- } -- /* zero the remaining bytes */ -- while ( element < outputBufferSize ) -- { -- /* check limits */ -- if ( db >= the10->use_sg || -- di >= sg[db].length ) -- { -- printk( KERN_ERR USB_STORAGE -- "Buffer overrun averted, this shouldn't happen!\n" ); -- break; -- } -- -- *(char*)(sg_address(sg[db])) = 0; -- -- /* get next destination */ -- if ( sg[db].length-1 == di ) -- { -- db++; -- di=0; -- } -- else -- { -- di++; -- } -- element++; -- } -- } -- -- /* All done any everything was fine */ -- return 0; --} -- --int usb_stor_scsiSense6to10( Scsi_Cmnd* the6 ) --{ -- /* will be used to store part of buffer */ -- __u8 tempBuffer[USB_STOR_SCSI_SENSE_10_HDRSZ-USB_STOR_SCSI_SENSE_HDRSZ], -- *buffer=0; -- int outputBufferSize = 0; -- int length=0; -- struct scatterlist *sg = 0; -- int i=0, j=0, element=0; -- Usb_Stor_Scsi_Sense_Hdr_u the6Locations; -- Usb_Stor_Scsi_Sense_Hdr_10_u the10Locations; -- int sb=0,si=0,db=0,di=0; -- int lsb=0,lsi=0,ldb=0,ldi=0; -- -- US_DEBUGP("-- converting 6 byte sense data to 10 byte\n"); -- the6->cmnd[0] = the6->cmnd[0] | 0x40; -- -- /* Determine buffer locations */ -- usb_stor_scsiSenseParseBuffer( the6, &the6Locations, &the10Locations, -- &length ); -- -- /* Work out minimum buffer to output */ -- outputBufferSize = *the6Locations.hdr.dataLength; -- outputBufferSize += USB_STOR_SCSI_SENSE_10_HDRSZ; -- -- /* Check to see if we need to trucate the output */ -- if ( outputBufferSize > length ) -- { -- printk( KERN_WARNING USB_STORAGE -- "Had to truncate MODE_SENSE into MODE_SENSE_10 buffer.\n" ); -- printk( KERN_WARNING USB_STORAGE -- "outputBufferSize is %d and length is %d.\n", -- outputBufferSize, length ); -- } -- outputBufferSize = length; -- -- /* Block descriptor length - save these before overwriting */ -- tempBuffer[2] = *the10Locations.hdr.blkDescLengthMSB; -- tempBuffer[3] = *the10Locations.hdr.blkDescLengthLSB; -- *the10Locations.hdr.blkDescLengthLSB = *the6Locations.hdr.blkDescLength; -- *the10Locations.hdr.blkDescLengthMSB = 0; -- -- /* reserved - save these before overwriting */ -- tempBuffer[0] = *the10Locations.hdr.reserved1; -- tempBuffer[1] = *the10Locations.hdr.reserved2; -- *the10Locations.hdr.reserved1 = *the10Locations.hdr.reserved2 = 0; -- -- /* Medium type and DevSpecific parms */ -- *the10Locations.hdr.devSpecParms = *the6Locations.hdr.devSpecParms; -- *the10Locations.hdr.mediumType = *the6Locations.hdr.mediumType; -- -- /* Data length */ -- *the10Locations.hdr.dataLengthLSB = *the6Locations.hdr.dataLength; -- *the10Locations.hdr.dataLengthMSB = 0; -- -- if ( !the6->use_sg ) -- { -- buffer = the6->request_buffer; -- /* Copy the rest of the data */ -- memmove( &(buffer[USB_STOR_SCSI_SENSE_10_HDRSZ]), -- &(buffer[USB_STOR_SCSI_SENSE_HDRSZ]), -- outputBufferSize-USB_STOR_SCSI_SENSE_10_HDRSZ ); -- /* Put the first four bytes (after header) in place */ -- memcpy( &(buffer[USB_STOR_SCSI_SENSE_10_HDRSZ]), -- tempBuffer, -- USB_STOR_SCSI_SENSE_10_HDRSZ-USB_STOR_SCSI_SENSE_HDRSZ ); -- } -- else -- { -- sg = (struct scatterlist *) the6->request_buffer; -- /* scan through this scatterlist and figure out ending positions */ -- for ( i=0; i < the6->use_sg; i++) -- { -- for ( j=0; juse_sg; -- break; -- } -- element++; -- } -- } -- /* scan through this scatterlist and figure out starting positions */ -- element = length-1; -- /* destination is the last element */ -- db=the6->use_sg-1; -- di=sg[db].length-1; -- for ( i=the6->use_sg-1; i >= 0; i--) -- { -- for ( j=sg[i].length-1; j>=0; j-- ) -- { -- /* get to end of header and find source for copy */ -- if ( element == length - 1 -- - (USB_STOR_SCSI_SENSE_10_HDRSZ-USB_STOR_SCSI_SENSE_HDRSZ) ) -- { -- sb=i; -- si=j; -- /* we've found both sets now, exit loops */ -- j=-1; -- i=-1; -- } -- element--; -- } -- } -- /* Now we know where to start the copy from */ -- element = length-1 -- - (USB_STOR_SCSI_SENSE_10_HDRSZ-USB_STOR_SCSI_SENSE_HDRSZ); -- while ( element >= USB_STOR_SCSI_SENSE_10_HDRSZ ) -- { -- /* check limits */ -- if ( ( sb <= lsb && si < lsi ) || -- ( db <= ldb && di < ldi ) ) -- { -- printk( KERN_ERR USB_STORAGE -- "Buffer overrun averted, this shouldn't happen!\n" ); -- break; -- } -- -- /* copy one byte */ -- { -- char *src = sg_address(sg[sb]) + si; -- char *dst = sg_address(sg[db]) + di; -- -- *dst = *src; -- } -- -- /* get next destination */ -- if ( di == 0 ) -- { -- db--; -- di=sg[db].length-1; -- } -- else -- { -- di--; -- } -- -- /* get next source */ -- if ( si == 0 ) -- { -- sb--; -- si=sg[sb].length-1; -- } -- else -- { -- si--; -- } -- -- element--; -- } -- /* copy the remaining four bytes */ -- while ( element >= USB_STOR_SCSI_SENSE_HDRSZ ) -- { -- /* check limits */ -- if ( db <= ldb && di < ldi ) -- { -- printk( KERN_ERR USB_STORAGE -- "Buffer overrun averted, this shouldn't happen!\n" ); -- break; -- } -- -- { -- char *dst = sg_address(sg[db]) + di; -- -- *dst = tempBuffer[element-USB_STOR_SCSI_SENSE_HDRSZ]; -- } -- -- -- /* get next destination */ -- if ( di == 0 ) -- { -- db--; -- di=sg[db].length-1; -- } -- else -- { -- di--; -- } -- element--; -- } -- } -- -- /* All done and everything was fine */ -- return 0; --} -- --void usb_stor_scsiSenseParseBuffer( Scsi_Cmnd* srb, Usb_Stor_Scsi_Sense_Hdr_u* the6, -- Usb_Stor_Scsi_Sense_Hdr_10_u* the10, -- int* length_p ) -- --{ -- int i = 0, j=0, element=0; -- struct scatterlist *sg = 0; -- int length = 0; -- __u8* buffer=0; -- -- /* are we scatter-gathering? */ -- if ( srb->use_sg != 0 ) -- { -- /* loop over all the scatter gather structures and -- * get pointer to the data members in the headers -- * (also work out the length while we're here) -- */ -- sg = (struct scatterlist *) srb->request_buffer; -- for (i = 0; i < srb->use_sg; i++) -- { -- length += sg[i].length; -- /* We only do the inner loop for the headers */ -- if ( element < USB_STOR_SCSI_SENSE_10_HDRSZ ) -- { -- /* scan through this scatterlist */ -- for ( j=0; jarray[element] = sg_address(sg[i]) + j; -- the10->array[element] = sg_address(sg[i]) + j; -- -- } -- else if ( element < USB_STOR_SCSI_SENSE_10_HDRSZ ) -- { -- /* only the longer headers still cares now */ -- the10->array[element] = sg_address(sg[i]) + j; -- -- } -- /* increase element counter */ -- element++; -- } -- } -- } -- } -- else -- { -- length = srb->request_bufflen; -- buffer = srb->request_buffer; -- if ( length < USB_STOR_SCSI_SENSE_10_HDRSZ ) -- printk( KERN_ERR USB_STORAGE -- "Buffer length smaller than header!!" ); -- for( i=0; iarray[i] = &(buffer[i]); -- the10->array[i] = &(buffer[i]); -- } -- else -- { -- the10->array[i] = &(buffer[i]); -- } -- } -- } -- -- /* Set value of length passed in */ -- *length_p = length; --} -- ---- linux-2.6.0-test1/drivers/usb/storage/scsiglue.h 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/storage/scsiglue.h 2003-07-19 17:03:50.000000000 -0700 -@@ -41,7 +41,7 @@ - #ifndef _SCSIGLUE_H_ - #define _SCSIGLUE_H_ - --#include -+#include - #include "scsi.h" - #include "hosts.h" - ---- linux-2.6.0-test1/drivers/usb/storage/sddr09.c 2003-06-14 12:18:30.000000000 -0700 -+++ 25/drivers/usb/storage/sddr09.c 2003-07-19 17:03:50.000000000 -0700 -@@ -261,12 +261,13 @@ sddr09_send_scsi_command(struct us_data - */ - static int - sddr09_test_unit_ready(struct us_data *us) { -- unsigned char command[6] = { -- 0, LUNBITS, 0, 0, 0, 0 -- }; -+ unsigned char *command = us->iobuf; - int result; - -- result = sddr09_send_scsi_command(us, command, sizeof(command)); -+ memset(command, 0, 6); -+ command[1] = LUNBITS; -+ -+ result = sddr09_send_scsi_command(us, command, 6); - - US_DEBUGP("sddr09_test_unit_ready returns %d\n", result); - -@@ -281,12 +282,15 @@ sddr09_test_unit_ready(struct us_data *u - */ - static int - sddr09_request_sense(struct us_data *us, unsigned char *sensebuf, int buflen) { -- unsigned char command[12] = { -- 0x03, LUNBITS, 0, 0, buflen, 0, 0, 0, 0, 0, 0, 0 -- }; -+ unsigned char *command = us->iobuf; - int result; - -- result = sddr09_send_scsi_command(us, command, sizeof(command)); -+ memset(command, 0, 12); -+ command[0] = 0x03; -+ command[1] = LUNBITS; -+ command[4] = buflen; -+ -+ result = sddr09_send_scsi_command(us, command, 12); - if (result != USB_STOR_TRANSPORT_GOOD) { - US_DEBUGP("request sense failed\n"); - return result; -@@ -331,20 +335,23 @@ sddr09_readX(struct us_data *us, int x, - int nr_of_pages, int bulklen, unsigned char *buf, - int use_sg) { - -- unsigned char command[12] = { -- 0xe8, LUNBITS | x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -- }; -+ unsigned char *command = us->iobuf; - int result; - -+ command[0] = 0xE8; -+ command[1] = LUNBITS | x; - command[2] = MSB_of(fromaddress>>16); - command[3] = LSB_of(fromaddress>>16); - command[4] = MSB_of(fromaddress & 0xFFFF); - command[5] = LSB_of(fromaddress & 0xFFFF); -- -+ command[6] = 0; -+ command[7] = 0; -+ command[8] = 0; -+ command[9] = 0; - command[10] = MSB_of(nr_of_pages); - command[11] = LSB_of(nr_of_pages); - -- result = sddr09_send_scsi_command(us, command, sizeof(command)); -+ result = sddr09_send_scsi_command(us, command, 12); - - if (result != USB_STOR_TRANSPORT_GOOD) { - US_DEBUGP("Result for send_control in sddr09_read2%d %d\n", -@@ -458,17 +465,18 @@ sddr09_read23(struct us_data *us, unsign - */ - static int - sddr09_erase(struct us_data *us, unsigned long Eaddress) { -- unsigned char command[12] = { -- 0xea, LUNBITS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -- }; -+ unsigned char *command = us->iobuf; - int result; - -+ memset(command, 0, 12); -+ command[0] = 0xEA; -+ command[1] = LUNBITS; - command[6] = MSB_of(Eaddress>>16); - command[7] = LSB_of(Eaddress>>16); - command[8] = MSB_of(Eaddress & 0xFFFF); - command[9] = LSB_of(Eaddress & 0xFFFF); - -- result = sddr09_send_scsi_command(us, command, sizeof(command)); -+ result = sddr09_send_scsi_command(us, command, 12); - - if (result != USB_STOR_TRANSPORT_GOOD) - US_DEBUGP("Result for send_control in sddr09_erase %d\n", -@@ -493,11 +501,12 @@ sddr09_writeX(struct us_data *us, - unsigned long Waddress, unsigned long Eaddress, - int nr_of_pages, int bulklen, unsigned char *buf, int use_sg) { - -- unsigned char command[12] = { -- 0xe9, LUNBITS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -- }; -+ unsigned char *command = us->iobuf; - int result; - -+ command[0] = 0xE9; -+ command[1] = LUNBITS; -+ - command[2] = MSB_of(Waddress>>16); - command[3] = LSB_of(Waddress>>16); - command[4] = MSB_of(Waddress & 0xFFFF); -@@ -511,7 +520,7 @@ sddr09_writeX(struct us_data *us, - command[10] = MSB_of(nr_of_pages); - command[11] = LSB_of(nr_of_pages); - -- result = sddr09_send_scsi_command(us, command, sizeof(command)); -+ result = sddr09_send_scsi_command(us, command, 12); - - if (result != USB_STOR_TRANSPORT_GOOD) { - US_DEBUGP("Result for send_control in sddr09_writeX %d\n", -@@ -554,15 +563,15 @@ sddr09_write_inplace(struct us_data *us, - */ - static int - sddr09_read_sg_test_only(struct us_data *us) { -- unsigned char command[15] = { -- 0xe7, LUNBITS, 0 -- }; -+ unsigned char *command = us->iobuf; - int result, bulklen, nsg, ct; - unsigned char *buf; - unsigned long address; - - nsg = bulklen = 0; -- -+ command[0] = 0xE7; -+ command[1] = LUNBITS; -+ command[2] = 0; - address = 040000; ct = 1; - nsg++; - bulklen += (ct << 9); -@@ -628,20 +637,22 @@ sddr09_read_sg_test_only(struct us_data - static int - sddr09_read_status(struct us_data *us, unsigned char *status) { - -- unsigned char command[12] = { -- 0xec, LUNBITS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -- }; -- unsigned char data[64]; -+ unsigned char *command = us->iobuf; -+ unsigned char *data = us->iobuf; - int result; - - US_DEBUGP("Reading status...\n"); - -- result = sddr09_send_scsi_command(us, command, sizeof(command)); -+ memset(command, 0, 12); -+ command[0] = 0xEC; -+ command[1] = LUNBITS; -+ -+ result = sddr09_send_scsi_command(us, command, 12); - if (result != USB_STOR_TRANSPORT_GOOD) - return result; - - result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, -- data, sizeof(data), NULL); -+ data, 64, NULL); - *status = data[0]; - return (result == USB_STOR_XFER_GOOD ? - USB_STOR_TRANSPORT_GOOD : USB_STOR_TRANSPORT_ERROR); -@@ -953,13 +964,15 @@ sddr09_read_control(struct us_data *us, - */ - static int - sddr09_read_deviceID(struct us_data *us, unsigned char *deviceID) { -- unsigned char command[12] = { -- 0xed, LUNBITS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -- }; -- unsigned char content[64]; -+ unsigned char *command = us->iobuf; -+ unsigned char *content = us->iobuf; - int result, i; - -- result = sddr09_send_scsi_command(us, command, sizeof(command)); -+ memset(command, 0, 12); -+ command[0] = 0xED; -+ command[1] = LUNBITS; -+ -+ result = sddr09_send_scsi_command(us, command, 12); - if (result != USB_STOR_TRANSPORT_GOOD) - return result; - -@@ -1006,11 +1019,13 @@ sddr09_get_wp(struct us_data *us, struct - static int - sddr09_reset(struct us_data *us) { - -- unsigned char command[12] = { -- 0xeb, LUNBITS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -- }; -+ unsigned char *command = us->iobuf; -+ -+ memset(command, 0, 12); -+ command[0] = 0xEB; -+ command[1] = LUNBITS; - -- return sddr09_send_scsi_command(us, command, sizeof(command)); -+ return sddr09_send_scsi_command(us, command, 12); - } - #endif - -@@ -1313,7 +1328,7 @@ sddr09_init_card_info(struct us_data *us - int - sddr09_init(struct us_data *us) { - int result; -- unsigned char data[18]; -+ unsigned char *data = us->iobuf; - - result = sddr09_send_command(us, 0x01, USB_DIR_IN, data, 2); - if (result != USB_STOR_TRANSPORT_GOOD) { -@@ -1333,10 +1348,10 @@ sddr09_init(struct us_data *us) { - US_DEBUGP("SDDR09init: %02X %02X\n", data[0], data[1]); - // get 07 00 - -- result = sddr09_request_sense(us, data, sizeof(data)); -+ result = sddr09_request_sense(us, data, 18); - if (result == USB_STOR_TRANSPORT_GOOD && data[2] != 0) { - int j; -- for (j=0; jiobuf; -+ unsigned char *status = us->iobuf; - struct sddr55_card_info *info = (struct sddr55_card_info *)us->extra; - - /* send command */ -+ memset(command, 0, 8); -+ command[5] = 0xB0; -+ command[7] = 0x80; - result = sddr55_bulk_transport(us, - SCSI_DATA_WRITE, command, 8); - -@@ -158,10 +159,8 @@ static int sddr55_read_data(struct us_da - int use_sg) { - - int result = USB_STOR_TRANSPORT_GOOD; -- unsigned char command[8] = { -- 0, 0, 0, 0, 0, 0xb0, 0, 0x85 -- }; -- unsigned char status[8]; -+ unsigned char *command = us->iobuf; -+ unsigned char *status = us->iobuf; - struct sddr55_card_info *info = (struct sddr55_card_info *)us->extra; - - unsigned int pba; -@@ -205,11 +204,15 @@ static int sddr55_read_data(struct us_da - - address = (pba << info->blockshift) + page; - -+ command[0] = 0; - command[1] = LSB_of(address>>16); - command[2] = LSB_of(address>>8); - command[3] = LSB_of(address); - -+ command[4] = 0; -+ command[5] = 0xB0; - command[6] = LSB_of(pages << (1 - info->smallpageshift)); -+ command[7] = 0x85; - - /* send command */ - result = sddr55_bulk_transport(us, -@@ -274,10 +277,8 @@ static int sddr55_write_data(struct us_d - int use_sg) { - - int result = USB_STOR_TRANSPORT_GOOD; -- unsigned char command[8] = { -- 0, 0, 0, 0, 0, 0xb0, 0, 0x86 -- }; -- unsigned char status[8]; -+ unsigned char *command = us->iobuf; -+ unsigned char *status = us->iobuf; - struct sddr55_card_info *info = (struct sddr55_card_info *)us->extra; - - unsigned int pba; -@@ -380,6 +381,8 @@ static int sddr55_write_data(struct us_d - command[6] = MSB_of(lba % 1000); - - command[4] |= LSB_of(pages >> info->smallpageshift); -+ command[5] = 0xB0; -+ command[7] = 0x86; - - /* send command */ - result = sddr55_bulk_transport(us, -@@ -473,11 +476,12 @@ static int sddr55_read_deviceID(struct u - unsigned char *deviceID) { - - int result; -- unsigned char command[8] = { -- 0, 0, 0, 0, 0, 0xb0, 0, 0x84 -- }; -- unsigned char content[64]; -+ unsigned char *command = us->iobuf; -+ unsigned char *content = us->iobuf; - -+ memset(command, 0, 8); -+ command[5] = 0xB0; -+ command[7] = 0x84; - result = sddr55_bulk_transport(us, SCSI_DATA_WRITE, command, 8); - - US_DEBUGP("Result of send_control for device ID is %d\n", -@@ -598,7 +602,7 @@ static int sddr55_read_map(struct us_dat - struct sddr55_card_info *info = (struct sddr55_card_info *)(us->extra); - int numblocks; - unsigned char *buffer; -- unsigned char command[8] = { 0, 0, 0, 0, 0, 0xb0, 0, 0x8a}; -+ unsigned char *command = us->iobuf; - int i; - unsigned short lba; - unsigned short max_lba; -@@ -614,7 +618,10 @@ static int sddr55_read_map(struct us_dat - if (!buffer) - return -1; - -+ memset(command, 0, 8); -+ command[5] = 0xB0; - command[6] = numblocks * 2 / 256; -+ command[7] = 0x8A; - - result = sddr55_bulk_transport(us, SCSI_DATA_WRITE, command, 8); - ---- linux-2.6.0-test1/drivers/usb/storage/transport.h 2003-06-22 12:04:44.000000000 -0700 -+++ 25/drivers/usb/storage/transport.h 2003-07-19 17:03:50.000000000 -0700 -@@ -42,7 +42,7 @@ - #define _TRANSPORT_H_ - - #include --#include -+#include - #include "usb.h" - #include "scsi.h" - ---- linux-2.6.0-test1/drivers/usb/storage/unusual_devs.h 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/usb/storage/unusual_devs.h 2003-07-19 17:03:50.000000000 -0700 -@@ -119,7 +119,7 @@ UNUSUAL_DEV( 0x04b8, 0x0602, 0x0110, 0x - UNUSUAL_DEV( 0x04cb, 0x0100, 0x0000, 0x2210, - "Fujifilm", - "FinePix 1400Zoom", -- US_SC_8070, US_PR_CBI, NULL, US_FL_FIX_INQUIRY), -+ US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_FIX_INQUIRY), - - /* Reported by Peter Wächtler - * The device needs the flags only. -@@ -236,7 +236,7 @@ UNUSUAL_DEV( 0x0525, 0xa140, 0x0100, 0x - UNUSUAL_DEV( 0x054c, 0x0010, 0x0106, 0x0450, - "Sony", - "DSC-S30/S70/S75/505V/F505/F707/F717/P8", -- US_SC_SCSI, US_PR_CB, NULL, -+ US_SC_SCSI, US_PR_DEVICE, NULL, - US_FL_SINGLE_LUN | US_FL_MODE_XLATE ), - - /* Reported by wim@geeks.nl */ -@@ -555,7 +555,7 @@ UNUSUAL_DEV( 0x0839, 0x000a, 0x0001, 0x0 - UNUSUAL_DEV( 0x08ca, 0x2011, 0x0000, 0x9999, - "AIPTEK", - "PocketCAM 3Mega", -- US_SC_SCSI, US_PR_BULK, NULL, -+ US_SC_DEVICE, US_PR_DEVICE, NULL, - US_FL_MODE_XLATE ), - - /* aeb */ ---- linux-2.6.0-test1/drivers/usb/storage/usb.c 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/storage/usb.c 2003-07-19 17:03:50.000000000 -0700 -@@ -958,6 +958,8 @@ static int storage_probe(struct usb_inte - goto BadDevice; - } - -+ scsi_scan_host(us->host); -+ - printk(KERN_DEBUG - "WARNING: USB Mass Storage data integrity not assured\n"); - printk(KERN_DEBUG ---- linux-2.6.0-test1/drivers/usb/storage/usb.h 2003-07-02 14:53:16.000000000 -0700 -+++ 25/drivers/usb/storage/usb.h 2003-07-19 17:03:50.000000000 -0700 -@@ -45,7 +45,7 @@ - #define _USB_H_ - - #include --#include -+#include - #include - #include - #include -@@ -69,11 +69,10 @@ struct us_unusual_dev { - - /* Flag definitions: these entries are static */ - #define US_FL_SINGLE_LUN 0x00000001 /* allow access to only LUN 0 */ --#define US_FL_MODE_XLATE 0x00000002 /* translate _6 to _10 commands for -- Win/MacOS compatibility */ -+#define US_FL_MODE_XLATE 0 /* [no longer used] */ - #define US_FL_IGNORE_SER 0 /* [no longer used] */ - #define US_FL_SCM_MULT_TARG 0x00000020 /* supports multiple targets */ --#define US_FL_FIX_INQUIRY 0x00000040 /* INQUIRY response needs fixing */ -+#define US_FL_FIX_INQUIRY 0x00000040 /* INQUIRY response needs faking */ - #define US_FL_FIX_CAPACITY 0x00000080 /* READ CAPACITY response too big */ - - /* Dynamic flag definitions: used in set_bit() etc. */ ---- linux-2.6.0-test1/drivers/usb/usb-skeleton.c 2003-07-13 21:44:34.000000000 -0700 -+++ 25/drivers/usb/usb-skeleton.c 2003-07-19 17:03:50.000000000 -0700 -@@ -507,7 +507,7 @@ static int skel_probe(struct usb_interfa - struct usb_endpoint_descriptor *endpoint; - size_t buffer_size; - int i; -- int retval; -+ int retval = -ENOMEM; - - /* See if the device offered us matches what we can accept */ - if ((udev->descriptor.idVendor != USB_SKEL_VENDOR_ID) || -@@ -515,18 +515,11 @@ static int skel_probe(struct usb_interfa - return -ENODEV; - } - -- retval = usb_register_dev (interface, &skel_class); -- if (retval) { -- /* something prevented us from registering this driver */ -- err ("Not able to get a minor for this device."); -- goto exit; -- } -- - /* allocate memory for our device state and initialize it */ - dev = kmalloc (sizeof(struct usb_skel), GFP_KERNEL); - if (dev == NULL) { - err ("Out of memory"); -- goto exit_minor; -+ goto error; - } - memset (dev, 0x00, sizeof (*dev)); - -@@ -603,24 +596,24 @@ static int skel_probe(struct usb_interfa - /* allow device read, write and ioctl */ - dev->present = 1; - -+ /* we can register the device now, as it is ready */ -+ usb_set_intfdata (interface, dev); -+ retval = usb_register_dev (interface, &skel_class); -+ if (retval) { -+ /* something prevented us from registering this driver */ -+ err ("Not able to get a minor for this device."); -+ usb_set_intfdata (interface, NULL); -+ goto error; -+ } -+ -+ - /* let the user know what node this device is now attached to */ - info ("USB Skeleton device now attached to USBSkel-%d", dev->minor); -- -- goto exit; -+ return 0; - - error: - skel_delete (dev); -- dev = NULL; -- --exit_minor: -- usb_deregister_dev (interface, &skel_class); -- --exit: -- if (dev) { -- usb_set_intfdata (interface, dev); -- return 0; -- } -- return -ENODEV; -+ return retval; - } - - ---- linux-2.6.0-test1/drivers/video/cfbimgblt.c 2003-06-26 22:07:25.000000000 -0700 -+++ 25/drivers/video/cfbimgblt.c 2003-07-19 17:04:55.000000000 -0700 -@@ -325,7 +325,7 @@ void cfb_imageblit(struct fb_info *p, co - else - slow_imageblit(image, p, dst1, fgcolor, bgcolor, - start_index, pitch_index); -- } else if (image->depth == bpp) -+ } else if (image->depth <= bpp) - color_imageblit(image, p, dst1, start_index, pitch_index); - } - ---- linux-2.6.0-test1/drivers/video/chipsfb.c 2003-06-14 12:18:09.000000000 -0700 -+++ 25/drivers/video/chipsfb.c 2003-07-19 17:04:55.000000000 -0700 -@@ -85,7 +85,7 @@ static struct pmu_sleep_notifier chips_s - /* - * Exported functions - */ --int chips_init(void); -+int chipsfb_init(void); - - static int chipsfb_pci_init(struct pci_dev *dp, const struct pci_device_id *); - static int chipsfb_check_var(struct fb_var_screeninfo *var, -@@ -460,7 +460,7 @@ static struct pci_driver chipsfb_driver - .remove = __devexit_p(chipsfb_remove), - }; - --int __init chips_init(void) -+int __init chipsfb_init(void) - { - return pci_module_init(&chipsfb_driver); - } ---- linux-2.6.0-test1/drivers/video/console/fbcon.c 2003-06-14 12:18:25.000000000 -0700 -+++ 25/drivers/video/console/fbcon.c 2003-07-19 17:04:55.000000000 -0700 -@@ -195,8 +195,7 @@ static void fb_flashcursor(void *private - { - struct fb_info *info = (struct fb_info *) private; - -- /* Test to see if the cursor is erased but still on */ -- if (!info || (info->cursor.rop == ROP_COPY)) -+ if (!info) - return; - info->cursor.enable ^= 1; - info->fbops->fb_cursor(info, &info->cursor); -@@ -226,8 +225,7 @@ static void cursor_timer_handler(unsigne - struct fb_info *info = (struct fb_info *) dev_addr; - - schedule_work(&info->queue); -- cursor_timer.expires = jiffies + HZ / 5; -- add_timer(&cursor_timer); -+ mod_timer(&cursor_timer, jiffies + HZ/5); - } - - int __init fb_console_setup(char *this_opt) -@@ -308,97 +306,6 @@ int set_con2fb_map(int unit, int newidx) - } - - /* -- * drawing helpers -- */ --static void putcs_unaligned(struct vc_data *vc, struct fb_info *info, -- struct fb_image *image, int count, -- const unsigned short *s) --{ -- unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; -- unsigned int width = (vc->vc_font.width + 7) >> 3; -- unsigned int cellsize = vc->vc_font.height * width; -- unsigned int maxcnt = info->pixmap.size/cellsize; -- unsigned int shift_low = 0, mod = vc->vc_font.width % 8; -- unsigned int shift_high = 8, size, pitch, cnt, k; -- unsigned int buf_align = info->pixmap.buf_align - 1; -- unsigned int scan_align = info->pixmap.scan_align - 1; -- unsigned int idx = vc->vc_font.width >> 3; -- u8 mask, *src, *dst, *dst0; -- -- while (count) { -- if (count > maxcnt) -- cnt = k = maxcnt; -- else -- cnt = k = count; -- -- image->width = vc->vc_font.width * cnt; -- pitch = ((image->width + 7) >> 3) + scan_align; -- pitch &= ~scan_align; -- size = pitch * vc->vc_font.height + buf_align; -- size &= ~buf_align; -- dst0 = info->pixmap.addr + fb_get_buffer_offset(info, size); -- image->data = dst0; -- while (k--) { -- src = vc->vc_font.data + (scr_readw(s++) & charmask)* -- cellsize; -- dst = dst0; -- mask = (u8) (0xfff << shift_high); -- move_buf_unaligned(info, dst, src, pitch, image->height, -- mask, shift_high, shift_low, mod, idx); -- shift_low += mod; -- dst0 += (shift_low >= 8) ? width : width - 1; -- shift_low &= 7; -- shift_high = 8 - shift_low; -- } -- info->fbops->fb_imageblit(info, image); -- image->dx += cnt * vc->vc_font.width; -- count -= cnt; -- atomic_dec(&info->pixmap.count); -- smp_mb__after_atomic_dec(); -- } --} -- --static void putcs_aligned(struct vc_data *vc, struct fb_info *info, -- struct fb_image *image, int count, -- const unsigned short *s) --{ -- unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; -- unsigned int width = vc->vc_font.width >> 3; -- unsigned int cellsize = vc->vc_font.height * width; -- unsigned int maxcnt = info->pixmap.size/cellsize; -- unsigned int scan_align = info->pixmap.scan_align - 1; -- unsigned int buf_align = info->pixmap.buf_align - 1; -- unsigned int pitch, cnt, size, k; -- u8 *src, *dst, *dst0; -- -- while (count) { -- if (count > maxcnt) -- cnt = k = maxcnt; -- else -- cnt = k = count; -- -- pitch = width * cnt + scan_align; -- pitch &= ~scan_align; -- size = pitch * vc->vc_font.height + buf_align; -- size &= ~buf_align; -- image->width = vc->vc_font.width * cnt; -- dst0 = info->pixmap.addr + fb_get_buffer_offset(info, size); -- image->data = dst0; -- while (k--) { -- src = vc->vc_font.data + (scr_readw(s++)&charmask)*cellsize; -- dst = dst0; -- move_buf_aligned(info, dst, src, pitch, width, image->height); -- dst0 += width; -- } -- info->fbops->fb_imageblit(info, image); -- image->dx += cnt * vc->vc_font.width; -- count -= cnt; -- atomic_dec(&info->pixmap.count); -- smp_mb__after_atomic_dec(); -- } --} -- --/* - * Accelerated handlers. - */ - void accel_bmove(struct vc_data *vc, struct fb_info *info, int sy, -@@ -432,48 +339,21 @@ void accel_clear(struct vc_data *vc, str - info->fbops->fb_fillrect(info, ®ion); - } - --static void accel_putc(struct vc_data *vc, struct fb_info *info, -- int c, int ypos, int xpos) -+void accel_putcs(struct vc_data *vc, struct fb_info *info, -+ const unsigned short *s, int count, int yy, int xx) - { - unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; - unsigned int width = (vc->vc_font.width + 7) >> 3; -+ unsigned int cellsize = vc->vc_font.height * width; -+ unsigned int maxcnt = info->pixmap.size/cellsize; - unsigned int scan_align = info->pixmap.scan_align - 1; - unsigned int buf_align = info->pixmap.buf_align - 1; -+ unsigned int shift_low = 0, mod = vc->vc_font.width % 8; -+ unsigned int shift_high = 8, pitch, cnt, size, k; - int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; - int fgshift = (vc->vc_hi_font_mask) ? 9 : 8; -- unsigned int size, pitch; -- struct fb_image image; -- u8 *src, *dst; -- -- image.dx = xpos * vc->vc_font.width; -- image.dy = ypos * vc->vc_font.height; -- image.width = vc->vc_font.width; -- image.height = vc->vc_font.height; -- image.fg_color = attr_fgcol(fgshift, c); -- image.bg_color = attr_bgcol(bgshift, c); -- image.depth = 1; -- -- pitch = width + scan_align; -- pitch &= ~scan_align; -- size = pitch * vc->vc_font.height; -- size += buf_align; -- size &= ~buf_align; -- dst = info->pixmap.addr + fb_get_buffer_offset(info, size); -- image.data = dst; -- src = vc->vc_font.data + (c & charmask) * vc->vc_font.height * width; -- -- move_buf_aligned(info, dst, src, pitch, width, image.height); -- -- info->fbops->fb_imageblit(info, &image); -- atomic_dec(&info->pixmap.count); -- smp_mb__after_atomic_dec(); --} -- --void accel_putcs(struct vc_data *vc, struct fb_info *info, -- const unsigned short *s, int count, int yy, int xx) --{ -- int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; -- int fgshift = (vc->vc_hi_font_mask) ? 9 : 8; -+ unsigned int idx = vc->vc_font.width >> 3; -+ u8 *src, *dst, *dst0, mask; - struct fb_image image; - u16 c = scr_readw(s); - -@@ -484,10 +364,44 @@ void accel_putcs(struct vc_data *vc, str - image.height = vc->vc_font.height; - image.depth = 1; - -- if (!(vc->vc_font.width & 7)) -- putcs_aligned(vc, info, &image, count, s); -- else -- putcs_unaligned(vc, info, &image, count, s); -+ while (count) { -+ if (count > maxcnt) -+ cnt = k = maxcnt; -+ else -+ cnt = k = count; -+ -+ image.width = vc->vc_font.width * cnt; -+ pitch = ((image.width + 7) >> 3) + scan_align; -+ pitch &= ~scan_align; -+ size = pitch * vc->vc_font.height + buf_align; -+ size &= ~buf_align; -+ dst0 = fb_get_buffer_offset(info, &info->pixmap, size); -+ image.data = dst0; -+ while (k--) { -+ src = vc->vc_font.data + (scr_readw(s++) & charmask)*cellsize; -+ dst = dst0; -+ -+ if (mod) { -+ mask = (u8) (0xfff << shift_high); -+ move_buf_unaligned(info, &info->pixmap, dst, src, pitch, -+ image.height, mask, shift_high, -+ shift_low, mod, idx); -+ shift_low += mod; -+ dst0 += (shift_low >= 8) ? width : width - 1; -+ shift_low &= 7; -+ shift_high = 8 - shift_low; -+ } else { -+ move_buf_aligned(info, &info->pixmap, dst, src, pitch, idx, -+ image.height); -+ dst0 += width; -+ } -+ } -+ info->fbops->fb_imageblit(info, &image); -+ image.dx += cnt * vc->vc_font.width; -+ count -= cnt; -+ atomic_dec(&info->pixmap.count); -+ smp_mb__after_atomic_dec(); -+ } - } - - void accel_clear_margins(struct vc_data *vc, struct fb_info *info, -@@ -676,7 +590,7 @@ static const char *fbcon_startup(void) - if (!info->queue.func) { - INIT_WORK(&info->queue, fb_flashcursor, info); - -- cursor_timer.expires = jiffies + HZ / 50; -+ cursor_timer.expires = jiffies + HZ / 5; - cursor_timer.data = (unsigned long ) info; - add_timer(&cursor_timer); - } -@@ -728,15 +642,13 @@ static __inline__ void updatescrollmode( - static void fbcon_set_display(struct vc_data *vc, int init, int logo) - { - struct fb_info *info = registered_fb[(int) con2fb_map[vc->vc_num]]; -+ int nr_rows, nr_cols, old_rows, old_cols, i, charcnt = 256; - struct display *p = &fb_display[vc->vc_num]; -- int nr_rows, nr_cols; -- int old_rows, old_cols; - unsigned short *save = NULL, *r, *q; -- int i, charcnt = 256; - struct font_desc *font; - - if (vc->vc_num != fg_console || (info->flags & FBINFO_FLAG_MODULE) || -- info->fix.type == FB_TYPE_TEXT) -+ (info->fix.type == FB_TYPE_TEXT)) - logo = 0; - - info->var.xoffset = info->var.yoffset = p->yscroll = 0; /* reset wrap/pan */ -@@ -960,19 +872,51 @@ static void fbcon_clear(struct vc_data * - accel_clear(vc, info, real_y(p, sy), sx, height, width); - } - -- - static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos) - { - struct fb_info *info = registered_fb[(int) con2fb_map[vc->vc_num]]; -+ unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; -+ unsigned int scan_align = info->pixmap.scan_align - 1; -+ unsigned int buf_align = info->pixmap.buf_align - 1; -+ unsigned int width = (vc->vc_font.width + 7) >> 3; -+ int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; -+ int fgshift = (vc->vc_hi_font_mask) ? 9 : 8; - struct display *p = &fb_display[vc->vc_num]; -- -+ unsigned int size, pitch; -+ struct fb_image image; -+ u8 *src, *dst; -+ - if (!info->fbops->fb_blank && console_blanked) - return; - - if (vt_cons[vc->vc_num]->vc_mode != KD_TEXT) - return; - -- accel_putc(vc, info, c, real_y(p, ypos), xpos); -+ image.dx = xpos * vc->vc_font.width; -+ image.dy = real_y(p, ypos) * vc->vc_font.height; -+ image.width = vc->vc_font.width; -+ image.height = vc->vc_font.height; -+ image.fg_color = attr_fgcol(fgshift, c); -+ image.bg_color = attr_bgcol(bgshift, c); -+ image.depth = 1; -+ -+ src = vc->vc_font.data + (c & charmask) * vc->vc_font.height * width; -+ -+ pitch = width + scan_align; -+ pitch &= ~scan_align; -+ size = pitch * vc->vc_font.height; -+ size += buf_align; -+ size &= ~buf_align; -+ -+ dst = fb_get_buffer_offset(info, &info->pixmap, size); -+ image.data = dst; -+ -+ move_buf_aligned(info, &info->pixmap, dst, src, pitch, width, -+ image.height); -+ -+ info->fbops->fb_imageblit(info, &image); -+ atomic_dec(&info->pixmap.count); -+ smp_mb__after_atomic_dec(); - } - - static void fbcon_putcs(struct vc_data *vc, const unsigned short *s, -@@ -994,12 +938,16 @@ static void fbcon_cursor(struct vc_data - { - struct fb_info *info = registered_fb[(int) con2fb_map[vc->vc_num]]; - unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; -+ unsigned int scan_align = info->sprite.scan_align - 1; -+ unsigned int buf_align = info->sprite.buf_align - 1; - int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; - int fgshift = (vc->vc_hi_font_mask) ? 9 : 8; - struct display *p = &fb_display[vc->vc_num]; -- int w = (vc->vc_font.width + 7) >> 3, c; -- int y = real_y(p, vc->vc_y); -+ int y = real_y(p, vc->vc_y), d_pitch, dsize; -+ int s_pitch = (vc->vc_font.width + 7) >> 3; -+ int size = s_pitch * vc->vc_font.height, c; - struct fb_cursor cursor; -+ u8 *src, *dst; - - if (mode & CM_SOFTBACK) { - mode &= ~CM_SOFTBACK; -@@ -1012,28 +960,27 @@ static void fbcon_cursor(struct vc_data - } else if (softback_lines) - fbcon_set_origin(vc); - -- c = scr_readw((u16 *) vc->vc_pos); -- -- cursor.image.data = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height)); -- cursor.set = FB_CUR_SETCUR; -- cursor.image.depth = 1; -- - switch (mode) { - case CM_ERASE: -- if (info->cursor.rop == ROP_XOR) { -+ del_timer(&cursor_timer); -+ if (info->cursor.enable) { - info->cursor.enable = 0; -- info->cursor.rop = ROP_COPY; -- info->fbops->fb_cursor(info, &cursor); -- } -+ info->fbops->fb_cursor(info, &info->cursor); -+ } - break; - case CM_MOVE: - case CM_DRAW: -+ memset(&cursor, 0, sizeof(struct fb_cursor)); - info->cursor.enable = 1; -- -+ -+ c = scr_readw((u16 *) vc->vc_pos); -+ -+ src = vc->vc_font.data + ((c & charmask) * size); - if (info->cursor.image.fg_color != attr_fgcol(fgshift, c) || - info->cursor.image.bg_color != attr_bgcol(bgshift, c)) { - cursor.image.fg_color = attr_fgcol(fgshift, c); - cursor.image.bg_color = attr_bgcol(bgshift, c); -+ cursor.image.depth = 1; - cursor.set |= FB_CUR_SETCMAP; - } - -@@ -1056,18 +1003,29 @@ static void fbcon_cursor(struct vc_data - cursor.set |= FB_CUR_SETHOT; - } - -+ src = vc->vc_font.data + ((c & charmask) * size); -+ -+ d_pitch = (s_pitch + scan_align) & ~scan_align; -+ dsize = d_pitch * vc->vc_font.height + buf_align; -+ dsize &= ~buf_align; -+ dst = fb_get_buffer_offset(info, &info->sprite, dsize); -+ move_buf_aligned(info, &info->sprite, dst, src, d_pitch, s_pitch, vc->vc_font.height); -+ info->cursor.image.data = dst; -+ cursor.set |= FB_CUR_SETSHAPE; -+ - if ((cursor.set & FB_CUR_SETSIZE) || ((vc->vc_cursor_type & 0x0f) != p->cursor_shape)) { -- char *mask = kmalloc(w*vc->vc_font.height, GFP_ATOMIC); -- int cur_height, size, i = 0; -+ char *mask = kmalloc(dsize, GFP_ATOMIC); -+ int cur_height, i, j, k; - - if (!mask) return; -- -+ -+ memset(mask, 0, dsize); -+ - if (info->cursor.mask) - kfree(info->cursor.mask); - info->cursor.mask = mask; - - p->cursor_shape = vc->vc_cursor_type & 0x0f; -- cursor.set |= FB_CUR_SETSHAPE; - - switch (vc->vc_cursor_type & 0x0f) { - case CUR_NONE: -@@ -1090,15 +1048,18 @@ static void fbcon_cursor(struct vc_data - cur_height = vc->vc_font.height; - break; - } -- size = (vc->vc_font.height - cur_height) * w; -- while (size--) -- mask[i++] = 0; -- size = cur_height * w; -- while (size--) -- mask[i++] = 0xff; -+ i = (vc->vc_font.height - cur_height) * d_pitch; -+ for (j = 0; j < cur_height; j++) { -+ for (k = 0; k < s_pitch; k++) -+ mask[i++] = 0xff; -+ i += (d_pitch - s_pitch); -+ } - } - info->cursor.rop = ROP_XOR; - info->fbops->fb_cursor(info, &cursor); -+ atomic_dec(&info->sprite.count); -+ smp_mb__after_atomic_dec(); -+ mod_timer(&cursor_timer, jiffies + HZ/5); - vbl_cursor_cnt = CURSOR_DRAW_DELAY; - break; - } -@@ -1826,9 +1787,11 @@ static int fbcon_do_set_font(struct vc_d - vc->vc_font.height = h; - if (vc->vc_hi_font_mask && cnt == 256) { - vc->vc_hi_font_mask = 0; -- if (vc->vc_can_do_color) -+ if (vc->vc_can_do_color) { - vc->vc_complement_mask >>= 1; -- -+ vc->vc_s_complement_mask >>= 1; -+ } -+ - /* ++Edmund: reorder the attribute bits */ - if (vc->vc_can_do_color) { - unsigned short *cp = -@@ -1847,9 +1810,11 @@ static int fbcon_do_set_font(struct vc_d - } - } else if (!vc->vc_hi_font_mask && cnt == 512) { - vc->vc_hi_font_mask = 0x100; -- if (vc->vc_can_do_color) -+ if (vc->vc_can_do_color) { - vc->vc_complement_mask <<= 1; -- -+ vc->vc_s_complement_mask <<= 1; -+ } -+ - /* ++Edmund: reorder the attribute bits */ - { - unsigned short *cp = ---- linux-2.6.0-test1/drivers/video/controlfb.c 2003-06-14 12:18:00.000000000 -0700 -+++ 25/drivers/video/controlfb.c 2003-07-19 17:04:55.000000000 -0700 -@@ -136,8 +136,8 @@ static int controlfb_check_var (struct f - /* - * inititialization - */ --int control_init(void); --void control_setup(char *); -+int controlfb_init(void); -+void controlfb_setup(char *); - - /******************** Prototypes for internal functions **********************/ - -@@ -475,7 +475,7 @@ try_again: - - /* Apply default var */ - var.activate = FB_ACTIVATE_NOW; -- rc = fb_set_var(&var, &p->info); -+ rc = fb_set_var(&p->info, &var); - if (rc && (vmode != VMODE_640_480_60 || cmode != CMODE_8)) - goto try_again; - -@@ -553,7 +553,7 @@ static void control_set_hardware(struct - /* - * Called from fbmem.c for probing & initializing - */ --int __init control_init(void) -+int __init controlfb_init(void) - { - struct device_node *dp; - -@@ -1057,7 +1057,7 @@ static void control_cleanup(void) - /* - * Parse user speficied options (`video=controlfb:') - */ --void __init control_setup(char *options) -+void __init controlfb_setup(char *options) - { - char *this_opt; - ---- linux-2.6.0-test1/drivers/video/epson1355fb.c 2003-06-14 12:17:57.000000000 -0700 -+++ 25/drivers/video/epson1355fb.c 2003-07-19 17:04:55.000000000 -0700 -@@ -1,541 +1,714 @@ - /* -- * linux/drivers/video/epson1355fb.c -- * -- Support for the Epson SED1355 LCD/CRT controller -+ * linux/drivers/video/epson1355fb.c -- Epson S1D13505 frame buffer for 2.5. - * -- * Copyright (C) 2000 Philipp Rumpf -+ * Epson Research S1D13505 Embedded RAMDAC LCD/CRT Controller -+ * (previously known as SED1355) - * -- * based on linux/drivers/video/skeletonfb.c, which was -+ * Cf. http://www.erd.epson.com/vdc/html/S1D13505.html -+ * -+ * -+ * Copyright (C) Hewlett-Packard Company. All rights reserved. -+ * -+ * Written by Christopher Hoover -+ * -+ * Adapted from: -+ * -+ * linux/drivers/video/skeletonfb.c -+ * Modified to new api Jan 2001 by James Simmons (jsimmons@transvirtual.com) - * Created 28 Dec 1997 by Geert Uytterhoeven - * -+ * linux/drivers/video/epson1355fb.c (2.4 driver) -+ * Copyright (C) 2000 Philipp Rumpf -+ * - * This file is subject to the terms and conditions of the GNU General Public -- * License. See the file COPYING in the main directory of this archive -- * for more details. -- */ --/* TODO (roughly in order of priority): -- * 16 bpp support -- * crt support -- * hw cursor support -- * SwivelView -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ * -+ * -+ * Noteworthy Issues -+ * ----------------- -+ * -+ * This driver is complicated by the fact that this is a 16-bit chip -+ * and, on at least one platform (ceiva), we can only do 16-bit reads -+ * and writes to the framebuffer. We hide this from user space -+ * except in the case of mmap(). -+ * -+ * -+ * To Do -+ * ----- -+ * -+ * - Test 8-bit pseudocolor mode -+ * - Allow setting bpp, virtual resolution -+ * - Implement horizontal panning -+ * - (maybe) Implement hardware cursor - */ - --#include --#include --#include --#include --#include --#include --#include --#include --#include - #include --#include -+#include -+#include - #include -+#include - #include --#include