Add LPT device emulation framework.

Move long-broken DAC and Sound Source emulation to new framework.
Add stereo DAC emulation.
This commit is contained in:
SarahW 2017-09-01 11:34:20 +01:00
commit d3232adef5
25 changed files with 785 additions and 334 deletions

View file

@ -15,10 +15,10 @@ amrefresh:
pcem_SOURCES = 386.c 386_dynarec.c 386_dynarec_ops.c 808x.c acer386sx.c ali1429.c amstrad.c cbm_io.c cdrom-ioctl-linux.c cdrom-image.cc cdrom-null.c \
codegen.c codegen_ops.c codegen_timing_486.c codegen_timing_686.c codegen_timing_common.c codegen_timing_pentium.c codegen_timing_winchip.c compaq.c config.c cpu.c \
dac.c dells200.c device.c disc.c disc_fdi.c disc_img.c disc_sector.c dma.c esdi_at.c fdc.c fdc37c665.c fdd.c fdi2raw.c gameport.c \
dells200.c device.c disc.c disc_fdi.c disc_img.c disc_sector.c dma.c esdi_at.c fdc.c fdc37c665.c fdd.c fdi2raw.c gameport.c \
hdd.c hdd_esdi.c hdd_file.c headland.c i430lx.c i430fx.c i430vx.c ide.c intel.c intel_flash.c io.c jim.c joystick_ch_flightstick_pro.c joystick_standard.c joystick_sw_pad.c \
joystick_tm_fcs.c keyboard.c keyboard_amstrad.c keyboard_at.c keyboard_olim24.c keyboard_pcjr.c keyboard_xt.c \
laserxt.c lpt.c mca.c mcr.c mem.c mfm_at.c mfm_xebec.c model.c mouse.c mouse_msystems.c mouse_ps2.c mouse_serial.c neat.c nmi.c nvr.c olivetti_m24.c \
laserxt.c lpt.c lpt_dac.c lpt_dss.c mca.c mcr.c mem.c mfm_at.c mfm_xebec.c model.c mouse.c mouse_msystems.c mouse_ps2.c mouse_serial.c neat.c nmi.c nvr.c olivetti_m24.c \
opti495.c paths.c pc.c pci.c pic.c piix.c pit.c ppi.c ps1.c ps2.c ps2_mca.c ps2_nvr.c rom.c rtc.c scat.c serial.c sio.c sis496.c sound.c \
sound_ad1848.c sound_adlib.c sound_adlibgold.c sound_cms.c sound_emu8k.c sound_gus.c \
sound_mpu401_uart.c sound_opl.c sound_pas16.c sound_ps1.c sound_pssj.c sound_sb.c sound_sb_dsp.c sound_sn76489.c \

View file

@ -7,10 +7,10 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o allegro
allegro-gui-configure.o allegro-gui-config-sel.o allegro-gui-deviceconfig.o allegro-gui-hdconf.o allegro-joystick.o allegro-keyboard.o allegro-main.o \
allegro-midi.o allegro-mouse.o allegro-video.o amstrad.o cbm_io.o cdrom-ioctl-linux.o cdrom-image.o cdrom-null.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.c compaq.o config.o cpu.o \
dac.o dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o scat.o serial.o sio.o sis496.o sound.o \
sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \

View file

