task-vuplus-enigma2
[vuplus_openvuplus_3.0] / meta-openvuplus / recipes-enigma2 / dvbtools / dvb-apps-1.1.1 / update-to-tip.diff
diff --git a/meta-openvuplus/recipes-enigma2/dvbtools/dvb-apps-1.1.1/update-to-tip.diff b/meta-openvuplus/recipes-enigma2/dvbtools/dvb-apps-1.1.1/update-to-tip.diff
new file mode 100644 (file)
index 0000000..b91a750
--- /dev/null
@@ -0,0 +1,37589 @@
+Update to:
+
+changeset 1406:c87abbb20491 tip
+
+update scan file for fr-Reims
+submitted by sylvestre.cartier gmail.com
+author Christoph Pfister <pfister@linuxtv.org>
+date   Sun Nov 28 21:24:42 2010 +0100 (3 weeks ago)
+parents        ce1c094b9636
+
+Make.rules                                 |    2 
+ README                                     |    7 
+ a/util/scan/dvb-t/be-Brussels              |    5 
+ a/util/scan/dvb-t/be-Libramont             |   10 
+ a/util/scan/dvb-t/be-Schoten               |    3 
+ a/util/scan/dvb-t/be-St_Pieters_Leeuw      |    3 
+ a/util/scan/dvb-t/be-Tournai               |    3 
+ a/util/scan/dvb-t/cz-Brno                  |   10 
+ a/util/scan/dvb-t/cz-Domazlice             |    3 
+ a/util/scan/dvb-t/cz-Klet                  |    4 
+ a/util/scan/dvb-t/cz-Ostrava               |    3 
+ a/util/scan/dvb-t/cz-Plzen                 |    8 
+ a/util/scan/dvb-t/cz-Praha                 |    7 
+ a/util/scan/dvb-t/fr-Lille                 |   30 
+ a/util/scan/dvb-t/fr-LilleT2               |   13 
+ a/util/scan/dvb-t/hr-Zagreb                |    3 
+ b/util/alevt/COPYRIGHT                     |  297 +
+ b/util/alevt/ChangeLog                     |  535 ++
+ b/util/alevt/EXPORT.HOWTO                  |   84 
+ b/util/alevt/Makefile                      |  130 
+ b/util/alevt/README                        |   72 
+ b/util/alevt/README.OLD                    |   78 
+ b/util/alevt/ReadmeGR                      |   28 
+ b/util/alevt/TODO                          |   12 
+ b/util/alevt/alevt-cap.1                   |   53 
+ b/util/alevt/alevt-cap.c                   |  280 +
+ b/util/alevt/alevt-date.1                  |   41 
+ b/util/alevt/alevt-date.c                  |  225 +
+ b/util/alevt/alevt.1                       |   60 
+ b/util/alevt/alevt.desktop                 |    9 
+ b/util/alevt/bdf2xbm.c                     |  212 +
+ b/util/alevt/cache.c                       |  229 +
+ b/util/alevt/cache.h                       |   41 
+ b/util/alevt/dllist.h                      |   55 
+ b/util/alevt/exp-gfx.c                     |  258 +
+ b/util/alevt/exp-html.c                    |  299 +
+ b/util/alevt/exp-txt.c                     |  226 +
+ b/util/alevt/export.c                      |  364 +
+ b/util/alevt/export.h                      |   66 
+ b/util/alevt/fdset.c                       |   97 
+ b/util/alevt/fdset.h                       |   28 
+ b/util/alevt/font.c                        |    5 
+ b/util/alevt/font.h                        |   19 
+ b/util/alevt/hamm.c                        |  229 +
+ b/util/alevt/hamm.h                        |    7 
+ b/util/alevt/help.c                        |   83 
+ b/util/alevt/help.h                        |    8 
+ b/util/alevt/icon.xbm                      |   17 
+ b/util/alevt/lang.c                        |  393 +
+ b/util/alevt/lang.h                        |   28 
+ b/util/alevt/main.c                        |  221 +
+ b/util/alevt/misc.c                        |   66 
+ b/util/alevt/misc.h                        |   32 
+ b/util/alevt/os.h                          |    7 
+ b/util/alevt/search.c                      |  127 
+ b/util/alevt/search.h                      |   16 
+ b/util/alevt/ui.c                          |  721 +++
+ b/util/alevt/ui.h                          |   35 
+ b/util/alevt/vbi.c                         |  942 ++++
+ b/util/alevt/vbi.h                         |   47 
+ b/util/alevt/vt.h                          |   62 
+ b/util/alevt/vt900.out                     |   29 
+ b/util/alevt/vt901.out                     |   29 
+ b/util/alevt/vt902.out                     |   29 
+ b/util/alevt/vt903.out                     |   29 
+ b/util/alevt/vt904.out                     |   29 
+ b/util/alevt/vt905.out                     |   29 
+ b/util/alevt/vt906.out                     |   29 
+ b/util/alevt/vt907.out                     |   29 
+ b/util/alevt/vt908.out                     |   29 
+ b/util/alevt/vt909.out                     |   29 
+ b/util/alevt/vt910.out                     |   29 
+ b/util/alevt/vt911.out                     |   29 
+ b/util/alevt/vt912.out                     |   29 
+ b/util/alevt/vt913.out                     |   29 
+ b/util/alevt/vt914.out                     |   29 
+ b/util/alevt/vt915.out                     |   29 
+ b/util/alevt/vtxt-iso8859-7.bdf            | 5768 ++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-koi8.bdf                 | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-latin-1.bdf              | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-latin-2.bdf              | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/xio.c                         | 1156 +++++
+ b/util/alevt/xio.h                         |   80 
+ b/util/gotox/Makefile                      |   17 
+ b/util/gotox/gotox.c                       |  145 
+ b/util/scan/dvb-c/at-Kabel-Braunau         |   26 
+ b/util/scan/dvb-c/at-Kabelsignal           |   38 
+ b/util/scan/dvb-c/de-komro-Rosenheim       |   30 
+ b/util/scan/dvb-c/fi-Oulu                  |   19 
+ b/util/scan/dvb-c/hu-Digikabel             |   21 
+ b/util/scan/dvb-c/nl-REKAM-CAIW_Gouda      |    4 
+ b/util/scan/dvb-s/Agila2_C-146.0E          |   60 
+ b/util/scan/dvb-s/Apstar6_C-134.0E         |   15 
+ b/util/scan/dvb-s/AsiaSat2_C-100.5E        |   51 
+ b/util/scan/dvb-s/Asiasat4_C-122.2E        |   27 
+ b/util/scan/dvb-s/Astra-23.5E              |   66 
+ b/util/scan/dvb-s/Atlantic-Bird-3-5.0W     |    4 
+ b/util/scan/dvb-s/Chinastar1_C-87.5E       |   15 
+ b/util/scan/dvb-s/Insat2E_C-83.0E          |   93 
+ b/util/scan/dvb-s/Insat3A_C-93.5E          |   66 
+ b/util/scan/dvb-s/Insat4A_C-83.0E          |   93 
+ b/util/scan/dvb-s/Insat4B_C-93.5E          |   51 
+ b/util/scan/dvb-s/Intelsat8_C-166.0E       |   39 
+ b/util/scan/dvb-s/JCSat3A_C-128.0E         |   18 
+ b/util/scan/dvb-s/Measat3_C-91.5E          |   54 
+ b/util/scan/dvb-s/PalapaC2_C-113.0E        |   39 
+ b/util/scan/dvb-s/ST1_C-80.0E              |   27 
+ b/util/scan/dvb-s/Telkom1_C-108.0E         |   48 
+ b/util/scan/dvb-s/Telstar10_C-76.5E        |   63 
+ b/util/scan/dvb-s/Telstar18_C-138.0E       |   18 
+ b/util/scan/dvb-s/Thaicom1A_C-120.0E       |   24 
+ b/util/scan/dvb-s/Thaicom2_C-78.5E         |   33 
+ b/util/scan/dvb-s/Thaicom5_C-78.5E         |   69 
+ b/util/scan/dvb-s/Vinasat1_C-132.0E        |   12 
+ b/util/scan/dvb-t/au-AdelaideFoothills     |   12 
+ b/util/scan/dvb-t/au-Ballarat              |   12 
+ b/util/scan/dvb-t/au-Bendigo               |   41 
+ b/util/scan/dvb-t/au-Devonport             |   19 
+ b/util/scan/dvb-t/au-FraserCoast-Bundaberg |   12 
+ b/util/scan/dvb-t/au-Goulburn-Rocky_Hill   |   19 
+ b/util/scan/dvb-t/au-Hervey_Bay-Ghost_Hill |   16 
+ b/util/scan/dvb-t/au-Sutherland            |   20 
+ b/util/scan/dvb-t/be-All                   |    8 
+ b/util/scan/dvb-t/ch-Geneva                |   16 
+ b/util/scan/dvb-t/cz-All                   |   41 
+ b/util/scan/dvb-t/es-BaixoMinho            |   16 
+ b/util/scan/dvb-t/es-Granada               |    8 
+ b/util/scan/dvb-t/es-Pamplona              |    9 
+ b/util/scan/dvb-t/es-SC_Tenerife           |   18 
+ b/util/scan/dvb-t/es-Vitoria-Gasteiz       |    8 
+ b/util/scan/dvb-t/fi-Smedsbole             |   13 
+ b/util/scan/dvb-t/fr-Lille-Bouvigny        |   26 
+ b/util/scan/dvb-t/fr-Rochefort-sur-mer     |   14 
+ b/util/scan/dvb-t/hr-All                   |   30 
+ b/util/scan/dvb-t/hu-Budapest              |    8 
+ b/util/scan/dvb-t/hu-Debrecen              |    8 
+ b/util/scan/dvb-t/hu-Gyor                  |    8 
+ b/util/scan/dvb-t/hu-Kabhegy               |    8 
+ b/util/scan/dvb-t/hu-Kekes                 |    8 
+ b/util/scan/dvb-t/hu-Kiskoros              |    8 
+ b/util/scan/dvb-t/hu-Nagykanizsa-Ujudvar   |    8 
+ b/util/scan/dvb-t/hu-Pecs                  |    8 
+ b/util/scan/dvb-t/hu-Szeged                |    8 
+ b/util/scan/dvb-t/hu-Szentes               |    8 
+ b/util/scan/dvb-t/hu-Tokaj                 |    8 
+ b/util/scan/dvb-t/hu-Uzd                   |    8 
+ b/util/scan/dvb-t/hu-Vasvar-Hegyhatsal     |    8 
+ b/util/scan/dvb-t/il-All                   |    5 
+ b/util/scan/dvb-t/ir-Tehran                |    4 
+ b/util/scan/dvb-t/it-Montevergine          |   18 
+ b/util/scan/dvb-t/lt-All                   |   39 
+ b/util/scan/dvb-t/ro-Bucharest             |    5 
+ b/util/scan/dvb-t/si-Ljubljana             |    5 
+ b/util/scan/dvb-t/sk-Bardejov              |   11 
+ b/util/scan/dvb-t/sk-Michalovce            |   11 
+ b/util/scan/dvb-t/sk-Namestovo             |   11 
+ b/util/scan/dvb-t/sk-Poprad                |   11 
+ b/util/scan/dvb-t/sk-RimavskaSobota        |   11 
+ b/util/scan/dvb-t/sk-Trencin               |   12 
+ b/util/scan/dvb-t/sk-VelkyKrtis            |   11 
+ b/util/scan/dvb-t/sk-Zilina                |   11 
+ b/util/scan/dvb-t/vn-Thaibinh              |    5 
+ b/util/szap/util.c                         |  126 
+ b/util/szap/util.h                         |   24 
+ lib/libdvben50221/en50221_stdcam_llci.c    |   19 
+ lib/libdvbsec/dvbsec_api.c                 |   17 
+ test/Makefile                              |    1 
+ test/README                                |    2 
+ test/test_video.c                          |   53 
+ util/Makefile                              |    1 
+ util/femon/femon.c                         |   57 
+ util/scan/dvb-c/at-KarrerNet               |   18 
+ util/scan/dvb-c/de-Primacom                |    5 
+ util/scan/dvb-c/de-Unitymedia              |   17 
+ util/scan/dvb-c/fi-Turku                   |    8 
+ util/scan/dvb-c/se-comhem                  |   22 
+ util/scan/dvb-s/AsiaSat3S_C-105.5E         |  164 
+ util/scan/dvb-t/au-Adelaide                |    2 
+ util/scan/dvb-t/au-Brisbane                |    2 
+ util/scan/dvb-t/au-SunshineCoast           |    2 
+ util/scan/dvb-t/ch-All                     |    1 
+ util/scan/dvb-t/de-Baden-Wuerttemberg      |   23 
+ util/scan/dvb-t/de-Bayern                  |   56 
+ util/scan/dvb-t/de-Berlin                  |   13 
+ util/scan/dvb-t/de-Brandenburg             |    4 
+ util/scan/dvb-t/de-Bremen                  |    8 
+ util/scan/dvb-t/de-Hamburg                 |   20 
+ util/scan/dvb-t/de-Hessen                  |   26 
+ util/scan/dvb-t/de-Mecklenburg-Vorpommern  |   10 
+ util/scan/dvb-t/de-Niedersachsen           |   33 
+ util/scan/dvb-t/de-Nordrhein-Westfalen     |   16 
+ util/scan/dvb-t/de-Rheinland-Pfalz         |   10 
+ util/scan/dvb-t/de-Saarland                |    6 
+ util/scan/dvb-t/de-Sachsen                 |   14 
+ util/scan/dvb-t/de-Sachsen-Anhalt          |    8 
+ util/scan/dvb-t/de-Schleswig-Holstein      |   26 
+ util/scan/dvb-t/de-Thueringen              |    8 
+ util/scan/dvb-t/dk-All                     |   16 
+ util/scan/dvb-t/es-Albacete                |   20 
+ util/scan/dvb-t/es-Alfabia                 |    3 
+ util/scan/dvb-t/es-Collserola              |   16 
+ util/scan/dvb-t/es-Las_Palmas              |   22 
+ util/scan/dvb-t/es-Sevilla                 |   17 
+ util/scan/dvb-t/fr-Boulogne                |   17 
+ util/scan/dvb-t/fr-Brest                   |   10 
+ util/scan/dvb-t/fr-Chambery                |   42 
+ util/scan/dvb-t/fr-Laval                   |   12 
+ util/scan/dvb-t/fr-Montbeliard             |   28 
+ util/scan/dvb-t/fr-Nantes                  |   13 
+ util/scan/dvb-t/fr-Poitiers                |   12 
+ util/scan/dvb-t/fr-Reims                   |   18 
+ util/scan/dvb-t/fr-Tours                   |   32 
+ util/scan/dvb-t/gr-Athens                  |    2 
+ util/scan/dvb-t/is-Reykjavik               |   42 
+ util/scan/dvb-t/it-Milano                  |   38 
+ util/scan/dvb-t/se-Horby_Sallerup          |    2 
+ util/scan/dvb-t/se-Ornskoldsvik_As         |    1 
+ util/scan/dvb-t/se-Skelleftea              |    1 
+ util/scan/dvb-t/sk-BanskaBystrica          |    9 
+ util/scan/dvb-t/sk-Bratislava              |    9 
+ util/scan/dvb-t/sk-Kosice                  |    9 
+ util/scan/dvb-t/uk-Aberdare                |   17 
+ util/scan/dvb-t/uk-Redruth                 |   13 
+ util/scan/dvb-t/uk-StocklandHill           |   15 
+ util/scan/dvb-t/uk-Storeton                |   15 
+ util/scan/dvb-t/uk-WinterHill              |   18 
+ util/scan/scan.c                           |   11 
+ util/szap/Makefile                         |    2 
+ util/szap/azap.c                           |   27 
+ util/szap/czap.c                           |   91 
+ util/szap/szap.c                           |   97 
+ util/szap/tzap.c                           |   73 
+ 232 files changed, 34875 insertions(+), 778 deletions(-)
+diff -r af23d23c278b Make.rules
+--- a/Make.rules       Sat Jun 20 16:47:55 2009 +0200
++++ b/Make.rules       Tue Dec 21 12:13:28 2010 +0100
+@@ -35,7 +35,7 @@
+ sharedir   ?= $(prefix)/share
+ ifneq ($(DESTDIR),)
+-DESTDIR = $(DESTDIR)/
++DESTDIR := $(DESTDIR)/
+ endif
+ ifeq ($(V),1)
+diff -r af23d23c278b README
+--- a/README   Sat Jun 20 16:47:55 2009 +0200
++++ b/README   Tue Dec 21 12:13:28 2010 +0100
+@@ -15,6 +15,8 @@
+ util/dvbtraffic       - Monitor traffic on a digital device.
+ util/femon    - Monitor the tuning on a digital TV device.
+ util/zap      - *Just* tunes a digital device - really intended for developers.
++util/gotox    - Simple Rotor control utility
++util/alevt    - Teletext capture and display utility
+ Hardware Specific Utilities:
+ util/av7110_loadkeys  - Load remote keys into an av7110 based card
+@@ -36,5 +38,10 @@
+ files as they are contained in the linuxtv-dvb-1.? release
+ and the 2.6.x Linux kernel.
++AleVT is not compiled by the main Makefile, because it depends on external
++libraries which might not be available in your system (see util/alevt/README for
++details). If you have the required libraries, to compile AleVT go to util/alevt/
++and type "make".
++
+ Johannes Stezenbach <js@convergence.de>
+ Andrew de Quincey <adq_dvb@lidskialf.net>
+diff -r af23d23c278b lib/libdvben50221/en50221_stdcam_llci.c
+--- a/lib/libdvben50221/en50221_stdcam_llci.c  Sat Jun 20 16:47:55 2009 +0200
++++ b/lib/libdvben50221/en50221_stdcam_llci.c  Tue Dec 21 12:13:28 2010 +0100
+@@ -374,14 +374,21 @@
+               } else if (resource_id == EN50221_APP_MMI_RESOURCEID) {
+                       llci->stdcam.mmi_session_number = session_number;
+               }
++              break;
++      case S_SCALLBACK_REASON_CLOSE:
++              if (resource_id == EN50221_APP_MMI_RESOURCEID) {
++                      llci->stdcam.mmi_session_number = -1;
++              } else if (resource_id == EN50221_APP_DATETIME_RESOURCEID) {
++                      llci->datetime_session_number = -1;
++              } else if (resource_id == EN50221_APP_AI_RESOURCEID) {
++                      llci->stdcam.ai_session_number = -1;
++              } else if (resource_id == EN50221_APP_CA_RESOURCEID) {
++                      llci->stdcam.ca_session_number = -1;
++              } else if (resource_id == EN50221_APP_MMI_RESOURCEID) {
++                      llci->stdcam.mmi_session_number = -1;
++              }
+               break;
+-    case S_SCALLBACK_REASON_CLOSE:
+-        if (resource_id == EN50221_APP_MMI_RESOURCEID) {
+-            llci->stdcam.mmi_session_number = -1;
+-        }
+-
+-        break;
+       }
+       return 0;
+ }
+diff -r af23d23c278b lib/libdvbsec/dvbsec_api.c
+--- a/lib/libdvbsec/dvbsec_api.c       Sat Jun 20 16:47:55 2009 +0200
++++ b/lib/libdvbsec/dvbsec_api.c       Tue Dec 21 12:13:28 2010 +0100
+@@ -537,19 +537,12 @@
+       }
+       // generate the command
+-      if (integer < -256) {
+-              return -EINVAL;
+-      } else if (integer < 0) {
+-              integer = -integer;
+-              data[3] = 0xf0;
+-      } else if (integer < 256) {
+-              data[3] = 0x00;
+-      } else if (integer < 512) {
+-              integer -= 256;
+-              data[3] = 0x10;
+-      } else {
+-              return -EINVAL;
++      if (integer < 0.0) {
++              data[3] = 0xD0;  // West is a negative angle value
++      } else if (integer >= 0.0) {
++              data[3] = 0xE0;  // East is a positive angle value
+       }
++      integer = abs(integer);
+       data[3] |= ((integer / 16) & 0x0f);
+       integer = integer % 16;
+       data[4] |= ((integer & 0x0f) << 4) | fraction;
+diff -r af23d23c278b test/Makefile
+--- a/test/Makefile    Sat Jun 20 16:47:55 2009 +0200
++++ b/test/Makefile    Tue Dec 21 12:13:28 2010 +0100
+@@ -18,6 +18,7 @@
+            test_stillimage \
+            test_tt         \
+            test_vevent     \
++           test_video      \
+          evtest          \
+          video           \
+          szap2
+diff -r af23d23c278b test/README
+--- a/test/README      Sat Jun 20 16:47:55 2009 +0200
++++ b/test/README      Tue Dec 21 12:13:28 2010 +0100
+@@ -47,4 +47,4 @@
+ test_dvr      :
+ test_front    :
+ test_switch   :
+-test_video    :
++test_video    : Play video-only file on /dev/dvb/adapter0/video0
+diff -r af23d23c278b test/test_video.c
+--- a/test/test_video.c        Sat Jun 20 16:47:55 2009 +0200
++++ b/test/test_video.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -23,6 +23,7 @@
+ #include <sys/ioctl.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <stdint.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -31,8 +32,7 @@
+ #include <unistd.h>
+ #include <linux/dvb/dmx.h>
+-#include <linux/dvb/frontend_old.h>
+-#include <linux/dvb/sec.h>
++#include <linux/dvb/frontend.h>
+ #include <linux/dvb/video.h>
+ #include <sys/poll.h>
+@@ -100,7 +100,7 @@
+-int videoSetBlank(int fd, boolean state)
++int videoSetBlank(int fd, int state)
+ {
+       int ans;
+@@ -138,72 +138,72 @@
+ int videoGetStatus(int fd)
+ {
+-      struct video_status stat;
++      struct video_status vstat;
+       int ans;
+-      if ((ans = ioctl(fd,VIDEO_GET_STATUS, &stat)) < 0) {
++      if ((ans = ioctl(fd,VIDEO_GET_STATUS, &vstat)) < 0) {
+               perror("VIDEO GET STATUS: ");
+               return -1;
+       }
+       printf("Video Status:\n");
+       printf("  Blank State          : %s\n",
+-             (stat.video_blank ? "BLANK" : "STILL"));
++             (vstat.video_blank ? "BLANK" : "STILL"));
+       printf("  Play State           : ");
+-      switch ((int)stat.play_state){
++      switch ((int)vstat.play_state){
+       case VIDEO_STOPPED:
+-              printf("STOPPED (%d)\n",stat.play_state);
++              printf("STOPPED (%d)\n",vstat.play_state);
+               break;
+       case VIDEO_PLAYING:
+-              printf("PLAYING (%d)\n",stat.play_state);
++              printf("PLAYING (%d)\n",vstat.play_state);
+               break;
+       case VIDEO_FREEZED:
+-              printf("FREEZED (%d)\n",stat.play_state);
++              printf("FREEZED (%d)\n",vstat.play_state);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.play_state);
++              printf("unknown (%d)\n",vstat.play_state);
+               break;
+       }
+       printf("  Stream Source        : ");
+-      switch((int)stat.stream_source){
++      switch((int)vstat.stream_source){
+       case VIDEO_SOURCE_DEMUX:
+-              printf("DEMUX (%d)\n",stat.stream_source);
++              printf("DEMUX (%d)\n",vstat.stream_source);
+               break;
+       case VIDEO_SOURCE_MEMORY:
+-              printf("MEMORY (%d)\n",stat.stream_source);
++              printf("MEMORY (%d)\n",vstat.stream_source);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.stream_source);
++              printf("unknown (%d)\n",vstat.stream_source);
+               break;
+       }
+       printf("  Format (Aspect Ratio): ");
+-      switch((int)stat.video_format){
++      switch((int)vstat.video_format){
+       case VIDEO_FORMAT_4_3:
+-              printf("4:3 (%d)\n",stat.video_format);
++              printf("4:3 (%d)\n",vstat.video_format);
+               break;
+       case VIDEO_FORMAT_16_9:
+-              printf("16:9 (%d)\n",stat.video_format);
++              printf("16:9 (%d)\n",vstat.video_format);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.video_format);
++              printf("unknown (%d)\n",vstat.video_format);
+               break;
+       }
+       printf("  Display Format       : ");
+-      switch((int)stat.display_format){
++      switch((int)vstat.display_format){
+       case VIDEO_PAN_SCAN:
+-              printf("Pan&Scan (%d)\n",stat.display_format);
++              printf("Pan&Scan (%d)\n",vstat.display_format);
+               break;
+       case VIDEO_LETTER_BOX:
+-              printf("Letterbox (%d)\n",stat.display_format);
++              printf("Letterbox (%d)\n",vstat.display_format);
+               break;
+       case VIDEO_CENTER_CUT_OUT:
+-              printf("Center cutout (%d)\n",stat.display_format);
++              printf("Center cutout (%d)\n",vstat.display_format);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.display_format);
++              printf("unknown (%d)\n",vstat.display_format);
+               break;
+       }
+       return 0;
+@@ -230,7 +230,6 @@
+       int written;
+       struct pollfd pfd[NFD];
+       int stopped = 0;
+-      int ch;
+       pfd[0].fd = STDIN_FILENO;
+       pfd[0].events = POLLIN;
+@@ -327,7 +326,7 @@
+       videoPlay(fd);
+ }
+-main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+       int fd;
+       int filefd;
+@@ -338,7 +337,7 @@
+               perror("File open:");
+               return -1;
+       }
+-      if ((fd = open("/dev/ost/video1",O_RDWR|O_NONBLOCK)) < 0){
++      if ((fd = open("/dev/dvb/adapter0/video0",O_RDWR|O_NONBLOCK)) < 0){
+               perror("VIDEO DEVICE: ");
+               return -1;
+       }
+diff -r af23d23c278b util/Makefile
+--- a/util/Makefile    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/Makefile    Tue Dec 21 12:13:28 2010 +0100
+@@ -16,4 +16,5 @@
+       $(MAKE) -C szap $@
+       $(MAKE) -C ttusb_dec_reset $@
+       $(MAKE) -C gnutv $@
++      $(MAKE) -C gotox $@
+       $(MAKE) -C zap $@
+diff -r af23d23c278b util/alevt/COPYRIGHT
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/COPYRIGHT     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,297 @@
++This message applies to all files within the archive:
++
++    Copyright (C) 1998,1999,2000 Edgar Toernig (froese@gmx.de)
++    All rights reserved.
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License Version 2 as
++    published by the Free Software Foundation.
++
++    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.
++
++
++And here's the GNU GPL V2:
++
++                  GNU GENERAL PUBLIC LICENSE
++                     Version 2, June 1991
++
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
++                          675 Mass Ave, Cambridge, MA 02139, USA
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++                          Preamble
++
++  The licenses for most software are designed to take away your
++freedom to share and change it.  By contrast, the GNU General Public
++License is intended to guarantee your freedom to share and change free
++software--to make sure the software is free for all its users.  This
++General Public License applies to most of the Free Software
++Foundation's software and to any other program whose authors commit to
++using it.  (Some other Free Software Foundation software is covered by
++the GNU Library General Public License instead.)  You can apply it to
++your programs, too.
++
++  When we speak of free software, we are referring to freedom, not
++price.  Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++this service if you wish), that you receive source code or can get it
++if you want it, that you can change the software or use pieces of it
++in new free programs; and that you know you can do these things.
++
++  To protect your rights, we need to make restrictions that forbid
++anyone to deny you these rights or to ask you to surrender the rights.
++These restrictions translate to certain responsibilities for you if you
++distribute copies of the software, or if you modify it.
++
++  For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must give the recipients all the rights that
++you have.  You must make sure that they, too, receive or can get the
++source code.  And you must show them these terms so they know their
++rights.
++
++  We protect your rights with two steps: (1) copyright the software, and
++(2) offer you this license which gives you legal permission to copy,
++distribute and/or modify the software.
++
++  Also, for each author's protection and ours, we want to make certain
++that everyone understands that there is no warranty for this free
++software.  If the software is modified by someone else and passed on, we
++want its recipients to know that what they have is not the original, so
++that any problems introduced by others will not reflect on the original
++authors' reputations.
++
++  Finally, any free program is threatened constantly by software
++patents.  We wish to avoid the danger that redistributors of a free
++program will individually obtain patent licenses, in effect making the
++program proprietary.  To prevent this, we have made it clear that any
++patent must be licensed for everyone's free use or not licensed at all.
++
++  The precise terms and conditions for copying, distribution and
++modification follow.
++
++                  GNU GENERAL PUBLIC LICENSE
++   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++
++  0. This License applies to any program or other work which contains
++a notice placed by the copyright holder saying it may be distributed
++under the terms of this General Public License.  The "Program", below,
++refers to any such program or work, and a "work based on the Program"
++means either the Program or any derivative work under copyright law:
++that is to say, a work containing the Program or a portion of it,
++either verbatim or with modifications and/or translated into another
++language.  (Hereinafter, translation is included without limitation in
++the term "modification".)  Each licensee is addressed as "you".
++
++Activities other than copying, distribution and modification are not
++covered by this License; they are outside its scope.  The act of
++running the Program is not restricted, and the output from the Program
++is covered only if its contents constitute a work based on the
++Program (independent of having been made by running the Program).
++Whether that is true depends on what the Program does.
++
++  1. You may copy and distribute verbatim copies of the Program's
++source code as you receive it, in any medium, provided that you
++conspicuously and appropriately publish on each copy an appropriate
++copyright notice and disclaimer of warranty; keep intact all the
++notices that refer to this License and to the absence of any warranty;
++and give any other recipients of the Program a copy of this License
++along with the Program.
++
++You may charge a fee for the physical act of transferring a copy, and
++you may at your option offer warranty protection in exchange for a fee.
++
++  2. You may modify your copy or copies of the Program or any portion
++of it, thus forming a work based on the Program, and copy and
++distribute such modifications or work under the terms of Section 1
++above, provided that you also meet all of these conditions:
++
++    a) You must cause the modified files to carry prominent notices
++    stating that you changed the files and the date of any change.
++
++    b) You must cause any work that you distribute or publish, that in
++    whole or in part contains or is derived from the Program or any
++    part thereof, to be licensed as a whole at no charge to all third
++    parties under the terms of this License.
++
++    c) If the modified program normally reads commands interactively
++    when run, you must cause it, when started running for such
++    interactive use in the most ordinary way, to print or display an
++    announcement including an appropriate copyright notice and a
++    notice that there is no warranty (or else, saying that you provide
++    a warranty) and that users may redistribute the program under
++    these conditions, and telling the user how to view a copy of this
++    License.  (Exception: if the Program itself is interactive but
++    does not normally print such an announcement, your work based on
++    the Program is not required to print an announcement.)
++
++These requirements apply to the modified work as a whole.  If
++identifiable sections of that work are not derived from the Program,
++and can be reasonably considered independent and separate works in
++themselves, then this License, and its terms, do not apply to those
++sections when you distribute them as separate works.  But when you
++distribute the same sections as part of a whole which is a work based
++on the Program, the distribution of the whole must be on the terms of
++this License, whose permissions for other licensees extend to the
++entire whole, and thus to each and every part regardless of who wrote it.
++
++Thus, it is not the intent of this section to claim rights or contest
++your rights to work written entirely by you; rather, the intent is to
++exercise the right to control the distribution of derivative or
++collective works based on the Program.
++
++In addition, mere aggregation of another work not based on the Program
++with the Program (or with a work based on the Program) on a volume of
++a storage or distribution medium does not bring the other work under
++the scope of this License.
++
++  3. You may copy and distribute the Program (or a work based on it,
++under Section 2) in object code or executable form under the terms of
++Sections 1 and 2 above provided that you also do one of the following:
++
++    a) Accompany it with the complete corresponding machine-readable
++    source code, which must be distributed under the terms of Sections
++    1 and 2 above on a medium customarily used for software interchange; or,
++
++    b) Accompany it with a written offer, valid for at least three
++    years, to give any third party, for a charge no more than your
++    cost of physically performing source distribution, a complete
++    machine-readable copy of the corresponding source code, to be
++    distributed under the terms of Sections 1 and 2 above on a medium
++    customarily used for software interchange; or,
++
++    c) Accompany it with the information you received as to the offer
++    to distribute corresponding source code.  (This alternative is
++    allowed only for noncommercial distribution and only if you
++    received the program in object code or executable form with such
++    an offer, in accord with Subsection b above.)
++
++The source code for a work means the preferred form of the work for
++making modifications to it.  For an executable work, complete source
++code means all the source code for all modules it contains, plus any
++associated interface definition files, plus the scripts used to
++control compilation and installation of the executable.  However, as a
++special exception, the source code distributed need not include
++anything that is normally distributed (in either source or binary
++form) with the major components (compiler, kernel, and so on) of the
++operating system on which the executable runs, unless that component
++itself accompanies the executable.
++
++If distribution of executable or object code is made by offering
++access to copy from a designated place, then offering equivalent
++access to copy the source code from the same place counts as
++distribution of the source code, even though third parties are not
++compelled to copy the source along with the object code.
++
++  4. You may not copy, modify, sublicense, or distribute the Program
++except as expressly provided under this License.  Any attempt
++otherwise to copy, modify, sublicense or distribute the Program is
++void, and will automatically terminate your rights under this License.
++However, parties who have received copies, or rights, from you under
++this License will not have their licenses terminated so long as such
++parties remain in full compliance.
++
++  5. You are not required to accept this License, since you have not
++signed it.  However, nothing else grants you permission to modify or
++distribute the Program or its derivative works.  These actions are
++prohibited by law if you do not accept this License.  Therefore, by
++modifying or distributing the Program (or any work based on the
++Program), you indicate your acceptance of this License to do so, and
++all its terms and conditions for copying, distributing or modifying
++the Program or works based on it.
++
++  6. Each time you redistribute the Program (or any work based on the
++Program), the recipient automatically receives a license from the
++original licensor to copy, distribute or modify the Program subject to
++these terms and conditions.  You may not impose any further
++restrictions on the recipients' exercise of the rights granted herein.
++You are not responsible for enforcing compliance by third parties to
++this License.
++
++  7. If, as a consequence of a court judgment or allegation of patent
++infringement or for any other reason (not limited to patent issues),
++conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License.  If you cannot
++distribute so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you
++may not distribute the Program at all.  For example, if a patent
++license would not permit royalty-free redistribution of the Program by
++all those who receive copies directly or indirectly through you, then
++the only way you could satisfy both it and this License would be to
++refrain entirely from distribution of the Program.
++
++If any portion of this section is held invalid or unenforceable under
++any particular circumstance, the balance of the section is intended to
++apply and the section as a whole is intended to apply in other
++circumstances.
++
++It is not the purpose of this section to induce you to infringe any
++patents or other property right claims or to contest validity of any
++such claims; this section has the sole purpose of protecting the
++integrity of the free software distribution system, which is
++implemented by public license practices.  Many people have made
++generous contributions to the wide range of software distributed
++through that system in reliance on consistent application of that
++system; it is up to the author/donor to decide if he or she is willing
++to distribute software through any other system and a licensee cannot
++impose that choice.
++
++This section is intended to make thoroughly clear what is believed to
++be a consequence of the rest of this License.
++
++  8. If the distribution and/or use of the Program is restricted in
++certain countries either by patents or by copyrighted interfaces, the
++original copyright holder who places the Program under this License
++may add an explicit geographical distribution limitation excluding
++those countries, so that distribution is permitted only in or among
++countries not thus excluded.  In such case, this License incorporates
++the limitation as if written in the body of this License.
++
++  9. The Free Software Foundation may publish revised and/or new versions
++of the General Public License from time to time.  Such new versions will
++be similar in spirit to the present version, but may differ in detail to
++address new problems or concerns.
++
++Each version is given a distinguishing version number.  If the Program
++specifies a version number of this License which applies to it and "any
++later version", you have the option of following the terms and conditions
++either of that version or of any later version published by the Free
++Software Foundation.  If the Program does not specify a version number of
++this License, you may choose any version ever published by the Free Software
++Foundation.
++
++  10. If you wish to incorporate parts of the Program into other free
++programs whose distribution conditions are different, write to the author
++to ask for permission.  For software which is copyrighted by the Free
++Software Foundation, write to the Free Software Foundation; we sometimes
++make exceptions for this.  Our decision will be guided by the two goals
++of preserving the free status of all derivatives of our free software and
++of promoting the sharing and reuse of software generally.
++
++                          NO WARRANTY
++
++  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
++REPAIR OR CORRECTION.
++
++  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
++POSSIBILITY OF SUCH DAMAGES.
++
++                   END OF TERMS AND CONDITIONS
+diff -r af23d23c278b util/alevt/ChangeLog
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ChangeLog     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,535 @@
++Thu Feb 11 22:05:00 MET 2010  (1.7.0)
++
++    - redesigned version:
++    - outfile, new starting methods, libzvbi implementation
++    - lots of bug fixes, all patches available in the Internet applied
++    - extensive code cleanup
++
++Mon Dec  3 03:11:07 MET 2007  (1.6.2)
++
++    - compilation fixes for newer gcc
++    - makefile tweaks (man vs share/man, /usr/X11R6 vs /usr, etc)
++    - default device changed to /dev/vbi0
++    - adapt to current v4l2 api
++    - some minor fixes collected during the past years
++
++    This is a build-time update to conform to newer compilers and
++    system environments.  If you have a running AleVT there's no
++    reason to update.  The only real fix is in the html-exporter
++    which was producing broken html (missing double-quotes).
++
++Thu Jan 23 01:53:10 MET 2003
++
++    - Fixed a bug in contrib/cap-all.c (fdset_init before vbi_open)
++    - Expaned cap-all.c to show how to save in two formats simultaneously.
++
++Tue Aug 20 05:22:16 MEST 2002 (1.6.1)
++
++    - Removed the bttv-warning from the help pages ;-)
++
++Mon Jul 23 18:34:32 MEST 2001
++
++    - Fixed bug in ui.c - found by <pawel@sakowski.eu.org>.
++    - When clicking on page numbers accept sub-page numbers too.
++
++Sat Dec 23 15:12:11 MET 2000
++
++    - Fixed 'double height last line' bug in export.c reported by
++      <Matthias.Kleinmann@urz.uni-heidelberg.de>
++
++Thu Oct 12 02:19:31 MEST 2000
++
++    - The &nbsp; fix was wrong.  Removed it.
++
++Wed Oct 11 19:41:38 MEST 2000 (1.6.0)
++
++    - Some documentation tweaks.
++    - Release.  Made it 1.6 because of V4l2 API.
++
++Thu Sep 21 21:07:12 MEST 2000
++
++    - Removed old bttv-only decoder.  Only the v4l2-based stays.
++      If the device does not support v4l2, default parameters
++      appropriate for the bttv-driver are taken.
++    - Subpage cycling (up/down and 2nd wheel) stays in the current
++      page.
++
++Sat Sep 16 23:52:12 MEST 2000
++
++    - Experimental v4l2 interface added.
++    - Finetune defaults to 1 now.  Works best for me.  Tell me
++      if you don't like it.
++    - Russian patch still not added :-/
++    - Fixed the bug in xio.c that Ben Smithurst
++      <ben@scientia.demon.co.uk> found.
++    - Added the dual-wheel-mouse patch from Holger Fitzner.
++
++Tue May 30 03:09:24 MEST 2000
++
++    - As Matto Fransen <matto@matto.nl> reported: the ; after &nbsp
++      in exp-html is missing.  fixed that.
++
++Tue May  9 20:21:52 MEST 2000
++
++    - Removed the -oldbttv/-newbttv options.  If your driver has
++      a buffer size different from that in the current bttv you
++      either have to support the VBISIZE ioctl or change the source.
++      (Tried to implement an autodetect by non-blocking reads but
++      that confuses the driver that much that it no longers gives
++      reasonable data.)
++    - Added a compression option to the png export filter and
++      changed the default compression level to the lib's default.
++      The prev default of 9 was way to slow.
++
++Wed May  3 19:18:55 MEST 2000
++
++    - Added a smaller font.  Made out of the neep9 font from
++      the really great jmk-fonts (http://www.pobox.com/~jmknoble).
++
++Sat Apr 29 02:36:41 MEST 2000
++
++    - Fixed SEGV in export.c:adjust.
++    - Fixed a possible buffer overrun in exp-txt.c
++
++Thu Nov  4 21:18:52 MET 1999  (1.5.1)
++
++    - Added os.h.  That way alevt compiles right out of the
++      box on all BSD systems (I hope *g*).
++    - Fixed the DST bug in alevt-date.
++    - Put vtwiz.pl in contrib, a perl/tk/set-tv script to
++      launch alevt written by Joern Borgert.
++
++Tue Oct 26 23:55:09 MEST 1999 (1.5.1-pre1)
++
++    - Added timeout option to alevt-cap.
++    - Use install instead of cp in the Makefile.
++    - Added -I/usr/local/include and -L/usr/local/lib
++      in the Makefile.
++    - Changed #ifdef FREEBSD to #ifdef BSD.
++    - exchanged contrib/paul-export.patch with
++      paul.fmt_page.c (a replacement for export.c:fmt_page())
++      and paul.fmt_page.patch (the same in form of a
++      patch file).
++    - Some doc corrections.
++
++Thu Oct 14 02:49:48 MEST 1999
++
++    - Added FREEBSD patches.
++
++Fri Oct  8 23:36:45 MEST 1999 (1.5.0)
++
++    - Updated the documentation.
++
++    So, what's new since 1.4.9 (nearly 4 months ago)?
++    Two major things: full latin-2 support and export
++    filters for alevt-cap and alevt itself.
++
++    For the latin-2 support page enhancement packets
++    have to be decoded and some latin-1 pages may
++    benefit from that, too.  Note: if you select
++    latin-2 everything is latin-2, even cut'n paste.
++    (new cmdline option -charset latin-1|2)
++
++    The export filters allow saving pages in different
++    formats.  At the moment there's ascii (with and with-
++    out color), html, png, and ppm.  The png filter
++    requires libpng.  If you don't have it (or don't want
++    png support) just remove the WITH_PNG from the
++    Makefile.  To save the currently displayed page just
++    press 's'.  See alevt-cap(1) for the format string.
++
++    Preview: 1.5.1 will have the FreeBSD patches and
++    any bug fixes.  (But not more *g*).
++
++Fri Oct  8 02:06:35 MEST 1999 (1.5.0-pre4)
++
++    Finally I could get away from my Playstation and
++    work a little bit on alevt *g*
++
++    - Tried to change alevt-date with freebsd patches from
++      Thomas Runge <runge@rostock.zgdv.de>.  They do not
++      have the timezone and daylight variables.  But I do
++      not have tm_gmtoff.  So it's commented out for the
++      moment.
++    - Made font.[ch] so that only one copy of the fonts is
++      in the executable when including export modules
++      (exp-gfx.c uses them).  Had to tweak the makefile.
++    - Added 's' for saving pages to files.  Prompts for
++      a format string and a filename and saves the
++      currently displayed page.
++      (Formerly, 's' and 'S' were aliases for '/' and '?'
++      (searching))
++    - Found a bug in export.c regarding double height lines.
++    - Added a patch to the contrib dir to pass the URL you
++      click on to netscape.
++
++    The documentation updates are still missing.  That's
++    the last thing to do for 1.5.0.  But that's so boring...
++
++Fri Aug 20 21:28:18 MEST 1999
++
++    Back from holidays and time for alevt...
++
++    - Added html, png, and ppm export modules from Paul.
++    - Fixed the return status for export_output.
++    - Tweaked the makefile for libpng support.
++    - Added the export howto to the contrib dir.
++    - Added Paul's fmt_page routine to contrib as a patch
++      to export.c
++    - Added "-format help" to list all output formats and
++      its options.
++
++    Still to do: update man page of alevt-cap, add export
++    to alevt, add erc to alevt-cap.
++
++    Oh, btw, alevt is running on FreeBSD with the bt848
++    driver from Roger Hardiman <roger@cs.strath.ac.uk> *g*.
++    I wonder if it's possible to port his driver to linux.
++    Maybe it runs better then bttv... (I still get reports
++    with stuck xawtvs ...)
++
++Mon Jul 19 01:15:50 MEST 1999 (1.5.0-pre3)
++
++    - Added export modules.  It's gotten much to complex.
++
++    A lot of things still to do:  add other formats [Paul?],
++    add documentation, add format-help, add export to alevt,
++    add erc to alevt-cap, ...
++
++Mon Jul 12 00:09:03 MEST 1999
++
++    - Added an incomplete 20x24 font to the contrib dir.
++
++Tue Jun 29 00:46:03 MEST 1999 (1.5.0-pre2)
++
++    - Added lanugage tables from Radoslaw.
++    - Added new latin-2 font from Radoslaw.
++    - Fixed a bug with hold graphics.  There's still one bug
++      on CNN's page 100 (has to do with set-after behaviour of
++      color select in hold graphics mode).  The last line of the
++      earth should be blue-blue-green not blue-green-green.
++      AleVT always uses set-at behaviour.  Afaik, this combination
++      (hold + set-after) is the only way to see the difference
++      between set-at and set-after.  Set-after will blow up the
++      code so I will leave it as it is.
++    - vbi now collects all pkt26 and enhances the page before
++      it is passed on.  Seem's to work.
++
++Tue Jun 22 22:13:45 MEST 1999 (1.5.0-pre1)
++
++    - Fixed hamm24.  And, it should be fast now *g*
++    - Moved the language conversion parts to lang.c
++    - Added additional lang_chars for use with the latin-2 charset.
++    - Added -charset latin-1/2 option.
++    - Added pkt x/26 decoding.  ... and noticed, that these packets
++      are sent between line 0 and 1.  FUCK.  Now I have to save
++      all x/26 until the page is complete.  But not today... :-(
++
++      Things are getting more and more uglier.  The right thing
++      to do would be to make a big font with all possible chars
++      (including cyrillic, arabic, smoothed graphics, ...).
++      That would mean to make each char in vtp->data 16 bit.  
++      And then add an attribute word for each char so that the
++      enhanced attributes work, too.  Searching and cut & paste
++      would be more complicated...  but the worst, the pages
++      will be much bigger (4 times larger).  Really bad for
++      the cache and god knows for what else...
++      Is it worth all the trouble???  I don't need that!
++
++Tue Jun 15 01:25:40 MEST 1999
++
++    - Changed .specs file again.  I previously changed alevt.spec
++      instead of alevt.spec.in :-(
++
++Mon Jun 14 23:45:48 MEST 1999 (1.4.9)
++
++    - Made a very simple capture program (alevt-cap).  Just collects
++      the given pages and writes them to disk in ASCII.
++      I will only accept bug reports/fixes, no enhancement requests 
++      at the moment *g*
++      (I can't believe it; I even wrote a man page...)
++    - Changed the subpage delimiter on the command line from '/' to '.'
++      The old one ('/') is still accepted.  (Reason: alevt-cap uses
++      the page number as part of the filename and a / is inconvenient.
++      And I already wanted to let you enter subpages with the keypad
++      and the '.' would be a nice key for that.)
++    - Tweaked the .specs file...  (Btw, alevt-date and alevt-cap should
++      not be installed in the X11 tree.)
++
++Thu Jun 10 22:13:40 MEST 1999
++
++    - moved the hamming decoding and associated table to hamm.c
++    - played with pkt26 to support polish stations.  not finished.
++
++Tue Jun  8 21:00:42 MEST 1999
++
++    - Added -[no]bell option.  And the 'b' key.
++    - Replaced all xio_bell calls with appropriate status messages.
++
++Sat Jun  5 00:42:19 MEST 1999 (1.4.8)
++
++    - Shit.  Just after the release I found a bug.  The header line
++      isn't updated as it should :-(  (Just affects parallel mode
++      transmission, so no new version, yet.)
++    - Created mailing list.  Either go to http://alevt.listbot.com/
++      or write mail to alevt-subscribe@listbot.com.
++    - Added bttv-patch to the contrib dir for those who don't want
++      to wait for bttv-0.6.5.
++
++Fri Jun  4 17:19:41 MEST 1999 (1.4.7)
++
++    - Added autodetection of VBIBUF_SIZE (only with newer bttv, 0.6.5).
++    - Forgot to close vbi_fd in vbi_close :-/
++    - Made ERC on by default.  If the page has no errors it
++      costs nothing and if it has you'll turn it on anyway.
++    - Changed parameters of EV_HEADER.
++    - Removed XAWTV_HACKS.
++    - Updated some docu.
++    - Modified the contrib samples to reflect previous API changes.
++
++Fri May 28 20:16:44 MEST 1999
++
++    - Added status messages.
++    - Added EV_TIMER event.
++    - Added channel change detection (only with newer bttv, 0.6.5).
++      Sends EV_RESET event.  The XAWTV_HACKS can be removed *phww*.
++      Now the cache is automatically cleared if you switch to a
++      new channel.  It even works with a SAT receiver connected to
++      Video-In.
++
++Thu May 27 23:54:32 MEST 1999 (1.4.6 unofficial)
++
++    - Cache reset didn't reset npages and hi_subno.
++    - Added XAWTV_HACKS, that is: alevt scans for a window with
++      the _XAWTV_STATION property and registers for property changes.
++      Result: when switching channels in xawtv, the cache is cleared.
++      (This is just an ugly hack.  Xawtv must already be running
++      when alevt is started.  If you quit and restart xawtv, it no
++      longer works.  There's no method to detect if the monitored
++      xawtv is really the one controlling our /dev/vbi, etc...)
++      Added on request of Paul Ortyl <ortylp@key.net.pl>.
++    - Added error reduction circuit.  It's part of the cache.
++      Errors in a new page are replaced by characters/lines from
++      an already cached (older) page.  May be toggled by pressing
++      'e' (editor is now on 'E').  It's not enabled by default
++      because it takes some CPU time.  Idea by Paul Ortyl.
++    - TODO: clean up.  document new features.  add status messages.
++
++Sun May 23 19:13:07 MEST 1999 (1.4.5)
++
++    - New spec file from Karsten Hopp <karsten.hopp@delix.de>
++    - Changed it even further *g*
++    - Fixed a bug with graphics selection of double height lines.
++    - Documented the -oldbttv option in the man page.  Now it's in
++      every page.  This should finally halve the mails I get.
++      (For the other halve I have to write alevt-capture *g*)
++
++Sat May  8 02:41:21 MEST 1999
++
++    - Ehhh, changed u32 typedef from unsigned long to unsigned int.
++      Same for s32.  The Alpha's longs are 64 bits.
++      Thanks to Sdruddin Rejeb <rejeb@dpmail.epfl.ch>.
++      (There's something strange with this in the X libs.  They are
++      sometimes very lazy about ints and longs.  Someone with an
++      Alpha should check the cut & paste, both, text and graphics
++      selections.)
++
++Thu Apr 29 22:38:37 MEST 1999
++
++    - Updated contrib/t1.c
++    - Added ':' as a subpage delimiter for clicking (2:7 is the same as 2/7)
++
++Mon Apr 19 19:40:09 MEST 1999
++
++    - Switched the scrolling direction of the wheel
++
++Mon Mar 29 01:23:06 MEST 1999 (1.4.4)
++
++    - fixed DST bug in alevt-date
++    - added crude latin-2 support.  'make FONT=latin-2' should be enough.
++      (found the stuff on the website http://www.penguin.cz/~marvin/ of
++      Daniel Smolik <smolikdan@email.cz>.  I don't know if he is the one
++      who made the font).
++
++Wed Mar 17 20:53:59 MET 1999
++
++    - added timeout to alevt-date
++
++Fri Feb 19 18:22:53 MET 1999  (1.4.3>
++
++    - Makefile changes.
++
++Fri Jan 29 18:01:27 MET 1999
++    
++    - fixed bug in dllist.h.  dl_insert_first(h, dl_remove(n)) was only
++      working due to gcc implementation details.
++
++Mon Jan 25 18:33:42 MET 1999  (1.4.2)
++
++    - fixed 'clear cache'.  no longer removes the help pages.
++    - made next/prev key/button to skip missing pages.
++    - added support for wheeled mice.  (I heard it's really cool *g*)
++    - problem with subpages > 0xff fixed.
++
++Thu Jan 21 17:31:46 MET 1999  (1.4.1)
++
++    - added man pages from Thomas Schoepf <schoepf@usa.net>.
++    - added rpm-spec file from Mario Mikocevic <mozgy@times.hr>.
++      (looks a little bit odd, but I don't know very much about rpms)
++    - minor option fix in alevt-date (people are really using it!?!)
++
++Tue Jan  5 03:50:08 MET 1999  (1.4.0)
++
++    - should be 1.3.10 but that gives problems with the help pages :-(
++    - fixed varargs for alpha
++    - default is now -newbttv (aka -fuckbttv).  use -oldbttv for v<0.5.20.
++
++Sat Jan  2 21:40:54 MET 1999
++
++    - small patches to alevt-date (-vbi options and tzset fix)
++    - played with pkt8/30.  what a mess.  MTV is 25:13 ahead *g*
++
++Wed Dec 30 19:30:14 MET 1998  (1.3.9)
++
++    - slightly modified the pll (may need further tuning)
++
++Wed Dec 30 05:27:26 MET 1998  (1.3.8)
++
++    - added pll (-finetune auto).  try -debug for status msgs.
++
++Tue Dec 29 05:15:53 MET 1998  (1.3.7)
++
++    - added finetune option (see README)
++    - you may now type -newbttv instead of -fuckbttv *g*
++
++Mon Dec 28 19:36:32 MET 1998  (1.3.6)
++
++    - Makefile: R5 -> R6  :-(
++    - vbi.c now works without cache.c
++    - added alevt-date (set system time from teletext)
++    - bug in option parsing (error reporting)
++
++Thu Dec 17 19:56:16 MET 1998  (1.3.5)
++
++    - added -L/usr/X11R6/lib in Makefile
++    - put some blurb (in german) in contrib.
++
++Thu Dec 17 05:01:34 MET 1998  (1.3.4)
++
++    - added class hints on (invisible) leader window to make docking
++      in wmaker easier.  instant name for leader is "VTLeader" and for
++      the viewing windows "VTPage"
++    - made the icon a little bit smaller
++
++Mon Dec 14 23:05:41 MET 1998  (1.3.3)
++
++    Release 1.3.3
++
++    - added spanish/portuguese charset decoding
++    - added similar looking glyphs for czech
++    - minor changes on the font
++    - middle click on current page number opens new parent window
++    - case dependant search if the pattern begins with a '!'
++    - line editing may be aborted with ^C
++
++Sun Dec 13 17:55:32 MET 1998  (1.3.2)
++
++    - when there were multiple windows of the same page, cycling through
++      the subpages changed all windows.  fixed.
++    - hilight the found text (make it the selection).
++    - slightly modified the hilight colors.
++    - default window size set to 41x25 (looks better).
++    - rewrote the editor.
++
++Sun Dec 13 07:03:10 MET 1998  (1.3.1)
++
++    - fixed one command line option
++    - corrected bug in searching
++
++Sat Dec 12 20:27:03 MET 1998  (1.3.0)
++
++    Release 1.3.0
++
++    - searching is now ready (still need a status line for error msgs).
++    - set SIGPIPE to SIG_DFL.  some shells (KDE) set it to SIG_IGN and then
++      the timer task won't be killed on exit.
++    - updated the help pages.
++    - I'm frustrated!  BTTV_VERSION doesn't work on /dev/vbi.  So no
++      autodetection of driver version.  Added -fuckbttv option instead.
++
++Fri Dec 11 19:36:03 MET 1998  (1.2.5)
++
++    - reworked national charset (lang) handling.  everthing now done in vbi.c.
++      the rest just deals with latin-1.
++    - first version of searching (functional, but dirty.  needs more work.)
++
++Thu Dec 10 20:06:27 MET 1998  (1.2.4)
++
++    - new file edline.c (line editor for the menu line. start for searching...)
++    - blinking cursor
++    - added an 48x48 icon from Ulf Rompe
++    - added pasting into the line editor (insert key).
++    - release ownership of XA_PRIMARY when deselecting selection.
++
++Tue Dec  8 21:26:26 MET 1998  (1.2.3)
++
++    - new file ui.c (most user interface stuff from main.c)
++    - rewrote option parsing
++    - allow specification of child windows on command line. now
++      it's possible to regenerate the complete window layout by
++      the commandline (may be of some use for session management).
++    - some spelling fixes in the help pages from Mark Bryars
++
++Mon Dec  7 16:59:28 MET 1998  (1.2.2)
++
++    - reworked hidden handling in xio.c
++
++Sun Dec  6 19:54:10 MET 1998  (1.2.1)
++
++    - class name changed!  from Alevt to AleVT.
++    - window/icon title shows current page number
++    - changed the icon to a 64 pixel width one.  not nice but ...
++    - added a small mini icon for the title bar. is there a property I can set?
++    - pressing on the CPN puts the page on hold
++    - pressing on the violet * reveals concealed text
++    - added simple menu if no FastText menu is present
++    - allow subpages to be specified on the command line (eg 100/4)
++
++Sat Dec  5 20:59:51 MET 1998  (1.2.0)
++
++    Release 1.2.0
++
++    - finished the help pages.
++    - added command line handling
++    - added user geometry handling in xio.c
++
++Sat Dec  5 02:28:16 MET 1998  (1.1.2)
++
++    - allow magazin 9 (help system)
++    - start box char after a pagenumber selects subpage 1 (hack)
++    - added a crude page editor (just to create the help pages.  not for users.)
++    - started with the online help system (sounds great, hehe)
++
++Tue Dec  1 20:19:53 MET 1998  (1.1.1)
++
++    - added concept of parent and child windows.  now, the middle mouse
++      button changes the contens of the child window.  if there isn't
++      one, it is created.
++    - Middle mouse button on x/y (subpage cycling) selects the previous
++      subpage.  (updating the child with subpages is hairy...)
++
++Sun Nov 29 23:34:18 MET 1998  (1.1.0)
++
++   Release 1.1.0
++
++   - removed most of the recovery for single bad lines (does too much harm)
++   - changed handling of parallel mode transmission (untested.  unused in .de)
++   - added selection (text & graphic!).  try pasting into xpaint :-)
++   - added cache-clear function ('c')
++   - click on x/y selects the next subpage
++   - some minor tweaks
++   - added an icon bitmap.
++
++Wed Nov 24 23:33:34 MET 1998  (1.0.0)
++
++    First Release 1.0.0
+diff -r af23d23c278b util/alevt/EXPORT.HOWTO
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/EXPORT.HOWTO  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,84 @@
++HOW TO IMPLEMENT A NEW EXPORT MODULE:
++
++As an example look at exp-txt.c (it implements two modules which
++are pretty similar).
++
++You have to create one exported structure (struct export_module).
++This structure holds the following data:
++
++1. The name of the format (example: "ascii").
++
++2. The default extension to use for building filenames ("txt").
++
++3. A list of module options. It's a 0 terminated array of char
++pointers, one for each option (similar to argv of main).
++If an option string contains a '=', it is an option that
++requires an argument.  The part after the '=' is ignored at
++the moment.  Later, I want to add help messages that show
++these options strings and then the part after the '=' becomes
++useful.
++If you do not have local options, set this field to 0.
++
++4. The number of bytes for local data in the export structure.
++There you may store data collected during option parsing or
++for whatever you want.
++Don't use global variables for storing this data!  With
++alevt-cap you may give:
++
++alevt-cap -format ascii,color 100  -format ascii 100
++
++to save the page in two different formats.  Using global
++vars would inhibit this.  The data area in struct export
++starts at the 'data' field.  You have to cast it to the
++appropriate type (see the D macro in exp-txt.c).
++If you do not need local data, set this field to 0.
++
++5. An open function (or call it constructor).  It is called
++when your module is needed and it is passed a struct export
++(the instance).  This function may be used to initialize
++the local data in the export struct.
++If all goes well return 0.  Else call export_error (see
++below) and return -1.
++If you do not need an open function, set this field to 0.
++
++6. A close function (or call it destructor).  It is called
++when your module is no longer needed.  If you allocated
++memory in the open func, this is the place to free it.
++If you do not need a close function, set it to 0.
++
++7. An option function.  It is called for each module option
++the user has given.  It is passed an option number (first
++option in the option-array gives 1, ...) and a char pointer
++to the argument for that option (0 if the option does not
++need an arg).  The argument pointer keeps valid until the
++close function is called.
++If all goes well, return 0.  Else call export_error and
++return -1.
++If you gave an option list at point 3 you have to specify
++this function.  Else set it to 0.
++
++8. An output function.  It is called to produce the output.
++It is given the file name to use and a fmt_page pointer.
++The fmt_page contains an interpreted image of the page.
++There are no control chars in it.  It uses the character
++set defined by the two fonts.
++These function may be called consecutive for multiple
++pages.  Don't expect one output for one open/close.
++Return codes as above... (0: ok,  -1: error).
++
++The export_error function:  If one of your functions wants to
++report an error, it has to use the export_error function.
++It's a printf like function to set error messages.  In alevt-cap
++these messages are printed to stderr, in alevt they will be
++shown in the status line (so don't make them too long).
++
++The last step is to add your export_module structure to the
++list of modules in export.c (at the top).
++Please, make sure that this structure is the only exported
++symbol.  All other things should be static.
++
++That's all.  A structure describing your module and 4 functions
++(open, close, option, output) to implement it.  Shouldn't be too
++complicated.
++
++Ciao, ET.
+diff -r af23d23c278b util/alevt/Makefile
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/Makefile      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,130 @@
++VER=1.7.0
++OPT=-O -g -w
++DEFS=-DWITH_PNG
++DEFS+=-DUSE_LIBZVBI
++FONT=vtxt
++MAN_DIR=man
++DESTDIR=
++PREFIX=/usr
++HOSTCC=$(CC)
++CFLAGS=$(OPT) -DVERSION=\"$(VER)\" $(DEFS) -I$(USR_X11R6)/include
++EXPOBJS=export.o exp-txt.o exp-html.o exp-gfx.o font.o
++OBJS=main.o ui.o xio.o fdset.o vbi.o cache.o help.o search.o misc.o hamm.o lang.o $(EXPOBJS)
++TOBJS=alevt-date.o vbi.o fdset.o misc.o hamm.o lang.o
++COBJS=alevt-cap.o vbi.o fdset.o misc.o hamm.o lang.o $(EXPOBJS)
++
++ifneq ($(findstring WITH_PNG,$(DEFS)),)
++EXPLIBS=-lpng -lz -lm
++endif
++
++ifneq ($(findstring USE_LIBZVBI,$(DEFS)),)
++ZVBILIB=-lzvbi -lpthread
++EXPLIBS+=$(ZVBILIB)
++endif
++
++all: alevt alevt-date alevt-cap alevt.1 alevt-date.1 alevt-cap.1
++
++alevt: $(OBJS)
++      $(CC) $(OPT) $(OBJS) -o alevt -L$(PREFIX)/lib -L$(PREFIX)/lib64 -lX11 $(EXPLIBS)
++
++alevt-date: $(TOBJS)
++      $(CC) $(OPT) $(TOBJS) -o alevt-date $(ZVBILIB)
++
++alevt-cap: $(COBJS)
++      $(CC) $(OPT) $(COBJS) -o alevt-cap $(EXPLIBS)
++
++font.o: font1.xbm font2.xbm font3.xbm font4.xbm
++fontsize.h: font1.xbm font2.xbm font3.xbm font4.xbm
++      fgrep -h "#define" font1.xbm font2.xbm font3.xbm font4.xbm >fontsize.h
++
++font1.xbm: bdf2xbm $(FONT)-latin-1.bdf
++      ./bdf2xbm font1 <$(FONT)-latin-1.bdf >font1.xbm
++
++font2.xbm: bdf2xbm $(FONT)-latin-2.bdf
++      ./bdf2xbm font2 <$(FONT)-latin-2.bdf >font2.xbm
++
++font3.xbm: bdf2xbm vtxt-koi8.bdf
++      ./bdf2xbm font3 <vtxt-koi8.bdf >font3.xbm
++
++font4.xbm: bdf2xbm vtxt-iso8859-7.bdf
++      ./bdf2xbm font4 <vtxt-iso8859-7.bdf >font4.xbm
++
++bdf2xbm: bdf2xbm.c
++      $(HOSTCC) bdf2xbm.c -o bdf2xbm
++
++clean:
++      rm -f *.o page*.txt a.out core bdf2xbm font?.xbm fontsize.h
++      rm -f alevt alevt-date alevt-cap
++
++rpm-install: all
++      install -m 0755 alevt        ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++      install -m 0755 alevt-date   ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++      install -m 0755 alevt-cap    ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++      install -m 0644 alevt.1      ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++      install -m 0644 alevt-date.1 ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++      install -m 0644 alevt-cap.1  ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++      install -d 0755 $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps
++      install -m 0644 alevt.png $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps
++
++install: all
++      install -m 0755 alevt           $(DESTDIR)$(PREFIX)/bin
++      install -m 0755 alevt-date      $(DESTDIR)$(PREFIX)/bin
++      install -m 0755 alevt-cap       $(DESTDIR)$(PREFIX)/bin
++      install -m 0644 alevt.1         $(DESTDIR)$(PREFIX)/share/man/man1
++      install -m 0644 alevt-date.1    $(DESTDIR)$(PREFIX)/share/man/man1
++      install -m 0644 alevt-cap.1     $(DESTDIR)$(PREFIX)/share/man/man1
++      install -m 0644 alevt.png $(DESTDIR)$(PREFIX)/share/pixmaps
++      install -m 0644 alevt.desktop $(DESTDIR)$(PREFIX)/share/applications
++
++uninstall: clean
++      rm -f /usr/bin/alevt /usr/bin/alevt-cap /usr/bin/alevt-date \
++      /usr/share/pixmaps/alevt.png /usr/share/applications/alevt.desktop \
++      /usr/share/man/man1/alevt.1 /usr/share/man/man1/alevt-cap.1 \
++      /usr/share/man/man1/alevt-date.1
++
++depend:
++      makedepend -Y -- $(CFLAGS_none) -- *.c 2>/dev/null
++
++tar-html: alevt.1 alevt-date.1 alevt-cap.1
++      for i in alevt.1 alevt-date.1 alevt-cap.1 ; do \
++          j=`basename $$i .1` ; \
++          j=`basename $$j .1x` ; \
++          nroff -man $$i | { \
++              echo "<HTML><HEAD><TITLE>AleVT</TITLE></HEAD><BODY>" ; \
++              man2html -bare -uelem U -nodepage ; \
++              echo "</B0DY></HTML>" ; \
++          } | sed -e "s,</B> <B>, ,g" -e "s,</U> <U>, ,g" >~/exit/alevt/$$j.html ;\
++      done
++
++tar: tar-html clean
++      sed s/VERSION/$(VER)/g <alevt.lsm.in >~/exit/alevt/alevt-$(VER).lsm
++      sed s/VERSION/$(VER)/g <alevt.spec.in >alevt.spec
++      cd .. ;\
++          ln -s alevt alevt-$(VER) ;\
++          tar vcfz ~/exit/alevt/alevt-$(VER).tar.gz alevt-$(VER)/* ;\
++          rm alevt-$(VER)
++      cat <CHANGELOG >~/exit/alevt/changes
++
++# DO NOT DELETE
++
++alevt-cap.o: vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h export.h
++alevt-date.o: os.h vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h
++cache.o: misc.h dllist.h cache.h vt.h help.h
++exp-gfx.o: lang.h misc.h vt.h export.h font.h fontsize.h
++exp-html.o: lang.h misc.h vt.h export.h
++exp-txt.o: os.h export.h vt.h misc.h
++export.o: vt.h misc.h export.h
++fdset.o: dllist.h misc.h fdset.h
++font.o: font1.xbm font2.xbm font3.xbm font4.xbm
++hamm.o: vt.h misc.h hamm.h
++help.o: vt.h misc.h vt900.out vt901.out vt902.out vt903.out vt904.out vt905.out
++help.o: vt906.out vt907.out vt908.out vt909.out vt910.out vt911.out vt912.out
++lang.o: misc.h vt.h lang.h
++main.o: vt.h misc.h fdset.h dllist.h xio.h vbi.h cache.h lang.h ui.h
++main.o: search.h
++misc.o: misc.h
++search.o: vt.h misc.h cache.h dllist.h search.h
++ui.o: vt.h misc.h xio.h dllist.h vbi.h cache.h lang.h fdset.h
++ui.o: search.h export.h ui.h
++vbi.o: os.h vt.h misc.h vbi.h dllist.h cache.h lang.h fdset.h hamm.h
++xio.o: vt.h misc.h dllist.h xio.h fdset.h lang.h icon.xbm font.h fontsize.h
+diff -r af23d23c278b util/alevt/README
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/README        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,72 @@
++Hi,
++
++this software is not just a program, it's moreover a legend.
++It is THE protagonist of all videotext applications under Linux.
++
++During the past 10 years the video standards, the APIs, the kernel
++have seen lots of changes.
++But unfortunately this program has NOT seen much maintenance.
++The results of that misfit appearance are:
++
++1. lots of forks flying around in the Internet
++2. lots of patches flying around, some good, some disgusting, some out of time
++3. lots of cruft which is completely outdated or obsolete for other reasons
++
++To handle all that in one big effort I decided to redesign the program
++completely, enlarging its capabilities for DVB-S at the same time.
++
++So here are the changes:
++
++1. Erasure of old help pages and rename / reorganize / update the rest
++-> redesign of the online help system / implying alevt-date and alevt-cap
++
++2. Erasure of old outdated integers, functions, parameters:
++
++- bell, big_buf, debug, display, editor, erc, fine_tune, newbttv,
++- oldbttv
++
++3. Coding style cleanups (no superfluous comments, not more than
++   80 characters per column, no uncommented code.
++
++4. No strange characters in the outfile, latin alphabet in purity instead.
++
++5. Alevt can be started in 4 modes now if you are running it in DVB mode:
++
++- by service id (sid)
++- by teletext pid (ttpid)
++- by channel name
++- without parameter
++
++6. Starting it in DVB mode on the command line it presents you
++a table with human readable values such as sid, teletext pid,
++PMT (Program Map Table), provider name, service name, language, service type.
++This makes it easier for you to start multiple teletext windows
++in multiple console sessions manually.
++
++If working with a script and the option -o (outfile) you can
++also start multiple teletext windows of all channels in a transponder.
++I develop a GUI using TCL / TK 8.5 and Iwidgets 4.01 to do that and other
++tasks graphically (i. e. by mouse click).
++
++7. If you install the program on the command line by typing "make &
++   make install" there is an uninstaller now to revert the installation:
++   "make uninstall".
++
++ENJOY IT!
++
++Uwe Bugla, February 11th, 2010.
++
++External dependencies
++
++AleVT needs some system libraries to be installed in your system.
++They are zlib, libX11, libpng and libzvbi.
++
++Credits go to:
++- Andreas Rottmann from debian.org for compiler fixes and
++  other kinds of investigation.
++- Francesco Lavra for supplying a kernel patch to avoid kernel demux
++  incompatibilities with kernels >= 2.6.32
++- Andy Walls for helpful investigation in kernelspace
++- Edgar Toernig for providing the source version 1.6.2 and doing all the
++  development for the basic versions
++- Tom Zoerner for the implementation of libzvbi
+diff -r af23d23c278b util/alevt/README.OLD
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/README.OLD    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,78 @@
++Hi,                                           Menden, 21 Sep 2000
++
++    This program decodes and displays Videotext/Teletext from a
++    /dev/vbi device.
++
++
++COMPILE & INSTALL:
++
++    There's nothing to configure.  A simple 'make' is all.
++    If you do not want png support remove the WITH_PNG in
++    the Makefile.  Additionally, if you want a smaller font
++    uncomment the "FONT=neep9" line.
++
++    It gives you 'alevt', 'alevt-date', and 'alevt-cap' and
++    their man pages 'alevt.1x', 'alevt-date.1', and 'alevt-cap.1'.
++
++    You can install them where ever you want (i.e. /usr/local/bin).
++    The programs are self-contained and require no other files.
++
++    NOTE: Be careful with 'make install'.  It's just for me :-)
++
++
++PROBLEMS:
++
++    If you have a lot of decoding errors (lot of these lightning symbols)
++    you may try pressing the 'f' and 'F' key.  This allows fine tuning of
++    the decoder circuit.  There's also a -finetune command line option.
++    This should only be necessary on really bad signals.
++
++    Maybe, I add autotuning later...
++
++    UPDATE: added autotuning.  It's the default.  If you add -debug the
++    the actions of the pll are printed to stdout.
++
++    To get the old (pre finetune) behaviour start it with -finetune 0.
++
++    UPDATE: disabled autotuning *g*  sometimes it's too jumpy...
++
++
++ALEVT-DATE:
++    I added a little tool to set the system time from the videotext
++    time.  The date is not interpreted (not even transmitted on some
++    channels).  So it allows only adjustment of +/-12 hours.
++    The default allowed adjustment is limited to +/-2 hours (use
++    -delta to change).  Without the -set option it just display
++    the date in the format of the date command.  Look at strftime(3)
++    for possible control sequences you may use in the -format option.
++
++
++HACKING:
++
++    If you want to play with the font size, you may resize it with
++    xv (xv font1.xbm).  Just make sure, that its width is a multiple of
++    32 and its height a multiple of 8.  A simple make will create
++    a version of AleTV with the new font.  Warning: a make clean
++    will erase font1.xbm.  The next make will recreate font.xbm from
++    vtxt.bdf.
++
++    AleVT has a built in page editor.  If you start it with -editor
++    you may press 'E' to invoke it.  For the usage you have to consult
++    the sources.  (It's very crude!)
++
++
++TODO: (no specific order)
++
++    - Error correction in alevt-cap
++    - Better language support.  Internal 16-bit charset.
++    - Separated graphics.
++    - Rewrite the whole stuff.  A networked teletext daemon and clients
++      that connect to it for display, capture, cgi, ...
++
++
++NEWER VERSIONS:
++
++    The primary site of AleVT is http://goron.de/~froese
++
++Have fun,
++Edgar Toernig (froese@gmx.de)
+diff -r af23d23c278b util/alevt/ReadmeGR
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ReadmeGR      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,28 @@
++29-9-2003
++
++ÅëëçíéêÜ ãéá ôï ALEVT 
++Ç ðñïóèÞêç Åëëçíéêþí Ýãéíå ôñïðïðïéþíôáò ôï patch alevt-1.6.3.rus.diff ðïõ âñßóêåôå óôï öÜêåëï
++contrib óôá sources  ôïõ alevt-1.6.3
++
++ÎåêéíÞóôå ôï ðñüãñáììá ìå ôçí ðáñÜìåôñï 
++
++alevt -charset iso8859-7 
++
++ç 
++
++alevt -charset el
++
++ÄïõëåéÝò ðïõ Ý÷ïõí íá ãßíïõí:
++Êáëýôåñïò ó÷åäéáóìüò ôïõ font file vtxt-iso8859-7.bdf 
++ïé Áããëéêïß ÷áñáêôÞñåò ìïéÜæïõí óáí bold óå ó÷Ýóç ìå ôïõò Åëëçíéêïýò êáé õðÜñ÷ïõí 
++êÜðïéá ìéêñÜ ðñïâëçìáôÜêéá ìå ôïõò graphics  (0x01 -0x1f)
++
++¸ëåã÷ïò ãéá ôï áí áðåéêïíßæïíôáé óùóôÜ üëïé ïé ÷áñáêôÞñåò
++
++¼ðïéïò èÝëåé íá âïçèÞóåé ðáñáêáëþ íá ìïõ óôåßëåé ôçò áëëáãÝò ôïõ óôï sl45sms@yahoo.gr
++Áí êÜðïéïò êÜíåé åêôåôáìÝíåò áëëáãÝò ðïõ äåí áöïñïýí ôá ÅëëçíéêÜ èá ðñÝðåé íá ôéò óôåßëåé êáé
++óôïí óõããñáöÝá ôïõ ðñïãñÜììáôïò
++
++ÍåüôåñÜ áñ÷åßá ôïõ ðáñüíôïò èá ìðïñåßôå íá âñßóêåôå óôï  http://go.to/sl45sms/alevt/index.html
++
++ÓêáñâÝëçò Ðáíáãéþôçò
+diff -r af23d23c278b util/alevt/TODO
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/TODO  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++Hi, these are issues that I unfortunately cannot resolve myself:
++
++1. graphical menu written in GKT2, to be used in general connection with
++    the outfile (-o) option.
++
++2. for usage without script and outfile option:
++    DVB monitoring demon helping the program to rewrite the PAT when the
++    external player software has chosen a channel which is part of a
++    new transponder.
++    At the moment alevt hangs when the transponder is changed.
++
++Uwe Bugla, February 11th, 2010.
+diff -r af23d23c278b util/alevt/alevt-cap.1
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-cap.1   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,53 @@
++.TH alevt-cap 1 "February 07, 2010"
++.SH NAME
++alevt-cap \- capture teletext windows.
++.SH SYNOPSIS
++.B alevt-cap
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt-cap
++commands.
++.PP
++\fBalevt-cap\fP is a program to capture teletext pages.
++.SH OPTIONS
++.TP
++.B \-cs -charset <latin-1/2/koi8-r/iso-8859-7>
++character set
++.TP
++.B \-f -format <fmt[,options]>
++format to save
++.TP
++.B \-f help -format help
++lists available storage formats
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-n -name <filename>
++page name to save
++.B \-t -timeout <secs>
++timeout
++.TP
++.B \-s -sid <sid>
++service pid
++.TP
++.B \-t -ttpid <ttpid>
++teletext pid
++.TP
++.B \-v -vbi <vbidev>
++vbi device
++.TP
++Sequence: /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++ppp.ss stands for a page number and an optional
++subpage number (example: 123.4).
++.TP
++.SH SEE ALSO
++.BR alevt-date (1) , alevt (1).
++.br
++.SH AUTHOR
++alevt-cap was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt-cap.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-cap.c   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,280 @@
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <locale.h>
++#include <signal.h>
++#include <unistd.h>
++#include "vt.h"
++#include "misc.h"
++#include "fdset.h"
++#include "vbi.h"
++#include "lang.h"
++#include "dllist.h"
++#include "export.h"
++
++static volatile int timed_out = 0;
++static char *channel;
++char *outfile = "";
++u_int16_t sid;
++
++
++struct req
++{
++    struct dl_node node[1];
++    char *name; // file name
++    char *pgno_str; // the pgno as given on the cmdline
++    int pgno, subno; // decoded pgno
++    struct export *export; // export data
++    struct vt_page vtp[1]; // the capture page data
++};
++
++
++static void usage(FILE *fp, int exitval)
++{
++    fprintf(fp, "\nUsage: %s [options] ppp.ss...\n", prgname);
++    fprintf(fp,
++          "\n"
++          "  Valid options:\t\tDefault:\n"
++          "    -cs -charset\t\tlatin-1\n"
++          "    <latin-1/2/koi8-r/iso8859-7>\n"
++          "    -f -format <fmt,options>\tascii\n"
++          "    -f help -format help\n"
++          "    -h -help\n"
++          "    -n -name <filename>\t\tttext-%%s.%%e\n"
++          "    -s -sid <sid>\t\t(none;dvb only)\n"
++          "    -to -timeout <secs>\t\t(none)\n"
++          "    -t -ttpid <ttpid>\t\t(none;dvb only)\n"
++          "    -v -vbi <vbidev>\t\t/dev/vbi\n"
++              "                 \t\t/dev/vbi0\n"
++              "                 \t\t/dev/video0\n"
++              "                 \t\t/dev/dvb/adapter0/demux0\n"
++          "\n"
++          "  ppp.ss stands for a page number and an\n"
++          "  optional subpage number (ie 123.4).\n"
++      );
++    exit(exitval);
++}
++
++
++static void exp_help(FILE *fp)
++{
++    struct export_module **ep;
++    char **cp, c;
++
++    fprintf(fp,
++          "\nSyntax: -format Name[,Options]\n"
++          "\n"
++          "    Name\tExt.\tOptions\n"
++          "    --------------------------------\n"
++      );
++    for (ep = modules; *ep; ep++)
++    {
++      fprintf(fp, "    %-7s\t.%-4s", (*ep)->fmt_name, (*ep)->extension);
++      for (c = '\t', cp = (*ep)->options; cp && *cp; cp++, c = ',')
++          fprintf(fp, "%c%s", c, *cp);
++      fprintf(fp, "\n");
++    }
++    fprintf(fp,
++          "\n"
++          "Common options: reveal,hide\n"
++          "Example: -format ansi,reveal,bg=none\n"
++          "\n"
++      );
++    exit(0);
++}
++
++
++static int arg_pgno(char *p, int *subno)
++{
++    char *end;
++    int pgno;
++
++    *subno = ANY_SUB;
++    if (*p)
++    {
++      pgno = strtol(p, &end, 16);
++      if ((*end == ':' || *end == '/' || *end == '.') && end[1])
++          *subno = strtol(end + 1, &end, 16);
++      if (*end == 0)
++          if (pgno >= 0x100 && pgno <= 0x899)
++              if (*subno == ANY_SUB || (*subno >= 0x00 && *subno <= 0x3f7f))
++                  return pgno;
++    }
++    fatal("%s: invalid page number", p);
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++    static struct { char *nam, *altnam; int arg; } opts[] = {
++      { "-charset", "-cs", 1 },
++      { "-format", "-f", 1 },
++      { "-help", "-h", 0 },
++      { "-name", "-n", 1 },
++      { "-sid", "-s", 1 },
++      { "-timeout", "-to", 1 },
++      { "-ttpid", "-t", 1 },
++      { "-vbi", "-v", 1 },
++    };
++    int i;
++
++    if (*ind >= argc)
++      return 0;
++
++    *arg = argv[(*ind)++];
++    for (i = 0; i < NELEM(opts); ++i)
++      if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++      {
++          if (opts[i].arg)
++              if (*ind < argc)
++                  *arg = argv[(*ind)++];
++              else
++                  fatal("option %s requires an argument", *arg);
++          return i+1;
++      }
++
++    if (**arg == '-')
++    {
++      fatal("%s: invalid option", *arg);
++      usage(stderr, 2);
++    }
++
++    return -1;
++}
++
++
++static void event(struct dl_head *reqs, struct vt_event *ev)
++{
++    struct req *req, *nxt;
++
++    switch (ev->type)
++    {
++      case EV_PAGE: // new page
++      {
++          struct vt_page *vtp = ev->p1;
++
++          for (req = PTR reqs->first; nxt = PTR req->node->next; req = nxt)
++              if (req->pgno == vtp->pgno)
++                  if (req->subno == ANY_SUB || req->subno == vtp->subno)
++                  {
++                      *req->vtp = *vtp;
++                      dl_insert_last(reqs + 1, dl_remove(req->node));
++          }
++      }
++    }
++}
++
++
++int main(int argc, char **argv)
++{
++    char *vbi_name = NULL;
++    int timeout = 0;
++    char *fname = "ttext-%s.%e";
++    char *out_fmt = "ascii";
++    struct export *fmt = 0;
++    int opt, ind;
++    char *arg;
++    struct vbi *vbi;
++    struct req *req;
++    struct dl_head reqs[2]; // simple linear lists of requests & captures
++    int ttpid = -1;
++
++    setlocale (LC_CTYPE, "");
++    setprgname(argv[0]);
++
++    fdset_init(fds);
++    dl_init(reqs); // the requests
++    dl_init(reqs+1); // the captured pages
++
++    ind = 1;
++    while (opt = option(argc, argv, &ind, &arg))
++      switch (opt)
++      {
++            case 1: // charset
++              if (streq(arg, "latin-1") || streq(arg, "1"))
++                  latin1 = 1;
++              else if (streq(arg, "latin-2") || streq(arg, "2"))
++                  latin1 = 0;
++              else if (streq(arg, "koi8-r") || streq(arg, "koi"))
++                  latin1 = KOI8;
++              else if (streq(arg, "iso8859-7") || streq(arg, "el"))
++                  latin1 = GREEK;
++              else
++                  fatal("bad charset (not latin-1/2/koi8-r/iso8859-7)");
++              break;
++          case 2: // format
++              if (streq(arg, "help") || streq(arg, "?") || streq(arg, "list"))
++                  exp_help(stdout);
++              out_fmt = arg;
++              fmt = 0;
++              break;
++          case 3: // help
++              usage(stdout, 0);
++              break;
++          case 4: // name
++              fname = arg;
++              break;
++          case 5: // timeout
++              timeout = strtol(arg, 0, 10);
++              if (timeout < 1 || timeout > 999999)
++              fatal("bad timeout value", timeout);
++              break;
++          case 6: // service id
++              sid = strtoul(arg, NULL, 0);
++              break;
++          case 7: // teletext pid
++              ttpid = strtoul(arg, NULL, 0);
++              break;
++          case 8: // vbi
++              vbi_name = arg;
++              break;
++          case -1: // non-option arg
++              if (not fmt)
++              fmt = export_open(out_fmt);
++              if (not fmt)
++              fatal("%s", export_errstr());
++              if (not(req = malloc(sizeof(*req))))
++              out_of_mem(sizeof(*req));
++              req->name = fname;
++              req->pgno_str = arg;
++              req->pgno = arg_pgno(arg, &req->subno);
++              req->export = fmt;
++              dl_insert_last(reqs, req->node);
++              break;
++      }
++
++    if (dl_empty(reqs))
++      fatal("no pages requested");
++
++    // setup device
++    if (not(vbi = vbi_open(vbi_name, 0, channel, outfile, sid, ttpid)))
++      fatal("cannot open %s", vbi_name);
++    vbi_add_handler(vbi, event, reqs); // register event handler
++
++    if (timeout)
++      alarm(timeout);
++
++    // capture pages (moves requests from reqs[0] to reqs[1])
++    while (not dl_empty(reqs) && not timed_out)
++      if (fdset_select(fds, 30000) == 0) // 30sec select time out
++      {
++          error("no signal.");
++          break;
++      }
++
++    alarm(0);
++    vbi_del_handler(vbi, event, reqs);
++    vbi_close(vbi);
++    if (not dl_empty(reqs))
++      error("capture aborted. Some pages are missing.");
++
++    for (req = PTR reqs[1].first; req->node->next; req = PTR req->node->next)
++    {
++      fname = export_mkname(req->export, req->name, req->vtp, req->pgno_str);
++      if (not fname || export(req->export, req->vtp, fname))
++          error("error saving page %s: %s", req->pgno_str, export_errstr());
++      if (fname)
++          free(fname);
++    }
++    exit(dl_empty(reqs) ? 0 : 1);
++}
+diff -r af23d23c278b util/alevt/alevt-date.1
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-date.1  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++.TH alevt-date 1 "February 07, 2010"
++.SH NAME
++alevt-date \- print out UTC date.
++.SH SYNOPSIS
++.B alevt-date
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt-date
++commands.
++.PP
++\fBalevt-date\fP is a program to print the UTC date.
++.SH OPTIONS
++.TP
++.B \-d -delta <max_secs>
++maximum delta
++.TP
++.B \-f -format <fmtstr>
++time format
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-s -set
++set the system clock
++.TP
++.B \-t -timeout <seconds>
++timeout
++.TP
++.B \-v -vbi <vbidev>
++vbi device /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++.br
++.SH SEE ALSO
++.BR alevt-cap (1) , alevt (1).
++.br
++.SH AUTHOR
++alevt-date was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt-date.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-date.c  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,225 @@
++#include <stdio.h>
++#include <string.h>
++#include <sys/time.h>
++#include <time.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <signal.h>
++#include "os.h"
++#include "vt.h"
++#include "fdset.h"
++#include "vbi.h"
++#include "lang.h"
++#include "misc.h"
++
++char *fmt = "%a %b %d %H:%M:%S %Z %Y";
++int max_diff = 2*60*60; // default: 2 hours
++int set_time = 0;
++char *outfile = "";
++static char *channel;
++u_int16_t sid;
++
++
++static void chk_time(int t)
++{
++    struct tm *tm;
++    time_t sys_t;
++    int dt;
++    char buf[256];
++
++    if (t < 0 || t > 235959 || t%100 > 59 || t/100%100 > 59)
++    return;
++
++    sys_t = time(0);
++    tm = localtime(&sys_t);
++
++    // Now convert to UTC seconds
++    t = t/100/100 * 60*60 + t/100%100 * 60 + t%100;
++#ifdef BSD
++    t -= tm->tm_gmtoff; // dst already included...
++#else
++    t += timezone;
++    if (tm->tm_isdst)
++      t -= 60*60;
++#endif
++
++    dt = t - sys_t % (24*60*60);
++    if (dt <= -12*60*60)
++      dt += 24*60*60;
++
++    if (dt <= -max_diff || dt >= max_diff)
++      fatal("time diff too big (%2d:%02d:%02d)", dt/60/60, abs(dt)/60%60, abs(dt)%60);
++
++    sys_t += dt;
++
++    if (set_time)
++    {
++      struct timeval tv[1];
++
++      tv->tv_sec = sys_t;
++      tv->tv_usec = 500000;
++      if (settimeofday(tv, 0) == -1)
++          ioerror("settimeofday");
++    }
++    if (*fmt)
++    {
++      tm = localtime(&sys_t);
++      if (strftime(buf, sizeof(buf), fmt, tm))
++          puts(buf);
++    }
++    exit(0);
++}
++
++
++static void event(void *_, struct vt_event *ev)
++{
++    switch (ev->type)
++    {
++      /* vbi may generate EV_PAGE, EV_HEADER, EV_XPACKET */
++      /* for event arguments see vt.h */
++
++      case EV_HEADER: // a new title line (for running headers)
++      {
++          static int last_t = -1;
++          u8 *s = ev->p1;
++          int i, t = 1;
++
++          if (ev->i2 & PG_OUTOFSEQ)
++              break;
++
++          for (i = 32; i < 40; ++i)
++              if (s[i] >= '0' && s[i] <= '9')
++                  t = t * 10+ s[i] - '0';
++          if (t >= 1000000 && t <= 1235959)
++              if (t == last_t || t - last_t == 1)
++                  chk_time(t - 1000000);
++          last_t = t;
++          break;
++      }
++    }
++}
++
++
++static void usage(FILE *fp, int exit_val)
++{
++    fprintf(fp, "usage: %s [options]\n", prgname);
++    fprintf(fp,
++          "\n"
++          "  Valid options:\t\tDefault:\n"
++          "    -d -delta <max_secs>\t7200 (2 hours)\n"
++          "    -f -format <fmtstr>\t\t%%c\n"
++          "    -h -help\n"
++          "    -s -set\t\t\toff\n"
++          "    -to -timeout <seconds>\t(none)\n"
++          "    -v -vbi <vbidev>\t\t/dev/vbi\n"
++              "                 \t\t/dev/vbi0\n"
++              "                 \t\t/dev/video0\n"
++              "                 \t\t/dev/dvb/adapter0/demux0\n"
++          );
++    exit(exit_val);
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++    static struct { char *nam, *altnam; int arg; } opts[] = {
++      { "-delta", "-d", 1 },
++      { "-format", "-f", 1 },
++      { "-help", "-h", 0 },
++      { "-set", "-s", 0 },
++      { "-timeout", "-to", 1 },
++      { "-vbi", "-v", 1 },
++    };
++    int i;
++
++    if (*ind >= argc)
++      return 0;
++
++    *arg = argv[(*ind)++];
++    for (i = 0; i < NELEM(opts); ++i)
++      if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++      {
++          if (opts[i].arg)
++              if (*ind < argc)
++                  *arg = argv[(*ind)++];
++              else
++                  fatal("option %s requires an argument", *arg);
++          return i+1;
++      }
++
++    if (**arg == '-')
++    {
++      fatal("%s: invalid option", *arg);
++      usage(stderr, 1);
++    }
++
++    return -1;
++}
++
++
++int main(int argc, char **argv)
++{
++    char *vbi_name = NULL;
++    int timeout = 0;
++    struct vbi *vbi;
++    int opt, ind;
++    char *arg;
++    int ttpid = -1;
++
++    setprgname(argv[0]);
++    ind = 1;
++    while (opt = option(argc, argv, &ind, &arg))
++      switch (opt)
++      {
++          case 1: // -delta
++              max_diff = atoi(arg);
++              if (max_diff < 1)
++                  fatal("-delta: illegal value '%s'", arg);
++              if (max_diff > 12*60*60)
++              {
++                  max_diff = 12*60*60;
++                  error("-delta: %d too big. Assuming %d", arg, max_diff);
++              }
++              break;
++          case 2: // -format
++              fmt = arg;
++              break;
++          case 3: // help
++              usage(stdout, 0);
++              break;
++          case 4: // -set
++              set_time = 1;
++              break;
++          case 5: // -timeout
++              timeout = atoi(arg);
++              if (timeout < 1 || timeout > 60*60)
++                  fatal("-timeout: illegal value '%s'", arg);
++              break;
++          case 6: // -vbi
++              vbi_name = arg;
++              break;
++          case -1:
++              usage(stderr, 1);
++              break;
++      }
++
++    fdset_init(fds);
++
++    if (timeout)
++    {
++      signal(SIGALRM, SIG_DFL); // kill me
++      alarm(timeout);
++    }
++    vbi = vbi_open(vbi_name, 0, channel, outfile, sid, ttpid); // open device
++    if (not vbi)
++      fatal_ioerror(vbi_name);
++    vbi_add_handler(vbi, event, 0); // register event handler
++
++    for (;;)
++      fdset_select(fds, -1); // call scheduler
++
++    /* never reached */
++    vbi_del_handler(vbi, event, 0);
++    vbi_close(vbi);
++    exit(0);
++}
+diff -r af23d23c278b util/alevt/alevt.1
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt.1       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,60 @@
++.TH alevt 1 "February 07, 2010"
++.SH NAME
++alevt \- a teletext browser for analogue and DVB channels.
++.SH SYNOPSIS
++.B alevt
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt
++commands.
++.PP
++\fBalevt\fP is a program to read teletext from analogue or DVB channels.
++.SH OPTIONS
++.TP
++.B \-c <channel>
++channel name (dvb only)
++.TP
++.B \-ch -child <ppp.ss>
++child window
++.TP
++.B \-cs -charset <latin-1/2/koi8-r/iso8859-7>
++character set
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-o <outfile>
++path + file for all services (dvb only)
++.TP
++.B \-p -parent <ppp.ss>
++parent window
++.TP
++.B \-s -sid <sid>
++service id (dvb only)
++.TP
++.B \-t -ttpid <ttpid>
++teletext pid (dvb only)
++.TP
++.B \-v -vbi <vbidev>
++vbi device
++.TP
++Sequence: /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++Order is important! Each page number opens a new window
++with the previously given geometry, device, and display.
++.TP
++ppp.ss stands for a page number and an optional
++subpage number (example: 123.4).
++.TP
++The -child option requires a parent window. So it must
++be preceded by a parent or another child window.
++.TP
++.SH SEE ALSO
++.BR alevt-cap (1), alevt-date (1).
++.br
++.SH AUTHOR
++alevt was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt.desktop
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt.desktop Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,9 @@
++[Desktop Entry]
++Encoding=UTF-8
++Name=alevt
++Comment=Teletext Browser
++Exec=alevt
++Icon=alevt
++Terminal=false
++Type=Application
++Categories=GNOME;GTK;AudioVideo;Video;
+diff -r af23d23c278b util/alevt/bdf2xbm.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/bdf2xbm.c     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,212 @@
++/*
++    Simple program to convert a bdf-font to a bitmap.
++    The characters are arranged in a 32x8 matrix.
++    usage: bdf2xbm [identifier] <bdf >xbm
++    Copyright 1998,1999 by E. Toernig (froese@gmx.de)
++*/
++
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include <ctype.h>
++#include <stdarg.h>
++
++#define not !
++#define streq(a,b) (strcmp((a),(b)) == 0)
++
++int lineno;
++char *word[64];
++int nword;
++
++char *font = "font%dx%d";
++int w, h, bpl;
++unsigned char *bmap;
++
++
++static void error(char *fmt, ...)
++{
++    va_list args;
++
++    va_start(args, fmt);
++    fprintf(stderr, "bdf2xbm");
++    if (lineno)
++      fprintf(stderr, ":%d", lineno);
++    fprintf(stderr, ": ");
++    vfprintf(stderr, fmt, args);
++    fputc('\n', stderr);
++    exit(1);
++}
++
++
++static int nextline()
++{
++    static char buf[256];
++    char *p;
++    int i;
++
++    do
++    {
++      nword = 0;
++      if (fgets(buf, sizeof(buf), stdin) == 0)
++          return nword;
++      lineno++;
++      
++      p = buf;
++      for (;;)
++      {
++          while (isspace(*p))
++              p++;
++          if (*p == 0)
++              break;
++          word[nword++] = p;
++          while (*p && not isspace(*p))
++              *p = toupper(*p), p++;
++          if (*p == 0)
++              break;
++          *p++ = 0;
++      }
++    } while (nword == 0);
++
++    for (i = nword; i < 64; ++i)
++      word[i] = "";
++    return nword;
++}
++
++
++static inline void setbit(int ch, int x, int y)
++{
++
++    int yo = ch / 32 * h + y;
++    int xo = ch % 32 * w + x;
++
++    bmap[yo * bpl + xo / 8] |= 1 << (xo % 8);
++}
++
++
++static void dobitmap(int ch, int x, int y)
++{
++    int i, j;
++
++    for (i = 0; i < y; ++i)
++    {
++      nextline();
++      if (nword > 1 || strlen(word[0]) != (x + 7) / 8 * 2)
++          error("bad BITMAP");
++      for (j = 0; j < x; ++j)
++      {
++          int c = word[0][j / 4];
++          if (c >= '0' && c <= '9')
++              c -= '0';
++          else if (c >= 'A' && c <= 'F')
++              c -= 'A' - 10;
++          else
++              error("bad hexchar in BITMAP");
++          if (c & (8 >> (j % 4)))
++              setbit(ch, j, i);
++      }
++    }
++}
++
++
++static void dochar()
++{
++    int ch = -1, x = -1,  y = -1;
++
++    while (nextline())
++    {
++      if (streq(word[0], "ENDCHAR"))
++          return;
++      else if (streq(word[0], "ENCODING") && nword == 2)
++      {
++          ch = atoi(word[1]);
++          if (ch < 0 || ch > 255)
++              error("bad character code %d", ch);
++      }
++      else if (streq(word[0], "BBX") && nword == 5)
++      {
++          x = atoi(word[1]), y = atoi(word[2]);
++          if (x < 1 || x > 64 || y < 1 || y > 64)
++              error("bad BBX (%dx%d)", x, y);
++      }
++      else if (streq(word[0], "BITMAP"))
++      {
++          if (x < 0)
++              error("missing BBX");
++          if (ch < 0)
++              error("missing ENDCODING");
++          dobitmap(ch, x, y);
++      }
++    }
++    error("unexpected EOF (missing ENDCHAR)");
++}
++
++
++static void dofile()
++{
++    lineno = 0;
++    w = h = 0;
++    bmap = 0;
++
++    nextline();
++    if (nword != 2 || not streq(word[0], "STARTFONT"))
++      error("not a bdf-file");
++
++    while (nextline())
++    {
++      if (streq(word[0], "ENDFONT"))
++          return;
++      else if (streq(word[0], "FONTBOUNDINGBOX") && nword == 5)
++      {
++          if (bmap)
++              error("multiple FONTBOUNDINGBOXes!?!");
++          w = atoi(word[1]), h = atoi(word[2]);
++          if (w < 1 || w > 64 || h < 1 || h > 64)
++              error("bad bounding box %dx%d\n", w, h);
++          bpl = (w*32+7)/8; // rounding is unnecessary
++          bmap = calloc(1, bpl * h*8);
++          if (bmap == 0)
++              error("out of memory");
++      }
++      else if (streq(word[0], "STARTCHAR"))
++      {
++          if (not bmap)
++              error("no FONTBOUNDINGBOX");
++          dochar();
++      }
++    }
++    error("unexpected EOF (missing ENDFONT)");
++}
++
++
++static void writexbm()
++{
++    char buf[256];
++    int i, j;
++    unsigned char *p = bmap;
++
++    if (not bmap)
++      return;
++
++    sprintf(buf, font, w, h);
++
++    printf("#define %s_width %d\n", buf, 32 * w);
++    printf("#define %s_height %d\n", buf, 8 * h);
++    printf("static unsigned char %s_bits[] = {\n", buf);
++    for (i = 0; i < 16 * h * w / 8; ++i)
++    {
++      for (j = 0; j < 16; ++j)
++          printf("0x%02x,", *p++);
++      printf("\n");
++    }
++    printf("};\n");
++}
++
++
++int main(int argc, char **argv)
++{
++    if (argc > 1)
++      font = argv[1];
++    dofile();
++    writexbm();
++    exit(0);
++}
+diff -r af23d23c278b util/alevt/cache.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/cache.c       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,229 @@
++#include <stdlib.h>
++#include <string.h>
++#include "misc.h"
++#include "dllist.h"
++#include "cache.h"
++#include "help.h"
++
++
++static inline int hash(int pgno)
++{
++    // very simple...
++    return pgno % HASH_SIZE;
++}
++
++
++static void do_erc(struct vt_page *ovtp, struct vt_page *nvtp)
++{
++    int l, c;
++
++    if (nvtp->errors == 0 && ovtp->lines == nvtp->lines)
++      return;
++
++    for (l = 0; l < H; ++l)
++    {
++      if (~nvtp->lines & (1 << l))
++          memcpy(nvtp->data[l], ovtp->data[l], W);
++      else if (ovtp->lines & (1 << l))
++          for (c = 0; c < W; ++c)
++              if (nvtp->data[l][c] == BAD_CHAR)
++                  nvtp->data[l][c] = ovtp->data[l][c];
++    }
++    nvtp->lines |= ovtp->lines;
++}
++
++
++static void cache_close(struct cache *ca)
++{
++    struct cache_page *cp;
++    int i;
++
++    for (i = 0; i < HASH_SIZE; ++i)
++      while (not dl_empty(ca->hash + i))
++      {
++          cp = PTR ca->hash[i].first;
++          dl_remove(cp->node);
++          free(cp);
++      }
++    free(ca);
++}
++
++
++static void cache_reset(struct cache *ca)
++{
++    struct cache_page *cp, *cpn;
++    int i;
++
++    for (i = 0; i < HASH_SIZE; ++i)
++      for (cp = PTR ca->hash[i].first; cpn = PTR cp->node->next; cp = cpn)
++          if (cp->page->pgno / 256 != 9) // don't remove help pages
++          {
++              dl_remove(cp->node);
++              free(cp);
++              ca->npages--;
++          }
++    memset(ca->hi_subno, 0, sizeof(ca->hi_subno[0]) * 0x900);
++}
++
++/*  Get a page from the cache.
++    If subno is SUB_ANY, the newest subpage of that page is returned */
++
++
++static struct vt_page * cache_get(struct cache *ca, int pgno, int subno)
++{
++    struct cache_page *cp;
++    int h = hash(pgno);
++
++    for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++      if (cp->page->pgno == pgno)
++          if (subno == ANY_SUB || cp->page->subno == subno)
++          {
++              // found, move to front (make it 'new')
++              dl_insert_first(ca->hash + h, dl_remove(cp->node));
++              return cp->page;
++          }
++    return 0;
++}
++
++/*  Put a page in the cache.
++    If it's already there, it is updated. */
++
++
++static struct vt_page * cache_put(struct cache *ca, struct vt_page *vtp)
++{
++    struct cache_page *cp;
++    int h = hash(vtp->pgno);
++    
++    for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++      if (cp->page->pgno == vtp->pgno && cp->page->subno == vtp->subno)
++          break;
++
++    if (cp->node->next)
++    {
++      // move to front.
++      dl_insert_first(ca->hash + h, dl_remove(cp->node));
++      if (ca->erc)
++          do_erc(cp->page, vtp);
++    }
++    else
++    {
++      cp = malloc(sizeof(*cp));
++      if (cp == 0)
++          return 0;
++      if (vtp->subno >= ca->hi_subno[vtp->pgno])
++          ca->hi_subno[vtp->pgno] = vtp->subno + 1;
++      ca->npages++;
++      dl_insert_first(ca->hash + h, cp->node);
++    }
++
++    *cp->page = *vtp;
++    return cp->page;
++}
++
++/* Same as cache_get but doesn't make the found entry new */
++
++
++static struct vt_page * cache_lookup(struct cache *ca, int pgno, int subno)
++{
++    struct cache_page *cp;
++    int h = hash(pgno);
++
++    for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++      if (cp->page->pgno == pgno)
++          if (subno == ANY_SUB || cp->page->subno == subno)
++              return cp->page;
++    return 0;
++}
++
++
++static struct vt_page * cache_foreach_pg(struct cache *ca, int pgno, int subno,
++    int dir, int (*func)(), void *data)
++{
++    struct vt_page *vtp, *s_vtp = 0;
++
++    if (ca->npages == 0)
++      return 0;
++
++    if (vtp = cache_lookup(ca, pgno, subno))
++      subno = vtp->subno;
++    else if (subno == ANY_SUB)
++      subno = dir < 0 ? 0 : 0xffff;
++
++    for (;;)
++    {
++      subno += dir;
++      while (subno < 0 || subno >= ca->hi_subno[pgno])
++      {
++          pgno += dir;
++          if (pgno < 0x100)
++              pgno = 0x9ff;
++          if (pgno > 0x9ff)
++              pgno = 0x100;
++          subno = dir < 0 ? ca->hi_subno[pgno] - 1 : 0;
++      }
++      if (vtp = cache_lookup(ca, pgno, subno))
++      {
++          if (s_vtp == vtp)
++              return 0;
++          if (s_vtp == 0)
++              s_vtp = vtp;
++          if (func(data, vtp))
++              return vtp;
++      }
++    }
++}
++
++
++static int cache_mode(struct cache *ca, int mode, int arg)
++{
++    int res = -1;
++
++    switch (mode)
++    {
++      case CACHE_MODE_ERC:
++          res = ca->erc;
++          ca->erc = arg ? 1 : 0;
++          break;
++    }
++    return res;
++}
++
++
++static struct cache_ops cops =
++{
++    cache_close,
++    cache_get,
++    cache_put,
++    cache_reset,
++    cache_foreach_pg,
++    cache_mode,
++};
++
++
++struct cache * cache_open(void)
++{
++    struct cache *ca;
++    struct vt_page *vtp;
++    int i;
++
++    if (not(ca = malloc(sizeof(*ca))))
++      goto fail1;
++
++    for (i = 0; i < HASH_SIZE; ++i)
++      dl_init(ca->hash + i);
++
++    memset(ca->hi_subno, 0, sizeof(ca->hi_subno));
++    ca->erc = 1;
++    ca->npages = 0;
++    ca->op = &cops;
++
++    for (vtp = help_pages; vtp < help_pages + nr_help_pages; vtp++)
++      cache_put(ca, vtp);
++
++    return ca;
++
++fail2:
++    free(ca);
++fail1:
++    return 0;
++}
+diff -r af23d23c278b util/alevt/cache.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/cache.h       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++#ifndef CACHE_H
++#define CACHE_H
++
++#include "vt.h"
++#include "misc.h"
++#include "dllist.h"
++
++#define HASH_SIZE 113
++
++
++struct cache
++{
++    struct dl_head hash[HASH_SIZE];
++    int erc; // error reduction circuit on
++    int npages;
++    u16 hi_subno[0x9ff + 1]; // 0:pg not in cache, 1-3f80:highest subno + 1
++    struct cache_ops *op;
++};
++
++
++struct cache_page
++{
++    struct dl_node node[1];
++    struct vt_page page[1];
++};
++
++
++struct cache_ops
++{
++    void (*close)(struct cache *ca);
++    struct vt_page *(*get)(struct cache *ca, int pgno, int subno);
++    struct vt_page *(*put)(struct cache *ca, struct vt_page *vtp);
++    void (*reset)(struct cache *ca);
++    struct vt_page *(*foreach_pg)(struct cache *ca, int pgno, int subno, int dir,
++    int (*func)(), void *data);
++    int (*mode)(struct cache *ca, int mode, int arg);
++};
++
++struct cache *cache_open(void);
++#define CACHE_MODE_ERC 1
++#endif
+diff -r af23d23c278b util/alevt/dllist.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/dllist.h      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,55 @@
++#ifndef DLLIST_H
++#define DLLIST_H
++
++
++struct dl_node
++{
++    struct dl_node *next;
++    struct dl_node *prev;
++};
++
++
++struct dl_head
++{
++    struct dl_node *first;
++    struct dl_node *null;
++    struct dl_node *last;
++};
++
++
++static inline struct dl_head * dl_init(struct dl_head *h)
++{
++    h->first = (struct dl_node *)&h->null;
++    h->null = 0;
++    h->last = (struct dl_node *)&h->first;
++    return h;
++}
++
++
++static inline struct dl_node * dl_remove(struct dl_node *n)
++{
++    n->prev->next = n->next;
++    n->next->prev = n->prev;
++    return n;
++}
++
++
++static inline struct dl_node *
++    dl_insert_after(struct dl_node *p, struct dl_node *n)
++{
++    n->next = p->next;
++    n->prev = p;
++    p->next = n;
++    n->next->prev = n;
++    return n;
++}
++
++#define dl_empty(h)             ((h)->first->next == 0)
++#define dl_insert_before(p, n)  dl_insert_after((p)->prev, (n))
++#define dl_insert_first(h, n)   ({ struct dl_node *_n = (n); \
++                                      dl_insert_before((h)->first, _n); })
++#define dl_insert_last(h, n)    ({ struct dl_node *_n = (n); \
++                                      dl_insert_after((h)->last, _n); })
++#define dl_remove_first(h)      dl_remove((h)->first) // mustn't be empty!
++#define dl_remove_last(h)       dl_remove((h)->last) // mustn't be empty!
++#endif
+diff -r af23d23c278b util/alevt/exp-gfx.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-gfx.c     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,258 @@
++/* Copyright 1999 by Paul Ortyl <ortylp@from.pl> */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include "lang.h"
++#include "export.h"
++#include "font.h"
++#define WW (W*CW) /* pixel width of window */
++#define WH (H*CH) /* pixel hegiht of window */
++
++
++static inline void draw_char(unsigned char * colour_matrix, int fg, int bg,
++    int c, int dbl, int _x, int _y, int sep)
++{
++  int x,y;
++  unsigned char* src= (latin1==LATIN1 ? font1_bits : font2_bits);
++  int dest_x=_x*CW;
++  int dest_y=_y*CH;
++      
++  for(y=0;y<(CH<<dbl); y++)
++    {
++      for(x=0;x<CW; x++)
++      {
++        int bitnr, bit, maskbitnr, maskbit;
++        bitnr=(c/32*CH + (y>>dbl))*CW*32+ c%32*CW +x;
++        bit=(*(src+bitnr/8))&(1<<bitnr%8);
++        if (sep)
++          {
++            maskbitnr=(0xa0/32*CH + (y>>dbl))*CW*32+ 0xa0%32*CW +x;
++            maskbit=(*(src+maskbitnr/8))&(1<<maskbitnr%8);
++            *(colour_matrix+WW*(dest_y+y)+dest_x+x)=
++              (char)((bit && (!maskbit)) ? fg : bg);
++          }
++        else 
++          *(colour_matrix+WW*(dest_y+y)+dest_x+x)=
++            (char)(bit ? fg : bg);
++      }
++    }
++  return;
++}
++
++
++static void prepare_colour_matrix(/*struct export *e,*/
++                    struct fmt_page *pg, 
++                    unsigned char *colour_matrix)
++{
++   int x, y;
++   for (y = 0; y < H; ++y)
++      {
++        for (x = 0; x < W; ++x)
++          { 
++            if (pg->dbl & (1<<(y-1)))
++              {
++                if (pg->data[y-1][x].attr & EA_HDOUBLE)
++                   draw_char(colour_matrix, pg->data[y][x].fg, 
++                          pg->data[y][x].bg, pg->data[y][x].ch, 
++                          (0), 
++                          x, y, 
++                          ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0)
++                          );
++              }
++            else
++              {
++                draw_char(colour_matrix, pg->data[y][x].fg, 
++                          pg->data[y][x].bg, pg->data[y][x].ch, 
++                          ((pg->data[y][x].attr & EA_DOUBLE) ? 1 : 0), 
++                          x, y, 
++                          ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0)
++                          );
++              }
++          }
++      }
++    return;
++}
++
++
++static int ppm_output(struct export *e, char *name, struct fmt_page *pg);
++
++struct export_module export_ppm = // exported module definition
++{
++    "ppm",                    // id
++    "ppm",                    // extension
++    0,                                // options
++    0,                                // size
++    0,                                // open
++    0,                                // close
++    0,                                // option
++    ppm_output                        // output
++};
++
++
++static int ppm_output(struct export *e, char *name, struct fmt_page *pg)
++{
++  FILE *fp;
++  long n;
++  static u8 rgb1[][3]={{0,0,0},
++                    {1,0,0},
++                    {0,1,0},
++                    {1,1,0},
++                    {0,0,1},
++                    {1,0,1},
++                    {0,1,1},
++                    {1,1,1}};
++  unsigned char *colour_matrix;
++
++  if (!(colour_matrix=malloc(WH*WW))) 
++    {
++      export_error("cannot allocate memory");
++      return 0;
++    }
++
++  prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix); 
++  if (not(fp = fopen(name, "w")))
++    {
++      free(colour_matrix);
++      export_error("cannot create file");
++      return -1;
++    }
++  fprintf(fp,"P6 %d %d 1\n", WW, WH);
++
++  for(n=0;n<WH*WW;n++)
++    {
++      if (!fwrite(rgb1[(int) *(colour_matrix+n)], 3, 1, fp))
++      {
++        export_error("error while writting to file");
++        free(colour_matrix);
++        fclose(fp);
++        return -1;
++      }
++    }
++  free(colour_matrix);
++  fclose(fp);
++  return 0;
++}
++
++
++#ifdef WITH_PNG
++
++#include <png.h>
++static int png_open(struct export *e);
++static int png_option(struct export *e, int opt, char *arg);
++static int png_output(struct export *e, char *name, struct fmt_page *pg);
++static char *png_opts[] =     // module options
++{
++    "compression=<0-9>",      // set compression level
++    0
++};
++
++struct png_data                       // private data in struct export
++{
++    int compression;
++};
++
++struct export_module export_png =     // exported module definition
++{
++    "png",                    // id
++    "png",                    // extension
++    png_opts,                 // options
++    sizeof(struct png_data),  // size
++    png_open,                 // open
++    0,                                // close
++    png_option,                       // option
++    png_output                        // output
++};
++
++#define D  ((struct png_data *)e->data)
++
++
++static int png_open(struct export *e)
++{
++    D->compression = Z_DEFAULT_COMPRESSION;
++    return 0;
++}
++
++
++static int png_option(struct export *e, int opt, char *arg)
++{
++    switch (opt)
++    {
++      case 1: // compression=
++          if (*arg >= '0' && *arg <= '9')
++              D->compression = *arg - '0';
++          break;
++    }
++    return 0;
++}
++
++
++static int png_output(struct export *e, char *name, struct fmt_page *pg)
++{
++  FILE *fp;
++  int x;
++  png_structp png_ptr;
++  png_infop info_ptr;
++  png_byte *row_pointers[WH];
++  static u8 rgb8[][3]={{  0,  0,  0},
++                    {255,  0,  0},
++                    {  0,255,  0},
++                    {255,255,  0},
++                    {  0,  0,255},
++                    {255,  0,255},
++                    {  0,255,255},
++                    {255,255,255}};
++  unsigned char *colour_matrix;
++
++  if (!(colour_matrix=malloc(WH*WW))) 
++    {
++      export_error("cannot allocate memory");
++      return -1;
++    }
++  prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix); 
++  if (not(fp = fopen(name, "w")))
++    {
++      free(colour_matrix);
++      export_error("cannot create file");
++      return -1;
++      }
++  png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 
++                                  NULL, NULL, NULL);
++  if (!png_ptr)
++    {
++      free(colour_matrix);
++      fclose(fp);
++      export_error("libpng init error");
++      return -1;
++    }
++  info_ptr = png_create_info_struct(png_ptr);
++  if (!info_ptr)
++    {
++      png_destroy_write_struct(&png_ptr,
++                             (png_infopp)NULL);
++      free(colour_matrix);
++      fclose(fp);
++      export_error("libpng init error");
++      return -1;
++    }
++  png_init_io(png_ptr, fp);
++  png_set_compression_level(png_ptr, D->compression);
++  png_set_compression_mem_level(png_ptr, 9);
++  png_set_compression_window_bits(png_ptr, 15);
++  png_set_IHDR(png_ptr, info_ptr, WW, WH,
++             8, PNG_COLOR_TYPE_PALETTE , PNG_INTERLACE_NONE,
++             PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
++  png_set_PLTE(png_ptr, info_ptr,(png_color*) rgb8 , 8);
++  png_write_info(png_ptr, info_ptr);
++  for(x=0; x<WH; x++)
++    { row_pointers[x]=colour_matrix+x*WW; }
++  png_write_image(png_ptr, row_pointers);
++  png_write_end(png_ptr, info_ptr);
++  png_destroy_write_struct(&png_ptr, &info_ptr);
++  free(colour_matrix);
++  fclose(fp);
++  return 0;
++}
++
++#endif
++
+diff -r af23d23c278b util/alevt/exp-html.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-html.c    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,299 @@
++/* Copyright 1999 by Paul Ortyl <ortylp@from.pl> */
++
++#include <stdio.h>
++#include <string.h>
++#include "lang.h"
++#include "export.h"
++
++static int html_open(struct export *e);
++static int html_option(struct export *e, int opt, char *arg);
++static int html_output(struct export *e, char *name, struct fmt_page *pg);
++static char *html_opts[] = // module options
++{
++  "gfx-chr=<char>",             // substitute <char> for gfx-symbols
++  "bare",                     // no headers
++   0
++};
++
++struct html_data // private data in struct export
++{
++  u8 gfx_chr;
++  u8 bare;
++};
++
++
++struct export_module export_html =    // exported module definition
++{
++    "html",                   // id
++    "html",                   // extension
++    html_opts,                        // options
++    sizeof(struct html_data), // size
++    html_open,                        // open
++    0,                                // close
++    html_option,              // option
++    html_output                       // output
++};
++
++#define D  ((struct html_data *)e->data)
++
++
++static int html_open(struct export *e)
++{
++    D->gfx_chr = '#';
++    D->bare = 0;
++    //e->reveal=1;    // the default should be the same for all formats.
++    return 0;
++}
++
++
++static int html_option(struct export *e, int opt, char *arg)
++{
++  switch (opt)
++    {
++    case 1: // gfx-chr=
++      D->gfx_chr = *arg ?: ' ';
++      break;
++    case 2: // bare (no headers)
++      D->bare=1;
++      break;
++    }
++  return 0;
++}
++
++#define HTML_BLACK   "#000000"
++#define HTML_RED     "#FF0000"
++#define HTML_GREEN   "#00FF00"
++#define HTML_YELLOW  "#FFFF00"
++#define HTML_BLUE    "#0000FF"
++#define HTML_MAGENTA "#FF00FF"
++#define HTML_CYAN    "#00FFFF"
++#define HTML_WHITE   "#FFFFFF"
++
++#undef UNREADABLE_HTML //no '\n'
++#define STRIPPED_HTML   //only necessary fields in header
++
++static int html_output(struct export *e, char *name, struct fmt_page *pg)
++{
++    
++  const char* html_colours[]={ HTML_BLACK,
++                             HTML_RED,
++                             HTML_GREEN,
++                             HTML_YELLOW,
++                             HTML_BLUE,
++                             HTML_MAGENTA,
++                             HTML_CYAN,
++                             HTML_WHITE};
++  FILE *fp;
++  int x, y;
++
++#ifdef UNREADABLE_HTML
++#define HTML_NL
++#else
++#define HTML_NL fputc('\n',fp);
++#endif
++  
++  if (not(fp = fopen(name, "w")))
++    {
++      export_error("cannot create file");
++      return -1;
++    }
++
++if (!D->bare)
++  {
++#ifndef STRIPPED_HTML  
++    fputs("<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">",fp);
++    HTML_NL
++#endif
++      fputs("<html><head>",fp);
++    HTML_NL
++#ifndef STRIPPED_HTML
++      fputs("<meta http-equiv=\"Content-Type\" content=\"text/html;",fp);
++    switch(latin1) {
++      case LATIN1: fprintf(fp,"charset=iso-8859-1\">"); break;
++      case LATIN2: fprintf(fp,"charset=iso-8859-2\">"); break;
++      case KOI8: fprintf(fp,"charset=koi8-r\">"); break;
++      case GREEK: fprintf(fp,"charset=iso-8859-7\">"); break;
++    }
++    HTML_NL
++      fputs("<meta name=\"GENERATOR\" content=\"alevt-cap\">",fp);
++    HTML_NL
++#else
++    switch(latin1) {
++      case LATIN1: fprintf(fp,"<meta charset=iso-8859-1\">"); break;
++      case LATIN2: fprintf(fp,"<meta charset=iso-8859-2\">"); break;
++      case KOI8: fprintf(fp,"<meta charset=koi8-r\">"); break;
++      case GREEK: fprintf(fp,"<meta charset=iso-8859-7\">"); break;
++    }
++    HTML_NL
++#endif
++      fputs("</head>",fp);
++    fputs("<body text=\"#FFFFFF\" bgcolor=\"#000000\">",fp);
++    HTML_NL
++      } //bare
++
++      fputs("<tt><b>",fp);
++    HTML_NL
++
++  // write tables in form of HTML format
++  for (y = 0; y < 25; ++y)
++    { 
++      int last_nonblank=0;
++      int first_unprinted=0;
++      int last_space=1;
++      // previous char was &nbsp;
++      // is used for deciding to put semicolon or not
++      int nbsp=0; 
++
++      // for output filled with ' ' up to 40 chars
++      // set last_nonblank=39
++      for (x = 0 ; x < 40; ++x) 
++      { 
++        if (pg->data[y][x].attr & EA_GRAPHIC)
++          {pg->data[y][x].ch= D->gfx_chr;}
++        
++        if (pg->data[y][x].ch!=' ')
++        {
++          last_nonblank=x;
++        }
++      }
++
++      for (x = 0 ; x <= last_nonblank ; ++x)
++      {
++        if (pg->data[y][x].ch==' ')
++          {
++            // if single space between blinking/colour words
++            // then make the space blinking/colour too
++            if ((x)&&(x<39))
++              {
++                if ((pg->data[y][x-1].ch!=' ')
++                    &&(pg->data[y][x+1].ch!=' ')
++                    &&(pg->data[y][x-1].attr & EA_BLINK)
++                    &&(pg->data[y][x+1].attr & EA_BLINK))
++                  {pg->data[y][x].attr |= EA_BLINK;}
++                else              
++                  {pg->data[y][x].attr &= ~EA_BLINK;}
++                          
++                if ((pg->data[y][x-1].ch!=' ')
++                    &&(pg->data[y][x+1].ch!=' ')
++                    &&(pg->data[y][x-1].fg==pg->data[y][x+1].fg))
++                  {pg->data[y][x].fg=pg->data[y][x-1].fg;}
++                else
++                  pg->data[y][x].fg=7;
++              }
++            else
++              {
++                pg->data[y][x].attr &= ~EA_BLINK;
++                pg->data[y][x].fg=7;
++              }
++          }
++        else
++          {
++            // if foreground is black set the foreground to previous 
++            // background colour to let it be visible
++            if (!pg->data[y][x].fg)
++              {pg->data[y][x].fg=pg->data[y][x].bg;}
++          }
++        //check if attributes changed,
++        //if yes then print chars and update first_unprinted
++        //if not then go to next char
++        if (x)
++          {
++            if (((
++                  (pg->data[y][x].attr & EA_BLINK)
++                  ==
++                  (pg->data[y][x-1].attr & EA_BLINK)
++                  )
++                 &&
++                 (
++                  pg->data[y][x].fg == pg->data[y][x-1].fg
++                  ))
++                &&(x!=last_nonblank))
++              
++              { continue; }
++          }
++        else continue;
++          
++        {
++          int z=first_unprinted;
++          for(;(pg->data[y][z].ch==' ') && (z<x);z++)
++            {
++              if (last_space)
++                {
++                  fprintf(fp,"&nbsp");
++                  last_space=0;
++                  nbsp=1;
++                }
++              else 
++                {
++                  fputc(' ',fp);
++                  last_space=1;
++                  nbsp=0;
++                }
++            }
++         
++          first_unprinted=z;
++          
++          if (z==x) continue; 
++          
++          if (pg->data[y][first_unprinted].attr & EA_BLINK) 
++            {
++              fprintf(fp,"<blink>");
++              nbsp=0;
++            }
++          
++          if (pg->data[y][first_unprinted].fg!=7)
++            {
++              fprintf(fp,"<font color=\"%s\">",
++                      html_colours[pg->data[y][first_unprinted].fg]);
++              nbsp=0;
++            }
++          for(;(z<x)||(z==last_nonblank);z++)
++            {
++              
++              if (pg->data[y][z].ch==' ')
++                {
++                  for(;(pg->data[y][z].ch==' ') && (z<x);z++)
++                    {
++                      if (last_space)
++                        {
++                          fprintf(fp,"&nbsp");
++                          last_space=0;
++                          nbsp=1;
++                        }
++                      else 
++                        {
++                          fputc(' ',fp);
++                          last_space=1;
++                          nbsp=0;
++                        }
++                    }
++                  z--;
++                }
++              else
++                {
++                  //if previous nbsp --> put semicolon!!!
++                  if (nbsp) fputc(';',fp);
++                  fputc(pg->data[y][z].ch,fp);
++                  last_space=0;
++                  nbsp=0;
++                }
++            }
++          if (pg->data[y][first_unprinted].fg!=7)
++            {
++              fprintf(fp,"</font>");
++            }
++          if (pg->data[y][first_unprinted].attr & EA_BLINK)
++            fprintf(fp,"</blink>");
++          
++          first_unprinted=z;
++        }
++      }
++      fputs("<br>",fp);
++      HTML_NL
++    }
++  fputs("</b></tt>",fp);
++  if (!D->bare)
++    fputs("</body></html>",fp);
++  fclose(fp);
++  return 0;
++}
+diff -r af23d23c278b util/alevt/exp-txt.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-txt.c     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,226 @@
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include "os.h"
++#include "export.h"
++
++static int txt_open(struct export *e);
++static int txt_option(struct export *e, int opt, char *arg);
++static int txt_output(struct export *e, char *name, struct fmt_page *pg);
++static char *txt_opts[] =     // module options
++{
++    "color",                  // generate ansi color codes (and attributes)
++    "gfx-chr=<char>",         // substitute <char> for gfx-symbols
++    "fg=<0-7|none>",          // assume term has <x> as foreground color
++    "bg=<0-7|none>",          // assume term has <x> as background color
++    "lines=<1-25>",           // output 24 or 25 lines
++    0
++};
++
++
++struct txt_data                       // private data in struct export
++{
++    u8 color;
++    u8 gfx_chr;
++    u8 def_fg;
++    u8 def_bg;
++    int endline;
++    struct fmt_char curr[1];
++    FILE *fp;
++};
++
++
++struct export_module export_txt =     // exported module definition
++{
++    "ascii",                  // id
++    "txt",                    // extension
++    txt_opts,                 // options
++    sizeof(struct txt_data),  // data size
++    txt_open,                 // open
++    0,                                // close
++    txt_option,                       // option
++    txt_output,                       // output
++};
++
++
++struct export_module export_ansi =    // exported module definition
++{
++    "ansi",                   // id
++    "txt",                    // extension
++    txt_opts,                 // options
++    sizeof(struct txt_data),  // data size
++    txt_open,                 // open
++    0,                                // close
++    txt_option,                       // option
++    txt_output,                       // output
++};
++
++#define D  ((struct txt_data *)e->data)
++
++
++char * my_stpcpy(char *dst, const char *src)
++{
++    while (*dst = *src++)
++      dst++;
++    return dst;
++}
++
++
++static int txt_open(struct export *e)
++{
++    D->gfx_chr = '#';
++    D->def_fg = -1;
++    D->def_bg = -1;
++    D->endline = H;
++    if (e->mod == &export_ansi)
++      D->color = 1;
++    return 0;
++}
++
++
++static int txt_option(struct export *e, int opt, char *arg)
++{
++    switch (opt)
++    {
++      case 1: // color
++          D->color = 1;
++          break;
++      case 2: // gfx-chr=
++          D->gfx_chr = *arg ?: ' ';
++          break;
++      case 3: // fg=
++          D->def_fg = *arg - '0';
++          break;
++      case 4: // bg=
++          D->def_bg = *arg - '0';
++          break;
++      case 5: // lines=
++          D->endline = atoi(arg);
++          if (D->endline < 1 || D->endline > H)
++          {
++              export_error("lines: invalid number");
++              return 1;
++          }
++    }
++    return 0;
++}
++
++
++static void put_attr(struct export *e, struct fmt_char *new)
++{
++    char buf[512];
++    char *p = buf;
++    int fg, bg, attr;
++    int reset = 0;
++
++    if (D->color)
++    {
++      fg = D->curr->fg ^ new->fg;
++      bg = D->curr->bg ^ new->bg;
++      attr = (D->curr->attr ^ new->attr) & (EA_BLINK | EA_DOUBLE);
++
++      if (fg | bg | attr)
++      {
++          if (~new->attr & attr)      // reset some attributes ->  reset all.
++              reset = 1;
++          if (fg && new->fg == D->def_fg)     // switch to def fg -> reset all
++              reset = 1;
++          if (bg && new->bg == D->def_bg)     // switch to def bg -> reset all
++              reset = 1;
++
++          p = my_stpcpy(buf, "\e[");
++          if (reset)
++          {
++              p = my_stpcpy(p, ";");          // "0;" but 0 isn't neccesary
++              attr = -1;                      // set all attributes
++              fg = new->fg ^ D->def_fg;       // set fg if != default fg
++              bg = new->bg ^ D->def_bg;       // set bg if != default bg
++          }
++          if (attr & new->attr & EA_BLINK)
++              p = my_stpcpy(p, "5;");                 // blink
++          if (attr & new->attr & EA_DOUBLE)
++              p = my_stpcpy(p, "1;");                 // bold
++          if (fg)
++              p += sprintf(p, "%d;", new->fg + 30);   // fg-color
++          if (bg)
++              p += sprintf(p, "%d;", new->bg + 40);   // bg-color
++          p[-1] = 'm';        // replace last ;
++          *D->curr = *new;
++      }
++    }
++    *p++ = new->ch;
++    *p = 0;
++    fputs(buf, D->fp);
++}
++
++
++static int txt_output(struct export *e, char *name, struct fmt_page *pg)
++{
++    struct fmt_char def_c[1];
++    struct fmt_char l[W+2];
++    #define L (l+1)
++    int x, y;
++
++    D->fp = fopen(name, "w");
++    if (not D->fp)
++    {
++      export_error("cannot create file");
++      return -1;
++    }
++
++    /* initialize default colors. These have to be restored at EOL. */
++    def_c->ch = '\n';
++    def_c->fg = D->def_fg;
++    def_c->bg = D->def_bg;
++    def_c->attr = E_DEF_ATTR;
++    *D->curr = *def_c;
++    L[-1] = L[W] = *def_c;
++
++    for (y = 0; y < D->endline; y++)
++      if (~pg->hid & (1 << y))        // not hidden
++      {
++          // character conversion
++          for (x = 0; x < W; ++x)
++          {
++              struct fmt_char c = pg->data[y][x];
++
++              switch (c.ch)
++              {
++                  case 0x00: case 0xa0:               c.ch = ' '; break;
++                  case 0x7f:                          c.ch = '*'; break;
++                  case BAD_CHAR:                      c.ch = '?'; break;
++                  default:
++                      if (c.attr & EA_GRAPHIC)
++                          c.ch = D->gfx_chr;
++                      break;
++              }
++              L[x] = c;
++          }
++
++          if (D->color)
++          {
++              // optimize color and attribute changes
++              // delay fg and attr changes as far as possible
++              for (x = 0; x < W; ++x)
++                  if (L[x].ch == ' ')
++                  {
++                      L[x].fg = L[x-1].fg;
++                      l[x].attr = L[x-1].attr;
++                  }
++
++              // move fg and attr changes to prev bg change point
++              for (x = W-1; x >= 0; x--)
++                  if (L[x].ch == ' ' && L[x].bg == L[x+1].bg)
++                  {
++                      L[x].fg = L[x+1].fg;
++                      L[x].attr = L[x+1].attr;
++                  }
++          }
++
++          // now emit the whole line (incl EOL)
++          for (x = 0; x < W+1; ++x)
++              put_attr(e, L + x);
++      }
++    fclose(D->fp);
++    return 0;
++}
+diff -r af23d23c278b util/alevt/export.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/export.c      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,364 @@
++#include <stdarg.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include "vt.h"
++#include "misc.h"
++#include "export.h"
++
++extern struct export_module export_txt;
++extern struct export_module export_ansi;
++extern struct export_module export_html;
++extern struct export_module export_png;
++extern struct export_module export_ppm;
++struct export_module *modules[] =
++{
++    &export_txt,
++    &export_ansi,
++    &export_html,
++    &export_ppm,
++#ifdef WITH_PNG
++    &export_png,
++#endif
++    0
++};
++
++
++static char *glbl_opts[] =
++{
++    "reveal",         // show hidden text
++    "hide",           // don't show hidden text (default)
++    0
++};
++
++static char errbuf[64];
++
++
++void export_error(char *str, ...)
++{
++    va_list args;
++
++    va_start(args, str);
++    vsnprintf(errbuf, sizeof(errbuf)-1, str, args);
++}
++
++
++char * export_errstr(void)
++{
++    return errbuf;
++}
++
++
++static int find_opt(char **opts, char *opt, char *arg)
++{
++    int err = 0;
++    char buf[256];
++    char **oo, *o, *a;
++
++    if (oo = opts)
++      while (o = *oo++)
++      {
++          if (a = strchr(o, '='))
++          {
++              a = buf + (a - o);
++              o = strcpy(buf, o);
++              *a++ = 0;
++          }
++          if (strcasecmp(o, opt) == 0)
++          {
++              if ((a != 0) == (arg != 0))
++                  return oo - opts;
++              err = -1;
++          }
++      }
++    return err;
++}
++
++
++struct export * export_open(char *fmt)
++{
++    struct export_module **eem, *em;
++    struct export *e;
++    char *opt, *optend, *optarg;
++    int opti;
++
++    if (fmt = strdup(fmt))
++    {
++      if (opt = strchr(fmt, ','))
++          *opt++ = 0;
++      for (eem = modules; em = *eem; eem++)
++          if (strcasecmp(em->fmt_name, fmt) == 0)
++              break;
++      if (em)
++      {
++          if (e = malloc(sizeof(*e) + em->local_size))
++          {
++              e->mod = em;
++              e->fmt_str = fmt;
++              e->reveal = 0;
++              memset(e + 1, 0, em->local_size);
++              if (not em->open || em->open(e) == 0)
++              {
++                  for (; opt; opt = optend)
++                  {
++                      if (optend = strchr(opt, ','))
++                          *optend++ = 0;
++                      if (not *opt)
++                          continue;
++                      if (optarg = strchr(opt, '='))
++                          *optarg++ = 0;
++                      if ((opti = find_opt(glbl_opts, opt, optarg)) > 0)
++                      {
++                          if (opti == 1) // reveal
++                              e->reveal = 1;
++                          else if (opti == 2) // hide
++                              e->reveal = 0;
++                      }
++                      else if (opti == 0 &&
++                              (opti = find_opt(em->options, opt, optarg)) > 0)
++                      {
++                          if (em->option(e, opti, optarg))
++                              break;
++                      }
++                      else
++                      {
++                          if (opti == 0)
++                              export_error("%s: unknown option", opt);
++                          else if (optarg)
++                              export_error("%s: takes no arg", opt);
++                          else
++                              export_error("%s: missing arg", opt);
++                          break;
++                      }
++                  }
++                  if (opt == 0)
++                      return e;
++
++                  if (em->close)
++                      em->close(e);
++              }
++              free(e);
++          }
++          else
++              export_error("out of memory");
++      }
++      else
++          export_error("unknown format: %s", fmt);
++      free(fmt);
++    }
++    else
++      export_error("out of memory");
++    return 0;
++}
++
++
++void export_close(struct export *e)
++{
++    if (e->mod->close)
++      e->mod->close(e);
++    free(e->fmt_str);
++    free(e);
++}
++
++
++static char * hexnum(char *buf, unsigned int num)
++{
++    char *p = buf + 5;
++
++    num &= 0xffff;
++    *--p = 0;
++    do
++    {
++      *--p = "0123456789abcdef"[num % 16];
++      num /= 16;
++    } while (num);
++    return p;
++}
++
++
++static char * adjust(char *p, char *str, char fill, int width)
++{
++    int l = width - strlen(str);
++
++    while (l-- > 0)
++      *p++ = fill;
++    while (*p = *str++)
++      p++;
++    return p;
++}
++
++
++char * export_mkname(struct export *e, char *fmt, struct vt_page *vtp, char *usr)
++{
++    char bbuf[1024];
++    char *p = bbuf;
++
++    while (*p = *fmt++)
++      if (*p++ == '%')
++      {
++          char buf[32], buf2[32];
++          int width = 0;
++
++          p--;
++          while (*fmt >= '0' && *fmt <= '9')
++              width = width*10 + *fmt++ - '0';
++
++          switch (*fmt++)
++          {
++              case '%':
++                  p = adjust(p, "%", '%', width);
++                  break;
++              case 'e':       // extension
++                  p = adjust(p, e->mod->extension, '.', width);
++                  break;
++              case 'p':       // pageno[.subno]
++                  if (vtp->subno)
++                      p = adjust(p,strcat(strcat(hexnum(buf, vtp->pgno),
++                              "."), hexnum(buf2, vtp->subno)), ' ', width);
++                  else
++                      p = adjust(p, hexnum(buf, vtp->pgno), ' ', width);
++                  break;
++              case 'S':       // subno
++                  p = adjust(p, hexnum(buf, vtp->subno), '0', width);
++                  break;
++              case 'P':       // pgno
++                  p = adjust(p, hexnum(buf, vtp->pgno), '0', width);
++                  break;
++              case 's':       // user strin
++                  p = adjust(p, usr, ' ', width);
++                  break;
++              //TODO: add date, channel name, ...
++          }
++      }
++    p = strdup(bbuf);
++    if (not p)
++      export_error("out of memory");
++    return p;
++}
++
++
++static void fmt_page(struct export *e, struct fmt_page *pg, struct vt_page *vtp)
++{
++    char buf[16];
++    int x, y;
++    u8 *p = vtp->data[0];
++
++    pg->dbl = 0;
++
++    sprintf(buf, "\2%x.%02x\7", vtp->pgno, vtp->subno & 0xff);
++
++    for (y = 0; y < H; y++)
++    {
++      struct fmt_char c;
++      int last_ch = ' ';
++      int dbl = 0, hold = 0;
++
++      c.fg = 7;
++      c.bg = 0;
++      c.attr = 0;
++
++      for (x = 0; x < W; ++x)
++      {
++          c.ch = *p++;
++          if (y == 0 && x < 8)
++              c.ch = buf[x];
++          switch (c.ch)
++          {
++              case 0x00 ... 0x07:     /* alpha + fg color */
++                  c.fg = c.ch & 7;
++                  c.attr &= ~(EA_GRAPHIC | EA_CONCEALED);
++                  goto ctrl;
++              case 0x08:              /* flash */
++                  c.attr |= EA_BLINK;
++                  goto ctrl;
++              case 0x09:              /* steady */
++                  c.attr &= ~EA_BLINK;
++                  goto ctrl;
++              case 0x0a:              /* end box */
++              case 0x0b:              /* start box */
++                  goto ctrl;
++              case 0x0c:              /* normal height */
++                  c.attr &= EA_DOUBLE;
++                  goto ctrl;
++              case 0x0d:              /* double height */
++                  if (y < H-2)        /* ignored on last 2 lines */
++                  {
++                      c.attr |= EA_DOUBLE;
++                      dbl = 1;
++                  }
++                  goto ctrl;
++              case 0x10 ... 0x17:     /* gfx + fg color */
++                  c.fg = c.ch & 7;
++                  c.attr |= EA_GRAPHIC;
++                  c.attr &= ~EA_CONCEALED;
++                  goto ctrl;
++              case 0x18:              /* conceal */
++                  c.attr |= EA_CONCEALED;
++                  goto ctrl;
++              case 0x19:              /* contiguous gfx */
++                  c.attr &= ~EA_SEPARATED;
++                  goto ctrl;
++              case 0x1a:              /* separate gfx */
++                  c.attr |= EA_SEPARATED;
++                  goto ctrl;
++              case 0x1c:              /* black bg */
++                  c.bg = 0;
++                  goto ctrl;
++              case 0x1d:              /* new bg */
++                  c.bg = c.fg;
++                  goto ctrl;
++              case 0x1e:              /* hold gfx */
++                  hold = 1;
++                  goto ctrl;
++              case 0x1f:              /* release gfx */
++                  hold = 0;
++                  goto ctrl;
++
++              case 0x0e:              /* SO */
++              case 0x0f:              /* SI */
++              case 0x1b:              /* ESC */
++                  c.ch = ' ';
++                  break;
++
++              ctrl:
++                  c.ch = ' ';
++                  if (hold && (c.attr & EA_GRAPHIC))
++                      c.ch = last_ch;
++                  break;
++          }
++          if (c.attr & EA_GRAPHIC)
++              if ((c.ch & 0xa0) == 0x20)
++              {
++                  last_ch = c.ch;
++                  c.ch += (c.ch & 0x40) ? 32 : -32;
++              }
++          if (c.attr & EA_CONCEALED)
++              if (not e->reveal)
++                  c.ch = ' ';
++          pg->data[y][x] = c;
++      }
++      if (dbl)
++      {
++          pg->dbl |= 1 << y;
++          for (x = 0; x < W; ++x)
++          {
++              if (~pg->data[y][x].attr & EA_DOUBLE)
++                  pg->data[y][x].attr |= EA_HDOUBLE;
++              pg->data[y+1][x] = pg->data[y][x];
++              pg->data[y+1][x].ch = ' ';
++          }
++          y++;
++          p += W;
++      }
++    }
++    pg->hid = pg->dbl << 1;
++}
++
++
++int export(struct export *e, struct vt_page *vtp, char *name)
++{
++    struct fmt_page pg[1];
++
++    fmt_page(e, pg, vtp);
++    return e->mod->output(e, name, pg);
++}
+diff -r af23d23c278b util/alevt/export.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/export.h      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++#ifndef EXPORT_H
++#define EXPORT_H
++
++#include "vt.h"
++#include "misc.h"
++
++
++struct fmt_char
++{
++    u8 ch, fg, bg, attr;
++};
++
++#define EA_DOUBLE     1       // double height char
++#define EA_HDOUBLE    2       // single height char in double height line
++#define EA_BLINK      4       // blink
++#define EA_CONCEALED  8       // concealed
++#define EA_GRAPHIC    16      // graphic symbol
++#define EA_SEPARATED  32      // use separated graphic symbol
++
++#define E_DEF_FG      7
++#define E_DEF_BG      0
++#define E_DEF_ATTR    0
++
++
++struct fmt_page
++{
++    struct vt_page *vtp;
++    u32 dbl, hid;
++    struct fmt_char data[H][W];
++};
++
++
++struct export
++{
++    struct export_module *mod;        // module type
++    char *fmt_str;            // saved option string (splitted)
++    // global options
++    int reveal;                       // reveal hidden chars
++    // local data for module's use.  initialized to 0.
++    struct { int dummy; } data[0];
++};
++
++
++struct export_module
++{
++    char *fmt_name;           // the format type name (ASCII/HTML/PNG/...)
++    char *extension;          // the default file name extension
++    char **options;           // module options
++    int local_size;
++    int (*open)(struct export *fmt);
++    void (*close)(struct export *fmt);
++    int (*option)(struct export *fmt, int opt, char *arg);
++    int (*output)(struct export *fmt, char *name, struct fmt_page *pg);
++};
++
++
++extern struct export_module *modules[];       // list of modules (for help msgs)
++void export_error(char *str, ...);    // set error
++char *export_errstr(void);            // return last error
++char *export_mkname(struct export *e, char *fmt, struct vt_page *vtp, char *usr);
++
++
++struct export *export_open(char *fmt);
++void export_close(struct export *e);
++int export(struct export *e, struct vt_page *vtp, char *user_str);
++#endif
+diff -r af23d23c278b util/alevt/fdset.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/fdset.c       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,97 @@
++#include <stdlib.h>
++#include <unistd.h>
++#include <sys/time.h>
++#include "dllist.h"
++#include "misc.h"
++#include "fdset.h"
++
++struct fdset fds[1];          /* global fd list */
++
++
++int fdset_init(struct fdset *fds)
++{
++    dl_init(fds->list);
++    fds->del_count = 0;
++    return 0;
++}
++
++
++int fdset_add_fd(struct fdset *fds, int fd, void *handler, void *data)
++{
++    struct fdset_node *fn;
++
++    if (fd < 0)
++      return -1;
++    if (handler == 0)
++      return -1;
++
++    for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++      if (fn->fd == fd)
++          return -1;
++
++    if (not(fn = malloc(sizeof(*fn))))
++      return -1;
++    fn->fd = fd;
++    fn->handler = handler;
++    fn->data = data;
++    dl_insert_last(fds->list, fn->node);
++    return 0;
++}
++
++
++int fdset_del_fd(struct fdset *fds, int fd)
++{
++    struct fdset_node *fn;
++
++    for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++      if (fn->fd == fd)
++      {
++          dl_remove(fn->node);
++          free(fn);
++          fds->del_count++;
++          return 0;
++      }
++    return -1;
++}
++
++
++int fdset_select(struct fdset *fds, int timeout)
++{
++    struct fdset_node *fn;
++    fd_set rfds[1];
++    struct timeval tv[1], *tvp = 0;
++    int max_fd, x, del_count;
++
++    FD_ZERO(rfds);
++    max_fd = 0;
++    for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++    {
++      FD_SET(fn->fd, rfds);
++      if (fn->fd >= max_fd)
++          max_fd = fn->fd + 1;
++    }
++
++    if (timeout >= 0)
++    {
++      tv->tv_sec = timeout/1000;
++      tv->tv_usec = timeout%1000*1000;
++      tvp = tv;
++    }
++
++    x = select(max_fd, rfds, 0, 0, tvp);
++    if (x <= 0)
++      return x;
++
++    /* A little bit complicated. A called handler may modify the fdset... */
++restart:
++    del_count = fds->del_count;
++    for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++      if (FD_ISSET(fn->fd, rfds))
++      {
++          FD_CLR(fn->fd, rfds);
++          fn->handler(fn->data, fn->fd);
++          if (fds->del_count != del_count)
++              goto restart;
++      }
++    return 1;
++}
+diff -r af23d23c278b util/alevt/fdset.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/fdset.h       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,28 @@
++#ifndef FDSET_H
++#define FDSET_H
++
++#include "dllist.h"
++
++
++struct fdset
++{
++    struct dl_head list[1];
++    int del_count;
++};
++
++
++struct fdset_node /*internal*/
++{
++    struct dl_node node[1];
++    int fd;
++    void (*handler)(void *data, int fd);
++    void *data;
++};
++
++extern struct fdset fds[1]; /* global fd list */
++
++int fdset_init(struct fdset *fds);
++int fdset_add_fd(struct fdset *fds, int fd, void *handler, void *data);
++int fdset_del_fd(struct fdset *fds, int fd);
++int fdset_select(struct fdset *fds, int timeout /*millisec*/);
++#endif
+diff -r af23d23c278b util/alevt/font.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/font.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++#define static /* I want them global */
++#include "font1.xbm"
++#include "font2.xbm"
++#include "font3.xbm"
++#include "font4.xbm"
+diff -r af23d23c278b util/alevt/font.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/font.h        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++#ifndef FONT_H
++#define FONT_H
++
++#include "fontsize.h" /* the #defines from font?.xbm */
++
++#if font1_width != font2_width || font1_height != font2_height
++#error different font sizes.
++#endif
++
++extern unsigned char font1_bits[];
++extern unsigned char font2_bits[];
++extern unsigned char font3_bits[];
++extern unsigned char font4_bits[];
++
++#define font_width font1_width
++#define font_height font1_height
++#define CW (font_width/32) /* pixel width of a character */
++#define CH (font_height/8) /* pixel height of a character */
++#endif
+diff -r af23d23c278b util/alevt/hamm.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/hamm.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,229 @@
++#include "vt.h"
++#include "hamm.h"
++
++// table to decode hamm8/4 encoded bytes.
++// the low 4 bits are the (corrected) data bits
++// bit 8 is set if there was a single bit error
++// bit 12 is set if there was an uncorrectable error
++
++// the idea: you may add up to 15 words and get the
++// number of single bit errors in b8-b11 and the number
++// of double errors in b12-b15
++
++
++static unsigned short hammtab[256] =
++{
++    0x0101, 0x100f, 0x0001, 0x0101, 0x100f, 0x0100, 0x0101, 0x100f,
++    0x100f, 0x0102, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
++    0x100f, 0x0100, 0x0101, 0x100f, 0x0100, 0x0000, 0x100f, 0x0100,
++    0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x0103, 0x100f,
++    0x100f, 0x010c, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
++    0x0106, 0x100f, 0x100f, 0x0107, 0x100f, 0x0107, 0x0107, 0x0007,
++    0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x010d, 0x100f,
++    0x0006, 0x0106, 0x0106, 0x100f, 0x0106, 0x100f, 0x100f, 0x0107,
++    0x100f, 0x0102, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
++    0x0102, 0x0002, 0x100f, 0x0102, 0x100f, 0x0102, 0x0103, 0x100f,
++    0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x0103, 0x100f,
++    0x100f, 0x0102, 0x0103, 0x100f, 0x0103, 0x100f, 0x0003, 0x0103,
++    0x0104, 0x100f, 0x100f, 0x0105, 0x0004, 0x0104, 0x0104, 0x100f,
++    0x100f, 0x0102, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
++    0x100f, 0x0105, 0x0105, 0x0005, 0x0104, 0x100f, 0x100f, 0x0105,
++    0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x0103, 0x100f,
++    0x100f, 0x010c, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
++    0x010a, 0x100f, 0x100f, 0x010b, 0x000a, 0x010a, 0x010a, 0x100f,
++    0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x010d, 0x100f,
++    0x100f, 0x010b, 0x010b, 0x000b, 0x010a, 0x100f, 0x100f, 0x010b,
++    0x010c, 0x000c, 0x100f, 0x010c, 0x100f, 0x010c, 0x010d, 0x100f,
++    0x100f, 0x010c, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
++    0x100f, 0x010c, 0x010d, 0x100f, 0x010d, 0x100f, 0x000d, 0x010d,
++    0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x010d, 0x100f,
++    0x0108, 0x100f, 0x100f, 0x0109, 0x100f, 0x0109, 0x0109, 0x0009,
++    0x100f, 0x0102, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
++    0x0008, 0x0108, 0x0108, 0x100f, 0x0108, 0x100f, 0x100f, 0x0109,
++    0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x0103, 0x100f,
++    0x100f, 0x010c, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
++    0x010f, 0x100f, 0x000f, 0x010f, 0x100f, 0x010e, 0x010f, 0x100f,
++    0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x010d, 0x100f,
++    0x100f, 0x010e, 0x010f, 0x100f, 0x010e, 0x000e, 0x100f, 0x010e,
++};
++
++#if 0 // this information is contained in hamm24par bit 5
++// simple parity table (sum of 1 bits modulo 2)
++
++
++static char odd_parity[256] =
++{
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0
++};
++#endif
++
++// this table generates the parity checks for hamm24/18 decoding.
++// bit 0 is for test A, 1 for B, ...
++// thanks to R. Gancarz for this fine table *g*
++
++
++static char hamm24par[3][256] =
++{
++    { // parities of first byte
++       0, 33, 34,  3, 35,  2,  1, 32, 36,  5,  6, 39,  7, 38, 37,  4,
++      37,  4,  7, 38,  6, 39, 36,  5,  1, 32, 35,  2, 34,  3,  0, 33,
++      38,  7,  4, 37,  5, 36, 39,  6,  2, 35, 32,  1, 33,  0,  3, 34,
++       3, 34, 33,  0, 32,  1,  2, 35, 39,  6,  5, 36,  4, 37, 38,  7,
++      39,  6,  5, 36,  4, 37, 38,  7,  3, 34, 33,  0, 32,  1,  2, 35,
++       2, 35, 32,  1, 33,  0,  3, 34, 38,  7,  4, 37,  5, 36, 39,  6,
++       1, 32, 35,  2, 34,  3,  0, 33, 37,  4,  7, 38,  6, 39, 36,  5,
++      36,  5,  6, 39,  7, 38, 37,  4,  0, 33, 34,  3, 35,  2,  1, 32,
++      40,  9, 10, 43, 11, 42, 41,  8, 12, 45, 46, 15, 47, 14, 13, 44,
++      13, 44, 47, 14, 46, 15, 12, 45, 41,  8, 11, 42, 10, 43, 40,  9,
++      14, 47, 44, 13, 45, 12, 15, 46, 42, 11,  8, 41,  9, 40, 43, 10,
++      43, 10,  9, 40,  8, 41, 42, 11, 15, 46, 45, 12, 44, 13, 14, 47,
++      15, 46, 45, 12, 44, 13, 14, 47, 43, 10,  9, 40,  8, 41, 42, 11,
++      42, 11,  8, 41,  9, 40, 43, 10, 14, 47, 44, 13, 45, 12, 15, 46,
++      41,  8, 11, 42, 10, 43, 40,  9, 13, 44, 47, 14, 46, 15, 12, 45,
++      12, 45, 46, 15, 47, 14, 13, 44, 40,  9, 10, 43, 11, 42, 41,  8
++    }, { // parities of second byte
++       0, 41, 42,  3, 43,  2,  1, 40, 44,  5,  6, 47,  7, 46, 45,  4,
++      45,  4,  7, 46,  6, 47, 44,  5,  1, 40, 43,  2, 42,  3,  0, 41,
++      46,  7,  4, 45,  5, 44, 47,  6,  2, 43, 40,  1, 41,  0,  3, 42,
++       3, 42, 41,  0, 40,  1,  2, 43, 47,  6,  5, 44,  4, 45, 46,  7,
++      47,  6,  5, 44,  4, 45, 46,  7,  3, 42, 41,  0, 40,  1,  2, 43,
++       2, 43, 40,  1, 41,  0,  3, 42, 46,  7,  4, 45,  5, 44, 47,  6,
++       1, 40, 43,  2, 42,  3,  0, 41, 45,  4,  7, 46,  6, 47, 44,  5,
++      44,  5,  6, 47,  7, 46, 45,  4,  0, 41, 42,  3, 43,  2,  1, 40,
++      48, 25, 26, 51, 27, 50, 49, 24, 28, 53, 54, 31, 55, 30, 29, 52,
++      29, 52, 55, 30, 54, 31, 28, 53, 49, 24, 27, 50, 26, 51, 48, 25,
++      30, 55, 52, 29, 53, 28, 31, 54, 50, 27, 24, 49, 25, 48, 51, 26,
++      51, 26, 25, 48, 24, 49, 50, 27, 31, 54, 53, 28, 52, 29, 30, 55,
++      31, 54, 53, 28, 52, 29, 30, 55, 51, 26, 25, 48, 24, 49, 50, 27,
++      50, 27, 24, 49, 25, 48, 51, 26, 30, 55, 52, 29, 53, 28, 31, 54,
++      49, 24, 27, 50, 26, 51, 48, 25, 29, 52, 55, 30, 54, 31, 28, 53,
++      28, 53, 54, 31, 55, 30, 29, 52, 48, 25, 26, 51, 27, 50, 49, 24
++    }, { // parities of third byte
++      63, 14, 13, 60, 12, 61, 62, 15, 11, 58, 57,  8, 56,  9, 10, 59,
++      10, 59, 56,  9, 57,  8, 11, 58, 62, 15, 12, 61, 13, 60, 63, 14,
++       9, 56, 59, 10, 58, 11,  8, 57, 61, 12, 15, 62, 14, 63, 60, 13,
++      60, 13, 14, 63, 15, 62, 61, 12,  8, 57, 58, 11, 59, 10,  9, 56,
++       8, 57, 58, 11, 59, 10,  9, 56, 60, 13, 14, 63, 15, 62, 61, 12,
++      61, 12, 15, 62, 14, 63, 60, 13,  9, 56, 59, 10, 58, 11,  8, 57,
++      62, 15, 12, 61, 13, 60, 63, 14, 10, 59, 56,  9, 57,  8, 11, 58,
++      11, 58, 57,  8, 56,  9, 10, 59, 63, 14, 13, 60, 12, 61, 62, 15,
++      31, 46, 45, 28, 44, 29, 30, 47, 43, 26, 25, 40, 24, 41, 42, 27,
++      42, 27, 24, 41, 25, 40, 43, 26, 30, 47, 44, 29, 45, 28, 31, 46,
++      41, 24, 27, 42, 26, 43, 40, 25, 29, 44, 47, 30, 46, 31, 28, 45,
++      28, 45, 46, 31, 47, 30, 29, 44, 40, 25, 26, 43, 27, 42, 41, 24,
++      40, 25, 26, 43, 27, 42, 41, 24, 28, 45, 46, 31, 47, 30, 29, 44,
++      29, 44, 47, 30, 46, 31, 28, 45, 41, 24, 27, 42, 26, 43, 40, 25,
++      30, 47, 44, 29, 45, 28, 31, 46, 42, 27, 24, 41, 25, 40, 43, 26,
++      43, 26, 25, 40, 24, 41, 42, 27, 31, 46, 45, 28, 44, 29, 30, 47
++    }
++};
++
++// table to extract the lower 4 bit from hamm24/18 encoded bytes
++
++
++static char hamm24val[256] =
++{
++      0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,
++      2,  2,  2,  2,  3,  3,  3,  3,  2,  2,  2,  2,  3,  3,  3,  3,
++      4,  4,  4,  4,  5,  5,  5,  5,  4,  4,  4,  4,  5,  5,  5,  5,
++      6,  6,  6,  6,  7,  7,  7,  7,  6,  6,  6,  6,  7,  7,  7,  7,
++      8,  8,  8,  8,  9,  9,  9,  9,  8,  8,  8,  8,  9,  9,  9,  9,
++     10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
++     12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
++     14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15,
++      0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,
++      2,  2,  2,  2,  3,  3,  3,  3,  2,  2,  2,  2,  3,  3,  3,  3,
++      4,  4,  4,  4,  5,  5,  5,  5,  4,  4,  4,  4,  5,  5,  5,  5,
++      6,  6,  6,  6,  7,  7,  7,  7,  6,  6,  6,  6,  7,  7,  7,  7,
++      8,  8,  8,  8,  9,  9,  9,  9,  8,  8,  8,  8,  9,  9,  9,  9,
++     10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
++     12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
++     14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15
++};
++
++// mapping from parity checks made by table hamm24par to error
++// results return by hamm24.
++// (0 = no error, 0x0100 = single bit error, 0x1000 = double error)
++
++
++static short hamm24err[64] =
++{
++    0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
++    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
++    0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
++    0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++};
++
++// mapping from parity checks made by table hamm24par to faulty bit
++// in the decoded 18 bit word.
++
++
++static int hamm24cor[64] =
++{
++    0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++    0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++    0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++    0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++    0x00000, 0x00000, 0x00000, 0x00001, 0x00000, 0x00002, 0x00004, 0x00008,
++    0x00000, 0x00010, 0x00020, 0x00040, 0x00080, 0x00100, 0x00200, 0x00400,
++    0x00000, 0x00800, 0x01000, 0x02000, 0x04000, 0x08000, 0x10000, 0x20000,
++    0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++};
++
++
++int hamm8(u8 *p, int *err)
++{
++    int a = hammtab[p[0]];
++    *err += a;
++    return a & 15;
++}
++
++
++int hamm16(u8 *p, int *err)
++{
++    int a = hammtab[p[0]];
++    int b = hammtab[p[1]];
++    *err += a;
++    *err += b;
++    return (a & 15) | (b & 15) * 16;
++}
++
++
++int hamm24(u8 *p, int *err)
++{
++    int e = hamm24par[0][p[0]] ^ hamm24par[1][p[1]] ^ hamm24par[2][p[2]];
++    int x = hamm24val[p[0]] + p[1] % 128 * 16 + p[2] % 128 * 2048;
++    *err += hamm24err[e];
++    return x ^ hamm24cor[e];
++}
++
++
++int chk_parity(u8 *p, int n)
++{
++    int err;
++    for (err = 0; n--; p++)
++      if (hamm24par[0][*p] & 32)
++          *p &= 0x7f;
++      else
++          *p = BAD_CHAR, err++;
++    return err;
++}
+diff -r af23d23c278b util/alevt/hamm.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/hamm.h        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,7 @@
++#ifndef HAMM_H
++#define HAMM_H
++int hamm8(u8 *p, int *err);
++int hamm16(u8 *p, int *err);
++int hamm24(u8 *p, int *err);
++int chk_parity(u8 *p, int n);
++#endif
+diff -r af23d23c278b util/alevt/help.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/help.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,83 @@
++#include "vt.h"
++#include "misc.h"
++
++#define VFILL "     "
++#define HELP_HEADER                                                   \
++"........\6AleVT Online Help System       ",                          \
++"  \22`p0`0    p `0pppp                    ",                         \
++"\4\35\22\177 \177j5`p  \177 j5 j5        \7   Version \34",          \
++"\4\35\22\177,\177j5\177.! +t>! j5        \7"VFILL VERSION" \34",     \
++"  \22# #\42!\42#   \42   \42!                     ",
++#define FLOF_DATA                                                     \
++      1, { {0x100,ANY_SUB}, {0x200,ANY_SUB}, {0x300,ANY_SUB},         \
++           {0x400,ANY_SUB}, {0x0ff,ANY_SUB}, {0x100,ANY_SUB} }
++
++
++struct vt_page help_pages[] =
++{
++    { 0x900, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt900.out"
++    }, FLOF_DATA },
++
++    { 0x901, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt901.out"
++    }, FLOF_DATA },
++
++    { 0x902, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt902.out"
++    }, FLOF_DATA },
++
++    { 0x903, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt903.out"
++    }, FLOF_DATA },
++
++    { 0x904, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt904.out"
++    }, FLOF_DATA },
++
++    { 0x905, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt905.out"
++    }, FLOF_DATA },
++
++    { 0x906, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt906.out"
++    }, FLOF_DATA },
++
++    { 0x907, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt907.out"
++    }, FLOF_DATA },
++
++    { 0x908, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt908.out"
++    }, FLOF_DATA },
++
++    { 0x909, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt909.out"
++    }, FLOF_DATA },
++
++    { 0x910, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt910.out"
++    }, FLOF_DATA },
++
++    { 0x911, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt911.out"
++    }, FLOF_DATA },
++
++    { 0x912, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt912.out"
++    }, FLOF_DATA },
++
++    { 0x913, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt913.out"
++    }, FLOF_DATA },
++
++    { 0x914, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt914.out"
++    }, FLOF_DATA },
++
++    { 0x915, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt915.out"
++    }, FLOF_DATA },
++};
++
++const int nr_help_pages = NELEM(help_pages);
+diff -r af23d23c278b util/alevt/help.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/help.h        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++#ifndef HELP_H
++#define HELP_H
++
++#include "vt.h"
++
++extern struct vt_page help_pages[];
++extern const int nr_help_pages;
++#endif
+diff -r af23d23c278b util/alevt/icon.xbm
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/icon.xbm      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,17 @@
++#define icon_width 58
++#define icon_height 20
++static unsigned char icon_bits[] = {
++  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff,
++  0xff, 0xff, 0xff, 0x03, 0x0f, 0x30, 0xfe, 0xff, 0xf8, 0x11, 0x00, 0x03,
++  0x0f, 0x30, 0xfe, 0xff, 0xf8, 0x11, 0x00, 0x03, 0xc5, 0x23, 0xaa, 0xaa,
++  0xa8, 0xf1, 0xf1, 0x03, 0xc6, 0x22, 0xfe, 0xd5, 0x58, 0xb1, 0xb1, 0x02,
++  0x45, 0x23, 0x06, 0xaa, 0xa8, 0x51, 0x51, 0x01, 0xc6, 0x22, 0x06, 0xd6,
++  0x58, 0xb1, 0xb1, 0x02, 0x45, 0x23, 0x62, 0xac, 0xa8, 0x51, 0x51, 0x01,
++  0xc6, 0x22, 0x62, 0xd4, 0x58, 0xb1, 0xb1, 0x02, 0x45, 0x23, 0x62, 0xac,
++  0xa8, 0x51, 0x51, 0x01, 0xc6, 0x23, 0x62, 0xd4, 0xf8, 0xb1, 0xb1, 0x02,
++  0x05, 0x20, 0x02, 0xae, 0x61, 0x58, 0x51, 0x01, 0x06, 0x20, 0x02, 0x56,
++  0x61, 0xa8, 0xb1, 0x02, 0xc5, 0x23, 0xe2, 0xab, 0x06, 0x56, 0x51, 0x01,
++  0x46, 0x22, 0xe2, 0x57, 0x05, 0xaa, 0xb1, 0x02, 0xc7, 0x23, 0x06, 0xfe,
++  0x9f, 0xff, 0xf1, 0x03, 0xc7, 0x23, 0x06, 0xfe, 0x9f, 0xff, 0xf1, 0x03,
++  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff,
++  0xff, 0xff, 0xff, 0x03, };
+diff -r af23d23c278b util/alevt/lang.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/lang.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,393 @@
++#include <string.h>
++#include <ctype.h>
++#include "misc.h"
++#include "vt.h"
++#include "lang.h"
++
++int latin1 = -1;
++
++
++static u8 lang_char[256];
++static u8 lang_chars[1+8+8][16] =
++{
++    { 0, 0x23,0x24,0x40,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x7b,0x7c,0x7d,0x7e },
++
++    // for latin-1 font
++    // English (100%)
++    { 0,  '£', '$', '@', '«', '½', '»', '¬', '#', '­', '¼', '¦', '¾', '÷' },
++    // German (100%)
++    { 0,  '#', '$', '§', 'Ä', 'Ö', 'Ü', '^', '_', '°', 'ä', 'ö', 'ü', 'ß' },
++    // Swedish/Finnish/Hungarian (100%)
++    { 0,  '#', '¤', 'É', 'Ä', 'Ö', 'Å', 'Ü', '_', 'é', 'ä', 'ö', 'å', 'ü' },
++    // Italian (100%)
++    { 0,  '£', '$', 'é', '°', 'ç', '»', '¬', '#', 'ù', 'à', 'ò', 'è', 'ì' },
++    // French (100%)
++    { 0,  'é', 'ï', 'à', 'ë', 'ê', 'ù', 'î', '#', 'è', 'â', 'ô', 'û', 'ç' },
++    // Portuguese/Spanish (100%)
++    { 0,  'ç', '$', '¡', 'á', 'é', 'í', 'ó', 'ú', '¿', 'ü', 'ñ', 'è', 'à' },
++    // Czech/Slovak (60%)
++    { 0,  '#', 'u', 'c', 't', 'z', 'ý', 'í', 'r', 'é', 'á', 'e', 'ú', 's' },
++    // reserved (English mapping)
++    { 0,  '£', '$', '@', '«', '½', '»', '¬', '#', '­', '¼', '¦', '¾', '÷' },
++
++    // for latin-2 font
++    // Polish (100%)
++    { 0,  '#', 'ñ', '±', '¯', '¦', '£', 'æ', 'ó', 'ê', '¿', '¶', '³', '¼' },
++    // German (100%)
++    { 0,  '#', '$', '§', 'Ä', 'Ö', 'Ü', '^', '_', '°', 'ä', 'ö', 'ü', 'ß' },
++    // Estonian (100%)
++    { 0,  '#', 'õ', '©', 'Ä', 'Ö', '®', 'Ü', 'Õ', '¹', 'ä', 'ö', '¾', 'ü' },
++    // Lettish/Lithuanian (90%)
++    { 0,  '#', '$', '©', 'ë', 'ê', '®', 'è', 'ü', '¹', '±', 'u', '¾', 'i' },
++    // French (90%)
++    { 0,  'é', 'i', 'a', 'ë', 'ì', 'u', 'î', '#', 'e', 'â', 'ô', 'u', 'ç' },
++    // Serbian/Croation/Slovenian (100%)
++    { 0,  '#', 'Ë', 'È', 'Æ', '®', 'Ð', '©', 'ë', 'è', 'æ', '®', 'ð', '¹' },
++    // Czech/Slovak (100%)
++    { 0,  '#', 'ù', 'è', '»', '¾', 'ý', 'í', 'ø', 'é', 'á', 'ì', 'ú', '¹' },
++    // Rumanian (95%)
++    { 0,  '#', '¢', 'Þ', 'Â', 'ª', 'Ã', 'Î', 'i', 'þ', 'â', 'º', 'ã', 'î' },
++};
++
++/* Yankable latin charset :-)
++     !"#$%&'()*+,-./0123456789:;<=>?
++    @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
++    `abcdefghijklmnopqrstuvwxyz{|}~
++     ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿
++    ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
++    àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
++*/
++
++
++static struct mark { u8 *g0, *latin1, *latin2; } marks[16] =
++{
++    /* none */                { "#",
++                        "¤",
++                        "$"                                   },
++    /* grave - ` */   { " aeiouAEIOU",
++                        "`àèìòùÀÈÌÒÙ",
++                        "`aeiouAEIOU"                         },
++    /* acute - ' */   { " aceilnorsuyzACEILNORSUYZ",
++                        "'ácéílnórsúýzÁCÉÍLNÓRSÚÝZ",
++                        "'áæéíåñóà¶úý¼ÁÆÉÍÅÑÓÀ¦Úݬ"           },
++    /* cirumflex - ^ */       { " aeiouAEIOU",
++                        "^âêîôûÂÊÎÔÛ",
++                        "^âeîôuÂEÎÔU"                         },
++    /* tilde - ~ */   { " anoANO",
++                        "~ãñõÃÑÕ",
++                        "~anoANO"                             },
++    /* ??? - ¯ */     { "",
++                        "",
++                        ""                                    },
++    /* breve - u */   { "aA",
++                        "aA",
++                        "ãÃ"                                  },
++    /* abovedot - · */        { "zZ",
++                        "zZ",
++                        "¿¯"                                  },
++    /* diaeresis ¨ */ { "aeiouAEIOU",
++                        "äëïöüÄËÏÖÜ",
++                        "äëiöüÄËIÖÜ"                          },
++    /* ??? - . */     { "",
++                        "",
++                        ""                                    },
++    /* ringabove - ° */       { " auAU",
++                        "°åuÅU",
++                        "°aùAÙ"                               },
++    /* cedilla - ¸ */ { "cstCST",
++                        "çstÇST",
++                        "çºþǪÞ"                              },
++    /* ??? - _ */     { " ",
++                        "_",
++                        "_"                                   },
++    /* dbl acute - " */       { " ouOU",
++                        "\"ouOU",
++                        "\"õûÕÛ"                              },
++    /* ogonek - \, */ { "aeAE",
++                        "aeAE",
++                        "±ê¡Ê"                                },
++    /* caron - v */   { "cdelnrstzCDELNRSTZ",
++                        "cdelnrstzCDELNRSTZ",
++                        "èïìµòø¹»¾ÈÏÌ¥ÒØ©«®"                  },
++};
++
++
++static u8 g2map_latin1[] =
++   /*0123456789abcdef*/
++    " ¡¢£$¥#§¤'\"«    "
++    "°±²³×µ¶·÷'\"»¼½¾¿"
++    " `´^~   ¨.°¸_\"  "
++    "_¹®©            "
++    " ÆЪH ILLØ ºÞTNn"
++    "Kædðhiillø ßþtn\x7f";
++
++
++static u8 g2map_latin2[] =
++   /*0123456789abcdef*/
++    " icL$Y#§¤'\"<    "
++    "°   ×u  ÷'\">    "
++    " `´^~ ¢ÿ¨.°¸_½²·"
++    "- RC            "
++    "  ÐaH iL£O opTNn"
++    "K ðdhiil³o ßptn\x7f";
++
++
++void lang_init(void)
++{
++    int i;
++
++    memset(lang_char, 0, sizeof(lang_char));
++    for (i = 1; i <= 13; i++)
++      lang_char[lang_chars[0][i]] = i;
++}
++
++
++void conv2latin(u8 *p, int n, int lang)
++{
++    int c, gfx = 0, lat=0;
++
++  if ((latin1 == KOI8) && lang==12) { /* russian */
++    while (n--) {
++      c=*p;
++
++      if(c==0x1b) lat = !lat; /* ESC switches languages inside page */
++
++       if ( is_koi(c)) {
++         if (not gfx || (c & 0xa0) != 0x20) {
++            if(!lat) conv2koi8(p);
++         }
++       }
++      else if ((c & 0xe8) == 0)
++          gfx = c & 0x10;
++      p++;
++   }
++ }
++else if ((latin1 == GREEK) && lang==15) { /* Hellas */
++    while (n--) {
++      c=*p;
++
++      if(c==0x1b) lat = !lat; /* ESC switches languages inside page */
++
++       if ( is_greek(c)) {
++         if (not gfx || (c & 0xa0) != 0x20) {
++            if(!lat) conv2greek(p);
++         }
++       }
++      else if ((c & 0xe8) == 0)
++          gfx = c & 0x10;
++      p++;
++   }
++ }
++
++ else {
++    while (n--)
++    {
++      if (lang_char[c = *p])
++      {
++          if (not gfx || (c & 0xa0) != 0x20) 
++              *p = lang_chars[lang + 1][lang_char[c]];
++      }
++      else if ((c & 0xe8) == 0)
++          gfx = c & 0x10;
++      p++;
++    }
++  }
++}
++
++
++/* check for Greek chars - needs locale iso8859-7 set */
++int is_greek(int c)
++{
++  if( isalpha(c | 0x80)) return 1;
++  return 0;
++}
++
++
++/* check for russian chars - needs locale KOI8-R set */
++int is_koi(int c)
++{
++  if( isalpha(c | 0x80)) return 1;
++  if( c=='&' ) return 1;
++  return 0;
++}
++
++
++/* teletext to koi8-r conversion */
++void conv2koi8(u8 *p)
++{
++    u8 c;
++    static u8 l2koi[]={
++      0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
++      0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3,
++      0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xFF, 0xFA, 0xFB, 0xFC, 0xFD,
++      0xFE, 0xF9, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
++      0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1,
++      0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB,
++      0xDC, 0xDD, 0xDE, 0xDF
++    };
++
++      c= *p;
++      if ( (c >= 0x40) && (c <= 0x7f)) *p=l2koi[(c & 0x7f) - 0x40];
++      if (c=='&') *p='Ù';
++}
++
++
++/* teletext to iso8859-7 conversion */
++void conv2greek(u8 *p)
++{
++    u8 c;
++   static u8 l2greek[]={
++/* 1 @ 0x40->ú*/0xc0,
++/* 2 A 0x41->Á*/0xc1,
++/* 3 B 0x42->Â*/0xc2,
++/* 4 C 0x43->Ã*/0xc3,
++/* 5 D 0x44->Ä*/0xc4,
++/* 6 E 0x45->Å*/0xc5,
++/* 7 F 0x46->Æ*/0xc6,
++/* 8 G 0x47->Ç*/0xc7,
++/* 9 H 0x48->È*/0xc8,
++/*10 I 0x49->É*/0xc9,
++/*11 J 0x4a->Ê*/0xca,
++/*12 K 0x4b->Ë*/0xcb,
++/*13 L 0x4c->Ì*/0xcc,
++/*14 M 0x4d->Í*/0xcd,
++/*15 N 0x4e->Î*/0xce,
++/*16 O 0x4f->Ï*/0xcf,
++/*17 P 0x50->Ð*/0xd0,
++/*18 Q 0x51->Ñ*/0xd1,
++/*19 R 0x52->?*/0x52,
++/*20 S 0x53->Ó*/0xd3,
++/*21 T 0x54->Ô*/0xd4,
++/*22 U 0x55->Õ*/0xd5,
++/*23 V 0x56->Ö*/0xd6,
++/*24 W 0x57->÷*/0xd7,
++/*25 X 0x58->Ø*/0xd8,
++/*26 Y 0x59->Ù*/0xd9,
++/*27 Z 0x5a->?*/0x5a,
++/*28 [ 0x5b->?*/0x5b,
++/*!29 \ 0x5c->Ü*/0xdc,
++/*!30 ] 0x5d->Ý*/0xdd,
++/*!31 ^ 0x5e->Þ*/0xde,
++/*!32 _ 0x5f->ß*/0xdf,
++/*33 ` 0x60->?*/0x60,
++/*!34 a 0x61->á*/0xe1,
++/*!35 b 0x62->â*/0xe2,
++/*!36 c 0x63->ã*/0xe3,
++/*!37 d 0x64->ä*/0xe4,
++/*!38 e 0x65->å*/0xe5,
++/*!39 f 0x66->æ*/0xe6,
++/*!40 g 0x67->ç*/0xe7,
++/*!41 h 0x68->è*/0xe8,
++/*!42 i 0x69->é*/0xe9,
++/*!43 j 0x6a->ê*/0xea,
++/*!44 k 0x6b->ë*/0xeb,
++/*!45 l 0x6c->ì*/0xec,
++/*!46 m 0x6d->í*/0xed,
++/*!47 n 0x6e->î*/0xee,
++/*!48 o 0x6f->ï*/0xef,
++/*!49 p 0x70->ð*/0xf0,
++/*!50 q 0x71->ñ*/0xf1,
++/*!51 r 0x72->ò*/0xf2,
++/*!52 s 0x73->ó*/0xf3,
++/*!53 t 0x74->ô*/0xf4,
++/*!54 u 0x75->õ*/0xf5,
++/*!55 v 0x76->ö*/0xf6,
++/*!56 w 0x77->÷*/0xf7,
++/*!57 x 0x78->ø*/0xf8,
++/*!58 y 0x79->ù*/0xf9,
++/*59 z 0x7a->ú(ìå ôüíï)*/0xc0,
++/*60 { 0x7b->?*/0x7b,
++/*!61 | 0x7c->ü*/0xfc,
++/*!62 } 0x7d->ý*/0xfd,
++/*!63 ~ 0x7e->þ*/0xfe,
++/*64   0x7f->?*/0x7f
++  };
++      c= *p;
++      if ( (c >= 0x40) && (c <= 0x7f)) *p=l2greek[(c & 0x7f) - 0x40];
++}
++
++
++void init_enhance(struct enhance *eh)
++{
++    eh->next_des = 0;
++}
++
++
++void add_enhance(struct enhance *eh, int dcode, u32 *t)
++{
++
++    if (dcode == eh->next_des)
++    {
++      memcpy(eh->trip + dcode * 13, t, 13 * sizeof(*t));
++      eh->next_des++;
++    }
++    else
++      eh->next_des = -1;
++}
++
++
++void enhance(struct enhance *eh, struct vt_page *vtp)
++{
++    int row = 0;
++    u32 *p, *e;
++
++    if (eh->next_des < 1)
++      return;
++
++    for (p = eh->trip, e = p + eh->next_des * 13; p < e; p++)
++      if (*p % 2048 != 2047)
++      {
++          int adr = *p % 64;
++          int mode = *p / 64 % 32;
++          int data = *p / 2048 % 128;
++
++          if (adr < 40)
++          {
++              // col functions
++              switch (mode)
++              {
++                  case 15: // char from G2 set
++                      if (adr < W && row < H)
++                          if (latin1==LATIN1)
++                              vtp->data[row][adr] = g2map_latin1[data-32];
++                          else if (latin1==LATIN2)
++                              vtp->data[row][adr] = g2map_latin2[data-32];
++                      break;
++                  case 16 ... 31: // char from G0 set with diacritical mark
++                      if (adr < W && row < H)
++                      {
++                          struct mark *mark = marks + (mode - 16);
++                          u8 *x;
++
++                          if (x = strchr(mark->g0, data))
++                              if (latin1==LATIN1)
++                                  data = mark->latin1[x - mark->g0];
++                              else if (latin1==LATIN2)
++                                  data = mark->latin2[x - mark->g0];
++                          vtp->data[row][adr] = data;
++                      }
++                      break;
++              }
++          }
++          else
++          {
++              // row functions
++              if ((adr -= 40) == 0)
++                  adr = 24;
++              
++              switch (mode)
++              {
++                  case 1: // full row color
++                      row = adr;
++                      break;
++                  case 4: // set active position
++                      row = adr;
++                      break;
++                  case 7: // address row 0 (+ full row color)
++                      if (adr == 23)
++                          row = 0;
++                      break;
++              }
++          }
++      }
++}
+diff -r af23d23c278b util/alevt/lang.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/lang.h        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,28 @@
++#ifndef LANG_H
++#define LANG_H
++
++#include "misc.h"
++#include "vt.h"
++
++extern int latin1;
++
++#define LATIN1 1
++#define LATIN2 2
++#define KOI8 3
++#define GREEK 4
++
++
++struct enhance
++{
++    int next_des; // next expected designation code
++    u32 trip[13*16]; // tripplets
++};
++
++void lang_init(void);
++void conv2latin(u8 *p, int n, int lang);
++void conv2koi8(u8 *p);
++void conv2greek(u8 *p);
++void init_enhance(struct enhance *eh);
++void add_enhance(struct enhance *eh, int dcode, u32 *data);
++void enhance(struct enhance *eh, struct vt_page *vtp);
++#endif
+diff -r af23d23c278b util/alevt/main.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/main.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,221 @@
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <locale.h>
++#include "vt.h"
++#include "misc.h"
++#include "fdset.h"
++#include "xio.h"
++#include "vbi.h"
++#include "lang.h"
++#include "cache.h"
++#include "ui.h"
++
++static char *geometry;
++static char *dpy_name;
++static char *vbi_name = NULL;
++static struct xio *xio;
++static struct vbi *vbi;
++static int erc = 1;
++char *outfile = "";
++static char *channel;
++static int ttpid = -1;
++u_int16_t sid = 0;
++
++
++static void usage(FILE *fp, int exitval)
++{
++    fprintf(fp, "\nUsage: %s [options]\n", prgname);
++    fprintf(fp,
++          "\n"
++          "  Valid options:\t\tDefault:\n"
++          "    -c <channel name>\t\t(none;dvb only)\n"
++          "    -ch -child <ppp.ss>\t\t(none)\n"
++          "    -cs -charset\t\tlatin-1\n"
++          "    <latin-1/2/koi8-r/iso8859-7>\n"
++          "    -h -help\n"
++          "    -o <outfile>\t\t(none;dvb only)\n"
++          "    -p -parent <ppp.ss>\t\t900\n"
++          "    -s -sid <sid>\t\t(none;dvb only)\n"
++          "    -t -ttpid <ttpid>\t\t(none;dvb only)\n"
++          "    -v -vbi <vbidev>\t\t/dev/vbi\n"
++              "                 \t\t/dev/vbi0\n"
++              "                 \t\t/dev/video0\n"
++              "                 \t\t/dev/dvb/adapter0/demux0\n"
++          "\n"
++          "  ppp.ss stands for a page number and an\n"
++          "  optional subpage number (Example: 123.4).\n"
++          "\n"
++          "  The -child option requires a parent\n"
++          "  window. So it must be preceded by\n"
++          "  a parent or another child window.\n"
++      );
++    exit(exitval);
++}
++
++
++static int arg_pgno(char *p, int *subno)
++{
++    char *end;
++    int pgno;
++
++    *subno = ANY_SUB;
++    if (*p)
++    {
++      pgno = strtol(p, &end, 16);
++      if ((*end == ':' || *end == '/' || *end == '.') && end[1])
++          *subno = strtol(end + 1, &end, 16);
++      if (*end == 0)
++          if (pgno >= 0x100 && pgno <= 0x999)
++              if (*subno == ANY_SUB || (*subno >= 0x00 && *subno <= 0x3f7f))
++                  return pgno;
++    }
++    fatal("%s: invalid page number", p);
++}
++
++
++static struct vtwin * start(int argc, char **argv, struct vtwin *parent,
++      int pgno, int subno)
++{
++    static int valid_vbi_name = 1;
++
++    if (!valid_vbi_name)
++      return parent;
++
++    if (vbi == 0)
++      vbi = vbi_open(vbi_name, cache_open(), channel, outfile, sid, ttpid);
++    if (vbi == 0)
++    {
++      if (vbi_name)
++          error("cannot open device: %s", vbi_name);
++      valid_vbi_name = 0;
++      vbi = open_null_vbi(cache_open());
++    }
++    if (vbi->cache)
++      vbi->cache->op->mode(vbi->cache, CACHE_MODE_ERC, erc);
++
++    if (xio == 0)
++      xio = xio_open_dpy(dpy_name, argc, argv);
++    if (xio == 0)
++      fatal("cannot open display");
++
++    parent = vtwin_new(xio, vbi, geometry, parent, pgno, subno);
++    if (parent == 0)
++      fatal("cannot create window");
++
++    if (!valid_vbi_name)
++    {
++      if (vbi_name)
++          send_errmsg(vbi, "cannot open device: %s", vbi_name);
++      else
++          send_errmsg(vbi, "cannot open any device", vbi_name);
++    }
++
++    return parent;
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++    static struct { char *nam, *altnam; int arg; } opts[] = {
++      { "-channel", "-c", 1 },
++      { "-child", "-ch", 1 },
++      { "-charset", "-cs", 1 },
++      { "-help", "-h", 0 },
++      { "-outfile", "-o", 1 },
++      { "-parent", "-p", 1 },
++      { "-sid", "-s", 1 },
++      { "-ttpid", "-t", 1 },
++      { "-vbi", "-v", 1 },
++    };
++    int i;
++    if (*ind >= argc)
++      return 0;
++    *arg = argv[(*ind)++];
++    for (i = 0; i < NELEM(opts); ++i)
++      if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++      {
++          if (opts[i].arg)
++              if (*ind < argc)
++                  *arg = argv[(*ind)++];
++              else
++                  fatal("option %s requires an argument", *arg);
++          return i+1;
++      }
++    if (**arg == '-')
++    {
++      fatal("%s: invalid option", *arg);
++      usage(stderr, 1);
++    }
++    return -1;
++}
++
++
++int main(int argc, char **argv)
++{
++    struct vtwin *parent = 0;
++    int pgno, subno;
++    int opt, ind;
++    char *arg;
++    sid = 0;
++
++    setprgname(argv[0]);
++    fdset_init(fds);
++
++    ind = 1;
++    while (opt = option(argc, argv, &ind, &arg))
++      switch (opt)
++      {
++
++          case 1: // channel
++              channel = arg;
++              break;
++          case 2: // child
++              if (parent == 0)
++                  fatal("-child requires a parent window");
++              pgno = arg_pgno(arg, &subno);
++              parent = start(argc, argv, parent, pgno, subno);
++              geometry = 0;
++              break;
++          case 3: // charset
++              if (streq(arg, "latin-1") || streq(arg, "1"))
++                  latin1 = LATIN1;
++              else if (streq(arg, "latin-2") || streq(arg, "2"))
++                  latin1 = LATIN2;
++              else if (streq(arg, "koi8-r") || streq(arg, "koi"))
++                  latin1 = KOI8;
++              else if (streq(arg, "iso8859-7") || streq(arg, "el"))
++                  latin1 = GREEK;
++              else
++                  fatal("bad charset (not latin-1/2/koi8-r/iso8859-7)");
++              break;
++          case 4: // help
++              usage(stdout, 0);
++              break;
++          case 5: // outfile
++              outfile = arg;
++              break;
++          case 6: // parent
++          case -1: // non-option arg
++              pgno = arg_pgno(arg, &subno);
++              parent = start(argc, argv, 0, pgno, subno);
++              geometry = 0;
++              break;
++          case 7: // sid
++              sid = strtoul(arg, NULL, 0);
++              break;
++          case 8: // ttpid
++              ttpid = strtoul(arg, NULL, 0);
++              break;
++          case 9: // vbi
++              vbi_name = arg;
++              vbi = 0;
++              parent = 0;
++              break;
++      }
++
++    if (parent == 0)
++    start(argc, argv, 0, 0x900, ANY_SUB);
++    xio_event_loop();
++    exit(0);
++}
+diff -r af23d23c278b util/alevt/misc.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/misc.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++#include <stdio.h>
++#include <stdarg.h>
++#include "misc.h"
++
++char *prgname = 0;
++
++extern char *strrchr(const char *, int);
++NORETURN(exit(int));
++
++
++void setprgname(char *str)
++{
++    char *x = strrchr(str, '/');
++    prgname = x ? x+1 : str;
++}
++
++
++static void print_prgname(void)
++{
++    if (prgname && *prgname)
++      fprintf(stderr, "%s: ", prgname);
++}
++
++
++void error(const char *str, ...)
++{
++    va_list args;
++    va_start(args, str);
++    print_prgname();
++    vfprintf(stderr, str, args);
++    fputc('\n', stderr);
++}
++
++
++void ioerror(const char *str)
++{
++    print_prgname();
++    perror(str);
++}
++
++
++void fatal(const char *str, ...)
++{
++    va_list args;
++    va_start(args, str);
++    print_prgname();
++    vfprintf(stderr, str, args);
++    fputc('\n', stderr);
++    exit(2);
++}
++
++
++void fatal_ioerror(const char *str)
++{
++    print_prgname();
++    perror(str);
++    exit(2);
++}
++
++
++void out_of_mem(int size)
++{
++    if (size > 0)
++      fatal("out of memory allocating %d bytes.", size);
++    fatal("out of memory.");
++}
+diff -r af23d23c278b util/alevt/misc.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/misc.h        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,32 @@
++#ifndef MISC_H
++#define MISC_H
++#define PTR (void *)
++#define NELEM(x) ((int)(sizeof(x)/sizeof(*(x))))
++#define NORETURN(x) void x __attribute__((__noreturn__))
++#define DEFINE(x) typeof(x) x
++#define OFFSET_OF(type, elem) ((u8 *)&((type *)0)->elem - (u8 *)0)
++#define BASE_OF(type, elem, p) ((type *)((u8 *)(p) - OFFSET_OF(type, elem)))
++
++#define not !
++#define streq(a, b) (strcmp((a), (b)) == 0)
++#define min(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a < _b ? _a : _b; })
++#define max(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a > _b ? _a : _b; })
++#define bound(a,b,c) ({ typeof(a) _a = a; typeof(b) _b = b; typeof(c) _c = c; \
++      _b < _a ? _a : _b > _c ? _c : _b; })
++
++typedef unsigned char u8;
++typedef unsigned short u16;
++typedef unsigned int u32;
++typedef signed char s8;
++typedef signed short s16;
++typedef signed int s32;
++
++extern char *prgname;
++void setprgname(char *argv_0);
++
++NORETURN(fatal(const char *str, ...));
++NORETURN(fatal_ioerror(const char *str));
++NORETURN(out_of_mem(int size));
++void error(const char *str, ...);
++void ioerror(const char *str);
++#endif
+diff -r af23d23c278b util/alevt/os.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/os.h  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,7 @@
++#ifndef OS_H
++#define OS_H
++#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBsd__) \
++      || defined(__bsdi__)
++#define BSD
++#endif
++#endif
+diff -r af23d23c278b util/alevt/search.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/search.c      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,127 @@
++#include <sys/types.h> // for freebsd
++#include <stdlib.h>
++#include "vt.h"
++#include "misc.h"
++#include "cache.h"
++#include "search.h"
++
++
++static void convert(u8 *p, u8 *buf, int *line)
++{
++    int x, y, c, ch, gfx, hid = 0;
++
++    for (y = 1, p += 40; y < 25; ++y)
++    {
++      if (not hid)
++      {
++          gfx = 0;
++          for (x = 0; x < 40; ++x)
++          {
++              c = ' ';
++              switch (ch = *p++)
++              {
++                  case 0x00 ... 0x07:
++                      gfx = 0;
++                      break;
++                  case 0x10 ... 0x17:
++                      gfx = 1;
++                      break;
++                  case 0x0c:
++                      hid = 1;
++                      break;
++                  case 0x7f:
++                      c = '*';
++                      break;
++                  case 0x20 ... 0x7e:
++                      if (gfx && ch != ' ' && (ch & 0xa0) == 0x20)
++                          ch = '#';
++                  case 0xa0 ... 0xff:
++                      c= ch;
++              }
++              *buf++ = c;
++          }
++          *buf++ = '\n';
++          *line++ = y;
++      }
++      else
++      {
++          p += 40;
++          hid = 0;
++      }
++    }
++    *line = y;
++    *buf = 0;
++}
++
++
++static int search_pg(struct search *s, struct vt_page *vtp)
++{
++    regmatch_t m[1];
++    u8 buf[H *(W+1) + 1];
++    int line[H];
++
++    convert(PTR vtp->data, buf, line);
++    if (regexec(s->pattern, buf, 1, m, 0) == 0)
++    {
++      s->len = 0;
++      if (m->rm_so >= 0)
++      {
++          s->y = line[m->rm_so / (W+1)];
++          s->x = m->rm_so % (W+1);
++          s->len = m->rm_eo - m->rm_so;
++          if (s->x + s->len > 40)
++              s->len = 40 - s->x;
++      }
++      return 1;
++    }
++    return 0;
++}
++
++
++struct search * search_start(struct cache *ca, u8 *pattern)
++{
++    struct search *s;
++    int f = 0;
++
++    if (not(s = malloc(sizeof(*s))))
++      goto fail1;
++
++    if (pattern[0] == '!')
++      pattern++;
++    else
++      f = REG_ICASE;
++
++    if (regcomp(s->pattern, pattern, f | REG_NEWLINE) != 0)
++      goto fail2;
++
++    s->cache = ca;
++    return s;
++
++fail2:
++    free(s);
++fail1:
++    return 0;
++}
++
++
++void search_end(struct search *s)
++{
++    regfree(s->pattern);
++    free(s);
++}
++
++
++int search_next(struct search *s, int *pgno, int *subno, int dir)
++{
++    struct vt_page *vtp = 0;
++
++    if (s->cache)
++      vtp = s->cache->op->foreach_pg(s->cache, *pgno, *subno, dir,
++      search_pg, s);
++    if (vtp == 0)
++      return -1;
++
++    *pgno = vtp->pgno;
++    *subno = vtp->subno ?: ANY_SUB;
++    return 0;
++}
+diff -r af23d23c278b util/alevt/search.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/search.h      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++#ifndef SEARCH_H
++#define SEARCH_H
++
++#include <regex.h>
++
++struct search
++{
++    struct cache *cache;
++    regex_t pattern[1];
++    int x, y, len; // the position of the match
++};
++
++struct search *search_start(struct cache *ca, u8 *pattern);
++void search_end(struct search *s);
++int search_next(struct search *s, int *pgno, int *subno, int dir);
++#endif
+diff -r af23d23c278b util/alevt/ui.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ui.c  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,721 @@
++#include <stdio.h>
++#include <unistd.h>
++#include <stdlib.h>
++#include <string.h>
++#include <fcntl.h>
++#include <ctype.h>
++#include <stdarg.h>
++#include "vt.h"
++#include "misc.h"
++#include "xio.h"
++#include "vbi.h"
++#include "fdset.h"
++#include "search.h"
++#include "export.h"
++#include "ui.h"
++
++static void vtwin_event(struct vtwin *w, struct vt_event *ev);
++static void msg(struct vtwin *w, u8 *str, ...);
++static void err(struct vtwin *w, u8 *str, ...);
++
++#define hist(w,o) ((w)->hist + (((w)->hist_top + (o)) & (N_HISTORY-1)))
++
++
++static int inc_hex(int i, int bcd_mode)
++{
++    i++;
++    if (bcd_mode)
++    {
++      if ((i & 0x000f) > 0x0009)
++          i = (i + 0x0010) & 0x0ff0;
++      if ((i & 0x00f0) > 0x090)
++          i = (i + 0x0100) & 0x0f00;
++      if ((i & 0x0f00) > 0x0900)
++          i = (i + 0x1000) & 0xf000;
++    }
++    return i;
++}
++
++
++static int dec_hex(int i, int bcd_mode)
++{
++    i--;
++    if (bcd_mode)
++    {
++      if ((i & 0x000f) > 0x0009)
++          i = (i & 0xfff0) + 0x0009;
++      if ((i & 0x00f0) > 0x0090)
++          i = (i & 0xff00) + 0x0099;
++      if ((i & 0x0f00) > 0x0900)
++          i = (i & 0xf000) + 0x0999;
++    }
++    return i;
++}
++
++
++static void set_title(struct vtwin *w)
++{
++    char buf[32], buf2[32];
++
++    if (w->subno == ANY_SUB)
++      sprintf(buf, "%x", w->pgno);
++    else
++      sprintf(buf, "%x/%x", w->pgno, w->subno);
++    if (w->searching)
++      sprintf(buf2, "(%s)", buf);
++    else
++      sprintf(buf2, "%s", buf);
++    xio_title(w->xw, buf2);
++}
++
++
++static void query_page(struct vtwin *w, int pgno, int subno)
++{
++    w->pgno = pgno;
++    w->subno = subno;
++    w->searching = 1;
++    w->hold = 0; //subno != ANY_SUB;
++    xio_set_concealed(w->xw, w->revealed = 0);
++
++    if (hist(w, 0)->pgno != pgno ||
++      (hist(w,0)->subno == ANY_SUB && subno != ANY_SUB))
++      w->hist_top++;
++    hist(w, 0)->pgno = pgno;
++    hist(w, 0)->subno = subno;
++    hist(w, 1)->pgno = 0;     // end marker
++
++    xio_cancel_selection(w->xw);
++    if (vbi_query_page(w->vbi, pgno, subno) == 0)
++    {
++      w->vtp = 0;
++    }
++    set_title(w);
++}
++
++
++static void new_or_query(struct vtwin *w, int pgno, int subno, int new_win)
++{
++    if (new_win)
++    {
++      if (w->child)
++          query_page(w->child, pgno, subno);
++      else
++          vtwin_new(w->xw->xio, w->vbi, 0, w, pgno, subno);
++    }
++    else
++      query_page(w, pgno, subno);
++}
++
++static int _next_pgno(int *arg, struct vt_page *vtp)
++{
++    int pgno = vtp->pgno;
++
++    if (arg[0] == pgno) // want different page
++      return 0;
++    if (arg[1])               // and not a hex page
++      for (; pgno; pgno >>=4)
++          if ((pgno & 15) > 9)
++              return 0;
++    return 1;
++}
++
++
++static int _next_subno(int *arg, struct vt_page *vtp)
++{
++    return vtp->pgno == arg[0];       // only subpages of this page
++}
++
++
++static void do_next_pgno(struct vtwin *w, int dir, int bcd_mode, int subs,
++    int new_win)
++{
++    struct vt_page *vtp;
++    struct vtwin *cw = (new_win && w->child) ? w->child : w;
++    int pgno = cw->pgno;
++    int subno = cw->subno;
++
++    if (w->vbi->cache)
++    {
++      int arg[2];
++      arg[0] = pgno;
++      arg[1] = bcd_mode;
++        if (vtp = w->vbi->cache->op->foreach_pg(w->vbi->cache,
++                  pgno, subno, dir, subs ? _next_subno:_next_pgno, &arg))
++      {
++          new_or_query(w, vtp->pgno, subs ? vtp->subno : ANY_SUB, new_win);
++          return;
++      }
++    }
++    err(w, "No page.");
++}
++
++#define notdigit(x) (not isdigit((x)))
++
++
++static int chk_screen_fromto(u8 *p, int x, int *n1, int *n2)
++{
++    p += x;
++
++    if (x >= 0 && x+5 < 42)
++      if (notdigit(p[1]) || notdigit(p[0]))
++          if (isdigit(p[2]))
++              if (p[3] == '/' || p[3] == ':')
++                  if (isdigit(p[4]))
++                      if (notdigit(p[5]) || notdigit(p[6]))   /* p[6] is save here */
++                      {
++                          *n1 = p[2] % 16;
++                          if (isdigit(p[1]))
++                              *n1 += p[1] % 16 * 16;
++                          *n2 = p[4] % 16;
++                          if (isdigit(p[5]))
++                              *n2 = *n2 * 16 + p[5] % 16;
++                          return 1;
++                      }
++    return 0;
++}
++
++
++static int chk_screen_pgno(u8 *p, int x, int *pgno, int *subno)
++{
++    p += x;
++
++    if (x >= 0 && x+4 < 42)
++      if (notdigit(p[0]) && notdigit(p[4]))
++          if (isdigit(p[1]) && isdigit(p[2]) && isdigit(p[3]))
++          {
++              *pgno = p[1] % 16 * 256 + p[2] % 16 * 16 + p[3] % 16;
++              if (*pgno >= 0x100 && *pgno <= 0x999)
++              {
++                  *subno = ANY_SUB;
++                  if (x+6 < 42)
++                      if (p[4] == '.' || p[4] == '/')
++                          if (isdigit(p[5]))
++                              if (notdigit(p[6]) || notdigit(p[7]))   /* p[7] is save here */
++                              {
++                                  *subno = p[5] % 16;
++                                  if (isdigit(p[6]))
++                                      *subno = *subno * 16 + p[6] % 16;
++                              }
++                  // hackhackhack:
++                  // pgno followed by start box gets subno 1
++                  if (x+4 < 42 && p[4] == 11)
++                      *subno = 1;
++                  return 1;
++              }
++          }
++    return 0;
++}
++
++
++static void do_screen_pgno(struct vtwin *w, int x, int y, int new_win)
++{
++    u8 buf[42];
++    int n1, n2, i;
++
++    if (x >= 0 && x < 40)
++    {
++      if (xio_get_line(w->xw, y, buf+1) == 0)
++      {
++          buf[0] = buf[41] = ' ';
++          x++;
++
++          for (i = -6; i < 35; i++)
++          {
++              if (w->vtp == 0 || w->vtp->subno != 0)
++                  if (chk_screen_fromto(buf, x+i, &n1, &n2))
++                  {
++                      // subno cycling works wrong with children.
++                      // so middle button cycles backwards...
++                      if (w->subno != ANY_SUB)
++                          n1 = w->subno;
++                      n1 = new_win ? dec_hex(n1, 1) : inc_hex(n1, 1);
++                      if (n1 < 1)
++                          n1 = n2;
++                      if (n1 > n2)
++                          n1 = 1;
++                      new_or_query(w, w->pgno, n1, 0);
++                      return;
++                  }
++              if (i >= -4)
++                  if (chk_screen_pgno(buf, x+i, &n1, &n2))
++                  {
++                      new_or_query(w, n1, n2, new_win);
++                      return;
++                  }
++          }
++      }
++    }
++    err(w, "No page.");
++}
++
++
++static void do_flof_pgno(struct vtwin *w, int button, int x, int new_win)
++{
++    struct vt_page *vtp = w->vtp;
++    int lk = 99, i, c;
++
++    if (vtp && vtp->flof)
++    {
++      switch (button)
++      {
++          case 1 ... 3:
++              for (i = 0; i <= x && i < 40; ++i)
++                  if ((c = vtp->data[24][i]) < 8)     // fg-color code
++                      lk = c;
++              lk = "x\0\1\2\3x\3x"[lk];               // color -> link#
++              break;
++          case KEY_F(1): lk = 0; break;
++          case KEY_F(2): lk = 1; break;
++          case KEY_F(3): lk = 2; break;
++          case KEY_F(4): lk = 3; break;
++          case KEY_F(5): lk = 5; break;
++      }
++      if (lk < 6 && (vtp->link[lk].pgno & 0xff) != 0xff)
++      {
++          new_or_query(w, vtp->link[lk].pgno, vtp->link[lk].subno, new_win);
++          return;
++      }
++    }
++    else
++    {
++      switch (button)
++      {
++          case 1 ... 3: lk = x / 8;   break;
++          case KEY_F(1): lk = 0;      break;
++          case KEY_F(2): lk = 1;      break;
++          case KEY_F(3): lk = 2;      break;
++          case KEY_F(4): lk = 3;      break;
++          case KEY_F(5): lk = 4;      break;
++      }
++      switch (lk)
++      {
++          case 0: new_or_query(w, 0x100, ANY_SUB, new_win);   return;
++          case 1: do_next_pgno(w, -1, 1, 0, new_win);         return;
++          case 2: new_or_query(w, 0x900, ANY_SUB, new_win);   return;
++          case 3: do_next_pgno(w, 1, 1, 0, new_win);          return;
++          case 4: new_or_query(w, 0x999, ANY_SUB, new_win);   return;
++      }
++    }
++    err(w, "No page.");
++}
++
++
++static void do_hist_pgno(struct vtwin *w)
++{
++    if (hist(w, -1)->pgno)
++    {
++      w->hist_top--;
++      query_page(w, hist(w, 0)->pgno, hist(w, 0)->subno);
++    }
++    else
++      err(w, "Empty history.");
++}
++
++
++static void put_head_line(struct vtwin *w, u8 *p)
++{
++    char buf[40];
++
++    if (p == 0)
++      xio_get_line(w->xw, 0, buf);
++    else
++      memcpy(buf + 8, p + 8, 32);
++
++    if (w->subno == ANY_SUB)
++      sprintf(buf, "\2%3x \5\xb7", w->pgno);
++    else
++      sprintf(buf, "\2S%02x \5\xb7", w->subno & 0xff);
++
++    if (w->searching)
++      buf[0] = 1;
++    if (w->hold)
++      buf[4] = 'H';
++    if (w->xw->concealed)
++      buf[6] = '*';
++    buf[7] = 7;
++
++    xio_put_line(w->xw, 0, buf);
++}
++
++
++static void put_menu_line(struct vtwin *w)
++{
++    if (w->status > 0)
++      xio_put_line(w->xw, 24, w->statusline);
++    else if (w->vtp && w->vtp->flof)
++      xio_put_line(w->xw, 24, w->vtp->data[24]);
++    else
++      xio_put_line(w->xw, 24, "\0   100     \4<<  \6Help  \4>>\0     999    ");
++}
++
++
++static void _msg(struct vtwin *w, u8 *str, va_list args)
++{
++    u8 buf[128];
++    int i;
++
++    i = vsprintf(buf, str, args);
++    if (i > W)
++    i = W;
++    memset(w->statusline, ' ', W);
++    memcpy(w->statusline + (W-i+1)/2, buf, i);
++    w->status = 6;
++    put_menu_line(w);
++}
++
++
++static void msg(struct vtwin *w, u8 *str, ...)
++{
++    va_list args;
++
++    va_start(args, str);
++    _msg(w, str, args);
++    va_end(args);
++}
++
++
++static void err(struct vtwin *w, u8 *str, ...)
++{
++    va_list args;
++
++    va_start(args, str);
++    _msg(w, str, args);
++    va_end(args);
++}
++
++
++static void next_search(struct vtwin *w, int rev)
++{
++    if (w->search)
++    {
++      int pgno = w->pgno;
++      int subno = w->subno;
++      int dir = rev ? -w->searchdir : w->searchdir;
++
++      if (search_next(w->search, &pgno, &subno, dir) == 0)
++      {
++          query_page(w, pgno, subno);
++          if (not w->searching && w->search->len)
++              xio_set_selection(w->xw, w->search->x, w->search->y,
++                          w->search->x + w->search->len - 1, w->search->y);
++          return;
++      }
++      else
++          err(w, "Pattern not found.");
++    }
++    else
++      err(w, "No search pattern.");
++}
++
++
++static void start_search(struct vtwin *w, u8 *string)
++{
++    if (not string)
++      return;
++
++    if (*string)
++    {
++      if (w->search)
++          search_end(w->search);
++      w->search = search_start(w->vbi->cache, string);
++      if (w->search == 0)
++      {
++          err(w, "Bad search pattern.");
++          return;
++      }
++    }
++    next_search(w, 0);
++}
++
++
++static void start_save2(struct vtwin *w, u8 *name)
++{
++    if (name && *name)
++      if (export(w->export, w->vtp, name))
++          err(w, export_errstr());
++
++    export_close(w->export);
++    w->export = 0;
++    put_menu_line(w);
++}
++
++
++struct vtwin * vtwin_new(struct xio *xio, struct vbi *vbi, char *geom,
++    struct vtwin *parent, int pgno, int subno)
++{
++    struct vtwin *w;
++
++    if (not(w = malloc(sizeof(*w))))
++      goto fail1;
++
++    if (not (w->xw = xio_open_win(xio, geom)))
++      goto fail2;
++    w->vbi = vbi;
++    w->vtp = 0;
++    w->search = 0;
++    w->export = 0;
++    w->parent = parent;
++    w->child = 0;
++    if (parent && parent->child)
++      fatal("internal error: parent already has a child != 0");
++    if (parent)
++      parent->child = w;
++
++    w->hist_top = 1;
++    hist(w,0)->pgno = 0;
++    hist(w,1)->pgno = 0;
++    w->status = 0;
++    xio_set_handler(w->xw, vtwin_event, w);
++    vbi_add_handler(w->vbi, vtwin_event, w);
++    query_page(w, pgno, subno);
++    return w;
++
++fail2:
++    free(w);
++fail1:
++    return 0;
++}
++
++
++static void vtwin_close(struct vtwin *w)
++{
++    if (w->parent)
++      w->parent->child = w->child;
++    if (w->child)
++      w->child->parent = w->parent;
++
++    if (w->search)
++      search_end(w->search);
++    if (w->export)
++      export_close(w->export);
++
++    vbi_del_handler(w->vbi, vtwin_event, w);
++    xio_close_win(w->xw, 1);
++    free(w);
++}
++
++
++static void vtwin_event(struct vtwin *w, struct vt_event *ev)
++{
++    struct xio_win *xw = w->xw;
++    int i;
++
++    switch (ev->type)
++    {
++      case EV_CLOSE:
++          vtwin_close(w);
++          break;
++
++      case EV_TIMER:
++          if (w->status > 0 && --w->status == 0)
++              put_menu_line(w);
++          break;
++
++      case EV_KEY:
++      {
++          switch (ev->i1)
++          {
++              case '0' ... '9':
++                  i = ev->i1 - '0';
++                  if (w->pgno >= 0x100)
++                  {
++                      if (i == 0)
++                          break;
++                      w->pgno = i;
++                  }
++                  else
++                  {
++                      w->pgno = w->pgno * 16 + i;
++                      if (w->pgno >= 0x100)
++                          query_page(w, w->pgno, ANY_SUB);
++                  }
++                  break;
++              case 'q':
++              case '\e':
++                  vtwin_close(w);
++                  break;
++              case 'h':
++                  query_page(w, 0x900, ANY_SUB);
++                  break;
++              case 'e':
++                  if (w->vbi->cache)
++                  {
++                      i = w->vbi->cache->op->mode(w->vbi->cache,
++                                                          CACHE_MODE_ERC, 0);
++                      w->vbi->cache->op->mode(w->vbi->cache,
++                                                          CACHE_MODE_ERC, !i);
++                      msg(w, "Error reduction %sabled.", i ? "dis" : "en");
++                  }
++                  break;
++              case 'o':
++                  if (vtwin_new(xw->xio, w->vbi, 0, 0, w->pgno, w->subno) == 0)
++                      err(w, "Unable to open new window.");
++                  break;
++              case KEY_RIGHT:
++                  do_next_pgno(w, 1, not ev->i2, 0, 0);
++                  break;
++              case KEY_LEFT:
++                  do_next_pgno(w, -1, not ev->i2, 0, 0);
++                  break;
++              case KEY_UP:
++                  do_next_pgno(w, -1, not ev->i2, 1, 0);
++                  break;
++              case KEY_DOWN:
++                  do_next_pgno(w, 1, not ev->i2, 1, 0);
++                  break;
++              case '\b':
++                  do_hist_pgno(w);
++                  break;
++              case ' ':
++                  w->hold = !w->hold;
++                  break;
++              case 'c':
++                  vbi_reset(w->vbi);
++                  break;
++              case 'i':
++                  if (w->vtp && w->vtp->flof &&
++                                       (w->vtp->link[5].pgno & 0xff) != 0xff)
++                      query_page(w, w->vtp->link[5].pgno,
++                                               w->vtp->link[5].subno);
++                  else
++                      query_page(w, 0x100, ANY_SUB);
++                  break;
++              case 'r':
++                  xio_set_concealed(xw, w->revealed = !w->revealed);
++                  break;
++              case KEY_F(1) ... KEY_F(5):
++                  do_flof_pgno(w, ev->i1, 0, ev->i2);
++                  break;
++              case 'n':
++                  next_search(w, 0);
++                  break;
++              case 'N':
++                  next_search(w, 1);
++                  break;
++              default:
++                  err(w, "Unused key.");
++                  break;
++          }
++          break;
++      }
++      case EV_RESET:
++      {
++          if (w->search)
++              search_end(w->search);
++          w->search = 0;
++
++          query_page(w, w->pgno, w->subno);
++          msg(w, "Cache cleared!");
++          break;
++      }
++      case EV_MOUSE:
++      {
++          if (ev->i1 == 3)
++              do_hist_pgno(w);
++          else if (ev->i1 == 5) // wheel mouse
++              do_next_pgno(w, 1, not ev->i2, 0, 0);
++          else if (ev->i1 == 4) // wheel mouse
++              do_next_pgno(w, -1, not ev->i2, 0, 0);
++          else if (ev->i1 == 7) // dual wheel mouse
++              do_next_pgno(w, 1, not ev->i2, 1, 0);
++          else if (ev->i1 == 6) // dual wheel mouse
++              do_next_pgno(w, -1, not ev->i2, 1, 0);
++          else if (ev->i4 == 24)
++              do_flof_pgno(w, ev->i1, ev->i3, ev->i1 == 2);
++          else if (ev->i4 == 0 && ev->i3 < 5)
++          {
++              if (ev->i1 == 1)
++                  w->hold = !w->hold;
++              else
++                  vtwin_new(xw->xio, w->vbi, 0, 0, w->pgno, w->subno);
++          }
++          else if (ev->i4 == 0 && ev->i3 < 8)
++          {
++              if (ev->i1 == 2 && w->child)
++                  w = w->child;
++              xio_set_concealed(w->xw, w->revealed = !w->revealed);
++          }
++          else
++              do_screen_pgno(w, ev->i3, ev->i4, ev->i1 == 2);
++          break;
++      }
++      case EV_PAGE:
++      {
++          struct vt_page *vtp = ev->p1;
++
++          if (0)
++              if (vtp->errors)
++                  printf("errors=%4d\n",vtp->errors);
++          if (w->searching || not(w->hold || ev->i1))
++              if (vtp->pgno == w->pgno)
++                  if (w->subno == ANY_SUB || vtp->subno == w->subno)
++              {
++                      w->searching = 0;
++                      w->vtp = vtp;
++                      put_head_line(w, vtp->data[0]);
++                      for (i = 1; i < 24; ++i)
++                          xio_put_line(w->xw, i, vtp->data[i]);
++                      put_menu_line(w);
++                      set_title(w);
++              }
++          break;
++      }
++      case EV_HEADER:
++      {
++          u8 *p = ev->p1;
++          int hdr_mag = ev->i1 / 256;
++          int flags = ev->i3;
++          int mag = w->pgno;
++          if (mag >= 0x10)
++              mag = mag >> 4;
++          if (mag >= 0x10)
++              mag = mag >> 4;
++          if (flags & PG_OUTOFSEQ)
++              p = 0;
++          else
++              if (~flags & PG_MAGSERIAL)
++                  if (mag != hdr_mag)
++                      p = 0;
++
++          put_head_line(w, p);
++          break;
++      }
++      case EV_XPACKET:
++      {
++#if 0 /* VPS data (seems to be unused in .de */
++          u8 *p = ev->p1;
++
++          if (ev->i1 == 8 && ev->i2 == 30 && p[0]/2 == 1)
++          {
++              int i;
++              int pil, cni, pty, misc;
++
++              for (i = 7; i < 20; ++i)
++                  p[i] = hamm8(p+i, &ev->i3);
++              if (ev->i3 & 0xf000)    /* uncorrectable errors */
++                  break;
++              cni = p[9] + p[15]/4*16 + p[16]%4*64 + p[10]%4*256
++                                      + p[16]/4*1024 + p[17]*4096;
++              pty = p[18] + p[19]*16;
++              pil = p[10]/4 + p[11]*4 + p[12]*64 + p[13]*1024
++                                      + p[14]*16384 + p[15]%4*262144;
++              misc = p[7] + p[8]*16;
++              err(w, "%02x %04x %05x %02x: %.20s", misc, cni, pil, pty, p+20);
++          }
++#endif
++          break;
++      }
++      case EV_ERR:
++      {
++          char *errmsg = ev->p1;
++          if (errmsg != NULL && *errmsg != '\0')
++          {
++              err(w, errmsg);
++              w->status = 30;
++              ev->p1 = NULL;
++              free(errmsg);
++          }
++          break;
++      }
++    }
++}
+diff -r af23d23c278b util/alevt/ui.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ui.h  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,35 @@
++#ifndef UI_H
++#define UI_H
++
++#include "vt.h"
++#include "xio.h"
++#include "vbi.h"
++#include "search.h"
++
++#define N_HISTORY (1 << 6) // number of history entries
++
++struct vtwin
++{
++    struct vtwin *parent, *child;
++    struct xio_win *xw;
++    struct vbi *vbi;
++    struct {
++    int pgno;
++    int subno;
++    } hist[N_HISTORY];
++    int hist_top;
++    int searching;
++    int revealed;
++    int hold;
++    int pgno, subno;
++    struct vt_page *vtp;
++    struct search *search;
++    int searchdir;
++    int status;
++    u8 statusline[W+1];
++    struct export *export;
++};
++
++extern struct vtwin *vtwin_new(struct xio *xio, struct vbi *vbi, char *geom,
++    struct vtwin *parent, int pgno, int subno);
++#endif
+diff -r af23d23c278b util/alevt/vbi.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vbi.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,942 @@
++#define _GNU_SOURCE
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <stdio.h>
++#include <errno.h>
++#include <stdarg.h>
++#include <sys/ioctl.h>
++#include <sys/poll.h>
++#include "os.h"
++#include "vt.h"
++#include "misc.h"
++#include "vbi.h"
++#include "fdset.h"
++#include "hamm.h"
++#include "lang.h"
++#include <libzvbi.h>
++
++
++static vbi_capture      * pZvbiCapt;
++static vbi_raw_decoder  * pZvbiRawDec;
++static vbi_sliced       * pZvbiData;
++static vbi_proxy_client * pProxy;
++
++#define ZVBI_BUFFER_COUNT  10
++#define ZVBI_TRACE          0
++
++
++static int vbi_dvb_open(struct vbi *vbi, const char *vbi_name,
++      const char *channel, char *outfile, u_int16_t sid, int ttpid);
++static void dvb_handler(struct vbi *vbi, int fd);
++
++#define FAC (1<<16) // factor for fix-point arithmetic
++
++static u8 *rawbuf; // one common buffer for raw vbi data
++static int rawbuf_size; // its current size
++u_int16_t sid;
++static char *vbi_names[]
++      = { "/dev/vbi", "/dev/vbi0", "/dev/video0", "/dev/dvb/adapter0/demux0",
++      NULL }; // default device names if none was given at the command line
++
++
++static void out_of_sync(struct vbi *vbi)
++{
++    int i; // discard all in progress pages
++    for (i = 0; i < 8; ++i)
++    vbi->rpage[i].page->flags &= ~PG_ACTIVE;
++}
++
++
++// send an event to all clients
++static void vbi_send(struct vbi *vbi, int type, int i1, int i2, int i3, void *p1)
++{
++    struct vt_event ev[1];
++    struct vbi_client *cl, *cln;
++    ev->resource = vbi;
++    ev->type = type;
++    ev->i1 = i1;
++    ev->i2 = i2;
++    ev->i3 = i3;
++    ev->p1 = p1;
++    for (cl = PTR vbi->clients->first; cln = PTR cl->node->next; cl = cln)
++    cl->handler(cl->data, ev);
++}
++
++
++static void vbi_send_page(struct vbi *vbi, struct raw_page *rvtp, int page)
++{
++    struct vt_page *cvtp = 0;
++
++    if (rvtp->page->flags & PG_ACTIVE)
++    {
++    if (rvtp->page->pgno % 256 != page)
++    {
++    rvtp->page->flags &= ~PG_ACTIVE;
++    enhance(rvtp->enh, rvtp->page);
++    if (vbi->cache)
++    cvtp = vbi->cache->op->put(vbi->cache, rvtp->page);
++    vbi_send(vbi, EV_PAGE, 0, 0, 0, cvtp ?: rvtp->page);
++    }
++    }
++}
++
++
++static void pll_add(struct vbi *vbi, int n, int err)
++{
++}
++
++
++// process one videotext packet
++static int vt_line(struct vbi *vbi, u8 *p)
++{
++    struct vt_page *cvtp;
++    struct raw_page *rvtp;
++    int hdr, mag, mag8, pkt, i;
++    int err = 0;
++
++    hdr = hamm16(p, &err);
++    if (err & 0xf000)
++    return -4;
++    mag = hdr & 7;
++    mag8 = mag?: 8;
++    pkt = (hdr >> 3) & 0x1f;
++    p += 2;
++    rvtp = vbi->rpage + mag;
++    cvtp = rvtp->page;
++    switch (pkt)
++    {
++      case 0:
++      {
++          int b1, b2, b3, b4;
++          b1 = hamm16(p, &err); // page number
++          b2 = hamm16(p+2, &err); // subpage number + flags
++          b3 = hamm16(p+4, &err); // subpage number + flags
++          b4 = hamm16(p+6, &err); // language code + more flags
++          if (vbi->ppage->page->flags & PG_MAGSERIAL)
++              vbi_send_page(vbi, vbi->ppage, b1);
++          vbi_send_page(vbi, rvtp, b1);
++
++          if (err & 0xf000)
++              return 4;
++
++          cvtp->errors = (err >> 8) + chk_parity(p + 8, 32);;
++          cvtp->pgno = mag8 * 256 + b1;
++          cvtp->subno = (b2 + b3 * 256) & 0x3f7f;
++          cvtp->lang = "\0\4\2\6\1\5\3\7"[b4 >> 5] + (latin1==LATIN1 ? 0 : 8);
++          cvtp->flags = b4 & 0x1f;
++          cvtp->flags |= b3 & 0xc0;
++          cvtp->flags |= (b2 & 0x80) >> 2;
++          cvtp->lines = 1;
++          cvtp->flof = 0;
++          vbi->ppage = rvtp;
++          pll_add(vbi, 1, cvtp->errors);
++          conv2latin(p + 8, 32, cvtp->lang);
++          vbi_send(vbi, EV_HEADER, cvtp->pgno, cvtp->subno, cvtp->flags, p);
++
++          if (b1 == 0xff)
++          return 0;
++          cvtp->flags |= PG_ACTIVE;
++          init_enhance(rvtp->enh);
++          memcpy(cvtp->data[0]+0, p, 40);
++          memset(cvtp->data[0]+40, ' ', sizeof(cvtp->data)-40);
++          return 0;
++      }
++
++      case 1 ... 24:
++      {
++          pll_add(vbi, 1, err = chk_parity(p, 40));
++
++          if (~cvtp->flags & PG_ACTIVE)
++              return 0;
++
++          cvtp->errors += err;
++          cvtp->lines |= 1 << pkt;
++          conv2latin(p, 40, cvtp->lang);
++          memcpy(cvtp->data[pkt], p, 40);
++          return 0;
++      }
++      case 26:
++      {
++          int d, t[13];
++
++          if (~cvtp->flags & PG_ACTIVE)
++              return 0;
++
++          d = hamm8(p, &err);
++          if (err & 0xf000)
++              return 4;
++
++          for (i = 0; i < 13; ++i)
++              t[i] = hamm24(p + 1 + 3*i, &err);
++          if (err & 0xf000)
++              return 4;
++
++          add_enhance(rvtp->enh, d, t);
++          return 0;
++      }
++      case 27:
++      {
++          int b1,b2,b3,x;
++          if (~cvtp->flags & PG_ACTIVE)
++              return 0; // -1 flushes all pages. We may never resync again
++
++          b1 = hamm8(p, &err);
++          b2 = hamm8(p + 37, &err);
++          if (err & 0xf000)
++              return 4;
++          if (b1 != 0 || not(b2 & 8))
++              return 0;
++
++          for (i = 0; i < 6; ++i)
++          {
++              err = 0;
++              b1 = hamm16(p+1+6*i, &err);
++              b2 = hamm16(p+3+6*i, &err);
++              b3 = hamm16(p+5+6*i, &err);
++              if (err & 0xf000)
++                  return 1;
++              x = (b2 >> 7) | ((b3 >> 5) & 0x06);
++              cvtp->link[i].pgno = ((mag ^ x) ?: 8) * 256 + b1;
++              cvtp->link[i].subno = (b2 + b3 * 256) & 0x3f7f;
++          }
++          cvtp->flof = 1;
++          return 0;
++      }
++      case 30:
++      {
++          if (mag8 != 8)
++          return 0;
++          p[0] = hamm8(p, &err); // designation code
++          p[1] = hamm16(p+1, &err); // initial page
++          p[3] = hamm16(p+3, &err); // initial subpage + mag
++          p[5] = hamm16(p+5, &err); // initial subpage + mag
++          if (err & 0xf000)
++          return 4;
++          err += chk_parity(p+20, 20);
++          conv2latin(p+20, 20, 0);
++          vbi_send(vbi, EV_XPACKET, mag8, pkt, err, p);
++          return 0;
++      }
++      default:
++          return 0;
++    }
++    return 0;
++}
++
++
++// called when new vbi data is waiting
++static void vbi_handler(struct vbi *vbi, int fd)
++{
++    double timestamp;
++    struct timeval timeout;
++    int lineCount;
++    int line;
++    int res;
++
++    timeout.tv_sec  = 0;
++    timeout.tv_usec = 25000;
++    res = vbi_capture_read_sliced(pZvbiCapt, pZvbiData, &lineCount, &timestamp,
++    &timeout);
++    if (res > 0)
++    {
++      for (line=0; line < lineCount; line++)
++      {
++            if ((pZvbiData[line].id & VBI_SLICED_TELETEXT_B) != 0)
++          {
++              vt_line(vbi, pZvbiData[line].data);
++          }
++      }
++    }
++    else if (res < 0)
++    {
++    }
++}
++
++
++int vbi_add_handler(struct vbi *vbi, void *handler, void *data)
++{
++    struct vbi_client *cl;
++
++    if (not(cl = malloc(sizeof(*cl))))
++    return -1;
++    cl->handler = handler;
++    cl->data = data;
++    dl_insert_last(vbi->clients, cl->node);
++    return 0;
++}
++
++
++void vbi_del_handler(struct vbi *vbi, void *handler, void *data)
++{
++    struct vbi_client *cl;
++
++    for (cl = PTR vbi->clients->first; cl->node->next; cl = PTR cl->node->next)
++      if (cl->handler == handler && cl->data == data)
++      {
++          dl_remove(cl->node);
++          break;
++      }
++    return;
++}
++
++
++struct vbi * vbi_open(char *vbi_name, struct cache *ca,
++      const char *channel, char *outfile, u_int16_t sid, int ttpid)
++{
++    static int inited = 0;
++    struct vbi *vbi;
++    char * pErrStr;
++    int services;
++
++    if (vbi_name == NULL)
++    {
++        int i;
++        char *tried_devices = NULL;
++        char *old_tried_devices = NULL;
++        for (i = 0; vbi_names[i] != NULL; i++)
++        {
++        vbi_name = vbi_names[i];
++        // collect device names for the error message below
++        if (old_tried_devices)
++        {
++        if (asprintf(&tried_devices, "%s, %s", old_tried_devices, vbi_name) < 0)
++        tried_devices = NULL;
++        free(old_tried_devices);
++        }
++        else if (asprintf(&tried_devices, "%s", vbi_name) < 0)
++        tried_devices = NULL;
++        if (tried_devices == NULL)
++        out_of_mem(-1);
++        old_tried_devices = tried_devices;
++        if (access(vbi_name, R_OK) != 0)
++        continue;
++        vbi = vbi_open(vbi_name, ca, channel, outfile, sid, ttpid);
++        if (vbi != NULL)
++        {
++        if (tried_devices != NULL)
++        free(tried_devices);
++        return vbi;
++        }
++        }
++
++      error("could not open any of the standard devices (%s)", tried_devices);
++        free(tried_devices);
++      return NULL;
++    }
++
++    if (not inited)
++    lang_init();
++    inited = 1;
++
++    if (not(vbi = malloc(sizeof(*vbi))))
++    {
++      error("out of memory");
++      goto fail1;
++    }
++    if (!vbi_dvb_open(vbi, vbi_name, channel, outfile, sid, ttpid)) {
++          vbi->cache = ca;
++          dl_init(vbi->clients);
++          out_of_sync(vbi);
++          vbi->ppage = vbi->rpage;
++          fdset_add_fd(fds, vbi->fd, dvb_handler, vbi);
++          return vbi;
++    }
++
++    services = VBI_SLICED_TELETEXT_B;
++    pErrStr = NULL;
++    vbi->fd = -1;
++
++    pProxy = vbi_proxy_client_create(vbi_name, "alevt",
++    VBI_PROXY_CLIENT_NO_STATUS_IND, &pErrStr, ZVBI_TRACE);
++    if (pProxy != NULL)
++    {
++       pZvbiCapt = vbi_capture_proxy_new(pProxy, ZVBI_BUFFER_COUNT, 0,
++       &services, 0, &pErrStr);
++       if (pZvbiCapt == NULL)
++       {
++          vbi_proxy_client_destroy(pProxy);
++          pProxy = NULL;
++       }
++    }
++    if (pZvbiCapt == NULL)
++        pZvbiCapt = vbi_capture_v4l2_new(vbi_name, ZVBI_BUFFER_COUNT,
++        &services, 0, &pErrStr, ZVBI_TRACE);
++    if (pZvbiCapt == NULL)
++        pZvbiCapt = vbi_capture_v4l_new(vbi_name, 0, &services, 0, &pErrStr,
++        ZVBI_TRACE);
++
++    if (pZvbiCapt != NULL)
++    {
++        pZvbiRawDec = vbi_capture_parameters(pZvbiCapt);
++        if ((pZvbiRawDec != NULL) && ((services & VBI_SLICED_TELETEXT_B) != 0))
++        {
++            pZvbiData = malloc((pZvbiRawDec->count[0] + pZvbiRawDec->count[1]) \
++            * sizeof(*pZvbiData));
++
++            vbi->fd = vbi_capture_fd(pZvbiCapt);
++        }
++        else
++            vbi_capture_delete(pZvbiCapt);
++    }
++
++    if (pErrStr != NULL)
++    {
++        fprintf(stderr, "libzvbi: %s\n", pErrStr);
++        free(pErrStr);
++    }
++
++    if (vbi->fd == -1)
++        goto fail2;
++    vbi->cache = ca;
++    dl_init(vbi->clients);
++    out_of_sync(vbi);
++    vbi->ppage = vbi->rpage;
++    fdset_add_fd(fds, vbi->fd, vbi_handler, vbi);
++    return vbi;
++
++fail3:
++    close(vbi->fd);
++fail2:
++    free(vbi);
++fail1:
++    return 0;
++}
++
++
++void vbi_close(struct vbi *vbi)
++{
++    fdset_del_fd(fds, vbi->fd);
++    if (vbi->cache)
++    vbi->cache->op->close(vbi->cache);
++
++    if (pZvbiData != NULL)
++      free(pZvbiData);
++    pZvbiData = NULL;
++
++    if (pZvbiCapt != NULL)
++    {
++      vbi_capture_delete(pZvbiCapt);
++       pZvbiCapt = NULL;
++    }
++    if (pProxy != NULL)
++    {
++       vbi_proxy_client_destroy(pProxy);
++       pProxy = NULL;
++    }
++    free(vbi);
++}
++
++
++struct vt_page * vbi_query_page(struct vbi *vbi, int pgno, int subno)
++{
++    struct vt_page *vtp = 0;
++    if (vbi->cache)
++    vtp = vbi->cache->op->get(vbi->cache, pgno, subno);
++    if (vtp == 0)
++    {
++    return 0;
++    }
++    vbi_send(vbi, EV_PAGE, 1, 0, 0, vtp);
++    return vtp;
++}
++
++
++void vbi_reset(struct vbi *vbi)
++{
++    if (vbi->cache)
++    vbi->cache->op->reset(vbi->cache);
++    vbi_send(vbi, EV_RESET, 0, 0, 0, 0);
++}
++
++
++/* Starting from here: DVB API */
++#include <linux/dvb/dmx.h>
++#include <linux/dvb/frontend.h>
++#include <linux/dvb/video.h>
++
++static int dvb_get_table(int fd, u_int16_t pid, u_int8_t tblid, u_int8_t *buf,
++      size_t bufsz)
++{
++    struct dmx_sct_filter_params sctFilterParams;
++    struct pollfd pfd;
++    int r;
++    memset(&sctFilterParams, 0, sizeof(sctFilterParams));
++    sctFilterParams.pid = pid;
++    sctFilterParams.timeout = 10000;
++    sctFilterParams.flags = DMX_ONESHOT | DMX_IMMEDIATE_START | DMX_CHECK_CRC;
++    sctFilterParams.filter.filter[0] = tblid;
++    sctFilterParams.filter.mask[0] = 0xff;
++    if (ioctl(fd, DMX_SET_FILTER, &sctFilterParams)) {
++              perror("DMX_SET_FILTER");
++              return -1;
++      }
++      pfd.fd = fd;
++      pfd.events = POLLIN;
++      r = poll(&pfd, 1, 10000);
++      if (r < 0) {
++              perror("poll");
++              goto out;
++      }
++      if (r > 0) {
++              r = read(fd, buf, bufsz);
++              if (r < 0) {
++                      perror("read");
++                      goto out;
++              }
++      }
++ out:
++      ioctl(fd, DMX_STOP, 0);
++      return r;
++}
++
++static const u_int8_t byterev8[256] = {
++        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
++        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
++        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
++        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
++        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
++        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
++        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
++        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
++        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
++        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
++        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
++        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
++        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
++        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
++        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
++        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
++        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
++        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
++        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
++        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
++        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
++        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
++        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
++        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
++        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
++        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
++        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
++        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
++        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
++        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
++        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
++        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
++};
++
++static void dvb_handle_pes_payload(struct vbi *vbi, const u_int8_t *buf,
++      unsigned int len)
++{
++      unsigned int p, i;
++      u_int8_t data[42];
++
++      if (buf[0] < 0x10 || buf[0] > 0x1f)
++              return;  /* no EBU teletext data */
++      for (p = 1; p < len; p += /*6 + 40*/ 2 + buf[p + 1]) {
++#if 0
++      printf("Txt Line:\n"
++             "  data_unit_id             0x%02x\n"
++             "  data_unit_length         0x%02x\n"
++             "  reserved_for_future_use  0x%01x\n"
++             "  field_parity             0x%01x\n"
++             "  line_offset              0x%02x\n"
++             "  framing_code             0x%02x\n"
++             "  magazine_and_packet_addr 0x%04x\n"
++             "  data_block               0x%02x 0x%02x 0x%02x 0x%02x\n",
++             buf[p], buf[p+1],
++             buf[p+2] >> 6,
++             (buf[p+2] >> 5) & 1,
++             buf[p+2] & 0x1f,
++             buf[p+3],
++             (buf[p+4] << 8) | buf[p+5],
++             buf[p+6], buf[p+7], buf[p+8], buf[p+9]);
++#endif
++              for (i = 0; i < sizeof(data); i++)
++                      data[i] = byterev8[buf[p+4+i]];
++              /* note: we should probably check for missing lines and then
++               * call out_of_sync(vbi); and/or vbi_reset(vbi); */
++              vt_line(vbi, data);
++      }
++}
++
++static unsigned int rawptr;
++
++static void dvb_handler(struct vbi *vbi, int fd)
++{
++      /* PES packet start code prefix and stream_id == private_stream_1 */
++      static const u_int8_t peshdr[4] = { 0x00, 0x00, 0x01, 0xbd };
++      u_int8_t *bp;
++      int n;
++      unsigned int p, i, len;
++        u_int16_t rpid;
++        u_int32_t crc, crccomp;
++
++      if (rawptr >= (unsigned int)rawbuf_size)
++              rawptr = 0;
++      n = read(vbi->fd, rawbuf + rawptr, rawbuf_size - rawptr);
++      if (n <= 0)
++              return;
++      rawptr += n;
++      if (rawptr < 6)
++              return;
++      if (memcmp(rawbuf, peshdr, sizeof(peshdr))) {
++              bp = memmem(rawbuf, rawptr, peshdr, sizeof(peshdr));
++              if (!bp)
++                      return;
++              rawptr -= (bp - rawbuf);
++              memmove(rawbuf, bp, rawptr);
++              if (rawptr < 6)
++                      return;
++      }
++      len = (rawbuf[4] << 8) | rawbuf[5];
++      if (len < 9) {
++              rawptr = 0;
++              return;
++      }
++      if (rawptr < len + 6)
++              return;
++      p = 9 + rawbuf[8];
++#if 0
++      for (i = 0; i < len - p; i++) {
++              if (!(i & 15))
++                      printf("\n%04x:", i);
++              printf(" %02x", rawbuf[p + i]);
++      }
++      printf("\n");
++#endif
++      if (!dl_empty(vbi->clients))
++              dvb_handle_pes_payload(vbi, rawbuf + p, len - p);
++      rawptr -= len;
++      if (rawptr)
++              memmove(rawbuf, rawbuf + len, rawptr);
++}
++
++
++static int vbi_dvb_open(struct vbi *vbi, const char *vbi_name,
++      const char *channel, char *outfile, u_int16_t sid, int ttpid)
++{
++      struct {
++              u_int16_t pmtpid;
++              u_int16_t ttpid;
++              u_int16_t service_id;
++              u_int8_t service_type;
++              char service_provider_name[64];
++              char service_name[64];
++              u_int8_t txtlang[3];
++              u_int8_t txttype;
++              u_int8_t txtmagazine;
++              u_int8_t txtpage;
++      } progtbl[16], *progp;
++      u_int8_t tbl[4096];
++      u_int8_t * ppname, * psname, pncode, sncode, pnlen, snlen;
++      int r;
++      FILE *ofd;
++      unsigned int i, j, k, l, progcnt = 0;
++      struct dmx_pes_filter_params filterpar;
++
++      /* open DVB demux device */
++      if (!vbi_name)
++              vbi_name = "/dev/dvb/adapter0/demux0";
++      if ((vbi->fd = open(vbi_name, O_RDWR)) == -1) {
++              error("cannot open demux device %s", vbi_name);
++              return -1;
++      }
++      memset(progtbl, 0, sizeof(progtbl));
++      if (ttpid >= 0x15 && ttpid < 0x1fff) {
++              vbi->ttpid = ttpid;
++              printf("Using command line specified teletext PID 0x%x\n",
++              vbi->ttpid);
++              goto ttpidfound;
++      }
++      /* parse PAT to enumerate services and to find the PMT PIDs */
++      r = dvb_get_table(vbi->fd, 0, 0, tbl, sizeof(tbl));
++      if (r == -1)
++              goto outerr;
++      if (!(tbl[5] & 1)) {
++              error("PAT not active (current_next_indicator == 0)");
++              goto outerr;
++      }
++      if (tbl[6] != 0 || tbl[7] != 0) {
++              error("PAT has multiple sections");
++              goto outerr;
++      }
++      if (r < 13) {
++              error("PAT too short\n");
++              goto outerr;
++      }
++      r -= 13;
++      for (i = 0; i < (unsigned)r; i += 4) {
++              if (progcnt >= sizeof(progtbl)/sizeof(progtbl[0])) {
++                      error("Program table overflow");
++                      goto outerr;
++              }
++              progtbl[progcnt].service_id = (tbl[8 + i] << 8) | tbl[9 + i];
++              if (!progtbl[progcnt].service_id) /* this is the NIT pointer */
++                      continue;
++              progtbl[progcnt].pmtpid = ((tbl[10 + i] << 8) | tbl[11 + i])
++              & 0x1fff;
++              progcnt++;
++      }
++      /* find the SDT to get the station names */
++      r = dvb_get_table(vbi->fd, 0x11, 0x42, tbl, sizeof(tbl));
++      if (r == -1)
++              goto outerr;
++      if (!(tbl[5] & 1)) {
++              error("SDT not active (current_next_indicator == 0)");
++              goto outerr;
++      }
++      if (tbl[6] != 0 || tbl[7] != 0) {
++              error("SDT has multiple sections");
++              goto outerr;
++      }
++      if (r < 12) {
++              error("SDT too short\n");
++              goto outerr;
++      }
++      i = 11;
++      while (i < (unsigned)r - 1) {
++              k = (tbl[i] << 8) | tbl[i+1]; /* service ID */
++              progp = NULL;
++              for (j = 0; j < progcnt; j++)
++                      if (progtbl[j].service_id == k) {
++                              progp = &progtbl[j];
++                              break;
++                      }
++              j = i + 5;
++              i = j + (((tbl[i+3] << 8) | tbl[i+4]) & 0x0fff);
++              if (!progp) {
++                      error("SDT: service_id 0x%x not in PAT\n", k);
++                      continue;
++              }
++         while (j < i) {
++            switch (tbl[j]) {
++               case 0x48: // service descriptor
++                  k = j + 4 + tbl[j + 3];
++                  progp->service_type = tbl[j+2];
++                  ppname = tbl+j+4 ; // points to 1st byte of provider_name
++                  pncode = *ppname ; // 1st byte of provider_name
++                  pnlen = tbl[j+3]; // length of provider_name
++                  psname = tbl+k+1 ; // points to 1st byte of service_name
++                  sncode = *psname ; // 1st byte of service_name
++                  snlen = tbl[k]  ; // length of service_name
++                  if (pncode >= 0x20) {
++                     pncode = 0 ; // default character set Latin alphabet fig.A.1
++                  } else {
++                     ppname++ ; pnlen-- ;
++                     // character code from table A.3 1st byte = ctrl-code
++                  }
++                  if (sncode >= 0x20) {
++                     sncode = 0 ; // default character set Latin alphabet fig.A.1
++                  } else {
++                     psname++ ; snlen-- ;
++                     // character code from table A.3 ; 1st byte = ctrl-code
++                  }
++                  snprintf(progp->service_provider_name,
++                  sizeof(progp->service_provider_name), "%.*s", pnlen, ppname);
++                  snprintf(progp->service_name,
++                  sizeof(progp->service_name), "%.*s", snlen, psname); break;
++            }
++            j += 2 + tbl[j + 1]; // next descriptor
++         }
++      }
++      /* parse PMT's to find Teletext Services */
++      for (l = 0; l < progcnt; l++) {
++              progtbl[l].ttpid = 0x1fff;
++              if (progtbl[l].service_type != 0x01 || /* not digital TV */
++                  progtbl[l].pmtpid < 0x15 || /* PMT PID sanity check */
++                  progtbl[l].pmtpid >= 0x1fff)
++                      continue;
++              r = dvb_get_table(vbi->fd, progtbl[l].pmtpid, 0x02, tbl,
++              sizeof(tbl));
++              if (r == -1)
++                      goto outerr;
++              if (!(tbl[5] & 1)) { error \
++              ("PMT pid 0x%x not active (current_next_indicator == 0)",
++              progtbl[l].pmtpid);
++                      goto outerr;
++              }
++              if (tbl[6] != 0 || tbl[7] != 0) {
++                      error("PMT pid 0x%x has multiple sections",
++                      progtbl[l].pmtpid);
++                      goto outerr;
++              }
++              if (r < 13) {
++                      error("PMT pid 0x%x too short\n", progtbl[l].pmtpid);
++                      goto outerr;
++              }
++              i = 12 + (((tbl[10] << 8) | tbl[11]) & 0x0fff);
++              /* skip program info section */
++              while (i <= (unsigned)r-6) {
++                      j = i + 5;
++                      i = j + (((tbl[i + 3] << 8) | tbl[i + 4]) & 0x0fff);
++                      if (tbl[j - 5] != 0x06)
++                      /* teletext streams have type 0x06 */
++                              continue;
++                      k = ((tbl[j - 4] << 8) | tbl[j - 3]) & 0x1fff;
++              /* elementary PID - save until we know if it's teletext PID */
++                      while (j < i) {
++                              switch (tbl[j]) {
++                              case 0x56: /* EBU teletext descriptor */
++                                      progtbl[l].txtlang[0] = tbl[j + 2];
++                                      progtbl[l].txtlang[1] = tbl[j + 3];
++                                      progtbl[l].txtlang[2] = tbl[j + 4];
++                                      progtbl[l].txttype = tbl[j + 5] >> 3;
++                                      progtbl[l].txtmagazine = tbl[j + 5] & 7;
++                                      progtbl[l].txtpage = tbl[j + 6];
++                                      progtbl[l].ttpid = k;
++                                      break;
++                              }
++                              j += 2 + tbl[j + 1];
++                      }
++              }
++      }
++
++    printf \
++    ("sid:pmtpid:ttpid:type:provider:name:language:texttype:magazine:page\n\n");
++    for (i = 0; i < progcnt; i++) {
++    printf("%d:%d:%d:%d:%s:%s:lang=%.3s:type=%d:magazine=%1u:page=%3u\n",
++    progtbl[i].service_id, progtbl[i].pmtpid, progtbl[i].ttpid,
++    progtbl[i].service_type, progtbl[i].service_provider_name,
++    progtbl[i].service_name, progtbl[i].txtlang, progtbl[i].txttype,
++    progtbl[i].txtmagazine, progtbl[i].txtpage);
++    }
++
++    if (*outfile) {
++    ofd = fopen(outfile,"w") ;
++    if (ofd == NULL) { error("cannot open outfile\n"); goto outerr ; }
++    for (i = 0; i < progcnt; i++) {
++    if (progtbl[i].ttpid == 0x1fff) continue ; // service without teletext
++    fprintf(ofd,"%d:%d:%s:%s:lang=%.3s\n",
++    progtbl[i].service_id, progtbl[i].ttpid, progtbl[i].service_provider_name,
++    progtbl[i].service_name, progtbl[i].txtlang);
++    }
++    fclose(ofd) ;
++ }
++
++      progp = NULL;
++
++      if (channel) {
++              j = strlen(channel);
++              for (i = 0; i < progcnt; i++)
++                      if (!strncmp(progtbl[i].service_name, channel, j)
++                      && progtbl[i].ttpid != 0x1fff) { progp = &progtbl[i];
++                              break ;
++                      }
++      }
++
++      if (channel && !progp) {
++              j = strlen(channel);
++              for (i = 0; i < progcnt; i++)
++                      if (!strncasecmp(progtbl[i].service_name, channel, j)
++                      && progtbl[i].ttpid != 0x1fff) { progp = &progtbl[i];
++                              break ;
++                      }
++      }
++
++    if (sid) {
++    for (i = 0; i < progcnt; i++) {
++    if ((progtbl[i].service_id == sid) && (progtbl[i].ttpid != 0x1fff)) {
++            progp = &progtbl[i]; break ; }
++            }
++    }
++
++    if (!progp) {
++              for (i = 0; i < progcnt; i++)
++                      if (progtbl[i].ttpid != 0x1fff) {
++                              progp = &progtbl[i]; break ;
++                      }
++      }
++
++    printf("\nUsing: Service ID = %d ; PMT PID = %d ; TXT PID = %d ;\n"
++    "Service type = %d ; Provider Name = %s ; Service name = %s ;\n"
++    "language = %.3s ; Text type = %d ; Text Magazine = %1u ; Text page = %3u\n",
++    progp->service_id, progp->pmtpid, progp->ttpid, progp->service_type,
++    progp->service_provider_name, progp->service_name, progp->txtlang,
++    progp->txttype, progp->txtmagazine, progp->txtpage);
++    vbi->ttpid = progp->ttpid;
++
++ ttpidfound:
++      rawbuf = malloc(rawbuf_size = 8192);
++      if (!rawbuf)
++              goto outerr;
++      rawptr = 0;
++#if 0
++      close(vbi->fd);
++      if ((vbi->fd = open(vbi_name, O_RDWR)) == -1) {
++              error("cannot open demux device %s", vbi_name);
++              return -1;
++      }
++#endif
++      memset(&filterpar, 0, sizeof(filterpar));
++      filterpar.pid = vbi->ttpid;
++        filterpar.input = DMX_IN_FRONTEND;
++        filterpar.output = DMX_OUT_TAP;
++        filterpar.pes_type = DMX_PES_OTHER;
++        filterpar.flags = DMX_IMMEDIATE_START;
++        if (ioctl(vbi->fd, DMX_SET_PES_FILTER, &filterpar) < 0) {
++        error("ioctl: DMX_SET_PES_FILTER %s (%u)", strerror(errno), errno);
++        goto outerr;
++        }
++      return 0;
++
++ outerr:
++      close(vbi->fd);
++      vbi->fd = -1;
++      return -1;
++}
++
++
++struct vbi *open_null_vbi(struct cache *ca)
++{
++    static int inited = 0;
++    struct vbi *vbi;
++
++    if (not inited)
++    lang_init();
++    inited = 1;
++
++    vbi = malloc(sizeof(*vbi));
++    if (!vbi)
++    {
++              error("out of memory");
++              goto fail1;
++    }
++
++    vbi->fd = open("/dev/null", O_RDONLY);
++      if (vbi->fd == -1)
++      {
++              error("cannot open null device");
++              goto fail2;
++      }
++
++    vbi->ttpid = -1;
++    out_of_sync(vbi);
++    vbi->ppage = vbi->rpage;
++    fdset_add_fd(fds, vbi->fd, vbi_handler, vbi);
++    return vbi;
++
++fail3:
++    close(vbi->fd);
++fail2:
++    free(vbi);
++fail1:
++    return 0;
++}
++
++
++void send_errmsg(struct vbi *vbi, char *errmsg, ...)
++{
++      va_list args;
++      if (errmsg == NULL || *errmsg == '\0')
++              return;
++      va_start(args, errmsg);
++      char *buff = NULL;
++      if (vasprintf(&buff, errmsg, args) < 0)
++              buff = NULL;
++      va_end(args);
++      if(buff == NULL)
++              out_of_mem(-1);
++      vbi_send(vbi, EV_ERR, 0, 0, 0, buff);
++}
+diff -r af23d23c278b util/alevt/vbi.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vbi.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,47 @@
++#ifndef VBI_H
++#define VBI_H
++
++#include "vt.h"
++#include "dllist.h"
++#include "cache.h"
++#include "lang.h"
++
++#define PLL_ADJUST 4
++
++struct raw_page
++{
++    struct vt_page page[1];
++    struct enhance enh[1];
++};
++
++struct vbi
++{
++    int fd;
++    struct cache *cache;
++    struct dl_head clients[1];
++    // page assembly
++    struct raw_page rpage[8]; // one for each magazin
++    struct raw_page *ppage; // points to page of previous pkt0
++    // DVB stuff
++    unsigned int ttpid;
++    u_int16_t sid;
++};
++
++struct vbi_client
++{
++    struct dl_node node[1];
++    void (*handler)(void *data, struct vt_event *ev);
++    void *data;
++};
++
++struct vbi *vbi_open(char *vbi_dev_name, struct cache *ca,
++      const char *channel, char *outfile, u_int16_t sid, int ttpid);
++void vbi_close(struct vbi *vbi);
++void vbi_reset(struct vbi *vbi);
++int vbi_add_handler(struct vbi *vbi, void *handler, void *data);
++void vbi_del_handler(struct vbi *vbi, void *handler, void *data);
++struct vt_page *vbi_query_page(struct vbi *vbi, int pgno, int subno);
++
++struct vbi *open_null_vbi(struct cache *ca);
++void send_errmsg(struct vbi *vbi, char *errmsg, ...);
++#endif
+diff -r af23d23c278b util/alevt/vt.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt.h  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,62 @@
++#ifndef VT_H
++#define VT_H
++
++#include "misc.h"
++
++#define W 40
++#define H 25
++#define BAD_CHAR 0xb8 // substitute for chars with bad parity
++
++struct vt_event
++{
++    int type;
++    void *resource;   /* struct xio_win *, struct vbi *, ... */
++    int i1, i2, i3, i4;
++    void *p1;
++};
++
++#define EV_CLOSE      1
++#define EV_KEY                2       // i1:KEY_xxx  i2:shift-flag
++#define EV_MOUSE      3       // i1:button  i2:shift-flag i3:x  i4:y
++#define EV_SELECTION  4       // i1:len  p1:data
++#define EV_PAGE               5       // p1:vt_page i1:query-flag
++#define EV_HEADER     6       // i1:pgno  i2:subno  i3:flags  p1:data
++#define EV_XPACKET    7       // i1:mag  i2:pkt  i3:errors  p1:data
++#define EV_RESET      8       // ./.
++#define EV_TIMER      9       // ./.
++#define EV_ERR                10      // p1: errmsg
++#define KEY_F(i)      (1000+i)
++#define KEY_LEFT      2001
++#define KEY_RIGHT     2002
++#define KEY_UP                2003
++#define KEY_DOWN      2004
++#define KEY_PUP               2005
++#define KEY_PDOWN     2006
++#define KEY_DEL               2007
++#define KEY_INS               2008
++
++struct vt_page
++{
++    int pgno, subno;  // the wanted page number
++    int lang;         // language code
++    int flags;                // misc flags (see PG_xxx below)
++    int errors;               // number of single bit errors in page
++    u32 lines;                // 1 bit for each line received
++    u8 data[25][40];  // page contents
++    int flof;         // page has FastText links
++    struct {
++    int pgno;
++    int subno;
++    } link[6]; // FastText links (FLOF)
++};
++
++#define PG_SUPPHEADER 0x01    // C7  row 0 is not to be displayed
++#define PG_OUTOFSEQ   0x04    // C9  page out of numerical order
++#define PG_NODISPLAY  0x08    // C10 rows 1-24 is not to be displayed
++#define PG_MAGSERIAL  0x10    // C11 serial trans. (any pkt0 terminates page)
++#define PG_ERASE      0x20    // C4  clear previously stored lines
++#define PG_NEWSFLASH  0x40    // C5  box it and insert into normal video pict.
++#define PG_SUBTITLE   0x80    // C6  box it and insert into normal video pict.
++#define PG_ACTIVE     0x100   // currently fetching this page
++#define ANY_SUB               0x3f7f  // universal subpage number
++#endif
+diff -r af23d23c278b util/alevt/vt900.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt900.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System         ",
++"  \22`p0`0    p `0pppp                     ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!              ",
++#else
++HELP_HEADER
++#endif
++"                                           ",
++"\6\15Contents:                             ",
++"\6\15Contents:                             ",
++"\24 ####################################   ",
++"                                           ",
++"   \3\177\6Starting alevt . . . . . . 902  ",
++"                                           ",
++"   \3\177\6Copying/Warranty . . . . . 904  ",
++"                                           ",
++"   \3\177\6The Status Line  . . . . . 905  ",
++"                                           ",
++"   \3\177\6Selecting Pages  . . . . . 907  ",
++"                                           ",
++"   \3\177\6QuickClick Page  . . . . . 915  ",
++"                                           ",
++"\24 pppppppppppppppppppppppppppppppppppp   ",
++"              (Click to select a page)     ",
++"                                           ",
++"\4\35\7                           Next 901 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt901.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt901.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System         ",
++"  \22`p0`0    p `0pppp                     ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!              ",
++#else
++HELP_HEADER
++#endif
++"                                           ",
++"\6\15Contents:                             ",
++"\6\15Contents:                             ",
++"\24 ####################################   ",
++"                                           ",
++"\6  \3\177\6FastText Menu  . . . . . . 909 ",
++"\6                                         ",
++"\6  \3\177\6Keyboard Commands  . . . . 910 ",
++"\6                                         ",
++"\6  \3\177\6Starting alevt-cap . . . . 912 ",
++"\6                                         ",
++"\6  \3\177\6Starting alevt-date  . . . 914 ",
++"\6                                         ",
++"\6  \3\177\6QuickClick Page  . . . . . 915 ",
++"                                           ",
++"\24 pppppppppppppppppppppppppppppppppppp   ",
++"              (Click to select a page)     ",
++"                                           ",
++"\4\35\7Back 900     Index 900     Next 902 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt902.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt902.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System         ",
++"  \22`p0`0    p `0pppp                     ",
++"\4\35\22\177 \177j5`p  \177 j5 j5        \7   Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5        \7     1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!              ",
++#else
++HELP_HEADER
++#endif
++"                                           ",
++"\6\15Starting alevt:                       ",
++"\6\15Starting alevt:                       ",
++"\24 ####################################   ",
++"\6 $\7alevt\6[options]     Default:        ",
++"                                           ",
++"    -c\6<channel name>   (none;dvb only)   ",
++"    -ch -child\6<ppp.ss> (none)            ",
++"    -cs -charset       \6latin-1           ",
++"   \6<latin-1/2/koi8-r/                    ",
++"   \6iso8859-7>                            ",
++"    -h -help                               ",
++"                                           ",
++"                                           ",
++"                                           ",
++"\24 pppppppppppppppppppppppppppppppppppp   ",
++"                                           ",
++"                                           ",
++"\4\35\7Back 901     Index 900     Next 903 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt903.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt903.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System         ",
++"  \22`p0`0    p `0pppp                     ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!              ",
++#else
++HELP_HEADER
++#endif
++"                                           ",
++"\6\15Starting alevt:                       ",
++"\6\15Starting alevt:                       ",
++"\24 ####################################   ",
++"\6 $\7alevt\6[options]     Default:        ",
++"    -o\6<outfile>        (none;dvb only)   ",
++"    -p -parent\6<ppp.ss> 900               ",
++"    -s -sid\6<sid>       (none;dvb only)   ",
++"    -t -ttpid\6<ttpid>   (none;dvb only)   ",
++"    -v -vbi\6<vbidev>    /dev/vbi          ",
++"                       \6/dev/vbi0         ",
++"                       \6/dev/video0       ",
++"          \6/dev/dvb/adapter0/demux0       ",
++"                                           ",
++"                                           ",
++"\24 pppppppppppppppppppppppppppppppppppp   ",
++"                                           ",
++"                                           ",
++"\4\35\7Back 902     Index 900     Next 904 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt904.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt904.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System       ",
++"  \22`p0`0    p `0pppp                   ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!            ",
++#else
++HELP_HEADER
++#endif
++"                                         ",
++"\6\15Copying:                            ",
++"\6\15Copying:                            ",
++"\24 #################################### ",
++"\6 2002-07 Edgar Toernig (froese@gmx.de) ",
++"\6         All Rights Reserved.          ",
++"\6                                       ",
++"\6 This program is free software; you    ",
++"\6 can redistribute it and/or modify it  ",
++"\6 under the terms of the GNU General    ",
++"\6 Public License Version 2 as published ",
++"\6 by the Free Software Foundation.      ",
++"\6                                       ",
++"\6 This program is distributed in the    ",
++"\6 hope that it will be useful, but      ",
++"\6\7without any warranty.\6See the GNU   ",
++"\6 General Public License for details.   ",
++"                                         ",
++"\4\35\7Back 903     Index 900     Next 905 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt905.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt905.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System       ",
++"  \22`p0`0    p `0pppp                   ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!            ",
++#else
++HELP_HEADER
++#endif
++"                                         ",
++"\6\15Status Line:                        ",
++"\6\15Status Line:                        ",
++"\24 #################################### ",
++"\6 The top line of each window is the    ",
++"\6 status line. On the left it shows     ",
++"\6 the current page number (CPN) and     ",
++"\6 some flags. The rest of the line      ",
++"\6 is the running header sent by the     ",
++"\6 TV station.                           ",
++"\6                                       ",
++"\6 If the CPN is red, the program is     ",
++"\6 searching for that page. If it's      ",
++"\6 green, it's the PN of the currently   ",
++"\6 displayed page.                       ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++"                                         ",
++"                                         ",
++"\4\35\7Back 904     Index 900     Next 906 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt906.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt906.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System       ",
++"  \22`p0`0    p `0pppp                   ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!            ",
++#else
++HELP_HEADER
++#endif
++"                                         ",
++"\6\15Status Line:           \14\5\30     ",
++"\6\15Status Line:           \14\5\30     ",
++"\24 #################################### ",
++"\6 An\2H\6behind the CPN indicates that  ",
++"\6 the page is on hold. This inhibits    ",
++"\6 subpage cycling and page updates. A   ",
++"\6 click on the CPN toggles the\2H\6flag.",
++"                                         ",
++"\6 A\5*\6indicates that the page         ",
++"\6 contains concealed text. Clicking on  ",
++"\6 the\5*\6reveals that text.            ",
++"                                         ",
++"\6 A CPN in the form\2Sxx\6is shown if a ",
++"\6 specific subpage is selected.         ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++"                                         ",
++"                                         ",
++"\4\35\7Back 905     Index 900     Next 907 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt907.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt907.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System        ",
++"  \22`p0`0    p `0pppp                    ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!             ",
++#else
++HELP_HEADER
++#endif
++"                                          ",
++"\6\15Selecting Pages:                     ",
++"\6\15Selecting Pages:                     ",
++"\24 ####################################  ",
++"\6 To select a specific page, you may     ",
++"\6 either enter the page number with      ",
++"\6 the keyboard or click with the\7left   ",
++"\6 mouse button on a page number          ",
++"\6 somewhere on the screen.               ",
++"\6                                        ",
++"\6 Clicking with the\7middle\6button will ",
++"\6 show the page in a child window. If    ",
++"\6 there is no child window, a new one    ",
++"\6 will be opened.                        ",
++"\6                                        ",
++"\24 pppppppppppppppppppppppppppppppppppp  ",
++"                                          ",
++"                                          ",
++"\4\35\7Back 906     Index 900     Next 908 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt908.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt908.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System        ",
++"  \22`p0`0    p `0pppp                    ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!             ",
++#else
++HELP_HEADER
++#endif
++"                                          ",
++"\6\15Selecting Pages:                     ",
++"\6\15Selecting Pages:                     ",
++"\24 ####################################  ",
++"\6 AleVT also recognizes something like   ",
++"\3 3/7\6as a valid page number. Clicking  ",
++"\6 with the\7left\6button will cycle to   ",
++"\6 the next subpage of the current page.  ",
++"\6 The\7middle\6buttons cycles backwards. ",
++"\6                                        ",
++"\6 For each window a history of           ",
++"\6 recently visited pages is kept.        ",
++"\6 Pressing the\7right\6mouse button will ",
++"\6 take you back to the previous page.    ",
++"\6                                        ",
++"\24 pppppppppppppppppppppppppppppppppppp  ",
++"                                          ",
++"                                          ",
++"\4\35\7Back 907     Index 900     Next 909 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt909.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt909.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System       ",
++"  \22`p0`0    p `0pppp                   ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!            ",
++#else
++HELP_HEADER
++#endif
++"                                         ",
++"\6\15FastText Menu:                      ",
++"\6\15FastText Menu:                      ",
++"\24 #################################### ",
++"\6 The last line of each window shows    ",
++"\6 the FastText Menu (only if one is     ",
++"\6 transmitted for that page).           ",
++"\6                                       ",
++"\6 It consists of up to four colored     ",
++"\6 labels. You may click on a label      ",
++"\6 or press one of the function keys     ",
++"\6 F1-F4 to go to the associated page.   ",
++"\6                                       ",
++"\6 For the 5th (white) key present on    ",
++"\6 some remote controls press F5.        ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++"                                         ",
++"                                         ",
++"\4\35\7Back 908     Index 900     Next 910 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt910.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt910.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System       ",
++"  \22`p0`0    p `0pppp                   ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!            ",
++#else
++HELP_HEADER
++#endif
++"                                         ",
++"\6\15Keyboard Commands:                  ",
++"\6\15Keyboard Commands:                  ",
++"\24 #################################### ",
++"  0\6-\0079    \6Enter page number       ",
++"  q\6or\7ESC \6Close window              ",
++"  h        \6Goto page 900 (help page)   ",
++"  i        \6Goto page 100 (index page)  ",
++"  o        \6Open a new window           ",
++"  SPACE    \6Hold page                   ",
++"  RIGHT    \6Goto next page              ",
++"  LEFT     \6Goto previous page          ",
++"  DOWN     \6Goto next subpage           ",
++"  UP       \6Goto previous subpage       ",
++"  BACKSPACE\6Previous page from history  ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++"                                         ",
++"                                         ",
++"\4\35\7Back 909     Index 900     Next 911 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt911.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt911.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System        ",
++"  \22`p0`0    p `0pppp                    ",
++"\4\35\22\177 \177j5`p  \177 j5 j5        \7   Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5        \007 1.7.0   \34",
++"  \22# #\42!\42#   \42   \42!             ",
++#else
++HELP_HEADER
++#endif
++"                                          ",
++"\6\15Keyboard Commands:                   ",
++"\6\15Keyboard Commands:                   ",
++"\24 ####################################  ",
++"  s        \6Save page to file            ",
++"  c        \6Clear page cache             ",
++"  r        \6Reveal concealed text        ",
++"  F1\6-\7F5  \6FastText keys              ",
++"  /\6and\7?  \6Search forward/backward    ",
++"  n\6and\7N  \6Search next/previous       ",
++"  f\6and\7F  \6Fine tune the decoder      ",
++"  e        \6Error reduction on/off       ",
++"  b        \6Error bell on/off            ",
++"\6 Holding the\7shift\6key while pressing ",
++"\6 one of the\7cursor\6keys allows        ",
++"\6 selecting the 'hex' pages (Ex.: 1f1).  ",
++"\24 pppppppppppppppppppppppppppppppppppp  ",
++"                                          ",
++"\4\35\7Back 910     Index 900     Next 912 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt912.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt912.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System         ",
++"  \22`p0`0    p `0pppp                     ",
++"\4\35\22\177 \177j5`p  \177 j5 j5        \7   Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5        \7     1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!              ",
++#else
++HELP_HEADER
++#endif
++"                                           ",
++"\6\15Starting alevt-cap:                   ",
++"\6\15Starting alevt-cap:                   ",
++"\24 ####################################   ",
++"\6 $\7alevt-cap\6[options]   Default:      ",
++"                                           ",
++"   -cs -charset          \6latin-1         ",
++"   \6<latin-1/2/koi8-r/                    ",
++"   \6iso8859-7>                            ",
++"   -f -format            \6ascii           ",
++"   \6<fmt,options>                         ",
++"   -f help -format help                    ",
++"   -h -help                                ",
++"   -n -name \6<filename>   ttext-%s.%e     ",
++"                                           ",
++"\24 pppppppppppppppppppppppppppppppppppp   ",
++"                                           ",
++"                                           ",
++"\4\35\7Back 911     Index 900     Next 913 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt913.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt913.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System         ",
++"  \22`p0`0    p `0pppp                     ",
++"\4\35\22\177 \177j5`p  \177 j5 j5        \7   Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5        \7     1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!              ",
++#else
++HELP_HEADER
++#endif
++"                                           ",
++"\6\15Starting alevt-cap:                   ",
++"\6\15Starting alevt-cap:                   ",
++"\24 ####################################   ",
++"\6 $\7alevt-cap\6[options] Default:        ",
++"                                           ",
++"    -s -sid\6<sid>       (none;dvb only)   ",
++"    -t -ttpid\6<ttpid>   (none;dvb only)   ",
++"    -to -timeout\6<secs> (none)            ",
++"    -v -vbi\6<vbidev>    /dev/vbi          ",
++"                       \6/dev/vbi0         ",
++"                       \6/dev/video0       ",
++"          \6/dev/dvb/adapter0/demux0       ",
++"                                           ",
++"                                           ",
++"\24 pppppppppppppppppppppppppppppppppppp   ",
++"                                           ",
++"                                           ",
++"\4\35\7Back 912     Index 900     Next 914 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt914.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt914.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System         ",
++"  \22`p0`0    p `0pppp                     ",
++"\4\35\22\177 \177j5`p  \177 j5 j5        \7   Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5        \7     1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!              ",
++#else
++HELP_HEADER
++#endif
++"                                           ",
++"\6\15Starting alevt-date:                  ",
++"\6\15Starting alevt-date:                  ",
++"\24 ####################################   ",
++"\6 $\7alevt-date\6[options]  Default:      ",
++"                                           ",
++"    -d -delta\6<max_secs>  7200 (2 hours)  ",
++"    -f -format\6<fmtstr>   %c              ",
++"    -h -help                               ",
++"    -s -set              \6off             ",
++"    -to -timeout\6<seconds>(none)          ",
++"    -v -vbi\6<vbidev>      /dev/vbi        ",
++"                         \6/dev/vbi0       ",
++"                         \6/dev/video0     ",
++"            \6/dev/dvb/adapter0/demux0     ",
++"\24 pppppppppppppppppppppppppppppppppppp   ",
++"                                           ",
++"                                           ",
++"\4\35\7Back 913     Index 900     Next 915 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt915.out
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt915.out     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++"        \6AleVT Online Help System       ",
++"  \22`p0`0    p `0pppp                   ",
++"\4\35\22\177 \177j5`p  \177 j5 j5           \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5           \7  1.7.0 \34",
++"  \22# #\42!\42#   \42   \42!            ",
++#else
++HELP_HEADER
++#endif
++"                                         ",
++"\6\15QuickClick:                         ",
++"\6\15QuickClick:                         ",
++"\24 #################################### ",
++"\6   100 200 300 400 500 600 700 800     ",
++"\6   101 201 301 401 501 601 701 801     ",
++"\6   110 210 310 410 510 610 710 810     ",
++"\6   120\006220 320 420 520 620 720 820  ",
++"\6   130 230 330 430 530 630 730 830     ",
++"\6   140\006240 340 440 540 640 740 840  ",
++"\6   150 250 350 450 550 650 750 850     ",
++"\6   160\006260 360 460 560 660 760 860  ",
++"\6   170 270 370 470 570 670 770 870     ",
++"\6   180\006280 380 480 580 680 780 880  ",
++"\6   190 290 390 490 590 690 790 890     ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++"                                         ",
++"                                         ",
++"\4\35\7             Index 900              \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vtxt-iso8859-7.bdf
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-iso8859-7.bdf    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5768 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 4.5."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 250
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0600
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++0C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A0 NO-BREAK SPACE
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+02BD MODIFIER LETTER REVERSED COMMA
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++1000
++1000
++0800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+02BC MODIFIER LETTER APOSTROPHE
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++0800
++0800
++1000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A3 POUND SIGN
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1000
++1000
++1000
++7C00
++1000
++1000
++1000
++3E00
++6100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A6 BROKEN BAR
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++0800
++0800
++0000
++0000
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A7 SECTION SIGN
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++4000
++3C00
++4200
++4200
++3C00
++0200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A8 DIAERESIS
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A9 COPYRIGHT SIGN
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++9900
++A500
++A100
++A100
++A500
++9900
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++1200
++1200
++2400
++2400
++4800
++2400
++2400
++1200
++1200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00AC NOT SIGN
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7E00
++0200
++0200
++0200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00AD SOFT HYPHEN
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+2015 HORIZONTAL BAR
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B0 DEGREE SIGN
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++2800
++2800
++1000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B1 PLUS-MINUS SIGN
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++0800
++7F00
++0800
++0800
++0800
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B2 SUPERSCRIPT TWO
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++2200
++0200
++1C00
++2000
++2000
++3E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B3 SUPERSCRIPT THREE
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++2200
++0200
++1C00
++0200
++2200
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0384 GREEK TONOS
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++1000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0385 GREEK DIALYTIKA TONOS
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++1000
++4400
++4400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++1800
++2400
++2400
++4200
++4200
++7E00
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B7 MIDDLE DOT
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++7E00
++4000
++4000
++4000
++7C00
++4000
++4000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0389 GREEK CAPITAL LETTER ETA WITH TONOS
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++4200
++4200
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038A GREEK CAPITAL LETTER IOTA WITH TONOS
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++3E00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4800
++4800
++2400
++2400
++1200
++2400
++2400
++4800
++4800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00BD VULGAR FRACTION ONE HALF
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++2200
++6200
++2400
++2800
++2800
++1400
++1A00
++2200
++4400
++4E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++4100
++4100
++2200
++2200
++1400
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++3E00
++4100
++4100
++4100
++4100
++2200
++1400
++1400
++7700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1000
++5400
++4400
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0391 GREEK CAPITAL LETTER ALPHA
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++2400
++2400
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0392 GREEK CAPITAL LETTER BETA
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++4200
++4200
++4200
++7C00
++4200
++4200
++4200
++4200
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0393 GREEK CAPITAL LETTER GAMMA
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++4000
++4000
++4000
++4000
++4000
++4000
++4000
++4000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0394 GREEK CAPITAL LETTER DELTA
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++1400
++1400
++2200
++2200
++2200
++4100
++4100
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0395 GREEK CAPITAL LETTER EPSILON
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++4000
++4000
++4000
++7C00
++4000
++4000
++4000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0396 GREEK CAPITAL LETTER ZETA
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++0200
++0200
++0400
++0800
++1000
++2000
++4000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0397 GREEK CAPITAL LETTER ETA
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4200
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0398 GREEK CAPITAL LETTER THETA
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0399 GREEK CAPITAL LETTER IOTA
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039A GREEK CAPITAL LETTER KAPPA
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4400
++4800
++5000
++6000
++6000
++5000
++4800
++4400
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039B GREEK CAPITAL LETTER LAMDA
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++1400
++1400
++2200
++2200
++2200
++4100
++4100
++4100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039C GREEK CAPITAL LETTER MU
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4200
++6600
++6600
++5A00
++5A00
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039D GREEK CAPITAL LETTER NU
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++6200
++6200
++5200
++5200
++4A00
++4A00
++4600
++4600
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039E GREEK CAPITAL LETTER XI
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++0000
++0000
++0000
++3C00
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039F GREEK CAPITAL LETTER OMICRON
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A0 GREEK CAPITAL LETTER PI
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++2200
++2200
++2200
++2200
++2200
++2200
++2200
++2200
++2200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A1 GREEK CAPITAL LETTER RHO
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++4200
++4200
++4200
++7C00
++4000
++4000
++4000
++4000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A3 GREEK CAPITAL LETTER SIGMA
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++4000
++2000
++1000
++0800
++0800
++1000
++2000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A4 GREEK CAPITAL LETTER TAU
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A5 GREEK CAPITAL LETTER UPSILON
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4100
++4100
++2200
++2200
++1400
++0800
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A6 GREEK CAPITAL LETTER PHI
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++0800
++3E00
++4900
++4900
++4900
++4900
++3E00
++0800
++1C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A7 GREEK CAPITAL LETTER CHI
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4200
++2400
++2400
++1800
++1800
++2400
++2400
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A8 GREEK CAPITAL LETTER PSI
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4900
++4900
++4900
++4900
++4900
++3E00
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A9 GREEK CAPITAL LETTER OMEGA
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++4100
++4100
++4100
++4100
++4100
++2200
++1400
++1400
++7700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++3E00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++4100
++4100
++2200
++2200
++1400
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AC GREEK SMALL LETTER ALPHA WITH TONOS
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++3200
++4A00
++4400
++4400
++4400
++4400
++4A00
++3200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AD GREEK SMALL LETTER EPSILON WITH TONOS
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++3E00
++4000
++4000
++3C00
++4000
++4000
++4000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AE GREEK SMALL LETTER ETA WITH TONOS
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++5C00
++6200
++4200
++4200
++4200
++4200
++4200
++4200
++0200
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AF GREEK SMALL LETTER IOTA WITH TONOS
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++4400
++4400
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B1 GREEK SMALL LETTER ALPHA
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3200
++4A00
++4400
++4400
++4400
++4400
++4A00
++3200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B2 GREEK SMALL LETTER BETA
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++4400
++4400
++4400
++7C00
++4200
++4200
++4200
++6200
++5C00
++4000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B3 GREEK SMALL LETTER GAMMA
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3100
++4900
++0A00
++0400
++0800
++0800
++1000
++1000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B4 GREEK SMALL LETTER DELTA
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++2000
++2000
++2000
++1800
++2400
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B5 GREEK SMALL LETTER EPSILON
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++4200
++4000
++3C00
++4000
++4000
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B6 GREEK SMALL LETTER ZETA
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++2000
++2000
++1C00
++0800
++1000
++2000
++2000
++2000
++2000
++1C00
++0200
++1C00
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B7 GREEK SMALL LETTER ETA
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++5C00
++6200
++4200
++4200
++4200
++4200
++4200
++4200
++0200
++0200
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B8 GREEK SMALL LETTER THETA
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++2400
++2400
++4200
++7E00
++4200
++4200
++2400
++2400
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B9 GREEK SMALL LETTER IOTA
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BA GREEK SMALL LETTER KAPPA
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++2200
++2400
++2800
++3000
++3000
++2800
++2400
++2200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BB GREEK SMALL LETTER LAMDA
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++2000
++2000
++1000
++1000
++0800
++1800
++2400
++2400
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BC GREEK SMALL LETTER MU
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++4200
++4200
++6600
++6600
++5A00
++4200
++4000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BD GREEK SMALL LETTER NU
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++4200
++4400
++4400
++4800
++5000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BE GREEK SMALL LETTER XI
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4000
++4000
++3C00
++4000
++4000
++3C00
++4000
++4000
++3C00
++0200
++0200
++3C00
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BF GREEK SMALL LETTER OMICRON
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C0 GREEK SMALL LETTER PI
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++7E00
++2400
++2400
++2400
++2400
++2400
++2400
++2400
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C1 GREEK SMALL LETTER RHO
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++6200
++5C00
++4000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C2 GREEK SMALL LETTER FINAL SIGMA
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1E00
++2000
++4000
++4000
++4000
++2000
++1C00
++0200
++0200
++1C00
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C3 GREEK SMALL LETTER SIGMA
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3F00
++4800
++4400
++4400
++4400
++4400
++4400
++3800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C4 GREEK SMALL LETTER TAU
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++7E00
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C5 GREEK SMALL LETTER UPSILON
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C6 GREEK SMALL LETTER PHI
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3E00
++4900
++4900
++4900
++4900
++4900
++4900
++3E00
++0800
++0800
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C7 GREEK SMALL LETTER CHI
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++2400
++2400
++1800
++1800
++2400
++2400
++4200
++4200
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C8 GREEK SMALL LETTER PSI
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++4900
++4900
++4900
++4900
++4900
++3E00
++0800
++0800
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C9 GREEK SMALL LETTER OMEGA
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++2200
++4100
++4100
++4900
++4900
++4900
++4900
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CC GREEK SMALL LETTER OMICRON WITH TONOS
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CD GREEK SMALL LETTER UPSILON WITH TONOS
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CE GREEK SMALL LETTER OMEGA WITH TONOS
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++0800
++0000
++0000
++2200
++4100
++4100
++4900
++4900
++4900
++4900
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/vtxt-koi8.bdf
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-koi8.bdf Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5906 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 3.0."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 256
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0F00
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char160
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++ENDCHAR
++STARTCHAR char161
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++1800
++3C00
++3C00
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++1800
++7E00
++C300
++C000
++C000
++C000
++C300
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char163
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 164
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4100
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++6300
++4100
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char165
++ENCODING 165
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++6600
++3C00
++1800
++FF00
++1800
++FF00
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char166
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3E00
++6300
++3000
++1C00
++3600
++6300
++6300
++3600
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char168
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++7E00
++DB00
++FF00
++BD00
++C300
++E700
++FF00
++7E00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5100
++5100
++5D00
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char170
++ENCODING 170
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++0C00
++3C00
++6400
++3C00
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++3000
++7F00
++7F00
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char172
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++7E00
++5A00
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 174
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5500
++5900
++5500
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char175
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char176
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3600
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char177
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char178
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++1800
++3000
++6400
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char179
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7C00
++0C00
++1800
++0C00
++6C00
++3800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char180
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char181
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++7E00
++6300
++6000
++C000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char182
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++DB00
++DB00
++DB00
++7B00
++1B00
++1B00
++1B00
++1B00
++1B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char183
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char184
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0080
++0100
++0300
++0600
++0C00
++1C00
++3000
++7F00
++7700
++0E00
++1C00
++1800
++3000
++6000
++8000
++0000
++ENDCHAR
++STARTCHAR char185
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++7000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char186
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++4400
++6C00
++3800
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char187
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0C00
++0600
++7F00
++7F00
++0600
++0C00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char188
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char189
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3000
++6700
++4D80
++0300
++0600
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char190
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7800
++1800
++3900
++1B00
++7600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char191
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++3000
++6000
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char238
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++CE00
++DB00
++DB00
++FB00
++DB00
++DB00
++CE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char160
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7800
++0C00
++7C00
++CC00
++CC00
++CC00
++7600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char161
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0200
++0600
++3C00
++6000
++6000
++7C00
++6600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char230
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++FE00
++0600
++0600
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1E00
++3600
++3600
++6600
++6600
++6600
++FF00
++C300
++C300
++0000
++0000
++ENDCHAR
++STARTCHAR char165
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7C00
++C600
++FE00
++C000
++C000
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char228
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++1800
++7E00
++DB00
++DB00
++DB00
++DB00
++7E00
++1800
++1800
++3C00
++0000
++ENDCHAR
++STARTCHAR char163
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++3200
++3200
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char229
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++6C00
++3800
++3800
++3800
++6C00
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char168
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++CE00
++D600
++E600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3800
++3800
++C600
++C600
++CE00
++D600
++E600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char170
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++6C00
++7800
++7800
++6C00
++6600
++E600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1E00
++3600
++6600
++6600
++6600
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char172
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++EE00
++FE00
++FE00
++D600
++D600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++FE00
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7C00
++C600
++C600
++C600
++C600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char175
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FE00
++C600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char239
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++CC00
++CC00
++FC00
++6C00
++CC00
++CE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char224
++ENCODING 210
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++DC00
++6600
++6600
++6600
++6600
++6600
++7C00
++6000
++6000
++F000
++0000
++ENDCHAR
++STARTCHAR char225
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7C00
++C600
++C000
++C000
++C000
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char226
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++5A00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char227
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++C600
++7C00
++0000
++ENDCHAR
++STARTCHAR char166
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++D600
++D600
++5400
++7C00
++5400
++D600
++D600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FC00
++6600
++6600
++7C00
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char236
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++6000
++6000
++7C00
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char235
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++F600
++DE00
++DE00
++F600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++6600
++0600
++0C00
++0600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char232
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++D600
++D600
++D600
++D600
++D600
++D600
++FE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char237
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++6600
++0600
++1E00
++0600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char233
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++D600
++D600
++D600
++D600
++D600
++D600
++FE00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char231
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char234
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F800
++B000
++3000
++3E00
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char158
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++CE00
++DB00
++DB00
++DB00
++FB00
++DB00
++DB00
++DB00
++DB00
++CE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char128
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3600
++6600
++C600
++C600
++FE00
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char129
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++6200
++6200
++6000
++7C00
++6600
++6600
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char150
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++FE00
++0600
++0600
++0000
++0000
++ENDCHAR
++STARTCHAR char132
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++FF00
++C300
++8100
++0000
++0000
++ENDCHAR
++STARTCHAR char133
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++6600
++6200
++6800
++7800
++6800
++6000
++6200
++6600
++FE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char148
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3C00
++1800
++7E00
++DB00
++DB00
++DB00
++DB00
++DB00
++7E00
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char131
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++6200
++6200
++6000
++6000
++6000
++6000
++6000
++6000
++F000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char149
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++6C00
++7C00
++3800
++3800
++7C00
++6C00
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char136
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++CE00
++CE00
++D600
++E600
++E600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char137
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3800
++3800
++C600
++C600
++CE00
++CE00
++D600
++E600
++E600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char138
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++E600
++6600
++6C00
++6C00
++7800
++7800
++6C00
++6C00
++6600
++E600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char139
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3600
++6600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char140
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++EE00
++FE00
++FE00
++D600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char141
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++C600
++C600
++FE00
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char142
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char143
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char159
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3F00
++6600
++6600
++6600
++3E00
++3E00
++6600
++6600
++6600
++E700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char144
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FC00
++6600
++6600
++6600
++7C00
++6000
++6000
++6000
++6000
++F000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char145
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C200
++C000
++C000
++C000
++C000
++C200
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char146
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++5A00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char147
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char134
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++D600
++D600
++5400
++5400
++7C00
++7C00
++5400
++D600
++D600
++D600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char130
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FC00
++6600
++6600
++6600
++7C00
++6600
++6600
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char156
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++F000
++6000
++6000
++6000
++7C00
++6600
++6600
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char155
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++F300
++DB00
++DB00
++DB00
++DB00
++F300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char135
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++C600
++0600
++0600
++3C00
++0600
++0600
++0600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char152
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char157
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++C600
++0600
++2600
++3E00
++2600
++0600
++0600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char153
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++FF00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char151
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++0600
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char154
++ENCODING 255
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++F800
++B000
++3000
++3000
++3C00
++3600
++3600
++3600
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/vtxt-latin-1.bdf
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-latin-1.bdf      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5906 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 2.4."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 256
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0F00
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char160
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++ENDCHAR
++STARTCHAR char161
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++1800
++3C00
++3C00
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++1800
++7E00
++C300
++C000
++C000
++C000
++C300
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char163
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 164
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4100
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++6300
++4100
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char165
++ENCODING 165
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++6600
++3C00
++1800
++FF00
++1800
++FF00
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char166
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3E00
++6300
++3000
++1C00
++3600
++6300
++6300
++3600
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char168
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++7E00
++DB00
++FF00
++BD00
++C300
++E700
++FF00
++7E00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5100
++5100
++5D00
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char170
++ENCODING 170
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++0C00
++3C00
++6400
++3C00
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++3000
++7F00
++7F00
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char172
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++7E00
++5A00
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 174
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5500
++5900
++5500
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char175
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char176
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3600
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char177
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char178
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++1800
++3000
++6400
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char179
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7C00
++0C00
++1800
++0C00
++6C00
++3800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char180
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char181
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++7E00
++6300
++6000
++C000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char182
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++DB00
++DB00
++DB00
++7B00
++1B00
++1B00
++1B00
++1B00
++1B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char183
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char184
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0080
++0100
++0300
++0600
++0C00
++1C00
++3000
++7F00
++7700
++0E00
++1C00
++1800
++3000
++6000
++8000
++0000
++ENDCHAR
++STARTCHAR char185
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++7000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char186
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++4400
++6C00
++3800
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char187
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0C00
++0600
++7F00
++7F00
++0600
++0C00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char188
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char189
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3000
++6700
++4D80
++0300
++0600
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char190
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7800
++1800
++3900
++1B00
++7600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char191
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++3000
++6000
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char192
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++0C00
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char193
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char194
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char195
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3B00
++6E00
++0000
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char196
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char197
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++1400
++1C00
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char198
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1F00
++3600
++6600
++6600
++7F00
++6600
++6600
++6600
++6600
++6700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char199
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6100
++3300
++1E00
++0600
++0300
++3E00
++0000
++ENDCHAR
++STARTCHAR char200
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++0C00
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char201
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char202
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char203
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char204
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++1800
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char205
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char206
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3C00
++6600
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char207
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char208
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3600
++3300
++3300
++7B00
++7B00
++3300
++3300
++3600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char209
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3B00
++6E00
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char210
++ENCODING 210
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++1800
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char211
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char212
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char213
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3B00
++6E00
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char214
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char215
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6300
++3600
++1C00
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char216
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0100
++0300
++3E00
++6700
++6700
++6F00
++6B00
++6B00
++7B00
++7300
++7300
++3E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char217
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++1800
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char218
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char219
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++1400
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char220
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char221
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char222
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++7800
++3000
++3E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char223
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++6300
++6700
++6E00
++6C00
++6600
++6300
++6B00
++6E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char224
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char225
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char226
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char227
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char228
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char229
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++1C00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char230
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++1B00
++7E00
++D800
++DC00
++7700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char231
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0C00
++0600
++3C00
++0000
++ENDCHAR
++STARTCHAR char232
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char233
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char234
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char235
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char236
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++3000
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char237
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char238
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++3C00
++6600
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char239
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0F00
++0600
++3E00
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char241
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char242
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char243
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char244
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char245
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char246
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char247
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++7E00
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char248
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0100
++0300
++3E00
++6700
++6F00
++6B00
++7B00
++7300
++3E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char249
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char250
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char251
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++3C00
++6600
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char252
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char253
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char254
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7800
++3000
++3E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char255
++ENCODING 255
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/vtxt-latin-2.bdf
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-latin-2.bdf      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5906 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-2
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 3.3."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 256
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0F00
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char160
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++ENDCHAR
++STARTCHAR char65
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0600
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++3C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3C00
++3800
++3000
++7000
++F100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 164
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4100
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++6300
++4100
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 165
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7B00
++3300
++3600
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3E00
++6300
++3000
++1C00
++3600
++6300
++6300
++3600
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char196
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 170
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0600
++0300
++3E00
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 174
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++7E00
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char176
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3600
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0600
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0C00
++1800
++0E00
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1E00
++1C00
++1800
++3800
++7800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char180
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3980
++1980
++1B00
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char184
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0080
++0100
++0300
++0600
++0C00
++1C00
++3000
++7F00
++7700
++0E00
++1C00
++1800
++3000
++6000
++8000
++0000
++ENDCHAR
++STARTCHAR char185
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++1C00
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0300
++1E00
++0000
++0000
++ENDCHAR
++STARTCHAR char187
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0180
++0980
++1B00
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char189
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3300
++6600
++CC00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char190
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6600
++3C00
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++0C00
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char193
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0300
++0600
++0000
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char194
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char195
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++3E00
++0000
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char196
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++7C00
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char199
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6100
++3300
++1E00
++0600
++0300
++3E00
++0000
++ENDCHAR
++STARTCHAR char200
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3300
++1E00
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char201
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char202
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0C00
++0600
++0000
++0000
++ENDCHAR
++STARTCHAR char203
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char204
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3300
++1E00
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char205
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char206
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3C00
++6600
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char207
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char208
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3600
++3300
++3300
++7B00
++7B00
++3300
++3300
++3600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char210
++ENCODING 210
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char211
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char212
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char213
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3300
++6600
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char214
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char215
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6300
++3600
++1C00
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char216
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char217
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1400
++6B00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char218
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char219
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1B00
++3600
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char220
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char221
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0600
++3C00
++0000
++0000
++ENDCHAR
++STARTCHAR char223
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++6300
++6700
++6E00
++6C00
++6600
++6300
++6B00
++6E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char224
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0C00
++1800
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char225
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char226
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char227
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++3C00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char228
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char231
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0C00
++0600
++3C00
++0000
++ENDCHAR
++STARTCHAR char232
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6600
++3C00
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char233
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char234
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++1800
++0E00
++0000
++0000
++ENDCHAR
++STARTCHAR char235
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char236
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3300
++1E00
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char237
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char238
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++3C00
++6600
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char239
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6E00
++3600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0F00
++0600
++3E00
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char241
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char242
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3300
++1E00
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char243
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char244
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char245
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3300
++6600
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char246
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char247
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++7E00
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char248
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3300
++1E00
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char249
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++2400
++2400
++1800
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char250
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char251
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3300
++6600
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char252
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char253
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0300
++1E00
++0000
++0000
++ENDCHAR
++STARTCHAR char255
++ENCODING 255
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/xio.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/xio.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,1156 @@
++#include <stdio.h>
++#include <unistd.h>
++#include <stdlib.h>
++#include <string.h>
++#include <fcntl.h>
++#include <signal.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++#include <X11/Xatom.h>
++#define XK_MISCELLANY
++#define XK_LATIN1
++#include <X11/keysymdef.h>
++#include <sys/time.h>
++#include "vt.h"
++#include "misc.h"
++#include "dllist.h"
++#include "xio.h"
++#include "fdset.h"
++#include "lang.h"
++#include "icon.xbm"
++#include "font.h"
++
++#define WW (W*CW) /* pixel width of window */
++#define WH (H*CH) /* pixel hegiht of window */
++#define NO_SEL 999 /* sel_y1 value if no selection */
++#define SEL_MIN_TIME 500 /* anything shorter is a click */
++
++static struct dl_head dpys[1]; /* list of all displays */
++static void xio_timer(void *data, int fd);
++static void handle_event(struct xio *xio, int fd);
++
++
++static int timer_init(int argc, char **argv)
++{
++    int p[2], timer_pid, i;
++
++    if (pipe(p) == -1)
++    return -1;
++
++    signal(SIGPIPE, SIG_DFL);
++    timer_pid = fork();
++    if (timer_pid == -1)
++    return -1;
++    if (timer_pid > 0)
++    {
++    fdset_add_fd(fds, p[0], xio_timer, 0);
++    close(p[1]);
++    return 0;
++    }
++
++    close(p[0]);
++    for (i = 0; i < 32; ++i)
++    if (p[1] != i)
++    close(i);
++    memcpy(argv[0], "Timer", 6);
++
++    for (;;)
++    {
++    usleep(300000);
++    write(p[1], "*", 1);
++    }
++}
++
++
++static int local_init(int argc, char **argv)
++{
++    static int inited = 0;
++
++    if (inited)
++      return 0;
++
++    if (timer_init(argc, argv) == -1)
++      return -1;
++
++    dl_init(dpys);
++
++    inited = 1;
++    return 0;
++}
++
++
++static int get_colors(struct xio *xio)
++{
++    int i;
++    XColor c;
++
++    static short rgb[][3] =
++    {
++      { 0x0000,0x0000,0x0000 },
++      { 0xffff,0x0000,0x0000 },
++      { 0x0000,0xffff,0x0000 },
++      { 0xffff,0xffff,0x0000 },
++      { 0x0000,0x0000,0xffff },
++      { 0xffff,0x0000,0xffff },
++      { 0x0000,0xffff,0xffff },
++      { 0xffff,0xffff,0xffff },
++      { 0x7fff,0x7fff,0x7fff },
++      { 0x7fff,0x0000,0x0000 },
++      { 0x0000,0x7fff,0x0000 },
++      { 0x7fff,0x7fff,0x0000 },
++      { 0x0000,0x0000,0x7fff },
++      { 0x7fff,0x0000,0x7fff },
++      { 0x0000,0x7fff,0x7fff },
++      { 0x3fff,0x3fff,0x3fff },
++    };
++
++    for (i = 0; i < 16; ++i)
++    {
++      c.red = rgb[i][0];
++      c.green = rgb[i][1];
++      c.blue = rgb[i][2];
++      if (XAllocColor(xio->dpy, xio->cmap, &c) == 0)
++          return -1;
++      xio->color[i] = c.pixel;
++    }
++    return 0;
++}
++
++
++static int get_fonts(struct xio *xio)
++{
++    GC gc;
++    int i;
++    unsigned char *font_bits;
++    switch(latin1) {
++        case LATIN1: font_bits=font1_bits; break;
++        case LATIN2: font_bits=font2_bits; break;
++        case KOI8: font_bits=font3_bits; break;
++        case GREEK: font_bits=font4_bits; break;
++        default: font_bits=font1_bits; break;
++    }
++
++    xio->font[0] = XCreateBitmapFromData(xio->dpy, xio->root,
++                                       font_bits, font_width, font_height);
++    xio->font[1] = XCreatePixmap(xio->dpy, xio->root,
++                                      font_width, font_height*2, 1);
++    gc = XCreateGC(xio->dpy, xio->font[0], 0, 0);
++    for (i = 0; i < font_height; ++i)
++    {
++      XCopyArea(xio->dpy, xio->font[0], xio->font[1], gc, 0, i,
++                                                  font_width, 1, 0, i*2);
++      XCopyArea(xio->dpy, xio->font[0], xio->font[1], gc, 0, i,
++                                                  font_width, 1, 0, i*2+1);
++    }
++    XFreeGC(xio->dpy, gc);
++    return 0;
++}
++
++
++static void xlib_conn_watch(Display *dpy, void *fds, int fd, int open_flag, void *data)
++{
++    if (open_flag)
++      fdset_add_fd(fds, fd, XProcessInternalConnection, dpy);
++    else
++      fdset_del_fd(fds, fd);
++}
++
++
++struct xio * xio_open_dpy(char *dpy, int argc, char **argv)
++{
++    XClassHint classhint[1];
++    struct xio *xio;
++
++    if (local_init(argc, argv) == -1)
++      goto fail1;
++    
++    if (not(xio = malloc(sizeof(*xio))))
++      goto fail1;
++
++    if (not(xio->dpy = XOpenDisplay(dpy)))
++      goto fail2;
++
++    xio->fd = ConnectionNumber(xio->dpy);
++    xio->argc = argc;
++    xio->argv = argv;
++    dl_init(xio->windows);
++    xio->screen = DefaultScreen(xio->dpy);
++    xio->depth = DefaultDepth(xio->dpy, xio->screen);
++    xio->width = DisplayWidth(xio->dpy, xio->screen);
++    xio->height = DisplayHeight(xio->dpy, xio->screen);
++    xio->root = DefaultRootWindow(xio->dpy);
++    xio->cmap = DefaultColormap(xio->dpy, xio->screen);
++    xio->xa_del_win = XInternAtom(xio->dpy, "WM_DELETE_WINDOW", False);
++    xio->xa_targets = XInternAtom(xio->dpy, "TARGETS", False);
++    xio->xa_timestamp = XInternAtom(xio->dpy, "TIMESTAMP", False);
++    xio->xa_multiple = XInternAtom(xio->dpy, "MULTIPLE", False);
++    xio->xa_text = XInternAtom(xio->dpy, "TEXT", False);
++
++    if (get_colors(xio) == -1)
++      goto fail3;
++
++    if (get_fonts(xio) == -1)
++      goto fail3;
++
++    if (fdset_add_fd(fds, xio->fd, handle_event, xio) == -1)
++      goto fail3;
++    
++    XAddConnectionWatch(xio->dpy, PTR xlib_conn_watch, PTR fds);
++      
++    xio->icon = XCreateBitmapFromData(xio->dpy, xio->root,
++                                      icon_bits, icon_width, icon_height);
++
++    xio->group_leader = XCreateSimpleWindow(xio->dpy, xio->root,
++                                                      0, 0, 1, 1, 0, 0, 0);
++    XSetCommand(xio->dpy, xio->group_leader, xio->argv, xio->argc);
++    classhint->res_name = "VTLeader";
++    classhint->res_class = "AleVT";
++    XSetClassHint(xio->dpy, xio->group_leader, classhint);
++
++    dl_insert_first(dpys, xio->node);
++    return xio;
++
++fail4:
++    fdset_del_fd(fds, xio->fd);
++fail3:
++    XCloseDisplay(xio->dpy);
++fail2:
++    free(xio);
++fail1:
++    return 0;
++}
++
++
++static void set_user_geometry(struct xio_win *xw, char *geom, XSizeHints *sh, int bwidth)
++{
++    static int gravs[] = { NorthWestGravity, NorthEastGravity,
++                         SouthWestGravity, SouthEastGravity };
++    int f, g = 0;
++
++    f = XParseGeometry(geom, &sh->x, &sh->y, &sh->width, &sh->height);
++
++    if (f & WidthValue)
++      sh->width = sh->base_width + sh->width * sh->width_inc;
++    if (f & HeightValue)
++      sh->height = sh->base_height + sh->height * sh->height_inc;
++    if (f & XNegative)
++      g+=1, sh->x = xw->xio->width + sh->x - sh->width - bwidth;
++    if (f & YNegative)
++      g+=2, sh->y = xw->xio->height + sh->y - sh->height - bwidth;
++
++    sh->width = bound(sh->min_width, sh->width, sh->max_width);
++    sh->height = bound(sh->min_height, sh->height, sh->max_height);
++
++    if (f & (WidthValue | HeightValue))
++      sh->flags |= USSize;
++    if (f & (XValue | YValue))
++      sh->flags |= USPosition | PWinGravity;
++
++    sh->win_gravity = gravs[g];
++}
++
++
++struct xio_win * xio_open_win(struct xio *xio, char *geom)
++{
++    struct xio_win *xw;
++    XSetWindowAttributes attr;
++    XGCValues gcval;
++    XSizeHints sizehint[1];
++    XClassHint classhint[1];
++    XWMHints wmhint[1];
++
++    if (not(xw = malloc(sizeof(*xw))))
++      goto fail1;
++
++    xw->xio = xio;
++
++    sizehint->flags = PSize | PBaseSize | PMinSize | PMaxSize | PResizeInc;
++    sizehint->x = sizehint->y = 0;
++    sizehint->width_inc = CW;
++    sizehint->height_inc = CH;
++    sizehint->base_width = 0;
++    sizehint->base_height = 0;
++    sizehint->min_width = 11*CW;
++    sizehint->min_height = 1*CH;
++    sizehint->max_width = sizehint->width = WW + CW;
++    sizehint->max_height = sizehint->height = WH;
++    set_user_geometry(xw, geom, sizehint, 1);
++
++    attr.background_pixel = xio->color[0];
++    attr.event_mask = KeyPressMask |
++                       ButtonPressMask|ButtonReleaseMask|Button1MotionMask |
++                       ExposureMask;
++    xw->win = XCreateWindow(xio->dpy, xio->root,
++              sizehint->x, sizehint->y, sizehint->width, sizehint->height, 1,
++                      CopyFromParent, CopyFromParent, CopyFromParent,
++                      CWBackPixel|CWEventMask, &attr);
++
++    classhint->res_name = "VTPage";
++    classhint->res_class = "AleVT";
++
++    wmhint->flags = InputHint | StateHint | WindowGroupHint | IconPixmapHint;
++    wmhint->input = True;
++    wmhint->initial_state = NormalState; //IconicState;
++    wmhint->window_group = xio->group_leader;
++    wmhint->icon_pixmap = xio->icon;
++
++    XSetWMProperties(xio->dpy, xw->win, 0,0, 0,0, sizehint, wmhint, classhint);
++    XSetWMProtocols(xio->dpy, xw->win, &xio->xa_del_win, 1);
++
++    xw->title[0] = 0;
++    xio_title(xw, "AleVT"); // will be reset pretty soon
++
++    gcval.graphics_exposures = False;
++    xw->gc = XCreateGC(xio->dpy, xw->win, GCGraphicsExposures, &gcval);
++
++    xw->tstamp = CurrentTime;
++    xw->fg = xw->bg = -1;     /* unknown colors */
++
++    xw->curs_x = xw->curs_y = 999;    // no cursor
++
++    xw->sel_y1 = NO_SEL;      /* no selection area */
++    xw->sel_start_t = 0;      /* no selection-drag active */
++    xw->sel_set_t = 0;                /* not selection owner */
++    xw->sel_pixmap = 0;               /* no selection pixmap yet */
++
++    xio_clear_win(xw);
++    xw->blink_on = xw->reveal = 0;
++
++    xw->handler = 0;
++
++    XMapWindow(xio->dpy, xw->win);
++    dl_insert_first(xio->windows, xw->node);
++    return xw;
++
++fail2:
++    free(xw);
++fail1:
++    return 0;
++}
++
++
++void xio_close_win(struct xio_win *xw, int dpy_too)
++{
++    struct xio *xio = xw->xio;
++
++    XDestroyWindow(xio->dpy, xw->win);
++    dl_remove(xw->node);
++    free(xw);
++
++    if (dpy_too && dl_empty(xio->windows))
++      xio_close_dpy(xio);
++}
++
++
++void xio_close_dpy(struct xio *xio)
++{
++    while (not dl_empty(xio->windows))
++      xio_close_win((struct xio_win *)xio->windows->first, 0);
++
++    XDestroyWindow(xio->dpy, xio->group_leader);
++    XRemoveConnectionWatch(xio->dpy, PTR xlib_conn_watch, PTR fds);
++    fdset_del_fd(fds, xio->fd);
++    dl_remove(xio->node);
++    free(xio);
++}
++
++
++void xio_set_handler(struct xio_win *xw, void *handler, void *data)
++{
++    xw->handler = handler;
++    xw->data = data;
++}
++
++
++void xio_title(struct xio_win *xw, char *title)
++{
++    char buf[sizeof(xw->title) + 32];
++
++    if (strlen(title) >= sizeof(xw->title))
++      return; //TODO: trimm...
++    if (strcmp(xw->title, title) == 0)
++      return;
++
++    strcpy(xw->title, title);
++    sprintf(buf, "AleVT " VERSION "    %s", xw->title);
++    XStoreName(xw->xio->dpy, xw->win, buf);
++    XSetIconName(xw->xio->dpy, xw->win, xw->title);
++}
++
++
++void xio_clear_win(struct xio_win *xw)
++{
++    memset(xw->ch, ' ', sizeof(xw->ch));
++    xw->dheight = xw->blink = xw->concealed = 0;
++    xw->hidden = xw->lhidden = 0;
++    xw->modified = ALL_LINES;
++}
++
++
++void xio_put_line(struct xio_win *xw, int y, u8 *data)
++{
++    u8 *p = xw->ch + y*W;
++    u8 *ep = p + W;
++    lbits yb = 1 << y;
++    lbits x = xw->dheight;
++
++    if (y < 0 || y >= H)
++      return;
++
++    if (memcmp(data, p, ep - p) == 0)
++      return;
++
++    xw->modified |= yb;
++    xw->blink &= ~yb;
++    xw->dheight &= ~yb;
++    xw->concealed &= ~yb;
++
++    while (p < ep)
++      switch (*p++ = *data++)
++      {
++          case 0x08:
++              xw->blink |= yb;
++              break;
++          case 0x0d:
++              if (y < H-1)
++                  xw->dheight |= yb;
++              break;
++          case 0x18:
++              xw->concealed |= yb;
++              break;
++      }
++
++    if ((xw->dheight ^ x) & yb) // dheight has changed, recalc hidden
++    {
++      xw->hidden &= yb*2 - 1;
++      for (; yb & ALL_LINES/2; yb *= 2)
++          if (~xw->hidden & xw->dheight & yb)
++              xw->hidden |= yb*2;
++    }
++}
++
++
++void xio_put_str(struct xio_win *xw, int y, u8 *str)
++{
++    u8 buf[W];
++    int l;
++    l = strlen(str);
++    if (l < W)
++    {
++      memcpy(buf, str, l);
++      memset(buf + l, ' ', W - l);
++    }
++    else
++      memcpy(buf, str, W);
++    xio_put_line(xw, y, buf);
++}
++
++
++static void dirty(struct xio_win *xw, int y1, int y2) // mark [y1,y2[ dirty
++{
++    if (y1 >= 0 && y1 < H && y1 < y2)
++    {
++      if (y2 > H)
++          y2 = H;
++      if (xw->hidden & (1 << y1))
++          y1--;
++      while (y1 < y2)
++          xw->modified |= 1 << y1++;
++    }
++}
++
++
++int xio_get_line(struct xio_win *xw, int y, u8 *data)
++{
++    if (y < 0 || y >= H)
++      return -1;
++    if (xw->hidden & (1 << y))
++      y--;
++    memcpy(data, xw->ch + y*W, 40);
++    return 0;
++}
++
++
++void xio_set_cursor(struct xio_win *xw, int x, int y)
++{
++    if (xw->curs_y >= 0 && xw->curs_y < H)
++      dirty(xw, xw->curs_y, xw->curs_y + 1);
++    if (x >= 0 && x < W && y >= 0 && y < H)
++      dirty(xw, y, y + 1);
++    else
++      x = y = 999;
++    xw->curs_x = x;
++    xw->curs_y = y;
++}
++
++
++static inline void draw_char(struct xio_win *xw, Window win, int fg, int bg,
++    int c, int dbl, int x, int y, int ry)
++{
++    struct xio *xio = xw->xio;
++
++    if (fg != xw->fg)
++      XSetForeground(xio->dpy, xw->gc, xio->color[xw->fg = fg]);
++    if (bg != xw->bg)
++      XSetBackground(xio->dpy, xw->gc, xio->color[xw->bg = bg]);
++
++    if (dbl)
++    {
++      XCopyPlane(xio->dpy, xio->font[1], win, xw->gc,
++                              c%32*CW, c/32*CH*2, CW, CH*2, x*CW, y*CH, 1);
++    }
++    else
++    {
++      XCopyPlane(xio->dpy, xio->font[0], win, xw->gc,
++                                  c%32*CW, c/32*CH, CW, CH, x*CW, y*CH, 1);
++      if (xw->dheight & (1<<ry))
++          XCopyPlane(xio->dpy, xio->font[0], win, xw->gc,
++                          ' '%32*CW, ' '/32*CH, CW, CH, x*CW, y*CH+CH, 1);
++    }
++}
++
++static void draw_cursor(struct xio_win *xw, int x, int y, int dbl)
++{
++    struct xio *xio = xw->xio;
++
++    if (xw->blink_on)
++      XSetForeground(xio->dpy, xw->gc, xio->color[xw->fg = xw->bg ^ 8]);
++    XDrawRectangle(xio->dpy, xw->win, xw->gc, x * CW, y * CH, CW-1,
++              (dbl ? 2*CH : CH)-1);
++}
++
++
++void xio_update_win(struct xio_win *xw)
++{
++    u8 *p = xw->ch;
++    lbits yb, redraw;
++    int x, y, c;
++
++    if (xw->modified == 0)
++      return;
++
++    redraw = xw->modified; // all modified lines
++    redraw |= xw->lhidden; // all previously hidden lines
++    redraw &= ~xw->hidden;
++
++    xw->lhidden = xw->hidden;
++    xw->modified = 0;
++
++    if (redraw == 0)
++      return;
++
++    for (yb = 1, y = 0; y < H; ++y, yb *= 2)
++      if (redraw & yb)
++      {
++          int fg = 7, bg = 0, _fg, _bg;
++          int dbl = 0, blk = 0, con = 0, gfx = 0, sep = 0, hld = 0;
++          int last_ch = ' ';
++
++          for (x = 0; x < W; ++x)
++          {
++              switch (c = *p++)
++              {
++                  case 0x00 ... 0x07: /* alpha + foreground color */
++                      fg = c & 7;
++                      gfx = 0;
++                      con = 0;
++                      goto ctrl;
++                  case 0x08: /* flash */
++                      blk = not xw->blink_on;
++                      goto ctrl;
++                  case 0x09: /* steady */
++                      blk = 0;
++                      goto ctrl;
++                  case 0x0a: /* end box */
++                  case 0x0b: /* start box */
++                      goto ctrl;
++                  case 0x0c: /* normal height */
++                      dbl = 0;
++                      goto ctrl;
++                  case 0x0d: /* double height */
++                      dbl = y < H-1;
++                      goto ctrl;
++                  case 0x10 ... 0x17: /* graphics + foreground color */
++                      fg = c & 7;
++                      gfx = 1;
++                      con = 0;
++                      goto ctrl;
++                  case 0x18: /* conceal display */
++                      con = not xw->reveal;
++                      goto ctrl;
++                  case 0x19: /* contiguous graphics */
++                      sep = 0;
++                      goto ctrl;
++                  case 0x1a: /* separate graphics */
++                      sep = 1;
++                      goto ctrl;
++                  case 0x1c: /* black background */
++                      bg = 0;
++                      goto ctrl;
++                  case 0x1d: /* new background */
++                      bg = fg;
++                      goto ctrl;
++                  case 0x1e: /* hold graphics */
++                      hld = 1;
++                      goto ctrl;
++                  case 0x1f: /* release graphics */
++                      hld = 0;
++                      goto ctrl;
++
++                  case 0x0e: /* SO (reserved, double width) */
++                  case 0x0f: /* SI (reserved, double size) */
++                      c= ' '; break;
++                  case 0x1b: /* ESC (reserved) */
++                      c = ' ';
++                      break;
++
++                  ctrl:
++                      c = ' ';
++                      if (hld && gfx)
++                          c = last_ch;
++                      break;
++
++                  case 0x80 ... 0x9f: /* these aren't used */
++                      c = BAD_CHAR;
++                      break;
++
++                  default: /* mapped to selected font */
++                      break;
++              }
++
++              if (gfx && (c & 0xa0) == 0x20)
++              {
++                  last_ch = c;
++                  c += (c & 0x40) ? 32 : -32;
++              }
++
++              _fg = fg;
++              _bg = bg;
++              if (blk)
++                  _fg |= 8;
++              if (y >= xw->sel_y1 && y < xw->sel_y2 &&
++                  x >= xw->sel_x1 && x < xw->sel_x2)
++                  _bg |= 8;
++              if (con)
++                  _fg = _bg;
++              
++              draw_char(xw, xw->win, _fg, _bg, c, dbl, x, y, y);
++
++              if (y == xw->curs_y && x == xw->curs_x)
++                  draw_cursor(xw, xw->curs_x, xw->curs_y, dbl);
++
++              if (xw->sel_pixmap && (_bg & 8))
++                  draw_char(xw, xw->sel_pixmap, con ? bg : fg, bg, c, dbl,
++                                          x - xw->sel_x1, y - xw->sel_y1, y);
++          }
++      }
++      else
++          p += 40;
++}
++
++
++static void for_all_windows(void (*func)(struct xio_win *xw), struct xio_win *except)
++{
++    struct xio *xio, *vtn;
++    struct xio_win *xw, *vwn;
++
++    for (xio = PTR dpys->first; vtn = PTR xio->node->next; xio = vtn)
++      for (xw = PTR xio->windows->first; vwn = PTR xw->node->next; xw = vwn)
++          if (xw != except)
++              func(xw);
++}
++
++
++int xio_set_concealed(struct xio_win *xw, int on)
++{
++    on = !!on;
++    if (xw->reveal == on)
++      return on;
++
++    xw->reveal = on;
++    xw->modified |= xw->concealed;
++    return !on;
++}
++
++
++static void sel_set(struct xio_win *xw, int x1, int y1, int x2, int y2)
++{
++    int t;
++
++    x1 = bound(0, x1, W-1);
++    y1 = bound(0, y1, H-1);
++    x2 = bound(0, x2, W-1);
++    y2 = bound(0, y2, H-1);
++
++    if (x1 > x2)
++      t = x1, x1 = x2, x2 = t;
++    if (y1 > y2)
++      t = y1, y1 = y2, y2 = t;
++
++    dirty(xw, xw->sel_y1, xw->sel_y2);
++
++    if (xw->hidden & (1 << y1))
++      y1--;
++    if (xw->hidden & (2 << y2))
++      y2++;
++
++    xw->sel_x1 = x1;
++    xw->sel_y1 = y1;
++    xw->sel_x2 = x2 + 1;
++    xw->sel_y2 = y2 + 1;
++    dirty(xw, xw->sel_y1, xw->sel_y2);
++}
++
++
++static void sel_abort(struct xio_win *xw)
++{
++    if (xw->sel_set_t)
++      XSetSelectionOwner(xw->xio->dpy, XA_PRIMARY, None, xw->sel_set_t);
++    if (xw->sel_y1 != NO_SEL)
++      dirty(xw, xw->sel_y1, xw->sel_y2);
++    xw->sel_y1 = NO_SEL;
++    xw->sel_set_t = 0;
++    xw->sel_start_t = 0;
++}
++
++
++static void sel_start(struct xio_win *xw, int x, int y, Time t)
++{
++    sel_abort(xw);
++    xw->sel_start_x = x;
++    xw->sel_start_y = y;
++    xw->sel_start_t = t;
++}
++
++
++static void sel_move(struct xio_win *xw, int x, int y, Time t)
++{
++    if (xw->sel_start_t == 0)
++      return;
++    if (xw->sel_y1 == NO_SEL)
++      if (t - xw->sel_start_t < SEL_MIN_TIME)
++          if (x == xw->sel_start_x)
++              if (y == xw->sel_start_y)
++                  return;
++    sel_set(xw, xw->sel_start_x, xw->sel_start_y, x, y);
++}
++
++
++static int sel_end(struct xio_win *xw, int x, int y, Time t)
++{
++    sel_move(xw, x, y, t);
++    xw->sel_start_t = 0;
++
++    if (xw->sel_y1 == NO_SEL)
++      return 0;
++
++    for_all_windows(sel_abort, xw);
++    XSetSelectionOwner(xw->xio->dpy, XA_PRIMARY, xw->win, t);
++    if (XGetSelectionOwner(xw->xio->dpy, XA_PRIMARY) == xw->win)
++      xw->sel_set_t = t;
++    else
++      sel_abort(xw);
++    return 1;
++}
++
++
++static int sel_convert2ascii(struct xio_win *xw, u8 *buf)
++{
++    u8 *d = buf;
++    int x, y, nl = 0;
++
++    for (y = xw->sel_y1; y < xw->sel_y2; y++)
++    {
++      u8 *s = xw->ch + y * W;
++      int gfx = 0, con = 0;
++
++      if (~xw->hidden & (1 << y))
++      {
++          for (x = 0; x < xw->sel_x2; ++x)
++          {
++              int ch, c = ' ';
++              switch (ch = *s++)
++              {
++                  case 0x00 ... 0x07:
++                      gfx = con = 0;
++                      break;
++                  case 0x10 ... 0x17:
++                      gfx = 1, con = 0;
++                      break;
++                  case 0x18:
++                      con = not xw->reveal;
++                      break;
++                  case 0xa0 ... 0xff:
++                  case 0x20 ... 0x7f:
++                      if (not con)
++                          if (gfx && ch != ' ' && (ch & 0xa0) == 0x20)
++                              c = '#';
++                          else if (ch == 0x7f)
++                              c = '*';
++                          else
++                              c = ch;
++                      break;
++              }
++              if (x >= xw->sel_x1)
++              {
++                  if (nl)
++                      *d++ = '\n', nl = 0;
++                  *d++ = c;
++              }
++          }
++          nl = 1;
++      }
++    }
++    *d = 0; // not necessary
++    return d - buf;
++}
++
++
++static Pixmap sel_convert2pixmap(struct xio_win *xw)
++{
++    struct xio *xio = xw->xio;
++    Pixmap pm;
++
++    if (xw->sel_y1 == NO_SEL)
++    return None;
++
++    pm = XCreatePixmap(xio->dpy, xio->root, (xw->sel_x2 - xw->sel_x1) * CW,
++                                          (xw->sel_y2 - xw->sel_y1) * CH,
++                                                               xio->depth);
++    xw->sel_pixmap = pm;
++    dirty(xw, xw->sel_y1, xw->sel_y2);
++    xio_update_win(xw);
++    xw->sel_pixmap = 0;
++
++    return pm;
++}
++
++
++static int sel_do_conv(struct xio_win *xw, Window w, Atom type, Atom prop)
++{
++    struct xio *xio = xw->xio;
++
++    if (type == xio->xa_targets)
++    {
++      u32 atoms[6];
++
++      atoms[0] = XA_STRING;
++      atoms[1] = xio->xa_text;
++      atoms[2] = XA_PIXMAP;
++      atoms[3] = XA_COLORMAP;
++      atoms[4] = xio->xa_multiple;
++      atoms[5] = xio->xa_timestamp;
++      XChangeProperty(xio->dpy, w, prop, type,
++                              32, PropModeReplace, PTR atoms, NELEM(atoms));
++    }
++    else if (type == xio->xa_timestamp)
++    {
++      u32 t = xw->sel_set_t;
++
++      XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &t, 1);
++    }
++    else if (type == XA_COLORMAP)
++    {
++      u32 t = xio->cmap;
++
++      XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &t, 1);
++    }
++    else if (type == XA_STRING || type == xio->xa_text)
++    {
++      u8 buf[H * (W+1)];
++      int len;
++
++      len = sel_convert2ascii(xw, buf);
++
++      XChangeProperty(xio->dpy, w, prop, type, 8, PropModeReplace, buf, len);
++    }
++    else if (type == XA_PIXMAP || type == XA_DRAWABLE)
++    {
++      Pixmap pm;
++
++      pm = sel_convert2pixmap(xw);
++
++      XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &pm, 1);
++    }
++    else if (type == xio->xa_multiple)
++    {
++      u32 *atoms, ty, fo, i;
++      unsigned long n, b;
++
++      if (prop != None)
++      {
++          if (Success == XGetWindowProperty(xio->dpy, w, prop, 0, 1024, 0,
++                      AnyPropertyType, PTR &ty, PTR &fo, &n, &b, PTR &atoms))
++          {
++              if (fo == 32 && n%2 == 0)
++              {
++                  for (i = 0; i < n; i += 2)
++                      if (sel_do_conv(xw, w, atoms[i], atoms[i+1]) == None)
++                          atoms[i] = None;
++              }
++              XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace,
++                                                               PTR atoms, n);
++              XFree(atoms);
++          }
++      }
++    }
++    else
++      return None;
++    return prop;
++}
++
++
++static void sel_send(struct xio_win *xw, XSelectionRequestEvent *req)
++{
++    XSelectionEvent ev[1];
++
++    if (req->property == None)
++      req->property = req->target;
++
++    ev->type = SelectionNotify;
++    ev->requestor = req->requestor;
++    ev->selection = req->selection;
++    ev->target = req->target;
++    ev->property = sel_do_conv(xw, req->requestor, req->target, req->property);
++    ev->time = req->time;
++    XSendEvent(xw->xio->dpy, req->requestor, False, 0, PTR ev);
++}
++
++
++static void sel_retrieve(struct xio_win *xw, Window w, Atom prop, int del)
++{
++    u8 *data;
++    u32 ty, fo;
++    unsigned long n, b;
++    struct xio *xio = xw->xio;
++
++    if (prop == None)
++      return;
++
++    if (Success == XGetWindowProperty(xio->dpy, w, prop, 0, 1024, del,
++                      AnyPropertyType, PTR &ty, PTR &fo, &n, &b, PTR &data))
++    {
++      if (fo == 8 && n != 0)
++      {
++          struct vt_event vtev[1];
++
++          vtev->resource = xw;
++          vtev->type = EV_SELECTION;
++          vtev->i1 = n;
++          vtev->p1 = data;
++          xw->handler(xw->data, vtev);
++      }
++      XFree(data);
++    }
++}
++
++
++void xio_cancel_selection(struct xio_win *xw)
++{
++    sel_abort(xw);
++}
++
++
++void xio_query_selection(struct xio_win *xw)
++{
++    struct xio *xio = xw->xio;
++
++    if (XGetSelectionOwner(xio->dpy, XA_PRIMARY) == None)
++      sel_retrieve(xw, xio->root, XA_CUT_BUFFER0, False);
++    else
++    {
++      XDeleteProperty(xio->dpy, xw->win, XA_STRING);
++      XConvertSelection(xio->dpy, XA_PRIMARY, XA_STRING,
++                                          XA_STRING, xw->win, xw->tstamp);
++    }
++}
++
++
++void xio_set_selection(struct xio_win *xw, int x1, int y1, int x2, int y2)
++{
++    sel_start(xw, x1, y1, xw->tstamp - SEL_MIN_TIME);
++    sel_end(xw, x2, y2, xw->tstamp);
++}
++
++
++static void handle_event(struct xio *xio, int fd)
++{
++    struct xio_win *xw;
++    struct vt_event vtev[1];
++    XEvent ev[1];
++
++    XNextEvent(xio->dpy, ev);
++
++    for (xw = PTR xio->windows->first; xw->node->next; xw = PTR xw->node->next)
++      if (xw->win == ev->xany.window)
++          break;
++    if (xw->node->next == 0)
++      return;
++
++    vtev->resource = xw;
++
++    switch(ev->type)
++    {
++      case Expose:
++      {
++          int y1 = ev->xexpose.y / CH;
++          int y2 = (ev->xexpose.y + ev->xexpose.height + CH-1) / CH;
++
++          dirty(xw, y1, y2);
++          break;
++      }
++      case ClientMessage:
++      {
++          vtev->type = EV_CLOSE;
++          if (ev->xclient.format == 32)
++              if ((Atom)ev->xclient.data.l[0] == xio->xa_del_win)
++                  xw->handler(xw->data, vtev);
++          break;
++      }
++      case KeyPress:
++      {
++          unsigned char ch;
++          KeySym k;
++
++          xw->tstamp = ev->xkey.time;
++          vtev->type = EV_KEY;
++          vtev->i1 = 0;
++          vtev->i2 = (ev->xkey.state & ShiftMask) != 0;
++          if (XLookupString(&ev->xkey, &ch, 1, &k, 0))
++              vtev->i1 = ch;
++          else
++              switch (k)
++              {
++                  case XK_Left:       vtev->i1 = KEY_LEFT;    break;
++                  case XK_Right:      vtev->i1 = KEY_RIGHT;   break;
++                  case XK_Up:         vtev->i1 = KEY_UP;      break;
++                  case XK_Down:       vtev->i1 = KEY_DOWN;    break;
++                  case XK_Prior:      vtev->i1 = KEY_PUP;     break;
++                  case XK_Next:       vtev->i1 = KEY_PDOWN;   break;
++                  case XK_Delete:     vtev->i1 = KEY_DEL;     break;
++                  case XK_Insert:     vtev->i1 = KEY_INS;     break;
++                  case XK_F1:         vtev->i1 = KEY_F(1);    break;
++                  case XK_F2:         vtev->i1 = KEY_F(2);    break;
++                  case XK_F3:         vtev->i1 = KEY_F(3);    break;
++                  case XK_F4:         vtev->i1 = KEY_F(4);    break;
++                  case XK_F5:         vtev->i1 = KEY_F(5);    break;
++                  case XK_F6:         vtev->i1 = KEY_F(6);    break;
++                  case XK_F7:         vtev->i1 = KEY_F(7);    break;
++                  case XK_F8:         vtev->i1 = KEY_F(8);    break;
++                  case XK_F9:         vtev->i1 = KEY_F(9);    break;
++                  case XK_F10:        vtev->i1 = KEY_F(10);   break;
++                  case XK_F11:        vtev->i1 = KEY_F(11);   break;
++                  case XK_F12:        vtev->i1 = KEY_F(12);   break;
++              }
++          if (vtev->i1)
++              xw->handler(xw->data, vtev);
++          break;
++      }
++      case ButtonPress:
++      {
++          xw->tstamp = ev->xkey.time;
++          ev->xbutton.x /= CW;
++          ev->xbutton.y /= CH;
++          if (ev->xbutton.button == Button1)
++              sel_start(xw, ev->xbutton.x, ev->xbutton.y, ev->xbutton.time);
++          break;
++      }
++      case MotionNotify:
++      {
++          xw->tstamp = ev->xkey.time;
++          ev->xmotion.x /= CW;
++          ev->xmotion.y /= CH;
++          if (ev->xmotion.state & Button1Mask)
++              sel_move(xw, ev->xmotion.x, ev->xmotion.y, ev->xmotion.time);
++          break;
++      }
++      case ButtonRelease:
++      {
++          xw->tstamp = ev->xkey.time;
++          ev->xbutton.x /= CW;
++          ev->xbutton.y /= CH;
++          if (ev->xbutton.button == Button1)
++              if (sel_end(xw, ev->xbutton.x, ev->xbutton.y, ev->xbutton.time))
++                  break;
++
++          vtev->type = EV_MOUSE;
++          vtev->i1 = ev->xbutton.button;
++          vtev->i2 = (ev->xbutton.state & ShiftMask) != 0;
++          vtev->i3 = ev->xbutton.x;
++          vtev->i4 = ev->xbutton.y;
++          if (vtev->i3 >= 0 && vtev->i3 < W && vtev->i4 >= 0 && vtev->i4 < H)
++              xw->handler(xw->data, vtev);
++          break;
++      }
++      case SelectionClear:
++      {
++      // may be our own Owner=None due to sel_start
++          if (xw->sel_set_t && ev->xselectionclear.time >= xw->sel_set_t)
++          {
++              xw->sel_set_t = 0; // no need to reset owner
++              sel_abort(xw);
++          }
++          break;
++      }
++      case SelectionRequest:
++      {
++          sel_send(xw, &ev->xselectionrequest);
++          break;
++      }
++      case SelectionNotify:
++      {
++          sel_retrieve(xw, ev->xselection.requestor, ev->xselection.property, True);
++          break;
++      }
++      default:
++              break;
++    }
++}
++
++
++static void switch_blink_state(struct xio_win *xw)
++{
++    xw->blink_on = !xw->blink_on;
++    xw->modified |= xw->blink;
++    dirty(xw, xw->curs_y, xw->curs_y + 1);
++}
++
++
++static void send_timer_event(struct xio_win *xw)
++{
++    struct vt_event vtev[1];
++    vtev->type = EV_TIMER;
++    xw->handler(xw->data, vtev);
++}
++
++
++static void xio_timer(void *data, int fd)
++{
++    char buf[64];
++    read(fd, buf, sizeof(buf));
++    for_all_windows(switch_blink_state, 0);
++    for_all_windows(send_timer_event, 0);
++}
++
++
++void xio_event_loop(void)
++{
++    struct xio *xio, *vtn;
++    int f;
++
++    while (not dl_empty(dpys))
++    {
++      do
++      {
++          for_all_windows(xio_update_win, 0);
++          f = 0;
++          for (xio = PTR dpys->first; vtn = PTR xio->node->next; xio = vtn)
++              while (XPending(xio->dpy))
++              {
++                  handle_event(xio, xio->fd);
++                  f++;
++              }
++      } while (f);
++      fdset_select(fds, -1);
++    }
++}
+diff -r af23d23c278b util/alevt/xio.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/xio.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,80 @@
++#ifndef VTXIO_H
++#define VTXIO_H
++
++#include <X11/Xlib.h>
++#include "vt.h"
++#include "dllist.h"
++
++typedef u32 lbits;
++#define ALL_LINES ((1ul << H) - 1)
++
++/* one xio per display */
++struct xio
++{
++    struct dl_node node[1];
++    int argc;
++    char **argv;
++    Display *dpy;                     /* display connection */
++    int fd;                           /* the displays file descriptor */
++    Atom xa_del_win;                  /* WM_DELETE_WINDOW atom */
++    Atom xa_targets;                  /* TARGETS atom (selection) */
++    Atom xa_timestamp;                        /* TIMESTAMP atom (selection) */
++    Atom xa_text;                     /* TEXT atom (selection) */
++    Atom xa_multiple;                 /* MULTIPLE atom (selection) */
++    Window group_leader;              /* unmapped window */
++    int screen;                               /* DefaultScreen */
++    int width, height;                        /* DisplayWidth/Height */
++    int depth;                                /* DefaultDepth */
++    Window root;                      /* DefaultRoot */
++    Colormap cmap;
++    int color[16];                    /* 8 normal, 8 dim intensity */
++    Pixmap font[2];                   /* normal, dbl-height */
++    Pixmap icon;                      /* icon pixmap */
++    struct dl_head windows[1];                /* all windows on this display */
++};
++
++/* one vt_win per window */
++struct xio_win
++{
++    struct dl_node node[1];
++    struct xio *xio;                  /* display */
++    Window win;                               /* the drawing window */
++    Time tstamp;                      /* timestamp of last user event */
++    GC gc;                            /* it's graphics context */
++    u8 ch[H*W];                               /* the page contents */
++    lbits modified, hidden, lhidden;  /* states for each line */
++    lbits dheight, blink, concealed;  /* attributes for each line */
++    int fg, bg;                               /* current foreground/background */
++    int blink_on;                     /* blinking on */
++    int reveal;                               /* reveal concealed text */
++    void (*handler)(void *data, struct vt_event *ev); /* event-handler */
++    void *data;                               /* data for the event-handler */
++    int curs_x, curs_y;                       /* cursor position */
++    u8 title[32];                     /* the user title */
++    // selection support
++    int sel_start_x, sel_start_y;
++    Time sel_start_t;
++    Time sel_set_t;                   /* time we got selection owner */
++    int sel_x1, sel_y1, sel_x2, sel_y2;       /* selected area */
++    Pixmap sel_pixmap;                        /* for pixmap-selection requests */
++};
++
++struct xio *xio_open_dpy(char *dpy, int argc, char **argv);
++struct xio_win *xio_open_win(struct xio *xio, char *geom);
++void xio_close_win(struct xio_win *xw, int dpy_too);
++void xio_close_dpy(struct xio *xio);
++void xio_set_handler(struct xio_win *xw, void *handler, void *data);
++void xio_clear_win(struct xio_win *xw);
++void xio_put_line(struct xio_win *xw, int line, u8 *data);
++void xio_put_str(struct xio_win *xw, int line, u8 *c_str);
++int xio_get_line(struct xio_win *xw, int line, u8 *data);
++int xio_set_concealed(struct xio_win *xw, int on);
++void xio_update_win(struct xio_win *xw);
++void xio_fd_handler(int fd, void *handler, void *data);
++void xio_cancel_selection(struct xio_win *xw);
++void xio_query_selection(struct xio_win *xw);
++void xio_set_selection(struct xio_win *xw, int x1, int y1, int x2, int y2);
++void xio_set_cursor(struct xio_win *xw, int x, int y);
++void xio_event_loop(void);
++void xio_title(struct xio_win *xw, char *title);
++#endif
+diff -r af23d23c278b util/femon/femon.c
+--- a/util/femon/femon.c       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/femon/femon.c       Tue Dec 21 12:13:28 2010 +0100
+@@ -42,14 +42,21 @@
+ static char *usage_str =
+     "\nusage: femon [options]\n"
+     "     -H        : human readable output\n"
++    "     -A        : Acoustical mode. A sound indicates the signal quality.\n"
++    "     -r        : If 'Acoustical mode' is active it tells the application\n"
++    "                 is called remotely via ssh. The sound is heard on the 'real'\n"
++    "                 machine but. The user has to be root.\n"
+     "     -a number : use given adapter (default 0)\n"
+     "     -f number : use given frontend (default 0)\n"
+     "     -c number : samples to take (default 0 = infinite)\n\n";
++int sleep_time=1000000;
++int acoustical_mode=0;
++int remote=0;
+ static void usage(void)
+ {
+-      fprintf(stderr, usage_str);
++      fprintf(stderr, "%s", usage_str);
+       exit(1);
+ }
+@@ -59,6 +66,27 @@
+ {
+       struct dvbfe_info fe_info;
+       unsigned int samples = 0;
++      FILE *ttyFile=NULL;
++      
++      // We dont write the "beep"-codes to stdout but to /dev/tty1.
++      // This is neccessary for Thin-Client-Systems or Streaming-Boxes
++      // where the computer does not have a monitor and femon is called via ssh.
++      if(acoustical_mode)
++      {
++          if(remote)
++          {
++              ttyFile=fopen("/dev/tty1","w");
++              if(!ttyFile)
++              {
++                  fprintf(stderr, "Could not open /dev/tty1. No access rights?\n");
++                  exit(-1);
++              }
++          }
++          else
++          {
++              ttyFile=stdout;
++          }
++      }
+       do {
+               if (dvbfe_get_info(fe, FE_STATUS_PARAMS, &fe_info, DVBFE_INFO_QUERYTYPE_IMMEDIATE, 0) != FE_STATUS_PARAMS) {
+@@ -94,12 +122,24 @@
+               if (fe_info.lock)
+                       printf("FE_HAS_LOCK");
++              // create beep if acoustical_mode enabled
++              if(acoustical_mode)
++              {
++                  int signal=(fe_info.signal_strength * 100) / 0xffff;
++                  fprintf( ttyFile, "\033[10;%d]\a", 500+(signal*2));
++                  // printf("Variable : %d\n", signal);
++                  fflush(ttyFile);
++              }
++
+               printf("\n");
+               fflush(stdout);
+-              usleep(1000000);
++              usleep(sleep_time);
+               samples++;
+       } while ((!count) || (count-samples));
+-
++      
++      if(ttyFile)
++          fclose(ttyFile);
++      
+       return 0;
+ }
+@@ -148,7 +188,7 @@
+       int human_readable = 0;
+       int opt;
+-       while ((opt = getopt(argc, argv, "Ha:f:c:")) != -1) {
++       while ((opt = getopt(argc, argv, "rAHa:f:c:")) != -1) {
+               switch (opt)
+               {
+               default:
+@@ -166,6 +206,15 @@
+               case 'H':
+                       human_readable = 1;
+                       break;
++              case 'A':
++                      // Acoustical mode: we have to reduce the delay between
++                      // checks in order to hear nice sound
++                      sleep_time=5000;
++                      acoustical_mode=1;
++                      break;
++              case 'r':
++                      remote=1;
++                      break;
+               }
+       }
+diff -r af23d23c278b util/gotox/Makefile
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/gotox/Makefile      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,17 @@
++# Makefile for linuxtv.org dvb-apps/util/gotox
++
++binaries = gotox
++
++inst_bin = $(binaries)
++
++CPPFLAGS += -I../../lib
++LDFLAGS  += -L../../lib/libdvbapi
++LDFLAGS  += -L../../lib/libdvbsec
++LDLIBS   += -ldvbapi
++LDLIBS   += -ldvbsec
++
++.PHONY: all
++
++all: $(binaries)
++
++include ../../Make.rules
+diff -r af23d23c278b util/gotox/gotox.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/gotox/gotox.c       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,145 @@
++/*
++ *  Copyright (C) 2006 by Michel Verbraak <michel@verbraak.org>
++ *
++ *  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.,
++ *  59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
++ */
++
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <libdvbapi/dvbfe.h>
++#include <libdvbsec/dvbsec_api.h>
++
++static char *usage_str =
++      "\nusage: gotox [options] -d <angle>\n"
++      "         Goto the specified angle. Positive value for East rotation\n"
++      "         Negative value for West rotation on Northern Hemisphere.\n"
++      "     -d degrees : Angle to turn to in degrees (default 0)\n"
++      "     -a number : use given adapter (default 0)\n"
++      "     -f number : use given frontend (default 0)\n"
++      "     -t seconds : leave power on to rotor for at least specified seconds of time (default 30)\n\n";
++
++int main(int argc, char *argv[])
++{
++      struct dvbfe_handle *fe;
++      unsigned int adapter = 0, frontend = 0;
++      double angle = 0;
++      int opt;
++      unsigned int sleepcount = 30;
++      static char *weststr = "west";
++      static char *eaststr = "east";
++
++      while ((opt = getopt(argc, argv, "ha:f:t:d:")) != -1) {
++
++              switch (opt){
++              case '?':
++              case 'h':
++              default:
++                      fprintf(stderr, "%s", usage_str);
++                      return EXIT_SUCCESS; 
++
++              case 'a':
++                      adapter = strtoul(optarg, NULL, 0);
++                      break;
++
++              case 'f':
++                      frontend = strtoul(optarg, NULL, 0);
++                      break;
++
++              case 't':
++                      sleepcount = strtoul(optarg, NULL, 0);
++                      break;
++
++              case 'd':
++                      angle = strtod(optarg, NULL);
++                      break;
++              }
++      }
++
++      printf("Will try to rotate %s to %.2f degrees.\n", (angle < 0.0) ? weststr : eaststr, angle );
++
++      fe = dvbfe_open(adapter, frontend, 0);
++      if (fe == NULL) {
++              fprintf(stderr, "Could not open frontend %d on adapter %d.\n", frontend, adapter);
++              exit(1);
++      }
++
++      if (dvbfe_set_voltage(fe, DVBFE_SEC_VOLTAGE_OFF) != 0) {
++              fprintf(stderr, "Could not turn off power.\n");
++              dvbfe_close(fe);
++              return 1;
++      }
++      else
++              printf("Power OFF.\n");
++
++      sleep(1);
++
++      if (dvbfe_set_voltage(fe, DVBFE_SEC_VOLTAGE_18) != 0) {
++              fprintf(stderr, "Could not turn on power.\n");
++              dvbfe_close(fe);
++              return 1;
++      }
++      else
++              printf("Power on to 18V.\n");
++
++      sleep(1);
++
++      if (abs(angle) == 0.0) {
++
++              if (dvbsec_diseqc_goto_satpos_preset(fe, DISEQC_ADDRESS_POLAR_AZIMUTH_POSITIONER, 0) != 0) {
++                      fprintf(stderr, "Could not goto 0.\n");
++                      dvbfe_close(fe);
++                      return 2;
++              } else {
++                      printf("Going to home base 0 degrees.\n");
++              }
++      } else {
++
++              if (dvbsec_diseqc_goto_rotator_bearing(fe, DISEQC_ADDRESS_POLAR_AZIMUTH_POSITIONER, angle) != 0) {
++                      fprintf(stderr, "Could not rotate.\n");
++                      dvbfe_close(fe);
++                      return 2;
++              }
++      }
++
++      while (sleepcount != 0) {
++              printf("%d: Rotating to %.2f.\r", sleepcount, angle);
++              fflush(NULL);
++              sleepcount--;
++              sleep(1);
++      }
++
++      printf("\nRotated.\n");
++
++      if (dvbfe_set_voltage(fe, DVBFE_SEC_VOLTAGE_OFF) != 0) {
++              fprintf(stderr, "Could not turn off power.\n");
++              dvbfe_close(fe);
++              return 1;
++      }
++      else
++              printf("Power OFF.\n");
++
++      sleep(1);
++
++      dvbfe_close(fe);
++
++      return EXIT_SUCCESS;
++}
+diff -r af23d23c278b util/scan/dvb-c/at-Kabel-Braunau
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/at-Kabel-Braunau Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,26 @@
++# Kabel Braunau
++# freq sr fec mod
++C 386000000 6900000 NONE QAM64
++C 394000000 6875000 NONE QAM64
++C 402000000 6875000 NONE QAM64
++C 410000000 6875000 NONE QAM64
++C 418000000 6875000 NONE QAM64
++C 426000000 6875000 NONE QAM64
++C 434000000 6875000 NONE QAM64
++C 458000000 6875000 NONE QAM64
++C 466000000 6900000 NONE QAM64
++C 474000000 6900000 NONE QAM64
++C 482000000 6111000 NONE QAM64
++C 490000000 6111000 NONE QAM64
++C 498000000 6875000 NONE QAM64
++C 506000000 6111000 NONE QAM64
++C 514000000 6111000 NONE QAM64
++C 522000000 6428000 NONE QAM128
++C 530000000 6428000 NONE QAM128
++C 546000000 6875000 NONE QAM64
++C 554000000 6875000 NONE QAM64
++C 562000000 6875000 NONE QAM64
++C 570000000 6111000 NONE QAM64
++C 578000000 6900000 NONE QAM256
++C 586000000 6900000 NONE QAM256
++C 594000000 6875000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/at-Kabelsignal
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/at-Kabelsignal   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,38 @@
++# kabelsignal
++# freq sr fec mod
++C 314000000 6900000 NONE QAM256
++C 322000000 6900000 NONE QAM256
++C 330000000 6900000 NONE QAM256
++C 338000000 6900000 NONE QAM256
++C 346000000 6900000 NONE QAM256
++C 354000000 6900000 NONE QAM256
++C 362000000 6900000 NONE QAM256
++C 370000000 6900000 NONE QAM256
++C 378000000 6900000 NONE QAM256
++C 386000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
++C 402000000 6900000 NONE QAM256
++C 410000000 6900000 NONE QAM256
++C 418000000 6900000 NONE QAM256
++C 426000000 6900000 NONE QAM256
++C 434000000 6900000 NONE QAM256
++C 442000000 6900000 NONE QAM256
++C 450000000 6900000 NONE QAM256
++C 666000000 6900000 NONE QAM256
++C 674000000 6900000 NONE QAM256
++C 682000000 6900000 NONE QAM256
++C 690000000 6900000 NONE QAM256
++C 698000000 6900000 NONE QAM256
++C 706000000 6900000 NONE QAM256
++C 714000000 6900000 NONE QAM256
++C 722000000 6900000 NONE QAM256
++C 730000000 6900000 NONE QAM256
++C 738000000 6900000 NONE QAM256
++C 746000000 6900000 NONE QAM256
++C 762000000 6900000 NONE QAM256
++C 770000000 6900000 NONE QAM256
++C 778000000 6900000 NONE QAM256
++C 786000000 6900000 NONE QAM256
++C 794000000 6900000 NONE QAM256
++C 802000000 6900000 NONE QAM256
++C 810000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/at-KarrerNet
+--- a/util/scan/dvb-c/at-KarrerNet     Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/at-KarrerNet     Tue Dec 21 12:13:28 2010 +0100
+@@ -1,18 +1,26 @@
+ # Kabel St. Florian bei Linz/AT KarrerNet
+ # 2009-01-10
+ # freq sr fec mod
+-C 418000000 6900000 NONE QAM64
+-C 426000000 6900000 NONE QAM64
+-C 434000000 6900000 NONE QAM64
+ C 442000000 6900000 NONE QAM64
+-C 450000000 6900000 NONE QAM64
+ C 458000000 6900000 NONE QAM64
+ C 466000000 6900000 NONE QAM64
+ C 474000000 6900000 NONE QAM64
+ C 482000000 6900000 NONE QAM64
++C 490000000 6900000 NONE QAM64
++C 498000000 6900000 NONE QAM64
++C 506000000 6900000 NONE QAM64
++C 514000000 6900000 NONE QAM64
+ C 522000000 6900000 NONE QAM64
+ C 530000000 6900000 NONE QAM64
+ C 538000000 6900000 NONE QAM64
++C 546000000 6900000 NONE QAM64
++C 554000000 6900000 NONE QAM64
++C 562000000 6900000 NONE QAM64
++C 570000000 6900000 NONE QAM64
+ C 578000000 6900000 NONE QAM64
+-C 402000000 6900000 NONE QAM256
++C 586000000 6900000 NONE QAM64
++C 610000000 6900000 NONE QAM64
++C 386000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
+ C 410000000 6900000 NONE QAM256
++C 434000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/de-Primacom
+--- a/util/scan/dvb-c/de-Primacom      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/de-Primacom      Tue Dec 21 12:13:28 2010 +0100
+@@ -1,6 +1,9 @@
+ # Primacom
+ # freq sr fec mod
+ C 121000000 6900000 NONE QAM64
++C 129000000 6900000 NONE QAM256
++C 137000000 6900000 NONE QAM256
++C 145000000 6900000 NONE QAM256
+ C 306000000 6900000 NONE QAM64
+ C 314000000 6900000 NONE QAM64
+ C 322000000 6900000 NONE QAM64
+@@ -13,6 +16,8 @@
+ C 378000000 6900000 NONE QAM256
+ C 386000000 6900000 NONE QAM256
+ C 394000000 6900000 NONE QAM256
++C 402000000 6900000 NONE QAM256
++C 410000000 6900000 NONE QAM256
+ C 418000000 6900000 NONE QAM256
+ C 434000000 6900000 NONE QAM64
+ C 442000000 6900000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/de-Unitymedia
+--- a/util/scan/dvb-c/de-Unitymedia    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/de-Unitymedia    Tue Dec 21 12:13:28 2010 +0100
+@@ -1,35 +1,36 @@
+ # Unitymedia
+-# Created from http://www.unitymedia.de/service/tv/frequenzen.html
+-# and http://blob.unitymedia.de/Download/Unitymedia_Senderlineup_digital_2008-05-28.pdf
++# Created from http://www.unitymedia.de/service/soforthilfe/frequenzen.html
++# and http://www.unitymedia.de/images/UnityDigitalTV_Lineup_01-07-2009.pdf
+ # freq sr fec mod
+ C 113000000 6900000 NONE QAM256
+ C 121000000 6900000 NONE QAM256
+-C 338000000 6900000 NONE QAM256
+ C 346000000 6900000 NONE QAM256
+ C 354000000 6900000 NONE QAM64
+ C 362000000 6900000 NONE QAM64
+ C 370000000 6900000 NONE QAM64
+ C 378000000 6900000 NONE QAM64
+ C 386000000 6900000 NONE QAM64
+-C 394000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM64
+ C 402000000 6900000 NONE QAM256
+ C 410000000 6900000 NONE QAM256
+ C 418000000 6900000 NONE QAM256
+ C 426000000 6900000 NONE QAM256
+ C 434000000 6900000 NONE QAM256
+-C 442000000 6900000 NONE QAM64
+-C 450000000 6900000 NONE QAM64
++C 442000000 6900000 NONE QAM256
++C 450000000 6900000 NONE QAM256
+ C 458000000 6900000 NONE QAM256
+ C 466000000 6900000 NONE QAM256
+-C 474000000 6900000 NONE QAM64
+ C 522000000 6900000 NONE QAM256
+ C 530000000 6900000 NONE QAM256
+ C 538000000 6900000 NONE QAM256
++C 546000000 6900000 NONE QAM256
+ C 554000000 6900000 NONE QAM256
+ C 562000000 6900000 NONE QAM256
+ C 570000000 6900000 NONE QAM256
+-C 610000000 6900000 NONE QAM64
+ C 650000000 6900000 NONE QAM256
+ C 658000000 6900000 NONE QAM256
+ C 666000000 6900000 NONE QAM256
+ C 674000000 6900000 NONE QAM256
++C 682000000 6900000 NONE QAM256
++C 690000000 6900000 NONE QAM256
++C 698000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/de-komro-Rosenheim
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/de-komro-Rosenheim       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,30 @@
++# komro (Rosenheim)
++# freq sr fec mod
++C 113000000 6900000 NONE QAM64
++C 121000000 6900000 NONE QAM64
++C 338000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
++C 450000000 6900000 NONE QAM64
++C 458000000 6900000 NONE QAM64
++C 466000000 6900000 NONE QAM64
++C 522000000 6900000 NONE QAM256
++C 530000000 6900000 NONE QAM256
++C 602000000 6900000 NONE QAM256
++C 610000000 6900000 NONE QAM256
++C 626000000 6900000 NONE QAM256
++C 642000000 6900000 NONE QAM256
++C 650000000 6900000 NONE QAM256
++C 658000000 6900000 NONE QAM64
++C 666000000 6900000 NONE QAM64
++C 682000000 6900000 NONE QAM64
++C 690000000 6900000 NONE QAM256
++C 698000000 6900000 NONE QAM256
++C 706000000 6900000 NONE QAM256
++C 714000000 6900000 NONE QAM256
++C 722000000 6900000 NONE QAM256
++C 730000000 6900000 NONE QAM64
++C 738000000 6900000 NONE QAM64
++C 746000000 6900000 NONE QAM64
++C 754000000 6900000 NONE QAM64
++C 762000000 6900000 NONE QAM256
++C 778000000 6900000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/fi-Oulu
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/fi-Oulu  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++# DVB-C Channels in Oulu (Finland)\r
++# dna network\r
++# freq      sr      fec  mod\r
++C 330000000 6875000 NONE QAM128 #mux1\r
++C 370000000 6875000 NONE QAM128 #mux2\r
++C 362000000 6875000 NONE QAM128 #mux3\r
++C 354000000 6875000 NONE QAM128 #mux4\r
++C 346000000 6875000 NONE QAM128 #mux5\r
++C 338000000 6875000 NONE QAM128 #mux6\r
++C 322000000 6875000 NONE QAM128 #mux7\r
++C 314000000 6875000 NONE QAM128 #mux8\r
++C 378000000 6875000 NONE QAM128 #mux9\r
++C 306000000 6875000 NONE QAM128 #mux10\r
++C 298000000 6875000 NONE QAM128 #mux11\r
++C 290000000 6875000 NONE QAM128 #mux12\r
++C 274000000 6875000 NONE QAM128 #mux13\r
++C 266000000 6875000 NONE QAM128 #mux14\r
++C 258000000 6875000 NONE QAM128 #mux15\r
++C 250000000 6875000 NONE QAM128 #mux16\r
+diff -r af23d23c278b util/scan/dvb-c/fi-Turku
+--- a/util/scan/dvb-c/fi-Turku Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/fi-Turku Tue Dec 21 12:13:28 2010 +0100
+@@ -3,6 +3,13 @@
+ C 146000000 6900000 NONE QAM128
+ C 154000000 6900000 NONE QAM128
+ C 162000000 6900000 NONE QAM128
++C 234000000 6900000 NONE QAM256
++C 242000000 6900000 NONE QAM256
++C 250000000 6900000 NONE QAM256
++C 258000000 6900000 NONE QAM256
++C 266000000 6900000 NONE QAM256
++C 290000000 6900000 NONE QAM128
++C 298000000 6900000 NONE QAM128
+ C 322000000 6900000 NONE QAM128
+ C 330000000 6900000 NONE QAM128
+ C 338000000 6900000 NONE QAM128
+@@ -14,4 +21,3 @@
+ C 418000000 6900000 NONE QAM128
+ C 426000000 6900000 NONE QAM128
+ C 442000000 6900000 NONE QAM128
+-C 354000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/hu-Digikabel
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/hu-Digikabel     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,21 @@
++# Digikabel, Hungary
++# For the following cities:
++#  Budapest, Dorog, Hatvan, Kiskunhalas, Debrecen, Szekesfehervar, Pecs,
++#  Veszprem, Dunaujvaros, Miskolc, Gyongyos, Tatabanya, Varpalota, Nagykanizsa,
++#  Salgotarjan, Batonyterenye, Szolnok, Szentistvan, Nyiregyhaza, Gyor,
++#  Szazhalombatta, Bekescsaba, Bekes, Eger, Komlo, Oroszlany
++# In some of the cities not all the frequencies are available.
++# freq sr fec mod
++C 354000000 6900000 NONE QAM256
++C 362000000 6900000 NONE QAM256
++C 370000000 6900000 NONE QAM256
++C 378000000 6900000 NONE QAM256
++C 386000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
++C 402000000 6900000 NONE QAM256
++C 410000000 6900000 NONE QAM256
++C 762000000 6900000 NONE QAM256
++C 770000000 6900000 NONE QAM256
++C 778000000 6900000 NONE QAM256
++C 786000000 6900000 NONE QAM256
++C 794000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/nl-REKAM-CAIW_Gouda
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/nl-REKAM-CAIW_Gouda      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,4 @@
++# REKAM / Caiway, Gouda, Netherlands
++# freq sr fec mod
++C 163000000 6875000 NONE QAM64
++C 770000000 6900000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/se-comhem
+--- a/util/scan/dvb-c/se-comhem        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/se-comhem        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,3 +1,25 @@
+ # com hem
+ # freq sr fec mod
++C 289500000 6875000 NONE QAM64
++C 298000000 6875000 NONE QAM64
++C 306000000 6875000 NONE QAM64
++C 314000000 6875000 NONE QAM64
++C 322000000 6875000 NONE QAM64
++C 338000000 6875000 NONE QAM64
++C 346000000 6875000 NONE QAM64
++C 354000000 6875000 NONE QAM64
+ C 362000000 6875000 NONE QAM64
++C 370000000 6875000 NONE QAM64
++C 378000000 6875000 NONE QAM64
++C 386000000 6875000 NONE QAM64
++C 394000000 6875000 NONE QAM64
++C 402000000 6875000 NONE QAM64
++C 418000000 6875000 NONE QAM64
++C 434000000 6875000 NONE QAM64
++C 442000000 6875000 NONE QAM64
++C 450000000 6875000 NONE QAM64
++C 458000000 6875000 NONE QAM64
++C 714000000 6875000 NONE QAM64
++C 722000000 6875000 NONE QAM64
++C 738000000 6875000 NONE QAM64
++C 786000000 6875000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-s/Agila2_C-146.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Agila2_C-146.0E  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,60 @@
++# Agila 2 @ 146.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Viva Prime Channel
++S 3725000 H 2345000 3/4
++
++# Zoe Philippines
++S 3774000 V 3300000 3/4
++
++# Da Ai TV indonesia
++S 3791000 H 3100000 3/4
++
++# Trinity Broadcasting Multiplex
++S 3791000 V 10091000 5/6
++
++# Bayon TV
++S 3796000 H 3360000 3/4
++
++# White Springs TV
++S 3846000 H 6110000 3/4
++
++# TCT World
++S 3854000 H 2603000 5/6
++
++# CCTN
++S 3873000 V 2532000 3/4
++
++# NBN Philippines
++S 3875000 H 3000000 3/4
++
++# Al Masriyah
++S 3880000 H 2000000 3/4
++
++# Viva Entertainment Multiplex
++S 3887000 H 6716000 3/4
++
++# IBC13
++S 3896000 H 3000000 3/4
++
++# CTN Cambodia Multiplex
++S 3979000 V 9628000 3/4
++
++# Divya TV
++S 3990000 V 13330000 3/4
++
++# Familyland TV Network
++S 4164000 V 3735000 7/8
++
++# MTV Philippines
++S 4171000 V 3213000 3/4
++
++# The Old Path TV
++S 4183000 V 2170000 3/4
++
++# UNTV
++S 4188000 V 2170000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Apstar6_C-134.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Apstar6_C-134.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,15 @@
++# Apstar 6 @ 134.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# New Entertainment
++S 3766000 H 4285000 3/4
++
++# Test
++S 3840000 H 27500000 3/4
++
++# TV Nusantara
++S 3905000 H 3250000 3/4
+diff -r af23d23c278b util/scan/dvb-s/AsiaSat2_C-100.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/AsiaSat2_C-100.5E        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,51 @@
++# AsiaSat 2 100.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Iris Sat Multiplex
++S 3660000 V 27500000 3/4
++
++# APTN Direct
++S 3706000 H 4167000 5/6
++
++# APTN Global Video Wire (MPEG-4 S/2)
++S 3732000 H 8889000 2/3
++
++# BYU TV
++S 3767000 V 6527000 1/2
++
++# AJK TV
++S 3778000 V 3333000 3/4
++
++# RTB International Brunei
++S 3786000 H 6000000 7/8
++
++# Shamshad TV
++S 3790000 V 2444000 3/4
++
++# FTV HD (MPEG-4 S/2)
++S 3794000 H 4640000 3/4
++
++# Arabsat ASBU Bouquet Multiplex
++S 3820000 V 27500000 3/4
++
++# Star TV Multiplex (MPEG-4 S/2)
++S 3840000 H 30000000 3/4
++
++# E Network Multiplex
++S 3880000 H 27500000 3/4
++
++# SatLink Multiplex
++S 3960000 H 27500000 3/4
++
++# Star TV Multiplex
++S 3980000 V 28100000 3/4
++
++# SatLink European Bouquet (MPEG-2 & MPEG-4 S2)
++S 4000000 H 28125000 3/4
++
++# Macau Satellite TV Multiplex
++S 4148000 V 11852000 3/4
+diff -r af23d23c278b util/scan/dvb-s/AsiaSat3S_C-105.5E
+--- a/util/scan/dvb-s/AsiaSat3S_C-105.5E       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-s/AsiaSat3S_C-105.5E       Tue Dec 21 12:13:28 2010 +0100
+@@ -1,122 +1,102 @@
+ # AsiaSat 3S 105.5E C-BAND
+-# Generated by Xingbo Wang
+-# Apr 2, 2005
++# Generated by Pietro Casoar
++# 1st March 2009
+-# MPEG-2 QPSK
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
+ # freq pol sr fec
+-# [encrypted] ZEE English, ZEE TV International, ZEE Movies, MX, ZEE TV SE Asia, ZEE TV Asia, Trendz
+-S 3700000 V 27500000 3/4
++# China Entertainment TV & Maharishi Veda Vision
++S 3680000 H 26670000 3/4
++
++# MediaCorp Channel News Asia
++S 3706000 H 6000000 3/4
+ # BTV World
+ S 3725000 V 4450000 3/4
+-# SAB TV
+-S 3743000 V 3300000 3/4
++# Galaxy TVB
++S 3729000 H 13650000 3/4
+-# AAJ TV
+-S 3750000 V 2820000 3/4
++# Zee Network
++S 3733000 V 6500000 3/4
+-# Arirang TV
+-S 3755150 V 4417900 7/8
++# Madani Channel
++S 3739000 V 2815000 3/4
+-# [encrypted] STAR Plus India, STAR Movies India, STAR News India, National Geographic India, STAR Gold, STAR Movies (Middle East)
+-# STAR Utsav
++# Fashion TV
++S 3746000 V 2625000 3/4
++
++# Aaj News
++S 3750000 V 2821000 3/4
++
++# Arirang Arab
++S 3755000 V 4418000 7/8
++
++# Globecast multiplex
++S 3760000 H 26000000 7/8
++
++# Star TV Multiplex
+ S 3780000 V 28100000 3/4
+-# Chinese Provincial TV: Guangxi, Shanxi, Anhui, Jiangsu, Heilongjiang
+-S 3806000 V 4420000 3/4
+-S 3813000 V 4420000 3/4
+-S 3820000 V 4420000 3/4
+-S 3827000 V 4420000 3/4
+-S 3834000 V 4420000 3/4
++# Airwaves Media Multiplex
++S 3786000 H 5700000 3/4
+-# [encrypted] ESPN Taiwan, STAR Sports Taiwan, ESPN Asia, STAR Sports South East Asia, STAR Sports India, ESPN India, ESPN Philippines
++# Zee Network Multiplex
++S 3820000 V 27500000 3/4
++
++# Star TV Multiplex
++S 3840000 H 26850000 7/8
++
++# Star TV Multiplex
+ S 3860000 V 27500000 3/4
+-# Dragon TV
+-S 3886000 V 4800000 3/4
++# B4U INDIA - MPEG-4 S/2 Multiplex
++S 3880000 H 27500000 3/4
+-# Shandong TV
+-S 3895000 V 6813000 3/4
++# Star TV Multiplex
++S 3940000 V 28100000 3/4
+-# CCTV-1(comprehensive), China National Radio Channel 1
+-S 3904000 V 4420000 7/8
++# Tuner International Multiplex
++S 3960000 H 28100000 3/4
+-# Jilin Provincial TV
+-S 3914500 V 4420000 3/4
+-
+-# [encrypted] A1, History, STAR Movies SEA/China, STAR World India, STAR Plus Pakistan, Channel[V] India, STAR Chinese Movies, CNBC India, STAR One, STAR Vijay
++# Star TV Multiplex
+ S 3980000 V 28100000 3/4
+-# Sahara One, Sahara Samay National, Sahara Samay Mumbai, Sahara Samay Uttar Pradesh, Sahara Samay Bihar, Sahara Samay Madhya Pradesh
++# Star TV Multiplex
++S 4000000 H 26850000 7/8
++
++# Sahara Samay Multiplex
+ S 4020000 V 27250000 3/4
+-# Tianjin TV
+-S 4046000 V 5950000 3/4
++# VOA Voice Of America Multiplex
++S 4040000 H 20400000 1/2
+-# PTV-1, PTV World, PTV Channel 3, AVT Khyber
++# Globecast Multiplex
++S 4071000 H 14240000 3/4
++
++# PTV Multiplex
+ S 4091000 V 13333000 3/4
+-# PTV National
+-S 4106000 V 3333300 3/4
++# Sun TV
++S 4095000 H 5554000 3/4
+-# Indus News
+-S 4115750 V 3333000 3/4
++# PTV Global USA
++S 4102000 V 2894000 3/4
+-# [encrypted] ZEE Biz, ZEE News, ZEE Cinema, ZEE Music, Alpha TV Punjabi, Alpha TV Gujarati, Alpha TV Bangla, Alpha TV Marathi, Smile TV
++# PTV Global UK & Europe
++S 4106000 V 2894000 3/4
++
++# Galaxy TVB Multiplex
++S 4111000 H 13650000 3/4
++
++# PTV Multiplex
++S 4114000 V 7000000 3/4
++
++# Eye TV Multiplex
++S 4129000 H 13600000 3/4
++
++# Zee Network Multiplex
+ S 4140000 V 27500000 3/4
+-# Chinese Provincial TV: Henan, Fujian, Jiangxi, Liaoning
+-S 4166000 V 4420000 3/4
+-S 4180000 V 4420000 3/4
+-S 4187000 V 4420000 3/4
+-S 4194000 V 4420000 3/4
+-
+-# CETV
+-S 3680000 H 26670000 3/4
+-
+-# Channel NewsAsia
+-S 3706000 H 6000000 3/4
+-
+-# Asia Plus
+-S 3715500 H 7000000 3/4
+-
+-# TVB 8, CETV
+-S 3729000 H 13650000 3/4
+-
+-# Network of the World, Bloomberg TV Asia, Indus Vision, Indus Music, Muslim TV Ahmadiyya, Living Asia Channel
+-# [encrypted] Filmazia
+-S 3760000 H 26000000 7/8
+-
+-# [encrypted] Fox News, Sky News, STAR Movies Int'l Taiwan, National Geographic Taiwan, STAR Chinese Channel, STAR Movies mandarin, Channel[V] Taiwan
+-S 3840000 H 26850000 7/8
+-
+-# STAR Sports Asia
+-# [encrypted] ESPN China, STAR Sports Hong Kong, ESPN Hong Kong
+-S 3920000 H 26750000 7/8
+-
+-# [encrypted] CNN International Asia, CNN Newsource, Cartoon Network Asia, Cartoon Network Taiwan, Cartoon Network Philippines, Cartoon Network Australia/New Zealand, TCM Australia, Boomerang
+-S 3960000 H 27500000 3/4
+-
+-# [encrypted] Phoenix Movies, star World Asia, Star Movies Int'l, Channel[V] International, National Geographic Regional
+-# Phoenix Chinese Channel, Phoenix Info News Channel, Xiong Kong Int'l, Xing Kong Regional, Channel[V](Greater China)
+-S 4000000 H 26850000 7/8
+-
+-# Chinese Provincial TV: Hubei, Sichuan
+-S 4034600 H 4420000 3/4
+-S 4051000 H 4420000 3/4
+-
+-# Chinese Provincial TV: Qinghai, Hunan
+-S 4067000 H 4420000 3/4
+-S 4082000 H 4420000 3/4
+-
+-# Sun TV
+-S 4094000 H 5555000 3/4
+-
+-# MATV, Horizon Channel
+-# [encrypted] Tian Ying Movies Channel, TVB Xing He Channel
+-S 4111000 H 13650000 3/4
+-
+-# CCTV Channel 4 (International), Channel 9 (English language), CCTV E&F
+-S 4129000 H 13240000 3/4
++# Geo TV Network Multiplex
++S 4180000 V 26666000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Asiasat4_C-122.2E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Asiasat4_C-122.2E        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,27 @@
++# Asiasat 4 @ 122.2E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# SITI Digital Network Multiplex
++S 3760000 H 27500000 3/4
++
++# SITI Digital Network Multiplex
++S 3820000 V 27500000 3/4
++
++# Henan Radio Multiplex
++S 3856000 H 2170000 3/4
++
++# SITI Digital Network Multiplex
++S 3880000 H 27500000 3/4
++
++# SITI Digital network Multiplex
++S 3920000 H 27500000 3/4
++
++# SITI Digital network Multiplex
++S 3960000 H 27500000 3/4
++
++# SITI Digital network Multiplex
++S 4180000 V 27500000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Astra-23.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Astra-23.5E      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++# Astra 23.5E
++# freq pol sr fec
++S 10758000 V 22000000 7/8
++S 10788000 V 22000000 5/6
++S 10802000 H 22000000 5/6
++S 10842000 V 13333000 5/6
++S 10862000 H 22000000 5/6
++# Astra2Connect
++# S2 10891250 H 22000000 3/4 AUTO 8PSK
++S 11475000 V 27500000 3/4
++S 11515000 H 27500000 3/4
++S2 11515000 V 28500000 9/10 AUTO QPSK
++S2 11555000 H 28500000 9/10 AUTO QPSK
++S2 11555000 V 28500000 9/10 AUTO QPSK
++S2 11592000 V 28500000 9/10 AUTO QPSK
++S2 11595000 H 28500000 9/10 AUTO QPSK
++S2 11635000 H 28500000 9/10 AUTO QPSK
++S2 11635000 V 28500000 9/10 AUTO QPSK
++S 11675000 H 27500000 3/4
++S2 11675000 V 28500000 9/10 AUTO QPSK
++S2 11719000 H 27500000 9/10 AUTO QPSK
++S 11739000 V 27500000 3/4
++# Astra2Connect
++# S2 11758000 H 27500000 5/6 AUTO 8PSK
++S2 11778000 V 27500000 9/10 AUTO QPSK
++S 11798000 H 27500000 3/4
++S2 11817000 V 27500000 9/10 AUTO QPSK
++S 11836000 H 29900000 3/4
++S2 11856000 V 27500000 5/6 AUTO QPSK
++S 11875000 H 27500000 3/4
++S 11914000 H 27500000 3/4
++# Astra2Connect
++# S2 11954000 H 27500000 3/4 AUTO 8PSK
++S 11992000 H 27500000 3/4
++S 12012000 V 27500000 3/4
++S2 12032000 H 27500000 9/10 AUTO QPSK
++S 12070000 H 27500000 3/4
++S2 12109000 H 27500000 9/10 AUTO QPSK
++# Astra2Connect
++# S2 12148000 H 27500000 3/4 AUTO 8PSK
++S 12168000 V 27500000 3/4
++# Astra2Connect
++# S2 12226000 H 27500000 3/5 AUTO 8PSK
++# Astra2Connect
++# S2 12304000 H 27500000 5/6 AUTO 8PSK
++# Astra2Connect
++# S2 12344000 H 28200000 5/6 AUTO 8PSK
++# Astra2Connect
++# S2 12382000 H 27500000 3/4 AUTO 8PSK
++S 12525000 H 27500000 3/4
++S 12525000 V 27500000 3/4
++S 12565000 H 27500000 2/3
++S 12565000 V 27500000 3/4
++S2 12605000 H 28500000 9/10 AUTO QPSK
++S2 12605000 V 28500000 9/10 AUTO QPSK
++S 12630000 V 6000000 3/4
++S 12631000 H 6666000 7/8
++S 12636000 V 2277000 5/6
++S 12641000 H 2220000 7/8
++S 12644000 H 2170000 3/4
++S 12649000 H 5600000 5/6
++S 12661000 H 2170000 5/6
++S 12685000 V 27500000 3/4
++S 12696000 H 3255000 1/2
++S 12711000 H 6111000 AUTO
++S 12725000 V 27500000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Atlantic-Bird-3-5.0W
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Atlantic-Bird-3-5.0W     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,4 @@
++# Atlantic Bird 3 @ 5.0W
++# freq pol sr fec
++S 11096000 V 29950000 7/8
++S 11591000 V 20000000 2/3
+diff -r af23d23c278b util/scan/dvb-s/Chinastar1_C-87.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Chinastar1_C-87.5E       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,15 @@
++# ChinaStar 1 @ 87.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Myawady TV
++S 3734000 H 5925000 3/4
++
++# Zam TV Tests
++S 4076000 H 2532000 3/4
++
++# Test Card
++S 4081000 H 4687000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat2E_C-83.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat2E_C-83.0E  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,93 @@
++# Insat 2E @ 83.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# NE TV Multiplex
++S 3521000 V 8640000 3/4
++
++# NE TV Multiplex
++S 3537000 V 10800000 3/4
++
++# TV 9 Telugu
++S 3550000 V 3255000 3/4
++
++# S1 Channel
++S 3559000 V 3366000 3/4
++
++# TV 9 Kannada
++S 3581000 V 3255000 3/4
++
++# Jaya TV
++S 3593000 V 8680000 3/4
++
++# Tata Communications Multiplex
++S 3593000 V 9629000 3/4
++
++# Asianet Multiplex
++S 3643000 V 19531000 3/4
++
++# Amrita TV Middle East
++S 3678000 V 5926000 3/4
++
++# Mahaa TV
++S 3689000 V 2893000 3/4
++
++# Tata Communications Multiplex
++S 3696000 V 6111000 3/4
++
++# CNBC India
++S 3760000 V 6500000 3/4
++
++# Raj TV Network Multiplex
++S 3774000 V 13021000 3/4
++
++# UTVi TV
++S 3794000 V 3500000 3/5
++
++# PTC Multiplex (MPEG-4 S/2)
++S 3815000 V 6000000 3/4
++
++# Tata Communications Multiplex
++S 3845000 V 26043000 3/4
++
++# Indiavision
++S 3914000 V 3000000 3/4
++
++# Yes Indiavision
++S 3919000 V 3000000 3/4
++
++# Manorama News International
++S 3923000 V 3000000 3/4
++
++# Tata Communications Multiplex
++S 3934000 V 13021000 3/4
++
++# Raj Musix kanada
++S 3961000 V 6656000 3/4
++
++# TV 9 Multiplex
++S 3974000 V 13333000 3/4
++
++# Asianet Multiplex
++S 4010000 V 19531000 3/4
++
++# Tata Communications Multiplex
++S 4031000 V 7440000 7/8
++
++# RRSat Multiplex
++S 4042000 V 7420000 7/8
++
++# Tata Communications Multiplex
++S 4050000 V 5084000 7/8
++
++# DD national
++S 4070000 V 5000000 3/4
++
++# Indiasign Mulitplex
++S 4091000 V 9230000 7/8
++
++# News Live (MPEG-4 S/2)
++S 4100000 V 4700000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat3A_C-93.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat3A_C-93.5E  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++# Insat 3A @ 93.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# DD Bangla
++S 3732000 V 6250000 3/4
++
++# DD Punjab
++S 3740000 V 6250000 3/4
++
++# DD Gujarati
++S 3750000 V 6250000 3/4
++
++# DD Chandana
++S 3759000 V 6250000 3/4
++
++# DD Oriya
++S 3772000 V 6250000 3/4
++
++# DD kashir
++S 3782000 V 6250000 3/4
++
++# DD Sahyadri
++S 3791000 V 8600000 3/4
++
++# DD Malayalam
++S 3812000 V 6250000 3/4
++
++# DD Saptagiri
++S 3820000 V 6250000 3/4
++
++# DD podhigai
++S 3831000 V 8600000 3/4
++
++# DD Himachal Pradesh
++S 3932000 V 6250000 3/4
++
++# DD Jaipur
++S 3940000 V 6250000 3/4
++
++# Madhya Pradesh
++S 3950000 V 6250000 3/4
++
++# DD Uttar Pradesh
++S 3958000 V 6250000 3/4
++
++# DD North East
++S 4092000 V 6250000 3/4
++
++# DD Mizoram
++S 4101000 V 6250000 3/4
++
++# DD Tripura
++S 4109000 V 4250000 3/4
++
++# RTA Afghanistan
++S 4132000 V 4000000 3/4
++
++# RTA Afghanistan Nangarhar
++S 4136000 V 2000000 3/4
++
++# Ariana TV Network Multiplex
++S 4141000 V 5150000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat4A_C-83.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat4A_C-83.0E  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,93 @@
++# Insat 4A @ 83.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# NSTPL Multiplex
++S 3725000 H 26665000 3/4
++
++# Indiasign multiplex
++S 3756000 H 13333000 3/4
++
++# Star TV Multiplex
++S 3777000 H 10900000 3/4
++
++# Essel Shyam Multiplex
++S 3805000 H 28500000 7/8
++
++# Tarang TV Multiplex (MPEG-4 S/2)
++S 3841000 H 6920000 3/4
++
++# CTVN AKD Plus
++S 3853000 H 3265000 3/4
++
++# Kasthuri TV
++S 3857000 H 3462000 3/4
++
++# Kamyab TV
++S 3874000 H 3403000 3/4
++
++# Vanitha TV
++S 3892000 H 3300000 3/4
++
++# Essel Shayam Multiplex
++S 3898000 H 6800000 3/4
++
++# Channel 10 India
++S 3910000 H 3600000 7/8
++
++# Essel Shyam
++S 3923000 H 13000000 3/4
++
++# DY 365
++S 3949000 H 3225000 3/4
++
++# Multiplex
++S 3958000 H 9500000 7/8
++
++# Zee News Uttar Pradesh
++S 3976000 H 3200000 3/4
++
++# ETV Network Multiplex
++S 4004000 H 22220000 5/6
++
++# Essel Shyam
++S 4040000 H 7500000 7/8
++
++# Lamhas Multiplex
++S 4054000 H 13230000 3/4
++
++# Network 18 Multiplex
++S 4072000 H 6500000 3/4
++
++# IBN Lokmat
++S 4078000 H 3250000 3/4
++
++# Live India
++S 4087000 H 3300000 3/4
++
++# Mi Marathi
++S 4091000 H 3000000 3/4
++
++# BBS TV
++S 4100000 H 4750000 3/4
++
++# Manorama News
++S 4115000 H 5555000 3/4
++
++# BAG Films
++S 4134000 H 10600000 3/4
++
++# Zee Network Multiplex
++S 4151000 H 6500000 3/4
++
++# Zee Network Multiplex
++S 4161000 H 6500000 3/4
++
++# Lok Sabha TV
++S 4170000 H 6500000 3/4
++
++# Kolkata TV
++S 4180000 H 3233000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat4B_C-93.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat4B_C-93.5E  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,51 @@
++# Insat 4B @ 93.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Doordarshan Multiplex
++S 3725000 H 27500000 3/4
++
++# DD Dehradun
++S 3750000 H 4250000 3/4
++
++# DD Raipur
++S 3762000 H 4250000 3/4
++
++# DD Ranchi
++S 3768000 H 4250000 3/4
++
++# DD Jammu
++S 3774000 H 4250000 3/4
++
++# DD Hissar
++S 3802000 H 4250000 3/4
++
++# DD Chandigarh
++S 3808000 H 4250000 3/4
++
++# DD Port Blair
++S 3822000 H 4250000 3/4
++
++# DD Bihar
++S 3832000 H 6250000 3/4
++
++# DD North East
++S 3841000 H 6250000 3/4
++
++# Sun network
++S 3885000 H 28000000 3/4
++
++# Doordarshan Multiplex
++S 3925000 H 27500000 3/4
++
++# Sakshi TV
++S 3950000 H 4440000 3/4
++
++# Tata Communications Multiplex
++S 4005000 H 25422000 7/8
++
++# Sun Network
++S 4045000 H 28000000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Intelsat8_C-166.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Intelsat8_C-166.0E       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,39 @@
++# Intelsat 8 @ 166.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Viacom Multiplex
++S 3740000 H 27500000 2/3
++
++# South Korean Multiplex
++S 3790000 V 6510000 3/4
++
++# Arirang World
++S 3815000 V 4400000 3/4
++
++# Australian network Multiplex
++S 3829000 H 13238000 3/4
++
++# TVBS multiplex
++S 3833000 V 17500000 3/4
++
++# NBC Universal
++S 3900000 H 27500000 3/4
++
++# Intelsat multiplex
++S 3940000 H 27690000 7/8
++
++# China Radio multiplex
++S 3959000 V 3428000 3/4
++
++# NHK World network Multiplex
++S 4060000 H 16180000 1/2
++
++# Philippines Network TV Multiplex
++S 4122000 V 5554000 3/4
++
++# TAS Multiplex
++S 4130000 V 5800000 3/4
+diff -r af23d23c278b util/scan/dvb-s/JCSat3A_C-128.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/JCSat3A_C-128.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# JCSAT 3A @ 128.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# TAS Multiplex
++S 3960000 V 30000000 5/6
++
++# TAS Multiplex
++S 4000000 V 30000000 5/6
++
++# Miraclenet
++S 4055000 V 3332000 3/4
++
++# TAS Multiplex
++S 4120000 V 30000000 5/6
+diff -r af23d23c278b util/scan/dvb-s/Measat3_C-91.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Measat3_C-91.5E  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,54 @@
++# Measat 3 @ 91.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Shop TV
++S 3629000 V 2200000 3/4
++
++# Aora TV Mulitplex
++S 3644000 H 22320000 3/4
++
++# Solar Entertainment
++S 3645000 V 19510000 3/4
++
++# National Geographic music
++S 3718000 V 1700000 7/8
++
++# DZRH TV Multiplex
++S 3721000 V 2170000 3/4
++
++# Ascent Media (MPEG-4 S/2)
++S 3751000 V 13330000 2/3
++
++# Globecast Multiplex (MPEG-4 S/2)
++S 3769000 V 14000000 3/4
++
++# HTV Multiplex
++S 3796000 V 7030000 3/4
++
++# Sky International
++S 3814000 V 6666000 3/4
++
++# Un-named Mulitplex
++S 3865000 V 3835000 3/4
++
++# RTM Multiplex
++S 3877000 V 12525000 7/8
++
++# RTM Sarawak Feeds
++S 3887000 V 3984000 3/4
++
++# Globecast Multiplex
++S 3920000 V 28000000 7/8
++
++# Ginx TV
++S 4113000 V 2960000 3/4
++
++# YR Asia TV
++S 4117000 V 2963000 3/4
++
++# All Sports Network (MPEG-4 S/2)
++S 4134000 V 7200000 3/4
+diff -r af23d23c278b util/scan/dvb-s/PalapaC2_C-113.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/PalapaC2_C-113.0E        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,39 @@
++# Palapa C2 @ 113.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# SCTV Jawa Timur
++S 3745000 H 3125000 3/4
++
++# SCTV
++S 3758000 H 4470000 3/4
++
++# TVRI Nasional
++S 3765000 H 5555000 3/4
++
++# RCTI
++S 3774000 H 6520000 3/4
++
++# KBS World Indonesia
++S 3836000 V 2097000 3/4
++
++# Bali TV
++S 3926000 H 4208000 3/4
++
++# TV One Indonesia
++S 4054000 H 5632000 3/4
++
++# ANTV Indonesia
++S 4055000 V 6510000 3/4
++
++# Indosiar
++S 4074000 V 6500000 3/4
++
++# Satelindo Multiplex
++S 4080000 H 28125000 3/4
++
++# TPI Indonesia
++S 4184000 V 6700000 3/4
+diff -r af23d23c278b util/scan/dvb-s/ST1_C-80.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/ST1_C-80.0E      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,27 @@
++# ST1 @ 88.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# GTV Multiplex
++S 3469000 V 30000000 3/4
++
++# ABTV Multiplex
++S 3521000 H 8332000 5/6
++
++# Videoland Multiplex
++S 3550000 V 30000000 3/4
++
++# GTV Multiplex
++S 3595000 H 30000000 3/4
++
++# Videoland multiplex
++S 3632000 V 30000000 3/4
++
++# Chungwa Telecom
++S 3671000 H 9256000 3/4
++
++# NTD TV Asia-Pacific
++S 3689000 H 3000000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Telkom1_C-108.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Telkom1_C-108.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,48 @@
++# Telkom 1 @ 108.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Telkom Vision Multiplex
++S 3580000 H 28000000 3/4
++
++# Telkom Vision Multiplex
++S 3620000 H 28000000 3/4
++
++# Telkom Vision Multiplex
++S 3640000 V 28000000 3/4
++
++# TV Timor Leste
++S 3776000 H 4285000 3/4
++
++# TV Edukasi 1
++S 3785000 H 4000000 3/4
++
++# TVRI Kalbar
++S 3793000 H 3000000 3/4
++
++# TVRI Papua
++S 3797000 H 3900000 3/4
++
++# TV Edukasi 2
++S 3807000 H 4000000 3/4
++
++# Trans 7
++S 3990000 H 6000000 3/4
++
++# TVRI Aceh
++S 4015000 H 6000000 3/4
++
++# RCTI Jawa Timur
++S 4025000 H 3000000 3/4
++
++# Trans TV
++S 4084000 H 6000000 3/4
++
++# Papua TV
++S 4092000 H 3570000 3/4
++
++# JTV
++S 4097000 H 3125000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Telstar10_C-76.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Telstar10_C-76.5E        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,63 @@
++# Telstar 10 @ 76.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Racing International
++S 3646000 H 5064000 3/4
++
++# Image Channel
++S 3655000 H 3214000 3/4
++
++# Globe Cast Asia multiplex
++S 3680000 H 27500000 3/4
++
++# UBI World TV Multiplex
++S 3760000 H 28066000 2/3
++
++# UBI World TV Multiplex
++S 3780000 V 28066000 2/3
++
++# Ekushey TV
++S 3787000 H 4600000 2/3
++
++# Diganta TV
++S 3793000 H 4340000 3/4
++
++# RRSat Global Network Multiplex
++S 3840000 H 27500000 3/4
++
++# Channel 1
++S 4003000 H 4080000 3/4
++
++# Boishakhi TV
++S 4009000 H 4300000 3/4
++
++# TV Maldives
++S 4030000 V 6312000 1/2
++
++# Channel I
++S 4034000 H 4300000 3/4
++
++# Bangla Vision
++S 4049000 H 3600000 3/4
++
++# Kantipur TV
++S 4056000 H 3214000 3/4
++
++# BBC World Service Multiplex
++S 4073000 H 13020000 1/2
++
++# MNC Indonesia
++S 4105000 H 3125000 3/4
++
++# NDTV Arabia
++S 4137000 H 2893000 3/4
++
++# Islamic TV
++S 4146000 H 3600000 3/4
++
++# Bangladesh Multiplex
++S 4173000 H 7400000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Telstar18_C-138.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Telstar18_C-138.0E       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# Telstar 18 @ 138.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# I-Sky-Net Multiplex
++S 3599000 V 30000000 3/4
++
++# I-Sky-Net Multiplex
++S 3660000 V 30000000 3/4
++
++# LNTV Laos
++S 3704000 V 3034000 3/4
++
++# BBC World Service Multiplex
++S 4124000 V 3255000 1/2
+diff -r af23d23c278b util/scan/dvb-s/Thaicom1A_C-120.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Thaicom1A_C-120.0E       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,24 @@
++# Thaicom 1A @ 120.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# TV3 Cambodia
++S 3725000 V 3255000 3/4
++
++# Panyapiwat
++S 3745000 V 2850000 5/6
++
++# CTN Cambodia Multiplex
++S 3854000 V 9628000 3/4
++
++# Kasikorn TV
++S 3881000 V 2000000 3/4
++
++# Bayon TV
++S 3916000 V 3359000 3/4
++
++# Radio Thailand Multiplex
++S 4135000 V 1808000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Thaicom2_C-78.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Thaicom2_C-78.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,33 @@
++# Thaicom 2 @ 78.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# BBTV Channel 7
++S 3764000 H 5900000 3/4
++
++# SBT TV
++S 3803000 H 1445000 7/8
++
++# MCOT Multiplex
++S 3888000 H 15625000 3/4
++
++# Royal Thai Army TV 5
++S 3905000 H 6250000 3/4
++
++# Thai TV Color Channel 3
++S 3967000 H 4551000 3/4
++
++# RU TV 1
++S 4003000 H 1085000 3/4
++
++# Ten TV & Rich Channel
++S 4016000 H 2305000 7/8
++
++# NBT TV
++S 4106000 H 4688000 3/4
++
++# Thai PBS
++S 4145000 H 4815000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Thaicom5_C-78.5E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Thaicom5_C-78.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,69 @@
++# Thaicom 5 @ 78.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# ETC India Multiplex
++S 3421000 V 6667000 3/4
++
++# Europe Media Port Multiplex
++S 3431000 H 13333000 3/4
++
++# Nepal TV Multiplex
++S 3432000 V 6667000 3/4
++
++# CTV9
++S 3448000 V 2222000 3/4
++
++# RRSat Global Network (MPEG-4 S/2)
++S 3450000 H 13333000 3/4
++
++# Avenues TV
++S 3454000 V 3333000 3/4
++
++# PSI Channel
++S 3460000 V 1538000 3/4
++
++# Sagarmatha TV
++S 3489000 V 3333000 3/4
++
++# Dhi TV
++S 3502000 V 4444000 2/3
++
++# Korean Central TV
++S 3504000 H 3367000 2/3
++
++# Gang Cartoon Channel
++S 3505000 V 1852000 3/4
++
++# Lao Star Channel
++S 3521000 V 2917000 3/4
++
++# Thaicom Multiplex
++S 3545000 V 30000000 5/6
++
++# RRSat Global Network
++S 3551000 H 13333000 3/4
++
++# VTV Maldives
++S 3562000 H 4444000 1/2
++
++# MRTV Multiplex
++S 3574000 H 7492000 2/3
++
++# Thaicom Multiplex
++S 3585000 V 26667000 3/4
++
++# Thaicom Multiplex
++S 3600000 H 26667000 3/4
++
++# MRTV Multiplex
++S 3617000 V 12500000 3/4
++
++# RRSat Global Network Multiplex
++S 3640000 H 28066000 3/4
++
++# TVK Cambodia
++S 3664000 H 3704000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Vinasat1_C-132.0E
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Vinasat1_C-132.0E        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# VINASAT 1 @ 132.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# VTV Multiplex (VTV 1, VTV 2, VTV 3, VTV 4, VTV6)
++S 3413000 V 9766000 3/4
++
++# VOV TV (Voice of VietNam)
++S 3529000 V 2500000 2/3
+diff -r af23d23c278b util/scan/dvb-t/au-Adelaide
+--- a/util/scan/dvb-t/au-Adelaide      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/au-Adelaide      Tue Dec 21 12:13:28 2010 +0100
+@@ -10,3 +10,5 @@
+ T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+ # SBS
+ T 564500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 3D Trial Australia
++T 536625000 7MHz 3/4 NONE QAM16 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-AdelaideFoothills
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-AdelaideFoothills     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# Australia / Adelaide / Grenfell Street
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC
++T 781625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Seven
++T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Nine
++T 795500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Ten
++T 732500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS
++T 760500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Ballarat
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Ballarat      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# Australia / Ballarat
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC
++T 620625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Prime
++T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# WIN
++T 592625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SC
++T 613500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS
++T 634625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Bendigo
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Bendigo       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++# Australia / Bendigo (Mt Alexandria transmitters)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC
++T 669500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 620500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 572500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Seven
++T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 555250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Nine
++T 576250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 592500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Ten
++T 618250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# SBS
++T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 634500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 534250000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++
++# UNK1
++T 676500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# UNK2
++T 571500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++T 536625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 585625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 543500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 536500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 529500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 205500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 536625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 550500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Brisbane
+--- a/util/scan/dvb-t/au-Brisbane      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/au-Brisbane      Tue Dec 21 12:13:28 2010 +0100
+@@ -10,3 +10,5 @@
+ T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+ # SBS
+ T 585625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 31 Digital
++T 599500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Devonport
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Devonport     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++# Australia / Tasmania / Devonport
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#
++# Brett S Hallett October 2009 , may not be complete !!
++#
++# ABC VHF 57
++T 730250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# ABC Digital 45
++T 648500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS VHF 54
++T 709250000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SBS Digital 39
++T 606500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SCTV
++T 613498000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# WIN
++T 627498000 7MHz 3/4 NONE QAM64 8k 1/8 NONE
++# TDT
++T 585498000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-FraserCoast-Bundaberg
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-FraserCoast-Bundaberg Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# Australia / QLD / Fraser Coast - Bundaberg / Mt Goonaneman
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC VHF9A
++T 205625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS UHF28
++T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# Seven VHF7
++T 184625000 7MHz 2/3 NONE QAM64 8k 1/16 NONE
++# WIN Wide Bay VHF10
++T 212500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Southern Cross Ten VHF9
++T 198525000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Goulburn-Rocky_Hill
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Goulburn-Rocky_Hill   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++# Australia / Goulburn / Rocky Hill
++#
++# Scanned 17/10/2009 - Alex Ferrara (alex@receptiveit.com.au)
++
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC - netid (4112) tid (547) offset (+125Khz)
++T 725625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# SBS - netid (12802) tid (848) offset (+125Khz)
++T 746625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++
++# WIN - netid (12915) tid (12922) offset (+125Khz)
++T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Prime - netid (12929) tid (2462) offset (+125Khz)
++T 788625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# TEN - netid (12812) tid (2055) offset (0Khz)
++T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Hervey_Bay-Ghost_Hill
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Hervey_Bay-Ghost_Hill Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++# Australia / Hervey Bay / Ghost Hill
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#
++# ABC UHF56
++T 725500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Seven UHF59
++T 746500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Nine UHF62
++T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Ten UHF68
++T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS UHF28
++T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SBS UHF34
++T 704500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-SunshineCoast
+--- a/util/scan/dvb-t/au-SunshineCoast Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/au-SunshineCoast Tue Dec 21 12:13:28 2010 +0100
+@@ -3,7 +3,7 @@
+ # SBS36 SBS ***
+ T 585625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+ # TNQ47 10 ***
+-T 662625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 662625000 7MHz 3/4 NONE QAM64 8k 1/8 NONE
+ # ABQ62 ABC ***
+ T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+ # STQ65 7 ***
+diff -r af23d23c278b util/scan/dvb-t/au-Sutherland
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Sutherland    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,20 @@
++# Australia / Sutherland
++#
++# Australia modulation params:
++# - http://www.dba.org.au/index.asp?sectionID=120
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#
++# North (Broadcast Site Escarpment Road BROKERS NOSE)
++# - http://www.dba.org.au/index.asp?query=true&sectionID=22&recLocation=Wollongong+%2D+North
++#
++#Channel 7 stations
++T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++#Channel 9 bundle
++# T 191500000 7MHz AUTO AUTO AUTO AUTO AUTO AUTO
++#One and Channel 10
++T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++#Aunty
++T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++#SBS
++T 571500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-All
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/be-All   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Belgium, whole country
++# Created from http://nl.wikipedia.org/wiki/DVB-T-frequenties
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 482000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
++T 506000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
++T 666000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE
++T 754000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE
++T 834000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-Brussels
+--- a/util/scan/dvb-t/be-Brussels      Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,5 +0,0 @@
+-# Brussels - Belgium (Transmitters of the RTBF and the VRT)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # RTBF
+-T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # BE-TV
+-T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # VRT
+diff -r af23d23c278b util/scan/dvb-t/be-Libramont
+--- a/util/scan/dvb-t/be-Libramont     Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,10 +0,0 @@
+-# Libramont - Belgique
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# Canal  7 191.5 MHz M6
+-# Canal 24 498.0 MHz RTL-TVI  Club-RTL  Plug-TV  RTL 4,5,7
+-# Canal 27 522.0 MHz RTL Lux, den 2ten RTL
+-# Canal 56 834.0 MHz RTBF 1,2,3 + radio
+-T 191500000 7MHz 1/2 NONE QAM64 8k 1/8 NONE
+-T 498000000 8MHz 1/2 NONE QAM64 8k 1/16 NONE
+-T 522000000 8MHz 1/2 NONE QAM64 8k 1/16 NONE
+-T 834000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-Schoten
+--- a/util/scan/dvb-t/be-Schoten       Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# Schoten-Antwerpen - Belgie
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 778000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-St_Pieters_Leeuw
+--- a/util/scan/dvb-t/be-St_Pieters_Leeuw      Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# St.-Pieters-Leeuw - Belgie
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-Tournai
+--- a/util/scan/dvb-t/be-Tournai       Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# Tournai - Belgique
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/ch-All
+--- a/util/scan/dvb-t/ch-All   Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/ch-All   Tue Dec 21 12:13:28 2010 +0100
+@@ -19,6 +19,7 @@
+ T 682000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 690000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 698000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
++T 706000000 8MHz 1/2 NONE QAM16 8k 1/4 NONE
+ T 714000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 722000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 722000000 8MHz 5/6 NONE QAM16 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/ch-Geneva
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/ch-Geneva        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++# Switzerland, whole country
++# Created from http://www.broadcast.ch/portal.aspx?pid=705
++# and http://www.broadcast.ch/data_program_dvbt.aspx
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#  freq     bw   fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 570166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 578000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
++T 658166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 666166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 682166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 706000000 8MHz 1/2 NONE QAM16 8k 1/4 NONE
++T 746166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 770166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 794166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 818166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 850166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-All
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/cz-All   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++# Czech Republic, whole country
++# Created from http://www.digizone.cz/texty/mapy-pokryti-multiplex-1-ceska-televize/
++# and http://www.digizone.cz/texty/mapy-pokryti-multiplex-2-radiokomunikace/
++# and http://www.digizone.cz/texty/mapy-pokryti-multiplex-3-czech-digital-group/
++# and http://www.digizone.cz/texty/mapy-pokryti-multiplex-4-telefonica-o2/
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Brno
+--- a/util/scan/dvb-t/cz-Brno  Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,10 +0,0 @@
+-# DVB-T Brno (Brno, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# MUX 1 Ceska televize
+-T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 2 Ceske radiokomunikace
+-T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 3 Czech Digital Group
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 4 Telefonica O2
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Domazlice
+--- a/util/scan/dvb-t/cz-Domazlice     Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# DVB-T Domažlice (Domažlice, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Klet
+--- a/util/scan/dvb-t/cz-Klet  Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,4 +0,0 @@
+-# DVB-T Ceske Budejovice (Klet, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# CRa - Ceske radiokomunikace, TX Klet
+-T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Ostrava
+--- a/util/scan/dvb-t/cz-Ostrava       Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# DVB-T Ostrava (Ostrava, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Plzen
+--- a/util/scan/dvb-t/cz-Plzen Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,8 +0,0 @@
+-# DVB-T Plzen (Pilsen, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# MUX 1 Ceska televize
+-T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 2 Ceske Radiokomunikace
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 3 Czech Digital Group
+-T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Praha
+--- a/util/scan/dvb-t/cz-Praha Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,7 +0,0 @@
+-# DVB-T Praha (Prague, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 674000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/de-Baden-Wuerttemberg
+--- a/util/scan/dvb-t/de-Baden-Wuerttemberg    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Baden-Wuerttemberg    Tue Dec 21 12:13:28 2010 +0100
+@@ -1,20 +1,19 @@
+ # DVB-T Baden-Württemberg
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsPlus
+-T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: SWR-BW, BR, hr, WDR
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: SWR-BW, BR, hr, WDR
+-T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH41: SWR-BW, BR, hr, WDR
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: SWR-BW, Bayerisches Fernsehen, hr, WDR
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: SWR-BW, Bayerisches Fernsehen, hr, WDR
++T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH41: SWR-BW, Bayerisches Fernsehen, hr, WDR
+ T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, arte, Phoenix, EinsPlus
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: SWR-BW, BR, hr, WDR
+-T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: Das Erste, arte, Phoenix, EinsPlus
+-                                            # CH50: SWR-BW, BR, hr, WDR
++T 666000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH45: RTL, RTL 2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: SWR-BW, Bayerisches Fernsehen, hr, WDR
++T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: SWR-BW, Bayerisches Fernsehen, hr, WDR
+ T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Das Erste, arte, Phoenix, EinsPlus
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Das Erste, arte, Phoenix, EinsPlus
+-                                            # CH53: SWR-BW, BR, hr, WDR
+ T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: Das Erste, arte, Phoenix, EinsPlus
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Das Erste, arte, Phoenix, EinsPlus
+ T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsPlus
+diff -r af23d23c278b util/scan/dvb-t/de-Bayern
+--- a/util/scan/dvb-t/de-Bayern        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Bayern        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,40 +1,40 @@
+ # DVB-T Bayern
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 184500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE # CH06: Das Erste, arte, Phoenix, EinsPlus
+ T 191500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE # CH07: Das Erste, arte, Phoenix, EinsPlus
+ T 212500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE # CH10: Das Erste, arte, Phoenix, EinsPlus
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: BR, BRalpha, SWR, Das Erste
+-                                            # CH25: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: BR, BRalpha, SWR, Das Erste
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: BR, BRalpha, SWR, Das Erste
+-                                            # CH28: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++                                            # CH25: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++                                            # CH28: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: Das Erste, arte, Phoenix, EinsPlus
+ T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: Das Erste, arte, Phoenix, EinsPlus
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL II, Super RTL, VOX
+-                                            # CH34: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL 2, Super RTL, VOX
++                                            # CH34: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: Das Erste, arte, Phoenix, EinsPlus
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: BR, BRalpha, hr, mdr
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: Bayerisches Fernsehen, BR-alpha, MDR, hr
+                                             # CH40: Das Erste, arte, Phoenix, EinsPlus
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: BR, BRalpha, hr, mdr
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Bayerisches Fernsehen, BR-alpha, MDR, hr
+                                             # CH45: Das Erste, arte, Phoenix, EinsPlus
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: BR, BRalpha, SWR, Das Erste
+-                                            # CH46: BR, BRalpha, hr, mdr
+-T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: BR, BRalpha, hr, mdr
++T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: Bayerisches Fernsehen, BR-alpha, MDR, hr
++                                            # CH46: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Bayerisches Fernsehen, BR-alpha, MDR, hr
+                                             # CH47: Das Erste, arte, Phoenix, EinsPlus
+-T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Pro7, Sat.1, Kabel1, N24
+-T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Pro7, Sat.1, Kabel1, N24
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: BR, BRalpha, SWR, Das Erste
+-                                            # CH53: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: http://www.digitalfernsehen.de/news/news_769785.html
++T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Sat.1, ProSieben, Kabel1, N24
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Das Erste, arte, Phoenix, EinsPlus
++T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: ProSieben, Sat.1, Kabel1, N24
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++                                            # CH53: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: Das Erste, arte, Phoenix, EinsPlus
+ T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Das Erste, arte, Phoenix, EinsPlus
+-T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: BR, BRalpha, SWR, Das Erste
+-T 770000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH58: Das Erste, arte, Phoenix, EinsPlus
+-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Eurosport, MonA, Franken Fernsehen
+-T 834000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH66: RTL, RTL II, Super RTL, VOX
+-                                            # CH66: Tele 5, Eurosport, HSE 24, münchen.tv
++T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Channel21/ Euronews, Bibel TV, HSE 24, Franken Fernsehen
++T 834000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH66: RTL, RTL 2, Super RTL, VOX
++                                            # CH66: Tele 5, Channel21/ Euronews, Bibel TV, HSE 24, münchen.tv
+diff -r af23d23c278b util/scan/dvb-t/de-Berlin
+--- a/util/scan/dvb-t/de-Berlin        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Berlin        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,11 +1,12 @@
+ # DVB-T Berlin
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 177500000 7MHz 3/4 NONE QAM16 8k 1/8 NONE # CH05: HSE 24/MONA, FAB, WDR, SWR
++T 177500000 7MHz 3/4 NONE QAM16 8k 1/8 NONE # CH05: Tele 5, HSE 24, WDR, SWR (BW / RP)
+ T 191500000 7MHz 2/3 NONE QAM16 8k 1/8 NONE # CH07: MDR, NDR, arte
+-T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: RTL, RTL II, Super RTL, VOX
++T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: RTL, RTL 2, Super RTL, VOX
+ T 522000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH27: Das Erste, RBB, Phoenix, EinsExtra
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH44: Pro7, Sat.1, Kabel1, N24
+-T 754000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH56: Eurosport, TV.B, DSF, Neun live
+-T 778000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH59: n-tv, EuroNews, + 26 Radioprogramme
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH39: Das Vierte, Bibel.TV, QVC, Bayerisches Fernsehen
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH44: ProSieben, Sat.1, Kabel1, N24
++T 754000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH56: Eurosport, TV.B, Sport1, 9Live
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH59: n-tv, EuroNews / Channel 21 Shop, PLACE2BE + 8 Radioprogramme
+diff -r af23d23c278b util/scan/dvb-t/de-Brandenburg
+--- a/util/scan/dvb-t/de-Brandenburg   Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Brandenburg   Tue Dec 21 12:13:28 2010 +0100
+@@ -1,7 +1,7 @@
+ # DVB-T Brandenburg
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 730000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE # CH53: Das Erste, RBB, Phoenix, EinsExtra
+ T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: MDR, NDR, arte
+diff -r af23d23c278b util/scan/dvb-t/de-Bremen
+--- a/util/scan/dvb-t/de-Bremen        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Bremen        Tue Dec 21 12:13:28 2010 +0100
+@@ -3,7 +3,7 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste (RB), RB TV (NDR NDS), arte, Phoenix
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL II, Super RTL, VOX
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, Neun live, Eurosport, MONA/DMAX
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Pro7, Sat.1, Kabel1, N24
++T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL 2, Super RTL, VOX
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, 9Live, Eurosport, MONA / Channel 21
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: ProSieben, Sat.1, Kabel1, N24
+diff -r af23d23c278b util/scan/dvb-t/de-Hamburg
+--- a/util/scan/dvb-t/de-Hamburg       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Hamburg       Tue Dec 21 12:13:28 2010 +0100
+@@ -1,16 +1,12 @@
+ # DVB-T Hamburg
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
++# CH36 entry from http://www.dvb-t-nord.de/programme/index.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: Pro7, Sat.1, Kabel1, N24
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH30: Pro7, Sat.1, Kabel1, N24
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ProSieben, Sat.1, Kabel1, N24
+ T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL II, Super RTL, VOX
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH40: RTL, RTL II, Super RTL, VOX
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: Neun live, HH1, BibelTV, Eurosport
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH46: Neun live, HH1, BibelTV, Eurosport
+-T 738000000 8MHz 1/2 NONE QAM64 8k 1/8 NONE # CH54: NDR HH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR SH
+-T 738000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH54: NDR HH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR SH
++T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: TELE 5, QVC, DAS VIERTE, Channel 21 / Euronews
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL 2, Super RTL, VOX
++T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: 9Live, HH1, Bibel.TV, Eurosport
++T 738000000 8MHz 1/2 NONE QAM64 8k 1/8 NONE # CH54: NDR HH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR SH
+diff -r af23d23c278b util/scan/dvb-t/de-Hessen
+--- a/util/scan/dvb-t/de-Hessen        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Hessen        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,19 +1,19 @@
+ # DVB-T Hessen
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 198500000 7MHz 2/3 NONE QAM16 8k 1/4 NONE # CH08: Phoenix, BR, SWR-RP
+-T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: Phoenix, BR, SWR-RP, WDR
+-T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 198500000 7MHz 2/3 NONE QAM16 8k 1/4 NONE # CH08: Phoenix, Bayerisches Fernsehen, SWR-RP
++T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: Phoenix, Bayerisches Fernsehen, SWR-RP, WDR
++T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: Das Erste, hr, EinsExtra/arte
+-T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL II, Super RTL, VOX
++T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL 2, Super RTL, VOX
+ T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: Das Erste, hr, EinsExtra/arte
+-T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Phoenix, BR, SWR-RP, mdr
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Phoenix, Bayerisches Fernsehen, SWR-RP, MDR
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, hr, EinsExtra/arte
+-T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: BR, hr, SWR-BW, WDR
+-T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: Pro7, Sat.1, Kabel1, N24
+-T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Phoenix, NDR, mdr, WDR
+-T 818000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH64: Tele5, Eurosport, rheinmaintv
++T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Bayerisches Fernsehen, hr, SWR-BW, WDR
++T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: ProSieben, Sat.1, Kabel1, N24
++T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Phoenix, NDR, MDR, WDR
++T 818000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH64: Tele5, Eurosport, rheinmaintv, Bibel.TV
+diff -r af23d23c278b util/scan/dvb-t/de-Mecklenburg-Vorpommern
+--- a/util/scan/dvb-t/de-Mecklenburg-Vorpommern        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Mecklenburg-Vorpommern        Tue Dec 21 12:13:28 2010 +0100
+@@ -2,11 +2,11 @@
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste, NDR MVP, RBB, MDR/NDR SH
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, NDR MVP, RBB, MDR/NDR SH
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: Das Erste, NDR MVP, RBB, MDR/NDR SH
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: Das Erste, NDR MVP, RBB, MDR/NDR SH
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 714000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH51: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+diff -r af23d23c278b util/scan/dvb-t/de-Niedersachsen
+--- a/util/scan/dvb-t/de-Niedersachsen Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Niedersachsen Tue Dec 21 12:13:28 2010 +0100
+@@ -5,36 +5,35 @@
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste (RB), RB TV (NDR NDS), arte, Phoenix
+                                             # CH22: Das Erste, arte, Phoenix, EinsExtra
+                                             # CH22: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: RTL, RTL II, Super RTL, VOX
+-                                            # CH24: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Tele 5, NICK/Comedy Central, Eurosport, MONA/DMAX
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: RTL, RTL 2, Super RTL, VOX
++T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsExtra
++T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Tele 5, NICK / Comedy Central, Eurosport, MONA / Channel 21
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 610000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH38: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 610000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH38: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH41: Das Erste, arte, Phoenix, EinsExtra
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL II, Super RTL, VOX
+-                                            # CH42: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL 2, Super RTL, VOX
++                                            # CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, arte, Phoenix, EinsExtra
+                                             # CH43: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: Pro7, Sat.1, Kabel1, N24
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, Neun live, Eurosport, MONA/DMAX
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ProSieben, Sat.1, Kabel1, N24
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, 9Live, Eurosport, MONA / Channel 21
+ T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Das Erste, arte, Phoenix, EinsExtra
+ T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Das Erste, arte, Phoenix, EinsExtra
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Pro7, Sat.1, Kabel1, N24
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: ProSieben, Sat.1, Kabel1, N24
+ T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: Das Erste, arte, Phoenix, EinsExtra
+-T 714000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH51: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Das Erste, arte, Phoenix, EinsExtra
+ T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 770000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH58: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Das Erste, arte, Phoenix, EinsExtra
+-                                            # CH59: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Comedy Central, Eurosport, MONA/DMAX
+-                                            # CH60: Tele 5, NICK/Comedy Central, Eurosport, MONA/DMAX
++                                            # CH59: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, NICK / Comedy Central, Eurosport, MONA / Channel 21
+ T 826000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH65: Das Erste, arte, Phoenix, EinsExtra
+diff -r af23d23c278b util/scan/dvb-t/de-Nordrhein-Westfalen
+--- a/util/scan/dvb-t/de-Nordrhein-Westfalen   Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Nordrhein-Westfalen   Tue Dec 21 12:13:28 2010 +0100
+@@ -5,13 +5,13 @@
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH22: WDR-Wuppertal, NDR/WDR-Düsseldorf, MDR, SWR
+ T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: WDR-Dortmund, NDR/WDR-Essen, MDR, SWR
+ T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsFestival
+-                                            # CH26: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++                                            # CH26: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 522000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH27: WDR-Siegen, NDR, MDR, SWR
+-T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: RTL, RTL II, Super RTL, VOX
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: RTL, RTL 2, Super RTL, VOX
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 554000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH31: WDR-Bielefeld, NDR/WDR-Siegen, MDR, SWR
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: CNN, Eurosport, Tele5, VIVA
+ T 602000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH37: WDR-Aachen, NDR/WDR-Köln, MDR, SWR
+ T 666000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH45: WDR-Münster, NDR/WDR-Dortmund, MDR, SWR
+@@ -20,8 +20,8 @@
+ T 698000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH49: WDR-Köln, MDR/WDR-Bonn, NDR/WDR-Aachen, SWR
+ T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: Das Erste, arte, Phoenix, EinsFestival
+ T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: CNN, Eurosport, Tele5, VIVA
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Pro7, Sat.1, Kabel1, N24
+-T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Pro7, Sat.1, Kabel1, N24
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: ProSieben, Sat.1, Kabel1, N24
++T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: ProSieben, Sat.1, Kabel1, N24
+ T 762000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH57: WDR-Essen, NDR/WDR-Dortmund, MDR, SWR
+-T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/de-Rheinland-Pfalz
+--- a/util/scan/dvb-t/de-Rheinland-Pfalz       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Rheinland-Pfalz       Tue Dec 21 12:13:28 2010 +0100
+@@ -1,12 +1,12 @@
+ # DVB-T Rheinland-Pfalz
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: SWR-RP, BR, hr, WDR
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, BR, hr, WDR
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: SWR-RP, Bayerisches Fernsehen, hr, WDR
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, Bayerisches Fernsehen, hr, WDR
+ T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: Das Erste, arte, Phoenix, EinsPlus
+-T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: SWR-RP, BR, hr, WDR
++T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: SWR-RP, Bayerisches Fernsehen, hr, WDR
+ T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: Das Erste, arte, Phoenix, EinsPlus
+ T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: Das Erste, arte, Phoenix, EinsPlus
+ T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsPlus
+diff -r af23d23c278b util/scan/dvb-t/de-Saarland
+--- a/util/scan/dvb-t/de-Saarland      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Saarland      Tue Dec 21 12:13:28 2010 +0100
+@@ -1,7 +1,7 @@
+ # DVB-T Saarland
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: Das Erste, SR Fernsehen, arte, Phoenix
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, BR, hr, WDR
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: SaarTV, Tele 5, QVC, BibelTV
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, Bayerisches Fernsehen, hr, WDR
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Tele 5, QVC, Bibel.TV, freie Kapazität
+diff -r af23d23c278b util/scan/dvb-t/de-Sachsen
+--- a/util/scan/dvb-t/de-Sachsen       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Sachsen       Tue Dec 21 12:13:28 2010 +0100
+@@ -1,12 +1,14 @@
+ # DVB-T Sachsen
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 205500000 7MHz 2/3 NONE QAM64 8k 1/16 NONE # CH09: MDR-SN, rbb, BR, WDR
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH24: Das Erste, arte, Phoenix, EinsFestival
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH25: Das Erste, arte, Phoenix, EinsFestival
+-T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-SN, rbb, BR, WDR
+-T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: MDR-SN, rbb, BR, WDR
+-T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH32: MDR-SN, rbb, BR, WDR
+-T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-SN, rbb, Bayerisches Fernsehen, WDR
++T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL 2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: MDR-SN, rbb, Bayerisches Fernsehen, WDR
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH31: LF Leipzg.Ferns., InfoTVLeipzig, BBCWorld, Bibel.TV, RadioLeipzig, RadioHoreb
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH32: MDR-SN, rbb, Bayerisches Fernsehen, WDR
++T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH37: MDR-SN, rbb, Bayerisches Fernsehen, WDR
+ T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH39: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/de-Sachsen-Anhalt
+--- a/util/scan/dvb-t/de-Sachsen-Anhalt        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Sachsen-Anhalt        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,12 +1,12 @@
+ # DVB-T Sachsen-Anhalt
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH24: Das Erste, arte, Phoenix, EinsFestival
++T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL 2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
+ T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: Das Erste, arte, Phoenix, EinsFestival
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH34: MDR-ST, rbb, NDR, WDR
+-T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH35: MDR-ST, rbb, NDR, WDR
+ T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH38: MDR-ST, rbb, NDR, WDR
+ T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH41: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/de-Schleswig-Holstein
+--- a/util/scan/dvb-t/de-Schleswig-Holstein    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Schleswig-Holstein    Tue Dec 21 12:13:28 2010 +0100
+@@ -1,18 +1,18 @@
+ # DVB-T Schleswig-Holstein
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: Pro7, Sat.1, Kabel1, N24
+-T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsExtra
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ProSieben, Sat.1, Kabel1, N24
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: Pro7, Sat.1, Kabel1, N24
+-T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL II, Super RTL, VOX
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: RTL, RTL II, Super RTL, VOX
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ProSieben, Sat.1, Kabel1, N24
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL 2, Super RTL, VOX
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: RTL, RTL 2, Super RTL, VOX
+ T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Das Erste, arte, Phoenix, EinsExtra
+-T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: Neun live, Tele 5, Eurosport, MONA/DMAX
+-T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Neun live, Tele 5, Eurosport, MONA/DMAX
+-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsExtra
++T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: 9Live, Tele 5, Eurosport, Bibel.TV
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: 9Live, Tele 5, Eurosport, Bibel.TV
+diff -r af23d23c278b util/scan/dvb-t/de-Thueringen
+--- a/util/scan/dvb-t/de-Thueringen    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Thueringen    Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,9 @@
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 474000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH21: Das Erste, arte, Phoenix, EinsFestival
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH25: Das Erste, arte, Phoenix, EinsFestival
+-T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-TH, rbb, hr, BR
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH48: MDR-TH, rbb, hr, BR
+-T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-TH, rbb, hr, Bayerisches Fernsehen
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH48: MDR-TH, rbb, hr, Bayerisches Fernsehen
++T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH53: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/dk-All
+--- a/util/scan/dvb-t/dk-All   Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/dk-All   Tue Dec 21 12:13:28 2010 +0100
+@@ -2,16 +2,22 @@
+ # Created from http://www.digi-tv.dk/Indhold_og_tilbud/frekvenser.asp
+ # and http://www.digi-tv.dk/Sendenettets_opbygning/
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 554000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/es-Albacete
+--- a/util/scan/dvb-t/es-Albacete      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Albacete      Tue Dec 21 12:13:28 2010 +0100
+@@ -1,8 +1,14 @@
+-# Spain, Albacete
++# Spain, Albacete - Update 2010/08/12 (Freud)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 59: La Primera, La 2, Canal 24H, Clan/TVE 50, RNE1, RNE Clásica, RNE 3
+-T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 63: CLMTV
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 66: Veo, Veo 2, Net TV, Teledeporte
+-T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 67: Cuatro, CNN+, 40 Latino, La Sexta 1
+-T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 68: Telecinco, Telecinco Sport, Telecinco Estrellas, Fly Music
+-T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 69: Antena 3, Antena Neox, Antena Nova, La Sexta 2
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 37: La Regional, TCM, CRN
++T 674000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 46: Sogecuatro, laSexta2, laSexta3 (Todos pendientes de asignar)
++T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 47: CNC, Vision6, ABTeVe, Punto Radio
++T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 50: Boing, La 10, MTV, Punto Radio
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 53: Nitro, Marca TV, Veo13
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 56: TVE HD, Teledeporte, Pruebas TVE, RNE 1, RNE CLÁSICA, RNE 3
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 59: La 1, La 2, 24H, Clan, RNE1, RNE Clásica, RNE 3
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 63: CMT, CMT2, RCM
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 66: Veo7, Tienda en Veo, Intereconomía, AXN, Teledeporte, Radio Intereconomía, Radio Marca, esRadio, Vaughan Radio
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 67: Cuatro, CNN+, 40 Latino, Canal+ Dos, Canal Club, LaSexta, SER, 40 Principales, Cadena Dial
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 68: Telecinco, La Siete, FDF, CincoShop, Disney Channel, Punto Radio
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 69: Antena 3, Neox, Nova, Gol Televisión, Onda Cero, Europa FM, Onda Melodía 
+diff -r af23d23c278b util/scan/dvb-t/es-Alfabia
+--- a/util/scan/dvb-t/es-Alfabia       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Alfabia       Tue Dec 21 12:13:28 2010 +0100
+@@ -1,5 +1,8 @@
+ # DVB-T Alfabia, Mallorca, Balearic Islands, Spain.
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # TV3 Cat, 3/24, 33, Super3/300
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # TV Mallorca, Canal 4
++T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Popular TV, TEVEi
+ T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C.63: 24h, 50 aniv., ClanTV, La 2, TVE1; RNE 1, RNE 3, RNE C; Digitext, EPG, Lanzadera.
+ T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C.65: IB3, Aprenda Ingles TV
+ T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C.66: NetTV, Teledeporte, VeoTV1, VeoTV2.
+diff -r af23d23c278b util/scan/dvb-t/es-BaixoMinho
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-BaixoMinho    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++# file automatically generated by w_scan
++# (http://wirbel.htpc-forum.de/w_scan/index2.html)
++#! <w_scan> 20090528 1 0 OFDM ES </w_scan>
++#------------------------------------------------------------------------------
++# location and provider: Baixo Minho, Pontevedra (Spain)
++# date (yyyy-mm-dd)    : 2009-07-11
++# provided by (opt)    : neonmann@gmail.com
++#
++# T[2] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
++#------------------------------------------------------------------------------
++T 834000000 8MHz  2/3 NONE    QAM64   8k  1/4 NONE      # SFN
++T 842000000 8MHz  2/3 NONE    QAM64   8k  1/4 NONE
++T 850000000 8MHz  2/3 NONE    QAM64   8k  1/4 NONE      # SFN
++T 858000000 8MHz  2/3 NONE    QAM64   8k  1/4 NONE
++T 770000000 8MHz  2/3 NONE    QAM64   8k  1/4 NONE      # RAR Pontevedra
++T 810000000 8MHz  2/3 NONE    QAM64   8k  1/4 NONE      # RGE GALICIA
+diff -r af23d23c278b util/scan/dvb-t/es-Collserola
+--- a/util/scan/dvb-t/es-Collserola    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Collserola    Tue Dec 21 12:13:28 2010 +0100
+@@ -1,10 +1,12 @@
+ # DVB-T Collserola (Barcelona)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c26: BTV
+-T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c33: CityTV
+-T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c61: TV3, K3/33, 3/24, 300
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c26: BTV, TV Badalona, TV L'Hospitalet, TV del Besòs, COM Ràdio, Ràdio Ciutat Badalona, Ràdio L'Hospitalet
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c33: 8TV, Barça TV, EDC3, 105TV, RAC 1, RAC 105
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c43: TV3HD, 3/24, Canal 9, IB3, Catalunya Música, iCat FM
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c48: Urbe TV, Canal Català, 25 TV, Localia, Ona FM, Onda Rambla, Sensació Ràdio
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c61: TV3, 33, 3/24, K3/300, Catalunya Ràdio, Catalunya Informació
+ T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c64: TVE1, TVE2, TVE 24H, Clan/TVE 50 Años, RNE1, RNEC, RNE3
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c66: Veo TV, Veo2, Net TV, Teledeporte
+-T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c67: Cuatro, CNN+, 40 Latino, La Sexta1
+-T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c68: Telecino, T5 Sport, T5 Estrellas, Fly Music
+-T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c69: Antena 3, Antena.Neox, Antena.Nova, La Sexta2
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c66: Veo7, Sony TV en Veo, Tienda en Veo, Intereconomía, Teledeporte, Radio Intereconomía, Radio Marca
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c67: Cuatro, CNN+, 40 Latino, La Sexta, Ser, 40 Principales, Cadena Dial
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c68: Telecino, La Siete, FDF, CincoShop, Disney Channel, Punto Radio
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE     #c69: Antena 3, Antena.Neox, Antena.Nova, Hogar 10, Onda Cero, Europa FM, Onda Melodía
+diff -r af23d23c278b util/scan/dvb-t/es-Granada
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-Granada       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Spain, Granada
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/es-Las_Palmas
+--- a/util/scan/dvb-t/es-Las_Palmas    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Las_Palmas    Tue Dec 21 12:13:28 2010 +0100
+@@ -1,8 +1,18 @@
+-# Funciona correctamente en Las Palmas de Gran Canaria (24-4-2007)
++# Funciona correctamente en Las Palmas de Gran Canaria (25-09-2010)
++# 
++# Revisada y corregida por el Grupo de Usuarios de Linux de Canarias
++# http://www.gulic.org
++#
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 530000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 28: TVE HD, Teledeporte, RNE Clásica, RNE 3
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 32: Boing, Telecinco HD, La 10, MTV, Punto Radio
++T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 35: Sogecuatro, LaSexta2, LaSexta3
++T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 38: Nitro, Antena 3 HD, Marca TV, Veo13
++T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 44: Canal 7 Gran Canaria, TIC Canal 8, Canal 4, RTI
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 52: Localia, Nueve TV, Nueve Radio
+ T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 60: TVE1, TVE2, 24H TVE, Clan/TVE, RNE, RNEC, RNE3, Lanzadera, EPG, Digitext, Meteo, Bolsa, Trafico, Empleat
+-T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 65: TV C, TV C2
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 66: Net TV, Teledeporte, Veo TV1, SETenVeo, Radio Intereconomía Lanzadera, EPG, Digitext, Meteo, Bolsa, Trafico, Empleat
+-T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 67: CNN+, Cuatro, La Sexta 1, 40 Latino TV, EPG Soge V2 5
+-T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 68: Fly Music, Punto Radio, Tele 5, Tele 5 Estrellas, Tele 5 Sport
+-T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 69: Antena 3, Antena.Neox, Antena.Nova, Telehit, Onda Cero, Europa FM, Onda Melodia, A3Lanzadera, A3Portal, EPGA3, A3Ticker
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 65: TV C, TV C2, Antena 3 Canarias, Popular TV, Canarias Radio, Cope, Cadena 100, Radio ECCA, Lanzadera, Ticker, Piloto TDT
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 66: Veo7, Tienda en Veo, AXN, Intereconomia, Teledeporte, Radio Intereconomia, Radio Marca, esRadio, Vaughan Radio, Canal Ingeniería, GUIDE Plus +, C66Gancho, C66Lanzadera, C66EPG, EpgNet
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 67: Cuatro, CNN+, Canal+ Dos, Canal Club, laSexta, SER, 40 Principales, Cadena Dial, Lanzadera, EPG TDT, Ticker, Lanzadera, Noticias, EPG
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 68: Telecinco, La Siete, FDF, CincoShop, Disney Channel, T5Lanzadera, T5Digitext, Noticias, Tiempo, Bolsa, Tráfico
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 69: Antena 3, Neox, Nova, Gol Televisión, Onda Cero, Europa FM, Onda Melodía, tvtv DIGITAL, A3Lanzadera, A3Portal, A3EPG, A3Ticker, T-seniority, Gol Bar
+diff -r af23d23c278b util/scan/dvb-t/es-Pamplona
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-Pamplona      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,9 @@
++# DVB-T Pamplona
++# T freq bw fec_hi fec_lo mod transm-mode guard-interval hierarchy
++T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/es-SC_Tenerife
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-SC_Tenerife   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# Funciona correctamente en Santa Cruz de Tenerife (25-09-2010)
++# 
++# Revisada y corregida por el Grupo de Usuarios de Linux de Canarias
++# http://www.gulic.org
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 490000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C23
++T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C24
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C26
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C29
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C45
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C56
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C59
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C60
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C66
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C67
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C68
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # C69
+diff -r af23d23c278b util/scan/dvb-t/es-Sevilla
+--- a/util/scan/dvb-t/es-Sevilla       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Sevilla       Tue Dec 21 12:13:28 2010 +0100
+@@ -1,7 +1,22 @@
+-# DVB-T Sevilla (Andalucia)                   by x2 15 Agosto 2006
++# DVB-T Sevilla (Spain) by x2 15-agos-2010, modificado 15-ago-2010
++#                                    thanks to http://www.tdt1.com
++#         thanks to http://wirbel.htpc-forum.de/w_scan/index2.html
+ # T freq bw fec_hi fec_lo mod transm-mode guard-interval hierarchy
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C33
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C36
++T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C38
++T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C41
++T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C44
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C45
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C49
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C52
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C54
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C55
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C56
+ T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C57
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C59
+ T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C61
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C63
+ T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C66
+ T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C67
+ T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE                  # C68
+diff -r af23d23c278b util/scan/dvb-t/es-Vitoria-Gasteiz
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-Vitoria-Gasteiz       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Channel names in use at 2009/07/12, in Channel 66 [fffe] is a scrambled channel.
++# In the generated *channels.conf file could be necesary to change Intereconomía, Radio Intereconomía, ONDA MELODÍA to Intereconomia, Radio Intereconomia, ONDA MELODIA for Totem to work well.
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 58: ETB1, ETB2, ETB3, ETBSAT, Euskadi Irratia, Gaztea, EiTB Irratia, Radio Euskadi, Radio Vitoria
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 63: La 1, La 2, 24h, Clan, RNE1, RNEC, RNE3
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 66: Teledeporte, Canal Ingenieria, VEO7, SONY TV en VEO, Tienda en VEO, GUIDE PLUS+, Intereconomía, Radio Intereconomía, [fffe], RADIO MARCA
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 67: laSexta, CUATRO, CNN+, 40 LATINO, CANAL CLUB, SER, 40 PRINCIPALES, CADENA DIAL
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 68: Telecinco, FDF, LaSiete, Disney Channel, Cincoshop
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE    # Canal 69: ANTENA 3, ANTENA.NEOX, ANTENA.NOVA, ONDA CERO, EUROPA FM, ONDA MELODÍA, HOGAR 10
+diff -r af23d23c278b util/scan/dvb-t/fi-Smedsbole
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/fi-Smedsbole     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,13 @@
++#------------------------------------------------------------------------------
++# file automatically generated by w_scan
++# (http://wirbel.htpc-forum.de/w_scan/index2.html)
++#! <w_scan> 20090808 2 0 OFDM FI </w_scan>
++#------------------------------------------------------------------------------
++# location and provider: Åland Smedsböle/Sund
++# date (yyyy-mm-dd)    : 2009-12-23
++# provided by (opt)    : k.hampf@gmail.com
++#
++# T[2] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
++#------------------------------------------------------------------------------
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # Åland Network
++T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # Åland Network
+diff -r af23d23c278b util/scan/dvb-t/fr-Boulogne
+--- a/util/scan/dvb-t/fr-Boulogne      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Boulogne      Tue Dec 21 12:13:28 2010 +0100
+@@ -1,24 +1,21 @@
+ # Boulogne - France (DVB-T transmitter of Boulogne ( MontLambert ) )
+ # Boulogne - France (signal DVB-T transmis depuis l'émetteur de MontLambert )
+ #
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
++# Si vous constatez des problemes et voulez apporter des
+ # modifications au fichier, envoyez le fichier modifie a
+-# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
++# l'adresse linux-media@vger.kernel.org (depot des fichiers d'init dvb)
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Boulogne - MontLambert ####
++# (Boulogne sur mer)
+ #R1
++T 530000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R2
+ T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R3
+-T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R4
+-T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R5
+ T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R6
+diff -r af23d23c278b util/scan/dvb-t/fr-Brest
+--- a/util/scan/dvb-t/fr-Brest Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Brest Tue Dec 21 12:13:28 2010 +0100
+@@ -2,8 +2,8 @@
+ # Emetteur du Roch Tredudon
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 546000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 482000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 506000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 490000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 530000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 514000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 578000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 586000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 618000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 650000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 770000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Chambery
+--- a/util/scan/dvb-t/fr-Chambery      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Chambery      Tue Dec 21 12:13:28 2010 +0100
+@@ -1,30 +1,24 @@
+-# Chambéry - France (DVB-T transmitter of Chambéry ( Nondéfini ) )
+-# Chambéry - France (signal DVB-T transmis depuis l'émetteur de Nondéfini )
++# Chambery - France (DVB-T transmitter of Chambery )
++# Chambery - France (signal DVB-T transmis depuis l'emetteur de Chambery )
+ #
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
++# Ce fichier a ete ecrit par Yann Soubeyrand (04/2010)
++# Si vous constatez des problemes et voulez apporter des
+ # modifications au fichier, envoyez le fichier modifie a
+ # l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
++# ou au mainteneur du fichier :
+ # Nicolas Estre <n_estre@yahoo.fr>
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#### Chambéry - Nondéfini ####
+-#R1
+-#T FREQ1 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-#T FREQ2 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R3
+-#T FREQ3 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R4
+-#T FREQ4 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
+-#T FREQ5 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-#T FREQ6 8MHz AUTO NONE QAM64 8k AUTO NONE
+-##############################################################
+-# en Avril 2006, l'emetteur pour Chambéry n'etait pas defini
+-#  Vous devez donc modifier les frequences manuellement.
+-# SVP Renvoyez le fichier mis a jour aux contacts ci-dessus.
+-##############################################################
++#### Chambery - Defini par Alex le 23/05/2008 pour l'emetteur des monts
++# R1 canal 62
++T 802167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R2 canal 48
++T 690167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R3 canal 51
++T 714167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R4 canal 54
++T 738167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R5 canal 59
++T 778167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R6 canal 47
++T 682167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Laval
+--- a/util/scan/dvb-t/fr-Laval Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Laval Tue Dec 21 12:13:28 2010 +0100
+@@ -12,14 +12,14 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Laval - MontRochard ####
+ #R1
+-T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R2
+-T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R3
+-T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R4
+-T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R5
+-T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R6
+-T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Lille
+--- a/util/scan/dvb-t/fr-Lille Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,30 +0,0 @@
+-# Lille - France (DVB-T transmitter of Lille ( Nondéfini ) )
+-# Lille - France (signal DVB-T transmis depuis l'émetteur de Nondéfini )
+-#
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
+-# modifications au fichier, envoyez le fichier modifie a
+-# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
+-#
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#### Lille - Nondéfini ####
+-#R1
+-#T FREQ1 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-#T FREQ2 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R3
+-#T FREQ3 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R4
+-#T FREQ4 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
+-#T FREQ5 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-#T FREQ6 8MHz AUTO NONE QAM64 8k AUTO NONE
+-##############################################################
+-# en Avril 2006, l'emetteur pour Lille n'etait pas defini
+-#  Vous devez donc modifier les frequences manuellement.
+-# SVP Renvoyez le fichier mis a jour aux contacts ci-dessus.
+-##############################################################
+diff -r af23d23c278b util/scan/dvb-t/fr-Lille-Bouvigny
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/fr-Lille-Bouvigny        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,26 @@
++# Lille - France (DVB-T transmitter of Lille ( Bouvigny ) )
++# Lille - France (signal DVB-T transmis depuis l'emetteur de Bouvigny )
++#
++# Fichier construit par Romain Bajeux (05/2010)
++# Si vous constatez des problemes et voulez apporter des
++# modifications au fichier, envoyez le fichier modifie a
++# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
++# ou au mainteneur du fichier :
++# Nicolas Estre <n_estre@yahoo.fr>
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#### Lille - Bouvigny ####
++#R1
++T 490167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R2
++T 690167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R3
++T 514167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R4
++T 546167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R5
++T 554167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R6
++T 586167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#Belge
++T 754167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-LilleT2
+--- a/util/scan/dvb-t/fr-LilleT2       Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,13 +0,0 @@
+-# Lille - France (DVB-T transmitter of Lambersart)
+-#offset of 167000 for Cinergy T2. Other type of card users need to replace 167 by 000
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#R2
+-T 538167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R4
+-T 546167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R3
+-T 562167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R6
+-T 586167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R1
+-T 594167000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Montbeliard
+--- a/util/scan/dvb-t/fr-Montbeliard   Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Montbeliard   Tue Dec 21 12:13:28 2010 +0100
+@@ -1,18 +1,18 @@
+-# Montbéliard - France (DVB-T transmitter of Montbéliard "Fort Lachaux" )
+-# Montbéliard - France (signal DVB-T transmis depuis l'émetteur de Fort Lachaux )
++# Montbéliard - France (DVB-T transmitter of Montbéliard "Fort Lachaux", since 16 nov. 2010)
++# Montbéliard - France (signal DVB-T transmis depuis l'émetteur de Fort Lachaux, à compter du 16/11/2010)
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# multiplex R1 (GR1), canal 29V + offset 167000 : FRANCE 2 SD , FRANCE 5 , ARTE SD , La Chaîne Parlementaire/Public Sénat , FRANCE 3 , FRANCE 3 Franche-Comté
++# multiplex R4 (MULTI4), canal 58V + offset 167000 : ARTE HD , PARIS PREMIERE, M6 SD , W9 et NT1
++T 490167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# multiplex R6 (SMR6), canal 26V + offset 167000 : TF1 SD , NRJ 12 , EUROSPORT, LCI, TMC et TF6
++T 514167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# multiplex R5 (MR5), canal 29 : TF1 HD , France 2 HD et M6HD
+ T 538167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R3 (CNH), canal 43V + offset 167000 : CANAL+ , CANAL+HD , CANAL+ CINEMA , CANAL+ SPORT , PLANETE , CANAL J et TPS STAR
+-T 650167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R2 (NTN), canal 55V + offset 167000 : DIRECT 8 , BFM TV , I>TELE , FRANCE 4 , VIRGIN 17 , GULLI et France 4
+-T 746167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R6 (SMR6), canal 32V + offset 167000 : TF1 SD , NRJ 12 , TMC , EUROSPORT , LCI et TF6
+-T 562167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# Télévision Suisse, canal 56V + offset 000000 : TSR1 , TSR2 , TSI1 et SF 1
++# multiplex R2 (NTN), canal 55V + offset 167000 : Direct 8 , BFM TV , i>TELE , DirectStar , Gulli et France 4
++T 658167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# multiplex R3 (CNH), canal 54V + offset 167000 : CANAL+ , CANAL+ CINEMA , CANAL+ SPORT , PLANETE et TPS STAR
++T 738167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# Télévision Suisse, canal 56V + offset 000000 : SF1, TSR1 , TSR2 et RSI LA 1
+ T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R4 (MULTI4), canal 58V + offset 167000 : ARTE HD , PARIS PREMIERE, M6 SD , W9 , NT1
+-T 770167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R5 (???), canal ??? : TF1 HD , FRANCE 2 HD, M6 HD
+-# canal d'émission pas encore défini (février 2009)
++# multiplex R1 (GR1), canal 60V + offset 167000 : France 2 SD , France 5 , France Ô , LCP et France 3
++T 786167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Nantes
+--- a/util/scan/dvb-t/fr-Nantes        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Nantes        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,8 +1,9 @@
+ # Nantes - France
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 754000000 8MHz AUTO NONE QAM16 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Poitiers
+--- a/util/scan/dvb-t/fr-Poitiers      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Poitiers      Tue Dec 21 12:13:28 2010 +0100
+@@ -12,14 +12,12 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Poitiers - Agglomération ####
+ #R1
+-T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 506000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R2
+-T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R3
+-T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R4
+-T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
++T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R6 (no R5)
+ T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Reims
+--- a/util/scan/dvb-t/fr-Reims Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Reims Tue Dec 21 12:13:28 2010 +0100
+@@ -1,25 +1,21 @@
+ # Reims - France (DVB-T transmitter of Reims ( Hautvillers ) )
+ # Reims - France (signal DVB-T transmis depuis l'émetteur de Hautvillers )
+ #
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
++# Si vous constatez des problemes et voulez apporter des
+ # modifications au fichier, envoyez le fichier modifie a
+ # l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Reims - Hautvillers ####
+ #R1
+-T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R2
+-T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R3
+-T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R4
+-T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R5
+-T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R6
+-T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Rochefort-sur-mer
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/fr-Rochefort-sur-mer     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,14 @@
++# TNT à Rochefort (17)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++#multiplex 6 ( TF1 LCI Eurosport TF6 NRJ12 TMC )
++T 498166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++
++#multiplex 4 ( M6 W9 NT1 Paris Première ARTE HD )
++T 738166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++
++#multiplex 1 ( France 2 France 3 France 5 ARTE LCP Chaîne locale ou France Ô )
++T 602166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++
++#multiplex 2 ( Direct 8 France 4 BFM TV Virgin 17 Gulli i>Télé  )
++T 778167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Tours
+--- a/util/scan/dvb-t/fr-Tours Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Tours Tue Dec 21 12:13:28 2010 +0100
+@@ -1,25 +1,11 @@
+-# Tours - France (DVB-T transmitter of Tours ( Chissay ) )
+-# Tours - France (signal DVB-T transmis depuis l'émetteur de Chissay )
+-#
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
+-# modifications au fichier, envoyez le fichier modifie a
+-# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
++# Tours (Chissay) - France
++# Initial DVB-T tuning as of 19 october 2010
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#### Tours - Chissay ####
+-#R1
+-T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R3
+-T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R4
+-T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
+-T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 498000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 578000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 602000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 610000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 690000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 714000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++
+diff -r af23d23c278b util/scan/dvb-t/gr-Athens
+--- a/util/scan/dvb-t/gr-Athens        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/gr-Athens        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,3 +1,5 @@
+ # Initial scan config for Digital DVB-T (Ert) in Athens Greece
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 674000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE     # Digea DVB-T
++T 682000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE     # Digea DVB-T
+ T 690000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hr-All
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hr-All   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,30 @@
++# Croatia, whole country
++# Created from http://www.oiv.hr/broadcasting/tables/dtv_hr.aspx
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 474000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D1 MUXD
++T 490000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D2 MUXA
++T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D4 MUXA
++T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D5 MUXA, D9 MUXD
++T 538000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D5 MUXD
++T 546000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D6 MUXA
++T 554000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D7 MUXD
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D1 MUXC
++T 570000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D8 MUXA
++T 578000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D8 MUXD
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D5 MUXC
++T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D3 MUXD
++T 610000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D1 MUXA
++T 618000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D2 MUXB
++T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D4 MUXD
++T 658000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D1 MUXB, D3 MUXA
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # SLO MUXA
++T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D8 MUXC
++T 674000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D8 MUXD
++T 690000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D3 MUXB, D4 MUXB
++T 714000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D7 MUXA, D9 MUXA
++T 730000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D5 MUXB, D8 MUXB
++T 738000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D6 MUXB
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D4 MUXC
++T 762000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # Tusti Vrh MUXD
++T 770000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D2 MUXD
++T 778000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D7 MUXB, D9 MUXB
+diff -r af23d23c278b util/scan/dvb-t/hr-Zagreb
+--- a/util/scan/dvb-t/hr-Zagreb        Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null  Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# DVB-T Hamburg
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 522000000 8MHz 3/4 NONE AUTO 8k 1/32 NONE     # CH27:
+diff -r af23d23c278b util/scan/dvb-t/hu-Budapest
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Budapest      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Budapest
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-55:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 746000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-62:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 802000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Debrecen
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Debrecen      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Debrecen
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-46:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 714000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-62:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 802000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Gyor
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Gyor  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Gyor
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-42:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 642000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-61:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 794000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Kabhegy
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Kabhegy       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Kabhegy
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# C.multiplex UHF-61:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 794000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# A2.multiplex UHF-64:
++# MTV-1 HD Sopron, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 818000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Kekes
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Kekes Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Kekes
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-44:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 658000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-69:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 858000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Kiskoros
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Kiskoros      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Kiskoros
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-45:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 666000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-68:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Nagykanizsa-Ujudvar
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Nagykanizsa-Ujudvar   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Nagykanizsa / Ujudvar
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-24:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 498000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-65:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Pecs
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Pecs  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Pecs
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-52:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 722000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-67:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 842000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Szeged
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Szeged        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Szeged
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-60:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-65:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Szentes
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Szentes       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Szentes
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A3.multiplex UHF-60:
++# MTV-1 HD Szeged, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-65:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Tokaj
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Tokaj Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Tokaj
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-68:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-63:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 810000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Uzd
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Uzd   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Uzd
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-52:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 722000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-67:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 842000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Vasvar-Hegyhatsal
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Vasvar-Hegyhatsal     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Vasvar / Hegyhatsal
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-58:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 770000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-68:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/il-All
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/il-All   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Israel, Israel Broadcasting Authority's transmitters
++# Generated from list in http://www.iba.org.il/reception/
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE
++T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/ir-Tehran
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/ir-Tehran        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,4 @@
++# DVB-T Tehran
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # IRIB-TV1/2/3/4/5, IRINN, AMOUZESH, QURAN-TV
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # PRESS TV, AL-ALAM, AL-KOUSAR, JAAMEJAM 1, IRIB MOSTANAD, IRIB OSTANI
+diff -r af23d23c278b util/scan/dvb-t/is-Reykjavik
+--- a/util/scan/dvb-t/is-Reykjavik     Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/is-Reykjavik     Tue Dec 21 12:13:28 2010 +0100
+@@ -1,13 +1,29 @@
+-# Initial scan config for Digital Ísland in Iceland
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++#------------------------------------------------------------------------------
++# file automatically generated by w_scan
++# (http://wirbel.htpc-forum.de/w_scan/index2.html)
++#! <w_scan> 20100316 1 0 OFDM IS </w_scan>
++#------------------------------------------------------------------------------
++# location and provider: <add description here>
++# date (yyyy-mm-dd)    : 2010-10-22
++# provided by (opt)    : <your name or email here>
++#
++# T[2] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
++#------------------------------------------------------------------------------
++T 522000000 8MHz  2/3 NONE    QAM64   8k 1/16 NONE
++T 530000000 8MHz  2/3 NONE    QAM64   8k 1/16 NONE    # Vodafone
++T 538000000 8MHz  2/3 NONE    QAM64   8k 1/16 NONE
++T 674000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 770000000 8MHz  1/2 NONE    QAM64   2k 1/32 NONE    # Vodafone
++T 690000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 722000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 738000000 8MHz  1/2 NONE     QPSK   2k 1/32 NONE    # Vodafone
++T 754000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 762000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 778000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 818000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 714000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 682000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 698000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 706000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 794000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
++T 802000000 8MHz  2/3 NONE    QAM64   8k 1/32 NONE    # Vodafone
+diff -r af23d23c278b util/scan/dvb-t/it-Milano
+--- a/util/scan/dvb-t/it-Milano        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/it-Milano        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,15 +1,49 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ # MUX-A RAI
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 800000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX-B RAI
+ T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX-A MEDIASET
+ T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX-A MEDIASET-2
+ T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MEDIASET LA 5 
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX La7/MTV
+-T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX DFREE
+ T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX DFREE 2
+ T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX RETE A
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX STUDIO1
++T 184500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX STUDIO NORD
++T 191500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX VIDEO STAR NOVARA
++T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX TELENOVA
++T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX TELE 7 LAGHI 
++T 495250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX VIDEO BERGAMO
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX TELE MILANO
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# RETE 55
++T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELE LIBERTA'
++T 735250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# RSI
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELE COLOR PRIMARETE
++T 783250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELESTAR
++T 807250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELECAMPIONE
++T 847250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/it-Montevergine
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/it-Montevergine  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# DVB-T Montevergine (Avellino) 83100
++# 12/12/2009 by Antonio Galasso anto1714@libero.it
++# (ricordati di mettere il lettore in posizione stop orima di iniziare la scansione dei canali)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# C-MUX
++T 177500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/lt-All
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/lt-All   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,39 @@
++# Lithuania, whole country
++# Created from http://www.skaitmenine.lt/lt/skaitmenine_tv_lietuvoje/antzemine_dvb_t.html
++# Created by baruse@gmail.com
++
++# LRTC I tinklas
++T 482000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 22
++T 514000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 26
++T 618000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 39
++T 658000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 44
++T 682000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 47
++T 762000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 57
++T 770000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 58
++T 786000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 60
++T 794000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 61
++
++# LRTC II tinklas
++T 570000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 33
++T 610000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 38
++T 690000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 48
++T 738000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 54
++T 802000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 62
++T 810000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 63
++T 818000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 64
++
++# TEO LT I tinklas
++T 594000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 36
++T 706000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 50
++T 778000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 59
++T 826000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 65
++
++# TEO LT II tinklas
++T 474000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 21
++T 546000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 30
++T 730000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 53
++#T 786000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 60
++
++# Vilniui bonusas
++T 602000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 37
++#T 730000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 53
+diff -r af23d23c278b util/scan/dvb-t/ro-Bucharest
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/ro-Bucharest     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Romania / Bucharest
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/16 NONE
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE # SRTV
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE # SNR DVB-T
+diff -r af23d23c278b util/scan/dvb-t/se-Horby_Sallerup
+--- a/util/scan/dvb-t/se-Horby_Sallerup        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/se-Horby_Sallerup        Tue Dec 21 12:13:28 2010 +0100
+@@ -2,6 +2,8 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
++T 570000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 634000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
++T 650000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 818000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 794000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/se-Ornskoldsvik_As
+--- a/util/scan/dvb-t/se-Ornskoldsvik_As       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/se-Ornskoldsvik_As       Tue Dec 21 12:13:28 2010 +0100
+@@ -4,3 +4,4 @@
+ T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/se-Skelleftea
+--- a/util/scan/dvb-t/se-Skelleftea    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/se-Skelleftea    Tue Dec 21 12:13:28 2010 +0100
+@@ -4,3 +4,4 @@
+ T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/si-Ljubljana
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/si-Ljubljana     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Slovenia / Ljubljana
++# MULTIPLEX A
++#------------------------------------------
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-BanskaBystrica
+--- a/util/scan/dvb-t/sk-BanskaBystrica        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/sk-BanskaBystrica        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,4 +1,11 @@
+ # DVB-T Banska Bystrica (Banska Bystrica, Slovak Republic)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 1.st multiplex - on channel 65
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 51
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 33
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Bardejov
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Bardejov      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Bardejov (Bardejov, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 62
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 40
++T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 54
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Bratislava
+--- a/util/scan/dvb-t/sk-Bratislava    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/sk-Bratislava    Tue Dec 21 12:13:28 2010 +0100
+@@ -1,4 +1,11 @@
+ # DVB-T Bratislava (Bratislava, Slovak Republic)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 1.st multiplex - on channel 66
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 56
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 27
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Kosice
+--- a/util/scan/dvb-t/sk-Kosice        Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/sk-Kosice        Tue Dec 21 12:13:28 2010 +0100
+@@ -1,4 +1,11 @@
+ # DVB-T Kosice (Kosice, Slovak Republic)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 1.st multiplex - on channel 64
++T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 59
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 25
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Michalovce
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Michalovce    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Michalovce (Michalovce, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 64
++T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 59
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 25
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Namestovo
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Namestovo     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Namestovo (Namestovo, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 68
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 59
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 26
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Poprad
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Poprad        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Poprad (Poprad, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 66
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 55
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 24
++T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-RimavskaSobota
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-RimavskaSobota        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Rimavska Sobota (Rimavska Sobota, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 61
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 27
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 54
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Trencin
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Trencin       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# DVB-T Trencin (Trencin, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 69
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 52/56
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 57
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-VelkyKrtis
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-VelkyKrtis    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Velky Krtis (Velky Krtis, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 65
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 60
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 33
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Zilina
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Zilina        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Zilina (Zilina, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 68
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 52
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 32
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/uk-Aberdare
+--- a/util/scan/dvb-t/uk-Aberdare      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-Aberdare      Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,14 @@
+ # Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+ # and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 562167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 489833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 513833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 538167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++
++T 474167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 497833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 506167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 521833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 530167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++
++
++#C21+ C22+    C24-    C25+    C27-    C28+
++
+diff -r af23d23c278b util/scan/dvb-t/uk-Redruth
+--- a/util/scan/dvb-t/uk-Redruth       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-Redruth       Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,12 @@
+ # Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+ # and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 642167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 666167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 697833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 474167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 497833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 506167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 521833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 634167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ T 650167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 705833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 658167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/uk-StocklandHill
+--- a/util/scan/dvb-t/uk-StocklandHill Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-StocklandHill Tue Dec 21 12:13:28 2010 +0100
+@@ -1,10 +1,9 @@
+ # UK, Stockland Hill
+-# Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+-# and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
++# http://www.ukfree.tv/txdetail.php?a=ST222014
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 481833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 529833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 505833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 561833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 546167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 514167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE     # PSB1
++T 490167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE     # PSB2
++#T 538167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE     # PSB3 (DVB-T2)
++T 505833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE     # COM4
++T 481833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE     # COM5
++T 529833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE     # COM6
+diff -r af23d23c278b util/scan/dvb-t/uk-Storeton
+--- a/util/scan/dvb-t/uk-Storeton      Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-Storeton      Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,12 @@
+ # Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+ # and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 546167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 578167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 490167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 514167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 538167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/uk-WinterHill
+--- a/util/scan/dvb-t/uk-WinterHill    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-WinterHill    Tue Dec 21 12:13:28 2010 +0100
+@@ -1,13 +1,9 @@
+ # UK, Winter Hill
+-# Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+-# and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
++# Populated by J. Hornsby from a scan of active multiplexes
++# UK, Winter Hill B Ceased broadcasting on 02 December 2009
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 754167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 834167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 850167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 842167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 786167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 810167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-# UK, Winter Hill B
+-T 650000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 626000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 801833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/vn-Thaibinh
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/vn-Thaibinh      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Thaibinh - Vietnam - DVB-T by VTC
++# contributed by Pham Thanh Nam <phamthanhnam.ptn@gmail.com>
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 626000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE
++T 634000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE
+diff -r af23d23c278b util/scan/scan.c
+--- a/util/scan/scan.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/scan.c Tue Dec 21 12:13:28 2010 +0100
+@@ -236,6 +236,17 @@
+ static void copy_transponder(struct transponder *d, struct transponder *s)
+ {
++      struct list_head *pos;
++      struct service *service;
++
++      if (d->transport_stream_id != s->transport_stream_id) {
++              /* propagate change to any already allocated services */
++              list_for_each(pos, &d->services) {
++                      service = list_entry(pos, struct service, list);
++                      service->transport_stream_id = s->transport_stream_id;
++              }
++      }
++
+       d->network_id = s->network_id;
+       d->original_network_id = s->original_network_id;
+       d->transport_stream_id = s->transport_stream_id;
+diff -r af23d23c278b util/szap/Makefile
+--- a/util/szap/Makefile       Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/Makefile       Tue Dec 21 12:13:28 2010 +0100
+@@ -1,6 +1,6 @@
+ # Makefile for linuxtv.org dvb-apps/util/szap
+-objects  = lnb.o
++objects  = lnb.o util.o
+ binaries = azap  \
+            czap  \
+diff -r af23d23c278b util/szap/azap.c
+--- a/util/szap/azap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/azap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -13,6 +13,8 @@
+ #include <linux/dvb/frontend.h>
+ #include <linux/dvb/dmx.h>
++#include "util.h"
++
+ static char FRONTEND_DEV [80];
+ static char DEMUX_DEV [80];
+@@ -209,31 +211,6 @@
+ static
+-int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr)
+-{
+-        struct dmx_pes_filter_params pesfilter;
+-
+-        if (pid <= 0 || pid >= 0x1fff)
+-                return 0;
+-
+-        pesfilter.pid = pid;
+-        pesfilter.input = DMX_IN_FRONTEND;
+-        pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+-        pesfilter.pes_type = type;
+-        pesfilter.flags = DMX_IMMEDIATE_START;
+-
+-        if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) {
+-                PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed",
+-                        type == DMX_PES_AUDIO ? "Audio" :
+-                        type == DMX_PES_VIDEO ? "Video" : "??");
+-                return -1;
+-        }
+-
+-        return 0;
+-}
+-
+-
+-static
+ int setup_frontend (int fe_fd, struct dvb_frontend_parameters *frontend)
+ {
+       struct dvb_frontend_info fe_info;
+diff -r af23d23c278b util/szap/czap.c
+--- a/util/szap/czap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/czap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -13,6 +13,8 @@
+ #include <linux/dvb/frontend.h>
+ #include <linux/dvb/dmx.h>
++#include "util.h"
++
+ static char FRONTEND_DEV [80];
+ static char DEMUX_DEV [80];
+@@ -118,7 +120,7 @@
+ int parse(const char *fname, int list_channels, int chan_no, const char *channel,
+-        struct dvb_frontend_parameters *frontend, int *vpid, int *apid)
++        struct dvb_frontend_parameters *frontend, int *vpid, int *apid, int *sid)
+ {
+       FILE *f;
+       char *chan;
+@@ -141,10 +143,10 @@
+       }
+       printf("%3d %s", chan_no, chan);
+-      if ((sscanf(chan, "%a[^:]:%d:%a[^:]:%d:%a[^:]:%a[^:]:%d:%d\n",
++      if ((sscanf(chan, "%m[^:]:%d:%m[^:]:%d:%m[^:]:%m[^:]:%d:%d:%d\n",
+                               &name, &frontend->frequency,
+                               &inv, &frontend->u.qam.symbol_rate,
+-                              &fec, &mod, vpid, apid) != 8)
++                              &fec, &mod, vpid, apid, sid) != 9)
+                       || !name || !inv || !fec | !mod) {
+               ERROR("cannot parse service data");
+               return -3;
+@@ -165,10 +167,10 @@
+               ERROR("modulation field syntax '%s'", mod);
+               return -6;
+       }
+-      printf("%3d %s: f %d, s %d, i %d, fec %d, qam %d, v %#x, a %#x\n",
++      printf("%3d %s: f %d, s %d, i %d, fec %d, qam %d, v %#x, a %#x, s %#x \n",
+                       chan_no, name, frontend->frequency, frontend->u.qam.symbol_rate,
+                       frontend->inversion, frontend->u.qam.fec_inner,
+-                      frontend->u.qam.modulation, *vpid, *apid);
++                      frontend->u.qam.modulation, *vpid, *apid, *sid);
+       free(name);
+       free(inv);
+       free(fec);
+@@ -178,31 +180,6 @@
+ }
+-
+-static
+-int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr)
+-{
+-      struct dmx_pes_filter_params pesfilter;
+-
+-      if (pid <= 0 || pid >= 0x1fff)
+-              return 0;
+-
+-      pesfilter.pid = pid;
+-      pesfilter.input = DMX_IN_FRONTEND;
+-      pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+-      pesfilter.pes_type = type;
+-      pesfilter.flags = DMX_IMMEDIATE_START;
+-
+-      if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) {
+-              PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed",
+-                      type == DMX_PES_AUDIO ? "Audio" :
+-                      type == DMX_PES_VIDEO ? "Video" : "??");
+-              return -1;
+-      }
+-
+-      return 0;
+-}
+-
+ static
+ int setup_frontend(int fe_fd, struct dvb_frontend_parameters *frontend)
+ {
+@@ -264,9 +241,20 @@
+ }
+-static const char *usage = "\nusage: %s [-a adapter_num] [-f frontend_id] [-d demux_id] [-c conf_file] [ -H ] {<channel name>| -n channel_num} [-x]\n"
+-      "   or: %s [-c conf_file]  -l\n\n";
+-
++static const char *usage =
++    "\nusage: %s [options]  -l\n"
++    "         list known channels\n"
++    "       %s [options] {-n channel-number|channel_name}\n"
++    "         zap to channel via number or full name (case insensitive)\n"
++    "     -a number : use given adapter (default 0)\n"
++    "     -f number : use given frontend (default 0)\n"
++    "     -d number : use given demux (default 0)\n"
++    "     -c file   : read channels list from 'file'\n"
++    "     -x        : exit after tuning\n"
++    "     -H        : human readable output\n"
++    "     -r        : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
++    "     -p        : add pat and pmt to TS recording (implies -r)\n"
++;
+ int main(int argc, char **argv)
+ {
+@@ -275,12 +263,12 @@
+       char *confname = NULL;
+       char *channel = NULL;
+       int adapter = 0, frontend = 0, demux = 0, dvr = 0;
+-      int vpid, apid;
+-      int frontend_fd, video_fd, audio_fd;
++      int vpid, apid, sid, pmtpid = 0;
++      int frontend_fd, video_fd, audio_fd, pat_fd, pmt_fd;
+       int opt, list_channels = 0, chan_no = 0;
+-      int human_readable = 0;
++      int human_readable = 0, rec_psi = 0;
+-      while ((opt = getopt(argc, argv, "Hln:hrn:a:f:d:c:x")) != -1) {
++      while ((opt = getopt(argc, argv, "Hln:hrn:a:f:d:c:x:p")) != -1) {
+               switch (opt) {
+               case 'a':
+                       adapter = strtoul(optarg, NULL, 0);
+@@ -300,6 +288,9 @@
+               case 'n':
+                       chan_no = strtoul(optarg, NULL, 0);
+                       break;
++              case 'p':
++                      rec_psi = 1;
++                      break;
+               case 'x':
+                       exit_after_tuning = 1;
+                       break;
+@@ -352,7 +343,7 @@
+       memset(&frontend_param, 0, sizeof(struct dvb_frontend_parameters));
+-      if (parse(confname, list_channels, chan_no, channel, &frontend_param, &vpid, &apid))
++      if (parse(confname, list_channels, chan_no, channel, &frontend_param, &vpid, &apid, &sid))
+               return -1;
+       if (list_channels)
+               return 0;
+@@ -365,6 +356,28 @@
+       if (setup_frontend(frontend_fd, &frontend_param) < 0)
+               return -1;
++      if (rec_psi) {
++              pmtpid = get_pmt_pid(DEMUX_DEV, sid);
++              if (pmtpid <= 0) {
++                      fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
++                      return -1;
++              }
++
++              if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++                      perror("opening pat demux failed");
++                      return -1;
++              }
++              if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
++                      return -1;
++
++              if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++                      perror("opening pmt demux failed");
++                      return -1;
++              }
++              if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
++                      return -1;
++      }
++
+       if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+               PERROR("failed opening '%s'", DEMUX_DEV);
+               return -1;
+@@ -383,6 +396,8 @@
+       check_frontend (frontend_fd, human_readable);
++      close (pat_fd);
++      close (pmt_fd);
+       close (audio_fd);
+       close (video_fd);
+       close (frontend_fd);
+diff -r af23d23c278b util/szap/szap.c
+--- a/util/szap/szap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/szap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -48,6 +48,7 @@
+ #include <linux/dvb/dmx.h>
+ #include <linux/dvb/audio.h>
+ #include "lnb.h"
++#include "util.h"
+ #ifndef TRUE
+ #define TRUE (1==1)
+@@ -92,94 +93,6 @@
+     "     -p        : add pat and pmt to TS recording (implies -r)\n"
+     "                 or -n numbers for zapping\n";
+-static int set_demux(int dmxfd, int pid, int pes_type, int dvr)
+-{
+-   struct dmx_pes_filter_params pesfilter;
+-
+-   if (pid < 0 || pid >= 0x1fff) /* ignore this pid to allow radio services */
+-         return TRUE;
+-
+-   if (dvr) {
+-      int buffersize = 64 * 1024;
+-      if (ioctl(dmxfd, DMX_SET_BUFFER_SIZE, buffersize) == -1)
+-        perror("DMX_SET_BUFFER_SIZE failed");
+-   }
+-
+-   pesfilter.pid = pid;
+-   pesfilter.input = DMX_IN_FRONTEND;
+-   pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+-   pesfilter.pes_type = pes_type;
+-   pesfilter.flags = DMX_IMMEDIATE_START;
+-
+-   if (ioctl(dmxfd, DMX_SET_PES_FILTER, &pesfilter) == -1) {
+-      fprintf(stderr, "DMX_SET_PES_FILTER failed "
+-            "(PID = 0x%04x): %d %m\n", pid, errno);
+-      return FALSE;
+-   }
+-
+-   return TRUE;
+-}
+-
+-int get_pmt_pid(char *dmxdev, int sid)
+-{
+-   int patfd, count;
+-   int pmt_pid = 0;
+-   int patread = 0;
+-   int section_length;
+-   unsigned char buft[4096];
+-   unsigned char *buf = buft;
+-   struct dmx_sct_filter_params f;
+-
+-   memset(&f, 0, sizeof(f));
+-   f.pid = 0;
+-   f.filter.filter[0] = 0x00;
+-   f.filter.mask[0] = 0xff;
+-   f.timeout = 0;
+-   f.flags = DMX_IMMEDIATE_START | DMX_CHECK_CRC;
+-
+-   if ((patfd = open(dmxdev, O_RDWR)) < 0) {
+-      perror("openening pat demux failed");
+-      return -1;
+-   }
+-
+-   if (ioctl(patfd, DMX_SET_FILTER, &f) == -1) {
+-      perror("ioctl DMX_SET_FILTER failed");
+-      close(patfd);
+-      return -1;
+-   }
+-
+-   while (!patread){
+-      if (((count = read(patfd, buf, sizeof(buft))) < 0) && errno == EOVERFLOW)
+-         count = read(patfd, buf, sizeof(buft));
+-      if (count < 0) {
+-         perror("read_sections: read error");
+-         close(patfd);
+-         return -1;
+-      }
+-
+-      section_length = ((buf[1] & 0x0f) << 8) | buf[2];
+-      if (count != section_length + 3)
+-         continue;
+-
+-      buf += 8;
+-      section_length -= 8;
+-
+-      patread = 1; /* assumes one section contains the whole pat */
+-      while (section_length > 0) {
+-         int service_id = (buf[0] << 8) | buf[1];
+-         if (service_id == sid) {
+-            pmt_pid = ((buf[2] & 0x1f) << 8) | buf[3];
+-            section_length = 0;
+-         }
+-         buf += 4;
+-         section_length -= 4;
+-     }
+-   }
+-
+-   close(patfd);
+-   return pmt_pid;
+-}
+-
+ struct diseqc_cmd {
+    struct dvb_diseqc_master_cmd cmd;
+    uint32_t wait;
+@@ -390,10 +303,10 @@
+    if (diseqc(fefd, sat_no, pol, hiband))
+       if (do_tune(fefd, ifreq, sr))
+-       if (set_demux(dmxfdv, vpid, DMX_PES_VIDEO, dvr))
++       if (set_pesfilter(dmxfdv, vpid, DMX_PES_VIDEO, dvr))
+           if (audiofd >= 0)
+              (void)ioctl(audiofd, AUDIO_SET_BYPASS_MODE, bypass);
+-          if (set_demux(dmxfda, apid, DMX_PES_AUDIO, dvr)) {
++          if (set_pesfilter(dmxfda, apid, DMX_PES_AUDIO, dvr)) {
+              if (rec_psi) {
+                 pmtpid = get_pmt_pid(dmxdev, sid);
+                 if (pmtpid < 0) {
+@@ -403,8 +316,8 @@
+                    fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
+                    result = FALSE;
+                 }
+-                if (set_demux(patfd, 0, DMX_PES_OTHER, dvr))
+-                   if (set_demux(pmtfd, pmtpid, DMX_PES_OTHER, dvr))
++                if (set_pesfilter(patfd, 0, DMX_PES_OTHER, dvr))
++                   if (set_pesfilter(pmtfd, pmtpid, DMX_PES_OTHER, dvr))
+                       result = TRUE;
+                 } else {
+                   result = TRUE;
+diff -r af23d23c278b util/szap/tzap.c
+--- a/util/szap/tzap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/tzap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -35,6 +35,8 @@
+ #include <linux/dvb/frontend.h>
+ #include <linux/dvb/dmx.h>
++#include "util.h"
++
+ static char FRONTEND_DEV [80];
+ static char DEMUX_DEV [80];
+ static char DVR_DEV [80];
+@@ -269,7 +271,8 @@
+ int parse(const char *fname, const char *channel,
+-        struct dvb_frontend_parameters *frontend, int *vpid, int *apid)
++        struct dvb_frontend_parameters *frontend, int *vpid, int *apid,
++        int *sid)
+ {
+       int fd;
+       int err;
+@@ -343,7 +346,11 @@
+       if ((err = try_parse_int(fd, apid, "Audio PID")))
+               return -13;
+-
++      
++      if ((err = try_parse_int(fd, sid, "Service ID")))
++          return -14;
++      
++      
+       close(fd);
+       return 0;
+@@ -351,31 +358,6 @@
+ static
+-int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr)
+-{
+-        struct dmx_pes_filter_params pesfilter;
+-
+-        if (pid <= 0 || pid >= 0x1fff)
+-                return 0;
+-
+-        pesfilter.pid = pid;
+-        pesfilter.input = DMX_IN_FRONTEND;
+-        pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+-        pesfilter.pes_type = type;
+-        pesfilter.flags = DMX_IMMEDIATE_START;
+-
+-        if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) {
+-                PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed",
+-                        type == DMX_PES_AUDIO ? "Audio" :
+-                        type == DMX_PES_VIDEO ? "Video" : "??");
+-                return -1;
+-        }
+-
+-        return 0;
+-}
+-
+-
+-static
+ int setup_frontend (int fe_fd, struct dvb_frontend_parameters *frontend)
+ {
+       struct dvb_frontend_info fe_info;
+@@ -503,6 +485,7 @@
+     "     -c file   : read channels list from 'file'\n"
+     "     -x        : exit after tuning\n"
+     "     -r        : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
++    "     -p        : add pat and pmt to TS recording (implies -r)\n"
+     "     -s        : only print summary\n"
+     "     -S        : run silently (no output)\n"
+     "     -H        : human readable output\n"
+@@ -519,15 +502,16 @@
+       char *confname = NULL;
+       char *channel = NULL;
+       int adapter = 0, frontend = 0, demux = 0, dvr = 0;
+-      int vpid, apid;
++      int vpid, apid, sid, pmtpid = 0;
++      int pat_fd, pmt_fd;
+       int frontend_fd, audio_fd = 0, video_fd = 0, dvr_fd, file_fd;
+       int opt;
+       int record = 0;
+       int frontend_only = 0;
+       char *filename = NULL;
+-      int human_readable = 0;
++      int human_readable = 0, rec_psi = 0;
+-      while ((opt = getopt(argc, argv, "H?hrxRsFSn:a:f:d:c:t:o:")) != -1) {
++      while ((opt = getopt(argc, argv, "H?hrpxRsFSn:a:f:d:c:t:o:")) != -1) {
+               switch (opt) {
+               case 'a':
+                       adapter = strtoul(optarg, NULL, 0);
+@@ -548,6 +532,9 @@
+               case 'r':
+                       dvr = 1;
+                       break;
++              case 'p':
++                      rec_psi = 1;
++                      break;
+               case 'x':
+                       exit_after_tuning = 1;
+                       break;
+@@ -610,7 +597,7 @@
+       memset(&frontend_param, 0, sizeof(struct dvb_frontend_parameters));
+-      if (parse (confname, channel, &frontend_param, &vpid, &apid))
++      if (parse (confname, channel, &frontend_param, &vpid, &apid, &sid))
+               return -1;
+       if ((frontend_fd = open(FRONTEND_DEV, O_RDWR)) < 0) {
+@@ -624,6 +611,28 @@
+       if (frontend_only)
+               goto just_the_frontend_dude;
++      if (rec_psi) {
++          pmtpid = get_pmt_pid(DEMUX_DEV, sid);
++          if (pmtpid <= 0) {
++              fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
++              return -1;
++          }
++
++          if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++              perror("opening pat demux failed");
++              return -1;
++          }
++          if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
++              return -1;
++
++          if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++              perror("opening pmt demux failed");
++              return -1;
++          }
++          if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
++              return -1;
++      }
++
+         if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+                 PERROR("failed opening '%s'", DEMUX_DEV);
+                 return -1;
+@@ -689,6 +698,8 @@
+               check_frontend (frontend_fd, human_readable);
+       }
++      close (pat_fd);
++      close (pmt_fd);
+       close (audio_fd);
+       close (video_fd);
+       close (frontend_fd);
+diff -r af23d23c278b util/szap/util.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/szap/util.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,126 @@
++/*
++ * util functions for various ?zap implementations
++ *
++ * Copyright (C) 2001 Johannes Stezenbach (js@convergence.de)
++ * for convergence integrated media
++ *
++ * 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 <string.h>
++#include <unistd.h>
++#include <stdio.h>
++#include <errno.h>
++
++#include <sys/ioctl.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++
++#include <linux/dvb/frontend.h>
++#include <linux/dvb/dmx.h>
++
++
++int set_pesfilter(int dmxfd, int pid, int pes_type, int dvr)
++{
++    struct dmx_pes_filter_params pesfilter;
++
++    /* ignore this pid to allow radio services */
++    if (pid < 0 ||
++      pid >= 0x1fff ||
++      (pid == 0 && pes_type != DMX_PES_OTHER))
++      return 0;
++
++    if (dvr) {
++      int buffersize = 64 * 1024;
++      if (ioctl(dmxfd, DMX_SET_BUFFER_SIZE, buffersize) == -1)
++          perror("DMX_SET_BUFFER_SIZE failed");
++    }
++
++    pesfilter.pid = pid;
++    pesfilter.input = DMX_IN_FRONTEND;
++    pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
++    pesfilter.pes_type = pes_type;
++    pesfilter.flags = DMX_IMMEDIATE_START;
++
++    if (ioctl(dmxfd, DMX_SET_PES_FILTER, &pesfilter) == -1) {
++      fprintf(stderr, "DMX_SET_PES_FILTER failed "
++      "(PID = 0x%04x): %d %m\n", pid, errno);
++      return -1;
++    }
++
++    return 0;
++}
++
++
++int get_pmt_pid(char *dmxdev, int sid)
++{
++    int patfd, count;
++    int pmt_pid = 0;
++    int patread = 0;
++    int section_length;
++    unsigned char buft[4096];
++    unsigned char *buf = buft;
++    struct dmx_sct_filter_params f;
++
++    memset(&f, 0, sizeof(f));
++    f.pid = 0;
++    f.filter.filter[0] = 0x00;
++    f.filter.mask[0] = 0xff;
++    f.timeout = 0;
++    f.flags = DMX_IMMEDIATE_START | DMX_CHECK_CRC;
++
++    if ((patfd = open(dmxdev, O_RDWR)) < 0) {
++      perror("openening pat demux failed");
++      return -1;
++    }
++
++    if (ioctl(patfd, DMX_SET_FILTER, &f) == -1) {
++      perror("ioctl DMX_SET_FILTER failed");
++      close(patfd);
++      return -1;
++    }
++
++    while (!patread){
++      if (((count = read(patfd, buf, sizeof(buft))) < 0) && errno == EOVERFLOW)
++          count = read(patfd, buf, sizeof(buft));
++      if (count < 0) {
++          perror("read_sections: read error");
++          close(patfd);
++          return -1;
++      }
++      
++      section_length = ((buf[1] & 0x0f) << 8) | buf[2];
++      if (count != section_length + 3)
++          continue;
++      
++      buf += 8;
++      section_length -= 8;
++      
++      patread = 1; /* assumes one section contains the whole pat */
++      while (section_length > 0) {
++          int service_id = (buf[0] << 8) | buf[1];
++          if (service_id == sid) {
++              pmt_pid = ((buf[2] & 0x1f) << 8) | buf[3];
++              section_length = 0;
++          }
++          buf += 4;
++          section_length -= 4;
++      }
++    }
++
++    close(patfd);
++    return pmt_pid;
++}
+diff -r af23d23c278b util/szap/util.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/szap/util.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,24 @@
++/*
++ * util functions for various ?zap implementations
++ *
++ * Copyright (C) 2001 Johannes Stezenbach (js@convergence.de)
++ * for convergence integrated media
++ *
++ * 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.
++ */
++
++int set_pesfilter(int dmxfd, int pid, int pes_type, int dvr);
++
++int get_pmt_pid(char *dmxdev, int sid);