@ -6,10 +6,10 @@ CFLAGS = -O3 -fomit-frame-pointer -msse2 -m32 $(shell wx-config --cxxflags) $(sh
CXXFLAGS = $(CFLAGS)
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl-linux.o cdrom-image.o cdrom-null.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.c compaq.o config.o cpu.o \
dac.o dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o scat.o serial.o sio.o sis496.o sound.o \
sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \

View file

@ -6,10 +6,10 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o allegro
allegro-gui-configure.o allegro-gui-config-sel.o allegro-gui-deviceconfig.o allegro-gui-hdconf.o allegro-joystick.o allegro-keyboard.o allegro-main.o \
allegro-midi.o allegro-mouse.o allegro-video.o amstrad.o cbm_io.o cdrom-ioctl-linux.o cdrom-image.o cdrom-null.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86-64.c compaq.o config.o cpu.o \
dac.o dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o scat.o serial.o sio.o sis496.o sound.o \
sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \

View file

@ -6,10 +6,10 @@ CFLAGS = -O3 -fomit-frame-pointer -msse2 -m64 $(shell wx-config --cxxflags) $(sh
CXXFLAGS = $(CFLAGS)
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl-linux.o cdrom-image.o cdrom-null.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86-64.c compaq.o config.o cpu.o \
dac.o dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o scat.o serial.o sio.o sis496.o sound.o \
sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \

View file

@ -4,10 +4,10 @@ CC = gcc.exe
WINDRES = windres.exe
CFLAGS = -O3 -march=i686 -fomit-frame-pointer -msse2 -mstackrealign -Wall -Werror -fno-strict-aliasing
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl.o cdrom-image.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o dac.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o \
dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o \
i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o \
scat.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \

View file

@ -5,10 +5,10 @@ MAKE = make.exe
WINDRES = windres.exe
CFLAGS = -O3 -march=i686 -fomit-frame-pointer -msse2 -mstackrealign -Wall -Werror -fno-strict-aliasing -DUSE_NETWORKING
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl.o cdrom-image.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o dac.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o \
dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o \
i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o \
scat.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \

View file

@ -7,10 +7,10 @@ WXINCLUDE = C:/MinGW/include/wx/
CFLAGS = -O3 -march=i686 -fomit-frame-pointer -msse2 -mstackrealign -Werror -fno-strict-aliasing
CXXFLAGS = $(CFLAGS)
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl.o cdrom-image.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o dac.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o \
device.o dells200.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o \
i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o \
scat.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \

View file

@ -3,14 +3,14 @@ CPP = g++
CC = gcc
WINDRES = windres.exe
WXVERSION = 31
WXINCLUDE = C:/MinGW/include/wx/
WXINCLUDE = e:/mingwget/include/wx/
CFLAGS = -O3 -march=i686 -fomit-frame-pointer -msse2 -mstackrealign -Werror -fno-strict-aliasing -DUSE_NETWORKING
CXXFLAGS = $(CFLAGS)
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl.o cdrom-image.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o dac.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86.o compaq.o config.o cpu.o \
device.o dells200.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o \
i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o \
scat.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \

View file

@ -4,10 +4,10 @@ CC = gcc.exe
WINDRES = windres.exe
CFLAGS = -O3 -fomit-frame-pointer -msse2 -Wall -Werror -fno-strict-aliasing
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl.o cdrom-image.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86-64.o compaq.o config.o cpu.o dac.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86-64.o compaq.o config.o cpu.o \
dells200.o device.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o \
i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o \
mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o \
scat.o serial.o sio.o sis496.o sound.o sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_dbopl.o \
sound_emu8k.o sound_gus.o sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_resid.o \

View file

@ -5,10 +5,10 @@ WXRC = wxrc
CFLAGS = -D__unix=1 -DPCEM_RENDER_WITH_TIMER -DPCEM_RENDER_TIMER_LOOP -Dfopen64=fopen -Dfseeko64=fseeko -Dftello64=ftello -Doff64_t=off_t -O3 -fomit-frame-pointer -msse2 -m64 $(shell wx-config --cxxflags) $(shell sdl2-config --cflags) -I/usr/local/opt/openal-soft/include -I/usr/local/include
OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acer386sx.o ali1429.o amstrad.o cbm_io.o cdrom-ioctl-osx.o cdrom-image.o cdrom-null.o \
codegen.o codegen_ops.o codegen_timing_486.o codegen_timing_686.o codegen_timing_common.o codegen_timing_pentium.o codegen_timing_winchip.o codegen_x86-64.c compaq.o config.o cpu.o \
dac.o device.o dells200.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
device.o dells200.o disc.o disc_fdi.o disc_img.o disc_sector.o dma.o esdi_at.o fdc.o fdc37c665.o fdd.o fdi2raw.o gameport.o \
hdd.o hdd_esdi.o hdd_file.o headland.o i430lx.o i430fx.o i430vx.o ide.o intel.o intel_flash.o io.o jim.o joystick_ch_flightstick_pro.o joystick_standard.o joystick_sw_pad.o \
joystick_tm_fcs.o keyboard.o keyboard_amstrad.o keyboard_at.o keyboard_olim24.o keyboard_pcjr.o keyboard_xt.o \
laserxt.o lpt.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
laserxt.o lpt.o lpt_dac.o lpt_dss.o mca.o mcr.o mem.o mfm_at.o mfm_xebec.o model.o mouse.o mouse_msystems.o mouse_ps2.o mouse_serial.o neat.o nmi.o nvr.o olivetti_m24.o \
opti495.o paths.o pc.o pci.o pic.o piix.o pit.o ppi.o ps1.o ps2.o ps2_mca.o ps2_nvr.o rom.o rtc.o scat.o serial.o sio.o sis496.o sound.o \
sound_ad1848.o sound_adlib.o sound_adlibgold.o sound_cms.o sound_emu8k.o sound_gus.o \
sound_mpu401_uart.o sound_opl.o sound_pas16.o sound_ps1.o sound_pssj.o sound_sb.o sound_sb_dsp.o sound_sn76489.o \

View file

@ -1,6 +1,5 @@
#include <stdlib.h>
#include "ibm.h"
#include "dac.h"
#include "io.h"
#include "keyboard.h"
#include "lpt.h"
@ -16,7 +15,7 @@ uint8_t amstrad_read(uint16_t port, void *priv)
switch (port)
{
case 0x379:
return 7 | readdacfifo();
return 7;
case 0x37a:
if (romset == ROM_PC1512) return 0x20;
if (romset == ROM_PC200) return 0x80;

View file

@ -1,70 +0,0 @@
#include "ibm.h"
#include "dac.h"
#include "sound.h"
uint8_t dac,dac2;
uint8_t dacctrl;
int lptfifo;
uint8_t dssbuffer[16];
int dssstart=0,dssend=0;
int dssmode=0;
void writedac(uint16_t addr, uint8_t val)
{
if (dssmode) dac2=val;
else dac=val;
}
void writedacctrl(uint16_t addr, uint8_t val)
{
// printf("Write DAC ctrl %02X %i\n",val,lptfifo);
if (dacctrl&8 && !(val&8) && (lptfifo!=16))
{
// dac=dac2;
dssbuffer[dssend++]=dac2;
dssend&=15;
lptfifo++;
}
dacctrl=val;
}
uint8_t readdacfifo()
{
if (lptfifo==16) return 0x40;
return 0;
}
void pollss()
{
if (lptfifo)
{
dac=dssbuffer[dssstart++];
dssstart&=15;
lptfifo--;
}
}
int16_t dacbuffer[MAXSOUNDBUFLEN+20];
int dacbufferpos=0;
void getdacsamp()
{
if (dacbufferpos<SOUNDBUFLEN+20) dacbuffer[dacbufferpos++]=(((int)(unsigned int)dac)-0x80)*0x20;
}
void adddac(int16_t *p)
{
int c;
if (dacbufferpos>SOUNDBUFLEN) dacbufferpos=SOUNDBUFLEN;
for (c=0;c<dacbufferpos;c++)
{
p[c<<1]+=(dacbuffer[c]);
p[(c<<1)+1]+=(dacbuffer[c]);
}
for (;c<SOUNDBUFLEN;c++)
{
p[c<<1]+=(dacbuffer[dacbufferpos-1]);
p[(c<<1)+1]+=(dacbuffer[dacbufferpos-1]);
}
dacbufferpos=0;
}

View file

@ -1,3 +0,0 @@
void writedac(uint16_t addr, uint8_t val);
void writedacctrl(uint16_t addr, uint8_t val);
uint8_t readdacfifo();

View file

@ -279,3 +279,69 @@ static inline float adgold_pseudo_stereo_iir(float NewSample) {
return y[0];
}
//fc=3.2kHz - probably incorrect
static inline float dss_iir(float NewSample) {
float ACoef[NCoef+1] = {
0.03356837051492005100,
0.06713674102984010200,
0.03356837051492005100
};
float BCoef[NCoef+1] = {
1.00000000000000000000,
-1.41898265221812010000,
0.55326988968868285000
};
static float y[NCoef+1]; //output samples
static float x[NCoef+1]; //input samples
int n;
//shift the old samples
for(n=NCoef; n>0; n--) {
x[n] = x[n-1];
y[n] = y[n-1];
}
//Calculate the new output
x[0] = NewSample;
y[0] = ACoef[0] * x[0];
for(n=1; n<=NCoef; n++)
y[0] += ACoef[n] * x[n] - BCoef[n] * y[n];
return y[0];
}
#undef NCoef
#define NCoef 1
/*Basic high pass to remove DC bias. fc=10Hz*/
static float dac_iir(int i, float NewSample) {
float ACoef[NCoef+1] = {
0.99901119820285345000,
-0.99901119820285345000
};
float BCoef[NCoef+1] = {
1.00000000000000000000,
-0.99869185905052738000
};
static float y[2][NCoef+1]; //output samples
static float x[2][NCoef+1]; //input samples
int n;
//shift the old samples
for(n=NCoef; n>0; n--) {
x[i][n] = x[i][n-1];
y[i][n] = y[i][n-1];
}
//Calculate the new output
x[i][0] = NewSample;
y[i][0] = ACoef[0] * x[i][0];
for(n=1; n<=NCoef; n++)
y[i][0] += ACoef[n] * x[i][n] - BCoef[n] * y[i][n];
return y[i][0];
}

View file

@ -1,8 +1,65 @@
#include "ibm.h"
#include "dac.h"
#include "io.h"
#include "lpt.h"
#include "lpt_dac.h"
#include "lpt_dss.h"
char lpt1_device_name[16];
static struct
{
char name[64];
char internal_name[16];
lpt_device_t *device;
} lpt_devices[] =
{
{"None", "none", NULL},
{"Disney Sound Source", "dss", &dss_device},
{"LPT DAC / Covox Speech Thing", "lpt_dac", &lpt_dac_device},
{"Stereo LPT DAC", "lpt_dac_stereo", &lpt_dac_stereo_device},
{"", "", NULL}
};
char *lpt_device_get_name(int id)
{
if (strlen(lpt_devices[id].name) == 0)
return NULL;
return lpt_devices[id].name;
}
char *lpt_device_get_internal_name(int id)
{
if (strlen(lpt_devices[id].internal_name) == 0)
return NULL;
return lpt_devices[id].internal_name;
}
static lpt_device_t *lpt1_device;
static void *lpt1_device_p;
void lpt1_device_init()
{
int c = 0;
while (strcmp(lpt_devices[c].internal_name, lpt1_device_name) && strlen(lpt_devices[c].internal_name) != 0)
c++;
if (strlen(lpt_devices[c].internal_name) == 0)
lpt1_device = NULL;
else
{
lpt1_device = lpt_devices[c].device;
if (lpt1_device)
lpt1_device_p = lpt1_device->init();
}
}
void lpt1_device_close()
{
if (lpt1_device)
lpt1_device->close(lpt1_device_p);
lpt1_device = NULL;
}
static uint8_t lpt1_dat, lpt2_dat;
static uint8_t lpt1_ctrl, lpt2_ctrl;
@ -12,11 +69,13 @@ void lpt1_write(uint16_t port, uint8_t val, void *priv)
switch (port & 3)
{
case 0:
writedac(0,val);
if (lpt1_device)
lpt1_device->write_data(val, lpt1_device_p);
lpt1_dat = val;
break;
case 2:
writedacctrl(0,val);
if (lpt1_device)
lpt1_device->write_ctrl(val, lpt1_device_p);
lpt1_ctrl = val;
break;
}
@ -28,7 +87,9 @@ uint8_t lpt1_read(uint16_t port, void *priv)
case 0:
return lpt1_dat;
case 1:
return readdacfifo();
if (lpt1_device)
return lpt1_device->read_status(lpt1_device_p);
return 0;
case 2:
return lpt1_ctrl;
}
@ -40,11 +101,9 @@ void lpt2_write(uint16_t port, uint8_t val, void *priv)
switch (port & 3)
{
case 0:
writedac(0,val);
lpt2_dat = val;
break;
case 2:
writedacctrl(0,val);
lpt2_ctrl = val;
break;
}
@ -56,7 +115,7 @@ uint8_t lpt2_read(uint16_t port, void *priv)
case 0:
return lpt2_dat;
case 1:
return readdacfifo();
return 0;
case 2:
return lpt2_ctrl;
}

View file

@ -4,3 +4,21 @@ extern void lpt1_remove();
extern void lpt2_init(uint16_t port);
extern void lpt2_remove();
extern void lpt2_remove_ams();
void lpt1_device_init();
void lpt1_device_close();
char *lpt_device_get_name(int id);
char *lpt_device_get_internal_name(int id);
extern char lpt1_device_name[16];
typedef struct
{
char name[80];
void *(*init)();
void (*close)(void *p);
void (*write_data)(uint8_t val, void *p);
void (*write_ctrl)(uint8_t val, void *p);
uint8_t (*read_status)(void *p);
} lpt_device_t;

115
src/lpt_dac.c Normal file
View file

@ -0,0 +1,115 @@
#include <stdlib.h>
#include "ibm.h"
#include "filters.h"
#include "lpt.h"
#include "lpt_dac.h"
#include "sound.h"
typedef struct lpt_dac_t
{
uint8_t dac_val_l, dac_val_r;
int is_stereo;
int channel;
int16_t buffer[2][MAXSOUNDBUFLEN];
int pos;
} lpt_dac_t;
static void dac_update(lpt_dac_t *lpt_dac)
{
for (; lpt_dac->pos < sound_pos_global; lpt_dac->pos++)
{
lpt_dac->buffer[0][lpt_dac->pos] = (int8_t)(lpt_dac->dac_val_l ^ 0x80) * 0x40;
lpt_dac->buffer[1][lpt_dac->pos] = (int8_t)(lpt_dac->dac_val_r ^ 0x80) * 0x40;
}
}
static void dac_write_data(uint8_t val, void *p)
{
lpt_dac_t *lpt_dac = (lpt_dac_t *)p;
if (lpt_dac->is_stereo)
{
if (lpt_dac->channel)
lpt_dac->dac_val_r = val;
else
lpt_dac->dac_val_l = val;
}
else
lpt_dac->dac_val_l = lpt_dac->dac_val_r = val;
dac_update(lpt_dac);
}
static void dac_write_ctrl(uint8_t val, void *p)
{
lpt_dac_t *lpt_dac = (lpt_dac_t *)p;
if (lpt_dac->is_stereo)
lpt_dac->channel = val & 0x01;
}
static uint8_t dac_read_status(void *p)
{
return 0;
}
static void dac_get_buffer(int32_t *buffer, int len, void *p)
{
lpt_dac_t *lpt_dac = (lpt_dac_t *)p;
int c;
dac_update(lpt_dac);
for (c = 0; c < len; c++)
{
buffer[c*2] += dac_iir(0, lpt_dac->buffer[0][c]);
buffer[c*2 + 1] += dac_iir(1, lpt_dac->buffer[1][c]);
}
lpt_dac->pos = 0;
}
static void *dac_init()
{
lpt_dac_t *lpt_dac = malloc(sizeof(lpt_dac_t));
memset(lpt_dac, 0, sizeof(lpt_dac_t));
sound_add_handler(dac_get_buffer, lpt_dac);
return lpt_dac;
}
static void *dac_stereo_init()
{
lpt_dac_t *lpt_dac = dac_init();
lpt_dac->is_stereo = 1;
return lpt_dac;
}
static void dac_close(void *p)
{
lpt_dac_t *lpt_dac = (lpt_dac_t *)p;
free(lpt_dac);
}
lpt_device_t lpt_dac_device =
{
"LPT DAC / Covox Speech Thing",
dac_init,
dac_close,
dac_write_data,
dac_write_ctrl,
dac_read_status
};
lpt_device_t lpt_dac_stereo_device =
{
"Stereo LPT DAC",
dac_stereo_init,
dac_close,
dac_write_data,
dac_write_ctrl,
dac_read_status
};

2
src/lpt_dac.h Normal file
View file

@ -0,0 +1,2 @@
extern lpt_device_t lpt_dac_device;
extern lpt_device_t lpt_dac_stereo_device;

111
src/lpt_dss.c Normal file
View file

@ -0,0 +1,111 @@
#include <stdlib.h>
#include "ibm.h"
#include "filters.h"
#include "lpt.h"
#include "lpt_dac.h"
#include "sound.h"
typedef struct dss_t
{
uint8_t fifo[16];
int read_idx, write_idx;
uint8_t dac_val;
int time;
int16_t buffer[MAXSOUNDBUFLEN];
int pos;
} dss_t;
static void dss_update(dss_t *dss)
{
for (; dss->pos < sound_pos_global; dss->pos++)
dss->buffer[dss->pos] = (int8_t)(dss->dac_val ^ 0x80) * 0x40;
}
static void dss_write_data(uint8_t val, void *p)
{
dss_t *dss = (dss_t *)p;
if ((dss->write_idx - dss->read_idx) < 16)
{
dss->fifo[dss->write_idx & 15] = val;
dss->write_idx++;
}
}
static void dss_write_ctrl(uint8_t val, void *p)
{
}
static uint8_t dss_read_status(void *p)
{
dss_t *dss = (dss_t *)p;
if ((dss->write_idx - dss->read_idx) >= 16)
return 0x40;
return 0;
}
static void dss_get_buffer(int32_t *buffer, int len, void *p)
{
dss_t *dss = (dss_t *)p;
int c;
dss_update(dss);
for (c = 0; c < len*2; c += 2)
{
int16_t val = (int16_t)dss_iir((float)dss->buffer[c >> 1]);
buffer[c] += val;
buffer[c+1] += val;
}
dss->pos = 0;
}
static void dss_callback(void *p)
{
dss_t *dss = (dss_t *)p;
dss_update(dss);
if ((dss->write_idx - dss->read_idx) > 0)
{
dss->dac_val = dss->fifo[dss->read_idx & 15];
dss->read_idx++;
}
dss->time += (TIMER_USEC * (1000000.0 / 7000.0));
}
static void *dss_init()
{
dss_t *dss = malloc(sizeof(dss_t));
memset(dss, 0, sizeof(dss_t));
sound_add_handler(dss_get_buffer, dss);
timer_add(dss_callback, &dss->time, TIMER_ALWAYS_ENABLED, dss);
return dss;
}
static void dss_close(void *p)
{
dss_t *dss = (dss_t *)p;
free(dss);
}
lpt_device_t dss_device =
{
"Disney Sound Source",
dss_init,
dss_close,
dss_write_data,
dss_write_ctrl,
dss_read_status
};

1
src/lpt_dss.h Normal file
View file

@ -0,0 +1 @@
extern lpt_device_t dss_device;

View file

@ -24,6 +24,7 @@
#include "ide.h"
#include "keyboard.h"
#include "keyboard_at.h"
#include "lpt.h"
#include "model.h"
#include "mouse.h"
#include "nvr.h"
@ -381,7 +382,8 @@ void resetpchard()
model_init();
mouse_emu_init();
video_init();
speaker_init();
speaker_init();
lpt1_device_init();
#ifdef USE_NETWORKING
vlan_reset(); //NETWORK
@ -590,6 +592,7 @@ void closepc()
disc_close(1);
dumpregs();
closevideo();
lpt1_device_close();
mouse_emu_close();
device_close_all();
}
@ -774,6 +777,10 @@ void loadconfig(char *fn)
enable_sync = config_get_int(CFG_MACHINE, NULL, "enable_sync", 1);
p = (char *)config_get_string(CFG_MACHINE, NULL, "lpt1_device", "");
if (p) strcpy(lpt1_device_name, p);
else strcpy(lpt1_device_name, "");
#ifdef USE_NETWORKING
//network
ethif = config_get_int(CFG_GLOBAL, NULL, "netinterface", 1);
@ -908,6 +915,8 @@ void saveconfig(char *fn)
config_set_string(CFG_MACHINE, NULL, "netcard", network_card_get_internal_name(network_card_current));
#endif
config_set_string(CFG_MACHINE, NULL, "lpt1_device", lpt1_device_name);
for (d = 0; d < num_config_callbacks; ++d)
if (config_callbacks[d].saveconfig)
config_callbacks[d].saveconfig();

View file

@ -899,6 +899,50 @@
<checked>0</checked>
</object>
</object>
<object class="spacer">
<option>1</option>
<flag>wxEXPAND</flag>
<border>5</border>
<size>0,0</size>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL | wxALIGN_CENTER_VERTICAL</flag>
<border>5</border>
<object class="wxStaticText">
<size>80,-1</size>
<label>LPT Device:</label>
<wrap>-1</wrap>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxComboBox" name="IDC_COMBOLPT1">
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
<size>350,-1</size>
<value></value>
<content />
</object>
</object>
</object>
</object>
<object class="spacer">
<option>1</option>
<flag>wxEXPAND</flag>
<border>5</border>
<size>0,0</size>
</object>
</object>
</object>
</object>

View file

@ -8,6 +8,7 @@
#include "fdd.h"
#include "gameport.h"
#include "hdd.h"
#include "lpt.h"
#include "model.h"
#include "mouse.h"
#include "mem.h"
@ -261,6 +262,7 @@ int config_dlgsave(void* hdlg)
int temp_dynarec;
int temp_fda_type, temp_fdb_type;
int temp_mouse_type;
int temp_lpt1_device;
#ifdef USE_NETWORKING
int temp_network_card;
#endif
@ -329,6 +331,9 @@ int config_dlgsave(void* hdlg)
if (hdd_names[c])
hdd_changed = strncmp(hdd_names[c], hdd_controller_name, sizeof(hdd_controller_name)-1);
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBOLPT1"));
temp_lpt1_device = wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0);
#ifdef USE_NETWORKING
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBO_NETCARD"));
temp_network_card = settings_list_to_network[wx_sendmessage(h, WX_CB_GETCURSEL, 0, 0)];
@ -339,7 +344,8 @@ int config_dlgsave(void* hdlg)
temp_SSI2001 != SSI2001 || temp_sound_card_current != sound_card_current ||
temp_voodoo != voodoo_enabled || temp_dynarec != cpu_use_dynarec ||
temp_fda_type != fdd_get_type(0) || temp_fdb_type != fdd_get_type(1) ||
temp_mouse_type != mouse_type || hdd_changed || hd_changed || cdrom_channel != new_cdrom_channel
temp_mouse_type != mouse_type || hdd_changed || hd_changed || cdrom_channel != new_cdrom_channel ||
strcmp(lpt1_device_name, lpt_device_get_internal_name(temp_lpt1_device))
#ifdef USE_NETWORKING
|| temp_network_card != network_card_current
#endif
@ -361,6 +367,7 @@ int config_dlgsave(void* hdlg)
voodoo_enabled = temp_voodoo;
cpu_use_dynarec = temp_dynarec;
mouse_type = temp_mouse_type;
strcpy(lpt1_device_name, lpt_device_get_internal_name(temp_lpt1_device));
#ifdef USE_NETWORKING
network_card_current = temp_network_card;
#endif
@ -687,6 +694,23 @@ int config_dlgproc(void* hdlg, int message, INT_PARAM wParam, LONG_PARAM lParam)
}
wx_sendmessage(h, WX_CB_SETCURSEL, settings_mouse_to_list[mouse_type], 0);
h = wx_getdlgitem(hdlg, WX_ID("IDC_COMBOLPT1"));
c = d = 0;
while (1)
{
char *s = lpt_device_get_name(c);
if (!s)
break;
wx_sendmessage(h, WX_CB_ADDSTRING, 0, (LONG_PARAM)s);
if (!strcmp(lpt1_device_name, lpt_device_get_internal_name(c)))
d = c;
c++;
}
wx_sendmessage(h, WX_CB_SETCURSEL, d, 0);
recalc_hdd_list(hdlg, romstomodel[romset], 0);
hd_changed = 0;

View file

@ -1722,7 +1722,7 @@ static unsigned char xml_res_file_24[] = {
87,93,129,205,251,40,255,176,89,15,134,167,154,149,127,4,24,0,227,17,114,
29,252,169,144,138,0,0,0,0,73,69,78,68,174,66,96,130};
static size_t xml_res_size_25 = 125407;
static size_t xml_res_size_25 = 127112;
static unsigned char xml_res_file_25[] = {
60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,
110,99,111,100,105,110,103,61,34,85,84,70,45,56,34,63,62,10,60,33,45,45,
@ -3331,99 +3331,236 @@ static unsigned char xml_res_file_25[] = {
62,48,60,47,99,104,101,99,107,101,100,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,
116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,
106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,
98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,
106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,110,111,116,101,98,111,111,107,112,
97,103,101,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,101,
108,101,99,116,101,100,62,48,60,47,115,101,108,101,99,116,101,100,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,105,116,109,97,112,62,119,
120,45,114,101,115,111,117,114,99,101,115,46,99,112,112,36,105,99,111,110,
115,95,51,50,120,51,50,95,100,114,105,118,101,46,112,110,103,60,47,98,105,
116,109,97,112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,
106,101,99,116,32,99,108,97,115,115,61,34,119,120,80,97,110,101,108,34,
32,110,97,109,101,61,34,80,65,78,69,76,95,68,82,73,86,69,83,34,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,116,121,108,101,62,
119,120,84,65,66,95,84,82,65,86,69,82,83,65,76,60,47,115,116,121,108,101,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,
99,116,32,99,108,97,115,115,61,34,119,120,70,108,101,120,71,114,105,100,
83,105,122,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,114,111,119,115,62,48,60,47,114,111,119,115,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,99,111,108,115,62,49,60,
47,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,118,103,97,112,62,48,60,47,118,103,97,112,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,60,104,103,97,112,62,48,60,47,104,
103,97,112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,103,114,111,119,97,98,108,101,99,111,108,115,62,48,60,47,103,114,111,
119,97,98,108,101,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,60,103,114,111,119,97,98,108,101,114,111,119,115,47,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,
34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
111,112,116,105,111,110,62,49,60,47,111,112,116,105,111,110,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,
62,119,120,69,88,80,65,78,68,60,47,102,108,97,103,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,
62,48,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,
115,61,34,119,120,70,108,101,120,71,114,105,100,83,105,122,101,114,34,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
114,111,119,115,62,48,60,47,114,111,119,115,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,99,111,108,115,62,50,60,
47,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,118,103,97,112,62,48,60,47,118,103,97,112,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,104,103,
97,112,62,48,60,47,104,103,97,112,62,10,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,103,114,111,119,97,98,108,101,99,111,
108,115,62,49,60,47,103,114,111,119,97,98,108,101,99,111,108,115,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,103,
114,111,119,97,98,108,101,114,111,119,115,47,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,
99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
111,112,116,105,111,110,62,48,60,47,111,112,116,105,111,110,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,
108,97,103,62,119,120,65,76,76,32,124,32,119,120,65,76,73,71,78,95,67,69,
78,84,69,82,95,86,69,82,84,73,67,65,76,60,47,102,108,97,103,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,
111,114,100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,
120,116,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,115,105,122,101,62,56,48,44,45,49,60,47,115,
105,122,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,72,68,68,58,60,47,108,97,
98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,119,114,97,112,62,45,49,60,47,119,114,97,112,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,
34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,111,112,116,105,111,110,62,49,60,47,111,112,116,105,111,110,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,102,108,97,103,62,119,120,69,88,80,65,78,68,60,47,102,108,97,103,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,111,120,
83,105,122,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,111,114,105,101,110,116,62,119,120,
72,79,82,73,90,79,78,84,65,76,60,47,111,114,105,101,110,116,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,
105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,110,62,48,60,
47,111,112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,
98,106,101,99,116,32,99,108,97,115,115,61,34,115,112,97,99,101,114,34,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,
116,105,111,110,62,49,60,47,111,112,116,105,111,110,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,
69,88,80,65,78,68,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,47,
98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,115,105,122,101,62,48,44,48,60,47,115,105,122,101,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,
106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,
114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,111,112,116,105,111,110,62,48,60,47,111,112,116,105,
111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,102,108,97,103,62,119,120,65,76,76,32,124,32,119,120,65,76,73,71,
78,95,67,69,78,84,69,82,95,86,69,82,84,73,67,65,76,60,47,102,108,97,103,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,
111,114,100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,
32,99,108,97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,120,116,
34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,115,105,122,101,62,56,48,44,45,49,60,47,115,105,122,101,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,
98,101,108,62,76,80,84,32,68,101,118,105,99,101,58,60,47,108,97,98,101,
108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,119,114,97,112,62,45,49,60,47,119,114,97,112,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,
106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,
114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,111,112,116,105,111,110,62,49,60,47,111,112,116,105,
111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,102,108,97,103,62,119,120,69,88,80,65,78,68,60,47,102,108,97,103,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,
111,114,100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,
32,99,108,97,115,115,61,34,119,120,66,111,120,83,105,122,101,114,34,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
111,114,105,101,110,116,62,119,120,72,79,82,73,90,79,78,84,65,76,60,47,
111,114,105,101,110,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,
34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,
110,62,48,60,47,111,112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,
65,76,76,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,
47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,
115,115,61,34,119,120,67,111,109,98,111,66,111,120,34,32,110,97,109,101,
61,34,73,68,67,95,67,79,77,66,79,76,80,84,49,34,62,10,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,116,
121,108,101,62,119,120,67,66,95,68,82,79,80,68,79,87,78,124,119,120,67,
66,95,82,69,65,68,79,78,76,89,60,47,115,116,121,108,101,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
115,105,122,101,62,51,53,48,44,45,49,60,47,115,105,122,101,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,118,97,108,117,101,47,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,99,111,110,116,101,110,116,47,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,
99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,
111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,112,97,
99,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,111,112,116,105,111,110,62,49,60,47,111,112,116,105,111,110,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,
108,97,103,62,119,120,69,88,80,65,78,68,60,47,102,108,97,103,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,
101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,115,105,122,101,62,48,44,48,60,47,
115,105,122,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,110,111,116,
101,98,111,111,107,112,97,103,101,34,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,60,115,101,108,101,99,116,101,100,62,48,60,47,115,101,108,101,
99,116,101,100,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,105,
116,109,97,112,62,119,120,45,114,101,115,111,117,114,99,101,115,46,99,112,
112,36,105,99,111,110,115,95,51,50,120,51,50,95,100,114,105,118,101,46,
112,110,103,60,47,98,105,116,109,97,112,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,
120,80,97,110,101,108,34,32,110,97,109,101,61,34,80,65,78,69,76,95,68,82,
73,86,69,83,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
115,116,121,108,101,62,119,120,84,65,66,95,84,82,65,86,69,82,83,65,76,60,
47,115,116,121,108,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,70,108,
101,120,71,114,105,100,83,105,122,101,114,34,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,114,111,119,115,62,48,60,47,114,111,
119,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
99,111,108,115,62,49,60,47,99,111,108,115,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,118,103,97,112,62,48,60,47,118,103,97,
112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,104,
103,97,112,62,48,60,47,104,103,97,112,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,103,114,111,119,97,98,108,101,99,111,108,
115,62,48,60,47,103,114,111,119,97,98,108,101,99,111,108,115,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,103,114,111,119,97,98,
108,101,114,111,119,115,47,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,
105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,110,62,49,60,47,111,
112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,102,108,97,103,62,119,120,69,88,80,65,78,68,60,47,102,
108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,98,111,114,100,101,114,62,48,60,47,98,111,114,100,101,114,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,119,120,70,108,101,120,71,114,105,
100,83,105,122,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,114,111,119,115,62,48,60,47,114,111,119,115,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,99,111,108,115,62,50,60,47,99,111,108,115,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,118,103,97,112,62,48,60,
47,118,103,97,112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,104,103,97,112,62,48,60,47,104,103,97,112,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,103,114,
111,119,97,98,108,101,99,111,108,115,62,49,60,47,103,114,111,119,97,98,
108,101,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,103,114,111,119,97,98,108,101,114,111,119,115,
47,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,
114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,110,62,48,60,47,111,
112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,65,76,76,32,124,
32,119,120,65,76,73,71,78,95,67,69,78,84,69,82,95,86,69,82,84,73,67,65,
76,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,47,98,
111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,
61,34,119,120,83,116,97,116,105,99,84,101,120,116,34,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,
105,122,101,62,56,48,44,45,49,60,47,115,105,122,101,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,
98,101,108,62,72,68,68,58,60,47,108,97,98,101,108,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,119,114,
97,112,62,45,49,60,47,119,114,97,112,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,
34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,
110,62,49,60,47,111,112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,
69,88,80,65,78,68,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,
62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,
108,97,115,115,61,34,119,120,66,111,120,83,105,122,101,114,34,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,111,114,105,101,110,116,62,119,120,72,79,82,73,90,79,78,84,65,76,
60,47,111,114,105,101,110,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,
108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,111,112,116,105,111,110,62,48,60,47,111,112,116,105,111,110,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,102,108,97,103,62,119,120,65,76,76,60,47,102,108,97,103,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,
101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,
61,34,119,120,67,111,109,98,111,66,111,120,34,32,110,97,109,101,61,34,73,
68,67,95,67,79,77,66,79,72,68,68,34,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,116,
121,108,101,62,119,120,67,66,95,68,82,79,80,68,79,87,78,124,119,120,67,
66,95,82,69,65,68,79,78,76,89,60,47,115,116,121,108,101,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,115,105,122,101,62,51,53,48,44,45,49,60,47,115,105,122,101,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,118,97,108,117,101,47,62,10,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,99,111,110,116,101,110,116,47,62,10,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,
99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,
99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,
115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,
116,105,111,110,62,48,60,47,111,112,116,105,111,110,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,
103,62,119,120,65,76,76,32,124,32,119,120,65,76,73,71,78,95,67,69,78,84,
69,82,95,86,69,82,84,73,67,65,76,60,47,102,108,97,103,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,
100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,
99,116,32,99,108,97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,120,
116,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,115,105,122,101,62,56,48,44,45,49,60,47,115,105,122,
101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,108,97,98,101,108,62,70,68,68,49,58,60,47,108,97,98,101,
108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,119,114,97,112,62,45,49,60,47,119,114,97,112,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,
116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,111,112,116,105,111,110,62,49,60,47,111,112,116,105,111,110,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,102,108,97,103,62,119,120,69,88,80,65,78,68,60,47,102,108,97,103,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,111,120,83,
105,122,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,111,114,105,101,110,116,62,119,120,72,
79,82,73,90,79,78,84,65,76,60,47,111,114,105,101,110,116,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,
116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,110,62,48,60,47,
111,112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,
65,76,76,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,
62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,
99,116,32,99,108,97,115,115,61,34,119,120,67,111,109,98,111,66,111,120,
34,32,110,97,109,101,61,34,73,68,67,95,67,79,77,66,79,72,68,68,34,62,10,
34,32,110,97,109,101,61,34,73,68,67,95,67,79,77,66,79,68,82,65,34,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,115,116,121,108,101,62,119,120,67,66,95,68,82,79,80,
68,79,87,78,124,119,120,67,66,95,82,69,65,68,79,78,76,89,60,47,115,116,
@ -3454,7 +3591,7 @@ static unsigned char xml_res_file_25[] = {
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,105,122,101,62,56,48,44,
45,49,60,47,115,105,122,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,70,68,68,
49,58,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
50,58,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,119,114,97,112,62,45,49,60,
47,119,114,97,112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,
@ -3484,7 +3621,7 @@ static unsigned char xml_res_file_25[] = {
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,67,
111,109,98,111,66,111,120,34,32,110,97,109,101,61,34,73,68,67,95,67,79,
77,66,79,68,82,65,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
77,66,79,68,82,66,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,116,121,108,101,62,
119,120,67,66,95,68,82,79,80,68,79,87,78,124,119,120,67,66,95,82,69,65,
68,79,78,76,89,60,47,115,116,121,108,101,62,10,32,32,32,32,32,32,32,32,
@ -3500,164 +3637,103 @@ static unsigned char xml_res_file_25[] = {
32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,
106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,
105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,110,62,
48,60,47,111,112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,
110,62,48,60,47,111,112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,69,88,80,
65,78,68,32,124,32,119,120,65,76,76,60,47,102,108,97,103,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,
114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,
115,115,61,34,119,120,83,116,97,116,105,99,76,105,110,101,34,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,116,
121,108,101,62,119,120,76,73,95,72,79,82,73,90,79,78,84,65,76,60,47,115,
116,121,108,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,
110,62,49,60,47,111,112,116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,69,88,80,
65,78,68,32,124,32,119,120,65,76,76,60,47,102,108,97,103,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,
114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,
115,115,61,34,119,120,67,104,111,105,99,101,98,111,111,107,34,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,116,
121,108,101,62,119,120,67,72,66,95,68,69,70,65,85,76,84,60,47,115,116,121,
108,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,99,104,111,
105,99,101,98,111,111,107,112,97,103,101,34,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,
62,68,114,105,118,101,32,49,32,40,67,58,41,60,47,108,97,98,101,108,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,115,101,108,101,99,116,101,100,62,49,60,47,115,101,108,101,99,116,101,
100,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,80,
97,110,101,108,34,32,110,97,109,101,61,34,73,68,67,95,80,65,78,69,76,91,
48,93,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,60,115,116,121,108,101,62,119,120,84,65,66,95,84,82,
65,86,69,82,83,65,76,60,47,115,116,121,108,101,62,10,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,119,120,70,108,101,120,71,114,105,
100,83,105,122,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,114,111,119,115,62,48,60,
47,114,111,119,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,99,111,108,115,62,51,60,47,99,111,
108,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,118,103,97,112,62,48,60,47,118,103,97,112,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,104,103,97,112,62,48,60,47,104,103,97,112,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,103,114,111,119,97,98,108,101,99,111,108,115,62,50,60,47,103,
114,111,119,97,98,108,101,99,111,108,115,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,103,114,
111,119,97,98,108,101,114,111,119,115,47,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,
34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,111,112,116,105,111,110,62,48,60,47,111,112,
116,105,111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,65,
76,76,32,124,32,119,120,65,76,73,71,78,95,67,69,78,84,69,82,95,86,69,82,
84,73,67,65,76,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,
53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,120,116,34,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,
100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,115,105,122,101,62,56,48,44,45,49,60,47,115,105,122,101,62,10,32,
60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,83,116,97,116,
105,99,84,101,120,116,34,32,110,97,109,101,61,34,73,68,67,95,72,68,68,95,
76,65,66,69,76,91,48,93,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,105,122,
101,62,55,53,44,45,49,60,47,115,105,122,101,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,108,97,98,101,108,62,70,68,68,50,58,60,47,108,97,98,101,108,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,119,114,97,112,62,45,49,60,47,119,114,97,112,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,
106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,
108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,
112,116,105,111,110,62,49,60,47,111,112,116,105,111,110,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,
97,103,62,119,120,69,88,80,65,78,68,60,47,102,108,97,103,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,
114,100,101,114,62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,119,120,66,111,120,83,105,122,101,
114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,111,114,105,101,110,116,62,119,120,72,79,82,73,90,
79,78,84,65,76,60,47,111,114,105,101,110,116,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,
34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,60,111,112,116,105,111,110,62,48,60,47,111,112,116,
105,111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,65,76,76,60,
47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,
47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,
99,108,97,115,115,61,34,119,120,67,111,109,98,111,66,111,120,34,32,110,
97,109,101,61,34,73,68,67,95,67,79,77,66,79,68,82,66,34,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,60,115,116,121,108,101,62,119,120,67,66,95,68,82,79,80,68,79,87,
78,124,119,120,67,66,95,82,69,65,68,79,78,76,89,60,47,115,116,121,108,101,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,115,105,122,101,62,51,53,48,44,45,49,60,47,115,
105,122,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,118,97,108,117,101,47,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,60,99,111,110,116,101,110,116,47,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,
98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,
98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,
101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,
105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,60,111,112,116,105,111,110,62,48,60,47,111,112,116,105,111,
110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
102,108,97,103,62,119,120,69,88,80,65,78,68,32,124,32,119,120,65,76,76,
60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,101,
114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,83,116,97,116,
105,99,76,105,110,101,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,60,115,116,121,108,101,62,119,120,76,73,95,72,79,
82,73,90,79,78,84,65,76,60,47,115,116,121,108,101,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,
106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,
114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,60,111,112,116,105,111,110,62,49,60,47,111,112,116,105,
111,110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,102,108,97,103,62,119,120,69,88,80,65,78,68,32,124,32,119,120,65,
76,76,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,
101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,67,104,111,
105,99,101,98,111,111,107,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,115,116,121,108,101,62,119,120,67,72,66,
95,68,69,70,65,85,76,84,60,47,115,116,121,108,101,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,
116,32,99,108,97,115,115,61,34,99,104,111,105,99,101,98,111,111,107,112,
97,103,101,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,60,108,97,98,101,108,62,68,114,105,118,101,32,49,32,
40,67,58,41,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,101,108,101,99,116,101,
100,62,49,60,47,115,101,108,101,99,116,101,100,62,10,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,
99,116,32,99,108,97,115,115,61,34,119,120,80,97,110,101,108,34,32,110,97,
109,101,61,34,73,68,67,95,80,65,78,69,76,91,48,93,34,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,
116,121,108,101,62,119,120,84,65,66,95,84,82,65,86,69,82,83,65,76,60,47,
115,116,121,108,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,
115,115,61,34,119,120,70,108,101,120,71,114,105,100,83,105,122,101,114,
34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,60,114,111,119,115,62,48,60,47,114,111,119,115,62,
32,60,108,97,98,101,108,62,84,121,112,101,58,60,47,108,97,98,101,108,62,
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,99,111,108,115,62,51,60,47,99,111,108,115,62,10,32,32,
32,32,32,32,32,32,32,32,32,60,119,114,97,112,62,45,49,60,47,119,114,97,
112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,60,118,103,97,112,62,48,60,47,118,103,97,112,62,10,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
104,103,97,112,62,48,60,47,104,103,97,112,62,10,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,103,114,
111,119,97,98,108,101,99,111,108,115,62,50,60,47,103,114,111,119,97,98,
108,101,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,103,114,111,119,97,98,108,
101,114,111,119,115,47,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,
108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,
60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,
99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,60,111,112,116,105,111,110,62,48,60,47,111,112,116,105,111,
32,32,32,32,32,60,111,112,116,105,111,110,62,49,60,47,111,112,116,105,111,
110,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,65,76,76,32,124,
32,119,120,65,76,73,71,78,95,67,69,78,84,69,82,95,86,69,82,84,73,67,65,
76,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,69,88,80,65,78,
68,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,
62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
101,99,116,32,99,108,97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,
120,116,34,32,110,97,109,101,61,34,73,68,67,95,72,68,68,95,76,65,66,69,
76,91,48,93,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,105,122,101,62,55,53,
44,45,49,60,47,115,105,122,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,
101,108,62,84,121,112,101,58,60,47,108,97,98,101,108,62,10,32,32,32,32,
101,99,116,32,99,108,97,115,115,61,34,119,120,66,111,120,83,105,122,101,
114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,111,114,105,101,110,116,62,119,120,
72,79,82,73,90,79,78,84,65,76,60,47,111,114,105,101,110,116,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,60,119,114,97,112,62,45,49,60,47,119,114,97,112,62,10,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,
101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,
115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,111,112,116,105,111,110,62,49,60,47,111,112,116,105,111,110,62,10,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,102,108,97,103,62,119,120,69,88,80,65,78,68,60,47,102,
108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,
47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,
116,32,99,108,97,115,115,61,34,119,120,66,111,120,83,105,122,101,114,34,
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,60,111,114,105,101,110,116,62,119,120,72,
79,82,73,90,79,78,84,65,76,60,47,111,114,105,101,110,116,62,10,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,
32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,
105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
60,111,112,116,105,111,110,62,48,60,47,111,112,116,105,111,110,62,10,32,